作者:互联网 时间: 2026-07-20 07:20:09
本项目是一个围绕 YOLOv8 构建的无人机识别与检测系统,涵盖了深度学习项目从数据集组织、模型训练、参数调优、结果评估,到桌面端系统集成与功能开发的完整流程。项目以 Anti-UAV 单类别目标检测数据集为基础,完成了无人机目标检测模型训练,并在 PyQt6 图形界面中实现了图片识别、视频识别、摄像头实时识别、模型管理、训练指标展示与检测历史管理等功能。
本项目面向低空目标检测场景,针对无人机目标尺度小、背景复杂、分辨率差异大的特点,采用 Ultralytics YOLOv8 框架完成模型训练与部署。整体开发过程主要包括:
项目既保留了深度学习训练部分,也实现了一个可直接用于演示和课程设计展示的图形化检测系统。
项目主要使用如下技术栈完成开发:
类别 | 技术 |
深度学习框架 |
|
桌面界面 |
|
图像/视频处理 |
|
数据处理 |
|
训练结果可视化 |
|
配置管理 |
|
数据存储 |
|
项目核心结构如下:
c162/ ├─ app.py # 系统主入口 ├─ train.py # 模型训练入口 ├─ visualize.py # 训练结果可视化入口 ├─ Anti-UAV/ # 无人机检测数据集 │ ├─ data.yaml │ ├─ images/ │ │ ├─ train/ │ │ ├─ val/ │ │ └─ test/ │ └─ labels/ │ ├─ train/ │ ├─ val/ │ └─ test/ ├─ train/ │ ├─ config.py # 训练参数配置 │ └─ trainer.py# 训练流程封装 ├─ train_result/ │ └─ exp/ │ ├─ args.yaml# 实际训练参数 │ ├─ results.csv # 每轮训练指标 │ ├─ weights/ # best.pt / last.pt │ └─ charts/# 可视化图表 ├─ ui/ │ ├─ login_window.py # 登录/注册窗口 │ ├─ main_window.py # 主界面 │ ├─ pages/ # 功能页面 │ │ ├─ image_page.py # 图片识别 │ │ ├─ video_page.py # 视频识别 │ │ ├─ camera_page.py # 摄像头识别 │ │ ├─ history_page.py# 历史记录 │ │ ├─ model_page.py # 模型管理 │ │ └─ metrics_page.py# 指标展示 │ └─ utils/ │ ├─ detector.py # YOLOv8 推理封装 │ ├─ history_manager.py # 历史记录管理 │ └─ user_manager.py# 用户管理 ├─ visualize/ │ ├─ config.py # 绘图配置 │ └─ plotter.py# 图表绘制逻辑 └─ data/ ├─ users.json# 用户数据 └─ history.json# 检测历史
整体结构上,项目将训练、可视化、界面、工具模块分层组织,避免将深度学习流程与系统功能堆叠在单一文件中,便于维护和扩展。
本项目使用的数据集为 Anti-UAV,位于 Anti-UAV/ 目录下,采用标准 YOLO 格式组织。数据集仅包含 1 个检测类别:
UAV任务类型为:
数据集采用如下结构:
images/train:训练集图像images/val:验证集图像images/test:测试集图像labels/train:训练集标注labels/val:验证集标注labels/test:测试集标注图像文件格式为:
JPG标注文件格式为:
TXT标注采用 YOLO 标准格式:
class_id center_x center_y width height
其中坐标和宽高均已归一化到 [0, 1] 区间。
根据当前项目中的数据统计结果,数据集规模如下:
数据划分 | 图像数量 | 标注文件数量 | 标注框总数 | 多目标图像数 |
Train | 5200 | 5197 | 5243 | 29 |
Val | 2600 | 2600 | 2621 | 13 |
Test | 2200 | 2200 | 2245 | 33 |
Total | 10000 | 9997 | 10109 | 75 |
划分比例约为:
52%26%22%
从数据分布和抽样场景来看,图像主要覆盖以下无人机检测场景:
从检测任务角度看,这批图片具备明显的小目标检测特征,模型需要同时兼顾:
数据划分 | 宽度范围 | 高度范围 | 主要分辨率 |
Train | 240-5616 | 160-3744 | 1920x1080、1280x720 |
Val | 320-4288 | 206-2848 | 1920x1080、1280x720 |
Test | 640-1920 | 360-1080 | 1920x1080、1280x720 |
可以看出:
1920x1080 是最常见分辨率1280x720 也是高频分辨率数据划分 | 平均宽度 | 平均高度 | 平均面积 |
Train | 0.055533 | 0.053274 | 0.012530 |
Val | 0.056590 | 0.054235 | 0.013279 |
Test | 0.077475 | 0.072665 | 0.013635 |
这说明绝大多数目标框在整幅图像中占比很小,数据集整体属于典型的小目标检测任务。
项目在数据处理阶段主要体现了以下深度学习开发流程:
YOLO 数据集格式完成图片与标签分目录存放。data.yaml 定义训练集、验证集、测试集路径、类别数与类别名。train/trainer.py 动态修正 data.yaml 的 path 字段,避免因环境变化或绝对路径不同导致训练失败。当前项目中已发现如下需要注意的数据质量问题:
3 张图像缺失标注文件:00579.jpg、00639.jpg、00724.jpg00991.txt 存在 1 条高度为 0 的无效标注框这些问题不影响项目说明,但在正式训练或论文实验中建议先做进一步清洗。
项目的训练流程由 train.py 和 train/trainer.py 组织完成,整体过程如下:
train/config.py 中的训练参数。Anti-UAV/data.yaml。yaml,解决跨环境路径问题。yolov8n.pt。YOLO.train() 开始训练。train_result/exp/。results.csv。本项目训练使用的基础模型为:
YOLOv8n选择 YOLOv8n 的原因是模型轻量、推理速度快,适合课程项目中的训练验证与界面集成,同时能在无人机单类别检测任务上取得较好的平衡效果。
根据 train/config.py 与 train_result/exp/args.yaml,本项目核心训练参数如下:
参数 | 数值 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
此外,训练中还启用了部分默认增强配置,如:
围绕小目标无人机检测,本项目的训练调优思路主要体现在以下几点:
640 输入尺寸兼顾训练成本与检测精度Mosaic、缩放、翻转等增强提升泛化能力patience=50 控制训练稳定性,防止无效长时间训练如果后续继续优化,可重点围绕以下方向深入:
YOLOv8s、YOLOv8m根据 train_result/exp/results.csv,本次训练共完成 100 个 epoch,总训练时长约为:
4662.13 s,约 77.7 min指标 | 最终值 |
Precision |
|
Recall |
|
| |
[email protected]:0.95 |
|
Train Box Loss |
|
Val Box Loss |
|
指标 | 最优值 |
Precision |
|
Recall |
|
| |
[email protected]:0.95 |
|
Precision 较高,说明模型输出的检测框中,误检相对较少。Recall 相对低于 Precision,说明在部分复杂场景或极小目标条件下仍存在漏检空间。[email protected] 达到较高水平,说明模型对无人机目标的整体检测效果较好。[email protected]:0.95 相比 [email protected] 有明显下降,说明在更严格 IoU 标准下,定位精度仍有进一步优化空间。总体来看,该模型已经具备较好的工程演示能力和课程设计展示价值。
项目在 train_result/exp/charts/ 中生成了 5 类可视化图,用于分析模型训练过程。
01_loss_curves.png损失曲线图展示了训练集与验证集上的三类核心损失:
Box Loss:边界框回归损失Class Loss:分类损失DFL Loss:分布焦点损失图的作用:
02_metric_curves.png指标曲线图展示了:
PrecisionRecall[email protected][email protected]:0.95图的作用:
03_pr_trajectory.png该图展示了训练过程中 Precision 与 Recall 的变化轨迹。
图的作用:
04_lr_schedule.png该图展示训练期间学习率的衰减过程。
图的作用:
05_dashboard.png该图为综合总览仪表盘,整合了:
图的作用:
本项目不仅完成了模型训练,也开发了配套的桌面端无人机识别系统。
系统提供登录/注册界面,支持:
图片识别页面支持:
视频识别页面支持:
摄像头识别页面支持:
模型管理页面支持:
.pt 权重文件train_result/exp/weights/best.ptconfioumax_det
指标展示页面支持:
train_result/exp/results.csv
历史记录模块支持:
从工程实现角度看,本项目完成了深度学习模型到桌面应用系统的集成,主要体现在:
ui/utils/detector.py 对 YOLOv8 推理接口进行统一封装。JSON 持久化用户信息和检测历史,支撑完整业务流程。这使项目不再只是单纯的模型训练代码,而是形成了相对完整的“数据集 + 模型 + 可视化 + 应用系统”的闭环。
本项目的亮点主要体现在以下几个方面:
Path 管理,适应中文路径与跨目录移动场景本项目为个人原创,结构清晰,功能完整,适合计算机视觉方向课程设计、毕业设计和项目演示使用。有定制化需求欢迎评论或私信。