diff --git a/configs/ResNeSt/ResNeSt101.yaml b/configs/ResNeSt/ResNeSt101.yaml new file mode 100644 index 0000000000000000000000000000000000000000..1881f41cc954ca1bb79658cc1b4dee97297ff9b2 --- /dev/null +++ b/configs/ResNeSt/ResNeSt101.yaml @@ -0,0 +1,78 @@ +mode: 'train' +ARCHITECTURE: + name: 'ResNeSt101' + +pretrained_model: "" +model_save_dir: "./output/" +classes_num: 1000 +total_images: 1281167 +save_interval: 1 +validate: True +valid_interval: 1 +epochs: 300 +topk: 5 +image_shape: [3, 224, 224] + +use_mix: True +ls_epsilon: 0.1 + +LEARNING_RATE: + function: 'CosineWarmup' + params: + lr: 0.1 + +OPTIMIZER: + function: 'Momentum' + params: + momentum: 0.9 + regularizer: + function: 'L2' + factor: 0.000070 + +TRAIN: + batch_size: 256 + num_workers: 4 + file_list: "./dataset/ILSVRC2012/train_list.txt" + data_dir: "./dataset/ILSVRC2012/" + shuffle_seed: 0 + transforms: + - DecodeImage: + to_rgb: True + to_np: False + channel_first: False + - RandCropImage: + size: 224 + - RandFlipImage: + flip_code: 1 + - AutoAugment: + - NormalizeImage: + scale: 1./255. + mean: [0.485, 0.456, 0.406] + std: [0.229, 0.224, 0.225] + order: '' + - ToCHWImage: + mix: + - CutmixOperator: + alpha: 0.2 + +VALID: + batch_size: 64 + num_workers: 4 + file_list: "./dataset/ILSVRC2012/val_list.txt" + data_dir: "./dataset/ILSVRC2012/" + shuffle_seed: 0 + transforms: + - DecodeImage: + to_rgb: True + to_np: False + channel_first: False + - ResizeImage: + resize_short: 288 + - CropImage: + size: 256 + - NormalizeImage: + scale: 1.0/255.0 + mean: [0.485, 0.456, 0.406] + std: [0.229, 0.224, 0.225] + order: '' + - ToCHWImage: diff --git a/ppcls/modeling/architectures/__init__.py b/ppcls/modeling/architectures/__init__.py index 3c166ebb3420f8b1abb5c7238c739024ca9e83f0..73d9646ef3fbaf91b9ec502eb50dc164c829a650 100644 --- a/ppcls/modeling/architectures/__init__.py +++ b/ppcls/modeling/architectures/__init__.py @@ -26,7 +26,7 @@ from .dpn import DPN68, DPN92, DPN98, DPN107, DPN131 from .densenet import DenseNet121, DenseNet161, DenseNet169, DenseNet201, DenseNet264 from .hrnet import HRNet_W18_C, HRNet_W30_C, HRNet_W32_C, HRNet_W40_C, HRNet_W44_C, HRNet_W48_C, HRNet_W60_C, HRNet_W64_C, SE_HRNet_W18_C, SE_HRNet_W30_C, SE_HRNet_W32_C, SE_HRNet_W40_C, SE_HRNet_W44_C, SE_HRNet_W48_C, SE_HRNet_W60_C, SE_HRNet_W64_C from .efficientnet import EfficientNetB0, EfficientNetB1, EfficientNetB2, EfficientNetB3, EfficientNetB4, EfficientNetB5, EfficientNetB6, EfficientNetB7 -from .resnest import ResNeSt50_fast_1s1x64d, ResNeSt50 +from .resnest import ResNeSt50_fast_1s1x64d, ResNeSt50, ResNeSt101 from .googlenet import GoogLeNet from .ghostnet import GhostNet_x0_5, GhostNet_x1_0, GhostNet_x1_3 from .mobilenet_v1 import MobileNetV1_x0_25, MobileNetV1_x0_5, MobileNetV1_x0_75, MobileNetV1 diff --git a/ppcls/modeling/architectures/resnest.py b/ppcls/modeling/architectures/resnest.py index 88465d521d05ea85acc27955d553a78fd4830945..0820ba2866dd889ed0ba3996c22b668c67487608 100644 --- a/ppcls/modeling/architectures/resnest.py +++ b/ppcls/modeling/architectures/resnest.py @@ -27,7 +27,7 @@ from paddle.nn import Conv2D, BatchNorm, Linear, Dropout from paddle.nn import AdaptiveAvgPool2D, MaxPool2D, AvgPool2D from paddle.regularizer import L2Decay -__all__ = ["ResNeSt50_fast_1s1x64d", "ResNeSt50"] +__all__ = ["ResNeSt50_fast_1s1x64d", "ResNeSt50", "ResNeSt101"] class ConvBNLayer(nn.Layer): @@ -685,3 +685,19 @@ def ResNeSt50(**args): final_drop=0.0, **args) return model + + +def ResNeSt101(**args): + model = ResNeSt( + layers=[3, 4, 23, 3], + radix=2, + groups=1, + bottleneck_width=64, + deep_stem=True, + stem_width=64, + avg_down=True, + avd=True, + avd_first=False, + final_drop=0.0, + **args) + return model