1、背景介绍
EfficientDet本文系统地研究了用于目标检测的各种神经网络结构设计选择,并提出了几种提高效率的关键优化方法。首先,提出了一个加权的双向特征金字塔网络(BiFPN),该网络允许简单快速的多尺度特征融合;其次,还提出了一种复合尺度扩张方法,该方法可以统一地对所有主干网、特征网络和预测网络的分辨率、深度和宽度进行缩放。 基于这些优化,开发了一个新的对象检测器家族,称为EfficientDet。EfficientDet就是在EfficientNet的骨干网络基础上,添加了一种简单而高效的加权(类似与attention)双向特征金字塔网络(BiFPN),达到了很好的效果。
2、文章脉络
我们先回顾一下上周所讨论的EfficientNet,EfficientNet模型具有很独特的特点,如下:
• 利用倒残差神经网络增大神经网络的深度,通过更深的神经网络实现特征提取;
• 改变每一层提取的特征层数,实现更多层的特征提取,得到更多的特征,提升宽度;
• 通过增大输入图片的分辨率也可以使得网络可以学习与表达的东西更加丰富,有利于提高精确度。
下面我们来一起学习它的进阶版——EfficientDet!
2.1 Introduction
EfficientDet开篇就介绍了两大挑战:
(1)高效的多尺度特征融合,FPN之后,PANet、NAS-FPN提出跨尺度的特征融合,但是之前的工作是直接将它们无差别得加起来,作者认为不同尺度特征图重要性不同,因此提出加权双向FPN,权值是可以学习的参数。
(2)模型缩放,类似于efficientnet,对模型分辨率、深度、宽度进行联合缩放。本文核心方法BiFPN+compound scaling(联合缩放)。
2.2 BiFPN
• 结构方式:
首先,我们删除那些只有一条输入边的节点。我们的直觉很简单:如果一个节点只有一条输入边而没有特征融合,那么它对旨在融合不同特征的特征网络的贡献就会更小。这就简化了双向网络;
其次,如果原始输入节点和输出节点处于同一层,我们会在原始输入节点和输出节点之间添加一条额外的边,以在不增加太多成本的情况下融合更多的特性;
最后,与只有一个自顶向下和一个自底向上路径的PANet不同,我们处理每个双向路径(自顶向下和自底而上)路径作为一个特征网络层,并重复同一层多次,以实现更高层次的特征融合。
• 权重特征融合:
在以往的特征融合方式中,对所有输入特征一视同仁,不同尺度的特征往往是相加,或者concat等等。在BiFPN中作者引入了加权策略,给不同尺度的特征不同的权重,类似于注意力机制,然后相加。
本论文总结了3种加权特征融合的方法:
(1)Unbounded fusion:
这个是最直白的思想,加上一个可学习的权重即可。
缺点:由于权重不做限制,可能会引起训练不稳定。
(2)Softmax-based fusion:
由于上一种方式不对 限制容易导致训练不稳定,很自然的想到对每一个权重用softmax转换到0~1
缺点:计算softmax速度较慢,实验证明在CPU上计算很慢。
(3)Fast normalized fusion:
这个是本文所采用的快速正则化融合的方法。其中 ,因为经过了ReLU**函数, 是个极小值,号称在CPU上比sofemax快30%。
2.3 EfficientDet
EfficientDet的总体架构:
我们采用Imagenet预训练的EfficientNets作为骨干网络。上文提出的BiFPN作为特征网络,采用3-7级特征从骨干网中反复应用自顶向下和自底向上双向特征融合。将融合后的特征分别输入Class prediction net和Box prediction net中,分别生成目标class预测和边界box预测,class和box网络权重在所有级别的特性中共享。
• Backbone network:
EfficientDet重用了EfficientNet-B0到B6相同的宽度/深度缩放系数,并采用 EfficientNet作为backbone,这样我们就可以轻松地重用它们的Imagenet预先训练好的模型结构。
• BiFPN network:
BiFPN的宽度和深度按以下公式进行缩放:
宽度:
深度:
• Class/Box prediction network:
对Box/class prediction network中的depth的设置:
• Input image resolution:
由于在BiFPN中使用了3-7级特征,所以输入分辨率必须可除,因此我们利用以下方程线性增加分辨率:
其中,分别取0,1,2,3,4,5,6,7,如下表所示:
谢谢大家看到这里嘻嘻!!!