您的位置:首页 > 其它

CS231n课程图像分类学习笔记

2016-05-30 14:46 363 查看
教程目的:介绍图像分类方法和数据驱动方法

内容列表:

图像分类、数据驱动方法和流程

Nearest Neighbor分类器

验证集、交叉验证集和超参数调参

Nearest Neighbor的优劣

小结:应用kNN实践

图像分类、数据驱动方法和流程

图像分类

目标:所谓图像分类问题,就是已有固定的分类标签集合,然后对于输入的图像,从分类标签集合中找出一个分类标签,最后把分类标签分配给该输入图像。计算机视觉领域中很多看似不同的问题(比如物体检测和分割),都可以被归结为图像分类问题。需要注意的是,对于计算机来说,图像是一个由数字组成的巨大的3维数组。在这个例子中,猫的图像大小是宽248像素,高400像素,有3个颜色通道,分别是红、绿和蓝(简称RGB)。每个数字都是在范围0-255之间的整型,其中0表示全黑,255表示全白。我们的任务就是把这些上百万的数字变成一个简单的标签,比如“猫”。

困难和挑战:

视角变化(Viewpoint variation):同一个物体,摄像机可以从多个角度来展现。

大小变化(Scale variation):物体可视的大小通常是会变化的(不仅是在图片中,在真实世界中大小也是变化的)。

形变(Deformation):很多东西的形状并非一成不变,会有很大变化。

遮挡(Occlusion):目标物体可能被挡住。有时候只有物体的一小部分(可以小到几个像素)是可见的。

光照条件(Illumination conditions):在像素层面上,光照的影响非常大。

背景干扰(Background clutter):物体可能混入背景之中,使之难以被辨认。

类内差异(Intra-class variation):一类物体的个体之间的外形差异很大,比如椅子。这一类物体有许多不同的对象,每个都有自己的外形。

面对以上所有变化及其组合,好的图像分类模型能够在维持分类结论稳定的同时,保持对类间差异足够敏感。

数据驱动方法和流程

如何写一个图像分类的算法呢?这和写个排序算法可是大不一样。怎么写一个从图像中认出猫的算法?搞不清楚。因此,与其在代码中直接写明各类物体到底看起来是什么样的,倒不如说我们采取的方法和教小孩儿看图识物类似:给计算机很多数据,然后实现学习算法,让计算机学习到每个类的外形。这种方法,就是数据驱动方法。该方法的第一步就是收集已经做好分类标注的图片来作为训练集

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

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

* 学习:这一步的任务是使用训练集来学习每个类到底长什么样。一般该步骤叫做训练分类器或者学习一个模型。

* 评价:让分类器来预测它未曾见过的图像的分类标签,并以此来评价分类器的质量。我们会把分类器预测的标签和图像真正的分类标签对比。毫无疑问,分类器预测的分类标签和图像真正的分类标签如果一致,那就是好事,这样的情况越多越好。

Nearest Neighbor分类器

图像分类数据集:CIFAR-10。这个数据集包含了60000张32X32的小图像。每张图像都有10种分类标签中的一种。这60000张图像被分为包含50000张图像的训练集和包含10000张图像的测试集。

就是将两张图片先转化为两个向量I_1和I_2,然后计算他们的L1距离:

\displaystyle d_1(I_1,I_2)=\sum_p|I^p_1-I^p_2|
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: