OpenCV
機械学習
画像認識
dlib

アノテーションツール(正解入力ツール)が進化している。

注意!

この文章はアノテーションツールについて調査中の人が書いています。

あなたが行おうとする機械学習ライブラリは、ライブラリごとに入力のアノテーションのデータのフォーマットが異なります.
はじめからそのフォーマットで出力してくれるツールを使うのがよいと思います。

tool YOLO SSD dlib
Format YOLO PASCAL VOC Format (XML)
imglab o
labelImg o o
BBox-Label-Tool 変換ツール使用

オブジェクト検出器を作るときは、正解データを入力する作業がある。そういった作業をアノテーションと呼ばれている。

昔のアノテーションの状況

この作業が実に面倒だった。

  • マウスで領域の指定をして結果を保存するツールを部署ごとに自作していた。
  • 入力結果を保存するファイル形式が標準化されていない。
  • ツールの中で途中で作業の打ち切りや再開が難しい。
  • 入力作業中に間違えたときの取り消し、やり直しがきかない。
  • 最終結果ファイルが意図した内容になっているのかの確認がむずかしい。

dlibのアノテーションツール imgLab

そのような状況が変わっていることをdlibのオブジェクト検出器の学習用のツールで実感した。

dib/tools/imgLab https://github.com/davisking/dlib/tree/master/tools/imglab

  • dlibの中でオブジェクト検出器の学習用に必要なアノテーションツールが提供されている。
  • dlibのオブジェクト検出器の学習に使えるファイル構造としてxmlを標準化している。
  • そのアノテーションツールでは、作業をするファイルを任意の場所から選べる。
  • また、間違えた部分があったときに、エディタでそのXMLファイルを修正がしやすい。
  • 結果のXMLファイルを表示させると、画像にアノテーションされた矩形が表示される。
    • XMLファイルに画像自体とその上に矩形を表示させる枠組みとしてimage_metadata_stylesheet.xslが用意されている。

その実際の使い勝手は、dlibでのsimple_object_detectorの学習手順を示している次の記事が参考になるだろう。

HOG特徴とSVMによる物体検出

imglabを使ってよいと思った点

  • XMLファイルに書き込んだ結果を元にしたオブジェクトの枠を ブラウザ上で表示できる。
  • この枠を重ね書きした画像をファイルとして一時的に作成する必要がない。
  • このため、ディスクスペースを無駄に使うことがない。
  • また、ファイルがあれば整合性がとれているのかバージョン管理などの問題を生じるが、その都度XMLファイルから読み込んで枠を表示させるのだから、そのような問題を生じない。

検出結果の表示にしても同じようにXMLファイルで結果を表示すれば、
検出結果をXMLファイルでだけ保存すればよく、検出結果を重ね書きした画像ファイルを別途保存する必要がなくなる。

アノテーションツールにほしいこと

  • ツールの動作時の入力画像が表示画面よりも大きい時にストレスなく入力できること。
  • アノテーション済みの結果を修正しやすこと。
  • 操作性が簡単であること。
  • ツールの再配布が簡単であること。
  • OSの種類によらず使いやすいこと。

labelImg

labelImg https://github.com/tzutalin/labelImg

qiita labelImgとChainerCVを使ってアノテーション作業を楽にする

Yolo学習用データセットの作成ツール:labelImg

labelImg – 🤘画像の注釈ツール

LabelImg - GUIで写真をラベリング

物体検出用の画像アノテーション正解データ生成に便利なツール

labelImg · PyPI

https://github.com/tzutalin/ImageNet_Utils

これも labelImg.py というツール。

labelImg のインストールに失敗する場合
docker を利用するとよいようだ。

BBox-Label-Tool

BBox-Label-Tool https://github.com/puzzledqs/BBox-Label-Tool

YOLO-VOCでのカスタムオブジェクトの作成の仕方

ご注文はYOLOですか!?(Windows10でYOLOを学習して動かすまで)

BBoX-Label-ToolをPython3で使用する

OpenCV にあるopencv_annotation

https://github.com/opencv/opencv/blob/master/apps/annotation/opencv_annotation.cpp

その他のアノテーションツール

以下のツールがあるが使ったことがないので、コメントができない。

sloth https://github.com/cvhciKIT/sloth
LEAR
labelMe http://labelme.csail.mit.edu/Release3.0/

qiita Annotationツール比較

qiita 物体認識用データセット作成支援ツール(Faster R-CNNとかSSDとか)

目位置の入力ツール Eye-Picker

Windows 版のexe もある。
https://github.com/bolme/pyvision/wiki/Eye-Picker

(Non)verbal Annotator
https://github.com/hcmlab/nova


顔の正解データの与え方にしても最近は変わってきている。
それによって、必要なアノテーションツールや評価用の集計プログラムも変わってきている。

Here, each face is denoted by:
<major_axis_radius minor_axis_radius angle center_x center_y 1>.

http://vis-www.cs.umass.edu/fddb/README.txt


注意

機械学習の時代は、手動のアノテーション時代ではなく、機械学習によって機械学習を強化する時代になっている。

SlideShare SSII2018TS: 大規模深層学習
⼤規模深層学習 〜分散学習の基礎、動向、実例〜 株式会社デンソーアイティーラボラトリ 佐藤 育郎
p.13 - p.26 の部分で、どのように学習データを作成しているのかが述べられている。