跳至主要内容

Google Vision API(Python 版)新手指南

了解什么是 Vision API 以及它提供的全部功能。完成本教程后,您还将学习如何在 Python 代码中调用 Vision API。
· 10分钟 阅读

使用 AI 探索

自从 Google 发布专门用于执行计算机视觉相关任务的 Vision API 以来,已经过去了相当一段时间。计算机视觉关注的是计算机如何处理图像。对我们人类来说,从一张图片中获取有用信息很容易,但计算机是如何做到的呢?

举个例子,假设您向计算机提供了一张狗的图片,通过某个软件,计算机告诉您这是一张狗的图片。这正是计算机视觉发挥作用的地方。计算机视觉本身是一个完整的研究领域,而 Vision API 提供了许多实用工具,让您能够非常轻松地执行与计算机视觉相关的任务。最棒的是,即使开发者完全没有计算机视觉方面的经验,也可以通过阅读其文档来使用 Vision API。

本教程旨在向您介绍 Vision API,以及如何从 Python 代码中调用它。

注意:如果在开始本教程之前,您希望从 Python 和机器学习的角度更多了解 API,以下是一些非常优秀的资源:

什么是 Google 的 Vision API?更详细的介绍

Google 将其机器学习模型封装为一个 API,便于开发者使用他们的视觉技术。Vision API 可以快速将图像分类到数千个类别,并为其分配合理的标签。它甚至可以检测图像中的单个物体、面部和文本。

从更高层面来看,Google 的 Vision API 让您可以做两件事:

  • 直接在代码中使用该 API,以规模化地进行强大的图像分析。
  • 使用该 API 构建自定义模型,以满足您特定用例的更高灵活性。

这个 API 特别实用,因为在当下,“全栈”从业者的需求正在快速增长。设想这样一个场景:一名全栈 Web 开发者(也就是既掌握前端又掌握后端相关技术)被要求构建一个网站,接收图像并检测其类别。这显然需要相当的计算机视觉知识(如果他/她还不具备的话),因为开发者必须编写后端代码,以便准确识别给定图像。同时,假设截止日期也不宽裕。

在这种情况下,如果开发者从零开始学习计算机视觉,再去实现所需功能,很可能会错过截止日期。相反,如果他/她使用一些预训练的计算机视觉模型,并在开发过程中逐步学习其背后的概念,就更为务实。这正是 Vision API 派上用场的典型情境。该 API 提供了许多最先进的预训练模型,可服务于大量真实的商业用例。

“全栈”一词也正逐渐与 机器学习工程师、数据科学家 等角色相关联。一名全栈机器学习从业者/数据科学家应当能够设计与开发,或至少了解端到端的业务流程。其中“让模型达到可用于生产”的步骤至关重要,即由相关人员/团队将已开发的模型封装为一个或一组 API,并部署到生产环境。当然,生产的含义会随用例而异,但流程的总体思想/框架保持一致。借助 AutoML Vision BETA,Vision API 可帮助您高效训练自定义视觉模型。

很好!现在,您应该已经对 Vision API 有了相当不错的整体认识。在 Vision 主页 上,您可以做一个小实验:分析您最喜欢的图片,并借助 Vision 获得有用洞见。步骤如下:

  • 访问 Vision 主页。
  • 其中有一个名为“Try the API”的部分。您可以在该界面中拖拽/上传图片。try the api
  • 提供图片后,它会返回一组与该图片相关的信息:vision detected facts 如您所见,Vision 几乎立刻就检测出了该图片的许多信息。也可以随意探索其他选项卡,进一步了解这张图片。

想象一下,如果需要对数十亿张图片执行这一任务,使用这样的 API 显然会非常有价值。现在,让我们了解 Vision API 的具体功能,并看看该 API 在一些真实用例中的表现。

Vision API 提供了什么功能——一些细分用例

Vision API 以其准确的结果而著称。Vision API 的文档提供了出色的教程合集,帮助您深入了解该 API。但初看之下,可能会觉得内容有些繁多。为求简明,下面介绍一些 Vision API 已经服务过的用例。

  • 光学字符识别(OCR):这是计算机视觉中的经典示例,主要用于从图像中提取文本。Vision API 包含了许多最先进的方法来完成这项任务。
  • 图像属性检测:这就是您在前一节中所做的事情。使用 Vision API,您可以获取图像的一般属性,如主色调等特征。
  • 标签检测:根据图像内容为其添加标签(或“tag”)。例如,一张狗的照片可能会得到“dog”“animal”或其他类似的标注。这是基于内容的信息检索领域中的关键步骤。
  • 人脸检测:给定一张或多张图片,任务是在其中检测出现的人脸。这在安防监控等领域有着广泛应用。

