Shunya Ueta

OSSのアノテーションツール Label Studio を使って、快適にアノテーションする

Google Spread Sheet による即席アノテーションの限界

データ分析で、ラベルがないデータに対して、自分でアノテーション(ラベルを付与)してデータの傾向を素早く掴みたい時がある。 例えば、文章に対してネガティブ・ポジティブなクラスを割り振ったり、画像に対して人が写り込んでいるか否かなどの簡単な分類タスクでは、お手軽に Google Spread Sheet などを使って、500 件のアノテーションはそこまで問題がなく気合でやれる。

実際の流れとしては、GCP を採用している場合、Google BigQuery から SQL でデータを抽出してそのまま Google Sprad Sheet に出力、=image()関数で CDN から画像の URL を参照できたりなどなどかなり便利。 Spread Sheet を共有して複数人でも作業ができるのも魅力的。

だが、文章の特定の部分を選択してタグを付けたかったり、クラス数が二桁など少し複雑なアノテーションタスクを行いたい場合 Google Spread Sheet では、アノテーションの生産性が劇的に落ちる、もしくは不可能になる。あくまで Google Spread Sheet はお手軽にラベリングを行うだけで、ラベリング専用ツールではないので当然の帰着ではある…

Label Studio とは

今回紹介するLabel Studioは OSS データのラベリング(アノテーション)ツールは、

など多種多様なドメインに対してラベリングを行うことができるソフトウェアだ。

また、アカウント認証や、キーボードショートカットなどアノテーションの生産性を向上させる基本的な機能が標準で搭載されており、アノテーション効率の向上と管理が期待できる。

同様に OSS の自然言語タスクに特化したアノテーションツールのdoccano も検討したが、Label Studio は自然言語以外にも画像やランキングなど多種多様なラベリングタスクに対応しているので、後々にアノテーションしたいデータの種類が増えたとしても Label Studio を活用できて便利そうなので、今回は Label Studio を選択した。

機能として

が気に入った。

また、今は使わないが

が気になっている。

Label Studio の活用方法

以下の画像の URL が格納されている onepiece.csvを使って、各画像に指定のクラスを割り振るデータラベリングを Label Studio を使って実行する。

image
https://1.bp.blogspot.com/-uxIsaN0S5lQ/X-FcrvAAInI/AAAAAAABdD4/6uw_qNUh9dQrG0aUzIExybt84yTEmXOPwCNcBGAsYHQ/s200/onepiece01_luffy.png
https://1.bp.blogspot.com/-rzRcgoXDqEg/YAOTCKoCpPI/AAAAAAABdOI/5Bl3_zhOxm07TUGzW8_83cXMOT9yy1VJwCNcBGAsYHQ/s200/onepiece02_zoro_bandana.png
https://1.bp.blogspot.com/-2ut_UQv3iss/X-Fcs_0oAII/AAAAAAABdD8/jrCZTd_xK-Y6CP1KwOtT_LpEpjp-1nvxgCNcBGAsYHQ/s200/onepiece03_nami.png
https://1.bp.blogspot.com/-mZpzgXC1Sxk/YAOTCAKwWTI/AAAAAAABdOM/5B4hXli0KLU5N-BySHgjVbhZscKLSE-bQCNcBGAsYHQ/s200/onepiece04_usopp_sogeking.png`

例とする画像の URL はいらすとやさんを参照させていただいております。

今回はお手軽に Poetry で Label Studio をインストールして、ローカル環境で実行した。

# Requires >=Python3.6, <3.9
poetry add label-studio

# Start the server at http://localhost:8080
poetry run label-studio

実際の作業の撮影動画

  1. Label Studio の起動
  2. プロジェクトの作成
  3. データのアップロード
  4. アノテーションの実行
  5. アノテーション結果のダウンロード

までの動画を撮影した。

動画で見ることで、Label Studio の魅力がわかるのではなかろうか。 キーボードショートカットが搭載されていて、実際のアノテーション作業がとても快適に行える点がわかるのではなかろうか。

以下に、実際の画面ごとの解説をしておく。

プロジェクトの作成

poetry run label-studio で Lebel Studio を起動後、右上の Create ボタンからプロジェクトを作成する。プロジェクト = 必要なアノテーションデータの 1 単位と考えれば良い。 上の 3 つのタブ

アノテーションテンプレート選択

Labeling Setup では、様々なドメインのアノテーションタスクをテンプレートから選択が可能

ラベリングインターフェイス

テンプレートを選択後、GUI でタグを自分で選択して編集する。 Code タグを選択すれば、直接インターフェイスを xml ライクに宣言ができる。 各種タグは

https://labelstud.io/tags/

を参考にすれば、柔軟にアノテーションが組める。Web アプリ上で完結しつつ柔軟にインターフェイスを構築できるのは感動した。

タグの豆知識

<Header> タグで、各種データの説明文を設定可能

<Header value="説明文"/>

タグの末尾に / を入れることで閉じタグを省略できる。 以下の 2 つは等価

<Header value="$title"/>
<Header value="$title"></Header>

<TextArea> タグを使えば、判断に困った際のデータに対してコメントを残せる toName 要素で、何に対するコメントなのかを指定する。

<TextArea name="comment" toName="text" placeholder="Enter Comment here..." maxSubmissions="1" rows="3" editable="true"/>

プロジェクト画面

プロジェクト画面では、アップロードされたデータやアノテーションの進捗具合などがひと目で把握できる。 データセットに画像の URL があれば、カラムの属性をimgに変更すれば一覧画面でその画像が表示される。

アノテーション画面

Mac だと Command + Enter で Submit, 例だと、例えばナミはキーボードで 3 を押せば選択される。これらのキーボードショートカット機能により高速にアノテーションが可能。

もう少し使い込んだら、また続編を書きたい。 OSS でこのクオリティのアノテーションソフトウェアが公開されるようになっているのは本当に素晴らしい。

---

関連しているかもしれない記事


📮 📧 🐏: 記事への感想のおたよりをおまちしてます。 お気軽にお送りください。 メールアドレス入力があればメールで返信させていただきます。 もちろんお返事を希望せずに単なる感想だけでも大歓迎です。

このサイトの更新情報をRSSで配信しています。 お好きなフィードリーダーで購読してみてください。

このウェブサイトの運営や著者の活動を支援していただける方を募集しています。 もしよろしければ、Buy Me a Coffee からサポート(投げ銭)していただけると、著者の活動のモチベーションに繋がります✨

#annotation #machinelearning