首页 > 最新资讯 > 深度剖析 | Jetson Nano让AI计算无处不在
深度剖析 | Jetson Nano让AI计算无处不在

深度剖析 | Jetson Nano让AI计算无处不在

2019-05-14 09:00

#人工智能 #深度学习


 

nvidiagtc 2019上发布了jetson nano开发套件,这是一款售价99美元的计算机,可供嵌入式设计人员、研究人员和diy创客们使用,在紧凑、易用的平台上即可实现现代ai的强大功能,并具有完整的软件可编程性。本文将为您详细剖析jetson nano的强大性能和应用。

 

jetson nano采用四核64位arm cpu和128核集成nvidia gpu,可提供472 gflops的计算性能。它还包括4gb lpddr4存储器,采用高效、低功耗封装,具有5w/10w功率模式和5v dc输入,如图1所示。

 

图1. jetson nano开发套件 (80x100mm), 99美元即可获得

 

jetson nano基于配备了图形加速的ubuntu18.04操作系统,全新发布的jetpack 4.2 sdk为其提供了完整的桌面linux环境支持,nvidia cuda 工具包10.0,以及cudnn 7.3和tensorrt等库。该sdk还包括本机安装的常用开源机器学习(ml)框架,如tensorflow、pytorch、caffe、keras和mxnet,以及计算机视觉机器人开发的框架,如opencv和ros。

 

它与这些框架和nvidia领先的ai平台完全兼容,可以轻松地将基于ai的推理工作负载部署到jetson。jetson nano能为各种复杂的深度神经网络(dnn)模型提供实时计算机视觉和推理。这些功能支持多传感器自主机器人,以及具有智能边缘分析的物联网设备和先进的ai系统。开发人员甚至可以通过迁移学习,使用机器学习框架在jetson nano本地重新训练网络。


jetson nano开发套件的体积仅为80x100mm,具有四个高速usb 3.0端口、mipi csi-2摄像头连接器、hdmi 2.0和displayport 1.3、千兆以太网、m.2 key-e模块、microsd卡插槽和40引脚gpio接头。端口和gpio接头开箱即用,配备各种常用的外围设备、传感器和即用型项目,例如nvidia在github上开源的3d可打印深度学习jetbot


该开发套件可由移动的microsd卡启动,能够在任何具有sd卡适配器的pc上进行格式化和成像。它可以通过micro usb端口或5v dc桶形插孔适配器充电,方便快捷。摄像头连接器兼容经济实惠的mipi csi传感器,包括基于jetson生态系统合作伙伴提供的8mp imx219的模块。它还支持raspberry pi camera module v2,其中包括jetpack中的驱动程序支持。表1展现了其关键规格。

 

表1. jetson nano开发套件技术规格

*表示了达到聚合吞吐量的最大并发流数。支持的视频编解码器:h.265,h.264,vp8,vp9(仅限vp9解码) 


该套件围绕一个260引脚的sodimm型系统级模块(som)构建,如图2所示。som包含处理器、内存和电源管理电路。 jetson nano计算模块尺寸为45x70mm,将于2019年6月开始发售,售价129美元(千片批量),供嵌入式设计人员集成到生产系统中。生产计算模块将包括16gb emmc板载存储和增强i/o,以及pcie gen2 x4/x2/x1、mipi dsi,附加gpio和12个mipi csi-2通道,可连接多达三个x4摄像头或最多四个摄像头x4/x2配置中。jetson的统一内存子系统在cpu、gpu和多媒体引擎之间共享,提供简化的zerocopy传感器摄取和高效处理流水线。

 

图2. 45x70mm jetson nano 计算模块配备260引脚边缘连接器

 

深度学习推理基准

 

jetson nano可以运行各种各样的高级网络,包括流行的机器学习框架的完整原生版本,如tensorflow、pytorch、caffe / caffe2、keras和mxnet等。通过实现图像识别、对象检测和定位、姿势估计、语义分割、视频增强和智能分析等强大功能,这些网络可用于构建自主机器和复杂ai系统。


图3显示了在线提供的常用模型的推理基准测试结果。推理使用批量1和fp16精度,采用jetpack 4.2配备的nvidia tensorrt加速器库。jetson nano在许多场景中都具有实时性能,能够处理多个高清视频流。

 

图3. 采用jetson nano和tensorrt的各种深度学习推理网络的性能,使用fp16精度和批量1
 

表2提供了完整的结果,包括其他平台的性能,如raspberry pi 3、intel neural compute stick 2和google edge tpu coral dev board:

 

表2. jetson nano、raspberry pi 3、intel neural compute stick 2和google edge tpu coral dev board的推理性能结果。


由于内存容量有限,网络层不受支持或硬件/软件限制,dnr(未运行)结果频繁发生。固定功能神经网络加速器通常支持相对较窄的一组用例,硬件支持专用层操作,需要网络权重和激活以适应有限的片上高速缓存,以避免重大的数据传输损失。它们可能会回退到主机cpu上以运行硬件中不支持的层,并且可能依赖于支持减少的框架子集的模型编译器(例如,tflite)。

 

