본문 바로가기
ROS

Nvidia Jetson - YOLOv5 설치 및 실행 방법

by rainbow-chaser 2024. 8. 10.

Nvidia Jetson에 PyTorch, YOLOv5 설치 및 USB 카메라 영상 객체 분류

 Jetson YOLOv5를 설치하고 영상 이미지의 객체를 실시간으로 분류해보고자 한다.
이를 위해 PyTorchTorchvision, YOLOv5를 설치 및 실행하는 방법을 알아보자!
 
 + 필자의 환경은 다음과 같다. (달라도 상관없다)
Hardware : Jetson AGX Xavier, oCam-5CRO-U (USB 카메라)
Software : Ubuntu 20.04 (Jetpack 5.1.3), Ros noetic, python 3.8.10, cuda 11.4
 

1. Jetpack 버전 확인

 Jetsonubuntu를 설치할 때 Jetpack을 이용해 설치했을 것이다. 다음 명령어를 입력해  Jetpack의 버전을 확인해주어야 한다. 이어질 과정에서 필요하다.

sudo apt-cache show nvidia-jetpack

 

2. python 버전 확인

python3 --version

위 명령어를 입력하면 python 버전을 확인할 수 있다.
 
 필자는 Jetson에 ubuntu를 설치할 때 Jetpack 5를 이용해 설치했으며, Jetpack 5에서 사용 가능한 PyTorchpython 3.8 버전을 사용한다.(Jetpack 4는 python 3.6, Jetpack 6는 python 3.10 이 필요하다) 위 명령어를 통해 확인했을 때 호환되지 않는 버전의 python이라면 Anaconda 가상환경 상에서 진행하는 것을 권한다.
 

3. PyTorch 설치

YOLO를 통해 이미지상의 객체를 분류할 때, Jetsongpu를 사용하기 위해 PyTorch가 필요하다.
Jetpack 버전에 따라 호환되는 PyTorch 버전이 다르므로, 자신의 Jetpack 버전에 맞는 PyTorch 버전을 아래 페이지에서 선택해야 한다. (YOLOv5는 Pytorch 1.8 이상의 버전이 필요하다!)
 

PyTorch for Jetson

Below are pre-built PyTorch pip wheel installers for Jetson Nano, TX1/TX2, Xavier, and Orin with JetPack 4.2 and newer. Download one of the PyTorch binaries from below for your version of JetPack, and see the installation instructions to run on your Jetson

forums.developer.nvidia.com

 
필자의 경우 Jetpack 5 이므로 PyTorch 1.12.0을 설치할 것이다.
Pytorch 다운로드는 위 링크에서 해당 whl 파일명을 클릭해서 다운로드 받거나 (Downloads 디렉터리에 저장됨),  아니면 위 링크에서 해당 파일명을 우클릭해서 주소를 복사하고 밑의 wget 명령어를 이용해 다운로드해도 된다.

wget https://developer.download.nvidia.com/compute/redist/jp/v50/pytorch/torch-1.12.0a0+2c916ef.nv22.3-cp38-cp38-linux_aarch64.whl #pytorch 다운로드, 위 링크에서 확인한 whl파일명을 우클릭하고 링크주소를 복사-붙여넣기하면 된다.
sudo apt-get install python3-pip libopenblas-base libopenmpi-dev libomp-dev
pip3 install 'Cython<3' numpy
sudo pip3 install torch-1.12.0a0+2c916ef.nv22.3-cp38-cp38-linux_aarch64.whl #pytorch 설치, 1번 줄에서 다운로드한 파일명을 입력한다.

 
위 명령어를 통해 PyTorch를 설치할 수 있다.

4. TorchVision 설치

 3번 과정에서 설치한 Torch 버전에 호환되는 Torchvision을 설치해아한다. 아래 페이지를 통해 Torch 버전과 맞는 Torchvision 버전을 확인할 수 있다. 이에 따른 PyTorch - TorchVision 호환성을 밑의 표를 보고 확인하자
 

Previous PyTorch Versions

Installing previous versions of PyTorch

pytorch.org

 
Pytorch 와 TorchVision 호환성 정리표
PyTorch 1.8 - torchvision 0.9.0
PyTorch 1.9 - torchvision 0.10.0
PyTorch 1.10 - torchvision 0.11.1
PyTorch 1.11 - torchvision 0.12.0
PyTorch 1.12 - torchvision 0.13.0
PyTorch 1.13 - torchvision 0.13.0
PyTorch 1.14 - torchvision 0.14.1
PyTorch 2.0 - torchvision 0.15.1
PyTorch 2.1 - torchvision 0.16.1
PyTorch 2.2 - torchvision 0.17.1
PyTorch 2.3 - torchvision 0.18.0

 필자의 경우 torchvision 0.13.0 버전을 설치해야 한다. 이때 git을 통해 설치한다.

sudo apt-get install libjpeg-dev zlib1g-dev libpython3-dev libopenblas-dev libavcodec-dev libavformat-dev libswscale-dev
git clone -b release/X.X https://github.com/pytorch/vision torchvision #X.X는 자신의 torchvision 버전을 뒷자리를 제외하고 입력하면 된다. ex) 0.13
cd torchvision
export BUILD_VERSION=X.X.X  # X.X.X는 자신의 torchvision 버전을 입력하면 된다 ex) 0.13.0
sudo python3 setup.py install #설치

 
 위의 명령어를 통해 설치할 수 있다.

 + gpu를 사용하기 위해선 CUDA, cuDNN 또한 필요한데, 이는 Jetpack을 설치하는 과정에서 자동으로 설치되므로 따로 설치할 필요는 없다. 그러나 만약 Jetpack을 설치할 때 cuda 설치 옵션을 꺼두었다면 따로 설치해야 하므로 이를 참고하도록 하자.
다음 명령어로 Torch가 정상적으로 설치되었으며 cuda를 이용해 gpu를 사용할 수 있는지 확인할 수 있다. 

python3 -c "import torch; print(torch.__version__)" #설치한 PyTorch 버전이 출력될 것이다.
python3 -c "import torch; print(torch.cuda.is_available())" #True가 출력되어야 한다.

5. YOLOv5 설치

 YOLOgit을 통해 설치할 수 있다.

git clone https://github.com/ultralytics/yolov5
cd yolov5
pip install -r requirements.txt

 위의 간단한 설치 과정을 거치면 비로소 YOLO를 사용할 수 있다.

6. YOLOv5 실행

python3 detect.py --weights yolov5m.pt --device 0 --source 0

 필자는 webcam (usb 카메라) 영상을 이용할 것이기 때문에 --source 0으로, gpu를 사용할 것이기 때문에 --device 0으로 설정했다. 파라미터에 대한 설명은 detect.py 안에 주석으로 작성되어 있다.
아래의 성능 지표를 참고하여 --weights 모델명.pt 를 설정하면 된다. 

YOLOv5 모델 성능 지표, 출처 : https://github.com/ultralytics/yolov5

 

7. 결과

YOLOv5m 실행 화면

 
실시간으로 카메라 영상의 객체를 분류하는 것을 확인할 수 있다!