APP下载

基于卷积神经网络模型的裂纹鸡蛋图像识别

2023-12-27唐梦笛同思远

食品与机械 2023年11期
关键词:图像识别预处理鸡蛋

李 舒 唐梦笛 同思远 孙 柯

(安徽师范大学生命科学学院,安徽 芜湖 241000)

鸡蛋在收售加工过程中容易形成裂纹。裂纹鸡蛋容易受微生物侵染而腐败,内容物流出还会污染其他鸡蛋。目前,裂纹鸡蛋的检测主要采用人工视觉辅助的半自动式透光检测方法或人工通过分辨鸡蛋的敲击声音判断,效率低。对鸡蛋裂纹自动检测方法的研究主要集中在声学震动和计算机视觉两个方面。基于声学振动法的鸡蛋裂纹检测需要振动或敲击,识别速度无法进一步提高,且当敲击点远离裂纹位置时容易造成误判[1-2]。与声学振动方法相比,计算机视觉方法所用设备简单,成本较低,易于实现,裂纹鸡蛋在强光穿透照射下裂纹较为明显,可通过采集鸡蛋透光图像,然后使用图像处理及模式识别方法实现。

早期学者多利用基于阈值分割的传统图像处理方法识别裂纹鸡蛋图像[3-5],但由于鸡蛋蛋壳透光性及蛋黄吸光性的影响,鸡蛋透光图像灰度值不均匀,细长的裂纹区域灰度值变化较大,难以找到适合分割的阈值,较小的裂纹容易被忽略。基于此,Priyadumkol等[6]、Yoon等[7]设计并实现了一种基于改进压力室和连续旋转鸡蛋的鸡蛋裂纹检测机器视觉系统,通过压力变化扩大鸡蛋裂纹后检测,但会导致检测速率下降而且设备复杂。此后,Sun等[8]根据鸡蛋图像中裂纹区域局部灰度值的变化规律,提出了有序波信号提取和识别算法,适合对图像中具有亮度差异的细条状区域进行提取,对宽度为0.06~1.13 mm的裂纹鸡蛋的识别准确率为98.9%,完好鸡蛋的识别准确率为96%。

使用复杂的图像算法能够提取鸡蛋图像中的裂纹信号,但往往也会受到鸡蛋表面亮斑的干扰,将一部分完好的鸡蛋判定为裂纹鸡蛋。随着深度学习技术的发展和完善,卷积神经网络在图像识别中展现出强大的学习能力。陈羽立等[9]利用 EfficientNet 搭建迁移学习网络,训练含裂纹蛋与完好蛋的分类模型,最终测试集综合准确率达到97. 2%;Nasiri等[10]使用基于VGG16结构的CNN模型,对裂纹鸡蛋图像进行判别,准确度为96.55%;Turkoglu[11]利用深度学习技术,使用DenseNet模型从6个不同方向采集的图像中提取特征,然后将获得的特征输入双向长短期记忆模型(BiLSTM),对裂纹鸡蛋的识别准确率达到了99.17%;Botta等[12]使用改良后的LeNet-5 架构建立了裂纹鸡蛋图像识别的CNN模型,其准确率为95.38%;赵祚喜等[13]利用机器视觉技术,并结合深度学习网络深层次特征提取、高精度检测分类的特性,提出一种基于YOLOv4网络的破损鸡蛋检测方法,在线检测时,YOLOv4模型对含不同比例的破损蛋识别正确率平均为86.22%;Tang等[14]使用改进的MobileNetV3_large模型对破损皮蛋图像进行识别,准确率达96.3%。Wong等[15]使用AlexNet卷积神经网络模型,提取蛋壳上斑驳图案的学习图像特征,对裂纹特征检测准确率为91.8%;姚学峰等[16]建立了一种改进的YOLOv5裂纹鸡蛋图像检测模型,将轻量级网络MobileNetv3添加到YOLOv5模型中,以降低模型复杂度,删除颈部网络和输出端小目标检测结果,其检测准确率达95%以上。

相比于传统的图像处理方法,卷积神经网络模型能够达到更高的识别准确度。卷积神经网络模型种类繁多,有以YOLO、R-CNN卷积神经网络为代表用于图像目标定位的模型和ResNet、SuffleNet等用于整体图像识别的卷积神经网络模型。因此,不同模型对裂纹鸡蛋图像识别准确率的差异有待研究。此外,鸡蛋图像的预处理会占用部分运算时间,卷积神经网络模型能否对未经预处理的原始鸡蛋图像进行准确识别有待进一步确认。

研究拟使用在线式鸡蛋图像采集设备采集裂纹鸡蛋和完好鸡蛋的图像作为数据集,分别建立用于鸡蛋裂纹识别的YOLO-v5、ResNet和SuffleNet模型,并比较不同模型对裂纹鸡蛋的识别准确率和对未经预处理鸡蛋图像的适应性,以期获得准确率更高的裂纹鸡蛋图像判别模型。

1 材料和方法

1.1 试验材料

