Help us understand the problem. What is going on with this article?

Annotationツール比較

More than 1 year has passed since last update.

Annotationツール

SSDやYOLOなど種々の物体検出のアルゴリズムがありますが、それらを自分の関心のある問題に適用しようと思うと、問題に合わせた教師データにより学習する必要があります。そして、そのためには教師データを用意する必要があるわけですが、それを行うAnnotationツールはというと、
List of manual image annotation tools - Wikipedia
たくさんあります。どれがいいのだろう、、と思い、いくつか実際に試してみました。

まず、それぞれのツールのgithubレポジトリで、スターの数、コミット数、最新コミット日時等を見て、以下をピックアップしました。

  1. 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.
  2. 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.
  3. 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.
  4. 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.
  5. Visual Geometry Group / via · GitLab
    • ★ 29 (as of 2018/7/4)
    • 478 commits, last commit on 2018/6/15.
  6. 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フォーマット
  • コメント: アイコン付きアプリにするために、少し戸惑った。

    pyenv uninstall 3.6.5
    env PYTHON_CONFIGURE_OPTS="--enable-framework" pyenv install 3.6.5
    pip install virtualenv
    
  • UI所感: 過不足のない感じで使いやすい。矩形領域選択時に出る補助線が良い。画像端まで選択すると、truncatedフィールドを1にしてくれる。クラスのインクリメンタルサーチもできて便利。ショートカットキーも便利。
    スクリーンショット 2018-07-05 0.44.48.png

2. Labelbox

  • アプリタイプ: Webサービス
  • LICENSE: Apache-2.0
  • 入力フォーマット: ローカルファイル、クラウド(URIのリストで指定する)
  • 出力フォーマット: 独自形式。レポジトリにあるツールでPacaslVOC, COCO形式に変換できる。
  • UI所感: マテリアルデザインベース。作り込んであるけど、使いこなすには慣れが必要そうな印象。フロントエンドUIが3種類用意されていて、そのうちの1つがAnnotation用になっている。ただしポリゴンで領域を指定する形式。独自にUIを作成して追加できる。 スクリーンショット 2018-07-03 13.28.59.png

3. VoTT

  • アプリタイプ: Electronアプリ
  • LICENSE: MIT
  • 入力フォーマット: ローカルファイル
  • 出力フォーマット: PascalVOC, YOLO, TFRecordを含むいくつかの形式。
  • コメント: maxOS High Sierra上で動かしていて、はじめの方でボタンが反応しなくて進めなくなった。
    (2019.2.1追記) 試せていないが、アクティブラーニングが利用できる。学習済みモデルの用意などのハードルを超えれば、大きな作業効率化が図れそう。
  • UI所感: 進めなかったので未確認。Continueを押しても何も反応せず。
    (2019.2.1追記) 全体的にUIがきれいで使いやすい印象を受ける。矩形選択時に補助線がある。各種ショートカットキーが定義されているため、効率よくアノテーションができる。ただし、ラベルへのショートカットの割り当ては10個までのため、それ以上のラベルがある場合は、カーソルで選択する必要がある。また、クラス数が多くなると(表示領域で3行を超すぐらい)、ラベルの表示領域に入り切らなくなり、選択が困難になる。スクリーンショット 2019-02-01 14.50.51.png

4. annotorious

  • アプリタイプ: Webアプリ
  • LINCENSE: MIT
  • 入力フォーマット: HTML内に<img>タグで指定。
  • 出力フォーマット: そのままでは出力されない。JavaScript APIで提供されているonAnnotationCreated(annotation)などで、出力処理を書く必要がありそう。
  • コメント: UIだけのようなので、画像データの供給や、出力を自分で実装しないといけない。また、プロジェクトが現在unsupportedになっている。
  • UI所感: シンプルで、編集や削除はしやすい。 スクリーンショット 2018-07-05 0.48.13.png

5. via

  • アプリタイプ: Web
  • LICENSE: BSD 2-Clause “Simplified” License
  • 入力フォーマット: ローカルファイル、URL、URIのリストファイル。ワイルドカードで多数のローカルファイルを選択すると、読み込むまでに時間がかかった。
  • 出力フォーマット: 独自形式のJSON
  • UI所感: 必要な機能は揃っているが、使いにくさを感じた。クラスの登録が手間。領域が画像からはみ出すと選択されないため、手ではみ出さないように調整しないといけない。 スクリーンショット 2018-07-05 0.50.35.png

6. semi-auto-image-annotation-tool

  • アプリタイプ: コマンドで起動
  • LICENSE: Apache-2.0
  • 入力フォーマット: ローカルファイル
  • 出力フォーマット: 独自形式(path, x1, y1, x2, y2,category)
  • コメント: Deep Learningでオブジェクトの推定ができる。
  • UI所感: 使いにくさを感じた。画像境界のチェックがされない。saveボタンを押すと、追記保存されるため、重複する。 スクリーンショット 2018-07-05 0.52.43.png

まとめ

今回比較した中では、labelImgが最も良かったです:sparkles: 適度にシンプルかつ必要な機能は揃っていて、効率よくAnnotationができそうに感じました。PascalVOCで出力できるのを探していたので、その点でも良いです。Webベースだと個人的にはもっと良かったです。ポリゴンでAnnotationしたい場合は向かなそうです。

その次に良さそうと思ったのはviaです。UIが微妙に使いにくく感じましたが、必要な機能は揃っている感じでした。PascalVOC等のフォーマットへは、自分で変換する処理を書かないといけなそうです。

(2019.2.1追記) VoTTを試すことができましたが、UIがきれいで非常に良かったです。クラス数があまり多くなければ、こちらのほうが効率よく作業できるかも。

Labelboxは、UIの独自開発も視野に入れて、ガッツリ使い込む場合には良いのかもしれないと感じました。ただその場合は、有料プランで使うことになりそうです。

以上、Annotationツールの比較でした。参考になれば幸いです。

shu-yusa
サーバーサイドエンジニア 主な関心範囲: ソフトウェアの設計、アーキテクチャ、リファクタリング、テスト、CI/CD、インフラ。 博士(理学)
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away