pythonによる画像認識
2018年4月4日
今日は、pythonについてちょっと気になったことがあって調べてみた。例えば好きなグラビアアイドルが何人かいて、その顔画像を学習させて、デビューした新人さんの画像を分類器にかけることで、自分の好みの表情かどうか自動で判別できるのではないか。
そんなどうでもいいことをきっかけに、環境構築と実践。
pythonはすでにanacondaをインストールしたときに入っていたので、pipでopenCVをインストール。この時、python付属のpipにシステム環境変数(python直下のScript)を登録する必要があることを知らず、じばらく悩んだ。
無事openCVもインストールできたので、学習に入る。以下参考URL。
- フォルダを準備
- 教師用の画像(好きなグラビアアイドルの画像)を準備
- NG用の画像(あまり興味のない顔)を準備
- openCV内のexeとdllを準備
- 教師用画像を水増しし、複数のvecファイルを作成しマージ
- NG用画像の一覧リスト(txt)を作成
- いよいよ学習スタート
- 実際にテスト
こんな感じ。
特に、2と3は人力でやったので大変だった。
それから、今回、教師用画像を複数枚用意したのだが、5でopencv_createsamples.exeを使用し画像を水増しする時、1枚につき1vecファイルが作成されるので、マージする方法を探すのが大変だった。結論から言うと、mergevec.pyという既成のツールがあるので、それを叩けば大丈夫だった。
6はバッチを作成してtxtに書き出したが、ファイル名だけではだめで、相対パスで記述しないと、次の7でエラーになる。
7はopencv_traincascade.exeを叩けば勝手にやってくれる。ただ、各ファイルのパスが間違っているとstage-0でエラーになり終了してしまう。
8のテストはネットからテスト用コードを拝借した。
最初、教師用の画像サイズがばらばらのまま、25×25サイズで水増しし、学習させてしまい、精度がいまいちだった。
全て100×100にリサイズして水増しも100×100にしてみたが、今度は学習に物凄く時間がかかる。続きは明日に持ち越しだ。
そもそも今回の目的に対しては分類器による画像認識よりラベルによる画像識別の方がよかったかもしれない。
そしてすでにやっている人がいた。
さて今日は学習ということで、『けいおん!』から勉強中の平沢唯を模写。これからは自動で描いてくれるソフトを作ってみたい。