Pythonは、labelme(COCO)でマークされたjsonファイルのラベルラベル名をバッチ変更します
ディープラーニングの実践では、labelmeラベリングソフトウェアを使用してデータセットにラベルを付けた後、ラベル名に誤ったラベルが付けられているか、変更が必要な場合、手動の変更に依存する膨大な量のデータは膨大な作業負荷になります。次のコードを参照できます。これは、ラベル名の問題を解決するのに役立ち、一括改訂に適しています。
これは、labelmeでマークされたjson形式のファイルの情報です。
達成する必要があるのは、ラベルラベルを変更することです。これが「太陽光発電」です。ここでの位置は、辞書の下の図形キーのキー値です。図形キー値はリストです。リストの各項目は辞書で構成され、ラベル名は2番目のラベルキーのキー値です。レベル辞書。
変更されたコードは次のとおりです。具体的な説明については、コードを参照してください。
# !/usr/bin/env python
# -*- encoding: utf-8 -*-
import os
import json
from ipdb import set_trace
json_dir = './xj_json1'
json_files = os.listdir(json_dir)
json_dict = {
}
# 需要修改的新名称
new_name = 'photovoltaics123'
for json_file in json_files:
jsonfile = json_dir +'/'+ json_file
# 读单个json文件
with open(jsonfile,'r',encoding = 'utf-8') as jf:
info = json.load(jf)
# print(type(info))
# 找到位置进行修改
for i,label in enumerate(info['shapes']):
info['shapes'][i]['label'] = new_name
# 使用新字典替换修改后的字典
json_dict = info
print(json_dict)
# set_trace()
# 将替换后的内容写入原文件
with open(jsonfile,'w') as new_jf:
json.dump(json_dict,new_jf)
print('change name over!')
コードを実行した後、ここでは、ラベルの名前が「photovoltaics123」に一律に変更されます。