ROI Pooling和ROI Align

这两个问题一直不求甚解,今天又遇到了,是时候把它解决了
参考https://www.cnblogs.com/wangyong/p/8523814.html
https://blog.csdn.net/yychentracy/article/details/100172729
看了一些博客,好多都没讲清楚,直接就一个bin取四个点然后取最大值,都没说这个bin是怎么来的,为什么要取最大值,这篇博客讲得就比较清楚,我在这里按自己的理解再梳理一遍


ROI Pooling

为什么要做这个?
答:再得到proposal后,要将proposal扣出来,进行分类和回归
此时由于anchor有不同大小,前面也做了一次回归,所以proposal肯定是大小不统一的,为了统一proposal的大小,对现有proposal采样,使得采样后统一到一个尺寸
在这里插入图片描述
比如将上述proposal统一到2*2的大小,那么只需要将其平均分成4份,然后每份(每个bin)做max_pooling或者avg_pooling,这样每份(bin)得到一个值,变为2*2
在这里插入图片描述
问题
(1)第一次量化(就是把小数位去掉):中心点的位置坐标
比如上图是5*7的roi,5/2=2.5,ROI_Pooling直接取2
(2)第二次量化:roi的宽、高
因为anchor的宽、高是在原图上取的(纳尼?为啥我记得anchor是feature map上一个点映射到原图,然后宽高也映射到原图呢?),映射到feature map要除以stride,这时也会有小数,直接量化掉。
这样两次量化就会有框的误差,对大目标不明显,对小目标这点误差影响就比较大了

ROI Align

为了解决ROI_Pooling的误差问题,提出了ROI_Align
1 首先,直接计算出中心点坐标,四个角点坐标,不舍弃小数,途中圆圈为实际存在的像素位置
在这里插入图片描述
2 分块做max_pooling或者avg_pooling
比如分成7*7的块(bin),做完pooling后得到7*7的结果,相当于每块(bin)给出一个值,而这里是用另外一种方法代替标准的pooling,即用另外一种方法对每个bin进行采样
2.1 直接将算出来的anchor等分成7*7,得到每个bin的坐标
2.2 对于每个bin,假定采样点为4(即每个bin取4个点,求最大值)

Note:之所以说不是标准的max_pooling是因为标准的是每个像素点都参与计算,取最大值,而这里直接定采样点,也就是说相当于固定只有4个点参与计算取最大值

这4个点也是直接暴力计算出的,不舍弃小数点,那么每个bin中的这4个点很可能也不在一个具体的位置上
2.3 对于每个采样点,用双线性插值法取值
在这里插入图片描述
图中为一个bin,红叉代表4个采样点的位置,有色格子的中心代表该像素的位置,这里红叉的值为离采样点最近的4个像素点双线性插值法取值
eg. 左上角的值为0.85、0.34、0.32、0.74这4个值用双线性插值法求得

2.4 对于每个bin中的4个采样点,取最大值或者平均值

2.5 于是最终每个bin求得了一个值,得到了7*7的结果

补充:双线性插值法

在这里插入图片描述
已知四个红点,求绿点
(1)用单线性插值法分别求出R_2,R_1
(2)利用R_1,R_2用单线性插值法求出P
在这里插入图片描述
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值