牛养殖业中,牛只的行为与其健康状态之间存在密切关联[1]。牛只的行为可以作为反映牛只健康状况的重要指标,通过观察和分析牛只的行为,可以及时发现潜在的健康问题或异常情况,如牛只高频次的回舔身体可能原因有母牛产犊、调节体温、牛只身体表皮有蜱虫等,由此来警惕牛只产犊、牛舍温度过高、患有皮肤病、牛舍环境脏乱等状况[2]。目前,通过人工监测的方法观察牛只行为,需要消耗大量的时间、金钱和人力,无法实现个体化和精细化管理。为了解决目前存在的问题,计算机视觉作为智慧农业领域的热门技术,可以长时间对牛只进行监控,代替人类视觉对牛只图像进行分析,以此判断牛只是否健康[3]。
目前国内外学者针对牛只行为识别跟踪展开了大量研究,主要分为两方面:针对牛只行为的识别,利用YOLO系列模型目标检测识别牛只的日常行为;关于牛只的跟踪,大部分学者采用多目标跟踪(MOT)算法,通过给牛只分配身份编号(Identity,ID),来跟踪牛只的运动轨迹。
目标检测方面,因为牛的花纹特征较为明显,个体较大,目标检测较为容易。白强等[4]提出了一种改进的YOLO v5s奶牛多尺度行为识别方法,通过改进YOLO v5s的网络结构,添加SE注意力机制优化检测器,提取奶牛特征,识别奶牛站立、喝水、行走、躺卧等行为。王政等[5]融合YOLO v5n与通道剪枝算法,对主干的特征提取网络进行修剪,构建轻量化网络模型结构,提高检测速度。实验结果表明其模型在复杂环境下仍能对奶牛的发情行为保持较高的识别率。WANG等[6]在YOLO v5模型上引入基于空洞空间金字塔池化和C3GC-3特征增强模块,实现了高层语义信息的多尺度融合和在密集奶牛图像中的特征提取能力,并结合CIoU损失函数,提高奶牛爬跨行为检测精度。
跟踪方面,牛只移动速度较慢,相对静态目标更容易被识别和跟踪。李琦等[7]设计了一种跟踪草原牛的方法,其融合YOLO v3[8]与DeepSORT跟踪算法,结合PID算法控制云台,用摄像头控制跟踪草原牛,实现了对草原牛的跟踪。CHO等[9]采用YOLO v5和DeepSORT算法[10-11]将其应用于黑牛的识别与跟踪上,并发现黑牛跟踪时都具有相同或相似的纹理特征,即使人眼也不容易识别。因此,所提出的系统仍然存在一些ID切换和虚假检测问题需要解决。涂淑琴等[12]为改善DeepSORT算法引发的猪只重叠与遮挡造成的猪只身份编号频繁跳变,改进了DeepSORT算法的轨迹匹配过程,降低了ID错误频率。涂淑琴等[13]还提出了改进ByteTrack算法,利用YOLOX[14]对猪进行识别,设计并实现BYTE数据关联的轨迹插值后处理策略,相比DeepSORT算法性能显著提升。SU等[15]比较了一些先进MOT算法,如DeepSORT、StrongSORT 和定制的轻量级跟踪算法,提出了将改进的StrongSORT应用于黑牛身上,发现YOLO v7和StrongSORT适用于黑牛发情行为的跟踪,同时也可以用于检测牛只其他行为,如跛行和爬跨等行为。
本文采用YOLO系列中最先进的YOLO v8算法和前沿的BoTSORT算法。在YOLO v8基础上通过替换特征提取模块、融合注意力机制、更换上采样、添加动态目标检测器、更改损失函数等对YOLO v8进行改进,提高牛只行为的识别率。然后,对比多个MOT算法如ByteTrack[16]、StrongSORT[17]和BoTSORT[18]等选取最高跟踪率的BoTSORT作为牛只的跟踪算法。最后将检测到的牛只行为信息引入跟踪算法,输出每头牛只的ID,同时显示相应行为,在白天、夜晚、雨天、风沙等复杂天气下实现在牛舍养殖环境中对多头牛只行为的识别和跟踪。
本研究视频采集于河北省邢台市新河县某小型养殖场牛舍,摄像头安装于牛舍西南角电线杆上,图像分辨率为2 560像素×1 440像素,帧率为20 f/s,视频保存格式为MP4。共选取2023年4月和10月不同时段视频59段,牛只17头,包含白天、夜晚、雨天、风沙等自然天气场景。在识别牛只站立、躺卧、采食、饮水等日常行为的同时,加入牛只回头舔舐自己身体(回舔)行为。牛舍养殖环境如图1所示。
图1 牛舍环境实例图
Fig.1 Example of cowshed environment
将2023年4月采集的49段视频利用视频分帧技术分帧,保存格式为jpg,去除冗余图像后,筛选3 259幅图像通过LabelImg软件进行牛只行为标注,将数据集按7∶2∶1划分为训练集、验证集、测试集,得到训练集图像2 281幅,验证集图像652幅,测试集图像326幅。多目标跟踪数据集通过选择不同场景和不同时间段的2023年4月和10月的16段视频,每段视频时长60 s,利用DarkLabel软件标注牛只跟踪轨迹,制作MOT17数据集[19],记录检测目标ID、边框大小、坐标,保存格式为txt,其中8段用于训练,8段用于测试。重识别数据集是通过将17头牛只的不同视觉角度、行为姿态等图像构建ReID数据集,共10 744幅图像,每头牛只平均有632幅图像。
本文所提出的基于牛舍养殖环境下多目标牛只行为跟踪技术路线如图2所示。首先,将牛只行为视频中第i帧图像输入YOLO v8目标检测器,检测出每头牛只置信度、检测框和行为类别,得到第i帧的检测结果;然后,将检测结果分为高分检测框和低分检测框,并与相机运动补偿后的第i-1帧跟踪轨迹预测算法得到的预测框进行目标关联匹配,得到第i帧的匹配结果;最后,依据当前匹配结果更新轨迹状态,循环重复处理连续视频帧图像,输出牛只多目标跟踪图像结果。
图2 多目标牛只行为跟踪技术路线图
Fig.2 Technical route diagram for multi target bull behavior tracking
针对牛只的目标检测,选取YOLO系列中最新的模型YOLO v8,相比YOLO v5和YOLO v7,在牛只的多行为识别分类上,YOLO v8比前者在精度和速度上都有提升。YOLO v8主要分为n、s、m、l、x等模型,其中YOLO v8n模型内存占用量较小,在保持较高速度的同时,能够准确地检测常见大小的目标物体,更适合用于含有成年牛只和幼仔牛只的牛舍,因此选择在YOLO v8n模型基础上进行改进。
YOLO v8n模型结构主要由Backbone、Neck、Head构成。主干网络Backbone,使用CSP思想,通过Conv模块使用3×3的卷积核进行卷积操作提取特征。为了避免梯度消失和减轻训练难度,使用残差连接,C2f模块将输入的特征图转换为全连接层输入。最后SPPF模块接收不同尺度池化窗口,对特征图池化拼接。Neck端主要采用自下而上的特征提取和自上而下的特征融合。上采样模块Upsample使用邻近插值算法,经过上采样后将特征图尺寸扩大2倍。Concat模块将来自主干网络Backbone的特征图与上采样操作后得到的特征图进行连接,以融合低级和高级的语义信息。特征金字塔(FPN)的Neck部分通过卷积操作进行降维和通道数调整。Head端检测器Detect由一系列卷积层和全连接层组成,负责在特征图上定位和识别目标,生成边界框的位置和类别预测。
2.2.1 特征提取C2f-faster
牛舍养殖环境下,牛只活动场地较为拥挤,背景杂乱,牛只遮挡严重。当出现雨天、风沙天气时,电子监控摄像头表面会有水滴、尘土,摄像头会剧烈晃动等都会导致画面模糊。以上情况下,卷积神经网络在提取图像特征时通常会引入一些冗余特征和噪声,这会干扰模型对牛只行为的正确识别。卷积操作在每个位置上都进行一次滤波,同时卷积神经网络的多层堆叠也会增加模型的复杂度,使得模型需要更多的计算资源。
消除干扰特征冗余,减少模型复杂度,有利于提高目标检测精度。MobileNets、ShuffleNets和GhostNet等利用深度卷积(DWConv)[20]和分组卷积(GConv)[21]来提取空间特征。然而,在减少浮点运算量的过程中,操作符通常会遭受内存访问增加的副作用。FasterNet[22]提出了一个新的部分卷积PConv,利用特征映射冗余性,系统地在部分输入通道上应用规则卷积(Conv),而不影响其他通道的变化。并在PConv基础上附加一个点向卷积(PWConv),以充分有效地利用来自所有通道的信息。每个FasterNet Block都有一个PConv层,后面连接2个PWConv,或1×1Conv层。它们共同形成反向残差块的结构,其中中间层具有扩展的通道数,并且还添加了快捷连接以重复使用输入特征。基于FasterNet Block构造的FasterNet在分类、检测等方面有很高的性能,其结构如图3a所示。本研究将YOLO v8网络中的C2f模块进行改进,把FasterNet Block嵌入C2f中,形成新的结构C2f-faster,用于在牛只目标检测中进行特征提取和处理,在减少参数量和计算复杂度的同时,保持一定的感受野范围和非线性表示能力,其结构如图3b所示。
图3 FasterNet Block结构和C2f-faster结构
Fig.3 FasterNet Block structure and C2f-faster structure
2.2.2 CARAFE上采样
YOLO v8的Upsample上采样层以nearest最近邻插值方法为主,依赖于最近邻像素值,无法观测获取到图像的细微变化和密集语义信息,使图像失真。当图像放大时,会使图像模糊化,感受视野较小。所以本文采用大感受视野的轻量级上采样算子CARAFE,它可以在大范围内接收聚合语义信息。CARAFE[23]采用特征感知重组对特征进行上采样,利用底层信息对每个位置进行预测重组核、定义重组特征。CARAFE流程如图4所示,包括上采样核预测模块和特征重组模块两部分。首先将H×W×C特征图通过1×1卷积压缩为H×W×Cm,再经过内容编码和上采样核预测,得到的上采样核,对其进行归一化操作后,使其卷积核权重和为1。然后特征重组模块,将输出特征图中的每个位置映射回输入特征图,取出其中心Kup×Kup的区域,并和预测后该点的上采样核作点积得到输出值。相同位置的不同通道共享同一个上采样核,最后输出σH×σW×C的输出特征图。
图4 CARAFE流程图
Fig.4 CARAFE process diagram
2.2.3 BiFormer注意力机制
成年牛只目标个体较大,动作幅度较明显,易于检测;幼仔牛只个体目标较小,识别精度低,容易漏检。针对幼仔牛只的小目标检测,在YOLO v8n模型基础上,在Backbone、Neck端之间引入动态稀疏注意力BiFormer,以查询自适应的方式关注小面积牛只外观特征标记,而不会分散其他不相关标记的注意力,因此它具有良好的性能和计算效率。
在SPFF后添加BiFormer注意力机制模块[24],可以去除冗余背景特征,聚焦牛只目标检测区域,并与CARAFE上采样相连接,帮助模型在低分辨率的特征图上进行关注度的加权,减少在高分辨率上的计算复杂性,准确定位牛只目标,从而提高模型的运行效率。BiFormer以BRA为核心构建块,采用4层金字塔结构。具体步骤:阶段1使用重叠图像块嵌入,阶段2~4图像合并模块,降低分辨率,增加通道数。然后使用连续的BiFormer Block来转换输入数据的特征。BiFormer结构图如图5a所示。每个BiFormer Block开始都先应用3×3深度可分离卷积隐式编码相对位置信息,然后BRA模块捕捉双向相对注意力,最后使用双层感知器(MLP)模块进行关系建模和位置嵌入。其结构如图5b所示。
图5 BiFormer结构图
Fig.5 BiFormer structure diagram
2.2.4 动态检测头DyHead
YOLO v8模型是将输入图像通过Backbone 提取特征,得到不同尺度的特征图(P3、P4和P5),特征图再经过Detection Head 进行目标检测、分类,得到识别结果。在牛舍环境下检测牛只行为,因为多类型行为较为相似,不便于区分,需要高精度检测,研究面临许多问题挑战。首先,牛只处于生长发育阶段,大小不一,会使多尺度不同的牛只出现在同幅图像上,需要检测器有较高的多尺度感知能力。其次,牛只活动范围大,行为姿势多变,检测位置易发生变化,检测器需要空间感知牛只在不同空间位置之间的关系。最后,检测器需要具有任务感知能力,因为牛只检测有不同表征(例如:边界框、中心和角点),这些表征具有完全不同的目标和约束。为了提高牛只检测精度,引入DyHead[25]提高目标检测模型头部的表示能力,DyHead检测范式如图6所示。
图6 DyHead检测范式
Fig.6 DyHead detection paradigm
DyHead使用新的动态头部框架来统一关注目标检测头,分别从尺度感知的特征层次、空间感知的空间位置和任务感知的输出通道内连贯地组合多个自注意机制这3个方面提高检测器能力。DyHead根据牛只尺度大小引入尺度感知注意力(Scale-aware attention),根据不同尺度的语义重要性动态融合特征。利用空间感知注意力(Spatial-aware attention)在空间维度上处理牛只特征,并关注空间位置和特征层次之间的判别区域。最后部署任务感知注意力(Task-aware attention),根据牛只行为的不同表征,进行目标分类、中心点回归和边框回归。其中πl、πs、πc分别是作用于维度L、S、C的3种不同的注意力函数。
2.2.5 Focal SIoU损失函数
YOLO v8默认采用完全交并比(CIoU)做边框回归损失函数,通过预测框与目标框的纵横比,来评估预测框与真实框位置差异。但CIoU没有考虑到预测框与目标框之间方向的匹配性,因此本文引入了SIoU[26]作为检测框回归损失函数。SIoU 在CIoU基础上添加所需回归之间的角度因素,重新定义惩罚指标。牛舍环境下牛只行为数据集相对不平衡,站立行为较多,回舔行为较少,两种行为相似,为解决数据集中正负样本分布不均衡的问题,采用FocalLoss函数[27],其通过降低简单负样本权重进行训练的方式来使检测模块区分站立、回舔行为。基于以上情况,FocalLoss结合SIoU构建Focal SIoU损失函数。FocalLoss函数公式为
FocalLoss=-α(1-pt)γlgpt
(1)
式中 pt——模型预测概率
α——平衡参数,用来平衡正、负样本的比例
γ——可调节的聚焦参数,用来减少易分类样本损失
SIoU表达式为
LSIoU=LIoU-(Δ+Ω)/2
(2)
式中 LSIoU——SIoU损失值
Δ——距离损失值
Ω——形状损失值
LIoU——IoU损失值
基于以上模块对YOLO v8n进行改进得到的FBCD-YOLO v8n(FasterNet、BiFormer、CARAFE和DyHead)结构如图7所示。
图7 FBCD-YOLO v8n网络模型
Fig.7 FBCD-YOLO v8n network model
多目标跟踪算法通过目标检测算法来跟踪场景内的目标物体,从而估计视频中多个目标的运动轨迹,给每个目标分配一个唯一ID标识符。目前跟踪步骤分为:运动模型和外观估计,通过卡尔曼滤波(Kalman filter,KF)[28]预测后面序列帧的运动轨迹(Tracklets)边界框;目标定位和外观模型,通过预测轨道边界框和检测边界框之间的交并比(IoU)和重识别(ReID),将视频序列的最新帧检测结果与当前轨迹集合相关联。
目前主流的跟踪算法有DeepSORT、ByteTrack、StrongSORT,本文选用BoTSORT算法,它是在ByteTrack的基础上进行改进,整体采用SORT框架,结合了运动特征和外观信息的优势,加入摄像机运动补偿和一个更精确的卡尔曼滤波状态向量,实现了在复杂场景下对多目标牛只行为的稳定跟踪。
3.1.1 卡尔曼滤波器
为了模拟图像上运动轨迹,通常使用具有恒定速度模型的离散卡尔曼滤波器对运动中的检测目标进行运动建模。经典跟踪器 DeepSORT中提出的卡尔曼滤波状态表征试图估计框的纵横比而不是宽度,这导致宽度估计不准确。SORT的卡尔曼滤波状态向量为7元组, DeepSORT的卡尔曼滤波状态向量为8元组,其将SORT元组中第4维负责边界框纵横比的预测改为边界框的高度预测。而BoTSORT为获得更好的性能,重新选择定义卡尔曼滤波的状态向量,BoTSORT将纵横比改成了预测宽度,直接估计边界框的宽度和高度。
3.1.2 摄像机运动补偿
跟踪器依赖于预测目标运动轨迹边框和检测目标轨迹边框的重叠,动态化的摄像机会使视频画面晃动,边框位置发生变化,造成预测匹配不准确。牛舍的摄像头在面对风沙天气时,由于风的影响,摄像头会轻微晃动,Box的像素位置会发生剧烈变化导致牛只跟丢。由于缺乏摄像机运动数据、固有矩阵,可将相邻帧之间的图像配准,看成近似采用摄像机的刚性运动在图像平面上的投影,即利用OpenCV[29]视觉库中带有仿射变换的算法的视频防抖模块,这种方法称为全局运动补偿(Global motion compensation,GMC)。这项技术可理解为相机中牛只运动等同于坐标系的变换,牛只的位置、运动方向等需要重新投影到新坐标系中, 因此需要求解坐标系的变换矩阵。相机对牛只运动补偿示意图如图8所示。
图8 牛只运动补偿示意图
Fig.8 Cattle motion compensation schematic
首先,通过OpenCV提取图像特征点,并且通过特征点进行稀疏光流跟踪,使用RANSAC计算求解获取运动背景下目标的仿射变换矩阵,进而预测从第k-1帧的坐标系转换为第k帧坐标系的牛只边界框,称为运动补偿。仿射变换矩阵平移部分仅影响边界框的中心位置,而其他部分则影响所有状态向量和噪声矩阵,需要通过相机运动校正方程解决。相机运动校正方程为
(3)
k|k=
′k|k-1+Kk(zk-Hk
′k|k-1)
(4)
Pk|k=(I-KkHk)P′k|k-1
(5)
式中 k|k-1、
′k|k-1——时刻k时,相机运动补偿前、后的KF预测状态向量
Pk|k-1、P′k|k-1——校正前、后KF的预测协方差矩阵
Rk——测量误差的协方差矩阵
zk——测量向量 I——单位矩阵
Hk——测量矩阵,用于将状态向量映射到测量空间,以便在卡尔曼滤波的测量更新步骤中进行状态估计的修正
Kk——增益矩阵,用于将预测的状态估计与实际测量结果进行融合
3.1.3 IoU+ReID的融合机制
为了更准确地跟踪目标位置,BoTSORT将检测目标的外观特征与跟踪器相融合。采用FastReID 库中的BoT (SBS)[30]之上的更强基线,以ResNeSt50作为主干,采用指数移动平均(EMA)机制来更新轨迹外观状态。由于外观状态容易受到物体遮挡影响,所以只考虑高置信度检测。为了匹配平均轨迹外观状态和新检测的嵌入向量,测量余弦相似度,使用IoU+ReID融合机制的策略,即IoU距离矩阵和余弦距离矩阵来进行匹配。首先,对IoU分值,低余弦相似度或距离较远的侯选者会被拒绝。然后,使用矩阵每个元素中的最小值作为成本矩阵C的最终值。IoU-ReID融合管道公式为
(6)
其中
(7)
式中 Ci,j——成本矩阵C的(i,j)元素
第i个轨迹预测边界框与第j个检测边界框间的IoU距离,表示运动成本
min——最小值函数
平均轨迹外观描述符i和新检测描述符j之间的余弦距离
新外观成本
θiou——接近阈值,用于舍弃不可能的轨迹和检测对
θemb——外观阈值,用于将轨迹外观状态和检测嵌入向量的正关联与负关联分开
基于多目标跟踪的BoTSORT算法利用YOLO v8对牛只进行目标检测,将卡尔曼滤波器(KF)、摄像机运动补偿(CMC)、IoU+ReID的融合机制进行修改和改进,将它们集成到跟踪算法ByteTrack中。BoTSORT跟踪算法主要步骤如下:①YOLO目标检测。②预处理和阈值选择。③外观特征提取,ReID模型提取外观特征。④估计相机运动,CMC对卡尔曼滤波器和预测边界框修正。⑤数据关联,涉及数据与之前检测到帧中的数据关联起来。⑥轨迹管理,包括更新卡尔曼滤波器和外观信息,以及创建轨迹和删除轨迹,经过后处理,得到跟踪结果。图9为使用BoTSORT进行牛只跟踪的过程。
图9 BoTSORT跟踪算法流程图
Fig.9 BoTSORT tracking algorithm flowchart
本实验在Windows 10系统环境下进行,编程平台为pycharm,编程语言为python 3.8,深度学习框架为pytorch 1.12.1。硬件环境为 AMD锐龙R5 5600 处理器、64 GB内存、NVIDIA GeForce RTX 4070显卡。
实验通过YOLO v5n、YOLO v7tiny和YOLO v8n共3个目标检测模型训练牛只行为标签数据集,输入图像尺寸为640像素×640像素,图像批量大小为16,学习率为0.01,模型训练300轮,在保证训练收敛的前提下,再对数据集进行评价。跟踪方面,对于SORT跟踪算法,IoU阈值为0.7,conf阈值为0.5,其余参数取默认值。
为了验证牛只目标检测性能,采用准确率(Precision,P)、查全率(Recall,R)、帧速率(Frames per second,FPS)和平均精度均值(mean average precision,mAP)作为评价指标。实验中,mAP取IoU阈值为0.5(mAP@0.5)以及不同IoU阈值0.5~0.95(mAP@0.5:0.95),综合评价模型的准确性。对于牛只跟踪的评价,本研究选取多目标跟踪准确率(Multiple object tracking accuracy,MOTA)、多目标跟踪精确度(Multiple object tracking precision,MOTP)、识别平均数比率(Identification F1,IDF1)、高阶跟踪精度(Higher order tracking accuracy,HOTA)、大多数跟踪成功率(Mostly tracked ratio,MTR)、主要跟踪丢失率(Mostly lost ratio,MLR)6个评价指标,衡量跟踪模型性能,其中P、R、mAP越高,表示目标检测识别越准确;FPS越高,表示目标检测速度越快;MOTA、MOTP、IDF1、HOTA、MTR越高,而MTR越低,反映跟踪器性能越好。
针对牛只行为数据集,分别训练了YOLO v5n、YOLO v7tiny、YOLO v8n和FBCD-YOLO v8n模型,实验对比了牛只行为识别准确率、查全率、平均精度均值和帧速率来评估模型性能,实验结果如表1所示。
表1 不同模型实验结果
Tab.1 Different models experiment results
模型P/%R/%mAP@0.5/%帧速率/(f·s-1)YOLO v5n91.887.991.424.4YOLO v7tiny90.586.291.714.2YOLO v8n91.189.392.432.5FBCDYOLO v8n93.890.094.824.2
相比较YOLO v5n和YOLO v7tiny,YOLO v8n查全率提高1.4、3.1个百分点,平均精度均值提高1、0.7个百分点,帧速率提高8.1、18.3 f/s,准确率比YOLO v5n略低。说明YOLO v8n比YOLO v5n和YOLO v7tiny模型性能更强,在YOLO v8n模型上改进更适合牛只的行为分类。在YOLO v8n基础上改进的FBCD-YOLO v8n准确率为93.8%,查全率为90%,平均精度均值为94.8%,帧速率为24.2 f/s,比较其他3个模型,综合性能更优。
对比常用损失函数CIoU、EIoU、GIoU、DIoU 和SIoU在YOLO v8n上收敛后的平均精度均值,如表2所示。实验结果表明,使用SIoU损失函数相比较其他IoU精度更高,YOLO v8n精度提高到93.6%;SIoU损失函数引入分类FocalLoss后YOLO v8n(Focal SIoU)模型精度提高0.2个百分点,比YOLO v8n(CIoU)提高1.4个百分点。说明对于牛只行为数据集,在处理类别不平衡和难分类样本的情况下,结合 FocalLoss 和边界框损失函数的回归角度可以在目标检测任务中提升模型性能。
表2 不同IoU损失模型平均精度均值对比
Tab.2 Performance comparison of different IoU loss %
模型 IoUFocal+IoUYOLO v8n+CIoU92.493.2YOLO v8n+EIoU92.992.9YOLO v8n+GIoU92.993.5YOLO v8n+DIoU93.093.6YOLO v8n+SIoU93.693.8
为验证FBCD-YOLO v8n模型的有效性,从牛只总行为的mAP和牛只不同类别行为的平均精度(AP)进行分析,设计C2f-faster、BiFormer、CARAFE、DyHead等改进方法的消融实验,如表3所示。从实验结果来看,采用YOLO v8n模型对牛只行为识别的分类表现良好,尤其站立和躺卧行为精度较高,平均精度分别为97%和99.1%,而在回舔行为上表现稍显不足,仅为81.3%。分析原因为:牛只躺卧行为时,四肢身体全部卧于地面,特征明显,容易识别;而其他4种行为都是四肢立于地面,行为特征较为相似,其中站立和回舔区别在于牛只的头部扭动姿势,不容易区分,容易混淆,所以识别精度较低。后续实验随着不同模块的引入,模型的性能逐渐提升,特别是在回舔和饮水行为上,使用特定方法后性能提升较为显著。
表3 消融实验对比结果
Tab.3 Comparative results of ablation experiment %
模型mAP@0.5平均精度站立躺卧饮食回舔饮水YOLO v8n92.497.099.195.681.389.0YOLO v8n+C2ffaster92.797.099.295.783.888.1YOLO v8n+BiFormer93.096.899.295.383.789.8YOLO v8n+CARAFE+ DyHead93.397.299.295.784.090.5YOLO v8n+Focal SIoU93.897.499.296.185.790.6FBCDYOLO v8n94.897.299.296.188.792.6
YOLO v8n+C2f-faster较YOLO v8n对牛只回舔行为识别平均精度提高了2.5个百分点。在YOLO v8n中加入BiFormer注意力机制,回舔、饮水行为识别的平均精度提高2.4、0.8个百分点。分析原因是验证集中有幼仔牛只回舔和饮水,BiFormer检测到小目标特征行为信息,识别正确。同时将CARAFE+DyHead两个模块加入YOLO v8n中,回舔、饮水行为提升效果明显,分别提升2.7、1.5个百分点。分析原因是在大感受视野下,CARAFE和DyHead对处理动态和姿态变化较大的行为时尤为有效。结合之前实验模块,引入Focal SIoU损失函数,构建FBCD-YOLO v8n,牛只行为mAP@0.5为94.8%,站立为97.2%,躺卧为99.2%,饮食为96.1%,回舔为88.7%,饮水为92.6%。综合来看,FBCD-YOLO v8n 模型在处理各种牛只行为分类任务中都表现出色。FBCD-YOLO v8n模型牛只行为训练过程曲线如图10所示。
图10 训练过程曲线
Fig.10 Training process curves
牛只的重识别模型实验旨在解决在不同帧中,可能出现因角度、光照变化等造成的同一头牛外观特征不一样,从而导致目标识别和跟踪方法在这种情况下效果不佳的问题。通过重识别模型,可以在不同时间和场景中准确地将同一头牛的不同外观关联起来,从而提高跨时间段、跨场景的牛只识别能力。
实验使用Market 1501数据集格式,制作牛只重识别数据集,采用ResNet50模型训练牛只重识别,并获得其权重文件。在牛只重识别数据集上训练重识别模型,批量大小为32,迭代100轮,其余参数取默认值。
重识别实验结果如图11所示。训练后使用Tensorboard观察重识别准确率,其纵坐标表示重识别模型预测准确率,值越接近1,说明模型提取特征能力越强,即重识别效果越好;横坐标表示训练步数,指模型参数根据训练数据进行一次更新的次数。当训练步数为2.34×104时,准确率曲线趋于平稳,此时模型已收敛,准确率为100%。实验表明,重识别模型可以较好地提取不同牛只外观特征。
图11 重识别模型准确率变化曲线
Fig.11 Re-identification model accuracy change curve
关于牛只的跟踪实验,选取几种较为先进的MOT跟踪算法做对比实验。实验结果如表4所示,从 MOTA 来看,BoTSORT 算法表现最佳,准确率达到96.1%,而ByteTrack和 StrongSORT 分别为95.2%和94.6%。在MOTP方面,BoTSORT 算法为 78.6%,稍低于其他两个算法。在IDF1和HOTA方面,BoTSORT 表现最好,为98.0%和78.9%,相比StrongSORT 和 ByteTrack,IDF1提高1.7、3.2个百分点,HOTA提高1.1、1.3个百分点。在跟踪覆盖率上,BoTSORT 和 StrongSORT 都为93.7%,这意味着BoTSORT 和 StrongSORT 算法都能够很好地捕捉到大多数真实目标,几乎没有漏报。在跟踪错误率上,所有算法都为 0,表明跟踪目标没有误报。整体来看,MOTP和HOTA精度略低。分析MOTP略低的原因是牛只在春季和秋季活动较为频繁,跟踪数据集采集于4月和10月,牛舍内牛只运动繁多、移动速度较快且行为姿势复杂多变,牛只跟踪时跟踪器预测的位置与实际位置之间的误差会增加,导致位置估计不准确,从而降低了MOTP。分析HOTA精度略低的原因是牛舍场景复杂,活动范围较小,牛只活动较为拥挤,牛只运动时有围墙、树木和其他牛只遮挡,这可能会导致ID切换,因为牛只被遮挡或与其他牛只发生交互,导致跟踪系统难以正确识别牛只目标间的关联关系,进而降低HOTA得分。综合评价,BoTSORT 算法在多个指标下表现最佳,特别是在 MOTA、IDF1、MTR和MLR 方面表现出色,该算法在保持较高检测率的同时,较少漏检,并且没有误报,非常适用于牛只跟踪应用领域。
表4 不同MOT算法跟踪性能对比
Tab.4 Performance comparison of different MOT %
MOT算法MOTAMOTPIDF1HOTAMTRMLRByteTrack95.278.894.877.692.80StrongSORT94.678.996.377.893.70BoTSORT96.178.698.078.993.70
为了测试BoTSORT算法的性能及鲁棒性,在设计跟踪实验时增加了一些具有挑战性、更接近实际应用场景的元素。首先,实验引入天气场景、牛只活动程度等因素,作为实验的控制变量。其次,牛只跟踪数据集选取了4月和10月两个时间段的视频,数据采集间隔较长,同时考虑到牛只在这段时间内生长并且身躯发生变化,牛只数量由4月的15头增加到10月的17头。实验共选取8段不同场景条件下的视频作为多目标牛只跟踪测试集,其中视频01、02、05、06、07、08采集于4月,视频03、04采集于10月。实验结果如表5所示。
表5 不同场景下BoTSORT算法跟踪性能对比
Tab.5 Performance comparison of BoTSORT algorithm in different scenes %
视频编号天气场景牛只数量活动程度MOTAMOTPIDF1HOTAMTRMLR01白天14稀疏10077.810078.9100002白天14拥挤97.282.598.682.492.9003白天17稀疏94.580.997.281.686.7004白天17拥挤92.180.196.080.186.7005雨天15拥挤93.579.296.876.493.3006风沙12拥挤99.773.599.874.0100007夜晚(19:30)13稀疏98.776.799.377.9100008夜晚(20:00)13拥挤90.579.895.176.892.30
在图12a白天的稀疏活动场景中(视频01),BoTSORT 的 MOTA 和 IDF1能够达到100%,显示出较高的跟踪能力。相比其他天气场景,白天对牛只跟踪(视频01、02、03、04)的HOTA都高,分别为78.9%、82.4%、81.6%、80.1%。可以看出,BoTSORT算法对牛只目标检测、位置估计和目标关联在白天时跟踪更为合适。对4月和10月白天场景下跟踪对比发现,10月期间稀疏和拥挤场景下(视频03、04),牛只跟踪MOTA、IDF1和MTR稍微降低。分析原因可能是:10月跟踪的牛只数量增加,而YOLO v8目标检测牛只数据集采集于4月,新加入的牛只的行为特征在训练数据中未被充分覆盖,并且之前训练的牛只在10月时身体尺寸和行为姿态发生了变化,从而影响跟踪性能;10月的实验中,如图12c和图12d所示,摄像头视野出现树木枝叶和草丛遮挡情况。这种遮挡因素增加了跟踪难度,新的环境因素引入了更多不确定性,可能导致MOTA、IDF1和MTR等指标略微降低。在各个拥挤的场景中(视频02、04、05、06、08),如图12e雨天中牛只交叉重叠,BoTSORT 同样表现出色,MOTA 和MOTP 都在较高水平上,表明算法在拥挤场景中牛只位置估计准确,能够有效跟踪物体。尤其图12f风沙天气下,MOTA 和IDF1达到99.7%和99.8%, MTR和MLR分别为100%和0,代表风沙天气下多目标跟踪牛只没有漏检和误报。分析原因是BoTSORT算法中引入了相机运动补偿,降低了摄像头晃动情况下牛只跟踪预测偏差,提高了风沙天气下对牛只跟踪的准确率。夜晚场景下(图12g和图12h),分别为19:30和20:00两个时段(视频07、08),并且在不同的活动程度下(稀疏和拥挤)使用了 BoTSORT 算法进行目标跟踪,BoTSORT 仍然保持高水平的性能,但牛只拥挤情况相对于稀疏场景跟踪准确率稍微下降。分析原因是夜晚的光线较暗,目标间相互干扰增加,造成了一些轻微的跟踪误差,尽管 MOTA 和 MOTP 稍有下降,但跟踪效果仍然很好。综合来看,BoTSORT 算法在不同天气场景和活动程度下都展现了优秀的跟踪性能,特别是在拥挤场景中也能够保持高水平的识别和跟踪准确性。
图12 BoTSORT跟踪示例
Fig.12 BoTSORT tracking examples
(1)提出了基于改进YOLO v8的牛只行为识别与跟踪方法。采用FBCD-YOLO v8n算法对牛只进行目标检测,获得牛只在图像中的姿态信息。利用BoTSORT算法实现对牛只的精确跟踪。将改进后的YOLO v8检测到的行为类别信息输入到BoTSORT算法中,实现在牛舍养殖环境下对牛只的多目标行为识别跟踪。
(2)实验结果表明,改进后的YOLO v8n模型目标检测的mAP为94.8%,对比YOLO v5n、YOLO v7tiny和YOLO v8n提高3.4、3.1、2.4个百分点。牛只的重识别实验准确率为100%。BoTSORT跟踪算法实验结果的MOTA为96.1%,MOTP为78.6%,IDF1为98.0%,HOTA为78.9%,MTR为93.7%,MLR为0。对比ByteTrack 和 StrongSORT算法,本文方法跟踪性能更优。
[1] YAZDANBAKHSH O, ZHOU Y, DICK S. An intelligent system for livestock disease surveillance[J]. Information Sciences, 2017, 100(378): 26-47.
[2] JENSEN M B. Behaviour around the time of calving in dairy cows[J]. Applied Animal Behaviour Science, 2012, 139(3-4): 195-202.
[3] CHEN C, ZHU W, NORTON T. Behaviour recognition of pigs and cattle: journey from computer vision to deep learning[J]. Computers and Electronics in Agriculture, 2021, 187: 106255.
[4] 白强,高荣华,赵春江,等.基于改进YOLO v5s网络的奶牛多尺度行为识别方法[J].农业工程学报,2022,38(12):163-172.BAI Qiang, GAO Ronghua, ZHAO Chunjiang, et al. Multi-scale behavior recognition method for dairy cows based on improved YOLO v5s network[J]. Transactions of the CSAE, 2022, 38(12): 163-172.(in Chinese)
[5] 王政,许兴时,华志新,等.融合YOLO v5n与通道剪枝算法的轻量化奶牛发情行为识别[J].农业工程学报,2022,38(23):130-140.WANG Zheng, XU Xingshi, HUA Zhixin, et al. Lightweight recognition for the oestrus behavior of dairy cows combining YOLO v5n and channel pruning[J]. Transactions of the CSAE, 2022, 38(23): 130-140.(in Chinese)
[6] WANG R, GAO Z, LI Q, et al. Detection method of cow estrus behavior in natural scenes based on improved YOLO v5[J]. Agriculture, 2022, 12(9): 1339.
[7] 李琦,尚绛岚,李宝山.基于YOLO v3和Deep SORT的草原牛跟踪系统[J].传感器与微系统,2021,40(6):83-85,88.LI Qi, SHANG Jianglan, LI Baoshan. Grassland cattle tracking system based on YOLO v3 and Deep SORT[J]. Transducer and Microsystem Technologies, 2021, 40(6): 83-85,88.(in Chinese)
[8] REDMON J, FARHADI A. YOLO v3: an incremental improvement[J]. arXiv preprint arXiv:1804.02767, 2018.
[9] CHO C A, THI T Z, IKUO K. Black cow tracking by using deep learning-based algorithms[J]. 革新的コンピューティング·情報·制御に関する速報—B:応用, 2022, 13(12): 1313.
[10] WOJKE N, BEWLEY A, PAULUS D. Simple online and realtime tracking with a deep association metric[C]∥2017 IEEE International Conference on Image Processing (ICIP). IEEE, 2017: 3645-3649.
[11] 曹天一,李宝山,王月明,等.基于起卧频率异常的牛产犊自动预警[J].农业工程学报,2022,38(增刊1):201-208.CAO Tianyi, LI Baoshan, WANG Yueming, et al. Automatic warning of calving based on the abnormal frequency of standing up and lying down[J]. Transactions of the CSAE, 2022, 38(Supp.1): 201-208.(in Chinese)
[12] 涂淑琴,刘晓龙,梁云,等.基于改进DeepSORT的群养生猪行为识别与跟踪方法[J].农业机械学报,2022,53(8):345-352.TU Shuqin, LIU Xiaolong, LIANG Yun, et al. Behavior recognition and tracking method of group-housed pigs based on improved DeepSORT algorithm[J]. Transactions of the Chinese Society for Agricultural Machinery, 2022, 53(8): 345-352.(in Chinese)
[13] 涂淑琴,汤寅杰,李承桀,等.基于改进ByteTrack算法的群养生猪行为识别与跟踪技术[J].农业机械学报,2022,53(12):264-272.TU Shuqin, TANG Yinjie, LI Chengjie, et al. Behavior recognition and tracking of group-housed pigs based on improved ByteTrack algorithm[J]. Transactions of the Chinese Society for Agricultural Machinery, 2022, 53(12): 264-272.(in Chinese)
[14] GE Z, LIU S, WANG F, et al. Yolox: exceeding yolo series in 2021[J]. arXiv preprint arXiv:2107.08430, 2021.
[15] SU N M,THI T Z,PYKE T, et al. Comparing state-of-the-art deep learning algorithms for the automated detection and tracking of black cattle[J]. Sensors, 2023, 23(1): 532.
[16] ZHANG Y, SUN P, JIANG Y, et al. Bytetrack: multi-object tracking by associating every detection box[C]∥European Conference on Computer Vision, 2022: 1-21.
[17] DU Y, ZHAO Z, SONG Y, et al. StrongSORT: make DeepSORT great again[J]. arXiv preprint arXiv:2202.13514, 2022.
[18] AHARON N, ORFAIG R, BOBROVSKY B Z. BoT-SORT: robust associations multi-pedestrian tracking[J]. arXiv preprint arXiv:2206.14651, 2022.
[19] MILAN A, LEAL-TAIXÉ L, REID I, et al. MOT16: a benchmark for multi-object tracking[J]. arXiv preprint arXiv:1603.00831, 2016.
[20] SIFRE L, MALLAT S. Rigid-motion scattering for texture classification[J]. arXiv preprint arXiv:1403.1687, 2014.
[21] KRIZHEVSKY A, SUTSKEVER I, HINTON G E. Imagenet classification with deep convolutional neural networks[J]. Advances in Neural Information Processing Systems, 2012, 25(6): 84-90.
[22] CHEN J, KAO S, HE H, et al. Run, don’t walk: chasing higher FLOPS for faster neural networks[C]∥Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition, 2023: 12021-12031.
[23] WANG J, CHEN K, XU R, et al. Carafe: content-aware reassembly of features[C]∥Proceedings of the IEEE/CVF International Conference on Computer Vision,2019: 3007-3016.
[24] ZHU L, WANG X, KE Z, et al. BiFormer: vision transformer with bi-level routing attention[C]∥Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition, 2023: 10323-10333.
[25] DAI X, CHEN Y, XIAO B, et al. Dynamic head: unifying object detection heads with attentions[C]∥Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition, 2021: 7373-7382.
[26] GEVORGYAN Z. SIoU loss: more powerful learning for bounding box regression[J]. arXiv preprint arXiv:2205.12740, 2022.
[27] TSUNG-YI L,PRIYA G, ROSS G, et al.Focal loss for dense object detection[J].IEEE Transactions on Pattern Analysis and Machine Intelligence,2020,42(2):318-327.
[28] SIMON D. Kalman filtering[J]. Embedded Systems Programming, 2001, 14(6): 72-79.
[29] BRADSKI G. The OpenCV library[J]. Software Tools for the Professional Programmer, 2000, 25(11): 120-123.
[30] LUO H, GU Y, LIAO X, et al. Bag of tricks and a strong baseline for deep person re-identification[C]∥Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition Workshops, 2019: 1487-1495.