主要关于lecture 2,只记录贫僧觉得有用的东西,所以课程里一些介绍性的内容会被忽略掉。
图片分类
图片分类就是输入一张图片,然后将这张图片归为确定的类别中的一类。大部分看起来不像是图片分类的机器视觉任务其实可以通过图片分类来完成。
图片分类的例子:
对上面这张 248×400×3 248 × 400 × 3 的矩阵进行分类,将这张图片归类为{猫, 狗, 帽子, 杯子}中的某个类别。
图像识别的难题:
- 视角变化(Viewpoint variation)
- 大小变化(Scale variation)
- 变形(Deformation)
- 对象只有一小部分出现在图片中(Occlusion)
- 光照问题(Illumination conditions)
- 环境背景干扰(Background clutter)
- 同类别的不同形态(Intra-class variation)
因为直接通过编程方式来识别图像太麻烦了,所以要通过数据驱动的方式来让程序自己学会怎么识别。
数据驱动方式:
- 收集一大堆带有标签的图片(标签是人工标注的,所以给这种方法带来了一定的局限性)(就像下图那样的图片集)
- 用机器学习算法训练分类器
- 在新图片上评估分类器的性能
NN(最近邻)分类器
最简单的:NN(Nearest Neighbor),训练出来的分类器会直接记忆每张图片,然后在预测时挑最相似的图片(但是性能不怎么样,分类结果也不是很准确)。
图像分类用到的数据集例子:CIFAR-10。这个数据集含有60000张图片,每张图片是 32×32 32 × 32 像素的。并且每张图片属于10个类别中的一种(已经被附上标签了),其中50000张用来训练,10000张用来测试。
CIFAR-10中的样图,左边是训练集图片,右边是测试集图片:
L1距离: d1(I1,I2)=