联合损失优化下的高相似度奶山羊身份识别

2022-04-24 09:53尚诚王美丽宁纪锋李群辉姜雨王小龙
中国图象图形学报 2022年4期
关键词:奶山羊损失个体

尚诚,王美丽,2,3*,宁纪锋,李群辉,姜雨,王小龙

1.西北农林科技大学信息工程学院,杨凌 712100;2.农业农村部农业物联网重点实验室,杨凌 712100;3.陕西省农业信息与智能服务重点实验室,杨凌 712100;4.长安大学理学院,西安 710064;5.西北农林科技大学动物科技学院,杨凌 712100

0 引 言

在现代化养殖与育种工作中,畜牧业作为农业发展中至关重要的一个分支,特别是对于中国西北地区来说,提高畜牧业的智慧发展程度更是提高农村经济和农业生活水平的关键。对个体实时检测和识别是智慧养殖中亟需解决的首要问题,通过对动物个体或群体的实时信息掌握,可以预警突发事件,也可以通过构建不同的评价指标实时掌握动物个体的健康状况。同时,个体识别也是实现大数据管理蓄种的基础技术之一。

牲畜的传统身份标记方法分为具有永久性损伤的刻烙印法、耳标外置标签法及外置RFID(radio frequency identification)设备标签等。传统标记动物方法,无论是刻耳烙印或耳标外置等都容易对动物造成不同程度的伤害。刻烙印法对动物刺激很大,会对牲畜造成一定伤害,如图1(a)所示。耳标外置标签法不仅会使动物耳部易发生感染,也会因为动物本身活动导致耳标丢失等,如图1(b)所示。

图1 传统动物识别技术Fig.1 Traditional animal marking methods((a)engraving method;(b)external ear tag method)

刘冬等人(2016)提出对动物个体进行实时信息掌握和群体信息实时跟踪,有助于对突发事件进行紧急预警,且多项指标的动态更新有利于畜种生产性能的预测,从而及时了解个体的健康状况。个体识别技术是实现智慧农业管理畜牧类动物的基础。本文以西北农林科技大学萨能奶山羊为研究对象,提出一种基于深度学习识别动物个体的方法,通过对原始奶山羊数据集进行预处理,在不丢失奶山羊身体特征信息的基础上降低背景干扰,然后通过残差网络进行奶山羊身体特征学习,最后提出针对奶山羊个体特征适用的三元组损失函数与交叉熵损失函数组合而成的联合损失函数,结合调参得到最终的训练结果。本文主要贡献如下:1)利用Triplet-Loss与CrossEntropy-Loss联合优化的方法,使网络在多个函数联合优化下增强识别能力,提高奶山羊个体识别的准确率。2)研究中的奶山羊图像采用SSD(single shot MultiBox detector)进行数据集的预处理,提高数据集的质量,减小了数据集中无关背景的影响。3)通过孪生网络(siamese network)验证奶山羊的个体之间的相似度高的特点,加强Triplet-Loss方式的训练效果,从而提高奶山羊个体身份识别的准确率。

1 相关工作

动物个体识别与人脸识别相似,均属于图像分类研究,并且人脸识别的分类算法与本项目中的奶山羊个体身份识别类似,二者均需要进行特征提取,将分类器统一在一个环境之下,最后分析个体的图像特征并进行分类,所以本研究中的奶山羊个体身份识别可以借鉴人脸识别算法。

1.1 基于DeepFace、DeepID与DeepID2的人脸识别算法

