谷歌开放automl(用谷歌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学习与发展的干货
如转载,请后台留言,遵守转载规范
,
免责声明:本文仅代表文章作者的个人观点,与本站无关。其原创性、真实性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容文字的真实性、完整性和原创性本站不作任何保证或承诺,请读者仅作参考,并自行核实相关内容。文章投诉邮箱:anhduc.ph@yahoo.com