16_更快的速度与精度:Faster R-CNN

news2024/11/27 21:07:00

回顾R-CNN:链接

回顾Fast R-CNN:链接

1.1 简介

Faster R-CNN是作者Ross Girshick继Fast R-CNN后的又一力作。同样使用VGG16作推理速度在GPU上达到5fps(包括候选区域的生成),准确率为网络的backbone,也有进一步的提升。在2015年的ILSVRC以及COCO竞赛中获得多个项目的第一名。

Faster R-CNN是在Fast R-CNN基础上进一步改进的目标检测框架,旨在提高目标提议生成的效率,进而加速整个检测过程。Faster R-CNN主要通过引入一个新的组件——区域生成网络(Region Proposal Network, RPN)来实现这一目标。以下是Faster R-CNN的关键特点和工作流程:

关键组成部分

  1. 特征提取器(Feature Extractor):与Fast R-CNN类似,Faster R-CNN首先使用一个深度卷积神经网络(如VGG、ResNet等)作为特征提取器,从输入图像中提取丰富的特征图。

  2. 区域提议网络(RPN):这是Faster R-CNN的核心创新点。RPN直接在最后一个卷积层的特征图上滑动,使用小的卷积核(例如3x3)来预测每个位置的多个可能的物体边界框(称为anchors)及其对应的objectness得分。这个分数衡量了该区域包含对象的概率。RPN的设计允许它在提出区域提议的同时进行背景与前景的初步区分,从而替代了之前需要单独运行的选择性搜索或其它启发式方法。

  3. 分类器:基于RPN提出的区域提议,Faster R-CNN会进一步细化这些提议,使用RoI Pooling层将不同大小的提议映射到固定大小的特征图块上,然后送入一个或多个全连接层进行分类和边框回归。这一步骤与Fast R-CNN相似,但其输入现在来自于RPN而非外部区域提议方法。

训练流程

  1. RPN网络训练:首先,使用一个预训练的ImageNet模型(如VGG16)初始化网络,并仅训练RPN部分,目的是让RPN学会生成高质量的区域提议。这一步骤产出模型M1。

  2. 生成提案并训练检测网络:利用训练好的RPN模型M1,从训练图像中生成提案P1。然后,使用这些提案训练Faster R-CNN的分类器和边框回归部分,这一步通常会微调特征提取器的参数,以适应检测任务。

  3. 端到端训练:在RPN和检测网络的参数都经过初步优化后,整个Faster R-CNN系统(包括RPN和后续的分类回归部分)可以进行端到端的微调,以最小化分类错误和边界框回归误差,进一步提升整体性能。

优势

  • 速度快:由于RPN直接在特征图上操作,省去了耗时的区域提议生成步骤,使得整个检测流程更加高效,接近实时处理。
  • 精度高:结合了深度学习的强大分类与回归能力,Faster R-CNN在多个数据集上展示了优越的检测精度。
  • 端到端可训练:整个系统可以作为一个统一的模型进行训练,促进了参数间的协同优化,提升了模型的泛化能力。

Faster R-CNN通过整合区域提议和目标检测到一个统一的网络结构中,不仅大幅提高了目标检测的速度,同时也保持了较高的检测精度,是目标检测领域的一个重要里程碑。

该模型出自论文《Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks》下面我们来学习一下。

1.2 Faster R-CNN整体流程

Faster主要是用RPN替代了之前的SelectiveSearch算法,使得速度大幅上升,其余部分和fast基本相同。

 1.输入图像

  • 输入一张待检测的图像。

2. 特征提取

  • 整张图像通过一个预训练的卷积神经网络(Backbone,如VGG16、ResNet等)进行前向传播,提取出特征图(Feature Map)。这个特征图保留了原始图像的空间信息,同时蕴含了丰富的视觉特征。

3. 区域提议网络(RPN)

  • 生成Anchors:在特征图的每个位置上,预先定义一组不同尺度和长宽比的参考框(称为Anchors)。这些Anchors覆盖了图像中可能出现的各种大小和形状的目标。

  • 滑动窗口预测:RPN在网络的最后一个卷积层特征图上滑动,对每个位置上的Anchors进行分类(前景/背景)和边界框回归(调整Anchors以更好地拟合目标)。

    • 分类任务:使用小的卷积核(如3x3)后接一个1x1卷积层,预测每个Anchor属于目标(前景)还是背景的概率(2k)。

    • 回归任务:同样使用1x1卷积层预测每个Anchor的边界框调整参数(4k),以便更精确地定位目标。

  • 非极大值抑制(NMS):根据分类得分筛选出一定数量的高质量区域提议,并通过NMS去除高度重叠的提议,最终保留一定数量的候选框进入下一阶段。

