第一课:计算机视觉历史回顾与介绍(上)
简单的介绍:关于课程,我们要解决的问题,我们要学习的工具
神经网络/卷积神经网络(深度学习网络)
我们实际上进入了一个视觉时代(像素),互联网作为信息载体和传感器的发展。
对照片进行标签、分类、处理视频的每一帧依赖计算机视觉的发展。
挑战:非常大量的数据,以及“暗物质”(无法手工处理)。
本门课:
模型方面:神经网络
应用范围:视觉识别
深入理解问题本质,思考问题的真正定义,很难继续前行推进,成为下一个解决问题的模型发明者(开发出一个能解决实际难题的系统)。
神经元是一列一列排列的,它们只对特定的形状变化产生脉冲。
第三课:计算机视觉历史回顾与介绍(中)
视觉处理流程的第一步,是对简单的形状结构处理(边缘、排列)。
边缘决定结构(第一篇计算机视觉博士论文)。
视觉是分层的。
归纳上述两点:
从简单的形状开始
可以建立一个分层的模型
卷积神经网络
感知分组是视觉领域最为重要的问题。
试图去给真实的3D物体建模,现在我们变成了试图去“识别物体是什么”。我们跳过了是否能对这些人脸重新建模的过程。
第四课:计算机视觉历史回顾与介绍(下)
摩尔定律
大数据
第四课:数据驱动的图像分类方式:K最近邻与线性分离器
图像分类
在此之前,我们需要将图片转换成一张巨大的数字表单,然后从所有种类中,给这个表单选定一个标签。其他场景分类,物体检测都是在图像分类的基础上进行细小的改动。
为什么图片分类很难?
语义鸿沟。在计算机中,图片是一张巨大的数字表单,可以大致由一个3001003的三维数组表示,0~255的数字,这些数字反映的是亮度以及每个单点三基色的权值。
难点在于当你想要处理这表单中数以百万计的数字并将其分类。相机是可以进行旋转和缩放的,并且旋转、平移、聚焦点选取等操作都会让图片样式不同。相机亮度的调整。我们对所有这些调整都具有鲁棒性。形变问题。光纤问题。遮蔽问题。背景杂斑问题。同类演变问题。
图片分类器是什么样子呢?我们构建一个三维空间,将x轴上的值定为种类标签值,没有任何一种显示的编程方法能实现这样的分类器。
有一种方法是找到猫的小耳朵(以此来找到猫)。我们要做的就是检测并勾画出图片的边界,按照边界形状与连接方式进行分类。这会让你学习到这类东西的“样本集合”,我们可以尽量找到它们的各种形态。你也可以设定一些其他的规则。
那识别船和人呢?
所以这是一种不可扩展的分类方法。我们在机器学习的框架中经常采用的是数据驱动的方法。
现在有海量数据,如果我训练一个模型,这个模型是一个类,然后我可以使用这个模型对你的测试数据进行分类。当你给我一个新的图片时,我可以参考我的训练数据,然后做一些基于模式匹配和统计的工作。
考虑一些近邻算法分类器。
近邻算法分类器的工作方式是高效的得到本联合训练集。在一段训练时间内,我们只需记住所有的训练数据,所以我得到了我刚刚输入的全部训练数据,并且我记住了他们,当你给我一张测试图像时,我们要做的就是对测试图像和之前看过的每一张训练集中的图像进行一一对比,然后我们会传送相应的标签。因此我只需要浏览所有的图片。
我们如何来做比较?
最简单的方式就是曼哈顿距离算法(L1距离算法)。该算法将进行逐元素比较,比较所有的像素值,形成绝对值得差,然后将所有的差值相加,就得到了相似性。
Python算法
它的速度如何取决于训练数据的大小?当训练数据的规模增大将会发生什么?会变慢么?
近邻算法是一个即时的训练方法,但同时它又是一个昂贵的测试方法。
能使近邻算法分类器速度加快的方法?
近似近邻算法。
另外一个我们喜欢在实践中使用的度量叫做欧式距离或L2距离。欧式距离不是计算绝对值差的和,而是计算这些图像间差值的平方和。这是一个用来进行控制的离散选择,这个距离的选择我们称为超参数。
另一个超参数我们将在近邻算法分类器的背景下谈,及我们将近邻推广为最近邻规则分类器KNN。在最近邻规则分类器中,检索每一张测试图像,事实上,单一邻近的训练实例将检索几个最临近的实例。我们将让它们在所有的类中做多数的表决,从而对每一个测试实例进行分类。
随着K值的增大,比如说5-NN分类器,你就会发现分界线开始变平滑了,这就形成了非常好的效果。
使用欧几里得距离时最紧邻分类器的准确性?
使用曼哈顿距离?
L值为5的KNN方法?
如何设置k的值,可能是1,2,3...10或者其他,事实上,它们与问题本身有联系,如何找到这些超参数的最佳选择?
尝试,效果最好的就是我所需要的。
首先训练集是需要扔掉的,因为你的算法对于其它数据的泛化程度才是算法效果的关键。通过交叉验证法的结果来决定参数选择。
KNN很少被采用是因为首先它的效率很低,其次,他分类效果不是很好,容易受到环境变化的影响。
大多时候,人们不完全使用交叉验证集,它们只用一个单一的验证集,然后从中找到最合适的超参数。
- 线性分类
卷积神经网络
给图片加一句话的描述:
两个部分:第一部分是一个我们已知的卷积神经网络,可用于计算机视觉
另一个是循环神经网络,非常适用于排序问题(单词序列)
这两个网络之间会相互通信,在描述图像的过程中,这些梯度会流入整个卷积网络,系统会自我调整,以更好地认识图像,最后再描述它们。
- 通过参数化方法得到分类结构
我们要做的是构造一个函数,输入一张图片,对每一类输出一个数值。即对任意一张图片,我们会计算出它到底属于哪一类?这个函数表达式不仅仅是输入图像的函数,也是这些W表示的参数的函数,这些参数有时候也会被称为权重。
我们要学习这个函数:从最开始的线性函数,到神经网络再到卷积神经网络。更直观的,我们要输入一张图像,然后输出与十个类相对应的数值。我们不能改变x,但是可以改变W,可以设定任何值,我们希望把w设定为对训练集中每张图像都可以实现正确输出的值。
线性分类方法:
b不是图像的函数,它是独立的权重参数(均衡)。
猫最终输出的数值是-96.8,说明这里的W设置的不好。
那么线性分类器是做什么的呢?
从空间角度出发,X是一个多维的数据,然后W把一个平面放入这个多维数据中;W的每一行都和图像进行点乘(一种把相应需要结合的数匹配在一起);W有关注或不关注图片上的不同空间位置的能力(因为图片上的每个点X都有权重,如果权重设为零,则W不会关注那部分图片);从图片空间映射到标签空间...
如果图片不一样大怎么办?
你总要把图片改变到一个相同的大小。
本质上说:线性分类器计算的是一个加权和,即计算不同空间位置的颜色之和。
当有一个点使用的是混合颜色时,线性分类器工作就会变得很糟糕。
...
这个字幕各方面都不是很友好,我还是看吴恩达老师的课吧。。。