ROI Pooling原理及实现

article/2025/9/22 6:16:02

目标检测architecture通常可以分为两个阶段:
(1)region proposal:给定一张输入image找出objects可能存在的所有位置。这一阶段的输出应该是一系列object可能位置的bounding box。这些通常称之为region proposals或者 regions of interest(ROI),在这一过程中用到的方法是基于滑窗的方式和selective search。
(2)final classification:确定上一阶段的每个region proposal是否属于目标一类或者背景。
这里写图片描述
这个architecture存在的一些问题是:

  • 产生大量的region proposals 会导致performance problems,很难达到实时目标检测。
  • 在处理速度方面是suboptimal。
  • 无法做到end-to-end training。

这就是ROI pooling提出的根本原因,ROI pooling层能实现training和testing的显著加速,并提高检测accuracy。该层有两个输入:

  1. 从具有多个卷积核池化的深度网络中获得的固定大小的feature maps;
  2. 一个表示所有ROI的N*5的矩阵,其中N表示ROI的数目。第一列表示图像index,其余四列表示其余的左上角和右下角坐标;

ROI pooling具体操作如下:

  1. 根据输入image,将ROI映射到feature map对应位置;
  2. 将映射后的区域划分为相同大小的sections(sections数量与输出的维度相同);
  3. 对每个sections进行max pooling操作;

这样我们就可以从不同大小的方框得到固定大小的相应 的feature maps。值得一提的是,输出的feature maps的大小不取决于ROI和卷积feature maps大小。ROI pooling 最大的好处就在于极大地提高了处理速度。

ROI pooling example
我们有一个8*8大小的feature map,一个ROI,以及输出大小为2*2.

  1. 输入的固定大小的feature map
    这里写图片描述
  2. region proposal 投影之后位置(左上角,右下角坐标):(0,3),(7,8)。
    这里写图片描述
  3. 将其划分为(2*2)个sections(因为输出大小为2*2),我们可以得到:
    这里写图片描述
  4. 对每个section做max pooling,可以得到:
    这里写图片描述

整体过程如下:
这里写图片描述

说明:在此案例中region proposals 是5*7大小的,在pooling之后需要得到2*2的,所以在5*7的特征图划分成2*2的时候不是等分的,行是5/2,第一行得到2,剩下的那一行是3,列是7/2,第一列得到3,剩下那一列是4。

ROI Pooling 就是将大小不同的feature map 池化成大小相同的feature map,利于输出到下一层网络中。

代码实现

$ git clone git@github.com:deepsense-io/roi-pooling.git
$ cd roi-pooling
$ python setup.py install
from __future__ import print_functionimport tensorflow as tf
import numpy as npfrom roi_pooling.roi_pooling_ops import roi_pooling# 4x4 feature map with only 1 channel
input_value = [[[[1], [2], [4], [4]],[[3], [4], [1], [2]],[[6], [2], [1], [7]],[[1], [3], [2], [8]]
]]
input_value = np.asarray(input_value, dtype='float32')# regions of interest as lists of:
# feature map index, upper left, bottom right coordinates
rois_value = [[0, 0, 0, 1, 3],[0, 2, 2, 3, 3],[0, 1, 0, 3, 2]
]
rois_value = np.asarray(rois_value, dtype='int32')# in this case we have 3 RoI pooling operations:
# * channel 0, rectangular region (0, 0) to (1, 3)
#              xx..
#              xx..
#              xx..
#              xx..
#
# * channel 0, rectangular region (2, 2) to (3, 3)
#              ....
#              ....
#              ..xx
#              ..xx
# * channel 0, rectangular region (1, 0) to (3, 2)
#              ....
#              xxx.
#              xxx.
#              xxx.input_featuremap = tf.placeholder(tf.float32)
rois = tf.placeholder(tf.int32)
input_const = tf.constant(input_value, tf.float32)
rois_const = tf.constant(rois_value, tf.int32)
y = roi_pooling(input_const, rois_const, pool_height=2, pool_width=2)with tf.Session('') as sess:y_output = sess.run(y, feed_dict={input_featuremap: input_value, rois: rois_value})print(y_output)   

