基于帧间差分法-单点多框检测器的圈养生猪打斗行为识别方法
2021-06-30张苏楠田建艳菅垄姬政雄
张苏楠 田建艳 菅垄 姬政雄
摘要: 在集约化养殖过程中,生猪打斗行为是影响生猪福利养殖的重要因素之一。针对复杂养殖环境下传统方法识别圈养生猪打斗行为准确率低的问题,提出1种基于帧间差分法(Frame difference, FD)-单点多框检测器(Single shot MultiBox detector, SSD)的生猪打斗行为识别方法。首先,利用帧间差分法提取生猪连续视频帧中的移动像素,排除光照度变化、地面水渍及尿渍等环境因素以及静止生猪对打斗行为识别的干扰。然后,以连续视频帧中的移动像素为样本,采用MobileNet_v2、焦点损失函数、网络参数迁移学习对单点多框检测器进行改进,用于检测发生剧烈运动的生猪个体,提高SSD对运动生猪个体的检测精度与速度。最后,针对生猪发生打斗行为时的特点,设计精准的生猪打斗行为判别方法,以识别生猪是否发生打斗行为。试验结果表明,该方法对生猪打斗行为的识别准确率、查准率、查全率分别达到93.75%、96.79%、90.50%,可以有效识别圈养生猪的打斗行为,为饲养员判断生猪异常状况提供依据。
关键词: 生猪;打斗行为;帧间差分法;单点多框检测器;判别方法
中图分类号: TP391.41 文献标识码: A 文章编号: 1000-4440(2021)02-0397-08
Abstract: Aggressive behavior of live pigs is one of the most important factors influencing welfare breeding of live pigs in the process of intensive breeding. Aiming at the problems of low accuracy rate of traditional methods in detecting aggressive behaviors of live pigs in pigpens under complex breeding environment, an identification method for porcine aggressive behaviors was proposed based on frame difference (FD)-single shot MultiBox detector (SSD). Firstly, FD method was used to extract the moving pixels in continuous video frames of live pigs to eliminate the interference of environmental factors such as illuminance change, surface water stain, urine stain and static pigs on the detecting of aggressive behaviors. Secondly, using the moving pixels in continuous video frames as samples, the SSD was improved by using MobileNet_v2, focal loss function and transfer learning of network parameters to detect the violently moving live pigs and improve the detection accuracy and speed of SSD. Finally, according to the characteristics of live pigs with aggressive behaviors, accurate discriminative method for live porcine aggressive behavior was designed to recognize aggressive behaviors. The experimental results showed that, the accuracy rate, precision rate and recall rate of the proposed method in recognizing porcine aggressive behaviors reached 93.75%, 96.79% and 90.50% respectively. The method can effectively recognize the aggressive behaviors of live pigs in pigpens and provide judgment basis for breeders.
Key words: live pig;aggressive behaviors;frame difference;single shot MultiBox detector;discriminant method
福利養殖是指在养殖过程中满足动物最基本的自然需求,使动物免于不必要的痛苦,在现代化养殖系统中,打斗行为是影响生猪集约化养殖福利水平的重要因素之一[1]。在集约化养殖过程中,当生猪摄取的膳食纤维含量低、猪群构成发生变化或活动空间有限时,都可能导致生猪发生打斗行为[2]。生猪长时间的打斗行为可能导致皮肤损伤、感染,甚至使生猪受到致命伤害[3]。受伤的生猪进食量减少,可能导致生长速度下降[4],而且打斗压力可能导致母猪繁殖能力下降[5]。因此,识别生猪打斗行为对于提高生猪福利水平、增加养猪场的经济效益至关重要。
机器视觉技术具有无接触、不间断、快速等优点。利用这项技术检测生猪打斗行为,可以提高检测效率、增加动物福利水平、减少经济损失[6]。生猪打斗行为包括头撞身体、头撞头、用头推挤、咬等动作表现[2]。针对2只生猪在打斗行为中身体大面积、剧烈接触且持续一定时间,容易对生猪造成伤害,Viazzi等[7]通过采集猪圈中的生猪视频计算了生猪的平均运动强度和占空比,采用线性判别分析法检测生猪的打斗行为。Oczak等[8]计算了生猪的活动指数特征,利用人工神经网络检测生猪的高强度打斗行为和中等强度打斗行为。Lee等[9]以2只站立生猪之间的距离和运动速度作为特征参数,利用2个支持向量机对生猪是否发生打斗行为以及不同打斗行为类型进行分类。Chen等[10]对生猪打斗行为识别方法进行了深入研究,2017年,将相邻视频帧之间2只生猪的加速度作为特征,通过设置阈值实现了对生猪高强度打斗行为和中等强度打斗行为的识别。2018年,Chen等[11]以帧间2只生猪的动能和动能差作为特征参数,通过设置阈值实现了生猪打斗行为的识别。2019年,Chen等[12]采用帧间差分法(Frame difference, FD)检测移动像素,提取每个视频序列单元中的运动形状指数作为特征值,利用支持向量机对生猪打斗行为进行识别。
识别生猪打斗行为需要准确地检测出生猪个体,当猪圈中光照度发生变化以及受到水渍、尿渍、排泄物等因素干扰时,传统图像分割方法很难精确地分割出生猪个体,从而影响生猪打斗行为的识别精度。由于生猪打斗行为持续时间越长,对生猪造成伤害的概率越大[7],因此,本研究将2只生猪之间持续一定时间的具有剧烈接触、挤压、撞击、撕咬的行为统称为生猪打斗行为,提出基于FD-单点多框检测器(Single shot MultiBox detector, SSD)的圈养生猪打斗行为识别方法。首先,利用FD提取生猪连续视频帧中的移动像素,排除光照度变化、地面水渍、尿渍等环境因素与静止生猪对打斗行为识别的干扰;然后,针对传统目标检测方法在生猪个体检测中的局限性,以连续视频帧中的移动像素为样本,通过单点多框检测器检测剧烈运动的生猪个体;最后,提出生猪打斗行为的判别方法,识别生猪是否发生打斗行为。
1 材料与方法
1.1 样本数据集
本试验使用的生猪视频采集于山西省某生猪养殖场,圈养生猪视频采用筒型网络摄像机[DS-2CD2T47(D)WD-L],以25 f/s的速度采集,并通过数据传输线将采集到的视频传输到监控计算机中保存。视频采集分辨率为1 920×1 080。1个猪圈中有7只生猪,猪龄均约为3个月,体质量均约为60 kg。根据生猪打斗行为特点与生猪养殖场养殖人员的专家经验,从采集到的视频中截取生猪打斗行为视频和生猪正常状态(包括躺卧休息、采食饮水、互嗅等行为)的视频进行分析。从猪圈中采集到的生猪图像见图1。
1.2 生猪打斗行为的识别
通过对生猪养殖现场的实地考察,结合目前生猪打斗行为识别研究现状,总结得出生猪打斗行为具有以下特点:①生猪在发生打斗行为时,会快速、激烈地运动[13];②发生打斗行为的2只生猪会有持续大面积的身体接触;③当猪圈中的部分生猪发生打斗行为时,其他生猪由于应激反应,会主动避开正在打斗的生猪[11];④生猪的打斗行为持续时间从数秒到2 min不等[14],2只生猪靠近5 s内会发生打斗或分开[10]。
根据上述特点,本研究提出1种圈养生猪打斗行为识别方法。针对上述生猪打斗行为特点①,利用FD提取运动生猪像素;生猪运动幅度越大,提取的移动像素越多,本研究采用改进的SSD检测剧烈运动的生猪个体,确定每只剧烈运动生猪的位置;在确定每只运动生猪的位置后,设计生猪打斗行为判别方法。针对上述生猪打斗行为特点②,计算2只运动生猪之间的距离,确定发生接触的运动生猪。针对上述打斗行为特点③,判断发生接触的生猪与其他运动生猪间的距离是否接近,并确定生猪的圆形活动区域,排除其他运动生猪的干扰。针对上述打斗行为特点④,计算疑似生猪打斗行为持续的视频帧数,判断生猪是否真正发生打斗行为。
1.2.1 基于FD的生猪移动像素提取 在养殖场生猪视频采集的过程中,当猪圈中光照度较强时,猪圈地面和生猪身体都会产生一定程度的反光,而且猪圈地面通常存在水渍、尿渍、排泄物等,这些干扰因素会严重影响传统图像分割方法对生猪个体的分割效果。而生猪发生打斗行为时会剧烈运动,因此,利用幀间差分法[15]提取移动生猪像素,既可以避免猪圈背景环境的干扰,又可以为运动生猪个体检测提供依据。
设视频中第n帧、第n+1帧图像在(x,y)处的灰度值分别为fn(x,y)、fn+1(x,y)。用FD计算差分图像灰度值的公式如下:
式中,Dn+1(x,y)为差分图像在(x,y)处的灰度值。
在采集生猪视频的过程中,帧率为25 f/s,为了更完整地提取生猪移动像素,在视频中间隔2帧进行差分。由于生猪发生小幅度运动时提取的移动像素较少,通过形态学中的开操作,对差分图像进行先腐蚀后膨胀处理,除去较小的明亮细节,保持较大的明亮区域不变,即滤除少量移动像素点,从而保留生猪剧烈运动时提取的移动像素。
1.2.2 基于SSD的剧烈运动生猪个体检测 为了准确确定剧烈运动生猪个体的位置,定位疑似发生打斗行为的生猪,本研究采用SSD检测剧烈运动的生猪个体。为了提高模型检测精度与速度,对经典SSD进行改进,改进后的SSD结构如图2所示。
由图2可知,本研究将得到的生猪差分图像转换成宽300、高300、通道数为3的图像后作为模型输入。为了利用有限样本训练SSD模型,采用网络参数迁移学习[16]方法,将已经训练好的网络参数运用到SSD中作为初始网络参数。以MobileNet_v2[17]代替VGG16作为基础网络,获取不同大小的特征图。为了提高模型训练的效果,采用焦点损失函数(Focal loss, FL)[18]替代交叉熵函数(Cross entropy, CE)作为置信度损失函数。
(1)基础网络MobileNet_v2。为了快速检测差分图像中的运动生猪个体,满足检测过程中的实时性要求,本研究采用MobileNet_v2代替VGG16作为基础网络,以提高运动生猪的检测效率。MobileNet_v2通过引入倒置残差(IR)对特征图进行先升维再降维,减少内存占用量,MobileNet_v2主要由不同数量步长为1的IR和步长为2的IR组合而成。倒置残差的实现过程见图3。
(2)焦点损失函数。经典SSD通常采用CE函数作为模型训练中的置信度损失函数。SSD在训练过程中,将与生猪真实目标标注框匹配成功的先验框作为正样本,将匹配不成功的先验框作为负样本。CE函数调节正、负样本比例的能力有限,导致训练效果受限。本研究采用FL作为置信度损失函数。引入平衡因子α,α∈[0,1],FL函数可表示为:
式中,y为样本类型;p为模型对生猪目标的预测概率;γ为可调参数;α为平衡因子;p为模型对生猪目标的预测概率。
定义:
式中,α*为不同样本类型的平衡因子;p*为不同样本类型的预测概率。
将公式(3)和公式(4)代入公式(2),可得最终FL函数为
(3)网络参数迁移学习。从圈养生猪视频中提取的图像背景、生猪动作单一,重复样本较多,有效生猪图像样本有限。为了利用有限的样本训练SSD模型,本研究引入网络参数迁移学习,通过将已经训练好的模型参数迁移到1个新的网络中,从而提高模型训练时的收敛速度。
本研究在实际训练过程中,将通过COCO数据集训练好的SSD网络迁移到运动生猪个体检测模型中,然后利用生猪目标数据集对模型参数进行调整,得到最终运动生猪个体的检测模型。
1.2.3 生猪打斗行为判别方法 针对生猪打斗行为特点,本研究设计了生猪打斗行为判别方法,具体判别步骤如下:
步骤1:设SSD检测到的剧烈运动生猪数为n,检测到第k只剧烈运动生猪的预测框长边长度为Lk。计算第i只运动生猪与第j只运动生猪之间的欧式距离(dij),其中k=1,2,…,n;i=1,2,…,n;j=1,2,…,n。
步骤2:判断生猪之间的欧式距离(dij)是否小于距离阈值dth(i,j)。当2只生猪头对头打斗时,其质心的最大距离为2只生猪预测框长边长度和的一半,因此,定义距离阈值如下:
具体的距离判别示意见图4。
如果dij 步骤3:将疑似发生打斗行为的2只生猪预测框进行合并,取包围2个预测框的最小外接矩形,构建包围2只疑似发生打斗行为生猪的矩形框。以新构建的矩形框中心为圆心、以矩形框的对角线长度为半径,构建疑似发生打斗行为生猪的圆形活动区域(Active region, AR)。 步骤4:读取下一帧图像,按照步骤1、步骤2中判断疑似发生打斗行为的方法判断该帧图像是否包含疑似发生打斗行为的生猪。如果包含,则判断疑似发生打斗行为生猪的质心均值是否在AR中;如果不包含,则重新执行此步骤。 步骤5:如果疑似发生打斗行为生猪的质心均值在AR中,则num=num+1,按照步骤3的方法更新AR,然后返回步骤4;否则直接返回步骤4。循环执行此过程,直至视频中所有图像检测完毕。由于在剧烈运动生猪目标的检测与疑似打斗行为判断过程中存在一定误差,可能打斗视频中的各帧图像不全部符合生猪打斗行为特征,即num<视频总帧数(frame_num),但num与frame_num的比值可以表征生猪发生打斗行为的可能性,比值越大,生猪发生打斗行为的可能性越大。因此,按下式定义生猪打斗行为比(RAB): 式中,num为疑似发生打斗行为的帧数;frame_num为视频总帧数。 为了增加生猪打斗行为判别的容错能力,本研究设置了生猪打斗行为判别阈值(RABth)。如果RAB>RABth,则判断生猪发生打斗行为。以某段生猪打斗视频中连续4帧图像为例,生猪打斗行为判别方法中疑似发生打斗行为帧数的确定结果见图5。图5a、图5b、图5c、图5d中均有2只生猪的欧式距离小于距离阈值,与第3只生猪的距离大于距离阈值,且前一帧疑似发生打斗行为生猪的质心均值都在后一帧AR中,由此可见,图5a、图5b、图5c均为疑似发生打斗行为的帧数(num),图5d需要根据下一帧检测结果进行判断。 为了形成完备的圈养生猪打斗行为识别方法,本研究将FD、SSD与生猪打斗行为判别方法相结合,提出1种基于FD-SSD的生猪打斗行为识别方法。由图6可知,首先,对生猪视频中的间隔2帧图像进行差分,提取移动生猪像素,排除猪圈背景环境及静止生猪的干扰。然后,利用SSD检测剧烈运动的生猪个体,确定运动生猪的位置。最后,通过生猪打斗行为判别方法识别运动生猪是否发生打斗行为。 2 结果与分析 本试验所用分析平台为戴尔工作站,中央处理器(CPU)为Inter Xeon E5-2603 v4,内存大小为16 GB,图形处理器(GPU)为NVIDIA GTX2070,显存大小为8 GB。SSD算法在Tensorflow深度学习框架下实现。通过LabelImg标注软件标注图像中的运动生猪个体,构建生猪目标数据集。 2.1 基于FD-SSD的运动生猪个体检测结果 通过FD提取生猪移动像素后,采用改进的SSD检测剧烈运动的生猪个体。本研究采用的训练样本为1 000幅经过FD提取后的生猪差分图像,测试样本为200幅经过FD提取后的生猪差分图像。学习率可以控制损失函数的收斂速度,学习率过小,损失函数的收敛速度慢;学习率过大,损失函数的收敛速度快,但可能导致损失函数无法收敛。本研究采用变学习率方法,在模型训练前期设置较高的学习率,提高收敛速度;在训练过程中,学习率逐渐减小,使损失函数值可以收敛到最优。通过大量试验比较,本研究选定初始学习率为4×10-3,每训练10 000步,学习率衰减为原来的95%,训练次数设为200 000次。在焦点损失函数中,α表示正负样本的重要性,α越大,正样本的权重越大;γ可以调整难区分样本和易区分样本权重的差异程度,γ越大,难区分样本和易区分样本权重的差异程度越大。通过大量试验比较,本研究选择α=0.75,γ=2。
為了定量评价SSD对剧烈运动生猪个体的检测效果,本研究采用每秒帧数(FPS)[19]与平均精度均值(mAP)[20]作为运动生猪个体检测的评价指标。为了验证本研究采用的基于改进SSD的剧烈运动生猪个体检测方法的有效性,对不同方法得到的mAP、FPS进行比较。由表1可知,只采用MobileNet_v2作为基础网络时,SSD的mAP与经典SSD相比略有降低,但FPS有明显提升。采用FL函数时,SSD_MobileNet_v2在FPS基本不变的情况下,mAP有了一定提升,略高于经典SSD。采用网络参数迁移学习和FL函数时,SSD_MobileNet_v2的FPS基本不变,mAP进一步提高,可以满足运动生猪个体实时检测对精度、速度的要求。
以某段视频中经过FD处理后的连续6帧图像为例,使用本研究方法检测运动生猪个体。由图7可知,白色区域为FD提取的生猪移动像素,生猪移动像素无法完全描述生猪轮廓,且存在阴影,在不同生猪移动像素之间存在粘连,采用改进SSD法可以有效解决上述问题,较为准确地检测出视频帧中剧烈运动的生猪个体。
2.2 生猪打斗行为识别结果
为了验证本研究提出的生猪打斗行为识别方法的准确性,选取200段生猪打斗行为视频与200段正常状态(包括生猪躺卧休息、采食饮水、互嗅等行为)的生猪视频作为测试样本,各段视频长度为5~110 s。为了定量评价生猪打斗行为的识别精度,采用准确率(A)、查准率(P)和查全率(R)作为评价指标[21]。
在生猪打斗行为识别过程中,打斗行为判别阈值(RABth)对试验结果有较大影响。如果RABth过大,会导致无法正确识别生猪打斗行为视频;如果RABth过小,容易将正常生猪视频误识别为生猪打斗行为视频。通过设定不同RABth,比较最后生猪打斗行为的识别结果。由表2可知,当RABth≤0.45时,RABth越小,生猪正常状态的视频被误识别为打斗行为视频的数量越多,导致准确率与查准率降低,生猪打斗行为视频被正确识别的数量基本不变,即查全率基本不变。当RABth>0.45时,随着RABth的提高,生猪打斗行为视频被误识别为正常状态视频的数量逐渐增加,生猪正常状态视频被误识别为打斗行为视频的数量逐渐减小,导致查全率减小。综合考虑各项指标,本研究选择RABth=0.45,此时生猪打斗行为的识别准确率、查准率、查全率分别达到93.75%、96.79%、90.50%,可以满足实际应用中对圈养生猪打斗行为识别精度与速度的要求。
3 结论
为了在复杂养殖环境下准确、快速地识别圈养生猪的打斗行为,本研究提出1种基于FD-SSD的生猪打斗行为识别方法,通过试验仿真,得到的结果如下:(1)由于生猪发生打斗行为时会剧烈运动,因此采用FD既可以提取移动生猪像素,又可以排除复杂背景与静止生猪的干扰。本研究利用FD可以清晰、有效提取移动生猪像素,为剧烈运动生猪个体的检测提供了依据。(2)为了根据提取到的移动像素点检测剧烈运动的生猪个体,本研究采用基于SSD的剧烈运动生猪个体检测方法。为了提升SSD的检测精度与速度,采用MobileNet_v2、FL和网络参数迁移对经典SSD进行改进。对运动生猪个体的检测结果表明,mAP达到了0.910 4,FPS达到了15,可以满足实际检测要求。(3)根据生猪打斗行为特点,设计了生猪打斗行为判别方法。通过试验验证可知,当RABth为0.45时,基于FD-SSD的生猪打斗行为识别方法的识别准确率、查准率、查全率分别达到93.75%、96.79%、90.50%,可以满足实际应用中对圈养生猪打斗行为识别精度与速度的要求。
本研究提出的生猪打斗行为识别方法中,打斗行为判定阈值(RABth)是根据本研究中特定研究对象确定的,在后续工作中,还需要对其他年龄阶段的生猪打斗行为进行分析,动态确定打斗行为判定阈值,提高方法的适用性。
参考文献:
[1] 李 丹,陈一飞,李行健,等. 计算机视觉技术在猪行为识别中应用的研究进展[J].中国农业科技导报,2019,21(7):59-69.
[2] STUKENBORG A, TRAULSEN I, PUPPE B, et al. Agonistic behaviour after mixing in pigs under commercial farm conditions[J]. Applied Animal Behaviour Science, 2011, 129(1):28-35.
[3] TURNER S P, FARNWORTH M J, WHITE I M S, et al. The accumulation of skin lesions and their use as a predictor of individual aggressiveness in pigs[J]. Applied Animal Behaviour Science, 2006, 96(3/4):245-259.
[4] STOOKEY J M, GONYOU H W. The effect of regrouping on behavioral and production parameters in finishing swine[J]. Journal of Animal Science, 1994, 72(11):2804-2811.
[5] KONGSTED A G. Stress and fear as possible mediators of reproduction problems in group housed sows: a review[J]. Acta Agriculturae Scandinavica, Section A-Animal Science, 2004, 54(2):58-66.
[6] BRACKE M B M, METZ J H M, SPRUIJT B M, et al. Decision support system for overall welfare assessment in pregnant sows B: validation by expert opinion[J]. Journal of Animal Science, 2002, 80(7):1835-1845.
[7] VIAZZI S, ISMAYILOVA G, OCZAK M, et al. Image feature extraction for classification of aggressive interactions among pigs[J]. Computers and Electronics in Agriculture, 2014, 104:57-62.
[8] OCZAK M, VIAZZI S, ISMAYILOVA G, et al. Classification of aggressive behaviour in pigs by activity index and multilayer feed forward neural network[J]. Biosystems Engineering, 2014, 119:89-97.
[9] LEE J, JIN L, PARK D, et al. Automatic recognition of aggressive behavior in pigs using a Kinect depth sensor[J]. Sensors, 2016, 16(5):631.
[10]CHEN C, ZHU W X, MA C H, et al. Image motion feature extraction for recognition of aggressive behaviors among group-housed pigs[J]. Computers and Electronics in Agriculture, 2017, 142: 380-387.
[11]CHEN C, ZHU W X, GUO Y Z, et al. A kinetic energy model based on machine vision for recognition of aggressive behaviours among group-housed pigs[J]. Livestock Science, 2018, 218:70-78.
[12]CHEN C, ZHU W X, LIU D, et al. Detection of aggressive behaviours in pigs using a RealSence depth sensor[J]. Computers and Electronics in Agriculture, 2019, 166:105003.
[13]JENSEN P, YNGVESSON J. Aggression between unacquainted pigs-sequential assessment and effects of familiarity and weight[J]. Applied Animal Behaviour Science, 1998, 58(1/2):49-61.
[14]MCGLONE J J. A quantitative ethogram of aggressive and submissive behaviors in recently regrouped pigs[J]. Journal of Animal Science, 1985, 61(3):559-565.
[15]王 璐,高 林,閆 磊,等. 基于光流与熵统计法的花卉生长视频关键帧提取算法[J].农业工程学报,2012,28(17):125-130.
[16]李晓振,徐 岩,吴作宏,等. 基于注意力神经网络的番茄叶部病害识别系统[J].江苏农业学报,2020,36(3):561-568.
[17]刘 慧,张礼帅,沈 跃,等. 基于改进SSD的果园行人实时检测方法[J].农业机械学报,2019,50(4):29-35,101.
[18]任胜男,孙 钰,张海燕,等. 基于one-shot学习的小样本植物病害识别[J].江苏农业学报,2019,35(5):1061-1067.
[19]何东健,刘建敏,熊虹婷,等. 基于改进YOLO v3模型的挤奶奶牛个体识别方法[J].农业机械学报,2020,51(4):250-260.
[20]邓壮来,汪 盼,宋雪桦,等. 基于SSD的粮仓害虫检测研究[J].计算机工程与应用,2020,56(11):214-218.
[21]FU L H, DUAN J L, ZOU X J, et al. Banana detection based on color and texture features in the natural environment[J]. Computers and Electronics in Agriculture, 2019, 167:105057.
(责任编辑:徐 艳)