5.Jetson Nano之TensorRT 环境搭建(jetson-inference)

您当前位置: 首页 > > AI入门教程

5Jetson NanoTensorRT 环境搭建(jetson-inference)

NVIDIA TensorRT™是一个高性能深度学习推理平台。它包括深度学习推理优化器和运行时,可为深度学习推理应用程序提供低延迟和高吞吐量。在推理期间,基于TensorRT的应用程序比仅CPU平台的执行速度快40倍。使用TensorRT,您可以优化在所有主要框架中培训的神经网络模型,以高精度校准低精度,最后部署到超大规模数据中心,嵌入式或汽车产品平台。

TensorRT构建于NVIDIA的并行编程模型CUDA之上,使您能够利用CUDA-X AI中的库,开发工具和技术,为人工智能,自动机器,高性能计算和图形优化所有深度学习框架的推理。

TensorRT为深度学习推理应用的生产部署提供INT8FP16优化,例如视频流,语音识别,推荐和自然语言处理。降低精度推断可显着减少应用程序延迟,这是许多实时服务,自动和嵌入式应用程序的要求。

image.png 

您可以将训练有素的模型从每个深度学习框架导入TensorRT。应用优化后,TensorRT选择特定于平台的内核,以最大限度地提高数据中心,Jetson嵌入式平台和NVIDIA DRIVE自动驾驶平台中Tesla GPU的性能。

为了在数据中心生产中使用AI模型,TensorRT推理服务器是一种容器化微服务,可最大化GPU利用率,并在节点上同时运行来自不同框架的多个模型。它利用DockerKubernetes无缝集成到DevOps架构中。

使用TensorRT,开发人员可以专注于创建新颖的AI驱动的应用程序,而不是用于推理部署的性能调整。

  Jetson Nano的官方文档中给我们推荐了二个例子,其中一个使用Tensor RT做物品识别的例子。具体的可以参考英伟达jetson-inference例子。

 

(一)准备工作:

 

大家知道Jetson Nano系统最低配置是需要16GSD卡,而跑通这个例子需要的模型就大概1G以上,所以这个例子的大部分并没有放到SD卡上(SD卡上只有运行这个模型所需要的TensorRT)。悲剧的是存放这些模型的服务器被墙了,所以只能将之前下载好的包远程传输到对应的下载目录下

首先如果您没有安装gitcmake,先安装它们

$ sudo apt-get install libpython3-dev python3-numpy

 

sudo apt-get install git cmake

 

接着从git上克隆jetson-inference

 

git clone https://github.com/dusty-nv/jetson-inference

 

cd jetson-inference

 

 

git submodule update --init  (都需要执行)

配置cmake,如果您科学上网没问题的话,会自动下载许多模型。

 

mkdir build    #创建build文件夹

cd build       #进入build

cmake ../      #运行cmake,它会自动执行上一级目录下面的 CMakePrebuild.sh(这里如果没能科学上网,请手动下载然后放到上面提到的路径data/networks

步骤如下:

编辑jetson-inference/CMakePrebuild.sh。把./download-models.sh./install-pytorch.sh注释掉,(前面加个#注释)如下图1)。教程目录下“5、常用的库和模型文件” 下 “jetson-inference需要的包”然后通过WinSCP或者SSH传输到data/networks目录,如下图2拖动到右侧目录下。

image.png 

1

image.png 

然后在此目录执行解压:

for tar in *.tar.gz; do tar xvf $tar; done

image.png 

注释:

对于解压多个.gz文件的,用此命令:

for gz in *.gz; do gunzip $gz; done

对于解压多个.tar.gz文件的,用下面命令:

for tar in *.tar.gz;  do tar xvf $tar; done

 

cmake成功后,就需要编译了

cd jetson-inference/build

# 这里的 make 不用 sudo

# 后面 -j4 使用 4 CPU 核同时编译,缩短时间


make (或者make -j4)    注意:(在build目录下)

sudo make install        注意:(在build目录下)

 

如果编译成功,会生成下列文件夹结构

 

|-build

   aarch64      (64-bit)

      bin   where the sample binaries are built to

      include  where the headers reside

      lib   where the libraries are build to

   armhf           (32-bit)

      bin   where the sample binaries are built to

      include  where the headers reside

      lib   where the libraries are build to

 

如果编译出现下列错误是需要安装opengl,安装后再重新Cmake和make操作

image.png 

安装opengl按下列命令

sudo apt-get install build-essential

sudo apt-get install build-essential libgl1-mesa-dev

sudo apt-get install libglew-dev libsdl2-dev libsdl2-image-dev libglm-dev libfreetype6-dev

sudo apt-get install libglfw3-dev libglfw3

 

安装OpenGL Library

sudo apt-get install libgl1-mesa-dev

 

安装OpenGL Utilities

sudo apt-get install libglu1-mesa-dev
OpenGL Utilities 是一组建构于 OpenGL Library 之上的工具组,提供许多很方便的函数,使 OpenGL 更强大且更容易使用。

 

安装OpenGL Utility Toolkit

sudo apt-get install libglut-dev

OpenGL Utility Toolkit 是建立在 OpenGL Utilities 上面的工具箱,除了强化了 OpenGL Utilities 的不足之外,也增加了 OpenGL 对于视窗介面支援。
注意:在这一步的时候,可能会出现以下情况,shell提示:

Reading package lists… Done
Building dependency tree
Reading state information… Done
E: Unable to locate package libglut-dev
将上述$ sudo apt-get install libglut-dev命令改成$ sudo apt-get install freeglut3-dev即可

 

(三)测试

 

进入测试文件夹,运行

 

cd jetson-inference/build/aarch64/bin

./imagenet-console ./images/bird_0.jpg output.jpg

执行等待许久后出现如下(第一次需要很长时间,后面执行就会很快):

image.png 

image.png 

找到对应目录下查看output.jpg如下,会在图片上端显示识别结果。

image.png 

 

更多学习请看官方文档:

官方Demo

https://developer.nvidia.com/embedded/twodaystoademo

官方TensorRT教程:

https://docs.nvidia.com/deeplearning/sdk/tensorrt-sample-support-guide/index.html