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

2019/05/06

【ビルド版】NVIDIA Jetson Nanoで NVIDIA版 Caffe NVCaffeを GPUパワーで動かしてキモイ絵をモリモリ量産 【ビルド版】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の便利スクリプト
【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をビルドしてインストールする方法、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
【ビルド版】Raspberry Piで DeepDreamを動かしてキモイ絵をモリモリ量産 Caffe Deep Learning Framework

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

2018/08/04
【インストール版】Raspberry Piで DeepDreamを動かしてキモイ絵をモリモリ量産 Caffe Deep Learning
【インストール版】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+ CPUAtlas180秒2018/8のバージョン Caffe
Raspberry Pi 3B+ CPUAtlas160秒Jetsonと同じ最新バージョン Caffe
Raspberry Pi 3B+ CPUOpenBLAS
1 core
180秒Jetsonと同じ最新バージョン Caffe
Raspberry Pi 3B+ CPUOpenBLAS
4 core
ErrSegmentation fault
NVIDIA CPUAtlas85秒
NVIDIA CPUOpenBLAS
1 core
35秒
NVIDIA CPUOpenBLAS
2 core
25秒
NVIDIA CPUOpenBLAS
4 core
22秒
NVIDIA GPU6秒
NVIDIA GPU7秒NVIDIA版 Caffe


● NVIDIA Jetson Nanoで BVLC Caffe Deep Learning Frameworkをビルドする


2019/05/06
【ビルド版】NVIDIA Jetson Nanoで Caffe DeepDreamを GPUパワーで動かしてキモイ絵をモリモリ量産
【ビルド版】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を動かしてキモイ絵を量産する方法
NVIDIA Jetson Nanoで Google DeepDream NVCaffeを動かしてキモイ絵を量産する方法


NVIDIA Jetson Nanoで Google DeepDream NVCaffeを動かしてキモイ絵を量産する方法


NVIDIA Jetson Nanoで Google DeepDream NVCaffeを動かしてキモイ絵を量産する方法


NVIDIA Jetson Nanoで Google DeepDream NVCaffeを動かしてキモイ絵を量産する方法


NVIDIA Jetson Nanoで Google DeepDream NVCaffeを動かしてキモイ絵を量産する方法


NVIDIA Jetson Nanoで Google DeepDream NVCaffeを動かしてキモイ絵を量産する方法


NVIDIA Jetson Nanoで Google DeepDream NVCaffeを動かしてキモイ絵を量産する方法


NVIDIA Jetson Nanoで Google DeepDream NVCaffeを動かしてキモイ絵を量産する方法


NVIDIA Jetson Nanoで Google DeepDream NVCaffeを動かしてキモイ絵を量産する方法


NVIDIA Jetson Nanoで Google DeepDream NVCaffeを動かしてキモイ絵を量産する方法


NVIDIA Jetson Nanoで Google DeepDream NVCaffeを動かしてキモイ絵を量産する方法


NVIDIA Jetson Nanoで Google DeepDream NVCaffeを動かしてキモイ絵を量産する方法


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で OpenPoseをビルドする方法、動画から人体の骨格検出

  NVIDIA Jetson Nanoの CUDAパワーで OpenPoseを使って動画から人体の骨格検出

2020/06/13
【2020年版】NVIDIA Jetson Nano対応の OpenPoseをビルドする手順
【2020年版】NVIDIA Jetson Nano対応の OpenPoseをビルドする手順

  NVIDIA Jetson Nano対応の OpenPoseをビルドする手順

2020/06/13
【2020年版】NVIDIA Jetson用に最新の CMake 3.17.3をビルドしてインストールする方法
【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
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で DeepDreamを動かしてキモイ絵をモリモリ量産 Caffe Deep Learning
【インストール版】Raspberry Piで DeepDreamを動かしてキモイ絵をモリモリ量産 Caffe Deep Learning

  ラズパイで 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) 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/