王 梅,李东旭,陈琳琳,范思萌,许传海,杨二龙
(1.东北石油大学计算机与信息技术学院,黑龙江 大庆 163318;2东北石油大学石油工程学院,黑龙江 大庆 163318)
大数据的蓬勃发展,推动了无人驾驶、图像搜索以及室内检测等检测领域的快速发展[1 - 5]。但是,大数据也给检测领域带来了新的挑战,其中包括室内人员的目标检测。在室内人员的检测中数据常常会存在姿态、背景和遮挡等不确定性问题,这些都会对检测精度产生巨大影响,因此提高目标检测精度一直受到极大的关注[6 - 10]。
Figure 1 Mask RCNN structure图1 Mask RCNN结构
目标检测主要分为2种,一种是单阶段检测方法,其检测速度快,但是检测精度不高,主要有YOLO(You Only Look Once)[11]、SSD(Single Shot MultiBox Detector)[12]、CornerNet[13]和ExtremeNet[14]等方法;另一种是两阶段检测方法,主要是通过区域建议网络RPN(Region Proposal Network)生成候选目标,再对目标进行识别及定位,主要有RCNN[15]、Fast RCNN[16]和Faster RCNN[17]等方法。为满足实际分割需求,He等人[18]通过在Faster RCNN基础上添加实例分割分支和ROI Align,提出了Mask RCNN算法。
Mask RCNN算法使用非极大值抑制NMS(Non-Maximum Suppression)算法进行候选框滤除,其思想是“非黑即白”,只选取分类目标得分最高的候选框,因为阈值固定不变,一定程度上提高了目标在高度重叠时被漏检的风险。在此基础上,soft-NMS算法[19]采用“权值惩罚”来解决该问题,但soft-NMS算法会增加候选框数量,从而出现了同一目标被重复检测的新问题。通常,研究人员通过多次实验选取最优结果的固定阈值,但阈值过大,容易出现目标漏检问题;阈值过小,又容易出现重复检测问题。
针对以上问题,本文基于自适应阈值-非极大值抑制AT-NMS(Adaptive Threshold Non- Maximum Suppression)算法提出了Mask RCNNAT-NMS算法。本文主要工作如下:(1)针对目标特征提取问题,在Mask RCNN中加入可变形卷积增强目标特征提取能力;(2)在NMS阈值设定时,利用区间离散二阶差分方程计算合理阈值,降低漏检概率。
Mask RCNN是基于候选区域的目标检测算法,如图1所示,首先通过ResNet(Residual Network)[20]对图像进行特征提取并通过全卷积网络构成特征金字塔网络FPN(Feature Pyramid Network);然后通过RPN对提取到的卷积特征生成候选区域;最后利用Mask RCNN的3个分支对目标进行识别与分割,其中2个分支分别是全连接层(进行分类)和边框(回归),另一个分支经过全卷积网络进行上采样得到分割图像。
Mask RCNN定义一个如式(1)所示的多任务的损失函数:
L=Lcls+Lreg+Lmask
(1)
其中,Lcls是RPN网络中分类损失,采用的是二分类交叉熵损失,如式(2)所示:
(2)
Lreg是RPN边界框回归计算的正则化L1损失,如式(3)所示:
(3)
Lmask是采用对预测掩膜(mask)的每个像素点求Sigmoid函数均值,定义为平均二值交叉熵损失函数,如式(4)所示,此函数仅在第k个类别上有定义,其它的k个mask输出对损失没有贡献:
(4)
RPN网络是Mask RCNN中至关重要的一部分,RPN的关键在于锚点机制,如图2所示。首先用滑动窗口在特征图像上进行遍历,以锚点为中心选定9种锚箱,其中滑窗滑动一次会预测k个区域建议,回归层需要预测出锚箱的宽、高和中心坐标,分类层需要区分是前景还是背景的概率,因此回归层需要输出4k个坐标,分类层需要输出2k个得分。
Figure 2 RPN anchor mechanism图2 RPN锚点机制
RPN网络可以针对生成检测建议框的任务进行端到端的训练,同时预测出图像中每个目标的类别分数和边界。RPN中采用smoothL1损失函数,相比L1损失函数在离群点、异常值不敏感等问题上有更好的表现,并且鲁棒性更好,在训练的过程中比较稳定。其中损失函数smoothL1如式(5)所示:
(5)
Figure 3 Improved Mask RCNN图3 改进后的 Mask RCNN
改进的Mask RCNN的结构如图3所示,在原始网络的ResNet阶段中加入可变形卷积核[21],在原有卷积核的基础上增加了模块对空间采样的位置信息,在RPN阶段加入自适应阈值-非极大值抑制算法计算合理阈值;然后经过ROI Align 2次量化处理;最后经过Mask branch、Box regression和classification 3个分支得到最后结果。
本文算法中,可变形卷积模块以大小为3*3的卷积核为例,标准的方块卷积核落在图像上表示为M,用于该区域的特征提取。区域M可以表示为:
M={(-1,-1),(-1,0),…,(0,1),(1,1)}
(6)
对于在输出结果Y上的每个位置z0,通过式(7)进行计算:
(7)
其中,x()表示输入特征映射,w()表示采样点的权重,zi是特征图上点的位置,Δzi是zi的偏移变量。可变形卷积可以根据图像中物体的形状特征进行自适应调整,可以灵活地提取不同的形态特征。
由于采样在不规则区域中进行,会导致偏离层特征点位置不连续,因此采用双线性插值的方法把任意的输出转化为连续的。对式(7)使用双线性插值得到式(8):
(8)
其中,G(·,·)是双线性插值函数,p表示离散的采样点,q表示双线性插值之后的连续点集。
3.3.1 算法流程
在目标检测中采用NMS算法选取候选框,并计算出该候选框的最终得分sf,如式(9)所示:
(9)
其中,si为候选框的原始得分,C为得分最高的候选框,bi为待检测框,UIOU(C,bi)为待检测框bi和C的交并比,Nt为固定阈值。
本文针对Nt提出Mask RCNNAT-NMS算法,计算最终得分sf,如式(10)所示:
(10)
其中,NAT是将每个目标的置信度最高得分进行归一化后作为区间数,然后使用二阶差分公式计算出的阈值,其中区间数定义如下:
k=2,3,…,n-1
(11)
即在此时设定的阈值,使得目标置信度得分区别较大,可以在一定程度上减少目标漏检和重复检测。
3.3.2 收敛性分析
Mask RCNNAT-NMS是在Mask RCNN算法的基础上采用离散二阶差分计算阈值,因此在Mask RCNN停止时算法终止,只需证明Mask RCNN的收敛性。
Lcls和Lreg分别是分类损失和边框回归损失,其中分类损失采用的是二分类交叉熵损失,回归损失采用smoothL1损失。Lmask是采用平均二值交叉熵损失,已知3个损失是可以收敛的,本文不再证明。因此,本文算法也是收敛的。
综合上述对Mask RCNNAT-NMS算法关键部分的描述,本文算法的具体检测步骤如算法1所示。
算法1一种基于AT-NMS的Mask RCNN改进算法Mask RCNNAT-NMS
输入:图像数据。
输出:带有类标签、掩膜和目标边框的图像数据。
步骤1通过加入可变形卷积的ResNet网络提取特征,得到输入图像的特征图;
步骤2在RPN网络中使用AT-NMS算法获取特征图的建议信息;
步骤3将建议信息的深层信息映射回特征图;
步骤4采用ROI Align对特征图上不同大小的建议信息进行量化处理,以固定到一个统一的大小;
步骤5通过Mask branch中的全卷积网络输出实例分割图像;
步骤6通过全连接层输出目标的类标签和目标位置信息。
本文实验数据集采用PASCAL-VOC2012[23]和Indoor CVPR_09[24]。PASCAL-VOC2012数据集包含了拥有标签的trainval(11 540幅图像)和没有标签的test(10 991幅图像),提取数据集中10 000幅不同的person图像。随机抽取8 000幅图像作为训练集,1 000幅图像作为验证集,1 000幅图像作为测试集。Indoor CVPR_09数据集包含67个室内类别,总共15 620幅图像,挑选出带有people的图像4 000幅,随机抽取2 500幅图像作为训练集,500幅图像作为验证集,1 000幅图像作为测试集,在对应的测试集上进行实验结果测试,使用精确度、目标漏检率和重复检测率作为性能评测指标。本实验所用框架为Keras和TensorFlow,处理器为AMD R5 2600,内存32 GB,显卡为NVIDIA 1080Ti。
本文选取目标检测中重要的评价指标之一精确度P,其主要表示正确识别目标个数与总识别目标个数之比,其计算公式如式(12)所示:
(12)
其中,XTP是正确识别目标的个数,XNP是识别目标个数总和。
为了对比Mask RCNNAT-NMS在目标重复检测和漏检等问题上的可靠性,另外选择重复检测率和目标漏检率作为衡量标准,其计算公式如式(13)和式(14)所示:
(13)
(14)
其中,Rt表示重复检测次数总和,Rr表示重复检测率,Cer为目标漏检概率,Ce为漏检目标总和。
为验证Mask RCNNAT-NMS的检测性能,在数据集PASCAL-VOC2012和Indoor CVPR_09中选取生活的场景图进行实验,将Mask RCNNAT-NMS算法的检测结果与Mask RCNN算法的检测结果进行对比。本文进行了大量实验,并随机选取实验结果图像进行对比,选取的实验结果如图4和图5所示。
由图4可知,在图4a中包含8个目标,Mask RCNN算法只检测出5个目标,左侧目标、右上侧目标和右侧目标因遮挡而漏检;Mask RCNNAT-NMS算法检测出6个目标,左上侧漏检1个目标,右侧漏检1个目标。在图4d中包含10个目标,MaskRCNN算法检测出9个目标,左下角的1个目标漏检,右下角漏检1个目标,右下角重复检测1个目标;Mask RCNNAT-NMS算法检测出10个目标,无漏检。
由图5可知,在图5a中包含5个检测目标,Mask RCNN算法检测出6个目标,重复检测1个目标;Mask RCNNAT-NMS算法检测出5个目标,无重复,其中Mask RCNNAT-NMS算法检测精确度相对Mask RCNN有所提升。在图5d中包含12个目标,Mask RCNN算法左侧漏检1个目标,共检测出11个目标;Mask RCNNAT-NMS算法左侧漏检1个目标,共检测出11个目标。
为了进一步分析算法的性能,在PASCAL-VOC2012和Indoor CVPR_09 2个数据集上分别对Mask RCNN和Mask RCNNAT-NMS进行多次实验,并对结果进行分析其目标漏检率和重复检测率如表1和表2所示,检测精确度如表3所示。
Figure 4 Comparison of experiment results between Mask RCNNAT-NMS and Mask RCNN on the Indoor CVPR_09 dataset图4 Mask RCNNAT-NMS与Mask RCNN在Indoor CVPR_09数据集上的实验结果对比
Figure 5 Comparison of experiment results between Mask RCNNAT-NMS and Mask RCNN on the PASCAL-VOC2012 dataset图5 Mask RCNNAT-NMS与Mask RCNN在PASCAL-VOC2012数据集上的实验结果对比
Table 1 Comparison of detection results between Mask RCNNAT-NMS and Mask RCNN on the PASCAL-VOC2012 dataset
由表1可知,在PASCAL-VOC2012数据集上,Mask RCNNAT-NMS算法的重复检测率为8.7%,漏检率为7.3%;Mask RCNN算法的重复检测率为10.2%,漏检率为8.5%。相比于Mask RCNN算法,Mask RCNNAT-NMS算法的重复检测率降低了1.5%,漏检率降低了1.2%。
Table 2 Comparison of detection results between Mask RCNNAT-NMS and Mask RCNN on the Indoor CVPR_09 dataset
由表2可知,在 Indoor CVPR_09 数据集上,Mask RCNNAT-NMS算法的重复检测率为11.9%,漏检率为9.3%;Mask RCNN算法的重复检测率为12.7%,漏检率为10.4%。相比于Mask RCNN算法,Mask RCNNAT-NMS算法重复检测率降低了1.2%,漏检率降低了1.1%。
Table 3 Comparison of detection accuracy between Mask RCNNAT-NMS and Mask RCNN on different datasets
由表3可知,在PASCAL-VOC2012数据集上,Mask RCNN选取阈值为AP50的检测精确度是78.8%,Mask RCNNAT-NMS的检测精确度是80.2%,精确度提升1.4%。在Indoor CVPR_09数据集上,Mask RCNN选取阈值为AP50的检测精确度是80.6%,Mask RCNNAT-NMS算法的检测精确度是81.1%,精确度提升0.5%。
综上所述,在多种场景的室内人员检测中出现人员重叠、遮挡时,本文提出的Mask RCNNAT-NMS算法都比Mask RCNN算法的检测效果好。具体如下:
(1)本文算法能够在一定程度上检测出2个目标叠加而导致的漏检目标;
(2)对同样的目标,本文算法的检测精确度更高。
本文提出了一种基于AT-NMS的Mask RCNN改进算法Mask RCNNAT-NMS,根据自适应调整阈值的方法有效地平衡因固定阈值带来的目标漏检和目标重复检测问题。在PASCAL-VOC2012数据集和Indoor CVPR_09数据集上,将本文算法与Mask RCNN算法进行了对比分析,相比于Mask RCNN算法,在2个数据集上,本文算法重复检测率分别降低了1.5%和1.2%,目标漏检率分别降低了1.2%和1.1%,精确度提升了1.4%和0.5%。实验结果表明,本文算法能在一定程度上降低目标漏检和重复检测概率,并在检测精确度上也有着良好表现。但是,在测试的过程中发现,目标实例的边缘、轮廓等方面的分割精度并不是很好,仍然存在较大的误差,这也是接下来的工作中需要解决的问题。