本文主要是介绍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 + 8for j in range(self.convmap_width):w = j * 16 + 8for k in range(self.anchor_size):index = i * self.convmap_width * self.anchor_size + j * self.anchor_size + kanchor = anchors[k, :]proposals[index, :] = anchor + np.array([w, h, w, h])
得到如下矩阵结果:
边界点形成的anchor会超出原图界限,所以会有第一行和最后一行负数和大整数的存在。
我们把最中间形成的anchors画出来如下图:
这篇关于RPN具体生成细节的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!