来航鸡产新鲜白壳蛋500枚,采购于南京市童卫路农贸市场,送入实验室后未进一步清洗以保证其状态与实际生产中鸡蛋状态一致,其中250枚鸡蛋使用自制禽蛋模拟撞击设备产生,禽蛋模拟撞击设备参考文献[17]28制作,结构如图1所示。从10 cm长30°的V型斜坡滚落以不同位置撞击与蛋壳曲率近似的塑料弧面撞击头,共产生250枚裂纹鸡蛋,剩余250枚为完好鸡蛋,经数码显微镜检测,裂纹蛋裂纹宽度为(65±28) μm。

图1 禽蛋模拟撞击设备示意图

1.2 试验方法

1.2.1 鸡蛋图像采集 使用文献[17]82中的鸡蛋图像采集设备,如图2所示,该设备利用禽蛋输送装置下方的输送辊将禽蛋输送至光源正上方,鸡蛋遮挡住感应模块探头,感应模块向计算机发送电位信号,连续触发图像采集,且该过程中没有禽蛋的拍摄位下方光源在图像采集时保持关闭,不影响其他拍摄位禽蛋图像的采集,实现了稳定的禽蛋在线动态图像采集。分别模拟鸡蛋裂纹实际检测过程采集鸡蛋图像,共采集不同角度裂纹鸡蛋图像473张和完好鸡蛋图像576张,并使用文献[5]中图像预处理方法,即使用红色和蓝色的差值分量进行自适应双峰阈值分割,得到鸡蛋区域的二值图像,然后以此二值图像为模板将图像中除鸡蛋外的区域设定为纯黑色,预处理效果如图3所示。鸡蛋蛋壳形成过程中产生的长条状低密度区域会在透光图像中形成长条状亮斑,是影响裂纹鸡蛋识别的主要因素。

图2 鸡蛋动态图像采集设备[17]82

图3 裂纹和完好鸡蛋图像

