欢迎使用我们的教学指南,了解NVIDIA Jetson Nano/TX1/TX2/Xavier NX/AGX Xavier的推理和实时DNN视觉库]

此 repo 使用 NVIDIA TensorRT 将神经网络有效地部署到嵌入式 Jetson 平台上,通过图形优化、内核融合和 FP16/INT8 精度提高性能和电源效率。

视觉原语,如用于图像识别的 imageNet、用于目标检测的detectNet和用于语义分割的segNet,都继承自共享的tensorNet对象。提供了从实时相机馈送流和处理图像的示例。有关C++和Python库的详细参考文档,请参见API参考部分。

遵循Hello AI World教程在Jetson上运行推理和转移学习,包括收集自己的数据集和训练自己的模型。它包括图像分类、目标检测和分割。

Jetson Nano 2GB and JetPack 4.5 is now supported in the repo.
Try the new Re-training SSD-Mobilenet object detection tutorial!
See the Change Log for the latest updates and new features.

1. Hello AI World

Hello AI World可以完全在您的Jetson上运行,包括使用TensorRT进行推理和使用PyTorch进行转移学习。Hello AI世界的推理部分包括编码自己的图像分类和Python或C++的对象检测应用程序和实时摄像机演示程序,可以在JeSon上运行大约两个小时或更少,而传递学习最好是留着运行一夜。

1.1 系统安装

1.2 推理

1.3 训练

1.4 附录

2. 视频演练

以下是为Jetson AI认证课程录制的Hello AI World的屏幕截图:(原网站图像无法下载,可惜了。)

DescriptionVideo
Hello AI World Setup Download and run the Hello AI World container on Jetson Nano, test your camera feed, and see how to stream it over the network via RTP.
Image Classification Inference Code your own Python program for image classification using Jetson Nano and deep learning, then experiment with realtime classification on a live camera stream.
Training Image Classification Models Learn how to train image classification models with PyTorch onboard Jetson Nano, and collect your own classification datasets to create custom models.
Object Detection Inference Code your own Python program for object detection using Jetson Nano and deep learning, then experiment with realtime detection on a live camera stream.
Training Object Detection Models Learn how to train object detection models with PyTorch onboard Jetson Nano, and collect your own detection datasets to create custom models.
Semantic Segmentation Experiment with fully-convolutional semantic segmentation networks on Jetson Nano, and run realtime segmentation on a live camera stream.

3. API 参考

下面是 repo 中的 C++ 和 Python 库的参考文档。

jetson-inference

任务类型C++Python
Image RecognitionimageNetimageNet
Object DetectiondetectNetdetectNet
SegmentationsegNetsegNet

jetson-utils

通过链接到libjetson-inferencelibjetson-utils,这些库可以在外部项目中使用。

4. 代码示例

在Hello AI World教程的以下步骤中介绍了使用库的介绍性代码演练:

在静态图像和实时摄像机流中运行网络的附加C++和Python示例可以在这里找到(注意:下面表格的链接地址与上面的表格不一样):

任务类型C++Python
Image Recognitionimagenet.cppimagenet.py
Object Detectiondetectnet.cppdetectnet.py
Segmentationsegnet.cppsegnet.py

注意:有关使用numpy数组的信息,请参见转换为numpy数组从numpy数组转换

5. 预训练模型

该项目附带了许多经过预培训的模型,这些模型可通过模型下载工具获得:

图像识别

NetworkCLI argumentNetworkType enum
AlexNetalexnetALEXNET
GoogleNetgooglenetGOOGLENET
GoogleNet-12googlenet-12GOOGLENET_12
ResNet-18resnet-18RESNET_18
ResNet-50resnet-50RESNET_50
ResNet-101resnet-101RESNET_101
ResNet-152resnet-152RESNET_152
VGG-16vgg-16VGG-16
VGG-19vgg-19VGG-19
Inception-v4inception-v4INCEPTION_V4

目标检测

NetworkCLI argumentNetworkType enumObject classes
SSD-Mobilenet-v1ssd-mobilenet-v1SSD_MOBILENET_V191 (COCO classes)
SSD-Mobilenet-v2ssd-mobilenet-v2SSD_MOBILENET_V291 (COCO classes)
SSD-Inception-v2ssd-inception-v2SSD_INCEPTION_V291 (COCO classes)
DetectNet-COCO-Dogcoco-dogCOCO_DOGdogs
DetectNet-COCO-Bottlecoco-bottleCOCO_BOTTLEbottles
DetectNet-COCO-Chaircoco-chairCOCO_CHAIRchairs
DetectNet-COCO-Airplanecoco-airplaneCOCO_AIRPLANEairplanes
ped-100pednetPEDNETpedestrians
multiped-500multipedPEDNET_MULTIpedestrians, luggage
facenet-120facenetFACENETfaces

语义分割

