Jetson Nano에서 YOLOv5 사용 전 준비할 것들
Jetson Nano에 JetPack 4.6 + 필수 SW 설치
OpenCV CUDA 가속 활성화로 젯슨 나노 100% 활용하기(간단)
Jetson Nano에서 YOLOv5 실행하기(0.13s, 7.7fps)
드디어. YOLOv5.
(2021. 11. 01. 최초 작성)
YOLOv5를 위해 JetPack 4.6, OpenCV 4.5.4 with CUDA, PyTorch 1.8, torchvision 0.9.0을 설치하는 고생을 해왔습니다. 이제 드디어 YOLOv5를 설치할 차례입니다.
git clone https://github.com/ultralytics/yolov5
cd yolov5
# yolov5s.pt weight 다운로드
wget https://github.com/ultralytics/yolov5/releases/download/v6.0/yolov5s.pt
위의 링크를 통해 원문 github를 확인하실 수 있으며, Jetson Nano에서는 터미널에 git clone 명령어로 간단히 YOLOv5를 가져올 수 있습니다.
# 다음 내용 requirements.txt에서 제거
numpy>=1.18.5
opencv-python>=4.1.2
torch>=1.7.0
torchvision>=0.8.1
이후, 폴더 내에 존재하는 requirements.txt에서 이전 포스팅에서 이미 설치한 항목을 지워줍니다.
python3 -m pip install --upgrade pip
python3 -m pip install -r requirements.txt
pip 업그레이드 후 requirements.txt를 설치해줍니다.
Inference
#clone한 repository 내부에 존재하는 image에 대한 inference 수행하기
python3 detect.py --source ./data/images
# 연결된 webcam을 통해 Inference 수행하기
python3 detect.py --source 0
Done!
집에 Jetson Nano를 가져와서 늦은 밤까지 테스트 결과 다행히도 잘 되는 것을 확인할 수 있었습니다.
다수의 케이스에서 Jetson Nano + YOLOv5의 Inference time이 280ms 전후로 나타나고 있습니다. 어떤 경우에는 더 낮거나 더 높은데, 수율 문제가 의심됩니다만 그것보다는 환경을 어떻게 세팅했느냐의 차이에서 Inference time이 바뀌는 것으로 보입니다. 여기에서는 OpenCV with CUDA를 따로 build해서인지 130ms의 상대적으로 준수한 결과를 얻을 수 있었습니다. 그러나 여전히 실제로 사용하기에는 부족한 성능입니다. 15fps(60ms~)는 나와야 합니다.
Further
일단 ML 실행을 위한 가장 큰 난관이었던 Environment에 대한 문제가 해결되었습니다. 앞으로 해상도를 줄이거나, class를 줄이는 등의 여러 가지 최적화 방법을 통해 fps를 올릴 수 있을 것으로 보입니다. 또한, 기존 GPU Inference 뿐만 아니라, TensorRT를 활용해 성능을 더 올리는 방법이 있는 듯 합니다. 앞으로는 Custom Data를 Train하고 TensorRT를 활용한 Object Detection을 테스트해볼 예정입니다.
긴 글 읽어주셔서 감사합니다. ❤️와 광고 클릭으로 고마움을 간단히 표현할 수 있습니다.
개발환경 | 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 혹은 오른쪽 아래 채팅을 통해 문의