人工智能?.NetCore一样胜任!

提起AI,大家都会先想到Python,确实Python作为一门好几十年的老语言,上一波的AI大流行使它焕发了青春。大家用Phtyon来做AI,最主要的原因无非就是编码量更少,很多数学和AI相关的Api都是现成的。但是随着ML.net的问世,我们现在可以在.netcore平台上使用比Python更少的代码来实现AI的功能了。

 

ML是Machine Learning的缩写,从命名上可以看出微软对于对于AI的现状还是有非常清醒的认识的。目前我们所有声称的人工智能其实只是机器学习,离真正意义上的人工智能还差的很远。这也是为什么,AI这个概念几乎每十年就火一次,然后陷入沉寂,因为我们在算法上其实始终没有突破,只是硬件比以前强大了,算的比以前快了而已。

上一波的AI创业大军已经纷纷倒下了,这也使我们认识到目前AI的水平是很难独立支撑一块完整的创新业务的,但是作为已有系统的补充,作为数据分析的工具,AI还是很有用的,尤其是在图像识别,语义分析,数值预测等已有成熟算法的领域。

 

读到这里是不是以为这篇文章是喷概念的?必须不是啊,干货来了:

 

ML.Net主要特点:

跨平台,开源,使用简单,支持Tensorflow等扩展

 

一、 使用ML.Net的图形化工具生成机器学习代码

目前的Visual Studio 2019已经包含了ML.Net的图形化工具,只不过还是预览版,需要你手动开启,首先在Visual Studio Installer里安装的功能中勾选ML.Net

然后在visual studio的 工具->选项中,选择展示预览功能

 

从这里我们也可以看出,微软已经计划在后续的visual studio中将ML.NET作为默认工具集成进来了。

 

安装完毕之后,随便建一个.netcore的项目,控制台的就可以。右键点击添加就会看到ML.NET的选项

 

点击之后会有图形界面,然你从几种常见的需求中选择,比如语义识别,图像识别,数值预测等,后续它还会支持图片中物体识别等更复杂的需求。整个过程非常直观,按照它的界面一步一步走就可以,它最终会帮你训练模型并生成使用模型和再次训练模型的代码。

二、 手动引用Nuget包进行开发

在已有项目中手动添加AI的支持,只需要从Nuget上手动引用Microsoft.ML包,以及其他任务相关的包,如果需要使用tensorflow训练的模型,则需要引用SciSharp.TensorFlow.Redist包。训练和使用模型的代码都比较简单,根据机器学习的类型不同,少则10几行,多则几十行代码就可以完成训练的编码。

 

三、 实战演示

公司内部已有app需要增加一些额外功能,用户用手机截图上传的时候,系统需要判断图片有没有最上方的状态栏。由于手机本身系统的不同,再加上安卓手机状态栏基本上都能自定义,所以状态栏的样式是五花八门的,传统方式很难实现这个需求。最终我们使用WTM+ML.NET快速搭建了一个AI图片分类的平台,这个平台的功能包括:

 

1. 可维护多种图片识别的任务。虽然目前的需求只有状态栏识别这一个,但是系统应该支持多种图片任务。

2. 每种任务可以自定义具体分类

3. 每种任务可以指定不同的图片预处理操作,比如状态栏识别这个任务应该在训练和识别之前对原始图片进行裁剪,只判断上方80像素高的区域。

4. 提供后台界面允许管理人员对数据进行标注

5. 允许在线增量训练

6. 提供对外API接口,使其他系统可以使用该api来进行图片识别的工作

7. 其他通用模块,如日志,用户,权限等

 

以上的需求我们用了不到一个工作日,使用WTM+ML.NET就快速实现了,当然准备初次训练所需的图片用了两周的时间。最终我们使用了七千多张带状态栏的图片,和两千多张不带状态栏的图片训练完成了这个模型,准确率可以达到95%。后续通过人工标注和增量训练这个准确度还可以提高。

 

这个系统目前已经上线,为一个40万日活的App提供图片识别服务,表现相当稳定。

 

Talk is cheep, show me the code?

没问题,欢迎来我们在CSDN上的课程https://edu.csdn.net/course/detail/27568 , 或者在csdn里搜索WTM找到我们的视频教程。里面有完整的从0开始开发上述系统的视频讲解,并有完整的源代码。源码不是公司的哦,公司用的Layui,我又用VUE重新写了一遍。用了WTM,这都不是事儿,快得很。

另,WTM正在进行新一轮大幅重构和优化,请大家拭目以待~~~

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

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

相关文章

区域转换为二值图像_Matlab图像处理系列教程(一)

小编近期为大家带来一套全面系统的MATLAB在图像处理中的应用。灰度处理 灰度化处理就是将一幅色彩图像转化为灰度图像的过程。彩色图像分为R,G,B三个分量,分别显示出红绿蓝等各种颜色,灰度化就是使彩色的R,G&#xff0…

7.30 KubeCon2020 | 今天下午5:40 近几年最火爆的技术峰会之分享主题.NET开发者与Kuberentes...

01最负盛名的峰会自2018 年 KubeConCloudNativeCon 首次落地中国以来,CNCF 每年都会在中国举办云原生技术大会。大会每年都能吸引来自五大洲 48 个国家的开源精英和技术大咖前来参会。阿里、华为、腾讯等你所知道的每一家大厂都是KubeCon的大会赞助商。滑动查看更多…

[MyBatisPlus]测试BaseMapper的功能测试自定义功能

