面向小目标的多尺度Faster-RCNN检测算法

2019-02-20 08:33黄继鹏史颖欢
计算机研究与发展 2019年2期
关键词:低分辨率高分辨率尺度

黄继鹏 史颖欢 高 阳

(计算机软件新技术国家重点实验室(南京大学) 南京 210023)

目标检测是结合了目标定位和识别2个任务的一项基础性计算机视觉任务,它的目的是在图像的复杂背景中找到若干目标,给出一个精确的目标边框(bounding box),并判断该边框中目标所属的类别[1].因为目标检测的效果直接决定了图像语义理解、目标重识别等众多高层视觉任务的效果,并且它在智能监控系统、医学图像分析等方面具有很好的应用前景,所以对它的研究具有很强的理论和应用价值,目标检测也一直是计算机视觉领域备受关注的若干研究方向之一.

小目标[2]是指自身真实的物理尺寸过小或与拍摄设备距离较远导致其在整幅图像中占比小的一类目标,通常只含有几十个或更少的像素.如图1所示,第1行图像中边框标记出的挖掘机为小目标,第2行图像是Faster-RCNN[3]的一些检测结果,第2行中的各类目标为目标检测中经常研究的一些目标.装配在许多设备上的摄像头,比如:无人机摄像头、通信基站摄像头以及其他一些架设高度较高的监控摄像头等,它们采集的图像中存在很多小目标,所以研究小目标检测对于分析和利用这些图像非常重要,这在安防、交通、救援等方面有重要的应用价值.

Fig. 1 Regular object and small object图1 常规目标与小目标

自2012年Krizhevsky等人[4]提出的AlexNet在ImageNet图像分类任务的精度上取得显著提升以来,以卷积神经网络(convolutional neural network, CNN)为代表的各类深度学习方法被广泛应用于许多视觉任务中,这其中也包括目标检测.因为相较于传统的基于手工特征的方法,基于深度学习的方法通常可以取得更好的效果,所以现在深度学习的方法在目标检测这一方向上已经成为主流,绝大多数的研究工作都是围绕CNN展开的.

然而,即使这些基于深度学习的方法在通用的目标检测数据集上取得了很好的效果,它们仍然不能很好地解决小目标检测这一问题.例如:图1第1行图像中的挖掘机用通用的目标检测方法是检测不出来的,而用本文的方法则可以检测出来.

小目标检测问题主要有2个难点:

1) 当目标在图像中占比非常小的情况下,对应区域的像素所反映出的信息量是非常有限的.在极端情况下,小目标检测任务甚至可能退化为像素分类任务.这导致一些通用的目标检测算法难以适用于小目标检测,而一些专门为小目标检测设计的算法只能针对特定的应用背景,缺乏通用性.

2) 标记图像中的小目标作为训练数据时很容易出现误差,在目标本身已经很小的情况下,细微的误差容易对检测结果造成较大的影响,而且标记数据的人工成本也很高[5],所以目前为止还没有一个较大的完整的用于小目标检测研究的数据集,这阻碍了学术界对于小目标检测的研究.

针对上述的问题,本文提出了一种面向小目标的多尺度Faster-RCNN检测算法.该方法根据卷积神经网络的特性,对网络结构做出修改,使得网络可以同时利用低层和高层的特征进行多尺度检测.同时,本文还用网上搜索引擎爬虫获得的高分辨率大目标图像进行训练以解决缺少小目标训练数据的问题.由于高分辨率的大目标训练图像与低分辨率的小目标测试图像的数据分布存在很大差异,通过可视化分析问题后,又使用下采样和上采样的方法尽可能消除训练图像与测试图像的差异.实验表明,所提出的方法确实可以较好地解决小目标检测的问题.

具体来说,本文的主要贡献包括:

1) 针对Faster-RCNN在小目标检测上的不足,提出了通用的网络结构修改规则,同时利用低层和高层的特征进行多尺度检测,提高了小目标检测的精度;

2) 通过对目标高分辨率图像进行下采样和上采样的方法,使网上获取的数据与实际测试数据的分布尽可能接近,解决缺少小目标训练数据的问题.

1 相关工作

