APP下载

基于YOLO v5与短时跟踪的鸡只呼吸道疾病早期检测

2023-03-07丁奇安刘龙申刘亚楠沈明霞

农业机械学报 2023年1期
关键词:鸡头张口病鸡

陈 佳 丁奇安 刘龙申 侯 璐 刘亚楠 沈明霞

(1.南京农业大学工学院, 南京 210031; 2.南京农业大学人工智能学院, 南京 210031)

0 引言

笼养是现代规模化养鸡业最为集约高效的饲养方式之一[1],肉鸡采用笼养方式能够节约土地和增加单位面积的养殖量,还可以节省人力和物力,缩短出栏时间[2]。在叠层笼养环境下对异常鸡只的识别主要靠人工筛选,耗费大量人力且需要巡检人员具有较为丰富的经验,培训时间长,难以普及。

鸡只异常识别研究包括基于声音的异常识别[3-6]、体温反演[7-10]、基于粪便等排泄物的检测[11]与基于表型特征的异常识别,其中针对表型特征的异常检测最为直观而通用,具有较高的经验迁移价值。学者们在自动化、智能化层面上对鸡只异常判断进行相关研究,从机器视觉等方向进行尝试,ZHUANG等[12]提取健康鸡只与病鸡的姿势特征,建立特征向量,通过机器学习算法对肉鸡的姿势进行分析,并对患病的肉鸡进行预测,能够快速准确地识别肉鸡的健康状况。ZHUANG等[13]结合深度学习提出一种基于图像信息的深层卷积神经网络模型,将病鸡相较正常鸡的趴卧在地、羽毛蓬松等特点作为识别特征进行分类。李亚硕等[14]对鸡冠的颜色进行了机器视觉识别,从而判断是否为病鸡。毕敏娜等[15]针对复杂背景的黄羽鸡侧拍图像,在黄羽鸡色差信息分割的基础上,利用鸡冠和鸡垂轮廓上两点距离的合并算法,提取鸡头鸡冠纹理特征和鸡眼瞳孔的形状几何特征,构成病鸡识别的特征向量,采用支持向量机分类器进行病鸡识别实验,病鸡识别正确率为92.5%。陈章宝等[16]采用Faster R-CNN定位鸡、鸡头与鸡身部分,融合语义区域特征进行病鸡分类,准确率达到82.66%。LI等[17]利用Faster R-CNN对鸡只舒展行为进行检测并在此基础上对鸡只在不同饲养密度下的舒适度进行研究。

当前大部分基于视觉信息的研究都是利用静态的图像信息进行鸡只生理信息的反演与异常检测,而动态信息可以将静态图像信息与时间相关联,提高识别的准确率。FANG 等[18]通过深层神经网络识别肉鸡不同部位的特征点并形成其姿态骨架,再利用朴素贝叶斯模型进行鸡只姿态的分类,在检测视频里可较为准确地对鸡只的站立、走动、跑动、吃食、休息与修饰等姿态进行识别,形成姿态序列以供下一步研究。李娜等[19]将时间序列应用到鸡只的啄羽行为检测中,设计5 s内发生两次以上啄羽行为是一个时间段,并认为持续时间在30 s以上的时段为啄羽行为,从而改善了啄羽行为漏检率高的问题,提高了算法的检测精确度。OKINDA等[20]采集鸡只的俯拍深度图像,得到偏心率、鸡只行走速度等特征参数,通过人工神经网络等6种模型进行病鸡与健康鸡的分类,准确率为97.8%。

呼吸道疾病具有传染率高、致死率高等特点,许多呼吸道疾病前兆相似,比如呼吸困难[21-23],通过对该症状的识别可以对鸡只的呼吸道疾病进行早期预警,但现在少有研究从这方面入手。针对呼吸困难这一连续行为特征,本文提出一种基于YOLO v5与短时跟踪的鸡只呼吸道疾病早期检测方法,通过锚框自适应设置,CIoU Loss[24]引入等优化,实现鸡头目标的识别与张口与否的分类检测,在此基础上根据连续帧间目标位移变化设计一种基于交并比的鸡头目标短时间跟踪方法,形成持续时间内的鸡头张口状态序列,并根据此变化对群鸡中是否存在呼吸困难鸡只进行检测。

1 实验材料

1.1 实验对象与数据采集方法

本实验于2021年7—8月在广东温氏非雷攻毒实验室进行,实验对象为鸡传染性支气管病毒攻毒后的27日龄白羽肉鸡,全天候采集肉鸡攻毒后10 d的视频数据。在攻毒后3 d左右出现鸡传染性支气管炎临床症状,其主要症状为支气管堵塞,体现为呼吸困难、精神不佳、怪叫(类似人有痰咳嗽的声音)。其中,呼吸困难为本实验所要检测的关键动态特征,其表现为鸡活动量少,在短时间内出现有规律的张口、闭口循环动作,伴随仰头、闭眼等现象,具体表现如图1动作序列所示。

