系列文章目录

目标检测之RCNN:
OD-Model【1】:R-CNN
目标检测之Fast RCNN:
OD-Model【2】:Fast R-CNN
目标检测之Faster RCNN:
OD-Model【3】:Faster R-CNN


文章目录

  • 系列文章目录
  • 前言
  • 1. Abstract & Introduction
    • 1.1. Abstract
    • 1.2. Introduction
      • 1.2.1. R-CNN and SPPnet
      • 1.2.2. Contributions
  • 2. Fast R-CNN architecture and training
    • 2.1. Algorithm process
    • 2.2. Architecture
      • 2.2.1. Calculating image features
      • 2.2.2. Mini-batch sampling
      • 2.2.3. The RoI pooling layer
      • 2.2.4. Classifier
      • 2.2.5. Bounding box regression
      • 2.2.5. Multi-task loss
  • 总结

前言

本文主要对论文进行解读,并解释有关Fast RCNN框架的部分

原论文链接:
Fast R-CNN


1. Abstract & Introduction

1.1. Abstract

本文提出了一种快速的基于区域的卷积网络方法(Fast R-CNN)用于目标检测。Fast R-CNN建立在以前使用的深卷积网络有效地分类目标的成果上。相比于之前的研究工作,Fast R-CNN采用了多项创新提高了训练和测试速度,同时也提高了检测准确度。

1.2. Introduction

复杂性的产生是因为检测需要目标的精确定位,这就导致两个主要的难点。首先,必须处理大量候选目标位置(通常称为“proposals”)。 第二,这些候选框仅提供粗略定位,其必须被精细化以实现精确定位。 这些问题的解决方案经常会影响速度、准确性或简洁性。

在本文中,我们简化了最先进的基于卷积网络的目标检测器的训练过程。我们提出一个单阶段训练算法,联合学习候选框分类和修正他们的空间位置。

1.2.1. R-CNN and SPPnet

基于区域的卷积网络方法(RCNN)通过使用深度卷积网络来分类目标候选框,获得了很高的目标检测精度。然而,R-CNN具有明显的缺点:

  1. 训练过程是多级pipeline。R-CNN首先使用目标候选框对卷积神经网络使用log损失进行fine-tunes。然后,它将卷积神经网络得到的特征送入SVM。这些SVM作为目标检测器,替代通过fine-tunes学习的softmax分类器。在第三个训练阶段,学习bounding-box回归器。
  2. 训练在时间和空间上是的开销很大。对于SVM和bounding-box回归训练,从每个图像中的每个目标候选框提取特征,并写入磁盘。对于VOC07 trainval上的5k个图像,使用如VGG16非常深的网络时,这个过程在单个GPU上需要2.5天。这些特征需要数百GB的存储空间。
  3. 目标检测速度很慢。在测试时,从每个测试图像中的每个目标候选框提取特征。用VGG16网络检测目标时,每个图像需要47秒(在GPU上)。

R-CNN很慢是因为它为每个目标候选框进行卷积神经网络前向传递,而没有共享计算。SPPnet网络[11]提出通过共享计算加速R-CNN。SPPnet计算整个输入图像的卷积特征图,然后使用从共享特征图提取的特征向量来对每个候选框进行分类。通过最大池化将候选框内的特征图转化为固定大小的输出(例如6×6)来提取针对候选框的特征。多输出尺寸被池化,然后连接成空间金字塔池。SPPnet在测试时将R-CNN加速10到100倍。由于更快的候选框特征提取,训练时间也减少了3倍。

SPP网络也有显著的缺点。像R-CNN一样,训练过程是一个多级pipeline,涉及提取特征、使用log损失对网络进行fine-tuning、训练SVM分类器以及最后拟合检测框回归。特征也要写入磁盘。但与R-CNN不同,fine-tuning算法不能更新在空间金字塔池之前的卷积层。不出所料,这种局限性(固定的卷积层)限制了深层网络的精度。

1.2.2. Contributions