在2014年以前,目标检测领域效果最好的方法是Felzenszwalb等人[6-7]提出的可变形部件模型(deformable part model, DPM),这一方法本质上利用的是手工特征.然而随着深度学习的发展,DPM的检测效果已经远远比不上深度学习的方法了,因此现在目标检测领域的主流是深度学习,绝大多数研究工作都是围绕CNN展开的.

区域卷积神经网络(regions with convolutional neural network, RCNN)系列[3,8-9]的方法是用深度学习的方法进行目标检测的代表性工作.Girshick等人[8]提出的RCNN开创性地将候选区域生成和深度学习的分类方法结合起来.RCNN通过过分割[10]生成一些候选区域,然后用CNN分别对每一块候选区域提取特征,最后送入分类器判断类别并对边框进行回归.因为不同候选区域重复卷积的问题,该方法的速度非常慢.

在借鉴何恺明等人[11]提出的空间金字塔池化网络(spatial pyramid pooling network, SPPNet)和Sermanet等人[12]提出的定位思想后,Girshick等人[9]又提出了Fast-RCNN.该方法在RCNN的基础上引入了目标区域池化(region of interest pooling, ROI pooling),这实际上是一个单层的金字塔池化层,它使得网络可以对不同尺寸的输入图像都产生相同大小的特征,保证了输入图像的尺寸不变性,同时它通过特征映射的方法直接在整张图像的特征图(feature map)上提取候选区域的特征,避免了重复卷积,在精度和速度上都优于RCNN. Fast-RCNN之后,制约该方法速度的主要原因变成了候选区域生成所使用的过分割.

随后,任少卿等人[3]在Fast-RCNN的基础上又提出了Faster-RCNN.该方法采用锚点(anchor)的方式来生成候选区域,将候选区域生成也交由深度网络来做,速度和精度进一步提升.至此,使用深度学习做目标检测被RCNN统一到了一个深度框架中.

继RCNN之后,Redmon等人[13]又提出了更快的目标检测方法YOLO(you only look once).YOLO不同于RCNN,它将目标检测作为回归问题处理,直接在划分的网格上回归目标边界框和所属类别.因为免去了复杂费时的候选区域生成,YOLO的速度非常快,但对于靠得很近或较小的目标,其检测精度不高且泛化能力偏弱.

结合RCNN的Anchor思想和YOLO的回归思想,刘伟等人[14]提出了单次多框检测器(single shot multi-box detector, SSD).SSD有RCNN定位准确和YOLO速度快的优点,因为引入多尺度检测[15],它对于不同尺寸的目标都有较好的检测效果.检测速度和精度进一步提升.

这3类方法对于一般的目标检测问题有不错的精度,然而对于小目标的检测精度却都不理想.事实上,这些方法检测不出来的目标往往不是一些复杂的目标,而是一些较小的目标,比如PASCAL VOC数据集[5]中的瓶子.这说明不是深度网络缺乏学习和表示能力,而是深度网络提取的小目标特征所能表示的信息实在是太少了[16].

除此之外,还有一些研究者专门针对小目标的检测进行了研究.Takeki等人[17]提出了一种结合图像语义分割的小目标检测方法,该方法将全卷积网络(fully convolutional network, FCN)及其变体和CNN结合起来,以支持向量机(support vector machine, SVM)整合三者的结果,但是这个方法只适用于在纯净的天空背景下检测小鸟这一任务,难以适用于复杂背景下的多类目标检测任务.Chen等人[18]基于RCNN进行改进,使得RCNN可以生成更小的候选区域,对RCNN在小目标检测这一任务上的提升非常大,但算法复杂度较高.Eggert等人[19]同样也是基于RCNN进行改进,他们对feature map分辨率与检测效果的关系进行了研究,在公司商标检测的问题背景下,用改进的anchor box生成方法提升了RCNN使用高分辨率feature map进行检测的效果.

由此可见,虽然已经有人针对小目标检测做出一些工作,但是这些方法都只能在特定的问题背景下使用,或者对于一般目标检测的效果不如前面3种方法,缺乏一定的通用性.

2 多尺度Faster-RCNN检测算法

2.1 多尺度检测

在一个多层卷积神经网络中,低层的特征往往能很好地表示图像的纹理、边缘等的细节信息,而越往高层走,随着神经元感受野的扩大,高层的特征往往能很好地表示图像的语义信息,但是相应的就会忽略一些细节信息[20].

