SNIP物体检测算法理解

博文参考:https://blog.****.net/u014380165/article/details/80793334
看了文章,觉得还不错,在现有的best object-detection model上能增加3%~4%个mAP点。

SNIP的主要思想

基本思想是:浅层的feature map语义特征比较弱,但是小物体特征比较明显,适合在较浅的层检测小物体,但是对于大物体,由于语义特征比较弱,不太适合在浅层进行检测;深层的feature map语义特征很强,但是对于小物体,在该层的特征基本上消失,所以在深层对大物体进行检测比较合适,而小物体则已不适合。

SNIP的思想就是,在不同层scale的feature map中定义的有效anchor范围不同,在浅层的feature map,这里检测小物体,此时的anchor box尺寸占原始图像的大小较小,在深层的feature map,此时的anchor box尺寸占原始图像的大小较大。也就是说在浅层的feature map上只对小的物体对应的ground truth标签(就是定位框)进行误差计算/梯度回传,更新网络,此时忽略大的和中型的物体;同样,在较深的feature map中,只对大的物体进行误差计算(此时的anchor box设定的比较大)/梯度回传,忽略小的物体。这样即可保证在对应scale层中提取最佳的特征,从而增加检测的准确率。
SNIP物体检测算法理解
不管是训练检测器还是RPN网络,都是基于所有ground truth来定义proposal和anchor的标签。正如前面所述,某个ROI在某次训练中是否回传梯度是和预训练模型的数据尺寸相关的,也就是说当某个ROI的面积在指定范围内时,该ROI就是valid,也就是会在此次训练中回传梯度,否则就是无效的(如下图中右边的紫色框所示)。这些invalid ROI所对应的invalid ground truth会用来决定RPN网络中anchor的有效性确定。invalid anchor的定义是和invalid ground truth的IOU大于0.3的anchor就是invalid anchor,如下图中左边的黑色框所示。
SNIP物体检测算法理解
这里需要解释下,每个scale尺度下的feature map都会设定三类,有效的anchor box、无效的anchor box、背景。经过RPN处理后,会生成一系列的推荐框,但是这些推荐框不能全部都送到分类和回归层,需要进一步的进行处理,这个时候采用的就是SNIP的主要思想了。

关于RPN网络中不同标签的anchor比例作者也做了分析,我们知道在RPN网络中,一个anchor的标签是根据该anchor和ground truth的IOU来决定的,只有两种情况下才会认为某个anchor的标签是正样本(标签为1):1、假如该anchor和某个ground truth的IOU超过某个阈值(阈值默认采用是0.7),那么该ancho就是正样本。2、假如一个ground truth和所有anchor的IOU都没超过该阈值,那么和该ground truth的IOU最大的那个anchor就是正样本。同样,作者将conv4的输出作为RPN网络的输入,然后设置了15种anchor(5 scales,3 aspect ratios),接下来就有意思了,作者发现在COCO数据集上(图像大小为800*1200),只有30%的ground truth满足前面第一种情况!即便将阈值调整为0.5,也只有58%的ground truth满足第一种情况!这说明什么?说明即便阈值等于0.5,仍有40%的正样本anchor和ground truth的IOU小于0.5(这些anchor是因为满足前面的情况2才被定义为正样本)!显然,这样的正样本质量不算很高。而这篇文章因为引入多种分辨率的图像作为输入,所以在一定程度上缓解了这种现象。另外,作者也尝试将conv4和conv5的特征做融合并预测,不过这部分文章只是一笔带过,还需要看源码才能知道具体是怎么做的。

举例说明:

  • 在scale_1上的有效anchor box主要针对小物体,这时候,RPN推荐的anchor box尺寸过大,或者处于中型尺寸,则被判为无效的anchor box,在sacel_1上大的和中型anchor box不参与训练和梯度回传。
  • 在scale_2上,有效的anchor box主要针对中型物体,这时候,RPN推荐的anchor box过大或者过小,都不是有效的anchor box,在scale_2上大的和小的anchor box不参与训练和梯度回传。
  • 在scale_3上,有效的anchor box主要针对大型物体,这时候,RPN推荐的anchor box过小或者中型尺寸,都不是有效的anchor box,在scale_3上中型和小的anchor box不参与训练和梯度回传。

当然实际在训练的时候,可能不止三个scale下的feature map,可能包含5~6个甚至更多,所以不管对于哪一尺寸的物体,不管是大是小,总是可以找到最佳scale下的feature,并在该scale下的feature map上进行特征提取。

需要注意的是对目标的尺寸做限制是在训练过程,而不是预先对训练数据做过滤,训练数据还是基于所有数据进行。实验证明这种做法对小目标物体的检测非常有效。