EfificientDet目标检测网络

EfificientDet:scalable and Efficient Object Detection


参考文章:

https://blog.csdn.net/dwilimeth/article/details/103206530

https://blog.csdn.net/zhw864680355/article/details/103531307

https://www.cnblogs.com/monologuesmw/p/12423232.html

1、简介

         由Google Brain 团队发表在Arxiv,可以看作是ICML 2019 Oral 的 EfficientNet: Rethinking Model Scaling for Convolutional Neural Networks 扩展,从分类任务扩展到检测任务。神经网络的速度和精度之间存在权衡,而 EfficientDet 是一个总称,可以分为 EfficientDet D1 ~  EfficientDet D7,速度逐渐变慢,但是精度也逐渐提高。

        从下图中可以看出,EfficientDet-D7 的性能非常的惊人:在 326B FLOPS(每秒浮点运算次数),参数量 52 M的情况下,COCO 2017 validation 数据集上取得了 51.0 的 mAP,state-of-the-art 的结果。一般而言,one-stage的检测器,诸如YOLO,SSD等,检测速度快,实时性好,但检测准确性不如Mask-RCNN,RetinaNet等two-stage的检测器。但从下图中可以看到,EfficientDet在FLOPS和mAP之间进行了很好突破,是目前既准确又快速的检测器。

                                         

该算法主要创新点是 BiFPN,Compound Scaling 两部分。

2、BiFPN 

                                   

         首先作者对各种特征融合结构进行了比较,如上图,(a)普通的FPN只有自顶向下的连接 (b)PANet还加了自底向上的连接,(c)NAS-FPN通过搜索找到一种不规则的连接结构.(d-f)是本文探讨的结构,(d)所有的尺度使用最全的连接,计算也最复杂,(e)PANet简化,去除只有一个输入的结点,(f)本文最终的BiFPN结构。本文的作者基于下面的观察结果/假设,进一步进行了优化:

  (1)PANet效果好于FPN和NAS-FPN,计算代价也更高。所以作者从PANet 出发,移除掉了只有一个输入的节点。这样做是假设一个节点如果仅包含一个输入,并没有进行特征融合,那么它对于特征网络的贡献是极小的。这样把 PANet简化,得到了上图 (e) Simplified PANet 的结果。

  (2)作者在相同 level 的输入和输出节点之间连了一条边,这样做是假设这样可以在不增加任何参数的同时,融合更多特征,得到上图(f)。

  (3)最后,中虚线框内作为一层,会重复多次,以得到high-level feature fusion。PANet   只有从底向上连,自顶向下两条路径,作者认为这种连法可以作为一个基础层,重复多次。形成最终的BiFPN。

3、加权特征融合

对于特征融合,从FPN 开始普遍采用的是一个特征先 Resize ,再和另一层的特征相加。作者认为这样的方式是不合理。因为这样假设这两层的特征有了相同的权重。考虑它们最终的贡献应该不同,因此,一个常规的想法是加入权重参数w来自动学习重要性。基于这一分析,作者提出了三种加权的融合方式:

(1)无边界限制:O=\sum_{0}^{n}Wi*Ii,w即为学习的对象。这里对应的输入可以是不同的级别,比如特征级别,通道级别或是像素级别。不同的输入级别将使得权重w的表征形式不同,分别可能是标量、向量或矩阵形式。作者通过实验发现,标量形式在不明显损失精度的情况下能够取得最小的计算成本,因此将选用标量形式;但应当注意,此时各个w之间没有约束限制,容易导致训练的不稳定,因此,采用权值归一化的方式限定每个权重的范围。

(2)Softmax融合: 如果对不同的w进行约束限制,最常用的想法是使用softmax函数,这样做能够较好地比较不同输入的重要性,但在实验中发现指数运算会耗费较高的计算成本。

(3)快速正则化融合: 作者利用一个简单的公式来替换softmax操作,其实就是去掉了 softmax 的指数运算,在 GPU 上能快 30%,性能微微掉一点,公式如下

                                                                 O=\sum_{0}^{n}\frac{Wi}{\varepsilon +\sum w}*Ii

4、复合缩放(Compound Scaling)

           EfficientNet在Model Scaling 的时候考虑了网络的 width, depth, and resolution 三要素。而EfficientDet进一步扩展,把EfficientNet拿来做backbone,这样从 EfficientNet B0 ~ B6,就可以控制 Backbone 的规模;neck 部分,BiFPN 的 channel 数量、重复的 layer 数量也可以控制;此外还有 head 部分的层数,以及 输入图片的分辨率,这些组成了 EfficientDet 的 scaling config 。

(这一部分,与EfficientNet的通过NAS搜索网络架构类似。作者设置了很多放缩公式,在放缩公式中设置了很多超参数,通过空间搜索的方式进行超参数赋值,简单来说,就是在运算量、资源允许的情况下,通过优化网络深度d,宽度w,分辨率r,使得准确度最大)

5、网络结构

其结构如下图所示:

              

        它大致采用了one-stage检测器的范例。采用EfficientNet作为网络的backbone;BiFPN作为特征网络;将从backbone网络出来的特征{P3,P4,P5,P6,P7}反复使用BiFPN进行自上而下和自下而上的特征融合。反复使用的特征通过class prediction net和box prediction net 对检测类别和检测框分别进行预测。

 

OK,到此这篇文章的主要点就全部聊完了。

 

 

发布了15 篇原创文章 · 获赞 0 · 访问量 185

猜你喜欢

转载自blog.csdn.net/qq_37705280/article/details/105458969
今日推荐