Faster-Rcnn个人学习笔记
笔记内容:
主要是关于论文的概述以及文章的主要思路,阅读前一定要自己进行全文的阅读(个人认为是借鉴作用),另外因为个人水平问题可能写的不够完善,之后会进行陆续的补充。
笔记链接:个人Faster-RCNN笔记链接
另外有个宝藏Up对于初入目标检测的人来说,极力推荐。
Up主页:宝藏UP
文章内容:
05.Faster-RCNN
📄论文题目
Faster R-CNN: Towards Real-Time Object Detection
with Region Proposal Networks
👨💻作者
Shaoqing Ren(任少卿):提出适用于物体检测的高效框架Faster RCNN和图像识别算法ResNet
Kaiming He(何恺明):开发了深度残余网络(ResNets)
❓四个问题
❔要解决什么问题?
Faster-RCNN的提出是为了解决Proposel Region生成计算耗费时间成本高的问题,因为当时的检测算法中获得proppsel的时间与目标检测网络所花费的时间相当,而在目标检测网络的改进已经遇到瓶颈。因此,对于Proposel region的处理成为了一个新的方向。
❔使用什么方法解决问题?
引进RPN网络,共享权值(使得时间消费减少,近乎0成本)
❔实际效果如何?
各个mAP等均有提升并且检测速度大有提升。
❔还存在什么问题?
RPN网络因为是刚刚提出,还有所提升空间(加入更多机制提高检测精度与检测速度等)
本身Faster-RcnN检测速度相较于之前的检测网络速度更加迅速,所以可以考虑更多方法复杂化检测网络,进行更多的提升
✨论文概述
🔸1.Abstract
由于当时先进的检测方法(SPP,Fast-rcnn等)采用Region Proposal减少了检测网络的运行时间,但是也暴露了Region Proposal计算瓶颈问题。由此引入了一个RPN网络与检测网络共享卷积特征,使得Region Proposal的生成成本近乎为零!
RPN网络:RPN网络是一个全卷积的网络,可以同时预测目标的边界与得分。RPN网络通过端到端的训练来生成Region Proposal。
全卷积网络(FCN): FCN与CNN的区别在把于CNN最后的全连接层换成卷积层。
端到端的训练: 整个训练的流程并不进行人为的问题划分,而是完全交给深度学习模型直接学习从原始数据到期望输出的映射。
Region Proposal(候选区域): 在图像中预先找到检测目标可能出现的位置,通过利用图像中的纹理、边缘及颜色等信息,保证在选取较少的窗口(几百上千个)的情况下保持较高的Recall(召回率)。
🔹2.Introduction
Fast R-CNN使用的卷积(conv)特征映射,同样可以用于候选区域生成。在这些卷积特征增加额外的两个卷积层构建RPN网络,第一层每个卷积映射位置编码为一个短的(例如256D)特征向量,第二个卷积层在每个卷积映射位置输出这个位置上多种尺度与长宽比的K个候选区域的目标得分与回归边界(K的典型值)。
为了统一RPN与Fast RCNN目标检测网络设计了一个训练方案:保持Proposals 固定,交替微调Region Proposal 与目标检测任务(此方案很快收敛,最后形成让两个任务共享卷积特征的标准网络)。
Faster RCNN算法流程:
将图像输入网络获得相应的特征图。
使用RPN网络结构生成候选框,将RPN生成框投影到特征图上获得相应的特征矩阵。
将每个特征矩阵通过ROI pooling 层缩放到7*7大小的特征图,接着将特征图展平通过一系列的全连接层得到预测结果。
ROI pooling(不限制输入图像尺寸):
ROI Pooling 过程:输入 feature map -> 定位region proposal的投影 ->划分2*2个Sections -> max pooling
🔸3.Relater work
OverFeat:训练全连接层(FC),预测目标(假定目标只有一个)定位任务的box坐标。
MultiBox:从最后一个FC层同时预测多个(800)boxes的网络中生成Region Proposal。
🔹4.Region Proposal Networks
RPN网络可以接受任意大小的图像作为输入,输出目标的矩形候选框(Region Proposal)的集合,每个候选框均有一个目标得分。
为生成Region Proposal:使用滑动窗口在Conv feature map上滑动,生成一个一维的向量(256-d大小)。再通过两个1*1全卷积层(cls layer 和 reg layer)输出目标分类的概率与边界框回归参)。(细节如下图)
感受野计算样例:
(1)Translation-Invarian Anchors: Faster-RCNN中的Anchors由三种尺度(128128,256256,512512)及三种比例(1:1,1:2,2:1),所以每个位置在原图上有9个anchor box。对于一张1000x600x3的图像,大约有60x40x9(20k)个anchor(6040为特征图大小),忽略跨越边界的anchor以后,剩下约6k个anchor。对于RPN生成的候选框之间存在大量重叠,基于候选框的cls得分,采用非极大值抑制,IoU设为0.7,这样每张图片只剩2k个候选框。
(2)A Loss Function for Learning Region Proposals:
(3)样本问题:正样本定义为最高IOU的anchor或者anchor的IOU大于0.7,负样本定义为IOU小于0.3的anchor。另外为避免损失函数偏向负样本,随机在一个图像中采样256个anchor,计算mini-batch的损失函数(正负样本anchor的比例是1:1),如果一个图像中的正样本数小于128,我们就用负样本填补这个mini-batch。
(4)Sharing Convolutional Features for Region Proposal and Object Detection:
(a)直接采用RPN Loss + Fast RCNN Loss的联合训练方法。
(b)原论文提出分别训练RPN以及Fast RCNN的方法:
ImageNet:是一个计算机视觉系统识别项目, 是目前世界上图像识别最大的数据库。
🔸5.实验
RPN共享卷积特征,候选区域较少并且减少了Proposal的FC消耗。
cls层得分的mAP值高的主要原因,reg层更有利于生成高品质的候选区域。
以下是一些实验结果:
🔹6.Conclusion
为高效准确的生成候选区域提出了RPN网络,使得基于深度学习的目标检测系统学习到RPN改善了候选区域的质量,进而改进了整个目标检测系统的性能。
👀补充
FasterRcnn框架图:
附录
推荐B站Up:https://space.bilibili.com/18161609?spm_id_from=333.788.b_765f7570696e666f.2