当前位置:首页 期刊杂志

一种基于冗余裁剪的鱼群密度估计算法*

时间:2024-05-04

李 婧 吴俊峰 于 红 周弈志

(1.大连海洋大学信息工程学院 大连 116023)(2.设施渔业教育部重点实验室 大连 116023)

1 引言

我国海洋资源虽然丰富,但相比于我国陆地开发利用程度,其开发利用的程度很低。以鱼类为主体,地球上生物资源的80%分布在海洋里。然而目前对鱼群领域技术还很匮乏,由于没有对鱼群密度、数量有一定的数据支撑,很难通过准确获取鱼群的分布、数量,去研究鱼类的种群分布、群体组成等领域。通过获取自然水域中的鱼群数量或密度,可以有效地帮助渔业管理部门了解水域中海洋生物的真实情况,也可以帮助主管部门合理的制定渔业政策,也可以帮助渔民有计划性的进行捕捞,以保护生态并促进鱼类的繁衍生长。对鱼类养殖企业来说,及时地获取固定养殖水域中鱼群的数量可以帮助企业实现饵料的精准投喂,有效地帮助企业节省饵料成本并保持水质的洁净。因此,鱼群密度估计有着重要的实用价值,正逐渐引起产业界和众多专家学者们的关注。

2 相关工作

传统的计数方法主要是通过一些容器进行取样,然后通过肉眼进行计数,不仅效率低,受到人工的限制,甚至在取样时会造成鱼类的损伤。李伯珩等[1]试验和分析了单通道光电式鱼苗计数器。易金根等[2]提出了多通道鱼苗计数器,采用光/电/微机一体化设计原理及方法,并给出主要电路程序框图。其中测鱼管径是影响计数误差的关键因素,而且出口速度和压头则对鱼的通过量影响较大,同时它们仅适用于数量较少的鱼群,如果是海洋中数量较大自然鱼群,将会显得捉襟见肘。

随着计算机视觉和图像处理方面的发展,可应用在此基础上的鱼群计数方法得到了广泛应用。王文静等[3]为了在鱼苗的饲养、运输和销售过程中对一定数量或批量的幼苗进行精确计数,提出了一种基于计算机视觉的鱼苗自动计数系统。朱从容[4]对采集到的鱼苗灰度图像进行分析,通过数据拟合方法建立图像中鱼苗所占像素点数与鱼苗数的关系,并由此对鱼苗进行计数。王硕等[5]采用计算机视觉的方法,提出了一种基于曲线演化的图像处理方法来解决鱼苗图像粘连问题,并完成对鱼苗的准确计数。范嵩等[6]利用计算机视觉技术,对于在自然光下拍摄的鱼苗图像进行智能识别计数研究。以上方法虽然相比于传统的鱼群计数方法其精度有所提高,但由于真正水域下拍摄到的图片会存在颜色失真,杂质过多而导致图片出现雾化现象等客观因素,并不能很好地应用于实际当中,同时,它们仅适用于鱼群数量较少的图像,并不能很好地处理海洋鱼群数量比较多的图像。

2012年,AlexNet[7]在ImageNet竞赛中获得冠军,其结果远远超出了当时的工艺水平,给当时的学术界和工业界带来了巨大冲击,由此基于卷积神经网络的深度学习方法逐渐受到人们的重视,现如今已经广泛应用到目标识别、检测、跟踪等领域[8~10]。Yingying Zhang等[11]提出了一种简单但有效的多列卷积神经网络(MCNN)架构,能够准确地估计人群的数量及其分布。Yuhong Li等[12]提出的CSRNet网络模型主要分为前端和后端网络,能够在保持分辨率的同时扩大接受域,生成质量较高的人群分布密度图。Xinkun Cao等[13]使用一系列的Inception结构[14]提取不同尺度的特征,再使用反卷积生成高分辨率的密度图。但以上方法因为其人头的重叠和尺度的变化,成为其生成密度图的难点。

为了能够解决鱼群计数方法的局限性,本文基于冗余裁剪和多列卷积网络的鱼群密度估计,提出了一种称为FishCount的鱼群计数方法,对高密度的鱼群进行计数,结果表明,本文算法可以应用在海洋鱼群这类相对数量较大的群体,能够有效地对鱼群进行精确地计数和密度估计,并解决鱼群的尺度透视严重的问题。

本文所做的主要工作有:

1)为了扩充数据集和最大程度的保留鱼群图片的细节特征,并提高算法的准确性,在算法执行过程中,本文将待训练的图片冗余裁剪为原始尺寸的1/4,并尽可能地保留鱼群图片的细节信息;

2)在最后一次聚合卷积神经网络产生的层上设计了一种密集连接的方法,并对所有裁剪后的图片进行特征提取,以保证后续层能够学习到前面所有层的核心信息。

3 FishCount模块

