Faster-RCNN笔记

Fast RNN网络缺点:

存在瓶颈:选择性搜索(SS算法),找出所有的候选框十分耗时
那我们能不能找出一个更加高效的方法来求出这些候选框呢?

Region Proposal Network(RPN)网络
主要就是代替 在传统的目标检测算法中所需要用到的Proposal提取的过程(该过程一直是一个非常耗时的过程),进行了进一步的优化和改进。也能够进一步提升算法的性能,准确度也得到了进一步的加强

Faster-RCNN是RBG团队在2015年的又一力作。简单网络目标检测速度达到17fps,复杂网络达到5fps。
Fast-RCNN已经很优秀了,但是还存在一个比较大的问题,就是selective search。selective search算法只能运行在CPU上,限制了速度。
Faster-RCNN加入了一个专门生成候选区域的神经网络,也就是说找到候选框的工作也交给了神经网络来做了。做这个任务的网络叫做Region Proposal Network(RPN)Faster-RCNN可以简单地看做“区域生成网络+fast-RCNN“的系统,用区域生成网络代替fast-RCNN中的Selective Search方法
在这里插入图片描述
在卷积层采用了共享卷积的操作
Proposal提取的过程采用了一个RPN网络
最终归候选区域的类别和框的位置同样采用神经网络来完成预测,可以看到整个过程是一个端到端的目标检测模型
在这里插入图片描述

Region Proposal Network(RPN)

RPN是下图中间红色框内的部分,分为回归任务和分类任务。其输入是通过卷积网络提取到的图片特征图。
分类任务用来找出候选区域里面有没有目标,只有/有目标和无目标两个类别
回归任务对候选框作调节。
RPN得到的候选框会继续往下传,直到网络的输出,也是回归任务和分类任务
分类任务负责判断框中具体是什么物体
回归任务是对RPN得到的候选框作进一步的调节,主要是让框框得更加准确。
在这里插入图片描述
具体看下RPN层
其输入是通过卷积网络提取到的图片特征图。再做一次卷积(3x3,步长为1,same padding),生成256个特征图。
特征图上的每一个点可以映射到原来的图片上
每一个框有2个概率值,分别是目标(前景)和非目标(背景);有4个值,中心点坐标和宽、高

背景和前景的区分(二分类的问题),物体类别的判定则通过候选的子网络。还会完成候选目标的初步定位的过程,在后续的网络中会对RPN网络中得到的粗略的位置进行进一步的细化。
也有ROIPlooing层,针对于RPN网络得到的Proposal进行抠图和固定尺寸的输出。

主要的两个任务,前景和背景的分离(粗分类)以及框的位置的初回归(粗定位)
粗分类是指在RPN网络中仅仅对proposal提取出来的候选区域是属于背景还是前景这个二分类问题来进行判定,在后续的网络中,我们会对候选区域所属的具体的类别来进行判定,因此在RPN网络中,我们的分类为粗分类。
粗定位是指在RPN网络中同样也会对框的位置进行一次回归,那这里的回归实际上也是一个粗略的回归,是相对于后续的网络。RPN网络代替了传统的proposal(也就是候选框提取的过程),这个过程是通过anchor机制来实现,anchor机制具体是什么样子的,可以参考下图
在这里插入图片描述
通过一个滑动窗口,通常是一个 3 ∗ 3 3*3 33的窗口。
通过一个 3 ∗ 3 3*3 33的卷积核来进行卷积操作 ,得到固定长度的特征向量
3 ∗ 3 ∗ 256 3*3*256 33256,就
每个 3 ∗ 3 3*3 33的区域都能得到一个256维的特征向量,接下来分别用两个FC层来对我们的类别和框的位置进行(粗)分类和(粗)回归。
anchor是指什么,是指我们对于每一个滑动窗口,它的中心点,我们都会作为1个anchor,实际上我们在采用滑动窗口的时候会从左到右,从上到下依次来进行滑动。
对输入到RPN网络中的特征图,每1个点都会作为1个滑动窗口的中心点,并且这个点也被称为1个anchor
接下来,针对于这样的一个anchor来分别在原始图像中找到不同尺寸的窗口,不同尺寸的窗口进过Pooling之后就能够映射到一个 3 ∗ 3 3*3 33的区域上,换句话说,我们通过anchor来找到原始的图像