当一个目标非常小时,从仅有的像素中所能反应出来的语义信息是非常有限的,而太小的目标也完全不需要神经元具有很大的感受野,所以我们一般要更多地依靠低层的细节信息才能识别出小目标.为了证明这个结论,我们利用梯度上升法对图像特征进行重构[21],以此可视化地展示深度网络不同层提取出的小目标特征有何区别.如图2所示,图2(a)中边框里的挖掘机为需要检测的小目标,我们通过VGG16网络提取它的特征,并利用conv1_2和conv5_3层提取出的特征对图像进行重构;图2(b)是用VGG16网络conv1_2层特征重构的结果,可以清楚看出是一个挖掘机;而图2(c)是用VGG16网络conv5_3层特征重构的结果,只能看清轮廓.所以对于小目标检测的问题,卷积神经网络的低层特征往往比高层特征要更加有效.

Fig. 2 Reconstructed image图2 重构图像

Fig. 3 Network structure图3 网络结构

在原始Faster-RCNN的方法中,候选区域由候选区域生成网络(region proposal network, RPN)生成,候选区域的特征仅由最后一个卷积层经过目标区域池化得到,利用这样的高层特征对小目标进行检测显然会存在比较大的问题[22].因此我们参考了SSD方法的思想,对Faster-RCNN引入了多尺度检测,即不单单依靠最后一层的feature map进行检测,而是对网络中的多个尺度的feature map都进行生成候选区域的操作.具体流程如图3所示,输入图片经过一个卷积神经网络提取特征,将不同层提取出的多个不同尺度的feature map送入各自的RPN生成候选区域,不同尺度对应的RPN是有区别的,因为低层神经元的感受野小,对应的anchor box尺寸也要小,所以越低层的特征得到的候选区域越小,具体anchor设置将在实验环节详细说明.得到生成的候选区域后,求取feature map映射,再通过ROI pooling将特征变成统一大小,最后送入分类器,这样就可以充分利用低层特征对小目标进行检测.这样的结构适用于不同的特征网络,我们在实验部分分别对利用ZF[23]和VGG16[24]2种特征网络的Faster-RCNN方法进行改进.对于ZF网络,将conv1,conv2,conv5这3层的输出送入候选区域生成网络和ROI pooling进行多尺度检测;对于VGG16网络,将conv1_2,conv2_2,conv3_3,conv4_3,conv5_3这5层的输出送入候选区域生成网络和ROI pooling进行多尺度检测,其他具体参数设置会在实验部分说明.

2.2 训练数据变换

网络结构的改进解决了只利用高层网络特征难以检测小目标的问题,针对小目标难以标记、缺乏训练样本,我们利用了从网络上获取的图像作为训练数据,共7 804张.然而通过搜索引擎关键字检索出来的图像往往是以目标为主体的,相比测试图像中的小目标,这些图像中的目标分辨率较大.比如:我们通过“挖掘机”检索出来的一般都是以挖掘机为主体的图像,挖掘机这个目标在图像中所占的比例非常大,而测试图像中目标所占比例却非常小,两者的像素不一样多,所反映的信息量也不一样,因而数据的分布可能存在差异.如图4所示,图4第1列为部分网上获取的高分辨率大目标训练图像,图4第2列为采样处理后的训练图像,图4第3列和第4列为小目标检测的部分测试图像.

Fig. 4 Training data and test data图4 训练数据与测试数据

Fig. 5 The distribution of different object图5 不同目标的分布

为了说明高分辨率(high resolution, HR)目标和低分辨率(low resolution, LR)目标的分布确实存在差异,我们利用t-SNE[25]的方法对这2类图像中的目标特征进行降维.我们以原始Faster-RCNN结构进行验证,特征网络为VGG16.用目标低分辨率图像训练网络,再用目标低分辨率图像和目标高分辨率图像测试.对ROI pooling层后得到的大小相同的特征向量用T-SNE方法降维.可视化结果如图5所示,紫色圆点代表低分辨率目标,蓝色十字代表高分辨率目标,可见两者确实存在很大差异.

