查看原文
其他

利用 AutoML 的功能构建和部署 TensorFlow.js 模型

Google TensorFlow 2021-08-05

文 /  Daniel Smilkov、Sandeep Gupta 和 Vishy Tirumalashetty

TensorFlow.js (tensorflow.google.cn/js) 是一个开源库,可让您使用 Javascript 定义、训练和运行机器学习模型。TF.js 库帮助广大 JavaScript 社区中的开发者构建和部署机器学习模型,并开创新型边缘计算。


TensorFlow.js 支持所有主流浏览器、Node.js 中的服务器端,最近开始支持微信 React Native。借助此开源库,混合应用无需离开 JS 生态系统即可使用 ML 模型。今天,我们很高兴为 JavaScript 开发者带来另外一种新方法,让您在 JavaScript 应用中借助 Google Cloud 的 AutoML 服务,对基于您自己数据的自定义模型进行便捷地训练与部署。

  • 微信
    https://github.com/tensorflow/tfjs-wechat

  • React Native
    https://github.com/tensorflow/tfjs/tree/master/tfjs-react-native


TensorFlow.js 的一个主要目标是让 JS 开发者无需创建自己的模型即可利用 ML 的优势。现在有两种将 ML 功能引入 JavaScript 应用的方法:使用预封装模型,或使用您自己的数据进行 fine-tune 训练。


例如,我们的预封装 姿势识别 和 人物分割 模型可助您构建全新用户交互形式,并且可为新的辅助工具奠定基础。所有此类模型均在 NPM 上发布,您只需输入几行代码即可使用(这一切并不需要具备 ML 相关知识!):

<script src="https://cdn.jsdelivr.net/npm/@tensorflow/tfjs"></script>
<script src="https://cdn.jsdelivr.net/npm/@tensorflow-models/posenet"></script>
<img id="tennis" src="tennis.jpg"/>
<script>
async function run() {
const net = await posenet.load();
const image = document.getElementById('tennis');
const pose = await net.estimateSinglePose(image);
console.log(pose);
}
run();
</script>
  • 全新用户交互形式
    https://twitter.com/teropa/status/1001151524351959041

  • 辅助工具
    https://experiments.withgoogle.com/collection/creatability


如果是基于已有的数据,则可从预训练模型入手,然后对模型 fine-tune 。预训练模型和训练本身均支持 Python 或 JavaScript 环境。如果使用 Python 完成训练,则您可使用我们的转换器将 SavedModel 或 Keras 模型无缝转换到 TensorFlow.js 中。如果 TensorFlow.js 中已有此模型,则无需进行任何转换操作。此 Codelab 将展示如何获取专为边缘设备优化的图像分类模型 MobileNet,以及利用您自己的图像数据集对该模型进行 fine-tune(所有操作均使用 JavaScript 完成)。

  • 转换器
    https://github.com/tensorflow/tfjs/tree/master/tfjs-converter#getting-started

  • Codelab
    https://codelabs.developers.google.com/codelabs/tensorflowjs-teachablemachine-codelab/index.html#0



TensorFlow.js + AutoML

我们很高兴宣布与 Cloud AutoML Vision 集成,这项云服务可让开发者利用自己的标签数据训练自定义模型。如果您的用例与图像分类或对象检测相关,则您无需进行任何编码操作,即可使用以下界面上传数据、训练运行在您浏览器内的模型,并将其直接导出到 TensorFlow.js 模型中。您也可以使用开源的 TensorFlow.js 库(或 Python TensorFlow)直接训练自定义模型,但 AutoML 提供了一个更易于使用的服务来将此过程自动化。

  • Cloud AutoML Vision 
    https://cloud.google.com/vision/automl/docs/


为了简化部署流程,并在 TensorFlow.js 中高效运行这些模型,我们在 NPM 上发布了一个 @tensorflow/tfjs-automl 库。导出模型后,您可以按照指南中的步骤进行图像分类对象检测。该指南使用 NPM 库,指导您如何在浏览器中加载预训练模型,并对图像进行预测。

  • @tensorflow/tfjs-automl 库
    https://www.npmjs.com/package/@tensorflow/tfjs-automl

  • 图像分类
    https://cloud.google.com/vision/automl/docs/tensorflow-js-tutorial

  • 对象检测
    https://cloud.google.com/vision/automl/object-detection/docs/tensorflow-js-tutorial


即使您已有自定义模型,AutoML 仍可发挥极大作用。经过优化,AutoML Vision Edge 模型只占用小部分内存,并能实现低延迟时间、高准确率。我们与多个客户和合作伙伴展开合作,并已获得一些可喜的早期成果和反馈。业务与技术咨询公司 CVP 一直通过远程使用边缘计算模型来进行工作场所安全评估。CVP 数据科学总监 Cal Zemelman 对其成果评价如下:

我们正在为联邦机构开发能够进行图像分类的智能手机应用,这款智能应用可以帮助防范意外事故,改善公共安全状况。这是一个渐进式网页应用 (Progressive Web App),主要使用 JavaScript 编写,并支持跨平台使用。我们训练了一个 Keras 模型,然后将其转换为 TensorFlow.js 模型。借助全新“导出到 TensorFlow.js”功能,我们可以使用 AutoML 进行测试,从而大大简化模型创建工作流。
在此之前,我们最好的模型是经过重新训练的 ResNet50,其准确率在 91% 左右。在AutoML 中以中等负荷进行5 个节点训练小时 (node hour) 的图像分类训练,模型能够达到 99% 的准确率。此外,其大小是以前模型的 1/5,而且我们发现其推理速度提高了 60%。
  • CVP
    https://www.cvpcorp.com/


我们非常高兴看到客户与合作伙伴的工作初见成效,并期待听到更多好消息。


您可以立即训练一个 AutoML Vision Edge 模型。完成训练后,您可以将此 TensorFlow.js 模型导出到客户端应用中。使用 AutoML Vision Edge 时,您只需为训练付费,您可免费获得多达 15 个节点时的使用权。导出或客户端预测则无需支付任何费用。



后续步骤

  • 如需详细了解 AutoML,请访问:https://cloud.google.com/automl/

  • 如要进行对象检测,请按照训练部署到 TensorFlow.js 的分步指南操作

    • 训练
      https://cloud.google.com/vision/automl/object-detection/docs/edge-quickstart

    • 部署
      https://cloud.google.com/vision/automl/object-detection/docs/tensorflow-js-tutorial

  • 如要进行图像分类,请按照训练部署到 TensorFlow.js 的分步指南操作

    • 训练
      https://cloud.google.com/vision/automl/docs/edge-quickstart

    • 部署
      https://cloud.google.com/vision/automl/docs/tensor
      flow-js-tutorial

  • 通过官方文档详细了解 AutoML NPM 库。

    • 官方文档
      https://www.npmjs.com/package/@tensorflow/tfjs-automl



    您可能也对以下帖子感兴趣

    文章有问题?点此查看未经处理的缓存