目标检测学习笔记(二)R-CNN / fast R-CNN / faster R-CNN

参考视频: (全)最好的目标检测原理与实践课程
参考目录: 计算机视觉应用实战-网易云课堂
参考文章:



这一些系列的工作都是Ross B.Girshick(RBG)完成的,他博士后毕业于加州大学伯克利分校,在微软研究院做了一-年研究员,现在是一名Facebook AI实验室的研究员。他不仅学术能力强,工程能力也是一流。
在这里插入图片描述

R-CNN

RCNN(Regions with CNN features)是RBG在2014年提出的一-种目标检测算法,RCNN是将CNN方法应用到目标检测问题上的一个里程碑,借助CNN良好的特征提取和分类性能,通过RegionProposal方法实现目标检测。
前面我们提到的滑动窗口法可以得到目标所在的区域,但是会产生大量的计算。除了滑动窗口法之外还有另外–类基于区域(Region Proposal)的方法,selective search(简称ss)就是其中之一。

selective search

step1:计算区域集R里每个相邻区域的相似度S={s1,2…}
While S≠0:

  • step2:找出相似度最高的两个区域,将其合并为新集Rt,添加进R
  • step3:从S中移除所有与step2中有关的子集
  • step4:重新计算新集Rt与所有子集的相似度

这里的相似度主要是考虑颜色,纹理,尺寸,交叠四个方面
在这里插入图片描述

RCNN算法整体流程

在这里插入图片描述
如上图:

  • 生成2K个候选区域
  • 把每个候选区域缩放成统一大小的图片
  • 把2k张图片放入ConvNet中进行提取特征,此处的网络可以任意选择
  • 提取特征之后做两件事:
    1.回归(Bbox reg),微调SS算法生成的候选区域的大小和位置;
    2.分类(SVMs)

算法流程1
选择一个分类模型(比如AlexNet,VGGNet)等。
在这里插入图片描述
算法流程2
1.去掉最后一一个全连接层。
2.将分类数从1000改为(N+1),其中1是背景。对于VOC,N=20;对于ILSVRC2013,N=200。
3.对该模型做微调(fine-tuning)。(主要目的是优化卷积层和池化层的参数)
在这里插入图片描述
算法流程3
论文中用到的网络pool5后面的一层是fc6全连接层。
对每一个候选区域进行特征提取:Resize区域大小,然后做一次前向运算,将第五个池化层的输出(也就是候选框提取到的特征)保存到硬盘。
在这里插入图片描述

算法流程4
训练阶段:使用pool5输出的图像特征训练SVM分类器(二分类)来判断这个候选框里面的物体类别。
测试阶段:每个类别对应一个SVM,判断是不是属于这个类别。下图是狗分类的SVM:
在这里插入图片描述
算法流程5
训练阶段:使用pool5输出的图像特征训练一个回归器(dx,dy,dw,dh)。
dx代表水平平移,dy代表竖直平移,dw代表宽度缩放,dh代表高度缩放测试阶段:使用回归器调整候选框位置。
在这里插入图片描述
R-CNN和OverFeat检测系统在ILSVRC2013的200分类检测数据集上对比。R-CNN表现更加卓越,mAP达到31.4%,大大超过了OverFeat的24.3%的表现。


SPP-Net

RCNN的进化中SPP Net的思想对其贡献很大,这里也简单介绍一下SPP-Net。
SPP-Net的作者是何凯明。R-CNN的最大瓶颈是2k个候选区域都要经过一次CNN,速度非常慢。SPP-net最大的改进是只需要将原图做一-次卷积操作,就可以得到每个候选区域的特征。
在这里插入图片描述
特征映射
对卷积层可视化发现:输入图片的某个位置的特征反应在特征图上也是在相同位置。
我们将ss算法提供的2000个候选区域的位置记录下来,通过比例映射到conv5输出的feature map.上,提取出候选区域的特征图m,然后将m送入到金字塔池化层中进行计算。
在这里插入图片描述
金字塔池化层(Spatial Pyramid Pooling)
作用:把不同大小的特征图变成相同大小的数据

在这里插入图片描述
SPP-Net效果:SPP-Net的图像检测速度大约比RCNN提升了100倍。

Fast -R-CNN

继2014年的RCNN之后,RBG借鉴了SPP-Net的设计思想,在15年推出了Fast RCNN。
在这里插入图片描述

ROI Pooling(Region of Interest Pooling):

roi_pooling层其实是SPP-Net中金字塔池化层的一种简单化的形式,roi pooling层只使用一-种固定输出大小的max-pooling。
将每个候选区域均匀分成MxN块,对每块进行max-pooling。将特征图上大小不一的候选区域转变为大小统–的数据,送入下一层。
在这里插入图片描述
Fast-RCNN把bbox regression放进了神经网络内部,与region分类和并成为了一-个multi-
task模型,实际实验也证明,这两个任务能够共享卷积特征,并相互促进。这个结构的优化极大提升了模型的训练和预测速度,也为后来的Faster-RCNN做下了铺垫。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

Faster -R-CNN

Faster-RCNN是RBG团队在2015年的又一力作。简单网络目标检测速度达到17fps,复杂网络达到5fps。
Fast-RCNN已经很优秀了,但是还存在一个比较大的问题,就是selective search。
Faster-RCNN加入了一一个专[生成候选区域的神经网络,也就是说找到候选框的工作也交给了神经网络来做了。做这个任务的网络叫做Region Proposal Network(RPN)
Faster-RCNN可以简单地看做“区域生成网络+fast-RCNN"的系统,用区域生成网络代替fast-RCNN中的Selective Search方法
在这里插入图片描述

Faster-RCNN结构

在这里插入图片描述
其中,RPN部分:
在feature map上滑动窗口,建一个神经网络用于物体分类+框位置的回归,其中分类为“目标”和“背景”两类。滑动窗口的位置提供了物体的大体位置信息
, 框的回归提供了框更精确的位置。

在这里插入图片描述

RPN计算流程

在这里插入图片描述

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

Faster-RCNN Loss

Faster-RCNN-RPN loss定义:
在这里插入图片描述
在这里插入图片描述
Faster-RCNN输出层loss
输出层分类loss使用的是softmax交叉熵
输出层回归loss跟RPN层的回归loss-样的

Faster-RCNN 训练流程和结果分析

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

在这里插入图片描述
在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Shine.Zhang

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值