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 Frameworkにubuntu用のインストールガイド(
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に合わせる
これをしないと、後でエラーになる
- ヘッダーなどの位置合わせ
Optimize build process on debian jessie · Issue #2347 · BVLC/caffe · GitHub
-
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。あとはのんびりグロい絵になるのを眺める。
お疲れ様でした。
本文中に明記していないけど参考にしたサイト)
勉強になるスライド(読むと理解が深まる)
Raspberry Jam Tokyo #4 at KDDI Web Com. 開催のお知らせ
Japanese Raspberry Pi Users Groupで、Raspberry Jam Tokyo #4 at KDDI Web Com.を開催いたします。
日時:12/7(土曜日) 12:30開場
アンカンファレンス方式ですので、Raspberry Pi自慢をしたい方、こういうふうにRaspberry Piで遊んでいます、などなど、とにかく喋りたい方が発表する場です。もちろん、聴くだけでも構いません。お気軽にご参加ください。
参加表明および詳細は、下記connpassサイトよりお願いいたします。
Maker Faire Tokyo 2013(11/3,4)に出展します
直前の告知となり恐縮ですが、Japanese Raspberry Pi Users GroupでMaker Faire Tokyo 2013に出展致します。
ブースは日本科学未来館1FのF-11です。すぐお隣がRSコンポーネンツ様なのでわかりやすいと思います。
なお、プレゼンテーションも11/4の12:30-12:50に行います。ちょうどお昼時ではありますが、聴きに来ていただけると嬉しいです。
また、Maker Faire Tokyo 2013開催キャンペーンとして、私どもUsers Group有志で執筆した「Raspberry Pi[実用]入門」のKindle版、技術評論社様電子書籍版の割引を2013年11/1~11/14の間行います。ぜひこの機会にお買い求め下さい。
・技術評論社様電子版(PDF形式)
https://gihyo.jp/dp/ebook/2013/978-4-7741-5884-6
・Kindle版
OSC 2013 Tokyo/Fallへのご来場ありがとうございました
今さら感はありますが、OSC 2013 Tokyo/Fallへご来場いただきましてありがとうございました。
2日目はあいにくの雨模様となりましたが、セミナーに多くの皆様に来ていただき、感謝しております。
一時期のようなRaspberry Piへの熱狂は少し一段落した感がありますが、相変わらず興味を持たれている印象を展示ブースでご案内しながら感じました。
11月、12月と2ヶ月連続でJapanese Raspberry Pi Users Group主催でRaspberry Jam #3, #4の開催(後日投稿します)もありますので、興味がございましたらご参加下さい。
ModMyPiで買い物
2連続で買い物エントリーです。
以前、Raspberry Pi Model Aを買ったのですが、ケースを買う機会を逃してました(送料がかかるのでどうせなら他の品物を買うついでに買いたいなぁと)。
今回、Raspberry PiのSDカードスロットに収まるMicroSDカードの変換アダプターと、Raspberry Pi用カメラモジュールを固定するアームを買うついでに、PibowのRaspberry Pi Model A用ケースをModMyPiから購入しました。
実は、Raspberry Piを5台持っているのに、共同購入したり、日本国内品薄状態の時に人柱でNewITという会社から購入してたりで、ModMyPiから買うのは初めてでした。
以前から「ModMyPiは発送・到着が早い」というのは聞いていたのですが、日本時間で9/3のお昼12時過ぎ(現地時間で9/3の午前3時過ぎ)にオーダーして、自宅には9/7のお昼すぎに届きました。早いですねー。梱包もしっかりしてました。
という訳で、早速Pibowのケース組み立てました。GPIOポートにそのままアクセスできるのと、カメラモジュールの配線が通るように穴が空いているのがポイント高いですね。ちなみに組み立てには小さい治具がついてくるのでドライバーは不要です。
ケースの上にあるのが、カメラモジュールのアームです。3.5mmジャックに挿して固定するタイプです。実際にはアームの先にプラスチック製のワッシャーとナットでカメラモジュールを固定します。
ケースの横にある小さいパーツがMicroSDカード変換アダプターです。