使用 Google 视觉 API 实现基于云的低成本嵌入式图像识别

作者:Jacob Beningo

投稿人:DigiKey 北美编辑

不论是人脸、文本或其他图像数据,使用嵌入式系统执行现场图像识别的需求与日俱增。许多实现需要昂贵的高端应用处理器以及昂贵的定制应用代码。此外,图像处理是在片上执行的,这可能让成本和开发时间翻倍,令设计人员难以证明资源投入的合理性。

一种潜在的解决方案是,使用可连接至 Google 云平台 (GCP) 的嵌入式微控制器,并使用 Google 视觉 API 来执行分析。这在利用低成本硬件优势的同时,还能将处理操作分流到云。

本文将探讨嵌入式开发人员如何利用 GCP 和 STMicroelectronicsSTM32F779 微控制器来设置和执行图像识别。

机器视觉简介

识别图像中的对象并加以标识,这一功能见诸于各类广泛应用中,包括自主驾驶车辆中的障碍物识别,以及为离开装配线的产品进行编目分类。有鉴于此,机器视觉正致力于帮助嵌入式系统实现全新的智能水平。

一般而言,在嵌入式系统中实现机器视觉往往会采用高性能处理器或应用处理器,例如 Pi SupplyRaspberry Pi Zero(图 1)。这一低成本的开发板拥有一个相机连接器,用于捕捉可供机器视觉算法进行分析的图像。

Raspberry Pi Zero 图片

图 1:Raspberry Pi Zero 是一款低成本的开发板,它拥有一个相机接口,用于捕捉可供机器视觉算法进行分析的图像。(图片来源:Pi Supply)

在这些应用中,开发人员可能会使用 OpenCV 等工具进行人脸检测,或使用更高级的软件包来执行对象检测。

在深度嵌入式应用中,应用处理器解决方案存在的问题在于,功耗和外形尺寸往往过大,无法满足要求,更不用说 BOM 成本。

基于云的计算为开发人员提供了一种引人关注的折衷。与其将前期成本花在获取集成式解决方案所需的高端计算、软件和时间上,开发人员不如使用一个深度嵌入式目标来捕捉图像,然后将其传输到云中进行处理。这使得开发人员可以使用高能效、低成本的硬件平台,并将图像识别和计算留给云服务器来处理。

使用云服务和视觉识别 API 会带来少量相关成本;但考虑到大多数物联网解决方案已经连接到 Web,此额外成本极低,具体则视特定云服务提供商而异。

选择机器视觉平台

有兴趣在深度嵌入式处理器上使用机器视觉的开发团队可以选择的处理器和平台非常之多。目标平台应该能够提供可快速启动和运行的构件,并且已包含基本连接软件。RenesasAE-Cloud1 便是一个很好的例子,该器件旨在帮助开发人员在不超过 10 分钟的时间内,连接至 Amazon Web Services (AWS) 等云服务提供商(图 2)。

AE-Cloud1 基于 Renesas S5 处理器,并包含 Renesas 的 YSAEWIFI-1 Wi-Fi 模块,该模块旨在帮助开发人员快速、轻松地连接到 AWS。开发套件还包含一个调试器。

Renesas AE-Cloud1 开发板图片

图 2:Renesas AE-Cloud1 开发板基于 Renesas S5 处理器并包含 Wi-Fi 模块和调试器。(图片来源:Renesas)

开发团队也可能会使用 STMicroelectronics 的 STM32 物联网 Discovery 开发板,该器件运行 Amazon FreeRTOS 操作系统,开发人员可轻松将其连接到 AWS。

开发人员可以使用多种不同的软硬件组合来创建机器视觉解决方案,包括 STMicroelectronics 的 STM32F779 评估板(图 3)。其众多功能中包括了板载相机、以太网连接和一块 LCD。所有功能可结合使用,来捕捉图像和验证机器视觉应用。

STMicroelectronics 的 STM32F779 评估板图片

图 3:STM32F779 评估板基于 STM32F779 微处理器,包含一个板载相机、以太网连接,以及一块可用于采集、查看和监视机器视觉应用的显示屏。(图片来源:DigiKey)

该开发板使用 Texas InstrumentsDP83848CVV 控制器,提供以太网物理层 (PHY),使总体解决方案适合各种工业环境。

设置用于机器视觉的 Google 云平台

嵌入式开发人员可在其应用中使用基于云的多种不同机器视觉服务。其中包括 Google 云平台和 Amazon Rekognition。在本文中,我们将了解如何设置 Google 云平台视觉 API。

要设置视觉 API,最简单的方法是访问“Before You Begin”(准备工作)页面。此页包含设置和配置视觉 API 需要遵循的所有指示。开始之前,开发人员需要拥有一个 Google 帐户,用于登录和配置视觉项目。首次使用 GCP 的用户将获得一年的免费使用权,用于原型开发和平台试验。

设置用于机器视觉的 Google 云平台需要遵循的主要步骤图片

图 4:设置用于机器视觉的 Google 云平台需要遵循的主要步骤。提供 12 个月的免费试用期。(图片来源:Beningo Embedded Group)

