首页 > 最新资讯 > 初识Jetson Nano:小套件大潜能
初识Jetson Nano:小套件大潜能

初识Jetson Nano:小套件大潜能

2019-05-17 09:00

#深度学习


(作者授权文章发布) 作者顾海燕,网名gpus lady, gpu世界总编辑。常年活跃在gpu世界技术社区回答关于cuda编程和基于nvidia jetson嵌入式产品技术问题。

 

人类对计算性能的需求是永无止境的!任何与智能计算相关的应用,包括智慧城市、智慧工业、智慧驾驶、智慧零售、物联网等,无一不与数据、算法、计算性能三者息息相关。每种应用的落地都伴随大量数据的产生,如此巨大的数据,必须透过算法分析与足够强大的计算性能,才能在要求的时间之内提取有效信息、产生价值,因此伴随人工智能的发展,新应用对计算密度的需求会更高。

 

nvidia人工智能技术正在掀起一波行业应用的革命:从最强悍的dgx超级计算系列产品与tesla专业计算卡,协助数据中心能够提供百万用户级别的云计算服务;drive自动驾驶平台为汽车工业提供自动驾驶能力,并且性能逐年提高;jetson高性能低功耗嵌入式平台,实现将人工智能应用部署到边缘计算设备,彻底改变从制造业、服务业到机器人等各种行业的格局。

 

随着更多应用场景参与,人们希望将更多应用植入一个体积更小、功耗更低、成本更适合、同时还能满足完整人工智能系统所需的设备中,要求它能够实时处理来自更高分辨率传感器的数据、运行多个神经网络的推理功能,支持不断的软件升级,并且能任意添加与更新ai网络和框架的支持等。

 

但一直以来,计算设备在体积、功耗与性能三者之间,总存在着不小的冲突问题,导致市场上始终缺乏“杀手级”的合适平台,这是整个芯片产业都在致力克服的重大挑战,也导致中下游的应用产业受到很大的局限。

 

令人兴奋的是,在nvidia gtc 2019大会上,发布jetson家族最新成员--nano开发套件,一举为这个长期困扰全球高科技的难题,在成本、功耗、体积这三方面做出惊人的突破,提供立即见效的解决方案,瞬间在人工智能与边缘计算行业内引爆一股风潮。

 

除此之外,还有两件您绝对不可忽视的重点,就是”架构通用性“与”配套软件开发环境“这两个重要环节。尽管市场上总有些优异的芯片企业发布一些很有特色的特定用途处理器,但如果芯片架构只适合某些特定用途的话,其实用性就大打折扣。其次,如果这类芯片缺乏足够积累的基础库、配套软件生态与技术支持资源的话,则开发周期会拖得很长。

 

nvidia jetson nano是个通用性极高的嵌入式高性能设备,适合绝大多数应用场景,并且基于nvidia的cuda统一架构,整个开发生态已积累10年以上的资源与经验,您可以按照最后面提供的范例在jetson nano上轻松执行,体验一下nvidia开发资源的便利性,以及jetson nano的优异性能。当然,开发人员也能改写这些范例代码,轻松开发出合适的应用,立即展现成果。

 

小套件大潜能

 

 

过去“创客运动(maker movement)“大部分是由raspberry pi/arduino/smt32这类低成本计算设备促成的,虽然推动了嵌入式开发者社区的快速增长,但这类设备只能让开发者开发机电控制、信号分析相关的简单应用,或者执行非常简单的图像识别功能,还不足以跨入真正的人工智能领域。

 

具备足以执行人工智能应用的计算设备,其价格总是居高不下(数千元人民币),让很多想将项目融入人工智能应用的制造商举棋不定,也导致不少想从事人工智能应用开发的技术人踌躇不前,整个产业发展速度都不如早年的预测。可以看得出来,成本问题对智能产业的发展,是个很重要的关键因素。

 

