8. Tiny Yolo V3 Inferencing menggunakan OpenCV DNN dengan CUDA Enable di Jetson Nano

Muhammad Yunus
3 min readFeb 3, 2021

--

OS L4T (Linux for Tegra) yang digunakan pada Jetson Nano sudah terinstall NVIDIA JetPack SDK, yang merupakan bundel software seperti TensorRT, cuDNN, CUDA Toolkit, VisionWorks, GStreamer, dan OpenCV. Namun sayangnya default OpenCV tersebut belum CUDA enable, artinya kita tidak dapat mengakses GPU (CUDA) untuk meng-accelerate proses inference OpenCV DNN misalnya. Sehingga kita akan coba build ulang OpenCV dengan CUDA dari source.

Install OpenCV CUDA Enable

  • Untuk menginstall OpenCV dengan CUDA enable, kita dapat gunakan script yang ada pada repository berikut,
  • Clone repository :
$ cd ~
$ mkdir Github
$ cd Github
$ git clone https://github.com/mdegans/nano_build_opencv.git
$ cd nano_build_opencv
  • Jalankan script build_opencv.sh ,
$ sudo ./build_opencv.sh

[CATATAN !] Proses build ini akan memakan banyak waktu (4–6 jam). Build script diatas akan menginstall OpenCV 4.4.0 secara default.

Test OpenCV with CUDA Enable

  • Untuk test OpenCV hasil Build, kita bisa gunakan repo berikut,
  • Clone repository,
$ cd ~/Github
$ git clone https://github.com/Muhammad-Yunus/Jetson-Nano-OpenCV-CUDA-Test
$ cd Jetson-Nano-OpenCV-CUDA-Test
  • Jalankan opencv-info.py untuk cek build information,
$ python3 opencv-info.py
  • Result,
  • Jalankan test-cuda.py untuk mecoba basic CUDA operation di OpenCV,
$ python3 test-cuda.py
  • Result,
  • Jalankan opencv-dnn-cuda.py untuk tes CUDA sebagai target dan backend OpenCV DNN (Tiny Yolo V3 Inferencing @coco dataset), berikut adalah image test pada folder images/ ,
  • Menggunakan CUDA sebagai backend dan target OpenCV DNN :
$ python3 opencv-dnn-cuda.py --backend ‘CUDA’ --target ‘CUDA’
  • Result (backend & target CUDA),
  • Menggunakan OpenCV CPU sebagai backend dan target OpenCV DNN (hanya pembanding):
$ python3 opencv-dnn-cuda.py --backend ‘OPENCV' --target ‘CPU’
  • Terlihat perbandingan inference time Tiny Yolo V3 antara OpenCV DNN dengan backend dan target CUDA vs CPU, dimana OpenCV DNN dengan CUDA menghasilkan waktu inference ~3x lebih cepat dari OpenCV DNN CPU.
  • Detection result pada folder outputs/,
detection result

Nah ditahap ini kita sudah berhasil menggunakan OpenCV dengan CUDA enable dan menggunakannya untuk inferencing OpenCV DNN model Tiny Yolo V3.

Sekian untuk tutorial kali ini, terimakasih.

--

--

Muhammad Yunus
Muhammad Yunus

Written by Muhammad Yunus

IoT Engineer, Software Developer & Machine Learning Enthusiast

No responses yet