Taigman等人(2014)提出了基于卷积神经网络的人脸识别方法DeepFace,该算法采集4 000个人的人脸图像进行训练,并利用3D模型对人脸图像等进行对齐,用于训练的神经网络共9层,整个训练过程中前2个卷积层采用共享卷积核,后3个卷积层采用不共享卷积核,倒数第2层采用全连接层提取出对应的人脸特征,最后一层是1个softmax分类层。该方法在公开人脸数据集LFW(labled faces in the wild)上准确率为97.25%。Sun等人(2014a,b)提出了DeepID(deep hidden identity features)和DeepID2等方法,使用人脸验证与分类进行网络训练,在公开人脸数据集LFW上测试效果分别为97.45%与99.15%。但是,由于DeepFace需要采取不同的训练方式才能保证准确率,而奶山羊的养殖会存在定期购进或其他方式增加奶山羊数量问题,所以上述烦琐过程不适合应用于畜牧业养殖。对于DeepID与DeepID2,当数据库中存在大量干扰人脸时,会对辨识率和准确率造成影响,尤其在姿态识别上。本项目中奶山羊个体属于十分活跃的识别目标,姿势动作随机且多变,由于奶山羊的好动特点,难以采集固定的姿势图像,且本项目数据集中可能存在多只羊或包含人的非单只羊图像,所以该类网络不适合本项目。

1.2 基于one-shot learning的人脸识别算法

Vinyals 等人(2016)提出了一种人脸识别算法one-shot learning,可以在训练样本不足的情况下实现较为精准的分类。该算法的主要贡献在于提出了matching networks,将注意力机制和记忆机制引入快速学习任务,每个类别中仅用很少样本进行训练便可以取得较好效果,解决了无法获得大量有效数据集的应用场景问题。但本研究中奶山羊的检测和识别数据需要实时获得,不适用于光照强度不同和侧身角度不同以及含有遮挡等情况,同时因为数据样本过少,无法做到实时检测以及准确识别。

1.3 基于孪生网络的人脸识别算法

Chopra 等人(2005)提出了孪生网络(siamese network),由两个相同的卷积神经网络组成,输入图像后,将两个网络的计算结果反馈给对比损失函数,计算两个输入图像之间的相似度。基于孪生网络的人像识别,主要是将同一个人的不同图像及非同一个人的多幅图像作为训练数据,通过网络学习人脸部位的特征信息。但是由于孪生网络更适合区别非同一人的两幅图像的特征信息,所以对同一个人的识别率较低,并且应用到非人脸识别时的阈值无法确定,故不适用奶山羊的身份识别。

1.4 基于Facenet的人脸识别算法

Schroff 等人(2015)提出了人脸识别算法Facenet,将独特的Triplet-Loss与特有的hard-batch组合应用到人脸识别领域,取得了很好效果。该算法以图像在多维空间的映射距离作为相似度的评价标准,即在同一个人的两幅人脸图像的多维空间中空间距离小于非同一个人的两幅人脸图像的多维空间中的空间距离。具体的做法是将两幅未知是否为同一个人的人脸图像利用神经网络将其映射到欧氏空间上,通过计算不同输入图像的多维空间的空间距离对比判断是否为同一人。该网络采用hard-batch组合,取得了很好的识别效果,但是应用于非人脸识别(如动物的个体识别)却不能达到预期效果,因为无法像人脸一样提取到足够的特征。出于实际的农业畜牧业发展对精准度的要求,该应用在准确率上不能满足需要,加之其仅能识别正脸图像的局限性,故单纯的Facenet的Triplet-Loss方法不足够用于本研究。本研究将在Triplet-Loss的基础上进行改进,利用Triplet-Loss独特的损失函数结构构造联合损失函数,使网络在联合损失的基础上增强表征能力。

1.5 动物个体的识别方法

近些年,研究者针对家畜展开了多项研究。刘伟等人(2020)提出利用SSD网络对猪个体进行检测,为后续其他物种个体识别的研究奠定了基础。秦兴和宋各方(2019)提出了基于卷积神经网络的猪脸识别算法,将神经网络改进为双线性模式并采用迁移学习方式对200头猪进行特征学习,可以应对不同的复杂环境等问题,但是该算法需要通过人工手段对特征进行分割。

针对奶牛个体的识别,梁坤和张哲纯(2013)、陈红莉(2016)、蒙贺伟等人(2015)、张海峰和沈媛萍(2012)应用了RFID技术,但是其成本仍不可忽略。张满囤等人(2018)采用特征图融合的方式对奶牛个体进行识别。黄俊华和田壮(2019)选取改进的VGG-16(Visual Geometry Group network 16-layer)卷积神经网络方法对奶牛个体进行识别。

