计算机系统应用教程网站

网站首页 > 技术文章 正文

ROI操作:ROIPooling和ROIAlign

btikc 2024-09-14 00:46:27 技术文章 23 ℃ 0 评论

目标:为了使得检测网络可以输入任意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所做的改动:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表