KNN和线性分类器
图像分类的困难和挑战:对于人来说,识别出一个像“猫”一样视觉概念是简单至极的,然而从计算机视觉算法的角度来看就值得深思了。我们在下面列举了计算机视觉算法在图像识别方面遇到的一些困难,要记住图像是以3维数组来表示的,数组中的元素是亮度值。
- 视角变化(Viewpoint variation):同一个物体,摄像机可以从多个角度来展现。
- 大小变化(Scale variation):物体可视的大小通常是会变化的(不仅是在图片中,在真实世界中大小也是变化的)。
- 形变(Deformation):很多东西的形状并非一成不变,会有很大变化。
- 遮挡(Occlusion):目标物体可能被挡住。有时候只有物体的一小部分(可以小到几个像素)是可见的。
- 光照条件(Illumination conditions):在像素层面上,光照的影响非常大。
- 背景干扰(Background clutter):物体可能混入背景之中,使之难以被辨认。
- 类内差异(Intra-class variation):一类物体的个体之间的外形差异很大,比如椅子。这一类物体有许多不同的对象,每个都有自己的外形。
K临近算法:计算样本和训练数据的差值,但是训练数据越多,计算的时间就越长,实际上这是个线性增长的过程。
FLANN实例库
曼哈顿距离:差值的绝对值
欧氏距离\L2
KNN:寻找最近的K个图片,通过投票来选择最终的标签结果。
从上图中可以看出,对于不同的k的设定整个分类图的边缘有明显的不同,k越大边缘越平滑。
两种超参数选择:
1、用什么距离(曼哈顿还是欧氏距离)
2、K选择多少
这和具体的问题有关,对大量的数据进行试验
将数据的1/5作为验证集,4/5作为训练集
交叉验证法:将数据分为5折,一折作为验证,四折作为训练,轮流循环,找到最优的分布。得到超参数
KNN分类器在图像分类中不适用。(这是应为即使对于图像很小的平移计算的距离差距都会比较大,对于大致相似的图但是细节率有不同,计算的距离 又特别小,不利于分类)
非参数优化方法:KNN
下面介绍参数优化方法:线性分类器
构造一个函数,输入图片,输出分类,w为函数的参数。
线性分类器:输入向量已知
W权重矩阵每一行都可以看作是一个分类器(对应不同种类)
W具体的内容是什么呢?
事实上一个线性的分类器的作用如下图:
但是如果对于样本比较难分的情况呢?
除了cat的分类正确其他的分类得分都不正确,这说明这个分类器的效果并不是很好。
那我们如何去衡量学习到的分类器与理想分离器的差距呢?
在这里引入了loss函数,loss越大,分类器效果越差,loss越小分类器效果越好。