Press "Enter" to skip to content

目标检测算法分类

本站内容均来自兴趣收集,如不慎侵害的您的相关权益,请留言告知,我们将尽快删除.谢谢.

目标检测算法分类:

 

1、两步走的目标检测:先找出候选的一些区域,再对区域进行调整分类

 

代表:R-CNN、SPP-net、Fast R-CNN、Faster R-CNN

 

2、端到端的目标检测:采用一个网络一步到位,输入图片,输出有哪些物体,物体在什幺位置

 

代表:YOLO、SSD

 

 

目标检测的任务:

 

分类原理:

 

如下是一张CNN组成图,输入一张图片,经过其中卷积、激活、池化相关层,最后加入全连接层达到分类概率的效果。

 

 

分类的损失与优化:

 

在训练的时候需要计算每个样本的损失,那幺CNN做分类的时候使用softmax函数计算结果,损失为交叉熵损失

 

 

对于目标检测来说不仅仅是分类这样简单的一个图片输出一个结果,而且还需要输出图片中目标的位置信息,所以从分类到检测,如下图标记了过程:

 

检测的任务:

 

分类:

 

N个类别

 

输入:图片

 

输出:类别标签

 

评估指标:Accuracy

 

 

定位:

 

N个类别

 

输入:图片

 

输出:物体的位置坐标

 

主要评估指标:IOU

 

 

其中我们得出来的(x,y,w,h)有一个专业的名词,叫做bounding box(bbox)

 

物体位置:

 

x,y,w,h:x,y:物体的中心点位置,以及中心点距离物体两边的长款

 

xmin,ymin,xmax,ymax:物体位置的左上角、右下角坐标

 

目标定位的简单实现思路:

 

在分类的时候我们直接输出各个类别的概率,如果加上定位的话,我们可以考虑在 网络的最后输出加上位置信息。(增加一段全连接输出4个位置,做损失计算)

 

回归位置:

 

增加一个全连接层,即为FC1、FC2

 

FC1:作为类别的输出

 

FC2:作为这个物体位置数值的输出

 

 

假设有10个类别,输出[p1,p2,p3,…,p10],然后输出这一个对象的四个位置信息[x,y,w,h]。同理要知道网络输出什幺,如果衡量整个网络的损失

 

对于分类的概率,还是使用 交叉熵损失

 

位置信息具体的数值,可使用MSE均方误差损失(L2损失)

 

如下所示:

 

 

两种Bounding box名称:

 

在目标检测当中,对bbox主要由两种类别。

 

Ground-truth bounding box:图片当中真实标记的框

 

Predicted bounding box:预测的时候标记的框

 

 

一般在目标检测当中,我们预测的框可能有多个,真实框也有很多个。

 

目标检测-Overfeat模型

 

滑动窗口:

 

目标检测的暴力方法是从左到右、从上到下滑动窗口,利用分类识别目标。

 

为了在不同观察距离处检测不同的目标类型,使用不同大小和宽高比的窗口

 

 

注:这样就编程每张子图偏输出类别以及位置,变成分类问题。

 

但是滑动窗口需要初始设定一个固定大小的窗口,这就遇到了一个问题,有些物体适应框不一样

 

所以需要提前设定K个窗口,每个窗口滑动提取M个,总共K*M个图片,通常会直接将图像变形转换成固定大小的图像,变形图像块被输入CNN分类器中,提取特征后,我们使用一些分类器识别类别和该边界框的另一个线性回归器。

 

Overfeat模型总结:

 

这种方法类似一种暴力穷举的方法,会消耗大量的计算力量,并且由于窗口大小问题可能会造成效果不佳,但是提供了一种解决目标检测问题的思路。

 

R-CNN:

 

不使用暴力方法,而是用候选区域方法(region propasal method),创建目标检测的区域改变了图像领域实现五团体检测模型思路,R-CNN是以深度神经网络为基础的物体检测的模型。

 

(但是对于多个目标的情况,就不能以固定个数输出物体的位置值)

 

 

步骤(以AlexNet网络为基准)

 

1、找出图片中可能存在目标的候选区域region proposal

 

2、将候选区域调整为适应AlexNet网络的输入图像的大小227*227,通过CNN对候选区域提取特征向量,2000个建议框的CNN特征组合成网络Alex*Net最终输出:2000*4096维矩阵

 

3、将2000*4096维特征经过SVM分类器(20种分类,SVM是二分类器,则有20个SVM),获得2000*20种类别矩阵。

 

4、分别对2000*20维矩阵中进行非极大值抑制(NMS:non-maximum suppression)提出重叠建议框,得到与目标物体最高的一些建议框

 

5、修正bbox,对bbox做回归微调

 

CNN网络提取特征:

 

在候选区域的基础上提取出更高级、更抽象的特征,这些高级特征是作为下一步的分类器、回归的输入数据。

 

提取这些特征将会保存在磁盘中(这些提取的特征才是真正的要训练的数据)

 

特征向量训练分类器SVM:

 

1、假设一张图片的2000个候选区域,那幺提取出来的就是2000*4096这样的特征向量(R-CNN当中默认CNN层输出4096特征向量)

 

2、R-CNN选用SVM进行二分类。假设检测20个分类,那幺会提供20个不同类别的SVM分类器,每个分类器都会对2000个候选区域的特征向量分别判断一次,这样得出[2000,20]的得分矩阵,如下图所示

 

 

每个SVM分类器做的事情,判断2000个候选区域是某类别,还是背景

 

非极大抑制(NMS):

 

目的:筛选候选区域,目标是一个物体只保留一个最优的框,来抑制那些冗余的候选框

 

迭代过程:

 

1、对于所有的2000个候选区域得分进行概率筛选,0.5

 

2、剩余的候选框

 

假设图片真实物体个数为2(N),筛选之后候选框为5(P),计算N中每个物体位置与所有P的交并比loU计算,得到P中每个候选框对应loU最高的N中一个

 

如下图,A,C候选框对应左边车辆,B,D,E对应右边车辆

 

 

假如现在滑动窗口有:A、B、C、D、E5个候选框

 

第一轮:对于右边车辆,假设B是得分最高的,与B的loU>0.5删除。现在与B计算loU,DE结果>0.5,剔除DE,B作为一个预测结果。

 

第二轮:对于左边车辆,AC中,A的得分最高,与A计算loU,C的结果>0.5,剔除C,A作为一个结果

 

最终结果为在这个5个中检测出了两个目标为A和B

 

SS算法得到的物体位置已经固定了,但是我们筛选出的位置不一定就真的特别准确,需要对A和B进行最后的修正

 

修正候选区域:

 

那幺通过非最大一直筛选出来的候选框就不一定非常准确怎幺办?R-CNN提供了这样的方法,建立了一个bbox regressor

 

回归用于筛选候选区域,实质

Be First to Comment

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注