在本系列的最后,我们将介绍另一种方法,即利用一个预先训练好的CNN来解决我们一直在研究的硬币识别问题。

在这里,我们看一下转移学习,调整预定义的CNN,并使用Model Builder训练我们的硬币识别模型。

我们将使用ML.NET代替Keras.NET。为什么不使用Keras.NET呢?尽管Keras.NET非常简单,易于学习,虽然它包含前面提到的预定义模型,但它的简单性使我们无法自定义CNN架构来适应我们的问题。

ML.NET是一个微软的免费机器学习框架,旨在使用C#和F#进行开发。最重要的是,我们可以将ML.NET与Azure结合使用,这意味着我们可以使用基于云的基础设施来训练我们的模型。让多个虚拟机以分布式方式运行我们的代码可以使训练更快、更准确。

为什么预训练的CNN如此有价值?因为有人花了很多时间和资源培训他们,我们可以利用这一点。我们可以重用嵌入在为网络计算的权值,我们可以将它们重新应用到类似的问题中。也就是说,它们不仅可以应用于CNN最初训练解决的问题。这种方法就被称为迁移学习。它可以为我们节省大量的培训时间,并大大提高所获得的结果。

在迁移学习中,我们不像以前那样从零开始。相反,我们从一个已知的模型开始,该模型具有预定义的体系结构和在第一次请求模型时下载的计算权重。流行的模型包括Inception、ResNet和VGG16等。

要针对我们的问题调整预定义的CNN,我们必须做三件事。首先,我们必须将输入层的形状更改为数据集中图像的维度。其次,我们至少需要更改输出层,以便模型拥有与数据集相同数量的类。第三,我们必须调整模型,让它知道我们对训练预定义模型的层不感兴趣。

完成这些步骤后,我们可以训练或使我们的模型适合于给定的数据集。

让我们开始吧。在Visual Studio中,转到Extensions > Manage Extensions,浏览ML.NET Model Builder

我们还需要安装Nuget包ML.NET。

为了训练我们的模型来解决硬币识别问题,我们将使用 Model Builder 扩展。

使用这个工具,我们可以轻松地设置数据集并训练模型,它通过 Model Builder中添加的Auto ML特性自动选择模型。自动机器学习(automatic Machine Learning, Auto ML)是一种自动化机器学习模型开发中的耗时任务。所以Model Builder将为我们简化准备数据集的过程,以及选择预先训练好的模型和所有涉及的参数。关于所选的预训练模型,有一点是只有最后一层会被重新训练;其他所有人都保持权重。

对于数据集的情况,唯一的要求是将其组织在文件夹中,这样文件夹名就是其中所有图像的类或标签。

当我们到目前为止使用的硬币数据集被输入到模型构建器中时,AutoML引擎选择ResNet作为预先训练好的架构来用于我们的问题。

一旦训练结束,我们就可以预测新的输入数据,甚至可以得到与为预测而生成的模型相对应的代码。只需这么少的工作,我们就可以在几乎没有任何相关知识的情况下使用ML,通过UI简单地完成所有工作,选择、单击并在最后获得代码。

关于使用C#进行硬币识别的系列文章到此结束。希望你喜欢!如果有任何问题,不要忘记留言或发信息。感谢你的阅读。

欢迎关注我的公众号,如果你有喜欢的外文技术文章,可以通过公众号留言推荐给我。

