SSD目标检测算法中default box在ssd_pascal.py的设置

在ssd_pascal.py中对default boxes(prior boxes)的设置由如下代码完成:

# parameters for generating priors.
# minimum dimension of input image
min_dim = 300
# conv4_3 ==> 38 x 38
# fc7 ==> 19 x 19
# conv6_2 ==> 10 x 10
# conv7_2 ==> 5 x 5
# conv8_2 ==> 3 x 3
# conv9_2 ==> 1 x 1
mbox_source_layers = ['conv4_3', 'fc7', 'conv6_2', 'conv7_2', 'conv8_2', 'conv9_2']
# in percent %
min_ratio = 20
max_ratio = 90
step = int(math.floor((max_ratio - min_ratio) / (len(mbox_source_layers) - 2)))
min_sizes = []
max_sizes = []
for ratio in xrange(min_ratio, max_ratio + 1, step):
  min_sizes.append(min_dim * ratio / 100.)
  max_sizes.append(min_dim * (ratio + step) / 100.)
min_sizes = [min_dim * 10 / 100.] + min_sizes
max_sizes = [min_dim * 20 / 100.] + max_sizes

steps = [8, 16, 32, 64, 100, 300]
aspect_ratios = [[2], [2, 3], [2, 3], [2, 3], [2], [2]]
# L2 normalize conv4_3.
normalizations = [20, -1, -1, -1, -1, -1]
# variance used to encode/decode prior bboxes. prior_variance实际上是一种bounding regression中的权重
if code_type == P.PriorBox.CENTER_SIZE:
  prior_variance = [0.1, 0.1, 0.2, 0.2]
else:
  prior_variance = [0.1]

mbox_source_layers即产生box的层,一共有6个,可看成6个feature map,尺度分别为38*38,3*3,1*1,19*19,10*10,5*5


现在重点看box的大小是怎么设置的,box比例为 

aspect_ratios = [[2], [2, 3], [2, 3], [2, 3], [2], [2]] 


第一个[2]即有[1,2,1/2]三个比例,其中1对应最大和最小的正方形尺度,所以此map上的box有4个尺度 

[2, 3]即有[1,2,1/2,3,1/3],同样1对应最大和最小的正方形尺度,所以此map上的box有6个尺度 

ssd中,对于6个feature map,每个map中box的ratios:38*38,3*3,1*1map都是4个,19*19,10*10,5*5都是6个  


steps = [8, 16, 32, 64, 100, 300]又是什么?

steps其实是box映射回原图的比例因子,即default box在feature map上的尺度乘以steps中的值,则对应到输入的原图上的尺度,这里原图是300×300。

为什么映射回原图,看我之前一篇http://blog.csdn.net/tigerda/article/details/78527870 中anchor部分

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值