機械学習
記事内に商品プロモーションを含む場合があります

Label Studioの自動アノテーション(AI支援)にYOLOv8を使う方法

Aru

Label Studioには、アノテーション作業を効率化するためのAI支援機能が搭載されています。これらのAI支援機能を利用するには、専用のバックエンドサーバーが必要です。本記事では、バックエンドとしてYOLOv8を導入し、自動アノテーション機能を活用するための具体的な手順について詳しく解説します。YOLOv8を利用することで、アノテーションの精度向上と効率化を同時に実現できます。

Label Studio ML backendとは

Label Studio ML backendを使うことで以下のような機能が実現できます。

ML backendが実現する機能
  • 事前アノテーション
  • アクティブ ラーニングを使用して、ラベル付けに最も関連性の高いデータを選択
  • AI支援によるインタラクティブなラベルづけ
  • アノテーションしたデータによるモデルのファインチューニング

つまり、これを使えば「学習させたモデルを使ってアノテーションで楽ができる」ということです。

この記事では、AI支援によるインタラクティブなラベル付けを中心に解説します。

なお、Label Studio ML backendは以下のサイトからダウンロードできます。

Github: https://github.com/HumanSignal/label-studio-ml-backend

Label Studio ML backendの使い方

以下の説明は、環境にDocker, Docker Composeがインストールされていることが前提になります。各環境(Windows, Linux, Mac)に合わせてインストールしてください

動作確認した環境はMacOSです。他の環境では若干修正が必要な可能性があります(linuxは大丈夫だと思います)

リポジトリをクローン

Gitからリポジトリをクローンします

git clone https://github.com/HumanSignal/label-studio-ml-backend.git

the simplest backendでLabel Studioへの接続を説明

フォルダの移動

リポジトリの/label_studio_ml/examples/the_simplest_backendに移動します。

docker-compose.ymlを修正

LABEL_STUDIO_HOSTLABEL_STUDIO_API_KEYを自身の環境に合わせて修正します。

version: "3.8"

services:
  model_server:
    build: .
    image: humansignal/the_simplest_backend:v0
    environment:
      - MODEL_DIR=/data/models
      - LABEL_STUDIO_HOST=
      - LABEL_STUDIO_API_KEY=
    ports:
      - 9090:9090
    volumes:
      - "./data/server:/data"

LABEL_STUDIO_HOSTは、http://xxx.xxx.xxx.xxx:8080を入力します。xxx.xxx.xxx.xxxは、自身のPCのIPアドレスです。

dockerで起動するので、localhostはdockerのコンテナになります。ここを、自身のPCのアドレスに書き換えます(例えば、192.168.1.10など)

LABEL_STUDIO_API_KEYは、Label Studioのユーザ設定(Account&Setting)に表示されるAccess Tokenをコピーします

アクセストークン

docker composeで起動する

docker-composeで起動します。初回の起動ではbuildが行われますのでしばらく時間がかかります。

docker-compose up

起動したら、別のターミナルで以下のコマンドを実行します。

curl http://localhost:9090/health

以下のように表示されたら動作しています

{"model_class":"MyModel","status":"UP"}

Label Studioのプロジェクトにバックエンドを紐づける

バックエンドを紐付けしたいプロジェクトのSettingを開き、左のタブからMachine Learningを選択します。

Add Modelをクリックして、http://localhost:9090を入力してValidiate and Saveをクリックします。

Label StudioをDockerで起動している場合は、localhostではなくIPアドレスを設定してください。

接続が正しくできたら、Machine Learningのページにバックエンドが追加されています。

動作確認

the simplest backendは1つ前に設定した結果を返します。例えば、物体検出で枠を設定した後に他の画像に切り替えると、1つ前に設定した位置に枠が表示されます。

その他

examplesには他にもいろいろなバックエンドのサンプルがありますので、自身のアノテーションに合わせて動かしてみてください(図はexampleのフォルダの中身です)

YOLOv8をバックエンドとして使う

YOLOv8をバックエンドとして使うためのリポジトリがGithubにいくつかあったのですが、バージョンの問題か動かなかったので、それらを参考にして、とりあえず動作するバージョンを作成しました。

とりあえあえず、以下の環境で動作を確認しています

  • Label Studio 1.8.2post1
  • YOLOv8 8.0.201

Githubリポジトリ:https://github.com/aruaru0/label-studio-yolov8-backend

リポジトリをクローンする

以下のコマンドでリポジトリをクローンします

git clone https://github.com/aruaru0/label-studio-yolov8-backend.git

モデルをコピーする

YOLOv8のモデルをbest.ptという名前で、クローンしたリポジトリのトップにコピーします。モデルは、公式のプレトレインモデルをbest.ptという名前でコピーしても、自身で学習させたモデルでもOKです。

コピーした後のフォルダは以下のようになります。

Dockerfile         README.md          _wsgi.py           best.pt            docker-compose.yml model.py           requirements.txt
YOLOv8で独自データを学習させる方法はこちら
YOLOv8(YOLOv9)で独自データを使った学習と推論を実践(物体検出)
YOLOv8(YOLOv9)で独自データを使った学習と推論を実践(物体検出)

docker-compose.ymlを修正

LABEL_STUDIO_HOSTLABEL_STUDIO_API_KEYを自身の環境に合わせて修正します。修正内容については、こちらで説明しています。

docker-composeで起動する

docker-composeで起動します。初回の起動ではbuildが行われますのでしばらく時間がかかります。

docker-compose up

起動したら、別のターミナルで以下のコマンドを実行します。

curl http://localhost:9090/health

以下のように表示されたら動作しています

{"model_dir":"/data/models","status":"UP","v2":false}

Label Studioで設定

こちらも上で説明した方法と同じです。

プロジェクトでLabelingを行うと、自動でアノテーション枠がつくようになります。

その他

今回のバックエンドは、予測のみ対応しています。学習などを含めて追加したい場合は、model.pyを修正してください。方法は、Label Studio ML backendのリポジトリに書かれています。

今回はCPUでYOLOv8を動かしているので、予測だけにしました。学習はGPUを使った設定にする必要があるかと思います(dockerなど)

まとめ

バックエンドサーバーの接続は結構トラブります。今回はバックエンドサーバーとしてYOLOv8を接続してみましたが、あらかじめ予測枠をつけたいだけなら、YOLOv8で予測した結果をLabel Studioにインポートする方が楽です。

ただ、LabelStudioも進化していくと思いますので、そのうち完成度が上がってバックエンドの接続も楽になるかもしれません。

とりあえず、ラベルをつけてインポート指定だけなら、以下の記事の手法もおすすめします。

Label Studioを使わない方法
物体検出のアノテーションで楽する方法(YOLOv8+labelImg)
物体検出のアノテーションで楽する方法(YOLOv8+labelImg)

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

ABOUT ME
ある/Aru
ある/Aru
IT&機械学習エンジニア/ファイナンシャルプランナー(CFP®)
専門分野は並列処理・画像処理・機械学習・ディープラーニング。プログラミング言語はC, C++, Go, Pythonを中心として色々利用。現在は、Kaggle, 競プロなどをしながら悠々自適に活動中
記事URLをコピーしました