APP下载

融合注意力机制的开集猪脸识别方法

2023-03-07高荣华李奇峰刘上豪于沁杨

农业机械学报 2023年2期
关键词:欧氏猪只卷积

王 荣 高荣华 李奇峰 刘上豪 于沁杨 冯 璐

(1.北京市农林科学院信息技术研究中心,北京 100097;2.西北农林科技大学信息工程学院,陕西杨凌 712100;3.国家农业信息化工程技术研究中心,北京 100097)

0 引言

随着畜牧养殖业向规模化、信息化、精细化的方向发展,集约化猪场将逐渐取代散户养殖等小规模的养殖模式。在大规模化猪场中要实现对生猪个体自动化、信息化、精细化的日常管理,生猪个体身份的识别十分重要。传统的养猪业中通常使用物理标签和RFID(Radio frequency identification system)芯片来确定猪的个体身份[1]。物理标签通常包含图案标记、切耳朵等方法,容易引起生猪应激,影响动物福利。而利用RFID识别生猪个体身份的方法中,不同频率的RFID的识别范围不同,易出现误识别问题。为了弥补这些传统的接触式识别方法的不足,近年来出现了多种基于计算机视觉的非接触式识别方法,并已应用于多种动物识别任务。这些方法仅需要相机和计算设备协助,无需额外人力和其他设备,就可以快速准确地识别动物个体身份。

计算机视觉技术发展的早期,需要人类的先验知识来提取图像的特征[2-3],但不同特征的重复提取以及训练过程过于繁琐。随着深度学习与计算机视觉技术发展,卷积神经网络(Convolutional neural network,CNN)表现出较强的特征提取能力[4-5],被很多研究者应用到家畜个体识别领域[6-10]。文献[11-18]基于深度学习的家畜个体识别算法均取得了较好的识别效果,验证了利用深度学习识别生猪个体的可行性,为后续猪脸识别的研究提供了重要的借鉴意义。然而这些方法的共同问题是训练集和测试集中包含相同的个体,模型仅能识别训练集中出现过的生猪个体,这种方法被称为闭集识别。根据ANDREW等[19]对开集识别和闭集识别的解释,闭集识别仅能识别训练集中出现过的生猪个体,而开集识别可以识别模型从未处理过的生猪个体。张宏鸣等[20]以MobileFaceNet为基础构建开集羊脸识别模型,其准确率达到了88.06%,模型的研究虽然实现了羊脸的开集识别,但其准确率仍有待提高,且目前尚未有在猪脸识别任务中的应用。

因此,本文提出一种融合注意力机制的开集猪脸识别方法,首先设计一种开集猪脸识别框架,通过融合全局注意力机制(Global context,GC)[21]、倒置残差模块和深度可分离卷积构建轻量级的特征提取模块提取猪脸图像特征。然后融合高效的通道注意力机制(Effificient channel attention, ECA)[22]、Ghost卷积和残差网络进行特征增强模块的构建,对高层语义信息进行特征增强。最后设计新的特征提取骨干网络,优化模型的损失函数和度量方法并保存最优模型,以提高开集猪脸识别的准确率。

1 识别方法

1.1 数据采集

生猪面部图像于2018年8月在中国天津惠康种猪场采集。设计了一种基于定位栏的生猪面部图像采集系统,该系统采用三脚架将摄像机固定在距离定位栏50 cm处,高度与猪面部位置平行。实验选用分辨率1 920像素×1 080像素(HD1080)的工业摄像机拍摄自然养殖条件下的种猪视频。图像采集时间为06:00—08:00、10:00—12:00和14:00—18:00,共采集46头猪只的脸部图像。

1.2 数据预处理

从每头猪只的脸部视频中提取猪脸图像,猪脸图像在无约束条件下采集,含有大量的背景噪声,包括图像中出现的猪栏、窗户等信息,都会影响猪脸的识别效果。因此,本文利用Faster R-CNN将图像中的猪脸图像剪裁出来,然后由人工挑选猪只正脸图像,筛选猪脸数据。筛选之后的猪脸数据图像如图1所示。

图1 猪脸数据集图像

