[Jetson] Jetson Nano๋ฅผ ์ด์šฉํ•œ Yolov5 ํ™œ์šฉ๊ธฐ (2) - CUDA BUILD

โ€ขProjects/Jetson

์ด์ „ ํฌ์ŠคํŒ…์— ์ด์–ด ์ง„ํ–‰ํ•˜๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.
์ด ๋ถ€๋ถ„์€ NVIDIA์˜ JETSON NANO์—์„œ๋„ ๋™์ผํ•˜๊ฒŒ ์ž‘๋™ํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค!

2. Jetson Nano ๋‚ด์— CUDA Build ์ง„ํ–‰

์ด๋•Œ๋Š” ์ฐธ๊ณ  ์‚ฌ์ดํŠธ 3๋ฒˆ, 4๋ฒˆ์„ ๋ณด๋ฉด์„œ ์„ค์น˜ํ•ด์ฃผ๋ฉด ๋œ๋‹ค.

์ฐธ๊ณ ๋กœ, yahboom์€ nvidia์™€ ๋‹ฌ๋ฆฌ, jetpack ๋ฒ„์ „์ด 4.4.1๋กœ ๊ณ ์ •๋˜์–ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์—(23.01.09 ๊ธฐ์ค€) ๊ทธ๋Œ€๋กœ ๋”ฐ๋ผํ•˜๋‹ค๊ฐ€๋Š” ์ œ๋Œ€๋กœ ์ž‘๋™ํ•˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ์˜ ์ˆ˜๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜๋„ ์žˆ๋‹คโ€ฆ!!

opencv๋ฅผ buildํ•ด ์ค„ ๋•Œ ๋งž๋Š” ๋ฒ„์ „์„ ์ฐพ์•„์„œ ํ•ด์ฃผ๋Š”๊ฒŒ ์ค‘์š”.

(23.01.09 ์˜ค๋ฅ˜ ๋ฐœ๊ฒฌ) - jetpack unknown ๊ด€๋ จ

  • opencv๋ฅผ cuda์™€ ์—ฐ๊ฒฐํ•ด์ฃผ๊ธฐ ์œ„ํ•ด build๋ฅผ ํ•˜๊ฒŒ ๋˜๋Š”๋ฐ, ์ด ๊ณผ์ •์—์„œ jetpack์˜ ๋ฒ„์ „์ด unknown์œผ๋กœ ๋ฐ”๋€Œ์–ด๋ฒ„๋ฆฌ๋Š” ๋ฌธ์ œ ๋ฐœ์ƒ (jtop์„ ๋ช…๋ น์–ด๋กœ ์ž…๋ ฅํ•ด์ฃผ๋ฉด ์ ฏ์Šจ์„ ๊ตฌ์„ฑํ•˜๋Š” gpu, memory ๋“ฑ๋“ฑ ํ™•์ธ ๊ฐ„๋Šฅ)

  • ๊ฐœ์ธ์ ์ธ ํŒ๋‹จ์—๋Š” sudo apt-get upgrade ๊ณผ์ •์—์„œ ๋‹ค์Œ๊ณผ ๊ฐ™์€ error๊ฐ€ ๋ฐœ์ƒํ–ˆ์—ˆ๋Š”๋ฐ..

    Untitled

    • ์œ„์˜ ์—๋Ÿฌ๋ฅผ ํ•ด๊ฒฐํ•˜๊ณ ์ž ๋‹ค์Œ ์‚ฌ์ดํŠธ๋ฅผ ์ฐธ๊ณ ํ•˜์—ฌ nvidia-l4t-bootloader, nvidia-l4t-xusb-firmware, nvidia-l4t-initrd๋ฅผ ์‚ญ์ œํ•ด์ฃผ์—ˆ์—ˆ๋Š”๋ฐ, ์ด๋Ÿฌํ•œ ํ–‰๋™์ด jetpack unknown์˜ ๊ฒฐ๊ณผ๋ฅผ ์ดˆ๋ž˜ํ•œ ๊ฒƒ ๊ฐ™๋‹ค.

    • ์ผ๋‹จ opencv build๋ฅผ ๊ทธ๋Œ€๋กœ ์ง„ํ–‰ํ•˜์˜€๊ณ , ์ดํ›„ yolov5์˜ requirements๋ฅผ ์„ค์น˜ํ•ด์ค€ ๋’ค ์ž‘๋™์—ฌ๋ถ€๋ฅผ ํ™•์ธํ•  ์˜ˆ์ •!

    • ์ฐธ๊ณ  ์‚ฌ์ดํŠธ

      • ๋ณธ ๊ธ€์˜ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ• 3๋ฒˆ ์ด์šฉ.

      Ubuntu์—์„œ \ํ•˜์œ„ ํ”„๋กœ์„ธ์Šค / usr / bin / dpkg๊ฐ€ ์˜ค๋ฅ˜ ์ฝ”๋“œ (1)๋ฅผ ๋ฐ˜ํ™˜ ํ•จ\์„ ํ•ด๊ฒฐํ•˜๋Š” ๋ฐฉ๋ฒ•

    • ๊ฒฐ๊ณผ๋ก  ์ ์œผ๋กœ ์ผ๋‹จ ์ž˜ ์„ค์น˜๋˜๊ณ  ์ž‘๋™์€ ํ•œ๋‹ค??! (2023.01.11)

    • FPS ๋ฌธ์ œ๊ฐ€ ์žˆ๊ธฐ๋Š” ํ•œ๋ฐ ์ฐจ์ฐจ ํ•ด๊ฒฐํ•˜๋Š”๊ฑธ๋กœ

    • ์—ฌ๊ธฐ์„œ ๋ช…์‹œํ•ด๋†“์€ ๋ถ€๋ถ„์€ ๋‹ค์Œ๋ฒˆ ์•ผ๋ถ ๋งŒ๋“ค ๋•Œ ์ ์šฉํ•ด์„œ ํ•ด ๋ณผ ์˜ˆ์ •!!

