JetPack 6.x는 펌웨어 버전 업데이트가 안되어있어서 안되고, 5.1.1로 설치함

minconda3깔고, pip install ultralytics 했더니 PyTorch가 CUDA 지원하지 않게 설치됨

https://docs.nvidia.com/deeplearning/frameworks/install-pytorch-jetson-platform-release-notes/pytorch-jetson-rel.html#pytorch-jetson-rel 여기서 PyTorch 지원하는 버전 확인함 2.1.0a로 설치하려고함

https://developer.download.nvidia.cn/compute/redist/jp/v511/pytorch/t 여기서 확인하니 2.0.0만 지원하는거같고 파이썬도 3.8버전만 사용해야함. 더 높이려면 jetpack 버전 자체를 올려야하는듯(소스에서 빌드하는 수도 있을 것 같긴 함. 근데 이건 수고스러울테니 일단 논외). 일단 2.0.0으로 진행

pip install --no-cache <https://developer.download.nvidia.com/compute/redist/jp/v511/pytorch/torch-2.0.0+nv23.05-cp38-cp38-linux_aarch64.whl> ultralytics

여기까지 했으면 pt 형식으로 저장된 모델 파일 읽어와서 inference 할 수 있음. 학습은 (544, 960) 사이즈로 했는데 (9:16 비율), 지금 카메라 디폴트로 읽어오는건 (480, 640)으로 3:4로 읽어옴. 이거는 설정하면 되는 것 같은데, 이를 추론할 때 (736, 960)으로 사이즈 변환돼서 inference하니까 추론에 145ms 정도 걸림 (10m 기반임). 10n 기반 모델 사용하니까 같은 사이즈에서 20fps 정도 나옴.

tensorRT 기반으로 시도해보려고하니 tensorRT 다운로드 할 수 없음

https://docs.ultralytics.com/ko/guides/nvidia-jetson/#detailed-comparison-table 여기 상세 비교 표를 보면 PyTorch 대비 TensorRT (FP16)이 거의 4분의 1정도 시간이 걸려서 10m 모델도 변환하면 돌릴 수 있을 것 같음

→ half=True, nms=True, imgsz=640(이거 왜 이렇게 세팅해야 동작하는지 잘 모르겠음, 학습은 960으로 했는데) 하고 변환했더니 24ms정도로 잘 돌아감 (640으로 설정돼서 더 빨라진거같긴함 성능 확인 한번 해봐야할듯)

→ track 함수에 imgsz 같이 넣어줘야하는 것을 확인함 훈련시 사이즈인 (544, 960) 입력했을때 27~28ms 정도로 잘 돌아감

→ TensorRT 변환 자체를 orin nano 위에서 해서 메모리 부족해서 적용 못한 tactic들이 있는데, 워크스테이션에 세팅 잘해서 옮기면 더 개선될 수 있지 않을까 싶음. 그렇지만 일단 속도가 만족할만큼 나왔기 때문에 생략

→ TensorRT-YOLO 파이썬으로 추론하는것보다 trtexec이나 C++을 통해 추론하면 더 빠르다고 함 https://github.com/WongKinYiu/yolov9/issues/143

https://forums.developer.nvidia.com/t/how-to-install-nvidia-tensorrt/250891/6 여기서 말하길 pip으로 설치하지말고

sudo apt-get install tensorrt nvidia-tensorrt-dev python3-libnvinfer-dev

이렇게 설치하라고 함. 따라하니 conda 아닌 default 파이썬에서는 tensorrt가 import 되는데, conda 환경 안에서는 안됨. https://forums.developer.nvidia.com/t/need-support-with-installing-tensorrt-in-a-conda-env-on-orin-nx/269113/10 여기 답변중에 그냥 패키지 복붙하라고 해서 따라했더니 인식 됨.

근데 변환할 때랑 설치된거랑 tensorRT 버전이 달라서 불러오기가 안됨 (orin nano에 설치된 tensorRT 버전은 8.5.2.2). 걍 orin nano 안에서 tensorRT로 변환하려고 하니까 또 중간 단계에 필요한 onnx가 설치안됐다고 불평함.