如何对rpn_rois进行进一步的过滤?
Created by: flishwang
在rpn_head.py的get_proposal中,我需要对rpn_rois进行进一步的过滤,只返回area不超过给定值的rois。 目前使用代码:
xmin,ymin,xmax,ymax=fluid.layers.split(rpn_rois,4,1)
area = ((xmax-xmin) * (ymax-ymin) ) ** 0.7
# 找出面积符合标准的rois
valid_boxes = area < threshold
valid_index = fluid.layers.where(valid_boxes)
valid_index,_ = fluid.layers.split(valid_index,2,1)
#根据valid_boxes,生成过滤后rois的lod info
valid_per_im = fluid.layers.sequence_pool(fluid.layers.cast(valid_boxes,'float32'),'sum')
valid_per_im_cum = fluid.layers.cumsum(valid_per_im)
zero = fluid.layers.fill_constant((1,),dtype='float32',value=0)
valid_lod_info = fluid.layers.cast( fluid.layers.concat([zero,valid_per_im_cum]),'int32)
#gather rois and set lod info
valid_rois = fluid.layers.gather(rpn_rois,valid_index)
valid_rois= fluid.layers.reset_lod(valid_rois,valid_lod_info)
但是这样的操作过于繁烦。 同时,由于generate_proposals的输出在定义阶段的lod_level=0,在paddle 1.8.3,上述代码的sequence_pool这一步会报错。 请问,我应如何实现上述功能呢?