基于改进DeepSORT的群养生猪行为识别与跟踪方法
2022-09-14涂淑琴刘晓龙汤寅杰
涂淑琴 刘晓龙 梁 云 张 宇 黄 磊 汤寅杰
(1.华南农业大学数学与信息学院, 广州 510642; 2.华南农业大学电子工程学院, 广州 510642)
0 引言
猪只的健康情况决定着生猪养殖业的发展与经济效益,多数生猪疾病的临床或亚临床体征表现之前常伴随行为异常[1-2],故对猪只的运动、饮食等行为的监测有助于判断猪只健康情况。目前人工监测是猪场的主要管理方式,但需要大量劳动力并且难以实现长期持续观察,借助无线射频技术(Radio frequency identification,RFID)的监测可避免人工监测的缺陷,但易对猪只造成刺激。信息技术手段已成为现代农业发展的重要引擎,通过借助计算机视觉技术,可以实现低成本、无接触地自动监测猪只[3],实现生猪智慧养殖。
国内外学者在生猪自动监测方面的研究可分为两类,分别为猪只行为识别和猪只跟踪。在猪只行为识别中,主要采用传统图像处理与深度学习的方法。ZHU等[4]利用阈值分割和形态学处理等机器视觉技术,实现非接触地对猪只饮水行为进行识别。李菊霞等[5]针对猪舍环境下猪只饮食行为自动化检测程度较低的问题,提出了一种基于 YOLO v4 的猪只饮食行为检测模型。ALAMEER等[6]基于YOLO v2与Faster R-CNN监测猪只的姿态与饮水行为,其无需传感器或对个体识别即可监测猪只行为。高云等[7]提出使用3D CONV 对群养猪侵略性行为进行识别,可为猪场养殖环境中猪只侵略性行为检测提供参考。在猪只跟踪方面,近年来也有很多研究者开展相关工作。XIAO等[8]通过颜色信息识别猪只,并通过分析二值图像中连接区域消除噪声,根据DT-ACR关联规则对猪进行跟踪。SUN等[9]提出一种多通道彩色特征自适应融合算法,并利用目标猪的轮廓信息实时更新比例,提升在目标形变与尺度变化下的跟踪效果。ZHANG等[10]利用分层数据关联算法将基于卷积神经网络的检测器与相关滤波器的跟踪器结合,实现单个猪只跟踪。张伟等[11]基于CenterNet 设计断奶仔猪目标检测模型,结合DeepSORT算法[12]实现断奶仔猪的多目标跟踪,改善猪只外观高度相似与遮挡情况下的跟踪效果。
目前,视频监控技术由于其设备价格低廉和实现简单的优点,已广泛应用于生猪的行为识别与跟踪研究。但是,在真实养殖场景下,由于光照变化与猪群的密集遮挡,容易造成跟踪中目标ID 频繁跳变;同时,很多研究只是对猪只的行为进行识别[13-15]或跟踪[16-17],算法获取的猪只信息难以满足现代化生猪养殖业的要求。基于此,本文将行为识别与多目标跟踪进行融合,并改进DeepSORT算法中的轨迹生成与匹配过程,提出基于YOLO v5s的改进DeepSORT算法。通过将YOLO v5s检测算法得到的行为类别信息引入DeepSORT跟踪算法,实现跟踪中的行为识别,使得在跟踪中算法可以获取到目标的行为信息;同时,针对特定场景下猪只数量稳定不变的特点,改进DeepSORT算法中的轨迹生成与匹配过程,提升跟踪中猪只ID的稳定性;最终在真实群养环境下实现稳定ID的猪只行为跟踪,以期为无接触式自动监测生猪提供技术支持。
1 实验数据与数据增广
1.1 数据集
实验数据从文献[18]的数据集中选择,筛选保留15段猪只移动较多的有效视频,每段视频为60 s,每秒为5帧。将视频分辨率裁剪为2 688像素×1 012像素,在视频段中只保留同一猪舍下的猪只。使用DarkLabel软件对视频段进行标注,构建3个数据集分别用于训练目标检测模块、重识别模块和验证行为跟踪算法效果,这3个数据集中均包含白天与夜间场景、猪只拥挤与稀疏场景、猪只活动频繁与较少场景。
选取真实群养环境下4段不同条件的视频段作为行为跟踪数据集,用于验证算法效果,记为序号01~04,如表1所示。
表1 行为跟踪数据集Tab.1 Behavior tracking dataset
其余视频段利用ffmpeg工具分割成图像,使用脚本将图像与标注信息分别构建目标检测数据集和重识别数据集,其中目标检测数据集将猪只分为躺卧、站立、饮食和其他行为4种类别。目标检测数据集共3 300幅图像,按照比例7∶2∶1随机划分为训练集、验证集和测试集。重识别数据集包含137头猪只,平均每头猪只300幅图像,按照比例7∶3随机划分为训练集和测试集。
1.2 数据增广技术
为提升模型泛化能力,使用左右翻转、上下翻转、改变色彩属性的数据增广技术,扩充生猪的目标检测与重识别训练数据。其中,对图像进行左右翻转与上下翻转可以扩大数据集的规模,以获得理想的训练效果;改变图像色彩属性,如随机改变图像的色调、饱和度和明度可以模拟光照情况变化对图像的干扰,在一定程度上消除光环境的影响[19]。最终目标检测训练数据集扩充到4 620幅图像,重识别训练数据集中每头猪只扩充到420幅图像。生猪的目标检测与重识别图像数据增广后样例见图1。
图1 数据增广后结果Fig.1 Results after data augmentation
2 行为跟踪算法原理
采用YOLO v5s检测器结合改进DeepSORT算法实现猪只行为跟踪,如图2所示,首先图像输入YOLO v5s目标检测器,得到检测结果;然后改进DeepSORT算法基于卡尔曼滤波与匈牙利算法对前后两帧之间目标进行匹配,生成跟踪轨迹;最后输出行为跟踪图像。
图2 行为跟踪算法流程图Fig.2 Flow chart of behavior tracking algorithm
2.1 YOLO v5s检测算法
在基于检测的跟踪算法中,目标检测的效果对跟踪算法的效果起着至关重要的作用。当前基于深度学习的目标检测算法中,主要可划分为One-stage和Two-stage两类。在One-stage算法中占主流的是YOLO[20-23]系列等。Two-stage算法中占主流的是R-CNN[24]、Fast R-CNN[25]、Faster R-CNN[26]等。One-stage与Two-stage算法各有优劣,前者在检测速度上有明显的优势,后者在检测精度有更好的效果。YOLO v5s算法可以兼顾速度与精度的要求,本文将其作为目标检测器。YOLO v5s网络结构如图3所示,该算法主要包括输入端、主干网络、颈部和输出端4部分。其中,在输入端对数据进行预处理,采用如Mosaic数据增强、自适应图像缩放和自适应锚框计算等技术实现;主干网络主要由Focus层、CONV层、C3层、SPP层等结构组成;颈部包含特征金字塔网络(Feature pyramid networks,FPN)[27]、路径聚合网络(Path aggregation network,PAN)[28];输出端主要是在3个不同大小的特征图上预测不同尺寸的目标。
图3 YOLO v5s 网络结构Fig.3 Network structure of YOLO v5s
2.2 DeepSORT算法
DeepSORT算法是在SORT[29]基础上引入重识别模型,通过外观信息与运动信息增强匈牙利算法的匹配效果,减少ID切换的数量;其通过卡尔曼滤波器和匈牙利算法,分别处理跟踪问题的运动预测和数据关联部分。
2.2.1轨迹的状态估计
2.2.2匹配问题
DeepSORT算法结合运动信息度量与外观信息度量,使用匈牙利算法解决检测框与轨迹的匹配问题。对于运动信息度量,算法表示为
(1)
式中d(1)(i,j)——第j个检测框和第i个轨迹预测得到的边界框的马氏距离
dj——第j个检测框
yi——第i个轨迹预测后的边界框
Si——第i个轨迹预测得到的在当前测量空间的协方差矩阵
马氏距离用于过滤可能性极低的匹配,当d(1)(i,j)小于指定的阈值,认为匹配成功。
对于外观信息度量,引入重识别模型,用于提取目标的外观信息。重识别模型网络结构如表2所示,主要包括1个卷积层、1个最大池化层、8个残差层和1个平均池化层。
表2 重识别模型网络结构Tab.2 Network structure of re-identification model
对于外观信息度量,算法表示为
(2)
式中d(2)(i,j)——第j个检测框与第i个轨迹的最小余弦距离
rj——第j个检测框dj相应的外观描述符,设置‖rj‖=1
Ri——第i个轨迹的外观信息仓库,保存最新100条目标成功匹配的外观描述符
当d(2)(i,j)小于指定阈值时,认为匹配成功。
马氏距离提供基于运动目标可能的位置信息,余弦距离通过考虑外观信息可以在目标发生遮挡重叠情况下恢复ID,为提升跟踪效果,将马氏距离与余弦距离结合作为最终度量,公式为
ci,j=λd(1)(i,j)+(1-λ)d(2)(i,j)
(3)
式中ci,j——第j个检测框与第i个轨迹的关联程度
λ——权重系数
沿用原算法将λ设置为0,即运动信息度量用于限制明显不可行的匹配,关联矩阵中只使用外观信息度量计算。
2.3 改进DeepSORT算法
2.3.1跟踪中的行为识别
在原DeepSORT跟踪算法的基础上,将猪只行为类别添加到目标跟踪的轨迹中,其实现效果如图4所示,图4a中左上角为目标猪只的ID编号,是原算法效果;图4b中左上角为目标的行为类别和ID编号,是改进后效果。首先在YOLO v5s目标检测算法中将检测到的猪只行为类别分为躺卧、站立、饮食和其他4类;然后将行为类别作为DeepSORT算法的输入,存储在目标猪只轨迹的参数中,以此实现猪只跟踪过程中的行为识别。
图4 行为识别效果Fig.4 Effect of behavior recognition
2.3.2改进匹配过程与轨迹生成
DeepSORT算法在跟踪实验中,随着视频帧增长,同一猪只目标易被分配不同的ID,导致ID最大值大幅超出真实的猪只目标数量。主要原因是目标猪只发生运动或遮挡重叠现象时,检测结果无法与原轨迹匹配,导致未匹配的检测结果生成新轨迹。基于上述问题,针对猪舍特定场景,对算法的匹配过程与轨迹生成进行改进。
由于猪舍为封闭场景,无目标新增或减少,为提升匹配效果,增加第2轮交并比匹配对未匹配的检测框进行处理。改进后的匹配过程:第1轮交并比匹配完成初步匹配,第2轮放宽交并比最大距离的限制来尽可能使未匹配的检测框与轨迹匹配成功。
在该场景下通过改进轨迹生成的方式来限制ID增长。具体实现如下:封闭场景下目标总数是稳定不变的,则ID最高数量是已知的,动态存储检测结果中的目标总数,将其计为ID极大值,由于检测结果有一定概率出现误检漏检现象,ID极大值由最近3帧中检测目标数量的平均数决定,若当前生成轨迹ID超过ID极大值,不生成新轨迹;若未超过,则生成新轨迹。
改进后算法匹配过程如图5所示,其中虚线框部分为算法改进内容。轨迹初始化为未确认态,满足连续3帧都成功匹配,将未确认态转化为确认态。
图5 匹配过程流程图Fig.5 Flow chart of matching process
算法步骤如下:
(1)首先将检测结果与卡尔曼滤波预测的确认态轨迹进行级联匹配;级联匹配采用匈牙利算法,对运动信息与外观信息的关联矩阵求解,从而匹配检测框与轨迹。
(2)未确认态轨迹、级联匹配中未匹配的轨迹和未匹配的检测框进行第1轮交并比匹配;交并比匹配采用匈牙利算法,对交并比关联矩阵求解,从而匹配检测框与轨迹。
(3)进行第2轮交并比匹配,将第1轮交并比匹配中未匹配的轨迹和未匹配检测框进行第2轮最大交并比距离匹配;判断未匹配的检测框是否满足轨迹生成条件,满足则生成轨迹,不满足则不做处理;最终判断未匹配的轨迹是否满足删除条件,满足则删除轨迹,不满足则继续参与匹配。
(4)当前帧匹配过程结束后执行卡尔曼滤波更新。
3 实验与结果分析
针对猪舍中群养猪的行为跟踪进行3个实验,分别是:目标检测实验训练YOLO v5s 检测器;重识别实验训练DeepSORT算法中重识别模块;在生猪行为跟踪数据集进行实验,测试与分析改进DeepSORT算法的性能。
实验采用Windows 10平台,编程语言为Python 3.6,模型框架为Pytorch 1.7.1,硬件环境为AMD Ryzen5 2600X处理器、64 GB内存、NVDIA GeForce GTX TITAN X显卡。
3.1 目标检测实验与结果分析
目标检测实验采用YOLO v5s模型,检测生猪躺卧、站立、饮食和其他行为,其他行为描述猪只行为转换过程的中间状态。实验不采用预训练模型,输入图像尺寸为640像素×640像素,优化器为随机梯度下降法(Stochastic gradient descent,SGD),初始学习率为0.01,批量大小为64,模型迭代200次。
为验证检测效果,选取精确率(Precision)、召回率(Recall)、调和平均数(F1-score,F1)、平均精度均值(Mean average precision,mAP)对模型进行综合评价。
YOLO v5s在测试集上的精确率-召回率曲线如图6所示,检测器对猪只的4种行为均有较好的检测效果。
图6 精确率-召回率曲线Fig.6 Precision-recall curves
算法在测试集上全部结果如表3所示。在猪只的躺卧、站立、饮食行为上检测效果较好,其平均精确率(AP)均达到99%以上,说明检测器对于猪舍场景中大多数行为的检测效果较好,而在其他行为上的召回率为95.2%,说明模型在检测猪只行为转
表3 目标检测实验结果Tab.3 Experimental results of object detection %
换过程中存在少量漏检情况。综合猪只的各个行为结果,检测器在处理猪舍场景行为检测问题上效果良好,可为跟踪阶段建立最优的输入。
利用YOLO v5s算法对不同条件下群养生猪图像进行测试,结果如图7所示。图7a为白天、猪只较少和遮挡情况下检测效果,算法对于猪只较少的情况能达到优越的检测效果;图7b为夜晚、猪只较少和拥挤的情况下检测效果,在拥挤重叠情况下,算法仍保持着精准的检测效果;图7c为白天、猪只较多和拥挤的情况下检测效果,算法也具有精准的检测效果;图7d为夜晚、猪只较多和拥挤的情况下检测效果,算法在猪只严重拥挤情况下保持着较强的性能,无漏检。不同场景下YOLO v5s算法都能准确识别猪只行为。
图7 YOLO v5s算法的群养生猪检测结果 Fig.7 Detection results of group-housed pigs based on YOLO v5s algorithm
3.2 重识别实验与结果分析
实验使用Market-1501[30]数据集上预训练得到的权重文件,为提升对生猪的重识别效果,在本文数据集上重新训练重识别模型,批量大小为256,迭代100次,其余参数沿用原算法。
重识别模型可以提取出猪只具有区分度的特征,实现不同帧中同一猪只的重新识别,使用Top-1准确率评价模型效果,其表示模型预测概率最大结果的正确总数占所有样本的比率,值越接近1说明模型提取特征能力越强,即重识别效果越好。
图8为重识别模型的Top-1准确率曲线,在迭代25次后,曲线趋于平稳,此时模型基本达到收敛,迭代100次后Top-1准确率在测试集上结果为99.88%,此时重识别模型能够较好地提取出目标的表观特征,从而准确地实现猪只的重识别。
图8 重识别模型的Top-1准确率曲线Fig.8 Top-1 accuracy curves of re-identification model
3.3 行为跟踪实验与结果分析
3.3.1行为跟踪算法评价指标
选用5个指标评价行为跟踪算法的效果:身份编号切换次数(Identity switch,IDS),跟踪目标ID发生改变的次数,值越小表示跟踪稳定性越好。识别平均数比率(Identification F1,IDF1)是识别精确率与识别召回率的调和平均数,用于评价跟踪算法的稳定性,值越大说明算法越能长时间地对某个目标进行准确地跟踪。多目标跟踪准确率(Multiple object tracking accuracy,MOTA),同时考虑误报、漏报和IDS,衡量跟踪算法在检测目标和保持轨迹时的性能,与目标检测精度无关,值越大表示算法的性能越好。多目标跟踪精确度(Multiple object tracking precision,MOTP),量化检测器的定位精度越大表示检测器的精度越高。帧率(Frames per second,FPS)是算法每秒处理的视频帧数,值越大表明处理速度越快。
3.3.2行为跟踪实验结果与分析
为验证改进算法对性能的提升,沿用原算法的参数设置,利用生猪行为跟踪数据集测试改进DeepSORT算法,改进前后实验结果如表4所示。
表4 改进前后实验结果Tab.4 Experimental results before and after improvement
在IDS方面,改进DeepSORT算法为33,较改进前的204,降低了83.8%,特别是测试视频01,改进算法对该测试视频的IDS为0,即不发生ID切换,说明改进算法对跟踪场景条件良好(如猪只较少)的情况下效果显著。在IDF1方面,改进算法为89.2%,较原算法提升了16.9个百分点,在所有测试视频段均有明显提升,说明改进部分在不同场景条件下可以明显提升跟踪算法的稳定性。在MOTA方面,改进算法为91.9%,较改进前提升了1.0个百分点,改进算法对测试视频01、02、03的处理均优于原算法,说明在大多数场景条件下改进后算法均能提升跟踪准确率。在MOTP方面与FPS方面,改进前后算法基本维持不变。综上,改进算法在跟踪准确率与稳定性方面显著提升。
改进前后DeepSORT算法在白天、猪群稀疏、猪只活动频繁场景(视频段01)下跟踪结果如图9所示,图9a中猪只最大ID为20,而图9b中猪只最大ID稳定在7,可以看出在猪只剧烈运动的情况下,原算法跟踪中ID频繁切换;图9c中原算法最大ID已经增长到55,而图9d中改进算法最大ID依旧稳定在7,无ID切换,跟踪性能优异,且可以准确识别全部猪只的行为。
图9 改进前后DeepSORT算法跟踪结果(视频段01)Fig.9 Tracking results of DeepSORT algorithm before and after improvement (video segment 01)
改进前后DeepSORT算法在白天、猪群拥挤、猪只活动较少场景(视频段02)下跟踪结果如图10所示,在猪只发生严重遮挡重叠情况下,改进前后算法均出现少量目标丢失,图10a与图10b中猪只最大ID均为 16;图10c中原算法最大ID已经增长到57,而图10d中改进算法最大ID稳定在16,可以看出改进算法可以大幅抑制ID切换,在猪只严重密集拥挤情况下仍可以实现良好跟踪,并且可以识别到大部分猪只的行为。
图10 改进前后DeepSORT算法跟踪结果(视频段02)Fig.10 Tracking results of DeepSORT algorithm before and after improvement (video segment 02)
改进前后DeepSORT算法在夜晚、猪群拥挤、猪只活动频繁场景(视频段04)下跟踪结果如图11所示,图11a与图11b中猪只最大ID均为16,图11c与图11d为第246帧中算法对比结果,光照条件较弱与猪群发生严重遮挡导致原算法在跟踪中出现大量ID切换,而改进算法能有效抑制ID切换,表明在复杂环境下改进算法仍有良好的跟踪效果,并且可以准确识别到大部分猪只行为。
图11 改进前后DeepSORT算法跟踪结果(视频段04)Fig.11 Tracking results of DeepSORT algorithm before and after improvement (video segment 04)
综上,改进DeepSORT算法可以有效抑制ID切换,在复杂环境中仍有效,可以良好稳定地跟踪群养生猪并准确识别其行为。
4 结论
(1)在YOLO v5s检测算法基础上,将检测结果中行为信息引入DeepSORT算法,并针对猪舍特定场景改进DeepSORT算法中的轨迹生成与匹配过程,提出了改进DeepSORT算法。
(2)实验结果表明,YOLO v5s目标检测实验的mAP为99.3%,F1值为98.7%;生猪重识别实验的Top-1准确率达到99.88%;在跟踪方面,改进DeepSORT算法的MOTA为91.9%,IDF1为89.2%,IDS为33, MOTA和IDF1比原算法分别提升了1.0、16.9个百分点,IDS下降了83.8%。
(3)所构建群养生猪行为跟踪算法可以满足实际养殖环境中的需要,能够为无接触式的生猪自动监测提供技术支持。