【FCon上海】与行业领袖共话AI大模型、数字化风控等前沿技术。 了解详情
写点什么

宣布为 Apache MXNet 推出 ONNX 支持

  • 2019-11-06
  • 本文字数:2483 字

    阅读完需:约 8 分钟

宣布为 Apache MXNet 推出 ONNX 支持

AI 大模型超全落地场景&金融应用实践,8 月 16 - 19 日 FCon x AICon 大会联诀来袭、干货翻倍!

今天,AWS 宣布推出 ONNX-MXNet,它是一种用于将 Open Neural Network Exchange (ONNX) 深度学习模型导入到 Apache MXNet 的开源 Python 程序包。MXNet 是功能齐全且可扩展的深度学习框架,可以跨 Python、Scala 和 R 等多种热门语言提供 API。通过 MXNet 的 ONNX 格式支持,开发人员可以使用 PyTorch、Microsoft Cognitive Toolkit 或 Caffe2 等其他框架构建和训练模型,然后将这些模型导入 MXNet 中运行,从而使用 MXNet 高度优化且可扩展的引擎进行推理。


我们还很激动地告诉大家,AWS 将在 ONNX 格式方面参与合作。我们将与 FacebookMicrosoft 和深度学习社区合作,进一步开发 ONNX,让深度学习从业人员都可以访问和使用它。

什么是 ONNX?

ONNX 是一种用于对深度学习模型进行编码的开源格式。ONNX 定义神经网络计算图的格式以及图中使用的大量运算符的格式。随着越来越多的框架和硬件供应商支持 ONNX,从事深度学习的开发人员可以轻松地在框架间移动,选择最适合当前任务的框架。

快速入门

我们将介绍如何使用 ONNX-MXNet 将 ONNX 模型导入 MXNet,以及如何使用导入的模型进行推理,从 MXNet 优化的执行引擎中获益。


步骤 1:安装


首先,根据 ONNX 存储库相关说明安装 ONNX。


然后,安装 ONNX-MXNet 程序包:


Bash


$ pip install onnx-mxnet
复制代码


步骤 2:准备要导入的 ONNX 模型


在此示例中,我们将演示导入 Super Resolution 模型,以增加图像的空间分辨率。此模型使用 PyTorch 构建和训练,并且使用 PyTorch 的 ONNX 导出 API 导出到 ONNX。有关模型设计的更多详情,请参阅 PyTorch 示例


将 Super Resolution ONNX 模型下载到您的工作目录:


Bash


$ wget https://s3.amazonaws.com/onnx-mxnet/examples/super_resolution.onnx
复制代码


步骤 3:将 ONNX 模型导入 MXNet


现在我们已经准备好 ONNX 模型文件,接下来让我们使用 ONNX-MXNet 导入 API 将其导入 MXNet。在 Python 外壳中运行以下代码:


Bash


import onnx_mxnetsym, params = onnx_mxnet.import_model('super_resolution.onnx')
复制代码


此代码在 Python 运行时中创建了两个实例:


sym– 模型的符号图和


params– 模型的权重。现在已完成导入 ONNX 模型,我们生成了一个标准的 MXNet 模型。


步骤 4:准备输入进行推理 ****


下一步,我们将准备输入图像用于推理。以下步骤下载示例图像,然后将其调整为模型期望的输入形状,最后将其转换为 numpy 数组。


从外壳控制台中,将示例输入图像下载到工作目录:


Bash


$ wget https://s3.amazonaws.com/onnx-mxnet/examples/super_res_input.jpg
复制代码


然后安装 Pillow (Python Imaging Library),我们便可加载和预处理输入图像:


Bash


$ pip install Pillow
复制代码


下一步,从 Python 外壳运行代码,准备 MXNet NDArray 格式的图像:


Bash


import numpy as npimport mxnet as mxfrom PIL import Imageimg = Image.open("super_res_input.jpg").resize((224, 224))img_ycbcr = img.convert("YCbCr")img_y, img_cb, img_cr = img_ycbcr.split()test_image = mx.nd.array(np.array(img_y)[np.newaxis, np.newaxis, :, :])
复制代码


步骤 5:创建 MXNet 模块


我们将使用 MXNet 模块 API 创建和绑定模块并分配加载权重。


请注意,ONNX-MXNet 导入 API 向输入层分配了名称“input_0”,我们在初始化和绑定模块时将使用该名称。


Bash


mod = mx.mod.Module(symbol=sym, data_names=['input_0'], label_names=None)mod.bind(for_training=False, data_shapes=[('input_0',test_image.shape)])mod.set_params(arg_params=params, aux_params=None)
复制代码


步骤 6:运行推理


现在我们已经加载和绑定了 MXNet 模块并分配了训练权重,我们已准备好运行推理。我们将准备单个输入批处理,并通过网络前馈:


Bash


from collections import namedtupleBatch = namedtuple('Batch', ['data'])mod.forward(Batch([test_image]))output = mod.get_outputs()[0][0][0]
复制代码


步骤 7:检查结果


现在,我们来看看对 Super Resolution 图像运行推理后收到的结果:


Bash


img_out_y = Image.fromarray(np.uint8((output.asnumpy().clip(0, 255)), mode='L'))result_img = Image.merge("YCbCr", [          img_out_y,          img_cb.resize(img_out_y.size, Image.BICUBIC),          img_cr.resize(img_out_y.size, Image.BICUBIC)]).convert("RGB")result_img.save("super_res_output.jpg")
复制代码


