刘月峰 边浩东 何滢婕 郭 威 张小燕
(内蒙古科技大学信息工程学院, 包头 014010)
奶牛的科学饲养需要实时掌握奶牛的行为表现等信息。其中,奶牛采食行为监测是奶牛科学饲养中重要一环[1]。通过对奶牛的反刍、采食量、进食时间与进食频率等数据进行实时监测,能够掌握奶牛养殖信息;通过对数据的分析处理,能够达到疾病诊断与异常预警等目的[2-3]。传统的奶牛行为监测方法主要依赖于人工观测记录或穿戴式设备监测[4-6]。人工观测不仅效率低下、成本高昂,而且人工观测方法并不能满足制定科学饲养方案的实时性与全天候要求,同时也无法适应奶牛养殖场现代化发展的需求。有研究者提出利用佩戴式设备监测奶牛进食行为[7-8]。佩戴式设备虽然能在一定程度上保证监测的准确率,但在目前条件下,很难为每头奶牛个体配备高成本的监测设备。因此开发出一种基于机器视觉技术、可以进行多目标奶牛进食行为监测的方法十分必要。
比较奶牛的进食与非进食状态图像,将奶牛目标总体分为“进食”与“非进食”两类目标,并利用目标检测算法,对两类奶牛目标进行分类定位,可有效监测奶牛进食行为。张宏鸣等[8]通过改进YOLO v3网络设计了一种基于机器视觉的多目标肉牛进食行为识别方法。而YOLO系列算法[9-11]具有参数数量庞大、计算成本高等特点,对未来智慧牧场任务场景下的边缘计算与一些计算资源受限且需要控制成本的项目来说并不友好。文献[12-14]提出的YOLO v3 tiny是一个基于YOLO v3的轻量化目标检测模型,但是其网络层数少,会降低其在目标检测时的准确率[15]。
FRANKLE和CARBIN在2019年提出了一种利用幅值迭代剪枝(Iterative magnitude pruning,IMP)算法寻找最优子网络的彩票假设(Lottery ticket hypothesis,LTH)[16-17],该方法旨在通过幅值迭代剪枝方法找到一个优秀的稀疏子网络,该稀疏子网络重新训练后不仅和原始网络性能相当,而且最多可以将网络的参数减少90%~95%,并且网络性能不受影响。若是能够从稠密网络中甄选出一个更加精巧且性能优异的稀疏子网络,就能大量减少推理过程中所使用的模型规模与参数数量[18],从而能在节约成本的同时将所训练的网络应用在类似边缘计算等资源受限或需要控制成本的任务上,以满足目前智慧牧场的规模化、现代化需要[19]。
为实现在多目标场景下对每头奶牛的进食行为进行监测,首先要确定观测范围内全部奶牛的进食状态,得到目标图像,再确认每头奶牛的身份。为确定多目标奶牛进食状态,本研究参考彩票假设,基于IMP算法,提出一种多目标奶牛进食行为识别方法。采集并筛选奶牛养殖场奶牛牛舍监控视频,根据目标的背景差异与奶牛的姿态差异将奶牛划分为不同状态类别,以构建奶牛进食行为数据集。再基于YOLO v3算法,利用奶牛进食行为数据集,训练奶牛进食行为识别模型。根据彩票假设,在训练过程中对模型进行幅值迭代剪枝,在模型性能不受影响甚至更优的情况下,实现对奶牛进食行为识别模型的压缩。
视频数据为2020年在内蒙古自治区包头市某奶牛养殖场采集的52头泌乳期荷斯坦奶牛进食视频。视频共3 840段,每段时长45 min,视频帧高度为1 080像素、宽度为1 920像素、码率为1 639 kb/s、格式为MPEG4。选用牛舍内甬道上方摄像头的监控视频作为试验数据,视频画面如图1所示,摄像头安装位置如图2所示。
图1 牛舍监控视频画面Fig.1 Cowshed surveillance video screen
图2 牛舍内摄像头安装位置Fig.2 Installation position of camera in cowshed
本研究的目的是训练出一个可用于奶牛进食行为识别的轻量化模型,采用YOLO v3目标检测网络,使目标的定位与识别同步进行。再根据彩票假设,使用幅值迭代剪枝这一神经网络压缩方法使模型轻量化。研究方案流程图如图3所示,共包含4部分:数据集构建、奶牛进食行为识别、奶牛进食行为识别模型压缩和结果分析。
图3 技术路线图Fig.3 Technology route chart
1.2.1数据集构建
首先使用关键帧提取软件将视频转换为关键帧序列。为了提高模型的鲁棒性,根据不同光照条件、奶牛目标遮挡情况、奶牛目标重叠情况与正负样本均衡等情况人工筛选出1 410幅图像作为数据集。再从数据集中随机选出100幅图像作为验证集、100幅作为测试集,余下1 210幅作为训练集。使用LabelImg数据标注软件对数据集中的目标进行标注,其中包括9 310个奶牛目标。为了识别奶牛进食行为,又将奶牛目标分为:进食中、等待进食、游走。其中进食中4 602个、游走653个、等待进食3 949个。人工标注时对奶牛进食行为的判断依据为:①奶牛的头伸出护栏。②奶牛低头。③料槽有料。奶牛进食行为判断表如表1所示。表1中T表示满足该判断依据,F则表示不满足。
图5 部分数据集图像Fig.5 Partial dataset images
表1 奶牛进食行为判断Tab.1 Feeding behavior judging of dairy cows
如表1所示,同时满足3点判断依据便判定目标为进食中,记为Object 1。满足判断依据①但不满足判断依据②或③便判定目标为等待进食,记为Object 2。不能满足判断依据①便判定目标为游走,记为Object 3。奶牛进食行为数据集数据标注示意图如图4所示,其中目标①为标注的进食中奶牛,目标②为等待进食奶牛,目标③为游走奶牛。目标④为不标注奶牛。
图4 奶牛数据集标注示意图Fig.4 Schematic of dairy cow dataset annotation
为了提高模型的鲁棒性与泛化能力,提高多种条件下奶牛进食行为识别模型的性能,保证模型全天候能力,本文从牛舍监控视频中选取不同光照条件、不同密集程度、不同时间段的图像作为数据集。部分数据集图像如图5所示。
1.2.2奶牛进食行为识别方法
传统神经网络图像识别技术对奶牛进食行为的识别,需要目标检测模型先定位目标再使用卷积神经网络(Convolutional neural networks, CNN)对目标进行分类。本文方法基于YOLO v3网络,该网络在各领域应用中的表现都较为稳定,其参考残差网络创建主干架构,叠加特征与输入,将结果作为下一层网络的输入,优化了模型的训练效果,降低了梯度爆炸的风险。生成新的特征图采用了多尺度预测方式,将生成的小尺寸特征用于检测大尺寸目标,大尺寸特征用于检测小尺寸目标,降低模型对背景的误检率,提高小尺寸目标识别能力。没有了目标位置预测的过程,使YOLO系列算法运算速度更快,更加适合本研究的应用场景。
本文利用YOLO v3算法将奶牛目标识别作为回归问题求解,所输入的图像经过一次推理便可得到图像中奶牛目标的位置与分类结果,而区域卷积神经网络(Regions with CNN, RCNN)[20]将目标识别分为分类和回归两部分求解。所以YOLO网络结构更加简单,推理速度更快。本文方法使用YOLO v3网络,将奶牛目标分为进食中、未进食两种状态。由于未进食状态中的样本差异过大,在一定程度上会造成召回率过低,所以人工标注时将未进食奶牛细分为等待进食与游走两类目标进行识别,提高了奶牛进食行为识别模型的推理速度与召回率。如图6所示,本文模型的输入图像尺寸为416像素×416像素,在各尺度的特征图的每个网格中设置3个先验框,每个先验框包含不同尺度的预测。每个预测为8维向量,分别表示边框坐标、边框置信度、对象类别数量。
图6 基于YOLO v3的奶牛进食行为识别模型结构图Fig.6 Structure diagram of cow feeding behavior recognition model based on YOLO v3
1.2.3基于彩票假设的幅值迭代剪枝方法
剪枝是一种成熟的神经网络压缩技术,通过删除神经网络模型中对推理结果影响较小的权重以减少参数数量,提高推理性能。彩票假设提出:通过对一个前馈神经网络进行幅值迭代剪枝,能够找到一个可以重新训练的稀疏子网络,通过对子网络进行训练便可达到与原始网络相近的性能。甚至经过多次训练后,稀疏子网络性能会优于原始稠密网络,并且其参数量最少可以减少到原始网络的5%~10%。研究发现,使用原始网络的初始化权重对子网络进行初始化,效果优于使用随机权重初始化的子网络,所以本文方法采用IMP算法从基于YOLO v3的奶牛进食行为识别模型中筛选最优子网络,步骤如下:
(1)利用YOLO v3网络在COCO2014数据集上进行训练得到的预训练权重初始化网络,得到权重W0。
(3)利用奶牛进食行为数据集训练网络至收敛。
(6)重复步骤(3)~(5)直到模型准确率大幅下降或参数数量达到要求。幅值迭代剪枝过程示意图如图7所示。
图7 幅值迭代剪枝过程示意图Fig.7 Iterative magnitude pruning process schematic
本文方法将奶牛目标分为进食中与非进食两类,需要同时关注模型对每个类别的识别平均精确率,故选择平均精度均值作为评价指标[21]。
本文使用IMP算法将奶牛进食行为识别模型进行压缩,减少其参数数量,使其可以部署在低成本设备上。而IMP算法所使用的非结构化剪枝方法与结构化剪枝不同,非结构化剪枝并不会删除卷积通道,而是创建一个只有0和1的掩模(mask),使掩模与参数相乘得到稀疏矩阵,许多参数仅是被设置为零,但仍然存在。所以模型推理能力只有在应用稀疏计算库[22]或稀疏计算硬件[23]时提升。为了证明压缩方法的有效性,采用模型参数数量与浮点运算次数(Floating point operations,FLOPs)衡量压缩效果。
试验环境为64位CentOS系统,最大Turbo频率为5.10 GHz英特尔至强W-10855M处理器,NVIDIA GeForce RTX 2080Ti GPU,内存512 GB,编程语言为 Python 3.6.5,使用Pytorch 1.7.1框架构建和训练网络模型,开发工具为PyCharm 2020。
试验中使用基于彩票假设的IMP算法对奶牛进食行为识别模型进行压缩,在IMP算法中使用不同的剪枝率对模型进行剪枝,为了得到最合适的剪枝率,分别将剪枝率设置为20%、40%、60%和80%,在每次迭代后进行剪枝,每次迭代包含300个周期(epoch),并设置早停机制以防止过拟合,早停参数为75个epoch。如图8所示,根据训练损失值与验证集上平均精度均值的变化曲线,剪枝率20%时选用第12次迭代后的模型;剪枝率40%时选用第4次迭代后的模型;剪枝率60%时选用第3次迭代后的模型;剪枝率80%时选用第1次迭代后的模型。模型测试结果如表2所示。由表2可知,即便模型剩余参数数量相当,设置较小剪枝率进行多次幅值迭代剪枝的模型也明显优于设置较大剪枝率而进行较少次剪枝的模型,说明IMP中剪枝后的恢复训练尤为重要,经过少量多次的剪枝与恢复训练能够更有效地筛选出最优稀疏子网络。
图9为不同剪枝率下模型的精确率-召回率曲线。由图9可知,Object 3是导致整体精确率、召回率低的主要原因。根据测试图像来看,因为摄像机处于固定位置,而游走目标的姿态各异、遮挡程度不同,而由于牛舍场景的特殊情况,数据集中“游走”目标样本数量较少,所以会导致模型对游走目标的识别能力较弱。但本文关注的是奶牛进食行为识别问题,重点在于对“进食中”与“等待进食”两种目标的识别,无需过分关注游走目标的识别问题。经过多次试验发现,使用剪枝率20%和剪枝率40%对模型进行剪枝时,与不进行幅值迭代剪枝的模型相比,其运算性能皆有小幅提升。其中应用剪枝率40%、第4次迭代剪枝后所得模型的参数数量减少了87.04%,召回率提升了14.1个百分点,平均精度均值提高了4.2个百分点,精确率提升1.0个百分点。因为奶牛的进食行为会在一个时间段内保持不变,通过不断地对监控视频帧进行检测,当目标检测模型的精确率与召回率维持在70%以上时,基本可以满足本研究对于奶牛进食行为识别任务的需要。本文模型在奶牛进食行为测试数据集上的识别情况如图10所示。
总的来看,在奶牛进食行为数据集上,通过执行IMP算法,在多次剪枝后可以筛选出一个可训练的、具有更优性能的稀疏子网络。本文提出的基于幅值迭代剪枝的稀疏网络多目标奶牛进食行为识别方法具有良好精确率与召回率,同时具有参数数量少、运算速度快等特点,可为奶牛行为监测提供低成本的方法支持。
图8 不同剪枝率下平均精度均值与损失值变化曲线Fig.8 Change curves of mAP and loss value at different pruning rates
表2 不同剪枝率下模型测试结果Tab.2 Model test results at different pruning rates
图9 不同剪枝率下模型精确率-召回率曲线Fig.9 P-R curves of models with different pruning rates
图10 本文模型对奶牛进食行为识别效果Fig.10 Effectiveness of this model in identifying feeding behavior of dairy cows
利用奶牛养殖场内奶牛牛舍监控视频制作了奶牛进食行为识别数据集;基于YOLO v3目标检测算法构建了奶牛进食行为识别模型,实现了对多目标奶牛进食行为的识别;基于彩票假设,使用IMP算法对基于YOLO v3的奶牛进食行为识别模型进行剪枝。经过多次不同剪枝率的试验,最终获得的稀疏子网络在测试集中测试结果为:3类奶牛目标的平均精度均值为79.9%,平均精确率为82.1%,平均召回率为70.9%。模型参数数量为7.96×106个,仅为原始稠密网络参数总数的12.96%,在减少网络参数的同时模型性能有所提高,证明了通过幅值迭代剪枝技术降低奶牛行为监测成本、提高奶牛行为监测实时性的可行性。验证了基于彩票假设在奶牛行为监测任务上筛选出更优稀疏子网络的可能性。