目标检测问题

1. 目标检测算法


1. 时间线

时间2015 NIPS2016.5 CVPR2016 ECCV2016.12
算法Faster R-CNNYOLO v1SSDYOLO 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. 锚点与栅格

  输入图像 [3, 224, 224] 经过卷积得到 [24, 7, 7] 的特征图。从这个特征图来看,我们相当于把输入图像划分成 7 × 7 7 \times 7 7×7 个栅格,每个栅格的大小是 32 × 32 32 \times 32 32×32。原图上每个栅格的中心称为锚点。
  对检测位置的网络来说,就是从每个栅格的区域内检测目标的坐标。特征图包含 7 × 7 7 \times 7 7×7 个长度为 24 的向量,每个长度为 24 的向量正是从对应栅格提取的特征,所以这 24 个数就是从某个栅格中检测到的坐标。因为 4 个数可以确定一个矩形的位置,所以这 24 个数可以检测 6 个目标,相当于我们在每个栅格以锚点为中心产生 6 个候选框。

2. 候选框

  候选框就是一系列矩形的坐标。一张图上有 m 个锚点,每个锚点产生 x 个候选区,下面就是这 n = m × x n = m \times x n=m×x 个候选区的存放形式。小括号只起分割作用,表示一个锚点产生的候选区,实际存放时不需要。其中 anc1_loc1 代表 4 个坐标,所以候选区的 shape = [n, 4]。锚点按坐标从左向右、从上到下排列,候选区自然也是这样排列,比如前 x 个候选区在图像左上角,后 x 个候选区在图像右下角。

[(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 个候选框;这个尺度上,定位网络输出的维度为 n × n × 16 n \times n \times 16 n×n×16 的特征的左上角那个 1 × 1 × 16 1 \times 1 \times 16 1×1×16 的检测结果也代表从图像左上方检测的结果。而且锚点按坐标从左向右、从上向下排列,卷积操作从左向右、从上到下进行,所以网络的检测区域与候选区一一对应。当我们知道了候选区与标注区的匹配关系,也就知道了网络的定位结果与标注区的匹配关系。

4. 坐标回归

  代表坐标的 4 个数可以是绝对坐标也可以是相对候选区的坐标,边界偏移回归算法就是针对后者的损失函数。

5. 标注区

  标注的目标区域。

6. 正负样本

  因为候选区有 n 个,所以网络最多在一张图像上检测出 n 个目标。n 一般被设置得很大,比如 SSD 算法中 n 为 8732,而通常一张图上只有几个目标,所以候选区数量远大于训练集中每张图像上的标注区个数。与标注区重合程度好的候选区是正样本,与背景重合程度好的候选区是负样本。

7. 正负样本选择

  根据候选区与标注区的重合情况,可以把候选区分为 4 类:

  1. 候选区不与标注区重叠,都是背景。
  2. 候选区与一个或多个标注区重叠,但重叠面积都很小,意味着有其它候选区可以与这一个或多个标注区更好地重叠。
  3. 候选区与某个标注区的重合程度较好,交并比大于阈值,比如 0.6。
  4. 与其它候选区相比,该候选区与某个标注区的交并比最大,意味着这个候选区不很大也不很小,与标注区重合得最好。

  这 4 类候选区中,前两类合称为负样本空间,后两类合称为正样本空间。通常负样本空间远大于正样本空间,所以一般先从正样本空间选择样本,再根据正样本的个数,从负样本空间选择一定数量的样本作为负样本。选择正样本时优先选择与标注区重合程度最好的候选区,比如第四类候选区最适合作为正样本。选择负样本时,优先选择交并比小的样本,比如第一类候选区最适合作为负样本。

8. 训练与学习

  选择正负样本的同时也为每个正负样本匹配了标注区。比如对于每个正样本,我们都能知道它对应的标注区坐标。正负样本是候选区,因为候选区与网络检测区一一对应,所以我们也就能知道网络预测的(部分)坐标的标注坐标,对两者使用 L1、L2 等回归的损失函数就可以学习了。可以看出,候选区只是起一个桥梁作用,它把网络的预测坐标与标注坐标连系起来。

3. 位置回归的损失函数


  位置回归的损失函数一直都使用 L1 损失或 smooth L1 损失,但评价时却使用 IoU 指标。因为 L1 损失和 IoU 指标并不等价,所以 L1 损失优化的方向并不一定是 IoU 增大的方向。下图是 GIoU 论文中给出的图:

  上图说明,L1 损失相同时 IoU 和 GIoU 损失还有好坏之分。下面我们来看一系列 IoU 损失。

4. 评估方法


1.精确率与召回率

分类结果评估

  查准率,又称精确率(precision),是真正例与预测正例的比率: P = T P ÷ ( T P + F P ) P = TP \div (TP + FP) P=TP÷(TP+FP);查全率,又称召回率(recall),是真正例与真实正例的比率: R = T P ÷ ( T P + F N ) R = TP \div (TP + FN) R=TP÷(TP+FN)。查准率和查全率都是越大越好,但它们是一对矛盾的度量:一般来说,它们一个高时另一个往往偏低,只有在一些简单任务中,才可能使它们都很高。

2.平均精确率与平均召回率

  AP 全称 average precision,即平均精确率,相对应的平均召回率称为 AR。AP 是最常见的用于评价分类结果准确性的指标,它的计算方式是:

  1. 选择评估样本:n 张图像及标注信息。
  2. 用评估样本统计类别 x 的精确率。
  3. 类似第 2 步,统计其它类别的精确率。
  4. 对所有类别的精确率求平均值得到 mAP。

3.同时评估分类与检测

  目标检测的论文中使用的评估指标称为 AP、AP50、AP75,它们即是对分类结果的度量,也是对检测结果的度量。

  1. AP50 指的是 IoU 取 0.5 时计算出的 mAP,AP75 指的是 IoU 取 0.75 时计算出的 mAP。
  2. AP 也写成 AP[50:05:95],指的是 IoU 从 0.5 取到 0.95,步长为 0.05 计算出来的 mAP 的均值。即 AP50、AP55、…、AP95 的平均值。

5. 重难点


  平滑标签的交叉熵和困难样本问题见 focal loss

6. 参考


  1. 边界偏移回归算法
  2. 分类结果的评估
  3. GIoU 论文
  4. CIoU 和 DIoU 论文
  5. COCO 数据集评价指标的计算,简书。
  6. 评估标准 AP:CSDN1CSDN2CSDN3博客园
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值