1、分类问题
已有固定分类标签,对于输入的图像,预测其所属的分类标签。
2、问题难点
图像视角变化(viewpoint variation)
图像大小变化(scale variation)
图像形变(deformation)
图像遮挡(occlusion)
图像光照条件(illumination conditions)
图像背景干扰(background clutter)
图像类内差异(intra-class variation)
3、数据驱动方法
给计算机足够的数据,使其实现学习算法,学到每个类的外形,即数据驱动方法。
首先,要收集已有分类标注的图片数据作为训练集。
4、图像分类流程
a、输入:数据及标签
b、学习:训练分类器或者学习模型
c、评价:使用分类器预测未知图像的标签,并以此评价分类器的性能。
5、Nearest Neighbor分类器
a、Nearest Neighbor分类器
找出与预测图片最接近的图片的标签。
最简单的方法:逐个像素比较,将差值累加。即对表示两张图片的向量计算其L1距离:
图片越接近,则距离越小,反之越大。
L2距离:即计算两个图片向量的欧式距离:
求平方根函数是一个单调函数,对不同距离的绝对值求平方虽然改变了数值大小,但不改变距离的大小判断。L2比L1更加不能容忍向量之间的差异,也就是说,相对于1个巨大的差异,L2距离更倾向于接受多个中等程度的差异。
b、k-Nearest Neighbor分类器
找出与预测图片最相似的k个图片的标签,然后针对预测图片进行投票,最后把票数最高的标签作为预测图片的标签。当k=1时,即为Nearest Neighbor分类器。更高的k值可以让分类效果更加平滑,使得分类器对于异常值更加有抵抗力。
k值的选取过程,即为超参数的调优过程。从训练集中选取一部分验证集,作为假测试集进行调优,最后在测试集上跑一次并报告结果。测试集只能使用一次,不能使用测试集进行调优,否则会出现测试集上的过拟合。最后使用测试集进行测试,可以很好地近似度量分类器的泛化性能。
当训练集较小的时候,可以使用交叉验证,将训练集平均分为n份,循环进行训练及验证,最后取平均值作为验证结果。
c、优劣
优点:易于理解,实现简单,不需要训练过程,只是存储训练数据。
缺点:测试花费时间巨大,每个测试图片需要跟所有训练图片逐一比较。而且,基于像素的相似性和基于感官的相似性有很大不同,分类结果极易受到图片背景而非图片语义主题内容的影响。