NVIDIA Jetson YOLOv5 Object-Detection Tutorial

Chan Kim·2023년 1월 11일
1
post-thumbnail

연구과제를 진행하면서 Jetson Xavier NX를 사용하고있다.
Jetson Nano랑 Xavier NX 둘 다 사용해서 개발해보니, Xavier는 정말... 하 ^^ NVIDIA 공식 홈페이지에서도 아직 해결하지 못한 버그들이 좀 있다고..!

1. 카메라 연동 확인

결과적으로 나는 USB 카메라를 사용했다.

연구과제 비용으로 CSI 카메라도 구매를 했는데 도대체가 인식을 못해서 왜 인식이 안되는지 몇시간 삽질하다 NVIDIA 측에서 2020년에 관련된 버그를 확인했다는 글을 확인했고, 해결되면 답을 주겠다고 했는데 추가적인 글이 달리진 않았다.

유튜브나 몇몇 블로그들 보면 Xavier NX로 CSI 카메라를 잘 사용하는 것 같은데,
일반적인 CSI 카메라가 아니라, 무슨 보드에 카메라 8개씩 달려있는 것들로 테스트하는 영상만 있다.

다른 블로그들에도 하드웨어 사진이 없다보니 내가 사용하는 카메라랑 일치하는지도 모르겠고..
내가 테스트로 사용해본 CSI 카메라는 IMX219Raspberry Pi Camera V2.1이다.

Jetson Nano에선 정상인식 하는거 확인했는데, Xavier NX에서만 이런다..
둘 다 인식조차 못하고, 여기다 더 이상 시간쓰는거 너무 아까워서 그냥 USB 카메라 썼다.

2. 아나콘다 Python 환경설정

ㅎ.. 뭐든 하기전에 필요한 프로젝트에 필요한 파이썬 버전부터 확인하고 시작하자..
이전에도 높은 버전으로 세팅 다 해뒀다가 더 낮은 버전의 파이썬 버전으로 진행했다가 싹 다 밀고 다시 세팅하느라 시간을 두배로 버렸는데, 두번째 실수를 경험했으니 더 이상 또 반복하면 나는 침팬치다 ^^; 우끼우끼

결론적으로는 이 블로그를 보고 따라할거라면 Python 3.8 버전을 설치하자.

→ 왜냐햐면, cpu말고 gpu로 테스트할 예정이기 때문, cpu는 너무 느리다..

아나콘다로 환경설정 하는건 이전에 작성해 둔 글 보고 진행!

3. YOLOv5 모델을 사용해서 Object-Detection 테스트

하... 진짜 여기서 환경설정 하다가 Xavier 부숴버릴뻔했다..
연구실 애들하고 머리 싸매면서 10시간은 넘게 걸린듯..

Xavier에선 일반적인 방법으로 Pytorch가 설치되지 않는다.
일반적으로 Pytorch를 설치하면 OpenCV 버전이 맞지 않아서 CUDA 활성화가 안되고,
어떻게든 Pytorch를 설치했더니 torchvision 버전이 맞지 않다고..
+ 이건 Xavier만의 문제가 아니라 리눅스 계열에서 간간히 발생하는 문제인 것 같다.

1) 문제 해결 방법

NVIDIA에서 Jetson과 Pytorch를 사용하려면 파이토치 핍 휠 이라는걸로 설치해야 한다고 한다.

그래서 우리는 3.8에 맞는 링크를 복사하고 wget으로 다운받아 와서 설치해주자.

wget https://developer.download.nvidia.com/compute/redist/jp/v50/pytorch/torch-1.12.0a0+2c916ef.nv22.3-cp38-cp38-linux_aarch64.whl

그리고 문제의 torchvision 이것도 NVIDIA
에서 해결방안을 알려준다.

위 방법을 따라하면 되는데, 위에 입력해야하는 명령어들 중 git clone을 할 링크는 여기다.