图1 呼吸困难动态动作序列Fig.1 Movement sequence of Dyspnea

实验中选用分辨率为1 920像素×1 080像素的萤石云(CS-C6C-3B2WFR型)摄像头进行拍摄,摄像头固定在可调节高度的支架上,通过内置存储卡进行数据存取。调整镜头角度令其与地面平行,控制镜头与鸡笼距离为45 cm。对每笼鸡进行无人干涉的全天候拍摄,拍摄装置如图2所示。

图2 实验装置Fig.2 Experimental arrangement with camera

1.2 数据标注

对定点拍摄的攻毒仓内群鸡视频进行筛选,得到含有呼吸困难症状的鸡只视频片段并对这些视频进行分帧处理,每秒截取2帧,共获取2 500幅图像,在数据清理后得到可用图像2 207幅,利用LabelImg软件进行数据标注,包括人眼可见的闭口鸡头(head)和张口鸡头(om)两种标签。

1.3 数据增强

为扩大数据量,采用Mosaic操作进行数据增强。如图3所示,在一次操作中随机选择图像数量,对这些图像进行随机缩放、随机裁减等操作,再进行拼接获取新的数据样本。该操作可以增加背景与小目标数量,从而丰富数据集,使网络的鲁棒性更好。

图3 Mosaic数据增强效果Fig.3 Data augmentation effect by Mosaic

2 基于改进YOLO v5的鸡头目标检测算法

YOLO v5算法是一种实时性较强的one-stage目标检测算法,在原有YOLO目标检测架构的基础上,采用增加多种数据增强方法、改进跨阶段局域网络等优化策略从数据处理、主干网络、网络训练、激活函数、损失函数等方面进行优化,相较YOLO v3[25]、YOLO v4[26]等模型有了一定的性能提升。模型的结构主要分为Input、Backbone、Neck和Prediction 4部分。Input为鸡只图像输入环节,Backbone主要实现图像的特征提取,Neck环节对提取到的特征进行融合,Prediction为进行回归操作后的检测部分。

根据群养环境下鸡头检测目标小、环境干扰多等特点对YOLO v5算法进行特定优化,通过自适应锚框设置令检测框尺寸更适合本文中需要检测的鸡头小目标;将GIoU Loss (Generakized IoU Loss)替换为更加适合遮挡目标检测与小目标检测的CIoU Loss作为bounding box损失函数进行整体参数调整的参考。

2.1 检测算法整体网络结构

YOLO v5在Backbone中主要应用了Focus结构与CSP结构,其中Focus是一种切片操作,通过将高分辨率的输入图像分成若干个小通道进行输入来提高模型速度。Neck中同样使用了FPN与PAN结构来提高模型性能,与YOLO其他系列不同的是,YOLO v5在Neck中也使用了CSP结构,加强了网络特征的融合能力。

图4为YOLO v5算法整体网络结构图。

图4 YOLO v5框架图Fig.4 YOLO v5 framework

2.2 自适应锚框设置

模型中的锚框(anchor)一般根据经验进行预设,具有一定的主观性且缺乏通用性。针对本文鸡头目标尺寸较小的特点,需要舍弃YOLO v5默认的9个锚框尺寸,自适应形成适用于本数据的新锚框。

K-means聚类方法[27]作为一种可靠、有效的锚框设置方法被广泛应用于anchor base目标检测算法的优化中[28-29],其流程图如图5所示。作为事先优化,先获取数据集中所有数据的目标框,即鸡头目标框,并对这些目标框尺寸进行归一化操作,获取绝对坐标,进行筛选后对得到的目标框利用K-means聚类方法获取9组中心点,即为9个锚框的尺寸。最后再使用遗传算法[30]随机对锚框的尺寸数据变异进行优化。

图5 K-means流程图Fig.5 K-means flowchart

2.3 CIoU Loss

CIoU Loss由ZHENG等[24]提出,其计算中包括重叠面积、中心点距离和长宽比,是对GIoU Loss和DIoU Loss (Distance IoU Loss)的优化,在小目标检测中效果良好,其计算公式为

LCIoU=1-IoU(A,B)+r2(Actr,Bctr)/c2+av

(1)

(2)

(3)

式中A——预测框B——真实框

Actr——预测框中心点坐标

Bctr——真实框中心点坐标

r——欧氏距离

c——A、B最小包围框的对角线长度

IoU——交并比

a——权重函数

v——宽高比度量函数

LCIoU——CIoU Loss函数

w——预测框宽度

h——预测框高度

wgt——真实框宽度

hgt——真实框高度

