image_size
SSD中没有全连接层, 可适应各种大小的图片。指定图片大小的目的是为了方便成batch训练。
num_classes
待检测的物体类别数量, 一般还需要加上背景类。
no_annotation_label
没用
feat_layers
特征层。使用哪几层来预测bbox
feat_shapes
特征层的shape
anchor_size_bounds
每个特性层上的anchor大小都不一样, 越靠近输入的层其anchor越小。
确定第一个与最后一个feature层的anchor大小以后, 处于中间的层的anchor大小则通过线性插值计算而来。例如,假如anchor_size_bounds = [0.2, 0.7]
, 有6个feature layer,则每个layer对应的default anchor大小为:[0.2, 0.3, 0.4, 0.5, 0.6, 0.7]
.
anchor_sizes
这个不是超参数。
它是论文中s ′ k =s k s k+1 − − − − − √ 里的s k ,s k+1
除了21与315, 其余的都是通过anchor_size_bounds
计算出来的。
anchor_offset
用于计算anchor中心点的偏移。论文中(i+0.5|f k | ,i+0.5|f j | ) 的0.5 。
anchor_steps
由网络结构和feat_layers决定。例如,在conv4_3
上移动一个像素相当于在原图上移动8个像素。
normalizations
正则化参数。大于0则将对应的feature map L2norm一下, 然后在其上预测bbox。所以这个20也没啥特殊涵义。 ssd_common.py
if normalization > 0:
net = custom_layers.l2_normalization(net, scaling=True)
- 1
- 2
prior_scaling
(应该是用于调节x,y 回归与w,h 回归在loss中占的比例。 ssd_common.py
feat_cy = (feat_cy - yref) / href / prior_scaling[0]
feat_cx = (feat_cx - xref) / wref / prior_scaling[1]
feat_h = tf.log(feat_h / href) / prior_scaling[2]
feat_w = tf.log(feat_w / wref) / prior_scaling[3]