针对这样一个分布差异,我们采用下采样和上采样的方式对训练数据进行预处理.使用的下采样方法包括最大池化和平均池化,这使得高分辨率图像的信息量减少.而使用的上采样方法包括线性插值、区域插值和最近邻插值,这将图像还原为原始大小,并引入了一些噪声.从人的视觉上来看,采样后的训练图像和测试图像更类似,我们在实验部分对这6种采样方法的组合进行了实验,经过效果最好的采样方法处理过后的训练图像如图4第2列所示.实验证明,下采样和上采样可以有效提升使用高分辨率目标图像训练出的模型检测目标低分辨率图像的检测精度.不同的下采样和上采样方式对检测效果的影响会在实验部分给出说明.

3 实 验

3.1 实验设置

实验采用的数据集由2部分组成,检测的小目标为挖掘机.一部分来源于基站铁塔上的监控摄像头所拍摄的图像,共有14 449张,其中的挖掘机通常非常小;另一部分来源于通过搜索引擎搜索“挖掘机”关键字获取的高分辨率大目标图像,共有7 804张,其中的挖掘机通常比较大,如图4所示.

为了比较方法的精度,分别采用了ZF和VGG16这2种网络作为特征网络进行实验.因为检测目标是挖掘机,所以anchor box的比例参数都设置为0.7,1,1.4.每个尺度的feature map对应候选区域生成网络的anchor尺寸不同,对于ZF网络:conv1层对应的尺度参数为2,4,8;conv2层对应的尺度参数为4,8,16;conv5层对应的尺度参数为8,16,32;对于VGG16网络:conv1_2层对应的尺度参数为2,4;conv2_2层对应的尺度参数为4,8;conv3_3层对应的尺度参数为4,8;conv4_3层对应的尺度参数为8,16;conv5_3层对应的尺度参数为8,16;其余参数均与原始Faster-RCNN一致.

为了比较方法的计算复杂度,在比较精度的实验设置基础上作如下设置:对于ZF网络,分别测试只采用conv1特征、conv2特征、conv5特征和同时采用三者的方法复杂度;对于VGG网络,分别测试只采用conv1_2特征、conv2_2特征、conv5_3特征和同时采用三者的方法复杂度.以平均单张图像的检测时间为计算复杂度的评估指标,单位为s.

3.2 实验结果

将目标低分辨率数据集划分成2部分,7 225张用于评估模型性能,7 224张用于单独或搭配目标高分辨率图像进行训练,在不同特征网络下所得的检测结果如表1所示:

Table 1 The mAP of Detection 表1 检测精度 %

第1列表示模型使用的网络结构,带MS前缀的表示使用多尺度检测改进的模型.之后每一列第1行表示训练数据,HR表示从网上获取的目标高分辨率图像,LR表示用于训练的7 224张目标低分辨率图像,其余数值分别表示在对应数据下训练出的模型的检测精度,指标为平均精度均值(mean average precision, mAP),在这里实际上是挖掘机的AP.

从表1中可以得出2个结论:

1) 不论采用高分辨率图像还是低分辨率图像作为训练数据,使用多尺度检测的方法都可以有效提升小目标的检测精度,这说明结合深度网络的低层和高层特征进行多尺度检测的方法确实可行;

2) 仅使用高分辨率图像作为训练数据的模型检测效果不佳,仅使用低分辨率图像作为训练数据的模型检测效果较好,而两者结合时性能折中,这说明直接使用网上获取的目标高分辨率图像训练是不行的,想要用这部分数据必须解决训练集和测试集之间存在的差异,即高分辨率目标和低分辨率目标的差异.

将7 225张测试图像的平均检测时间作为评估计算复杂度的指标,不同特征网络下所得的检测结果如表2所示:

Table 2 The Time of Detection 表2 检测时间 s

第1列表示模型使用的网络结构,之后每一列第1行表示采用哪一层的特征进行检测,All表示采用全部3个特征.为便于表格说明,VGG的conv1_2,conv2_2,conv5_3分别简写为conv1,conv2,conv5.

从表2中可以得出2个结论:

1) 在只利用一个特征检测的前提下,利用高层特征的平均检测时间少,这说明大的低层特征虽然适用于小目标检测,但会带来额外的计算开销;

2) 同时利用多个特征增加的计算开销仍然在可以接受的范围内,可以胜任实时性要求不高的任务.

通过对目标高分辨率图像进行下采样和上采样得到新的训练数据,用新数据训练出的模型检测精度如表3所示.表3中的字符含义与表1基本一致,训练数据HR后的2个后缀分别表示不同下采样和上采样的操作组合,第1个后缀M和A分别表示最大池化和平均池化2种下采样的方式,池化操作的窗口为2×2,滑动步长为2,第2个后缀A,L,N分别表示区域插值、线性插值和最近邻插值3种上采样的方式.

