【目标检测】49、YOLOF | 单层特征用的好就够啦!

【目标检测】49、YOLOF | 单层特征用的好就够啦!_第1张图片

文章目录

    • 一、背景
    • 二、方法
      • 2.1 使用 SiSo 代替 MiMo
      • 2.2 使用 Uniform matching 代替 Max-IoU matching
      • 2.3 YOLOF 的结构
    • 三、效果

论文:You Only Look One-level Feature

代码:https://github.com/megvii-model/YOLOF

出处:CVPR2021

作者:旷世

时间:2021.03

YOLOF 的贡献点:

  • 通过对比实验发现了 FPN 带来提升的主要原因:分而治之
  • 构建了 Dilated Encoder(抽取不同尺度的上下文特征)和 Uniform Matching(解决由稀疏 anchor 带来的正负样本不平衡问题),弥补了 SiSo 和 MiMo encoder 的 gap
  • 通过和 RetinaNet 、DETR 的对比,证明了 YOLOv4 又快又好的效果

一、背景

在目标检测器中,FPN 越来越成为一个不可或缺的模块,FPN 能够带来两点好处:

  • Multi-scale feature fusion 多尺度特征融合:能够通过融合高分辨率和低分辨率特征来获得更好的特征
  • Divide-and-conquer 分而治之:在不同尺度的特征图上检测不同尺度的目标

所以本文主要研究 FPN 在单阶段检测器上的效果,实验设计为:将多尺度特征融合和分而治之的操作解耦。

细节结构如图 1 所示(Single-S,Multiple-M):

  • 将 FPN 看做 Multiple-in-Multiple-out(MiMo)encoder:其接受来自 backbone 的多尺度特征
  • 将 detection heads 看做 decoder:其接受来自 FPN 的输出

从图 1 中得到的结论:

  • C5 特征包含了充足的上下文特征,能保证检测到不同尺度的目标,让 SiMo encoder 也获得了很好的效果
  • 多尺度融合的作用比分而治之的作用少很多,所以作者发现多尺度融合并不是 FPN 取得优良效果的决定性因素(这点同样被 ExFuse 在语义分割中证明了)。
  • 分而治之由于将复杂的检测问题,通过目标尺度分解成了多个子问题,从而简化了优化的过程

FPN 的分而治之的问题:

  • 虽然分而治之对最终结果起到了很大的作用,但其带来了很多内存需求,减缓了训练速度

YOLOF 如何解决 FPN 中分而治之的问题:

  • YOLOF 通过实验发现 C5 中已经包含了很丰富的特征,所以只使用 C5(下采样 32 倍)来进行后续的预测

【目标检测】49、YOLOF | 单层特征用的好就够啦!_第2张图片
【目标检测】49、YOLOF | 单层特征用的好就够啦!_第3张图片

二、方法

2.1 使用 SiSo 代替 MiMo

【目标检测】49、YOLOF | 单层特征用的好就够啦!_第4张图片

当作者直接使用 SiSo 替换了 RetinaNet 的 MiMo 时,效果出现了很大的下降(如图 3 所示),所以作者发现直接替换有两个问题:

  • C5 特征图中的特征感受野是有限的,会影响不同尺度目标的检测
  • 从 single-level 特征图中生成的 anchor,有不平衡的问题

1、解决问题 1:使用膨胀卷积得到 Dilated Encoder

如图 4a 所示,C5 特征图的感受野只能包含很小的范围,所以当某些目标大小不在这个范围内时,就会无法检测,所以作者需要使用一个包含多种不同感受野的单层特征图。

所以作者在 C5 上使用膨胀卷积的方式,增加了一些感受野范围,如 4b 所示。然后,将 a 和 b 进行结合,就获得了最大的感受野范围,如图 4c 所示。

Dilated Encoder:如图 5 所示,包含两部分,Projector 和 Residual blocks,Projector 的 1x1 conv 用于减少通道维度,3x3 conv 用于空间特征交换。后接接 4 个 Residual blocks,每个 Residual blocks 的 3x3 conv 都使用不同的膨胀率,来生成不同尺度的特征。

【目标检测】49、YOLOF | 单层特征用的好就够啦!_第5张图片
【目标检测】49、YOLOF | 单层特征用的好就够啦!_第6张图片

【目标检测】49、YOLOF | 单层特征用的好就够啦!_第7张图片
【目标检测】49、YOLOF | 单层特征用的好就够啦!_第8张图片

2.2 使用 Uniform matching 代替 Max-IoU matching

2、解决问题 2:大小 anchor 数量不均衡的问题→Uniform matching

在 anchor-based 检测器中,是使用 IoU 来判断正负样本的,RetinaNet 中,如果某个 anchor 和一个真实 box 的 IoU>0.5,则判定该 anchor 为正样本,也称为 Max-IoU matching。

在 MiMo 中,是在每个尺度的特征图上分别生成对应的 anchor,然后分而治之,Max-IoU matching 就能在不同尺度的特征图上匹配到不同尺度的目标。

在 SiSo 中,anchor 的数量大大减少(从 100k 到 5k),导致 anchor 非常稀疏,使用 Max-IoU 就会导致匹配问题。大尺度的真值导致产生了很多大尺度的 anchor,而小尺度的真值产生的 anchor 很少,也就是导致大小 anchor 数量不均衡,如图 6 所示,这会间接导致模型更关注大尺度的物体,忽略小尺度的物体。

Uniform matching:对每个真实框,使用 k 近邻的 anchor 来作为正样本

为了解决上述大小样本数量不均衡的问题,作者提出了 Uniform matching,对每个真实框,使用 k 近邻的 anchor 来作为正样本,这样能够使得每个真实框,都能够和相同数量的 anchor 进行匹配,而不关注 anchor 的尺寸,可以平衡不同大小的 anchor 数量。

Uniform matching 判定正负样本的方式:设置了 IoU 阈值,大于 0.7 的负样本和小于 0.15 的正样本,都会被忽略。

【目标检测】49、YOLOF | 单层特征用的好就够啦!_第9张图片

2.3 YOLOF 的结构

【目标检测】49、YOLOF | 单层特征用的好就够啦!_第10张图片
Backbone:ResNet 和 ResNeXt,输出位 C5 特征,通道为 2048,下采样了 32 倍

Encoder:如图 5,先使用 1x1 和 3x3 得到 512 channel 的特征,然后使用残差网络(1x1 conv 将通道降低 4 倍,3x3 的膨胀卷积来提升感受野,1x1 conv 来升通道)

Decoder:classification head 和 regression head

  • 和 RetinaNet 的第一个不同:参考 DETR 中的 FFN,让两个头的输出通道数不同,分类头是 2 个conv+BN+Relu,回归头是 4 个 conv+BN+Relu
  • 和 RetinaNet 的第二个不同:参考 Autoassign,给回归头中的每个 box 都使用了隐含的 objectness 预测(未直接监督),最终的分类得分是分类得分和 objectness 预测之积。

其他细节:对图像随机平移最大 32 个像素,来弥补稀疏 anchor 的问题。

三、效果

和 DETR 的对比:

【目标检测】49、YOLOF | 单层特征用的好就够啦!_第11张图片

和 YOLOv4 的对比:

【目标检测】49、YOLOF | 单层特征用的好就够啦!_第12张图片

你可能感兴趣的:(目标检测,目标检测,计算机视觉,人工智能)