王婷婷,刘环宇,李君宝
(哈尔滨工业大学 电子与信息工程学院,黑龙江 哈尔滨 150001)
无人机由于体积小、运动速度快和覆盖范围广等优点,在地空拍摄领域得到了广泛应用[1]。其中,利用无人机进行巡航、侦查和预警等是现代智能化应用的主流技术手段。地面重点目标实时检测与识别是无人机视觉系统需要解决的重点问题。结合图像处理技术和模式识别方法,对无人机视频或图像进行分析,实现快速、稳定的目标检测是后续环境感知和目标快速瞄准等高级任务的基础。
现有目标检测数据集目标特征显著,细节清晰,而实际应用中,无人机图像由于拍摄高度较高,目标尺寸相对于图像过小,目标特征不完整;且受到拍摄角度的影响,目标发生一定程度的形变;目标与无人机之间的相对运动造成目标背景变化较大等,使无人机图像目标检测任务充满挑战[2]。
为满足以上需求并解决无人机目标检测技术难点,近年来,科研人员开展了一系列相关研究。传统的无人机图像目标检测方法包括帧差法、背景减除法、基于滑动窗口的特征提取算法[3]、均值漂移算法和边缘检测算法[4]等。2013年,董晶、傅丹[5]等人实现了无人机对地运动车辆目标检测,利用图像配准完成前背景运动的分离,并结合帧差法准确检测到目标区域。2017年彭博[6]等人实现的广域车流目标检测识别使用了帧间差分及背景减除的方法。传统基于滑窗提取的特征通常为人工设计的梯度方向直方图 (Histogram of Oriented gradient,HoG)特征[7]、SIFT(Scale-invariant feature transform)特征[8]和类Haar小波特征[9]等,此类实现特征表示的方法计算复杂度高,无法实时检测。2012年,S.Jan[10]等人结合多尺度MeanShift算法与目标的边缘信息解决了无人机拍摄图像显著性目标的检测。另外还有显著性图检测方法、差距图以及金字塔直方图[11]等多种检测算法。这些方法计算速度慢、鲁棒性弱,无法达到实时检测的应用需求。
随着卷积神经网络、生成对抗网络和深度传输网络等多种深度网络的兴起及其在图像处理方面的优势,无人机图像的目标检测也越来越多地开始使用深度学习[12]。2016年,Barrero[13]等人利用神经网络从无人机飞行高度50 m的航拍图像中检测出稻田杂草。Zhang[14]等人根据相邻平行线的特征搜索感兴趣区域(ROIs),通过AlexNet网络上的转移学习确定最终的机场区域。Xiao[15]等人使用新的GoogleNet-LF模型提取多尺度深度集成特征组合SVM进行检测识别。2018年Wang[16]等人利用以RetinaNet作为主干网络的卷积神经网络(CNN)目标检测器,在斯坦福无人机数据集[17]上进行行人检测,验证了基于CNN的目标检测器在无人机图像的目标检测方面的优势。
无人机图像目标检测方面的研究已经取得了一定的成就,但仍处于初步发展阶段。以上方法面对复杂多变的无人机图像目标,始终无法达到检测准确率与速度的平衡。如何能够快速、准确地检测无人机下视小目标仍然是当前研究的重点与难点。从实际应用的角度出发,本文设计并实现了一套用于无人机地面站的目标检测系统。充分考虑深度学习在处理图像方面的优势与缺陷,结合模板匹配算法,并加入局部与全局联合检测的策略,实现无人机对地目标实时稳定且准确地检测与识别。
本文用于地面站的无人机目标检测系统总体流程如图1所示。系统分为3部分:数据传输至地面站、深度学习局部目标检测以及全局目标稳定显示。
图1 系统总体流程
系统的3部分之间运行相互独立但数据信息相互关联,即整个系统由4个进程构成,考虑系统整体要求实时性,各个进程之间相互通信使用共享内存的方式。进程间通信的方式通常包含4种:管道、信号量、消息队列和共享内存。共享内存旨在解决进程间通信的运行效率问题,是最快的进程间通信方式。其基本通信原理如图2所示。
图2 共享内存基本通信原理
2个相互独立的进程之间实现数据、图像等信息的快速传输与共享的方法之一是可以使用同一段物理地址存储信息,各个进程通过访问此地址来获取另一进程的信息。进程与共享内存的物理地址之间通过页表来连接自己的虚拟地址空间和实际物理空间。由于数据直接存储到内存之中,减少了普通数据传输多次数据复制的频率,从而加快了传输速度,其存储信息消耗的时间几乎可以忽略不计。考虑本系统的要求,信息的写入与读取应具有时序性,同一时刻应只有一个进程可以访问共享内存,因此,本文加入互斥量锁机制实现进程间访问互斥。
本文4个进程之间共使用了4次共享内存方法进行信息传输。首先,无人机采集到的视频数据与地面站实时共享使用了一块用于存储原始视频流数据的内存空间。其次,原始视频经过深度学习局部检测后得到的目标初步位置信息以及目标切片信息保存在第二块共享内存,与第一块共享内存不同,用于存储局部目标信息的一个共享内存根据图像划分的局部区域个数分解为相应多个子共享内存区域,具体形式如图3所示。
图3 共享内存具体形式
然后,考虑检测结果的稳定性与长时性,每个子共享内存的信息用于后续进一步补充、筛选与融合。最后,处理后存入一个完整的共享内存区域,用于全局目标检测结果的显示。
通过以上设计,实现了从获取数据、目标检测处理到最终检测结果稳定实时显示的整个流程。搭建了一套可应用于实际无人机地面站目标检测的完整系统。
鉴于深度学习在图像处理领域的优势以及目前目标检测方向的发展,本文使用深度学习算法用于无人机图像目标检测初步处理。
现阶段,用于目标检测的深度学习网络主要有2类,一是以特征提取和分类结合的2步目标检测网络RCNN系列,目前此类网络效果最好的为Faster RCNN网络[18];二是采用回归思想的单步目标检测SSD[19]、YOLO[20]系列。Faster RCNN网络创新性的将原始选用候选区域的暴力滑窗扫描方法如Selective search等替换成RPN网络,其算法流程如图4所示。
图4 Faster RCNN算法流程
使用全卷积网络提取到图像的基本特征以后,使用构建的RPN网络在特征图上滑动窗口,用于物体前背分类和框位置的回归,之后又经过进一步的精细化ROI池化处理得到框更精确的位置。Faster RCNN网络具有很好的准确率,但是由于候选框数量较大等因素,处理速度十分缓慢,无法应用于实际视频级处理,SSD基本网络结构如图5所示。
图5 SSD基本网络结构
SSD网络利用锚点输出一系列离散化的候选框,通过结合不同层次的特征图,保证了SSD网络可以充分提取特征目标;将不同尺度考虑进来,且由于锚点设计为多种不同的横纵比,使SSD网络可以适应多种尺度的目标。这种锚点结合特征金字塔的设计提高了网络对不同目标检测的准确率,回归的思想使网络检测速度大大提高,是目前检测准确率与速度良好折中的优质选择。
YOLO网络与其他2种网络采用的思想都不同,其算法更加直接和简易。直接在输出层回归候选框的位置和对应所属的类别,彻底将目标检测的问题用回归来解决。YOLO将目标区域预测和目标类别预测整合于单个神经网络模型中,实现在准确率较高的情况下快速目标检测与识别。YOLO网络架构如图6所示,YOLO网络在目标检测中具有极高的检测速度,但是检测准确率相对其他深度学习网络较低。
图6 YOLO网络架构
表1列举了3种网络在PASCAL VOC数据集上验证的目标检测效果,主要从平均准确率和速度2个方面考虑。
表1 深度学习目标检测网络效果对比
网络平均准确率/%速度/FPS·s-1Faster RCNN70.417SSD75.822YOLO69.040
由表1可以看出,目前识别率是Faster RCNN最好,SSD次之,YOLO的识别率较低;识别速度YOLO最快,其次是SSD,Faster RCNN最慢。为了验证3种网络在实际应用场景下的效果,本文使用自建的遥感图像数据对3种网络进行了对比,实验平台如表2所示。
表2 实验平台
名称性能指标处理器Xeon E5-2630V4、2.2 GHz 10HE25M内存三星DDR4 RECC 2 400 MHz 32 GB系统盘INTEL SSD 3610 400 GB显卡华硕STRIX-GTX1080TI O11G-GAMING
在以上平台检测6类目标包括港口、油罐、舰船、飞机、机场以及桥梁的具体检测效果如表3所示。
表3 自建数据集目标检测网络性能验证
目标类别图片总数训练图片测试图片识别率识别速度Faster RCNN/%SSD/%YOLO/%Faster RCNN/msSSD/msYOLO/ms港口1 121800120878578480225180油罐50035060848065650274210舰船780600120858470520215174飞机76064050918871540203194机场50042040908564600195178桥梁82874060888672580240215
综合分析,SSD网络性能最优,既保证了与Faster RCNN差不多的精度,又达到了和YOLO网络差不多的速度。因此,本文选择SSD网络作为无人机地面站目标检测系统的检测网络。
高空无人机拍摄的目标尺寸最小倍距下小于40*40像素。SSD网络对小目标检测效果有限。由于特征提取网络设计中卷积层与池化层结合并多次对图像进行下采样操作,会使图像尺度大幅减小。经典SSD网络的输入尺寸为300*300,而无人机采集的图像通常分辨率较高。本文采集到的图像尺寸为1 920*1 080像素,而目标只占图像中极小的一部分。使用SSD网络首先要对图像进行缩放处理,高分辨率的图像经过缩放会损失大量信息,并造成目标严重形变,再经过网络的多次下采样,造成目标特征损失,最终用于检测和识别的目标特征信息极少,严重影响检测的准确率。为此,本文采用对图像进行局部检测的策略,先将图像缩放为900*900像素,再将图像由上至下、由左至右均匀划分为300*300的九个子区域。SSD网络对当前的视频帧图像只处理其中的一个子区域,经过9次局部处理,完成整个图像的检测。具体过程如图7所示。
图7 无人机图像局部检测过程示意
SSD目标检测网络按顺序处理每一帧图像的局部区域,如第1帧图像处理检测左上角第1块300*300区域的目标、下一帧按顺序处理第2帧左上第2块局部区域…依次循环处理,直到完成第9帧图像的局部区域检测之后,重新开始计算下一次循环。即9帧完成一次全局检测。
利用局部循环检测的方式,从输入开始避免了原始图像的信息损失。尤其对小目标的信息保留具有重要的意义。每个局部区域检测到的目标位置信息和切片信息存储在与一块共享内存对应的9个子共享内存中,以便于后续进一步整合检测结果。这种策略可以大幅提高局部区域目标检测的准确率,但却丢弃了全局大部分信息,每一次循环结束整合显示检测结果时,大部分目标位置及类别信息属于历史帧。无人机机动性强,移动速度快造成目标与无人机之间相对运动较大,且载荷采集图像的速度高于一次循环处理的速度,使显示的目标位置信息滞后于当前帧图像中包含的目标,视觉可见存在较大延迟。针对以上问题,本文提出基于模板匹配的全局目标检测信息补偿策略。
为了满足无人机视频检测的视觉实时性要求,本文在以上研究的基础上加入了多线程机制。同时,为了方便操控人员根据检测信息进行后续高级命令操作,目标位置及类别等信息应能够稳定连续显示,故需对以上每帧图像未检测的区域进行进一步的补偿检测处理。考虑以上2点,本文结合多线程机制与模板匹配检测算法,对SSD检测到的目标信息进行精细化调整与补偿。具体实现流程如图8所示。
图8 全局目标检测信息补偿流程
启动n个多线程分别监控n个共享内存。图像划分为9个局部区域,故启动9个进程管理共享内存。每个线程相应地负责一个局部区域的信息补偿,相应使用9个模板匹配对局部区域进行目标检测。多线程模板匹配过程与SSD局部区域目标检测过程运行相互独立。但信息通过共享内存实现共享,主要包括目标的位置信息、类别信息以及目标切片等。
模板匹配算法是模式识别中最简易快速的特定目标匹配技术[21]。已知目标匹配模板,在指定区域范围内搜索并匹配,得到相似度最高的目标位置。具体匹配过程如图9所示。
图9 模板匹配过程示意
模板图像T,原图像为I,在图像I中搜索与模板T最相似的区域,将最终匹配到的矩阵保存为R。本文选用的具体算法为归一化相关系数匹配法。在位置(x,y)匹配得到的图像矩阵为R(x,y):
(1)
其中,模板图像来自于2个部分:① SSD局部区域检测结果;② 上一次匹配结果。局部区域检测到的目标位置坐标为300*300范围内的坐标,为了确定模板匹配搜索位置范围,将局部坐标映射到1 920*1 080像素原图的相应位置。模板匹配的搜索区域确定为以模板中目标全局坐标中心点位置为中心,长宽为原始模板5~8倍范围。搜索范围设置过大,会增加匹配时间,多目标匹配所造成的时间累积会引起系统延迟;由于无人机载荷与目标之间存在相对运动,搜索范围过小时,目标不在指定搜索范围内,匹配失效。本文的匹配范围由多次试验经验确定,匹配相似度阈值设置为0.6。
多进程图像模板匹配同步进行互不干扰,当SSD进行局部目标检测时,9个进程同时监控对应的9个共享内存子区域内信息的变化。当SSD局部检测完成时,对应共享内存的信息更新为新检测到的目标信息,监测此共享内存区域的线程同步更新模板后继续进行匹配。否则,模板图像及位置信息不变,模板匹配连续进行。无论后续检测是否成功检测到目标,一旦第一次模板匹配开始便不会结束,直到整个系统检测结束。SSD局部检测只负责是否对相应线程模板匹配进行模板更新。
经过此操作后,每帧图像的检测结果包括当前进行的SSD局部检测区域目标以及利用历史帧模板进行模板匹配后的其他区域目标匹配结果。充分利用了每帧图像的全部信息,使检测结果更精细稳定,并利用多线程机制提升了系统整体检测速度,实现了检测准确率与检测速度的平衡。
不同局部区域之间的检测与匹配结果存在大量重复,将9个线程的结果整合在一起后,使用非极大值抑制(Non-Maximum Suppression,NMS)处理滤除同一目标的多个重复框。对同一目标的多个定位框按照类别置信度排序,丢弃与最大置信度定位框IOU大于0.7的定位框。将重复框过滤后的剩余框信息送入共享内存。地面站显示系统通过访问共享内存对输入视频的目标检测结果实时显示。本文显示界面设计如图10所示。
图10 无人机地面站显示界面
① 数据条件:本文所用数据为2018年9月于某试验场地实际拍摄获得。使用某小型旋翼无人机以载荷视场角20°、水平旋转速度5°、无人机距地垂直距离100 m时对地拍摄的目标,获得尺寸为1 920*1 080像素的高分辨率图像。实验所关注的待检测目标为白底黑线或红线的十字型靶布,靶布实际大小为3 m*3 m,统一识别为靶布。目标与无人机之间的相对运动由无人机匀速飞行产生,目标尺度变化由无人机载荷摄像机倍距变化产生,包含摄像机焦距1~10倍距变化情况下的靶布数据。具体目标外观如图11所示。
图11 目标外观
② 运行平台:CPU:Intel(R) Core(TM) i7-6700 CPU @3.4 GHz;内存:16.0 GB;GPU:GeForce GTX 980;显存:8.0 GB;系统版本:Windows 7专业版。
③ 深度学习框架:Caffe Windows版。
验证试验总体流程如图12所示。
图12 无人机地面站系统验证试验总体流程
试验总体分为2个过程,分别为SSD目标检测网络模型训练和利用此模型对完整视频进行整体系统测试。其中,训练模型之前需要构建训练数据集。将训练集样本缩放至900*900尺寸后裁剪为均匀顺序排列的9块300*300像素的子区域样本,对子样本目标类别及位置信息进行标注,标注文本格式为标准Pascal VOC数据集所用的XML格式。目标类别为“target”。
实验数据集包含14 817个样本,按照8∶2的比例随机分成训练集和验证集。训练集数量11 854张,验证集2 963张。数据涵盖摄像机焦距1~10倍距的图像以适应多种尺度的目标检测。使用随机梯度下降(Stochastic gradient descent,SGD)优化方法求解最小损失函数。总训练次数为80 000次。学习率的初始值为0.001,经过40 000次训练后学习率衰减为原来的1/10。每次批处理尺寸为16。
测试使用无人机采集的视频作为输入。选取一段包含1~10倍距匀速拍摄的视频10 min共15 000帧图像,同时启动4个进程后,观察实时视频检测效果,并将检测结果保存到本地,用于后续结果分析。
使用本文设计的无人机下视地面站检测系统对连续视频目标检测结果如图13所示。分别为1~10倍焦距变化下的检测结果图。
图13 焦距变化下的目标检测结果
由图10所示的检测结果来看,视场角为20°非垂直拍摄情况下,目标的形状变化较大,载荷摄像机焦距放大到5倍以前,目标存在漏检,尤其在目标外观变化较大的情况下漏检较大。焦距越小,拍摄视野内目标数量越多,背景干扰物也相对较多,发生误检的可能性较大。焦距增加到5倍以后,目标外观逐渐清晰,特征愈加显著,检测准确率相对较高,发生漏检和误检的可能性也较低。统计每种倍焦距下测试结果如表4所示。其中,5倍焦距以前目标检测准确率小于80%,且误检出现频率较高;7倍焦距以后目标检测准确率高于95%,检测效果较好。
表4 不同倍距图像测试结果统计
倍距测试图像数量测试目标数量检测目标数量误检数量检测准确率/%13752 0051 68420174.023752 6702 42634378.033751 8501 54910178.343752 2801 93513479.053752 1331 87911082.963751 1701 0302386.07375938892095.0837511751 126795.89375873847196.910375617598096.9
随机选取视频中3 750帧图像的测试时间绘制如图14所示。计算可知,一次测试的平均耗时为56.6 ms。系统处理时间波动较大时受到多线程调度的影响,大部分图像的处理时间都处在75 ms以下,可以满足实际视频检测的实时性要求。
图14 目标检测系统测试时间
本文针对无人机视频目标检测准确率低以及无法满足时效性问题,设计了一套完整的可用于地面站的无人机目标检测系统。该系统利用深度学习和传统模板匹配相结合,充分挖掘了图像的局部和全局信息,并巧妙地使用多进程、多线程等机制,完成了信息同步快速处理。检测的平均准确率为86.1%,平均检测时间为56.6 ms。无论从准确率还是处理速度,都可达到实际应用需求。