大咖专栏| 使用 Apache MXNet 和 Apple Core ML 将机器学习引入
大咖专栏
大咖专栏主要刊登 AWS 诸位大咖亲自撰写的 Blog,内容涉猎广泛,话题讨论前沿,且与实战紧密相连。我们非常欢迎小伙伴们在评论区留言,与大咖互动交流!
今天为大家撰文的大咖,是 AWS 合作伙伴解决方案架构师和 AWS 深度学习团队的成员—— Sebastien Menant 和 Pracheer Gupta.
Sebastien Menant
AWS解决方案架构师
他起初与悉尼的企业客户合作,现在帮助旧金山港湾区的客户进行 AWS 创新。他曾在 Apple 公司工作过,在那里,他培养了对 iOS 软件开发和 Swift 编程语言的兴趣。
Pracheer Gupta
AWS深度学习团队成员
他目前是 Apache MXNet 应用程序的技术负责人,帮助客户基于 MXNet 构建智能应用程序。在过去,他致力于构建一种基于 Paxos 的分布式锁管理器,该管理器成为了 AWS 大部分的基本构建块。他在业余时间喜欢研究历史和心理学。
背景
利用 Apple 在 WWDC 2017 上发布的 Core ML,iOS、macOS、watchOS 和 tvOS,开发人员现在可以轻松地将机器学习模型集成到其应用程序中。这使得开发人员只需编写几行代码即可为用户带来智能的新功能。利用 Core ML,移动开发人员能够更方便地使用机器学习。它可让您进行快速原型设计,并使用不同的传感器(如摄像机、GPS 等)来创建具有比以往更强大的功能的应用程序。
而随着苹果用于新一代iPhone的A11 Bionic处理芯片的发布,其内置的AI芯片——神经引擎(Neural Engine)可为Core ML模型提供加速,将极大的推动AI应用的发展与普及。
MXNet 社区的成员(括来自 Apple 和 AWS的参与者)已展开合作以生成用于将使用 MXNet 构建的机器学习模型转换为 Core ML 格式的工具。利用此工具,开发人员能够轻松构建面向 Apple 设备的由机器学习支持的应用程序。借助此转换工具,您现在将获得适用于支持深度学习的应用程序的快速管道。您可以从 AWS 云中使用 MXNet 的可扩展的高效分布式模型训练迁移到 Apple 设备上的快速运行时推理。
为了支持该转换工具的发布,我们已决定构建一个出色的 iOS 应用程序。我们从AWS AI 博客文章《在 AWS EC2 上使用 MXNet 和 Multimedia Commons 数据集估计图像的位置》(文章地址:http://t.cn/RpFkRcs)获得了灵感,这篇文章介绍了用于预测图片拍摄位置的 LocationNet 模型。
在这篇博客文章中,我们说明了如何设置环境以将 MXNet 模型转换为 Core ML,转换现有模型,然后将模型导入用 Swift 编写的示例 iOS 应用程序中。iOS 应用程序向模型提供图片,从而预测图片拍摄位置,然后在交互式地图上显示该位置。出于性能的考虑,我们建议您在安装了 iOS 11 的物理 iOS 设备(如 iPhone)上运行该应用程序,但您也可以在 Xcode 9.0 测试版附带的模拟器上试用该应用程序。
请注意,在编写 Xcode 9 时,iOS 11 和 Core ML 仍为测试版,并且您需要 Apple 开发人员计划账户来下载 Xcode 和 iOS。但是,在这些产品后公开发布,您便能使用 Mac 上的应用商店和 iOS 设备上的软件更新来获取它们。
MXNet 和该转换工具的安装
已在 macOS High Sierra 10.13 测试版 8 上安装并测试该工具。但是,只要您未在 Mac 上的 Core ML 模型上运行推理,便能在 macOS El Capitan (10.11) 及更高版本上运行该转换器。
要运行该转换工具,您需要安装 Python 2.7。
运行以下命令可安装 MXNet 框架以及 mxnet-to-coreml 工具:
pip install mxnet-to-coreml
MXNet 模型的转换
已在单个 p2.16xlarge Amazon EC2 实例上使用 MXNet 来训练 LocationNet 模型,该实例包含来自 AWS Multimedia Commons 数据集的带有地理标记的图像(查看数据集请访问:http://t.cn/RpFkgy8)。它会在 MXNet Model Zoo 上公开分享。
与任何 MXNet 模型一样,LocationNet 包含两个部分:
· 一个包含模型定义的 JSON 文件
· 一个包含参数的二进制文件
继续并下载存储在 Amazon S3 上的 .json 模型定义
(下载地址:http://t.cn/RpFksV3)和 .params 模型参数(下载地址:http://t.cn/RpFFZV1)。
此外,您还将需要从 GitHub 存储库下载类文件 grids.txt(下载地址:http://t.cn/RpFFVEo),该文件包含用于训练模型的地理单元格。已使用 Google 的 S2 Geometry Library 通过训练数据创建该文件。此文本文件中的每一行都采用 S2 单元格标记、纬度和经度的形式(例如,8644b594 30.2835162512 -97.7271641272)。iOS 应用程序中的 Swift 代码将删除 S2 单元格标记信息,并且仅使用坐标。
按 GitHub 存储库中对该转换工具的描述,我们现在将转换模型。
在将所有内容下载到同一目录中后,请运行此命令:
mxnet_coreml_converter.py --model-prefix="RN101-5k500" --epoch=12 --input-shape="{"data":"3,224,224"}" --mode=classifier --pre-processing-arguments="{"image_input_names":"data"}" --class-labels grids.txt --output-file="RN1015k500.mlmodel"
在内部,该模型首先由在内存中重新创建整个符号图的 MXNet 进行加载。转换器浏览此符号图,并将每个运算符转换为其 Core ML 等效项。提供给转换器的一些参数由 MXNet 用来生成该图,而其他参数由 Core ML 用来预处理输入 (在将输入传递到神经网络之前) 或以特定方式处理神经网络的输出。
您应看到正在处理模型的多个层的转换工具,然后通过所生成文件的名称确认 SUCCESS。在后面的阶段,您将生成的文件 RN1015k500.mlmodel 导入 Xcode 项目中。
安装 Xcode 后,如果您双击此模型文件,则可以获得有关此文件的更多信息 (例如,文件的大小、名称和参数),这些信息通常将在您的 Swift 代码中使用:
在接下来的内容里,我们会介绍:
下载并配置 iOS 应用程序的代码
运行该应用程序,查看一些神奇的地方
总结以及接下来做什么?
请感兴趣的小伙伴点击“阅读原文”
或扫描/长按识别下方的二维码
阅读完整版文章
- 颍州区医共体中心药房正式投入使用
- 【12月-16日】延安信息网-最新房产信息专栏
- 颈椎不好,只需一个小方法,就解决了
- 【赞助商大咖@壹号牧场】12月24日来侨乡号游轮参加蓝色港湾圣诞
- 【专栏】中国因扎吉曾虐暴日本,球王李惠堂将他视为偶像
- 玩中学·亲子时光 | 冬季美食专栏
- 每日一图 | 降低天然气使用能够减少多少碳排放?
- 幻想一夜暴富,大悟男子使用防狼喷雾流窜抢劫两金店
- 微信最新版本推出三大重磅功能!又搞大事情了!你使用这些新功能
- 李强365荣登人民政协报专栏,传承教育,责无旁贷