斯坦福CS231n—深度学习与计算机视觉----学习笔记 课时4
课时4 数据驱动的图像分类:K最邻与线性分类器(上)
图像分类之前,我们需要将图片转换成一张巨大的数字表单,然后从所有种类中,给这个表单选定一个标签。
为什么分类问题是个困难的问题:图像分类难点是,当你想要处理这表单中数以百万计的数字并对其进行分类,这个问题是相当的复杂的,另外,相机是可以进行旋转和缩放的,并且旋转、平移、聚焦点选取等操作都会让图片样式不同。再考虑下相机高度的调整,这些所有的相机调整会使图片看起来完全不一样,我们对所有这些调整都具有鲁棒性;还有一些其他的挑战,例如光纤问题,我们对干扰也要具有强健的鲁棒性;还有形变的问题,也要对这种干扰具有鲁棒性;还有遮蔽的问题,有时候我们不能看到物体的全貌;背景杂斑问题,要检测的物体可能融入背景之中;同类演变问题。任何一个独立的问题都是十分复杂的。
我们构建一个三维空间,将x轴上的值定为种类标签值(没有任何一种显式的编程方法能实现这样的分类器),有一种算法例如排序算法能够实现这样的分类器。
近邻算法分类器
近邻算法:分类器的工作方式是高效的得到本联合训练集。在一段训练时间内,我们只需记住所有的训练数据,所以我们得到了 我们刚刚输入的全部训练数据,并且我们记住了他们。现在当你给我们一张测试图像时,我们要做额就是对测试图像和之前看过得每一张训练集中的图像进行一一对比,然后我们会传送相应的标签。
我们要如何定义距离的度量

其中最简单的方式可能就是曼哈顿距离算法,L1距离算法,该算法的内容是你有一个测试图像,认为我们需要一个单一的训练图像来比较该图像,基本上我们需要做的就是我们将逐元素比较,所有的像素值,形成绝对值的差,然后我们将差值全部相加。就是说只要观察每一个像素的位置,得到同一个空间位置的像素差,将其全部相加就得到了相似性。
欧式距离(L2距离)不是计算绝对值差的和,而是计算这些图像间差值的平方和。一个用来进行控制的离散选择,这个距离的选择我们称为超参数
对于近邻算法分类器有一个问题
他的速度如何取决于训练数据的大小?当训练数据的规模增大时将会发生什么?会变慢吗?是的,事实上他减慢的速度是线性的。因为我们只是独立地比较每一个训练样本,所以他会线性地减慢。
近邻算法是一个即时的训练方法,但同时他又是一个昂贵的测试方法,不管你的训练集有多大,我们对于每一张测试实例进行分类的计算量都将是恒定的。
能使近邻算法分类器速度加快的方法:近似近邻算法。
最邻近规则分类器KNN:检查每一张测试图像,事实上,单一邻近的训练实例 将检索几个最邻近的实例,我们将它们在所有的类中做多数的表决,从而对每一个测试实例进行分类。当K值变大,会发现边界变得平滑。 对于K值的选择是一个超参数 ,采用了不同的测量标准,效果最好的便是我所需要的。如果数据过少,可以使用交叉验证法,在选择中反复选择测试验证折,在所有可能的测试折的选择中选出效果最好的。但是KNN很少被采用的原因是效率低。
不同的方法会有不同的泛化方式

