From 9262d2767fef89044c7e7b3610b6b4a21b40638c Mon Sep 17 00:00:00 2001 From: Guanghua Yu <742925032@qq.com> Date: Fri, 26 Mar 2021 19:51:11 +0800 Subject: [PATCH] add SSLD model (#2421) --- configs/face_detection/README.md | 2 +- configs/gn/README.md | 8 ++--- configs/solov2/README.md | 4 +-- configs/ssld/README.md | 33 ++++++++++++++++++ ...cade_mask_rcnn_r50_vd_fpn_ssld_1x_coco.yml | 18 ++++++++++ ...cade_mask_rcnn_r50_vd_fpn_ssld_2x_coco.yml | 29 +++++++++++++++ .../cascade_rcnn_r50_vd_fpn_ssld_1x_coco.yml | 18 ++++++++++ .../cascade_rcnn_r50_vd_fpn_ssld_2x_coco.yml | 29 +++++++++++++++ .../faster_rcnn_r50_vd_fpn_ssld_1x_coco.yml | 29 +++++++++++++++ .../faster_rcnn_r50_vd_fpn_ssld_2x_coco.yml | 29 +++++++++++++++ .../mask_rcnn_r50_vd_fpn_ssld_1x_coco.yml | 29 +++++++++++++++ .../mask_rcnn_r50_vd_fpn_ssld_2x_coco.yml | 29 +++++++++++++++ docs/images/ssld_model.png | Bin 0 -> 22184 bytes 13 files changed, 250 insertions(+), 7 deletions(-) create mode 100644 configs/ssld/README.md create mode 100644 configs/ssld/cascade_mask_rcnn_r50_vd_fpn_ssld_1x_coco.yml create mode 100644 configs/ssld/cascade_mask_rcnn_r50_vd_fpn_ssld_2x_coco.yml create mode 100644 configs/ssld/cascade_rcnn_r50_vd_fpn_ssld_1x_coco.yml create mode 100644 configs/ssld/cascade_rcnn_r50_vd_fpn_ssld_2x_coco.yml create mode 100644 configs/ssld/faster_rcnn_r50_vd_fpn_ssld_1x_coco.yml create mode 100644 configs/ssld/faster_rcnn_r50_vd_fpn_ssld_2x_coco.yml create mode 100644 configs/ssld/mask_rcnn_r50_vd_fpn_ssld_1x_coco.yml create mode 100644 configs/ssld/mask_rcnn_r50_vd_fpn_ssld_2x_coco.yml create mode 100644 docs/images/ssld_model.png diff --git a/configs/face_detection/README.md b/configs/face_detection/README.md index b6d37c652..7a1733fd1 100644 --- a/configs/face_detection/README.md +++ b/configs/face_detection/README.md @@ -11,7 +11,7 @@ | 网络结构 | 输入尺寸 | 图片个数/GPU | 学习率策略 | Easy/Medium/Hard Set | 预测时延(SD855)| 模型大小(MB) | 下载 | 配置文件 | |:------------:|:--------:|:----:|:-------:|:-------:|:---------:|:----------:|:---------:|:--------:| -| BlazeFace | 640 | 8 | 1000e | 0.889 / 0.859 / 0.740 | - | 0.472 |[下载链接](https://paddledet.bj.bcebos.com/models/blazeface_1000e.pdparams) | [配置文件](https://github.com/PaddlePaddle/PaddleDetection/tree/master/dygraph/configs/face_detection/blazeface_1000e.yml) | +| BlazeFace | 640 | 8 | 1000e | 0.889 / 0.859 / 0.740 | - | 0.472 |[下载链接](https://paddledet.bj.bcebos.com/models/blazeface_1000e.pdparams) | [配置文件](https://github.com/PaddlePaddle/PaddleDetection/tree/develop/configs/face_detection/blazeface_1000e.yml) | **注意:** - 我们使用多尺度评估策略得到`Easy/Medium/Hard Set`里的mAP。具体细节请参考[在WIDER-FACE数据集上评估](#在WIDER-FACE数据集上评估)。 diff --git a/configs/gn/README.md b/configs/gn/README.md index 8875286a7..ec10831f9 100644 --- a/configs/gn/README.md +++ b/configs/gn/README.md @@ -4,10 +4,10 @@ | 骨架网络 | 网络类型 | 每张GPU图片个数 | 学习率策略 |推理时间(fps)| Box AP | Mask AP | 下载 | 配置文件 | | :------------- | :------------- | :-----------: | :------: | :--------: |:-----: | :-----: | :----: | :----: | -| ResNet50-FPN | Faster | 1 | 2x | - | 41.9 | - | [下载链接](https://paddledet.bj.bcebos.com/models/faster_rcnn_r50_fpn_gn_2x_coco.pdparams) | [配置文件](https://github.com/PaddlePaddle/PaddleDetection/tree/master/dygraph/configs/gn/faster_rcnn_r50_fpn_gn_2x_coco.yml) | -| ResNet50-FPN | Mask | 1 | 2x | - | 42.3 | 38.4 | [下载链接](https://paddledet.bj.bcebos.com/models/mask_rcnn_r50_fpn_gn_2x_coco.pdparams) | [配置文件](https://github.com/PaddlePaddle/PaddleDetection/tree/master/dygraph/configs/gn/mask_rcnn_r50_fpn_gn_2x_coco.yml) | -| ResNet50-FPN | Cascade Faster | 1 | 2x | - | - | - | [下载链接](https://paddledet.bj.bcebos.com/models/cascade_rcnn_r50_fpn_gn_2x_coco.pdparams) | [配置文件](https://github.com/PaddlePaddle/PaddleDetection/tree/master/dygraph/configs/gn/cascade_rcnn_r50_fpn_gn_2x_coco.yml) | -| ResNet50-FPN | Cacade Mask | 1 | 2x | - | 45.0 | 39.3 | [下载链接](https://paddledet.bj.bcebos.com/models/cascade_mask_rcnn_r50_fpn_gn_2x_coco.pdparams) | [配置文件](https://github.com/PaddlePaddle/PaddleDetection/tree/master/dygraph/configs/gn/cascade_mask_rcnn_r50_fpn_gn_2x_coco.yml) | +| ResNet50-FPN | Faster | 1 | 2x | - | 41.9 | - | [下载链接](https://paddledet.bj.bcebos.com/models/faster_rcnn_r50_fpn_gn_2x_coco.pdparams) | [配置文件](https://github.com/PaddlePaddle/PaddleDetection/tree/develop/configs/gn/faster_rcnn_r50_fpn_gn_2x_coco.yml) | +| ResNet50-FPN | Mask | 1 | 2x | - | 42.3 | 38.4 | [下载链接](https://paddledet.bj.bcebos.com/models/mask_rcnn_r50_fpn_gn_2x_coco.pdparams) | [配置文件](https://github.com/PaddlePaddle/PaddleDetection/tree/develop/configs/gn/mask_rcnn_r50_fpn_gn_2x_coco.yml) | +| ResNet50-FPN | Cascade Faster | 1 | 2x | - | 44.6 | - | [下载链接](https://paddledet.bj.bcebos.com/models/cascade_rcnn_r50_fpn_gn_2x_coco.pdparams) | [配置文件](https://github.com/PaddlePaddle/PaddleDetection/tree/develop/configs/gn/cascade_rcnn_r50_fpn_gn_2x_coco.yml) | +| ResNet50-FPN | Cacade Mask | 1 | 2x | - | 45.0 | 39.3 | [下载链接](https://paddledet.bj.bcebos.com/models/cascade_mask_rcnn_r50_fpn_gn_2x_coco.pdparams) | [配置文件](https://github.com/PaddlePaddle/PaddleDetection/tree/develop/configs/gn/cascade_mask_rcnn_r50_fpn_gn_2x_coco.yml) | **注意:** Faster R-CNN baseline仅使用 `2fc` head,而此处使用[`4conv1fc` head](https://arxiv.org/abs/1803.08494)(4层conv之间使用GN),并且FPN也使用GN,而对于Mask R-CNN是在mask head的4层conv之间也使用GN。 diff --git a/configs/solov2/README.md b/configs/solov2/README.md index 68f0bc06d..e5bcc1c34 100644 --- a/configs/solov2/README.md +++ b/configs/solov2/README.md @@ -19,8 +19,8 @@ SOLOv2 (Segmenting Objects by Locations) is a fast instance segmentation framewo | BlendMask | R50-FPN | True | 3x | 37.8 | 13.5 | V100 | - | - | | SOLOv2 (Paper) | R50-FPN | False | 1x | 34.8 | 18.5 | V100 | - | - | | SOLOv2 (Paper) | X101-DCN-FPN | True | 3x | 42.4 | 5.9 | V100 | - | - | -| SOLOv2 | R50-FPN | False | 1x | 35.5 | 21.9 | V100 | [model](https://paddledet.bj.bcebos.com/models/solov2_r50_fpn_1x_coco.pdparams) | [config](https://github.com/PaddlePaddle/PaddleDetection/tree/master/dygraph/configs/solov2/solov2_r50_fpn_1x_coco.yml) | -| SOLOv2 | R50-FPN | True | 3x | 38.0 | 21.9 | V100 | [model](https://paddledet.bj.bcebos.com/models/solov2_r50_fpn_3x_coco.pdparams) | [config](https://github.com/PaddlePaddle/PaddleDetection/tree/master/dygraph/configs/solov2/solov2_r50_fpn_3x_coco.yml) | +| SOLOv2 | R50-FPN | False | 1x | 35.5 | 21.9 | V100 | [model](https://paddledet.bj.bcebos.com/models/solov2_r50_fpn_1x_coco.pdparams) | [config](https://github.com/PaddlePaddle/PaddleDetection/tree/develop/configs/solov2/solov2_r50_fpn_1x_coco.yml) | +| SOLOv2 | R50-FPN | True | 3x | 38.0 | 21.9 | V100 | [model](https://paddledet.bj.bcebos.com/models/solov2_r50_fpn_3x_coco.pdparams) | [config](https://github.com/PaddlePaddle/PaddleDetection/tree/develop/configs/solov2/solov2_r50_fpn_3x_coco.yml) | **Notes:** diff --git a/configs/ssld/README.md b/configs/ssld/README.md new file mode 100644 index 000000000..48a4dd7cb --- /dev/null +++ b/configs/ssld/README.md @@ -0,0 +1,33 @@ +### Simple semi-supervised label knowledge distillation solution (SSLD) + +## Model Zoo + +| 骨架网络 | 网络类型 | 每张GPU图片个数 | 学习率策略 |推理时间(fps) | Box AP | Mask AP | 下载 | 配置文件 | +| :------------------- | :------------| :-----: | :-----: | :------------: | :-----: | :-----: | :-----------------------------------------------------: | :-----: | +| ResNet50-vd-FPN | Faster | 1 | 1x | ---- | 41.4 | - | [下载链接](https://paddledet.bj.bcebos.com/models/faster_rcnn_r50_vd_fpn_ssld_1x_coco.pdparams) | [配置文件](https://github.com/PaddlePaddle/PaddleDetection/tree/develop/configs/ssld/faster_rcnn_r50_vd_fpn_ssld_1x_coco.yml) | +| ResNet50-vd-FPN | Faster | 1 | 2x | ---- | 42.3 | - | [下载链接](https://paddledet.bj.bcebos.com/models/faster_rcnn_r50_vd_fpn_ssld_2x_coco.pdparams) | [配置文件](https://github.com/PaddlePaddle/PaddleDetection/tree/develop/configs/ssld/faster_rcnn_r50_vd_ssld_fpn_2x_coco.yml) | +| ResNet50-vd-FPN | Mask | 1 | 1x | ---- | 42.0 | 38.2 | [下载链接](https://paddledet.bj.bcebos.com/models/mask_rcnn_r50_vd_fpn_ssld_1x_coco.pdparams) | [配置文件](https://github.com/PaddlePaddle/PaddleDetection/tree/develop/configs/ssld/mask_rcnn_r50_vd_fpn_ssld_1x_coco.yml) | +| ResNet50-vd-FPN | Mask | 1 | 2x | ---- | 42.7 | 38.9 | [下载链接](https://paddledet.bj.bcebos.com/models/mask_rcnn_r50_vd_fpn_ssld_2x_coco.pdparams) | [配置文件](https://github.com/PaddlePaddle/PaddleDetection/tree/develop/configs/ssld/mask_rcnn_r50_vd_fpn_ssld_2x_coco.yml) | +| ResNet50-vd-FPN | Cascade Faster | 1 | 1x | ---- | 44.4 | - | [下载链接](https://paddledet.bj.bcebos.com/models/cascade_rcnn_r50_vd_fpn_ssld_1x_coco.pdparams) | [配置文件](https://github.com/PaddlePaddle/PaddleDetection/tree/develop/configs/ssld/cascade_rcnn_r50_vd_fpn_ssld_1x_coco.yml) | +| ResNet50-vd-FPN | Cascade Faster | 1 | 2x | ---- | 45.0 | - | [下载链接](https://paddledet.bj.bcebos.com/models/cascade_rcnn_r50_vd_fpn_ssld_2x_coco.pdparams) | [配置文件](https://github.com/PaddlePaddle/PaddleDetection/tree/develop/configs/ssld/cascade_rcnn_r50_vd_fpn_ssld_2x_coco.yml) | +| ResNet50-vd-FPN | Cascade Mask | 1 | 1x | ---- | 44.9 | 39.1 | [下载链接](https://paddledet.bj.bcebos.com/models/cascade_mask_rcnn_r50_vd_fpn_ssld_1x_coco.pdparams) | [配置文件](https://github.com/PaddlePaddle/PaddleDetection/tree/develop/configs/ssld/cascade_mask_rcnn_r50_vd_fpn_ssld_1x_coco.yml) | +| ResNet50-vd-FPN | Cascade Mask | 1 | 2x | ---- | 45.7 | 39.7 | [下载链接](https://paddledet.bj.bcebos.com/models/cascade_mask_rcnn_r50_vd_fpn_ssld_2x_coco.pdparams) | [配置文件](https://github.com/PaddlePaddle/PaddleDetection/tree/develop/configs/ssld/cascade_mask_rcnn_r50_vd_fpn_ssld_2x_coco.yml) | + + +**注意事项:** + +- [SSLD](https://arxiv.org/abs/1811.11168)是一种知识蒸馏方法,我们使用蒸馏后性能更强的backbone预训练模型,进一步提升检测精度,详细方案请参考[知识蒸馏教程](https://github.com/PaddlePaddle/PaddleClas/blob/develop/docs/en/advanced_tutorials/distillation/distillation_en.md) + +![demo image](../../docs/images/ssld_model.png) + +## Citations +``` +@misc{cui2021selfsupervision, + title={Beyond Self-Supervision: A Simple Yet Effective Network Distillation Alternative to Improve Backbones}, + author={Cheng Cui and Ruoyu Guo and Yuning Du and Dongliang He and Fu Li and Zewu Wu and Qiwen Liu and Shilei Wen and Jizhou Huang and Xiaoguang Hu and Dianhai Yu and Errui Ding and Yanjun Ma}, + year={2021}, + eprint={2103.05959}, + archivePrefix={arXiv}, + primaryClass={cs.CV} +} +``` diff --git a/configs/ssld/cascade_mask_rcnn_r50_vd_fpn_ssld_1x_coco.yml b/configs/ssld/cascade_mask_rcnn_r50_vd_fpn_ssld_1x_coco.yml new file mode 100644 index 000000000..e64ad6bbf --- /dev/null +++ b/configs/ssld/cascade_mask_rcnn_r50_vd_fpn_ssld_1x_coco.yml @@ -0,0 +1,18 @@ +_BASE_: [ + '../datasets/coco_instance.yml', + '../runtime.yml', + '../cascade_rcnn/_base_/optimizer_1x.yml', + '../cascade_rcnn/_base_/cascade_mask_rcnn_r50_fpn.yml', + '../cascade_rcnn/_base_/cascade_mask_fpn_reader.yml', +] +pretrain_weights: https://paddledet.bj.bcebos.com/models/pretrained/ResNet50_vd_ssld_v2_pretrained.pdparams +weights: output/cascade_mask_rcnn_r50_vd_fpn_ssld_1x_coco/model_final + +ResNet: + depth: 50 + variant: d + norm_type: bn + freeze_at: 0 + return_idx: [0,1,2,3] + num_stages: 4 + lr_mult_list: [0.05, 0.05, 0.1, 0.15] diff --git a/configs/ssld/cascade_mask_rcnn_r50_vd_fpn_ssld_2x_coco.yml b/configs/ssld/cascade_mask_rcnn_r50_vd_fpn_ssld_2x_coco.yml new file mode 100644 index 000000000..27dbb1e4c --- /dev/null +++ b/configs/ssld/cascade_mask_rcnn_r50_vd_fpn_ssld_2x_coco.yml @@ -0,0 +1,29 @@ +_BASE_: [ + '../datasets/coco_instance.yml', + '../runtime.yml', + '../cascade_rcnn/_base_/optimizer_1x.yml', + '../cascade_rcnn/_base_/cascade_mask_rcnn_r50_fpn.yml', + '../cascade_rcnn/_base_/cascade_mask_fpn_reader.yml', +] +pretrain_weights: https://paddledet.bj.bcebos.com/models/pretrained/ResNet50_vd_ssld_v2_pretrained.pdparams +weights: output/cascade_mask_rcnn_r50_vd_fpn_ssld_2x_coco/model_final + +ResNet: + depth: 50 + variant: d + norm_type: bn + freeze_at: 0 + return_idx: [0,1,2,3] + num_stages: 4 + lr_mult_list: [0.05, 0.05, 0.1, 0.15] + +epoch: 24 +LearningRate: + base_lr: 0.01 + schedulers: + - !PiecewiseDecay + gamma: 0.1 + milestones: [12, 22] + - !LinearWarmup + start_factor: 0.1 + steps: 1000 diff --git a/configs/ssld/cascade_rcnn_r50_vd_fpn_ssld_1x_coco.yml b/configs/ssld/cascade_rcnn_r50_vd_fpn_ssld_1x_coco.yml new file mode 100644 index 000000000..2715b33f1 --- /dev/null +++ b/configs/ssld/cascade_rcnn_r50_vd_fpn_ssld_1x_coco.yml @@ -0,0 +1,18 @@ +_BASE_: [ + '../datasets/coco_detection.yml', + '../runtime.yml', + '../cascade_rcnn/_base_/optimizer_1x.yml', + '../cascade_rcnn/_base_/cascade_rcnn_r50_fpn.yml', + '../cascade_rcnn/_base_/cascade_fpn_reader.yml', +] +pretrain_weights: https://paddledet.bj.bcebos.com/models/pretrained/ResNet50_vd_ssld_v2_pretrained.pdparams +weights: output/cascade_rcnn_r50_vd_fpn_ssld_1x_coco/model_final + +ResNet: + depth: 50 + variant: d + norm_type: bn + freeze_at: 0 + return_idx: [0,1,2,3] + num_stages: 4 + lr_mult_list: [0.05, 0.05, 0.1, 0.15] diff --git a/configs/ssld/cascade_rcnn_r50_vd_fpn_ssld_2x_coco.yml b/configs/ssld/cascade_rcnn_r50_vd_fpn_ssld_2x_coco.yml new file mode 100644 index 000000000..00476f6db --- /dev/null +++ b/configs/ssld/cascade_rcnn_r50_vd_fpn_ssld_2x_coco.yml @@ -0,0 +1,29 @@ +_BASE_: [ + '../datasets/coco_detection.yml', + '../runtime.yml', + '../cascade_rcnn/_base_/optimizer_1x.yml', + '../cascade_rcnn/_base_/cascade_rcnn_r50_fpn.yml', + '../cascade_rcnn/_base_/cascade_fpn_reader.yml', +] +pretrain_weights: https://paddledet.bj.bcebos.com/models/pretrained/ResNet50_vd_ssld_v2_pretrained.pdparams +weights: output/cascade_rcnn_r50_vd_fpn_ssld_2x_coco/model_final + +ResNet: + depth: 50 + variant: d + norm_type: bn + freeze_at: 0 + return_idx: [0,1,2,3] + num_stages: 4 + lr_mult_list: [0.05, 0.05, 0.1, 0.15] + +epoch: 24 +LearningRate: + base_lr: 0.01 + schedulers: + - !PiecewiseDecay + gamma: 0.1 + milestones: [12, 22] + - !LinearWarmup + start_factor: 0.1 + steps: 1000 diff --git a/configs/ssld/faster_rcnn_r50_vd_fpn_ssld_1x_coco.yml b/configs/ssld/faster_rcnn_r50_vd_fpn_ssld_1x_coco.yml new file mode 100644 index 000000000..a529adb0b --- /dev/null +++ b/configs/ssld/faster_rcnn_r50_vd_fpn_ssld_1x_coco.yml @@ -0,0 +1,29 @@ +_BASE_: [ + '../datasets/coco_detection.yml', + '../runtime.yml', + '../faster_rcnn/_base_/optimizer_1x.yml', + '../faster_rcnn/_base_/faster_rcnn_r50_fpn.yml', + '../faster_rcnn/_base_/faster_fpn_reader.yml', +] +pretrain_weights: https://paddledet.bj.bcebos.com/models/pretrained/ResNet50_vd_ssld_v2_pretrained.pdparams +weights: output/faster_rcnn_r50_vd_fpn_ssld_1x_coco/model_final + +ResNet: + depth: 50 + variant: d + norm_type: bn + freeze_at: 0 + return_idx: [0,1,2,3] + num_stages: 4 + lr_mult_list: [0.05, 0.05, 0.1, 0.15] + +epoch: 12 +LearningRate: + base_lr: 0.01 + schedulers: + - !PiecewiseDecay + gamma: 0.1 + milestones: [8, 11] + - !LinearWarmup + start_factor: 0.1 + steps: 1000 diff --git a/configs/ssld/faster_rcnn_r50_vd_fpn_ssld_2x_coco.yml b/configs/ssld/faster_rcnn_r50_vd_fpn_ssld_2x_coco.yml new file mode 100644 index 000000000..b1c682e31 --- /dev/null +++ b/configs/ssld/faster_rcnn_r50_vd_fpn_ssld_2x_coco.yml @@ -0,0 +1,29 @@ +_BASE_: [ + '../datasets/coco_detection.yml', + '../runtime.yml', + '../faster_rcnn/_base_/optimizer_1x.yml', + '../faster_rcnn/_base_/faster_rcnn_r50_fpn.yml', + '../faster_rcnn/_base_/faster_fpn_reader.yml', +] +pretrain_weights: https://paddledet.bj.bcebos.com/models/pretrained/ResNet50_vd_ssld_v2_pretrained.pdparams +weights: output/faster_rcnn_r50_vd_fpn_ssld_2x_coco/model_final + +ResNet: + depth: 50 + variant: d + norm_type: bn + freeze_at: 0 + return_idx: [0,1,2,3] + num_stages: 4 + lr_mult_list: [0.05, 0.05, 0.1, 0.15] + +epoch: 24 +LearningRate: + base_lr: 0.01 + schedulers: + - !PiecewiseDecay + gamma: 0.1 + milestones: [12, 22] + - !LinearWarmup + start_factor: 0.1 + steps: 1000 diff --git a/configs/ssld/mask_rcnn_r50_vd_fpn_ssld_1x_coco.yml b/configs/ssld/mask_rcnn_r50_vd_fpn_ssld_1x_coco.yml new file mode 100644 index 000000000..29f906e86 --- /dev/null +++ b/configs/ssld/mask_rcnn_r50_vd_fpn_ssld_1x_coco.yml @@ -0,0 +1,29 @@ +_BASE_: [ + '../datasets/coco_instance.yml', + '../runtime.yml', + '../mask_rcnn/_base_/optimizer_1x.yml', + '../mask_rcnn/_base_/mask_rcnn_r50_fpn.yml', + '../mask_rcnn/_base_/mask_fpn_reader.yml', +] +pretrain_weights: https://paddledet.bj.bcebos.com/models/pretrained/ResNet50_vd_ssld_v2_pretrained.pdparams +weights: output/mask_rcnn_r50_vd_fpn_ssld_1x_coco/model_final + +ResNet: + depth: 50 + variant: d + norm_type: bn + freeze_at: 0 + return_idx: [0,1,2,3] + num_stages: 4 + lr_mult_list: [0.05, 0.05, 0.1, 0.15] + +epoch: 12 +LearningRate: + base_lr: 0.01 + schedulers: + - !PiecewiseDecay + gamma: 0.1 + milestones: [8, 11] + - !LinearWarmup + start_factor: 0.1 + steps: 1000 diff --git a/configs/ssld/mask_rcnn_r50_vd_fpn_ssld_2x_coco.yml b/configs/ssld/mask_rcnn_r50_vd_fpn_ssld_2x_coco.yml new file mode 100644 index 000000000..39674e25d --- /dev/null +++ b/configs/ssld/mask_rcnn_r50_vd_fpn_ssld_2x_coco.yml @@ -0,0 +1,29 @@ +_BASE_: [ + '../datasets/coco_instance.yml', + '../runtime.yml', + '../mask_rcnn/_base_/optimizer_1x.yml', + '../mask_rcnn/_base_/mask_rcnn_r50_fpn.yml', + '../mask_rcnn/_base_/mask_fpn_reader.yml', +] +pretrain_weights: https://paddledet.bj.bcebos.com/models/pretrained/ResNet50_vd_ssld_v2_pretrained.pdparams +weights: output/mask_rcnn_r50_vd_fpn_ssld_2x_coco/model_final + +ResNet: + depth: 50 + variant: d + norm_type: bn + freeze_at: 0 + return_idx: [0,1,2,3] + num_stages: 4 + lr_mult_list: [0.05, 0.05, 0.1, 0.15] + +epoch: 24 +LearningRate: + base_lr: 0.01 + schedulers: + - !PiecewiseDecay + gamma: 0.1 + milestones: [12, 22] + - !LinearWarmup + start_factor: 0.1 + steps: 1000 diff --git a/docs/images/ssld_model.png b/docs/images/ssld_model.png new file mode 100644 index 0000000000000000000000000000000000000000..594165933870931b98ee82fc3fab94d6bf4d3a74 GIT binary patch literal 22184 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