基于CD-YOLO算法的蚕茧种类识别

2021-11-28 05:02李时杰孙卫红邵铁峰
中国计量大学学报 2021年3期
关键词:蚕茧先验种类

李时杰,孙卫红,梁 曼,邵铁峰

(中国计量大学 机电工程学院 茧丝绸质量检测技术研究所,浙江 杭州 310018)

我国是世界蚕丝业的发祥地,是最早发现并利用蚕丝的国家,蚕丝业历史悠久。在鲜茧采集后,缫丝企业通常先对其进行干燥处理,再通过混茧、剥茧、选茧、煮茧、缫丝、复摇整理等一系列工序,使蚕茧转变为生丝。在选茧工序中,根据缫丝生产中的使用价值,可将蚕茧分为“上车茧”和“下茧”两大类。上车茧是指茧形、茧色、茧层厚薄及缩皱正常无疵点的茧。下茧是指有严重问题、不能或很难正常生丝的蚕茧[1]。

目前,国内大多数缫丝工厂仍通过肉眼判定蚕茧质量,蚕茧分选的效率和识别准确率处于较低水平,近年来国内外已有学者开始研究如何通过图像识别技术解决这一难题。杨光友[2]等人提出了蚕茧检测中神经网络应用的思路,将BP与RBF神经网络集成,蚕茧种类检测准确率达87.8%。金航峰等[3]以蚕茧灰度图识别上车茧、黄斑茧、柴印茧以及畸形茧四类蚕茧。刘莫尘等[4]通过图像的颜色和面积对方格簇进行分割,并采用FCM和HSV模型识别黄斑茧。陈浩[5]等人提出了选茧辅助检测方法,利用MATLAB对蚕茧图像进行图形处理与数值计算,并通过摄像机准确标定,最终得出蚕茧表面缺陷面积。Prasobhkumar等印度学者[6]统计黄斑茧RGB颜色阈值与上车茧椭圆长宽比具体参数,提出了一种蚕茧优良品质评价系统。本课题组成员黄志鹏[7]对蚕茧图像特征做主成分分析,结合支持向量机构造分类器,对五种蚕茧进行有效分类。

以上蚕茧种类识别的研究仍存在亟待解决的问题,主要有以下两点:国内外学者的研究对上车茧和斑点茧的识别准确率较低,无法达到日常生产过程中选茧准确率的要求;现有文献中的方法对于蚕茧视频或图像的处理速度无法满足现阶段缫丝工厂流水线选茧速度,效率低,无法应用于实际工作环境。

近年来兴起的基于深度学习的目标检测算法为蚕茧种类检测提供了新的思路,其中代表算法有R-CNN[8]系列与YOLO[9]系列。R-CNN系列算法是基于区域生成的目标检测算法,虽然检测精度较高,但检测时间略长,不符合生产线中蚕茧实时检测效率标准。YOLO系列算法是基于回归方法的目标检测算法,具有多尺度的检测机构[10],识别速度快,且准确率也可基本到R-CNN系列算法水准。

本文以黄斑茧、烂茧及上车茧三种常见茧类为研究对象,根据蚕茧基本性状和识别需求,首先借鉴K-means[11]算法与Canopy[12]算法,提出C-means聚类方法,用于获得适合蚕茧的先验框尺寸;其次在传统YOLOv3算法中基础上,采用了合并批量归一化层以及删除特征尺寸图的方式构建了CD-YOLO(Cocoon Detection YOLO)网络结构;最后在原YOLOv3的损失函数中引入了GIoU[13]函数以及调整了分类占比。改进后的算法通过实验测试表明,不仅保证了蚕茧种类检测高精度,还满足了实时检测的需求。

1 数据与方法

1.1 CD-YOLO检测技术路线

本文旨在利用CD-YOLO蚕茧种类识别算法对不同蚕茧种类进行辨别,进而提高选茧效率,具体检测技术路线图如图1。

图1 技术路线图Figure 1 Technology road map

1.2 构建蚕茧图像数据集

利用如图2所示的蚕茧图像采集装置采集蚕茧图像共800张。针对蚕茧姿态多样与形状各异等问题,采用翻转、缩放以及平移等进行数据增强蚕茧图像,最终图片数量扩充至12 000张。将所有图片按5∶3比例随机划分为训练集和测试集。

