RoI Pooling 与 RoI Align 有什么区别?

详解 Mask-RCNN 中的 “RoIAlign” 作用 / 双线性插值的方法 首先设想一个场景,从一个图像中锚定了一个人的边界框 这个时候,要提取边界框中的特征,显然应该用 CNN 网络来做这个工作。CNN 处理之后会形成一个但是 ... 阅读详情

作者丨AlexChung@知乎

来源丨https://zhuanlan.zhihu.com/p/161540817

编辑丨极市平台

基本概念

RoI

RoI(Region of Interest)是通过不同区域选择方法,从原始图像(original image)得到的候选区域(proposal region)。

需要注意的一点是RoI并不等价于bounding box, 它们可能看起来像,但是RoI只是为了进一步处理而产生的候选区域。

bounding box

boundding box 指的是检测目标的边界矩形框。

量化

量化(quatization)是指将输入从连续值(或大量可能的离散取值)采样为有限多个离散值的过程。也可以理解为,将输入数据集(如实数)约束到离散集(如整数)的过程。

RoI Pooling 和 RoI Align的作用

RoI Pooling 对于任意大小的图像输入,总能产生固定大小的输出。

Region features always the same size even if input regions have different sizes!

RoI Pooling 原理

RoI Pooling在Fast RCNN 中被首次提出。

RoI Pooling 直接从feature map 里截取各个兴趣区域(Region of Interest, RoI)的feature, 并换为为相同大小的feature输出。

RoI Pooling = crop feature + resize feature

通过上图的容易得到,RoI Pooling的作用本质上是为了将不同尺寸的RoI特征转换为相同的特征图输出,保证特征图展开(flatten)后具有相同的大小尺寸,能够与下层的全连接层连接,分别执行线性分类(linear classifier)和边框回归(bounding box regressor)。

执行步骤

  • 前置条件

对于输入图片,通过候选区域方法发网得固定大小数量(Faster RCNN中为256)的候选区域坐标,。

将整个输入图片喂入基网络(如vgg, resnet等)提取图片的特征(Fast RCNN 中为vgg网络的conv5层特征)。

下面以输出目标特征图尺寸大小为 进行说明

  • 对齐到网格单元(snap to grid cell)

首先将一个浮点数RoI量化为特征映射的离散粒度。表现为RoI对应的特征图的与原始特征图的网格单元对齐。这里为第一次量化操作。

下图中绿色框为RoI对应的实际区域(由于经过特征尺度变换,导致RoI的坐标会可能会落到特征图的单元之间), 蓝色框代表量化(网格对齐)后的RoI所对应的特征图。(得到到量化特征图尺寸为 )

  • 划分网格为子区域(bin)

粗略地将网格分为 (Fast RCNN 中设为 )个子网格区域。将上一步得到的量化RoI 特征进一步细分为量化的空间单元(bin)。这里进行了第二次量化操作。

为了得到输出的特征图为 ,这里的量化操作就是将上一步的到量化特征图划分为 个特征单元。如果无法通过直接均分得到量化的子区域,通过分别采取向上取整(ceil)和向下取整(floor)的到对应的单元尺寸大小。以当前 尺寸的特征图为例,对于宽度方向,,但是对于高度方向由于 , 通过向上和向下取整整,确定高度方向特征子区域的大小分别为2和3。

  • 最大池化操作

在每一个子区域执行聚合操作得到单元的特征值(一般是最大池化)。对上一步得到的 个子区域分别做最大池化操作,得到 的目标特征图。

执行结果

通过RoI Pooling, 对于具有不同特征大小的的输入区域, 都可以得到相同大小输出特征。

缺点

每一次量化操作都会对应着轻微的区域特征错位(misaligned), 这些量化操作在RoI和提取到的特征之间引入了偏差。这些量化可能不会影响对分类任务,但它对预测像素精度掩模有很大的负面影响。

RoI Align 原理

RoI Align 在 Mask RCNN 中被首次提出。

针对RoI Pooling在语义分割等精细度任务中精确度的问题提出的改进方案。

执行步骤

下面以输出目标特征图尺寸大小为 进行说明

  • 遍历候选每个候选区域,保持浮点数边界不做量化(不对齐网格单元);同时平均分网格分为 (这里为 )个子网格区域,每个单元的边界也不做量化。

  • 对于每个区域选择4个规则采样点(分别对应将区域进一步平均分为四个区域,取每个子区域的中点)。

  • 利用双线性插值计算得到四个采用点的像素值大小。下图为一个规则采样点所对应的邻近区域示意图。

  • 利用最大池化(max pooling)或平均池化(average pooling)分别对每个子区域执行聚合操作,得到最终的特征图。