这里第一个好消息,就是nvidia这次发布的jetson nano套件的标准零售价,只需要899人民币/含税(美国本土零售价为99美元),不仅对学习用途、diy创意玩家、应用开发人员等,是个非常亲民的价格,对于有量产能力的设备制造商而言,也是性价比相当具有诱惑力的成本。

 

 

jetson nano 主要面向边缘计算应用场景,并具备构建低成本人工智能应用程序和项目所需的所有功能。丰富的数据传输接口,从gpio到csi,开发人员可以很容易地连接不同的传感器,以支持各种ai应用程序。

 

nano开发板配置4个usb 3.0标准接口,dc电源后方还有个独立安装csi摄像头的接口,对于标准应用场景(安装键鼠套件+无线网卡+1~2个usb摄像头)来说非常够用了。另外一个usb 2.0 micro b型接口,除可以作为5v/2a电源输入之外,在透过上位机(host)执行jetpack 4.2(又名 sdk manager)在nano上进行开发环境(cudnn、opencv、visionworks、multimedia api、tensorrt)安装时,是个必要的通讯接口。

 

还有一个令人十分激赏的设计,就是提供两个(1个hdmi 2.1与1个edp 1.4)4k显示输出口,立即就能接起两个4k质量的显示器,十分方便。

 

其它还有兼容于树莓派摄像头的mipi csi-2 dphy lanes接口、安装网卡的m.2 key e以及gpio, i 2 c, i 2 s, spi, uart这些通讯接口,十分完整,本处不多加赘述。

 

 

jetson nano载板背面,非常清楚地标示出产品序列号(中间上方)、gpio管脚名(j41,左边黄色框,40个接口)、模式管脚名(j40,左上方,4组跳线接口)、电源的电压电流标示(左下角与右下角)。

 

 

jetson nano、树莓派和coral 开发板

 

 

人工智能计算正在快速发展,科研人员不断地发明新的神经网络结构,为特定任务提供更好的准确性和性能。神经网络设计也有一个普遍的趋势,即规模越来越大、层次越来越深。更大更深的神经网络需要更多的计算能力和内存,jetson nano高达472 gflops (fp16)的人工智能计算性能与4gb的dram内存,能同时运行多个神经网络,并且为处理多个高分辨率传感器的数据,提供所需的性能、内存和能耗比。

 

 

nvidia jetson nano 和 raspberry pi 3 b+

 

 

提到人工智能,又不能不提到google在3月份作为beta产品推出的coral 开发板。依赖于用于人工智能计算的asic芯片,coral开发板目前只支持一个人工智能框架,其性能只针对少数低复杂度的神经模型进行了优化。相比之下,jetson nano清晰地提供了下一代低成本人工智能应用程序所需的性能、灵活性和功能,加上nvidia人工智能平台的加持,包含软件、框架、库和工具包,jetson nano的优势不言而喻。

 

 

nvidia jetson nano 和 google coral

 

 

jetson nano的开发

 

 

从jetson tx2到jetson agx xavier,再到jetson nano,jetson 解决方案均由同一软件堆栈提供支持,可让公司进行一次开发,即可在任意位置部署。jetson平台由jetpack sdk 提供支持,包括板级支持包 (bsp)、linux 操作系统、nvidia cuda,并且兼容第三方平台。jetpack 可提供用于深度学习、计算机视觉、加速计算和多媒体的库,而且支持各类传感器的驱动程序。 nvidia 还为 jetpack 提供了可以加快开发过程的大量开发者工具,而且提供了有关应用和系统功率和性能的详细信息,因此,有助于开发者快速优化和调整代码。

 

jetpack还包括加速库和api :

 

  • 深度学习:tensorrt和cudnn

  • 计算机视觉:opencv和visionworks

  • 加速计算:gpu库,如cublas(用于线性代数)和cufft(用于傅里叶变换)等

  • 计算机图形:完整的桌面opengl 4.6、opengl es 3.2和vulkan 1.1

  • 多媒体:相机开发用libargus,视频管理用视频api

 