์šฐ์„  ํ•„์ˆ˜ SW๋ฅผ ์„ค์น˜ํ•ด์ค˜์•ผ ํ•œ๋‹ค.

1. Jetson-stats

jetson-stats๋Š” Jetson Nano์˜ ์ข…ํ•ฉ์ ์ธ Stat์„ ๊ธฐ์กด์˜ ์ˆ˜๋งŽ์€ ํ„ฐ๋ฏธ๋„ ๋ช…๋ น์–ด๋กœ ํ™•์ธํ•ด์•ผ ํ–ˆ์œผ๋‚˜, TUI(Text User Interface) ํ˜•ํƒœ๋กœ ํŽธ๋ฆฌํ•˜๊ฒŒ ์ด์šฉ ๊ฐ€๋Šฅํ•จ.

$ sudo apt-get update
$ sudo apt-get upgrade # ์ด ์ค„์ด ์˜ค๋ฅ˜(23.01.09)๋ฅผ ์•ผ๊ธฐํ–ˆ๋˜ ๊ฒƒ์œผ๋กœ ๊ธฐ์–ต. ๋‹ค์Œ ์‹œ๋„๋•Œ๋Š” ์ด ์ค„ ์—†์ด ์ง„ํ–‰ํ•ด๋ณผ ์˜ˆ์ •(22.01.10)
$ sudo apt-get install python-pip
$ sudo -H pip install -U jetson-stats
$ sudo reboot

# jetson-stats ์‹คํ–‰
$ jtop

ํ„ฐ๋ฏธ๋„์— jtop ๋ช…๋ น์–ด๋ฅผ ์ž…๋ ฅํ•˜๋Š” ๊ฒƒ๋งŒ์œผ๋กœ CPU, GPU, RAM, Swap, Fan ๋“ฑ์˜ H/W์ •๋ณด์™€ CUDA, TensorRT, Jetpack ๋ฒ„์ „ ํ™•์ธ ๋ฐ Fan Speed, Swap ๊ณต๊ฐ„ ์„ค์ •์ด ๊ฐ€๋Šฅํ•˜๋‹ค.

2. gdm3 ์ œ๊ฑฐ ๋ฐ lightdm ์„ค์น˜

Jetson Nano๋Š” lightdm ํ™˜๊ฒฝ์—์„œ YOLOv5๋ฅผ ์‹คํ–‰์‹œํ‚ค๋ฉด ๋žจ ์‚ฌ์šฉ๋Ÿ‰์ด 3.9 / 4.1GB๊นŒ์ง€ ์น˜์†Ÿ๋Š”๋‹ค.

๋˜ํ•œ Swap๋„ 200MB์ •๋„ ์ฐจ์ง€. ๋˜ํ•œ ์ดํ›„ OpenCV ๋นŒ๋“œ๋ฅผ ์œ„ํ•ด Swap ๊ณต๊ฐ„๊นŒ์ง€ ์ด 8.5GB+์˜ ๊ณต๊ฐ„์ด ํ•„์š”!

๋”ฐ๋ผ์„œ ๋žจ ์‚ฌ์šฉ๋Ÿ‰์„ ์ตœ๋Œ€ํ•œ ์ค„์—ฌ์•ผํ•˜๋Š”๋ฐ, desktop manager์œผ๋กœ lightdm์„ ์‚ฌ์šฉํ•จ์œผ๋กœ์„œ RAM ์‚ฌ์šฉ๋Ÿ‰์„ ์†์‰ฝ๊ฒŒ ์ค„์ผ ์ˆ˜ ์žˆ์Œ.

