目标检测算法横向比较,包括backbone、特征融合、loss、proposal/anchor/heatmap、NMS、正负样本设置等

目标检测算法发展移步:目标检测算法

本文从算法改进的方向,进行横向比较,包括backbone,特征融合、loss、proposal/anchor/heatmap、NMS、正负样本设置等

Reference:Object Detection in 20 Years: A Survey

Table of Contents

Backbone改进

DenseNet

ResNeXt(group convolution)

SENet(Squeeze-and-Excitation Networks)

特征融合方法

Processing flow

Element-wise operation

番外:如何在分辨率和感受野之间折中——dilated convolution

anchor或候选框生成

faster-RCNN中

YOLO

SSD

FPN

RetinaNet

RefineDet

Anchor-Free的“候选框”

DenseNet

CornerNet

FCOS

前景、背景样本阈值的设置

faster-RCNN

YOLO

SSD

FPN

RetinaNet

RefineDet

DenseNet

CornerNet

FCOS

Hard Negative Mining问题

NMS

1.传统NMS

2.SoftNMS

IoU-guided NMS

Head,sub-network,Loss和训练

Faster-RCNN

SSD

RetinaNet

RefineDet

其他

localization的改进

多尺度问题

context priming

 

pretraining的作用/training from scratch

加速方法

用segmentation改进detection任务



Backbone改进

Backbone的改进有以下几个方向:变深(resnet系列)、变宽(Inception系列)、变小(mobile、shuffle等)、利用特征(densenet、senet等)以及针对检测专门设计的backbone(比如darknet)。

模型进化史:VGG->GoogLeNet/ResNet->DenseNet->ResNeXt->SENet

maskRCNN用的ResNet进化版:ResNeXt

为了加速,会使用加速的模型:MobileNetLightHead RCNN

DenseNet

DenseNet是一个更密集的ResNet,即每层都会接受前面所有的层的输出,可以实现特征重用。

与ResNet使用sum连接不同的是,DenseNet使用concatenate,为了保证concat之后的尺寸,接了一个1x1的卷积层,然后又接了一个2×2 average pooling layer。

需要注意的是,每个Dense Block里虽然是BN-Relu-Conv的顺序,但实际上BN还是接在conv层后激活函数之前的,只不过把第一个Conv放在了外面,BN作用于concat之后的特征上。

ResNeXt(group convolution)

下图左为resnet,右图为ResNeXt(格式: in channels, filter size, out channels)。主要是分组进行了卷积,最后再concatenate在一起,这种改进会让参数更少,但是分类accuracy增加了。与Inception V4相比,ResNeXt效率更高,但准确率不一定有V4好,因为它丢掉了不同感受野的卷积。

SENet(Squeeze-and-Excitation Networks)

SENet假设了卷积之后各特征图的重要程度不同,于是要给各channel加一个attention权重

squeeze和excitation正是为了生成这个attention weight

注意:以上的网络都是针对图像识别任务创建的,而并不是针对检测任务创建的,检测任务除了分类还有bbox的回归,所以由上图可以发现,并不是越强的网络(对于分类任务而言)在检测任务上就越强,如图中的ResNet101的feature extractor accuracy比Inception Resnet v2差很多,但是前者基于SSD框架的检测mAP却比后者强很多。

除了这些网络之外,与这些网络同时使用的还有FPN(非常重要),我们在特征融合里方法里说明。

特征融合方法

Invariance不变性和equivariance等变性是图像特征表达的两个要素,也是目标检测任务同时需要考虑的。

分类任务中比较看重invariance,不论物体出现在图像中的什么位置,都能识别出来。旨在学习到high-level的语义信息。

localization任务比较看重equivariance,物体在图像中进行了平移,localization的结果也应该做对应的平移。旨在判别位置和尺寸scale。

因为CNN网络有很多的卷积层和池化层,所以越深层的特征层有stronger invariance和less equivariance,而低层网络虽然语义特征比较差但是含有更丰富的edge和contour信息。所以为了在获得 invariance的同时获得equivariance,可以融合多层特征层,之前提到的FPN就是为了做这个。

