1. 图像分类问题简介

图像分类问题指的是:已有固定的分类标签集合,然后对于输入的图像,从分类标签集合中找出一个分类标签,然后把分类标签分配给该输入图像。图像分类问题是计算机视觉的核心问题之一,并有着各种实际应用。之后的教学视频中中,还提及计算机视觉领域中很多看似不同的问题(比如物体检测和分割),都可被归结为图像分类问题。

值得注意的是,在计算机中处理图像,要将图像视为由数字组成的3维数组。例如ppt中所示图片如下,此时该图像为248像素*400像素,由3个颜色通道RGB组成。因此,在处理时,将该图像转换为长为248X400X3=297600维的数组,数组中每个数字的取值范围是0-255之间的整数。

计算机处理图像时有如下的一些困难:

视角变化造成的图像变化;大小变化;物体形变;被遮挡,只有部分目标物体;光照条件不同;目标物体和背景过于相近;类内差异;

因此,图像分类模型需要维持分类结论稳定,同时要保持对类间差异足够敏感。

由于算法、硬件和数据的发展情况,目前的方法更多基于数据驱动方法。即给计算机很多数据,然后实现学习算法,让计算机学习到每个类的外形。通常使用的图像分类数据集为CIFAR-10,该数据集中有50000张图像的训练集和包含10000张图像的测试集,共10个标签。

图像分类就是输入一个元素为像素值的数组,然后给它分配一个分类标签。图像分类流程如下:

输入:输入是包含N个图像的集合,每个图像的标签是K种分类标签中的一种。这个集合称为训练集。

学习:使用训练集来学习每个类。训练分类器或者学习一个模型。

评价:让分类器预测未曾见过的图像的分类标签,并以此来评价分类器的质量。

2. Nearest Neighbor分类器

该方法就是比较要测量的目标图像和已有训练图像之间的差距,差值最小、最接近的已有训练图像的标签就是目标图像的标签。最简洁的方法就是逐个像素进行比较,然后将差异值进行相加。如前所述,将两张图像转化为两个向量I1、I2,并计算他们的L1距离(此处求和针对所有像素):

一个完整的图像分类的例子_一个完整的图像分类的例子


如两张图像一模一样,则L1距离为0,但是如果两张图像差别很大,则L1距离将会很大。

计算向量间距离有很多方法,另一个常用的方法是L2距离,即计算两个向量间的欧式距离。L2距离的公式如下:

一个完整的图像分类的例子_一个完整的图像分类的例子_02


在面对两个向量之间的差异时,L2比L1更加不能容忍这些差异。也就是说,相对于1个巨大的差异,L2距离更倾向于接受多个中等程度的差异。

3. k-Nearest Neighbor分类器

使用k-Nearest Neighbor分类器能改善效果。它的思想很简单:与其只找最相近的那1个图片的标签,我们找最相似的k个图片的标签,然后让他们针对测试图片进行投票,最后把票数最高的标签作为对测试图片的预测。所以当k=1的时候,k-Nearest Neighbor分类器就是Nearest Neighbor分类器。从直观感受上就可以看到,更高的k值可以让分类的效果更平滑,使得分类器对于异常值更有抵抗力。

一个完整的图像分类的例子_一个完整的图像分类的例子_03


上面例子中需要对2维点进行分类,分为3类。不同颜色区域代表使用L2距离的分类器的决策边界。白色的区域是分类模糊的例子(即图像与两个以上的分类标签绑定)。可以看到,NN分类器中,异常的数据点(比如:在蓝色区域中的绿点)制造出一个不正确预测的区域。5-NN分类器中这些不规则都平滑了,使得它针对测试数据的泛化能力更好。(5-NN中也存在一些灰色区域,这些区域是因为近邻标签的最高票数相同导致的。)