CIoU Loss可以直接最小化两个目标框的距离,因此比GIoU Loss收敛快,使得非极大值抑制得到的结果更加合理和有效。所增加的惩罚项与尺寸相关,如果真实框与预测框的尺寸相似,那么v为0,该惩罚项不起作用,故可以控制预测框的尺寸尽可能快速与真实框的尺寸靠近,以中心点与长宽比为引导方向可令鸡头小目标的检测框更贴合鸡头本身,为之后的短时跟踪方法提供参考。

3 基于时间序列的呼吸困难行为检测方法

本文研究对象为患有呼吸道疾病的肉鸡,有活动量少和呼吸困难等重要临床特征,其中呼吸困难体现在持续一段时间的张合嘴动态行为上。针对这两项特征,本文提出一种基于时间序列的鸡只呼吸行为检测方法,该方法分为基于交并比的鸡头目标跟踪方法与鸡头特征序列构造两部分,先通过连续帧的检测框坐标比对确认活动量少的病鸡鸡头并实现短时间跟踪,再利用对此跟踪对象的状态排列判断其是否存在连续的张口、闭口状态转换,从而实现对呼吸困难动态特征的检测。

3.1 基于交并比的鸡头目标跟踪方法

通过上述检测方法对连续帧图像进行检测,并输出检测到的目标类别与坐标信息。以第1帧为参考帧开始跟踪流程,检测框编号根据参考帧的检测顺序依次生成,通过对比当前帧与参考帧中的检测框交并比来对当前帧中的各检测框进行编号赋予,其中交并比计算公式为

(4)

IoUij——两个检测框的交并比

以此为基础,编号设置方法为

(5)

该方法具体流程如图6所示,以两次循环分别对比参考帧与当前帧内的检测框的交并比,选择合适阈值情况下的交并比最大的组合进行编号对应。通过观察鸡只呼吸可知,一次张口一次闭口用时约为0.5 s,故本文中对于视频的处理为1 s处理5帧,以减少中间帧的漏检。由于作为主要跟踪对象的病鸡活动量较低,在实验后设置参考帧转换频率为30 s一次,即60帧后重新选择参考帧以适应鸡只位移情况,进行鸡头编号的再设定与跟踪,从而实现短时间内鸡头目标的跟踪,为下一步鸡只个体呼吸序列构建提供基础。

图6 跟踪方法流程图Fig.6 Flowchart for tracking method

3.2 呼吸困难动态特征检测

通过基于交并比的鸡头目标跟踪方法对连续帧的鸡头目标进行短时间跟踪,并根据鸡头检测方法的分类输出结果得出该鸡头的状态特征序列,形成0(闭口)、1(张口)序列,根据该序列与序列持续时间可得出0、1状态的发生频率, 其计算方法为

(6)

式中T——连续帧持续时间,s

N01——T时间内0、1状态发生的次数

f——0、1状态发生的频率

当f大于给定阈值时认为是呼吸困难状态。

4 实验结果与分析

4.1 实验设计

4.1.1实验样本设置

实验对象为传染性支气管病毒攻毒后的肉鸡,选取呼吸困难片段并进行数据集制作,得到有效数据2 207幅,包含鸡只不同时间、不同状态的活动情况,人工进行鸡头定位与标签设定,部分标签设定包括head(闭口鸡头)和om(张口鸡头)两种情况,两种标签分别有1 696、1 710个。

4.1.2实验评价指标

评价指标主要分为两部分,对于目标检测算法的评价指标主要为平均精度(AP)与平均精度均值(mAP),对于存在呼吸困难的视频识别情况采用准确率、精准率和召回率进行评价。

4.1.3实验参数设置

本文针对鸡头小目标的识别与是否张嘴的判定使用改进YOLO v5算法,为验证算法的有效性,在所有超参数、模型训练环境相关参数均保持一致的情况下对YOLO v5算法与改进YOLO v5算法进行对比。使用GeForce RTX 3090 GPU,CUDA版本11.0,Pytorch版本1.7.0,OpenCV版本4.5.2。实验中的参数设置如表1所示。训练集、验证集、测试集分配比例为7∶2∶1。

表1 实验参数设置Tab.1 Experimental parameters setting

4.2 基于改进YOLO v5的鸡头目标检测结果与分析

表2 不同算法检测效果比较Tab.2 Comparison of different algorithms

图7为改进YOLO v5在不同网络结构下的损失值变化曲线,图8为改进YOLO v5在不同网络结构下的精确率-召回率曲线。

图7 改进YOLO v5算法的损失值变化曲线Fig.7 Loss curves of IM-YOLO v5

图8 改进YOLO v5算法精确率-召回率曲线Fig.8 PR curves of IM-YOLO v5

