目标检测
- 1. 目标检测算法
- 2. 重点概念
- 3. 位置回归的损失函数
- 4. 评估方法
- 5. 重难点
- 6. 参考
1. 目标检测算法
1. 时间线
时间 | 2015 NIPS | 2016.5 CVPR | 2016 ECCV | 2016.12 |
算法 | Faster R-CNN | YOLO v1 | SSD | YOLO v2 |
Faster R-CNN 和 YOLO v1 先后出现,两者没有相互借鉴。Faster R-CNN 提出的锚点、使用边界偏移回归算法定位等思想被后来的 SSD 和 YOLO v2 采用。而且 Faster R-CNN 是第一个端到端的目标检测算法。
2. 方法与性能
Faster R-CNN 先从主干网络提取的公共特征图中检测包含目标的特征,得到包含目标的特征在公共特征图上的坐标。再使用 ROIPooling 把包含目标的特征从公共特征图上提取出来,接着从提取的特征中检测和分类。
YOLO 除了主干网络外,还使用称为 neck 的网络继续提取高维特征,然后在 3 个尺度上分别检测和分类。
SSD 把主干网络提取的特征分为 6 个尺度,在各尺度上分别检测和分类。
Faster R-CNN 需要两步且没有从多个尺度的特征图上检测,所以速度和结果都比 SSD 差。SSD 把主干网络提取的特征分为 6 个尺度后直接检测,原理简单且速度快。YOLO4 除主干网络外,还使用 neck 部分提取更高维度的特征,使用 CIoU、Mish 激活函数等更先进的技术,所以比 SSD 速度慢但结果更好。
检测和分类时,Faster R-CNN 和 SSD 把特征分别输入检测网络获取位置、输入分类网络获取类别。YOLO 把特征输入一个网络,输出一个包含位置结果和分类结果的向量。比如 VOC 数据集有 20 类目标,YOLO 预测的结果是一个长度为 25 的向量:前 4 个数是位置信息,第 5 个数代表该检测结果是目标(或背景)的置信度,后 20 个数代表归为某一类的置信度。
Faster R-CNN 的每个锚点产生 9 个候选框,YOLO 的每个锚点产生 3 个候选框,SSD 的每个锚点产生 4 或 6 个候选框。
位置检测方法:Faster R-CNN 使用边界偏移回归算法。YOLO v1 直接预测中心位置和宽高。SSD 和 YOLO v2 开始都用边界偏移回归算法。
2. 重点概念
1. 锚点与栅格
个栅格,每个栅格的大小是 。原图上每个栅格的中心称为锚点。
对检测位置的网络来说,就是从每个栅格的区域内检测目标的坐标。特征图包含
2. 候选框
[(anc1_loc1, anc1_loc2, ..., anc1_locx), (anc2_loc1, anc2_loc2, ..., anc2_locx), ..., (ancm_loc1, ancm_loc2, ..., ancm_locx)]
设计锚点和候选区时要考虑与网络输出的顺序问题。以 SSD 算法为例,网络输出的检测位置顺序是:尺度1、尺度2、尺度3、尺度4、尺度5、尺度6;每个尺度上的卷积结果按从左到右、从上到下排列。也就是说 8732 个检测结果是这样排列的:
尺度1上(0, 0)锚点的四个检测结果, 尺度1上的(1, 0)锚点的四个检测结果, ..., 尺度1的(38, 38锚点检测结果)
尺度2
3. 定位网络的输出
因为候选区设定为 n 个,所以一般情况下定位网络的输出 shape = [n, 4],或者通过 reshape 等手段总是可以转换到这个维度。shape = [n, 4] 代表网络在 n 个候选区检测到的目标的位置。
候选区也是按不同尺度产生的。对某个尺度:第一个锚点在图像左上方产生了 4 个候选框;这个尺度上,定位网络输出的维度为 的特征的左上角那个
4. 坐标回归
代表坐标的 4 个数可以是绝对坐标也可以是相对候选区的坐标,边界偏移回归算法就是针对后者的损失函数。
5. 标注区
标注的目标区域。
6. 正负样本
因为候选区有 n 个,所以网络最多在一张图像上检测出 n 个目标。n 一般被设置得很大,比如 SSD 算法中 n 为 8732,而通常一张图上只有几个目标,所以候选区数量远大于训练集中每张图像上的标注区个数。与标注区重合程度好的候选区是正样本,与背景重合程度好的候选区是负样本。
7. 正负样本选择
根据候选区与标注区的重合情况,可以把候选区分为 4 类:
- 候选区不与标注区重叠,都是背景。
- 候选区与一个或多个标注区重叠,但重叠面积都很小,意味着有其它候选区可以与这一个或多个标注区更好地重叠。
- 候选区与某个标注区的重合程度较好,交并比大于阈值,比如 0.6。
- 与其它候选区相比,该候选区与某个标注区的交并比最大,意味着这个候选区不很大也不很小,与标注区重合得最好。
这 4 类候选区中,前两类合称为负样本空间,后两类合称为正样本空间。通常负样本空间远大于正样本空间,所以一般先从正样本空间选择样本,再根据正样本的个数,从负样本空间选择一定数量的样本作为负样本。选择正样本时优先选择与标注区重合程度最好的候选区,比如第四类候选区最适合作为正样本。选择负样本时,优先选择交并比小的样本,比如第一类候选区最适合作为负样本。
8. 训练与学习
选择正负样本的同时也为每个正负样本匹配了标注区。比如对于每个正样本,我们都能知道它对应的标注区坐标。正负样本是候选区,因为候选区与网络检测区一一对应,所以我们也就能知道网络预测的(部分)坐标的标注坐标,对两者使用 L1、L2 等回归的损失函数就可以学习了。可以看出,候选区只是起一个桥梁作用,它把网络的预测坐标与标注坐标连系起来。
3. 位置回归的损失函数
位置回归的损失函数一直都使用 L1 损失或 smooth L1 损失,但评价时却使用 IoU 指标。因为 L1 损失和 IoU 指标并不等价,所以 L1 损失优化的方向并不一定是 IoU 增大的方向。下图是 GIoU 论文中给出的图:
上图说明,L1 损失相同时 IoU 和 GIoU 损失还有好坏之分。下面我们来看一系列 IoU 损失。
4. 评估方法
1.精确率与召回率
;查全率,又称召回率(recall),是真正例与真实正例的比率:。查准率和查全率都是越大越好,但它们是一对矛盾的度量:一般来说,它们一个高时另一个往往偏低,只有在一些简单任务中,才可能使它们都很高。
2.平均精确率与平均召回率
AP 全称 average precision,即平均精确率,相对应的平均召回率称为 AR。AP 是最常见的用于评价分类结果准确性的指标,它的计算方式是:
- 选择评估样本:n 张图像及标注信息。
- 用评估样本统计类别 x 的精确率。
- 类似第 2 步,统计其它类别的精确率。
- 对所有类别的精确率求平均值得到 mAP。
3.同时评估分类与检测
目标检测的论文中使用的评估指标称为 AP、AP50、AP75,它们即是对分类结果的度量,也是对检测结果的度量。
- AP50 指的是 IoU 取 0.5 时计算出的 mAP,AP75 指的是 IoU 取 0.75 时计算出的 mAP。
- AP 也写成 AP[50:05:95],指的是 IoU 从 0.5 取到 0.95,步长为 0.05 计算出来的 mAP 的均值。即 AP50、AP55、…、AP95 的平均值。
5. 重难点
平滑标签的交叉熵和困难样本问题见 focal loss。