YOLOv5至YOLOv12升级:水下目标检测系统的设计与实现(完整代码+界面+数据集项目)

摘要 :水下目标检测在海洋牧场监测、海工巡检与水下安防等场景中承担着关键感知任务,但实际应用常受光照衰减、颜色偏移、散射雾化、低对比度与小目标密集遮挡 等因素影响,导致检测鲁棒性与实时性难以兼顾。本文面向"水下目标检测系统"的工程落地需求,系统梳理并实现了从 YOLOv5 至 YOLOv12 的模型升级与训练部署流程,在同一水下数据集与统一评估协议下对多代模型进行对比分析,给出 mAP、F1、PR 曲线与训练曲线 等结果。围绕水下成像退化特性,本文给出了可复现的数据集构建与标注规范,完成数据清洗、增强与划分,并提供可直接训练与推理的工程化配置。系统侧采用 PySide6 搭建桌面端可视化界面,支持图片/视频/摄像头输入、阈值(Conf/IoU)调节、检测结果可视化与统计、结果导出与留存;同时引入 SQLite 实现登录注册、用户配置持久化与历史记录管理,形成从数据到模型再到界面的完整闭环。文末提供完整代码、界面工程与数据集项目,便于复现实验与二次开发。


文章目录

  • [1. 前言综述](#1. 前言综述)
  • [2. 数据集介绍](#2. 数据集介绍)
  • [3. 模型设计与实现](#3. 模型设计与实现)
  • [4. 训练策略与模型优化](#4. 训练策略与模型优化)
  • [5. 实验与结果分析](#5. 实验与结果分析)
  • [6. 系统设计与实现](#6. 系统设计与实现)
    • [6.1 系统设计思路](#6.1 系统设计思路)
    • [6.2 登录与账户管理](#6.2 登录与账户管理)
  • [7. 下载链接](#7. 下载链接)
  • [8. 参考文献(GB/T 7714)](#8. 参考文献(GB/T 7714))

➷点击跳转至文末所有涉及的完整代码文件下载页☇


1. 前言综述

水下目标检测是水下机器人自主作业、海洋牧场巡检、海底管线维护与水下安防等任务中的关键感知环节,其工程价值往往体现在"能否稳定实时地在浑浊、弱光与动态背景下发现小目标并给出可信定位"这一硬约束上1。近年来的研究逐渐从手工特征驱动的识别范式转向端到端深度网络,并围绕"成像退化机理、数据集可比性、检测器结构适配与实时部署"形成了较为清晰的脉络与问题谱系2。与陆地场景相比,水体吸收与散射会诱发显著的颜色偏移、对比度衰减与细节模糊,使得同一类别在不同水域、深度与光照条件下呈现强域偏移,从而削弱检测器对边缘与纹理的判别能力[3]。因此,面向检测任务的水下图像增强与物理先验恢复被频繁引入为前置或联合学习模块,试图在不破坏几何结构的前提下提升可见性与目标可分性[4]。

在线来源佐证。 (ScienceDirect)

在方法演进层面,两阶段检测器以候选区域生成与精细分类回归为核心,能够在复杂背景下维持较高定位精度,但其流水线式结构与较高计算开销往往难以满足嵌入式水下平台的实时性要求[5]。一阶段检测器将分类与回归统一到密集预测框架中,显著降低推理延迟并更适合视频流在线处理,但在小目标与遮挡条件下对特征金字塔与尺度建模更为敏感[6]。针对密集预测中前景稀疏导致的样本不均衡问题,焦点损失通过抑制易分类样本的梯度贡献提升了难样本学习效率,为水下小目标与弱纹理目标提供了更稳健的优化路径[7]。YOLO 系列进一步将检测表述为单阶段回归问题并持续强化速度与工程可用性,使其在"实时检测---跟踪---告警"的水下闭环系统中具有天然适配性[8]。与此同时,基于 Transformer 的检测框架通过全局建模与集合预测实现端到端训练,降低了手工设计的先验依赖,但其在算力受限场景中需要更精细的结构裁剪与部署优化[9]。为兼顾全局建模能力与多尺度表征效率,层次化视觉 Transformer 以局部窗口注意力与跨窗口连接构建可扩展主干,为水下复杂背景与尺度变化提供了新的表征工具[10]。

围绕上述范式迭代,水下检测研究也在数据层面逐步从小规模、类别单一的数据向统一基准与跨数据集评测发展,其中 DUO/URPC 等工作通过汇集与重标注推动了可复现实验与效率评估,代表性方法与常用数据形态可概括如表 1 所示[11]。

方法范式(代表) 典型数据集/场景 核心思路(面向水下的常见做法) 优势 局限与改进空间
手工特征 + 分类器(HOG/SIFT+SVM 等) 小规模近景、目标形态稳定 设计颜色/纹理/形状特征并分类 数据需求低、易解释 泛化差,受浑浊与光照影响显著,难适配多类别与小目标
两阶段检测(Faster R-CNN 系) 背景复杂、精定位需求 RPN 生成候选框 + 精细回归;常叠加增强或先验去雾 精度与定位稳定 速度与显存开销大,嵌入式部署成本高
一阶段检测(SSD/RetinaNet) 实时视频流、在线检测 密集预测 + 多尺度特征;常用 focal loss 缓解不均衡 速度快、结构简洁 小目标依赖高质量多尺度特征,易受域偏移影响
YOLO 系列(v5→v12 族) 工程部署与实时闭环 强化骨干/颈部融合与训练策略;适配量化/加速推理 速度与工程生态成熟 水下退化与类间相似度高时易误检漏检,需要数据与结构协同优化
Transformer 检测(DETR/改进系) 全局上下文强、遮挡场景 集合预测与全局匹配;常结合轻量主干或蒸馏 端到端、先验更少 训练收敛与算力成本高,需轻量化与部署优化
增强---检测联合(UIE+UOD/多任务) 浑浊/弱光严重水域 共享编码器或联合损失,避免"先增强后检测"的失配 退化强时更稳健 任务权重与负迁移风险,需要精心设计数据与目标函数

在 YOLO 体系内部,近年来的升级趋势逐渐从单纯堆叠卷积模块转向"可控梯度路径、端到端后处理与注意力高效化",以更直接地回应小目标、密集目标与实时部署的矛盾[12]。例如,YOLOv10 针对 NMS 带来的端到端部署瓶颈提出无 NMS 的一致性双重分配训练,并从效率与精度角度系统性重审组件设计,从而在相近精度下显著降低延迟[13]。进一步地,YOLOv12 将注意力机制作为核心设计对象,通过区域注意力与高效聚合结构在保持实时性的同时提升表征能力,为复杂背景与长程依赖明显的场景提供新的结构可能[14]。国内研究则更多结合水下成像退化与目标尺度特征,在 YOLOv5 等工程化基线之上引入注意力、多尺度融合与损失改造等手段,以提升海参、海胆等典型水下目标的检测鲁棒性并兼顾落地效率[15]。

在线来源佐证。 (arXiv)

面向"YOLOv5 至 YOLOv12 升级:水下目标检测系统的设计与实现"这一任务,老思在本文的主要工作是以 YOLO 系列为核心完成从数据集构建与标注、模型对比与改进、到 PySide6 图形界面集成与推理部署的完整闭环,并在同一水下数据集上系统评测 YOLOv5--YOLOv12 各版本在精度、速度与参数规模上的差异。与此同时,本文将给出可复现的工程代码、可直接运行的界面程序与数据组织方式,便于读者在真实水下业务中复用与二次开发。

主要功能演示:

(1)启动与登录:启动程序后首先进入登录界面,支持注册、登录与记住账号配置;登录成功即加载对应用户的历史检测记录与个性化参数(如默认阈值、默认模型),并切换进入主界面。

(2)多源输入与实时检测(摄像头/视频/图片/文件夹):主界面提供统一的输入选择入口,支持摄像头实时流、视频文件逐帧推理、单张图片快速检测,以及文件夹批量推理与结果汇总;界面同步展示检测框、类别与置信度,并输出统计信息与可导出结果。

(3)模型选择与对比演示:界面内置 YOLOv5--YOLOv12 多版本权重切换入口,用户可一键切换模型并在同一输入源上复现实验;对比展示包括推理耗时(FPS/单帧延迟)、mAP/F1(如已导入评测结果)以及可视化差异,便于直观看到"更快/更准/更稳"的取舍。

(4)新增主题修改功能:提供主题与配色的即时切换能力,支持亮/暗色、主色调与字体/图标风格的快速替换,保证在不同光照环境与长时间监控场景下的可读性;主题偏好随用户账号持久化保存,重新登录后自动恢复。


2. 数据集介绍

本项目使用的水下目标检测数据集共包含 14,674 张 图像,覆盖从浅海到深海的不同深度与能见度条件,场景中普遍存在低照度、散射雾化、颜色偏移与对比度不足等典型水下退化现象。数据集按照工程训练与评测规范划分为训练/验证/测试三部分,其中训练集 11,739 张 用于参数学习,验证集 1,467 张 用于训练过程中的超参数选择与早停判据,测试集 1,468 张 用于最终泛化性能评估;该划分比例在保证训练样本规模的同时,也为跨模型(YOLOv5--YOLOv12)对比提供了稳定的评测基准。类别层面,数据集共包含 6 类常见水下目标:螃蟹、鱼、水母、虾、小鱼与海星(英文标签分别为 crab、fish、jellyfish、shrimp、small_fish、starfish),能够覆盖"轮廓显著但易遮挡""纹理弱且尺度小""形态变化大"等多种检测难点,从而更贴近真实水下作业的多目标分布形态。

python 复制代码
Chinese_name = {"crab": "螃蟹", "fish": "鱼", "jellyfish": "水母", "shrimp": "虾", "small_fish": "小鱼", "starfish": "海星"}

标注采用目标检测常用的矩形框方式,并以 YOLO 体系的归一化文本格式进行组织,便于在 Ultralytics/YOLO 训练框架中直接读取与复现实验。结合你提供的统计图可以观察到:样本实例数在类别间存在明显不均衡,整体呈现"头部类(如 crab、small_fish、starfish)占比更高、尾部类(如 jellyfish、shrimp)相对稀疏"的分布特征;同时,目标中心点在画面空间上并非完全均匀,宽高分布表现出典型的小目标占优现象,这与水下拍摄距离变化和能见度限制高度一致。为保证训练稳定性与部署一致性,本系统在训练/推理阶段默认采用等比例缩放与 LetterBox 对齐方式将输入映射到网络输入尺寸(例如 640×640,可在配置中调整),并在不改变标注语义的前提下完成必要的数据清洗与增强配置,使得后续"多模型切换对比"能够在同一数据协议下公平评测。

📊 数据集规格说明 (Dataset Specification)

维度 参数项 详细数据
基础信息 标注软件 LabelImg
标注格式 YOLO TXT (Normalized)
数量统计 训练集 (Train) 11,739 张
验证集 (Val) 1,467 张
测试集 (Test) 1,468 张
总计 (Total) 14,674 张
类别清单 Class ID: 0 crab(螃蟹)
Class ID: 1 fish(鱼)
Class ID: 2 jellyfish(水母)
Class ID: 3 shrimp(虾)
Class ID: 4 small_fish(小鱼)
Class ID: 5 starfish(海星)
图像规格 输入尺寸 640 * 640(默认,可配置)
数据来源 覆盖浅海至深海的多样化水下场景(不同深度/能见度/背景)

3. 模型设计与实现

面向"浅海---深海多域变化"的水下目标检测,老思在模型侧的首要取舍是把"可复现的系列化对比"放在设计中心:以同一套数据协议、输入分辨率与后处理流程,对 YOLOv5--YOLOv12 的检测器进行统一训练、验证与部署,从而把性能差异更多归因于模型结构本身而非工程细节漂移。由于水下图像普遍存在低对比度与散射雾化,且数据集中"小目标占比高、类间不均衡明显",系统默认选择轻量级模型作为工程主干(如 n/s 级别),以确保在桌面端或边缘端也能维持稳定帧率;在此基础上,通过多版本权重切换完成精度---速度权衡的可视化对比,并将最终推荐模型作为 UI 默认推理后端。

从网络结构看,YOLO 系列可以统一抽象为 Backbone--Neck--Head 三段式检测框架,其中 Backbone 负责特征提取,Neck 负责多尺度融合,Head 负责分类与边界框回归。以 YOLOv5 为例,其 Backbone 常采用 CSP 系列的卷积主干以降低重复梯度并增强特征表达,Neck 采用 SPPF 扩展感受野并结合 PAN/FPN 式路径聚合实现跨尺度融合,Head 在多个尺度输出上进行密集预测以覆盖从小到大的目标尺度;整体结构示意如图所示。该设计对水下检测尤为关键:由于远距离拍摄与能见度限制,小目标(如 small_fish、shrimp)往往仅占据极少像素,多尺度特征金字塔能显著缓解"深层语义强但分辨率低"的矛盾,从而减少漏检。YOLOv8 及后续版本则进一步在主干与颈部引入更高效的特征聚合单元,并在检测头上走向更"解耦、无锚"的设计,以降低对 anchor 先验的依赖并改善不同尺度目标的匹配质量;这类改动对水下数据的跨域偏移更友好,因为 anchor 的尺寸分布往往难以同时适配浅海近景与深海远景的尺度统计。关于 YOLOv5 与 YOLOv8 的结构化说明,可参考 Ultralytics 官方文档。 (Ultralytics Docs)

为了提升弱纹理与遮挡条件下的可分性,系统在结构层面预留了"注意力插件位",便于在 Backbone 或 Neck 的关键融合节点中插入轻量注意力模块进行特征重标定。以 CBAM 为例,其通过通道注意力与空间注意力的串联,分别回答"哪些通道更重要"与"哪些空间位置更重要",对水下场景中常见的背景噪声(悬浮颗粒、光斑、海底纹理)具有抑制作用。其核心计算可写为
F ′ = M c ( F ) ⊗ F , F ′ ′ = M s ( F ′ ) ⊗ F ′ , F' = M_c(F)\otimes F,\qquad F'' = M_s(F')\otimes F', F′=Mc(F)⊗F,F′′=Ms(F′)⊗F′,

其中 ( F ∈ R C × H × W ) (F\in \mathbb{R}^{C\times H\times W}) (F∈RC×H×W)为输入特征, ( M c ) (M_c) (Mc) 与 ( M s ) (M_s) (Ms) 分别表示通道与空间注意力映射, ( ⊗ ) (\otimes) (⊗) 为逐元素乘法。 (Home)

需要强调的是,注意力并非"必然提升",其收益与代价取决于插入位置、模型尺度与数据退化强度;因此本文工程实现采用"可配置开关",在不破坏主干可复现性的前提下,支持对注意力模块进行消融对比。

在任务建模与损失函数层面,目标检测训练通常被写为分类、定位与置信度学习的联合优化问题。对 anchor-based 的 YOLOv5 风格头部,常用的总损失可以写成
L = λ b o x L ∗ b o x + λ ∗ o b j L ∗ o b j + λ ∗ c l s L ∗ c l s , \mathcal{L}=\lambda_{box}\mathcal{L}*{box}+\lambda*{obj}\mathcal{L}*{obj}+\lambda*{cls}\mathcal{L}*{cls}, L=λboxL∗box+λ∗objL∗obj+λ∗clsL∗cls,

其中 ( L ∗ b o x ) (\mathcal{L}*{box}) (L∗box) 多采用 IoU 类回归损失(如 CIoU/DIoU), ( L ∗ o b j ) (\mathcal{L}*{obj}) (L∗obj) 与 ( L ∗ c l s ) (\mathcal{L}*{cls}) (L∗cls) 常采用二元交叉熵以刻画目标存在性与类别概率;对 anchor-free 与解耦头(如 YOLOv8 及之后的一类实现),则更强调样本分配策略与回归分布建模,训练时常结合 IoU 回归与分布式回归损失(如 DFL 思路)以提高定位精度,尤其在小目标边界模糊时更能稳定梯度。考虑到水下数据类别不均衡与尾部类(如 jellyfish、shrimp)样本稀缺,系统训练端还默认开放标签平滑与 EMA 等稳健化策略:标签平滑通过把 hard label ( y ) (y) (y) 替换为 ( y ′ = ( 1 − ϵ ) y + ϵ / K ) (y'=(1-\epsilon)y+\epsilon/K) (y′=(1−ϵ)y+ϵ/K) 缓解过拟合与过置信预测,EMA 则对权重进行滑动平均以降低训练震荡,从而提升验证集曲线的可解释性与最终收敛稳定性。

工程实现上,老思将"多版本 YOLO 族"的差异屏蔽在统一的 Detector 抽象之后:前处理固定为 LetterBox 等比缩放与归一化,推理阶段根据所选版本加载对应权重与推理后端,后处理则统一执行置信度阈值筛选与 NMS(若模型为端到端无 NMS 版本,则直接解析输出),最终把检测框、类别与置信度送入 PySide6 界面层进行绘制与统计。为了保证跨模型对比的公平性,系统把输入尺寸、阈值、类别映射与可视化样式等全部外置为配置项,使得同一视频帧在不同模型之间切换时,仅改变网络本身而不改变数据流与显示逻辑。


4. 训练策略与模型优化

水下目标检测的训练难点并不只来自模型结构本身,更集中体现在数据退化与分布偏移对优化过程的"扰动":浅海与深海在色彩衰减、散射雾化、可见距离、背景纹理密度等方面差异显著,同类目标在不同水域与拍摄距离下呈现强尺度变化与弱纹理特征,这会直接放大早期训练阶段的梯度噪声,使模型更容易陷入对背景先验的过拟合。基于这一现实,老思在训练策略上坚持两条原则:其一,用统一的数据协议与输入规格固定可比性,使 YOLOv5--YOLOv12 的差异主要来自网络本体;其二,把"稳定收敛与可部署"为目标,在增强、学习率调度、正则化与导出加速上同时做约束,从而让结果既可复现也能直接落到 PySide6 系统中长期运行。

训练环境采用单卡 RTX 4090,输入分辨率默认设为 640×640,并保持训练、验证与部署阶段一致的 LetterBox 等比缩放策略,避免因为推理端预处理差异导致的指标漂移。为提升复现性,训练脚本固定随机种子并尽量采用确定性算子;日志记录覆盖每轮损失、学习率、mAP@0.5:0.95、Precision/Recall 与推理耗时,验证集用于超参数选择、早停判断与"最佳权重"保存。对于多版本 YOLO 的系列化对比,训练入口尽量统一为同一份 dataset.yaml(类别名、路径、划分固定),仅替换模型配置或权重文件,保证对比结果具有工程解释性。

数据增强层面,水下场景的有效增强需要兼顾"目标可见性"与"几何一致性"。训练早期采用 Mosaic 提升小目标出现频率与尺度多样性,并配合随机仿射与轻量色彩扰动提升跨水域泛化;训练后期则关闭或减弱 Mosaic(如最后 10 个 epoch),让模型更多在接近真实拍摄分布的样本上细化边界框回归,从而改善小目标的定位抖动与框偏移。对于尾部类样本较少的情况,工程上通常优先保证采样与增强不会进一步稀释尾部类的有效梯度:一方面通过更温和的增强幅度避免"增强过强导致目标语义被破坏",另一方面在损失端或采样端引入对难样本更友好的配置(例如适度的标签平滑或更强调难例的分类损失),以缓解类别不均衡带来的训练偏置。

优化器与学习率策略采用偏稳健的设置:初始学习率 ( l r 0 ) (lr_0) (lr0) 取 0.01,并使用 warmup 在前 3 个 epoch 逐步抬升学习率以降低初期震荡;随后采用余弦退火使学习率平滑下降至 ( l r f = l r 0 ⋅ 0.01 ) (lr_f = lr_0 \cdot 0.01) (lrf=lr0⋅0.01),其形式可写为
l r ( t ) = l r f + 1 2 ( l r 0 − l r f ) ( 1 + cos ⁡ π t T ) , lr(t) = lr_f + \frac{1}{2}(lr_0-lr_f)\left(1+\cos\frac{\pi t}{T}\right), lr(t)=lrf+21(lr0−lrf)(1+cosTπt),

其中 ( T ) (T) (T) 为总训练轮数, ( t ) (t) (t) 为当前轮数。动量与权重衰减分别取 0.937 与 ( 5 × 10 − 4 ) (5\times 10^{-4}) (5×10−4),以抑制过拟合并稳定收敛;同时启用混合精度训练提升吞吐并降低显存占用,使 batch size 在 4090 上保持为 16 时仍能覆盖较多版本模型的对比实验。早停策略设置 patience 为 50,当验证集指标长期无提升时终止训练,以避免在水下退化样本上出现"训练损失继续下降但泛化性能不再提升"的无效迭代。

下表给出本文默认采用的一组训练配置,它在 YOLOv5--YOLOv12 的跨版本对比中作为统一基线;若读者需要更偏实时或更偏精度的取舍,可在不改变数据协议的前提下,仅调节 imgsz、batch 与训练轮数即可获得可解释的性能变化。

名称 数值(默认) 说明
epochs 120 训练轮数上限
patience 50 早停耐心
batch 16 单次迭代批大小
imgsz 640 输入分辨率
pretrained true 加载预训练权重进行迁移学习
optimizer auto 由框架选择更合适的优化器配置
lr0 / lrf 0.01 / 0.01 初始学习率与最终占比
momentum 0.937 动量系数
weight_decay 0.0005 权重衰减
warmup_epochs 3.0 学习率预热
mosaic / close_mosaic 1.0 / 10 前期增强与后期关闭策略

在"模型优化"层面,本文将优化目标明确为两类:其一是训练端的稳定性与可比性,其二是部署端的推理效率与交互流畅性。训练端除前述调度与增强外,推荐启用 EMA(指数滑动平均)来平滑权重更新,使验证曲线更稳定、最佳权重选择更可靠;对水下小目标较多的场景,适当提高输入分辨率或开启多尺度训练能提升召回,但需要与实时性目标权衡。部署端则优先采用导出加速与精度压缩:推理默认开启 FP16;对需要进一步降低延迟的场景,可导出 ONNX 并使用 TensorRT 构建引擎,通过算子融合与图优化获得更稳定的帧率。对于端到端导出的版本(例如更强调无后处理瓶颈的模型形态),部署时应保持训练与导出配置一致,避免因 NMS 行为差异引起的结果不一致。最终,PySide6 界面侧采用推理线程与 UI 线程分离的方式把耗时操作移出主线程,并将阈值调节、模型切换、结果保存与 SQLite 写入设计为非阻塞交互,从而保证"实时检测与可视化"在长时间运行下依然平滑可靠。

bash 复制代码
# 统一基线训练(示例:Ultralytics 风格)
yolo detect train data=dataset.yaml model=yolo12n.pt imgsz=640 batch=16 epochs=120 patience=50 pretrained=True

# 导出部署模型(示例:ONNX / TensorRT)
yolo export model=runs/detect/train/weights/best.pt format=onnx
yolo export model=runs/detect/train/weights/best.pt format=engine half=True

5. 实验与结果分析

本节实验围绕"同一水下数据集上,对 YOLOv5--YOLOv12 的系列化升级进行可复现对比"展开。数据集采用第 2 节给出的划分(训练 11,739 张、验证 1,467 张、测试 1,468 张),类别为 crab(螃蟹)、fish(鱼)、jellyfish(水母)、shrimp(虾)、small_fish(小鱼)、starfish(海星)。对比模型覆盖 n 型轻量组 (YOLOv5nu、YOLOv6n、YOLOv7-tiny、YOLOv8n、YOLOv9t、YOLOv10n、YOLOv11n、YOLOv12n)与 s 型平衡组 (YOLOv5su、YOLOv6s、YOLOv7、YOLOv8s、YOLOv9s、YOLOv10s、YOLOv11s、YOLOv12s)。训练阶段默认采用第 4 节的统一超参数(imgsz=640、batch=16、epochs=120、warmup、后期关闭 Mosaic 等),以减少"训练协议差异"对结论的干扰;推理端耗时统计来自框架基准日志,测试硬件信息在结果表中记录为 RTX 3070 Laptop GPU (8GB),因此时延与 FPS 应理解为该平台下的相对比较,而非跨设备的绝对值。

评价指标采用 Precision、Recall、F1 与 mAP。对单类别而言,Precision 与 Recall 分别定义为
P = T P T P + F P , R = T P T P + F N , P=\frac{TP}{TP+FP},\qquad R=\frac{TP}{TP+FN}, P=TP+FPTP,R=TP+FNTP,

F1 则为
F 1 = 2 P R P + R . F1=\frac{2PR}{P+R}. F1=P+R2PR.

检测任务的 mAP@0.5 与 mAP@0.5:0.95 分别度量在 IoU=0.5 以及 IoU 从 0.5 到 0.95(步长 0.05)的平均精度,更高的 mAP@0.5:0.95 往往意味着更严格的定位质量。由于水下场景中"低对比度 + 小目标"会显著放大阈值选择对漏检/误检的影响,老思在 UI 工程中也将置信度阈值作为关键可调参数,并结合 F1-Confidence 曲线给出默认推荐区间。

图5-1 F1-Confidence Curve :不同置信度阈值下各类别与全类别的 F1 变化。

从图5-1可以读出,全类别 F1 在较宽阈值区间内维持高位,并在 conf≈0.462 处达到全类别最优(图中标注 all classes 0.99 at 0.462)。这意味着在当前数据分布与模型输出标定下,把默认阈值设在 0.45--0.50 往往能取得较好的精度-召回折中;当 conf 继续抬高至 0.85 以上时,F1 迅速下滑,其本质来自 Recall 的塌缩------弱纹理目标与边界模糊的小目标更容易在高阈值下被过滤。类别层面,small_fish(小鱼)曲线明显低于其余类别,表明该类存在更高的不确定性:一方面小目标像素占比低导致回归与分类同时变难,另一方面其外观更容易与 fish(鱼)或背景反光区域混淆,因此 UI 中若面向"小鱼尽量不漏检"的应用,建议适当降低 conf,并结合更高输入分辨率或小目标增强策略做补偿。

图5-2 Precision--Recall Curve :各类别 PR 曲线与全类别 mAP@0.5。

图5-2给出了 PR 曲线与类别级 mAP@0.5。整体上,除 small_fish 外,其余类别的曲线几乎贴近右上角,图例中 crab、fish、jellyfish、shrimp、starfish 的 mAP@0.5 均约为 0.995 ,而 small_fish 约为 0.974 ,全类别 mAP@0.5=0.991。这种"单一尾部类拉低整体"的现象与第 2 节标签分布图所揭示的长尾结构一致:small_fish 既更小、更密集,也更容易在散射与色偏条件下丢失纹理细节。对算法对比而言,这也提示仅看 mAP@0.5 往往会出现"多数模型接近饱和、区分度不足"的情况,后续需要借助更严格的 mAP@0.5:0.95 与推理效率来做工程取舍。

图5-3 训练/验证曲线 :box/cls/dfl 损失与 precision、recall、mAP 指标随 epoch 的变化。

图5-3展示了一个代表性训练过程:train/val 的 box、cls、dfl 损失整体呈稳定下降并在中后期逐步收敛,precision 与 recall 在前若干轮快速抬升后趋于平稳,mAP@0.5 较早接近饱和,而 mAP@0.5:0.95 的提升更"慢热",通常在 30--80 epoch 仍有可观增益,反映出定位精度需要更长时间细化。工程上,这解释了第 4 节"后期关闭 Mosaic"的必要性:当模型已学到主要语义后,应让其更多在接近真实分布的样本上优化边界回归,否则容易出现 mAP@0.5 很高但 mAP@0.5:0.95 提升受限的现象。

图5-4 Underwater - n_type: F1 & mAP50 Comparison :n 型模型在 F1 与 mAP@0.5 的总体对比。

图5-4表明 n 型组的 F1 与 mAP@0.5 差异非常接近 ,整体处于"高位饱和"。结合表5-1的数值可以更清晰地看到:n 型组的 mAP@0.5 的波动仅约 (10^{-3}) 量级,但 mAP@0.5:0.95 的差异显著增大 (最高与最低相差约 0.075),因此在该数据集上,严格定位指标更能拉开模型差距。具体而言,YOLOv12n 在 n 型组取得最高的 F1(0.9812)与 mAP@0.5(0.9882),而 YOLOv10n 的 mAP@0.5:0.95 达到组内最高(0.8379),说明其在更严格 IoU 阈值下的框定位更稳。速度方面,端到端时延(含前后处理)在该测试平台上 YOLOv8n ≈ 10.17ms(≈98 FPS) 最快,YOLOv12n ≈ 15.75ms(≈63 FPS)更偏向"精度优先"的取舍;YOLOv7-tiny 与 YOLOv9t 虽然参数规模并非最大,但在该实现下推理/后处理耗时偏高,导致总体 FPS 明显落后。

表5-1 n 型模型总体指标与推理效率(测试端:RTX 3070 Laptop GPU)

模型 Params(M) FLOPs(G) Total(ms) FPS Precision Recall F1 Score mAP50 mAP50-95
YOLOv5nu 2.6 7.7 10.94 91.41 0.9805 0.9720 0.9762 0.9878 0.8200
YOLOv6n 4.3 11.1 10.34 96.71 0.9762 0.9707 0.9734 0.9849 0.8281
YOLOv7-tiny 6.2 13.8 21.08 47.44 0.9657 0.9740 0.9698 0.9854 0.7630
YOLOv8n 3.2 8.7 10.17 98.33 0.9857 0.9720 0.9788 0.9878 0.8259
YOLOv9t 2.0 7.7 19.67 50.84 0.9848 0.9652 0.9749 0.9870 0.8223
YOLOv10n 2.3 6.7 13.95 71.68 0.9820 0.9689 0.9754 0.9872 0.8379
YOLOv11n 2.6 6.5 12.97 77.10 0.9849 0.9678 0.9763 0.9873 0.8241
YOLOv12n 2.6 6.5 15.75 63.49 0.9877 0.9749 0.9812 0.9882 0.8268

图5-5 Underwater - n_type - mAP50(B) :不同 n 型模型的 mAP@0.5 随 epoch 变化。

图5-5揭示了"收敛速度与稳定性"的差别:多数模型在前 10--20 个 epoch 即快速抬升并接近平台值,后续提升主要来自细化与抖动收敛。曲线中 YOLOv10n 的早期波动更明显,在若干 epoch 出现短暂下探后再回升,这类现象在工程上通常与样本分配策略、强增强阶段的梯度噪声有关;但进入中后期后各模型最终仍趋于一致,这也解释了图5-4中 mAP@0.5 难以拉开差距的原因。

图5-6 Average PR Curves - Underwater (n_type) :n 型模型平均 PR 曲线重叠对比。

图5-6进一步佐证了"mAP@0.5 高位重合"的结论:多条平均 PR 曲线在高召回区域基本贴合,仅在极高召回末端出现轻微分叉。图例给出的 mAP(约等同于 mAP@0.5)显示 YOLOv12n=0.991 略高,其余多在 0.986--0.990 区间,差距很小;因此,若系统目标是"实时交互更流畅",YOLOv8n 这类快速模型具有更高性价比,而若更关心阈值敏感区域的稳定性与极限指标,则可优先考虑 YOLOv12n 或在定位指标上更突出的 YOLOv10n。

图5-7 Underwater - s_type: F1 & mAP50 Comparison :s 型模型在 F1 与 mAP@0.5 的总体对比。

在 s 型组(图5-7)中,除 YOLOv7 外,其余模型同样表现为 F1 与 mAP@0.5 的高度接近,说明在更大容量下该数据集的 mAP@0.5 依然趋于饱和。需要特别说明的是,本次实验中 YOLOv7(s) 的指标显著偏离 (F1=0.8135,mAP@0.5=0.8321),并伴随明显更高的推理耗时,这更像是"实现框架差异/权重初始化或训练配置未完全对齐"导致的异常点,而非同协议下的正常对比结果;在严谨对比中,应确保预训练来源、数据增强与样本分配策略一致,否则 YOLOv7 的结果会失去可比性。排除该异常点后,s 型组更能体现"定位质量与效率取舍"的细微差别:YOLOv12s 在本实验中取得最高 F1(0.9858)、mAP@0.5(0.9913)与 mAP@0.5:0.95(0.8567),而 YOLOv6s 的 mAP@0.5:0.95 也达到 0.8565,二者在严格 IoU 下几乎持平,但 YOLOv6s 的 Precision 更高(0.9920),表现为更保守的误检控制。

表5-2 s 型模型总体指标与推理效率(测试端:RTX 3070 Laptop GPU)

模型 Params(M) FLOPs(G) Total(ms) FPS Precision Recall F1 Score mAP50 mAP50-95
YOLOv5su 9.1 24.0 12.24 81.70 0.9845 0.9792 0.9819 0.9900 0.8377
YOLOv6s 17.2 44.2 12.26 81.57 0.9920 0.9760 0.9840 0.9897 0.8565
YOLOv7 36.9 104.7 29.52 33.88 0.8930 0.7470 0.8135 0.8321 0.5542
YOLOv8s 11.2 28.6 11.39 87.80 0.9791 0.9794 0.9793 0.9893 0.8410
YOLOv9s 7.2 26.7 22.17 45.11 0.9855 0.9793 0.9824 0.9910 0.8485
YOLOv10s 7.2 21.6 14.19 70.47 0.9782 0.9723 0.9753 0.9889 0.8550
YOLOv11s 9.4 21.5 13.47 74.24 0.9859 0.9818 0.9838 0.9900 0.8548
YOLOv12s 9.3 21.4 16.74 59.74 0.9854 0.9861 0.9858 0.9913 0.8567

图5-8 Underwater - s_type - mAP50(B) :不同 s 型模型的 mAP@0.5 随 epoch 变化。

图5-8中,多数 s 型模型在较少 epoch 内就到达 0.97--0.99 的高位平台,后期增益更依赖定位细化与抖动抑制,这与图5-3对 mAP@0.5:0.95 "慢热"特征的观察一致。工程上,这意味着若训练资源有限,可以用验证集曲线设置更激进的早停策略,把训练轮数更多留给"更高分辨率或更强小目标策略"的实验,而不是在 mAP@0.5 已饱和后继续无效迭代。

图5-9 Average PR Curves - Underwater (s_type) :s 型模型平均 PR 曲线重叠对比。

图5-9显示,除异常点 YOLOv7 外,s 型平均 PR 曲线几乎完全重合,图例 mAP(约等同 mAP@0.5)集中在 0.991--0.994 的窄区间。此时选择默认部署模型更应回到"交互需求":若 UI 端要求更高帧率与更低延迟,YOLOv8s(≈87.8 FPS)更合适;若更强调严格 IoU 下的定位质量与阈值稳定性,则 YOLOv12s 与 YOLOv6s 更值得优先考虑。结合图5-1的阈值分析,老思建议把系统默认 conf 设为 0.45--0.50,并在"面向 small_fish(小鱼)尽量不漏检"的场景下提供"一键低阈值预设",把召回优先策略显式暴露给用户,以避免误把阈值调高造成系统性漏检。


6. 系统设计与实现

6.1 系统设计思路

老思在系统实现上把"可复现的多模型对比"与"可长期运行的交互稳定性"作为两条主线:前者要求输入预处理、阈值策略与后处理流程在不同 YOLO 版本间保持一致,从而使性能差异尽量来自模型本身;后者要求推理与界面渲染解耦,避免视频流推理阻塞 UI 事件循环。为此,系统采用典型的分层与对象组合结构:Ui_MainWindow 负责界面组件组织与样式主题切换,MainWindow 作为控制中枢管理状态机、槽函数与业务流程,Detector 作为处理层封装模型加载、前后处理与推理接口,并对外提供统一的"输入帧→检测结果"服务,从而支持 YOLOv5--YOLOv12 权重在运行期热切换而不改动界面逻辑。

跨层通信采用 PySide6 的信号-槽机制:界面层只发出"输入源变化、阈值变化、模型变化、开始/暂停/停止"等信号,控制层把这些信号映射为状态转移与任务调度,再由处理层在独立线程执行推理并回传结构化结果(检测框、类别、置信度、耗时与统计)。这种设计使 UI 更新与推理计算天然隔离,长视频或摄像头实时流在高负载下仍能保持滑动条、按钮与主题切换的响应一致性;同时也便于把结果写入数据库或导出文件的 I/O 操作放到异步路径中,减少卡顿。

在数据与配置持久化方面,系统引入 SQLite 作为轻量数据库,围绕"用户空间"组织数据:不同用户拥有独立的配置(默认模型、conf/IoU、主题、最近打开路径等)与历史记录(时间戳、输入源、模型版本、结果摘要与导出路径),从而把实验复现与工程使用统一到同一套交互闭环里。检测结果输出不仅包含渲染到画面的标注框,还提供类别计数、置信度分布等统计视图,并支持导出为图像/视频/表格以及写入数据库,满足"离线复盘---对比分析---再训练"的迭代需求。

图 系统流程图

图注:系统从初始化到多源输入,完成预处理、推理与界面联动,并通过交互形成闭环。

6.2 登录与账户管理

登录与账户管理被设计为主检测流程的前置"入口闸门"与运行期"个性化容器":系统启动后先在登录界面完成注册或登录,注册将用户信息与默认配置写入 SQLite,登录则通过查询与哈希校验确定身份,校验通过后自动加载该用户的阈值参数、主题风格、默认模型与历史检测记录并进入主界面;在主界面中,用户可随时修改头像与密码、调整偏好配置,这些变更会即时写回数据库并在下次登录时恢复,从而让不同操作者在同一套程序上拥有独立的结果空间与参数环境,既利于实验对比的可追溯,也保证长期值守场景下的使用一致性与体验稳定性。


7. 下载链接

若您想获得博文中涉及的实现完整全部资源文件 (包括测试图片、视频,py, UI文件,训练数据集、训练代码、界面代码等),这里见可参考博客与视频,已将所有涉及的文件同时打包到里面,点击即可运行,完整文件截图如下:

完整资源中包含数据集及训练代码,环境配置与界面中文字、图片、logo等的修改方法请见视频:➷➷➷

详细介绍文档博客YOLOv5至YOLOv12升级:水下目标检测系统的设计与实现(完整代码+界面+数据集项目)

环境配置博客教程:(1)Pycharm软件安装教程;(2)Anaconda软件安装教程;(3)Python环境配置教程

或者环境配置视频教程:(1)Pycharm软件安装教程;(2)Anaconda软件安装教程;(3)Python环境依赖配置教程

数据集标注教程(如需自行标注数据):数据标注合集


8. 参考文献(GB/T 7714)

1 FU C, LIU R, FAN X, et al. Rethinking general underwater object detection: Datasets, challenges, and solutions[J]. Neurocomputing, 2023, 517: 243-256. DOI:10.1016/j.neucom.2022.10.039.

2 JIAN M, YANG N, TAO C, et al. Underwater object detection and datasets: a survey[J]. Intelligent Marine Technology and Systems, 2024, 2: 9. DOI:10.1007/s44295-024-00023-6.

3\] ANCUTI C O, ANCUTI C, DE VLEESCHOUWER C, et al. Color Balance and Fusion for Underwater Image Enhancement\[J\]. **IEEE Transactions on Image Processing**, 2018, 27(1): 379-393. DOI:10.1109/TIP.2017.2759252. \[4\] AKKAYNAK D, TREIBITZ T. Sea-thru: A Method for Removing Water from Underwater Images\[C\]//**Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition (CVPR)**. 2019: 1682-1691. DOI:10.1109/CVPR.2019.00178. \[5\] REN S, HE K, GIRSHICK R, et al. Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks\[C\]//**Advances in Neural Information Processing Systems**. 2015: 91-99. \[6\] LIU W, ANGUELOV D, ERHAN D, et al. SSD: Single Shot MultiBox Detector\[C\]//**Computer Vision -- ECCV 2016**. Cham: Springer, 2016: 21-37. DOI:10.1007/978-3-319-46448-0_2. \[7\] LIN T Y, GOYAL P, GIRSHICK R, et al. Focal Loss for Dense Object Detection\[C\]//**Proceedings of the IEEE International Conference on Computer Vision (ICCV)**. 2017: 2999-3007. DOI:10.1109/ICCV.2017.324. \[8\] REDMON J, DIVVALA S, GIRSHICK R, et al. You Only Look Once: Unified, Real-Time Object Detection\[C\]//**Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition (CVPR)**. 2016: 779-788. DOI:10.1109/CVPR.2016.91. \[9\] CARION N, MASSA F, SYNNAEVE G, et al. End-to-End Object Detection with Transformers\[C\]//**Computer Vision -- ECCV 2020**. Cham: Springer, 2020: 213-229. DOI:10.1007/978-3-030-58452-8_13. \[10\] LIU Z, LIN Y, CAO Y, et al. Swin Transformer: Hierarchical Vision Transformer using Shifted Windows\[C\]//**Proceedings of the IEEE/CVF International Conference on Computer Vision (ICCV)**. 2021: 10012-10022. \[11\] LIU C, LI H, WANG S, et al. A Dataset and Benchmark of Underwater Object Detection for Robot Picking\[C\]//**2021 IEEE International Conference on Multimedia \& Expo Workshops (ICMEW)**. 2021. DOI:10.1109/ICMEW53276.2021.9455997. \[12\] WANG C Y, YEH I H, LIAO H Y M. YOLOv9: Learning What You Want to Learn Using Programmable Gradient Information\[EB/OL\]. (2024-02-21)\[2026-02-19\]. arXiv:2402.13616. DOI:10.48550/arXiv.2402.13616. \[13\] WANG A, CHEN H, LIU L, et al. YOLOv10: Real-Time End-to-End Object Detection\[EB/OL\]. (2024-05-23)\[2026-02-19\]. arXiv:2405.14458. DOI:10.48550/arXiv.2405.14458. \[14\] TIAN Y, YE Q, DOERMANN D. YOLOv12: Attention-Centric Real-Time Object Detectors\[EB/OL\]. (2025-02-18)\[2026-02-19\]. arXiv:2502.12524. DOI:10.48550/arXiv.2502.12524. \[15\] 赵永胜, 赵博伟, 朱元加, 等. MEAS-YOLO: 轻量化水下目标检测算法\[J\]. **电子测量技术**, 2024, 47(13): 183-190.

相关推荐
醉卧考场君莫笑2 小时前
规则和传统NLP之困难和挑战
人工智能·自然语言处理
X journey2 小时前
机器学习实战(19):如何做一个完整的项目
人工智能·机器学习
惊鸿一博3 小时前
自动驾驶的 BEV 特征(Bird’s Eye View Feature)
人工智能·机器学习·自动驾驶
碳基硅坊4 小时前
Mac Studio M3 Ultra 运行大模型实测:Qwen3.6 vs 6款主流模型工具调用对比
人工智能·qwen·qwen3.6
TeDi TIVE10 小时前
开源模型应用落地-工具使用篇-Spring AI-高阶用法(九)
人工智能·spring·开源
MY_TEUCK10 小时前
Sealos 平台部署实战指南:结合 Cursor 与版本发布流程
java·人工智能·学习·aigc
三毛的二哥10 小时前
BEV:典型BEV算法总结
人工智能·算法·计算机视觉·3d
j_xxx404_11 小时前
大语言模型 (LLM) 零基础入门:核心原理、训练机制与能力全解
人工智能·ai·transformer
飞哥数智坊11 小时前
全新 SOLO 在日常办公中的实际体验
人工智能·solo