基于深度学习的多旋翼无人机单目视觉目标定位追踪方法

2020-04-29 13:03魏明鑫胡永明王德志李岳彬
计算机测量与控制 2020年4期
关键词:工控飞控旋翼

魏明鑫,黄 浩,胡永明,王德志,李岳彬

(湖北大学 物理与电子科学学院,武汉 430062)

0 引言

无人机(unmanned aerial vehicle, UAV)主要分为旋翼无人机和固定翼无人机。多旋翼无人机是旋翼无人机的一种,具有灵活性好、稳定性强、可垂直起降等特点,比固定翼无人机机动性更强。因此,多旋翼无人机的应用场景更加广泛。随着多旋翼无人机技术近几年的发展,多旋翼无人机在民用和军用领域都有了很广的应用。民用上可以用在航拍、电力巡检、物流等领域;军事上更是可以用在军事侦察、目标打击等方面。

传统视觉跟踪虽然有很强的自主性、宽测量范围和可以获取大量的环境信息等优点,但它同时也存在许多缺点。

1)强大的硬件系统是必需的:为了获得精确的导航信息,导航系统不可避免地配备了高分辨率相机和强大的处理器。从图像数据采集和处理,这涉及到巨大的数据操作。许多图像算法都是非常复杂的,这无疑给系统的集成设计、CPU、DSP、GPU计算能力和内存大小带来了巨大的挑战。

2)传统视觉导航跟踪的可靠性较差:视觉导航有时很难在复杂的灯光和温度变化的环境下工作。环境适应性问题是困扰视觉导航的难题。同时无法解决不同形状的物体在投影平面上的问题相同的图像视觉算法的高实时需求。

所以视觉导航不仅需要高性能的硬件来提高图像采集的速度和处理时间,还需要在深度学习、神经网络和小波变换等软件算法上取得突破[1-6]。

近几年,由于深度学习的发展,机器人无人驾驶等领域又迎来了一次变革,将朝着达到真正意义上的人工智能发展。目标跟踪无人机主要涉及视觉识别、目标检测与追踪等问题。文献[7]介绍了一种基于合作目标的无人机目标跟踪方法。能够实现准确跟踪,此方法主要用在危险物排除。文献[8]介绍了基于视觉的无人机目标追踪方法,该方法是采用数传将摄像机采集到的图像数据发送到远端进行处理后再发送指令给无人机。

本文介绍一种基于深度学习的无人机目标跟踪方法,其自主性更强,解决了传统的基于双目摄像机成本过高以及在复杂环境下识别准确率较低的问题。通过深度学习SSD算法训练自己的模型,然后将训练好的模型移到嵌入式工控板并运行,使其能够辨认出要识别并且跟踪的目标。在嵌入式工控板中装的是Linux操作系统,并在Linux操作系统中安装了ROS(robot operating system)。ROS是一个用于编写机器人软件的灵活框架集成了大量的工具、库、协议,提供类似操作系统所提供的功能,可以极大简化繁杂多样的机器人平台下的复杂任务创建与稳定行为控制。因此嵌入式工控板可以通过ROS与飞控板建立通信。飞控板接收到目标物的位置并接受工控板发送的指令使无人机朝目标飞去,并实现追踪。系统分为三层,上层为视觉处理端,底层为飞控端,中间采用ROS作为通信机制。其系统代码结构图如图1所示。

图1 系统代码结构图

1 基于深度学习的目标检测

在计算机视觉领域,基于深度学习的目标检测算法近几年发展迅速,每年都有新的想法提出。R-CNN提出于2014年,是卷积神经网络在目标检测任务中的开山之作。R-CNN因为要对每个候选区都要从头开始计算整个网络,所以其运算效率低下。2015年RBG(Ross B.Girshick)等结合了SPP-Net的共享卷积计算思想,对R-CNN做出改进,于是就有了Fast R-CNN。RBG团队在2015年,与Fast R-CNN同年推出了Faster R-CNN,Faster R-CNN的出现解决了Fast R-CNN的实时性问题,在Faster R-CNN中提到了RPN(Region Proposal Network)网络,RPN是一种全卷积网络,它的前几层卷积层和Faster R-CNN的前五层是一样的,所以RPN是在进一步的共享卷积层的计算,以降低区域建议的时间消耗。较大的提高了目标检测精度和计算速度[9-10]。

