0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

在NVIDIA Jetson Zoo中实现高性能推理

星星科技指导员 ? 来源:NVIDIA ? 作者:NVIDIA ? 2022-04-18 10:01 ? 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

Microsoft 和 NVIDIA 合作为 NVIDIA Jetson 平台构建、验证和发布 ONNX 运行时 Python 包和 Docker 容器,现已在Jetson Zoo上提供。

今天发布的适用于 Jetson 的 ONNX Runtime 将 ONNX Runtime 的性能和可移植性优势扩展到了 Jetson 边缘 AI 系统,允许来自许多不同框架的模型以更少的功耗更快地运行。您可以转换来自 PyTorch、TensorFlow、Scikit-Learn 和其他模型的模型,以在具有 ONNX 运行时的 Jetson 平台上执行推理。

ONNX 运行时优化模型以利用设备上的加速器。此功能使用相同的 API 表面为应用程序代码提供跨不同硬件配置的最佳推理吞吐量,以管理和控制推理会话。

ONNX Runtime 在数亿台设备上运行,每天提供超过 200 亿个推理请求。

Jetson 上 ONNX 运行时的优势

Jetson System-on-Modules (SOM) 的全系列产品以小巧的外形提供云原生支持,具有无与伦比的性能和能效,有效地将现代 AI、深度学习和推理的能力引入嵌入式系统边缘。Jetson 为一系列应用提供支持,从人工智能驱动的网络录像机 (NVR) 和高精度制造中的自动光学检测 (AOI) 到自主移动机器人 (AMR)。

完整的 Jetson 系列由相同的软件堆栈提供支持,并由 NVIDIA JetPack SDK 提供支持,其中包括板级支持包 (BSP)、Linux 操作系统和用于端到端 AI 管道加速的用户级库:

CUDA

cudDNN

用于加速 AI 推理的 TensorRT

用于加速计算的 cuBlas、cuFFT 等

用于计算机视觉和图像处理的 Visionworks、OpenCV 和 VPI

用于相机 ISP 处理、多媒体和传感器处理的库

此 ONNX 运行时包利用 Jetson 边缘 AI 平台中的集成 GPU,使用 CUDA 和 cuDNN 库为 ONNX 模型提供加速推理。您还可以通过从源代码构建 Python 包来将 ONNX 运行时与 TensorRT 库一起使用。

专注于开发者

此版本为您在 Jetson 平台上使用 ONNX 运行时提供了一条简单的集成路径。您可以在应用程序代码中集成 ONNX 运行时,以便在边缘设备上运行 AI 应用程序的推理。

ML 开发人员和 IoT 解决方案制造商可以使用预构建的 Docker 映像在边缘部署 AI 应用程序或使用独立的 Python 包。Jetson Zoo包含指向 ONNX 运行时包和示例的指针以供入门。

Microsoft Container Registry 中提供了 Jetpack4.4 上 ONNX Runtime 的 Docker 映像:

docker pull mcr.microsoft.com/azureml/onnxruntime:v.1.4.0-jetpack4.4-l4t-base-r32.4.3

或者,要直接在您的应用程序中使用Python 包,请下载并将其安装在您的 Jetson SOM 上:

wget https://nvidia.box.com/shared/static/8sc6j25orjcpl6vhq3a4ir8v219fglng.whl \
-O onnxruntime_gpu-1.4.0-cp36-cp36m-linux_aarch64.whl
pip3 安装 onnxruntime_gpu-1.4.0-cp36-cp36m-linux_aarch64.whl

在 Jetson 上使用 ONNX 运行时的推理应用程序


图 1. 边缘的端到端 IoT 应用程序。

在NVIDIA Jetson 平台(ARM64 设备)上集成 Azure 与机器学习执行教程向您展示了如何使用 TinyYOLO 模型、Azure IoT Edge 和 ONNX Runtime 在您的 Jetson 设备上开发对象检测应用程序。

在 Jetson 平台上运行的物联网边缘应用程序在 Azure 云中有一个数字孪生。推理应用程序代码在由集成的 Jetson ONNX 运行时基础映像构建的 Docker 容器中运行。应用程序从相机读取帧,执行对象检测,并将检测到的对象结果发送到云存储。从那里,它们可以被可视化和进一步处理。

样本异议检测代码

您可以使用为 Jetson 预先构建的 ONNX Runtime Docker 映像开发自己的应用程序。

使用 Jetson ONNX 运行时 Docker 映像创建 Dockerfile 并添加应用程序依赖项:

来自 mcr.microsoft.com/azureml/onnxruntime:v.1.4.0-jetpack4.4-l4t-base-r32.4.3
工作目录。
运行 apt-get update && apt-get install -y python3-pip libprotobuf-dev protobuf-compiler python-scipy
RUN python3 -m pip install onnx==1.6.0 easydict matplotlib
CMD ["/bin/bash"]

从 Dockerfile 构建一个新镜像:

docker build -t jetson-onnxruntime-yolov4 。

