查看原文
其他

Microsoft AI | 微软自定义影像服务,了解一下?

2018-03-29 邵猛 Microsoft资讯

点击蓝字关注爱微软,爱这里

文 | @shao_meng

微软最有价值专家(MVP) |  2014-2016

概述

微软在近期的 Windows Developer Day 上正式发布了 Windows AI Platform,而作为 Windows AI Platform 的模型定义和训练,更多还是需要借助云端来实现。Azure 无疑是一个很好的选择。 

Azure 作为微软近几年主推的云服务,在 AI 和 Machine Learning 方面也处于领先水平。目前 Azure 提供的 AI 能力涵盖了机器视觉、语义语音、语言理解、语言翻译、认知服务等各个领域。它们大多以封装的 API 出现,开发者不需要关心训练数据集的采集,不需要关心训练过程和训练后的数据模型,只需要调用 API,输入你的数据拿到理想的输出就可以了,可以说是非常方便了,比如 Azure 的 Face API、Computer Vision API 等。但是,如果我们的数据集不是通用数据集,我们想使用自定义的特征,制定自己的分类呢?这种封装好的 API 似乎就不那么适合了。 

针对这种场景,微软推出了 Custom Vision Service(自定义影像服务),包含在 Cognitive Services(认知服务)中,目前还处于 PREVIEW 阶段。虽然叫做 Custom Vision,但是目前只提供了图像自定义,或者叫做图像分类功能,在正式发布使用后应该会扩充影像定义的其他领域。

服务体验

  • 基本概念 

Custom Vision - Visual Intelligence Made Easy 

这是 Custom Vision 的 Slogan,让视觉智能变得简单。而为什么叫做自定义呢,看看官网的一张使用流程图: 

  • Upload Images - 上传图片并做标记 

  • Train - 使用标记图片训练模型 

  • Evaluate - 对训练后的模型进行训练


  • 使用过程

Custom Vision 的管理单位是项目,登录微软账号后,点击 “New Project” 我们就可以开始创建新的项目了: 

输入项目名字和描述,选择一个域,就成功创建出一个项目了。这里我们重点看一下目前提供的域:General、Food、Landmarks、Retail、Adault、General (compact)、Landmarks (compact)、Retail (compact)。其中标注为 compact 的三个域,训练后的模型都是可以导出的。可以看出,因为还在预览阶段,所以提供的域还很少,对于开发者来说,如果可以确定为某个域的识别,就选择那个域,如果不能确定,就选定为 General。 

项目创建成功后,我们来看一下项目主页面: 

  • Training Images - 上传你的训练图片数据集,上传后给每张图片做标记;在 Workspace 中对图片和标记进行管理; 

  • Performance - 针对训练数据的表现,可以看到每个分类训练后的表现数值,来调整自己的表现阈值; 

  • Predictions - 针对训练后的模型,评估和预测对测试图片的分类准确度表现; 

  • Train - 准备好训练图片数据集后,点击 Train 按钮开始训练任务; 

  • Quick Test - 训练完成后,可以用测试图片在线进行简单快速的测试; 

接下来我们结合实际应用场景,实际体验一下使用过程。我们针对 5 个分类的手绘草稿进行分类识别,每个分类 10 张图片,分类分别是:airplane,alarmclock,ambulance,ant,arm。

需要注意的是,Custom Vision 对分类的数量和每个分类的图片量都有要求,至少两个分类,每个分类至少五张图片; 

另外,因为 Custom Vision 还是预览版,所以对图片和项目的上限也有限制,每个项目只能上传 1000 张图片,50 个分类,20 次迭代。另外创建项目总数限制为 20 个项目,预测的 key 上限是每天 1000 个。如果使用 Azure 账号登录,数量限制会被取消,对应的是一个收费策略,针对 Azure 国际版用户: 

现在开始通过我们的 50 张图片的数据集来训练模型: 

可以看到,因为我们上传图片的量级很小,而且数据特征不是很稳定,所以每个分类训练的准确度都不太稳定,召回率也是一样。 

数据模型训练完成后,我们先用最简单的方式 “Quick Test” 来测试一下分类准确度: 

首先用一张在分类内的图片 airplane 来测试,可以看到,识别为 airplane 的几率明显大于其他几个分类。 

再用一张不在分类内的 fish 来测试,因为 fish 不在我们的 5 个分类里,而且这张手绘草稿中的特征和分类里的也不相近,所以识别结果比较平均,且都比较低,这个结果在预期内。 

  • API 结果验证 

除了 "Quick Test" 的简单在线测试方式,还支持 API Prediction 方式,对于批量自动化测试更适合。在 Prediction Tab,可以看到这个项目对应的 API 地址和 Key 信息: 

为了验证简洁,我们使用 Postman 按照上面指引的方式来设置参数和输入图片: 

我们使用本地文件进行测试,设置 Headers 和 binary 类型的 Body 后,得到以下结果: 

里的 airplane 文件其实就是上面 Quick Test 的第一张图片,所以可以看出,检测结果也是一样的,这也验证了两种验证方式的结果。

  • 模型导出 

上面我们说过,带有 compact 字样的模型是可以导出的,目前 Custom Vision 平台支持的导出方式有两种: 

  • iOS 11 (Core ML) - .mkmodel 文件格式 

  • Android (Tensorflow) - .pb 文件格式 

看到这里,不禁想吐槽一把,大家还记得前面介绍过的 Windows AI Platform 吗,

Windows ML是什么?为你揭开微软全新人工智能平台的面纱

它支持的 onnx 模型文件格式,在 Custom Vision 中并不支持,这还是一家人吗?😭 不过 Custom Vision 目前还是预览版,我们还是期待正式发布时可以支持吧。 

不过也没有关系,我们依然可以创建一个 Android 或 iOS 工程来验证,官网也提供了这两个平台的示例: 

Azure-Samples/cognitive-services-ios-customvision-sample 

Azure-Samples/cognitive-services-android-customvision-sample 

以及,在介绍 onnx 时,我们就看到 WinMLTools 工具,可以把很多格式转换为 onnx 格式:

Python WinMLTools 0.1.0.5072

https://pypi.python.org/pypi/winmltools

这里暂时不做验证了。 

  • 编程实现 

除了使用 Custom Vision 网站进行图片上传和训练,Custom Vision 还支持通过代码来创建项目,上传图片,触发模型训练,对模型做验证等。目前支持的编程语言是 C# 和 Python,这看起来很合理,毕竟一个是官方语言,一个是最常用的 AI 编程语言。其中 C# 使用的是 Azure 的认知服务 SDK:

https://github.com/Microsoft/Cognitive-CustomVision-Windows/. 

这里暂不展开,后面会详细讲解 C# 创建应用实现 Custom Vision。

展望

由于目前 Custom Vision 还是预览版,所以能实现的功能还很有限,只有图片识别分类功能。但是根据它的名字,自定义图像,后面应该会有更多种类的服务发布。而且它包含在 Azure 的认知服务中,这个服务是 Azure 主打的人工智能服务的重要部分,可以想见后面会有更重要的应用和推广。而且结合 Azure 账户,训练数据的量级也不再受限制,这给那种人工智能的数据集非固定,特征自定义的场景提供了很大的便利,开发者既能自定义数据和特性,又不用自己搭建机器学习环境,也不用自己手写数学模型。可以说是很值得期待的!

自定义影像服务(预览)

https://azure.microsoft.com/zh-cn/services/cognitive-services/custom-vision-service/

推荐阅读

从 Java 到物联网,微软智能云全力支持开源创新


小米与微软达成战略合作:助力小米进军全球市场


15 英寸微软 Surface Book 2 在中国市场正式开售


纳德拉扭转微软企业文化,2200名离职老员工回来了


Windows Developer Day | 微软人工智能与机器学习予力开发者创造不凡

微软全新人工智能平台:Windows ML


https://v.qq.com/txp/iframe/player.html?vid=w0609n9u0el&width=500&height=375&auto=0


还不知道微软8大专家兴趣群的IT兽,

啥都别说了直接扫上面的码!

AI美少女小冰

在后台等你



▲向上滑动


【阅读原文】


掌握微软最新动态!



想和我一起玩耍?

MSQTXF


我在微博等你

Microsoft资讯


您与Microsoft资讯的距离

只有长按识别的0.5秒►


您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存