diff --git a/rcnn/symbol/symbol_mask_fpn.py b/rcnn/symbol/symbol_mask_fpn.py index a7cae67..da29e78 100755 --- a/rcnn/symbol/symbol_mask_fpn.py +++ b/rcnn/symbol/symbol_mask_fpn.py @@ -81,20 +81,23 @@ def get_resnet_conv_down(conv_feat): P4_la = mx.symbol.Convolution(data=conv_feat[1], kernel=(1, 1), num_filter=256, name="P4_lateral") P5_clip = mx.symbol.Crop(*[P5_up, P4_la], name="P4_clip") P4 = mx.sym.ElementWiseSum(*[P5_clip, P4_la], name="P4_sum") - P4 = mx.symbol.Convolution(data=P4, kernel=(3, 3), pad=(1, 1), num_filter=256, name="P4_aggregate") # P4 2x upsampling + C3 = P3 P4_up = mx.symbol.UpSampling(P4, scale=2, sample_type='nearest', workspace=512, name='P4_upsampling', num_args=1) P3_la = mx.symbol.Convolution(data=conv_feat[2], kernel=(1, 1), num_filter=256, name="P3_lateral") P4_clip = mx.symbol.Crop(*[P4_up, P3_la], name="P3_clip") P3 = mx.sym.ElementWiseSum(*[P4_clip, P3_la], name="P3_sum") - P3 = mx.symbol.Convolution(data=P3, kernel=(3, 3), pad=(1, 1), num_filter=256, name="P3_aggregate") # P3 2x upsampling + C2 = P2 P3_up = mx.symbol.UpSampling(P3, scale=2, sample_type='nearest', workspace=512, name='P3_upsampling', num_args=1) P2_la = mx.symbol.Convolution(data=conv_feat[3], kernel=(1, 1), num_filter=256, name="P2_lateral") P3_clip = mx.symbol.Crop(*[P3_up, P2_la], name="P2_clip") P2 = mx.sym.ElementWiseSum(*[P3_clip, P2_la], name="P2_sum") + + # P5,P4,P3,P2 aggregate: reduce the aliasing effect of upsampling + P5 = mx.symbol.Convolution(data=P5, kernel=(3, 3), pad=(1, 1), num_filter=256, name="P5_aggregate") + P4 = mx.symbol.Convolution(data=P4, kernel=(3, 3), pad=(1, 1), num_filter=256, name="P4_aggregate") + P3 = mx.symbol.Convolution(data=P3, kernel=(3, 3), pad=(1, 1), num_filter=256, name="P3_aggregate") P2 = mx.symbol.Convolution(data=P2, kernel=(3, 3), pad=(1, 1), num_filter=256, name="P2_aggregate") # P6 2x subsampling P5