・2018/08/10
Raspberry Piで Caffe2 Deep Learning Frameworkをソースコードからビルドする方法
(ラズパイで Caffe 2 Deep Learning Frameworkをソースコードから自己ビルドする方法)
Tags: [Raspberry Pi], [電子工作], [ディープラーニング]
● Raspberry Piで Google DeepDreamを動かしてキモイ絵を量産する方法
DeepDreamを動かすには Caffeと言う Deep Learning Frameworkを使用します。
Raspberry Piで Google DeepDreamを動かして一時期流行したキモイ絵を量産します。
DeepDream - Wikipedia
DeepDreamで生成した画像の例(Wikipediaより引用)
・DeepDream

● Raspberry Piで Caffe Deep Learning Frameworkで DeepDreamする方法
・2018/08/04
【ビルド版】Raspberry Piで DeepDreamを動かしてキモイ絵をモリモリ量産 Caffe Deep Learning Framework
ラズパイで Caffe Deep Learning Frameworkをビルドして Deep Dreamを動かしてキモイ絵を生成する
・2018/08/04
【インストール版】Raspberry Piで DeepDreamを動かしてキモイ絵をモリモリ量産 Caffe Deep Learning
ラズパイで Caffe Deep Learning Frameworkをインストールして Deep Dreamを動かしてキモイ絵を生成する
・2018/08/06
Orange Pi PC 2の 64bitのチカラで DeepDreamしてキモイ絵を高速でモリモリ量産してみるテスト
OrangePi PC2に 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で Caffe2 Deep Learning Frameworkを Gitソースリストからビルドする。
Caffe2 is a lightweight, modular, and scalable deep learning framework. https://caffe2.ai
Caffeの作者 Yangqing Jia氏
元となった Caffeの作者で Facebookに入り、後継の Caffe2を作った。(ざっくりな経緯解説。時系列は未確認)
元となった Caffeは バークレー大学の研究室が作成しましたが、Caffe2は Facebookと NVIDIAが協力して作成しています。
BVLC/caffe
Caffe: a fast open framework for deep learning. http://caffe.berkeleyvision.org/
BVLC = Berkeley Vision and Learning Center(カリフォルニア大学バークレー校)
また、Caffe2と PyTorchは協力関係に有るとの事。
Caffe2 and PyTorch join forces to create a Research + Production
Comparison of deep learning software
Raspberry Piでのビルド方法は Caffe2公式ページに記載が有ります。
Caffe2 Install - Raspbian - Build From Source
# お決まりの sudo apt-get updateで最新状態に更新する
sudo apt-get update
# Caffe2のビルドに必要な cmakeをインストールする
sudo apt-get -y install cmake
cd
git clone --recursive https://github.com/pytorch/pytorch.git
# ディレクトリを移動する
cd pytorch
git submodule update --init
# apt-get install時の Do you want to continue? [Y/n]を確認しない様にする
sed -i '18s/sudo apt-get install \\/sudo apt-get -y install \\/' ./scripts/build_raspbian.sh
# 2コアから 1コアでビルドする様に変更する
# しかし、ビルド時間を考えると 1コアに変更しない方が良い
# (2コアでのビルドが不安定な場合に 1コアに変更します)
# sed -i '44s/make -j 2/make/' ./scripts/build_raspbian.sh
# ビルド時間 1コアの場合、184分
# ビルド時間 2コアの場合、108分
# 変更を確認する
tail ./scripts/build_raspbian.sh
# ビルドを開始する(ビルドに掛かる時間も計測する)
date >BUILD_START
time ./scripts/build_raspbian.sh
date >BUILD_END
cat BUILD_START
cat BUILD_END
●デフォルトのビルドスクリプトでは 2コアを使用してビルドしている
build_raspbian.sh
scripts/build_raspbian.sh
デフォルトの build_raspbian.shのビルドスクリプトでは下記の様にメモリとのトレードオフで 2コアを使用してビルドしています。
しかし、2コアのビルドでもビルドに失敗する事が有ったので 1コアでビルドするのが安心です。
build_raspbian.sh
# Note: while Raspberry pi has 4 cores, running too many builds in parallel may
# cause out of memory errors so we will simply run -j 2 only.
make -j 2 || exit 1
make -j 2 || exit 1
を
make || exit 1
に書き換えると 2コアビルドから 1コアビルドになります。
※ 2コアでビルドすると 184分から 108分に 1時間以上ビルド時間が短縮できる。
●ビルド時間
1コアの場合、184分(build_raspbian.sh内の apt-get installの時間を含まず)
real 184m44.974s
user 179m49.205s
sys 4m28.352s
Sat 11 Aug 19:49:10 UTC 2018
Sat 11 Aug 22:53:55 UTC 2018
2コアの場合、108分(build_raspbian.sh内の apt-get installの時間を含まず)
real 108m36.507s
user 207m53.549s
sys 5m21.912s
Sat 11 Aug 23:30:05 UTC 2018
Sun 12 Aug 01:18:42 UTC 2018
●ビルドにはメモリを沢山使うので不要なサービス等を停止して使えるメインメモリを増やす
・2018/08/14
Raspberry Piでメモリを馬鹿食いするアプリ用に不要なサービスを停止してフリーメモリを増やす方法
ラズパイでメモリを沢山使用するビルドやアプリ用に不要なサービス等を停止して使えるメインメモリを増やす
● ./scripts/build_raspbian.shで Caffe2のビルドができた
とりあえず ./scripts/build_raspbian.shで Caffe2のビルドができたっぽいけど使い方が全くわからん。
pi@raspberrypi:~/pytorch $ find ./ -name libcaffe2.so
./build/lib/libcaffe2.so
pi@raspberrypi:~/pytorch $ pwd
/home/pi/pytorch
export LD_LIBRARY_PATH=/home/pi/pytorch/build/lib:$LD_LIBRARY_PATH
pi@raspberrypi:~/pytorch $ ls -l build/bin
total 7024
-rwxr-xr-x 1 pi pi 123532 Aug 11 22:50 caffe2_benchmark
-rwxr-xr-x 1 pi pi 272988 Aug 11 22:52 convert_caffe_image_db
-rwxr-xr-x 1 pi pi 20460 Aug 11 22:52 convert_db
-rwxr-xr-x 1 pi pi 272552 Aug 11 22:51 convert_encoded_to_raw_leveldb
-rwxr-xr-x 1 pi pi 40592 Aug 11 22:51 db_throughput
-rwxr-xr-x 1 pi pi 19684 Aug 11 19:49 js_embed
-rwxr-xr-x 1 pi pi 277608 Aug 11 22:51 make_cifar_db
-rwxr-xr-x 1 pi pi 294120 Aug 11 22:51 make_image_db
-rwxr-xr-x 1 pi pi 282224 Aug 11 22:52 make_mnist_db
-rwxr-xr-x 1 pi pi 30208 Aug 11 22:53 predictor_verifier
-rwxr-xr-x 1 pi pi 1430688 Aug 11 22:52 print_registered_core_operators
-rwxr-xr-x 1 pi pi 3943632 Aug 11 20:17 protoc
-rwxr-xr-x 1 pi pi 27916 Aug 11 22:53 run_plan
-rwxr-xr-x 1 pi pi 75676 Aug 11 22:53 speed_benchmark
-rwxr-xr-x 1 pi pi 31912 Aug 11 22:53 split_db
-rwxr-xr-x 1 pi pi 25396 Aug 11 22:51 tutorial_blob
pi@raspberrypi:~/pytorch $ ./build/bin/caffe2_benchmark
./build/bin/caffe2_benchmark: error while loading shared libraries: libcaffe2.so: cannot open shared object file: No such file or directory
export LD_LIBRARY_PATH=/home/pi/pytorch/build/lib:$LD_LIBRARY_PATH
pi@raspberrypi:~/pytorch $ ./build/bin/caffe2_benchmark
terminate called after throwing an instance of 'at::Error'
what(): [enforce fail at proto_utils.cc:188] fd != -1. -1 vs -1. File not found:
*** Aborted at 1534029170 (unix time) try "date -d @1534029170" if you are using GNU date ***
PC: @ 0x760f545c gsignal
*** SIGABRT (@0x5d3e) received by PID 23870 (TID 0x6fd0c000) from PID 23870; stack trace: ***
@ 0x760f66c0 (unknown)
@ 0x760f545c gsignal
@ 0x762aa008 __gnu_cxx::__verbose_terminate_handler()
Aborted
pi@raspberrypi:~/pytorch $ date -d @1534029170
Sat 11 Aug 23:12:50 UTC 2018
pi@raspberrypi:~/pytorch $ ./build/bin/caffe2_benchmark
terminate called after throwing an instance of 'at::Error'
what(): [enforce fail at proto_utils.cc:188] fd != -1. -1 vs -1. File not found:
*** Aborted at 1534029359 (unix time) try "date -d @1534029359" if you are using GNU date ***
PC: @ 0x7614745c gsignal
*** SIGABRT (@0x5d50) received by PID 23888 (TID 0x6fd5e000) from PID 23888; stack trace: ***
@ 0x761486c0 (unknown)
@ 0x7614745c gsignal
@ 0x762fc008 __gnu_cxx::__verbose_terminate_handler()
Aborted
● PyTorchは?
PyTorch
Tensors and Dynamic neural networks in Python with strong GPU acceleration.
pi@raspberrypi:~/pytorch $ python
Python 2.7.13 (default, Nov 24 2017, 17:33:09)
[GCC 6.3.0 20170516] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import torch
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "torch/__init__.py", line 16, in <module>
from .version import __version__
ImportError: No module named version
>>> quit()
pi@raspberrypi:~/pytorch $ python3
Python 3.5.3 (default, Jan 19 2017, 14:11:04)
[GCC 6.3.0 20170124] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import torch
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/home/pi/pytorch/torch/__init__.py", line 16, in <module>
from .version import __version__
ImportError: No module named 'torch.version'
>>> quit()
# Install PyTorch
python setup.py install
# RuntimeError: Missing build dependency: Unable to `import typing`.
# Please install it via `conda install typing` or `pip install typing`
pip install typing
# Successfully installed typing-3.6.4
# Install PyTorch
python setup.py install
# 時間が掛かる
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で DeepDreamを動かしてキモイ絵をモリモリ量産 Caffe Deep Learning
ラズパイで Caffe Deep Learning Frameworkをインストールして Deep Dreamを動かしてキモイ絵を生成する
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_build_caffe2_deep_learning_framework/