当前位置:首页 期刊杂志

基于改进YOLOv4模型的群养生猪姿态检测

时间:2024-05-28

李 斌,刘东阳,时国龙,慕京生,徐浩然,辜丽川,焦 俊,*

(1.安徽农业大学 信息与计算机学院,安徽 合肥 230036; 2.蒙城县京徽蒙农业科技发展有限公司,安徽 亳州 233524)

随着智慧农业的发展与普及,智能化养殖技术越来越受到人们的重视。生猪日常姿态的识别定位是开展数字化养殖的重要前期工作[1]。如果生猪长期保持趴、坐等姿态,表明生猪可能处于病态等异常状态。利用深度学习目标检测技术快速准确检测出养殖过程中生猪的异常行为,对预警生猪疾病[2]并及时采取应对措施具有现实意义。

目前,常见的牲畜日常行为检测方法大体可分为传感器检测技术和计算机视觉技术两大类[3]。传统的传感器检测技术需要给生猪个体佩戴耳标类传感器。例如:Traulsen等[4]使用耳贴式加速度传感器采集母猪的运动加速度;王凯等[5]利用母猪颈部姿态传感器获得姿态数据,分析母猪的发情行为。虽然此类方法可以记录生猪个体的各项参数,但传感器可能由于生猪的咬食而损坏,而且易造成生猪感染寄生虫等问题[6]。随着计算机视觉技术的持续发展[7],基于神经网络的视觉分析技术在智能化生猪养殖的许多领域都取得了很大进展[8]。例如:Marsot等[9]提出基于卷积神经网络的自适应猪脸识别方法,准确率达到83%;甘海明等[10]基于时空信息融合的方法对母猪的哺乳行为进行识别,识别率达到97.85%;燕红文等[11]提出一种基于改进Tiny-YOLO模型的生猪脸部姿态识别方法,准确率达到82.38%;Psota等[12]提出一种全卷积神经网络,对生猪进行实例分割,准确率达到91%。

现有的基于卷积神经网络的检测算法大体上可以分为基于候选区域,以R-CNN[13]、Fast R-CNN[14]等模型为代表的两阶段算法,和基于回归的以SSD[15]、YOLO系列模型[16-18]为代表的一阶段算法。其中,YOLOv4算法[19]虽然在检测精度上有了很大提升,但也存在明显的缺陷,如参数量众多,导致运算量庞大,占用磁盘空间大,在实际生产环境中很难在运算能力较弱的嵌入式设备中实现实时应用。在此基础上,本文提出一种基于YOLOv4模型改进的群养生猪姿态检测方法,采用轻量MobileNetV3网络[20]代替原有模型中的CSPDarknet53网络以减少参数量,同时在检测器中引入深度可分离卷积[21]和Inception网络结构[22]以拓宽网络的宽度和深度,在不同视角、不同遮挡程度和不同光照条件下构建生猪姿态数据集,以期在保证识别准确率的前提下,为养殖场提供速度更快、实时性更强的生猪姿态检测方法。

1 YOLOv4算法与MobileNetV3网络概述

1.1 YOLOv4算法原理

YOLOv4的骨干特征提取网络采用CSP Darknet53的网络结构,并在CSP Darknet53的基础上添加了跨阶段局部网络结构(CSP)[23],通过对两条支路的跨级拼接与通道整合增强卷积神经网络的学习能力(图1)。为了能够充分利用早期特征映射中的上采样特征,YOLOv4引入了空间金字塔池化(SPP)模块,并将其设置于骨干特征提取网络和颈部检测网络的结合处,通过拼接(Concat)操作将不同池化后的特征图像与原始特征图像进行合并输出,较普通的最大池化操作提高了特征图的感受野。此外,YOLOv4还在特征融合网络中引入了路径聚合网络(PAN)[24]。PAN在结构上使用一种自底向上的路径,通过从底层到顶层的横向连接,缩短了最底层和最顶层之间的融合路径。YOLOv4在使用PAN时,为提高预测的准确性,将相加相邻的层改成拼接操作。经过多次特征融合,YOLOv4提取网络的3个有效特征层,输出的3个特征图的大小分别为原始输入大小的1/8、1/16和1/32。

图1 YOLOv4网络结构示意图

1.2 MobileNetV3网络

MobileNetV3网络是谷歌(Google)公司在2019年提出的新一代轻量级深度神经网络。该网络继承了MobileNetV1[25]和MobileNetV2网络[26]的优点。在Mnas Net模型[27]的基础上,提出了基于SE(squeeze and excitation,压缩和激励)的轻量级注意力模型。该结构能够显式地建立通道之间的相互依赖关系,通过学习获得每个通道的重要程度,并根据每个通道的重要性,提高有用的特征权重,抑制对当前任务不太有用的特征。同时,MobileNetV3网络还引入了非线性的h-swish激活函数,可以有效提高网络的准确率。但在MobileNetV3网络的架构中,只在模型的后半部分使用h-swish激活函数。这是因为,随着网络的深入,应用非线性激活函数的代价会降低,参数量也会相应地减少。此外,MobileNetV3网络还采用了平均池化(AvgPooling)来代替计算量大的部分,在不损失精度的情况下降低了计算成本。