执行结果

通过RoI Align, 对于具有不同特征大小的的输入区域, 都可以得到相同大小输出特征。

补充

双线性插值

  • 概念

双线性插值(bilinear interpolation),又称为双线性内插。在数学上,双线性插值是有两个变量的插值函数的线性插值扩展,其核心思想是在两个方向分别进行一次线性插值。在数字图像和音频处理领域都有应用。

在图像处理中,双线性插值法考虑围绕未知像素的计算位置的 最近邻域的已知像素。然后对这4个像素进行加权平均,以得出其最终的内插值。

  • 公式推导

如图,已知求位置像素P的像素值, 已知相邻 的像素区域对应位置和像素值,其中坐下角像素区域标号为11,左上角像素区域标号为12,右下角像素区域标号为21,右上角像素区域标号为22。

注意 , , , ,分别对应像素单元(区域)的中心点。

线性插值的计算公式描述:已知直线上两点 , , 求直线上任意一点 的值 。

()

第一步,利用公式执行两次线性插值操作:使用 和 计算 点的像素值大小;使用 和 计算 点像素值大小。

第二步, 利用公式 和公式 的到的结果,再次执行一次线性插值,得到目标位置 的像素值。

由于 , , , 分别为相邻像素的中间位置坐标,如下图所示。

容易得到 , ,因此双线性插值公式 可以进一步简化为

同理容易得到

公式 也可以进一步表示为

  • 公式物理意义

通过公式 可以看出, 双线性插值本质上是目标像素值相邻四个像素的像素值加权和值。

对于第一项 表示右上角像素 的像素值加权后的结果,其对应的权重公式 ,可以看出第一项权重本质上是目标像素 对应的对角像素所构成的矩形区域的面积大小,如上图紫色区域。同理其它三项也满足同样的规律。

当目标元素与某个相邻元素的距离越近,目标元素元素与该相邻像素的对角像素组成的矩形框面积大小就越大,该相邻像素对应的权重值就越大。

综上可以得到, 双线性插值本质上是目标像素所相邻的四个像素, 分别以像素对应的对角像素与目标像素的构成的矩形区域为权重,像素大小为值的加权和。

参考资料

http://cs231n.stanford.edu/slides/2020/lecture_12.pdf

https://towardsdatascience.com/understanding-region-of-interest-part-2-roi-align-and-roi-warp-f795196fc193

https://tjmachinelearning.com/lectures/1718/instance/instance.pdf

https://en.wikipedia.org/wiki/Bilinear_interpolation

图解 RoIAlign 以及在 PyTorch 中的使用(含代码示例) RoIAlign其实就是“精确版”的RoI Pooling。用于将任意尺寸的特征图,都转换为具有固定尺寸的小特征图。 阅读详情

相关推荐

RoI Pooling 和 RoI Align

RoI Pooling 和 RoI Align一、基本概念 一、基本概念 RoI(Region of Interest)是通过不同区域选择方法,从原始图像(original image)得到的候选区域(proposal region)

Tian__Gao的博客 5558

ROI Align原理介绍

是PyTorch的一个操作函数,用于在给定的RoIs(感兴趣区域)上执行空间变换网络。该操作函数可以被用于目标检测和物体识别等计算机视觉任务中,通常在RoI池化之前被执行。RoI Align(Region of Interest Align)是RoI池化的一种改进,它可以更加精确地对齐RoI中的特征,避免了RoI池化过程中的信息损失。具体来说,RoI Align操作首先将RoI区域划分为若干个小的网格,然后在每个网格内执行双线性插值,最终得到固定大小的特征图。

qq_36892712的博客 4993

RoI Pooling和Roi Align的区别(Mask RCNN的一个contribution )

最近两天再看mask rcnn的文章,这个文章其实就利用之前faster rcnn和FPN的工作,再加了一个mask分支就可以完成实例分割的任务,当然这个文章中我觉得主要有两个创新点:1、提出了RoAlign 1、RoI pooling 2、RoI Align ...

奥古斯都 586

ROI Pooling与ROI Align的区别

参考视频[[快速学懂]ROI pooling 和ROI align_哔哩哔哩_bilibili] Roi Pooling: 1、将生成的预测框投影到特征层时,通过取整的方式找离绿色框上的点最近的地方,得到蓝色框。 2、分区域进行最大池化下采样(Max Pooling) 此处weight=4,hight=5,划分区域的方法为(分为2x2):weight/2=2;hight/2=2.5非整数向下取整2,剩余3。 Roi Align: 1、直接先分为 2x2 的区域 2、获得像.

weixin_49038512的博客 2118

