Lightweight Sheep Counting Study Based on Mask R-CNN
To enhance the accuracy and practicality of sheep counting, this paper proposes a lightweight sheep counting algorithm based on Mask R-CNN combined with computer vision technology. For data set creation, we collected sheep images from local farms in Baita Village, Hohhot, Inner Mongolia, to create a sheep image segmentation dataset. To lighten the model, we replaced parts of the feature extraction network with Inverted Residual modules and incorporated Squeeze-and-Excitation (SE) attention mechanisms to maintain segmentation accuracy while reducing the model’s size. Additionally, we optimized the model’s feature fusion part using the Atrous Spatial Pyramid Pooling (ASPP) structure. Finally, we used the masks generated by the improved Mask R-CNN for counting. The results show that the improved Mask R-CNN-Inverted Residual-SE-ASPP sheep counting model achieved an accuracy rate of 96.27%, reduced the number of parameters by 38.46%, decreased computational complexity by 26.14%, reduced the model size by 34.52%, and increased single-frame inference speed by 22.12%. This indicates that the improved Mask R-CNN is more suitable for efficient sheep counting in practical applications.
Mask R-CNN
羊在我国经济中占据重要地位,尤其是在肉类、羊绒和羊奶的生产中。内蒙古作为主要的养羊区域,2022年羊肉总产量的21%来自该地区
基于计算机视觉的计数方法主要分为传统机器学习和深度学习两类。随着技术的进步,深度学习逐渐成为主流,其方法包括目标检测、多目标跟踪和图像分割
在基于多目标跟踪的技术中,Zhang等人
在基于图像分割的计数方法中,Xu等人
为了应对羊只图像分割数据集较为稀缺的现状,构建了一个专用的羊只图像分割数据集。选择位于呼和浩特市白塔村的中小型养殖场作为数据采集点,拍摄了四段斜俯视角的视频,作为研究的基础数据。首先,对采集的羊只视频数据进行帧采样,本文设置的抽帧的时间间隔设置为每5秒一帧,总共抽取了400张待标注的图片。本文使用Labelme标注工具,首先要对每个待标注的对象用打点的方式,来选取对象的轮廓,在确定好一个对象的外轮廓之后,对每个标好的对象进行类别标记。用于区分对象是不是一类物体,并且将类别名保存在JSON文件中。为了能更好地模拟真实场景与增强模型的泛化能力,本文对原始数据进行了数据增强的操作,数据由原来的400张变为3600张。数据集的部分示例如
为了选择一种算法作为羊只计数方法改进的基础模型,设计了对比实验,并使用公共数据集VOC2012对三个经典的图像分割模型进行了训练和评估,以分割平均精度均值(mAP)作为评价标准。实验结果如
算法 |
mAP (%) |
FCN |
41.62 |
Unet |
40.13 |
Mask R-CNN |
47.37 |
从实验结果分析可得,Mask R-CNN的mAP最高,为47.37。在养殖场景中的羊只图像分割计数任务中,需要准确的分割结果,并且考虑目标的定位和检测。因此,选择使用Mask R-CNN作为基础模型。
在选择MaskR-CNN作为基础模型后,需要对其主干网络进行轻量化改进。本文选取Inverted Residual对Mask R-CNN的主干网络进行轻量化改进。倒残差结构Inverted Residual最早由MobileNetV2引入,是一种在轻量级卷积神经网络中常用的模块,它的作用是提高模型的效率和性能。倒残差采用的是先升维再降维的反向操作,其结构如
本文在替换过程中,保留了ResNet50中layer0部分,由于这部分负责对输入图像做预处理,本文希望在新的网络结构中保留相同功能,所以没有进行替换。其余四个模块均按照
考虑到主干网络参数量减少而造成准确度下降的情况,本文在主干网络中引入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模块中加入注意力机制,使网络对任务更敏感。加入后的网络结构如
FPN是一种特征金字塔结构,它通过自下而上和自上而下的水平连接来提取多尺度的特征。在特征融合部分将FPN与ASPP (空洞空间卷积池化金字塔)结合起来。这样的组合充分利用了FPN的多尺度特征金字塔结构,以及ASPP在局部和全局感受野上的有效信息捕捉能力。这有助于提高模型对目标的理解和分割性能。
ASPP用于增加感受野并捕获多尺度的上下文信息,同时保持特征图的空间分辨率。一般情况下,它被加在网络的深层部分,以捕捉高级语义信息而不是边缘或纹理等信息,这有助于改善网络对复杂对象和场景的理解。对于像素级的图像分割任务,在深层网络中加入ASPP可以扩大感受野,而在浅层加入可能会忽略有用的细节信息。因此,本文选择在FPN的M5、M4层引入ASPP,以利用网络已经提取的复杂特征,在不增加模型规模的情况下,增强对不同尺度结构的理解和处理能力。其引入位置如
通过对Mask R-CNN的主干网络进行了轻量化改进,SE注意力机制的引入,以及,在特征融合部分加入了ASPP空洞金字塔池化,提升模型对多尺度信息的捕获能力。本文提出的模型总体架构如
数据集:本文选取在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
为了验证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:完整模型,包含所有新增模块。消融实验结果如
根据表中的数据,逐步引入Inverted Residual模块、SE注意力机制模块和ASPP模块后,模型在轻量化的同时也实现了计数准确率的提升。具体而言:参数数量从基础模型Mask R-CNN的23.51 M减少
模型 |
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模块的加入提升了多尺度物体的检测能力,通过不同尺度的空洞卷积捕捉多尺度上下文信息,增强了模型的泛化能力和鲁棒性。
综合来看,这些改进措施不仅提升了模型在羊只计数任务上的性能,而且在资源受限的环境下也保持了高效的推理能力。尤其在羊只密集的场景中,这种轻量化和高效推理的特性显得尤为重要。在羊只密集的场景中应用。分割效果如
本文将改进后得到的Mask R-CNN-InvertedResidual-SE-ASPP简记为Mask R-CNN-I-S-A,并与基于YOLOv5、SSD及DeepLabv3Plus的计数方法进行了重复试验比较,以便更全面地评估它们的性能。评估指标包括每种方法的参数量、计算量、单帧推理时间、模型大小及计数准确率。对比实验结果如
模型 |
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在羊只计数任务上表现突出,尤其是在保证高准确率的同时实现了轻量化设计,这使其非常适合在资源受限的环境中部署和应用。
本文通过对基于Mask R-CNN的轻量化羊只计数模型进行改进,引入了倒残差模块以轻量化特征提取网络,并结合SE注意力机制提升了特征提取能力。此外,通过将ASPP空洞金字塔池化模块融入FPN网络中,增强了特征融合效果。改进后的模型在计数准确率上达到了96.09%,相比基准模型,mAPseg提升了0.7%,mAPbbox提升了0.9%。同时,模型的参数量减少了38.46%,计算量减少了26.14%,体积减少了34.52%,单帧推理速度提升了22.12%。这一改进有效地解决了羊只计数在密集场景下所面临的时效性问题,提高了模型在实际应用中的价值。尽管取得了显著进展,但仍存在数据集覆盖范围有限的问题,可能导致模型在某些特定情况下泛化能力不足;此外,尽管模型已经实现了较大幅度的轻量化,但在模型压缩技术(如剪枝和量化)的应用方面仍有改进空间。未来的研究可以进一步探索这些技术,以实现更深层次的模型轻量化,并通过收集更多样化的数据来提升模型的泛化能力化。
内蒙古自然科学基金项目(2023LHMS06012);内蒙古自治区直属高校科研基本业务费重点项目(项目编号:BR231407)。
*通讯作者Email: limeian1973@126.com