为了进一步提升目标检测的实时性,基于单个网络的实时目标检测框架YOLO(You Only Look Once),框架和基于单个网络多层次预测框的目标检测算法SSD(Single Shoot MultiBox Detector)算法被提出。YOLO 虽然能够达到实时的效果,但是其 mAP 与SSD的结果有很大的差距,每个网格只能预测一个目标,易导致漏检,对于目标的尺度较敏锐,对于尺度变化较大的目标泛化性较差[11-14]。而无人机目标检测对准确性要求更高。综合对比下来,本方案采用SSD目标检测算法。

SSD的设计理念也是采用CNN网络来进行检测,不同的是,它采用了一个多尺度的特征图用来检测。多尺度检测顾名思义是采用尺寸不同的特征图,分别采用一个大的特征图和一个比较小的特征图用来检测。用大的特征图检测小的目标,小的特征图来检测大的目标。与YOLO采用的全连接层不同,SSD最后直接采用卷积对不同的特征图进行检测提取。SSD设置先验框,这里是借鉴了Faster R-CNN中anchor的思想。图2展示了其基本架构。图3展示了大小两个特征图的效果。

图2 SSD基本架构

图3 不同尺寸的特征图

SSD以VGG16为基础模型,在该模型上新增了卷积层来获取更多的特征图。从图4中,可以看到该算法利用了多尺度的特征图来做检测。

图4 SSD算法网络结构图

2 目标追踪的原理

目标识别出后并画框圈中目标物,开始进行目标追踪,目标追踪主要分为两步。目标位置估计以及控制无人机姿态进行追踪[12]。

2.1 目标位置坐标获取

摄像头通过目标检测捕捉到目标,并画框提取。这里调用OpenCV处理方框,并将目标物所画方框的中心像素点坐标提取出来为P1(x1,y1),相机画面中心像素点坐标为P2(x2,y2),接下来是获得深度距离信息,利用深度学习目标检测算法,被追踪目标可以有效并完整地框选出来,并计算选择框上下边距之间的像素尺寸。采用三角形相似原理[15],计算得到目标上下框的尺寸,目标到摄像头间的距离满足:

(1)

这里,d代表物体与摄像头之间的距离;f代表摄像头的焦距,这里所用的摄像头是定焦摄像头;h代表目标物体的实际长度;l代表目标成像后的长度,原理如图5所示。

图5 相似三角形距离估计原理示意图

求得深度距离信息之后,我们就完整地得到了目标框中心像素点与相机画面中心像素点的三维坐标,然后计算相机画面中心像素与目标框中心像素在空间坐标系的坐标差,获取到无人机与目标物之间的坐标差,如图6所示。

图6 求取坐标差

2.2 PID算法控制无人机追踪

将目标位置坐标差信息转换为控制无人机的期望速度。由于相机的抖动,系统输出的位置坐标存在误差,为了减小误差,我们这里采用了PID算法来优化输出的坐标差[16]。

在基本PID控制中,当有较大幅度的扰动或大幅度改变给定值时,由于此时有较大的偏差,以及系统有惯性和滞后,故在积分项的作用下,往往会产生较大的超调量和长时间的波动。为此可以采用积分分离措施,即偏差较大时,取消积分作用,所以我们这里即用PD算法来改善系统的动态性能[16]。

XOUT=Kp*xe(t)+Kd*εx

YOUT=Kp*ye(t)+Kd*εy

εx=xe(t)-xe(t-1)

εy=ye(t)-ye(t-1)

(2)

这里,xe(t),ye(t)为x,y轴的坐标差,εx,εy为系统误差。图7展示了经过优化后最终输出的目标位置。在机体坐标系下,前方z为正,右方x为正,下方y为正。flag_detected用作标志位,1代表识别到目标,0代表丢失目标。

图7 最终输出的目标位置示意图

