1. 引言
羊在我国经济中占据重要地位,尤其是在肉类、羊绒和羊奶的生产中。内蒙古作为主要的养羊区域,2022年羊肉总产量的21%来自该地区[1]。随着集中养殖模式的推广以及政策目标的推动,到2025年,规模养殖的比重预计将达到50%。在这一背景下,准确的羊只计数技术变得尤为重要,它不仅有助于防止羊只丢失,还能精准计算采食量和监测母羊产仔情况,从而提升经济效益和养殖管理水平。
基于计算机视觉的计数方法主要分为传统机器学习和深度学习两类。随着技术的进步,深度学习逐渐成为主流,其方法包括目标检测、多目标跟踪和图像分割[2]。基于目标检测的计数方法中,王毅恒等人[3]使用YOLOv3对奶牛进行计数,准确率达到100%,但在目标数量多或有遮挡的情况下效果较差。宁远霖等人[4]通过改进YOLOv5,引入注意力机制和优化器,提高了猪只检测性能,但在密集和严重遮挡场景下存在漏检问题。这些方法通过矩形框标记目标位置并进行分类,适用于实时性和位置信息要求较高且目标分布稀疏的场景。
在基于多目标跟踪的技术中,Zhang等人[5]提出了一种结合YOLO检测和DeepSORT跟踪的系统,通过全局运动补偿模块将计数准确率提高到93%。该方法对目标检测要求较高,不准确的检测会影响跟踪和计数精度。Chen等人[6]则在YOLOv7中引入GAM注意力机制和Alpha-IoU损失函数,结合DeepSORT,取得了95.1%的mAP。但Alpha-IoU的泛化能力较差,影响了对其他目标的准确性。Zheng等人[7]提出的YOLO-BYTE方法结合YOLOv7和ByteTrack,计数准确率为91.6%,但在处理密集目标时性能下降,并且泛化能力较差。这些方法在动态计数场景中表现良好,但需要在准确度和算力需求之间进行平衡。
在基于图像分割的计数方法中,Xu等人[8]使用Mask R-CNN和四轴飞行器捕获的图像,计数准确率达到96%,对遮挡和光照不足具有较强鲁棒性,但硬件成本较高。胡云鸽等人基于Mask R-CNN提出的生猪计数网络,通过改进预处理和特征提取,取得了86%的准确率,但对小目标和高密度目标效果较差。Liu等人[9]提出的ICNet模型具有高计算速度和低资源占用,但计数精度仅为71.4%,适用于对速度要求高的场景。HUANG等人[10]提出的两阶段中心聚类网络,平均绝对误差为0.43,但每幅图像处理时间为4.3秒,不适合需要快速计数的场景。基于图像分割的计数方法可以详细获取目标的位置、轮廓和大小等信息,对密集目标进行较准确的计数,适用于养殖场等密集场景。然而,由于其较高的参数量,模型的训练和推理速度通常较慢,限制了其在实际应用中的普及。因此,研究更轻量化的图像分割计数方法以提高实用性显得尤为重要。
2. 材料与方法
2.1. 数据集的建构
为了应对羊只图像分割数据集较为稀缺的现状,构建了一个专用的羊只图像分割数据集。选择位于呼和浩特市白塔村的中小型养殖场作为数据采集点,拍摄了四段斜俯视角的视频,作为研究的基础数据。首先,对采集的羊只视频数据进行帧采样,本文设置的抽帧的时间间隔设置为每5秒一帧,总共抽取了400张待标注的图片。本文使用Labelme标注工具,首先要对每个待标注的对象用打点的方式,来选取对象的轮廓,在确定好一个对象的外轮廓之后,对每个标好的对象进行类别标记。用于区分对象是不是一类物体,并且将类别名保存在JSON文件中。为了能更好地模拟真实场景与增强模型的泛化能力,本文对原始数据进行了数据增强的操作,数据由原来的400张变为3600张。数据集的部分示例如图1所示。
Figure 1. Example of a sheep image segmentation dataset
图1. 羊只图像分割数据集示例
2.2. 基准网络选择
为了选择一种算法作为羊只计数方法改进的基础模型,设计了对比实验,并使用公共数据集VOC2012对三个经典的图像分割模型进行了训练和评估,以分割平均精度均值(mAP)作为评价标准。实验结果如表1所示。
Table 1. Deep learning image segmentation experiment comparison table
表1. 深度学习图像分割实验对比表
算法 |
mAP (%) |
FCN |
41.62 |
Unet |
40.13 |
Mask R-CNN |
47.37 |
从实验结果分析可得,Mask R-CNN的mAP最高,为47.37。在养殖场景中的羊只图像分割计数任务中,需要准确的分割结果,并且考虑目标的定位和检测。因此,选择使用Mask R-CNN作为基础模型。
2.3. 基准网络轻量化
2.3.1. 主干网络轻量化
在选择MaskR-CNN作为基础模型后,需要对其主干网络进行轻量化改进。本文选取Inverted Residual对Mask R-CNN的主干网络进行轻量化改进。倒残差结构Inverted Residual最早由MobileNetV2引入,是一种在轻量级卷积神经网络中常用的模块,它的作用是提高模型的效率和性能。倒残差采用的是先升维再降维的反向操作,其结构如图2所示。
Figure 2. Inverse residual network structure diagram
图2. 倒残差网络结构图
本文在替换过程中,保留了ResNet50中layer0部分,由于这部分负责对输入图像做预处理,本文希望在新的网络结构中保留相同功能,所以没有进行替换。其余四个模块均按照图3中的结构进行了替换。其中,in-dim为输入维度,out-dim为输出维度,stride表示步幅,当stride = 1时卷积核每次移动一个像素,输出特征图的空间尺寸就与输入相同,当stride = 2时进行下采样,虽然减小了特征图的空间分辨率,但增加了感受野。通过这样的改进,可以得到一个轻量化网络结构如图3所示。
Figure 3. Schematic diagram of the introduction position of the backward residual module
图3. 倒残差模块引入位置示意图
2.3.2. SE注意机制
考虑到主干网络参数量减少而造成准确度下降的情况,本文在主干网络中引入SE注意力机制来缓解这一情况。由图4可知,SE模块主要包含以下几个步骤。
Figure 4. SE attention mechanism
图4. SE注意力机制
1) Squeeze对输入特征图进行全局平均池化,将每个通道的特征图转换为一个单一的值。假设输入特征图为X,其形状为H × W × C (高度、宽度和通道数)。全局平均池化后得到的特征向量z形状为1 × 1 × C。
2) Excitation通过两个全连接层来学习每个通道的重要性权重。首先是一个带有ReLU激活函数的全连接层,然后是一个带有sigmoid激活函数的全连接层。
其中,W1和W2是两个全连接层的权重矩阵,
是sigmoid激活函数,s是学到的每个通道的权重。
3) Scale将学到的权重s重新作用到输入特征图的每个通道上。具体地,使用广播机制将每个通道的特征图乘以对应的权重。
对于Mask R-CNN-I模型,底层通常捕捉基础且简单的特征,如边缘、颜色和纹理,这些特征对图片理解很重要,但缺乏抽象性。因此,在底层加入注意力机制效果不明显,因为特征几乎同等重要。注意力机制对深层网络的抽象特征进行加权,可以突出对任务最有帮助的特征。因此,我们在高层的moblile2、moblile3、moblile4模块中加入注意力机制,使网络对任务更敏感。加入后的网络结构如图5所示。
2.3.3. 特征金字塔网络的改进
FPN是一种特征金字塔结构,它通过自下而上和自上而下的水平连接来提取多尺度的特征。在特征融合部分将FPN与ASPP (空洞空间卷积池化金字塔)结合起来。这样的组合充分利用了FPN的多尺度特征金字塔结构,以及ASPP在局部和全局感受野上的有效信息捕捉能力。这有助于提高模型对目标的理解和分割性能。
ASPP用于增加感受野并捕获多尺度的上下文信息,同时保持特征图的空间分辨率。一般情况下,它被加在网络的深层部分,以捕捉高级语义信息而不是边缘或纹理等信息,这有助于改善网络对复杂对象和场景的理解。对于像素级的图像分割任务,在深层网络中加入ASPP可以扩大感受野,而在浅层加入可能会忽略有用的细节信息。因此,本文选择在FPN的M5、M4层引入ASPP,以利用网络已经提取的复杂特征,在不增加模型规模的情况下,增强对不同尺度结构的理解和处理能力。其引入位置如图6所示。
Figure 5. Schematic diagram of where SE attention mechanism is introduced
图5. SE注意力机制引入位置示意图
Figure 6. Schematic diagram of the ASPP introduction location
图6. ASPP引入位置示意图
通过对Mask R-CNN的主干网络进行了轻量化改进,SE注意力机制的引入,以及,在特征融合部分加入了ASPP空洞金字塔池化,提升模型对多尺度信息的捕获能力。本文提出的模型总体架构如图7所示。
Figure 7. Model architecture diagram
图7. 模型架构图
2.4. 实验设计
数据集:本文选取在1.1节中构建的数据集,共计3600张图片。按照8:2的比例划分为训练集和测试集。
评价指标:本文使用的评价指标如下:Params/M (参数量):表示模型中需要优化的可训练参数的数量,Macc/G (计算量):表示模型的计算复杂度,单帧时间/s:表示推理单帧图像所需的时间,MS/M (模型大小):表示模型所占用的存储空间大小,Count_Accuracy/% (计数准确度):评价羊只计数的准确度。其中Count_Accuracy的计算公式如下:
其中total_projects为模型预测的羊只数量,annotated_count为真实标注的羊只数量,total_annotated 为标注数据的数量。
超参数设置:算法开发环境的硬件配置包括 Xeon(R) Silver 4214R处理器、RTX 3080显卡、4 GB显存,操作系统为Windows 11。软件方面使用了PyCharm 2021、CUDA 11.3、CUDNN 8.2、Pytorch框架以及Python 3.8。训练参数设置为:Epochs为110,Batch Size为8,学习率为0.004,优化器为SGD,权重衰减为1e−4,动量为0.9。
基线模型:本文对基于YOLOv5 [12]、SSD [13]和DeepLabv3Plus [14]的计数方法进行了重复试验,以进行性能比较。
2.4.1. 消融实验结果与分析
为了验证Mask R-CNN-I-S-A模型中各个组件的有效性,本文进行了消融实验。通过逐步移除模型中的关键组件来评估这些组件对模型性能的影响。在本文中,我们主要关注以下几个组件的消融实验:Inverted Residual模块,SE注意力机制模块,ASPP模块。其中Mask R-CNN:基础模型,不包含任何新增模块。Mask R-CNN-I:在基础模型中添加Inverted Residual模块。Mask R-CNN-I-S:在基础模型中添加Inverted Residual模块和SE注意力机制模块。Mask R-CNN-I-S-A:完整模型,包含所有新增模块。消融实验结果如表2所示。
根据表中的数据,逐步引入Inverted Residual模块、SE注意力机制模块和ASPP模块后,模型在轻量化的同时也实现了计数准确率的提升。具体而言:参数数量从基础模型Mask R-CNN的23.51 M减少
Table 2. Results of ablation experiments
表2. 消融实验结果
模型 |
Params/M |
Macc/G |
单帧时间/s |
MS/M |
计数准确率 |
Mask R-CNN |
23.51 |
21.58 |
0.2216 |
339 |
96.09% |
Mask R-CNN-I |
8.37 |
11.13 |
0.1368 |
220 |
92.23% |
Mask R-CNN-I-S |
11.12 |
11.14 |
0.1687 |
241 |
94.32% |
Mask R-CNN-I-S-A |
14.47 |
15.94 |
0.1726 |
222 |
96.27% |
至Mask R-CNN-I-S-A的14.47 M,减少了32.95%。单帧推理时间从Mask R-CNN的0.2216秒减少至Mask R-CNN-I-S-A的0.1726秒,减少了22.12%。计数准确率从Mask R-CNN的96.09%提升至Mask R-CNN-I-S-A的96.27%,提高了0.18个百分点。这些结果表明,通过逐步加入Inverted Residual模块、SE注意力机制模块和ASPP模块,模型不仅实现了轻量化,而且在保持较高计数准确率的同时,显著提升了推理速度。具体原因如下:Inverted Residual模块采用深度可分离卷积(Depthwise Separable Convolution),有效减少了模型的参数数量,从而降低了模型的复杂度。SE注意力机制模块的引入有助于提高计数准确率,因为它能够更好地聚焦于重要特征,增强了模型对关键特征的关注。ASPP模块的加入提升了多尺度物体的检测能力,通过不同尺度的空洞卷积捕捉多尺度上下文信息,增强了模型的泛化能力和鲁棒性。
综合来看,这些改进措施不仅提升了模型在羊只计数任务上的性能,而且在资源受限的环境下也保持了高效的推理能力。尤其在羊只密集的场景中,这种轻量化和高效推理的特性显得尤为重要。在羊只密集的场景中应用。分割效果如图8所示。
Figure 8. Mask R-CNN-I-S-A effect
图8. Mask R-CNN-I-S-A 效果
2.4.2. 对比试验结果与分析
本文将改进后得到的Mask R-CNN-InvertedResidual-SE-ASPP简记为Mask R-CNN-I-S-A,并与基于YOLOv5、SSD及DeepLabv3Plus的计数方法进行了重复试验比较,以便更全面地评估它们的性能。评估指标包括每种方法的参数量、计算量、单帧推理时间、模型大小及计数准确率。对比实验结果如表3所示。
Table 3. Comparative experimental results
表3. 对比实验结果
模型 |
Params/M |
Macc/G |
单帧时间/s |
MS/M |
计数准确率 |
Mask R-CNN-I-S-A |
14.47 |
15.94 |
0.1726 |
222 |
96.27% |
YOLOv5 |
21.2 |
24.5 |
0.1193 |
44.3 |
80.33% |
SSD |
25.08 |
15.46 |
0.2120 |
95.71 |
83.07% |
DeepLabv3Plus |
38.9 |
31.35 |
0.3174 |
304 |
92.35% |
从表中数据可知根Mask R-CNN-I-S-A模型的参数数量为14.47 M,相比于YOLOv5 (21.2 M)、SSD (25.08 M)以及DeepLabv3Plus (38.9 M)明显较少。这意味着,在保持高性能的同时,该模型实现了轻量化的设计。此外,Mask R-CNN-I-S-A的计算量为15.94 G,与SSD (15.46 G)接近,但低于YOLOv5 (24.5 G)和DeepLabv3Plus (31.35 G)。这一结果表明该模型在计算效率上具有良好的表现。在处理时间方面,Mask R-CNN-I-S-A单帧处理时间为0.1726秒,介于YOLOv5 (0.1193秒)和SSD (0.2120秒)之间,并且优于DeepLabv3Plus (0.3174秒),这说明在保持较高准确度的同时,其处理速度也较快。在内存占用方面,Mask R-CNN-I-S-A为222MB,介于YOLOv5 (44.3 MB)和SSD (95.71 MB)之间,但低于DeepLabv3Plus (304 MB),显示了该模型在内存使用上的优势。最重要的是,Mask R-CNN-I-S-A的计数准确率达到96.27%,超过了YOLOv5 (80.33%)、SSD (83.07%)以及DeepLabv3Plus (92.35%)。这一优异性能主要归功于Inverted Residual模块的有效使用,它减少了模型的参数数量;SE注意力机制模块的引入帮助模型更好地关注关键特征;而ASPP模块则提升了模型对不同尺度物体的检测能力,增强了整体的泛化能力和鲁棒性。
综上所述,Mask R-CNN-I-S-A在羊只计数任务上表现突出,尤其是在保证高准确率的同时实现了轻量化设计,这使其非常适合在资源受限的环境中部署和应用。
3. 讨论与结论
本文通过对基于Mask R-CNN的轻量化羊只计数模型进行改进,引入了倒残差模块以轻量化特征提取网络,并结合SE注意力机制提升了特征提取能力。此外,通过将ASPP空洞金字塔池化模块融入FPN网络中,增强了特征融合效果。改进后的模型在计数准确率上达到了96.09%,相比基准模型,mAPseg提升了0.7%,mAPbbox提升了0.9%。同时,模型的参数量减少了38.46%,计算量减少了26.14%,体积减少了34.52%,单帧推理速度提升了22.12%。这一改进有效地解决了羊只计数在密集场景下所面临的时效性问题,提高了模型在实际应用中的价值。尽管取得了显著进展,但仍存在数据集覆盖范围有限的问题,可能导致模型在某些特定情况下泛化能力不足;此外,尽管模型已经实现了较大幅度的轻量化,但在模型压缩技术(如剪枝和量化)的应用方面仍有改进空间。未来的研究可以进一步探索这些技术,以实现更深层次的模型轻量化,并通过收集更多样化的数据来提升模型的泛化能力化。
基金项目
内蒙古自然科学基金项目(2023LHMS06012);内蒙古自治区直属高校科研基本业务费重点项目(项目编号:BR231407)。
NOTES
*通讯作者Email: limeian1973@126.com