完成蚕茧图像采集后,需采用Labelimg软件对数据集图片进行标注,如图3所示为数据集样照。Labelimg可以根据每张图片中被标记蚕茧的位置自动生成相对应x,y,w,h值,记录蚕茧具体种类信息,生成xml格式的蚕茧图像标注文件,并以标准的VOC数据集格式存储。

图2 蚕茧图像采集装置Figure 2 Cocoon image acquisition device

图3 数据集样Figure 3 Dataset sample

1.3 C-means聚类先验框

因识别物体不同,需要提前设计不同尺度的先验框,以便提高预测框的匹配度。传统YOLOv3算法以COCO数据集中80余种大小不一的物体为样本进行训练预测,共提供了9个先验框,尺寸数据分别为(10,13),(16,30),(33,23),(30,61),(62,45),(59,119),(116,90),(156,198),(373,326)。

但本文仅针对蚕茧进行种间检测,并不需要尺寸差距过大的先验框。本课题组利用游标卡尺统计同一批次蚕茧尺寸信息,该批次直径区间为18~20 mm,长度区间为28~37 mm[14]。由上述数据可得蚕茧长短轴比例约为9∶5,对比发现原始的9个先验框尺寸并不全都适用于蚕茧检测,并且蚕茧图像中蚕茧占整幅图比例也较大,小尺寸的先验框无法用于蚕茧图像识别。因此需重新设定符合蚕茧种类检测的先验框。

目前,获得先验框的主要方法为通过K-means方法对数据集进行聚类,其核心思路为随机选定K个对象作为聚类中心,通过计算其余对象跟聚类中心的距离,将其各自划分至最近的簇中心,所有对象划分完成后,进行反复迭代,直至簇中心不再发生变化。但此方法的K值需要人为选定,不同K值对聚类效果影响较大,所得结果具有不稳定性。

因此本文提出C-means算法,其核心思路为将Canopy算法与K-means算法融合,先利用Canopy算法进行初步聚类,计算得出对应的K个簇中心,以此作为K-means聚类的中心,随后使用K-means进行精准聚类,从而获得最终适合蚕茧图像数据集的先验框。以下为算法执行步骤:

1)将蚕茧图像数据集随机排列成列表L=[X1,X2,…,Xm],根据交叉验证参数,设定初始样本距离阈值T1与T2,且要求T1>T2。

2)从L列表中随机抽取出一个样本P作为第一个簇中心。

3)从L列表中随机选择一个样本Q,计算Q到所有簇中心的距离,获得其中最小值D。若D≤T1,则将Q设为弱簇点,将Q放入P中;若D≤T2,则Q为强簇点,说明Q与P之间的中心位置为新的簇中心;若D≥T1,则Q脱离L列表,成为一个新的簇中心。

4)重复上述第三步操作,直至L列表中样本数为0。

5)将得到K个簇中心,将K值代入K-means算法中,对蚕茧数据集进行聚类。

在完成蚕茧图像数据集聚类后,以误差平方和(SSE)为指标评判C-means聚类结果。SSE计算公式如下:

(1)

(2)

其中k个类别的样本集合为C=[C1,C2,…,Ck]。经过C-means聚类获得9种尺寸的蚕茧图像的先验框,分别为(172,298),(214,274),(205,311),(231,297),(263,301),(258,202),(291,245),(288,176),(307,223)。

1.4 CD-YOLO的检测网络设计

针对不同种类蚕茧的自身特性,为了进一步提升蚕茧种类智能化辨别的高效性与准确性,本文以YOLOv3网络为基础,从合并批量归一化层、修改特征图尺度以及重设损失函数三方面设计了CD-YOLO的检测网络。

1.4.1 合并批量归一化层(BN)

在设计网络结构时,通常会加入BN层,从而加速离散网络的收敛,在一定程度上可防止过拟合现象的发生。虽然BN层在数据集训练时发挥了积极作用,但是在检测器预测时需要增添诸多运算,易影响算法的性能且占用了更多的显存空间。

因此本文将BN层的参数合并到卷积层中,通过减少BN层计算来提高预测速度。合并卷积层和BN层的计算公式如下:

(3)

(4)

其中xout为BN层计算结果,γ为缩放因子,μ为均值,σ2为方差,β为偏置,xconv为卷积层计算结果,将(4)式带入(3)式中可得:

