APP下载

基于深度学习的船舶识别算法研究

2024-09-14王静举

电脑知识与技术 2024年23期

摘要:目标检测是深度学习最重要的任务之一,在各种应用场景都发挥着重要作用,比如:人脸检测、车辆自动驾驶检测、遥感检测等。本文以 YOLOv8 模型为基线,探讨深度学习算法在船舶识别领域的应用,以完成对图像中船舶目标的精准检测与识别任务,实现端到端的训练目标。基于 PyQt5 设计了用户操作界面,用于系统的展示和测试。实验测试结果表明,改进后的方法在计算量略微下降的同时提升平均精度到84%。

关键词:深度学习;目标检测;船舶识别;YOLOv8

中图分类号:TP311 文献标识码:A

文章编号:1009-3044(2024)23-0037-05

开放科学(资源服务)标识码(OSID)

0 引言

0.1 研究背景及意义

随着中国海洋强国建设的推进,船舶数量和种类不断增加,相关工作部门对船舶监控需求日益增长。本文旨在研究船舶识别算法,通过分析船舶形状实现对船舶种类的准确识别,以提升船舶监控的能力[1]。首先,船舶识别技术能够帮助监测船舶在海上的位置和移动情况,提高海上交通的安全性。通过实时监控船只的位置和航行情况,可以及时事故的发生,有效保护船员和船只的安全。其次,船舶识别系统可以帮助管理者更好地了解船只的分布和航行情况,提高海上交通的管理效率,优化通航路径,从而提升海上交通的运行效率和服务水平。此外,船舶识别技术也有助于发现和防止非法捕捞、海上污染等其他破坏海洋环境的活动。因此本文研究具有重要的研究意义。

0.2 基于深度学习的船舶识别算法应用挑战

通过对船舶识别领域的研究现状可以看出,船舶识别在深度学习的领域发展迅速,对不同情况下的船舶识别有不错的效果,但仍然存在以下一些问题和难点:

(1) 因为目标之间大小差异过大且模型对目标信息级别的区别能力不够,小目标检测精度不够;

(2) 由于模型的参数量大且计算量大,存在模型训练效率不足的问题;

(3) 由于数据集背景目标远多于前景目标,导致困难样本多,模型泛化能力不足。

本文针对以上三个难点进行研究,对网络的改进包括构建更加高效精准的网络模型、设计轻量化模块、更换更加高效的损失函数。为此,本文引入了 GD(Gatherand-Distribute) 机制以提高网络检测头对不同大小目标的检测精度,还采用了基于 Fasternet更加快速高效的模块。

本文采用基于深度学习的船舶识别算法,旨在提高海洋监控和安全管理的智能化水平,为实现海洋强国战略目标和维护海洋生态环境健康做出积极贡献。而通过科技创新,旨在为海洋安全与环境保护事业注入新的动力和活力。

1 YOLOv8的基本原理

YOLO 算法的工作原理是将输入图像划分为多个固定尺寸的网格格点,每个格点负责预测其区域内可能存在的物体的边界框和类别概率。YOLOv8 采用了当前流行的解耦头结构(Decoupled-Head) 来重新设计检测头(Detection Head) [2]。这种结构将分类和检测任务分离开来,同时还将目标检测从基于 Anchor 的方式转变为基于 Anchor-Free 的方式。解耦头的核心理念是在图像分割中引入额外的分支网络,该网络专门用于像素级预测,两条并行的分支分别提取类别特征和位置特征,然后各用一层1×1卷积完成分类和定位任务。这种设计使得模型能够更有效地利用不同层次的语义信息,从而提高分割结果的质量和细节保留能力。

为了进一步提升 YOLOv8 在船舶识别任务上的性能,本文对其进行了以下改进:

1) 引入基于 Fasternet 的 c2f-Faste r模块替换原有 c2f,通过PConv 减少计算量和模型大小,提高精度1.6%。

2) 采用华为提出的 GOLD-YOLO 中的 Gather-and-Distribute机制改进 Head 检测头,增强对不同大小目标的检测能力。

