基于CNN的玉米种子内部裂纹图像检测系统

2022-06-21 08:21张宇卓王德成方宪法吕程序
农业机械学报 2022年5期
关键词:玉米种子裂纹准确率

张宇卓 王德成 方宪法 吕程序 董 鑫 李 佳

(1.中国农业大学工学院, 北京 100083;2.中国农业机械化科学研究院集团有限公司土壤植物机器系统技术国家重点实验室, 北京 100083)

0 引言

玉米从收获到销售各环节,易出现不同程度损伤[1-4],导致玉米种子内部的胚乳侧产生裂纹,影响种植品质及效益。开发内部裂纹的自动识别系统,实现玉米种子内部裂纹自动、高效识别,对提高我国玉米种子市场竞争力具有重要作用。

研究人员利用声学及图像的方法识别种子内部裂纹,文献[5-6]发现,由于玉米种子内部细胞空隙阻碍,基于声学的内部裂纹检测效果有待进一步提升。文献[7]对采集的图像进行灰度、均值处理,获得了原图像以及经过平滑拉伸后的差值图,利用阈值分割实现了对种子内部裂纹识别。文献[8]提出了基于频域分析的玉米种子内部裂纹识别方法,对差值图进行阈值分割和膨胀处理,实现了内部应力裂纹识别。文献[9]应用霍夫变换对种子裂纹进行边缘检测,实现了高准确率检测,且平均速度为0.012 5粒/s。文献[10]采用掩膜方法对种子进行区域提取,用Kirsch算子及用矢量化的机器学习完成对玉米种子内部裂纹检测,准确率在80%以上,处理速度不低于0.5粒/s。文献[11-12]用机器学习的方式提取玉米种子内部裂纹边缘特征,检测种子裂纹。已有研究多基于单粒种子进行识别,实现批量检测的较少,模型都是基于传统算法,尚未利用深度学习算法来提高检测稳定性与效率。

卷积神经网络(CNN)已在图像领域广泛应用,其网络层次更加深入,对图像特征提取时,不要求原始图像具备固定的尺寸,不需要对原始图像进行剪切压缩等操作,提取到的特征信息更加完整和精确[13-14]。随着卷积神经网络模型的逐步发展[15-19],模型的改进优化也逐步适应各个应用层面。在农业领域,CNN因在图像检测的优势,大量应用于农作物的检测上[20-23],CNN模型种类较多,需根据具体的检测任务而对模型进行改进或对模型进行选择分析。卷积神经网络模型较传统算法模型不同,可调性较强,除了改变网络结构,也可在设置参数上对其进行微调[24-27]。根据目标图像的像素值以及颜色明暗对比,不同模型的卷积核尺寸数量、池化尺寸以及相应函数优化器都会影响检测效果,在玉米种子内部裂纹的检测上,目前的研究尚未探究CNN模型的检测效果,所以本文对此进行实验分析,对玉米种子内部裂纹检测系统加以研究。

1 图像采集及数据集制作

1.1 图像采集

如图1所示,将玉米种子排列于置种板中,玉米种子内部裂纹存在于种子内部不易识别,需借助光源透射,内部裂纹才能显现。所以实验在采集图像时,对放置玉米种子的种板底安装了光源板,每粒种子对应一个光源,调节光源的明暗度使玉米种子内部裂纹清晰可见。

图1 玉米种板和光源板Fig.1 Corn seed board and light source

选用CREVIS MV-CS30U型工业数字彩色相机,帧率为30帧/s。为了消除其他光对采集图像的影响,将采集系统置于密闭空间内,采集如图2所示的图像。

图2 种板采集图像Fig.2 Collection diagram of seed board

1.2 图像预处理及数据集制作

调整光源,使每个种板孔的种子达到最佳的检测效果,采集多幅图像进行预处理。采集的图像尺寸为2 448像素×2 048像素,根据CV库编写脚本,批量去除种板外的多余像素。再对种板图像进行切片,最终切分成100像素×100像素的玉米种子图像。

将切分好的图像按照图3进行分类,两类数据集分别采集1 000幅图像,将训练集和测试集的图像数量比设为7∶3,保证其训练验证效果,经过数据增强,分别对其中的图像抽样进行旋转、添加噪声、亮度增强等,每个数据集样本扩增至6 400幅,共计12 800幅。

