崔学智,冯全,王书志,张建华
(1. 甘肃农业大学机电工程学院,兰州市,730070; 2. 西北民族大学机电工程学院,兰州市,730030;3. 中国农业科学院农业信息研究所,北京市,100081)
目前在农用无人驾驶方面,较为成熟的路径规划和避障方案是使用卫星导航[1]配合毫米波雷达[2],但这种方式对环境的感知水平较低,无法准确识别障碍物类型,只能在障碍物较少、信号良好的区域使用。相比于城市场景,农业田间场景障碍物体积相对较小,多数为柔性且位置固定(或移动缓慢)。探索快速、准确、经济的田间障碍物检测技术,可以推动无人驾驶农机发展,提升农业机械自动化和智能水平。
为解决田间障碍检测问题,很多学者采用计算机视觉技术进行了探索[3-4],传统方法处理速度快,但难以胜任复杂场景的高精度障碍检测。近年来随着深度学习技术兴起,涌现出许多优秀的深度卷积神经网络[5-8],它们在图像识别方面取得了良好效果,将这些网络作为主干网络,研究者们设计了专用于目标检测的网络模型[9-11],其特征提取快,分类回归更为准确,逐渐成为目标检测的主流。一些学者开始在农业田间场景检测方面使用深度学习方法。李云伍等[12]将丘陵山区田间场景障碍物分11类,构建了基于空洞卷积神经网络的田间道路场景图像语义分割模型,该模型包括前端模块和上下文模块,前端模块为VGG-16融合空洞卷积的改进结构,上下文模块为不同膨胀系数空洞卷积层的级联,采用两阶段训练方法进行训练。刘慧等[13]针对果园环境复杂难以准确检测出障碍物信息的问题,提出了一种改进SSD的深度学习目标检测方法,使用轻量化网络MobileNetV2作为SSD模型中的基础网络,以减少提取图像特征过程中所花费的时间及运算量,辅助网络层以反向残差结构结合空洞卷积作为基础结构对行人进行位置预测,在果园行人实时检测上取得了较好效果。
普通目标检测神经网络可以实现高精度目标检测,其缺点是运行消耗计算资源大,需要台式服务器,但由于智能农机内空间有限,服务器在其上部署困难,且田间道路颠簸,会导致其工作可靠性降低。为解决以上问题,需使用轻量级神经网络模型和坚固的边缘设备。轻量级神经网络模型虽然检测精度相对一般,但消耗计算资源较少。边缘设备虽然计算能力较弱,但体积较小,部署方便,在颠簸场景运行相对稳定,且价格较低。因此在边缘设备上使用轻量级目标检测模型实现实时障碍检测功能对于实用的、廉价的无人驾驶农机具有重要意义。
本文选择常用的边缘设备NVIDIA JETSON TX2作为葡萄园田间场景障碍物快速检测算法的硬件运行平台,使用YOLOV3-TINY、YOLOV4-TINY、EfficientDet-D0、YOLO-FASTEST4种轻量级神经网络在以葡萄园作为背景的自建田间场景数据集进行训练,再将得到的4种网络模型移植到TX2上,通过试验比较这几种目标检测网络的障碍检测精度以及在TX2上的运行帧率、计算资源占用等项目,采用加权评分制对4种网络在TX2上的综合表现进行打分,优选出最适合移植到TX2上的目标检测网络。
1.1EfficientDet-D0
EfficientDet[14]是Google Brain于2019年11月发布的目标检测网络。其多尺度特征融合网络采用了加权双向特征金字塔网络(BIFPN)进行多尺度特征融合,通过自上而下以及自下而上的、跨尺度的对不同尺度的特征进行加权融合,BIFPN采用深度分离卷积进行特征融合,并在每次卷积后加入批量归一化和激活,从而实现高效的聚合不同分辨率的特征。
本文所使用的EfficientDet-D0模型是EfficientDet所提供的预训练模型中的轻量级模型,大小仅15.1 MB,非常适合迁移到边缘设备上运行,其总体结构由EfficientNet-B0的3层64通道的BIFPN以及3层的类别预测/目标检测层(CONV层)组成,其中EfficientNet-B0由1个输出通道数为32、卷积核尺寸为3×3,步进为2的卷积层和16个MBConv运算块组成。
EfficientDet采用的损失函数分为两种,一种是分类损失函数,另一种是回归损失函数。其中分类损失函数采用focal loss损失函数,用来控制正负样本的权重以及控制容易分类和难分类样本的权重;回归损失函数采用SmoothL1 loss损失函数。
1.2YOLOV3-TINY
YOLOV3[15]系列是2018年最热门的目标检测网络之一,而YOLOV3-TINY是YOLOV3的简化版,其模型体积为33.7 MB。YOLOV3-TINY主干网络在YOLOV3的基础上进行了删减,去掉了一些特征层,采用了7层2维卷积层辅以6层最大池化层网络提取特征。多尺度特征融合方面,YOLOV3-TINY使用了FPN多尺度特征融合网络,提升了对于细小目标的检测能力。连接网络方面,YOLOV3-TINY采用了13×13、26×26组成分辨率探测网络。
1.3YOLOV4-TINY
YOLOV4系列目标检测网络是Bochkovskiy等[16]于2020年4月提出的目标检测网络系列,其中YOLOV4-TINY是YOLOV4的轻量级模型,其模型大小仅23.1 MB。YOLOV4-TINY为简化运算,减少模型大小以及提高运行速度,仅使用FPN进行特征融合,并在损失函数中做了改进,使用了CIOU作为回归损失函数。
在主干网络方面,YOLOV4-TINY使用CSPDarknet53-TINY主干网络,总体结构可以大致分为2个部分,主干网络、多尺度特征融合网络。主干网络首先是通过2个特征提取层(包含2维卷积、批量归一化、Leak ReLU激活)对图片特征进行初步提取,然后3次使用CSP模块加MAX POOLING层所组成的结构块进行进一步特征提取。多尺度特征融合使用了若干卷积层和一组FPN,YOLOV4-TINY仅使用了两个特征层(YOLO层)进行分类与回归预测。
1.4YOLO-FASTEST
YOLO-FASTEST是2020年9月提出的超轻量级YOLO网络模型。它在YOLOV4-TINY网络模型的基础上以降低检测精度为代价,进一步减少其模型体积,其尺寸仅为1.3 MB,是目前最小的YOLO模型,方便移植到各类平台,但是模型网络结构较为复杂,共126层。
2.1.1 训练平台及训练参数
本试验的训练平台其搭载了Intel©CORETMi5-8400六核处理器,基础频率2.80 GHz,最大睿频4.00 GHz,GPU采用了NVIDIA RTX 2060 6 GB,基础频率1 210 MHz,最大频率1 435 MHz,内存为Samsung DDR4@2 666 MHz 8 GB×2。软件环境为Windows 10 1909 64 bit家庭版操作系统,GPU驱动程序版本为452.06、CUDA Toolkit 10.2。表1为4种网络模型的实现方式。
表1 4种网络模型的实现方式Tab. 1 Achievement method of four networks
其中,EfficientDet-D0、YOLOV3-TINY、YOLOV4-TINY的训练参数一致:学习率0.001,迭代次数为2 000,采用批量训练的方法,将训练集以及测试集分为32个批次进行,既batch-size为32,将数据集设置为640×640的统一分辨率进行训练和测试。
YOLO-FASTEST使用官方原版YOLOV4主程序,仅权重文件、配置文件不同,训练参数设置:迭代次数18 000(2 000×类别数9),其余参数与其他3种网络模型一致。
2.1.2 边缘设备测试平台
障碍检查网络训练好后会被移植到边缘设备上进行实际障碍检测测试。本试验中的边缘设备平台为NVIDIA公司的NVIDIA JETSON TX2(以下简称TX2)。其搭载了由HMP Dual Denver 2双核处理器以及Quad ARM@A57四核处理器所组成的六核处理器,最高频率2.00 GHz,GPU采用了NVIDIAPascal架构芯片NVIDIA Tegra X2,拥有256个CUDA计算核心,GPU最高频率1 300 MHz,内存为LPDDR4 8 GB,该边缘设备拥有板载CSI摄像头。软件环境Ubuntu18.04、python3编程语言、C编程语言、Pytorch深度学习框架、CUDA Toolkit 10.0、CUDNN 7.5.0。
田间场景图像的采集是在甘肃省葡萄酒产业技术研发中心的葡萄园中完成,地点是甘肃省兰州市安宁区甘肃农业大学校内。使用了搭载Intel REALSENSE D415摄像头的上海一坤Bulldog无人车进行了葡萄园田间数据采集,对葡萄园内数条田埂周围环境分时段(上午、中午、傍晚)、分天气(晴天、阴天、雨天)、光照(无阴影、少量阴影遮蔽、大量阴影遮蔽、顺光、逆光)、并以不同分辨率(640×480、1 280×780、1 920×1 080)进行了图像、视频采集。之后将视频文件进行了图像拆分,拆分帧率为10张/s,剔除冗余重复图片,最终得到了无人车视角的4 400张田间场景图片,包含9种障碍物,保证了数据集的丰富性。
将采集到的上述4 400张图片数据集使用labelme标注软件对田间常见障碍进行标注,共分为9类:people(人)、fence(栅栏)、trellis(葡萄架)、stone(石块)、root(根茎)、hole(坑洞)、dog(狗)、stair(台阶)、barrel(水桶)。考虑到数据集制作图片随机选取的原则、将所有图片按拍摄时间分为10组,按照4∶1原则分别从这10组图片中进行随机选取,其中80%的图片设置成训练集、剩余20%为测试集。共得到训练集3 520张,测试集880张。
本文使用均值平均精度(mean Average Precision,mAP)来衡量网络模型精度的好坏,其计算式
(1)
式中:N——类别数,在本试验中为9;
AP——单个类别平均精度。
AP按照COCO竞赛方式计算
(2)
其中Ri与Pi为P-R曲线上的取值点,i∈{0,0.01,0.02…0.99,1.00}共计101个值,COCO的AP计算方式会取多个交并比(Intersection Over Union,IOU)值进行计算,本试验的AP仅取IOU=50%的结果。
以单个类别召回率为横轴,单个类别识别精度为纵轴,即可绘制P-R曲线。P-R曲线的P为单个类别识别精度(Precision),其计算式
(3)
式中:TP——分类器认为是正样本,并且符合实际情况;
FP——分类器认为是正样本,但实际是负样本。
P-R曲线的R为单个类别召回率(Recall),其计算式
(4)
式中:FN——分类器认为是负样本,但是实际是正样本。
本试验为TX2实时视频的障碍检测试验,TX2开启最大性能模式(MAXN模式),关闭所有无关终端窗口,确保每次测试仅开启一种网络模型检测程序以及jetson-stats系统资源监测程序。
实时视频检测的目的是为了评价不同障碍检测网络模型在TX2上的运行性能,优选适合在TX2进行实时目标检测的网络模型。由于运行目标检测模块会占用不小的系统资源,可能会影响整个检测系统的其他功能模块运行(如距离检测、避障等),所以除了检测精度和帧率外,有必要结合各模型对硬件资源占用情况综合分析其性能。本文采用打分制来评价网络模型的综合表现,其计算公式
(5)
式中:ST——总得分;
s1、s2、s3——mAP项得分、平均帧率项得分、资源占用得分;
w1、w2、w3——上述3项得分的加权系数,其和为1。
考察资源占用得分时从以下3个子项给出其分值:GPU使用情况、CPU使用情况以及RAM使用情况。
根据经验,在田间场景障碍实时检测中,检测流畅性最为重要,障碍物检测精度次之,硬件资源消耗情况再次之。因此本文根据重要程度对所有检测项加权系数做出如下赋值:w1为0.4,w2为0.5,w3为0.1。
所有测试项目的评分以设置标准为最高得分(5分),每下降标准的20%,得分降低1分,测试项目评价标准如表2所示。
表2 测试项目评价标准Tab. 2 Rating criteria of test items
图1(a)给出了EfficientDet-D0、YOLOV4-TINY和YOLOV3-TINY的训练损失曲线,YOLO-FASTEST迭代次数与上述三种网络相差较大,其训练损失曲线如图1(b)所示。EfficientDet-D0损失曲线收敛最为迅速,且最终损失值比其他两种网络模型小2.0左右。YOLOV4-TINY、YOLOV3-TINY总体误差曲线十分相似,其曲线趋势几乎一致,YOLOV3-TINY曲线略优于YOLOV4-TINY,差距在0.2以内。对比图1(a)与图1(b)可以得知,YOLO-FASTEST总体损失曲线无论从曲线稳定性上还是最终值上都逊色于其他3种网络。YOLO-FASTEST总体损失曲线波动较大,其最终损失值大于2.5。
(a) EfficientDet-D0、YOLOV3-TINY、YOLOV4-TINY
图2为4种网络模型在测试集上的mAP以及各子类的AP。EfficientDet-D0、YOLOV4-TINY、YOLOV3-TINY和YOLO-FASTEST三种网络模型的mAP分别为0.598、0.601、0.648和0.401,YOLOV3-TINY的mAP值最高。而YOLO-FASTEST网络模型的mAP最低。
从图2可以看出,在4种网络模型对于各子类AP值测试中,EfficientDet-D0网络模型在“hole(0.93)”“people(0.923)”“root(0.727)”“barrel(0.534)”“fence(0.742)”等五类障碍上的AP值测试处于第一位,对“stair(0.079)”类障碍的AP值测试处于第4位。YOLOV3-TINY网络模型对于“trellis(0.597)”“stair(0.316)”“stone(0.627)”“dog(0.785)”四类障碍的AP值测试处于第1位,对于“fence(0.582)”类障碍的AP值测试处于第4位。
YOLOV4-TINY网络模型对于“hole(0.818)”“people(0.809)”三类障碍的AP值测试处于第4位。YOLO-FASTEST对于“trellis(0.271)”“root(0.398)”“barrel(0.049)”“stone(0.224)”“dog(0.000 2)”五类障碍处于第4位。
图2 4种网络模型最终模型测试柱状图
在这4种网络模型中,EfficientDet-D0网络模型对于自建数据集内五类障碍检测平均精度在4种网络中最高,但对细小障碍的检测平均精度可能较差;YOLOV3-TINY网络模型对于自建数据集内的障碍检测平均精度在4种网络中处于第2位,其四类障碍检测平均精度在4种网络中最高,且没有精度低(AP<0.1)的明显短板;YOLOV4-TINY网络对于自建数据集内障碍的平均检测精度比较中庸,但其各子类的AP与最好模型的AP相差不大;YOLO-FASTEST网络模型除了对于自建数据集内“hole”“people”“fence”的AP尚可外,其他类AP均较低。
总体而言,对于自建数据集内纹理清晰、画质较好的两类“hole”“people”而言,4种网络模型平均检测精度均在80%以上,处于较好水平。对于画质模糊,背景复杂的“stair”类而言,4种网络检测平均精度均较差。对于其他类别障碍而言,4种网络模型表现不一,各有优劣,但总体水平比较一般,如图3所示。
(a) EfficientDet-D0 (b) YOLOV3-TINY
表3为TX2上实时视频检测结果。根据表3的实时检测结果以及图2中给出的4种网络模型的mAP值,采用2.5节的评分标准计算了各模型在TX2上的评分结果,如表4所示。从表4可以看出YOLO-FASTEST和EfficientDet-D0在资源占用项得分很高,特别是前者,因其模型尺寸最小,占用内容也最少。出乎意料的是,虽然YOLO-FASTEST是C语言编写且模型很小,但其检测速度只排在第3位,无法达到实时障碍检测的效果,与原文试验结果相差很大。究其原因,可能是TX2的GPU与原文试验中的型号不同,在TX2的GPU和CPU上,其核心Darknet分组卷积没有得到很好的支持(可能与NVIDIA的CUDNN有关),检测效率低下,导致在TX2上的检测速度很慢,其运行效率反而不如使用python编写的YOLOV3-TINY和YOLOV4-TINY,仅略强于模型复杂度远高于它的EfficientDet-D0。这说明模型尺寸小和高效编程语言并不能必然导致模型速度快,对于并行单元很多的深度检测模型,各种支持库和深度开发平台与运行硬件的配合与优化可能更为重要。
表3 TX2视频实时检测试验结果Tab. 3 Experimental results of real-time video detection on TX2
表4 4种网络模型得分表Tab. 4 Score table of four network models
由表4可得,对于“平均帧率”检测项,YOLOV3-TINY和YOLOV4-TINY排在前2位,可以实现实时检测,且其mAP值均较高,虽然占用资源项得分较低,但凭借w1和w2的高权重,使其分别占得综合评分的前2位。因此在TX2上进行单纯性的障碍检测时,可优先选择YOLOV3-TINY。如果实际自动驾驶系统由多种模块组成,当有多个深度学习任务同时需要申请GPU时,考虑到YOLOV3-TINY对GPU占用率最高,采用YOLOV4-TINY可能更有利于系统整体性能的提升。
EfficientDet-D0的优点是对于9类障碍物中的5类障碍目标检测精度相比而言最高,且其检测置信度非常高,不易出现误判,消耗系统计算资源较少,利于系统其他程序运行。缺点是其对细小障碍目标的检测存在较为明显的检测精度短板,进而导致了总体检测精度的下降,因其对于系统计算资源的调用不够充分导致了实时检测速度慢。EfficientDet-D0对本场景的适用性较差,更适合静态图片检测。
YOLOV3-TINY的优点是对于9类障碍物的总体检测精度最高,且没有检测短板,实时视频检测流畅。缺点是其检测置信度一般,可能出现误判且系统计算资源占用较高。YOLOV3-TINY对本场景的适用性相比之下最好,适合运行单障碍检测任务的场合。
YOLOV4-TINY的优点是平衡性较好,可以在系统计算资源占用适中的情况下进行较为流畅的实时视频检测,且不存在精度上的明显短板。缺点是检测置信度一般,可能出现误判。YOLOV4-TINY对本场景的适用性较好,适合多任务并行运行的场合。
YOLO-FASTEST的优点是检测置信度较高,且系统计算资源占用相比而言最低;缺点是检测精度差,存在短板,且因CUDA对于C语言程序支持性较差导致了系统资源调用不充分,致使实时视频检测卡顿。YOLO-FASTEST对本场景的适用性差,更适合静态图片检测场景。
为了实现在边缘设备TX2上进行葡萄园田间场景目标检测,本文使用4种目前较为热门的轻量级目标检测神经网络模型在自建数据集上进行训练,并移植到TX2上进行了试验,得到以下结论。
1) YOLOV3-TINY作为一款2018年提出的轻量级网络模型,在自建数据集上,其mAP值(64.8%)领先于EfficientDet-D0(59.8%)、YOLOV4-TINY(60.1%)、YOLO-FASTEST(40.1%),且各子类AP值并无明显的非常低的短板(<10%)。
2) EfficientDet-D0与YOLO-FASTEST对于AP值较好的类别(>80%)目标检测置信度比YOLOV3-TINY、YOLOV4-TINY高,且更稳定,YOLOV3-TINY、YOLOV4-TINY在AP值较好的类别目标检测中存在置信度较低且波动明显的问题。
3) 根据试验结果,在TX2上,如无需同时运行多个GPU任务,YOLOV3-TINY得分最高,可以流畅的进行摄像头视频检测,实时性较其他3种轻量级网络模型更优,但是其实时视频检测耗费GPU资源较大。如需同时运行多个GPU任务,YOLOV4-TINY可以在消耗较少计算资源的情况下比较流畅的进行实时视频检测。