李 靓,贺柏根,霍家道
(江苏自动化研究所,江苏 连云港 222061)
遥感图像的目标检测,是军事领域的重要研究方向之一。如无人机、无人艇等具有光电传感系统的很多设备都涉及图像的目标检测技术。但目前,这种涉及目标检测技术并且需要识别定位的设备大多数都还采用的是“人在回路中”的控制模式。“人在回路中”的控制模式是指操作员在经过第一次指令输入后,仍有机会进行第二次或不间断的指令更正,即通过人为操作更改对目标的定位和检测识别。这种方式虽能够很好地进行目标检测,但仍然存在着一些缺陷:操作员精力消耗大,工作强度大;且对于经验性操作,有经验的操作员的准确性更高;不同的操作人员在相同情境下判断方法会影响判断的结果;在连续场景,尤其是背景复杂或者同一场景多个目标的情况下,操作人员容易漏掉目标或做出误判。
因此,自动目标检测是一个非常值得研究的方向。在传统的自动目标检测中通常采用复杂的人工特征提取方法,比如说:尺度不变特征转换[1](Scale-invariant Feature Transform, SIFT)、方向梯度直方图[2](Histogram of Gradient, HoG)等,来获取原始输入中和目标有关的表达信息,并在提取的和目标有关的特征信息上学习分类器[3]。这些基于人工特征提取方法的检测识别模型对于不同的目标任务,甚至是同一目标的不同种形态,都需要仔细思考如何更好地提取目标特征。此外在提取特征时,丢失的有用信息也无法从分类训练中再次复原。因此,总体来说,传统的方法识别率并不太理想,而且耗时较长,时间的利用率较低,并且图像中背景的多样化以及复杂性会对目标产生干扰、不同的视角变化也会为目标识别带来一定的挑战。
近年来,目标检测技术有了新的进展,卷积神经网络很好地应用于目标检测。从2012年,Krizhevsky[4]等提出的AlexNet在大型图像数据库ImageNet[5]的图像分类竞赛中夺冠之后,各种深度学习检测算法相继被提出。目标检测算法包括One-stage和Two-stage两种。Two-stage方法主要的算法是RCNN系列。目前R-CNN框架已经发展了几代,从R-CNN到Fast R-CNN[6]到Faster R-CNN[7],图像检测的速度在保证正确率的情况下一直提高;从Faster R-CNN到Mask R-CNN[8],则基于像素级为目标检测算法开启新的研究方向,不仅能够用物体框标出物体的位置,还能基于像素级描出物体的边界轮廓。其中基于Faster R-CNN+Resnet的检测网络模型在VOC+COCO数据集上飞行器单类的检测准确率能达到92.1%。由于遥感图像中的目标数量无规律、目标可能过小或密集等原因,Faster R-CNN检测模型不一定能发挥与实验理论相当的效果。
因此本文将通过研究Faster R-CNN算法以及其相关优化算法FPN进行遥感图像飞行器的检测,为军事任务中的图像检测提供新的更为简洁的研究方向。
Faster R-CNN算法由两大模块组成:RPN候选框提取模块以及Fast R-CNN目标检测模块,通过共享卷积特征的方式将RPN和Fast R-CNN统一到一个网络中,解决了提取Region Proposals过程中消耗大量时间的问题。
Fast R-CNN网络关键的技术在于ROI池化层和输出部分的多任务损失函数。
1) ROI池化层
2) 多任务损失函数
多任务损失函数将目标分类损失和目标框回归损失整合在一起,提高了整个网络的分类性能[12],多任务损失函数的定义如下:
L(p,u,tu,v)=Lcls(p,u)+λ[u≥1]Lloc(tu,v)
(1)
式中,u表示候选框所对应的目标的真实类别,[u≥1]表示,当u大于等于1时,取1,否则取0。p为输出类别u对应的概率;Lcls(p,u)为分类损失,定义如下:
Lcls(p,u)=-lnpu
(2)
(3)
式中,SL1为SmoothL1Loss,定义如下:
(4)
RPN网络是一个全卷积网络用来提取候选框,它将任意大小的图像作为输入,输出的是一系列矩形的目标候选框,并且每一个候选框都有相对应的得分。RPN网络基本流程:先将通过共享卷积层得到的特征图输入至卷积网络;再用滑动窗口在特征图上滑动,每个滑窗的位置通过卷积层映射出一个低维的特征向量,并且为每个滑窗的位置考虑k个anchor boxes(对于一个W*H的特征图,就会产生W*H*k个Region Proposals);再将低维的特征向量输入两个并行的卷积层:一个对候选框进行回归修正位置(保存对原有位置的四个偏移量:4*k),另一个对候选区域的前景背景打分(2*k)。
RPN的目标函数是分类和回归损失的和,分类中采用的是SoftMax分类,回归中采用的是Smooth_L1_Loss。RPN的总体损失函数定义为:
(5)
(6)
(7)
Faster R-CNN网络的改进之处在于提出了RPN网络代替原有的Selective Search算法提取Region Proposals,并对两个网络的卷积层进行特征共享。这两个改进使得Faster R-CNN相较于Fast R-CNN生成的候选框质量更好,速度更快,精度也更高。Faster R-CNN的算法流程如图1所示。
图1 Faster R-CNN 流程图
Faster R-CNN的具体流程:
1)将任意大小的图像输入Fast R-CNN网络,经过CNN网络向前传播进行特征提取,将得到的特征分别输入给RPN网络和Fast R-CNN网络的后续卷积层;
2)特征图输入给RPN网络后,得到候选框以及候选框相应的scores,并采用NMS算法对scores进行筛选将得分高的前N个候选框输入ROI pooling层;
3)特征图输入Fast R-CNN网络的后续卷积层后,得到高维的特征图,得到的高维特征图会与经RPN网络得到的Region Proposals一起输入RoI Pooling层中,进行特征映射;
4)后续与Fast R-CNN相同,通过全连接层得到两个输出,一个使用Softmax多分类做目标识别得到目标的类别,另一个是进行回归模型对目标边框进行位置和大小的调整得到回归后的bounding box。
在Faster R-CNN网络结构中,仅使用特征提取层的最后一层卷积层提取的特征信息来预测目标的检测结果,相应的文献结果表明Faster R-CNN的检测结果不错,但是在小目标的提取上还存在着缺陷,小目标的检测也是目前目标检测技术中需要攻克的难点。而遥感图像中目标的特点就有背景信息过多,并存在数目较多且相邻过近的小目标等。
对于卷积神经网络提取的特征信息来说,包含的信息会随着卷积层的深度而改变,低层卷积层提取的特征信息包含了底层的细节特征,高层的卷积层提取的特征信息包含了高层的语义特征。由于遥感图像中存在数目较多且相邻过近的小目标,在进行目标检测时,理论上利用多层特征信息的检测效果比仅利用单层特征信息的检测效果好。因此,本文将通过训练结合FPN算法思想的Faster R-CNN网络模型,对遥感图像飞行器进行检测验证。
FPN的基本思想:利用不同尺度的特征信息来预测不同尺度大小的目标,具体的结构如图2所示。
图2 FPN结构图
其主要分为两个流程:自底向上和自顶向下。
自底向上的过程:即普通的卷积网络经过前馈计算提取特征的过程,如图2所示,假设提取的特征为{C2,C3,C4,C5}。
自顶向下的过程:包含上采样和横向连接两个步骤。首先将自底向上过程提取的特征{C2,C3,C4,C5}进行采样,使得高层特征的尺度能够满足与低层的特征进行横向连接的尺度大小,然后把得到的采样特征与底层特征进行像素之间的相加,即横向连接,得到特征{P2,P3,P4,P5}。
将RPN与FPN相结合,在不同尺度的特征图上分别提取固定尺度大小的anchor,根据特征尺度的不同从而得到尺度大小不同的anchors,FPN+RPN的网络结构如图3所示。
在满足RPN和Fast R-CNN结构都使用FPN结构后,整体网络结构示意图如图4(b)所示,图4为Faster R-CNN采用FPN算法前后对比图。
在具有FPN结构的Faster R-CNN网络架构中,根据如下公式确定的ROI在何种尺度的特征图上进行映射:
(8)
其中,k对应的是FPN中的Pk层,w和h对应的是ROI的宽和高。
图3 FPN+RPN网络结构
图4 Faster R-CNN不同结构对比图
本文对遥感图像的检测对象是遥感图像中的飞行器,如图5所示。
检测的过程包括两个部分:模型的训练阶段和测试阶段,整个训练过程图6所示。
1)训练阶段,通过Caffe框架构建FPN+Faster RCNN网络;用预训练好的卷积神经网络模型,给自己构建的网络赋初值;最后用自己的数据集,对自己的网络进行训练,得到需要的检测模型。
图5 数据集示例
2)检测阶段,使用预备好的测试数据集对生成的模型进行检测,得到检测结果,判断模型的好坏。
图6 模型训练流程图
训练过程中,为了弥补数据样本集过小的情况,使用的数据集除了由武汉大学收集的DOTA和中国科学技术大学实验室收集的UCAS-AOD两个数据集中包含的飞行器部分之外,还额外在网络上搜集了部分含有飞行器的遥感图像。然后对总的数据集进行一些预处理,包括对图像进行几何变换(水平翻转,任意角度的旋转,随机的裁剪等),还对图像随机地添加了不同的噪声以及遮挡。最终得到的数据集图片数量为3000张。
实验采用Caffe深度学习平台,GPU型号为GTX1080ti。其中,预训练模型为Resnet结构在Imagenet数据集上进行分类训练的模型,使用该模型的参数分别给本文中要训练的网络进行参数初始化;然后对不同的网络进行检测模型的训练,得到相应训练模型。实验中训练了从单一的Faster R-CNN网络结构到结合FPN思想的Faster R-CNN网络结构,分别验证了提取不同层的特征信息时,网络模型的检测准确率。卷积层特征提取的层次分布如图7所示。
图7 卷积层特征提取层次图
测试过程中,将相同的测试集对不同的模型(提取不同层次的特征训练得到的不同模型)分别进行测试,得到如表1的结果,mAP表示的是目标对应为飞行器时检测结果的平均准确率。
表1中,每行代表的是增添FPN结构后,采用不同的尺度的特征图进行预测,训练模型的检测结果。其中第6行模型的网络结构等价于使用单一特征的原始Faster R-CNN网络结构。实验结果表明,对于遥感图像中的飞行器类别的检测:利用多尺度特征进行预测的结果好于单一尺度特征预测的结果;其中,结合P2-P5尺度的特征信息能达到预测的最好结果。实验1-4,6表明,结合特征尺度数目越多,预测结果准确率越高,但当结合的特征信息全面后,再增加其他尺度特征信息对飞行器的检测结果不会有太大影响;实验结果4-6表明,增添低层特征信息后飞行器预测结果提升了5%左右;实验结果6-7表明,仅有低层特征信息的预测结果没有仅有高层特征信息的预测结果好,也表明仅有底层的细节信息的检测模型难以得到更准确的预测结果。
表1 不同训练模型之间的mAP对比
图8和图9分别展示了两个不同网络结构的检测结果示例:基于Faster RCNN网络模型和基于Faster RCNN+FPN(结合了P2-P5尺度的特征信息)网络模型的检测结果。首先是准确度,图8中的相对较大目标以及距离较远的目标识别率还是比较好的,但是遇到小目标以及相邻较近的目标时,就会存在漏检的状况;而图9中对应的模型基本上解决了小目标识别难的问题,距离较近的目标也没有漏检,并且对于目标的识别率也比图8对应的网络模型要高。其次,就目标定位方面,图8中的检测结果目标框比图9中更精准;对于距离较近的目标也能够很好的定位,不会有目标框的漏检,同时相较于图8,图9对应的模型标定的目标框更精准。
图9对应的检测模型,由于使用FPN思想的网络结构模型中不止包含了高层语义信息,还包含了底层的细节信息,使得整个模型包含的参数更多,模型比仅使用Faster R-CNN算法的模型要大。由实验结果图所示,检测过程中图9对应的模型检测同一幅图像中的目标时,所花的时间比图8对应的模型检测时间要长。
图8 基于Faster RCNN网络模型的检测结果示例
图9 基于Faster RCNN+FPN网络模型的检测结果示例
本文基于对Faster R-CNN和FPN算法的研究,分别训练了采用不同的尺度的特征图的检测模型,并在遥感图像飞行器类别上进行验证。使用深度学习的方法对遥感图像进行检测识别,能避免使用传统算法时遇到的一些问题,诸如:需要依赖人工设计特征,检测过程繁琐等。从不同模型实验结果的对比来看,结合P2-P5层的特征对于遥感图像飞行器的检测效果最好,其准确率能够达到98.2%。仅使用Faster R-CNN算法的模型能够对遥感图像进行检测,但增加了FPN算法思想的模型结果更为精准。从整个检测过程来说,基于深度学习的目标检测方法,能够应用于遥感图像的目标检测。针对待检测数据集不同的特点,对基础检测框架进行相应的改进能够使得检测结果更为精准。
目前,本文研究的Faster R-CNN+FPN的方法可以准确地对遥感图像中目标进行准确的识别和定位,并且获得的结果较好。但是整个模型仍然存在可以优化的地方,比如:对于一些特殊环境的军事场景下的目标检测,对目标候选框更精准的定位以及减少模型参数等。这些问题都是可供研究的方向,本文通过优化基础的Faster R-CNN网络结构训练检测模型,为军事上的图像检测提供一种新的方向,也为后续自动目标检测技术的研究提供新的方向。