用 TensorFlow Lite 实现设备端个性化模型

2020 年 1 月 7 日 TensorFlow

文 / Pavel Senchanka,Google 软件工程实习生 

TensorFlow Lite 是业内一流的机器学习模型设备端推理解决方案。虽然完整的 TensorFlow Lite 训练解决方案仍在开发中,但我们已迫不及待地想与您分享新的设备端迁移学习示例。本文会向您介绍可现学现用的设备端机器学习模型个性化方法。下面,就让我们深入探讨一下迁移学习可以解决哪些问题,以及这背后的工作原理。



为什么个性化机器学习非常有用

如今,许多机器学习解决方案在解决问题时都依靠大量训练数据。图像识别、目标检测、语音和语言模型均是通过优质数据集精心训练而成,因此这些模型能够达到尽可能的通用和准确。这种规模能解决许多问题,但却无法通过自定义满足每位用户的需求。

假设您希望根据用户需求来调整模型,进而改善用户体验。在将用户数据发送到云端来训练模型时,您需要万分谨慎,以防出现潜在的隐私泄露问题。在某些情况下,可能并不适合将数据发送到中央服务器来进行训练,因为我们需要考虑功耗、数据限流和隐私等问题。然而,如果直接在设备端训练数据,您便无需考虑这些问题,而且还能享有以下好处:您可以将隐私及敏感数据保留在设备上,以此来节省带宽,同时在没有网络连接的情况下也能训练数据。

不过,您也会面临一项挑战:训练需要使用海量数据样本,但我们很难在设备端获取这些数据。在云端,从头开始训练深度网络需要耗费数日时间,因此这种方法并不合适设备端。为避免从头训练一个全新的模型,我们会通过重新训练已训练好的模型来适应类似问题,这一过程称为 迁移学习



什么是迁移学习?

迁移学习是一项技术,其中涉及到对“数据丰富”的任务使用预训练模型,并重新训练该模型的部分层(通常是最后一层),以处理另一个“数据匮乏”任务。

例如,您可以选取已在一组类别上(如 ImageNet 中的类别)预训练好的图像分类模型(如 MobileNet),然后通过重新训练该模型的最后几层处理另一个任务。迁移学习并不仅适用于图像领域,您还可以将类似技术应用到文本或语音领域。

这个例子展示了传统机器学习 (ML) 与迁移学习在概念上的区别


借助迁移学习,即使训练数据和计算资源有限,您也可以在设备端轻松训练个性化模型,同时还能保护用户隐私。



在 Android 设备上训练图像分类器

在我们发布的示例项目中,有一个 Android 应用可学习对相机图像进行实时分类。在此应用中,我们可以针对不同目标类别拍摄样本照片,然后在设备端对其进行训练。


该应用会对 MobileNetV2 量化模型使用迁移学习技术,而我们已通过 ImageNet 对该模型进行了预训练,并将最后几层替换成可训练的 softmax 分类器。您可以通过训练最后几层来识别四个任意的新类别,而准确率则取决于要捕获的类别的“难度”。我们观察到,即使只有数十个样本,也足以取得良好的结果。(要知道,我们可是通过包含 130 万个样本的 ImageNet 对 MobileNetV2 模型进行了预训练!)。

这款应用能够在所有适用的最新 Android 设备(系统版本为 5.0 及以上)上运行,因此建议您不妨试用一下。已发布的示例中包含兼容 Android Studio 的项目配置。如要运行该应用,只需在 Android Studio 中导入项目、连接您的设备,然后点击“Run”(运行)即可。如需了解更多详细说明,请参阅项目的 README 文件。欢迎您通过 #TFLite、#TensorFlow 和 #PoweredByTF 话题与我们分享您的使用体验!

  • README
    https://github.com/tensorflow/examples/blob/master/lite/examples/model_personalization/README.md



使用迁移学习流水线处理自己的任务

新的 GitHub 示例包含一组易于重复使用的工具,可帮助您轻松创建和使用自己的个性化模型。该示例包含三个不同的独立部分,每个部分负责迁移学习流水线中的一个步骤。


转换器
为了针对您的任务生成迁移学习模型,您需要选取以下两种模型来构成该模型:
  • Base model:通常是在常见的数据丰富型任务上预训练过的深度神经网络。
  • Head model:该模型会将基本模型生成的特征作为输入,然后通过学习这些特征来处理目标(个性化)任务。此模型通常是由几个全连接层组成的简单网络。


您可以在 TensorFlow 中定义您的模型,或者使用转换器自带的一些快捷方式轻松完成模型定义。具体而言,对于包含一个全连接层和 softmax 激活函数的标头模型来说,SoftmaxClassifier 便是该模型自带的快捷方式,并且它经过专门优化,可以更好地适配 TensorFlow Lite。

迁移学习转换器会提供 CLI 和 Python API,因此您可以在自己的程序或 notebook 中使用该转换器。


