谷歌开放automl(用谷歌AutoML构建图像分类模型)

全文共2710字,预计学习时长8分钟

谷歌开放automl(用谷歌AutoML构建图像分类模型)(1)

如何用谷歌AutoML创建单标签分类模型?

今天我们将使用一个来自generated.photos的AI生成的人脸数据集,训练该算法,使其能够判断人脸是男是女,然后将模型部署到云端,并且建立算法的网页版。

一起来试试吧!

谷歌开放automl(用谷歌AutoML构建图像分类模型)(2)

获得标签

OK,现在开始吧!先来看看将用于分类的数据。总计有2000张人脸照片。

谷歌开放automl(用谷歌AutoML构建图像分类模型)(3)

难以相信这些人脸都不是真的!现在,需要获得真值 (ground truth) 标签来训练算法。可以在wao.ai网站上新建一个图片分类的任务来快速获取标签。

任务完成后就可以得到一个包含真值标签的CSV文件(点击此处下载https://wao.ai/blog/single-label-image-classification-google-automl)。

谷歌开放automl(用谷歌AutoML构建图像分类模型)(4)

建立项目

是时候打开谷歌AutoML了。本节内容为在谷歌AutoML上新建数据集并开始训练模型。

如果读者还没有账号,请在谷歌云端平台(Google CloudPlatform, GCP) 注册账户,然后建立一个新项目。

谷歌开放automl(用谷歌AutoML构建图像分类模型)(5)

新建项目之后,可以通过侧边栏或者顶端搜索栏进入谷歌AutoML。读者可能需要启用一些API,完成账单设置,GCP会引导用户完成这一过程。

谷歌开放automl(用谷歌AutoML构建图像分类模型)(6)

接下来,点击“图像分类”(Image Classification)版块的“开始”(Get Started),进入数据集界面。

谷歌开放automl(用谷歌AutoML构建图像分类模型)(7)

进入数据集界面,该界面中,点击“创建新的数据集”(Create NewDataset),填写细节设置以训练数据集。

谷歌开放automl(用谷歌AutoML构建图像分类模型)(8)

谷歌开放automl(用谷歌AutoML构建图像分类模型)(9)

格式化输入数据

现在才能真正把数据输入到谷歌云端平台。所有的数据都必须存入GCP存储桶(Storage Bucket) 中。由于数据集过大,浏览器界面可能无法正常运行。

不过,GCP命令行工具应该可以正常运行。

点击https://cloud.google.com/sdk/安装谷歌云SDK(包含命令行工具)。

现在只需执行gsutil cp -rpath/to/faces gs://YOUR_BUCKET/faces将文件移动到存储桶。请务必将YOUR_BUCKET更改为自己的存储桶名(下方截屏中可以看到笔者的存储桶名是 woven-icon-263815-vcm)。

谷歌开放automl(用谷歌AutoML构建图像分类模型)(10)

接下来,把wao.ai的真值标签CSV文件转换为AutoML要求的CSV输出。

原始的CSV文件是这样的:

谷歌开放automl(用谷歌AutoML构建图像分类模型)(11)

为了让谷歌AutoML便于使用,需进行如下调整:

谷歌开放automl(用谷歌AutoML构建图像分类模型)(12)

笔者在ipython终端中用pandas库的DataFrame完成了这一操作,如下图所示:

谷歌开放automl(用谷歌AutoML构建图像分类模型)(13)

谷歌开放automl(用谷歌AutoML构建图像分类模型)(14)

谷歌开放automl(用谷歌AutoML构建图像分类模型)(15)

数据集创建完成

现在有了符合谷歌AutoML格式要求的CSV文件,可以完成数据集的创建了。

将新创建的CSV文件上传到存储桶,在 “导入数据集”(Import Dataset)界面中选中它。

谷歌开放automl(用谷歌AutoML构建图像分类模型)(16)

输入数据后,可在浏览器中查看所有图片和标签。

谷歌开放automl(用谷歌AutoML构建图像分类模型)(17)

谷歌开放automl(用谷歌AutoML构建图像分类模型)(18)

创建模型

本节内容为,利用方便易用的API创建一个在GCP上运行的云端模型,以及一个可以导出到Tensorflow的边缘模型 (Edge Model) ,并且能在本地或托管的移动设备及浏览器上运行。

1.训练云端模型

打开“训练”(TRAIN)选项卡,点击“开始训练”(START TRAINING)。笔者保留了所有默认选项。

谷歌开放automl(用谷歌AutoML构建图像分类模型)(19)

谷歌开放automl(用谷歌AutoML构建图像分类模型)(20)

谷歌开放automl(用谷歌AutoML构建图像分类模型)(21)

模型会在数小时内完成,页面上会显示其相关性能及花费的预算(笔者总共花费了16个小时):

谷歌开放automl(用谷歌AutoML构建图像分类模型)(22)

2. 训练(可以在任何地方运行的)“边缘”模型

创建边缘模型的方法基本上是一样的,只是不再点击“云端模型”(Cloud),而是“边缘模型”(Edge)。创建边缘模型时可以选择优化速度或者准确性。笔者选择了优化准确性,因为笔者想将边缘模型与云端模型进行比较。

谷歌开放automl(用谷歌AutoML构建图像分类模型)(23)

谷歌开放automl(用谷歌AutoML构建图像分类模型)(24)

谷歌开放automl(用谷歌AutoML构建图像分类模型)(25)

结果

在“评估”(EVALUATE)选项卡中可以看到模型的性能。云端模型的准确率达到了94.5%,而边缘模型的准确率达到了95.5%。令人吃惊的是,云端模型表现稍差,而其训练成本更高!

总的来说,两个模型的表现都让人满意。混淆矩阵显示,云端模型预测男性面孔比预测女性面孔的错误率要高,而边缘模型的错误率则更为平均。

云端模型性能

下方截图中,可以看到云端模型的混淆矩阵以及AutoML报告的一些数据。比起预测男性面孔,云端模型在预测女性面孔方面较为出色。

谷歌开放automl(用谷歌AutoML构建图像分类模型)(26)

边缘模型性能

下方截图中,可以看到边缘模型的混淆矩阵以及AutoML报告的一些数据。边缘模型在预测男性面孔方面的表现略胜一筹!

谷歌开放automl(用谷歌AutoML构建图像分类模型)(27)

谷歌开放automl(用谷歌AutoML构建图像分类模型)(28)

边缘情况

对于模型在哪里表现好、哪里出了错,谷歌AutoML提供了统计分析。跟笔者的keras模型一样,问题出在儿童的照片和一些异常的面部角度上。下面的截图展示了一些误报 (False Positives) 和漏报 (False Negatives) 的例子。

谷歌开放automl(用谷歌AutoML构建图像分类模型)(29)

谷歌开放automl(用谷歌AutoML构建图像分类模型)(30)

谷歌开放automl(用谷歌AutoML构建图像分类模型)(31)

模型部署

现在拿到了满意的模型,就可以投入使用了!云端模型可以部署在GCP上,边缘模型可以下载后再Tensorflow上运行。一起来看看云端模型和边缘模型的部署吧!

部署云端模型

打开“测试及应用”(TEST& USE)选项卡,点击“部署模型”(DEPLOY MODEL)选项。为了测试,笔者决定只部署一个节点。部署模型花了大约一个小时。

谷歌开放automl(用谷歌AutoML构建图像分类模型)(32)

云端模型展示了一个简单易用的API,能够以此上传一个简单的JSON对象,然后收到一组预测和概率。对于笔者来说,这是完美的集成API,简洁又便利。

谷歌开放automl(用谷歌AutoML构建图像分类模型)(33)

可以直接在浏览器中使用API并检查结果。笔者从训练数据集中上传了一些脸部照片,看起来模型运行得很不错!总体而言,如果能负担得起后台运行云实例的费用,使用API还是很便捷的。

部署边缘模型

对于边缘模型部署,下载模型的办法有很多。每个选项都非常强大:

· TF Lite:支持在移动设备上运行模型

· TensorFlow.js:支持在网页浏览器上运行模型

· Core ML:支持在苹果设备上运行模型

· 容器 (Container):支持在docker容器中运行模型(十分适合网页服务器)

谷歌开放automl(用谷歌AutoML构建图像分类模型)(34)

注意:该模型无需上传图片至服务器,整个过程在本地运行!

谷歌开放automl(用谷歌AutoML构建图像分类模型)(35)

来源:Pexels

总的来说,谷歌AutoML在构建图像分类模型上简单易用而且非常高效。

下一次,我们再尝试看看其他云供应商,看看他们孰优孰劣吧!

谷歌开放automl(用谷歌AutoML构建图像分类模型)(36)

留言点赞关注

我们一起分享AI学习与发展的干货

如转载,请后台留言,遵守转载规范

,

免责声明:本文仅代表文章作者的个人观点,与本站无关。其原创性、真实性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容文字的真实性、完整性和原创性本站不作任何保证或承诺,请读者仅作参考,并自行核实相关内容。文章投诉邮箱:anhduc.ph@yahoo.com

    分享
    投诉
    首页