论文:《EfficientDet: Scalable and Efficient Object Detection》
论文地址:https://arxiv.org/pdf/1911.09070.pdf
开源项目:https://github.com/xuannianz/EfficientDet
原文参考:https://www.cnblogs.com/mlj318/p/11996609.html
https://blog.csdn.net/ComeTender/article/details/103296778
1、基本概述
该篇论文是2019 刚挂在arXiv上的论文,作者来自于谷歌。因为是one-stage算法,mAP达到了51,在朋友圈都刷屏了。其实该论文在学术上并没有提出特别颠覆的想法,无论是特征融合BiFPN,还是结合width、depth和resolution设计模型,都是其他论文提过的思想。但是该论文将以往的trick融合改进,优化了参数,做出了非常高的结果。
2、论文贡献
- 提出了一个加权的双向特征金字塔结构BiFPN ,用于快速的特征融合工作;
- 提出了一个新的联合缩放方法,将backbone,feature network,head,image resolution进行了统一处理;
- 以EfficientNet作为backbone,结合上述两点,生成了高效快速,适用于不同计算条件的检测网络。
3、模块解析
3.1、BiFPN
主要有亮点:高效的双向不同尺度的特征融合,带权重的特征融合。
首先是各种FPN结构的演进和比较,(a)普通的FPN只有自顶向下的连接 (b)PANet还加了自底向上的连接,(c)NAS-FPN通过搜索找到一种不规则的连接结构.(d-f)是本文探讨的结构,(d)所有的尺度使用最全的连接,计算也最复杂,(e)PANet简化,去除只有一个输入的结点,(f)本文最终的BiFPN结构
- PANet效果好于FPN和NAS-FPN,计算代价也更高
- 如果一个结点本身没有融合的特征,那么对以特征融合为目标的结构贡献就不大(why?).所以(e)中移除了P3,P7的中间结点
- 同一尺度的输入和输出又加了一个连接,因为计算量不大.得到(f)
- (f)中虚线框内作为一层,会重复多次,以得到high-level feature fusion.
3.2、加权融合
在之前的类金字塔模块中,对于不同尺度的特征融合,往往采用的是双线性插值采样。作者认为,对于不同的尺寸特征直接相加是不公平的,考虑它们最终的贡献应该不同。因此,一个常规的想法是加入权重参数w来自动学习重要性。
基于这一分析,作者提出了三种加权的融合方式:
1、无边界限制:,w即为学习的对象。这里对应的输入可以是不同的级别,比如特征级别,通道级别或是像素级别。不同的输入级别将使得权重w的表征形式不同,分别可能是标量、向量或矩阵形式。作者通过实验发现,标量形式在不明显损失精度的情况下能够取得最小的计算成本,因此将选用标量形式;但应当注意,此时各个w之间没有约束限制,容易导致训练的不稳定。
2、Softmax融合: 如果对不同的w进行约束限制,最常用的想法是使用softmax函数,这样做能够较好地比较不同输入的重要性,但在实验中发现指数运算会耗费较高的计算成本。
3、快速正则化融合: 作者利用一个简单的公式来替换softmax操作,即:
3.3、新的联合放缩方法
在构建整体的检测网络框架时,backbone模块选择了EfficientNet系列,并在该基础上进行了联合的放缩。
在backbone部分的放缩因数coefficients与EfficientNet保持一致。
在BiFPN部分,针对channel采用了指数增长,对于深度采用了线性增长,具体的公式为:
在head模块,保持channel width与BiFPN传递过来的一致,约束head的深度,具体的公式为:
由于输入图片在BiFPN处需要分为5个level,所以图片的分辨率需要被128整除(最大的stride为128),所以在分辨率上使用了线性增长公式:
由此得到一系列模型及其配置如下所示:
4、论文结果
- D0与YOLOv3同样精度下,FLOPs少28x
- D1与RetinaNet , Mask-RCNN比较,参数少8x,FLOP少25x,精度类似.
- D7达到51mAP,同时更快参数更少.