Technical Walkthrough

Jetson Nano 将 AI 计算带给每个人

 

更新: Jetson Nano 和 JetBot 网络研讨会 我们对 Jetson Nano 和 JetBot 非常感兴趣,因此我们将举办两次网络研讨会来讨论这些主题。 Jetson Nano 网络研讨会讨论了如何实现机器学习框架、在 Ubuntu 中开发、运行基准测试以及集成传感器。 注册 Jetson 纳米网络研讨会。 Jetbot 网络研讨会提供了 Python GPIO 库教程和关于如何使用 Jetbot 训练神经网络和执行实时对象检测的信息。 注册参加 JetBot 网络研讨会。 这两个网络研讨会大约有一个小时长,最后都有一个问答环节。

Jetson Nano Developer Kit image
图 1 。 Jetson 纳米显影剂套件( 80×100 毫米),现售价 99 美元

GPU 在 2019 年 NVIDIA NVIDIA 技术会议( GTC )上宣布推出了 Jetson Nano 开发者套件 ,这是一款售价 99 美元的计算机,目前可供嵌入式设计师、研究人员和 DIY 制造商使用,在一个紧凑、易于使用的平台上实现了现代人工智能的强大功能,具有完全的软件可编程性。 Jetson Nano 通过一个四核 64 位 ARMCPU 和一个 128 核集成的 NVIDIA GPU ,提供 472 GFLOPS 的计算性能。它还包括 4GB LPDDR4 内存在一个高效的低功耗封装中,具有 5W / 10W 电源模式和 5V 直流输入,如图 1 所示。

最新发布的 JetPack 4 . 2 SDK 开发包 为基于 Ubuntu 18 . 04 的 Jetson Nano 提供了一个完整的桌面 Linux 环境,支持加速的图形,支持 NVIDIA CUDA toolk10 . 0 ,以及 cuDNN 7 . 3 和 TensorRT 5 等库。 SDK 还包括在本地安装流行的开源机器学习( ML )框架,如 TensorFlow , PyTorch 、 Caffe 、 Keras 和 MXNet ,以及 OpenCV 和 ROS 等计算机视觉和机器人开发框架。

与这些框架和 NVIDIA 领先的人工智能平台完全兼容,使得将基于人工智能的推理工作负载部署到 Jetson 上比以往任何时候都容易。 Jetson Nano 为各种复杂的深层神经网络( DNN )模型带来了实时计算机视觉和推理。这些功能使多传感器自主机器人、具有智能边缘分析的物联网设备和先进的人工智能系统成为可能。甚至传输学习也可以使用 ML 框架在 Jetson Nano 上重新训练网络。

Jetson Nano 开发套件的尺寸仅为 80×100 毫米,具有四个高速 USB 3 . 0 端口、 MIPI CSI-2 摄像头接口、 HDMI 2 . 0 和 DisplayPort 1 . 3 、千兆以太网、 M . 2 Key-E 模块、 MicroSD 卡插槽和 40 针 GPIO 头。端口和 GPIO 头可以与各种流行的外围设备、传感器和现成的项目一起使用,例如 NVIDIA 在 GitHub 上开源的 3D 可打印深度学习 喷气式飞机。

devkit 从一个可移动 MicroSD 卡启动,该卡可以在任何带有 SD 卡适配器的 PC 上格式化和成像。 devkit 可以方便地通过 Micro-USB 端口或 5V 直流桶形插孔适配器供电。摄像头连接器与价格合理的 MIPI CSI 传感器兼容,包括基于 8MP IMX219 的模块,可从 Jetson 生态系统合作伙伴处获得。同时支持的还有 Raspberry Pi 摄像头模块 v2 ,它包括 JetPack 中的驱动程序支持。主要规格见表 1 。