4. 区域兴趣池化(RoI Pooling)

  • 对于RPN生成的每个候选区域,应用RoI Pooling层将其映射到固定大小(如7x7)的特征图块。RoI Pooling确保不同大小的区域在进入全连接层之前能够被统一处理。

5. 目标分类与精确定位

  • 将RoI Pooling后的特征输入到一系列全连接层,进行两部分处理:

    • 分类:判断每个候选框内的物体属于哪一类,通常使用softmax函数输出每类的概率。

    • 边框回归:进一步细化候选框的位置,通过回归预测更精确的边界框坐标。

6. 训练流程

Faster R-CNN的训练通常分为多个步骤,包括先训练RPN,然后使用RPN产生的提议训练Fast R-CNN部分,最后进行端到端的微调。训练过程中涉及损失函数的联合优化,包括RPN的分类和回归损失,以及Fast R-CNN部分的分类和回归损失。

7. 测试推理

  • 在测试阶段,输入图像经过上述流程,RPN生成区域提议,然后对这些提议进行分类和精确定位,输出最终的检测结果,包括每个检测框的类别标签、置信度得分和精确位置。

通过这样的流程,Faster R-CNN能够在保证较高检测精度的同时,显著加快检测速度,成为当时目标检测领域的先进算法之一。

1.3 RPN结构

RPN整体流程

区域提议网络(Region Proposal Network, RPN)是Faster R-CNN中的一个核心组件,它负责高效地生成大量可能包含目标对象的候选区域(Region Proposals)。以下是RPN的具体工作流程:

1. 输入特征图:RPN基于特征提取网络(如VGG、ResNet)的最后一个卷积层的输出特征图进行操作。这个特征图不仅保留了图像的空间结构信息,还包含了丰富的高层语义特征。

2. Anchor生成:在特征图的每个位置上,预先定义一组不同尺度和纵横比的矩形框,称为Anchors。这些Anchors覆盖了多种大小和形状,旨在捕捉不同尺寸和长宽比的目标。Anchor的配置(如尺度、纵横比)是预先设定的,并在整个图像上均匀分布。

3. 滑动窗口:RPN在网络的特征图上采用滑动窗口(padding=1)的方式,对每个位置的多个Anchors进行处理。这意味着对于特征图上的每个像素位置,都会有一组固定的Anchors与其对应。

4. 特征提取:在每个Anchor对应的特征图位置上,使用小的卷积核(例如3x3)来提取特征,或者直接利用该位置的特征图值,这一步是为了为后续的分类和回归任务准备特征。

5. 分类与回归分支:对于每个Anchor,RPN同时执行两项任务:分类任务:通过一个全连接层(通常是1x1卷积层)预测每个Anchor是否包含目标(前景)或为背景。这通常使用softmax函数输出概率。回归任务:另一个全连接层(也是1x1卷积层)预测如何调整Anchor的边界框以更好地匹配潜在目标的真实边界。这通常输出四个坐标偏移量(dx, dy, dw, dh)。

6. 输出:RPN输出两组数据:一组是每个Anchor属于前景(目标)的概率分数。另一组是针对每个Anchor的边界框回归参数。

7. 非极大值抑制(NMS):基于分类得分,选择得分较高的Anchor,并通过NMS去除高度重叠的候选框,以减少冗余并提高检测效率。通常会设置一个阈值来控制保留的候选框数量。

8. 输出区域提议:经过NMS处理后,保留下来的候选框作为高质量的区域提议,供后续的Fast R-CNN部分进行精细的分类和定位。

参数解释

对于下图的参数,首先介绍一下各个量的意义:k是指anchor的数量,那么2k是指针对每个anchor生成了两个概率,一个是它为背景的概率,一个是它为前景的概率。4k是指每个anchor的4个回归参数。256是指将ZFnet作为backbone(骨干网络)生成的特征图的深度(channel)(如果骨干网络是VGG16,那么256就应当变成512)。

原图像素定位

对于下图,我们首先计算它在特征图的中心点在原图上对应的位置:以X轴为例(注意像素坐标系的XY轴,Y轴是垂直向下的),首先我们将原图的宽度除以特征图的宽度,然后取整得到一个步距stirde。假设我们在特征图的X为3,那么在原图的对应就是步距乘以特征图的位置。Y轴同理。

然后我们再以这个点为中心去计算K个anchor box。每个anchorbox都是给定的大小以及长宽比例。


Anchor

三种尺度,三种比例,一共有3x3=9个anchor,那么我们会生成9x2=18个目标概率和9x4=36个边界框回归参数。

通过一个小的感受野去预测比它大的目标是有可能的。

拓展:感受野