输出

[[[[ 3.  4.][ 6.  3.]]][[[ 1.  7.][ 2.  8.]]][[[ 4.  4.][ 4.  7.]]]] 

http://chatgpt.dhexx.cn/article/qD0CQWgc.shtml

相关文章

ROI数据分析

目录 1. 专业术语解读 2. 参考资料 1. 专业术语解读 ROI(Return On Investment)投入产出比ROI 是指通过投资而应返回的价值,即企业从一项投资活动中得到的经济回报,通俗点来说就是我们获得的收益和投入成本的比值。 如下图所示,比较多个渠道的效果,寻找最大的ROI渠道。…

ROIAlign源码详细解析

ROI Align 是在Mask-RCNN这篇论文里提出的一种区域特征聚集方式, 很好地解决了ROI Pooling操作中两次量化造成的区域不匹配(mis-alignment)的问题。 其中ROI Align用的是双线性插值(内插)来实现的,在分析源码前我们先来了解下什么是双线性插值。 插值定义&#xf…

Opencv----ROI设置

1 ROI概念 ROI是region of interest首字母的简写,翻译为感性趣的区域,其对象时图像。 对于图像,其实就是一个二维数组,只不过这个二维数组有点特殊,它有头信息,在头信息里会有描述这个二维数组的大小、图片…

HALCON_C#_交互ROI

GDI知识讲解 GDI英文全称:Graphics Device Interface Plus, GDI是对GDI的扩展。 一. GDI概述 二.Graphics类介绍 Graphics 类封装了很多GDI绘图对象,并将这些对象显示到设备上。创建Graphics对象也被称为创建一个画板,创建画板一共…

OpenCV之图像ROI与ROI操作

python代码: import cv2 as cv import numpy as npsrc cv.imread("./test.png") cv.namedWindow("input", cv.WINDOW_AUTOSIZE) cv.imshow("input", src) h, w src.shape[:2]# 获取ROI cy h//2 cx w//2 roi src[cy-100:cy100,c…

ROI Pooling和ROI Align、ROI Warp解析

文中很多内容来源于其他博客,较为详细,有需要可直接按目录跳选到自己需要的部分。 目录 简单介绍 实验比较 ROI理解 ROI Pooling ROI Pooling理解 ROI Pooling example ROI Pooling局限性 ROI Align理解 双线性插值法 ROI Align的反向传播 R…

RoI Pooling 和 RoI Align

RoI Pooling 和 RoI Align 一、背景和基本概念1.背景2.基本概念 二、RoI Pooling原理1.目的2.步骤(以输出RoI feature大小为225为例)Step1Step2Step3Step4 三、RoI Align原理1.目的2.步骤(以输出RoI feature大小为225为例)step1St…

ROI Pooling解析

ROI Pooling最早由Ross Girshick在2015年的论文fast rcnn中提出,是对ROI(Region of Interest)的Pooling操作,广泛应用于物体检测的研究领域。该操作旨在对输入特征图中不同大小的ROI利用池化方法获得固定大小的输出特征图。 ROI Pooling层的输入&#x…

ROI

栗子&#xff1a; #include<cv.h> #include<highgui.h> using namespace cv; //方法1&#xff0c;假如区域为长方形&#xff0c;使用MAT 构造函数设置区域内的值为255 int main() {Mat imageimread("boldt.jpg");//初始化掩模矩阵Mat mask Mat::zeros(…

OpenCV--0016:图像ROI与ROI操作

文章目录 一、图像ROI1. 概念2. 图像ROI操作2.1 矩形感兴趣区域2.1.1 使用Rect函数2.1.2 使用Range2.1.3 应用实例 2.2 不规则ROI区域2.2.1 通过inRange函数生成mask2.2.2 通过“与”操作提取ROI 一、图像ROI 1. 概念 图像ROI&#xff08;region of interest&#xff09;是指…

