目标检测CNN经典网络(三)Fast R-CNN ,Faster R-CNN

继R-CNN与SPP-net之后又出现了Fast R-CNN与Faster R-CNN,比之前的网络有了更快的速度,其准确率也没有降低。并且把端到端的概念引入到目标检测中。

Fast R-CNN

FastR-CNN借鉴SPP-net思想加入ROI感兴趣池化,并将两个任务回归和分类同时进行,进行多任务训练。
在这里插入图片描述

ROI池化

ROI感兴趣池化可以看作SPPpool的简化,下图可以看出,ROI只对感兴趣的区域做一次池化即可。
考虑到感兴趣区域(RoI)尺寸不一,但是输入图中后面FC层的大小是一个统一的固定值,因为ROI池化层的作用类似于SPP-net中的SPP层,即将不同尺寸的RoI feature map池化成一个固定大小的feature map。具体操作:假设经过RoI池化后的固定大小为是一个超参数,因为输入的RoI feature map大小不一样,假设为,需要对这个feature map进行池化来减小尺寸,那么可以计算出池化窗口的尺寸为:h/H,w/W,即用这个计算出的窗口对RoI feature map做max pooling,Pooling对每一个feature map通道都是独立的。

在这里插入图片描述

多任务损失函数

Fast R-CNN将两个任务并行运行到一起,其损失定义如下所示,考虑损失为分类损失和回归损失。
在这里插入图片描述

最终论文给出其实现的性能可以看下表,其将训练时间与测试时间大大缩短,尤其是单图的测试时间大大缩短,这功劳归结于一方面采用了先卷积后
在这里插入图片描述

Faster R-CNN

Fast R-CNN存在的问题:存在瓶颈:选择性搜索,找出所有的候选框,这个也非常耗时。那我们能不能找出一个更加高效的方法来求出这些候选框呢?
解决:加入一个提取边缘的神经网络,也就说找到候选框的工作也交给神经网络来做了。(想较少测试的时间那就把任务交给深度学习,学习出一套参数可以以后一直用。
给这么一个方法起了个名字叫做Region Proposal Network(RPN)。

网络总图

先看下面这张图,它是最终的测试网络。
在这里插入图片描述
通过上面这张图可以看出Faster R-CNN由四个部分组成:
1)卷积层(conv layers),用于提取图片的特征,输入为整张图片,输出为提取出的特征称为feature maps
2)RPN网络(Region Proposal Network),用于推荐候选区域,这个网络是用来代替之前的search selective的。输入为图片为featrue maps,输出为多个候选区域,这里的细节会在后面详细介绍。
3)RoI pooling,和Fast R-CNN一样,将不同大小的输入转换为固定长度的输出,输入输出和Fast R-CNN中RoI pooling一样。
4)分类和回归,这一层的输出是最终目的,输出候选区域所属的类,和候选区域在图像中的精确位置。

那么其实你可以看出来关键的部分在于候选区域的改动,那么我们主要说下候选区域的方法。

RPN网络

首先作者自己设想原图上或者说featuremap上每个位置可能会产生k中可能的区域,下图所示,作者给出的方案具体来说就是每个位置可能会出现三种面积可能,三种长宽表示样式。三种面积分别是128×128,256×256,512×512,每种面积又分成3种长宽比,分别是2:1,1:2,1:1 。呵呵一算是九种!所以它的k是9!
在这里插入图片描述
然后RPN网络是这么干的,先将一幅图片经过CNN网络得到第五个卷积层,然后将第五个卷积层用3*3卷积核卷积得到一个256通道的特征图,之后再分为两路,一路用1*1卷积降维到原尺寸下2*k个通道(这是干啥,这2*k个分别对应是/否为对的候选区域,总共有k个框,所以是2*k个),另一路用1*1的卷积降维到原尺寸下4*k个通道(这个就是左上角坐标,右下角坐标,k种)ok!
注意:这里尺寸没有变哎,因为每个位置都要输出这么个得分情况哎,我们最后确定比较好的中心位置哎还有它的尺寸。
在这里插入图片描述

那么如果RPN一套神经网络,FastR-CNN一套网络好像也不行哦,训练费事哦。那么RPN网络和FastR-CNN是如何组合的是如何权值共享的呢?

Faster R-CNN训练

总结一下Faster R-CNN的训练过程如下所示:
(1)先再imagenet上预训练一个CNN模型,得到一个初始的RPN网络
(2)再另外训练一个imagenet模型CNN2,然后把在步骤1得到的Regionproposals用来训练FastR-CNN模型。
(3)有了一个比较好的FastR-CNN模型也就是步骤2的模型,我们把这个CNN部分固定再去矫正RPN网络,此时CNN部分就用CNN2(把CNN1直接丢掉了!)然后去调参RPN后面那一部分,调好了这时的RPN模型基本可以了。
(4)完事候选区域又变了,回去在调FastR-CNN模型,此时CNN部分不动了,这两个网络已经共享了!我们去调后面的全连接啥的。ok调好了就大功告成。
可以看出训练的时候费事,但是选练好了后都是神经网络,测试时间就大大减少。
在这里插入图片描述

Faster R-CNN的主要贡献是设计了提取候选区域的网络RPN,代替了费时的选择性搜索,使得检测速度大幅提高。
在这里插入图片描述

参考文献

[1]第三十一节,目标检测算法之 Faster R-CNN算法详解
https://www.cnblogs.com/zyly/p/9247863.html
[2]Faster R-CNN文章详细解读
https://blog.csdn.net/liuxiaoheng1992/article/details/81843363
[3]【目标检测】Fast R-CNN论文详解(Fast R-CNN)
https://www.jianshu.com/p/fbbb21e1e390

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值