基于YOLOv3的无人机识别与定位追踪
2020-06-08陶磊,洪韬,钞旭
陶 磊,洪 韬,钞 旭
北京航空航天大学电子信息工程学院,北京 100191
近年来,越来越多的无人机出现在我们的生活中. 无人机数量的激增,使得无人机市场前景开阔,但是也给城市安保带来了更大的挑战[1]. 出于对公众安全的考虑,各地政府在机场、会议场所等区域,禁止未经许可的无人机飞行. 因此,在特定区域对无人机进行监测是安防的迫切需求.
由于无人机具有体积较小、雷达截面小、低速的特点,利用传统的雷达设备很难探测或者是识别无人机[2]. 在城市环境中,声音较为嘈杂,无人机更可穿梭于高楼之间,利用声传感器也很难探测到无人机. 所以目前迫切需要建立一套对指定区域进行无人机实时监测、精准识别的监控系统[3−8].
在5G、物联网即将到来的时代,城市区域的监控系统已经日趋完善. 5G网络低延时、网速快的特点,让实时共享监控视频不再成为难点. 利用城市监控摄像头网络组成的监控系统,实时对指定区域进行无人机监测、识别和预警是一种解决无人机监管问题的有效方法[9−10]. 此方法的关键在于对监控摄像头传输回来的视频进行实时有效的处理,从视频中检测是否存在无人机,以便对其进行跟踪与定位.
目标检测是目前计算机视觉领域的一个重要的研究方向. 近几年深度学习的快速发展,以及计算机计算能力的大幅提升,图像目标识别与分类在准确度和速度上都有了极大的提升. 目标检测领域的深度学习算法主要分为one-stage与twostage两类,前者速度快,后者速度高. one-stage有SSD(Single shot multibox detector, 单发多盒)、YOLO等系列,two-stage有R-CNN(Rich feature hierarchies for accurate object detection and semantic segmentation,用于精准目标检测和语意分割的多功能层次结构)、Fast R-CNN(Fast region-based convolutional network method, 基于区域的快速卷积神经网络方法)等系列[11−13],目前在各类数据集上测试效果最好的算法是YOLO系列的最新一代YOLOv3[14−16].
基于目标检测算法和监控系统,本文提出了一种基于YOLOv3算法的无人机监测识别与定位的方法,它直接对监控视频内容进行实时检测,识别出无人机之后,用PID算法去控制摄像头移动以追踪无人机. 根据两台或多台摄像头的参数,对出现在多台监控摄像头中同一无人机进行坐标解算从而定位无人机.
1 相关工作
目前为止,无人机的识别方法多种多样,方法主要集中在图像识别、音频信号分析、频谱探测以及雷达数据分析等方面. 电气电子工程师学会(Institute of Electrical and Electronics Engineers, IEEE)为了促进无人机识别的研究,甚至还为此举办了无人机鸟类检测挑战大赛(Drone-vs-bird detection challenge)[17]. 下文介绍现已有的方法.
最早的研究采用雷达信号分析来探测无人机,此方法首先利用多雷达对目标进行不同角度的观测,然后对雷达数据进行短时傅里叶变化处理以得到频谱图,接着利用主成分分析法从频谱图中提取特征,再利用支持向量机进行训练与分类识别[18].
基于音频信号识别的方法主要是通过对无人机的声音特性进行分析,在时域和频域分别对采集的无人机音频信息进行分析和处理,借助梅尔频率倒谱系数及线性预测倒谱系数等进行特征的提取,用以建立无人机音频识别库,最后借助特征匹配算法达到识别无人机的目的[19].
随着机器学习算法的发展和应用,无人机识别也有了新的手段. 通过摄像机自动侦测和追踪小型飞行物获得不同角度拍摄到的无人机图片,组成视频集,再用卷积神经网络来提取特征,采用K邻近算法对目标进行分类[20]. 此外,还有一种基于迁移学习稀疏自动编码器(Sparse auto-encoder,SAE)的无人机识别算法,借助SAE对大量目标进行无监督学习以获取局部特征,然后采用卷积神经网络算法提取目标全局特征,由Softmax函数输出结果实现对目标的分类.
2 无人机识别和定位方法
为了使用YOLOv3模型去检测无人机目标,本文对模型做了一定的修改再进行训练,以获取无人机在图像中的坐标信息,为后续的PID算法、坐标定位提供必要的输入信息.
YOLOv3用于检测每一帧图像中的无人机,预测包含无人机的边界框和每个边界框的置信度,以此来获取无人机在图像中的位置. 根据预测框相对于图像中心的位置偏差,来调整摄像头的方向,然后根据两个或多个摄像头的参数来进行坐标解算获取无人机的相对坐标.
2.1 YOLOv3
目前为止,YOLO总计发布了三代算法,第一代YOLO的性能是低于SSD算法的,第二代YOLOv2在第一代的基础上增加了Batch normalization(批量归一化)、Dimension clusters(维度聚类)、Multi-Scale training(多尺度训练)等优化手段,速度与准确度都有了较大的提升,第三代YOLOv3则在第二代的基础上使用了残差模型和FPN(Feature pyramid networks,特征金字塔网络)架构,性能上有了进一步的提升. YOLOv3是目前效果最好的目标检测算法之一,其应用范围也比较广泛. 图1是YOLO系列算法与其它目标检测算法的性能比较,所有算法均在相同平台上测试,测试集为COCO数据集[21],mAP(Mean average precision,平均准确度)为算法性能的衡量指标.
YOLOv3在VOC2007数据集上的评测有着卓越的表现,可实现80种物体的实时目标检测. 在本文的应用中,所使用的YOLOv3模型基于tensorflow(谷歌深度学习框架)实现,只要训练YOLOv3模型使其实现对无人机的检测. 训练之前,需要对YOLOv3的网络结构进行修改,YOLOv3网络有53个卷积层,图2是YOLOv3的网络结构示意图.
图 1 YOLOv3的运行速度明显快于其他可比的目标检测算法[14]Fig.1 YOLOv3 runs significantly faster than other detection methods with comparable performance[14]
基于检测的目标种类,需要修改三个yolo预测层之前的卷积层的滤波器数量:
本文中需检测三种不同类型的无人机,故classes为3,将三个YOLO层之前的卷积层的滤波器数量均修改为24.
2.2 PID控制二轴云台相机
图 2 YOLOv3网络结构Fig.2 YOLOv3 network structure
二轴云台相机,如图3(a)所示. 该相机的作用在于控制摄像头移动以保持目标在视频中央. 控制模块是一个二轴云台,具有两个舵机,一个舵机负责控制摄像头左右移动,另一个控制摄像头上下移动,每个舵机都具有180°的调节范围,控制效果图如图3(b)所示.
图 3 云台相机原理图. (a)二轴云台相机;(b)PID控制摄像头追踪无人机Fig.3 Schematic of pan and tile camera: (a) pan and tile camera;(b) tracking drones with PID control
PID算法如下所示:
其中,u(t)为系统输出,表示舵机转动角度,rad;e(t)为图像中心与无人机中心的偏离角度,rad;Kp、Ki、Kd均为常数系数,分别对应比例增益、积分增益、微分增益.
该公式由比例、积分、微分三部分组成,第一部分使得摄像头跟随无人机移动而转动,积分部分用来消除稳定误差,防止无人机不在视频中心,微分部分则用来控制偏差的变化率.
如图4中流程图所示,借助OpenCV(计算机视觉库)处理摄像头视频流,对视频流中的每一帧图片进行YOLOv3检测,获取图片中无人机的位置后,计算其中心与图片中心的距离,将距离参数传递给PID进程进行运算,从而控制舵机转动.
图 4 PID控制流程图Fig.4 PID algorithm flowchart
2.3 无人机定位
本文所提出的无人机定位方法如图5所示,可以得到摄像头的基本参数:(1)两个摄像头之间的距离d,单位为m;(2)摄像头A的垂直方向角度α与水平方向角度α′,单位均为rad;(3)摄像头B的垂直方向角度β与水平方向角度β′,单位均为rad.
图 5 解算无人机坐标Fig.5 Solve the coordinates of the drone
当有两台摄像头捕捉到同一台无人机后,可以根据两个摄像头的参数来求解无人机坐标. 以摄像头A所在位置为原点建立三维坐标系,由正弦定理可得:
无人机在摄像头A坐标系下的坐标为(lcosα′,lsinα′,ltanα),(XA,YA,ZA)为A的世界坐标,则无人机的世界坐标为:
3 实验结果
3.1 数据集
为了获取足够多的无人机图片组成数据集,从互联网上爬取了大量无人机图片. 此外拍摄了一些无人机照片,对其进行裁剪后加入到数据集中,然后按照旋翼数量的特点对图片进行筛选分类,得到单旋翼无人机图片150张、四旋翼无人机图片155张和多旋翼无人机图片158张. 之后用labellmg软件对图片中的无人机进行标注,每一张图片均有与之相对应的注释文件,里边有包含无人机边界框的位置大小和信息:
3.2 训练结果
采用迁移学习对无人机图片数据集进行训练[22−23],90%的图片用于训练,10%的图片用于测试. 基于YOLOv3已有的预训练权重,在配备NVIDIA GTX 1060的电脑上进行了10万次训练,训练出来的模型能够达到83.24%的准确率和88.15%的召回率,结果如表1所示. 使用该模型进行实时测试处理速度能达到每秒20帧,在同一平台上相较于SSD模型每秒14帧的速度有了较大的提升. 该速度足够让摄像头去追踪飞行的无人机并解算出无人机的坐标. 图6是YOLOv3模型与SSD模型的实测效果图对比,SSD的预测框效果优于YOLOv3,但速度上不及YOLOv3,考虑到实时性的要求,在实际应用场景中,选择YOLOv3更合适.
表 1 模型的准确率和召回率Table 1 Precision and recall of model
图 6 SSD及YOLOv3的检测结果(图片上方是SSD模型的检测结果,下方是YOLOv3的检测结果)Fig.6 SSD and YOLO’s test results (Above the picture is the test result of the SSD model, below is the test result of YOLOv3)
4 结论
(1)训练好的YOLOv3模型在测试集上能够达到83.24%的准确率和88.15%的召回率.
(2)在NVIDIA GTX 1060平台上实时测试模型能够达到每秒20帧的速度,对视频帧进行目标检测能获取无人机的位置信息,实现对无人机的追踪.
(3)根据两个或多个摄像头的参数,能实时解算出无人机的空间坐标,实现对无人机的定位.
对于今后的工作,我们准备获取更多场景下的无人机数据集来进行模型训练,选取速度更快、占用资源更小的模型来进行无人机识别,让模型能够摆脱对显卡的依赖,使该系统的成本更加低廉.