沈维政,郭金彦,戴百生*,王鑫杰,梁晨,邱柏隆,张哲,王军号,史伟,张逸轩
(1.东北农业大学电气与信息学院,哈尔滨 150030;2.黑龙江省农业技术推广站,哈尔滨 150030;3.西北民族大学数学与计算机科学学院,兰州 730030)
奶牛体型外貌可直观反映奶牛健康水平与发育状况[1-2],以量化方式客观公正评估奶牛体型指标[2-4],对奶牛遗传育种优化及精细化管理具有重要意义。传统奶牛体型评定方法主要利用皮尺、测杖、半圆仪等工具手动测量指标,费时费力且易受主观因素影响。此种接触式测量方法会引起奶牛应激反应,降低奶牛健康福利[5]。
随着计算机视觉技术发展及智慧牧场概念提出,部分学者采用二维图像数据对奶牛进行非接触式体型评定指标测量。闫震通过模板匹配方法将奶牛图像与包含关键点模板进行匹配,实施体型关键点定位,完成体型评定指标测量[6]。但此类方法对奶牛位姿有一定要求,图像质量影响测量值准确度。对于现实中复杂环境三维物体,二维信息对三维目标进行表征,造成信息损失[7-8]。
近年来,深度相机等三维传感器得到进一步发展,高质量点云数据更易获取,基于点云数据测量奶牛体型指标方面,国内外研究较多,并取得一定进展。Kamchen等验证深度相机在奶牛体型指标测量方向潜力,通过手动标注关键点方式完成奶牛体型指标测量[9]。Pezzuolo等使用多个Kinect深度相机,从不同角度近距离获取奶牛局部点云数据,使用SPIP软件手工测得奶牛腰角宽、体长、体高、胸围、背部坡度等体型指标信息[10]。这种交互式定位方法降低体型指标测量的自动化程度。牛金玉使用TOF深度相机采集奶牛点云数据,分割奶牛躯体,根据奶牛主要身体几何特征定位体型关键点测量相关指标[11]。赵新强使用结构光深度相机采集奶牛RGB-D数据,在奶牛目标区域内检测角点,定位相关体型关键点,测量奶牛相关指标[12]。此类直接对奶牛整体区域进行体型关键点自动定位方法,易受奶牛行走过程中背部结构特征变化影响,导致关键点定位不准确,产生误差[13]。
为解决当前奶牛体型评定存在自动化程度低及体型关键点定位误差较大等问题,实现对奶牛体型评定指标高效且精准非接触式自动测量,本文提出一种基于两阶段关键点定位算法的奶牛体型评定指标自动测量方法,检测出奶牛体型关键点关键区域,通过点云模型的局部形状信息实现体型关键点精准定位,完成体型评定指标的自动测量。
2021年9月在黑龙江省大庆市林甸县晟康牧业有限公司奶牛养殖场,采用Intel RealSense D435深度相机采集荷斯坦奶牛深度图像数据。深度图像数据分辨率为848×480像素,帧率为30 f·s-1。深度相机连接到PC端,以Visual Studio 2017为开发平台,基于RealSense SDK 2.0进行采集。考虑奶牛背部体长、肩宽、胸宽、腹宽、腰宽五项体型评定指标可通过计算机视觉技术测量,采集奶牛背部图像作为本文研究对象,自动测量体型评定指标。将RealSense D435深度相机架设在称量奶牛的体重秤(长约2.5 m,宽约0.9 m,高约1.7 m)上方2.5 m,依次采集单头奶牛背部图像。本次试验共采集49头体型不同的奶牛背部深度图像序列,整理得到4 421幅图像。
使用Labelme标注工具,将奶牛鬐甲点、尾根点、左侧肩宽点、右侧肩宽点、左侧胸宽点、右侧胸宽点、左侧腹宽点、右侧腹宽点、左侧腰宽点、右侧腰宽点分为10类保存,获得.json文件,再将.json文件转换为.xml文件,其中以标注点作为标注框中点,标注框设置为20×20像素,标注效果如图1所示。
图1 数据集标注效果Fig.1 Dataset labeling effect
为实现奶牛体型评定指标自动测量,对采集深度图像序列滤波,获得质量更高的深度图像数据,进行体型关键区域检测,获取到奶牛体型关键点所在局部区域并重建该区域三维点云,利用空间结构信息定位体型关键点,完成体型评定指标计算。
1.2.1 深度图像滤波
由于深度图像数据存在随机噪声,红外光束直射奶牛个体某些部位皮毛表面时存在镜面反射,造成该部位深度值缺失,影响体型评定指标测量[14-15]。为提高深度图像数据质量,利用RealSense SDK 2.0提供边缘平滑滤波器和孔洞填充滤波器对深度图像数据进行处理[16]。
采用边缘平滑滤波器平滑深度噪声,保持合理且稳定边缘。该滤波器通过扫描x轴和y轴目标像素深度值并计算一维指数移动平均线(EMA),确定合适平滑量。采用左侧有效像素(Left Valid Pixel)作空间域孔洞填充;采用与边缘平滑滤波器同类型指数移动平均线(EMA)滤波器,对深度图像中每个像素在时间域上应用指数滑动平均填充孔洞。
经过边缘平滑滤波器、孔洞填充滤波器后图像数据滤波效果如图2所示。奶牛深度图像数据得到修复,大部分边缘噪声和孔洞被消除。
图2 深度图像滤波效果(伪彩色处理)Fig.2 Depth image filtering effect(Pseudo-color processing)
1.2.2 两阶段体型关键点定位
因奶牛躯干部位不同类型测量点之间常有不规则凸起,直接对奶牛整体区域定位奶牛体型关键点易受干扰,本文提出一种两阶段体型关键区域体型关键点定位方法实现对奶牛体型关键点的精准定位。
1.2.2.1 体型关键区域检测
考虑到奶牛养殖场实际环境较复杂且奶牛个体表征因素差异较大,对体型关键区域自动检测工作对检测精度与速度均具有较高要求,在检测过程中同时输出检测类别的锚框与概率,适合本研究任务场景,故本文基于YOLO v5模型对体型关键区域进行自动检测[17-19]。YOLO v5网络结构如图3所示,其网络架构可分为4个部分:输入端、Backbone网络、Neck网络和输出端。其中Backbone网络以Focus结构作为基准网络,608×608×1大小的图片传递给Focus层,使用切片(slice)切割成320×320×12的特征图,经过concat以及一次卷积(CBL)转化为320×320×64的特征图。
图3 基于YOLO v5的体型关键区域检测网络结构Fig.3 Detection network structure of key areas of linear appraisal based on YOLO v5
基于YOLO v5体型关键区域检测模型,检测效果如图4所示。由图可知,本文提出的检测模型可精准检测出奶牛体型关键区域。
图4 体型关键区域检测效果Fig.4 Detection effect of key areas for cow body type assessment
1.2.2.2 体型关键点定位
在完成第一阶段奶牛体型关键区域检测后,第二阶段即为在各关键区域内分别定位奶牛体型关键点。
利用相机内参将关键区域重建为三维点云模型[20],图5为各关键区域三维点云模型效果图。图中(1)至(10)分别为奶牛鬐甲点、尾根点、左肩宽点、右肩宽点、左胸宽点、右胸宽点、左腹宽点、右腹宽点、左腰宽点、右腰宽点所在关键区域。
图5 体型关键区域点云数据效果Fig.5 Point cloud data effect of key areas of cow linear appraisal
根据上述方法检测的体型关键区域中包含有背景数据及离群点,使用点云滤波方法对体型关键区域点云数据进行处理,避免对体型关键点定位造成影响[21]。
本文获取的奶牛图像数据中背景主要来自于地面,采用基于直通滤波法去除背景点云[22],去除三维点云模型中距离坐标原点o距离大于1.6 m的点。采用基于统计滤波法的离群点去除方法去除体型关键区域中的离群点[23],滤除体型关键区域中超出该区域平均欧氏距离5个标准差以上的所有点,完成离群点去除工作。
在从体型关键区域中实现体型关键点定位时分别选用不同策略:对鬐甲点与尾根点选用基于z轴最值方法;对左肩宽点、右肩宽点、左胸宽点、右胸宽点、左腹宽点、右腹宽点、左腰宽点与右腰宽点选用基于曲率定位方法[23]。
基于最值点方法是利用点云数据中z轴表征与深度摄像头所在水平平面垂直的直线这一特性,根据关键点类型名称定位该点所在体型关键区域,然后在该体型关键区域内遍历所有点并输出z轴坐标值最大点,该点即为体型关键点[24-25]。
基于曲率方法是利用空间几何变换中物体曲率不随物体刚性变换而发生变化这一固有特性,表示对某一点所在局部曲面弯曲程度。采用平均曲率和高斯曲率[26]。其中平均曲率指某一点局部曲面在该点处平均弯曲程度;高斯曲率指点云表面某一点总弯曲程度,计算公式分别如式(1)、(2)所示。
式中,k1为该点最大主曲率,k2为该点最小主曲率。L、N、M、E、F、G分别为二次参数曲面逼近法中曲面在该点的偏微分值[27]。
体型关键点定位示例如图6所示,图6右部中将平均曲率最大点输出结果用红色点表示,高斯曲率最大点输出结果用绿色点表示,z轴最值最大点输出结果用蓝色点表示。
图6 体型关键点定位Fig.6 Key point positioning for cow body type assessment
1.2.3 体型评定指标测量
在准确获取到奶牛体型关键点后,各项指标测量工作即可转化为在三维点云模型上对各体型关键点间的距离求解[28]。输出各奶牛体型关键点坐标值,再求取每对体型关键点之间欧式距离作为体型评定指标的预测结果。对测试集中包含的15头奶牛,将基于高斯曲率和z轴最值结合策略作为策略一,基于平均曲率和z轴最值结合策略作为策略二,采用两种策略分别进行体型评定指标自动测量,得到测量结果进行对比分析,确定精度更高的测量方法。
本试验硬件配置如下:操作系统为Windows 10,处理器为英特尔酷睿i7-7800X 3.5 GHz,内存为16 GB,显卡为英伟达GeForce GTX 1080(11 GB内存),使用Pytorch框架搭建网络,Pytorch版本为1.10.0。训练出的检测模型参数量大小为353 MB。
为训练体型关键区域检测模型,将4421张奶牛深度图像数据按照8:2划分训练集与测试集,其中训练集包括34头奶牛共3572帧图像,测试集包括15头奶牛共849帧图像。
在模型训练时以32幅图像作为一个批次,衰减系数设定为0.0005。预热学习率为0.1,预热学习率动量为0.8,预热3轮次,余弦退火超参数设为0.1。约260次迭代后,模型收敛。
在检测体型关键区域时需采用评价指标描述检测精度,AP(Average precision)为各类别平均精确度,表示测试集中某类目标检测精确度和与该目标有关图像的数量比值。考虑奶牛鬐甲点、尾根点、左肩宽点、右肩宽点、左胸宽点、右胸宽点、左腹宽点、右腹宽点、左腰宽点、右腰宽点共10个不同类AP来判断模型优劣时,每一个类别均有AP,难以计算检测模型优劣,因此本研究选择各项类别平均AP值,即选择mAP(mean Average Precision)作为检测网络模型训练预测效果优劣,计算公式如式(3)所示。
式中,Q表示类别数目,文中取值为10。
基于YOLO v5体型关键区域检测模型得到检测结果数据如表1所示,结果显示mAP最终均能达到97.5%左右,说明关键区域检测模型训练结果良好,检测速度达到60 f·s-1,可满足日常生产所需。值得注意的是右胸宽点精度略低于其他部位,原因是在采集奶牛图像时某一天深度摄像头设置角度存在偏差,当天采集的深度图像中奶牛右胸宽点存在被栏杆遮挡情况,导致该点精度低于其他部位。总体而言,本文提出的体型关键区域检测模型可精准确定奶牛关键区域,为下一步体型关键点定位工作提供基础。
表1 体型关键区域检测结果Table 1 Detection results of key areas for cow linear appraisal
体型关键点定位结果显示基于曲率体型关键点定位方法平均速度可达到0.265 s·幅-1,基于z轴最值体型关键点定位方法平均速度达到0.018 s·幅-1,符合奶牛养殖场实际应用场景对效率的要求。
基于两阶段关键点定位算法得到15头奶牛体型评定指标预测结果如表2所示。
表2 基于两阶段关键点定位算法的体型评定指标测量结果Table 2 Measurement results of cow linear appraisal indicators based on two-stage key point positioning algorithm(cm)
其中,最大误差为5.68 cm,最小误差为0 cm,结果可知产生误差较大的预测值是因体型关键区域检测结果发生偏差,导致体型关键点定位误差较大。
本文基于策略一和策略二对奶牛5个体型评定指标计算平均绝对误差(MAE)和均方根误差(RMSE),如表3所示。结果显示对腰宽指标预测值误差较小,对肩宽和腹宽指标预测值误差较大,原因是肩部和腹部离散点干扰较多。
表3 体型评定指标的平均绝对误差和均方根误差Table 3 Mean absolute error and root mean square error for cow linear appraisal indicators
本文对体型评定指标自动测量得到预测值与人工测量真实值之间相关性,如图7所示。
图7 指标真实值与预测值对比Fig.7 Comparison of actual value and predicted value of each indicator
由图7可知,本文提出奶牛体型评定指标自动测量方法获得的预测值与人工测量获得的真实值间具有良好相关性,决定系数R2最大为0.9394,最小为0.8573,基于策略一的决定系数由大到小依次为腹宽、体长、肩宽、腰宽、胸宽,基于策略二的决定系数由大到小依次为腹宽、肩宽、体长、胸宽、腰宽。基于策略二得出的测量值与真实值之间的决定系数更高,且基于策略一和策略二测得预测值相差较小,故选择输出平均曲率最大值点与z轴最大值点相结合的方法作为奶牛体型关键点定位策略,自动测量奶牛体型评定指标更为精确。
为解决奶牛部分体型评定指标测量问题,采用目标检测模型获取体型关键点所在关键区域,分别采用基于高斯曲率和平均曲率方法输出体型关键点,得到体型评定指标预测值。结果表明,基于平均曲率可取得更好测量效果。
本文通过深度学习算法以及三维点云技术对奶牛部分体型评定指标进行自动测量。奶牛体型评定指标测量相关研究大多存在人工交互,且在奶牛行走过程中对整体奶牛图像数据进行关键点直接定位存在一定误差,如基于双目视觉技术方法中,对体长指标存在1.14%~6.09%的平均相对误差,基于深度学习检测算法的关键点定位方法对体长指标存在0.23%~5.79%的平均相对误差[9-10]。因此,本文在自动化的前提下预测值精度较高。
由于深度图像数据中存在信息缺失问题,可考虑引入RGB图像信息,结合深度学习算法进行精细的孔洞填充。此外,在奶牛个体点云与栏杆等背景点云难以有效分割时会造成测量精度下降,针对奶牛体型关键区域点云的自动化处理方法有待进一步研究。
本研究对奶牛的5个体型评定指标自动测量时测量值平均绝对误差和均方根误差分别为1.55与1.78 cm,决定系数R2达到0.9394。证明该方法可为奶牛体型评定提供新的解决方法,给奶牛跛行行为检测和体重预测等领域提供思路。