labelImg标注顺序乱了,标签有错怎么办~

图片标注顺序乱了,标签有错,不用重新弄了!!!


前言

在我门第一次使用,或平时使用labelImg时,很难保证标注时标签的循序和标签的,所以会导致labelImg标注顺序乱了,标注的就会有错,使用yolo训练出来的模型就不正确。警告
您的标签列表在处理图像列表过程中不得更改。当您保存图像时,classes.txt 也会更新,而之前的注释将不会更新。

一、问题

在2024年年末之前的意思就是,保存之后的标签顺序,在后续时无法修改的。
请添加图片描述

例如这个classes.txt文件all是0,jacket是1,以此类推请添加图片描述
所以标注的信息1 与jacket相对应,0是all,之后也是以此类推。
提示:以下是问题
但是训练的模型标注需要的信息是no是第一个为0,剩下的依次顺下去;或者其他类型样式


提示:以下是本篇文章正文内容

二、解决方法

1.重新标注(我相信你找到我的文章,一定不想这样)

2.使用软件快速修改 (仓库链接在此可快速跳转)

Github:https://github.com/Orlando-Lin/ChangeTab
Gitee:https://gitee.com/OrlandoLin/ChangeTab

标签文件更新工具使用说明

功能介绍

这个工具用于更新YOLO格式的数据集标签文件。主要功能包括:

  1. 对比并显示classes.txt文件的变化
  2. 更新classes.txt文件内容
  3. 自动更新指定文件夹中的所有标签文件
  4. 显示所有修改的文件清单

使用前准备

  1. 确保有以下文件(自己进行替换):

    • classes.txt:原始类别文件
    • classes_change.txt:新的类别文件
    • changeTxt.py:程序主文件
  2. 文件要求(重要!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!):

    • classes.txt 和 classes_change.txt 必须在程序同一目录下
    • 指定文件夹(绝对路径可以直接拖进控制台)中要有原本的classes.txt 和标签的txt文件
    • 标签文件必须是YOLO格式(每行第一个数字为类别编号)

使用步骤

  1. 运行程序:

    python changeTxt.py
    
  2. 程序会显示类别文件的变化情况:

    • 显示移动的行:“行 '类别名' 从位置 X 移动到了位置 Y
    • 显示新增的行:“新增行: 位置 X - '类别名'
    • 显示删除的行:“删除行: 原位置 X - '类别名'
  3. 确认是否进行更新:

    • 输入 yesy 进行更新
    • 输入 non 取消操作
  4. 如果选择更新:

    • 输入需要更新的标签文件所在的文件夹路径
    • 程序会自动处理该文件夹下的所有txt文件 ,只会将标签文件的类别信息(第一个数字)进行更新 eg:0 0.xxx 2.xxx
  5. 更新完成后会显示:

    • 修改的文件总数
    • 所有被修改文件的具体路径

注意事项

  1. 程序会同时更新:

    • 当前目录下的classes.txt
    • 指定文件夹中的classes.txt
    • 指定文件夹中的所有标签文件
  2. 只有实际发生变化的文件才会被更新和记录

  3. 建议在更新前备份重要文件

  4. 确保有足够的文件读写权限

错误处理

  • 如果文件夹路径不存在,程序会提示错误并退出
  • 如果输入无效的选项,程序会要求重新输入

示例输出

  • 行 ‘car’ 从位置 1 移动到了位置 0
  • 新增行: 位置 3 - ‘truck’
  • 删除行: 原位置 2 - ‘bike’
  • 是否要用classes_change.txt替换classes.txt文件并更新标签文件?(yes/y/no/n): y
  • 当前目录的classes.txt已更新
  • 请输入需要更新的标签文件所在的文件夹路径: /path/to/labels
  • 文件修改总结:
    • 共修改了 3 个文件:
    • /path/to/labels/classes.txt
    • /path/to/labels/image1.txt
    • /path/to/labels/image2.txt

总结

以上就是解决这个问题的方案,若是有需要会持续更新该软件,丰富其功能。

### 如何使用LabelImg打开已有的标签TXT文件 为了在LabelImg中加载已经存在的YOLO格式的`.txt`标签文件,需遵循特定的操作流程。当处理YOLO格式的数据时,这些标签通常与对应的图片放置在同一目录下[^2]。 #### 加载已有标签文件的具体操作: 1. 启动LabelImg工具后,在主界面上方找到并点击菜单栏中的 `File` 选项。 2. 接着选择 `Open Dir` 来指定包含待标注图像及其对应YOLO `.txt`标签文件所在的文件夹路径[^3]。 3. 如果一切设置无误,软件会自动识别该文件夹内的图片以及匹配好的YOLO格式标签文件,并显示带有先前标记框的信息给用户查看和编辑。 对于那些希望将其他格式(如Pascal VOC XML)转换成YOLO TXT格式的情况,可以通过编写Python脚本来实现自动化批量转换过程。 ```python import xml.etree.ElementTree as ET from os import getcwd def convert_annotation(image_id, list_file): in_file = open('annotations/%s.xml' % (image_id)) tree=ET.parse(in_file) root = tree.getroot() for obj in root.iter('object'): difficult = obj.find('difficult').text cls = obj.find('name').text if cls not in classes or int(difficult)==1: continue class_id = classes.index(cls) xmlbox = obj.find('bndbox') b = (float(xmlbox.find('xmin').text), float(xmlbox.find('ymin').text), float(xmlbox.find('xmax').text), float(xmlbox.find('ymax').text)) list_file.write(" " + ",".join([str(a) for a in b]) + ',' + str(class_id)) wd = getcwd() list_file = open('%s.txt'%(wd),'w') for image_set in sets: image_ids = open('ImageSets/Main/%s.txt'%(image_set)).read().strip().split() for image_id in image_ids: list_file.write('%s/JPEGImages/%s.jpg'%(wd, image_id)) convert_annotation(image_id, list_file) list_file.write('\n') list_file.close() ``` 此段代码展示了从XML到YOLO格式的基本转换逻辑,适用于拥有大量不同格式标签文件的情形下的准备工作。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

WiKi哥

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值