司永胜 王朝阳 张 艳 王克俭 刘 刚
(1.河北农业大学信息科学与技术学院, 保定 071001; 2.河北省农业大数据重点实验室, 保定 071001;3.中国农业大学农业农村部农业信息获取技术重点实验室, 北京 100083)
在现代奶牛养殖管理中,准确可靠地识别每头奶牛具有重要意义[1-2]。奶牛个体识别是智能挤奶、健康监测、行为识别分析等奶牛精准管理的基础[3]。
通过肉眼进行人工奶牛个体识别因存在费时、费力等缺点[4],逐渐被射频识别技术(RFID)所取代。部分养殖企业采用了基于RFID的电子标签进行奶牛个体识别。电子耳标只能在接近读卡器的位置被识别。此外,电子耳标易脱落和损坏、易受到外部电磁环境干扰、成本较高[5]。基于计算机视觉的个体识别具有非接触、成本低、不易引起牲畜应激反应等优点[6-7]。
基于机器视觉技术的奶牛个体识别[8-9]方法可分为两种:传统的人工提取图像特征,然后利用机器学习方法进行分类[10];基于深度学习方法提取深度特征,对奶牛个体进行识别[11]。在使用传统特征对奶牛识别方面,LI等[12]采集尾根部图像,提取Zernike不变矩特征,利用SVM对奶牛进行个体识别,识别准确率为99.6%。蔡骋等[13]提出用自适应级联检测器定位牛脸位置,用统计迭代模型提取牛脸轮廓,实现了肉牛的面部轮廓提取。XIAO等[14]提取奶牛背部花纹的特征,对特征进行选择后使用SVM对奶牛个体进行识别,识别准确率为98.67%。随着深度学习研究的深入,基于深度学习技术提取深度特征对奶牛进行识别取得了较大的进展。HU等[15]使用YOLO算法对奶牛个体进行定位,然后利用分割算法将牛身体分为头、躯干和腿部3部分,使用神经网络分别进行特征提取,利用SVM对奶牛进行个体识别,识别准确率为98.36%。何东健等[16]改进YOLO模型,利用奶牛背部花纹对通过挤奶通道的奶牛进行识别,识别准确率为95.91%。
上述研究大部分是在奶牛处于挤奶厅或过道等位置的限制性条件下的识别,奶牛和相机的位置和角度固定,花纹变化较小。非限制性条件下奶牛个体识别具有较强的实际意义,但由于奶牛姿态的变化、拍摄角度和相对位置的变化,识别难度较大。TASSINAIR等[17]利用奶牛两个侧面的花纹信息,基于YOLO对牛舍中自由活动的非限制性条件下的奶牛进行识别,识别准确率为75.59%,识别率较低。大部分研究都是单独利用人工提取的传统特征或单独利用深度学习提取深度特征进行识别。深度学习方法能很好地描述低级特征和高级特征,但在提取局部空间特征方面不如传统的特征提取可靠[18]。有研究证实了深度特征与传统的互补性,将二者融合可以有效提高识别准确率[19]。
奶牛个体识别对提高奶牛福利和养殖效率具有重要意义。本文以非限制条件下的站立和躺卧姿态的奶牛为研究对象,将利用深度学习提取的深度特征和人工提取的传统特征相融合,进而利用融合后的特征进行奶牛个体识别,以期为实现奶牛行为智能分析、疾病检测、牛奶溯源和精准饲喂等提供技术支持。
本文视频数据采集自河北省保定市宏达牧场,2021年11月8—11日连续4 d。图像采集时间为08:00—17:00,采集58头荷斯坦奶牛在活动区活动和在休息区躺卧的奶牛图像,图1为图像采集示意图。
图1 数据采集示意图Fig.1 Data acquisition diagrams
本文实验牛舍长25 m,宽15 m,为避免遮挡,采集奶牛的俯视视频。4个摄像头(DH-IPC-HFW4838M-I)安装在休息区和活动区上方的横梁上,如图1a所示,安装位置距地面7.5 m,摄像头与水平方向夹角约80°,确保4个摄像头拍摄范围能覆盖整个实验牛舍,图1b为图像采集现场环境。
采集视频的分辨率为2 560像素×1 440像素,帧率为25 f/s。在每个摄像头拍摄的视频中随机选取4 000幅图像,用于奶牛图像的分割,4个摄像头共选取16 000幅图像,其中活动区8 000幅,休息区8 000幅。图1c、1d分别为活动区和休息区采集到的图像,活动区的奶牛可能出现在该区任意位置,同时,休息区的奶牛也可以随意选择卧床位置,这都导致了奶牛在图像中的位置不固定。出现在图像中不同位置的同一头奶牛花纹图案有较大变化。服务器配置为Intel Xeon Silver 4208 CPU, Nvidia GeForce RTX 3090 GPU。图像分割、深度特征与传统特征提取均使用Python语言编写,传统特征选择及奶牛分类均在Matlab R2017b上实现。
Mask R-CNN已经被验证可较好地用于复杂环境下的奶牛分割[20-21],本文采用Mask R-CNN对奶牛的躺卧和站立姿态进行识别和图像分割,识别和分割结果如图2所示。由于头部的晃动会造成花纹特征不稳定,对站立姿态和躺卧姿态的奶牛都提取躯干部为感兴趣区域。图2a为Mask R-CNN对不同姿态奶牛检测到的感兴趣区域。
图2 Mask R-CNN检测结果及分割后的奶牛图像Fig.2 Mask R-CNN detection results and segmented cow images
对于休息区和活动区采集到的奶牛图像,按照7∶2∶1的比例划分为训练集、验证集、测试集。本文使用Labelme对训练集和验证集图像进行标记。由于牛舍中奶牛会出现站立、朝左侧躺卧、朝右侧躺卧3种姿态,因此对奶牛进行标记时将图像标签分为站立、朝左侧躺卧和朝右侧躺卧3种。为加快模型的训练过程以及防止过拟合,批量大小(Batchsize)设置为2,学习率设置为0.001,权重衰减设置为0.000 1,冲量设定为0.9,交并比(IOU)设定为0.7,置信度设定为0.7,迭代次数设置为500。利用训练集、验证集图像训练Mask R-CNN模型,然后利用训练后的模型对测试集图像进行识别分割,自动输出识别为朝左侧躺卧、朝右侧躺卧和站立的图像。在图2a中识别为站立姿态并以浅蓝色标注的奶牛的分割效果如图2b所示,在图2a中识别为躺卧姿态并以黄绿色标注的奶牛分割效果如图2c所示。
由于奶牛图像方向和大小不同,参考文献[14]的方法将分割后的奶牛图像标准化。标准化后的奶牛图像头部朝向相同,尺寸为256像素×64像素。
由每头奶牛标准化的图像中分别随机选取100幅背部图像、100幅左侧躺卧图像和100幅右侧躺卧图像,用于奶牛特征提取及识别。58头奶牛共计选取17 400幅图像。然后将随机选取的17 400幅图像按照7∶3的比例随机划分为特征提取的训练集和验证集。
奶牛的特征融合及识别过程如图3所示。分别由两条路径提取奶牛的特征:由CNN提取Softmax层概率向量形式的深度特征;人工提取并采用NCA选择的传统特征,并将其输入SVM模型后输出概率向量。即两条路径得到的特征都是概率向量的形式。将上述概率向量形式的特征融合后再次输入SVM分类模型,得到最终的奶牛个体识别结果。
图3 奶牛特征融合及个体识别Fig.3 Feature fusion and individual recognition of dairy cows
荷斯坦奶牛仅有黑白两种底纹,其颜色特征不明显,但有丰富的花纹特征,因此本文提取奶牛花纹形状特征。利用OTSU法将选取的标准化后的图像转化为二值图像[22],提取二值图像中的花纹形状特征。
2.1.1Hu矩特征
Hu矩是归一化矩的线性组合,Hu矩具有旋转、平移、缩放不变性,本文选取Hu矩作为奶牛图像特征。
Hu矩由不变矩与中心矩构成。大小为M×N的二值图像由f(x,y)表示,则p+q阶不变矩和中心矩的公式为
(1)
(p,q=0,1,2,…)
(2)
(3)
(4)
式中M、N——原始图像的长度、宽度
(x,y)——图像坐标
p、q——矩的阶数
f(x,y)——坐标(x,y)处的像素值
mpq——图像p+q阶不变矩
μpq——图像p+q阶中心矩
(x0,y0)——图像矩心坐标
归一化中心矩定义为
(5)
式中ypq——p+q阶归一化中心矩
μ00——图像0阶中心矩
利用二阶和三阶中心矩构造7个不变矩,分别定义为
I1=y20+y02
(6)
(7)
I3=(y30-3y12)2+(3y21-y03)2
(8)
I4=(y30+y12)2+(y21+y03)2
(9)
I5=
(y30-3y12)(y30+y12)[(y30+y12)2-3(y21+y03)2]+
(3y21-y03)(y21+y03)[3(y30+y12)2-(y21+y03)2]
(10)
I6=(y20-y02)[(y30+y12)2-(y21+y03)2]+ 4y11(y30+y12)(y21+y03)
(11)
I7=
(3y21-y03)(y30+y12)[(y30+y12)2-3(y21+y03)2]-
(y30-3y12)(y21+y03)[3(y30+y12)2-(y21+y03)2]
(12)
式中I1、I2、…、I7——Hu矩特征值
计算每个奶牛图像的7个Hu矩特征,形成Hu矩特征向量。
2.1.2全局形状特征提取
由于奶牛处于非限制条件下,随着拍摄距离和角度的变化,奶牛全局花纹会有些变化,但有部分特征可能变化较小。
(1)连通域个数
奶牛白色花纹数量是花纹特征中比较稳定的属性。本文统计奶牛二值化图像中白色花纹的连通域数量作为全局特征。
(2)白色花纹面积
奶牛白色花纹面积反映白色花纹绝对数量。
(3)黑色花纹和白色花纹面积比值
黑色和白色花纹的比值体现了奶牛白色花纹相对数量。
(4)花纹投影特征
奶牛花纹投影特征反映奶牛花纹的整体分布情况。对奶牛二值图像的白色像素分别进行水平和垂直两个方向的投影,得到投影直方图。如图4所示,利用OTSU法将站立奶牛背部图像(图4a)转换为二值图像(图4b),然后将奶牛的二值图像进行投影,得到奶牛的垂直投影直方图(图4c)。
图4 奶牛白色花纹投影特征提取Fig.4 White pattern projection feature extraction of dairy cows
2.1.3局部花纹特征提取
奶牛具有多个花纹,但最大花纹最容易检测且相对稳定,本文提取最大花纹的面积、矩形度和长宽比作为局部特征信息。其中矩形度可以体现目标对其外接矩形的充满程度,用目标的面积与最小外接矩形的面积之比来描述。最大花纹的最小外接矩形的长宽比是表征最大花纹形状的另外一个特征。
NCA是一种属于Filter的特征选择的非参数方法,其目标是最大限度地提高回归和分类算法的预测精度。NCA基于给定的距离度量算法对样本进行度量,借助度量学习中的马氏距离概念,使用fscnca函数通过正则化进行NCA特征选择,输出每个特征的特征权重,特征权重表示所提取特征的重要性。
基于提取的传统特征和特征权重的大小,利用SVM对奶牛个体进行预测,所有特征子集用于训练多个SVM分类器,将识别准确率最高的SVM分类器对应的特征子集确定为最佳特征子集。最佳特征子集在SVM分类器中的输出即为传统特征对应的概率向量。
相对复杂的深度学习模型要求海量的样本避免过拟合的问题。在数据量相对有限的情况下,AlexNet模型比VGGNet和ResNet在奶牛特征提取上表现更优[23-24]。本文选择AlexNet进行深度特征提取。
AlexNet在ImageNet的分类任务中有较高的分类性能。为了提取站立和躺卧姿态下奶牛图像的深度特征,分别训练了两个经过微调的AlexNet模型。使用ImageNet上预训练的权重作为模型的初始参数,通过微调最后两层参数生成一个新的模型[25]。利用训练后两个模型分别提取相应的深度特征,即Softmax层的特征。
为了加快模型的训练速度以及防止过拟合,Batchsize设置为64,学习率设置为0.01,当模型的损失函数小幅波动时,将学习率变为原来的1/10。
如图3所示,训练后的CNN模型输出的带有Softmax激活的深度特征为概率向量的形式。利用NCA特征选择后的传统特征训练的SVM模型也输出概率向量。采用特征加权求和、特征值求和和特征最大值3种融合方法将上述两种概率向量相融合,使用融合后的概率向量(即融合特征)训练SVM模型并对奶牛进行个体识别,根据奶牛识别的结果,选取最佳融合策略。
将融合后的特征向量用于训练新的SVM模型,然后将验证集中的融合特征输入到该SVM模型中进行分类[19],得到最终的识别结果。本文采用径向基函数建立SVM模型,惩罚系数C与gamma参数为最优经验值,采用奶牛识别的准确率作为模型性能的评价指标。
图5展示了传统特征在奶牛识别中的权重,其中图5a、5b分别为使用NCA特征选择后站立和躺卧姿态下奶牛传统特征权重。两种姿态下,白色花纹投影Pw、Hu矩特征中的I1、黑白花纹面积比值Rbw、最大花纹的矩形度Rrec、长宽比Rlw、最大连通域面积Amax、白色花纹面积Aw、Hu矩特征中的I2和白色花纹连通域个数Ncd是权重最高的9个特征,其中Pw、I1、Rlw、Amax和Ncd5个特征在两种姿态下权重排序相同。Rbw和Rrec处于权重排序的3、4位,Aw和I2处于权重排序7、8位,但在两种姿态下颠倒次序。Hu矩中的I1和I2权重较大,I3~I7权重较小。具体说明不同阶次的矩描述不同目标的属性,低阶Hu矩提供图像的基本形状和描述目标的细节和复杂性[26]。但高阶矩容易受到噪声的影响。
图5 奶牛图像传统特征权重Fig.5 Traditional feature weight of cow image
根据特征权重,依次按照由高到低的顺序,逐步累加特征,首先使用权重最高的单个特征进行识别,接着将权重次高的特征加入,获得奶牛识别结果。依此类推将特征加入后奶牛的识别结果如图6所示。单独使用白色花纹投影Pw对站立奶牛进行识别的准确率为88.39%,对躺卧姿态的识别准确率为78.45%。然后根据特征权重由大到小依次加入其余传统特征。尽管增长幅度较小,但两种姿态下的识别准确率都逐渐提高。增加到8个特征时,站立和躺卧姿态下准确率分别达到93.87%和84.31%,此后再加入特征,准确率降低。因此最佳的特征子集为Pw、I1、Rbw、Rrec、Rlw、Amax、Aw和I2。
图6 使用传统特征的奶牛识别准确率Fig.6 Cow identification accuracy using traditional characteristics
加入特征Ncd后,准确率降低。分析识别错误样本后可知,一些花纹面积较小,这些较小的花纹对相机拍摄角度较敏感,不是可靠的特征。加入Hu矩I3~I7后,识别准确率逐渐降低。由于拍摄角度和距离的变化,奶牛花纹变化较大,需要矩特征具备良好的旋转、缩放和平移不变性,而基于二阶矩的不变矩才具备上述特征,只有I1和I2由二阶矩组成。Hu矩特征中的高阶矩对花纹的大小、方向等变化敏感。
图7为输入图像及前两个卷积层的特征图。图7a中存在细小的噪声点,图7b中奶牛的背部轮廓以及黑白花纹的类别和花纹的形状等特征可以较好地得到展示。图7b同时显示了卷积运算的滤波和平滑效果,特征图中消除了原始图像中白色花纹等部分的细小噪声点,减少了噪声和增强了特征。图7b中卷积运算将输入图像映射到不同的灰度空间,在光照不均匀的情况下抵抗外界干扰[15],因此,卷积运算提高了网络的鲁棒性。随着网络卷积层的深入,提取的特征越来越抽象(图7c),即深度特征的可解释性较差。
图7 卷积层特征图Fig.7 Feature maps of convolutional layers
图8为单独采用传统特征、深度特征及特征融合的特征值求和、特征最大值和特征加权求和3种特征融合策略分别对站立和躺卧姿态奶牛进行个体识别的累计匹配 (Cumulative match characteristic,CMC) 曲线。单独采用深度特征识别站立和躺卧姿态奶牛的准确率均高于利用传统特征的准确率。这表明对于奶牛个体识别,相比传统特征,深度特征具有更强的表征能力。深度特征在站立姿态和躺卧姿态下的识别准确率分别为96%和94%。传统特征在两种姿态下识别准确率分别为94%和84%。和站立姿态相比,躺卧姿态下的奶牛花纹变形较大。说明传统特征更容易受到花纹形变的影响。文献[12]验证了传统特征中的矩特征对奶牛花纹的旋转、尺度变化和平移等不敏感,和本文结果有差异。可能原因是本文的花纹变形是由奶牛姿态不同导致的,而文献[12]中的花纹变形是人为设置,前者的变形情况比后者更加复杂,并非单一的旋转、平移或尺度变化。3种特征融合方法中,加权求和方式的识别准确率最高。和深度特征识别相比,站立姿态的加权求和准确率提高约3个百分点,躺卧姿态的加权求和准确率提高约2个百分点,和传统特征识别相比,站立姿态的加权求和准确率提高约5个百分点,躺卧姿态的加权求和准确率提高约10个百分点。这再次验证了对于花纹变形较大的躺卧姿态,传统特征表征能力较差。同时表明,在花纹变形较小的情况下,传统特征和深度特征更具备互补性。
图8 奶牛识别的CMC曲线Fig.8 CMC curves for cow identification
采用特征加权求和策略的融合方法达到了最高的准确率,在这3种融合策略之中,加权的性能普遍优于其它两种融合策略。其主要原因是奶牛个体识别的深度特征明显优于传统特征,特征值求和的融合不能体现深度特征的这种优势,特征最大值识别可以体现深度特征的优势,却忽略了传统特征的作用。特征加权求和根据两种特征的重要性进行融合。
为求取最佳加权系数,对深度特征概率向量和传统特征概率向量权重系数以步长为0.1进行不同组合。表1为特征加权求和的深度特征概率向量和传统特征概率向量权重系数比例分别为9∶1、8∶2、7∶3、6∶4、5∶5时躺卧和站立奶牛的识别准确率。站立姿态下的奶牛深度特征概率向量和传统特征概率向量的比例系数为6∶4时奶牛的个体识别准确率最高,为98.66%,而躺卧姿态下的奶牛比例系数为8∶2时识别准确率最高,为94.06%。奶牛的姿态不同,特征融合时的奶牛最佳权重系数也不相同。传统特征对花纹变形较小的站立姿态奶牛具有更好的表征能力,所以其在站立姿态下权重占比相对较大。但意外的是,躺卧姿态下,权重系数的变化并没有明显影响奶牛的识别准确率,分析融合前的概率向量和最终的识别结果,主要原因是:大部分深度特征概率向量中目标奶牛所对应的概率元素值远大于其它奶牛所对应的概率元素值,使得传统特征概率向量的权重变化对融合后的识别准确率影响较小。但有少部分深度特征和传统特征概率元素的最大值所对应的都不是目标奶牛,但利用融合后的特征实现了准确识别。
表1 特征融合时不同权重系数比例的奶牛识别准确率Tab.1 Identification accuracy of cows with different weight coefficients during feature fusions %
图9为使用不同特征的奶牛识别准确率箱线图。利用传统特征识别躺卧姿态下的奶牛的准确率波动较大,最小值约为66%,识别准确率较低,传统特征难以实现躺卧奶牛的个体识别。和单独采用深度特征相比,站立姿态的特征融合方法的箱子高度和端线间的长度明显缩短,融合后的方法稳定性更好,同时,中位线与上四分位数线重合,没有在箱内显示,说明超过50%的奶牛识别准确率达到100%。
图9 奶牛识别准确率箱线图Fig.9 Box plot of identification accuracy of cows
和单独采用深度特征相比,躺卧姿态的融合方法的中位线和均值提升不明显,但上四分位数线和上端线重合,说明更多的奶牛识别准确率达到100%。与站立姿态融合方法的箱体和端线长度相比,躺卧姿态融合方法的箱体和端线长度更长,说明对于躺卧奶牛,特征融合方法识别的准确率波动较大,其中约25%样本准确率低于90%。从图9可看出,采用本文方法,站立姿态下奶牛个体的识别准确率差异较小,而躺卧姿态下奶牛个体的识别准确率差异较大。花纹丰富的奶牛个体识别率较高。在躺卧姿态下,花纹较少奶牛和接近纯色的奶牛个体识别准确率较低,但在站立姿态下,这些奶牛可以被多角度拍摄,不明显的特征也可以较好地提取,识别准确率较高。
躺卧奶牛由于花纹变化较大,个体识别准确率较低。如何提高躺卧奶牛的个体识别准确率,是下一步的研究内容,拟将牛舍不同位置布设摄像头,采集头部、躯干等多部位特征,然后利用深度学习或特征融合的方法进行个体识别。
(1)提取奶牛的传统特征,并使用NCA对奶牛的传统特征进行选择。利用选择后的传统特征基于SVM模型对站立和躺卧奶牛进行个体识别,准确率分别达到94%和84%。单独应用传统特征进行躺卧姿态奶牛个体识别准确率较低。
(2)通过AlexNet网络提取奶牛的深度特征。将传统特征和深度特征相融合。和单独使用深度特征相比,特征融合的方法对站立和躺卧姿态奶牛的识别平均准确率分别提高约3个百分点和2个百分点,达到98.66%和94.06%,但躺卧姿态下的识别准确率波动较大,实现躺卧姿态下奶牛的稳定、准确个体识别,还需要进一步研究。