个人理解
1、为什么和其他anchor-based方法相比,小目标检测的表现差?
可能有两个原因:
- Encoder模块中的Residual Blocks中的3x3依次使用dilation rates为2、4、6、8的卷积,尽管有shortcut的存在,但是仍然模型偏向于大目标,如果采用8、6、4、2是否能够缓解此问题?
- 定义正样本时,由于anchors少了,就算K近邻的方法对不同尺度的ground-truth平衡的匹配到了positive samples,但质量不同,大目标匹配的anchor iou更大,小目标匹配的anchor,iou会小一点,因此增加小目标的预测难度,作者没有给出不同尺度的目标匹配的positive samples的平均IOU大小的数据。
简介
在单阶段检测器中FPN之所以有效是因为其分而治之的策略,而不是多尺度特征的融合。从优化的角度来看,引入了替代方法来解决该问题,而不是采用复杂的特征金字塔,仅使用一层特征进行检测。
源码:https://github.com/megvii-model/YOLOF
主要贡献
FPN在单阶段和多阶段的目标检测器中已经成为一个基础模块,FPN之所以能如此受欢迎主要可能有两点:
- 1、多尺度特征融合:融合高分辨率和低分辨率的特征可以获得更强的表现
- 2、分而治之:在不同大小的特征图上预测不同大小的物体。
作者为了论证以上两点,设计了四种结构:
- 1、Multiple-in-Multiple-out (MiMo)
- 2、Single-in-Multiple-out (SiMo)
- 3、Multiple-in-Single-out (MiSo)
- 4、Single-in-Single-out (SiSo)
从结果可知:没有特征融合的SiMo和原始的MiMo仅仅相差0.9 mAP,但是MiSo和SiSo的性能却大幅度下降。这个现象反应了两个事实:
- 1、C5 特征图上的上下文信息已经足够去检测不同尺度的目标,所以SiMo的性能没有大幅度下降
- 2、多尺度特征融合的重要性远远不如分而治之的重要性,多尺度特征融合在FPN的结构中可能不是必须的
更进一步的思考,分而治之才是目标检测问题的关键,通过目标的尺度,把复杂的问题拆分成若干子问题,简化了整个流程。
因此,作者提出了YOLOF,仅仅使用下采样32倍的C5特征图,使得SiSo的方法和MiMo的方法有相同的性能。主要贡献如下:
- 1、发现FPN最大的收益来自于分而治之而不是多尺度特征融合。
- 2、提出了YOLOF,新增了Dilated Encoder 和 Uniform Matching两个模块,使得SiSo的方法和MiMo的方法有相同的性能。
- 3、大量的对比试验,和RetinaNet、DETR、YOLOv4有相当的性能,但是比它们都快。
方法
作者发现造成SiSo的方法和MiMo的方法的性能差异主要有两个问题:
- 1、C5 特征图感受野的限制,导致检测器在目标的尺度存在巨大差异时,表现很差。
- 2、在单尺度特征图上正样本的不平衡的问题。
1、尺度范围限制
MiMo 和 SiMo 的方法,输出了不同尺度的感受野,从而解决了多尺度目标物体检测的问题 。但是在单尺度中,C5特征图仅仅只能覆盖受限制的尺度范围,结果就是部分尺度的目标检测表现非常差。为了在SiSo方法中检测所有物体,我们需要输出单尺度特征图中包含不同的感受野。
最开始,我们通过叠加标准卷积和空洞卷积去扩大感受野,但是仍然无法覆盖所有的目标。然后,我们联合了原始尺度和扩大尺度的感受野,结果能够像多尺度感受野一样覆盖所有的目标。如下图所示,原始感受野是(a),采用空洞卷积扩大后是(b),联合后是(c)。
基于以上提到的,我们提出了Dilated Encoder,主要由两部分组成:
- 1、Projector: 1x1卷积减少通道,3x3卷积恢复语义信息。
- 2、Residual Blocks: 其中的3x3卷积使用不同的dilation rates。
结构图如下:
2、正样本的不平衡
在目标检测中,如何定义正样本是一个非常重要的问题。在anchor-based的目标检测方法中,定义正负样本的策略主要是通过anchors和ground-truth的IOU。在MiMo方法中,anchors会被密集的预先放置在不同尺度的特征图上,将不同尺度的ground-truth分配到不同尺度的特征图上,然后通过anchors和ground-truth的IOU进行定义,可以得到足够的正样本。但是在SiSo的方法中,anchors的数量由100K减少为5K,anchors变得非常的稀疏。在使用Max-IoU进行正负样本定义时,大尺度的ground-truth会比小尺度的ground-truth分配到更多的正样本,造成了不平衡的问题。会使得检测器关注大目标而忽略了小目标。不同正负样本定义的比较如下图:
作者提出了平衡匹配的方法,k近邻。同时忽略和ground truth IOU大于0.7的负样本,忽略IOU小于0.15的正样本。
3、YOLOF的结构
定义YOLOF由三部分组成:
- 1、Backbone:ResNet和ResNeXt系列,C5特征图下采样32倍有2048个通道。所有的BN层均冻结。
- 2、Encoder:1x1卷积,将通道减少为512,再接3x3卷积,然后接4个Residual Blocks,其中的3x3卷积使用不同的dilation rates。
- 3、Decoder:借鉴了RetinaNet的结构,由classification head 和 regression head构成,有两个小改动。
- (1)、借鉴了DETR的FFN,classification head 和 regression head有不同数量的卷积层,分别为2个和4个。
- (2)、借鉴Autoassign,在regression head上添加了objectness预测(没有直接的监督信号)
实验
对比试验
1、对比RetinaNet
总结:速度快2.5倍但是小目标检测不如RetinaNet,大目标检测好。
2、对比DETR
总结:速度快7倍但是大目标检测不如DETR,可能是DETR可以利用全局特征。
3、对比YOLOv4
总结:速度快13%但是小目标检测不如YOLOv4,大目标远远高于YOLOv4。
消融实验
1、Dilated Encoder 和 Uniform Matching 有效性
2、ResBlock的数量
在SiSo中设置ResBlock的数量的影响
3、不同 dilations rates 的设置
4、是否添加shortcut
5、k近邻中k的取值
k的取值在大于1后就比较鲁棒
5、定义正负样本的方法比较
错误分析
和DETR进行对比,分析错误:
- 1、localization错误更少,可能是和回归的机制相关,DETR是anchor-free的方法,并且是利用了全局的特征。
-
2、missing更高,YOLOF基于anchor-based,recall不如DETR。
更多的实验细节
这里不再赘述,参考论文。