Hiện nay, mô hình TensorRT là mô hình tối ưu nhất khi chạy trên thiết bị Jetson Nano. Với sự hỗ trợ của hãng NVDIA, mô hình hoạt động tốt và ổn định, lượng tiêu thụ tài nguyên máy tính nhỏ.
Mô hình YOLOv4-tiny là mô hình hoạt động hiệu quả nhất trong các thử nghiệm, nên nhóm quyết định chọn mô hình này để thực hiện tối ưu tiếp tục trên nền tảng TensorRT. Để có thể chuyển đổi định dạng .weights của mô hình YOLOv4-tiny sang định dạng TensorRT, ta cần sử dụng một bước trung gian, đó là định dạng .onnx.
Bước 1: Tải bộ chuyển đổi tại https://github.com/jkjung-
avt/tensorrt_demo#YOLOv3
Bước 2: Tải các thư viện cần thiết
Thư viện pycuda ( CUDA của nvdia dành cho python ): $ cd ${HOME}/project/tensorrt_demo/ssd
$ ./install_pycuda.sh
Thư viện onnx phiên bản 1.4.1 của python. Lưu ý: các phiên bản khác không tương thích với hệ điều hành Jetpack 4.4.
$ sudo pip3 install onnx==1.4.1
Cài tiếp tục các plugins hỗ trợ cho Yolo Layer chuyển đổi sang TensorRT.
$ cd ${HOME}/project/tensorrt_demo/plugins $ make
Bước 3: Để mô hình YOLOv4-tiny đã được huấn luyện vào thư mục
/tensorrt_demo/yolo. Đặt lại tên thành YOLOv4-tiny-(kích thước hình ảnh), ở đề tài này kích thước sử dụng là 416pixel. Vì thế đặt tên là YOLOv4-tiny-416.weights. Nếu mô hình này có kích thước lớn, thời gian chạy thậm chí lên đến 45 phút. Lưu ý: Code chuyển đổi này chỉ hoạt động trên hệ điều hành Jetpack và phiên bản onnx 1.4.1. Nếu không đáp ứng đúng, thì không thể chuyển đổi sang .onnx.
Chạy file yolo_to_onnx.py để khởi động: $ cd ${HOME}/project/tensorrt_demo/yolo
$ python3 yolo_to_onnx.py -m YOLOv4-416 Sau khi chạy xong, ta thu được file .onnx như sau
Hình 3.11 File .onnx
Bước 4:Tiếp tục từ mô hình trung gian .onnx chuyển đổi sang định dạng .trt bằng lệnh $ python3 onnx_to_trt.py -m YOLOv4-416. Kết quả thu được: