基于 YOLOv8 的部落冲突 (Clash of Clans) 目标检测系统

1. 项目背景

《部落冲突》(Clash of Clans) 是一款风靡全球的策略类手机游戏。在游戏中,玩家需要通过识别敌方的防御建筑布局来制定进攻策略。本项目旨在利用深度学习技术,特别是 YOLOv8 目标检测算法,实现对游戏场景中关键建筑(如大本营、天鹰火炮、地狱塔、英雄王座等)的自动识别与定位,为自动化辅助工具或游戏数据分析提供技术基础。

2. 数据集准备

本项目使用了一个精心标注的高质量数据集:

  • 样本数量: 125 张高清游戏截图。
  • 类别数量: 16 类,涵盖了 TH13 本阶段的核心防御建筑。
  • 类别详情 :
    • 核心建筑 : TH13 (13级大本营), ClanCastle (部落城堡), Eagle (天鹰火炮)
    • 英雄单位 : KingPad (蛮王), QueenPad (女皇), WardenPad (咏王), RcPad (闰土)
    • 常规防御 : Canon (加农炮), Mortar (迫击炮), Xbow (X连弩), Inferno (地狱塔), Scattershot (投石炮), BombTower (炸弹塔), WizzTower (法师塔), AirSweeper (空气炮), AD (防空火箭)

数据标签可视化

下图展示了训练集中标签的分布情况。可以看到数据集虽然不大,但每个类别的样本分布非常均衡,且覆盖了各种阵型布局。

训练样本示例

以下是送入模型进行训练的增强后样本批次,模型通过 Mosaic 等增强手段学习到了不同尺度和背景下的建筑特征。


3. 模型训练策略

  • 基础模型 : YOLOv8s (Small 版本)。选型理由是基于 RTX 5060 Laptop 的强大算力,Small 版本相比 Nano 版本能提供更强的特征提取能力,特别是针对游戏画面中密集的"小目标"(如迫击炮、炸弹塔)。
  • 训练参数 :
    • Epochs: 100
    • Batch Size: 16
    • Image Size: 640x640
    • Device: GPU (NVIDIA RTX 5060 Laptop GPU)

训练过程监控

得益于 RTX 5060 的强劲性能,训练过程非常迅速(约 4 分钟),且收敛极快。下图是训练过程中的各项损失函数 (Loss) 和评估指标的变化曲线。

可以看到:

  • Loss (损失): 在前 20 轮迅速下降,并保持平稳。
  • mAP (平均精度): 在 30 轮左右就已经达到了 98% 以上的极高水平。

4. 训练结果分析

最终模型在验证集上取得了令人惊叹的效果:

  • mAP@50 : 99.1% (几乎完美识别)
  • mAP@50-95 : 83.7% (具备极高的定位精度)

混淆矩阵 (Confusion Matrix)

混淆矩阵用于分析模型是否容易"看走眼"。如下图所示,对角线颜色极深,代表绝大多数目标都被正确分类。唯独极少数情况下,模型可能会混淆外观相似的建筑(例如不同等级的加农炮),但整体错误率极低。

精确率-召回率曲线 (PR Curve)

P-R 曲线下的面积代表了模型的综合性能。我们的模型曲线几乎紧贴右上角(面积接近 1.0),说明模型既查得准 (Precision 高),又查得全(Recall 高)。

验证集检测效果

这是模型在从未见过的验证集图片上的实际预测效果。左图为真实标签,右图为模型预测结果。可以看到模型完美还原了所有建筑的位置和类别。

真实标签 (Ground Truth):

模型预测 (Predictions):


5. 软件系统设计与实现

为了将算法模型转化为实际生产力,我们开发了一套功能完备的桌面端可视化检测系统。该系统基于 PyQt5 框架开发,采用现代化 UI 设计,集成了模型推理、视频流处理、数据统计与交互分析等核心模块。

5.1 系统主界面

系统采用经典的左右分栏布局:

  • 左侧可视化区:实时渲染检测结果(绘制高亮边框与类别标签),下方配有数据明细列表。
  • 右侧控制区:集成了所有参数调节与功能控制组件,操作逻辑清晰流畅。

5.2 核心功能详解

1. 多模态数据源支持

系统支持三种不同的数据输入方式,满足不同场景需求:

  • 图片检测:支持导入 JPG/PNG 等格式的高清截图,适合对静态阵型进行精细分析。
  • 视频分析:支持 MP4/AVI 等格式的录像文件,可用于回放进攻录像,动态分析防御塔的运作状态。
  • 实时监控:直接调用 USB 摄像头或系统摄像头,实现"即拍即测"的实战演示功能。
2. 动态参数调优

