YOLO:使用labelme进行图片数据标签制作,并转换为YOLO格式

作者:CSDN @ 养乐多

本文将介绍如何使用 labelme 进行图片数据标签制作的方法,并将标签的格式从 JSON 格式转换为 YOLO 格式。


文章目录


一、安装labelme

试过了labelme和labelImg,labelImg经常奔溃不太好用,最终选择labelme。

python 复制代码
pip install labelme

二、使用流程

运行labelme,

比较好的数据管理方式是,将图片和标注信息分开保存,方便之后数据格式转换和数据集划分的脚本使用。所以需要将标注信息输出路径修改一下。我把图片都保存在images文件夹下了,输出标注信息的路径是和images同级的labels文件夹。最好取消同时保存图像数据按钮,并点击自动保存按钮。

python 复制代码
总结:
1.点击自动保存;
2.更改标注信息输出路径到labels文件夹;
3.取消同时保存图像数据。

打开目录读取数据集,

编辑菜单中选择创建矩形,这是为了YOLO这种目标检测算法做标签用的。语义分割、目标追踪等就选多边形。

拖动矩形框并输入标注名称,点击ok即可自动保存。标注完之后选择下一张。

最后,labels文件夹下会保存所有的标注数据,不过是json格式。

如果想要用到YOLO算法中还需要将json格式修改为YOLO格式。

保存结果如下图所示,

三、json格式转为YOLO格式

category_dict,input_directory,output_directory 。

使用时,需要修改这三个变量。

category_dict:类别字典,对应类别名和类别ID;

input_directory :json保存的目录;

output_directory :YOLO格式标注的目录。

python 复制代码
import json
import os

category_dict = {'飞机': '1'}  # 类别字典

def json_to_yolo(input_file_path, output_directory):
    data = json.load(open(input_file_path, encoding="utf-8"))  # 读取带有中文的文件
    image_width = data["imageWidth"]  # 获取json文件里图片的宽度
    image_height = data["imageHeight"]  # 获取json文件里图片的高度
    yolo_format_content = ''

    for shape in data["shapes"]:
        # 归一化坐标点,并计算中心点(cx, cy)、宽度和高度
        [[x1, y1], [x2, y2]] = shape['points']
        x1, x2 = x1 / image_width, x2 / image_width
        y1, y2 = y1 / image_height, y2 / image_height
        cx = (x1 + x2) / 2
        cy = (y1 + y2) / 2
        width = abs(x2 - x1)
        height = abs(y2 - y1)

        # 将数据组装成YOLO格式
        line = "%s %.4f %.4f %.4f %.4f\n" % (category_dict[shape['label']], cx, cy, width, height)  # 生成txt文件里每行的内容
        yolo_format_content += line

    # 生成txt文件的相应文件路径
    output_file_path = os.path.join(output_directory, os.path.basename(input_file_path).replace('json', 'txt'))
    with open(output_file_path, 'w', encoding='utf-8') as file_handle:
        file_handle.write(yolo_format_content)


input_directory = "E:/DataSet/test/labels/"
output_directory = "E:/DataSet/test/labels-yolo/"

file_list = os.listdir(input_directory)
json_file_list = [file for file in file_list if file.endswith(".json")]  # 获取所有json文件的路径

for json_file in json_file_list:
    json_to_yolo(os.path.join(input_directory, json_file), output_directory)

四、按比例划分数据集(训练、验证、测试)

如果需要将图片和标签数据集按比例划分为训练、验证、测试数据集,请参考以下博客。

参考博客《YOLO:VOC格式数据集转换为YOLO数据集格式》中的第2节。

相关推荐
AI创界者17 小时前
【8G显存福音】最新LTX-2.3-22B-DISTILLED-1.1-VBVR 整合包文生视频、图生视频,支持首尾帧/单图无限时长,50系显卡全适配!
人工智能·音视频
科技新芯17 小时前
ChinaJoy 首日直击!Bidnex 两大 AI 新品正式亮相
人工智能
limingade17 小时前
如何在手机本地不依靠网络-实现真正的端到端语音交互的智能AI应答
人工智能·智能手机·ai机器人·ai外呼·手机本地ai大模型·离线ai机器人·离线ai
m0_敲代码的彭于晏16817 小时前
如何查看自己的电脑是 x64 还是 ARM64 ?
人工智能·电脑
南方程序猴17 小时前
2026年7月最新国内 Codex 安装教程和使用教程:GPT-5.6 完整指南
人工智能·gpt·ai·ai编程
iiiiii1117 小时前
【论文阅读笔记】Reparameterization Proximal Policy Optimization (RPO):将PPO的稳定性引入可微分强化学习
论文阅读·人工智能·笔记·深度学习·机器学习·机器人·具身智能
GitCode官方17 小时前
openPangu-2.0-Pro 模型及技术报告正式开源上线 AtomGit AI
人工智能·华为·开源·harmonyos·atomgit
少年最是17 小时前
体协作系统,用于分析聊天记录中特定人物的荣格八维人格类型。 本文使用 CC-BY-NC-SA . 协议。转载或者 AI 模型/智能体 ...
人工智能
xiaobaihuoke17 小时前
多平台买家账号批量管理技术方案:环境隔离与自动化操作实践
人工智能·亚马逊鲲鹏系统·多平台账号管理·跨境电商买家号
HiEV17 小时前
Mobileye 3.0:自动驾驶科技问题基本解决,Shashua押注物理AI
人工智能·自动驾驶