从表3中可以看出:

1) 只需要通过简单的下采样就可以大幅提升目标高分辨率图像训练出的模型精度,这说明下采样的方式可以从一定程度上消除目标高分辨率图像和目标低分辨率图像数据差异带来的影响;

2) 最大池化在这样一个问题背景下一般比平均池化效果好;

3) 在下采样的基础上使用线性插值上采样的方法可以略微提升模型的精度,目前还不能从理论上解释原因,但可能是因为这样增加了噪声,从一定程度上防止了过拟合;

4) 结合采样变换后的目标高分辨率图像和目标低分辨率图像训练出的模型检测精度较高,不但没有出现表1精度降低的情况,反而提升了精度,这说明对目标高分辨率图像进行采样变换确实可以消除目标高分辨率图像和目标低分辨率图像数据差异带来的影响.在小目标检测数据难以标记、缺少训练数据的情况下,可以通过这种方式简单、快速地增加训练数据量,提升检测精度.部分检测结果如图6所示.

Table3ThemAPofDetectionwithSampledTrainingData
表3训练数据采样后的检测精度%

NetworkHRLRLR+HR-M-LHR-MHR-M-AHR-M-LHR-M-NHR-AHR-A-AHR-A-LHR-A-NMS-ZF20.456.258.447.347.749.445.843.242.644.036.8MS-VGG1630.558.761.552.351.255.249.643.343.246.237.7

Note: First suffix—M: max pooling; A: average.

Second suffix—L: linear interpolation; N: nearest neighbor interpolation; A: area interpolation

Fig. 6 Partial detection results图6 部分检测结果

同样,为了说明对目标高分辨率图像进行采样变换可以消除目标高分辨率图像和目标低分辨率图像数据差异带来的影响,我们利用T-SNE[25]方法对采样操作前后目标的特征进行降维.

我们以实验效果最好的MS-VGG16结构进行验证.用目标低分辨率图像训练网络,再用目标低分辨率图像、目标高分辨率图像和采样操作后的目标高分辨率图像三者来测试.对ROI pooling层后得到的大小相同的特征向量用T-SNE方法降维.

可视化的结果如图7所示,紫色圆点代表低分辨率目标,蓝色十字代表高分辨率目标,红色叉代表采样后的高分辨率目标,可以看出采样操作后的特征分布确实比采样操作前的特征分布更接近目标低分辨率图像的特征分布.

Fig. 7 The distribution of different objects after sampling图7 不同目标采样后的分布

4 总结与展望

目标检测作为计算机视觉领域的一个基本任务一直受到许多科研人员的关注,目标检测方法的性能也直接关系到许多高层领域的研究.当前通用的目标检测方法在小目标检测上效果不佳,而专门为小目标检测设计的方法又不具有通用性,因而本文针对小目标检测问题进行研究.首先,我们根据卷积神经网络的特性,对Faster-RCNN进行改进,引入了多尺度检测,改进后的方法比原始Faster-RCNN的检测精度提升了约5%;然后,我们用下采样和上采样组合的方式变换网上获取的高分辨率图像,使高分辨率目标的特征分布更接近低分辨率目标,从而可以很方便地扩充训练数据集,解决了小目标数据难以标记的问题.

将来的工作可以从2个方面进行:现在的目标检测领域几乎都是深度学习的方法,虽然深度学习方法在提取图像特征方面的表现确实非常优秀,但是对于语义信息相对不是非常明显的小目标,我们也可以尝试研究一些非深度学习的方法;其次,当目标非常小时,目标检测就退化成了像素分类的问题,我们也可以尝试从像素分类的角度出发,研究分割的一些方法能以什么样的形式应用在小目标检测的问题上.

猜你喜欢
低分辨率高分辨率尺度
探讨高分辨率CT在肺部小结节诊断中的应用价值
财产的五大尺度和五重应对
基于边缘学习的低分辨率图像识别算法
高分辨率合成孔径雷达图像解译系统
树木的低分辨率三维模型资源创建实践
智能相架
宇宙的尺度
关于为“一带一路”提供高分辨率遥感星座的设想
高分辨率对地观测系统
9