本文利用转台、高清可见光相机及无人机进行图像数据获取,如图1所示。

图1 转台及高清可见光相机实物图
Fig.1 Picture of turntable and HD camera
其中,转台可以水平360°旋转,俯仰方向为0°~+90°。高清可见光相机分辨率为1 280×720(720 P),变焦镜头焦距为20~700 mm,视场角为1.02°~34.68°。采用的无人机包括大疆御Pro、大疆精灵3、诺巴曼X18W等在内的4个品牌共计6种机型,分别在不同尺度、光照、背景、仰角、姿态下进行拍摄,通过预处理之后共获得无人机目标图像40 000张。
图2为大疆御Pro无人机实物,由机身和4个旋翼组成,其中,机身尺寸为190 mm(长) ×85 mm(宽) ×55 mm(高),相邻旋翼长度为240 mm,对角旋翼长度约为350 mm,参考方砖尺寸为600 mm×600 mm。

图2 大疆御Pro无人机实物图
Fig.2 Picture of DJI Mavic Pro
将大疆御Pro无人机看作边长为240 mm的正方形,且无人机识别时按30个像素计算,通过几何光学可得最远探测距离为1.6 km。但在镜头最长焦距时,视场角仅为0.51°,在此视场下进行目标跟踪是不现实的。为了兼顾探测视场和目标大小,实际最远可用的作用距离在1 km左右。
将采集到的总样本数40 000帧中包含无人机目标图像的80%(32 000帧)作为训练集,剩余20%(8 000帧)作为测试集。
3.2 模型构建
3.2.1 目标识别
综合考虑识别精度与识别效率,本文选用YOLOv3模型进行无人机目标实时检测与识别。基于YOLO模型的深度学习目标识别技术,可同时预测多个边界框的位置和类别,实现端到端(end to end)的目标检测和识别,即在输入图像运行一次后即可获得图像中所有目标的位置、其所属类别以及相应的置信概率,速度明显优于其他同类型算法模型[14]。
YOLOv3在原有的YOLO模型架构中进行了一些改进,通过调整模型结构的大小来权衡速度与精度间的关系,如使用锚点框来预测边界框、进行多尺度预测、使用含有更多卷积层的Darknet-53基础网络、利用二元交叉熵损失函数(Binary Cross-entropy Loss)来进行类别预测等[15-16]。YOLOv3对输入图像进行了5次降采样,并分别在最后3次降采样中对目标进行预测。最后3次降采样包含了3个尺度目标检测的特征图,其中13×13的特征图负责预测较大目标,26×26的特征图负责预测中等大小的目标,52×52的特征图负责预测较小目标[17-18]。
为了更远、更早地发现目标,增强模型对小目标的识别能力,本文在YOLOv3模型基础上,增加了更小的尺度特征104×104。具体做法为将YOLOv3网络中的第109层与第11层进行张量拼接,将拼接后的处理结果作为新的特征图。
3.2.2 目标跟踪
跟踪模型选用核相关滤波(Kernelized Correlation Filter, KCF)。相关滤波(Correlation Filter)是根据MOSSE、CSK等算法改进而来的,最初起源于信号处理领域,后被运用于图像分类等领域。相关滤波在目标跟踪方面最朴素的想法是:相关是用来衡量两个信号的相似程度,如果两个信号越相似,那么其相关值就越高。具体来说,即利用一个目标检测器,使得当它作用在跟踪目标上时,得到的响应最大,最大响应值的位置就是目标的位置。在KCF中,利用脊回归函数来训练目标检测器。引入核函数的目的主要是将高维特征映射到低维空间,提高算法计算效率。
由于KCF中脊回归函数的返回值表明的是当前位置与初始位置的相关程度,因此可以通过实时计算该返回值来判断目标是否丢失。本文提出的无人机目标识别与跟踪算法总体流程如图3所示。
图3 算法总体流程图
Fig.3 Scheme of the proposed algorithm
这里,60%概率为经验值,主要考虑到在实际应用中,本着“宁虚勿漏”的原则以及小目标与变形的情况,略大于50%概率即可认为是“目标”。在实际跟踪过程中,不同背景、光照等条件下,脊回归函数的返回值范围一般不同,因此只能通过大量的试验来确定该值的范围。本文通过大量室外试验得出,针对选择的无人机目标样本,脊回归函数的取值范围在(0,0.85]之间。当目标丢失时,其最大值小于0.2,所以将阈值T1设定为0.2。即当某一时刻的脊回归函数最大值小于0.2时,重新进行目标检测,如此循环,直至结束。
4 实验结果与分析
为了验证所提方法的有效性,利用测试集数据与视频进行了实验。开发环境为Ubuntu16.04,开发工具为QT5.9.2,程序用C++语言编写,计算机CPU为Intel i7-7700K,内存32 G,GPU为1块Titan XP。计算机与转台、高清可见光相机之间的通讯通过RS232串口进行。YOLOv3网络的输入大小共有320,416,608三种,考虑到无人机目标本身较小以及训练图像的大小,本文选用的网络输入大小为608。