Processing flow

有bottom-up fusion和top-down fusion两种特征融合形式。

bottom-up fusion在SSD里使用到,做法是最后多层特征层都生成Anchor传到输出层进行box选择,除此之外还在RSSD等SSD的衍生网络上得到使用。

top-down fusion在FPN网络里使用,它是将高层的特征层通过up-sampling传回低层,与低层融合后生成低层的特征层,让低层的特征层拥有了语义特征,最后也是基于最后多层特征层生成的Anchor进行筛选。FPN技术是结合feature extractor 一起使用的,所以在后面得到广泛应用,包括mask-RCNN,RetinaNet等state-of-the-art的模型。

两种融合形式也可以“一起食用,味道更佳”,例如RefineDet就是结合了SSD的bottom-up fusion和FPN技术。

为了完成不同layer之间的bottom-up和top-down,需要对特征图的尺寸做适配。例如通过1*1卷积来适配channel,通过up-sampling和down-sampling完成shape适配。做下采样时,mask-RCNN使用了双线性插值(一般的下采样是最近邻插值),弥补了一些proposal边框坐标处于非整数情况时的误差。另外也可以使用RefineDet里使用转置卷积(或称作fractional strided convolution)来完成替代上采样,转置卷积也需要进行参数的训练,虽然可能带来性能上的提升,但是训练资源要求会变多。

Element-wise operation

上图c、d、e展示了特征图之间融合的3种方法。element-wise sum是直接将数组/矩阵对应位置相加,element-wise product则是相乘,注意,乘相比加而言有个好处是,乘法可以抑制或者突出某些特定区域的特征,这有利于小目标的检测。e是直接将两组特征在channel方向叠加在一起,这种方法肯定是accuracy最好的,因为叠加的过程种没有信息的丢失,可以集成不同区域的上下文信息,但是缺点是大大增加了内存占用。

番外:如何在分辨率和感受野之间折中——dilated convolution

preview

越低分辨率的特征层越难用于检测小物体,提升分辨率最好的方法就是去掉pooling层,或减小下采样的尺度,但是这种方法会使特征层像素点的感受野变小,从而可能导致miss掉某些大目标

当然之前所说的特征融合可以解决这个问题,除此之外还有一个方法,就是使用dilated convolution空洞卷积。空洞卷积最早在语义分割任务里使用,空洞卷积相比普通卷积的感受野更大,去掉pooling 不会影响大目标的检测(去掉pooling 保证了高分辨率),同时卷积核的参数也没有增加(不过最后得到的feature map比原来大了,所以后续的网络部分可能会有计算量的增加)。SSD在VGG-16的基础上,删除了fc8,将fc6,fc7换成了卷积层,为了维持分辨率,删除了pool5,而是在fc6上使用空洞卷积来维持感受野。RFB-SSD在Inception module的每个分支后面增加一个相应的dilated convolution。

anchor或候选框生成

anchor的想法最初由faster-RCNN提出,后来在众多算法上都得到了沿用,如SSD, YOLO2, mask-RCNN,RetinaNet,RefineDet等,在18年8月CornerNet出来之后,anchor-free的算法大有占据未来的趋势,不过anchor-based的方法目前还是主流。anchor是人为预设的一组多种scale*多种ratio的参考框,尽量覆盖所有scale(大小)和ratio(形状)的的检测框,每个参考框负责检测与其IOU大于阈值 (训练预设值,常用0.5或0.7) 的目标,anchor技术将问题转换为"这个固定参考框中有没有认识的目标,目标框偏离参考框多远"。

faster-RCNN中

anchor在RPN网络里的特征图上使用,使用3*3 sliding window在特征图上滑窗,每个窗口中心为anchor中心(映射到原图上),生成3scale(128*128,256*256,512*512)*3ratio(2:1,1

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值