没有看过(一)的可以看看笔者这篇文章:
目录
[3.2 目标检测数据集和指标](#3.2 目标检测数据集和指标)
[3.2.1 数据集](#3.2.1 数据集)
[3.2.1.1 Pascal VOC](#3.2.1.1 Pascal VOC)
[3.2.1.2 ILSVRC](#3.2.1.2 ILSVRC)
[3.2.1.3 MS-COCO](#3.2.1.3 MS-COCO)
[3.2.1..4 Open Images](#3.2.1..4 Open Images)
[3.2.2 指标](#3.2.2 指标)
[3.3 目标检测技术演变](#3.3 目标检测技术演变)
[3.3.1 多尺度检测技术演变](#3.3.1 多尺度检测技术演变)
[3.3.1.1 特征金字塔+滑动窗口](#3.3.1.1 特征金字塔+滑动窗口)
[3.3.1.2 目标建议检测](#3.3.1.2 目标建议检测)
[3.3.1.3 深度回归和无锚框检测](#3.3.1.3 深度回归和无锚框检测)
[3.3.1.4 多参考/分辨率检测](#3.3.1.4 多参考/分辨率检测)
[3.3.2 语境启动的技术演变](#3.3.2 语境启动的技术演变)
[3.3.2.1 局部上下文检测](#3.3.2.1 局部上下文检测)
[3.3.2.2 全局上下文检测](#3.3.2.2 全局上下文检测)
[3.3.2.3 上下文交互](#3.3.2.3 上下文交互)
[3.3.3 难例挖掘技术演变](#3.3.3 难例挖掘技术演变)
[3.3.3.1 Bootstrap](#3.3.3.1 Bootstrap)
[3.3.3.2 基于深度学习检测器中的HNM](#3.3.3.2 基于深度学习检测器中的HNM)
[3.3.4 损失函数技术演变](#3.3.4 损失函数技术演变)
[3.3.4.1 分类损失](#3.3.4.1 分类损失)
[3.3.4.2 定位损失](#3.3.4.2 定位损失)
[3.3.5 非极大值抑制技术演变](#3.3.5 非极大值抑制技术演变)
[3.3.5.1 贪心选择](#3.3.5.1 贪心选择)
[3.3.5.2 边界框聚合](#3.3.5.2 边界框聚合)
[3.3.5.3 基于学习的NMS](#3.3.5.3 基于学习的NMS)
[3.3.5.4 无NMS检测器](#3.3.5.4 无NMS检测器)
3.2 目标检测数据集和指标
3.2.1 数据集
构建大型数据集和更少偏差对于开发先进算法至关重要。过去10年已经有许多知名数据集发布:PASCAL VOC挑战中的VOC2007、VOC2012,ImageNet大规模视觉识别挑战中的ILSVR2014.MS-COCO检测挑战中的Open Images Dataset等。下图给出了数据集的统计数据:

下图是部分数据集的一些展示:

从左至右分别是PASCAL-VOC07、ILSVRC、MS-COCO和Open Images。
下图展示了从2008到2021年一些数据集的检测精度提升:

下面对每种数据集进行单独介绍。
3.2.1.1 Pascal VOC
Pascal Vusual Object Classes是早期最重要的计算机比赛之一。数据集主要有两个版本:VOC2007和VOC2012。其中标注了20类常见目标:人、猫、自行车等。
3.2.1.2 ILSVRC
ILSVRC从2010年到2017年每年举办一次,包含使用ImageNet图像的检测挑战。该数据集包含200类检测目标,其对象实例数量比VOC大两个数量级。
3.2.1.3 MS-COCO
MS-COCO包含来自80个类别的164k图像和897k注释对象。其最大进步就是除了边界框注释外,还使用逐实例分割进一步标记每个对象,帮助精确定位。此外,它还包括更多小物体(面积小于图像1%)和更密集的物体。
3.2.1..4 Open Images
2018年引入开放图像检测(Open Images Detection,OID)挑战。挑战主要有两个任务:1、标准目标检测 2、视觉关系检测,即检测特定关系中的成对对象。标准检测任务的数据集由1910k图像和15440k在600个对象类别上标注的边界框组成。
3.2.2 指标
早期检测器的准确性采用"缺失率"和"误报率"(FPPW)作为度量标准。但逐窗口测量可能存在缺陷,无法预测完整图像的性能。 2009年,加州理工学院引入行人检测基准,评估标准改为假阳性Perimage(false positive perimage,FPPI)
VOC2007引入了今年来最常用的评价标准:mAP(mean Average Precision,平均精度)。其定义为不同召回下的平均检测精度,通常以特定类别评估。采用预测框和真实框之间IoU验证是否大于预定义阈值,例如0.5。MS-COCO AP不是固定的IoU阈值,而是在0.5到0.95之间多个阈值进行平均,对性能要求更高。
3.3 目标检测技术演变
该部分主要介绍检测系统的重要组成部分以及技术演变。首先是模型设计中多尺度和上下文启动,然后介绍训练过程中样本选择策略和损失函数设计,最后是推理中非极大值抑制。
3.3.1 多尺度检测技术演变
不同尺寸和不同长宽比的目标检测是目前主要挑战之一。多尺度的检测经历多个时期,如下图所示:

我们可以看到,2001年特征金字塔和滑动窗口提出,一直持续到2014年。2013年开始流行带目标建议和无锚框的检测,分别流行到2018年和2021年直至现在。2015年多参考的检测开始出现,多分辨率的检测紧接着出现。

最初的特征金字塔和滑动窗口即通过滑动窗口检测各区域生成尺寸更小的特征图,形成一个金字塔结构,得到特征金字塔。后来带有区域建议的检测采用了预先定义的区域建议框进行特征提取,之后无锚框的检测直接采用检测器进行特征提取,多参考检测采用多个检测器进行检测,而多结果的检测则采用多检测器多特征图进行特征提取,输出更多,精度更高,但计算量也会更大。
下面对每种方法进行介绍。
3.3.1.1 特征金字塔+滑动窗口
2004年之后人们就开始采用这汇总更直观的检测方式,如HOG、DOM。该方法在图像上滑动一个固定大小的检测窗口,而不关注"不同大小长宽比"。Girshick等人采用了"混合模型"检测具有更复杂外观的物体。针对不同长宽比物体训练多个检测器。基于样本的检测也为每个对象实例训练单个模型。
3.3.1.2 目标建议检测
目标建议是与类无关的参考框,可能包含任何目标。这样就可以避免在图像上穷举滑动窗口进行搜索。但目前单阶段检测器兴起,这种方法也淡出视野。
3.3.1.3 深度回归和无锚框检测
随着GPU计算能力的提升,多尺度检测更加直接。深度回归的思想更加简单,基于深度学习特征直接预测边界框坐标。这种方法主要有两种思路:1、基于分组方法,检测关键点(如角、中心)然后进行目标分组;2、无群法,将目标视为一个或多个点,在点的参考下回归目标属性(大小、比例等)。
3.3.1.4 多参考/分辨率检测
多参考点检测首先在图像每个位置定义一组参考点(也叫锚点,包括方框和点),之后根据参考的预测检测框。多分辨率检测则是通过网络不同层检测不同尺度目标。目前两种方法已经成为目标检测系统基本组成。
3.3.2 语境启动的技术演变
视觉目标与周围环境通常是嵌入在一个典型的语境中的,大脑会利用物体与环境关联促进视觉感知和认知。语境启动一直被用来提高检测能力,其演变过程如下:

可以看到,早在2001年之前,采用局部上下文的检测就被提出,之后在2011年上下文交互就被提出。最后2106年才开始采用全局上下文。

从左到右分别是局部上下文、全局上下文和上下文交互。局部上下文仅采用图像内部环境信息辅助生成特征图,全局上下文则会利用到图像外的信息,上下文交互则将不同上下文之间的关系和交互利用起来以生成特征图。
3.3.2.1 局部上下文检测
局部上下文即检测目标周围区域视觉信息。21世纪,Sinha等人发现局部上下文区域很大程度上提高了人脸检测性能。Dalal还发现,加入少量背景信息可以提高行人检测准确性。基于深度学习的检测器可以通过简单的扩大网络感受野或目标建议大小改进局部上下文。
3.3.2.2 全局上下文检测
全局上下文利用场景配置作为目标检测额外信息源,早期时间检测器中,整合构成场景元素统计摘要是常用的方法。目前有两种常用方法:1、深度卷积、扩展卷积、可变形卷积或池化操作接受更大感受野(有时超出输入图像)。现在也有基于注意的机制实现感受野。2、将全局上下文视作顺序信息,使用循环神经网络学习。
3.3.2.3 上下文交互
交互指视觉元素之间的约束和依赖关系。现代检测器可以采用上下文交互进行改进,主要有两类:1、单个对象之间的关系 2、对象和场景之间的关系。
3.3.3 难例挖掘技术演变
检测器训练本质是不平衡学习问题。基于滑动窗口的检测器情况下,背景和目标之间的不平衡可以达到107:1。这时,使用所有背景对训练不利,大量简单否定会盖过学习过程。难例挖掘就是为了解决该问题的。技术演变如下:

1994年Bootstrap就被提出,该方法被广泛用于解决早期计算资源不足的问题。直到2014年不采用难例挖掘的方法提出,其仅仅通过简单平衡目标类和背景类之间权重实现。2016年,Bootstrap和全新损失函数的组合推出,该方法聚焦于困难实例,算力不再是难题。
3.3.3.1 Bootstrap
该方法从一个小部分的背景样本开始训练,之后迭代增加新的误分类样本。在早期时间检测器中,该方法通常用于减少数百万个背景下的训练计算。之后成为DPM和HOG检测器解决数据不平衡技术的标准。
3.3.3.2 基于深度学习检测器中的HNM
深度学习时代,计算能力的提高导致了bootstrap的摒弃.2016年以前,Faster RCNN和YOLO采用正窗口和负窗口权重平衡以实现训练期间数据不平衡问题。然后,这并不能完全解决失衡问题,之后,bootstrap重新引入。还有种改进是重塑标准交叉熵损失设计新的损失函数,更加关注困难、错误分类的实例。
3.3.4 损失函数技术演变
损失函数用于衡量模型与数据匹配程度(即预测与真实标签的偏差)。计算损失产生模型权重的梯度,可以通过反向传播更新更好适应数据。分类损失和定位损失构成目标检测问题的监督,如以下公式所示:
t和t*是预测、真实边界框位置,对应的p是类别概率。IoU表示参考框a与真实值a*之间的交并比。是IoU阈值,通常为0.5。如果锚框不匹配任何对象,则定位损失不计入最终损失。
3.3.4.1 分类损失
分类损失用于评估预测类别与真实类别偏差程度,之前常使用MSE、L2损失(均方误差)。后来使用CE Loss。分类预测是一个概率,为了提高分类效率,提出Label Smooth增强模型泛化能力,解决噪声标签上过置信问题,设计Focal Loss解决类别不平衡和分类难度差异。
3.3.4.2 定位损失
定位损失用于优化位置和尺寸偏差。研究人员提出平滑L1损耗公式如下:
x是目标与预测值之间的差值。计算误差时,边界框四个参数视作自变量,且存在一定相关性。评估的时候采用IoU确定预测框是否与实际真实值相对应。相等Smooth L1值会产生完全不同的IoU值,IoU损失如下:
随后,一些算法对其加以改进。GIoU改进其不能优化非重叠边界框情况,即IoU=0时。基于IoU损失和G-IoU损失,将DIoU(Distance IoU)定义为预测中心点与真实值之间距离,CIoU(Complete IoU)考虑在DIoU基础上宽高比差。
3.3.5 非极大值抑制技术演变
非极大值抑制作为后处理步骤去除重复边界框以避免相邻窗口检测分数相同而导致的性能下降。目标检测早期,并非集成NMS,因为系统期望输出并不完全清楚。近20年来的演变如下:

3.3.5.1 贪心选择
这是执行NMS最流行的方法。其思想为:对于重叠检测,选择检测得分最高的边界框,同时根据预定义重叠阈值去除相邻框。虽然已成为NMS事实方法,但仍有待改进。得分最高边界框不一定时最合适的,可能会抑制附近物体,最后假阳性无法得到有效抑制。
3.3.5.2 边界框聚合
边界框聚合也是一种用于NMS的技术,其思想为将多个重叠的边界框组合或聚类成一个最终的检测。优点是充分考虑目标关系和空间布局。
3.3.5.3 基于学习的NMS
最近流行的NMS改进是基于学习的,将其视作一个过滤器,重新对原始检测进行评分,并以端到端方式将其作为网络的一部分进行训练,或者训练网络模仿NMS行为。与传统手工方法相比,该方法在改善遮挡和密集目标检测方面效果不错。
3.3.5.4 无NMS检测器
为了实现完全完全端到端目标检测训练网络,研究人员采用许多方法完成一对一标签分配(一个目标一个预测框)。通常要求机器质量高以实现不采用NMS。无纳米粒子探测器更类似人类视觉感知系统,也是未来检测一种可能方式。