Table 1. Jetson Nano Developer Kit technical specifications.
*Indicates maximum number of concurrent streams up to the aggregate throughput.
Supported video codecs: H.265, H.264, VP8, VP9 (VP9 decode only)
Processing  
CPU 64-bit Quad-core ARM A57 @ 1.43GHz
GPU 128-core NVIDIA Maxwell @ 921MHz
Memory 4GB 64-bit LPDDR4 @ 1600MHz | 25.6 GB/s
Video Encoder* 4Kp30 | (4x) 1080p30 | (2x) 1080p60
Video Decoder* 4Kp60 | (2x) 4Kp30 | (8x) 1080p30 | (4x) 1080p60
Interfaces  
USB 4x USB 3.0 A (Host) | USB 2.0 Micro B (Device)
Camera MIPI CSI-2 x2 (15-position Flex Connector)
Display HDMI | DisplayPort
Networking Gigabit Ethernet (RJ45)
Wireless M.2 Key-E with PCIe x1
Storage MicroSD card (16GB UHS-1 recommended minimum)
Other I/O (3x) I2C | (2x) SPI | UART | I2S | GPIOs

devkit 是围绕一个 260 针 SODIMM 风格的系统 on Module ( SoM )构建的,如图 2 所示。 SoM 包含处理器、内存和电源管理电路。 Jetson 纳米计算模块尺寸为 45x70mm ,将于 2019 年 6 月开始发货,售价 129 美元( 1000 单位体积),供嵌入式设计师集成到生产系统中。生产计算模块将包括 16GB eMMC 板载存储和增强 I / O , PCIe Gen2 x4 / x2 / x1 、 MIPI DSI 、附加 GPIO 和 12 通道 MIPI CSI-2 在 x4 / x2 配置中,最多可连接三个 x4 摄像头或四个摄像头。 Jetson 的统一内存子系统在 CPU 、 GPU 和多媒体引擎之间共享,提供了流线型的零拷贝传感器摄取和高效的处理管道。

Jetson Nano Compute Module image
图 2 。 45x70mmJetson 纳米计算模块,带 260 针边缘连接器

深度学习推理基准

Jetson Nano 可以运行多种高级网络,包括流行 ML 框架的完整本机版本,如 TensorFlow 、 PyTorch 、 Caffe / Caffe2 、 Keras 、 MXNet 等。这些网络可用于构建自主机器和复杂的人工智能系统,实现强大的功能,如图像识别、目标检测和定位、姿势估计、语义分割、视频增强和智能分析。

图 3 显示了来自在线可用的流行模型的推理基准测试的结果。有关在您的 Jetson Nano 上运行这些基准测试的说明,请参见 在这里 。该推断使用批次大小 1 和 FP16 精度,使用了 Jetpack4 . 2 中包含的 NVIDIA 的 TensorRT 加速器库。 Jetson Nano 在许多场景下都能达到实时性能,并且能够处理多个高清视频流。

Jetson Nano deep learning inference performance chart
图 3 。使用 Jetson Nano 和 TensorRT ,使用 FP16 精度和批量大小 1 的各种深度学习推理网络的性能

表 2 提供了完整的结果,包括 Raspberry Pi3 、 Intel Neural Compute Stick 2 和 Google Edge TPU Coral Dev Board 等其他平台的性能:

Table 2. Inference performance results from Jetson Nano, Raspberry Pi 3, Intel Neural Compute Stick 2, and Google Edge TPU Coral Dev Board
Model Application Framework NVIDIA Jetson Nano Raspberry Pi 3 Raspberry Pi 3 + Intel Neural Compute Stick 2 Google Edge TPU Dev Board
ResNet-50
(224×224)
Classification TensorFlow 36 FPS 1.4 FPS 16 FPS DNR
MobileNet-v2
(300×300)
Classification TensorFlow 64 FPS 2.5 FPS 30 FPS 130 FPS
SSD ResNet-18 (960×544) Object Detection TensorFlow 5 FPS DNR DNR DNR
SSD ResNet-18 (480×272) Object Detection TensorFlow 16 FPS DNR DNR DNR
SSD ResNet-18 (300×300) Object Detection TensorFlow 18 FPS DNR DNR DNR
SSD Mobilenet-V2 (960×544) Object
Detection
TensorFlow 8 FPS DNR 1.8 FPS DNR
SSD Mobilenet-V2 (480×272) Object Detection TensorFlow 27 FPS DNR 7 FPS DNR
SSD Mobilenet-V2

 

