Faster R-CNN 学习笔记

在这里插入图片描述

图1 Faster R-CNN全网络图

Region Proposal Networks(RPN)

在这里插入图片描述

图2 RPN网络图

上面一条线通过softmax分类anchor获得positive和negative分类,下面一条用于计算对于anchors和bounding box的偏移量,以获得精确的proposal,而最后的proposal层则负责综合postive anchors和对应的的bounding box regression偏移量获得proposals,同时剔除太小和超出边界的proposals。其实整个网络到了Prpposal Layer这里,就完成了相当于目标定位的功能。

不得不提的anchor

anchor的字面意思是锚,就是船停靠在岸上固定船的东西,但是在计算机视觉中,anchor的意思是锚点或锚框。
在这里插入图片描述

图3 anchor图解

就如上图所示,anchor点的定义是:特征谱在原图上的对应点,以anchor点为中心的9种不同大小和纵横比的矩形框称为anchor框。说的通俗一点,我们现在的目标变成了,我现在有一张特征谱,我在特征谱上的每一个点周围框了几个框,然后我用后面的一个网络(具体就是softmax)告诉我这个特征谱还原回去的原图是不是我要识别的一个物体分类,具体是哪个框和它比较接近,然后有多少的偏差,这就是anchor技术的比较通俗的解释。

以下是引自一位知乎专栏大佬对anchor的理解,在这里我摘抄到这里当作笔记看。链接在文末已经给出。
运行作者demo里的generate_anchors.可以得到以下输出:
在这里插入图片描述

图3 anchor程序输出值

其中每行的4个值(x1,y1,x2,y2)表示矩形左上后右下角点坐标。9个矩形共有3种形状,长宽比为{1:1,1:2,2:1}三种,还有三种尺度{128×128,256×256,512×512},当然这里会有疑问,为什么要这样设置,其实Faster R-CNN作者是这样设置的,但是有关长宽比的问题后面会有详细说明。在这里插入图片描述

图4 3种尺度3种长宽比的anchor图(1)

在这里插入图片描述

图5 经过1×1的卷积网络后的工作原理图

这个图是和RPN网络一起看的,在RPN网络最开始经历了分开的两层1×1的卷积之后,就可以看作变成了现在的256d的特征向量,VGGnet会得到512d的特征向量,然后用滑动窗口法,依次遍历这256个特征向量,注意anchor不在conv特征图上,而在原图上,什么意思?就是你现在滑动窗口找的只是原图的原点位置,之后原点位置找到之后,以不同尺度不同长宽比做anchor。然后输入到分类层,分类层输出每一个位置上,9个anchor属于前景和背景的概率。窗口回归层输出每一个位置上,9个anchor对应应该平移缩放的参数。对于每一个位置来说,分类层所256维特征中输出属于前景和背景的概率,窗口回归层从256维特征中输出4个平移缩放的参数。

在这里插入图片描述

图6 3种尺度3种长宽比9种anchor(2)

通俗地解释RPN干了一件什么事儿
RPN实际上就是在原图尺度上,设置了密密麻麻的候选Anchor,然后用CNN网络去判断哪些是有目标的positive anchor,哪些是没目标的negative anchor。然后有目标的anchor到底和真实目标的框的偏差是多少。
在这里插入图片描述

图6 3种尺度3种长宽比9种anchor(3)
## 怎么理解positive和negative 我在看论文的时候一直不太明白分成正的类和负的类是什么意思。后来我明白了,在训练这个网络的时候,我一开始会输入图像和图像中有物体的几个框,但是RPN网络最后要生成很多建议区域,这些建议区域的标签我是需要给出的,这个给出是经过计算算出来的,分类的规则如下:

在这里插入图片描述

也就是说,我选出来anchor了,我会和之前输入的图像的有物体的框进行IOU的计算,通过上述规则的(因为可能存在所有计算都没有IOU>0.7情况,所以要有第一个规则)我们将之定义为正标签,也就是前景(物体)类。**第二个规则,与所有GT包围盒的IOU都小于0.3的anchor我们将之定义为负标签,也就是背景类。**对于既不是正标签也不是负标签的anchor,以及跨越图像边界的anchor我们给予舍弃,因为对训练目标没有任何作用。

在这里插入图片描述
上文说了,**RPN网络的输出是每个anchor认为自己是否含有物体的概率,物体中心点与anchor自身的中心点位置的偏移量,以及相对于anchor宽高的比例。**就比如上图来说,红色框的anchor认为自己有99%的概率是一只小猫,并且给出了世界位置相对于该anchor的偏移量,这样我们将输出解码后就得到是实际猫的位置,更进一步如果他能通过NMS筛选,那么我们最后总的网络输出就会用这个anchor加修正后的框作为猫的定位框。如果通不过,就是说,有更好的anchor比它更能展示猫,比如红色的框其实并没有将猫的尾巴全部包含进来,那么它就没用了。
在这里插入图片描述
在训练的时候,其实需要的anchor的大小和长宽比与待测物体的尺度需要基本一致。如果按上图这样,假设电线杆的长宽比为10:1,但是如果我们还按{1:1,1:2,2:1}这样设置,那么永远找不到正好的框检测出电线杆。因为没有哪个anchor和电线杆的IOU大于0.5。即使某个物体与所有anchor的IoU都不大于0.5的阈值,也会可怜可怜它,给它强行分配一个IoU最大的anchor,即使IoU只有0.3,但是这样,每个物体只能分配一个,而且宽高偏移量还比较大,导致回归不准。

R-CNN,Fast R-CNN,Faster R-CNN的对比

在这里插入图片描述

多任务损失

在这里插入图片描述
Faster R-CNN的损失函数
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

参考博客

Faster R-CNN英文论文翻译笔记
https://blog.csdn.net/a8039974/article/details/82898843?utm_medium=distribute.pc_relevant.none-task-blog-baidujs-2
yi
一文读懂Faster R-CNN
https://zhuanlan.zhihu.com/p/31426458
目标检测Anchor是什么,怎么科学设置?
https://www.jianshu.com/p/b1a83aa76e5d
Faster R-CNN文章详细解读
https://blog.csdn.net/liuxiaoheng1992/article/details/81843363?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-9.nonecase&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-9.nonecase

Faster R-CNN论文笔记——FR
https://blog.csdn.net/qq_17448289/article/details/52871461?utm_medium=distribute.pc_relevant_t0.none-task-blog-BlogCommendFromMachineLearnPai2-1.nonecase&depth_1-utm_source=distribute.pc_relevant_t0.none-task-blog-BlogCommendFromMachineLearnPai2-1.nonecase

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值