【深度学习笔记】全卷积网络FCN及 ROI Pooling 和 ROI Align 的区别

ROI Pooling:将RPN的浮点Bbox输出量化成整形;然后从feature map中裁剪出对应的ROI,并池化到指定大小ROI Align:直接使用RPN的浮点Bbox;将ROI等比例划分成多个cell,且cell的数目与最终要求的池化输出大小一致;从cell中随机采样一点数目的点(使用双线性差值计算浮点位置的特征),并进行池化得到该cell的输出。

热情、奔放、快乐编程! 670

计算机视觉 | 面试题:19、ROI Pooling 和 ROI Align 的区别是什么

问题 ROI Pooling 和 ROI Align 的区别是什么 ROI Pooling 和 ROI Align 是什么 如果你对目标检测网络 Faster R-CNN 和实例分割网络 Mask R-CNN 网络比较熟悉的话,那你应该也对这个话题非常熟悉。 在区域建议网络 RPN 得到候选框 ROI 之后,需要提取该 ROI 中的固定数目的特征(例如Faster R-CNN中的 7*7 )输入到后面的分类网络以及边界回归网络的全连接层中。Faster R-CNN中使用的方法是 ROI Pooling,而对

Mrrunsen的博客 1032

RoI Pooling 与 RoI Align 的区别

RoI Pooling 与 RoI Align 的区别

nanlaidefeng的博客 160

详细介绍:国产操作系统银行麒麟V10的下载和安装

银河麒麟是由。银河麒麟已经发展为银河麒麟服务器操作系统、桌面操作系统、嵌入式操作系统、麒麟云、操作系统增值产品为代表的产品线。为攻克中国软件核心技术“卡脖子”的短板,银河麒麟建设自主的开源供应链,发起中国首个开源桌面操作系统根社区openKylin,银河麒麟操作系统以openKylin等自主根社区为依托,发布最新版本。

lz17267861157的博客 1万+

SPP、ROI Pooling、ROI Align区别

三者设计初衷都是将feature map映射为固定维度,丢进全连接层 SPP 空间金字塔池化 spatial pyramid pooling 假设输入feature map的尺寸为H x W x C,使用一个H x W尺寸的pooling层进行处理,那么每一个通道C变成了一个值,整个输入得到了一个C维的输出;再分别用H/2 x W/2和H/4 x W/4尺寸的pooling层处理,得到了4xC和16xC维的输出,把三个结果concat在一起变成了一个21xC维的输出,其大小和输入的H与W无关。 简而

weixin_42486139的博客 978

基于多智能体深度强化学习的空地协同通信系统轨迹设计与访问控制

所属子方向: UAV assisted communication 名词注释 coordinated:协调、协同 base stations 基站,公用移动通信基站,是移动设备接入互联网的接口设备,是指在一定的无线电覆盖区中,通过移动通信交换中心,与移动电话终端之间进行信息传递的无线电收发信电台。 UAV-BS:无人机基站 cooperative-competitive game:合作竞争博弈 throughput :吞吐量,每秒比特数 bps,bits per second Determinis

skysys的研究小屋 4969

新手如何结合pbootCMS和宝塔面板快速构建网站

摘要: 新手可通过pbootCMS(轻量CMS)和宝塔面板(可视化工具)快速搭建网站,无需命令行。步骤包括:1) 准备服务器(Linux/CentOS7.x)和域名;2) 安装宝塔面板并配置LNMP环境(PHP7.4+MySQL5.7);3) 创建网站目录,上传并解压pbootCMS源码,设置文件权限;4) 运行安装向导,填写数据库信息和管理员账号;5) 测试前台/后台功能,优化性能并绑定域名。全程约30-60分钟,宝塔简化运维,pbootCMS便于内容管理,适合零基础用户。注意定期更新和备份以保障安全。

qinzhenyan的博客 1643

roi pooling, roi align等区别

ROI pooling

poppyty的博客 427

Python手记-9:Python LXML库XPath的爬取晋江书目

1. lxml库 lxml是功能最丰富且易于使用的库,用于处理Python语言中的XML和HTML,还可实现WEB爬取,官文参考:https://lxml.de/,完整的PDF文档下载链接https://lxml.de/lxmldoc-4.5.0.pdf,但是阅读起来……em……怪自己不够聪明的样子。 Linux下安装lxml库:[root@chengyu ~]# pip3 instal...

成屿的专栏 4万+

RoI-Pooling与RoI-Align的区别

原文链接:https://www.cnblogs.com/wangyong/p/8523814.html       一)、RoIPooling       这个可以在Faster RCNN中使用以便使生成的候选框region proposal映射产生固定大小的feature map       先贴出一张...

