最近、僕はOpenCVを使って精度の高いオブジェクト検出をするために試行錯誤しています。今日もそれなりの精度で認識させることができたのですが、まったく同じではないけれど少し特徴の似ている部分も誤認識してしまって途方にくれていました。
Twitterで愚痴っていたところ@garicchiが拾ってくれて、機械学習用のマークアップツールを作ってくれることになりました!
**ツールの構想
ポジティブ画像はopencv_createsamplesというツールで大量に作成することが可能ですが、手動でマークアップすることも可能です。実用的な認識率を出すためにはポジティブ画像は7,000枚ほど必要になるそうです。
事前に収集済みであることを前提に大量の画像をマークアップするためには、左手で画像を変更、右手でマウスを持ってマークアップしていくのが効率的だと考えました。大江戸線の満員電車の中立ちながら適当に図を書いてみました。
かなりUI案が悪いのですが、要は前の画像に戻るにはzキー、次の画像に進むにはxキーなどにショートカットを割り振っておき、ひたすらマークアップに集中できれば良いなと考えています。
吐き出されるデータのフォーマットは以下の通りです。ごめんなさい、@garicchiに事前に伝えていたフォーマットと少し違いがありました。オブジェクトの個数が抜けていました。正しくは選択した上から順に
-ディレクトリからの相対パス -検出対象となるオブジェクトの個数 -1つめのオブジェクトの位置とサイズ(x, y, width, height) -2つめのオブジェクトの位置とサイズ(x, y, width, height) -改行
となります。実際にアウトプットされるデータは以下のようになります。
|bat| img/img1.jpg 1 140 100 45 45 img/img2.jpg 2 100 200 50 50 50 30 25 25 ||<
**なんとジェバンニが1日でやってくれました
このソフトは僕以外にも画像認識系の研究している子たちの役に立つと思う。本当にありがとう、@garicchi!
**GitHubでソースコードを公開(2012.7.6追記)
GitHubでソースコードの公開が始まりました。詳細については以下のエントリをご覧ください。