基于候选区域的目标检测算法检测精度较高,但检测速度较慢,无法达到实时检测的效果。针对这一问题,本文提出了一种新型的基于深度可分离卷积神经网络的目标检测方法。首先通过ResNet-101和深度可分离卷积层,提取目标的精简特征图,减少计算量,以提高检测速度;与此同时为了弥补提高检测速度带来的精度损失,提出采用关键点导向的策略,代替传统的回归方法,该策略利用全卷积神经网络对物体位置的敏感特性,有效保留物体的空间信息,使得算法对目标物体定位更精确。最后,为了提高算法对小目标物体的检测能力,使用PS-RoI Align方法代替传统的池化方法,在一定程度上提高算法对小目标物体的检测能力。实验结果表明,在COCO数据集上,该方法能够取得较好的检测效果。 Object detection algorithms based on regions proposals have higher detection accuracy, but the detection speed is slower, which cannot achieve the effect of real-time detection. Aiming at this problem, this paper proposes a new type of target detection method based on deep separable convolutional neural network. First, through ResNet-101 and a deep separable convolutional layer, a simplified feature map of the target is extracted to reduce the amount of calculation to increase the detection speed; at the same time, in order to compensate for the accuracy loss caused by the increased detection speed, a key-point-oriented strategy is proposed. Instead of the traditional regression method, this strategy uses the sensitivity of the full convolutional neural network to the position of the object, effectively retains the spatial information of the object, and makes the algorithm locate the target object more accurately. Finally, in order to improve the algorithm’s ability to detect small targets, the PS-RoI Align method is used instead of the traditional pooling method to improve the algorithm’s ability to detect small targets. Experimental results show that the method can achieve better detection results on the COCO dataset.
钟文鑫
浙江理工大学信息学院,浙江 杭州
收稿日期:2020年1月14日;录用日期:2020年1月28日;发布日期:2020年2月4日
基于候选区域的目标检测算法检测精度较高,但检测速度较慢,无法达到实时检测的效果。针对这一问题,本文提出了一种新型的基于深度可分离卷积神经网络的目标检测方法。首先通过ResNet-101和深度可分离卷积层,提取目标的精简特征图,减少计算量,以提高检测速度;与此同时为了弥补提高检测速度带来的精度损失,提出采用关键点导向的策略,代替传统的回归方法,该策略利用全卷积神经网络对物体位置的敏感特性,有效保留物体的空间信息,使得算法对目标物体定位更精确。最后,为了提高算法对小目标物体的检测能力,使用PS-RoI Align方法代替传统的池化方法,在一定程度上提高算法对小目标物体的检测能力。实验结果表明,在COCO数据集上,该方法能够取得较好的检测效果。
关键词 :目标检测,深度可分离卷积,全卷积神经网络,关键点
Copyright © 2020 by author(s) and Hans Publishers Inc.
This work is licensed under the Creative Commons Attribution International License (CC BY).
http://creativecommons.org/licenses/by/4.0/
近些年来,得益于卷积神经网络(CNN)技术的不断发展进步,越来越多的学者开始利用CNN来进行目标检测方法的研究,并且取得了长足的进步。当前基于CNN的目标检测方法主要分为两大类,一类是基于回归的目标检测方法,以YOLO [
基于候选区域的目标检测算法,以R-CNN为代表,R-CNN是第一个将CNN网络用于目标检测的算法,采用了传统的Selective Search [
本文致力于提高基于候选区域的目标检测算法的检测速度,提出了一种新的检测方法,采用了深度可分离卷积(deep separable convolution)来得到精简的特征图,极大地减小了计算量,提高了检测速度。但精简特征图也会带来检测精度的损失,因此还要进一步提高检测精度。Grid R-CNN [
本文是基于候选区域的目标检测方法,总体结构模型如图1所示,首先主干特征提取网络采用的是残差网络ResNet-101 [
图1. 本文框架
残差网络是由何凯明等人于2015年提出的一种卷积神经网络模型,曾在ILSVRC2015 [
残差网络的特点如图2所示,每两层增加一个跳跃连接。记输出为H(x)的话,H(x) = F(x) + x。x为恒等映射,F(x)为残差映射,这两种映射提供了两种选择方式,用于解决随着网络程度加深导致的模型准确率下降的问题。当模型的准确率已经达到最优的值时,残差映射F(x)将被置0,这时网络的输出只有恒等映射x,此后网络将保持最优状态,从而保证了网络的准确率不会因为网络深度的增加而降低。采用ResNet-101可以利用其网络深度高,提取丰富的特征信息。而深度可分离卷积层可以大幅度地降低特征图的维度,极大地减少计算量,降低内存占用,从而提高计算速度,同时又能保证准确性。
图2. 残差块示意图
Layer name | Output size | 101-layer |
---|---|---|
Conv1 | 112 × 112 | 7 × 7, 64, stride = 2 |
Conv2_x | 56 × 56 | 3 × 3 max pool, stride = 2 |
[ 1 × 1 , 64 3 × 3 , 64 1 × 1 , 256 ] × 3 | ||
Conv3_x | 28 × 28 | [ 1 × 1 , 128 3 × 3 , 128 1 × 1 , 512 ] × 4 |
Conv4_x | 14 × 14 | [ 1 × 1 , 256 3 × 3 , 256 1 × 1 , 1024 ] × 23 |
Conv5_x | 7 × 7 | [ 1 × 1 , 512 3 × 3 , 512 1 × 1 , 2048 ] × 3 |
表1. ResNet-101各个卷积层
深度可分离卷积是A G Howard等人在MobileNet [
而如果将上述的特征图输入深度可分离卷积层,它首先会使用一组通道数为1的滤波器,每次只与输入特征的一个通道进行卷积,所以这个过程中,滤波器的数量和输入特征图的通道数是相同的,由此输出的特征图,再使用1 × 1卷积核进行卷积,将最终输出的通道数变成一个指定的数量。深度卷积和逐点卷积的计算量分别为DK × DK × 1 × M × DF × DF和1 × 1 × N × M × DF × DF,所以深度可分离卷积的计算量为DK × DK × M × DF × DF + N × M × DF × DF,参数量为DK × DK × M + N × M,而标准卷积的计算量为DK × DK × M × N × DF × DF,参数量为DK × DK × M × N,所以标准卷积的计算量和深度可分离卷积的计算量对比为
D K ⋅ D K ⋅ M ⋅ D F ⋅ D F + N ⋅ M ⋅ D F ⋅ D F D K ⋅ D K ⋅ M ⋅ N ⋅ D F ⋅ D F = 1 N + 1 D K ⋅ D K (1)
参数量对比为
D K ⋅ D K ⋅ M + N ⋅ M D K ⋅ D K ⋅ M ⋅ N = 1 N + 1 D K ⋅ D K (2)
由此可知,相比于标准卷积过程,深度可分离卷积大大地减少了计算量和参数量,因此提高了整个系统的检测速度。
区域提取网络(RPN)的输入是主干网络Conv4 (见表1)输出的特征图,其输出是一系列目标物体的可能存在的区域(region proposals)和目标分类的概率得分值,此时并不输出目标的具体类别,而是输出目标物体分别属于前景和背景的概率值。为了生成候选区域(region proposals),我们在卷积得到的特征图(feature map)上滑动一个小的网络,这个特征图也就是RPN的输入,是最后一个共享卷积层的输出,也就是本文中Conv4的输出。本文中,使用的是3 × 3的卷积层,然后加上两个1 × 1的卷积层,得到的特征图分别输入两个平行的全连接层,分别进行分类和回归。
图3. 锚点示意图
锚点(图3):在每个滑动窗口位置,我们需要同时预测多个候选区域(region proposals),其中每个位置最大可能建议的数量表示为k,回归层的一个回归框需要的数据为(x,y),w,h,它们分别为回归框的角点的坐标,回归框的宽度和高度,那么总共需要4 k个输出。同理,分类层需要2 k个输出,因为需要估计每个区域(proposals)是否是目标物体的概率。锚点的位置是在滑动窗口中的,和候选框面积大小和纵横比相关。本文中,我们使用的纵横比有三种{1:2,1:1,2:1},面积种类有五种,分别是{322,642,1282,2562,5122},因此每个滑动窗口每次滑动产生15个锚点。对于W × H大小的特征图,锚点个数为W × H × 15。
本文中,使用PS-RoI Align来对齐特征图,而不用传统的池化方法。PS-RoI Pooling是RFCN中提出的,一般情况下,网络越深,其具有的平移不变性越强,这个性质对保证分类模型的鲁棒性具有积极意义。然而在检测问题中,对物体的定位任务要求模型对位置信息具有良好的感知能力,过度的平移旋转不变性会削弱这一性能。研究表明,对于较深的卷积神经网络(Inception [
本文方法的整体框架如图1所示。在R-CNN之后出现的目标检测方法,都是在R-CNN上进行改进的。比如,在COCO数据集上检测精度非常高的Faster R-CNN网络,它的R-CNN子网络采用的是两个非常大的全连接层,来作为分类器,这样一来,当候选区域的数量比较庞大的时候,该网络的计算量也是巨大的。当Faster,Zeming Li等人提出的Light-Head R-CNN [
传统的基于深度学习的目标检测方法中,通常使用一些全连接层作为一个回归器,得到左上角点的坐标(x,y)和width (宽度),height (高度)四个值,来进一步预测出目标物体位置的边框。然而,我们采用的是一个全卷积网络来预测一些关键点的位置,然后利用这些点来确定精确的目标物体的候选框。我们设计了一种3×3的网格形式,与目标物体的候选框相对应。如图4所示是一个3 × 3的网格的例子,总共9个点,分别是四个角点,四条边的中点和中心点。将由RPN提取到的候选区域ROI的特征,输入到PS-ROI Align中,PS-RoI Align大小固定为14 × 14,生成分辨率为14 × 14的特征图,对生成的特征图进行连续的八个3 × 3膨胀卷积(针对大接收野的)。然后连接两个连续的2 × 反卷积层,所以每个候选区域(region proposal)生成分辨率为56 × 56的热图(heatmap)。在每个heatmap上,我们使用了像素级的sigmoid函数,以便得到最终的输出概率图。每一个heatmap都有一个相应的监督图,以每5个十字交叉形状的像素点都会标记为目标点的位置。本文使用了二进制交叉熵损失函数来对结果进行优化,在检测中选取每个heatmap中最大值点作为相应的关键点。
图4. 3 × 3关键点定位示例
由于生成的9个关键点都位于heatmap之中,所以为了对目标进行定位,就必须将这些点映射回原图像中,如图5所示:
图5. 关键点映射图
图5中最大的矩形框表示输入图像,蓝色的框表示候选区域,下边的矩形框表示相应的heatmap,heatmap中的红色的点表示heatmap中值最大的点(Hx,Hy),点(Ix,Iy)表示该最大值点映射回原图像中的原始点,(Px, Py)表示候选区域的左上角坐标点。将heatmap中的最大值点映射回原图中,公式如式(3)所示。
I x = P x + H x ω o ω p I y = P y + Hy h o h p (3)
其中(Px,Py)是输入图片中候选区域的左上角的点的位置,ωp和hp分别是候选区域的宽度和高度,ωo和ho分别是输出的heatmap的宽度和高度。通过式(3),将这9个关键点从heatmap映射回了原图中,接下来就要根据这些点确定目标物体的坐标框。将物体候选框四条边的坐标记为B = (xl,yu,xr,yb),分别表示左、上、右、下四条边。将第j个点的坐标记为gj = (xj,yj),该点在heatmap中的概率值记为pj。定义Ei为第i条边上的点的索引集合,如点gj = (xj,yj)位于候选框的第i条边上,那么j∈Ei。如图6所示。
图6. 回归框的预测
根据图6,我们采用了加权求和的方式,来求坐标B。例如,以最左边的边界xl为例,选择最左边的三个点的坐标,并计算它们三个点的x坐标的加权和,权重就是相应的各点在heatmap中的概率值pj。计算公式如式(4)所示。
x l = 1 N ∑ j ∈ E 1 x j p j , y u = 1 N ∑ j ∈ E 2 y j p j x r = 1 N ∑ j ∈ E 3 x j p j , y b = 1 N ∑ j ∈ E 4 y j p j (4)
特征融合:如果仅仅按照上文所描述的方法对目标物体进行定位的话,还存在一定的问题。由于上文的方法只利用了一个heatmap来生成一个点,在这种情况下,如果某个点存在背景区域,那么该区域获得的信息是不足以精确地定位目标物体的边界位置的,这样就需要融合周边的点对应的heatmap来对其进行校正。融合方法如图7所示。
图7. 关键点之间的特征融合
如图7所示,以左上角的点为例,假设其对应的heatmap为Fi,和左上角的点距离为一个单位的点称为源点,源点构成的集合设为Si,假设某个源点的heatmap为Fj,对Fj进行连续三次的卷积运算,卷积核大小为5 × 5,得到 F ′ j ,然后将源点集合中,所有的源点对应的heatmap进行上述运算之后,与Fi相加得到融合后的 F ′ j ,如图7(a)所示,有两个点与目标点进行了特征融合,这是距离为一个单位长度的特征融合情况,称为一阶融合。进行完一阶融合后,还需要进行二阶融合,如图7(b)所示,对距离目标点两个单位长度的点进行特征融合。融合的公式如式3所示。
F ′ j = F i + ∑ j ∈ S i T j → i ( F j ) (5)
Tj→i是表示将源点的heatmap进行三次5 × 5卷积操作的函数。这样一来,经过两次融合之后得到的heatmap,再通过上述的点的定位方法,确定关键点的精确位置,生成对应的边界框,从而提高边界框的定位精度。
区域拓展:上文的方法还不能完全实现对点的准确定位,因为上文没有考虑到一种情况,就是有一些候选区域覆盖的区域比较小,其可能存在和ground truth (真值框)的重合度较小的情况。如图8所示。
图8. 扩展区域映射图
如图8所示,白色框为候选区域,绿色框为ground truth区域,这种情况下,只有左边的中点和中心点是在proposal中的,这会导致在这些关键点的训练中,会缺少这些点的标签,难以对其进行有效地监督训练,导致训练样本的利用率降低。而在预测阶段,如果只是简单地选择heatmap中的最大值点,出现如图8的情况,将不能预测位于候选区域之外的那些点的正确位置。为了解决这个问题,采用了以下的解决方案。本文采用了扩展heatmap区域的方法,具体来说,即不改变候选区域的范围,仍然从原来的proposal提取特征,但是在将输出的heatmap的区域映射回到原始图像时,映射到一个更大的区域,如图8的虚线部分。映射公式如式(6)所示。
I ′ x = P x + H x ω o ω p + ( H x ω o − 1 2 ) ω p I ′ y = P y + H y h o h p + ( H y h o − 1 2 ) h p (6)
新的映射关系是在原来的映射关系上添加了一个修正项,这样一来,当heatmap中选择的点在左侧时,映射回原始图像的点会向左移动,在右侧是向右移动,在y方向也是同样的映射关系。通过映射的修正,就解决了proposal与ground truth重合过少难以训练的问题,又避免了因扩大proposal带来的背景特征混入的问题。这样的话,proposal中所有的关键点(与ground truth的重叠IoU大于0.5的区域)都将被相应区域的heatmap覆盖。
实验的硬件配置为:CPU:Intel(R) Core(TM) i7-4790K CPU@ 4.00GHz;运行内存:32G显卡:Nvidia Geforce GTX1070。
网络环境及配置:实验的所有模型都在Ubuntu16.04环境下完成,使用开源框架Pytorch实验,CUDA版本为8.0,使用Python3.6进行编程实现。
实验数据集以及实现过程:为了评估本算法的检测性能,本实验采用了COCO [
评价指标:mAP (Mean Average Precision)和检测速度FPS (Frame Per Second)。AP是判断检测器检测每一类目标性能的标准,而mAP则多用来评价多目标检测条件下检测器的平均检测精度,其大小为AP值得平均值,以此作为目标检测中衡量检测精度的指标。在同一个公共数据集上计算不同的检测算法的mAP值,可以分析出检测算法的性能,具体计算公式如下
AP = ∫ 0 1 p ( r ) d r mAP = ∑ i = 1 C AP ( i ) C (7)
式中,AP代表PR围成的面积,p(r)是PR曲线,mAP是对AP进行加权平均。C = 20,代表20类检测目标。
仅仅依靠检测精度对一个目标检测网络模型进行评估,显然是不够的。因此,本文的另一个重要参考指标是检测速度。评估速度的常用指标是帧率(Frame Per Second, FPS),通过模型每秒处理的图片数量来判定模型检测性能的好坏。只有在保证了检测精度的同时还能兼顾检测速度,才能说明目标检测模型的性能优劣。
由于通常评价目标检测算法的性能,主要是从检测精度和检测速度这两方面来进行评估的,因此,我们针对本算法的检测精度和检测速度分别与其他的经典目标检测算法做了对比。
1) 检测精度对比
如表2所示,为在COCO测试集上,本算法与其他一些经典算法的检测精度对比。
表2中,mAP表示IoU在[0.5:0.95]之间的平均精度,APS,APM,APL分别为各个算法对小目标,中等目标和大目标的检测精度。由表2可知,本文的算法的mAP与表中次优的Grid R-CNN相当,在不同大小的物体检测方面也有小幅度的提升。得益于本文采用的PS-RoI Align和关键点导向的策略,提升了本算法的目标检测精度。
模型 | 主干网络 | mAP@[0.5:0.95] | APS | APM | APL |
---|---|---|---|---|---|
R-FCN [ | ResNet-101 | 32.1 | 12.8 | 32.2 | 47.4 |
Faster R-CNN [ | ResNet-101 | 30.3 | 9.9 | 32.2 | 47.4 |
Mask R-CNN [ | ResNet-101 | 38.2 | 20.1 | 41.1 | 50.2 |
Light-head R-CNN [ | ResNet-101 | 39.5 | 21.8 | 43.0 | 50.7 |
Grid R-CNN [ | ResNet-101 | 41.5 | 23.3 | 44.9 | 53.1 |
Deformable [ | ResNet-101 | 34.5 | 14.0 | 37.7 | 50.3 |
RetinaNet [ | ResNet-101 | 37.8 | 20.2 | 41.1 | 49.2 |
FPN [ | ResNet-101 | 36.2 | 18.2 | 39.0 | 48.2 |
本文方法 | ResNet-101 | 41.9 | 24.1 | 45.3 | 53.7 |
表2. 本文与其它经典算法的检测精度对比
2) 检测速度对比
模型 | 主干网络 | 检测速度(fps) | mAP@[0.5:0.95] |
---|---|---|---|
YOLOv2 [ | Darknet-19 | 40 | 21.6 |
YOLOv3 [ | Darknet-53 | 78 | 28.2 |
SSD [ | ResNet-101 | 16 | 28.0 |
R-FCN [ | ResNet-101 | 11 | 29.9 |
Light-head R-CNN [ | ResNet-101 | 95 | 39.5 |
DSSD [ | ResNet-101 | 8 | 28.2 |
本文算法 | ResNet-101 | 43 | 41.9 |
表3. 本文算法与其它算法的检测速度对比
我们将本文算法和其他一些检测速度较高的目标检测算法在COCO测试集上进行了对比实验,表3中,检测速度fps为帧每秒,由表3可知,本文算法的检测速度与YOLOv2相当,低于YOLOv3和Light-head R-CNN,但是检测速度也很快。而且检测精度mAP是高于其它的目标检测算法的。
本文提出了一种新型的基于卷积神经网络的目标检测方法,在现在的双阶段目标检测方法中,发现各种其他检测模型的优势,利用ResNet-101和Deep separable convolution来提取图片特征,大大地降低了提取到的特征图维度,减少了计算量。池化层选择PS-ROI Align,提高了检测性能,以及对小目标的检测能力,同时为了提高检测精度,我们采用了关键点导向的方法来替代传统的回归框方法来对目标物体进行定位。在未来的工作中,我们将继续优化网络模型,从而进一步提高目标检测的精度和检测速度。
钟文鑫. 基于卷积神经网络的目标检测方法 Object Detection Based on Convolutional Neural Network[J]. 软件工程与应用, 2020, 09(01): 36-48. https://doi.org/10.12677/SEA.2020.91005