本文提出一种新的训练算法,修正了R-CNN和SPPnet的缺点,同时提高了速度和准确性。因为它能比较快地进行训练和测试,我们称之为Fast R-CNN。Fast RCNN方法有以下几个优点:

  1. 比R-CNN和SPPnet具有更高的目标检测精度(mAP)
  2. 训练是使用多任务损失的单阶段训练
  3. 训练可以更新所有网络层参数
  4. 不需要磁盘空间缓存特征

2. Fast R-CNN architecture and training

2.1. Algorithm process

Fast R-CNN算法流程可分为3个步骤:

  • 一张图像生成1000~2000个候选区域(使用Selective Search方法)
  • 将图像输入网络得到相应的特征图,将SS算法生成的候选框投影到特征图上获得相应的特征矩阵
  • 将每个特征矩阵通过ROI(Region of Interest) pooling层缩放到7 x 7 大小的特征图,接着将特征图展平通过一系列全连接层得到预测结果

2.2. Architecture

2.2.1. Calculating image features

一次性计算整张图像特征

  • R-CNN依次将候选框区域输入卷积神经网络得到特征

    • 得到SS算法得到2000个候选框,就需要进行2000次正向传播

      • 存在大量冗余
      • 重叠部分计算一次即可
  • Fast-RCNN将整张图像送入网络,紧接着从特征图像上提取相应的候选区域。这些候选区域的特征不需要再重复计算

    • 参考SPPNet
    • 从每个候选区域,通过原图与特征图的映射关系,在特征图上获取特征矩阵
      • 避免候选区域的重复计算
      • 实际上就是把RCNN的第一步和第二部的一部分融合了
      • 先计算feature map,再从feature map中选,节省空间

2.2.2. Mini-batch sampling

训练数据的采样

  • 正样本
    候选框中确实存在,所需检测的目标的样本
  • 负样本
    背景,里面没有我们想要检测的目标
  • 分类原因
    假如此时训练一个猫狗分类器,猫的样本数量远大于狗的,即数据不平衡时,网络在预测的过程中就会更偏向于猫,但这是不对的。更极端点,如果数据集中只有猫,预测的结果将明显有误。

    • 如果网络中训练的只有正样本,那么网络就会有很大的概率,认为我们的候选区域是我们所需要检测的目标,即使框中只是一个背景,它也会认为那个是我们需要检测的目标
    • 可以理解为,因为样本的不平均,导致一些不是待分类的目标的特征,被网络误认为是该目标的特征而进行训练

在微调期间,每个SGD的小批量由N=2个图像构成,均匀地随机选择(如通常的做法,我们实际上迭代数据集的排列)。 我们使用大小为R=128的小批量,对于每张图片,从2000个候选框中,采集64个候选区域(RoI)。只要候选框与真值的目标边界框的IoU大于0.5,就认为该候选框为正样本。当然,并不是使用所有的正样本,而是从正样本中随机采样一部分。这些RoI只包括用前景对象类标记的样本,即 u≥1u\ge 1u≥1。剩余的RoI从候选框中随机采样,该候选框与检测框真值的最大IoU在区间[0.1, 0.5]。这些是背景样本,即负样本,并用u=0标记。阈值的下届设置为0.1的原因,是获取和真实bounding box交并比至少为0.1的RoI负样本,即和真实目标有一定的重叠,可以让模型学习较难的负样本。

2.2.3. The RoI pooling layer


获得训练样本后,将用于训练样本的候选框通过RoI pooling层,缩放到统一的尺寸

举例来说,简化一张图片的特征矩阵后,如下图所示:

将每一张图片划分成 7 x 7 = 49 等份,对每一等分的像素块做 max pooling,得到一个7 x 7大小的特征矩阵(此时忽略了深度channel),所有的channel都做同样的操作。这样做的好处是,不限制输入图像的尺寸。

2.2.4. Classifier

