问题

目标检测算法中Two-stage算法速度慢,到底在哪里?

回答
Twostage 目标检测算法速度慢,这确实是它们最常被诟病的一点。要详细讲清楚到底慢在哪儿,得把整个流程拆解开来看。

咱们先回顾一下 Twostage 算法的核心思想,最典型的代表就是 Faster RCNN。它的名字就说明白了,要“快”一些,但本质上还是分两个阶段:

第一阶段:区域提议(Region Proposal)

目标: 在原始图像上生成一系列可能包含目标物体的候选区域(Region of Interest, RoI)。
传统方法(RCNN, Fast RCNN): 早期的方法,比如 RCNN,用的是 Selective Search 这种图像分割算法来生成区域提议。Selective Search 会对图像进行分组、合并,生成大量的候选框,可能几千到上万个。
慢在哪里?
1. 计算密集型: Selective Search 本身就是个计算密集型的过程,需要对图像进行多次处理,计算量很大。
2. 大量冗余: 生成的候选框数量巨大,而且很多都是无效的,浪费了后续的计算资源。
3. 与网络无关: 区域提议的过程独立于后续的卷积神经网络(CNN)特征提取,这意味着需要分别执行,增加了总的耗时。

改进方法(Faster RCNN): Faster RCNN 聪明之处就在于将区域提议集成到了神经网络内部,引入了 Region Proposal Network (RPN)。
RPN 慢在哪里?
1. 特征图上的滑窗: RPN 在 CNN 主干网络提取的特征图(feature map)上进行操作。它在特征图上滑出一个个固定大小的“锚框”(anchor boxes),然后判断这些锚框是否是目标的“前景”以及偏移量。
2. 计算量仍然存在: 虽然比 Selective Search 快了N倍,但 RPN 仍然需要对特征图上的每一个位置都进行一次预测(分类前景/背景,回归偏移)。如果特征图比较大,这个计算量依然不小。
3. 锚框设置: 锚框的尺寸、比例(aspect ratios)、数量的设置,以及它们与真实框的匹配策略,都会影响 RPN 的效率和效果。不合适的锚框设计可能会导致更多的无效提议,增加后续处理的负担。

第二阶段:候选区域的分类与回归(RoI Head)

目标: 对第一阶段生成的每个候选区域(RoI)进行精细的分类(是猫、狗还是背景?)并对候选框进行精确的边界框回归(让框框得更准)。
流程:
1. RoI Pooling/RoI Align: 将不同尺寸的候选区域(RoI)映射到固定大小的特征图区域上,以便输入到全连接层进行后续处理。
2. 特征提取: 对每个 RoI 区域的特征图进行进一步的卷积或全连接操作。
3. 分类器: 通过全连接层对 RoI 进行分类。
4. 回归器: 通过全连接层对 RoI 的边界框进行精确调整。

慢在哪里?
1. 逐个 RoI 处理: 这一阶段最核心的慢点在于,它需要对每一个第一阶段产生的候选区域(即使是 RPN 生成的,也可能有很多)单独进行特征提取、分类和回归。
2. 大量 RoI 的累积: 即使 RPN 已经过滤掉了很多不相关的区域,但仍然可能产生几百到上千个候选区域。想象一下,每个区域都要经过一遍精细的特征提取和计算,即使网络再快,加起来的计算量也是巨大的。
3. RoI Pooling/Align 的开销: RoI Pooling 或 RoI Align 操作本身虽然是为了解决尺寸不一的问题,但对每个 RoI 进行特征插值或映射,也会消耗一定的计算资源。
4. 冗余特征计算: 即使两个候选区域非常接近,它们可能会共享大部分的原始图像区域,但在这第二阶段,它们各自的特征可能需要被独立地重新计算或提取,导致一部分特征计算的冗余。

总结一下 Twostage 算法的“慢”主要集中在:

区域提议的计算(尽管 RPN 已经优化很多): 即使是 RPN,也需要在特征图上进行密集的预测,这仍然是计算量的一个来源。
大量候选区域的独立处理: 这是最主要的瓶颈。对成百上千个候选区域逐一进行精细的特征提取、分类和回归,尤其是当这些候选区域重叠度很高或者有很多都是低质量的提议时,这种“逐个击破”的策略就显得效率低下。