感受野描述了网络中某一层的神经元对输入图像响应的区域大小,即该神经元“看到”或“感受到”的输入空间区域。这个概念有助于理解网络如何逐步构建对输入数据的高级抽象表示,以及网络如何在空间上捕捉和整合信息。

举个例子:当某一层神经网络的感受野为5时,这意味着该层中的每个神经元或特征图上的每个元素,其所依赖并响应的输入图像区域大小为5x5(假设是二维卷积且感受野为正方形)。换句话说,这一层中的每个输出特征是通过考虑输入图像中一个5x5像素的局部区域计算得来的。

计算公式如下:(默认padding为0)

1.4 正负样本

正负样本采用1:1分配,加入有256个样本,那么正负样本各占128个,如果正样本少于128就用负样本来填充。例如正样本只有100个,那么负样本个数就是256-100=156个。

如何定义正负样本?

对于正样本有两种方式:(1)给出的anchor与GT有最大的IOU(2)某个anchor与GT的IOU>0.7,那么这个anchor就是一个正样本

负样本:与GT的IOU<0.3。

1.5 RPN的多任务损失函数

注意:这不是Faster的损失函数,Faster的损失函数和Fast是一样的。

1.6 Faster R-CNN 如何进行训练

1.7 总结

2. pytorch复现

待更新。。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1897211.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

2024年全国青少信息素养大赛python编程复赛集训第十天编程题分享

整理资料解析答案非常不容易,感谢各位大佬给个点赞和分享吧,谢谢 今天题目较简单:适合小学组 大家如果不想阅读前边的比赛内容介绍,可以直接跳过:拉到底部看集训题目 (一)比赛内容: 【小学组】 1.了解输入与输出的概念,掌握使用基本输入输出和简单运算 为主的标准…

智慧生活新篇章,Vatee万腾平台领航前行

在21世纪的科技浪潮中&#xff0c;智慧生活已不再是一个遥远的梦想&#xff0c;而是正逐步成为我们日常生活的现实。从智能家居的温馨便捷&#xff0c;到智慧城市的高效运转&#xff0c;科技的每一次进步都在为我们的生活增添新的色彩。而在这场智慧生活的变革中&#xff0c;Va…

哪个品牌的加密软件稳定方便使用?

一、什么是企业加密软件&#xff1f; 企业加密软件是一种用于保护企业内部数据安全的工具。在数字化时代&#xff0c;随着数据量的爆炸式增长&#xff0c;信息安全和隐私保护变得愈发重要。企业加密软件作为保障数据安全的关键工具&#xff0c;受到越来越多用户的青睐。 企业…

Citrix替换:不只是功能拉齐,更是性能体验的超越

用户在选择Citrix替换方案时&#xff0c;除了关注架构和功能的全面性&#xff0c;也期待着国产桌面办公方案带来的惊喜。 深信服桌面云不仅在基础能力和功能上做到了全面对标Citrix&#xff0c;还在用户极为重视的安全、可靠性、智能监控与排障、信创生态等方面做到了全面超越…

PHP中的运算符与表达式:深入解析与实战应用

目录 一、基础概念 1.1 运算符的定义 1.2 表达式的定义 二、PHP运算符的分类 2.1 算术运算符 2.2 赋值运算符 2.3 比较运算符 2.4 逻辑运算符 2.5 位运算符 2.6 字符串运算符 2.7 错误控制运算符 三、表达式的优先级与结合性 3.1 优先级 3.2 结合性 四、实战应…

答应我,看完再购买ELISA试剂盒!

酶联免疫吸附测定法 (enzyme-linked immunosorbent assay)&#xff0c;简称为ELISA&#xff0c;是用于检测体液中微量物质的固相免疫测定方法。它是一种特殊的试剂分析方法&#xff0c;是在免疫酶技术( immunoenzymatic techniques ) 的基础上发展起来的一种新型的免疫测定技术…

跟《经济学人》学英文:2024年07月06日这期 Amazon turns 30

As Amazon turns 30, three factors will define its next decade It will have to deal with trustbusters, catch up on AI and revive its core business 它将不得不应对反垄断者&#xff0c;追赶人工智能并重振其核心业务 trustbuster&#xff1a; 美 [ˈtrəs(t)ˌbəs…

PHP智慧门店微信小程序系统源码

&#x1f50d;【引领未来零售新风尚】&#x1f50d; &#x1f680;升级启航&#xff0c;智慧零售新篇章&#x1f680; 告别传统门店的束缚&#xff0c;智慧门店v3微信小程序携带着前沿科技与人性化设计&#xff0c;正式启航&#xff01;这个版本不仅是对过往功能的全面优化&a…

CISAW证书考完有什么用?值得投资吗?

