RaspberryPiで顔認識OpenCVで(コンパイルの方法も!)

はてなブックマーク - RaspberryPiで顔認識OpenCVで(コンパイルの方法も!)
LINEで送る
Pocket

目次

RaspberryPiで顔認識

みなさん、こんにちは!

株式会社虹賢舎の川島賢です。

今日はRaspberryPiで顔認識する方法を共有したいと思います!

openCV 3+ Raspberry Pi 3+ Python 3 ==> 333!

ハードウェア:RaspberryPiで顔認識で必要なもの

まず、は下記のものが必要です!

①もちろんRaspberryPi本体です!

(実際に実験で使っているRaspberryPiは別の個体です。)

②RaspberryPi専用のカメラ

私はアマゾンから購入しました。

ちなみに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)をコンパイルして使いたい方はこちらの記事をどうぞ!

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

はてなブックマーク - RaspberryPiで顔認識OpenCVで(コンパイルの方法も!)
LINEで送る
Pocket

4 Comments

Add a Comment

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

By continuing to use the site, you agree to the use of cookies. more information

The cookie settings on this website are set to "allow cookies" to give you the best browsing experience possible. If you continue to use this website without changing your cookie settings or you click "Accept" below then you are consenting to this.

Close