基于红外热成像技术的笼内死鸡自动识别方法

2023-06-26 06:45贾雁琳周子轩赵学谦霍晓静李丽华
河北农业大学学报 2023年3期
关键词:活鸡死鸡鸡头

贾雁琳,薛 皓,周子轩,赵学谦,霍晓静,李丽华

(河北农业大学 机电工程学院,河北 保定 071001)

国内养殖场对蛋鸡的养殖方式多为多层笼养模式,饲养密度大,且室内环境差,人工巡检死鸡时,饲养员会吸入浮尘及有害气体,需上下攀爬扶梯挑拣死鸡,费时费力[1-3]。鸡只未进食状态下,单个笼内鸡只密集,存在活鸡遮挡死鸡的情况,死鸡与活鸡形态差异不明显,人工肉眼挑拣死鸡难度大。死鸡和活鸡形态特征较复杂,提高死鸡分辨率,是识别笼内死鸡的关键问题。本文研究对象是成年蛋鸡,体型大小相似,在笼内活跃度较差,遮挡较严重,更难发现死鸡。

目前,机器视觉广泛应用于各大禽舍农产品识别分选[4-6],在鸡只识别、疾病检测和行为监测领域,魏长宝等[7]针对鸡冠特征向量,采用把鸡冠变化量作为特征变量,进行逻辑与运算识别死鸡的方法,识别准确率较高,但识别方法单一,检测速度慢;毕敏娜等[8]基于鸡冠和鸡垂轮廓上两点距离小于阈值,提出了“鸡头合并算法”对死鸡进行评价;郑双阳团队[9]针对蛋鸡进食时的腿部图像,建立了以特征区域面积值作为判断笼内病鸡、死鸡的标准;李亚硕等[10]提出基于L*a*b*空间a*分量的鸡冠,数理统计出病鸡与健康鸡的颜色特征差异,并与颜色阈值比较的方法识别病鸡,识别率为96%。在红外图像处理环节,何慧敏等[11]提出了1 种基于实际温度、灰度图像对应关系,有效估计人面部温度的方法。巩稼民等[12]分析出红外热图温度与灰度相关性,设计出1 套精确分析图像温度的设备。

本文基于鸡头形态特征,提出了1 种基于红外热成像技术并根据温度阈值剥离出鸡头与环境并提取出鸡头形态学特征,建立多个形态学描述子,利用XGBoost 排序快速筛选出有效特征,最后以准确率、真正率等作为识别模型优劣的评估标准,对比决策树、BP 神经网络分类效果,最终选择表现最优的支持向量机算法实现死鸡识别。

1 实验材料

1.1 实验环境

实验选取石家庄曙光农牧业蛋鸡养殖场,鸡舍结构图(图1),鸡舍主视图(图1-a),俯视图(图1-b)。单栋养殖规模3 万只。4 层8 列结构,单笼大小为600 mm × 600 mm × 500 mm,单笼内装有5 只230 日龄的海兰灰蛋鸡。

图1 鸡舍结构图Fig.1 Structure of chicken house

1.2 图像获取

试验于2020 年6 月16—23 日,每天采集不同位置的笼内鸡只照片,用菲力尔E6 手持红外热像仪的自动对焦模式,镜头距离笼前面10 ~15 cm,与水平面拍摄成45°角,连续7 d 共采集700 张大小为320 × 240 像素的格式为.JPG 的混有死鸡的红外照片和700 张活鸡的红外照片。红外特征下待识别样本目标特征(图2)。

图2 红外特征下的活鸡头、死鸡头形态特征Fig.2 Morphological characteristics of live and dead chicken heads under infrared characteristics

其中,活鸡头部为亮黄色部分(图3-a),死鸡头部为暗黑色部分(图3-b)。

图3 活鸡、死鸡头目标样本Fig.3 Target samples of live and dead chicken heads

2 研究方法

2.1 图像预处理方法

图像预处理步骤为:批量加载待分类的鸡头红外样本图片,得到活鸡和死鸡的鸡头红外原图(图4-a),把RGB 空间模型转化为HSV 颜色空间,得到V 空间域的特征(图4-b),对V 空间域图片分量使用设置尺寸大小为10,标准差为6 的高斯滤波器,利用最大类间方差法确定基于0.64 的阈值,将单空间的灰度图像转化成二值图像。后期的处理采用腐蚀膨胀形态学操作,设定图像结构元素形状为平坦型圆盘结构元素,半径参数为3 像素。并对个别目标添加孔洞填充、中值滤波、边缘优化等操作,得到良好的活鸡头部、死鸡头部的形态学效果(图4-c)。

