李承昊,茹乐,何林远,迟文升
(1.空军工程大学 航空工程学院,西安710038; 2.空军工程大学 装备管理与无人机工程学院,西安710038;3.西安电子科技大学 机电工程学院,西安710126)
随着计算机科学和认知神经科学的不断发展,人们想要研发以及开发能够模拟、延伸和扩展人类智能的理论、方法、技术以及应用系统,自此人工智能这一技术科学诞生。模式识别、机器学习和深度学习等理论的不断完善和发展,使得计算机视觉在社会各种领域应用广泛,例如交通、医学、农业等领域都取得了明显的成果。随着计算机视觉领域的蓬勃发展,目标检测作为该领域一个重要任务,在人脸识别、行人跟踪、车牌识别和无人驾驶等领域获得广泛应用[1]。
在生活中,人们仅仅通过看一眼就可以在很短的时间内知道图像中的物体类别和位置甚至还能获得更为复杂的信息。快速而又准确的目标检测方法能够使机器扮演视觉处理的角色,从环境中发现目标、定位目标并分析目标,为计算机后续判读、推理并决策提供可靠保证[2]。随着深度学习的广泛应用,目标检测方法已经从传统的基于手动设计特征算法向基于深度学习计算机自动提取特征算法发展。目前目标检测方法一般被分为两大类:一类是基于一体化卷积神经网络的一步检测(One-stage),如YOLO[3]、SSD[4]等;另一类是以R-CNN[5]模型为基础的两步检测(Two-stage),以模型为基础对两步检测进行不断地改进,出现了一系列具有代表性的算法Fast R-CNN[6]、Faster RCNN[7]等。近年来,目标检测方法不断追求更好的特征提取网络、更高效的训练方法、更完善的分类方式和更有效的样本后处理,涌现出许多具有更好性能的算法如Cascade R-CNN[8]、Mask RCNN[9]和FPN[10]等。
人的视觉系统对于通过人眼接收到的图像是进行选择性处理,基于注意力机制(Attention Mechanism)的深度神经网络被广泛应用到各个领域。模型可以利用注意力机制通过训练不断提取更为有效的注意区域,从而提升模型的性能。文献[11]中提出了一种基于注意力引导机制的网络来克服大图像成像像素饱和度失调的问题;文献[12]提出了图注意网络利用掩蔽自注意层来提升模型的性能解决了许多理论问题;文献[13]提出了一种三步注意力引导卷积网络来对肺部医学图像进行分类进而提高了准确率。
受以上方法启发,本文提出了一种基于注意力机制的候选区域网络(RPN),运用注意力引导(AG)模块对Faster R-CNN[7]的RPN进行改进,并采用局部训练和全局训练相结合,独立地训练改进的RPN和整体地训练整个网络结构相结合,通过注意力机制不断降低分类和回归误差,提高了识别性能。同时本文根据改进的RPN网络引入一种置信度因子非极大值抑制(NMS)算法,虽然对于速度性能有小幅度的下降,但是对于模型的准确性有着显著的提高。本文在标准数据集MS COCO 2007[14]进行了综合实验,实验结果也证明该方法有着较好的准确性能。
本节主要对与本文工作最为相关的目标检测方法和深度学习算法进行分析。目标检测的目的是检测出图像中每一个目标的位置和类别。根据以往的经验,可变形组件模型及其改进算法一直是一个很好的解决办法。这些算法利用人工描述的特征,如HOG[15]和SIFT[16]等,来对整幅图像进行扫描获取大致目标区域。传统的目标检测方法利用滑动窗法来大致确定目标位置,虽然实现较为简单,但是这种几乎遍历的方法造成计算量较大,耗费时间多。随着深度学习的广泛应用,R-CNN[5]、Fast R-CNN[6]中的选择性搜索(Selective Search)算法通过采用边缘、显著性、形状等特征来寻找感兴趣区域,虽然相比滑动窗法有所改进但仍然不满足实际需求无法完成端到端的训练。Faster R-CNN[7]的RPN利用深度卷积神经网络提取的特征来寻找感兴趣的候选区域,能够真正地实现端到端的训练。从该系列算法的发展可以看出,改进主要围绕如何寻找更为有效的候选区域这一问题。
RPN是Faster R-CNN[7]中至关重要的一个环节,其输入是由深度卷积神经网络提取出的特征图,其输出是候选建议区域。整个网络的作用是寻找目标可能存在的区域并进行粗检测,同时由于RPN减小了计算冗余也大大地缩短了计算时间。网络通过输入的任意尺度图片的特征图,利用滑动窗口在卷积特征图上进行滑动获取多个锚。锚(Anchor)机制是RPN中比较重要的一个方法,是以得到的每个锚点的中心位置为基准,根据本文已经设定的9种不同的长宽比、不同的尺度对应映射得到锚框,再通过忽略超出边界的锚框来去掉多余重叠区域,至此本文就分别得到了感兴趣的原图区域和感兴趣的特征图区域(见图1)。两者正是依靠锚机制来相互联系。接下来就是对候选区域进行前景与背景的粗检测,RPN在此任务上分成2层进行处理:一层是soft-max分类层,输出是锚点所对应2个分类信息,背景的分数(不是目标)和前景的分数(是目标),识别锚框内是否含有目标;另一层是边框回归层,输出是锚框的4个位置信息(中心点的x和y,整个框的长度和高度)来定位候选区域的位置。至此,Fast R-CNN[6]通过独立的网络从特征图上获取一幅图像的候选区域并且已经对该区域进行了粗检测。由于RPN是独立的网络所以可以实现端到端的训练,可以通过反向传播算法对候选建议网络参数进行调优,同时增加了模型的可移植性。
NMS算法一直以来就是行之有效的后处理方式其实质是通过抑制非极大值数据来搜索局部极大值。目前在基于深度学习的目标检测领域NMS算法被广泛使用,它的目的是从目标产生的多个候选框选择最为合理的候选框。文献[17]提出了一种基于“抑制覆盖检测”和“重叠判据”的改进NMS算法在行人检测中降低误检概率;文献[18]提出了一种连续比例因子NMS,降低了算法对于固定阈值的依赖。
图1 锚点映射Fig.1 Anchor mapping
RPN的核心作用就是在提取图像特征的过程中来完成对于候选框的选择操作,RPN最大的优点也在此,减少了重复提取特征的过程。同时,由于RPN的存在Faster R-CNN[7]真正成为了能够实现端到端的目标检测框架。但是,RPN也存在这一些问题,仍然无法达到实时检测的目的,对于候选框的分类和回归计算量仍然很大。不同锚点所产生的锚框尺寸是相同因此缺乏多样性进而导致小目标检测效果不是很好。传统的NMS算法虽然计算速度较快,但是对于阈值依赖过大,容易造成误检和漏检。本文改进的RPN的锚框大小和尺寸不在固定并且能够更好地包围目标。同时基于传统NMS算法存在的问题,引入置信度因子减少了对于阈值的依赖性。通过实验发现本文提出的方法与现存一些先进算法相比具有很好的准确性能。
本文的目标检测系统是在Faster R-CNN[7]上进行改进的,改进的RPN网络主要包括两部分:一部分是AG模块,该模块运用注意力机制引导RPN搜寻更有效的锚框;另一部分是NMS算法的改进,通过引入置信度因子加强目标检测系统对已经获取的锚框进行有效的后处理。首先,对整体网络框架进行了简要分析;其次,介绍了AG模块的设计思想和特性;最后,对使用的基于置信度因子的NMS算法进行分析。
本文网络框架(见图2)是在 Faster RCNN[7]基础上进行改进,输入图像通过特征提取网络得到特征图,AG模块利用特征图对目标锚框的种类进行预先选择,利用AG模块提供的信息来指导RPN进行锚框的选择,在后端去除冗余的过程中,与传统的处理方式不同,引入了置信度因子的NMS(Cf-NMS)算法来去除多余锚框并保留有效锚框。其后生成候选框,后端网络与传统两步检测相同,进行池化和全卷积得出最终检测结果。
图2 网络框架Fig.2 Network framework
锚机制是今年以来比较流行的寻找目标位置的方法。具体来说就是将预定义的纵横比和大小的锚放置在特征图上,而其中锚框的尺度以及纵横比都是根据经验预先定义好的,本文的目的是为了寻找一种更高效的可学习的锚框的搜索方案。考虑到对于某个固定类别的目标其实其形状以及大小是类似的或者说是相关的。AG模块的工作原理如下:目标的形状和大小可以用2个参数来表征(s,r),s为目标的尺度大小,r为目标的纵横比。该模块的任务可以归结在已知图像特征图,来寻求目标的尺度大小以及纵横比,假设本文在一个给定图像上画出一个物体的大致区域,则可以考虑这个物体的区域其尺度大小和纵横比,以I为条件的分布则可以写为
式中:p(s,r|I)为输入图像I存在的目标尺度为s和纵横比为r的概率。
本文将对于目标区域的搜寻分别注意力集中在目标区域的大小以及纵横比,根据式(1)设计了对于锚框选择的AG模块如图3所示,同样预先定义几种可以选择的锚框的种类。假定一组尺度s1,s2,…,sn和一组纵横比r1,r2,…,rm,S和R分别对应尺度空间和纵横比空间,然后相互组合就会有n×m个可供选择的锚框形状。即AG模块的锚框选择空间A为
图3 注意力引导模块Fig.3 Attention guidance module
该模块由两部分组成,分别用于对目标区域的大小和纵横比进行预测。在特征图上锚点的选择仍然采取滑动窗口的方法,这样的选择能够更完备以及不遗漏地确定目标的中心点。对于锚框的选择具体来说,依据给定的特征映射也就是从特征提取网络获取的特征图I,该部分对于每个确定的中心点进行大小和纵横比的预测,生成对于每个锚点的几组优化组合。在本文的网络结构中,使用了2个子网络分别用于对目标区域大小和纵横比进行预测,利用特征图进行一次卷积后通过最大池化层进行再次降维,保留最强特征,再经过2次卷积后再利用反卷积,将反卷积与最大池化层相结合分别生成含有S和R单通道映射。在此,本文的结构与原算法中相比,不像原来锚的选择方法采用固定的穷举法对于形状的选择,因为对于目标的每个锚来说与它的形状是有一定的关系的。在实验中本文对于2种空间内种类,相互组合也就是说有25种可供选择的种类n,m=5,从中预测2类尺度大小和3类纵横比也就是说最后选择6种锚框对目标进行检测。
对于现阶段的目标检测系统,每个要识别的目标都有多个锚框,但是目标检测任务要求最终的结果是每个目标分类对应于一个框,因此需要对冗余的锚框进行去冗余。传统的NMS是一种贪心算法,将检测框的置信度分数从大到小排列,将分数最大的检测框作为抑制框(该算法认为分数最大的即为目标框),将其余的框与抑制框做交并比(Intersection over Union,IoU)运算,移除所有IoU值大于预设阈值T,重复上述运算再找到新的抑制框,直至没有锚框可以抑制为止。
式中:RIoU为交并比;G为由贪心方式选择出来的抑制框;C为待选择的目标框。
虽然在算法的第1步对于预选框进行根据置信度从大到小排列,但是对于检测框的移除并未考虑置信度,只是依据IoU与固定阈值进行对检测框的选择会造成错误检测。存在这样的2种情况:①当检测的2个目标相邻甚至有较大重叠时,如果仅仅依靠IoU作为条件判定会将存在目标的检测框移除造成漏检。②当目标的部分结构被检测框选中时,如果仅仅以IoU作为条件判定,由于目标部分结构较小所以IoU较小不会将该种目标框保留造成误检。
针对以上这种情况,本文在贪心NMS算法的基础上提出了一种Cf-NMS算法,将判定函数进行改进,引入置信度因子μ,改进抑制目标框的条件,优化锚框后处理方式进而提高检测的准确性。置信度因子μ是目标框与预选框的置信度分数之间的关系,当两者分数相近时,置信度因子通过降低改进的U函数来优化抑制条件。
式中:μi为检测框i的置信度因子;ci为检测框i的置信度分数;cm为抑制框的置信度分数。
本节先介绍利用所提改进方法对Faster RCNN[7]中的RPN进行改进,然后用改进的模型进行端到端的训练获得目标检测模型,最后对比验证模型的检测效果并分析。
对于本文所提出的框架为了使其能够完成端到端方式的训练,本文以多任务损失函数完成对其的优化。在传统的分类损失Lcls和回归损失Lreg的基础上,引入了尺度损失La和纵横比损失Lr2种附加损失。它们共同优化模型,损失公式为
式中:ω1和ω2为AG模型参数。
为了确定最佳锚框的选择,首先,将锚框的真实值相匹配,接下来从尺度空间和纵横比空间中预测最佳的参数来更好地覆盖真实目标。本文中锚点位置的选择与经典RPN相一致,对于与真实值的匹配不存在较大的问题,同时尺度空间和纵横比空间本质也是预定义的空间,所以可以直接将锚框分配给真实值的包围框,使该锚生成的框产生最大的IoU值。AG模块是对锚的选择进行引导并不是起决定性作用,对于损失函数的选择,La和Lr均采用smooth L1损失,分类损失和回归损失采用传统的损函数。
1)平台环境为:处理器为Intel(R)i7-8750H CPU@2.20 Hz 2.20 GHz,安装内存为8 GB,操作系统为Windows 64位,显卡为NVIDIA GeForce GTX 1050Ti 4 GB,实验框架为Caffe。
2)数据集:在经典的MS COCO 2007[14]数据集上进行实验。
3)实验细节:选择广泛使用的ImageNet[19]作为本文的主干网络。对于输入图像,为了保持尺度和纵横比,不对输入图像进行过多的预处理。对于尺度空间和纵横比空间分别设置为S={128,192,256,384,512}和R={0.5,0.8,1,1.2,2}。在Cf-NMS算法中,通过大量的试验性实验得到阈值选取0.6有着更好的效果,所以在模型的整体检测过程中阈值选择0.6。对于多任务损失函数设置AG模型参数ω1=0.5,ω2=0.1,在训练中总共训练了5 epoch,初始学习率设置为0.01。
4)评价指标:为获得更为全面有效的锚框选择,所以实验以平均查全率(AR)作为评价候选区域的好坏。在不同的RIoU(0.5~0.9)进行平均查全率的比较。AR100、AR300和AR500分别对应于每幅图像100、300和500个建议的平均查全率;ARS、ARM和ARL分别对应于小型、中型以及大型目标选取100幅图像计算的平均查全率。在进行改进的NMS算法和模型整体准确性性能的比较中,本文采用平均准确度(mAP)作为性能度量参数(下标的含义与AR相同)。
本文首先对改进的RPN与原RPN以及RPN的一些变体进行AR的比较。“RPN+AG”为引入AG 模块的改进RPN,“RPN +9 anchors”和“RPN+12 anchors”分别对应于RPN固定的9种和固定的12种锚框,其中的NMS算法仍为传统贪心NMS算法,按照此方式对本文改进的RPN进行平均查全率的评估。接下来,本文又对Cf-NMS算法与传统的贪心算法、抑制覆盖检测的NMS[17]和连续比例因子的NMS[18]在不同阈值下平均准确度的比较。最后,对本文提出的整体的目标检测模型与现有一些先进方法进行比较,如Cascade RCNN[8]、Mask R-CNN[9]和FPN[10]。
如表1所示,本文方法对于候选区域的平均查全率性能明显要优于传统RPN和固定种类的RPN。从中也可以发现,本文方法对于小目标会有更好的效果,分析其原因:传统的方法由于固定的锚框尺度和纵横比的限制对于小目标不能做到很好的识别。对于不同目标,锚框的选择不再同传统方法一样,不同目标有着同种类型的锚框选择,而是会生成更符合目标的锚框种类。同时可以发现,本文方法虽然在运行速度上有所增加,但仍在可接受的范围内。
从表2中可以得出,本文的Cf-NMS算法对于目标有着更好的准确率。当阈值等于0.6时,本文方法相比其他算法精度提升了约2%。当阈值大于0.6时,本文方法仍然具有较好的性能。原本检测框中被抑制的正样本由于阈值的增大被保留,降低了漏检,实现了较好的效果。通过实验本文也发现随着阈值的升高,检测准确度呈现先增加后降低的趋势,这是由于当阈值很低时,许多不含有目标的锚框没有被有效地抑制造成了准确度低的情况,当阈值很高时,正负样本的比例不均衡造成了准确率的降低。
检测结果示例和检测性能比较如图4和表3所示。在与上述3种先进算法的对比中可以发现,本文方法无论是在不同RIoU阈值下的准确度还是在平均准确度都有所提高。在小型、中型以及大型目标的测试中可以发现,虽然本文方法对于小型和中型目标的检测查准率与先进算法相比有着很好的提升,但是对于大型目标本文方法与Cascade R-CNN[8]相比,性能提升并没有达到预期的效果。
表1 候选区域的平均查全率Table 1 Average recall rate of region pr oposal
表2 不同NMS算法的mAP的实验结果Table 2 Experimental results of m AP by different NMS algorithms
图4 检测结果示例Fig.4 Sample of test results
表3 检测性能比较Table 3 Comparison of detection performance
1)本文提出了一种基于注意力引导的可变锚框RPN,其通过AG模块来预测目标的尺度和纵横比,来引导锚框的选择。与传统方法相比,不同目标的锚框不再是固定的种类。在与传统RPN和RPN一些变体比较实验中,所提方法也在平均查全率上有较好的提升。
2)所提方法在召回率方面比RPN高。针对传统的后处理方式贪心NMS算法出现的误检和漏检的问题,在抑制判别条件中引入了置信度因子,增加了算法的准确度。同时所提方法在平均查全率上相比于传统的RPN有所提高。
通过实验发现所提方法还是存在不足。虽然通过AG模块以及Cf-NMS算法来对模型进行改进,但是仍然受限于预定义的锚框选择空间集。下一步工作希望改进方法使RPN在寻找感兴趣区域算法方面不过分依赖于参数设定。