zoukankan      html  css  js  c++  java
  • Fast R-CNN

    标题:《Fast R-CNN》

    时间:2015

    出版源:ICCV 2015

    主要链接:

    Fast R-CNN 介绍

      Fast R-CNN是基于R-CNN和SPPnets进行的改进。SPPnets,其创新点在于计算整幅图像的the shared feature map,然后根据object proposal在shared feature map上映射到对应的feature vector(就是不用重复计算feature map了)。当然,SPPnets也有缺点:和R-CNN一样,训练是多阶段(multiple-stage pipeline)的,速度还是不够"快",特征还要保存到本地磁盘中。将候选区域直接应用于特征图,并使用ROI池化将其转化为固定大小的特征图块。以下是Fast R-CNN的流程图

    什么是RoI呢?

      RoI是Region of Interest的简写,一般是指图像上的区域框,但这里指的是由Selective Search提取的候选框。

    RoI Pooling层详解

      因为Fast R-CNN使用全连接层,所以应用RoI Pooling将不同大小的ROI转换为固定大小。RoI Pooling 是Pooling层的一种,而且是针对RoI的Pooling,其特点是输入特征图尺寸不固定,但是输出特征图尺寸固定(如7x7)。

    RoI Pooling的输入

    输入有两部分组成:

    1. 特征图(feature map):指的是上面所示的特征图,在Fast RCNN中,它位于RoI Pooling之前,在Faster RCNN中,它是与RPN共享那个特征图,通常我们常常称之为“share_conv”;
    2. RoIs,其表示所有RoI的N*5的矩阵。其中N表示RoI的数量,第一列表示图像index,其余四列表示其余的左上角和右下角坐标。

      其中针对RoIs,作如下说明:

      在Fast RCNN中,指的是Selective Search的输出;在Faster RCNN中指的是RPN的输出,一堆矩形候选框,形状为1x5x1x1(4个坐标+索引index),其中值得注意的是:坐标的参考系不是针对feature map这张图的,而是针对原图的(神经网络最开始的输入)。其实关于ROI的坐标理解一直很混乱,到底是根据谁的坐标来。其实很好理解,我们已知原图的大小和由Selective Search算法提取的候选框坐标,那么根据"映射关系"可以得出特征图(featurwe map)的大小和候选框在feature map上的映射坐标。至于如何计算,其实就是比值问题,下面会介绍。所以这里把ROI理解为原图上各个候选框(region proposals),也是可以的。

    注:说句题外话,由Selective Search算法提取的一系列可能含有object的boudning box,这些通常称为region proposals或者region of interest(ROI)。

    RoI的具体操作

    1. 根据输入image,将ROI映射到feature map对应位置

      注:映射规则比较简单,就是把各个坐标除以“输入图片与feature map的大小的比值”,得到了feature map上的box坐标

    2. 将映射后的区域划分为相同大小的sections(sections数量与输出的维度相同)

    3. 对每个sections进行max pooling操作

      这样我们就可以从不同大小的方框得到固定大小的相应 的feature maps。值得一提的是,输出的feature maps的大小不取决于ROI和卷积feature maps大小。ROI pooling 最大的好处就在于极大地提高了处理速度。

    RoI Pooling的输出

      输出是batch个vector,其中batch的值等于RoI的个数,vector的大小为channel * w * h;RoI Pooling的过程就是将一个个大小不同的box矩形框,都映射成大小固定(w * h)的矩形框。

    Fast R-CNN 创新点

    1. 只对整幅图像进行一次特征提取,避免R-CNN中的冗余特征提取
    2. 用RoI pooling层替换最后一层的max pooling层,同时引入建议框数据,提取相应建议框特征
    3. Fast R-CNN网络末尾采用并行的不同的全连接层,可同时输出分类结果和窗口回归结果,实现了end-to-end的多任务训练【建议框提取除外】,也不需要额外的特征存储空间【R-CNN中的特征需要保持到本地,来供SVM和Bounding-box regression进行训练】
    4. 采用SVD对Fast R-CNN网络末尾并行的全连接层进行分解,减少计算复杂度,加快检测速度。

    参考:目标检测

  • 相关阅读:
    Python Package(转)
    22. 分数化小数 decimal
    21. 子序列的和 subsequence
    20. 倒三角形 triangle
    19. 韩信点兵hanxin
    18. 水仙花数daffodil
    17. 数据统计2
    16. 数据统计
    15. 阶乘之和
    14. 近似计算
  • 原文地址:https://www.cnblogs.com/Terrypython/p/10590165.html
Copyright © 2011-2022 走看看