为实现开集猪脸识别,按照8∶2的比例划分生猪个数,随机选取37头猪只的脸部图像用于模型训练,利用训练集中从未出现过的9头猪只的脸部图像测试开集识别模型的准确率,猪脸数据集的图像数量分布如图2所示。因此,训练集样本共包含12 993幅图像,测试集包含3 431幅图像。随机选取测试集中每头猪只的2幅图像组成图像对,作为测试猪脸识别的正样本,每头猪只保留100对正样本图像,因此,测试集共生成900对正样本图像对。随机选取不同猪只的2幅图像组成图像对,作为测试猪脸识别的负样本对,随机保留900对负样本图像对,保证正负图像样本对数量相同。

图2 猪脸数据集的图像数量分布

1.3 MobileFaceNet

近年来,MobileNetV1和MobileNetV2等轻量级网络[23]多用于移动终端的视觉识别任务,但是由于人脸结构的特殊性,这些网络在人脸识别任务上并没有获得满意的效果。CHEN等[24]提出了一种专门针对人脸识别的轻量级网络MobileFaceNet。该模型使用全局深度卷积层(Global depthwise convolution,GDConv)来代替7×7的全局平均池化层,对不同位置根据其重要性赋予不同的权重系数。同时,实验中使用PReLU激活函数代替ReLU,选取比MobileNetV2更小的扩展因子,使模型进一步轻量化。模型训练时采用Arcface损失函数增大类间距离,减少类内距离,从而达到优化分类效果的目的。

1.4 基于轻量型注意力机制的特征提取模块(GCDSC)

猪脸图像中包含多层次语义信息,如何提取图像低层和高层语义信息是提高识别率的重点和难点。注意力机制可通过对图像中的语义信息自主学习并根据重要程度进行加权处理,筛选对识别结果有益的图像特征。本研究融合全局注意力机制(Global context,GC)、倒置残差结构和深度可分离卷积(Depth-wise separable convolution, DSC)构建轻量级的特征提取模块(GCDSC),提取猪脸图像的浅层语义信息,具体结构如图3所示。DSC模块利用深度卷积(Depthwise convolution)和逐点卷积(Pointwise convolution,PC)替代传统的标准卷积,减少模型参数量。倒置残差结构中先使用逐点卷积对通道进行升维,再利用深度卷积操作提取特征,使模型提取到丰富的特征信息,最后通过逐点卷积使输入通道与输出通道的维度保持一致,这样既能实现跨层连接,又减少了模型参数量和计算量。模型利用DSC和GC构建GCDSC模块,可以捕获远距离依赖关系,计算聚合特征中特征查询位置和所有位置的成对关系,重新校准查询位置特征的重要程度,对全局位置特征和通道特征均具有较好的重校准功能。GCDSC模块结构如图3所示,利用一个DSC模块提取聚合特征,并将不同支路的输出结果进行特征拼接,拼接后的特征输入至Context Modeling和Transform模块中建立全局特征的上下文关系,进行特征重校准。

图3 DSC和GCDSC模块架构

定义全局上下文建模整体框架为

(1)

在本文设计的GCDSC模块中,使用1×1卷积Wk和Softmax函数来获取注意力权值αj,计算式为

(2)

然后对αj进行注意力池化,获取全局上下文特征

(3)

利用Transform模块中1×1卷积Wv1和Wv2来捕获通道之间的依赖关系,对应式(1)中的δ()操作,其中2个1×1卷积层中间增加了归一化层(LayerNorm, LN)增强特征的泛化能力,激活函数选用ReLU函数,计算公式为

δ()=Wv2ReLU(LN(Wv1P()))

(4)

最后,利用加法将全局上下文特征聚合到每个位置的特征上,进行特征聚合,该模块的体系结构可以表示为

(5)

1.5 基于高效注意力机制和Ghost卷积的特征增强模块(C3ECAGhost)

重构的轻量级骨干网络降低了模型参数量并提高了参数有效性,同时也造成了一定的特征损失。因此,本文利用ECA注意力机制、Ghost卷积和残差网络设计了新的特征增强模块(C3ECAGhost),用于提取图像高层语义信息。其中,ECA和Ghost卷积均为轻量级模块,既能增强模型对猪脸图像深层特征的理解,又可避免参数量激增,其结构如图4所示。

图4 特征增强模块(C3ECAGhost)结构图

