图像识别

图像识别概述

不可不知的三大要点

图像识别是识别图像或视频中的目标或特征的过程。这项技术已应用于多个领域,如缺陷检测、医学成像和安全监控。

图像识别的重要性

图像识别不仅可以加速处理繁琐的任务,而且还可以比人工图像检查更快速或更准确地处理图像。图像识别是应用于诸多领域的关键技术,也是深度学习应用的主要驱动因素,如:

  • 视觉检查:在制造过程中识别零部件是否有缺陷,可以快速检查装配线上的数千个零部件。
  • 图像分类:根据图像内容对图像进行分类。这在电子商务领域的图像检索和推荐系统等应用中特别有用。
  • 自动驾驶:识别图像中的停车标志或行人的能力对于自动驾驶应用至关重要。
  • 机器人:机器人可以利用图像识别来识别目标,并通过识别路径上的位置或目标来增强自主导航。
图像识别在零部件缺陷视觉检查中的应用。

图像识别在零部件缺陷视觉检查中的应用。

图像识别是支持这些应用的核心技术。它可以识别图像中的目标或场景,然后利用这些信息做出决策。而它做出的决策将作为更大的系统的一部分。图像识别将会帮助这些系统增强感知能力,其本质是通过为系统提供洞察力来支持其做出更好的决策。

图像识别与目标检测

图像识别和目标检测这两项技术十分相似,经常会一起使用。图像识别用于识别图像中的目标或场景,而目标检测用于查找图像中这些目标的实例和位置。

常见的目标检测技术有 Faster R-CNN 和 YOLOv3。

图像识别(左)和目标检测(右)。

图像识别(左)和目标检测(右)。

工作原理

图像识别使用的方法

图像识别使用了很多方法,包括机器学习和深度学习方法。使用哪种方法取决于具体应用,但一般来说,问题越复杂,需要探索深度学习方法的可能性就越高。

使用深度学习进行图像识别

图像识别的深度学习方法可能涉及使用卷积神经网络,从示例图像中自动学习相关特征,然后在新图像中自动识别这些特征。

图像识别的典型深度学习工作流:

数据训练图标

准备训练数据:从一组图像入手,将其汇集为不同的关联类别。这其中可能还包括预处理步骤。其目的是让图像更加一致,从而得到更准确的模型。

深度学习模型

创建深度学习模型:虽然您可以从头构建深度学习模型,但最好的方法可能是从预训练模型入手,并将其用作应用的起点。(进一步了解预训练模型。)

模型训练的截图

训练模型:模型训练就是将测试数据呈现给模型。之后,模型会多次遍历数据,并自动学习与图像相关的最重要特征。随着训练的继续,模型将学习更复杂的特征,直到能够准确地辨别训练集中的图像类。

测试数据的示例:一条狗的热图

测试数据:测试模型前所未见的新数据,了解模型对图像的识别情况。如果结果未能达到预期,请重复执行以上四个步骤,直到准确度令人满意。

深度学习方法可能听起来很复杂,但是,通过一些简单的例子开始使用并详细了解该技术不失为一种好方法。

提示:深度学习方法常用于图像识别,因为这些方法可以提供高度准确且可靠的结果。深度学习往往适用于处理大量训练数据,而迁移学习等方法可以简化图像识别工作流。Deep Learning Toolbox™ 提供了一个框架,用于通过算法、预训练模型和 App 设计和实现深度神经网络。 

使用机器学习进行图像识别

图像识别的机器学习方法就是从图像中识别并提取关键特征,然后将其用作机器学习模型的输入。

  • 训练数据:您可以先从一组图像入手,将其编译为关联的类别。
  • 提取特征:选择每个图像中的相关特征。特征提取算法可能会提取可用于区分数据类的边缘或角特征。
  • 创建机器学习模型:这些特征会添加到机器学习模型中,再由机器学习模型将其分为各自不同的类别,然后使用这些信息对新目标进行分析和分类。
