使用Label Studio 导入并查看已有标注数据集在计算机视觉项目中我们经常需要复用公开数据集或他人分享的标注数据。这些数据集通常以特定格式存储标签例如 YOLO 格式的.txt文件。然而Label Studio 作为一款强大的开源标注工具默认不支持直接导入单个标签文件它需要特定的 JSON 结构来识别标注信息。本文将手把手教你如何将 YOLO 格式的标注数据转换为 Label Studio 可识别的 JSON 文件并成功导入可视化查看每一个标注框的位置。问题分析Label Studio 导入标注数据时期望接收一个 JSON 数组每个元素包含数据路径和对应的预测或标注结果。结构大致如下[{data:{image:/data/local-files/?d./images/sample.jpg},predictions:[{result:[{id:box1,type:rectanglelabels,from_name:label,to_name:image,value:{x:10.0,y:20.0,width:30.0,height:40.0,rectanglelabels:[cat]}}]}]}]而我们手头的数据往往是 YOLO 格式的.txt文件每一行代表一个标注框格式为class_id x_center y_center width height所有坐标值均已归一化到 [0, 1] 之间。因此我们需要一个转换脚本将 YOLO 标签转换为 Label Studio 所需的 JSON 结构。准备工作在开始之前请确保你的环境中已安装Python 3.6Label Studio可通过pip install label-studio安装一个包含图片和 YOLO 标签文件夹的数据集Python 转换脚本下面这个脚本可以将 YOLO 格式的标签批量转换为 Label Studio 可导入的 JSON 文件。请根据你的数据集修改路径和类别列表。importosimportjson# 配置区 IMAGE_DIR./images# 图片文件夹路径LABEL_DIR./labels# 标签文件夹路径OUTPUT_JSON./labelstudio.json# 输出文件路径CLASSES[fire,smoke]# 你的类别列表顺序需与 YOLO 类别索引一致# tasks[]forimg_nameinos.listdir(IMAGE_DIR):ifnotimg_name.lower().endswith((.jpg,.jpeg,.png)):continuebase_nameos.path.splitext(img_name)[0]label_pathos.path.join(LABEL_DIR,base_name.txt)# 构建基础 task 结构task{data:{image:f/data/local-files/?d{IMAGE_DIR}/{img_name}},predictions:[]}ifos.path.exists(label_path):withopen(label_path,r)asf:linesf.readlines()annotations[]foridx,lineinenumerate(lines):lineline.strip()ifnotline:continuepartsline.split()class_idxint(parts[0])x_centerfloat(parts[1])y_centerfloat(parts[2])widthfloat(parts[3])heightfloat(parts[4])# Label Studio 使用百分比坐标0-100需将归一化坐标转换annotation{result:[{id:f{base_name}_{idx},type:rectanglelabels,from_name:label,to_name:image,value:{x:(x_center-width/2)*100,y:(y_center-height/2)*100,width:width*100,height:height*100,rectanglelabels:[CLASSES[class_idx]]}}]}annotations.append(annotation)task[predictions]annotations tasks.append(task)# 写入 JSON 文件withopen(OUTPUT_JSON,w)asf:json.dump(tasks,f,indent2)print(f转换完成共处理{len(tasks)}张图片输出文件{OUTPUT_JSON})重要说明脚本中的图片路径使用/data/local-files/?d...格式这是 Label Studio 本地文件存储的约定路径。如果你的图片放在其他位置请相应调整。运行脚本懂行的同学可直接跳到下一节本节介绍如何在终端中运行python脚本创建 Python 文件在你的数据集文件夹内新建一个文本文件例如convert.txt将上面的 Python 代码完整复制进去。保存并重命名按CtrlS保存文件这一步非常重要否则修改不会生效。将文件名改为convert.py注意扩展名是.py不是.txt。打开终端在文件夹空白处按住Shift键并右键点击选择“在此处打开 PowerShell 窗口”或“在终端中打开”。-或者直接打开命令行使用cd命令切换到该文件夹。运行脚本输入以下命令并回车python convert.py如果你的系统安装了 Python 3 且默认命令是python3请使用python3 convert.py检查输出运行成功后你会在文件夹内看到一个labelstudio.json文件。打开它内容应该类似于[{data:{image:/data/local-files/?d./images/bothFireAndSmoke_UAV000004.jpg},predictions:[{result:[{id:bothFireAndSmoke_UAV000004_0,type:rectanglelabels,from_name:label,to_name:image,value:{x:81.90,y:57.32,width:4.82,height:2.15,rectanglelabels:[smoke]}}]}]}]这说明转换成功标注数据已准备就绪。导入 Label Studio1. 准备数据源Label Studio 默认关闭本地文件存储功能。要启用它你需要在项目根目录下创建一个名为mydata的文件夹注意名称固定。在 Label Studio 的启动目录下新建mydata文件夹。将你的图片文件夹例如images复制或移动到mydata内。最终结构应为mydata/ └── images/ ├── img001.jpg ├── img002.jpg └── ...2. 启动 Label Studio在终端中输入label-studio启动后Label Studio 会自动识别mydata文件夹并开启本地数据源功能。3. 创建项目并导入 JSON打开浏览器访问http://localhost:8080。点击Create创建一个新项目填写项目名称例如YOLO 数据集预览。在Labeling Setup中选择Object Detection with Bounding Boxes模板并添加你的类别fire,smoke。点击Save进入项目页面。在项目页面点击右上角的Import按钮选择你生成的labelstudio.json文件并上传。4. 配置数据源上传完成后你可能会看到图片无法显示这是因为 Label Studio 还不知道去哪里找图片文件。我们需要手动配置数据源点击右上角的Settings齿轮图标。在左侧菜单中选择Cloud Storage。点击Add Source Storage。在弹出的窗口中Storage Type选择Local files。Absolute local path填写mydata文件夹的绝对路径例如/home/user/mydata或C:\Users\YourName\mydata。File Filter可以留空或填写.*\.(jpg|jpeg|png)。Treat every bucket object as a source file保持默认。点击Check Connection测试连接成功后点击Add Storage。5. 同步数据添加存储源后回到项目页面点击右上角的Sync按钮同步图标。Label Studio 会将 JSON 中引用的图片路径与mydata文件夹中的实际文件进行匹配。同步完成后点击任意一张图片你应该就能看到 YOLO 标注框完美地显示在图片上了常见问题Q导入后图片显示为空白A最常见的原因是数据源配置不正确。请确保mydata文件夹存在于 Label Studio 启动目录下。图片确实在mydata的子文件夹中。JSON 中的图片路径与实际存储路径一致。Q标注框位置不对A请检查 YOLO 坐标是否已正确转换为百分比坐标。脚本中已经做了转换(x_center - width/2) * 100。如果仍然不对可能是 YOLO 格式中的坐标顺序或归一化方式有差异。Q类别名称显示为数字A请确保在 Label Studio 的标注模板中定义的类别顺序与 Python 脚本中的CLASSES列表顺序完全一致。总结通过上述步骤你可以轻松地将任何 YOLO 格式标注的数据集导入 Label Studio并可视化查看所有标注框。这个技巧不仅适用于学习他人数据集的标注风格也适合团队协作时统一标注格式。如果你经常需要处理不同格式的标注数据建议将转换脚本保存为通用工具只需修改类别列表和路径即可快速复用。
使用Label Studio 导入并查看已有标注数据集
发布时间:2026/5/17 1:01:58
使用Label Studio 导入并查看已有标注数据集在计算机视觉项目中我们经常需要复用公开数据集或他人分享的标注数据。这些数据集通常以特定格式存储标签例如 YOLO 格式的.txt文件。然而Label Studio 作为一款强大的开源标注工具默认不支持直接导入单个标签文件它需要特定的 JSON 结构来识别标注信息。本文将手把手教你如何将 YOLO 格式的标注数据转换为 Label Studio 可识别的 JSON 文件并成功导入可视化查看每一个标注框的位置。问题分析Label Studio 导入标注数据时期望接收一个 JSON 数组每个元素包含数据路径和对应的预测或标注结果。结构大致如下[{data:{image:/data/local-files/?d./images/sample.jpg},predictions:[{result:[{id:box1,type:rectanglelabels,from_name:label,to_name:image,value:{x:10.0,y:20.0,width:30.0,height:40.0,rectanglelabels:[cat]}}]}]}]而我们手头的数据往往是 YOLO 格式的.txt文件每一行代表一个标注框格式为class_id x_center y_center width height所有坐标值均已归一化到 [0, 1] 之间。因此我们需要一个转换脚本将 YOLO 标签转换为 Label Studio 所需的 JSON 结构。准备工作在开始之前请确保你的环境中已安装Python 3.6Label Studio可通过pip install label-studio安装一个包含图片和 YOLO 标签文件夹的数据集Python 转换脚本下面这个脚本可以将 YOLO 格式的标签批量转换为 Label Studio 可导入的 JSON 文件。请根据你的数据集修改路径和类别列表。importosimportjson# 配置区 IMAGE_DIR./images# 图片文件夹路径LABEL_DIR./labels# 标签文件夹路径OUTPUT_JSON./labelstudio.json# 输出文件路径CLASSES[fire,smoke]# 你的类别列表顺序需与 YOLO 类别索引一致# tasks[]forimg_nameinos.listdir(IMAGE_DIR):ifnotimg_name.lower().endswith((.jpg,.jpeg,.png)):continuebase_nameos.path.splitext(img_name)[0]label_pathos.path.join(LABEL_DIR,base_name.txt)# 构建基础 task 结构task{data:{image:f/data/local-files/?d{IMAGE_DIR}/{img_name}},predictions:[]}ifos.path.exists(label_path):withopen(label_path,r)asf:linesf.readlines()annotations[]foridx,lineinenumerate(lines):lineline.strip()ifnotline:continuepartsline.split()class_idxint(parts[0])x_centerfloat(parts[1])y_centerfloat(parts[2])widthfloat(parts[3])heightfloat(parts[4])# Label Studio 使用百分比坐标0-100需将归一化坐标转换annotation{result:[{id:f{base_name}_{idx},type:rectanglelabels,from_name:label,to_name:image,value:{x:(x_center-width/2)*100,y:(y_center-height/2)*100,width:width*100,height:height*100,rectanglelabels:[CLASSES[class_idx]]}}]}annotations.append(annotation)task[predictions]annotations tasks.append(task)# 写入 JSON 文件withopen(OUTPUT_JSON,w)asf:json.dump(tasks,f,indent2)print(f转换完成共处理{len(tasks)}张图片输出文件{OUTPUT_JSON})重要说明脚本中的图片路径使用/data/local-files/?d...格式这是 Label Studio 本地文件存储的约定路径。如果你的图片放在其他位置请相应调整。运行脚本懂行的同学可直接跳到下一节本节介绍如何在终端中运行python脚本创建 Python 文件在你的数据集文件夹内新建一个文本文件例如convert.txt将上面的 Python 代码完整复制进去。保存并重命名按CtrlS保存文件这一步非常重要否则修改不会生效。将文件名改为convert.py注意扩展名是.py不是.txt。打开终端在文件夹空白处按住Shift键并右键点击选择“在此处打开 PowerShell 窗口”或“在终端中打开”。-或者直接打开命令行使用cd命令切换到该文件夹。运行脚本输入以下命令并回车python convert.py如果你的系统安装了 Python 3 且默认命令是python3请使用python3 convert.py检查输出运行成功后你会在文件夹内看到一个labelstudio.json文件。打开它内容应该类似于[{data:{image:/data/local-files/?d./images/bothFireAndSmoke_UAV000004.jpg},predictions:[{result:[{id:bothFireAndSmoke_UAV000004_0,type:rectanglelabels,from_name:label,to_name:image,value:{x:81.90,y:57.32,width:4.82,height:2.15,rectanglelabels:[smoke]}}]}]}]这说明转换成功标注数据已准备就绪。导入 Label Studio1. 准备数据源Label Studio 默认关闭本地文件存储功能。要启用它你需要在项目根目录下创建一个名为mydata的文件夹注意名称固定。在 Label Studio 的启动目录下新建mydata文件夹。将你的图片文件夹例如images复制或移动到mydata内。最终结构应为mydata/ └── images/ ├── img001.jpg ├── img002.jpg └── ...2. 启动 Label Studio在终端中输入label-studio启动后Label Studio 会自动识别mydata文件夹并开启本地数据源功能。3. 创建项目并导入 JSON打开浏览器访问http://localhost:8080。点击Create创建一个新项目填写项目名称例如YOLO 数据集预览。在Labeling Setup中选择Object Detection with Bounding Boxes模板并添加你的类别fire,smoke。点击Save进入项目页面。在项目页面点击右上角的Import按钮选择你生成的labelstudio.json文件并上传。4. 配置数据源上传完成后你可能会看到图片无法显示这是因为 Label Studio 还不知道去哪里找图片文件。我们需要手动配置数据源点击右上角的Settings齿轮图标。在左侧菜单中选择Cloud Storage。点击Add Source Storage。在弹出的窗口中Storage Type选择Local files。Absolute local path填写mydata文件夹的绝对路径例如/home/user/mydata或C:\Users\YourName\mydata。File Filter可以留空或填写.*\.(jpg|jpeg|png)。Treat every bucket object as a source file保持默认。点击Check Connection测试连接成功后点击Add Storage。5. 同步数据添加存储源后回到项目页面点击右上角的Sync按钮同步图标。Label Studio 会将 JSON 中引用的图片路径与mydata文件夹中的实际文件进行匹配。同步完成后点击任意一张图片你应该就能看到 YOLO 标注框完美地显示在图片上了常见问题Q导入后图片显示为空白A最常见的原因是数据源配置不正确。请确保mydata文件夹存在于 Label Studio 启动目录下。图片确实在mydata的子文件夹中。JSON 中的图片路径与实际存储路径一致。Q标注框位置不对A请检查 YOLO 坐标是否已正确转换为百分比坐标。脚本中已经做了转换(x_center - width/2) * 100。如果仍然不对可能是 YOLO 格式中的坐标顺序或归一化方式有差异。Q类别名称显示为数字A请确保在 Label Studio 的标注模板中定义的类别顺序与 Python 脚本中的CLASSES列表顺序完全一致。总结通过上述步骤你可以轻松地将任何 YOLO 格式标注的数据集导入 Label Studio并可视化查看所有标注框。这个技巧不仅适用于学习他人数据集的标注风格也适合团队协作时统一标注格式。如果你经常需要处理不同格式的标注数据建议将转换脚本保存为通用工具只需修改类别列表和路径即可快速复用。