・2018/08/04
【インストール版】Raspberry Piで DeepDreamを動かしてキモイ絵をモリモリ量産 Caffe Deep Learning
(ラズパイで Caffe Deep Learning Frameworkをインストールして Deep Dreamを動かしてキモイ絵を生成する)
Tags: [Raspberry Pi], [電子工作], [ディープラーニング]
● Raspberry Piで Google DeepDreamを動かしてキモイ絵を量産する
Raspberry Piで DeepDreamを動かせる事を知ったので動かしてみます。生成速度は超遅いです。また、ラズパイはメモリが少ないので 1024x575pxのサイズで 1時間掛かります。
Raspberry Piで Google DeepDreamを動かして一時期流行したキモイ絵を量産します。
DeepDream - Wikipedia
DeepDreamで生成した画像の例(Wikipediaより引用)
・DeepDream

● Raspberry Piで Google DeepDreamを動かしてキモイ絵を量産する方法
DeepDreamを動かすには Caffeと言う Deep Learning Frameworkを使用します。
Caffeは apt-getでもインストールできて、それを使う事で面倒な Caffeのビルドが不要になります。(ただし、ビルド版と比べて実行速度が 5倍以上遅いです。)
Debian Package Tracker - caffe
● Raspberry Piで Caffe Deep Learning Frameworkを自前でビルドして DeepDreamする方法
・2018/08/04
【ビルド版】Raspberry Piで DeepDreamを動かしてキモイ絵をモリモリ量産 Caffe Deep Learning Framework
ラズパイで Caffe Deep Learning Frameworkをビルドして Deep Dreamを動かしてキモイ絵を生成する
●今回動かした Raspberry Pi Raspbian OSのバージョン
RASPBIAN STRETCH WITH DESKTOP
Version:June 2018
Release date: 2018-06-27
Kernel version: 4.14
pi@raspberrypi:~/pytorch $ uname -a
Linux raspberrypi 4.14.50-v7+ #1122 SMP Tue Jun 19 12:26:26 BST 2018 armv7l GNU/Linux
● Raspberry Piに Caffe Deep Learning Frameworkを apt-getでインストールする。
Caffe - Deep Learning Framework
BVLC/caffe
Caffe: a fast open framework for deep learning. http://caffe.berkeleyvision.org/
BVLC = Berkeley Vision and Learning Center(カリフォルニア大学バークレー校)
# お決まりの sudo apt-get updateで最新状態に更新する
sudo apt-get update
# apt-cache search caffeで caffeの名前のパッケージを検索する
apt-cache search caffe
# apt-get installで caffeの CPU版をインストールする
sudo apt-get -y install caffe-cpu
※ apt-get installでインストールされる Caffeは Python 3用です。(Python 2系では動かない)
pi@raspberrypi:~ $ apt-cache search caffe
caffe-cpu - Fast, open framework for Deep Learning (Meta)
caffe-doc - Caffe's doxygen docs and examples
caffe-tools-cpu - Tools for fast, open framework for Deep Learning (CPU_ONLY)
caffeine - prevent the desktop becoming idle in full-screen mode
git-cola - highly caffeinated git GUI
gnome-shell-extension-caffeine - GNOME Shell extension to keep your computer awake
libcaffe-cpu-dev - development files for Caffe (CPU_ONLY)
libcaffe-cpu1 - library of Caffe, deep learning framework (CPU_ONLY)
python3-caffe-cpu - Python3 interface of Caffe (CPU_ONLY)
ttf-aenigma - 465 free TrueType fonts by Brian Kent
pi@raspberrypi:~ $ sudo apt-get -y install caffe-cpu
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following additional packages will be installed:
caffe-tools-cpu cython3 fonts-lyx ipython3 libaec0 libblosc1
libboost-python1.62.0 libcaffe-cpu1 libgflags2v5 libgoogle-glog0v5
libhdf5-100 libjs-jquery-ui libleveldb1v5 liblmdb0 libprotobuf10 libsz2
libzstd1 python-matplotlib-data python-pexpect python-ptyprocess
python-tables-data python3-bs4 python3-caffe-cpu python3-cycler
python3-dateutil python3-decorator python3-gflags python3-h5py
python3-html5lib python3-ipython python3-ipython-genutils python3-leveldb
python3-lxml python3-matplotlib python3-networkx python3-nose
python3-numexpr python3-pandas python3-pandas-lib python3-pexpect
python3-pickleshare python3-prompt-toolkit python3-protobuf
python3-ptyprocess python3-pygments python3-pyparsing python3-scipy
python3-simplegeneric python3-skimage python3-skimage-lib python3-tables
python3-tables-lib python3-traitlets python3-tz python3-wcwidth
python3-webencodings python3-yaml ttf-bitstream-vera
# command line interface working
caffe
# python3 interface working
python3 -c 'import caffe; print(caffe.__path__)'
● Raspberry Piで Caffe Deep Learning Frameworkを動かす
pi@raspberrypi:~ $ caffe --version
caffe version 1.0.0-rc4
pi@raspberrypi:~ $ python3 -c 'import caffe; print(caffe.__path__)'
['/usr/lib/python3/dist-packages/caffe']
pi@raspberrypi:~ $ caffe
caffe: command line brew
usage: caffe <command> <args>
commands:
train train or finetune a model
test score a model
device_query show GPU diagnostic information
time benchmark model execution time
Flags from /build/caffe-V1QGus/caffe-1.0.0~rc4/tools/caffe.cpp:
-gpu (Optional; run in GPU mode on given device IDs separated by ','.Use
'-gpu all' to run on all available GPUs. The effective training batch
size is multiplied by the number of devices.) type: string default: ""
-iterations (The number of iterations to run.) type: int32 default: 50
-level (Optional; network level.) type: int32 default: 0
-model (The model definition protocol buffer text file.) type: string
default: ""
-phase (Optional; network phase (TRAIN or TEST). Only used for 'time'.)
type: string default: ""
-sighup_effect (Optional; action to take when a SIGHUP signal is received:
snapshot, stop or none.) type: string default: "snapshot"
-sigint_effect (Optional; action to take when a SIGINT signal is received:
snapshot, stop or none.) type: string default: "stop"
-snapshot (Optional; the snapshot solver state to resume training.)
type: string default: ""
-solver (The solver definition protocol buffer text file.) type: string
default: ""
-stage (Optional; network stages (not to be confused with phase), separated
by ','.) type: string default: ""
-weights (Optional; the pretrained weights to initialize finetuning,
separated by ','. Cannot be set simultaneously with snapshot.)
type: string default: ""
● Raspberry Piで DeepDreamアプリを動かす
GitHub - google/deepdream
Googleの deepdreamは IPythonと言う言語でラズパイでは動きません。
普通の Pythonで動く様に移植した下記を使用します。
kesara/deepdreamer
Easy to configure Python program that make use of Google's DeepDream. https://deepdreamer.fq.nz/
Deep Dreamer | deepdreamer
cd
git clone https://github.com/kesara/deepdreamer
cd deepdreamer
# 学習データ bvlc_googlenet.caffemodelをダウンロードする
wget http://dl.caffe.berkeleyvision.org/bvlc_googlenet.caffemodel
# deploy.prototxtをダウンロードする
# https://github.com/BVLC/caffe/tree/master/models/bvlc_googlenet
wget https://raw.githubusercontent.com/BVLC/caffe/master/models/bvlc_googlenet/deploy.prototxt
# deploy.prototxtの一番最後に force_backward: trueの行を追加する
# nano deploy.prototxt
# force_backward: true
# コマンドラインでサクッと force_backward: trueの行を追加する
echo "force_backward: true" >> deploy.prototxt
# tailコマンドで最後に追加された事を確認する
tail deploy.prototxt
apt-get install caffe-cpuの Caffeは python3で動かせます。
pi@raspberrypi:~/deepdreamer $ python3 deepdreamer.py sample.jpg
deepdreamerの動作例
# ディレクトリを GITの kesara/deepdreamerに変更する
cd
cd deepdreamer
# flowers.jpg画像をダウンロードする
wget https://github.com/google/deepdream/raw/master/flowers.jpg
# flowers.jpg画像を元に DeepDream(100世代)する
python3 deepdreamer.py flowers.jpg
# flowers.jpg画像を元に DeepDreamで GIFアニメを生成する
python3 deepdreamer.py --gif true flowers.jpg
# Error: only integer scalar arrays can be converted to a scalar index
# ImageMagick
sudo apt-get -y install imagemagick
pi@raspberrypi:~/deepdreamer $ python3 deepdreamer.py flowers.jpg
WARNING: Logging before InitGoogleLogging() is written to STDERR
W0807 13:06:42.396404 2675 _caffe.cpp:135] DEPRECATION WARNING - deprecated use of Python interface
W0807 13:06:42.396530 2675 _caffe.cpp:136] Use this instead (with the named "weights" parameter):
W0807 13:06:42.396548 2675 _caffe.cpp:138] Net('deploy.prototxt', 1, weights='bvlc_googlenet.caffemodel')
I0807 13:06:42.405501 2675 net.cpp:53] Initializing net from parameters:
name: "GoogleNet"
force_backward: true
state {
...
convolution_param {
num_output: 32
kernel_size: 1
weight_filler {
type: "xavier"
std: 0.2
}
bias_filler {
type: "c
I0807 13:06:42.438524 2675 layer_factory.hpp:77] Creating layer data
I0807 13:06:42.438645 2675 net.cpp:86] Creating Layer data
I0807 13:06:42.438694 2675 net.cpp:382] data -> data
I0807 13:06:42.438804 2675 net.cpp:124] Setting up data
I0807 13:06:42.438846 2675 net.cpp:131] Top shape: 10 3 224 224 (1505280)
I0807 13:06:42.438896 2675 net.cpp:139] Memory required for data: 6021120
I0807 13:06:42.438936 2675 layer_factory.hpp:77] Creating layer conv1/7x7_s2
I0807 13:06:42.439004 2675 net.cpp:86] Creating Layer conv1/7x7_s2
I0807 13:06:42.439043 2675 net.cpp:408] conv1/7x7_s2 <- data
I0807 13:06:42.439093 2675 net.cpp:382] conv1/7x7_s2 -> conv1/7x7_s2
...
I0807 13:07:56.687074 2682 net.cpp:746] Ignoring source layer loss3/loss3
Dreaming...
/usr/lib/python3/dist-packages/scipy/ndimage/interpolation.py:568: UserWarning: From scipy 0.13.0, the output shape of zoom() is calculated with round() instead of int() - for these inputs the size of the returned array has changed.
"the returned array has changed.", UserWarning)
●メモリを沢山使うので不要なサービス等を停止してラズパイが使えるメインメモリを増やす
・2018/08/14
Raspberry Piでメモリを馬鹿食いするアプリ用に不要なサービスを停止してフリーメモリを増やす方法
ラズパイでメモリを沢山使用するビルドやアプリ用に不要なサービス等を停止して使えるメインメモリを増やす
● 320x240pxの画像を Deep Dreamerの Caffeで処理している時のメモリ使用量
pi@raspberrypi:~ $ free -h
total used free shared buff/cache available
Mem: 976M 250M 531M 6.5M 194M 670M
Swap: 2.0G 0B 2.0G
・320x240pxの画像を Deep Dreamerの Caffeで処理している時のメモリ使用量 htop