图3 数据集制作Fig.3 Dataset production

2 实验模型

2.1 模型选择与分析

本文选用深度学习中经典的卷积神经网络(CNN)模型AlexNet、VGGNet、Inception以及ResNet作对比实验分析,探究适合在玉米种子内部裂纹检测中的最优模型。

AlexNet与初代卷积神经网络LeNet相比在模型层次上进行了加深,在神经网络深度上进行了加大,并引入ReLU激活函数以及Dropout。AlexNet网络结构如图4所示,网络中存在8个带权重的层,前5层是卷积层,后3层是全连接层,衔接1 000维Softmax函数作为输出层,产生1 000类标签的分布。

图4 AlexNet网络结构示意图Fig.4 Schematic of AlexNet network structure

VGGNet在AlexNet基础上,卷积核扩展了通道数,池化使得宽高变小,计算量和深度增加,VGGNet的主体网络都使用了相同尺寸的卷积核(3×3)和最大池化尺寸(2×2)。

Inception系列尽管没有对网络深度改进调整,但对网络结构进行改进,使用1×1、3×3和5×5不同尺寸的卷积,增加了提取特征面积的多样性和差异性,以此来减小过拟合。

ResNet提出了残差单元设计。AlexNet、VGGNet网络直接通过训练学习出参数函数,单层路径加载权重学习。如图5所示,残差学习致力于使用多个有参网络层学习输入、输出之间的残差,通过跳层连接,将输入的x值与输出单元加在一起通过ReLU激活,收敛更快。

图5 残差单元图Fig.5 Residual cell diagram

4种网络在卷积层输出的ReLU激活函数表达式为

f(x)=max(0,x)

(1)

由ReLU激活函数表达式可以看出,ReLU本质上是将函数输出值取最大值,负值变为0,正值无变化,因此又被称为单侧抑制。由于存在单侧抑制,神经网络中的神经元也具备了潜在的激活性。4种网络在全连接层都用到的Softmax回归层的表达式为

(2)

式中aj——第j个节点的输出值

T——输出节点的个数

Softmax函数能够将多分类的结果转换为范围在[0,1]、和为1的概率输出结果。

2.2 环境配置及参数选择

使用基于Pytorch的深度学习框架,Python 3.7编程语言,在Pycharm搭建4种CNN模型,用Anonconda配置环境添加模型训练及测试的依赖。Pytorch作为一种可塑性较强的动态API,相较于Tensorflow神经网络更易扩充展开,在Windows 10操作系统下通过Pycharm运行。

采用4组模型AlexNet、VGG11、InceptionV3、ResNet18,选取冲量为0.9的随机梯度下降(SGD)为优化算法,学习率设为1×10-5,训练和验证的批尺寸为32。训练的损失通过交叉熵损失函数计算,交叉熵损失函数公式为

L=-[yilgpi+(1-yi)lg(1-pi)]

(3)

式中pi——样本i预测为正类的概率

yi——符号函数,样本i为正类取1,反之取0

其训练损失的梯度也较小,交叉熵损失可以避免这种梯度衰退,配合后续的Softmax函数达到更好的分类效果。训练随迭代轮数增加,准确率逐渐收敛于100%,损失值逐渐收敛于0。

3 实验结果与分析

图6 模型训练曲线Fig.6 Model training curves

模型训练实验结果如表1所示,在控制其他条件相同下,取迭代轮数100、200、250进行分析。如图6所示,VGG11的网络深度较高,使用参数过多,训练迭代一轮用时较多,验证集准确率和训练集准确率在100轮内存在较大差异,100轮后验证准确率大幅提升,训练集损失值和验证集损失值在100轮以上有时会随着准确率提升而提升,这就发生了过拟合现象,加载出的权重文件不利于识别。验证集准确率能更好地反映最后识别准确率,迭代100轮时,AlexNet和ResNet18的验证集准确率都超过了90%。在200轮后,InceptionV3和AlexNet的验证集准确率都达到了97%,ResNet18达到了99.62%,综合图6的验证集准确率和训练集准确率曲线可以看出,InceptionV3的曲线集合误差较高,变化大,泛化能力差,易发生梯度消失,特殊点的存在导致无法综合反映其准确效果,同时在迭代一轮的时间上也较长。AlexNet和ResNet18训练时间短效率高,训练集准确率和验证集准确率差异较小,两者的训练集、验证集准确率损失值曲线都随着迭代轮数稳步变化,泛化能力较好,未发生过拟合。

