为什么让机器学会图像识别?
图像识别是开发和测试机器学习的一项重要任务,因为视觉可能是最重要的一项感知能力。虽然对于人类来说,它是与生俱来的。但它是怎么实现的?大脑是怎样将视网膜上的图像转化成我们对周围环境的心智模式的?我想没人能对此一清二楚。关键是,对我们来说这看起来如此简单——我们不需要有意识地去做这件事,而对于计算机来说却困难重重(事实上,对我们来说也并不是看上去那么简单。只是我们并没有意识到进行了多少工作。有超过一半的大脑区域直接或间接参与了视觉活动)。
在我们甚至都不知道自己怎么看到东西的情况下,怎么让计算机去做到这样的事情呢?这就是机器学习要研究的事情。我们采取的方法是让计算机自己去完成这样的过程,而不是手把手地一步步教会计算机如何解释图像并翻译成计算机程序。我们给计算机提供总体结构,让计算机从经验中学习,就像我们人类做的那样。
我们将使用标准的CIFAR-10数据集。CIFAR-10包含了60000幅图片。它有10个不同的分类,每类包含6000幅图片。每幅图片的规格是32x32像素。这么小尺寸的图片对我们人类来说有时很难进行正确的分类,但它却简化了计算机模型的任务,并降低了分析图片的计算负载。
我们将图片转化为一连串的数字输送给计算模型。每个像素由代表红色,绿色和蓝色的三个浮点数来表示。其结果就是32x32x3=3072个值。
除了CIFAR-10,还有很多其他的图像数据集可以用于计算机视觉的研究。之所以使用标准数据集,有两个目的:
第一,要收集这么多的图片是一项巨大的工作。你需要有大量的图片资源,并根据需要对他们进行分别标签。
第二,使用相同的数据集,可以让我们有目的地比较不同方法的优劣。
监督学习
我们怎么使用图像数据集让计算机自己学习呢?即使计算机自己能够学习,我们也需要告诉它学习什么和怎样学习。所以,我们需要通过制定一个大致的流程让计算机能够对图像进行评估。
我们定义一个通用的数学模型,将输入图像转换为输出标签。这个模型的实际输出不仅仅依赖于图像本身,还依赖模型内建的参数。这些参数并不是由我们提供,而是由计算机通过学习获得。
这样一来,这个过程可以被理解为一个优化问题。我们初始定义一个模型并提供初始的参数值。然后再向模型输入图像数据集和已知的正确标签。这就是训练的过程。在这个阶段模型重复校验,训练数据,持续调整参数值。目标是找到合适的参数使模型输出尽可能多的正确结果。这种同时使用输入数据和正确结果的训练方法叫做监督学习。还有一种叫做非监督学习,这种学习中只使用了输入数据而没有标签.
TensorFlow
TensorFlow是机器学习的开源软件库,它由Google在2015年发布并很快成为全世界的研究者和学习者中最流行的机器学习库之一。它在图像分类模型中承担重要作用。