使用LabelImg工具标注数据(游戏辅助脚本开发)

一、LabelImg 安装(3 种主流方式)

1. 最简单方式:直接下载免安装版(推荐新手)
  • 选择对应系统版本:
  • Windows:下载 labelImg-windows.zip,解压后双击 labelImg.exe 直接运行
  • Mac:下载 labelImg-macos.zip,解压后拖拽到应用程序文件夹
  • Linux:下载 labelImg-linux.tar.gz,解压后执行 ./labelImg
2. 源码安装(适合需要自定义配置的用户)
  • 前提:已安装 Python 3.6+
  • 执行命令安装依赖:

    Windows/Mac/Linux通用

    pip install labelImg安装完成后,命令行输入 labelImg 即可启动工具

二、标注前准备(关键配置,适配 YOLOv5)

1. 提前定义标签文件(避免重复输入)

创建 labels.txt 文件,写入游戏目标标签(与 YOLOv5 配置文件 game.yaml 一致),示例:

复制代码
enemy_head # 敌人头部(标签0)
enemy_body # 敌人身体(标签1)
weapon # 武器(标签2,可选)
  • 标签顺序决定 YOLOv5 的类别 ID(第一行 = 0,第二行 = 1,以此类推)
  • 将 labels.txt 放在游戏截图所在文件夹,方便后续加载
2. 设置标注格式为 YOLO(核心步骤)

启动 LabelImg 后,按以下操作切换到 YOLO 格式:

  1. 点击顶部菜单 Format → 选择 YOLO(默认是 VOC 格式,需手动切换)
  1. 点击顶部菜单 View → 勾选以下选项(提升标注效率):
    • Auto Save(自动保存,标注完一张自动保存并跳转下一张)
    • Display Labels(显示已标注的标签名称)
    • Advanced Mode(高级模式,支持调整标注框坐标)
3. 加载图片文件夹和标签文件
  1. 点击左侧工具栏 Open Dir(或快捷键 Ctrl+O),选择游戏截图所在文件夹(如 datasets/游戏名/train/images)
  1. 点击左侧工具栏 Change Save Dir(或快捷键 Ctrl+S),选择标注文件保存路径(建议与图片同目录,方便管理)
  1. 点击顶部菜单 File → Load Labels,选择提前创建的 labels.txt,加载标签列表(后续标注可直接选择,无需手动输入)

三、游戏目标标注实操步骤(以 FPS 敌人头部 / 身体为例)

1. 标注框绘制(核心操作)
  1. 工具启动后,自动加载文件夹第一张图片
  1. 点击左侧工具栏 Create RectBox(或快捷键 W),开始绘制标注框:
    • 敌人头部:框选敌人头部区域,尽量紧凑(爆头点识别关键)
    • 敌人身体:框选敌人躯干区域,避免包含过多背景
  1. 绘制完成后,弹出标签选择框,选择对应标签(如 enemy_head),点击 OK 完成标注
  1. 按快捷键 D 跳转下一张图片,重复上述步骤;按 A 返回上一张
2. 标注优化技巧(提升 YOLOv5 训练精度)
  • 框选原则:标注框需完全包含目标,且边缘紧贴目标轮廓(不超出、不遗漏)
    • 错误示例:框选过大包含背景、框选过小只覆盖目标部分区域
    • 正确示例:敌人头部标注框刚好包裹头部,上下左右无多余背景
  • 多目标处理:一张图片中有多个敌人时,需分别绘制标注框,分别选择对应标签
  • 光影适配:同一敌人在不同光影下(如强光、阴影),标注框需保持一致性,不因光影变化缩小 / 扩大框选范围
  • 距离适配:远距离敌人(目标较小)标注时,尽量精准框选核心区域(如头部中心点周围)
3. 快捷键汇总(高效标注必备)

|--------|----------|
| 快捷键 | 功能描述 |
| W | 创建矩形标注框 |
| D | 跳转下一张图片 |
| A | 跳转上一张图片 |
| Ctrl+S | 手动保存标注文件 |
| Del | 删除当前标注框 |
| Ctrl+Z | 撤销上一步操作 |
| 鼠标滚轮 | 缩放图片 |

四、标注文件验证与管理(避免训练报错)

1. 标注文件格式检查(YOLO 格式规范)

标注完成后,每张图片会生成对应的 .txt 文件(与图片同名),格式如下(以敌人头部为例):

复制代码
0 0.45 0.32 0.08 0.15 # 含义:类别ID 中心点x 中心点y 宽度 高度(均为归一化值)
  • 类别 ID:与 labels.txt 顺序一致(enemy_head=0,enemy_body=1)
  • 归一化值:坐标范围均在 0-1 之间(LabelImg 自动计算,无需手动修改)
  • 若图片无目标:无需生成 .txt 文件,YOLOv5 训练时会自动忽略