C#中的深度学习(五):在ML.NET中使用预训练模型进行硬币识别的更多相关文章

  1. CNCC2017中的深度学习与跨媒体智能

    CNCC2017中的深度学习与跨媒体智能 转载请注明作者:梦里茶 目录 机器学习与跨媒体智能 传统方法与深度学习 图像分割 小数据集下的深度学习 语音前沿技术 生成模型 基于贝叶斯的视觉信息编解码 珠 ...

  2. 【吴恩达课后测验】Course 1 - 神经网络和深度学习 - 第一周测验【中英】

    [吴恩达课后测验]Course 1 - 神经网络和深度学习 - 第一周测验[中英] 第一周测验 - 深度学习简介 和“AI是新电力”相类似的说法是什么? [  ]AI为我们的家庭和办公室的个人设备供电 ...

  3. Deep learning for visual understanding: A review 视觉理解中的深度学习:回顾 之一

    Deep learning for visual understanding: A review 视觉理解中的深度学习:回顾 ABSTRACT: Deep learning algorithms ar ...

  4. 深度学习---1cycle策略:实践中的学习率设定应该是先增再降

    深度学习---1cycle策略:实践中的学习率设定应该是先增再降 本文转载自机器之心Pro,以作为该段时间的学习记录 深度模型中的学习率及其相关参数是最重要也是最难控制的超参数,本文将介绍 Lesli ...

  5. 在浏览器中进行深度学习:TensorFlow.js (八)生成对抗网络 (GAN

    Generative Adversarial Network 是深度学习中非常有趣的一种方法.GAN最早源自Ian Goodfellow的这篇论文.LeCun对GAN给出了极高的评价: “There ...

  6. C#中的深度学习(一):使用OpenCV识别硬币

    在本系列文章中,我们将使用深度神经网络(DNN)来执行硬币识别.具体来说,我们将训练一个DNN识别图像中的硬币. 在本文中,我们将描述一个OpenCV应用程序,它将检测图像中的硬币.硬币检测是硬币完整 ...

  7. C#中的深度学习(三):理解神经网络结构

    在这篇文章中,我们将回顾监督机器学习的基础知识,以及训练和验证阶段包括哪些内容. 在这里,我们将为不了解AI的读者介绍机器学习(ML)的基础知识,并且我们将描述在监督机器学习模型中的训练和验证步骤. ...

  8. ui2code中的深度学习+传统算法应用

    背景 在之前的文章中,我们已经提到过团队在UI自动化这方面的尝试,我们的目标是实现基于 单一图片到代码 的转换,在这个过程不可避免会遇到一个问题,就是为了从单一图片中提取出足够的有意义的结构信息,我们 ...

  9. 【吴恩达课后测验】Course 1 - 神经网络和深度学习 - 第二周测验【中英】

    [中英][吴恩达课后测验]Course 1 - 神经网络和深度学习 - 第二周测验 第2周测验 - 神经网络基础 神经元节点计算什么? [ ]神经元节点先计算激活函数,再计算线性函数(z = Wx + ...

随机推荐

  1. Leetcode1 - 10

    1. 两数之和 class Solution { public: vector<int> twoSum(vector<int>& nums, int target) { ...

  2. Linux(CentOS 7下httpd的安装)

    Linux(CentOS 7下httpd的安装) 自己是个linux小白.最近几天在学linux,看到视频教程中安装源码包httpd所以自己想试一试,安装过程中有很多的错误,在网上找了很久也没找到,要 ...

  3. Java基础教程——多态

    直观地说,多态就是"一个对象,多种形态 ".比如观世音菩萨就有多种形态-- 每个人都有多种形态-- 具体地讲,多态是指"同一个对象.同一个方法(函数),表现出不同的行为& ...

  4. c++11-17 模板核心知识(九)—— 理解decltype与decltype(auto)

    decltype介绍 为什么需要decltype decltype(auto) 注意(entity) 与模板参数推导和auto推导一样,decltype的结果大多数情况下是正常的,但是也有少部分情况是 ...

  5. 杂篇-之裸眼3D渲染相机及画面矫正

    主题公园类,或大型广场led屏幕,直角幕,三维影片如何制作,和最终画面如何矫正还原. 前两天,一朋友做的项目,大概就是一个柱状的led屏幕,可能是立在广场街角等处,如果这样子,那个柱状体的有颜色的两面 ...

  6. 思维导图学 Kotlin

    前言 最近做了<Kotlin实战>的思维导图笔记,Kotlin真香-- 目录 基础 函数 类.对象 λ表达式 类型 约定 高阶函数.泛型 公众号 coding 笔记.点滴记录,以后的文章也 ...

  7. Access数据库简介

    一.Access数据库的简介 1.microsoft office access是由微软发布的关联式数据库管理系统.它结合了 microsoft jet database engine 和 图形用户界 ...

  8. 本人的CSDN博客

    本人的CSDN博客链接: 传送门

  9. 第11.6节 Python正则表达式的字符串开头匹配模式及元字符“^”(插入符、脱字符)功能介绍

    符号"^"为插入符,也称为脱字符,在Python中脱字符表示匹配字符串的开头,即字符串的开头满足匹配模式的要求.这个功能有点类似搜索函数match,只是这是通过搜索模式来指定,而m ...

  10. PyQt(Python+Qt)学习随笔:使用QtWidgets.qApp实现在程序中随时访问应用的方法

    在PyQt应用中,任何一个应用在启动时必须创建一个基于QtWidgets.QApplication或其派生类对应的应用对象,该对象用于处理事件. 如果需要在应用代码中的任何位置都能访问该应用对象,可以 ...