来源 | Seve
编译 | 火火酱,责编| Carol
出品 | AI科技大本营(ID:rgznai100)
在本教程中,我将向大家展示如何在Google AutoML中创建单个标签分类模型。我们将使用来自generate.photos的AI生成的面孔数据集。通过算法训练来判断一张脸是男性还是女性。之后,我们会将模型部署到云中,并创建该算法的Web浏览器版本。
generate.photos:
https://generated.photos/
获取标签
下面,就让我们开始吧!首先,让我们看一下要分类的数据。总共约有2,000张人脸照片。
数据下载链接:
https://wao.ai/blog/single-label-image-classification-google-automl
很难相信这些面孔是假的对吧!那么,现在让我们获取ground truth标签来对算法进行训练吧。首先创建图片分类作业,我们可以借助wao.ai来迅速完成此操作,你可以通过下方视频链接了解该过程。
wao.ai:https://wao.ai/
视频链接:https://www.youtube.com/watch?v=adjwhyqdXOM
工作完成后,我们会获得一个包含ground-truth标签的CSV文件。
CSV文件下载链接:
https://wao.ai/blog/single-label-image-classification-google-automl
建立项目
现在可以开始使用Google AutoML了。接下来,我们将在Google AutoML上创建一个数据集,并开始训练我们的模型。
如果你还没有账户,请先在Google Cloud Platform上创建一个帐户。然后,我们需要创建一个新项目。
创建项目后,我们可以使用顶部的侧边栏或搜索栏导航到Google AutoML。你可能需要启用一些API并设置好结算功能,GCP会引导你完成该过程。
接下来,点击“图像分类(Image Classification)”。
然后我们将会进入“数据集(Dataset)”界面。在该界面中,单击“创建新数据集(Create New Dataset)”,并填写数据集的一些详细信息以进行训练。
格式化输入数据
现在我们将自己的数据放入Google Cloud Platform。所有数据都必须位于GCP存储桶中。因为我们的数据集太大,所以浏览器界面无法正常工作。
但是,GCP命令行工具应该可以正常运行。你也可以安装Google Cloud SDK(其中包括命令行工具)。
Google Cloud SDK下载链接:
https://cloud.google.com/sdk/
现在,我们只需要执行gsutil cp -r path / to / faces gs:// YOUR_BUCKET / faces即可将文件移到存储桶中。确保将YOUR_BUCKET更改为为你创建的存储库的名称(在下面的截图中,我的存储库名称为woven-icon-263815-vcm)。
接下来,我们要将ground-truth标签CSV从wao.ai转换为AutoML期望的CSV输出。
(wao.ai:https://wao.ai/)
我们的原始CSV如下图所示:
为了方便使用Google AutoML,我们需要将其转换为:
我在ipython终端中使用Pandas DataFrame进行了此操作(如下图所示):
Pandas:https://pandas.pydata.org/
完成创建数据集
现在,我们有了Google AutoML所需格式的CSV,就可以完成创建自己数据集的准备工作了。
将我们创建的新CSV上传到你的存储库中,然后在“导入数据集(Import Dataset)”界面中选择该库。
导入数据后,你可以从浏览器中查看所有的图像和标签。
创建模型
在本节中,我们将创建一个运行在GCP上的云模型,该模型具有易于使用的API以及可以导出到Tensorflow并在本地或本地托管的移动设备和浏览器上运行的Edge模型。
1. 训练云模型
导航到“训练(TRAIN)”选项卡,然后单击“开始训练(START TRAINING)”。我使用了所有的默认选项。
几个小时后,模型完成,并概述了模型的性能和所用的预算(我分配的全部是16小时)
2. 训练“边缘”模型(可以在任何地方运行的模型)
创建边缘模型的方法基本相同,只需单击“边缘(Edge)”而不是“云(Cloud)”即可。当创建边缘模型时,你可以优化其速度或精度。因为我想将边缘模型与云模型进行比较,所以我决定对精度进行优化。
结果
在“评估(EVALUATE)”选项卡中,我们能够看到模型的执行效果。云模型的准确率为94.5%。边缘模型的准确率为95.5%。让我惊讶的是,云模型的表现竟然稍差一些,特别是考虑到它的培训成本要更高之后!
总的来说,我对两个模型的性能都很满意。由混淆矩阵可知,云模型在预测男性时出错较多,而边缘模型的失误率则更均匀。
云模型性能
在下面的屏幕截图中,你可以看到云模型的混乱矩阵,以及AutoML报告的一些统计信息。它在预测女性方面略优于男性。
边缘模型性能
在以下截图中,你可以看到边缘模型的混淆矩阵以及AutoML报告的一些统计数据。边缘模型在预测男性方面略胜一筹!
边缘案例
Google AutoML为你提供了模型在哪些方面表现良好以及哪些地方出错的细目。和我的keras模型一样,儿童和不寻常的面部角度都是个问题。以下屏幕截图中显示了误报的案例。
部署模型
既然我们已经获得了满意的模型,那么我们就该应用一下了!我们的云模型可以部署在GCP上,Edge模型可供下载并同Tensorflow一起运行。让我们一起来探索云模型和边缘模型的部署吧。
云部署
导航到“测试&使用(TEST&USE)”选项卡,然后单击“部署模型(DEPLOY MODEL)”按钮。为了进行测试,我决定只部署到一个节点。部署该模型大约花费一个小时。
云模型公开了一个易于使用的API,你可以在其中上传一个简单的JSON对象并接收到一组带有返回概率的预测。对我来说,这是简单且完美的集成API。
我们还可以直接在浏览器中使用API并检查结果。我从训练集中上传了一些面部照片,看起来效果还不错!总的来说,如果你有能力在后台运行云实例,那么我认为这是一个非常易于使用的API。
边缘部署
对于边缘部署,我们有多种下载模型的方法。每种方法都非常强大:
TF Lite:允许你在移动设备上运行模型
(TF Lite:https://www.tensorflow.org/lite)
TensorFlow.js:允许你在网络浏览器中运行模型
(TensorFlow.js:https://www.tensorflow.org/js)
Core ML:允许你在Apple设备上运行模型
(Core ML:https://developer.apple.com/documentation/coreml)
Container:允许你在Docker容器中运行模型(对于Web服务器而言是完美的)
(Container:https://www.docker.com/resources/what-container)
我下载了Tensorflow.js 模型,并构建了一个使用Edge模型和网络摄像头的demo示范。注意:此模型不会将你的图像上传到服务器,所有内容都在本地运行!
(demo示范链接:https://wao.ai/blog/can-ai-guess-our-sex)
结语
总而言之,Google AutoML在该任务上易于使用,且非常有效。我期待着尝试其他云提供商,看看他们比较起来表现如何!
原文:
https://hackernoon.com/image-classification-model-with-google-automl-a-how-to-guide-wa7n3b6n
(*本文由 AI 科技大本营编译,转载请联系微信1092722531)
【end】
◆
精彩推荐
◆
今晚晚7点,阿里巴巴集团副总裁华先胜——《人工智能:是风、是云,还是雨?》
面向开发者详解视觉智能技术规模化落地的挑战;面向企业详述如何通过核心AI技术、产品化 及平台化实现客户价值并构建壁垒?
识别下方二维码或者点击阅读原文即刻报名
推荐阅读
机器学习中的线性回归,你理解多少?
华为诺亚、北大提出GhostNet,使用线性变换生成特征图,准确率超MobileNet v3
两成开发者月薪超 1.7 万、算法工程师最紧缺! | 中国开发者年度报告
探索处理数据的新方法,8 个重点带你搞懂云数据库——DBaaS(数据库即服务)到底是什么!
远程办公是一阵“过渡风”还是会“继续燃烧”?
在家办公憋疯了?不,我还能再待一年!
你点的每个“在看”,我都认真当成了AI