当前位置:首页 > 芯闻号 > 充电吧
[导读]你知道吗?在 iOS 设备上也可以直接训练 LeNet 卷积神经网络,而且性能一点也不差,iPhone 和 iPad 也能化为实实在在的生产力。 机器学习要想在移动端上应用一般分为如下两个阶段,第一个

你知道吗?在 iOS 设备上也可以直接训练 LeNet 卷积神经网络,而且性能一点也不差,iPhone 和 iPad 也能化为实实在在的生产力。

机器学习要想在移动端上应用一般分为如下两个阶段,第一个阶段是训练模型,第二个阶段是部署模型。常规的做法是在算力强大的 GPU 或 TPU 上对模型进行训练,之后再使用一系列模型压缩的方法,将其转换为可在移动端上运行的模型,并与 APP 连通起来。Core ML 主要解决的就是最后的模型部署这一环节,它为开发者提供了一个便捷的模型转换工具,可以很方便地将训练好的模型转换为 Core ML 类型的模型文件,实现模型与 APP 数据的互通。

以上是常规的操作。然而,随着 iOS 设备计算性能的提升,坊间不断产生一些 iPad Pro 算力超过普通笔记本的言论。于是乎,就出现了这么一位「勇者」,开源了可以直接在 iOS 设备上训练神经网络的项目。

项目作者在 macOS、iOS 模拟器和真实的 iOS 设备上进行了测试。用 60000 个 MNIST 样本训练了 10 个 epoch,在模型架构与训练参数完全相同的前提下,使用 Core ML 在 iPhone 11 上训练大概需要 248 秒,在 i7 MacBook Pro 上使用 TensorFlow 2.0 训练需要 158 秒(仅使用 CPU 的情况下),但准确率都超过了 0.98。

当然,在 248 秒和 158 秒之间还有非常大的差距,但进行此项实验的目的并不是比速度,而是为了探索用移动设备或可穿戴设备在本地进行训练的可行性,因为这些设备中的数据往往比较敏感,而且涉及隐私,本地训练可以提供更好的安全性。

项目地址:https://github.com/JacopoMangiavacchi/MNIST-CoreML-Training

MNIST 数据集

在这篇文章中,作者介绍了如何使用 MNIST 数据集部署一个图像分类模型,值得注意的是,这个 Core ML 模型是在 iOS 设备上直接训练的,而无需提前在其他 ML 框架中进行训练。

作者在这里使用了一个很有名的数据集—;—;MNIST 手写数字数据集。它提供了 60000 个训练样本和 10000 个测试样本,都是从 0 到 9 的 28x28 手写数字黑白图像。

LeNet CNN 架构

如果你想了解 CNN 的细节和优势,从 LeNet 架构着手是一个再好不过的起点。LeNet CNN+MNIST 数据集的组合是机器学习「训练」的标准组合,简直相当于深度学习图像分类的「Hello, World」。

这篇文章主要着眼于如何在 iOS 设备上直接为 MNIST 数据集构建和训练一个 LeNet CNN 模型。接下来,研究者将把它与基于著名的 ML 框架(如 TensorFlow)的经典「Python」实现方法进行比较。

在 Swift 中为 Core ML 的训练准备数据

在讨论如何在 Core ML 中创建及训练 LeNet CNN 网络之前,我们可以先看一下如何准备 MNIST 训练数据,以将其正确地 batch 至 Core ML 运行中去。

在下列 Swift 代码中,训练数据的 batch 是专门为 MNIST 数据集准备的,只需将每个图像的「像素」值从 0 到 255 的初始范围归一化至 0 到 1 之间的「可理解」范围即可。

为 Core ML 模型(CNN)训练做准备

处理好训练数据的 batch 并将其归一化之后,现在就可以使用 SwiftCoreMLTools 库在 Swift 的 CNN Core ML 模型中进行一系列本地化准备。

在下列的 SwiftCoreMLTools DSL 函数构建器代码中,还可以查看在相同的情况中如何传递至 Core ML 模型中。同时,也包含了基本的训练信息、超参数等,如损失函数、优化器、学习率、epoch 数、batch size 等等。

使用 Adam 优化器训练神经网络,具体参数如下:

