Image Classification
这节课的几个问题
Q1: how does the classification speed depend on the size of the training data?
A1:当训练集的规模变大时训练时间是线性变慢的。
Q2:what is the accuracy of the nearest neighbor classifier on the training data, when using the Euclidean distance?
A2:100%
Q3:what is the accuracy of the k-nearest neighbor classifier on the training data?
A3:不一定
Q4:what does the linear classifier do, in English?
A4:线性分类器就是将图片转化为相同的大小,然后通过W来计算图片的Score最终决定图片是属于哪一类的。
Q5:what would be a very hard set of classes for a linear classifier to distinguish?
A5:当一个集合不是线性可分的时候,线性分类器是很难学习的。
这一节课介绍了图像分类问题,并介绍了两个简单的分类器。(KNN分类器以及线性分类器)
图像分类问题
图像分类问题就是已有固定的标签集合,对于输入的图像,从分类标签集合里选出一个标签标记该输入的图像。
图像分类问题是计算机视觉领域核心问题之一,很多视觉领域的问题都可以归结为图像分类问题。
课程PPT给了一张猫的图片为例:
对这只猫的图像生成{cat,dog,hat,mug}四个标签中每个标签的概率。
在这个例子中。猫的图片就是一个数字的三维数组。所以给这个图片标记的问题就是将数组中的数字转化为标签。
所以图像分类问题就是将图像的三维数组转化为标签。三维数组的大小是
宽x高x3(数字3代表RGB三个颜色通道)
对于人类来说,给一张图片进行标记是一件非常简单的事,可是在CV领域这不是一件简单的事情。计算机会碰到很多干扰:视角的变化、背景的差异等等。
数据驱动方法
*数据驱动方法就是给计算机喂很多数据,然后通过演算法使计算机学到各个类的外形。*其实就是Machine Learning的方法
图像分类的流程:
输入:输入一个训练集(就是包含N个图像的集合,每个图像都带有标签)
学习:用训练集来学习每个类的特征。该步骤也称为训练分类器或者学习一个模型
评价:用测试集来测试分类器的性能,测试集的错误率越小,分类器就越好。
图像分类就是机器学习中的Classification问题的实际应用。
Nearest-Neighbor分类器
图像分类数据集: CIFAR-10。这个数据集包含了60000张32X32的小图像。每张图像都有10种分类标签中的一种。这60000张图像被分为包含50000张图像的训练集和包含10000张图像的测试集。
所谓NN分类器就是对每一个测试集中的图片都从训练集中寻找出一张最相近的图片以此来给图片标记。
**使用NN分类器如何来衡量两张图片的距离?**这是NN分类器里最核心的问题
本例中使用d1距离来衡量:就是先将两张图片转化为两个向量I1 I2
然后计算两向量之间的距离
这是一个比较的实例:
训练的过程还未实现下次更新。
对于距离的衡量还有其他的选择:
KNN分类器
**KNN分类器是对NN分类器的改进,思想就是:与其只找最相近的那1个图片的标签,我们找最相似的k个图片的标签,然后让他们针对测试图片进行投票,最后把票数最高的标签作为对测试图片的预测。
当K=5时,分类器的泛化能力最强。
超参数以及验证集
在数据驱动的机器学习算法中有些参数的设置(例如KNN中K的值)并不是显而易见的,这些参数的选择就要通过验证集来调优。
决不能使用测试集来进行调优。否则会出现过拟合。
交叉验证
所谓交叉验证就是通过将训练集切分成几个数据集,轮流地使其中一个数据集作为验证集来进行调优。
在实际应用中交叉验证并不常用,这是因为交叉验证耗费的计算资源太大。
Lab的部分还未完成下次更新。