关于羊个体检测识别的研究较少,部分研究者对羊的声音进行了深入研究。宣传忠等人(2015,2016a,b)以声音作为依据,对于羊的行为、疾病特征做出准确判断,为羊个体识别奠定了基础。

本研究对高相似度奶山羊的个体识别进行研究,为奶山羊躺卧时间过久且不进食以及频繁打斗等异常行为的预警提供基础。

2 算法实现

本文的技术路线如图2所示,首先采用SSD网络的边界框识别,对奶山羊的个体进行检测,切割裁剪预处理后作为实验的数据集;然后利用残差神经网络ResNet18(residual neural network)对奶山羊的数据进行特征分析;最后利用联合损失函数对网络的学习进行评价,通过相关调参以及实验对比得到最佳效果。

图2 技术路线图Fig.2 Technology road map

2.1 利用SSD网络对奶山羊数据集预处理及扩容

为减少图像背景信息的干扰,并尽可能地保证奶山羊个体的身体特征信息完整,本研究首先通过对SSD网络(刘冬 等,2016)检测后的目标进行切割,重新形成数据集,然后对数据集不平衡部分,采用翻转、旋转、调整对比度、调整亮度以及调整色度饱和度、Fancy PCA(fancy principal components analysis)等方式对数据集扩容,保障其三元组损失函数中需要的negative对和positive对的数据集组合的完整与丰富。

SSD的网络结构中第1部分为VGG-16结构,主要目的是提取低尺度的特征映射图;第2部分为连接上一部分网络输出的特征映射图,通过卷积神经网络输出4个高尺度的特征信息,主要任务是提取高尺度的特征映射图;第3部分是预测特征映射图中每个点的矩形框信息和所属类信息。对应的损失函数由预测框位置的损失和预测类的损失组成。

在本实验中,采用SSD网络预训练模型,对奶山羊的数据集进行初步检测,预处理结果如图3(a)(b)所示,在检测出奶山羊个体的同时,对个体进行边界框的切割处理,如图3(c)所示。

图3 利用SSD网络对数据集进行预处理Fig.3 Use SSD network to preprocess the dataset((a)input image;(b)SSD network detection effect;(c)image detected and cut by SSD)

2.2 利用残差神经网络对奶山羊特征进行学习

奶山羊具有个体间相似度高的特点,所以训练模型需要较深层次的网络结构,但是较深层次的网络结构会带来梯度消失和梯度爆炸问题,故本研究选取残差神经网络(ResNet)(He等,2016)。ResNet利用快捷连接(shortcut connection)加深网络结构,有效解决了上述问题。该结构不仅可以在相邻的网络层之间建立连接,也可以完成跨层连接,这种神经网络不仅计算量小,并且可以使深度层数明显增加。本研究中奶山羊的身份识别算法中的网络结构部分使用基于ResNet18的预训练网络模型作为初始化网络进行迁移学习,而并非随机初始化网络参数。网络结构ResNet18,数字代表网络深度,18表示17层卷积层和1层全连接层,不包括池化层和批归一化(batch normalization,BN)层。实验表明,采用残差神经网络作为网络结构,孪生网络的识别效果得到了很好提升。

2.3 利用联合损失函数作为网络的损失函数

2.3.1 Triplet-Loss训练

由于奶山羊个体之间相似度高,因此高质量的数据集是十分重要的,然而奶山羊天性胆小好动,很难配合拍照人员采集数据,获取大量有效的奶山羊图像具有一定的挑战性。本文在数据集较少却需要获得较高的分类效果方面,采用Triplet-Loss作为损失函数训练数据,通过增大困难三元组(hard-batch)的方式组建数据组合,从而解决因数据集不足引起的识别不精准问题。