测试BaseMapper的功能 添加功能 /*** 实现新增用户信息*/Testpublic void testInsert(){User user new User();user.setName("张三");user.setAge(23);user.setEmail("zhangsanxx.com");int result userMapper.insert(user);System.out.println("r…

[MyBatisPlus]通用Service接口测试通用Service

通用Service接口 说明: 通用 Service CRUD 封装IService接口,进一步封装 CRUD 采用 get 查询单行 remove 删 除 list 查询集合 page 分页 前缀命名方式区分 Mapper 层避免混淆,泛型 T 为任意实体对象建议如果存在自定义通用 Service 方法的可能&#x…

程序员修神之路--晦涩难懂的CAP,是否完全正确?

微信搜一搜架构师修行之路菜菜哥,帮忙解决一个问题是不是面试又被虐了?是的呢,这次面试官问我什么是CAP?这个可就说来话长了......01PARTCAP说到CAP,首先不能不说分布式系统,前面几篇也说过,分布…

[MyBatisPlus]雪花算法

雪花算法 背景 需要选择合适的方案去应对数据规模的增长,以应对逐渐增长的访问压力和数据量。 数据库的扩展方式主要包括:业务分库、主从复制,数据库分表。 数据库分表 将不同业务数据分散存储到不同的数据库服务器,能够支撑…

如何隐藏运行 winform 程序?

群里有个同学问了问题 如何隐藏运行 winform 程序?,提起了我的兴趣,玩玩呗?那就玩玩吧!第一版 将一个 winform 程序隐藏执行,隐藏执行的方式有很多种,第一个 demo 就用最简单的方式,…

[MyBatisPlus]常用注解_@TableName_@TableId_@TableField_@TableLogic通过全局配置配置主键生成策略

常用注解 TableName 设置实体类所对应的表名 如果全部表都有某个前缀,难道我们要通过一个一个加注解的方式来解决实体类对应表名问题吗? 我们可以通过配置文件来解决这个问题: TableId 将属性所对应的字段指定为主键 TableId的value属性 TableId的ty…

最小堆和最大堆的建立以及基本操作

前言: 堆的特性:用数组表示的完全二叉树。有序性:任一结点的关键字是其子树所有结点的最大值 (最小值) 堆的本质:就是一颗 完全二叉树 堆的数据存储: 用的是 数组 建堆时主要的操作:就是调整 对数组的元素…

字符串是单一字符的无序组合吗_Python学习笔记(八)组合数据类型

Python语言中最常用的组合数据类型有3大类, 分别是集合类型、序列类型和映射类型。集合类型是一个具体的数据类型名称,而序列类型和映射类型是一类数据类型的总称。集合类型是一个元素集合,元素之间无序,相同元素在 集合中唯一存在…

[MyBatisPlus]条件构造器wapper

wapper简介 QueryWrapper 组装查询条件 查询用户名包含a,年龄在20到30之间,邮箱信息不为null的用户信息 package com.xxxx.mybatisplus;import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.xxxx.mybatisplus.mapper.Use…

推荐:适合小白入门的Asp.Net Core 开源学习手册

前言推荐一个入门级的.NET Core开源项目,非常适合新手入门学习.NET Core。开源地址:https://github.com/windsting/little-aspnetcore-book。手册在线下载地址:https://nbarbettini.gitbooks.io/little-asp-net-core-book/content/chapters/mvc-basics/c…

从当前元素继续寻找_云漫圈 | 寻找无序数组的第k大元素

戳蓝字“CSDN云计算”关注我们哦!作者:小灰来源:程序员小灰本期封面作者:泰勒太乐————— 第二天 —————题目是什么意思呢?比如给定的无序数组如下:如果 k6,也就是要寻找第6大的元素&a…

DFS和BFS总结和代码演示(详解)

1:BFS 广度优先搜索类似于树的层次遍历过程。它需要借助一个队列来实现。如图2-1-1所示,要想遍历从v0到v6的每一个顶点,我们可以设v0为第一层,v1、v2、v3为第二层,v4、v5为第三层,v6为第四层,再…

Kestrel的ListenAnyIP和ListenLocalhost的区别

问题在上篇文章,把AAStore.ProductCatalog.Api部署到docker中运行,输入地址访问报错如下图,说明外部无法访问这个url。(当然本地开发环境测试是可以访问的)。后来修改此处options.ListenLocalhost(8081)的代码改成opti…

[MyBatisPlus]Plus分页插件的配置和使用

Plus分页插件的配置和使用 配置类 package com.xxxx.mybatisplus.config;import com.baomidou.mybatisplus.annotation.DbType; import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor; import com.baomidou.mybatisplus.extension.plugins.inner.Pagin…

控制是否展示_现场展示板管理不在于看,而在于管!

点击上方"五株科技",关注公众号,天天有精彩!一位日本专家根据研究数据宣称,如果中国的中小企业有效实行车间展示板管理,最大能够提升生产效率30%以上。通常被管理者小视的车间展示板,在专家眼中却…

龙芯完成.NET移植稳步推进生态建设

不久前,龙芯团队完成了.Net Core 3.1在龙芯上的移植。早在1年前,一位网友就告知,希望.Net能够移植到龙芯平台,因为一些政务应用场景有这方面的需求。只不过了一年,这就问题就被龙芯团队解决了。龙芯团队之所以移植.Net…

[MyBatisPlus]乐观锁和悲观锁

乐观锁和悲观锁 场景 一件商品,成本价是80元,售价是100元。老板先是通知小李,说你去把商品价格增加50元。小李正在玩游戏,耽搁了一个小时。正好一个小时后,老板觉得商品价格增加到150元,价格太高&#xf…

7月30日 举办专注于微服务的.NET Conf Focus

2020 年 7 月 30 日, 由.NET基金会和微软 将举办一个在线和为期一天的活动,包括 微软 .NET 团队的演讲者以及社区的演讲者。本次在线大会 专注.NET框架构建微服务,演讲者分享构建和部署云原生应用程序的最佳实践、模式、提示和技巧。有关更多信息和随时了…