什么是物体检测?

你需要知道的3件事

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

为什么对象检测事项

对象检测是先进驾驶员辅助系统(ADA)的关键技术,使汽车能够检测驾驶通道或执行行人检测以提高道路安全性。对象检测在视频监控或图像检索系统之类的应用中也是有用的。

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

这个怎么运作

使用深度学习的对象检测

您可以使用各种技术来执行对象检测。流行的深度学习方法使用卷积神经网络(CNNS),例如R-CNN和YOLO V2,自动学会检测图像内的对象。

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

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

使用佩带的R-CNN检测停止标志。看例子

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

两阶段网络

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

R-CNN(上)和快速R-CNN(下)目标检测的高级架构。

单级网络

在单阶段网络中,如YOLO v2意思,CNN使用整个图像的区域产生网络预测锚箱,然后对预测进行解码,生成对象的最终边界框。单级网络可以比两级网络快得多,但它们可能无法达到相同的精确度,特别是对于包含小对象的场景。

YOLO v2对象检测概述。

基于机器学习的目标检测

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

  • 聚合通道功能(ACF)
  • 利用定向梯度直方图(HOG)特征进行SVM分类
  • 人体脸部或上身检测中的jones算法

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

类似于基于深度学习的方法,您可以选择从佩带的对象检测器开始或创建自定义对象检测器以适合您的应用程序。在使用计算机学习时,您需要手动选择对象的识别功能,与基于深度学习的工作流程中的自动特征选择相比。

机器学习与深度学习用于对象检测

确定对象检测的最佳方法取决于您的应用程序和您尝试解决的问题。在机器学习和深度学习之间选择时要记住的主要考虑是您是否拥有强大的GPU和许多标记的培训图像。如果对这些问题中的任何一个的答案是否定,机器学习方法可能是更好的选择。当您有更多图像时,深入学习技术往往会更好地工作,并且GPU减少培训模型所需的时间。

其他对象检测方法

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

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

在一个杂乱的场景中使用点特征匹配的目标检测。看例子

MATLAB对象检测

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

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

MATLAB提供交互式应用程序来准备训练数据和定制卷积神经网络。为目标检测器标记测试图像是一项繁琐的工作,并且需要花费大量的时间来获得足够的训练数据来创建一个性能目标检测器。这图片标志应用程序允许您在图像集合中交互式地标记对象,并提供内置算法来自动标记您的ground-truth数据。对于自动驾驶应用程序,您可以使用Ground Truth Labeler应用,对于视频处理工作流,可以使用视频贴标签机应用

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

自定义现有的CNN或从头开始创建一个可以易于浪费宝贵的培训时间的架构问题。这深网络设计师应用程序使您可以交互地构建,编辑和可视化深度学习网络,同时还提供分析工具,以检查网络之前检查架构问题。

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

导入和导出到ONNX。看例子

自动生成优化的部署代码

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