(300×300)

Object Detection TensorFlow 39 FPS 1 FPS 11 FPS 48 FPS
Inception V4

 

(299×299)

Classification PyTorch 11 FPS DNR DNR 9 FPS
Tiny YOLO V3

 

(416×416)

Object Detection Darknet 25 FPS 0.5 FPS DNR DNR
OpenPose

 

(256×256)

Pose Estimation Caffe 14 FPS DNR 5 FPS DNR
VGG-19 (224×224) Classification MXNet 10 FPS 0.5 FPS 5 FPS DNR
Super Resolution (481×321) Image Processing PyTorch 15 FPS DNR 0.6 FPS DNR
Unet

 

(1x512x512)

Segmentation Caffe 18 FPS DNR 5 FPS DNR

由于内存容量有限、不受支持的网络层或硬件/软件限制,经常出现 DNR (未运行)结果。固定函数神经网络加速器通常支持相对狭窄的用例集,硬件支持专用层操作,网络权重和激活需要适应有限的片上缓存,以避免严重的数据传输损失。它们可以依靠主机 CPU 来运行硬件不支持的层,并且可能依赖于支持框架的简化子集的模型编译器(例如 TFLite )。

Jetson Nano 灵活的软件和完整的框架支持、内存容量和统一的内存子系统,使其能够运行各种不同的网络,达到全高清分辨率,包括同时在多个传感器流上运行可变的批量大小。这些基准测试代表了流行网络的一个样本,但是用户可以在 Jetson Nano 上部署各种模型和定制架构,从而提高性能。而且 Jetson Nano 不仅仅局限于 DNN 推断。它的 CUDA 体系结构可用于计算机视觉和数字信号处理( DSP ),使用包括 FFT 、 BLAS 和 LAPACK 运算在内的算法,以及用户定义的 CUDA 内核。

多流视频分析

Jetson Nano 可实时处理多达 8 个高清全动态视频流,可作为网络视频录像机( NVR )、智能摄像头和物联网网关的低功耗边缘智能视频分析平台进行部署。 NVIDIA 的 DeepStream 软件开发工具包 使用 ZeroCopy 和 TensorRT 优化端到端推断管道,以在边缘和本地服务器上实现最终性能。下面的视频显示 Jetson Nano 在 8 个 1080p30 流上同时执行目标检测,基于 ResNet 的模型以全分辨率运行,吞吐量为每秒 5 亿像素( MP / s )。

基于 ResNet 在 Jetson Nano 上运行的 DeepStream 应用程序
在八个独立的 1080p30 视频流上并发的目标检测器。

图 4 中的框图显示了一个使用 Jetson Nano 的 NVR 架构示例,该架构使用深度学习分析技术,通过千兆以太网接收和处理多达 8 个数字流。该系统可以解码 500mp / s 的 H . 264 / H . 265 视频和 250mp / s 的 H . 264 / H . 265 视频。

Jetson Nano NVR Block Diagram
图 4 。具有 Jetson 纳米和 8x 高清摄像头输入的参考 NVR 系统架构

Jetson Nano 的 DeepStream SDK 支持计划于 2019 年第 2 季度发布。请加入 DeepStream 开发者计划 以接收有关即将发布的通知。

喷气式飞机。

图 5 中所示的 NVIDIA 喷气式飞机。 是一个新的开源自主机器人工具包,它提供了所有的软件和硬件计划,以低于 250 美元的价格构建一个人工智能驱动的深度学习机器人。硬件材料包括 Jetson Nano 、 IMX219 8MP 摄像头、 3D 打印机箱、电池组、电机、 I2C 电机驱动器和配件。

JetBot image
图 5 。 NVIDIA JetBot 基于 Jetson Nano 的开源深度学习自主机器人套件,售价不到 250 美元

该项目通过 Jupyter 笔记本为您提供了简单易学的示例,介绍了如何编写 Python 代码来控制电机,如何训练 JetBot 来检测障碍物,如何跟踪人和家庭对象等对象,以及如何训练 JetBot 跟踪地板周围的路径。通过扩展代码和使用 AI 框架,可以为 JetBot 创建新的功能。

