コンテンツへスキップ

OPENCV 4.2の DNN が NVIDIA Cuda に対応

OpenCV の4.2より、OpenCVのdnnが、NVIDIA のGPUに対応していたようです。
しかも、NVIDIAのJetson Nanoでも利用可能でした。

とても驚きのトピックでした。
早速、NVIDA Jetson Nanoに導入し、YOLO / Darknet の推論を動作させてみました。
少し、導入に癖があったので、導入時のメモを公開しておきます。

Led by dlib’s Davis King, and implemented by Yashas Samaga, OpenCV 4.2 now supports NVIDIA GPUs for inference using OpenCV’s dnn module, improving inference speed by up to 1549%!

Pythonから、NVIDIA GPUのCUDAを用いた、OpenCVのDNNを利用する際のコードはBackendとTargetを以下のようにCUDAに設定します。

net.setPreferableBackend(cv.dnn.DNN_BACKEND_CUDA)
net.setPreferableTarget(cv.dnn.DNN_TARGET_CUDA)

導入した環境

2020/08/20追記:
JetPack4.4とOPENCV4.4.0でインストールできました。

  • JetPack 4.3 (4.4では、OPENCVコンパイル時に、CuDNNがうまくコンパイルできず)
    Jetpack 4.3 Archive
  • OPENCV 4.3.0 (4.2.0でもインストール出来ました)
created by Rinker
NVIDIA
¥19,000 (2021/08/19 16:46:56時点 Amazon調べ-詳細)

導入方法

NVIDIA Jetson NanoのOpencvコンパイル用のスクリプトは、公式が公開したこともあり、各種エンハンスされ公開されています。
今回は、結構最近に公開されたとみられる、4.3.0向けのスクリプトを利用します。

Build OpenCV on Nvidia Jetson Nano

ポイントは、コンパイルオプションに以下を追加します。

  • WITH_CUDA
  • WITH_CUDNN

インストールスクリプト

コンパイルオプションを追加した、スクリプトを公開しておきます。

./Build_OpenCV.sh でインストールは完了します。
./Build_OpenCV.sh <version> で、指定したバージョンのOPENCVがインストール出来るようです。

実際にコンパイルした際の構成も公開しておきます。

NVIDIA CUDA: YES (ver 10.0, CUFFT CUBLAS FAST_MATH)
NVIDIA GPU arch: 53 62 72 -- NVIDIA PTX archs:
cuDNN: YES (ver 7.6.3)