以下是输入图像和生成的输出图像。如您所见,该模型能够将图像空间分辨率从 256 × 256 增加到 672 × 672。


                                                  col 1                                                        |  col 2  
复制代码


:------------------------------------------------------------------------------------------------------------------:|:--------:


输入图像 | 输出图像


下一步工作?

我们正在与 ONNX 合作伙伴和社区合作,以进一步开发 ONNX,增加更实用的运算符,并扩展 ONNX-MXNet 以包括导出和更大的运算符覆盖范围。我们还将与 Apache MXNet 社区合作,将 ONNX 引入 MXNet 核心 API。

想要了解更多信息?

可在此处获得示例,它源自 ONNX-MXNet GitHub 存储库


查看 ONNX,深入探讨如何对网络图片和运算符进行编码。


欢迎贡献代码!


特别感谢 dmlc/nnvm 社区,本次实施引用了其 ONNX 代码。


Facebook 博客:


https://research.fb.com/amazon-to-join-onnx-ai-format-drive-mxnet-support/


Microsoft 博客:


https://www.microsoft.com/en-us/cognitive-toolkit/blog/2017/11/framework-support-open-ai-ecosystem-grows/


作者介绍:


**



Hagay Lupesko 是 AWS 深度学习的工程经理。**他专注于构建让开发人员和科学家能够构建智能应用程序的深度学习工具。在业余时间,他喜欢阅读、徒步旅行以及与家人共享天伦之乐。



Roshani Nagmote 是 AWS 深度学习的软件开发人员。她正在开发使所有人都可以利用深度学习的创新工具。在业余时间,她喜欢逗弄可爱的侄子,并且喜欢大型犬。


本文转载自 AWS 技术博客。


原文链接:


https://amazonaws-china.com/cn/blogs/china/announcing-onnx-support-for-apache-mxnet/


2019-11-06 08:00601

评论

发布
暂无评论
发现更多内容

阿尔比特(ARBT)DAPP质押挖矿系统开发丨源码技术搭建

l8l259l3365

Premiere Pro 2024 for mac(pr2024视频编辑器) v24.0完整激活版

mac

苹果mac Windows软件 视频剪辑软件 Premiere Pro 2024

Illustrator 2024 for mac(标准矢量插画设计软件) v28.0完整激活版

mac

苹果mac Windows软件 矢量图形编辑软件 Illustrator 2024

安装Linux系统对硬件的要求

芯动大师

如何转产品工程师?

IC男奋斗史

职业规划 芯片 半导体 芯片测试 ATE测试

公平,而非平等

俞凡

管理 组织架构

DeFi/DAPP质押借贷分红挖矿系统开发/详情方案

V\TG【ch3nguang】

充换电企业开迈斯低成本提升线上应用稳定性的最佳实践

阿里巴巴云原生

阿里云 云原生

可观测 AIOps 的智能监控和诊断实践丨QCon 全球软件开发大会总结

阿里巴巴云原生

阿里云 云原生 AIOPS 可观测

以生产力为中心:超宽带的跨时代之舞

脑极体

超宽带

CeresDAO借贷合约/DAO质押挖矿系统开发技术丨python技术语言

V\TG【ch3nguang】

Easysearch压缩模式深度比较:ZSTD+source_reuse的优势分析

极限实验室

easysearch

ARTS 打卡第6周

AI帅辉

ARTS 打卡计划 学习分享

马蹄链MATIC系统开发代码Polygon智能合约质押流动性挖矿

V\TG【ch3nguang】

OpenResty 入门以及 WAF 防御实战

越长大越悲伤

nginx openresty waf

Python - 字典2

小万哥

Python 程序员 软件 后端 开发

不抖机灵!让工程师来告诉你做芯片是如何烧钱的!

IC男奋斗史

芯片 半导体 芯片测试 ATE测试

工赋开发者社区 | 工业机器人产业链及主要配套厂商

工赋开发者社区

Downie 4 for Mac(最好用的视频下载软件) 4.6.31中文激活版

mac

Downie4 苹果mac Windows软件 网站视频下载

Defi/DAPP/LP代币流动性质押挖矿系统开发(技术组件)

V\TG【ch3nguang】

文心一言 VS 讯飞星火 VS chatgpt (113)-- 算法导论10.2 5题

福大大架构师每日一题

福大大架构师每日一题

【论文阅读】【三维场景点云分割】Superpoint Transformer for 3D Scene Instance Segmentation

AI帅辉

深度学习 论文阅读 Transformer 分割 3D点云

Bridge 2024 (br2024) for Mac v14.0.0.102完整激活版

mac

苹果mac Windows软件 Bridge 2024

CSS小技巧之单标签loader

南城FE

CSS css3 前端 Loader

Lightroom Classic 2024更新,最新LRC2024中文激活版下载mac/win

iMac小白

Lightroom Classic2024 LrC2024

工赋开发者社区 | 精益与MES融合下的数字化转型

工赋开发者社区

活在无限中

少油少糖八分饱

读后感 阅读 动漫 葬送的芙莉莲 有限与无限游戏

宣布为 Apache MXNet 推出 ONNX 支持_语言 & 开发_亚马逊云科技 (Amazon Web Services)_InfoQ精选文章