・2019/05/06
【ビルド版】NVIDIA Jetson Nanoで NVIDIA版 Caffe NVCaffeを GPUパワーで動かしてキモイ絵をモリモリ量産
(NVIDIA Jetson Nanoで NV_Caffe Deep Learningをビルドして CUDAで DeepDreamを動かしてキモイ絵を生成する)
Tags: [Raspberry Pi], [電子工作], [ディープラーニング]
● Jetson Nano、Jetson Xavier NXの便利スクリプト
・2020/07/03
【2020年版】NVIDIA Jetson Nano、Jetson Xavier NXの便利スクリプト
Jetsonの面倒な初期設定やミドルウェアのインストールを bashスクリプトの実行だけで簡単にできます
● 2020年追記 Caffeは OpenCV 3系を必要とします
OpenCV 4系に対応改造した Caffeを使う事で JetPack 4.3以降はハッピーに成れる!!
Qengineering / caffe
Special adapted for OpenCV 4.1 and Python 3.6+
Install OpenCV 4.1.2 and Caffe on Ubuntu 18.04 for Python 3
● NVIDIA Jetson Nanoで OpenCV 3をビルドしてインストールする方法、NVCaffe等の OpenCV 4未対応を動かす
NVIDIA Jetson Nanoに「古い」 OpenCV 3.4.10をビルドしてインストールする方法
・2020/04/25
NVIDIA Jetson Nanoで OpenCV 3をビルドしてインストールする方法、NVCaffe等の OpenCV 4未対応を動かす
NVIDIA Jetson Nanoに「古い」 OpenCV 3.4.10をビルドしてインストールする方法
● 2020/04追記 fatal error: opencv2/core/core.hpp No such file or directory
NVCC src/caffe/util/math_functions.cu
In file included from src/caffe/util/bbox_util.cu:10:0:
./include/caffe/util/bbox_util.hpp:1:10: fatal error: opencv2/core/core.hpp: No such file or directory
#include <opencv2/core/core.hpp>
^~~~~~~~~~~~~~~~~~~~~~~
●解決方法:明示的に OpenCV 3.4.10をビルドしてインストールする
上の「NVIDIA Jetson Nanoで OpenCV 3をビルドしてインストールする方法、NVCaffe等の OpenCV 4未対応を動かす」を参照。
●駄目な解決方法:明示的に OpenCV 3をインストールする
jetson@jetson-desktop:~/nvcaffe$ apt-cache search libopencv-core3.2
libopencv-core-dev - development files for libopencv-core3.2
libopencv-core3.2 - computer vision core library
sudo apt-get install -y libopencv-core-dev libopencv-core3.2
In file included from src/caffe/util/bbox_util.cu:10:0:
./include/caffe/util/bbox_util.hpp:2:10: fatal error: opencv2/highgui/highgui.hpp: No such file or directory
#include <opencv2/highgui/highgui.hpp>
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
compilation terminated.
Makefile:623: recipe for target '.build_release/cuda/src/caffe/util/bbox_util.o' failed
●駄目な解決方法:/usr/include/opencv2でエラーが出ない様にシンボリックリンクを張る
jetson@jetson-desktop:~$ sudo ln -s /usr/include/opencv4/opencv2/ /usr/include/opencv2
jetson@jetson-desktop:~$ ls -l /usr/include/opencv2/core/
-rw-r--r-- 1 root root 21525 12月 14 00:46 affine.hpp
-rw-r--r-- 1 root root 2819 12月 14 00:46 async.hpp
-rw-r--r-- 1 root root 26499 12月 14 00:46 base.hpp
-rw-r--r-- 1 root root 1197 12月 14 00:46 bindings_utils.hpp
-rw-r--r-- 1 root root 845 12月 14 00:46 bufferpool.hpp
-rw-r--r-- 1 root root 6975 12月 14 00:46 check.hpp
-rw-r--r-- 1 root root 128652 12月 14 00:46 core_c.h
-rw-r--r-- 1 root root 2366 12月 14 00:46 core.hpp
下記の原因は OpenCV4系の includeファイルを読み込んでいる。(頑張って OpenCV4系に置換すれば対応可能だが、面倒)
src/caffe/util/bbox_util.cpp: In function ‘void caffe::VisualizeBBox(const std::vector<cv::Mat>&, const caffe::Blob*, float, const std::vector<cv::Scalar_<double> >&, const std::map<int, std::__cxx11::basic_string<char> >&, const string&)’:
src/caffe/util/bbox_util.cpp:2239:42: error: ‘CV_FILLED’ was not declared in this scope
CV_RGB(255, 255, 255), CV_FILLED);
^~~~~~~~~
src/caffe/util/bbox_util.cpp:2239:42: note: suggested alternative: ‘CLD_KILLED’
CV_RGB(255, 255, 255), CV_FILLED);
^~~~~~~~~
CLD_KILLED
src/caffe/util/bbox_util.cpp:2274:48: error: there are no arguments to ‘CV_FOURCC’ that depend on a template parameter, so a declaration of ‘CV_FOURCC’ must be available [-fpermissive]
cv::VideoWriter outputVideo(save_file, CV_FOURCC('D', 'I', 'V', 'X'),
^~~~~~~~~
src/caffe/util/bbox_util.cpp:2274:48: note: (if you use ‘-fpermissive’, G++ will accept your code, but allowing the use of an undeclared name is deprecated)
src/caffe/util/bbox_util.cpp: In instantiation of ‘void caffe::VisualizeBBox(const std::vector<cv::Mat>&, const caffe::Blob*, float, const std::vector<cv::Scalar_<double> >&, const std::map<int, std::__cxx11::basic_string<char> >&, const string&) [with Dtype = float; std::__cxx11::string = std::__cxx11::basic_string<char>]’:
src/caffe/util/bbox_util.cpp:2293:43: required from here
...
src/caffe/util/bbox_util.cpp:2274:57: error: ‘CV_FOURCC’ was not declared in this scope
src/caffe/util/bbox_util.cpp:2274:57: note: suggested alternative: ‘CV_16UC’
cv::VideoWriter outputVideo(save_file, CV_FOURCC('D', 'I', 'V', 'X'),
~~~~~~~~~^~~~~~~~~~~~~~~~~~~~
CV_16UC
src/caffe/util/bbox_util.cpp: In instantiation of ‘void caffe::VisualizeBBox(const std::vector<cv::Mat>&, const caffe::Blob*, float, const std::vector<cv::Scalar_<double> >&, const std::map<int, std::__cxx11::basic_string<char> >&, const string&) [with Dtype = half_float::half; std::__cxx11::string = std::__cxx11::basic_string<char>]’:
src/caffe/util/bbox_util.cpp:2305:43: required from here
...
src/caffe/util/im_transforms.cpp:472:42: error: ‘CV_YCrCb2BGR’ was not declared in this scope
cv::cvtColor(ycrcb_image, out_img, CV_YCrCb2BGR);
^~~~~~~~~~~~
src/caffe/util/im_transforms.cpp:485:22: error: ‘CV_IMWRITE_JPEG_QUALITY’ was not declared in this scope
params.push_back(CV_IMWRITE_JPEG_QUALITY);
^~~~~~~~~~~~~~~~~~~~~~~
src/caffe/util/im_transforms.cpp:488:33: error: ‘CV_LOAD_IMAGE_COLOR’ was not declared in this scope
out_img = cv::imdecode(buf, CV_LOAD_IMAGE_COLOR);
^~~~~~~~~~~~~~~~~~~
src/caffe/util/im_transforms.cpp:488:33: note: suggested alternative: ‘CV_HAL_DFT_STAGE_COLS’
out_img = cv::imdecode(buf, CV_LOAD_IMAGE_COLOR);
^~~~~~~~~~~~~~~~~~~
CV_HAL_DFT_STAGE_COLS
...
src/caffe/util/im_transforms.cpp:659:34: note: suggested alternative: ‘CV_SSE2’
cvtColor(*out_img, *out_img, CV_HSV2BGR);
^~~~~~~~~~
CV_SSE2
Makefile:610: recipe for target '.build_release/src/caffe/util/im_transforms.o' failed
make: *** [.build_release/src/caffe/util/im_transforms.o] Error 1
nano ../src/caffe/layers/video_data_layer.cpp
#include <opencv2/videoio.hpp>
using namespace cv;
#define CV_CAP_PROP_FRAME_COUNT CAP_PROP_FRAME_COUNT
#define CV_CAP_PROP_POS_FRAMES CAP_PROP_POS_FRAMES
#define CV_LOAD_IMAGE_COLOR LOAD_IMAGE_COLOR
nano ../src/caffe/layers/window_data_layer.cpp
cv_img = cv::imread(image.first, cv::IMREAD_COLOR);
/src/caffe/util/bbox_util.cpp:2186:42: error: ‘CV_FILLED’ was not declared in this scope
CV_RGB(255, 255, 255), CV_FILLED);
nano ../src/caffe/util/bbox_util.cpp
CV_RGBを cv::Scalarに書き換え。更に、RGBの順番を BGRに変更。
CV_FILLED cv::FILLED
等々、更に他にも必要なので省略。。。
● NVIDIA Jetson Nanoで Google DeepDreamを動かしてキモイ絵を量産する
Raspberry Piでも動かした事の有る DeepDreamを NVIDIA Jetson Nanoの GPUパワーで動かしてみます。
下記はラズパイで Caffeを動かしたまとめ。
・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を動かしてキモイ絵を生成する
● NVIDIA Jetson Nanoで Google DeepDreamを動かしてキモイ絵を量産する方法
DeepDreamを動かすには Caffeと言う Deep Learning Frameworkを使用します。
Caffeは apt-getでもインストールできますが、その後に DeepDreamを動かす方法が分からないのでビルドする方法を取ります。
(apt-getでインストールした Caffeの場合は PYTHONPATHと LD_LIBRARY_PATHへのパス設定は不要)
● NVIDIA Jetson Nanoとラズパイ3B+との Caffe Deep Learning Frameworkの動作速度ベンチマーク比較
wget https://github.com/google/deepdream/raw/master/flowers.jpg
python deepdreamer.py flowers.jpg
320x240pxの画像
Raspberry Pi 3B+ CPU | Atlas | 180秒 | 2018/8のバージョン Caffe |
Raspberry Pi 3B+ CPU | Atlas | 160秒 | Jetsonと同じ最新バージョン Caffe |
Raspberry Pi 3B+ CPU | OpenBLAS 1 core | 180秒 | Jetsonと同じ最新バージョン Caffe |
Raspberry Pi 3B+ CPU | OpenBLAS 4 core | Err | Segmentation fault |
NVIDIA CPU | Atlas | 85秒 |
NVIDIA CPU | OpenBLAS 1 core | 35秒 |
NVIDIA CPU | OpenBLAS 2 core | 25秒 |
NVIDIA CPU | OpenBLAS 4 core | 22秒 |
NVIDIA GPU | | 6秒 |
NVIDIA GPU | | 7秒 | NVIDIA版 Caffe |
● NVIDIA Jetson Nanoで BVLC Caffe Deep Learning Frameworkをビルドする
・2019/05/06
【ビルド版】NVIDIA Jetson Nanoで Caffe DeepDreamを GPUパワーで動かしてキモイ絵をモリモリ量産
NVIDIA Jetson Nanoで Caffe Deep Learningをビルドして CUDAで DeepDreamを動かしてキモイ絵を生成する
● NVIDIA版 Caffe NVCaffeをビルドして Jetson Nanoで動かしてみる
NVCaffeとは?
オリジナルの BVLC Caffeを NVIDIAが forkして管理している Caffeで NVIDIA環境用に最適化の改造がされている。
NVIDIA Caffe (NVIDIA Corporation 2017) is an NVIDIA-maintained fork of BVLC Caffe tuned for NVIDIA GPUs, particularly in multi-GPU configurations. Here are the major features:
NVIDIA GPU 対応 Caffe をダウンロードし、インストールする方法
https://github.com/NVIDIA/caffe/
cd
# nvcaffeディレクトリに git cloneする
# NVCaffe
# NVCaffe May 1, 2019 v0.17.3 fd6cf7a
git clone https://github.com/NVIDIA/caffe nvcaffe --depth 1 -b v0.17.3
cd nvcaffe
# Makefile.configファイルを作成(参考例のファイルからコピー)する
cp Makefile.config.example Makefile.config
# Makefile.configファイルを Jetson Nano環境に合わせて編集する
# nano Makefile.config
# コマンドラインでサクッと Makefile.configファイルを変更する
sed -i 's/^# USE_CUDNN/USE_CUDNN/' Makefile.config
# sed -i 's/BLAS :=.*/BLAS := atlas/' Makefile.config
sed -i 's/x86_64-linux-gnu/aarch64-linux-gnu/' Makefile.config
sed -i 's/# OPENCV_VERSION/OPENCV_VERSION/' Makefile.config
sed -i 's/arch=compute_60,code=sm_60/arch=compute_53,code=sm_53/' Makefile.config
sed -i 's/# WITH_PYTHON_LAYER/WITH_PYTHON_LAYER/' Makefile.config
grep "BLAS " Makefile.config
grep "CUDA_" Makefile.config
grep "_DIRS :" Makefile.config
grep "OPENCV_" Makefile.config
grep "_CUDNN" Makefile.config
grep "CPU_" Makefile.config
grep "WITH_" Makefile.config
user@user-desktop:~/N/caffe$ grep "BLAS " Makefile.config
# BLAS choice:
BLAS := open
user@user-desktop:~/N/caffe$ grep "CUDA_" Makefile.config
CUDA_DIR := /usr/local/cuda
# CUDA_DIR := /usr
CUDA_ARCH := -gencode arch=compute_50,code=sm_50 \
user@user-desktop:~/N/caffe$ grep "_DIRS :" Makefile.config
INCLUDE_DIRS := $(PYTHON_INCLUDE) /usr/local/include /usr/include/hdf5/serial
LIBRARY_DIRS := $(PYTHON_LIB) /usr/local/lib /usr/lib /usr/lib/aarch64-linux-gnu/hdf5/serial
user@user-desktop:~/N/caffe$ grep "OPENCV_" Makefile.config
OPENCV_VERSION := 3
user@user-desktop:~/N/caffe$ grep "_CUDNN" Makefile.config
USE_CUDNN := 1
user@user-desktop:~/N/caffe$ grep "CPU_" Makefile.config
user@user-desktop:~/N/caffe$ grep "WITH_" Makefile.config
WITH_PYTHON_LAYER := 1
user@user-desktop:~/N/caffe$ diff Makefile.config.example Makefile.config
6c6
< # USE_CUDNN := 1
---
> USE_CUDNN := 1
21c21
< # OPENCV_VERSION := 3
---
> OPENCV_VERSION := 3
36c36
< -gencode arch=compute_60,code=sm_60 \
---
> -gencode arch=compute_53,code=sm_53 \
85c85
< # WITH_PYTHON_LAYER := 1
---
> WITH_PYTHON_LAYER := 1
89c89
< LIBRARY_DIRS := $(PYTHON_LIB) /usr/local/lib /usr/lib /usr/lib/x86_64-linux-gnu/hdf5/serial
---
> LIBRARY_DIRS := $(PYTHON_LIB) /usr/local/lib /usr/lib /usr/lib/aarch64-linux-gnu/hdf5/serial
● Dependencies のインストール
# Caffe は、システムのパッケージ マネージャーから利用できるいくつかのライブラリに依存します。
# Ubuntu 14.04 の場合、次のコマンドで必要なライブラリがインストールされます。
sudo apt-get install libprotobuf-dev libleveldb-dev libsnappy-dev libopencv-dev libhdf5-serial-dev protobuf-compiler libgflags-dev libgoogle-glog-dev liblmdb-dev libatlas-base-dev git
sudo apt-get install --no-install-recommends libboost-all-dev
●上記の (1)~(3)の apt-get installを 1行で実行する
# Makefile.config, BLAS := atlas
sudo apt-get -y install libatlas-base-dev protobuf-compiler libprotoc-dev libboost-dev libgflags-dev libgoogle-glog-dev libhdf5-dev libleveldb-dev liblmdb-dev libopencv-dev libsnappy-dev libboost-system-dev libboost-filesystem-dev libboost-thread-dev libboost-python-dev python-skimage python-protobuf python-numpy python-pil
# Makefile.config, BLAS := open
sudo apt-get -y install libopenblas-dev
# libturbojpegをインストールする
# sudo apt-get -y install libturbojpeg libturbojpeg-dev
# for Raspbian OS Raspberry Pi 3B+
# Note, selecting 'libturbojpeg0-dev' instead of 'libturbojpeg-dev'
sudo apt-get -y install libturbojpeg libturbojpeg0-dev
ls -l /usr/lib/aarch64-linux-gnu/libturbojpeg.so
# sudo ln -s /usr/lib/aarch64-linux-gnu/libturbojpeg.so.0.1.0 /usr/lib/aarch64-linux-gnu/libturbojpeg.so
sudo ldconfig
# libboost-regex-devをインストールする
sudo apt-get -y install libboost-regex-dev
# libopenblas-base libopenblas-devをインストールする
sudo apt-get -y install libopenblas-base libopenblas-dev
●実際に caffeをビルドする
cd
cd nvcaffe
# ビルド設定を初期化
make clean
# make all -j4で 4 coreを使ってビルド速度を高速化(約 30分)
time make all -j4
# real 29m21.720s
# user 73m4.716s
# sys 7m26.316s
# make testと make runtestで動作確認
time make test -j4
# real 37m4.786s
# user 73m44.072s
# sys 4m6.148s
time make runtest -j4
# real 31m23.448s
# user 22m35.384s
# sys 6m40.428s
# Python用の Caffeの作成と distributeでビルド内容を反映
make pycaffe
make distribute
# ここまで成功すれば Caffeのビルドは完了
● 2020/04 OpenCV 3.4.10を自前ビルドからの NVCaffeは 82分
2020/04 追記
cd
cd nvcaffe
# ビルド設定を初期化
make clean
# make all -j4で 4 coreを使ってビルド速度を高速化(約 82分)
time make all -j4
# real 82m5.378s
# user 264m0.340s
# sys 21m39.764s
# Python用の Caffeの作成と distributeでビルド内容を反映
# ImportError : No module named _caffe
make pycaffe
make distribute
# ここまで成功すれば Caffeのビルドは完了
# 環境変数 CAFFE_HOMEに PATHを設定する
# export CAFFE_HOME=/home/user/nvcaffe
cd
cd nvcaffe
export CAFFE_HOME=$(pwd)
echo ${CAFFE_HOME}
# /home/jetson/nvcaffe
# パスにビルドで作成した Caffeを追加する
export PYTHONPATH=${CAFFE_HOME}/python:$PYTHONPATH
export LD_LIBRARY_PATH=${CAFFE_HOME}/distribute/lib:$LD_LIBRARY_PATH
● NVIDIA最適化版の OpenPoseをビルドする場合の事前設定
# 上記手順で NVCaffeをビルドする
# 上記手順で CAFFE_HOME等の環境変数を設定する
echo ${CAFFE_HOME}
# /home/jetson/nvcaffe
# OpenPoseのビルドに必要なファイルをコピーする
# fatal error half_float/half.hpp No such file or directory
cp -r ${CAFFE_HOME}/3rdparty/* ${CAFFE_HOME}/include
# fatal error caffe/proto/caffe.pb.h No such file or directory
cd ${CAFFE_HOME}
protoc src/caffe/proto/caffe.proto --cpp_out=.
mkdir include/caffe/proto
mv src/caffe/proto/caffe.pb.h include/caffe/proto
● NVCaffeの動作確認
# NVCaffeの動作確認
# cd /opt/caffe
cd
cd nvcaffe
data/mnist/get_mnist.sh
examples/mnist/create_mnist.sh
examples/mnist/train_lenet.sh
# If everything is running correctly, NVCaffe should download and create a data set, and
# then start training LeNet. If the training is successful, you will see a code similar to the
# following towards the end of the output:
# 下記の様な表示が出れば成功
Creating lmdb...
I0429 12:53:05.703790 11191 db_lmdb.cpp:36] Opened lmdb examples/mnist/mnist_train_lmdb
I0429 12:53:05.704241 11191 convert_mnist_data.cpp:88] A total of 60000 items.
I0429 12:53:05.704269 11191 convert_mnist_data.cpp:89] Rows: 28 Cols: 28
I0429 12:53:22.402772 11191 convert_mnist_data.cpp:108] Processed 60000 files.
I0429 12:53:22.909931 11201 db_lmdb.cpp:36] Opened lmdb examples/mnist/mnist_test_lmdb
...
I0402 15:08:01.016016 33 solver.cpp:431] Iteration 10000, loss = 0.0342847
I0402 15:08:01.016043 33 solver.cpp:453] Iteration 10000, Testing net (#0)
I0402 15:08:01.085050 38 data_reader.cpp:128] Restarting data pre-fetching
I0402 15:08:01.087720 33 solver.cpp:543] Test net output #0: accuracy = 0.9587
I0402 15:08:01.087751 33 solver.cpp:543] Test net output #1: loss = 0.130223 (* 1 = 0.130223 loss)
I0402 15:08:01.087767 33 caffe.cpp:239] Solver performance on device 0: 498.3 * 64 = 3.189e+04 img/sec
I0402 15:08:01.087780 33 caffe.cpp:242] Optimization Done in 24s
● Python版の Google Deep Dream kesara/deepdreamerをダウンロードする
# Python版の Google Deep Dream kesara/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
python(python2)で動かないので、
./deepdreamer/deepdreamer.py
の
images2gif import writeGifの gif動画書き出し機能を無効にする。
nano ./deepdreamer/deepdreamer.py
● 12行目をコメントにする。
# from deepdreamer.images2gif import writeGif
● 196~198行目をコメントにする。
# writeGif(
# "{}.gif".format(img_path), frames, duration=duration,
# repeat=loop)
# コマンドラインでサクッと deepdreamer/deepdreamer.pyを編集する
# 196~198行目を削除する
sed '196,198d' -i ./deepdreamer/deepdreamer.py
# 12行目を削除する
sed '12d' -i ./deepdreamer/deepdreamer.py
● GPUパワーでモリモリ DeepDreamで悪夢を観てみる
NVIDIA CUDAの GPUパワー 7秒程度で 1枚生成されます。
cd
cd deepdreamer
wget https://github.com/google/deepdream/raw/master/flowers.jpg
cp flowers.jpg nvf.jpg
# NVIDIA版 Caffe NVCaffeは --gpuid 0は不要
python deepdreamer.py nvf.jpg
user@user-desktop:~/deepdreamer$ ls -l nvf*
-rw-rw-r-- 1 user user 30570 5月 7 17:14 nvf.jpg
-rw-rw-r-- 1 user user 22700 5月 7 20:44 nvf.jpg_0.jpg
-rw-rw-r-- 1 user user 22305 5月 7 20:45 nvf.jpg_1.jpg
-rw-rw-r-- 1 user user 21920 5月 7 20:45 nvf.jpg_2.jpg
-rw-rw-r-- 1 user user 21845 5月 7 20:45 nvf.jpg_3.jpg
-rw-rw-r-- 1 user user 21878 5月 7 20:45 nvf.jpg_4.jpg
-rw-rw-r-- 1 user user 21774 5月 7 20:45 nvf.jpg_5.jpg
-rw-rw-r-- 1 user user 21788 5月 7 20:45 nvf.jpg_6.jpg
-rw-rw-r-- 1 user user 21807 5月 7 20:45 nvf.jpg_7.jpg
-rw-rw-r-- 1 user user 21742 5月 7 20:45 nvf.jpg_8.jpg
-rw-rw-r-- 1 user user 21780 5月 7 20:45 nvf.jpg_9.jpg
-rw-rw-r-- 1 user user 21654 5月 7 20:46 nvf.jpg_10.jpg
-rw-rw-r-- 1 user user 21655 5月 7 20:46 nvf.jpg_11.jpg
-rw-rw-r-- 1 user user 21431 5月 7 20:46 nvf.jpg_12.jpg
・NVIDIA Jetson Nanoで Google DeepDream NVCaffeを動かしてキモイ絵を量産する方法













● fatal error: turbojpeg.h: No such file or directory
CXX src/caffe/util/io.cpp
src/caffe/util/io.cpp:17:10: fatal error: turbojpeg.h: No such file or directory
#include <turbojpeg.h>
^~~~~~~~~~~~~
compilation terminated.
Makefile:610: recipe for target '.build_release/src/caffe/util/io.o' failed
make: *** [.build_release/src/caffe/util/io.o] Error 1
make: *** Waiting for unfinished jobs....
# libturbojpegをインストールする
sudo apt-get -y install libturbojpeg libturbojpeg-dev
# Useful notes
# Libturbojpeg library is used since 0.16.5. It has a packaging bug.
# Please execute the following (required for Makefile, optional for CMake):
ls -l /usr/lib/aarch64-linux-gnu/libturbojpeg.*
ls -l /usr/lib/aarch64-linux-gnu/libturbojpeg.so
# No such file or directory
# Solution (解決方法)
sudo ln -s /usr/lib/aarch64-linux-gnu/libturbojpeg.so.0.1.0 /usr/lib/aarch64-linux-gnu/libturbojpeg.so
sudo ldconfig
● /usr/bin/ld: cannot find -lboost_regex
● /usr/bin/ld: cannot find -lopenblas
CXX examples/mnist/convert_mnist_data.cpp
AR -o .build_release/lib/libcaffe-nv.a
LD -o .build_release/lib/libcaffe-nv.so.0.17.3
/usr/bin/ld: cannot find -lboost_regex
/usr/bin/ld: cannot find -lopenblas
collect2: error: ld returned 1 exit status
Makefile:600: recipe for target '.build_release/lib/libcaffe-nv.so.0.17.3' failed
make: *** [.build_release/lib/libcaffe-nv.so.0.17.3] Error 1
# Solution
# libboost-regex-devをインストールする
sudo apt-get -y install libboost-regex-dev
# libopenblas-base libopenblas-devをインストールする
sudo apt-get -y install libopenblas-base libopenblas-dev
● ImportError: No module named _caffe
user@user-desktop:~/deepdreamer$ python deepdreamer.py nvf.jpg
Traceback (most recent call last):
File "deepdreamer.py", line 9, in <module>
from deepdreamer.deepdreamer import deepdream, deepdream_video, list_layers
File "/home/user/deepdreamer/deepdreamer/deepdreamer.py", line 11, in <module>
from caffe import Classifier, set_device, set_mode_gpu
File "/home/user/N/caffe/python/caffe/__init__.py", line 1, in <module>
from .pycaffe import Net, SGDSolver, NesterovSolver, AdaGradSolver, RMSPropSolver, \
File "/home/user/N/caffe/python/caffe/pycaffe.py", line 13, in <module>
from ._caffe import Net, SGDSolver, NesterovSolver, AdaGradSolver, \
ImportError: No module named _caffe
# Solution
# Python用の Caffeの作成と distributeでビルド内容を反映
make pycaffe
make distribute
# パスにビルドで作成した Caffeを追加する
export PYTHONPATH=${CAFFE_HOME}/python:$PYTHONPATH
export LD_LIBRARY_PATH=${CAFFE_HOME}/distribute/lib:$LD_LIBRARY_PATH
● undefined symbol: _ZN5caffe21PyErrReportAndForwardEv
user@user-desktop:~/deepdreamer$ python deepdreamer.py nvf.jpg
Traceback (most recent call last):
File "deepdreamer.py", line 9, in <module>
from deepdreamer.deepdreamer import deepdream, deepdream_video, list_layers
File "/home/user/deepdreamer/deepdreamer/deepdreamer.py", line 11, in <module>
from caffe import Classifier, set_device, set_mode_gpu
File "/home/user/N/caffe/python/caffe/__init__.py", line 1, in <module>
from .pycaffe import Net, SGDSolver, NesterovSolver, AdaGradSolver, RMSPropSolver, \
File "/home/user/N/caffe/python/caffe/pycaffe.py", line 13, in <module>
from ._caffe import Net, SGDSolver, NesterovSolver, AdaGradSolver, \
ImportError: /home/user/N/caffe/python/caffe/_caffe.so: undefined symbol: _ZN5caffe21PyErrReportAndForwardEv
# Solution
# WITH_PYTHON_LAYER := 1のコメント文字#を取って有効にする
# Uncomment to support layers written in Python (will link against Python libs)
WITH_PYTHON_LAYER := 1
● WARNING: Logging before InitGoogleLogging() is written to STDERR
user@user-desktop:~/N/caffe$ ./.build_release/tools/caffe -version
WARNING: Logging before InitGoogleLogging() is written to STDERR
I0505 19:57:53.678395 17696 parallel.cpp:48] P2PManager::Init @ user-desktop
caffe version 0.17.3
WARNINGなので、とりあえず無視する。
● NVIDIA Jetson Nanoで OpenPoseをビルドする方法
・2019/05/10
NVIDIA Jetson Nanoで OpenPoseをビルドする方法、動画から人体の骨格検出
NVIDIA Jetson Nanoの CUDAパワーで OpenPoseを使って動画から人体の骨格検出
・2020/06/13
【2020年版】NVIDIA Jetson Nano対応の OpenPoseをビルドする手順
NVIDIA Jetson Nano対応の OpenPoseをビルドする手順
・2020/06/13
【2020年版】NVIDIA Jetson用に最新の CMake 3.17.3をビルドしてインストールする方法
2020年の JetPack 4.4になっても CMakeのバージョンが 3.10.2と古く OpenPoseのビルドでエラー発生の原因
● NVIDIA Jetson Nano、Xavier NXの Jetpack 4.4で NVCaffeをビルドする方法
# -- CUDA detected: 10.2
# -- Found cuDNN: ver. ??? found (include: /usr/include, library: /usr/lib/aarch64-linux-gnu/libcudnn.so)
# CMake Error at cmake/Cuda.cmake:256 (message):
# cuDNN version >3 is required.
# Call Stack (most recent call first):
# cmake/Cuda.cmake:284 (detect_cuDNN)
# cmake/Dependencies.cmake:85 (include)
# CMakeLists.txt:49 (include)
# Caffe Configuration
# 読み込むファイルを cudnn.hから cudnn_version.hに変更する
# file(READ ${CUDNN_INCLUDE}/cudnn.h CUDNN_VERSION_FILE_CONTENTS)
sed -i -e "s/cudnn.h/cudnn_version.h/g" ../cmake/Cuda.cmake
cat /usr/include/cudnn_version.h | grep CUDNN
# #ifndef CUDNN_VERSION_H_
# #define CUDNN_VERSION_H_
# #define CUDNN_MAJOR 8
# #define CUDNN_MINOR 0
# #define CUDNN_PATCHLEVEL 0
# #define CUDNN_VERSION (CUDNN_MAJOR * 1000 + CUDNN_MINOR * 100 + CUDNN_PATCHLEVEL)
# #endif /* CUDNN_VERSION_H */
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を動かしてキモイ絵を生成する
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)
2019 FREE WING,Y.Sakamoto
Powered by 猫屋敷工房 & HTML Generator
http://www.neko.ne.jp/~freewing/raspberry_pi/nvidia_jetson_nano_build_nvcaffe_google_deep_dream/