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: 100Batch Size: 16Image Size: 640x640Device: 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+,并安装以下依赖库:
pipinstallultralytics opencv-python pyqt5 numpy2. 快速开始
启动可视化界面
直接运行根目录下的应用程序入口脚本:
python app.py重新训练模型(可选)
如果您想用自己的数据重新训练模型,可以运行:
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%