2 YOLOv4网络模型改进

YOLOv4网络模型在提高检测精度的同时,增加了网络的计算量,对GPU(图形处理器)内存和模型存储都提出了更高的要求,因而无法在嵌入式平台和移动式设备上部署。本文在原始YOLOv4模型的基础上提出Mini_YOLOv4模型。首先,该模型将YOLOv4的特征提取网络改为MobileNetV3网络结构,在降低模型参数量的同时,使模型具有一定的精度;其次,为了进一步轻量化,在检测网络的CBL_block1、CBL_block2模块中使用深度可分离卷积代替传统卷积,避免复杂模型导致的内存不足和高延迟;最后,将原YOLOv4网络每个尺度的最后一层Conv2D 3×3卷积改为Inception网络结构,以提高模型在生猪姿态检测中的准确率。

2.1 特征提取网络

为了实现生猪姿态检测模型的轻量化和小型化,本文将MobileNetV3网络作为骨干特征提取网络替换YOLOv4中原有的CSP Darknet53网络,以降低网络的整体计算量和内存占有量。改进后的网络结构如表1所示。本文摒弃了MobileNetV3网络后面的卷积层和池化层网络,保留了网络的Bneck结构用于提取特征,包含SE模块,使网络对每层的特征都有主次的学习。同时,参考CSP Darknet53提取不同尺度的特征图,分别在Bneck的第7层、第13层、第16层进行提取。基于多尺度预测的思想提取不同尺度的特征图,可以在生猪姿态检测的过程中获得更丰富的语义信息和更细粒度的特征信息。

表1 MobileNetV3的网络结构

2.2 检测网络

2.2.1 轻量化检测网络

原始检测网络含有大量的标准卷积,在获取更深层次的特征时,会出现网络复杂性增加、效率较低的现象。为了进一步使网络模型轻量化,提升算法的实时性,本文在检测网络中引入深度可分离卷积代替传统卷积,以降低模型对GPU内存和模型存储的要求。

在深度可分离卷积中,卷积操作可以被分为深度卷积(DW)和逐点卷积(PW)。深度卷积在卷积过程中,特征图的一个通道仅由一个卷积核进行卷积,卷积核的个数等于通道数;逐点卷积和普通卷积基本相同,只是将卷积核的尺寸设置为1×1。假设卷积核的尺寸为Dk×Dk,输入特征图的尺寸为DF×DF,M、N分别表示输入和输出的通道数,传统卷积的计算总量为F1,深度可分离卷积的计算总量为F2,则两者的计算量之比可表示为

(1)

原始SPP结构前后的CBL_block1包含2个1×1的卷积层和1个3×3的卷积层;在PAN结构中,紧跟在Concat操作之后的CBL_block2结构包括3个1×1的卷积层和2个3×3的卷积层。本文利用深度可分离卷积,将传统的3×3卷积拆分为两个相对简单的部分,即1×1的逐点卷积和3×3的深度卷积。在使用深度可分离卷积后,网络层数加深,在进行反向传播时可能会出现一些神经元梯度消失或梯度爆炸的现象。为了避免此种现象,本文使用在深层模型中效果更优的非线性h-swish函数作为激活函数取代原有检测网络中的Leaky ReLU函数。将改进后的CBL_block1和CBL_block2结构分别命为DBH_block1和DBH_block2,其网络结构如图2所示。相对于原始的检测网络,改进的检测网络既加快了计算速度,又进一步增加了网络深度,增加了网络的非线性。

图2 DBH_block1 (a)和DBH_block2 (b)的网络结构示意图

2.2.2 引入Inception网络结构

由于实际猪场的养殖环境与室外环境不同,会有隔墙、栅栏等基础设施,且生猪为非刚性形变个体,视频监控采集到的图像中存在体态遮挡的情况,而且生猪姿态的特征类间差距不大[28],会在一定程度上影响检测精度;因此,为了进一步提升生猪姿态检测的精度,将Inception结构融入到YOLOv4网络中,以增加网络对尺度的适应性,同时加宽网络,提升算法整体性能。

