机器学习实战:模型构建与应用
上QQ阅读APP看书,第一时间看更新

2.1 识别服装

作为第一个示例,让我们考虑一下识别图像中的服装所需的工作。例如,考虑图2-1中的衣物。

图2-1:服装示例

你可以识别图中许多不同的服装。你了解什么是衬衫、外套或者连衣裙,但是怎么向从来没见过服装的人解释呢?那么鞋子呢?图2-1中有两只鞋,你将如何向别人介绍它们呢?这就是另一个我们在第1章中谈到的基于规则的编程可能会失败的地方。有时候用规则描述某些东西是不可行的。

计算机视觉当然也不例外。但是想一下,你是如何学会识别所有这些服装的—通过查看许多不同的例子,并获得如何使用它们的相关经验。我们可以用计算机做同样的事情吗?答案是肯定的,但是有局限性。让我们看一下第一个示例:用著名的Fashion MNIST数据集来教计算机识别服装。

数据:Fashion MNIST

学习和评测算法的基础数据集之一是由Yann LeCun、Corinna Cortes和Christopher Burges提出的Modified National Institute of Standards and Technology(MNIST)数据集。这个数据集由70 000张0~9的手写数字图像组成。这些图像是28×28像素的灰度图。

Fashion MNIST(https://oreil.ly/31Nzu)旨在用相同的图像数量、相同的图像尺寸以及相同的类别数来替代MNIST数据集。因此,Fashion MNIST包含10种不同类型的服装,而不是数字0~9的图像。你可以从图2-2中看到一个数据集内容的例子。这里每三行代表同一种服装类别。

图2-2:探索Fashion MNIST数据集

它的服装种类繁多,包括衬衫、裤子、连衣裙和各种类型的鞋。你可能注意到它是单色的,所以每张照片都包含一些值介于0~255的像素。这使得数据集更易于管理。

你可以在图2-3看到数据集中一张图像的特写。

图2-3:Fashion MNIST数据集中一张图像的特写

像任何图像一样,这张图像是包含像素的矩形网格。如前所述,网格尺寸为28×28像素,而每个像素是一个0~255的值。现在让我们看一下如何利用之前看到的函数来使用这些像素值。