🐥
Label Studio に既存アノテーションを一括インポートする手順
概要
学習済みモデルで推論して得られた 画像 + セグメンテーションマスク のペアを Label Studio に読み込み、誤検知箇所だけを効率良く修正する事前準備の方法をメモ程度に紹介します。
公式ドキュメントの内容をベースにしていますので、詳細はこちらをご確認ください。
想定読者
- すでに画像セグメンテーションモデルを持っておりアノテーション修正をしたい
- Label Studio をインストール済み (Self-Hosted を筆者は使用)
ゴール
- 画像とマスクを入力すると
tasks.json
を自動生成 - 生成した JSON を Label Studio にインポート
- Web UI で各マスクをブラシツールで微修正できる状態になる
事前準備
1. ディレクトリ構成
project/
├── images/ # 元画像 (JPG, PNG ... )
├── masks/ # 同名のセグメンテーションマスク (PNG)
└── gen_ls_tasks.py # 後述のスクリプト
2. Python ライブラリ
パッケージ管理に uv を使用しています。
Labeling Interface の設定例
以下は ブラシ の最小構成の例です。
ブラシ用ラベル(BrushLabels
)に road と sign を定義していますが、必要に応じて追加 / 変更してください。
<View>
<Header value="Select label and click the image to start"/>
<View style="display:flex;align-items:start;gap:8px;flex-direction:column">
<Image name="image" value="$image" zoom="true" zoomControl="true" rotateControl="true"/>
<RectangleLabels name="label" toName="image" showInline="true"/>
</View>
<TextArea name="transcription" toName="image" editable="true" perRegion="true"
maxSubmissions="1" rows="5" placeholder="memo" displayMode="region-list"/>
<BrushLabels name="tag" toName="image">
<Label value="road" background="rgba(255, 0, 0, 0.7)"/>
<Label value="sign" background="rgba(0, 0, 255, 0.7)"/>
</BrushLabels>
</View>
スクリプトのカスタマイズ
GitHub リポジトリ: https://github.com/go6887/label_studio_segmantation_mask_import
コードの多くはgpt o3に生成してもらっています。
最小限触る必要があるのは 2 か所 だけです。
変数 | 説明 | 例 |
---|---|---|
COLOR_LABEL_MAP |
マスク画像の RGB とラベル名の対応表 | {(255,0,0): "road", (0,0,255): "sign"} |
image フィールド |
Label Studio から参照可能な画像パス |
s3://bucket/path/to/img.png など |
使用方法
uv run python gen_ls_tasks.py \
--images_dir ./images \
--masks_dir ./masks \
--s3_bucket your-bucket-name \
--s3_prefix optional/prefix \
--output tasks.json
引数の意味:
-
images_dir
: 元画像が入ったローカルディレクトリ -
masks_dir
: 対応するマスク(PNG) を保存したディレクトリ -
s3_bucket
: 画像を S3 管理している場合はバケット名 (ローカルのみで運用する場合は省略可) -
s3_prefix
: バケット内のフォルダパス -
output
: 生成されるタスクリスト(JSON) の保存先
コマンドが成功すると tasks.json
が生成されます。
Label Studio へのインポート
- プロジェクト画面右上の Import → Local files を選択
- 先ほど生成した
tasks.json
をアップロード - タスク一覧・アノテーション画面で自動ラベルが反映されていることを確認
- ブラシツールで不要部分を消したり追加したりして修正
まとめ
- 画像 + マスクペアを一括で Label Studio タスク化できる
-
COLOR_LABEL_MAP
と画像パスさえ合わせればどのプロジェクトでも再利用可能 - アノテーション修正作業を短縮でき、学習データの再フィードバックも簡単
自動推論 → Label Studio で修正 → 再学習のループを高速化して、アノテーションコストを削減していきましょう。
Discussion