以上是 Vision API 表现出色的一些用例,您可以在很短时间内将其集成到应用中。若想了解更多类似用例,请务必查看这些教程。

Vision API 支持多种语言,如 Go、C#、Java、PHP、Node.js、Python、Ruby。接下来,您将看到如何在 Python 中使用 Vision API。

Python 版 Vision API 客户端库

要在 Python 中使用 Vision API,首先需要安装它。最好的安装方式是通过 pip。

!pip install google-cloud-vision

安装成功后,下一步是验证是否安装成功。

from google.cloud import vision

如果上述代码行能够成功执行,说明您已准备就绪。Google 提供了一系列关于在 Python 中使用 Vision API的精彩教程。

现在,您将用 Python 构建一个简单应用,用于检测图像的一些一般属性,例如主色调。

Vision API 在 Python 中的一个案例研究

您的应用将接收图像路径作为输入,并显示相应图像的一般属性。这在图像位于将要运行应用的计算机上时很有用。但如果需要从互联网上读取图像怎么办?Vision API 同样支持从互联网读取图像。

在本案例中,您将学习如何处理第一种情形。而要支持互联网版本,只需改一行代码即可。

照例,先从 google.cloud 模块中导入 vision。

from google.cloud import vision

下一步调用 ImageAnnotatorClient(),其中包含用于提取图像属性的工具。

client = vision.ImageAnnotatorClient()

如果未设置 GOOGLE_APPLICATION_CREDENTIALS 环境变量,您很可能会遇到错误。原因在于这些库使用应用默认凭据(ADC)来定位您的应用凭据。当您的代码使用这类库时,该机制会检查您的凭据。

请按照此链接了解如何生成 GOOGLE_APPLICATION_CREDENTIALS。您的目标是生成一个 client_secrets.json 文件,用于认证。

获得 client_secrets.json 后,执行以下代码以设置 GOOGLE_APPLICATION_CREDENTIALS 环境变量。

import os
os.environ["GOOGLE_APPLICATION_CREDENTIALS"]="client_secrets.json"

现在再次运行下面的代码,应该不会再报错。

client = vision.ImageAnnotatorClient()

接下来编写代码,通过给定路径读取图像。

dog

图片来源

import io

path = 'Image.jpeg'
with io.open(path, 'rb') as image_file:
        content = image_file.read()

您已成功将图像加载到工作区。现在,将实例化一个 vision.types.Image 类型的对象,并将 content=content 作为其参数。

image = vision.types.Image(content=content)

距离完成图像属性检测应用只剩最后几步了。在这些步骤中,您将:

  • 以 (image=image) 为参数调用 client.image_properties。
  • 将 image_properties() 的响应存储在变量 response 中,并通过访问 response 的 image_properties_annotation 提取图像属性。
  • 以格式化的方式显示图像的若干属性。
 response = client.image_properties(image=image)
props = response.image_properties_annotation
print('Properties of the image:')

for color in props.dominant_colors.colors:
    print('Fraction: {}'.format(color.pixel_fraction))
    print('\tr: {}'.format(color.color.red))
    print('\tg: {}'.format(color.color.green))
    print('\tb: {}'.format(color.color.blue))

如果您尚未为应用启用 Vision API,可能还会再次遇到错误。启用该 API 非常容易,错误堆栈中也会提供操作说明,便于您快速开启。

启用 API 之后,您还需要启用 Billing 才能使用 Vision API。图像属性检测工具仅需 $0.60。完成这些后,代码即可成功执行并产生输出。

utilities for Image Properties detection

恭喜!

您已经看到使用 Vision API 是多么容易,以及它以相当低的成本提供的各种实用功能。如今,许多公司和组织都从该 API 中受益,无论是用于商业目的还是科研。本教程只是对 Vision API 的入门,但应能作为您在应用中使用机器学习 API 的良好起点。

务必查看 Google 提供的整套机器学习 API,即 CloudML。

借助这些易于调用的 API,您可以构建许多有趣的应用。Vision API 和 CloudML 的链接提供了精彩的教程合集,方便您上手尝试。祝您好运!

如果您对图像处理感兴趣,欢迎学习 DataCamp 的 用于图像处理的卷积神经网络 课程。

主题