-- General configuration for OpenCV 4.3.0 =====================================
--   Version control:               4.3.0
--
--   Extra modules:
--     Location (extra):            /tmp/build_opencv/opencv_contrib/modules
--     Version control (extra):     4.3.0
--
--   Platform:
--     Timestamp:                   2020-05-25T01:56:52Z
--     Host:                        Linux 4.9.140-tegra aarch64
--     CMake:                       3.10.2
--     CMake generator:             Unix Makefiles
--     CMake build tool:            /usr/bin/make
--     Configuration:               RELEASE
--
--   CPU/HW features:
--     Baseline:                    NEON FP16
--       required:                  NEON
--       disabled:                  VFPV3
--
--   C/C++:
--     Built as dynamic libs?:      YES
--     C++ standard:                11
--     C++ Compiler:                /usr/bin/c++  (ver 7.5.0)
--     C++ flags (Release):         -fsigned-char -W -Wall -Werror=return-type -Werror=non-virtual-dtor -Werror=address -Werror=sequence-point -Wformat -Werror=format-security -Wmissing-declarations -Wundef -Winit-self -Wpointer-arith -Wshadow -Wsign-promo -Wuninitialized -Winit-self -Wsuggest-override -Wno-delete-non-virtual-dtor -Wno-comment -Wimplicit-fallthrough=3 -Wno-strict-overflow -fdiagnostics-show-option -pthread -fomit-frame-pointer -ffunction-sections -fdata-sections    -fvisibility=hidden -fvisibility-inlines-hidden -O3 -DNDEBUG  -DNDEBUG
--     C++ flags (Debug):           -fsigned-char -W -Wall -Werror=return-type -Werror=non-virtual-dtor -Werror=address -Werror=sequence-point -Wformat -Werror=format-security -Wmissing-declarations -Wundef -Winit-self -Wpointer-arith -Wshadow -Wsign-promo -Wuninitialized -Winit-self -Wsuggest-override -Wno-delete-non-virtual-dtor -Wno-comment -Wimplicit-fallthrough=3 -Wno-strict-overflow -fdiagnostics-show-option -pthread -fomit-frame-pointer -ffunction-sections -fdata-sections    -fvisibility=hidden -fvisibility-inlines-hidden -g  -O0 -DDEBUG -D_DEBUG
--     C Compiler:                  /usr/bin/cc
--     C flags (Release):           -fsigned-char -W -Wall -Werror=return-type -Werror=address -Werror=sequence-point -Wformat -Werror=format-security -Wmissing-declarations -Wmissing-prototypes -Wstrict-prototypes -Wundef -Winit-self -Wpointer-arith -Wshadow -Wuninitialized -Winit-self -Wno-comment -Wimplicit-fallthrough=3 -Wno-strict-overflow -fdiagnostics-show-option -pthread -fomit-frame-pointer -ffunction-sections -fdata-sections    -fvisibility=hidden -O3 -DNDEBUG  -DNDEBUG
--     C flags (Debug):             -fsigned-char -W -Wall -Werror=return-type -Werror=address -Werror=sequence-point -Wformat -Werror=format-security -Wmissing-declarations -Wmissing-prototypes -Wstrict-prototypes -Wundef -Winit-self -Wpointer-arith -Wshadow -Wuninitialized -Winit-self -Wno-comment -Wimplicit-fallthrough=3 -Wno-strict-overflow -fdiagnostics-show-option -pthread -fomit-frame-pointer -ffunction-sections -fdata-sections    -fvisibility=hidden -g  -O0 -DDEBUG -D_DEBUG
--     Linker flags (Release):      -Wl,--gc-sections -Wl,--as-needed
--     Linker flags (Debug):        -Wl,--gc-sections -Wl,--as-needed
--     ccache:                      NO
--     Precompiled headers:         NO
--     Extra dependencies:          m pthread cudart_static -lpthread dl rt nppc nppial nppicc nppicom nppidei nppif nppig nppim nppist nppisu nppitc npps cublas cudnn cufft -L/usr/local/cuda/lib64 -L/usr/lib/aarch64-linux-gnu
--     3rdparty dependencies:
--
--   OpenCV modules:
--     To be built:                 alphamat aruco bgsegm bioinspired calib3d ccalib core cudaarithm cudabgsegm cudacodec cudafeatures2d cudafilters cudaimgproc cudalegacy cudaobjdetect cudaoptflow cudastereo cudawarping cudev datasets dnn dnn_objdetect dnn_superres dpm face features2d flann freetype fuzzy gapi hdf hfs highgui img_hash imgcodecs imgproc intensity_transform line_descriptor ml objdetect optflow phase_unwrapping photo plot python2 python3 quality rapid reg rgbd saliency shape stereo stitching structured_light superres surface_matching text tracking video videoio videostab xfeatures2d ximgproc xobjdetect xphoto
--     Disabled:                    world
--     Disabled by dependency:      -
--     Unavailable:                 cnn_3dobj cvv java js matlab ovis sfm ts viz
--     Applications:                apps
--     Documentation:               NO
--     Non-free algorithms:         YES
--
--   GUI:
--     GTK+:                        YES (ver 3.22.30)
--       GThread :                  YES (ver 2.56.4)
--       GtkGlExt:                  NO
--     OpenGL support:              NO
--     VTK support:                 NO
--
--   Media I/O:
--     ZLib:                        /usr/lib/aarch64-linux-gnu/libz.so (ver 1.2.11)
--     JPEG:                        /usr/lib/aarch64-linux-gnu/libjpeg.so (ver 80)
--     WEBP:                        build (ver encoder: 0x020f)
--     PNG:                         /usr/lib/aarch64-linux-gnu/libpng.so (ver 1.6.34)
--     TIFF:                        /usr/lib/aarch64-linux-gnu/libtiff.so (ver 42 / 4.0.9)
--     JPEG 2000:                   build Jasper (ver 1.900.1)
--     OpenEXR:                     build (ver 2.3.0)
--     HDR:                         YES
--     SUNRASTER:                   YES
--     PXM:                         YES
--     PFM:                         YES
--
--   Video I/O:
--     DC1394:                      YES (2.2.5)
--     FFMPEG:                      YES
--       avcodec:                   YES (57.107.100)
--       avformat:                  YES (57.83.100)
--       avutil:                    YES (55.78.100)
--       swscale:                   YES (4.8.100)
--       avresample:                YES (3.7.0)
--     GStreamer:                   YES (1.14.5)
--     v4l/v4l2:                    YES (linux/videodev2.h)
--
--   Parallel framework:            pthreads
--
--   Trace:                         YES (with Intel ITT)
--
--   Other third-party libraries:
--     Lapack:                      YES (/usr/lib/aarch64-linux-gnu/liblapack.so /usr/lib/aarch64-linux-gnu/libcblas.so /usr/lib/aarch64-linux-gnu/libatlas.so)
--     Eigen:                       YES (ver 3.3.4)
--     Custom HAL:                  YES (carotene (ver 0.0.1))
--     Protobuf:                    build (3.5.1)
--
--   NVIDIA CUDA:                   YES (ver 10.0, CUFFT CUBLAS FAST_MATH)
--     NVIDIA GPU arch:             53 62 72
--     NVIDIA PTX archs:
--
--   cuDNN:                         YES (ver 7.6.3)
--
--   OpenCL:                        YES (no extra features)
--     Include path:                /tmp/build_opencv/opencv/3rdparty/include/opencl/1.2
--     Link libraries:              Dynamic load
--
--   Python 2:
--     Interpreter:                 /usr/bin/python2.7 (ver 2.7.17)
--     Libraries:                   /usr/lib/aarch64-linux-gnu/libpython2.7.so (ver 2.7.17)
--     numpy:                       /usr/lib/python2.7/dist-packages/numpy/core/include (ver 1.13.3)
--     install path:                lib/python2.7/dist-packages/cv2/python-2.7
--
--   Python 3:
--     Interpreter:                 /usr/bin/python3 (ver 3.6.9)
--     Libraries:                   /usr/lib/aarch64-linux-gnu/libpython3.6m.so (ver 3.6.9)
--     numpy:                       /usr/local/lib/python3.6/dist-packages/numpy/core/include (ver 1.16.1)
--     install path:                lib/python3.6/dist-packages/cv2/python-3.6
--
--   Python (for build):            /usr/bin/python2.7
--
--   Java:
--     ant:                         NO
--     JNI:                         NO
--     Java wrappers:               NO
--     Java tests:                  NO
--
--   Install to:                    /usr/local
created by Rinker
NVIDIA
¥19,000 (2021/08/19 16:46:56時点 Amazon調べ-詳細)

