Fast R-CNN

目标检测 | R-CNN、Fast R-CNN与Faster R-CNN理论讲解 目标检测:R-CNN、Fast R-CNN与Faster R-CNN理论讲解,根据B站up霹雳吧啦Wz总结。此文章包含R-CNN算法原理讲解、Fast R-CNN算法原理讲解、Faster R-CNN原理讲解、目标检测评价指标介绍与特征金字塔网络FPN讲解。 阅读详情

    看这篇论文之前需要先对R-CNN和SPP-net有所了解,可以参考博客R-CNN:Rich feature hierarchies for accurate object detection and semantic segmentation 以及博客SPP-net:Spatial Pyramid Pooling in Deep Convolutional Networks for Visual Recognition 了解相关知识,这对阅读和理解Fast R-CNN有极大的好处。另外值得一提的是,Fast R-CNN的文献版本有多个,建议阅读发布在ICCV会议上的版本,相对更仔细一点也更容易理解一点。
    首先谈为什么有了R-CNN和SPP-net,作者又新提出了Fast R-CNN,原因很简单,那一定是R-CNN和SPP-net有一些缺点和不足的地方有待改进。那么我们就先从这个方面入手,看看R-CNN和SPP-net都有哪些缺点。
    R-CNN的不足之处:
    [1]训练过程是一个多步骤的过程(multi-stage pipline),正如前面博客所讲,R-CNN的训练过程主要有以下三个阶段: 分别是有监督的预训练、针对特定的图片进行调优(fine tune)以及训练一个线性的SVM分类器,对warped voc windows进行分类。 事实上后面还有一个bounding box regression的步骤用来精确目标所在的位置。我们肯定希望训练通过一个步骤就可以完成。
    [2]训练过程耗费时间和存储资源,在R-CNN中,每张图片要提取2k个proposals,每个proposal都要通过网络进行前向传播并提取特征并存到磁盘中供svm分类器的训练使用中,这导致无论是训练时间还是所占用的磁盘容量都是非常大的。
    [3]测试阶段或者说检测阶段的速度也是非常慢的,原因同上,在测试阶段一个图片要提取2k个proposals并分别送入网络和svm分类器以及bounding box regression,这是非常耗时的。
    SPP-net的不足之处:
    [1]训练过程是一个多步骤的过程。
    [2]训练过程耗费时间和存储资源。
    [3]在网络的调优(fine tune)阶段,只能给更新SPP layer之后的层(主要都是一些全连接层),前面的卷积层参数无法得到更新。这对于VGG等大型网络而言,这样的调优限制会使得网络无法达到它最好的性能。
    为了有个对比,先看看Fast R-CNN有哪些优点吧。
    [1]更高的mAP(mean average precision),这是衡量一个检测算法好坏的最直接的标准。
    [2]使用了多任务的损失函数(分类的损失函数和定位的损失函数),训练是一个一步完成的过程,这就和R-CNN以及SPP-net有明显区别了。
    [3]训练的时候可以更新所有网络层的参数,这和SPP-net的不足也形成了对比。
    [4]没有使用磁盘存储空间来存储特征。因为整个训练过程是一步完成的,所以特征只要存在显存或内存中即可。而不用像R-CNN和SPP-net一样特征存储到磁盘中,然后SVM分类器再从磁盘读取这些特征进行训练。
    接下来看一下Fast R-CNN的结构如下图所示:
