基于改进YOLOv4 的羊只检测方法研究
2023-05-24李远征李章辉王天一
李远征,李章辉,王天一
(贵州大学 大数据与信息工程学院,贵阳 550025)
0 引言
随着对羊肉等羊产品需求量的增长,羊只的养殖正在从传统的家庭散式养殖向规模化、信息化养殖方式转变。在新的养殖模式下,对羊只的养殖管理技术也有了新的需求,信息化、智能化养殖手段日益受到养殖人员以及客户的青睐[1-2]。羊只自动检测是信息化、智能化养殖的基础。在传统的规模化羊只养殖产业中,通常采用在羊躯干部位手工标记或在羊耳处打上耳标,通过扫码或RFID 的方式进行羊只检测。手工标记不仅费时费力,且经常出现标记被污染的现象,且难以掌握所有羊只的数量及位置。此外,打耳标不仅会给羊造成不可逆的损伤,且需工作人员使用感应设备在羊群附近才能进行检测。基于深度学习的目标检测技术已经发展的较为成熟[3],通过养殖场中的监控设备非常容易获得大量丰富的羊只个体信息,利用目标检测算法提取图像中羊的特征,训练羊只目标检测模型,从而实现羊只自动检测[4],可大大降低养殖成本,提升工作效率。于意[5]结合通道注意力模块SENet 和GIoU 损失函数的YOLOv3 算法,实现了奶山羊的检测。但是,由于养殖环境背景复杂、个体之间相互遮挡,因此检测效率仍然有待提升。为提高养殖场环境下羊只检测效率,本文建立羊只图像数据集,在YOLOv4[6]算法的基础上加以改进,降低了模型的运算复杂度,减少羊只相互遮挡造成的漏检,提高了检测精度。
1 YOLOv4 目标检测算法改进
1.1 改进YOLOv4 网络结构
与通用数据集相比,养殖场环境中的羊只图像存在背景复杂、目标旋转、相互遮挡以及图像模糊的问题。同时,使用原始网络进行训练检测时,网络训练时间较长,且需要的显存较大,对聚集在一起的羊只进行检测时容易出现漏检现象,影响检测的精度。
针对上述问题,为提升目标检测算法在养殖场环境下羊只检测的性能,本文在YOLOv4 算法基础上,对主干特征提取网络、注意力机制和非极大值抑制3 个部分做出改进,改进后的算法网络结构如图1 所示。改进的YOLOv4 使用ShuffleNet V2[7]替代CSPDarkNet53 作为网络的特征提取部分,使用大量的逐通道卷积(Depthwise Convolution,DWConv)降低网络计算量,并使用深度可分离卷积[8]替换路径聚合网络(Path Aggregation Network,PANet)模块中的普通卷积,实现YOLOv4 的轻量化;在特征提取网络中引入注意力机制,利用基于卷积块的注意模块(Convolutional Block Attention Module,CBAM)[9]中的通道注意力机制和空间注意力机制,自适应地提升对羊只特征的关注度,减弱对无关特征的关注度,提升检测的精度;在后处理部分改进非极大值抑制(Non -Maximum Suppression,NMS),使 用DIoU-NMS[10]替代传统NMS,利用预测框之间的距离信息,保留被误删的预测框,减少漏检现象的发生。
图1 改进YOLOv4 目标检测网络结构Fig.1 Improved YOLOv4 object detectionnetwork structure
1.2 ShuffleNet V2 特征提取网络
针对养殖场环境中羊只检测这一任务,其解决方法应当能够适用于各种规模的养殖企业,因而降低神经网络的计算成本以及对硬件设备的要求,是羊只自动检测算法走向实用的重要方向。更少的参数有助于将网络集成到移动便携设备,降低算法对软硬件的要求,增加易用性。本文在不牺牲YOLOv4 网络检测性能的前提下,对该网络进行轻量化处理,使用ShuffleNet V2 作为特征提取网络,并将PANet 模块的普通卷积替换为深度可分离卷积,节省了YOLOv4 算法在养殖场环境下过剩的性能,将参数量降低到了原来的1/6 左右,同时网络的检测精度以及检测速度也得到了提升。
1.2.1 深度可分离卷积
深度可分离卷积就是先进行DW 卷积再进行点卷积,即1×1 常规卷积,可融合各个特征通道之间的信息,改变输出通道数。常规卷积操作如图2 所示,卷积核个数为N,每个卷积核的通道数为M。DW 卷积操作如图3 所示,卷积核个数为M,每个卷积核的通道数为1,仅对输入特征矩阵的一个通道进行卷积运算。常规卷积与DW 卷积的计算量如下:
图3 逐通道卷积操作Fig.3 Depthwise convolution operation
式中:C1为常规卷积计算量,C2为逐通道卷积计算量,DK为卷积核尺寸,DF为输出图像尺寸,M为输入通道数,N为输出通道数。
显然,DW 卷积的计算量仅为常规卷积的1/N。与普通卷积相比,DW 卷积具有较少的参数和较低的运算成本,对减轻网络负担起到了一定的作用。
然而,虽然DW 卷积操作的计算量大大减少,但通道之间没有了信息交互,降低了网络特征提取的性能。为了达到特征交互的目的,ShuffleNet V2 使用Channel Shuffle 增强了两个分支之间的信息交流,在降低参数和计算复杂度的同时改善了模型效果。
1.2.2 ShuffleNet V2 单元结构
企业的财务管理是指企业对资产的管理。企业的财务管理贯穿到企业运营的各个方面,企业为了得到长期可持续发展,必须要重视财务管理,尤其是加强企业财务管理人员的培训,合理地安排企业财务管理的方式,以提升企业财务管理的水平。企业财务管理主要包括投资、融资以及资金运行管理。
ShuffleNet V2 单元结构如图4 所示。对于特征提取单元(图4(a)),在每个单元开始时,X通道的输入经通道被拆分为两部分,一个分支不进行操作;另一个分支经过三层卷积后,通道数与特征尺寸不变,两个分支进行拼接,通道总数仍为X,之后的Channel Shuffle 增强了两个分支之间的信息交流。在下采样单元(图4(b)),对X通道的输入特征同时处理两次,一个分支经过两层卷积层后通道数不变,特征尺寸减半;另一个分支经过三层卷积后通道数不变,特征尺寸减半,两个分支拼接后通道总数为2X,特征尺寸减半。ShuffleNet V2 单元通过使用1×1 的卷积和3×3 的DW 卷积,极大的降低了网络的计算量,同时利用Channel Shuffle 保证了提取到的特征质量。
图4 ShuffleNet V2 单元Fig.4 ShuffleNet V2 unit
ShuffleNet V2 网络中的Stage 通过图4 中模块(b)实现下采样,再利用多个模块(a)堆叠,实现了对目标特征的高效提取。本文使用的模型为ShuffleNet v2,Stage2 中模块(a)堆叠3 次,Stage3 堆叠7 次,Stage4 堆叠3 次。当输入为3×416×416 时,Stage2、Stage3 和Conv 层提取到的116×52×52、232×26×26 和1024×13×13 这3 种不同尺寸的特征作为PANet 的输入,通过对不同尺寸的特征融合来加强感受视野,得到最显著的特征。同时,为进一步降低网络计算量,将PANet 结构中的3×3 常规卷积替换为深度可分离卷积。
1.3 注意力机制
近年来,图标检测技术研究发展迅速,但仍存在特征提取不足、识别精度低等问题。注意力机制可以从特征图像中提取出更多的关键信息,抑制无用信息,从而有效地提高神经网络模型的识别精度。由于养殖场中存在大量围栏、地板等设施,且图像质量易受到光照的影响。因此,获取的羊只图像中包含大量的无关信息及噪声。而这些无关特征在神经网络训练时也会被反复地提取并用来预测,影响了网络对羊只的检测精度和普适性。因此,本文在神经网络进行特征提取时,利用CBAM 的通道注意力机制(Channel Attention Module)和空间注意力机制(Spatial Attention Module),赋予对预测正确结果比较重要的通道(或空间)一个较高的权重,对预测结果较小影响或有负面影响的通道(或空间)赋予一个较低的权重。通过注意力机制对网络特征的自适应调节,增强提取到的羊只特征,抑制提取到的无关背景、亮度和噪声等特征,在增加少量参数和计算量的同时提高检测的精度。
添加注意力模块后的网络结构如图5 所示。CBAM 通过依次使用通道和空间注意力模块重新校准特征图的权重,对ShuffleNet V2 提取到的3 种不同尺度的特征进行有选择地增强,并抑制无用特征,可以有效的抑制图像中的噪声。
图5 添加CBAM 模块的网络结构Fig.5 Network structure of adding CBAM module
设输入特征先通过通道注意力模块生成一个一维通道注意力权重,然后通过空间注意力模块生成一个二维空间注意力权重,通道注意力模块和空间注意力模块均使用平均池化和最大池化操作提取特征。前者将得到的特征经过共享多层感知机(Multilayer Perceptron,MPL)后对元素求和,后者则对得到的特征进行卷积,最后二者通过Sigmoid 函数归一化得到通道和空间注意力权重。
1.4 改进非极大值抑制
由于养殖场环境中羊只数量较多,无论在休息、饮食、行走等状态下,羊只之间均存在不同程度的遮挡情况。当羊只之间相互遮挡程度严重时,就很容易发生漏检现象。因此,需要对目标检测生成的预测框进行后处理,以提升检测精度。
在目标检测任务中,交并比(Intersection over Union,IoU)用来衡量两个预测框的相似程度,其计算公式为
式中:UIo为IoU值,A、B为两个不同的预测框。
DIoU在IoU的基础上引入了一个与两个边界框距离相关的惩罚项R,该惩罚项定义为
式中:RDIoU表示惩罚项值,c表示包含A、B两个预测框的最小包络框对角线长度,a、b表示预测框A、B的中心点坐标,ρ表示计算二者的欧式距离(图6中的d)。
图6 DIoU 计算参数Fig.6 DIoU calculation parameters
在大规模检测中,不仅需要考虑预测框与真实框的重叠区域,还要考虑二者中心点之间的距离,则DIoU-NMS 可定义为
式中:si表示B的得分值,ε为非极大值抑制的阈值。
使用DIoU-NMS 时,同时考虑重叠区域和两个边界框中心点之间的距离,增加了其在目标相互遮挡情况下的检测性能。当羊只之间距离较近时,二者对应的预测框重叠面积会较大,即IoU 值较大,此时NMS 将认为二者为同一只羊的预测框,仅保留置信度最高的预测框,此时两只羊的预测框仅保留下了一个,从而发生漏检现象。而DIoU-NMS 在抑制其他预测框时会考虑到预测框之间的位置信息,当两个预测框的中心点存在一定距离时,将认为二者之间是不同羊只的预测框,将其保留下来,避免了漏检现象的发生。
2 实验结果与分析
2.1 数据集与实验环境
实验所用的羊只图像来自于贵州省某养殖场内监控视频。所用羊只彩色图像共400 幅,为视频中抽帧截取获得,时间涵盖了一天内的各个时段。使用图像标注工具LabelImg,将羊只图像标注为VOC格式数据集,图7 为羊只标注图像。由于养殖场环境复杂,羊的动作姿态丰富,通过对数据进行旋转、添加噪声和改变图像亮度等操作,将数据集扩充为4 000 张。随机选取其中3 200张作为训练集,800 张作为测试集。
图7 羊只标注图像Fig.7 Sheep labeling picture
实验环境为:Ubuntu18.04、python3.7、Pytorch1.2.0、显卡型号为RTX 2080Ti、CPU 为i7-9700K。
2.2 评价指标
为验证检测网络的性能,使用AP(Average Precision)和FPS(Frame Per Second)作为主要评价指标。AP的计算公式如下:
式中:P为查准率(Precision),R为查全率(Recall),NTP为网络将羊只目标检测正确的数量,NFP为将非羊只目标误检为羊只目标的数量,NFN为网络未检测出的羊只数 量,P(r)为查准率-查全率(Precision -Recall)曲线,PAP为AP值。
2.3 实验结果
实验将输入图像尺寸设置为412×412,使用迁移学习技术,利用网络在大型数据集中训练得到的结果作为预训练权重。使用冻结模型主干网络方式进行训练,冻结训练轮数(Epoch)设为50,Batch size设为16,初始学习率设为0.001,总训练轮数设为300,Batch size 设为8,初始学习率设为0.000 1;使用余弦退火方法动态调整学习率,使用Mosaic 对数据进行增强。
图8 为本文算法训练时的损失函数曲线。由此可以看出,在前50 轮损失波动较大,第50 轮解冻后,使用更小的学习率,曲线波动逐渐平缓,损失函数逐渐收敛。使用训练300 轮得到的权重进行测试,AP达到了93.57%。
图8 损失函数Fig.8 Loss function
2.4 消融实验
为验证本文改进模块效果,对网络改进部分进行了对比实验,结果见表1。可以看出,使用轻量化特征提取网络及轻量化模块深度可分离卷积后,模型参数减少了84.01%,AP提升了1.42%,FPS增加了16;引入CBAM 后,在增加1.1%的参数量的情况下提升了0.03%的检测精度,FPS减小了1;引入DIoU-NMS 后,模型参数量不变,AP提升了0.18%,FPS减小了6。本文各项改进均对AP有不同程度的提升,在轻量化模块对参数量的大幅优化下,引入注意力机制对模型参数量有微量提升,DIoU-NMS 在满足实时性要求的前提下提升了检测精度。
2.5 检测模型对比实验
使用经典网 络 Faster -RCNN[11]、SSD[12]、YOLOv3[13]、YOLOv4、YOLOv5s[14]算法在本文数据集上进行训练测试,训练轮数设为100,将AP、FPS与模型参数量作为主要评价指标,得到的预测结果见表2。本文提出算法AP达到了91.95%,参数大小为41.13 MB,FPS达到了60。虽然FPS相较于原有YOLOv4 网络有所提升,但在检测精度得到提升的同时,参数大小相比YOLOv3 和YOLOv4 下降了80%左右;Faster-RCNN 作为两阶段目标检测经典算法,其参数大小明显高于其它网络模型,FPS也仅有17,难以满足实时检测的要求;SSD 虽然参数大小及FPS与本文算法相近,但AP低于本文算法;YOLOv3 与YOLOv5 虽然FPS高于本文算法,但参数量较大且AP低于本文算法。
表2 经典检测算法性能比较Tab.2 Classical detection algorithm performance comparison
图9 为改进前后羊只目标检测结果的对比。图9(a)为使用YOLOv4 训练100 轮得到的权重预测得到的结果;在相同条件下,图9(b)是本文改进YOLOv4 算法获得的结果。通过对比可以看出,原YOLOv4 算法对羊只检测的结果存在定位不准确以及漏检的情况;而改进的YOLOv4 检测出的羊只目标定位更加准确,正确检测到的羊只数量更多。
图9 改进前后检测结果对比Fig.9 Improve the comparison of before and after detection results
3 结束语
针对养殖场环境下对羊只进行实时检测比较困难,羊只之间相互遮挡导致漏检率较高等问题,本文提出基于YOLOv4 算法的改进方案。首先降低算法对软硬件的要求,在网络参数量减少2/3 左右的同时,提升了检测的精度;其次,在特征提取过程中引入注意力机制,提升检测精度;最后,使用DIoUNMS 引入预测框之间的位置信息,提升了网络的检测精度。实验结果表明,本文算法在自制羊只数据集上取得了良好的表现,与原YOLOv4 方法相比,参数量明显减少,检测精度得到提升。
在后续的工作中,将继续从实际场景下的应用角度出发,不断研究和改进相关算法,尝试融合疾病检测、个体识别等任务,设计出更优良的羊只自动检测模型。