参考サイト

2020年05月25日週 めざましじゃんけん 結果

フジテレビ めざましテレビ めざましじゃんけん の結果を保証したり、全ての結果が記載を保証するものではありません。

2020年05月25日週 のめざましじゃんけんの結果を公開します。


じゃんけん結果システムイメージ

Goo(グー) Choki(チョキ) Pa(パー)

めざましテレビ|めざましじゃんけんーフジテレビ

めざましじゃんけん結果
回次結果対戦相手
5月30日
(土曜日)
【2戦目】08時22分生じゃんけん⭐️木下康太郎 アナウンサー
【1戦目】07時38分大悟 さん
5月29日
(金曜日)
【4戦目】07時58分ノブ さん
【3戦目】07時35分関口メンディー さん
【2戦目】06時58分木内舞留 ちゃん
【1戦目】05時58分片瀬那奈 さん
5月28日
(木曜日)
【4戦目】07時58分堀田茜 さん
【3戦目】07時35分生じゃんけん!伊野尾慧 パーソナリティ
【2戦目】06時58分ヴァサイェガ渉 さん
【1戦目】05時58分田﨑さくら ちゃん
5月27日
(水曜日)
【4戦目】07時58分生じゃんけん⭐️酒主義久 アナウンサー
【3戦目】07時35分生じゃんけん⭐️永島優美 キャスター
【2戦目】06時58分黒木麗奈 ちゃん
【1戦目】05時58分生じゃんけん⭐️阿部華也子 キャスター
5月26日
(火曜日)
【4戦目】07時58分生じゃんけん⭐️生田竜聖 アナウンサー
【3戦目】07時35分土佐兄弟
【2戦目】06時58分豊島心桜 ちゃん
【1戦目】05時58分生じゃんけん⭐️永尾亜子 アナウンサー
5月25日
(月曜日)
【4戦目】07時58分生じゃんけん永島優美 キャスター
【3戦目】07時35分生じゃんけん阿部華也子 キャスター
【2戦目】06時58分岡本莉音 ちゃん
【1戦目】05時58分生じゃんけん井上清華 アナウンサー

