distribute_fpn_proposals
paddle.fluid.layers.
distribute_fpn_proposals
(fpn_rois, min_level, max_level, refer_level, refer_scale, name=None)[源代码]
该op仅支持LoDTensor输入。在 Feature Pyramid Networks(FPN)模型中,需要依据proposal的尺度和参考尺度与级别将所有proposal分配到不同的FPN级别中。 此外,为了恢复proposals的顺序,我们返回一个数组,该数组表示当前proposals中的原始RoIs索引。 要计算每个RoI的FPN级别,公式如下:
其中BBoxArea方法用来计算每个RoI的区域。
- 参数:
- fpn_rois (Variable) - 维度为[N,4]的2-D LoDTensor,其中N为检测框的个数,数据类型为float32或float64。
- min_level (int32) - 产生proposal最低级别FPN层。
- max_level (int32) - 产生proposal最高级别FPN层。
- refer_level (int32) - 具有指定比例的FPN层的引用级别。
- refer_scale (int32) - 具有指定级别的FPN层的引用比例。
- name (str,可选) – 具体用法请参见 Name ,一般无需设置,默认值为None。
返回:
- multi_rois(List)- 长度为(max_level-min_level+1)的列表,其中元素为Variable,维度为[M, 4]的2-D LoDTensor,M为每个级别proposal的个数,数据类型为float32或float64。表示每个FPN级别包含的proposals。
- restore_ind(Variable)- 维度为[N,1]的Tensor,N是总rois的数量。数据类型为int32。 它用于恢复fpn_rois的顺序。
返回类型:Tuple
代码示例:
- import paddle.fluid as fluid
- fpn_rois = fluid.data(
- name='data', shape=[None, 4], dtype='float32', lod_level=1)
- multi_rois, restore_ind = fluid.layers.distribute_fpn_proposals(
- fpn_rois=fpn_rois,
- min_level=2,
- max_level=5,
- refer_level=4,
- refer_scale=224)