图4 活鸡死鸡的鸡头处理结果Fig.4 Results of head treatment of live and dead chickens

图5 最小二乘法拟合温度T-灰度值G 效果图Fig.5 Effect of fitting temperature T-gray value G with least square method

2.2 基于温度阈值的鸡头形态提取

2.2.1 温度的提取方法 在用菲力尔E6 红外热像仪采集鸡只热图时,随着舍内环境温度变化,出现热像仪显示的每张图片温度色度条不一致的现象,因此拍摄时选择自动档位,这样保证了拍摄的热图最大限度地反映温度分布情况[11]。以拍摄到700 幅混有死鸡的红外热图为研究对象,并统计拍摄的每张照片温度,所有图片的红外温度色度条范围均在(26±4)~(40±1) ℃之间。本研究选用其中1 张温度范围在26.6 ~40.6 ℃的JPG 格式红外热图经过配套的 Tools 分析软件,转换成具有温度信息的.xls文件。通过加权平均值算法灰度化红外真彩色样本图片,等效得到样本图片的颜色分量灰度值Y,

Y=Lum(R,G,B)=0.299·R+0.587·G+0.114·B,灰度数据保存在.xls 文件中。因为本研究的目的是获取鸡头温度分布[11],只提取29.0 ℃至头部最高温度Tmax 区间的有效温度值。在温度区间[29 ℃,Tmax]上取预设温度间隔基本相等的30 个样本点。将预设的30 个温度点分别与灰度图片数据值一一对应,统计出每一个温度点下出现频次最高的灰度值,作为预设温度点对应的灰度值(表1)。使用相同方法,依次找到30 个温度点对应的灰度值。

表1 拟合样本点数据Table 1 Data of fitting sample points

2.2.2 温度的阈值确定 理论上,对于在某个测温范围下采集到的红外热图,图像上所有像素点的灰度值与实际的温度值之间是呈线性相关关系的[13],同时,线性参数是可以求得的,灰度值(G)与温度值(T)的关系可以表示为:G=kT+b,把得到的温度值、灰度值样本数据进行最小二乘法线性拟合后,得到温度T-灰度值G关系线性函数关系式:G=15.109 4×T-373.775 3。计算相关系数R=0.98,因该值越接近1,此时2 个变量越强相关。对于采集到的红外图片温度数据,按照获取样本点的方法,分别在其温度范围内获取另外15 组样本作为检验样本(表2),同时利用得到的相应温度T-灰度值G线性函数关系,估计每个灰度值对应的温度值,并计算残差。

表2 检测样本点数据Table 2 Test sample data

根据图像预处理流程和鸡头温度T-灰度值G阈值,基于温度阈值提取鸡头形态特征。算法处理步骤如下:

(1)待识别处理的图片(图6-a)。

图6 鸡头形态轮廓图Fig.6 Outline of chicken head shape

(2)对实验的每一幅RGB 图像,均转化为HSV 空间域,分别对3 个颜色域图像滤波处理,选用处理效果最好的V 领域,并将其转化为二值图像,去噪并用开闭运算填充孔洞。

(3)找到目标前景区域idx,计算每个idx 的行数m1,列数n1,将目标区域温度值按行数求和取平均,与设定的鸡头温度阈值比较,得到图片中每个目标区域总温度的平均值meanpx。圈出并标注鸡头轮廓。

(4)依次保存标记出的死鸡、活鸡区域形态学特征。分离出初步轮廓(图6-b)。

2.3 鸡头形态学特征筛选

2.3.1 建立形态特征描述子 根据上述鸡头温度阈值判别法,得到预处理后的相关形态学数据。鸡头基本形态特征呈细长椭圆形,为保证有效依据鸡头区分死鸡活鸡,选择了以下几种基本形态参数:面积Area,周长Perimeter,长轴MajorAxisLength,短轴Minor-AxisLength,离心率Eccentricity,直径Diameter,圆形度Roundness,紧凑度Compactness;面积表示鸡头区域各像素总个数;周长由鸡头边界像素个数度量;长轴为鸡头部分二阶中心距的椭圆长轴长度;短轴为鸡头部分二阶中心距的椭圆短轴长度;离心率为鸡头部分二阶中心距的椭圆离心率;直径D为鸡头面积相等的圆的直径;圆形度R为鸡头边界形状接近圆的程度,记E=4πA/C2,紧凑度J为鸡头直径与长轴比,记J=D/L。统计活鸡与死鸡头部形态学分量范围(表3)。

