Nvidia Jetson Nano Developer KIT配置全过程(五):Pycuda及TensorRT安装配置

十、安装pycuda

1、下载pycuda

下载地址:https://pypi.org/project/pycuda/2021.1/#files

Nvidia Jetson Nano Developer KIT配置全过程(五):Pycuda及TensorRT安装配置_第1张图片

2、安装pychuda

解压缩pycuda-2021.1.tar.gz,然后进入pycuda-2021.1目录,执行安装命令。

Nvidia Jetson Nano Developer KIT配置全过程(五):Pycuda及TensorRT安装配置_第2张图片
Nvidia Jetson Nano Developer KIT配置全过程(五):Pycuda及TensorRT安装配置_第3张图片

tar zxvf pycuda-2021.1.tar.gz

cd pycuda-2021.1/

python3 configure.py --cuda-root=/usr/local/cuda-10.2

python3 setup.py install

或者也可以执行以下命令安装(这是官网提供的,但是本人未尝试过)

pip3 install pycuda==2021.1

如果安装过程中出现如下所示的异常,则是因为pip3所配置的国内源中没有相关的软件或者库,这时候先临时更换pip3源下载所需软件或者库,然后再重新安装pycuda。

Nvidia Jetson Nano Developer KIT配置全过程(五):Pycuda及TensorRT安装配置_第4张图片

十一、TensorRT加速

JetsonNano系统已经默认安装了TensorRT,打开jtop监控页面可以看到,所以这里不再讲解如何安装配置TensorRT,如果有需要,大家可以在网络上查询相关资料。

Yolov5-TensorRT的配置与部署

https://zhuanlan.zhihu.com/p/430470397

1、TensorRT简介

TensorRT是英伟达针对自家平台做的一个加速包,可以认为 TensorRT 是一个只有前向传播的深度学习框架,这个框架可以将 Caffe,TensorFlow 的网络模型解析,然后与 TensorRT 中对应的层进行一一映射,把其他框架的模型统一全部转换到 TensorRT 中,然后在 TensorRT 中可以针对 NVIDIA 自家 GPU 实施优化策略,并进行部署加速。根据官方文档,使用TensorRT,在CPU或者GPU模式下其可提供10X乃至100X的加速。本人的实际经验中,TensorRT提供了20X的加速。

TensorRT主要做了这么两件事情,来提升模型的运行速度:TensorRT支持INT8和FP16的计算。深度学习网络在训练时,通常使用 32 位或 16 位数据。TensorRT则在网络的推理时选用不这么高的精度,达到加速推断的目的。

TensorRT对于网络结构进行了重构,把一些能够合并的运算合并在了一起,针对GPU的特性做了优化。

Nvidia Jetson Nano Developer KIT配置全过程(五):Pycuda及TensorRT安装配置_第5张图片

2、Tensorrtx简介

首先我们需要知道,不同的网络框架训练出来的模型的格式不一样,且并不通用,比如我们拿Tensorflow训练出来的模型为XXX.pb,Pytorch训练出来的模型为XXX.pt或XXX.pth,我们以Yolov5举例,他训练出来的模型后缀为.pt,我们要将其通过tensorrt部署,就需要将pt文件转换为tensorrt支持的engine格式,转换方式有两种

1. pytorchmodel-->onnx file-->TensorRT engine

ONNX是一种针对机器学习所设计的开放式的文件格式,用于存储训练好的模型。它使得不同的深度学习框架(如Pytorch, MXNet)可以采用相同格式存储模型数据。简而言之,ONNX是一种便于在各个主流深度学习框架中迁移模型的中间表达格式。

onnx是连接不同深度学习框架的桥梁,他的存在使得不同的模型之间可以互相转换。

2.pytorchmodel-->TensorRT engine

要直接把Yolov5的模型转换为TensorRT的格式,我们需要调用TensorRT的API对Yolov5的网络架构进行重构,这对初学者来说不太友好,所幸github上有大佬开源的项目tensorrtx,此项目集模型转换与部署为一体,可以直接调用。

3、Yolov5模型转换

3.1下载工程

首先下载yolov5-master和tensorrtx-master。

https://github.com/ultralytics/yolov5/releases

https://github.com/wang-xinyu/tensorrtx

下载的tensorrtx-master文件如下所示:

yolov5-master目录文件结构

Nvidia Jetson Nano Developer KIT配置全过程(五):Pycuda及TensorRT安装配置_第6张图片

tensorrtx-master目录文件结构

Nvidia Jetson Nano Developer KIT配置全过程(五):Pycuda及TensorRT安装配置_第7张图片

3.2模型转换

第一步,将/tensorrtx-master/yolov5中的gen_wts.py文件拷贝到yolov5-master目录中,并将yolov5s-mask.pt(训练好的模型文件)也拷贝到此目录。

Nvidia Jetson Nano Developer KIT配置全过程(五):Pycuda及TensorRT安装配置_第8张图片

第二步,在yolov5-master根目录下,打开命令窗口并执行以下命令。

python3 gen_wts.py -w yolov5s-mask.pt

#如果yolov5s-mask.pt放在weights目录下,则可用下面的命令执行

python3 gen_wts.py –w weights/ yolov5s-mask.pt

#生成yolov5s-mask.wts(模型转换的中间文件)

如下图所示:

Nvidia Jetson Nano Developer KIT配置全过程(五):Pycuda及TensorRT安装配置_第9张图片

第三步,进入/tensorrtx-master/yolov5。

修改yololayer.h文件中的CLASS_NUM为你训练的模型的标签类别数。

Nvidia Jetson Nano Developer KIT配置全过程(五):Pycuda及TensorRT安装配置_第10张图片

第四步,开始编译。

mkdir build

cd build

cmake ..

make

如下图所示:

Nvidia Jetson Nano Developer KIT配置全过程(五):Pycuda及TensorRT安装配置_第11张图片
Nvidia Jetson Nano Developer KIT配置全过程(五):Pycuda及TensorRT安装配置_第12张图片

生成可执行文件yolov5。

第五步,将yolov5s-mask.wts拷贝到build文件夹中,并执行命令。

./yolov5 -s best.wts best.engine s

生成yolov5s-mask.engine文件,这便是我们tensort部署所需要的模型文件啦。如下图所示:

Nvidia Jetson Nano Developer KIT配置全过程(五):Pycuda及TensorRT安装配置_第13张图片

4、Tensorrtx加速测试

接下来将以上一步生成的“戴口罩检测模型”engine文件为例子,测试检测模型加速效果。

第一步,在tensorrtx-master/yolov5目录下,拷贝yolov5_trt.py在当前目录下重命名为yolov5_trt_mask.py。打开yolov5_trt_mask.py文件,修改“engine_file_path”和“categories”配置项。

Nvidia Jetson Nano Developer KIT配置全过程(五):Pycuda及TensorRT安装配置_第14张图片
Nvidia Jetson Nano Developer KIT配置全过程(五):Pycuda及TensorRT安装配置_第15张图片

第二步,在sample目录下放置一些测试图片。

Nvidia Jetson Nano Developer KIT配置全过程(五):Pycuda及TensorRT安装配置_第16张图片

第三步,执行python脚本,进行测试。

Nvidia Jetson Nano Developer KIT配置全过程(五):Pycuda及TensorRT安装配置_第17张图片
Nvidia Jetson Nano Developer KIT配置全过程(五):Pycuda及TensorRT安装配置_第18张图片

你可能感兴趣的:(Nvidia开发板,python,pytorch,opencv,嵌入式硬件,ubuntu)