对象检测

什么是对象检测?

你需要知道三件事

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

为什么物体检测很重要

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

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

它是如何工作的

基于深度学习的目标检测

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

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

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

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

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

两级网络

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

R-CNN(上)和Fast R-CNN(下)对象检测的高级架构。

单级网络

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

YOLO V2目标检测的概述。

对象检测使用机器学习

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

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

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

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

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

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

其他物体检测方法

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

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

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

基于MATLAB的目标检测

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

自动标记与应用训练图像

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

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

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

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

从ONNX导入和导出到ONNX。见例

自动生成优化的代码部署

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

参见:模式识别