APP下载

基于迁移学习和改进ResNet34的猪个体识别方法*

2023-10-09吴潇杨颖刘刚张倩宁远霖

中国农机化学报 2023年9期
关键词:猪只准确率卷积

吴潇,杨颖,刘刚,张倩,宁远霖

(中国农业大学信息与电气工程学院,北京市,100083)

0 引言

根据国家统计局统计数据,2022年我国肉类总产量为93 284.4 kt,其中猪肉总产量为55 414.3 kt,占比约为59.4%[1],养猪业已成为我国畜牧业中的支柱产业。猪个体识别通过处理多通道的感知信号获取个体身份信息,可用于精准饲喂[2],有效减少饲料的浪费以及改善生猪生产性能,还可用于生猪的疾病诊断和追溯,进而为食品安全问题提供有力的保障[3]。近年来,银保行业对养殖业保险产品的投入和关注持续增加,而参保牲畜的死亡和疾病直接关系养殖户的保险理赔等相关利益[4],因此,猪个体识别对于提高被保猪个体的身份认证和识别的有效性具有重要的意义。

最早的猪个体识别是以射频识别技术[5](Radio Frequency Identification,RFID)为核心的侵入式识别方法,该方法的优势为不受光线强度及猪只外观影响,且识别效果较稳定,但该方法增加了养殖成本并且容易引起感染并发症,从而降低了动物福利。近年来,基于视觉的猪个体识别成为研究热点,Navarro-Jover等[6]提出了一种基于颜色标记的计算机视觉方法用来跟踪仔猪的位置,识别率为89.1%。郭依正等[7]提出了一种基于等距特征映射(Isometric Feature Mapping,Isomap)和支持向量机的算法(Support Vector Machine,SVM)对俯视群养猪个体进行识别,准确率为92.88%。陈佳黎[8]采用Grab Cut交互式目标提取算法结合阈值分割、形态学处理等方法将猪只从背景中提取出来再利用SVM算法对猪只进行识别。Wada等[9]提出利用特征空间法识别猪脸,手动分割猪眼睛和鼻子周围的图像以实现猪个体识别,并取得较好的识别率。

随着深度学习的发展,学者开始利用深度学习技术来进行猪个体识别。Hansen等[10]提出了基于Grad-Cam类映射的卷积神经网络(Convolutional Neural Networks,CNN)模型,在1 553张图片上进行试验取得了96.7%的正确率。王荣等[11]提出了一种基于多尺度卷积神经网络在多变环境下的猪个体身份识别模型,取得了较高的识别率。

近年来,迁移学习已经引起了广泛的关注和研究。魏斌[12]以奶山羊为研究对象,建立羊脸数据集,基于深度学习模型和迁移学习方法完成羊脸检测和羊脸识别模型的构建,对17只羊共616张图片进行训练,模型识别准确率高达91%。韩安琪[13]利用最新的深度学习理论和迁移学习理论进行小样本人脸识别,识别准确率高达85.7%。同样为解决数据集不足的问题,黄振文等[14]提出了一种迁移学习模型下的小样本人脸识别算法。在将预先训练的卷积神经网络迁移到小样本人脸目标集时使用受限玻尔兹曼机RBM,将训练模型中的全连接层改为RBM,并用小样本人脸数据重新训练RBM和SoftMax层,最后用反向传播算法(Backpropagation Algorithm,BP)进行参数调整。王柯力等[15]提出一种基于参数的迁移策略,采用微调方式再训练源模型的方法,在修改源模型全连接分类层的基础上,进一步将高层卷积模块的权重设置为可训练以进行自适应调整,最终得到了97.4%的准确率,相较于源模型提高了20个百分点。Wang等[16]为了准确识别牛只,帮助保险公司界定牛只保险理赔幅度并且实现智能养殖,在牛脸数据采集困难和数据量小的情况下,利用一种结合迁移学习的深度学习方法训练牛脸识别模型,通过参数传递来初始化网络权值,试验结果表明,在小样本数据下,该方法可以获得93%的识别准确率。

