用Azure Custom Vision 零代码创建一个口罩识别模型

  新冠肺炎下,地球是一家,不分国籍,不分种族,或者现在只能呆在家中,但是也是一种对抗疫的支持。停课不停学留在家中,不仅是对学生,对于所有人都是有用的。在现阶段,大家可能最需要的不是金钱,而是一个口罩。一个小小的口罩在这次新冠肺炎起到防护作用。今天就从一个口罩开始,零代码做一个口罩识别模型。

公有云的好处是降低企业在IT投入的巨大成本外,在开发上还提供各式各样的PaaS / SaaS 让你零代码就可以接入一些需要专业人士才能完成的工作。微软Azure Custom Vision 就是在公有云上提供计算机视觉零代码训练的一个项目。(https://www.customvision.ai/)

01

你需要注册一个Azure账号(https://signup.azure.com/)


注册后你就可以进入Custom Vision的门户,直接可以创建你的计算机视觉项目了。

02

点击New Project,创建一个计算机视觉项目,选择好资源位置(在国内建议用东亚)

这里介绍一下,计算机视觉一般有两种,一种是图像分类,一种是物体识别,简单来说我们要划分图片类型时基本上用分类,而要判断图片里面有什么的时候我们就用物体识别,因为我们需要判断图片里面的人是否有戴口罩,这个时候就是物体识别。当我们选择完物体识别后,我们需要选择场景,建议选用General(compact)通过Custom Vision的模型可以适配到移动设备上。

03

创建成功后,门户上就会出现生成的项目,点击进入你就可以对这个项目进行使用,这里我们首先要去Tags创建一个标签,因为这里是辨识口罩,所以我在这里添加一个口罩的标签mask,按保存。

04

接下来选择Add images 添加数据,这里要注意Custom  Vsion只是简化了你不需要写算法的操作,但是前期数据采集还是需要人工的,毕竟人工智能= 人工 + 智能 ,而人工>智能 , 原始数据图片可以通过Bing /Baidu 图片查找,我也整理了在我的Azure Notebook上,文章后面我会把我的Notebook地址分享出去。

05

图片导入后,就需要打标记工作,选择Untagged 标记对每张图片,口罩的位置打标签。

当标签打完后选择tag你可以看到完成的状态,以及对应mask标签的汇总

06

标签完成后,就可以选择Train进行训练,你可以选择不同的场景,因为是例子关系,我用了Quick Training。

训练完成分后,会有相关的一些参数,例如Precision, Recall , mAP, 如果你对结果不满意,可以通过增加数据集的方式,或者调整参数的方式进行多次训练。

可以通过Quick Test的方式进行快速测试

07

如果测试结果满意,你可以把模型下载下来,给自己的不同应用场景使用,选择Performance,然后选择Export 即可导出相关模型。

08

这里我导出ONNX 模型,通过Notebook 展示一下相关代码。

  通过Azure Custom Vision你可以零代码完成相关的模型训练,而且模型可以在线导出非常方便,你可以快速搭建一个基于计算机视觉的解决方案,而且你不需要投入很多算例去完成这项工作,节约了资金和团队成本。对于一个没有AI基础的人或者团队,是非常好的工具。大家一起动手试试吧。

相关材料

附上我的Azure Notebook : (https://customvisionmaskdemo-kinfey.notebooks.azure.com/j/notebooks/sample01.ipynb)

备注一些线上文档:

(https://docs.microsoft.com/en-us/azure/cognitive-services/custom-vision-service/)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/310943.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C++拷贝构造函数调用时机分析

让我们来分析下面这段代码&#xff1a; #include <iostream> #include <string> using namespace std;class Employee {private:static int sn;public:Employee() {cout << "Employee()" << endl;mysn sn;}Employee(const string &s) …

百万年薪程序员的7点能力

作者介绍findyi&#xff0c;腾讯、360码农&#xff0c;前哒哒少儿英语技术VP&#xff0c;现任土豆教育CTO。几周前&#xff0c;微盟爆了个大雷&#xff0c;数据库让内部员工删库跑路。写了篇文章&#xff0c;做了一些我的判断&#xff1a;从微盟36小时故障&#xff0c;谈谈数据…

《C++ Primer》13.1.1节练习

练习13.1: 如果构造函数的第一个参数是自身类类型的引用&#xff0c;且所有其他参数&#xff08;如果有的话&#xff09;都有默认值&#xff0c;则此构造函数是拷贝构造函数。拷贝构造函数在以下几种情况下会被使用&#xff1a; ●拷贝初始化&#xff08;用定义变量&#xff09…

Java将五个整数存入整形数组_异常处理:从命令行输入5个整数,放入一整型数组,然后打印输出。。。...

从命令行输入5个整数&#xff0c;放入一整型数组&#xff0c;然后打印输出。要求&#xff1a;如果输入数据不为整数&#xff0c;要捕获输入不匹配异常&#xff0c;显示“请输入整数”&#xff1b;如果输入数据多余5个&#xff0c;捕获数组越界异常&#xff0c;显示“请输入5个整…

优秀的开发者从命名开始

有人说&#xff0c;命名能力也能体现一个程序员的基本编程素养。我很赞成这句话&#xff01;作为开发人员逃不过起名字这一关的,大到项目名、模块名&#xff0c;小到类名、方法名、参数名、参数名、变量名。而命名又对代码的质量和可读性起到很关键的决定。如何码出高质量的代码…

【复杂系统迁移 .NET Core平台系列】之认证和授权

源宝导读&#xff1a;微软跨平台技术框架—.NET Core已经日趋成熟&#xff0c;已经具备了支撑大型系统稳定运行的条件。本文将介绍明源云ERP平台从.NET Framework向.NET Core迁移过程中的实践经验。一、背景随着ERP的产品线越来越多&#xff0c;业务关联也日益复杂&#xff0c;…

《C++ Primer》13.1.3节练习

练习13.9: 析构函数完成与构造函数相反的工作&#xff1a;释放对象使用的资源&#xff0c;销毁非静态数据成员。从语法上看&#xff0c;它是类的一个成员函数&#xff0c;名字是波浪号接类名&#xff0c;没有返回值&#xff0c;也不接受参数。 当一个类没有定义析构函数时&…

.NET Core开发实战(第30课:领域事件:提升业务内聚,实现模块解耦)--学习笔记...

30 | 领域事件&#xff1a;提升业务内聚&#xff0c;实现模块解耦我们在领域的抽象层定义了领域事件和领域事件处理的接口IDomainEventnamespace GeekTime.Domain {public interface IDomainEvent : INotification{} }这是一个空接口&#xff0c;它只是标记出来某一个对象是否是…

《C++ Primer》8.1.2节练习

练习8.1: #include <iostream> #include <stdexcept> using namespace std;istream &f(istream &in) {int v;while (in >> v, !in.eof()) {if (in.bad())throw runtime_error("IO流错误");if (in.fail()) {cerr << "数据错误&…

.NET 5 Preview 1的深度解读和跟进

这几天微软.NET 团队发布了.NET 5 Preview 1, 如约而至。很兴奋&#xff0c;因为.NET Core和.NET Framework终于实现了大一统&#xff0c;同时也很期待&#xff0c;期待.NET 5能给我们带来哪些好的新特性。让我们先把时间拨回到2019年...一、2019年.NET 5的提前剧透去年2019年 …

程序员羽化之路--假如需要一百万个对象

点击上方蓝字关注我们菜菜哥&#xff0c;救命呀又被产品经理砍了&#xff1f;这次搞不好真要被砍了&#xff0c;线上一个用户系统内存溢出了&#xff0c;占用内存太高了用户基数大&#xff0c;内存占用高正常高的不太正常了&#xff0c;我觉得可能和我的设计有关那说说你的用户…

WTM 3.5发布,VUE来了!

千呼万唤中&#xff0c;WTM的Vue前后端分离版本终于和大家见面了&#xff0c;我曾经跟群里1000多位用户保证过Vue版本会在春天到来&#xff0c;吹过的牛逼总算是圆上了。卧槽&#xff0c;NB啊!我等到花都谢了风太大&#xff0c;吹瞎了朕的双眼我是谁&#xff0c;我在哪儿&#…

java 第三方序列化,11.既然有第三方的序列化方式,说明java官方提供的序列化方式应该有一些很明显或者很致命的缺点……...

序列化是什么&#xff1a;把一个java对象转化为二进制对象&#xff0c;并保存到硬盘&#xff0c;或在网络上传输。反序列化就是把序列化的二进制对象读到内存中。 作用&#xff1a;1、减少内存占用或网络传输。比如web容器中的session&#xff0c;当session数量过大比如10W连接…

2020年,我来盘点下微服务架构技术栈

2020年了&#xff0c;很多小伙伴儿对微服务还比较陌生&#xff0c;说起来很多人可能不敢相信&#xff0c;其实微服务这个概念早在2012年就提出来了&#xff0c;经过了这些年的发展&#xff0c;现在已经成为企业非常主流的架构选项了。今天&#xff0c;我就来带大家一起探讨下微…

2.5w字长文爆肝 C++动态内存与智能指针一篇搞懂!太顶了!!!

动态内存与智能指针1.动态内存与智能指针2.shared_ptr类2.1.make_shared函数2.2.shared_ptr的拷贝和赋值2.3.shared_ptr自动销毁所管理的对象2.4. shared_ptr会自动释放相关联的内存2.5.使用了动态生存期的资源的类2.6.定义StrBlob类2.7. StrBlob构造函数2.8.元素访问成员函数2…

ASP.NET Core应用的7种依赖注入方式

ASP.NET Core框架中的很多核心对象都是通过依赖注入方式提供的&#xff0c;如用来对应用进行初始化的Startup对象、中间件对象&#xff0c;以及ASP.NET Core MVC应用中的Controller对象和View对象等&#xff0c;所以我们可以在定义它们的时候采用注入的形式来消费已经注册的服务…

ASP.NET Core 3.x - 为什么采用新的 Endpoint Routing 路由系统

Endpoint Routing 路由系统ASP.NET Core 3.x 使用了一套叫做 Endpoint Routing 的路由系统。这套路由系统在ASP.NET Core 2.2 的时候就开始露面了。这套Endpoint Routing路由系统提供了更强大的功能和灵活性&#xff0c;以便能更好的处理请求。早期ASP.NET Core的路由系统我们先…

《C++ Primer》10.1节练习

练习10.1: #include <iostream> #include <vector> #include <algorithm> using namespace std;int main() {vector<int>vi;int val;vi.push_back(45);vi.push_back(45);vi.push_back(45);vi.push_back(45);for (int i 1; i < 45; i) {vi.push_ba…

Asp.Net Core AuthorizeAttribute 和AuthorizeFilter 跟进及源码解读

一、前言IdentityServer4已经分享了一些应用实战的文章&#xff0c;从架构到授权中心的落地应用&#xff0c;也伴随着对IdentityServer4掌握了一些使用规则&#xff0c;但是很多原理性东西还是一知半解&#xff0c;故我这里持续性来带大家一起来解读它的相关源代码&#xff0c;…

1张手稿图讲明白 Kubernetes 是怎么运行的

注意&#xff1a;如果您已经知道Kubernetes的工作原理&#xff0c;那么您可能会对我之前的博文感兴趣&#xff0c;请停止使用具有管理员权限的kubeconfigKubernetes是最初由Google设计的开源工具&#xff0c;现在由 Cloud Native Computing Foundation&#xff08;CNCF&#xf…