SSD(SingleShotMultiboxDetector)による環境構築

どうせ最初からやり直すのなら、

Raspbian Jessie+ROS Kinetic+samba4.2.14+Python3.4.7+Tensorflow1.3.0+Keras2.1.2+OpenCV3.3.1+Jupyter Notebook+Single Shot Multibox Detector(SSD)環境の構築

でやってみます。

■ SD Card Formatter にてMicroSD Card class10 SDHC 16GBを初期化p

Class6のSDHCではうまく起動できなかったのはたまたま?

Raspberry Pi のOSブートには最低保証速度は10MB/s, Speed Class 10 or U1の物が必要らしいので、動作速度が遅かったのか?

Class10でもダメだった → 電源アダプタの容量の問題の様ですので手持ちの黒いのを白いのに変更。

■ 上記に従い、

2017-07-05-raspbian-jessie.imgをダウンロード

Win32DiskImagerを起動し、2017-07-05-raspbian-jessie.imgを指定して書き込み

7inchモニター・キーボード・マウスを接続したRaspberry Pi 3 へSDカードを挿入して電源ON

左上の🍓マーク→Preferences→RaspberryPiConfiguration

→Interfacesタブ→必要なオプションを「Enable」にする(とりあえずSSHとVNCのみ)

→Localsation

    →Locale 「ja」「JP」「UTF-8」

→TimeZone 「Asia」「Tokyo」

    →Keyboard 「Japan」「Japanese」

→WiFi Country 「JP Japan」

Okで再起動すると日本語メニュー

左上の🍓マーク→設定→RaspberryPiの設定→システム

→パスワード  raspberry -> 新パスワード

→Resolution         CEA mode9 800×600 60Hz 4:3

*) 7inch Monitor解像度に合わせる為

無線LAN

BluetoothとSPの間のマークを押す

SSIDを選択

パスワードを入力

VNCマークを右クリック→Options…→Security →Encription:PreferOff/Authentication:VNCpasswordに設定

→Users & Permissions→Password→パスワード設定

Okで再起動

PCからSSHで入れる事を確認

PCからVNCで入れる事を確認

これ以降はSSHで作業(モニター・キーボード・マウス)は不要

また、ここで一旦imgファイルに保存(_0)

次に一応、お約束の

$ sudo apt-get update
$ sudo apt-get upgrade

を実行しておきます。

$ iwconfig

で確認すると、

Power Management:on

となっているので、

11.Wi-Fiの省電力モード無効化を行いrebootし、

Power Management:off

となっている事を確認する。

なお、10は現状はうまく設定出来ないようなので、11は実施していない。また、12もとりあえず未実施。

固定 IP アドレス を 設定

設定は /etc/dhcpcd.conf の 一番最後に以下の内容を記述します.

1
2
3
4
5
pi@raspberrypi:~ $ sudo nano /etc/dhcpcd.conf
interface wlan0
static ip_address=192.168.x.yyy/24
static routers=192.168.x.1
static domain_name_servers=192.168.x.1

※ interface wlan0 は 無線 LAN の ネットワーク・インターフェース、有線 LAN で IP アドレス を 固定する場合は wlan0 を eth0 にする。

xはネットワーク環境に依存、yyyは設定したい値をいれる。

現時点での容量確認。

$ df -h
ファイルシス サイズ 使用 残り 使用% マウント位置
/dev/root 15G 3.9G 10G 29% /

ここで一旦imgファイルに保存する。(_1)

*)多分、ここでSwap領域拡大(後述)するのが望ましい

ROS [kinetic]をインストール

pi@raspberrypi:~ $ df -h
ファイルシス サイズ 使用 残り 使用% マウント位置
/dev/root 15G 4.7G 9.3G 34% /

0.8GB使用されてました。

環境変数の追加

Sambaのインストール

TMP領域の拡張とログファイルのRAMDISK化

無用なシステムログの無効化

Raspberry Pi起動時にログ出力先フォルダを自動生成するよう変更

必要なパッケージの一部分インストール

pi@raspberrypi:~ $ df -h
ファイルシス サイズ 使用 残り 使用% マウント位置
/dev/root 15G 5.7G 8.2G 41% /

Python3.4.7のインストール

pi@raspberrypi:~ $ df -h
ファイルシス サイズ 使用 残り 使用% マウント位置
/dev/root 15G 6.0G 7.9G 44% /

Python3.x版 Tensorflow1.3.0のインストール

→うまくいかないので、1.1.0をインストールします