其中,GhostBottleneck结构和Ghost卷积操作如图5所示。图5a为GhostBottleneck结构图,图5a利用Ghost卷积构成GhostBottleneck模块应用在C3ECAGhost模块中提取深层语义特征。步长为1时,GhostBottleneck包含2个Ghost卷积模块,步长为2时,2个Ghost卷积模块中间增加深度可分离卷积,来减少特征图降维造成的损失。

图5 GhostBottleneck结构和Ghost卷积操作

图5b、5c为传统卷积操作和Ghost卷积操作的示意图。Ghost卷积将传统卷积分成2个步骤执行,第1步使用少量传统卷积生成m个原始特征图;第2步利用m个原始特征图经过线性运算再生成s个 Ghost特征图, 经过上述2步操作, Ghost卷积最终输出m×s个特征图,使用Ghost卷积进行特征提取所占用的参数量约为传统卷积的1/s。

1.6 开集猪脸识别方法

本研究没有采用传统的Softmax方法进行分类学习,而是抽取最后一层特征图并将其映射为特征向量,利用度量方法计算特征向量之间的距离,识别猪只个体,构建了一种开集生猪脸部识别方法,具体流程如图6所示。

图6 开集生猪脸部识别流程图

图6为开集生猪脸部识别方法,利用1.3~1.5节设计了一种改进的轻量级骨干网络,将其命名为PigFaceNet,模型具体结构如表1所示。开集生猪脸部识别方法中,112像素×112像素的猪脸图像按照1.2节的流程划分为训练集和测试集,且测试集包括1 800对图像。利用训练集训练PigFaceNet模型,经过随机丢弃(Dropout)和全连接层后输出前向推理结果,计算猪脸分类的损失值,并利用梯度下降法调整参数,保存最优模型。模型测试时,正负猪脸图像对被输入至训练好的轻量级骨干网络中得到成对的特征向量,选择欧氏距离或余弦距离作为度量方法计算两向量距离,并和最佳阈值进行比较,确定图像对是否属于同一头猪。其中,最佳阈值按照文献[19]的方式计算得到,测试时选用十折交叉验证的方式获取测试集的平均准确率。为进一步优化PigFaceNet模型,从现有损失函数ArcFace、CosFace[25]和SphereFace[26]中选择最适合用于猪脸识别的损失函数作为最优损失函数,并从欧氏距离和余弦距离两种度量方法中寻找最优度量方法,保存最优模型。

表1 PigFaceNet模型结构

2 实验结果与分析

2.1 实验参数设置

实验使用1块16 GB NVIDIA Tesla P100图形处理器进行训练,基于Ubuntu 16.0操作系统、Python 3.8和PyTorch 1.7.1搭建深度学习算法训练平台。使用CUDA API版本10.1和CuDNN版本8.0.5。将训练过程中的训练轮数设置为300轮,每次训练批次为256幅图像,初始学习率设为0.1,分别在第5、60、200轮时,学习率降为原来的1/10。

2.2 训练结果

利用猪脸数据集训练本文提出的PigFaceNet模型,每轮训练完成后在测试集中分别测试模型在余弦距离度量和欧氏距离度量下的猪脸识别准确率。其中,训练过程中各参数变化如图7所示。

图7 训练过程中各参数变化曲线

图7展示了MobileFaceNet和PigFaceNet 2个模型的训练结果,模型训练过程中分别使用余弦距离和欧氏距离作为度量方式,计算每轮训练完成后的测试结果,保存准确率最高的模型权重。随着训练轮数的增加,模型准确率整体呈上升趋势,随后逐渐趋于稳定,损失值整体呈下降趋势,最终趋于稳定。损失值在前60轮波动较大,这是由于本文采用阶段式学习策略,在第5轮和第60轮学习率降为原来的1/10,加速模型收敛。对比MobileFaceNet和PigFaceNet在训练过程中准确率的变化曲线可知,以欧氏距离为度量方法的准确率高于以余弦距离为度量方法的准确率,结果表明,对于猪脸图像来说,欧氏距离更能区别类间差异。且PigFaceNet模型搭配欧氏距离的准确率明显高于MobileFaceNet模型搭配欧氏距离的准确率,MobileFaceNet的损失值稳定在5.1左右,而PigFaceNet的损失值稳定在1.4左右,损失值有较明显的下降,验证了本文算法的有效性。

