[ CS231n ] 图像分类

Posted recoverableti

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[ CS231n ] 图像分类相关的知识,希望对你有一定的参考价值。

图像分类

KNN算法

  • KNN算法可用于图像分类,且根据K值的不同,分割边界也会受到比较大的影响。

  • KNN并不常用于如今的图像分类,原因主要有两点:

  1. 没有显式的训练过程,测试时每个测试样本点需要遍历所有样本点,找到K个最近邻的点,以确定分类。

  2. 距离计算标准(欧几里得、曼哈顿距离)公式在比较图像上并不适用,这种向量化的距离函数不太适合表示图像之间视觉的相似度,或是发现它们之间的不同。实际上,这样的距离计算在KNN中是该算法唯一的衡量标准,因此有许多不适用性需要克服。

    比如此时将某图片进行平移、遮挡、换色,对得到的三张图结果计算L2值,结果得到三个相同的L2距离,因此可以发现,L2距离不适用于表示图像之间视觉感知的差异。

  3. 维度爆炸:当维度上升时,数据点需要呈现指数级别上升,才能训练出较好的模型,完成空间覆盖。但实际上不可能拿到那么多的图片去密集分布,因为大部分时候我们都是在高维空间进行训练的。

    假设当维度为1时,只需要四个样本点;那么当维度为2时,就需要(4^2)个样本点;同理,当维度为2时,就需要(4^3)个样本点.... 这样首先容易数据爆炸啦。

  • KNN总结
  1. 在图像分类中,我们需要使用训练集的照片标签,同时预测测试集的标签。
  2. 其中距离矩阵和K值都属于超参数。
  3. 借助验证集选择合适的超参数、然后在最后使用测试集做最后评估表现。

线性分类

[f(x, W) = Wx + b ]

  • 理论:在线性分类器中,实际上是使用训练集训练出一个合适的函数F。这一参数化的方法,将总结对训练数据的认识,并把所有的知识都使用到这些参数W中。所以,和KNN相比,在测试的时候,我们不再需要原始的训练数据,而是直接借助该函数的参数进行预测即可,大大提升了模型效率。

  • 参数:进行类别判断时,模型将计算出一个矩阵,当有10个类别时,该矩阵为(10 imes 1)的向量,其中每个位置上的数值代表了对这个类的打分情况,然后选择那个分数最高的索引位作为我们的分类。同时,bias不与训练数据交互,而是给我们一些数据独立的偏好值,仅仅针对一类的偏好值。

  • 训练:一张(2 imes 2)的图片,使用一个已经训练好的模型对其进行分类,共有 K = 3种类型。

    输入图像:N = 4个pixels组成一个(4 imes 1)的列向量

    W值:W的维度是规定好的,即【K,N】,得到一个(3 imes 4)的矩阵

    bias:(K imes 1)的列向量

    结果:与bias的结构相同,每个位置都是类别的打分

  • 存在问题:每个类别只能学习出一个模版,如果这个类别出现了该类型的变体,模型将尝试求取所有不同变体,选择一个适应所有样本的平均值作为参数。重新组成模版后,仍然使用这唯一的函数来识别测试集中的每个类别。

以上是关于[ CS231n ] 图像分类的主要内容,如果未能解决你的问题,请参考以下文章

『cs231n』图像定位与检测

『cs231n』图像定位与检测(下,待续)

CS231n课程笔记翻译

全球名校课程作业分享系列--斯坦福计算机视觉与深度学习CS231n之SVM图像分类

全球名校课程作业分享系列--斯坦福计算机视觉与深度学习CS231n之softmax图像多分类

全球名校课程作业分享系列--斯坦福计算机视觉与深度学习CS231n之特征抽取与图像分类提升