针对真实猪舍环境下,猪只样本采集困难、样本数据量小,且背景复杂,猪只姿态多变的猪个体识别展开研究,将ResNet34模型卷积层进行优化、设计新的全连接层及引入Dropout和迁移学习的训练方法,本文将ResNet34模型在ImageNet上预训练得到的模型参数,迁移到改进后的ResNet34模型上进行猪个体识别。

1 试验数据及预处理

由于真实养殖场景中,猪舍中的猪只处于运动状态,很少能配合采集人员正对镜头,所以个体数据采集难度极高。因此,本文数据集来源于2017京东金融全球数据探索者大赛拍摄的真实养殖场景的30头猪的活动视频片段,其中每段视频时长约1 min,帧率为50,如图1所示。为了满足数据集的多样性和样本之间的差异性,将每段视频按照不同的活动场景分别划分为该视频所包含猪只的训练数据、验证数据和测试数据,然后从每段视频中按照固定间隔帧数抽取图像帧,其中图像抽取的间隔帧数为50,对于抽取后的图像帧再人工剔除相似度过高的图像,最后得到1 597张RGB彩色图像,每张图像大小为1 280像素×720像素,将1 597张图片以6∶2∶2的比例划分为训练集、验证集和测试集。

图1 部分数据Fig. 1 Part of the data set

为了提高模型的泛化性,对训练集的图像进行预处理,首先对训练图像进行随机裁剪,裁剪到大小为224×224,然后将随机裁剪后的图像进行水平翻转,最后对图像进行归一化和标准化处理,即首先将图像的3个通道的像素值Xij(i=1,2,3,j=1,2,…,N,N=224×224)的取值范围统一到[0,1]区间,归一化的公式如式(1)所示。然后进行标准化处理,标准化的公式如式(2)所示。

(1)

(2)

式中:Xij——原始图像第j个像素点的第i个通道的像素值;

X′ij——归一化处理后的图像像素值;

X″ij——标准化处理后的图像像素值;

μi(i=1,2,3)——3个通道像素均值,分别为0.485、0.456、0.406;

σi(i=1,2,3)——3个通道像素值的标准差,分别为0.224、0.229、0.225。

该均值和标准差由ImageNet数据集全部图像分通道计算得出。

(a) 原图

(b) 中心裁剪

(c) 水平翻转

(d) 归一化及标准化图2 图像预处理Fig. 2 Image preprocessing

2 迁移学习与改进ResNet34模型

2.1 迁移学习

卷积神经网络结合迁移学习的一般流程是:(1)在特定应用之前,先利用相关领域大型数据集对网络中的随机初始化参数进行预训练;(2)利用训练好的卷积神经网络,针对特定应用领域的数据进行特征提取;(3)利用提取后的特征,针对特定应用领域的数据训练卷积神经网络或者分类器[17]。正如前文所述,本文采用大规模数据集ImageNet对网络模型进行预训练,将在ImageNet上训练过的预训练权重应用到猪个体识别任务上,加快网络的收敛速度和识别效率,这就是我们的“迁移”学习过程。

迁移方式的选择与试验样本数量及试验数据集与源数据集相似度有关[18],由于本试验数据集规模较小且与ImageNet数据集有较高相似度,因此,本文采用预训练模型结构及权重,重新训练全部层。具体为将ResNet34模型在ImageNet数据集上预训练所得参数作为本文改进ResNet34模型的初始化权重,但由于本文改进ResNet模型与原ResNet网络模型结构不完全一样,且设计了新的全连接层,因此,在迁移学习中改进ResNet模型只需继承预训练模型中的部分权重参数,无需全部继承。由于全连接层由于与原模型完全不同,因此,全连接层需要重新训练,故将新的全连接层权重参数全部随机初始化。相比非迁移学习的全新学习,采用这种迁移学习方式借助大规模数据集的预训练网络和参数,有助于在猪个体识别样本量较小的情况下加快网络的收敛,并有效地提高识别精度。

