目前关于使用TensorRT 3.0加速推理caffe的教程不太多,本博客会介绍部署TensorRT从HOST端到Jetson TX2端整个WORKFLOW,然后说明如何修改samples代码以便可以用自定义模型进行推理加速,主要从以下三个方面展开
- TensorRT简介
- 环境配置
- Jetson端模型文件推理
一、TensorRT简介
NVIDIA TensorRT是一种高性能神经网络推理(Inference)引擎,用于在生产环境中部署深度学习应用程序,应用有图像分类、分割和目标检测等,可提供最大的推理吞吐量和效率。接触过深度网络压缩的同学应该知道网络压缩最关键的两个思路,剪枝和量化。 TensorRT就是量化,将FP32位权值数据优化为 FP16 或者 INT8,而推理精度不发生明显的降低。
二、环境配置
HOST端使用Ubuntu 16.04 的主机,具体环境信息:
版本 | 描述 |
---|---|
CUDA 9.0 | NVIDIA推出的用于自家GPU的并行计算框架 |
cuDNN 7.1.2 | NVIDIA打造的针对深度神经网络的GPU加速库 |
pycuda | 基于Python实现的使用CUDA的工具包7 |
caffe | 清晰,可读性高,快速的深度学习框架 |
python 2.7 | 编程语言 |
tensorrt 3.0 | NVIDIA推出的深度学习推理加速引擎7 |
Jetson TX2端
TX2环境为Jetpack 3.2,具体如下:
名称 | 版本 |
---|---|
L4T | 28.2 |
CUDA Toolkit | 9.0 |
cuDNN | 7.0.5 |
tensorrt | 3.0.4 |
三、TX2上跑已经训练好的自定义模型
本博文是对LeNet神经网络进行微调。
DIGITS训练好模型,对模型进行测试,测试无误后,可以在tx2上加载自定义模型,创建保存快照的目录
$ cd jetson-inference/data/networks
$ mkdir LeNet-fine-tuning
确保在jetson-inference / build / aarch64 / bin
目录下,执行命令,需要测试的图像输出图像也在这个目录下
选择最后一个epoch下载模型,会下载一个压缩包, 名字类似于20180501-191922-f853_epoch_30.0.tar.gz.通过DIGITS或将该压缩包用U盘,网线等任何方式拷贝到tx2上
将压缩包解压到
jetson-inference/data/networks/LeNet-fine-tuning
数据集的目录下, 可以看到解压后里面模型快照和结构文件,其中deploy.prototxt
是描述网络结构的,snapshot_iter_30.caffemodel
是网络的权值将$NET下面的变量设置为提取的快照的路径
$ NET=networks/LeNet-traffic-sign
运行处理离线图片的程序, input_blob, output_cvg,
output_bbox参数不用设置,设置一下模型结果的prototxt文件和模型权值caffemodel文件
$ ./imagenet-console test_0.jpg output_0.jpg \
--prototxt=$NET/deploy.prototxt \
--model=$NET/snapshot_iter_30.caffemodel \
--labels=$NET/labels.txt \
--input_blob=data \
--output_blob=softmax