这里写图片描述
    整体的流程如下:首先一个输入的图片经过多个卷积层和最大池化层形成在最后一层卷积层后面的feature maps,然后由于知道proposals在图片的位置是知道的,所以可以推算出proposals在feature maps中的位置,这些对应在feature map中的映射我们称之为RoI,然后对于每一个RoI,使用RoI pooling的策略将其映射成固定长度的特征向量,之后特征向量经过数个全连接层后得到全连接层的输出,全连接层的输出被输入到两个“兄弟层”(sibling layer),这两个层分别输出proposal的类别和bounding box的偏移量。RoI pooling的策略是通过RoI pooling layer实现的,这个layer其实是SPP layer的简化版本,读者可以查看SPP-net的那篇博客了解SPP是啥。
    以上便是Fast R-CNN网络的整体流程了。下面将如何训练这些网络的。
    [1]用在ImageNet上训练过的用作分类的网络参数初始化这里Fast R-CNN的网络参数,但是有三点是有所改变的。第一是最后一个卷积层后面的最大池化层变为了RoI pooling层,第二是网络的全连接层和最后用作1000类分类的softmax层被这里的“兄弟层”替换了,第三是网络的输入从一张图片变为了一张图片和这张图片中的RoIs了(或者称为proposals,因为前面约定feature maps中的才叫RoI)。
    [2]在新的训练集上调优(比如Pascal VOC)。前面在讲SPP-net的缺点的时候提到过SPP-net“在网络的调优(fine tune)阶段,只能给更新SPP layer之后的层(主要都是一些全连接层),前面的卷积层参数无法得到更新。这对于VGG等大型网络而言,这样的调优限制会使得网络无法达到它最好的性能。“针对此,文章解释了SPP-net不能调优SPP layer之前的参数的根本原因是由于R-CNN和SPP-net在训练过程中,RoI来自于各个不同的图片,而RoI的感受野又非常大,往往是覆盖了整个图片的,所以对于一个RoI的训练,就要去更新几乎涉及整个图片的网络参数,这无疑是非常耗计算资源的,所以导致很难训练SPP layer之前的参数。针对SPP-net的这个缺点,作者提出了一种更为高效的训练方法,在Fast R-CNN的调优训练中,每进行一次随机梯度下降法(SGD),采用一个小的batch,这个batch是有层次的筛选的,首先选出N张图片,然后对每张图片选出R/N个RoIs,R是一次SGD要采用的RoIs的数量。典型的,采用N=2,R=128。这样一来,128个RoI其实就来自于2张图片,每张图片的卷积参数是相同的,也就是说64个RoI共享了卷积参数,这样就达到了加快训练速度的目的了。这点相当于前文谈到的Fast R-CNN的优点[3],Fast R-CNN另外一个优点[2]表明它的fine tune过程是一气呵成的,这个fine tune的过程包括了以下几个重要的部分,分别是定义多任务的损失函数、小batch采样的策略、经过RoI pooling layer进行反向传播以及SGD的超参数选择,下面将分别讲解。
    [2.1]多任务损失函数
    首先看网络最后输出的是什么,之前提到,网络有两个“兄弟层”,一个层用于分类,以Pascal的20类为例,这层输出21个概率,分别表示一个RoI是背景或者是属于这20类中某一类的概率,记为这里写图片描述,此处K等于20。另一个”兄弟层”是用来做bounding box regression的,也就是说对于一个RoI,输出对于将其预测为每一个类别的对应的回归参数tk。具体这里的回归参数tk以及后面的v是什么含义,论文中说的是在R-CNN的论文中可以找到,而在R-CNN的论文中说的是在补充材料中,最后还是没找到,目前见到有这个博客提及这个回归参数,但讲的不细,仅供参考。
这里写图片描述
    对于每一个RoI,都带有一个真值的类别标签u和一个真值的回归参数v,使用的多任务的损失函数如下:
这里写图片描述
其中
这里写图片描述,
这里写图片描述,这里写图片描述
    [2.2]小batch(mini-batch)采样策略。在SGD的每一次迭代训练中,随机抽取两张图片,每张选取64个RoI,构成了一个mini-batch。在这个batch中,25%的RoI对应的proposals和真正包含了物体的矩形有着至少50%的交并比(IoU),这些物体的类别标签(class label)是在K个类别之中的。剩余75%的RoIs则最多和真正包含了物体的矩形的IoU不会超过一个阈值,这个阈值是可以人为在[0.1,0.5)之间选定的,因为不同的阈值可能导致不同的检测精度的,需要实验才能确定最优的参数。他们的类别标签(class label)都被设为0。在训练的时候还以50%的概率对样本进行水平翻转(horizontally flip)来增加样本的数量,这种行为也叫做数据增广(data augmentation)。
    [2.3]为了描述的简洁性,令每次训练只采样一张图片,即N=1。令x_i是输入到RoI pooling layer的第i个输入,y_rj表示第r个RoI的第j个输出。RoI pooling layer计算这个y_rj的方式是令这里写图片描述,其中这里写图片描述,其中R(i,j)每个RoI窗口的子窗口的索引。损失函数对x_i的偏导数求取方式如下:
这里写图片描述
    [2.4]SGD的超参数选择用于分类和回归的的全连接层分别以0均值,标准差为0,01和0均值、标准差为0.001的高斯分布初始化。偏置都设为0,全局学习率为0.001,对于每一层的权重是在全局学习率上乘以2,而对于偏置项乘以1。训练VOC2007和VOC2012的时候,跑了30k次的SGD,每次输入一个mini-batch的数据,然后把学习率降到0.0001运行10k次SGD。momentum设为0.9,decay设为0.0005。
    [3]为了实现尺度不变性,采用了两种不同的方法,一种是暴力法(brute force),一种是使用图像金字塔(image pyramids)。暴力法直接将image设置为某种scale,直接输入网络训练,期望网络自己适应这个scale。而图像金字塔法在训练的时候随机采取不同尺度的图像进行训练,而在测试的时候将图像的RoI缩放到面积最接近于224*224的尺度上进行输入。
    后面,作者还对全连接层的参数进行了SVD分解,目的是加速测试的时间。因为在检测任务中时间很多是花费在全连接层的传播过程,因此对其进行SVD分解可以帮助提高检测速度。再后面就是Fast R-CNN在一些公开测试集上取得的一些测试结果了,在当时都是state of art的,随后作者还对网络的结构和调参进行了一些深入的讨论,建议读者去阅读论文,这篇博客只是一个简单的介绍和自己的阅读记录。

