钟海敏,马 旭,李泽华,3,王曦成,刘赛赛,刘伟文,王承恩,林泳达
(1 华南农业大学 数学与信息学院,广东 广州 510642;2 华南农业大学 工程学院,广东 广州 510642;3 农业农村部华南热带智慧农业技术重点实验室,广东 广州 510642;4 华南农业大学 电子工程学院,广东 广州 510642)
杂交稻种子活力是杂交稻育种和育秧中的重要指标。育种中,选用高活力的水稻种子进行杂交,有利于选育出高品质的新品种[1]。机械化育秧中,种子出芽率和出芽整齐性是影响机械化育秧播种量调节和播种质量的重要参数指标[2]。出芽率高且出芽整齐的种子有利于培育高质量的秧苗,而杂交稻种子的出芽率和出芽整齐性与种子的活力息息相关。因此,快速评估杂交稻种子活力具有非常重要的实际意义。传统的种子活力检测方法主要是采用标准的种子发芽试验法,即在一定的条件下,对被检测的种子进行发芽试验并统计发芽率[3]。该方法仅将催芽种子分为发芽和未发芽两类,并未进行种子活力细化分级,分类相对粗糙;对出芽整齐性的评估也主要是通过评价者主观评价,没有统一的标准。种子发芽试验法是一种有损检测方法,且检测过程复杂。种子活力无损检测方法主要有X光、近红外光谱、高光谱、多光谱、可调谐半导体激光吸收光谱和色选技术等光学检测方法,检测对象为未催芽的种子,但这些技术目前基本上还处于实验室研究阶段,尚未形成可商用的种子活力光学检测装备。在育种和机械播种等实际工作中需要知道种子发芽后的发芽率和发芽势,对经过光学技术检测后的种子仍需进行催芽后的分级分选[4]。随着杂交稻育种技术和机械化育秧技术的快速发展,对大规模种子活力的精细判别提出了新的要求,例如,杂交稻机械化精量播种中,要求每穴播1~2粒芽种且芽长不超过3 mm,因此,迫切需要对发芽后的水稻种子活力进行多级别精细化检测,加强对种子质量和幼苗强壮程度的预判,以适应育种和机械化育秧技术发展的需求。
传统的图像处理方法和机器视觉技术结合不同硬件实现了特定任务的检测及分级[5-6]。将深度学习算法与现有的光学成像和检测技术结合,已成为探索种子活力检测的重要途径。基于近红外光谱图像和光谱信息,Yang等[7]结合迁移学习构建深度学习模型,对水稻种子活力进行评估,最高识别准确率达99.50%;Ma等[8]采用卷积神经网络深度学习方法对日本芥菜种子活力检测的准确率达90%左右;Nie等[9]利用深度卷积神经网络对杂交秋葵种子和丝瓜种子的品种进行鉴别,分类准确率大于95%。基于高光谱和卷积神经网络,Pang等[10]对玉米种子活力进行检测,模型的识别准确率可达99.96%。目前,图像分级检测存在各具特色的目标检测网络,如Faster RCNN、YOLO系列和SSDMobileNet等,其中,YOLO系列的卷积神经网络具有检测准确率高、模型占用内存小和模型易于移植手机端等特点,已成功应用于各种目标检测和分级研究。例如,张秀花等[11]提出了一种基于改进的YOLOv3-Tiny 番茄穴盘苗分级检测方法,为番茄穴盘苗的自动化检测和分选提供参考。王立舒等[12]对 YOLOv4-Tiny 网络结构进行改进,提出一种含有注意力模块的目标检测网络,实现自然环境下蓝莓果实成熟度的精确快速识别,为蓝莓采摘机器人和早期产量预估提供快速精准的目标识别。宋怀波等[13]设计了一种YOLOv5-MD轻量型网络用于重度粘连的小麦籽粒检测,可为小麦籽粒检测嵌入式设备研发提供必要的技术支持。骆润玫等[14]提出一种基于YOLOv5-C的复杂背景下广佛手病虫害的识别方法,能快速准确地识别目标。殷献博等[15]提出一种基于多注意力机制改进的YOLOXNano智能识别模型,实现了柑橘梢期长势的智能识别,为果园实时感知和智能监测提供了可行的数据和技术方案。YOLO算法在目标检测中表现出旺盛的生命力,其算法也在不断完善[16]。Yang等[7]基于近红外光谱图像和深度学习模型对水稻种子活力进行检测,获得较好的识别准确率,但相对于可见光成像的RGB图像,其图像获取更复杂、成本也更高;此外,YOLOv5应用于杂交稻芽种分级检测中,虽然检测速度相对较快,但检测精度相对较低,速度仍可提升。为提高杂交稻芽种快速分级检测的精度和速度,基于可见光成像,本文提出了一种基于YOLOv5改进模型的杂交稻芽种快速分级检测方法,以期为水稻育种和机械化育秧技术装备研发提供智能化技术支持。
杂交稻芽种图像数据于2022年3月中旬在华南农业大学工程学院北楼105实验室采集,杂交稻品种为‘五优1179’。种子催芽成功后,芽长变化是一个连续的过程。为了对发芽后的种子活力进行分级,本文根据机械化播种对芽长的要求将芽种分为4级(图1):未发芽、破胸露白、发芽(芽长小于3 mm)和长芽(芽长大于3 mm),破胸露白和发芽的种子适合机械化精量播种育秧,未发芽和长芽种子不适合机械化播种育秧。考虑到不同等级的图像采集数量多、时间长,种子催芽成功后,为了控制种子生长速度,采用低温调控,以确保获取足够多的样本。试验期间,使用分辨率为8 168×4 592像素的安东星工业相机采集水稻芽种图像,相机安装在高度可调的台架上,为减少光线变化对成像的影响,台架上配备了补光设备;考虑到人工识别水稻种子发芽及芽长等级是逐粒进行的,为简化模型的复杂度,将芽种尽可能不重叠地平放在试验台架上;获取的图像保存为.jpg格式。共获得杂交稻芽种图像3 700 幅[包含单粒、多粒(2~7粒)及混合],其中,未发芽、破胸、发芽和长芽图像分别为900、980、1 180和640 幅。为增加图像信息和扩充数据集,对采集到的图片进行数据增强,同时使用平移、旋转、添加噪声、剪裁和HSV色域转换方法生成包含5 550 幅图像的数据集,数据集划分如表1所示。
表1 杂交稻芽种图像数据集的样本数量Table 1 The number of data set samples of hybrid rice bud seeds
深度学习目标检测网络中,常见的算法主要有Faster-Rcnn[17]、R-CNN[17]、SPPNet[18]、YOLO[19]和SSD[20]等。YOLOv5是YOLO系列的第5代算法,其中,YOLOv5s的权重值最小、检测网络深度小且检测速度快,但该方法对深层图像特征的提取能力相对较低,在杂交稻芽种分级检测中易出现漏检和分类错误,不能满足杂交稻芽种分级检测精度要求。本文通过引入SE(Squeeze-and-excitation)注意力机制,同时将GIoU(Generalized intersection over union)损失函数改进为CIoU(Complete intersection over union)损失函数,对YOLOv5s进行改进和增强,提高了目标检测的特征提取和特征融合能力以及收敛速度。
2.2.1 引入SE注意力机制 注意力机制模仿了人类大脑的视觉注意力机制,通过浏览全局图像对输入信息进行注意力分配,确定重点关注区域,从而快速获取关键信息[21]。SE注意力机制是一种通道注意力机制[22],可以嵌入到YOLOv5s模型中,引进SE注意力机制不会改变原有通道信息提取能力,但能够对无用的背景信息进行过滤,并重点关注特殊内容和特殊位置的信息,从而有效地提高特征信息提取能力,进一步提高检测的准确率。在杂交稻芽种分级检测中,稻种发芽部位位于头部的一侧,其位置具有特殊性。本研究在YOLOv5s颈部结构中添加SE注意力机制以增强特征通道间的关注度,拟合目标通道相关特征信息并抑制无效信息,提高网络模型对水稻芽种发芽部位的关注度,减少背景干扰,有效地提升了模型检测精度。
首先,SE模块对输入特征图X做全局平均池化,生成长为H、宽为W、通道为C的通道特征图像,然后对通道特征图像的长、宽求和再取平均值生成空间注意力特征。挤压(Squeeze,Fsq)操作算法如下:
式中,Z表示通道特征图的平均特征值,u(i,j)表示特征图上的单个特征值。
然后,激励(Excitation,Fex)操作将H×W×C的特征图压缩为1×1×C特征图,在Fex操作中使用2层全连接自适应学习生成权重(S),算法如下:
式中,w1、w2分别为2个全连接层的权重值,δ为连接层使用的Relu激活函数,σ表示Sigmoid函数。
Sigmoid函数归一化操作构建各个注意力特征通道之间的关系,把每个通道的数值限制在0~1之间,抑制无用特征通道信息,激活重点关注区域特征通道。图2为SE注意力模块的结构示意图。
图2 SE注意力机制模块结构示意图Fig.2 The schematic diagram of SE attention mechanism module
2.2.2 改进损失函数 目标检测算法的损失函数一般由位置回归损失和分类损失组成。通常,位置回归损失的评价指标为交并比(Intersection over Union,IoU),该指标用于衡量2个形状之间的相似性。IoU的计算方法如下:
式中,A表示真实框,B表示预测框,A∩B表示预测框和真实框的重叠区域,A∪B表示预测框和真实框的并集。
当预测框和真实框没有重叠区域时,IoU损失函数不仅无法衡量两边界框之间的距离,也无法进行梯度计算[11]。YOLOv5s模型中则采用GIoU损失函数[23]作为位置回归损失的评价指标。GIoU损失函数是IoU的推广,计算公式如下:
式中,C表示包含A和B的最小凸集。
虽然GIoU损失函数能解决两框不相交时的问题,但采用GIoU损失函数检测水稻芽种时,存在无法确认效果最佳的预测框情形。如图3所示,图中3种情况为预测框都在真实框里面,但预测框位置不同。此时,虽然计算得到的GIoU损失函数值是相同的,但无法确定哪个预测框是最佳预测框。为解决该问题,本研究引入CIoU损失函数[24]替代原GIoU损失函数,优化两个框中心点之间距离,有效提高预测框的回归效果。图4为IoU和CIoU的示意图,实线框为真实框,虚线框为预测框。CIoU损失函数计算公式如下:
图3 GIoU损失函数值一致的不同情况Fig.3 Different cases of consistent GIoU loss function values
图4 IoU和CIoU示意图Fig.4 The schematic diagrams of IoU and CIoU
式中,α表示权衡参数,通过对α值调制,更容易用于改进检测器的效果;ρ2(A,B)表示两框中心点间距离;v表示长宽比一致性,c表示预测框和目标框的最小矩形框的对角线距离。
2.2.3 YOLOv5-1目标分级检测算法 YOLOv5s改进后的检测网络命名为“YOLOv5-I”,其网络结构如图5a所示。主要包括Input端、Backbone网络端、Neck端和Prediction端4个部分。
图5 YOLOv5-I网络结构以及CSP1_X和CSP2_X模块Fig.5 YOLOv5-I network structure,and CSP1_X and CSP2_X modules
1) Input端:包括图片输入、自适应锚框和马赛克数据增强。首先,对图像进行预处理,即将输入图像缩放至像素为608×608的图像,然后进行灰度处理。为提高检测速度,在自适应锚框训练前对数据进行标注;为提高目标检测精度,在网络训练过程中进行马赛克数据增强。
2) Backbone网络端:包括CSP1_X模块和Focus模块。CSP1_X模块的作用是对2个分支结构分别进行卷积操作生成Concat模块,经BN(Batch normalization)操作和Leaky Relu激活函数归一化处理最终生成CBL模块,如图5b所示。CBL模块输出的特征图大小与CSP1_X模块相同,保证了图像的完整性。Focus模块的作用是对特征图进行切片操作,目的是在无特征参数下将输入维度进行下采样操作,大幅缩减对图片提取特征梯度的计算量,从而加快训练速度。
3) Neck端:使用FPN(Feature pyramid network)和PAN(Path aggregation network)结构实现信息高维度和信息低维度的融合。FPN采用自上向下的特征金字塔方式,将上采样信息融合成新的特征信息得到预测的特征图。PAN 采用自下而上的特征金字塔方式,对杂交稻芽种特征进行局部特征和全局特征的融合。CSP2_X 对卷积层数量进行调整,如图5c所示。
4) Prediction端:给出模型的预测结果和推断结果,该网络应用锚框(Anchor box)输出检测目标特征图的类别概率、包围框位置和目标得分。YOLOv5-I网络预测端由3个检测层组成,输出80×80×255、40×40×255和20×20×255的特征图,每个检测层最终输出4种不同芽种类别、1种判断类别得分和1个包围框位置坐标,实现目标对象的检测。
3.1.1 训练参数 硬件环境:主板是微星B450M MORTAR MAX,CPU为AMD Ryzen 5 5600X,GPU为10 GB显存的GeForce RTX 3 080,配置CUDA toolkit 11.1和Cudnn 8.05版本深度学习神经网络加速库,DDR4 3200MHZ内存条;软件环境:在Ubuntu 20.04系统下,基于Pytorch 1.10.0 构建总体框架,采用Python 3.8进行编程,使用Pycharm进行编译。按Pascal Voc数据的格式,使用标注工具LabelImg软件对杂交稻芽种图像进行标注,生成 .xml格式文件,图6显示了标注过程。
图6 杂交稻芽种图像标注Fig.6 Image annotation of hybrid rice bud seeds
3.1.2 评价指标 采用准确度(Precision,P/ %)、召回率(Recall,R/%)、AP(Average precision,AP/%)和mAP(Mean average precision,mAP/%)4个指标对模型进行性能评估。计算公式如下:
式中,TP和FP分别表示真实的正样本和虚假的正样本,FN为虚假的负样本,M为检测目标的类别总数,AP(k)为第k类 AP 值。
训练前,网络输入图像像素为608×608,批量设置为36,动量设置为0.937,初始学习率为0.000 1,权值衰减设置为0.000 5。模型迭代次数为300次,训练过程中使用随机梯度下降法优化学习率,训练过程如图7所示。由图7可知,YOLOv5-I损失曲线始终位于YOLOv5s损失曲线下方,表明YOLOv5-I模型的拟合效果优于YOLOv5s模型;对YOLOv5s损失曲线而言,当训练次数超过100次后,在第140次和240次左右出现明显的2次断崖式衰减,表明模型的稳定性欠佳;对YOLOv5-I损失曲线而言,当训练次数达到50次左右时,损失曲线开始趋于收敛,曲线也非常光滑,表明模型的稳定性较好。说明基于CIoU损失函数的YOLOv5-I模型比基于GIoU损失函数的YOLOv5s模型具有更快的收敛速度和更好的稳定性。
图7 YOLOv5-I和YOLOv5s模型训练损失曲线Fig.7 Training loss curves of YOLOv5-I and YOLOv5s models
图8给出了不同情形(未发芽、破胸露白、发芽、长芽和混合芽种)下YOLOv5s和YOLOv5-I目标检测模型的测试结果。由图8可见,检测未发芽种子时,YOLOv5s出现漏检情况,YOLOv5-I均能检测出未发芽种子;对于破胸芽种的检测情况,YOLOv5s算法检测时出现分级错误,即检测出1粒破胸芽种时出现2个预测框,分别为“破胸”和“未发芽”,而YOLOv5-I能够准确识别破胸芽种;检测发芽种子时,YOLOv5s准确检测出图片上所有芽种,但平均置信度为54.25%,远远低于YOLOv5-I检测发芽种子的平均置信度95.50%;对于长芽芽种情况,YOLOv5s出现漏检且分级错误,而YOLOv5-I准确检测芽种状况并成功分类;对于混合芽种检测情况,YOLOv5s虽然平均置信度达到92%,但发生漏检现象,而YOLOv5-I均能准确分级。综上所述,YOLOv5-I检测效果优于YOLOv5s。
图8 YOLOv5-I(a)和YOLOv5s(b)模型的检测结果对比Fig.8 Detection effect comparison between YOLOv5-I (a) and YOLOv5s (b) models
YOLOv5-I和YOLOv5s模型检测结果的PR曲线如图9所示,曲线与纵横坐标所形成的区域面积表示该模型检测的准确度。由图9可知,对未发芽、破胸露白、发芽和长芽的芽种检测,YOLOv5-I的P-R曲线均在YOLOv5s的外侧,且曲线更靠近坐标点(1,1),表明YOLOv5-I检测的准确度高于YOLOv5s,性能更优。
图9 YOLOv5-I和YOLOv5s模型对4种芽种检测结果的P-R曲线Fig.9 The P-R curves of detection effects of YOLOv5-I and YOLOv5s models for four types of bud seeds
使用相同的数据集,采用其他4种算法YOLOv5s、Faster-RCNN、SSD和YOLOv4进行训练,得到最佳权重之后,在同样的测试集上进行测试,对5种目标检测网络在重合度阈值为0.5时进行mAP、准确率、召回率和检测时间的计算,结果如表2所示。由表2可知,整体上,YOLOv5-I目标检测网络在mAP、准确率、召回率和检测速度上均优于其他目标检测算法。YOLOv5-I、YOLOv5s、Faster-RCNN、SSD和YOLOv4算法的mAP依次为97.52%、96.36%、94.42%、93.52%和92.90%,P依次为97.85%、95.88%、95.54%、90.01%和94.39%,R依次为98.27%、96.28%、96.14%、90.25%和95.35%,平均检测时间依次为3.745、5.158、24.143、6.153和25.435 ms。YOLOv5-I算法的mAP分别比YOLOv5s、Faster-RCNN、SSD和YOLOv4算法高1.16、3.10、4.00和4.62个百分点;YOLOv5-I算法的平均检测时间分别比YOLOv5s、Faster-RCNN、SSD和YOLOv4算法少1.413、20.398、2.408和21.690 ms。此外,YOLOv5-I模型占用内存空间为13.7MB,相对较少,比YOLOv5s少了1.9 MB。可见,YOLOv5-I算法优于现有的算法,实现了检测精度和速度的提升,相关性能能够满足杂交稻芽种分级检测的实用要求。
表2 不同目标检测网络对4种芽种的检测结果Table 2 Detection results of different object detection networks for four types of bud seeds
基于YOLOv5s模型,通过引入SE注意力机制和优化损伤函数,提出了一种杂交稻芽种快速分级检测模型YOLOv5-I,实现了杂交稻芽种快速分级检测。采用YOLOv5-I模型检测杂交稻芽种分级时,平均精度为97.52%,平均准确率为97.85%,平均召回率为98.27%,平均检测时间为3.745 ms,能够满足杂交稻芽种快速分级检测的实用要求。与YOLOv5s、Faster-RCNN、SSD和YOLOv4算法比较,YOLOv5-I算法无论是精度还是速度都有明显提升,平均精度分别比YOLOv5s、Faster-RCNN、SSD和YOLOv4算法高1.16、3.10、4.00和4.62个百分点,平均检测时间分别比YOLOv5s、Faster-RCNN、SSD和YOLOv4算法少1.413、20.398、2.408和21.690 ms。