热门标签 | HotTags
当前位置:  开发笔记 > 前端 > 正文

深度学习为何可以实现图像的分类

本笔记为自用,倘若没有相关的学习基础,也确实无法看懂文章写的是什么。近来有点越学越回去的感觉。竟然突然在想,为什么深度学习模型可以对图像进行分类或者语义分割。可怕的是,当时想到这里

本笔记为自用,倘若没有相关的学习基础,也确实无法看懂文章写的是什么。




近来有点越学越回去的感觉。竟然突然在想,为什么深度学习模型可以对图像进行分类或者语义分割。

可怕的是,当时想到这里,一下子愣住了:是啊,模型是怎么做到的呐?


好在想了一下,又想起来了。好记性不如烂笔头,还是把自己的想法记录下来,希望下次自己再想不起来的时候,能想到自己做了笔记,并且通过看笔记解决问题。



深度学习使用的数据,以MNIST手写字体识别数据和Kaggle平台猫狗识别数据为例——数据可以分成两个:



  • 图像



  • 标签


    这里举例的数据使用的标签转换成了One-Hot形式,倘若是语义分割使用图像作为label,也可以按照这个思路来理解

    手写字体识别的标签是0-9共10个数字

    猫狗识别的标签是dog和cat,在模型中可以以0和1来替代字符串dog和cat

    当然最后应当都需要使用One-Hot编码格式


    之所以使用One-Hot编码格式,因为深度学习任务中,特征不是连续的值(如dog和cat之类的),将这些数据用数字来表示,执行的效率会高很多

    独热编码One-Hot参考下面的网址进行学习,在此不做赘述


    机器学习之独热编码(One-Hot)详解(代码解释)






那么,深度学习的模型是如何通过对图像和label的学习,来做到:给定一张模型没有见过的图像,较准确的识别的呐?


以上面图像(猫狗识别为例)的网络模型为例。


图中显示了四个层。从左往右依次可以视作为:输入层——中间隐藏层1——中建隐藏层2——判断层



中间隐藏层可以是全连接,也可是是卷积层。这些并没有什么大碍。在这里理解为是具有学习能力的神经即可。


图像和label一定要一一对应,这些都是可以通过数据处理来做到的。


比如MNIST数据集,可以直接使用深度学习模型框架里现成的数据。

如果是猫狗数据集,我们都知道,存储狗的图像的文件夹的名字就是dog,存储猫的图像的文件夹的名字是cat。不会再有其他额外的文件夹了。那么我们就可以,利用文件夹的名字,与文件的地址相对应(好像记得可以这么做,忘得有点多。),以此来给图片打标签。


我们通过Tensorflow的数据通道,将图像输入到模型中。它的判断流程应当是这样的:



  • 图像输入进去,在模型中进行各种变化。最后通过softmax或者sigmoid激活函数激活,得到图像可能是各个label的概率。然后,概率最大的哪个label就是真正的类别。

  • 上面是第一次的运行。那它到底是如何进行判断的呐?发现在模型的运行过程中,label是没有在其中参与什么进程的。但是label明明是指引模型进行正确的判断的。

  • 原来,模型的第一次运行得到的结果,是随便做的一个猜测。没有任何依据。但是一旦它得到一个结果了,就可以与我们的label进行想匹配,进行一个学习。通过损失函数,反向传播,调整参数。

  • 当数据量足够大以后,模型学习到的参数就能学习并预测到这张图像的label,此时再与人为设定的label作比较,发现两者相等,损失函数就不会变化。这样准确的结果出现的次数逐渐增多的情况下,模型的精确度就会逐渐提高,直到无法再提高。

  • 这样模型的训练就结束了。而模型的预测就是利用训练好的参数,其实就是重复第一步。要说预测与训练的区别的话

    • 预测是应用已有的模型参数,而训练是来学习然后生成参数

    • 预测其实就是训练的第一步。但预测不用反向传递来让模型纠正



综上,就是我对深度学习的模型可以分类/分割图像的看法。不知道下一次再忘记的时候来回顾的话,还能不能看得懂……



