チノカログ

ITインフラ系、ガジェット系、テック系ネタ

ラズパイはじめてみた(TensorFlow/Keras/OpenCV3導入編)

f:id:chinoka:20190114194841j:plain

Raspberry PiGoogleが開発した機械学習のソフトウェアライブラリTensorFlow、
深層学習ライブラリKeras、 および画像処理ライブラリOpenCV3を導入してみました。

筆者がTensorFlowを使って何をやりたいかというと、以下のQiita記事にある画像認識です。 qiita.com

本記事では、TensorFlow, Keras, OpenCV3のインストール方法を記載します。

※ラズパイの初期セットアップしたときの記事は以下の通りです。 chinokalog.hatenablog.com

環境

今回使用する環境は以下の通りです。

  • HW: Raspberry Pi3 Model B
  • OS: Raspbian GNU/Linux 9.6 (stretch)

TensorFlowのインストール

以下のTensorFlow公式ページを参照しながら、インストールを実施します。 https://www.tensorflow.org/install/

まずは、お決まりのやつです。

$ sudo apt update

続いて、行列計算ライブラリであるlibatlas-base-devをインストールします。

$ sudo apt install libatlas-base-dev

そして、TensorFlowをインストールするのですが、

$ pip3 install tensorflow

を実行すると筆者の環境では、ReadTimeoutErrorが発生してしまいました。
サーバの問題なのか、ネットワークの問題なのか不明。
ググると、以下のページに解決策を見つけました。
How to solve ReadTimeoutError: HTTPSConnectionPool(host='pypi.python.org', port=443) with pip? - Stack Overflow

HTTPタイムアウト時間のオプションを指定してpip実行すれば上手くいくとのこと。
そこで、以下のように実行しました。

$ pip3 --default-timeout=100 install tensorflow

これでインストールに成功。
動作検証として、Hello, World的な以下を実行しました。

$ python3
>>> import tensorflow as tf
>>> hello = tf.constant('Hello, TensorFlow!')
>>> sess = tf.Session()
>>> print(sess.run(hello))

Hello, TensorFlow!が出力されればとりあえず問題なし。 ちなみに、バージョンは以下で確認できます。

$ python3
>>>import tensorflow as tf
>>>tf.__version__

今回の使用環境のTensorFlowバージョンは、1.11.0です。

Kerasのインストール

Kerasもpipからインストール可能です。 こちらもReadTimeoutErrorの問題が発生したので、 HTTPタイムアウト時間のオプションを指定してpip実行しました。

$ pip3 --default-timeout=100 install keras

インストール後、バージョン確認を実施しておきます。

$ python3
>>>import keras
>>>keras.__version__

今回の使用環境のKerasバージョンは、2.2.4です。

OpenCV3のインストール

OpenCV3のインストールは、以下のQiita記事、およびGithubソースを 使用させていただきました。

qiita.com

github.com

記事の通り、以下を実行します。

$ OPENCV_DEB=libopencv3_3.4.5-20181227.1_armhf.deb

$ curl -SL https://github.com/mt08xx/files/raw/master/opencv-rpi/${OPENCV_DEB} -o ${OPENCV_DEB}
$ sudo apt autoremove -y libopencv{3,4}
$ sudo apt install -y ./${OPENCV_DEB}

インストール後、バージョン確認を実施します。

$ sudo ldconfig
$ python3 -c 'import cv2; print(cv2.__version__)'

今回の使用環境のOpenCV3バージョンは、3.4.5です。

次回

学習済モデルであるInceptionV3を導入して、いよいよ画像認識に挑戦してみたいと思います。

(2019/01/21 更新)
やってみました。記事はこちら。 chinokalog.hatenablog.com