论文下载:
https://arxiv.org/pdf/1911.09070.pdf
论文代码:
https://github.com/zylo117/Yet-Another-EfficientDet-Pytorch
论文摘要:
作者提出了一种加权双向特征金字塔网络(BiFPN),该网络能够实现简单、快速的多尺度特征融合;其次,提出了一种复合尺度方法,对所有骨干网、特征网络和盒/类预测网络同时统一尺度分辨率、深度和宽度。基于这些优化和更好的骨干,作者开发了一个新的对象检测器系列,称为EfficientDet,在广泛的资源限制范围内始终实现比现有技术更好的效率。
BiFPN:
(a)FPN引入自上而下的路径,融合3- 7级的多尺度特征(P3-P7);
(b)PANet[26]在FPN上增加一条额外的自底向上通道;
(c) NAS-FPN使用神经结构搜索,找到不规则特征网络拓扑,然后重复应用相同的块;
(d)我们的BiFPN具有更好的准确性和效率权衡。
图(a)是特征金字塔融合网络,蓝色箭头代表上采样过程。如下为FPN的一组公式:
Resize通常是分辨率匹配的上采样或下采样操作,Conu通常是特征处理的卷积操作。第七层输出上采样与第六层融合做卷积后得到第六层输出,以此类推得到每一层的输出。
作者发现PANet比FPN和NAS-FPN获得了更高的精度,但是花费了更多的参数和计算量,所以作者对PANet进行改进:
(1)删除那些只有一条输入边的节点。作者认为一个节点只有一条未进行特征融合的输入边对网络贡献很小,所以作者删除上图(b)中P7、P3最后的的节点,简化为上图(e),P7、P3的最右端的节点被删除,中间的节点在示意图中平移到最右端。
(2)从输入节点添加跳跃连接输出节点,为了融合更多的特征。
(3)作者将双向的(bidirectional),自顶向下和自底向上(top-down bottom-up)的路径作为一个特征网络层,依据硬件条件可以多次把BiFPN作为一个模块进行拼接,上一块的输出作为下一块的输入。
由于不同的输入特征在不同的大小下,对输出特征的贡献通常是不一样的;但通常的做法是先将特征的大小统一,再进行相加,这种做法让不同的特征对融合特征的贡献都是一样的。作者提出三种加权 的特征融合方法:
(1)普通的加权融合特征:
由于标量权值是无界的(unbounded),可能会导致训练不稳定。
(2)基于softmax的融合特征:
采用权值归一化(normalization)限制每个权值的取值范围,计算量会比较大。
(3)快速归一化融合特征:
ε=0.0001是为了让分母大于0,并采用ReLU激活函数,效果与softmax特征融合结果差不多,运算速度上却有很大的提升。
最终得到上图的BiFPN公式,ε在BiFPN模块代码中也有体现。
Efficient网络结构:
作者为了让此网络适用于不同的硬件资源,采用复合系数φ联合缩放主干网络、BiFPN、分类检测以及输入图片大小(所谓联合指的是“采用同一个φ参数调整不同部分,以达到联合作用)。
(1)主干网络:采用Efficient-B0到Efficient-B6:
(2)BiFPN网络:在{1.2,1.25,1.3,1.35,1.4,1.45}上进行网格搜索(grid search),选出最佳值1.35:
(3)分类检测网络:网络的通道数(论文中的网络宽度)与BiFPN输出特征通道数一致,深度满足:
(4)分辨率需要被2七次方=128整除:
实验结果:
COCO数据集上的效率测试性能:
模型大小和推理延迟比较:
主干和BiFPN的分离实验:
不同特征网络的比较: