概述

前几天的 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 吗,它支持的 onnx 模型文件格式,在 Custom Vision 中并不支持,这还是一家人吗?

Microsoft AI - Custom Vision的更多相关文章

  1. Microsoft AI - Custom Vision in C#

    概述 前面一篇 Microsoft AI - Custom Vision 中,我们介绍了 Azure 认知服务中的自定义影像服务:Custom Vision,也介绍了如果通过这个在线服务,可视化的完成 ...

  2. 1小时快速搭建基于Azure Custom Vision和树莓派的鸟类分类和识别应用

    1. 引言 最近在微软Learn平台学习Azure认知服务相关的内容,看到了一个有关"使用自定义视觉对濒危鸟类进行分类"的专题,该专题的主要内容就是使用 Azure Custom ...

  3. Add AI feature to Xamarin.Forms app

    Now, AI is one of important technologies.Almost all platforms have API sets of AI. Following list is ...

  4. AI应用开发实战

    AI应用开发实战 出发点 目前,人工智能在语音.文字.图像的识别与解析领域带来了跨越式的发展,各种框架.算法如雨后春笋一般,互联网上随处可见与机器学习有关的学习资源,各大mooc平台.博客.公开课都推 ...

  5. Modernizing Business Process with Cloud and AI

    The world is awash with digital transformation. Every customer and partner that I talk to, across ev ...

  6. dynamics 365 AI 解决方案 —— 介绍

    Digital transformation has been reshaping our world and artificial intelligence (AI) is one of the n ...

  7. Microsoft Hackathon 2019 留念

    参加今年微软的 Hackathon 是 2019 年 7 月份的事情,但是后来各种各样的事情,考托.考G.网申……就给耽搁了.我本来以为自己的记忆力足够好,几个月以后也能写很多东西,然鹅……现在发现好 ...

  8. Microsoft 机器学习产品体系对比和介绍

    Microsoft 提供多种多样的产品选项用于生成.部署和管理机器学习模型. 本文将比较这些产品,并帮助你选择所需的产品,以便最有效地开发机器学习解决方案. 机器学习产品 描述 作用 Azure云端服 ...

  9. MS Batch AI

    微软的Batch AI服务是一项新服务,它可以帮助你在GPU pool上训练和测试机器学习模型,包括深度学习模型.它简化了在当前许多流行的深度学习框架(如TensorFlow.Microsoft认知工 ...

随机推荐

  1. mongodb 3.4 分片 一主 一副 一仲 鉴权集群部署.

    Docker方式部署 为了避免过分冗余,并且在主节点挂了,还能顺利自动提升,所以加入仲裁节点 mongodb版本: 环境:一台虚拟机 三个configsvr 副本: 端口为 27020,27021,2 ...

  2. nginx笔记3-负载均衡算法

    1.nginx测试:先从官网下载nginx 官网网址为:http://nginx.org/  然后找到stable version的版本下载,因为这版本是最稳定的,不要去下载最新,因为不稳定,如下图: ...

  3. 实用技巧:如何通过IP地址进行精准定位

    在甲方工作的朋友可能会遇到这样的问题,服务器或者系统经常被扫描,通过IP地址我们只能查到某一个市级城市,如下图: 当我们想具体到街道甚至门牌号,该怎么办??? 偶然间发现百度地图有高精度IP定位API ...

  4. Http协议规范及格式

    HTTP(HyperTextTransferProtocol)是超文本传输协议的缩写,它用于传送WWW方式的数据,关于HTTP协议的详细内容请参考RFC2616.HTTP协议采用了请求/响应模型.客户 ...

  5. 2.3 PCI桥与PCI设备的配置空间

    PCI设备都有独立的配置空间,HOST主桥通过配置读写总线事务访问这段空间.PCI总线规定了三种类型的PCI配置空间,分别是PCI Agent设备使用的配置空间,PCI桥使用的配置空间和Cardbus ...

  6. dojo实现省份地市级联报错(一)

  7. Solution for link error:Cannot Open File 'python27_d.lib'

    引自:http://guangboo.org/2013/01/17/solution-link-errorcannot-open-file-python27_dlib 感谢原作者 使用C调用Pytho ...

  8. 图像处理------快速均值模糊(Box Blur)

    图像模糊的本质, 从数字信号处理的角度看,图像模糊就要压制高频信号保留低频信号, 压制高频的信号的一个可选择的方法就是卷积滤波.选择一个低频滤波器,对图像上的 每个像素实现低频滤波,这样整体效果就是一 ...

  9. PL/SQL 基础知识简介

    1.PL/SQL代码块 PL/SQL 代码块是指令的集合,支持所有的DML,NDS,DBMS_SQL,DDL. :DML 是数据操纵语言(Data Manipulation Language)包括,I ...

  10. Exception in thread "main" java.lang.IllegalArgumentException

    1.错误描述 Exception in thread "main" java.lang.IllegalArgumentException: Cannot format given ...