开发人员配置视觉 API 需要遵循的主要步骤包括:

  • 创建新项目
  • 确保启用账单(最初提供 12 个月的试用,之后的费用不超过 300 美元,但未经明示许可不会收取费用)
  • 启用云视觉 API

创建新项目是通过 GCP 控制台完成的,只需单击“New Project”(新建项目)并提供项目名称便可,例如“Embedded Vision”。启用 API 的方法是,单击“Enable API”(启用 API)按钮,然后选择刚刚创建的项目。这将启用 API,但真正重要的是生成 API 凭据,这一过程其实也相当简单。

通过在项目界面中选择“API Services and Credentials”(API 服务和凭据)可以找到凭据。然后,开发人员将通过单击“Create Credentials”(创建凭据)按钮创建凭据(图 5)。

GCP 视觉 API 键图片

图 5:GCP 视觉 API 键是通过 GCP 界面创建的。嵌入式平台必须使用此键,以便访问视觉识别功能。(图片来源:Beningo Embedded Group)

至此,视觉 API 设置完毕,随时可用于嵌入式系统中。嵌入式系统需要采集图像,然后使用视觉 API 将图像传输到云中进行图像识别。

STM32F779 上的机器识别

在嵌入式系统上用于连接到 GCP 的软件将会根据开发人员选择使用或决定自行创建的系统而异。我最近曾将 STM32F779 与 Express Logic X-Ware 物联网平台搭配使用,该平台已创建一个将机器视觉与 GCP 配合使用的简单演示。

该演示非常简单;用户可以通过 LCD 触摸屏,使用 STM32F779 评估板上的相机拍摄一张照片。拍摄照片后,用户可以选择对对象还是文本进行图像分析。我决定进行一项有趣的测试,即在闪卡上书写“Hello World!”,然后将其提供给相机。从软件开发人员的角度而言,“Hello World!”看起来无疑是首次机器视觉测试的合理选择。

测试结果非常成功!捕捉到图像后,GCP 视觉 API 成功一致地识别并确定文本,以及我所提供的其他文字。我决定尝试一种极端情形,即提供快速书写的有些模糊的图像,看看系统能否识别书写内容。捕捉的图像和结果如图 6 所示。这种情况下,除了书写潦草的字母“d”被识别为“j”之外,几乎完全正确地识别了模糊的“Hello World!”。

从 Express Logic X-Ware 物联网平台的 GCP 视觉 API 所返回结果的屏幕截图

图 6:从 Express Logic X-Ware 物联网平台的 GCP 视觉 API 所返回结果的屏幕截图。“World”中的字母“d”的识别结果很有趣。(图片来源:Beningo Embedded Group)

有趣的是,我多次将完全相同的书写内容提供给相机,由于我书写的字母“d”比较潦草且偏离了焦点,因此得到的正确识别率约为 50%。查看终端日志后可以发现,识别结果为“Hello World”和“Hello WorlJ”的次数各半(图 7)。

GCP 视觉 API 响应产生的终端输出图片

图 7:GCP 视觉 API 响应产生的终端输出显示所提交图像中被识别的文本。(图片来源:Beningo Embedded Group)

现在,在此示例中,我从人类的角度可以了解云视觉算法为何难以识别该字符。即便在我自己看来,它也有两种形式,所以这的确是项有趣的测试。

在嵌入式系统上实现机器视觉的技巧和诀窍

开发人员在开发机器视觉应用时可以遵循多项技巧和诀窍。其中包括:

  • 如果视觉识别没有实时或确定的截止期限,则将图像识别分流到云中。
  • 使用嵌入式软件平台简化到基于云的机器视觉服务的连接。
  • 默认情况下,Google 视觉 API 处于禁用状态,必须手动启用才能使用该项服务。
  • 不要忘了在所用的软件平台中输入您的 Google API 键:它将用于验证使用该 API 的权限。
  • GCP 提供了基本的一年免费试用,可用于开发系统和制作系统原型。
  • 确保图像或文本已正确定位并且清晰可见,以便减少识别错误。

总结

通过利用云中的高性能处理,可以大幅简化基于低成本嵌入式系统的机器视觉应用。传统上,有兴趣使用机器视觉的开发人员必须针对其应用,使用应用处理器,并且开发先进的软件或获得许可。

有了 Google 云平台和低成本的微控制器及开发套件,开发人员便能以极低的成本获取图像和文本识别功能。开发人员还可以使用广泛提供的可扩展软件平台,帮助简化安全的云连接,同时简化应用开发。

 

免责声明:各个作者和/或论坛参与者在本网站发表的观点、看法和意见不代表 DigiKey 的观点、看法和意见,也不代表 DigiKey 官方政策。

关于此作者

Jacob Beningo

Jacob Beningo 是一位嵌入式软件顾问,目前与十几个国家的客户保持合作,通过帮助客户改善产品质量、降低成本和加快上市时间来大幅改变他们的业务。Jacob 先后发表了 200 多篇关于嵌入式软件开发技术的文章,是一位广受欢迎的演讲者和技术培训师。他拥有三个学位,其中包括密歇根大学的工程硕士学位。如有需要,欢迎随时通过 jacob@beningo.com 与其联系,也可访问其网站 www.beningo.com,并订阅其月度 Embedded Bytes Newsletter

关于此出版商

DigiKey 北美编辑