『写在前面』
EfficientNet作者团队基于EfficientNet构建的最强One-shot目标检测器。
文章标题:《EfficientDet: Scalable and Efficient Object Detection》
作者机构:Mingxing Tan等, Google Research, Brain Team.
摘要
- 提出一种加权双向特征金字塔(BiFPN),使得可以更简单高效地融合多尺度特征。
- 提出一种复合缩放方法,可以统一地对整个主干网络、特征网络和预测头结构的分辨率、深度、宽度进行缩放。
1 介绍
类似之于分类问题设计的EfficientNet,作者继续思考是否有可能在各种资源约束下构建更准确、更高效、可扩展的检测模型。
与设计分类模型不同,设计检测模型有几个主要的挑战:
挑战1:有效的多尺度特征融合。FPN已经被广泛应用在检测模型主干网络上,以进行多尺度的信息融合。但传统的FPN有一个弊端是它默认用于进行融合的各层特征贡献相同,这是不合理的。为解决此问题,本文提出了BiFPN引入了可学习的权重以了解不同输入特征的重要性,同时反复应用自上而下和自下而上的多尺度特征融合。
挑战2:模型缩放问题。先前的大多方法通过堆模型大小等方式来提高准确率,而实际中经常有实时性要求。基于EfficientNet中对模型缩放的思考,本文结合EfficientNet和BiFPN以及复合缩放方法,开发了一系列新的目标检测器,命名为EfficientDet.
2 相关工作
模型整体结构方面
One-stage or two-stage? EfficientDet选择One-stage。
多尺度特征融合与表示
- SSD直接在多个不同尺度的feature map上提取特征进行检测
- FPN提出了特征金字塔网络,添加一条top-down的路径来组合多个尺度的特征
- PANet在FPN的基础上添加了一条bottom-up的路径来加强特征聚合
- STDL(STDN)提出一种尺度迁移模块来利用跨尺度的特征
- M2Det提出了MLFPN,借鉴UNet的思想,设计了一种Multi-level & Multi-scale 的特征融合模块
- G-FRNet使用门单元来控制多尺度间的信息流
- NAS-FPN使用NAS技术来自动设计特征融合模块,但是搜索过程很长,并且最终结果不规则、难以理解
模型缩放
EfficientNet提出的复合缩放思想,取得了比传统单一维度缩放更好的效果,EfficientDet继续扩展之。
3 BiFPN
BiFPN主要思想有两点:一是高效的双向跨尺度连接,二是加权特征图融合。
3.1 问题建模
关于特征融合部分的结构设计,可以建模成如下问题:
给定一组输入特征,目标就是为了找到一个转化函数来聚合不同层的特征并输出一系列新的特征:.
(a)中用图形表示了FPN的工作方式,FPN使用了top-down的方式,从网络深层不断将特征与前层特征进行结合。如图所示,其使用了P3~P7五个输入特征,Pn表示下采样n次得到的feature map,相应的尺寸为原图的。经典的FPN还可以通过下面的数学表示方式来表示:
其中,Resize表示上下采样过程,通常是为了对齐特征图尺寸;Conv表示卷积操作,为了抽取特征。
3.2 跨尺度连接
FPN(图a)只有一条top-down路径,PANet(图b)在其基础上又添加了bottom-up路径,而NAS-FPN搜索到了一个较稀疏的连接方式,但是过于抽象。作者对比这三者后发现,PANet效果最好,但带来了较大的参数量和计算量。因此,作者想在PANet的基础上,进行改进:
改进点一:删除入度为1的节点。因为直观认为,如果一个节点只有一个输入边且没有特征融合,那么它将对旨在融合不同特征的特征网络贡献较小。这样,我们从图(b)得到了图(e)。
改进点二:添加跳跃连接。如果原始输入和输出节点处于同一level,则在原始输入和输出节点之间添加一条额外的边,以便在不增加成本的情况下融合更多特征。 这样,我们得到了图(f),也就是BiFPN的基本单元。
改进点三:将BiFPN视作一个基本单元,重复堆叠。不像PANet那样只有一个top-down和bottom-up路径,BiFPN将一对路径视为一个特征层,然后重复多次以得到更多高层特征融合。
3.3 加权特征融合
先前的特征融合方法大多平等地对待所有输入特征。然而,因为不同的特征具有不同的分辨率,他们对特征融合的贡献是不平等的。为解决此问题,本文提出在特征融合期间为每个输入添加一个额外的权重,让网络去学习每个输入特征的重要性。基于这种思想,作者试验了三种不同的加权方法:
无界融合
仅依靠一个标量就可以以最小的计算成本达到与其他方法相当的精度。但是,由于标量权重是无界的,容易导致训练不稳定,因此没有采用这种方法,而是采用了权重归一化来限制每个权重的范围。
基于Softmax的融合方法
说到归一化权重,一个本能的想法就是使用Softmax,进而使得所有权重被标准化成一个0~1之间的概率值,以表征各个输入的重要性。然而,使用softmax会带来较大的GPU延迟。
快速归一化融合
通过ReLU来保证各权重非负,通过添加一个很小的来保证数值稳定性。因为没有用到指数运算,所以速度较快。后续分解研究表明,这种融合方法较softmax融合具有非常相近的学习行为和准确性,但速度提高了30%。
3.4 最终结论
BiFPN组合使用双向跨尺度连接和快速归一化融合。
4 EfficientDet
4.1 EfficientDet结构
使用EfficientNet作为backbone,使用P3~P7作为预测特征,并反复应用BiFPN,最终融合的特征被送到box-class预测网络。与RetinaNet类似,类别和框网络在各预测层之间共享权重。
4.2 复合缩放
采用类似EfficientNet中提出的复合缩放的思想,联合缩放主干网络、BiFPN、box-class网络和输入尺寸。但与EfficientNet中进行网格搜索不同,检测模型搜索空间太大,此处只是使用了启发式。
主干网络部分
完全复用了EfficientNet B0~B6的模型结构,以便复用预训练权重。
BiFPN部分
宽度(通道数)以指数方式增长;深度(网络层数)以线性方式增长。具体操作方法如下:
box-class预测部分
宽度(通道数)保持与BiFPN部分的一致;深度(网络层数)以线性方式增长。具体操作方法如下:
输入尺寸
因为使用P3~P7作为BiFPN的输入特征图,所以输入图像分辨率必须是128的整数倍。因此缩放方式也是按128的整数倍进行线性增长,具体操作方法如下:
遵循上述的缩放方式,通过设置不同大小的,可以得到EfficientDet-D0 ~ EfficientDet-D6。因为从D6到D7模型大小增长较大,没有办法按照同D0~D6的训练设置进行训练,所以D7没有按照先前的方式进行扩展,只是增大了模型的输入尺寸。最终,各种型号的EfficientDet配置如下表所示。
5 实验结果
贴两张图。
6 分解研究
在原版RetinaNet(ResNet50+FPN)上,逐步替换backbone为EfficientNet-B3,再替换FPN为BiFPN,发现mAP均有大幅提升,证明二者有效性。
对比了图2中各种不同的特征融合结构,不加权重的BiFPN能够取得与PANet相当的效果,加了权重的BiFPN性能优于PANet,但二者参数量和FLOPS均比PANet少。
随机选了几个节点观察权重变化,发现快速归一化和基于softmax的归一化具有类似的学习行为,但快了30%左右。
复合缩放与单一维度缩放对比如下图。