RPN 具体实现细节

在这里假设我们想生成100:100、300:300、500:500及1:1、1:2、2:1三种尺寸三种比例的图像,这里要注意100:100的1:2尺寸不是100:200,而是100/√2:100*√2大约71:141,因为同一尺寸的三种比例变化后图像的面积要保存一致

假设以原点为矩阵中心点,生成的9个anchor如下(x1,y1,x2,y2)
在这里插入图片描述
然后再把这9个anchor进行x,y方向的平移,convmap_height,convmap_width为最后特征图的大小,把特征图中的每一点映射回原图作为anchor的中心点,一个中心点形成9个anchor。代码如下,

for i in range(self.convmap_height):
            h = i * 16 + 8
            for j in range(self.convmap_width):
                w = j * 16 + 8
                for k in range(self.anchor_size):
                    index = i * self.convmap_width * self.anchor_size + j * self.anchor_size + k
                    anchor = anchors[k, :]
                    proposals[index, :] = anchor + np.array([w, h, w, h])

得到如下矩阵结果:
在这里插入图片描述
边界点形成的anchor会超出原图界限,所以会有第一行和最后一行负数和大整数的存在。

我们把最中间形成的anchors画出来如下图:

在这里插入图片描述

转自:https://blog.csdn.net/u012033832/article/details/79781886

猜你喜欢

转载自blog.csdn.net/TH_NUM/article/details/87521246
RPN