优化视觉识别分类

摘要

由于在视觉识别分类过程中使用的数据集非常大,因此开发者可能难以对图像进行分类,进而无暇研究其他 AI 和机器学习技术。通过将 Watson IoT Platform 与 Watson Visual Recognition 服务集成,您可以使用 Visual Recognition 训练模型来优化对象识别时间。此 Code Pattern 展示了如何构建基于 Java 的训练应用程序以从支持 IoT 的设备捕获图像,然后通过调用一个 Java API(向其传递一组图像)来创建和训练自定义分类器。随后,此 Code Pattern 展示了如何使用 Watson IoT Platform、Node-RED 和 Watson Visual Recognition 服务来构建一个预测应用程序,用于根据训练模型对一组新图像进行分类。

概览

智能图像识别包含以下两个过程:

  1. 构建训练模型
  2. 根据训练模型对图像进行分类以识别对象

此 Code Pattern 包含 2 个应用程序:训练应用程序和预测应用程序。预测应用程序提供了一个用于优化分类过程的创新性解决方案。捕获图像并将这些图像发布到 Watson IoT Platform,然后 Node-RED 中的 IoT 订户节点将获取此有效负载,并将其传递给 Watson Visual Recognition 服务调用。图像分类结果将存储在 Cloudant 数据库中。

通过此 Code Pattern,用户可以使用 Visual Recognition 服务实例来创建和训练自定义分类器。Visual Recognition 服务使用预先训练的默认分类器来识别图像中的对象。因此,如果有人希望 Visual Recognition 检测给定图像中的特定对象,那么需要创建和训练自己的自定义分类器。

要显示识别结果,您需要运行预测应用程序。IBM Watson IoT Platform 使开发者能够灵活地集成和执行其他服务和任务(例如,分析、存储等)。在此 Code Pattern 中,预测应用程序使用 Watson IoT Platform 来调用 Visual Recognition 服务,以便检测图像中的对象。这种实现的优势在于,它缩短了对象检测过程的整个执行时间。

流程

流程

  1. 在训练应用程序中,用户输入分类器名称。
  2. 在训练应用程序中,用户输入否定图像压缩路径。
  3. 在训练应用程序中,将启动摄像头窗口以捕获指定数量的肯定图像。
  4. 在训练应用程序中,将肯定图像压缩并将其与否定图像压缩文件一起传递给 java api。在 Visual Recognition 服务实例中创建一个自定义分类器。
  5. 在训练应用程序中,训练一旦完成,系统便会向 Watson Text to Speech 服务发送一条消息,表明训练已完成。
  6. 在预测应用程序中,使用摄像头设备捕获图像并将其放入处理队列中。
  7. 在预测应用程序中,从队列中选取图像并将其转换为 Base64 编码格式。
  8. 在预测应用程序中,已编码的有效负载将发布到 Watson IoT Platform 上的某个主题中。
  9. 在 Node-RED 中,IoT-IN 节点接收到该主题上已发布的有效负载。
  10. 在 Node-RED 中,Base-64 编码的有效负载会传递给 Visual Recognition 服务节点,并在内部执行 3 项检查(Visual Recognition 的功能):classifyImg、faceDetection 和 textDetection。
  11. 在 Node-RED 中,会将结果发送到 CloudantDB 节点,以便存储到数据库中。
  12. 在 Node-RED 中,设备命令将通过 IoT-OUT 节点发送到设备,用于通知设备发送队列中的下一个要处理的图像并刷新 GUI 以显示最新结果。

操作说明

参阅 README 文件,获取完整的操作说明。下面是使用此 Code Pattern 时需要完成的主要步骤:

  1. 使用 IBM Cloud 中的 Internet of Things Platform Starter 样板来创建 IoT 应用程序。
  2. 使用 Watson IoT Platform 仪表板注册 IoT 设备。
  3. 创建 Node-RED 模拟器,以用于从 IoT 设备接收事件并将通知发送回 IoT 设备。
  4. 构建并运行训练应用程序和预测应用程序。

本文翻译自:Optimize your visual recognition classification(2018-04-17)