【经典算法必读】图片分类系列之(一): 你真的了解图片分类(Image Classification)吗?

4,781 阅读6分钟

欢迎关注我的个人微信公众号:小纸屑

图片分类是机器学习经典问题,也是深度学习声名鹊起之作。正是2012年AlexNet在图片分类竞赛ImageNet出乎寻常的性能,使得深度学习一夜爆红,方有今天人工智能的井喷之势。

由于深度学习在图片分类上极其成功,且代码简单,图片分类便成为深入学习入门学习任务。通常几行代码,就可以调起一个模型训练。由于太简单,导致大家对图片分类缺乏能够整体认识。

本文拟从问题定义、图片分类的粒度、常用数据集、评判标准和经典论文等角度,完整充分展现图片分类这个经典问题,让读者有个完整印象。

问题定义

图片分类的定义如下:

输入:一张图片

输出:图片类别

这里的图片类别是指图片内所包含物体的类别。

传统的图片分类中,一张图片只包含一个类别物体的一个或多个实例。多标签图片分类中,一张图片一般包含多个类别物体的一个或多个实例(如多标签猫狗图片分类,大部分照片不但包含猫,还同时包含狗)。

我们这里只讲传统的图片分类。以下是几个样例:

输入上述图片,正确的输出应该是猫(图片来自数据集ImageNet)

输入上述图片,正确的输出应该是类别9(图片来自数据集MNIST)

输入上图,正确的输出应该是飞机(图片来自数据集CIFAR10)

图片分类的粒度

粗粒度分类

粗粒度图片分类是指跨物种语义级别的分类,比较常见的包括如猫狗分类、ImageNet的1000个类别的分类、CIFAR10的10个类别的分类等。这样的图像分类,各个类别之间因为属于不同的物种或大类,往往具有较大的类间方差,具有较小的类内方差。

下面是cifar10 中的10个类别的示意图,这就是一个典型的例子。

细粒度分类

细粒度图像分类,相对于跨物种的图像分类,级别更低一些。它往往是同一个大类中的子类的分类,如不同鸟类的分类,不同狗类的分类,不同车型的分类等。

下面是以鸟的子类间分类为例,细粒度分类类间因为较为相似,所以类间方差小,而类内由于姿态、光纤等问题,类内方差大。

实例级分类

如果我们要区分不同的个体,而不仅仅是物种类或者子类,那就是一个识别问题,或者说是实例级别的图像分类,最典型的任务就是人脸识别。

常用数据集

上图是经典常用的粗粒度图片分类数据集。

MNIST

MNIST是手写体数据集,每一张图片是0-9个数字中的一个,图片分辨率28x28,所有图片均是灰度图,因此图片表示为tensor是28x28x1,训练集60000张照片,测试集10000张照片。 以下是16张MNIST中的样本。

Fashion-MNIST

Fashion-MNIST的提出是为了方便学者测试算法的有效性,因为MNIST数据集的特征过于简单,导致在MNIST表现好的算法,很难说是算法改进了,还是数据集过于简单。 Fashion-MNIST,除了类别换成了服装和鞋子等,其他与MNIST一模一样,同样分辨率28x28,同样灰度图,训练集同样60000,测试集同样10000。基本上在MNIST测试的算法,不用任何修改,就可以在Fashion-MNIST上测试和训练。 以下是30张Fashion-MNIST中的样本。

CIFAR-10

CIFAR-10数据集由10类32x32的彩色图片组成,一共包含60000张图片,每一类包含6000图片。其中50000张图片作为训练集,10000张图片作为测试集。

CIFAR-10数据集被划分成了5个训练的batch和1个测试的batch,每个batch均包含10000张图片。测试集batch的图片是从每个类别中随机挑选的1000张图片组成的,训练集batch以随机的顺序包含剩下的50000张图片。不过一些训练集batch可能出现包含某一类图片比其他类的图片数量多的情况。训练集batch包含来自每一类的5000张图片,一共50000张训练图片。

以下是数据集中的类,以及来自每个类的10个随机图像:

这些类完全相互排斥。汽车和卡车之间没有重叠。“汽车”包括轿车,SUV,这类东西。“卡车”只包括大卡车。都不包括皮卡车。

CIFAR-100

CIFAR-100数据集就像CIFAR-10,除了它有100个类,每个类包含600个图像。每类各有500个训练图像和100个测试图像。CIFAR-100中的100个类被分成20个超类。每个图像都带有一个“精细”标签(它所属的类)和一个“粗糙”标签(它所属的超类)

ImageNet

ImageNet数据集本身有约1500万张照片,2.2万个类。基于ImageNet的大规模计算机视觉挑战赛ISLVRC包含5个任务,图像分类(Image Classification)、目标定位(Image Localization)、目标检测(Object Detection)、视频目标检测(Video Object Detection)、场景分类。

由于其图像分类任务名声太盛,导致一般提到ImageNet,通常指的就是其图像分类子任务,这个子任务共有1000个类别,训练集有1,281,167张照片,验证机50,000张,测试集100,000张照片,每张图片大小不一,均为彩色图片。

性能评判标准

图片分类的评判标准比较简单。

top1准确率

对一个图片,取概率最大值作为预测。统计下预测正确的比率,即为top1准确率。

top5准确率

对一个图片,如果概率前五中包含正确答案,即认为正确。再统计预测正确的比率,即为top5准确率。

经典算法

图像分类任务是计算机视觉的基础任务,大量的图像分类经典算法,大幅度推动了计算机视觉的发展。下图是各个经典算法的时间轴,图中都给出了各个经典模型的提出时间点。

上图看起来有点乱,把相同系列的模型放在一起,重新整理如下图:

这里只列出经典算法,后面我会逐一讲解这些经典论文。另外,也建议各位每篇都亲自阅读(除了LeNet),非常经典。

总结

本文从问题定义、图片分类的粒度、常用数据集、评判标准和经典论文等多个角度完整展示了图片分类这个经典的计算机视觉任务。我相信,一个完整的认识,能让大家更好的开始学习深度学习。