【Label Studio】如何使用本地存储并导入预标注信息

1. 配置 Docker 启动 Label Studio 时的环境变量

如果已经启动了容器,先停止并删除。

bash 复制代码
sudo docker stop label-studio
sudo docker rm label-studio

启动容器并配置环境变量。注意,挂载目录一定要设置成 images 文件夹的上一级目录,即命令中的 generate_json。

bash 复制代码
sudo docker run -d \
  --name label-studio \
  --restart always \
  -p 8080:8080 \
  -v /opt/data:/label-studio/data \
  -v /opt/generate_json:/label-studio/mydata \
  -e DATA_UPLOAD_MAX_NUMBER_FILES=10000 \
  heartexlabs/label-studio:latest

2. 配置 Local Storage

在 Label Studio 的新建一个项目,进入 Settings,选择 Cloud Storage,然后选择 Add Source Storage,然后选择 Local Files,点击 Next。依次按照下图所示操作:

3. 将 YOLO 格式的预标注信息转为 JSON

首先,你已经使用 YOLO 模型对数据进行了预标注,并将图片和预标注的标签信息在挂载目录 generate_json 内按照下图所示结构放好。然后运行 transform.py 代码。

python 复制代码
import os
import json
 
images_dir = './images'
labels_dir = './labels'
 
# 获取所有图片和标签文件
image_files = os.listdir(images_dir)
label_files = os.listdir(labels_dir)
 
# 创建一个字典来存储标签数据
label_data = {}
 
# 类别映射(假设类别索引到类别名称的映射)
class_map = {
    0: "Falling",
    1: "Person"  # 根据你的实际类别名称修改
}
 
# 解析 YOLO 格式的标签文件
for image_file in image_files:
    # 提取文件名(不带扩展名)
    base_name = os.path.splitext(image_file)[0]
    label_file = f"{base_name}.txt"
 
    if label_file in label_files:
        # 读取标签文件内容
        annotations = []
        with open(os.path.join(labels_dir, label_file), 'r') as f:
            for line in f:
                parts = line.strip().split()
                if len(parts) >= 5:
                    class_index = int(parts[0])
                    class_name = class_map.get(class_index, f"class_{class_index}")
 
                    # 提取边界框信息
                    x_center = float(parts[1])
                    y_center = float(parts[2])
                    width = float(parts[3])
                    height = float(parts[4])
 
                    # 构建 Label Studio 的标注结果
                    annotation = {
                        "from_name": "label",
                        "to_name": "image",
                        "type": "rectanglelabels",
                        "value": {
                            "x": x_center * 100- width * 100/ 2,  # 转换为左上角 x 坐标
                            "y": y_center * 100- height * 100 / 2,  # 转换为左上角 y 坐标
                            "width": width * 100,
                            "height": height * 100,
 
                            "rotation": 0,
                            "rectanglelabels": [class_name]
                        }
                    }
                    annotations.append(annotation)
        label_data[image_file] = annotations
 
# 将数据转换为 Label Studio 的 JSON 格式
label_studio_data = []
for image_file, annotations in label_data.items():
    # 构建 Label Studio 的任务数据结构
    task = {
        "data": {
            "image": f"/data/local-files/?d=images/{image_file}"
        },
        "annotations": [
            {
                "result": annotations
            }
        ]
    }
    label_studio_data.append(task)
 
# 保存为 JSON 文件
output_file = 'output.json'
with open(output_file, 'w') as f:
    json.dump(label_studio_data, f, indent=2)
print(f"转换完成!数据已保存到 {output_file}")

4. 导入预标注信息

在项目首页,点击 Import,然后将刚才产生的 JSON 文件导入 Label Studio,此时 Label Studio 会自动将挂在目录内的图片和标注信息关联出来。注意,你只需要上传 JSON,不需要在页面上上传任何图片。

另外,你需要在 Settings 中配置好标签、标注模板等。

相关推荐
小王毕业啦5 小时前
2005-2024年 省级-总抚养比、儿童抚养比、老年人抚养比数据(xlsx)
大数据·人工智能·数据挖掘·数据分析·社科数据·实证分析·经管数据
小飞象—木兮11 小时前
《销售数据分析标准实践手册》:核心内涵与关键指标、落地销售数据分析的全流程···(附相关材料下载)
大数据·人工智能·数据挖掘·数据分析
码界筑梦坊14 小时前
114-基于Python的1688电脑硬件数据可视化分析系统
开发语言·python·信息可视化·数据分析·毕业设计·echarts·数据可视化
FIT2CLOUD飞致云18 小时前
集成MiniMax,移动端适配,SQLBot开源智能问数系统v1.8.0版本发布
ai·数据分析·开源·智能问数·sqlbot
PaperData19 小时前
1990-2024年全国地震空间分布数据(包含时间、震级、经度、纬度、深度)
数据库·数据分析·经管
收获不止数据库1 天前
达梦9发布会归来:AI 时代,我们需要一款什么样的数据库?
数据库·人工智能·ai·语言模型·数据分析
GIS数据转换器2 天前
“一张图”背景下的地质灾害监测预警与防治能力建设
大数据·人工智能·数据分析·无人机·智慧城市
看海的四叔2 天前
【SQL】SQL-管好你的字符串
大数据·数据库·hive·sql·数据分析·字符串
Mr数据杨2 天前
飞船乘客状态预测与金融风控建模启发
大数据·机器学习·数据分析·kaggle
eqwaak02 天前
4月30号(科技信息差)
python·科技·信息可视化·数据挖掘·数据分析