目标检测算法综述

1 目标检测问题的定义

 

2 目标检测问题方法

 

首先需要给定一副图片作为输入,接下来可以通过提取候选框的方法来对候选框进行特征提取,并且使用分类器进行判定,判定是否属于目标或者背景,最后定义一个NMS进行候选框的合并,最终得到目标的输出结果。另外一种则是直接采用特征提取加目标框回归的方法来进行区域的提取,最后同样利用NMS的策略来将目标框进行合并,得到最终的结果。直接回归的方式主要采取深度学习方法,而通过候选框回归的方法,目前主要的方法同样也是深度学习的方法,只不过提取候选框的时候会有一些不同的策略。

 

 

 

3 传统目标检测算法综述

 

4 传统的目标检测算法

 

V-J 算法,主要用于人脸检测,特征抽取的部分采用Haar特征作为特征表示的算子,它实际上也是纹理算子的一种,人脸分类器采用Adaboost这样的分类器,候选框则采用滑动窗口的策略进行候选框的提取,会出现的问题主要是滑动窗口的大小和滑动窗口的步长,因为尺度的变化和步长的变化会导致本身算法会出现大量冗余的候选框,这些冗余的候选会导致目标检测算法性能或者速度的下降。这些冗余的候选框成为目标检测算法在速度上的重要瓶颈。 

 

5 HOG+SVM 算法

 

 

HOG+SVM 主要用于行人检测,所采用的也是传统目前检测算法的基本方法,区别在于这里我们选取提取HOG特征和训练SVM分类器这两种方法来代替VM算法中的积分子特征和Adaboost分类器,对于候选框的提取,我们同样采取滑动窗口的方法来进行,而最终候选框的过滤同样采用NMS方法,最终得到检测结果

 

 

 

 

首先看一下什么是HOG特征,它是纹理特征的一种,基本流程如下,Hog特种主要用于灰度图上,彩色如果想要用HOG特征首先要将彩色图转换为灰度图,然后进行Gamma变换,Gamma变化其实就是对我们的值进行根号求解,那我们整个像素的值就会变小,实际上也是对我们的数据进行一个平滑,接下来计算梯度map,什么是梯度map呢,就是我们会计算每一个点在x轴方向的梯度和y轴方向的梯度,并利用这两个梯度来计算梯度夹角,从而求出当前像素点的方向角。实际上Hog特征特征的维度通常和量化的角度,量化的维度以及cell的大小有关系。

 

 

提取完hog特征后我们会使用svm分类器来进行行人和背景这样的二分类进行建模。

 

6  常见的目标检测算法-DPM(物体检测)

 

 

7 常见传统目标检测算法-Sofe-NMS算法

 

 

8 基于Two-stage的目标检测算法综述

 

 

 

Two-stage是基于深度学习的目标检测算法的一种,基于深度学习的目标检测算法主要分为One-stage目标检测算法和Two-stage目标检测算法,two-stage目标检测算法主要通过一个完整的卷积神经网来完成目标检测的过程,这里我们会用到的目标检测的特征就是CNN的特征,也就是说通过一个卷积神经网来提取候选区域特征的描述,具有代表性的为 2014年提出的 R-CNN到 faster-RCNN这一系列的算法,如果不考虑two-stage算法需要单独训练RPN网络这样一个过程,我们可以将它简单的广义的理解为端到端的目标检测算法。实际上它也不是简单的端到端,因为在整个过程中主要分为两步,第一步就是训练RPN网络,第二步是目标区域检测的网络训练。相对于传统的目标检测算法,它不需要额外训练分类器,做特征表示这样一个过程,整个目标检测的过程通过一个从A到B这样一个完整的卷积神经网来完成。精度得到很大提升,但是速度会慢一些。而one-stage算法则通过直接回归的方法得到目标的位置。

 

 

 