(5)

(6)

合并后权值参数变为

(7)

即BN层与卷积层合并的计算为

(8)

如图4所示,传统YOLOv3算法将卷积层、BN层以及激活层集成为一个DBL基本单元。通过上述方法,BN层参数合并至卷积层,可减少前向运算量,加快了蚕茧种类识别算法的预测速度。

图4 DBL基本单元Figure 4 Basic unit of DBL

1.4.2 删除尺寸特征图

传统YOLOv3为了提高在图片中小物体的检测性能,设计了三个尺度规格的特征图:13×13、26×26、52×52。通过上述三种特征图尺度基本可以有效识别各类大小不一的物体,但在蚕茧种类识别过程中,目标蚕茧占整幅图像的比例不会存在较大的偏差,因此本文删除部分尺度特征图,便于减少运算,提高整体蚕茧种类识别效率。

将大小为416像素×416像素的蚕茧图像输入至网络后,在尺度为52×52的特征图中,每一个网格的尺寸为8像素×8像素。根据摄像机内部参数的标定结果,在拍摄蚕茧图像时,单个网格所对应的蚕茧最大二维投影尺寸约为2.86 mm×2.86 mm,此数据远小于蚕茧的投影尺寸。因此可删除该尺寸的特征图,只采用13×13、26×26两种尺度的特征图识别蚕茧种类。此方法简化了部分上采样、卷积过程,使检测器识别速率进一步提升。如图5为改进后的网络结构。

1.4.3 重设标准损失函数

传统YOLOv3算法中的标准损失函数主要包含三种损失函数,即坐标损失函数、置信度损失函数以及分类损失函数。本文主要通过替换坐标损失函数与调整分类损失在YOLOv3中标准损失函数的总占比,来提高蚕茧种类识别准确率。

传统YOLOv3算法的边框坐标回归使用的损失函数为均方误差函数(MSE),均方误差函数的缺点在于将蚕茧种类预测框的中心点坐标、宽度以及高度都作为单独变量处理,但实际上它们之间存在着联系,采用此函数会增大边框回归坐标的不稳定性。因此,本文引入GIoU函数来替代均方误差函数,GIoU函数作为IoU的优化函数,其作用在于精准计算蚕茧种类预测框与蚕茧种类真实框之间的重合程度,LGIoU损失函数具体公式如下推导:

(9)

(10)

LGIoU=1-GIoU。

(11)

其中A为蚕茧种类真实框,B为蚕茧种类预测框,C为包含A、B在内的最小矩形框。由式(4)可知LGIoU损失函数对于A与B之间不重叠部分也纳入了注意力范围,因此选用LGIoU损失函数作为坐标损失函数,能使蚕茧种类预测框坐标更为准确。

图5 改进后的网络结构Figure 5 Improved network structure

当识别对象为上车茧、黄斑茧以及烂茧等表面特征区分度较低的物体时,标准损失函数对整体蚕茧种类识别算法的分类效果不尽人意,因此本文提出强化分类权重参数的思想,提高蚕茧识别的分类损失在标准损失函数中的总占比,重新设计的损失函数公式如下:

(12)

2 训练与实验

2.1 实验环境与参数设计

将CD-YOLO与YOLOv3置于Te-nsorFlow框架中,主机配置为Intel Core i7-9700KFCPU,32 GB RAM,GPU为GTX1080Ti,11 GB;操作系统为Windows 10,以python为交互语言,使用CUDA10.0和C-udnn7.4.1进行加速运算。

将经过预处理的数据集输入CD-YOLO与YOLOv3算法的网络中进行训练,训练次数为10 000,每迭代100次保存一次权重,动量为0.9,初始学习率为0.001,衰减系数为0.000 5,批量大小为64。

2.2 评价指标

为了评价蚕茧种类识别网络质量,采用准确率P、召回率R、均值平均准确率MAP以及F1分数作为评价指标,实时性检测速度采用每秒传输帧数(FPS)作为评价指标[15]。计算公式如下:

P=TP/(TP+FP),

(13)

R=TP/(TP+FN),

(14)

F1=2PR/(P+R),

(15)

(16)

其中Tp为预测时正确判断的个数,Fp为错误判断个数,FN为漏检个数,C为蚕茧种类数,K为种类序号,J为P-R曲线与坐标轴的面积函数。图6为CD-YOLO和YOLOv3算法的损失曲线。

