アノテーションツール VoTT を使って YOLOv5 の学習データセットを作る
これまでに作った マスク検出はマスクをしていない時の誤検知(マスクしていると判定)が気になったので精度を上げるべく、自作のデータセットを作ってもっと学習させてみたくなりました
というわけで、今回はデータセットを作るためのアノテーションツールにトライです
アノテーション(英語:annotation)とは、あるデータに対して関連する情報(メタデータ)を注釈として付与すること。XML等の記述形式を用いてメタデータをタグ付けする場合が多い。付与したメタデータやタグを指してアノテーションという場合もある。(Wikipediaより)
自作か特殊なツールをつかいこなす職人芸なのかと思っていましたが、フリーのアノテーションツールを使うことで意外に簡単にできるようです
(それでも大変なのは大変なんですが)
【アノテーションの流れ】
1.画像の用意
2.アノテーションツールでタグ付け
3.コンフィグファイル(jsonなど)が出来上がる
4.データセット(画像とコンフィグファイルのセット)の完成
5.データセットを使って学習
アノテーションツールはいくつか存在していますが、Microsoft VoTT(Visual Object Tagging Tool)を使ってみます
https://github.com/Microsoft/VoTT/
labelImgというのが有名で使いやすいみたいなのですが、VoTTも バージョン2以降だいぶよくなったとのこと
VoTTインストール
各種OS用のパッケージはこちらから入手(今回はWindowsで使用)
Releases · microsoft/VoTT · GitHub
SaaS版もあるようです
https://vott.z22.web.core.windows.net/#/
ダウンロードした「vott-2.2.0-win32.exe」を実行すると、インストールされつつ起動します
(勝手にCドライブ使われる好きじゃない)
VoTTでアノテーション(タグ付け)する
プロジェクト作成
まずは新規プロジェクト作ってみます
プロジェクトの設定
ソース接続でアノテーションする画像フォルダを選択して、プロジェクト
ターゲット接続も画像と同じフォルダでよいです
(この後の変換の為に、画像ファイル名はすべて英数半角でスペース無しが良いです)
プロジェクトが出来上がるとソースフォルダ内の画像がされる
roboflow でYOLOv5用のデータセットへ変換
YOLOv5で学習するにはここでもうひと手間必要になります。
VoTTで出力された .json形式は、YOLOv5 では読み込めません。いわゆるYOLOv5形式へ変換してやる必要あります
そこで登場するのが、最初のマスク学習用のデータセットをいただいた roboflowのサイトです
データセットを入手するだけではなく、作ることもできるんですね
How To Convert VoTT JSON to YOLOv5 PyTorch TXT
ここに書かれている手順に沿って、作ってみましょう
データセットの作成
アカウントを作った後、「Create Dataset」します
「Dataset Type」は「Object Detection」で、Annotation Groupは何に使うかよく分かっていないので、なんでもよいです
アップロード
VoTT でタグ付けした画像と jsonファイル全部をドラッグ&ドロップします