接下来是构建 CNN 网络,卷积层、激活与池化层定义如下:

再使用一组与前面相同的卷积、激活与池化操作,之后输入 Flatten 层,再经过两个全连接层后使用 Softmax 输出结果。

得到的模型

刚刚构建的 Core ML 模型有两个卷积和最大池化嵌套层,在将数据全部压平之后,连接一个隐含层,最后是一个全连接层,经过 Softmax 激活后输出结果。

基准 TensorFlow 2.0 模型

为了对结果进行基准测试,尤其是运行时间方面的训练效果,作者还使用 TensorFlow 2.0 重新创建了同一 CNN 模型的精确副本。

下方的的 Python 代码展示了 TF 中的同一模型架构和每层 OutPut Shape 的情况:

可以看到,这里的层、层形状、卷积过滤器和池大小与使用 SwiftCoreMLTools 库在设备上创建的 Core ML 模型完全相同。

比较结果

在查看训练执行时间性能之前,首先确保 Core ML 和 TensorFlow 模型都训练了相同的 epoch 数(10),用相同的超参数在相同的 10000 张测试样本图像上获得非常相似的准确度度量。

从下面的 Python 代码中可以看出,TensorFlow 模型使用 Adam 优化器和分类交叉熵损失函数进行训练,测试用例的最终准确率结果大于 0.98。

Core ML 模型的结果如下图所示,它使用了和 TensorFlow 相同的优化器、损失函数以及训练集和测试集,可以看到,其识别准确率也超过了 0.98。

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

9月2日消息,不造车的华为或将催生出更大的独角兽公司,随着阿维塔和赛力斯的入局,华为引望愈发显得引人瞩目。

关键字: 阿维塔 塞力斯 华为

加利福尼亚州圣克拉拉县2024年8月30日 /美通社/ -- 数字化转型技术解决方案公司Trianz今天宣布,该公司与Amazon Web Services (AWS)签订了...

关键字: AWS AN BSP 数字化

伦敦2024年8月29日 /美通社/ -- 英国汽车技术公司SODA.Auto推出其旗舰产品SODA V,这是全球首款涵盖汽车工程师从创意到认证的所有需求的工具,可用于创建软件定义汽车。 SODA V工具的开发耗时1.5...

关键字: 汽车 人工智能 智能驱动 BSP

北京2024年8月28日 /美通社/ -- 越来越多用户希望企业业务能7×24不间断运行,同时企业却面临越来越多业务中断的风险,如企业系统复杂性的增加,频繁的功能更新和发布等。如何确保业务连续性,提升韧性,成...

关键字: 亚马逊 解密 控制平面 BSP

8月30日消息,据媒体报道,腾讯和网易近期正在缩减他们对日本游戏市场的投资。

关键字: 腾讯 编码器 CPU

8月28日消息,今天上午,2024中国国际大数据产业博览会开幕式在贵阳举行,华为董事、质量流程IT总裁陶景文发表了演讲。

关键字: 华为 12nm EDA 半导体

8月28日消息,在2024中国国际大数据产业博览会上,华为常务董事、华为云CEO张平安发表演讲称,数字世界的话语权最终是由生态的繁荣决定的。

关键字: 华为 12nm 手机 卫星通信

要点: 有效应对环境变化,经营业绩稳中有升 落实提质增效举措,毛利润率延续升势 战略布局成效显著,战新业务引领增长 以科技创新为引领,提升企业核心竞争力 坚持高质量发展策略,塑强核心竞争优势...

关键字: 通信 BSP 电信运营商 数字经济

北京2024年8月27日 /美通社/ -- 8月21日,由中央广播电视总台与中国电影电视技术学会联合牵头组建的NVI技术创新联盟在BIRTV2024超高清全产业链发展研讨会上宣布正式成立。 活动现场 NVI技术创新联...

关键字: VI 传输协议 音频 BSP

北京2024年8月27日 /美通社/ -- 在8月23日举办的2024年长三角生态绿色一体化发展示范区联合招商会上,软通动力信息技术(集团)股份有限公司(以下简称"软通动力")与长三角投资(上海)有限...

关键字: BSP 信息技术
关闭
关闭