跳到主要内容
极客日志极客日志面向AI+效率的开发者社区
首页博客GitHub 精选镜像工具UI配色美学隐私政策关于联系
搜索内容 / 工具 / 仓库 / 镜像...⌘K搜索
注册
博客列表
PythonAI算法

基于 YOLO26 的无人机视角河道水面垃圾检测系统

综述由AI生成一种基于 YOLO26 深度学习框架的无人机视角河道水面垃圾检测系统。系统支持图片、视频及摄像头实时检测,可识别其他垃圾、塑料袋等五类目标。通过 PyQt5 构建可视化界面,提供参数设置与结果保存功能。文章详细阐述了模型训练流程、数据集准备(2000 张图片)、评估指标([email protected] 达 0.921)及推理代码,旨在实现河道垃圾的智能化监管与统计。

氛围发布于 2026/4/5更新于 2026/5/2124 浏览
基于 YOLO26 的无人机视角河道水面垃圾检测系统

基于 YOLO26 的无人机视角河道水面垃圾检测系统

研究背景

河道作为城市生态系统的'血管',其清洁程度直接关系到水环境质量、防洪安全及城市形象。然而,河道水面垃圾(特别是塑料袋、塑料瓶等难降解物)来源复杂、流动性强且分布广泛,传统的人工巡河或固定摄像头监测存在视野盲区大、响应滞后、统计困难等问题,难以满足精细化治理需求。基于 YOLO 深度学习框架开发的无人机视角河道水面垃圾检测系统,专为河道场景设计,能够实时精准识别并统计'其他垃圾、塑料袋、塑料瓶、塑料杯、塑料包装'五类常见漂浮物。该系统的应用将河道治理从'人海战术'升级为'智慧监管',不仅大幅提升了垃圾发现的时效性和准确率,还能通过量化数据指导清捞作业,对于构建长效治水机制、保护流域生态环境具有至关重要的意义。

应用场景

  • 常态化河道智能巡河:替代或辅助人工巡河,无人机搭载系统沿河道自动巡航,实时识别并记录各类水面垃圾位置与数量,生成'垃圾分布电子地图',让环卫部门一目了然。
  • 重点河段精准清捞调度:针对垃圾易堆积的桥墩下、回水湾或排污口附近,系统可精确统计各类垃圾(如塑料瓶、包装袋)的密度,指挥清捞船只定点作业,避免盲目打捞,提高作业效率。
  • 雨后及汛期应急排查:在暴雨或洪水过后,河道垃圾量激增,系统能快速评估受灾河段的污染负荷,区分大件垃圾(如塑料包装)与细小漂浮物,为应急清理资源的快速调配提供数据支撑。
  • 河长制考核与成效评估:利用系统自动统计的垃圾数量和类别数据,客观量化各河段的保洁状况,为'河长制'工作考核提供不可篡改的数字化依据,直观展示治理前后的对比成效。
  • 污染源追溯与分析:通过对不同类别垃圾(如特定品牌的塑料杯、包装)的长期监测数据分析,辅助管理部门推断垃圾主要来源(如沿岸餐饮、居民区或上游输入),从而制定针对性的源头管控措施。
  • 饮用水源地及敏感区守护:在取水口上游或生态红线区域内进行高频次监测,一旦发现塑料垃圾入侵立即报警并定位,确保供水安全和生态敏感区的零污染。

主要工作内容

本文的主要内容包括以下几个方面:

  1. 搜集与整理数据集:搜集整理实际场景中无人机视角河道水面垃圾的相关数据图片,并进行相应的数据处理,为模型训练提供训练数据集;
  2. 训练模型:基于整理的数据集,根据最前沿的 YOLO26 目标检测技术训练目标检测模型,实现对需要检测的对象进行有效检测的功能;
  3. 模型性能评估:对训练出的模型在验证集上进行了充分的结果评估和对比分析,主要目的是为了揭示模型在关键指标(如 Precision、Recall、mAP50 和 mAP50-95 等指标)上的表现情况。
  4. 可视化系统制作:基于训练出的目标检测模型,搭配 PyQt5 制作的 UI 界面,用 Python 开发了一款界面简洁的软件系统,可支持图片、视频以及摄像头检测,同时可以将图片或者视频检测结果进行保存。其目的是为检测系统提供一个用户友好的操作平台,使用户能够便捷、高效地进行检测任务。

