跳转至

【目标检测算法50篇速览】三、检测网络优化及改进

【GiantPandaCV导读】检测网络模型发展到16年已经基本形成了一段式和两段式的两种网络设计模式,两者的共同点是均采用了anchor based的设计结构来达到对输入特征图遍历的效果。但是反映出来的现象是两段式网络的精度更高,一段式网络速度更快,两者都对待检测目标的尺度适应能力存在一定的瓶颈,那么如何继续提高特征表达来增强网络性能呢?基于anchor的思路也引入了相对较多的超参数,如何继续简化超参数的数量呢?本章我们将沿着这个问题进行2016年到2018年论文的速览。

第一篇 MS-CNN

《A Unified Multi-scale Deep Convolutional Neural Network for Fast Object Detection》

提出时间:2016

针对问题:

多尺度目标的检测问题仍旧是检测任务的一个重点问题,既然已经有学者考虑了在网络的不同层上完成对不同尺度的目标检测任务,那么具体怎么运用多层的特征呢,本文作者的思路是对不同的输出层设计不同尺度的目标检测器。

创新点:

对于不同的输出层设计不同尺度的目标检测器,完成多尺度下的检测问题,使用特征的上采样代替输入图像的上采样步骤。设计一个去卷积层,来增加特征图的分辨率,使得小目标依然可以被检测出来。这里使用了特征图的deconvolutional layer(反卷积层)来代替input图像的上采样,可以大大减少内存占用,提高速度。

详解博客:https://blog.csdn.net/app_12062011/article/details/77945816

第二篇 R-FCN

《R-FCN: Object Detection via Region-based Fully Convolutional Networks》

提出时间:2016

针对问题:

分类网络对输入特征图中目标的位置信息是不敏感的,而检测网络即需要对目标的位置敏感,还需要保证足够的分类精度。如何解决或者平衡这个矛盾?按我们的理解来说就是,对分类网络来说输入的特征图,目标在图上的不同位置其损失差别不大,但是对检测网络来说,就需要考虑定位的损失,定位的损失再经过回传,会改变网络的权重参数,从而可能对分类的性能产生影响。

创新点:

主要贡献在于解决了“分类网络的位置不敏感性(translation-invariance in image classification)”与“检测网络的位置敏感性(translation-variance in object detection)”之间的矛盾,在提升精度的同时利用“位置敏感得分图(position-sensitive score maps)”提升了检测速度。具体就是把每个目标输出为kk(c+1)的特征向量,k*k每一层表征当前目标的上,下左右等细分位置的heatmap图。

1

详解博客:https://zhuanlan.zhihu.com/p/30867916

第三篇 PVANET

《PVANET: Deep but Lightweight Neural Networks for Real-time Object Detection》

提出时间:2016年

针对问题:

本篇论文继续在faster rcnn网络上深耕,综合之前提出的多层特征融合、浅层特征计算冗余和inception结构来改善faster rcnn网络的性能。

创新点:

改进了faster rcnn的基础特征提取网络,在不影响精度的前提下加速。主要是三个点:1)C.RELU,C.ReLU(x)=[ReLU(x), ReLU(-x)],认为浅层卷积核的一半计算都是冗余的。2)Inception结构的引入。 3)多层特征的融合。以尽可能的利用细节和抽象特征。

详解博客:https://blog.csdn.net/u014380165/article/details/79502113

第四篇 DSSD

《DSSD : Deconvolutional Single Shot Detector》

提出时间:2017

针对问题:

继续在SSD的基础上尝试提高对小目标的检测能力。

创新点:

在网络中添加了反卷积的结构,并通过在backbone中使用resnet结构来提高浅层特征的表达能力。

2

详解博客:https://blog.csdn.net/u010725283/article/details/79115477/

第五篇 YOLOv2/YOLO9000

《YOLO9000:Better, Faster, Stronger》

提出时间:2017年

针对问题:

对yolov1进行改进,借鉴了anchor、多特征层融合检测等网络改进技巧,在保证检测速度的前提下,提高了yolo系列的检测精度。

创新点:

在v1的基础上,用anchor来强化grid,提高输入的分辨率,用BN替代dropout,约束anchor的中心点变动区间,新的backbone

详解博客:https://blog.csdn.net/shanlepu6038/article/details/84778770

第五篇《YOLO9000:Better, Faster, Stronger》

提出时间:2017年

针对问题:

对yolov1进行改进,借鉴了anchor、多特征层融合检测等网络改进技巧,在保证检测速度的前提下,提高了yolo系列的检测精度。

创新点:

在v1的基础上,用anchor来强化grid,提高输入的分辨率,用BN替代dropout,约束anchor的中心点变动区间,新的backbone

详解博客:https://blog.csdn.net/shanlepu6038/article/details/84778770

第六篇 FPN

《Feature Pyramid Networks for Object Detection》

提出时间:2017年

针对问题:

本篇论文的作者尝试通过增强CNN主干网络输出的特征来进一步增强网络的检测精度。

