機械学習モデルの精度を高めるためには、高品質で正確なデータセットが不可欠であり、その鍵となるのがデータのアノテーションです。アノテーションデータの品質は、モデルの性能向上や信頼性の確保に直接的に影響するため、効果的かつ高品質なアノテーションを行うためには、柔軟かつ使いやすいツールが必要です。本記事では、多様なデータタイプに対応したオープンソースのアノテーションツール「Label Studio」のDockerを用いた環境構築方法について解説します。
Label Studioのインストールのみでよい場合は3章まで、Segment Anything Modelも必要な場合は5章まで行って下さい。
目次
1. 前提条件
本記事の内容はUbuntu 24.04で動作確認を行いましたが、それほど環境にシビアではないと思いますので、Ubuntu 22.04等の別バージョンでも概ね問題なく動作するかと思います。
本記事で使用する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
2. 事前準備:ユーザ/グループの作成
将来的に役割が異なるユーザごとの権限管理を行うことを想定して、以下のユーザを作成しておきます。
- システム管理者用ユーザ (sys-admin)
- Label Studioサーバの構築、バックアップの設定、障害対応等を実施する想定のユーザ
- 運用管理者用ユーザ (ops-admin)
- プロジェクトの作成・削除、データの取り込み等のサーバ上での作業を実施する想定のユーザ
2.1. グループを作成する
sudo groupadd -g 1003 sys-admin
sudo groupadd -g 1004 ops-admin
sudo groupadd -g 1005 labelstudio
2.2. システム管理者用ユーザ (sys-admin) を作成する
sudo adduser --uid 1003 --gid 1003 sys-admin
sudo gpasswd -a sys-admin sudo
sudo usermod -aG docker sys-admin
sudo usermod -aG labelstudio sys-admin
2.3. 運用管理者用ユーザ (ops-admin) を作成する
sudo adduser --uid 1004 --gid 1004 ops-admin
sudo usermod -aG labelstudio ops-admin
2.4. ユーザを切り替える
sudo su - sys-admin
※以後、4章までの作業はすべてシステム管理者用ユーザで行います。
3. Label Studioのインストール
3.1. docker networkを作成する
docker network create label-studio
3.2. Label Studioをcloneする
cd /opt
sudo git clone https://github.com/Lot4Fun/label-studio.git
3.3. データ保存用ディレクトリを作成して権限を変更する
※必ずLabel Studioの初回起動前に実施しておいて下さい。
sudo mkdir -p /opt/label-studio/mydata/local_storage
sudo chown -R ops-admin:labelstudio /opt/label-studio/mydata
sudo chmod -R 775 /opt/label-studio/mydata
3.4. 動作確認
Label Studioを起動して、ブラウザから http://{IP_ADDRESS}:8080
にアクセスできれば完了。
cd /opt/label-studio
docker compose -f compose.yaml up -d
4. Segment Anything Modelのインストール
4.1. Label Studio ML Backendをcloneする
cd /opt
sudo git clone https://github.com/Lot4Fun/label-studio-ml-backend.git
4.2. Legacy Tokenを取得する
Personal Access TokenではなくLegacy Tokenを使用するため、メニュー > Organization > API Tokens SettingsからLegacy Tokensを有効化する。


Account & Settings
からLegacy Tokenを取得しておく。(参考)

4.3. 環境変数を設定する
docker-compose.yml
内で以下の2つの環境変数を設定する。
- LABEL_STUDIO_HOST : Label StudioサーバのURL (IPアドレス) を設定
- LABEL_STUDIO_ACCESS_TOKEN : 先程取得したトークンを設定
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}
4.4. 動作確認
ML Backendを起動し、curlで以下のようなレスポンスが返ってくれば完了。
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"}
5. モデルの接続設定
Segment Anything Modelを使用するためのLabel Studio上での詳細な情報は公式ドキュメントのSet up the Projectをご確認下さい。
ここでは車のセグメンテーションを行うタスクを想定して説明を行います。
5.1. プロジェクトを作成
Custom templateを選択する。

以下のXMLをLabeling Interfaceに貼り付ける。
<View>
<Image name="image" value="$image" zoom="true"/>
<Header value="Brush Labels"/>
<BrushLabels name="tag" toName="image">
<Label value="Car" background="#FF0000"/>
</BrushLabels>
<Header value="Rectangle Labels"/>
<RectangleLabels name="tag3" toName="image" smart="true">
<Label value="Car" background="#000000" showInline="true"/>
</RectangleLabels>
</View>

5.2. モデルの接続
プロジェクト作成後、プロジェクトの Settings > Model
から接続設定を行う。
- Name : (任意)
- Backend URL : http://segment_anything_model:9090
- Select authentication method : No Authentication (デフォルト)
- Interactive preannotations : 有効化する

6. SAMの使い方例
アノテーションを行う車の画像をimportし、以下を選択する。
- Auto-Annotationを有効化する
- Bounding Boxでの選択モードにする
- Rectangle LabelsのCarを選択する

Bounding Boxで車を囲うと、数秒後に自動的にセグメンテーションマスクが作成される。
