#背景
アニメキャラクターの顔パーツの座標推定モデルを制作するにあたりデータセットを作成することになった.自分でアノテーションツールを作るのも手間なので既存の便利そうなimglabを使うことにした.
#imglab
物体検出や顔特徴の検出の記事を(個人的には)よく見かける機械学習のライブラリdlibがあるが,imglabはそれに付属している画像に対するアノテーションツールである.
一般的に,物体検出モデルであれば画像のどの領域に物体が写っているかをBoundingBoxで示した学習データが必要になる.道路や街の映像に対し車や人等を示したデータセットは大量に見つかるが,自分の作りたい用途向けに使える既存のデータセットがなければ自分でちまちまデータを作る必要がある.
ペイントで座標を確認してExcelにまとめるなんて方法では効率が悪すぎる.グラフィカルに位置を指定したり,次の画像にかんたんに飛べるなどの機能をもったアノテーションツールを使ったほうが現実的だ.
#ビルド(for Windows)
- CMakeのインストール
CMakeのページ(https://cmake.org )からダウンロードしてインストールする. - dlibの取得
dlibのページ(http://dlib.net/ )からダウンロードして展開する. - ビルド
cd dlib-19.17\tools\imglab\
mkdir build && cd build
'C:\Program Files\CMake\bin\cmake.exe' --build . --config Release
make -j1
cd Release
※必要に応じてVisual Studio 2017のインストールが必要
#使い方
##基本的な使い方
- アノテーションしたい画像を1つのフォルダにまとめる
mkdir images
cp -r <somewhere>\*.jpg ./images/
- アノテーションデータが保存されるxmlファイルを作成する
cd images
..\imglab.exe -c <name>.xml .
- imglabを起動して,実際にアノテートする
..\imglab.exe <name>.xml
- Shiftを押しながらマウスボタンダウンしてアップすると矩形が指定できる
- 矩形周辺をダブルクリックすると選択状態に変わり,さらにDeleteを押すと矩形を除去できる
- 事前に「Next Label」テキストボックスにラベル名を入力しておくことで矩形にラベリングできる
- 物体検出であれば「車」「人」などのラベル付け
- 学習に悪い作用をしそうな画像は「File」->「Remove Selected Images」で除去できる
- 必ず,最後に「File」->「Save」で保存する
- 画像領域内でCtrlを押しながらマウスホイール操作で拡大縮小ができる
##顔のパーツアノテーション向けの使い方
以下のようにimglabを起動することで,矩形に付随するパーツの位置を示すことができるようになる.
..\imglab.exe <name>.xml --parts "LE RE LM RM AG"
矩形を選択した状態で,パーツ位置で右クリックを押すとパーツ名一覧が表示される.
一覧から1つ選択するとパーツ名に対応する点を示すことができる.