2.2 改进ResNet34模型的构建

一般情况下,分类任务难度越大,所需要的模型层数越大,但模型层数的加深会带来梯度消失的问题反而使得模型性能下降。He等[19]在2015年提出了ResNet34模型,他在深层网络中加入残差机制使得网络在很大程度上避免梯度消失问题,因此本文选取具有残差结构的ResNet34模型,并且对模型进行优化后用于猪个体识别研究,图3是改进后的ResNet34模型和残差结构。

图3 改进ResNet34模型Fig. 3 Improved ResNet34 model

图3中Conv表示卷积层,除第一个卷积层的卷积核大小为7×7,步长为2,填充数为3以外,其余卷积层的卷积核大小均为3×3,步长为1,填充数为1。MaxPooling层表示最大池化层,AdaptiveAvgPool表示平均池化层,FC1和FC2表示两个全连接层,FC1层包含1 024个节点,FC2层的节点数与总猪只数量相同。网络层中的“/2”表示该层网络会将传入的特征图大小缩小至原图的1/2。

改进后的ResNet34模型与原始ResNet34模型主体结构相似,包含有1个卷积核大小为7×7、卷积核个数为64的卷积层,4个layer及全连接层。每个layer由数个basicblock组成,每个basicblock由两层卷积以shortcut(直连)方式连接构成,layer1~layer4中每层卷积分别包含64、128、256和512个大小为3×3的卷积核。模型层数和识别任务紧密相关,减少layer内basicblock的数量在提高模型训练以及预测速度同时也能降低模型识别可能性的风险,针对本文的识别任务,在经过多次卷积层数量测试试验后最终确定4个layer的basicblock个数分别为2、3、4、3,这种轻量化的优化方式既可以提高模型的训练以及识别速度又不会影响模型识别性能。除了优化卷积层之外,改进ResNet34模型在设计了结合Dropout方法的双层全连接层,新设计的全连接层可以通过第一层全连接层提取更多特征信息从而提高识别准确率,但同时为了避免模型过于复杂出现过拟合现象,在新的全连接层引入了Dropout方法。Dropout是指在模型训练阶段以某一固定比例随机地使得某一层神经网络的节点“失活”,在反向传播的过程中,被“失活”的神经元不参与参数更新,从而有效防止模型在训练过程中出现过拟合现象。通过以上策略,既能保证模型充分提取特征信息也能避免模型出现过拟合现象,从而使得本文设计的新的全连接层能够得到更好的识别效果。应用Dropout方法时,随机失活节点的比例,即随机失活率和任务识别效果紧密相关,本文通过试验选取最佳的失活率。

综上,改进ResNet34网络模型共有2×(2+3+4+3)+1=25个卷积层和2个全连接层,共计27层网络,相较于原来的34层网络结构,是一种性能更优、更为轻量型的网络结构。采用改进ResNet模型进行分类识别时,输入图像为经过预处理后的图像,大小为224×224×3,将预处理后的图像送入网络中,经四个layer处理后的输出特征图大小为7×7×512,经过自适应平均池化层处理后再利用Flatten函数将特征矩阵转化成一维向量,然后通过两个全连接层处理后输出得到各类的概率值,每个概率值表示输入图像属于各类类别的概率大小,再利用Argmax函数取最大概率值对应的类别即为模型预测结果。

2.3 改进ResNet34模型的试验条件与训练流程

本文试验的硬件环境为:Intel(R) Core(TM) i9-10900K CPU @3.70 GHz,运行RAM为64 G,显存12 G;软件环境为:试验的训练与测试均在PyTorch框架下完成,CUDAVersion-11.4,CUDNN-8.1.1,PyTorch-GPU-1.9.0,PYTHON-3.8.11,Linux Ubuntu18.0.4操作系统。经过多次训练发现在本软硬件环境下,算法在120个Epoch(一个Epoch代表训练完一次全部数据集)内均可收敛,因此所有的试验Epoch总数均为120,每个Epoch包含训练与测试两个阶段。图4为模型训练流程图。