表3 鸡头活鸡死鸡形态学分量范围Table 3 Morphological component range of chicken head live chicken and dead chicken

2.3.2 特征向量的快速选择 为能更快速准确有效地区分出死鸡活鸡,本方法使用XGBoost 特征选择算法对初选的8 个形态学特征分量进行权重重要性分析[14]。训练集测试集比例为7∶3,构建树的深度为3,学习率为0.1,设置迭代次数为500 次,迭代到第71 次时,模型最佳,此模型下重要性得分结果见图7,AUC得分96.76%。

图7 权重得分Fig.7 Weight score

圆形度R得分最高(图7),为133,紧凑度其次,为123,直径D得分最低,为22。可以看出,鸡头基本形态特征向量受外界影响因素较大,而经特征变换处理过的复杂特征参数特征有较强的适应性和稳定性,在相关文献中也有所运用。为提高分类速度,最终选取排名前五的圆形度R、紧凑度J、离心率E、长轴长L、短轴长S为形态特征向量。

3 机器学习系统模型选择与参数优化

实验选用的图片数据中,70%用作训练样本,30%用作测试样本。

实验中把活鸡头部的图片标记为“正样本”,把死鸡头部图片标记为“负样本”。用分类器分类样本时可能出现正样本检测为正样本、正样本检测为负样本、负样本检测为负样本、负样本检测为正样本4 种情况,因此对死鸡检测识别模型评判标准定义为:

3.1 模型选取

3.1.1 决策树模型 决策树是1 种树形结构,每个分支代表1 个测试输出,每个叶节点代表1 种类别[15]。本文选用CART 分类树算法以基尼系数为分类依据。基尼系数即Gini(P)=pk(1-pk)=1-,式中pk表示数据集中第k个分类的概率,|D|表示样本个数,|Ck|表示属于类Ck的样本个数。

3.1.2 BP 神经网络模型 BP 神经网络是1 种典型的多层前向型神经网络,具有单输入层、多隐含层和单输出层的结构[16]。样本的输入值经隐含层和输出层计算,输出预测结果。当预测值不满足期望值精度,则从输出层反向传播该误差,不断调整阈值和权重值,减小网络输出相对误差,确定模型。

3.1.3 支持向量机网络模型 SVM 以其精度高和处理高维数据的机器学习能力,被广泛应用于分类问题。定义的线性分类器SVM 超平面为公式(1):

其中ω=(ω1,ω2,……,ωd)为法向量;b为位移。

文中输入的样本参数变量为:

DATA={(x11,x12,x13,x14,x15,y1),(x21,x22,x23,x24,x25,y2),…,(xi1,xi2,xi3,xi4,xi5,yi)}。

其中,特征向量为5 个,样本数量记为i,yi∈{0,1},xi为第i只鸡只样本,yi为鸡只样本的类别标签。当yi为1 时,记xi为活鸡;当yi为0 时,记xi为死鸡。

3.2 模型调优过程

3.2.1 决策树调参及模型选择 本文选用决策树的

CART 算法基于5 种特征值,对死鸡活鸡样本进行分类实验。比较剪枝前后的模型验证参数,选择后剪枝优化方法,剪掉x3子树作为提高后的树模型,参数设置最大树深度为3,最大叶子节点数为8。CART 树模型见图8。x1、x2、x4、x5分别为圆形度、紧凑度、长轴长、短轴长。

图8 决策树模型Fig.8 Decision tree model

3.2.2 BP 神经网络调参及模型选择 BP 神经网络节点的选择至关重要,本文设置1 个3 层结构神经网络。网络参数指定训练如下:学习率设置为0.01,动量因子设置为0.9,隐含层和输出层神经元激活函数设为tansig,输入层节点数为5,隐含层神经元个数参考公式(2):

式中:m、n分别为输入层、输出层神经元个数,a 为[1,10]之间的常数[17]。本文设置神经元节点数目最小值为4,最大值为13,计算隐含层不同个数神经元对应的准确率,测试集准确率(图9),选择准确率最高的神经元数目为10 的模型。

图9 不同个数神经元下的准确率Fig.9 Accuracy of different number of neurons

3.2.3 支持向量机的调参及模型选择 本文采用网格搜索交叉验证法[18],设置惩罚因子c的范围在{0.5,16},核函数参数g的范围在{1,8},遍历寻找最佳参数,最优c/g参数选择过程见图10。

