🐝

CVATで爆速でアノテーションを付与する - 画像分類編

2021/02/22に公開

概要

機械学習プロジェクトにおいて、学習データをいかに効率よく大量に収集するかは大きな課題です。学習データのサイズによって取りうるアプローチも異なりますし、モデル精度にも大きく影響します。ウェブサイト等から自動で収集できるケースを除いて、多くの場合は人間が手動でアノテーションを行う必要がありますが、機械学習を試すことができるほどの量を集めるには時間とコストを要します。大量のデータを作成するためには、効率よくアノテーションをする環境を整えることが大事です。

この記事では、CVATというアノテーションツールを使って、画像分類の学習データを高速に作成する方法を紹介します。

https://github.com/openvinotoolkit/cvat

デモ

実際にアノテーション付与をしている様子です。画面左下にキーボードで入力したキーが表示されています。12しか入力していないですが、逆に言えばそれだけでアノテーションが行える環境が構築できます。

方法

ここからはCVATで実際にアノテーションを行う方法を説明していきます。今回は事例としてPytorchのチュートリアルで紹介されている蜂と蟻を分類するタスクを例に、アノテーションを付与してみましょう(実際のデータでは既にアノテーションされています)。

https://pytorch.org/tutorials/beginner/transfer_learning_tutorial.html

CVATを立ち上げる

CVATはウェブアプリケーションとして提供されており、Dockerを使ってローカルでも簡単に立ち上げが可能です。詳細はinstallation.mdを参照ください。CVATは活発に開発が行われておりdevelopブランチでは不安定なことがあるので、ここではv1.2.0を利用しています。

$ git clone https://github.com/opencv/cvat
$ cd cvat 
$ git checkout refs/tags/v1.2.0
$ docker-compose up

新規ProjectとTaskを作成する

CVATを起動できたところで、まず右上のCreate a new projectボタンから新規Projectを作成します。CVATでは、Project→Taskというような階層構造になっており、一つのプロジェクトの中に複数のタスクが含まれます。Projectではプロジェクト名とラベルを設定できます。今回は蜂と蟻の2クラスですので、ラベルはantbeeの2つを作成します。ラベルが付与できていれば良いので、attributeは空とします。

次にCreate a new taskで個別のTaskを作成します。ここでアノテーションする画像をアップロードします。ブラウザへドラッグアンドドロップして入れることも可能ですし、docker-composeの設定でローカルの特定ディレクトリをマウントしておいて、そこから読み込むこともできます。

アノテーションを行う

それではアノテーションを行っていきましょう。Taskの中のJobを選択して、アノテーション画面を開きます。ここで重要なポイントが2つあります

  • 右上のStandardTag annotationに変更する
    • これでTagを付与するショートカットが利用できます
  • Automatically go to the next frame にチェックを付ける
    • これでタグを付与すると自動で次の画像に遷移してくれます

あとはアノテーションを付けていくだけです。右下のShortcut for labelsに表示されているように各ラベルには数字に対応したショートカットが割り振られています。今回の場合はKey1: ant,Key2: beeとなっているので、12のキーを押すことでラベルを付与できます。

結果を出力する

最後にアノテーションされた結果を見てみましょう。左上のハンバーガーメニューのDump Annotationから各種フォーマットで結果を出力できます。CVAT for Images 1.1形式で出力すると、XMLファイルがzip圧縮されて保存されます。XMLファイルにはCVATで設定した各種メタ情報とアノテーション結果が含まれており、付与したラベルは以下のように保存されています。あとはここからファイル名とラベルを抽出するコードを書けば完了です。

  <image id="3" name="antbee/20935278_9190345f6b.jpg" width="500" height="375">
    <tag label="ant" source="manual">
    </tag>
  </image>
  <image id="2" name="antbee/17209602_fe5a5a746f.jpg" width="500" height="412">
    <tag label="bee" source="manual">
    </tag>
  </image>
  <image id="1" name="antbee/16838648_415acd9e3f.jpg" width="500" height="450">
    <tag label="bee" source="manual">
    </tag>
  </image>
  <image id="0" name="antbee/0013035.jpg" width="768" height="512">
    <tag label="ant" source="manual">
    </tag>
  </image>

まとめ

今回はCVATを利用して画像分類のアノテーションを高速に行う方法を解説しました。CVATは他にも画像のセグメンテーションや物体検出などのアノテーションに対応していますし、各種ショートカットキーや複数人でのアノテーション機能が提供されています。この記事では紹介しきれなかった機能もたくさんあるので、ぜひ実際にCVATを触ってアノテーションしてみてもらえればと思います。

参考

Discussion