$ sudo apt-get install lightdm
$ sudo apt-get purge gdm3

3. Swap ๊ณต๊ฐ„ ์„ค์ •ํ•˜๊ธฐ

๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋‚ด์šฉ์œผ๋กœ ์Šค์™‘ ํŒŒ์ผ ๋‚ด์˜ ๊ฐ’์„ ์—…๋ฐ์ดํŠธ.

๋ชจ๋“  ๊ฒƒ์ด ์™„๋ฃŒ๋˜์–ด ์žฌ๋ถ€ํŒ…๋œ ํ›„, ํ„ฐ๋ฏธ๋„์—์„œ free -m ๋ช…๋ น์–ด๋ฅผ ์ž…๋ ฅํ–ˆ์„ ๋•Œ, swap ๊ณต๊ฐ„์ด 6074์ •๋„๋กœ ๋‚˜์˜ค๋ฉด ์„ฑ๊ณต!


# ์—…๋ฐ์ดํŠธ ํ™•์ธ, ์ด์ „ ๋‹จ๊ณ„์—์„œ ํ–ˆ๋‹ค๋ฉด ๊ตณ์ด ํ•  ํ•„์š” ์—†์Œ
$ sudo apt-get update
$ sudo apt-get upgrade

# nano ์—๋””ํ„ฐ๋ฅผ ์„ค์น˜
$ sudo apt-get install nano

# dphys-swapfile์„ ์„ค์น˜
$ sudo apt-get install dphys-swapfile

## ๋‘ Swap ํŒŒ์ผ์˜ ๊ฐ’์ด ๋‹ค์Œ๊ณผ ๊ฐ™๋„๋ก ๊ฐ’์„ ์ถ”๊ฐ€ํ•˜๊ฑฐ๋‚˜, ํŒŒ์ผ ๋‚ด ์ฃผ์„ ํ•ด์ œ
# CONF_SWAPSIZE=4096
# CONF_SWAPFACTOR=2
# CONF_MAXSWAP=4096

# /sbin/dphys-swapfile๋ฅผ ์—ฝ๋‹ˆ๋‹ค.
$ sudo nano /sbin/dphys-swapfile
 
# ๊ฐ’์„ ์ˆ˜์ •ํ•œ ํ›„ [Ctrl] + [X], [y], [Enter]๋ฅผ ๋ˆŒ๋Ÿฌ ์ €์žฅํ•˜๊ณ  ๋‹ซ์Šต๋‹ˆ๋‹ค
 
 
# /etc/dphys-swapfile๋ฅผ ํŽธ์ง‘ํ•ฉ๋‹ˆ๋‹ค.
sudo nano /etc/dphys-swapfile
 
# ๊ฐ’์„ ์ˆ˜์ •ํ•œ ํ›„ [Ctrl] + [X], [y], [Enter]๋ฅผ ๋ˆŒ๋Ÿฌ ์ €์žฅํ•˜๊ณ  ๋‹ซ์Šต๋‹ˆ๋‹ค

# Jetson Nano ์žฌ๋ถ€ํŒ…
sudo reboot

4. OpenCV 4.5.0 with Cuda

# check your memory first
$ free -m
# you need at least a total of 6.5 GB!
# if not, enlarge your swap space as explained in the guide
$ wget https://github.com/Qengineering/Install-OpenCV-Jetson-Nano/raw/main/OpenCV-4-5-0.sh
$ sudo chmod 755 ./OpenCV-4-5-0.sh
$ ./OpenCV-4-5-0.sh

์ด๋•Œ ํŽธ๋ฆฌ์„ฑ์„ ์œ„ํ•ด์„œ ๋งˆ์ง€๋ง‰ ์ค„ ๋ช…๋ น์–ด๋ฅผ sudo๋กœ ์ž…๋ ฅํ•˜๋ฉด, ์ด๊ฒƒ์ €๊ฒƒ ๋‹ค์‹œ ๊น”์•„์ค˜์•ผํ•˜๋ฏ€๋กœ,โ€ฆ( ์ด๋ž˜์„œ ๋‹ค์‹œ ๋ฐ€์—ˆ์Œ)

๊ทธ๋ƒฅ ์ € ์ฝ”๋“œ ์จ์ ธ ์žˆ๋Š” ๊ทธ๋Œ€๋กœ ์ง„ํ–‰ํ•ด์ฃผ์„ธ์šค

