基于改进YOLO v4的群体棉种双面破损检测方法

2022-02-21 08:21王巧华蔡沛忠张洪洲
农业机械学报 2022年1期
关键词:双面群体图像

王巧华 顾 伟 蔡沛忠 张洪洲

(1.华中农业大学工学院, 武汉 430070; 2.农业农村部长江中下游农业装备重点实验室, 武汉 430070)

0 引言

我国棉花产量巨大,棉花产业是南疆地区的支柱产业,2020年新疆棉花播种面积达2 501.9 hm2,然而棉种品质问题却给棉花生产带来极大影响,严重制约了棉花产业发展[1],因此棉种的精选对提升新疆地区棉花产量具有重要意义。

王晖军等[2]利用传送带作为主体,搭配单CCD相机以及控制系统后,搭建了检测棉种品质的装置,识别准确率约为90%,但检测方法只停留在单面棉种检测的层面。XU等[3]提出土壤涝渍和高温同时发生会影响棉种的质量。坎杂等[4]利用棉种的介电性能,对有损伤和完好的棉种进行了分级,硬件部分采用滚筒式结构携带棉种。黄蒂云等[5]利用高光谱图像技术融合图像特征信息对脱绒棉种的品种进行判别分析,建模总体识别率达90%以上,但是没有对棉种的品质鉴别提出自动化装备设计。彭顺正等[6]设计了相关实验采集装置,使用OpenCV图像处理库对棉种的外观和颜色进行判别,实现了对棉种活性的分级。GOLSHAN等[7]利用不同的算法自动检测图像中的种子。AHMED等[8]提出使用X射线CT成像对辣椒种子品质进行分类。向阳等[9]提出采用翻面的方法实现芒果的双面检测,并用迁移学习方法及卷积神经网络模型进行芒果成熟度分级。赵静[10]设计了2个CCD相机,对透明玻璃板承载的玉米种子进行拍照收集图像,达到了采集完整种子外表图像的要求,综合两幅图像进行结果分析,对玉米种子进行破损判别。综上所述,目前已有研究停留在棉种的单面检测分级层面,这容易导致另一面结果的不确定性。而对于果物的双面检测停留在单个果物的双面检测,对于棉种这样的小尺寸物体,单粒棉种双面检测效率较低,并且目前没有针对棉种双面信息采集并进行品质检测的相关文献报道。

使用机器视觉对棉种破损进行检测,需要采集大量样本,然后对图形进行一系列的图像处理[11]手段对棉种数据进行分析建模,得到结果保存模型,最后部署到实际生产中。YOLO(You only look once)[12]是一种基于深度神经网络的对象识别和定位算法,运行速度快,可以用于实时系统,并已经成功应用到农产品检测领域[13-16]。对于群体农产品的品质研究,李庆旭等[17]提出一种基于改进SSD(Single shot multibox detector)的目标检测算法,对孵化早期整盘群体种鸭蛋中的受精蛋与无精蛋进行精准识别。目前目标检测算法主要分为两种,一种是单步目标检测算法,另一种是双步目标检测算法,双步检测方法的准确度高,但实时性相对较差;单步检测方法的准确度较前者稍低,但实时性很好,检测速度也较快[18]。目前较成熟的单步检测算法有SSD与YOLO,相比较双步目标检测算法,识别群体棉种的破损信息主要考虑的因素是高效,单步检测算法能更好地适配群体棉种的破损检测,可为以后部署于生产实际提供技术支持。YOLO v4[19]深度学习检测是目前最高效的单步目标检测算法之一,YOLO v4模型检测效果优于YOLO v3、Tiny-YOLO v4、SSD、Faster R-CNN 等模型[20]。但其对棉种检测性能仍有提升空间,本文对YOLO v4网络结构进行调整,研究改进模型检测能力,通过设计群体棉种双面检测装置,提出一种基于改进YOLO v4的棉种双面破损检测方法,进一步提高群体棉种识别精度以及模型鲁棒性。

1 材料与方法

1.1 试验材料

选择新疆新陆早棉种3 000粒,其中破损与完好棉种比例约为1∶1.2。群体棉种通过上料漏斗滑入透明亚克力板上,亚克力板上有4个棉种放置块,每个放置块上面有3×5个凹槽,一次可检测15粒棉种。

1.2 试验硬件设计

