人工智能?.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图片分类的平台,这个平台的功能包括:
- 可维护多种图片识别的任务。虽然目前的需求只有状态栏识别这一个,但是系统应该支持多种图片任务。
- 每种任务可以自定义具体分类
- 每种任务可以指定不同的图片预处理操作,比如状态栏识别这个任务应该在训练和识别之前对原始图片进行裁剪,只判断上方80像素高的区域。
- 提供后台界面允许管理人员对数据进行标注
- 允许在线增量训练
- 提供对外API接口,使其他系统可以使用该api来进行图片识别的工作
- 其他通用模块,如日志,用户,权限等
以上的需求我们用了不到一个工作日,使用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,这都不是事儿,快得很。

人工智能?.netcore一样胜任!的更多相关文章
- Python3 与 NetCore 基础语法对比(就当Python和C#基础的普及吧)
Jupyter排版:https://www.cnblogs.com/dotnetcrazy/p/9102030.html 汇总系列:https://www.cnblogs.com/dunitian/p ...
- 谷歌AI中国中心成立,人工智能势不可挡?
昨日,谷歌在上海举办了一年一度的Google中国开发者大会.在本届大会上,谷歌云首席科学家李飞飞宣布了一个重磅消息,即在北京将成立谷歌AI中国中心.对于这个即将成立的AI中心谷歌寄予厚望,希望与中国本 ...
- 谷歌 AI 中国中心成立,人工智能势不可挡?
昨日,谷歌在上海举办了一年一度的Google中国开发者大会.在本届大会上,谷歌云首席科学家李飞飞宣布了一个重磅消息,即在北京将成立谷歌AI中国中心.对于这个即将成立的AI中心谷歌寄予厚望,希望与中国本 ...
- 个人永久性免费-Excel催化剂功能第86波-人工智能之图像OCR文本识别全覆盖
在上一年中,Excel催化剂已经送上一波人工智能系列功能,鉴于部分高端用户的需求,再次给予实现了复杂的图像OCR识别,包含几乎所有日常场景,让公司个人手头的图像非结构化数据瞬间变为可进行结构化处理分析 ...
- DataPipeline王睿:业务异常实时自动化检测 — 基于人工智能的系统实战
大家好,先自我介绍一下,我是王睿.之前在Facebook/Instagram担任AI技术负责人,现在DataPipeline任Head of AI,负责研发企业级业务异常检测产品,旨在帮助企业一站式解 ...
- .NetCore MVC中的路由(2)在路由中使用约束
p { margin-bottom: 0.25cm; direction: ltr; color: #000000; line-height: 120%; orphans: 2; widows: 2 ...
- .NetCore MVC中的路由(1)路由配置基础
.NetCore MVC中的路由(1)路由配置基础 0x00 路由在MVC中起到的作用 前段时间一直忙于别的事情,终于搞定了继续学习.NetCore.这次学习的主题是MVC中的路由.路由是所有MVC框 ...
- .NetCore中的日志(2)集成第三方日志工具
.NetCore中的日志(2)集成第三方日志工具 0x00 在.NetCore的Logging组件中集成NLog 上一篇讨论了.NetCore中日志框架的结构,这一篇讨论一下.NetCore的Logg ...
- .NetCore中的日志(1)日志组件解析
.NetCore中的日志(1)日志组件解析 0x00 问题的产生 日志记录功能在开发中很常用,可以记录程序运行的细节,也可以记录用户的行为.在之前开发时我一般都是用自己写的小工具来记录日志,输出目标包 ...
随机推荐
- python冷知识(续)
python 冷知识 1.交互式中修改最大递归深度 大家都知道使用递归是有风险的,递归深度过深容易导致堆栈的溢出. 那到底,默认递归次数限制是多少呢? 可以使用sys这个库来查看 >>&g ...
- Linux 安装Anaconda/Miniconda以后无法识别conda命令
注意:遇到无法识别conda命令时,可以先用步骤3试一下重启环境变量后conda命令是否能够识别 1. 修改环境变量 $ vim ~/.bashrc 2. 在最后添加: $ export PATH=~ ...
- python数据结构与算法(一)
1.序列中的N个元素赋值给变量 data = [1,2,3,"string!",["python","php"]] num_1,num_2, ...
- css图片居中,通过纯css实现图片居中的多种实现方法
在网页布局中,图文排版是我们常用的,那么经常会遇到如何让图片居中显示呢,这篇文章将总结常用css实现图片居中的方法总结: html结构: <div class="demo" ...
- 网页不让用户复制方法总汇,设置html禁止选择,保护源码,js禁止复制文字
这篇文章主要讲解:右键复制失效方法.菜单"文件"-"另存为"失效方法.防止查看源代码进行复制的方法.防止页面缓存的方法.来达到一定的代码保护效果 右键复制失效方 ...
- Django---进阶9
目录 自定义分页器的拷贝及使用 Forms组件 前戏 基本使用 校验数据 渲染标签 展示提示信息 钩子函数(HOOK) forms组件其他参数及补充知识点 作业 自定义分页器的拷贝及使用 " ...
- day30 继承、派生与多态,类中方法和内置函数
目录 一.多继承出现的问题(mixins机制) 二.派生与方法重用 三.多态 1 什么是多态 2 为什么要有多态 3 python中多态的鸭子类型 四.绑定方法与非绑定方法 1 绑定方法 1.1对象的 ...
- CSS(二)- 属性速览(含版本、继承性和简介)
相关链接 CSS3速查表,这里面列出了所有新增的属性以及新增或者修改的属性值 css参考手册,很好地一个常用网站 CSS定位(不可继承) CSS布局(仅visibility可继承) CSS尺寸(不可继 ...
- python中可变类型和不可变类型
1.python中的可变类型和不可变类型 python中的数据类型大致可分为6类:1.Number(数字) 2. String(字符串) 3. Tuple (元组) 4. List(列表) 5. Di ...
- JVM 专题一:虚拟机(一)
1. 虚拟机 1.1 什么是虚拟机? 虚拟机(Virtual Machine)指通过软件模拟的具有完整硬件系统功能的.运行在一个完全隔离环境中的完整计算机系统. 所谓虚拟机,就是一台虚拟的计算机.它是 ...