前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >ROI操作:ROIPooling和ROIAlign

ROI操作:ROIPooling和ROIAlign

作者头像
AI深度学习求索
发布2018-12-11 17:04:55
4.2K0
发布2018-12-11 17:04:55
举报
文章被收录于专栏:AI深度学习求索

目标:为了使得检测网络可以输入任意size的图片,使用ROIPooling在网络中某一个阶段将不同尺度的图片ROI pooling成相同的尺度,使得fc的存在也无法写死输入图片的size。

ROIPooling:

方法:直接Pooling,若尺寸不对应则直接取整

缺点:

由于 RoIPooling 采用的是 INTER_NEAREST(即最近邻插值) ,在resize时,对于 缩放后坐标不能刚好为整数 的情况,采用了 粗暴的舍去小数,相当于选取离目标点最近的点,损失一定的空间精度。

例如:一张图片输入VGG16,则得到的尺寸缩小为1/32,如下图中,图片大小为800,则恰好为25,但区域块大小为665经过VGG后则为20.78,则直接处理为20,再通过ROIPooling(即,将所有不同的尺寸全部Pooling处理为相同的大小)处理为7*7,则20/7--> 2,由下图可知,Pooling之后存在一定的位置偏移。

具体计算:

下图为一张8*8的feature map,选取其中一个5*7的region输入ROIPooling输出2*2的结果。

(1)划分为2*2=4块区域

1)5/2 = 2.5 --> 2, 剩下的为3,则2+3

2)7/2 = 3.5 -->3, 剩下的为4,则3+4

(2)取每个小区域的最大值为pooling值

ROIAlign:

改进:将最近邻插值换为双线性插值,使得即使缩放后坐标不能刚好为整数,也能通过插值得到浮点数处的值处理得到pooling后的值。

如下图所示:ROIAlign中池化的块允许为浮点数,通过双线性插值得到尺寸为浮点数的块池化后的结果,保证了空间精度。

具体计算:

下图为一张8*8的feature map,选取其中一个5*7的region输入ROIPooling输出2*2的结果。

(1)划分为2*2=4块区域

1)5/2 = 2.5 --> 2.5, 不再取整,则2.5+2.5

2)7/2 = 3.5 -->3.5,不再取整,则3.5+3.5

(2)将每小块再分为4个小区域,使用双线性插值的方法求取这四个小区域的中心点处的值

(3)取每个区域的最大值为pooling值

ROIPooling换为ROIAlign所做的改动:

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2018-11-02,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 AI深度学习求索 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档