什么是对象检测?

你需要知道的三件事

目标检测是一种计算机视觉技术,用于定位图像或视频中的目标实例。目标检测算法通常利用机器学习深度学习产生有意义的结果。当人们观看图像或视频时,我们可以在瞬间识别并定位感兴趣的物体。目标探测的目标是用计算机复制这种智能。

为什么物体检测很重要

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

利用目标检测来识别和定位车辆。

工作原理

基于深度学习的目标检测

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

您可以从两种关键方法中进行选择,以开始使用深度学习进行对象检测:

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

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

无论您是创建自定义对象检测器还是使用预训练的对象检测器,您都需要决定要使用哪种类型的对象检测网络:两级网络还是单级网络。

两级网络

两阶段网络的初始阶段,如R-CNN及其变种,确定区域提案,或可能包含对象的图像子集。第二阶段对区域提案中的目标进行分类。两阶段网络可以获得非常准确的目标检测结果;然而,它们通常比单级网络慢。

R-CNN(顶部)和快速R-CNN(底部)目标检测的高级架构。

单级网络

在单级网络中,例如YOLO v2意思,CNN使用锚箱,并对预测进行解码以生成对象的最终边界框。单级网络可能比两级网络快得多,但它们可能无法达到相同的精度水平,尤其是对于包含小对象的场景。

YOLO v2对象检测概述。

使用机器学习的目标检测

机器学习技术也常用于目标检测,它们提供的方法与深度学习不同。常见的机器学习技术包括:

  • 聚合通道功能(ACF)
  • 支持向量机分类使用直方图定向梯度(HOG)特征
  • 人脸或上身检测的Viola-Jones算法

使用ACF目标检测算法跟踪行人。看例子.

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

机器学习vs.深度学习的目标检测

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

其他对象检测方法

除了基于深度学习和机器学习的对象检测外,根据您的应用程序,还有其他几种常用技术可能已经足够,例如:

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

基于点特征匹配的杂波场景目标检测。看例子.

基于MATLAB的目标检测

只有几行文字MATLAB®代码,你可以建立机器学习和深度学习模型的目标检测,而不必是一个专家。

自动标签训练图像与应用程序

MATLAB提供交互式应用程序来准备训练数据和自定义卷积神经网络。为目标检测器标记测试图像是一件乏味的事情,它可能需要大量的时间来获得足够的训练数据来创建一个高性能的目标检测器。的图像标签应用程序让您交互式标签对象在一个图像集合,并提供内置算法自动标签您的地面真相数据。对于自动驾驶应用程序,您可以使用Ground Truth Labeler应用,对于视频处理工作流,您可以使用视频贴标签机应用.

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

定制现有CNN或从头开始创建CNN容易出现架构问题,从而浪费宝贵的培训时间。这个深度网络设计器应用程序使您能够交互式地构建、编辑和可视化深度学习网络,同时还提供一个分析工具,在培训网络之前检查体系结构问题。

使用MATLAB,您可以使用ONNX™(Open Neural network Exchange)导入和导出功能,与TensorFlow™-Keras、PyTorch和咖啡因2等框架中的网络和网络架构进行互操作。

从ONNX导入并导出到ONNX。看例子.

为部署自动生成优化代码

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