一、数据准备
labelme2coco: 将LabelMe注解转换为COCO格式
1. 安装labelme2coco
pip install -U labelme2coco
2. 修改文件名
由于我的数据集图片名称中带有_w后缀labelmecoco无法识别转换,因此需要编写个rename.py脚本修改带_w的文件名,另外修改json文件名的同时要修改json文件内容,将imagePath一同修改
# #把图片文件名中_w部分删去并在前面+1
# import os
#
# # 指定要重命名文件的文件夹路径
# folder_path = "C:/.../maskrcnn-benchmark-main/maskrcnn-benchmark-main/data/json"
#
# # 遍历文件夹中的所有文件
# for filename in os.listdir(folder_path):
# # 检查文件名中是否包含"_w"
# if "_w" in filename:
# # 获取文件的扩展名(如.jpg)
# file_extension = os.path.splitext(filename)[1]
# # 去掉文件名中的"_w"
# new_filename = filename.replace("_w", "")
# # 在文件名前加上"1"
# new_filename = "1" + new_filename
# # 完整的新文件名
# new_filename_with_extension = new_filename + file_extension
# # 获取完整的旧文件路径和新文件路径
# old_file_path = os.path.join(folder_path, filename)
# new_file_path = os.path.join(folder_path, new_filename_with_extension)
# # 重命名文件
# os.rename(old_file_path, new_file_path)
# print(f"文件已重命名: {old_file_path} -> {new_file_path}")
# #
# ##修复双重扩展名问题;
# import os
#
# # 指定要修复文件扩展名的文件夹路径
# folder_path = "C:/.../maskrcnn-benchmark-main/maskrcnn-benchmark-main/data/json"
#
# # 遍历文件夹中的所有文件
# for filename in os.listdir(folder_path):
# # 检查文件名中是否包含两个扩展名,如.jpg.jpg或.json.json
# if filename.endswith(".jpg.jpg") or filename.endswith(".json.json"):
# # 去掉多余的扩展名
# new_filename = filename.replace(".jpg.jpg", ".jpg").replace(".json.json", ".json")
# # 获取完整的旧文件路径和新文件路径
# old_file_path = os.path.join(folder_path, filename)
# new_file_path = os.path.join(folder_path, new_filename)
# # 重命名文件
# os.rename(old_file_path, new_file_path)
# print(f"文件已修复: {old_file_path} -> {new_file_path}")
#遍历文件夹中的所有 JSON 文件,并将 imagePath 字段的值修改为与 JSON 文件名相对应的值:
import os
import json
# 指定包含 JSON 文件的文件夹路径
folder_path = "C:/.../maskrcnn-benchmark-main/maskrcnn-benchmark-main/data/json"
# 遍历文件夹中的所有文件
for filename in os.listdir(folder_path):
if filename.endswith(".json"):
# 获取完整的 JSON 文件路径
file_path = os.path.join(folder_path, filename)
# 读取 JSON 文件内容
with open(file_path, 'r', encoding='utf-8') as f:
data = json.load(f)
# 获取新的 imagePath 值
new_image_path = filename.replace(".json", ".jpg")
# 修改 JSON 中的 imagePath 值
if 'imagePath' in data:
old_image_path = data['imagePath']
data['imagePath']