基于DA2-YOLOv4算法绿篱识别研究*
2022-08-17韦锦李正强许恩永蒙艳玫韦和钧武豪
韦锦,李正强,许恩永,蒙艳玫,韦和钧,武豪
(1. 广西大学机械工程学院,南宁市,530004; 2. 东风柳州汽车有限公司,广西柳州,545005)
0 引言
随着人们经济水平的提高和环保意识的增强,城市绿化进入了快速发展阶段,具有成型刀具的车载式绿篱修剪机越来越被广泛用于高速公路隔离带、城市道路绿化带、园林观赏绿篱等绿化景观的修剪,只需将成型刀具移至柱形或球形绿篱上方的水平截面中心将旋转关节旋转一周即可完成修剪。然而,通过人工操作进行修剪不仅需要操作员具有娴熟的技术,还容易导致疲劳,出现误操作,所以一直无法得到普及,通过经济的视觉传感器来实现修剪自动化成为解决该问题的最佳方案。
想要实现修剪自动化,首先必须进行绿篱识别,因此研究能准确、快速地识别绿篱的算法是实现绿篱修剪自动化的基础。近年来基于深度学习的目标检测算法已经全面超过传统目标检测算法,主流的目标检测算法目前主要分为双阶段和单阶段两大类,其中双阶段目标检测算法主要有:RCNN[1]、SPPNet[2]、Fast RCNN[3]、Faster RCNN[4]、FPN[5]等,单阶段目标检测算法主要有:YOLO(You Only Look Once)[6]系列、SSD(Single Shot MultiBox Detector)[7]系列、RetinaNet[8]。双阶段目标检测算法虽然精度较高,但是很难满足实时性要求,相比之下,单阶段目标检测具有速度快、结构简单的优点,而且其精度已经十分接近双阶段算法,其中YOLOv4[9]更是被广泛研究甚至已经成功应用于实际。
文献[10]提出一种改进YOLOv4的交通标志识别算法,通过深度可分离卷积、双向特征金字塔、Focal Loss函数成功减少了参数量和模型大小,提升了检测速度和精度。文献[11]将YOLOv4用于识别不同种类果实,并且完成果实采摘,每种果实识别准确率可达94%以上,检测时间为12.3 ms。文献[12]对YOLOv4进行改进并用于林业害虫实时检测,在检测速度基本不变的情况下,mAP可以提升6.1%。文献[13]也将改进的YOLOv4用于果园障碍物检测,成功将模型大小压缩了75%,检测速度提高了29.4%,能快速完成障碍物的识别和分类。文献[14]使用YOLOv4进行黑色素瘤病变检测,能检测同一患者的多种皮肤疾病,以及各种病人的多种疾病。文献[15]提出一种YOLOv4-FPM模型,可以实现无人机对桥梁裂缝的实时检测,mAP可达97.6%。
虽然YOLOv4已经具有很好的性能,但是YOLOv4是一种通用目标检测算法,根据使用场合进行专用化改进还可以获得更高的性能,因此为了满足车载式绿篱修剪机自动化修剪的需要,为了更鲁棒、更准确、更快速地识别绿篱,本文对YOLOv4进行专用化修改,提出了一种AD2-YOLOv4绿篱识别算法。使用针对性Mosaic数据增强获得更合理的数据扩充,使训练更具鲁棒性;在YOLOv4的CSPDarknet53主干网络引入空洞卷积(Dilated convolution),变成了D-YOLOv4 算法,增加了感受野(Receptive Field),提升了网络准确率和速度;在SPP结构中引入平均池化(Avg pooling),变成了DA-YOLOv4算法,能充分利用上下文信息,使网络更具鲁棒性;通过删减小目标检测,变成了DA2-YOLOv4算法,能减少了大量计算,获得了巨大速度提升;使用DIOU柔性非极大值抑制(Soft-DIOU-NMS),在检测重叠目标时获得了更好的效果。
1 YOLOv4网络模型
如图1所示为YOLOv4的网络模型,主要包括:输入(Input)、主干(Backbone,即CSPDarknet53)、颈部(Neck)和头部(Head)。Conv1表示1×1的基础卷积操作,负责调整张量和尺寸;Conv3表示3×3的基础卷积操作,负责提取特征;BatNor表示批量标准化操作,可以加快收敛速度;Mish和LeakyReLU都是激活函数操作,可以增加网络非线性;Concat表示堆叠操作,用于堆叠相同尺寸的特征图(Feature Map)。通常所说的卷积操作实质上是基础卷积+批量标准化+激活函数的组合操作,而且往往进行3×3卷积提取特征前后都会进行1×1卷积来调整张量和尺寸。
输入端为具有3个通道的彩色图像数据集,每张图像都预先标注了检测对象的位置和种类。YOLOv4采用Mosaic 数据增强和自对抗训练(Self-Adversarial Training, SAT)进行数据扩充,其中Mosaic 数据增强使用4张图片进行随机变换后组成一张图片,可以增加样本中的小目标,而且有利于使用一张GPU进行训练;SAT使神经网络反向更新图像,在添加扰动后的图像上训练,增强了网络的鲁棒性。
主干网络为整个网络模型的核心,负责从输入图像中进行特征提取,常用主干网络有VGG[16]、ResNet[17]、CSPDarknet53[18]等。YOLOv4采用CSPDarket53作为主干网络,其在Darknet53中引入了CSPNet结构,一方面可以消除网络反向优化时的梯度信息冗余现象,增强了学习能力;另一方面可以在保证准确率的情况下降低网络计算量,实现了网络轻量化。采用Mish激活函数,增强了深层信息的传播。
颈部网络的作用是增强特征,一般是通过上采样和下采样方法对不同层次的特征进行融合。YOLOv4主要采用了空间金字塔池化(Space Pyramid Pooling, SPP)[19]和路径聚合网络(Path Aggregation Network, PANet)[20],SSP通过四个不同大小的最大池化(Max pooling)来实现,可以扩大感受野,增强上下文特征,提升了网络鲁棒性和准确率;PANet通过特征金字塔网络(Feature Pyramid Network, FPN)和一个自下而上的路径增强(Bottom-up Path Augmentation,BuPA)结构来实现,FPN可以融合不同层次的特征,BuPA可以增强较低层次的特征,进一步提升了网络准确率。
头部网络用于预测,包括对先验框回归得到预测框和分类,是单阶段网络和双阶段网络的差别所在。YOLOv4作为单阶段网络,同时进行先验框的调整和分类,输出密集、适中、稀疏3种不同网格尺寸的特征图,分别检测小、中、大3中目标。对于只识别出现最多的球形绿篱和柱形绿篱共2个类时,头部输出特征图的通道数为21,即
(4+1+class_num)×3=(4+1+2)×3=21
其中4个通道用于调整矩形预测框大小,1个通道用于判断是否检测到物体,class_num个通道分别代表了各类别的置信度,并且每次检测含有3个先验框。
图1 YOLOv4网络Fig. 1 YOLOv4 network
2 DA2-YOLOv4的改进
2.1 网络结构的改进
如图2所示,主要对YOLOv4的主干网络、SPP结构和PANet结构进行了改进。对于CSPDarknet53主干网络,将最开始的3×3卷积操作C3BM以及CSPResBlockX中的第一次3×3卷积操作C3BM均替换成了3×3的空洞卷积操作D3BM,并将修改后的CSPDarknet53、CSPResBlockX分别记为D-CSPDarknet53和D-CSPResBlockX;对于SPP结构,将中间的两个最大池化改成了平均池化(Avg pooling),并将修改后的SPP记为A-SPP;对于PANet结构,删除了对小目标的检测部分,并将改进后的PANet记为PANet2。
2.1.1 D-CSPDarknet53的改进
如图3(a)所示是卷积核大小(Kernel Size)为3×3,填充(Padding)为1×1,步长(Stride)为1的普通卷积,其感受野(Receptive Field)只有3×3,而且得到的特征图信息过于紧密,但是对于绿篱来说,其大部分相邻像素间的信息差异并不大。
因此过于紧密的信息是不必要的,对于7×7的图像,需要进行(7-3+1)×(7-3+1)=25次3×3卷积计算。
如图3(b)所示是卷积核大小为3×3,填充为0,步长为1,扩张率为2的空洞卷积[21],其感受野为5×5。由于空洞卷积拥有更大的感受野,因此其能接触到的原始图像范围就更大,这意味着它蕴含更为全局、语义层次更高的特征,这十分有利于提高网络的鲁棒性和准确率,而且对于7×7的图像只需要进行(7-5+1)×(7-5+1)=9次卷积操作,大幅提升了计算速度,因此考虑在CSPDarknet53中引入空洞卷积来提升网络鲁棒性、准确率以及速度。
图2 DA2-YOLOv4 网络结构图Fig. 2 DA2-YOLOv4 network structure diagram
(a) 普通卷积
(b) 空洞卷积 图3 普通卷积和空洞卷积对比Fig. 3 Comparison between ordinary convolution and dilated convolution
首先尝试将CSPDarknet53中所有用于提取特征的3×3卷积全部替换成3×3空洞卷积,结果特征图尺寸大幅缩小,卷积计算量下降,速度得到提升,但是出现了网格效应(Gridding Effect),连续的空洞卷积使数据越来越稀疏,捕获信息能力差,不利于卷积训练,所以提出的D-CSPDarknet53不在残差块中引入空洞卷积,而且为了不使每层D-CSPDarknet53输出的特征图尺寸缩小,会进行空洞卷积后的下一个卷积中增加填充,因此D-CSPDarknet53相比与CSPDarknet53只在进行空洞卷积时缩小了特征图尺寸。理论上,通过3×3普通卷积将608×608×3(需要添加1×1填充,所以实际上是610×610×3)的输入图片变为608×608×32的特征图,进行的3×3卷积计算量
(610-3+1)2×3×32=35 487 744
换成3×3空洞卷积后的3×3卷积计算量为
(610-5+1)2×3×32=35 254 656
减少了233 088的3×3卷积计算量,同理可得每个D-CSPResBlockX分别减少了3 717 120、4 947 968、9 830 400、19 398 656、37 748 736的3×3卷积计算量,因此D-CSPDarknet53能比CSPDarknet53减少75 875 584的3×3卷积计算量,拥有更快的速度和更大的感受野。
如表1所示为YOLOv4与使用D-CSPDarknet53替换了CSPDarknet53的D-YOLOv4的性能对比,D-YOLOv4的mAP提高了4.5%,训练时间缩短了11.94%,FPS提升了3.7。
表1 D-CSPDarknet53和CSPDarknet53的对比Tab. 1 Comparison of D-CSPDarknet53 and CSPDarknet53
2.1.2 A-SPP的改进
YOLOv4中SPP的主要作用是增加感受野,其核心是4个不同尺度的最大池化,池化还可以减少特征和参数,可以保持某种不变性(旋转、平移、伸缩等),有助于增加网络鲁棒性,其中最大池化更有利于提取纹理特征,平均池化更有利于关联上下文信息。
如图4所示,最大池化在前向传播中只取patch中最大的值,在反向传播中也只把梯度值传给patch中的某一个,其余设为0,并没有充分利用上下文信息。
(a) 前向传播
(b) 反向传播 图4 前向传播最大池化和反向传播最大池化Fig. 4 Forward propagation max pooling and reverse propagation max pooling
如图5所示,平均池化在前向传播中会用到patch中所有的值,即取所有值的平均值,在反向传播中也会将梯度值平分给patch中所有的值,对于绿篱这种大目标而言,其中心点附近的信息都是相似的,平均池化充分利用了这些信息,使检测更加准确。
(a) 前向传播
(b) 反向传播 图5 前向传播平均池化和反向传播平均池化Fig. 5 Forward propagation agv pooling and reverse propagation max pooling
本研究尝试将所有最大池化都替换成平均池化,但是并没有只替换中间两个最大池化的效果好,这是由于太大的池化并不适合使用平均池化,会导致纹理缺失,小的平均池化和大的最大池化结合使用才能达到最好的效果。
如表2所示为D-YOLOv4与使用了A-SPP的DA-YOLOv4的性能对比,DA-YOLOv4在训练时间和FPS基本不变的情况下,将mAP提升了1.2%。
表2 A-SPP和SPP的对比Tab. 2 Comparison of A-SPP and SPP
2.1.3 PANet2的改进
YOLOv4之所以要引出主干网络CSPDarknet53最后三层CSPResBlockX的输出主要是为了分别检测小、中、大目标,但是对于检测绿篱这种大目标来说是没有必要保留对小目标的检测,而且其特征图网格数还是最多的,在头部进行先验框回归和分类时要占用大量计算,因此删除对小目标的检测几乎不会降低对绿篱识别的准确率,但却能大幅减少计算量,提升检测速度。
如表3所示为DA-YOLOv4与使用了PANet2的DA2-YOLOv4的性能对比,DA2-YOLOv4在mAP只降低了0.1%的情况下,将训练时间缩短了18.22%,FPS提升了11.5。
表3 PANet2和PANet的对比Tab. 3 Comparison of PANet2 and PANet
2.2 针对性Mosaic数据增强
YOLOv4使用的Mosaic数据增强是参考了2019年提出的CutMix数据增强,使得YOLOv4可以只使用一张GPU显卡就可以完成训练。如图6所示,Mosaic数据增强采用4张图片分别进行随机缩放、随机裁剪、随机旋转、随机翻转、随机色域变换等操作,然后以随机排布的方式进行拼接以丰富数据集,一方面通过随机缩放增加了很多小目标,使得网络鲁棒性提升,另一方面Mosaic增强训练时,可以直接计算4张图片的数据,使得Mini-batch大小并不需要很大,因此一个GPU就可以达到比较好的效果。然而,需要修剪的绿篱一般都是水平摆放的,而且颜色一般为绿色、黄色、红色等,因此Mosaic数据增强通过垂直翻转、大角度旋转、随机色域变换等来丰富数据集是不合适的,这反而会误导网络,丢失绿篱方向、颜色等显著特征,降低检测置信度。
如图7所示,本文根据绿篱先验数据,针对性地不进行垂直翻转,而且只在一定范围内进行随机旋转和特定区间内进行随机色域变换,因为户外环境光照影响较大,所以还加大了对亮度调整的概率和幅度,丰富了不同亮度下地数据集,因此针对性Mosaic数据增强不仅具备Mosaic数据增强所有的优点还可以更合理地丰富数据集,加强了绿篱方向、颜色等显著特征,抑制了光照特征,增加了检测置信度和鲁棒性。
图6 Mosaic数据增强Fig. 6 Mosaic data enhancement
图7 针对性Mosaic数据增强Fig. 7 Targeted Mosaic data enhancement
如表4所示为DA2-YOLOv4与使用了针对性Mosaic的DA2-YOLOv4的性能对比,使用了针对性Mosaic的DA2-YOLOv4在训练时间和FPS上基本没有变化,但使mAP提升了1.7%。
表4 针对性Mosaic的DA2-YOLOv4和 DA2-YOLOv4的对比Tab. 4 Comparison of targeted-mosaic DA2-YOLOv4 and DA2-YOLOv4
2.3 Soft-DIOU-NMS
在目标检测算法中,同一检测目标往往会产生许多不同大小的预测框,而我们只需要保留一个最佳的预测框,因此非极大值抑制(Non-Maximum Suppression,NMS)应运而生,其主要作用就是将某一类别的预测框按置信度排序,再把最高分值的框设定为基准框,然后分别求剩余的框与基准框的交并比(Intersection over Union,IOU),如果交并比大于设定阈值,说明很可能是同一检测目标,要进行删除;如果交并比小于阈值,说明不是同一检测目标,选择保留,依此遍历所有类别就可以消除冗余重复的预测框,找到检测目标的最佳位置。YOLOv4使用的DIOU-NMS还考虑了边界框不重合、边界框中心距等因素,但没有考虑置信度得分,对于重叠程度高的多个目标容易出现漏检情况,其计算方法
式中:Si——当前类别的置信度得分;
IOU——预测框和基准框的交并比;
RDIOU——DIOU损失函数的惩罚项;
μ——所有预测框中置信度最高的那个框;
Bi——当前类别中所有被比较的预测框;
ε——人为设定的阈值,一般取0.5;
ρ2(b,bgt)——预测框和真实框的中心点的欧氏距离;
c——预测框和真实框最小外接矩形的对角线距离。
DIOU柔性非极大值抑制(Soft-DIOU-NMS)[22]不仅通过重合程度进行筛选,同时还考虑置信度得分,因此Soft-DIOU-NMS在重叠程度小于阈值时和普通非极大值抑制是一样的,唯一区别是在重叠程度大于阈值时还要考虑置信度得分,减少漏检的情况,其计算式
因此将DIOU-NMS替换成了上述更优秀的Soft-DIOU-NMS,这样即便是从某个方向看过去重叠程度很高的多株绿篱也能更完整识别出来。
表5 针对性Mosaic的DA2-YOLOv4和DA2-YOLOv4的对比Tab. 5 Comparison of targeted-mosaic DA2-YOLOv4 and DA2-YOLOv4
如表5所示为DA2-YOLOv4与使用了Soft-DIOU-NMS的DA2-YOLOv4的性能对比,使用了Soft-DIOU-NMS的DA2-YOLOv4在训练时间和FPS基本没有变化的情况下,将mAP提升了0.8%。
3 试验及结果分析
3.1 数据集制作
如图8所示为本文采集绿篱数据集所用的试验平台,目前实现绿篱修剪自动化的方案是:首先使用双目相机识别绿篱,接着通过深度图信息靠近+绿篱,再控制机械手末端的广角相机移动到绿篱上方,然后通过广角相机即可获得精确的绿篱水平截面中心,完成对中后通过旋转关节让成型刀具旋转一周即可完成绿篱修剪。准确、快速的绿篱识别是该绿篱修剪自动化方案的基础,为了增加绿篱数据的实用性,本文所制作的绿篱数据均通过该试验平台的双目相机进行采集。
本文一共采集了2 000张1 280×960的原始绿篱图片,并使用labelImg进行标注,将球形绿篱标注为qlvli,将柱形绿篱标注为zlvli。其中球形绿篱图片有1 322 张,包含5 287株球形绿篱;圆柱绿篱图片有1 198 张,包含4 993株柱形绿篱,在数据集足够大的情况下,保证了数据集各类别图片数量均衡性和目标个数均衡性。
图8 试验平台Fig. 8 Experimental platform
3.2 试验配置
所有实验均在装有Intel(R)Core(TM)i7-9700CPU@3.00GHz 3.00GHz处理器和NVIDIA GeForce GTX2080显卡的工控机上使用Ubuntu16.04系统,CUDA11.0,Cudnn8.0进行测试,所有算法均使用python3.6语言和Pytorch架构。训练时输入图片尺寸为608×608,学习率为0.001,权重衰减系数为0.000 5,优化器为Adam,Batchsize为16,迭代次数为10 000次。
3.3 评价指标
损失函数的值(Loss)在机器学习中用于表示预测值与真实值之间的差距,所谓网络训练就是通过不断修改网络各层的参数来使得Loss值越来越小,最终目的是为了得到足够小的Loss值下的所有网络参数即为权重参数。mAP就是对所有类的AP值取平均值,而AP指的是以精确度(Precision)和召回率(Recall)为坐标轴所得曲线下面的面积,可以同时度量Precision和Recall,其计算式
式中:TP——被分类器认为是正样本而且确实是正样本的个数;
FP——被分类器认为是正样本但实际上不是正样本的个数;
FN——被分类器认为是负样本但实际上不是负样本的个数。
因此Precision可以视为查准率,Recall可以视为查全率,而mAP可以视为对所有分类而言Precision和Recall的综合指标,其值越大证明训练效果越好。
3.4 试验结果分析
如图9所示,采用YOLOv4算法时,Loss曲线整体上呈现明显下降趋势,但是波动较大,Loss最小值为0.4。而采用DA2-YOLOv4算法时,Loss曲线也呈现明显下降趋势。与YOLOv4算法相比,DA2-YOLOv4的Loss曲线下降速度更快,波动更小,且Loss最小值下降到0.2。
(a) YOLOv4训练Loss曲线
(b) DA2-YOLOv4训练Loss曲线 图9 训练效果对比Fig. 9 Comparison of training effect
相比之下,DA2-YOLOv4的mAP整体上呈上升趋势,而且波动较小,最终达到98.8%;Loss曲线也呈现明显下降趋势,不仅下降速度更快,而且波动很小,最终可达到0.2以下。
如图10所示,检测结果表明:在多目标识别中DA2-YOLOv4能完整识别所有绿篱,置信度几乎全在0.98以上,而且能精确识别绿篱冠层位置;YOLOv4虽然也能完整识别所有绿篱,但是总体上置信度在0.95以下,而且识别精度较差。
(a) YOLOv4
(b) DA2-YOLOv4 图10 多目标识别对比Fig. 10 Comparison of multi-target recognition
如图11所示,在目标重叠程度较大情况下,DA2-YOLOv4 也能准确识别三个重叠的目标,而且置信度可达到0.99;YOLOv4在3个重叠目标中只能识别最前面的1个,而且置信度只有0.97。
(a) YOLOv4
(b) DA2-YOLOv4 图11 目标重叠识别对比Fig. 11 Comparison of target-overlap recognition
如图12所示,在开放环境中存在很多绿篱,DA2-YOLOv4 不仅能很好识别靠前的2株绿篱,还能识别复杂环境中的3株绿篱,不仅置信度均在0.55以上,而且识别精确;YOLOv4只能以高置信度识别前面2株绿篱,而且识别精度明显不如DA2-YOLOv4。
(a) YOLOv4
(b) DA2-YOLOv4 图12 开放环境识别对比Fig. 12 Comparison of open-environment recognition
如表6所示为DA2-YOLOv4与主流目标检测算法的性能对比,在主流目标检测算法中,YOLOv4已经是比较优秀的算法,但DA2-YOLOv4依然在训练阶段和检测阶段获得了巨大的提升,因此DA2-YOLOv4在各方面均明显优于其他目标检测算法,具有最快的训练速度、最高的mAP、最快的FPS。
表6 绿篱识别算法对比Tab. 6 Comparison of hedge recognition algorithms
综上,DA2-YOLOv4的改进效果是十分显著的,相比于YOLOv4,仅需19.2 h就能完成10 000次迭代的训练,训练时间缩短了28.3%,训练时mAP可达到98.8%,提升了5.9%;在检测阶段DA2-YOLOv4的mAP仍能达到98.5%,提升了8.1%,FPS可达到83.1,提升了14.9。在实际检测中,DA2-YOLOv4的多目标检测、目标重叠检测、开放环境检测均取得了很好的效果,明显优于其他算法,完全能满足绿篱修剪行业自动化需求。
4 结论
基于YOLOv4提出一种DA2-YOLOv4绿篱识别算法。通过针对性Mosaic数据增强来更合理地扩充数据集,可以有效防止误导网络,使训练结果更具鲁棒性;通过在CSPDarknet53中引入3×3空洞卷积提出了D-CSPDarknet53,可以获得更大的感受野,大幅提升了mAP和FPS;通过在SPP中引入平均池化得到了A-SPP,在感受野已经足够的情况下更加充分利用信息,使网络更具鲁棒性;通过删除不必要的小目标检测部分得到了PANet2,大幅提升了网络速度;使用Soft-DIOU-NMS更能准确识别重合程度高的多个目标。试验结果表明,DA2-YOLOv4的改进效果显著,相比于YOLOv4,mAP提升了8.1%,FPS提升了14.9,且在绿篱识别中各方面的表现均明显优于其他主流算法,能很好地满足绿篱修剪行业自动化需求。