CS231N图像分类笔记总结

图像分类笔记的总结
本文是自己对CS231N课程笔记的阅读后的一些总结。

  1. 什么是图像的分类

所谓图像分类问题,就是已有固定的分类标签集合,然后对于输入的图像,从分类标签集合中找出一个分类标签,最后把分类标签分配给该输入图像

2.计算机中图像的表示方法

图像是一个由数字组成的巨大的3维数组。如一幅图像大小是宽248像素,高400像素,有3个颜色通道,分别是红、绿和蓝(简称RGB)。如此,该图像就包含了248X400X3=297600个数字,每个数字都是在范围0-255之间的整型

3.图像分类流程

输入:输入是包含N个图像的集合,每个图像的标签是K种分类标签中的一种。这个集合称为训练集。
学习:这一步的任务是使用训练集来学习每个类到底长什么样。一般该步骤叫做训练分类器或者学习一个模型。
评价:让分类器来预测它未曾见过的图像的分类标签,并以此来评价分类器的质量。我们会把分类器预测的标签和图像真正的分类标签对比。毫无疑问,分类器预测的分类标签和图像真正的分类标签如果一致,那就是好事,这样的情况越多越好。

4.Nearest Neighbor分类器的介绍

一个非常流行的图像分类数据集是CIFAR-10。这个数据集包含了60000张32X32的小图像。每张图像都有10种分类标签中的一种。这60000张图像被分为包含50000张图像的训练集和包含10000张图像的测试集。

NN分类器的实现方法就是让两张图片首先分别使用向量表示他们,然后两个向量相减之后得到的向量和的大小就是两张图片的距离。这个距离越小,两张图片越相似。
于是我们判断测试集中的图片属于哪个标签时,只需要将当前测试的这张图片逐一的与训练集中的每张图片比较,找到最相似的图片,给它打上与那张找到的图片一样的标签。
这样得到的测试集图片标签正确率为38.6%。

5.k-Nearest Neighbor分类器

思想:与其只找最相近的那1个图片的标签,我们找最相似的k个图片的标签,然后让他们针对测试图片进行投票,最后把票数最高的标签作为对测试图片的预测。所以当k=1的时候,k-Nearest Neighbor分类器就是Nearest Neighbor分类器。

6.超参数

k-NN分类器需要设定k值,那么选择哪个k值最合适的呢?我们可以选择不同的距离函数,比如L1范数和L2范数等,那么选哪个好?还有不少选择我们甚至连考虑都没有考虑到(比如:点积)。所有这些选择,被称为超参数(hyperparameter)。

有一种做法是,尝试不同的值,看哪个值表现最好就选哪个。特别注意:决不能使用测试集来进行调优。当你在设计机器学习算法的时候,应该把测试集看做非常珍贵的资源,不到最后一步,绝不使用它。如果你使用测试集来调优,而且算法看起来效果不错,那么真正的危险在于:算法实际部署后,性能可能会远低于预期。这种情况,称之为算法对测试集过拟合

7.验证集,训练集,测试集

一种测试集调优的方法如下:
其思路是:从训练集中取出一部分数据用来调优,我们称之为验证集(validation set)。以CIFAR-10为例,我们可以用49000个图像作为训练集,用1000个图像作为验证集。验证集其实就是作为假的测试集来调优。
使用验证集来跑程序结束后,我们会作图分析出哪个k值表现最好,然后用这个k值来跑真正的测试集,并作出对算法的评价。
也就是说,把训练集分成训练集和验证集。使用验证集来对所有超参数调优。最后只在测试集上跑一次并报告结果。

8.交叉验证

有时候,训练集数量较小(因此验证集的数量更小),人们会使用一种被称为交叉验证的方法,这种方法更加复杂些。还是用刚才的例子,如果是交叉验证集,我们就不是取1000个图像,而是将训练集平均分成5份,其中4份用来训练,1份用来验证。然后我们循环着取其中4份来训练,其中1份来验证,最后取所有5次验证结果的平均值作为算法验证结果。

9.Nearest Neighbor分类器的优劣

  • 这种分类器训练的思路十分简单,花费的时间几乎没有,但是测试需要花费大量时间计算,因为每个测试图像需要和所有存储的训练图像进行比较。
  • 卷积神经网络在这个权衡上走到了另一个极端:虽然训练花费很多时间,但是一旦训练完成,对新的测试数据进行分类非常快。这样的模式就符合实际使用需求。
  • 在NN分类器中,图像更多的是按照背景和颜色被分类,而不是语义主体分身。

参考:https://zhuanlan.zhihu.com/p/20900216
https://zhuanlan.zhihu.com/p/20894041?refer=intelligentunit

你可能感兴趣的:(深度学习,cs231n,图像,图像分类,cs231n)