density_prior_box
paddle.fluid.layers.density_prior_box
( input, image, densities=None, fixed_sizes=None, fixed_ratios=None, variance=[0.1, 0.1, 0.2, 0.2], clip=False, steps=[0.0, 0.0], offset=0.5, flatten_to_2d=False, name=None ) [源代码]
该OP为SSD算法(Single Shot MultiBox Detector)生成density prior box,在每个 input
的位置产生N个候选框,其中,N由 densities
, fixed_sizes
和 fixed_ratios
来计算。生成的每个输入位置附近的候选框中心(网格点)由 densities
和 density prior box
的数量计算,其中 density prior box
的数量由 fixed_sizes
和 fixed_ratios
决定。fixed_sizes
和 densities
的大小一致。
参数:
input (Variable) - 形状为NCHW的4-D Tensor,数据类型为float32或float64。
image (Variable) - 输入图像,形状为NCHW的4-D Tensor,数据类型为float32或float64。
densities (list|tuple|None) - 生成的density prior boxes的densities,此属性应该是一个整数列表或数组。默认值为None。
fixed_sizes (list|tuple|None) - 生成的density prior boxes的大小,此属性应该为和
densities
有同样长度的列表或数组。默认值为None。fixed_ratios (list|tuple|None) - 生成的density prior boxes的比值,如果该属性未被设置,同时
densities
和fix_sizes
被设置,则aspect_ratios
被用于生成 density prior boxesvariance (list|tuple) - 将被用于density prior boxes编码的方差,默认值为:[0.1, 0.1, 0.2, 0.2]
clip (bool) - 是否裁剪超出范围的box。默认值:False
step (list|tuple) - Prior boxes在宽度和高度的步长,如果step[0]等于0.0或step[1]等于0.0, input的the density prior boxes的高度/宽度的步长将被自动计算。默认值:Default: [0., 0.]
offset (float) - Prior boxes中心偏移值,默认为:0.5
flatten_to_2d (bool) - 是否将output prior boxes和方差
flatten
至2-D,其中第二个dim为4。默认值:Falsename (str|None) - 该参数供开发人员打印调试信息时使用,具体用法请参见 Name 。默认值为None。
返回:含有两个变量的元组,包括:
候选框:
当flatten_to_2d为False时,形状为[H, W, num_priors, 4]的4-D Tensor。 当flatten_to_2d为True时,形式为[H * W * num_priors, 4]的 2-D Tensor。 其中,H是输入的高度,W是输入的宽度,num_priors是输入中每个位置的候选框数。
候选框的方差:
当flatten_to_2d为False时,形状为[H, W, num_priors, 4]的4-D Tensor。 当flatten_to_2d为True时,形式为[H * W * num_priors, 4]的2-D Tensor。 其中,H是输入的高度,W是输入的宽度,num_priors是输入中每个位置的候选框数。
返回类型:元组
代码示例
import paddle.fluid as fluid
input = fluid.layers.data(name="input", shape=[3,6,9])
images = fluid.layers.data(name="images", shape=[3,9,12])
box, var = fluid.layers.density_prior_box(
input=input,
image=images,
densities=[4, 2, 1],
fixed_sizes=[32.0, 64.0, 128.0],
fixed_ratios=[1.],
clip=True,
flatten_to_2d=True)