yolox를 설치하기전 필수사항으로 cuda/pytorch 가 반드시 미리 설치되어 있어야한다.
jetson 보드에는 cuda가 기본설치되어 있으므로 py torch 만 설치해준다.
https://qengineering.eu/install-pytorch-on-jetson-nano.html
Qengineering의 jetson 개발환경 포스팅에 따라 설치했다.
정상적으로 설치가 완료되었다.
이미지에는 나타나지 않지만, torch(직접설치), tensorrt(기본설치), opencv(기본설치) 되어 있다.(파이썬 바인딩 포함)
$ git clone https://github.com/Megvii-BaseDetection/YOLOX.git
$ cd YOLOX
설치 전 필요한 패키지를 미리 설치해준다.
$ sudo apt-get install gfortran
$ pip3 install scikit-build
사용하지 않는 onnx 관련 패키지 및 기존에 설치된 python-opencv 패키지를 덮어 쓰지않도록 requirements.txt 파일을 열어 수정해준다.
$ sudo gedit requirements.txt
# TODO: Update with exact module version
numpy
torch>=1.7
#opencv_python # 오픈씨비 덮어쓰기 x
loguru
scikit-image
tqdm
torchvision
Pillow
thop
ninja
tabulate
tensorboard
# verified versions
# pycocotools corresponds to https://github.com/ppwwyyxx/cocoapi
pycocotools>=2.0.2
#onnx 설치 X
#onnx==1.8.1
#onnxruntime==1.8.0
#onnx-simplifier==0.3.5
기존 설치된 numpy를 제거하고 pip을 통해 새로 설치한다.
$ sudo rm -R /usr/lib/python3/dist-packages/numpy
$ sudo rm -R /usr/lib/python3/dist-packages/numpy-1.13.3.egg-info/
강제로 numpy를 제거해줬다.
다시 설치하자.
$ sudo -H pip3 install numpy==1.19.5 --force
onnx는 아래 명령어를 통해 별도로 설치한다.
$ sudo apt-get install protobuf-compiler libprotoc-dev
$ sudo pip3 install onnx==1.8.1
설치가 오래걸리기 때문에 마음의 준비를 하자.
$ sudo pip3 install -v -e . # or python3 setup.py develop
yolox 설치가 완료되었다.
사실 jetson 보드에는 inference 포팅이 목적이기 때문에,
실제 추론을 torch로 하지않고 tensorrt를 사용할 것이다.
tensortt 최적화 시 하드웨어에 dependency 되기 때문에 jetson board에 직접 변환 툴을 설치한다.
(개발 완료 후에는 동일한 환경으로 셋팅 후 최적화된 engine 파일을 배포하면 된다.)
$ git clone https://github.com/NVIDIA-AI-IOT/torch2trt
$ cd torch2trt
$ sudo python setup.py install
jetpack에 기본설치된 Pillow 패키지를 찾을 수 없으므로,
지우고 pip으로 다시 설치해줬다.
$ sudo pip3 uninstall Pillow
$ sudo pip3 install Pillow
$ sudo pip3 install Image
### 4. YOLOX/tools/trt.py로 모델 변환
LD_PRELOAD 환경변수에 /usr/lib/aarch64-linux-gnu/libgomp.so.1를 추가해준다.
$ sudo gedit ~/.bashrc
export LD_PRELOAD=/usr/lib/aarch64-linux-gnu/libgomp.so.1
$ source ~/.bashrc
4번 단계를 왜 했는지 기억이 안난다..(일단 넘어가고 오류발생시 하는 것으로...)