Automatic counting of shrimp larvae based on probability density map model generated from front end and back end
-
摘要:
虾苗计数是虾类养殖与销售中生物量估算的基本操作,对养殖管理和提高产量至关重要。由于受虾苗体型小、遮挡严重以及密集程度不一等因素影响,现有的自动计数方法难以在一定密度下准确计数。基于此,提出了一种基于贝叶斯概率分布的前后端结合计数网络 (Shrimp counting, SC) 模型,用于解决虾苗计数问题。该模型主要由前端模块、注意力模块和后端模块构成。首先,使用前端模块提取具有判别性的表型特征,并采用注意力模块对特征进行重组,以提升对图像的局部注意力;随后,使用后端模块生成虾苗分布预测概率密度图;最后,通过贝叶斯损失函数对模型进行参数调整,以提升虾苗计数的精确度。为了验证方法的有效性,构建了一个包含2种不同密度的虾苗计数数据集,并在该数据集上进行了多组实验对比。结果显示,总体准确率可达93.325%,平均绝对误差和均方误差分别为96.304和154.567。与现有主流的计数方法 [布莱克-利特曼模型 (Black-Litterman, BL)、人群密度估计网络 (Contextual Scene Recognition Network, CSR-Net)、多维注意力增强人群计数模型 (Boosting Crowd Counting via Multifaceted Attention, BCCMA)] 相比,SC模型准确率最高、误差最小。该模型适用于孵化场、销售和养殖入塘等多场景的虾苗自动计数。
Abstract:Shrimp larval counting is a fundamental operation for biomass estimation in shrimp farming and sales, and it is crucial for aquaculture management and yield enhancement. Due to the factors such as small size of shrimp larvae, significant occlusion, and varying density, the current automated counting methods are difficult to achieve accurate larval counting at certain densities. To address this issue, we propose a shrimp counting (SC) model for shrimp larval counting which combined frontend and backend counting network based on Bayesian probability distribution. This model primarily consists of a frontend module, an attention module and a backend module. The frontend module first extracts discriminative phenotypic features, while the attention module reorganizes these features to enhance local attention to the images. Secondly, the backend module generates a predicted probability density map for shrimp larval distribution. Thirdly, the Bayesian loss function is utilized to adjust the model parameters and improve the accuracy of shrimp larval counting. To validate the effectiveness of the proposed method, we constructed a shrimp larval counting dataset with two different density conditions and conducted multiple experimental comparisons on the dataset. The overall accuracy reached 93.325%, with mean absolute error and mean squared error being 96.304 and 154.567, respectively. Compared with the current mainstream counting methods [Black-Litterman (BL), Contextual Scene Recognition Network CSR-Net), Boosting Crowd Counting via Multifaceted Attention BCCMA], the proposed model exhibits the highest accuracy and the lowest loss. It applies to automated shrimp larval counting in hatcheries, sales and stocking scenarios.
-
目标计数是指对图片中特定区域内的目标物体进行数量估计,以获取数量信息,为后续分析提供依据。这种技术已广泛应用于水果、畜牧、稻田等养殖领域[1-4]。虾苗计数在虾类养殖中起着重要作用,是养殖管理、经济效益评估、疾病防控以及水产数据分析等领域的关键环节[5-6]。传统的人工计数依赖于人的经验和技能,通常能在复杂环境中保持较高的精确度。但人工计数耗时费力,且操作过程容易导致虾苗受损,影响其健康和成活率。为了克服这些缺点,有必要开展自动虾苗计数研究,通过结合计算机视觉和机器学习技术,并利用摄像头和图像处理算法,实现虾苗的快速、准确计数。自动计数系统能够快速处理大量数据,提升工作效率;同时减少人工操作对虾苗的直接接触,降低虾苗受损的风险,进而提高虾苗的成活率。
传统的自动计数方法一般依赖于阈值处理的图像分割以及图形检测[7-10]。图像分割方法是通过设定阈值,对图像中的像素灰度值进行二值化处理,目的是将背景与前景 (如虾苗或鱼苗) 分开,然后对前景部分进行自动计数。然而,传统计数方法在处理复杂场景时容易受到背景干扰,存在精度不足、背景自适应性差、泛化性能弱等问题,导致计数结果不准确。此外,在不同光照条件和目标分布密度的图像中,传统计数方法的表现通常不够稳定,难以满足实际应用需求。随着技术的进步,深度学习技术在水产养殖领域展现出了显著的优势和广阔的应用前景 [11-15]。在深度学习计数应用中,通常采用卷积神经网络对图像进行检测或分割,并将检测或分割得到的目标数量作为计数结果。Hong 等[16]使用参数校准策略改进了掩膜区域卷积神经网络 (Mask Region-based Convolutional Neural Network, Mask-CNN),实现对图像中虾的分割;根据虾的密度将图像数据分为3类:低密度图像 (1~90尾虾)、中密度图像 (91~180尾虾) 和高密度图像 (180~27尾虾);最后通过回归拟合完成对虾的自动计数。Armalivia等[17]采集并创建了一个虾苗计数数据集 (单张图像中的虾苗少于150尾),利用YOLOv3算法构建目标检测模型,通过统计检测到的虾苗数量,实现了76.68%的自动计数精度。李西明等[18]利用YOLOX对肉鸡进行视频追踪计数,单个视频计数量小于100,通过提取视频中的单帧作为输入数据进行目标检测后计数。现有数据集[15-16]存在内部数据不足的问题 (单张图像包含的目标数少于300),不符合虾苗的实际计数需要,使得现有数据集难以投入实际应用。此外,目标检测在单张图像超过150 个目标时,计数精度会下降[17],不适用于虾苗的密集计数。
针对目标密集问题,人群计数领域采用了基于密度图回归的算法。这些算法通过卷积神经网络生成密度图,并利用密度估计方法来计算目标数量[19-22]。相较之下,虾苗在图像中占比较小,更容易受到图像噪点的影响。虾苗间的严重遮挡和聚集现象,增加了自动计数的难度。此外,光线、水质、虾苗颜色与背景颜色的对比度等因素也加大了计数挑战。在高密度情况下,虾苗之间可能出现明显重叠,使得现有计数方法难以准确区分和计数每个独立个体,进而影响计数的准确性。针对虾苗数据集数量有限且虾苗分布稀疏的问题,构建了一个包含低密度和高密度虾苗数据的计数数据集,共1 076张图像,并对所有图像进行了关键点标注。为了解决一定密度下的虾苗自动计数问题,本研究提出了一种基于贝叶斯概率分布的前后端结合计数网络 (Shrimp counting, SC) 模型。该模型首先利用前端网络主干提取输入图像的特征,接着通过卷积注意力模块 (Convolutional block attention module, CBAM) 在通道和空间维度上重构特征,以帮助模型学习虾苗高度聚集区域的特征。基于这些特征,后端模块使用空洞卷积生成预测密度图,计算虾苗的分布位置及其数量,并采用贝叶斯损失函数来调整模型参数,以提高虾苗计数的精度。在构建的数据集上进行了实验和消融分析,并验证了模型的有效性。
1. 材料与方法
1.1 材料
为获取一定密度的虾苗计数数据,在虾苗养殖场中通过人工拍照的方式,采集虾苗的平面数据,随后对获得的图像数据进行筛选、整理,进而构建虾苗计数数据集。如图1所示,采集平台包括虾苗容器、采集设备、固定台、服务器。为获得虾苗的俯视图,采集设备安装在虾苗容器的正上方,距离水面0.5 m。使用苹果与安卓手机作为采集设备对虾苗进行拍照,以还原实际场景的通用性。服务器为基于Windows系统的通用存储设备,采集设备在拍摄期间与服务器通过网络连接,将采集完成的虾苗俯视图像数据传输到服务器进行存储。
在虾苗孵化场、销售及入塘等环节,通常需要进行人工计数。在实际计数场景中,使用养殖场常见的圆形白色瓢作为采集工具,水深为2 cm (图2),对采集得到的图片进行人工筛选、清洗等预处理,获得1 076 张图片,图像的分辨率为3 024像素×4 032像素,格式为jpg。
由于虾苗个体较小,在图像中所占比例较小,为此对虾苗图像进行了关键点标注 (标注在虾头位置),如图2第2行所示的黄色标注点。在实际计数过程中,虾苗会被收集到白色瓢中进行人工计数。由于销售环节的计数数量较少,因此制作了低密度数据;而根据孵化和入塘等环节的需求,复现了高密度数据。这2类数据在数据集中的比例为5∶5,其中低密度图像中的虾苗数量介于207~422尾,而高密度图像中的虾苗数量介于1 627~1 920尾。
如图3所示,虾苗计数数据集存在以下特点:
1) 背景噪点:容器底部会沉淀一些饲料残渣或水体带来的杂质,这些杂质与虾苗相似,易干扰计数。
2) 中心聚集和区域聚集:虾苗自由活动后往往会聚集到某些区域,导致虾头与虾尾重叠。
3) 密度分布不均衡:由于拍摄时虾苗的装载量难以控制,导致采集到的图像虾苗分布密度不一,进而增加了自动计数困难。为验证算法性能,根据销售和养殖所需的统计数量,将虾苗图像划分为低密度图像和高密度图像。
1.2 SC模型
SC模型主要由前端模块、注意力模块、后端模块以及用于参数调整的贝叶斯损失函数4部分组成(图4)。前端模块使用改进后的VGG-19网络[23]作为特征提取主干,用于提取虾苗的低级和高级特征;随后将提取到的特征输入到注意力模块;然后采用CBAM注意力模块增加模型对虾苗区域的关注,为了增大模型的感受野并保持图像分辨率,后端采用6 层堆叠的空洞卷积层,以提高虾苗在图像上的概率分布预测精度,一层输出层进行预测密度图的生成。受BL模型[24]启发,在训练过程中采用贝叶斯损失函数调整模型参数,通过计算先验概率减少聚集情况下虾苗图像的计数误差,以提升模型的泛化性。
1.2.1 前端模块
前端模块由数个相同的填充为1、窗口形状为3×3的卷积层后接上一个步幅为2、窗口形状为2×2的最大池化层构成。卷积层保持输入的高和宽不变,而每当输出到池化层后,高和宽会减半。在原有VGG-19网络主干基础上进行了修改,去掉了最后4层输出卷积核数为512的卷积层以及3层全连接层,整体的网络结构如图5所示。
在结构上,前端网络结构设计简单,主要由卷积层、池化层和全连接层组成,使其易于调整以及进行计数相关的优化。对于给定的感受野 (与输出有关的输入图片的局部大小),采用堆积的小卷积核 (如3×3) 而不是大卷积核 (如5×5或7×7),在保持感受野大小的同时减少了网络参数量,有利于避免过拟合和降低计算成本。不仅如此,堆叠的小卷积核还可以增加网络深度,从而使模型能够学习到更加丰富的图像特征,这些特征可以提升一定密度下虾苗个体的识别效果,为预测密度图生成提供初级的特征指导。
1.2.2 CBAM注意力模块
CBAM注意力模块通过注意力机制引导网络集中关注图像中的特定区域,以此增加网络的特征提取能力。具体结构如图6所示,对于前端模块学习得到的特征,CBAM分别使用空间注意力机制和通道注意力机制来识别网络应重点分析的特征区域。首先,空间注意力机制通过计算每个位置的权重,确定网络应关注的空间区域;这通过平均池化和最大池化来实现,以计算每个位置的权重;接着,通道注意力机制通过计算每个通道的权重,确定网络应关注的通道,再通过全连接层和Softmax函数,计算出每个通道的权重;最后,结合这2个注意力机制对输入特征图进行加权求和,决定网络最终应关注的特征。
CBAM的优点在于能够增强网络的特征提取能力,使网络更关注图像中的重要特征 (例如虾苗),从而对虾苗的中心聚集和区域聚集情况赋予更高的权重,提高计数精度。
1.2.3 后端模块
后端主要由6层空洞卷积和1层输出层构成 (图7)。前3层卷积层的输入和输出通道数均为512,卷积核尺寸为3×3,空洞值为2,通过扩大感受野,相较于传统池化操作,避免了精度损失。后3层卷积层的输入通道数与上一层相同,保持卷积核尺寸和空洞值不变,逐步减少输出通道数,分别为256、128、64,最终与输出层结合,生成预测密度图。
预测密度图的每个像素点的数值代表该位置虾苗的数量,数值为0时表示该位置无虾苗,数值大于1时可表示虾苗分布密集、遮挡等情况,有助于减少高密度虾苗计数的误差。将预测密度图中所有位置的数值累加,即可得到虾苗的计数结果。此外,预测密度图可以被可视化为热力图,这能更直观地展示虾苗的位置以及高密度聚集区域。
1.2.4 贝叶斯损失函数
SC模型在训练过程中使用贝叶斯损失函数调整模型参数,以获取虾苗在图像中的分布。首先需要计算某尾虾苗在二维图上某个点的贝叶斯概率,其公式为:
$$ p({y}_n|{x}_m){\mathrm{=}}\frac{p\left({x}_{m}\right|{y}_{n})}{{\sum }_{n{\mathrm{=}}1}^{N}p\left({x}_{m}\right|{y}_{n})} $$ (1) 式中:$ {x}_{m} $ 表示图上第m个像素点;$ {y}_{n} $ 表示第n尾虾苗;$ p({x}_{m}|{y}_{n}) $ 表示第n尾虾苗存在时,发生在像素点xm的概率,通过全概率公式计算得到第n尾虾苗在图上第m个像素点出现的概率p(yn|xm);由公式(1)和预测得到的密度图,可以计算在整幅图中第n尾虾苗出现的期望 $ {E[c}_{n}] $ ,计算公式为:
$$ {E[c}_{n}]{\mathrm{=}}\mathrm{ }{E}\left[{\sum }_{m{\mathrm{=}}1}^{M}{c}_{n}^{m}\right]{\mathrm{=}}{\sum }_{m{\mathrm{=}}1}^{M}p({y}_{n}|{x}_{m}){D}^{\mathrm{est}}\left({x}_{m}\right) $$ (2) 式中:$ {c}_{n} $ 表示整幅密度图与第n尾虾苗相关的总概率计数;$ {c}_{n}^{m} $ 表示 $ {x}_{m} $ 上出现第n尾虾苗的概率;$ {D}^{{\mathrm{est}}} $ 表示预测生成的密度图,也表示某个像素点出现虾苗的概率图,那么整幅密度图中第n尾虾苗出现的理想期望应该为1,由此,可以得到损失函数 (Loss) 为:
$$ \mathrm{L}\mathrm{o}\mathrm{s}\mathrm{s}{\mathrm{=}}{{\sum }}_{n{\mathrm{=}}1}^{{N}}f(1{\text{−}}{E[c}_{n}]) $$ (3) 式中:$ \,f(\cdot ) $ 表示曼哈顿距离计算公式,通过该损失函数,可以纠正图中预测点的概率分布,提升图像中虾苗定位的精度。
2. 模型性能对比实验
2.1 训练与评价准则
基于虾苗计数数据集对模型进行训练。首先是数据集划分,在训练前以约7∶2∶1的比例将数据集划分为训练集、验证集和测试集。训练集的数据包含753张图像并用于模型训练;验证集包含200张图像,用于评估模型在训练过程中对未知数据的表现以及确定模型停止训练的时间;测试集包含123张图像,用于对已经训练和调优完成的模型进行最终的性能评估。
在训练开始前对模型进行初始化,网络主干载入在ImageNet数据集[25]上得到的预训练参数,剩下的网络参数使用凯明均匀分布算法初始化除网络层外所有卷积层的权值系数,使其均值为0。
在训练过程中,将训练集传入SC模型中进行前向传播,对在后端输出预测密度图与真实密度图。使用贝叶斯损失函数计算后端输出的预测密度图与真实密度图之间的损失值。然后,根据损失值通过反向传播算法更新SC模型的权重系数,持续优化网络的计数性能,直至模型性能稳定。
最后是模型测试与模型保存:将训练后的SC模型在测试集进行测试,并计算测试集上的平均绝对误差 (Mean absolute error, MAE)、均方误差 (Mean square error, MSE) 和准确率 (Accuracy, Acc)。将较优的模型权值系数保存到本地后,进行下一次的模型训练。
为验证模型性能,采用SC模型在测试集上的MAE、MSE和准确率3个指标作为模型的评价标准。MAE指模型输出的预测虾苗值与真实标记虾苗值的平均误差,MSE可以进一步度量预测值与真实值之间的差异,准确率则在百分比这一维度度量结果的差异。计算公式分别为:
$$ \mathrm{M}\mathrm{A}\mathrm{E}{\mathrm{=}}\frac{1}{N}{\sum }_{i{\mathrm{=}}1}^{N}\left|{G}_{i}{\text{−}}{P}_{i}\right| $$ (4) $$ \mathrm{M}\mathrm{S}\mathrm{E}{\mathrm{=}}\sqrt{\frac{1}{N}{\sum }_{i{\mathrm{=}}1}^{N}{\left|{G}_{i}{\text{−}}{P}_{i}\right|}^{2}} $$ (5) $$ {{\mathrm{A}}}{\mathrm{c}\mathrm{c}}{\mathrm{=}}\frac{1}{N}{\sum }_{i{\mathrm{=}}1}^{N}(1{\text{−}}\frac{\left|{G}_{i}{\text{−}}{P}_{i}\right|}{{G}_{i}}) $$ (6) 式中:G为真实标记数量;P为样本的预测数值;N为测试样本总数;i为第i个测试样本。其中,准确率Acc采用绝对值的方式统一误差为正值,计算出每个样本的误差率,再通过对所有样本求和之后取平均值计算出整个测试集的平均准确率。
2.2 实验环境与参数设置
本实验的训练环境为:64位的Ubuntu 22.04操作系统,图形处理器 (Graphics Processing Unit, GPU) 型号为NVIDIA A30 24 G,中央处理器 (Central Processing Unit, CPU) 的型号为Intel(R)Xeon 4314@2.4 Hz,集成开发环境为Anaconda3.0,采用Pytorch 2.0作为深度学习框架构建与部署网络模型,并使用CUDA版本并行计算框架。
虾苗计数的测试环境为:64位Windows10操作系统,图形处理器型号为NVIDIA RTX 4060 8 G,中央处理器的型号为AMD 2700X @4.1 Hz,运行的代码库环境与训练时一致,选择Windows10操作系统的原因是保证模型的可移植性和实际应用的可用性,并测试在此硬件上的性能表现。
模型迭代次数设置为999,批处理量为16。训练时优化器选择Adam优化器,优化器的学习率变化中的最大参数设置为0.000 01,权重衰减系数的参数设置为0.000 1。其余参数均为默认值。
2.3 与主流计数算法对比分析
为验证本研究SC模型的虾苗计数性能,基于构建的虾苗计数数据集,将其与主流的通用目标识别方法布莱克-利特曼 (Black-Litterman, BL) 模型[23]、人群密度估计网络 (Contextual Scene Recognition Network, CSR-Net)[26]、多维注意力增强人群计数 (Boosting Crowd Counting via Multifaceted Attention, BCCMA) 模型 [27]进行实验对比分析。所有模型的网络主干均采用在ImageNet数据集上的预训练参数,并使用默认参数与设置,结果见表1。
表 1 主流计数模型性能对比Table 1. Comparison of different generic counting methods模型
Model平均绝对误差
MAE均方误差
MSE准确率
Accuracy/%CPU计算时间
CPU compute time/sGPU计算时间
GPU compute time/s布莱克-利特曼模型Black-Litterman (BL) model 120.094 191.939 91.067 24 1.2 人群密度估计网络 CSR-Net 113.822 180.023 91.020 28 1.3 多维注意力增强人群计数模型BCCMA model 128.863 200.330 92.418 30 1.4 本研究的SC模型 Shrimp counting model in this paper 96.304 154.567 93.325 22 1.2 验证集包含的高密度虾苗图像和低密度虾苗图像均为100张。从表1可以看出,在MAE、MSE、准确率3个评估指标上,本研究提出的SC模型的计数效果最好:MAE 比BL、CSR-Net、BBCMA这3个模型分别低23.79、17.518、32.559,MSE 分别低37.358、25.456、45.763,在准确率上分别高2.258%、2.305%、0.907%。由于虾苗的体积更小,在图像上占据的区域小,虾苗的堆叠增加了图像计数的难度,得益于所提出的SC模型在小面积目标上增加了注意力机制并且扩大了图像感受野,使其在总体性能上得到了提升。
在测试环境下分别进行了CPU和GPU的图片计数验证,结果完全一致,由于GPU的并行计算能力更强,单张图片的计算时间在1.5 s内,而CPU在30 s内,在实际应用中,可在养殖环境进行固定拍摄,通过网络传输到服务器GPU上进行快速的结果计算。
2.4 高密度数据下计数性能对比
为验证SC模型在高密度场景下的虾苗计数精度,单独提取验证集中的100 张高密度虾苗图像进行计数性能分析,实验结果见表2。可以看出,相比于CSR-Net,BL模型在高密度虾苗测试集上的计数精度较低。而本研究提出的SC模型在MAE、MSE和准确率等指标上均表现出最佳性能。这表明SC模型不仅提升了整体数据的识别能力,还有效降低了在高密度数据下的计数误差。
表 2 高密度数据下计数性能对比Table 2. Comparison of counting performance with different generic methods on high density data模型
Model平均绝对误差
MAE均方误差
MSE准确率
Accuracy/%布莱克-利特曼模型Black-Litterman (BL) model 221.289 270.547 88.147 人群密度估计网络 CSR-Net 205.189 252.938 88.938 多维注意力增强人群计数模型BCCMA model 252.591 283.246 86.460 本研究的SC模型 Shrimp counting model in this paper 181.352 218.123 90.278 对测试结果进行可视化处理,将预测密度图转换为热力图 (图8)。热力图通过颜色深浅可直观展示密度图中的概率分布:颜色越暖,表示该区域虾苗出现的概率和数量越高;暖色区域的大小则反映了虾苗的聚集程度。由图8可以看出,BCCMA模型在处理高密度图像时,难以准确捕捉虾苗聚集情况,误差较大;相较之下,BL模型在聚集程度上略有改善,并能有效清除背景干扰;而CSR-Net的性能进一步提升,能够更好地保留计数容器的一些特征。
图8的前2行展示了预测误差小 (误差百分比在10%以内) 的结果。可视化图像显示,SC模型不仅能准确反映虾苗的聚集程度,还能有效保留背景细节。后2行为预测误差较大 (误差百分比超过10%) 的结果,明显显示出SC模型存在过度识别的问题,即预测的计数结果往往大于实际值,而其他3个模型的预测结果均小于实际值。这进一步证明特征提取能力的提升可能会导致计数结果的增加,同时也存在过度计算的风险。
2.5 低密度数据下模型性能对比
为验证所提出的SC模型在低密度虾苗图像数据下的计数精度,在验证集单独分离出低密度分布的虾苗图像数据100张进行实验对比验证,结果见表3。在计算精度方面,低密度图像上所有方法的MAE和MSE均下降至约为高密度图像数据的10%,准确率也有大幅提升,其中BCCMA模型在低密度下的性能最优,所提出的SC模型的准确率为96.373%,较BL和CSR-Net模型分别高了2.386%和3.272%。
表 3 低密度数据下计数性能对比Table 3. Comparison of counting performance with different generic methods on low density data模型
Model平均绝对误差
MAE均方误差
MSE准确率
Accuracy/%布莱克-利特曼模型Black-Litterman (BL) model 18.899 22.037 93.987 人群密度估计卷积神经网络 CSR-Net 22.454 28.960 93.101 多维注意力增强人群计数模型BCCMA model 5.136 6.013 98.377 本研究的SC模型 Shrimp counting model in this paper 11.256 14.292 96.373 图9的第1、第2行为预测误差小的结果,第3、第4行为预测误差大的结果 (同2.4节)。在 CSR-Net可视化结果中,可以明显看出其目标与背景之间的分离不够清晰。在低密度的数据处理上,BCCMA模型的表现最佳。实验的可视化结果证实SC模型在表现虾苗聚集程度方面更具优势。
在第4列的结果中,SC模型和CSR-Net在背景上均进行了过曝,将背景的黑色线条或斑点检测为虾苗,并且数据表明SC模型存在漏检的情况。
2.6 注意力模块与损失函数消融分析
CBAM注意力模块是模型中用于调整图像局部注意力的关键组件,通过在模型中引入和移除该模块,可以验证所提出结构的有效性。此外,在网络训练中,损失函数用于反映模型输出与实际数据分布之间的差异,损失函数越能精确拟合现实数据分布,通过损失函数优化参数后的模型精度也就越高。在传统的密度图计数模型中,通常采用MAE 来计算预测密度图与标记密度图之间的差异,以此作为最终的误差指标,并据此调整和更新网络参数。为验证贝叶斯损失函数的有效性,与MSE损失函数进行了实验对比分析,结果见表4。
表 4 注意力模块与损失函数消融实验对比Table 4. Comparison of CBAM attention module and loss function ablation experiments模型
Model卷积注意力模块
CBAM损失函数
Loss平均绝对误差
MAE均方误差
MSE准确率
Accuracy/%SC模型 − 均方误差损失函数 195.000 242.589 88.581 SC模型 + 均方误差损失函数 117.958 206.373 91.490 SC模型 − 贝叶斯损失函数 115.240 168.125 90.685 SC模型 + 贝叶斯损失函数 96.304 154.567 93.325 注:“+”表示采用CBAM模块;“−”表示不采用CBAM模块。 Note: "+" represents that the CBAM module is used, while "–" represents that the CBAM module is not used. 结果表明,CBAM注意力模块能够显著提高虾苗计数的准确性。在不使用注意力模块的情况下,SC模型采用均方误差损失函数时,准确率降低了2.909%,MAE和MSE分别增加了77.042和36.216。而采用贝叶斯损失函数的SC模型,准确率降低了2.640%,MAE和MSE分别增加了18.936和13.561。这表明,在缺少对图像通道和空间特征的调整后,模型的整体计数精度有所下降,证实了注意力模块在捕获更具判别性虾苗特征方面的重要性,这对于指导计数结果的生成至关重要。
由表4可见,基于贝叶斯损失函数的模型在MAE、MSE和准确率方面的表现最佳。在引入注意力模块的情况下,与使用均方误差损失函数相比,误差分别降低了21.654和51.806,准确率提高了1.835%。表明贝叶斯损失函数通过计算图像中每个点的虾苗概率分布,能更准确地拟合虾苗在图像中的位置,并提升在聚集和重叠区域的计数精度。
2.7 主干网络和后端深度的消融分析
为验证SC模型中不同主干网络和后端深度对模型性能的影响,设计了包含2种主干网络和3种不同深度的后端结构的消融实验。其中,对主干网络VGG-16和VGG-19进行了相同的网络层修剪处理,移除了主干网络中最后一段的卷积层 (由于2个网络的结构存在差异,VGG-16去除了3层卷积层和随后的所有全连接层,而VGG-19则去除了4层卷积层和随后的所有全连接层)。所有模型均加载了预训练参数,结果见表5。
表 5 不同主干网络与后端深度的消融实验对比Table 5. Comparison of ablation experiments on backbone networks and backend depth主干网络
Backbone network后端深度
Backend depth平均绝对误差
MAE均方误差
MSE准确率
Accuracy/%VGG-16 5 163.865 199.741 74.826 VGG-16 6 127.403 162.328 89.183 VGG-16 7 130.973 165.662 83.471 VGG-19 5 124.630 188.150 90.942 VGG-19 6 96.304 154.567 93.325 VGG-19 7 119.900 178.442 88.581 结果显示,在保持后端深度和其他条件不变的情况下,前端使用VGG-19作为特征提取的主干网络相较于其他选择,能获得更低的计数误差和更高的精度。在后端深度设置为5和7时,与后端深度为6相比,计算精度有所下降,表明将后端深度设置为6可以更有效地生成预测密度图,并且和VGG-19结合使用,可达到最低的误差和最佳的准确率。由于VGG网络的卷积层数相对较少,通过增加网络深度,可以获得更多的初级特征,从而增强模型的计数性能。
由图10的误差曲线可以看出,高密度数据的误差波动相对低密度数据更为明显。当网络主干采用VGG-19且后端深度设定为6时,低密度数据的误差波动最为稳定,同时在高密度数据上展现出最小的波动。这些网络主干和后端深度的消融实验结果验证了最优的特征提取结构和预测密度图生成结构,使得在SC模型结构下实现了最佳的计数效果。
3. 讨论
合适的计数方法可以提升计数精度,而目标检测在渔业的苗种计数中具有显著的应用价值[28-30]。以虾苗 (或鱼苗) 为主体目标,针对虾苗个体小、与背景噪点相似度高、容易聚集导致单位面积密度大等难点,本研究致力于实现虾苗的自动计数。如图2所示,单尾虾苗个体在图像中仅占据极少的像素点 (在缩放的图像中可能只对应1个像素点)。 因此,本研究采用关键点表示图像上的单尾虾苗,通过定位这些关键点来标记虾苗的存在,并通过全图的计数来获取拍摄区域内虾苗的总数。
在视觉数据的基础上,无论是人群计数[19-20]还是动物计数[15-18],图像中的目标数量通常不超过500。由于在实际养殖过程中对虾苗的计量需求较大,现有数据集难以满足这一需求,因此需要构建高密度的虾苗图像数据集。本研究根据不同的养殖环节,定义了以500和1 500尾虾苗分别作为低密度和高密度的基准点 (单张图像中的目标数量会在这些基准点附近波动),并基于此构建了虾苗计数数据集,用于算法的设计与验证。
精确定位虾苗的存在点可以有效提升计数精度,因此需要经过图像预处理 (以保持输入数据的一致性) 、图像特征提取与计算、预测密度图的生成这3个步骤。在图像特征提取方面,本研究对VGG-19网络进行了修改,使用修改后的网络主干对输入图像进行处理。为了保持输出矩阵大小合适,避免因输出矩阵缩小而影响结果精度,去除了网络的最后4层。针对虾苗目标小且高聚集的情况,本研究引入了注意力模块,通过通道和空间的注意力机制,将通道调整为需要重点计算的特定矩阵,空间调整为矩阵中需要重点计算的特定像素点,从而能够更有效地关注目标,实验结果也证明了注意力机制能显著提高计数精度。
现有的计数方法在训练时通常需要提供输入图像中的目标标注点以生成真实的密度图,但由于虾苗之间存在高度拥挤和聚集的情况,通过这种方法生成的密度图仅是对真实图像的一个粗略近似,难以保证计数精度。MSE 将不同个体的标准差设置为一个固定值,进一步影响了生成概率密度图的准确性。因此,本研究采用贝叶斯损失函数对模型参数进行调整,利用标注点的离散概率密度进行该点虾苗存在期望值的回归估计,并且通过对生成的预测密度图进行简单求和得到计数估计值,结果更符合虾苗数据的实际分布。
综上所述,为了满足生产应用的需要,本研究构建了相应的虾苗计数数据集,针对虾苗个头小、分布不均匀的问题,采用关键点标注并结合相应的主干网络和模块,对图像中的虾苗特征进行提取。为了缓解虾苗聚集和重叠带来的精度损失,采用生成密度图的方法完成计数,并使用贝叶斯损失函数对模型参数进行调整。此外,针对背景黑线和黑点误识别为虾苗的问题,今后计划对拍摄背景进行处理,将流水线或拍摄台更换为白色背景,以降低计数误差,进一步提升计数准确率。
-
表 1 主流计数模型性能对比
Table 1 Comparison of different generic counting methods
模型
Model平均绝对误差
MAE均方误差
MSE准确率
Accuracy/%CPU计算时间
CPU compute time/sGPU计算时间
GPU compute time/s布莱克-利特曼模型Black-Litterman (BL) model 120.094 191.939 91.067 24 1.2 人群密度估计网络 CSR-Net 113.822 180.023 91.020 28 1.3 多维注意力增强人群计数模型BCCMA model 128.863 200.330 92.418 30 1.4 本研究的SC模型 Shrimp counting model in this paper 96.304 154.567 93.325 22 1.2 表 2 高密度数据下计数性能对比
Table 2 Comparison of counting performance with different generic methods on high density data
模型
Model平均绝对误差
MAE均方误差
MSE准确率
Accuracy/%布莱克-利特曼模型Black-Litterman (BL) model 221.289 270.547 88.147 人群密度估计网络 CSR-Net 205.189 252.938 88.938 多维注意力增强人群计数模型BCCMA model 252.591 283.246 86.460 本研究的SC模型 Shrimp counting model in this paper 181.352 218.123 90.278 表 3 低密度数据下计数性能对比
Table 3 Comparison of counting performance with different generic methods on low density data
模型
Model平均绝对误差
MAE均方误差
MSE准确率
Accuracy/%布莱克-利特曼模型Black-Litterman (BL) model 18.899 22.037 93.987 人群密度估计卷积神经网络 CSR-Net 22.454 28.960 93.101 多维注意力增强人群计数模型BCCMA model 5.136 6.013 98.377 本研究的SC模型 Shrimp counting model in this paper 11.256 14.292 96.373 表 4 注意力模块与损失函数消融实验对比
Table 4 Comparison of CBAM attention module and loss function ablation experiments
模型
Model卷积注意力模块
CBAM损失函数
Loss平均绝对误差
MAE均方误差
MSE准确率
Accuracy/%SC模型 − 均方误差损失函数 195.000 242.589 88.581 SC模型 + 均方误差损失函数 117.958 206.373 91.490 SC模型 − 贝叶斯损失函数 115.240 168.125 90.685 SC模型 + 贝叶斯损失函数 96.304 154.567 93.325 注:“+”表示采用CBAM模块;“−”表示不采用CBAM模块。 Note: "+" represents that the CBAM module is used, while "–" represents that the CBAM module is not used. 表 5 不同主干网络与后端深度的消融实验对比
Table 5 Comparison of ablation experiments on backbone networks and backend depth
主干网络
Backbone network后端深度
Backend depth平均绝对误差
MAE均方误差
MSE准确率
Accuracy/%VGG-16 5 163.865 199.741 74.826 VGG-16 6 127.403 162.328 89.183 VGG-16 7 130.973 165.662 83.471 VGG-19 5 124.630 188.150 90.942 VGG-19 6 96.304 154.567 93.325 VGG-19 7 119.900 178.442 88.581 -
[1] LIU S, ZENG X D, WHITTY M. A vision-based robust grape berry counting algorithm for fast calibration-free bunch weight estimation in the field[J]. Comput Electron Agr, 2020, 173: 105360. doi: 10.1016/j.compag.2020.105360
[2] VASCONEZ J P, DELPIANO J, VOUGIOUKAS S, et al. Comparison of convolutional neural networks in fruit detection and counting: a comprehensive evaluation[J]. Comput Electron Agr, 2020, 173: 105348. doi: 10.1016/j.compag.2020.105348
[3] XU C, JIANG H Y, YUEN P, et al. MHW-PD: a robust rice panicles counting algorithm based on deep learning and multiscale hybrid window[J]. Comput Electron Agr, 2024, 173: 105375. doi: 10.1016/j.compag.2020.105375
[4] XU B B, WANG W S, FALZON G, et al. Automated cattle counting using Mask R-CNN in quadcopter vision system[J]. Comput Electron Agr, 2020, 171: 105300. doi: 10.1016/j.compag.2020.105300
[5] LI D L, MAO Z, PENG F, et al. Automatic counting methods in aquaculture: a review[J]. J World Aquacult Soc, 2020, 52(2): 269-283.
[6] ZHANG L, LI W S, LIU C H, et al. Automatic fish counting method using image density grading and local regression[J]. Comput Electron Agr, 2020, 179: 105844. doi: 10.1016/j.compag.2020.105844
[7] KESVARAKUL R, CHIANRABUTRA C, CHIANRABUTRA S. Baby shrimp counting via automated image processing[C]//Proceedings of the 9th International Conference on Machine Learning and Computing. ICMLC 2017. Singapore: Association for Computing Machinery. 2017: 352-256.
[8] SOLAHUDIN M, SLAMET W, DWI A S. Vaname (Litopenaeus vannamei) shrimp fry counting based on image processing method[C]//The 2nd International Conference on Agricultural Engineering for Sustainable Agricultural Production. AESAP 2017. Bogor, Indonesia: IOP Conference Series Earth and Environmental Science, 2018, 147(1): 012014.
[9] KAEWCHOTE J, JANYONG S, LIMPRASERT W. Image recognition method using Local Binary Pattern and the Random Forest classifier to count post larvae shrimp[J]. Agric Nat Resour, 2018: 371-376.
[10] AWALLUDIN E A, MUHAMMAD W N A W, ARSAD T N T, et al. Fish larvae counting system using image processing techniques[J]. J Physics: Conference Series, 2020, 1529(5): 052040. doi: 10.1088/1742-6596/1529/5/052040
[11] 王书献, 张胜茂, 戴阳, 等. 利用声呐数据提取磷虾捕捞深度方法研究[J]. 南方水产科学, 2021, 17(4): 91-97. doi: 10.12131/20210020 [12] 范秀梅, 杨胜龙, 张胜茂, 等. 基于栖息地指数的阿拉伯海鲐鱼渔情预报模型构建[J]. 南方水产科学, 2020, 16(4): 8-17. doi: 10.12131/20190255 [13] 郑巧玲, 樊伟, 张胜茂, 等. 基于神经网络和VMS 的渔船捕捞类型辨别[J]. 南方水产科学, 2016, 12(2): 81-87. doi: 10.3969/j.issn.2095-0780.2016.02.012 [14] 张佳泽, 张胜茂, 王书献, 等. 基于3-2D融和模型的毛虾捕捞渔船行为识别[J]. 南方水产科学, 2022, 18(4): 126-135. doi: 10.12131/20210263 [15] NGUYEN K T, NGUYEN C N, WANG C Y, et al. Two-phase instance segmentation for whiteleg shrimp larvae counting[C]//2020 IEEE International Conference on Consumer Electronics. ICCE 2020. Berlin, Germany: IEEE, 2020: 1-3.
[16] HONG K T, ABDULLAH S N H S, HASN M K, et al. Underwater fish detection and counting using mask regional convolutional neural network[J]. Water, 2022, 14(2): 222. doi: 10.3390/w14020222
[17] ARMALIVIA S, ZAINUDDIN Z, ACHMAD A, et al. Automatic counting shrimp larvae based you only look once (YOLO)[C]. 2021 International Conference on Artificial Intelligence and Mechatronics Systems (AIMS), 2021: 1-4.
[18] LI X M, ZHAO Z Y, WU J Y, et al. Y-BGD: Broiler counting based on multi-object tracking[J]. Comput Electron Agr, 2022, 202: 107347. doi: 10.1016/j.compag.2022.107347
[19] SINDAGI V A, PATEL V M. Generating high-quality crowd density maps using contextual pyramid CNNs[C]//IEEE International Conference on Computer Vision, Venice, Italy: IEEE Xplore, 2017: 1879-1888
[20] LAINEZ S M D, GONZALES D B. Automated fingerlings counting using convolutional neural network[C]//2019 IEEE 4th International Conference on Computer and Communication Systems. ICCCS 2019. Singapore: IEEE, 2019: 67-72.
[21] 范松伟, 林翔瑜, 周平. 基于改进的卷积神经网络的虾苗自动计数研究[J]. 渔业现代化, 2020, 47(6): 35-41. doi: 10.3969/j.issn.1007-9580.2020.06.006 [22] LEMPITSKY V, ZISSERMAN A. Learning to count objects in images[C]//Advances in Neural Information Processing Systems 23: 24th Annual Conference on Neural Information Processing Systems 2010. Proceedings of a meeting held 6–9 December 2010. Vancouver, British Columbia, Canada: Curran Associates Inc, 2010: 23.
[23] SIMONYAN K, ZISSERMAN A. Very deep convolutional networks for large-scale image recognition[J]. Computer Sci, 2014, 1409: 1556. doi: 10.48550/arXiv.1409.1556
[24] MA Z H, WEI X, HONG X P, et al. Bayesian loss for crowd count estimation with point supervision[J]. CoRR, 2019, abs/1908.03684.
[25] LI F F, JIA D, LI K. ImageNet: constructing a large-scale image database[J]. J Vision, 2010, 9(8): 1037. doi: 10.1167/9.8.1037
[26] LI Y H, ZHANG X F, CHEN D M. CSRNet: dilated convolutional neural networks for understanding the highly congested scenes[J]. IEEE, 2018: 1091-1100.
[27] LIN H, MA Z H, JI R R, et al. Boosting crowd counting via multifaceted attention[J]. IEEE, 2022: 19628-19637.
[28] ZHANG L, ZHOU X H, LI B B, et al. Automatic shrimp counting method using local images and lightweight YOLOv4[J]. Biosyst Engin, 2022, 220: 39-54. doi: 10.1016/j.biosystemseng.2022.05.011
[29] SUN Y, ZHANG S M, SHI Y C, et al. YOLOv7-DCN-SORT: an algorithm for detecting and counting targets on Acetes fishing vessel operation[J]. Fish Res, 2024, 274: 106983. doi: 10.1016/j.fishres.2024.106983
[30] ZHANG Z Z, LI J W, SU C W, et al. A method for counting fish based on improved YOLOv8[J]. Aquac Engin, 2024, 107: 102450. doi: 10.1016/j.aquaeng.2024.102450