论文:You Only Look One-level Feature
代码:https://github.com/megvii-model/YOLOF
出处:CVPR2021
作者:旷世
时间:2021.03
YOLOF 的贡献点:
在目标检测器中,FPN 越来越成为一个不可或缺的模块,FPN 能够带来两点好处:
所以本文主要研究 FPN 在单阶段检测器上的效果,实验设计为:将多尺度特征融合和分而治之的操作解耦。
细节结构如图 1 所示(Single-S,Multiple-M):
从图 1 中得到的结论:
FPN 的分而治之的问题:
YOLOF 如何解决 FPN 中分而治之的问题:
当作者直接使用 SiSo 替换了 RetinaNet 的 MiMo 时,效果出现了很大的下降(如图 3 所示),所以作者发现直接替换有两个问题:
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 都使用不同的膨胀率,来生成不同尺度的特征。
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 的正样本,都会被忽略。
Backbone:ResNet 和 ResNeXt,输出位 C5 特征,通道为 2048,下采样了 32 倍
Encoder:如图 5,先使用 1x1 和 3x3 得到 512 channel 的特征,然后使用残差网络(1x1 conv 将通道降低 4 倍,3x3 的膨胀卷积来提升感受野,1x1 conv 来升通道)
Decoder:classification head 和 regression head
其他细节:对图像随机平移最大 32 个像素,来弥补稀疏 anchor 的问题。
和 DETR 的对比:
和 YOLOv4 的对比: