代码参考:https://blog.csdn.net/Sharonnn_/article/details/124365542

创建自己的数据集时,不打算分割名为"thread"的对象,因此要删除thread对象的标签。但是在labelme软件中,右侧的label list类别是不能改动的,也就是说在labelme中删除标签得一张一张的删除,很浪费时间。换一种思路:对.json文件中的"shapes"中"label"为要删除标注对应的shape进行删除,那么就能够通过操作.json文件,完成批量删除标签,处理速度很快。

原文 中一张图片中同一类物体有多个时,效果不好,不能把标签全部删除。本文把for循环改成了倒序循环再删除标签,可以解决同类多物体删除问题。

# !/usr/bin/env python
# -*- encoding: utf-8 -*-
import os
import json
# 这里写你自己的存放照片和json文件的路径
json_dir = 'D:\DeepLearningExercises\matlab_files\image1234\json_files/'
json_files = os.listdir(json_dir)
# 这里写你要删除的标签名
delete_name = "thread"
for json_file in json_files:
    json_file_ext = os.path.splitext(json_file)
    if json_file_ext[1] == '.json':
        # 判断是否为json文件
        jsonfile = json_dir + '\\' + json_file
        with open(jsonfile, 'r', encoding='utf-8') as jf:
            info = json.load(jf)
            # for i, label in enumerate(info['shapes']):
            for i in range(len(info['shapes'])-1,0,-1):
                if info['shapes'][i]['label'] == delete_name:
                    # 找到位置进行删除
                    del info['shapes'][i]
            # 使用新字典替换修改后的字典
            json_dict = info
        # 将替换后的内容写入原文件
        with open(jsonfile, 'w') as new_jf:
            json.dump(json_dict, new_jf)
print('delete label over!')
                    python代码批量修改Labelme标注的json文件:删除标签代码参考:https://blog.csdn.net/Sharonnn_/article/details/124365542创建自己的数据集时,不打算分割名"thread"的对象,因此要删除thread对象的标签。但是在labelme软件中,右侧的label list类别是不能改动的,那么解决方案就是对.json文件中的"shapes"中"label"为要删除标注对应的shape全部删除,此方法能够批量操作.json文件,处理速度很快
				
labelme 标注的数据转换为 PASCAL VOC 格式和 MS COCO 格式的数据集,便于直接利用支持这两种格式的框架进行训练 1、将 lebelme 标注得到的 JSON 文件放在一个文件夹内。举个例子,命名为 labelme_jsons_dir。 2、准备好一份 text 文本,里面包含数据集的分标签。举个例子,命名为 label_names.txt。可以参考下项目里的 test/label_names.txt。 3、如果有转换标签的需求(比如中文标签转为英文),准备一个文本,包含转换的规则,举个例子,命名为label_dict.txt。可以参考下项目里的 test/label_dict.txt 。
关于labelme自定义数据集 标签删除的操作 labelme自定义的数据集在图像标注过程中,如果生成了一个错误标注的图像块时,右击相应的图像label是无法删除的,如图1: 图1(看右侧Polygon Labels框中) 此时,需要点击图中左列的Edit Polygons,如图2: 选中右侧Polygon Labels中需要删除label,点击左侧的Edit Polygons,然后点击标注图片中对应需要删除标签块。如图3: 右击,就会出现删除按钮,点击即可删除,如图4、5: 2、创建labelme环境 :conda create -n labelme python=3.6 3、进入labelme环境:conda activate labelme 如需卸载环境:conda remove -n labelme --all 4、安装相应库:pyqt、pillow、labelme 5、打开labelme:当前环境下直接输入labelme 6、标注数据集生成对应的json文件 7、将json转换成png格式 (1)单张转换: News: 最近开始论文实验,需要重新整理一下数据集,顺便整理一下这个代码仓库。 仓库中的脚本用于将Labelme标注的数据转换为PASCAL VOC格式或MS COCO格式的标准数据集,便于直接利用现有的训练框架进行训练。 使用须知: 脚本写的其实并不复杂,有基础的同学可以过一下脚本的流程,确保在自己使用的标注数据或数据集上能正常使用,有需要调整的地方也可以自己调整下,可以省掉一些Debug的无用功夫。 举例说明: 数据集不同,计算BBOX左上角和右下角的Points下标也不一定相同,需要确认下。 标注工具和常见的两种数据集格式 Labelme是我用的标注工具,对图像进行多种型的标注,可以直接得到json文件。GitHub地址如下: PASCAL-VOC和MS-COCO是两个大型的开源数据集,其数据集的标注形式成为了通用的标注方式,常见的视觉模型的训练
# 遍历指定目录下的文件 for filename in os.listdir(directory): if filename.endswith(".json"): # 查找以.json结尾的文件 json_file = os.path.join(directory, filename) image_file = json_file.replace(".json", ".jpg") # 将.json替换为.jpg if os.path.isfile(image_file): # 检查对应的图片文件是否存在 new_json_name = os.path.join(directory, "new_" + filename) new_image_name = os.path.join(directory, "new_" + os.path.basename(image_file)) # 重命名json文件和图片文件 os.rename(json_file, new_json_name) os.rename(image_file, new_image_name) print(f"重命名成功:{new_json_name}, {new_image_name}") else: print(f"找不到对应的图片文件:{image_file}") # 指定包含labelme标注文件的目录 directory = "path/to/labelme/files" rename_files(directory) 你需要将代码中的`"path/to/labelme/files"`替换为包含标注文件的实际目录路径。运行代码后,它会遍历目录中的所有.json文件,然后查找相应的.jpg文件并将它们重命名为"new_文件名"。重命名后的文件名可以根据需要进行修改。 希望这可以帮到你!如果有任何问题,请随时问我。