如图1所示,本文所提出的FishCount模型由三部分组成:1)OSA(One-Shot Aggregation)模块;2)多列的卷积神经网络;3)SENet(Squeeze-and-Excitation)模块。更具体地,首先将收集的DLOU2数据集图片进行冗余裁剪,这是为了扩充该数据集和尽可能多地保留图片的特征细节,这些数据集的图片均是大小不一的鱼群图片,接下来将每张裁剪后的图片喂入FishCount模型中;通过OSA模块,图片的一些基础特征因为它的密集连接的原因,能够学习到卷积神经网络产生的所有层的核心信息;生成的特征图经过这个多列的卷积神经网络[11],可以分别处理大、中、小多尺度的鱼图像,得到了多尺度的上下文信息的特征图;但由于每张图片中尺度不同的鱼类占比不同,为了能够学习通道之间的相互性以及通道的注意力,将多列卷积网络生成的特征图喂入SENet模块中;最后使用1×1的卷积核进行卷积,最后得到了原图1/4的密度图。

图1 FishCount框架

3.1 冗余裁剪

考虑到DLOU2数据集过于密集,如果直接学习整张图片,学习速度慢导致训练精度无法保证,所以对它们进行了裁剪。特别地,本文采用了一种特殊的裁剪方法(冗余裁剪)对数据集进行处理,裁剪后的图片是原图的1/4,具体做法是:从原图左上角开始,为了叙述清楚,这里假设原图大小为400×400,裁剪后的大小为200×200。左上角在坐标点O(0,0)的位置,如图2所示。分别将坐标点的x,y轴上加上裁剪后的图片的尺寸200,图2(a)中小框就是裁剪后的图片,接着将点O在x轴上以固定的步长s向后平移,(图2中的步长为100,该数据集中设的步长为512)重复刚才的做法,得到了图2(b)中小框内的图片,当裁剪到图2(c)的位置后,我们将图2(d)的小框作为下一张裁剪的图片,即O的x轴重新置为0,y值以固定的步长s向下平移,然后重复刚才在x轴裁剪的规律。最后,得到了2790张裁剪后的图片。

图2 冗余裁剪示意图

3.2 OSA模块

OSA(One-Shot Aggregation)模块,该模块是由Youngwan Lee等[15]提出来的,有研究表明,如果卷积网络在接近输入层和接近输出层的层之间包含更短的连接,那么在训练时卷积网络可以更深入、更准确、更高效。为此,DenseNet[16]提出了其核心模块Dense Block,如图3(a)所示,这种密集连接会聚合前面所有的层,由此引发其密集连接过重,同时由于每个层都会聚合前面层的特征而造成了特征的冗余,据此提出了OSA模块,如图3(b)所示,简单来说,就是只在最后一次性聚合前面所有的层,这一改动将会解决DenseNet前面所述的问题,由此可将OSA模块来用作很好的特征提取器。本文对OSA模块进行了一系列的参数优化,我们用3个3×3的卷积核构成OSA模块的主干,然后将它们生成特征图进行聚合,最后采用一个2×2的最大池化层进行下采样。

此外,食药监局还给出温馨提示:每个国家的保健食品都是依据其本国人的体质、营养状况生产的。中国人拥有自己的体质特点,一味迷信海外保健品并不可取,建议谨慎选购,最好是遵医嘱。

图3 (a)DenseNet模块(密集地连接)

图3 (b)OSA模块(一次连接)

3.3 SENet模块

多列卷积神经网络模块只是简单地将三列全卷积网络进行了融合,并没有考虑到图片中存在不同尺寸的鱼群占比不同,将每个通道中的图片特征同等处理,而忽略每一个通道内的局部信息。SENet[17](Squeeze-and-Excitation Networks)思 想 简单,易于实现,并且很容易可以加载到现有的网络模型框架中,网络架构如图4所示。SENet可以显式地建模通道之间的相互依赖关系,自适应地重新校准通道的特征响应,自适应学习了通道之间的相关性,筛选出了各个通道的注意力,整个网络增加的计算量非常有限,但是效果比较理想。

图4 SENet模块

3.4 自适应的密度图生成

由于需要训练卷积网络将输入图像生成对应的密度图,其中密度图的质量很大程度上影响着本文网络架构的性能。一般地,将标记鱼头的图像转换成密度图:

其中δ(x-xi)表示在像素xi处的一个鱼头。

而后使用高斯核Gσ对式(1)进行卷积,卷积函数为

此时已转换为连续密度函数。然而,该密度函数的前提是这些是图像平面中的独立样本,实际上,这些样本是3D场景下拍摄的,并且由于透视失真的原因,不同的样本对应于场景中不同大小的区域。因此,在这里使用了一种叫自适应的密度图估计算法:

其中对于给定图像中的每个鱼头xi,将其与k个最近相邻鱼头的距离表示为,平均成比例的半径区域与鱼头xi相关联的像素大致对应,因此,要估算像素周围的鱼群密度,需要将δ(x-xi)与高斯内核Gσi(x)卷积,方差σi与dˉi成比例。实验中β=0.3效果最优。距离为=,与

