概要
本記事では、機械学習による群衆カウント(Crowd Counting)の中でも、MCNNやCSRNetに代表される、CNNベースの密度推定モデルを使用する際に利用するデータセットを自作するためのアノテーションツールを紹介します。
今回紹介するアノテーションツールはMatlabを使用します。
Crowd Counting用のデータセット
密度推定モデルとは、群集の画像から密集度をヒートマップとして表現した群集密度マップ(density map)を作成し、ピクセル単位で数の計測を行うモデルです。ここ最近の機械学習による群衆カウント(Crowd Counting)モデルの大半はCNNベースの密度推定モデルであり、CNNベースの密度推定モデル向けのデータセットもたくさん発表されています。(代表的なデータセットの詳細はこちら)
CNNベースの密度推定モデルは教師あり学習なので、ラベル(アノテーション、正解)付きのデータセットが必要です。密度マップ推定のための Crowd Counting 用データセットの大半は、研究者などの人の手によって手動でアノテーション(正解ラベルの付与)が行われています。今回は自分で用意した画像をCNNベースの密度推定モデルの学習に使用するためのラベル付けの方法を説明します。
アノテーションツール
今回紹介するのは、GitHub上でオープンソースコードとして公開されているCrowd Counting用アノテーションツールのprincenarula222/Crowd_Annotationです。このアノテーションツールを使用することで、自作した群衆画像データに対し、mat 形式の教師データを手動で付与することができます。UCFやShanghaiTechなど、有名な密度マップ推定モデルのCrowd Counting 用群衆画像データセットの多くはこの mat 形式の教師データによってラベル付けされています。ラベル(アノテーション)の内容は群衆内の人の頭部の座標データです。
使用方法
アノテーションツールの使用方法はREADMEに英語で書かれていますが、ここでは日本語で説明します。
1
まずはgit cloneコマンドで上のアノテーションツールのリポジトリをローカルに複製してください。
それができたら、gt_mat_gen.mなどを移動させ、以下のようなディレクトリ構成にしてください。(元からあるground-truthやimagesのフォルダは中にサンプル画像などが入っているので、使用しない場合はサンプルデータを消すか、data_annotation下に新たに別のground-truthやimagesの空のフォルダを作成してください。以下の説明でground-truthフォルダやimagesフォルダはdata_annotation下のものを指します。)
crowd_annotation/
│
├ data_annotation/
│ ├ gt_mat_gen.m
│ ├ ground-truth/
│ └ images/
│
├ LICENSE
└ README.md
2
次に、用意したラベル付けをしたい群衆画像データをimagesフォルダ下に置きます。このとき、画像データの名前は'IMG_(num).jpg'のようにリネームします。(方法は「ファイル リネーム 一括」などで検索してください)
例1. 新たにデータセットを作る場合 → 'IMG_1.jpg', 'IMG_2.jpg', 'IMG_3.jpg', 'IMG_4.jpg'...
例2.ShanghaiTech Dataset Part_Bの学習データ400枚に追加する場合 → 'IMG_401.jpg', 'IMG_402.jpg', 'IMG_403.jpg'...
3
MATLABでgt_mat_gen.mを開き、15行目のt = の部分に例1の場合は0、例2の場合は400を入力します。
15行目を変更できたら、gt_mat_gen.mを実行します。
4
画像が順番に表示されるので、カーソルを人の頭部に合わせてクリックすることでアノテーションを付与します。画像内全ての人の頭をクリックしてラベル付けが完了したらEnterキーを押し、次の画像に進みます。あとはこれを繰り返します。全ての画像のラベル付けが終わったら終了ですが、途中で中断しても、例えばgt_mat_gen.mをt=600で実行すれば'IMG_601.jpg'の画像からラベル付けを再開できます。
ラベル付けをしている最中の画面のスクリーンショットです。
5
ラベル付けが終わった画像の正解データ(mat 形式の教師データ)はground-truthフォルダに生成されます。