表1 模型训练实验结果Tab.1 Experimental results of model training

从实验材料中另采集600幅有裂纹的玉米种子图像和600幅无裂纹的玉米种子图像作为测试数据。分别加载上述迭代250轮的AlexNet和ResNet18的权重,进行测试,实验结果如表2所示, AlexNet在单粒种子识别时间上比ResNet18短,但准确率上ResNet18高于AlexNet,对裂纹的识别准确率更高,能达到95.04%,对无裂纹的识别准确率能达到98.06%。为了比较深度学习算法和传统算法对玉米种子内部裂纹的识别准确率,选取两种泛化能力较好的传统算法SVM(支持向量机)和BP(反向传播)神经网络,对相同的样本进行测试,结果如表2所示,在对玉米种子内部裂纹识别准确率上,两种传统算法模型均低于卷积神经网络模型。

表2 传统模型与CNN模型训练对比结果Tab.2 Comparison results of traditional model and CNN model training

ResNet网络虽然比AlexNet和Inception网络更深,但添加了残差单元模块,权重计算上呈跳跃式输出,结合直接计算分析能有效抑制过度拟合带来的问题。在ResNet网络的输入中,没有过度追求像素级别的识别,而是注重整体性分辨率,这也是ResNet相较于其他网络在保证了准确率的同时,训练速度也较快。综上所述,玉米种子内部裂纹模型训练上选择ResNet18,为了更好地在网络中选择合适的参数,同时比较学习率为10-3、10-4、10-5、10-6,批尺寸为16、32、64、128时模型训练效果,共计12组实验进行对比分析。训练发现,学习率控制在10-3和10-4时,选择较大的批尺寸才能满足训练精度,批尺寸16、32、64都无法满足,而批尺寸128大幅增加训练时间。学习率设置为10-6时,4组批尺寸都出现了过度拟合问题。综合比较后,选择学习率为10-5、批尺寸为32的ResNet18模型,将迭代250轮训练的权重,引入批量检测玉米种子内部裂纹的算法中。

4 玉米种子内部裂纹识别系统设计

玉米种子内部裂纹自动识别装置样机如图7所示,完成机械装置的搭建以及控制模块的安装,利用wxPython库编写玉米种子内部裂纹识别软件控制装置各个单元,配合识别算法可视化检测结果,完成整体检测。种子内部裂纹识别装置示意图如图8所示,整体分别由运输单元、下采图单元、上采图单元、下料单元、机架以及PC操作平台构成,连接串口通信,通过可视化界面,控制整个装置的运行。 装置整体用黑色喷漆覆盖,利于装置光源对种子的投射,防止其他光对实验进行干扰,机架自身符合力学要求,能够承载电机控制模块以及各个单元。

图7 玉米种子内部裂纹自动识别装置实物图Fig.7 Physical picture of corn seed internal crack automatic identification device

图8 种子内部裂纹识别装置结构示意图Fig.8 Seed internal crack identification device1.机架 2.下料单元 3.上采图单元 4.下采图单元 5.运输单元

玉米种子内部裂纹检测装置总体工作原理:玉米种子进种到种板,每粒种子分别落至种板上的孔,PC操作界面控制丝杠滑台带动种板移动,当种板移动至下采图单元时,控制平台给出信号使丝杠停止移动,同时,下采图单元的光源会接收信号打开光源,每一个LED光源都对应一粒种子,种子被光源透射后,内部裂纹显现,相机接收信号拍摄种板图,种板位于玻璃板上方,所以相机拍摄的种板图不受影响。下采图单元的相机拍摄出的种板图经过SDK协议传输到PC操作平台的识别算法中进行识别,每粒种子的识别结果都会输出在可视化界面。由于种子随机落入种板,种子内部裂纹位于胚乳侧,下采图单元的相机自下向上拍摄种子图像,能识别出胚乳侧在下方的玉米种子内部裂纹,不能识别胚乳侧朝上的种子裂纹。为了完全检测出玉米种子是否存在内部裂纹,需要自上而下拍摄种子图像。