1.2.2 裂纹鸡蛋图像识别的YOLO模型建立 YOLO模型可以识别出图像中特定类别目标的位置,训练前需要手动标记出鸡蛋图像中裂纹位置。如图4所示,为了研究YOLO-v5模型对裂纹鸡蛋的检测效果,使用Python平台的LabelImg工具(https://github.com/tzutalin/labelImg)对原始和经过预处理的裂纹鸡蛋图像中的鸡蛋裂纹区域进行人工标记,并将每种标记后的图像按照6∶4的比例划分为建模集和验证集,以作为YOLO-v5模型的训练数据集。

图4 鸡蛋图像裂纹标记

使用Python平台的Yolov5-master工具(https://github.com/ultralytics/yolov5)建立原始和经预处理后的鸡蛋图像中裂纹区域的识别模型,YOLOv5中包含s、m、n、l和x 5种规模的模型架构,其中s规模的模型架构深度和宽度分别为正常架构的33%和50%,更适合普通计算机的训练及部署。因此,以其进行模型的建立。此外,建模过程中采用了马赛克增强、图像左右翻转和上下翻转策略,并使用CoCo数据集(美国Microsoft公司)作为预训练模型以减少训练次数。模型输入图像尺寸宽度设置为640像素,批尺寸设为4以节约显存,训练次数为100,其余建模参数采用模型推荐参数。模型验证时,置信度阈值选择0.3,训练时记录模型每次训练后的目标损失和边界框损失,并计算最佳模型的判别准确率。计算准确率时凡检测出包含裂纹的图像均被判定为裂纹鸡蛋图像。

1.2.3 裂纹鸡蛋图像识别的ResNet和SuffleNet模型建立 使用Python平台的Deep learning for image processing master(https://github.com/WZMIAOMIAO/deep-learning-for-image-processing)工具建立原始和经预处理后的裂纹鸡蛋图像的ResNet和SuffleNet识别模型。ResNet和SuffleNet没有图像目标识别能力,只能对图像整体进行分类,因此无需对裂纹进行标记。ResNet模型建立时建模集和验证集图像比例为6∶4,而SuffleNet建模算法中自动划分建模集和验证集比例为7∶3。ResNet学习速率设为0.000 1,SuffleNet学习速率设为0.01,均为默认参数,批尺寸均为4,训练次数均为50。训练时记录模型每次训练后的误差和准确率,并计算最终训练模型的判别准确率。

2 试验结果

2.1 模型训练过程中误差变化

由于图像中的裂纹为连续的线形或网状信号,而非边界明确的单个信号,因此仅以边界框损失评价YOLO-v5模型训练效果。如图5所示,3种卷积神经网络模型训练时收敛速度均较快,ResNet、YOLO-v5和SuffleNet分别在5,10,30次训练后,其对验证集识别误差达到稳定状态,过渡训练容易造成过拟合。但训练用于原始裂纹鸡蛋识别的ResNet模型时,验证集准确率波动较大,ResNet模型不适用于原始裂纹鸡蛋图像的识别。

图5 不同模型训练过程误差变化

2.2 YOLO-v5模型对鸡蛋图像中裂纹区域识别准确率

如表1所示,YOLO-v5模型对预处理后的图像和原始图像中裂纹区域的识别准确率都能达到0.95左右。YOLO-v5模型能够有效识别鸡蛋图像中的裂纹区域,并进行定位,但部分较小的裂纹未被识别出来。这是由于鸡蛋图像中裂纹错综复杂且形态多变,无固定的人工标定依据,导致部分细小裂纹在训练时被忽略。而且裂纹区域识别准确度是机器对裂纹区域标定结果与人工标定结果的对比。由于难以形成统一的标定标准,同一条裂纹机器标定区域与人工标定区域会存在少部分的偏差,造成裂纹区域识别准确度下降,但这并不影响后续的判别结果。

表1 YOLO-v5模型对图像中裂纹区域识别准确度

2.3 3种模型对经预处理后裂纹鸡蛋图像识别准确率

YOLO-v5、ResNet和SuffleNet模型对经过预处理后的裂纹鸡蛋图像识别效果如表2所示。其中,SuffleNet模型识别准确率达99%以上,YOLO-v5和ResNet模型对验证集的识别准确率分别为98.8%和97.8%。而潘磊庆等[3]的方法识别准确率为92.9%,Priyadumkol等[6]的方法识别准确率为94%,可以看出,这3种卷积神经网络模型与传统基于边缘检测和阈值分割的图像处理方法相比具有更高的识别准确率,且对完好鸡蛋图像的识别错误率控制强于基于连续波信号的裂纹鸡蛋识别法[8]。此外,Nasiri等[10]使用VGG模型识别准确率为96.55%,Botta等[12]使用LeNet-5模型识别准确率为95.38%,Wong等[15]使用AlexNet模型识别准确率为91.8%,可见相对于VGG、LeNet-5、AlexNet等前期经典卷积网络模型,YOLO-v5、ResNet和SuffleNet模型在裂纹鸡蛋图像识别中也展示出了更强的识别能力。

表2 经预处理后的裂纹鸡蛋图像识别结果

YOLO-v5能够实现对裂纹等细节目标位置的识别,但并不是准确率最高的识别模型。此外,YOLO-v5的建模工作量比ResNet和SuffleNet大很多,且人工标记的失误会影响模型的检测准确度。虽然SuffleNet无需标记裂纹位置,但依然可以在较少的训练次数中找出不同类别的图像特征差异,这得益于其较高的图像输入分辨率和较小的卷积核尺寸。因此,相对于YOLO-v5模型,SuffleNet模型更适合于裂纹鸡蛋图像的识别。

2.4 3种模型对未经预处理裂纹鸡蛋图像识别准确率

YOLO-v5、ResNet和SuffleNet模型对未经预处理的原始裂纹鸡蛋图像识别准确率如表3所示。YOLO-v5和SuffleNet模型对未经预处理的裂纹鸡蛋图像的识别准确率与经预处理后的图像相比变化不大,而ResNet模型对未经预处理的裂纹鸡蛋识别准确率较低,说明ResNet模型较容易受到冗余图像信息的干扰。从图5也可以看出,使用未经预处理的鸡蛋图像建模时,ResNet模型无法收敛。而SuffleNet模型对未经预处理的裂纹鸡蛋图像识别准确率接近100%,是理想的鸡蛋裂纹图像检测模型。

表3 未经预处理裂纹鸡蛋图像识别结果

实际生产过程中,鸡蛋在生产线上高速运动。采集鸡蛋图像时不可避免会拍摄到输送鸡蛋的输送辊和链条。使用图像处理方法能够有效去除这些冗余信息,但会增加设备的运算量,而使用SuffleNet模型能够实现鸡蛋图像采集后立即识别,节约了算力和时间,有利于检测速度的提升。

3 结论

研究建立了用于裂纹鸡蛋图像识别的YOLO-v5、ResNet和SuffleNet模型,其中,SuffleNet模型对经过和未经过预处理的裂纹鸡蛋图像均能够准确识别,准确率达99%,超过了传统机器学习方法和前期的卷积神经网络模型。从识别准确率来看,能够实现图像目标定位的YOLO-v5模型并不是裂纹鸡蛋检测的最佳模型,用于图像整体识别的卷积神经网络也能够有效分辨鸡蛋图像中的裂纹信号。此外,ResNet模型易受冗余图像信息干扰,难以适应未经预处理的鸡蛋图像。因此,这3种模型中最适合裂纹鸡蛋图像识别的模型为SuffleNet模型,该模型能够准确识别裂纹鸡蛋图像且不需要图像预处理过程,可节约算力和时间提升检测速度。但试验所用的裂纹鸡蛋样本为人工制得,对实际生产中出现的裂纹鸡蛋是否适用,特别是裂纹位于鸡蛋两个尖端情况的检测方法有待于进一步研究讨论。

猜你喜欢

图像识别预处理鸡蛋
基于Resnet-50的猫狗图像识别
高速公路图像识别技术应用探讨
图像识别在物联网上的应用
图像识别在水质检测中的应用
基于预处理MUSIC算法的分布式阵列DOA估计
神奇的鸡蛋画
浅谈PLC在预处理生产线自动化改造中的应用
从鸡蛋开始
认识鸡和鸡蛋
络合萃取法预处理H酸废水