图像经过ResNet18网络结构之后,由特征矩阵提取信息,再经过L2范数完成归一化,映射为一个128维的特征向量,然后由Triplet-Loss完成最后的训练。Triplet-Loss可以将属于同一个体的样本之间的差距缩小,将非同一个体的差距扩大。奶山羊个体训练过程如图4所示,图像anchor和positive是同一只但最不像同一只羊的不同图像,anchor和 negative是不同羊的相似图像,其三元组损失函数为

图4 奶山羊个体训练过程Fig.4 Training process on individual dairy goats

(1)

从式(1)可以看出,损失函数使图像anchor与positive在高维空间中的距离更近,与negative的距离更远。

对于Triplet-Loss中可以起到有效分类的hard-batch组合,siamese network网络的实验结果表明,奶山羊本身为高相似度的个体不需要再额外区分hard-batch组合。

2.3.2 CrossEntropy-Loss分类

交叉熵损失函数在常见多分类问题中应用广泛,本研究采用交叉熵损失函数作为联合损失函数的组合部分。交叉熵用来衡量概率之间的距离,从而判断其差距的大小,交叉熵的值越大,概率分布越远;值越小,分布越近。假设概率分布p为期望输出,概率分布q为实际输出,则交叉熵H(p,q)为

(2)

式中,x是离散型随机变量。

例如,本研究共3只奶山羊,记N=3。若期望输出p=(1,0,0),实际输出q1=(0.4,0.5,0.6),q2=(0.5,0.5,0.6),则H(p,q1)=0.92,H(p,q2)=0.82。

可以看出,q2与p交叉熵更小,两者概率分布更接近。

交叉熵计算结合了LogSoftmax函数与NLLLoss函数,即

(3)

式中,x为随机变量,p(x)和q(x)分别为两个单独的概率分布。

损失函数为

(4)

式中,x为数据的条数,class表示分类的数量。

利用CrossEntropy-Loss 作为损失函数解决了奶山羊多分类问题。

2.3.3 联合损失函数

联合损失函数将多类损失函数结合起来,对整体结果起到联合优化效果,本研究采用Triplet-Loss与CrossEntropy-Loss联合优化的方式,使网络在多个函数联合优化下,提高表征能力。具体为

lossall=λlosstriplet+ηlossCrossEntropy

(5)

式中,lossall表示本研究的损失函数,losstriplet代表三元组损失函数,λ为三元组损失函数的参数,取λ=0.5,lossCrossEntropy代表交叉熵损失函数,η为交叉熵损失函数的参数,取η=0.5。

3 实验结果分析与对比

对经SSD预处理和未经SSD预处理的数据集进行训练并测试,然后在萨能奶山羊高相似度数据集上对YOLOv3(you only look once)(Redmon和Farhadi,2017)、siamese network、ResNet18(损失函数Triplet-Loss)、ResNet50(损失函数Triplet-Loss)、ResNet18(损失函数CrossEntropy-Loss)、ResNet18(联合损失函数)和ResNet50(联合损失函数)等网络进行对比实验,每组实验结果为同一参数10次实验中最佳结果。

3.1 数据集预处理实验对比

采用SSD网络对数据集预处理,参数设置批大小为32,迭代轮次为11,学习率为0.001,优化器采用自适应矩估计(Adam)优化器,随机种子的值为1,随机将输入张量中部分元素设置为0的概率为0.2,用于计算梯度以及梯度平方的运行平均值的系数为(0.9,0.99)。ResNet18模型在经SSD网络预处理和未经SSD网络预处理的数据集上的效果对比如表1所示,可以看出,对数据集进行预处理可以有效提升预测准确率。

表1 在预处理和未预处理数据集上的准确率比较Table 1 Comparison of accuracy between on preprocessed dataset and not

3.2 YOLOv3网络实验对比

采用YOLOv3网络对数据集特性进行初步验证,参数设置批大小为64,一次性送入训练器的样本数量为4,学习率为0.000 5,最大迭代次数为32 000,动量设置为0.9,权重衰减设置为0.000 5,曝光量调整的值为1.5,学习率的调整策略为steps方式,饱和度调整的值为1.5,色调调整的值为0.1。

