• 深度学习模型相关知识(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

  • 相关阅读:
    SHELL脚本扩展
    Linux服务器核心参数配置
    JavaIO系统
    SHELL脚本进阶
    计算机是怎么跑起来的?
    3年,从双非到百度的学习经验总结
    桥接模式:探索JDBC底层实现
    并发编程(三):从AQS到CountDownLatch与ReentrantLock
    并发编程(四):ThreadLocal从源码分析总结到内存泄漏
    Zookeeper:分布式程序的基石
  • 原文地址:https://www.cnblogs.com/xiaochouk/p/9079461.html
Copyright © 2020-2023  润新知