mkdir tensorflow1.1.0
cd tensorflow1.1.0
wget https://github.com/samjabrahams/tensorflow-on-raspberry-pi/releases/download/v1.1.0/tensorflow-1.1.0-cp34-cp34m-linux_armv7l.whl

Keras2.1.2インストール(20171205時点:Python3.5まで対応)

途中でハングした

https://qiita.com/PINTO/items/b084fe3dc716c42e2867#_reference-d75054430956aa47ec79

SWAP領域の一時的な拡張 2018/03/17追記

が気になるので、ここで対応しておく。

記事に従って

CONF_SWAPSIZE=100 -> 2048(単位はMHz)

に変更して、初期設定変更して

free -h

で確認したらSwap領域は

99M → 2GB

と拡大されていました。

これで再度kerasインストールします。

やっぱり暫くするとscipyインストール中に右側で文字が回っているのが止まっている。topコマンドを打ってみると、一番動作しているコマンドが、cc1plusと出ています。

CTRL+Cで止めて再起動して再度kerasをインストールする。

topコマンドで一番動いているコマンドを見ておきます。

python3.4→f951→cc1(/xorg/python3.4)→f951→cc1plus…

cipyインストール中に右側で文字が回っているのが止まりはしないので多分大丈夫でしょう。

でも、回転スピードが非常に落ちてきている。

pi@raspberrypi:~ $ df -h
ファイルシス サイズ 使用 残り 使用% マウント位置
tmpfs 512M 142M 371M 28% /tmp

の使用量だけが少しづつ増えているので、時間はかかるけどインストール作業は進んでいる感じ。

VNCで見ていると負荷は25%程度で、CPUクロックは1.2GHz, CPU温度も54℃位なので、1CPUだけが負荷100%で動いている感じがする。

時間がかかったけど、

keras-2.1.5

pyyaml-3.12

scipy-1.01

がインストール成功とのメッセージが出ました。

jsonファイル記載してpython3の対話モードでkerasがインポート出来る事を確認

OpenCV3.3.1のインストール

途中でメモリーが一杯になってしまった。

32GB品が必要だったらしい…。

とりあえず、Swap領域を1GBに減らして一旦imgファイルに落しておき、明日、32GB品を買ってきて再インストールしよう。(2__)

micro SDカードのパーティション拡張

$ sudo raspi-config
7.Advanced Options → A1.Expand Filesystem
yes
Finish
reboot now? → yes
$ df -h
※/dev/rootのサイズが大きくなっていたら成功

pi@raspberrypi:~ $ df -h
ファイルシス サイズ 使用 残り 使用% マウント位置
/dev/root 29G 14G 14G 50% /

なので成功です。

SWAP領域の一時的な拡張 2018/03/17追記

で再度2GBに拡張しておきます。

./opencv/build へ移動して、

sudo make install

で、再度インストールする。

これまでにインストール出来ていた所までは、

built …

というコメント付きで作業はスキップされてゆき、それ以降は時間がかかるけど無事インストール成功しました。

pi@raspberrypi:~ $ python3
Python 3.4.7 (default, Apr 21 2018, 14:20:14)
[GCC 4.9.2] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import cv2
>>> cv2.__version__
'4.0.0-pre'
>>> exit()

Version4.0.0-pre というバージョンが入ったみたいです。

ここで一旦imageファイルに落しておきます。(xxx_180428_0.img)

Jupyter notebook は前回インストール失敗しているので、一旦後回しとし、ここから分岐してInception_V3による物体認識を先行し、別エントリにする。

 

 

 

 

 

 

Jupyter notebookのインストール

$ ./configure_jupyter.sh

でエラーが出る。

そもそもこのファイルが無い。

HeadlessなRaspberry Pi 3でJupyter notebookを自動起動させてOpenCVを使うまで

の「設定」を参考にして作成して実行した。

$ sudo ./install_tex.sh;sudo ./install_stack.sh
もそんなファイル無いので、、
$ sudo ./inst_tex.sh;sudo ./inst_stack.sh
を実行した。

更に、

「続いてパスワードを設定する.パスワードを設定しないと,毎回ランダムに決まるトークンを入力するように促されるのでかえって面倒.」という事なので、

$ jupyter notebook password
Enter password:
Verify password:
[NotebookPasswordApp] Wrote hashed password to /home/pi/.jupyter/jupyter_notebook_config.json

でパスワード設定しておきましたが、アクセス出来ないです。

https://github.com/kleinee/jns

に従って、設定やり直し必要か?(Jnsをアンインストールしてやり直すか、最悪、2__からやり直せばよい?)