DatasetResolutionCLI ArgumentAccuracyJetson NanoJetson Xavier
Cityscapes512x256fcn-resnet18-cityscapes-512x25683.3%48 FPS480 FPS
Cityscapes1024x512fcn-resnet18-cityscapes-1024x51287.3%12 FPS175 FPS
Cityscapes2048x1024fcn-resnet18-cityscapes-2048x102489.6%3 FPS47 FPS
DeepScene576x320fcn-resnet18-deepscene-576x32096.4%26 FPS360 FPS
DeepScene864x480fcn-resnet18-deepscene-864x48096.9%14 FPS190 FPS
Multi-Human512x320fcn-resnet18-mhp-512x32086.5%34 FPS370 FPS
Multi-Human640x360fcn-resnet18-mhp-512x32087.1%23 FPS325 FPS
Pascal VOC320x320fcn-resnet18-voc-320x32085.9%45 FPS508 FPS
Pascal VOC512x320fcn-resnet18-voc-512x32088.5%34 FPS375 FPS
SUN RGB-D512x400fcn-resnet18-sun-512x40064.3%28 FPS340 FPS
SUN RGB-D640x512fcn-resnet18-sun-640x51265.1%17 FPS224 FPS
  • 如果CLI参数中省略了分辨率,则加载最低分辨率模型
  • 精度表示模型验证数据集的像素分类精度
  • 使用JetPack 4.2.1、nvpmodel 0(MAX-N)对GPU FP16模式的性能进行了测量

传统分割模型

NetworkCLI ArgumentNetworkType enumClasses
Cityscapes (2048x2048)fcn-alexnet-cityscapes-hdFCN_ALEXNET_CITYSCAPES_HD21
Cityscapes (1024x1024)fcn-alexnet-cityscapes-sdFCN_ALEXNET_CITYSCAPES_SD21
Pascal VOC (500x356)fcn-alexnet-pascal-vocFCN_ALEXNET_PASCAL_VOC21
Synthia (CVPR16)fcn-alexnet-synthia-cvprFCN_ALEXNET_SYNTHIA_CVPR14
Synthia (Summer-HD)fcn-alexnet-synthia-summer-hdFCN_ALEXNET_SYNTHIA_SUMMER_HD14
Synthia (Summer-SD)fcn-alexnet-synthia-summer-sdFCN_ALEXNET_SYNTHIA_SUMMER_SD14
Aerial-FPV (1280x720)fcn-alexnet-aerial-fpv-720pFCN_ALEXNET_AERIAL_FPV_720p2

6. 推荐系统要求

  • Jetson Nano开发者工具包,带有JetPack 4.2或更新版本(Ubuntu 18.04 aarch64)。
  • Jetson Nano 2GB开发工具包,带有JetPack 4.4.1或更新版本(Ubuntu 18.04 aarch64)。
  • Jetson Xavier NX开发工具包,带有JetPack 4.4或更新版本(Ubuntu 18.04 aarch64)。
  • Jetson AGX Xavier开发包,带有JetPack 4.0或更新版本(Ubuntu 18.04 aarch64)。
  • JetPack 3.0或更新版本的Jetson TX2开发工具包(Ubuntu 16.04 aarch64)。
  • JetPack 2.3或更新版本的Jetson TX1开发工具包(Ubuntu 16.04 aarch64)。

本教程的PyTorch迁移学习部分从在Jetson上运行PyTorch来训练DNN的角度出发,但是相同的PyTorch代码可以在PC、服务器或云实例上使用NVIDIA离散GPU进行更快的训练。

7. 额外资源

在这方面,列出了深度学习的链接和资源:

8. 两天的演示(数字)

注意:下面的DIGITS/Caffe教程已弃用。建议遵循来自Hello AI World的PyTorch转移学习教程。
展开此部分以查看原始数字教程(已弃用)

DIGITS教程包括在云端或PC上训练DNN,以及使用TensorRT在Jetson上进行推理,可能需要大约两天或更长时间,具体取决于系统设置、下载数据集和GPU的训练速度。

  • 数字工作流
  • 数字系统设置
  • 使用JetPack设置Jetson
  • 从源代码构建项目
  • 用ImageNet对图像进行分类
    在Jetson上使用控制台程序
    编写自己的图像识别程序
    运行实时摄像机识别演示
    用数字重新训练网络
    下载图像识别数据集
    自定义对象类
    将分类数据集导入数字
    数字图像分类模型的建立
    数字分类模型的检验
    将模型快照下载到Jetson
    在Jetson上加载自定义模型
  • 用DetectNet定位物体
    检测数据的数字格式
    下载检测数据集
    将检测数据集导入数字
    用数字创建DetectNet模型
    检测网模型推理的数字测试
    将检测模型下载到Jetson
    TensorRT的DetectNet修补程序
    从命令行检测对象
    多类目标检测模型
    在Jetson上运行实时摄像头检测演示
  • 基于SegNet的语义切分
    下载无人机数据集
    将航空数据集导入数字
    生成预训练FCN网络
    数字训练FCN-net
    数字测试推理模型
    TensorRT的FCN Alexnet修补程序
    在Jetson上运行细分模型

参考资料:https://github.com/dusty-nv/jetson-inference#training

Logo

秉承“创新、开放、协作、共享”的开源价值观,致力于为大规模开源开放协同创新助力赋能,打造创新成果孵化和新时代开发者培养的开源创新生态!支持公有云使用、私有化部署以及软硬一体化私有部署。

更多推荐