软件初始界面如下图所示:

软件初始界面

检测结果界面如下:

检测结果界面

一、软件核心功能介绍及效果演示

软件主要功能

  1. 可用于实际场景中的河道水面垃圾检测,分 5 个检测类别:['其他垃圾','塑料袋','塑料瓶','塑料杯','塑料包装'];
  2. 支持图片、视频及摄像头进行检测,同时支持图片的批量检测;
  • 界面可实时显示目标位置、目标总数、置信度、用时等信息;
  • 可显示画面中每个类别垃圾数量;
  • 支持图片或视频的检测结果保存;
  • 支持将图片的检测结果保存为 csv 文件;
  • 界面参数设置说明

    界面参数设置

    • 置信度阈值:也就是目标检测时的 conf 参数,只有检测出的目标框置信度大于该值,结果才会显示;
    • 交并比阈值:也就是目标检测时的 iou 参数,对检测框重叠比例 iou 大于该阈值的目标框进行过滤【也就是说假如两检测框 iou 大于该值的话,会过滤掉其中一个,该值越小,重叠框会越少】;

    检测结果说明

    检测结果说明

    • 显示标签名称与置信度:表示是否在检测图片上标签名称与置信度,显示默认勾选,如果不勾选则不会在检测图片上显示标签名称与置信度;
    • 总目标数:表示画面中检测出的目标数目;条形图对应每个类别的数量;
    • 目标选择:可选择单个目标进行位置信息、置信度查看。
    • 目标位置:表示所选择目标的检测框,左上角与右下角的坐标位置。默认显示的是置信度最大的一个目标信息;

    主要功能说明

    功能视频演示见文章开头,以下是简要的操作描述。

    (1)图片检测说明

    点击打开图片按钮,选择需要检测的图片,或者点击打开文件夹按钮,选择需要批量检测图片所在的文件夹,操作演示如下: 点击目标下拉框后,可以选定指定目标的结果信息进行显示。 点击保存按钮,会对检测结果进行保存,存储路径为:save_data 目录下,同时会将图片检测信息保存 csv 文件。 注:1.右侧目标位置默认显示置信度最大一个目标位置,可用下拉框进行目标切换。所有检测结果均在左下方表格中显示。

    (2)视频检测说明

    点击视频按钮,打开选择需要检测的视频,就会自动显示检测结果,再次点击可以关闭视频。 点击保存按钮,会对视频检测结果进行保存,存储路径为:save_data 目录下。

    (3)摄像头检测说明

    点击打开摄像头按钮,可以打开摄像头,可以实时进行检测,再次点击,可关闭摄像头。

    (4)保存图片与视频检测说明

    点击保存按钮后,会将当前选择的图片【含批量图片】或者视频的检测结果进行保存,对于图片图片检测还会保存检测结果为 csv 文件,方便进行查看与后续使用。检测的图片与视频结果会存储在 save_data 目录下。 【注:暂不支持视频文件的检测结果保存为 csv 文件格式。】

    保存的检测结果文件如下:

    保存文件

    图片文件保存的 csv 文件内容如下,包括图片路径、目标在图片中的编号、目标类别、置信度、目标坐标位置。 注:其中坐标位置是代表检测框的左上角与右下角两个点的 x、y 坐标。

    CSV 内容

    二、模型的训练、评估与推理

    1.YOLO26 介绍

    本项目采用的是最新的 YOLO26 模型。YOLO26 是 Ultralytics 2026 年 1 月推出的新一代计算机视觉模型,主打边缘优先、高效部署。它采用端到端免 NMS 架构,移除 DFL 模块,CPU 推理速度较前代提升 43%;搭配 MuSGD 优化器与 ProgLoss+STAL 损失策略,强化小目标检测能力,支持检测、分割、姿势估计等多任务,可无缝适配树莓派、嵌入式设备等终端,广泛应用于智慧农业、安防监控等领域。

    YOLO 各版本性能对比:

    YOLO 对比

    YOLO26 创新点

    YOLO26 的性能飞跃源于四大核心技术创新,从模型架构到训练机制全面优化:

    1. 移除 DFL 模块,简化预测流程

    早期 YOLO 模型依赖分布焦点损失(DFL)提升边界框精度,但这一模块增加了部署复杂度,且存在固定回归限制。YOLO26 彻底移除 DFL,不仅简化了边界框预测逻辑,提升了硬件兼容性,还解决了超大目标检测的可靠性问题,让模型在边缘设备上的导出与运行更顺畅。

    2. 端到端无 NMS 推理,降低 latency

    传统目标检测需通过非极大值抑制(NMS)进行后处理,过滤重叠预测框——这一步骤会增加延迟、提升部署难度。YOLO26 采用原生端到端架构,直接输出最终预测结果,内部自动处理重复预测,彻底省去 NMS 环节,大幅降低推理延迟与集成风险,完美适配实时边缘场景。

    3. ProgLoss+STAL,提升检测精度
    • 渐进式损失平衡(ProgLoss):让模型训练过程更稳定,收敛更平滑,减少训练波动
    • 小目标感知标签分配(STAL):针对小目标、低可见度目标优化学习机制,解决边缘场景中'难检测'问题 两项技术结合,让 YOLO26 在复杂场景中仍能保持高可靠检测,尤其适用于物联网、机器人、航拍等小目标密集场景。
    4. MuSGD 优化器,强化训练稳定性

    YOLO26 采用全新混合优化器 MuSGD,融合传统随机梯度下降(SGD)的强泛化能力与大语言模型(LLM)训练中的先进优化思路。该优化器灵感源自 Moonshot AI 的 Kimi K2,能让模型更快达到高性能水平,同时降低训练不稳定性,尤其在大型复杂数据集训练中表现突出。

    数据集准备与训练

    本文主要基于 YOLO26n 模型进行模型训练,训练完成后对模型在验证集上的表现进行全面的性能评估及对比分析。模型训练和评估流程基本一致,包括:数据集准备、模型训练、模型评估。

    1. 数据集准备与训练

    通过网络上搜集关于实际场景中无人机视角河道水面垃圾的相关图片,并使用 Labelimg 标注工具对每张图片进行标注,分 5 个检测类别:['其他垃圾','塑料袋','塑料瓶','塑料杯','塑料包装']。

    最终数据集一共包含 2000 张图片,其中训练集包含 1600 张图片,验证集包含 200 张图片,测试集包含 200 张图片。 部分图像及标注如下图所示:

    数据集示例 1

    数据集示例 2

    数据集示例 3

    数据集各类别数目分布情况如下:

    类别分布

    2. 模型训练

    准备好数据集后,将图片数据以如下格式放置在项目目录中。在项目目录中新建 datasets 目录,同时将检测的图片分为训练集与验证集放入 Data 目录下。

    目录结构

    同时我们需要新建一个 data.yaml 文件,用于存储训练数据的路径及模型需要进行检测的类别。在进行模型训练时,会读取该文件的信息,用于进行模型的训练与验证。data.yaml 的具体内容如下:

    train: E:\MyCVProgram\FloatPlasticWasteDetection_26\datasets/train/images
    val: E:\MyCVProgram\FloatPlasticWasteDetection_26\datasets/valid/images
    test: E:\MyCVProgram\FloatPlasticWasteDetection_26\datasets/test/images
    nc:5
    names:['other_plastic','plastic_bag','plastic_bottle','plastic_cup','plastic_package']
    

    注:train 与 val 后面表示需要训练图片的路径,建议直接写自己文件的绝对路径。 数据准备完成后,通过调用 train.py 文件进行模型训练,epochs 参数用于调整训练的轮数,batch 参数用于调整训练的批次大小【根据内存大小调整,最小为 1】,optimizer 设定的优化器为 SGD,训练代码如下:

    # coding: utf-8
    from ultralytics import YOLO
    import matplotlib
    matplotlib.use('TkAgg')
    
    # 模型配置文件
    model_yaml_path = "ultralytics/cfg/models/26/yolo26.yaml"
    # 数据集配置文件
    data_yaml_path = r'datasets/data.yaml'
    # 预训练模型
    pre_model_name = 'yolo26n.pt'
    
    if __name__ == '__main__':
        # 加载预训练模型
        model = YOLO(model_yaml_path).load(pre_model_name)
        # 训练模型
        results = model.train(data=data_yaml_path, epochs=150, batch=32, name='train_26')
    

    模型常用训练超参数参数说明: YOLO26 模型的训练设置包括训练过程中使用的各种超参数和配置。这些设置会影响模型的性能、速度和准确性。关键的训练设置包括批量大小、学习率、动量和权重衰减。此外,优化器、损失函数和训练数据集组成的选择也会影响训练过程。对这些设置进行仔细的调整和实验对于优化性能至关重要。 以下是一些常用的模型训练参数和说明:

    参数名默认值说明
    modelNone指定用于训练的模型文件。接受指向 .pt 预训练模型或 .yaml 配置文件。对于定义模型结构或初始化权重至关重要。
    dataNone数据集配置文件的路径(例如 coco8.yaml).该文件包含特定于数据集的参数,包括训练数据和验证数据的路径、类名和类数。
    epochs100训练总轮数。每个 epoch 代表对整个数据集进行一次完整的训练。调整该值会影响训练时间和模型性能。
    patience100在验证指标没有改善的情况下,提前停止训练所需的 epoch 数。当性能趋于平稳时停止训练,有助于防止过度拟合。
    batch16批量大小,有三种模式:设置为整数 (例如,' Batch =16 '),60% GPU 内存利用率的自动模式 (' Batch =-1 '),或指定利用率分数的自动模式 (' Batch =0.70 ')。
    imgsz640用于训练的目标图像尺寸。所有图像在输入模型前都会被调整到这一尺寸。影响模型精度和计算复杂度。
    deviceNone指定用于训练的计算设备:单个 GPU (device=0)、多个 GPU (device=0,1)、CPU (device=cpu),或苹果芯片的 MPS (device=mps).
    workers8加载数据的工作线程数(每 RANK 多 GPU 训练)。影响数据预处理和输入模型的速度,尤其适用于多 GPU 设置。
    nameNone训练运行的名称。用于在项目文件夹内创建一个子目录,用于存储训练日志和输出结果。
    pretrainedTrue决定是否从预处理模型开始训练。可以是布尔值,也可以是加载权重的特定模型的字符串路径。提高训练效率和模型性能。
    optimizer'auto'为训练模型选择优化器。选项包括 SGD, Adam, AdamW, NAdam, RAdam, RMSProp 等,或 auto 用于根据模型配置进行自动选择。影响收敛速度和稳定性
    lr00.01初始学习率(即 SGD=1E-2, Adam=1E-3) .调整这个值对优化过程至关重要,会影响模型权重的更新速度。
    lrf0.01最终学习率占初始学习率的百分比 = (lr0 * lrf),与调度程序结合使用,随着时间的推移调整学习率。

    3. 训练结果评估

    在深度学习中,我们通常用损失函数下降的曲线来观察模型训练的情况。YOLOv11 在训练时主要包含三个方面的损失:定位损失 (box_loss)、分类损失 (cls_loss) 和动态特征损失(dfl_loss),在训练结束后,可以在 runs/目录下找到训练过程及结果文件,如下所示:

    训练结果

    各损失函数作用说明:

    • 定位损失 box_loss:预测框与标定框之间的误差(GIoU),越小定位得越准;
    • 分类损失 cls_loss:计算锚框与对应的标定分类是否正确,越小分类得越准;
    • 动态特征损失(dfl_loss):DFLLoss 是一种用于回归预测框与目标框之间距离的损失函数。在计算损失时,目标框需要缩放到特征图尺度,即除以相应的 stride,并与预测的边界框计算 Ciou Loss,同时与预测的 anchors 中心点到各边的距离计算回归 DFLLoss。

    本文训练结果如下:

    训练曲线

    我们通常用 PR 曲线来体现精确率和召回率的关系,本文训练结果的 PR 曲线如下。mAP 表示 Precision 和 Recall 作为两轴作图后围成的面积,m 表示平均,@后面的数表示判定 iou 为正负样本的阈值。[email protected]:表示阈值大于 0.5 的平均 mAP,可以看到本文模型目标检测的 [email protected] 值为 0.921,结果还是十分不错的。

    PR 曲线

    4. 使用模型进行推理

    模型训练完成后,我们可以得到一个最佳的训练结果模型 best.pt 文件,在 runs/train/weights 目录下。我们可以使用该文件进行后续的推理检测。 图片检测代码如下:

    # coding: utf-8
    from ultralytics import YOLO
    import cv2
    
    # 所需加载的模型目录
    path = 'models/best.pt'
    # 需要检测的图片地址
    img_path = "TestFiles/Frame-338_png.rf.445c204e9a2b75cccd696217734259c6.jpg"
    
    # 加载预训练模型
    model = YOLO(path, task='detect')
    # 检测图片
    results = model(img_path)
    print(results)
    res = results[0].plot()
    res = cv2.resize(res,dsize=None,fx=0.5,fy=0.5,interpolation=cv2.INTER_LINEAR)
    cv2.imshow("Detection Res", res)
    cv2.waitKey(0)
    

    执行上述代码后,会将执行的结果直接标注在图片上,结果如下:

    推理结果

    更多检测结果示例如下:

    推理示例 1

    推理示例 2

    四、可视化系统制作

    基于上述训练出的目标检测模型,为了给此检测系统提供一个用户友好的操作平台,使用户能够便捷、高效地进行检测任务。博主基于 PyQt5 开发了一个可视化的系统界面,通过图形用户界面(GUI),用户可以轻松地在图片、视频和摄像头实时检测之间切换,无需掌握复杂的编程技能即可操作系统。【系统详细展示见第一部分内容】

    Pyqt5 详细介绍

    关于 PyQt5 的详细介绍可以参考之前的博客文章:《Python 中的 PyQt5 详细介绍:基本机构、部件、布局管理、信号与槽、跨平台》。

    系统制作

    博主基于 PyQt5 框架开发了此款无人机视角河道水面垃圾检测系统,即文中第一部分的演示内容,能够很好的支持图片、视频及摄像头进行检测,同时支持检测结果的保存。

    通过图形用户界面(GUI),用户可以轻松地在图片、视频和摄像头实时检测之间切换,无需掌握复杂的编程技能即可操作系统。这不仅提升了系统的可用性和用户体验,还使得检测过程更加直观透明,便于结果的实时观察和分析。此外,GUI 还可以集成其他功能,如检测结果的保存与导出、检测参数的调整,从而为用户提供一个全面、综合的检测工作环境,促进智能检测技术的广泛应用。

    系统界面

    关于该系统涉及到的完整源码、UI 界面代码、数据集、训练代码、训练好的模型、测试图片视频等相关文件,均已打包上传,感兴趣的小伙伴可以通过下载链接自行获取。

    注意:该代码基于 Python3.9 开发,运行界面的主程序为 MainProgram.py,其他测试脚本说明见上图。为确保程序顺利运行,请按照程序运行说明文档 txt 配置软件运行所需环境。

    目录

    1. 基于 YOLO26 的无人机视角河道水面垃圾检测系统
    2. 研究背景
    3. 应用场景
    4. 主要工作内容
    5. 一、软件核心功能介绍及效果演示
    6. 软件主要功能
    7. 界面参数设置说明
    8. 检测结果说明
    9. 主要功能说明
    10. (1)图片检测说明
    11. (2)视频检测说明
    12. (3)摄像头检测说明
    13. (4)保存图片与视频检测说明
    14. 二、模型的训练、评估与推理
    15. 1.YOLO26 介绍
    16. YOLO26 创新点
    17. 1. 移除 DFL 模块,简化预测流程
    18. 2. 端到端无 NMS 推理,降低 latency
    19. 3. ProgLoss+STAL,提升检测精度
    20. 4. MuSGD 优化器,强化训练稳定性
    21. 数据集准备与训练
    22. 1. 数据集准备与训练
    23. 2. 模型训练
    24. coding: utf-8
    25. 模型配置文件
    26. 数据集配置文件
    27. 预训练模型
    28. 3. 训练结果评估
    29. 4. 使用模型进行推理
    30. coding: utf-8
    31. 所需加载的模型目录
    32. 需要检测的图片地址
    33. 加载预训练模型
    34. 检测图片
    35. 四、可视化系统制作
    36. Pyqt5 详细介绍
    37. 系统制作
    • 💰 8折买阿里云服务器限时8折了解详情
    • Magick API 一键接入全球大模型注册送1000万token查看
    • 🤖 一键搭建Deepseek满血版了解详情
    • 一键打造专属AI 智能体了解详情
    极客日志微信公众号二维码

    微信扫一扫,关注极客日志

    微信公众号「极客日志V2」,在微信中扫描左侧二维码关注。展示文案:极客日志V2 zeeklog

    更多推荐文章

    查看全部
    • Windows 下 llama.cpp 编译与 Qwen 模型本地部署实战
    • Python 基础实战:编写一个猜数字游戏
    • AIGC 在艺术创作中的机遇
    • 后端视角下的 HTML 前端基础入门
    • GitHub Copilot 自定义指令配置指南:规范与协作
    • Copilot 一键生成中文 Git Commit Message
    • 大疆无人机开发实战指南:MSDK/PSDK/上云 API 集成
    • 哈希表核心原理与 C++ 实战应用
    • Windows 系统下 Neo4j 图数据库与 JDK 安装配置指南
    • Python 基础教程:for 循环与 while 循环详解
    • Altium Designer 常用快捷键速查指南
    • Ansible 批量部署 Nginx 实战指南
    • 基于百度天气 API 的空气质量 WebGIS 可视化实践
    • VSCode 远程连接时 Copilot Chat 图标不显示修复方案
    • 基于算法的 LLM 代码翻译新范式:解决意图丢失问题
    • Win10 彻底关闭 Microsoft 365 Copilot 弹窗的 6 种方案
    • MATLAB 实现基于天牛须搜索算法(BAS)的无人机三维路径规划
    • C++ STL string 类核心用法与接口详解
    • 基于Python的EPICS通讯语音报警系统开发
    • Nunchaku FLUX.1 CustomV3:AI 绘画快速上手指南

    相关免费在线工具

    • 加密/解密文本

      使用加密算法(如AES、TripleDES、Rabbit或RC4)加密和解密文本明文。 在线工具,加密/解密文本在线工具,online

    • RSA密钥对生成器

      生成新的随机RSA私钥和公钥pem证书。 在线工具,RSA密钥对生成器在线工具,online

    • Mermaid 预览与可视化编辑

      基于 Mermaid.js 实时预览流程图、时序图等图表,支持源码编辑与即时渲染。 在线工具,Mermaid 预览与可视化编辑在线工具,online

    • 随机西班牙地址生成器

      随机生成西班牙地址(支持马德里、加泰罗尼亚、安达卢西亚、瓦伦西亚筛选),支持数量快捷选择、显示全部与下载。 在线工具,随机西班牙地址生成器在线工具,online

    • Gemini 图片去水印

      基于开源反向 Alpha 混合算法去除 Gemini/Nano Banana 图片水印,支持批量处理与下载。 在线工具,Gemini 图片去水印在线工具,online

    • curl 转代码

      解析常见 curl 参数并生成 fetch、axios、PHP curl 或 Python requests 示例代码。 在线工具,curl 转代码在线工具,online