还有 ROS 节点 可用于 JetBot ,为那些希望集成基于 ROS 的应用程序和功能(如 SLAM 和高级路径规划)的用户提供 ROS Melodic 支持。包含 JetBot ROS 节点的 GitHub 存储库还包括 Gazebo 3D 机器人模拟器的模型,允许在虚拟环境中开发和测试新的 AI 行为,然后再部署到机器人上。 Gazebo 模拟器生成合成相机数据,并在 Jetson 纳米上运行。

你好,人工智能世界

你好,人工智能世界 为开始使用 TensorRT 和体验人工智能的力量提供了一个很好的方法。只需几个小时,您就可以在带有 JetPack SDK 和 NVIDIA NVIDIA 的 Jetson Nano Developer Kit 上建立并运行一组用于实时图像分类和对象检测的深度学习推理演示。本教程侧重于与计算机视觉相关的网络,并包括实时摄像机的使用。你还可以在 C ++中编写自己易于理解的识别程序。可用的 深度学习 ROS 节点 将这些识别、检测和分段推断功能与 ROS 公司 集成,以集成到先进的机器人系统和平台中。这些实时推断节点可以很容易地放入现有的 ROS 应用程序中。图 6 突出了一些示例。

Demo tutorial output images
图 6 。你好,人工智能世界和两天的演示教程,让用户快速建立和运行与部署深入学习的计算机视觉

想要尝试训练自己模型的开发人员可以按照完整的“ 还有两天就要演示了 ”教程进行,该教程涵盖了图像分类、对象检测和语义分割模型的再培训和定制,并使用转移学习。传输学习微调特定数据集的模型权重,避免了从头训练模型。传输学习最有效地在带有 NVIDIA 离散 GPU 的 PC 或云实例上执行,因为培训需要比推断更多的计算资源和时间。

然而,由于 Jetson Nano 可以运行完整的培训框架,如 TensorFlow 、 PyTorch 和 Caffe ,它还可以通过转移学习为那些可能无法访问另一台专用培训机器并愿意等待更长时间等待结果的人进行再培训。表 3 列出了将两天的学习转移到演示教程中的一些初步结果,其中 PyTorch 使用 Jetson Nano 在 20 万张图像上训练 Alexnet 和 ResNet-18 , ImageNet 的 22 . 5GB 子集:

Table 3. Results from re-training image classification networks on a sample 200K image / 22.5GB subset of the ImageNet dataset with Jetson Nano and transfer learning
Network Batch Size Time per Epoch Images/sec
AlexNet 64 1.16 hours 45
ResNet-18 64 3.22 hours 16

每个历元的时间是完全通过 200K 图像的训练数据集所需的时间。分类网络可能只需要 2-5 个周期就可以得到可用的结果,生产模型应该在离散 GPU 系统上为更多的时代进行训练,直到它们达到最大的精度。然而, Jetson Nano 可以让你在一个低成本的平台上进行深度学习和人工智能的实验,让网络在一夜之间重新训练。并非所有的自定义数据集都可能像这里使用的 22 . 5GB 示例那样大。因此,图像/秒表示 Jetson Nano 的训练性能,每历元时间随数据集大小、训练批大小和网络复杂性而变化。随着训练时间的增加,其他模型也可以在 Jetson Nano 上重新训练。

所有人的 AIJetson Nano isometric

Jetson Nano 的计算性能、紧凑的占地面积和灵活性为开发人员创造以人工智能为动力的设备和嵌入式系统带来了无限的可能性。今天就开始使用 Jetson 纳米开发工具包,只需 99 美元,它将通过我们的 全球主要经销商 销售,也可以从制造商渠道 Seeed 工作室Spark 功能 购买。请访问我们的 嵌入式开发区 下载软件和文档,并浏览 Jetson Nano 的 开源项目 。加入 Jetson DevTalk 论坛 上的社区寻求支持,并确保分享您的项目。我们期待看到你创造的!