2020年05月30日  めざましじゃんけん 結果

フジテレビ めざましテレビ めざましじゃんけん の結果を保証したり、全ての結果が記載を保証するものではありません。

2020年05月30日のめざましじゃんけんの結果をベストエフォートで公開します。


じゃんけん結果システムイメージ

Goo(グー) Choki(チョキ) Pa(パー)

めざましテレビ|めざましじゃんけんーフジテレビ

めざましじゃんけん結果
回次結果対戦相手
5月30日
(土曜日)
【2戦目】08時22分生じゃんけん⭐️木下康太郎 アナウンサー
【1戦目】07時38分大悟 さん

2020年05月29日  めざましじゃんけん 結果

フジテレビ めざましテレビ めざましじゃんけん の結果を保証したり、全ての結果が記載を保証するものではありません。

2020年05月29日のめざましじゃんけんの結果をベストエフォートで公開します。


じゃんけん結果システムイメージ

Goo(グー) Choki(チョキ) Pa(パー)

めざましテレビ|めざましじゃんけんーフジテレビ

めざましじゃんけん結果
回次結果対戦相手
5月29日
(金曜日)
【4戦目】07時58分ノブ さん
【3戦目】07時35分関口メンディー さん
【2戦目】06時58分木内舞留 ちゃん
【1戦目】05時58分片瀬那奈 さん

2020年05月28日  めざましじゃんけん 結果

フジテレビ めざましテレビ めざましじゃんけん の結果を保証したり、全ての結果が記載を保証するものではありません。

2020年05月28日のめざましじゃんけんの結果をベストエフォートで公開します。


じゃんけん結果システムイメージ

Goo(グー) Choki(チョキ) Pa(パー)

めざましテレビ|めざましじゃんけんーフジテレビ

めざましじゃんけん結果
回次結果対戦相手
5月28日
(木曜日)
【4戦目】07時58分堀田茜 さん
【3戦目】07時35分生じゃんけん!伊野尾慧 パーソナリティ
【2戦目】06時58分ヴァサイェガ渉 さん
【1戦目】05時58分田﨑さくら ちゃん

2020年05月27日  めざましじゃんけん 結果

フジテレビ めざましテレビ めざましじゃんけん の結果を保証したり、全ての結果が記載を保証するものではありません。

2020年05月27日のめざましじゃんけんの結果をベストエフォートで公開します。


じゃんけん結果システムイメージ

Goo(グー) Choki(チョキ) Pa(パー)

めざましテレビ|めざましじゃんけんーフジテレビ

めざましじゃんけん結果
回次結果対戦相手
5月27日
(水曜日)
【4戦目】07時58分生じゃんけん⭐️酒主義久 アナウンサー
【3戦目】07時35分生じゃんけん⭐️永島優美 キャスター
【2戦目】06時58分黒木麗奈 ちゃん
【1戦目】05時58分生じゃんけん⭐️阿部華也子 キャスター

2020年05月26日  めざましじゃんけん 結果

フジテレビ めざましテレビ めざましじゃんけん の結果を保証したり、全ての結果が記載を保証するものではありません。