CISAW证书&#xff0c;在信息安全领域内被公认为具有高价值的一种职业资格认证&#xff0c;它象征着持有者在该领域的专业技能和知识水平。 因此&#xff0c;CISAW证书不仅具有实质性的价值&#xff0c;还能为持有者带来诸多益处。 首先&#xff0c;拥有CISAW证书的专业人士更…

电脑游戏录屏,3款实用软件推荐给你

在电竞游戏热潮席卷全球的今天&#xff0c;电脑游戏录屏早已不再是简单的画面捕捉&#xff0c;它成为了记录电竞风采、打造专属游戏记忆的重要手段。通过游戏录屏&#xff0c;我们可以定格游戏中的精彩瞬间&#xff0c;重温那些令人热血沸腾的电竞时刻。那么&#xff0c;在进行…

【java计算机毕设】办公用品管理系统MySQL ssm JSP maven项目设计代码源码+文档 前后端一体

1项目功能 【java计算机毕设】办公用品管理系统MySQL ssm JSP maven项目设计代码源码文档 前后端一体 2项目介绍 系统功能&#xff1a; 办公用品管理系统包括管理员、用户俩种角色。 管理员功能包括个人中心模块用于修改个人信息和密码、用户管理、用品分类管理、用品信息管理…

BERT--学习

一、Transformer Transformer&#xff0c;是由编码块和解码块两部分组成&#xff0c;其中编码块由多个编码器组成&#xff0c;解码块同样也是由多个解码块组成。 编码器&#xff1a;自注意力 全连接 多头自注意力&#xff1a;Q、K、V 公式&#xff1a; 解码块&#xff1…

77. UE5 RPG 创建角色的技能栏

在前面的文章里&#xff0c;我们实现了角色属性技能和场景。接下来&#xff0c;我们要优化角色显示UI&#xff0c;在屏幕底部显示角色血量&#xff0c;蓝量&#xff0c;技能和经验值。 创建新的用户控件 选择创建新的控件蓝图 父类为我们自定义的RPGUserWidget&#xff0c;这…

最大池化出现:RuntimeError: “max_pool2d“ not implemented for ‘Long‘爆红

最大池化出现&#xff1a;RuntimeError: “max_pool2d” not implemented for Long’爆红问题 解决方法&#xff1a; 加上dtypetorch.float32。作用是将列表中1->1.0… 成功解决

第一节-k8s架构图

一个Deployment&#xff0c;可以由多个不同Node下的Pod组成&#xff0c;每个Pod又由多个Container组成。 区分Deployment是用Labels(key:value)&#xff0c;区分Pod是用PodName&#xff0c;区分Container是用ContainerName。 一个Node可以包含多个不同Deployment中的pod&…

漏洞分析 | PHP CGI Windows平台远程代码执行漏洞(CVE-2024-4577)

漏洞概述 PHP CGI&#xff08;Common Gateway Interface&#xff09;是在Windows平台上运行PHP的一种方式。CGI是一种标准接口&#xff0c;允许Web服务器与外部应用程序&#xff08;如PHP脚本&#xff09;进行交互&#xff0c;从而生成动态网页内容。 近期&#xff0c;PHP发布…

HTTP代理服务器:深度解析与应用

“随着互联网的飞速发展&#xff0c;HTTP代理服务器在网络通信中扮演着越来越重要的角色。它们作为客户端和服务器之间的中介&#xff0c;不仅优化了网络性能&#xff0c;还提供了强大的安全性和隐私保护功能。” 一、HTTP代理服务器的概念与作用 HTTP代理服务器是一种能够接…

Butterfly主题一图流背景及文章顶部图修改

效果 将Butterfly主题改成一图流背景&#xff0c;并且将首页以外的顶部图移到标题下方显示。 主题配置 修改 Butterfly 的配置文件 _config.butterfly.yml。 编辑 index_img、background、footer_bg 选项。 设置网站背景&#xff0c;将主页顶部图和页脚背景改为透明。 # …

介绍 pg_later:受 Snowflake 启发的 Postgres 异步查询#postgresql认证

#PG培训#PG考试#postgresql培训#postgresql考试 为什么要使用异步查询&#xff1f; 想象一下&#xff0c;您启动了一项长期维护工作。您在执行过程中离开&#xff0c;但回来后发现&#xff0c;由于笔记本电脑关机&#xff0c;该工作在几个小时前就被中断了。您不希望这种情况…

蓝牙信标和蓝牙标签我们如何区分,区分方法有哪些?

蓝牙信标和蓝牙标签其实是两种不同的技术&#xff0c;很多人可能会把蓝牙信标和蓝牙标签搞混&#xff0c;因为区分不开来&#xff0c;但实际上&#xff0c;区分这两种技术也很简单&#xff0c;因为它们各自都有不一样的特性&#xff0c;通过这些特性&#xff0c;我们也能正常区…