图像分类是计算机视觉的核心任务,计算机视觉领域中很多问题(比如 目标检测 和 语义分割),都可以关联到图像分类问题。
0x00 👌 一句话主题描述
图像分类是计算机视觉的核心任务,计算机视觉领域中很多问题(比如 目标检测 和 语义分割),都可以关联到图像分类问题。图像分类 问题,就是已有固定的分类标签集合,然后对于输入的图像,从分类标签集合中找出一个分类标签,最后把分类标签分配给该输入图像;在图像分类领域,机器学习中数据驱动的模型算法,包括简单的 KNN 模型和 线性分类模型
0x01 😎 调研
1.1 图像分类的挑战
图像分类算法要足够健壮(鲁棒,robust),我们希望它能够适应下述变化及组合:
- 视角变化(Viewpoint variation):同一个物体,摄像机可以从多个角度来展现。
- 大小变化(Scale variation):物体可视的大小通常是会变化的(不仅是在图片中,在真实世界中大小也是变化的)。
- 形变(Deformation):很多东西的形状并非一成不变,会有很大变化。
- 遮挡(Occlusion):目标物体可能被挡住。有时候只有物体的一小部分(可以小到几个像素)是可见的。
- 光照条件(Illumination conditions):在像素层面上,光照的影响非常大。
- 背景干扰(Background clutter):物体可能混入背景之中,使之难以被辨认。
- 类内差异(Intra-class variation):一类物体的个体之间的外形差异很大,比如椅子。这一类物体有许多不同的对象,每个都有自己的外形。
1.2 数据驱动的方式
一种实现方式是「硬编码」:先获取猫图像的边缘得到一些线条,然后定义规则比如三条线交叉是耳朵之类。
我们会采用数据驱动算法:不具体写出识别每个物体对应的规则,而是针对每一类物体,找到大量样例图片,灌给计算机进行机器学习,归纳模式规律,生成一个分类器模型,总结出区分不同类物体的核心知识要素,然后用训练好的模型,识别新的图像。
数据驱动算法过程如下:
- 输入:输入是包含 个图像的集合,每个图像的标签是 种分类标签中的一种。这个集合称为训练集。
- 学习:这一步的任务是使用训练集来学习每个类的模式规律。一般该步骤叫做分类器训练或者模型学习。
- 评价:让分类器对它未曾见过的图像进行分类,把分类器预测的标签和图像真正的分类标签 (基本事实) 对比,并以此来评价分类器的质量。
1.3 KNN:最邻近算法
KNN 的思想是:找最相似的 个图片的标签,** 中数量最多的标签作为对测试图片的预测**。
1.4 线性分类:评分函数
参数模型往往会在训练完成后得到一组参数,之后就可以完全扔掉训练数据,预测的时候只需和这组参数做某种运算,即可根据运算结果做出判断。线性分类器是参数模型里最简单的一种,但却是神经网络里很重要的基础模块。
线性分类的方法由两部分组成:
① 评分函数(score function)
- 它是原始图像数据到类别分值的映射。
② 损失函数(loss function)
- 它用来量化评分函数计算的分数与真实标签之间的一致性。该方法可转化为一个最优化问题,在最优化过程中,通过更新评分函数的参数来最小化损失函数值。
1.4.1 理解线性分类器
1) 理解一:W 是所有分类器的组合
参数矩阵 相当于是三个分类器的组合,** 的每一行都是一个分类器**
2) 理解二:将线性分类器看做模板匹配
把权重 的每一行看作一个分类的模板,一张图像对应不同分类的得分,是通过使用内积(也叫点积)来比较图像和模板,然后找到和哪个模板最相似。
3) 理解三:将图像看做高维空间的点
** 的每一行都是一个分类类别的分类器**。对于这些数字的几何解释是:
- **如果改变 一行的数字取值,会看见分类器在空间中对应的直线开始向着不同方向旋转。而偏置项 **,则允许分类器对应的直线平移。
- 需要注意的是,**如果没有偏置项,无论权重如何,在 时分类分值始终为 **。这样所有分类器的线都不得不穿过原点。
1.5 偏置项和权重合并
实际我们有权重参数 和偏置项参数 两个参数,分开处理比较冗余,常用的优化方法是把两个参数放到同一个矩阵中,同时列向量 就要增加一个维度,这个维度的数值是常量 ,这就是默认的偏置项维度。
如下图所示,新的公式就简化成如下形式:
1.6 图像数据预处理
在上面的例子中,所有图像都是使用的原始像素值()。在机器学习中,我们经常会对输入的特征做归一化(normalization)处理,对应到图像分类的例子中,图像上的每个像素可以看做一个特征。
在实践中,我们会有对每个特征减去平均值来中心化数据这样一个步骤。
在这些图片的例子中,该步骤是根据训练集中所有的图像计算出一个平均图像值,然后每个图像都减去这个平均值,这样图像的像素值就大约分布在 之间了。
后续可以操作的步骤包括归一化,即让所有数值分布的区间变为 。
0x02 🤔 整理和总结
- 图像分类中的困难与挑战
- 数据驱动方法、最邻近算法、 L1 和 L2 距离
- KNN 分类器、超参数调优、KNN 的优缺点与实际应用
- 线性分类的概念、评分函数的理解、参数合并、数据预处理、线性分类器局限性