基于 YOLO26 的三角洲行动游戏目标检测实践(需要源码可私信我)
·
一、项目背景
三角洲行动(Delta Force)是一款射击类游戏,游戏中包含了大量可供识别的UI元素(数字、字母、特殊符号)以及人物角色。如果你需要对这些游戏画面中的元素进行自动识别——例如检测血量数字、击杀信息、人物站位等——那么目标检测模型是一个很实用的方案。
本文记录了使用 Ultralytics YOLO26n 训练一个 目标检测模型的全过程,包括:
- 数据集制作与划分
- 模型训练
- 效果评估(mAP50 达到 0.982)
- 可视化检测工具(PyQt5)
二、数据集制作
2.1 数据来源
从三角洲行动游戏截图中采集了约 12,000 张 640×640 分辨率的图片,并使用 LabelImg 等工具标注。
2.2 数据划分
通过 split.py 脚本,按照 80% / 10% / 10% 的比例划分训练集、验证集和测试集:
| 数据集 | 图片数量 |
|---|---|
| 训练集 | 9,513 |
| 验证集 | 1,189 |
| 测试集 | ~1,200 |
| 合计 | ~11,890 |
数据划分脚本的主要逻辑:
- 遍历
images/和labels/目录,确保每张图片都有对应的标签文件 - 随机打乱后按比例切分
- 将图片和标签复制到对应的
train/val/test目录 - 自动生成
data.yaml配置文件
三、模型训练
3.1 训练环境
| 硬件/软件 | 配置 |
|---|---|
| GPU | NVIDIA RTX 5060 Laptop (8GB) |
| Python | 3.10.20 |
| PyTorch | 2.11.0 + CUDA 12.8 |
| Ultralytics | 8.4.89 |
| 训练图像尺寸 | 640 × 640 |
| Batch Size | 8 |
| 优化器 | MuSGD (lr=0.01) |
| Epochs | 100 |
| 训练总耗时 | 约 5.4 小时 |
3.2 模型结构
选用 YOLO26n(nano 版本),模型轻量高效:
YOLO26 summary:
Layers: 260
Parameters: 2,519,400 (约 2.5M)
GFLOPs: 5.9
模型来自 Ultralytics 内置的 yolo26.yaml 配置文件,仅将 nc 从默认的 80 改为 40。
3.3 训练命令
from ultralytics import YOLO
model = YOLO("ultralytics/cfg/models/26/yolo26.yaml")
model.train(
data="../sjz_data/data.yaml",
epochs=100,
imgsz=640,
batch=8,
device=0,
workers=2,
cache=True,
project="runs",
name="sjz_yolo26"
)
3.4 训练过程
训练期间使用了 Automatic Mixed Precision (AMP) 加速,测试通过。单 epoch 耗时约 3 分钟左右。
训练开始时(Epoch 1):
- mAP50 = 0.362
训练结束时(Epoch 100):
- mAP50 = 0.982
- mAP50-95 = 0.820
- Precision = 0.952
- Recall = 0.939
从 loss 曲线可以看到,box_loss 从 2.79 下降到 0.71,cls_loss 从 6.34 下降到 0.30,dfl_loss 从 0.013 下降到 0.003,收敛效果良好。
四、训练结果
4.1 最终指标
| 指标 | 数值 |
|---|---|
| Precision | 0.952 |
| Recall | 0.939 |
| mAP50 | 0.982 |
| mAP50-95 | 0.820 |
| 参数量 | 2.5M |
| 模型大小 | 5.4 MB |
| 推理速度 | 1.5ms/张 |
4.2 推理速度
Speed: 0.2ms preprocess, 1.5ms inference, 0.0ms loss, 0.2ms postprocess per image
单张图片推理仅需 1.5ms,完全可以满足实时检测需求。
五、可视化检测工具
为了方便测试模型效果,基于 PyQt5 开发了一个桌面检测工具。
5.1 界面预览
工具采用现代简约的双栏布局设计:
- 左侧深灰侧边栏:图片上传、开始检测按钮、置信度阈值滑块、检测结果文本区
- 右侧浅色主内容区:左右并排展示"原图"和"检测结果",方便对比
5.2 功能特性
- 支持上传 jpg / png / bmp / tif 等常见图片格式
- 检测结果实时显示标注框、类别名称和置信度
- 可调节置信度阈值(0.01 ~ 0.99),边调边测
- 按类别统计检测数量,person 类单独高亮显示
- 深色主题,科技感风格
5.3 项目结构
sjz/
├── UI/ # PyQt5 检测工具
│ ├── main.py # 启动入口
│ ├── detector.py # YOLO 推理封装
│ └── ui_main.py # 图形界面
├── sjz_data/ # 数据集
│ ├── train/images/ # 训练图片
│ ├── val/images/ # 验证图片
│ ├── test/images/ # 测试图片
│ └── data.yaml # 数据集配置
├── ultralytics-main/
│ ├── train.py # 训练脚本
│ └── runs/detect/runs/sjz_yolo26/weights/
│ ├── best.pt # 最佳权重(5.4MB)
│ └── last.pt # 最后一轮权重
├── split.py # 数据集划分脚本
└── train_result.txt # 完整训练日志
5.4 启动方式
# 进入 UI 目录,确保已安装依赖
cd sjz/UI
python main.py
需要安装的依赖:
pip install ultralytics opencv-python PyQt5 numpy
六、项目总结
成果
- 成功训练了一个 40 类目标检测模型,最终 mAP50 达到 0.982
- 模型仅 2.5M 参数、5.4MB 大小,轻量到可以在笔记本 GPU 上实时运行
- 配套的 PyQt5 可视化工具方便了模型效果的直观测试
- 训练耗时仅 5.4 小时(RTX 5060),复现门槛低
可能的改进方向
- 将模型导出为 ONNX / TensorRT 格式进一步加速推理
- 增加视频流检测功能(
model.predict(source="video.mp4")即可) - 使用更大的 YOLO26s / YOLO26m 模型进一步提高精度
- 增加数据增强策略,提高模型泛化能力
本文基于真实项目记录,数据来源于三角洲行动游戏截图,代码基于 Ultralytics YOLO26 实现。
更多推荐



所有评论(0)