卷积神经网络CNN可用于机器视觉,循环神经网络RNN非常适用于排序问题。
斯坦福CS231n—深度学习与计算机视觉----学习笔记 课时4的更多相关文章
- 斯坦福CS231n—深度学习与计算机视觉----学习笔记 课时3
课时3 计算机视觉历史回顾与介绍下 ImageNet有5000万张图片,全部都是人工清洗过得,标注了超过2万个分类. CS231n将聚焦于视觉识别问题,图像分类关注的是大图整体:物体检测告诉你东西具体 ...
- 斯坦福CS231n—深度学习与计算机视觉----学习笔记 课时1
课时1 计算机视觉历史回顾与介绍上 CS231n:这一一门关于计算机视觉的课程,基于一种专用的模型架构,叫做神经网络(更细一点说,是卷积神经网络CNN).计算机视觉是人工智能领域中发展最为迅猛的一个分 ...
- 斯坦福CS231n—深度学习与计算机视觉----学习笔记 课时26&&27
课时26 图像分割与注意力模型(上) 语义分割:我们有输入图像和固定的几个图像分类,任务是我们想要输入一个图像,然后我们要标记每个像素所属的标签为固定数据类中的一个 使用卷积神经,网络为每个小区块进行 ...
- 斯坦福CS231n—深度学习与计算机视觉----学习笔记 课时24&&25
课时24 深度学习开源库使用介绍(上) Caffe 被用于重新实现AlexNet,然后用AlexNet的特征来解决其他事情 用C++书写的,可以去GitHub上面读取源代码 主要四个类: Blob可以 ...
- 斯坦福CS231n—深度学习与计算机视觉----学习笔记 课时8&&9
课时8 反向传播与神经网络初步(上) 反向传播在运算连路中,这是一种通过链式法则来进行递推的计算过程,这个链路中的每一个中间变量都会对最终的损失函数产生影响. 链式法则通常包含两部分,局部梯度和后一层 ...
- 斯坦福CS231n—深度学习与计算机视觉----学习笔记 课时12&&13
课时12 神经网络训练细节part2(上) 训练神经网络是由四步过程组成,你有一个完整的数据集图像和标签,从数据集中取出一小批样本,我们通过网络做前向传播得到损失,告诉我们目前分类效果怎么样.然后我们 ...
- 斯坦福CS231n—深度学习与计算机视觉----学习笔记 课时11
课时11 神经网络训练细节part1(下) 2010年,Glorot等人写的论文,我们称之为Xavier初始化,他们关注了神经元的方差表达式.他们推荐一种初始化方式,那就是对每个神经元的输入进行开根号 ...
- 斯坦福CS231n—深度学习与计算机视觉----学习笔记 课时10
课时10 神经网络训练细节part1(上) 没有大量的数据也不会有太多影响,只需要找一个经过预训练的卷积神经网络然后进行调整 从数据集中抽样一小批数据, 将数据运入卷积神经网络中来计算损失值 通过反向 ...
- 斯坦福CS231n—深度学习与计算机视觉----学习笔记 课时7
课时7 线性分类器损失函数与最优化(下) 我们为什么要最大化对数概率而非直接最大化概率? 你在做逻辑斯蒂回归时,如果你只是想要最大化概率,那你使用log是无意义的.因为log函数是单调函数,最大化概率 ...
- 斯坦福CS231n—深度学习与计算机视觉----学习笔记 课时14&&15
课时14 卷积神经网络详解(上) CNN处理的是一些数据块,在这之间有很多层,一系列的层将输入数据变换为输出数据,所以完成操作的中间量不仅是NN时候讲的那些向量,而是立体结构,有宽,高和深度,在整个计 ...
随机推荐
- vim修改二进制文件
先用vim以二进制格式打开需要编辑或查看的文件,不采用-b参数有时会导致转换错误,详见分隔线后部分. vim -b file-to-open.dat 然后用xxd把文件转换成十六进制格式 :%! ...
- IntelliJ IDEA cannot resolved 处理
IntelliJ IDEA cannot resolved 处理 学习了:https://stackoverflow.com/questions/21577573/intellij-idea-can- ...
- Type cannot use 'try' with exceptions disabled
cannot use ‘throw’ with exceptions disabled 在为 DragonBonesCPP/refactoring 的 cocos2d-x-3.2 demo 增加 An ...
- Effective C++ 条款三 尽可能使用const
参考资料:http://blog.csdn.net/bizhu12/article/details/6672723 const的常用用法小结 1.用于定义常量变量,这样这个变量在后面就不可以 ...
- 基本SQL 语句操作数据增删查改
1.创建数据库: create database <数据库名>. 如:create database student; 2.连接到一个已经存在的数据库: use <数据库名>: ...
- 多重继承下的virtual functions
有如下图所示的继承关系: 有如下代码示例: 在早期的未符合c++标准的的编译器上是会报错的,因为对于clone()函数来说,编译器不知道怎么处理处理.但是时至今日c ...
- DirectX11 学习笔记5 - D3DXMath 库
directx11 特别推出了一个数学库 用于向量 矩阵的计算.并且使用128位 同一时候计算4条32位数据 (SIMD) 之前基本是用的directx10math.h这个头文件. 这个数学库既然是 ...
- ios自动生成对象类,提高开发速率
#import "autoGenerationFileUtility.h" @implementation autoGenerationFileUtility - (void)cr ...
- appium 控件定位
转自:http://www.2cto.com/kf/201410/340345.html AppiumDriver的各种findElement方法的尝试,尝试的目标应用是SDK自带的Notepad应用 ...
- bash shell和进程
1 exec builtin 不创建子shell,在原进程的上启动新的脚本,但是它会把老shell的环境清理掉,所以,它从原shell中什么也不继承,在一个干净的环境中执行新的脚本.执行完之后退出当前 ...