什么是对象检测?

你需要知道的三件事

对象检测是一种用于在图像或视频中定位对象实例的计算机视觉技术。对象检测算法通常利用机器学习要么深度学习要产生有意义的结果。当人类看的图像或视频,我们可以识别和瞬间的事情中找到感兴趣的对象。对象检测的目标是利用计算机复制此情报。

为什么对象检测很重要

目标检测是先进的驾驶员辅助系统(ADAS)背后的一项关键技术,该系统使车辆能够检测车道或执行行人检测,以提高道路安全。对象检测在视频监视或图像检索系统等应用程序中也很有用。

使用对象检测来识别和定位车辆。

它是如何工作的

对象检测使用Deep学习

可以使用各种技术来执行对象检测。流行的基于深度学习的方法卷积神经网络(CNNs),如R-CNN和YOLO v2,自动学习检测图像中的对象。

你可以选择两种关键的方法来开始使用深度学习对象检测:

  • 建立和培养了自定义对象检测器。要从头开始训练自定义对象检测器,您需要设计一个网络体系结构来学习感兴趣对象的特性。您还需要编译一组非常大的标记数据来训练CNN。自定义对象检测器的结果可能非常显著。也就是说,你需要手动设置CNN的图层和权重,这需要大量的时间和训练数据。
  • 使用预先训练过的目标探测器。许多对象检测工作流使用深度学习杠杆迁移学习,使您的方法来启动一个预先训练网络,然后微调它为您的应用程序。这种方法可以提供更快的结果,因为该对象检测器已经在数千,甚至上百万,图像的训练。

使用预训练的R-CNN检测停车标志。见例

无论您创建一个自定义对象检测器或使用预训练的一个,你需要决定你要使用什么类型的对象检测网络:两级网络或单级网络。

两级网络

两级网络的初始阶段,如R-CNN及其变体,标识区域提案,或可能包含一个对象的图像的子集。第二级分类的区域的建议内的对象。两级网络可以实现非常精确的对象检测结果;然而,它们通常比单级网络慢。

R-CNN(上)和快速R-CNN(下)对象检测的高级体系结构。

单级网络

在单级网络中,例如YOLO V2美国有线电视新闻网(CNN)使用图像生成整个图像区域的网络预测锚箱,并对预测进行解码,以生成对象的最终边界框。单级网络可以比两级网络快得多,但它们可能达不到同样的精度水平,特别是对于包含小对象的场景。

YOLO V2目标检测的概述。

对象检测使用机器学习

机器学习技术也被普遍用于检测物体,它们提供了比深度学习不同的方法。常见的机器学习技术包括:

  • 聚合通道特性(ACF)
  • 使用面向梯度的直方图SVM分类(HOG)的特征
  • 维奥拉-琼斯算法用于人脸或上身检测

跟踪行人使用ACF对象检测算法。见例

类似于基于深度学习的方法,您可以选择从一个预先训练的对象检测器开始,或者创建一个定制的对象检测器以适合您的应用程序。与基于深度学习的工作流中的自动特征选择相比,在使用机器学习时,您将需要手动选择对象的识别特征。

机器学习与深学习的目标检测

确定最佳的对象检测方法取决于您的应用程序和要解决的问题。在选择机器学习还是深度学习时,要考虑的主要问题是你是否有一个强大的GPU和大量标记的训练图像。如果这两个问题的答案都是否定的,那么机器学习方法可能是更好的选择。当你有更多的图像时,深度学习技术往往工作得更好,gpu减少了训练模型所需的时间。

其他物体检测方法

除了基于深度学习和机器学习的对象检测,还有其他一些常见的技术,可能足够取决于你的应用程序,如:

  • 图像分割和斑点分析,其使用简单的对象性质,例如大小,形状,颜色或
  • 基于特征的物体检测,其用途特征提取,匹配和RANSAC估计物体的位置

目标检测,使用点特征匹配凌乱的场景。见例

用MATLAB进行目标检测

只有几行MATLAB®代码,你可以建立机器学习和深入学习模型,目标检测,而不必成为专家。

自动标记与应用训练图像

MATLAB提供交互式应用程序既准备训练数据和定制卷积神经网络。标记测试图像为对象的检测器是单调乏味的,并且它可以采取的时间显著量以获得足够的训练数据以创建高性能对象检测器。的图片标志应用程序可以交互的图像集内标签对象并提供内置算法自动标记您的地面实况数据。对于自动驾驶的应用程序,你可以使用地面真相贴标应用和视频处理工作流程,您可以使用视频贴标应用

交互式创建对象检测算法和互操作框架之间

定制一个现有的CNN或从头创建一个CNN都可能出现体系结构问题,这会浪费宝贵的培训时间。的深度网络设计师app可以通过交互构建,编辑和可视化深度学习网络,同时也提供了一个分析工具,网络训练之前检查架构问题。

有了MATLAB,您可以从像TensorFlow™-Keras,PyTorch使用ONNX Caffe2™(开放式神经网络交换)导入和导出功能框架,网络和网络架构的互操作。

从进出口到ONNX。见例

自动生成优化的代码部署

用MATLAB创建的算法后,你可以利用自动化的工作流程产生TensorRT或CUDA®代码与GPU编码器™执行硬件在环测试。生成的代码可以与现有的项目集成,并可用于验证桌面gpu或嵌入式gpu(如NVIDIA®Jetson或NVIDIA Drive平台)上的对象检测算法。