目前jetpack的安装是非常方便的,在jetson nano上用户只需要自己准备一个micro sd卡,就可以按照nvidia的官方教程来安装系统。

 

 

jetson nano支持的深度学习框架

 

 

nvidia花了十年时间一直在建立和推动人工智能平台旨在帮助工程师和数据科学家训练、优化和部署神经网络。

 

工程师和数据科学家喜欢为不同的应用程序使用不同的框架。目前我们测试的结果来看,jetson nano支持目前很流行的深度学习框架,包括tensorflow、pytorch、mxnet、keras和caffe。注意nvidia开源机器人jetbot项目使用的就是tensorflow。

 

在jetson nano上,用户可以搭配nvidia tensorrt推理引擎、混合精度的优化,轻易地把推理性能再往上推升数倍。搭配nvidia支持caffe、tensorflow、torch的digits深度学习服务器,用户可以非常轻松地将自己(或别人)训练好的特定模型,轻松移植到jetson nano去执行专属的应用,这有机会让开发人员减少70%的研发时间。

 

利用jetson nano轻松开发自己的ai项目

 

 

在nvidia jetson以往开发平台(tx1/tx2/xavier)上,已经有成千上百的开源项目,都能直接移植到jetson nano上,我们也测试了不少项目给大家做示范:

 

1、nvidia deepstream

 

nvidia deepstream sdk是nvidia为正在创建和部署基于ai的大规模视频分析应用程序的开发者们而专门提供的工具包。它提供了完整的框架和所有基本的构建块,它可以让开发者专注于自己的核心深度学习网络和ip,而不是从头开始设计端到端解决方案。开发人员可以利用多个神经网络来处理每个视频流,引入不同的深度学习技术,以交付更智能的应用场景。

 

 

注意,我们测试的是deepstream 3.0 for jetson nano(还未正式发布),必须接上一个1080p显示器,可以看到jetson nano能够实时处理多达8个高清全动态视频流,无疑是一个低功耗的智能视频分析平台。

 

2、nvidia visionworks

 

nvidia visionworks toolkit是一个用于计算机视觉(cv)和图像处理的软件开发包。visionworks™实现并扩展了khronos openvx标准,并针对支持cuda的gpu和soc进行了优化,使开发人员能够在可伸缩和灵活的平台上实现cv应用程序。

 

同样我们可以在nano上运行visionworks里面的范例:

 

  • 特征追踪演示:执行 ./nvx_demo_eature_tracker

 

  • hough转换演示:执行 ./nvx_demo_hough_transform

 

  • 视频防抖动处理:执行 ./nvx_demo_video_stabilizer

 

  • 运动方向预测:执行 ./nvx_demo_motion_estimation

 

 

3、深度学习应用

 

这里以nvidia tensorrt 5.0 推理引擎为主,參考https://github.com/nvidia-ai-iot/deepstream_reference_apps范例

 

  • 前置作业:下载四个文档,并存放对应目录下(/usr/src/tensorrt/data/googlenet)

 

  • 用tensorrt执行resent 50_224x224模型

 

▫ cd /usr/src/tensorrt/bin

 

▫./trtexec --output=prob --deploy=../data/googlenet/resnet50_224x224.prototxt --fp16 --batch=1

 

 

上图时5w模式、下图是在10w模式,有将近40%性能差异

 

 

您可自行调整 batch 参数,看得到怎样的性能变化。

 

以上的 sample 能让您轻松上手,体验 jetson nano 开发套件的易用与性能。

 

结语

 

 

诚如开头所说的,全球高科技产业一直面对最严峻的挑战之一,就是要在计算性能、体积、功耗与成本这四者之间取得最佳平衡点,而nvidia jetson nano克服了这项困难。除此之外,在接口设计的人性化程度,以及配套开发生态的完整性,结合这三者于一体的jetson nano,能协助您瞬间解决过去一直困扰的问题,为您的人工智能、边缘计算重新打开一条坦荡大道。

相关新闻