本文通过网络获取了贵州白山羊、湖羊、滩羊、新疆细毛羊和小尾羊等不同品种羊的图像。YOLOv3网络对不同品种羊个体的检测效果如表2所示,羊的编号代表一个品种的羊。可以看出,YOLOv3可以完成相关品种的基础区分,但效果较差,如表2中除新疆细毛羊和奶山羊外,其他羊品种区分效果不理想,说明不同品种的羊个体之间特征区分不显著。

表2 YOLOv3网络对不同品种羊个体检测效果Table 2 Individual detection results of different breeds of sheep by YOLOv3

YOLOv3网络在奶山羊数据集的测试结果如表3所示,个体编号代表一只奶山羊。实验目的是衡量学习出来的模型在羊数据集每个类别或同品种情况下每只羊的检测精度。可以看出,仅对奶山羊数据区分时,精确度为0(表3),从侧面印证了奶山羊个体图像相似性极高的特点。

表3 YOLOv3网络对同品种奶山羊个体身份检测效果Table 3 Results of individual identification of the same breed of dairy goats by YOLOv3

从表2和表3可以得到如下初步结论:羊的分类无论是区分不同品种还是从同类品种中区分不同个体都具有较高难度,YOLOv3网络不能作出足够的识别。

3.3 Siamese network实验对比

采用孪生网络在奶山羊数据集上分别以随机梯度下降(stochastic gradient descent,SGD)、RMSprop(root mean square prop)和Adam(adaptive momentum)为优化策略进行实验,结果如表4所示。可以看出,优化策略为RMSprop时的准确率为52.6%,较另外两种方式有更有效的提升。3种策略中,结合多种优化算法的Adam的准确率较差。实验结果表明应该选择RMSprop策略。

表4 孪生网络采用不同优化策略的精确度对比Table 4 Comparison of accuracy among different optimization strategies by siamese network /%

针对奶山羊脸部相似度高的特点,采用VGG网络对奶山羊脸部和整只奶山羊图像进行对比,实验结果如表5所示。可以看出,即使调整了网络结构,孪生网络的准确率也无法进一步提升。然而,相较于仅学习脸部特征,将羊整体特征进行网络学习更有效。

表5 VGG网络对羊脸和羊整体的检测结果Table 5 Experimental results of sheep face and whole sheep by VGG network /%

3.4 Triplet-Loss实验对比

将Triplet-Loss作为损失函数,以VGGFace和ResNet作为网络结构分别对羊脸和羊整体进行数据训练并进行验证,参数设置批大小为32,迭代轮次为40,学习率为0.001,采用Adam优化器,实验结果如表6所示。可以看出,Triplet-Loss作为损失函数时准确率得到较好的提高,并且羊整体图像识别效果优于仅靠脸部进行学习的效果。实验结果表明,进行高相似度奶山羊个体识别时更换损失函数是必要的,但是准确率依然没有达到理想精度。

表6 Triplet-Loss为损失函数时采用迁移学习的实验结果Table 6 Experimental results of transfer learning with Triplet-Loss as loss function /%

3.5 CrossEntropy-Loss实验对比

将CrossEntropy-Loss作为损失函数,采用网络结构ResNet18分别以SGD与Adam为学习率优化策略对羊整体识别进行对比。随机梯度下降(SGD)优化器为学习率优化策略的实验参数批大小为32,迭代轮次为11,学习率为0.005,动量设置为0.9,随机种子的值为1,随机将输入张量中部分元素设置为0的概率为0.2;自适应矩估计(Adam)优化器算法为学习率优化策略的实验参数批大小为32,迭代轮次为11,学习率为0.005,随机种子的值为1,随机将输入张量中部分元素设置为0的概率为0.2,用于计算梯度以及梯度平方的运行平均值的系数为(0.9,0.99)。实验结果如表7所示,可以看出,CrossEntropy-Loss作为损失函数时准确率相比三元组损失函数得到明显提高。实验结果表明,调整损失函数可以达到较高的准确率。但Triplet-Loss作为损失函数在一定程度上对本项目数据集具有不可忽略的积极作用,所以考虑将两个函数作为联合损失函数。

