Press "Enter" to skip to content

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

文 /  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 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

Home

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

 

您可以立即训练一个 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

 

Be First to Comment

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注