Jetson 开发软件栈介绍

Jetson 开发软件栈介绍

得益于Nvidia在人工智能芯片领域的深厚积累,以Jetson系列为硬件核心的边缘AI解决方案在市场中成为了绝对的王者。Jetson的硬件简单来说就是把你需要的CPU,GPU以及RAM集成到了一块巴掌大小的板子上,并且针对不同的性能提供了差异化的视频编解码单元,同时更为核心的是CPU和GPU共享一块RAM,基于这种架构我们在开发复杂的应用,特别是IVA(智能视频分析)类应用的时候会有极大的性能优势。

Jetson 是一个不断迭代更新的产品,目前已经能够支持智能视频,ROS机器人控制,自动驾驶,智能语音等等领域的应用开发。

在这里插入图片描述

上图是Jetson官网的软件栈介绍,整个软件栈包含了创建模型,优化模型,模型加速,模型部署等创建端到端AI应用的全流程组件,其中JETPACK SDK 主要包含了Jetson硬件上运行的Arm版本linux以及CUDA-X 组件,除此之外的组件可以根据业务类型的不通有选择性的安装。

比如我们想部署一个基于yolov5模型的目标检测类应用,那么我们只需要下载Deepstream组件,使用tensorRT创建yolov5的engine,然后加载进deepstream组件,最后通过创建一个gstreamer的pipeline就可以部署好我们的应用。

下面,我们简单介绍一下上面提到的这些核心组件。

Jetpack SDK

Jetpack SDK 除了提供jetson 运行必须的Arm linux之外,同时也为我们安装了GPU驱动,CUDA,cuDNN,tensorRT,VPI以及其他类型的加速库,安装好jetpack后我们可以使用jtop命令来查看它为我们装了哪些软件。

在这里插入图片描述

基于操作系统以及上述的加速软件库,我们已经完全有能力讲自己的模型加速并部署到jetson上了,但是nvidia的生态已经为我们考虑的更远了,模型的加速,部署除了模型本身之外,还有很多的非模型类的工作,比如摄像头的接入,编解码,图像转换等等,这就要用到接下来讲的,非常重要的Deepstream SDK了。

Deepstream SDK

Deepstream SDK的作用主要是为了IVA(智能视频分析)类应用提供应用层的快速开发部署支持。提到deepstream,就不得不提两个主要的音视频开发框架:ffmpeg以及gstreamer,ffmpeg和gstreamer主要的区别在于如果你使用ffmpeg开发音视频应用,需要关心很多图像转换以及线程优化的问题,而使用gstreamer,你的开发就是利用它的组件串联成pipeline来构建应用,就像搭积木一样。可以说两个开发框架都能完成大部分的音视频任务,但侧重点略有不通。

Deepstream SDK 就是基于gstreamer的一个SDK,简单来说就是提供了一些构建IVA应用的核心组件以及相关API。比如NVENC组件就是可以使用GPU加速的gstreamer组件,nvinfer就是可以使用GPU加速的推理组件,nvosd就是可以使用GPU加速的画框的组件,我们把这些组件按照自己的需要串联起来就可以构建出我们的应用。

Nvidia TAO,ROS, RIVA and Triton

TAO主要的作用是降低模型训练,优化的时间成本,同时也包含了很多nvidia官方以及社区的预训练模型,在做demo级别的产品时可以使用,但在我们自己的开发中很少用到。

ROS是机器人套件,我们可以使用jetson作为ROS的节点来控制机器人,同时由于jetson的AI能力,那么使用jetson制作AI-based应用就非常方便,比如扫地机器人,工业控制机器人等等。

RIVA是语音相关框架,Triton是推理服务部署相关框架,一般在实际应用中很少用到,如果需要可以查看官方的文档。

社区项目

除了提供全流程完备的开发组件,nvidia的jetson社区也有很多优秀的项目,比如目标检测,实例分割,自动寻路,自动驾驶,无人机等等等等,这些项目大多都提供了完整的代码以及说明。参考这些项目,我们可以快速的做出自己的demo甚至产品。

社区地址:Jetson Community Projects | NVIDIA Developer

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/delpanz/article/details/127268919