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

之前在研究SSD的时候,文章中的min_size 与 网络中设置的不一样,一直没弄明白怎么回事,今天又博友写了出来,记录一下,欢迎围观

# 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。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值