机器学习实践课程:图像分类

了解 Google 如何开发用于在 Google 照片中为搜索提供支持的最先进的图像分类模型。您将学习卷积神经网络速成课程,然后构建您自己的图像分类器,用于区分猫的照片和狗的照片。

前提条件

  • 学习过机器学习基本原理方面的机器学习速成课程或具有同等水平的经验

  • 熟练掌握编程基础知识,并且具有一些 Python 编码经验

简介

2013 年 5 月,Google 发布了个人照片搜索功能,使用户能够基于图像中显示的对象检索其照片库中的照片。

显示暹罗猫搜索结果的 Google 照片屏幕截图图 1. 在 Google 照片中搜索暹罗猫后搜出了暹罗猫的照片!

之后,该功能于 2015 年被引入 Google 照片,被广泛认为彻底改变了行业局面,证明了计算机视觉软件对图像进行分类的效果能够达到人类水准。它带来的价值体现在以下几个方面:

  • 用户无需再使用“海滩”等标签标记照片,以对图像内容进行分类;这样的话,在管理数百或数千张图像时,就不必再执行这项极为繁琐的手动操作了。
  • 用户可以使用搜索字词查找包含他们可能从未标记过的对象的照片,从而以全新方式探索照片集。例如,用户可以通过搜索“棕榈树”查看背景中含有棕榈树的所有度假照片。
  • 软件有可能“看出”最终用户自身发现不了的分类差异(例如,区分暹罗猫和阿比西尼亚猫),有效地丰富了用户在相应领域的知识。

图像分类的工作原理

图像分类是一种监督式学习问题:定义一组目标类别(要在图像中识别的对象),然后使用有标签样本照片训练模型进行识别。早期的计算机视觉模型依赖原始像素数据作为模型的输入。不过,如图 2 所示,仅原始像素数据并不能提供足够稳定的表示法,无法囊括图像中捕获的对象的众多变化形式。对象的位置、对象的背景、环境光、相机角度和相机对焦都会导致原始像素数据出现波动;此类差异非常明显,无法通过计算像素 RGB 值的加权平均值修正。

不同背景和光线条件下处于各种位置的猫的照片拼贴,以及根据这些图像计算的平均像素数据图 2. 左图:照片可以捕捉到猫在不同背景和光线下的各种姿势。右图:通过计算像素数据的平均值来衡量这种多样性,不会得出任何有意义的信息。

为了更灵活地为对象建模,经典计算机视觉模型添加了从像素数据派生的新特征,例如颜色直方图、纹理和形状。这种方法的不足之处在于:由于有太多输入需要调整,特征工程会成为一项的负担。对于猫分类器而言,哪些颜色相关性最高?形状的定义应有多灵活?由于需要对各种特征进行精确调整,因此构建强大的模型并非易事,并且准确率会降低。