图像分类的难点
- 视角变化
- 光照条件
- 形变
- 遮挡
- 背景干扰
- 类内差异
由于几乎不存在硬编码算法来直接识别图片内容。所以常常采用数据驱动的方式来解决问题。通过收集数据集和标签,利用机器学习的方式来训练一个分类器,利用训练所得的分类器来分类图片。
最近邻分类器
最近邻的思想非常朴素,就是拿测试集和训练集中的每幅图像进行比较,找到距离最近的,测试数据就是哪幅图像所对应的那个类。由此又衍生出找最近的k幅图像的k-NN分类器。很容易发现,这个分类的效果的好坏和如何定义距离和k的选取密切相关。像这些在设计分类器就必须定好的东西,就被成为超参数。
超参数的选取直接关系着算法效果的好坏,对超参数的调优是十分关键的。直接选用测试集对超参数调优,看似不错,实则是不可取的。因为这会造成算法在实际运用时的效果远远小于测试的,这种情况被称为对测试集的过拟合。超参数的选取要注意泛化性。
测试数据集只使用一次,即在训练完成后评价最终的模型时使用。
通常在训练集中取出一部分数据用来调优,也就是所谓的验证集。
在数据集比较小的时候,也可以采用交叉验证。所谓交叉验证就是将训练集分为几份,让它们轮流充当验证集,剩下的作为训练集,对最后的结果进行平均。当然这样的缺点是时间的耗费大大增加了。
最近邻分类有着明显的缺点:
- 测试过程要耗费大量的时间
- 在高维上表现不尽如人意,所以一般很少应用于图像领域
线性分类器
$ f(x, W) = Wx + b $
其中$W$为权重,$b$为偏差向量
将数据变为一个一维列向量,通过权重和偏差,得到各个类的评估得分,以此完成分类。