Jetson Nano에서 YOLOv5 사용 전 준비할 것들
Jetson Nano에 JetPack 4.6 + 필수 SW 설치
OpenCV CUDA 가속 활성화로 젯슨 나노 100% 활용하기(간단)
Jetson Nano에서 YOLOv5 실행하기(0.13s, 7.7fps)
서론
이전 포스팅에서 YOLOv5를 설치하기 위한 사전 준비사항을 어느정도 안내드렸습니다. 하드웨어적인 준비가 완료되었으니, 이제 많은 분들이 헤매는 SW 설치에 대해 간단히 안내드리겠습니다. 여기에서는 JetPack 4.6, tigerVNC, jetson-stats 설치에 관한 내용을 다루고 있습니다. 다음 포스팅에서 OpenCV와 PyTorch, torchvision에 관련된 내용을 다뤄보도록 하겠습니다.
(2021. 11. 1. 최초 작성, 기술 문서 특성상 내용에 변동이 있을 수 있습니다.)
(2021. 11. 9. 내용 수정)
JetPack 4.6
Jetson Nano를 구입하셨다면, 가장 먼저 JetPack을 설치해야 합니다. JetPack은 Ubuntu Desktop(18.04.5)에 CUDA Toolkit, OpenCV, TensorRT 등의 드라이버와 ML 관련 Demonstration을 위한 패키지가 포함되어 있습니다. Jetson Nano 전용 Linux라 생각하시면 좋습니다.
위의 링크를 통해 JetPack을 다운로드 받을 수 있습니다. 이후 BalenaEtcher로 microSD에 다운로드받으신 JetPack 4.6 이미지를 플래싱한 후 microSD카드를 Jetson Nano에 연결해서 이름과 password를 설정해줍니다. 이 과정을 거치지 않으면 이후 ssh나 여타 기능 사용이 불가능해지니 사용자를 꼭 등록해야합니다. (플래싱에 약 30-40분 소요, microSD 리더와 microSD 성능에 따라 차이가 있을 수 있음)
tigerVNC
Jetson Nano에 microSD를 연결해 이름과 password를 지정했다면 SSH를 통해 터미널을 원격으로 사용할 수 있습니다.(Jetson Nano에 장착된 micro 5pin 단자를 Host와 직접 연결해 터미널을 사용하는 Headless 모드도 사용할 수 있으나, 이 부분은 추후에 다루도록 하겠습니다.) 그러나 Jetson Nano에서 수행할 Object Detection과 같은 작업은 결국 화면에 Overlay된 Boundary Box를 눈으로 볼 수 있어야 합니다. 따라서 우리는 별도의 스트리밍 서버를 돌리는 대신, VNC를 통해 원격으로 Jetson Nano에 접속해보겠습니다.
# tigerVNC를 설치합니다.
sudo apt-get install tigervnc-standalone-server tigervnc-xorg-extension
# VNC에 연결할 때 사용할 Password를 설정합니다.
vncpasswd
#nano 에디터를 설치합니다. 이미 있다면 생략해도 좋습니다.
sudo apt-get install nano
# ~/.vnc/xstartup 파일을 생성하거나 엽니다.
sudo nano ~/.vnc/xstartup
# ~/.vnc/xstartup 파일에 아래 내용을 붙여넣습니다.
#!/bin/sh
# Start Gnome 3 Desktop
[ -x /etc/vnc/xstartup ] && exec /etc/vnc/xstartup
[ -r $HOME/.Xresources ] && xrdb $HOME/.Xresources
vncconfig -iconic &
dbus-launch --exit-with-session gnome-session &
# Ctrl + X , [y], [Enter] 를 순차적으로 입력해 저장 후 종료합니다.
# VNC 서버를 실행합니다.
vncserver -localhost no
# 현재 열린 VNC 서버를 확인합니다.
#:1로 표시되는 경우 vnc://(Jetson Nano ip):5901로 접근가능합니다.
vncserver -list
VNC 설치는 Tistory z-wony님의 포스팅 Ubuntu 18.04, 20.04 에서 VNC Server 설치하기 로부터 많은 도움을 받았습니다. 유용하셨다면 한 번씩 들러 감사의 댓글 부탁드립니다.
jetson-stats
jetson-stats는 Jetson Nano의 종합적인 Stat을 기존의 수많은 터미널 명령어로 확인해야 했던 것들을 TUI(Text User Interface) 형태로 편리하게 이용이 가능합니다.
(2021. 11. 9. tirano님의 의견에 따라 jetson stats → jetson-stats로 변경)
sudo apt-get update
sudo apt-get upgrade
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 공간 설정이 가능합니다.
gdm3 제거 및 lightdm 설치
Jetson Nano는 lightdm 환경에서 YOLOv5를 실행시키면 램 사용량이 3.9 / 4.1GB까지 치솟습니다. Swap도 200MB정도 차지합니다. 또한, 이후 OpenCV 빌드를 위해 Swap 공간까지 총 8.5GB+의 공간이 필요합니다. 이렇다보니 램 사용량을 최대한 줄일 필요가 있는데, desktop manager으로 lightdm을 사용함으로써 RAM 사용량을 손쉽게 줄일 수 있습니다. 기존의 gdm3 desktop manager를 제거하고 lightdm을 설치하겠습니다. 그 결과, idle 상태에서의 램 사용량을 1.4GB에서 0.7GB로 낮출 수 있습니다.
sudo apt-get install lightdm
sudo apt-get purge gdm3
마치며
이렇게 기본적인 세팅을 어느정도 마칠 수 있었습니다. 다음 포스팅에서는 본격적으로 YOLOv5를 설치하기 위해 OpenCV CUDA를 설치하고, PyTorch와 torchvision 설치로 YOLOv5를 실행할 수 있도록 해 보겠습니다.
긴 글 읽어주셔서 감사합니다. ❤️와 광고 클릭으로 고마움을 간단히 표현할 수 있습니다.
개발환경 | Mac OS 15.0 Monterey, Python 3.9, ESP-IDF v4.3, EasyEDA 6.4.24
개발환경(Jetson Nano) | JetPack 4.6[L4T 32.6.1], Python 3.6.9, PyTorch 1.8.0, torchvision 0.9.0, OpenCV 4.5.4 with CUDA
제품 개발 및 기타 문의 | dokixote@wklabs.io 혹은 오른쪽 아래 채팅을 통해 문의