创新点:

CNN目标检测网络开始尝试利用多层特征融合来进行大目标+小目标的检测,本篇主要是提出新的跳层特征融合及用作分类的方式。 FPN网络的提出也成为后续检测的主干网络常用结构

3

详解博客:https://blog.csdn.net/kk123k/article/details/86566954

第七篇《RON: Reverse Connection with Objectness Prior Networks for Object Detection》

提出时间:2017年

针对问题:

对一段式网络模型的训练精度问题进行优化,作者发现一段式网络在训练时相对两段式网络正负样本不均衡程度更大且没有有效的抑制手段。不均衡的正负样本会不利于网络模型收敛。

创新点:

为了优化one-stage目标检测算法的正负样本不均匀的问题,添加了objectness prior层来筛选正负样本,并采用了和FPN类似的特征融合思路,使得浅层特征的表现能力得到了提高。

4

详解博客:https://blog.csdn.net/shanlepu6038/article/details/84778770

第八篇《DeNet: Scalable Real-time Object Detection with Directed Sparse Sampling》

提出时间:2017年

针对问题:

本文作者注意到,当前的检测网络模型都应用了anchor来完成对特征图的近似遍历,其中的anchor超参数的设置也很重要。作者尝试继续简化anchor的超参数,即将基于一定长宽anchor组合的检测算法,取anchor的极限,通过预测图像中目标的角点来完成对图像中目标的定位。

创新点:

之前的two stage 和 one stage都是基于anchor来实现目标建议框的选取,这是第一篇,尝试在anchor盛行的时候,不手工设置anchor,而是利用目标角点检测来实现目标位置检测的方案。

5

详解博客:https://blog.csdn.net/yaoqi_isee/article/details/70184686;https://www.cnblogs.com/fourmi/p/10771589.html

第九篇《CoupleNet: Coupling Global Structure with Local Parts for Object Detection》

提出时间:2017年

针对问题:

本文是对R-FCN的一个改进。作者观察到R-FCN中,对输入特征图直接映射为目标的不同组件的,对纹理较少的目标,比如沙发,就可能定位误差偏大。所以作者考虑在R-FCN中加上全局信息。

创新点:

在R-FCN中加上了对全局信息的提取,因为R-FCN是直接将共享的Feature Map 映射为了每类目标的各个组件,而对沙发这种单独结构文理很少的,更需要目标的全局信息,ROI Pooling则保留了类似的信息,所以两者合一一起用。

详解博客:https://blog.csdn.net/qq_34564947/article/details/77462819

第十篇《Focal Loss for Dense Object Detection》

提出时间:2017年

针对问题:

如第七篇论文的工作,在网络模型训练的过程中,正负样本的不平衡是影响模型精度的重要因素。第七篇采用的的策略和两段式网络相似,都是通过筛选生成的目标框是否包含正样本来过滤。本文作者则从损失函数的角度,通过设计的Focal Loss降低重复的简单样本对模型权重的影响,强调难例对网络学习的益处,以此来提高模型权重收敛的方向,使其达到更高精度。

创新点:

定义新的损失函数Focal loss来使得难训练的样本对loss贡献大,从而一定程度优化训练样本类别不均衡的问题。

详解博客:https://www.bilibili.com/read/cv2172717

第十一篇《DSOD: Learning Deeply Supervised Object Detectors from Scratch》

提出时间:2017年

针对问题:

本文作者认为当前的检测模型大部分都是以大数据集训练得到的分类模型为骨干网络,再将其迁移到当前数据集的检测任务上,虽然分类和检测可以共用特征,但是检测直接从头训练的模型和分类网络训练出来的模型参数还是有区别的。所以作者尝试提供一种从头有监督的训练检测网络模型的方案。

创新点:

摆脱预训练模型,从头训练自己的模型,从而摆脱结构依赖。

https://arleyzhang.github.io/articles/c0b67e9a/

第十二篇《MASK R-CNN》

提出时间:2017年

针对问题:

作者尝试从采用分割网络的思路来实现检测的任务,也就是对每个像素点判断其类别,再通过不同实例来确定其最小外接矩形框从而达到检测的目的。

创新点:

主要是ROI align技术,也就是不进行截断,而是差值方式的ROI POOLING 。

6

详解博客:https://blog.csdn.net/WZZ18191171661/article/details/79453780

第十三篇《Deformable Convolutional Networks》

提出时间:2017年

针对问题:

作者认为卷积神经网络由于其构建模块中的固定几何结构而固有地仅限于模型几何转换,即因为卷积核是固定的形状,无法自适应的对输入特征图上的特征进行有效的提取。所以作者设计了可变形的卷积层和池化层。

创新点:

可变形卷积,通过借鉴空洞卷积实现,通过单独的层学习采样点位置;可变形roi,roi pooling里面的每个bin都可以有一个offset来进行平移。

详解博客:https://zhuanlan.zhihu.com/p/52476083

第十四篇《YOLOv3》