이 블로그 내용으로는 Pytorch 1.12.0 버전을 받았으니, torchvision은 0.13.0으로 받아야한다.

sudo apt-get install libjpeg-dev zlib1g-dev libpython3-dev libavcodec-dev libavformat-dev libswscale-dev
git clone --branch 0.13.0 https://github.com/pytorch/vision torchvision
cd torchvision
python3 setup.py install

위 코드를 입력하면 설치된다.

참고로 python3 setup.py install에 걸리는 시간은 상상을 초월하니 다른거 하고오는게 낫다. 대략 1시간 걸리는듯 한다..

2) YOLOv5 실행

가장 먼저 실행할 YOLOv5의 git을 clone해오자.

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

위 명령어를 통해 필요한 라이브러리도 한번에 받아주면 실행준비 끝이다.

열심히 torchtorchvision도 깔았으니! GPU로 이미지 연산처리를 해보자. (당연하겠지만, CUDA 설치도 되어있어야 하는거.. 알죠?)

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

위 명령어에 들어간 parameter 종류들은 아래와 같다.

--weightMask AP val
yolov5n23.4
yolov5s31.7
yolov5m37.1
yolov5l39.9
yolov5x41.4
--sourceParameter
0webcam
img.jpgimage
vid.mp4video
screenscreenshot
path/directory
list.txtlist of images
list.streamslist of streams
'path/*.jpg'glob
'https://youtu.be/Zgi9g1ksQHc'YouTube
'rtsp://example.com/media.mp4'RTSP, RTMP, HTTP stream
--devicecpu & gpu
cpucpu
0gpu
1gpu
2gpu
3gpu

만약 위 명령어를 입력했는데, Python 이라고만 나오고 아무것도 실행되지 않으면 python3가 아닌 python으로 명령을 입력해야한다. (아래 예시)

python detect.py --weights yolov5s.pt --source 0 --device 0

3) 실행 결과

profile
배울수록 반성하는 개발자

5개의 댓글

comment-user-thumbnail
2023년 8월 23일

안녕하십니까, 새내기 개발자입니다.
여러가지 Version 문제로 부셔버리고 싶었다는 말은 참 공감이 갑니다 하하
Jetson Nano에서 CSI-Cam을 사용하여 Yolov5를 구현하고자 합니다.
혹시 선생님께서는 가능하셨습니까?
CSI-Cam이 JetsonNano에서 구동되는 것은 확인 되었지만, Yolov5 구동이 안되어 고생입니다.
저도 마찬가지로 Webcam에서 Yolov5 구동은 가능합니다.

1개의 답글
comment-user-thumbnail
2023년 11월 1일

안녕하세요 저도 지금 NX xavier 환경 설정을 하고 있는데 혹시 도움받을 수 있을까 싶어서 댓글 작성합니다..! 작성자님은 가장 밑에 첨부된 결과 영상 보면 usb 카메라를 사용해서 바로 출력되도록 하신것 같은데 opencv를 사용하지 않으신건가요? 저는 jtop에서 opencv with cuda support : YES 가 되도록 재설치 후 gpu가 활성화됐는지 확인할 때 항상 비활성 상태를 리턴받고 있습니다....

jetpack5.0.2에 CUDA 11.4가 자동으로 설치되어 있는데 글 내용 중에 CUDA가 설치되어 있어야 하는거 아시죠?! 라는 내용이 있어서.. 혹시 jetpack sdk 설치 외에 추가적으로 작업이 필요한가요? 아니라면 저는 pytorch를 작성자님과 같은 방법으로 다운받고 난 다음 python > import torch > torch.cuda.is_available()하면 왜 False가 나올까요 ㅠㅠㅠㅠ
python>import cv2 > cv2.cuda.getCudaEnabledDeviceCount() 해도 0을 리턴받는데 이건 쿠다가 문제인건지..
detect.py 파일 실행시켜서 YOLO inference 하실 때 파이토치 버전 문제 외에 쿠다 활성화 문제는 없으셨나요?

1개의 답글