YOLO格式转Labelme | 标签信息 | 辅助标注 | txt转json
创作时间:
作者:
@小白创作中心
YOLO格式转Labelme | 标签信息 | 辅助标注 | txt转json
引用
CSDN
1.
https://blog.csdn.net/qq_41204464/article/details/140858713
本文将介绍如何将常用的YOLO检测格式转换为LabelMe标注格式,实现从xxx.txt到xxx.json的转换。支持YOLOv8、YOLOv5等多种版本,通过模型预测信息实现辅助标注,人工只需进行微调和审核。
前言
本文分享将常规的YOLO检测信息,转为Labelme中的标签信息。
即:xxx.txt 转 xxx.json。YOLO版本支持YOLOv8、YOLOv5等。
通过模型预测的信息,有了大致的检测位置和类别信息,人工进行微调和审核即可,实现辅助标注。
1、分析YOLO格式
YOLO的标签文件通常是一个包含每行一个标签的TXT文件。
每一行的格式是:
。其中:
。其中:
2、分析LabelMe格式
LabelMe使用的是JSON格式,每个标签是一个形状(shape)对象,包含以下信息:
label
: 标签的名称。
points
: 多边形的点列表(包含多边形顶点的坐标)。
group_id
: (可选)用于将不同形状分组的ID。
shape_type
: 形状类型(例如
rectangle
,
circle
等)。
flags
: (可选)一些额外的标记信息。
3、实现代码
我们指定文件夹,程序遍历该文件夹中的所有txt文件,然后将生成的LabelMe JSON文件保存到指定的输出文件夹中。
这里会提供源代码,需要根据我们的数据修改以下部分:
- 类别映射:
class_map
是一个字典,将YOLO的类别索引映射到实际的类别名称。 - 图片尺寸:假设所有图片的尺寸相同,默认为640*640。
- 如果图片尺寸不同,需要在每次读取YOLO标签文件时获取图片的实际尺寸。
import os
import json
# 定义类别映射
class_map = {0: 'class_name1', 1: 'class_name2'} # 根据类别定义填写,这里示例是2个类别
def yolo_to_labelme(txt_path, img_width, img_height):
with open(txt_path, 'r') as file:
lines = file.readlines()
shapes = []
for line in lines:
parts = line.strip().split()
class_id = int(parts[0])
x_center = float(parts[1])
y_center = float(parts[2])
width = float(parts[3])
height = float(parts[4])
# 转换为绝对坐标
x_center *= img_width
y_center *= img_height
width *= img_width
height *= img_height
# 计算矩形的四个顶点
x1 = x_center - width / 2
y1 = y_center - height / 2
x2 = x_center + width / 2
y2 = y_center + height / 2
shapes.append({
'label': class_map[class_id],
'points': [[x1, y1], [x2, y2]],
'group_id': None,
'shape_type': 'rectangle',
'flags': {}
})
return shapes
# 文件夹路径
txt_folder_path = 'txt_labels'
json_output_path = 'json_labels'
# 图片宽度和高度(按图片尺寸读取并调整)
img_width = 640
img_height = 640
if not os.path.exists(json_output_path):
os.makedirs(json_output_path)
# 遍历所有txt文件并转换
for txt_file in os.listdir(txt_folder_path):
if txt_file.endswith('.txt'):
txt_path = os.path.join(txt_folder_path, txt_file)
shapes = yolo_to_labelme(txt_path, img_width, img_height)
# 创建LabelMe格式的json文件
labelme_data = {
'version': '4.5.6',
'flags': {},
'shapes': shapes,
'imagePath': txt_file.replace('.txt', '.jpg'),
'imageData': None,
'imageHeight': img_height,
'imageWidth': img_width
}
json_path = os.path.join(json_output_path, txt_file.replace('.txt', '.json'))
with open(json_path, 'w') as json_file:
json.dump(labelme_data, json_file, indent=2)
这段代码的整体思路和流程如下:
- 类别映射定义:
- 定义一个字典
class_map
,将YOLO的类别ID映射到实际的类别名称。 - 这是为了在转换过程中能够正确地将类别ID转换为LabelMe格式中的类别标签。
- 定义转换函数:
- 编写一个函数
yolo_to_labelme
,用于将YOLO格式的标签文件转换为LabelMe格式的JSON文件。该函数的主要步骤包括: - 读取YOLOv5标签文件:读取每个TXT文件的内容,每一行代表一个对象的标签信息。
- 解析标签信息:将每一行的数据解析成类别ID、目标中心点的坐标(x, y)、目标的宽度和高度。
- 坐标转换:将YOLOv5中归一化的坐标(0-1范围)转换为实际图像尺寸的绝对坐标。
- 计算矩形的顶点:根据中心点坐标和尺寸计算矩形的左上角和右下角顶点坐标。
- 生成形状数据:将这些信息转换为LabelMe格式的形状对象,并加入到形状列表中。
- 返回形状数据:函数返回包含所有形状对象的列表。
- 文件路径和图片尺寸设置:
- 指定YOLO标签文件所在的文件夹路径
txt_folder_path
和输出的LabelMe JSON文件夹路径
json_output_path
。 - 设置图片的宽度和高度(假设所有图片尺寸相同)。
- 如果图片尺寸不同,实际使用时需要读取每张图片的尺寸进行调整。
- 检查输出文件夹:
- 检查输出文件夹是否存在,如果不存在则创建它。
- 这确保了转换后的JSON文件有地方保存。
- 遍历所有YOLOv5标签文件并转换:
- 将这个JSON对象保存为一个JSON文件,文件名与原始TXT文件名相对应。
- 创建一个LabelMe格式的JSON对象,包含文件版本、形状数据、图片路径等信息。
- 调用
yolo_to_labelme
函数进行转换,得到LabelMe格式的形状数据。 - 遍历指定文件夹中的所有TXT文件,对于每个文件
- 保存LabelMe格式JSON文件:
- 将生成的LabelMe JSON文件保存到指定的输出文件夹中,
- 文件名与原YOLOv5标签文件名相对应,但扩展名改为
.json
。
相关资源推荐
- labelme转YOLOv8、YOLOv5 标签格式 标注数据_labelme按yolo格式保存
- 【经典论文解读】YOLACT 实例分割(YOLOv5、YOLOv8实例分割的基础)
- 一文实现yolov5实例分割(数据标注、标签转换、模型训练、模型推理)
- YOLOv5代码解析——模型结构篇_yolo打印模型结构
分享完成~
热门推荐
武汉体育学院联手中国肝炎防治基金会,打造乙肝防治科普课堂
胡鹏教授和侯金林教授的新药研究:慢性乙肝治疗迎来曙光
慢性乙肝防治指南:症状、治疗到康复全程解析
2024世卫组织乙肝防治指南出炉,六大更新助力全球消除乙肝威胁
亲子鉴定:揭秘血缘关系的科学利器
高通量测序技术:亲子鉴定的革命性突破
赤水丹霞几月份去最好?赤水丹霞建议游玩时间
亚洲女演员热休克离世,办公室人群如何预防?
热休克急救指南:关键时刻救命技巧
杜甫笔下的王昭君:一个时代的“悲”情
王昭君和亲呼韩邪:一段改变汉匈关系的传奇
探访湖北省兴山县,揭秘王昭君故里
王昭君:四大美女中最勇敢的那个
TikTok年末狂欢:舞蹈挑战VS表情包大战
易中天称乾隆“在位60年没干一件好事”被起诉,法院这样判
河南人口流出57万:原因、影响与应对之道
河南省农村养老难题:现状、挑战与对策
人口流失300万背后:河南四大城市如何破局?
大型原创舞剧《西施》:一场古典美学与现代艺术的完美融合
舞剧《孔子》:用舞蹈演绎春秋时期的思想巨匠
原创舞剧《乐和长歌》:以编钟文化为引,演绎春秋战国的楚式浪漫
你家的氛围组就位了吗?盘点10款喜庆又好看的”年宵花“→
百年品牌需要传承更需要创新
人才引进与培养:打造高效人才队伍,提升企业竞争力
无人零售店的商业模式探索
丹霞地貌怎么形成的外力作用
10个缓解肩部疼痛的瑜伽体式,与肩痛说拜拜
舞剧《西施》服装设计惊艳亮相,阳东霖贾雷再创佳作
舞剧《西施》全国巡演火爆,用创新演绎传统文化
探寻历史珍藏:走进大名故城遗址博物馆