Inception网络结构在保持网络稀疏性的同时可保持较好的计算性能。该结构使用大小不同的卷积核对应不同的感受视野,最终通过Concat操作进行特征融合,可捕获到更多的目标信息。本文将YOLOv4原网络层中每种检测尺度的最后一个3×3卷积替换为改进的Inception模块(图3)。(1)用1×3、3×1的卷积核替换原结构中5×5的卷积核,以提升计算速度。(2)由于网络较深,采用可以保留更多整体数据特征的平均池化(AvgPooling)代替原结构的最大池化(Maxpool)。(3)在Inception结构的每层卷积层之后都使用批量标准化操作,提升算法的稳健性。(4)减少Inception结构中每层特征图的数量,但保持Concat后的特征图总和与YOLOv4输出特征图的总数相同。基于以上改进,综合提升算法的训练与测试性能。

图3 原版Inception结构(a)与改进后的Inception结构(b)示意图

整体改进后的Mini_YOLOv4网络结构如图4所示。

图4 整体改进后的Mini_YOLOv4网络结构示意图

3 数据集构建

3.1 数据采集

试验用到的姿态样本来自安徽蒙城京徽蒙养猪场,使用罗技C920 Pro摄像头作为实时采集工具。安装摄像头的圈舍光照较为充足。实际场景下,生猪姿态具有随机性,且采集装置能够远程控制摄像头的旋转,使得采集到的样本图像具有不同角度的生猪日常姿态信息。分多次采集不同时段的数据,每次采集时长1~2 h。采集样本的图像分辨率为1 920 pixel×1 080 pixel,用于网络模型的训练与测试。因为拍摄角度不同,采集到的生猪个体姿态中包含的信息差异较大。本文最终将生猪日常姿态标注为站立、坐立、趴卧、腹卧、侧卧5类(图5)。对各姿态简述如下:站立,身体与四腿垂直,背部向上,腹部向下,四腿伸直,蹄子接触地面;坐立,身体躯干垂直于伸展的前腿,尾部接触地面;腹卧,前腿和后腿都叠于身下,腹部着地、背部向上而卧,四肢完全不可见;趴卧,前腿伸直着地,后腿在左或右可见,腹部着地、背部向上而卧;侧卧,四腿在身体左侧或右侧清晰可见,侧躺着地,露出腹部。

图5 生猪5类姿态的对应图像

3.2 样本数据处理

为保证采集到的样本画面连续,能够辨认生猪个体是否长时间保持同一种姿态,又防止由于间隔时间过短而导致的采集的样本图像之间相似度过高或者画面接近重复的问题,将采样时间间隔设置为20 s。为了增加模型训练数据的丰富性,所选择的样本包括不同时间节点、不同光照条件和不同拍摄角度的样本。

使用LabelImg软件的图像标注工具,对采集的图集手动标注生猪姿态并赋予标签名。使用的注释采用PASCAL VOC格式的XML文件,其中包含了样本图像的尺寸,以及样本框左上角和右下角的坐标等信息。

将标注后的1 656张样本图像经过镜像翻转、随机翻转等产生6 624张样本,并依照8∶1∶1的比例设置训练集、验证集、测试集。

4 生猪姿态识别试验

4.1 试验平台参数

试验平台的基本配置如下:16 GB内存,NVIDIA GeForce RTX 2080Ti型GPU,Intel i7 9700F 3.0 GHz CPU,Python版本号为3.7。选用Tensorflow 2.2.0版本的深度学习框架实现本文算法。同时,安装Cuda 10.1和Cudnn 7.6.5软件帮助GPU加速运算,以及OpenCV3.4等一系列的第三方库来支持代码的运行。

4.2 模型训练方法

在网络训练过程中,将输入图像的大小统一设置为416 pixel×416 pixel,同时引入Mosaic数据增强。

试验主要分为冻结训练和全网络训练两个阶段。改进的Mini_YOLOv4算法与YOLOv4算法在卷积层层数、参数数量等方面均有区别。由于本地显存不够,针对YOLOv4模型和Mini_YOLOv4模型,将冻结训练时的批尺寸(batch_size)分别设置为16和32,将全网络训练时的批尺寸分别设置为4和16。设置初始学习率为0.001,最小学习率为0.000 001,采用模拟余弦退火策略来调整网络学习率,同时采用组内标签平滑的方法优化标签类。

为了缩短训练时间,加快网络的迭代收敛,将模型在PASCAL VOC2007数据集上的预训练模型参数作为初始参数。整个训练过程中,改进的Mini_YOLOv4模型与YOLOv4模型对于同一数据的收敛快慢表现出明显差异(图6)。为了避免在训练过程中出现过拟合现象,在训练时运用了早停法(early stopping)的训练技巧。可以看出,两个模型在训练过程中训练损失值(train-loss)均不断下降,验证损失值(val-loss)也相应下降,训练过程中并未出现过拟合现象。模型经过100次左右的迭代训练,损失值逐渐平稳,至训练结束时,两种模型的损失值均收敛到0.5附近。

train-loss,训练损失值;val-loss,验证损失值。

4.3 性能对比