2020年05月26日のめざましじゃんけんの結果をベストエフォートで公開します。


じゃんけん結果システムイメージ

Goo(グー) Choki(チョキ) Pa(パー)

めざましテレビ|めざましじゃんけんーフジテレビ

めざましじゃんけん結果
回次結果対戦相手
5月26日
(火曜日)
【4戦目】07時58分生じゃんけん⭐️生田竜聖 アナウンサー
【3戦目】07時35分土佐兄弟
【2戦目】06時58分豊島心桜 ちゃん
【1戦目】05時58分生じゃんけん⭐️永尾亜子 アナウンサー

2020年05月25日  めざましじゃんけん 結果

フジテレビ めざましテレビ めざましじゃんけん の結果を保証したり、全ての結果が記載を保証するものではありません。

2020年05月25日のめざましじゃんけんの結果をベストエフォートで公開します。


じゃんけん結果システムイメージ

Goo(グー) Choki(チョキ) Pa(パー)

めざましテレビ|めざましじゃんけんーフジテレビ

めざましじゃんけん結果
回次結果対戦相手
5月25日
(月曜日)
【4戦目】07時58分生じゃんけん永島優美 キャスター
【3戦目】07時35分生じゃんけん阿部華也子 キャスター
【2戦目】06時58分岡本莉音 ちゃん
【1戦目】05時58分生じゃんけん井上清華 アナウンサー

2020年05月23日  めざましじゃんけん 結果

フジテレビ めざましテレビ めざましじゃんけん の結果を保証したり、全ての結果が記載を保証するものではありません。

2020年05月23日のめざましじゃんけんの結果をベストエフォートで公開します。


じゃんけん結果システムイメージ

Goo(グー) Choki(チョキ) Pa(パー)

めざましテレビ|めざましじゃんけんーフジテレビ

めざましじゃんけん結果
回次結果対戦相手
5月23日
(土曜日)
【2戦目】08時22分生じゃんけん⭐️谷尻萌 キャスター
【1戦目】07時38分池田美優 さん

2020年05月18日週 めざましじゃんけん 結果

フジテレビ めざましテレビ めざましじゃんけん の結果を保証したり、全ての結果が記載を保証するものではありません。

2020年05月18日週 のめざましじゃんけんの結果を公開します。


じゃんけん結果システムイメージ

Goo(グー) Choki(チョキ) Pa(パー)

めざましテレビ|めざましじゃんけんーフジテレビ

めざましじゃんけん結果
回次結果対戦相手
5月23日
(土曜日)
【2戦目】08時22分生じゃんけん⭐️谷尻萌 キャスター
【1戦目】07時38分池田美優 さん
5月22日
(金曜日)
【4戦目】07時58分横山ルリカ リポーター
【3戦目】07時35分本田真凜 さん 本田望結 さん 本田紗来 さん
【2戦目】06時58分黒木麗奈 ちゃん
【1戦目】05時58分渡部建 さん
5月21日
(木曜日)
【4戦目】07時58分川島明 さん
【3戦目】07時35分生じゃんけん!伊野尾慧 パーソナリティ
【2戦目】06時58分作間龍斗 さん 井上瑞稀 さん
【1戦目】05時58分松川星 ちゃん
5月20日
(水曜日)
【4戦目】07時58分生じゃんけん⭐️酒主義久 アナウンサー
【3戦目】07時35分山村隆太 さん 阪井一生 さん
【2戦目】06時58分木下彩音 ちゃん
【1戦目】05時58分生じゃんけん⭐️永尾亜子 アナウンサー
5月19日
(火曜日)
【4戦目】07時58分生じゃんけん⭐️生田竜聖 アナウンサー
【3戦目】07時35分SHOCK EYE さん
【2戦目】06時58分愛来 ちゃん
【1戦目】05時58分生じゃんけん⭐️阿部華也子 キャスター
5月18日
(月曜日)
【4戦目】07時58分岡田健史 さん
【3戦目】07時35分ガチャピン
【2戦目】06時58分大幡しえり ちゃん
【1戦目】05時58分新内眞衣 さん