基于双CCD相机的棉种分选机结构示意图如图1所示,主要由电控箱、机架、视觉识别模块、上料装置、转盘、下料装置、收集装置等组成。工作时,步进电机运转,主动齿轮开始运转(俯视逆时针),与齿轮相连的中心轴开始转动,带动转盘一起逆时针运动(俯视),为实现群体棉种双面图像获取,利用亚克力板透明的特性,在转盘上等间距安装了由亚克力板制作的4个带有3×5凹槽的棉种放置块,每个凹槽长10 mm,宽6 mm,深5 mm,每个棉种放置块可放15粒棉种。棉种依次经过上料装置底部的料道、视觉识别模块的上下2个CCD相机、电磁阀分别完成上料、图像采集、下料分级回收的全过程。最后分选完毕的破损和完好棉种分别经由收集桶落入到各自的收集箱当中,图中分别有2个收集桶、箱,分别收集破损和完好的棉种。根据机械设计要求对齿轮进行设计,并对材料进行选型[21],采用工程塑料作为齿轮制作材料,以降低工作时的噪声,增加运动平稳性。参考自动化零件设计要求,考虑到转盘轴承载工件时的轴向力,使用7208AC型角接触轴承作为整机的轴承支撑件,其内径40 mm,外径62 mm,尺寸系列02,接触角25°。

图1 基于双CCD相机的棉种分选机结构示意图Fig.1 Structure diagram of cotton seeds sorter based on double CCD camera1.电控箱 2.机架 3.上料装置 4、5.视觉识别模块 6.电机支撑架 7.减速器 8.步进电机 9.完好棉种电磁阀 10.主动齿轮 11.从动齿轮 12.中心轴 13.转盘 14.破损棉种电磁阀 15.收集桶 16.棉种放置块 17.收集箱

图像采集系统如图2所示。转盘上方和下方设置两套完全相同的图像采集装置,分别采集棉种上、下面图像。图像采集装置包括工业相机、镜头、光源、背景板、三脚架。新陆早棉种形状为类椭球状,长轴长8~10 mm,短轴长5~7 mm。工业相机采用绿视森林USB1080P型,外观尺寸70 mm×65 mm×60 mm,采集时调整分辨率为1 280像素×720像素,曝光度为-9。镜头采用5~50 mm变焦,最大光圈F1.4工业镜头,拍摄时两个相机镜头垂直于转盘且高度均为55 mm,棉种经由转盘下方相机拍摄棉种反面图像,待转盘转过45°时,再由转盘上方相机采集棉种正面图像。光源采用欧普环形光源,色温6 500 K,功率22 W,采用Lenovo B50-30型计算机处理图像。

图2 图像采集系统Fig.2 Image acquisition system

1.3 试验软件设计

控制系统原理图如图3所示,系统工作流程如图4所示,上、下方相机均由光电传感器触发采集图像,STM32控制器在整个流程当中负责接收传感器信号、输送传感器信号以及获得计算机判别结果,并输出判别结果。系统对每颗棉种都进行上、下两次图像采集,通过算法分析得到判别结果之后,通过控制器进行信号输出,控制执行机构中的破损棉种电磁阀进行推杆的伸出与回缩,伸出时即与棉种放置块的拨杆发生碰撞打开承接块的通孔,有损棉种由自身重力落入下方收集装置当中,即可将有损棉种剔除。有损棉种剔除之后,剩下的无损棉种由完好棉种电磁阀的常开推杆与拨杆发生碰撞后,同样也是打开承接块的通孔后,棉种因为自身重力落入到下方的收集装置当中,重复此过程,将预选的棉种进行全部分级回收。

图3 系统原理图Fig.3 System schematic

图4 系统工作流程图Fig.4 System working flow chart

STM32控制器以及相关配件如图5所示,根据STM32F103开发设计手册进行单片机程序设计,利用STM32单片机完成对模型的运动控制,搭配电源、步进电机、步进电机驱动器、红外遥控器,分别编写红外遥控程序以及步进电机串口通信控制,实现用红外遥控器控制步进电机运动的过程,步进电机的控制采用STM32输出PWM波进行控制,PWM的频率和周期都可以使用串口调试助手在计算机端调试,通过软件在线调试步进电机转速,得到最佳转速后固定数值至其内部程序当中,避免后期的程序改动影响后续试验。通过修改程序,设置红外遥控器可在多个速度挡位进行调整选择,以适配各种不同场合速度的要求。最终设计红外遥控程序可在PWM频率100、150、200 Hz情况下运行,转速分别为3、5、8 r/min。

图5 STM32控制器以及相关配件Fig.5 STM32 controller and related accessories

1.4 图像采集方法

