RaspberryPiで顔認識OpenCVで(コンパイルの方法も!)
目次
RaspberryPiで顔認識
みなさん、こんにちは!
株式会社虹賢舎の川島賢です。
今日はRaspberryPiで顔認識する方法を共有したいと思います!
openCV 3+ Raspberry Pi 3+ Python 3 ==> 333!
ハードウェア:RaspberryPiで顔認識で必要なもの
まず、は下記のものが必要です!
①もちろんRaspberryPi本体です!
[amazonjs asin=”B01NAHBSUD” locale=”JP” title=”Raspberry Pi 3 Model B V1.2 (日本製) 国内正規代理店品”]
(実際に実験で使っているRaspberryPiは別の個体です。)
②RaspberryPi専用のカメラ
[amazonjs asin=”B01EW2KDTE” locale=”JP” title=”Raspberry Pi Official Camera V2 for 3B/2B/B+/A+/B/A ソニー製808万画素CMOSセンサ使用 ラズベリーパイ公式 HDカメラ”]
私はアマゾンから購入しました。
ちなみにRaspberryPiは6,7台を持っています。また増える予定です。笑
③電源
他はもちろん、電源も必要です。
④※Wifiモジュール
ネットワークも使いたい場合はRaspberryPi 2の場合はwifiモジュールが搭載していないので、別途購入が必要です。
ハードウェアの準備
カメラをRaspberryPiの本体に接続します!
しかし、カメラモジュールが固定する方法が考えていなかったです!汗。
垂れてしまって、意図する方向に向けません!
こんな感じです。
もし、カメラモジュールの配線がこんな感じに固定すれば、少し向きも固定できそうですので
周りを探すと!
RaspberryPiの電源ケーブルを固定したワイアがありました!
これは、もしかしたら!
こうなりました!
智恵は絞れば出るものですね!笑。
これである程度、向けたい方向には行けるようになりました!(実験はいいですが、プロダクションはちゃんとした固定機構が欲しいところですね。)
ソフトウェア:OpenCV
ソースコードと開発者:https://github.com/opencv/opencv
ここからはソフトウェアの設定の話をして行きます。
①Expand filesystem
sudo raspi-configで、7- Advanced Options -> A1-Expand Filesystem ファイルシステムを一回拡張します。
その後、設定を終わりにする時に「再起動しますか」と聞かれます。「Yes」と選んで、再起動します。
再起動したあと
df -h
で、確認しましょう。
私が、32GBのSDカードを使っています。すでに22%以上使っています。
②必要なパッケージをインストールする
必要なパッケージをインストールする前に、一回システムを最新の状態にしておきます。
sudo apt-get update && sudo apt-get upgrade
openCVをコンパイル時に必要なパッケージを入れます。
sudo apt-get install build-essential cmake pkg-config
イメージのIOパッケージを入れます。JPEG, PNG, TIFFなど様々な画像フォーマットが画像を処理する際に必要なパッケージです。
sudo apt-get install libjpeg-dev libtiff5-dev libjasper-dev libpng12-dev
次は、ビデオの処理に必要なパッケージを入れます。
sudo apt-get install libavcodec-dev libavformat-dev libswscale-dev libv4l-dev sudo apt-get install libxvidcore-dev libx264-dev
次は、GUIで必要なgtkパッケージも入れます。
sudo apt-get install libgtk2.0-dev libgtk-3-dev
openCVのマトリクスの処理の部分を最適化するために必要なパッケージを入れます。
sudo apt-get install libatlas-base-dev gfortran
Python2.7とPython3を入れます。
sudo apt-get install python2.7-dev python3-dev
③openCVのソースコードをダウンロードする
折角なので2018年4月1日時点で最新版を使ってみましょう!
mkdir opencv20180401 cdopencv20180401 wget -O opencv.zip https://github.com/opencv/opencv/archive/3.4.1.zip unzip opencv.zip
他のリリースのソースコードを利用したい場合は、下記から選んでください。
https://github.com/opencv/opencv/releases
④Python2 &3
wget https://bootstrap.pypa.io/get-pip.py sudo python get-pip.py sudo python3 get-pip.py
Pythonのバージョンが混乱させないためのPython界隈の標準ツールを入れましょう。
sudo pip install virtualenv virtualenvwrapper sudo rm -rf ~/.cache/pip
~/.profileを更新します。
下記の内容を~/.profileの最後に追加します。
# virtualenv and virtualenvwrapper export WORKON_HOME=$HOME/.virtualenvs source /usr/local/bin/virtualenvwrapper.sh
変更を反映させるために
source ~/.profile
virtualenvを設定する
Python2の環境で作業したい場合
mkvirtualenv cv -p python2
Python3の環境で作業したい場合
mkvirtualenv cv -p python3
バーチャルPython環境に入りましょう!
(下のコマンドは、rebootしたら、あるいはTerminal閉じたら、毎回必要です!)
source ~/.profile workon cv
私は、今回、Python3にしましたので、これでバーチャルのPython3の環境に入りました。
下記のように(CV)が出ていれば、バーチャル環境に入ったということになります。
これからは、このバーチャル環境で作業をしていきます。
次は、数値処理のPythonパッケージをいれます。http://www.numpy.org/
pip install numpy
numpyは裏でコンパイルしてインストールしているので、時間が掛かります。
暖かいコーヒー一杯どうぞ!
⑤やっと、openCVのコンパイルとインストール
準備がちょっと長いですね。
これからは、いよいよ今回のトピックのopenCVのコンパイルです!
cd ~/opencv-3.4.1/ mkdir build cd build cmake -D CMAKE_BUILD_TYPE=RELEASE \ -D CMAKE_INSTALL_PREFIX=/usr/local \ -D INSTALL_PYTHON_EXAMPLES=ON \ -D BUILD_EXAMPLES=ON ..
swapfile サイズを変更しておく
/etc/dphys–swapfile
# set size to absolute value, leaving empty (default) then uses computed value # you most likely don't want this, unless you have an special disk situation # CONF_SWAPSIZE=100 CONF_SWAPSIZE=1024
設定を有効にする
sudo /etc/init.d/dphys-swapfile stop sudo /etc/init.d/dphys-swapfile start
ただし、この設定は、openCVのコンパイルが終わってから、戻した方が良いです。
いざコンパイル!
make -j4
ここで、もういっぱいコーヒーを飲みましょう!笑。
いいえ、Amazonか、iTunesか、YouTubeで映画を一本でも見ましょう!
sudo make install sudo ldconfig
make insallのあと、OpenCV + Pythonのセットは下記のフォルダにインストールされます。
/usr/local/lib/python3.5/site–package
少し調整します。このモジュールをRenameします。
cd /usr/local/lib/python3.5/site-packages/ sudo mv cv2.cpython-35m-arm-linux-gnueabihf.so cv2.so
バーチャルリンクを追加します。
cd ~/.virtualenvs/cv/lib/python3.5/site-packages/ ln -s /usr/local/lib/python3.5/site-packages/cv2.so cv2.so
最後顔検知のサンプルコードを実行してみましょう。
ここでも、コマンドラインが(CV)の環境にいる前提で実行してください。
cd ~/opencv-3.4.1/ cd samples cd python python facedetect.py
下記のようなものが出れば、openCVの設定が完了です!
ここまで来て、お疲れ様です!でも楽しいのは、これからですね!色々実験しましょう!
SWAPサイズを戻してくださいね。そうしないと、SDカードの寿命が縮みます。
/etc/dphys–swapfile
# set size to absolute value, leaving empty (default) then uses computed value # you most likely don't want this, unless you have an special disk situation CONF_SWAPSIZE=100 # CONF_SWAPSIZE=1024
設定を有効にします。
sudo /etc/init.d/dphys-swapfile stop sudo /etc/init.d/dphys-swapfile start
まとめ
今回は、OpenCVのRaspberry Piへの導入や、Python関連の設定、コンパイルの方法をご紹介しました。
これを発展系として、色々実験ができそうですね。
openCVが画像処理の定番のライブラリーですので、色々実験して、得るものが多いはずです。
今回の設定で、絡んでいるものが多くて、途中でどこかで引っかかることもかるかもしれません。
そういう時、お気軽にTwitterでもDMいただければ、知っている範囲、お答え致します。どうぞよろしくお願い致します。
#esp32 https://t.co/0QPG3QNEav
— kawashimaken (@kawashimaken1) 2018年3月26日
次は、顔認識の機能と連動して、カメラモジュールにサーボをつけて顔の追随とか
顔認識して、ディープラーニングをさせるなど
様々な実験をしていきたいと思います。
次の記事をお楽しみにしてください!
では、また!
ビデオの映像にある複数の顔検出はこちらの記事をどうぞ!
Raspberry Piで最新版のopenCV(3.4.4)をコンパイルして使いたい方はこちらの記事をどうぞ!
[amazonjs asin=”4873118379″ locale=”JP” title=”詳解 OpenCV 3 ―コンピュータビジョンライブラリを使った画像処理・認識”]
[amazonjs asin=”4061538292″ locale=”JP” title=”OpenCVによる画像処理入門 改訂第2版 (KS情報科学専門書)”]
macOS Mojave VirtualBox Ubuntu 16.04 で Intel Movidiusを動かす方法!
カワシマ様。インストールまでの詳しい手順ありがとうございます。
勧められたままに行い、最後の帽子をかぶった女性が表示されるところまで行ったのですが、実際pthonのプログラムを動かそうと思うと
ImportError: No module named ‘cv2’
のエラーが出てしまいます。
別サイトをいろいろと検索してみても解決方法が見つかりません。アドバイスいただけますでしょうか?
川島様
大変興味深い内容かつ詳細な手順をありがとうございます。
私も試しにやってみました。
最後の女性の写真で顔認識まで出来たのですが、その後、コマンドウィンドウを☓で消し、swapfileをstopを実行
⇒source 〜/.profile⇒workon.cv⇒bash: workon: コマンドが見つかりません
となってしまいます。
何かアドバイスいただけましたら幸いです。
解決出来ましたら、こちらのサイトの動画顔検出の方をやってみようと考えております。
連投失礼致します。
色々調べて見たところ以下の様な状況がボトルネックになっているようでした。
bash: /usr/local/bin/python3: そのようなファイルやディレクトリはありません
virtualenvwrapper.sh: There was a problem running the initialization hooks.
If Python could not import the module virtualenvwrapper.hook_loader,
check that virtualenvwrapper has been installed for
VIRTUALENVWRAPPER_PYTHON=/usr/local/bin/python3 and that PATH is
set properly.
様々なサイトを調べてみましたが改善出来ませんでした。
現在も調査中です。
一応解決いたしました。
下記で直接起動させれば現状使えております。
export VIRTUALENVWRAPPER_PYTHON=/usr/local/bin/python3
⇒source ~/.profile
⇒workon cv
また、何か御座いましたらよろしくお願い致します。