写点什么

宣布为 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:00907

评论

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

镜舟科技2024年度回顾,坚持长期价值,进一步实现商业突破

镜舟科技

开源 数据分析 StarRocks 镜舟科技

AI技术在英语发音纠正中的应用

北京木奇移动技术有限公司

英语学习 AI技术 软件外包公司

FoneDog iPhone Cleaner for Mac(ios系统清理工具)激活版

Rose

智慧党建系统(源码+文档+部署+讲解)

深圳亥时科技

一位海外开发者的 OpenSPG KAG 实践分享

可信AI进展

知识图谱 大模型 rag RAG搭建

使用火语言RPA批量创建指纹浏览器

火语言RPA

谷云科技iPaaS V7.0+企业级AI Agent产品全新发布

RestCloud

API 数据集成 ipaas AIAgent

显卡危机的解决方案,全面解析ToDesk云电脑:服务配置与应用场景探索

小喵子

云电脑 云游戏 云电竞

京东JD商品详情原数据API接口的开发、运用与收益

科普小能手

数据挖掘 数据分析 电商 京东 API 接口

25年你还不知道什么是云管平台吗?来这里看看!

行云管家

云计算 云服务 云管平台

Premiere Pro 2024 新功能 pr2024破解版安装包-Mac&win

Rose

网络电视客户端 EyeTV for mac注册版 4.0.0

Rose

如何用一张二维码展示图文并茂的产品画册?内附详细制作教程!

草料二维码

二维码 草料二维码 产品画册 产品二维码 电子图册

警务协同办公系统(源码+文档+部署+讲解)

深圳亥时科技

京东商品视频数据接口(JD.item_video)丨京东API接口指南

tbapi

京东API接口 京东商品视频接口

NodeLocalDNS:优化集群DNS性能与可靠性的利器

代码忍者

利用GPU Operator快速构建Kubernetes中的GPU加速环境

代码忍者

kookeey功能上新 | 动态线路美国新增51个二级地区

kookeey代理严选

亚马逊 海外直播专线 tiktok直播 跨境电商运营 海外网络连接

区块链音乐NFT的开发框架

北京木奇移动技术有限公司

区块链技术 软件外包公司 音乐NFT

AI技术在评估英语学习的应用

北京木奇移动技术有限公司

AI技术 AI教育 软件外包公司

商机信息平台(源码+文档+部署+讲解)

深圳亥时科技

镜舟科技荣登《2024 中国大数据产业年度「国产化」优秀代表厂商》榜单!

镜舟科技

开源 数据分析 分析型数据库 StarRocks 湖仓

鸿蒙NEXT使用request模块实现本地文件上传

威哥爱编程

鸿蒙 HarmonyOS ArkTS HarmonyOS NEXT HarmonyOS5.0

AI技术在英语学习中的应用

北京木奇移动技术有限公司

英语学习 AI技术 软件外包公司

云行| “智”绘首都发展新篇章,天翼云携手伙伴共创“京”彩未来!

天翼云开发者社区

人工智能 云计算 天翼云

CATO:黄油猫 CATO: Buttered Cat for Mac(趣味解谜游戏)

Rose

苹果电脑音乐创作工具推荐!Logic Pro X Mac中文最新版功能介绍

Rose

photoshop2022安装教程及ps2022激活补丁-Mac&win

Rose

面试必问!项目高频面试题解析

王中阳Go

面试 后端

人工智能伦理困境:技术发展的界限在哪里?

天津汇柏科技有限公司

AI 人工智能

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