サイトアイコン KOKENSHAの技術ブログ

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://opencv.org/

ソースコードと開発者: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/dphysswapfile

# 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/sitepackage

少し調整します。このモジュールを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/dphysswapfile

# 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いただければ、知っている範囲、お答え致します。どうぞよろしくお願い致します。

次は、顔認識の機能と連動して、カメラモジュールにサーボをつけて顔の追随とか

顔認識して、ディープラーニングをさせるなど

様々な実験をしていきたいと思います。

次の記事をお楽しみにしてください!

では、また!

ビデオの映像にある複数の顔検出はこちらの記事をどうぞ!

raspberry pi opencv ビデオで顔認識

raspberry pi opencv ビデオで顔認識(コンパイルなし!)

Raspberry Piで最新版のopenCV(3.4.4)をコンパイルして使いたい方はこちらの記事をどうぞ!

[amazonjs asin=”4873118379″ locale=”JP” title=”詳解 OpenCV 3 ―コンピュータビジョンライブラリを使った画像処理・認識”]

[amazonjs asin=”4061538292″ locale=”JP” title=”OpenCVによる画像処理入門 改訂第2版 (KS情報科学専門書)”]

openCVをnode.jsでやりましょう!Tensorflowのオブジェクトの認識までやっちゃいます!

Google AIY Vision Kit Raspberry Pi Zero WH簡単人工知能体験!(Python)

RaspberryPi 3B+とIntel Movidius Compute Stickで、サンプルコードを動かす

macOS Mojave VirtualBox Ubuntu 16.04 で Intel Movidiusを動かす方法!

モバイルバージョンを終了