[雪峰磁针石博客]python计算机视觉深度学习1简介
神经网络和深度学习简史
人工神经网络(ANN Artificial Neural Network)是一类学习的机器学习算法,它专注于模式识别,对数据进行学习,灵感来自大脑的结构和功能深度学习属于ANN算法的家族,在大多数情况下,两者可以互换使用。
事实上,你可能会惊讶地发现深度学习领域已经存在了60多年。自20世纪40年代以来,“深度学习”一直存在着各种各样的名字
变化,包括控制论,连接主义和最熟悉的人工神经网络。
第一个神经网络模型来自McCulloch和Pitts,1943年。这个网络是一个二元分类器,能够根据一些输入识别两个不同的类别。
然后,在20世纪50年代,开创性的Perceptron算法由Rosenblatt发表 - 这个模型可以自动学习输入分类所需的权重(无人为干预需要)。这个自动训练程序构成了随机梯度下降(SGD Stochastic Gradient Descent)的基础,今天仍用于训练非常深的神经网络。
在此期间,基于感知器的技术在神经网络社区中风靡一时。然而,Minsky和Papert 在1969年出版的一本书有效地停滞了神经
网络研究近十年。他们的工作证明了具有线性的感知器激活函数(深度无关)只是线性分类器,无法解决非线性问题问题。
上图中无法用直线分隔蓝色星星与红色圆圈。此外,作者认为(当时)我们没有计算资源来构建大型深度神经网络(事后看来,它们绝对正确)。
反向传播算法和Werbos(1974),Rumelhart(1986)和LeCun(1998)的研究[17]唤醒了神经网络。他们在反向传播算法中的研究启用了多层要训练的前馈神经网络。
结合非线性激活函数,研究人员现在可以学习非线性函数并解决XOR问题,为神经网络研究的全新领域打开了大门。
进一步的研究表明神经网络是通用的近似,能够近似任何连续函数(但不保证网络是否正常可以学习表示函数所需的参数)。
反向传播算法是现代神经网络的基石.有效地训练神经网络并“教导”他们从错误中吸取教训。但即便如此,在由于(1)计算机速度慢(与现代机器相比)和(2)缺少大量标记的训练集,研究人员无法(可靠地)训练超过两个隐藏的层的神经网络,因为计算上是不可行的。
今天最新神经网络为深度学习,我们拥有更快,更专业的硬件,提供更多可用的训练数据。我们现在可以训练具有更多隐藏层的网络,能够进行分级学习,在较低层和更多层次中学习简单的概念,在较高层中的抽象模式。
应用深度学习到特征学习的典型例子是应用于手写字符识别的Convo-lutional神经网络(LeCun 1988)。通过顺序堆叠自动从图像中学习区分模式(称为“过滤器”)。网络较低级别的过滤器代表边缘和角落,而更高级别的图层使用边缘和角落来学习更有用的抽象概念以区分图像类。
在许多领域中,CNN现在被认为是最强大的图像分类器,是目前负责推动计算机视觉子领域的最先进技术。
分层特征学习
机器学习算法通常分为三个阵营 - 监督,无人监督和半监督学习。
在监督的情况下,机器学习算法被给予一组输入和目标输出。然后,该算法尝试学习可用于自动映射输入数据的模式
指向正确的目标输出。监督学习类似于让老师看着你参加考试。鉴于您以前的知识,您尽力在您的标记上标记正确的答案
考试; 但是如果你不对老师会指导你做一个更好的,让你更有根据的猜测下一次。
在无监督的情况下,没有任何提示关于输入是什么,机器学习算法试图自动发现。在这种情况下,我们的学生会尝试
将类似的问题和答案组合在一起,即使学生不知道正确的答案,老师也不提供真正的答案。无监督学习显然是比监督学习更具挑战性的问题。
过去我们手工衡量图像的内容 ,很少使用原始像素强度作为我们机器学习模型的输入。现在对于每个图像,我们执行了特征提取,并返回旨在量化内容的矢量。
局部二元模式(Local Binary Patterns),Haralick纹理[22]),形状(shape)、Zernike Moments [24])和颜色(color moments, color histograms, color correlograms)广发用于识别。
其他方法,如关键点检测器(keypoint detector)和局部不变描述符(local invariant descriptor)用于处理图像关键区域。
当我们的图像的视点角度和训练的分类器没有显着变化时,定向梯度直方图(HOG Histogram of Oriented Gradient)非常擅长检测图像中的对象。
有一段时间,HOG及其变体引导了图像中物体检测的研究,如可变形零件模型( Deformable Parts Model)和范例SVM。
在深度学习中,特征提取由系统学习完成。
该有多深
我个人认为可以考虑任何具有两个以上隐藏层的网络为“深”。
我们现在有:
1.更快的电脑
2.高度优化的硬件(即GPU)
3.数百万张图像的大型标记数据集
4.更好地理解权重初始化函数以及什么/不起作用
5.卓越的激活功能和对前一非线性原因的理解
可爱的python测试开发库 请在github上点赞,谢谢!
- 技术支持qq群: 144081101(后期会录制视频存在该群群文件) 591302926 567351477 钉钉免费群:21745728
处理您自己的深度学习应用程序的建议:
1.您使用的是专门的网络架构,如卷积神经网络,回归神经网络或长期短期记忆(LSTM)网络?如果是的话,是的,你正在进行深度学习。
2.您的网络深度是否> 2?如果是的话,你正在深入学习。
3.您的网络深度是否> 10?如果是这样,你正在进行非常深入的学习。
不要太纠结于概念,无论如何你还在使用人工神经网络进行机器学习。
代码地址:https://github.com/whydna/Deep-Learning-For-Computer-Vision
注意不是: https://github.com/PacktPublishing/Deep-Learning-for-Computer-Vision

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
Java内存模型及GC原理
一个优秀Java程序员,必须了解Java内存模型、GC工作原理,以及如何优化GC的性能、与GC进行有限的交互,有一些应用程序对性能要求较高,例如嵌入式系统、实时系统等,只有全面提升内存的管理效率,才能提高整个应用程序的性能。 本文将从JVM内存模型、GC工作原理,以及GC的几个关键问题进行探讨,从GC角度提高Java程序的性能。 一、Java内存模型 按照官方的说法:Java 虚拟机具有一个堆,堆是运行时数据区域,所有类实例和数组的内存均从此处分配。 JVM主要管理两种类型内存:堆和非堆,堆内存(Heap Memory)是在 Java 虚拟机启动时创建,非堆内存(Non-heap Memory)是在JVM堆之外的内存。 简单来说,堆是Java代码可及的内存,留给开发人员使用的;非堆是JVM留给自己用的,包含方法区、JVM内部处理或优化所需的
- 下一篇
[雪峰磁针石博客]python计算机视觉深度学习2图像基础
构建自己的图像分类器之前需要了解图像是什么。 像素:图像的元素 像素是图像的基本元素。每个图像都由一组像素组成。没有比像素更细的粒度。 通常像素是光的“颜色”或“强度”。 下图的分辨率为1,000×750,这意味着它是1,000像素宽750像素高。我们可以将图像概念化为(多维)矩阵。图片中总共有1,000×750 = 750,000像素。 大多数像素以两种方式表示:1.灰度/单通道2.颜色 在灰度图像中,每个像素是0到255之间的标量值,其中零对应为“黑色”,255为“白色”。 彩色像素通常在RGB颜色空间中表示(其他颜色空间通常要转成RGB)。 黑色:(0, 0, 0)红色:(255, 0, 0) RGB色彩空间的主要缺点包括:•不使用“颜色选择器”工具时表示颜色不直观•它不像人类看待颜色的方式。 图像坐标系统 OpenCV和scikit-image用多维NumPy数组表示RGB。 import cv2 image = cv2.imread("example.png") print(image.shape) cv2.imshow("Image", image) cv2.waitKey...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- CentOS8编译安装MySQL8.0.19
- CentOS8,CentOS7,CentOS6编译安装Redis5.0.7
- Eclipse初始化配置,告别卡顿、闪退、编译时间过长
- Docker安装Oracle12C,快速搭建Oracle学习环境
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作
- Mario游戏-低调大师作品
- CentOS7编译安装Gcc9.2.0,解决mysql等软件编译问题
- CentOS7编译安装Cmake3.16.3,解决mysql等软件编译问题
- SpringBoot2更换Tomcat为Jetty,小型站点的福音