基于注意力机制的水果损伤检测及分类
2023-07-14张杰夏春蕾张荣福哈利扎提·居来提刘怡
张杰 夏春蕾 张荣福 哈利扎提·居来提 刘怡
关键词:深度学习;水果损伤检测;ResNet;注意力机制
中图分类号:TP 183 文献标志码:A
引言
在众多的食物中,水果是人类日常健康饮食的重要组成部分,因为水果富含的维生素等营养元素能帮助预防疾病。然而,很多水果的保质期较短。由于储存不当或者运输过程中的碰撞等原因造成的损伤,使得水果品质下降甚至变得腐烂而不宜食用。因此,食品行业在出售水果之前需要对其进行严格的检测。传统的人工检测方案不仅成本高、效率低,还存在一致性和准确性较差等问题。随着生活水平的提高,水果的消费量逐年增长,而不同市场消费者对水果品质、种类等方面的需求呈现出多样化特点,水果的自动化品质检测和分类也就成为必须要解决的问题。近年来,随着深度学习和计算机视觉技术的不断发展,机器学习及卷积神经网络在分类和检测领域的应用研究也越来越多。探索基于深度学习技术的水果损伤检测和分类方法成为了研究热点[1]。
近几年,研究人员在腐坏水果的检测方面进行了很多研究。Karakaya 等[2] 研究了多种特征提取技术在水果新鲜度分类上的性能表现。他们在对水果进行特征提取后,采用支持向量机(support vector machine, SVM)分类技术进行实验。在对 1 個共有1 200 张图片,包含橘子、香蕉和苹果等 3 类水果在内的数据集进行测试后,证明卷积神经网络搭配SVM 分类器呈现出最好的性能,分类准确率达到97.61%。Wajid 等[3] 提出了 1 种快速判别柑橘状态的方法。他们通过对比分析包括贝叶斯、人工神经网络和决策树的适用性和性能,发现决策树分类技术对橙色条件的分类效率高于其他方法。该方法的准确度、精确度和灵敏度分别为93.13%,93.45%和93.24%。Singh 等[4]运用小波变换、定向梯度直方图、灰度共生矩阵等方法提取苹果的纹理特征,然后用SVM、k-NN、逻辑回归、线性判别等多种分类器对新鲜苹果和腐烂苹果进行对比实验,结果发现,SVM 分类器的性能为98.8%,优于其他分类器。Chakraborty 等[5]使用卷积神经网络提取水果图像的特征,并使用Max pooling、Averagepooling 和MobileNetV2架构对图像进行分类。在Kaggle 数据集上的性能测试结果显示:MobileNetV2 在训练集和验证集中的准确率分别达到了99.46% 和99.61%;Max pooling 的训练集准确率达到94.49%, 验证集准确率达到94.97%; Average pooling 的训练集准确率为93.06%,验证集准确率为93.72%。结果表明,该研究所提出的卷积神经网络模型能够区分新鲜水果和腐烂水果。
上述方法主要是一些主流的分类网络在水果数据集上的直接应用,研究者对网络本身并无太多的改进[6]。结合以上论文的研究成果,通过与经典的分类网络对比,本文选择ResNet 模型作为分类模型,并在此基础上尝试加入两个不同的注意力机制进行改进,从而将水果分类所依据的特征信息予以进一步优化,获取有利于水果分类的重要特征;通过可视化算法Grad-CAM[7] 将模型提取的效果进行展示,最终获得更高的分类准确率;利用自制的新数据集达到图像增强效果,提升了网络的泛化性能,对复杂的水果图像也有不错的识别效果。
1 模型构架
1.1 ResNet网络模型
ResNet[8] 残差网络在2015 年同时斩获ImageNet 竞赛中分类任务第一名和目标检测第一名[9]。这个网络最初由微软工作室提出,其亮点是:解决了网络层数不断加深而导致的梯度爆炸或者梯度消失问题;拥有超深的网络结构,不影响其性能;提出了Residul 模块,解决了网络退化问题;使用了Batch Normalization加速训练等。该网络被广泛使用,在图像分割和目标检测方向也取得了很好的效果。ResNet34的结构如图1 所示。
为了克服神经网络层次越深越难训练而导致的网络退化问题,ResNet 模型引入了残差模块,很好地解决了这一问题[10]。残差模块如图2 所示,对于 1 个堆叠层结构,当输入为x时,其学习到的特征记为H(x) ,残差F (x) = H(x)-x。残差学习相比原始特征直接学习更加容易。当残差为0时,堆积层仅仅做了恒等映射,网络性能不会下降。实际上残差不会为 0,这也使得堆积层在输入特征基础上学习到新的特征,从而拥有更好的性能。
1.2 SE模块
SENet[11] 是Squeeze-and-Excitation Networks的简称,该网络获得了ILSVRC2017 分类比赛的冠军。SE 模块由Squeeze 和Excitation 两部分组成,如图3 所示。Squeeze 表示顺着空间维度进行特征压缩,将每个二维的特征通道变成 1 个实数。这个实数某种程度上具有全局的感受野。输出的维度和输入的特征通道数相匹配[12]。
1.3 CBAM模块
卷积注意力模块[13]( convolutional blockattention module,CBAM)是 1 种轻量通用注意力模块,如图4 所示,能同时在空间和通道上进行特征的注意力机制,所以该模块由两部分组成,通道注意力模块和空间注意力模块[14]。
1.4 模型结构
为了进一步提升ResNet34 模型的分类效果,使网络更加注意到新鲜水果与缺陷水果的特征,加强图像有效特征信息,从而提高模型的鲁棒性,本文提出了将SE 模块和CBAM 模块嵌入到ResNet 网络中。由于该实验的数据集样本偏少,数据特征相对简单,因此在模型训练过程中容易产生过拟合的现象,从而导致模型泛化性能变差。所以将SE 模块嵌入到ResNet 网络的每 一 层Residual Block 中,网络的每 一个ResidualBlock 都将提升网络对图像重要区域的捕捉。一共引入了 16 层的Residual Block,如图5 所示。将CBAM 模块嵌入到第 1 层Residual Block之前与最后 1 层Residual Block 之后,相当于将该模块添加到整个模型的开头和结尾,一共2 次。其原因是CBAM 更善于捕捉图像的位置信息。先确定好想要捕捉的方位,这将更有针对性地对图像的具体细节进行特征提取,结构如图6 所示。两种不同注意力机制可以相互作用。其中,SE 模块可以在不引入新的空间维度情况下显示构建特征通道之间的依赖关系,通过在图像的每个通道施加 1 个权重,加大水果图像对通道信息的差异。而CBAM 模块可使得模型对空间信息更加敏感,抑制无效特征层的影响,提升模型的准确率[15]。
2 实验及结果分析
2.1 实验平台
本实验在Google Colabs 平台上进行,GPU型号为Tesla K80,显存为11 441 MiB,Python 版本为3.7.12,深度学习框架为Pytorch,版本为1.10.0。
2.2 数据集
本文使用的数据集是Kaggle 网站上的fruitfresh and rotten for classification 公开数据集。数据集大小为1.95 GB,分为训练集和测试集,每个集里又分为6 类,分别是新鲜苹果、新鲜香蕉、新鲜橙子、腐烂苹果、腐烂香蕉和腐烂橙子(如图7 所示),图片数量一共有13 600 多张。
2.3 模型训练与参数调整
224 224 3在模型训练过程中, 将图像缩放至作为网络输入尺寸,由于数据集本身已经进行了加入椒盐噪声、旋转角度等数据增强处理,所以仅需要将数据集转化为张量并进行归一化。为了实验数据的准确性,实验中所有模型的超参数设置都保持一致,训练时批量大小设置为16,训练迭代次数为10 次,采用Adam 梯度下降法来更新参数和优化模型,其学习率设置为0.000 1。
图8 给出了本文改进后模型的训练过程可视化展示,该可视化使用了Grad-CAM 方法。在该模型过程的可视化分析中,选取新鲜苹果和腐烂苹果图片各 1 张,图中列出的layer 1—layer 4分别对应模型中Block( 64) 、Block( 128) 、Block(256)、Block(512)。由图像效果可知,训练模型所学习到的特征随着层数的增加而逐渐显著,最终完成的模型也因此更容易捕捉到图像的关键信息。
2.4 模型评估指标
为了评价模型的性能, 采用了准确率( accuracy) 、精确率( precision) 、召回率(recall)、特异度(specificity)作为评价指标[16]。其中,准确率A 为模型正确分类样本数占总样本数比例,公式为
2.5 结果与分析
先将VGG16[17]、GoogLeNet[18]、ResNet34、MobileNetV2[19] 模型在该数据集进行实验,结果如图9、图10 所示。ResNet34 网络训练的准确率和损失值都优于其他网络,其准确率为97.9%,故将ResNet34作为主干网络。
然后分别测试了ResNet34、ResNet34+SE、ResNet34+CBAM 和ResNet34+SE+CBAM 网络的实验准确率,并进行对比。结果显示,改进后的ResNet34+SE+CBAM 网络准确率最高, 为98.8%,比ResNet34 提高了0.9%,比ResNet34+SE 提高了0.1%, 比ResNet34+CBAM 提高了0.5%。在精确率上,ResNet34+SE+CBAM网络比ResNet34 提高了0.9%,比ResNet34+SE提高了0.1%, 比ResNet34+ CBAM 提高了0.4%。在召回率上, ResNet34+SE+CBAM网络比ResNet34 提高了1.1%,比ResNet34+SE 提高了0.2%,比ResNet34+ CBAM 提高了0.6%。结果证明,改进后模型性能最佳,具体结果见表1。
表2 为改进后的模型ResNet34+SE+CBAM在测试集中各品种预测精确率、召回率、特异度结果。该网络每类品种的特异度均超过99.5%,说明模型的误分类率很小,但在腐烂苹果这个品类上精确率和召回率最低,说明模型的性能还有提升的空间。
表3 为改进后的模型ResNet34+SE+CBAM与文献 [5] 的实验结果数据对比。该文献采用MobileNetV2 模型进行实验,且使用与本文相同的数据集。通过对比可知,改进后模型的大部分实验数据都优于文献 [5] 报道的实验结果,说明改进后模型的识别效果显著提升。
由于公开的水果数据集中新鲜与腐烂水果的图片差异较大,特征区分较容易等原因,上述各网络在分类性能测试中精确率都很高[20]。但实际在做水果分类时,一些损坏不那么明显的水果也经常需要予以剔除,如图11(d)—(f)所示:分别为虫蛀、缺水縮皱、挤压伤等。对于这类损伤,现有的数据集中相关样本较少,从而使得训练后模型难以分辨现实水果的腐坏程度,可能出现分类错误。为了测试各模型对这类水果损伤的分类效果,新拍摄了334 张苹果图片作为补充数据,其中296 张为腐烂苹果,38 张为新鲜苹果,图11为拍摄样例,借此讨论新增数据对网络模型识别效果的提升作用。
由于新增的水果数据集数量较少,为了讨论新数据集加入后对实验结果的影响,在原数据集保持不变的基础上,将新数据集加入到验证集作为结果测试使用,而训练集保持不变。实验结果表明,经过训练之后,各个网络模型在验证集中测得的准确率均有所下降,特别是在苹果这个类别中的各项指标均有明显地下降,但改进后的ResNet34+SE+CBAM 网络分类效果依然优于未改进前网络。表4、表5 分别展示了新数据加入验证集前后的各网络效果对比。
表4 为原始数据集中的10 次迭代测试结果,因为原始数据集中腐烂水果图片损坏程度都比较严重,所以分类效果好。表5 则加入了一些损坏不严重的样本,可以看到网络模型的相关测试数据均有所下降,但改进后模型的分类效果仍有优势。
表6 为训练集中加入新数据后,网络改进前后的实验结果分析。经过10 次训练迭代后,从各个网络在苹果类别的各项指标中可以看出,加入新数据后,ResNet34+SE+CBAM网络的性能仍优于ResNet34 网络,损失值降低0.052,准确率提高1.5%,同样优于加入单个注意力机制模块的网络性能。说明在新增数据集后,注意力机制模块仍有助于提升网络的识别能力。
将新的苹果数据加入训练集,经过损坏程度较低、不易区分的水果数据训练后,各模型在苹果类别的指标都有所提升,包括新鲜苹果和腐烂苹果两个类别,如图12、图13 所示。结果对比显示,注意力机制模块加入原网络是有效的,改进后的ResNet34+SE+CBAM 模型效果更佳。
训练集数据扩增之后,在新鲜苹果和腐蚀苹果这两个类别的对比实验中, ResNet34+SE+CBAM 网络分别比ResNet34 网络的精确率提高了1.2% 和2.0%, 比ResNet34+SE 网络提高1.2% 和0.4%, 比ResNet34+CBAM 网络提高1.5% 和0.8%;在召回率上,比ResNet34提高2.1% 和2.4%,比ResNet34+SE 提高了0.1% 和1.4%,比ResNet34+CBAM 提高0.1% 和1.9%。结果证明,在数据增强后,双注意力机制模块的加入使改进后的模型表现出较好的实验效果。
3 结论
本文将ResNet34 网络应用于缺陷水果分类数据集中, 并将其与VGG16、GoogLeNet、MobileNetV2 网络作对比。实验结果表明,ResNet34 网络在准确率较高的情况下,损失下降得最快,效果最好。为了优化模型,使其能在相同的迭代次数下达到较好的效果,在网络中加入了注意力机制SE 和CBAM,增强了模型特征提取过程中关注显著信息的能力,同时抑制无关的特征信息。实验对比发现:改进后的模型相比之前准确率提高了0.9%,而且比分别单独加入一个注意力机制模块的效果更好,准确率分别提高了0.1% 和0.5%;在加入新的苹果数据集之后,改进后网络在新鲜苹果类别的精确率提高了1.2%, 在腐蚀水果类别的精确率提高了2.0%。在未来的工作中,将进一步研究更加细化的水果品质分类,用更优的分类网络来帮助实现更高的实验目标。