SpireCV如何利用TensorRT加速?

TensorRT简介

TensorRT是NVIDIA推出的一款高性能的深度学习推理引擎(C++库)。相比于一般的深度学习框架,在GPU模式下其可提供36X的加速,极大提高了深度学习模型在边缘设备上的推断速度,以满足无人机、无人车等无人系统的快速视觉检测场景。

SpireCV如何利用TensorRT加速?_第1张图片

TensorRT加速原理

1、TensorRT加速主要在:

  • 它支持INT8和FP16的计算,通过量化和减少浮点精度来提高计算效率;
  • 它可以对网络结构进行重构和优化,例如融合层、剪枝、深度缓存等技术,以减少计算量和内存访问,从而提高推理性能。

TensorRT的网络结构重构和优化不仅包括消除无用的输出层,还涉及到计算的可重复利用性和内存访问的高效性。具体来说,通过融合层、剪枝、深度缓存等技术,TensorRT可以将网络结构进行垂直整合,即将多个层合并为一个层,从而减少计算量和内存访问次数。

例如,对于常见的卷积神经网络结构,TensorRT可以将其中的卷积、偏置和激活函数(如ReLU)合并为一个层,同时通过重排卷积核的顺序,以便在计算时利用输入数据的局部性进行计算。

这样可以有效地提高计算效率和内存访问效率,并且能够充分利用GPU的并行计算能力。此外,TensorRT还支持动态图形优化技术,即根据实时数据流的特点,动态地选择最优的计算路径和数据布局,进一步提高了推理性能。

SpireCV如何利用TensorRT加速?_第2张图片

例如将下方图1所示的常见的Inception结构重构为图2所示的网络结构。

SpireCV如何利用TensorRT加速?_第3张图片 图1. Inception结构

对于网络的水平组合,水平组合是指将输入为相同张量和执行相同操作的层融合一起,如图2向图3的转化。

SpireCV如何利用TensorRT加速?_第4张图片 图2. Inception结构重构

SpireCV如何利用TensorRT加速?_第5张图片 图3. 相同操作的层水平融合

SpireCV的TensorRT应用

目前,SpireCV在平台层方面已全面支持Nvidia GPU(推荐10系、20系、30系显卡)、Jetson(AGX Orin/Xavier、Orin NX/Nano、Xavier NX),同样地在这些平台上也相应的支持TensorRT加速。

1、环境准备

  • X86+Nvidia GPU(推荐10系、20系、30系显卡),SpireCV已将环境准备信息整理为脚本文件,方便快捷,开发者可参考“阿木实验室”官网的SpireCV wiki自行下载使用;
  • Jetson(AGX Orin/Xavier、Orin NX/Nano、Xavier NX),SpireCV开发者套件已预装好全部环境,开箱即用。

2、应用方法

简单思路:在训练平台使用PyTorch框架训练完检测器模型后,需要先将PyTorch模型(.pt模型)转换为TensorRT模型(.wts模型),再在实际运行平台将.wts模型转为TensorRT的.engine文件,使用TensorRT引擎进行推理。

.wts模型是一个二进制文件,其中存储了TensorRT引擎所需的所有权重和偏置参数,以及对应神经网络层的配置信息。与其他模型表示格式相比,.wts模型更加紧凑高效,可以充分利用TensorRT引擎的各种优化技术,从而获得更高的推理性能。

相比于另一种TensorRT引擎的转换方法,即借助ONNX模型转为TensorRT引擎,SpireCV使用的方法不仅无需外部的模型转换工具,而且能够获得更高的推理性能。

需要注意的是,由于.wts模型是TensorRT引擎所特有的格式,因此它只能在TensorRT引擎上运行,无法在其他深度学习框架或平台上进行加载和运行。

关于如何用自定义数据集训练检测器,以及SpireCV使用TensorRT的具体应用步骤,感兴趣的开发者可以参考我们上一篇文章《不想敲代码,如何快速实现数据标注、模型训练、高效部署?》或者在文章底部留言。

TensorRT加速性能

SpireCV如何利用TensorRT加速?_第6张图片

SpireCV如何利用TensorRT加速?_第7张图片

- End -

往期推荐:

SpireCV:专为智能无人系统打造的边缘实时感知SDK库icon-default.png?t=N7T8http://mp.weixin.qq.com/s?__biz=MzIwNzgxNzg0Mg==&mid=2247544685&idx=1&sn=2352672ecae97b5d6ca69ca8f7dc3e54&chksm=970ef270a0797b660ad1f2cb5da77d660f67e94fb19b2bd46d9f146727c300acdf86192212ea&scene=21#wechat_redirect

不想敲代码,如何快速实现数据标注、模型训练、高效部署?icon-default.png?t=N7T8http://mp.weixin.qq.com/s?__biz=MzIwNzgxNzg0Mg==&mid=2247546098&idx=1&sn=db1b054b462b8c81d61b851a73a30499&chksm=970ee9efa07960f936fa7bec03e89a5db9a450b4d1b6a2988849c6ada2575464e2f7789f3a87&scene=21#wechat_redirect

图片

阿木实验室:为机器人研发提供开源软硬件工具和课程服务,让研发更高效!

技术发展的日新月异,阿木实验室将紧跟技术的脚步,不断把机器人行业最新的技术和硬件推荐给大家。看到经过我们培训的学员在技术上突飞猛进,是我们培训最大的价值。如果你在机器人行业,就请关注我们的公众号,我们将持续发布机器人行业最有价值的信息和技术。

你可能感兴趣的:(SpireCV,TensorRT,深度学习,NVIDIA,深度学习推理引擎C++库)