笔记:Faster R-CNN系列以及FPN

R-CNN:

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
注意首先去掉AlexNet的全连接层,则剩下的AlexNet的最后一层经过展平处理为4096维,则2000个候选区域经过AlexNet后为20004096维矩阵(每一行为一个候选区域的特征向量)
在这里插入图片描述
2000
4096的每一行为一个候选区域的特征向量,而409620的每一列表示一种分类器(比如,第一列为猫的分类器,第二列为狗的分类器),得到的200020矩阵(例如,第一行的第一个元素表示第一个候选区域为猫的概率,第一行第二个元素表示第一个候选区域为狗的概率)的每一列表示每个候选区域属于某分类的概率(第一列表示2000个候选区域都属于猫的概率)。对每一类采用非极大值抑制剔除重叠的边界框,保留比较好边界框。
在这里插入图片描述
NMS即非极大值抑制
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

Fast R-CNN

在这里插入图片描述
第二步:是将整幅图输入到网络中,得到相应的特征图,ss算法在原图上生成的候选区域直接映射到特征图中,就可以得到特征矩阵
在这里插入图片描述
在这里插入图片描述
在训练过程中,并不是直接使用ss算法直接提供的候选区域,从中采样一部分进行训练
从2000个候选区域中采集64个候选区域,一部分为正样本(候选框与真实的目标框的IOU大于0.5),一部分为负样本(候选框与真实的目标框的IOU在0.1-0.5)
在这里插入图片描述
RoI Pooling Layer:将候选区域在特征图上对应的特征矩阵(很抽象),将其划分为77共49等份,对每个区域执行最大池化下采样(maxpooling操作),得到77大小的新的特征矩阵
在这里插入图片描述
Fast R-CNN的网络框架:将图像输入的网络中得到特征图,候选区域根据映射关系在特征图上找到特征矩阵,将特征矩阵通过ROI Pooloing Layer统一缩放到7*7的新的特征矩阵,然后再展平处理,经过两个全连接层得到ROI feature vector,再并联两个全连接层,其中一个全连接层用来概率的预测,另一个全连接层用来边界框回归参数的预测
这里的概率经过softmax之后的,满足概率分布
在这里插入图片描述


在这里插入图片描述
损失计算:
交叉熵损失计算:
真实标签的one-hot编码:[0,0,0,…,1,…,0]
预测的softmax概率为[0.1,0.3,…,0.4,…,0.1]
则Loss=-log(0.4)
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

Faster R-CNN

在这里插入图片描述
Faster R-CNN会在预测特征图上利用RPN生成一系列的proposals,再将proposals映射到特征图上,再将映射的特征输入到Fast R-CNN中,得到最终预测结果
在这里插入图片描述
右边是RPN的结构,特征图使用滑动窗口,每滑动到一个位置上就生成一个一维的向量,再通过两个全连接层生成目标概率和回归参数
2k针对的是k个anchor box, 一个anchor生成2个概率(背景和前景的概率),每个anchor生成4个边界框回归参数。
其中256-d表示channel为256:使用ZF网络作为Faster R-CNN的backbone,所生成的特征图的深度维256;若使用VGG16作为Faster R-CNN的backbone,所生成的特征图的深度为512
如何找到滑动窗口的中心点对应的原图上的中心点:
步距=取整(原图的宽度 / 特征图的宽度),在原图上对应的x坐标=步距* 3
步距=取整(原图的宽度 / 特征图的宽度),在原图上对应的y坐标 =步距3,便得到中心点的坐标
在这里插入图片描述
再由一个中心点生成k个anchor,每个anchor中可能包含目标也可能没有包含目标
在这里插入图片描述
0.1为此anchor的前景概率,0.9为此anchor的背景概率
dx和dy是anchor的中心坐标预测的偏移量,dw和dn是anchor的宽度和高度的调整量
给出不同比例、不同尺寸的anchor来预测目标:每个目标的大小、长宽比都不同
在这里插入图片描述
一共9个anchor:
RPN网络的实现:滑动窗口就是使用3
3的卷积核,stride=1,padding=1,则滑动窗口就能把每个点都覆盖到,则能生成feature map的矩阵维度一样的新矩阵;再并联两个11的卷积层来实现类别的预测核(112k)和边界框回归参数的预测(114k)在这里插入图片描述
3
3窗口在原图上的感受野问题:
33窗口在原图上的感受野为228228,为什么能预测256256以及512512的边界框呢?
通过一个小的感受野预测比他大的边界框是有可能的(看到目标的一部分,也可能猜出完整目标)

