基于 YOLOv11 的无人机航拍小目标检测系统

本项目是一套基于 YOLOv11 的无人机航拍小目标检测系统,以 VisDrone 航拍目标检测数据集 为数据基础,面向航拍图像中的行人、车辆等十类目标完成模型训练、评估与系统应用。系统提供 Web 端和 PyQt6 桌面端,支持图片、视频和摄像头输入,并集成结果查看、历史查询、模型管理与训练指标展示,适用于项目设计、课程实践和答辩展示。

一、项目简介

面向无人机航拍中目标密集、尺度较小和遮挡较多的图像,完成十类目标的位置预测与类别识别。图片检测、连续画面处理、目标定位、历史回查和训练实验结果在同一套系统中关联展示。

组成 项目内容
数据集 VisDrone 航拍目标检测数据集
模型 YOLO11s
识别任务 航拍图像中的行人、车辆等十类目标
实验资料 训练参数、日志、权重与已有图表
应用端 桌面界面与浏览器操作界面

二、系统功能设计

2.1 登录与功能入口

系统提供登录与注册,登录后通过左侧栏进入概览、图片、视频、摄像头、历史、模型和指标页面。Web 账号及历史独立保存,便于分别管理不同使用者的检测任务。

2.2 图片检测与目标定位

上传航拍图像后,模型输出目标框、类别、置信度和类别统计。画面支持缩放、平移与适应窗口;点击目标明细可以定位到对应区域,结合类别筛选检查密集目标。画面缩放改变查看比例,调整推理尺寸后需要重新检测。

2.3 类别筛选与明细导出

筛选某一类目标后,结果图与目标列表联动,方便检查小汽车、行人等目标的分布。检测图片和 CSV 明细可分别导出,记录目标位置与预测分数。

2.4 视频与摄像头检测

视频按设定间隔采样推理,展示进度并生成标注视频和统计信息,任务支持取消。摄像头提供设备控制、暂停、截图与会话归档。本文视频配图使用数据集图片序列,跨帧累计检出次数不等于去重后的目标数量。

2.5 模型与参数管理

模型页集中展示项目的 VisDrone 十类权重,支持兼容权重管理以及置信度、IoU、最大检测数量等参数设置。模型类别须与十类标签对应,检测结果随当前所选模型和参数生成。

2.6 历史查询与指标展示

历史页支持筛选、详情查看和结果导出,方便回查输入、检测参数及输出。指标页读取真实 CSV,区分峰值、对应轮次与末轮结果,同时展示已有训练图。

三、技术栈

类别 技术及用途
编程语言 Python、JavaScript
深度学习框架 PyTorch
模型训练与推理 Ultralytics YOLOv11
桌面界面 PyQt6
Web 服务 FastAPI
Web 前端 HTML、CSS、JavaScript
图像与视频处理 OpenCV、NumPy
训练日志与离线绘图 Matplotlib;CSV 训练记录
结果保存 Web 独立目录中的账号、任务、历史与结果文件

四、项目结构

项目将训练代码、界面、模型产物和 Web 服务分别组织,主要目录如下:

text 复制代码
c200/
├─ detection_app/
├─ generate_metrics_charts.py
├─ runs/
├─ train_yolo11.py
├─ 项目说明.md
└─ web/
   ├─ api/、core/、services/  # 服务接口与推理任务
   ├─ static/              # 页面与交互
   └─ data/                  # Web 独立运行数据

本文对应的训练日志位于 runs/detect/runs/train/yolo11_visdrone/results.csv。 数据集按实际配置定位;浏览器端的运行结果独立保存在 Web 数据目录。

五、数据集说明

5.1 数据集与识别任务

项目使用 VisDrone 航拍目标检测数据集,面向航拍图像中的行人、车辆等十类目标。每个目标由类别与边界框共同描述,模型输出位置及对应预测分数。

5.2 数据规模与划分

以下数量按当前本机配套数据目录统计;所列划分对应本项目的数据组织。

数据划分 图像数量
训练集 6,471
验证集 420
测试集 1,610
合计 8,501

5.3 类别与标注格式

类别编号 类别名称 中文含义
0 pedestrian 行人
1 people 人群
2 bicycle 自行车
3 car 小汽车
4 van 面包车
5 truck 卡车
6 tricycle 三轮车
7 awning-tricycle 带篷三轮车
8 bus 公交车
9 motor 摩托车

