图片分类

学习动机.

在这一节中我们会引入图片分类为题。这也是从一个合适的集合中分配给图片一个标记的任务。这是计算机视觉的核心问题之一。鉴于它的简单性,有一大批实用应用。更多的是,我们可以在以后的章节中看到,一些看似分离的计算机视觉任务(例如类别监测,分割)都可以归为图片分类。

举例

例如,如下的图片模型可以提取一个图片并给他四种label的可能性(猫,狗,帽子,杯子)。在图片中可以看到,一个图片在计算机中被识别为一个大型的三位数组。例如。猫有248像素宽,400像素高,并且有三种颜色(红,绿,蓝或者有short类型RGB)。因此,图片包含248*400*3个数字,一共297600个数字。每个数字都是一个从0到255整型数据。我们的任务就是把这上百万的数据或称一个标记,例如“猫”。

例如:

python图像分类代码 python分类图片_python


这个任务在图片分类中就是预测一个单独的标记(或者一个标记集合的分布概率来确保我们的置信度)给图片。图片是一个三位的整型数组。每个整型数据都是从0到255,大小是宽*高*3。这三个表达了三种颜色,红绿蓝。

挑战

由于这个识别一个视觉概念的任务(例如猫)对于人们来说是没有那么重要。所以,考虑这个方面在计算机视觉算法中是值得的。当我们展示了一系列挑战的时候,记住图片的3维初略表现形式都由很明亮的值:

  • 角度变量Viewpoint variation。一个单独的类型实例可以被摄像机从多种角度展示
  • 规模变量Scale variation。可视化类型经常表现出规模的变化(规模在真实世界中,不仅仅在于图片中的内容)。
  • 变型Deformation。有许多有用的实物并没有网格式的结构并且可能变成其他极端形式。
  • 遮挡Occlusion。 物体有可能被堵住。有时候只展现一部分。
  • 光照条件Illumination conditions。光照的影响在像素级别非常巨大。
  • 背景影响Background clutter。 实物可能混入到环境中去,让我们很难发现和识别。
  • 类内变化Intra-class variation。 类别经常是非常广义的,例如椅子。这里有很多不同类型的物体,每个都有他们自己的展示。
    一个好的图片分类模型必须是对各种变量交叉是不变的,同时保留对类内保持敏感度。

* 数据驱动方法*

我们怎么样才可以设计一个算法来区分图片到不同的类别呢?不像许多算法例如排序,写一个识别猫的算法是非常不明显的。因此,不同于直接试图明确图片在其中一个类别中,我们实用的方法是取那么不像不是这个类别的:我们准备提供给计算机许多类别的实例并且开发学习算法来观察这些实例并且学习每个类别的可视化展示。这个方法被叫做数据驱动方法。由于它依赖于大量的标记好的图片数据。这里有一个实例:

python图像分类代码 python分类图片_python_02


一个训练分辨四种类型的例子。实际上我们应该每种类型有成千上万种图片。

图片分类处理器。

我们看到图片分类的任务就是把一个展示图片的像素数组并且分配一个标记给他。我们完善的处理器可以被描述为如下算法:

  • 输入:我们的输入包含N个图片,每个都标记有K中不同类别。我们可以把数据。我们把这种数据叫做训练集。
  • 学习 : 我们的任务就是用训练集取学习每一个类到底是什么样的。我们把这种方法叫做训练一个分类器或者学习一个模型。
  • 评估 : 最终,我们会通过他们预测新的图片的标记的准确性评估分类器的质量。我们也将对比这些图片的真实标签和预测标签。我们也希望预测是可以赶上真实标签的(我们叫地面实况)。