摘要:朱海鹏, 张玉安, 李欢欢, 王建文, 杨英魁, 宋仁德. 基于改进残差网络模型的不同部位牦牛肉分类识别方法[J]. 智慧农业(中英文), 2023, 5(2): 115-125. doi:10.12133/j.smartag.SA202303011
本文引用格式:
朱海鹏, 张玉安, 李欢欢, 王建文, 杨英魁, 宋仁德. 基于改进残差网络模型的不同部位牦牛肉分类识别方法[J]. 智慧农业(中英文), 2023, 5(2): 115-125. doi:10.12133/j.smartag.SA202303011
ZHU Haipeng, ZHANG Yu'an, LI Huanhuan, WANG Jianwen, YANG Yingkui, SONG Rende. Classification and Recognition Method for yak Meat Parts Based on Improved Residual Network Model[J]. Smart Agriculture, 2023, 5(2): 115-125. doi:10.12133/j.smartag.SA202303011
官网全文在线阅读
基于改进残差网络模型的不同部位牦牛肉分类识别的方法
1 引 言
牦牛肉素有“牛肉之冠”的美称,是市场上稀少的高级肉类,不同部位牦牛肉蛋白质、脂肪酸等营养成分含量差异显著。2022年,中国屠宰牦牛约380万头,胴体产量约48.6万吨,牦牛肉产值约467亿元。牦牛肉贸易市场较大,但依赖人工进行牦牛肉部位分类成本高、效率低。目前,西藏当雄县、甘肃甘南州等地都已经在推动牦牛屠宰机械化,其中甘南州玛曲县建设了全封闭屠宰加工流水线,中国牦牛屠宰已经越来越机械化、规模化。2023年,着力推进牛肉及其产品分区、分型、分类将是加工业和技术研发的主要方向。因此,探寻一种准确、快速的牦牛肉部位识别方法不仅能提高牦牛肉产业的质量和安全水平,提高牦牛肉贸易效率,降低成本,还能为牦牛肉产业向智能化方向发展提供技术支撑。
目前,应用于牛肉、猪肉、羊肉等肉类检测的主要技术有激光诱导击穿光谱(Laser-Induced Breakdown Spectroscopy,LIBS)技术、多光谱技术、红外/近红外技术等。这些检测技术能够达到较高的准确率,但是由于其实验成本昂贵、实验条件苛刻等特点难以将其推广使用,大多运用于实验室研究。图像识别具有成本低、可移植性高、操作便利等特点,得到了广大研究者的关注。但是,将图像识别应用于不同部位牦牛肉的鉴别方法以及相关研究相对较少。
深度学习作为机器学习中的热门领域,具有学习能力强、可迁移性高、并行化处理等特点,近年来发展飞速,各种网络层出不穷,网络深度越来越深,网络参数越来越大,网络结构越来越复杂。目前深度学习方法在农业领域已经广泛地应用于农作物病毒虫害检测、生物量识别、动植物表型监测等研究领域。随着智能手机领域技术的飞速发展,基于移动端的牛羊肉制品检测研究逐渐增多。运用手机进行图像采集并检测具有成本低、操作便利、适用范围更大等特点。但是对模型有复杂度低、参数量小的要求。
为避免牦牛肉生产和销售过程中出现不同部位混淆、以次充好等情况,开展牦牛肉部位识别研究,有助于提高牦牛肉行业的透明度和可追溯性,保障食品安全。本研究首先通过将卷积块注意力模块(Convolutional Block Attention Module,CBAM)融入残差网络模型,以提高模型的准确性和性能,然后通过采取不同的优化结构、不同的学习率、权重衰减系数和优化器比较其对网络效率的影响。将改进后的残差网络模型部署到移动端。通过开发分类识别手机App,利用智能手机采集牦牛肉样品图像并实现牦牛里脊、牦牛上脑、牦牛腱子、牦牛胸肉的实时识别,具有高便捷性以及普及性。
2 材料与方法
2.1 数据获取
实验所需的牦牛肉实验材料全部来自于青海省西宁市牛羊肉批发市场,于2023年1月开始每天到牦牛肉摊位拍摄由工人师傅分割的牦牛里脊、牦牛上脑、牦牛腱子、牦牛胸肉样本,共拍摄14天,包括晴天、阴天、雨天等不同天气。拍摄设备为手机,成像距离为30~80 cm,图像分辨率像素为3024 × 4032,图像格式为*.jpg。共采集原始图像2000张,考虑到本研究模型的实际使用环境,选择在顺光、逆光、不同背景,以及每天中的不同时间进行图像采集如图1所示。为降低相似图片对网络模型训练的影响,使用人工方式对所采集到的原始图像进行筛选,筛选后得到牦牛肉部位原始图像1960张。
图1 使用手机端采集的不同部位牦牛肉图像
Fig. 1 Yak meat images from different parts collected using mobile phones
2.2 数据预处理
在本研究中,考虑到自建的牦牛肉样本数据集数量较少,为提高网络的泛化能力与分类识别性能,采用数据增强的方式扩充原数据集。扩充方式为对原图像进行水平翻转、垂直翻转、对比度调整、饱和度调整、灰度调整、随机方向旋转30°、随机方向旋转120°、随机方向旋转300°等,如图2所示。通过8种方式对原数据集扩充后的图像数量为原来的9倍,包括17,640张图像。按照4∶1的标准划分训练集与测试集,得到训练集牦牛肉样本图像14,112张以及测试集牦牛肉样本图像3528张。
图2 数据扩充后的牦牛肉图片示例
Fig. 2 Example of yak meat images after data augmentation
2.3 算法设计
2.3.1 残差网络
在深度学习中为了解决随着网络层数不断加深,训练集loss非但不随着降低,反而随着升高而出现网络退化现象。He等提出了残差网络结构。残差网络由一系列的残差块组成,残差块由普通卷积层以及残差映射组成。由于在残差结构中引入了直接映射,从而保证了第t+1层的参数一定多于第t层,避免了网络结构在特征提取的过程中出现信息丢失的现象。本研究选取ResNet18和ResNet34作为网络原型,其网络结构如表1所示。
表1 ResNet18和ResNet34网络模型结构
Table 1 Network model structure of ResNet18 and ResNet34
2.3.2 注意力机制
在本研究牦牛里脊、牦牛上脑、牦牛腱子、牦牛胸肉的分类问题中,主要是根据不同的脂肪、筋、膜来进行区别,牦牛里脊、牦牛上脑、牦牛腱子、牦牛胸肉在瘦肉部分的区别微乎其微,这就需要网络模型提取脂肪、筋、膜等有用的信息从而来提高网络模型的精度。针对此问题,本研究提出在ResNet18中融入注意力机制。
CBAM由通道注意力机制(Channel Attention Module,CAM)与空间注意力机制(Spatial Attention Module,SAM)组成,如图3所示。首先,对输入大小为W×H×C(W为图像的宽,H为图像的高,C为图像的通道数)的牦牛肉特征图进行通道注意力机制模块处理生成通道注意力特征图,之后将原输入特征图与通道注意力特征图相乘后生成新的特征图;再将新特征图进行空间注意力机制模块处理生成空间注意力特征图,新特征图与空间注意力特征图相乘,得到最后的输出特征图。通道注意力机制如图4所示,空间注意力机制如图5所示。
图3 CBAM模型结构图
Fig. 3 Model structure of convolutional block attention module
图4 通道注意力机制结构
注:Ft为传统的普通卷积结构;X为Ft的输入;O为Ft的输出;W、H、C分别为图像的宽、高、通道数;a为经过Channel Attention压缩之后的特征图;Fs为将所得权重与原特征图相乘;X'为经过Fs的最终输出;W'、H'、C'分别为普通卷积结构之前原始输入图像的宽、高、通道数。下同
Fig. 4 Structure of channel attention mechanism
图5 空间注意力机制结构
注:b为经过Spatial Attention压缩之后的特征图
Fig. 5 Structure of spatial attention mechanism
2.3.3 改进ResNet18的牦牛肉部位识别模型
首先将ResNet18、ResNet34原始模型在本研究中的数据集上进行训练,其结果如图6所示。
图6 ResNet18与ResNet34模型在测试集的准确率变化曲线
Fig. 6 The accuracy variation curves of the ResNet18 and ResNet34 models in the test set
由图6可知,本研究中的牦牛肉部位识别图像测试集在ResNet18上的准确率高于ResNet34且ResNet18的准确率变化曲线也比ResNet34稳定,所以本研究选取ResNet18模型作为主干网络进行改进。
此外,本研究将CBAM模块加入ResNet18网络中与单独将空间以及通道注意力机制加入网络中进行对比,其热力图如图7所示,由此可知,将CBAM模块加入ResNet18中对本研究有效。
图7 不同注意力机制在牦牛肉数据集上的热力图
Fig. 7 Heat maps of different attention mechanisms on the dataset of yak meat
改进后的ResNet18_CBAM网络模型结构如图8所示。本研究提出改进的ResNet18网络主要有两个改进之处。第一,在原来ResNet18网络模型的每个残差块之后都加上了CBAM模块,在网络模型中引入这一机制可以以较小的计算开销和参数量取得较大的精度提升。第二,将原模型在所有残差块之后直接加上全连接层改成了先进行全局平均池化与全局最大池化后再加上全连接层,可以提高网络模型的准确率,防止出现过拟合现象,以及减少后续网络层的连接数,加快网络模型的执行速度,减少手机端识别图像时的运算时间。
注:图中的输入为一张牦牛肉部位图片,其大小为一个224×224×3的三通道图像;Residual_CBAM表示在每一个残差块后面加入CBAM模块后形成的新的模块;BN-ReLU表示在特征图经过批量归一化之后采用ReLU激活函数进行激活;“⊗”表示两个特征图相乘;“⊕”表示两个特征图相加
图8 ResNet18_CBAM网络模型的结构示意图
Fig. 8 The structural diagram of the ResNet18_CBAM network model
2.3.4 评测指标
在本研究中采用准确率(Accuracy,%)来作为不同部位牦牛肉识别模型的评价指标,通过混淆矩阵来分析四种不同部位的牦牛肉的分类情况。准确率为分类正确的样本数与实验中样本总数的比值,其计算如公式(1)所示。
Accuracy= TP+TNTP+TN+FP+FN×100% (1)
其中,TP、FP、FN、TN分别为混淆矩阵中分类模型对不同部位牦牛肉的分类情况统计。TP为预测为真实际为真的样本个数,个;FP为预测为真实际为假的样本个数,个;FN为预测为假实际为真的样本个数,个;TN为预测为假实际为假的样本个数,个。
2.4 软件实现
为在移动端实现不同部位牦牛肉快速、准确识别,采用PyTorch深度学习框架中的PyTorch Mobile模块将训练好的ResNet18_CBAM网络模型转换成TorchScript模型,并保存为*.ptl格式。然后使用Android Studio开发环境开发牦牛肉部位识别App,包括前端界面和后端处理两部分。App前端采用*.xml进行各种按钮、文本框的布局,后端采用Java语言开发。最后,调用*.ptl格式的TorchScript模型实现牦牛肉的部位识别功能。其识别界面如图9所示。
图9 基于ResNet18_CBAM网络模型开发的App对牦牛肉部位识别展示图
Fig. 9 Display diagram for identifying yak meat parts based on the developed ResNet18_CBAM network model
3 实验及结果分析
3.1 实验环境
本研究中的网络模型是在Windows11系统下进行的,深度学习框架为基于Python3.9的Pytorch深度学习框架;CPU为AMD R9 5900HX(16 G),GPU为Nvidia GeForce RTX 3080。使用Cuda进行加速训练,实验环境为Anaconda3+PyCharm。
3.2 训练策略
为使改进后的ResNet18_CBAM网络模型达到更好的训练效果,采用以下的训练策略,如表2所示。
表2 ResNet18_CBAM模型实验训练策略
Table2 Experimental training strategy of ResNet18_CBAM model
3.2.1 优化器
在深度学习的模型训练过程中优化器的选择对模型的准确率有着重大的影响。目前,常用的优化器包括SGD(Stochastic Gradient Descent )、标准动量优化算法(Momentum)、RMSProp算法、Adam算法等。本研究选择了SGD与Adam优化器,在训练集上的准确率表现如图10所示。由图10可知,相对于SGD优化器而言,使用Adam优化器时,模型的准确率在整个过程中波动都比较大,且使用SGD优化器时模型的准确率明显高于Adam优化器,因此选择SGD优化器。
图10 基于ResNet18_CBAM模型在不同模型参数下测试集准确率变化曲线
Fig. 10 Accuracy variation curves of test set based on ResNet18_CBAM model under different model parameters
3.2.2 损失函数
选择交叉熵损失函数(Cross Entropy Loss)作为改进ResNet18_CBAM网络模型的损失函数。交叉熵作为信息论中的一个重要的概念,它在机器学习中表现为真实概率分布与预测概率分布之间的差异。在深度学习中表现为网络模型训练时梯度越大,网络模型的优化速度更快。该损失函数的表达式如公式(2)所示。
其中,Loss表示损失函数;N表示样本数,个;M表示类别数,个;pic 表示观测的第i个样本属于第c个类别的概率分布值;yic 表示真实第i个样本属于第c个类别的概率分布值,若属于类别c,则取1;若不属于类别c,则取0。
3.2.3 学习率调节
选用余弦退火算法(CosinAnnealingLR)作为网络模型ResNet18_CBAM的学习率衰减算法。
3.3 ResNet18_CBAM模型的超参数优化
3.3.1 学习率选择
在本研究所选取的优化器SGD中,当学习率设置过小时,网络模型训练的收敛速度比较慢,训练成本比较大;当学习率设置过大时,容易导致损失函数错过最优解,网络模型不收敛。为了选择合适的学习率,本研究通过采用粗调学习率与微调学习率两种方式来观察不同学习率下网络模型的损失曲线的变化情况来确定一个使ResNet18_CBAM网络模型收敛效果较好的学习率。在PyTorch深度学习框架中,SGD优化器的默认参数中,学习率的值为0.001,所以在本研究中进行学习率粗调时选取的学习率分别为0.1、0.01、0.001、0.0001和0.00001来比较网络模型的训练效果。学习率调节对网络模型训练损失的影响如图11所示。
图11 基于ResNet18_CBAM模型在不同学习率下测试集损失值变化曲线
Fig. 11 Loss value change curve of test set under different learning rate based on ResNet18_CBAM model
由图11(a)可知,当网络模型的学习率值为0.1与0.01时,训练的损失值变化平稳,但是损失值下降速度极其缓慢;当学习率值为0.001时,模型收敛速度最快,效果最好;当学习率值为0.0001时,虽然也有一定的收敛效果,但是效果远不如学习率为0.001的时候;当学习率为0.00001时,模型收敛效果最差。
由于当学习率值为0.001时模型收敛效果最好,所以以0.001为基础进行微调,设置的学习率的值分别为0.001、0.002、0.003、0.004和0.005,观察模型的训练损失值变化。由图11(b)可知,当学习率的值为0.003时,模型收敛效果最好,虽然没有以最快速度达到最低损失值,但是稳定之后模型的损失值曲线无太大波动。因此,对于本研究中的网络模型,选择学习率为0.003。
3.3.2 批大小选择
在神经网络模型的训练过程中,批大小的选择也是影响神经网络模型的一个因素,在前面确定了学习率为0.003之后,开始考虑不同批大小对网络模型性能的影响,本研究中选择的批大小分别为8、16、32、64,不同批大小对训练损失与测试集准确率的影响如图12所示。
图12 基于ResNet18_CBAM模型在不同批大小下测试集损失值和准确率变化曲线
Fig. 12 Loss value and accuracy change curves of test set based on ResNet18_CBAM model under different batch sizes
由图12(a)可知,当批大小为8、16、64时,损失值波动较大,且收敛速度较慢;当批大小为32时,损失值波动小,收敛速度快。由图12(b)可知,当批大小为32时模型收敛速度虽然不是最快,但是准确率曲线后期波动最小,且准确率最高,所以本研究选择批的大小为32。
3.4 结果分析
3.4.1 改进ResNet18_CBAM模型的消融实验
本研究提出的改进ResNet18_CBAM模型,包含两个改进,分别是:(1)将CBAM模块融入主干网络的每一个残差块后面;(2)在整个网络模型最后加上两层池化层。为了验证本研究改进模型的有效性,进行了两个改进之处的消融实验,ResNet18+池化网络模型得出的准确率为93.88%,ResNe18_CBAM网络模型得出的准确率为96.31%,且使用ResNet18+池化网络模型进行训练时所使用的平均检测时间与训练时间少于ResNet18网络模型。因为池化层可以减少特征图的大小,从而也减少了后续网络的计算量,同时保留重要的特征信息,所以在主干网络中加入两层池化层可以提高准确率以及缩短检测时间和训练时间。而由于CBAM模块能够对通道和空间信息进行自适应的加权处理,从而强化了特征图中重要通道和空间的位置,可以更好地捕捉图像中的重要特征,所以在加入池化层的基础上再融入CBAM模块能有效提高模型的准确率。
3.4.2 不同注意力机制模块对比
将本研究所采用的CBAM注意力机制模块融入ResNet18网络中与SENet、NAM以及SKNet 3种注意力机制模块融入ResNet18网络中进行对比实验,其结果如表3所示。
表3 基于不同注意力机制模块下测试集准确率的实验结果
Table 3 Test set accuracies based on different attention mechanism modules
由表3可知,使用CBAM模块融入ResNet18网络中的准确率为96.31%,SENet模块的准确率为94.12%,NAM模块的准确率为92.51%,SKNet模块的准确率为93.85%,使用CBAM模块时的准确率都高于其他3种模块。由此可知,在本研究中使用CBAM模块改进ResNet18是必要且优越的。
3.4.3 不同网络模型性能对比
迁移学习技术已广泛应用于深层网络模型的设计和参数训练,使用迁移学习可以缩减模型的训练过程,提高模型的泛化能力,减少过拟合的风险,同时也降低对数据集规模要求。因此,本研究中所有的神经网络模型均采用迁移学习的方式进行训练。采用数据集ImageNet对模型进行预训练获得各层的参数,然后将本研究中的牦牛肉部位图像数据集输入预训练模型进行训练,微调神经网络模型的最后一层。将本研究中的ResNet18_CBAM模型与AlexNet、VGG11、ResNet34、ResNet18这4种经典且参数量不过大的图像分类模型进行对比,其识别结果如表4所示。
表4 不同模型的牦牛肉部位识别结果对比
Table 4 Recognition results comparison of yak meat part using different models
从表4可知:①相比于VGG11与ResNet34模型,改进的ResNet18_CBAM模型无论是从准确率还是检测时间上更优。在模型的训练时间上,ResNet18_CBAM比VGG11、ResNet34分别少用173.96、24.16 s;在模型的平均检测时间上,比VGG11、ResNet34分别减少0.7537、0.0248 s;在模型的准确率上,比VGG11、ResNet34分别提升3.19%、2.93%。但是VGG11与ResNet34网络模型的浮点运算量都比较大,网络模型结构更为复杂,因此本研究中ResNet18_CBAM网络模型准确率均高于且平均训练时间均低于VGG11与ResNet34网络模型。②相比于浮点运算量较小的网络模型AlexNet,ResNet18_CBAM在牦牛肉部位识别的准确率上提升4.15%,有较为明显的优势。③相比于经典的ResNet18网络模型原型,ResNet18_CBAM在平均检测时间与平均训练时间上分别增加了0.0128和10.62 s,但是ResNet18_CBAM在准确率上比经典的ResNet18网络模型提高了2.88%。
本研究中各个网络模型的准确率与迭代轮数如图13所示。
图13 基于不同模型下测试集准确率的变化曲线
Fig. 13 Change curves of test set accuracy based on different models
由图13可知,VGG11网络模型在前期表现最好,明显优于其他四个模型,虽然在后期也达到了稳定,但是准确率低于ResNet18_CBAM网络模型。ResNet18与ResNet34网络模型效果相近,前后期准确率曲线波动较大,但ResNet18稍优于ResNet34网络模型;AlexNet网络模型表现效果最差,全程准确率曲线波动较大,且准确率明显低于其他三个模型。
3.4.4 ResNet18_CBAM网络模型在实际测试中的表现
为了验证本研究算法的可靠性,到西宁市牛羊肉批发市场对开发的App进行实际场景测试,其部分测试图片如图14所示。其测试结果汇总如表5所示。
图14 基于ResNet18_CBAM网络模型开发的App牦牛肉部位识别实际测试结果
Fig. 14 Actual test results of yak meat part recognition using App developed based on ResNet18_CBAM network model
表5 基于ResNet18_CBAM网络模型开发的App牦牛肉部位识别实际测试结果汇总
Table 5 Actual test results for yak meat part recognition using the App developed based on ResNet18_CBAM network model
在本次测试中测试牦牛里脊、上脑、腱子、胸肉样本分别为54、59、51、57份,计算其平均识别准确率,其中牦牛里脊达到了96.30%,牦牛上脑达到了94.92%,牦牛腱子达到了98.04%,牦牛胸肉达到了96.49%。从测试结果来看,该网络模型在实际场景测试中有着可靠的表现。
4 结 论
针对牦牛肉部位识别问题,本研究以ResNet18神经网络模型为原型,将CBAM模块融入到ResNet18网络模型每一个残差块的后面,提出了一种改进的网络模型ResNet18_CBAM。CBAM模块从通道与空间两个维度增强了注意力机制对模型的提升效果,能够在较小的开销下实现较大的性能改进。并将原ResNet18网络模型的最后一层全连接层换为平均池化与最大池化层再加上全连接层,能够减少后续网络的计算量。得到以下结论:
(1)以ResNet18模型为原型,在每一个残差块后面融入CBAM模块可以有效提取脂肪、筋、膜等有用的信息从而来提高网络模型的精度。
(2)改进后的ResNet18_模型对4种不同部位牦牛肉识别准确率达到了96.31%,在准确率上超过了AlexNet、 VGG11、 ResNet34、 ResNet18四种网络模型。
(3)将改进后的ResNet18_CBAM模型与手机应用相结合,开发了不同部位牦牛肉识别移动端App,为牦牛肉产业往智能化方向发展提供了技术支撑。实际测试中,牦牛里脊准确率为96.30%,牦牛上脑准确率为94.92%,牦牛腱子准确率为98.04%,牦牛胸肉准确率为96.49%,有良好的识别效果。
为方便农业科学领域读者、作者和审稿专家学术交流,促进智慧农业发展,为更好地服务广大读者、作者和审稿人,编辑部建立了微信交流服务群,有关专业领域内的问题讨论、投稿相关的问题均可在群里咨询。发布征集
来源:智慧农业资讯