论文:Fast R-CNN


Fast R-CNN

论文:https://arxiv.org/abs/1504.08083
代码:https://github.com/rbgirshick/fast-rcnn

相关阅读:更多


架构

下图给出了 Fast R-CNN 的架构,整体架构:

  1. 整个图像一组候选区域作为输入。
  2. 对整个图像输入卷积网络输出特征图
  3. 针对每个候选区域,一个 RoI池化层特征图中提取一个固定长度的特征向量。
  4. 每个特征向量送入全连接(FCs)层,最后分成两个输出层:一个生成 softmax 概率估计 / K对象类 + 全方位“背景”类,另一个层输出四个实值编号为K的每个目标类。每4个值的集合对K个类中的一个进行了精细化的边界框位置编码。

在这里插入图片描述


RoI池化层

RoI是将一个矩形窗口转化为一个特征图,每个RoI由一个四元组(r, c, h, w)定义,该元组指定其左上角(r, c)及其高度和宽度(h, w)。RoI最大池化的工作原理是将RoI窗口划分为7 x 7的网格,每个网格内只取一个最大值,这样就将较大的ROI特征图转换为 7 x 7 的特征图。


使用预训练网络初始化

作者用三个预训练ImageNet网络预训练网络初始化一个Fast R-CNN网络,每个网络有5个最大池化层和5~13个conv层。初始化要经历三个变换:

  1. 最后一个最大池化层被一个RoI池化层取代,该层通过设置H和W与网络的第一个完全连接层兼容(例如,VGG16的H = W = 7)来配置。

  2. 网络的最后一个全连接层和softmax(经过1000路ImageNet分类训练)被架构全连接层(softmax对应的全连接层)和softmax取代。

  3. 修改网络以获取两个数据输入图像列表和这些图像中的RoIs列表


微调检测

R-CNN和SPPnet网络训练慢的根本原因在于,每个训练样本(即RoI)来自不同的图像,通过SPP层的反向传播效率非常低。在 Fast RCNN 训练中,对随机梯度下降SGD小批量进行分层采样,首先

  1. N张图像采样
  2. 对每张图像 采样R/N个 RoIs
  3. 同一个图像的RoIs在向前和向后的传递中共享计算和内存

在这里插入图片描述

使N小,减少了小批量计算,比从128幅不同的图像中采样一个RoI(即R- cnn和SPPnet策略)大约快64倍

除了分层采样,微调阶段联合优化softmax分类器和边界框回归器,而不是在三个单独的阶段训练softmax分类器、SVM 和回归器。该过程的组成部分(损失、小批采样策略、通过RoI池化层的反向传播,以及SGD超参数)如下所述。


损失:Multi-task loss

Fast R-CNN有两个输出层(类别和边界框),就有两个损失函数。

分类损失函数: L c l a s s ( p , u ) L_{class}(p, u) Lclass(p,u)

边界框损失函数: L l o c ( t u , v ) = ∑ i ∈ { x , y , w , h } smooth L 1 ( t i u − v i ) smooth L 1 ( x ) = { 0.5 x 2 i f    ∣ x ∣ < 1 ∣ x ∣ − 0.5 otherwise (3) L_{loc}(t^u, v)=\sum _{i∈\{x,y,w,h\}}\text{smooth}_{L_1}(t^u_i− v_i)\\ \text{smooth}_{L_1}(x) =\left\{\begin{array}{l}0.5x^2 & if \ \ |x| < 1 \\ |x| − 0.5 & \text{otherwise} \end{array} \right . \tag 3 Lloc(tu,v)=i{ x,y,w,h}smoothL1(tiuvi)smoothL1(x)={ 0.5x

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值