深度学习模型相关知识(2)

参考:https://blog.csdn.net/lanran2/article/details/60143861

ROI pooling:

ROI是Regin of Interest的简写,指的是特征图上的框,特点在于输入特征图尺寸不固定,但是输出特征图尺寸固定。

这里加一个Fast RCNN和Faster RCNN在ROI步骤前的区别:

1)在Fast RCNN中,RoI是指Selective Search产生的候选框在特征图的映射

2)在Faster RCNN中,RoI是由RPN产生的候选框在特征图的映射

如上为Fast RCNN的整体结构,经过提取候选框后完成在feature map上的映射,再经RoI pooling来将多个不同尺寸的RoI统一到相同的尺寸,然后再提取特征。

RoI pooling的输出:

输出的是batch个vector,其中batch的值是在上面的例子中是单个给定像素图中RoI的个数,vector的大小为channel*w*h(这里的channel也就是上面红色小矩阵的厚度),也就是说RoI Pooling的过程就是将大小不同的box矩形框,映射成固定大小(w*h)的矩形框。

参考:https://blog.csdn.net/zijin0802034/article/details/77685438

Bounding-Box regression (边框回归):

这里以如下的图为例:

上图中,绿色的框表示Ground Truth,红色框为Selection Search 或者RPN提取的Regin Proposal;观察上图可以发现,这里的IoU<0.5(两个bounding box的重叠程度),因而可以判定为未正确监测出飞机,所以我们需要对红色框进行微调,Bounding-box regression就是用于这个窗口的微调过程。

对于窗口一般采用四维向量(x,y,w,h)来表示,其中x,y表示窗口的中心点坐标,w,h表示中心点坐标的宽和高。

Bounding-box regression的作用在于将Regin Proposal 经过映射后得到和真实窗口G更接近的回归窗口,也就是说边框回归的目的在于为给定寻找映射f,使得,以做到

如上的f(x)过程包括几个步骤:平移、缩放

1、平移的步骤(Δx,Δy):

 

2、然后再做尺度的缩放(Sw,Sh):

输入部分:

Regin Prosoal里P=(Px,Py,Pw,Ph),输入是这个窗口对应的CNN特征,以及Ground Truth,也即下边提到的t*=(tx,ty,tw,th)

输出部分:

需要进行的平移变换和尺度缩放的dx(P) ,dy(P),dw(P) ,dh(P),或者说 Δx,Δy,Sw,Sh

这里P经过dx(P) ,dy(P),dw(P) ,dh(P)得到的是预测值,理论上来说,这4个值应该是经过Ground Truth和Proposal计算得到的真正需要的平移量(tx,ty)和(tw,th)。

其中tx,ty,tw,th的表达式如下:

那么目标函数可以表示为,其中是输入Proposal的特征向量,w*是要学习的参数(*表示x,y,w,h,也即每个变换对应一个目标函数),d*(P)是得到的预测值。

目的是为了使预测值和真实值t*=(tx,ty,tw,th)的差异最小,如此得到损失函数:

函数优化目标为:

通过梯度下降法得到优化权重w*

参考:http://lib.csdn.net/article/deeplearning/61641

参考:https://www.zhihu.com/question/42205480/answer/155759667

参考:https://blog.csdn.net/williamyi96/article/details/77648047

 Regin Proposal Networks(RPN):

 Region Proposal Networks是Faster RCNN提出的proposal生成网络,代替了RCNN和Fast-RCNN中的selective search方法。

在介绍RPN之前,首先介绍anchors,这是一组长宽比分别为:width:height=[1:1,1:2,2:1]三种情况的矩阵,(按照其他博文的意思是取3种尺寸的该3种比例,得到9个面积尺寸)以如下为例:

anchor的本质是SPP(spatial pyramid pooling)思想的逆向,SPP本身是用于将不同尺寸的输入resize成相同尺寸的输出,因而SPP的逆向就是将相同尺寸的输出倒推得到不同尺寸的输入。

这里获取的anchors用于遍历Conv-layers计算所得的feature maps,为每一个点都配备这

由于在进行RPN前已经进行了一系列的卷积、池化、relu,假定这里得到的feature为:51x39x256(256为层数)

在这个特征参数基础上,通过3x3的滑动窗口,在51x39的区域上滑动,stride=1,padding=2,那么就得到51x39个3x3的窗口。

对于每个3x3的窗口,计算滑动窗口中心点对应的原始图片的中心点,假定该3x3的窗口是从原始图片经SPP池化得到,这个池化的面积和比例就是一个个anchor。也即对于每个3x3窗口,作者假定它来自9种不同原始区域的池化,这些池化在原始图片的中心点完全一致。也即3x3窗口中心点对应原始图片的中心点。如此来在每个窗口位置根据9个不同比例、不同面积的anchor,逆向推导其对应的原始图的区域,这个区域的尺寸及坐标。这个区域就是我们想要的proposal,通过滑动窗口和anchor,得到了51x39x9个原始图片的proposal;由于每个proposal我们只输出6个参数:每个proposal和ground truth比较得到的前景概率和背景概率(2个参数)(对应图上的cls);由于每个proposal和ground truth位置和尺寸的差异,从proposal平移缩放得到ground truth需要4个平移缩放参数;如下图所示:

其中这里从proposal平移缩放到ground truth就涉及到上一个模块提到的bounding box regression,用于修正检测框位置。

假设有k个anchor,每个anchor分foreground和background,所以cls=2k scores,每个anchor对应[x,y,w,h]的4个偏移量,故reg=4k coordinates

 

posted @ 2018-05-23 21:22  小丑_jk  阅读(360)  评论(0编辑  收藏  举报