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

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


<<:  站在巨人的肩膀上

>>:  电子书阅读器上的浏览器 [Day14] 中文直排阅读模式

Day 12 wireframe 大城市综览 + 天气预报( side project 配对单有意者请进)

今天开了配对单给大家做 side project,有兴趣可以来找找夥伴,前後端 / UIUX 皆可~...

15. STM32-I²C 介绍

介绍 I²C(Inter-Integrated Circuit)中文是内部整合电路,属於串列通讯汇流...

大盘到底能不能攻上一万八??

星期四(12/14)大盘跌幅近一个百分点,市场又是一片哀嚎 散户很容易犯的错就是 大涨不找理由,大跌...

[Day23]交易控制

什麽是资料库中的交易控制呢,即是当A帐户转帐给B帐户时,B帐户却因为系统问题无法顺利入帐,但A帐户已...

[Day3] Practice Resources

CTF 通常会依照各种领域区分, Web 、 Reverse 、 Pwn 、 Crypto 等。而渗...