CVATで爆速でアノテーションを付与する - 画像分類編
概要
機械学習プロジェクトにおいて、学習データをいかに効率よく大量に収集するかは大きな課題です。学習データのサイズによって取りうるアプローチも異なりますし、モデル精度にも大きく影響します。ウェブサイト等から自動で収集できるケースを除いて、多くの場合は人間が手動でアノテーションを行う必要がありますが、機械学習を試すことができるほどの量を集めるには時間とコストを要します。大量のデータを作成するためには、効率よくアノテーションをする環境を整えることが大事です。
この記事では、CVATというアノテーションツールを使って、画像分類の学習データを高速に作成する方法を紹介します。
デモ
実際にアノテーション付与をしている様子です。画面左下にキーボードで入力したキーが表示されています。1
と2
しか入力していないですが、逆に言えばそれだけでアノテーションが行える環境が構築できます。
方法
ここからはCVATで実際にアノテーションを行う方法を説明していきます。今回は事例としてPytorchのチュートリアルで紹介されている蜂と蟻を分類するタスクを例に、アノテーションを付与してみましょう(実際のデータでは既にアノテーションされています)。
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クラスですので、ラベルはant
とbee
の2つを作成します。ラベルが付与できていれば良いので、attributeは空とします。
次にCreate a new task
で個別のTaskを作成します。ここでアノテーションする画像をアップロードします。ブラウザへドラッグアンドドロップして入れることも可能ですし、docker-composeの設定でローカルの特定ディレクトリをマウントしておいて、そこから読み込むこともできます。
アノテーションを行う
それではアノテーションを行っていきましょう。Taskの中のJobを選択して、アノテーション画面を開きます。ここで重要なポイントが2つあります
- 右上の
Standard
をTag annotation
に変更する- これでTagを付与するショートカットが利用できます
-
Automatically go to the next frame
にチェックを付ける- これでタグを付与すると自動で次の画像に遷移してくれます
あとはアノテーションを付けていくだけです。右下のShortcut for labels
に表示されているように各ラベルには数字に対応したショートカットが割り振られています。今回の場合はKey1: ant
,Key2: bee
となっているので、1
か2
のキーを押すことでラベルを付与できます。
結果を出力する
最後にアノテーションされた結果を見てみましょう。左上のハンバーガーメニューの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