50万奖金+官方证书,深圳国际金融科技大赛正式启动,点击报名 了解详情
写点什么

宣布为 Apache MXNet 推出 ONNX 支持

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

    阅读完需:约 8 分钟

宣布为 Apache MXNet 推出 ONNX 支持

今天,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:00996

评论

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

铝型材表面瑕疵识别-Are you OK?队-1-解决方案

阿里云天池

阿里云 算法

低代码+定制物资管理:创新解决方案探析

天津汇柏科技有限公司

低代码 软件开发定制

软件测试如何选择最佳的自动化测试定位策略?

测试人

软件测试

大模型微调提升AI应用性能

百度开发者中心

人工智能 大模型

基础设施SIG月度动态:社区官网上线《龙蜥理事说》专题页,内核门禁提速

OpenAnolis小助手

开源 操作系统 龙蜥社区 龙蜥社区SIG

自动化测试定位方式那么多,应该选哪个?

霍格沃兹测试开发学社

“专业敏捷教练课程” 7月6-7日 · CSP-SM认证上海线下面授周末班【晋升高阶享多重福利】

ShineScrum

《龙蜥理事说》第二期对话统信软件 AI 让操作系统更智能

OpenAnolis小助手

AI 操作系统 国产操作系统 龙蜥社区

大数据小白的测试成长之路

京东科技开发者

安全厂商长擎软件加入龙蜥社区,共建领先的 OS 基础设施

OpenAnolis小助手

操作系统 国产操作系统 龙蜥社区生态伙伴

系统整容纪:责任链设计模式的应用实战(爆灯了,研发工期由45天降为1天)

京东科技开发者

拒绝机械风,让ChatGPT像真人一样对话!

蓉蓉

ChatGPT GPT-4 GPTs

连续两年!嘉为蓝鲸入选“鑫智奖·2024金融数据创新优秀解决方案”

嘉为蓝鲸

运维 集成 一体化平台

职场<火焰杯>测试开发大赛开始报名啦!

霍格沃兹测试开发学社

记一次5分钟大模型生成物流网关多域名配置工具

京东科技开发者

11个Python循环技巧

华为云开发者联盟

Python 开发 华为云 华为云开发者联盟 企业号2024年4月PK榜

嘉为蓝鲸WeOps与DeepFlow强强联合,共同打造拓展性运维平台

嘉为蓝鲸

集成 嘉为蓝鲸 ebfp

4 月 30 日启动报名!2024 开源之夏&龙蜥社区赛题等你来挑战

OpenAnolis小助手

开源 操作系统 龙蜥社区 开源之夏

一文解读 SQL 生成工具

KaiwuDB

数据库 sql

荣获优秀共建方!开放原子开源大赛&龙蜥机密赛题决赛圆满结束

OpenAnolis小助手

操作系统 龙蜥社区 机密计算

鹰角网络宣布将启动鸿蒙原生应用开发

最新动态

南京大学×百度“星河杯”AI大模型创意校园赛正式起航

飞桨PaddlePaddle

百度 paddle BAIDU 百度飞桨 飞桨星河社区

重回铁王座!时隔5年,Quill 2.0 终于发布啦!

OpenTiny社区

前端 富文本

BERT一个蛋白质-季军-英特尔创新大师杯冷冻电镜蛋白质结构建模大赛-paipai

阿里云天池

阿里云

时之鑫门窗|为什么选购门窗时推荐用十大品牌门窗

科技热闻

全面展示自动驾驶最新发展动态“2024上海国际自动驾驶技术展会”

AIOTE智博会

自动驾驶展 智能驾驶展

我们开源啦!一键部署免费使用!Kubernetes上直接运行大数据平台!

极客天地

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