1. 引言
深度神经网络是深度学习中的关键技术,在机器学习、语音识别、文本分析、自然语言处理、等领域应用广泛 [1] [2] [3] ,有些训练后智能机器的认知水平已经出现突破人类水平 [4] 。如今,我国的农业正不断向着更精准、更节约、更规模化的方向发展,对于具有自动化属性的智能农业设备的需求量也在不断升高 [5] ,深度学习和机器视觉在农业自动化方面取得了巨大的成就。例如,Chen等人通过结合了立体视觉和同步定位与建图系统获得了一张果园的详细3D图。其中的轮廓信息提取并匹配后,会通过变换得到进一步候选答案,使用分类器进行训练,这一实验对很多类型的水果有较好的效果 [6] ;Gao基于YOLOv3-tiny网络对甜菜田杂草进行研究以便于提高检测速度 [7] ;Liu等人提出了一种基于MobileNetv2-YOLOv3模型的番茄叶斑辨认措施 [8] ,平衡番茄灰斑的准确度和速度;Mazzia使用两台设备进行基准测试,以便于果园中苹果的实时监测和产量评估 [9] 。
庞大的深度神经网络所需环境不适合于生活场景,如何提升目标检测、图形分割等技术的性能指标,如何安全简易地部署在生活化设备中 [10] ,将是研究的必然方向。例如,Peng K等人于2019年利用深度卷积神经网络对模拟电路进行故障排查及诊断 [11] ,提高其在实际应用场景中的性能,不断升级算法模型,使其在终端设备上的应用将更加广泛且精密,具备良好前景以及经济效益。
目前已有大量深度神经网络及其在边缘设备、边缘计算的农业应用,但关于如何在保证精确度的前提下提高效率的研究仍不理想。我国杂草众多且分布广泛,其会汲取农作物所需水分和营养等生存条件,造成农作物质量降低且产量下降 [12] 。本研究基于YOLO各版本的目标检测算法进行杂草识别,不同模型呈现的数据对日后的智能杂草识别有参考意义,将模型部署在嵌入式设备上,同时获得相应数据进行评估,能更好地还原现实应用场景,帮助解决深度学习在农业应用的各种难题,如防止高低不齐的杂草遮挡农作物或绿色植被、精准识别解决机械去除无法实现的问题,监测固定区域内杂草的生长数量速度等情况,减少消耗的劳动力等,这将对于环境保护和农作物产量都有着十分重要的意义。
2. 方法介绍
2.1. YOLOv4算法
YOLOv4算法在保持准确度的同时引入性能更优或更符合检测处理的函数和算法,提高算法计算效率。YOLO系列算法都可以很形象地分为backbone脊柱、neck颈部和head头部三部分,分别进行特征提取、特征融合增强以及目标预测,简化后的网络架构图如图1所示。
Figure 1. YOLOv4 Network architecture diagram
图1. YOLOv4网络架构图
YOLOv4采用CSPDarknet53作为主干网络,通过CSPnet改变了残差块的堆叠方式,提高了网络重用特征的能力并减小了模型尺寸。Neck部分包括SPP和FPN + PAN两个部分,SPP结构进行最大池化增加感受野,FPN + PAN结构反复提取特征以传达强语义特征和强定位特征。Head部分利用前两部分的特征信息进行目标检测,采用DIoU NMS方法筛选出最优的预测框。损失函数由box位置损失、置信度损失、类别损失三部分构成,其中位置损失采用CIOU计算,置信度和类别损失采用二元交叉熵计算。
2.2. YOLOv4-Tiny算法
YOLOv4-tiny在YOLOv4基础上做减法,这种模型尺度的缩放提高了网络速度,能够适配在更多应用场景。但网络的学习能力会下降,更加适合嵌入式设备。该网络依然分三个部分,构架图如图2所示。
Figure 2. YOLOv4-tiny Network architecture diagram
图2. YOLOv4-tiny网络架构图
YOLOv4-tiny,主干网络使用3个DBL和3个残差结构,激活函数由Mish函数更变为Leaky Relu函数,残差结构数量由5个更变为3个。特征融合部分只使用FPN特征金字塔,其中X1和X2是最后两个残差结构输出的有效特征层。检测头仍然是YOLO Head,但只使用了两个有效特征层。与YOLOv4相比,YOLOv4-tiny参数减少了10倍,速度提高了6~8倍。但是,简化主干网络并只进行下采样可能导致小目标或覆盖目标的漏检或错检,需要在训练和推理时进行参数微调以确保有效信息的传递。
2.3. YOLOx算法
考虑到本文需应用于终端设备进行边缘计算,选择YOLOx参数量最少的YOLOx-s算法。算法仍然分为三部分,与YOLOv4相比,各部分都有不同程度的升级,同时提高了算法的准确度和速度,YOLOx算法简化架构图如图3所示。
Figure 3. The YOLOx algorithm simplifies the structure diagram
图3. YOLOx算法简化结构图
YOLOx-s网络的主干网络采用了CSPDarknet结构,并加入了Focus结构和SPP结构。CSPDarknet网络包括三个部分:Focus、CSPnet和SPP结构。其中,Focus结构通过改变特征层获取的方式来扩大通道数,CSPnet中的卷积层从CBM变为CBS,采用了SiLU函数代替Mish函数。SPP结构在第四个残差块中使用,将其纳入主干网络中。在Head的结构上,YOLOx采用了与之前版本不同的YOLO Head,分别进行分类和定位最后整合。YOLOx采用SimOTA方法筛选正样本,计算预测框与真实框的IoU并对位置进行判断,最后计算代价矩阵。选取代价最低的K个点作为正样本,其他点作为负样本,然后用于计算损失函数,Reg部分直接计算IoU Loss,Obj部分采用置信度损失算法,Cls部分采用类别损失算法。
3. 基于嵌入式深度神经网络的杂草识别系统设计
基于嵌入式深度神经网络的杂草识别系统目的在于训练模型区分农作物和特定类别的杂草,采集一定量的图像经标记后输入模型训练,并将训练得到的模型以合适的格式部署在嵌入式设备上。系统可以分为两个部分,分别为模型训练和模型部署,系统流程图如图4所示。
3.1. 模型训练
3.1.1. 数据采集
本系统数据标记所需的数据集由1118个.jpg格式的图像文件以及7893个.xml格式的手动标记文件,分别存放在两文件夹中。
其中,图像包含6种农作物和8种杂草,在手动标记过程中杂草被统一分类为weed。农作物为甜菜根、胡萝卜、西葫芦、南瓜、萝卜和黑萝卜,杂草为藜、八仙草、遏蓝菜、荠菜、野甘菊、野荞麦、野堇菜和牛膝菊。地点在拉脱维亚耶尔加瓦生命科学与技术大学植物保护研究科学研究所,图像采用佳能EOS 800D拍摄,相机镜头与植被表面保持30厘米距离,从植被发育的第一阶段开始每日拍摄一次。
3.1.2. 数据标记
使用LabelIng软件进行手动标记,在Anaconda命令提示符中输入LabelIng打开软件,选择图像所在文件夹作为输入文件夹,新建JPEGImages文件夹作为储存文件夹,图像保存为.xml格式,与VOC数据集使用规则兼容。
3.1.3. 迭代训练
将前两步中的图像和标签文件放置在VOC2007文件夹,进行数据摆放。此外需要进行数据预处理。将图片文件分为训练集train.txt、验证集val.txt和测试集text.txt,并保存在该路径的ImageSets文件夹下。
训练集用作模型训练,验证集用于生成2007_train.txt和2007_val.txt,这也属于预处理,测试集用于指标计算,具体后文会有介绍。在训练开始前,需要建立新的分类文件写入类别weed,同时设置为算法中训练的分类路径classes_path,最后引入权重文件,第一次训练可下载预训练后的权重文件,这会使之后的训练可引入上次训练中数据最好的权重文件,提高训练模型的目标检测能力。此外,需根据电脑显存允许的batch_size进行训练,迭代次数也可灵活改变。
3.2. 模型部署
经过训练后模型可在电脑上进行预测,新生成的.pth格式权重文件同理应用在预测的模型路径中。预测图像可先保存在img文件夹下,运行预测代码时输入图像路径来调用。但嵌入式设备应用PTH模型进行边缘计算时可能出现预测速度过慢甚至无法成功加载的情况,因此需要转化为TRT模型。
本系统采用嵌入式设备Jetson Nano,实物图如图5所示。
Figure 5. Jetson Nano physical picture
图5. Jetson Nano实物图
设备由NVIDIA推出,体积小,功耗低至5 W,可运行多种并行神经网络模型,支持TensorRT软件库和PyTorch框架,用于目标检测、图像分割和语音处理等。具体参数如表1所示。
Table 1. Jeston Nano performance parameter table
表1. Jeston Nano性能参数表
格式化SD卡后从官网下载镜像系统并使用balenaEtcher写入镜像。NVIDIA提供环境的cuda版本为10.2,使用Jetpack4.4安装PyTorch3.7,并下载4.1.1版本opencv库以及7.1版本TensorRT库。
3.3. 系统指标
本文为评价训练模型引用mAP、F1和FPS三个参数作为指标,其中mAP、F1可评估准确度,FPS可以评估效率。
3.3.1. F1
模型样本检测时会出现三种情况,TP为正确检测的数量、FP为误检情况的数量、TN为错检情况的总数量、FN为漏检情况的数量。通过统计可以得到这四个数据并计算出以下4个参数,公式如下:
(1)
(2)
(3)
(4)
式中的精度Precision能够表示真正的杂草样本在区域检测区域中被检测出的概率,召回率Recall能够表示检测的图像种杂草总数。准确度Accuracy和F1值都能对准确度进行评估,本文采用后者,值越接近1表示准确度越高。
3.3.2. mAP
模型某一类的准确度使用AP平均精度表示,而所有类用mAP平均精度均值,表达式如(5)和(6):
(5)
(6)
式中,N为需要识别的目标的所有类别总数。因为召回率和精度会呈现反相关趋势,为兼顾两者引入P-R曲线,召回率为横坐标,精度为纵坐标,面积为AP值。本文选择mAP值对准确度进行评估,值同样越接近1越好。
3.3.3. 单张处理时间
模型能以一定速度检测图片,每一秒检测的总数量就可以用FPS表示,用于检测速度。单张处理时间T定义为FPS的倒数,用于表示模型每处理一张图片所需要的时间,同样可用于检测速度,公式如下:
(7)
4. 系统实现及结果分析
基于嵌入式神经网络的杂草识别系统主要目的在于识别粮食作物种的杂草,系统实现后可以模型的预测结果以及相应的性能指标。实验使用YOLOv4、YOLOv4-tiny、YOLOx算法进行模型训练和目标检测,因此得到的数据结果能够进行横向对比,观察不同版本的模型性能。
4.1. 系统实现
本文使用杂草数据集,操作系统、图像处理器、处理器分别为64位Windows10、RTX2060和酷睿i5-10300H8核处理器。NVIDIA提供的CUDA和CUDNN版本为11.1和8.0.4。该实验以PyTorch7为训练框架,该框架简洁灵活,高效迅速且容易上手,适合用于构建深度学习网络。系统实物图如图6所示。
4.2. 结果分析
4.2.1. PTH模型数据结果及分析
YOLOv4算法训练时冻结阶段batch size设置为4,解冻阶段batch size设置为2,共训练40次,分别迭代1个100次和39个400次。YOLOv4-tiny算法训练时冻结阶段batch size设置为16,解冻阶段batch size设置为8,共训练40次,分别迭代1个100次、25个400次和14个1000次。YOLOx算法训练时冻结阶段batch size设置为16,解冻阶段batch size设置为8,共训练30次,分别迭代1个100次和29个300次。室内和室外原始图像和预测结果分别如图7、图8所示。该模型的数据集比较巧妙,将8种杂草统一标记为weed,因为室内外图像中的杂草品种不同,因此本文各取一张图像作为输入图像。
三个室内图像目标检测中,YOLOv4-tiny表现最优,预测框置信度基本为1,能准确识别目标类别并定位,YOLOx其次,能完整检测出该类目标但位置有偏差,YOLOv4存在2处漏检分别如图黄框和绿框位置,其余目标置信度与YOLOx相似。
(a) 室内原始图像 (b) YOLOv4 PC端 (c) YOLOv4-tiny PC端 (d) YOLOx PC端
Figure 7. Comparison of indoor image target detection results of three models at PC end
图7. 3种模型PC端室内图像目标检测结果对比
(a) 室内原始图像 (b) YOLOv4 PC端 (c) YOLOv4-tiny PC端 (d) YOLOx PC端
Figure 8. Comparison of outdoor image target detection results of three PC models
图8. 3种模型PC端室外图像目标检测结果对比
室外图像总体置信度比室内图像低,可能存在光线、背景颜色等因素。三个室外图像目标检测中,三个算法性能仍然为上图分析的顺序,YOLOv4存在两处漏检分别如图蓝框和黄框标注,YOLOv4-tiny两处漏检分别如图蓝框和绿框标注,YOLOx存在一处漏检如图绿框标注,三个算法均能识别小目标、模糊目标和阴影中的目标。
1) 准确度评估
准确度使用F1值和mAP值进行评估,得到的模型准确度指标对比如表2所示。
Table 2. Comparison of accuracy of three models
表2. 3种模型准确度对比
由表2可知,F1值和mAP值的结果趋势相同。YOLOx模型F1值为0.75,最接近1;其次是YOLOv4-tiny模型,F1值为0.72与YOLOx仅差0.03,准确度相近;最后是YOLOv4模型的F1值0.68,与最高值0.75相差了0.07,F1值相对偏低。F1值越接近1说明准确度越高,因此通过F1值对比后三种算法中YOLOx算法准确度最高。再观察mAP值,YOLOx模型为80.48%,为三个模型中的最高值;YOLOv4-tiny和YOLOv4模型的mAP值均在75左右,分别为75.36%和74.07%,因此还有提高的空间。
结合两个指标进行评估可知,YOLOx算法准确度都最高,YOLOv4-tiny其次,YOLOv4最低。但本实验训练过程的其他参数不能控制相同,如由于电脑CPU限制,三种算法的batch_size和迭代次数都不同,因此需要更强大且精准的设备进行模型训练,这是本次实验的不足之处需要改进。
2) 速度评估
速度使用单张处理时间进行评估。使用同一张照片,得到的速度指标对比如表3所示。
Table 3. Speed comparison of three models
表3. 3种模型速度对比
由表3可知,轻量化网络YOLOv4-tiny的单张处理时间最短,较其他两者有很大优势,仅YOLOv4算法的20%左右;其次是YOLOx算法,与前者相差0.0141 s;最后是YOLOv4算法,在三个算法中表现最差。反观,该数据有较大差异的原因有迹可循,YOLOv4-tiny减少了主干网的层级结构,同时将特征增强部分简化到仅有经典的FPN结构,特征层和参数的减少使得其速度提高较多。此外,YOLOx算法以YOLOv5算法为基础改进,旨在保证准确度的基础上提高速度,而YOLOv5算法以YOLOv4算法为基础改进,主干网和预测头都有较大改变,因此YOLOx算法速度更高是一个必然的结果。
3) 计数准确度评估
本训练集图片中共有weed类别目标730个,不同算法正确检测的该类别目标数量以获取,可进行计数准确度评估,结果如表4所示。
由下表可知,三个模型的计数准确度均在90%以上,其中YOLOx模型最高,为97.81%;YOLOv4适中,为96.85%,与YOLOx差不到1%;最低的是YOLOv4-tiny模型,计数准确度为94.93%。可以看出算法在检测过程中,能在保持正确性的同时,识别极大部分的目标,但和F1、mAP值联合起来会发现识别的准确率仍然有很大调整空间。
Table 4. Comparison of counting accuracy indexes of three models
表4. 3种模型的计数准确度指标对比
4.2.2. TRT模型数据结果及分析
YOLOv4算法和YOLOv4-tiny算法的PTH模型转换至TRT模型后部署在Jetson Nano上,同样使用这两张图像作目标检测,室内、室外图像目标检测结果分别如图9、图10所示,因Jetson Nano显示不清晰,因此图像保留较大尺寸。
(a) YOLOv4 Jetson Nano (b) YOLOv4-tiny Jetson Nano
Figure 9. Comparison of indoor object detection results in Jetson Nano end of two models
图9. 2种模型Jetson Nano端室内图像目标检测结果对比
(a) YOLOv4 Jetson Nano (b) YOLOv4-tiny Jetson Nano
Figure 10. Comparison of outdoor image target detection results of Jetson Nano end between two models
图10. 2种模型Jetson Nano端室外图像目标检测结果对比
部署在Jetson Nano上后,模型的整体识别效果表现没有PC端好,部分置信度降低,出现漏检情况。其他指标在部署过程中不会有变化且已在上文对比,因此仅对比单张处理时间。PC端与Jetson Nano速度指标对比如表5所示。
Table 5. Comparison of velocity indexes of two models
表5. 2种模型速度指标对比
由表5可知,YOLOv4模型单张处理时间为0.2439秒,FPS值为4.1;YOLOv4-tiny模型单张处理时间为0.0453秒,转换FPS值为16.5,仍然领先YOLOv4模型,大约为其4.0倍,基本达到实时检测速度。该倍数与上文已计算的PC端PTH模型运算时的倍数相近。由此数据可知,TensorRT作为加速度库能够从一定程度上提高模型速度,但嵌入式设备受硬件要求限制,GPU配置受限又会降低速度,但相对速度保持稳定。
总体而言,在本次研究中,我们深入比较了三种目标检测算法(YOLOv4、YOLOv4-tiny和YOLOx)在不同环境及设备上的性能。从实验结果分析来看,各算法在速度和准确度方面展现出一定的优劣。
在速度方面,YOLOv4-tiny在多个场景中表现出色,其单张处理时间最短,远优于其他两种算法。其轻量化结构使其在嵌入式设备上表现出相对较高的实时性能。其次是YOLOx算法,其基于YOLOv5改进的结构也带来了明显的速度提升,虽不及YOLOv4-tiny,但仍在一定程度上实现了速度与准确度的平衡。然而,YOLOv4在速度方面稍显不足,其相对较长的单张处理时间限制了其在实时应用中的应用。
在准确度方面,YOLOx算法在F1值、mAP值和计数准确度等多个指标上表现出色,稳定地领先于其他两种算法。YOLOv4-tiny在计数准确度上稍有不足,而YOLOv4则在各项准确度指标上相对较低。此外,YOLOx算法在室内和室外图像的各项检测任务中均展现出良好的综合性能。
综上所述,YOLOx算法在速度与准确度的平衡方面表现优异,尤其适用于嵌入式设备。YOLOv4-tiny虽速度最快,但在一些准确度指标上稍逊。YOLOv4在准确度方面有提升空间,但速度限制了其实时应用。不同算法的优劣需要根据具体应用场景来选择,综合考虑速度和准确度的权衡。
5. 总结与展望
本文主要研究对象为YOLO系列算法,设计了一种基于嵌入式神经网络的杂草识别模型,通过模型训练获得有效模型进行目标检测,将模型部署在两个终端设备上能够更好的进行参数分析。本文经过实验,获得目标结果,并对准确度和速度进行横向和纵向评估。此外,本研究方法在其他目标检测领域的研究中也能够为算法选择提供更客观的评估标准。综上所述,本研究对于促进杂草识别技术发展以及在实际应用中推广目标检测算法具有重要意义和价值。
1) 提出将深度神经网络模型部署在使用率较高的嵌入式设备Jetson Nano上,促进人工智能和边缘计算结合,提供新思路,具有良好研究前景。
2) 提出将YOLOv4、YOLOv4-tiny和YOLOx算法分别部署在PC端和嵌入式设备,并进行算法指标对比,了解层级结构改进或删减对算法性能的影响,为后续算法选择提供理论支撑和数据参考。
通过实验数据可以看出,将深度神经网络部署在嵌入式设备时基本达到实时识别水平,但由于嵌入式设备受硬件要求限制,部署在其上的模型准确度及速度仍有较大提升空间,基于此,本文在此提出对未来工作的展望:① 增加数据集照片数量,扩大样本数,提高系统鲁棒性;② 采用算力更强、GPU配置更好的嵌入式设备,优化模型运行环境;③ 采用准确度更高、速度更快、结构更好的深度神经网络模型。
NOTES
*通讯作者。