您的位置:主页 > 天津企讯网 > 天津资讯 > 正文
欢迎光临《天津企讯网》

轻松识别小目标的物体检测算法揭秘

天津企讯网 2019-09-09 来源:未知 可分享

EasyDL是百度大脑的定制化模型训练和服平台,用户通过EasyDL可以低成本地训练自己的深度学习模型从而得效果优异的定制化AI。自上线以来,EasyDL的用户规模和使用场景迅速增长,也收到了深度学习业内人士的赞赏和青睐。在众多模型使用场景中,小目标物体的检测比较常见,一般的目标检测算法往往效果不理想;因此,EasyDL团队针对小目标物体的检测进行了专项优化,并取得了令人瞩目的效果提升。

AlexNet2012ImageNet上展露角以来,算机视觉各个方向和神变得越发密,物体检测也不例外。2014年的RCNN[1]是代表之一,它在传统Selective Search利用AlexNet来提取特征行分。随后在2016完全依靠完成端到端识别训练FasterRCNN[2]同样明神在物体检测上的巨大优势本文我们会简单FasterRCNN检测方案,然后针对各种后尤其是小目标检测的改进内容,分类

FasterRCNN检测方案使用CNN来提取特征(feature map),然后在特征的每个(cell)上基于(anchor box)去做是否有物体的二分,及物体相框位移的回段被称作Region Proposal Network(RPN)。一些方法把里的二分加上关心的类别直接完成整个检测,如YoloV1[3],被称单阶(single stage)检测方法。

FasterRCNNRPN拿到候(Region of Interest, RoI)之后,会把特征图上所有候选框位置的区域抠出来,然后利用线性插值把它们调整到相同大小。这个操作被称为RoI pooling经过RoI pooling之后,原来特征上的不同候区都有了相同的大小,我在后面去接卷积层和全部网(head network)就可以预测的物体类别和物体位置了。所以FasterRCNN被称(two stage)方法,RoI pooling就是两个段的枢

 

 

除了上面所的主要网络结构外,FasterRCNN还有一些重要的训练和预测的细节在准备训练数据时,会先将真实的标注框和网络锚框做匹配,匹配的原则是两者的IoU要大于阈值(0.5),且IoU大者先。由于会有大量的框匹配不到真框,所以实际训练时匹配不到真框的框做采,保它和匹配到真框的正例框比例均衡。在第一段和第二段里,一般分失函数用交叉,框回失函数用Smooth L1。在RPN预测候选框和第二预测检测框的候,对输果做非极大抑制(NMS)以减少出框数,并过滤大部分的背景框。可以看到FasterRCNN包含主体的CNN框和RPNRoI pooling、分和回归损失函数、注框和框匹配采NMS等各个件。

 

 

2016年,研究人提出了SSD(Single Shot MultiBox Detector)[4]单阶检测模型,使得检测的速度大大提升,并且精度更高。检测速度提升来自于它去除了FasterRCNN里的RoI pooling和第二个段,因时还没有GPU能实现高效的RoI pooling。精度的提升来自于它采用了不同尺度的多个特征图,如下图所示。不同尺度的特征图上每个cell的感受野各有不同,因而更适合用来预测不同尺寸的物体。SSD仍然采用了框的方式(文章中称 default box),在6个不同尺寸的特征针对锚框做预测所有的预测结果做NMS理得到最终的预测框。在YoloV2[5]中,也采用了种多尺度特征的方式。

 

 

随着检测展,SSD模型也暴露了自己的缺点,然它利用多尺度特征来预测不同尺寸的物体,但是于小目检测通常不佳。一般来小目检测结果来自最底的特征,比如上里的Conv5_3 layer但是它于网的前几,提取的语义特征并不丰富,可能没法提取到物体的抽象特征。因而学者就如何将高丰富的语义特征融合特征图进行了尝试2017年,有研究者提出了DSSD(Deconvolutional Single Shot Detector)[6],网络结构如下DSSD是在SSD的基上,加入了Deconvolution,将高层语义信息丰富的特征放大尺寸,然后和底位置信息丰富的特征相加,得到更好的特征用来预测小目的物体。

 

 

2017年的另一工作FPN(Feature Pyramid Networks)[7]就更著名了,它的思路跟上面似。作者启于在传统物体检测方法中,像金字塔是一个非常重要的手段,而且在深度学习方法流行之后多尺度的测试仍然能够有效地提升检测效果。而且SSD中多尺度特征理已初步验证了在CNN特征上做多尺度的有效性。FPN总体上分为两个部分。第一个是自底向上的部分如在ResNet的网里不同大小的特征会分不同的stage,每个stage的最后一特征被选为应级别(level)的特征。第二个部分是向下程和接,它采用上采的方式将顶层的特征放大到上一个级别特征的大小,然后与之融合。融合后的特征便有了底特征的位置信息和顶层特征的语义信息,能更好地完成小目标检测FPN流行的另一个原因是它景非常广泛,既能在两段的FasterRCNN中,也可以用在单阶检测方法如RetinaNet[8]中,可以用在例分割MaskRCNN[9]中。

 

 

