[Jetson] Jetson Nano๋ฅผ ์ด์ฉํ Yolov5 ํ์ฉ๊ธฐ (2) - CUDA BUILD
์ด์ ํฌ์คํ
์ ์ด์ด ์งํํ๋๋ก ํ๊ฒ ์ต๋๋ค.
์ด ๋ถ๋ถ์ 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๊ฐ ๋ฐ์ํ์๋๋ฐ..

-
์์ ์๋ฌ๋ฅผ ํด๊ฒฐํ๊ณ ์ ๋ค์ ์ฌ์ดํธ๋ฅผ ์ฐธ๊ณ ํ์ฌ nvidia-l4t-bootloader, nvidia-l4t-xusb-firmware, nvidia-l4t-initrd๋ฅผ ์ญ์ ํด์ฃผ์์๋๋ฐ, ์ด๋ฌํ ํ๋์ด jetpack unknown์ ๊ฒฐ๊ณผ๋ฅผ ์ด๋ํ ๊ฒ ๊ฐ๋ค.
-
์ผ๋จ opencv build๋ฅผ ๊ทธ๋๋ก ์งํํ์๊ณ , ์ดํ yolov5์ requirements๋ฅผ ์ค์นํด์ค ๋ค ์๋์ฌ๋ถ๋ฅผ ํ์ธํ ์์ !
-
์ฐธ๊ณ ์ฌ์ดํธ
- ๋ณธ ๊ธ์ ํด๊ฒฐ ๋ฐฉ๋ฒ 3๋ฒ ์ด์ฉ.
-
๊ฒฐ๊ณผ๋ก ์ ์ผ๋ก ์ผ๋จ ์ ์ค์น๋๊ณ ์๋์ ํ๋ค??! (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์ผ๋ก ๊ตฌ์ฑ ํ๊ฒฝ๊ณผ ๊ฐ ๋ชจ๋์ด ์ ์ค์น๋์๋์ง ํ์ธํด์ฃผ๋ฉด ๋๋ค.

์ด๋ฐ ๋๋์ผ๋ก!
๊ธ์ ๋ง๋ฌด๋ฆฌํ๋ฉฐ,,
์ฌ๊ธฐ๊น์ง ๋ฐ๋ผ์ค๋ฉด yolov5๋ฅผ ์ค์นํ๊ธฐ ์ํ ํ๊ฒฝ ์ค์ ์ด ์๋ฃ๋ฉ๋๋ค.
๋ค์ ํฌ์คํ ์์๋ ๋ณธ๊ฒฉ์ ์ธ yolov5 ์ค์น์ ํ๋ก์ ํธ ์ค ๋ฐ์ํ๋ ์ค๋ฅ๋ค์ ๋ํด ์ค๋ช ํ๊ณ ํด๊ฒฐ ๋ฐฉ๋ฒ๋ค์ ์ ์ํ๋๋ก ํ๊ฒ ์ต๋๋ค.
PS. ์ถ๊ฐ ๋ฌธ์์ฌํญ ๋ฐ ์ง๋ฌธ์ ํ์ํฉ๋๋ค. ๊ทธ๋ฅผ ํตํด ์ ๋ ๋ ์ฑ์ฅํ ์ ์์ํ ๋๊น์. ๊ธด ๊ธ ์ฝ์ด์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค.
