ROI Pooling和ROI Align

简介: ROI Pooling和ROI Align都是为了解决目标检测RPN任务后得到的一系列proposals大小不一致的问题。

ROI Pooling和ROI Align都是为了解决目标检测RPN任务后得到的一系列proposals大小不一致的问题。

首先来介绍两个的思想

1 基本思想

1.1 ROI Pooling

假设有一张特征图大小为8x8(原图大小sxs),一个bbox坐标(0, 3, 7, 8),我们目标是获得大小为2x2的特征图作为后续网络的输入。
1.png
此时bbox的h=5,w=7。无法对半分,因此取整分,h分为2和3,w分为3和4(如果可以对半分即对半分)。然后在每一块内容中做max polling操作,得到2x2大小的输出作为下层网络的输入。

1.2 ROI Pooling的缺陷

既然已经存在ROI Polling为何发展了ROI Algin呢?这与ROI Polling的缺陷有关:

从上面可以看到ROI Polling可能经过了两次取整的操作,得到特征层中bbox坐标将特征层平分时进行的取整操作。
2.png
假设上图,一张800x800的原图,有一个大小为665x665的bbox。第一次取整操作即我们经过特征提取网络时将图像下采样32倍时,bbox大小665/32=20.78,ROI Polling直接量化为20。第二次取整操作即我们把特征层均分时,假设均分为7份,20/7=2.86,ROI Polling量化为20。经过上面两次量化取整,候选区域就会出现明显的偏差,ROI Algin解决了这个问题。

1.3 ROI Align

ROI Aligin为了解决上面的问题,取消了量化取整的操作,大概思想如下:

  1. 首先我们求得bbox在特征图上的坐标,不做量化取整的操作
  2. 将候选区域按照size分为一个个单元格,每个单元的边界也不做量化(例子默认size为2)

3.png

  1. 在每个单元格中取四个点(作者发现四个点效果最好),如上图中的蓝色点。
  2. 针对每一个蓝点,距离它最近的4个真实像素点的值加权(双线性插值),求得这个蓝点的值
  3. 在每个单元内对得到的四个蓝色点的值进行max polling操作,最终得到2x2的输出

1.4 ROI Align反向传播

https://www.pianshen.com/article/69221232781/#3%E3%80%81ROI%E5%B1%80%E9%99%90%E6%80%A7%E5%88%86%E6%9E%90

2 pytorch实现

暂时先总结一下pytorch的调用,以后回来补充怎么实现的!!!

2.1 函数声明

class: torchvision.ops.RoIAlign(output_size, spatial_scale, sampling_ratio)

2.2 参数

参数 可选值 描述
output_size int or Tuple[int, int] 输出大小
spatial_scale float 将输入坐标映射到框坐标的比例因子。默认值1.0。
sampling_ratio int 插值网格中用于计算每个合并输出bin的输出值的采样点数目。如果> 0,则恰好使用sampling_ratio x sampling_ratio网格点。如果<= 0,则使用自适应数量的网格点(计算为cell (roi_width / pooled_w),同样计算高度)。默认值1。

2.3 输入

  1. input:输入张量,Tensor[N, C, H, W]
  2. boxes:Tensor[K, 5] or List[Tensor[L, 4]]
相关文章
|
机器学习/深度学习 算法 PyTorch
深度学习笔记(十三):IOU、GIOU、DIOU、CIOU、EIOU、Focal EIOU、alpha IOU、SIOU、WIOU损失函数分析及Pytorch实现
这篇文章详细介绍了多种用于目标检测任务中的边界框回归损失函数,包括IOU、GIOU、DIOU、CIOU、EIOU、Focal EIOU、alpha IOU、SIOU和WIOU,并提供了它们的Pytorch实现代码。
5911 1
深度学习笔记(十三):IOU、GIOU、DIOU、CIOU、EIOU、Focal EIOU、alpha IOU、SIOU、WIOU损失函数分析及Pytorch实现
|
机器学习/深度学习 存储 人工智能
RAG系统文本检索优化:Cross-Encoder与Bi-Encoder架构技术对比与选择指南
本文将深入分析这两种编码架构的技术原理、数学基础、实现流程以及各自的优势与局限性,并探讨混合架构的应用策略。
1034 10
RAG系统文本检索优化:Cross-Encoder与Bi-Encoder架构技术对比与选择指南
|
监控 算法 自动驾驶
主流的目标检测算法是那种?
主流的目标检测算法是那种?
|
Java Shell API
实战教程:如何将自己的Python包发布到PyPI上
实战教程:如何将自己的Python包发布到PyPI上
4632 0
实战教程:如何将自己的Python包发布到PyPI上
|
算法 Go vr&ar
YOLOv8模型yaml结构图理解(逐层分析)
YOLOv8模型yaml结构图理解(逐层分析)
24864 1
|
机器学习/深度学习 算法 计算机视觉
目标检测算法
目标检测算法
|
容器 应用服务中间件 nginx
|
人工智能 API 开发者
免费使用Kimi的API接口,kimi-free-api真香
今年AI应用兴起,各类智能体涌现,但API免费额度有限。为解决这一问题,GitHub上的[kimi-free-api](https://github.com/LLM-Red-Team/kimi-free-api)项目提供了方便,支持高速流式输出、多轮对话等,与ChatGPT接口兼容。此外,还有其他大模型的免费API转换项目,如跃问StepChat、阿里通义Qwen等。该项目可帮助用户免费体验,通过Docker-compose轻松部署。只需获取refresh_token,即可开始使用。这个开源项目促进了AI学习和开发,为探索AI潜力提供了新途径。
4840 3
|
机器学习/深度学习 测试技术 计算机视觉
注意力机制汇总,包括SE、CBAM、ECA等
注意力机制汇总,包括SE、CBAM、ECA等
3295 1
|
算法 程序员 C++
【Python 基础教程 05】超详细解析Python3注释:全面入门教程,初学者必读,了解Python如何 进行注释
【Python 基础教程 05】超详细解析Python3注释:全面入门教程,初学者必读,了解Python如何 进行注释
1113 1