Raspberry Piで顔検出(準備:Linuxマシンで顔検出)2014/12/23 05:43

arduinoよりもパワフルで、いろいろできそうなRaspberry Pi(ラズベリーパイ)を使って、ロボットの目を作りたい。
ラズベリーパイを使った顔検出の事例が既に幾つかあるので、まずはそれを真似してやってみようと思う。
Raspberry Pi に USB Camera をつないでいろいろやってみた
http://blog.goo.ne.jp/roboz80/e/16ea5be9a9eaf370046035be841b4bfd

raspberrypi/OpenCVを使って顔認識しました
http://www.pwv.co.jp/~take/TakeWiki/index.php?raspberrypi%2FOpenCVを使って顔認識しました

事例ではopenCVを使っている。openCVは、C、C++、pythonで使用可能な画像処理用のライブラリで、簡単な顔認識(顔領域の検出)はすぐに出来る。ラズベリーパイが手元にないが、やってる事はLinuxマシンでopenCV使って処理する事なので、古PCをラズベリーパイに見たてて、ubuntu+openCVの環境を作って顔認識してみることにした。

ubuntu 14.0.4を入れる。インストール後、openCV 2.3.9を入れる。サンプルソースを入手して動かしてみる。これだけの作業だが、いくつかつまづいたのでメモする。

(1)ubuntuインストールディスク作成でつまづく
【事象】インストール用のISOイメージをダウンロードして、DVD-RWへ焼く。ディスクを読み込ませてインストールしようとするが、おかしなエラーが出る。
【原因】メディアが傷ついていて焼き込み失敗していた。
【対策】ディスクをよく拭いてリトライしたら成功。ありがちな事象だが、ディスクに問題が有る事にしばらく気づけなかった。DVDライティングソフトの実行オプションで、焼き込み終了するとシャットダウンするようにしていたが、こうすると途中でエラーになろうがシャットダウンしてしまうので、出来上がったディスクに問題があるかわからない。そのまま出来上がったディスクを使って(正常に焼けたと思い込んで)ubuntuインストールしようとするが、おかしなエラーが出て先に進まない状態になっていた。

(2)ubuntuインストール時のパーティション設定でつまづく
【事象】DVDからubuntuをブートするが、HDDにインストールしようとすると、入ってるはずのwindowsが認識されない。ubuntu用のパーティションをwindowsとは別に用意してデュアルブートするつもりが、クリーンインストールしようとしてしまう。
【原因】windows側でubntu用の領域割当をしていたのがダメだった。
【対策】Windows側で割り当てた領域はクリアして未使用状態とした上でリトライすると、windowsを認識し、ubuntu用に用意していた空きパーティションにインストール出来た。

(3)ubuntuをインストールするが、重すぎる
【事象】古いネットブック(Atom N280マシン)にインストールしたが、動きが重すぎる。
【対策】必要以上にでかい壁紙(2560×1600)指定を単色壁紙に変えると幾分マシになった。他にもっとマシな方法もあると思うが、シロウトにはわからない…

(4)openCVのインストールでつまづく
【事象】大雑把にopenCVのUNIX用ファイルをダウンロード、ローカルフォルダに展開、インストール、という流れだが、インスール時にcmake/makeでインストールする事、opencv以外のモジュールが要る事などでつまづく。
【原因】ubntuでcmake/makeによるソフトインストール経験が無い
【対策】以下のページに従い実施する事で、opencvをインスールして簡単なテストコード実行によりUSBカメラの画像を表示する所までたどり着けた。
http://hmatsudaiac.wix.com/venus-robotix#!set-opencv-linux/cwe1
なるべく簡単な方法を探して、他のサイトに記載された方法を幾つか試してみては、途中エラーになって行き詰まり、原因確認したり何度もリトライしていた。当たり前の事としてインストールする過程の一部が省略されていたり、opencvインスールの前の下準備作業(関連ソフトの事前インスールなど)の記載が無いのが原因だった。

opencvを使った顔検出サンプルソースを入力してコンパイル、実行し、lena画像を使って冒頭の検出結果が得られた。(おかしな所も顔検出されてしまったので、チューニングは要りそうだ)