• 目标检测Faster Rcnn原理


    组成部分:

    1、Conv Layers:是一组基础的Conv+relu+pooling层提取image的feature maps,该feature maps共享用于后续的RPN层和全连接层。注:该conv layers 可用任意的卷积结构代替,比如resnet,inception model,depthwise separable convolution等都可以替代该结构,只要能提取image的feature maps就行。

    2、Region Proposal Networks(RPN):用于生成region proposal(候选区域),通过softmax判断anchors属于negtive或是positiov,再利用bounding box regression(边框回归)修正anchors,以获得精确的region proposal.

    3、Roi Pooling:该层收集输入的features maps和proposal,综合这些信息后,提取proposal feature maps,送入后续的全连接层判定目标类别。

    4、Classification:利用proposal feature maps计算proposal的类别,同时再次bounding box region获得最终的精确位置。

     

     

     

     

     

    1、输入P*Q的图像,resize成M*N后,送入13个conv、13个relu及4个pooling组成的Conv layers,生成一个feature map

    2、生成的feature map分成两个分支,一路进入RPN,一路进入ROIPooling,汇总后再进行分类

     

     

     

    一、conv layer

    共包含三个conv、pooling、relu三种层。共有13个conv、13个relu及4个pooling层

    在conv layer中,

    1、所有的conv都是:kernel_size = 3,pad = 1,stride=1

    2、所有的pooling都是:kernel_size = 2,pad = 1,stride=2

    3、对所有conv都做了padding处理(pad=1),这样就导致conv的输入输出shape保持不变

    4、因为pooling层会使输出长度变为原来的1/2,所以经过四个pooling层后,最后输出的feature map是原图像的1/16。这样conv layer生成的feature map能笔原图对应起来。

     

    二、区域生成网络Region Propasl Networks (RPN)

    因为经典的检测方法生成检测框都非常耗时,所以faster rcnn对此做了改进,用RPN生成检测框,大大提升了检测速度。

     

     

     

    RPN分为两路:

    1、上面一路经过softmax生成anchors,获得positive和negtive分类。

    2、下面一路用于计算对于anchors的bounding box regression的偏移量,以获得精确的proposal.

    3、最后的proposal层是负责综合positve anchors和对应的bounding box偏移量,获取proposal,同时踢除太小和超出边界的propasal。

    4、RPN是完成了目标定位的功能。

     

    Anchors

    RPN网络在卷积后,对每个矩陈点,上采样映射到原始图像的一个区域,找到这个区域的中心点,然后基于这个中心点按规则选取9个anchor box。

    9个矩形共有三种面积:128,256,512;

    3种形状:长宽比约为1:1,1:2,2:1(该比例可调)

     

     

     

    左边每行的四个值为矩形的左上和右下角点的坐标

    遍历conv layers获得的feature maps,为每个点都配备这9种anchors作为初始的检测框。

     

     

     

    softmax判定positvate笔negtivate

    RPN就是从上面feature map上设置的候选anchors,用cnn去判断哪些anchor中是有目标的positive anchor,哪些是没目标的negative anchor.

     

     

     

    softmax中前后的Reshape只是方便softmax分类,跟算法没关系。

    所以上面那条分支是rpn网络利用anchors和softmax初步提取positive anchors作为候选区域。

     

     

     

     

    因为feature map中的每个点都对应有9个anchors,每个anchor又都有4个用于回归的变换量。

    得到

     

     

    三、proposal layer

    主要负责综合所有的变量和positive achors,计算出精准的proposal,送入后续的Roi Pooling layer

    Proposal layer有四个输入:

    1、positive vs negtive anchors分类器结果rpn_cls_prob_reshape

    2、对应的bbox reg的变换量rpn_bbox_pred

    3、Im_info:[M,N,scale_factor]

    4、参数feature_stride = 16:因为输入图像经过conv layer后,经过四个pooling,变为M/16,N/16,该参数用于计算anchor的偏移量。

    proposal layer处理顺序:

    1、利用变换量对所有的anchors做bbox regression回归

    2、按照输入的anchors softmax scores由大到小排序anchors,提取前pre_nms_top个anchors,即提取修正位置后的posivate anchors

    3、踢除尺寸小的positive anchors

    4、对剩余的positive anchors进行NMS

    5、之后 输出proposal

    生成anchors->softmax分类器提取positive anchors->bbox reg回归positive anchors->proposal layer生成proposal。

    四、Roi Pooling

    1、原始的feature maps

    2、RPN输出的proposal boxes

    参数:

    Pooled_w,pooled_h,spatial_scale(Pooled_w = 7,pooled_h = 7)

    Roi Pooling forward过程

    1、因为proposal是对应M*N尺寸的,所以首先使用spatial_scale参数将其映射回(M/16,N/16)大小的feature map尺寸

    2、再将每个proposal对应的feature map区域平分为pooled_w*pooled_h的网格

    3、对风格的每一份都要进行maxpooling操作

    这样处理后,即使大小不同的proposal输出结果都是pooled_w*pooled_h固定大小,实现了固定长度输出。

    五、Classfication

    从ROI POOLing获取到的Pooled_w*pooled_h大小的feature_map后,送入后续网络,做以下两件事:

    1、通过全连接和softmax对proposal分类

    2、再次对proposal进行bounding box regression,获得更高精度的预测框。

     

     

    六、速度对比

     

     

     

  • 相关阅读:
    LeetCode-Cycle Detection,Find the Duplicate Number
    LeetCode-Symmetric Tree
    剑指offer-打印链表倒数第k个结点
    Http协议中Get和Post的区别
    ORDER BY 语句
    AND 和 OR 运算符
    WHERE 子句
    SQL SELECT DISTINCT 语句
    SQL SELECT 语句
    SQL DML 和 DDL
  • 原文地址:https://www.cnblogs.com/baoxuhong/p/16062047.html
Copyright © 2020-2023  润新知