用户无需重启软件即可实时调整检测参数,寻找最佳的检测平衡点:

  • 置信度阈值 (Confidence):调节滑块(0.01~1.0),过滤掉置信度较低的误检目标。
  • IOU 阈值 (NMS):调节非极大值抑制的阈值,有效解决重叠目标的重复框选问题。
  • 标签显示开关:一键隐藏/显示类别标签,方便查看被遮挡的画面细节。
3. 智能数据交互与筛选

系统并非简单地画框,而是提供了深度的交互分析能力:

  • 目标筛选 :下拉菜单自动列出当前画面中出现的所有建筑类别(如"仅显示地狱塔")。选择特定类别后,画面中将只高亮显示该类目标,其他干扰项目会被自动屏蔽。
  • 详细信息看板
    • 实时计数:显示当前画面或当前筛选类别的目标总数(例如"加农炮:7个")。
    • 平均置信度:分析模型对当前目标的识别把握程度。
    • 坐标定位 :显示选中目标的具体像素坐标 [x1, y1, x2, y2]
  • 数据列表:左下角表格实时刷新所有目标的 ID、类别、置信度和位置信息,支持点击联动。
4. 性能监控
  • FPS 实时显示 :系统内置性能监控模块,实时计算并显示每帧的处理耗时(如 0.050s),直观反馈模型在当前硬件上的运行效率。

运行说明

1. 环境依赖

在运行本项目之前,请确保您的环境已安装 Python 3.8+,并安装以下依赖库:

bash 复制代码
pip install ultralytics opencv-python pyqt5 numpy

2. 快速开始

启动可视化界面

直接运行根目录下的应用程序入口脚本:

bash 复制代码
python app.py

重新训练模型(可选)

如果您想用自己的数据重新训练模型,可以运行:

bash 复制代码
python train.py

训练结果将保存在 runs/detect/ 目录下。

3. 项目文件结构说明

以下是项目根目录的核心文件及其作用说明:

复制代码
Clash of Clans.v5i.yolov8/
│
├── app.py                  # [启动入口] 应用程序的主入口文件
├── main_window.py          # [界面逻辑] PyQt5 主窗口代码,包含所有 UI 交互逻辑
├── config.py               # [项目配置] 包含模型路径、类别映射(中英文对照)、颜色配置等
├── detector.py             # [推理核心] 封装 YOLOv8 模型加载与推理预测的类
├── visualization.py        # [绘图工具] 负责在图像上绘制边框、中文标签等
├── train.py                # [训练脚本] 用于启动模型训练的脚本
│
├── assets/                 # [资源目录] 存放图标、字体等静态资源
│   ├── icons/              # 界面图标 (.png)
│   └── fonts/              # 字体文件
│
├── runs/                   # [训练产物] 存放 YOLOv8 训练生成的权重和日志
│   └── detect/
│       └── coc_v8s/        # 本次训练的具体结果
│           └── weights/    # 模型权重文件 (best.pt)
│
├── train/                  # [训练数据] 训练集图片和标签
├── valid/                  # [验证数据] 验证集图片和标签
├── test/                   # [测试数据] 测试集图片和标签
├── data.yaml               # [数据配置] YOLO 数据集配置文件

4. 功能特点

  • 多模态支持:支持图片文件、视频文件及实时摄像头检测。
  • 实时交互:支持动态调整置信度阈值、IOU 阈值,实时查看检测统计。
  • 中文支持:完美支持中文类别显示(如 "Canon" -> "加农炮")。
  • 高性能:基于 YOLOv8s 模型,在 RTX 5060 上可实现极速推理。

5. 模型信息

  • 模型架构: YOLOv8s (Small)
  • 训练轮数: 100 Epochs
  • 检测类别: 16 类 (涵盖大本营、核心防御、英雄王座等)
  • 精度(mAP@50): 99.1%
相关推荐
AI探索先锋1 天前
高效!YOLO+SAM 目标检测与图像分割融合实战
人工智能·计算机视觉·目标跟踪
byzh_rc1 天前
[机器学习-从入门到入土] 基础知识
人工智能·机器学习
龘龍龙1 天前
Python基础学习(十一)
python·学习·mysql
无限大.1 天前
为什么游戏需要“加载时间“?——从硬盘读取到内存渲染
网络·人工智能·游戏
a努力。1 天前
京东Java面试被问:双亲委派模型被破坏的场景和原理
java·开发语言·后端·python·面试·linq
vibag1 天前
使用底层API构建图
人工智能·语言模型·langchain·大模型·langgraph
程序员小远1 天前
UI自动化测试框架:PO模式+数据驱动
自动化测试·软件测试·python·selenium·测试工具·职场和发展·测试用例
权泽谦1 天前
医疗预测项目:CNN + XGBoost 实战全流程
人工智能·神经网络·cnn
2501_941805311 天前
从微服务网关到统一安全治理的互联网工程语法实践与多语言探索
前端·python·算法