使用 TensorFlow 对艺术品进行分类  

从大都会艺术博物馆提取数据和标签来训练图像分类系统

Last updated | By Ton Ngo, Winnie Tsang

Description

了解如何构建您自己的数据集,并训练模型进行图像分类。这些模型在 TensorFlow 中实现,并在 Kubernetes 集群上运行。演示代码会从大都会艺术博物馆网站和 Google BigQuery 提取数据和标签。IBM Cloud Container Service 提供 Kubernetes 集群。修改代码以构建不同的图像数据集,并从公共模型集合(例如,Inception、VGG、ResNet、AlexNet 和 MobileNet)中进行选择。

概览

人类具备处理可视信息的神奇能力。只需看一眼照片,我们就可以了解场景中的内容,并采取相应的行动。然而,要将这种能力赋予计算机却充满挑战,但其潜在用途又非常广泛 – 从标记您的 Facebook 好友中的照片到通过皮肤状况照片来识别癌症,皆可广泛应用这种技术。图像识别多年来一直是研究和开发的一个活跃领域。深度学习领域最近的发展为图像识别和分类带来了显著的进步,当前有许多可用的神经网络模型,并且具有卓越的性能。如果您的应用程序需要识别图像特征,您可以利用其中一种模型来训练和部署神经网络,为您的应用程序服务。

为解释这一流程的实际运用,在此 IBM Code 开发人员模式中,我们将使用深度学习来训练图像分类模型。具体地说,我们将使用来自大都会艺术博物馆的艺术藏品的数据和来自 Google BigQuery 的元数据。我们将使用 TensorFlow 中实现的 Inception 模型,并且将在 Kubernetes 集群上运行训练过程。我们将保存训练的模型,稍后再加载来进行推理。为使用此模型,我们提供油画图片作为输入,模型将返回可能的文化信息,例如,“Italian Florentine”艺术。您可以调整数据,选择其他某些属性来对艺术藏品进行分类,例如,作者、时期等。您可以选择完全不同的数据源或者不同的类别进行分类,以及不同的方式来创建标签。您还可以选择其他模型,例如,VGG、ResNet、AlexNet、MobileNet 等。

根据可用计算资源,您可以选择要用于训练的图像数量、要使用的类别数量等。为展示整个工作流程,我们将选择少量图像和少量类别,以便训练在合理的时间段内完成。对于较大的数据集,训练可能需要耗时数日甚至数周时间才能完成。

完成此 Code Pattern 后,您将掌握如何:

  • 在 TensorFlow 中收集和处理用于深度学习的数据
  • 在 Kubernetes 集群上配置、部署以及运行 TensorFlow
  • 训练高级图像分类神经网络
  • 使用 TensorBoard 来直观显示并理解训练流程

  1. 检查 Google BigQuery 数据库中可供大都会艺术博物馆的艺术藏品使用的属性。
  2. 2.使用所选属性创建带标签的数据集。
  3. 从一组可用公共模型中选择图像分类模型,并部署至 IBM Cloud。
  4. 在 Kubernetes 上运行训练过程,如果 GPU 可用,可选择使用。
  5. 保存训练的模型和日志。
  6. 通过 TensorBoard 来直观显示训练情况。
  7. 在 Kubernetes 中加载训练模型,对新艺术画作运行推理以查看分类。

相关链接

致谢:

感谢郭剑南对此 Code Pattern 的翻译内容的审核,并提供了宝贵的反馈意见。

欢迎使用 Bokeh

Bokeh 是一个 Python 交互式可视化库。它在非常大的数据集或流数据集上提供了具有高性能交互性的新颖图形。

TensorFlow 入门

本教程从框架的好处、支持的平台、安装考虑因素,以及支持的语言和绑定等方面概述了 TensorFlow 系统。

TensorFlow 中文社区

集新手入门、进阶指南、API 中文手册等多模块的 TensorFlow 中文社区。