2. 常见标注错误排查
  • 错误 1:标注框超出图片范围 → 检查标注框是否紧贴图片边缘,调整标注框位置
  • 错误 2:标签名称拼写错误 → 确保标注时选择的标签与 labels.txt 完全一致(大小写敏感)
  • 错误 3:未切换到 YOLO 格式 → 重新设置 Format→YOLO,重新标注(或用工具批量转换 VOC 格式为 YOLO 格式)
  • 错误 4:标注文件缺失 → 检查是否勾选 Auto Save,未保存的标注文件可重新打开图片手动保存
3. 标注文件管理规范
  • 文件夹结构:按之前规划的 datasets/游戏名/train/images(图片)和 datasets/游戏名/train/labels(标注文件)分开存放(推荐),或标注文件与图片同目录(简化版)
  • 备份机制:标注完成后,备份 labels 文件夹,避免误删导致重新标注
  • 批量检查:使用 Python 脚本批量验证标注文件格式(如检查类别 ID 是否在合理范围、归一化值是否在 0-1 之间),示例脚本:
python 复制代码
import os

def check_yolo_labels(label_dir, class_num=2):

"""

检查YOLO标注文件是否合法

label_dir: 标注文件目录

class_num: 类别数量(如enemy_head+enemy_body=2)

"""

for label_file in os.listdir(label_dir):

if label_file.endswith('.txt'):

with open(os.path.join(label_dir, label_file), 'r') as f:

lines = f.readlines()

for line in lines:

parts = line.strip().split()

# 检查字段数量(类别ID + 4个坐标值)

if len(parts) != 5:

print(f"错误:{label_file} 字段数量异常")

continue

# 检查类别ID

class_id = int(parts[0])

if class_id or class_id >= class_num:

print(f"错误:{label_file} 类别ID {class_id} 超出范围")

# 检查归一化值

for val in parts[1:]:

if float(val) < 0 or float(val) > 1:

print(f"错误:{label_file} 坐标值 {val} 超出0-1范围")

# 运行检查(替换为你的标注文件目录)

check_yolo_labels("datasets/游戏名/train/labels", class_num=2)

五、批量标注与效率提升技巧

1. 批量处理重复标注
  • 若多张图片中目标位置相似(如同一敌人同一姿势),可使用 Ctrl+C 复制当前标注框,Ctrl+V 粘贴到下一张图片,再微调位置
  • 利用 Advanced Mode 直接修改标注框坐标值,精准调整位置
2. 视频转图片批量标注

若游戏截图效率低,可录制游戏视频,转成图片后批量标注:

  1. 用视频转图片工具(如 ffmpeg)拆分视频:

    ffmpeg -i game_video.mp4 -r 1 datasets/游戏名/train/images/frame_%04d.jpg # 每秒提取1帧

  2. 用 LabelImg 批量标注转成的图片,标注效率提升 50%+

3. 标注进度管理
  • 按场景分类标注:先标注近距离敌人,再标注中远距离敌人,避免标注混乱
  • 每日标注完成后,用 tree 命令查看目录结构,确认图片和标注文件数量一致(Windows 可在文件夹地址栏输入 cmd,执行 dir /b *.jpg | find /c /v "" 统计图片数,dir /b *.txt | find /c /v "" 统计标注文件数)
相关推荐
qq_417695055 小时前
机器学习与人工智能
jvm·数据库·python
漫随流水5 小时前
旅游推荐系统(view.py)
前端·数据库·python·旅游
yy我不解释6 小时前
关于comfyui的mmaudio音频生成插件时时间不一致问题(一)
python·ai作画·音视频·comfyui
紫丁香7 小时前
AutoGen详解一
后端·python·flask
FreakStudio7 小时前
不用费劲编译ulab了!纯Mpy矩阵micronumpy库,单片机直接跑
python·嵌入式·边缘计算·电子diy
mxwin9 小时前
Unity Shader FLOWMAP岩浆流动制作案例
unity·游戏引擎·shader·uv
小贺儿开发9 小时前
【Arduino与Unity交互探究】01 摇杆模块
科技·unity·游戏引擎·arduino·串口通信·摇杆·硬件交互
清水白石0089 小时前
Free-Threaded Python 实战指南:机遇、风险与 PoC 验证方案
java·python·算法
飞Link10 小时前
具身智能核心架构之 Python 行为树 (py_trees) 深度剖析与实战
开发语言·人工智能·python·架构
桃气媛媛10 小时前
Pycharm常用快捷键
python·pycharm