图4 模型训练流程图Fig. 4 Flow chart of model training

首先将PyTorch官方提供的ResNet34模型预训练参数迁移至改进ResNet34模型中,在模型的迁移过程中,图3中虚线框内的参数,需先将原ResNet34预训练权重进行相同的优化处理,其次再进行参数迁移;实线框内的参数仅作初始化处理即可。其次将最后一层全连接层的网络节点个数修改为分类任务数,为了适应实验电脑显存将batch_size(批处理图片数量)设置为32,其次将经过预处理后的图片及其label送入修改后的模型中进行前向传播、计算Loss、反向传播、梯度下降,重复此流程直至训练次数达到指定训练轮数,损失函数使用多分类问题常用的交叉熵损失函数,优化器使用Adam优化器。

3 试验结果与分析

3.1 迁移学习对模型识别性能的影响

4种模型的预训练试验结果如图5所示。

(a) AlexNet

(b) GoogleNet

(c) ResNet34

(d) VGG16图5 不同模型迁移学习与全新学习训练结果对比Fig. 5 Comparison of training results between transfer learning and migration learning

如前所述,迁移学习可以有效提升模型在小样本数据上的性能[20]。为了验证迁移学习对模型性能的影响,本文选择4种常见的网络模型,分别为AlexNet、GoogleNet、VGGNet16和ResNet34,比较每种模型在迁移学习和全新学习(不迁移)下的识别性能。

从图5可以看出,在迁移学习训练模式下,AlexNet、GoogleNet、Vgg19及ResNet34模型分别在第17、31、51、72个Epoch的时候达到最高准确率,最高准确率分别为90.3%、94.5%、91.0%、97.4%。而在全新学习训练模式下,上述四组模型分别在第70、97、91、84个Epoch的时候达到最高准确率,最高准确率分别为79.6%、91.6%、78.0%、89.7%。相较全新学习模式,在迁移学习训练模式下模型训练速度分别提升了75.7%、68.0%、44.0%、14.3%,准确率分别提升了13.4%、3.2%、16.7%、8.6%,并且在迁移学习模式下,4个模型的初始准确率均高于全新学习。在模型收敛之前,迁移学习训练曲线斜率均大于全新学习模式下的训练曲线斜率,表明迁移学习可以有效提高模型的训练效率和准确率。

相较之下,ResNet34模型识别准确率最高,因此本文选取ResNet34模型作为试验模型并对其进行优化。

3.2 超参数对模型识别性能的影响

3.2.1 学习率对模型性能的影响

学习率过大或过小均会使得模型不易收敛甚至不收敛。因此设置5组试验,使用迁移学习方法训练ResNet34模型,选取不同数量级的学习率进行试验比较,试验学习率依次为0.001、0.000 1、0.000 01、0.000 001、0.000 0001。

神经网络模型参数更新方式如式(3)所示。

θ′k=θk-L·Gradk

(3)

式中:θk——第k层网络权重参数;

θ′k——第k层网络更新后的权重参数;

L——学习率;

Gradk——第k层的梯度。

当学习率过大的时候,参数更新幅度较大,容易跳过最优解,产生较大的震荡,导致准确率较低;当学习率过小的时候,参数更新幅度较小,容易陷入局部最优解,导致准确率较低。因此当学习率为0.001或0.000 000 1的时候,模型均不收敛。当学习率为0.000 1、0.000 01、0.000 001的时候,参数更新幅度适中,模型能够收敛,且当学习率为0.000 001的时候,模型取得最高的准确率,因此本文选取学习率为0.000 001,结果如图6所示。

图6 不同学习率下的模型训练结果对比Fig. 6 Comparison of model training results between different learning rates

3.2.2 Dropout的随机失活率对模型性能的影响

