1. 개발환경
Jetson nano
Jetpack 4.6
opencv 4.5.3
TensorRT 8.0.1.6
CUDA 10.2.300
cuDNN 8.2.1.31
모든 작업은 python3를 사용한다. 이것은 이미 Jetpack안에 포함되어 설치되어 있음
참고사이트
https://jkjung-avt.github.io/jetpack-4.6/
https://docs.nvidia.com/deeplearning/tensorrt/developer-guide/index.html
2. 설치준비작업
$ sudo jetson_clocks --> 클럭주파수를 최대로 설정
$ sudo apt update
### Set proper environment variables
$ mkdir ${HOME}/project --> ${HOME} 유저의 홈디렉토리를 의미함
$ cd ${HOME}/project
$ git clone https://github.com/jkjung-avt/jetson_nano.git
$ cd jetson_nano
$ ./install_basics.sh
$ source ${HOME}/.bashrc --> 수정된 .bashrc를 다시실행
3. 파이썬 모듈 cv2가 작동하는지 확인
영상의 입출력을 위하여 opencv를 사용함
많은 패키지들이 Jetpack에 포함되어 설치되어 있음, 설치된 패키지들은 건너띄고 미설치 패키지만 설치함
### Install packages required for building code
$ sudo apt update
$ sudo apt install -y build-essential make cmake cmake-curses-gui git g++ pkg-config curl libfreetype6-dev
### Install dependencies for python3 "cv2"
$ sudo apt install -y libcanberra-gtk-module libcanberra-gtk3-module protobuf-compiler libprotoc-dev python3-dev python3-pip
$ sudo pip3 install -U pip Cython testresources setuptools
$ sudo pip3 install protobuf numpy==1.19.4 matplotlib==3.2.2
다음에러 발생 일단 무시하고 진행함 3번과정에서 해결할것임
ERROR: pip's dependency resolver does not currently take into account all the packages that are installed. This behaviour is the source of the following dependency conflicts.
uff 0.6.9 requires protobuf>=3.3.0, but you have protobuf 3.0.0 which is incompatible.
### Test tegra-cam.py (using a USB webcam)
$ cd ${HOME}/project
$ wget https://gist.githubusercontent.com/jkjung-avt/86b60a7723b97da19f7bfa3cb7d2690e/raw/3dd82662f6b4584c58ba81ecba93dd6f52c3366c/tegra-cam.py
웹캠(HD3000)을 usb포트에 연결후 /dev/video0 장치파일이 존재하는지 확인
$ python3 tegra-cam.py --usb --vid 0 --width 1280 --height 720
화면에 영상이 나타나야함 잘 실행되면 cv2모듈(opencv)이 잘 동작하는것임
4. Yolo 모델을 TensorRT모델로 변환 후 테스트
### Clone the tensorrt_demos code
$ cd ${HOME}/project
$ git clone https://github.com/jkjung-avt/tensorrt_demos.git
### Install dependencies
$ sudo pip3 install onnx==1.4.1
$ cd ${HOME}/project/tensorrt_demos/plugins
$ make
$ cd ${HOME}/project/tensorrt_demos/yolo
$ ./install_pycuda.sh
$ ./download_yolo.sh
### install protobuf-3.8.0, Jetpack에 protobuf-3.0.0이 설치되어있으나 호환안됨
$ cd ${HOME}/project/jetson_nano
$ ./install_protobuf-3.8.0.sh
### build yolo TensorRT engines
$ cd ${HOME}/project/tensorrt_demos/yolo
$ python3 yolo_to_onnx.py -m yolov4-tiny-288
$ python3 onnx_to_tensorrt.py -v -m yolov4-tiny-288
### test yolov4-tiny-288 TensorRT engines
$ cd ${HOME}/project/tensorrt_demos
$ wget https://raw.githubusercontent.com/pjreddie/darknet/master/data/dog.jpg -O ${HOME}/project/tensorrt_demos/yolo/dog.jpg --> 웹상에 있는 영상파일(dog.jpg)을 지정한 디렉토리에 다운로드해줌
$ python3 trt_yolo.py --image yolo/dog.jpg -m yolov4-tiny-288
yolov4-tiny-288 TensorRT -> 30fps이상 나온다.
Tip : 리눅스에서 화면 캡쳐(클립보드로 복사됨)
전체화면 캡쳐 Ctrl+PrtScr
활성화된창캡쳐 Ctrl+Alt+PrtScr
지정된 영역 캡쳐 Ctrl+Shift+PrtScr
이미지 뷰어 xdg-open dog.jpg