anchor有点像滑动窗口,有不同的形状,是固定的。需要通过回归任务进行调节,使其尽可能框的准确。
特征图上的每一个点映射到原始图片,以原始图片上这点为中心生成9个anchor
最小的框128x128,大一点的是256x256,最大的是512x512

对特征图进行一个操作,出来一些候选框

RPN层 的输入是任意大小的一张特征图
当前一个框,以及该框是前景(或者背景)的得分
在特征图上进行了1个小的滑动窗口,用这个窗口再做1次 3 ∗ 3 3*3 33的卷积
然后 当前的一个结果

每一个点 的感受野
将特征图上每一个点映射回原始图片上,一个点对应的是一个区域(大小取决于下采样了多少,假设相差16倍)
k个anchor boxes,对一个点产生k个框

每个点都有感受野,每个点都能映射回原始图像中,就能把每个框覆盖到原始图像中的任何位置,产生20000个框,每个框都有不同大小的比例
把产生的,每1个框输入到分类层,和回归层
是2分类,所以是2k个输出值

平移的不变性

在这里插入图片描述
RPN计算流程
1.最后一个卷积层输出的特征图再进行一次卷积操作得到新的特征图。
2.新的特征图的平面上有40×60共2400个点,每个点都可以对应到原始图片上,得到9个anchor,所以一共可以得到40×60×9大约20000个候选区域。
3.计算所有候选区域的scores。
4.把所有超出图片的候选区域都限制在图片区域内,选scores最大的前12000个候选区域。
5.剩余的区域中有些候选区域跟其他候选区域有大量重叠,我们可以基于第4步计算的scores,采用非极大值抑制(NMS)。我们固定NMS的loU阈值为0.7。然后再选出scores最大的前2000个候选区域。这2000个候选区域如果与某个标定区域重叠比例大于0.7,记为正样本,如果与任意一个标定区域重叠比例都小于0.3,记为负样本。其余区域不作为样本。(正样本指的是候选框内有我们需要检测的目标;负样本指的是候选框内没有我们需要检测的目标,是背景)
6.在训练RPN层分类回归任务时,我们会随机地抽取256个区域来训练,正负候选区域比例为1:1,如果正样本数小于128,用负样本填充。
7.训练最后输出的分类回归任务时,我们随机抽取64个与真实标注框loU≥0.5的区域作为前景,256-64个loU<0.5且≥0.1的区域作为背景来训练。
在这里插入图片描述

Faster-RCNN Loss讲解

代价函数包含4个部分:RPN中分类,回归任务;最后输出的分类,回归任务。

Faster-RCNN-RPN loss定义

RPN loss的定义和最后输出层的loss的定义是差不多的
通过候选区域和真实标注之间的IoU来判断 anchor到底框到目标没有,框到为正;没有为负
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
anchor box按照规则生成的,输入RPN网络的特征图中的每个点都会生成k个
真实标注框就是训练集中我们人工标注画的框,真实标注和anchor box肯定是有差距的
预测框就是RPN网络输出位置坐标的预测值
开始训练的时候,预测框里面初始化的是随机值(开始是乱预测的),在训练的过程中让预测框变得越来越准确了(让 t x t_x tx t x ∗ t_x^* tx t y t_y ty t y ∗ t_y^* ty t w t_w tw t w ∗ t_w^* tw t h t_h th t h ∗ t_h^* th越来越接近;也就是让 x x x x ∗ x^* x y y y y ∗ y^* y w w w w ∗ w^* w h h h h ∗ h^* h越来越接近)

Faster-RCNN输出层loss

输出层分类loss使用的是softmax交叉熵
输出层回归loss跟RPN层的回归loss一样的

Faster-RCNN训练流程

第一步:用lmageNet模型初始化,独立训练一个RPN网络;第二步:仍然用lmageNet模型初始化,但是使用上一步RPN网络产生的proposal作为输入,训练一个Fast-RCNN网络。
第三步:使用第二步的Fast-RCNN网络参数初始化一个新的RPN2网络(指的就是1个新的RPN网络),但是把RPN2、Fast-RCNN共享的那些卷积层的learning rate设置为0,也就是不更新,仅仅更新RPN2特有的那些网络层,重新训练。
第四步:仍然固定RPN2、Fast-RCNN共享的那些网络层,把Fast-RCNN特有的网络层也加入进来,形成一个统一的网络,继续训练,fine tune Fast-RCNN特有的网络层。

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值