3.5 损失函数

用欧几里德距离测量估计密度图和真实值之间的差异。损失函数定义如下:

4 实验

为了验证FishCount算法的有效性,我们将其和其他算法进行了对比。本文采用了DLOU2数据集进行了大量的仿真实验以评估算法的有效性,并从MAE和MSE两个方面对算法的性能作出结果分析。为了说明本文提出算法的有效性,本文又进一步分析了冗余裁剪、SENet模块对算法的影响。本文所有的训练和测试部分均是基于NVIDIA K20 GPU下的Keras框架完成的。

4.1 评估标准

为评估算的性能,本文引进了平均绝对误差(Mean Absolute Error,MAE)和均方误差(Mean Square Error,MSE)。用MAE评估算法的准确性,MSE评估算法的稳健性。其定义如下:

其中N是测试图像的数量,zi是第i个图像中的真实鱼数,ẑi是第i个图像中的估计鱼数。

4.2 DLOU2数据集

由于现有的数据集中的鱼群密度较低,我们引入了一个名为DLOU2的新的鱼群数据集,共计300张图片,其中标记的鱼头数量多达70000条。如图5所示是DLOU2数据集的鱼头数量统计图。

图5 DLOU2数据集的图像数量分布(其中大部分图片的鱼群数量集中在500~1000条)

4.3 训练

训练中使用Adam算法对网络进行优化,学习率设置为10-4,动量设置为0.9。在DLOU2数据集上进行训练时,每个训练周期包含2000次迭代,共200个训练周期,每5个周期使用验证集对网络模型进行验证。

4.4 单模块之间的对比实验

为了验证本文网络框架的有效性,本章节通过控制变量的方式对内部模型之间设计了一系列的控制实验。为了更直观地观察各个模块对模型性能的贡献,这些实验全部使用DLOU2数据集,对比实验的设置和结果分析如下。

4.4.1 冗余裁剪

为了验证冗余裁剪的有效性,进行了两次不同的裁剪,一种是和MCNN同样裁剪方法的模型,即对每张图片随机裁剪9张,每张图片的大小是原图的1/4,另一种就是本文中介绍的冗余裁剪的方法,这两种裁剪方式都是在多列卷积神经网络架构的基础上进行验证的。如表1所示,当使用的是冗余裁剪时,模型对DLOU2数据集的性能提高较大。这表明,冗余裁剪在扩充数据集的同时,也冗余地保留了图片的一些特征细节,由于进行卷积神经网络时,这些细节特征会因为进行了多层卷积后丢失,又因为DLOU2数据集是高密度的鱼群,会存在大量的特征细节,而这些特征细节决定了最终性能的高低,因此,在计数精度和鲁棒性方面,使用冗余裁剪的效果优于随机裁剪,证明了冗余裁剪在对数据进行预处理时的有效性。

表1 冗余裁剪对性能的影响

4.4.2 SENet模块的性能

为了验证SENet模块的有效性,本文在数据预处理是冗余裁剪的多列卷积神经网络架构的基础上添加了SENet模块。如表2所示,由于DLOU2数据集中鱼群图片的拍摄角度问题,造成了一定的透视影响,同时因为鱼群与摄像头距离的不同,会有鱼的个头大小相差太过明显的差异,这些大小差异明显的鱼群数量并不是均等的,加入SENet模块后,通过自适应地重新校准通道的特征响应,筛选出了针对通道的注意力,可以更好地把图片中不同尺度的鱼群对象按照一定的比例进行学习,虽然整个网络稍微增加了一点计算量,但是效果比较好。

表2 SENet模块对性能的影响

4.5 不同模型之间的性能对比

将本文的方法与新发布的方法进行了比较,如表4所示。本文提出的方法在DLOU2数据集上表现优于其他竞争方法。MCNN的多列卷积神经网络框架虽然可以将学习到不同尺度的鱼群信息,但并没有考虑学习不同尺度的通道占比。本文使用了一种冗余裁剪的方法以此来扩充数据集和得到更多的特征细节,同时使用了OSA模块,通过一次密集连接,尽可能地保留由于卷积后丢失的部分特征,得到质量较高的特征图,并使用SENet模块对多列卷积神经网络的通道按照一定比例学习。在训练集上,MAE和MSE分别提高了51.49和50.83。

表4 不同方法在DLOU2数据集上的性能影响

5 结语

本文提出了一种基于冗余裁剪的鱼群密度估计算法。为了验证算法的有效性,在DLOU2鱼群数据集上进行了不同类型的仿真实验,实验结果表明本文提出的算法是有效的,但本文仍然存在一些不足的地方:在前期进行标注时,由于是人工进行标注,而且多数图片的鱼头数量达到上千条,存在误标现象;虽然本文在精度方面优于目前的最新模型,但却消耗了较大的显存资源,一定程度上增加了较多的样本训练的时间。因此,在未来的工作中将集中在数据集质量的提高以及算法的优化处理上。

免责声明

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