ROI Align的实现原理2_代码实现

ROI-Align 原理理解 -----   对背景问题的理解  ----- 之前一直在想一个问题:一个Label在原图上标记出一个包含目标的区域。这个框在特征提取后,大小被缩小到了什么程度? 如果这个label框本身就不大,那么经过几层池化之后,是不是在最后的feature map上都没有一个位置,能够对应到这个区域? 目标在特征提取过程中,由于这种深度结构导致目标被【腐蚀】或者说该目标的特征被淹没。 这个问题更广义... 阅读详情

​
书接上文,上一次分析了一下ROI Align的原理是如何实现的,一直想知道具体细节是如何实现的,这里找了相关资料进行学习.

上一篇原理介绍博客:ROI Align的实现原理_dlvector的博客-优快云博客

输入输出的官方文档

Arguments:
input (Tensor[N, C, H, W]): input tensor
boxes (Tensor[K, 5] or List[Tensor[L, 4]]): the box coordinates in (x1, y1, x2, y2)
format where the regions will be taken from. If a single Tensor is passed,
then the first column should contain the batch index. If a list of Tensors
is passed, then each Tensor will correspond to the boxes for an element i
in a batch
output_size (int or Tuple[int, int]): the size of the output after the cropping
is performed, as (height, width)

原来batch_id在第0维…且数值为绝对位置。其格式应为[batch_id, x1, y1, x2, y2]

,其中(x1, y1)为左上角,(x2, y2)为右下角。

from torchvision.ops import nms, roi_align, roi_pool
import torch

# fp = torch.randn([1, 1, 5, 5])
fp = torch.tensor(list(range(5 * 5))).float()
fp = fp.view(1, 1, 5, 5)
print(fp)
# [batch_id, x1, y1, x2, y2]
boxes = torch.tensor([[0, 0, 0, 1, 1]]).float()

pooled_features = roi_align(fp, boxes, [4, 4])
print(pooled_features)

pooled_features = roi_pool(fp, boxes, [4, 4])
print(pooled_features)

