基于 YOLOv11 的遥感图像目标检测系统(全套源码+数据集)

本项目基于 YOLOv11 与 DOTA v1.0 数据集,实现遥感/航拍图像中的多类别目标检测,并提供完整的训练流程与可视化检测系统。


一、项目概述

本项目面向航空影像、卫星遥感等场景,利用 YOLOv11 的 OBB(Oriented Bounding Box)有向边界框检测能力,对俯视角度下任意方向、多尺度的目标进行识别与定位。系统包含模型训练、可视化检测界面、历史记录管理、训练指标展示等功能模块。


二、数据集

2.1 数据集简介

DOTA v1.0(A Large-scale Dataset for Object Detection in Aerial Images)由武汉大学计算机视觉与遥感实验室发布,发表于 CVPR 2018,是遥感目标检测领域的权威基准数据集。

2.2 数据规模

项目 数量
图像总数 约 2,806 幅航拍图像
训练集 约 1,411 幅
验证集 约 458 幅
测试集 约 937 幅
标注实例 188,282 个目标实例
单幅图像尺寸 约 800×800 ~ 4000×4000 像素

2.3 目标类别(15 类)

编号 英文名称 中文名称
0 plane 飞机
1 ship 船舶
2 storage tank 储油罐
3 baseball diamond 棒球场
4 tennis court 网球场
5 basketball court 篮球场
6 ground track field 田径场
7 harbor 港口
8 bridge 桥梁
9 large vehicle 大型车辆
10 small vehicle 小型车辆
11 helicopter 直升机
12 roundabout 环形交叉路口
13 soccer ball field 足球场
14 swimming pool 游泳池

2.4 标注格式

采用 OBB(有向边界框) 标注,每个目标由 8 个归一化坐标表示四边形的 4 个顶点,适配 YOLO OBB 格式。


三、训练过程与参数

3.1 训练流程

  1. 准备 DOTA v1.0 数据集,按 images/trainimages/val 划分
  2. 将标注转换为 YOLO OBB 格式,存放于 labels/trainlabels/val
  3. 使用 train.py 加载预训练模型 yolo11n-obb.pt 进行训练
  4. 训练结果保存至 output/train/,包含权重、日志、可视化图表

3.2 主要训练参数

参数 说明
model yolo11n-obb.pt 预训练 OBB 模型
epochs 100 训练轮次
batch 16 批次大小
imgsz 640 输入图像尺寸
optimizer auto 优化器(自动选择)
lr0 0.01 初始学习率
iou 0.7 NMS IoU 阈值
mosaic 1.0 马赛克增强
amp true 混合精度训练

3.3 损失函数

  • box_loss:边界框回归损失
  • cls_loss:分类损失
  • dfl_loss:分布焦点损失(DFL)
  • angle_loss:角度损失(OBB 特有)

四、可视化图含义

4.1 训练曲线(losses.png)

  • Box Loss:边界框回归损失,训练/验证曲线
  • Cls Loss:分类损失
  • DFL Loss:分布焦点损失
  • Angle Loss:有向框角度损失

4.2 评估指标曲线(metrics.png)

  • Precision:精确率
  • Recall:召回率
  • mAP50:IoU 阈值为 0.5 时的平均精度
  • mAP50-95:IoU 从 0.5 到 0.95 的平均 mAP

4.3 系统内指标展示

  • 训练曲线:训练损失、验证损失、mAP、P/R 随 epoch 变化
  • 指标汇总:最终 mAP50、mAP50-95、精确率、召回率及柱状图


五、系统功能

5.1 图片识别

  • 支持 JPG、PNG、BMP、TIF 等格式
  • 单张图片目标检测,标注结果可视化
  • 统计摘要(总检测数、类别数、平均/最高置信度)
  • 详细数据表格、置信度分布直方图
  • 导出检测图片、CSV 结果

5.2 视频识别

  • 支持 MP4、AVI、MOV 等格式
  • 逐帧检测,可设置每 N 帧检测一次
  • 实时显示当前帧与累计统计
  • 导出当前帧

5.3 摄像头识别

  • 实时摄像头画面
  • 支持开启/关闭检测、截图保存
  • 会话累计统计,可保存到历史记录

5.4 检测历史

  • 按类型(图片/视频/摄像头)筛选
  • 关键词搜索
  • 查看记录详情、导出 CSV、清空历史

5.5 模型管理

  • 配置模型路径(默认 output/train/weights/best.pt
  • 验证并加载模型
  • 参数设置:置信度阈值、IoU 阈值、最大检测数

5.6 指标展示

  • 读取 output/train/results.csv
  • 训练曲线(损失、mAP、P/R)
  • 最终指标汇总


六、项目技术栈

类别 技术
深度学习 YOLOv11(Ultralytics)、PyTorch
目标检测 OBB 有向边界框检测
界面 PyQt6
数据可视化 Matplotlib
图像处理 OpenCV、NumPy
数据存储 SQLite、JSON

七、项目结构

c137/
├── main.py                 # 程序入口
├── train.py                # 模型训练入口
├── config/
│   └── dota_v1.yaml        # 数据集配置
├── output/
│   └── train/              # 训练输出
│       ├── weights/        # 模型权重(best.pt、last.pt)
│       ├── results.csv     # 训练指标
│       └── *.png           # 可视化图表
├── vis/
│   └── plot_metrics.py     # 训练指标可视化脚本
├── ui/
│   ├── login_window.py     # 登录/注册窗口
│   ├── main_window.py      # 主窗口
│   ├── utils/
│   │   ├── styles.py       # 样式表
│   │   ├── config.py       # 配置管理
│   │   ├── database.py     # 数据库
│   │   ├── detector.py     # 检测推理线程
│   │   └── widgets.py      # 通用组件
│   └── pages/
│       ├── image_page.py   # 图片识别
│       ├── video_page.py   # 视频识别
│       ├── camera_page.py  # 摄像头识别
│       ├── history_page.py # 检测历史
│       ├── model_page.py   # 模型管理
│       └── metrics_page.py  # 指标展示
└── DOTA v1/                # 数据集目录
    ├── images/
    │   ├── train/
    │   └── val/
    └── labels/
        ├── train/
        └── val/

八、启动说明

训练

python train.py

可视化检测系统

python main.py

默认账号:admin / admin123

本项目为个人原创,结构清晰,功能完整,适合计算机视觉方向课程设计、毕业设计和项目演示使用。有定制化需求可以评论或私信作者。

作者原创项目地址:michael-jay.pages.dev/projects.html

posted on 2026-08-03 16:21  Jay8059  阅读(0)  评论(0)    收藏  举报

导航