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

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

前提条件

  • 机器学习速成课程 或具有机器学习基础知识的同等经验

  • 熟练掌握编程基础知识,并且具备一些使用 Python 编程的经验

简介

2013 年 5 月,Google 发布了搜索个人照片的功能,让用户能够根据图片中存在的对象在照片库中检索照片。

显示暹罗猫搜索结果的 Google 相册中的屏幕截图 图 1. 在 Google 相册中搜索暹罗猫后,就可以收到商品了!

此功能后来于 2015 年被纳入 Google 相册,被广泛认为彻底改变了行业局面,证明计算机视觉软件能够以符合人类标准的方式对图像进行分类,从而通过以下几种方式提升价值:

  • 用户不再需要使用“海滩”等标签标记照片来对图片内容进行分类,这样就可以消除在管理数百或数千张图片时可能非常繁琐的手动任务。
  • 用户可以使用搜索字词查找包含他们可能从未标记过的对象的照片,从而以全新方式探索照片集。例如,他们可以通过搜索“棕榈树”来显示背景中棕榈树的所有度假照片。
  • 软件可能“看到”最终用户自身无法感知的分类(例如区分暹罗猫和阿比西尼亚猫),从而有效地增强了用户的领域知识。

图片分类的工作原理

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

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

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