Dropout的随机失活率取值范围在0~1之间,本文设置9组试验,利用迁移学习方法训练ResNet34模型,学习率为0.000 001,在[0.1,0.9]内每隔0.1选取一个数值分别作为9组试验的Dropout的随机失活率p。由图7可知,当p值为0.6的时候,模型准确率最高,因此本文选择随机失活率为0.6。

图7 不同Dropout参数值下的模型训练结果对比Fig. 7 Comparison of model training results between different Dropout parameter values

3.3 模型改进对模型识别性能的影响

本文对ResNet34模型的卷积层进行了优化并且设计了新的全连接层,改进后的模型与原模型性能对比如表1所示。

表1 模型改进前后性能对比Tab. 1 Comparison of model performance before and after improvement

其中浮点运算量指的是图片输入模型到获得预测结果之间的加减乘除计算次数,代表了模型的时间复杂度。验证准确率指的是模型训练完成以后对验证集每一张图片进行检测,用检测结果中预测正确的图片数量除以数据集图片总量。平均检测时间指的是模型对验证集里每一张图片进行类别预测所用时间的总和除以验证集图片总数。训练时间指的是模型对所有训练集图片进行一次训练所用时间。

从表1中可以看出,与原ResNet34模型相比,仅优化卷积层的ResNet34模型的验证准确率不变,但总参数量和浮点运算量分别降低了12.7%和25.3%,且平均检测时间和训练时间分别降低了15.8%和14.3%,说明本文提出的卷积层的优化方法在保证正确率不变的情况下可有效降低模型的单幅图片预测时间并且提升了模型训练效率。同时,与原ResNet34模型相比,仅修改全连接层的ResNet34模型总参数量、浮点运算量、平均检测时间及训练时间几乎没有改变,但验证准确率提升了1.9个百分点,说明本文新设计的全连接层和Dropout策略相比原模型,不会加大运算量,和单层全连接相比却可以提取更多特征信息,从而有效地提升模型的验证准确率。将本文改进的ResNet34模型和原ResNet34模型对比,浮点运算量降低了约25.3%,总参数量降低了约10.3%,平均检测时间和训练时间分别减少了15.8%和14.3%,准确率提高了1.9个百分点,充分证明本文改进的ResNet34模型不论在性能还是效率上均优于原模型。

3.4 改进后的ResNet网络模型与其他网络模型识别性能对比

为了验证本文改进后的ResNet模型的有效性,将本文提出的模型分别与迁移后的AlexNet、VGG16、VGG19、GoogleNet、ResNet50、ResNet34进行对比,试验结果如表2所示。

表2 改进后的ResNet网络模型与其他网络模型识别结果对比Tab. 2 Comparsion of the results between the improved ResNet and other models

6种卷积神经网络模型中,VGG系列的模型浮点运算量和模型总参数量最多,因而其平均检测时间以及训练时间也最长,准确率均为91%。AlexNet模型浮点运算量最低,平均检测时间和训练时间较短但验证准确率最低,为90.3%。GoogleNet网络性能较为均衡,准确率为94.5%,ResNet系列网络性能最好,改进ResNet34和ResNet50的验证准确率分别为98.7%、97.4%,每轮训练时间分别为4.2 s、8.2 s,并且,相较于ResNet50模型,改进ResNet34的准确率提高1.3个百分点,且平均检测时间降低约38.5%,训练时间也降低约48.8%。因此,改进ResNet34模型综合性能均优于其他网络模型。

3.5 本文提出的模型对猪个体识别的测试结果及可视化分析

混淆矩阵[21]对模型分类性能具有较好的显示性,可以同时显示出分类正确和分类错误的猪个体数。利用测试集数据对本文提出的改进ResNet34网络性能进行测试,混淆矩阵可视化结果如图8所示。

混淆矩阵中用于衡量性能模型性能的指标有准确率(Accuracy)、精确率P(Precision)、召回率R(Recall Ratio)及特异度(Specificity),计算公式如式(4)~式(7)所示。

(4)

(5)

(6)

(7)

式中:TP——猪只类别为真实种类,模型预测为正确类别的数量;

