Raspberry Pi 2 でDeepDreamを動かしてみた

想定している読者の方

  • すでにRaspberry Pi(Model Aでもいいです)を持っていて、基本的なLinux(特にRaspbianなどDebian系のディストリビューション)のコマンド操作ができる方
  • 母艦はなんでもいいので、Raspbian(現時点で2015-05-05版)のイメージディスクを作成してRaspberry Piを起動できる方
  • Raspberry Pi 2をお持ちの方(Raspberry Pi Model B+でも動くとは思いますが、CPU性能的に厳しいかと)

 

Raspbian(Wheezy)のシステムディスクを作って、パーティションを拡張する

本質的な箇所ではないので省略します。

なお、SDカードは8GBだとギリギリなので16GBをおすすめします。Class 10未満のものは避けたほうがいいと思います。

 

Raspbian(Wheezy)をjessieにアップグレード

Release Notes for Debian 8 (jessie), ARMv7 (EABI hard-float ABI) の通りです。慣れた方であれば目を通さなくてもいいかと思います。

 

Caffeのインストール

Caffe | Deep Learning Frameworkubuntu用のインストールガイド(

http://caffe.berkeleyvision.org/install_apt.html)があるので結構参考になります。

 

buildとかいったディレクトリを作る

$ mkdir build

$ cd build

 

Caffeのソースを取ってくる

$ git clone --depth 1 https://github.com/BVLC/caffe.git

 

まず、必要なパッケージをひたすらインストール

OpenBLAS

多分ATLASでも大丈夫だと思いますが、OpenBLASの方が性能がいいっぽいので。

$ sudo apt-get install  libopenblas-dev

その他必要なパッケージ

ゴリゴリとコンパイルするより、パッケージで入るものは入れてしまったほうが時間の短縮になります(経験済み・・・)。

$ sudo apt-get install libprotobuf-dev libleveldb-dev libsnappy-dev libopencv-dev

$ sudo apt-get install libhdf5-serial-dev protobuf-compiler

pythonのパッケージ

./build/caffe/python/requirements.txt に必要なパッケージ一覧(バージョン情報込み)があるので、

$ apt-cache showpkg foobar

といったコマンドで、バージョンが要件を満たしているものは、ひたすらapt-getでインストールする。

Cython>=0.19.2

$ sudo apt-get install cython

 

numpy>=1.7.1

$ sudo apt-get install python-numpy

 

scipy>=0.13.2

$ sudo apt-get install python-scipy

 

scikit-image>=0.9.3

$ sudo apt-get install python-skimage

以下のパッケージは依存で引っ張られてインストールされる。

matplotlib>=1.3.1

nose>=1.3.0

six>=1.1.0

Pillow>=2.3.0

 

h5py>=2.2.0

$ sudo apt-get install python-h5py

 

networkx>=1.8.1

pyyaml>=3.10

$ sudo apt-get install python-networkx

 

pandas>=0.12.0

$ sudo apt-get install python-pandas

 

protobuf>=2.5.0

$ sudo apt-get install python-protobuf

 

残りのpythonモジュールはバージョン違いなどでパッケージでいれられないので、pipでインストールする

# curl -kL https://raw.github.com/pypa/pip/master/contrib/get-pip.py | python

以下のパッケージがインストールされるように、

./build/caffe/python/requirements.txt

を編集。(多分編集しなくても平気)

ipython>=3.0.0

leveldb>=0.191

python-dateutil>=1.4,<2

python-gflags>=2.0

 

# pip install -r python/requirements.txt

 

後で使うので入れとく

# pip install "ipython[notebook]"

 

ソース・ヘッダーなどをjessieに合わせる

これをしないと、後でエラーになる

 

  1. ヘッダーなどの位置合わせ

    Optimize build process on debian jessie · Issue #2347 · BVLC/caffe · GitHub

  2.  DB周りの調整

    caffe on jetson tk1 · Issue #1861 · BVLC/caffe · GitHub

    src/caffe/util/db_lmdb.cppの定数変更
    const size_t LMDB_MAP_SIZE = 1099511627776; // 1 TB
    の定数を
    2^29 (536870912)
    に変更

 

Caffeのコンパイル

$ cp Makefile.config.example Makefile.config
$ vi Makefile.config

Raspberry PiのVideocore IVはGPUを演算に使えないのと、今回はOpenBLASを使っているので、適当なエディターで編集する。

 

 (抜粋)

# CPU-only switch (uncomment to build without GPU support).
CPU_ONLY := 1

# BLAS choice:
# atlas for ATLAS (default)
# mkl for MKL
# open for OpenBlas
BLAS := open

 

コンパイル

$ make all -j4
$ make test -j4
$ make runtest
$ make pycaffe

 

 テストをパスしたら、あともう少し。

 

モデルを取ってくる

wgetとかで下記モデルをダウンロード

http://dl.caffe.berkeleyvision.org/bvlc_googlenet.caffemodel

buid/caffe/models/bvlc_googlenet

にコピー

 

DeepDream動かすよー

$ git clone --depth 1 git@github.com:google/deepdream.git

$ cd deepdream-master

$ export PYTHONPATH=/path/to/caffe/python:$PYTHONPATH
$ ipython notebook

GUIの場合この時点でブラウザが立ち上がる。

 

「再生ボタン」っぽい黒三角をクリックして、「青空に雲」の絵まで来てエラーがなければ、OK。あとはのんびりグロい絵になるのを眺める。

お疲れ様でした。

 

本文中に明記していないけど参考にしたサイト)

 

勉強になるスライド(読むと理解が深まる)