卷积神经网络——目标检测之Fast R-CNN论文翻译 论文连接 https://arxiv.org/abs/1504.08083 0. 摘要 本文针对目标检测问题提出了基于区域的快速卷积网络方法(Fast Region-based Convolutional Network:Fast R-CNN)。Fast R-CNN建立子以前工作的基础上,使用深度卷积网络对目标对象进行有效的分类。与以往的实现方案相比,Fast R-CNN使用了几项创新技术来提高训练和测试的速度,同时也提高了检测的精度。**Fast R-CNN与R-CNN相比,训练超深VGG16网络的速度快 阅读详情

相关推荐

Fast R-CNN论文解读

论文链接:https://arxiv.org/abs/1504.08083 代码链接:https://github.com/rbgirshick/fast-rcnn. Abstract 这篇论文提出了一种基于卷积神经网络做目标检测的算法——Fast R-CNN,它是建立在之前R-CNN的基础上使用深度卷积神经网络进行高效的目标检测。Fast R-CNN做了几点创新来提高训练和测试阶段的速度,同时提...

h__ang的博客 1万+

Fast(er) rcnn的损失函数总结

Fast R-CNN Fast RCNN将分类与回归做到了一个网络里面,因此损失函数必定是多任务的: 其中分类任务还是我们常用的对数损失, 对数损失, 即对数似然损失(Log-likelihood Loss), 也称逻辑斯谛回归损失(Logistic Loss)或交叉熵损失(cross-entropy Loss), 是在概率估计上定义的.它常用于(multi-nominal, 多项)逻辑...

恋蛩音的博客 1万+

卷积神经网络——从R-CNN,Fast R-CNN到Faster R-CNN,Mask R-CNN

R-CNN系列的网络是经典的目标检测和分割的网络,其中提出的一些新算法可以让人为之激动啊。下面简单介绍一下这几个网络。 论文翻译: R-CNN:https://blog.csdn.net/itlilyer/article/details/107190083 Fast R-CNN:https://blog.csdn.net/itlilyer/article/details/107764472 Faster R-CNN:https://blog.csdn.net/itlilyer/article/details

itlilyer的博客 1056

Faster-rcnn中的损失函数

L2 loss RPN网络中对于边框的预测是一个回归问题,通常可以选择平方损失函数,即L2损失。但是当预测值与目标值相差很大时,容易产生梯度爆炸。 L2 loss = L1 loss 我们...

贾路飞的博客 1万+

Fast R-CNN(论文阅读)

Fast R-CNN(论文阅读)

Xiao_Ya__的博客 1363

一文读懂目标检测:R-CNN、Fast R-CNN、Faster R-CNN、YOLO、SSD

有了候选区域,剩下的工作实际就是对候选区域进行图像分类的工作(特征提取+分类)。换言之,这个网络层可以把不同大小的输入映射到一个固定尺度的特征向量,而我们知道,conv、pooling、relu等操作都不需要固定size的输入,因此,在原始图片上执行这些操作后,虽然输入图片size不同导致得到的feature map尺寸也不同,不能直接接到一个全连接层进行分类,但是可以加入这个神奇的ROI Pooling层,对每个region都提取一个固定维度的特征表示,再通过正常的softmax进行类型识别。

2301_78398209的博客 1334

Faster-RCNN简介及损失函数

【Faster RCNN】损失函数理解:https://blog.csdn.net/Mr_health/article/details/84970776 1. 使用Smoooh L1 Loss的原因 2. Faster RCNN的损失函数 2.1 分类损失 2.2 回归损失 一些感悟 关于文章中具体一些代码及参数如何得来的请看博客: tensorflow+faster rcnn代码解析(二):anchor_target_layer、proposal_target_layer、prop

qq_32790593的博客 4977

R-CNN、Fast R-CNN、Faster R-CNN、Mask R-CNN总结

R-CNN、Fast R-CNN、Faster R-CNN、Mask R-CNN学习总结

