目录
多尺度锚框
%matplotlib inline
import torch
from d2l import torch as d2l
img = d2l.plt.imread('../img/catdog.jpg')
h, w = img.shape[:2]
h, w
def display_anchors(fmap_w, fmap_h, s):
d2l.set_figsize()
# 前两个维度上的值不影响输出
fmap = torch.zeros((1, 10, fmap_h, fmap_w))
# 生成锚框个数s+r-1。fmap_w为4,就是0-4确定锚框中心点
anchors = d2l.multibox_prior(fmap, sizes=s, ratios=[1, 2, 0.5])
bbox_scale = torch.tensor((w, h, w, h))
# 去除掉归一化,放到原输入图像上
d2l.show_bboxes(d2l.plt.imshow(img).axes, anchors[0] * bbox_scale)
display_anchors(fmap_w=4, fmap_h=4, s=[0.15]) #锚框4*4*3个
display_anchors(fmap_w=2, fmap_h=2, s=[0.4]) # 2*2*3个
display_anchors(fmap_w=1, fmap_h=1, s=[0.8]) # 1*1*3个