表7 CrossEntropy-Loss为损失函数时不同优化策略的识别结果Table 7 Experimental results of different optimization strategies under Crossentropy-Loss function

3.6 联合损失函数实验对比

将Triplet-Loss和CrossEntropy-Loss两种损失函数结合作为损失函数,分别利用网络结构Resnet18和Resnet50,以SGD、Adam和RMSprop为学习率优化策略对羊整体识别进行对比。SGD为学习率优化策略的实验参数批大小为32,迭代轮次为11,学习率为0.005,动量因子为0.9,随机种子的值为1,随机将输入张量中部分元素设置为0的概率为0.2;自适应矩估计(Adam)优化器算法为学习率优化策略的实验参数批大小为32,迭代轮次为11,学习率为0.001,随机种子的值为1,随机将输入张量中部分元素设置为0的概率为0.2,用于计算梯度以及梯度平方的运行平均值的系数为(0.9,0.99);前向均方根梯度下降(RMSprop)优化器算法为学习率优化策略的实验参数批大小为32,迭代轮次为11,学习率为0.000 5,动量因子为0.9,随机种子的值为1,随机将输入张量中部分元素设置为0的概率为0.2,平滑常数为0.9。实验结果如表8所示,可以看出,采用联合损失函数为损失函数,以Adam为学习率优化策略,残差神经网络ResNet18取得了最好的效果。

表8 不同网络结构采用联合损失函数在不同优化策略的羊整体识别实验结果Table 8 Experimental results of sheep body recognition with different optimization strategies and different network structures under joint loss function

采用联合损失函数作为损失函数,参数λ和η取不同值时ResNet18网络的实验结果如图9所示。实验参数批大小为32,迭代轮次为11,学习率为0.001,自适应矩估计(Adam)优化器算法为学习率优化策略,随机种子的值为1,随机将输入张量中部分元素设置为0的概率为0.2,用于计算梯度以及梯度平方的运行平均值的系数为(0.9,0.99)。从图9可以看出,当参数λ=0.5,η=0.5时,萨能奶山羊数据集的训练与测试效果最佳。

4 结 论

为了实现高相似度奶山羊个体识别,本文提出了一种基于改进的Triplet-Loss方法,通过实验验证了方法的有效性和可行性,得到以下结论:1)通过孪生网络与YOLOv3网络测试可知奶山羊脸部相似度高,所以需要更多的特征完成识别,故选择完整奶山羊个体图像而非奶山羊的脸部图像。2)本研究在Triplet-Loss的hard-batch组合问题上,利用YOLOv3和孪生网络验证了奶山羊个体之间不仅面部图像的相似度高的问题,也证明了其本身物种具有高相似度的特点,从而不需要再单独制作hard-batch。3)基于Triplet-Loss与CrossEntropy-Loss联合优化的方法,使网络在多个函数联合优化下增强了表征能力。4)相较于传统方法,本文方法选择了无接触、低成本、高收益和无伤害的深度学习方法,优于传统的动物个体标记识别办法。5)本研究中的奶山羊图像采用SSD进行图像处理,从而提高数据集的质量,尽可能缩小无关背景的影响。6)本文方法仍存在不足,如仅利用相关网络实现单个奶山羊的个体识别。今后将考虑引入Mask R-CNN (region convolutional neural network)等网络结构对羊群进行掩膜处理,实现多个奶山羊的个体识别。

表9 参数λ、η取不同值时ResNet18模型的实验结果Table 9 Parameters λ and η are the experimental results with different value

猜你喜欢
奶山羊损失个体
关中奶山羊与阿尔卑斯奶山羊杂交后代乳品质研究
洪涝造成孟加拉损失25.4万吨大米
行为免疫系统对个体就医行为倾向的影响*
奶山羊泌乳期的饲养管理
两败俱伤
杨凌全力打造奶山羊百亿元全产业链
明确“因材施教” 促进个体发展
损失
How Cats See the World
那些损失上百万的演员