Android 库

迁移学习转换器生成的迁移学习模型无法直接用于 TensorFlow Lite 解释器。您需要使用中间层来处理该模型的非线性生命周期 (non-linear lifecycle)。目前,我们只会提供此中间层的 Android 实现。

Android 库作为示例的一部分托管运行,但该库位于独立的 Gradle 模块中,因此可以轻松整合到任何 Android 应用中。

如要详细了解迁移学习流水线,请参阅 README 中的详细说明。

  • README
    https://github.com/tensorflow/examples/blob/master/lite/examples/model_personalization/README.md



未来工作

未来,我们可能会同时开展迁移学习流水线的改进工作,以及 TensorFlow Lite 完整训练解决方案的开发工作。今天我们只是单独以 GitHub 示例的形式为您简单介绍迁移学习流水线,日后我们将提供完整的训练方案。接下来,我们会调整迁移学习转换器,以生成无需其他运行时库就能运行的单个 TensorFlow Lite 模型。

感谢您阅读这篇文章!有关您使用此流水线开展的任何项目,请通过 TensorFlow Lite Google 网上论坛 (https://groups.google.com/a/tensorflow.org/forum/#!forum/tflite) 与我们分享。



致谢

作为一项团队成果,本项目的成功离不开期间为我提供指导的 Yu-Cheng Ling 和 Jared Duke,同时也要感谢 Eileen Mao 和 Tanjin Prity,以及 Google TensorFlow Lite 团队中的实习生等其他成员。



登录查看更多
0

相关内容

迁移学习(Transfer Learning)是一种机器学习方法,是把一个领域(即源领域)的知识,迁移到另外一个领域(即目标领域),使得目标领域能够取得更好的学习效果。迁移学习(TL)是机器学习(ML)中的一个研究问题,着重于存储在解决一个问题时获得的知识并将其应用于另一个但相关的问题。例如,在学习识别汽车时获得的知识可以在尝试识别卡车时应用。尽管这两个领域之间的正式联系是有限的,但这一领域的研究与心理学文献关于学习转移的悠久历史有关。从实践的角度来看,为学习新任务而重用或转移先前学习的任务中的信息可能会显着提高强化学习代理的样本效率。

知识荟萃

精品入门和进阶教程、论文和代码整理等

更多

查看相关VIP内容、论文、资讯等
【Amazon】使用预先训练的Transformer模型进行数据增强
专知会员服务
56+阅读 · 2020年3月6日
【Google】利用AUTOML实现加速感知神经网络设计
专知会员服务
29+阅读 · 2020年3月5日
TensorFlow Lite指南实战《TensorFlow Lite A primer》,附48页PPT
专知会员服务
69+阅读 · 2020年1月17日
KGCN:使用TensorFlow进行知识图谱的机器学习
专知会员服务
81+阅读 · 2020年1月13日
【教程】TensorFlow2 最新迁移学习教程和实战
基于TensorFlow和Keras的图像识别
Python程序员
16+阅读 · 2019年6月24日
【机器学习】如何通过机器学习预测维护设备?
产业智能官
16+阅读 · 2018年7月9日
TensorFlow图像分类教程
机器学习研究会
33+阅读 · 2017年12月29日
谷歌发布TensorFlowLite,用半监督跨平台快速训练ML模型!
全球人工智能
5+阅读 · 2017年11月15日
边缘计算:万物互联时代新型计算模型
计算机研究与发展
14+阅读 · 2017年5月19日
Arxiv
4+阅读 · 2020年3月27日
Arxiv
14+阅读 · 2018年4月18日
Arxiv
4+阅读 · 2018年4月9日
VIP会员
相关VIP内容
【Amazon】使用预先训练的Transformer模型进行数据增强
专知会员服务
56+阅读 · 2020年3月6日
【Google】利用AUTOML实现加速感知神经网络设计
专知会员服务
29+阅读 · 2020年3月5日
TensorFlow Lite指南实战《TensorFlow Lite A primer》,附48页PPT
专知会员服务
69+阅读 · 2020年1月17日
KGCN:使用TensorFlow进行知识图谱的机器学习
专知会员服务
81+阅读 · 2020年1月13日
相关资讯
【教程】TensorFlow2 最新迁移学习教程和实战
基于TensorFlow和Keras的图像识别
Python程序员
16+阅读 · 2019年6月24日
【机器学习】如何通过机器学习预测维护设备?
产业智能官
16+阅读 · 2018年7月9日
TensorFlow图像分类教程
机器学习研究会
33+阅读 · 2017年12月29日
谷歌发布TensorFlowLite,用半监督跨平台快速训练ML模型!
全球人工智能
5+阅读 · 2017年11月15日
边缘计算:万物互联时代新型计算模型
计算机研究与发展
14+阅读 · 2017年5月19日
Top
微信扫码咨询专知VIP会员