从 ONNX 模型动物园下载 Yolov4 模型、对象检测锚位置和类名:

wget https://github.com/onnx/models/blob/master/vision/object_detection_segmentation/yolov4/model/yolov4.onnx?raw=true -O yolov4.onnx
wget https://raw.githubusercontent.com/onnx/models/master/vision/object_detection_segmentation/yolov4/dependencies/yolov4_anchors.txt
wget https://raw.githubusercontent.com/natke/onnxruntime-jetson/master/coco.names

下载 Yolov4 对象检测前后处理代码:

wget https://raw.githubusercontent.com/natke/onnxruntime-jetson/master/preprocess_yolov4.py
wget https://raw.githubusercontent.com/natke/onnxruntime-jetson/master/postprocess_yolov4.py

下载一个或多个测试图像:

wget https://raw.githubusercontent.com/SoloSynth1/tensorflow-yolov4/master/data/kite.jpg

创建一个应用程序 main.py 来预处理图像,运行对象检测,并将原始图像与检测到的对象一起保存:

导入简历2
将 numpy 导入为 np
导入 preprocess_yolov4 作为 pre
导入 postprocess_yolov4 作为帖子
从 PIL 导入图像
输入大小 = 416
original_image = cv2.imread("kite.jpg")
original_image = cv2.cvtColor(original_image, cv2.COLOR_BGR2RGB)
original_image_size = original_image.shape[:2]
image_data = pre.image_preprocess(np.copy(original_image), [input_size, input_size])
image_data = image_data[np.newaxis, ...].astype(np.float32)
print("预处理后的图像形状:",image_data.shape) # 预处理输入的形状
将 onnxruntime 导入为 rt

sess = rt.InferenceSession("yolov4.onnx")

output_name = sess.get_outputs()[0].name
input_name = sess.get_inputs()[0].name

detections = sess.run([output_name], {input_name: image_data})[0]

print("输出形状:", detections.shape)

image = post.image_postprocess(original_image,input_size,检测)

图像 = Image.fromarray(图像)
image.save("风筝与对象.jpg")

运行应用程序:

nvidia-docker run -it --rm -v $PWD:/workspace/ --workdir=/workspace/ jetson-onnxruntime-yolov4 python3 main.py

应用程序读取风筝图像并定位图像中的所有对象。您可以尝试使用不同的图像并扩展应用程序以使用视频流,如前面的 Azure IoT 边缘应用程序所示。

ONNX 运行时 v1.4 更新

此软件包基于 2020 年 7 月发布的最新ONNX Runtime v1.4 版本。此最新版本提供了许多针对流行的 Transformer 模型(GPT2、BERT)的更新,包括性能优化、新运算符的改进量化支持和优化技术。该版本还通过新硬件加速器的预览版扩展了 ONNX 运行时硬件生态系统的兼容性,包括对 NVIDIA Jetpack 4.4 的 ARM-NN 和 Python 包的支持。

除了这些加速推理更新之外,1.4 版本继续在加速训练前沿的先前版本中引入的创新基础上构建,包括通过使用 Huggingface GPT-2 模型的新样本扩展操作员支持。

关于作者

Natalie Kershaw 是 Microsoft 人工智能框架团队的项目经理,专门研究开发人员体验。她在澳大利亚的阿德莱德大学和悉尼大学学习电气和电子工程以及数学/创意写作。在加入微软之前,她曾在西雅图的 RFID 芯片制造商 Impinj 工作。

Suhas Sheshadri 是 NVIDIA 的产品经理,专注于 Jetson 软件。他之前曾在 NVIDIA 的自动驾驶团队工作,为 NVIDIA Drive 平台优化系统软件。在空闲时间,Suhas 喜欢阅读有关量子物理学和博弈论的书籍。

Dustin 是 NVIDIA Jetson 团队的一名开发人员推广员。Dustin 拥有机器人技术和嵌入式系统方面的背景,喜欢在社区中提供帮助并与 Jetson 合作开展项目。您可以在NVIDIA 开发者论坛或GitHub 上找到他。

