Deep Learning

什么是对象识别?

您需要知道的三件事

对象识别是什么?

对象识别是一种计算机视觉技术,用于识别图像或视频中的对象。对象识别是深度学习和机器学习算法的关键输出。当人们看照片或视频时,很容易就能认出人、物体、场景和视觉细节。对象识别的目标是教会计算机去做对于人类而言自然而然的事情:对图像所含内容获得一定程度的理解。 

图 1:运用对象识别辨认不同类别对象

对象识别是无人驾驶汽车背后的关键技术,使它们能够识别停车标志,或区分行人与路灯。它在生物成像中的疾病鉴定、工业检测和机器人视觉等诸多应用中也非常有用。

对象识别与对象检测

对象检测与对象识别是用于鉴别对象的相似技术,但它们的执行过程有所不同。对象检测是在图像中发现对象实例的过程。在深度学习的情况下,对象检测是对象识别的一部分,对象识别不仅在图像中找出对象,还确定对象位置。这使得同一图像内的多个对象都能被识别和定位。

图 2:对象识别(左)和对象检测(右)

对象识别的工作原理是什么?

可以使用多种方法进行对象识别。目前,机器学习和深度学习方面的技术已成为解决对象识别问题的普遍方法。两种技术都学习识别图像中的对象,但在执行过程中有所不同。

图 3:用于对象识别的机器学习和深度学习技术 

下文将说明用于对象识别的机器学习与深度学习之间的差别,以及如何运用这两种技术。  

对象识别技术

使用深度学习进行对象识别

深度学习技术已成为进行对象识别的一种普遍方法。深度学习模型(比如卷积神经网络,亦称 CNN)可用来自动学习对象的固有特征,以便识别该对象。例如,CNN 通过分析成千上万的训练图像并学习猫和狗的不同特征,从而能够学会识别猫和狗之间的差异。 

有两种使用深度学习进行对象识别的方法: 

  • 从头开始训练模型:要从头开始训练深度网络,需要收集非常庞大的标签化数据集,并设计用于学习特征和构建模型的网络架构。结果可能让人惊艳,但这种方法需要大量的训练数据,而且需要设置 CNN 中的各个层和权重。
  • 使用预先训练的深度学习模型:大多数深度学习应用程序使用迁移学习方法,该过程涉及对预先训练的模型进行微调。从现有网络(如 AlexNet 或 GoogLeNet)起步,并输入包含以往未知类的新数据。这种方法耗时较少,并能够提供更快的结果,因为该模型已经在数千或数百万图像上进行训练。

深度学习具有很高程度的准确性,但准确预测要求有大量的数据。

图 4:深度学习应用之餐厅食物的对象识别

使用机器学习进行对象识别

机器学习技术也普遍用于对象识别,并且提供与深度学习不同的方法。机器学习技术的常见示例:

  • 使用 SVM 机器学习模型进行 HOG 特征提取
  • 具有 SURF 和 MSER 等特征的词袋模型
  • Viola-Jones 算法,可用来识别各种对象,包括人脸和上身

机器学习工作流程

要使用标准机器学习方法进行对象识别,需要从收集图像(或视频)开始,然后选择每个图像中的相关特征。例如,特征提取算法可能会提取边缘或边角特征,这些特征可用来区分数据中的各个类。 

这些特征会被添加到某一机器学习模型,该模型会将这些特征划分到不同类别,然后在分析和归类新对象时使用此信息。 

可以使用各种机器学习算法和特征提取方法,这些方法提供了多种组合来创建精确的对象识别模型。  

图 5:用于对象识别的机器学习工作流程 

使用机器学习进行对象识别具有一定灵活性,可选择特征和分类器的最佳组合进行学习。它能够以最少的数据实现精确的结果。

对象识别:机器学习对比深度学习

确定最佳的对象识别方法取决于应用场合以及待解决问题。在许多情况下,机器学习可能较为有效,尤其是已知区分对象类别的最佳图像特征或特性时。 

切记,在机器学习和深度学习之间进行选择时,主要考虑因素在于是否有强大的 GPU 和大量标签化训练图像。如果这两个问题中任何一个的答案是否,则机器学习方法可能是最佳选择。深度学习技术往往需要使用更多图像,一个强大的 GPU 则有助于减少训练模型所需要的时间。

图 6:选择深度学习或机器学习的主要考虑因素 

了解更多

其他对象识别方法

根据具体应用场合,使用其他更加基本的对象识别方法可能更为有效。 

  • 模板匹配 – 使用一个小图像或模板,找到大图像中的匹配区域
  • 图像分割和区块分析 – 使用简单的对象属性,如大小、颜色或形状

通常情况下,如果能使用图像分割之类的简单方法识别对象,那么最好从使用比较简单的方法开始。这能够提供一种稳健的解决方案,而不需要成百上千的训练图像或过度复杂的解决方案。

对象识别

使用 MATLAB 进行深度学习和机器学习:

仅需几行 MATLAB® 代码,非得成为专家就能构建机器学习和深度学习模型进行对象识别。  

使用 MATLAB让您能够在较短时间内成功进行对象识别,因为它能让您: 

  1. 利用您的专业领域知识并通过 MATLAB 学习数据科学:

    您可以使用 MATLAB 来学习和获取机器学习和深度学习领域的专业知识。MATLAB 使这些领域的学习变得切实可行且容易实现。此外,MATLAB 使领域专家能够创建对象识别模型,而不是将任务转交给可能不了解您的行业或应用场合的数据科学家。 

  2. 使用 App 标记数据和构建模型: 

    MATLAB 让您可以使用极少的代码构建机器学习和深度学习模型。  

    使用 Classification Learner App,您能够快速构建机器学习模型并比较不同的机器学习算法而无需编写代码。  

    使用 Image Labeler App,您能够交互地标记图像中的对象,在视频中自动进行路面真实标记,以用于训练和测试深度学习模型。这种交互式的自动化方法可以在更短的时间内获得更好的结果。 

  3. 将对象识别整合到一个工作流程中:

    MATLAB 可以将多个领域统合到一个工作流程中。使用 MATLAB,您可以在同一个环境中进行思考和编程。它提供了用于深度学习和机器学习的工具和功能,还提供了可导入这些算法的一系列领域(例如机器人学、计算机视觉和数据分析)的工具和功能。 

MATLAB 可在企业系统、集群、云和嵌入式设备上自动部署您的模型。 

有关详细信息,请参阅 MATLAB®Image Processing Toolbox™Computer Vision System Toolbox™Statistics and Machine Learning Toolbox™ 和 Deep Learning Toolbox™。 

获取免费试用版

30 天探索触手可及。

有疑问吗?

与深度学习专家探讨。