anchor与候选框的关系:利用RPN生成的边界框回归参数将anchor调整到所需要的候选框
在这里插入图片描述
样本的选取:
一张图片上,RPN会产生上万个anchor,但并不是每一个都会生成RPN网络。从上万个anchor中采样256个anchor(正样本和负样本两部分,比例1:1)
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
原论文中的理解:
在这里插入图片描述
若使用二值交叉熵损失,则每个anchor只预测一个值,是通过sigmoid函数得到的概率(K个参数)
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在Faster R-CNN中,PRN和 Fast R-CNN是一个整体,端到端
在这里插入图片描述
在这里插入图片描述
感受野的介绍:
在这里插入图片描述
在这里插入图片描述
像上面图片中的公式倒推,不过不是把所有的输出带入倒推,仅仅看1*1的区域倒推到输入中的映射大小
在这里插入图片描述

FPN:(特征金字塔网络)

针对Faster R-CNN使用FPN,coco的AP可以提升2.3个点
在这里插入图片描述
图b的例子是Faster R-CNN,对小目标的预测效果并不好
图c的算法和SSD很类似:将图片输入给backbone,在正向传播过程中得到的不同特征图上分别进行预测
图d是FPN结构,与图c对比,不同特征图上的特征进行特征融合,在融合之后的特征图上再进行预测
在这里插入图片描述
不同的特征图都是按2的整数倍选取的:2828,1414,77
1
1的卷积层是来调整backbone上不同特征图的channel,保证调整后的channel相同(保证需要shape相同,即宽、高和channel都相同)
2x up表示2倍上采样(邻近插值算法),调整特征图融合过程中较小的特征图的宽与高,由于不同的特征图都是按2的整数倍选取的,故只要将较小的特征图的宽与高扩大两倍,即保证了较小的特征图的宽与高与较大的特征图的宽与高相同
在这里插入图片描述
后面接了3*3的卷积层会进一步融合,依次得到P2,P3,P4,P5,在P5的提出上进行下采样得到P6
Faster R-CNN会在P2,P3,P4,P5,P6的五个特征图上进行预测(P6只用于RPN部分),而Fast R-CNN会在P2,P3,P4,P5的四个特征图上进行预测

在FPN结构中,首先通过RPN结构在P2,P3,P4,P5,P6的五个特征图预测得到proposals,再将proposals映射到P2,P3,P4,P5上,再通过Fast R-CNN 得到预测结果在这里插入图片描述
在讲Faster R-CNN中,仅仅只有一个特征层,在这一个特征层上生成不同面积、不同比例的anchor
在RPN网络中生成多个预测特征层,在不同的特征层上分别针对不同尺度的目标进行预测.例如:P2是相对较底层的预测特征层,保留底层细节信息,适合预测小型目标。(面积为32*32,比例为1:2, 1:1, 2:1)
RPN与Fast R-CNN权重共享:
P2,P3,P4,P5,P6使用的是同一个RPN模块
P2,P3,P4,P5使用的是同一个Fast R-CNN
在这里插入图片描述
在FPN中,通过RPN得到的一系列proposals,该如何将proposals映射到预测特征层上呢?
这个例子是将proposals映射到P3上进行预测的

  • 1
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值