You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何基于合成图像文件名生成label.json标注文件?

生成合成图像数据集的label.json文件

需求概述

我为训练神经网络生成了合成图像,但缺少label.json文件,需要自行创建。目标是生成一个字典格式的文件:

  • 字典的键是图像文件名(如Apple_123.jpg)
  • 字典的值是文件名中第一个下划线及之后内容(包括后缀)去掉后的文本(如Apple)

期望的label.json格式示例:

{ 
    "img_2.jpg": "am", 
    "img_3.jpg": "a", 
    "img_4.jpg": "Jedi", 
    "img_5.jpg": "!" 
}

现有代码问题

你当前的代码存在几个核心问题:

  1. 循环中错误地将lab_dic反复赋值为列表,而非向字典中添加键值对
  2. 仅用split('_')[0]处理文件名,未考虑没有下划线的情况
  3. 没有将最终生成的字典写入到文件中

修正后的代码

import json
import os
import glob

# 图像数据集所在路径
path = "/media/cvpr/CM_1/COREMAX/dataset_KR/dataset/train/"
# label.json的保存路径,可根据需要修改
save_path = "./labels.json"

# 初始化存储标签的字典
lab_dic = {}

# 遍历路径下所有图像文件
for img_path in glob.glob(os.path.join(path, "*.*")):
    # 获取带后缀的文件名
    filename = os.path.basename(img_path)
    # 提取标签:优先取第一个下划线前的内容,无下划线则取去掉后缀的文件名
    if "_" in filename:
        label = filename.split("_")[0]
    else:
        label = os.path.splitext(filename)[0]
    # 向字典添加键值对
    lab_dic[filename] = label

# 将字典写入json文件,保证格式美观且支持中文
with open(save_path, "w", encoding="utf-8") as f:
    json.dump(lab_dic, f, indent=4, ensure_ascii=False)

print(f"label.json已成功生成并保存至:{save_path}")

代码关键点说明

  • 用os.path.join拼接路径,适配Windows、Linux等不同系统的路径格式
  • 增加无下划线文件名的兼容逻辑,避免出现索引错误
  • 通过json.dump的indent参数让生成的json文件格式更易读,ensure_ascii=False支持中文标签
  • 指定utf-8编码,防止中文标签出现乱码问题

内容的提问来源于stack exchange,提问作者Khawar Islam

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.21 21:39:20