ROI pooling 和 ROI Align详解

ROI Align 是在Mask-RCNN这篇论文里提出的一种区域特征聚集方式, 很好地解决了ROI Pooling操作中两次量化造成的区域不匹配(mis-alignment)的问题。实验显示&#xff0c;在检测测任务中将 ROI Pooling 替换为 ROI Align 可以提升检测模型的准确性。 ROI Pooling 的局限性分析 …

【深度学习】ROI Pooling 和 ROI Align 计算机视觉 目标检测

文章目录 ROI Pooling和ROI Align&#xff1a;一篇好的文章ROI Pooling 如何计算&#xff1f;AdaptiveMaxPool2d 在做啥Fast RCNN或者Faster RCNN中都使用了ROI PoolingROI Align ROI Pooling和ROI Align&#xff1a; &#xff08;1&#xff09;ROI Pooling 是为了让特征图输出…

ROI Pooling

RCNN ref 1 步骤: 1.使用Selective Search方法生成候选区域 2.对每一个候选区域使用CNN进行特征提取 3.对提取到的特征送入到每一类的SVM分类器 判断该区域是否属于该类特征 4.使用回归器精修候选框的位置 候选框搜索阶段: 使用selective search方法生成候选框,由于CNN提取…

ROI 详解

SPPNet、roi pooling 和 average pooling之间的区别&#xff0c;都是起到对任意大小的输入产生固定的输出的作用。其中SPPNet、roi pooling是一样的。 下面对ROI Pooling 进行详解&#xff1a; ROI是Region of Interest的简写&#xff0c;指的是在“特征图上的框”&#xff1…

【深度学习小知识】ROI到ROI pooling 再到ROI Align

ROI&#xff01;RoI Pooling&#xff01; ROI详解RoI Pooling详解Pooling操作ROI pooling ROI Align详解 ROI详解 Region of interest(ROI),中文译为感兴趣区域。在计算机视觉领域&#xff0c;从输入的图像中框选处理待处理的区域就是ROI。 ROI / Region proposals大致过程&am…

MD5密钥

这里写自定义目录标题 欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题&#xff0c;有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants 创建一个自定义列表如何创建一个…

漫画戏说:如何破解MD5加密算法

本文将通过漫画的形式来解释&#xff1a;如何破解MD5加密算法。其中包括了暴力枚举法、字典法、彩虹表法三种破解MD5加密算法的方法。MD5破解原理都是利用了&#xff0c;被加密的数据与MD5加密算法所生成的哈希值并不是一一对应的关系&#xff0c;而是多对一&#xff0c;也就是…

基于量子计算的md5密码哈希破解方法

基于量子计算的md5密码哈希破解方法 背景 Md5密文破解&#xff08;解密&#xff09;可以说是网络攻击中的一个必不可少的环节&#xff0c;是黑客工具中的一个重要“辅助工具”。md5解密主要用于网络攻击&#xff0c;在对网站等进行入侵过程&#xff0c;有可能获得管理员或者其…

MD5与SHA

不管是MD5还是SHA&#xff0c;这一切的根本都是哈希算法&#xff0c;即单向函数 MD5 全称为 消息摘要算法版本5 &#xff08;Message Digest Algorithm 5&#xff09; 首先我要强调的是&#xff0c;MD5并不是加密算法&#xff0c;它是一种哈希散列算法。 但是其往往可以应用…

使用rainbowcrack破解md5密文

文章目录 1、rainbowcrack下载2、文件说明3、使用流程3.1 生成彩虹表3.2 排序彩虹表3.3 使用刚生成的彩虹表破解密文 4、实例4.1 生成彩虹表4.2 彩虹表排序4.3 破解密文 1、rainbowcrack下载 下载链接 2、文件说明 3、使用流程 环境&#xff1a;windows 前提&#xff1a;进入…