实操指南:用谷歌AutoML构建图像分类模型


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


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

 

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

 

一起来试试吧!

 

获得标签

 

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

 

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

 

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

 

建立项目

 

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

 

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

 

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

 

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

 

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

 

格式化输入数据

 

现在才能真正把数据输入到谷歌云端平台。所有的数据都必须存入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)。

 

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

 

原始的CSV文件是这样的:

 

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

 

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

 

 

数据集创建完成

 

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

 

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

 

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

 

创建模型

 

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

 

1.训练云端模型

 

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

 

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

 

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

 

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

 

 

结果

 

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

 

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

 

云端模型性能

 

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

 

边缘模型性能

 

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

 

边缘情况

 

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

 

 

模型部署

 

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

 

部署云端模型

 

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

 

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

 

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

 

部署边缘模型

 

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

 

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

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

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

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

 

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

 

来源:Pexels

 

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

 

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


推荐阅读专题

留言点赞发个朋友圈

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

编译组:蔡思齐、莫菲菲

相关链接:

https://hackernoon.com/image-classification-model-with-google-automl-a-how-to-guide-wa7n3b6n

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

推荐文章阅读

ACL2018论文集50篇解读

EMNLP2017论文集28篇论文解读

2018年AI三大顶会中国学术成果全链接

ACL2017论文集:34篇解读干货全在这里

10篇AAAI2017经典论文回顾

长按识别二维码可添加关注

读芯君爱你

发布了896 篇原创文章 · 获赞 2856 · 访问量 52万+

猜你喜欢

转载自blog.csdn.net/duxinshuxiaobian/article/details/104912441