跳转至

CS231n Convolutional Neural Network for Visual Recognition

Image Classification

图像分类问题

任务

给定一张图片,输出图片中物体的种类

意义:本身的意义,以及作为其他更复杂的计算机视觉任务的基础

挑战

  • Viewpoint variation
  • Scale variation
  • Deformation
  • Occlusion
  • Illumination conditions
  • Background clutter
  • Intra-class variation

解答

feature-driven

采用“特征驱动”的方式,人工设置特征,对特征进行分类

data-driven

采用数据驱动的方式,由程序通过特定的算法提取信息

Nearest Neighbor Classifier

最近邻法是一种常用的机器学习算法,通过图像两两之间的“距离”确定所属“类”的关系。

距离函数通常采用\(L_1\)范数或\(L_2\)范数:

\[ d_{1}\left(I_{1}, I_{2}\right)=\sum_{p}\left|I_{1}^{p}-I_{2}^{p}\right| \]

img{loading=lazy}

最近邻法训练的复杂度为\(O(n)\)(只需要“记住”所有训练样本),测试的复杂度为\(O(m \times n)\),并不是很理想。

最近邻算法只依赖最近的一个数据点进行决策,saliency point 对结果影响很大,于是衍生出了\(k\)最近邻算法。

img{loading=lazy}

Train, validation and test

首先,我们需要把训练集和测试集分开;其次,我们不能用测试集来调参

训练集用于模型的训练,验证集用于模型的验证,测试集用于测试模型在接触到新的数据时的表现。

或者说,打个不太恰当的比喻,训练集是作业,验证集是模拟考试,测试集是期末考试。考完之后,就要上线部署,走上工作岗位了~

Cross-validation

如果数据集较小,可考虑将数据集分成\(n\)份,从其中选取\(n-1\)份用于训练,\(1\)份用于验证

img{loading=lazy}