目标检测算法的思想和方法综述

目标检测算法的原理

1.1 目标检测的定义

识别图片中有哪些物体以及物体的位置(坐标位置)。

其中,需要识别哪些物体是人为设定限制的,仅识别需要检测的物体;物体的坐标位置由两种表示方法:极坐标表示(xmin, ymin, xmax, ymax)和中心点坐标表示(x_center, y_center, w, h)
目标检测是在图片中对可变数量的目标进行查找和分类,就是定位到所要查找目标的在图片中的位置,位置通常会表示为一个矩形框,在进行目标检测定位的同时还会进行分类

  • 目标种类与数量问题
  • 目标尺度问题
  • 外在环境干扰问题

目标检测把一张图片标注出了我们需要检测的物体的坐标位置,在相应的矩形框上有这个矩形框的类别和置信度

目标检测需要进行特征提取的这个环节,传统或经典的机器学习方法来说会设计一些手动的特征来完成特征提取,深度学习往往通过卷积神经网方式来完成特征的提取

1.2 目标检测的发展
1.2.1 传统的目标检测算法(候选区域+手工特征提起+分类器)

传统的方法:VJ \ HOG+SVM (行人,基于HOG特征)\ DPM

深度学习目标检测方法:Two-stage(Faster RCNN系列) RCNN FastRCNN 利用RPN网络来对候选区域进行推荐
One-stage(YOLO和SSD系列)直接回归目标的位置的方法
One-stage : overFeat -> YOLO -> YOLO9000
->G-CNN
->SSD

1.2.2 目标检测的任务

对于一张图片中有一个物体时,可以通过如下框架进行物体检测:将输入的图片经过一个CNN网络得到feature map,然后将feature map分别连接两个全连接层,一个是物体分类的全连接层(有多少个物体就多少个输出),另一个是输出位置信息
如图所示:
在这里插入图片描述

1.2.3 算法的基本流程

算法基本流程:输入 -> 提取候选框 -> 特征提取 -> 利用分类器进行判定是否属于目标或者背景 ->利用NMS来进行候选框的合并 -> 得到目标的输出结果(深度学习和传统方法)
另外一种就是直接采用特征提取+目标框回归的方法来进行目标区域的提取,利用NMS的策略来进行目标框的合并得到最后的输出结果(深度学习的方法)

1.2.3 传统目标检测算法综述:

流程:给定一张待检测的图片,将这张照片作为我们检测算法的输入,然后对这张图片进行候选框的提取,通常采用滑动窗口的方法,然后对每一个窗口中的图像信息进行特征抽取,特诊抽取部分通常会采用一些经典的计算机视觉、模式识别中的关于图像特征表示的方法,比如:基于颜色的方法、基于纹理的方法,高层次的是语义特征方法
这些方法有的需要经过学习得到的方法,比如在抽取最基本的直方图特征,纹理特征比如HOG特征,稠密的特征之后通过一个PCA算法进行特征降维,或者LDA算法对特征进行空间的投影
对一些常见的特征提取的算法分为3大类:第一是底层特征:颜色、纹理,第二是中层次特征,指基于这些低层特征进行机器学习方法来进行特征挖掘,特征学习,这样的过程之后得到的特征,包括PCA特征、LDA学习之后的特征,一些基于优化理论完成的特征的学习,第三是高层次特征,将低层次和中层次的特征进行进一步挖掘和表示,将他们表示为比如对于一个人是否戴帽子,是否戴眼镜,头发的长短,所穿的服饰样式这样的语义特征来进行表示。主要是低层次和中层次
然后是对候选区域所提取出来的特征,基于这些特征进行分类判定,这个分类器需要事先的学习和训练得到,对于单类别目标的检测区分当前窗口中所包含的对象是否为背景还是我们所检测的目标这种二分类问题即可

深度学习算法就是将特征提取的部分变成一个卷积神经网,候选框提取的部分来通过一个RPN网络来完成

1.3 R-CNN算法

