对象检测

什么是物体检测?

你需要知道三件事

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

为什么物体检测很重要

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

使用物体检测来识别和定位车辆

使用物体检测来识别和定位车辆。

它是如何工作的

使用深度学习的对象检测

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

你可以从两个关键方法中选择,开始使用深度学习进行目标检测:

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

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

无论你是创建一个自定义的物体检测器还是使用一个预先训练过的检测器,你都需要决定你想要使用哪种类型的物体检测网络:两级网络还是单级网络。

两级网络

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

R-CNN(上)和Fast R-CNN(下)物体检测的高层架构。

R-CNN(上)和Fast R-CNN(下)物体检测的高层架构。

单级网络

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

YOLO v2对象检测概述。

YOLO v2对象检测概述。

使用机器学习的物体检测

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

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

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

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

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

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

面板的导航

其他对象检测方法

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

  • 图像分割和blob分析,它使用简单的对象属性,如大小、形状或颜色
  • 基于特征的对象检测,其中使用特征提取、匹配和RANSAC估算一个物体的位置
使用点特征匹配的杂乱场景中的目标检测。

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

用MATLAB进行物体检测

只需几行MATLAB®代码,你就可以构建机器学习和深度学习模型来进行目标检测,而不需要成为专家。

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

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

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

定制一个现有的CNN或从零开始创建一个容易出现架构问题,浪费宝贵的培训时间。的Deep Network Designer app使您能够交互式地构建、编辑和可视化深度学习网络,同时还提供了一个分析工具,在训练网络之前检查架构问题。

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

从ONNX进口和出口。看例子

自动生成用于部署的优化代码

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

Baidu
map