推荐阅读
  • 尽管深度学习带来了广泛的应用前景,其训练通常需要强大的计算资源。然而,并非所有开发者都能负担得起高性能服务器或专用硬件。本文探讨了如何在有限的硬件条件下(如ARM CPU)高效运行深度神经网络,特别是通过选择合适的工具和框架来加速模型推理。 ... [详细]
  • 毕业设计:基于机器学习与深度学习的垃圾邮件(短信)分类算法实现
    本文详细介绍了如何使用机器学习和深度学习技术对垃圾邮件和短信进行分类。内容涵盖从数据集介绍、预处理、特征提取到模型训练与评估的完整流程,并提供了具体的代码示例和实验结果。 ... [详细]
  • 深入浅出TensorFlow数据读写机制
    本文详细介绍TensorFlow中的数据读写操作,包括TFRecord文件的创建与读取,以及数据集(dataset)的相关概念和使用方法。 ... [详细]
  • 基于机器学习的人脸识别系统实现
    本文介绍了一种使用机器学习技术构建人脸识别系统的实践案例。通过结合Python编程语言和深度学习框架,详细展示了从数据预处理到模型训练的完整流程,并提供了代码示例。 ... [详细]
  • 全能终端工具推荐:高效、免费、易用
    介绍一款备受好评的全能型终端工具——MobaXterm,它不仅功能强大,而且完全免费,适合各类用户使用。 ... [详细]
  • 本文探讨了亚马逊Go如何通过技术创新推动零售业的发展,以及面临的市场和隐私挑战。同时,介绍了亚马逊最新的‘刷手支付’技术及其潜在影响。 ... [详细]
  • 吴恩达推出TensorFlow实践课程,Python基础即可入门,四个月掌握核心技能
    量子位报道,deeplearning.ai最新发布了TensorFlow实践课程,适合希望使用TensorFlow开发AI应用的学习者。该课程涵盖机器学习模型构建、图像识别、自然语言处理及时间序列预测等多个方面。 ... [详细]
  • 优化ListView性能
    本文深入探讨了如何通过多种技术手段优化ListView的性能,包括视图复用、ViewHolder模式、分批加载数据、图片优化及内存管理等。这些方法能够显著提升应用的响应速度和用户体验。 ... [详细]
  • 三星W799在2011年的表现堪称经典,以其独特的双屏设计和强大的功能引领了双模手机的潮流。本文详细介绍其配置、功能及锁屏设置。 ... [详细]
  • 基因组浏览器中的Wig格式解析
    本文详细介绍了Wiggle(Wig)格式及其在基因组浏览器中的应用,涵盖variableStep和fixedStep两种主要格式的特点、适用场景及具体使用方法。同时,还提供了关于数据值和自定义参数的补充信息。 ... [详细]
  • 本文详细介绍了MicroATX(也称Mini ATX)和MATX主板规格,探讨了它们的结构特点、应用场景及对电脑系统成本和性能的影响。同时,文章还涵盖了相关操作系统的实用技巧,如蓝牙设备图标删除、磁盘管理等。 ... [详细]
  • 本文详细介绍如何在VSCode中配置自定义代码片段,使其具备与IDEA相似的代码生成快捷键功能。通过具体的Java和HTML代码片段示例,展示配置步骤及效果。 ... [详细]
  • 本文将介绍网易NEC CSS框架的规范及其在实际项目中的应用。通过详细解析其分类和命名规则,探讨如何编写高效、可维护的CSS代码,并分享一些实用的学习心得。 ... [详细]
  • Unity编辑器插件:NGUI资源引用检测工具
    本文介绍了一款基于NGUI的资源引用检测工具,该工具能够帮助开发者快速查找和管理项目中的资源引用。其功能涵盖Atlas/Sprite、字库、UITexture及组件的引用检测,并提供了替换和修复功能。文末提供源码下载链接。 ... [详细]
  • Kubernetes 持久化存储与数据卷详解
    本文深入探讨 Kubernetes 中持久化存储的使用场景、PV/PVC/StorageClass 的基本操作及其实现原理,旨在帮助读者理解如何高效管理容器化应用的数据持久化需求。 ... [详细]
author-avatar
leee
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有