输出N+1个类别的概率(N为检测目标的种类,1为背景,共N+1个节点

将一张图片输入到CNN网络中,得到一个feature map,根据映射关系,可以找到每一个框对应的特征矩阵,将特征矩阵通过RoI pooling层缩放到一个指定的尺寸。之后,将矩阵做flatten处理,并通过两个全连接层后得到RoI feature vector,在该向量的基础上,并联两个全连接层。第一个通道用于目标概率的预测。

此时,通过softmax进行处理,输出对应目标的概率(且输出的值满足概率分布,和为1)

2.2.5. Bounding box regression

输出对应N+1个类别的候选边界框回归参数 (dx,dy,dw,dh)(d_x, d_y, d_w, d_h)(dx​,dy​,dw​,dh​),共 (N+1) x 4个节点


注意,每个类别都有4个参数:目标建议框的中心点的x偏移量、y偏移量,边界框高度的缩放因子、宽度缩放因子。通过这4个参数,可以使用如下公式,得到对应的边界框:

2.2.5. Multi-task loss

  • ppp 是分类器预测的softmax概率分布:p=(p0,...,pk)p = (p_0, ..., p_k)p=(p0​,...,pk​)
  • uuu 对应目标真实类别标签

    • pup_upu​ 即分类器预测当前候选区域为为类别uuu的概率
    • Cross Entropy Loss交叉熵损失
      • 针对多分类问题(softmax输出,所有输出概率和为1)
      • 针对二分类问题(sigmoid输出,每个输出节点之间互不相干)
      • oi∗o_i^*oi∗​ 只有在正确的标签位置为1,其他位置为0(one-hot编码)
        • 所以此时H=−1×log(u)H = -1 \times log(u)H=−1×log(u) ,即对应的分类损失
  • tut^utu 对应边界框回归器预测的对应类别uuu的回归参数(txu,tyu,twu,thu)(t_x^u, t_y^u, t_w^u, t_h^u)(txu​,tyu​,twu​,thu​)
  • vvv 对应真实目标的边界框回归参数(vx,vy,vw,vh)(v_x, v_y, v_w, v_h)(vx​,vy​,vw​,vh​)

    • [u≥1][u \ge 1][u≥1]是艾弗森括号

      • 如果括号内的条件满足,则该值为1,不满足则为0
      • u是待检测的目标的真实标签
        • u≥1u \ge 1u≥1 表示候选区域属于所需检测的某一个类别,对应正样本,采取边界框回归损失
        • u<1u < 1u<1 表示候选区域是背景,即负样本,不存在边界框回归损失
    • 有关vvv的计算

      • vx=(Gx−Px)/Pwv_x = (G_x - P_x) / P_wvx​=(Gx​−Px​)/Pw​
      • vy=(Gy−Py)/Phv_y = (G_y - P_y) / P_hvy​=(Gy​−Py​)/Ph​
      • vw=ln(Gw^/Pw)v_w = ln(\hat{G_w} / P_w)vw​=ln(Gw​^​/Pw​)
      • vh=ln(Gh^/Ph)v_h = ln(\hat{G_h} / P_h)vh​=ln(Gh​^​/Ph​)

总结

本文提出Fast R-CNN,一个对R-CNN和SPPnet更新的简洁、快速版本。除了报告目前最先进的检测结果之外,我们还提供了详细的实验,希望提供新的思路。特别值得注意的是,稀疏目标候选区域似乎提高了检测器的质量。过去这个问题代价太大(在时间上)而一直无法深入探索,但Fast R-CNN使其变得可能。当然,可能存在未发现的技术,使得密集框能够达到与稀疏候选框类似的效果。如果这样的方法被开发出来,则可以帮助进一步加速目标检测。

视频资料
翻译参考

OD-Model【2】:Fast R-CNN相关推荐

  1. CSI笔记【5】:Widar2.0: Passive Human Tracking with a Single Wi-Fi Link论文阅读

    CSI笔记[5]:Widar2.0: Passive Human Tracking with a Single Wi-Fi Link论文笔记 前言 Abstract 1 INTRODUCTION 2 ...

  2. CSI笔记【6】:Guaranteeing spoof-resilient multi-robot networks论文阅读

    CSI笔记[6]:Guaranteeing spoof-resilient multi-robot networks论文阅读 Abstract 1 Introduction 1.1 Contribut ...

  3. CV-Model【6】:Vision Transformer

    系列文章目录 Transformer 系列网络(一): CV-Model[5]:Transformer Transformer 系列网络(二): CV-Model[6]:Vision Transfor ...

  4. CV-Model【5】:Transformer

    系列文章目录 Transformer 系列网络(一): CV-Model[5]:Transformer Transformer 系列网络(二): CV-Model[6]:Vision Transfor ...

  5. SS-Model【6】:U2-Net

    系列文章目录 U-Net语义分割系列(一): SS-Model[5]:U-Net U-Net语义分割系列(二): SS-Model[6]:U2-Net 文章目录 系列文章目录 前言 1. Abstra ...

  6. 【视频】Python和R语言使用指数加权平均(EWMA),ARIMA自回归移动平均模型预测时间序列...

    原文链接:http://tecdat.cn/?p=21773 时间序列(从现在起称为TS)被认为是数据科学领域中鲜为人知的技能之一(点击文末"阅读原文"获取完整代码数据). 视频: ...

  7. CSI笔记【7】:Crowd Vetting: Rejecting Adversaries via Collaboration with Application to......论文阅读

    CSI笔记[7]:Crowd Vetting: Rejecting Adversaries via Collaboration with Application to Multi-Robot Floc ...

  8. SS-Model【3】:DeepLabv2

    系列文章目录 DeepLab语义分割系列(一): SS-Model[2]:DeepLabv1 DeepLab语义分割系列(二): SS-Model[3]:DeepLabv2 DeepLab语义分割系列 ...

  9. CSI笔记【2】:正交频分多路复用技术/OFDM

    CSI笔记[2]:正交频分多路复用技术/OFDM 1.Overview (1).Frequency Division and Multiplexing (2).子载波间隔 (3).Orthogonal ...

最新文章

  1. PyQt5 技术篇-设置窗口启用默认桌面位置,按屏幕比例
  2. 简易 IM 双向通信电脑端 GUI 应用——基于 Netty、JavaFX、多线程技术等
  3. python神奇的小海龟_Python笔记_第一篇_面向过程_第一部分_8.画图工具(小海龟turtle)...
  4. linux select shell,linux之shell编程select和case用法
  5. 唐骏:毕业5年决定你的命运
  6. BZOJ 2431 DP
  7. 十全干货:核心游戏系统架构设计
  8. 配置多个git账号的ssh密钥
  9. 危害极大的计算机病毒cih发作的日期是,计算机病毒防治(答案)
  10. u盘启动盘变成普通u盘
  11. 终端的乐趣--Linux下有趣的终端命令或者工具【转】
  12. 获取本地外网ip的api接口
  13. 布局改变时的过场动画
  14. 山东大学网络靶场实验平台—团队进度(三)
  15. 内网穿透:什么是内网穿透,以及用什么软件
  16. 《30天自制操作系统》-day0(MAC)
  17. OpenCV——Harris、Shi Tomas、自定义、亚像素角点检测
  18. 操作系统作业:向内核中添加一个系统调用
  19. 在线打开 word、excel、pdf 文件
  20. Network | 高颜值网络可视化工具(一)

热门文章

  1. fat16和fat32文件系统学习
  2. 台电 p78 刷机成功
  3. 【C/C++】gcc与g++
  4. 数字电路实验怎么接线视频讲解_时间继电器原理,及在星三角启动中的接线原理图...
  5. 理解 Zend 框架
  6. python 异步编程:协程与 asyncio
  7. [Python] 布尔值(Booleans)
  8. 目标检测-分水岭分割与阈值分割对比
  9. 如何对项目进度进行管理,把控项目风险?
  10. 课题申请书创新能力计算机教学,创新性教学的研究课题书