Fast R-CNN

R-CNN缺点

  • 训练是个multi-stage pipeline(CNN提取特征、通过log loss 微调网络、训练SVMs、bounding-box regression)
  • 训练费时间和空间
  • 目标检测很慢  

SPPnet 缺点

  • 训练是个multi-stage pipeline(CNN提取特征、通过log loss 微调网络、训练SVMs、bounding-box regression)
  • 不同于R-CNN,微调算法不能更新空间金字塔池化层前面的卷积层

Fast R-CNN优点

  • 高的监测质量(准确率+速度)
  • 训练是single-stage,采用一个多任务损失multi-task loss
  • 训练可以更新网络的所有层
  • 不需要将提取的特征写入硬盘中,节省空间

Fast R-CNN算法流程

  1. 任意size图片输入CNN网络,经过若干卷积层与池化层,得到特征图;
  2. 在任意size图片上采用selective search算法提取约2k个候选框;
  3. 根据原图中候选框到特征图映射关系,在特征图中找到每个候选框对应的特征框【深度和特征图一致】,并在RoI池化层中将每个特征框池化到H×W【VGG-16网络是7×7】的size;
  4. 固定H×W【VGG-16网络是7×7】大小的特征框经过全连接层得到固定大小的特征向量;
  5. 第4步所得特征向量经由各自的全连接层【由SVD分解实现】,分别得到两个输出向量:一个是softmax的分类得分,一个是Bounding-box窗口回归;
  6. 利用窗口得分分别对每一类物体进行非极大值抑制剔除重叠候选框,最终得到每个类别中回归修正后的得分最高的窗口。

一些细节说明 

  • RoI pooling layer 其实是 spatial pyramid pooling layer的特例,即只采用一层金字塔等级。
  • RoI pooling 输出的尺寸H*W是个超参数,与RoI(候选区域)的大小无关。H和W的数值根据所用CNN网络的第一层全连接层确定,(如VGG16采用H=W=7)
  • bounding box regression输出是四元元组(r,c,h,w),其中(r,c)为左上角点坐标,h,w为长和宽,共输出4*K个数值(K为类别数)
  • softmax输出K+1个概率值(K个类别+背景)

用预训练好网络初始化Fast R-CNN(迁移学习)方法

  • 用RoI pooling layer代替原网络最后一层最大池化层

  • 原网络最后一层全连接层和softmax层被上述的softmax和BB Regression代替

  • 将原网络调整为接受两种输入:batch个图片以及这些图片的RoIs

训练Fast R-CNN其他细节说明

  • multi-task loss。 训练过程是单管道的,因为将分类loss和定位loss合并在一起训练了。其中定位loss采用smooth L1,而不是R-CNN中的L2。每个RoI的第一个输出是离散概率分布为, 第二个输出是bb regression offsets(对每一个k类别)。每个 RoI的两个label分别是真实类别u和bb regression目标值v。
  • 训练采用minibatch sampling,batch size=128(每次从N=2个图片中构建,每个图片提取64个RoI)。其中 RoIs中的25%作为正样本,标签为u>=1(要检测的物体,IoU>=0.5),RoIs的剩下75%作为负样本,标签为u=0(背景,IoU属于[0.1,0.5),),这里IoU属于超参数。注:在图像分类中,当我们说batch_size=32时,是指的是32个图片,在Fast R-CNN中并不是这样,因为一个图片含有很多RoIs,每个batch使用的图片非常少(内存限制),所以有时候你会看到Fast R-CNN训练时直接从一个图片中构建batch,这实现起来更容易一些。

 

 

和rcnn的不同之处

  • rcnn是在原始input图片上采用selective search搜索约2千个候选区域 ,然后对每一个候选区域经过warp成相同大小后送入CNN网络中提取特征。即需要经过约2k个CNN处理
  • fast-rcnns也是在原始input图片上采用selective search搜索约2千个候选区域,然后将原始图片和候选区域的位置信息一起输入CNN中。但是注意:只对原始图片采用CNN网络处理,得到feature map,然后根据input图片和feature map之间的线性映射关系,找到候选区域在feature map上对应的特征框(示意图中的RoIs),然后对特征框进行RoI Pooling处理。即只经过一次CNN处理

参考资料:

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值