1. 前言
深度学习的应用落地流程包括了神经网络的训练与部署,我们熟悉的Tensorflow、Caffe、Pytorch等框架属于训练框架,用于神经网络的训练,在完成网络训练之后,我们需要对网络进行部署,这时候往往需要将网络迁移到部署框架上。
TensorRT是Nvidia开发的一个神经网络前向推理加速的C++库,提供了包括神经网络模型计算图优化、INT8量化、FP16低精度运算等神经网络前向推理优化的方法(更加具体的介绍可以参考官网:https://developer.nvidia.com/tensorrt)。目前TensorRT提供了C++与Python的API接口,本文中主要使用C++接口为例说明TensorRT框架的一般使用流程。
本文采用的实验流程为:Pytorch -> Onnx -> TensorRT。即首先将Pytorch模型转换为Onnx模型,然后通过TensorRT解析Onnx模型,创建TensorRT引擎及进行前向推理。
2. 准备工作
2.1 实验环境
GPU:1080ti;
Cuda:10.0;
Cudnn:7.6;
Pytorch:1.5;
TensorRT:7.0
2.2 TensorRT安装
在 官网 下载对应版本的TensorRT,我这里选择源码安装,所以我下载的是:
2. 安装TensorRT
按照 官网安装指引 进行安装即可
2.3 ONNX环境安装
>> sudo apt-get install libprotobuf-dev protobuf-compiler # protobuf is a prerequisite library>> git clone --recursive https://github.com/onnx/onnx.git # Pull the ONNX repository from GitHub >> cd onnx>> mkdir build && cd build >> cmake .. # Compile and install ONNX>> make # Use the ‘-j’ option for parallel jobs, for example, ‘make -j $(nproc)’ >> make install
3. 示例详解
3.1 Python模型转Onnx
3.2 输入数据预处理idia官方提供的一个基于unet模型的大脑MRI图像分割的例子:
>> wget https://developer.download.