http://irukanobox.blogspot.jp/2018/02/raspberry-pijupyter-notebook.html

も気になる。

Jupyter notebookは後回しにして学習済みモデルが使えるか確認したいので、

TensorFlow on Raspberrry Pi3

学習モデルをつくる

から作業を続けます。

途中、エラーが出るので、

tensorflowで画像認識トライ-on-raspberrry-pi3

と同じ処理をしてゆきますが、最初に

https://teratail.com/questions/100908

をしておけばエラーが出なくなるので、初回にスクリプトを動かすと勝手に必要なファイルをダウンロードしてくれるみたいです。

エラーが出ました。
pi@raspberrypi:~/deep-learning-models $ python3 inception_v3.py
Using TensorFlow backend.
Downloading data from https://github.com/fchollet/deep-learning-models/releases/download/v0.5/inception_v3_weights_tf_dim_ordering_tf_kernels.h5
96116736/96112376 [==============================] - 215s 2us/step
Traceback (most recent call last):
File "inception_v3.py", line 400, in
model = InceptionV3(include_top=True, weights='imagenet')
File "inception_v3.py", line 386, in InceptionV3
model.load_weights(weights_path)
File "/usr/local/lib/python3.4/site-packages/keras/engine/topology.py", line 2646, in load_weights
raise ImportError('`load_weights` requires h5py.')
ImportError: `load_weights` requires h5py.

h5py が無いという事なので、pip3でインストールしてみる。

pi@raspberrypi:~ $ sudo pip3 install h5py
Collecting h5py
Using cached https://files.pythonhosted.org/packages/41/7a/6048de44c62fc5e618178ef9888850c3773a9e4be249e5e673ebce0402ff/h5py-2.7.1.tar.gz
Requirement already satisfied: numpy>=1.7 in /usr/local/lib/python3.4/site-packages (from h5py) (1.14.2)
Requirement already satisfied: six in /usr/local/lib/python3.4/site-packages (from h5py) (1.11.0)
Building wheels for collected packages: h5py
Running setup.py bdist_wheel for h5py ... done
Stored in directory: /root/.cache/pip/wheels/03/d5/10/548eb638f07aeb26d55e10f2a45e9383dfb3ecd4b04764e4a9
Successfully built h5py
Installing collected packages: h5py
Successfully installed h5py-2.7.1

PILが無いとエラーが出るので、以下も実行。

pi@raspberrypi:~/deep-learning-models $ sudo pip3 install pillow

これで動きました。

「将来のワーニング」というのは出ていますが、エラーは出ていません。

pi@raspberrypi:~/deep-learning-models $ python3 inception_v3.py
/usr/local/lib/python3.4/importlib/_bootstrap.py:321: FutureWarning: Conversion of the second argument of issubdtype from `float` to `np.floating` is deprecated. In future, it will be treated as `np.float64 == np.dtype(float).type`.
return f(*args, **kwds)
Using TensorFlow backend.
Downloading data from https://s3.amazonaws.com/deep-learning-models/image-models/imagenet_class_index.json
40960/35363 [==================================] - 0s 9us/step
Predicted: [[('n02504458', 'African_elephant', 0.58458394), ('n01871265', 'tusker', 0.35385633), ('n02504013', 'Indian_elephant', 0.01978549), ('n02134084', 'ice_bear', 0.0005529598), ('n02437312', 'Arabian_camel', 0.00053362496)]]

次に、候補を1つにするのは出来たが、USBカメラを使うのは、

pi@raspberrypi:~/deep-learning-models $ python3 inception_v3.py
/usr/local/lib/python3.4/importlib/_bootstrap.py:321: FutureWarning: Conversion of the second argument of issubdtype from `float` to `np.floating` is deprecated. In future, it will be treated as `np.float64 == np.dtype(float).type`.
return f(*args, **kwds)
Using TensorFlow backend.
OpenCV(4.0.0-pre) Error: Assertion failed (size.width>0 && size.height>0) in imshow, file /home/pi/opencv/modules/highgui/src/window.cpp, line 356
Traceback (most recent call last):
File "inception_v3.py", line 408, in
cv2.imshow("Show FLAME Image", frame)
cv2.error: OpenCV(4.0.0-pre) /home/pi/opencv/modules/highgui/src/window.cpp:356: error: (-215:Assertion failed) size.width>0 && size.height>0 in function 'imshow'

とエラーになります。

まず、OpenCV+USBカメラの使いこなし確認してみる必要あり。

コメントを残す

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