经典网络解读系列(一):RegionProposal+CNN (rcnn)

论文来自《Rich feature hierarchies for accurate object detection and semantic segmentation

目标:

目标检测


模型结构:

1、使用select search对每张图像产生1k-2k个候选区域(这一步和目标类别无关)

2、对候选区域resize到统一尺寸。(227*227)这里resize的方法有三种:    

        1)在原图像上扩展候选框成一个正方形,然后resize到想要的尺寸(227*227)

        2)仍然是扩展成一个正方形,但扩展时候填充的内容不是图像,而是使用其他值,比如0,比如图像均值。最后再resize

        3)直接resize成227*227

对于超出图像边缘的候选框,填充图像均值。

讲resize后的候选框输入CNN提取特征。

3、输入SVM分类器,确定这些候选框的类别。

4、使用非极大值抑制减少冗余的候选框数量。对剩余的候选框通过检测框回归模型,修正最终的位置。

扫描二维码关注公众号,回复: 1652031 查看本文章



训练:

包括三部分:CNN的训练、SVM的训练、线性回归模型的训练。

训练时用到的数据:

预先提取出的候选区域和给定的检测框


1、CNN训练

首先使用大型的辅助集(ILSVRC 1000类)对CNN(VGG16等)进行图像级预训练(每张图片对应一个标签,没有检测框标记)----------->然后只使用提取出的region proposal进行训练,类别的数目是(N+1   N类目标+背景)替换上一阶段使用的1000类别的分类器层 。

标签的确定:

如果候选框与任意一个给定的检测框IOU>=0.5 认为该候选框是这个检测框对应的这一类(+),如果和所有检测框IOU<0.5,标记为负样本。   所有物体类别是+,背景是-。在训练的时候,每个批次输32个正样本+96个负样本----------->完成了CNN的训练。

不同的CNN结构对结果影响很大。


2、SVM训练

对于每一类训练一个SVM

输入是候选区域通过CNN提取出的4096维特征,输出是 是否属于此类

标签的确定:

如果候选框与某类给定的检测框IOU>=0.3认为该候选框是这个检测框对应的这一类(+),否则为-。


SVM训练完成。


作者有尝试使用softmax 发现效果不好。


3、检测框回归模型

我们对得到的候选框区域进行微调,使其更精确。

我们的训练算法的输入是一组NN个训练对(Pi,Gi)i=1,,N(Pi,Gi)i=1,…,N,其中Pi=(Pix,Piy,Piw,Pih)Pi=(Pxi,Pyi,Pwi,Phi)指定提案PiPi的边界框中心的像素坐标以及宽度和高度(以像素为单位)。注意,除非需要,下文中我们不再写出上标ii。每个检测框真值GG以相同的方式指定:G=(Gx,Gy,Gw,Gh)G=(Gx,Gy,Gw,Gh)。我们的目标是学习将提案框PP映射到检测框真值G的转换。

我们使用四个函数dx(P)d
y(P)

dw(  P)dh(P))参数化这个转换。前两个指定PP的边界框的中心的比例不变的平移,后两个指定P的边界框的宽度和高度的对数空间转换。在学习了这些函数后,我们可以通过应用转换将输入提案P转换成预测的检测框真值GˆGˆx=Pwdx(P)+Px(1)

Gˆy=Phdy(P)+Py(2)
Gˆw=Pwexp(dw(P))(3)
Gˆh=Phexp(dh(P))(4)

每个函数d(P)d⋆(P)表示x,y,w,h中的一个)都建模为提案PPpool5特征(记为ϕ5(P),对图像数据的依赖隐含的假定)的线性函数。即d(P)=wTϕ5(P),其中ww⋆表示模型和训练参数的一个向量,通过优化正则化最小二乘法的目标(脊回归)来学习ww⋆w=argminwˆNi(tiwˆTϕ5(Pi))2+λwˆ2(5)

训练对(P,G)的回归目标tt⋆定义为:tx=(GxPx)/Pw(6)

ty=(GyPy)/Ph(7)
tw=log(Gw/Pw)(8)
th=log(Gh/Ph)(9)

作为标准正则化最小二乘问题,可以有效的找到封闭解。

我们在实现边界回归的过程中发现了两个微妙的问题。第一是正则化是重要的:我们基于验证集,设置λ=1000。第二个问题是,选择使用哪些训练对(P,G)时必须小心。直观地说,如果PP远离所有的检测框真值,那么将PP转换为检测框真值G的任务就没有意义。使用像P这样的例子会导致一个无望的学习问题。因此,只有当提案P至少在一个检测框真值附近时,我们才执行学习任务。“附近”即,将PP分配给具有最大IoU的检测框真值G(在重叠多于一个的情况下),并且仅当重叠大于阈值(基于验证集,我们使用的阈值为0.6)。所有未分配的提案都被丢弃。我们为每个目标类别执行一次,以便学习一组特定于类别的检测框回归器。

在测试时,我们对每个提案进行评分,并预测其新的检测框一次。原则上,我们可以迭代这个过程(即重新评估新预测的检测框,然后从它预测一个新的检测框,等等)。但是,我们发现迭代不会改进结果。



测试:

对每幅图像-->2k个region proposal -->resize-->cnn fearture-->SVM

cnn feature 2000*4096

SVM权重矩阵 4096×N

点乘--2000×N

对于每一类,得到2000个得分(2000个候选框),使用非极大值抑制(NMS 改进版soft-NMS)消除掉大部分的候选框,最后对剩下的候选框回归修正。

评价标准:map

计算预测出来的框与GT框的IOU

然后判断哪些框预测正确,哪些预测错误。计算map


相关参考文献:

map:https://blog.csdn.net/qq_35608277/article/details/79070935

NMS:https://www.cnblogs.com/makefile/p/nms.html

IOU:https://blog.csdn.net/h_jlwg6688/article/details/76066890


猜你喜欢

转载自blog.csdn.net/zlrai5895/article/details/80724284
今日推荐