qq_34869928的博客 1805

Exchange Server 2013 运维系列——邮箱配额设置(管理中心)

邮箱配额需要设置三个参数: 1、发出警告限制:表示在向用户发出警告之前的最大存储限制。如果邮箱大小达到或超过指定值,Exchange 将向邮箱用户发送警告消息。 2、禁止发送限制:表示邮箱的“禁止发送”限制。如果邮箱大小达到或超过指定的限制,Exchange 将阻止邮箱用户发送新邮件,并显示一条描述性错误消息。 3、禁止发送和接收限制:表示此邮箱的“禁止发送和接收”限制。如果邮箱大小

白昼的技术专栏 1万+

【Qt】解决 FTH: (11284): *** Fault tolerant heap shim applied to current process. (亲测有效)

计算机\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers。容错堆垫片应用到当前的过程。这通常是由于以前的崩溃。win + r,输入regedit。

Fanjufei的博客 830

roi pooling和roi align的区别

(参考:ROI Pooling和ROI Align) 这两个都是用在rpn之后的。具体来说,从feature map上经过RPN得到一系列的proposals,大概2k个,这些bbox大小不等,如何将这些bbox的特征进行统一表示就变成了一个问题。即需要找一个办法从大小不等的框中提取特征使输出结果是等长的。 最开始目标检测模型Faster RCNN中用了一个简单粗暴的办法,叫ROI Pooling。 该方式在语义分割这种精细程度高的任务中,不够精准,由此发展来了ROI Align。 1.roi poolin

septoct的博客 528

【Claude】Auto Mode 触发安全分类器拦截的三种错误变体及对应处理 bug报错已解决

深度解析Claude Auto Mode安全分类器拦截的三种变体:内容拒绝、操作中断、累积触发,含完整排查流程与绕过策略。

博客 7601

【基础知识】ROI Pooling和ROI Align的联系与区别

转载自:https://www.cnblogs.com/wangyong/p/8523814.html 仅作记录学习~ ROI Pooling 这个可以在Faster RCNN中使用以便使生成的候选框region proposal映射产生固定大小的feature map 先贴出一张图,接着通过这图解释RoiPooling的工作原理 针对上图 Conv layers使用的是VGG16,feat_stride=32(即表示,经过网络层后图片缩小为原图的1/32),原图800800,最后一层特征图feat

All_In_gzx_cc的博客 583

大模型LangChain面试题及参考答案(上)

明确的输入输出类型:函数参数需包含类型注解,返回值需定义清晰的数据结构(如JSON格式),便于LLM理解参数含义和调用方式。工具描述:通过文档字符串或独立的描述对象(如Tool类)说明函数的功能、参数用途及调用场景,供LLM判断是否需要调用。示例:定义一个计算两个数之和的工具函数@tool"""计算两个整数的和。参数:- a:第一个整数- b:第二个整数调用场景:当用户需要进行数值加法计算时使用。"""除了内置的。

大模型大数据攻城狮的专栏 1142

Statistics and Machine Learning Toolbox

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

ROI pooling 和ROI Align有什么区别?

量化(quatization)是指将输入从连续值(或大量可能的离散取值)采样为有限多个离散值的过程。也可以理解为,将输入数据集(如实数)约束到离散集(如整数)的过程。ROI Pooling: RoI Align 在 Mask RCNN 中被首次提出。取每个子区域的中点.双线性插值(bilinear interpolation),又称为双线性内插。其核心思想是在两个方向分别进行一次线性插值。在图像处理中,双线性插值法考虑围绕未知像素的计算位置的 最近邻域的已知像素。然后对这4个像素进行加权平均,以得出其最

abc_123_45_6的博客 355

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

RoI pooling和 RoI Align的区别

ROI Pooling 和ROI Align: 两种计算归根结底都是池化步骤 两者的区别 两者的计算过程如下图所示:

Vodka_Lou的博客 266

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

卷积神经网络-解释 ROI Pooling 和 ROI Align 的区别

ROI Pooling:将RPN的浮点Bbox输出量化成整形;然后从feature map中裁剪出对应的ROI,并池化到指定大小ROI Align:直接使用RPN的浮点Bbox;将ROI等比例划分成多个cell,且cell的数目与最终要求的池化输出大小一致;从cell中随机采样一点数目的点(使用双线性差值计算浮点位置的特征),并进行池化得到该cell的输出。

857
上一篇: 确实会玩!教你用Python玩转数据
下一篇: YOLO算法最全综述:从YOLOv1到YOLOv5
机器学习算法那些事
博客等级 码龄9年 1633粉丝 62原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值