论文地址和代码
论文: https://arxiv.org/abs/2103.09460. 代码: https://github.com/megvii-model/YOLOF.
主要贡献
这是2021年的一篇CVPR论文,该论文的主要贡献有如下几点: ●通过实验证明,金字塔模型(FPN)的主要作用不是多尺度特征融合,而是分而治之的解决思路。这一点目前几乎被整个行业误解,导致几乎所有的目标检测网络都把FPN加了进去。 ●提出单进单出编码器Dilated Encoder,并用这个编码器代替FPN,精度不变,速度变快了2.5倍。 ●提出均衡匹配策略(Uniform Matching),由于用Dilated Encoder代替了FPN,导致正样本(Positive Anchor)不平衡,所以提出Uniform Matching方法来平衡正样本。
解释贡献
首先,看第一点,为什么说金字塔模型(FPN)的主要作用不是多尺度特征融合,而是分而治之的解决思路。作者在RetinaNet网络上做了一个实验,如下图所示,有四个编码器,分别是多进多出,单进多出,多进单出,单进单出,其中多进多出就是FPN。 令人惊奇的是,多进多出的编码器与单进多出的编码器的效果差不多(只相差了不到1mAP),可见C3,C4特征层没什么用,C5编码器包含了足够多的语义信息。同时,单进多出编码器的效果比单进单出编码器的效果要好很多(大于12mAP)。可见分而治之的作用要远大于多尺度特征融合的作用。 正是基于上述的原因,FPN没有我们想象中那么有作用,而且FPN的结构又复杂,需要消耗大量内存,所以,作者提出了Dilated Encoder来代替FPN。作者分析了导致单进单出编码器效果没有单进多出编码器效果好的原因,然后得出结论是因为感受野的问题。单进多出编码器的感受野范围足够大,而单进单出编码器输出的感受野被限制了,导致特征图感受野匹配的目标尺度范围是有限的,这阻碍了不同尺度目标的检测表现。如下图中(a)所示。为了找到一个方法来增加单进单出编码器的感受野,这里想到了一个方法是先偏移感受野得到(b),然后再将(a)与(b)相加,得到?的感受野。
实现上述扩展感受野的方法就是建立如下图所示的Dilated Encoder编码器。在我的理解中,认为下图Residual Blocks里的那条有卷积核的线路,应该就是为了偏移感受野得到(b)。
经过这样处理之后,还会导致一个问题,那就是正样本不平衡。正样本的定义对于目标检测问题的优化至关重要,如果一个Anchor与GT(真实目标框)之间的最大IOU大于一个给定的阈值,这个Anchor就是一个正样本,这个策略被称为Max-IoU匹配。作者发现,当采用单进单出编码器之后,Anchor的数量会减少很多,直接从100k减少到了5k,导致anchor非常稀疏。对稀疏的anchor采用Max-IoU匹配会引起一个问题,导致大的真实框比小的真实框产生更多的正样本(positive Anchor),从而造成了正样本的不平衡问题。这会导致检测器只关注大目标的训练,而忽略小目标的优化。 基于上述原因,作者设计了一个均衡匹配方法(Uniform Matching),即对每个真实框,只采用最近邻的k个Anchor作为正样本,这样就能保证每个GT(真实框)无论尺寸大小都有相同数目的正样本用来训练了。
|