下采图单元采图完成后,PC操作平台对丝杠滑台发出信号,滑台带动种板进入上采图单元,与下采图单元同理,网络对每粒种子进行识别得出检测结果,这时胚芽侧朝下、胚乳侧朝上的玉米种子内部裂纹识别完成。识别算法中引入二次判断机制:每粒种子在两次识别过程中,若两次均为无裂纹,则最终判定为无裂纹,若两次识别结果有一次是有裂纹,则最终判定为有裂纹,最后平台完成计算,输出最终的识别结果,在左上方分布玉米种子对应的位置点,根据颜色不同可判断对应位置的玉米种子是否为有裂纹,判定完成后结束检测任务,最终软件输出的界面如图9所示。

图9 玉米种子内部裂纹识别软件界面图Fig.9 Interface diagram of maize seed internal crack identification software

当前批次检测完成后,PC操作平台发送给丝杠滑台信号,将这一批次种子全部排出,滑台随即原路返回,准备下一批次的检测任务。从实验种子选取400粒,分为10组,每组40粒,检测结果如表3所示。10组中有裂纹的平均识别准确率为94.25%,无裂纹的平均识别准确率为97.25%,略低于上述的单粒种子识别准确率,分析其原因是种板在进行预处理与切片时,图像进行统一处理,多余的像素值会影响模型提取特征,增加了处理操作也会让鲁棒性变弱,光源的透射也无法对40粒种子进行统一的效果增强,影响了特征提取过程,多次加载模型权重导致泛化性不足同样会影响准确率。40粒玉米种子的检测平均识别时间为13.4 s,满足工业生产中对种子的筛选效率。

表3 批量检测玉米种子内部裂纹识别准确率Tab.3 Accuracy rate of batch detection of internal cracks in corn seeds %

5 结论

(1)制作玉米种子数据集进行训练,对4种卷积神经网络实验分析后,初步选择AlexNet和ResNet18,进行性能比较,两者种子内部裂纹识别准确率均大幅优于SVM和BP神经网络模型,验证了在种子内部裂纹检测问题上,深度学习算法模型优于传统算法模型。虽然ResNet18在平均单粒种子识别时间上高于AlexNet,为4.42 s,但ResNet18的识别准确率更高,有裂纹种子的识别准确率为95.04%,无裂纹种子的识别准确率为98.06%。

(2)实验比较后认为ResNet18的检测性能更好,训练后的权重文件用于后续系统测试。本文设计了一种批量检测玉米种子内部裂纹的方法,并开发了识别玉米种内部裂纹软件,通过控制检测装置,使光源投射入种板内种子,通过两次采集种板图,分别送入设计的识别算法中进行预处理、切片、识别,最后可视化界面中输出结果。

(3)根据检测玉米种子内部裂纹的实际情况,搭建检测机械装置,安装电机控制模块以及编写可视化界面,利用串口通信进行控制,在识别算法中添加二次判断机制,提高检测性能,完成玉米种子内部裂纹图像检测系统。

(4)批量检测玉米种子内部裂纹系统实验进行10组,有裂纹种子的平均识别准确率为94.25%,无裂纹种子的平均识别准确率为97.25%,略低于上述的单粒种子识别准确率,分析原因是种板在进行预处理和切片时,图像进行统一处理后,多余像素值会影响模型提取特征,光源的散射无法实现对40粒种子统一地增强效果,再次影响特征提取过程。多次加载模型的权重同样也会导致网络对种子检测的泛化性不足。

猜你喜欢
玉米种子裂纹准确率
不同条件下对济宁地区玉米种子萌发特性的研究
风机增速齿轮含初始裂纹扩展特性及寿命分析
有了裂纹的玻璃
有了裂纹的玻璃
乳腺超声检查诊断乳腺肿瘤的特异度及准确率分析
多层螺旋CT技术诊断急性阑尾炎的效果及准确率分析
不同序列磁共振成像诊断脊柱损伤的临床准确率比较探讨
颈椎病患者使用X线平片和CT影像诊断的临床准确率比照观察
贮藏中玉米种子活力与寿命的问题
心生裂纹