Raspberry Pi3 Model B+でやった表情認識の学習済みモデルface_classficationをRaspberry Pi Zero Wに入れてみました。
で、結果から言いますと認識可能ですが実用にはなりません。
Zeroのスペックでは重すぎます。
1.0GHz シングルコアCPU (1.0GHz Broadcom BCM2837 64bit CPU)
512MB RAMメモリー
発熱でクロック数が落ちてる….ってわけでもなかったです(CPU温度は60度くらい)。
でもやってみようというチャレンジャーな方むけに。
基本的な段取りはラズパイ3の場合と一緒です。
ZeroへのOpenCV(3.4.1)のインストールはこのページをご参照ください。
ライブラリーのインストール
1 2 3 4 5 |
pip3 install numpy sudo apt-get install python3-h5py sudo apt-get install python3-pandas sudo pip3 install matplotlib sudo apt-get install libblas-dev liblapack-dev python3-dev libatlas-base-dev gfortran python3-setuptools |
TensorFlowはPi3と異なります。ZeroのCPUアーキテクチャーはarm6なので以下を実行してインストール。
1 |
sudo pip3 install https://github.com/lhelontra/tensorflow-on-arm/releases/download/v1.4.1/tensorflow-1.4.1-cp35-none-linux_armv6l.whl |
Kerasのインストールでは何も指定しないと 2019/07/09現在2.2.4が入ります。
このバージョンだとsoftmax関数で以下のようなエラーが起きます。
2.2.4だとaxisは決め打ちになってるのかな?
TypeError: softmax() got an unexpected keyword argument ‘axis’
で、2.1.3だと大丈夫なので…..
1 |
sudo pip3 install keras==2.1.3 |
face_classificationをGitHubからとってきてインストール
1 |
git clone https://github.com/oarriaga/face_classification |
/home/pi/face_classification/src/utils/preprocessor.pyを修正
コメントアウト(or 削除)
#from scipy.misc import imread, imresize
変更
1 2 3 |
return imread(image_name) -> return imageio.imread(image_name) return imresize(image_array, size) -> return imageio.imresize(image_array, size) |
ラズパイ3でやったのと同じことを実行
こんな感じ
忘れた頃に起動して、途中でほぼフリーズ状態になります(tt;
でも停止しているわけじゃーない。
X この非実用性を解消するには、Movidius NCSのお力を借りねばならないかも。
ラズパイ Zero Wではncsdkのインストールがそもそもできませんでした(^^)。
arm6アーキテクチャー用のインストーラーはありません。
cp: ‘/opt/movidius/NCSDK/ncsdk-armv6l/tk’ を stat できません: そのようなファイルやディレクトリはありません
Installation failed. Error on line 554
ラズパイ3でncsdkの環境を作っておいて、NCS用graphバイナリーをここで作成して、推論実行のみZeroでやるように方針変更。
Leave a Reply