个性化阅读
专注于IT技术分析

Google Vision Python入门指南

本文概述

自Google发布专门的API(称为Vision API)以来, 已经有一段时间了, 该API用于执行与计算机视觉相关的任务。计算机视觉是与计算机如何处理图像有关的领域。对于人类来说, 从给定的图像中得出任何有用的见解是很容易的, 但是计算机是如何做到的呢?

例如, 假设你向计算机提供了狗的图像, 并且使用某些软件, 计算机会告诉你提供给它的图像是狗的图像。这就是计算机视觉的用武之地。计算机视觉本身就是一个研究的世界, 并且Vision API提供了许多实用程序, 可以非常轻松地执行与计算机视觉相关的任务。最好的部分是, 绝对没有计算机视觉经验的开发人员可以通过阅读Vision API来使用Vision API。

本教程试图向你介绍Vision API, 以及如何从Python代码中调用它。具体地说, 本教程将涵盖:

  • 什么是Google的Vision API(更详细的介绍)
  • Vision API提供哪些产品
  • 适用于Python的Vision API客户端库
  • Python中的Vision API案例研究

注意:如果你想在开始学习本教程之前(从Python和机器学习的角度)全面了解API, 那么以下是一些很好的资源:

  • API简介
  • 将机器学习模型转换为Python中的API

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

Google已将其机器学习模型封装在API中, 以允许开发人员使用其Vision技术。 Vision API可以将图像快速分类为数千个类别, 并为其分配合理的标签。它甚至可以检测图像中的单个对象, 面部和文本片段。

从高度上讲, Google的Vision API使你可以做两件事:

  • 直接从你的代码中使用API​​进行强大的图像分析, 并且可以按比例缩放。
  • 使用API​​构建自定义模型, 以便为你的特定用例提供更大的灵活性。

该API特别方便, 因为随着现代的发展, 对”全栈”从业人员的需求正在迅速增加。现在, 考虑一个场景, 要求全栈Web开发人员(这实际上意味着开发人员同时具备与Web开发相关的前端和后端技术)被要求构建一个可以拍摄图像并检测其种类的网站。现在, 这肯定会需要计算机视觉方面的大量知识(如果还没有的话), 因为开发人员将必须以一种可以准确检测给定图像的方式来指示其后端代码。另外, 假设截止日期不是很长。

现在, 在这种情况下, 如果开发人员开始从头开始学习Computer Vision, 然后实施所需的任务, 则他们很可能会错过最后期限。相反, 如果他/她使用一些经过预先训练的计算机视觉模型并在进行开发时学习了基础概念, 那么它将更加实用。这正是Vision API派上用场的情况之一。该API提供了许多最新的预训练模型, 可以满足许多实际业务用例。

术语”全栈”也与机器学习工程师, 数据科学家等角色相关联。全栈机器学习从业者/数据科学家应该设计和开发或至少了解端到端业务流程。这包括”制作生产就绪模型”是最关键的步骤之一, 其中相关人员/团队将开发的模型包装到一个API或一组API中并部署在生产环境中。现在, 术语”生产”根据用例而有所不同, 但是流程的总体思想/框架保持不变。 Vision API使你可以使用AutoML Vision BETA有效地训练自定义视觉模型。

大!到目前为止, 你应该已经对Vision API有了一个很好的概述。你可以在Vision主页上进行的一个不错的小实验是分析你喜欢的图像并借助Vision得出有用的见解。这是执行此操作的步骤:

转到视觉主页。

它具有称为”尝试API”的部分。它使你可以在其界面中拖动/上传图像。

Google Vision Python入门指南1

向其提供图像后, 它将为你提供有关该图像的大量信息:

Google Vision Python入门指南2

如你所见, Vision很快就检测到有关所提供图像的许多事实。随意浏览其他选项卡, 以了解更多有关图像的信息。

如果要在数十亿张图像上执行该任务, 请考虑该任务。在这方面, 使用这样的API无疑是富有成果的。现在, 让我们了解Vision API的产品, 以查看该API所服务的一些实际示例。

Vision API提供了哪些产品-一些利基用例

视觉API以其准确的结果而闻名。 Vision API文档提供了许多优秀的教程, 可为你提供有关API的非常详细的见解。但是乍一看, 这些事情似乎是压倒性的。因此, 为简单起见, 你将了解Vision API已经提供的一些用例。

  • 光学字符识别(OCR):这是计算机视觉的经典示例, 主要处理从图像中提取文本。 Vision API包括许多最先进的方法。
  • 图像属性检测:这是你在上一节中执行的任务。使用Vision API, 你可以检索图像的常规属性, 例如主色。
  • 标签检测:此任务基于图像内容用标签(或”标签”)注释图像。例如, 狗的图片可能会产生”狗”, “动物”或其他类似注释的标签。这是基于内容的信息检索领域中必不可少的步骤。
  • 人脸检测:给定一个图像或一组图像, 任务是检测其中存在的人脸。这具有多个大型应用程序, 例如监视系统。

这些是Vision API可以无缝执行的一些出色用例, 你可以在极短的时间内将以上任何内容集成到你的应用程序中。如果你想了解更多类似的用例, 请务必查看这些教程。

Vision API提供对多种语言的支持, 例如Go, C#, Java, PHP, Node.js, Python, Ruby。在下一部分中, 你将看到如何在Python中使用Vision API。

适用于Python的Vision API客户端库

使用Vision API的Python变体的第一步, 你必须安装它。最好的安装方法是通过pip。

!pip install google-cloud-vision

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

from google.cloud import vision

如果上面的代码行成功执行, 就可以继续了。 Google提供了一系列有关在Python中使用Vision API的精彩教程。

现在, 你将使用Python构建一个简单的应用程序, 该应用程序将能够检测图像的一些常规属性, 例如主导色。

Python中的Vision API案例研究

你的应用程序将以图像的路径作为输入, 并显示相应图像的常规属性。当图像位于要在其上执行应用程序的计算机内部时, 此功能很有用。但是, 如果你需要从互联网上读取图像怎么办? Vision API还支持从互联网读取图像。

在本案例研究中, 你将学习解决第一种情况。但是, 仅需一行代码即可适应Internet变体。

与往常一样, 你将从google.cloud模块中导入视觉开始。

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()

现在, 你将编写用于通过给定路径读取图像的代码。

Google Vision Python入门指南3

图片礼貌

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)

你仅剩下图像属性检测应用程序的最后步骤。在这些步骤中, 你将:

  • 使用as(image = image)参数调用client.image_properties。
  • 将image_properties()的响应存储在变量响应中, 并通过调用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美元。完成之后, 代码将成功执行并产生输出。

Google Vision Python入门指南4

恭喜!

你看到了使用Vision API多么容易, 并且它提供的实用程序的成本也大大降低。如今, 无论是出于商业目的还是研究目的, 许多公司和组织都从该API中受益。在本教程中, 你仅介绍了Vision API的表面, 但这应该为你为应用程序使用机器学习API提供了一个很好的起点。

确保你检查出Google提供的整套机器学习API, 即CloudML。

你可以借助这些易于调用的API来构建多个出色的应用程序。 Vision API和CloudML的链接提供了惊人的教程汇编, 因此你可以轻松地使用它们。祝好运!

如果你有兴趣了解有关图像处理的更多信息, 请参加srcmini的卷积神经网络进行图像处理课程。

赞(0)
未经允许不得转载:srcmini » Google Vision Python入门指南

评论 抢沙发

评论前必须登录!