博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[cs231n之第二课]Image Classification
阅读量:3556 次
发布时间:2019-05-20

本文共 1588 字,大约阅读时间需要 5 分钟。

课程地址:

http://write.blog.csdn.net/mdeditor
课件地址:
http://cs231n.stanford.edu/slides/2017/

本节课程内容简介:

图像分类的

图像分类对于人来来说是很容易的事情。但是对于机器来说却很困难,这是因为对机器输入一幅图片,它不是看到一幅图像,而是得到一个具有不同数值的巨大矩阵(网络),比如800x800像素的图像,它接受到的是800x800个像素,RGB通道的各个值构成的三维矩阵。根据这个矩阵,机器要输出一个类别,与图像的标签进行对比,相同则分类正确。

这里写图片描述
(语义差距)
语义上的标签与输入的像素值存在巨大的差别。
这里写图片描述
有很多因素会导致图像的像素矩阵会完全改变,比如拍照的角度移动一点点,那图像像素矩阵的值都会改变,但这个图像代表的仍然是猫。另外一些因素有光照、不同形态、遮挡、背景干扰、猫的种类不同等。
这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述
以上图片的类别都应该输出猫,尽管它们的图像矩阵区别可能很大。
编写分类程序的思想:
这里写图片描述
最简单的分类器:KNN
这里写图片描述
在CIFAR-10数据集上训练模型并验证。
这里写图片描述
KNN的思想是,输入一个图像,找到与它最相似的K个图片集合,然后选择这个图片集合中类别最多的一个类别。那么,图像类别预测的问题就转化为,如何把两幅图像进行比较。这里用的是L1距离,又称曼哈顿距离。
这里写图片描述
使用python实现这个KNN的程序代码如下:
这里写图片描述
这里写图片描述
这里写图片描述
因为图像的分类过程会与数据集中的每一幅图做比较(曼哈顿距离),假设图像数据集的容量为N,则要计算N次,时间复杂度是O(N).训练时间复杂度是O(1),预测时间复杂度O(N)。
这里写图片描述
图像分类的速度与数据集的大小成线性函数。(然而我们希望在训练时花费时间没有关系,关键在测试的时候要快啊。)
在实践中,测试时间表现非常重要。
这里写图片描述
这里写图片描述
距离矩阵还可以选择L2距离,又名欧几里得距离。
L1取决于你选择的坐标系,如果你改变了坐标系,也会改变两个像素点的L1距离。L2则不论在什么坐标系,都不会改变两个像素点的距离。所以如果你的输入特征,单个的向量有重要的意义,那么选择L1比较合适。如果你不知道各个输入的向量代表什么,那就选择L2。通过选择不同的距离矩阵,我们可以将KNN应用于各种类型的数据,不止向量,不止图像,还可以用于文本等。
KNN的分类效果如下:

不同颜色的点为不同类别。

这里写图片描述
这里写图片描述
选择超参数的方法:
这里写图片描述

这里写图片描述

使用K折来验证模型的性能。
这里写图片描述
这里写图片描述
(在深度学习中,K折交叉验证的代价太大了,一般不会这么做。)
这里写图片描述

这里写图片描述

KNN在图像分类上的表现不佳,且它的距离矩阵(L1 OR L2)计算图像之间的差别都不合适。
比如在上图中显示的,这四幅图像(orginal,shifted,messed up,darkened)的L2距离都相同(刻意制作的),然而KNN无法很好的捕捉图像的这些特征。
这里写图片描述
这里写图片描述
这里写图片描述
神经网络搭建者~底下几层的卷积层,顶层的线性分类器。
这里写图片描述
对于一个模型,我们输入一幅图像,想要得到一个句子来描述它。
这里写图片描述
为了达到以上的效果,我们需要让一个卷积神经网络(CNN)“看着”这幅图,然后再让一个循环神经网络(RNN)输出这个描述。然后我们就像搭积木一样,把这些网络结构叠在一起。深度学习就像搭建积木,而线性分类器就是那一个个积木
这里写图片描述
回到CIFAR-10数据集
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Fa1DZEAr-1572932709262)(https://img-blog.csdn.net/20170814155903112?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvTlhIWUQ=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)]
最简单的分类过程:
这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述

在这里插入图片描述

你可能感兴趣的文章
vue上传文件到UCloud
查看>>
获取input选择文件的本地地址
查看>>
React绑定全局方法或变量
查看>>
js监听div标签上面的自定义属性
查看>>
navcat如何重置窗口
查看>>
代码注入
查看>>
off-by-one
查看>>
ctf-pwn的一些小技巧
查看>>
POJ 1915 Knight Moves
查看>>
Git 撤销修改
查看>>
Git 删除文件
查看>>
Git与远程仓库关联以及关联错误解决方法
查看>>
[HDU] 平方和与立方和
查看>>
[HDU 2096] 小明A+B
查看>>
[HDU 2520] 我是菜鸟,我怕谁(不一样的for循环)
查看>>
[HDU 1215] 七夕节(求因子,不超时)
查看>>
[POJ 1915] Knight Moves
查看>>
Memcache技术精华
查看>>
Redis详解入门篇
查看>>
php开启redis扩展包与redis安装
查看>>