本文将使用ML .NET的图像分类对猫狗的图像数据进行训练,得到模型;
并且开发一个简单的识别程序用来识别猫咪和狗狗。

流程

根据什么是 ML.NET 以及它如何工作?中的描述,我们知道,工作流如图:

这里我按照我的理解重新画了一幅:

首先我们需要准备训练数据集和测试数据集;
然后通过训练数据集进行训练,获得训练模型;
之后检验模型是否合格;
如果合格,投入使用;
如果不合格,重新设计训练数据集的数据,或者调参,重新训练,直至合格。

数据集来源

在kaggle Dogs vs. Cats中下载train.ziptest1.zip
其中train.zip中的图像用于训练,test1.zip用于测试、检验模型是否可用。
下载解压之后train.zip得到了很多图像

根据图像名称,将猫咪和狗狗的图像分成两个文件夹


开始分类训练

在项目中,创建训练模型

如图所示,进入一个可视化的配置页面,在方案一栏选择图像分类

第二步选择训练环境,选择本地CPU
如果有条件使用Azure的话,可以选择通过Azure进行训练

也可以选择本地GPU进行训练,点击检查兼容性可以看到提示,根据提示可以确定本机是否支持训练,并且得知需要安装的内容

第三步选择准备好的训练数据集

根据左边的提示,只需要按照文件夹目录,将不同分类的图像放置到不同的文件夹下即可,这点在准备数据的时候已经完成
第四步,开始训练

这里我使用开发机训练了大概1.7天左右的时间,完成了训练
训练结束后有一个简单的测试功能,

如果对于结果不满意,可以重新训练
我们也可以通过准备好的测试数据集test1.zip中的图像进行检验

最后ML .NET给出了一个使用模型的代码段

//Load sample data
var sampleData = new CatAndDogMLModel.ModelInput()
{//想要识别的图像路径ImageSource = @"...\TrainData\狗\dog.0.jpg",
};//Load model and predict output
//获得识别结果
var result = CatAndDogMLModel.Predict(sampleData);

识别结果有Prediction这个最终结果,也有Score这样的各个分类的分数集合
Score分数相差较小的时候,可能是识别效果不好或者识别出错
比如拿一张既不是猫也不是狗的图像进行识别,得到的分数几乎相同,此时应该处理为无法识别为猫或者狗
至此,我们可以使用训练好的模型了。

调用模型完成功能

制作一个简单的输入-输出功能,调用模型,完成功能

评估与重新训练

与价格预测篇基本类似,不再赘述
注意这次使用的算法是MLContext.MulticlassClassification,所以评估也应该使用MLContext.MulticlassClassification.Evaluate

总结

可以看出,ML .NET降低了机器学习的复杂度,使对机器学习零基础的开发也可以无压力使用机器学习完成一些工作
我们只需要通过快速学习,了解ML .NET可以完成哪些工作,并通过简单的可视化页面输入数据,选择算法,就可以完成工作
同时,如果对机器学习有一定了解,也可以更改代码,调参,得到更好的模型

示例代码

CatAndDogClassification

参考资料

10分钟快速入门
官方示例machinelearning-samples
教程:通过 ML.NET 图像分类 API 使用迁移学习自动进行肉眼检查

