アノテーションについて調べてみるから、アノテーションツールの記事を独立させました。
Image annotation tool in OpenCV
YouTube Image annotation tool in OpenCV(python)
上記のソースコードを読むかぎり、PASCAL VOC のXMLフォーマットやjsonフォーマットではなく、スペース区切りテキストとして保存するものです。
ですから、アノテーションツールのサンプルとしてみれば良さそうです。
機械学習の中で使われる標準的なデータ形式をサポートしているものを最初から使えば十分でしょう。
Computer Vision Annotation Tool (CVAT)
OpenCVがCVATというアノテーションツールを配布している。
Youtube CVAT 0.2.0 - annotation mode
アノテーションは、長方形で指定する場合と、折れ線で領域を指定するのを選べます。
従来の検出では、対象物と背景とをまとめて長方形で領域指定していましたが、それだとどこまでが、対象物なのかを指定できていません。このモードでは、折れ線で領域を指定することで、対象物を指定することができます。
CVAT 0.2.0 - interpolation mode
動画に対してアノテーションする際に、全部のフレームに正解枠をつけるの大変です。このツールでは、あるフレームで正解枠をつけたら、数フレーム後の画像で正解枠を移動してつけます。それをさらに数フレーム後の画像で正解枠を移動してつけます。それらを繰り返します。そうすると、そのあとで、一連のフレームに対して、正解枠の補間をしてくれるとのことです。
こういった作業を、対象のオブジェクトごとに繰り返します。そうすることで、正解枠のアノテーションの作業を楽にする。
CVAT 0.2.0 - attribute mode
年齢、性別、メガネの有無などを画像にアノテーションをつけることができます。
CVAT 0.2.0 - segmentation mode
アノテーションをセグメンテーションでつけることができるモードです。セグメンテーションとは、領域をpixel単位に指定するやり方です。空・森林・道路・芝生・建築物を指定することができます。
最近にアノテーションでは、
セマンティックセグメンテーションのアノテーションになってきています。
セマンティックセグメンテーションのアノテーションツールlabelme
VoTT(Visual Object Tagging Tool)の紹介記事
Githubによれば、出力データ形式は以下のものがサポートされている。
Exporting tags and assets to Custom Vision Service CNTK , Tensorflow (PascalVOC) or YOLO format for training an object detection model.
Camshift tracking algorithm. を使って追跡をするので、追跡した結果の枠を修正すれば済むのが利点です。