iT邦幫忙

2021 iThome 鐵人賽

DAY 13
0
自我挑戰組

實驗室助理的技術文章自我整理系列 第 13

onnx - Ubuntu18.04 yolov3 tiny 轉 onnx 使用 Python 3.6.9

  • 分享至 

  • xImage
  •  

onnx - Ubuntu18.04 yolov3 tiny 轉 onnx 使用 Python 3.6.9

參考資料

環境準備

  • Ubuntu 18.04
  • Python 3.6.9
  • CUDA-10.2
  • GNU Make 4.1
  • cuDNN-8.0.3
  • TensorRT 7.1.3.4
  • pycuda 2019.1.2
  • Python 套件:onnx 1.4.1

Ubuntu18.04 安装CUDA10.2+cuDNN8.0.3

參考:Ubuntu18.04安装CUDA10.2+cuDNN8

通常Nvidia 會要求登入。

安裝 CUDA 10.2

下载地址:CUDA Toolkit 10.2 Download

也可以直接執行下面的命令,不用登入。

wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu1804/x86_64/cuda-ubuntu1804.pin
sudo mv cuda-ubuntu1804.pin /etc/apt/preferences.d/cuda-repository-pin-600
wget https://developer.download.nvidia.com/compute/cuda/10.2/Prod/local_installers/cuda-repo-ubuntu1804-10-2-local-10.2.89-440.33.01_1.0-1_amd64.deb
sudo dpkg -i cuda-repo-ubuntu1804-10-2-local-10.2.89-440.33.01_1.0-1_amd64.deb
sudo apt-key add /var/cuda-repo-10-2-local-10.2.89-440.33.01/7fa2af80.pub
sudo apt-get update
sudo apt-get -y install cuda-10-2

安裝 cuDNN8.0.3

下载地址:cuDNN Archive

下載時必須要登入。

如下圖:

也可以去鏡像站下載會比較快:Index of /nvidia-machine-learning/ubuntu1804/x86_64/

如下圖:

下載完成後一次安裝這兩個文件就可以了(先安裝runtime library,再安裝developer library)。

指令如下:

sudo dpkg -i libcudnn8_8.0.3.33-1+cuda10.2_amd64.deb
sudo dpkg -i libcudnn8-dev_8.0.3.33-1+cuda10.2_amd64.deb

安裝完CUDA10.2和cuDNN8後,需要將cuda目錄下的bin目錄加入到PATH環境變量中。

vim ~/.bashrc

在最後一行,加入:

export PATH=/usr/local/cuda/bin:$PATH
export LD_LIBRARY_PATH="/usr/local/cuda/lib64:$LD_LIBRARY_PATH"

然後輸入指令:source ~/.bashrc

在正確的設置了PATH變量後,在命令行中執行 nvcc --version 有應該類似下面的輸出

>> nvcc --version
nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2019 NVIDIA Corporation
Built on Wed_Oct_23_19:24:38_PDT_2019
Cuda compilation tools, release 10.2, V10.2.89

至此,CUDA10.2+cuDNN8就成功的在Ubuntu18.04上安裝成功了。

Ubuntu 18.04 安装配置TensorRT 7.1

參考:在Ubuntu18.04上编译和测试TensorRT

下載地址:NVIDIA TensorRT 7.x Download

選擇 TensorRT 7.1.3.4 for Ubuntu 18.04 and CUDA 10.2 TAR package ,如下圖:

下載結束後解壓:

sudo tar -xvzf TensorRT-7.1.3.4.Ubuntu-18.04.x86_64-gnu.cuda-10.2.cudnn8.0.tar.gz

安装pip:

sudo apt-get install python3-dev python3-pip

切換到 TensorRT 的 python 目錄下,安裝對應 Python 版本的 python 套件,因為是 python 3.6 選 cp36的那個:

cd TensorRT-7.1.3.4/python/
sudo pip3 install tensorrt-7.1.3.4-cp36-none-linux_x86_64.whl

加入環境變數(這邊要看你的 TensorRT 放在哪):

vim ~/.bashrc
export LD_LIBRARY_PATH="/mnt/c/Users/p2330/Desktop/yolov3_onnx/TensorRT-7.1.3.4/targets/x86_64-linux-gnu/lib:$LD_LIBRARY_PATH"
source ~/.bashrc

驗證 TensorRT 的 python 套件安裝,如下圖:

安裝 uff:

cd ../uff
sudo pip3 install uff-0.6.9-py2.py3-none-any.whl

安裝 graphsurgeon:

cd ../graphsurgeon/
sudo pip3 install graphsurgeon-0.4.5-py2.py3-none-any.whl

安裝 pycuda 2019.1.2 & onnx 1.4.1

參考:tensorrt_demos

如下圖,雖然 tensorrt_demos 專案中有提供作者自己寫的 pycuda 安裝腳本,但執行之後,報出了奇怪的錯誤,所以這裡會用 pip 安裝。

(因為 pycuda 安裝時,會需要用到 cuda 和 TensorRT,所以才需要安裝前面那些,不然安裝過程會報錯)
安裝 pycuda 2019.1.2:

sudo pip3 install pycuda==2019.1.2

安裝 onnx 1.4.1:

sudo pip3 install onnx==1.4.1

yolov3 tiny 轉 onnx

參考:tensorrt_demos Demo #5: YOLOv4

取得 tensorrt_demos 專案:

git clone https://github.com/jkjung-avt/tensorrt_demos.git

切換到 tensorrt_demos/plugins 目錄下,修改 Makefile 中的TENSORRT_INCS 跟
TENSORRT_LIBS 的路徑(用 vim 或 nano 皆可),如下圖:

修改為 TensorRT-7.1.3.4 所在位置,如下圖(我放在了一個神奇的位置,不要在意):

然後執行 make:

會多出兩個檔案(會噴一堆警告,不用管它):

切換到 tensorrt_demos/yolo/ 目錄下,執行作者寫的 yolo 下載腳本,指令如下:

cd ../yolo/
./download_yolo.sh

執行 yolo_to_onnx.py

yolov3 tiny 轉 onnx :

python3 yolo_to_onnx.py -m yolov3-tiny-416

除了 yolov3 tiny ,還支援很多 model ,如下圖:

可參考:tensorrt_demos Demo #5: YOLOv4


上一篇
onnx - 用 netron 查看 onnx 模型版本參考筆記
下一篇
Kneron - 在Raspberry Pi 4(Raspbian Buster)上安裝 OpenCV 參考筆記
系列文
實驗室助理的技術文章自我整理30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言