码迷,mamicode.com
首页 > 其他好文 > 详细

[ CS231n ] 图像分类

时间:2020-06-30 22:30:12      阅读:57      评论:0      收藏:0      [点我收藏+]

标签:效率   类型   选择   平移   部分   分类器   之间   适应   衡量   

图像分类

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 \times 1\)的向量,其中每个位置上的数值代表了对这个类的打分情况,然后选择那个分数最高的索引位作为我们的分类。同时,bias不与训练数据交互,而是给我们一些数据独立的偏好值,仅仅针对一类的偏好值。

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

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

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

    bias:\(K \times 1\)的列向量

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

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

[ CS231n ] 图像分类

标签:效率   类型   选择   平移   部分   分类器   之间   适应   衡量   

原文地址:https://www.cnblogs.com/recoverableTi/p/13216302.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!