为什么 Onestage 算法(如 YOLO, SSD)就快很多?

Onestage 算法直接在图像的某个尺度(或多个尺度)上进行密集预测,将区域提议和分类/回归合并为一个步骤。它们不依赖于预先生成的候选区域,而是直接在特征图上设置一个网格,预测每个网格单元(或其附近的锚框)的类别和边界框。这样就省去了第二阶段对大量候选区域的独立处理,自然速度就上去了。

所以,Twostage 算法的慢,本质上是它“先粗略找一遍,再精细校准一遍”这种思路带来的固有开销,尤其是在处理大量候选区域时的累积效应。

网友意见

user avatar

这么讲吧,two-stage比one-stage真正的损耗在于two-stage必须保证input image的resolution,拿以前的Pascal来说,two-stage的FRCN默认setting最短边缩放到600,最长边不超过1000,COCO的默认setting最短边缩放到800,最长边不超过1333,;而one-stage的SSD包括yolo,512*512甚至416*416就可以达到相近的performance,你们算算这里差多少。用低resolution我也跑过two-stage,直接血崩,但是速度和one-stage差距很小。

很多答案说two-stage有RPN,有ROI Pooling,还有后面region-wise的head计算所以慢,其实在RPN提出之后这些计算损耗相比backbone而言我认为是可以忽略不计的了(以前SS的时候2000个proposal确实是很高的损耗,RPN之后300个proposal计算非常小。还有RFCN的PSROI Pooling并没有比ROI Pooling快到哪里去),关键在于(i) input resolution; (ii)特别设计过的那些轻量但是performance不错的darknet 系列。

我个人认为,two-stage由于需要显式的计算region中的feature,所以对于resolution的要求更高,同样对于不同问题的robust更强;而one-stage是非常隐式的用统一的卷积去学习feature进行预测,所以对于resolution的需求不高,同样的robust相比也弱一些,反正我是很讨厌yolo那套东西,放在不同问题上需要精细调参才可以work。

我记得大概19年除了好多bridging one-stage & two-stage的文章,不知道有没有做过那low resolution input的实验。不过意义也不大了,现在的重点不纠结于这一块。

user avatar

刚一只脚入门,一点愚见。

Two-stage方法是先生成region proposal再将其喂给detect head。detect head 只是一个将二维图的部分区域对应的region feature通过Fully-connected layers 输出softmax结果(分类)和box regressor结果(位置)。这一部分的速度基本上和图像检测这一细分类别没有直接关系,而是由FC layers 处理feature向量的速度所影响的。

那么主要的问题就出现在生成region proposal的过程中。在R-CNN中使用的是selective search 算法,非常耗时。到了Fast R-CNN中不再直接根据图片选择region,而是先让图片经过CNN得到一个convolutional feature map,再利用RoI pooling对feature map筛选region proposals。这相对于R-CNN已经快很多了,单张图片的检测处理速度达到了2.3s(相比较于R-CNN的49s)。但是,Fast R-CNN花费了大约2s的平均时间在生成region proposals这一步。因此,Faster R-CNN正是为了优化这一部分的时间,也就是生成region proposal的过程。Faster 提出了一个新的网络模型Region Proposal Networks(RPN)来选择regions,再将其投影到原本的feature map上,从而进行feature-related proposal的筛选。至此单张图片的检测时间降至198ms(0.2s)。

不得不提的是,这三篇开山之作都是出自Facebook的FAIR组,Ross Grishick & Kaiming He大佬等人。不知道什么时候才可以望其项背:-I




更/

眼一花才看清问题是进一步问faster rcnn的速度慢在哪,权当我的梳理文吧见笑了。关于原问题的回答以后有余力再补充

