EfficientDet:Scalable and Efficient Object Detection论文笔记

论文地址:https://arxiv.org/pdf/1911.09070.pdf
github地址:https://github.com/google/automl/tree/master/efficientdet

Motivation

本文作者根据EfficientNet扩展出高效的目标检测网络EfficientDet,其中主要贡献点为BiFPN和compound scaling两部分。作者根据架构搜索得到一系列的EfficientDet,用D0-D7表示。它们的速度逐渐变慢,但精度也逐渐提高。其中EfficientDet D7在326B FLOPS,参数量 52 M的情况下,COCO 2017 validation 数据集上取得了 51.0 的 mAP,sota的结果。

Methods

首先在多尺度特征融合阶段,作者提出了双向FPN的结构。CVPR 2017 的 FPN 指出了不同层之间特征融合的重要性,并且以一种比较简单,具有启发式的方法把底层的特征乘两倍和浅层相加来融合。之后出现了各种别的融合方法,比如 PANet 先从底向上连,再自顶向下连回去;M2Det 在连的时候加入 skip-connection。这些方法都是基于Conv,Sum,Concatenate,Resize,Skip Connection 等候选操作的组合。而作者基于一定的观察,提出了BiFPN。其结构单元如图所示。
BiFPN
作者观察到 PANet 的效果比 FPN ,NAS-FPN 要好,但计算量更大;因此作者从 PANet 出发,移除掉了只有一个输入的节点。这样做是假设只有一个输入的节点相对不太重要;另外,作者在相同 l尺度的输入和输出节点之间连了一条边,假设是能融合更多特征,类似于skip-connection;最后,PANet 只有从底向上连,自顶向下两条路径,作者认为这种连法可以作为一个基础层,重复多次。重复的次数由速度与精度之间权衡得到。结合EfficientNet的backbone和之后用于检测的两个branch得到如下图所示的EfficientDet基础框架。
EfficientDet
此外,在特征融合中,以往的特征都是等权重相加,而作者认为从建模角度考虑,更优的方式是赋予特征不同的权重相加。
本文的第二个贡献在于compound scaling。Model Scaling 指的是受资源限制,往往需对模型进行调整。如为了把backbone部分scale up,得到更大的模型,就会考虑把层数加深,或者把输入图的分辨率增大。
基于EfficientNet在width, depth和resolution三要素上的复合scaling,EfficientDet进一步扩展,把 EfficientNet拿来做backbone,这样从 EfficientNet B0 ~ B6,就可以控制 Backbone 的规模;并且BiFPN 的 channel 数量、重复的 layer 数量也受Backbone的控制;此外还有 head 部分的层数,以及输入图片的分辨率,这些组成了 EfficientDet 的scaling config 。
其中BiFPN的width和depth的决定式为:
depth&width
Head部分层数决定式为:
Head
图像分辨率的决定式为:
resolution
ϕ \phi ϕ为backbone的level,分为0-7个level。
config

Experiments

数据集:COCO2017
优化器:SGD
学习率:第一个训练epoch中从0到0.16线性增加。之后以cosine模式衰减。
损失函数:focal loss
预处理:flipping and scaling
epoch数:300 for D0-D6,600 for D7
Batchsize:128 on 32 TPUv3

Results

experiments

猜你喜欢

转载自blog.csdn.net/qq_43812519/article/details/107143911