YOLO 标注按每行一个目标组织:

text 复制代码
class_id center_x center_y width height

中心点坐标与宽高采用相对图像尺寸的归一化值,图像与 TXT 标注按文件名对应。

六、模型训练过程

6.1 训练流程

训练代码由 train_yolo11.py 组织,先读取图像、类别与划分,再加载预训练模型进行训练,并保留逐轮日志与已有权重。

  1. 按当前数据目录读取图像及对应标签。
  2. 将输入调整为实验配置的尺寸,并应用训练预处理。
  3. 加载基础模型,在对应类别上进行训练。
  4. 在验证阶段计算指标并保存日志及权重。
  5. 使用已有训练图表分析结果,并在系统中加载权重开展推理。

6.2 模型与训练参数

参数 本次记录
基础模型 YOLO11s
配置轮数 300
日志实际轮数 300
输入尺寸 640 × 640
Batch Size 16
优化器配置 SGD
预热轮数 3.0
DataLoader Workers 4

日志最后一行累计耗时为 27,602.60 秒,约 460.0 分钟。 数据增强与学习率调度以本次参数记录和逐轮 CSV 为准;配置值与实际日志中的学习率分别读取。

6.3 训练产物

  • args.yaml:本次实验参数。
  • results.csv:每一轮损失、检测指标和学习率。
  • weights/:已保存的模型权重。
  • 训练图表:原始产物中的曲线、分布或评估图,见第八节。

七、训练结果与核心指标

7.1 最后一轮结果

以下为当前实验 CSV 的第 300 轮验证结果:

指标 日志数值 百分比
Precision 0.59169 59.169%
Recall 0.4258 42.580%
mAP@0.5 0.42992 42.992%
mAP@0.5:0.95 0.25129 25.129%

7.2 各指标最高值

指标 最高值 对应轮次
Precision 0.59169 第 300 轮
Recall 0.4258 第 300 轮
mAP@0.5 0.42992 第 300 轮
mAP@0.5:0.95 0.25129 第 300 轮

单项峰值可能出现在不同轮次;末轮表用于查看同一轮完整结果,峰值表用于查看各指标在本次训练中的最高记录。

7.3 结果分析

航拍图像中的密集小目标使召回与精细定位更具挑战。本次结果中 Precision 高于 Recall,可以围绕输入分辨率、目标尺度与遮挡样本继续开展对照实验。

八、可视化图表说明

以下图片直接采用源码目录已有的训练产物,保留原始图表内容与数值。

8.1 训练与验证损失

展示图中对应的损失项随训练轮次的变化,结合训练与验证结果观察拟合情况。

8.2 检测指标变化

展示对应检测指标随训练轮次的变化,数值与本文列出的原始 CSV 结果按同一实验读取。

8.3 学习率调度

展示实际日志中的学习率变化,辅助查看预热与衰减过程。

本项目为个人原创项目,配套源码、模型权重、训练资料和项目说明,可用于毕业设计、课程实践、简历展示及个人学习。有项目成品或定制需求,可以通过主页联系作者。

相关推荐
hflmwl82 小时前
ImageMagick图像魔法跨平台图像处理软件下载
图像处理·人工智能·imagemagick·imagemagick图像魔法·imagemagick图像处理·imagemagick软件下载
jay神2 小时前
基于 YOLOv8 的手势识别系统
人工智能·深度学习·yolo·机器学习·计算机视觉·目标跟踪·课程设计
和芯星通unicore2 小时前
卫星信号消失的地方,定位如何继续?——解密和芯星通DR 航位推算算法
人工智能·算法·gnss·智能驾驶gnss模块
北塔软件2 小时前
从根因分析到协同执行,如何让AI运维真正落地?
运维·人工智能
mit6.8242 小时前
Sonnet 5.5 多了between_tools
人工智能
蜡笔羊驼2 小时前
ModuleNotFoundError: No module named ‘torchvision.transforms.functional_tensor‘
linux·人工智能·python
李航19832 小时前
DeepDraw 网页版
人工智能·python·计算机视觉·ai·ai编程
三掌柜6662 小时前
06|鸿蒙7·端侧AI实战:提示注入,守住指令边界
人工智能·华为·harmonyos
zzlyx992 小时前
无人机反制侦测-导航诱骗技术
无人机