HOME
  Security
   Software
    Hardware
  
FPGA
  CPU
   Android
    Raspberry Pi
  
nLite
  Xcode
   etc.
    ALL
  
LINK
BACK
 

2018/08/04

【インストール版】Raspberry Piで DeepDreamを動かしてキモイ絵をモリモリ量産 Caffe Deep Learning 【インストール版】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
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
【ビルド版】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でメモリを馬鹿食いするアプリ用に不要なサービスを停止してフリーメモリを増やす方法
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
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
https://github.com/google/deepdream/raw/master/flowers.jpg


・第1世代
第1世代


・第3世代
第3世代


・第5世代
第5世代


・第7世代
第7世代



 その他の Caffe + Google DeepDreamerで生成したキモイ絵は下記に有ります。

2018/08/04
【ビルド版】Raspberry Piで DeepDreamを動かしてキモイ絵をモリモリ量産 Caffe Deep Learning Framework
【ビルド版】Raspberry Piで DeepDreamを動かしてキモイ絵をモリモリ量産 Caffe Deep Learning Framework

  ラズパイで Caffe Deep Learning Frameworkをビルドして Deep Dreamを動かしてキモイ絵を生成する



Tags: [Raspberry Pi], [電子工作], [ディープラーニング]

●関連するコンテンツ(この記事を読んだ人は、次の記事も読んでいます)

NVIDIA Jetson Nano 開発者キットを買ってみた。メモリ容量 4GB LPDDR4 RAM
NVIDIA Jetson Nano 開発者キットを買ってみた。メモリ容量 4GB LPDDR4 RAM

  Jetson Nanoで TensorFlow PyTorch Caffe/Caffe2 Keras MXNet等を GPUパワーで超高速で動かす!

Raspberry Piでメモリを馬鹿食いするアプリ用に不要なサービスを停止してフリーメモリを増やす方法
Raspberry Piでメモリを馬鹿食いするアプリ用に不要なサービスを停止してフリーメモリを増やす方法

  ラズパイでメモリを沢山使用するビルドやアプリ用に不要なサービス等を停止して使えるメインメモリを増やす

【成功版】最新版の Darknetに digitalbrain79版の Darknet with NNPACKの NNPACK処理を適用する
【成功版】最新版の Darknetに digitalbrain79版の Darknet with NNPACKの NNPACK処理を適用する

  ラズパイで NNPACK対応の最新版の Darknetを動かして超高速で物体検出や DeepDreamの悪夢を見る

【成功版】Raspberry Piで NNPACK対応版の Darknet Neural Network Frameworkをビルドする方法
【成功版】Raspberry Piで NNPACK対応版の Darknet Neural Network Frameworkをビルドする方法

  ラズパイに Darknet NNPACK darknet-nnpackをソースからビルドして物体検出を行なう方法

【成功版】Raspberry Piで Darknet Neural Network Frameworkをビルドする方法
【成功版】Raspberry Piで Darknet Neural Network Frameworkをビルドする方法

  ラズパイに Darknet Neural Network Frameworkを入れて物体検出や悪夢のグロ画像を生成する

【成功版】Raspberry Piに TensorFlow Deep Learning Frameworkをインストールする方法
【成功版】Raspberry Piに TensorFlow Deep Learning Frameworkをインストールする方法

  ラズパイに TensorFlow Deep Learning Frameworkを入れて Google DeepDreamで悪夢を見る方法

Raspberry Piで TensorFlow Deep Learning Frameworkを自己ビルドする方法
Raspberry Piで TensorFlow Deep Learning Frameworkを自己ビルドする方法

  ラズパイで TensorFlow Deep Learning Frameworkを自己ビルドする方法

Raspberry Piで Caffe Deep Learning Frameworkで物体認識を行なってみるテスト
Raspberry Piで Caffe Deep Learning Frameworkで物体認識を行なってみるテスト

  ラズパイで Caffe Deep Learning Frameworkを動かして物体認識を行なってみる

【ビルド版】Raspberry Piで DeepDreamを動かしてキモイ絵をモリモリ量産 Caffe Deep Learning Framework
【ビルド版】Raspberry Piで DeepDreamを動かしてキモイ絵をモリモリ量産 Caffe Deep Learning Framework

  ラズパイで Caffe Deep Learning Frameworkをビルドして Deep Dreamを動かしてキモイ絵を生成する

Raspberry Piで Caffe2 Deep Learning Frameworkをソースコードからビルドする方法
Raspberry Piで Caffe2 Deep Learning Frameworkをソースコードからビルドする方法

  ラズパイで Caffe 2 Deep Learning Frameworkをソースコードから自己ビルドする方法

Orange Pi PC 2の 64bitのチカラで DeepDreamしてキモイ絵を高速でモリモリ量産してみるテスト
Orange Pi PC 2の 64bitのチカラで DeepDreamしてキモイ絵を高速でモリモリ量産してみるテスト

  OrangePi PC2に Caffe Deep Learning Frameworkをビルドして Deep Dreamを動かしてキモイ絵を生成する

Raspberry Piに Jupyter Notebookをインストールして拡張子 ipynb形式の IPythonを動かす
Raspberry Piに Jupyter Notebookをインストールして拡張子 ipynb形式の IPythonを動かす

  ラズパイに IPython Notebookをインストールして Google DeepDream dream.ipynbを動かす

Raspberry Piで Deep Learningフレームワーク Chainerをインストールしてみる
Raspberry Piで Deep Learningフレームワーク Chainerをインストールしてみる

  ラズパイに Deep Learningのフレームワーク Chainerを入れてみた

Raspberry Piで DeepBeliefSDKをビルドして画像認識フレームワークを動かす方法
Raspberry Piで DeepBeliefSDKをビルドして画像認識フレームワークを動かす方法

  ラズパイに DeepBeliefSDKを入れて画像の物体認識を行なう

Raspberry Piで Microsoftの ELLをビルドする方法
Raspberry Piで Microsoftの ELLをビルドする方法

  ラズパイで Microsoftの ELL Embedded Learning Libraryをビルドしてみるテスト、ビルドするだけ

Raspberry Piで MXNet port of SSD Single Shot MultiBoxを動かして画像の物体検出をする方法
Raspberry Piで MXNet port of SSD Single Shot MultiBoxを動かして画像の物体検出をする方法

  ラズパイで MXNet port of SSD Single Shot MultiBox Object Detectorで物体検出を行なってみる

Raspberry Piで Apache MXNet Incubatingをビルドする方法
Raspberry Piで Apache MXNet Incubatingをビルドする方法

  ラズパイで Apache MXNet Incubatingをビルドしてみるテスト、ビルドするだけ

Raspberry Piで OpenCVの Haar Cascade Object Detectionでリアルタイムにカメラ映像の顔検出を行なってみる
Raspberry Piで OpenCVの Haar Cascade Object Detectionでリアルタイムにカメラ映像の顔検出を行なってみる

  ラズパイで OpenCVの Haar Cascade Object Detection Face & Eyeでリアルタイムでカメラ映像の顔検出をする方法

Raspberry Piで NNPACKをビルドする方法
Raspberry Piで NNPACKをビルドする方法

  ラズパイで NNPACKをビルドしてみるテスト、ビルドするだけ

Raspberry Pi 3の Linuxコンソール上で使用する各種コマンドまとめ
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/