目录
S2.1数据驱动方法
图像分类定义
图像分类任务是计算机视觉的核心任务。在进行图像分类时,分类器接收一些输入图像,同时也知道图像集合对应的标签集合。分类器的任务就是为输入的图像分配一个固定的分类标签。图像的类别是人类赋予的语义的概念,而对于计算机来说,RGB图像仅仅是3维度的张量,是一个巨大的数字阵列。因此在进行图像分类任务时,会存在语义鸿沟(Semantic Gap)的问题。
语义鸿沟定义
图像的类别是人类赋予它的一个语义概念。这个语义概念和计算机实际看到的像素值之间有着巨大的差距。这即是语义鸿沟。这是个非常难的问题,存在视点变化,光照变化,目标形体变化,Occlusion,背景混杂,类内差异问题。
数据驱动方法(Data-Driven Approach)
数据驱动方法是指收集大量的数据来对模型进行训练,接着在训练好的模型进行预测,数据驱动类的算法是比深度学习更广义的一种理念。数据驱动方法的步骤如下:
- 收集图像和标签数据;
- 使用机器学习方法来训练分类器;
- 在新的图像集合上评估训练好的分类器。
S2.2K-最近邻算法
最近邻算法
算法思想是对于一个输入图像,与训练集中的每张图像进行比较,选择最相近的图像的类别作为输入图像的标签。使用距离指标来比较图像之间的相似度。使用L1距离作为距离指标。训练时,模型接收所有的训练集。测试时,输入图像与训练集中的每个图像进行比较。因此,当训练集的样本个数为N时,该算法的训练复杂度为O(1),测试复杂度为O(n)。即是说,训练时间很短,但测试时间很长,这很不好,一般是希望训练时间长,测试过程很快。但最近邻算法所生成的边界存在一些问题。
K-近邻算法
算法思想是依据距离度量,K近邻算法找到最近的K个点。然后在这些相邻点中进行投票。即K-近邻算法并不选择最近图像的标签,而是由K个最近图像的标签共同决定,一般是进行多数投票。K-近邻在测试时,需要训练数据来进行计算。K是需要设置的参数,K越大,决策边界的边缘越平滑,从而得到更好的结果。
S2.3线性分类
参数模型
参数模型表达式为:y=f(x;W)。x是一个输入数据样本,W是模型权重,y是输出的属于某一类别的概率。在深度学习中,整个的描述都是关于函数f的正确结构。f是关于x和W的组合,可以有各种各样的形式。相乘是最简单的一种组合方式,这就是线性分类器。
线性分类器
线性分类器是参数模型中最简单的:y=f(x;W)=Wx+b。b是偏置值。b不与训练数据交互,是独立于数据的偏好值,仅仅针对一类的偏好值。假设是10类,则y和b是一个10维的向量。当数据不平衡时,比如某一类别样本数量多,则这一类别对应的偏置就比其他类的偏置更高一点。和K-近邻对比,线性分类器在训练时,使用所有的训练集信息来得到W和b,但测试时,不需要训练集的信息。这使得模型更有效率,甚至运行在像手机这样的小设备中。W可看作是10个类的模板组合,将每个模板还原为图像,即将模板可视化为图像,这样可展示一个线性分类器是如何理解训练数据的。可视化W之后,发现线性分类器存在一个问题:每个类只学习一个模板。如果某个类出现了某种类型的变体,那么它将尝试求取所有不同变体的平均值。神经网络以及更复杂的模型由于不存在只学习一个模板的限制,因此分类的性能很好。另外,线性分类器是在线性决策边界上尝试画一个直线来划分一个类别和其他剩余的类别。在训练时,线条会随机开始,然后快速变化,试图将数据正确分开。在高维空间(高维空间对应着图像能取到的像素密度值),奇数和偶数的划分问题以及数据时多模态数据时,线性分类器无法进行数据划分的。