图10 支持向量机训练模型选择结果Fig.10 Training model selection results of support vector machine

线条上的数字表示不同参数对应的准确率值,实验模型参数选择最高准确率对应的惩罚因子c=2,核函数参数g=5.656 9。选用5 折CV 过程对训练集调参,其中c和g的步进大小设置为0.5,最优c/g参数选择结果图准确率离散化显示的步进间隔为0.7。核函数类型设置为RBF 核函数。

3.3 不同模型评分指标对比

本文使用对鸡头形态特征提取的特征向量,结合决策树、BP 神经网络、支持向量机的分类算法进行对比试验,在3 种最优模型下得到完整的不同评价指标得分(表4)。

表4 3 种不同分类算法不同评价指标得分表Table 4 Score of three different classification algorithms and different evaluation indicator

(1)从表4 中可以看出,3 种不同的分类算法在训练集数据的准确率、真正率、召回率和调和平均数F1 差异不大,得分均在90%左右,测试数据集真正率、召回率、调和平均数F1 平均得分在90%以上,说明鸡头的形态特征描述子具有一定可分性,且分类效果较好。从图11 的ROC 曲线分布和表4中测试集的AUC值也可以看出,3 种分类算法AUC值均在90% 左右,说明了对特征描述子进行数量及重要性的比较后,筛选出来的特征向量经过算法建模,可以有效减少算法的时间,快速识别出死鸡。

图11 3 种算法ROC 曲线Fig.11 ROC curve of three algorithms

(2)从真正率这个指标上看,决策树和BP 神经网络在测试集得分近乎相同,但其它几个指标BP神经网络均高于决策树算法,因此,评判分类模型效果最佳的方法应从多个评价指标出发。

(3)从3 种不同分类算法在形态学特征向量分类结果看,支持向量机的分类效果最好,支持向量机分类算法比决策树在测试集的准确率提高了4.17%,且与BP 神经网络算法相比,虽然准确率一致,但测试集实验结果中召回率和F1 分别达到96.39% 和95.24%,召回率、F1 和AUC值均比BP神经网络高,所选用的支持向量机分类算法比BP神经网络在测试集的召回率提高了1.52%,说明基于支持向量机的分类效果最佳。

(4)从模型结构上看,决策树算法和BP 神经网络算法分类模型结构简单,虽然算法执行时间较快,但决策树算法分类准确率较低,BP 神经网络的隐含层节点个数需要不断试凑,调参繁琐,可移植性差,在养殖场实际应用中,存在因数据集的差异,会造成识别率降低等风险;SVM 分类算法适用于解决小样本且线性不可分的变量,对于本文数据恰好满足条件,分类效果很好,但因其运算结构较为复杂,会出现识别时间过长等问题。本文采用的基于XGBoost 算法特征筛选出的5 种重要特征,与SVM分类结合的算法,大幅度降低了高维特征的复杂性,减少了识别时间。此提取鸡头特征并分类的死鸡识别方法,在保证准确率的同时,缩短了运行时间,证明了本文算法相较于其他算法的优势。

4 结论

(1)本文采用鸡头温度阈值提取鸡头形态学特征,结合XGBoost 筛选出5 个特征,结合分类算法对活鸡、死鸡头部目标进行了区分,提高了整个死鸡识别系统的识别精度和实用性。

(2)本研究通过基于鸡头温度阈值提取形态学特征与支持向量机结合的分类算法,区分了笼内活鸡、死鸡。

(3)在特征选择过程中,不同的特征值选择算法,对后期分类模型训练结果的影响较大,通过XGBoost 算法对鸡头形态特征重要性计算得分并排序,筛选出5 个重要特征,利用这5 种特征向量进行后期的死鸡识别,分类效果明显,实施性强。

本文在实地对笼内死鸡识别进行小规模试验后,通过检测识别效率与准确度,验证了本研究的算法有效性。结果表明,本研究提出的用温度阈值提取鸡头形态学特征结合支持向量机算法的应用,将使得死鸡识别系统更加经济、符合实际应用,后续可推广到实际家禽养殖场中。

猜你喜欢
活鸡死鸡鸡头
从头说起
爸爸竟把鸡"杀活"了……
唐宋时期安化峡、安化县及安化镇位置考辨——兼谈秦汉时期的鸡头道
领走多少只苗 必须交回多少只鸡
鸡头菜
香港将恢复活鸡销售 为“禁鸡令”推补偿方案
香港政府倡导“不吃活鸡”防禽流感
为增重商贩给鸡灌重晶石粉
水乡的“鸡头”