iPhone 11 训练神经网络的开源项目火了,准确率可与 i7 MacBook Pro 持平
前几天有人发布了一个可以在 iOS 设备上直接训练神经网络的开源项目 MNIST-CoreML-Training,引起热议。
项目使用 MNIST 手写数字数据集部署图像分类模型,不需要在其他 ML 框架中训练,而是基于 Core ML 直接本地训练出一个卷积神经网络(LeNet CNN) 模型。项目作者还将之和其他设备模型做了对比。在模型架构和训练参数相同的情况下,同时在 iphone 11上运行 Core ML 和在 i7 MacBook Pro 上运行 TensorFlow 2.0,两种方式的准确率都超过了0.98,前者训练时间大概为248秒,后者为158秒。
虽然用时上还有一定差距。但该项目和实验被认为证明了 ios 设备计算性能的提升,也探索了移动设备在本地训练的可能性。目前移动设备本地训练还难以完美实现,但想要在移动端部署 AI 应用还是有很多途径的,今天就来看看移动端的 AI 开发。
iOS 的 Core ML 和 Andorid 的 NNAPI
在移动端实现卷积神经网络,一般可以先在 GPU 或 TPU 上训练模型,之后再压缩部署到移动端。早前,有人基于开源的计算机视觉库 OpenCV 和开源训练模型 Caffe,在 Android 端实现车牌识别。Caffe 便是在 GPU 机器上训练,然后部署到商品集群或移动设备,在 CPU 和 GPU 之间切换,Caffe 模型还曾被用来在 Android 上做性别识别卷积神经训练。
当然,也已经有项目基于移动设备内置的一些 ML 框架,省去了在 GPU 和 TPU 上提前训练模型的步骤,直接在移动端部署。如 ios 内置的 Core ML,主要解决训练模型部署在移动端的问题,是一个模型转换工具,开头提到的 MNIST-CoreML-Training 就是基于它实现的。
Android 系统中也有类似的工具——NNAPI。NNAPI 是一个 Android C API,它为构建和训练 ML 框架,如 TensorFlow Lite、Caffe 2提供基础功能层,类似 ios 中的 Core ML。NNAPI 通过机器学习库、框架和工具调用,这些工具可以帮助开发者脱离设备训练模型,并完成部署。应用一般不会直接使用 NNAPI,而是直接使用更高级的 ML 框架。
图(NNAPI 高级系统架构)
使用 TensorFlow Lite 部署深度学习模型
Android 设备基于 NNAPI,还需要通过一些 ML 框架实现 AI 应用开发。被项目作者拿来做对比的 TensorFlow 早在2017年就衍生出 TensorFlow Lite,就可以用来在 Android 上部署深度学习模型。
TensorFlow Lite 是一种用于移动端的开源深度学习框架,最早由谷歌在2017年11月发布。TensorFlow Lite 可以在 CPU、GPU 上运行,也可以直接通过 NNAPI 运行,算上是应用较多的移动端 ML 框架。
早在2018年,同样有人使用 MNIST 数据库,在 Android 设备上搭建 TensorFlow Lite,实现移动端手写数字识别。而除了手写数字识别,TensorFlow Lite 现在还支持构建图像、物体识别模型,智能回复、姿势评估的模型。下面是 TensorFlow Lite 给出的使用流程。
- 选择并使用一个模型:
TensorFlow Lite 提供系列预训练模型(pre-trained models)。开发者选择模型之后,可以通过 transfer learning 重新训练,以执行其他任务。开发者也可以设计并训练自己的 TensorFlow Lite 模型。
- 转换模型:
TensorFlow Lite 支持部分 TensorFlow 运算符,TensorFlow 模型在被 TensorFlow Lite 使用前,必须转换成规定的特殊格式。
TensorFlow Lite 转换器以 Python API 的形式提供。下面的例子说明了将一个 TensorFlow SavedModel 转换成 TensorFlow Lite 格式的过程举例:
import tensorflow as tf converter = tf.lite.TFLiteConverter.from_saved_model(saved_model_dir) tflite_model = converter.convert() open("converted_model.tflite", "wb").write(tflite_model)
- 使用模型推理:
推理是通过模型运行数据以获得预测的过程。这个过程需要模型、解释器和输入数据。TensorFlow Lite 解释器是一个库,它接收模型文件,执行模型文件在输入数据上定义的运算符,并提供对输出的访问。
该解释器适用于多个平台,提供了一个简单的 API,用于从 Java、Swift、Objective-C、C++ 和 Python 运行 TensorFlow Lite 模型。
下面的代码显示了从 Java 调用解释器的方式:
try (Interpreter interpreter = new Interpreter(tensorflow_lite_model_file)) { interpreter.run(input, output); }
- 优化模型:
TensorFlow Lite 提供优化模型大小和性能的工具,通常对准确性影响甚微。优化模型可能需要稍微复杂的训练,转换或集成。
- 创建 Android 应用程序示例
如果想使用 TensorFlow Lite 快速编写 Android 代码, 官方推荐使用 Android 图像分类代码例子 作为起始点。下面介绍如何在 Android上 使用 TensorFlow Lite。
可以在build.gradle
依赖中指定,使用 JCenter 中的 TensorFlow Lite AAR:
dependencies { implementation 'org.tensorflow:tensorflow-lite:0.0.0-nightly' }
这个 AAR 包含了 Android ABIs 中的所有的二进制文件,可以通过只包含需要支持的 ABIs 减少应用程序的二进制文件大小。
官方推荐大部分开发者删简 x86
,x86_64
,和arm32
的 ABIs。开发者可以通过如下的Gradle 配置实现,这个配置只包括了 armeabi-v7a
和arm64-v8a
,该配置能涵盖住大部分的现代 Android 设备:
android { defaultConfig { ndk { abiFilters 'armeabi-v7a', 'arm64-v8a' } } }
在本地构建 TensorFlow Lite,可参照自定义 AAR 构建说明 ,创建 AAR 并将其纳入 APP 中。
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
HashiCorp 产品禁止中国公司使用,引发对开源软件受限制的担忧
近日国外知名 DevOps 服务商 HashiCorp 的官网相关条款页面被发现禁止中国公司使用其 Vault 企业版产品的声明。事件一度引发国内开源界广泛关注。 声明中表示: PLEASE NOTE THAT CHINESE EXPORT CONTROL REGULATIONS PROHIBIT HASHICORP FROM SELLING OR OTHERWISE MAKING THE ENTERPRISE VERSION OF VAULT AVAILABLE IN THE PEOPLE'S REPUBLIC OF CHINA. FOR THAT REASON, HASHICORP'S VAULT ENTERPRISE SOFTWARE MAY NOT BE USED, DEPLOYED OR INSTALLED IN THE PEOPLE’S REPUBLIC OF CHINA WITHOUT WRITTEN AGREEMENT BY HASHICORP. 请注意,中国的出口管制法规禁止 HashiCorp出售或以其它方式使 Valut的企业版适用于中国人民共和国。因此,未经 H...
- 下一篇
超硬核Java学习路线图+学习资源+实战项目汇总,看完以后不用再问我怎么学Java了!
之前写过很多次关于Java学习指南、Java技术路线图的文章。但是总还是有小伙伴来问我,Java怎么学,项目怎么做,资源怎么找,真是让人头秃。 于是这次黄小斜决定来一波狠的,把所有这些内容都整理起来,做成一份非常硬核的Java学习指南+路线图,一篇文章搞定Java学习,360度无死角(可能)如果你们喜欢这类硬核的文章,以后我也会继续这么硬核下去的!不要忘了分享噢。 以下就是本文的主要内容,万字长文,你可悠着点看,拒绝到收藏夹吃灰! 一、Java学习路线图 1 计算机基础 2Java编程 Java基础 设计模式 Java Web技术 Java并发技术 Java网络编程和服务器 Jvm基础与调优 3 Linux 4 数据相关 关系数据库Mysql 缓存 搜索引擎 大数据 5 算法和数据结构 6 分布式 大型网站架构 分布式理论 一致性问题 分布式session 分布式缓存 分布式数据库 负载均衡 消息队列 服务化 虚拟化 二、硬核Java学习资源清单 Java入门学习资源 Java后端技术专栏 Java工程师书单 技术社区推荐 技术大牛推荐 三、硬核Java实战项目清单 标星10w+ ...
相关文章
文章评论
共有0条评论来说两句吧...