将棉种放入上料漏斗中,通过步进电机带动透明亚克力转盘转动,棉种自动落入凹槽中,利用CCD相机采集群体棉种上下两面图像,之后用labelImg软件对采集的图像进行人工标注,分别标注为破损与完好,按7∶2∶1划分训练集、验证集、测试集。共采集200幅群体棉种图像,每幅图像有15粒棉种,图像分辨率为1 280像素×720像素,将图像分辨率调小至416像素×416像素,在使用YOLO v4训练数据前,手动标注生成含有类别和位置信息的txt文件,图像标注时利用棉种的最小外接矩形框进行标注,保证每个棉种尽量在一个矩形框里,具体数据如表1所示。

表1 数据集分布Tab.1 Data sets distribution

采集得到的原始图像的上下两面分别如图6和图7所示,图像尺寸为1 920像素×1 080像素。通过棉种表面可以明显观察出破损棉种与完好棉种的区别,破损棉种表面坑洼或裂纹,完好棉种表面光滑。由于上下2个镜头拍摄,所得到的图像翻转180°即可得到原来的图像,其中图6为从上向下拍到的棉种,图7为从下向上拍到的棉种,可以发现图6棉种从上向下正面拍摄时表面完好,图7存在破损,因此本文采用双面拍摄来减少棉种误判的情况。此外,深度学习需要大量的数据,本研究对140幅群体棉种图像进行旋转、平移、裁剪等操作进行数据增强,增强之后的训练集图像为560幅,棉种的数量达到8 400粒。

图6 正面群体棉种图像Fig.6 Positive group cotton seeds image

图7 反面群体棉种图像Fig.7 Negative group cotton seeds image

2 基于改进YOLO v4的破损棉种检测模型

2.1 YOLO v4结构

YOLO目标检测算法已经被运用到各个领域,YOLO系列检测算法属于一阶段检测算法,在检测速度方面优于二阶段算法,如区域卷积神经网络[22-24](Regions with convolutional neural network,RCNN)。YOLO v4相比较YOLO v3对小目标的识别效果有了显著的提升,整体框架是基于YOLO v3改进而来,使用多种新的算法思想对各个子结构进行了改进,首先是输入端的改进,主要包括Mosaic数据增强、CMBN交叉小批量标准化、SAT自对抗训练,Mosaic数据增强法随机使用4幅图像进行缩放、拼接、翻转,再组合为一幅图像,减少了GPU的使用,丰富了检测数据集,提升了网络的鲁棒性。YOLO v4的骨干网络是在YOLO v3的DarkNet53上进行改进,使用了CSPDarkNet53,由CBM结构和5个CSP1-n结构组成,其中CBM结构是由卷积层、批归一化(Batch normalixation)层、Mish激活函数组成,CSP1-n是由CBM模块和n个Res unint模块串联组成,Res unint借鉴了ResNet网络结构,降低了内存成本,增强了学习能力,让网络更深。CSPNet[25]通过将梯度的变化从头到尾地集成到特征图中,在减少了计算量的同时可以保证准确率。此外在Neck网络上进行了创新,用SPP作为Neck的附加模块,使用池化时卷积核的尺寸为{1×1,5×5,9×9,13×13}的最大池化方式,得到不同尺度的特征图进行串联合并操作,增加主干特征的接收范围。用PANet作为Neck的特征融合模块进一步提高了特征提取能力。改进前YOLO v4网络结构如图8所示。

图8 改进前YOLO v4网络结构Fig.8 Network structure of YOLO v4 before improvement

2.2 YOLO v4检测原理

YOLO v4首先通过主干网络对群体棉种进行特征提取,将输入群体棉种的图像划分成S×S格,目标中心所在的网格负责对棉种的检测,每个网格需要预测B个边界框以及棉种破损与完好的条件概率,每一个边界框都包含5个预测值(tx、ty、tw、th以及置信度),则边界框中心点坐标与边界框的宽与高分别为

(1)

式中 (cx,cy)——网格偏移图像左上角的位置坐标

pw、ph——模板框的宽与高

tx、ty、tw、th——预测模型的中心位置坐标以及宽、高

σ(x)——Logistic函数

每个网格需要预测一个类别信息。目标检测任务的损失函数一般由Classificition loss(分类损失函数)、Bounding box regeression loss(回归损失函数)、Loss of confidence(置信度损失)3部分构成。YOLO v4在训练时使用的回归损失函数为LCIoU,置信度损失函数为Lconf,分类损失函数为Lclass,预测框筛选的非极大值为DIOU_nms。损失函数的表达式为

(2)

(3)

(4)

式中IoU——真实框和预测框的交并比

D2——预测框和真实框中心点距离

DC——最小外接矩形的对角线距离

α——平衡参数

v——衡量长宽比一致性的参数

wgt、hgt——真实框的宽、高

w、h——预测框的宽、高

