蔡舒平,孙仲鸣,刘 慧,吴翃轩,庄珍珍
(江苏大学电气信息工程学院,镇江 212013)
随着中国果园种植面积的不断扩大,果园农药喷洒和修剪采摘作业量日趋繁重,仅仅依靠人力和简单的工具已经无法满足需求。近几年大力推动的“智慧化农业”中将机器人技术应用于农业生产,这为农业的现代化升级提供了新的途径[1]。然而农业机器人在提高作业效率,减轻劳动强度的同时[2],也存在着不小的安全隐患。当机器人在果园内作业时,可能会撞到各种障碍物从而引发事故。所以农业机器人还必须具有一定的障碍物检测和识别的能力。
实际中的果园场景环境复杂,存在着各种障碍物,障碍物的存在会对机器人的作业造成影响。在观察多个果园的环境后,发现无人驾驶的农业机器人会对果园内的果农、机器操作人员以及其他行人的安全造成威胁,也会碰撞到电线杆和灯柱导致电气事故的发生,而树木本身不仅是农业机器人的作业对象,同时也是行驶途中的障碍物。因此本研究中选取了行人、果树、电线杆这3种典型的障碍物作为检测识别的对象。目前,国内外对于农业机器人避障检测的研究中,主要采用激光传感器检测、雷达传感器检测、机器视觉传感器检测等[3]。在室外的场景下,机器视觉传感器具有独特的优势,它比激光雷达传感器更廉价,并且具有采样周期短、实时性强、抗干扰性强、易于部署等优点[4]。
果园障碍物检测在机器视觉领域属于目标检测这一类任务,在传统目标检测中需要人工设计算子来提取出图像中目标物体的颜色、纹理和边缘等特征[5]然后进行定位和分类。如HOG(Histogram of Oriented Gradient)、SIFT(Scale-invariant feature transform)、SURF(Speeded Up Robust Features)和Canny等[6-9]算法。但较低的准确率、复杂庞大的数据量、不同物体及不同环境下特征的设计难度大、实时性差等缺点使传统目标检测方法不再适用于农业障碍物检测识别。随着近几年深度学习(Deep Learning,DL)理论的迅速发展,计算机硬件和图像采集设备的性能不断提升,基于深度卷积神经网络的目标检测算法已被广泛使用[10]。相比于传统目标检测算法,深度学习目标检测算法的参数权重都是通过输入大量的数据,经过反复的训练迭代学习得来的,检测结果更加精确,具有很强的自适应性和鲁棒性[11]。在典型的深度学习目标检测算法中,一类是基于区域推荐(Region Proposal)的目标检测,代表性的算法有:R-CNN[12]、Fast R-CNN[13]、Faster-RCNN[14]、SPP-NET[15]等,另一类是基于回归的目标检测,利用端到端(End to End)的思想,将图像归一化到统一大小后直接放入一个卷积神经网络(Convolutional Neural Networks,CNN)中回归预测出目标物体的类别和位置信息。代表性的算法有:YOLO(You Only Look Once)[16]系列、SSD(Single Shot MultiBox Detector)[17]系列等。虽然基于区域推荐的目标检测算法在准确度上占有一定的优势,但候选区域的提取过程存在计算量大、过程复杂度高、检测速度较慢的缺点,使得这种算法无法满足农业机器人对实时性目标检测的需求。而YOLO系列的算法有着高准确率和高检测速度的优点。特征提取也更着眼于整体,因此训练后分类和识别的效果优秀,能够满足复杂的果园环境中农业机器人实时障碍检测的要求。
YOLOv1目标检测网络于2016年由Redmon等[18]推出,随后它的v2和v3版本做出了不少改进。其中YOLOv2不仅将主干卷积的层数扩大到了19层,还借鉴了Faster-RCNN的锚框(anchor)方法来适应大小和长宽不同的检测目标,并将末尾的全连接结构替换成了1×1的卷积结构,使边框定位信息更准确。而YOLOv3借鉴了He等[19]提出的ResNet中的残差结构,有效解决了神经网络退化的问题,成功地将主干网络的卷积层数增加到了53层,同时使用多个尺度的检测头,在检测速度与检测效果上均达到了一个高峰。基于YOLOv3的改进与应用已经取得了不少研究成果,蔡逢煌等[20]加入了注意力机制,使卷积网络能更加专注于提取有用信息。刘洋等[21]在训练时加入MSRCR图像增强方法,提高了YOLOv3在雨雾天气下的检测精度。张健[22]运用了可变形卷积,使得YOLOv3的卷积网络在特征采样位置时能够随目标物的形状和大小自适应地改变。
Bochkovskiy等[23]在YOLOv3的基础上提出了YOLOv4网络,准确率和检测速度再次得到提升。但是在应用于农业机器人障碍物检测时,存在以下缺点:对遮挡目标的检测不够理想、模型参数量过大、难以部署于低算力的嵌入式设备等。本研究在原有YOLOv4网络结构的基础上进行改进,并通过试验测试其运用在果园障碍物检测的上效果。
YOLOv4的网络结构简图如图1所示。主干网络CSPDarknet由CSPX模块和CBM模块交替叠加构成,CSPX的结构如图2a所示,它的作用是将特征图一分为二。第一部分经过CBM和X个残差组件(Res unit)的卷积操作,第二部分直接与第一部分Concat结合。图2b中CBM模块由一个卷积层连接一个批量正则化(Batch Norm,BN)再连接一个Mish激活函数组成,而CBL模块与CBM的区别在于激活函数使用的是Leaky Relu。图 2c中的Res unit一部分经过2个CBM模块,与没有经过任何操作的另一部分进行Add连接操作。CSPDarknet在特征图中集成了梯度的变化,有效地强化了神经网络的学习能力,且在减少计算量的同时保持了较高的准确度。空间金字塔池化(Spatial Pyramid Pooling,SPP)模块位于主干网络和颈部网络的结合处,它的作用如图2d所示,将输入特征图分别通过最大池化的方式变为不同尺度的特征图,然后将不同尺度的特征图与原特征图进行Concat操作结合起来输出。采用这种方式,相比于普通的最大池化操作,能够更好地增加卷积核的感受野。此外,YOLOv4的颈部网络除了有特征金字塔网络(Feature Pyramid Networks,FPN)层外,还添加了路径增强网络(Path Aggregation Network,PAN)模块。如图2e所示,FPN将顶层的特征图通过上采样的操作依次与下层的特征图连接起来,融合了丰富多样的特征信息。但是高层级与低层级之间的卷积层跨度大,需要耗费大量的时间,而PAN则解决了这个问题,它通过下采样连接底层特征与高层特征,缩短了各层特征之间融合的路径。YOLOv4的输出预测部分除了损失函数和非极大值抑制(Non-Maximum Suppression,NMS)外都与YOLOv3保持一致。
YOLOv4的作者公布了在MS COCO数据集上的训练结果[23],准确率达到了43.5%,比YOLOv3提高了10%,并且速度也得到了提升,高达45.2帧/s,比YOLOv3快了12%。尽管YOLOv4检测模型性能优良,然而它使用的CSPDarknet主干网络参数量庞大,在特征提取的过程中计算参数量很大,需要耗费较长的时间。由于农业机器人在障碍物检测时应具有较高的实时性以便快速做出反应,所以改进模型来减少参数量势在必行。
1.2.1 深度可分离卷积
Sandler等[24]在2017年提出了专用于嵌入式移动设备的轻量模型Mobilenetv2,将标准卷积拆分为深度可分离卷积(Depthwise Separable Convolution)。如图 3所示。
图3a中标准卷积的过程是将各通道的输入特征图与相应的卷积核做卷积操作后相加再输出特征。传统标准卷积操作的计算量q1为
而图3b中深度可分离卷积把传统卷积中的一步卷积操作分离为一个3×3的深度卷积(Depthwise Convolution,DWC)和一个1×1的逐点卷积(Pointwise Convolution,PWC)两步操作,它的卷积操作计算量q2为
最后可以推出深度可分离卷积与标准卷积之间的计算量比值为
利用深度可分离卷积后,计算量和参数会下降到原来的1/4左右,这样的改进能够显著地提高检测速度。
1.2.2 逆残差组件
YOLOv4原本的残差结构(Residual Unit)中使用了传统卷积。由深度可分离卷积改进的Residual Unit,如果采用瓶颈结构(bottleneck)则先用1×1 PWC降维至0.25倍通道数后进行3×3 DWC,再用1×1 PWC卷积升维。然而Depthwise Convolutions含有的参数较少,如果先进行降维压缩再进行3×3的DWC的话,会造成提取的特征过少,从而影响检测精度。因此本研究采用逆残差组件(Inverted Residual Unit,InvRes Unit),用PWC升维扩张至6倍通道数后进行DWC特征提取,再用PWC降维压缩。这样形似倒瓶颈的结构使得特征提取在高维度进行,有利于提取更多的信息,能够在减少参数量的同时保持高精度。
1.2.3 软性非极大值抑制Soft-DIoU-NMS算法
在深度学习目标算法中,对于同一检测对象会产生许多不同大小的预测框,而本研究只需要保留一个最佳的预测框。非极大值抑制(Non-Maximum Suppression ,NMS)[25]算法的作用就是将某一类别的预测框按置信度排序,把最高分值的框设定为基准框,然后分别与剩余的框作交并比(Intersection over Union,IoU)计算,大于设定阈值的删除,小于阈值的保留,并依次循环,从而达到消除冗余重复的窗口,找到物体最佳位置的目的。在YOLOv4中使用的(Distance-IoU-NMS, DIoU-NMS)则是改进过的版本,DIoU-NMS除了考虑预测框重叠区域的IoU外,还考虑了两个预测框中心点之间的距离,能够有效解决检测框的损失函数收敛慢的问题。DIoU-NMS的计算式为
式中Si为当前类别的置信度得分,RDIoU为DIoU损失函数的惩罚项,Bi表示当前类别中所有被比较的预测框,μ表示所有预测框中置信度最高的那一个框,b和bgt表示2个预测框的中心像素点坐标,c指的是两个预测框的外接框的对角线像素长度,ρ表示欧式距离,ε表示人为设定的阈值,一般取0.5。
但是传统的非极大值抑制方式在检测紧密靠近且相互遮挡的物体时会存在漏检的问题,例如,当前检测出的结果为n个不同置信度的检测框。如果按照原来的DIoU-NMS方法进行处理,首先选中置信度最高的预测框,那么其余检测框在后续的DIoU比较中就会因为与置信度最高的预测框的重叠面积过大而被删除,造成误检率和漏检率增大。
在果园场景中,常常会出现树木或人的密集区域造成互相遮挡的情况[26]。针对这个问题,通过衰减函数来对与置信度最高的框有重叠部分的相邻检测框进行调整是个比较有效的方法。因此本研究中使用软性的DIoU-NMS算法(Soft-DIoU-NMS )。在该算法中,不再直接删除大于阈值的框,而是降低它们的置信度,与得分最高预测框的重叠度越高,其置信度下降得越快,反之则下降的越慢。进行目标检测时,如果使用改进后的Soft-DIoU-NMS,首先按照置信度排序,选择得分最高的检测框为基准,其余的检测框为待处理框,经过第一次衰减后,计算置信度得分,保留置信度最高的检测框,并将置信度次高作为基准。经第二次衰减后,获取置信度得分,依次类推,处理后置信度不变。最终通过综合删选取得理想效果。由Soft-NMS原公式[27]的线性表达式结合DIoU方法得到Soft-DIoU-NMS的公式如下:
Soft-DIoU-NMS算法公式与普通的NMS相比复杂度几乎没有改变,且实现同样简单。
改进后的YOLOv4网络整体外观没有变化,内部模块中用深度可分离卷积代替标准卷积。将残差组件替换为逆残差组件。并将NMS算法更替为Soft-DIoU-NMS算法。
计算机视觉设备使用ZED高清相机,结合配套软件工具SDK和OpenCV库。深度学习硬件平台为一台拥有Intel i9-10900K CPU、64 GB内存、NVIDIA GTX 2080TI 型号GPU的计算机,安装有CUDA10.0版本的并行计算框架和CUDNN7.6版本的深度学习加速库。在Tensorflow深度学习框架上实现研究中YOLOv4目标检测模型的训练。试验平台如图4所示。
底座为一个由电机驱动的四轮差速转向小车,搭载本试验所用的计算机和摄像头,来模拟农业机器人行进过程中对障碍物的检测。
本试验中果园障碍物数据集于7—9月期间拍摄并制作而成,拍摄地点位于江苏大学校园内的一处果园,果园内有梨树、桃树、杏树等约100棵,高度2~4 m,果树行间和两侧共有15座路灯和电线杆,采集图像时,让3名同学在果园内随意走动。用800万像素的摄像头共拍摄了2000张原始图像,包含3种代表性障碍物:果树、行人、电线杆或灯杆。采集图片中所有目标障碍物按照距离分为近、中、远目标。对于包含行人的图像分别采集静止、移动中、站立、蹲、弯腰等姿态的人,以丰富数据集的多样性,从而提升目标检测模型的检测能力。
本研究训练模型采用PASCAL VOC的数据集格式,先用Labelimg标注工具对每张图片目标物体所在区域进行手工数据标注矩形框,得到真实框ground truth用于训练。本试验中设定果树的标签为Tree,行人的标签为Person,电线杆或灯杆的标签为Pole。数据集按照8∶1∶1的比例划分为训练数据集、验证数据集与测试数据集。本试验中检测评价的指标包括准确率(Precision,P)、召回率(Recall,R)、调和均值F1、参数量(单位为MB)。P、R和F1的计算式分别为
式中Tp表示正确检测到果树、行人或电线杆的数量,Fp表示检测目标出现分类错误的数量,FN表示图片中的目标漏检的数量,F1表示准确率P和召回率R的调和平均值。当F1越逼近于1时说明模型优化得越好。
输入图像尺寸为608×608像素,为了增强模型的抗干扰能力,在训练时使用了多种数据增强的方法,包括随机裁剪、随机翻转、随机拉伸、随机失真、加入马赛克干扰。训练参数为:批量16,动量0.97,初始学习率0.001,衰减系数为0.9。
数据集内的图片通过图像增广将数量由原始的2000张扩增到了4000。同时为了缩短训练时间加快迭代收敛,在试验中下载了object365数据集上的公开预训练模型用于迁移学习。将预训练模型的参数值除分类预测层之外都赋给YOLOv4模型。然后使用上述训练参数对YOLOv4的预训练模型进行训练调整。
为了验证改进后的模型与常用的典型模型的效果。分别对改进前后的YOLOv4模型、YOLOv3、Faster-RCNN用同样的训练参数和数据集进行训练,4种模型的训练都进行50000次迭代,在训练集上每隔2000次迭代就在验证集上测试一轮平均准确率和召回率,并保存一次模型。根据记录下的训练日志生成变化曲线图,如图5所示。
训练完成后,取果园障碍物数据集中的测试集图片用于测试各模型的指标得分并列表统计,统计结果如表1所示。由表中结果可知,改进后YOLOv4模型进行果园障碍物检测时在准确率方面比原YOLOv4、YOLOv3、Faster-RCNN分别提高了0.61、4.18、0.04个百分点。在召回率方面,分别提高了0.68、6.37、0.11个百分点。同时,改进后的YOLOv4模型参数量压缩了原YOLOv4的75%,比YOLOv3小68.7%,比Faster-RCNN缩小了81%。在检测速度方面,改进后的YOLOv4比原YOLOv4快 29.4%,比YOLOv3快22.1%,比Faster-RCNN快346%。表明改进后的YOLOv4具有更优秀的性能。
表1 不同模型检测结果比较 Table 1 Comparison of detection results among different models
果园中的障碍物按照与农业机器人的距离可分为:近距离目标、中距离目标、远距离目标。其中近距离目标定义为和摄像头距离1~5 m,中距离目标定义为距离摄像头5~10 m,远距离目标定义为距离摄像头10~20 m。鉴于农业机器人的实际工作需要,这里20 m以上的目标不在考虑范围内。
为了详细地对比不同距离下改进后的模型与其他模型检测能力指标,额外准备100张不同于数据集的图片,每张图片包含不同距离下3种的果园障碍物。100张图片内的不同类别果园障碍物的数量如表2所示。
表2 不同距离下不同类别测试目标数量 Table 2 Number of test targets in different categories at different distances
不同距离下不同模型的P、R、F1指标如表3所示。
表3 不同距离下不同模型的障碍物检测结果 Table 3 Obstacle detection results of different models at different distances
分别用4种模型对不同距离下的目标检验其检测效果,检测效果如图6所示。
由于使用了Soft-DIoU-NMS算法,改进后的模型在检测目标密集或重叠区域时漏检率大幅减少,所以改进后的模型在中近距离上检测目标的能力均超过了原模型和其他模型。在远距离上,改进后的YOLOv4的检测能力,强于YOLOv3和Faster-RCNN模型,但比原YOLOv4模型在准确率上低了2.65%。这是由于逆残差结构的存在使得对小目标的特征敏感度变低造成的。然而在实际农业机器人的应用中,远处的障碍物随着机器人的运动由远及近,因此障碍物的避让决策会优先处理中近距离的目标,同时农业机器人的运动速度一般较慢,所以远目标的检测能力稍弱对农业机器人的避障几乎没有影响。因此从数据结果分析可知:改进后的YOLOv4模型更适合完成农业机器人对果园障碍物的检测任务。
1)本研究提出了一种改进型的YOLOv4目标检测模型用于果园多种障碍物的检测。利用深度可分离卷积代替原有的标准卷积,并在主干网络中用逆残差组件代替了原有的残差组件。使得模型的参数量和计算量仅为原来的1/4左右,更轻量化,利于农业嵌入式移动设备的模型部署。同时,改进了非极大值抑制的方式,采用Soft-DIoU-NMS来减少冗余框,对重叠目标的检测精度更高。使得果园农业机器人能更安全地行驶作业。
2)根据果园内的主要障碍物的类别,制作了包括果树、行人、电线杆这3类障碍物的图像数据集分别用于改进前后YOLOv4目标检测模型的训练和测试,并分别在近、中、远目标上对改进前后的模型和YOLOv3、Faster-RCNN模型进行对比试验。结果表明,改进后的模型具有较高的准确度和实时性,准确率和召回率分别达到了96.92%和91.43%,视频流检测速度达到了58.5帧/s,模型参数量仅有35 MB。本研究中改进的YOLOv4在提升了精准度的情况下,大幅度减少了模型的参数量,增强了实时性。本研究所提方法特别适用于中近距离目标的检测,更好地满足了农业机器人的实际应用场景。