Faster RCNN基本结构和各部分原理详解

一、网络总体结构

        总体结构如图:

        可分为以下四个模块↓

名称

作用

卷积层(conv)

提取feature maps

区域候选网络(RPN)

  • 分类:对预设的anchor进行二分类
  • Bounding box regression-修正较为准确的proposals

兴趣域池化(RoI Pooling)

收集PRN生成的proposals,并从feature maps中抠出对应的位置

分类和回归(Classification & Regression)

利用proposals feature maps计算具体类别,在使用bounding box regression获得检测框的精确位置

 二、分层详解

        ①卷积层

                卷积层可以基于VGG或ResNet50,本文基于ResNet50构造卷积层。

                卷积层合计13个Conv,13个ReLu,4个Pooling。

                        其中Conv的属性为:kernel_size=3, padding=1, stride=1

                                Pooling的属性为:kernel_size=2, padding=0, stride=2

                        Tips:卷积&池化公式

                                

                                

                 其被组织成两个模组:Conv BlockIdentity Block

                          

                         这两个模块的区别是:Conv Block的残差边有卷积,而Identity Block的残差边上没有卷积。拥有卷积边的Conv Block可以通过改变残差边来改变输出维度,而Identity Block的输入和输出维度是一致的。                       

                                其中使用Conv Block的会将图片的长宽/2(步长=2)

                                使用Identity Block的不会改变图片尺寸

                        作用:Conv Block用于改变网络维度,Identity Block用于串联以及加深网络深度。

                一张MxN的图像经过卷积层后生成的feature map 为(M/16)x(N/16)

         ②RPN

        分为两个部分,

                上面的线路通过softmax分类anchors获得正负两类(positive&negtive)

                下面的线路通过reg layer计算anchors的bounding box regression偏移量获取proposal

                两者在Proposal层汇合,本层负责将positive anchors和对应bounding box regression偏移量获取修正后的proposals(会剔除过小/超出边界的proposals)

                其实执行到此处相当于完成了目标定位

        ②-1Cls layer-anchors

                PRN的输入feature map为(M/16)x(N/16),在其上对每个像素点设置n个anchor(原作为9个)。这些anchor按照一定长宽比设置大小(原作为ratio[1:1,1:2,2:1])。

                原图上的anchor的数量为(M/16)x(N/16)xn。但大部分会淘汰;此通道数为18=2x9->9对应着每个像素点上的九个先验框,2用于判断先验框是否包含物体。

        ②-3:reg layer

                (M/16)x(N/16)x256的features通过一个1x1的kernel输出一组(M/16)x(N/16)x4k,为每个anchor的偏移量(此处输出的仅为偏移量,需要和原坐标进行叠加),通道数为9x2x4,4为先验框对于建议框的调整量。

        4k是应为其偏移量有四个通道,如下

        [tx,ty,tw,th],[xa,ya,wa,ha]为anchor的中心坐标和宽高,其计算公式如下

        ​​​​​​​        ​​​​​​​                         

        ​​​​​​​        ​​​​​​​                            

        经过修正(p为原始坐标,d为PRN预测的坐标),anchor的坐标为

                                     

                                 )

         ②-4:Proposal

              合计共三个输入

                     Cls生成的(M/16)x(N/16)x2k的向量

                     Reg生成的(M/16)x(N/16)x2k的向量

                     Im_info=[M,N,scale_factor]

              其作用如下:

                 (1)利用reg层的偏移量,对所有的原始anchor进行修正

                (2)利用cls层的scores,按positive socres由大到小排列所有anchors,取前topN(比如6000个)个anchors

                (3)边界处理,把超出图像边界的positive anchor超出的部分收拢到图像边界处,防止后续RoI pooling时proposals超出边界。

                (4)剔除尺寸非常小的positive anchor

                (5)对剩余的positive anchors进行NMS(非极大抑制)

                (6)最后输出一堆proposals左上角和右下角坐标值([x1,y1,x2,y2]对应原图MxN尺度)

        ③RoI pooling

                全连接层输入的feature尺寸必须相同,传统的做法一般是裁剪(crop)或

        缩放(wrap),虽然可以resize图像,但是会出现信息缺失/破坏原始形状信息的问题。

                RoI pooling的原理

                       将每个proposal对应的feature map区域分为pooled_w x pooled_h的网格

                       对每个部分做max pooling,使每个proposal输出都是pooled_w x pooled_h

         ④Classification

               其与RPN的区别是RPN仅进行二分类(目标/背景),而classification还需要确定具体属于哪一类。

               其主要功能有:

                      ①通过全连接层和softmax对proposals进行分类(多分类)

                      ②在此对proposals进行bunding box regression,获取更高精度的box

  • 0
    点赞
  • 34
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
根据引用\[1\]中提到的信息,Faster-RCNN的网络结构图包括四个关键模块:特征提取网络、生成ROI、ROI分类和ROI回归。特征提取网络用于提取图像中的特征,生成ROI模块用于生成候选区域,ROI分类模块用于对候选区域进行分类,ROI回归模块用于对候选区域进行位置回归。这四个模块通过一个神经网络结合在一起,形成了Faster-RCNN的端到端网络。 另外,根据引用\[2\]中提到的信息,Faster-RCNN的训练过程包括以下几个步骤:首先,使用ImageNet模型初始化一个RPN网络,并进行独立训练;然后,使用上一步RPN网络生成的proposal作为输入,使用ImageNet模型初始化一个Fast-RCNN网络,并进行训练;接下来,使用第二步的Fast-RCNN网络参初始化一个新的RPN网络,并只更新RPN特有的网络层进行重新训练;最后,固定共享的网络层,将Fast-RCNN特有的网络层加入进来,形成一个统一的网络,并继续训练,对Fast-RCNN特有的网络层进行fine-tune。通过这些步骤,Faster-RCNN实现了网络内部预测proposal并实现检测的功能。 综上所述,Faster-RCNN的网络结构图包括特征提取网络、生成ROI、ROI分类和ROI回归四个关键模块,并通过一系列训练步骤进行优化和调整。 #### 引用[.reference_title] - *1* *2* [Faster-rcnn详解](https://blog.csdn.net/WZZ18191171661/article/details/79439212)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [Faster RCNN 网络分析及维度分析](https://blog.csdn.net/qq_23981335/article/details/121017168)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值