Lconf与Lclass通过交叉熵方法计算,最终损失值Loss为

Loss=LCIoU+Lconf+Lclass

(5)

2.3 YOLO v4结构改进

为了提升棉种检测性能,本文针对棉种对YOLO v4网络结构进行调整,首先在YOLO v4的骨干网络上,将第一层的CSP1-1改成DarkNet所用的第一层ResNet结构,可以得到更好的速度与精度的均衡,在骨干网络的末尾添加一个SPP结构,SPP结构可以接受任意尺寸输入,固定大小输出,可对任意尺度提取的特征进行池化[26],紧接着将Neck网络当中的SPP移除,SPP结构会影响网络的速度,精度提升不明显。将Neck中的CBL(由卷积层、BN层、LeakyReLU激活函数组成)结构改为CSP2-n(2n个CBL模块、卷积层、Concat组成)结构,增强学习能力,加强网络特征融合能力,由于在原本的YOLO v4上,YOLO v4的检测头有3个分支,便于检测图像中尺寸相差较大的物体,但是在群体棉种检测中,棉种在图像中的尺寸变化较小,所以将检测头的3个分支简化为2个分支,减少计算量,加快模型训练,改进后的YOLO v4网络结构如图9所示。

图9 改进后的YOLO v4网络结构Fig.9 Network structure of improved YOLO v4

在改进YOLO v4的最后输出模块将回归损失函数改为LGIoU,其公式为

(6)

式中Ac——真实框和预测框最小外接矩形的面积

U——两个框并集的面积

2.4 非极大值抑制

在棉种检测的后处理过程中,针对多目标框的筛选,需要非极大值抑制操作来去除冗余的框,留下最接近真实的一个框,改进YOLO v4在DIOU_Loss[27]的基础上采用DIOU_nms的方式,在传统的非极大值抑制操作里,交并比(IoU)可以作为抑制冗余检测的指标,其中重叠区域是唯一因素,DIOU_nms将原始部分IoU的计算方式用DIoU的方式进行替换,DIoU的计算考虑到了两框中心点位置的信息,故使用DIoU进行评判的非极大值抑制效果更符合实际,效果更好,DIOU_nms公式为

(7)

(8)

式中RDIoU——真实框和预测框中心点之间的距离

si——分类得分

ε——非极大值抑制的阈值

ρ()——欧几里得距离函数

b、bgt——预测框和目标框的中心坐标

c——检测框和预测框最小外接矩形的对角线长度

M——当前最大置信度的边界框

Bi——其它边界框

2.5 模型训练

群体棉种模型训练的硬件平台:GPU为NIVIDIA GeForce RTX 2080Ti;CPU为AMD Ryzen Threadripper 2920X 3.5 GHz,内存为128 GB;软件平台为CUDA Toolkit 10.1、 CUDNN V10.1 、 Python 3.6+Pytorch1.6.0,在Windows 10系统下对YOLO v4进行改进,本文训练和测试时均使用GPU加速,训练开始阶段,学习率设置为0.01,衰减系数设置为0.000 5,训练的批次图像数量(Batch size)设置为16,最大训练次数设置为300,每训练10次保存一次模型,取训练效果最好的模型作为最终模型。图10为改进YOLO v4网络损失函数曲线,收敛速度较快,在训练200步时趋于稳定。

图10 改进YOLO v4损失函数曲线Fig.10 Loss function curve of improved YOLO v4

3 模型评价与结果分析

3.1 SSD-MobileNet v3

SSD-MobileNet v3是基于经典的SSD网络改进而来,是目前被广泛应用的单步目标检测算法[17]。经典SSD网络分为2部分,分别是骨干网络和辅助网络,SSD-MobileNet v3将经典的SSD骨干网络中的VGG网络用MobileNet v3网络代替,将MobileNet v3网络作为图像特征的提取网络。辅助网络用于产生目标检测框,结合非极大值抑制实现目标的定位,利用SSD-MobileNet v3算法对棉种进行破损识别与定位并与改进后的YOLO v4网络识别效果进行对比,训练网络训练参数设置与YOLO v4网络参数设置保持一致。

3.2 评价指标

采用平均精度均值(mAP)、漏检率(Missed detection rate)、检测速度(Speed)和参数量(Parameter size)[28]评价模型,其中平均精度由准确率(Precision)和召回率(Recall)决定,平均精度均值预测目标位置以及类别,mAP越大,说明神经网络模型效果越好。使用训练好的改进YOLO v4模型对群体棉种进行测试集预测。

基于改进YOLO v4的模型在测试集上的准确率、召回率、mAP分别如图11~13所示。

