基于改进ResNet-50残差网络的纤维分类方法
2022-08-27林博生殷明骏杨志军
黄 烜, 孙 晗, 林博生, 殷明骏, 杨志军
(1.广东工业大学 省部共建精密电子制造技术与装备国家重点实验室, 广东 广州 510006;2.佛山市华道超精科技有限公司, 广东 佛山 528225)
0 引 言
自2011年起,中国纤维加工产品的产量就已经超过了世界总产量的50%。如今,中国是全球最大的纺织品生产和出口国,是纺织产业链最完备,出口产品种类最多的国家,是世界纺织服装产业保持稳定运转的支撑力量[1]。在天然纤维服装产品生产过程中,部分厂商存在以次充好的现象,而普通消费者肉眼难以区分面料材质,需要借助专业的检测机构进行检测。
目前,纤维成分的检测有多种方法。杨桂芬等分别使用扫描电子显微镜和光学显微镜对山羊绒纤维和绵羊毛纤维进行鉴别,给出了2种样本在显微镜下的外观形态,并以此区分2类样本[2]。李好磊等使用聚合酶链式反应-限制性片段长度多态技术(PCR-RFLP)进行羊绒和羊毛的分类实验。结果表明,羊绒和羊毛的DNA存在约2%的差异,可以据此准确判断样本的种类[3]。赵国樑等使用近红外光谱技术进行羊绒和羊毛的分类实验。通过采集各种纤维的红外光谱并建立矫正模型,能够对纤维成分进行可靠的定性、定量分析[4]。近年来,深度学习发展迅速,诸如AlexNet[5]、VGGNet[6]、GoogLeNet[7]、ResNet[8]等网络模型大量运用于图像分类领域,如字符识别[9]、纤维分类等。朱耀麟等提出改进的B-CNN模型对羊绒羊毛纤维进行分类,准确率达到98.06%[10]。杨文柱等使用3种不同的多类支撑向量机模型(MSVM)对棉花异性纤维进行分类,最高正确率达到93.5%[11]。王雯等对扫描电子显微镜下拍摄的纤维图像样本,利用Mask R-CNN模型进行训练得到纤维分割模型。使用该模型预测纤维,预测正确率最高达到86%[12]。侍瑞峰等分别使用贝叶斯分类器、BP神经网络、SVM支持向量机对羊毛和羊绒进行分类,准确率依次为88.7%、84.8%和92.7%,并认为SVM分类器在准确率和耗时上更具优势[13]。杜玉红等使用改进的ResNet提取异性纤维图像的特征,并基于k-means++算法对候选框尺寸和数量进行改进。实现了小尺寸、大长宽比和密集分布等情况下异性纤维的自动化识别和定位,在验证集上的准确率达到94.24%[14]。巫明秀等构建改进的MobileNets-YOLOv3模型,对棉纤维中的异性纤维图片进行实时检测,平均准确率达到了84.8%[15]。
综上所述,目前常见的纤维成分检测研究主要集中于羊毛和羊绒的鉴别以及在棉花异性纤维的检测,缺乏对其他毛发种类的鉴别研究,特别是微观结构相似的样本。因此,本文训练集样本使用4种在微观结构上极为相似,非专业人员难以鉴别的栗鼠、水貂、紫貂、獭兔的毛发纤维显微图片,以TensorFlow和Keras为框架[16-17]训练添加数据增强策略[18]以扩充样本量。通过改进结构后的ResNet-50神经网络分类器结合迁移学习[19]方法,调整优化网络参数,利用SoftMax函数[20]输出预测的类别概率。
1 改进的ResNet-50模型框架
1.1 恒等残差块和卷积残差块
如图1所示,恒等残差块(ID Block)左侧为2或3个权重层的叠加,右侧为捷径通道(short cut)。卷积残差块(CONV Block)结构与之类似,区别在于其捷径上也有一个权重层。
卷积计算过程为
(1)
式中:xl,m为输入矩阵;wl,m为卷积核参数;l和m为输入矩阵和卷积核的宽高;b为偏置向量;yc为该次卷积的输出;*为卷积运算符号。本文在网络初期采用7×7卷积,尽可能保留原始图像的信息;在残差块内使用1×1卷积用于数据的升维和降维,使用3×3卷积用于提取特征。另外,以非线性函数ReLU[21]作为网络的激活函数。
1.2全连接层FC
在ResNet-50中,待所有卷积运算完成后,将输出的大量特征张量展平成一维向量作为全连接层的输入,由全连接层进行分类并使用SoftMax函数进行归一化,最终输出分类概率。
全连接层的计算过程为
(2)
1.3 Adam优化
网络计算出损失值后,通过反向传播算法和Adam优化算法迭代各个卷积层和全连接层的权值。Adam是自适应梯度优化(AdaGrad)和均方根传播优化(RMSProp)2种算法优点的结合[22]。随着训练的进行,Adam能够为网络中每个权值都匹配一个学习率;同时,基于梯度一阶矩均值和梯度二阶矩均值,为每个权值计算更合适的学习率。
1.4 Dropout随机失活层
Dropout是指深度网络在训练过程中,对于神经网络单元按照一定的概率暂时从网络中随机失活。随机失活层与网络前后结构的组合使得网络具有一定的稀疏性,从而有效地减少神经元之间复杂的共适应性,提升了网络的精度和鲁棒性。Dropout层的计算过程为
rl~B(p)
(3)
式中:B(·)表示伯努利函数;p表示失活概率;rl表示在第l层神经元之前使用伯努利函数以概率p生成的一组由0、1随机数组成的向量。
(4)
1.5评价指标
针对本文的实际任务需求,使用混淆矩阵(confusion matrix)[23]评估模型的分类性能,同时评估模型对于每一类纤维的查准率(P)、查全率(R)及F1分数(F1)[24]。
(5)
(6)
(7)
式中:PT为真正类数量;PF为假正类数量;NF为真负类数量。F1分数是查准率和查全率的加权调和平均值,能够综合反映模型的分类性能。
1.6 模型结构
综上所述,对ResNet-50模型进行调整优化后的结构如图2所示。
图 2 结构改进的ResNet网络模型Fig.2 Structure ResNet-improved network
2 实验与结果分析
2.1 实验准备
使用华道超精科技有限公司的光学显微平台拍摄纤维显微图像。平台的X、Y、Z轴分辨率均达到0.1 μm,搭载600万像素工业相机、奥林巴斯CXPL40X平场消色差物镜(孔径0.65,放大倍数40倍)、阿贝聚光镜等器件组成光学成像系统。用于模型训练和评估的计算机CPU为Intel i7-10700F,内存32 GiB;GPU为NVIDIA GeForce RTX 3080,显存10 GiB。编程语言为Python,代码运行环境为PyCharm。
2.2 数据集准备和图像预处理
使用上述光学显微平台设备拍摄纤维。图像放大倍数为40倍,曝光时间6 ms,曝光增益为500%,输出大小为1 536×1 024×3的RGB图片。共采集4 016张栗鼠、水貂、紫貂、獭兔的毛发纤维图片作为数据集。每种纤维图片约为1 000张,在数量上保证了样本的均衡性。随机选取其中每种纤维图片的60%作为训练集,20%作为验证集,20%作为测试集。训练集的4种样本示例如图3所示。
(a) 栗鼠毛 (b) 水貂毛
(c) 獭兔毛 (d) 紫貂毛图 3 4种纤维样本的显微图像Fig.3 Microscopic images of four sample fibers
对数据集进行的预处理包括图片缩放、归一化像素值和添加数据增强等策略:图片尺寸由1 536×1 024×3缩放为224×224×3;同时把像素值从0~255归一化,方便输入网络进行运算;数据增强可以增加数据集的样本数量,提升模型的泛化能力和鲁棒性。本文采用的数据增强策略包括随机平移图片、随机剪切拉伸以及随机水平翻转,并设定每种策略的发生概率为10%。数据增强示例如图4所示。
(a)原图像 (b)平移
(c)剪切拉伸 (d)水平翻转图 4 数据增强示例Fig.4 Data augmentation examples
2.3 基础模型验证
以TensorFlow和Keras为框架搭建神经网络,利用GPU加速提高网络训练效率。使用ResNet-50基础模型和VGG-16基础模型,不改变网络结构进行训练并计算其在测试集的平均查准率、平均查全率和平均F1分数,结果如表1所示。
表1 基础模型验证结果
表1中,因ResNet-50本身的网络层数更深,理论上可以比VGG-16网络学习到更多的特征参数,故ResNet-50网络有相对更好的查准率。但是,表1中2种基础模型的F1分数只E 92%左右,预测的图片样本分类中误检漏检的概率较大,泛化能力差,不能满足纤维检测的要求(市场上要求>98.5%),需要进一步优化。因此选用ResNet-50网络基础模型结合Dropout层进一步调整优化。
2.4 Dropout和结构改进测试
参照调试经验,设置新增的神经网络FC层节点单元个数(De)为(0,64,128,256,512,1 024),Dropout层失活概率p设置为(0,0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9)。当FC层与失活率都为0时,则为一般的深度学习网络结构,即本文的基础模型;当FC层神经元的个数设置为0时,即为不设置额外的FC层的结构;当 Dropout层的概率设置为0时,即为不对网络输出层的前一层单元执行随机失活。通过上述参数设置,经实验,结果较佳的前6个超参数设置组合如表2所示。从表2可以看出,不同参数对网络整体表现存在明显影响。最终选择的De参数为256,Dropout失活概率p=0.5。
表2 结构改进对比Tab.2 Structure improvement comparison
2.5 训练结果
使用优化后的ResNet-50模型,加载基于ImageNet预训练的ResNet-50模型权重,添加数据增强策略,设定训练轮次epochs为25,批量大小batch size为16,损失函数为交叉熵损失,优化算法为Adam,初始学习率为10-4。训练该模型后得到训练集-验证集精度曲线以及损失曲线,如图5所示。图5中蓝色曲线代表训练集曲线,橙色曲线代表验证集曲线,横轴代表训练轮次。
(a) 精度曲线
(b) 损失曲线图 5 优化后ResNet-50精度曲线和损失曲线Fig.5 ResNet-50 accuracy curve and loss curve after optimization
从图5可以看出,优化后的ResNet迁移学习策略适用性更好,训练集在第1个轮次就能够达到92%的精度,损失值为0.25。到第10个训练轮次时精度达到99.5%,收敛速度快。经过25个训练轮次,模型得到有效收敛。最终训练集的精度为99.95%,损失值为0.003 3;验证集的精度为99.63%,损失值为0.007 0。
2.6 混淆矩阵评估
加载已训练完成的ResNet-50网络权重,对测试集中804张样本进行预测并与其真实标签对比,得到改进后的ResNet-50模型在测试集上进行预测的混淆矩阵,如图6所示。
图 6 优化后ResNet-50预测混淆矩阵Fig.6 ResNet-50 confusion matrix
矩阵的横轴代表分类器对测试图片的预测标签,纵轴代表图片的真实标签。从图6可以看出,改进后的ResNet-50模型对804张样本可以实现正确分类。其中,水貂毛和紫貂毛识别查准率100%,栗鼠毛和獭兔毛的查全率为100%,整体的平均分类准确率为98.88%。计算测试集中4个类别共804张样本图片下的查准率、查全率和F1分数,结果见表3。
表3 改进ResNet-50在测试集上的查准率(P)、 查全率(R)、F1分数汇总Tab.3 Summary of P, R and F1 of ResNet-50on the test set 单位:%
从表3可以看出,改进模型在测试集上的性能表现较为优秀,各指标比ResNet-50基础网络模型的结果(表1)均有显著提高,查准率超过98.5%,查全率提高8.15%,F1综合评估分数提高了6.77%。可见,基于ResNet-50改进的深度学习神经网络的纤维分类方法能有效分类结构相近的不同种类的动物毛发纤维。
3 结 语
本文给出了一种针对4种显微结构上高度相似的动物毛发纤维识别方法。使用ResNet-50网络进行多组超参数实验,找到最优的Dropout层和FC层超参数,对网络结构进行改进。再通过图像增强和数据增强方式解决了背景干扰强、样本数量较少的问题。结果表明:改进后的ResNet-50网络精度得到明显提高,对4种动物毛发纤维的平均分类准确率达到98.88%,F1分数为98.98%。但混淆矩阵评估中,栗鼠毛和獭兔毛测试存在一定的误检率,后续工作还存在一定的提升空间。