目标检测
用矩形框框出感兴趣的物体同时预测物体类别。
应用方面:
- 人脸识别:身份识别、属性分析等。
- 智慧城市:垃圾检测、非法占道违章停车检测、确保环境安全等。
- 自动驾驶:环境感知、路径规划与控制。
- 下游视觉任务:检测文字出现的区域以供识别、检测出人体以供姿态估计。
与图像分类比较
目标检测的物体数量、位置、大小都不固定。但需要算法理解图像的内容,通过深度神经网络实现。
思路
通过滑窗sliding windows遍历图像所有位置,所到之处用分类模型识别窗口内容(矩形框)
缺点:单张图片就已需要大量windows,若使用不同大小的windows,分类次数又会成倍增加带来不可接受的计算成本。
改进思路1:使用启发式算法替换暴力遍历 例如 R-CNN,Fast R-CNN 中使用 Selective Search 产生提议框。但依赖外部算法,系统实现复杂,难以联合优化性能。
- 区域提议 于图像颜色或底层特征,找出可能含有物体 的区域,再送给神经网络识别。相比于普通滑窗,减少框的个数且保证召回率。
- eg:Selective Search算法流程:基于贪心算法,将空间相邻、特侦相似的图像块足部合并到一块。
改进思路2:减少冗余计算,使用卷积网络实现密集预测(目前普遍采用的方式)。
- 分析滑窗中的重复计算并且消除。
- 方式:用卷积一次性计算所有特征,再取出对应位置的特征完成分类;这样在特征图上滑窗,重叠区域值计算一次卷积特征,与窗的个数无关。然后在特征图上进行密集预测;密集预测实际上是一种隐式的滑窗方法,计算效率远高于滑窗。
基本范式
- 两阶段方法(基于区域的方法):以某种方式产生窗,再基于窗口内的特征机型预测。
- 单阶段方法:在特征图上基于单点特征实现密集预测。
目标检测技术的演进
基础知识
框,边界框(Bounding Box)
框泛指图像上的矩形框,边界横平竖直。边界框通常指紧密包围感兴趣物体的框
相关概念
区域(Region):框的同义词
区域提议(Region Proposal,Proposal):指算法预测的可能包含物体的框,某种识别能力不强的算法的初步预测结果
感兴趣区域(Region of Interest,RoI):当我们谈论需要进一步检测这个框中是否有物体时,通常称框为感兴趣区域
锚框(Anchor Box,Anchor):图中预设的一系列基准框,类似滑窗,一些检测算法会基于锚框预测边界框
交并比(Intersection Over Union)
交并比(IoU)定义为两矩形框交集面积与并集面积之比,是矩形框重合程度的衡量指标
置信度(Confidence Score)
模型认可自身预测结果的程度,通常需要为每个框预测一个置信度。大部分算法取分类模型预测物体属于特定类别的概率,部分算法让模型独立于分类单独预测一个置信度。我们倾向认可置信度高的预测结果。
非极大值抑制(Non-Maximum Suppression)
滑窗类算法通常会在物体周围给出多个相近的检测框 这些框实际指向同一物体,只需要保留其中置信度最高的.
通过非极大值抑制(NMS)算法实现:
-
输入:检测器产生的一系列检测框 𝐵 = {𝐵1, … , 𝐵𝑛} 及对应的置信度 𝑠 = {𝑠1, … , 𝑠𝑛 },IoU 阈值 𝑡(通常0.7)
-
步骤:
-
-
初始化结果集 𝑅 = ∅
-
重复直至 𝐵 为空集
找出 𝐵 中置信度最大的框 𝐵𝑖 并加入 𝑅
从 𝐵 中删除 𝐵𝑖 以及与 𝐵𝑖 交并比大于 𝑡 的框
-
-
-
输出:结果集 𝑅
边界框回归(Bounding Box Regression)
问题:滑窗(或其他方式产生的基准框)与物体精准边界通常有偏差
处理方法:让模型在预测物体类别同时预测边界框相对于滑窗的偏移量
边界框编码(Bbox Coding)
边界框的绝对偏移量在数值上通常较大,不利于神经网络训练,通常需要对偏移量进行编码,作为回归 模型的预测目标;推理时,已知基准框 𝑃 和回归模型预测的偏移量编码 𝑇,解码得到预测框。
各阶段范式介绍
两阶段目标检测算法
两阶段的检测范式最早由 R-CNN 确立,因包含 区域提议和区域识别两个阶段得名;经历一些列发展到 Faster R-CNN 和 Mask RCNN 逐渐成熟;结合比较先进的主干网络和多尺度技术可以达到 比较优越的检测精度,使用广泛;近几年(2020~)随着单阶段算法精度和速度的 提高逐渐被取代。
多尺度检测技术
必要性:图像中物体大小可能有很大差异 (10 px ~ 500 px) ;多尺度技术出现之前,模型多基于单级特征图进行预测,通常为主干网络的倒数第二层,受限于结构(感受野)和锚框的尺寸范围,只擅长中等大小的物体;另一方面,高层特征图经过多次采样,位置信息逐层丢失,小物体检测能力较弱,定位精度较低。
图像金字塔
将图像缩放到不同大小,形成图像金字塔;检测算法在不同大小图像上即可检测出不同大小物体。
- 优势:算法不经改动可以适应不同尺度的物体
- 劣势:计算成本成倍增加
可用于模型集成等不在意计算成本的情况
层次化特征
基于主干网络自身产生的多级特征图产生预测结果; 由于不同层的感受大小不同,因此不同层级的特征天然适用于检测不同尺寸的物体。
- 优势:计算成本低
- 劣势:低层特征抽象级别不够,预测物体比较困难
改进思路:高层次特征包含足够抽象语义信息。将高层特征融入低层特征,补充低层特征的语义信息
特征金字塔网络 Feature Pyramid Network (2016)
- 改进思路:高层次特征包含足够抽象语义信息。将高层特征融入低层特征,补充低层特征的语义信息
- 融合方法:特征求和
单阶段目标检测算法
单阶段算法直接通过密集预测产生检测框,相比于两阶段算法,模型结构简单、速度快,易于在设备上部署;早期由于主干网络、多尺度技术等相关技术不成熟,单阶段算法在性能上不如两阶段算法,但因为速度和简洁的优势仍受到工业界青睐 随着单阶段算法性能逐渐提升,成为目标检测的主流方法。
无锚框目标检测算法
基于锚框(Anchor-based):
- Faster R-CNN、YOLO v3 / v5、RetinaNet 都是基于锚框的检测算法
- 模型基于特征预测对应位置的锚框中是否有物体,以及精确位置相对于锚框的偏移量
- 需要手动设置锚框相关的超参数(如大小、长宽比、数量等),设置不当影响检测精度 ❌
无锚框(Anchor-free):
- 不依赖锚框,模型基于特征直接预测对应位置是否有物体,以及边界框的位置
- 边界框预测完全基于模型学习,不需要人工调整超参数 ✔️
- YOLO v1 是无锚框算法,但由于提出时间较早,相关技术并不完善,性能不如基于锚框的算法
Detection Transformers
DETR (2020)
传统方法:在特征图上进行密集预测,依赖 Anchor 设计、NMS 后处理等额外操作
DETR:脱离密集预测范式,将检测建模为从特征序列到框序列的翻译问题,用 Transformer 模型解决
Deformable DETR (2021)
DETR 的注意力机制收敛很慢,收敛 ≈ 注意力机制注意到特定的位置 Deformable DETR 借鉴 Deformable Conv 的方式,显示建模 query 注意的位置,收敛速度更快。
目标检测模型的评估方法
可以参考之前这篇博客:测试集上评估图像分类算法的精度
检测结果的正确/错误类型
TP、FP、FN。
准确率 Precision 与 召回率 Recall
关于两个词语的含义:
准确率与召回率的平衡
两种极端情况: 1. 检测器将所有锚框都判断为物体:召回率≈100%,但大量背景框预测为物体,FP很高,准确率很低 2. 检测器只输出确信度最高的1个检测框:以很大概率检测正确,准确率=100%,但因为大量物体被预测 为背景,FN很高,召回率很低。
所以需要进行平衡。
PR 曲线 与 AP 值
评估指标和图像分类的评估指标大体上是相同的,只是在细微处有一些应用上的差别。
整理自哔哩哔哩openmmlab课程4 目标检测算法基础