目次
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を動かす方法!