yolo笔记1:Label Studio 部署

简介

在计算机视觉和 NLP 项目中,数据标注往往是最耗时的一环。Label Studio 是目前最流行的开源数据标注工具之一,它界面友好、配置灵活,支持图像、文本、音频等多种数据格式。

本文将介绍如何使用 Docker 部署 Label Studio,涵盖从个人快速测试基于数据库的生产环境两种方案,并教你如何直接读取本地硬盘上的大量图片。


方案一:快速启动(适合个人测试)

如果你只是想快速体验一下,或者标注的数据量很小(几百张图片),直接使用 Docker 命令行启动是最简单的方式。

1. 启动命令

确保你已安装 Docker,然后在终端运行:

docker run -it -p 8080:8080 \
    -v $(pwd)/mydata:/label-studio/data \
    heartexlabs/label-studio:latest

2. 参数解析

  • -p 8080:8080: 将容器的 8080 端口映射到电脑的 8080 端口。
  • -v $(pwd)/mydata:/label-studio/data: (非常重要) 数据持久化挂载。
    • Label Studio 默认将数据存储在容器内的 SQLite 数据库中。
    • 如果不加这一行,当你关闭或重启容器时,所有的账号信息和标注数据都会丢失
    • 加上这一行后,所有数据会保存在你当前目录下的 mydata 文件夹里。

启动后,访问浏览器 http://localhost:8080 注册账号即可使用。


方案二:生产环境部署(Docker Compose + PostgreSQL)

如果你是团队协作,或者数据量达到数万级别,Label Studio 默认的 SQLite 数据库会变卡甚至崩溃。强烈建议使用 PostgreSQL 作为后端数据库。

我们需要使用 Docker Compose 来编排 Label Studio 和 PostgreSQL 两个容器。

1. 创建 docker-compose.yml

新建一个文件夹,在其中创建文件 docker-compose.yml,填入以下内容:

version: "3.9"
services:
  app:
    image: heartexlabs/label-studio:latest
    restart: always
    ports:
      - "8080:8080"
    environment:
      - DJANGO_DB=default
      - POSTGRES_NAME=postgres
      - POSTGRES_USER=postgres
      - POSTGRES_PASSWORD=labelstudio_secret # 建议修改此密码
      - POSTGRES_HOST=db
      - POSTGRES_PORT=5432
      - LABEL_STUDIO_DISABLE_SIGNUP_WITHOUT_LINK=true # 生产环境建议开启,禁止陌生人随意注册
    volumes:
      - ./ls_data:/label-studio/data
    depends_on:
      - db

  db:
    image: postgres:13-alpine
    restart: always
    environment:
      - POSTGRES_USER=postgres
      - POSTGRES_PASSWORD=labelstudio_secret # 必须与上面保持一致
      - POSTGRES_DB=postgres
    volumes:
      - ./postgres_data:/var/lib/postgresql/data

2. 启动服务

在包含该文件的目录下运行:

docker-compose up -d

这样你就拥有了一个高性能、数据独立存储的标注平台。


进阶技巧:无需上传,直接读取本地图片

在实际项目中,图片集可能高达几百 GB。如果通过浏览器一张张上传到 Label Studio 数据库,不仅慢,还会导致数据库体积爆炸。

我们可以通过配置,让 Label Studio 直接读取服务器/本地硬盘上的文件夹, 或者七牛等对象存储

1. 修改启动命令

我们需要给容器添加一个环境变量 LABEL_STUDIO_LOCAL_FILES_SERVING_ENABLED=true,并将图片目录挂载进去。

如果是 Docker Run 方式:

docker run -it -p 8080:8080 \
    -v $(pwd)/mydata:/label-studio/data \
    -v /path/to/your/images:/label-studio/files \
    -e LABEL_STUDIO_LOCAL_FILES_SERVING_ENABLED=true \
    heartexlabs/label-studio:latest

(注意将 /path/to/your/images 替换为你电脑上真实的图片文件夹路径)

如果是 Docker Compose 方式:
docker-compose.ymlapp 服务下添加:

    environment:
      - LABEL_STUDIO_LOCAL_FILES_SERVING_ENABLED=true
      # ... 其他变量保持不变
    volumes:
      - ./ls_data:/label-studio/data
      - /path/to/your/images:/label-studio/files # 挂载图片目录

2. 在网页端配置连接

  1. 启动服务并登录 Label Studio。
  2. 进入项目,点击 Settings -> Cloud Storage
  3. 点击 Add Source Storage
  4. Storage Type 选择 Local files
  5. Absolute local path 填入容器内的路径(例如 /label-studio/files)。
  6. 开启 Treat every bucket object as a source file
  7. 点击 Sync

现在,Label Studio 就会直接索引你硬盘上的图片,而不需要物理复制文件。