diff --git a/configs/solov2/README.md b/configs/solov2/README.md index f3dea691abab245444f064cdab4c78e1708a37b6..7c4e0cf4e2e4d9909953d084185d756bce894235 100644 --- a/configs/solov2/README.md +++ b/configs/solov2/README.md @@ -14,6 +14,7 @@ SOLOv2 (Segmenting Objects by Locations) is a fast instance segmentation framewo | Backbone | Multi-scale training | Lr schd | Inf time (V100) | Mask AP | Download | Configs | | :---------------------: | :-------------------: | :-----: | :------------: | :-----: | :---------: | :------------------------: | +| Mobilenetv3-FPN | True | 3x | 20.0ms | 30.0 | [model](https://paddlemodels.bj.bcebos.com/object_detection/solov2_mobilenetv3_fpn_448_3x.pdparams) | [config](https://github.com/PaddlePaddle/PaddleDetection/tree/master/configs/solov2/solov2_mobilenetv3_fpn_448_3x.yml) | | R50-FPN | False | 1x | 45.7ms | 35.6 | [model](https://paddlemodels.bj.bcebos.com/object_detection/solov2_r50_fpn_1x.pdparams) | [config](https://github.com/PaddlePaddle/PaddleDetection/tree/master/configs/solov2/solov2_r50_fpn_1x.yml) | | R50-FPN | True | 3x | 45.7ms | 37.9 | [model](https://paddlemodels.bj.bcebos.com/object_detection/solov2_r50_fpn_3x.pdparams) | [config](https://github.com/PaddlePaddle/PaddleDetection/tree/master/configs/solov2/solov2_r50_fpn_3x.yml) | | R101-VD-FPN | True | 3x | 82.6ms | 42.6 | [model](https://paddlemodels.bj.bcebos.com/object_detection/solov2_r101_vd_fpn_3x.pdparams) | [config](https://github.com/PaddlePaddle/PaddleDetection/tree/master/configs/solov2/solov2_r101_vd_fpn_3x.yml) | diff --git a/configs/solov2/solov2_light_448_reader.yml b/configs/solov2/solov2_light_448_reader.yml new file mode 100644 index 0000000000000000000000000000000000000000..07b2a484104702c1f3615a69ed47abde5a639eb5 --- /dev/null +++ b/configs/solov2/solov2_light_448_reader.yml @@ -0,0 +1,103 @@ +TrainReader: + batch_size: 4 + worker_num: 2 + inputs_def: + fields: ['image', 'im_id', 'gt_segm'] + dataset: + !COCODataSet + dataset_dir: dataset/coco + anno_path: annotations/instances_train2017.json + image_dir: train2017 + sample_transforms: + - !DecodeImage + to_rgb: true + - !Poly2Mask {} + - !ColorDistort {} + - !RandomCrop + is_mask_crop: True + - !ResizeImage + target_size: [352, 384, 416, 448, 480, 512] + max_size: 768 + interp: 1 + use_cv2: true + resize_box: true + - !RandomFlipImage + prob: 0.5 + - !NormalizeImage + is_channel_first: false + is_scale: true + mean: [0.485,0.456,0.406] + std: [0.229, 0.224,0.225] + - !Permute + to_bgr: false + channel_first: true + batch_transforms: + - !PadBatch + pad_to_stride: 32 + - !Gt2Solov2Target + num_grids: [40, 36, 24, 16, 12] + scale_ranges: [[1, 56], [28, 112], [56, 224], [112, 448], [224, 896]] + coord_sigma: 0.2 + shuffle: True + +EvalReader: + inputs_def: + fields: ['image', 'im_info', 'im_id'] + dataset: + !COCODataSet + image_dir: val2017 + anno_path: annotations/instances_val2017.json + dataset_dir: dataset/coco + sample_transforms: + - !DecodeImage + to_rgb: true + - !ResizeImage + interp: 1 + max_size: 768 + target_size: 448 + use_cv2: true + - !NormalizeImage + is_channel_first: false + is_scale: true + mean: [0.485,0.456,0.406] + std: [0.229, 0.224,0.225] + - !Permute + channel_first: true + to_bgr: false + batch_transforms: + - !PadBatch + pad_to_stride: 32 + use_padded_im_info: false + # only support batch_size=1 when evaluation + batch_size: 1 + shuffle: false + drop_last: false + drop_empty: false + worker_num: 2 + +TestReader: + inputs_def: + fields: ['image', 'im_info', 'im_id', 'im_shape'] + dataset: + !ImageFolder + anno_path: dataset/coco/annotations/instances_val2017.json + sample_transforms: + - !DecodeImage + to_rgb: true + - !ResizeImage + interp: 1 + max_size: 768 + target_size: 448 + use_cv2: true + - !NormalizeImage + is_channel_first: false + is_scale: true + mean: [0.485,0.456,0.406] + std: [0.229, 0.224,0.225] + - !Permute + channel_first: true + to_bgr: false + batch_transforms: + - !PadBatch + pad_to_stride: 32 + use_padded_im_info: false diff --git a/configs/solov2/solov2_mobilenetv3_fpn_448_3x.yml b/configs/solov2/solov2_mobilenetv3_fpn_448_3x.yml new file mode 100644 index 0000000000000000000000000000000000000000..11e005d26cfce67fad4a7723c9d181715f3618ed --- /dev/null +++ b/configs/solov2/solov2_mobilenetv3_fpn_448_3x.yml @@ -0,0 +1,79 @@ +architecture: SOLOv2 +use_gpu: true +max_iters: 135000 +snapshot_iter: 20000 +log_smooth_window: 20 +save_dir: output +pretrain_weights: https://paddle-imagenet-models-name.bj.bcebos.com/MobileNetV3_large_x1_0_ssld_pretrained.tar +metric: COCO +weights: output/solov2/solov2_mobilenetv3_fpn_448_3x/model_final +num_classes: 81 +use_ema: true +ema_decay: 0.9998 + +SOLOv2: + backbone: MobileNetV3RCNN + fpn: FPN + bbox_head: SOLOv2Head + mask_head: SOLOv2MaskHead + +MobileNetV3RCNN: + norm_type: bn + freeze_norm: true + norm_decay: 0.0 + feature_maps: [2, 3, 4, 6] + conv_decay: 0.00001 + lr_mult_list: [0.25, 0.25, 0.5, 0.5, 0.75] + scale: 1.0 + model_name: large + +FPN: + max_level: 6 + min_level: 2 + num_chan: 256 + spatial_scale: [0.03125, 0.0625, 0.125, 0.25] + reverse_out: True + +SOLOv2Head: + seg_feat_channels: 256 + stacked_convs: 2 + num_grids: [40, 36, 24, 16, 12] + kernel_out_channels: 128 + solov2_loss: SOLOv2Loss + mask_nms: MaskMatrixNMS + drop_block: True + +SOLOv2MaskHead: + in_channels: 128 + out_channels: 128 + start_level: 0 + end_level: 3 + +SOLOv2Loss: + ins_loss_weight: 3.0 + focal_loss_gamma: 2.0 + focal_loss_alpha: 0.25 + +MaskMatrixNMS: + pre_nms_top_n: 500 + post_nms_top_n: 100 + +LearningRate: + base_lr: 0.02 + schedulers: + - !PiecewiseDecay + gamma: 0.1 + milestones: [90000, 120000] + - !LinearWarmup + start_factor: 0. + steps: 1000 + +OptimizerBuilder: + optimizer: + momentum: 0.9 + type: Momentum + regularizer: + factor: 0.0001 + type: L2 + +_READER_: 'solov2_light_448_reader.yml'