------分割线

FPN虽然带来了检测效果上的提升,但也带来了计算量更多的问题(额外的上采样和跳层计算)。SNIP中的实验发现基于更大分辨率图像(RetinaNet中通常训练尺寸为(1333,800),此处放大至(2000, 1400))训练的模型可以提高对小目标物体的检测,但对中大物体的检测反而会受到负面影响。训练数据中那些尺寸非常大或非常小的object会影响训练效果,因此这篇文章限定了不同尺寸的object在训练过程中的梯度回传。 

SNIP[10]借鉴了Multi-Scale Training(MST)的思想,multi-scale training/testing最早见于[11],训练时,预先定义几个固定的尺度,每个epoch随机选择一个尺度进行训练。测试时,生成几个不同尺度的feature map,对每个Region Proposal,在不同的feature map上也有不同的尺度,我们选择最接近某一固定尺寸(即检测头部的输入尺寸)的Region Proposal作为后续的输入。在[12]中,选择单一尺度的方式被Maxout(element-wise max,逐元素取最大【cascade rcnn中就是】)取代:随机选两个相邻尺度,经过Pooling后使用Maxout进行合并,如下图所示。

 

 

常见的是multi-scale training只是从多个尺度中随机挑选一个尺度去训练,实际中还是单个尺度的训练。而multi-scale test则是对单张图片进行预测后一起进入NMS阶段。

MST方法中,由于训练数据中尺寸极大或极小的目标会影响实验结果,因此SNIP的做法就是只对尺寸在指定范围内的目标回传损失(该范围需接近预训练模型的训练数据尺寸);也就是说训练过程实际上只是针对这些目标进行的,这样就能减少domain-shift带来的影响。又因为训练过程采用了类似MST的做法,所以每个目标在训练时都会有几个不同的尺寸,那么总有一个尺寸在指定的尺寸范围内,因此很难出现漏掉目标的情况。

 

 

为了能对多尺度物体能进行更精准的识别并且能够降低计算压力,SNIPER[16]另辟蹊径,对每个尺度大类下都维护一个重点关注区域(chips)。chips是图片的某个scale上的一系列固定大小的(比如KxK个像素)的以恒定间隔(比如d个像素)排布的小窗(window),每个window都可能包含一个或几个objects。

 

 

从原图也可以看出,原图中有一大部分的背景区域(没被postive chip覆盖的区域)被丢弃了,而且实际上网络真正输入的是chip(比原图分辨率小很多),这对于减少计算量来说很重要。这个地方很巧妙,在不同的scale上截取相同大小的chip,而且包含的是不完全相同的目标。这个方式很接近RCNN。对较小的目标起到一种zoom in的作用,而对较大的目标起到一种zoom out的作用。而对于网络来说,输入的还是固定大小的chip,这样的结构更加接近于分类问题网络的拓扑。由于训练时使用的是较低分辨率的chip,SNIPER能够摆脱对较高分辨率图像的依赖。所以batch也可以做的很大,比如可以做到每张卡20的batch。

目前主流的目标检测方法大体分为两类:single-stage和two-stage。然而还有另一类方法,虽然不是主流,但依然能取得SOTA的性能,这就是anchor-free的方法,代表算法有CornerNet、ExtremeNet、FSAF(CVPR2019)等。Anchor free based method一般采用bottom-up的思路,先生成带有类别信息和位置信息的feature map。CornerNet[13]顾名思义,预测左上角和右下角来得到最后的bounding boxes。所以最基本的需要两个feature map表示对应的Corner,文中称为heatmap。如下图所示,两个heatmap分别表示top-left(左上角)和bottom-right(右下角)的corner,作者借鉴Associative Embedding method(NIPS2017)利用了两个embedding层做grouping操作,将属于同一个object的corner聚合都一起得到最后的bounding box。

 

 

模型的整体结构如下图,backbone采用hourglass network以得到高质量的feature map,接两个分支分别预测top-left Corner 和bottom-right Corner,两个分支的结构完全一样。

 

 

