DockerでLabel Studio+Segment Anything Modelの環境構築を行う

機械学習モデルの精度を高めるためには、高品質で正確なデータセットが不可欠であり、その鍵となるのがデータのアノテーションです。アノテーションデータの品質は、モデルの性能向上や信頼性の確保に直接的に影響するため、効果的かつ高品質なアノテーションを行うためには、柔軟かつ使いやすいツールが必要です。本記事では、多様なデータタイプに対応したオープンソースのアノテーションツール「Label Studio」のDockerを用いた環境構築方法について解説します。

  1. 前提条件
  2. Label Studioのインストール
  3. Segment Anything Modelのインストール
  4. Label Studio上での設定の注意事項

本記事の内容はUbuntu 24.04で動作確認を行いましたが、それほど環境にシビアではないと思いますので、Ubuntu 22.04やWindows等の別のOSでも概ね問題なく動作するかと思います。

本記事で使用するLabel StudioおよびML Backend (Segment Anything Model)は使いやすいように若干の修正を加えているため、オリジナルのソースを使用したい方は以下のリポジトリを参照してください。なお、本記事で使用するソースはオリジナルのリポジトリの変更を適時取り込んでいるため、できるだけ都度動作確認をしてはいますが、場合によっては不具合が含まれる場合もある点につきまして予めご了承ください。

本記事で使用しているリポジトリ

オリジナルのリポジトリ

事前にインストールしておく必要があるものと、動作確認を行ったバージョンは以下の通りです。

必須項目

  • Docker
docker --version
Docker version 27.3.1, build ce12230
  • Docker Compose
docker compose version
Docker Compose version v2.29.7

Segment Anything Modelを使用する場合のみ必須

  • NVIDIA-Drivers
nvidia-smi

# 一部抜粋
NVIDIA-SMI 560.35.03
Driver Version: 560.35.03
CUDA Version: 12.6
  • NVIDIA Container Toolkit
dpkg -l | grep nvidia-container-toolkit
ii  nvidia-container-toolkit       1.16.2-1  amd64  NVIDIA Container toolkit
ii  nvidia-container-toolkit-base  1.16.2-1  amd64  NVIDIA Container Toolkit Base

docker networkを作成

docker network create label-studio

ソースをclone

cd /opt
sudo git clone https://github.com/Unvelyze/label-studio.git

Label Studioの起動

cd /opt/label-studio
docker compose -f compose.yaml up -d

動作確認

ブラウザから http://{IP_ADDRESS}:8080 にアクセスできれば完了。

Segment Anything ModelをLabel Studioと連携させたい場合は以下の設定を行います。

Label Studio ML Backendのclone

cd /opt
sudo git clone https://github.com/Unvelyze/label-studio-ml-backend.git

環境変数の設定

docker-compose.yml 内で以下の2つの環境変数を設定する。

  • LABEL_STUDIO_HOST : Label StudioサーバのURLを設定
  • LABEL_STUDIO_ACCESS_TOKEN : Label Studioを開いて右上の Account & Settings から取得可能(参考
sudo vi /opt/label-studio-ml-backend/label_studio_ml/examples/segment_anything_model/docker-compose.yml
...
environment:
  ...
  - LABEL_STUDIO_HOST=http://{IP_ADDRESS}:8080
  - LABEL_STUDIO_ACCESS_TOKEN={YOUR_ACCESS_TOKEN}
...

ML Backendの起動

cd /opt/label-studio-ml-backend/label_studio_ml/examples/segment_anything_model
docker compose up -d

動作確認

以下のようなレスポンスが返ってくれば完了。

curl http://localhost:9090/
{"model_class":"SamMLBackend","status":"UP"}

Segment Anything Modelを使用するためのLabel Studio上での設定は公式ドキュメントをご確認いただければと思いますが、Dockerを使用している際の注意点を記載しておきます。

Label Studioでプロジェクトを作成して Settings > Model からML Backendとの接続を設定する際に Backend URL は以下の画像のようにしてください。

# Backend URL
http://segment_anything_model:9090