对于一张图片中有多个目标,多个类别时,对于图1所示的算法的无法实现,可能需要输出N个类别(N不固定),因此网络模型的输出是不固定的。因此需要一个能够输出多个目标的算法。
用候选区域方法(region proposal method),创建目标检测的区域改变了图像领域实现物体检测的模型思路,R-CNN是以深度神经网络为基础的物体检测的模型
算法步骤如下(使用Alexnet网络提取特征,输入大小需要resize到227×227):

1)找到可能存在物体的候选区域region proposal;

2)图片大小调整到227×227,为了使用Alexnet网络的输入,通过CNN对候选区域提取特征向量,2000个建议框的CNN特征组成2000×4096为矩阵;

3)将2000×4096的特征矩阵和20个SVM组成的权重矩阵4096×20相乘,获得2000×20的矩阵;得到2000个类别得分矩阵,得分最高的即为候选框中物体的类别;

4)分别对2000×20的矩阵的每一列即每一类进行NMS来剔除重叠的建议框;

5)修正bbox,对bbox进行回归微调。通过线性回归实现:特征值是候选区域,目标是对应的GT,建立回归方程学习参数。
R-CNN中的候选区域的选取,使用的是选择性搜索(SelectiveSearch, SS),如题4所示,首先将每个像素作为一组。然后,计算每一组的纹理,并将两个最接近的组结合起来。但是为了避免单个区域吞噬其他区域,我们首先对较小的组进行分组。我们继续合并区域,直到所有区域都结合在一起。下图第一行展示了如何使区域增长,第二行中的蓝色矩形代表合并过程中所有可能的 ROI。

在这里插入图片描述
R-CNN网络训练

R-CNN网络的训练过程分为:正负样本准备、预训练+fine tuning、训练SVM、训练边框回归网络。

1、 正负样本准备

其中

正样本:某个region proposal和当前图像上所有的ground truth重叠面积最大的IOU大于等于0.5,则该region proposal作为这个ground truth类别的正样本;

负样本:某个region proposal和当前图像上所有的ground truth重叠面积最大的IOU小于0.5,则该region proposal作为这个ground truth类别的负样本。

这样得到若干个候选区域以及对应的标记结果。

2、 预训练

别人已经在大数据上训练好的CNN网络参数(比如:本方法使用的Alexnet)

3、 微调(fine-tuning)

利用标记好的样本,输入到model1中,继续训练,得出model2(CNN网络)

4、 SVM训练

针对每一个类别训练一个SVM的二分类器。例如:猫的SVM分类器,输入维度是2000*4096,目标还是之前第一步标记(正负样本标记结果)的是否属于该类别。例如:100个猫样本,900个非猫样本。

5、 训练边框回归器

3.YOLO算法

6.1 流程理解

原始图片resize到448x448,经过前面卷积网络之后,将图片输出成了一个7×7×30的结构。

对于7×7的单元格,每个单元格预测两个bbox框,然后进行NMS筛选,筛选概率以及IoU。

6.2 单元格(grid)

最后输出网络的7×7×30的特征图怎么理解?

7×7=49个像素值,理解成49个单元格,每个单元格可以代表原图中的一个方块。单元格需要做两件事情:

1)每个单元格负责预测一个物体类别,并且直接预测物体的概率值。

2)每个单元格预测两个bbox位置,两个bbox的置信度(confidence):7×7×2=98个bbox。

一个物体类别+两个bbox位置+两个confidence:(4+1+4+1+20)=30

其中,4代表位置信息,1为置信度代表一个bbox的结果,20代表20类的预测结果。

6.3 训练过程

预测框对应的目标值标记
confidence:格子内是否有目标
20类概率:标记每个单元格的目标类别
怎么理解这个过程?同样以分类那种形式来对应,假设以一个单元格的预测值为结果,如下图
在这里插入图片描述
主要转载于:https://www.cnblogs.com/xjlearningAI/p/12496719.html

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值