CornerNet-Lite[14]CornerNet两种变形的组合:一个是CornerNet-Saccade,基于attention机制,从而并不需要对图片中的每个像素做详尽的处理。另一个是CornerNet-Squeeze,引入了新的复杂的backbone结构。结合这两个变形可以应用到两个重要情景中:在不降低准确率的情况下挺高效率,同时,在实时检测过程中提高了准确率,CornerNet-Saccade即适合做离线处理,也适用于实时的检测。

CornerNet-Saccade通过减少处理的像素的个数来提高inference的效率。利用一种类似于人眼扫视的注意力机制,首先经过一个下采样后的输入图片,生成一个attention map,然后再将其进行放大处理,接着进行后续模型的处理。这与之前原始的CornerNet在不同尺寸上使用全卷积是有区别的,CornerNet-Saccade通过选择一系列高分辨率的裁剪图来提高效率及准确率。

CornerNet-Squeeze通过减少每个像素的处理过程来加速inference,其结合了SqueezeNet及MobileNet的思想,同时,引入了一个新的backbone hourglass,利用了1x1的卷积,bottleneck层及深度分离卷积。

CornerNet珠玉在前,目标检测问题变成了一个标准的关键点估计问题。我们仅仅将图像传入全卷积网络,得到一个热力图,热力图峰值点即中心点,每个特征图的峰值点位置预测了目标的宽高信息。模型训练采用标准的监督学习,推理仅仅是单个前向传播网络,不存在NMS这类后处理。

 

 

CenterNet[15]相比较传统目标检测而言(缩放16倍尺度,使用更大分辨率的输出特征图(缩放了4倍)因此更有利于小目标检测。测试时可以使用flip增强,multiscale test增强的方式。其中flip的方式是直接将最后一层的feature map进行融合,MST则是通过nms的方式进行整合。

直观上,当我们看到一幅图片时,我们首先关注的是图像中比较醒目的影像。一般来说,这些醒目的影像往往在图中所占的比例比较大,而比例较小的目标往往会被我们忽略。数据集中也存在这种情况,很多图像中包含的小物体并没有被标出。另外,小目标所在区域较小,在提取特征的过程中,其提取到的特征也会非常少,这些都不利于我们对小目标的检测。

[17]通过分析COCO数据集,可以发现大部分的小目标都集中在一些少量的图片中。这就导致在训练的过程中,模型有一半的时间是学习不到小目标的特性的。另外,对于小目标,平均能够匹配的anchor数量为1个,平均最大的IoU为0.29,这说明很多情况下,有些小目标是没有对应anchor的,或者对应的anchor非常少,且即使有对应的anchor,他们的IoU也比较小,平均最大的IoU也才0.29。有如下两种改进方法:

1)对于数据集中含有小目标图片较少的情况,使用过度采样(oversample)的方式,即多次训练这类样本。

2)对于第二类问题,则是对于那些包含小物体的图像,将小物体在图片中复制多分,在保证不影响其他物体的基础上,人工增加小物体在图片中出现的次数,提升被anchor包含的概率。

 

 

目标检测近两年的进展放缓,但仍然有很多值得关注、值得深究的地方。结合现实条件来看,目标检测在实际运用场景中仍有很多优化空间。百度大脑EasyDL也将持续把更多与场景结合的、深入优化预训练的模型开放给用户,加速推动AI的产业落地。

 

参考文献

[1]. Ross Girshick, 2014, Rich feature hierarchies for accurate object detection and semantic segmentation

[2]. Shaoqing Ren, 2016, Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks

[3]. Joseph Redmon, 2015, You only look once: Unified, real-time object detection

[4]. Wei Liu, 2016, SSD: Single Shot MultiBox Detector

[5]. Joseph Redmon, 2016, YOLO9000: Better, Faster, Stronger Joseph

[6]. Cheng-Yang Fu, 2017, DSSD : Deconvolutional Single Shot Detector

[7]. Tsung-Yi Lin, 2017, Feature Pyramid Networks for Object Detection

[8]. Tsung-Yi Lin, 2018, Focal Loss for Dense Object Detection

[9]. Kaiming He, 2018, Mask R-CNN

[10]. An Analysis of Scale Invariance in Object Detection – SNIP

[11].Spatial Pyramid Pooling in Deep Convolutional Networks for Visual Recognition

[12].Object Detection Networks on Convolutional Feature Maps

[13].CornerNet: Detecting Objects as Paired Keypoints

[14].CornerNet-Lite: Efficient Keypoint Based Object Detection

[15].CenterNet :Objects as Points

[16].SNIPER: Efficient Multi-Scale Training

[17].Augmentation for small object detection

 

 

 

感谢您阅读: 轻松识别小目标的物体检测算法揭秘
如有违反您的权益或有争意的文章请联系管理员删除
[责任编辑:无 ]