理解RoIAlign实际操作
我们的模型取一个大小为 512x512x3 (宽度x高度x RGB)的图像输入,VGG16将其映射为一个 16x16x512的feature map。比例因子是 32 。
接下来,我们将使用其中一个proposed RoIs ( 145x200box),并尝试将其映射到feature map上。因为不是所有的对象维度都可以整除以32,所以我们没有将RoI与网格对齐。
- (9.25,6)— top left corner
- 6.25— width
- 4.53 — height
再一次,我们选择池化层的大小为 3x3,所以最终的形状是 3x3x512(这只是一个任意的例子,以便更容易在图像上显示。你的池化层可能有不同的大小)。
每个框的大小由映射的RoI的大小和池化层的大小决定。我们使用了一个 3x3 的池化层,所以我们必须将映射的RoI ( 6.25x4.53)除以3。这样我们就得到了一个高为 1.51 ,宽为 2.08 的方框(我在这里约简以使它更容易)。现在我们可以把我们的方框放入映射的RoI中:
如果查看第一个框(左上角),可以注意到它覆盖了6个不同的网格单元格。为了提取池化层的值,我们必须从池化层中采样一些数据。为了对数据进行采样,我们必须在盒子里创建 四个采样点。
你可以 通过方框的高度和宽度除以3 来计算每个点的位置。
在我们的例子中,我们计算第一个点(左上角)的坐标如下:
- X = X_box + (width/3) * 1 = 9.94
- Y = Y_box + (height/3) * 1 = 6.50
为了计算第二点(左下角),我们只需要改变Y:
- X = X_box + (width/3) * 1 = 9.94
- Y = Y_box + (height/3) * 2 = 7.01
我们可以应用双线性插值对这个方框进行数据采样。图像处理中常用双线性插值对颜色进行采样,其方程如下:
例如 第一个点
当您从我们的方框中取出第一个点时,除非它已经被取走了,您将它与最邻近的单元格连接(正好在中间)。在本例中,我们的点的坐标是**(9.44,6.50)**。单元格左上角最接近的中间位置是**(9.50,6.50)**(如果我们的点只比网格高0.01,那么它应该是(9.50,5.50))。然后我们必须选择一个左下角的点,最近的是**(9.50,7.50)**遵循同样的规则,我们选择**(10.50,6.50)**和**(10.50,7.50)**作为右上角和右下角的点。在RoI上面,您可以看到整个计算过程,从而得到第一个点(0.14)的值。
第二个点
这一次我们从:
- top-left: (10.50, 6.50)
- bottom-left: (10.50, 7.50)
- top-right: (11.50, 6.50)
- bottom-right: (11.50, 7.50)
第三个点:
- top-left: (9.50, 6.50)
- bottom-left: (9.50, 7.50)
- top-right: (10.50, 6.50)
- bottom-right: (10.50, 7.50)
第四个点:
- top-left: (10.50, 6.50)
- bottom-left: (10.50, 7.50)
- top-right: (11.50, 6.50)
- bottom-right: (11.50, 7.50)
计算出每个点值后 我们按照Max Pooling进行池化操作
内容来自一文读懂 RoIPooling、RoIAlign 和 RoIWarp_Fast
理解RoIAlign实际操作相关推荐
- 全面深入彻底理解Python切片操作【原创】
全面深入彻底理解Python切片操作[原创] 我们基本上都知道Python的序列对象都是可以用索引号来引用的元素的,索引号可以是正数由0开始从左向右,也可以是负数由-1开始从右向左. 在Python中 ...
- JDBC基础理解与实现操作
一,基本理解 JDBC是通过Java语言来操纵数据库的一套API 全称(Java DataBase Connectivity)java数据库连接 JDBC就是一套标准接口 我们可以通过使用JDBC这套 ...
- 理解图像卷积操作的意义
数字信号处理中卷积 卷积一词最开始出现在信号与线性系统中,信号与线性系统中讨论的就是信号经过一个线性系统以后发生的变化.由于现实情况中常常是一个信号前一时刻的输出影响着这一时刻的输出,所在一般利用系统 ...
- 卷积及理解图像卷积操作的意义
转载:http://blog.csdn.net/chaipp0607/article/details/72236892 https://www.zhihu.com/question/22298352 ...
- backtrader不理解策略迭代表,就无法彻底理解多股操作
技术教程<扫地僧Backtrader给力教程系列一:股票量化回测核心篇> backtrader文档本身并没有提出"策略迭代表"这个概念,这是我们在自编教程中提出的概念. ...
- 简单理解Ext.DomQuery操作CSS3选择器
<!DOCTYPE html> <html lang="en"> <head><meta charset="UTF-8" ...
- 理解SparkSteaming窗口函数操作window()
需求场景: 一些业务场景,例如网站记录,每隔1个小时计算最近两个小时的pv量,还有一种业务场景的话先在内存中做累加再更新到redis中做累加,比如说每隔5秒统计最近5秒的数据的总和,再刷到redis中 ...
- 深入理解计算机系统 练习题3.8 理解计算机二元操作
我讲解这道题的目的是为了让大家理解结果为什么是那样的,假如对基础知识不是特别了解的人,可能会对答案有疑问,但是答案并没有详细讲解为什么会得到哪些答案. 这里推荐我写的另一篇博客,https://blo ...
- 说说我理解的SVN操作
SVN是什么 Svn是一个离线的代码管理,可以多个人一起修改,然后再将修改的内容提交到Svn中. 每一个svn服务器中的数据存储单位叫做存储,但是你不仅仅可以把整个存储当作你维护的内容,也可以将其中的 ...
- 龙之秘境java_Java-彻底弄懂netty-程序员深入理解NIO怎么操作buffer-知识铺
知识铺: 致力于打造轻知识点,持续更新每次的知识点较少,阅读不累.不占太多时间,不停的来唤醒你记忆深处的知识点. 一.Buffer使用场景 主要和Channel通道打交道,无论是从通道里读数据到Buf ...
最新文章
- 用指针式万用表欧姆档检测发光二极管
- linux命令冒号加叹号,Linux中的叹号命令
- js映射 nginx_浅析nginx刚刚发布的JavaScript能力nginScript
- 3到6年的.NETer应该掌握哪些知识
- java exec 关闭_如何正确关闭java ExecutorService
- NOIP 2011 Day 1
- Head First Java.第二版.中文完整高清版
- 阿里矢量图iconfont的两种使用方法
- delphi pi怎么得到?
- 每日词根——vad(走)
- 感知颗粒度与高手之间的关系
- 说说 褥羊毛和薅羊毛的那些事
- 三线制Pt100隔离器在掘进机电机保护系统中的应用
- html 剩余时间 自动减,HTML+CSS+JS实现今天的日期和今天剩余的时间
- 算法总结(六)Isomap(Isometric mapping等度量映射)和LLE(Locally Linear Embedding)的理解
- OrientDB部署
- 正则^[a-zA-Z\d]+$
- Android10以上自定义so加入白名单
- 一个汉字在不同的字符集中所占的长度
- 激光雷达(LiDAR)、光学相控阵雷达(OPA)和微波相控阵雷达(ESA)