使用改进的YOLO-V4网络实时检测水产养殖水下图像中未吃完的饲料颗粒

原文链接:

《Real-time detection of uneaten feed pellets in underwater images for aquaculture using an improved YOLO-V4 network》

https://www.sciencedirect.com/science/article/pii/S0168169921001538?ref=pdf_download&fr=RR-2&rr=76f3440b7c8dfa12

研究背景:

水产养殖业生产了世界上三分之二的水产品。是人类重要的高质量蛋白质来源。但鱼类的安全与健康受很多方面因素的影响,其中最重要的一个因素就是不合理喂养——尤其是过度投食。培养系统中超过60%的饲料以微小颗粒的形式存在。这些微小颗粒1、会消耗氧气产生氨气和其他有毒物质,严重影响鱼类的安全健康,甚至造成鱼类死亡。另外,饲料的浪费也会2、增加饲料成本占总成本的比例。因此,实时监测未吃的饲料可以有效减少过度喂养的发生。成本降低了,而水质也可以得到明显的改善。这对指导生产具有重要的科学意义。

现存问题:

小目标、复杂背景、鱼类的干扰,都给水下饲料颗粒的识别带来了巨大挑战。在之前的研究中通常使用声波技术来对食物颗粒进行探测。例如用超声波回声法量化未吃完的饲料颗粒的数量。最原始:Juell (1991)利用“回声积分法”来估算下落饲料颗粒的丰富度。然而自动化的声学应用需要对颗粒及其状态进行声学表征。到了晚上,声呐系统的作用会受限于单色(黑白)以及低质量的图像。而声波技术的实现通常昂贵且易受噪音干扰,限制了它在实际生产中的应用。

机器视觉方法出现:1、受限于软硬件条件——在水箱中放置水下摄像机进行拍摄。2、随着图像处理技术的发展——提出了适应性强的阈值分割方法。以上方法依然面临挑战:图片模糊不清、小目标问题、颗粒密度高、运动模糊;需要手动选择检测目标的特征。所以,在真实场景中监测未吃饲料颗粒的精确度仍然需要提高。

相关工作:

用到的方法——

1.AHE通过调整亮度分布来改善图像的对比度,这使得图像中的噪声容易被放大。

2.限制对比度自适应直方图均衡化(CLAHE): 在AHE的基础上,CLAHE适当地限制了对比度的放大,以限制由噪声放大引起的干扰。

3.Mosaic is an extension of Cutmix。增加了批次的大小,从而减少了批次,以降低对硬件的要求。

4.迁移学习:迁移学习是指重复使用以前训练过的神经网络的一部分,并将其适应新的但类似的任务。具体而言,一旦使用任务数据训练神经网络,可以传输一小部分训练的图层,并将其与几个新图层相结合,使用新任务的数据进行训练。RPN (Region Proposal Network) 用于生成候选区域(Region Proposal)。

5.non-maximum suppression(NMS):非极大值抑制,是一种去除非极大值的算法,常用于计算机视觉中的边缘检测、物体识别等。算法流程:给出一张图片和上面许多物体检测的候选框(即每个框可能都代表某种物体),但是这些框很可能有互相重叠的部分,我们要做的就是只保留最优的框。

6.Mosaic 数据增强:这种数据增强方式简单来说就是把4张图片,通过随机缩放、随机裁减、随机排布的方式进行拼接。Mosaic有如下优点:(1)丰富数据集:随机使用4张图片,随机缩放,再随机分布进行拼接,大大丰富了检测数据集,特别是随机缩放增加了很多小目标,让网络的鲁棒性更好;(2)减少GPU显存:直接计算4张图片的数据,使得Mini-batch大小并不需要很大就可以达到比较好的效果。

7.主干网络:即基础网络结构。例如VGG,Google,Res;以VGG为例,它的体系结构包括——输入、预处理、卷积层、池化层、全连接层。对卷积层也会有进一步的设置。

8.多尺度训练:对全卷积网络有效,在训练时,每隔一定的 iterations(交际),在一定尺寸范围内,随机选取一种 img_size 进行训练。通过对不同尺度的图像进行训练,在一定程度上提高检测模型对物体大小的鲁棒性。使用尺度小的图片测试速度快些,但准确度低,用尺度大的图片测试速度慢,但准确度高

9.特征金字塔池化:在对图片进行卷积操作的时候,输入图片的大小是会发生变化的,图片大小的变化会对全连接层的链接产生影响。在网络的全连接层前面加一层金字塔pooling层解决输入图片大小不一的问题。使得大小不同的输入图片都能直接运用到已经训练好的网络中。

10.Mish激活函数:光滑的非单调激活函数,被定义为f(x)=x·tanh(ζ(x))其中,ζ(x)=ln(1+ex) ,是一个softmax激活函数和。

