核心理念:实验即配置 (Experiment as Code) 你不需要懂代码,只需要修改一份配置文件 (
.yaml),即可驱动从数据处理、模型训练到最终导出的全自动化流水线。
请根据你手头拥有的数据情况,选择 路径 A 或 路径 B。
适用场景:识别背包、仓库、摊位等网格状、图标固定的界面。效率最高。
- 素材提取
- 将原始游戏截图放入
data/raw/。 - 运行提取工具:
python tools/batch_icon_extractor.py - 操作:左键点选图标,Ctrl+左键排除背景,S键保存。
- 将原始游戏截图放入
- 网格校准
- 准备一张空背包截图
data/assets/backgrounds/empty.png。 - 运行校准工具:
python tools/grid_calibrator.py - 操作:确认红框完美覆盖格子,如有偏差修改脚本内的坐标参数。
- 准备一张空背包截图
- 一键合成
- 运行合成工具:
python tools/inventory_synthesizer.py - 结果:系统将自动生成 2000+ 张带完美标注的训练数据至
data/raw/synthetic_inventory_v1。
- 运行合成工具:
适用场景:识别动态特效、不规则物体、或非网格界面。
- 数据准备
- 将图片 (
.jpg/.png) 和 标签 (.json/.txt) 放入data/raw/manual_dataset_v1(文件夹名自定义)。
- 将图片 (
- 格式转换 (如果是 LabelMe)
- 如果你的标注是
.json格式,系统会在训练时自动转换,无需额外操作。
- 如果你的标注是
打开项目根目录下的 yolo.yaml,这是你唯一需要修改的文件。
# 1. 给本次训练起个名字 (必须唯一)
project_name: "yolo_daoju"
run_name: "v1_synthetic_test"
# 2. 告诉系统数据在哪里 (最重要!)
# -> 如果是路径 A (合成),填合成后的目录:
source_data_dir: "/home/zhz/cv_factory/data/raw/synthetic_inventory_v1"
# -> 如果是路径 B (人工),填你上传的目录:
# source_data_dir: "/home/zhz/cv_factory/data/raw/manual_dataset_v1"
# 3. 定义你要识别什么 (ID: 名字)
class_names:
0: '桃花'
1: '飞行符'
# ...
# 4. 训练参数 (小白仅需关注以下几项)
hyperparameters:
epochs: 150 # 训练轮数,建议 100-300
batch: 32 # 显存够大可以改 64
# --- 针对游戏UI的特殊设置 ---
# 如果是固定图标(路径A),必须设为 0.0 (禁止旋转/翻转)
# 如果是怪物/特效(路径B),可以设为 0.5 (允许增强)
degrees: 0.0
fliplr: 0.0
scale: 0.05 # 图标大小固定,缩放要小配置完成后,在终端运行以下命令。系统会自动清洗数据、划分验证集、开始训练、并导出模型。
python pipeline.py --config yolo.yaml- 训练产物位置:
runs/<project_name>/<run_name>/(包含图表、日志) - 最终模型位置:
saved/models/<run_name>.onnx(可直接部署)
永远不要只看训练数据的分数,要看真实截图的效果。
- 确保
data/raw/下有一些真实的游戏截图。 - 运行可视化验证工具:
python tools/validate_real.py
- 查看结果: 打开
AAA/real_world_validation_high_conf/目录。- 绿色框:识别出的物体。
- HUD显示:标签位于框内,半透明背景,不遮挡画面。
- 注:默认只显示置信度 > 0.90 的结果。
configs/: 存放main_config.yaml(系统级配置,一般不动)。data/:assets/: 合成用的素材 (图标、背景)。raw/: 你的工作区 (放截图、放标注数据)。processed/: 系统生成的临时数据 (可随时删除)。
tools/: 工具箱batch_icon_extractor.py: 抠图工具。inventory_synthesizer.py: 合成工具。validate_real.py: 验证工具。
yolo.yaml: 实验指令单 (核心)。pipeline.py: 启动脚本。