Annotationツール
SSDやYOLOなど種々の物体検出のアルゴリズムがありますが、それらを自分の関心のある問題に適用しようと思うと、問題に合わせた教師データにより学習する必要があります。そして、そのためには教師データを用意する必要があるわけですが、それを行うAnnotationツールはというと、
List of manual image annotation tools - Wikipedia
たくさんあります。どれがいいのだろう、、と思い、いくつか実際に試してみました。
まず、それぞれのツールのgithubレポジトリで、スターの数、コミット数、最新コミット日時等を見て、以下をピックアップしました。
-
tzutalin/labelImg: LabelImg is a graphical image annotation tool and label object bounding boxes in images
- ★ 3825, Watch 208, Fork 1438 (as of 2018/7/4)
- 292 commits, last commit on 2018/6/15.
-
Labelbox/Labelbox: The most versatile data labeling platform for training expert AI.
- ★ 461, Watch 25, Fork 73 (as of 2018/7/4)
- 571 commits, last commit on 2018/6/28.
-
Microsoft/VoTT: Visual Object Tagging Tool: An electron app for building end to end Object Detection Models from Images and Videos.
- ★ 527, Watch 46, Fork 122 (as of 2018/7/4)
- 410 commits, last commit on 2018/5/17.
-
annotorious/annotorious: Image Annotation for the Web - Annotorious Core Library
- ★ 471, Watch 48, Fork 127 (as of 2018/7/4)
- 589 commits, last commit on 2018/5/14.
-
Visual Geometry Group / via · GitLab
- ★ 29 (as of 2018/7/4)
- 478 commits, last commit on 2018/6/15.
-
virajmavani/semi-auto-image-annotation-tool: Anno-Mage: A Semi Automatic Image Annotation Tool which helps you in annotating images by suggesting you annotations for 80 object classes using a pre-trained model (上記のリストにはないけど、見かけて気になったので)
- ★ 166, Watch 9, Fork 29 (as of 2018/7/4)
- 42 commits, last commit on 2018/6/15.
比較
主に、主観に基づく比較です。
(2019.2.1追記) 以前VoTTを試したときはうまく動作しなかったが、別のPCで試したところ、正常に使えたので、コメントを修正。
1. labelImg
-
アプリタイプ: コマンド起動またはDesktopアプリ
-
LICENSE: MIT
-
入力フォーマット: ローカルファイル
-
出力フォーマット:
PascalVOC
及びYOLO
フォーマット -
コメント: アイコン付きアプリにするために、少し戸惑った。
```bash
pyenv uninstall 3.6.5
env PYTHON_CONFIGURE_OPTS="--enable-framework" pyenv install 3.6.5
pip install virtualenv
``` -
UI所感: 過不足のない感じで使いやすい。矩形領域選択時に出る補助線が良い。画像端まで選択すると、
truncated
フィールドを1にしてくれる。クラスのインクリメンタルサーチもできて便利。ショートカットキーも便利。
2. Labelbox
- アプリタイプ: Webサービス
- LICENSE: Apache-2.0
- 入力フォーマット: ローカルファイル、クラウド(URIのリストで指定する)
- 出力フォーマット: 独自形式。レポジトリにあるツールで
PacaslVOC
,COCO
形式に変換できる。 - UI所感: マテリアルデザインベース。作り込んであるけど、使いこなすには慣れが必要そうな印象。フロントエンドUIが3種類用意されていて、そのうちの1つがAnnotation用になっている。ただしポリゴンで領域を指定する形式。独自にUIを作成して追加できる。
3. VoTT
- アプリタイプ: Electronアプリ
- LICENSE: MIT
- 入力フォーマット: ローカルファイル
- 出力フォーマット:
PascalVOC
,YOLO
,TFRecord
を含むいくつかの形式。 - コメント:
maxOS High Sierra上で動かしていて、はじめの方でボタンが反応しなくて進めなくなった。(2019.2.1追記) 試せていないが、アクティブラーニングが利用できる。学習済みモデルの用意などのハードルを超えれば、大きな作業効率化が図れそう。 - UI所感:
進めなかったので未確認。Continue
を押しても何も反応せず。
(2019.2.1追記) 全体的にUIがきれいで使いやすい印象を受ける。矩形選択時に補助線がある。各種ショートカットキーが定義されているため、効率よくアノテーションができる。ただし、ラベルへのショートカットの割り当ては10個までのため、それ以上のラベルがある場合は、カーソルで選択する必要がある。また、クラス数が多くなると(表示領域で3行を超すぐらい)、ラベルの表示領域に入り切らなくなり、選択が困難になる。
4. annotorious
- アプリタイプ: Webアプリ
- LINCENSE: MIT
- 入力フォーマット: HTML内に
<img>
タグで指定。 - 出力フォーマット: そのままでは出力されない。JavaScript APIで提供されている
onAnnotationCreated(annotation)
などで、出力処理を書く必要がありそう。 - コメント: UIだけのようなので、画像データの供給や、出力を自分で実装しないといけない。また、プロジェクトが現在unsupportedになっている。
- UI所感: シンプルで、編集や削除はしやすい。
5. via
- アプリタイプ: Web
- LICENSE: BSD 2-Clause “Simplified” License
- 入力フォーマット: ローカルファイル、URL、URIのリストファイル。ワイルドカードで多数のローカルファイルを選択すると、読み込むまでに時間がかかった。
- 出力フォーマット: 独自形式のJSON
- UI所感: 必要な機能は揃っているが、使いにくさを感じた。クラスの登録が手間。領域が画像からはみ出すと選択されないため、手ではみ出さないように調整しないといけない。
6. semi-auto-image-annotation-tool
- アプリタイプ: コマンドで起動
- LICENSE: Apache-2.0
- 入力フォーマット: ローカルファイル
- 出力フォーマット: 独自形式(
path, x1, y1, x2, y2,category
) - コメント: Deep Learningでオブジェクトの推定ができる。
- UI所感: 使いにくさを感じた。画像境界のチェックがされない。saveボタンを押すと、追記保存されるため、重複する。
まとめ
今回比較した中では、labelImg
が最も良かったです 適度にシンプルかつ必要な機能は揃っていて、効率よくAnnotationができそうに感じました。PascalVOCで出力できるのを探していたので、その点でも良いです。Webベースだと個人的にはもっと良かったです。ポリゴンでAnnotationしたい場合は向かなそうです。
その次に良さそうと思ったのはvia
です。UIが微妙に使いにくく感じましたが、必要な機能は揃っている感じでした。PascalVOC等のフォーマットへは、自分で変換する処理を書かないといけなそうです。
(2019.2.1追記) VoTT
を試すことができましたが、UIがきれいで非常に良かったです。クラス数があまり多くなければ、こちらのほうが効率よく作業できるかも。
Labelbox
は、UIの独自開発も視野に入れて、ガッツリ使い込む場合には良いのかもしれないと感じました。ただその場合は、有料プランで使うことになりそうです。
以上、Annotationツールの比較でした。参考になれば幸いです。