输出打印,差异点在于roi_align输出的是带有小数的(宽,高

tensor([[[[ 0.,  1.,  2.,  3.,  4.],
          [ 5.,  6.,  7.,  8.,  9.],
          [10., 11., 12., 13., 14.],
          [15., 16., 17., 18., 19.],
          [20., 21., 22., 23., 24.]]]])
tensor([[[[0.7500, 1.0000, 1.2500, 1.5000],
          [2.0000, 2.2500, 2.5000, 2.7500],
          [3.2500, 3.5000, 3.7500, 4.0000],
          [4.5000, 4.7500, 5.0000, 5.2500]]]])
tensor([[[[0., 0., 1., 1.],
          [0., 0., 1., 1.],
          [5., 5., 6., 6.],
          [5., 5., 6., 6.]]]])

参考:

https://phabricator.mitk.org/file/data/oh4aj4voo5ldehmaf6aj/PHID-FILE-yudyawc6exqxmt7f2qby/fil​​​​​​e

https://medium.com/@andrewjong/how-to-use-roi-pool-and-roi-align-in-your-neural-networks-pytorch-1-0-b43e3d22d073

faster-rcnn.pytorch/roi_align.py at master · jwyang/faster-rcnn.pytorch · GitHub

Region of interest pooling explained

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

【torchvision】roi_align、roi_pool使用说明_StevenGerrad的博客-优快云博客

c++代码实现

​

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

相关推荐

详解ROI-Pooling与ROI-Align

介绍ROI-Pooling与ROI-Align计算过程,从而分析两者区别

weixin_43750626的博客 1303

RoiAlign源码解析

/* * 参数解释 * bottom_data:输入的特征图数据,shape是(n,c,h,w) * bottom_rois:输入的roi数据,shape是(num_rois,5),第一维表示共有多少个rois,第二维是[batch_index,x1,y1,x2,y2],第一个值表示rois所在的batch_id,后四个是rois所在原图的坐标值,可以根据spatial_scale对应到特征图上 * nthreads:等于roipooling后输出的size,即num_rois*channels*pool.

zhuikefeng的博客 2741

ROI Align技术解析:从原理到PyTorch实现

在计算机视觉的目标检测与实例分割任务中,特征对齐精度直接影响模型性能。传统ROI Pooling方法因量化操作会引入空间误差,而ROI Align通过双线性插值和连续坐标映射,实现了亚像素级特征对齐。这种改进在Mask R-CNN等模型中显著提升了分割精度,同时保持了计算效率。从技术原理看,ROI Align解决了特征图与原始图像的空间对应问题,其PyTorch实现涉及双线性插值、边界处理等关键细节。该技术已成为现代目标检测框架的基础组件,在COCO等数据集上验证了其价值,并为可变形卷积等后续创新奠定了基础

weixin_30425949的博客 354

pytorch torchvision.ops.roi_align

pytorch的torchvision.ops.roi_align这个算子真的是坑我好多天啊!害我连续加班半个月!二阶段目标检测后面用roi_align来提取特征。 接口官方说明:https://pytorch.org/vision/stable/generated/torchvision.ops.roi_align.html?highlight=roi_align#torchvision.op...

无左无右的博客 2309

ROIAlign:ROIAlign来自Mask-RCNN

ROIAlign ROIAlign来自Mask-RCNN 这是Mask-RCNN的ROIAlign的体现: ://arxiv.org/abs/1703.06870。 考虑到matconvnet( )中没有ROIAlign,我只是写了这句话,以便我们可以在matlab中使用roialign层。 该代码以CUDA(.cu)和mex文件编写,您可以在带有GPU的matlab中使用它。 在matlab中使用命令: mexcuda roialign.cu 编译文件。 然后您应该将这些代码添加到matconvnet中的vl_simplenn.m case 'roialign' res(i+ 1 ).x = roialign(res(i).x,rois,l.subdivisions,l.transform); 这是前向传播 case 'roialign' res(i).

Python自动化测试报告:飞书群机器人消息卡片实战

本文详细介绍了如何利用Python和飞书群机器人实现自动化测试报告的智能通知。通过构建可定制的消息卡片,将测试结果(如通过数、失败数)以清晰、美观的格式自动推送至团队群聊,并支持一键跳转查看详细报告,从而显著提升团队协作与问题响应效率。

k6l7m8n9的博客 811

pytorch torchvision.ops.roi_align 示例

import torchvision import torch input_ = torch.rand(3, 128, 24, 96) #[b,c,h,w] bbox = [[0,0.1,0.15,0.4,0.6], [0,0.1,0.15,0.4,0.6], [1,0.01,0.15,0.4,0.6], [1,0.1,0.25,0.7,0.6], [2,0.01,0.14,...

无左无右的博客 1387

电赛经验分享——赛前准备

⏩ 大家好哇!我是小光,想要成为系统架构师的嵌入式爱好者。⏩在之前的电赛中取得了省一的成绩,本文对电赛比赛前需要准备什么做一个经验分享。加入小光嵌入式交流群(qq群号:737327353)免费获取博主所有资料哦!

qq_52608074的博客 7778

【扒代码】roi_align的定义

这段代码是一个名为 roi_align的函数的部分实现,它用于执行区域兴趣(RoI)对齐操作,通常用于计算机视觉任务中,例如目标检测和分割。这个函数的主要目的是从输入特征图中提取特定区域,并将这些区域调整到指定的输出尺寸。

2301_77549977的博客 500

量化交易中的烂板策略:短线高频交易实战解析

量化交易通过算法模型实现自动化投资决策,其中短线高频交易是典型应用场景。从市场微观结构看,涨停板现象反映了资金博弈的动态平衡,而烂板策略正是捕捉涨停板短暂打开时的交易机会。该策略结合L2行情数据和Python量化框架,通过参数化规则识别特定形态的烂板股票,在风险可控前提下追求超额收益。实战中需严格遵循动态仓位管理和止损纪律,适用于A股市场短线交易。高频交易与量化分析技术的结合,为投资者提供了新的alpha挖掘工具。

weixin_30432579的博客 364

Altium AD20差分对走线设置方法

AD20的PCB差分对走线设置 1、原理图添加差分对 先在原理图中,讲要设置差分对的网络对添加网络标签。 名称前面的内容要相同,后缀用 _P 和 _N 加以区分。 最后使用 放置差分对,将两个网络标记。 2、编译,更改到PCB 编译,更新到PCB,确认差分对网络的出现。 验证更改,执行更改。将改动更新到PCB中。 PCB中,可通过 右下角 Panels - 调出 PCB 显示。来对已添加的差分对进行查看。 这时原本的走线有一点点小问题,需要删掉原来走线,设置差分对规则,并重新布线。

Mark_md的博客 3万+

使用torchvision 中的roi_pool/roi_align函数时报错

使用torchvision 中的roi_pool函数时报错 Traceback (most recent call last): File "/home/wkj/cj/roi/try.py", line 39, in <module> pooled_regions = torchvision.ops.roi_align(image.cuda(),[boxes.cuda()]...

weixin_43820848的博客 4890

BERTopic模型入门教程(附代码+参数调节)

BERTopic 是一种用于从文本数据中提取主题模型的新型方法。通过结合 BERT嵌入和传统的主题模型来生成语义丰富的主题。传统的主题模型(如LDA)主要依赖于词频矩阵,而 BERTopic 通过预训练语言模型生成高维语义嵌入来捕捉词语间的复杂关系,因此可以更好地处理上下文信息。BERTopic模型可以看作是创建其主题表示的一系列步骤。核心原理如下:就本质而言,BERTopic就是一个拼装框架,可以把每部分都替换成其他模型,只要完成任务即可。

m0_52069102的博客 1万+

使用Tensorflow2.0实现roi-Align和FPN

Tensorflow2.0写roi-Align和FPN 在网上看了很多关于roi-Align的博客,只有一些理论概念。没有一些代码,看着也是很懵。就自己在Faster-RCNN把roi-Align和FPN的代码提取了出来来理解。代码在对下面。 roi-Align是在Mask RCNN中使用以便使生成的候选框region proposal映射产生固定大小的feature map时提出的。 先贴出一张图,接着通过这图解释RoiAlign的工作原理 同样,针对上图,有着类似的映射 1)Conv layers使用

qq_42449401的博客 887

HybridCLR热更新打包报错全解析:从原理到实战解决方案

热更新技术是现代游戏和应用开发中实现动态内容交付与Bug修复的核心机制,它允许开发者在无需重新发布完整应用的情况下更新代码逻辑。其原理通常涉及在运行时加载并执行新的代码模块,这要求框架在底层实现安全的代码隔离、内存管理与元数据桥接。在Unity生态中,HybridCLR作为基于IL2CPP的高性能热更新解决方案,通过补充元数据和AOT泛型引用技术,实现了对C#代码的原生级热更支持,显著提升了开发迭代效率与线上问题修复能力。然而,在实际的工程实践中,尤其是在面向Android、iOS等多平台打包构建时,开发者

weixin_29017445的博客 308

MAVLink协议详解

MAVLink是为微型飞行器MAV(Micro Air Vehicle)设计的(LGPL)开源的通讯协议。是无人飞行器和地面站(Ground Control Station ,GCS)之间,以及无人飞行器之间通讯常用的协议。APM、PIXHAWK飞控,Mission Planner、QGroundControl地面站均使用了MAVLink协议进行通讯。 MAVLink源码下载地址(现已更新至v2.0):https://github.com/mavlink/qgroundcontrol   用户手册:ht

程序猿老樊的博客 7702

ROI Align 代码解析个人心得(仅供参考)

关于ROI Align的算法原理讲解,博客有很多,但是暂时没发现有讲解源码的,笔者最近使用Faster rcnn代码时就想仔细了解一下roi align的代码。于是就读了一下其代码,代码由C语言写的,也不是非常难理解,在这里贴一下自己对代码的理解,若有错误,欢迎大家批评指正。 void ROIAlignForwardCpu(const float* bottom_data, const float...

qq_43088746的博客 3757

EML 全面实践指南:把 SAP RAP 业务对象玩出工程化的稳定与优雅

本文面向掌握ABAP基础、正在实施RAP的开发者,深入讲解EML(Entity Manipulation Language)的核心用法。文章围绕READ ENTITIES、MODIFY ENTITIES、COMMIT ENTITIES三大语句,详细解析其语义、类型体系、事务机制及工程实践。重点内容包括:字段裁剪、派生类型、草稿控制、批量更新、事务缓冲与保存序列等关键技术点,并配合真实案例代码。旨在帮助开发者在SAP ABAP On-Premise和BTP环境中构建可维护、可演进的业务对象访问层,同时避免常见

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 324

ROI Align原理介绍

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

qq_36892712的博客 4992

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

ROI Align原理记录

roi align

HEU689的博客 535

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

ROI Align的实现原理

ROI Pooling 的局限性分析 在常见的两级检测框架(比如Fast-RCNN,Faster-RCNN,RFCN)中,ROI Pooling 的作用是根据预选框的位置坐标在特征图中将相应区域池化为固定尺寸的特征图,以便进行后续的分类和包围框回归操作。由于预选框的位置通常是由模型回归得到的,一般来讲是浮点数,而池化后的特征图要求尺寸固定。故ROI Pooling这一操作存在两次量化的过程。 将候选框边界量化为整数点坐标值。 将量化后的边界区域平均分割成 k x k 个单元(bin),对每一个单元的边.

dlvector的博客 1893

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

什么是 RoI Align:解决 RoI Pooling 在像素对齐上的问题

RoI Align是计算机视觉中用于精确提取变尺寸感兴趣区域特征的关键组件,由Kaiming He等人在2017年提出。相比传统RoI Pooling,它通过双线性插值和浮点坐标采样避免了量化误差,显著提升了小物体检测和实例分割的精度。核心原理是将RoI分成网格但不量化边界,在每个bin内采样并插值计算特征值。RoI Align在医疗影像和自动驾驶等需要高精度的领域表现优异,未来可能扩展到3D视觉和高效计算方向。尽管计算量稍大,但其精确性使其成为现代检测框架的标准组件。

彬彬侠的博客 1885

RoI Pooling 与 RoI Align 有什么区别?

↑ 点击蓝字关注视学算法作者丨AlexChung@知乎来源丨https://zhuanlan.zhihu.com/p/161540817编辑丨极市平台基本概念RoIRoI(Region...

zandaoguang的博客 785

【转载】ROI-Align 原理理解

----   对背景问题的理解  ----- 之前一直在想一个问题:一个Label在原图上标记出一个包含目标的区域。这个框在特征提取后,大小被缩小到了什么程度? 如果这个label框本身就不大,那么经过几层池化之后,是不是在最后的feature map上都没有一个位置,能够对应到这个区域? 目标在特征提取过程中,由于这种深度结构导致目标被【腐蚀】或者说该目标的特征被淹没。 这个问题更广义的...

jessican_uestc的博客 755
上一篇: python深度拷贝和浅拷贝的差异
下一篇: 网络模型不收敛的可能原因
dlvector
博客等级 码龄10年 85粉丝 142原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值