基于TensorFlow 的四旋翼无人机着陆地标识别*
2021-05-06宋志强周献中祖宝明
宋志强,周献中,祖宝明,方 武
(1.南京信息工程大学滨江学院自动化学院,江苏 无锡 214105;2.苏州经贸职业技术学院信息技术学院,江苏 苏州 215009;3.南京大学工程管理学院,南京 210008)
0 引言
随着人工智能时代的到来,越来越多的自治系统将遍布城市和家庭环境。下一代无人机(Unmanned Aerial Vehicle,UAV)需要高级控制器才能在非结构化环境中作业并执行多项任务。最近业界提出了一种新的应用,即使用四旋翼无人机来运送包裹和货物,在这种情况下,地面标记识别是无人机自主着陆的关键技术之一。无人机着陆方法可分为传感器融合、设备辅助和基于视觉3 类。传感器融合的方法依赖多个传感器,以便收集足够的数据进行鲁棒的姿态估计。文献[1]将来自朝向下方的摄像机和惯性测量单元的数据组合以便地形的三维重建,基于二维高程图可以找到一个安全的着陆区域。
Saripalli等[2]使用特定的几何形状作为着陆垫,结合多个传感器的分析以便准确估计无人机相对于标记的位置。文献[3]提出一种基于地面的多传感器融合系统,该系统包括云台单元、红外摄像机和一个超宽带雷达,用于将无人机置于恢复区域并将其引向地面,设备辅助的方法依赖于地面传感器,以便精确估计无人机的位置和轨迹。Tang 等[4]使用基于红外线灯的系统,采用一系列设置在跑道上的平行红外灯,无人机上的摄像头配有用于捕获红外光的光学滤波器,图像被传送到控制系统以进行姿态估计。基于视觉的方法通过分析几何特征以便找到着陆垫和地面。文献[5]使用七阶段视觉算法进行实时目标识别和跟踪,应用于无人机在船上的自动着落。文献[6]将深度强化学习算法应用于解决移动平台上的无人机着陆。
TensorFlow 深度学习框架已有多项成功应用,学术界也纷纷将其应用于科学研究中。孙钰等[7]将TensorFlow 应用于森林虫害的实时监测;龚钢军等[8]将TensorFlow 应用于高压输电线上的异物识别;王一超等[9]将TensorFlow 部署于超级计算机π上,向上海交通大学提供计算服务;文献[10]利用TensorFlow 深度学习框架实现俄语词汇标音算法并设计原型系统。将TensorFlow 应用于多旋翼无人机的着陆地标识别是非常有意义的尝试,有助于解决多旋翼无人机应用中的着陆难题,加快多旋翼无人机的应用推广。本文以四旋翼无人机为例,首先组装基于Pixhawk 的飞行控制器组装四旋翼无人机,并将树莓派3B 和Pixhawk 飞行控制器通过串口相连接以构建机载电脑,通过组装的四旋翼无人机拍摄着陆坪图片;然后提出一种基于迁移学习的地面标识图像检测方法,该方法基于TensorFlow 深度学习框架,使用迁移学习技术在地面标识数据集上重新训练Inception-v3 模型以构建新的地面标识识别模型。在Windows下训练、测试的模型可移植到树莓派3B 上,完成了基于Python 和TensorFlow 开发的程序在不同操作系统下运行的验证工作。
1 地面标识数据集获取
目前网络上还没有满足实际应用的多旋翼无人机自主着陆时的着陆坪图片,无法满足深度学习神经网络的训练,所以只能通过无人机在空中实际拍摄图片来制作数据集。但由于人力、财力以及时间有限,所拍摄到的着陆坪图片及其他地面标识图片数量不足以支撑整个复杂深度神经网络的训练。为解决地面标识小数据集问题,采取迁移学习方法,利用少量的无人机着陆坪图片和来自网络的其他地面标识图片来训练复杂的深度神经网络模型。通过迁移学习,将源模型在大数据集上训练出来的优秀特征提取能力迁移到目标模型上[11]。
1.1 着陆坪图片获取
采用基于Pixhawk 的飞行控制器组装四旋翼无人机,并将树莓派3B 和Pixhawk 飞行控制器通过串口相连接,树莓派3B 通过USB 口与摄像头相连,摄像头镜头垂直向下,用于拍摄地面标识。搭载树莓派的无人机实物图如下页图1 所示。
树莓派系统上电后自启动拍照程序,着陆坪图片由无人机在距离地面2 m、4 m、8 m、12 m 时拍摄的着陆坪照片组成。
1.2 其他图片获取
通过网络下载机场、建筑物、森林、草地、河面、道路等图片,图片格式为jpg,实际下载下来的图片尽管后缀名为jpg,但实际为gif、png 等格式,因此,要作预处理,将非jpg 格式的图片删除。判断jpg 格式图片的Python 代码如下:
图1 搭载树莓派3B 的无人机
将无人机实际拍摄的着陆坪图片和从网络上下载的机场、建筑物、森林、草地、河面、道路等图片组成地面标识数据集,存于Groundmarking_pics 文件夹中,该文件夹包含airport、building、forest、grass、landingpad、river、road 等7 个子文件夹,每一个子文件夹名称为一种地面标识的名称,代表不同的类别。平均每一种类别有230 张图片。由于从网络上下载的图片大小不一致,因此,前期先对其进行预处理,处理成大小一致的图片。部分训练集样例如图2 所示。
2 基于TensorFlow 的着陆地标识别
2.1 卷积神经网络
卷积神经网络(Convolutional Neural Networks,CNN)可有效减少全连接神经网络的参数个数,其主要由输入层、卷积层、池化层、全连接层、Softmax 层组成,其中Softmax 层主要用于分类问题。卷积层是CNN 的核心层,其计算公式为:
图2 部分训练集样例
池化层可有效减小矩阵尺寸,从而减少最后全连接层中的参数个数。使用池化层可加快计算速度,也具有防止过拟合之作用,使用较多的池化操作为最大值池化,其公式为:
2.2 Inception-v3 模型
Inception-v3 是一种性能较好的卷积神经网络模型,其模型原理图[12]如下页图3 所示。
Inception-v3 具有计算量相对较小的优势,可移植到普通PC 机甚至嵌入式计算机上以进行图像识别。
2.3 基于Inception-v3 模型的迁移学习
图3 Inception-v3 模型原理图
深度学习算法在多旋翼无人机着陆研究中存在着一个关键的问题:着陆操作的大量训练数据很难得到,而Inception-v3 模型基于IMAgeNet数据集,已使用大量图片训练模型,若完全放弃则十分可惜。迁移学习解决了如何合理利用已有图片数据的问题。对未在原有网络中训练的对象分类,可以通过迁移学习重新训练,可实现从现有数据中迁移知识。Inception-v3 模型在IMAgeNet数据集上训练得到模型参数,但将Inception-v3 模型直接用于地面标识识别时,效果并不理想(详见3 实验与分析)。根据文献[13]的结论,可保留已经训练好的Inception-v3 模型中全部卷积层的参数,仅替换最后一层Softmax,将最后一层Softmax 之前的网络称为瓶颈层(bottleneck)。已训练好的卷积神经网络到瓶颈层可看作对新的图像数据集进行特征提取以应用于新的分类问题,将最后一层Softmax 输出层的1 000个节点换为7 个,用于多旋翼无人机自主着陆时地面标识的识别。基于TensorFlow 和Inception-v3 模型的迁移学习的训练流程如图4 所示。
3 实验与分析
3.1 直接基于Inception-v3 模型的识别
将地面标识数据集中的图片和从网络下载的部分水果图片用于测试Inception-v3 模型,识别结果如下页表1 所示。
从测试结果看,有以下明显误识别:着陆坪图片被误认为街道标志、河面被误识别为水蛇、草地被误识别为槌球等。尽管能准确识别香蕉,但桃子和樱桃都被误识别成其他水果或植物。由此可得:基于Inception-v3 模型的识别不能直接用于多旋翼无人机的自主着陆地标识别中。针对具体应用,需要有与应用相关的图片来重新训练Inception-v3 模型。
3.2 基于迁移学习的实验
实验主机为Intel Core i3-4160,8G B 内存,操作系统为Windows7 的台式机。采用TensorFlow 1.11,Python 3.5 作为编程语言。初始学习率为0.01,迭代次数从1 000 开始,每次增加1 000~10 000,其余参数保持不变,进行10 次实验,实验结果如下页图5所示。
图4 基于Inception-v3 的迁移学习训练流程
迭代次数为1 000 时,在实验机上约5 min 就能训练完成。10 次实验的平均正确率为92.6%,在数据集较小的情况下,10 次实验的识别准确率均超过90%,基于Inception-v3 的迁移学习具有较好的识别效果。另外实验结果表明仅靠增加迭代次数并不总是能提高识别正确率。在Windows 下训练、测试的模型可移植到树莓派3B 上,完成了基于Python和TensorFlow 开发的程序在不同操作系统下运行的验证工作,具体移植详见文献[14]。
4 结论
通过对基于TensorFlow 和迁移学习的四旋翼无人机着陆地标识别进行研究,得出以下结论:
表1 直接基于Inception-v3 模型的识别结果
图5 不同迭代次数下的识别正确率
1)总体而言,在仅有数千张训练图片时,基于Inception-v3 模型的迁移学习的正确率尚可接受。
2)若要进一步增加实用性,可通过增加无人机着陆时拍摄的地面标识训练集图片,实现且增加的训练集图片远小于训练完整的模型所需图片。
3)重新使用在IMAgeNet上训练的图像分类器的特征提取功能,并简单地在顶部训练新的分类层,对于多旋翼无人机着陆地标识别来说是非常有效的,该方法可以使用数千、数万而不是数百万张标记图像作为训练数据,具有较高的实用价值。