图6 CD-YOLO与YOLOv3损失曲线Figure 6 CD-YOLO and YOLOv3 loss curve

据损失变化曲线,可以直观看出损失函数的变化趋势。由图6可知,当迭代次数到达7 000次左右时,整体损失值变化趋于稳定;当迭代到8 000次左右时,损失值在低值震荡,即达到实验理想效果。

2.3 实验测试与分析

通过提取蚕茧种类数据集中不同种类分布、不同数量分布的蚕茧图像,对CD-Y-OLO蚕茧识别算法进行改进效果测试。通过构造四种蚕茧种类识别算法进行性能测试:传统YOLOv3算法(方法1)、基于C-means聚类的YOLOv3算法(方法2)、基于C-means聚类与调整损失函数的YOLOv-3算法(方法3)以及上述提出的CD-YOLO蚕茧种类识别算法(方法4)。评判指标主要采用MAP、F1分数与FPS,测试结果如表1。

表1 改进效果测试表

视觉检测效果如图7。可以从图中看出,CD-YOLO算法与YOLOv3算法相比,具有更低的漏检率以及较高的预测框定位精度。

据表1中数据可得,C-means聚类方法将蚕茧种类识别的均值平均准确度提高了9.4%,且加快了识别速度。通过比较方法3与方法2之间的F1分数与MAP,可以得出重设损失函数能有效提高整体蚕茧种类的识别准确度。

本文提出的CD-YOLO蚕茧种类识别算法在C-means聚类和重设损失函数的基础上,进一步改进网络结构,根据测试结果显示CD-YOLO的F1和MAP值分别达到了92.3%和92.5%,虽相较于方法3虽略有下降,但识别速度有极大提升。针对选茧工序的快速识别需求,CD-YOLO算法可基本满足选茧设备智能化辨别的技术要求。

图7 视觉检测效果Figure 7 Visual inspection effect

为进一步验证本文算法的有效性,对比CD-YOLO、YOLOv4[16]以及EfficientDet-D4[17]3种算法在蚕茧种类识别上的检测效果,并用F1、MAP以及FPS三项指标进行算法性能的评估,由于本文实验所用硬件设施限制,无法使用EfficientDet系列算法种最优模型D7,所以只采用了EfficientDet-D4进行对比试验。测试结果如表2所示。

表2 算法性能对比表

通过上述实验表明,本文针对黄斑茧、烂茧以及上车茧识别提出的CD-YOLO算法在平均检测精度方面比YOLOv4以及EfficicentDet-D4分别高出了3.1与4.2个百分点。在F1综合指标评价方面,分别提高了3.4与5.2个百分点。同时在检测速度上,CD-YOLO比YOLOv4快25%,比EfficicentDet-D4快58.3%。上述数据表明CD-YOLO算法在蚕茧种类检测方面具有更为优秀的性能。

3 结 论

为解决选茧工序中快速、准确识别蚕茧种类的技术难题,本文提出了一种蚕茧种类识别算法(CD-YOLO)。以黄斑茧、烂茧及上车茧为研究对象,使用C-means方法对蚕茧数据集聚类,从而得到适合蚕茧的先验框,为蚕茧检测定位提供了技术支撑;通过合并BN层与conv层参数以及删除部分特征图,减少整体运算量,加快了整体预测速度;通过调整损失函数中分类比例与替换定位损失函数,提高蚕茧分类准确率。对比改进前后的算法进行对比实验,验证了改进行为的正确性,以平均识别准确率与帧率等为评价指标对CD-YOLO、YOLOv4与EfficientDet-D4进行对比实验,从实验结果可得,CD-YOLO算法具有较高的准确性和实时性,平均准确率和F1分数分别达到了92.5%和92.3%,检测速度达到了20帧/s,可以基本满足蚕茧种类快速识别的需求。

猜你喜欢
蚕茧先验种类
咬破死亡的蚕茧
蚕茧与飞蝶
提高鸣龙镇蚕茧质量的措施探讨
重视蚕病综合防治 提高蚕茧质量
基于无噪图像块先验的MRI低秩分解去噪算法研究
种类丰富的酒具
消防车种类知多少
镜头像差的种类
基于自适应块组割先验的噪声图像超分辨率重建
消防车有哪些种类