基于深度学习的群养鸡只行为监测方法研究
2021-06-11任昊宇任振辉
李 娜,任昊宇,任振辉
(1.河北农业大学 机电工程学院, 河北 保定 071001;2.河北农业大学 现代科技学院,河北 保定 071001)
随着信息技术的飞速发展,畜牧业也由传统的养殖管理向着信息化、自动化的方向发展。精准畜牧业(Precision livestock farming, PLF)定义为使用过程工程的原理和技术应用于畜牧业,自动监测、建模和管理动物生产[1]。其核心是实时、自动和持续的监测畜禽的行为,以改善其健康状况和福利状况,也为长期的监控产品质量提供最好的保证。目前,视频监控越来越多地应用在畜禽养殖中,由于其可以非入侵无接触的长期监测动物,与可穿戴设备如耳标、RFID等相比,不会影响动物的活动,廉价经济,并且随着计算机视觉技术的快速发展,使得用摄像头监测动物行为、自动分析动物的福利和健康成为可能[2-5]。
随着深度学习理论的快速发展,众多研究者将其应用在畜禽养殖中,尤其在复杂场景下识别猪、牛的行为,具有良好的性能[6-9]。鸡只识别方面,王娟等[10]基于YOLO v3识别了本交笼养鸡的喝水(86.88%)、站立(94.57%)、吃食(93.10%)、交配(94.72%)、打架(88.67%)和展翅(92.02%)行为。基于深度学习理论的畜禽行为识别应用在猪、牛等大型动物上较多,由于鸡只的个体小、数量大,应用深度学习实现鸡只个体行为识别的研究较少。
在众多深度学习算法中,YOLO系列算法[11-12]是目前运行速度快、多目标检测准确率较高的算法,符合实时处理的要求。本试验以YOLO v4目标检测算法为基础,旨在研究散养鸡群在鸡舍中的行为,实现对鸡只采食、站立、趴卧、梳羽、啄羽和打架行为的实时、自动监测。
1 材料与方法
1.1 数据采集
本试验于2019年8月27日到12月22日在河北省无极县石家庄鑫农机械有限公司河北农业大学研究生实践教育基地进行;模拟林下养殖模式,使用1种长宽高为3 m×1.95 m×1.95 m的可移动鸡舍,舍外圈定20 m2的户外活动范围。研究对象为同批次3月龄蛋鸡20只,饲养于可自由进出户外活动区的鸡舍内,每日于7:00—8:00、15:00—16:00间进行喂食,鸡只可自由采食、饮水、活动。海康威视C5C摄像头安装在鸡舍内屋角顶端,如图1所示。试验期间摄像头每天7:00—17:30采集鸡群的活动,视频分辨率1 920×1 080,帧率15 fps。
1.2 YOLO v4目标检测算法
YOLO(You only look once)算法是1种 “onestage”的端到端目标检测算法,与R-CNN系列的“two-stage”相比,YOLO最大的特点是将物体类别和物体位置用回归的方法1次预测,大大提高运行速度,可以满足实时处理的要求。
YOLO v4算法训练时采用Mosaic数据增强的方法,主干网络采用全卷积神经网络CSPDarkNet53提取图像特征,改进的激活函数为Mish;为了增加网络感受视野,Neck网络使用SPP-block和PAN收集低级和高级特征图进行信息融合;Head仍然采用YOLO算法进行物体类别和位置的预测。此算法对目前CNN领域的最新算法和优化策略做了大量实验,使得使用单个1080 Ti或2 080 Ti的GPU就可以训练出快速、准确的目标检测器,对于小目标检测也有不错的效果[13]。
1.3 模型训练
本试验计算机配置:CPU Intel Core i7-9700,主频 3 GHz,内存32 GB,显卡NVIDIA GeForce GTX 2080Ti, CUDA 版本10.1.120,CUDNN版本7.4.1,所有程序在 Windows 10 操作系统下进行。
随机选取不同日期不同时间段的7 988幅图片作为数据集。使用LabelImg软件,对鸡只的采食、站立、趴卧、梳羽、啄羽和打架行为进行标注。其中包含采食行为32 017个,站立行为42 336个,趴卧行为19 171个,梳羽行为7 414个,啄羽行为566个,打架行为363个。由于啄羽和打架行为偏少,对含有该行为的图片进行图像亮度调整、剪裁、模糊化处理和添加噪声等数据扩充。最终,图片总数10 239张,采食行为34 619个,站立行为47 221个,趴卧行为21 885个,梳羽行为8 782个,啄羽行为1 978个,打架行为1 202个,以提高行为检测准确度。
使用YOLO v4进行模型训练,图片resize为608×608,每次迭代训练样本数64,批次32,迭代次数20 000,初始学习率0.001,在迭代次数达到15 000和18 000时,学习率均下降1/10。通过K-mean算法对anchors参数进行聚类,9个锚框分别为:(29,76),(36,100),(38,60),(40,58),(48,100),(56,146),(64,96),(77,105),(94,150)。
1.4 模型评价
本文使用精确率P(Precision)、召回率R(recall)和F1值(F1-Score)来衡量模型性能,如公式(1)~(3)所示。
其 中,TP(True Positive):是 正 样 本 并 且被预测为正样本的个数;FP(False Positive):是负样本但是被预测为正样本的个数;FN(False Negtive):是正样本被预测为负样本的个数。
使用测试集共718幅图像对模型进行评估。各行为的PR曲线如图2所示。
图2 6种行为的PR曲线Fig.2 PR curves of six behaviors
平均精确率(AP)由高到低分别为采食96.67%,站立90.34%,梳羽82.01%,趴卧78.46%,打架67.14%,啄 羽63.38%,总 体mAP (Mean average precision)为79.67%。模型检测置信度阈值为0.25时,典型测试结果如图3所示。
图3 阈值为0.25时模型测试结果Fig.3 Model test results by 0.25 threshold
图3(a)中鸡群密集度低时,检测效果较好;图3(b)鸡群较拥挤时,出现1只鸡同时检测出2种行为的情况和漏检情况。设置合适的置信度阈值,可以提高模型检测精度。考察不同阈值下各行为总精确度P、召回率R和F1分数,测试结果见表1。可见,随着阈值的升高,精确率变大,召回率下降。综合考虑,选择阈值为0.5。
表1 置信度阈值与模型精度Table 1 Confidence threshold and model precision
在0.5置信度阈值下,测试得到各行为的精确率P和召回率R如表2所示。可知,模型对采食行为的判别最好,但是,啄羽行为的召回率偏低,易漏检。此外,模型的检测速度在本实验计算机中达到45.3 fps,摄像头视频帧率15 fps,完全满足实时处理的要求。
表2 各行为预测评价指标Table 2 Evaluation indexes of behaviors
2 基于时间序列的啄羽实时监测
选取5段、每段2 min的含有啄羽行为的视频进行测试,由于啄羽行为的识别率较低,不一定每帧图像都能正确识别,同时,鸡群密集度较高时也容易错误识别,测试结果如图4所示。
图4 啄羽行为检测结果图Fig.4 Feather pecking behavior detection results
由于啄羽行为具有一定的时间连续性,即会在连续的多帧图像中出现,通过单帧图像检测漏检率较高。提取每帧图像的啄羽行为个数按时间顺序统计,时间序列如图5所示。
图5 啄羽检测时间序列图Fig.5 Feather pecking detection time series
结合视频和图5(a)可以看出视频有非啄羽行为而误识别为啄羽行为的情况,但是时间连续性差。放大有连续性的啄羽行为片段如图5(b)可见,不是每帧图像都能正确识别啄羽行为,但是一般5帧内可以识别出至少1次。为了剔除漏检的情况,统计行为持续时长,求取每秒的啄羽行为平均值,形成1个新的时间序列,并认为5 s内发生2次啄羽行为以上是1个行为片段,最终得到持续时间在30 s以上的啄羽行为片段具体时间及时长。程序流程为:
(1)每连续15帧(1 s)图片计算1次啄羽行为的平均值AVG;
(2)若AVG大于0.1,则该秒钟有啄羽行为出现,记为1,否则记为0;
(3)通过1个长度为4的滑动平均滤波器,使2次啄羽行为时间间隔小于等于3 s间隔的行为认为是1个行为序列;
(4)若该啄羽行为序列持续时长大于等于30 s,记录啄羽时刻及持续时长。
时间序列检测结果如图5(c)所示,第74、100、181和199帧是错误检测帧,333到380帧虽然具有连续性,但持续时长不到30 s,所以不予计算;526到1 800帧为检测到的啄羽时段。在5段视频中的检测结果如表3所示,该方法解决了啄羽行为漏检率高的问题,提升了检测精确度。
表3 5段视频的时间序列检测结果Tab.3 Time series detection results of five videos
3 行为识别误差分析
本试验应用YOLO v4实现群养鸡中单只鸡只的行为识别,其中,摄像头完全覆盖食槽区,采食时鸡只位置固定,行为识别精确率最高;在摄像头下方的鸡只站立和趴卧行为易混淆;打架和啄羽行为误差较大;各行为识别误差产生的主要原因有:
(1)鸡只个体相对较小,数量较多,且鸡群喜聚集,极易出现重叠、遮挡情况,容易漏检,后续可提高数据集标注准确度、增大数据集或改进算法来提高小目标识别精度;
(2)打架和啄羽行为是2只甚至多只鸡只的共同行为,且具有时间持续性,单张图片检测易误检、漏检;啄羽行为的持续时间一般较长,本试验采用了时间序列分析的方法,提取了大于30 s的啄羽行为,精确度较高,但是小于30 s的啄羽行为没有考虑;打架行为持续时间较短,不易采用时间序列分析的方法,后续可采用追踪的方法和运动速度判别以提高行为识别准确度。
4 结论
本试验将YOLO v4算法应用于实时监测散养鸡群在鸡舍中的采食、站立、趴卧、梳羽、啄羽和打架行为,平均精确率分别为96.67%、90.34%、78.46%、82.01%、63.38%和67.14%;对啄羽行为召回率低的情况,提出了基于时间序列处理算法,大大提高了召回率,可以实现实时处理,为散养鸡的精准养殖提供了可能。