ML .NET 猫狗图像分类相关推荐

  1. CV之CNN:基于tensorflow框架采用CNN(改进的AlexNet,训练/评估/推理)卷积神经网络算法实现猫狗图像分类识别

    CV之CNN:基于tensorflow框架采用CNN(改进的AlexNet,训练/评估/推理)卷积神经网络算法实现猫狗图像分类识别 目录 基于tensorflow框架采用CNN(改进的AlexNet, ...

  2. tensorflow+k-means聚类 简单实现猫狗图像分类

    文章目录 一.前言 二.k-means聚类 三.图像分类 一.前言 本文使用的是 kaggle 猫狗大战的数据集:https://www.kaggle.com/c/dogs-vs-cats/data ...

  3. 基于深度神经网络的猫狗图像分类

    基于深度神经网络的猫狗图像分类 一.实验目的 1.掌握卷积神经网络.循环神经网络等深度学习的各项基本技术. 2.加强对pytorch.tensorflow等深度学习框架的使用能力. 二.实验要求 1. ...

  4. 机器学习05:SVM支持向量机的学习和应用SVM解决猫狗图像分类问题

    机器学习05:SVM支持向量机的学习和应用SVM解决猫狗图像分类问题 文章目录 机器学习05:SVM支持向量机的学习和应用SVM解决猫狗图像分类问题 前言 1.从二维线性模型说起 2. 如何求解SVM ...

  5. Tensorflow——使用预训练模型进行 猫狗 图像分类

    前言 预训练模型顾名思义就是使用别人已经训练好的模型参数放到自己的任务里面进行特定任务的微调.这里的模型参数包括:神经网络的结构.神经网络的权值参数. 本博客将尝试使用预训练模型进行猫狗分类. 代码地 ...

  6. 猫狗大战(kaggle竞赛-猫狗图像分类)

    本实验使用kaggle中猫狗大战中的部分数据集(2000张训练数据+500张测试数据) 本次实验中使用了DNN.CNN.RNN分别进行了图像识别,具体代码如下: DNN模型: 全连接层 神经元个数 F ...

  7. 深度学习--猫狗图像分类

    1.环境介绍 python3.6,tensorflow1.4版本,pycharm编译器 2.函数库导入 import cv2 import matplotlib.pyplot as plt impor ...

  8. 卷积神经网络图像分类之猫狗分类实验

    TensorFlow+Keras实现猫狗图像分类 一.前期工作 二.分类实现 1.分类训练图片 2.卷积神经网络 3. 优化模型 三.小结 一.前期工作 安装anaconda 新建一个工作空间,在里面 ...

  9. 从零开始学keras之kaggle猫狗识别分类器

    使用很少的数据来训练一个图像分类模型,这是很常见的情况,如果你要从事计算机视觉方面的职业,很可能会在实践中遇到这种情况."很少的"样本可能是几百张图像,也可能是几万张图像.来看一个 ...

最新文章

  1. Linux系统配置VI或VIM的技巧
  2. Apache Ant安装 验证
  3. linux存储--共享内存机制shm(十四)
  4. gulp自动化构建工具--压缩css--学习笔记
  5. 佳能2900打印机与win10不兼容_佳能mg3660 3680 系列喷墨打印机更换搓纸轮解决不进纸教程...
  6. 动规(LIS)-POJ-2533
  7. javascript概要
  8. Centos 6.5-yum安装出现错误解决方案
  9. trigger 根据绑定到匹配元素的给定的事件类型执行所有的处理程序和行为。
  10. appium+python环境搭建_想学习自动化测试,已经学习了appium+python环境搭建和python的简单内容,下面该怎么做?...
  11. 纯福利文章、送5本Java核心技术(不定期送福利)
  12. GPS经纬度转百度经纬度JAVA
  13. 记录第二次进行的助教培训-评分
  14. 发布 PAIRED:一种生成对抗环境的全新多智能体方法
  15. 2022计算机保研心得
  16. 黑马程序员——阿龙的学习历程——Java初见
  17. 小森生活服务器维护到几点,小森生活几点开服上线 2021小森生活开服表大全[多图]...
  18. 十月百度,阿里巴巴,迅雷搜狗最新面试七十题(第201-270题)
  19. QT编程 批量打印二维码
  20. html5在线 播放器安卓,html5手机端播放器可拖动播放自定义播放器

热门文章

  1. 如何识别WiFi模块型号真伪
  2. 如何选择靠谱的wifi模块供应商
  3. coreData详解
  4. HTML5 CSS3 神秘的暗红色漩涡特效
  5. java vue elementui 上传照片墙
  6. 51单片机-点亮LED的多种方式
  7. html单选框servlet,js、servlet分别获取下拉框、单选框、复选框的值
  8. C语言/C++数组字符串输入
  9. c++语言循环读写文件夹,在C++中逐行读取文件
  10. vue.js毕业设计,基于vue.js前后端分离订座预约小程序系统设计与实现