jetson nano灵活的软件和完整的框架支持,以及内存容量和统一内存子系统使其能够运行多种不同的网络,达到全高清分辨率,包括同时在多个传感器流上的可变批量大小。这些基准测试代表了常用网络的一些示例,但用户可以通过加速性能为jetson nano部署各种模型和定制架构。而jetson nano不仅限于dnn推理。其cuda架构可用于计算机视觉和数字信号处理(dsp),使用包括fft、blas和lapack操作在内的算法,以及用户定义的cuda内核。

 

多流视频分析

 

jetson nano可实时处理多达8个高清全动态视频流,并可部署在网络视频录像机(nvr)、智能摄像头和物联网网关的低功耗边缘智能视频分析平台中。nvidia的deepstream sdk使用zerocopy和tensorrt来优化端到端的推理管道,以在边缘和本地服务器上实现最佳性能。

 

如下视频显示了jetson nano在8个1080p30流上同时执行物体检测,该过程基于resnet的模型以全分辨率运行,吞吐量为每秒500万像素(mp/s)。

 

<iframe allowfullscreen="" class="video_iframe rich_pages" data-cover="http%3a%2f%2fshp.qpic.cn%2fqqvideo_ori%2f0%2ft08534dc8k7_496_280%2f0" data-ratio="1.7777777777777777" data-vidtype="1" data-w="864" frameborder="0" src="https://v.qq.com/iframe/preview.html?width=500&height=375&auto=0&vid=t08534dc8k7"></iframe>

 

图4显示了使用jetson nano通过深度学习分析在千兆以太网上摄取和处理多达8个数字流的示例nvr架构。该系统可解码500 mp/s的h.264/h.265,并编码250 mp/s的h.264/h.265视频。

 

图4. 使用jetson nano和8x高清摄像头输入的参考nvr系统架构

 

jetbot

 

图5所示的nvidia jetbot是一个新的开源自主机器人套件,它提供了所有软件和硬件,计划以低于250美元的价格构建一个人工智能深度学习机器人。硬件材料包括jetson nano、imx219 800万像素摄像头、3d打印机箱、电池组、电机、i2c电机驱动器和配件。

 

图5. nvidia jetbot是基于jetson nano的开源深度学习自主机器人套件 ,能够以低于$250的价格构建而成

 

该项目通过jupyter笔记本提供简单易学的示例,介绍通过编写python代码来控制电机,训练jetbot检测障碍物,跟踪人和家居用品等物体,并训练jetbot跟踪地板周围的路径。可以通过扩展代码和使用ai框架为jetbot创建新功能。
 
还有可用于jetbot的ros节点,为希望集成基于ros的应用程序,以及slam和高级路径规划等功能的用户提供ros melodic支持。包含jetbot ros节点的github存储库还包括gazebo 3d机器人模拟器的模型,在部署到机器人之前可在虚拟环境中开发和测试新的ai行为。 gazebo模拟器生成合成摄像头数据,并在jetson nano上运行。

 

hello ai world

 

hello ai world提供了一个很好的方式来开始使用jetson并体验ai的强大功能。在短短几个小时内,您就可以使用jetpack sdk和nvidia tensorrt在jetson nano开发套件上进行一系列深度学习推理演示,并进行实时图像分类和对象检测(使用预训练模型)。本教程重点介绍与计算机视觉相关的网络,并包括使用实时摄像头。您还可以使用c++编写自己易于理解的识别程序。可用的深度学习ros节点将这些识别、检测和分段推理功能与ros结合在一起,可以集成到先进的机器人系统和平台中。这些实时推理节点可以轻松地放入现有的ros应用程序中。图6展示了其中一些示例。
 

想要尝试训练自己模型的开发人员可以参照完整的“two days to a demo”教程,该教程涵盖了图像分类、对象检测和带有迁移学习的语义分割模型的重新训练和定制。迁移学习可以精确调整特定数据集的模型权重,并避免必须从头开始训练模型。迁移学习能够在连接nvidia离散gpu的pc或云实例上高效执行,因为训练需要比推理更多的计算资源和时间。

 

访问如下链接进入教程:

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

 

图6. hello ai world和two days to a demo教程帮助用户快速部署用于计算机视觉的深度学习

 

然而,由于jetson nano可以运行tensorflow、pytorch和caffe等完整的训练框架,因此它还能够为那些无法访问另一台专用训练机器,并且愿意为获得结果而等待的人提供迁移学习。表3显示了two days to a demo教程的迁移学习的初步结果,该过程在jetson nano上使用pytorch,在20万图像、22.5gb的 imagenet子集上训练alexnet和resnet-18:

 

表3. 使用jetson nano和迁移学习在imagenet数据集的样本——20万图像/22.5gb子集上重新训练图像分类网络的结果

 

时间戳指的是完成20万图像训练数据集所需的时间。对于可用结果和生产模型,分类网络可能需要2-5个时间戳,并且应该在离散gpu系统上训练以获得更多时间戳,直到它们达到最大准确度。但是,jetson nano可以让网络在一夜之间重新训练,在低成本平台上体验深度学习和人工智能。并非所有自定义数据集都与此处使用的22.5gb示例一样大。因此,图像/秒表示jetson nano的训练性能,此处还包括时间戳缩放与数据集的大小,训练批量大小和网络复杂性。其他型号也可以在jetson nano上重新训练,同时增加训练时间。

 

所有人可用的ai

 

jetson nano的计算性能、紧凑的体积和灵活性为开发人员带来了创建ai驱动设备和嵌入式系统的无限可能性。

 

 

相关新闻