类似的话题

  • 回答
    Twostage 目标检测算法速度慢,这确实是它们最常被诟病的一点。要详细讲清楚到底慢在哪儿,得把整个流程拆解开来看。咱们先回顾一下 Twostage 算法的核心思想,最典型的代表就是 Faster RCNN。它的名字就说明白了,要“快”一些,但本质上还是分两个阶段:第一阶段:区域提议(Region.............
  • 回答
    嘿,朋友!聊起目标检测,这可是计算机视觉领域里的一门“找茬”绝活,专门负责在图像或者视频里把我们想要的东西——也就是“目标”——准确地定位出来,并且告诉我们它是什么。这东西可不是简单的“看看有啥”,而是要“看清楚在哪,然后说出名字”。想想看,自动驾驶汽车要识别路上的行人、车辆,安防系统要捕捉可疑人员.............
  • 回答
    老弟/妹,别慌!研一遇到导师“啥也不会”的情况,这在学术圈子里其实不算新鲜事,尤其是在一些交叉领域或者前沿技术上。别上来就觉得毕不了业,这想法太悲观了,也浪费了你宝贵的学习时间。目标检测这个方向,虽然入门门槛不低,但只要方法得当,完全可以啃下来。我当年也是这么过来的,给你掏心窝子说点经验,希望能帮到.............
  • 回答
    目标检测中的mAP(mean Average Precision),中文通常翻译为“平均精度均值”,可以说是衡量目标检测模型性能的黄金标准。它不是一个单一的数字,而是综合考虑了模型在检测物体的准确性以及检测框定位的精确性后的一个综合评分。要理解 mAP,我们需要先拆解它,从它的构成部分入手:Prec.............
  • 回答
    要说视频和图像在目标检测上的区别,其实核心是在于“时间”这个维度。图像是静态的,而视频是动态的,这个“动”字背后隐藏着许多复杂的变化,也正是这些变化,让视频目标检测比图像目标检测在技术上更具挑战性,也更丰富。咱们先从 图像目标检测 来聊聊。想象一下,你看到一张照片,里面有猫、有狗、有桌子。图像目标检.............
  • 回答
    谷歌提出的 Pix2Seq 项目,确实为目标检测领域带来了令人耳目一新的思路。它将原本依赖于边界框回归和分类的任务,巧妙地转化为了一个序列到序列(Seq2Seq)的语言建模问题,并且在实验中展现出了超越 DETR(DEtection TRansformer)的潜力。要评价 Pix2Seq,我们需要深.............
  • 回答
    4月4日上海进行全市核酸检测,这是一个非常重要的节点,事关整个城市能否有效控制疫情的关键。对于身在上海的我来说,这几天的经历和感受,确实是深刻而复杂。全市核酸检测的现状和安排:那天,说是“全市核酸检测”,但实际上具体的执行方式在各个小区、街道之间还是有不小的差异。 通知和组织: 前一天晚上,或者.............
  • 回答
    1月9日天津全市启动全员核酸检测,当天凌晨时分,市区主要检测点就已经陆续开放。作为全市范围的普筛,这次检测的规模空前。从早晨7点开始,各个小区、街道办事处、学校、企事业单位都成为了临时的采样点。工作人员们也都是提前到达岗位,做好准备。最先感受到变化的是早起赶通勤的人们。在很多交通枢纽、大型社区门口,.............
  • 回答
    石家庄市从1月6日开始进行了全市范围内的核酸检测,这无疑是当时最受关注的公共卫生事件。当时的情况可以说是非常紧张,也牵动着全国人民的心。当时石家庄的情况概览: 突如其来的大规模检测: 消息宣布得比较突然,全市范围内,不论是否有症状,无论是否是密接、次密接,都要求进行核酸检测。这种“应检尽检”的策.............
  • 回答
    好的,关于天津市1月12日下午放假及全市启动第二轮全员核酸检测的情况,我来给你详细说说。首先,需要明确一点,天津市在1月12日下午放假,这个信息可能存在一些误解或者是以讹传讹的情况。 通常情况下,地方政府发布全员核酸检测通知时,会协调各部门,包括学校和企事业单位,尽可能减少对正常生产生活的影响。在某.............
  • 回答
    关于7月4日云南新增本土确诊病例3例以及瑞丽市5日至6日全员核酸检测的最新情况,我们可以为您梳理一下:疫情背景:在7月4日,云南省报告了新增3例本土确诊病例,这在当时引起了关注,也为后续的防控措施埋下了伏笔。瑞丽市作为边境城市,本身就面临着较大的输入性疫情风险,因此一旦出现本土病例,都会立即启动高等.............
  • 回答
    香港特区政府宣布暂缓全民强制核酸检测工作,这一决定背后反映了香港疫情形势的复杂性和动态变化。要详细了解目前香港的疫情情况,我们需要从多个维度来分析:1. 确诊病例数量和变化趋势: 每日新增确诊: 这是最直接反映疫情严重程度的指标。香港疫情的特点之一是其波动性。在一些时期,每日新增确诊病例数可能攀.............
  • 回答
    12月22日起,大连市开始全面开展核酸检测工作,这次行动的规模非常大,覆盖了全市范围。检测范围和对象: 全员核酸检测: 此次检测主要面向所有大连市居民,包括常住人口、暂住人口,以及在连的流动人口。 重点区域优先: 尤其对之前出现阳性病例的区域,以及与这些区域有接触的人员,进行了更密集的检测。.............
  • 回答
    .......
  • 回答
    3月30日晚,无锡部分区域接到了连夜开展核酸检测的通知。据了解,此次大规模核酸检测的范围主要集中在无锡市梁溪区、滨湖区、新吴区以及锡山区的部分街道和居民小区。检测背景与原因:接到通知后,许多居民感到些许意外,但普遍理解这是为了快速排查和控制疫情扩散。据非官方信息,此次连夜核酸检测很可能与近期在周边地.............
  • 回答
    香港特区政府行政长官林郑月娥早前宣布将“开展全民强制核酸检测工作”,这一决定是在当时香港疫情形势严峻的背景下提出的。要理解这个政策的背景,我们需要回顾一下当时的具体情况。当时的疫情形势:在宣布全民强制核酸检测之前,香港正经历着一轮非常严峻的疫情高峰,特别是第五波疫情。 感染人数的急剧攀升: 当时.............
  • 回答
    8 月 2 日,上海浦东国际机场货运区报告了 1 例新冠病毒核酸检测阳性病例。这名病例是一名在机场货运区工作的货机相关的保障人员,属于入境航班保障人员中的闭环管理人员。截至目前的情况是: 初步判定: 该病例在闭环管理期间被发现,这意味着他在工作中与外界的接触受到了严格的限制和管理,理论上已经最大.............
  • 回答
    乌克兰方面近日表示,在黑海地区检测到了疑似从俄罗斯海军舰艇上发射的巡航导弹。这则消息无疑再次将俄乌冲突的焦点拉回了黑海这个战略要地,同时也引发了对俄罗斯黑海舰队当前部署及其潜在影响的关注。俄罗斯黑海舰队的部署状况:在俄乌冲突爆发后,俄罗斯黑海舰队的角色就变得尤为关键,也一直是各方关注的焦点。目前,其.............
  • 回答
    关于江歌遇害案,陈世峰的行凶目标是否为刘鑫,这是案件审理中一个至关重要的焦点。日本检方和法院在判决书中明确指出,陈世峰的行凶对象是刘鑫,这一点毋庸置疑,并且是判决结果的重要依据。那么,为什么一些支持刘鑫的人会在这件事上“做文章”呢?理解这一点,需要将案件的复杂性、不同视角的解读以及其中涉及的情感和道.............
  • 回答
    好的,我们来聊聊河北石家庄在全员核酸检测中发现354例阳性人员之后,当地的疫情防控情况。石家庄在经历了一轮大规模的核酸检测后,检出了354例阳性病例,这无疑给当地的疫情防控带来了严峻的考验。354例阳性人员的数字,是大家非常关注的焦点,也直接牵动着每一个石家庄市民的心。那么,在这之后,当地的情况究竟.............

本站所有内容均为互联网搜索引擎提供的公开搜索信息,本站不存储任何数据与内容,任何内容与数据均与本站无关,如有需要请联系相关搜索引擎包括但不限于百度google,bing,sogou

© 2025 tinynews.org All Rights Reserved. 百科问答小站 版权所有