Skip to content

Commit aa5d103

Browse files
authored
[cherry-pick] update PP-HGNetV2 (#2994)
* add hgnetv2 (#2987) * support load ssld state1 pretrain (#2988) * update PP-HGNetV2
1 parent bfea8e8 commit aa5d103

File tree

3 files changed

+2
-33
lines changed

3 files changed

+2
-33
lines changed

docs/zh_CN/models/ImageNet1k/PP-HGNetV2.md

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ PP-HGNetV2 在 PP-HGNet 上的具体改进点如下:
4141
- 改进了 PPHGNet 网络 stem 部分,堆叠更多的 2x2 卷积核以学习更丰富的局部特征,使用更小的通道数以提升大分辨率任务如目标检测、语义分割等的推理速度;
4242
- 替换了 PP-HGNet 中靠后 stage 的较冗余的标准卷积层为 PW + DW5x5 组合,在获得更大感受野的同时网络的参数量更少,且精度可以进一步提升;
4343
- 增加了 LearnableAffineBlock 模块,其可以在增加极少参数量的同时大幅提升较小模型的精度,且对推理时间无损;
44-
- 重构了 PP-HGNet 网络的 stage 分布,使其涵盖了从 B0-B7 不同量级的模型,从而满足不同任务的需求。
44+
- 重构了 PP-HGNet 网络的 stage 分布,使其涵盖了从 B0-B6 不同量级的模型,从而满足不同任务的需求。
4545

4646
除以上改进点之外,相比 PaddleClas 提供的其他模型,PP-HGNetV2 默认提供了精度更高、泛化能力更强的 [SSLD](https://arxiv.org/abs/2103.05959) 预训练权重,其在下游任务中表现更佳。
4747

@@ -60,8 +60,6 @@ PP-HGNetV2 的精度、速度指标、预训练权重、推理模型权重链接
6060
| PPHGNetV2_B4 | 83.57 | 96.72 | 1.46 |[下载链接](https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/legendary_models/PPHGNetV2_B4_ssld_stage1_pretrained.pdparams)| [下载链接](https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/legendary_models/PPHGNetV2_B4_ssld_pretrained.pdparams) | [下载链接](https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/inference/PPHGNetV2_B4_ssld_infer.tar) |
6161
| PPHGNetV2_B5 | 84.75 | 97.32 | 2.84 |[下载链接](https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/legendary_models/PPHGNetV2_B5_ssld_stage1_pretrained.pdparams)| [下载链接](https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/legendary_models/PPHGNetV2_B5_ssld_pretrained.pdparams) | [下载链接](https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/inference/PPHGNetV2_B5_ssld_infer.tar) |
6262
| PPHGNetV2_B6 | 86.30 | 97.84 | 5.29 |[下载链接](https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/legendary_models/PPHGNetV2_B6_ssld_stage1_pretrained.pdparams)| [下载链接](https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/legendary_models/PPHGNetV2_B6_ssld_pretrained.pdparams) | [下载链接](https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/inference/PPHGNetV2_B6_ssld_infer.tar) |
63-
| PPHGNetV2_B7 | comming soon | comming soon | 11.06 |comming soon| comming soon | comming soon |
64-
6563

6664
**备注:**
6765

ppcls/arch/backbone/__init__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@
2525
from .legendary_models.pp_lcnet_v2 import PPLCNetV2_small, PPLCNetV2_base, PPLCNetV2_large
2626
from .legendary_models.esnet import ESNet_x0_25, ESNet_x0_5, ESNet_x0_75, ESNet_x1_0
2727
from .legendary_models.pp_hgnet import PPHGNet_tiny, PPHGNet_small, PPHGNet_base
28-
from .legendary_models.pp_hgnet_v2 import PPHGNetV2_B0, PPHGNetV2_B1, PPHGNetV2_B2, PPHGNetV2_B3, PPHGNetV2_B4, PPHGNetV2_B5, PPHGNetV2_B6, PPHGNetV2_B7
28+
from .legendary_models.pp_hgnet_v2 import PPHGNetV2_B0, PPHGNetV2_B1, PPHGNetV2_B2, PPHGNetV2_B3, PPHGNetV2_B4, PPHGNetV2_B5, PPHGNetV2_B6
2929

3030
from .model_zoo.resnet_vc import ResNet50_vc
3131
from .model_zoo.resnext import ResNeXt50_32x4d, ResNeXt50_64x4d, ResNeXt101_32x4d, ResNeXt101_64x4d, ResNeXt152_32x4d, ResNeXt152_64x4d

ppcls/arch/backbone/legendary_models/pp_hgnet_v2.py

Lines changed: 0 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -38,8 +38,6 @@
3838
"https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/legendary_models/PPHGNetV2_B5_ssld_pretrained.pdparams",
3939
"PPHGNetV2_B6":
4040
"https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/legendary_models/PPHGNetV2_B6_ssld_pretrained.pdparams",
41-
"PPHGNetV2_B7":
42-
"https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/legendary_models/PPHGNetV2_B7_ssld_pretrained.pdparams",
4341
}
4442

4543
__all__ = list(MODEL_URLS.keys())
@@ -702,30 +700,3 @@ def PPHGNetV2_B6(pretrained=False, use_ssld=False, **kwargs):
702700
**kwargs)
703701
_load_pretrained(pretrained, model, MODEL_URLS["PPHGNetV2_B6"], use_ssld)
704702
return model
705-
706-
707-
def PPHGNetV2_B7(pretrained=False, use_ssld=False, **kwargs):
708-
"""
709-
PPHGNetV2_B7
710-
Args:
711-
pretrained (bool/str): If `True` load pretrained parameters, `False` otherwise.
712-
If str, means the path of the pretrained model.
713-
use_ssld (bool) Whether using ssld pretrained model when pretrained is True.
714-
Returns:
715-
model: nn.Layer. Specific `PPHGNetV2_B7` model depends on args.
716-
"""
717-
stage_config = {
718-
# in_channels, mid_channels, out_channels, num_blocks, is_downsample, light_block, kernel_size, layer_num
719-
"stage1": [128, 128, 256, 2, False, False, 3, 7],
720-
"stage2": [256, 256, 512, 4, True, False, 3, 7],
721-
"stage3": [512, 512, 1024, 12, True, True, 5, 7],
722-
"stage4": [1024, 1024, 2048, 4, True, True, 5, 7],
723-
}
724-
725-
model = PPHGNetV2(
726-
stem_channels=[3, 64, 128],
727-
stage_config=stage_config,
728-
use_lab=False,
729-
**kwargs)
730-
_load_pretrained(pretrained, model, MODEL_URLS["PPHGNetV2_B7"], use_ssld)
731-
return model

0 commit comments

Comments
 (0)