Yoloで物体検出モデルを作成する際に必要なのが、アノテーション作業です。
弊社では、これまでアノテーション作業にLabelImgを使用してきました。当時の紹介記事はこちらです。
Annotationツール比較:labelImgとVoTT(YOLO・SSD両対応のデータセット)
LabelImgは、UIが直感的で、アイコンもわかりやすく、操作マニュアルがなくても簡単に使えるのが特長でした。
しかし現在、LabelImgはアプリの更新が停止しており、将来的に継続して使用できる保証がありません。
さらに、最新のOSとの互換性が心配されることや、複数人での同時作業、Webベースでの活用が難しい点も課題になっています。
こうした背景を踏まえ、今後はより柔軟に使えるWebベースのアノテーションツール「Label Studio」の活用を進めています。
Label Studioは、Webブラウザ上で動作し、複数人で同時に利用できる、拡張性の高いアノテーションツールです。
本記事では、LabelImgの代替ツールとしてLabel Studioの活用方法を、Yoloによる物体検出を例に、画像の取り込みから矩形の作図、エクスポートまでの流れをご紹介します。
Label StudioはDockerコンテナ上で動作するツールです。
今回は、Windows環境で「E:\LabelStudio」フォルダをデータ保存先に設定し、データ管理する構成としました。
・Dockerイメージの取得
【コマンド】
docker pull heartexlabs/label-studio:latest
・Label Studioの起動
【コマンド】
docker run -it -p 8080:8080 -v E:\labelstudio:/label-studio/data heartexlabs/label-studio:latest
・アクセス方法
起動後、Webブラウザで以下にアクセスします。
http://localhost:8080
※IPアドレスを指定することで、同一ネットワーク内の他のPCからもアクセス可能です。
以下に、Label Studioを使用したアノテーション作業の流れを紹介します。
・プロジェクトの作成
![]() |
・クラスの設定
Labeling Interface → Browse Templates →「Object Detection with Bounding Boxes」を選択します。
![]() |
![]() |
・クラス名編集
エディタに表示されるクラス名の雛形を、任意のクラス名に編集します。
![]() |
ラベルの色は「Visual」から変更可能です。
![]() |
・画像の取り込み
画像は「Go to Import」からインポートします。
![]() |
注意点として、Label Studioにインポートした画像はファイル名が自動でリネームされるため、ファイル管理時はオリジナルファイルとの紐付けに注意が必要です。
・画像リネーム
![]() |
・矩形の作図
矩形を描画した後は、必ず「SUBMIT」を押して保存してください。
SUBMITを行わないと、作業内容が反映されません。
・エクスポート
「Export」からYOLO形式のテキストデータを出力できます。
出力ファイルはZIP形式でまとめてダウンロードされます。
YOLOなどの画像物体検出モデルの制作において、学習データとなる画像とアノテーションのセットは以下の点に留意が必要です。
・再利用しやすい形で残すこと
YOLOだけではく他の物体検出の仕組みでも同じデータセットを流用できる
・ラベリングの品質がモデルの品質と密接に関わること
どこまでを囲うか、どのクラスとして分類するかの判断がぶれてしまうと、モデル性能に直接影響を与えます。一人で作業している時でも、たくさんのラベルを付けているうちに、以前の基準と変わってきてしまう。複数人でラベル付けを実施する場合は、この基準や品質を一定に保てるかどうかが非常に重要になります。
LabelimgはローカルPCで実行するツール、LabelStudioは、ネットワーク上で動作するクライアントサーバ(WEBアプリ)なので、元々異なるユースケースを対象に開発されていると考えられます。
・Labelimg
LabelImgは、"画像と同じフォルダに直接YOLO形式のテキストファイルを保存してくれる"ため、ファイル管理が非常にシンプルで整合性を確保しやすいというメリットがあります。
Labelimgのデメリットは前述のように、開発が止まっていること、複数人での共同作業に向かないことが挙げられます。
・LabelStudio
一方、Label Studioは、画像をインポートした時点で"ファイル名の先頭にランダムな文字列が付与される仕様"になっていて、これは、同名のファイルが登録された場合でも、データの衝突を防ぎ、一意に管理できるようにするための仕組みです。
複数人が同時に作業するWebアプリとして、アップロードされるすべてのファイル名を必ず一意に保つことが求められますので必然の仕様と思います。
ImageStudioからエクスポートしたデータは、当然ながら画像とアノテーションデータの整合が取れた状態になっているものの、ファイル名の先頭にランダムな文字列が付与されることで、ファイル名でソートした際に元の並び順が崩れてしまう点が、弊社のワークフローの中では、使いづらいと感じています。
(せめて、ファイル名の末尾に文字列が付与される仕様であれば、ソート順を維持しながらLabel Studio側の管理と両立できるのではないかと思います。)
例えば、弊社のように動画から切り出した静止画のファイル名は、そのまま時間軸での並びになっていますので、動画のフレーム数換算で何秒経過した時点かを推測できるのですが、リネームされてしまってはこの時間軸の情報が失われてしまいます。
▼この記事を書いたひと
R&Dセンター 渡邉 裕樹
位置情報、GIS関連が得意です。この道20年やってます。