机器学习工作流的图,显示了以下步骤:训练数据,特征提取,机器学习模型分类,以及测试数据。

图像识别的机器学习工作流。

您可以使用各种机器学习算法和特征提取方法。这些算法和方法可有多种组合以供创建准确的目标识别模型。

使用 HOG 特征和 SVM 分类器分类数字的图像识别机器学习示例

使用 HOG 特征和 SVM 分类器分类数字的图像识别机器学习示例

提示:使用机器学习进行目标识别可以灵活地选择最佳的特征和分类器组合以用于学习。这样,便可以最少的数据获得准确的结果。Statistics and Machine Learning Toolbox™ 提供了一系列函数和 App,可用于数据
描述、分析和建模。

图像识别:深度学习与机器学习

如何知道何时使用深度学习,何时使用机器学习来进行图像识别?从较高层面讲,二者区别在于机器学习需要手动选择特征,而深度学习可以自动学习特征。

使用传统图像处理方法进行图像识别

除了深度学习和机器学习之外,很多经典的图像处理方法在处理某些应用的图像识别方面卓有成效。图像处理方法往往非常适用于“基于像素”的识别应用,如:

  • 基于颜色的图像识别:颜色通常可以为图像识别提供良好的特征。色调、饱和度和明度 (HSV) 或红色、绿色、蓝色 (RGB) 等特征有助于深入了解图像。
  • 模板匹配这种方法使用小图像或模板在较大的图像中查找匹配区域。 
  • 图像分割和斑点分析:这种方法使用简单的目标属性,如大小、颜色或形状。 
提示:通常,如果目标可以使用图像分割等简单方法进行识别,则最好先使用这种方法。您有的可能是功能强大,不需要成百上千训练图像的解决方案,也可能是复杂的解决方案。不管怎么样,Image Processing Toolbox™ 都有您需要的所有工具。

使用 MATLAB 进行图像识别

MATLAB® 简化了图像识别中较为困难的任务。

  1. 图像标注 App:经过清理和预处理的数据可确保图像识别有更大的成功机会。使用图像标注器,可以自动执行图像裁剪和标注过程。
图像标注器的截图

以交互方式标注图像和视频。

  1. 探索深度学习和机器学习算法:一开始时,您可能并不清楚到底是使用深度学习还是机器学习方法。MATLAB 让您可以尝试各种方法组合。探索深度学习预训练模型或机器学习分类算法。

您可以使用 ONNX™(开放式神经网络交换)的导入和导出功能通过 TensorFlow™、Keras、PyTorch 和 Caffe2 等框架与网络和网络架构进行互操作。

与基于 Python 的框架集成。

  1. 自动为部署生成代码:最终,您的算法可能需要在桌面环境之外应用。MATLAB 提供了代码生成工具,可用于在任何位置部署图像识别算法:Web、嵌入式硬件或产品级服务器。
创建算法之后,可以使用自动化工作流,通过 GPU Coder™ 生成 TensorRT 或 CUDA® 代码,以用于硬件在环测试。生成的代码可与现有工程集成,并可用于在桌面 GPU 或嵌入式 GPU(如 NVIDIA® Jetson 或 NVIDIA Drive 平台)上验证目标检测算法。

另请参见:  模式识别


了解有关图像识别的更多信息

深度学习示例

查看文档中的深度学习示例。

使用机器学习进行图像识别

观看此视频,了解如何以交互方式创建准确分类器的分步说明。

使用自定义的特征袋进行图像检索

此示例说明了如何使用自定义的特征袋工作流创建 CBIR 系统。

使用视觉词袋进行图像分类

了解如何使用 Computer Vision Toolbox™ 函数通过创建视觉词袋进行图像分类。

计算机视觉

了解计算机视觉的概述、工作原理和重要性,以及如何使用 MATLAB 实现计算机视觉