3) 引入 EMASlideLoss 损失函数,结合融合指数移动平均(EMA) 概念和滑动损失机制,提升模型精度和泛化能力。

具体改进和训练过程如下。

2 YOLOv8的改进和训练

2.1 c2f-Faster Block

2.1.1 FasterNet和FasterNet Block

FasterNet 是一种新的神经网络架构,‌旨在提高运行速度并对许多视觉任务非常有效。‌这种架构通过使用新型的 PConv(Partial Convolution) 和现成的 PWConv(Pointwise Convolution) 作为主要的算子,‌进一步提升了其性能‌[3]。而 FasterNet Block 中最重要的组件就是 PConv,PConv 在减少冗余计算和内存访问量的同时,能够保持高效的空间特征提取能力。PConv 的 FLOPs 更低,这是因为常规卷积和深度卷积对内存的访问次数远高于 PConv。因此,PConv 的网络延迟更低。

FasterNet 最核心的模块就是 FasterNet Block,由激活函数、归一化层、一个3×3的 PConv、两个1×1的 PWConv 卷积组成。 PConv 通过仅对输入特征图的一部分通道应用常规卷积,而保留其余通道不变,从而减少 FLOPs 和内存访问,而 PWConv 用于在 PConv 之后进一步提取特征,同时保持网络的轻量化。总的来说,FasterNet Block 的设计既保持了特征提取的能力,又降低了神经网络的延迟,使得网络更加轻量化。

2.1.2 基于FasterNet改进的c2f-Faster Block

YOLOv8 的 c2f 模块中堆叠了大量 Bottleneck 组件,这使得网络深度足够深,模型性能也会变好,但是模型的参数和计算量却居高不下,为了实现模型网络轻量化,本文在减少计算量和内存访问方面进行了研究,将 YOLOv8 中 BackBone 和 Head 中的 c2f 中的 Bottleneck 替换成基于 FasterNet 的 FasterNet Block,形成了称为 c2f-Faster Block 的新模块。

本文通过引入 c2f-Faster Block 这个创新结构,成功降低了网络模型的计算复杂度和内存访问量,提高了网络在轻量化方面的性能和效率。这些创新对于在资源受限的移动设备上部署深度学习模型具有重要意义,能够加速模型推理速度并减少能耗消耗,推动了深度学习技术在船舶识别算法应用中的可行性和普及度。

2.2 YOLOv8改进的Head

2.2.1 GOLD-YOLO和GD机制

Gold-YOLO 是一种高效的目标检测模型,由华为诺亚方舟实验室的研究者开发,旨在提升多尺度特征融合的能力[4]。Neck 网络是 Gold-YOLO 的核心创新所在,它使用 GD 机制来增强不同尺度特征的融合。GD 机制包含以下这几种模块,这些模块的组合可以改善不同尺度特征的融合问题。

低层 GD 分支专注于小目标和中等大小目标的检测,它使用Low-FAM(Low Feature Alignment) 和 Low-IFM(Low Information Fusion Module) 来处理从 backbone 提取的 B2,B3,B4,B5 特征图。高层 GD 分支专注于大目标的检测。它将 Low-GD 生成的 P3,P4,P5 特征图进行融合。

2.2.2 基于GOLD-YOLO的GD机制的改进的Head

本文通过引入 Gather-and-Distribute (GD) 机制来改进 YOLOv8 Head部分。YOLOv8 的头部结构被重新设计,以适应 GD 机制,改进后的 Head 的结构如图1所示。新的头部结构包括了专门用于实现 GD 机制的模块,如 Transformer 模块,这些模块能够处理和融合来自不同层级的特征。高效的特征提取:通过 GD 机制,YOLOv8 的头部能够更高效地提取和利用不同级别的特征,这对于提高模型的检测速度和准确性至关重要。

2.3 损失函数EMASlideLoss

YOLOv8 原本的分类损失函数是 Sigmoid 激活函数和二元交叉熵损失的结合,如公式(1) 所示。

[Lossx,y=-1Ni=0n[yilog (σ(xi))+(1-yi)log (1-σ(xi))] ] (1)