首先会输入一副图片,然后对图片进行深度特征的提取,输入之后会经过一个卷积神经网,这个卷积神经网称为主干网,再然后我们会通过rpn网络完成传统的目标检测算法的过程,也就是产生候选区域,这个候选区域会经过一个RPN网络完成,并且在经过候选框区域提取的时候会完成一个对候选框区域的分类,这个分类过程就将候选区域分为背景和目标两种不同的类别。并且在RPN网络产生候选区域的时候会对目标的位置进行初步的预测,也就是说区域分类和位置精修这样两个环节,然后我可以通过roi_pooling对得到的位置进行精确的位置回归和修正,然后通过fc也就是全链接层对候选区域进行位置的表示,最后我们通过分类和回归两个分支来分别完成对候选目标位置的判定和候选目标位置的精修,这里我们通常会得到物体的真实类别,而回归主要是得到当前物体具体的目标位置,通常表示为一个确定4个顶点坐标的矩形框。

 

 

 

 

 

 

 

 

 

9  two-stage目标检测算法核心组件

 

 

卷积神经网络作为主干网络

 

除了主干的CNN卷积神经网络之外,我们还需要一个RPN网络,从上图中我们可以看到,输入的图片在经过主干层也就是卷积层之后会得到feature maps,这个feature maps通常为一个 ncwh的四维卷积特征,其中n为我们当前处理样本的数据,c为feature map 的个数,也就是channel的个数,w h 也就是长宽,这个长宽可能会和我们原始图片的长宽相差一定的倍数,这个倍数产生的原因,一方面我们在进行卷积的时候,可能会产生一些长宽的损失。对于我们通过卷积之后得到的这样一个featrue maps之后,我们会通过一个RPN网络来完成区域的推荐和候选目标的筛选,这个步骤相当于我们利用传统的目标检测算法进行区域检测时会用到的滑动窗口的策略。这里我们需要了解的主要有 RPN网络的区域推荐算法,对候选区域筛选之后,我们会通过ROI Pooling 提取候选目标,然后利用分类和回归网络对候选区域进行精确的坐标位置的分类和回归。

 

 

对于RPN网络其中一个比较重要的步骤就是区域推荐,对于区域推荐算法比较重要的机制就是 Anchor机制,如何理解 Anchor 机制呢,比如对于当前的feature map它的大小就是 n*c*w*h ,这个Anchor其实就是我们选择 w*h 上的大小的每一个点作为锚点,这个锚点就是所谓的候选区域的中心点,我们以每一个点作为中心点去提取候选区域,这样的每一个点我们都称为anchor,接下来我们以这个点为中心,按照一定的比例来提取候选区域,对于faster RCNN我们通常会根据9个不同的尺度来提取9个候选区域,换句话说,对于一个feature map 我们会提取出 w*h*9个候选区域,然后我们利用真值 GT对获选区域进行筛选,经过筛选之后我们得到正样本和负样本,其中正样本就是包含了目标的候选区域,负样本表示为不包含目标的候选区域,包含和不包含通常通过IOU这样的一个值进行判定,也就是真值和候选区域的重叠面积,如果真值和候选区域的重叠面积超过了0.7的话,我们会认为这是一个正样本,如果小于0.3的话,我们会认为是负样本,当然我们也可以对这个0.7或0.3的参数进行设置,对于中间的那一段我们通常不会用来训练RPN网络的分类器。

ROI Pooling实际上RPN网络的一个层,对于当前层的输入包括了3个部分,分别是当前的特征图也就是feature map, rois也就是区域的坐标,最后也就是ROI的参数。在经过ROI poling之后会输出一个固定尺寸的feature map。ROI Pooling实际上是完成了一个抠图+resize这样一个操作。抠图就是我们得到相应的feature,resize就是将这些feature map固定到同样的大小,因为我们后面使用fc的时候特征图必须是同样的大小。

10 one-stage 基本介绍,流程与常见算法

one-stage 目标检测算法在输入之后,会通过一个主干网络完成CNN特征的抽取,然后直接进行区域分类和位置精修,少了RPN网络的过程,它与two-stage目标检测算法最大的区别就是是否包含了候选目前区域推荐的这样一个过程。

 

 

 

 