本文将目标检测领域公认的查准率(Precision)、 召回率(Recall)、召回率-精确度曲线的面积(AP)、多个类别AP的平均值(均值平均精度,mAP)、F1值作为评价标准以衡量模型对生猪日常姿态检测的性能。

Mini_YOLOv4模型在YOLOv4的基础上引入了深度可分离卷积和Inception稀疏化结构后,参数量由64 429 405降至15 140 541,模型权重由245 MB降至57.2 MB,均压缩近3/4。若仅从参数量和模型大小上看,本文提出的Mini_YOLOv4算法可以满足嵌入式移动终端的检测需求。

为了进一步评估算法的性能,验证本文算法在生猪姿态数据集上的检测效果,调用训练过程中保存的模型权重文件,将本文提出的Mini_YOLOv4算法与原版的YOLOv4算法在相同的试验平台上,利用相同的训练集和测试集进行对比试验。结果显示,两种模型均能正确预测生猪的姿态类别(图7),但是原版YOLOv4算法未能筛选出定位更加准确的边框,而改进后的Mini_YOLOv4模型可在生猪姿态检测中成功筛选出最优框。产生此现象的原因可能是,改进后的模型引入了SE模块,网络会更注重有用的特征,从而增大了特征图中比较重要的权值,忽略了对结果影响较小的特征。

图7 YOLOv4(a)和Mini_YOLOv4(b)模型的识别结果对比

对比两种模型,Mini_YOLOv4模型的mAP能达到73.67%,较YOLOv4模型提升了4.01百分点(表2),而且在每个姿态上的检测效果(精度和F1值)均更优(表3和表4)。除侧卧姿态外,Mini_YOLOv4模型对其他姿态的召回率也均较YOLOv4模型更高。此外,相较于YOLOv4算法,本文所提出的Mini_YOLOv4模型的检测速度提升近一倍。从以上指标的对比分析中可以看出,本文提出的Mini_YOLOv4模型在生猪姿态数据集上属于有效改进。

表2 不同IoU阈值下各模型的均值平均精度(mAP)

表3 不同模型的检测精度与检测速度

表4 不同模型的召回率与F1值

随着IoU阈值的增加,相较于原版YOLOv4模型,本文提出的Mini_YOLOv4模型在mAP上的优势越发明显,即在较高的IoU阈值下仍然可以保持较好的mAP值,说明该模型得到的真实框和预测框之间的重合度更高,即对目标的定位更加准确(图8)。这是由于,Inception结构使用了大小不同的卷积核来对应不同的感受视野,通过Concat操作进行特征融合,可以捕获到更多的目标信息,因而能够对目标实现更加精准的定位。

图8 YOLOv4(a)和Mini_YOLOv4(b)模型定位结果对比

综合模型权重大小,以及各项性能指标的对比可知,本文提出的Mini_YOLOv4模型更能满足嵌入式移动终端的检测需求。

进一步验证算法在生猪姿态检测中的可靠性(图9),可以看出,Mini_YOLOv4模型在生猪的定位和分类上更加准确,在各姿态类别上的误检率均低于YOLOv4,精准度提高,但结合召回率值可以看出,该算法仍存在漏检现象。产生这一现象的原因很多,例如:群养生猪猪体黏连严重,导致姿态表现特征变化较大;在实际猪舍环境中遮挡物较多,水渍反光等会导致姿态的整体特征遭到破坏。这些都会导致模型难以实现准确检测。

图9 YOLOv4(a)、Mini_YOLOv4(b)模型的检测可靠性

虽然本文提出的Mini_YOLOv4模型较YOLOv4模型在检测精度、定位准确度上均有一定的改善,但在群养状态下,当遇到生猪姿态特征信息被遮挡过多的情况时,本文算法仍有明显不足,如图10所示,当图中左侧站立生猪涵盖的特征信息较少时,YOLOv4模型可以对其做出检测,但本文算法反而有漏检现象。这将是下一步研究的改进方向之一。

图10 YOLOv4(a)和Mini_YOLOv4(b)模型的检测结果对比

5 结论

本文使用MobileNetV3网络作为特征提取网络替代CSP Darknet53,在模型的检测网络中引入深度可分离卷积,在模型的尾部加入改进的Inception模块,提出一种新的检测模型Mini_YOLOv4,并将其应用到生猪姿态检测中去。在生猪姿态数据集上,设置分类概率阈值≥0.5,IoU阈值为0.5时,Mini_YOLOv4模型的均值平均精度为73.67%,检测速度达65.62 frame·s-1,与原YOLOv4模型相比,其均值平均精度高出4.01百分点,检测速度提升近1倍,可满足嵌入式移动终端的需求,既能够保证检测精度,又拥有较好的实时性,可为嵌入式边缘计算提供可行的技术方案。

免责声明

我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自各大过期杂志,内容仅供学习参考,不准确地方联系删除处理!