本研究针对样本不平衡问题,将 YOLOv8 原分类损失函数结合了指数移动平均(EMA) 的概念和滑动损失(Slide Loss) 的机制[5]。EMA是一种对时间序列数据进行平滑的方法,它通过给过去的观测值赋予指数递减的权重来计算加权平均值。在本次改进中,EMA 用于平滑 IoU 阈值,使得损失函数可以逐渐适应模型在不同训练阶段的性能变化。Slide Loss 机制的核心是动态调整损失函数的某些参数,以适应模型的学习进度,损失函数就是根据预测框与真实框之间的 IoU (交并比)大小来区分简单样本和困难样本。

设置衰减函数用于计算衰减值,如公式(2) 所示,x 是当前的更新次数或训练步数。decay 是初始衰减率,一个介于0和1之间的常数。τ是时间常数,控制衰减速度的参数。衰减值是用于控制不同时期的 [iou当前] 对 [ioumean] 的影响,如公式(3) 所示,指数衰减提供了一种平滑的过渡方式,避免了在训练初期由于数据的随机性而导致的 [ioumean] 的剧烈波动。

[d=decay×(1-e-xτ)] (2)

[ioumean=d×ioumean+ 1-d×iou当前] (3)

调制因子的作用是实施滑动损失机制,即根据模型对样本分类的难易程度来调整每个样本损失的权重,如公式(4) 所示。x 是预测框与真实框之间的 IoU 值,[ioumean] 是动态计算的阈值。当 x 远低于 [ioumean] 时,这些样本为负样本,权重为1,意味着它们对总损失的贡献较小。当 x 的值和 [ioumean] 的值相近时,越近越增加权重,表示对这种模糊的样本有更多的关注。当 x 值大于 [ioumean] 时,该样本为正样本,应该鼓励关注,就会给一个较大的权重。

[a1=1,b1=1a2=e1-ioumean,b2=1 a3=e1-x,b3=1 x≤ioumean-0.1ioumean-0.1<x<ioumeanx≥ioumean] (4)

权重的调制对于训练过程至关重要,首先是平衡正负样本,在目标检测中,负样本(不包含目标的背景区域)通常远多于正样本(包含目标的区域)。调制权重可以帮助减少负样本对损失函数的贡献,从而避免模型对背景过拟合。其次就是关注难分类样本,通过为难以正确分类或检测的样本(如小目标、遮挡目标)分配更高的权重,模型可以更多地学习这些样本的特征,提高对这些情况的检测性能。公式如(5) 所示。

[modulatingweight=a1×b1+a2×b2+a3×b3] (5)

最后是对 YOLOv8 的原损失函数进行一个基础计算,公式如(6) 所示。

[Loss=Lossx,y×modulatingweight] (6)

EMASlideLoss的引入使得模型对样本分布不均衡的问题具有更强的适应性和鲁棒性,有助于提高目标检测模型在复杂场景下的性能表现和泛化能力[6]。

3 模型的训练

3.1 数据集选择

船舶数据集是专门用于船舶识别、检测和分类任务的数据资源,其来源多样化,可能来自各种航海数据提供商、卫星图像公司、科研机构或开放数据平台。这些数据集涵盖了全球各地的海洋和港口,其中包含大量船舶图像,这些图像可通过卫星、无人机、摄像头或其他传感器获得[7]。船舶数据集中的船舶类型多种多样,包括货船、客船、渔船、油轮、游艇等,有些数据集还可能包含船舶的子类型或特定类别,例如船舶用途、船舶大小等。

由于SeaShips数据集包含大量图像,覆盖多种常见的船舶类型,能够反映不同的成像变化,如不同的比例、船体部件、照明条件、视角、背景和遮挡等,因此为了满足本文船舶算法研究的需要,本文选择了 SeaShips(7000) 为本项研究的数据集,挑选了1 000张图片作为测试集和6 000张图片作为训练集,如图2所示。

3.2 训练的结果

