部署深度学习
欢迎使用我们的推理和实时视觉 DNN库 的使用指南,适用于 NVIDIA Jetson 设备。本项目使用 TensorRT 从C++或Python运行在GPU上的优化网络,并使用PyTorch进行模型训练。
支持的DNN视觉原语包括用于图像分类的 imageNet
,用于目标检测的 detectNet
,用于语义分割的 segNet
,用于姿态估计的 poseNet
,以及用于动作识别的 actionNet
。提供了一些示例,用于直播摄像头视频流、制作带有WebRTC的Web应用程序并支持ROS/ROS2。
请参阅 Hello AI World 教程,在您的Jetson设备上运行推理和迁移学习,包括收集您自己的数据集、使用PyTorch训练您自己的模型,并使用TensorRT部署它们。
目录
> 现在JetPack 6支持Orin设备(developer.nvidia.com/jetpack)
> 查看Jetson AI实验室上的生成式AI和LLM教程!
> 查看最新的更新和新功能,请参阅 更新日志。
Hello AI World
Hello AI World可以完全在您的Jetson设备上运行,包括TensorRT的实时推理和PyTorch的迁移学习。有关安装说明,请参阅 系统安装。建议从 推理 部分开始,以熟悉概念,然后再深入到 训练 您自己的模型。
系统安装
推理
训练
- 使用PyTorch进行迁移学习
- 分类/识别(ResNet-18)
- 目标检测(SSD-Mobilenet)
WebApp框架
附录
Jetson AI实验室
Jetson AI实验室 有更多关于LLM、视觉转换器(ViT)和视觉语言模型(VLM)的教程,这些模型能在Orin上运行(某些情况下也能在Xavier上运行)。请查看以下内容:
Live Llava 2.0 - VILA + Jetson Orin上的多模态NanoDB(容器:local_llm)
视频演示
以下是Hello AI World教程的屏幕录制视频,录制用于 Jetson AI认证 课程:
API 参考
以下是仓库中的 C++ 和 Python 库的参考文档链接:
jetson-inference
C++ | Python | |
---|---|---|
图像识别 | imageNet | imageNet |
目标检测 | detectNet | detectNet |
分割 | segNet | segNet |
姿态估计 | poseNet | poseNet |
行为识别 | actionNet | actionNet |
背景移除 | backgroundNet | actionNet |
单眼深度估计 | depthNet | depthNet |
jetson-utils
这些库可以通过链接 libjetson-inference
和 libjetson-utils
来在外部项目中使用。
代码示例
在 Hello AI World 教程的这些步骤中涵盖了使用库的入门代码演练:
更多用于处理图像和实时摄像头流的 C++ 和 Python 示例可以在这里找到:
C++ | Python | |
---|---|---|
图像识别 | imagenet.cpp | imagenet.py |
目标检测 | detectnet.cpp | detectnet.py |
分割 | segnet.cpp | segnet.py |
姿态估计 | posenet.cpp | posenet.py |
行为识别 | actionnet.cpp | actionnet.py |
背景移除 | backgroundnet.cpp | backgroundnet.py |
单眼深度估计 | depthnet.cpp | depthnet.py |
注意: 请参阅 阵列接口 部分,以便与其他 Python 库(如 Numpy, PyTorch 等)使用内存
这些示例将在从源代码构建项目时自动编译,并且能够运行除用户提供的自定义模型外列出的预训练模型。使用 --help
启动每个示例以获取使用信息。
预训练模型
该项目附带了许多可用的预训练模型,将被自动下载:
图像识别
网络 | CLI 参数 | NetworkType 枚举 |
---|---|---|
AlexNet | alexnet | ALEXNET |
GoogleNet | googlenet | GOOGLENET |
GoogleNet-12 | googlenet-12 | GOOGLENET_12 |
ResNet-18 | resnet-18 | RESNET_18 |
ResNet-50 | resnet-50 | RESNET_50 |
ResNet-101 | resnet-101 | RESNET_101 |
ResNet-152 | resnet-152 | RESNET_152 |
VGG-16 | vgg-16 | VGG-16 |
VGG-19 | vgg-19 | VGG-19 |
Inception-v4 | inception-v4 | INCEPTION_V4 |
目标检测
模型 | CLI 参数 | NetworkType 枚举 | 目标类别 |
---|---|---|---|
SSD-Mobilenet-v1 | ssd-mobilenet-v1 | SSD_MOBILENET_V1 | 91 (COCO classes) |
SSD-Mobilenet-v2 | ssd-mobilenet-v2 | SSD_MOBILENET_V2 | 91 (COCO classes) |
SSD-Inception-v2 | ssd-inception-v2 | SSD_INCEPTION_V2 | 91 (COCO classes) |
TAO PeopleNet | peoplenet | PEOPLENET | 人、包、脸 |
TAO PeopleNet (pruned) | peoplenet-pruned | PEOPLENET_PRUNED | 人、包、脸 |
TAO DashCamNet | dashcamnet | DASHCAMNET | 人、车、自行车、标志 |
TAO TrafficCamNet | trafficcamnet | TRAFFICCAMNET | 人、车、自行车、标志 |
TAO FaceDetect | facedetect | FACEDETECT | 脸 |
旧目标检测模型
语义分割
数据集 | 分辨率 | CLI 参数 | 准确率 | Jetson Nano | Jetson Xavier |
---|---|---|---|---|---|
Cityscapes | 512x256 | fcn-resnet18-cityscapes-512x256 | 83.3% | 48 FPS | 480 FPS |
Cityscapes | 1024x512 | fcn-resnet18-cityscapes-1024x512 | 87.3% | 12 FPS | 175 FPS |
Cityscapes | 2048x1024 | fcn-resnet18-cityscapes-2048x1024 | 89.6% | 3 FPS | 47 FPS |
DeepScene | 576x320 | fcn-resnet18-deepscene-576x320 | 96.4% | 26 FPS | 360 FPS |
DeepScene | 864x480 | fcn-resnet18-deepscene-864x480 | 96.9% | 14 FPS | 190 FPS |
Multi-Human | 512x320 | fcn-resnet18-mhp-512x320 | 86.5% | 34 FPS | 370 FPS |
Multi-Human | 640x360 | fcn-resnet18-mhp-512x320 | 87.1% | 23 FPS | 325 FPS |
Pascal VOC | 320x320 | fcn-resnet18-voc-320x320 | 85.9% | 45 FPS | 508 FPS |
Pascal VOC | 512x320 | fcn-resnet18-voc-512x320 | 88.5% | 34 FPS | 375 FPS |
SUN RGB-D | 512x400 | fcn-resnet18-sun-512x400 | 64.3% | 28 FPS | 340 FPS |
SUN RGB-D | 640x512 | fcn-resnet18-sun-640x512 | 65.1% | 17 FPS | 224 FPS |
- 如果 CLI 参数省略分辨率,则会加载最低分辨率的模型
- 准确率表示模型在验证数据集上的像素分类准确率
- 性能在 GPU FP16 模式下测量,JetPack 4.2.1,
nvpmodel 0
(MAX-N 模式)
旧版分割模型
网络 | CLI 参数 | NetworkType 枚举 | 类别 |
---|---|---|---|
Cityscapes (2048x2048) | fcn-alexnet-cityscapes-hd | FCN_ALEXNET_CITYSCAPES_HD | 21 |
Cityscapes (1024x1024) | fcn-alexnet-cityscapes-sd | FCN_ALEXNET_CITYSCAPES_SD | 21 |
Pascal VOC (500x356) | fcn-alexnet-pascal-voc | FCN_ALEXNET_PASCAL_VOC | 21 |
Synthia (CVPR16) | fcn-alexnet-synthia-cvpr | FCN_ALEXNET_SYNTHIA_CVPR | 14 |
Synthia (Summer-HD) | fcn-alexnet-synthia-summer-hd | FCN_ALEXNET_SYNTHIA_SUMMER_HD | 14 |
Synthia (Summer-SD) | fcn-alexnet-synthia-summer-sd | FCN_ALEXNET_SYNTHIA_SUMMER_SD | 14 |
Aerial-FPV (1280x720) | fcn-alexnet-aerial-fpv-720p | FCN_ALEXNET_AERIAL_FPV_720p | 2 |
姿势估计
模型 | CLI 参数 | NetworkType 枚举 | 关键点 |
---|---|---|---|
Pose-ResNet18-Body | resnet18-body | RESNET18_BODY | 18 |
Pose-ResNet18-Hand | resnet18-hand | RESNET18_HAND | 21 |
Pose-DenseNet121-Body | densenet121-body | DENSENET121_BODY | 18 |
动作识别
模型 | CLI 参数 | 类别 |
---|---|---|
Action-ResNet18-Kinetics | resnet18 | 1040 |
Action-ResNet34-Kinetics | resnet34 | 1040 |
推荐系统需求
- Jetson Nano 开发者套件,搭载 JetPack 4.2 或更新版本 (Ubuntu 18.04 aarch64)。
- Jetson Nano 2GB 开发者套件,搭载 JetPack 4.4.1 或更新版本 (Ubuntu 18.04 aarch64)。
- Jetson Orin Nano 开发者套件,搭载 JetPack 5.0 或更新版本 (Ubuntu 20.04 aarch64)。
- Jetson Xavier NX 开发者套件,搭载 JetPack 4.4 或更新版本 (Ubuntu 18.04 aarch64)。
- Jetson AGX Xavier 开发者套件,搭载 JetPack 4.0 或更新版本 (Ubuntu 18.04 aarch64)。
- Jetson AGX Orin 开发者套件,搭载 JetPack 5.0 或更新版本 (Ubuntu 20.04 aarch64)。
- Jetson TX2 开发者套件,搭载 JetPack 3.0 或更新版本 (Ubuntu 16.04 aarch64)。
- Jetson TX1 开发者套件,搭载 JetPack 2.3 或更新版本 (Ubuntu 16.04 aarch64)。
教程的 使用 PyTorch 进行迁移学习 部分是从在 Jetson 上运行 PyTorch 进行 DNN 训练的角度讲的,然而相同的 PyTorch 代码也可以在带有 NVIDIA 独立 GPU 的 PC、服务器或云实例上使用,以更快地进行训练。
额外资源
在这里列出了深度学习的链接和资源:
- ros_deep_learning - TensorRT 推理的 ROS 节点
- NVIDIA AI IoT - NVIDIA Jetson 的 GitHub 仓库
- Jetson eLinux Wiki - Jetson 的 eLinux Wiki
两天内实现一次演示(DIGITS)
注意: 下面的 DIGITS/Caffe 教程已被弃用。推荐遵循 Hello AI World 的 使用 PyTorch 进行迁移学习 教程。
展开此部分以查看原始 DIGITS 教程(已弃用)
DIGITS 教程包括在云或 PC 上训练 DNN,并在 Jetson 上使用 TensorRT 推理,根据系统设置、数据集下载和 GPU 训练速度,可能需要大约两天或更多时间。
© 2016-2019 NVIDIA | 目录