반응형
1. OS 설치
- SD카드에 OS를 설치해줘야 한다.
- 필자의 경우 rufus-3.20를 통해 jetpack 4.5.1을 SD카드에 설치했다
- jetpack 파일은 https://developer.nvidia.com/embedded/downloads 여기에서 다운로드 하면된다
2. 필요한 모듈 설치 및 환경 설정
Swap 공간 설정
필자가 사용하는 나노보드의 메모리 용량은 2GB이다. 여러분은 4GB의 나노보드를 가지고 있을수도 있지만 yolo를 구동하기엔 4GB로도 여유롭지 못한 상황이다
# 일단 업데이트를 해줍시다
sudo apt-get update
sudo apt-get upgrade
# nano editor 설치. 다른 에디터를 사용하셔도 무방합니다 jetpack엔 기본적으로 vi가 설치되어있습니다
sudo apt-get install nano
# dphys-swapfile 설치
sudo apt-get install dphys-swapfile
# 아래 두 파일의 값을 동일하게 수정
# 이건 예시
# CONF_SWAPSIZE=4096
# CONF_SWAPFACTOR=2
# CONF_MAXSWAP=4096
# /sbin/dphys-swapfile 파일 수정
sudo nano /sbin/dphys-swapfile
# /etc/dphys-swapfile 파일 수정
sudo nano /sbin/dphys-swapfile
# 값을 수정한 후 Ctrl + X 를 눌러 저장, 엔터를 눌러 저장하고 닫기
OpenCV 설치
기본적으로 jetpack에 OpenCV 4.1.1 버전이 설치되어있는데 위 버전에서는 CUDA 사용이 제한되며 Yolov5는 OpenCV 4.1.2 이상을 필요로 하기 때문에 OpenCV 4.5.4 with CUDA를 설치할 것이다.
wget https://github.com/Qengineering/Install-OpenCV-Jetson-Nano/raw/main/OpenCV-4-5-4.sh
sudo chmod 755 ./OpenCV-4-5-4.sh
./OpenCV-4-5-4.sh
- 시간이 아주 오래걸릴것이다... 그냥 자리를 비우고 와도 될거 같지만 중간에 비밀번호를 요구한다 ( 설치되는데 1시간정도 걸렸던거 같다)
PyTorch 1.8 , torchvision 0.9 설치
# 파이토치
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 설치
pip3 install Cython
pip3 install numpy torch-1.8.0-cp36-cp36m-linux_aarch64.whl
# numpy 1.18.5 버전이 설치되었다면
# pip uninstall numpy 로 넘파이를 삭제한 후
# pip install numpy==1.18.4 버전을 다운
# 경험상 끝에 5버전이면 에러가 난다....
# 토치비젼
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
jetson-stats
jetson-stats는 cpu,gpu,ram 등 다양한 jetson nano 상태를 TUI(Text User Interface)형태로 보여줍니다
sudo -H pip install -U jetson-stats
# 설치 후 재부팅을 해야합니다
reboot
# jetson-stats 실행
jtop
lightdm
2GB인 필자의 보드의 idling 메모리 사용량은 1.4G 정도된다. 남은 메모리 용량이 0.6G인데 swap메모리로 yolo를 실행은 시킬 수 있지만 성능이 현저히 떨어진다 (가상메모리이기 때문)
lightdm을 사용하면 idle 메모리를 0.7GB로 낮출 수 있다.
sudo apt-get install lightdm
sudo apt-get purge gdm3
이제 jetson nano에서 yolo를 구동할 환경은 구축되었습니다.
3. Yolov5 실행
소스코드 & weights 파일 다운로드
git clone https://github.com/ultralytics/yolov5
cd yolov5
wget https://github.com/ultralytics/yolov5/releases/download/v6.0/yolov5s.pt
터미널에서 위 명령어를 사용하면 소스코드와 weights 파일을 다운로드 할 수 있다.
모듈 설치
yolov5 폴더 안에 requirements.txt 파일을 열고 아래의 모듈 부분을 주석처리 하거나 삭제한다
numpy>=1.18.5
opencv-python>=4.1.1
torch>=1.7.0 # see https://pytorch.org/get-started/locally/ (recommended)
torchvision>=0.8.1
requirements.txt 파일을 수정했다면 이제 필요한 모듈을 설치하겠습니다
pip install --upgrade pip
pip install -r requirements.txt
yolov5 실행
모듈 설치가 다 끝났으면 yolov5를 실행해보겠습니다
python3 detect.py --weights yolov5s.pt --source ./data/images
정상적으로 구동이 잘 되네요