通过Mavlink实时发布期望速度和高度给飞控,使飞控板对无人机进行姿态控制实现对目标的追踪。图8为无人机姿态控制的详细流程图。

图8 目标追踪控制流程图

3 试验结果及分析

3.1 硬件平台搭建

试验采用自行搭建的无人机飞行平台进行,飞控板采用Pixhawk同时外接工业级IMU,使得无人机飞行时具有更好的稳定性,嵌入式工控板采用NVIDIA Jetson TX2平台。

3.2 模型训练

训练过程主要分为两个步骤:第一步是图片中的先验框与真实值进行匹配;第二步是确定损失函数。

SSD的先验框与真实值的匹配原则主要有两点:第一,对于图片中每个真实值,找到与其重叠度最大的先验框,然后该先验框与其进行匹配;第二,保证正负样本平衡,保证正负样本的比例接近1∶3。

确定训练样本后,然后确定损失函数。损失函数是由位置误差和置信度误差加权和得到的,其公式为:

(3)

(4)

对于置信度误差,其采用SoftmaxLoss,定义如下:

(5)

这里:

(6)

本次试验采用坦克战车作为目标物,因此本文先训练模型识别坦克战车。这里训练模型使用GPU对训练过程进行加速。首先安装Tensorflow Object Detection API所需的开发环境,并在官方的Demo上进行测试。然后运用数据进行训练和测试,制作自己的模型。先从网上下载1000张坦克战车的图片。分为训练集与测试集。并设置标签“tank”,然后开始训练。图9是训练自己的模型的流程图。

图9 自制模型训练流程图

模型训练结束后,用训练好的模型检测效果。本文随机选取了几张坦克战车的照片,以此来检验模型对于坦克战车识别的准确率。该模型在测试集的识别率为96%。图10显示了在实际测试中,目标均被准确识别出,且识别为坦克的概率均在95%以上。

图10 目标检测测试

3.3 目标识别与距离检测

如图11所示,将训练好的模型移植到嵌入式工控板中,调用单目摄像头并运行模型。然后进行目标识别。通过在ROS的可视化平台上看到工控板可以实时地检测到坦克战车,同时将订阅到的距离信息也实时标示出来。

图11 实时目标与距离检测试验结果

3.4 目标跟踪测试

我们接通飞控板与工控板,并建立通信机制。并且运行MAVROS包来监听一个飞控消息在ROS上订阅单目摄像头发布的目标位置信息,并通过Mavlink传输协议发送给飞控板。同时在工控板上发布追踪指令。飞控板接收到追踪指令后,开始朝电脑中的坦克目标飞去,并保持设定的距离。移动电脑,可以看到无人机朝着电脑的方向实现追踪。图12(a)、12(b)分别以第三视角与无人机第一视角拍摄了无人机对目标的追踪。

图12 无人机对目标的追踪示意图

4 总结

本文介绍了利用单目摄像头,基于深度学习实现了对坦克战车的实时检测定位并追踪,此方法具有识别准确率高、跟踪效果好的特点,同时解决了传统的基于双目摄像机成本过高以及在复杂环境下识别准确率较低的问题。

通过试验验证了该方法能对目标进行高准确率识别,并在飞行试验平台上进行了实际飞行试验。由于这次选用的目标为坦克战车,实际的样本不好收集。所有的样本均来自网络,以及测试也采用在电脑上以图片的形式让无人机进行追踪。根据SSD算法,理论上是可以建立任意模型,也就是说,在模型训练比较好的情况下理论上无人机可以追踪任何物体。基于深度学习的多旋翼无人机目标跟踪通过实际的测试验证,试验结果证明了该方法的可行性。

猜你喜欢
工控飞控旋翼
改进型自抗扰四旋翼无人机控制系统设计与实现
悬浮弹多旋翼悬浮装置翼间气动干扰特性分析
倾转旋翼机巡航状态旋翼滑流影响
大载重长航时油动多旋翼无人机
民用飞机飞控通电自检测安全性研究
安全防护应贯穿工控系统全生命周期
中小型太阳能无人机航电系统设计
全国政协委员何帮喜:工控网络安全防护应纳入国家战略
启明星辰网御星云 进军工控安全领域