RoIPooling
- Conv layers使用的是VGG16,feat_stride=32,假定原图中有一region proposal,大小为665 x 665,这样,映射到特征图中的大小:665 / 32=20.78,即20.78 x 20.78,在计算的时候会进行取整操作,于是,进行的第一次量化,即映射的特征图大小为20*20
- 假定pooled_w=7,pooled_h=7,即pooling后固定成7x7大小的特征图,所以,将上面在 feature map上映射的20 x 20的 region proposal划分成49个同等大小的小区域,每个小区域的大小20 / 7=2.86,即2.86 x 2.86,此时,进行第二次量化,故每个7x7的中小区域所占的像素大小变成2 x 2
3 ) 每个2 x 2的小区域里,取出其中最大的像素值,作为这一个区域的‘代表’,这样,49个小区域就输出49个像素值,组成7 x 7大小的feature map
- 假定pooled_w=7,pooled_h=7,即pooling后固定成7x7大小的特征图,所以,将上面在 feature map上映射的20 x 20的 region proposal划分成49个同等大小的小区域,每个小区域的大小20 / 7=2.86,即2.86 x 2.86,此时,进行第二次量化,故每个7x7的中小区域所占的像素大小变成2 x 2
- 经过两次量化,即将浮点数取整,原本在特征图上映射的20 x 20大小的region proposal,偏差成大小为14 x 14的,这样的像素偏差势必会对后层的回归定位产生影响
RoIAlign
- 与RoIPooling类似,假定pooled_w=7,pooled_h=7,即pooling后固定成7 x 7大小的特征图,所以,将在 feature map上映射的20.78 x 20.78的region proposal 划分成49个同等大小的小区域,每个小区域的大小20.78 / 7=2.97,即2.97 x 2.97
- 假定采样点数为4,即表示,对于每个2.97 x 2.97的小区域,平分四份,每一份取其中心点位置,而中心点位置的像素,采用双线性插值法进行计算,这样,就会得到四个点的像素值,如下图
- 上图中右四个
x
就是四个小区域的中心点,也就是说对更加精细的插值得到更加平滑的边界。最后,取四个像素值中最大值作为这个小区域(即:2.97 x 2.97大小的区域)的像素值同样是49个小区域得到49个像素值,组成7 x 7大小的feature map