由图7可见,算法的整体损失值随训练迭代轮次的增加而减少,其中检测框回归损失值是CIoU Loss,可令预测框的边界尺寸快速向真实框逼近,置信度损失值与分类损失值则在训练中引导多分类任务对物体的识别与精准分类,同样随着迭代轮次的增加而缩小。整体损失值为上述几种损失函数的总和,在200 轮次后均收敛。

由图8可见,本文所提出的改进YOLO v5算法在不同网络结构下对head的识别效果均较好,而较深的网络结构能够提升om的识别准确率, 从而促使整体效果提升。

4.3 基于时间序列的呼吸困难行为检测实验效果与分析

4.3.1短时跟踪效果与分析

对鸡只呼吸困难动态行为检测的基础是确定所识别到的动作序列均属于一只鸡,故需要先进行短时间的鸡头跟踪,减少由于群鸡运动过程中的重叠、遮挡等情况造成的鸡只动作序列混乱问题。实验中,根据观察可知,病鸡进行张口呼吸,即一次张口一次闭口的用时约为0.5 s,故本文算法以1 s处理5帧的速度对视频进行处理以减少中间帧漏检,并通过30 s替换一次参考帧以适应鸡只位移情况,提高跟踪的准确率。

图9为编号为3-2-3的视频片段测试效果,展示序列中每幅图的时间间隔约为3 s,可反映持续时间内的跟踪效果。由图可见,以呼吸困难鸡只为观测主体,短时跟踪方法实现了连续帧的鸡头目标编号对应,并获取鸡只个体头部的短时动作序列。其中由于参考帧变换、鸡头遮挡等导致鸡头编号出现变化,但在短时间跟踪内获取的动作序列作为呼吸困难动态行为的一部分具有一定的参考价值。

图9 短时跟踪效果Fig.9 Short time tracking effect

由于在该阶段出现张口呼吸的鸡为病情比较严重的鸡,会伴随闭眼、活动量减少等情况,本文方法需要排除其他活动鸡只的干扰,且本文研究对象为笼养群鸡,需要检测的是该笼中是否存在呼吸困难的鸡只,所以不需要长时间的身份识别,故本文所提出的基于交并比的短时间跟踪方法可用于群养鸡中的个体短时间跟踪与动作序列获取,效果较好。

4.3.2呼吸困难动态检测效果与分析

根据4.3.1节得到的结果可形成鸡只个体的动作序列,以0代表闭口,1代表张口,形成不同鸡只个体的01字符串,并通过01片段的出现频率判断是否存在鸡只呼吸困难情况。现利用353组视频片段进行测试,每个视频时长约1 min。其中含有呼吸困难鸡只的视频48个,正常鸡只视频305个。表3为不同视频片段呼吸情况识别效果,识别内容包括鸡只跟踪编号、鸡只动作序列与通过动作序列判断的鸡只呼吸次数。

表3 呼吸困难情况识别结果Tab.3 Identification results of Dyspnea

表3为部分检测结果,在同一视频片段中对不同编号的鸡只进行跟踪并获取动作序列,通过01片段判断是否存在呼吸困难情况,当视频片段中出现3次及以上呼吸时被认为是存在呼吸困难症状。

以呼吸困难视频为观测主体,则呼吸困难识别正确的为36,呼吸正常识别正确的为288,呼吸正常识别错误的为17,呼吸困难识别错误的为12,与人工检测结果相比较,其准确率为91.8%,召回率为75%,精准率为67.9%,可以较为准确地检测群鸡中是否存在呼吸困难症状的鸡只。

5 结论

(1)提出一种基于改进YOLO v5的鸡只呼吸道疾病早期检测方法。通过改进YOLO v5算法对鸡头目标进行检测并识别是否为张口情况;再利用基于交并比的鸡头短时间跟踪方法对识别到的鸡头目标进行时空融合分析,进行帧间编号对应,实现鸡只的短时跟踪与动作序列提取;根据动作序列进行呼吸行为判定,通过呼吸的频率检测群鸡中是否存在鸡只呼吸困难现象。

(3)以呼吸困难动态特征为研究点进行鸡只呼吸道疾病早期检测的研究,可精确识别鸡只头部特征并以此为基础检测群鸡中是否存在呼吸困难鸡只,为传染性支气管炎等呼吸道疾病的早期预警提供了参考。

猜你喜欢

鸡头张口病鸡
鸡维生素B1缺乏症的诊治分析
集束化护理对鼻咽癌放疗患者口腔黏膜炎及张口受限的影响
从头说起
病鸡治疗期饲料调整与控制
蛋鸡得了疲劳症咋办
仰天大笑
唐宋时期安化峡、安化县及安化镇位置考辨——兼谈秦汉时期的鸡头道
病鸡治疗期饲料调整与控制
老年人睡醒后口干是何因?
鸡头菜