审核编辑:郭婷

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 传感器
    +关注

    关注

    2568

    文章

    53282

    浏览量

    770203
  • AI
    AI
    +关注

    关注

    88

    文章

    35760

    浏览量

    282545
  • python
    +关注

    关注

    56

    文章

    4832

    浏览量

    87781
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    NVIDIA从云到边缘加速OpenAI gpt-oss模型部署,实现150万TPS推理

    的发布持续深化了双方的 AI 创新合作。NVIDIA NVIDIA Blackwell 架构上优化了这两款全新的开放权重模型并实现推理性能
    的头像 发表于 08-15 20:34 ?635次阅读
    <b class='flag-5'>NVIDIA</b>从云到边缘加速OpenAI gpt-oss模型部署,<b class='flag-5'>实现</b>150万TPS<b class='flag-5'>推理</b>

    NVIDIA Jetson AGX Thor开发者套件概述

    NVIDIA Jetson AGX Thor 开发者套件为您提供出色的性能和可扩展性。它由 NVIDIA Blackwell GPU和128 GB 显存提供动力支持,提供高达 2070
    的头像 发表于 08-11 15:03 ?484次阅读

    NVIDIA Jetson + Isaac SDK 人形机器人方案全面解析

    NVIDIA Jetson + Isaac SDK 人形机器人方案全面解析 一、方案概述 Jetson 硬件平台 :提供 AI + GPU 运算能力,配合多传感器、视觉、传动控制体系 Isaac
    的头像 发表于 07-30 16:12 ?956次阅读

    Jetson平台核心组件BOM清单概览

    Jetson平台核心组件BOM清单概览 NVIDIA Jetson系列作为业界领先的边缘计算和人工智能(AI)平台,其强大的性能背后是一系列精心挑选的核心芯片、电源管理集成电路(PMI
    的头像 发表于 07-30 16:11 ?1439次阅读

    NVIDIA Jetson + Isaac SDK 人形机器人领域的方案详解

    NVIDIA Jetson + Isaac SDK 人形机器人领域的 方案详解 ,涵盖芯片型号、软件平台、开发工具链、应用场景与典型客户等。 一、方案概述:Jetson + Isaa
    的头像 发表于 07-30 16:05 ?1653次阅读

    【幸狐Omni3576边缘计算套件试用体验】幸狐Omni3576开发板移植YOLOV10和推理测试

    功能。 一、RKNN简介 RKNN-Toolkit2工具 PC 平台上提供 C 或 Python 接口,简化模型的部署和运行。用户可以通过该工具轻松完成以下功能:模型转换、量化、推理性能和内存评估
    发表于 05-24 12:27

    【幸狐Omni3576边缘计算套件试用体验】RKNN 推理测试与图像识别

    【幸狐 Omni3576 边缘计算套件测评】RKNN 推理测试与图像识别 本文介绍了幸狐 Omni3576 边缘计算套件实现 RKNN 推理和图像物体识别的测试流程,包括 RKNN 介绍、环境搭建
    发表于 03-20 16:14

    英伟达GTC25亮点:NVIDIA Dynamo开源库加速并扩展AI推理模型

    NVIDIA Dynamo 提高了推理性能,同时降低了扩展测试时计算 (Scaling Test-Time Compute) 的成本; NVIDIA Blackwell 上的
    的头像 发表于 03-20 15:03 ?734次阅读

    探索NVIDIA Jetson与DeepSeek融合的无限可能

    能力高效地部署到边缘设备已然成为行业关注的焦点。NVIDIA Jetson 系列作为边缘计算领域的佼佼者,凭借其高性能、低功耗的特性,能够为 DeepSeek 等 AI 模型的端侧
    的头像 发表于 02-21 14:31 ?821次阅读
    探索<b class='flag-5'>NVIDIA</b> <b class='flag-5'>Jetson</b>与DeepSeek融合的无限可能

    云骥智行借助NVIDIA Jetson打造“域脑”通用计算平台

    本案例,云骥智行(Pegasus Technology)借助 NVIDIA Jetson 打造“域脑”通用计算平台,实现人形机器人、智
    的头像 发表于 02-21 11:41 ?953次阅读

    使用NVIDIA推理平台提高AI推理性能

    NVIDIA推理平台提高了 AI 推理性能,为零售、电信等行业节省了数百万美元。
    的头像 发表于 02-08 09:59 ?844次阅读
    使用<b class='flag-5'>NVIDIA</b><b class='flag-5'>推理</b>平台提高AI<b class='flag-5'>推理性能</b>

    u-blox深化与NVIDIA JetsonNVIDIA DRIVE Hyperion平台合作

    近日,作为提供定位和无线通信技术及服务的全球领先供应商u-blox(SIX:UBXN)宣布,作为工业和汽车市场高精度定位领域的战略增长计划的关键一环,u-blox公司现已加强对NVIDIA Jetson
    的头像 发表于 12-09 14:08 ?674次阅读

    初创公司借助NVIDIA Metropolis和Jetson提高生产线效率

    初创公司使用 NVIDIA Metropolis 视觉 AI 和 Jetson 边缘 AI 平台提高生产线效率。
    的头像 发表于 11-19 14:39 ?779次阅读

    使用NVIDIA Jetson打造机器人导盲犬

    Selin Alara Ornek 是一名富有远见的高中生。她使用机器学习和 NVIDIA Jetson边缘 AI 和机器人平台,为视障人士打造了机器人导盲犬。
    的头像 发表于 11-09 13:51 ?873次阅读

    澎峰科技高性能大模型推理引擎PerfXLM解析

    自ChatGPT问世以来,大模型遍地开花,承载大模型应用的高性能推理框架也不断推出,大有百家争鸣之势。在这种情况下,澎峰科技作为全球领先的智能计算服务提供商,2023年11月25日发布了针对大语言
    的头像 发表于 09-29 10:14 ?1641次阅读
    澎峰科技<b class='flag-5'>高性能</b>大模型<b class='flag-5'>推理</b>引擎PerfXLM解析