其中 yolo 和ssd是最具有代表性的两种算法

 

11 one-stage核心组件

 

 

主干网络无论是one-stage目标检测算法还是two-stage目标检测算法都是需要的,除此之外我们还需要一个回归网络,这个回归网络可能不是一个简单的回归,可能需要一些相应的策略。

 

同样对于卷积神经也是经历一个由简到繁再到简的过程,在不考虑速度的时候,我们通常选择一个比较复杂的卷积神经网,如果考虑性能,通过会选择第二个简这样一个轻量级的网络结构。

 

       接下来我们看一下one-stage深度学习目标检测算法中另外一个主要的网络,回归网络,它的输入主要是我们之前介绍过的CNN主干网络,通过CNN主干网络来进行卷积特征提取之后得到的feature map来作为回归网络的输入,在回归网络中,主要是完成了区域回归和目标区域类别的判定,区域回归主要是指通过回归网络直接输出当前目标的bandingbox 的位置信息,这里的位置信息我们可以看一下PPT中的两个例子,红框和蓝框都是我们最终要求的位置信息,也就是区域回归最终的输出结果,这个区域信息也是我们这个目前检测网络最终想要得到的目标,所以说回归网络可以说是我们 one-stage 目标检测网络中最重要的一个组件。我们在回归过程中也会得到置信度和位置信息,置信度表达了当前的roling box中是否存在目标,如果存在目标它就是一个目标区,如果不存在目标它就是一个背景区。我们以上图右面举例,可以看到图片被分成了很多小格子,每一个小个子在YOLO算法中都会进行区域回归在输出当前的格子所对应的目前区域的位置信息,置信度和位置。对比1和2 两个小格子,因为1在目标框中,所以它的置信度更高,类别来说,1号区域属于狗所对应的类别,而2号区域属于北京所对应的类别,所以1号区域对应的狗的概率分布值更高,而2号区域对应的背景的概率分布值更高。

    除了区域回归,我们同事也可以通过Anchor机制来找到位置,对于one-stage 它的整个过程中是没有RPN网络这样一个推荐区域特征提取的,但是我们可以使用anchor机制来回归目标区域,比如SSD算法。

 

 

 

 

我们以YOLO为例介绍one-stage回归网络的预测过程,对于YOLO上图我们给出了它整个网络预测的过程,YOLO算法在进行计算的时候,会对整张图片进行划分,划分成SxS这样的格子,对于每一个网格分布预测以当前的网格为中心的目标区域的位置信息,最上图我们可以看到有很多以当前区域为中心的矩形框,这些矩形框实际上就对应到了我们输入的SxS网格状的图像所预测出来的带检索区域的位置。这个时候,我们认为当前的格子为矩形框的中心,此时再给出格子的宽和高,这个时候我们就能在图片中找到一个矩形框检测区域。对于每一个格子,同时还会预测出一个置信度,这个置信度实际上就是描述了当前的格子中是否存在目标的概率值,如果这个概率值接近1的话,那当前的格子所预测出来的Rounding box所包含带检测目标的概率就越高,如果趋向于0的话,当前的Rounding box所包含的目标区域的可能性就越低。同时我们还会针对于每个格子来预测出当前这个格子所属于的目标的类别的概率分布值。也就是最下面的图,我们可以看到同一个类别他们的格子所对应的颜色基本上是同一个值。这个时候如果我们的类别数为C类,YOLO算法中每一个格子回归出来的最终的值实际上就是(x,y,w,h)四个坐标加上一个置信度,对于每一个格子我们都会预测出(5Xb + c)维的向量。

YOLO算法是一个端到端的回归网络,整个算法流程更简单,整体的检测效率更高,实时性更好。但是准确度较低,有可能漏检。

 

12 one-stage 和 two-stage 优缺点对比

 

 

 

 

 

 

 

 

 

 

 

 

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值