kobe_huai的博客 2859

FasterRcnn原理详解

本课程详细讲解了FasterRcnn的网络结构原理以及训练方式,搭配简单易懂的示意图,带你彻底领悟FasterRcnn的精髓所在!!!

DESeq2差异分析结果不会看?用这个R脚本5分钟生成发表级火山图和热图

本文详细介绍了如何使用R语言快速可视化DESeq2差异分析结果,5分钟内生成可直接用于论文发表的火山图和热图。通过解析DESeq2数据结构、展示ggplot2和EnhancedVolcano包的绘图技巧,以及pheatmap包的热图定制方法,帮助研究者高效呈现差异表达基因分析结果。

weixin_30326515的博客 340

Anomalib实战指南:从零开始构建自定义异常检测数据集

本文提供了一份详细的Anomalib实战指南,指导用户从零开始构建自定义异常检测数据集。文章深入解析了数据准备的核心步骤、目录结构规范,并对比了PatchCore与FastFlow等关键模型的适用场景。通过清晰的代码示例,手把手演示了环境配置、模型训练与推理评估的全流程,旨在帮助开发者快速掌握这一工业视觉异常检测利器,有效解决实际生产中的缺陷识别难题。

weixin_29054245的博客 642

FasterRCNN模型损失——pytorch实现

【代码】FasterRCNN模型损失——pytorch实现。

Peach_____的博客 1113

安路科技FPSoC开发实战:从芯片特性到边缘计算应用

本文深入解析安路科技FPSoC芯片在边缘计算领域的开发实战,重点介绍SALDRAGON系列芯片的异构计算架构优势,包括RISC-V/ARM处理器与FPGA的协同工作。通过工业控制和智能视觉应用案例,展示硬件加速实现与低功耗设计技巧,帮助开发者高效利用FPSoC进行边缘计算应用开发。

weixin_29248611的博客 375

计算机视觉 - 物体检测 开山鼻祖 R-CNN系列:Fast R-CNN、Faster R-CNN、Mask R-CNN

本文系统梳理了目标检测领域R-CNN系列算法的发展历程。从R-CNN到Fast R-CNN、Faster R-CNN再到Mask R-CNN,每一代算法都针对前代痛点进行创新:R-CNN首次将CNN用于特征提取但计算冗余;Fast R-CNN通过共享特征图和RoI Pooling提升效率;Faster R-CNN引入RPN网络实现端到端训练;Mask R-CNN则扩展了实例分割能力。文章详细解析了各算法的核心思想、训练流程及关键创新技术(如RoI Align),并对比了二阶段与单阶段检测算法的差异。

nju_spy的博客 6348

北京途游游戏后端开发面经

北京途游游戏后端开发面经 我面试岗位是基于Python的后端开发工程师,主要是搞游戏的服务器开发。面试一共分了两轮,之后说是看看其他的候选人再定,感觉凉凉~~ 由于受到此次新型冠状病毒疫情的影响,本次面试采用视频面试的方式,下面是面试的时候面试官提的问题,python的基础知识还是问的比较多的。  一面:(32分钟微信视频)  简单做下自我介绍,   1.说一下你开发过的项目,挑一个说下你都做了...

weixin_45603043的博客 2124

系统安装、qt配置、安装pcie驱动

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 安装Linux系统指定:ununtu20.04并配置相关软件环境 前言 提示:这里可以添加本文要记录的大概内容: ununtu20.04、Qt 5.9.0、pcie驱动 提示:以下是本篇文章正文内容,下面案例可供参考 一、安装系统 制作系统盘(win10),在开机时按相应键进入BIOS,(华硕需要先改配置启动->CSM->开启->第一个选项选第一个或第二个),等待即可 进入后按照https://www.sysgeek.

weixin_44832804的博客 2204

R-CNN,Fast R-CNN,

最后,通过非极大值抑制(NMS)来减少候选框的数量,提高检测效率和准确性。将2000×4096的特征矩阵与20个SVM组成的权值矩阵4096×20 相乘,获得2000×20的概率矩阵,每一行代表一个建议框归于每个 目标类别的概率。产生的候选框大小它是随机的,而我们要缩放的是,这些候选框框出的不同大小的图片。因为我们的负样本是背景,不是目标概率,损失是计算目标预测值和真实值的差距 这里的0.2不是我们的目标概率值 应该是0.8 标签为1 这里就是 -[1*log(0.8)+0*log(1-0.8)]

2302_80719643的博客 1659

【华为OD机考】2025C+B+2024E+D卷真题【完全原创题解 | 详细考点分类 | 不断更新题目 | 六种主流语言Py+Java+Cpp+C+Js+Go】