本文模型和MobileFaceNet模型的最优结果对比如表2所示,利用相同的方法和数据集训练MobileFaceNet和PigFaceNet模型,对比训练结果可知,MobileFaceNet使用不同的度量方式时,准确率不同。其中以欧氏距离为度量方法时准确率最高,为92.67%。而本文方法优化了骨干特征提取网络并将损失函数更换为SphereFace函数,搭配欧氏距离使用时,模型识别猪脸的准确率为94.28%,比改进前的MobileFaceNet的准确率提高1.61个百分点。实验结果表明,本文提出的开集猪脸识别方法具有更高的准确率,且未引起参数量的激增,既提高了猪脸识别的准确率又实现了模型轻量化,更加适用于猪场管理。

表2 不同模型的对比结果

2.3 消融对比实验

本文以MobileFaceNet为基础,在骨干网络中加入特征提取模块GCDSC和特征增强模块C3ECAGhost,构建PigFaceNet模型,然后修改MobileFaceNet的损失函数和度量方法,寻找最适合用于猪脸识别的最优组合。因此,利用控制变量法设计消融对比实验,在MobileFaceNet模型中逐步加入优化模块,构建不同的优化模型,对比消融实验结果如表3所示。

由表3可知,更换MobileFaceNet模型的损失函数可以提高其在猪脸测试集中的准确率,且模型占用存储空间不变。当在MobileFaceNet模型的骨干网络中加入GCDSC模块时得到模型2,搭配SphereFace和欧氏距离度量方法,模型2的准确率达到93.72%,比MobileFaceNet的准确率提高1.05个百分点,证明了相比于其他的损失函数,SphereFace更适用于约束猪脸特征,可增大类间差距并缩小类内差距。当模型2中加入C3ECAGhost时,猪脸图像的深层语义特征被进一步增强,模型提取到的猪脸特征更加丰富,而SphereFace特征在角空间中具有很强的可分离性,可以将同类猪脸图像特征内聚,不同类猪脸图像特征分离。因此SphereFace在模型3中表现出了较好的效果,准确率达到94.28%,准确率比模型2提高0.56个百分点,模型占用存储空间为5.44 MB,符合轻量级模型的要求。编写测试代码,测试模型1~3中骨干网络的推理时间和推理速度可知,模型3对每幅图像的推理时间比模型1的推理时间仅增加1.63 ms,每秒可推理105.09帧图像,满足真实猪场对推理速度的要求。综上所述,本文提出的两种特征增强模块可提高原始模型的特征提取能力,均提高了猪脸识别的准确率,且未引起模型参数量的激增,保持了轻量级模型的特性。同时验证了SphereFace损失函数和欧氏距离度量方法可以更好地描述猪脸特征,对于提高猪脸识别准确率有着重要作用。

表3 开集猪脸识别方法的消融对比实验结果

2.4 讨论与分析

为避免样本分类不均带来的识别误差,本文利用十折交叉验证计算平均准确率,检验模型的鲁棒性。将测试集划分为10份,每次取9份用来寻找最佳阈值,然后测试第10份在最佳阈值下的准确率,重复10次,计算每份测试集准确率的平均值,作为测试集的平均准确率。其中,余弦距离取值范围为[0,1],欧氏距离取值范围为[0,4],本文最优模型的十折交叉验证的测试结果如表4所示。

表4 最优模型的十折交叉验证测试结果

利用十折交叉验证后发现,不同测试集图像获取的最佳阈值不同,而不同最佳阈值在每份测试集中的测试结果不同,准确率最高为98.888 9%。对于猪脸图像来说,以余弦距离为度量方法的最佳阈值为0.237 5和0.245 0,而以欧氏距离为度量方法时的最佳阈值为1.600 0和1.640 0。对10份测试集准确率取平均作为该测试集的平均准确率,以余弦距离为度量方法的模型准确率为92.055 6%,以欧氏距离为度量方法的模型准确率为94.277 8%。实验结果表明,欧氏距离更适合度量猪脸图像之间的距离关系,可将不同猪只之间图像的距离拉得更远,相同猪只脸部图像之间的距离变得更小。

实际应用中无法提前获取测试集中每对图像的标签结果,无法利用前9份测试集获取最佳阈值,因此,需要提前设置好衡量猪脸图像的最佳阈值,获取整体测试集的准确率。根据表4中得到的每份测试集中的最佳阈值,将整个测试集输入至模型中获取1 800个猪脸图像对的识别准确率。

