ひととおり、Windows上ではディープラーニングを動かせるようになったので、これをラズパイで動かせるか、やってみたいと思いました。
しかし、結構なイバラの道でした。
ここで、初めてKerasの環境を構築するのであれば仕方ないですが、PCなど他の環境で作った(トレーニングした)モデルを動かすために、ラズパイを使おうと思うときは、できるだけ同じVersion(Python / tensorflow / keras)をインストールするようにしないと同じコードが動かないようです。
ラズパイの環境はラズパイ3B(+ではない)でOSはラズビアンストレッチです。
今から始めようという人は ”3B+" を選ぶことをお勧めします。
Raspberry Pi 3 Model B+ 正規代理店品
- 出版社/メーカー: element14
- メディア: エレクトロニクス
- この商品を含むブログを見る
No LSB modules are available. Distributor ID: Raspbian Description: Raspbian GNU/Linux 9.4 (stretch) Release: 9.4 Codename: stretch
pythonは3.5.3です。
Python 3.5.3 (default, Jan 19 2017, 14:11:04)
また、結構容量を食うようなので、最低でも16GB以上のSDカードが必要なようです。(8GBでは難しい)
ラズパイ向けTensolfrowのダウンロード
ラズパイへのTensolfrowのインストールはpipで一発でできた人がいたらとても幸運な人だと思いますが、pythonのVersionなどに合わせて選択する必要があります。ラズパイ用のTensolfrowはぐぐると割と簡単に出てくる↓にありますが、これはpython3.4向けなので、
github.com
こちらにリンクが出ていた、ラズパイ用のpython3.5向けのtensolflowをダウンロードします。
uepon.hatenadiary.com
github.com
ラズパイ3用
ラズパイゼロ(Wも含む)用
インストール
まず、下ごしらえをして$sudo apt-get install python3-pip python3-dev
上のlinkをwgetでダウンロードし、
$wget https://github.com/samjabrahams ~~
pipでインストールします。
$sudo pip3 install tensorflow-1.4.1-cp35-none-linux_armv7l.whl
次にKerasをインストールします。
$pip3 install keras
これでKeras + Tensorflow環境はできたはずですが、Windowsで作ったディープラーニングのコードが動きません。
試行錯誤した結果、KerasのVersionが違ったためのようだとわかりました。
↓のようにVersionを指定してWindowsで使っていたものと同じものをインストールしたら動きました。
pip3 install Keras==2.0.5
ここまできたら、今度はOpen CVが動かない。
次のようなErrorがひとつづつ出てきたのを、下の$でひとつづつつぶしたが、まとめて書いておきます。
ImportError: libjasper.so.1: cannot open shared object file: No such file or directory ImportError: libQtGui.so.4: cannot open shared object file: No such file or directory ImportError: libQtTest.so.4: cannot open shared object file: No such file or directory
$sudo apt-get install libjasper-dev $sudo apt-get install libqtgui4 $sudo apt install libqt4-test
ラズパイの公式にもこの辺のことが少し書かれていて、ハマりどころらしい。
Cant Import cv2 (Pi 3 Mobel B) Python 3.5 - Raspberry Pi Forums
完成!
pi@raspberrypi:~ $ python3 akb48.py Using TensorFlow backend. res = [[1.07348785e-02 1.03990303e-03 8.26359332e-01 2.78084166e-02 1.33473864e-02 2.04083481e-05 5.67168854e-02 1.89039292e-05 5.17631590e-04 2.70321723e-02 2.74600531e-03 2.41437554e-03 5.76681559e-05 5.62191708e-04 2.87890956e-02 1.26411626e-03 1.78397109e-04 8.96107031e-06 3.83390201e-04]] 2 Prediction is Kashiwagi Yuki
余談
最初、ラズパイゼロでやってみようとして上手くいかなかった。ハード的な問題なのかと思っていたが、よく考えると、RaspbianのVersionも違うことを思い出した。
ゼロのほうはスターターキットにプリインストールされたものをそのまま使っていたのだが、janomeが動かないなど、他の問題もあった。
そこで、試しにラズパイ3のSDカードをそのままラズパイゼロに入れてみた。
動くではないですか!
ということで、ラズパイゼロのRaspbianも最新のstretchに入れ替えた。
こちらはjanomeが動くのでこれでOK。
ラズパイ3 | |
Distributor ID | Raspbian |
Description | Raspbian GNU/Linux 9.4 (stretch) |
Release | 9.4 |
Codename | stretch |
ラズパイゼロ | |
Distributor ID: | Raspbian |
Description | Raspbian GNU/Linux 8.0 (jessie) |
Release | 8.0 |
Codename | jessie |
このような状態であったのをラズパイゼロを最新のストレッチをインストールした。
↓Janomeがインストールできなかった時の話
s51517765.hatenadiary.jp
余談その2
その辺の適当な(Windowsで使っていた)SDカードをSD Card Formatter v 5.0.0でクイックフォーマットをしてインストールしたら、100%でとまった。(ただし、止まったと思っても100%まで行っているときは数分掛かることがあるらしい)
www.sdcard.org
上書きフォーマットのほうがいいらしい。
windowsなど他のOSで使っていたものは、本気でまっさらにしないと問題が出るようだ。
もともとRaspbianが入っていた(動いていた)SDはクイックフォーマットで問題なかった。
また、一度ラズパイで使ったものをWindowsで使うように戻す時も複数のパーティションが切られているので、そのままでも使えなくはないですがSD Card Formatterで「上書フォーマット」をすると綺麗になります。
関連
ラズパイセットアップの基本s51517765.hatenadiary.jp