TN——猪只类别为真实类别,模型预测为错误的类别的数量;

FP——猪只类别为错误类别,模型预测为正确的类别的数量;

FN——猪只类别为错误类别,模型预测错误的类别的数量。

测试集中30只猪个体的准确率、精确率、召回率及特异度分别为97.8%、98.1%、97.7%、99.9%,这表明本文改进ResNet34模型性能较优,能够应用于复杂背景下的猪个体识别。

3.6 改进ResNet34模型对单幅图片预测结果

测试集共有30头猪,第M类猪只表示第M头猪。从测试集图片中随机挑选30类不同猪个体图片,用改进ResNet34模型进行预测,部分预测结果如图9所示。

(a) 第1只猪

(b) 第9只猪

(c) 第14只猪

(d) 第29只猪图9 改进ResNet34模型对单幅图片预测结果Fig. 9 Result of improved ResNet34 model predict the single picture

图9展示了第1、第9、第14和第29类的猪只识别概率,剩余26类猪只的识别概率分别为98.3%、96.8%、99.6%、99.9%、99.5%、99.9%、97.8%、94.8%、99.9%、99.5%、98.0%、99.4%、97.6%、93.6%、99.7%、99.5%、99.3%、92.6%、99.7%、98.5%、97.3%、99.7%、99.9%、99.8%、97.9%、99.9%(类别号由小到大),因此,改进ResNet34模型对猪个体具有较高的识别准确率。

3.7 猪个体识别系统试验

为验证所提出方法的实用性,开发了一款猪个体识别软件进行试验验证。软件工作流程和识别图例如图10和图11所示。用户可以通过拍照或者获取本地图库两种方式获取需检测图像。拍照时需尽量保证猪个体的完整性以提高识别准确率。软件包括前端展示界面和后台处理两部分,前端部分利用PyQt5进行布局,后端通过Python语言调用PyTorch深度学习库对猪个体进行识别。

图10 工作流程图Fig. 10 Work flowchart

图11 猪个体识别软件识别图例Fig. 11 Identification legend of pig individual identification software

4 结论

1) 针对猪个体识别的任务特点和特征提取要求,对ResNet34模型的卷积层进行了优化,重新设计了全连接层并且引入了Dropout方法,并且讨论了学习率、Dropout超参数及模型改进部分整体识别性能的影响,并将改进后的模型与其他常见网络模型进行对比,整体性能均优于其他模型。此外,试验结果表明改进ResNet34模型的验证准确率为98.7%、平均训练时间为4.2 s/epoch、单张图片平均预测时间为0.003 2 s,与原ResNet34模型相比,验证准确率提高了1.9%,平均训练时间降低了14.3%,单张图片检测耗时降低了15.8%,模型总参数量和浮点运算量分别降低了10.3%、25.3%。

2) 针对猪个体识别任务的样本量小和训练数据有限,在改进模型基础上通过迁移学习有效地提升了模型训练速度及准确率,相较于全新学习,对改进后的ResNet34模型使用迁移学习进行训练,模型训练速度提升了14.3%,准确率提升了8.6%。

3) 本文极个别测试用例的猪个体在整幅图像中占位较少,则模型对此类个体的识别效果较低,后续会针对此问题作进一步的改进和优化,提高模型的泛化性。

猜你喜欢

猪只准确率卷积
降低日粮粗蛋白并添加单体氨基酸对断奶—育肥猪生长性能和营养排泄的影响(中)
基于3D-Winograd的快速卷积算法设计及FPGA实现
乳腺超声检查诊断乳腺肿瘤的特异度及准确率分析
不同序列磁共振成像诊断脊柱损伤的临床准确率比较探讨
2015—2017 年宁夏各天气预报参考产品质量检验分析
猪胃溃疡的病因与防治措施
秋冬季防应激不可忽略饮水消毒
从滤波器理解卷积
高速公路车牌识别标识站准确率验证法
猪只硒缺乏症的预防措施和治疗方法