●生成したキモイ絵
元絵 https://github.com/google/deepdream/ より引用
320x240px 1枚(1世代)生成するのに 16分(下記のビルド版は 3分なので 5倍以上遅い)
wget https://github.com/google/deepdream/raw/master/flowers.jpg
・https://github.com/google/deepdream/raw/master/flowers.jpg

・第1世代

・第3世代

・第5世代

・第7世代

その他の Caffe + Google DeepDreamerで生成したキモイ絵は下記に有ります。
・2018/08/04
【ビルド版】Raspberry Piで DeepDreamを動かしてキモイ絵をモリモリ量産 Caffe Deep Learning Framework
ラズパイで Caffe Deep Learning Frameworkをビルドして Deep Dreamを動かしてキモイ絵を生成する
Tags: [Raspberry Pi], [電子工作], [ディープラーニング]
●関連するコンテンツ(この記事を読んだ人は、次の記事も読んでいます)
NVIDIA Jetson Nano 開発者キットを買ってみた。メモリ容量 4GB LPDDR4 RAM
Jetson Nanoで TensorFlow PyTorch Caffe/Caffe2 Keras MXNet等を GPUパワーで超高速で動かす!
Raspberry Piでメモリを馬鹿食いするアプリ用に不要なサービスを停止してフリーメモリを増やす方法
ラズパイでメモリを沢山使用するビルドやアプリ用に不要なサービス等を停止して使えるメインメモリを増やす
【成功版】最新版の Darknetに digitalbrain79版の Darknet with NNPACKの NNPACK処理を適用する
ラズパイで NNPACK対応の最新版の Darknetを動かして超高速で物体検出や DeepDreamの悪夢を見る
【成功版】Raspberry Piで NNPACK対応版の Darknet Neural Network Frameworkをビルドする方法
ラズパイに Darknet NNPACK darknet-nnpackをソースからビルドして物体検出を行なう方法
【成功版】Raspberry Piで Darknet Neural Network Frameworkをビルドする方法
ラズパイに Darknet Neural Network Frameworkを入れて物体検出や悪夢のグロ画像を生成する
【成功版】Raspberry Piに TensorFlow Deep Learning Frameworkをインストールする方法
ラズパイに TensorFlow Deep Learning Frameworkを入れて Google DeepDreamで悪夢を見る方法
Raspberry Piで TensorFlow Deep Learning Frameworkを自己ビルドする方法
ラズパイで TensorFlow Deep Learning Frameworkを自己ビルドする方法
Raspberry Piで Caffe Deep Learning Frameworkで物体認識を行なってみるテスト
ラズパイで Caffe Deep Learning Frameworkを動かして物体認識を行なってみる
【ビルド版】Raspberry Piで DeepDreamを動かしてキモイ絵をモリモリ量産 Caffe Deep Learning Framework
ラズパイで Caffe Deep Learning Frameworkをビルドして Deep Dreamを動かしてキモイ絵を生成する
Raspberry Piで Caffe2 Deep Learning Frameworkをソースコードからビルドする方法
ラズパイで Caffe 2 Deep Learning Frameworkをソースコードから自己ビルドする方法
Orange Pi PC 2の 64bitのチカラで DeepDreamしてキモイ絵を高速でモリモリ量産してみるテスト
OrangePi PC2に Caffe Deep Learning Frameworkをビルドして Deep Dreamを動かしてキモイ絵を生成する
Raspberry Piに Jupyter Notebookをインストールして拡張子 ipynb形式の IPythonを動かす
ラズパイに IPython Notebookをインストールして Google DeepDream dream.ipynbを動かす
Raspberry Piで Deep Learningフレームワーク Chainerをインストールしてみる
ラズパイに Deep Learningのフレームワーク Chainerを入れてみた
Raspberry Piで DeepBeliefSDKをビルドして画像認識フレームワークを動かす方法
ラズパイに DeepBeliefSDKを入れて画像の物体認識を行なう
Raspberry Piで Microsoftの ELLをビルドする方法
ラズパイで Microsoftの ELL Embedded Learning Libraryをビルドしてみるテスト、ビルドするだけ
Raspberry Piで MXNet port of SSD Single Shot MultiBoxを動かして画像の物体検出をする方法
ラズパイで MXNet port of SSD Single Shot MultiBox Object Detectorで物体検出を行なってみる
Raspberry Piで Apache MXNet Incubatingをビルドする方法
ラズパイで Apache MXNet Incubatingをビルドしてみるテスト、ビルドするだけ
Raspberry Piで OpenCVの Haar Cascade Object Detectionでリアルタイムにカメラ映像の顔検出を行なってみる
ラズパイで OpenCVの Haar Cascade Object Detection Face & Eyeでリアルタイムでカメラ映像の顔検出をする方法
Raspberry Piで NNPACKをビルドする方法
ラズパイで NNPACKをビルドしてみるテスト、ビルドするだけ
Raspberry Pi 3の Linuxコンソール上で使用する各種コマンドまとめ
ラズパイの Raspbian OSのコマンドラインで使用する便利コマンド、負荷試験や CPUシリアル番号の確認方法等も
[HOME]
|
[BACK]
リンクフリー(連絡不要、ただしトップページ以外は Web構成の変更で移動する場合があります)
Copyright (c)
2018 FREE WING,Y.Sakamoto
Powered by 猫屋敷工房 & HTML Generator
http://www.neko.ne.jp/~freewing/raspberry_pi/raspberry_pi_install_caffe_google_deep_dream/