파이썬/SBC(Single Board Computer)

Jetson Nano에서 Yolov5 구동하기

코샵 2022. 11. 14. 11:16
반응형

1. OS 설치

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

 

정상적으로 구동이 잘 되네요