当模型以余弦距离作为度量方法时,最佳阈值取0.237 5和0.245 0,测试集准确率均为93.28%;当模型以欧氏距离为度量方法时,最佳阈值取1.600 0,测试集准确率为94.33%,最佳阈值取1.640 0,测试集准确率为93.94%。实验结果表明,固定阈值下,1 800个图像对的测试结果与表4得到的结论相同,欧氏距离更适合区分猪脸特征,且阈值为1.600 0时,猪脸特征被区分的效果最好,猪脸识别准确率最高。因此,设置余弦距离阈值为0.237 5,欧氏距离阈值为1.600 0,计算测试集中每头生猪的准确率如图8所示。

图8 固定阈值时每头生猪的准确率

由图8可知,以欧氏距离为度量方法的猪脸识别模型识别4号猪只的准确率为100%,大部分猪只的准确率高于以余弦距离为度量方法的猪脸识别模型。其中,编号为40号猪只的识别率最低,且当40号猪只分别与34号、39号、46号猪只组成图像对或与40号猪只本身图像组成正样本对时,容易导致识别错误。分析40号猪只结果可知,识别正确的正样本数占正样本总数的71.00%,而识别正确的负样本对占40号猪只负样本数的91.24%,证明影响40号猪只准确率的主要原因是类内差距较大。识别率最高的4号猪只和识别率最低的40号猪只图像对比如图9a所示,4号猪只和40号猪只均存在多角度、耳朵遮挡的问题,而40号猪只的猪脸角度和光照影响明显多于4号猪只,一方面证明了受猪只耳朵、姿态、角度和光照因素,使得类内差异大,类间差异小成为了猪脸识别的典型特征,另一方面证明了本文方法在一定程度上缩小了类内差距,为提升猪脸识别准确率提供了思路。40号猪只识别错误的正负样本样例如图9b、9c所示,40号猪只本身图像存在的多光照和多角度的问题是造成40号猪只识别率低的主要原因,本算法虽然在一定程度上提高了猪脸识别准确率,但尚未完全解决。实际应用中,开集识别可将新的猪脸图像和数据库中猪脸图像一一比对相似程度,判断未知猪只是否在数据库中出现过,可尝试在数据库中添加不同角度、光照和姿态下的猪脸图像入库,提高猪脸识别准确率。而闭集识别则默认未知猪只属于数据库中的某一头猪,无法识别数据库中未出现过的猪只,添加丰富的猪脸图像也无法解决此类问题。综上所述,本文算法提高了猪脸识别的准确率,并针对这种类内差距大的问题做了改进,在一定程度上克服了外界因素的干扰,同时也为后期猪脸识别研究提供了借鉴意义。

图9 40号猪识别错误的正样本对和负样本对样例

3 结论

(1)基于GC注意力机制、倒置残差结构和深度可分离卷积构建了轻量化GCDSC模块提取猪脸特征,模型准确率提高1.05个百分点,可以充分提取猪脸图像的低层语义特征。

(2)利用ECA注意力机制、Ghost卷积和残差网络设计的C3ECAGhost模块提取猪脸图像高层语义信息,模型准确率提高0.56个百分点,可以提取更丰富的高层语义特征。

(3)本文提出的轻量级特征提取模型PigFaceNet和开集猪脸识别方法,实现了训练集和测试集个体不交叉情况下的猪脸识别,准确率达到94.28%,比改进前MobileFaceNet识别猪脸的准确率提高1.61个百分点,模型占用存储空间仅为5.44 MB,具有准确率高、模型权重小、轻量化的特点,为非接触式开集猪脸识别提供了参考。

猜你喜欢

欧氏猪只卷积
降低日粮粗蛋白并添加单体氨基酸对断奶—育肥猪生长性能和营养排泄的影响(中)
基于3D-Winograd的快速卷积算法设计及FPGA实现
猪胃溃疡的病因与防治措施
秋冬季防应激不可忽略饮水消毒
从滤波器理解卷积
猪只硒缺乏症的预防措施和治疗方法
基于傅里叶域卷积表示的目标跟踪算法
一种基于卷积神经网络的性别识别方法
基于多维欧氏空间相似度的激光点云分割方法
三维欧氏空间中的球面曲线