基于本文研究的各种对 YOLOv8 算法的改进措施,采用迁移学习,对选择的数据集进行训练,设定为200个 epoch,YOLOv8 三点改进的结果,损失函数、模型的准确度、召回率、类间平均精度,如图3所示。

经过3点改进后的测试结果,如图4所示,经过训练的模型在船舶目标检测方面表现出色,无论是对目标的识别,达到了较高的准确度和稳定性。这些图像不仅证明了模型在处理复杂场景时的强大能力,也展现了其在细节捕捉上的精细度。从图像中可以看出,模型能够准确地识别出不同类型的船只,包括客船和渔船,并且在不同时间段和不同条件下都能保持较高的置信度评分。模型对于多目标和小目标的检测效果同样令人满意,这表明了模型在处理低分辨率或远距离多目标时依然能够保持较高的识别准确率。

4 基于 PyQt5 的用户操作界面设计及测试

在构建用户界面(UI) 的过程中利用 Qt Designer 这一可视化工具来创建界面设计。利用 Qt Designer 设计界面,然后通过 PyUIC将设计转换为 Python 代码,最后结合 PyQt5 进行界面的开发和测试,从而完成对比实验和功能测试。

首先是单一目标船只的测试,如图5所示。然后是更为复杂的多目标测试,如图6所示,这里展示系统在应对多个目标时的效率和准确性。通过这些图像可以看到系统在不同测试条件下的表现,为进一步分析和优化提供有力的视觉支持。

5 结束语

本文对 YOLOv8 算法模型进行了三个地方的改进,首先是对YOLOv8 的 c2f 模块的 Bottleneck 进行的替换;然后是对 YOLOv8 的 Head 进行基于 GD 机制的修改;最后是对 YOLOv8 原分类损失函数结合上 EMA 概念和 SlideLoss 机制进行改进。在模型展示方面,本文使用了基于 PYQT5 的用户交互界面作为效果展示平台。

本文对模型进行的三个改进在各种指标上有不错的改进,但是仍然存在各种问题值得探讨:

1) 模型在各个改进点上都在 map@50 上都有所提升,但是提升的幅度不大,各种细节可以改进,包括各种训练技巧、数据集的强化技巧等,都有助于 map@0.5 提升。

2) 模型在改进后有所提升,但是在测试时却无法很精准地体现出来,甚至有些时候会展现出不好的效果。

3) 数据集的选择上过于单调,这是导致模型泛化能力不够的原因之一,模型在其他数据集上的表现不佳。

人工智能目标检测在船舶业的可以发挥不小的作用,在港口或者在海上对船舶对船只信息的快速收集有利于管理人员或者操作人员做出适当的相应的策略和操作,未来可以从以上三个方面入手继续优化。

参考文献:

[1] 杨一平,柳圣军,周超,等.多视觉信息融合的内河航道智能监控系统[J].中国图象图形学报,2018,13(8):1608-1616.

[2] Zheng Ge, Songtao Liu, Feng Wang, Zeming Li, Jian Sun. YOLOX: Exceeding YOLO Series in 2021 [J]. ariXiv,2021, arXiv:2107.08430:1-7.

[3] Jierun Chen, Shiu-hong Kao, Hao He. Run, Don’t Walk: Chasing Higher FLOPS for Faster Neural Networks[J]. arXiv,2023, arXiv:2004.10934:1-15.

[4] WANG C C,HE W,NIE Y,et al.Gold-YOLO:efficient object detector via gather-and-distribute mechanism[EB/OL].2023:2309.11331.https://arxiv.org/abs/2309.11331v5.

[5] YU Z P,HUANG H B,CHEN W J,et al.YOLO-FaceV2:a scale and occlusion aware face detector[EB/OL].2022:2208.02019.https://arxiv.org/abs/2208.02019v2.

[6] 张秀再,沈涛,许岱.基于改进YOLOv8算法的遥感图像目标检测[J].激光与光电子学进展,2024,61(10):298-308.

[7] 石文豪,安博文.基于多结构形态学的港口船舶检测方法[J].计算机系统应用,2016,25(10):283-287.

【通联编辑:李雅琪】