图11 改进YOLO v4模型准确率Fig.11 Accuracy of improved YOLO v4

图12 改进YOLO v4模型召回率Fig.12 Recall rate of improved YOLO v4

图13 改进YOLO v4模型平均精度均值Fig.13 mAP of improved YOLO v4

3.3 结果分析

对20幅验证集群体棉种图像的测试结果进行统计,包括准确率、召回率、漏检率、检测速度和模型所占内存5项评价指标。共300粒棉种,完好棉种163粒,破损棉种137粒。其中YOLO v4模型错判25粒棉种(其中将完好棉种错判为破损棉种8粒,将破损棉种判为非损棉种11粒,漏检6粒);使用改进YOLO v4模型错判14粒(其中将完好棉种错判为破损6粒,将破损棉种判为完好棉种8粒,漏检0粒),SSD-MobileNet v3错判43粒棉种(其中将完好棉种错判为破损15粒,将破损棉种判为完好棉种19粒,漏检9粒)。图14为同一幅图像在不同模型中的检测结果。

图14 不同模型的检测结果Fig.14 Test results of different models

为验证数据增强后的模型效果,用数据增强后的模型对20幅群体棉种图像进行检测,棉种共错判了13粒,其中将完好棉种错判为破损棉种6粒,破损棉种判为完好棉种7粒,漏检0粒,准确率为95.67%、召回率为96.31%、漏检率为0。数据增强后的模型准确率提升0.34个百分点,相较于未进行数据增强的模型略有提升。

3.4 结果讨论

棉种正面为完好但背面不一定也是完好,本试验采用群体棉种在透明亚克力板上进行双面检测,很好地解决了棉种双面品质检测与分选问题。

通过表2可以发现,经过改进后网络模型的检测速度、模型所占内存,较YOLO v4有较大的提升,虽然模型所占内存比轻量级的SSD-MobileNet v3大,但是准确率与检测速度都有明显改善。基于改进YOLO v4仍然存在误检的情况,分析原因可能是在破损棉种破损情况较小时(只有一道裂缝),当前CCD相机无法捕捉到棉种的裂缝,后续可通过提高相机的像素,捕捉更加细微的破损情况。模型存在将完好棉种检测为破损棉种的情况,分析原因可能是脱绒棉种在经过硫酸脱绒的时候,棉种表面的

表2 模型测试结果Tab.2 Model test results

棉绒未完全脱干净,残留的白色棉绒会让模型将好的棉种判断为破损棉种。在YOLO v4和SSD-MobileNet v3网络上都出现了棉种漏检以及多个目标检测框出现的情况,漏检率是评价一个模型的重要指标[17],YOLO v4相比较SSD-MobileNet v3在漏检率上有优势,通过改进YOLO v4网络的结构以及损失函数的类型,使用DIOU_nms有效地解决了漏检和多个检测框的情况。综合考虑检测精度和速度,本研究选用改进后的YOLO v4作为检测模型。

4 结论

(1)以新陆早棉种为研究对象,设计了一种群体棉种双面破损在线检测装置,利用亚克力板在强光和白色背景板下透明的特点,实现了对棉种上下两面图像的采集,并设计了相关的上料、输送装置,完成了对棉种检测的全自动化过程,对比传统单粒、单面棉种的检测技术,在检测效率和精确性上有了显著提升。

(2)使用改进YOLO v4网络对群体棉种进行双面检测,将群体棉种分为破损棉种和完好棉种。通过改变YOLO v4网络的整体结构以及损失函数,得到了改进YOLO v4模型,在此模型上,准确率和召回率分别为95.33%、96.31%。模型所占内存为27.1 MB,检测速度达到了78帧/s,模型具有很好的鲁棒性,可满足实际生产要求。

(3)本文解决了群体棉种图像难以分割的问题,利用卷积神经网络代替传统图像识别方法,无需单独将每一粒棉种从群体棉种中分割出来进行破损识别。利用卷积神经网络的特点,直接检测出群体棉种的破损以及位置信息,为检测群体棉种的破损情况提供了一种新的思路,加速棉种分选智能化,也为后续研发相关自动化设备提供了技术支持。

猜你喜欢
双面群体图像
12.09万元起售,“双面”新朗逸正式上市
12.09~15.09万元“双面”新朗逸夺目上市
浅析p-V图像中的两个疑难问题
巧用图像中的点、线、面解题
哪些群体容易“返贫”——受灾户、遇困户、边缘户
本草,一场不动声色的“双面修行”
认清亏欠问题——对参与近期香港暴乱的青年群体之我见
“群体失语”需要警惕——“为官不言”也是腐败
中间群体
史上最强的双面间谍