当前位置: 首页 > news >正文

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

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

1. 最简单方式:直接下载免安装版(推荐新手)
  • 下载地址:LabelImg 官方 Releases
  • 选择对应系统版本:
  • 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 之间),示例脚本:
  • 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帧
  1. 用 LabelImg 批量标注转成的图片,标注效率提升 50%+
3. 标注进度管理
  • 按场景分类标注:先标注近距离敌人,再标注中远距离敌人,避免标注混乱
  • 每日标注完成后,用 tree 命令查看目录结构,确认图片和标注文件数量一致(Windows 可在文件夹地址栏输入 cmd,执行 dir /b *.jpg | find /c /v "" 统计图片数,dir /b *.txt | find /c /v "" 统计标注文件数)
http://www.cnnetsun.cn/news/89757.html

相关文章:

  • 【稀缺资料】:Dify重排序系统调优的3个黄金法则与实测数据验证
  • 【混合检索的Dify查询优化秘籍】:揭秘提升查询效率5倍的核心策略
  • 告别 “自动化孤岛”,解锁实验室真正智能
  • Dify版本历史管理的秘密武器:实现安全、可控、可追溯的回滚体系
  • 13.长视频和短视频的目标追踪(yolo_insightface模型)
  • 前端开发必备:JavaScript 核心事件详解与实战
  • 为什么你的服务总崩溃?:Docker MCP 网关负载均衡未正确配置的3大隐患
  • 专利检索漏查1个参数,千万研发卡壳量产线
  • 自动化测试团队效率提升指南
  • LobeChat能否通过等保测评?国内合规性达标
  • paperzz 降重 / 降 AIGC:从重复率超标到学术合规,高校生论文 “隐形风险” 的解决逻辑
  • paperzz AI 期刊论文功能实测:从 “标题输入” 到 “期刊适配提纲”,学术写作如何少走格式与逻辑的弯路?
  • Linux系统安装nginx
  • Dify Docker部署与模型集成指南
  • @所有科技企业:点击链接直达CES Asia2026奖项申报页,错过免费期成本增加3倍
  • Agent概况
  • 13. 搜索引擎-ES-自动补全
  • 36、基础Web服务器与邮件服务配置指南
  • 永磁同步电机三闭环控制Simulink仿真 电流内环 转速 位置外环 参数已经调好 原理与双闭...
  • ISIS路由的基本配置
  • Unloop:为ADHD与神经多样性人群打造的可视化模式映射工具 | ProductHunt 今日热榜 - 12月16日
  • LED显示屏视频会议价格
  • Kamailio 怎样使用 STIR/SHAKEN
  • COMSOL光学仿真:光镊与光力模型专题解析(三个模型详解、近似算法与张量算法探讨)
  • 北斗导航系统在实际应用中总会遇到各种干扰,尤其是脉冲干扰和窄带干扰特别烦人。今天咱们用Matlab仿真几种典型抗干扰方法,顺便看看代码咋写
  • Qwen3-8B大模型快速部署与实战体验
  • AI 时代,数据湖的“拐点”与展望
  • 使用 TensorRT-LLM 高性能部署大语言模型
  • A/B测试在功能验证中的应用:从理论到实践
  • 创建一个rust写的python库[signatures和错误处理]