์•ฝ 2์‹œ๊ฐ„ 30๋ถ„ ์ •๋„ ์†Œ์š”๋˜๋Š”๋ฐ ๊ทธ๊ฒƒ๋ณด๋‹ค ๋” ์˜ค๋ž˜ ๊ฑธ๋ฆด ์ˆ˜๋„ ์žˆ์Œ

์ธ๋‚ด์‹ฌ์„ ๊ฐ–๊ณ  ๊ธฐ๋‹ค๋ฆฌ๋ฉด์„œ ๋‹ค๋ฅธ๊ฑฐ ํ•˜๋ฉด์„œ ๋ณด๋ฉด ๋˜๋Š”๋ฐ, ๊ผญ ์ž˜ ๋˜๊ณ  ์žˆ๋Š”์ง€ ํ™•์ธํ•ด์ฃผ๊ธฐ!

5. PyTorch 1.8 + torchvision v0.9.0

ํฐ ์‚ฐ๋“ค์€ ๊ฑฐ์˜ ๋‹ค ๋„˜์–ด์™”๋‹ค. ์—ฌ๊ธฐ๊นŒ์ง€ ์„ฑ๊ณตํ–ˆ์œผ๋ฉด 90ํ”„๋กœ ์˜จ๊ฑฐ๋‹ค.

์ด์ œ pytorch์™€ torchvision์„ ์„ค์น˜ํ•˜๊ณ  YOLOv5์— ํ•„์š”ํ•œ equirements๋งŒ ์„ค์น˜ํ•˜๋ฉด ๋ชจ๋“  ๊ฒŒ ๋‹ค ๋๋‚œ๋‹ค.

# PyTorch 1.8.0 ๋‹ค์šด๋กœ๋“œ ๋ฐ dependencies ์„ค์น˜
wget https://nvidia.box.com/shared/static/p57jwntv436lfrd78inwl7iml6p13fzh.whl -O torch-1.8.0-cp36-cp36m-linux_aarch64.whl
sudo apt-get install python3-pip libopenblas-base libopenmpi-dev 
 
# Cython, numpy, pytorch ์„ค์น˜
pip3 install Cython
pip3 install numpy torch-1.8.0-cp36-cp36m-linux_aarch64.whl
 
# torchvision dependencies ์„ค์น˜
sudo apt-get install libjpeg-dev zlib1g-dev libpython3-dev libavcodec-dev libavformat-dev libswscale-dev
git clone --branch v0.9.0 https://github.com/pytorch/vision torchvision
cd torchvision
export BUILD_VERSION=0.9.0
python3 setup.py install --user
cd ../  # attempting to load torchvision from build dir will result in import error

์„ค์น˜๊ฐ€ ๋๋‚˜๋ฉด

jtop์œผ๋กœ ๊ตฌ์„ฑ ํ™˜๊ฒฝ๊ณผ ๊ฐ ๋ชจ๋“ˆ์ด ์ž˜ ์„ค์น˜๋˜์—ˆ๋Š”์ง€ ํ™•์ธํ•ด์ฃผ๋ฉด ๋œ๋‹ค.

Untitled 1

์ด๋Ÿฐ ๋А๋‚Œ์œผ๋กœ!

๊ธ€์„ ๋งˆ๋ฌด๋ฆฌํ•˜๋ฉฐ,,

์—ฌ๊ธฐ๊นŒ์ง€ ๋”ฐ๋ผ์˜ค๋ฉด yolov5๋ฅผ ์„ค์น˜ํ•˜๊ธฐ ์œ„ํ•œ ํ™˜๊ฒฝ ์„ค์ •์ด ์™„๋ฃŒ๋ฉ๋‹ˆ๋‹ค.

๋‹ค์Œ ํฌ์ŠคํŒ…์—์„œ๋Š” ๋ณธ๊ฒฉ์ ์ธ yolov5 ์„ค์น˜์™€ ํ”„๋กœ์ ํŠธ ์ค‘ ๋ฐœ์ƒํ–ˆ๋˜ ์˜ค๋ฅ˜๋“ค์— ๋Œ€ํ•ด ์„ค๋ช…ํ•˜๊ณ  ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•๋“ค์„ ์ œ์‹œํ•˜๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

PS. ์ถ”๊ฐ€ ๋ฌธ์˜์‚ฌํ•ญ ๋ฐ ์งˆ๋ฌธ์€ ํ™˜์˜ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ฅผ ํ†ตํ•ด ์ €๋„ ๋” ์„ฑ์žฅํ•  ์ˆ˜ ์žˆ์„ํ…Œ๋‹ˆ๊นŒ์š”. ๊ธด ๊ธ€ ์ฝ์–ด์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค.

Share