Mish的性能如下:

  • 无上界,有下界:无上界是任何激活函数都需要的特性,因为它避免了导致训练速度急剧下降的梯度饱和。因此,加快训练过程。无下界属性属性有助于实现强正则化效果(适当的拟合模型)。(Mish的这个性质类似于ReLU和Swish的性质,其范围是 [≈0.31,∞)[≈0.31,∞) )。
  • 非单调函数:这种性质有助于保持小的负值,从而稳定网络梯度流。大多数常用的激活函数,如ReLU,Leaky ReLU,由于其差分为0,不能保持负值,因此大多数神经元没有得到更新。
  • 无穷连续性和光滑性:Mish是光滑函数,具有较好的泛化能力和结果的有效优化能力,可以提高结果的质量。
  • 计算量较大,但是效果好:与ReLU相比,它的计算量比较大,但在深度神经网络中显示了比ReLU更好的结果。
  • 自门控:此属性受到Swish函数的启发,其中标量输入被共给gate。它优于像ReLU这样的点式激活函数,后者只接受单个标量输入,而不需要更改网络参数。

12.并交比(intersection over union)函数IOU:用来评价目标检测算法,计算两个边界框交集和并集之比,一般来说,IoU大于等于0.5结果是可以接受的,就说检测正确。如果预测器和实际边界框完美重叠,loU就是1,此时交集等于并集。loU越高,边界框越精确。IOU损失函数——IOU损失表示预测框A和真实框B之间交并比的差值,反映预测检测框的检测效果。

GIOU:是为了缓解IOU损失在检测框不重叠时出现的梯度问题而提出来的,在原来的IOU损失的基础上加上一个惩罚项。

DIOU:在IOU损失的基础上加一个惩罚项,用来最小化两个检测框中心点之间的标准化距离。

IoU、GIoU、DIOU、CIOU损失函数 - 小丑_jk - 博客园 (cnblogs.com)

13.YOLO-v4的损失函数由边界盒回归损失(coord)、置信度损失(conf)、分类损失(cls)组成。

14.PANet(路径聚合网络):PANet引入了自底向上的路径,使得底层信息更容易传递到高层顶部。PANet采用的是:在进行自顶向下的特征融合后然后再进行自下向上的特征融合,这样特征传递需要“穿越”的特征图数量大大减少,几层就到了。PANet改进了FPN,考虑到网络的浅层特征信息的重要性,它引入了自下而上的路径增强结构,使网络可以保留更多的浅层特征。

15.YOLO-v4对PAN(PANet)还有一点小改进,使用张量连接代替了原来的捷径连接。YOLO-v4中在特征融合时不是加法,而是特征堆叠。

作者提出的改进:

  •  改进特征图提取网络——
  • 为解决小目标数量过多的问题,对PANet路径聚合网络连接进行了修改,以获得具有更细粒度信息的特征图,并对修剪负责检测大目标的特征图。
  • 改变PANet网络结构,以改善YOLO-V4的特征图。
  • 融合更多的浅层特征图信息,以保留更多的浅层特征。
  • 生成有利于小目标探测的特征图,获得更丰富的细粒度信息。
  • 放弃负责大目标检测的特征图。

主干层的卷积层输出被额外上采样,其输出与CSPDarknet53中相应的C2层融合,生成F2特征图。在保证检测任务的前提下,减少了网络末端的两次下采样操作,删除了F4和F5特征图,使模型计算成本最小化。

  • 为提高训练速度,将剩余网络改为密集连接型网络。使得网络的特征转移和重用得到增强,也解决了数据集训练过程中梯度消失的问题。

YOLO-V4中CSPDarknet53的剩余模块连接模式被修改为密集型。Res单元中,引入了DenseNet的密集连接机制,并增加了两个快捷连接。将新的连接块命名为Dense单元,其解决了小目标检测中梯度消失的问题,强化了特征转移和重复使用。

梯度消失和梯度爆炸产生的原因:在反向传播过程中需要对激活函数进行求导,如果导数大于1,那么随着网络层数的增加梯度更新将会朝着指数爆炸的方式增加这就是梯度爆炸;如果导数小于1,随着网络层数的增加梯度更新信息会朝着指数衰减的方式减少——这就是梯度消失。梯度消失、爆炸,其根本原因在于反向传播训练法则,属于先天不足。

  • 为提高计算速度,减少YOLO-V4的网络层数,将CSPDarknet53中的卷积块改为密集连接块,以减少冗余特征的出现。

去冗余化的改进:YOLO-V4网络层数多,适合于训练复杂困难的数据集。而水下未吃的饲料颗粒数据集只有一个检测类,重点在于小目标检测和特征重用问题。因此,YOLO-V4对于本任务过于冗余。针对这一问题对修改算法,对主干网进行去冗余操作,减少网络层的数量,将CSPDarknet53中的convolution blocks修改为dense connection blocks,从而减少冗余特征的数量,提高计算速度。

结论:

为了克服低质量水下图像和极小目标在饲料颗粒检测中的挑战,本文提出了一个改进的YOLO-V4网络来检测水下图像中未吃的饲料颗粒。YOLO-V4网络是通过使用密集连接和去冗余操作对特征图进行修改而改进的。本次实验结果表明,所提出的改进的YOLO-V4网络优于原YOLO-V4网络。AP50从65.40%增加到92.61%,总共增加了27.21%。改进后的网络还减少了约30%的计算量。这表明,使用改进的特征图提取网络和密集连接能有效提高检测精度,而使用去冗余方法能有效提高检测速度。

你可能感兴趣的:(论文精读,网络,人工智能,剪枝,python)