可上练习华子OD、大厂真题绿色聊天软件戳od1441了解算法冲刺训练(备注【优快云】否则不通过)

weixin_48157259的博客 1万+

什么是 Fast R-CNN 和 Faster R-CNN

Fast R-CNN和Faster R-CNN是物体检测领域的重要模型,属于R-CNN系列的演进版本。Fast R-CNN通过共享卷积特征和RoI Pooling层,显著提升了检测速度。Faster R-CNN则进一步引入Region Proposal Network(RPN),实现了端到端训练,在速度和准确率上均有突破。两模型都采用多任务损失函数,支持分类和边界框回归。主要区别在于Faster R-CNN内置RPN取代了外部区域提案方法,使检测更高效。这些模型为后续Mask R-CNN等奠定了基础,广泛应

彬彬侠的博客 1557

1-Wire 单总线硬件结构及软件时序分析(实测波形+C代码分析)

1根线就可以通信,是不是很神奇?因为其节省I/O口的优点而被广泛使用!

记得诚 1万+

【ArcGIS Pro微课1000例】0047:深度学习--棕榈树提取全流程

对汤加科洛瓦伊种植园每棵棕榈树的健康状况进行清查和评估,这需要花费大量的时间和劳动力。为简化此过程,将在 ArcGIS Pro 中使用深度学习模型来识别树木,然后根据植被绿度的测量值计算其健康状况。第一步是找到显示汤加科洛瓦伊的影像,该影像具有足够精细的空间和光谱分辨率来识别树木。获得此影像后,将创建训练样本并将其转换为可供深度学习模型使用的格式。为了让模型识别出它的查找任务,需要定义棕榈树的影像,以便识别相似的像素和树木大小。

智慧空间实验室 2205

卷积神经网络(CNN,R-CNN, Fast R-CNN,Faster R-CNN)

CNN(卷积神经网络)步骤: 图片输入 将图片分成多个区域: 将每个区域看作单独的图片。 把这些区域照片传递给CNN,将它们分到不同类别中。 当把每个区域都分到对应的类别后,再把它们结合在一起,完成对原始图像的目标检测 R-CNN(基于区域的卷积神经网络),检测目标物体的步骤如下: 首先取一个预训练卷积神经网络。 根据需要检测的目标类别数量,训练网络的最后一层。(选择性搜索得到感兴趣区域) 得到每张图片的感兴趣区域(Region of Interest),对这些区域重新改造,以让其符合CNN的输入尺寸

weixin_50514372的博客 601

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

R-CNN、Fast RCNN、Faster RCNN

本文系统介绍了目标检测领域三大经典算法的发展历程与技术演进。R-CNN开创性地将CNN引入目标检测,通过选择性搜索生成候选区域并独立提取特征,但存在计算冗余问题。Fast R-CNN通过共享卷积计算和RoI池化显著提升效率,实现端到端训练。Faster R-CNN则革命性地提出区域提议网络(RPN),将候选框生成整合进网络,形成完全端到端的检测流程。

weixin_61295654的博客 1006

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

Fast R-CNN论文——学习笔记

R-CNN 在处理每个候选区域时,会先将每个区域的特征提取出来,并将其存储在磁盘上,以便后续分类使用。: 由于 Fast R-CNN 在训练时直接从共享的特征图中提取 RoI 特征,这使得整个网络可以端到端训练,不再需要像 R-CNN 那样先训练一个独立的候选区域生成器(例如 Selective Search),然后再进行特征提取和分类。Fast R-CNN 通过一个单阶段训练过程,结合了分类和边界框回归的多任务损失函数,从而简化了训练流程,不再需要像 R-CNN 那样分开进行不同阶段的训练。

qq_55009448的博客 836

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

【CV论文精读】【Faster RCNN】Fast R-CNN

提出了一种基于区域的快速卷积网络(Fast R-CNN)目标检测方法。Fast R-CNN建立在以前的工作基础上,使用深度卷积网络有效地对目标候选框进行分类。与以前的工作相比,Fast R-CNN采用了几项创新来提高训练和测试速度,同时也提高了检测准确性。Fast R-CNN训练非常深的VGG16网络的速度比R-CNN快9倍,在测试时快213倍,并在PASCAL VOC 2012上实现了更高的映射。与SPPnet相比,Fast R-CNN训练VGG16的速度快3倍,测试速度快10倍,并且更准确。

weixin_44184852的博客 1338
上一篇: SPP-net:Spatial Pyramid Pooling in Deep Convolutional Networks for Visual Recognition
下一篇: Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks
熊彬程的博客
博客等级 码龄11年 208粉丝 51原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值