当前位置:网站首页>OD-Paper【2】:Fast R-CNN
OD-Paper【2】:Fast R-CNN
2022-07-26 05:11:00 【zzzyzh】
系列文章目录
目标检测之RCNN:
OD-Paper【1】:Rich feature hierarchies for accurate object detection and semantic segmentation
前言
本文主要对论文进行解读,并解释有关Fast RCNN框架的部分
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具有明显的缺点:
- 训练过程是多级pipeline。R-CNN首先使用目标候选框对卷积神经网络使用log损失进行fine-tunes。然后,它将卷积神经网络得到的特征送入SVM。这些SVM作为目标检测器,替代通过fine-tunes学习的softmax分类器。在第三个训练阶段,学习bounding-box回归器。
- 训练在时间和空间上是的开销很大。对于SVM和bounding-box回归训练,从每个图像中的每个目标候选框提取特征,并写入磁盘。对于VOC07 trainval上的5k个图像,使用如VGG16非常深的网络时,这个过程在单个GPU上需要2.5天。这些特征需要数百GB的存储空间。
- 目标检测速度很慢。在测试时,从每个测试图像中的每个目标候选框提取特征。用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方法有以下几个优点:
- 比R-CNN和SPPnet具有更高的目标检测精度(mAP)
- 训练是使用多任务损失的单阶段训练
- 训练可以更新所有网络层参数
- 不需要磁盘空间缓存特征
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次正向传播
- 存在大量冗余
- 重叠部分计算一次即可

- 得到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 ≥ 1 u\ge 1 u≥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个类别的候选边界框回归参数 ( d x , d y , d w , d h ) (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

- p p p 是分类器预测的softmax概率分布: p = ( p 0 , . . . , p k ) p = (p_0, ..., p_k) p=(p0,...,pk)
- u u u 对应目标真实类别标签

- p u p_u pu 即分类器预测当前候选区域为为类别 u u u的概率
- Cross Entropy Loss交叉熵损失
- 针对多分类问题(softmax输出,所有输出概率和为1)

- 针对二分类问题(sigmoid输出,每个输出节点之间互不相干)

- o i ∗ o_i^* oi∗ 只有在正确的标签位置为1,其他位置为0(one-hot编码)
- 所以此时 H = − 1 × l o g ( u ) H = -1 \times log(u) H=−1×log(u) ,即对应的分类损失
- 针对多分类问题(softmax输出,所有输出概率和为1)
- t u t^u tu 对应边界框回归器预测的对应类别 u u u的回归参数 ( t x u , t y u , t w u , t h u ) (t_x^u, t_y^u, t_w^u, t_h^u) (txu,tyu,twu,thu)
- v v v 对应真实目标的边界框回归参数 ( v x , v y , v w , v h ) (v_x, v_y, v_w, v_h) (vx,vy,vw,vh)

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

- v x = ( G x − P x ) / P w v_x = (G_x - P_x) / P_w vx=(Gx−Px)/Pw
- v y = ( G y − P y ) / P h v_y = (G_y - P_y) / P_h vy=(Gy−Py)/Ph
- v w = l n ( G w ^ / P w ) v_w = ln(\hat{G_w} / P_w) vw=ln(Gw^/Pw)
- v h = l n ( G h ^ / P h ) v_h = ln(\hat{G_h} / P_h) vh=ln(Gh^/Ph)
- [ u ≥ 1 ] [u \ge 1] [u≥1]是艾弗森括号
总结
本文提出Fast R-CNN,一个对R-CNN和SPPnet更新的简洁、快速版本。除了报告目前最先进的检测结果之外,我们还提供了详细的实验,希望提供新的思路。特别值得注意的是,稀疏目标候选区域似乎提高了检测器的质量。过去这个问题代价太大(在时间上)而一直无法深入探索,但Fast R-CNN使其变得可能。当然,可能存在未发现的技术,使得密集框能够达到与稀疏候选框类似的效果。如果这样的方法被开发出来,则可以帮助进一步加速目标检测。
边栏推荐
- C语言力扣第41题之缺失的第一个正数。两种方法,预处理快排与原地哈希
- MySQL master-slave synchronization and master-slave synchronization delay solution
- Improve reduce parallelism in shuffle operation
- SAP report development steps
- Common solutions for distributed ID - take one
- MySQL basic learning
- 提升命令行效率的 Bash 快捷键 [完整版]
- ALV report flow diagram
- Nacos introduction and deployment
- Shell流程控制(重点)、if 判断、case 语句、let用法、for 循环中有for (( 初始值;循环控制条件;变量变化 ))和for 变量 in 值 1 值 2 值 3… 、while 循环
猜你喜欢

CLM land surface process model

Embedded sharing collection 20

Alibaba three sides: how to solve the problems of MQ message loss, duplication and backlog?

阿里三面:MQ 消息丢失、重复、积压问题,如何解决?

嵌入式分享合集21

嵌入式开发小记,实用小知识分享

Uniapp applet framework - a set of code, multi segment coverage

Seata submits at details in two stages

How many holes have you stepped on in BigDecimal?

ALV报表流程图解
随机推荐
ABAP grammar learning (ALV)
五个维度着手MySQL的优化,我和面试官都聊嗨了
一次线上事故,我顿悟了异步的精髓
Computable general equilibrium (CGE) model practice technology in resource environment under the goal of "double carbon"
Map making of environmental impact assessment based on remote sensing interpretation and GIS technology
嵌入式分享合集21
kubernetes install completed
Excel vba: saving multiple worksheets as new files
35. Search the insertion position
Application of remote sensing, GIS and GPS technology in hydrology, meteorology, disasters, ecology, environment and health
Leetcode linked list problem - 206. reverse linked list (learn linked list by one question and one article)
Go-Excelize API源码阅读(六)—— DeleteSheet(sheet string)
When AQS wakes up the thread, I understand why it traverses from the back to the front
DOM event flow event bubble event capture event delegate
Simulation of future air pollution changes
Nacos introduction and deployment
Teach you how to use code to realize SSO single sign on
A material of machine learning
【ACWing】2983. 玩具
How to reproduce the official course of yolov5 gracefully (II) -- Mark and train your own data set