提出时间:2018年

针对问题:

主要是作者对yolov2网络的持续优化和改进。

创新点:

主要是借鉴FPN和resnet来提高主干网络的特征层表征能力。

详解博客:https://blog.csdn.net/dz4543/article/details/90049377

第十五篇《Scale-Transferrable Object Detection》

提出时间:2018年

针对问题:

作者认为类似原始FPN中的特征的融合并不能够很好的增强特征的表达能力,所以设计了新的融合方式来强化这部分。

创新点:

提出了一种新的在几乎不增加参数和计算量前提下得到大尺寸featuremap的方法,首先将输入feature map在channel维度上按照r2长度进行划分,也就是划分成C个,每个通道长度为r2的feature map,然后将每个11r^2区域转换成rr维度作为输出feature map上rr大小的结果,最后得到rHrWC的feature map。

7

详解博客:https://blog.csdn.net/u014380165/article/details/80602130

第十六篇《Single-Shot Refinement Neural Network for Object Detection》

提出时间:2018年

针对问题:

作者观察到两段式网络有较好的精度表现,而一段式网络有更优秀的速度性能,作者尝试结合两者的特点来构建新的网络结构。

创新点:

TCB,ARM与ODM模块的提出。

详解博客:https://blog.csdn.net/woduitaodong2698/article/details/85258458?utm_medium=distribute.pc_relevant_right.none-task-blog-BlogCommendFromMachineLearnPai2-5.nonecase&depth_1-utm_source=distribute.pc_relevant_right.none-task-blog-BlogCommendFromMachineLearnPai2-5.nonecase

第十七篇《Relation Networks for Object Detection》

提出时间:2018年

针对问题:

大家都有感觉,物体间或者物体内一些区域的关联性是有助于目标检测任务的,但是之前没人有实际的证明如何使用这种关联性是一定可行的,本文作者就尝试在检测网络中添加注意力模块来提高网络表现。

创新点:

计算object之间的relation,作为训练参数,从而提高检测精度。

8

详解博客:https://blog.csdn.net/weixin_42102248/article/details/102858695

第十八篇《Cascade R-CNN: Delving into High Quality Object Detection》

提出时间:2018年

针对问题:

本文也是对网络训练过程中的优化技巧,作者发现训练检测网络时候需要设置超参数IOU阈值来判断当前定位框是否为正样本,但是一个单一的IOU阈值可能并不是合用的,所以尝试做级联的IOU阈值来辅助训练。

创新点:

为了优化RPN中的单一IOU问题对最终检测精度的影响问题而提出,做不同IOU阈值的级联来提高计算最终损失的正负样本质量及比例,从而提高性能。

详解博客:https://blog.csdn.net/qq_17272679/article/details/81260841

第十九篇《Receptive Field Block Net for Accurate and Fast Object Detection》

提出时间:2018年

针对问题:

本文作者的工作也是对主干网络的不同层特征融合工作的优化进行的。主要是为了更有效且更高效的实现特征的融合。

创新点:

提出RFB结构,利用空窗卷积来进行特征的融合。

9

详解博客:https://blog.csdn.net/u014380165/article/details/81556769

第二十篇《Object Detection based on Region Decomposition and Assembly》

提出时间:2019年

针对问题:

本文作者还是针对两段式网络中目标框提取部分进行优化,来提高检测精度。

创新点:

思路还是借鉴之前的论文,对正样本图像块进行拆分左右上下半边和其本身,再分别送入后续卷积,目的是让网络尽可能多的看到当前正样本的丰富的特征。

10

详解博客:https://blog.csdn.net/c9Yv2cf9I06K2A9E/article/details/88148760

第二十一篇《M2Det: A Single-Shot Object Detector based on Multi-Level Feature Pyramid Network》

提出时间:2019年

针对问题:

作者认为FPN的特征金字塔最开始就是为了分类而设计的,在检测网络中需要进行一定的适配才能达到最好的性能。

创新点:

原始的backbone更适合分类任务,改善backbone的使用机制,使其更适应检测任务。两个新模块

1)TUM 通过卷积、上采样和相同shape相加来得到多尺度的特征

2)FFMv2 特征融合模块,通过卷积核upsample来统一输入feature map的shape,再concat

3)SFAM 对输入的特征先concat,再进行通道层面的attention,并转化为权重参数相乘,再送入分类和回归。

详解博客:https://blog.csdn.net/hanjiangxue_wei/article/details/103311395

本章总结

到本章以后,所提到的21篇论文大部分都是对已有的两种检测网络设计范式的调整和优化,学者们探索了多层特征的融合并最终推出了FPN,并在FPN基础上对检测问题进行适配;学者们还探索了在检测网络中添加注意力模块的方式和方法,并证明其有效。我们还要注意到第八篇和第十三篇论文,其中第八篇讨论了anchor从多个框压缩为点的可能性,第十三篇则探讨了,可能纯卷积的结构并不是检测问题的最优选项,这个方向仍旧有优化的可能。