def get_scales(min_scale=0.2, max_scale=0.9,num_layers=6):
""" Following the ssd arxiv paper, regarding the calculation of scales & ratios
Parameters
----------
min_scale : float
max_scales: float
num_layers: int
number of layers that will have a detection head
anchor_ratios: list
first_layer_ratios: list
return
------
sizes : list
list of scale sizes per feature layer
ratios : list
list of anchor_ratios per feature layer
"""
# this code follows the original implementation of wei liu
# for more, look at ssd/score_ssd_pascal.py:310 in the original caffe implementation
min_ratio = int(min_scale * 100)
max_ratio = int(max_scale * 100)
step = int(np.floor((max_ratio - min_ratio) / (num_layers - 2)))
min_sizes = []
max_sizes = []
for ratio in xrange(min_ratio, max_ratio + 1, step):
min_sizes.append(ratio / 100.)
max_sizes.append((ratio + step) / 100.)
min_sizes = [int(100*min_scale / 2.0) / 100.0] + min_sizes
max_sizes = [min_scale] + max_sizes
# convert it back to this implementation's notation:
scales = []
for layer_idx in range(num_layers):
scales.append([min_sizes[layer_idx], np.single(np.sqrt(min_sizes[layer_idx] * max_sizes[layer_idx]))])
return scales
评论列表
文章目录