牛智有 于重洋 吴志陶 邵艳凯 刘梅英
(1.华中农业大学工学院,武汉 430070;2.农业农村部智慧养殖技术重点实验室,武汉 430070)
饲料原料按照配方进行配料是控制饲料品质的关键因素之一[1]。在自动化饲料加工过程中,经过粉碎或不需要粉碎的饲料原料需要经旋转分配器通过溜管进入不同配料仓,旋转分配器会出现旋转错位等机械故障,导致饲料原料入仓错误,从而导致原料配制的错误,严重影响产品质量。为了确保饲料原料的正确配料,在饲料原料入仓初期要对入仓原料进行取样和种类识别,以确保饲料原料正确入仓,避免错仓。目前饲料原料的入仓过程中,主要通过巡检员从不同溜管的取样口中人工取样后[2],再经过感官识别等操作对入仓饲料原料进行种类判定,由于入仓饲料原料种类多,人工取样并通过感官识别的劳动强度大,同时增加了饲料加工企业的人工成本。为了开发适应实际生产的原料种类智能化识别装置,开展饲料原料种类识别的方法研究十分必要。
计算机视觉技术已经在诸多领域有了广泛的应用,对于传统的机器视觉分类模型,模型的性能与特征的选择联系密切[3],提取诸如颜色[4-5]、纹理[6-7]、边缘[8]、角点[9]等图像特征过程繁琐,并且人工设计的图像特征大多为图像的浅层特征,判别性能较弱,泛化能力不足,导致传统机器视觉的识别准确率难以进一步提升。文献[10]提出了卷积神经网络的AlexNet模型,与传统方法相比体现出极大的优势。自此,如VGG[11]、GoogleNet[12]、ResNet[13]等卷积神经网络模型相继被提出。采用卷积神经网络的方法对农产品进行识别分类也取得了较好效果[14-16]。实际应用过程中,借助已有的预训练模型进行迁移学习是常见的模型训练方法,大大提高了识别准确率,缩短了训练时间[17-19]。
本文基于饲料实际生产场景自主设计搭建多通道入仓原料种类自动识别装置。利用该装置采集入仓饲料原料图像,构建10种大宗饲料原料图像数据集,开展基于改进ResNet18模型的饲料原料种类识别方法研究。在ResNet18网络模型中增加通道注意力机制,引入基于ImageNet数据集的预训练权重进行迁移训练,并优化网络结构,微调模型参数,以期提高模型识别准确率,实现饲料原料种类快速准确识别,为进一步开发入仓原料种类在线识别系统奠定理论基础和技术方法支撑。
以入仓前饲料原料为识别对象,分别在不同饲料生产企业采集不同产地、不同批次的玉米、小麦、稻谷、麸皮、面粉、膨化玉米、豆粕、棉籽粕、花生粕、鱼粉共10种粉碎后或不需要粉碎的饲料原料样品共500份,其中每类饲料原料均50份,部分饲料原料样品如图1所示。
图1 部分饲料原料样本
结合饲料生产实际,设计搭建多通道入仓原料种类自动识别装置,可以实现多溜管自动取样和图像采集功能,其整体结构如图2所示。该装置主要包括自动取样器、多通道集料斗、输送带、LED环形光源和ME2P-1230-23U3C型工业相机(大恒图像视觉有限公司)等。
图2 多通道入仓原料种类自动识别装置
该装置图像识别的工作流程为:自动取样器通过法兰与原料取样口连接,取样器的顶端曲面与溜管内壁曲面吻合,确保取样器在闭合状态下与溜管接口的封闭性。当需要取样时,取样器在气缸的驱动下伸入原料溜管,饲料原料样品在重力作用下沿样品溜管进入多通道集料斗,通过控制取样器伸入原料溜管的停留时间控制取样量,经理论计算和参考文献[1],取样时间约为3 s,当达到预设取样量后,气缸复位,完成一个取样周期。集料斗中的样品通过输送带传送进入图像采集区。传送带上的饲料原料样品以10 cm宽、0.8 cm厚平铺于传送带,在暗箱内完成图像信息采集。图像采集使用彩色工业相机,取景范围为10 cm×14 cm。因此,本装置采集一幅图像所需的最小样本量体积约为112 cm3,为保证识别结果的准确性,每次识别过程对同一样品采集3幅图像进行综合判定。待图像采集完成后,传送带继续将剩余物料输送至回收箱。采集到的图像传回计算机,经中心裁剪等预处理操作后输入至饲料原料种类识别模型进行种类识别,完成一个周期的原料判别。
基于多通道入仓原料种类识别装置进行饲料原料图像的采集,共采集饲料原料图像10 000幅,每类1 000幅,部分饲料原料图像如图3所示。
图3 部分饲料原料图像
调用Pytorch工具库对饲料原料数据集图像进行预处理,包括随机裁剪缩放,以及图像的张量操作和归一化处理,图像数据统一以224像素×224像素的尺寸输入网络模型中,保证饲料原料图像可识别的前提下减小图像尺寸,提升训练速度,进而优化训练效果。
为进一步扩大饲料原料样本容量,丰富训练数据的分布,去除图像冗余信息,提高模型的泛化能力,将数据集划分出20%作为测试集。其余图像通过数据增强的方式对数据集进行扩充,随机旋转、翻折图像;随机调整图像亮度、对比度、饱和度。数据增强后的样本总数扩增为20 000幅,每类样本图像2 000幅,并按照型训练,验证集用于验证模型有效性,测试集数据不参与数据增强和模型训练,仅用于测试模型最终效果。
卷积神经网络可以由卷积层自动提取大量的图像空间视觉特征,除此之外,卷积神经网络还包括实现非线性映射的激活层和下采样层(即池化层),实现特征由二维到一维转换的全连接层,以及计算输出值和真实值偏差的损失函数等[20]。
从理论经验来看,不断增加神经网络的层数,可以提取到更加复杂的特征,取得更好的效果。但是大量试验结果显示,深层的卷积网络会出现退化,即网络层数到达一定数量之后,准确度出现饱和,甚至下降。为了解决该问题,残差学习被提出来,在层间增加残差跳跃连接,引入浅层特征,有效防止了梯度消失和梯度爆炸的发生,缓解了模型退化的问题,使得神经网络的层数增加成为可能,具有强大的表征力。残差结构如图4所示[13]。
图4 残差结构图
图4中x表示输入,H(x)表示输出,F(x)表示残差,传统CNN网络尝试拟合x与H(x),残差网络结构尝试学习F(x)+x,而非直接学习两者的潜在映射x→H(x)。其核心思路为:残差单元在接受输入数据之后,若一个浅层网络准确率已经达到饱和,则在它后面加几个恒等映射层,使得输出等于输入,因此增加网络深度但是不增加误差,这使得神经网络的层数可以超越之前的约束,提高识别准确率。
本文选择经典卷积神经网络ResNet18调整优化并进行迁移训练。该模型由一系列的残差结构组成,共包含8个残差单元,由18层组成,包括17个卷积层和1个全连接层。
2.2.1CAM-ResNet18模型结构
基于经典ResNet18模型进行调整,改进后的CAM-ResNet18网络结构如图5所示,输入图像为经过预处理,尺寸为224像素×224像素×3通道的饲料原料图像,图像数据进入网络后首先经过一个卷积核为7×7、步距为2的卷积层,再经过批归一化处理(Batch normalization, BN)、激活函数以及一个3×3的最大池化层下采样,将224像素×224像素的输入图像变为56像素×56像素的特征图像,极大地减小存储所需空间。conv2~conv5表示添加了残差结构的卷积块,4个卷积模块进行浅层至深层的特征提取,每个卷积块包括两个残差单元,每个残差单元又包括两个卷积层,即通过堆叠3×3卷积来提取特征信息,每隔2个卷积层引入残差结构。并在第一个卷积层和最后一个卷积层后引入通道注意力模块(Channel attention module, CAM),增强有效信息的提取,提高网络模型表达能力的同时方便预训练参数的载入[21]。经过残差连续卷积后输出的图像再经过数据归一化处理和全局自适应平滑池化,其中数据归一化处理算法可以加快收敛速度,提高模型精度。此时,由于连续卷积,数据无法完全连接,针对此,数据被输入至展平层进行卷积,将多维数据一维化。最后,将得到的图像输入至全连接层,为防止神经网络过拟合,使用随机失活方法[22],参数设置为0.5,随机丢弃1/2的神经元。并通过softmax分类器输出对应的饲料原料种类识别结果。
图5 CAM-ResNet18网络结构图
2.2.2通道注意力机制
CBAM注意力机制(Convolutional block attention module, CBAM)包括通道注意力机制和空间注意力机制(Spatial attention module, SAM)2个子模块,通道注意力机制关注图像中有意义的特征,空间注意力机制关注最具信息量的地方[23]。本研究的饲料原料样品图像均为平铺小颗粒图像而非独立的目标物体图像,增加空间注意力后反而会使得模型识别重点模糊,导致分类准确率下降。因此,本研究的网络模型仅增加CBAM注意力机制的通道注意力机制模块。通道注意力模块原理图如图6所示。
图6 通道注意力模块原理图
通道注意力模块将特征图空间维度压缩为一维矢量,在此过程中采用全局平均池化(AvgPool)并行全局最大池化(MaxPool)来压缩通道特征,能更好地聚合特征映射信息,输入特征经过平均池化、最大池化两个并行池化后的结果送入一个权重共享的多层感知机(Multi-layer perceptron, MLP)中。然后对MLP的输出特征进行逐元素加和,经过Sigmoid非线性激活函数后生成通道注意力Mc(F),与输入特征图逐个元素相乘得到特征F′作为下一个卷积块的输入。其过程公式为
Mc(F)=σ(MLP(AvgPool(F))+MLP(MaxPool(F)))
(1)
F′=Mc(F)⊗F
(2)
式中F——图像输入特征
AvgPool(·)——平均池化层函数
MaxPool(·)——最大池化层函数
MLP(·)——多层感知机函数
σ——Sigmoid函数
F′——使用通道注意力模块得到的特征
2.2.3优化器及学习率
Adam(Adaptive moment estimation)优化器可以计算不同参数的自适应学习速率,具有占用内存小、应用简单、计算效率高等优点,可以应用于稀疏梯度以及非平稳目标[24]。
研究表明,在使用自适应学习率的同时进行学习率衰减能够促进模型更好的收敛[25]。余弦退火(Cosine annealing)以余弦函数的形式降低学习率。本模型在Adam优化器中引入余弦退火衰减学习率,有助于快速达到最优解,并减少后期震荡。
本研究模型训练的试验硬件环境为:ADM r7 5800H 3.2 GHz标压处理器,运行内存为16 GB,3 600 MHz,搭载6 GB NVIDIA GeForce RTX 3060 GPU加速训练。软件环境基于Windows 10系统,Anaconda 3平台,通过Python语言在Pytorch深度学习框架中搭建并运行网络模型,并行计算框架为CUDA 10.1版本。
卷积神经网络模型的训练效果与模型参数设置密切相关,设置批大小(Batch_size)为16,每次训练迭代50个周期(Epochs),使用Adam优化器和余弦退火衰减学习率,初始学习率设置为0.000 1,在图像进入网络训练之前进行预处理和归一化处理。
由于饲料原料原始数据集较小,因此采用ImageNet上训练好的模型参数来初始化当前模型的权值,加速网络收敛,大大缩短了训练时间,提高了训练效率[26]。
选择准确率、识别时间作为网络模型的主要评价指标,为方便本模型后期嵌入开发,也要综合考虑模型内存占用量和模型参数量。并结合混淆矩阵计算精确率、召回率、特异度和F1值综合评价网络模型对饲料原料种类的识别能力[27]。
4.1.1学习率
理想的学习率有利于模型快速收敛,若初始学习率设置过小则目标函数下降速度缓慢[28]。若学习率设置过大容易使得目标函数在最优解附近不断震荡,甚至出现目标函数爆炸现象。利用Adam优化器和余弦退火法衰减学习率时Adam的默认学习率为0.001。为进一步探究模型参数对网络模型准确率的影响,在基于CAM-ResNet18网络模型和迁移学习的前提下设置初始学习率为0.1、0.01、0.001、0.000 1、0.000 01,分别对饲料原料种类识别模型进行训练,迭代次数设置为50次。
学习率对CAM-ResNet18网络模型的影响如图7所示,从图7可以看出,学习率设置为0.1和0.01时模型经50次迭代训练仍未收敛,且最终损失值为0.34和0.2,远大于学习率为0.001时的损失值。学习率为0.001时,模型准确率得到大幅度提升,但其稳定性有待进一步增强。对比学习率为0.000 1与学习率为0.000 01时模型的训练效果发现,二者识别准确率较为接近,但学习率为0.000 1时的收敛速度及最终损失值优于学习率为0.000 01时,故选择0.000 1为本网络模型的学习率。
图7 不同学习率对准确率和损失值的影响
4.1.2注意力机制
由于注意力机制的嵌入位置对识别准确率有一定的影响[29],将注意力机制添加在第一个卷积层以及最后一个卷积层之后不会改变ResNet18网络的原有结构,仍能有效迁移原有预训练参数[30]。
为了验证网络中注意力机制添加方式的有效性,对比网络中添加注意力机制位置以及个数对模型准确率的影响。本文设计了4种注意力机制添加方案。
4种注意力机制添加方案分别为:只在第1个卷积层后添加1个注意力机制(方案1);在第1个卷积层后和最后1个卷积层后共添加2个注意力机制(方案2);在最后1个卷积层后添加注意力机制(方案3);不添加注意力机制(方案4)。使用同一数据集,保证训练参数一致的前提下,在优化微调后的ResNet18网络模型中训练和验证,试验结果如表1所示。
表1 不同注意力机制添加方式时ResNet18模型的性能
由表1可知,添加1个注意力机制对模型性能略有提升,添加2个注意力机制时识别准确率达到最佳,说明通道注意力机制的引入,有效提升了模型验证集准确率。
为进一步分析添加注意力机制后卷积网络特征提取的变化,对CAM-ResNet18网络模型与ResNet18网络模型每一个卷积块最后一个卷积层的特征做可视化输出,如图8所示。
图8 卷积层输出特征
模型特征可视化过程中,对模型输入同一豆粕样本图像。分析两个模型卷积层的输出特征图,发现卷积网络的学习都是由浅层特征向深层特征过渡,不同的卷积核提取不同的特征信息,浅层的卷积核侧重于提取图像的轮廓、边缘、纹理、颜色等特征信息。但随着图像在卷积层中向前传递,特征图出现肉眼无法辨识的深层特征,表现为细节逐渐消失。
逐层对比两个模型的特征输出图,可发现conv_1卷积层特征输出图完全一致,这是因为CAM-ResNet18网络模型的第1个注意力机制添加位置在conv_1卷积层之后,因此卷积层1的输出特征图并无注意力机制的影响。对比两个模型的conv2~conv5卷积层特征输出图,发现添加了注意力机制的CAM-ResNet18网络模型可以更好地保留有效特征信息,减少冗余特征信息,进一步证明了通道注意力机制的添加可以更加有效地提取饲料原料图像特征。
为了验证模型CAM-ResNet18改进的有效性,将本研究的CAM-ResNet18网络模型与常见用于图像分类的ResNet18、ResNet34、AlexNet、VGG16网络模型在饲料原料数据集上的训练结果进行对比。训练前,调整各模型参数一致,并将Softmax输出种类由1 000分类调整为10分类,在相同的训练环境下进行50次迭代。各个模型验证准确率、参数量、浮点运算量、识别时间等性能如表2所示。
表2 不同卷积神经网络模型性能对比
对比各网络模型的验证准确率发现,各卷积网络模型在饲料原料种类数据集上的最终识别准确率都在90%以上。CAM-ResNet18网络模型验证准确率略高于ResNet34和ResNet18网络模型,50次迭代训练后CAM-ResNet18网络模型的验证集识别准确率可达到99.1%,比经典ResNet18模型的验证准确率高0.6个百分点,较更深层次的ResNet34网络模型高0.2个百分点。VGG16模型的验证准确率为98.0%,比CAM-ResNet18网络模型的验证集识别准确率低1.1个百分点,AlexNet模型最终识别准确率仅95.4%,比CAM-ResNet18网络模型的验证集识别准确率低3.7个百分点。与其他模型相比,改进后的CAM-ResNet18模型在饲料原料数据集上的识别效果最佳。
模型参数量方面,CAM-ResNet18模型较原ResNet18模型参数量增加1.3×105,增长0.29%,对模型整体性能影响较小。浮点运算量反映网络模型的复杂程度,CAM-ResNet18模型与ResNet18模型的浮点运算量相同,为1.82×109,高于AlexNet,但低于ResNet34和VGG16。ResNet34模型的识别准确率与CAM-ResNet18较为接近,但ResNet34模型参数量约增大1倍,浮点运算量也增大1倍。
规定自载入目标饲料原料图像至识别完成为一次完整检测,且各模型中饲料原料图像载入方式相同。CAM-ResNet18模型单次图像识别时间为2.58 ms,较ResNet18模型检测时间慢0.02 ms,较ResNet34快0.27 ms,较VGG16快0.4 ms。
综合对比5种卷积神经网络模型,CAM-ResNet18模型具有最高的识别准确率,较快的检测速度,模型参数量与浮点计算量较小。对比ResNet18模型与CAM-ResNet18模型,CAM-ResNet18在识别准确率上提升0.6个百分点,识别时间变化不大,且浮点运算量以及模型参数量几乎没有增加,说明其性能提升的同时并未大幅增加时间复杂度与空间复杂度,体现了模型改进的有效性。
混淆矩阵可以用来可视化地展示分类模型的性能,是评判模型结果的重要指标之一,常用于评判分类器模型[31]。本研究的CAM-ResNet18网络模型在经数据增强的饲料原料数据集上训练后,使用预先留出的测试集测试模型的效果,图像总数为2 000幅,每类饲料原料200幅,得到混淆矩阵如图9所示。由图9可知,预测值密集分布在对角线上,说明该模型的分类水平非常准确。观察预测错误的样本可知,少量稻谷和小麦出现预测错误,可能是因为小麦粉以及稻谷粉的颜色和粉碎粒度等特性都较为相似;玉米粉和膨化玉米粉的颜色极为相近。在特征提取过程中易混类特征差异不大,不易区分,因此容易出现识别错误。总体来说,本文提出的CAM-ResNet18模型在采集的饲料原料数据集上的分类性能优秀,能够较好地对饲料原料种类进行区分,准确地对饲料原料种类进行判别。
图9 饲料原料测试集混淆矩阵
根据混淆矩阵可以计算模型对应各个类别的准确率、精确度、召回率、特异度和F1值。计算结果如表3所示。
表3 CAM-ResNet18模型饲料原料种类识别结果
由表3可知,本研究模型的召回率、F1值、特异度都很高,10种饲料原料分类精确度均在98.0%以上。在特异度上,本模型均在99.8%以上。以F1值为标准对其分类性能排序的结果为:棉籽粕、面粉、鱼粉、麸皮、花生粕、豆粕、玉米、膨化玉米、稻谷、小麦,其中小麦和稻谷识别效果略有不足,但总体来看测试集的识别准确率达99.4%,召回率达99.4%,F1值达99.4%,特异度达99.9%。这表明CAM-ResNet18模型在饲料原料种类识别任务上表现优异。
(1)CAM-ResNet18网络模型在验证集中饲料原料的识别准确率达到99.1%,识别时间为2.58 ms。与ResNet18、ResNet34、AlexNet、VGG16模型相比,识别准确率分别提升0.6、0.2、3.7、1.1个百分点,识别时间较ResNet34、VGG16模型有所减小。
(2)使用混淆矩阵可视化地展示分类模型的性能,测试集的整体识别准确率达99.4%,召回率达99.4%,特异度达99.9%,F1值达99.4%,其中面粉、棉籽粕、鱼粉3类饲料原料的精确度、召回率和F1值均达到100%。证明了CAM-ResNet18模型适用于饲料原料种类的识别分类。