From 0fd8347d797c0882c759802497078b5823d03d0a Mon Sep 17 00:00:00 2001 From: unknown <365893829@qq.com> Date: Sun, 8 Jan 2023 11:20:38 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0mmclassification-0.24.1?= =?UTF-8?q?=E4=BB=A3=E7=A0=81=EF=BC=8C=E5=88=A0=E9=99=A4mmclassification-s?= =?UTF-8?q?peed-benchmark?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../mmclassification-0.24.1/.gitattributes | 2 + .../mmclassification-0.24.1/.gitignore | 134 + .../.pre-commit-config.yaml | 58 + .../mmclassification-0.24.1/.readthedocs.yml | 9 + .../mmclassification-0.24.1/CITATION.cff | 9 + .../mmclassification-0.24.1/CONTRIBUTING.md | 61 + .../LICENSE | 2 +- .../mmclassification-0.24.1/MANIFEST.in | 4 + .../mmclassification-0.24.1/README.md | 207 ++ .../mmclassification-0.24.1/README_zh-CN.md | 222 ++ .../configs/_base_/datasets/cifar100_bs16.py | 0 .../configs/_base_/datasets/cifar10_bs16.py | 0 .../configs/_base_/datasets/cub_bs8_384.py | 54 + .../configs/_base_/datasets/cub_bs8_448.py | 54 + .../_base_/datasets/imagenet21k_bs128.py | 43 + .../imagenet_bs128_poolformer_medium_224.py | 71 + .../imagenet_bs128_poolformer_small_224.py | 71 + .../_base_/datasets/imagenet_bs256_rsb_a12.py | 53 + .../_base_/datasets/imagenet_bs256_rsb_a3.py | 53 + .../configs/_base_/datasets/imagenet_bs32.py | 40 + .../datasets/imagenet_bs32_pil_bicubic.py | 48 + .../datasets/imagenet_bs32_pil_resize.py | 6 +- .../configs/_base_/datasets/imagenet_bs64.py | 0 .../_base_/datasets/imagenet_bs64_autoaug.py | 43 + .../datasets/imagenet_bs64_convmixer_224.py | 71 + .../datasets/imagenet_bs64_mixer_224.py | 48 + .../datasets/imagenet_bs64_pil_resize.py | 4 +- .../imagenet_bs64_pil_resize_autoaug.py | 53 + .../_base_/datasets/imagenet_bs64_swin_224.py | 71 + .../_base_/datasets/imagenet_bs64_swin_256.py | 71 + .../_base_/datasets/imagenet_bs64_swin_384.py | 43 + .../_base_/datasets/imagenet_bs64_t2t_224.py | 71 + .../_base_/datasets/pipelines/auto_aug.py | 96 + .../_base_/datasets/pipelines/rand_aug.py | 43 + .../_base_/datasets/stanford_cars_bs8_448.py | 46 + .../configs/_base_/datasets/voc_bs16.py | 0 .../configs/_base_/default_runtime.py | 0 .../_base_/models/conformer/base-p16.py | 22 + .../_base_/models/conformer/small-p16.py | 22 + .../_base_/models/conformer/small-p32.py | 26 + .../_base_/models/conformer/tiny-p16.py | 22 + .../models/convmixer/convmixer-1024-20.py | 11 + .../models/convmixer/convmixer-1536-20.py | 11 + .../models/convmixer/convmixer-768-32.py | 11 + .../_base_/models/convnext/convnext-base.py | 23 + .../_base_/models/convnext/convnext-large.py | 23 + .../_base_/models/convnext/convnext-small.py | 23 + .../_base_/models/convnext/convnext-tiny.py | 23 + .../_base_/models/convnext/convnext-xlarge.py | 23 + .../_base_/models/densenet/densenet121.py | 11 + .../_base_/models/densenet/densenet161.py | 11 + .../_base_/models/densenet/densenet169.py | 11 + .../_base_/models/densenet/densenet201.py | 11 + .../configs/_base_/models/efficientnet_b0.py | 12 + .../configs/_base_/models/efficientnet_b1.py | 12 + .../configs/_base_/models/efficientnet_b2.py | 12 + .../configs/_base_/models/efficientnet_b3.py | 12 + .../configs/_base_/models/efficientnet_b4.py | 12 + .../configs/_base_/models/efficientnet_b5.py | 12 + .../configs/_base_/models/efficientnet_b6.py | 12 + .../configs/_base_/models/efficientnet_b7.py | 12 + .../configs/_base_/models/efficientnet_b8.py | 12 + .../configs/_base_/models/efficientnet_em.py | 13 + .../configs/_base_/models/efficientnet_es.py | 13 + .../_base_/models/hornet/hornet-base-gf.py | 21 + .../_base_/models/hornet/hornet-base.py | 21 + .../_base_/models/hornet/hornet-large-gf.py | 21 + .../models/hornet/hornet-large-gf384.py | 17 + .../_base_/models/hornet/hornet-large.py | 21 + .../_base_/models/hornet/hornet-small-gf.py | 21 + .../_base_/models/hornet/hornet-small.py | 21 + .../_base_/models/hornet/hornet-tiny-gf.py | 21 + .../_base_/models/hornet/hornet-tiny.py | 21 + .../configs/_base_/models/hrnet/hrnet-w18.py | 15 + .../configs/_base_/models/hrnet/hrnet-w30.py | 15 + .../configs/_base_/models/hrnet/hrnet-w32.py | 15 + .../configs/_base_/models/hrnet/hrnet-w40.py | 15 + .../configs/_base_/models/hrnet/hrnet-w44.py | 15 + .../configs/_base_/models/hrnet/hrnet-w48.py | 15 + .../configs/_base_/models/hrnet/hrnet-w64.py | 15 + .../_base_/models/mlp_mixer_base_patch16.py | 25 + .../_base_/models/mlp_mixer_large_patch16.py | 25 + .../configs/_base_/models/mobilenet_v2_1x.py | 0 .../models/mobilenet_v3_large_imagenet.py | 16 + .../_base_/models/mobilenet_v3_small_cifar.py | 13 + .../models/mobilenet_v3_small_imagenet.py | 16 + .../configs/_base_/models/mvit/mvitv2-base.py | 19 + .../_base_/models/mvit/mvitv2-large.py | 23 + .../_base_/models/mvit/mvitv2-small.py | 19 + .../configs/_base_/models/mvit/mvitv2-tiny.py | 19 + .../models/poolformer/poolformer_m36.py | 22 + .../models/poolformer/poolformer_m48.py | 22 + .../models/poolformer/poolformer_s12.py | 22 + .../models/poolformer/poolformer_s24.py | 22 + .../models/poolformer/poolformer_s36.py | 22 + .../_base_/models/regnet/regnetx_1.6gf.py | 0 .../_base_/models/regnet/regnetx_12gf.py | 0 .../_base_/models/regnet/regnetx_3.2gf.py | 0 .../_base_/models/regnet/regnetx_4.0gf.py | 0 .../_base_/models/regnet/regnetx_400mf.py | 0 .../_base_/models/regnet/regnetx_6.4gf.py | 0 .../_base_/models/regnet/regnetx_8.0gf.py | 0 .../_base_/models/regnet/regnetx_800mf.py | 0 .../configs/_base_/models/repmlp-base_224.py | 18 + .../configs/_base_/models/repvgg-A0_in1k.py | 15 + .../_base_/models/repvgg-B3_lbs-mixup_in1k.py | 23 + .../_base_/models/res2net101-w26-s4.py | 18 + .../configs/_base_/models/res2net50-w14-s8.py | 18 + .../configs/_base_/models/res2net50-w26-s4.py | 18 + .../configs/_base_/models/res2net50-w26-s6.py | 18 + .../configs/_base_/models/res2net50-w26-s8.py | 18 + .../configs/_base_/models/res2net50-w48-s2.py | 18 + .../configs/_base_/models/resnest101.py | 24 + .../configs/_base_/models/resnest200.py | 24 + .../configs/_base_/models/resnest269.py | 24 + .../configs/_base_/models/resnest50.py | 23 + .../configs/_base_/models/resnet101.py | 0 .../configs/_base_/models/resnet101_cifar.py | 0 .../configs/_base_/models/resnet152.py | 0 .../configs/_base_/models/resnet152_cifar.py | 0 .../configs/_base_/models/resnet18.py | 0 .../configs/_base_/models/resnet18_cifar.py | 0 .../configs/_base_/models/resnet34.py | 0 .../configs/_base_/models/resnet34_cifar.py | 0 .../configs/_base_/models/resnet34_gem.py | 17 + .../configs/_base_/models/resnet50.py | 0 .../configs/_base_/models/resnet50_cifar.py | 0 .../_base_/models/resnet50_cifar_cutmix.py | 0 .../_base_/models/resnet50_cifar_mixup.py | 0 .../configs/_base_/models/resnet50_cutmix.py | 0 .../_base_/models/resnet50_label_smooth.py | 0 .../configs/_base_/models/resnet50_mixup.py | 0 .../configs/_base_/models/resnetv1c50.py | 17 + .../configs/_base_/models/resnetv1d101.py | 0 .../configs/_base_/models/resnetv1d152.py | 0 .../configs/_base_/models/resnetv1d50.py | 0 .../configs/_base_/models/resnext101_32x4d.py | 0 .../configs/_base_/models/resnext101_32x8d.py | 0 .../configs/_base_/models/resnext152_32x4d.py | 0 .../configs/_base_/models/resnext50_32x4d.py | 0 .../configs/_base_/models/seresnet101.py | 0 .../configs/_base_/models/seresnet50.py | 0 .../_base_/models/seresnext101_32x4d.py | 0 .../_base_/models/seresnext50_32x4d.py | 0 .../configs/_base_/models/shufflenet_v1_1x.py | 0 .../configs/_base_/models/shufflenet_v2_1x.py | 0 .../models/swin_transformer/base_224.py | 22 + .../models/swin_transformer/base_384.py | 16 + .../models/swin_transformer/large_224.py | 12 + .../models/swin_transformer/large_384.py | 16 + .../models/swin_transformer/small_224.py | 23 + .../models/swin_transformer/tiny_224.py | 22 + .../models/swin_transformer_v2/base_256.py | 25 + .../models/swin_transformer_v2/base_384.py | 17 + .../models/swin_transformer_v2/large_256.py | 16 + .../models/swin_transformer_v2/large_384.py | 16 + .../models/swin_transformer_v2/small_256.py | 25 + .../models/swin_transformer_v2/tiny_256.py | 25 + .../configs/_base_/models/t2t-vit-t-14.py | 41 + .../configs/_base_/models/t2t-vit-t-19.py | 41 + .../configs/_base_/models/t2t-vit-t-24.py | 41 + .../_base_/models/tnt_s_patch16_224.py | 29 + .../configs/_base_/models/twins_pcpvt_base.py | 30 + .../configs/_base_/models/twins_svt_base.py | 30 + .../configs/_base_/models/van/van_b0.py | 21 + .../configs/_base_/models/van/van_b1.py | 21 + .../configs/_base_/models/van/van_b2.py | 13 + .../configs/_base_/models/van/van_b3.py | 13 + .../configs/_base_/models/van/van_b4.py | 13 + .../configs/_base_/models/van/van_b5.py | 13 + .../configs/_base_/models/van/van_b6.py | 13 + .../configs/_base_/models/van/van_base.py | 1 + .../configs/_base_/models/van/van_large.py | 1 + .../configs/_base_/models/van/van_small.py | 1 + .../configs/_base_/models/van/van_tiny.py | 1 + .../configs/_base_/models/vgg11.py | 0 .../configs/_base_/models/vgg11bn.py | 0 .../configs/_base_/models/vgg13.py | 0 .../configs/_base_/models/vgg13bn.py | 0 .../configs/_base_/models/vgg16.py | 0 .../configs/_base_/models/vgg16bn.py | 0 .../configs/_base_/models/vgg19.py | 0 .../configs/_base_/models/vgg19bn.py | 0 .../configs/_base_/models/vit-base-p16.py | 25 + .../configs/_base_/models/vit-base-p32.py | 24 + .../configs/_base_/models/vit-large-p16.py | 24 + .../configs/_base_/models/vit-large-p32.py | 24 + .../configs/_base_/models/wide-resnet50.py | 20 + .../configs/_base_/schedules/cifar10_bs128.py | 0 .../configs/_base_/schedules/cub_bs64.py | 13 + .../imagenet_bs1024_adamw_conformer.py | 29 + .../schedules/imagenet_bs1024_adamw_swin.py | 30 + .../_base_/schedules/imagenet_bs1024_coslr.py | 12 + .../imagenet_bs1024_linearlr_bn_nowd.py | 0 .../_base_/schedules/imagenet_bs2048.py | 0 .../_base_/schedules/imagenet_bs2048_AdamW.py | 0 .../_base_/schedules/imagenet_bs2048_coslr.py | 0 .../_base_/schedules/imagenet_bs2048_rsb.py | 12 + .../_base_/schedules/imagenet_bs256.py | 0 .../_base_/schedules/imagenet_bs256_140e.py | 0 .../imagenet_bs256_200e_coslr_warmup.py | 11 + .../_base_/schedules/imagenet_bs256_coslr.py | 0 .../schedules/imagenet_bs256_epochstep.py | 0 .../_base_/schedules/imagenet_bs4096_AdamW.py | 24 + .../_base_/schedules/stanford_cars_bs8.py | 7 + .../configs/conformer/README.md | 37 + .../conformer-base-p16_8xb128_in1k.py | 9 + .../conformer-small-p16_8xb128_in1k.py | 9 + .../conformer-small-p32_8xb128_in1k.py | 9 + .../conformer-tiny-p16_8xb128_in1k.py | 9 + .../configs/conformer/metafile.yml | 78 + .../configs/convmixer/README.md | 42 + .../convmixer-1024-20_10xb64_in1k.py | 10 + .../convmixer-1536-20_10xb64_in1k.py | 10 + .../convmixer/convmixer-768-32_10xb64_in1k.py | 10 + .../configs/convmixer/metafile.yml | 61 + .../configs/convnext/README.md | 59 + .../convnext/convnext-base_32xb128_in1k.py | 12 + .../convnext/convnext-large_64xb64_in1k.py | 12 + .../convnext/convnext-small_32xb128_in1k.py | 12 + .../convnext/convnext-tiny_32xb128_in1k.py | 12 + .../convnext/convnext-xlarge_64xb64_in1k.py | 12 + .../configs/convnext/metafile.yml | 221 ++ .../configs/cspnet/README.md | 41 + .../configs/cspnet/cspdarknet50_8xb32_in1k.py | 65 + .../configs/cspnet/cspresnet50_8xb32_in1k.py | 66 + .../configs/cspnet/cspresnext50_8xb32_in1k.py | 65 + .../configs/cspnet/metafile.yml | 64 + .../configs/csra/README.md | 36 + .../configs/csra/metafile.yml | 29 + .../csra/resnet101-csra_1xb16_voc07-448px.py | 75 + .../configs/deit/README.md | 52 + ...eit-base-distilled_ft-16xb32_in1k-384px.py | 9 + .../deit-base-distilled_pt-16xb64_in1k.py | 10 + .../deit/deit-base_ft-16xb32_in1k-384px.py | 29 + .../configs/deit/deit-base_pt-16xb64_in1k.py | 13 + .../deit-small-distilled_pt-4xb256_in1k.py | 7 + .../configs/deit/deit-small_pt-4xb256_in1k.py | 44 + .../deit-tiny-distilled_pt-4xb256_in1k.py | 7 + .../configs/deit/deit-tiny_pt-4xb256_in1k.py | 7 + .../configs/deit/metafile.yml | 153 ++ .../configs/densenet/README.md | 41 + .../densenet/densenet121_4xb256_in1k.py | 10 + .../densenet/densenet161_4xb256_in1k.py | 10 + .../densenet/densenet169_4xb256_in1k.py | 10 + .../densenet/densenet201_4xb256_in1k.py | 10 + .../configs/densenet/metafile.yml | 76 + .../configs/efficientformer/README.md | 47 + .../efficientformer-l1_8xb128_in1k.py | 24 + .../efficientformer-l3_8xb128_in1k.py | 24 + .../efficientformer-l7_8xb128_in1k.py | 24 + .../configs/efficientformer/metafile.yml | 67 + .../configs/efficientnet/README.md | 62 + .../efficientnet-b0_8xb32-01norm_in1k.py | 39 + .../efficientnet-b0_8xb32_in1k.py | 39 + .../efficientnet-b1_8xb32-01norm_in1k.py | 39 + .../efficientnet-b1_8xb32_in1k.py | 39 + .../efficientnet-b2_8xb32-01norm_in1k.py | 39 + .../efficientnet-b2_8xb32_in1k.py | 39 + .../efficientnet-b3_8xb32-01norm_in1k.py | 39 + .../efficientnet-b3_8xb32_in1k.py | 39 + .../efficientnet-b4_8xb32-01norm_in1k.py | 39 + .../efficientnet-b4_8xb32_in1k.py | 39 + .../efficientnet-b5_8xb32-01norm_in1k.py | 39 + .../efficientnet-b5_8xb32_in1k.py | 39 + .../efficientnet-b6_8xb32-01norm_in1k.py | 39 + .../efficientnet-b6_8xb32_in1k.py | 39 + .../efficientnet-b7_8xb32-01norm_in1k.py | 39 + .../efficientnet-b7_8xb32_in1k.py | 39 + .../efficientnet-b8_8xb32-01norm_in1k.py | 39 + .../efficientnet-b8_8xb32_in1k.py | 39 + .../efficientnet-em_8xb32-01norm_in1k.py | 39 + .../efficientnet-es_8xb32-01norm_in1k.py | 39 + .../configs/efficientnet/metafile.yml | 391 +++ .../resnet50_b32x8_fp16_dynamic_imagenet.py | 6 + .../fp16/resnet50_b32x8_fp16_imagenet.py | 6 + .../configs/hornet/README.md | 51 + .../hornet/hornet-base-gf_8xb64_in1k.py | 13 + .../configs/hornet/hornet-base_8xb64_in1k.py | 13 + .../hornet/hornet-small-gf_8xb64_in1k.py | 13 + .../configs/hornet/hornet-small_8xb64_in1k.py | 13 + .../hornet/hornet-tiny-gf_8xb128_in1k.py | 13 + .../configs/hornet/hornet-tiny_8xb128_in1k.py | 13 + .../configs/hornet/metafile.yml | 97 + .../configs/hrnet/README.md | 44 + .../configs/hrnet/hrnet-w18_4xb32_in1k.py | 6 + .../configs/hrnet/hrnet-w30_4xb32_in1k.py | 6 + .../configs/hrnet/hrnet-w32_4xb32_in1k.py | 6 + .../configs/hrnet/hrnet-w40_4xb32_in1k.py | 6 + .../configs/hrnet/hrnet-w44_4xb32_in1k.py | 6 + .../configs/hrnet/hrnet-w48_4xb32_in1k.py | 6 + .../configs/hrnet/hrnet-w64_4xb32_in1k.py | 6 + .../configs/hrnet/metafile.yml | 162 ++ .../configs/lenet/README.md | 28 + .../configs/lenet/lenet5_mnist.py | 0 .../configs/mlp_mixer/README.md | 37 + .../configs/mlp_mixer/metafile.yml | 50 + .../mlp-mixer-base-p16_64xb64_in1k.py | 6 + .../mlp-mixer-large-p16_64xb64_in1k.py | 6 + .../configs/mobilenet_v2/README.md | 38 + .../configs/mobilenet_v2/metafile.yml | 34 + .../mobilenet_v2/mobilenet-v2_8xb32_in1k.py | 8 + .../mobilenet_v2_b32x8_imagenet.py | 6 + .../configs/mobilenet_v3/README.md | 36 + .../configs/mobilenet_v3/metafile.yml | 47 + .../mobilenet-v3-large_8xb32_in1k.py | 158 ++ .../mobilenet-v3-small_8xb16_cifar10.py | 8 + .../mobilenet-v3-small_8xb32_in1k.py | 158 ++ .../mobilenet_v3_large_imagenet.py | 6 + .../mobilenet_v3/mobilenet_v3_small_cifar.py | 6 + .../mobilenet_v3_small_imagenet.py | 6 + .../configs/mvit/README.md | 44 + .../configs/mvit/metafile.yml | 95 + .../configs/mvit/mvitv2-base_8xb256_in1k.py | 29 + .../configs/mvit/mvitv2-large_8xb256_in1k.py | 29 + .../configs/mvit/mvitv2-small_8xb256_in1k.py | 29 + .../configs/mvit/mvitv2-tiny_8xb256_in1k.py | 29 + .../configs/poolformer/README.md | 38 + .../configs/poolformer/metafile.yml | 99 + .../poolformer/poolformer-m36_32xb128_in1k.py | 8 + .../poolformer/poolformer-m48_32xb128_in1k.py | 8 + .../poolformer/poolformer-s12_32xb128_in1k.py | 8 + .../poolformer/poolformer-s24_32xb128_in1k.py | 8 + .../poolformer/poolformer-s36_32xb128_in1k.py | 8 + .../configs/regnet/README.md | 51 + .../configs/regnet/metafile.yml | 122 + .../regnet/regnetx-1.6gf_8xb128_in1k.py | 6 + .../configs/regnet/regnetx-12gf_8xb64_in1k.py | 11 + .../regnet/regnetx-3.2gf_8xb64_in1k.py | 11 + .../regnet/regnetx-4.0gf_8xb64_in1k.py | 11 + .../regnet/regnetx-400mf_8xb128_in1k.py | 77 + .../regnet/regnetx-6.4gf_8xb64_in1k.py | 11 + .../regnet/regnetx-8.0gf_8xb64_in1k.py | 11 + .../regnet/regnetx-800mf_8xb128_in1k.py | 6 + .../configs/repmlp/README.md | 93 + .../configs/repmlp/metafile.yml | 48 + .../repmlp/repmlp-base_8xb64_in1k-256px.py | 21 + .../configs/repmlp/repmlp-base_8xb64_in1k.py | 20 + .../repmlp/repmlp-base_delopy_8xb64_in1k.py | 3 + .../repmlp-base_deploy_8xb64_in1k-256px.py | 3 + .../configs/repvgg/README.md | 101 + .../repvgg-A0_deploy_4xb64-coslr-120e_in1k.py | 3 + .../repvgg-A1_deploy_4xb64-coslr-120e_in1k.py | 3 + .../repvgg-A2_deploy_4xb64-coslr-120e_in1k.py | 3 + .../repvgg-B0_deploy_4xb64-coslr-120e_in1k.py | 3 + .../repvgg-B1_deploy_4xb64-coslr-120e_in1k.py | 3 + ...epvgg-B1g2_deploy_4xb64-coslr-120e_in1k.py | 3 + ...epvgg-B1g4_deploy_4xb64-coslr-120e_in1k.py | 3 + .../repvgg-B2_deploy_4xb64-coslr-120e_in1k.py | 3 + ...4xb64-autoaug-lbs-mixup-coslr-200e_in1k.py | 3 + ...4xb64-autoaug-lbs-mixup-coslr-200e_in1k.py | 3 + ...4xb64-autoaug-lbs-mixup-coslr-200e_in1k.py | 3 + ...4xb64-autoaug-lbs-mixup-coslr-200e_in1k.py | 3 + .../configs/repvgg/metafile.yml | 208 ++ .../repvgg/repvgg-A0_4xb64-coslr-120e_in1k.py | 8 + .../repvgg/repvgg-A1_4xb64-coslr-120e_in1k.py | 3 + .../repvgg/repvgg-A2_4xb64-coslr-120e_in1k.py | 3 + .../repvgg/repvgg-B0_4xb64-coslr-120e_in1k.py | 3 + .../repvgg/repvgg-B1_4xb64-coslr-120e_in1k.py | 3 + .../repvgg-B1g2_4xb64-coslr-120e_in1k.py | 3 + .../repvgg-B1g4_4xb64-coslr-120e_in1k.py | 3 + .../repvgg/repvgg-B2_4xb64-coslr-120e_in1k.py | 3 + ...4xb64-autoaug-lbs-mixup-coslr-200e_in1k.py | 3 + ...4xb64-autoaug-lbs-mixup-coslr-200e_in1k.py | 6 + ...4xb64-autoaug-lbs-mixup-coslr-200e_in1k.py | 3 + ...4xb64-autoaug-lbs-mixup-coslr-200e_in1k.py | 3 + .../configs/res2net/README.md | 37 + .../configs/res2net/metafile.yml | 70 + .../res2net/res2net101-w26-s4_8xb32_in1k.py | 5 + .../res2net/res2net50-w14-s8_8xb32_in1k.py | 5 + .../res2net/res2net50-w26-s8_8xb32_in1k.py | 5 + .../configs/resnest/README.md | 26 + .../configs/resnest/resnest101_32xb64_in1k.py | 181 ++ .../resnest/resnest101_b64x32_imagenet.py | 6 + .../configs/resnest/resnest200_64xb32_in1k.py | 181 ++ .../resnest/resnest200_b32x64_imagenet.py | 6 + .../configs/resnest/resnest269_64xb32_in1k.py | 181 ++ .../resnest/resnest269_b32x64_imagenet.py | 6 + .../configs/resnest/resnest50_32xb64_in1k.py | 181 ++ .../resnest/resnest50_b64x32_imagenet.py | 6 + .../configs/resnet/README.md | 91 + .../configs/resnet/metafile.yml | 365 +++ .../resnet/resnet101_8xb16_cifar10.py} | 0 .../configs/resnet/resnet101_8xb32_in1k.py} | 0 .../configs/resnet/resnet101_b16x8_cifar10.py | 6 + .../resnet/resnet101_b32x8_imagenet.py | 6 + .../resnet/resnet152_8xb16_cifar10.py} | 0 .../configs/resnet/resnet152_8xb32_in1k.py} | 0 .../configs/resnet/resnet152_b16x8_cifar10.py | 6 + .../resnet/resnet152_b32x8_imagenet.py | 6 + .../configs/resnet/resnet18_8xb16_cifar10.py} | 0 .../configs/resnet/resnet18_8xb32_in1k.py} | 0 .../configs/resnet/resnet18_b16x8_cifar10.py | 6 + .../configs/resnet/resnet18_b32x8_imagenet.py | 6 + .../configs/resnet/resnet34_8xb16_cifar10.py} | 0 .../configs/resnet/resnet34_8xb32_in1k.py} | 0 .../configs/resnet/resnet34_b16x8_cifar10.py | 6 + .../configs/resnet/resnet34_b32x8_imagenet.py | 6 + .../resnet50_32xb64-warmup-coslr_in1k.py} | 0 .../resnet/resnet50_32xb64-warmup-lbs_in1k.py | 12 + .../resnet/resnet50_32xb64-warmup_in1k.py} | 0 .../resnet/resnet50_8xb128_coslr-90e_in21k.py | 11 + .../resnet/resnet50_8xb16-mixup_cifar10.py} | 0 .../configs/resnet/resnet50_8xb16_cifar10.py} | 0 .../resnet/resnet50_8xb16_cifar100.py} | 0 .../resnet50_8xb256-rsb-a1-600e_in1k.py | 33 + .../resnet50_8xb256-rsb-a2-300e_in1k.py | 25 + .../resnet50_8xb256-rsb-a3-100e_in1k.py | 19 + .../resnet50_8xb32-coslr-preciseBN_in1k.py | 12 + .../resnet/resnet50_8xb32-coslr_in1k.py} | 0 .../resnet/resnet50_8xb32-cutmix_in1k.py} | 0 .../resnet50_8xb32-fp16-dynamic_in1k.py | 4 + .../resnet/resnet50_8xb32-fp16_in1k.py | 4 + .../resnet/resnet50_8xb32-lbs_in1k.py} | 0 .../resnet/resnet50_8xb32-mixup_in1k.py} | 0 .../configs/resnet/resnet50_8xb32_in1k.py | 6 + .../configs/resnet/resnet50_8xb8_cars.py | 19 + .../configs/resnet/resnet50_8xb8_cub.py | 19 + .../configs/resnet/resnet50_b16x8_cifar10.py | 6 + .../configs/resnet/resnet50_b16x8_cifar100.py | 6 + .../resnet/resnet50_b16x8_cifar10_mixup.py | 6 + .../resnet/resnet50_b32x8_coslr_imagenet.py | 6 + .../resnet/resnet50_b32x8_cutmix_imagenet.py | 6 + .../configs/resnet/resnet50_b32x8_imagenet.py | 6 + .../resnet50_b32x8_label_smooth_imagenet.py | 6 + .../resnet/resnet50_b32x8_mixup_imagenet.py | 6 + .../resnet50_b64x32_warmup_coslr_imagenet.py | 6 + .../resnet/resnet50_b64x32_warmup_imagenet.py | 6 + ...t50_b64x32_warmup_label_smooth_imagenet.py | 6 + .../configs/resnet/resnetv1c101_8xb32_in1k.py | 7 + .../configs/resnet/resnetv1c152_8xb32_in1k.py | 7 + .../configs/resnet/resnetv1c50_8xb32_in1k.py | 5 + .../resnet/resnetv1d101_8xb32_in1k.py} | 0 .../resnet/resnetv1d101_b32x8_imagenet.py | 6 + .../resnet/resnetv1d152_8xb32_in1k.py} | 0 .../resnet/resnetv1d152_b32x8_imagenet.py | 6 + .../configs/resnet/resnetv1d50_8xb32_in1k.py} | 0 .../resnet/resnetv1d50_b32x8_imagenet.py | 6 + .../configs/resnext/README.md | 36 + .../configs/resnext/metafile.yml | 73 + .../resnext/resnext101-32x4d_8xb32_in1k.py} | 0 .../resnext/resnext101-32x8d_8xb32_in1k.py} | 0 .../resnext101_32x4d_b32x8_imagenet.py | 6 + .../resnext101_32x8d_b32x8_imagenet.py | 6 + .../resnext/resnext152-32x4d_8xb32_in1k.py} | 0 .../resnext152_32x4d_b32x8_imagenet.py | 6 + .../resnext/resnext50-32x4d_8xb32_in1k.py} | 0 .../resnext/resnext50_32x4d_b32x8_imagenet.py | 6 + .../configs/seresnet/README.md | 34 + .../configs/seresnet/metafile.yml | 47 + .../seresnet/seresnet101_8xb32_in1k.py} | 0 .../seresnet/seresnet101_b32x8_imagenet.py | 6 + .../seresnet/seresnet50_8xb32_in1k.py} | 0 .../seresnet/seresnet50_b32x8_imagenet.py | 6 + .../seresnext101-32x4d_8xb32_in1k.py} | 0 .../seresnext101_32x4d_b32x8_imagenet.py | 6 + .../seresnet/seresnext50-32x4d_8xb32_in1k.py} | 0 .../seresnext50_32x4d_b32x8_imagenet.py | 6 + .../configs/shufflenet_v1/README.md | 33 + .../configs/shufflenet_v1/metafile.yml | 35 + .../shufflenet-v1-1x_16xb64_in1k.py} | 0 ..._v1_1x_b64x16_linearlr_bn_nowd_imagenet.py | 6 + .../configs/shufflenet_v2/README.md | 33 + .../configs/shufflenet_v2/metafile.yml | 35 + .../shufflenet-v2-1x_16xb64_in1k.py | 8 + ..._v2_1x_b64x16_linearlr_bn_nowd_imagenet.py | 6 + .../configs/swin_transformer/README.md | 60 + .../configs/swin_transformer/metafile.yml | 201 ++ .../swin-base_16xb64_in1k-384px.py | 7 + .../swin_transformer/swin-base_16xb64_in1k.py | 6 + .../swin-large_16xb64_in1k-384px.py | 7 + .../swin-large_16xb64_in1k.py | 7 + .../swin-large_8xb8_cub_384px.py | 37 + .../swin-small_16xb64_in1k.py | 6 + .../swin_transformer/swin-tiny_16xb64_in1k.py | 6 + .../swin_base_224_b16x64_300e_imagenet.py | 6 + .../swin_base_384_evalonly_imagenet.py | 6 + .../swin_large_224_evalonly_imagenet.py | 6 + .../swin_large_384_evalonly_imagenet.py | 6 + .../swin_small_224_b16x64_300e_imagenet.py | 6 + .../swin_tiny_224_b16x64_300e_imagenet.py | 6 + .../configs/swin_transformer_v2/README.md | 58 + .../configs/swin_transformer_v2/metafile.yml | 204 ++ .../swinv2-base-w16_16xb64_in1k-256px.py | 8 + ...v2-base-w16_in21k-pre_16xb64_in1k-256px.py | 13 + ...v2-base-w24_in21k-pre_16xb64_in1k-384px.py | 14 + .../swinv2-base-w8_16xb64_in1k-256px.py | 6 + ...2-large-w16_in21k-pre_16xb64_in1k-256px.py | 13 + ...2-large-w24_in21k-pre_16xb64_in1k-384px.py | 15 + .../swinv2-small-w16_16xb64_in1k-256px.py | 8 + .../swinv2-small-w8_16xb64_in1k-256px.py | 6 + .../swinv2-tiny-w16_16xb64_in1k-256px.py | 8 + .../swinv2-tiny-w8_16xb64_in1k-256px.py | 6 + .../configs/t2t_vit/README.md | 36 + .../configs/t2t_vit/metafile.yml | 58 + .../t2t_vit/t2t-vit-t-14_8xb64_in1k.py | 35 + .../t2t_vit/t2t-vit-t-19_8xb64_in1k.py | 35 + .../t2t_vit/t2t-vit-t-24_8xb64_in1k.py | 35 + .../configs/tnt/README.md | 36 + .../configs/tnt/metafile.yml | 29 + .../configs/tnt/tnt-s-p16_16xb64_in1k.py | 39 + .../tnt_s_patch16_224_evalonly_imagenet.py | 6 + .../configs/twins/README.md | 39 + .../configs/twins/metafile.yml | 114 + .../twins/twins-pcpvt-base_8xb128_in1k.py | 33 + .../twins/twins-pcpvt-large_16xb64_in1k.py | 5 + .../twins/twins-pcpvt-small_8xb128_in1k.py | 3 + .../twins/twins-svt-base_8xb128_in1k.py | 33 + .../twins/twins-svt-large_16xb64_in1k.py | 5 + .../twins/twins-svt-small_8xb128_in1k.py | 3 + .../configs/van/README.md | 50 + .../configs/van/metafile.yml | 84 + .../configs/van/van-b0_8xb128_in1k.py | 61 + .../configs/van/van-b1_8xb128_in1k.py | 61 + .../configs/van/van-b2_8xb128_in1k.py | 61 + .../configs/van/van-b3_8xb128_in1k.py | 61 + .../configs/van/van-b4_8xb128_in1k.py | 61 + .../configs/van/van-base_8xb128_in1k.py | 6 + .../configs/van/van-large_8xb128_in1k.py | 6 + .../configs/van/van-small_8xb128_in1k.py | 6 + .../configs/van/van-tiny_8xb128_in1k.py | 6 + .../configs/vgg/README.md | 39 + .../configs/vgg/metafile.yml | 125 + .../configs/vgg/vgg11_8xb32_in1k.py} | 0 .../configs/vgg/vgg11_b32x8_imagenet.py | 6 + .../configs/vgg/vgg11bn_8xb32_in1k.py} | 0 .../configs/vgg/vgg11bn_b32x8_imagenet.py | 6 + .../configs/vgg/vgg13_8xb32_in1k.py} | 0 .../configs/vgg/vgg13_b32x8_imagenet.py | 6 + .../configs/vgg/vgg13bn_8xb32_in1k.py} | 0 .../configs/vgg/vgg13bn_b32x8_imagenet.py | 6 + .../configs/vgg/vgg16_8xb16_voc.py} | 0 .../configs/vgg/vgg16_8xb32_in1k.py | 7 + .../configs/vgg/vgg16_b16x8_voc.py | 6 + .../configs/vgg/vgg16_b32x8_imagenet.py | 6 + .../configs/vgg/vgg16bn_8xb32_in1k.py} | 0 .../configs/vgg/vgg16bn_b32x8_imagenet.py | 6 + .../configs/vgg/vgg19_8xb32_in1k.py} | 0 .../configs/vgg/vgg19_b32x8_imagenet.py | 6 + .../configs/vgg/vgg19bn_8xb32_in1k.py} | 0 .../configs/vgg/vgg19bn_b32x8_imagenet.py | 6 + .../configs/vision_transformer/README.md | 57 + .../configs/vision_transformer/metafile.yml | 79 + .../vit-base-p16_ft-4xb544-ipu_in1k.py | 115 + .../vit-base-p16_ft-64xb64_in1k-384.py | 36 + .../vit-base-p16_pt-64xb64_in1k-224.py | 12 + .../vit-base-p32_ft-64xb64_in1k-384.py | 36 + .../vit-base-p32_pt-64xb64_in1k-224.py | 12 + .../vit-large-p16_ft-64xb64_in1k-384.py | 36 + .../vit-large-p16_pt-64xb64_in1k-224.py | 12 + .../vit-large-p32_ft-64xb64_in1k-384.py | 37 + .../vit-large-p32_pt-64xb64_in1k-224.py | 12 + .../configs/wrn/README.md | 35 + .../configs/wrn/metafile.yml | 77 + .../configs/wrn/wide-resnet101_8xb32_in1k.py | 7 + .../configs/wrn/wide-resnet50_8xb32_in1k.py | 5 + .../wrn/wide-resnet50_timm_8xb32_in1k.py | 5 + .../mmclassification-0.24.1/demo/bird.JPEG | Bin 0 -> 74237 bytes .../mmclassification-0.24.1/demo/cat-dog.png | Bin 0 -> 744894 bytes .../demo/demo.JPEG | Bin .../mmclassification-0.24.1/demo/dog.jpg | Bin 0 -> 26160 bytes .../demo/image_demo.py | 33 + .../demo/ipu_train_example.sh | 9 + .../mmclassification-0.24.1/docker/Dockerfile | 23 + .../docker/serve/Dockerfile | 49 + .../docker/serve/config.properties | 0 .../docker/serve/entrypoint.sh | 0 .../docs/en}/Makefile | 0 .../docs/en/_static/css/readthedocs.css | 27 + .../docs/en/_static/image}/mmcls-logo.png | Bin .../image/tools/analysis/analyze_log.jpg | Bin 0 -> 68146 bytes .../tools/visualization/lr_schedule1.png | Bin 0 -> 30065 bytes .../tools/visualization/lr_schedule2.png | Bin 0 -> 48176 bytes .../docs/en/_static/js/custom.js | 1 + .../docs/en/_templates/classtemplate.rst | 14 + .../docs/en/api/apis.rst | 45 + .../docs/en/api/core.rst | 62 + .../docs/en/api/datasets.rst | 61 + .../docs/en/api/models.rst | 141 + .../docs/en/api/models.utils.augment.rst | 35 + .../docs/en/api/models.utils.rst | 50 + .../docs/en/api/transforms.rst | 171 ++ .../docs/en/api/utils.rst | 23 + .../docs/en/changelog.md | 718 +++++ .../docs/en/compatibility.md | 8 + .../mmclassification-0.24.1/docs/en/conf.py | 238 ++ .../docs/en/device/npu.md | 34 + .../docs/en/docutils.conf | 2 + .../mmclassification-0.24.1/docs/en/faq.md | 83 + .../docs/en/getting_started.md | 275 ++ .../mmclassification-0.24.1/docs/en/index.rst | 99 + .../docs/en/install.md | 219 ++ .../docs/en/model_zoo.md | 162 ++ .../mmclassification-0.24.1/docs/en/stat.py | 100 + .../docs/en/tools/analysis.md | 211 ++ .../docs/en/tools/miscellaneous.md | 59 + .../docs/en/tools/model_serving.md | 87 + .../docs/en/tools/onnx2tensorrt.md | 80 + .../docs/en/tools/pytorch2onnx.md | 204 ++ .../docs/en/tools/pytorch2torchscript.md | 56 + .../docs/en/tools/visualization.md | 302 +++ .../tutorials/MMClassification_python.ipynb | 2040 ++++++++++++++ .../en/tutorials/MMClassification_tools.ipynb | 1249 +++++++++ .../docs/en/tutorials/config.md | 417 +++ .../docs/en/tutorials/data_pipeline.md | 150 ++ .../docs/en/tutorials/finetune.md | 236 ++ .../docs/en/tutorials/new_dataset.md | 239 ++ .../docs/en/tutorials/new_modules.md | 272 ++ .../docs/en/tutorials/runtime.md | 257 ++ .../docs/en/tutorials/schedule.md | 341 +++ .../docs/zh_CN}/Makefile | 0 .../docs/zh_CN/_static/css/readthedocs.css | 27 + .../docs/zh_CN/_static/image/mmcls-logo.png | Bin 0 -> 33009 bytes .../image/tools/analysis/analyze_log.jpg | Bin 0 -> 68146 bytes .../tools/visualization/lr_schedule1.png | Bin 0 -> 30065 bytes .../tools/visualization/lr_schedule2.png | Bin 0 -> 48176 bytes .../docs/zh_CN/_static/js/custom.js | 1 + .../docs/zh_CN/community/CONTRIBUTING.md | 62 + .../docs/zh_CN/compatibility.md | 7 + .../docs/zh_CN/conf.py | 226 ++ .../docs/zh_CN/device/npu.md | 34 + .../docs/zh_CN/docutils.conf | 2 + .../mmclassification-0.24.1/docs/zh_CN/faq.md | 73 + .../docs/zh_CN/getting_started.md | 266 ++ .../docs/zh_CN/imgs/qq_group_qrcode.jpg | Bin 0 -> 71955 bytes .../docs/zh_CN}/imgs/zhihu_qrcode.jpg | Bin .../docs/zh_CN/index.rst | 99 + .../docs/zh_CN/install.md | 210 ++ .../docs/zh_CN/stat.py | 99 + .../docs/zh_CN/tools/analysis.md | 211 ++ .../docs/zh_CN/tools/miscellaneous.md | 59 + .../docs/zh_CN/tools/model_serving.md | 87 + .../docs/zh_CN/tools/onnx2tensorrt.md | 75 + .../docs/zh_CN/tools/pytorch2onnx.md | 88 + .../docs/zh_CN/tools/pytorch2torchscript.md | 54 + .../docs/zh_CN/tools/visualization.md | 302 +++ .../MMClassification_python_cn.ipynb | 2041 ++++++++++++++ .../tutorials/MMClassification_tools_cn.ipynb | 1247 +++++++++ .../docs/zh_CN/tutorials/config.md | 417 +++ .../docs/zh_CN/tutorials/data_pipeline.md | 148 ++ .../docs/zh_CN/tutorials/finetune.md | 222 ++ .../docs/zh_CN/tutorials/new_dataset.md | 230 ++ .../docs/zh_CN/tutorials/new_modules.md | 280 ++ .../docs/zh_CN/tutorials/runtime.md | 260 ++ .../docs/zh_CN/tutorials/schedule.md | 333 +++ .../mmclassification-0.24.1/hostfile | 2 + .../mmclassification-0.24.1/mmcls/__init__.py | 60 + .../mmcls/apis/__init__.py | 10 + .../mmcls/apis/inference.py | 30 +- .../mmcls/apis/test.py | 230 ++ .../mmcls/apis/test_old.py | 228 ++ .../mmcls/apis/test_time.py | 257 ++ .../mmcls/apis/train.py | 232 ++ .../mmcls/core/__init__.py | 5 + .../mmcls/core/evaluation/__init__.py | 12 + .../mmcls/core/evaluation/eval_hooks.py | 78 + .../mmcls/core/evaluation/eval_metrics.py | 259 ++ .../mmcls/core/evaluation/mean_ap.py | 7 +- .../evaluation/multilabel_eval_metrics.py | 1 + .../mmcls/core/export/__init__.py | 4 + .../mmcls/core/export/test.py | 96 + .../mmcls/core/hook/__init__.py | 10 + .../mmcls/core/hook/class_num_check_hook.py | 73 + .../mmcls/core/hook/lr_updater.py | 83 + .../mmcls/core/hook/precise_bn_hook.py | 180 ++ .../mmcls/core/hook/wandblogger_hook.py | 340 +++ .../mmcls/core/optimizers/__init__.py | 6 + .../mmcls/core/optimizers/lamb.py | 227 ++ .../mmcls/core/utils/__init__.py | 7 + .../mmcls/core/utils/dist_utils.py | 98 + .../mmcls/core/utils/misc.py | 1 + .../mmcls/core/visualization/__init__.py | 8 + .../mmcls/core/visualization/image.py | 343 +++ .../mmcls/datasets/__init__.py | 25 + .../mmcls/datasets/base_dataset.py | 49 +- .../mmcls/datasets/builder.py | 183 ++ .../mmcls/datasets/cifar.py | 27 +- .../mmcls/datasets/cub.py | 129 + .../mmcls/datasets/custom.py | 229 ++ .../mmcls/datasets/dataset_wrappers.py | 329 +++ .../mmcls/datasets/imagenet.py | 136 +- .../mmcls/datasets/imagenet21k.py | 174 ++ .../mmcls/datasets/mnist.py | 5 +- .../mmcls/datasets/multi_label.py | 23 +- .../mmcls/datasets/pipelines/__init__.py | 22 + .../mmcls/datasets/pipelines/auto_augment.py | 128 +- .../mmcls/datasets/pipelines/compose.py | 1 + .../mmcls/datasets/pipelines/formatting.py | 195 ++ .../mmcls/datasets/pipelines/loading.py | 1 + .../mmcls/datasets/pipelines/transforms.py | 226 +- .../mmcls/datasets/samplers/__init__.py | 5 + .../datasets/samplers/distributed_sampler.py | 61 + .../mmcls/datasets/samplers/repeat_aug.py | 106 + .../mmcls/datasets/stanford_cars.py | 210 ++ .../mmcls/datasets/utils.py | 153 ++ .../mmcls/datasets/voc.py | 94 + .../mmcls/models/__init__.py | 14 + .../mmcls/models/backbones/__init__.py | 51 + .../mmcls/models/backbones/alexnet.py | 3 +- .../mmcls/models/backbones/base_backbone.py | 1 + .../mmcls/models/backbones/conformer.py | 626 +++++ .../mmcls/models/backbones/convmixer.py | 176 ++ .../mmcls/models/backbones/convnext.py | 333 +++ .../mmcls/models/backbones/cspnet.py | 679 +++++ .../mmcls/models/backbones/deit.py | 117 + .../mmcls/models/backbones/densenet.py | 332 +++ .../mmcls/models/backbones/efficientformer.py | 606 +++++ .../mmcls/models/backbones/efficientnet.py | 407 +++ .../mmcls/models/backbones/hornet.py | 499 ++++ .../mmcls/models/backbones/hrnet.py | 563 ++++ .../mmcls/models/backbones/lenet.py | 3 +- .../mmcls/models/backbones/mlp_mixer.py | 263 ++ .../mmcls/models/backbones/mobilenet_v2.py | 32 +- .../mmcls/models/backbones/mobilenet_v3.py | 195 ++ .../mmcls/models/backbones/mvit.py | 700 +++++ .../mmcls/models/backbones/poolformer.py | 416 +++ .../mmcls/models/backbones/regnet.py | 100 +- .../mmcls/models/backbones/repmlp.py | 578 ++++ .../mmcls/models/backbones/repvgg.py | 619 +++++ .../mmcls/models/backbones/res2net.py | 306 +++ .../mmcls/models/backbones/resnest.py | 3 +- .../mmcls/models/backbones/resnet.py | 84 +- .../mmcls/models/backbones/resnet_cifar.py | 6 +- .../mmcls/models/backbones/resnext.py | 3 +- .../mmcls/models/backbones/seresnet.py | 3 +- .../mmcls/models/backbones/seresnext.py | 3 +- .../mmcls/models/backbones/shufflenet_v1.py | 22 +- .../mmcls/models/backbones/shufflenet_v2.py | 31 +- .../models/backbones/swin_transformer.py | 548 ++++ .../models/backbones/swin_transformer_v2.py | 560 ++++ .../mmcls/models/backbones/t2t_vit.py | 440 +++ .../mmcls/models/backbones/timm_backbone.py | 112 + .../mmcls/models/backbones/tnt.py | 368 +++ .../mmcls/models/backbones/twins.py | 723 +++++ .../mmcls/models/backbones/van.py | 445 ++++ .../mmcls/models/backbones/vgg.py | 19 +- .../models/backbones/vision_transformer.py | 383 +++ .../mmcls/models/builder.py | 38 + .../mmcls/models/classifiers/__init__.py | 5 + .../mmcls/models/classifiers/base.py | 224 ++ .../mmcls/models/classifiers/image.py | 160 ++ .../mmcls/models/heads/__init__.py | 17 + .../mmcls/models/heads/base_head.py | 1 + .../mmcls/models/heads/cls_head.py | 116 + .../mmcls/models/heads/conformer_head.py | 132 + .../mmcls/models/heads/deit_head.py | 96 + .../models/heads/efficientformer_head.py | 96 + .../mmcls/models/heads/linear_head.py | 81 + .../models/heads/multi_label_csra_head.py | 121 + .../mmcls/models/heads/multi_label_head.py | 99 + .../models/heads/multi_label_linear_head.py | 85 + .../mmcls/models/heads/stacked_head.py | 163 ++ .../models/heads/vision_transformer_head.py | 123 + .../mmcls/models/losses/__init__.py | 17 + .../mmcls/models/losses/accuracy.py | 143 + .../mmcls/models/losses/asymmetric_loss.py | 149 ++ .../mmcls/models/losses/cross_entropy_loss.py | 209 ++ .../mmcls/models/losses/focal_loss.py | 23 +- .../mmcls/models/losses/label_smooth_loss.py | 45 +- .../mmcls/models/losses/seesaw_loss.py | 173 ++ .../mmcls/models/losses/utils.py | 119 + .../mmcls/models/necks/__init__.py | 6 + .../mmcls/models/necks/gap.py | 1 + .../mmcls/models/necks/gem.py | 53 + .../mmcls/models/necks/hr_fuse.py | 83 + .../mmcls/models/utils/__init__.py | 20 + .../mmcls/models/utils/attention.py | 564 ++++ .../mmcls/models/utils/augment/__init__.py | 9 + .../mmcls/models/utils/augment/augments.py | 2 + .../mmcls/models/utils/augment/builder.py | 8 + .../mmcls/models/utils/augment/cutmix.py | 175 ++ .../mmcls/models/utils/augment/identity.py | 6 +- .../mmcls/models/utils/augment/mixup.py | 80 + .../mmcls/models/utils/augment/resizemix.py | 93 + .../mmcls/models/utils/augment/utils.py | 24 + .../mmcls/models/utils/channel_shuffle.py | 1 + .../mmcls/models/utils/embed.py | 420 +++ .../mmcls/models/utils/helpers.py | 53 + .../mmcls/models/utils/inverted_residual.py | 125 + .../mmcls/models/utils/layer_scale.py | 35 + .../mmcls/models/utils/make_divisible.py | 1 + .../mmcls/models/utils/position_encoding.py | 41 + .../mmcls/models/utils/se_layer.py | 80 + .../mmcls/utils/__init__.py | 12 + .../mmcls/utils/collect_env.py | 1 + .../mmcls/utils/device.py | 15 + .../mmcls/utils/distribution.py | 68 + .../mmcls/utils/logger.py | 56 + .../mmcls/utils/setup_env.py | 47 + .../mmcls/version.py | 4 +- .../mmclassification-0.24.1/model-index.yml | 34 + .../mmclassification-0.24.1/mult_test.sh | 7 + .../requirements.txt | 0 .../requirements/docs.txt | 6 + .../requirements/mminstall.txt | 1 + .../requirements/optional.txt | 5 + .../requirements/readthedocs.txt | 3 + .../requirements/runtime.txt | 3 + .../requirements/tests.txt | 1 + .../resources/mmcls-logo.png | Bin 0 -> 33009 bytes .../mmclassification-0.24.1/setup.cfg | 23 + .../mmclassification-0.24.1/setup.py | 194 ++ .../sing_test.sh | 2 +- .../mmclassification-0.24.1/single_process.sh | 28 + .../tests/data/color.jpg | Bin .../tests/data/dataset/a/1.JPG | 0 .../tests/data/dataset/ann.txt | 3 + .../tests/data/dataset/b/2.jpeg | 0 .../tests/data/dataset/b/subb/3.jpg | 0 .../tests/data/dataset/classes.txt | 2 + .../tests/data/gray.jpg | Bin .../tests/data/retinanet.py | 83 + .../tests/data/test.logjson | 10 + .../tests/test_data/test_builder.py | 272 ++ .../test_data/test_datasets/test_common.py | 911 +++++++ .../test_datasets/test_dataset_utils.py | 22 + .../test_datasets/test_dataset_wrapper.py | 192 ++ .../test_data/test_datasets/test_sampler.py | 53 + .../test_pipelines/test_auto_augment.py | 103 +- .../test_data}/test_pipelines/test_loading.py | 3 +- .../test_pipelines/test_transform.py | 142 +- .../test_downstream/test_mmdet_inference.py | 118 + .../tests/test_metrics/test_losses.py | 362 +++ .../tests/test_metrics/test_metrics.py | 93 + .../tests/test_metrics/test_utils.py | 49 + .../test_models/test_backbones/__init__.py | 1 + .../test_backbones/test_conformer.py | 111 + .../test_backbones/test_convmixer.py | 84 + .../test_backbones/test_convnext.py | 86 + .../test_models/test_backbones/test_cspnet.py | 147 + .../test_models/test_backbones/test_deit.py | 131 + .../test_backbones/test_densenet.py | 95 + .../test_backbones/test_efficientformer.py | 199 ++ .../test_backbones/test_efficientnet.py | 144 + .../test_models/test_backbones/test_hornet.py | 174 ++ .../test_models/test_backbones/test_hrnet.py | 93 + .../test_backbones/test_mlp_mixer.py | 119 + .../test_backbones/test_mobilenet_v2.py | 7 +- .../test_backbones/test_mobilenet_v3.py | 175 ++ .../test_models/test_backbones/test_mvit.py | 185 ++ .../test_backbones/test_poolformer.py | 143 + .../test_backbones/test_regnet.py | 11 +- .../test_models/test_backbones/test_repmlp.py | 172 ++ .../test_models/test_backbones/test_repvgg.py | 350 +++ .../test_backbones/test_res2net.py | 71 + .../test_backbones/test_resnest.py | 1 + .../test_backbones/test_resnet.py | 58 +- .../test_backbones/test_resnet_cifar.py | 1 + .../test_backbones/test_resnext.py | 4 +- .../test_backbones/test_seresnet.py | 4 +- .../test_backbones/test_seresnext.py | 4 +- .../test_backbones/test_shufflenet_v1.py | 6 +- .../test_backbones/test_shufflenet_v2.py | 6 +- .../test_backbones/test_swin_transformer.py | 255 ++ .../test_swin_transformer_v2.py | 243 ++ .../test_backbones/test_t2t_vit.py | 188 ++ .../test_backbones/test_timm_backbone.py | 204 ++ .../test_models/test_backbones/test_tnt.py | 50 + .../test_models/test_backbones/test_twins.py | 243 ++ .../test_models/test_backbones/test_van.py | 188 ++ .../test_models}/test_backbones/test_vgg.py | 7 +- .../test_backbones/test_vision_transformer.py | 183 ++ .../tests/test_models/test_backbones/utils.py | 31 + .../tests/test_models/test_classifiers.py | 326 +++ .../tests/test_models/test_heads.py | 400 +++ .../tests/test_models/test_neck.py | 87 + .../test_models/test_utils/test_attention.py | 208 ++ .../test_models/test_utils/test_augment.py | 96 + .../test_models/test_utils/test_embed.py | 88 + .../test_utils/test_inverted_residual.py | 82 + .../test_utils/test_layer_scale.py | 48 + .../tests/test_models/test_utils/test_misc.py | 59 + .../test_utils/test_position_encoding.py | 10 + .../tests/test_models/test_utils/test_se.py | 95 + .../tests/test_runtime}/test_eval_hook.py | 30 +- .../tests/test_runtime/test_hooks.py | 158 ++ .../tests/test_runtime/test_num_class_hook.py | 84 + .../tests/test_runtime/test_optimizer.py | 309 +++ .../tests/test_runtime/test_preciseBN_hook.py | 274 ++ .../tests/test_utils/test_device.py | 28 + .../tests/test_utils/test_logger.py | 55 + .../tests/test_utils/test_setup_env.py | 68 + .../tests/test_utils/test_version_utils.py | 21 + .../tests/test_utils/test_visualization.py | 100 + .../tools/analysis_tools/analyze_logs.py | 215 ++ .../tools/analysis_tools}/analyze_results.py | 28 +- .../tools/analysis_tools/eval_metric.py | 71 + .../tools/analysis_tools}/get_flops.py | 5 +- .../convert_models/efficientnet_to_mmcls.py | 215 ++ .../tools/convert_models/hornet2mmcls.py | 61 + .../tools/convert_models/mlpmixer_to_mmcls.py | 58 + .../convert_models/mobilenetv2_to_mmcls.py | 1 + .../tools/convert_models/publish_model.py | 55 + .../convert_models/reparameterize_model.py | 55 + .../convert_models/reparameterize_repvgg.py | 60 + .../tools/convert_models/repvgg_to_mmcls.py | 60 + .../convert_models/shufflenetv2_to_mmcls.py | 1 + .../convert_models/torchvision_to_mmcls.py | 63 + .../tools/convert_models/twins2mmcls.py | 73 + .../tools/convert_models/van2mmcls.py | 65 + .../tools/convert_models/vgg_to_mmcls.py | 3 +- .../tools/deployment/mmcls2torchserve.py | 1 + .../tools/deployment/mmcls_handler.py | 1 + .../tools/deployment/onnx2tensorrt.py | 20 +- .../tools/deployment/pytorch2mlmodel.py | 160 ++ .../tools/deployment/pytorch2onnx.py | 54 +- .../tools/deployment/pytorch2torchscript.py | 3 +- .../tools/deployment/test.py | 128 + .../tools/deployment/test_torchserver.py | 45 + .../tools/dist_test.sh | 22 + .../tools/dist_train.sh | 21 + .../tools/kfold-cross-valid.py | 371 +++ .../tools/misc/print_config.py | 35 + .../tools/misc/verify_dataset.py | 131 + .../tools/slurm_test.sh | 0 .../tools/slurm_train.sh | 0 .../mmclassification-0.24.1/tools/test.py | 254 ++ .../mmclassification-0.24.1/tools/train.py | 215 ++ .../tools/visualizations/vis_cam.py | 356 +++ .../tools/visualizations/vis_lr.py | 334 +++ .../tools/visualizations/vis_pipeline.py | 337 +++ .../mmclassification-0.24.1/train.md | 101 + .../.github/CONTRIBUTING.md | 69 - .../.github/workflows/build.yml | 98 - .../.github/workflows/deploy.yml | 22 - .../.gitignore | 117 - .../.idea/.gitignore | 3 - .../.idea/.name | 1 - .../inspectionProfiles/profiles_settings.xml | 6 - .../mmclassification-speed-benchmark.iml | 15 - .../.idea/modules.xml | 8 - .../.idea/vcs.xml | 6 - .../.pre-commit-config.yaml | 50 - .../.readthedocs.yml | 7 - .../MANIFEST.in | 3 - .../README.md | 98 - .../README_zh-CN.md | 101 - .../configs/_base_/datasets/imagenet_bs32.py | 40 - .../configs/_base_/models/AlexNet_1x.py | 5 - .../configs/_base_/models/resnest101.py | 18 - .../configs/_base_/models/resnest200.py | 18 - .../configs/_base_/models/resnest269.py | 18 - .../configs/_base_/models/resnest50.py | 17 - .../models/vit_base_patch16_224_finetune.py | 21 - .../models/vit_base_patch16_224_pretrain.py | 26 - .../models/vit_base_patch16_384_finetune.py | 21 - .../models/vit_base_patch32_384_finetune.py | 21 - .../models/vit_large_patch16_224_finetune.py | 21 - .../models/vit_large_patch16_384_finetune.py | 21 - .../models/vit_large_patch32_384_finetune.py | 21 - .../_base_/schedules/imagenet_bs4096_AdamW.py | 18 - .../configs/fp16/README.md | 20 - .../configs/fp16/metafile.yml | 30 - .../fp16/resnet152_b32x8_fp16_imagenet.py | 6 - .../fp16/resnet18_b32x8_fp16_imagenet.py | 6 - .../fp16/resnet34_b32x8_fp16_imagenet.py | 6 - .../resnet50_b32x8_fp16_dynamic_imagenet.py | 4 - .../fp16/resnet50_b32x8_fp16_imagenet.py | 10 - .../resnext50_32x4d_b32x8_fp16_imagenet.py | 6 - .../fp16/seresnet50_b32x8_fp16_imagenet.py | 7 - ...x_b64x16_linearlr_bn_nowd_fp16_imagenet.py | 7 - ...x_b64x16_linearlr_bn_nowd_fp16_imagenet.py | 7 - .../configs/fp16/vgg11_b32x8_fp16_imagenet.py | 6 - .../configs/lenet/README.md | 18 - .../configs/mobilenet_v2/README.md | 26 - .../configs/mobilenet_v2/metafile.yml | 29 - .../mobilenet_v2_b32x8_imagenet.py | 6 - .../configs/regnet/README.md | 37 - .../regnet/regnetx_1.6gf_b32x8_imagenet.py | 51 - .../regnet/regnetx_12gf_b32x8_imagenet.py | 51 - .../regnet/regnetx_3.2gf_b32x8_imagenet.py | 51 - .../regnet/regnetx_4.0gf_b32x8_imagenet.py | 51 - .../regnet/regnetx_400mf_b32x8_imagenet.py | 51 - .../regnet/regnetx_6.4gf_b32x8_imagenet.py | 51 - .../regnet/regnetx_8.0gf_b32x8_imagenet.py | 51 - .../regnet/regnetx_800mf_b32x8_imagenet.py | 51 - .../configs/resnet/README.md | 46 - .../configs/resnet/metafile.yml | 217 -- .../configs/resnet/resnet50_b32x8_imagenet.py | 4 - ...t50_b64x32_warmup_label_smooth_imagenet.py | 12 - .../configs/resnext/README.md | 26 - .../configs/resnext/metafile.yml | 68 - .../configs/seresnet/README.md | 24 - .../configs/seresnet/metafile.yml | 42 - .../configs/seresnext/README.md | 15 - .../configs/shufflenet_v1/README.md | 23 - .../configs/shufflenet_v1/metafile.yml | 30 - .../configs/shufflenet_v2/README.md | 23 - .../configs/shufflenet_v2/metafile.yml | 30 - ..._v2_1x_b64x16_linearlr_bn_nowd_imagenet.py | 6 - .../configs/speed_test/AlexNet.py | 5 - .../speed_test/datasets/imagenet_bs32.py | 35 - .../speed_test/datasets/imagenet_bs64.py | 35 - .../mobilenet_v2_b32x8_fp16_imagenet.py | 7 - .../speed_test/mobilenet_v2_b32x8_imagenet.py | 5 - .../resnet152_b32x8_fp16_imagenet.py | 6 - .../speed_test/resnet152_b32x8_imagenet.py | 4 - .../resnet18_b32x8_fp16_imagenet.py | 6 - .../speed_test/resnet18_b32x8_imagenet.py | 4 - .../resnet34_b32x8_fp16_imagenet.py | 6 - .../speed_test/resnet34_b32x8_imagenet.py | 4 - .../resnet50_b32x8_fp16_imagenet.py | 10 - .../speed_test/resnet50_b32x8_imagenet.py | 4 - .../resnext50_32x4d_b32x8_fp16_imagenet.py | 6 - .../resnext50_32x4d_b32x8_imagenet.py | 4 - .../seresnet50_b32x8_fp16_imagenet.py | 7 - .../speed_test/seresnet50_b32x8_imagenet.py | 5 - ...x_b64x16_linearlr_bn_nowd_fp16_imagenet.py | 7 - ..._v1_1x_b64x16_linearlr_bn_nowd_imagenet.py | 5 - ...x_b64x16_linearlr_bn_nowd_fp16_imagenet.py | 7 - ..._v2_1x_b64x16_linearlr_bn_nowd_imagenet.py | 5 - .../speed_test/vgg11_b32x8_fp16_imagenet.py | 8 - .../speed_test/vgg11_b32x8_imagenet.py | 7 - .../configs/vgg/README.md | 30 - .../configs/vgg/metafile.yml | 120 - .../configs/vgg/vgg16_b32x8_imagenet.py | 6 - .../vit_base_patch16_224_finetune_imagenet.py | 10 - .../vit_base_patch16_224_pretrain_imagenet.py | 143 - .../vit_base_patch16_384_finetune_imagenet.py | 21 - .../vit_base_patch32_384_finetune_imagenet.py | 21 - ...vit_large_patch16_224_finetune_imagenet.py | 10 - ...vit_large_patch16_384_finetune_imagenet.py | 21 - ...vit_large_patch32_384_finetune_imagenet.py | 21 - .../demo/image_demo.py | 24 - .../docker/serve/Dockerfile | 47 - .../docs/changelog.md | 236 -- .../docs/conf.py | 83 - .../docs/getting_started.md | 225 -- .../docs/imgs/qq_group_qrcode.jpg | Bin 204806 -> 0 bytes .../docs/index.rst | 52 - .../docs/install.md | 87 - .../docs/model_zoo.md | 54 - .../docs/stat.py | 65 - .../docs/switch_language.md | 3 - .../tutorials/MMClassification_Tutorial.ipynb | 2353 ----------------- .../docs/tutorials/data_pipeline.md | 144 - .../docs/tutorials/finetune.md | 94 - .../docs/tutorials/model_serving.md | 55 - .../docs/tutorials/new_dataset.md | 141 - .../docs/tutorials/new_modules.md | 272 -- .../docs/tutorials/onnx2tensorrt.md | 80 - .../docs/tutorials/pytorch2onnx.md | 204 -- .../docs/tutorials/pytorch2torchscript.md | 56 - .../docs_zh-CN/conf.py | 85 - .../docs_zh-CN/getting_started.md | 222 -- .../docs_zh-CN/index.rst | 52 - .../docs_zh-CN/install.md | 84 - .../docs_zh-CN/stat.py | 65 - .../docs_zh-CN/switch_language.md | 3 - .../tutorials/MMClassification_Tutorial.ipynb | 2353 ----------------- .../docs_zh-CN/tutorials/data_pipeline.md | 144 - .../docs_zh-CN/tutorials/finetune.md | 92 - .../docs_zh-CN/tutorials/new_dataset.md | 140 - .../docs_zh-CN/tutorials/new_modules.md | 281 -- .../docs_zh-CN/tutorials/onnx2tensorrt.md | 76 - .../docs_zh-CN/tutorials/pytorch2onnx.md | 89 - .../image/train/1659061854685.png | Bin 13691 -> 0 bytes .../image/train/1659062180839.png | Bin 71083 -> 0 bytes .../image/train/1659064222206.png | Bin 65539 -> 0 bytes .../image/train/1659064427635.png | Bin 13691 -> 0 bytes .../image/train/1659064905610.png | Bin 13691 -> 0 bytes .../image/train/1659064925468.png | Bin 56351 -> 0 bytes .../image/train/1659065333529.png | Bin 56817 -> 0 bytes .../image/train/1659065659769.png | Bin 94925 -> 0 bytes .../image/train/1659065746317.png | Bin 95196 -> 0 bytes .../image/train/1659066120939.png | Bin 39302 -> 0 bytes .../image/train/1659067079718.png | Bin 60015 -> 0 bytes .../images/1657694041240.png | Bin 13691 -> 0 bytes .../images/1657694072163.png | Bin 65539 -> 0 bytes .../images/2022-07-13-14-06-28.png | Bin 13691 -> 0 bytes .../images/2022-07-13-14-07-43.png | Bin 71083 -> 0 bytes .../mmcls.egg-info/PKG-INFO | 116 - .../mmcls.egg-info/SOURCES.txt | 103 - .../mmcls.egg-info/dependency_links.txt | 1 - .../mmcls.egg-info/not-zip-safe | 1 - .../mmcls.egg-info/requires.txt | 2 - .../mmcls.egg-info/top_level.txt | 1 - .../mmcls/__init__.py | 28 - .../mmcls/__pycache__/__init__.cpython-36.pyc | Bin 800 -> 0 bytes .../mmcls/__pycache__/version.cpython-36.pyc | Bin 823 -> 0 bytes .../mmcls/apis/__init__.py | 8 - .../apis/__pycache__/__init__.cpython-36.pyc | Bin 460 -> 0 bytes .../apis/__pycache__/inference.cpython-36.pyc | Bin 3493 -> 0 bytes .../apis/__pycache__/test.cpython-36.pyc | Bin 5269 -> 0 bytes .../apis/__pycache__/train.cpython-36.pyc | Bin 3834 -> 0 bytes .../mmcls/apis/test.py | 197 -- .../mmcls/apis/train.py | 159 -- .../mmcls/core/__init__.py | 3 - .../core/__pycache__/__init__.cpython-36.pyc | Bin 219 -> 0 bytes .../mmcls/core/evaluation/__init__.py | 11 - .../__pycache__/__init__.cpython-36.pyc | Bin 629 -> 0 bytes .../__pycache__/eval_hooks.cpython-36.pyc | Bin 3843 -> 0 bytes .../__pycache__/eval_metrics.cpython-36.pyc | Bin 9312 -> 0 bytes .../__pycache__/mean_ap.cpython-36.pyc | Bin 2334 -> 0 bytes .../multilabel_eval_metrics.cpython-36.pyc | Bin 2418 -> 0 bytes .../mmcls/core/evaluation/eval_hooks.py | 106 - .../mmcls/core/evaluation/eval_metrics.py | 235 -- .../mmcls/core/export/__init__.py | 3 - .../mmcls/core/export/test.py | 95 - .../mmcls/core/fp16/__init__.py | 4 - .../fp16/__pycache__/__init__.cpython-36.pyc | Bin 345 -> 0 bytes .../__pycache__/decorators.cpython-36.pyc | Bin 4269 -> 0 bytes .../fp16/__pycache__/hooks.cpython-36.pyc | Bin 4034 -> 0 bytes .../fp16/__pycache__/utils.cpython-36.pyc | Bin 942 -> 0 bytes .../mmcls/core/fp16/decorators.py | 160 -- .../mmcls/core/fp16/hooks.py | 128 - .../mmcls/core/fp16/utils.py | 23 - .../mmcls/core/utils/__init__.py | 4 - .../utils/__pycache__/__init__.cpython-36.pyc | Bin 319 -> 0 bytes .../__pycache__/dist_utils.cpython-36.pyc | Bin 2081 -> 0 bytes .../utils/__pycache__/misc.cpython-36.pyc | Bin 418 -> 0 bytes .../mmcls/core/utils/dist_utils.py | 56 - .../mmcls/datasets/__init__.py | 18 - .../__pycache__/__init__.cpython-36.pyc | Bin 915 -> 0 bytes .../__pycache__/base_dataset.cpython-36.pyc | Bin 6745 -> 0 bytes .../__pycache__/builder.cpython-36.pyc | Bin 3150 -> 0 bytes .../datasets/__pycache__/cifar.cpython-36.pyc | Bin 4139 -> 0 bytes .../dataset_wrappers.cpython-36.pyc | Bin 6115 -> 0 bytes .../datasets/__pycache__/dummy.cpython-36.pyc | Bin 1602 -> 0 bytes .../__pycache__/imagenet.cpython-36.pyc | Bin 31874 -> 0 bytes .../datasets/__pycache__/mnist.cpython-36.pyc | Bin 5880 -> 0 bytes .../__pycache__/multi_label.cpython-36.pyc | Bin 2648 -> 0 bytes .../datasets/__pycache__/utils.cpython-36.pyc | Bin 4474 -> 0 bytes .../datasets/__pycache__/voc.cpython-36.pyc | Bin 2156 -> 0 bytes .../mmcls/datasets/builder.py | 108 - .../mmcls/datasets/dataset_wrappers.py | 162 -- .../mmcls/datasets/dummy.py | 45 - .../mmcls/datasets/pipelines/__init__.py | 21 - .../__pycache__/__init__.cpython-36.pyc | Bin 1265 -> 0 bytes .../__pycache__/auto_augment.cpython-36.pyc | Bin 33038 -> 0 bytes .../__pycache__/compose.cpython-36.pyc | Bin 1488 -> 0 bytes .../__pycache__/formating.cpython-36.pyc | Bin 6625 -> 0 bytes .../__pycache__/loading.cpython-36.pyc | Bin 2504 -> 0 bytes .../__pycache__/transforms.cpython-36.pyc | Bin 34966 -> 0 bytes .../mmcls/datasets/pipelines/formating.py | 178 -- .../mmcls/datasets/samplers/__init__.py | 3 - .../__pycache__/__init__.cpython-36.pyc | Bin 256 -> 0 bytes .../distributed_sampler.cpython-36.pyc | Bin 1273 -> 0 bytes .../datasets/samplers/distributed_sampler.py | 42 - .../mmcls/datasets/utils.py | 152 -- .../mmcls/datasets/voc.py | 68 - .../mmcls/models/__init__.py | 13 - .../__pycache__/__init__.cpython-36.pyc | Bin 576 -> 0 bytes .../models/__pycache__/builder.cpython-36.pyc | Bin 1007 -> 0 bytes .../mmcls/models/backbones/__init__.py | 21 - .../__pycache__/__init__.cpython-36.pyc | Bin 969 -> 0 bytes .../__pycache__/alexnet.cpython-36.pyc | Bin 1782 -> 0 bytes .../__pycache__/base_backbone.cpython-36.pyc | Bin 1465 -> 0 bytes .../__pycache__/lenet.cpython-36.pyc | Bin 1514 -> 0 bytes .../__pycache__/mobilenet_v2.cpython-36.pyc | Bin 7889 -> 0 bytes .../__pycache__/mobilenet_v3.cpython-36.pyc | Bin 4921 -> 0 bytes .../__pycache__/regnet.cpython-36.pyc | Bin 10254 -> 0 bytes .../__pycache__/resnest.cpython-36.pyc | Bin 10683 -> 0 bytes .../__pycache__/resnet.cpython-36.pyc | Bin 17088 -> 0 bytes .../__pycache__/resnet_cifar.cpython-36.pyc | Bin 4078 -> 0 bytes .../__pycache__/resnext.cpython-36.pyc | Bin 5664 -> 0 bytes .../__pycache__/seresnet.cpython-36.pyc | Bin 5064 -> 0 bytes .../__pycache__/seresnext.cpython-36.pyc | Bin 5937 -> 0 bytes .../__pycache__/shufflenet_v1.cpython-36.pyc | Bin 9313 -> 0 bytes .../__pycache__/shufflenet_v2.cpython-36.pyc | Bin 7768 -> 0 bytes .../backbones/__pycache__/vgg.cpython-36.pyc | Bin 5267 -> 0 bytes .../vision_transformer.cpython-36.pyc | Bin 14366 -> 0 bytes .../mmcls/models/backbones/mobilenet_v3.py | 173 -- .../models/backbones/vision_transformer.py | 480 ---- .../mmcls/models/builder.py | 34 - .../mmcls/models/classifiers/__init__.py | 4 - .../__pycache__/__init__.cpython-36.pyc | Bin 290 -> 0 bytes .../__pycache__/base.cpython-36.pyc | Bin 8092 -> 0 bytes .../__pycache__/image.cpython-36.pyc | Bin 3083 -> 0 bytes .../mmcls/models/classifiers/base.py | 224 -- .../mmcls/models/classifiers/image.py | 97 - .../mmcls/models/heads/__init__.py | 10 - .../heads/__pycache__/__init__.cpython-36.pyc | Bin 509 -> 0 bytes .../__pycache__/base_head.cpython-36.pyc | Bin 818 -> 0 bytes .../heads/__pycache__/cls_head.cpython-36.pyc | Bin 2623 -> 0 bytes .../__pycache__/linear_head.cpython-36.pyc | Bin 2095 -> 0 bytes .../multi_label_head.cpython-36.pyc | Bin 1946 -> 0 bytes .../multi_label_linear_head.cpython-36.pyc | Bin 2291 -> 0 bytes .../vision_transformer_head.cpython-36.pyc | Bin 2958 -> 0 bytes .../mmcls/models/heads/cls_head.py | 70 - .../mmcls/models/heads/linear_head.py | 61 - .../mmcls/models/heads/multi_label_head.py | 55 - .../models/heads/multi_label_linear_head.py | 64 - .../models/heads/vision_transformer_head.py | 81 - .../mmcls/models/losses/__init__.py | 15 - .../__pycache__/__init__.cpython-36.pyc | Bin 767 -> 0 bytes .../__pycache__/accuracy.cpython-36.pyc | Bin 4296 -> 0 bytes .../asymmetric_loss.cpython-36.pyc | Bin 3497 -> 0 bytes .../cross_entropy_loss.cpython-36.pyc | Bin 4627 -> 0 bytes .../__pycache__/focal_loss.cpython-36.pyc | Bin 3827 -> 0 bytes .../label_smooth_loss.cpython-36.pyc | Bin 5024 -> 0 bytes .../losses/__pycache__/utils.cpython-36.pyc | Bin 3436 -> 0 bytes .../mmcls/models/losses/accuracy.py | 134 - .../mmcls/models/losses/asymmetric_loss.py | 111 - .../mmcls/models/losses/cross_entropy_loss.py | 157 -- .../mmcls/models/losses/utils.py | 120 - .../mmcls/models/necks/__init__.py | 3 - .../necks/__pycache__/__init__.cpython-36.pyc | Bin 237 -> 0 bytes .../necks/__pycache__/gap.cpython-36.pyc | Bin 2185 -> 0 bytes .../mmcls/models/utils/__init__.py | 11 - .../utils/__pycache__/__init__.cpython-36.pyc | Bin 570 -> 0 bytes .../channel_shuffle.cpython-36.pyc | Bin 964 -> 0 bytes .../utils/__pycache__/helpers.cpython-36.pyc | Bin 661 -> 0 bytes .../inverted_residual.cpython-36.pyc | Bin 3156 -> 0 bytes .../__pycache__/make_divisible.cpython-36.pyc | Bin 1049 -> 0 bytes .../utils/__pycache__/se_layer.cpython-36.pyc | Bin 2103 -> 0 bytes .../mmcls/models/utils/augment/__init__.py | 6 - .../__pycache__/__init__.cpython-36.pyc | Bin 392 -> 0 bytes .../__pycache__/augments.cpython-36.pyc | Bin 2941 -> 0 bytes .../__pycache__/builder.cpython-36.pyc | Bin 410 -> 0 bytes .../augment/__pycache__/cutmix.cpython-36.pyc | Bin 5541 -> 0 bytes .../__pycache__/identity.cpython-36.pyc | Bin 1357 -> 0 bytes .../augment/__pycache__/mixup.cpython-36.pyc | Bin 2317 -> 0 bytes .../mmcls/models/utils/augment/builder.py | 7 - .../mmcls/models/utils/augment/cutmix.py | 139 - .../mmcls/models/utils/augment/mixup.py | 56 - .../mmcls/models/utils/helpers.py | 20 - .../mmcls/models/utils/inverted_residual.py | 119 - .../mmcls/models/utils/se_layer.py | 56 - .../mmcls/utils/__init__.py | 4 - .../utils/__pycache__/__init__.cpython-36.pyc | Bin 269 -> 0 bytes .../__pycache__/collect_env.cpython-36.pyc | Bin 623 -> 0 bytes .../utils/__pycache__/logger.cpython-36.pyc | Bin 377 -> 0 bytes .../mmcls/utils/logger.py | 7 - .../model_zoo.yml | 10 - .../multi_test.sh | 7 - .../requirements/docs.txt | 4 - .../requirements/mminstall.txt | 1 - .../requirements/optional.txt | 1 - .../requirements/readthedocs.txt | 3 - .../requirements/runtime.txt | 2 - .../setup.cfg | 19 - .../mmclassification-speed-benchmark/setup.py | 118 - .../tests/test_backbones/test_mobilenet_v3.py | 168 -- .../tests/test_backbones/test_utils.py | 164 -- .../test_backbones/test_vision_transformer.py | 57 - .../tests/test_classifiers.py | 221 -- .../tests/test_dataset.py | 349 --- .../tests/test_heads.py | 50 - .../tests/test_losses.py | 207 -- .../tests/test_metrics.py | 56 - .../tests/test_neck.py | 38 - .../tools/benchmark_regression.py | 166 -- .../tools/deployment/test.py | 115 - .../tools/dist_test.sh | 10 - .../tools/dist_train.sh | 9 - .../tools/publish_model.py | 39 - .../tools/test.py | 176 -- .../tools/train.py | 156 -- .../mmclassification-speed-benchmark/train.md | 258 -- 1250 files changed, 64007 insertions(+), 18154 deletions(-) create mode 100644 openmmlab_test/mmclassification-0.24.1/.gitattributes create mode 100644 openmmlab_test/mmclassification-0.24.1/.gitignore create mode 100644 openmmlab_test/mmclassification-0.24.1/.pre-commit-config.yaml create mode 100644 openmmlab_test/mmclassification-0.24.1/.readthedocs.yml create mode 100644 openmmlab_test/mmclassification-0.24.1/CITATION.cff create mode 100644 openmmlab_test/mmclassification-0.24.1/CONTRIBUTING.md rename openmmlab_test/{mmclassification-speed-benchmark => mmclassification-0.24.1}/LICENSE (99%) create mode 100644 openmmlab_test/mmclassification-0.24.1/MANIFEST.in create mode 100644 openmmlab_test/mmclassification-0.24.1/README.md create mode 100644 openmmlab_test/mmclassification-0.24.1/README_zh-CN.md rename openmmlab_test/{mmclassification-speed-benchmark => mmclassification-0.24.1}/configs/_base_/datasets/cifar100_bs16.py (100%) rename openmmlab_test/{mmclassification-speed-benchmark => mmclassification-0.24.1}/configs/_base_/datasets/cifar10_bs16.py (100%) create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/_base_/datasets/cub_bs8_384.py create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/_base_/datasets/cub_bs8_448.py create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/_base_/datasets/imagenet21k_bs128.py create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/_base_/datasets/imagenet_bs128_poolformer_medium_224.py create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/_base_/datasets/imagenet_bs128_poolformer_small_224.py create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/_base_/datasets/imagenet_bs256_rsb_a12.py create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/_base_/datasets/imagenet_bs256_rsb_a3.py create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/_base_/datasets/imagenet_bs32.py create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/_base_/datasets/imagenet_bs32_pil_bicubic.py rename openmmlab_test/{mmclassification-speed-benchmark => mmclassification-0.24.1}/configs/_base_/datasets/imagenet_bs32_pil_resize.py (91%) rename openmmlab_test/{mmclassification-speed-benchmark => mmclassification-0.24.1}/configs/_base_/datasets/imagenet_bs64.py (100%) create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/_base_/datasets/imagenet_bs64_autoaug.py create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/_base_/datasets/imagenet_bs64_convmixer_224.py create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/_base_/datasets/imagenet_bs64_mixer_224.py rename openmmlab_test/{mmclassification-speed-benchmark => mmclassification-0.24.1}/configs/_base_/datasets/imagenet_bs64_pil_resize.py (92%) create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/_base_/datasets/imagenet_bs64_pil_resize_autoaug.py create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/_base_/datasets/imagenet_bs64_swin_224.py create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/_base_/datasets/imagenet_bs64_swin_256.py create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/_base_/datasets/imagenet_bs64_swin_384.py create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/_base_/datasets/imagenet_bs64_t2t_224.py create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/_base_/datasets/pipelines/auto_aug.py create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/_base_/datasets/pipelines/rand_aug.py create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/_base_/datasets/stanford_cars_bs8_448.py rename openmmlab_test/{mmclassification-speed-benchmark => mmclassification-0.24.1}/configs/_base_/datasets/voc_bs16.py (100%) rename openmmlab_test/{mmclassification-speed-benchmark => mmclassification-0.24.1}/configs/_base_/default_runtime.py (100%) create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/_base_/models/conformer/base-p16.py create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/_base_/models/conformer/small-p16.py create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/_base_/models/conformer/small-p32.py create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/_base_/models/conformer/tiny-p16.py create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/_base_/models/convmixer/convmixer-1024-20.py create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/_base_/models/convmixer/convmixer-1536-20.py create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/_base_/models/convmixer/convmixer-768-32.py create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/_base_/models/convnext/convnext-base.py create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/_base_/models/convnext/convnext-large.py create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/_base_/models/convnext/convnext-small.py create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/_base_/models/convnext/convnext-tiny.py create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/_base_/models/convnext/convnext-xlarge.py create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/_base_/models/densenet/densenet121.py create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/_base_/models/densenet/densenet161.py create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/_base_/models/densenet/densenet169.py create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/_base_/models/densenet/densenet201.py create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/_base_/models/efficientnet_b0.py create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/_base_/models/efficientnet_b1.py create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/_base_/models/efficientnet_b2.py create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/_base_/models/efficientnet_b3.py create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/_base_/models/efficientnet_b4.py create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/_base_/models/efficientnet_b5.py create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/_base_/models/efficientnet_b6.py create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/_base_/models/efficientnet_b7.py create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/_base_/models/efficientnet_b8.py create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/_base_/models/efficientnet_em.py create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/_base_/models/efficientnet_es.py create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/_base_/models/hornet/hornet-base-gf.py create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/_base_/models/hornet/hornet-base.py create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/_base_/models/hornet/hornet-large-gf.py create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/_base_/models/hornet/hornet-large-gf384.py create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/_base_/models/hornet/hornet-large.py create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/_base_/models/hornet/hornet-small-gf.py create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/_base_/models/hornet/hornet-small.py create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/_base_/models/hornet/hornet-tiny-gf.py create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/_base_/models/hornet/hornet-tiny.py create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/_base_/models/hrnet/hrnet-w18.py create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/_base_/models/hrnet/hrnet-w30.py create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/_base_/models/hrnet/hrnet-w32.py create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/_base_/models/hrnet/hrnet-w40.py create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/_base_/models/hrnet/hrnet-w44.py create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/_base_/models/hrnet/hrnet-w48.py create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/_base_/models/hrnet/hrnet-w64.py create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/_base_/models/mlp_mixer_base_patch16.py create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/_base_/models/mlp_mixer_large_patch16.py rename openmmlab_test/{mmclassification-speed-benchmark => mmclassification-0.24.1}/configs/_base_/models/mobilenet_v2_1x.py (100%) create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/_base_/models/mobilenet_v3_large_imagenet.py create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/_base_/models/mobilenet_v3_small_cifar.py create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/_base_/models/mobilenet_v3_small_imagenet.py create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/_base_/models/mvit/mvitv2-base.py create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/_base_/models/mvit/mvitv2-large.py create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/_base_/models/mvit/mvitv2-small.py create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/_base_/models/mvit/mvitv2-tiny.py create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/_base_/models/poolformer/poolformer_m36.py create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/_base_/models/poolformer/poolformer_m48.py create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/_base_/models/poolformer/poolformer_s12.py create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/_base_/models/poolformer/poolformer_s24.py create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/_base_/models/poolformer/poolformer_s36.py rename openmmlab_test/{mmclassification-speed-benchmark => mmclassification-0.24.1}/configs/_base_/models/regnet/regnetx_1.6gf.py (100%) rename openmmlab_test/{mmclassification-speed-benchmark => mmclassification-0.24.1}/configs/_base_/models/regnet/regnetx_12gf.py (100%) rename openmmlab_test/{mmclassification-speed-benchmark => mmclassification-0.24.1}/configs/_base_/models/regnet/regnetx_3.2gf.py (100%) rename openmmlab_test/{mmclassification-speed-benchmark => mmclassification-0.24.1}/configs/_base_/models/regnet/regnetx_4.0gf.py (100%) rename openmmlab_test/{mmclassification-speed-benchmark => mmclassification-0.24.1}/configs/_base_/models/regnet/regnetx_400mf.py (100%) rename openmmlab_test/{mmclassification-speed-benchmark => mmclassification-0.24.1}/configs/_base_/models/regnet/regnetx_6.4gf.py (100%) rename openmmlab_test/{mmclassification-speed-benchmark => mmclassification-0.24.1}/configs/_base_/models/regnet/regnetx_8.0gf.py (100%) rename openmmlab_test/{mmclassification-speed-benchmark => mmclassification-0.24.1}/configs/_base_/models/regnet/regnetx_800mf.py (100%) create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/_base_/models/repmlp-base_224.py create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/_base_/models/repvgg-A0_in1k.py create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/_base_/models/repvgg-B3_lbs-mixup_in1k.py create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/_base_/models/res2net101-w26-s4.py create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/_base_/models/res2net50-w14-s8.py create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/_base_/models/res2net50-w26-s4.py create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/_base_/models/res2net50-w26-s6.py create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/_base_/models/res2net50-w26-s8.py create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/_base_/models/res2net50-w48-s2.py create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/_base_/models/resnest101.py create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/_base_/models/resnest200.py create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/_base_/models/resnest269.py create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/_base_/models/resnest50.py rename openmmlab_test/{mmclassification-speed-benchmark => mmclassification-0.24.1}/configs/_base_/models/resnet101.py (100%) rename openmmlab_test/{mmclassification-speed-benchmark => mmclassification-0.24.1}/configs/_base_/models/resnet101_cifar.py (100%) rename openmmlab_test/{mmclassification-speed-benchmark => mmclassification-0.24.1}/configs/_base_/models/resnet152.py (100%) rename openmmlab_test/{mmclassification-speed-benchmark => mmclassification-0.24.1}/configs/_base_/models/resnet152_cifar.py (100%) rename openmmlab_test/{mmclassification-speed-benchmark => mmclassification-0.24.1}/configs/_base_/models/resnet18.py (100%) rename openmmlab_test/{mmclassification-speed-benchmark => mmclassification-0.24.1}/configs/_base_/models/resnet18_cifar.py (100%) rename openmmlab_test/{mmclassification-speed-benchmark => mmclassification-0.24.1}/configs/_base_/models/resnet34.py (100%) rename openmmlab_test/{mmclassification-speed-benchmark => mmclassification-0.24.1}/configs/_base_/models/resnet34_cifar.py (100%) create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/_base_/models/resnet34_gem.py rename openmmlab_test/{mmclassification-speed-benchmark => mmclassification-0.24.1}/configs/_base_/models/resnet50.py (100%) rename openmmlab_test/{mmclassification-speed-benchmark => mmclassification-0.24.1}/configs/_base_/models/resnet50_cifar.py (100%) rename openmmlab_test/{mmclassification-speed-benchmark => mmclassification-0.24.1}/configs/_base_/models/resnet50_cifar_cutmix.py (100%) rename openmmlab_test/{mmclassification-speed-benchmark => mmclassification-0.24.1}/configs/_base_/models/resnet50_cifar_mixup.py (100%) rename openmmlab_test/{mmclassification-speed-benchmark => mmclassification-0.24.1}/configs/_base_/models/resnet50_cutmix.py (100%) rename openmmlab_test/{mmclassification-speed-benchmark => mmclassification-0.24.1}/configs/_base_/models/resnet50_label_smooth.py (100%) rename openmmlab_test/{mmclassification-speed-benchmark => mmclassification-0.24.1}/configs/_base_/models/resnet50_mixup.py (100%) create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/_base_/models/resnetv1c50.py rename openmmlab_test/{mmclassification-speed-benchmark => mmclassification-0.24.1}/configs/_base_/models/resnetv1d101.py (100%) rename openmmlab_test/{mmclassification-speed-benchmark => mmclassification-0.24.1}/configs/_base_/models/resnetv1d152.py (100%) rename openmmlab_test/{mmclassification-speed-benchmark => mmclassification-0.24.1}/configs/_base_/models/resnetv1d50.py (100%) rename openmmlab_test/{mmclassification-speed-benchmark => mmclassification-0.24.1}/configs/_base_/models/resnext101_32x4d.py (100%) rename openmmlab_test/{mmclassification-speed-benchmark => mmclassification-0.24.1}/configs/_base_/models/resnext101_32x8d.py (100%) rename openmmlab_test/{mmclassification-speed-benchmark => mmclassification-0.24.1}/configs/_base_/models/resnext152_32x4d.py (100%) rename openmmlab_test/{mmclassification-speed-benchmark => mmclassification-0.24.1}/configs/_base_/models/resnext50_32x4d.py (100%) rename openmmlab_test/{mmclassification-speed-benchmark => mmclassification-0.24.1}/configs/_base_/models/seresnet101.py (100%) rename openmmlab_test/{mmclassification-speed-benchmark => mmclassification-0.24.1}/configs/_base_/models/seresnet50.py (100%) rename openmmlab_test/{mmclassification-speed-benchmark => mmclassification-0.24.1}/configs/_base_/models/seresnext101_32x4d.py (100%) rename openmmlab_test/{mmclassification-speed-benchmark => mmclassification-0.24.1}/configs/_base_/models/seresnext50_32x4d.py (100%) rename openmmlab_test/{mmclassification-speed-benchmark => mmclassification-0.24.1}/configs/_base_/models/shufflenet_v1_1x.py (100%) rename openmmlab_test/{mmclassification-speed-benchmark => mmclassification-0.24.1}/configs/_base_/models/shufflenet_v2_1x.py (100%) create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/_base_/models/swin_transformer/base_224.py create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/_base_/models/swin_transformer/base_384.py create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/_base_/models/swin_transformer/large_224.py create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/_base_/models/swin_transformer/large_384.py create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/_base_/models/swin_transformer/small_224.py create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/_base_/models/swin_transformer/tiny_224.py create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/_base_/models/swin_transformer_v2/base_256.py create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/_base_/models/swin_transformer_v2/base_384.py create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/_base_/models/swin_transformer_v2/large_256.py create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/_base_/models/swin_transformer_v2/large_384.py create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/_base_/models/swin_transformer_v2/small_256.py create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/_base_/models/swin_transformer_v2/tiny_256.py create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/_base_/models/t2t-vit-t-14.py create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/_base_/models/t2t-vit-t-19.py create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/_base_/models/t2t-vit-t-24.py create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/_base_/models/tnt_s_patch16_224.py create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/_base_/models/twins_pcpvt_base.py create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/_base_/models/twins_svt_base.py create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/_base_/models/van/van_b0.py create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/_base_/models/van/van_b1.py create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/_base_/models/van/van_b2.py create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/_base_/models/van/van_b3.py create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/_base_/models/van/van_b4.py create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/_base_/models/van/van_b5.py create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/_base_/models/van/van_b6.py create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/_base_/models/van/van_base.py create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/_base_/models/van/van_large.py create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/_base_/models/van/van_small.py create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/_base_/models/van/van_tiny.py rename openmmlab_test/{mmclassification-speed-benchmark => mmclassification-0.24.1}/configs/_base_/models/vgg11.py (100%) rename openmmlab_test/{mmclassification-speed-benchmark => mmclassification-0.24.1}/configs/_base_/models/vgg11bn.py (100%) rename openmmlab_test/{mmclassification-speed-benchmark => mmclassification-0.24.1}/configs/_base_/models/vgg13.py (100%) rename openmmlab_test/{mmclassification-speed-benchmark => mmclassification-0.24.1}/configs/_base_/models/vgg13bn.py (100%) rename openmmlab_test/{mmclassification-speed-benchmark => mmclassification-0.24.1}/configs/_base_/models/vgg16.py (100%) rename openmmlab_test/{mmclassification-speed-benchmark => mmclassification-0.24.1}/configs/_base_/models/vgg16bn.py (100%) rename openmmlab_test/{mmclassification-speed-benchmark => mmclassification-0.24.1}/configs/_base_/models/vgg19.py (100%) rename openmmlab_test/{mmclassification-speed-benchmark => mmclassification-0.24.1}/configs/_base_/models/vgg19bn.py (100%) create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/_base_/models/vit-base-p16.py create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/_base_/models/vit-base-p32.py create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/_base_/models/vit-large-p16.py create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/_base_/models/vit-large-p32.py create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/_base_/models/wide-resnet50.py rename openmmlab_test/{mmclassification-speed-benchmark => mmclassification-0.24.1}/configs/_base_/schedules/cifar10_bs128.py (100%) create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/_base_/schedules/cub_bs64.py create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/_base_/schedules/imagenet_bs1024_adamw_conformer.py create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/_base_/schedules/imagenet_bs1024_adamw_swin.py create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/_base_/schedules/imagenet_bs1024_coslr.py rename openmmlab_test/{mmclassification-speed-benchmark => mmclassification-0.24.1}/configs/_base_/schedules/imagenet_bs1024_linearlr_bn_nowd.py (100%) rename openmmlab_test/{mmclassification-speed-benchmark => mmclassification-0.24.1}/configs/_base_/schedules/imagenet_bs2048.py (100%) rename openmmlab_test/{mmclassification-speed-benchmark => mmclassification-0.24.1}/configs/_base_/schedules/imagenet_bs2048_AdamW.py (100%) rename openmmlab_test/{mmclassification-speed-benchmark => mmclassification-0.24.1}/configs/_base_/schedules/imagenet_bs2048_coslr.py (100%) create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/_base_/schedules/imagenet_bs2048_rsb.py rename openmmlab_test/{mmclassification-speed-benchmark => mmclassification-0.24.1}/configs/_base_/schedules/imagenet_bs256.py (100%) rename openmmlab_test/{mmclassification-speed-benchmark => mmclassification-0.24.1}/configs/_base_/schedules/imagenet_bs256_140e.py (100%) create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/_base_/schedules/imagenet_bs256_200e_coslr_warmup.py rename openmmlab_test/{mmclassification-speed-benchmark => mmclassification-0.24.1}/configs/_base_/schedules/imagenet_bs256_coslr.py (100%) rename openmmlab_test/{mmclassification-speed-benchmark => mmclassification-0.24.1}/configs/_base_/schedules/imagenet_bs256_epochstep.py (100%) create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/_base_/schedules/imagenet_bs4096_AdamW.py create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/_base_/schedules/stanford_cars_bs8.py create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/conformer/README.md create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/conformer/conformer-base-p16_8xb128_in1k.py create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/conformer/conformer-small-p16_8xb128_in1k.py create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/conformer/conformer-small-p32_8xb128_in1k.py create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/conformer/conformer-tiny-p16_8xb128_in1k.py create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/conformer/metafile.yml create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/convmixer/README.md create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/convmixer/convmixer-1024-20_10xb64_in1k.py create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/convmixer/convmixer-1536-20_10xb64_in1k.py create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/convmixer/convmixer-768-32_10xb64_in1k.py create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/convmixer/metafile.yml create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/convnext/README.md create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/convnext/convnext-base_32xb128_in1k.py create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/convnext/convnext-large_64xb64_in1k.py create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/convnext/convnext-small_32xb128_in1k.py create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/convnext/convnext-tiny_32xb128_in1k.py create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/convnext/convnext-xlarge_64xb64_in1k.py create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/convnext/metafile.yml create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/cspnet/README.md create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/cspnet/cspdarknet50_8xb32_in1k.py create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/cspnet/cspresnet50_8xb32_in1k.py create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/cspnet/cspresnext50_8xb32_in1k.py create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/cspnet/metafile.yml create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/csra/README.md create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/csra/metafile.yml create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/csra/resnet101-csra_1xb16_voc07-448px.py create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/deit/README.md create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/deit/deit-base-distilled_ft-16xb32_in1k-384px.py create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/deit/deit-base-distilled_pt-16xb64_in1k.py create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/deit/deit-base_ft-16xb32_in1k-384px.py create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/deit/deit-base_pt-16xb64_in1k.py create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/deit/deit-small-distilled_pt-4xb256_in1k.py create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/deit/deit-small_pt-4xb256_in1k.py create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/deit/deit-tiny-distilled_pt-4xb256_in1k.py create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/deit/deit-tiny_pt-4xb256_in1k.py create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/deit/metafile.yml create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/densenet/README.md create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/densenet/densenet121_4xb256_in1k.py create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/densenet/densenet161_4xb256_in1k.py create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/densenet/densenet169_4xb256_in1k.py create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/densenet/densenet201_4xb256_in1k.py create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/densenet/metafile.yml create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/efficientformer/README.md create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/efficientformer/efficientformer-l1_8xb128_in1k.py create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/efficientformer/efficientformer-l3_8xb128_in1k.py create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/efficientformer/efficientformer-l7_8xb128_in1k.py create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/efficientformer/metafile.yml create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/efficientnet/README.md create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/efficientnet/efficientnet-b0_8xb32-01norm_in1k.py create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/efficientnet/efficientnet-b0_8xb32_in1k.py create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/efficientnet/efficientnet-b1_8xb32-01norm_in1k.py create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/efficientnet/efficientnet-b1_8xb32_in1k.py create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/efficientnet/efficientnet-b2_8xb32-01norm_in1k.py create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/efficientnet/efficientnet-b2_8xb32_in1k.py create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/efficientnet/efficientnet-b3_8xb32-01norm_in1k.py create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/efficientnet/efficientnet-b3_8xb32_in1k.py create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/efficientnet/efficientnet-b4_8xb32-01norm_in1k.py create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/efficientnet/efficientnet-b4_8xb32_in1k.py create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/efficientnet/efficientnet-b5_8xb32-01norm_in1k.py create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/efficientnet/efficientnet-b5_8xb32_in1k.py create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/efficientnet/efficientnet-b6_8xb32-01norm_in1k.py create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/efficientnet/efficientnet-b6_8xb32_in1k.py create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/efficientnet/efficientnet-b7_8xb32-01norm_in1k.py create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/efficientnet/efficientnet-b7_8xb32_in1k.py create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/efficientnet/efficientnet-b8_8xb32-01norm_in1k.py create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/efficientnet/efficientnet-b8_8xb32_in1k.py create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/efficientnet/efficientnet-em_8xb32-01norm_in1k.py create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/efficientnet/efficientnet-es_8xb32-01norm_in1k.py create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/efficientnet/metafile.yml create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/fp16/resnet50_b32x8_fp16_dynamic_imagenet.py create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/fp16/resnet50_b32x8_fp16_imagenet.py create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/hornet/README.md create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/hornet/hornet-base-gf_8xb64_in1k.py create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/hornet/hornet-base_8xb64_in1k.py create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/hornet/hornet-small-gf_8xb64_in1k.py create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/hornet/hornet-small_8xb64_in1k.py create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/hornet/hornet-tiny-gf_8xb128_in1k.py create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/hornet/hornet-tiny_8xb128_in1k.py create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/hornet/metafile.yml create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/hrnet/README.md create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/hrnet/hrnet-w18_4xb32_in1k.py create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/hrnet/hrnet-w30_4xb32_in1k.py create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/hrnet/hrnet-w32_4xb32_in1k.py create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/hrnet/hrnet-w40_4xb32_in1k.py create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/hrnet/hrnet-w44_4xb32_in1k.py create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/hrnet/hrnet-w48_4xb32_in1k.py create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/hrnet/hrnet-w64_4xb32_in1k.py create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/hrnet/metafile.yml create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/lenet/README.md rename openmmlab_test/{mmclassification-speed-benchmark => mmclassification-0.24.1}/configs/lenet/lenet5_mnist.py (100%) create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/mlp_mixer/README.md create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/mlp_mixer/metafile.yml create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/mlp_mixer/mlp-mixer-base-p16_64xb64_in1k.py create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/mlp_mixer/mlp-mixer-large-p16_64xb64_in1k.py create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/mobilenet_v2/README.md create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/mobilenet_v2/metafile.yml create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/mobilenet_v2/mobilenet-v2_8xb32_in1k.py create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/mobilenet_v2/mobilenet_v2_b32x8_imagenet.py create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/mobilenet_v3/README.md create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/mobilenet_v3/metafile.yml create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/mobilenet_v3/mobilenet-v3-large_8xb32_in1k.py create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/mobilenet_v3/mobilenet-v3-small_8xb16_cifar10.py create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/mobilenet_v3/mobilenet-v3-small_8xb32_in1k.py create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/mobilenet_v3/mobilenet_v3_large_imagenet.py create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/mobilenet_v3/mobilenet_v3_small_cifar.py create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/mobilenet_v3/mobilenet_v3_small_imagenet.py create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/mvit/README.md create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/mvit/metafile.yml create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/mvit/mvitv2-base_8xb256_in1k.py create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/mvit/mvitv2-large_8xb256_in1k.py create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/mvit/mvitv2-small_8xb256_in1k.py create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/mvit/mvitv2-tiny_8xb256_in1k.py create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/poolformer/README.md create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/poolformer/metafile.yml create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/poolformer/poolformer-m36_32xb128_in1k.py create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/poolformer/poolformer-m48_32xb128_in1k.py create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/poolformer/poolformer-s12_32xb128_in1k.py create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/poolformer/poolformer-s24_32xb128_in1k.py create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/poolformer/poolformer-s36_32xb128_in1k.py create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/regnet/README.md create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/regnet/metafile.yml create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/regnet/regnetx-1.6gf_8xb128_in1k.py create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/regnet/regnetx-12gf_8xb64_in1k.py create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/regnet/regnetx-3.2gf_8xb64_in1k.py create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/regnet/regnetx-4.0gf_8xb64_in1k.py create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/regnet/regnetx-400mf_8xb128_in1k.py create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/regnet/regnetx-6.4gf_8xb64_in1k.py create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/regnet/regnetx-8.0gf_8xb64_in1k.py create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/regnet/regnetx-800mf_8xb128_in1k.py create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/repmlp/README.md create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/repmlp/metafile.yml create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/repmlp/repmlp-base_8xb64_in1k-256px.py create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/repmlp/repmlp-base_8xb64_in1k.py create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/repmlp/repmlp-base_delopy_8xb64_in1k.py create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/repmlp/repmlp-base_deploy_8xb64_in1k-256px.py create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/repvgg/README.md create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/repvgg/deploy/repvgg-A0_deploy_4xb64-coslr-120e_in1k.py create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/repvgg/deploy/repvgg-A1_deploy_4xb64-coslr-120e_in1k.py create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/repvgg/deploy/repvgg-A2_deploy_4xb64-coslr-120e_in1k.py create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/repvgg/deploy/repvgg-B0_deploy_4xb64-coslr-120e_in1k.py create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/repvgg/deploy/repvgg-B1_deploy_4xb64-coslr-120e_in1k.py create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/repvgg/deploy/repvgg-B1g2_deploy_4xb64-coslr-120e_in1k.py create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/repvgg/deploy/repvgg-B1g4_deploy_4xb64-coslr-120e_in1k.py create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/repvgg/deploy/repvgg-B2_deploy_4xb64-coslr-120e_in1k.py create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/repvgg/deploy/repvgg-B2g4_deploy_4xb64-autoaug-lbs-mixup-coslr-200e_in1k.py create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/repvgg/deploy/repvgg-B3_deploy_4xb64-autoaug-lbs-mixup-coslr-200e_in1k.py create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/repvgg/deploy/repvgg-B3g4_deploy_4xb64-autoaug-lbs-mixup-coslr-200e_in1k.py create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/repvgg/deploy/repvgg-D2se_deploy_4xb64-autoaug-lbs-mixup-coslr-200e_in1k.py create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/repvgg/metafile.yml create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/repvgg/repvgg-A0_4xb64-coslr-120e_in1k.py create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/repvgg/repvgg-A1_4xb64-coslr-120e_in1k.py create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/repvgg/repvgg-A2_4xb64-coslr-120e_in1k.py create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/repvgg/repvgg-B0_4xb64-coslr-120e_in1k.py create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/repvgg/repvgg-B1_4xb64-coslr-120e_in1k.py create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/repvgg/repvgg-B1g2_4xb64-coslr-120e_in1k.py create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/repvgg/repvgg-B1g4_4xb64-coslr-120e_in1k.py create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/repvgg/repvgg-B2_4xb64-coslr-120e_in1k.py create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/repvgg/repvgg-B2g4_4xb64-autoaug-lbs-mixup-coslr-200e_in1k.py create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/repvgg/repvgg-B3_4xb64-autoaug-lbs-mixup-coslr-200e_in1k.py create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/repvgg/repvgg-B3g4_4xb64-autoaug-lbs-mixup-coslr-200e_in1k.py create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/repvgg/repvgg-D2se_4xb64-autoaug-lbs-mixup-coslr-200e_in1k.py create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/res2net/README.md create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/res2net/metafile.yml create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/res2net/res2net101-w26-s4_8xb32_in1k.py create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/res2net/res2net50-w14-s8_8xb32_in1k.py create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/res2net/res2net50-w26-s8_8xb32_in1k.py create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/resnest/README.md create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/resnest/resnest101_32xb64_in1k.py create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/resnest/resnest101_b64x32_imagenet.py create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/resnest/resnest200_64xb32_in1k.py create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/resnest/resnest200_b32x64_imagenet.py create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/resnest/resnest269_64xb32_in1k.py create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/resnest/resnest269_b32x64_imagenet.py create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/resnest/resnest50_32xb64_in1k.py create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/resnest/resnest50_b64x32_imagenet.py create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/resnet/README.md create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/resnet/metafile.yml rename openmmlab_test/{mmclassification-speed-benchmark/configs/resnet/resnet101_b16x8_cifar10.py => mmclassification-0.24.1/configs/resnet/resnet101_8xb16_cifar10.py} (100%) rename openmmlab_test/{mmclassification-speed-benchmark/configs/resnet/resnet101_b32x8_imagenet.py => mmclassification-0.24.1/configs/resnet/resnet101_8xb32_in1k.py} (100%) create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/resnet/resnet101_b16x8_cifar10.py create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/resnet/resnet101_b32x8_imagenet.py rename openmmlab_test/{mmclassification-speed-benchmark/configs/resnet/resnet152_b16x8_cifar10.py => mmclassification-0.24.1/configs/resnet/resnet152_8xb16_cifar10.py} (100%) rename openmmlab_test/{mmclassification-speed-benchmark/configs/resnet/resnet152_b32x8_imagenet.py => mmclassification-0.24.1/configs/resnet/resnet152_8xb32_in1k.py} (100%) create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/resnet/resnet152_b16x8_cifar10.py create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/resnet/resnet152_b32x8_imagenet.py rename openmmlab_test/{mmclassification-speed-benchmark/configs/resnet/resnet18_b16x8_cifar10.py => mmclassification-0.24.1/configs/resnet/resnet18_8xb16_cifar10.py} (100%) rename openmmlab_test/{mmclassification-speed-benchmark/configs/resnet/resnet18_b32x8_imagenet.py => mmclassification-0.24.1/configs/resnet/resnet18_8xb32_in1k.py} (100%) create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/resnet/resnet18_b16x8_cifar10.py create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/resnet/resnet18_b32x8_imagenet.py rename openmmlab_test/{mmclassification-speed-benchmark/configs/resnet/resnet34_b16x8_cifar10.py => mmclassification-0.24.1/configs/resnet/resnet34_8xb16_cifar10.py} (100%) rename openmmlab_test/{mmclassification-speed-benchmark/configs/resnet/resnet34_b32x8_imagenet.py => mmclassification-0.24.1/configs/resnet/resnet34_8xb32_in1k.py} (100%) create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/resnet/resnet34_b16x8_cifar10.py create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/resnet/resnet34_b32x8_imagenet.py rename openmmlab_test/{mmclassification-speed-benchmark/configs/resnet/resnet50_b64x32_warmup_coslr_imagenet.py => mmclassification-0.24.1/configs/resnet/resnet50_32xb64-warmup-coslr_in1k.py} (100%) create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/resnet/resnet50_32xb64-warmup-lbs_in1k.py rename openmmlab_test/{mmclassification-speed-benchmark/configs/resnet/resnet50_b64x32_warmup_imagenet.py => mmclassification-0.24.1/configs/resnet/resnet50_32xb64-warmup_in1k.py} (100%) create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/resnet/resnet50_8xb128_coslr-90e_in21k.py rename openmmlab_test/{mmclassification-speed-benchmark/configs/resnet/resnet50_b16x8_cifar10_mixup.py => mmclassification-0.24.1/configs/resnet/resnet50_8xb16-mixup_cifar10.py} (100%) rename openmmlab_test/{mmclassification-speed-benchmark/configs/resnet/resnet50_b16x8_cifar10.py => mmclassification-0.24.1/configs/resnet/resnet50_8xb16_cifar10.py} (100%) rename openmmlab_test/{mmclassification-speed-benchmark/configs/resnet/resnet50_b16x8_cifar100.py => mmclassification-0.24.1/configs/resnet/resnet50_8xb16_cifar100.py} (100%) create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/resnet/resnet50_8xb256-rsb-a1-600e_in1k.py create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/resnet/resnet50_8xb256-rsb-a2-300e_in1k.py create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/resnet/resnet50_8xb256-rsb-a3-100e_in1k.py create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/resnet/resnet50_8xb32-coslr-preciseBN_in1k.py rename openmmlab_test/{mmclassification-speed-benchmark/configs/resnet/resnet50_b32x8_coslr_imagenet.py => mmclassification-0.24.1/configs/resnet/resnet50_8xb32-coslr_in1k.py} (100%) rename openmmlab_test/{mmclassification-speed-benchmark/configs/resnet/resnet50_b32x8_cutmix_imagenet.py => mmclassification-0.24.1/configs/resnet/resnet50_8xb32-cutmix_in1k.py} (100%) create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/resnet/resnet50_8xb32-fp16-dynamic_in1k.py create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/resnet/resnet50_8xb32-fp16_in1k.py rename openmmlab_test/{mmclassification-speed-benchmark/configs/resnet/resnet50_b32x8_label_smooth_imagenet.py => mmclassification-0.24.1/configs/resnet/resnet50_8xb32-lbs_in1k.py} (100%) rename openmmlab_test/{mmclassification-speed-benchmark/configs/resnet/resnet50_b32x8_mixup_imagenet.py => mmclassification-0.24.1/configs/resnet/resnet50_8xb32-mixup_in1k.py} (100%) create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/resnet/resnet50_8xb32_in1k.py create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/resnet/resnet50_8xb8_cars.py create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/resnet/resnet50_8xb8_cub.py create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/resnet/resnet50_b16x8_cifar10.py create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/resnet/resnet50_b16x8_cifar100.py create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/resnet/resnet50_b16x8_cifar10_mixup.py create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/resnet/resnet50_b32x8_coslr_imagenet.py create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/resnet/resnet50_b32x8_cutmix_imagenet.py create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/resnet/resnet50_b32x8_imagenet.py create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/resnet/resnet50_b32x8_label_smooth_imagenet.py create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/resnet/resnet50_b32x8_mixup_imagenet.py create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/resnet/resnet50_b64x32_warmup_coslr_imagenet.py create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/resnet/resnet50_b64x32_warmup_imagenet.py create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/resnet/resnet50_b64x32_warmup_label_smooth_imagenet.py create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/resnet/resnetv1c101_8xb32_in1k.py create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/resnet/resnetv1c152_8xb32_in1k.py create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/resnet/resnetv1c50_8xb32_in1k.py rename openmmlab_test/{mmclassification-speed-benchmark/configs/resnet/resnetv1d101_b32x8_imagenet.py => mmclassification-0.24.1/configs/resnet/resnetv1d101_8xb32_in1k.py} (100%) create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/resnet/resnetv1d101_b32x8_imagenet.py rename openmmlab_test/{mmclassification-speed-benchmark/configs/resnet/resnetv1d152_b32x8_imagenet.py => mmclassification-0.24.1/configs/resnet/resnetv1d152_8xb32_in1k.py} (100%) create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/resnet/resnetv1d152_b32x8_imagenet.py rename openmmlab_test/{mmclassification-speed-benchmark/configs/resnet/resnetv1d50_b32x8_imagenet.py => mmclassification-0.24.1/configs/resnet/resnetv1d50_8xb32_in1k.py} (100%) create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/resnet/resnetv1d50_b32x8_imagenet.py create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/resnext/README.md create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/resnext/metafile.yml rename openmmlab_test/{mmclassification-speed-benchmark/configs/resnext/resnext101_32x4d_b32x8_imagenet.py => mmclassification-0.24.1/configs/resnext/resnext101-32x4d_8xb32_in1k.py} (100%) rename openmmlab_test/{mmclassification-speed-benchmark/configs/resnext/resnext101_32x8d_b32x8_imagenet.py => mmclassification-0.24.1/configs/resnext/resnext101-32x8d_8xb32_in1k.py} (100%) create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/resnext/resnext101_32x4d_b32x8_imagenet.py create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/resnext/resnext101_32x8d_b32x8_imagenet.py rename openmmlab_test/{mmclassification-speed-benchmark/configs/resnext/resnext152_32x4d_b32x8_imagenet.py => mmclassification-0.24.1/configs/resnext/resnext152-32x4d_8xb32_in1k.py} (100%) create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/resnext/resnext152_32x4d_b32x8_imagenet.py rename openmmlab_test/{mmclassification-speed-benchmark/configs/resnext/resnext50_32x4d_b32x8_imagenet.py => mmclassification-0.24.1/configs/resnext/resnext50-32x4d_8xb32_in1k.py} (100%) create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/resnext/resnext50_32x4d_b32x8_imagenet.py create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/seresnet/README.md create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/seresnet/metafile.yml rename openmmlab_test/{mmclassification-speed-benchmark/configs/seresnet/seresnet101_b32x8_imagenet.py => mmclassification-0.24.1/configs/seresnet/seresnet101_8xb32_in1k.py} (100%) create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/seresnet/seresnet101_b32x8_imagenet.py rename openmmlab_test/{mmclassification-speed-benchmark/configs/seresnet/seresnet50_b32x8_imagenet.py => mmclassification-0.24.1/configs/seresnet/seresnet50_8xb32_in1k.py} (100%) create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/seresnet/seresnet50_b32x8_imagenet.py rename openmmlab_test/{mmclassification-speed-benchmark/configs/seresnext/seresnext101_32x4d_b32x8_imagenet.py => mmclassification-0.24.1/configs/seresnet/seresnext101-32x4d_8xb32_in1k.py} (100%) create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/seresnet/seresnext101_32x4d_b32x8_imagenet.py rename openmmlab_test/{mmclassification-speed-benchmark/configs/seresnext/seresnext50_32x4d_b32x8_imagenet.py => mmclassification-0.24.1/configs/seresnet/seresnext50-32x4d_8xb32_in1k.py} (100%) create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/seresnet/seresnext50_32x4d_b32x8_imagenet.py create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/shufflenet_v1/README.md create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/shufflenet_v1/metafile.yml rename openmmlab_test/{mmclassification-speed-benchmark/configs/shufflenet_v1/shufflenet_v1_1x_b64x16_linearlr_bn_nowd_imagenet.py => mmclassification-0.24.1/configs/shufflenet_v1/shufflenet-v1-1x_16xb64_in1k.py} (100%) create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/shufflenet_v1/shufflenet_v1_1x_b64x16_linearlr_bn_nowd_imagenet.py create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/shufflenet_v2/README.md create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/shufflenet_v2/metafile.yml create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/shufflenet_v2/shufflenet-v2-1x_16xb64_in1k.py create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/shufflenet_v2/shufflenet_v2_1x_b64x16_linearlr_bn_nowd_imagenet.py create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/swin_transformer/README.md create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/swin_transformer/metafile.yml create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/swin_transformer/swin-base_16xb64_in1k-384px.py create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/swin_transformer/swin-base_16xb64_in1k.py create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/swin_transformer/swin-large_16xb64_in1k-384px.py create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/swin_transformer/swin-large_16xb64_in1k.py create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/swin_transformer/swin-large_8xb8_cub_384px.py create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/swin_transformer/swin-small_16xb64_in1k.py create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/swin_transformer/swin-tiny_16xb64_in1k.py create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/swin_transformer/swin_base_224_b16x64_300e_imagenet.py create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/swin_transformer/swin_base_384_evalonly_imagenet.py create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/swin_transformer/swin_large_224_evalonly_imagenet.py create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/swin_transformer/swin_large_384_evalonly_imagenet.py create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/swin_transformer/swin_small_224_b16x64_300e_imagenet.py create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/swin_transformer/swin_tiny_224_b16x64_300e_imagenet.py create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/swin_transformer_v2/README.md create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/swin_transformer_v2/metafile.yml create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/swin_transformer_v2/swinv2-base-w16_16xb64_in1k-256px.py create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/swin_transformer_v2/swinv2-base-w16_in21k-pre_16xb64_in1k-256px.py create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/swin_transformer_v2/swinv2-base-w24_in21k-pre_16xb64_in1k-384px.py create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/swin_transformer_v2/swinv2-base-w8_16xb64_in1k-256px.py create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/swin_transformer_v2/swinv2-large-w16_in21k-pre_16xb64_in1k-256px.py create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/swin_transformer_v2/swinv2-large-w24_in21k-pre_16xb64_in1k-384px.py create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/swin_transformer_v2/swinv2-small-w16_16xb64_in1k-256px.py create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/swin_transformer_v2/swinv2-small-w8_16xb64_in1k-256px.py create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/swin_transformer_v2/swinv2-tiny-w16_16xb64_in1k-256px.py create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/swin_transformer_v2/swinv2-tiny-w8_16xb64_in1k-256px.py create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/t2t_vit/README.md create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/t2t_vit/metafile.yml create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/t2t_vit/t2t-vit-t-14_8xb64_in1k.py create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/t2t_vit/t2t-vit-t-19_8xb64_in1k.py create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/t2t_vit/t2t-vit-t-24_8xb64_in1k.py create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/tnt/README.md create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/tnt/metafile.yml create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/tnt/tnt-s-p16_16xb64_in1k.py create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/tnt/tnt_s_patch16_224_evalonly_imagenet.py create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/twins/README.md create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/twins/metafile.yml create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/twins/twins-pcpvt-base_8xb128_in1k.py create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/twins/twins-pcpvt-large_16xb64_in1k.py create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/twins/twins-pcpvt-small_8xb128_in1k.py create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/twins/twins-svt-base_8xb128_in1k.py create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/twins/twins-svt-large_16xb64_in1k.py create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/twins/twins-svt-small_8xb128_in1k.py create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/van/README.md create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/van/metafile.yml create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/van/van-b0_8xb128_in1k.py create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/van/van-b1_8xb128_in1k.py create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/van/van-b2_8xb128_in1k.py create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/van/van-b3_8xb128_in1k.py create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/van/van-b4_8xb128_in1k.py create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/van/van-base_8xb128_in1k.py create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/van/van-large_8xb128_in1k.py create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/van/van-small_8xb128_in1k.py create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/van/van-tiny_8xb128_in1k.py create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/vgg/README.md create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/vgg/metafile.yml rename openmmlab_test/{mmclassification-speed-benchmark/configs/vgg/vgg11_b32x8_imagenet.py => mmclassification-0.24.1/configs/vgg/vgg11_8xb32_in1k.py} (100%) create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/vgg/vgg11_b32x8_imagenet.py rename openmmlab_test/{mmclassification-speed-benchmark/configs/vgg/vgg11bn_b32x8_imagenet.py => mmclassification-0.24.1/configs/vgg/vgg11bn_8xb32_in1k.py} (100%) create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/vgg/vgg11bn_b32x8_imagenet.py rename openmmlab_test/{mmclassification-speed-benchmark/configs/vgg/vgg13_b32x8_imagenet.py => mmclassification-0.24.1/configs/vgg/vgg13_8xb32_in1k.py} (100%) create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/vgg/vgg13_b32x8_imagenet.py rename openmmlab_test/{mmclassification-speed-benchmark/configs/vgg/vgg13bn_b32x8_imagenet.py => mmclassification-0.24.1/configs/vgg/vgg13bn_8xb32_in1k.py} (100%) create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/vgg/vgg13bn_b32x8_imagenet.py rename openmmlab_test/{mmclassification-speed-benchmark/configs/vgg/vgg16_b16x8_voc.py => mmclassification-0.24.1/configs/vgg/vgg16_8xb16_voc.py} (100%) create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/vgg/vgg16_8xb32_in1k.py create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/vgg/vgg16_b16x8_voc.py create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/vgg/vgg16_b32x8_imagenet.py rename openmmlab_test/{mmclassification-speed-benchmark/configs/vgg/vgg16bn_b32x8_imagenet.py => mmclassification-0.24.1/configs/vgg/vgg16bn_8xb32_in1k.py} (100%) create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/vgg/vgg16bn_b32x8_imagenet.py rename openmmlab_test/{mmclassification-speed-benchmark/configs/vgg/vgg19_b32x8_imagenet.py => mmclassification-0.24.1/configs/vgg/vgg19_8xb32_in1k.py} (100%) create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/vgg/vgg19_b32x8_imagenet.py rename openmmlab_test/{mmclassification-speed-benchmark/configs/vgg/vgg19bn_b32x8_imagenet.py => mmclassification-0.24.1/configs/vgg/vgg19bn_8xb32_in1k.py} (100%) create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/vgg/vgg19bn_b32x8_imagenet.py create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/vision_transformer/README.md create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/vision_transformer/metafile.yml create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/vision_transformer/vit-base-p16_ft-4xb544-ipu_in1k.py create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/vision_transformer/vit-base-p16_ft-64xb64_in1k-384.py create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/vision_transformer/vit-base-p16_pt-64xb64_in1k-224.py create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/vision_transformer/vit-base-p32_ft-64xb64_in1k-384.py create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/vision_transformer/vit-base-p32_pt-64xb64_in1k-224.py create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/vision_transformer/vit-large-p16_ft-64xb64_in1k-384.py create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/vision_transformer/vit-large-p16_pt-64xb64_in1k-224.py create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/vision_transformer/vit-large-p32_ft-64xb64_in1k-384.py create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/vision_transformer/vit-large-p32_pt-64xb64_in1k-224.py create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/wrn/README.md create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/wrn/metafile.yml create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/wrn/wide-resnet101_8xb32_in1k.py create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/wrn/wide-resnet50_8xb32_in1k.py create mode 100644 openmmlab_test/mmclassification-0.24.1/configs/wrn/wide-resnet50_timm_8xb32_in1k.py create mode 100644 openmmlab_test/mmclassification-0.24.1/demo/bird.JPEG create mode 100644 openmmlab_test/mmclassification-0.24.1/demo/cat-dog.png rename openmmlab_test/{mmclassification-speed-benchmark => mmclassification-0.24.1}/demo/demo.JPEG (100%) create mode 100644 openmmlab_test/mmclassification-0.24.1/demo/dog.jpg create mode 100644 openmmlab_test/mmclassification-0.24.1/demo/image_demo.py create mode 100644 openmmlab_test/mmclassification-0.24.1/demo/ipu_train_example.sh create mode 100644 openmmlab_test/mmclassification-0.24.1/docker/Dockerfile create mode 100644 openmmlab_test/mmclassification-0.24.1/docker/serve/Dockerfile rename openmmlab_test/{mmclassification-speed-benchmark => mmclassification-0.24.1}/docker/serve/config.properties (100%) rename openmmlab_test/{mmclassification-speed-benchmark => mmclassification-0.24.1}/docker/serve/entrypoint.sh (100%) rename openmmlab_test/{mmclassification-speed-benchmark/docs => mmclassification-0.24.1/docs/en}/Makefile (100%) create mode 100644 openmmlab_test/mmclassification-0.24.1/docs/en/_static/css/readthedocs.css rename openmmlab_test/{mmclassification-speed-benchmark/resources => mmclassification-0.24.1/docs/en/_static/image}/mmcls-logo.png (100%) create mode 100644 openmmlab_test/mmclassification-0.24.1/docs/en/_static/image/tools/analysis/analyze_log.jpg create mode 100644 openmmlab_test/mmclassification-0.24.1/docs/en/_static/image/tools/visualization/lr_schedule1.png create mode 100644 openmmlab_test/mmclassification-0.24.1/docs/en/_static/image/tools/visualization/lr_schedule2.png create mode 100644 openmmlab_test/mmclassification-0.24.1/docs/en/_static/js/custom.js create mode 100644 openmmlab_test/mmclassification-0.24.1/docs/en/_templates/classtemplate.rst create mode 100644 openmmlab_test/mmclassification-0.24.1/docs/en/api/apis.rst create mode 100644 openmmlab_test/mmclassification-0.24.1/docs/en/api/core.rst create mode 100644 openmmlab_test/mmclassification-0.24.1/docs/en/api/datasets.rst create mode 100644 openmmlab_test/mmclassification-0.24.1/docs/en/api/models.rst create mode 100644 openmmlab_test/mmclassification-0.24.1/docs/en/api/models.utils.augment.rst create mode 100644 openmmlab_test/mmclassification-0.24.1/docs/en/api/models.utils.rst create mode 100644 openmmlab_test/mmclassification-0.24.1/docs/en/api/transforms.rst create mode 100644 openmmlab_test/mmclassification-0.24.1/docs/en/api/utils.rst create mode 100644 openmmlab_test/mmclassification-0.24.1/docs/en/changelog.md create mode 100644 openmmlab_test/mmclassification-0.24.1/docs/en/compatibility.md create mode 100644 openmmlab_test/mmclassification-0.24.1/docs/en/conf.py create mode 100644 openmmlab_test/mmclassification-0.24.1/docs/en/device/npu.md create mode 100644 openmmlab_test/mmclassification-0.24.1/docs/en/docutils.conf create mode 100644 openmmlab_test/mmclassification-0.24.1/docs/en/faq.md create mode 100644 openmmlab_test/mmclassification-0.24.1/docs/en/getting_started.md create mode 100644 openmmlab_test/mmclassification-0.24.1/docs/en/index.rst create mode 100644 openmmlab_test/mmclassification-0.24.1/docs/en/install.md create mode 100644 openmmlab_test/mmclassification-0.24.1/docs/en/model_zoo.md create mode 100644 openmmlab_test/mmclassification-0.24.1/docs/en/stat.py create mode 100644 openmmlab_test/mmclassification-0.24.1/docs/en/tools/analysis.md create mode 100644 openmmlab_test/mmclassification-0.24.1/docs/en/tools/miscellaneous.md create mode 100644 openmmlab_test/mmclassification-0.24.1/docs/en/tools/model_serving.md create mode 100644 openmmlab_test/mmclassification-0.24.1/docs/en/tools/onnx2tensorrt.md create mode 100644 openmmlab_test/mmclassification-0.24.1/docs/en/tools/pytorch2onnx.md create mode 100644 openmmlab_test/mmclassification-0.24.1/docs/en/tools/pytorch2torchscript.md create mode 100644 openmmlab_test/mmclassification-0.24.1/docs/en/tools/visualization.md create mode 100644 openmmlab_test/mmclassification-0.24.1/docs/en/tutorials/MMClassification_python.ipynb create mode 100644 openmmlab_test/mmclassification-0.24.1/docs/en/tutorials/MMClassification_tools.ipynb create mode 100644 openmmlab_test/mmclassification-0.24.1/docs/en/tutorials/config.md create mode 100644 openmmlab_test/mmclassification-0.24.1/docs/en/tutorials/data_pipeline.md create mode 100644 openmmlab_test/mmclassification-0.24.1/docs/en/tutorials/finetune.md create mode 100644 openmmlab_test/mmclassification-0.24.1/docs/en/tutorials/new_dataset.md create mode 100644 openmmlab_test/mmclassification-0.24.1/docs/en/tutorials/new_modules.md create mode 100644 openmmlab_test/mmclassification-0.24.1/docs/en/tutorials/runtime.md create mode 100644 openmmlab_test/mmclassification-0.24.1/docs/en/tutorials/schedule.md rename openmmlab_test/{mmclassification-speed-benchmark/docs_zh-CN => mmclassification-0.24.1/docs/zh_CN}/Makefile (100%) create mode 100644 openmmlab_test/mmclassification-0.24.1/docs/zh_CN/_static/css/readthedocs.css create mode 100644 openmmlab_test/mmclassification-0.24.1/docs/zh_CN/_static/image/mmcls-logo.png create mode 100644 openmmlab_test/mmclassification-0.24.1/docs/zh_CN/_static/image/tools/analysis/analyze_log.jpg create mode 100644 openmmlab_test/mmclassification-0.24.1/docs/zh_CN/_static/image/tools/visualization/lr_schedule1.png create mode 100644 openmmlab_test/mmclassification-0.24.1/docs/zh_CN/_static/image/tools/visualization/lr_schedule2.png create mode 100644 openmmlab_test/mmclassification-0.24.1/docs/zh_CN/_static/js/custom.js create mode 100644 openmmlab_test/mmclassification-0.24.1/docs/zh_CN/community/CONTRIBUTING.md create mode 100644 openmmlab_test/mmclassification-0.24.1/docs/zh_CN/compatibility.md create mode 100644 openmmlab_test/mmclassification-0.24.1/docs/zh_CN/conf.py create mode 100644 openmmlab_test/mmclassification-0.24.1/docs/zh_CN/device/npu.md create mode 100644 openmmlab_test/mmclassification-0.24.1/docs/zh_CN/docutils.conf create mode 100644 openmmlab_test/mmclassification-0.24.1/docs/zh_CN/faq.md create mode 100644 openmmlab_test/mmclassification-0.24.1/docs/zh_CN/getting_started.md create mode 100644 openmmlab_test/mmclassification-0.24.1/docs/zh_CN/imgs/qq_group_qrcode.jpg rename openmmlab_test/{mmclassification-speed-benchmark/docs => mmclassification-0.24.1/docs/zh_CN}/imgs/zhihu_qrcode.jpg (100%) create mode 100644 openmmlab_test/mmclassification-0.24.1/docs/zh_CN/index.rst create mode 100644 openmmlab_test/mmclassification-0.24.1/docs/zh_CN/install.md create mode 100644 openmmlab_test/mmclassification-0.24.1/docs/zh_CN/stat.py create mode 100644 openmmlab_test/mmclassification-0.24.1/docs/zh_CN/tools/analysis.md create mode 100644 openmmlab_test/mmclassification-0.24.1/docs/zh_CN/tools/miscellaneous.md create mode 100644 openmmlab_test/mmclassification-0.24.1/docs/zh_CN/tools/model_serving.md create mode 100644 openmmlab_test/mmclassification-0.24.1/docs/zh_CN/tools/onnx2tensorrt.md create mode 100644 openmmlab_test/mmclassification-0.24.1/docs/zh_CN/tools/pytorch2onnx.md create mode 100644 openmmlab_test/mmclassification-0.24.1/docs/zh_CN/tools/pytorch2torchscript.md create mode 100644 openmmlab_test/mmclassification-0.24.1/docs/zh_CN/tools/visualization.md create mode 100644 openmmlab_test/mmclassification-0.24.1/docs/zh_CN/tutorials/MMClassification_python_cn.ipynb create mode 100644 openmmlab_test/mmclassification-0.24.1/docs/zh_CN/tutorials/MMClassification_tools_cn.ipynb create mode 100644 openmmlab_test/mmclassification-0.24.1/docs/zh_CN/tutorials/config.md create mode 100644 openmmlab_test/mmclassification-0.24.1/docs/zh_CN/tutorials/data_pipeline.md create mode 100644 openmmlab_test/mmclassification-0.24.1/docs/zh_CN/tutorials/finetune.md create mode 100644 openmmlab_test/mmclassification-0.24.1/docs/zh_CN/tutorials/new_dataset.md create mode 100644 openmmlab_test/mmclassification-0.24.1/docs/zh_CN/tutorials/new_modules.md create mode 100644 openmmlab_test/mmclassification-0.24.1/docs/zh_CN/tutorials/runtime.md create mode 100644 openmmlab_test/mmclassification-0.24.1/docs/zh_CN/tutorials/schedule.md create mode 100644 openmmlab_test/mmclassification-0.24.1/hostfile create mode 100644 openmmlab_test/mmclassification-0.24.1/mmcls/__init__.py create mode 100644 openmmlab_test/mmclassification-0.24.1/mmcls/apis/__init__.py rename openmmlab_test/{mmclassification-speed-benchmark => mmclassification-0.24.1}/mmcls/apis/inference.py (82%) create mode 100644 openmmlab_test/mmclassification-0.24.1/mmcls/apis/test.py create mode 100644 openmmlab_test/mmclassification-0.24.1/mmcls/apis/test_old.py create mode 100644 openmmlab_test/mmclassification-0.24.1/mmcls/apis/test_time.py create mode 100644 openmmlab_test/mmclassification-0.24.1/mmcls/apis/train.py create mode 100644 openmmlab_test/mmclassification-0.24.1/mmcls/core/__init__.py create mode 100644 openmmlab_test/mmclassification-0.24.1/mmcls/core/evaluation/__init__.py create mode 100644 openmmlab_test/mmclassification-0.24.1/mmcls/core/evaluation/eval_hooks.py create mode 100644 openmmlab_test/mmclassification-0.24.1/mmcls/core/evaluation/eval_metrics.py rename openmmlab_test/{mmclassification-speed-benchmark => mmclassification-0.24.1}/mmcls/core/evaluation/mean_ap.py (92%) rename openmmlab_test/{mmclassification-speed-benchmark => mmclassification-0.24.1}/mmcls/core/evaluation/multilabel_eval_metrics.py (98%) create mode 100644 openmmlab_test/mmclassification-0.24.1/mmcls/core/export/__init__.py create mode 100644 openmmlab_test/mmclassification-0.24.1/mmcls/core/export/test.py create mode 100644 openmmlab_test/mmclassification-0.24.1/mmcls/core/hook/__init__.py create mode 100644 openmmlab_test/mmclassification-0.24.1/mmcls/core/hook/class_num_check_hook.py create mode 100644 openmmlab_test/mmclassification-0.24.1/mmcls/core/hook/lr_updater.py create mode 100644 openmmlab_test/mmclassification-0.24.1/mmcls/core/hook/precise_bn_hook.py create mode 100644 openmmlab_test/mmclassification-0.24.1/mmcls/core/hook/wandblogger_hook.py create mode 100644 openmmlab_test/mmclassification-0.24.1/mmcls/core/optimizers/__init__.py create mode 100644 openmmlab_test/mmclassification-0.24.1/mmcls/core/optimizers/lamb.py create mode 100644 openmmlab_test/mmclassification-0.24.1/mmcls/core/utils/__init__.py create mode 100644 openmmlab_test/mmclassification-0.24.1/mmcls/core/utils/dist_utils.py rename openmmlab_test/{mmclassification-speed-benchmark => mmclassification-0.24.1}/mmcls/core/utils/misc.py (81%) create mode 100644 openmmlab_test/mmclassification-0.24.1/mmcls/core/visualization/__init__.py create mode 100644 openmmlab_test/mmclassification-0.24.1/mmcls/core/visualization/image.py create mode 100644 openmmlab_test/mmclassification-0.24.1/mmcls/datasets/__init__.py rename openmmlab_test/{mmclassification-speed-benchmark => mmclassification-0.24.1}/mmcls/datasets/base_dataset.py (81%) create mode 100644 openmmlab_test/mmclassification-0.24.1/mmcls/datasets/builder.py rename openmmlab_test/{mmclassification-speed-benchmark => mmclassification-0.24.1}/mmcls/datasets/cifar.py (76%) create mode 100644 openmmlab_test/mmclassification-0.24.1/mmcls/datasets/cub.py create mode 100644 openmmlab_test/mmclassification-0.24.1/mmcls/datasets/custom.py create mode 100644 openmmlab_test/mmclassification-0.24.1/mmcls/datasets/dataset_wrappers.py rename openmmlab_test/{mmclassification-speed-benchmark => mmclassification-0.24.1}/mmcls/datasets/imagenet.py (91%) create mode 100644 openmmlab_test/mmclassification-0.24.1/mmcls/datasets/imagenet21k.py rename openmmlab_test/{mmclassification-speed-benchmark => mmclassification-0.24.1}/mmcls/datasets/mnist.py (98%) rename openmmlab_test/{mmclassification-speed-benchmark => mmclassification-0.24.1}/mmcls/datasets/multi_label.py (81%) create mode 100644 openmmlab_test/mmclassification-0.24.1/mmcls/datasets/pipelines/__init__.py rename openmmlab_test/{mmclassification-speed-benchmark => mmclassification-0.24.1}/mmcls/datasets/pipelines/auto_augment.py (88%) rename openmmlab_test/{mmclassification-speed-benchmark => mmclassification-0.24.1}/mmcls/datasets/pipelines/compose.py (96%) create mode 100644 openmmlab_test/mmclassification-0.24.1/mmcls/datasets/pipelines/formatting.py rename openmmlab_test/{mmclassification-speed-benchmark => mmclassification-0.24.1}/mmcls/datasets/pipelines/loading.py (98%) rename openmmlab_test/{mmclassification-speed-benchmark => mmclassification-0.24.1}/mmcls/datasets/pipelines/transforms.py (84%) create mode 100644 openmmlab_test/mmclassification-0.24.1/mmcls/datasets/samplers/__init__.py create mode 100644 openmmlab_test/mmclassification-0.24.1/mmcls/datasets/samplers/distributed_sampler.py create mode 100644 openmmlab_test/mmclassification-0.24.1/mmcls/datasets/samplers/repeat_aug.py create mode 100644 openmmlab_test/mmclassification-0.24.1/mmcls/datasets/stanford_cars.py create mode 100644 openmmlab_test/mmclassification-0.24.1/mmcls/datasets/utils.py create mode 100644 openmmlab_test/mmclassification-0.24.1/mmcls/datasets/voc.py create mode 100644 openmmlab_test/mmclassification-0.24.1/mmcls/models/__init__.py create mode 100644 openmmlab_test/mmclassification-0.24.1/mmcls/models/backbones/__init__.py rename openmmlab_test/{mmclassification-speed-benchmark => mmclassification-0.24.1}/mmcls/models/backbones/alexnet.py (96%) rename openmmlab_test/{mmclassification-speed-benchmark => mmclassification-0.24.1}/mmcls/models/backbones/base_backbone.py (94%) create mode 100644 openmmlab_test/mmclassification-0.24.1/mmcls/models/backbones/conformer.py create mode 100644 openmmlab_test/mmclassification-0.24.1/mmcls/models/backbones/convmixer.py create mode 100644 openmmlab_test/mmclassification-0.24.1/mmcls/models/backbones/convnext.py create mode 100644 openmmlab_test/mmclassification-0.24.1/mmcls/models/backbones/cspnet.py create mode 100644 openmmlab_test/mmclassification-0.24.1/mmcls/models/backbones/deit.py create mode 100644 openmmlab_test/mmclassification-0.24.1/mmcls/models/backbones/densenet.py create mode 100644 openmmlab_test/mmclassification-0.24.1/mmcls/models/backbones/efficientformer.py create mode 100644 openmmlab_test/mmclassification-0.24.1/mmcls/models/backbones/efficientnet.py create mode 100644 openmmlab_test/mmclassification-0.24.1/mmcls/models/backbones/hornet.py create mode 100644 openmmlab_test/mmclassification-0.24.1/mmcls/models/backbones/hrnet.py rename openmmlab_test/{mmclassification-speed-benchmark => mmclassification-0.24.1}/mmcls/models/backbones/lenet.py (94%) create mode 100644 openmmlab_test/mmclassification-0.24.1/mmcls/models/backbones/mlp_mixer.py rename openmmlab_test/{mmclassification-speed-benchmark => mmclassification-0.24.1}/mmcls/models/backbones/mobilenet_v2.py (91%) create mode 100644 openmmlab_test/mmclassification-0.24.1/mmcls/models/backbones/mobilenet_v3.py create mode 100644 openmmlab_test/mmclassification-0.24.1/mmcls/models/backbones/mvit.py create mode 100644 openmmlab_test/mmclassification-0.24.1/mmcls/models/backbones/poolformer.py rename openmmlab_test/{mmclassification-speed-benchmark => mmclassification-0.24.1}/mmcls/models/backbones/regnet.py (85%) create mode 100644 openmmlab_test/mmclassification-0.24.1/mmcls/models/backbones/repmlp.py create mode 100644 openmmlab_test/mmclassification-0.24.1/mmcls/models/backbones/repvgg.py create mode 100644 openmmlab_test/mmclassification-0.24.1/mmcls/models/backbones/res2net.py rename openmmlab_test/{mmclassification-speed-benchmark => mmclassification-0.24.1}/mmcls/models/backbones/resnest.py (99%) rename openmmlab_test/{mmclassification-speed-benchmark => mmclassification-0.24.1}/mmcls/models/backbones/resnet.py (90%) rename openmmlab_test/{mmclassification-speed-benchmark => mmclassification-0.24.1}/mmcls/models/backbones/resnet_cifar.py (97%) rename openmmlab_test/{mmclassification-speed-benchmark => mmclassification-0.24.1}/mmcls/models/backbones/resnext.py (99%) rename openmmlab_test/{mmclassification-speed-benchmark => mmclassification-0.24.1}/mmcls/models/backbones/seresnet.py (98%) rename openmmlab_test/{mmclassification-speed-benchmark => mmclassification-0.24.1}/mmcls/models/backbones/seresnext.py (99%) rename openmmlab_test/{mmclassification-speed-benchmark => mmclassification-0.24.1}/mmcls/models/backbones/shufflenet_v1.py (95%) rename openmmlab_test/{mmclassification-speed-benchmark => mmclassification-0.24.1}/mmcls/models/backbones/shufflenet_v2.py (92%) create mode 100644 openmmlab_test/mmclassification-0.24.1/mmcls/models/backbones/swin_transformer.py create mode 100644 openmmlab_test/mmclassification-0.24.1/mmcls/models/backbones/swin_transformer_v2.py create mode 100644 openmmlab_test/mmclassification-0.24.1/mmcls/models/backbones/t2t_vit.py create mode 100644 openmmlab_test/mmclassification-0.24.1/mmcls/models/backbones/timm_backbone.py create mode 100644 openmmlab_test/mmclassification-0.24.1/mmcls/models/backbones/tnt.py create mode 100644 openmmlab_test/mmclassification-0.24.1/mmcls/models/backbones/twins.py create mode 100644 openmmlab_test/mmclassification-0.24.1/mmcls/models/backbones/van.py rename openmmlab_test/{mmclassification-speed-benchmark => mmclassification-0.24.1}/mmcls/models/backbones/vgg.py (91%) create mode 100644 openmmlab_test/mmclassification-0.24.1/mmcls/models/backbones/vision_transformer.py create mode 100644 openmmlab_test/mmclassification-0.24.1/mmcls/models/builder.py create mode 100644 openmmlab_test/mmclassification-0.24.1/mmcls/models/classifiers/__init__.py create mode 100644 openmmlab_test/mmclassification-0.24.1/mmcls/models/classifiers/base.py create mode 100644 openmmlab_test/mmclassification-0.24.1/mmcls/models/classifiers/image.py create mode 100644 openmmlab_test/mmclassification-0.24.1/mmcls/models/heads/__init__.py rename openmmlab_test/{mmclassification-speed-benchmark => mmclassification-0.24.1}/mmcls/models/heads/base_head.py (86%) create mode 100644 openmmlab_test/mmclassification-0.24.1/mmcls/models/heads/cls_head.py create mode 100644 openmmlab_test/mmclassification-0.24.1/mmcls/models/heads/conformer_head.py create mode 100644 openmmlab_test/mmclassification-0.24.1/mmcls/models/heads/deit_head.py create mode 100644 openmmlab_test/mmclassification-0.24.1/mmcls/models/heads/efficientformer_head.py create mode 100644 openmmlab_test/mmclassification-0.24.1/mmcls/models/heads/linear_head.py create mode 100644 openmmlab_test/mmclassification-0.24.1/mmcls/models/heads/multi_label_csra_head.py create mode 100644 openmmlab_test/mmclassification-0.24.1/mmcls/models/heads/multi_label_head.py create mode 100644 openmmlab_test/mmclassification-0.24.1/mmcls/models/heads/multi_label_linear_head.py create mode 100644 openmmlab_test/mmclassification-0.24.1/mmcls/models/heads/stacked_head.py create mode 100644 openmmlab_test/mmclassification-0.24.1/mmcls/models/heads/vision_transformer_head.py create mode 100644 openmmlab_test/mmclassification-0.24.1/mmcls/models/losses/__init__.py create mode 100644 openmmlab_test/mmclassification-0.24.1/mmcls/models/losses/accuracy.py create mode 100644 openmmlab_test/mmclassification-0.24.1/mmcls/models/losses/asymmetric_loss.py create mode 100644 openmmlab_test/mmclassification-0.24.1/mmcls/models/losses/cross_entropy_loss.py rename openmmlab_test/{mmclassification-speed-benchmark => mmclassification-0.24.1}/mmcls/models/losses/focal_loss.py (84%) rename openmmlab_test/{mmclassification-speed-benchmark => mmclassification-0.24.1}/mmcls/models/losses/label_smooth_loss.py (81%) create mode 100644 openmmlab_test/mmclassification-0.24.1/mmcls/models/losses/seesaw_loss.py create mode 100644 openmmlab_test/mmclassification-0.24.1/mmcls/models/losses/utils.py create mode 100644 openmmlab_test/mmclassification-0.24.1/mmcls/models/necks/__init__.py rename openmmlab_test/{mmclassification-speed-benchmark => mmclassification-0.24.1}/mmcls/models/necks/gap.py (96%) create mode 100644 openmmlab_test/mmclassification-0.24.1/mmcls/models/necks/gem.py create mode 100644 openmmlab_test/mmclassification-0.24.1/mmcls/models/necks/hr_fuse.py create mode 100644 openmmlab_test/mmclassification-0.24.1/mmcls/models/utils/__init__.py create mode 100644 openmmlab_test/mmclassification-0.24.1/mmcls/models/utils/attention.py create mode 100644 openmmlab_test/mmclassification-0.24.1/mmcls/models/utils/augment/__init__.py rename openmmlab_test/{mmclassification-speed-benchmark => mmclassification-0.24.1}/mmcls/models/utils/augment/augments.py (98%) create mode 100644 openmmlab_test/mmclassification-0.24.1/mmcls/models/utils/augment/builder.py create mode 100644 openmmlab_test/mmclassification-0.24.1/mmcls/models/utils/augment/cutmix.py rename openmmlab_test/{mmclassification-speed-benchmark => mmclassification-0.24.1}/mmcls/models/utils/augment/identity.py (83%) create mode 100644 openmmlab_test/mmclassification-0.24.1/mmcls/models/utils/augment/mixup.py create mode 100644 openmmlab_test/mmclassification-0.24.1/mmcls/models/utils/augment/resizemix.py create mode 100644 openmmlab_test/mmclassification-0.24.1/mmcls/models/utils/augment/utils.py rename openmmlab_test/{mmclassification-speed-benchmark => mmclassification-0.24.1}/mmcls/models/utils/channel_shuffle.py (94%) create mode 100644 openmmlab_test/mmclassification-0.24.1/mmcls/models/utils/embed.py create mode 100644 openmmlab_test/mmclassification-0.24.1/mmcls/models/utils/helpers.py create mode 100644 openmmlab_test/mmclassification-0.24.1/mmcls/models/utils/inverted_residual.py create mode 100644 openmmlab_test/mmclassification-0.24.1/mmcls/models/utils/layer_scale.py rename openmmlab_test/{mmclassification-speed-benchmark => mmclassification-0.24.1}/mmcls/models/utils/make_divisible.py (95%) create mode 100644 openmmlab_test/mmclassification-0.24.1/mmcls/models/utils/position_encoding.py create mode 100644 openmmlab_test/mmclassification-0.24.1/mmcls/models/utils/se_layer.py create mode 100644 openmmlab_test/mmclassification-0.24.1/mmcls/utils/__init__.py rename openmmlab_test/{mmclassification-speed-benchmark => mmclassification-0.24.1}/mmcls/utils/collect_env.py (89%) create mode 100644 openmmlab_test/mmclassification-0.24.1/mmcls/utils/device.py create mode 100644 openmmlab_test/mmclassification-0.24.1/mmcls/utils/distribution.py create mode 100644 openmmlab_test/mmclassification-0.24.1/mmcls/utils/logger.py create mode 100644 openmmlab_test/mmclassification-0.24.1/mmcls/utils/setup_env.py rename openmmlab_test/{mmclassification-speed-benchmark => mmclassification-0.24.1}/mmcls/version.py (91%) create mode 100644 openmmlab_test/mmclassification-0.24.1/model-index.yml create mode 100644 openmmlab_test/mmclassification-0.24.1/mult_test.sh rename openmmlab_test/{mmclassification-speed-benchmark => mmclassification-0.24.1}/requirements.txt (100%) create mode 100644 openmmlab_test/mmclassification-0.24.1/requirements/docs.txt create mode 100644 openmmlab_test/mmclassification-0.24.1/requirements/mminstall.txt create mode 100644 openmmlab_test/mmclassification-0.24.1/requirements/optional.txt create mode 100644 openmmlab_test/mmclassification-0.24.1/requirements/readthedocs.txt create mode 100644 openmmlab_test/mmclassification-0.24.1/requirements/runtime.txt rename openmmlab_test/{mmclassification-speed-benchmark => mmclassification-0.24.1}/requirements/tests.txt (92%) create mode 100644 openmmlab_test/mmclassification-0.24.1/resources/mmcls-logo.png create mode 100644 openmmlab_test/mmclassification-0.24.1/setup.cfg create mode 100644 openmmlab_test/mmclassification-0.24.1/setup.py rename openmmlab_test/{mmclassification-speed-benchmark => mmclassification-0.24.1}/sing_test.sh (77%) create mode 100644 openmmlab_test/mmclassification-0.24.1/single_process.sh rename openmmlab_test/{mmclassification-speed-benchmark => mmclassification-0.24.1}/tests/data/color.jpg (100%) create mode 100644 openmmlab_test/mmclassification-0.24.1/tests/data/dataset/a/1.JPG create mode 100644 openmmlab_test/mmclassification-0.24.1/tests/data/dataset/ann.txt create mode 100644 openmmlab_test/mmclassification-0.24.1/tests/data/dataset/b/2.jpeg create mode 100644 openmmlab_test/mmclassification-0.24.1/tests/data/dataset/b/subb/3.jpg create mode 100644 openmmlab_test/mmclassification-0.24.1/tests/data/dataset/classes.txt rename openmmlab_test/{mmclassification-speed-benchmark => mmclassification-0.24.1}/tests/data/gray.jpg (100%) create mode 100644 openmmlab_test/mmclassification-0.24.1/tests/data/retinanet.py create mode 100644 openmmlab_test/mmclassification-0.24.1/tests/data/test.logjson create mode 100644 openmmlab_test/mmclassification-0.24.1/tests/test_data/test_builder.py create mode 100644 openmmlab_test/mmclassification-0.24.1/tests/test_data/test_datasets/test_common.py create mode 100644 openmmlab_test/mmclassification-0.24.1/tests/test_data/test_datasets/test_dataset_utils.py create mode 100644 openmmlab_test/mmclassification-0.24.1/tests/test_data/test_datasets/test_dataset_wrapper.py create mode 100644 openmmlab_test/mmclassification-0.24.1/tests/test_data/test_datasets/test_sampler.py rename openmmlab_test/{mmclassification-speed-benchmark/tests => mmclassification-0.24.1/tests/test_data}/test_pipelines/test_auto_augment.py (92%) rename openmmlab_test/{mmclassification-speed-benchmark/tests => mmclassification-0.24.1/tests/test_data}/test_pipelines/test_loading.py (94%) rename openmmlab_test/{mmclassification-speed-benchmark/tests => mmclassification-0.24.1/tests/test_data}/test_pipelines/test_transform.py (89%) create mode 100644 openmmlab_test/mmclassification-0.24.1/tests/test_downstream/test_mmdet_inference.py create mode 100644 openmmlab_test/mmclassification-0.24.1/tests/test_metrics/test_losses.py create mode 100644 openmmlab_test/mmclassification-0.24.1/tests/test_metrics/test_metrics.py create mode 100644 openmmlab_test/mmclassification-0.24.1/tests/test_metrics/test_utils.py create mode 100644 openmmlab_test/mmclassification-0.24.1/tests/test_models/test_backbones/__init__.py create mode 100644 openmmlab_test/mmclassification-0.24.1/tests/test_models/test_backbones/test_conformer.py create mode 100644 openmmlab_test/mmclassification-0.24.1/tests/test_models/test_backbones/test_convmixer.py create mode 100644 openmmlab_test/mmclassification-0.24.1/tests/test_models/test_backbones/test_convnext.py create mode 100644 openmmlab_test/mmclassification-0.24.1/tests/test_models/test_backbones/test_cspnet.py create mode 100644 openmmlab_test/mmclassification-0.24.1/tests/test_models/test_backbones/test_deit.py create mode 100644 openmmlab_test/mmclassification-0.24.1/tests/test_models/test_backbones/test_densenet.py create mode 100644 openmmlab_test/mmclassification-0.24.1/tests/test_models/test_backbones/test_efficientformer.py create mode 100644 openmmlab_test/mmclassification-0.24.1/tests/test_models/test_backbones/test_efficientnet.py create mode 100644 openmmlab_test/mmclassification-0.24.1/tests/test_models/test_backbones/test_hornet.py create mode 100644 openmmlab_test/mmclassification-0.24.1/tests/test_models/test_backbones/test_hrnet.py create mode 100644 openmmlab_test/mmclassification-0.24.1/tests/test_models/test_backbones/test_mlp_mixer.py rename openmmlab_test/{mmclassification-speed-benchmark/tests => mmclassification-0.24.1/tests/test_models}/test_backbones/test_mobilenet_v2.py (97%) create mode 100644 openmmlab_test/mmclassification-0.24.1/tests/test_models/test_backbones/test_mobilenet_v3.py create mode 100644 openmmlab_test/mmclassification-0.24.1/tests/test_models/test_backbones/test_mvit.py create mode 100644 openmmlab_test/mmclassification-0.24.1/tests/test_models/test_backbones/test_poolformer.py rename openmmlab_test/{mmclassification-speed-benchmark/tests => mmclassification-0.24.1/tests/test_models}/test_backbones/test_regnet.py (90%) create mode 100644 openmmlab_test/mmclassification-0.24.1/tests/test_models/test_backbones/test_repmlp.py create mode 100644 openmmlab_test/mmclassification-0.24.1/tests/test_models/test_backbones/test_repvgg.py create mode 100644 openmmlab_test/mmclassification-0.24.1/tests/test_models/test_backbones/test_res2net.py rename openmmlab_test/{mmclassification-speed-benchmark/tests => mmclassification-0.24.1/tests/test_models}/test_backbones/test_resnest.py (96%) rename openmmlab_test/{mmclassification-speed-benchmark/tests => mmclassification-0.24.1/tests/test_models}/test_backbones/test_resnet.py (91%) rename openmmlab_test/{mmclassification-speed-benchmark/tests => mmclassification-0.24.1/tests/test_models}/test_backbones/test_resnet_cifar.py (97%) rename openmmlab_test/{mmclassification-speed-benchmark/tests => mmclassification-0.24.1/tests/test_models}/test_backbones/test_resnext.py (93%) rename openmmlab_test/{mmclassification-speed-benchmark/tests => mmclassification-0.24.1/tests/test_models}/test_backbones/test_seresnet.py (98%) rename openmmlab_test/{mmclassification-speed-benchmark/tests => mmclassification-0.24.1/tests/test_models}/test_backbones/test_seresnext.py (94%) rename openmmlab_test/{mmclassification-speed-benchmark/tests => mmclassification-0.24.1/tests/test_models}/test_backbones/test_shufflenet_v1.py (97%) rename openmmlab_test/{mmclassification-speed-benchmark/tests => mmclassification-0.24.1/tests/test_models}/test_backbones/test_shufflenet_v2.py (97%) create mode 100644 openmmlab_test/mmclassification-0.24.1/tests/test_models/test_backbones/test_swin_transformer.py create mode 100644 openmmlab_test/mmclassification-0.24.1/tests/test_models/test_backbones/test_swin_transformer_v2.py create mode 100644 openmmlab_test/mmclassification-0.24.1/tests/test_models/test_backbones/test_t2t_vit.py create mode 100644 openmmlab_test/mmclassification-0.24.1/tests/test_models/test_backbones/test_timm_backbone.py create mode 100644 openmmlab_test/mmclassification-0.24.1/tests/test_models/test_backbones/test_tnt.py create mode 100644 openmmlab_test/mmclassification-0.24.1/tests/test_models/test_backbones/test_twins.py create mode 100644 openmmlab_test/mmclassification-0.24.1/tests/test_models/test_backbones/test_van.py rename openmmlab_test/{mmclassification-speed-benchmark/tests => mmclassification-0.24.1/tests/test_models}/test_backbones/test_vgg.py (95%) create mode 100644 openmmlab_test/mmclassification-0.24.1/tests/test_models/test_backbones/test_vision_transformer.py create mode 100644 openmmlab_test/mmclassification-0.24.1/tests/test_models/test_backbones/utils.py create mode 100644 openmmlab_test/mmclassification-0.24.1/tests/test_models/test_classifiers.py create mode 100644 openmmlab_test/mmclassification-0.24.1/tests/test_models/test_heads.py create mode 100644 openmmlab_test/mmclassification-0.24.1/tests/test_models/test_neck.py create mode 100644 openmmlab_test/mmclassification-0.24.1/tests/test_models/test_utils/test_attention.py create mode 100644 openmmlab_test/mmclassification-0.24.1/tests/test_models/test_utils/test_augment.py create mode 100644 openmmlab_test/mmclassification-0.24.1/tests/test_models/test_utils/test_embed.py create mode 100644 openmmlab_test/mmclassification-0.24.1/tests/test_models/test_utils/test_inverted_residual.py create mode 100644 openmmlab_test/mmclassification-0.24.1/tests/test_models/test_utils/test_layer_scale.py create mode 100644 openmmlab_test/mmclassification-0.24.1/tests/test_models/test_utils/test_misc.py create mode 100644 openmmlab_test/mmclassification-0.24.1/tests/test_models/test_utils/test_position_encoding.py create mode 100644 openmmlab_test/mmclassification-0.24.1/tests/test_models/test_utils/test_se.py rename openmmlab_test/{mmclassification-speed-benchmark/tests => mmclassification-0.24.1/tests/test_runtime}/test_eval_hook.py (89%) create mode 100644 openmmlab_test/mmclassification-0.24.1/tests/test_runtime/test_hooks.py create mode 100644 openmmlab_test/mmclassification-0.24.1/tests/test_runtime/test_num_class_hook.py create mode 100644 openmmlab_test/mmclassification-0.24.1/tests/test_runtime/test_optimizer.py create mode 100644 openmmlab_test/mmclassification-0.24.1/tests/test_runtime/test_preciseBN_hook.py create mode 100644 openmmlab_test/mmclassification-0.24.1/tests/test_utils/test_device.py create mode 100644 openmmlab_test/mmclassification-0.24.1/tests/test_utils/test_logger.py create mode 100644 openmmlab_test/mmclassification-0.24.1/tests/test_utils/test_setup_env.py create mode 100644 openmmlab_test/mmclassification-0.24.1/tests/test_utils/test_version_utils.py create mode 100644 openmmlab_test/mmclassification-0.24.1/tests/test_utils/test_visualization.py create mode 100644 openmmlab_test/mmclassification-0.24.1/tools/analysis_tools/analyze_logs.py rename openmmlab_test/{mmclassification-speed-benchmark/tools => mmclassification-0.24.1/tools/analysis_tools}/analyze_results.py (75%) create mode 100644 openmmlab_test/mmclassification-0.24.1/tools/analysis_tools/eval_metric.py rename openmmlab_test/{mmclassification-speed-benchmark/tools => mmclassification-0.24.1/tools/analysis_tools}/get_flops.py (91%) create mode 100644 openmmlab_test/mmclassification-0.24.1/tools/convert_models/efficientnet_to_mmcls.py create mode 100644 openmmlab_test/mmclassification-0.24.1/tools/convert_models/hornet2mmcls.py create mode 100644 openmmlab_test/mmclassification-0.24.1/tools/convert_models/mlpmixer_to_mmcls.py rename openmmlab_test/{mmclassification-speed-benchmark => mmclassification-0.24.1}/tools/convert_models/mobilenetv2_to_mmcls.py (98%) create mode 100644 openmmlab_test/mmclassification-0.24.1/tools/convert_models/publish_model.py create mode 100644 openmmlab_test/mmclassification-0.24.1/tools/convert_models/reparameterize_model.py create mode 100644 openmmlab_test/mmclassification-0.24.1/tools/convert_models/reparameterize_repvgg.py create mode 100644 openmmlab_test/mmclassification-0.24.1/tools/convert_models/repvgg_to_mmcls.py rename openmmlab_test/{mmclassification-speed-benchmark => mmclassification-0.24.1}/tools/convert_models/shufflenetv2_to_mmcls.py (98%) create mode 100644 openmmlab_test/mmclassification-0.24.1/tools/convert_models/torchvision_to_mmcls.py create mode 100644 openmmlab_test/mmclassification-0.24.1/tools/convert_models/twins2mmcls.py create mode 100644 openmmlab_test/mmclassification-0.24.1/tools/convert_models/van2mmcls.py rename openmmlab_test/{mmclassification-speed-benchmark => mmclassification-0.24.1}/tools/convert_models/vgg_to_mmcls.py (98%) rename openmmlab_test/{mmclassification-speed-benchmark => mmclassification-0.24.1}/tools/deployment/mmcls2torchserve.py (98%) rename openmmlab_test/{mmclassification-speed-benchmark => mmclassification-0.24.1}/tools/deployment/mmcls_handler.py (97%) rename openmmlab_test/{mmclassification-speed-benchmark => mmclassification-0.24.1}/tools/deployment/onnx2tensorrt.py (86%) create mode 100644 openmmlab_test/mmclassification-0.24.1/tools/deployment/pytorch2mlmodel.py rename openmmlab_test/{mmclassification-speed-benchmark => mmclassification-0.24.1}/tools/deployment/pytorch2onnx.py (81%) rename openmmlab_test/{mmclassification-speed-benchmark => mmclassification-0.24.1}/tools/deployment/pytorch2torchscript.py (97%) create mode 100644 openmmlab_test/mmclassification-0.24.1/tools/deployment/test.py create mode 100644 openmmlab_test/mmclassification-0.24.1/tools/deployment/test_torchserver.py create mode 100644 openmmlab_test/mmclassification-0.24.1/tools/dist_test.sh create mode 100644 openmmlab_test/mmclassification-0.24.1/tools/dist_train.sh create mode 100644 openmmlab_test/mmclassification-0.24.1/tools/kfold-cross-valid.py create mode 100644 openmmlab_test/mmclassification-0.24.1/tools/misc/print_config.py create mode 100644 openmmlab_test/mmclassification-0.24.1/tools/misc/verify_dataset.py rename openmmlab_test/{mmclassification-speed-benchmark => mmclassification-0.24.1}/tools/slurm_test.sh (100%) rename openmmlab_test/{mmclassification-speed-benchmark => mmclassification-0.24.1}/tools/slurm_train.sh (100%) create mode 100644 openmmlab_test/mmclassification-0.24.1/tools/test.py create mode 100644 openmmlab_test/mmclassification-0.24.1/tools/train.py create mode 100644 openmmlab_test/mmclassification-0.24.1/tools/visualizations/vis_cam.py create mode 100644 openmmlab_test/mmclassification-0.24.1/tools/visualizations/vis_lr.py create mode 100644 openmmlab_test/mmclassification-0.24.1/tools/visualizations/vis_pipeline.py create mode 100644 openmmlab_test/mmclassification-0.24.1/train.md delete mode 100644 openmmlab_test/mmclassification-speed-benchmark/.github/CONTRIBUTING.md delete mode 100644 openmmlab_test/mmclassification-speed-benchmark/.github/workflows/build.yml delete mode 100644 openmmlab_test/mmclassification-speed-benchmark/.github/workflows/deploy.yml delete mode 100644 openmmlab_test/mmclassification-speed-benchmark/.gitignore delete mode 100644 openmmlab_test/mmclassification-speed-benchmark/.idea/.gitignore delete mode 100644 openmmlab_test/mmclassification-speed-benchmark/.idea/.name delete mode 100644 openmmlab_test/mmclassification-speed-benchmark/.idea/inspectionProfiles/profiles_settings.xml delete mode 100644 openmmlab_test/mmclassification-speed-benchmark/.idea/mmclassification-speed-benchmark.iml delete mode 100644 openmmlab_test/mmclassification-speed-benchmark/.idea/modules.xml delete mode 100644 openmmlab_test/mmclassification-speed-benchmark/.idea/vcs.xml delete mode 100644 openmmlab_test/mmclassification-speed-benchmark/.pre-commit-config.yaml delete mode 100644 openmmlab_test/mmclassification-speed-benchmark/.readthedocs.yml delete mode 100644 openmmlab_test/mmclassification-speed-benchmark/MANIFEST.in delete mode 100644 openmmlab_test/mmclassification-speed-benchmark/README.md delete mode 100644 openmmlab_test/mmclassification-speed-benchmark/README_zh-CN.md delete mode 100644 openmmlab_test/mmclassification-speed-benchmark/configs/_base_/datasets/imagenet_bs32.py delete mode 100644 openmmlab_test/mmclassification-speed-benchmark/configs/_base_/models/AlexNet_1x.py delete mode 100644 openmmlab_test/mmclassification-speed-benchmark/configs/_base_/models/resnest101.py delete mode 100644 openmmlab_test/mmclassification-speed-benchmark/configs/_base_/models/resnest200.py delete mode 100644 openmmlab_test/mmclassification-speed-benchmark/configs/_base_/models/resnest269.py delete mode 100644 openmmlab_test/mmclassification-speed-benchmark/configs/_base_/models/resnest50.py delete mode 100644 openmmlab_test/mmclassification-speed-benchmark/configs/_base_/models/vit_base_patch16_224_finetune.py delete mode 100644 openmmlab_test/mmclassification-speed-benchmark/configs/_base_/models/vit_base_patch16_224_pretrain.py delete mode 100644 openmmlab_test/mmclassification-speed-benchmark/configs/_base_/models/vit_base_patch16_384_finetune.py delete mode 100644 openmmlab_test/mmclassification-speed-benchmark/configs/_base_/models/vit_base_patch32_384_finetune.py delete mode 100644 openmmlab_test/mmclassification-speed-benchmark/configs/_base_/models/vit_large_patch16_224_finetune.py delete mode 100644 openmmlab_test/mmclassification-speed-benchmark/configs/_base_/models/vit_large_patch16_384_finetune.py delete mode 100644 openmmlab_test/mmclassification-speed-benchmark/configs/_base_/models/vit_large_patch32_384_finetune.py delete mode 100644 openmmlab_test/mmclassification-speed-benchmark/configs/_base_/schedules/imagenet_bs4096_AdamW.py delete mode 100644 openmmlab_test/mmclassification-speed-benchmark/configs/fp16/README.md delete mode 100644 openmmlab_test/mmclassification-speed-benchmark/configs/fp16/metafile.yml delete mode 100644 openmmlab_test/mmclassification-speed-benchmark/configs/fp16/resnet152_b32x8_fp16_imagenet.py delete mode 100644 openmmlab_test/mmclassification-speed-benchmark/configs/fp16/resnet18_b32x8_fp16_imagenet.py delete mode 100644 openmmlab_test/mmclassification-speed-benchmark/configs/fp16/resnet34_b32x8_fp16_imagenet.py delete mode 100644 openmmlab_test/mmclassification-speed-benchmark/configs/fp16/resnet50_b32x8_fp16_dynamic_imagenet.py delete mode 100644 openmmlab_test/mmclassification-speed-benchmark/configs/fp16/resnet50_b32x8_fp16_imagenet.py delete mode 100644 openmmlab_test/mmclassification-speed-benchmark/configs/fp16/resnext50_32x4d_b32x8_fp16_imagenet.py delete mode 100644 openmmlab_test/mmclassification-speed-benchmark/configs/fp16/seresnet50_b32x8_fp16_imagenet.py delete mode 100644 openmmlab_test/mmclassification-speed-benchmark/configs/fp16/shufflenet_v1_1x_b64x16_linearlr_bn_nowd_fp16_imagenet.py delete mode 100644 openmmlab_test/mmclassification-speed-benchmark/configs/fp16/shufflenet_v2_1x_b64x16_linearlr_bn_nowd_fp16_imagenet.py delete mode 100644 openmmlab_test/mmclassification-speed-benchmark/configs/fp16/vgg11_b32x8_fp16_imagenet.py delete mode 100644 openmmlab_test/mmclassification-speed-benchmark/configs/lenet/README.md delete mode 100644 openmmlab_test/mmclassification-speed-benchmark/configs/mobilenet_v2/README.md delete mode 100644 openmmlab_test/mmclassification-speed-benchmark/configs/mobilenet_v2/metafile.yml delete mode 100644 openmmlab_test/mmclassification-speed-benchmark/configs/mobilenet_v2/mobilenet_v2_b32x8_imagenet.py delete mode 100644 openmmlab_test/mmclassification-speed-benchmark/configs/regnet/README.md delete mode 100644 openmmlab_test/mmclassification-speed-benchmark/configs/regnet/regnetx_1.6gf_b32x8_imagenet.py delete mode 100644 openmmlab_test/mmclassification-speed-benchmark/configs/regnet/regnetx_12gf_b32x8_imagenet.py delete mode 100644 openmmlab_test/mmclassification-speed-benchmark/configs/regnet/regnetx_3.2gf_b32x8_imagenet.py delete mode 100644 openmmlab_test/mmclassification-speed-benchmark/configs/regnet/regnetx_4.0gf_b32x8_imagenet.py delete mode 100644 openmmlab_test/mmclassification-speed-benchmark/configs/regnet/regnetx_400mf_b32x8_imagenet.py delete mode 100644 openmmlab_test/mmclassification-speed-benchmark/configs/regnet/regnetx_6.4gf_b32x8_imagenet.py delete mode 100644 openmmlab_test/mmclassification-speed-benchmark/configs/regnet/regnetx_8.0gf_b32x8_imagenet.py delete mode 100644 openmmlab_test/mmclassification-speed-benchmark/configs/regnet/regnetx_800mf_b32x8_imagenet.py delete mode 100644 openmmlab_test/mmclassification-speed-benchmark/configs/resnet/README.md delete mode 100644 openmmlab_test/mmclassification-speed-benchmark/configs/resnet/metafile.yml delete mode 100644 openmmlab_test/mmclassification-speed-benchmark/configs/resnet/resnet50_b32x8_imagenet.py delete mode 100644 openmmlab_test/mmclassification-speed-benchmark/configs/resnet/resnet50_b64x32_warmup_label_smooth_imagenet.py delete mode 100644 openmmlab_test/mmclassification-speed-benchmark/configs/resnext/README.md delete mode 100644 openmmlab_test/mmclassification-speed-benchmark/configs/resnext/metafile.yml delete mode 100644 openmmlab_test/mmclassification-speed-benchmark/configs/seresnet/README.md delete mode 100644 openmmlab_test/mmclassification-speed-benchmark/configs/seresnet/metafile.yml delete mode 100644 openmmlab_test/mmclassification-speed-benchmark/configs/seresnext/README.md delete mode 100644 openmmlab_test/mmclassification-speed-benchmark/configs/shufflenet_v1/README.md delete mode 100644 openmmlab_test/mmclassification-speed-benchmark/configs/shufflenet_v1/metafile.yml delete mode 100644 openmmlab_test/mmclassification-speed-benchmark/configs/shufflenet_v2/README.md delete mode 100644 openmmlab_test/mmclassification-speed-benchmark/configs/shufflenet_v2/metafile.yml delete mode 100644 openmmlab_test/mmclassification-speed-benchmark/configs/shufflenet_v2/shufflenet_v2_1x_b64x16_linearlr_bn_nowd_imagenet.py delete mode 100644 openmmlab_test/mmclassification-speed-benchmark/configs/speed_test/AlexNet.py delete mode 100644 openmmlab_test/mmclassification-speed-benchmark/configs/speed_test/datasets/imagenet_bs32.py delete mode 100644 openmmlab_test/mmclassification-speed-benchmark/configs/speed_test/datasets/imagenet_bs64.py delete mode 100644 openmmlab_test/mmclassification-speed-benchmark/configs/speed_test/mobilenet_v2_b32x8_fp16_imagenet.py delete mode 100644 openmmlab_test/mmclassification-speed-benchmark/configs/speed_test/mobilenet_v2_b32x8_imagenet.py delete mode 100644 openmmlab_test/mmclassification-speed-benchmark/configs/speed_test/resnet152_b32x8_fp16_imagenet.py delete mode 100644 openmmlab_test/mmclassification-speed-benchmark/configs/speed_test/resnet152_b32x8_imagenet.py delete mode 100644 openmmlab_test/mmclassification-speed-benchmark/configs/speed_test/resnet18_b32x8_fp16_imagenet.py delete mode 100644 openmmlab_test/mmclassification-speed-benchmark/configs/speed_test/resnet18_b32x8_imagenet.py delete mode 100644 openmmlab_test/mmclassification-speed-benchmark/configs/speed_test/resnet34_b32x8_fp16_imagenet.py delete mode 100644 openmmlab_test/mmclassification-speed-benchmark/configs/speed_test/resnet34_b32x8_imagenet.py delete mode 100644 openmmlab_test/mmclassification-speed-benchmark/configs/speed_test/resnet50_b32x8_fp16_imagenet.py delete mode 100644 openmmlab_test/mmclassification-speed-benchmark/configs/speed_test/resnet50_b32x8_imagenet.py delete mode 100644 openmmlab_test/mmclassification-speed-benchmark/configs/speed_test/resnext50_32x4d_b32x8_fp16_imagenet.py delete mode 100644 openmmlab_test/mmclassification-speed-benchmark/configs/speed_test/resnext50_32x4d_b32x8_imagenet.py delete mode 100644 openmmlab_test/mmclassification-speed-benchmark/configs/speed_test/seresnet50_b32x8_fp16_imagenet.py delete mode 100644 openmmlab_test/mmclassification-speed-benchmark/configs/speed_test/seresnet50_b32x8_imagenet.py delete mode 100644 openmmlab_test/mmclassification-speed-benchmark/configs/speed_test/shufflenet_v1_1x_b64x16_linearlr_bn_nowd_fp16_imagenet.py delete mode 100644 openmmlab_test/mmclassification-speed-benchmark/configs/speed_test/shufflenet_v1_1x_b64x16_linearlr_bn_nowd_imagenet.py delete mode 100644 openmmlab_test/mmclassification-speed-benchmark/configs/speed_test/shufflenet_v2_1x_b64x16_linearlr_bn_nowd_fp16_imagenet.py delete mode 100644 openmmlab_test/mmclassification-speed-benchmark/configs/speed_test/shufflenet_v2_1x_b64x16_linearlr_bn_nowd_imagenet.py delete mode 100644 openmmlab_test/mmclassification-speed-benchmark/configs/speed_test/vgg11_b32x8_fp16_imagenet.py delete mode 100644 openmmlab_test/mmclassification-speed-benchmark/configs/speed_test/vgg11_b32x8_imagenet.py delete mode 100644 openmmlab_test/mmclassification-speed-benchmark/configs/vgg/README.md delete mode 100644 openmmlab_test/mmclassification-speed-benchmark/configs/vgg/metafile.yml delete mode 100644 openmmlab_test/mmclassification-speed-benchmark/configs/vgg/vgg16_b32x8_imagenet.py delete mode 100644 openmmlab_test/mmclassification-speed-benchmark/configs/vision_transformer/vit_base_patch16_224_finetune_imagenet.py delete mode 100644 openmmlab_test/mmclassification-speed-benchmark/configs/vision_transformer/vit_base_patch16_224_pretrain_imagenet.py delete mode 100644 openmmlab_test/mmclassification-speed-benchmark/configs/vision_transformer/vit_base_patch16_384_finetune_imagenet.py delete mode 100644 openmmlab_test/mmclassification-speed-benchmark/configs/vision_transformer/vit_base_patch32_384_finetune_imagenet.py delete mode 100644 openmmlab_test/mmclassification-speed-benchmark/configs/vision_transformer/vit_large_patch16_224_finetune_imagenet.py delete mode 100644 openmmlab_test/mmclassification-speed-benchmark/configs/vision_transformer/vit_large_patch16_384_finetune_imagenet.py delete mode 100644 openmmlab_test/mmclassification-speed-benchmark/configs/vision_transformer/vit_large_patch32_384_finetune_imagenet.py delete mode 100644 openmmlab_test/mmclassification-speed-benchmark/demo/image_demo.py delete mode 100644 openmmlab_test/mmclassification-speed-benchmark/docker/serve/Dockerfile delete mode 100644 openmmlab_test/mmclassification-speed-benchmark/docs/changelog.md delete mode 100644 openmmlab_test/mmclassification-speed-benchmark/docs/conf.py delete mode 100644 openmmlab_test/mmclassification-speed-benchmark/docs/getting_started.md delete mode 100644 openmmlab_test/mmclassification-speed-benchmark/docs/imgs/qq_group_qrcode.jpg delete mode 100644 openmmlab_test/mmclassification-speed-benchmark/docs/index.rst delete mode 100644 openmmlab_test/mmclassification-speed-benchmark/docs/install.md delete mode 100644 openmmlab_test/mmclassification-speed-benchmark/docs/model_zoo.md delete mode 100644 openmmlab_test/mmclassification-speed-benchmark/docs/stat.py delete mode 100644 openmmlab_test/mmclassification-speed-benchmark/docs/switch_language.md delete mode 100644 openmmlab_test/mmclassification-speed-benchmark/docs/tutorials/MMClassification_Tutorial.ipynb delete mode 100644 openmmlab_test/mmclassification-speed-benchmark/docs/tutorials/data_pipeline.md delete mode 100644 openmmlab_test/mmclassification-speed-benchmark/docs/tutorials/finetune.md delete mode 100644 openmmlab_test/mmclassification-speed-benchmark/docs/tutorials/model_serving.md delete mode 100644 openmmlab_test/mmclassification-speed-benchmark/docs/tutorials/new_dataset.md delete mode 100644 openmmlab_test/mmclassification-speed-benchmark/docs/tutorials/new_modules.md delete mode 100644 openmmlab_test/mmclassification-speed-benchmark/docs/tutorials/onnx2tensorrt.md delete mode 100644 openmmlab_test/mmclassification-speed-benchmark/docs/tutorials/pytorch2onnx.md delete mode 100644 openmmlab_test/mmclassification-speed-benchmark/docs/tutorials/pytorch2torchscript.md delete mode 100644 openmmlab_test/mmclassification-speed-benchmark/docs_zh-CN/conf.py delete mode 100644 openmmlab_test/mmclassification-speed-benchmark/docs_zh-CN/getting_started.md delete mode 100644 openmmlab_test/mmclassification-speed-benchmark/docs_zh-CN/index.rst delete mode 100644 openmmlab_test/mmclassification-speed-benchmark/docs_zh-CN/install.md delete mode 100644 openmmlab_test/mmclassification-speed-benchmark/docs_zh-CN/stat.py delete mode 100644 openmmlab_test/mmclassification-speed-benchmark/docs_zh-CN/switch_language.md delete mode 100644 openmmlab_test/mmclassification-speed-benchmark/docs_zh-CN/tutorials/MMClassification_Tutorial.ipynb delete mode 100644 openmmlab_test/mmclassification-speed-benchmark/docs_zh-CN/tutorials/data_pipeline.md delete mode 100644 openmmlab_test/mmclassification-speed-benchmark/docs_zh-CN/tutorials/finetune.md delete mode 100644 openmmlab_test/mmclassification-speed-benchmark/docs_zh-CN/tutorials/new_dataset.md delete mode 100644 openmmlab_test/mmclassification-speed-benchmark/docs_zh-CN/tutorials/new_modules.md delete mode 100644 openmmlab_test/mmclassification-speed-benchmark/docs_zh-CN/tutorials/onnx2tensorrt.md delete mode 100644 openmmlab_test/mmclassification-speed-benchmark/docs_zh-CN/tutorials/pytorch2onnx.md delete mode 100644 openmmlab_test/mmclassification-speed-benchmark/image/train/1659061854685.png delete mode 100644 openmmlab_test/mmclassification-speed-benchmark/image/train/1659062180839.png delete mode 100644 openmmlab_test/mmclassification-speed-benchmark/image/train/1659064222206.png delete mode 100644 openmmlab_test/mmclassification-speed-benchmark/image/train/1659064427635.png delete mode 100644 openmmlab_test/mmclassification-speed-benchmark/image/train/1659064905610.png delete mode 100644 openmmlab_test/mmclassification-speed-benchmark/image/train/1659064925468.png delete mode 100644 openmmlab_test/mmclassification-speed-benchmark/image/train/1659065333529.png delete mode 100644 openmmlab_test/mmclassification-speed-benchmark/image/train/1659065659769.png delete mode 100644 openmmlab_test/mmclassification-speed-benchmark/image/train/1659065746317.png delete mode 100644 openmmlab_test/mmclassification-speed-benchmark/image/train/1659066120939.png delete mode 100644 openmmlab_test/mmclassification-speed-benchmark/image/train/1659067079718.png delete mode 100644 openmmlab_test/mmclassification-speed-benchmark/images/1657694041240.png delete mode 100644 openmmlab_test/mmclassification-speed-benchmark/images/1657694072163.png delete mode 100644 openmmlab_test/mmclassification-speed-benchmark/images/2022-07-13-14-06-28.png delete mode 100644 openmmlab_test/mmclassification-speed-benchmark/images/2022-07-13-14-07-43.png delete mode 100644 openmmlab_test/mmclassification-speed-benchmark/mmcls.egg-info/PKG-INFO delete mode 100644 openmmlab_test/mmclassification-speed-benchmark/mmcls.egg-info/SOURCES.txt delete mode 100644 openmmlab_test/mmclassification-speed-benchmark/mmcls.egg-info/dependency_links.txt delete mode 100644 openmmlab_test/mmclassification-speed-benchmark/mmcls.egg-info/not-zip-safe delete mode 100644 openmmlab_test/mmclassification-speed-benchmark/mmcls.egg-info/requires.txt delete mode 100644 openmmlab_test/mmclassification-speed-benchmark/mmcls.egg-info/top_level.txt delete mode 100644 openmmlab_test/mmclassification-speed-benchmark/mmcls/__init__.py delete mode 100644 openmmlab_test/mmclassification-speed-benchmark/mmcls/__pycache__/__init__.cpython-36.pyc delete mode 100644 openmmlab_test/mmclassification-speed-benchmark/mmcls/__pycache__/version.cpython-36.pyc delete mode 100644 openmmlab_test/mmclassification-speed-benchmark/mmcls/apis/__init__.py delete mode 100644 openmmlab_test/mmclassification-speed-benchmark/mmcls/apis/__pycache__/__init__.cpython-36.pyc delete mode 100644 openmmlab_test/mmclassification-speed-benchmark/mmcls/apis/__pycache__/inference.cpython-36.pyc delete mode 100644 openmmlab_test/mmclassification-speed-benchmark/mmcls/apis/__pycache__/test.cpython-36.pyc delete mode 100644 openmmlab_test/mmclassification-speed-benchmark/mmcls/apis/__pycache__/train.cpython-36.pyc delete mode 100644 openmmlab_test/mmclassification-speed-benchmark/mmcls/apis/test.py delete mode 100644 openmmlab_test/mmclassification-speed-benchmark/mmcls/apis/train.py delete mode 100644 openmmlab_test/mmclassification-speed-benchmark/mmcls/core/__init__.py delete mode 100644 openmmlab_test/mmclassification-speed-benchmark/mmcls/core/__pycache__/__init__.cpython-36.pyc delete mode 100644 openmmlab_test/mmclassification-speed-benchmark/mmcls/core/evaluation/__init__.py delete mode 100644 openmmlab_test/mmclassification-speed-benchmark/mmcls/core/evaluation/__pycache__/__init__.cpython-36.pyc delete mode 100644 openmmlab_test/mmclassification-speed-benchmark/mmcls/core/evaluation/__pycache__/eval_hooks.cpython-36.pyc delete mode 100644 openmmlab_test/mmclassification-speed-benchmark/mmcls/core/evaluation/__pycache__/eval_metrics.cpython-36.pyc delete mode 100644 openmmlab_test/mmclassification-speed-benchmark/mmcls/core/evaluation/__pycache__/mean_ap.cpython-36.pyc delete mode 100644 openmmlab_test/mmclassification-speed-benchmark/mmcls/core/evaluation/__pycache__/multilabel_eval_metrics.cpython-36.pyc delete mode 100644 openmmlab_test/mmclassification-speed-benchmark/mmcls/core/evaluation/eval_hooks.py delete mode 100644 openmmlab_test/mmclassification-speed-benchmark/mmcls/core/evaluation/eval_metrics.py delete mode 100644 openmmlab_test/mmclassification-speed-benchmark/mmcls/core/export/__init__.py delete mode 100644 openmmlab_test/mmclassification-speed-benchmark/mmcls/core/export/test.py delete mode 100644 openmmlab_test/mmclassification-speed-benchmark/mmcls/core/fp16/__init__.py delete mode 100644 openmmlab_test/mmclassification-speed-benchmark/mmcls/core/fp16/__pycache__/__init__.cpython-36.pyc delete mode 100644 openmmlab_test/mmclassification-speed-benchmark/mmcls/core/fp16/__pycache__/decorators.cpython-36.pyc delete mode 100644 openmmlab_test/mmclassification-speed-benchmark/mmcls/core/fp16/__pycache__/hooks.cpython-36.pyc delete mode 100644 openmmlab_test/mmclassification-speed-benchmark/mmcls/core/fp16/__pycache__/utils.cpython-36.pyc delete mode 100644 openmmlab_test/mmclassification-speed-benchmark/mmcls/core/fp16/decorators.py delete mode 100644 openmmlab_test/mmclassification-speed-benchmark/mmcls/core/fp16/hooks.py delete mode 100644 openmmlab_test/mmclassification-speed-benchmark/mmcls/core/fp16/utils.py delete mode 100644 openmmlab_test/mmclassification-speed-benchmark/mmcls/core/utils/__init__.py delete mode 100644 openmmlab_test/mmclassification-speed-benchmark/mmcls/core/utils/__pycache__/__init__.cpython-36.pyc delete mode 100644 openmmlab_test/mmclassification-speed-benchmark/mmcls/core/utils/__pycache__/dist_utils.cpython-36.pyc delete mode 100644 openmmlab_test/mmclassification-speed-benchmark/mmcls/core/utils/__pycache__/misc.cpython-36.pyc delete mode 100644 openmmlab_test/mmclassification-speed-benchmark/mmcls/core/utils/dist_utils.py delete mode 100644 openmmlab_test/mmclassification-speed-benchmark/mmcls/datasets/__init__.py delete mode 100644 openmmlab_test/mmclassification-speed-benchmark/mmcls/datasets/__pycache__/__init__.cpython-36.pyc delete mode 100644 openmmlab_test/mmclassification-speed-benchmark/mmcls/datasets/__pycache__/base_dataset.cpython-36.pyc delete mode 100644 openmmlab_test/mmclassification-speed-benchmark/mmcls/datasets/__pycache__/builder.cpython-36.pyc delete mode 100644 openmmlab_test/mmclassification-speed-benchmark/mmcls/datasets/__pycache__/cifar.cpython-36.pyc delete mode 100644 openmmlab_test/mmclassification-speed-benchmark/mmcls/datasets/__pycache__/dataset_wrappers.cpython-36.pyc delete mode 100644 openmmlab_test/mmclassification-speed-benchmark/mmcls/datasets/__pycache__/dummy.cpython-36.pyc delete mode 100644 openmmlab_test/mmclassification-speed-benchmark/mmcls/datasets/__pycache__/imagenet.cpython-36.pyc delete mode 100644 openmmlab_test/mmclassification-speed-benchmark/mmcls/datasets/__pycache__/mnist.cpython-36.pyc delete mode 100644 openmmlab_test/mmclassification-speed-benchmark/mmcls/datasets/__pycache__/multi_label.cpython-36.pyc delete mode 100644 openmmlab_test/mmclassification-speed-benchmark/mmcls/datasets/__pycache__/utils.cpython-36.pyc delete mode 100644 openmmlab_test/mmclassification-speed-benchmark/mmcls/datasets/__pycache__/voc.cpython-36.pyc delete mode 100644 openmmlab_test/mmclassification-speed-benchmark/mmcls/datasets/builder.py delete mode 100644 openmmlab_test/mmclassification-speed-benchmark/mmcls/datasets/dataset_wrappers.py delete mode 100644 openmmlab_test/mmclassification-speed-benchmark/mmcls/datasets/dummy.py delete mode 100644 openmmlab_test/mmclassification-speed-benchmark/mmcls/datasets/pipelines/__init__.py delete mode 100644 openmmlab_test/mmclassification-speed-benchmark/mmcls/datasets/pipelines/__pycache__/__init__.cpython-36.pyc delete mode 100644 openmmlab_test/mmclassification-speed-benchmark/mmcls/datasets/pipelines/__pycache__/auto_augment.cpython-36.pyc delete mode 100644 openmmlab_test/mmclassification-speed-benchmark/mmcls/datasets/pipelines/__pycache__/compose.cpython-36.pyc delete mode 100644 openmmlab_test/mmclassification-speed-benchmark/mmcls/datasets/pipelines/__pycache__/formating.cpython-36.pyc delete mode 100644 openmmlab_test/mmclassification-speed-benchmark/mmcls/datasets/pipelines/__pycache__/loading.cpython-36.pyc delete mode 100644 openmmlab_test/mmclassification-speed-benchmark/mmcls/datasets/pipelines/__pycache__/transforms.cpython-36.pyc delete mode 100644 openmmlab_test/mmclassification-speed-benchmark/mmcls/datasets/pipelines/formating.py delete mode 100644 openmmlab_test/mmclassification-speed-benchmark/mmcls/datasets/samplers/__init__.py delete mode 100644 openmmlab_test/mmclassification-speed-benchmark/mmcls/datasets/samplers/__pycache__/__init__.cpython-36.pyc delete mode 100644 openmmlab_test/mmclassification-speed-benchmark/mmcls/datasets/samplers/__pycache__/distributed_sampler.cpython-36.pyc delete mode 100644 openmmlab_test/mmclassification-speed-benchmark/mmcls/datasets/samplers/distributed_sampler.py delete mode 100644 openmmlab_test/mmclassification-speed-benchmark/mmcls/datasets/utils.py delete mode 100644 openmmlab_test/mmclassification-speed-benchmark/mmcls/datasets/voc.py delete mode 100644 openmmlab_test/mmclassification-speed-benchmark/mmcls/models/__init__.py delete mode 100644 openmmlab_test/mmclassification-speed-benchmark/mmcls/models/__pycache__/__init__.cpython-36.pyc delete mode 100644 openmmlab_test/mmclassification-speed-benchmark/mmcls/models/__pycache__/builder.cpython-36.pyc delete mode 100644 openmmlab_test/mmclassification-speed-benchmark/mmcls/models/backbones/__init__.py delete mode 100644 openmmlab_test/mmclassification-speed-benchmark/mmcls/models/backbones/__pycache__/__init__.cpython-36.pyc delete mode 100644 openmmlab_test/mmclassification-speed-benchmark/mmcls/models/backbones/__pycache__/alexnet.cpython-36.pyc delete mode 100644 openmmlab_test/mmclassification-speed-benchmark/mmcls/models/backbones/__pycache__/base_backbone.cpython-36.pyc delete mode 100644 openmmlab_test/mmclassification-speed-benchmark/mmcls/models/backbones/__pycache__/lenet.cpython-36.pyc delete mode 100644 openmmlab_test/mmclassification-speed-benchmark/mmcls/models/backbones/__pycache__/mobilenet_v2.cpython-36.pyc delete mode 100644 openmmlab_test/mmclassification-speed-benchmark/mmcls/models/backbones/__pycache__/mobilenet_v3.cpython-36.pyc delete mode 100644 openmmlab_test/mmclassification-speed-benchmark/mmcls/models/backbones/__pycache__/regnet.cpython-36.pyc delete mode 100644 openmmlab_test/mmclassification-speed-benchmark/mmcls/models/backbones/__pycache__/resnest.cpython-36.pyc delete mode 100644 openmmlab_test/mmclassification-speed-benchmark/mmcls/models/backbones/__pycache__/resnet.cpython-36.pyc delete mode 100644 openmmlab_test/mmclassification-speed-benchmark/mmcls/models/backbones/__pycache__/resnet_cifar.cpython-36.pyc delete mode 100644 openmmlab_test/mmclassification-speed-benchmark/mmcls/models/backbones/__pycache__/resnext.cpython-36.pyc delete mode 100644 openmmlab_test/mmclassification-speed-benchmark/mmcls/models/backbones/__pycache__/seresnet.cpython-36.pyc delete mode 100644 openmmlab_test/mmclassification-speed-benchmark/mmcls/models/backbones/__pycache__/seresnext.cpython-36.pyc delete mode 100644 openmmlab_test/mmclassification-speed-benchmark/mmcls/models/backbones/__pycache__/shufflenet_v1.cpython-36.pyc delete mode 100644 openmmlab_test/mmclassification-speed-benchmark/mmcls/models/backbones/__pycache__/shufflenet_v2.cpython-36.pyc delete mode 100644 openmmlab_test/mmclassification-speed-benchmark/mmcls/models/backbones/__pycache__/vgg.cpython-36.pyc delete mode 100644 openmmlab_test/mmclassification-speed-benchmark/mmcls/models/backbones/__pycache__/vision_transformer.cpython-36.pyc delete mode 100644 openmmlab_test/mmclassification-speed-benchmark/mmcls/models/backbones/mobilenet_v3.py delete mode 100644 openmmlab_test/mmclassification-speed-benchmark/mmcls/models/backbones/vision_transformer.py delete mode 100644 openmmlab_test/mmclassification-speed-benchmark/mmcls/models/builder.py delete mode 100644 openmmlab_test/mmclassification-speed-benchmark/mmcls/models/classifiers/__init__.py delete mode 100644 openmmlab_test/mmclassification-speed-benchmark/mmcls/models/classifiers/__pycache__/__init__.cpython-36.pyc delete mode 100644 openmmlab_test/mmclassification-speed-benchmark/mmcls/models/classifiers/__pycache__/base.cpython-36.pyc delete mode 100644 openmmlab_test/mmclassification-speed-benchmark/mmcls/models/classifiers/__pycache__/image.cpython-36.pyc delete mode 100644 openmmlab_test/mmclassification-speed-benchmark/mmcls/models/classifiers/base.py delete mode 100644 openmmlab_test/mmclassification-speed-benchmark/mmcls/models/classifiers/image.py delete mode 100644 openmmlab_test/mmclassification-speed-benchmark/mmcls/models/heads/__init__.py delete mode 100644 openmmlab_test/mmclassification-speed-benchmark/mmcls/models/heads/__pycache__/__init__.cpython-36.pyc delete mode 100644 openmmlab_test/mmclassification-speed-benchmark/mmcls/models/heads/__pycache__/base_head.cpython-36.pyc delete mode 100644 openmmlab_test/mmclassification-speed-benchmark/mmcls/models/heads/__pycache__/cls_head.cpython-36.pyc delete mode 100644 openmmlab_test/mmclassification-speed-benchmark/mmcls/models/heads/__pycache__/linear_head.cpython-36.pyc delete mode 100644 openmmlab_test/mmclassification-speed-benchmark/mmcls/models/heads/__pycache__/multi_label_head.cpython-36.pyc delete mode 100644 openmmlab_test/mmclassification-speed-benchmark/mmcls/models/heads/__pycache__/multi_label_linear_head.cpython-36.pyc delete mode 100644 openmmlab_test/mmclassification-speed-benchmark/mmcls/models/heads/__pycache__/vision_transformer_head.cpython-36.pyc delete mode 100644 openmmlab_test/mmclassification-speed-benchmark/mmcls/models/heads/cls_head.py delete mode 100644 openmmlab_test/mmclassification-speed-benchmark/mmcls/models/heads/linear_head.py delete mode 100644 openmmlab_test/mmclassification-speed-benchmark/mmcls/models/heads/multi_label_head.py delete mode 100644 openmmlab_test/mmclassification-speed-benchmark/mmcls/models/heads/multi_label_linear_head.py delete mode 100644 openmmlab_test/mmclassification-speed-benchmark/mmcls/models/heads/vision_transformer_head.py delete mode 100644 openmmlab_test/mmclassification-speed-benchmark/mmcls/models/losses/__init__.py delete mode 100644 openmmlab_test/mmclassification-speed-benchmark/mmcls/models/losses/__pycache__/__init__.cpython-36.pyc delete mode 100644 openmmlab_test/mmclassification-speed-benchmark/mmcls/models/losses/__pycache__/accuracy.cpython-36.pyc delete mode 100644 openmmlab_test/mmclassification-speed-benchmark/mmcls/models/losses/__pycache__/asymmetric_loss.cpython-36.pyc delete mode 100644 openmmlab_test/mmclassification-speed-benchmark/mmcls/models/losses/__pycache__/cross_entropy_loss.cpython-36.pyc delete mode 100644 openmmlab_test/mmclassification-speed-benchmark/mmcls/models/losses/__pycache__/focal_loss.cpython-36.pyc delete mode 100644 openmmlab_test/mmclassification-speed-benchmark/mmcls/models/losses/__pycache__/label_smooth_loss.cpython-36.pyc delete mode 100644 openmmlab_test/mmclassification-speed-benchmark/mmcls/models/losses/__pycache__/utils.cpython-36.pyc delete mode 100644 openmmlab_test/mmclassification-speed-benchmark/mmcls/models/losses/accuracy.py delete mode 100644 openmmlab_test/mmclassification-speed-benchmark/mmcls/models/losses/asymmetric_loss.py delete mode 100644 openmmlab_test/mmclassification-speed-benchmark/mmcls/models/losses/cross_entropy_loss.py delete mode 100644 openmmlab_test/mmclassification-speed-benchmark/mmcls/models/losses/utils.py delete mode 100644 openmmlab_test/mmclassification-speed-benchmark/mmcls/models/necks/__init__.py delete mode 100644 openmmlab_test/mmclassification-speed-benchmark/mmcls/models/necks/__pycache__/__init__.cpython-36.pyc delete mode 100644 openmmlab_test/mmclassification-speed-benchmark/mmcls/models/necks/__pycache__/gap.cpython-36.pyc delete mode 100644 openmmlab_test/mmclassification-speed-benchmark/mmcls/models/utils/__init__.py delete mode 100644 openmmlab_test/mmclassification-speed-benchmark/mmcls/models/utils/__pycache__/__init__.cpython-36.pyc delete mode 100644 openmmlab_test/mmclassification-speed-benchmark/mmcls/models/utils/__pycache__/channel_shuffle.cpython-36.pyc delete mode 100644 openmmlab_test/mmclassification-speed-benchmark/mmcls/models/utils/__pycache__/helpers.cpython-36.pyc delete mode 100644 openmmlab_test/mmclassification-speed-benchmark/mmcls/models/utils/__pycache__/inverted_residual.cpython-36.pyc delete mode 100644 openmmlab_test/mmclassification-speed-benchmark/mmcls/models/utils/__pycache__/make_divisible.cpython-36.pyc delete mode 100644 openmmlab_test/mmclassification-speed-benchmark/mmcls/models/utils/__pycache__/se_layer.cpython-36.pyc delete mode 100644 openmmlab_test/mmclassification-speed-benchmark/mmcls/models/utils/augment/__init__.py delete mode 100644 openmmlab_test/mmclassification-speed-benchmark/mmcls/models/utils/augment/__pycache__/__init__.cpython-36.pyc delete mode 100644 openmmlab_test/mmclassification-speed-benchmark/mmcls/models/utils/augment/__pycache__/augments.cpython-36.pyc delete mode 100644 openmmlab_test/mmclassification-speed-benchmark/mmcls/models/utils/augment/__pycache__/builder.cpython-36.pyc delete mode 100644 openmmlab_test/mmclassification-speed-benchmark/mmcls/models/utils/augment/__pycache__/cutmix.cpython-36.pyc delete mode 100644 openmmlab_test/mmclassification-speed-benchmark/mmcls/models/utils/augment/__pycache__/identity.cpython-36.pyc delete mode 100644 openmmlab_test/mmclassification-speed-benchmark/mmcls/models/utils/augment/__pycache__/mixup.cpython-36.pyc delete mode 100644 openmmlab_test/mmclassification-speed-benchmark/mmcls/models/utils/augment/builder.py delete mode 100644 openmmlab_test/mmclassification-speed-benchmark/mmcls/models/utils/augment/cutmix.py delete mode 100644 openmmlab_test/mmclassification-speed-benchmark/mmcls/models/utils/augment/mixup.py delete mode 100644 openmmlab_test/mmclassification-speed-benchmark/mmcls/models/utils/helpers.py delete mode 100644 openmmlab_test/mmclassification-speed-benchmark/mmcls/models/utils/inverted_residual.py delete mode 100644 openmmlab_test/mmclassification-speed-benchmark/mmcls/models/utils/se_layer.py delete mode 100644 openmmlab_test/mmclassification-speed-benchmark/mmcls/utils/__init__.py delete mode 100644 openmmlab_test/mmclassification-speed-benchmark/mmcls/utils/__pycache__/__init__.cpython-36.pyc delete mode 100644 openmmlab_test/mmclassification-speed-benchmark/mmcls/utils/__pycache__/collect_env.cpython-36.pyc delete mode 100644 openmmlab_test/mmclassification-speed-benchmark/mmcls/utils/__pycache__/logger.cpython-36.pyc delete mode 100644 openmmlab_test/mmclassification-speed-benchmark/mmcls/utils/logger.py delete mode 100644 openmmlab_test/mmclassification-speed-benchmark/model_zoo.yml delete mode 100644 openmmlab_test/mmclassification-speed-benchmark/multi_test.sh delete mode 100644 openmmlab_test/mmclassification-speed-benchmark/requirements/docs.txt delete mode 100644 openmmlab_test/mmclassification-speed-benchmark/requirements/mminstall.txt delete mode 100644 openmmlab_test/mmclassification-speed-benchmark/requirements/optional.txt delete mode 100644 openmmlab_test/mmclassification-speed-benchmark/requirements/readthedocs.txt delete mode 100644 openmmlab_test/mmclassification-speed-benchmark/requirements/runtime.txt delete mode 100644 openmmlab_test/mmclassification-speed-benchmark/setup.cfg delete mode 100644 openmmlab_test/mmclassification-speed-benchmark/setup.py delete mode 100644 openmmlab_test/mmclassification-speed-benchmark/tests/test_backbones/test_mobilenet_v3.py delete mode 100644 openmmlab_test/mmclassification-speed-benchmark/tests/test_backbones/test_utils.py delete mode 100644 openmmlab_test/mmclassification-speed-benchmark/tests/test_backbones/test_vision_transformer.py delete mode 100644 openmmlab_test/mmclassification-speed-benchmark/tests/test_classifiers.py delete mode 100644 openmmlab_test/mmclassification-speed-benchmark/tests/test_dataset.py delete mode 100644 openmmlab_test/mmclassification-speed-benchmark/tests/test_heads.py delete mode 100644 openmmlab_test/mmclassification-speed-benchmark/tests/test_losses.py delete mode 100644 openmmlab_test/mmclassification-speed-benchmark/tests/test_metrics.py delete mode 100644 openmmlab_test/mmclassification-speed-benchmark/tests/test_neck.py delete mode 100644 openmmlab_test/mmclassification-speed-benchmark/tools/benchmark_regression.py delete mode 100644 openmmlab_test/mmclassification-speed-benchmark/tools/deployment/test.py delete mode 100644 openmmlab_test/mmclassification-speed-benchmark/tools/dist_test.sh delete mode 100644 openmmlab_test/mmclassification-speed-benchmark/tools/dist_train.sh delete mode 100644 openmmlab_test/mmclassification-speed-benchmark/tools/publish_model.py delete mode 100644 openmmlab_test/mmclassification-speed-benchmark/tools/test.py delete mode 100644 openmmlab_test/mmclassification-speed-benchmark/tools/train.py delete mode 100644 openmmlab_test/mmclassification-speed-benchmark/train.md diff --git a/openmmlab_test/mmclassification-0.24.1/.gitattributes b/openmmlab_test/mmclassification-0.24.1/.gitattributes new file mode 100644 index 00000000..f199a9ea --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/.gitattributes @@ -0,0 +1,2 @@ +docs/** linguist-documentation +docs_zh-CN/** linguist-documentation diff --git a/openmmlab_test/mmclassification-0.24.1/.gitignore b/openmmlab_test/mmclassification-0.24.1/.gitignore new file mode 100644 index 00000000..f6940c76 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/.gitignore @@ -0,0 +1,134 @@ +# Byte-compiled / optimized / DLL files +__pycache__/ +*.py[cod] +*$py.class +**/*.pyc + +# C extensions +*.so + +# Distribution / packaging +.Python +build/ +develop-eggs/ +dist/ +downloads/ +eggs/ +.eggs/ +lib/ +lib64/ +parts/ +sdist/ +var/ +wheels/ +*.egg-info/ +.installed.cfg +*.egg +MANIFEST + +# PyInstaller +# Usually these files are written by a python script from a template +# before PyInstaller builds the exe, so as to inject date/other infos into it. +*.manifest +*.spec + +# Installer logs +pip-log.txt +pip-delete-this-directory.txt + +# Unit test / coverage reports +htmlcov/ +.tox/ +.coverage +.coverage.* +.cache +nosetests.xml +coverage.xml +*.cover +.hypothesis/ +.pytest_cache/ + +# Translations +*.mo +*.pot + +# Django stuff: +*.log +local_settings.py +db.sqlite3 + +# Flask stuff: +instance/ +.webassets-cache + +# Scrapy stuff: +.scrapy + +# Auto generate documentation +docs/en/_build/ +docs/en/_model_zoo.rst +docs/en/modelzoo_statistics.md +docs/en/papers/ +docs/en/api/generated/ +docs/zh_CN/_build/ +docs/zh_CN/_model_zoo.rst +docs/zh_CN/modelzoo_statistics.md +docs/zh_CN/papers/ +docs/zh_CN/api/generated/ + +# PyBuilder +target/ + +# Jupyter Notebook +.ipynb_checkpoints + +# pyenv +.python-version + +# celery beat schedule file +celerybeat-schedule + +# SageMath parsed files +*.sage.py + +# Environments +.env +.venv +env/ +venv/ +ENV/ +env.bak/ +venv.bak/ + +# Spyder project settings +.spyderproject +.spyproject + +# Rope project settings +.ropeproject + +# mkdocs documentation +/site + +# mypy +.mypy_cache/ + +# custom +/data +.vscode +.idea +*.pkl +*.pkl.json +*.log.json +/work_dirs +/mmcls/.mim +.DS_Store + +# Pytorch +*.pth + +# IPU +*.pvti +*.pvti-journal +/cache_engine +/report diff --git a/openmmlab_test/mmclassification-0.24.1/.pre-commit-config.yaml b/openmmlab_test/mmclassification-0.24.1/.pre-commit-config.yaml new file mode 100644 index 00000000..0d19d5f6 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/.pre-commit-config.yaml @@ -0,0 +1,58 @@ +exclude: ^tests/data/ +repos: + - repo: https://github.com/PyCQA/flake8 + rev: 4.0.1 + hooks: + - id: flake8 + - repo: https://github.com/PyCQA/isort + rev: 5.10.1 + hooks: + - id: isort + - repo: https://github.com/pre-commit/mirrors-yapf + rev: v0.30.0 + hooks: + - id: yapf + - repo: https://github.com/pre-commit/pre-commit-hooks + rev: v3.1.0 + hooks: + - id: trailing-whitespace + - id: check-yaml + - id: end-of-file-fixer + - id: requirements-txt-fixer + - id: double-quote-string-fixer + - id: check-merge-conflict + - id: fix-encoding-pragma + args: ["--remove"] + - id: mixed-line-ending + args: ["--fix=lf"] + - repo: https://github.com/executablebooks/mdformat + rev: 0.7.9 + hooks: + - id: mdformat + args: ["--number", "--table-width", "200"] + additional_dependencies: + - mdformat-openmmlab + - mdformat_frontmatter + - linkify-it-py + - repo: https://github.com/codespell-project/codespell + rev: v2.1.0 + hooks: + - id: codespell + - repo: https://github.com/myint/docformatter + rev: v1.3.1 + hooks: + - id: docformatter + args: ["--in-place", "--wrap-descriptions", "79"] + - repo: https://github.com/open-mmlab/pre-commit-hooks + rev: v0.2.0 + hooks: + - id: check-copyright + args: ["mmcls", "tests", "demo", "tools"] + # - repo: local + # hooks: + # - id: clang-format + # name: clang-format + # description: Format files with ClangFormat + # entry: clang-format -style=google -i + # language: system + # files: \.(c|cc|cxx|cpp|cu|h|hpp|hxx|cuh|proto)$ diff --git a/openmmlab_test/mmclassification-0.24.1/.readthedocs.yml b/openmmlab_test/mmclassification-0.24.1/.readthedocs.yml new file mode 100644 index 00000000..6cfbf5d3 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/.readthedocs.yml @@ -0,0 +1,9 @@ +version: 2 + +formats: all + +python: + version: 3.7 + install: + - requirements: requirements/docs.txt + - requirements: requirements/readthedocs.txt diff --git a/openmmlab_test/mmclassification-0.24.1/CITATION.cff b/openmmlab_test/mmclassification-0.24.1/CITATION.cff new file mode 100644 index 00000000..0c0d7730 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/CITATION.cff @@ -0,0 +1,9 @@ +cff-version: 1.2.0 +message: "If you use this software, please cite it as below." +title: "OpenMMLab's Image Classification Toolbox and Benchmark" +authors: + - name: "MMClassification Contributors" +version: 0.15.0 +date-released: 2020-07-09 +repository-code: "https://github.com/open-mmlab/mmclassification" +license: Apache-2.0 diff --git a/openmmlab_test/mmclassification-0.24.1/CONTRIBUTING.md b/openmmlab_test/mmclassification-0.24.1/CONTRIBUTING.md new file mode 100644 index 00000000..8a0c6329 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/CONTRIBUTING.md @@ -0,0 +1,61 @@ +# Contributing to OpenMMLab + +All kinds of contributions are welcome, including but not limited to the following. + +- Fix typo or bugs +- Add documentation or translate the documentation into other languages +- Add new features and components + +## Workflow + +1. fork and pull the latest OpenMMLab repository (MMClassification) +2. checkout a new branch (do not use master branch for PRs) +3. commit your changes +4. create a PR + +```{note} +If you plan to add some new features that involve large changes, it is encouraged to open an issue for discussion first. +``` + +## Code style + +### Python + +We adopt [PEP8](https://www.python.org/dev/peps/pep-0008/) as the preferred code style. + +We use the following tools for linting and formatting: + +- [flake8](https://github.com/PyCQA/flake8): A wrapper around some linter tools. +- [isort](https://github.com/timothycrosley/isort): A Python utility to sort imports. +- [yapf](https://github.com/google/yapf): A formatter for Python files. +- [codespell](https://github.com/codespell-project/codespell): A Python utility to fix common misspellings in text files. +- [mdformat](https://github.com/executablebooks/mdformat): Mdformat is an opinionated Markdown formatter that can be used to enforce a consistent style in Markdown files. +- [docformatter](https://github.com/myint/docformatter): A formatter to format docstring. + +Style configurations can be found in [setup.cfg](./setup.cfg). + +We use [pre-commit hook](https://pre-commit.com/) that checks and formats for `flake8`, `yapf`, `isort`, `trailing whitespaces`, `markdown files`, +fixes `end-of-files`, `double-quoted-strings`, `python-encoding-pragma`, `mixed-line-ending`, sorts `requirments.txt` automatically on every commit. +The config for a pre-commit hook is stored in [.pre-commit-config](https://github.com/open-mmlab/mmclassification/blob/master/.pre-commit-config.yaml). + +After you clone the repository, you will need to install initialize pre-commit hook. + +```shell +pip install -U pre-commit +``` + +From the repository folder + +```shell +pre-commit install +``` + +After this on every commit check code linters and formatter will be enforced. + +```{important} +Before you create a PR, make sure that your code lints and is formatted by yapf. +``` + +### C++ and CUDA + +We follow the [Google C++ Style Guide](https://google.github.io/styleguide/cppguide.html). diff --git a/openmmlab_test/mmclassification-speed-benchmark/LICENSE b/openmmlab_test/mmclassification-0.24.1/LICENSE similarity index 99% rename from openmmlab_test/mmclassification-speed-benchmark/LICENSE rename to openmmlab_test/mmclassification-0.24.1/LICENSE index 9c478002..f731325b 100644 --- a/openmmlab_test/mmclassification-speed-benchmark/LICENSE +++ b/openmmlab_test/mmclassification-0.24.1/LICENSE @@ -1,4 +1,4 @@ -Copyright 2020 MMClassification Authors. All rights reserved. +Copyright (c) OpenMMLab. All rights reserved Apache License Version 2.0, January 2004 diff --git a/openmmlab_test/mmclassification-0.24.1/MANIFEST.in b/openmmlab_test/mmclassification-0.24.1/MANIFEST.in new file mode 100644 index 00000000..17ddc8c7 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/MANIFEST.in @@ -0,0 +1,4 @@ +include requirements/*.txt +include mmcls/.mim/model-index.yml +recursive-include mmcls/.mim/configs *.py *.yml +recursive-include mmcls/.mim/tools *.py *.sh diff --git a/openmmlab_test/mmclassification-0.24.1/README.md b/openmmlab_test/mmclassification-0.24.1/README.md new file mode 100644 index 00000000..9535854a --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/README.md @@ -0,0 +1,207 @@ +
+ + +
 
+
+ OpenMMLab website + + + HOT + + +      + OpenMMLab platform + + + TRY IT OUT + + +
+
 
+ +[![PyPI](https://img.shields.io/pypi/v/mmcls)](https://pypi.org/project/mmcls) +[![Docs](https://img.shields.io/badge/docs-latest-blue)](https://mmclassification.readthedocs.io/en/latest/) +[![Build Status](https://github.com/open-mmlab/mmclassification/workflows/build/badge.svg)](https://github.com/open-mmlab/mmclassification/actions) +[![codecov](https://codecov.io/gh/open-mmlab/mmclassification/branch/master/graph/badge.svg)](https://codecov.io/gh/open-mmlab/mmclassification) +[![license](https://img.shields.io/github/license/open-mmlab/mmclassification.svg)](https://github.com/open-mmlab/mmclassification/blob/master/LICENSE) +[![open issues](https://isitmaintained.com/badge/open/open-mmlab/mmclassification.svg)](https://github.com/open-mmlab/mmclassification/issues) +[![issue resolution](https://isitmaintained.com/badge/resolution/open-mmlab/mmclassification.svg)](https://github.com/open-mmlab/mmclassification/issues) + +[📘 Documentation](https://mmclassification.readthedocs.io/en/latest/) | +[🛠️ Installation](https://mmclassification.readthedocs.io/en/latest/install.html) | +[👀 Model Zoo](https://mmclassification.readthedocs.io/en/latest/model_zoo.html) | +[🆕 Update News](https://mmclassification.readthedocs.io/en/latest/changelog.html) | +[🤔 Reporting Issues](https://github.com/open-mmlab/mmclassification/issues/new/choose) + +:point_right: **MMClassification 1.0 branch is in trial, welcome every to [try it](https://github.com/open-mmlab/mmclassification/tree/1.x) and [discuss with us](https://github.com/open-mmlab/mmclassification/discussions)!** :point_left: + +
+ +## Introduction + +English | [简体中文](/README_zh-CN.md) | [模型的测试方法及测试步骤](train.md) + +MMClassification is an open source image classification toolbox based on PyTorch. It is +a part of the [OpenMMLab](https://openmmlab.com/) project. + +The master branch works with **PyTorch 1.5+**. + +
+ +
+ +### Major features + +- Various backbones and pretrained models +- Bag of training tricks +- Large-scale training configs +- High efficiency and extensibility +- Powerful toolkits + +## What's new + +The MMClassification 1.0 has released! It's still unstable and in release candidate. If you want to try it, go +to [the 1.x branch](https://github.com/open-mmlab/mmclassification/tree/1.x) and discuss it with us in +[the discussion](https://github.com/open-mmlab/mmclassification/discussions). + +v0.24.1 was released in 31/10/2022. +Highlights of the new version: + +- Support HUAWEI Ascend device. + +v0.24.0 was released in 30/9/2022. +Highlights of the new version: + +- Support **HorNet**, **EfficientFormerm**, **SwinTransformer V2** and **MViT** backbones. +- Support Standford Cars dataset. + +v0.23.0 was released in 1/5/2022. +Highlights of the new version: + +- Support **DenseNet**, **VAN** and **PoolFormer**, and provide pre-trained models. +- Support training on IPU. +- New style API docs, welcome [view it](https://mmclassification.readthedocs.io/en/master/api/models.html). + +Please refer to [changelog.md](docs/en/changelog.md) for more details and other release history. + +## Installation + +Below are quick steps for installation: + +```shell +conda create -n open-mmlab python=3.8 pytorch=1.10 cudatoolkit=11.3 torchvision==0.11.0 -c pytorch -y +conda activate open-mmlab +pip3 install openmim +mim install mmcv-full +git clone https://github.com/open-mmlab/mmclassification.git +cd mmclassification +pip3 install -e . +``` + +Please refer to [install.md](https://mmclassification.readthedocs.io/en/latest/install.html) for more detailed installation and dataset preparation. + +## Getting Started + +Please see [Getting Started](https://mmclassification.readthedocs.io/en/latest/getting_started.html) for the basic usage of MMClassification. There are also tutorials: + +- [Learn about Configs](https://mmclassification.readthedocs.io/en/latest/tutorials/config.html) +- [Fine-tune Models](https://mmclassification.readthedocs.io/en/latest/tutorials/finetune.html) +- [Add New Dataset](https://mmclassification.readthedocs.io/en/latest/tutorials/new_dataset.html) +- [Customizie Data Pipeline](https://mmclassification.readthedocs.io/en/latest/tutorials/data_pipeline.html) +- [Add New Modules](https://mmclassification.readthedocs.io/en/latest/tutorials/new_modules.html) +- [Customizie Schedule](https://mmclassification.readthedocs.io/en/latest/tutorials/schedule.html) +- [Customizie Runtime Settings](https://mmclassification.readthedocs.io/en/latest/tutorials/runtime.html) + +Colab tutorials are also provided: + +- Learn about MMClassification **Python API**: [Preview the notebook](https://github.com/open-mmlab/mmclassification/blob/master/docs/en/tutorials/MMClassification_python.ipynb) or directly [run on Colab](https://colab.research.google.com/github/open-mmlab/mmclassification/blob/master/docs/en/tutorials/MMClassification_python.ipynb). +- Learn about MMClassification **CLI tools**: [Preview the notebook](https://github.com/open-mmlab/mmclassification/blob/master/docs/en/tutorials/MMClassification_tools.ipynb) or directly [run on Colab](https://colab.research.google.com/github/open-mmlab/mmclassification/blob/master/docs/en/tutorials/MMClassification_tools.ipynb). + +## Model zoo + +Results and models are available in the [model zoo](https://mmclassification.readthedocs.io/en/latest/model_zoo.html). + +
+Supported backbones + +- [x] [VGG](https://github.com/open-mmlab/mmclassification/tree/master/configs/vgg) +- [x] [ResNet](https://github.com/open-mmlab/mmclassification/tree/master/configs/resnet) +- [x] [ResNeXt](https://github.com/open-mmlab/mmclassification/tree/master/configs/resnext) +- [x] [SE-ResNet](https://github.com/open-mmlab/mmclassification/tree/master/configs/seresnet) +- [x] [SE-ResNeXt](https://github.com/open-mmlab/mmclassification/tree/master/configs/seresnet) +- [x] [RegNet](https://github.com/open-mmlab/mmclassification/tree/master/configs/regnet) +- [x] [ShuffleNetV1](https://github.com/open-mmlab/mmclassification/tree/master/configs/shufflenet_v1) +- [x] [ShuffleNetV2](https://github.com/open-mmlab/mmclassification/tree/master/configs/shufflenet_v2) +- [x] [MobileNetV2](https://github.com/open-mmlab/mmclassification/tree/master/configs/mobilenet_v2) +- [x] [MobileNetV3](https://github.com/open-mmlab/mmclassification/tree/master/configs/mobilenet_v3) +- [x] [Swin-Transformer](https://github.com/open-mmlab/mmclassification/tree/master/configs/swin_transformer) +- [x] [RepVGG](https://github.com/open-mmlab/mmclassification/tree/master/configs/repvgg) +- [x] [Vision-Transformer](https://github.com/open-mmlab/mmclassification/tree/master/configs/vision_transformer) +- [x] [Transformer-in-Transformer](https://github.com/open-mmlab/mmclassification/tree/master/configs/tnt) +- [x] [Res2Net](https://github.com/open-mmlab/mmclassification/tree/master/configs/res2net) +- [x] [MLP-Mixer](https://github.com/open-mmlab/mmclassification/tree/master/configs/mlp_mixer) +- [x] [DeiT](https://github.com/open-mmlab/mmclassification/tree/master/configs/deit) +- [x] [Conformer](https://github.com/open-mmlab/mmclassification/tree/master/configs/conformer) +- [x] [T2T-ViT](https://github.com/open-mmlab/mmclassification/tree/master/configs/t2t_vit) +- [x] [Twins](https://github.com/open-mmlab/mmclassification/tree/master/configs/twins) +- [x] [EfficientNet](https://github.com/open-mmlab/mmclassification/tree/master/configs/efficientnet) +- [x] [ConvNeXt](https://github.com/open-mmlab/mmclassification/tree/master/configs/convnext) +- [x] [HRNet](https://github.com/open-mmlab/mmclassification/tree/master/configs/hrnet) +- [x] [VAN](https://github.com/open-mmlab/mmclassification/tree/master/configs/van) +- [x] [ConvMixer](https://github.com/open-mmlab/mmclassification/tree/master/configs/convmixer) +- [x] [CSPNet](https://github.com/open-mmlab/mmclassification/tree/master/configs/cspnet) +- [x] [PoolFormer](https://github.com/open-mmlab/mmclassification/tree/master/configs/poolformer) +- [x] [MViT](https://github.com/open-mmlab/mmclassification/tree/master/configs/mvit) +- [x] [EfficientFormer](https://github.com/open-mmlab/mmclassification/tree/master/configs/efficientformer) +- [x] [HorNet](https://github.com/open-mmlab/mmclassification/tree/master/configs/hornet) + +
+ +## Contributing + +We appreciate all contributions to improve MMClassification. +Please refer to [CONTRUBUTING.md](https://mmclassification.readthedocs.io/en/latest/community/CONTRIBUTING.html) for the contributing guideline. + +## Acknowledgement + +MMClassification is an open source project that is contributed by researchers and engineers from various colleges and companies. We appreciate all the contributors who implement their methods or add new features, as well as users who give valuable feedbacks. +We wish that the toolbox and benchmark could serve the growing research community by providing a flexible toolkit to reimplement existing methods and develop their own new classifiers. + +## Citation + +If you find this project useful in your research, please consider cite: + +```BibTeX +@misc{2020mmclassification, + title={OpenMMLab's Image Classification Toolbox and Benchmark}, + author={MMClassification Contributors}, + howpublished = {\url{https://github.com/open-mmlab/mmclassification}}, + year={2020} +} +``` + +## License + +This project is released under the [Apache 2.0 license](LICENSE). + +## Projects in OpenMMLab + +- [MMCV](https://github.com/open-mmlab/mmcv): OpenMMLab foundational library for computer vision. +- [MIM](https://github.com/open-mmlab/mim): MIM installs OpenMMLab packages. +- [MMClassification](https://github.com/open-mmlab/mmclassification): OpenMMLab image classification toolbox and benchmark. +- [MMDetection](https://github.com/open-mmlab/mmdetection): OpenMMLab detection toolbox and benchmark. +- [MMDetection3D](https://github.com/open-mmlab/mmdetection3d): OpenMMLab's next-generation platform for general 3D object detection. +- [MMRotate](https://github.com/open-mmlab/mmrotate): OpenMMLab rotated object detection toolbox and benchmark. +- [MMSegmentation](https://github.com/open-mmlab/mmsegmentation): OpenMMLab semantic segmentation toolbox and benchmark. +- [MMOCR](https://github.com/open-mmlab/mmocr): OpenMMLab text detection, recognition, and understanding toolbox. +- [MMPose](https://github.com/open-mmlab/mmpose): OpenMMLab pose estimation toolbox and benchmark. +- [MMHuman3D](https://github.com/open-mmlab/mmhuman3d): OpenMMLab 3D human parametric model toolbox and benchmark. +- [MMSelfSup](https://github.com/open-mmlab/mmselfsup): OpenMMLab self-supervised learning toolbox and benchmark. +- [MMRazor](https://github.com/open-mmlab/mmrazor): OpenMMLab model compression toolbox and benchmark. +- [MMFewShot](https://github.com/open-mmlab/mmfewshot): OpenMMLab fewshot learning toolbox and benchmark. +- [MMAction2](https://github.com/open-mmlab/mmaction2): OpenMMLab's next-generation action understanding toolbox and benchmark. +- [MMTracking](https://github.com/open-mmlab/mmtracking): OpenMMLab video perception toolbox and benchmark. +- [MMFlow](https://github.com/open-mmlab/mmflow): OpenMMLab optical flow toolbox and benchmark. +- [MMEditing](https://github.com/open-mmlab/mmediting): OpenMMLab image and video editing toolbox. +- [MMGeneration](https://github.com/open-mmlab/mmgeneration): OpenMMLab image and video generative models toolbox. +- [MMDeploy](https://github.com/open-mmlab/mmdeploy): OpenMMLab model deployment framework. diff --git a/openmmlab_test/mmclassification-0.24.1/README_zh-CN.md b/openmmlab_test/mmclassification-0.24.1/README_zh-CN.md new file mode 100644 index 00000000..60f06209 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/README_zh-CN.md @@ -0,0 +1,222 @@ +
+ + +
 
+
+ OpenMMLab 官网 + + + HOT + + +      + OpenMMLab 开放平台 + + + TRY IT OUT + + +
+
 
+ +[![PyPI](https://img.shields.io/pypi/v/mmcls)](https://pypi.org/project/mmcls) +[![Docs](https://img.shields.io/badge/docs-latest-blue)](https://mmclassification.readthedocs.io/zh_CN/latest/) +[![Build Status](https://github.com/open-mmlab/mmclassification/workflows/build/badge.svg)](https://github.com/open-mmlab/mmclassification/actions) +[![codecov](https://codecov.io/gh/open-mmlab/mmclassification/branch/master/graph/badge.svg)](https://codecov.io/gh/open-mmlab/mmclassification) +[![license](https://img.shields.io/github/license/open-mmlab/mmclassification.svg)](https://github.com/open-mmlab/mmclassification/blob/master/LICENSE) +[![open issues](https://isitmaintained.com/badge/open/open-mmlab/mmclassification.svg)](https://github.com/open-mmlab/mmclassification/issues) +[![issue resolution](https://isitmaintained.com/badge/resolution/open-mmlab/mmclassification.svg)](https://github.com/open-mmlab/mmclassification/issues) + +[📘 中文文档](https://mmclassification.readthedocs.io/zh_CN/latest/) | +[🛠️ 安装教程](https://mmclassification.readthedocs.io/zh_CN/latest/install.html) | +[👀 模型库](https://mmclassification.readthedocs.io/zh_CN/latest/model_zoo.html) | +[🆕 更新日志](https://mmclassification.readthedocs.io/en/latest/changelog.html) | +[🤔 报告问题](https://github.com/open-mmlab/mmclassification/issues/new/choose) + +:point_right: **MMClassification 1.0 版本即将正式发布,欢迎大家 [试用](https://github.com/open-mmlab/mmclassification/tree/1.x) 并 [参与讨论](https://github.com/open-mmlab/mmclassification/discussions)!** :point_left: + +
+ + + +## Introduction + +[English](/README.md) | 简体中文 + +MMClassification 是一款基于 PyTorch 的开源图像分类工具箱,是 [OpenMMLab](https://openmmlab.com/) 项目的成员之一 + +主分支代码目前支持 PyTorch 1.5 以上的版本。 + +
+ +
+ +### 主要特性 + +- 支持多样的主干网络与预训练模型 +- 支持配置多种训练技巧 +- 大量的训练配置文件 +- 高效率和高可扩展性 +- 功能强大的工具箱 + +## 更新日志 + +MMClassification 1.0 已经发布!目前仍在公测中,如果希望试用,请切换到 [1.x 分支](https://github.com/open-mmlab/mmclassification/tree/1.x),并在[讨论版](https://github.com/open-mmlab/mmclassification/discussions) 参加开发讨论! + +2022/10/31 发布了 v0.24.1 版本 + +- 支持了华为昇腾 NPU 设备。 + +2022/9/30 发布了 v0.24.0 版本 + +- 支持了 **HorNet**,**EfficientFormerm**,**SwinTransformer V2**,**MViT** 等主干网络。 +- 支持了 Support Standford Cars 数据集。 + +2022/5/1 发布了 v0.23.0 版本 + +- 支持了 **DenseNet**,**VAN** 和 **PoolFormer** 三个网络,并提供了预训练模型。 +- 支持在 IPU 上进行训练。 +- 更新了 API 文档的样式,更方便查阅,[欢迎查阅](https://mmclassification.readthedocs.io/en/master/api/models.html)。 + +发布历史和更新细节请参考 [更新日志](docs/en/changelog.md) + +## 安装 + +以下是安装的简要步骤: + +```shell +conda create -n open-mmlab python=3.8 pytorch=1.10 cudatoolkit=11.3 torchvision==0.11.0 -c pytorch -y +conda activate open-mmlab +pip3 install openmim +mim install mmcv-full +git clone https://github.com/open-mmlab/mmclassification.git +cd mmclassification +pip3 install -e . +``` + +更详细的步骤请参考 [安装指南](https://mmclassification.readthedocs.io/zh_CN/latest/install.html) 进行安装。 + +## 基础教程 + +请参考 [基础教程](https://mmclassification.readthedocs.io/zh_CN/latest/getting_started.html) 来了解 MMClassification 的基本使用。MMClassification 也提供了其他更详细的教程: + +- [如何编写配置文件](https://mmclassification.readthedocs.io/zh_CN/latest/tutorials/config.html) +- [如何微调模型](https://mmclassification.readthedocs.io/zh_CN/latest/tutorials/finetune.html) +- [如何增加新数据集](https://mmclassification.readthedocs.io/zh_CN/latest/tutorials/new_dataset.html) +- [如何设计数据处理流程](https://mmclassification.readthedocs.io/zh_CN/latest/tutorials/data_pipeline.html) +- [如何增加新模块](https://mmclassification.readthedocs.io/zh_CN/latest/tutorials/new_modules.html) +- [如何自定义优化策略](https://mmclassification.readthedocs.io/zh_CN/latest/tutorials/schedule.html) +- [如何自定义运行参数](https://mmclassification.readthedocs.io/zh_CN/latest/tutorials/runtime.html) + +我们也提供了相应的中文 Colab 教程: + +- 了解 MMClassification **Python API**:[预览 Notebook](https://github.com/open-mmlab/mmclassification/blob/master/docs/zh_CN/tutorials/MMClassification_python_cn.ipynb) 或者直接[在 Colab 上运行](https://colab.research.google.com/github/open-mmlab/mmclassification/blob/master/docs/zh_CN/tutorials/MMClassification_python_cn.ipynb)。 +- 了解 MMClassification **命令行工具**:[预览 Notebook](https://github.com/open-mmlab/mmclassification/blob/master/docs/zh_CN/tutorials/MMClassification_tools_cn.ipynb) 或者直接[在 Colab 上运行](https://colab.research.google.com/github/open-mmlab/mmclassification/blob/master/docs/zh_CN/tutorials/MMClassification_tools_cn.ipynb)。 + +## 模型库 + +相关结果和模型可在 [model zoo](https://mmclassification.readthedocs.io/en/latest/model_zoo.html) 中获得 + +
+支持的主干网络 + +- [x] [VGG](https://github.com/open-mmlab/mmclassification/tree/master/configs/vgg) +- [x] [ResNet](https://github.com/open-mmlab/mmclassification/tree/master/configs/resnet) +- [x] [ResNeXt](https://github.com/open-mmlab/mmclassification/tree/master/configs/resnext) +- [x] [SE-ResNet](https://github.com/open-mmlab/mmclassification/tree/master/configs/seresnet) +- [x] [SE-ResNeXt](https://github.com/open-mmlab/mmclassification/tree/master/configs/seresnet) +- [x] [RegNet](https://github.com/open-mmlab/mmclassification/tree/master/configs/regnet) +- [x] [ShuffleNetV1](https://github.com/open-mmlab/mmclassification/tree/master/configs/shufflenet_v1) +- [x] [ShuffleNetV2](https://github.com/open-mmlab/mmclassification/tree/master/configs/shufflenet_v2) +- [x] [MobileNetV2](https://github.com/open-mmlab/mmclassification/tree/master/configs/mobilenet_v2) +- [x] [MobileNetV3](https://github.com/open-mmlab/mmclassification/tree/master/configs/mobilenet_v3) +- [x] [Swin-Transformer](https://github.com/open-mmlab/mmclassification/tree/master/configs/swin_transformer) +- [x] [RepVGG](https://github.com/open-mmlab/mmclassification/tree/master/configs/repvgg) +- [x] [Vision-Transformer](https://github.com/open-mmlab/mmclassification/tree/master/configs/vision_transformer) +- [x] [Transformer-in-Transformer](https://github.com/open-mmlab/mmclassification/tree/master/configs/tnt) +- [x] [Res2Net](https://github.com/open-mmlab/mmclassification/tree/master/configs/res2net) +- [x] [MLP-Mixer](https://github.com/open-mmlab/mmclassification/tree/master/configs/mlp_mixer) +- [x] [DeiT](https://github.com/open-mmlab/mmclassification/tree/master/configs/deit) +- [x] [Conformer](https://github.com/open-mmlab/mmclassification/tree/master/configs/conformer) +- [x] [T2T-ViT](https://github.com/open-mmlab/mmclassification/tree/master/configs/t2t_vit) +- [x] [Twins](https://github.com/open-mmlab/mmclassification/tree/master/configs/twins) +- [x] [EfficientNet](https://github.com/open-mmlab/mmclassification/tree/master/configs/efficientnet) +- [x] [ConvNeXt](https://github.com/open-mmlab/mmclassification/tree/master/configs/convnext) +- [x] [HRNet](https://github.com/open-mmlab/mmclassification/tree/master/configs/hrnet) +- [x] [VAN](https://github.com/open-mmlab/mmclassification/tree/master/configs/van) +- [x] [ConvMixer](https://github.com/open-mmlab/mmclassification/tree/master/configs/convmixer) +- [x] [CSPNet](https://github.com/open-mmlab/mmclassification/tree/master/configs/cspnet) +- [x] [PoolFormer](https://github.com/open-mmlab/mmclassification/tree/master/configs/poolformer) +- [x] [MViT](https://github.com/open-mmlab/mmclassification/tree/master/configs/mvit) +- [x] [EfficientFormer](https://github.com/open-mmlab/mmclassification/tree/master/configs/efficientformer) +- [x] [HorNet](https://github.com/open-mmlab/mmclassification/tree/master/configs/hornet) + +
+ +## 参与贡献 + +我们非常欢迎任何有助于提升 MMClassification 的贡献,请参考 [贡献指南](https://mmclassification.readthedocs.io/zh_CN/latest/community/CONTRIBUTING.html) 来了解如何参与贡献。 + +## 致谢 + +MMClassification 是一款由不同学校和公司共同贡献的开源项目。我们感谢所有为项目提供算法复现和新功能支持的贡献者,以及提供宝贵反馈的用户。 + +我们希望该工具箱和基准测试可以为社区提供灵活的代码工具,供用户复现现有算法并开发自己的新模型,从而不断为开源社区提供贡献。 + +## 引用 + +如果你在研究中使用了本项目的代码或者性能基准,请参考如下 bibtex 引用 MMClassification。 + +```BibTeX +@misc{2020mmclassification, + title={OpenMMLab's Image Classification Toolbox and Benchmark}, + author={MMClassification Contributors}, + howpublished = {\url{https://github.com/open-mmlab/mmclassification}}, + year={2020} +} +``` + +## 许可证 + +该项目开源自 [Apache 2.0 license](LICENSE). + +## OpenMMLab 的其他项目 + +- [MMCV](https://github.com/open-mmlab/mmcv): OpenMMLab 计算机视觉基础库 +- [MIM](https://github.com/open-mmlab/mim): MIM 是 OpenMMlab 项目、算法、模型的统一入口 +- [MMClassification](https://github.com/open-mmlab/mmclassification): OpenMMLab 图像分类工具箱 +- [MMDetection](https://github.com/open-mmlab/mmdetection): OpenMMLab 目标检测工具箱 +- [MMDetection3D](https://github.com/open-mmlab/mmdetection3d): OpenMMLab 新一代通用 3D 目标检测平台 +- [MMRotate](https://github.com/open-mmlab/mmrotate): OpenMMLab 旋转框检测工具箱与测试基准 +- [MMSegmentation](https://github.com/open-mmlab/mmsegmentation): OpenMMLab 语义分割工具箱 +- [MMOCR](https://github.com/open-mmlab/mmocr): OpenMMLab 全流程文字检测识别理解工具包 +- [MMPose](https://github.com/open-mmlab/mmpose): OpenMMLab 姿态估计工具箱 +- [MMHuman3D](https://github.com/open-mmlab/mmhuman3d): OpenMMLab 人体参数化模型工具箱与测试基准 +- [MMSelfSup](https://github.com/open-mmlab/mmselfsup): OpenMMLab 自监督学习工具箱与测试基准 +- [MMRazor](https://github.com/open-mmlab/mmrazor): OpenMMLab 模型压缩工具箱与测试基准 +- [MMFewShot](https://github.com/open-mmlab/mmfewshot): OpenMMLab 少样本学习工具箱与测试基准 +- [MMAction2](https://github.com/open-mmlab/mmaction2): OpenMMLab 新一代视频理解工具箱 +- [MMTracking](https://github.com/open-mmlab/mmtracking): OpenMMLab 一体化视频目标感知平台 +- [MMFlow](https://github.com/open-mmlab/mmflow): OpenMMLab 光流估计工具箱与测试基准 +- [MMEditing](https://github.com/open-mmlab/mmediting): OpenMMLab 图像视频编辑工具箱 +- [MMGeneration](https://github.com/open-mmlab/mmgeneration): OpenMMLab 图片视频生成模型工具箱 +- [MMDeploy](https://github.com/open-mmlab/mmdeploy): OpenMMLab 模型部署框架 + +## 欢迎加入 OpenMMLab 社区 + +扫描下方的二维码可关注 OpenMMLab 团队的 [知乎官方账号](https://www.zhihu.com/people/openmmlab),加入 OpenMMLab 团队的 [官方交流 QQ 群](https://jq.qq.com/?_wv=1027&k=aCvMxdr3) 或联络 OpenMMLab 官方微信小助手 + +
+ +
+ +我们会在 OpenMMLab 社区为大家 + +- 📢 分享 AI 框架的前沿核心技术 +- 💻 解读 PyTorch 常用模块源码 +- 📰 发布 OpenMMLab 的相关新闻 +- 🚀 介绍 OpenMMLab 开发的前沿算法 +- 🏃 获取更高效的问题答疑和意见反馈 +- 🔥 提供与各行各业开发者充分交流的平台 + +干货满满 📘,等你来撩 💗,OpenMMLab 社区期待您的加入 👬 diff --git a/openmmlab_test/mmclassification-speed-benchmark/configs/_base_/datasets/cifar100_bs16.py b/openmmlab_test/mmclassification-0.24.1/configs/_base_/datasets/cifar100_bs16.py similarity index 100% rename from openmmlab_test/mmclassification-speed-benchmark/configs/_base_/datasets/cifar100_bs16.py rename to openmmlab_test/mmclassification-0.24.1/configs/_base_/datasets/cifar100_bs16.py diff --git a/openmmlab_test/mmclassification-speed-benchmark/configs/_base_/datasets/cifar10_bs16.py b/openmmlab_test/mmclassification-0.24.1/configs/_base_/datasets/cifar10_bs16.py similarity index 100% rename from openmmlab_test/mmclassification-speed-benchmark/configs/_base_/datasets/cifar10_bs16.py rename to openmmlab_test/mmclassification-0.24.1/configs/_base_/datasets/cifar10_bs16.py diff --git a/openmmlab_test/mmclassification-0.24.1/configs/_base_/datasets/cub_bs8_384.py b/openmmlab_test/mmclassification-0.24.1/configs/_base_/datasets/cub_bs8_384.py new file mode 100644 index 00000000..4acad24b --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/_base_/datasets/cub_bs8_384.py @@ -0,0 +1,54 @@ +# dataset settings +dataset_type = 'CUB' +img_norm_cfg = dict( + mean=[123.675, 116.28, 103.53], std=[58.395, 57.12, 57.375], to_rgb=True) +train_pipeline = [ + dict(type='LoadImageFromFile'), + dict(type='Resize', size=510), + dict(type='RandomCrop', size=384), + dict(type='RandomFlip', flip_prob=0.5, direction='horizontal'), + dict(type='Normalize', **img_norm_cfg), + dict(type='ImageToTensor', keys=['img']), + dict(type='ToTensor', keys=['gt_label']), + dict(type='Collect', keys=['img', 'gt_label']) +] +test_pipeline = [ + dict(type='LoadImageFromFile'), + dict(type='Resize', size=510), + dict(type='CenterCrop', crop_size=384), + dict(type='Normalize', **img_norm_cfg), + dict(type='ImageToTensor', keys=['img']), + dict(type='Collect', keys=['img']) +] + +data_root = 'data/CUB_200_2011/' +data = dict( + samples_per_gpu=8, + workers_per_gpu=2, + train=dict( + type=dataset_type, + ann_file=data_root + 'images.txt', + image_class_labels_file=data_root + 'image_class_labels.txt', + train_test_split_file=data_root + 'train_test_split.txt', + data_prefix=data_root + 'images', + pipeline=train_pipeline), + val=dict( + type=dataset_type, + ann_file=data_root + 'images.txt', + image_class_labels_file=data_root + 'image_class_labels.txt', + train_test_split_file=data_root + 'train_test_split.txt', + data_prefix=data_root + 'images', + test_mode=True, + pipeline=test_pipeline), + test=dict( + type=dataset_type, + ann_file=data_root + 'images.txt', + image_class_labels_file=data_root + 'image_class_labels.txt', + train_test_split_file=data_root + 'train_test_split.txt', + data_prefix=data_root + 'images', + test_mode=True, + pipeline=test_pipeline)) + +evaluation = dict( + interval=1, metric='accuracy', + save_best='auto') # save the checkpoint with highest accuracy diff --git a/openmmlab_test/mmclassification-0.24.1/configs/_base_/datasets/cub_bs8_448.py b/openmmlab_test/mmclassification-0.24.1/configs/_base_/datasets/cub_bs8_448.py new file mode 100644 index 00000000..9e909a18 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/_base_/datasets/cub_bs8_448.py @@ -0,0 +1,54 @@ +# dataset settings +dataset_type = 'CUB' +img_norm_cfg = dict( + mean=[123.675, 116.28, 103.53], std=[58.395, 57.12, 57.375], to_rgb=True) +train_pipeline = [ + dict(type='LoadImageFromFile'), + dict(type='Resize', size=600), + dict(type='RandomCrop', size=448), + dict(type='RandomFlip', flip_prob=0.5, direction='horizontal'), + dict(type='Normalize', **img_norm_cfg), + dict(type='ImageToTensor', keys=['img']), + dict(type='ToTensor', keys=['gt_label']), + dict(type='Collect', keys=['img', 'gt_label']) +] +test_pipeline = [ + dict(type='LoadImageFromFile'), + dict(type='Resize', size=600), + dict(type='CenterCrop', crop_size=448), + dict(type='Normalize', **img_norm_cfg), + dict(type='ImageToTensor', keys=['img']), + dict(type='Collect', keys=['img']) +] + +data_root = 'data/CUB_200_2011/' +data = dict( + samples_per_gpu=8, + workers_per_gpu=2, + train=dict( + type=dataset_type, + ann_file=data_root + 'images.txt', + image_class_labels_file=data_root + 'image_class_labels.txt', + train_test_split_file=data_root + 'train_test_split.txt', + data_prefix=data_root + 'images', + pipeline=train_pipeline), + val=dict( + type=dataset_type, + ann_file=data_root + 'images.txt', + image_class_labels_file=data_root + 'image_class_labels.txt', + train_test_split_file=data_root + 'train_test_split.txt', + data_prefix=data_root + 'images', + test_mode=True, + pipeline=test_pipeline), + test=dict( + type=dataset_type, + ann_file=data_root + 'images.txt', + image_class_labels_file=data_root + 'image_class_labels.txt', + train_test_split_file=data_root + 'train_test_split.txt', + data_prefix=data_root + 'images', + test_mode=True, + pipeline=test_pipeline)) + +evaluation = dict( + interval=1, metric='accuracy', + save_best='auto') # save the checkpoint with highest accuracy diff --git a/openmmlab_test/mmclassification-0.24.1/configs/_base_/datasets/imagenet21k_bs128.py b/openmmlab_test/mmclassification-0.24.1/configs/_base_/datasets/imagenet21k_bs128.py new file mode 100644 index 00000000..b81a7466 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/_base_/datasets/imagenet21k_bs128.py @@ -0,0 +1,43 @@ +# dataset settings +dataset_type = 'ImageNet21k' +img_norm_cfg = dict( + mean=[123.675, 116.28, 103.53], std=[58.395, 57.12, 57.375], to_rgb=True) +train_pipeline = [ + dict(type='LoadImageFromFile'), + dict(type='RandomResizedCrop', size=224), + dict(type='RandomFlip', flip_prob=0.5, direction='horizontal'), + dict(type='Normalize', **img_norm_cfg), + dict(type='ImageToTensor', keys=['img']), + dict(type='ToTensor', keys=['gt_label']), + dict(type='Collect', keys=['img', 'gt_label']) +] +test_pipeline = [ + dict(type='LoadImageFromFile'), + dict(type='Resize', size=(256, -1)), + dict(type='CenterCrop', crop_size=224), + dict(type='Normalize', **img_norm_cfg), + dict(type='ImageToTensor', keys=['img']), + dict(type='Collect', keys=['img']) +] +data = dict( + samples_per_gpu=128, + workers_per_gpu=2, + train=dict( + type=dataset_type, + data_prefix='data/imagenet21k/train', + pipeline=train_pipeline, + recursion_subdir=True), + val=dict( + type=dataset_type, + data_prefix='data/imagenet21k/val', + ann_file='data/imagenet21k/meta/val.txt', + pipeline=test_pipeline, + recursion_subdir=True), + test=dict( + # replace `data/val` with `data/test` for standard test + type=dataset_type, + data_prefix='data/imagenet21k/val', + ann_file='data/imagenet21k/meta/val.txt', + pipeline=test_pipeline, + recursion_subdir=True)) +evaluation = dict(interval=1, metric='accuracy') diff --git a/openmmlab_test/mmclassification-0.24.1/configs/_base_/datasets/imagenet_bs128_poolformer_medium_224.py b/openmmlab_test/mmclassification-0.24.1/configs/_base_/datasets/imagenet_bs128_poolformer_medium_224.py new file mode 100644 index 00000000..667e58a1 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/_base_/datasets/imagenet_bs128_poolformer_medium_224.py @@ -0,0 +1,71 @@ +_base_ = ['./pipelines/rand_aug.py'] + +# dataset settings +dataset_type = 'ImageNet' +img_norm_cfg = dict( + mean=[123.675, 116.28, 103.53], std=[58.395, 57.12, 57.375], to_rgb=True) + +train_pipeline = [ + dict(type='LoadImageFromFile'), + dict( + type='RandomResizedCrop', + size=224, + backend='pillow', + interpolation='bicubic'), + dict(type='RandomFlip', flip_prob=0.5, direction='horizontal'), + dict( + type='RandAugment', + policies={{_base_.rand_increasing_policies}}, + num_policies=2, + total_level=10, + magnitude_level=9, + magnitude_std=0.5, + hparams=dict( + pad_val=[round(x) for x in img_norm_cfg['mean'][::-1]], + interpolation='bicubic')), + dict( + type='RandomErasing', + erase_prob=0.25, + mode='rand', + min_area_ratio=0.02, + max_area_ratio=1 / 3, + fill_color=img_norm_cfg['mean'][::-1], + fill_std=img_norm_cfg['std'][::-1]), + dict(type='Normalize', **img_norm_cfg), + dict(type='ImageToTensor', keys=['img']), + dict(type='ToTensor', keys=['gt_label']), + dict(type='Collect', keys=['img', 'gt_label']) +] + +test_pipeline = [ + dict(type='LoadImageFromFile'), + dict( + type='Resize', + size=(236, -1), + backend='pillow', + interpolation='bicubic'), + dict(type='CenterCrop', crop_size=224), + dict(type='Normalize', **img_norm_cfg), + dict(type='ImageToTensor', keys=['img']), + dict(type='Collect', keys=['img']) +] +data = dict( + samples_per_gpu=128, + workers_per_gpu=8, + train=dict( + type=dataset_type, + data_prefix='data/imagenet/train', + pipeline=train_pipeline), + val=dict( + type=dataset_type, + data_prefix='data/imagenet/val', + ann_file='data/imagenet/meta/val.txt', + pipeline=test_pipeline), + test=dict( + # replace `data/val` with `data/test` for standard test + type=dataset_type, + data_prefix='data/imagenet/val', + ann_file='data/imagenet/meta/val.txt', + pipeline=test_pipeline)) + +evaluation = dict(interval=10, metric='accuracy') diff --git a/openmmlab_test/mmclassification-0.24.1/configs/_base_/datasets/imagenet_bs128_poolformer_small_224.py b/openmmlab_test/mmclassification-0.24.1/configs/_base_/datasets/imagenet_bs128_poolformer_small_224.py new file mode 100644 index 00000000..76aee7e1 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/_base_/datasets/imagenet_bs128_poolformer_small_224.py @@ -0,0 +1,71 @@ +_base_ = ['./pipelines/rand_aug.py'] + +# dataset settings +dataset_type = 'ImageNet' +img_norm_cfg = dict( + mean=[123.675, 116.28, 103.53], std=[58.395, 57.12, 57.375], to_rgb=True) + +train_pipeline = [ + dict(type='LoadImageFromFile'), + dict( + type='RandomResizedCrop', + size=224, + backend='pillow', + interpolation='bicubic'), + dict(type='RandomFlip', flip_prob=0.5, direction='horizontal'), + dict( + type='RandAugment', + policies={{_base_.rand_increasing_policies}}, + num_policies=2, + total_level=10, + magnitude_level=9, + magnitude_std=0.5, + hparams=dict( + pad_val=[round(x) for x in img_norm_cfg['mean'][::-1]], + interpolation='bicubic')), + dict( + type='RandomErasing', + erase_prob=0.25, + mode='rand', + min_area_ratio=0.02, + max_area_ratio=1 / 3, + fill_color=img_norm_cfg['mean'][::-1], + fill_std=img_norm_cfg['std'][::-1]), + dict(type='Normalize', **img_norm_cfg), + dict(type='ImageToTensor', keys=['img']), + dict(type='ToTensor', keys=['gt_label']), + dict(type='Collect', keys=['img', 'gt_label']) +] + +test_pipeline = [ + dict(type='LoadImageFromFile'), + dict( + type='Resize', + size=(248, -1), + backend='pillow', + interpolation='bicubic'), + dict(type='CenterCrop', crop_size=224), + dict(type='Normalize', **img_norm_cfg), + dict(type='ImageToTensor', keys=['img']), + dict(type='Collect', keys=['img']) +] +data = dict( + samples_per_gpu=128, + workers_per_gpu=8, + train=dict( + type=dataset_type, + data_prefix='data/imagenet/train', + pipeline=train_pipeline), + val=dict( + type=dataset_type, + data_prefix='data/imagenet/val', + ann_file='data/imagenet/meta/val.txt', + pipeline=test_pipeline), + test=dict( + # replace `data/val` with `data/test` for standard test + type=dataset_type, + data_prefix='data/imagenet/val', + ann_file='data/imagenet/meta/val.txt', + pipeline=test_pipeline)) + +evaluation = dict(interval=10, metric='accuracy') diff --git a/openmmlab_test/mmclassification-0.24.1/configs/_base_/datasets/imagenet_bs256_rsb_a12.py b/openmmlab_test/mmclassification-0.24.1/configs/_base_/datasets/imagenet_bs256_rsb_a12.py new file mode 100644 index 00000000..75968556 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/_base_/datasets/imagenet_bs256_rsb_a12.py @@ -0,0 +1,53 @@ +_base_ = ['./pipelines/rand_aug.py'] + +# dataset settings +dataset_type = 'ImageNet' +img_norm_cfg = dict( + mean=[123.675, 116.28, 103.53], std=[58.395, 57.12, 57.375], to_rgb=True) +train_pipeline = [ + dict(type='LoadImageFromFile'), + dict(type='RandomResizedCrop', size=224), + dict(type='RandomFlip', flip_prob=0.5, direction='horizontal'), + dict( + type='RandAugment', + policies={{_base_.rand_increasing_policies}}, + num_policies=2, + total_level=10, + magnitude_level=7, + magnitude_std=0.5, + hparams=dict( + pad_val=[round(x) for x in img_norm_cfg['mean'][::-1]], + interpolation='bicubic')), + dict(type='Normalize', **img_norm_cfg), + dict(type='ImageToTensor', keys=['img']), + dict(type='ToTensor', keys=['gt_label']), + dict(type='Collect', keys=['img', 'gt_label']) +] +test_pipeline = [ + dict(type='LoadImageFromFile'), + dict(type='Resize', size=(236, -1)), + dict(type='CenterCrop', crop_size=224), + dict(type='Normalize', **img_norm_cfg), + dict(type='ImageToTensor', keys=['img']), + dict(type='Collect', keys=['img']) +] +data = dict( + samples_per_gpu=256, + workers_per_gpu=4, + train=dict( + type=dataset_type, + data_prefix='data/imagenet/train', + pipeline=train_pipeline), + val=dict( + type=dataset_type, + data_prefix='data/imagenet/val', + ann_file='data/imagenet/meta/val.txt', + pipeline=test_pipeline), + test=dict( + # replace `data/val` with `data/test` for standard test + type=dataset_type, + data_prefix='data/imagenet/val', + ann_file='data/imagenet/meta/val.txt', + pipeline=test_pipeline)) + +evaluation = dict(interval=1, metric='accuracy') diff --git a/openmmlab_test/mmclassification-0.24.1/configs/_base_/datasets/imagenet_bs256_rsb_a3.py b/openmmlab_test/mmclassification-0.24.1/configs/_base_/datasets/imagenet_bs256_rsb_a3.py new file mode 100644 index 00000000..aee640d7 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/_base_/datasets/imagenet_bs256_rsb_a3.py @@ -0,0 +1,53 @@ +_base_ = ['./pipelines/rand_aug.py'] + +# dataset settings +dataset_type = 'ImageNet' +img_norm_cfg = dict( + mean=[123.675, 116.28, 103.53], std=[58.395, 57.12, 57.375], to_rgb=True) +train_pipeline = [ + dict(type='LoadImageFromFile'), + dict(type='RandomResizedCrop', size=160), + dict(type='RandomFlip', flip_prob=0.5, direction='horizontal'), + dict( + type='RandAugment', + policies={{_base_.rand_increasing_policies}}, + num_policies=2, + total_level=10, + magnitude_level=6, + magnitude_std=0.5, + hparams=dict( + pad_val=[round(x) for x in img_norm_cfg['mean'][::-1]], + interpolation='bicubic')), + dict(type='Normalize', **img_norm_cfg), + dict(type='ImageToTensor', keys=['img']), + dict(type='ToTensor', keys=['gt_label']), + dict(type='Collect', keys=['img', 'gt_label']) +] +test_pipeline = [ + dict(type='LoadImageFromFile'), + dict(type='Resize', size=(236, -1)), + dict(type='CenterCrop', crop_size=224), + dict(type='Normalize', **img_norm_cfg), + dict(type='ImageToTensor', keys=['img']), + dict(type='Collect', keys=['img']) +] +data = dict( + samples_per_gpu=256, + workers_per_gpu=4, + train=dict( + type=dataset_type, + data_prefix='data/imagenet/train', + pipeline=train_pipeline), + val=dict( + type=dataset_type, + data_prefix='data/imagenet/val', + ann_file='data/imagenet/meta/val.txt', + pipeline=test_pipeline), + test=dict( + # replace `data/val` with `data/test` for standard test + type=dataset_type, + data_prefix='data/imagenet/val', + ann_file='data/imagenet/meta/val.txt', + pipeline=test_pipeline)) + +evaluation = dict(interval=1, metric='accuracy') diff --git a/openmmlab_test/mmclassification-0.24.1/configs/_base_/datasets/imagenet_bs32.py b/openmmlab_test/mmclassification-0.24.1/configs/_base_/datasets/imagenet_bs32.py new file mode 100644 index 00000000..aca48d76 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/_base_/datasets/imagenet_bs32.py @@ -0,0 +1,40 @@ +# dataset settings +dataset_type = 'ImageNet' +img_norm_cfg = dict( + mean=[123.675, 116.28, 103.53], std=[58.395, 57.12, 57.375], to_rgb=True) +train_pipeline = [ + dict(type='LoadImageFromFile'), + dict(type='RandomResizedCrop', size=224), + dict(type='RandomFlip', flip_prob=0.5, direction='horizontal'), + dict(type='Normalize', **img_norm_cfg), + dict(type='ImageToTensor', keys=['img']), + dict(type='ToTensor', keys=['gt_label']), + dict(type='Collect', keys=['img', 'gt_label']) +] +test_pipeline = [ + dict(type='LoadImageFromFile'), + dict(type='Resize', size=(256, -1)), + dict(type='CenterCrop', crop_size=224), + dict(type='Normalize', **img_norm_cfg), + dict(type='ImageToTensor', keys=['img']), + dict(type='Collect', keys=['img']) +] +data = dict( + samples_per_gpu=128, #[32], + workers_per_gpu=2, + train=dict( + type=dataset_type, + data_prefix='/public/DL_DATA/ImageNet-pytorch/train', + pipeline=train_pipeline), + val=dict( + type=dataset_type, + data_prefix='/work/home/ac60ssbz5p/openmmlab_test_new/data/', + ann_file='/work/home/ac60ssbz5p/openmmlab_test_new/data/val_list.txt', + pipeline=test_pipeline), + test=dict( + # replace `data/val` with `data/test` for standard test + type=dataset_type, + data_prefix='/work/home/ac60ssbz5p/openmmlab_test_new/data/', + ann_file='/work/home/ac60ssbz5p/openmmlab_test_new/data/val_list.txt', + pipeline=test_pipeline)) +evaluation = dict(interval=1, metric='accuracy') diff --git a/openmmlab_test/mmclassification-0.24.1/configs/_base_/datasets/imagenet_bs32_pil_bicubic.py b/openmmlab_test/mmclassification-0.24.1/configs/_base_/datasets/imagenet_bs32_pil_bicubic.py new file mode 100644 index 00000000..d66c1bd9 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/_base_/datasets/imagenet_bs32_pil_bicubic.py @@ -0,0 +1,48 @@ +# dataset settings +dataset_type = 'ImageNet' +img_norm_cfg = dict( + mean=[123.675, 116.28, 103.53], std=[58.395, 57.12, 57.375], to_rgb=True) +train_pipeline = [ + dict(type='LoadImageFromFile'), + dict( + type='RandomResizedCrop', + size=224, + backend='pillow', + interpolation='bicubic'), + dict(type='RandomFlip', flip_prob=0.5, direction='horizontal'), + dict(type='Normalize', **img_norm_cfg), + dict(type='ImageToTensor', keys=['img']), + dict(type='ToTensor', keys=['gt_label']), + dict(type='Collect', keys=['img', 'gt_label']) +] +test_pipeline = [ + dict(type='LoadImageFromFile'), + dict( + type='Resize', + size=(256, -1), + backend='pillow', + interpolation='bicubic'), + dict(type='CenterCrop', crop_size=224), + dict(type='Normalize', **img_norm_cfg), + dict(type='ImageToTensor', keys=['img']), + dict(type='Collect', keys=['img']) +] +data = dict( + samples_per_gpu=32, + workers_per_gpu=2, + train=dict( + type=dataset_type, + data_prefix='data/imagenet/train', + pipeline=train_pipeline), + val=dict( + type=dataset_type, + data_prefix='data/imagenet/val', + ann_file='data/imagenet/meta/val.txt', + pipeline=test_pipeline), + test=dict( + # replace `data/val` with `data/test` for standard test + type=dataset_type, + data_prefix='data/imagenet/val', + ann_file='data/imagenet/meta/val.txt', + pipeline=test_pipeline)) +evaluation = dict(interval=1, metric='accuracy') diff --git a/openmmlab_test/mmclassification-speed-benchmark/configs/_base_/datasets/imagenet_bs32_pil_resize.py b/openmmlab_test/mmclassification-0.24.1/configs/_base_/datasets/imagenet_bs32_pil_resize.py similarity index 91% rename from openmmlab_test/mmclassification-speed-benchmark/configs/_base_/datasets/imagenet_bs32_pil_resize.py rename to openmmlab_test/mmclassification-0.24.1/configs/_base_/datasets/imagenet_bs32_pil_resize.py index 22b74f76..ee452e23 100644 --- a/openmmlab_test/mmclassification-speed-benchmark/configs/_base_/datasets/imagenet_bs32_pil_resize.py +++ b/openmmlab_test/mmclassification-0.24.1/configs/_base_/datasets/imagenet_bs32_pil_resize.py @@ -20,7 +20,7 @@ test_pipeline = [ dict(type='Collect', keys=['img']) ] data = dict( - samples_per_gpu=32, + samples_per_gpu=128, workers_per_gpu=2, train=dict( type=dataset_type, @@ -34,7 +34,7 @@ data = dict( test=dict( # replace `data/val` with `data/test` for standard test type=dataset_type, - data_prefix='data/imagenet/val', - ann_file='data/imagenet/meta/val.txt', + data_prefix='/public/DL_DATA/ImageNet-pytorch/val/', + #ann_file='data/val_list.txt', pipeline=test_pipeline)) evaluation = dict(interval=1, metric='accuracy') diff --git a/openmmlab_test/mmclassification-speed-benchmark/configs/_base_/datasets/imagenet_bs64.py b/openmmlab_test/mmclassification-0.24.1/configs/_base_/datasets/imagenet_bs64.py similarity index 100% rename from openmmlab_test/mmclassification-speed-benchmark/configs/_base_/datasets/imagenet_bs64.py rename to openmmlab_test/mmclassification-0.24.1/configs/_base_/datasets/imagenet_bs64.py diff --git a/openmmlab_test/mmclassification-0.24.1/configs/_base_/datasets/imagenet_bs64_autoaug.py b/openmmlab_test/mmclassification-0.24.1/configs/_base_/datasets/imagenet_bs64_autoaug.py new file mode 100644 index 00000000..a1092a31 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/_base_/datasets/imagenet_bs64_autoaug.py @@ -0,0 +1,43 @@ +_base_ = ['./pipelines/auto_aug.py'] + +# dataset settings +dataset_type = 'ImageNet' +img_norm_cfg = dict( + mean=[123.675, 116.28, 103.53], std=[58.395, 57.12, 57.375], to_rgb=True) +train_pipeline = [ + dict(type='LoadImageFromFile'), + dict(type='RandomResizedCrop', size=224), + dict(type='RandomFlip', flip_prob=0.5, direction='horizontal'), + dict(type='AutoAugment', policies={{_base_.auto_increasing_policies}}), + dict(type='Normalize', **img_norm_cfg), + dict(type='ImageToTensor', keys=['img']), + dict(type='ToTensor', keys=['gt_label']), + dict(type='Collect', keys=['img', 'gt_label']) +] +test_pipeline = [ + dict(type='LoadImageFromFile'), + dict(type='Resize', size=(256, -1)), + dict(type='CenterCrop', crop_size=224), + dict(type='Normalize', **img_norm_cfg), + dict(type='ImageToTensor', keys=['img']), + dict(type='Collect', keys=['img']) +] +data = dict( + samples_per_gpu=64, + workers_per_gpu=2, + train=dict( + type=dataset_type, + data_prefix='data/imagenet/train', + pipeline=train_pipeline), + val=dict( + type=dataset_type, + data_prefix='data/imagenet/val', + ann_file='data/imagenet/meta/val.txt', + pipeline=test_pipeline), + test=dict( + # replace `data/val` with `data/test` for standard test + type=dataset_type, + data_prefix='data/imagenet/val', + ann_file='data/imagenet/meta/val.txt', + pipeline=test_pipeline)) +evaluation = dict(interval=1, metric='accuracy') diff --git a/openmmlab_test/mmclassification-0.24.1/configs/_base_/datasets/imagenet_bs64_convmixer_224.py b/openmmlab_test/mmclassification-0.24.1/configs/_base_/datasets/imagenet_bs64_convmixer_224.py new file mode 100644 index 00000000..afd71136 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/_base_/datasets/imagenet_bs64_convmixer_224.py @@ -0,0 +1,71 @@ +_base_ = ['./pipelines/rand_aug.py'] + +# dataset settings +dataset_type = 'ImageNet' +img_norm_cfg = dict( + mean=[123.675, 116.28, 103.53], std=[58.395, 57.12, 57.375], to_rgb=True) + +train_pipeline = [ + dict(type='LoadImageFromFile'), + dict( + type='RandomResizedCrop', + size=224, + backend='pillow', + interpolation='bicubic'), + dict(type='RandomFlip', flip_prob=0.5, direction='horizontal'), + dict( + type='RandAugment', + policies={{_base_.rand_increasing_policies}}, + num_policies=2, + total_level=10, + magnitude_level=9, + magnitude_std=0.5, + hparams=dict( + pad_val=[round(x) for x in img_norm_cfg['mean'][::-1]], + interpolation='bicubic')), + dict( + type='RandomErasing', + erase_prob=0.25, + mode='rand', + min_area_ratio=0.02, + max_area_ratio=1 / 3, + fill_color=img_norm_cfg['mean'][::-1], + fill_std=img_norm_cfg['std'][::-1]), + dict(type='Normalize', **img_norm_cfg), + dict(type='ImageToTensor', keys=['img']), + dict(type='ToTensor', keys=['gt_label']), + dict(type='Collect', keys=['img', 'gt_label']) +] + +test_pipeline = [ + dict(type='LoadImageFromFile'), + dict( + type='Resize', + size=(233, -1), + backend='pillow', + interpolation='bicubic'), + dict(type='CenterCrop', crop_size=224), + dict(type='Normalize', **img_norm_cfg), + dict(type='ImageToTensor', keys=['img']), + dict(type='Collect', keys=['img']) +] +data = dict( + samples_per_gpu=64, + workers_per_gpu=8, + train=dict( + type=dataset_type, + data_prefix='data/imagenet/train', + pipeline=train_pipeline), + val=dict( + type=dataset_type, + data_prefix='data/imagenet/val', + ann_file='data/imagenet/meta/val.txt', + pipeline=test_pipeline), + test=dict( + # replace `data/val` with `data/test` for standard test + type=dataset_type, + data_prefix='data/imagenet/val', + ann_file='data/imagenet/meta/val.txt', + pipeline=test_pipeline)) + +evaluation = dict(interval=10, metric='accuracy') diff --git a/openmmlab_test/mmclassification-0.24.1/configs/_base_/datasets/imagenet_bs64_mixer_224.py b/openmmlab_test/mmclassification-0.24.1/configs/_base_/datasets/imagenet_bs64_mixer_224.py new file mode 100644 index 00000000..a005436d --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/_base_/datasets/imagenet_bs64_mixer_224.py @@ -0,0 +1,48 @@ +# dataset settings +dataset_type = 'ImageNet' + +# change according to https://github.com/rwightman/pytorch-image-models/blob +# /master/timm/models/mlp_mixer.py +img_norm_cfg = dict( + mean=[127.5, 127.5, 127.5], std=[127.5, 127.5, 127.5], to_rgb=True) + +# training is not supported for now +train_pipeline = [ + dict(type='LoadImageFromFile'), + dict(type='RandomResizedCrop', size=224, backend='cv2'), + dict(type='RandomFlip', flip_prob=0.5, direction='horizontal'), + dict(type='Normalize', **img_norm_cfg), + dict(type='ImageToTensor', keys=['img']), + dict(type='ToTensor', keys=['gt_label']), + dict(type='Collect', keys=['img', 'gt_label']) +] + +test_pipeline = [ + dict(type='LoadImageFromFile'), + dict( + type='Resize', size=(256, -1), backend='cv2', interpolation='bicubic'), + dict(type='CenterCrop', crop_size=224), + dict(type='Normalize', **img_norm_cfg), + dict(type='ImageToTensor', keys=['img']), + dict(type='Collect', keys=['img']) +] +data = dict( + samples_per_gpu=64, + workers_per_gpu=8, + train=dict( + type=dataset_type, + data_prefix='data/imagenet/train', + pipeline=train_pipeline), + val=dict( + type=dataset_type, + data_prefix='data/imagenet/val', + ann_file='data/imagenet/meta/val.txt', + pipeline=test_pipeline), + test=dict( + # replace `data/val` with `data/test` for standard test + type=dataset_type, + data_prefix='data/imagenet/val', + ann_file='data/imagenet/meta/val.txt', + pipeline=test_pipeline)) + +evaluation = dict(interval=10, metric='accuracy') diff --git a/openmmlab_test/mmclassification-speed-benchmark/configs/_base_/datasets/imagenet_bs64_pil_resize.py b/openmmlab_test/mmclassification-0.24.1/configs/_base_/datasets/imagenet_bs64_pil_resize.py similarity index 92% rename from openmmlab_test/mmclassification-speed-benchmark/configs/_base_/datasets/imagenet_bs64_pil_resize.py rename to openmmlab_test/mmclassification-0.24.1/configs/_base_/datasets/imagenet_bs64_pil_resize.py index 95d0e1f2..61a25646 100644 --- a/openmmlab_test/mmclassification-speed-benchmark/configs/_base_/datasets/imagenet_bs64_pil_resize.py +++ b/openmmlab_test/mmclassification-0.24.1/configs/_base_/datasets/imagenet_bs64_pil_resize.py @@ -34,7 +34,7 @@ data = dict( test=dict( # replace `data/val` with `data/test` for standard test type=dataset_type, - data_prefix='data/imagenet/val', - ann_file='data/imagenet/meta/val.txt', + data_prefix='/public/DL_DATA/ImageNet-pytorch/val', + #ann_file='data/imagenet/meta/val.txt', pipeline=test_pipeline)) evaluation = dict(interval=1, metric='accuracy') diff --git a/openmmlab_test/mmclassification-0.24.1/configs/_base_/datasets/imagenet_bs64_pil_resize_autoaug.py b/openmmlab_test/mmclassification-0.24.1/configs/_base_/datasets/imagenet_bs64_pil_resize_autoaug.py new file mode 100644 index 00000000..2a9a4de8 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/_base_/datasets/imagenet_bs64_pil_resize_autoaug.py @@ -0,0 +1,53 @@ +_base_ = [ + 'pipelines/auto_aug.py', +] + +# dataset settings +dataset_type = 'ImageNet' +img_norm_cfg = dict( + mean=[123.675, 116.28, 103.53], std=[58.395, 57.12, 57.375], to_rgb=True) +train_pipeline = [ + dict(type='LoadImageFromFile'), + dict( + type='RandomResizedCrop', + size=224, + backend='pillow', + interpolation='bicubic'), + dict(type='RandomFlip', flip_prob=0.5, direction='horizontal'), + dict(type='AutoAugment', policies={{_base_.policy_imagenet}}), + dict(type='Normalize', **img_norm_cfg), + dict(type='ImageToTensor', keys=['img']), + dict(type='ToTensor', keys=['gt_label']), + dict(type='Collect', keys=['img', 'gt_label']) +] +test_pipeline = [ + dict(type='LoadImageFromFile'), + dict( + type='Resize', + size=(256, -1), + backend='pillow', + interpolation='bicubic'), + dict(type='CenterCrop', crop_size=224), + dict(type='Normalize', **img_norm_cfg), + dict(type='ImageToTensor', keys=['img']), + dict(type='Collect', keys=['img']) +] +data = dict( + samples_per_gpu=64, + workers_per_gpu=2, + train=dict( + type=dataset_type, + data_prefix='data/imagenet/train', + pipeline=train_pipeline), + val=dict( + type=dataset_type, + data_prefix='data/imagenet/val', + ann_file='data/imagenet/meta/val.txt', + pipeline=test_pipeline), + test=dict( + # replace `data/val` with `data/test` for standard test + type=dataset_type, + data_prefix='data/imagenet/val', + ann_file='data/imagenet/meta/val.txt', + pipeline=test_pipeline)) +evaluation = dict(interval=1, metric='accuracy') diff --git a/openmmlab_test/mmclassification-0.24.1/configs/_base_/datasets/imagenet_bs64_swin_224.py b/openmmlab_test/mmclassification-0.24.1/configs/_base_/datasets/imagenet_bs64_swin_224.py new file mode 100644 index 00000000..4a059a33 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/_base_/datasets/imagenet_bs64_swin_224.py @@ -0,0 +1,71 @@ +_base_ = ['./pipelines/rand_aug.py'] + +# dataset settings +dataset_type = 'ImageNet' +img_norm_cfg = dict( + mean=[123.675, 116.28, 103.53], std=[58.395, 57.12, 57.375], to_rgb=True) + +train_pipeline = [ + dict(type='LoadImageFromFile'), + dict( + type='RandomResizedCrop', + size=224, + backend='pillow', + interpolation='bicubic'), + dict(type='RandomFlip', flip_prob=0.5, direction='horizontal'), + dict( + type='RandAugment', + policies={{_base_.rand_increasing_policies}}, + num_policies=2, + total_level=10, + magnitude_level=9, + magnitude_std=0.5, + hparams=dict( + pad_val=[round(x) for x in img_norm_cfg['mean'][::-1]], + interpolation='bicubic')), + dict( + type='RandomErasing', + erase_prob=0.25, + mode='rand', + min_area_ratio=0.02, + max_area_ratio=1 / 3, + fill_color=img_norm_cfg['mean'][::-1], + fill_std=img_norm_cfg['std'][::-1]), + dict(type='Normalize', **img_norm_cfg), + dict(type='ImageToTensor', keys=['img']), + dict(type='ToTensor', keys=['gt_label']), + dict(type='Collect', keys=['img', 'gt_label']) +] + +test_pipeline = [ + dict(type='LoadImageFromFile'), + dict( + type='Resize', + size=(256, -1), + backend='pillow', + interpolation='bicubic'), + dict(type='CenterCrop', crop_size=224), + dict(type='Normalize', **img_norm_cfg), + dict(type='ImageToTensor', keys=['img']), + dict(type='Collect', keys=['img']) +] +data = dict( + samples_per_gpu=64, + workers_per_gpu=8, + train=dict( + type=dataset_type, + data_prefix='data/imagenet/train', + pipeline=train_pipeline), + val=dict( + type=dataset_type, + data_prefix='data/imagenet/val', + ann_file='data/imagenet/meta/val.txt', + pipeline=test_pipeline), + test=dict( + # replace `data/val` with `data/test` for standard test + type=dataset_type, + data_prefix='data/imagenet/val', + ann_file='data/imagenet/meta/val.txt', + pipeline=test_pipeline)) + +evaluation = dict(interval=10, metric='accuracy') diff --git a/openmmlab_test/mmclassification-0.24.1/configs/_base_/datasets/imagenet_bs64_swin_256.py b/openmmlab_test/mmclassification-0.24.1/configs/_base_/datasets/imagenet_bs64_swin_256.py new file mode 100644 index 00000000..1f73683a --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/_base_/datasets/imagenet_bs64_swin_256.py @@ -0,0 +1,71 @@ +_base_ = ['./pipelines/rand_aug.py'] + +# dataset settings +dataset_type = 'ImageNet' +img_norm_cfg = dict( + mean=[123.675, 116.28, 103.53], std=[58.395, 57.12, 57.375], to_rgb=True) + +train_pipeline = [ + dict(type='LoadImageFromFile'), + dict( + type='RandomResizedCrop', + size=256, + backend='pillow', + interpolation='bicubic'), + dict(type='RandomFlip', flip_prob=0.5, direction='horizontal'), + dict( + type='RandAugment', + policies={{_base_.rand_increasing_policies}}, + num_policies=2, + total_level=10, + magnitude_level=9, + magnitude_std=0.5, + hparams=dict( + pad_val=[round(x) for x in img_norm_cfg['mean'][::-1]], + interpolation='bicubic')), + dict( + type='RandomErasing', + erase_prob=0.25, + mode='rand', + min_area_ratio=0.02, + max_area_ratio=1 / 3, + fill_color=img_norm_cfg['mean'][::-1], + fill_std=img_norm_cfg['std'][::-1]), + dict(type='Normalize', **img_norm_cfg), + dict(type='ImageToTensor', keys=['img']), + dict(type='ToTensor', keys=['gt_label']), + dict(type='Collect', keys=['img', 'gt_label']) +] + +test_pipeline = [ + dict(type='LoadImageFromFile'), + dict( + type='Resize', + size=(292, -1), # ( 256 / 224 * 256 ) + backend='pillow', + interpolation='bicubic'), + dict(type='CenterCrop', crop_size=256), + dict(type='Normalize', **img_norm_cfg), + dict(type='ImageToTensor', keys=['img']), + dict(type='Collect', keys=['img']) +] +data = dict( + samples_per_gpu=64, + workers_per_gpu=8, + train=dict( + type=dataset_type, + data_prefix='data/imagenet/train', + pipeline=train_pipeline), + val=dict( + type=dataset_type, + data_prefix='data/imagenet/val', + ann_file='data/imagenet/meta/val.txt', + pipeline=test_pipeline), + test=dict( + # replace `data/val` with `data/test` for standard test + type=dataset_type, + data_prefix='data/imagenet/val', + ann_file='data/imagenet/meta/val.txt', + pipeline=test_pipeline)) + +evaluation = dict(interval=10, metric='accuracy') diff --git a/openmmlab_test/mmclassification-0.24.1/configs/_base_/datasets/imagenet_bs64_swin_384.py b/openmmlab_test/mmclassification-0.24.1/configs/_base_/datasets/imagenet_bs64_swin_384.py new file mode 100644 index 00000000..d2639399 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/_base_/datasets/imagenet_bs64_swin_384.py @@ -0,0 +1,43 @@ +# dataset settings +dataset_type = 'ImageNet' +img_norm_cfg = dict( + mean=[123.675, 116.28, 103.53], std=[58.395, 57.12, 57.375], to_rgb=True) +train_pipeline = [ + dict(type='LoadImageFromFile'), + dict( + type='RandomResizedCrop', + size=384, + backend='pillow', + interpolation='bicubic'), + dict(type='RandomFlip', flip_prob=0.5, direction='horizontal'), + dict(type='Normalize', **img_norm_cfg), + dict(type='ImageToTensor', keys=['img']), + dict(type='ToTensor', keys=['gt_label']), + dict(type='Collect', keys=['img', 'gt_label']) +] +test_pipeline = [ + dict(type='LoadImageFromFile'), + dict(type='Resize', size=384, backend='pillow', interpolation='bicubic'), + dict(type='Normalize', **img_norm_cfg), + dict(type='ImageToTensor', keys=['img']), + dict(type='Collect', keys=['img']) +] +data = dict( + samples_per_gpu=64, + workers_per_gpu=8, + train=dict( + type=dataset_type, + data_prefix='data/imagenet/train', + pipeline=train_pipeline), + val=dict( + type=dataset_type, + data_prefix='data/imagenet/val', + ann_file='data/imagenet/meta/val.txt', + pipeline=test_pipeline), + test=dict( + # replace `data/val` with `data/test` for standard test + type=dataset_type, + data_prefix='data/imagenet/val', + ann_file='data/imagenet/meta/val.txt', + pipeline=test_pipeline)) +evaluation = dict(interval=10, metric='accuracy') diff --git a/openmmlab_test/mmclassification-0.24.1/configs/_base_/datasets/imagenet_bs64_t2t_224.py b/openmmlab_test/mmclassification-0.24.1/configs/_base_/datasets/imagenet_bs64_t2t_224.py new file mode 100644 index 00000000..1190d6f9 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/_base_/datasets/imagenet_bs64_t2t_224.py @@ -0,0 +1,71 @@ +_base_ = ['./pipelines/rand_aug.py'] + +# dataset settings +dataset_type = 'ImageNet' +img_norm_cfg = dict( + mean=[123.675, 116.28, 103.53], std=[58.395, 57.12, 57.375], to_rgb=True) + +train_pipeline = [ + dict(type='LoadImageFromFile'), + dict( + type='RandomResizedCrop', + size=224, + backend='pillow', + interpolation='bicubic'), + dict(type='RandomFlip', flip_prob=0.5, direction='horizontal'), + dict( + type='RandAugment', + policies={{_base_.rand_increasing_policies}}, + num_policies=2, + total_level=10, + magnitude_level=9, + magnitude_std=0.5, + hparams=dict( + pad_val=[round(x) for x in img_norm_cfg['mean'][::-1]], + interpolation='bicubic')), + dict( + type='RandomErasing', + erase_prob=0.25, + mode='rand', + min_area_ratio=0.02, + max_area_ratio=1 / 3, + fill_color=img_norm_cfg['mean'][::-1], + fill_std=img_norm_cfg['std'][::-1]), + dict(type='Normalize', **img_norm_cfg), + dict(type='ImageToTensor', keys=['img']), + dict(type='ToTensor', keys=['gt_label']), + dict(type='Collect', keys=['img', 'gt_label']) +] + +test_pipeline = [ + dict(type='LoadImageFromFile'), + dict( + type='Resize', + size=(248, -1), + backend='pillow', + interpolation='bicubic'), + dict(type='CenterCrop', crop_size=224), + dict(type='Normalize', **img_norm_cfg), + dict(type='ImageToTensor', keys=['img']), + dict(type='Collect', keys=['img']) +] +data = dict( + samples_per_gpu=64, + workers_per_gpu=4, + train=dict( + type=dataset_type, + data_prefix='data/imagenet/train', + pipeline=train_pipeline), + val=dict( + type=dataset_type, + data_prefix='data/imagenet/val', + ann_file='data/imagenet/meta/val.txt', + pipeline=test_pipeline), + test=dict( + # replace `data/val` with `data/test` for standard test + type=dataset_type, + data_prefix='data/imagenet/val', + ann_file='data/imagenet/meta/val.txt', + pipeline=test_pipeline)) + +evaluation = dict(interval=1, metric='accuracy', save_best='auto') diff --git a/openmmlab_test/mmclassification-0.24.1/configs/_base_/datasets/pipelines/auto_aug.py b/openmmlab_test/mmclassification-0.24.1/configs/_base_/datasets/pipelines/auto_aug.py new file mode 100644 index 00000000..5a10f7ee --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/_base_/datasets/pipelines/auto_aug.py @@ -0,0 +1,96 @@ +# Policy for ImageNet, refers to +# https://github.com/DeepVoltaire/AutoAugment/blame/master/autoaugment.py +policy_imagenet = [ + [ + dict(type='Posterize', bits=4, prob=0.4), + dict(type='Rotate', angle=30., prob=0.6) + ], + [ + dict(type='Solarize', thr=256 / 9 * 4, prob=0.6), + dict(type='AutoContrast', prob=0.6) + ], + [dict(type='Equalize', prob=0.8), + dict(type='Equalize', prob=0.6)], + [ + dict(type='Posterize', bits=5, prob=0.6), + dict(type='Posterize', bits=5, prob=0.6) + ], + [ + dict(type='Equalize', prob=0.4), + dict(type='Solarize', thr=256 / 9 * 5, prob=0.2) + ], + [ + dict(type='Equalize', prob=0.4), + dict(type='Rotate', angle=30 / 9 * 8, prob=0.8) + ], + [ + dict(type='Solarize', thr=256 / 9 * 6, prob=0.6), + dict(type='Equalize', prob=0.6) + ], + [dict(type='Posterize', bits=6, prob=0.8), + dict(type='Equalize', prob=1.)], + [ + dict(type='Rotate', angle=10., prob=0.2), + dict(type='Solarize', thr=256 / 9, prob=0.6) + ], + [ + dict(type='Equalize', prob=0.6), + dict(type='Posterize', bits=5, prob=0.4) + ], + [ + dict(type='Rotate', angle=30 / 9 * 8, prob=0.8), + dict(type='ColorTransform', magnitude=0., prob=0.4) + ], + [ + dict(type='Rotate', angle=30., prob=0.4), + dict(type='Equalize', prob=0.6) + ], + [dict(type='Equalize', prob=0.0), + dict(type='Equalize', prob=0.8)], + [dict(type='Invert', prob=0.6), + dict(type='Equalize', prob=1.)], + [ + dict(type='ColorTransform', magnitude=0.4, prob=0.6), + dict(type='Contrast', magnitude=0.8, prob=1.) + ], + [ + dict(type='Rotate', angle=30 / 9 * 8, prob=0.8), + dict(type='ColorTransform', magnitude=0.2, prob=1.) + ], + [ + dict(type='ColorTransform', magnitude=0.8, prob=0.8), + dict(type='Solarize', thr=256 / 9 * 2, prob=0.8) + ], + [ + dict(type='Sharpness', magnitude=0.7, prob=0.4), + dict(type='Invert', prob=0.6) + ], + [ + dict( + type='Shear', + magnitude=0.3 / 9 * 5, + prob=0.6, + direction='horizontal'), + dict(type='Equalize', prob=1.) + ], + [ + dict(type='ColorTransform', magnitude=0., prob=0.4), + dict(type='Equalize', prob=0.6) + ], + [ + dict(type='Equalize', prob=0.4), + dict(type='Solarize', thr=256 / 9 * 5, prob=0.2) + ], + [ + dict(type='Solarize', thr=256 / 9 * 4, prob=0.6), + dict(type='AutoContrast', prob=0.6) + ], + [dict(type='Invert', prob=0.6), + dict(type='Equalize', prob=1.)], + [ + dict(type='ColorTransform', magnitude=0.4, prob=0.6), + dict(type='Contrast', magnitude=0.8, prob=1.) + ], + [dict(type='Equalize', prob=0.8), + dict(type='Equalize', prob=0.6)], +] diff --git a/openmmlab_test/mmclassification-0.24.1/configs/_base_/datasets/pipelines/rand_aug.py b/openmmlab_test/mmclassification-0.24.1/configs/_base_/datasets/pipelines/rand_aug.py new file mode 100644 index 00000000..f2bab3c3 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/_base_/datasets/pipelines/rand_aug.py @@ -0,0 +1,43 @@ +# Refers to `_RAND_INCREASING_TRANSFORMS` in pytorch-image-models +rand_increasing_policies = [ + dict(type='AutoContrast'), + dict(type='Equalize'), + dict(type='Invert'), + dict(type='Rotate', magnitude_key='angle', magnitude_range=(0, 30)), + dict(type='Posterize', magnitude_key='bits', magnitude_range=(4, 0)), + dict(type='Solarize', magnitude_key='thr', magnitude_range=(256, 0)), + dict( + type='SolarizeAdd', + magnitude_key='magnitude', + magnitude_range=(0, 110)), + dict( + type='ColorTransform', + magnitude_key='magnitude', + magnitude_range=(0, 0.9)), + dict(type='Contrast', magnitude_key='magnitude', magnitude_range=(0, 0.9)), + dict( + type='Brightness', magnitude_key='magnitude', + magnitude_range=(0, 0.9)), + dict( + type='Sharpness', magnitude_key='magnitude', magnitude_range=(0, 0.9)), + dict( + type='Shear', + magnitude_key='magnitude', + magnitude_range=(0, 0.3), + direction='horizontal'), + dict( + type='Shear', + magnitude_key='magnitude', + magnitude_range=(0, 0.3), + direction='vertical'), + dict( + type='Translate', + magnitude_key='magnitude', + magnitude_range=(0, 0.45), + direction='horizontal'), + dict( + type='Translate', + magnitude_key='magnitude', + magnitude_range=(0, 0.45), + direction='vertical') +] diff --git a/openmmlab_test/mmclassification-0.24.1/configs/_base_/datasets/stanford_cars_bs8_448.py b/openmmlab_test/mmclassification-0.24.1/configs/_base_/datasets/stanford_cars_bs8_448.py new file mode 100644 index 00000000..636b2e14 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/_base_/datasets/stanford_cars_bs8_448.py @@ -0,0 +1,46 @@ +# dataset settings +dataset_type = 'StanfordCars' +img_norm_cfg = dict( + mean=[123.675, 116.28, 103.53], std=[58.395, 57.12, 57.375], to_rgb=True) +train_pipeline = [ + dict(type='LoadImageFromFile'), + dict(type='Resize', size=512), + dict(type='RandomCrop', size=448), + dict(type='RandomFlip', flip_prob=0.5, direction='horizontal'), + dict(type='Normalize', **img_norm_cfg), + dict(type='ImageToTensor', keys=['img']), + dict(type='ToTensor', keys=['gt_label']), + dict(type='Collect', keys=['img', 'gt_label']) +] +test_pipeline = [ + dict(type='LoadImageFromFile'), + dict(type='Resize', size=512), + dict(type='CenterCrop', crop_size=448), + dict(type='Normalize', **img_norm_cfg), + dict(type='ImageToTensor', keys=['img']), + dict(type='Collect', keys=['img']) +] + +data_root = 'data/stanfordcars' +data = dict( + samples_per_gpu=8, + workers_per_gpu=2, + train=dict( + type=dataset_type, + data_prefix=data_root, + test_mode=False, + pipeline=train_pipeline), + val=dict( + type=dataset_type, + data_prefix=data_root, + test_mode=True, + pipeline=test_pipeline), + test=dict( + type=dataset_type, + data_prefix=data_root, + test_mode=True, + pipeline=test_pipeline)) + +evaluation = dict( + interval=1, metric='accuracy', + save_best='auto') # save the checkpoint with highest accuracy diff --git a/openmmlab_test/mmclassification-speed-benchmark/configs/_base_/datasets/voc_bs16.py b/openmmlab_test/mmclassification-0.24.1/configs/_base_/datasets/voc_bs16.py similarity index 100% rename from openmmlab_test/mmclassification-speed-benchmark/configs/_base_/datasets/voc_bs16.py rename to openmmlab_test/mmclassification-0.24.1/configs/_base_/datasets/voc_bs16.py diff --git a/openmmlab_test/mmclassification-speed-benchmark/configs/_base_/default_runtime.py b/openmmlab_test/mmclassification-0.24.1/configs/_base_/default_runtime.py similarity index 100% rename from openmmlab_test/mmclassification-speed-benchmark/configs/_base_/default_runtime.py rename to openmmlab_test/mmclassification-0.24.1/configs/_base_/default_runtime.py diff --git a/openmmlab_test/mmclassification-0.24.1/configs/_base_/models/conformer/base-p16.py b/openmmlab_test/mmclassification-0.24.1/configs/_base_/models/conformer/base-p16.py new file mode 100644 index 00000000..157dcc98 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/_base_/models/conformer/base-p16.py @@ -0,0 +1,22 @@ +# model settings +model = dict( + type='ImageClassifier', + backbone=dict( + type='Conformer', arch='base', drop_path_rate=0.1, init_cfg=None), + neck=None, + head=dict( + type='ConformerHead', + num_classes=1000, + in_channels=[1536, 576], + init_cfg=None, + loss=dict( + type='LabelSmoothLoss', label_smooth_val=0.1, mode='original'), + cal_acc=False), + init_cfg=[ + dict(type='TruncNormal', layer='Linear', std=0.02, bias=0.), + dict(type='Constant', layer='LayerNorm', val=1., bias=0.) + ], + train_cfg=dict(augments=[ + dict(type='BatchMixup', alpha=0.8, num_classes=1000, prob=0.5), + dict(type='BatchCutMix', alpha=1.0, num_classes=1000, prob=0.5) + ])) diff --git a/openmmlab_test/mmclassification-0.24.1/configs/_base_/models/conformer/small-p16.py b/openmmlab_test/mmclassification-0.24.1/configs/_base_/models/conformer/small-p16.py new file mode 100644 index 00000000..17298089 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/_base_/models/conformer/small-p16.py @@ -0,0 +1,22 @@ +# model settings +model = dict( + type='ImageClassifier', + backbone=dict( + type='Conformer', arch='small', drop_path_rate=0.1, init_cfg=None), + neck=None, + head=dict( + type='ConformerHead', + num_classes=1000, + in_channels=[1024, 384], + init_cfg=None, + loss=dict( + type='LabelSmoothLoss', label_smooth_val=0.1, mode='original'), + cal_acc=False), + init_cfg=[ + dict(type='TruncNormal', layer='Linear', std=0.02, bias=0.), + dict(type='Constant', layer='LayerNorm', val=1., bias=0.) + ], + train_cfg=dict(augments=[ + dict(type='BatchMixup', alpha=0.8, num_classes=1000, prob=0.5), + dict(type='BatchCutMix', alpha=1.0, num_classes=1000, prob=0.5) + ])) diff --git a/openmmlab_test/mmclassification-0.24.1/configs/_base_/models/conformer/small-p32.py b/openmmlab_test/mmclassification-0.24.1/configs/_base_/models/conformer/small-p32.py new file mode 100644 index 00000000..593aba12 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/_base_/models/conformer/small-p32.py @@ -0,0 +1,26 @@ +# model settings +model = dict( + type='ImageClassifier', + backbone=dict( + type='Conformer', + arch='small', + patch_size=32, + drop_path_rate=0.1, + init_cfg=None), + neck=None, + head=dict( + type='ConformerHead', + num_classes=1000, + in_channels=[1024, 384], + init_cfg=None, + loss=dict( + type='LabelSmoothLoss', label_smooth_val=0.1, mode='original'), + cal_acc=False), + init_cfg=[ + dict(type='TruncNormal', layer='Linear', std=0.02, bias=0.), + dict(type='Constant', layer='LayerNorm', val=1., bias=0.) + ], + train_cfg=dict(augments=[ + dict(type='BatchMixup', alpha=0.8, num_classes=1000, prob=0.5), + dict(type='BatchCutMix', alpha=1.0, num_classes=1000, prob=0.5) + ])) diff --git a/openmmlab_test/mmclassification-0.24.1/configs/_base_/models/conformer/tiny-p16.py b/openmmlab_test/mmclassification-0.24.1/configs/_base_/models/conformer/tiny-p16.py new file mode 100644 index 00000000..dad8ecae --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/_base_/models/conformer/tiny-p16.py @@ -0,0 +1,22 @@ +# model settings +model = dict( + type='ImageClassifier', + backbone=dict( + type='Conformer', arch='tiny', drop_path_rate=0.1, init_cfg=None), + neck=None, + head=dict( + type='ConformerHead', + num_classes=1000, + in_channels=[256, 384], + init_cfg=None, + loss=dict( + type='LabelSmoothLoss', label_smooth_val=0.1, mode='original'), + cal_acc=False), + init_cfg=[ + dict(type='TruncNormal', layer='Linear', std=0.02, bias=0.), + dict(type='Constant', layer='LayerNorm', val=1., bias=0.) + ], + train_cfg=dict(augments=[ + dict(type='BatchMixup', alpha=0.8, num_classes=1000, prob=0.5), + dict(type='BatchCutMix', alpha=1.0, num_classes=1000, prob=0.5) + ])) diff --git a/openmmlab_test/mmclassification-0.24.1/configs/_base_/models/convmixer/convmixer-1024-20.py b/openmmlab_test/mmclassification-0.24.1/configs/_base_/models/convmixer/convmixer-1024-20.py new file mode 100644 index 00000000..a8f4d517 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/_base_/models/convmixer/convmixer-1024-20.py @@ -0,0 +1,11 @@ +# Model settings +model = dict( + type='ImageClassifier', + backbone=dict(type='ConvMixer', arch='1024/20'), + neck=dict(type='GlobalAveragePooling'), + head=dict( + type='LinearClsHead', + num_classes=1000, + in_channels=1024, + loss=dict(type='CrossEntropyLoss', loss_weight=1.0), + )) diff --git a/openmmlab_test/mmclassification-0.24.1/configs/_base_/models/convmixer/convmixer-1536-20.py b/openmmlab_test/mmclassification-0.24.1/configs/_base_/models/convmixer/convmixer-1536-20.py new file mode 100644 index 00000000..9ad8209b --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/_base_/models/convmixer/convmixer-1536-20.py @@ -0,0 +1,11 @@ +# Model settings +model = dict( + type='ImageClassifier', + backbone=dict(type='ConvMixer', arch='1536/20'), + neck=dict(type='GlobalAveragePooling'), + head=dict( + type='LinearClsHead', + num_classes=1000, + in_channels=1536, + loss=dict(type='CrossEntropyLoss', loss_weight=1.0), + )) diff --git a/openmmlab_test/mmclassification-0.24.1/configs/_base_/models/convmixer/convmixer-768-32.py b/openmmlab_test/mmclassification-0.24.1/configs/_base_/models/convmixer/convmixer-768-32.py new file mode 100644 index 00000000..1cba528b --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/_base_/models/convmixer/convmixer-768-32.py @@ -0,0 +1,11 @@ +# Model settings +model = dict( + type='ImageClassifier', + backbone=dict(type='ConvMixer', arch='768/32', act_cfg=dict(type='ReLU')), + neck=dict(type='GlobalAveragePooling'), + head=dict( + type='LinearClsHead', + num_classes=1000, + in_channels=768, + loss=dict(type='CrossEntropyLoss', loss_weight=1.0), + )) diff --git a/openmmlab_test/mmclassification-0.24.1/configs/_base_/models/convnext/convnext-base.py b/openmmlab_test/mmclassification-0.24.1/configs/_base_/models/convnext/convnext-base.py new file mode 100644 index 00000000..7fc5ce71 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/_base_/models/convnext/convnext-base.py @@ -0,0 +1,23 @@ +# Model settings +model = dict( + type='ImageClassifier', + backbone=dict( + type='ConvNeXt', + arch='base', + out_indices=(3, ), + drop_path_rate=0.5, + gap_before_final_norm=True, + init_cfg=[ + dict( + type='TruncNormal', + layer=['Conv2d', 'Linear'], + std=.02, + bias=0.), + dict(type='Constant', layer=['LayerNorm'], val=1., bias=0.), + ]), + head=dict( + type='LinearClsHead', + num_classes=1000, + in_channels=1024, + loss=dict(type='CrossEntropyLoss', loss_weight=1.0), + )) diff --git a/openmmlab_test/mmclassification-0.24.1/configs/_base_/models/convnext/convnext-large.py b/openmmlab_test/mmclassification-0.24.1/configs/_base_/models/convnext/convnext-large.py new file mode 100644 index 00000000..4d9e37c0 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/_base_/models/convnext/convnext-large.py @@ -0,0 +1,23 @@ +# Model settings +model = dict( + type='ImageClassifier', + backbone=dict( + type='ConvNeXt', + arch='large', + out_indices=(3, ), + drop_path_rate=0.5, + gap_before_final_norm=True, + init_cfg=[ + dict( + type='TruncNormal', + layer=['Conv2d', 'Linear'], + std=.02, + bias=0.), + dict(type='Constant', layer=['LayerNorm'], val=1., bias=0.), + ]), + head=dict( + type='LinearClsHead', + num_classes=1000, + in_channels=1536, + loss=dict(type='CrossEntropyLoss', loss_weight=1.0), + )) diff --git a/openmmlab_test/mmclassification-0.24.1/configs/_base_/models/convnext/convnext-small.py b/openmmlab_test/mmclassification-0.24.1/configs/_base_/models/convnext/convnext-small.py new file mode 100644 index 00000000..989ad1d4 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/_base_/models/convnext/convnext-small.py @@ -0,0 +1,23 @@ +# Model settings +model = dict( + type='ImageClassifier', + backbone=dict( + type='ConvNeXt', + arch='small', + out_indices=(3, ), + drop_path_rate=0.4, + gap_before_final_norm=True, + init_cfg=[ + dict( + type='TruncNormal', + layer=['Conv2d', 'Linear'], + std=.02, + bias=0.), + dict(type='Constant', layer=['LayerNorm'], val=1., bias=0.), + ]), + head=dict( + type='LinearClsHead', + num_classes=1000, + in_channels=768, + loss=dict(type='CrossEntropyLoss', loss_weight=1.0), + )) diff --git a/openmmlab_test/mmclassification-0.24.1/configs/_base_/models/convnext/convnext-tiny.py b/openmmlab_test/mmclassification-0.24.1/configs/_base_/models/convnext/convnext-tiny.py new file mode 100644 index 00000000..0b692abb --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/_base_/models/convnext/convnext-tiny.py @@ -0,0 +1,23 @@ +# Model settings +model = dict( + type='ImageClassifier', + backbone=dict( + type='ConvNeXt', + arch='tiny', + out_indices=(3, ), + drop_path_rate=0.1, + gap_before_final_norm=True, + init_cfg=[ + dict( + type='TruncNormal', + layer=['Conv2d', 'Linear'], + std=.02, + bias=0.), + dict(type='Constant', layer=['LayerNorm'], val=1., bias=0.), + ]), + head=dict( + type='LinearClsHead', + num_classes=1000, + in_channels=768, + loss=dict(type='CrossEntropyLoss', loss_weight=1.0), + )) diff --git a/openmmlab_test/mmclassification-0.24.1/configs/_base_/models/convnext/convnext-xlarge.py b/openmmlab_test/mmclassification-0.24.1/configs/_base_/models/convnext/convnext-xlarge.py new file mode 100644 index 00000000..0c75e325 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/_base_/models/convnext/convnext-xlarge.py @@ -0,0 +1,23 @@ +# Model settings +model = dict( + type='ImageClassifier', + backbone=dict( + type='ConvNeXt', + arch='xlarge', + out_indices=(3, ), + drop_path_rate=0.5, + gap_before_final_norm=True, + init_cfg=[ + dict( + type='TruncNormal', + layer=['Conv2d', 'Linear'], + std=.02, + bias=0.), + dict(type='Constant', layer=['LayerNorm'], val=1., bias=0.), + ]), + head=dict( + type='LinearClsHead', + num_classes=1000, + in_channels=2048, + loss=dict(type='CrossEntropyLoss', loss_weight=1.0), + )) diff --git a/openmmlab_test/mmclassification-0.24.1/configs/_base_/models/densenet/densenet121.py b/openmmlab_test/mmclassification-0.24.1/configs/_base_/models/densenet/densenet121.py new file mode 100644 index 00000000..0a14d302 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/_base_/models/densenet/densenet121.py @@ -0,0 +1,11 @@ +# Model settings +model = dict( + type='ImageClassifier', + backbone=dict(type='DenseNet', arch='121'), + neck=dict(type='GlobalAveragePooling'), + head=dict( + type='LinearClsHead', + num_classes=1000, + in_channels=1024, + loss=dict(type='CrossEntropyLoss', loss_weight=1.0), + )) diff --git a/openmmlab_test/mmclassification-0.24.1/configs/_base_/models/densenet/densenet161.py b/openmmlab_test/mmclassification-0.24.1/configs/_base_/models/densenet/densenet161.py new file mode 100644 index 00000000..61a0d838 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/_base_/models/densenet/densenet161.py @@ -0,0 +1,11 @@ +# Model settings +model = dict( + type='ImageClassifier', + backbone=dict(type='DenseNet', arch='161'), + neck=dict(type='GlobalAveragePooling'), + head=dict( + type='LinearClsHead', + num_classes=1000, + in_channels=2208, + loss=dict(type='CrossEntropyLoss', loss_weight=1.0), + )) diff --git a/openmmlab_test/mmclassification-0.24.1/configs/_base_/models/densenet/densenet169.py b/openmmlab_test/mmclassification-0.24.1/configs/_base_/models/densenet/densenet169.py new file mode 100644 index 00000000..779ea170 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/_base_/models/densenet/densenet169.py @@ -0,0 +1,11 @@ +# Model settings +model = dict( + type='ImageClassifier', + backbone=dict(type='DenseNet', arch='169'), + neck=dict(type='GlobalAveragePooling'), + head=dict( + type='LinearClsHead', + num_classes=1000, + in_channels=1664, + loss=dict(type='CrossEntropyLoss', loss_weight=1.0), + )) diff --git a/openmmlab_test/mmclassification-0.24.1/configs/_base_/models/densenet/densenet201.py b/openmmlab_test/mmclassification-0.24.1/configs/_base_/models/densenet/densenet201.py new file mode 100644 index 00000000..2909af0d --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/_base_/models/densenet/densenet201.py @@ -0,0 +1,11 @@ +# Model settings +model = dict( + type='ImageClassifier', + backbone=dict(type='DenseNet', arch='201'), + neck=dict(type='GlobalAveragePooling'), + head=dict( + type='LinearClsHead', + num_classes=1000, + in_channels=1920, + loss=dict(type='CrossEntropyLoss', loss_weight=1.0), + )) diff --git a/openmmlab_test/mmclassification-0.24.1/configs/_base_/models/efficientnet_b0.py b/openmmlab_test/mmclassification-0.24.1/configs/_base_/models/efficientnet_b0.py new file mode 100644 index 00000000..d9ba6853 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/_base_/models/efficientnet_b0.py @@ -0,0 +1,12 @@ +# model settings +model = dict( + type='ImageClassifier', + backbone=dict(type='EfficientNet', arch='b0'), + neck=dict(type='GlobalAveragePooling'), + head=dict( + type='LinearClsHead', + num_classes=1000, + in_channels=1280, + loss=dict(type='CrossEntropyLoss', loss_weight=1.0), + topk=(1, 5), + )) diff --git a/openmmlab_test/mmclassification-0.24.1/configs/_base_/models/efficientnet_b1.py b/openmmlab_test/mmclassification-0.24.1/configs/_base_/models/efficientnet_b1.py new file mode 100644 index 00000000..63e15c88 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/_base_/models/efficientnet_b1.py @@ -0,0 +1,12 @@ +# model settings +model = dict( + type='ImageClassifier', + backbone=dict(type='EfficientNet', arch='b1'), + neck=dict(type='GlobalAveragePooling'), + head=dict( + type='LinearClsHead', + num_classes=1000, + in_channels=1280, + loss=dict(type='CrossEntropyLoss', loss_weight=1.0), + topk=(1, 5), + )) diff --git a/openmmlab_test/mmclassification-0.24.1/configs/_base_/models/efficientnet_b2.py b/openmmlab_test/mmclassification-0.24.1/configs/_base_/models/efficientnet_b2.py new file mode 100644 index 00000000..5edcfa5d --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/_base_/models/efficientnet_b2.py @@ -0,0 +1,12 @@ +# model settings +model = dict( + type='ImageClassifier', + backbone=dict(type='EfficientNet', arch='b2'), + neck=dict(type='GlobalAveragePooling'), + head=dict( + type='LinearClsHead', + num_classes=1000, + in_channels=1408, + loss=dict(type='CrossEntropyLoss', loss_weight=1.0), + topk=(1, 5), + )) diff --git a/openmmlab_test/mmclassification-0.24.1/configs/_base_/models/efficientnet_b3.py b/openmmlab_test/mmclassification-0.24.1/configs/_base_/models/efficientnet_b3.py new file mode 100644 index 00000000..c7c6d6d8 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/_base_/models/efficientnet_b3.py @@ -0,0 +1,12 @@ +# model settings +model = dict( + type='ImageClassifier', + backbone=dict(type='EfficientNet', arch='b3'), + neck=dict(type='GlobalAveragePooling'), + head=dict( + type='LinearClsHead', + num_classes=1000, + in_channels=1536, + loss=dict(type='CrossEntropyLoss', loss_weight=1.0), + topk=(1, 5), + )) diff --git a/openmmlab_test/mmclassification-0.24.1/configs/_base_/models/efficientnet_b4.py b/openmmlab_test/mmclassification-0.24.1/configs/_base_/models/efficientnet_b4.py new file mode 100644 index 00000000..06840ed5 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/_base_/models/efficientnet_b4.py @@ -0,0 +1,12 @@ +# model settings +model = dict( + type='ImageClassifier', + backbone=dict(type='EfficientNet', arch='b4'), + neck=dict(type='GlobalAveragePooling'), + head=dict( + type='LinearClsHead', + num_classes=1000, + in_channels=1792, + loss=dict(type='CrossEntropyLoss', loss_weight=1.0), + topk=(1, 5), + )) diff --git a/openmmlab_test/mmclassification-0.24.1/configs/_base_/models/efficientnet_b5.py b/openmmlab_test/mmclassification-0.24.1/configs/_base_/models/efficientnet_b5.py new file mode 100644 index 00000000..a86eebd1 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/_base_/models/efficientnet_b5.py @@ -0,0 +1,12 @@ +# model settings +model = dict( + type='ImageClassifier', + backbone=dict(type='EfficientNet', arch='b5'), + neck=dict(type='GlobalAveragePooling'), + head=dict( + type='LinearClsHead', + num_classes=1000, + in_channels=2048, + loss=dict(type='CrossEntropyLoss', loss_weight=1.0), + topk=(1, 5), + )) diff --git a/openmmlab_test/mmclassification-0.24.1/configs/_base_/models/efficientnet_b6.py b/openmmlab_test/mmclassification-0.24.1/configs/_base_/models/efficientnet_b6.py new file mode 100644 index 00000000..4eada1d3 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/_base_/models/efficientnet_b6.py @@ -0,0 +1,12 @@ +# model settings +model = dict( + type='ImageClassifier', + backbone=dict(type='EfficientNet', arch='b6'), + neck=dict(type='GlobalAveragePooling'), + head=dict( + type='LinearClsHead', + num_classes=1000, + in_channels=2304, + loss=dict(type='CrossEntropyLoss', loss_weight=1.0), + topk=(1, 5), + )) diff --git a/openmmlab_test/mmclassification-0.24.1/configs/_base_/models/efficientnet_b7.py b/openmmlab_test/mmclassification-0.24.1/configs/_base_/models/efficientnet_b7.py new file mode 100644 index 00000000..1d84ba42 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/_base_/models/efficientnet_b7.py @@ -0,0 +1,12 @@ +# model settings +model = dict( + type='ImageClassifier', + backbone=dict(type='EfficientNet', arch='b7'), + neck=dict(type='GlobalAveragePooling'), + head=dict( + type='LinearClsHead', + num_classes=1000, + in_channels=2560, + loss=dict(type='CrossEntropyLoss', loss_weight=1.0), + topk=(1, 5), + )) diff --git a/openmmlab_test/mmclassification-0.24.1/configs/_base_/models/efficientnet_b8.py b/openmmlab_test/mmclassification-0.24.1/configs/_base_/models/efficientnet_b8.py new file mode 100644 index 00000000..c9500644 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/_base_/models/efficientnet_b8.py @@ -0,0 +1,12 @@ +# model settings +model = dict( + type='ImageClassifier', + backbone=dict(type='EfficientNet', arch='b8'), + neck=dict(type='GlobalAveragePooling'), + head=dict( + type='LinearClsHead', + num_classes=1000, + in_channels=2816, + loss=dict(type='CrossEntropyLoss', loss_weight=1.0), + topk=(1, 5), + )) diff --git a/openmmlab_test/mmclassification-0.24.1/configs/_base_/models/efficientnet_em.py b/openmmlab_test/mmclassification-0.24.1/configs/_base_/models/efficientnet_em.py new file mode 100644 index 00000000..abecdbee --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/_base_/models/efficientnet_em.py @@ -0,0 +1,13 @@ +# model settings +model = dict( + type='ImageClassifier', + # `em` means EfficientNet-EdgeTPU-M arch + backbone=dict(type='EfficientNet', arch='em', act_cfg=dict(type='ReLU')), + neck=dict(type='GlobalAveragePooling'), + head=dict( + type='LinearClsHead', + num_classes=1000, + in_channels=1280, + loss=dict(type='CrossEntropyLoss', loss_weight=1.0), + topk=(1, 5), + )) diff --git a/openmmlab_test/mmclassification-0.24.1/configs/_base_/models/efficientnet_es.py b/openmmlab_test/mmclassification-0.24.1/configs/_base_/models/efficientnet_es.py new file mode 100644 index 00000000..911ba4a1 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/_base_/models/efficientnet_es.py @@ -0,0 +1,13 @@ +# model settings +model = dict( + type='ImageClassifier', + # `es` means EfficientNet-EdgeTPU-S arch + backbone=dict(type='EfficientNet', arch='es', act_cfg=dict(type='ReLU')), + neck=dict(type='GlobalAveragePooling'), + head=dict( + type='LinearClsHead', + num_classes=1000, + in_channels=1280, + loss=dict(type='CrossEntropyLoss', loss_weight=1.0), + topk=(1, 5), + )) diff --git a/openmmlab_test/mmclassification-0.24.1/configs/_base_/models/hornet/hornet-base-gf.py b/openmmlab_test/mmclassification-0.24.1/configs/_base_/models/hornet/hornet-base-gf.py new file mode 100644 index 00000000..7544970f --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/_base_/models/hornet/hornet-base-gf.py @@ -0,0 +1,21 @@ +# model settings +model = dict( + type='ImageClassifier', + backbone=dict(type='HorNet', arch='base-gf', drop_path_rate=0.5), + head=dict( + type='LinearClsHead', + num_classes=1000, + in_channels=1024, + init_cfg=None, # suppress the default init_cfg of LinearClsHead. + loss=dict( + type='LabelSmoothLoss', label_smooth_val=0.1, mode='original'), + cal_acc=False), + init_cfg=[ + dict(type='TruncNormal', layer='Linear', std=0.02, bias=0.), + dict(type='Constant', layer='LayerNorm', val=1., bias=0.), + dict(type='Constant', layer=['LayerScale'], val=1e-6) + ], + train_cfg=dict(augments=[ + dict(type='BatchMixup', alpha=0.8, num_classes=1000, prob=0.5), + dict(type='BatchCutMix', alpha=1.0, num_classes=1000, prob=0.5) + ])) diff --git a/openmmlab_test/mmclassification-0.24.1/configs/_base_/models/hornet/hornet-base.py b/openmmlab_test/mmclassification-0.24.1/configs/_base_/models/hornet/hornet-base.py new file mode 100644 index 00000000..82764146 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/_base_/models/hornet/hornet-base.py @@ -0,0 +1,21 @@ +# model settings +model = dict( + type='ImageClassifier', + backbone=dict(type='HorNet', arch='base', drop_path_rate=0.5), + head=dict( + type='LinearClsHead', + num_classes=1000, + in_channels=1024, + init_cfg=None, # suppress the default init_cfg of LinearClsHead. + loss=dict( + type='LabelSmoothLoss', label_smooth_val=0.1, mode='original'), + cal_acc=False), + init_cfg=[ + dict(type='TruncNormal', layer='Linear', std=0.02, bias=0.), + dict(type='Constant', layer='LayerNorm', val=1., bias=0.), + dict(type='Constant', layer=['LayerScale'], val=1e-6) + ], + train_cfg=dict(augments=[ + dict(type='BatchMixup', alpha=0.8, num_classes=1000, prob=0.5), + dict(type='BatchCutMix', alpha=1.0, num_classes=1000, prob=0.5) + ])) diff --git a/openmmlab_test/mmclassification-0.24.1/configs/_base_/models/hornet/hornet-large-gf.py b/openmmlab_test/mmclassification-0.24.1/configs/_base_/models/hornet/hornet-large-gf.py new file mode 100644 index 00000000..a5b55113 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/_base_/models/hornet/hornet-large-gf.py @@ -0,0 +1,21 @@ +# model settings +model = dict( + type='ImageClassifier', + backbone=dict(type='HorNet', arch='large-gf', drop_path_rate=0.2), + head=dict( + type='LinearClsHead', + num_classes=1000, + in_channels=1536, + init_cfg=None, # suppress the default init_cfg of LinearClsHead. + loss=dict( + type='LabelSmoothLoss', label_smooth_val=0.1, mode='original'), + cal_acc=False), + init_cfg=[ + dict(type='TruncNormal', layer='Linear', std=0.02, bias=0.), + dict(type='Constant', layer='LayerNorm', val=1., bias=0.), + dict(type='Constant', layer=['LayerScale'], val=1e-6) + ], + train_cfg=dict(augments=[ + dict(type='BatchMixup', alpha=0.8, num_classes=1000, prob=0.5), + dict(type='BatchCutMix', alpha=1.0, num_classes=1000, prob=0.5) + ])) diff --git a/openmmlab_test/mmclassification-0.24.1/configs/_base_/models/hornet/hornet-large-gf384.py b/openmmlab_test/mmclassification-0.24.1/configs/_base_/models/hornet/hornet-large-gf384.py new file mode 100644 index 00000000..fbb54787 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/_base_/models/hornet/hornet-large-gf384.py @@ -0,0 +1,17 @@ +# model settings +model = dict( + type='ImageClassifier', + backbone=dict(type='HorNet', arch='large-gf384', drop_path_rate=0.4), + head=dict( + type='LinearClsHead', + num_classes=1000, + in_channels=1536, + init_cfg=None, # suppress the default init_cfg of LinearClsHead. + loss=dict( + type='LabelSmoothLoss', label_smooth_val=0.1, mode='original'), + cal_acc=False), + init_cfg=[ + dict(type='TruncNormal', layer='Linear', std=0.02, bias=0.), + dict(type='Constant', layer='LayerNorm', val=1., bias=0.), + dict(type='Constant', layer=['LayerScale'], val=1e-6) + ]) diff --git a/openmmlab_test/mmclassification-0.24.1/configs/_base_/models/hornet/hornet-large.py b/openmmlab_test/mmclassification-0.24.1/configs/_base_/models/hornet/hornet-large.py new file mode 100644 index 00000000..26d99e1a --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/_base_/models/hornet/hornet-large.py @@ -0,0 +1,21 @@ +# model settings +model = dict( + type='ImageClassifier', + backbone=dict(type='HorNet', arch='large', drop_path_rate=0.2), + head=dict( + type='LinearClsHead', + num_classes=1000, + in_channels=1536, + init_cfg=None, # suppress the default init_cfg of LinearClsHead. + loss=dict( + type='LabelSmoothLoss', label_smooth_val=0.1, mode='original'), + cal_acc=False), + init_cfg=[ + dict(type='TruncNormal', layer='Linear', std=0.02, bias=0.), + dict(type='Constant', layer='LayerNorm', val=1., bias=0.), + dict(type='Constant', layer=['LayerScale'], val=1e-6) + ], + train_cfg=dict(augments=[ + dict(type='BatchMixup', alpha=0.8, num_classes=1000, prob=0.5), + dict(type='BatchCutMix', alpha=1.0, num_classes=1000, prob=0.5) + ])) diff --git a/openmmlab_test/mmclassification-0.24.1/configs/_base_/models/hornet/hornet-small-gf.py b/openmmlab_test/mmclassification-0.24.1/configs/_base_/models/hornet/hornet-small-gf.py new file mode 100644 index 00000000..42d9d119 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/_base_/models/hornet/hornet-small-gf.py @@ -0,0 +1,21 @@ +# model settings +model = dict( + type='ImageClassifier', + backbone=dict(type='HorNet', arch='small-gf', drop_path_rate=0.4), + head=dict( + type='LinearClsHead', + num_classes=1000, + in_channels=768, + init_cfg=None, # suppress the default init_cfg of LinearClsHead. + loss=dict( + type='LabelSmoothLoss', label_smooth_val=0.1, mode='original'), + cal_acc=False), + init_cfg=[ + dict(type='TruncNormal', layer='Linear', std=0.02, bias=0.), + dict(type='Constant', layer='LayerNorm', val=1., bias=0.), + dict(type='Constant', layer=['LayerScale'], val=1e-6) + ], + train_cfg=dict(augments=[ + dict(type='BatchMixup', alpha=0.8, num_classes=1000, prob=0.5), + dict(type='BatchCutMix', alpha=1.0, num_classes=1000, prob=0.5) + ])) diff --git a/openmmlab_test/mmclassification-0.24.1/configs/_base_/models/hornet/hornet-small.py b/openmmlab_test/mmclassification-0.24.1/configs/_base_/models/hornet/hornet-small.py new file mode 100644 index 00000000..e8039765 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/_base_/models/hornet/hornet-small.py @@ -0,0 +1,21 @@ +# model settings +model = dict( + type='ImageClassifier', + backbone=dict(type='HorNet', arch='small', drop_path_rate=0.4), + head=dict( + type='LinearClsHead', + num_classes=1000, + in_channels=768, + init_cfg=None, # suppress the default init_cfg of LinearClsHead. + loss=dict( + type='LabelSmoothLoss', label_smooth_val=0.1, mode='original'), + cal_acc=False), + init_cfg=[ + dict(type='TruncNormal', layer='Linear', std=0.02, bias=0.), + dict(type='Constant', layer='LayerNorm', val=1., bias=0.), + dict(type='Constant', layer=['LayerScale'], val=1e-6) + ], + train_cfg=dict(augments=[ + dict(type='BatchMixup', alpha=0.8, num_classes=1000, prob=0.5), + dict(type='BatchCutMix', alpha=1.0, num_classes=1000, prob=0.5) + ])) diff --git a/openmmlab_test/mmclassification-0.24.1/configs/_base_/models/hornet/hornet-tiny-gf.py b/openmmlab_test/mmclassification-0.24.1/configs/_base_/models/hornet/hornet-tiny-gf.py new file mode 100644 index 00000000..0e417d04 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/_base_/models/hornet/hornet-tiny-gf.py @@ -0,0 +1,21 @@ +# model settings +model = dict( + type='ImageClassifier', + backbone=dict(type='HorNet', arch='tiny-gf', drop_path_rate=0.2), + head=dict( + type='LinearClsHead', + num_classes=1000, + in_channels=512, + init_cfg=None, # suppress the default init_cfg of LinearClsHead. + loss=dict( + type='LabelSmoothLoss', label_smooth_val=0.1, mode='original'), + cal_acc=False), + init_cfg=[ + dict(type='TruncNormal', layer='Linear', std=0.02, bias=0.), + dict(type='Constant', layer='LayerNorm', val=1., bias=0.), + dict(type='Constant', layer=['LayerScale'], val=1e-6) + ], + train_cfg=dict(augments=[ + dict(type='BatchMixup', alpha=0.8, num_classes=1000, prob=0.5), + dict(type='BatchCutMix', alpha=1.0, num_classes=1000, prob=0.5) + ])) diff --git a/openmmlab_test/mmclassification-0.24.1/configs/_base_/models/hornet/hornet-tiny.py b/openmmlab_test/mmclassification-0.24.1/configs/_base_/models/hornet/hornet-tiny.py new file mode 100644 index 00000000..068d7d6b --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/_base_/models/hornet/hornet-tiny.py @@ -0,0 +1,21 @@ +# model settings +model = dict( + type='ImageClassifier', + backbone=dict(type='HorNet', arch='tiny', drop_path_rate=0.2), + head=dict( + type='LinearClsHead', + num_classes=1000, + in_channels=512, + init_cfg=None, # suppress the default init_cfg of LinearClsHead. + loss=dict( + type='LabelSmoothLoss', label_smooth_val=0.1, mode='original'), + cal_acc=False), + init_cfg=[ + dict(type='TruncNormal', layer='Linear', std=0.02, bias=0.), + dict(type='Constant', layer='LayerNorm', val=1., bias=0.), + dict(type='Constant', layer=['LayerScale'], val=1e-6) + ], + train_cfg=dict(augments=[ + dict(type='BatchMixup', alpha=0.8, num_classes=1000, prob=0.5), + dict(type='BatchCutMix', alpha=1.0, num_classes=1000, prob=0.5) + ])) diff --git a/openmmlab_test/mmclassification-0.24.1/configs/_base_/models/hrnet/hrnet-w18.py b/openmmlab_test/mmclassification-0.24.1/configs/_base_/models/hrnet/hrnet-w18.py new file mode 100644 index 00000000..f7fbf298 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/_base_/models/hrnet/hrnet-w18.py @@ -0,0 +1,15 @@ +# model settings +model = dict( + type='ImageClassifier', + backbone=dict(type='HRNet', arch='w18'), + neck=[ + dict(type='HRFuseScales', in_channels=(18, 36, 72, 144)), + dict(type='GlobalAveragePooling'), + ], + head=dict( + type='LinearClsHead', + in_channels=2048, + num_classes=1000, + loss=dict(type='CrossEntropyLoss', loss_weight=1.0), + topk=(1, 5), + )) diff --git a/openmmlab_test/mmclassification-0.24.1/configs/_base_/models/hrnet/hrnet-w30.py b/openmmlab_test/mmclassification-0.24.1/configs/_base_/models/hrnet/hrnet-w30.py new file mode 100644 index 00000000..babcacac --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/_base_/models/hrnet/hrnet-w30.py @@ -0,0 +1,15 @@ +# model settings +model = dict( + type='ImageClassifier', + backbone=dict(type='HRNet', arch='w30'), + neck=[ + dict(type='HRFuseScales', in_channels=(30, 60, 120, 240)), + dict(type='GlobalAveragePooling'), + ], + head=dict( + type='LinearClsHead', + in_channels=2048, + num_classes=1000, + loss=dict(type='CrossEntropyLoss', loss_weight=1.0), + topk=(1, 5), + )) diff --git a/openmmlab_test/mmclassification-0.24.1/configs/_base_/models/hrnet/hrnet-w32.py b/openmmlab_test/mmclassification-0.24.1/configs/_base_/models/hrnet/hrnet-w32.py new file mode 100644 index 00000000..2c1e9800 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/_base_/models/hrnet/hrnet-w32.py @@ -0,0 +1,15 @@ +# model settings +model = dict( + type='ImageClassifier', + backbone=dict(type='HRNet', arch='w32'), + neck=[ + dict(type='HRFuseScales', in_channels=(32, 64, 128, 256)), + dict(type='GlobalAveragePooling'), + ], + head=dict( + type='LinearClsHead', + in_channels=2048, + num_classes=1000, + loss=dict(type='CrossEntropyLoss', loss_weight=1.0), + topk=(1, 5), + )) diff --git a/openmmlab_test/mmclassification-0.24.1/configs/_base_/models/hrnet/hrnet-w40.py b/openmmlab_test/mmclassification-0.24.1/configs/_base_/models/hrnet/hrnet-w40.py new file mode 100644 index 00000000..83f65d86 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/_base_/models/hrnet/hrnet-w40.py @@ -0,0 +1,15 @@ +# model settings +model = dict( + type='ImageClassifier', + backbone=dict(type='HRNet', arch='w40'), + neck=[ + dict(type='HRFuseScales', in_channels=(40, 80, 160, 320)), + dict(type='GlobalAveragePooling'), + ], + head=dict( + type='LinearClsHead', + in_channels=2048, + num_classes=1000, + loss=dict(type='CrossEntropyLoss', loss_weight=1.0), + topk=(1, 5), + )) diff --git a/openmmlab_test/mmclassification-0.24.1/configs/_base_/models/hrnet/hrnet-w44.py b/openmmlab_test/mmclassification-0.24.1/configs/_base_/models/hrnet/hrnet-w44.py new file mode 100644 index 00000000..e75dc0f8 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/_base_/models/hrnet/hrnet-w44.py @@ -0,0 +1,15 @@ +# model settings +model = dict( + type='ImageClassifier', + backbone=dict(type='HRNet', arch='w44'), + neck=[ + dict(type='HRFuseScales', in_channels=(44, 88, 176, 352)), + dict(type='GlobalAveragePooling'), + ], + head=dict( + type='LinearClsHead', + in_channels=2048, + num_classes=1000, + loss=dict(type='CrossEntropyLoss', loss_weight=1.0), + topk=(1, 5), + )) diff --git a/openmmlab_test/mmclassification-0.24.1/configs/_base_/models/hrnet/hrnet-w48.py b/openmmlab_test/mmclassification-0.24.1/configs/_base_/models/hrnet/hrnet-w48.py new file mode 100644 index 00000000..f0604958 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/_base_/models/hrnet/hrnet-w48.py @@ -0,0 +1,15 @@ +# model settings +model = dict( + type='ImageClassifier', + backbone=dict(type='HRNet', arch='w48'), + neck=[ + dict(type='HRFuseScales', in_channels=(48, 96, 192, 384)), + dict(type='GlobalAveragePooling'), + ], + head=dict( + type='LinearClsHead', + in_channels=2048, + num_classes=1000, + loss=dict(type='CrossEntropyLoss', loss_weight=1.0), + topk=(1, 5), + )) diff --git a/openmmlab_test/mmclassification-0.24.1/configs/_base_/models/hrnet/hrnet-w64.py b/openmmlab_test/mmclassification-0.24.1/configs/_base_/models/hrnet/hrnet-w64.py new file mode 100644 index 00000000..844c3fe9 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/_base_/models/hrnet/hrnet-w64.py @@ -0,0 +1,15 @@ +# model settings +model = dict( + type='ImageClassifier', + backbone=dict(type='HRNet', arch='w64'), + neck=[ + dict(type='HRFuseScales', in_channels=(64, 128, 256, 512)), + dict(type='GlobalAveragePooling'), + ], + head=dict( + type='LinearClsHead', + in_channels=2048, + num_classes=1000, + loss=dict(type='CrossEntropyLoss', loss_weight=1.0), + topk=(1, 5), + )) diff --git a/openmmlab_test/mmclassification-0.24.1/configs/_base_/models/mlp_mixer_base_patch16.py b/openmmlab_test/mmclassification-0.24.1/configs/_base_/models/mlp_mixer_base_patch16.py new file mode 100644 index 00000000..5ebd17f3 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/_base_/models/mlp_mixer_base_patch16.py @@ -0,0 +1,25 @@ +# model settings +model = dict( + type='ImageClassifier', + backbone=dict( + type='MlpMixer', + arch='b', + img_size=224, + patch_size=16, + drop_rate=0.1, + init_cfg=[ + dict( + type='Kaiming', + layer='Conv2d', + mode='fan_in', + nonlinearity='linear') + ]), + neck=dict(type='GlobalAveragePooling', dim=1), + head=dict( + type='LinearClsHead', + num_classes=1000, + in_channels=768, + loss=dict(type='CrossEntropyLoss', loss_weight=1.0), + topk=(1, 5), + ), +) diff --git a/openmmlab_test/mmclassification-0.24.1/configs/_base_/models/mlp_mixer_large_patch16.py b/openmmlab_test/mmclassification-0.24.1/configs/_base_/models/mlp_mixer_large_patch16.py new file mode 100644 index 00000000..ff107139 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/_base_/models/mlp_mixer_large_patch16.py @@ -0,0 +1,25 @@ +# model settings +model = dict( + type='ImageClassifier', + backbone=dict( + type='MlpMixer', + arch='l', + img_size=224, + patch_size=16, + drop_rate=0.1, + init_cfg=[ + dict( + type='Kaiming', + layer='Conv2d', + mode='fan_in', + nonlinearity='linear') + ]), + neck=dict(type='GlobalAveragePooling', dim=1), + head=dict( + type='LinearClsHead', + num_classes=1000, + in_channels=1024, + loss=dict(type='CrossEntropyLoss', loss_weight=1.0), + topk=(1, 5), + ), +) diff --git a/openmmlab_test/mmclassification-speed-benchmark/configs/_base_/models/mobilenet_v2_1x.py b/openmmlab_test/mmclassification-0.24.1/configs/_base_/models/mobilenet_v2_1x.py similarity index 100% rename from openmmlab_test/mmclassification-speed-benchmark/configs/_base_/models/mobilenet_v2_1x.py rename to openmmlab_test/mmclassification-0.24.1/configs/_base_/models/mobilenet_v2_1x.py diff --git a/openmmlab_test/mmclassification-0.24.1/configs/_base_/models/mobilenet_v3_large_imagenet.py b/openmmlab_test/mmclassification-0.24.1/configs/_base_/models/mobilenet_v3_large_imagenet.py new file mode 100644 index 00000000..5318f50f --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/_base_/models/mobilenet_v3_large_imagenet.py @@ -0,0 +1,16 @@ +# model settings +model = dict( + type='ImageClassifier', + backbone=dict(type='MobileNetV3', arch='large'), + neck=dict(type='GlobalAveragePooling'), + head=dict( + type='StackedLinearClsHead', + num_classes=1000, + in_channels=960, + mid_channels=[1280], + dropout_rate=0.2, + act_cfg=dict(type='HSwish'), + loss=dict(type='CrossEntropyLoss', loss_weight=1.0), + init_cfg=dict( + type='Normal', layer='Linear', mean=0., std=0.01, bias=0.), + topk=(1, 5))) diff --git a/openmmlab_test/mmclassification-0.24.1/configs/_base_/models/mobilenet_v3_small_cifar.py b/openmmlab_test/mmclassification-0.24.1/configs/_base_/models/mobilenet_v3_small_cifar.py new file mode 100644 index 00000000..5dbe980c --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/_base_/models/mobilenet_v3_small_cifar.py @@ -0,0 +1,13 @@ +# model settings +model = dict( + type='ImageClassifier', + backbone=dict(type='MobileNetV3', arch='small'), + neck=dict(type='GlobalAveragePooling'), + head=dict( + type='StackedLinearClsHead', + num_classes=10, + in_channels=576, + mid_channels=[1280], + act_cfg=dict(type='HSwish'), + loss=dict(type='CrossEntropyLoss', loss_weight=1.0), + topk=(1, 5))) diff --git a/openmmlab_test/mmclassification-0.24.1/configs/_base_/models/mobilenet_v3_small_imagenet.py b/openmmlab_test/mmclassification-0.24.1/configs/_base_/models/mobilenet_v3_small_imagenet.py new file mode 100644 index 00000000..af6cc1b8 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/_base_/models/mobilenet_v3_small_imagenet.py @@ -0,0 +1,16 @@ +# model settings +model = dict( + type='ImageClassifier', + backbone=dict(type='MobileNetV3', arch='small'), + neck=dict(type='GlobalAveragePooling'), + head=dict( + type='StackedLinearClsHead', + num_classes=1000, + in_channels=576, + mid_channels=[1024], + dropout_rate=0.2, + act_cfg=dict(type='HSwish'), + loss=dict(type='CrossEntropyLoss', loss_weight=1.0), + init_cfg=dict( + type='Normal', layer='Linear', mean=0., std=0.01, bias=0.), + topk=(1, 5))) diff --git a/openmmlab_test/mmclassification-0.24.1/configs/_base_/models/mvit/mvitv2-base.py b/openmmlab_test/mmclassification-0.24.1/configs/_base_/models/mvit/mvitv2-base.py new file mode 100644 index 00000000..c75e78ef --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/_base_/models/mvit/mvitv2-base.py @@ -0,0 +1,19 @@ +model = dict( + type='ImageClassifier', + backbone=dict(type='MViT', arch='base', drop_path_rate=0.3), + neck=dict(type='GlobalAveragePooling'), + head=dict( + type='LinearClsHead', + in_channels=768, + num_classes=1000, + loss=dict( + type='LabelSmoothLoss', label_smooth_val=0.1, mode='original'), + ), + init_cfg=[ + dict(type='TruncNormal', layer='Linear', std=0.02, bias=0.), + dict(type='Constant', layer='LayerNorm', val=1., bias=0.) + ], + train_cfg=dict(augments=[ + dict(type='BatchMixup', alpha=0.8, num_classes=1000, prob=0.5), + dict(type='BatchCutMix', alpha=1.0, num_classes=1000, prob=0.5) + ])) diff --git a/openmmlab_test/mmclassification-0.24.1/configs/_base_/models/mvit/mvitv2-large.py b/openmmlab_test/mmclassification-0.24.1/configs/_base_/models/mvit/mvitv2-large.py new file mode 100644 index 00000000..aa4a3250 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/_base_/models/mvit/mvitv2-large.py @@ -0,0 +1,23 @@ +model = dict( + type='ImageClassifier', + backbone=dict( + type='MViT', + arch='large', + drop_path_rate=0.5, + dim_mul_in_attention=False), + neck=dict(type='GlobalAveragePooling'), + head=dict( + type='LinearClsHead', + in_channels=1152, + num_classes=1000, + loss=dict( + type='LabelSmoothLoss', label_smooth_val=0.1, mode='original'), + ), + init_cfg=[ + dict(type='TruncNormal', layer='Linear', std=0.02, bias=0.), + dict(type='Constant', layer='LayerNorm', val=1., bias=0.) + ], + train_cfg=dict(augments=[ + dict(type='BatchMixup', alpha=0.8, num_classes=1000, prob=0.5), + dict(type='BatchCutMix', alpha=1.0, num_classes=1000, prob=0.5) + ])) diff --git a/openmmlab_test/mmclassification-0.24.1/configs/_base_/models/mvit/mvitv2-small.py b/openmmlab_test/mmclassification-0.24.1/configs/_base_/models/mvit/mvitv2-small.py new file mode 100644 index 00000000..bb9329df --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/_base_/models/mvit/mvitv2-small.py @@ -0,0 +1,19 @@ +model = dict( + type='ImageClassifier', + backbone=dict(type='MViT', arch='small', drop_path_rate=0.1), + neck=dict(type='GlobalAveragePooling'), + head=dict( + type='LinearClsHead', + in_channels=768, + num_classes=1000, + loss=dict( + type='LabelSmoothLoss', label_smooth_val=0.1, mode='original'), + ), + init_cfg=[ + dict(type='TruncNormal', layer='Linear', std=0.02, bias=0.), + dict(type='Constant', layer='LayerNorm', val=1., bias=0.) + ], + train_cfg=dict(augments=[ + dict(type='BatchMixup', alpha=0.8, num_classes=1000, prob=0.5), + dict(type='BatchCutMix', alpha=1.0, num_classes=1000, prob=0.5) + ])) diff --git a/openmmlab_test/mmclassification-0.24.1/configs/_base_/models/mvit/mvitv2-tiny.py b/openmmlab_test/mmclassification-0.24.1/configs/_base_/models/mvit/mvitv2-tiny.py new file mode 100644 index 00000000..7ca85dc3 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/_base_/models/mvit/mvitv2-tiny.py @@ -0,0 +1,19 @@ +model = dict( + type='ImageClassifier', + backbone=dict(type='MViT', arch='tiny', drop_path_rate=0.1), + neck=dict(type='GlobalAveragePooling'), + head=dict( + type='LinearClsHead', + in_channels=768, + num_classes=1000, + loss=dict( + type='LabelSmoothLoss', label_smooth_val=0.1, mode='original'), + ), + init_cfg=[ + dict(type='TruncNormal', layer='Linear', std=0.02, bias=0.), + dict(type='Constant', layer='LayerNorm', val=1., bias=0.) + ], + train_cfg=dict(augments=[ + dict(type='BatchMixup', alpha=0.8, num_classes=1000, prob=0.5), + dict(type='BatchCutMix', alpha=1.0, num_classes=1000, prob=0.5) + ])) diff --git a/openmmlab_test/mmclassification-0.24.1/configs/_base_/models/poolformer/poolformer_m36.py b/openmmlab_test/mmclassification-0.24.1/configs/_base_/models/poolformer/poolformer_m36.py new file mode 100644 index 00000000..276a7212 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/_base_/models/poolformer/poolformer_m36.py @@ -0,0 +1,22 @@ +# Model settings +model = dict( + type='ImageClassifier', + backbone=dict( + type='PoolFormer', + arch='m36', + drop_path_rate=0.1, + init_cfg=[ + dict( + type='TruncNormal', + layer=['Conv2d', 'Linear'], + std=.02, + bias=0.), + dict(type='Constant', layer=['GroupNorm'], val=1., bias=0.), + ]), + neck=dict(type='GlobalAveragePooling'), + head=dict( + type='LinearClsHead', + num_classes=1000, + in_channels=768, + loss=dict(type='CrossEntropyLoss', loss_weight=1.0), + )) diff --git a/openmmlab_test/mmclassification-0.24.1/configs/_base_/models/poolformer/poolformer_m48.py b/openmmlab_test/mmclassification-0.24.1/configs/_base_/models/poolformer/poolformer_m48.py new file mode 100644 index 00000000..8c006acb --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/_base_/models/poolformer/poolformer_m48.py @@ -0,0 +1,22 @@ +# Model settings +model = dict( + type='ImageClassifier', + backbone=dict( + type='PoolFormer', + arch='m48', + drop_path_rate=0.1, + init_cfg=[ + dict( + type='TruncNormal', + layer=['Conv2d', 'Linear'], + std=.02, + bias=0.), + dict(type='Constant', layer=['GroupNorm'], val=1., bias=0.), + ]), + neck=dict(type='GlobalAveragePooling'), + head=dict( + type='LinearClsHead', + num_classes=1000, + in_channels=768, + loss=dict(type='CrossEntropyLoss', loss_weight=1.0), + )) diff --git a/openmmlab_test/mmclassification-0.24.1/configs/_base_/models/poolformer/poolformer_s12.py b/openmmlab_test/mmclassification-0.24.1/configs/_base_/models/poolformer/poolformer_s12.py new file mode 100644 index 00000000..b7b3600f --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/_base_/models/poolformer/poolformer_s12.py @@ -0,0 +1,22 @@ +# Model settings +model = dict( + type='ImageClassifier', + backbone=dict( + type='PoolFormer', + arch='s12', + drop_path_rate=0.1, + init_cfg=[ + dict( + type='TruncNormal', + layer=['Conv2d', 'Linear'], + std=.02, + bias=0.), + dict(type='Constant', layer=['GroupNorm'], val=1., bias=0.), + ]), + neck=dict(type='GlobalAveragePooling'), + head=dict( + type='LinearClsHead', + num_classes=1000, + in_channels=512, + loss=dict(type='CrossEntropyLoss', loss_weight=1.0), + )) diff --git a/openmmlab_test/mmclassification-0.24.1/configs/_base_/models/poolformer/poolformer_s24.py b/openmmlab_test/mmclassification-0.24.1/configs/_base_/models/poolformer/poolformer_s24.py new file mode 100644 index 00000000..822ab5b3 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/_base_/models/poolformer/poolformer_s24.py @@ -0,0 +1,22 @@ +# Model settings +model = dict( + type='ImageClassifier', + backbone=dict( + type='PoolFormer', + arch='s24', + drop_path_rate=0.1, + init_cfg=[ + dict( + type='TruncNormal', + layer=['Conv2d', 'Linear'], + std=.02, + bias=0.), + dict(type='Constant', layer=['GroupNorm'], val=1., bias=0.), + ]), + neck=dict(type='GlobalAveragePooling'), + head=dict( + type='LinearClsHead', + num_classes=1000, + in_channels=512, + loss=dict(type='CrossEntropyLoss', loss_weight=1.0), + )) diff --git a/openmmlab_test/mmclassification-0.24.1/configs/_base_/models/poolformer/poolformer_s36.py b/openmmlab_test/mmclassification-0.24.1/configs/_base_/models/poolformer/poolformer_s36.py new file mode 100644 index 00000000..489f2223 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/_base_/models/poolformer/poolformer_s36.py @@ -0,0 +1,22 @@ +# Model settings +model = dict( + type='ImageClassifier', + backbone=dict( + type='PoolFormer', + arch='s36', + drop_path_rate=0.1, + init_cfg=[ + dict( + type='TruncNormal', + layer=['Conv2d', 'Linear'], + std=.02, + bias=0.), + dict(type='Constant', layer=['GroupNorm'], val=1., bias=0.), + ]), + neck=dict(type='GlobalAveragePooling'), + head=dict( + type='LinearClsHead', + num_classes=1000, + in_channels=512, + loss=dict(type='CrossEntropyLoss', loss_weight=1.0), + )) diff --git a/openmmlab_test/mmclassification-speed-benchmark/configs/_base_/models/regnet/regnetx_1.6gf.py b/openmmlab_test/mmclassification-0.24.1/configs/_base_/models/regnet/regnetx_1.6gf.py similarity index 100% rename from openmmlab_test/mmclassification-speed-benchmark/configs/_base_/models/regnet/regnetx_1.6gf.py rename to openmmlab_test/mmclassification-0.24.1/configs/_base_/models/regnet/regnetx_1.6gf.py diff --git a/openmmlab_test/mmclassification-speed-benchmark/configs/_base_/models/regnet/regnetx_12gf.py b/openmmlab_test/mmclassification-0.24.1/configs/_base_/models/regnet/regnetx_12gf.py similarity index 100% rename from openmmlab_test/mmclassification-speed-benchmark/configs/_base_/models/regnet/regnetx_12gf.py rename to openmmlab_test/mmclassification-0.24.1/configs/_base_/models/regnet/regnetx_12gf.py diff --git a/openmmlab_test/mmclassification-speed-benchmark/configs/_base_/models/regnet/regnetx_3.2gf.py b/openmmlab_test/mmclassification-0.24.1/configs/_base_/models/regnet/regnetx_3.2gf.py similarity index 100% rename from openmmlab_test/mmclassification-speed-benchmark/configs/_base_/models/regnet/regnetx_3.2gf.py rename to openmmlab_test/mmclassification-0.24.1/configs/_base_/models/regnet/regnetx_3.2gf.py diff --git a/openmmlab_test/mmclassification-speed-benchmark/configs/_base_/models/regnet/regnetx_4.0gf.py b/openmmlab_test/mmclassification-0.24.1/configs/_base_/models/regnet/regnetx_4.0gf.py similarity index 100% rename from openmmlab_test/mmclassification-speed-benchmark/configs/_base_/models/regnet/regnetx_4.0gf.py rename to openmmlab_test/mmclassification-0.24.1/configs/_base_/models/regnet/regnetx_4.0gf.py diff --git a/openmmlab_test/mmclassification-speed-benchmark/configs/_base_/models/regnet/regnetx_400mf.py b/openmmlab_test/mmclassification-0.24.1/configs/_base_/models/regnet/regnetx_400mf.py similarity index 100% rename from openmmlab_test/mmclassification-speed-benchmark/configs/_base_/models/regnet/regnetx_400mf.py rename to openmmlab_test/mmclassification-0.24.1/configs/_base_/models/regnet/regnetx_400mf.py diff --git a/openmmlab_test/mmclassification-speed-benchmark/configs/_base_/models/regnet/regnetx_6.4gf.py b/openmmlab_test/mmclassification-0.24.1/configs/_base_/models/regnet/regnetx_6.4gf.py similarity index 100% rename from openmmlab_test/mmclassification-speed-benchmark/configs/_base_/models/regnet/regnetx_6.4gf.py rename to openmmlab_test/mmclassification-0.24.1/configs/_base_/models/regnet/regnetx_6.4gf.py diff --git a/openmmlab_test/mmclassification-speed-benchmark/configs/_base_/models/regnet/regnetx_8.0gf.py b/openmmlab_test/mmclassification-0.24.1/configs/_base_/models/regnet/regnetx_8.0gf.py similarity index 100% rename from openmmlab_test/mmclassification-speed-benchmark/configs/_base_/models/regnet/regnetx_8.0gf.py rename to openmmlab_test/mmclassification-0.24.1/configs/_base_/models/regnet/regnetx_8.0gf.py diff --git a/openmmlab_test/mmclassification-speed-benchmark/configs/_base_/models/regnet/regnetx_800mf.py b/openmmlab_test/mmclassification-0.24.1/configs/_base_/models/regnet/regnetx_800mf.py similarity index 100% rename from openmmlab_test/mmclassification-speed-benchmark/configs/_base_/models/regnet/regnetx_800mf.py rename to openmmlab_test/mmclassification-0.24.1/configs/_base_/models/regnet/regnetx_800mf.py diff --git a/openmmlab_test/mmclassification-0.24.1/configs/_base_/models/repmlp-base_224.py b/openmmlab_test/mmclassification-0.24.1/configs/_base_/models/repmlp-base_224.py new file mode 100644 index 00000000..7db00778 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/_base_/models/repmlp-base_224.py @@ -0,0 +1,18 @@ +# model settings +model = dict( + type='ImageClassifier', + backbone=dict( + type='RepMLPNet', + arch='B', + img_size=224, + out_indices=(3, ), + reparam_conv_kernels=(1, 3), + deploy=False), + neck=dict(type='GlobalAveragePooling'), + head=dict( + type='LinearClsHead', + num_classes=1000, + in_channels=768, + loss=dict(type='CrossEntropyLoss', loss_weight=1.0), + topk=(1, 5), + )) diff --git a/openmmlab_test/mmclassification-0.24.1/configs/_base_/models/repvgg-A0_in1k.py b/openmmlab_test/mmclassification-0.24.1/configs/_base_/models/repvgg-A0_in1k.py new file mode 100644 index 00000000..093ffb7e --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/_base_/models/repvgg-A0_in1k.py @@ -0,0 +1,15 @@ +model = dict( + type='ImageClassifier', + backbone=dict( + type='RepVGG', + arch='A0', + out_indices=(3, ), + ), + neck=dict(type='GlobalAveragePooling'), + head=dict( + type='LinearClsHead', + num_classes=1000, + in_channels=1280, + loss=dict(type='CrossEntropyLoss', loss_weight=1.0), + topk=(1, 5), + )) diff --git a/openmmlab_test/mmclassification-0.24.1/configs/_base_/models/repvgg-B3_lbs-mixup_in1k.py b/openmmlab_test/mmclassification-0.24.1/configs/_base_/models/repvgg-B3_lbs-mixup_in1k.py new file mode 100644 index 00000000..5bb07db5 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/_base_/models/repvgg-B3_lbs-mixup_in1k.py @@ -0,0 +1,23 @@ +model = dict( + type='ImageClassifier', + backbone=dict( + type='RepVGG', + arch='B3', + out_indices=(3, ), + ), + neck=dict(type='GlobalAveragePooling'), + head=dict( + type='LinearClsHead', + num_classes=1000, + in_channels=2560, + loss=dict( + type='LabelSmoothLoss', + loss_weight=1.0, + label_smooth_val=0.1, + mode='classy_vision', + num_classes=1000), + topk=(1, 5), + ), + train_cfg=dict( + augments=dict(type='BatchMixup', alpha=0.2, num_classes=1000, + prob=1.))) diff --git a/openmmlab_test/mmclassification-0.24.1/configs/_base_/models/res2net101-w26-s4.py b/openmmlab_test/mmclassification-0.24.1/configs/_base_/models/res2net101-w26-s4.py new file mode 100644 index 00000000..3bf64c50 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/_base_/models/res2net101-w26-s4.py @@ -0,0 +1,18 @@ +model = dict( + type='ImageClassifier', + backbone=dict( + type='Res2Net', + depth=101, + scales=4, + base_width=26, + deep_stem=False, + avg_down=False, + ), + neck=dict(type='GlobalAveragePooling'), + head=dict( + type='LinearClsHead', + num_classes=1000, + in_channels=2048, + loss=dict(type='CrossEntropyLoss', loss_weight=1.0), + topk=(1, 5), + )) diff --git a/openmmlab_test/mmclassification-0.24.1/configs/_base_/models/res2net50-w14-s8.py b/openmmlab_test/mmclassification-0.24.1/configs/_base_/models/res2net50-w14-s8.py new file mode 100644 index 00000000..5875142c --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/_base_/models/res2net50-w14-s8.py @@ -0,0 +1,18 @@ +model = dict( + type='ImageClassifier', + backbone=dict( + type='Res2Net', + depth=50, + scales=8, + base_width=14, + deep_stem=False, + avg_down=False, + ), + neck=dict(type='GlobalAveragePooling'), + head=dict( + type='LinearClsHead', + num_classes=1000, + in_channels=2048, + loss=dict(type='CrossEntropyLoss', loss_weight=1.0), + topk=(1, 5), + )) diff --git a/openmmlab_test/mmclassification-0.24.1/configs/_base_/models/res2net50-w26-s4.py b/openmmlab_test/mmclassification-0.24.1/configs/_base_/models/res2net50-w26-s4.py new file mode 100644 index 00000000..be8fdb58 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/_base_/models/res2net50-w26-s4.py @@ -0,0 +1,18 @@ +model = dict( + type='ImageClassifier', + backbone=dict( + type='Res2Net', + depth=50, + scales=4, + base_width=26, + deep_stem=False, + avg_down=False, + ), + neck=dict(type='GlobalAveragePooling'), + head=dict( + type='LinearClsHead', + num_classes=1000, + in_channels=2048, + loss=dict(type='CrossEntropyLoss', loss_weight=1.0), + topk=(1, 5), + )) diff --git a/openmmlab_test/mmclassification-0.24.1/configs/_base_/models/res2net50-w26-s6.py b/openmmlab_test/mmclassification-0.24.1/configs/_base_/models/res2net50-w26-s6.py new file mode 100644 index 00000000..281b136a --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/_base_/models/res2net50-w26-s6.py @@ -0,0 +1,18 @@ +model = dict( + type='ImageClassifier', + backbone=dict( + type='Res2Net', + depth=50, + scales=6, + base_width=26, + deep_stem=False, + avg_down=False, + ), + neck=dict(type='GlobalAveragePooling'), + head=dict( + type='LinearClsHead', + num_classes=1000, + in_channels=2048, + loss=dict(type='CrossEntropyLoss', loss_weight=1.0), + topk=(1, 5), + )) diff --git a/openmmlab_test/mmclassification-0.24.1/configs/_base_/models/res2net50-w26-s8.py b/openmmlab_test/mmclassification-0.24.1/configs/_base_/models/res2net50-w26-s8.py new file mode 100644 index 00000000..b4f62f3e --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/_base_/models/res2net50-w26-s8.py @@ -0,0 +1,18 @@ +model = dict( + type='ImageClassifier', + backbone=dict( + type='Res2Net', + depth=50, + scales=8, + base_width=26, + deep_stem=False, + avg_down=False, + ), + neck=dict(type='GlobalAveragePooling'), + head=dict( + type='LinearClsHead', + num_classes=1000, + in_channels=2048, + loss=dict(type='CrossEntropyLoss', loss_weight=1.0), + topk=(1, 5), + )) diff --git a/openmmlab_test/mmclassification-0.24.1/configs/_base_/models/res2net50-w48-s2.py b/openmmlab_test/mmclassification-0.24.1/configs/_base_/models/res2net50-w48-s2.py new file mode 100644 index 00000000..8675c91f --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/_base_/models/res2net50-w48-s2.py @@ -0,0 +1,18 @@ +model = dict( + type='ImageClassifier', + backbone=dict( + type='Res2Net', + depth=50, + scales=2, + base_width=48, + deep_stem=False, + avg_down=False, + ), + neck=dict(type='GlobalAveragePooling'), + head=dict( + type='LinearClsHead', + num_classes=1000, + in_channels=2048, + loss=dict(type='CrossEntropyLoss', loss_weight=1.0), + topk=(1, 5), + )) diff --git a/openmmlab_test/mmclassification-0.24.1/configs/_base_/models/resnest101.py b/openmmlab_test/mmclassification-0.24.1/configs/_base_/models/resnest101.py new file mode 100644 index 00000000..97f7749c --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/_base_/models/resnest101.py @@ -0,0 +1,24 @@ +# model settings +model = dict( + type='ImageClassifier', + backbone=dict( + type='ResNeSt', + depth=101, + num_stages=4, + stem_channels=128, + out_indices=(3, ), + style='pytorch'), + neck=dict(type='GlobalAveragePooling'), + head=dict( + type='LinearClsHead', + num_classes=1000, + in_channels=2048, + loss=dict( + type='LabelSmoothLoss', + label_smooth_val=0.1, + num_classes=1000, + reduction='mean', + loss_weight=1.0), + topk=(1, 5), + cal_acc=False)) +train_cfg = dict(mixup=dict(alpha=0.2, num_classes=1000)) diff --git a/openmmlab_test/mmclassification-0.24.1/configs/_base_/models/resnest200.py b/openmmlab_test/mmclassification-0.24.1/configs/_base_/models/resnest200.py new file mode 100644 index 00000000..46100178 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/_base_/models/resnest200.py @@ -0,0 +1,24 @@ +# model settings +model = dict( + type='ImageClassifier', + backbone=dict( + type='ResNeSt', + depth=200, + num_stages=4, + stem_channels=128, + out_indices=(3, ), + style='pytorch'), + neck=dict(type='GlobalAveragePooling'), + head=dict( + type='LinearClsHead', + num_classes=1000, + in_channels=2048, + loss=dict( + type='LabelSmoothLoss', + label_smooth_val=0.1, + num_classes=1000, + reduction='mean', + loss_weight=1.0), + topk=(1, 5), + cal_acc=False)) +train_cfg = dict(mixup=dict(alpha=0.2, num_classes=1000)) diff --git a/openmmlab_test/mmclassification-0.24.1/configs/_base_/models/resnest269.py b/openmmlab_test/mmclassification-0.24.1/configs/_base_/models/resnest269.py new file mode 100644 index 00000000..ad365d03 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/_base_/models/resnest269.py @@ -0,0 +1,24 @@ +# model settings +model = dict( + type='ImageClassifier', + backbone=dict( + type='ResNeSt', + depth=269, + num_stages=4, + stem_channels=128, + out_indices=(3, ), + style='pytorch'), + neck=dict(type='GlobalAveragePooling'), + head=dict( + type='LinearClsHead', + num_classes=1000, + in_channels=2048, + loss=dict( + type='LabelSmoothLoss', + label_smooth_val=0.1, + num_classes=1000, + reduction='mean', + loss_weight=1.0), + topk=(1, 5), + cal_acc=False)) +train_cfg = dict(mixup=dict(alpha=0.2, num_classes=1000)) diff --git a/openmmlab_test/mmclassification-0.24.1/configs/_base_/models/resnest50.py b/openmmlab_test/mmclassification-0.24.1/configs/_base_/models/resnest50.py new file mode 100644 index 00000000..15269d4a --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/_base_/models/resnest50.py @@ -0,0 +1,23 @@ +# model settings +model = dict( + type='ImageClassifier', + backbone=dict( + type='ResNeSt', + depth=50, + num_stages=4, + out_indices=(3, ), + style='pytorch'), + neck=dict(type='GlobalAveragePooling'), + head=dict( + type='LinearClsHead', + num_classes=1000, + in_channels=2048, + loss=dict( + type='LabelSmoothLoss', + label_smooth_val=0.1, + num_classes=1000, + reduction='mean', + loss_weight=1.0), + topk=(1, 5), + cal_acc=False)) +train_cfg = dict(mixup=dict(alpha=0.2, num_classes=1000)) diff --git a/openmmlab_test/mmclassification-speed-benchmark/configs/_base_/models/resnet101.py b/openmmlab_test/mmclassification-0.24.1/configs/_base_/models/resnet101.py similarity index 100% rename from openmmlab_test/mmclassification-speed-benchmark/configs/_base_/models/resnet101.py rename to openmmlab_test/mmclassification-0.24.1/configs/_base_/models/resnet101.py diff --git a/openmmlab_test/mmclassification-speed-benchmark/configs/_base_/models/resnet101_cifar.py b/openmmlab_test/mmclassification-0.24.1/configs/_base_/models/resnet101_cifar.py similarity index 100% rename from openmmlab_test/mmclassification-speed-benchmark/configs/_base_/models/resnet101_cifar.py rename to openmmlab_test/mmclassification-0.24.1/configs/_base_/models/resnet101_cifar.py diff --git a/openmmlab_test/mmclassification-speed-benchmark/configs/_base_/models/resnet152.py b/openmmlab_test/mmclassification-0.24.1/configs/_base_/models/resnet152.py similarity index 100% rename from openmmlab_test/mmclassification-speed-benchmark/configs/_base_/models/resnet152.py rename to openmmlab_test/mmclassification-0.24.1/configs/_base_/models/resnet152.py diff --git a/openmmlab_test/mmclassification-speed-benchmark/configs/_base_/models/resnet152_cifar.py b/openmmlab_test/mmclassification-0.24.1/configs/_base_/models/resnet152_cifar.py similarity index 100% rename from openmmlab_test/mmclassification-speed-benchmark/configs/_base_/models/resnet152_cifar.py rename to openmmlab_test/mmclassification-0.24.1/configs/_base_/models/resnet152_cifar.py diff --git a/openmmlab_test/mmclassification-speed-benchmark/configs/_base_/models/resnet18.py b/openmmlab_test/mmclassification-0.24.1/configs/_base_/models/resnet18.py similarity index 100% rename from openmmlab_test/mmclassification-speed-benchmark/configs/_base_/models/resnet18.py rename to openmmlab_test/mmclassification-0.24.1/configs/_base_/models/resnet18.py diff --git a/openmmlab_test/mmclassification-speed-benchmark/configs/_base_/models/resnet18_cifar.py b/openmmlab_test/mmclassification-0.24.1/configs/_base_/models/resnet18_cifar.py similarity index 100% rename from openmmlab_test/mmclassification-speed-benchmark/configs/_base_/models/resnet18_cifar.py rename to openmmlab_test/mmclassification-0.24.1/configs/_base_/models/resnet18_cifar.py diff --git a/openmmlab_test/mmclassification-speed-benchmark/configs/_base_/models/resnet34.py b/openmmlab_test/mmclassification-0.24.1/configs/_base_/models/resnet34.py similarity index 100% rename from openmmlab_test/mmclassification-speed-benchmark/configs/_base_/models/resnet34.py rename to openmmlab_test/mmclassification-0.24.1/configs/_base_/models/resnet34.py diff --git a/openmmlab_test/mmclassification-speed-benchmark/configs/_base_/models/resnet34_cifar.py b/openmmlab_test/mmclassification-0.24.1/configs/_base_/models/resnet34_cifar.py similarity index 100% rename from openmmlab_test/mmclassification-speed-benchmark/configs/_base_/models/resnet34_cifar.py rename to openmmlab_test/mmclassification-0.24.1/configs/_base_/models/resnet34_cifar.py diff --git a/openmmlab_test/mmclassification-0.24.1/configs/_base_/models/resnet34_gem.py b/openmmlab_test/mmclassification-0.24.1/configs/_base_/models/resnet34_gem.py new file mode 100644 index 00000000..5c0e0d3e --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/_base_/models/resnet34_gem.py @@ -0,0 +1,17 @@ +# model settings +model = dict( + type='ImageClassifier', + backbone=dict( + type='ResNet', + depth=34, + num_stages=4, + out_indices=(3, ), + style='pytorch'), + neck=dict(type='GeneralizedMeanPooling'), + head=dict( + type='LinearClsHead', + num_classes=1000, + in_channels=512, + loss=dict(type='CrossEntropyLoss', loss_weight=1.0), + topk=(1, 5), + )) diff --git a/openmmlab_test/mmclassification-speed-benchmark/configs/_base_/models/resnet50.py b/openmmlab_test/mmclassification-0.24.1/configs/_base_/models/resnet50.py similarity index 100% rename from openmmlab_test/mmclassification-speed-benchmark/configs/_base_/models/resnet50.py rename to openmmlab_test/mmclassification-0.24.1/configs/_base_/models/resnet50.py diff --git a/openmmlab_test/mmclassification-speed-benchmark/configs/_base_/models/resnet50_cifar.py b/openmmlab_test/mmclassification-0.24.1/configs/_base_/models/resnet50_cifar.py similarity index 100% rename from openmmlab_test/mmclassification-speed-benchmark/configs/_base_/models/resnet50_cifar.py rename to openmmlab_test/mmclassification-0.24.1/configs/_base_/models/resnet50_cifar.py diff --git a/openmmlab_test/mmclassification-speed-benchmark/configs/_base_/models/resnet50_cifar_cutmix.py b/openmmlab_test/mmclassification-0.24.1/configs/_base_/models/resnet50_cifar_cutmix.py similarity index 100% rename from openmmlab_test/mmclassification-speed-benchmark/configs/_base_/models/resnet50_cifar_cutmix.py rename to openmmlab_test/mmclassification-0.24.1/configs/_base_/models/resnet50_cifar_cutmix.py diff --git a/openmmlab_test/mmclassification-speed-benchmark/configs/_base_/models/resnet50_cifar_mixup.py b/openmmlab_test/mmclassification-0.24.1/configs/_base_/models/resnet50_cifar_mixup.py similarity index 100% rename from openmmlab_test/mmclassification-speed-benchmark/configs/_base_/models/resnet50_cifar_mixup.py rename to openmmlab_test/mmclassification-0.24.1/configs/_base_/models/resnet50_cifar_mixup.py diff --git a/openmmlab_test/mmclassification-speed-benchmark/configs/_base_/models/resnet50_cutmix.py b/openmmlab_test/mmclassification-0.24.1/configs/_base_/models/resnet50_cutmix.py similarity index 100% rename from openmmlab_test/mmclassification-speed-benchmark/configs/_base_/models/resnet50_cutmix.py rename to openmmlab_test/mmclassification-0.24.1/configs/_base_/models/resnet50_cutmix.py diff --git a/openmmlab_test/mmclassification-speed-benchmark/configs/_base_/models/resnet50_label_smooth.py b/openmmlab_test/mmclassification-0.24.1/configs/_base_/models/resnet50_label_smooth.py similarity index 100% rename from openmmlab_test/mmclassification-speed-benchmark/configs/_base_/models/resnet50_label_smooth.py rename to openmmlab_test/mmclassification-0.24.1/configs/_base_/models/resnet50_label_smooth.py diff --git a/openmmlab_test/mmclassification-speed-benchmark/configs/_base_/models/resnet50_mixup.py b/openmmlab_test/mmclassification-0.24.1/configs/_base_/models/resnet50_mixup.py similarity index 100% rename from openmmlab_test/mmclassification-speed-benchmark/configs/_base_/models/resnet50_mixup.py rename to openmmlab_test/mmclassification-0.24.1/configs/_base_/models/resnet50_mixup.py diff --git a/openmmlab_test/mmclassification-0.24.1/configs/_base_/models/resnetv1c50.py b/openmmlab_test/mmclassification-0.24.1/configs/_base_/models/resnetv1c50.py new file mode 100644 index 00000000..3b973e20 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/_base_/models/resnetv1c50.py @@ -0,0 +1,17 @@ +# model settings +model = dict( + type='ImageClassifier', + backbone=dict( + type='ResNetV1c', + depth=50, + num_stages=4, + out_indices=(3, ), + style='pytorch'), + neck=dict(type='GlobalAveragePooling'), + head=dict( + type='LinearClsHead', + num_classes=1000, + in_channels=2048, + loss=dict(type='CrossEntropyLoss', loss_weight=1.0), + topk=(1, 5), + )) diff --git a/openmmlab_test/mmclassification-speed-benchmark/configs/_base_/models/resnetv1d101.py b/openmmlab_test/mmclassification-0.24.1/configs/_base_/models/resnetv1d101.py similarity index 100% rename from openmmlab_test/mmclassification-speed-benchmark/configs/_base_/models/resnetv1d101.py rename to openmmlab_test/mmclassification-0.24.1/configs/_base_/models/resnetv1d101.py diff --git a/openmmlab_test/mmclassification-speed-benchmark/configs/_base_/models/resnetv1d152.py b/openmmlab_test/mmclassification-0.24.1/configs/_base_/models/resnetv1d152.py similarity index 100% rename from openmmlab_test/mmclassification-speed-benchmark/configs/_base_/models/resnetv1d152.py rename to openmmlab_test/mmclassification-0.24.1/configs/_base_/models/resnetv1d152.py diff --git a/openmmlab_test/mmclassification-speed-benchmark/configs/_base_/models/resnetv1d50.py b/openmmlab_test/mmclassification-0.24.1/configs/_base_/models/resnetv1d50.py similarity index 100% rename from openmmlab_test/mmclassification-speed-benchmark/configs/_base_/models/resnetv1d50.py rename to openmmlab_test/mmclassification-0.24.1/configs/_base_/models/resnetv1d50.py diff --git a/openmmlab_test/mmclassification-speed-benchmark/configs/_base_/models/resnext101_32x4d.py b/openmmlab_test/mmclassification-0.24.1/configs/_base_/models/resnext101_32x4d.py similarity index 100% rename from openmmlab_test/mmclassification-speed-benchmark/configs/_base_/models/resnext101_32x4d.py rename to openmmlab_test/mmclassification-0.24.1/configs/_base_/models/resnext101_32x4d.py diff --git a/openmmlab_test/mmclassification-speed-benchmark/configs/_base_/models/resnext101_32x8d.py b/openmmlab_test/mmclassification-0.24.1/configs/_base_/models/resnext101_32x8d.py similarity index 100% rename from openmmlab_test/mmclassification-speed-benchmark/configs/_base_/models/resnext101_32x8d.py rename to openmmlab_test/mmclassification-0.24.1/configs/_base_/models/resnext101_32x8d.py diff --git a/openmmlab_test/mmclassification-speed-benchmark/configs/_base_/models/resnext152_32x4d.py b/openmmlab_test/mmclassification-0.24.1/configs/_base_/models/resnext152_32x4d.py similarity index 100% rename from openmmlab_test/mmclassification-speed-benchmark/configs/_base_/models/resnext152_32x4d.py rename to openmmlab_test/mmclassification-0.24.1/configs/_base_/models/resnext152_32x4d.py diff --git a/openmmlab_test/mmclassification-speed-benchmark/configs/_base_/models/resnext50_32x4d.py b/openmmlab_test/mmclassification-0.24.1/configs/_base_/models/resnext50_32x4d.py similarity index 100% rename from openmmlab_test/mmclassification-speed-benchmark/configs/_base_/models/resnext50_32x4d.py rename to openmmlab_test/mmclassification-0.24.1/configs/_base_/models/resnext50_32x4d.py diff --git a/openmmlab_test/mmclassification-speed-benchmark/configs/_base_/models/seresnet101.py b/openmmlab_test/mmclassification-0.24.1/configs/_base_/models/seresnet101.py similarity index 100% rename from openmmlab_test/mmclassification-speed-benchmark/configs/_base_/models/seresnet101.py rename to openmmlab_test/mmclassification-0.24.1/configs/_base_/models/seresnet101.py diff --git a/openmmlab_test/mmclassification-speed-benchmark/configs/_base_/models/seresnet50.py b/openmmlab_test/mmclassification-0.24.1/configs/_base_/models/seresnet50.py similarity index 100% rename from openmmlab_test/mmclassification-speed-benchmark/configs/_base_/models/seresnet50.py rename to openmmlab_test/mmclassification-0.24.1/configs/_base_/models/seresnet50.py diff --git a/openmmlab_test/mmclassification-speed-benchmark/configs/_base_/models/seresnext101_32x4d.py b/openmmlab_test/mmclassification-0.24.1/configs/_base_/models/seresnext101_32x4d.py similarity index 100% rename from openmmlab_test/mmclassification-speed-benchmark/configs/_base_/models/seresnext101_32x4d.py rename to openmmlab_test/mmclassification-0.24.1/configs/_base_/models/seresnext101_32x4d.py diff --git a/openmmlab_test/mmclassification-speed-benchmark/configs/_base_/models/seresnext50_32x4d.py b/openmmlab_test/mmclassification-0.24.1/configs/_base_/models/seresnext50_32x4d.py similarity index 100% rename from openmmlab_test/mmclassification-speed-benchmark/configs/_base_/models/seresnext50_32x4d.py rename to openmmlab_test/mmclassification-0.24.1/configs/_base_/models/seresnext50_32x4d.py diff --git a/openmmlab_test/mmclassification-speed-benchmark/configs/_base_/models/shufflenet_v1_1x.py b/openmmlab_test/mmclassification-0.24.1/configs/_base_/models/shufflenet_v1_1x.py similarity index 100% rename from openmmlab_test/mmclassification-speed-benchmark/configs/_base_/models/shufflenet_v1_1x.py rename to openmmlab_test/mmclassification-0.24.1/configs/_base_/models/shufflenet_v1_1x.py diff --git a/openmmlab_test/mmclassification-speed-benchmark/configs/_base_/models/shufflenet_v2_1x.py b/openmmlab_test/mmclassification-0.24.1/configs/_base_/models/shufflenet_v2_1x.py similarity index 100% rename from openmmlab_test/mmclassification-speed-benchmark/configs/_base_/models/shufflenet_v2_1x.py rename to openmmlab_test/mmclassification-0.24.1/configs/_base_/models/shufflenet_v2_1x.py diff --git a/openmmlab_test/mmclassification-0.24.1/configs/_base_/models/swin_transformer/base_224.py b/openmmlab_test/mmclassification-0.24.1/configs/_base_/models/swin_transformer/base_224.py new file mode 100644 index 00000000..e16b4e60 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/_base_/models/swin_transformer/base_224.py @@ -0,0 +1,22 @@ +# model settings +model = dict( + type='ImageClassifier', + backbone=dict( + type='SwinTransformer', arch='base', img_size=224, drop_path_rate=0.5), + neck=dict(type='GlobalAveragePooling'), + head=dict( + type='LinearClsHead', + num_classes=1000, + in_channels=1024, + init_cfg=None, # suppress the default init_cfg of LinearClsHead. + loss=dict( + type='LabelSmoothLoss', label_smooth_val=0.1, mode='original'), + cal_acc=False), + init_cfg=[ + dict(type='TruncNormal', layer='Linear', std=0.02, bias=0.), + dict(type='Constant', layer='LayerNorm', val=1., bias=0.) + ], + train_cfg=dict(augments=[ + dict(type='BatchMixup', alpha=0.8, num_classes=1000, prob=0.5), + dict(type='BatchCutMix', alpha=1.0, num_classes=1000, prob=0.5) + ])) diff --git a/openmmlab_test/mmclassification-0.24.1/configs/_base_/models/swin_transformer/base_384.py b/openmmlab_test/mmclassification-0.24.1/configs/_base_/models/swin_transformer/base_384.py new file mode 100644 index 00000000..ce78981f --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/_base_/models/swin_transformer/base_384.py @@ -0,0 +1,16 @@ +# model settings +# Only for evaluation +model = dict( + type='ImageClassifier', + backbone=dict( + type='SwinTransformer', + arch='base', + img_size=384, + stage_cfgs=dict(block_cfgs=dict(window_size=12))), + neck=dict(type='GlobalAveragePooling'), + head=dict( + type='LinearClsHead', + num_classes=1000, + in_channels=1024, + loss=dict(type='CrossEntropyLoss', loss_weight=1.0), + topk=(1, 5))) diff --git a/openmmlab_test/mmclassification-0.24.1/configs/_base_/models/swin_transformer/large_224.py b/openmmlab_test/mmclassification-0.24.1/configs/_base_/models/swin_transformer/large_224.py new file mode 100644 index 00000000..747d00e4 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/_base_/models/swin_transformer/large_224.py @@ -0,0 +1,12 @@ +# model settings +# Only for evaluation +model = dict( + type='ImageClassifier', + backbone=dict(type='SwinTransformer', arch='large', img_size=224), + neck=dict(type='GlobalAveragePooling'), + head=dict( + type='LinearClsHead', + num_classes=1000, + in_channels=1536, + loss=dict(type='CrossEntropyLoss', loss_weight=1.0), + topk=(1, 5))) diff --git a/openmmlab_test/mmclassification-0.24.1/configs/_base_/models/swin_transformer/large_384.py b/openmmlab_test/mmclassification-0.24.1/configs/_base_/models/swin_transformer/large_384.py new file mode 100644 index 00000000..7026f81a --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/_base_/models/swin_transformer/large_384.py @@ -0,0 +1,16 @@ +# model settings +# Only for evaluation +model = dict( + type='ImageClassifier', + backbone=dict( + type='SwinTransformer', + arch='large', + img_size=384, + stage_cfgs=dict(block_cfgs=dict(window_size=12))), + neck=dict(type='GlobalAveragePooling'), + head=dict( + type='LinearClsHead', + num_classes=1000, + in_channels=1536, + loss=dict(type='CrossEntropyLoss', loss_weight=1.0), + topk=(1, 5))) diff --git a/openmmlab_test/mmclassification-0.24.1/configs/_base_/models/swin_transformer/small_224.py b/openmmlab_test/mmclassification-0.24.1/configs/_base_/models/swin_transformer/small_224.py new file mode 100644 index 00000000..78739866 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/_base_/models/swin_transformer/small_224.py @@ -0,0 +1,23 @@ +# model settings +model = dict( + type='ImageClassifier', + backbone=dict( + type='SwinTransformer', arch='small', img_size=224, + drop_path_rate=0.3), + neck=dict(type='GlobalAveragePooling'), + head=dict( + type='LinearClsHead', + num_classes=1000, + in_channels=768, + init_cfg=None, # suppress the default init_cfg of LinearClsHead. + loss=dict( + type='LabelSmoothLoss', label_smooth_val=0.1, mode='original'), + cal_acc=False), + init_cfg=[ + dict(type='TruncNormal', layer='Linear', std=0.02, bias=0.), + dict(type='Constant', layer='LayerNorm', val=1., bias=0.) + ], + train_cfg=dict(augments=[ + dict(type='BatchMixup', alpha=0.8, num_classes=1000, prob=0.5), + dict(type='BatchCutMix', alpha=1.0, num_classes=1000, prob=0.5) + ])) diff --git a/openmmlab_test/mmclassification-0.24.1/configs/_base_/models/swin_transformer/tiny_224.py b/openmmlab_test/mmclassification-0.24.1/configs/_base_/models/swin_transformer/tiny_224.py new file mode 100644 index 00000000..2d68d66b --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/_base_/models/swin_transformer/tiny_224.py @@ -0,0 +1,22 @@ +# model settings +model = dict( + type='ImageClassifier', + backbone=dict( + type='SwinTransformer', arch='tiny', img_size=224, drop_path_rate=0.2), + neck=dict(type='GlobalAveragePooling'), + head=dict( + type='LinearClsHead', + num_classes=1000, + in_channels=768, + init_cfg=None, # suppress the default init_cfg of LinearClsHead. + loss=dict( + type='LabelSmoothLoss', label_smooth_val=0.1, mode='original'), + cal_acc=False), + init_cfg=[ + dict(type='TruncNormal', layer='Linear', std=0.02, bias=0.), + dict(type='Constant', layer='LayerNorm', val=1., bias=0.) + ], + train_cfg=dict(augments=[ + dict(type='BatchMixup', alpha=0.8, num_classes=1000, prob=0.5), + dict(type='BatchCutMix', alpha=1.0, num_classes=1000, prob=0.5) + ])) diff --git a/openmmlab_test/mmclassification-0.24.1/configs/_base_/models/swin_transformer_v2/base_256.py b/openmmlab_test/mmclassification-0.24.1/configs/_base_/models/swin_transformer_v2/base_256.py new file mode 100644 index 00000000..f711a9c8 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/_base_/models/swin_transformer_v2/base_256.py @@ -0,0 +1,25 @@ +# model settings +model = dict( + type='ImageClassifier', + backbone=dict( + type='SwinTransformerV2', + arch='base', + img_size=256, + drop_path_rate=0.5), + neck=dict(type='GlobalAveragePooling'), + head=dict( + type='LinearClsHead', + num_classes=1000, + in_channels=1024, + init_cfg=None, # suppress the default init_cfg of LinearClsHead. + loss=dict( + type='LabelSmoothLoss', label_smooth_val=0.1, mode='original'), + cal_acc=False), + init_cfg=[ + dict(type='TruncNormal', layer='Linear', std=0.02, bias=0.), + dict(type='Constant', layer='LayerNorm', val=1., bias=0.) + ], + train_cfg=dict(augments=[ + dict(type='BatchMixup', alpha=0.8, num_classes=1000, prob=0.5), + dict(type='BatchCutMix', alpha=1.0, num_classes=1000, prob=0.5) + ])) diff --git a/openmmlab_test/mmclassification-0.24.1/configs/_base_/models/swin_transformer_v2/base_384.py b/openmmlab_test/mmclassification-0.24.1/configs/_base_/models/swin_transformer_v2/base_384.py new file mode 100644 index 00000000..5fb9aead --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/_base_/models/swin_transformer_v2/base_384.py @@ -0,0 +1,17 @@ +# model settings +model = dict( + type='ImageClassifier', + backbone=dict( + type='SwinTransformerV2', + arch='base', + img_size=384, + drop_path_rate=0.2), + neck=dict(type='GlobalAveragePooling'), + head=dict( + type='LinearClsHead', + num_classes=1000, + in_channels=1024, + init_cfg=None, # suppress the default init_cfg of LinearClsHead. + loss=dict( + type='LabelSmoothLoss', label_smooth_val=0.1, mode='original'), + cal_acc=False)) diff --git a/openmmlab_test/mmclassification-0.24.1/configs/_base_/models/swin_transformer_v2/large_256.py b/openmmlab_test/mmclassification-0.24.1/configs/_base_/models/swin_transformer_v2/large_256.py new file mode 100644 index 00000000..fe557c32 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/_base_/models/swin_transformer_v2/large_256.py @@ -0,0 +1,16 @@ +# model settings +# Only for evaluation +model = dict( + type='ImageClassifier', + backbone=dict( + type='SwinTransformerV2', + arch='large', + img_size=256, + drop_path_rate=0.2), + neck=dict(type='GlobalAveragePooling'), + head=dict( + type='LinearClsHead', + num_classes=1000, + in_channels=1536, + loss=dict(type='CrossEntropyLoss', loss_weight=1.0), + topk=(1, 5))) diff --git a/openmmlab_test/mmclassification-0.24.1/configs/_base_/models/swin_transformer_v2/large_384.py b/openmmlab_test/mmclassification-0.24.1/configs/_base_/models/swin_transformer_v2/large_384.py new file mode 100644 index 00000000..a626c407 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/_base_/models/swin_transformer_v2/large_384.py @@ -0,0 +1,16 @@ +# model settings +# Only for evaluation +model = dict( + type='ImageClassifier', + backbone=dict( + type='SwinTransformerV2', + arch='large', + img_size=384, + drop_path_rate=0.2), + neck=dict(type='GlobalAveragePooling'), + head=dict( + type='LinearClsHead', + num_classes=1000, + in_channels=1536, + loss=dict(type='CrossEntropyLoss', loss_weight=1.0), + topk=(1, 5))) diff --git a/openmmlab_test/mmclassification-0.24.1/configs/_base_/models/swin_transformer_v2/small_256.py b/openmmlab_test/mmclassification-0.24.1/configs/_base_/models/swin_transformer_v2/small_256.py new file mode 100644 index 00000000..8808f097 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/_base_/models/swin_transformer_v2/small_256.py @@ -0,0 +1,25 @@ +# model settings +model = dict( + type='ImageClassifier', + backbone=dict( + type='SwinTransformerV2', + arch='small', + img_size=256, + drop_path_rate=0.3), + neck=dict(type='GlobalAveragePooling'), + head=dict( + type='LinearClsHead', + num_classes=1000, + in_channels=768, + init_cfg=None, # suppress the default init_cfg of LinearClsHead. + loss=dict( + type='LabelSmoothLoss', label_smooth_val=0.1, mode='original'), + cal_acc=False), + init_cfg=[ + dict(type='TruncNormal', layer='Linear', std=0.02, bias=0.), + dict(type='Constant', layer='LayerNorm', val=1., bias=0.) + ], + train_cfg=dict(augments=[ + dict(type='BatchMixup', alpha=0.8, num_classes=1000, prob=0.5), + dict(type='BatchCutMix', alpha=1.0, num_classes=1000, prob=0.5) + ])) diff --git a/openmmlab_test/mmclassification-0.24.1/configs/_base_/models/swin_transformer_v2/tiny_256.py b/openmmlab_test/mmclassification-0.24.1/configs/_base_/models/swin_transformer_v2/tiny_256.py new file mode 100644 index 00000000..d40e3946 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/_base_/models/swin_transformer_v2/tiny_256.py @@ -0,0 +1,25 @@ +# model settings +model = dict( + type='ImageClassifier', + backbone=dict( + type='SwinTransformerV2', + arch='tiny', + img_size=256, + drop_path_rate=0.2), + neck=dict(type='GlobalAveragePooling'), + head=dict( + type='LinearClsHead', + num_classes=1000, + in_channels=768, + init_cfg=None, # suppress the default init_cfg of LinearClsHead. + loss=dict( + type='LabelSmoothLoss', label_smooth_val=0.1, mode='original'), + cal_acc=False), + init_cfg=[ + dict(type='TruncNormal', layer='Linear', std=0.02, bias=0.), + dict(type='Constant', layer='LayerNorm', val=1., bias=0.) + ], + train_cfg=dict(augments=[ + dict(type='BatchMixup', alpha=0.8, num_classes=1000, prob=0.5), + dict(type='BatchCutMix', alpha=1.0, num_classes=1000, prob=0.5) + ])) diff --git a/openmmlab_test/mmclassification-0.24.1/configs/_base_/models/t2t-vit-t-14.py b/openmmlab_test/mmclassification-0.24.1/configs/_base_/models/t2t-vit-t-14.py new file mode 100644 index 00000000..91dbb676 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/_base_/models/t2t-vit-t-14.py @@ -0,0 +1,41 @@ +# model settings +embed_dims = 384 +num_classes = 1000 + +model = dict( + type='ImageClassifier', + backbone=dict( + type='T2T_ViT', + img_size=224, + in_channels=3, + embed_dims=embed_dims, + t2t_cfg=dict( + token_dims=64, + use_performer=False, + ), + num_layers=14, + layer_cfgs=dict( + num_heads=6, + feedforward_channels=3 * embed_dims, # mlp_ratio = 3 + ), + drop_path_rate=0.1, + init_cfg=[ + dict(type='TruncNormal', layer='Linear', std=.02), + dict(type='Constant', layer='LayerNorm', val=1., bias=0.), + ]), + neck=None, + head=dict( + type='VisionTransformerClsHead', + num_classes=num_classes, + in_channels=embed_dims, + loss=dict( + type='LabelSmoothLoss', + label_smooth_val=0.1, + mode='original', + ), + topk=(1, 5), + init_cfg=dict(type='TruncNormal', layer='Linear', std=.02)), + train_cfg=dict(augments=[ + dict(type='BatchMixup', alpha=0.8, prob=0.5, num_classes=num_classes), + dict(type='BatchCutMix', alpha=1.0, prob=0.5, num_classes=num_classes), + ])) diff --git a/openmmlab_test/mmclassification-0.24.1/configs/_base_/models/t2t-vit-t-19.py b/openmmlab_test/mmclassification-0.24.1/configs/_base_/models/t2t-vit-t-19.py new file mode 100644 index 00000000..8ab139d6 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/_base_/models/t2t-vit-t-19.py @@ -0,0 +1,41 @@ +# model settings +embed_dims = 448 +num_classes = 1000 + +model = dict( + type='ImageClassifier', + backbone=dict( + type='T2T_ViT', + img_size=224, + in_channels=3, + embed_dims=embed_dims, + t2t_cfg=dict( + token_dims=64, + use_performer=False, + ), + num_layers=19, + layer_cfgs=dict( + num_heads=7, + feedforward_channels=3 * embed_dims, # mlp_ratio = 3 + ), + drop_path_rate=0.1, + init_cfg=[ + dict(type='TruncNormal', layer='Linear', std=.02), + dict(type='Constant', layer='LayerNorm', val=1., bias=0.), + ]), + neck=None, + head=dict( + type='VisionTransformerClsHead', + num_classes=num_classes, + in_channels=embed_dims, + loss=dict( + type='LabelSmoothLoss', + label_smooth_val=0.1, + mode='original', + ), + topk=(1, 5), + init_cfg=dict(type='TruncNormal', layer='Linear', std=.02)), + train_cfg=dict(augments=[ + dict(type='BatchMixup', alpha=0.8, prob=0.5, num_classes=num_classes), + dict(type='BatchCutMix', alpha=1.0, prob=0.5, num_classes=num_classes), + ])) diff --git a/openmmlab_test/mmclassification-0.24.1/configs/_base_/models/t2t-vit-t-24.py b/openmmlab_test/mmclassification-0.24.1/configs/_base_/models/t2t-vit-t-24.py new file mode 100644 index 00000000..5990960a --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/_base_/models/t2t-vit-t-24.py @@ -0,0 +1,41 @@ +# model settings +embed_dims = 512 +num_classes = 1000 + +model = dict( + type='ImageClassifier', + backbone=dict( + type='T2T_ViT', + img_size=224, + in_channels=3, + embed_dims=embed_dims, + t2t_cfg=dict( + token_dims=64, + use_performer=False, + ), + num_layers=24, + layer_cfgs=dict( + num_heads=8, + feedforward_channels=3 * embed_dims, # mlp_ratio = 3 + ), + drop_path_rate=0.1, + init_cfg=[ + dict(type='TruncNormal', layer='Linear', std=.02), + dict(type='Constant', layer='LayerNorm', val=1., bias=0.), + ]), + neck=None, + head=dict( + type='VisionTransformerClsHead', + num_classes=num_classes, + in_channels=embed_dims, + loss=dict( + type='LabelSmoothLoss', + label_smooth_val=0.1, + mode='original', + ), + topk=(1, 5), + init_cfg=dict(type='TruncNormal', layer='Linear', std=.02)), + train_cfg=dict(augments=[ + dict(type='BatchMixup', alpha=0.8, prob=0.5, num_classes=num_classes), + dict(type='BatchCutMix', alpha=1.0, prob=0.5, num_classes=num_classes), + ])) diff --git a/openmmlab_test/mmclassification-0.24.1/configs/_base_/models/tnt_s_patch16_224.py b/openmmlab_test/mmclassification-0.24.1/configs/_base_/models/tnt_s_patch16_224.py new file mode 100644 index 00000000..5e13d078 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/_base_/models/tnt_s_patch16_224.py @@ -0,0 +1,29 @@ +# model settings +model = dict( + type='ImageClassifier', + backbone=dict( + type='TNT', + arch='s', + img_size=224, + patch_size=16, + in_channels=3, + ffn_ratio=4, + qkv_bias=False, + drop_rate=0., + attn_drop_rate=0., + drop_path_rate=0.1, + first_stride=4, + num_fcs=2, + init_cfg=[ + dict(type='TruncNormal', layer='Linear', std=.02), + dict(type='Constant', layer='LayerNorm', val=1., bias=0.) + ]), + neck=None, + head=dict( + type='LinearClsHead', + num_classes=1000, + in_channels=384, + loss=dict( + type='LabelSmoothLoss', label_smooth_val=0.1, mode='original'), + topk=(1, 5), + init_cfg=dict(type='TruncNormal', layer='Linear', std=.02))) diff --git a/openmmlab_test/mmclassification-0.24.1/configs/_base_/models/twins_pcpvt_base.py b/openmmlab_test/mmclassification-0.24.1/configs/_base_/models/twins_pcpvt_base.py new file mode 100644 index 00000000..473d7ee8 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/_base_/models/twins_pcpvt_base.py @@ -0,0 +1,30 @@ +# model settings +model = dict( + type='ImageClassifier', + backbone=dict( + type='PCPVT', + arch='base', + in_channels=3, + out_indices=(3, ), + qkv_bias=True, + norm_cfg=dict(type='LN', eps=1e-06), + norm_after_stage=[False, False, False, True], + drop_rate=0.0, + attn_drop_rate=0., + drop_path_rate=0.3), + neck=dict(type='GlobalAveragePooling'), + head=dict( + type='LinearClsHead', + num_classes=1000, + in_channels=512, + loss=dict( + type='LabelSmoothLoss', label_smooth_val=0.1, mode='original'), + cal_acc=False), + init_cfg=[ + dict(type='TruncNormal', layer='Linear', std=0.02, bias=0.), + dict(type='Constant', layer='LayerNorm', val=1., bias=0.) + ], + train_cfg=dict(augments=[ + dict(type='BatchMixup', alpha=0.8, num_classes=1000, prob=0.5), + dict(type='BatchCutMix', alpha=1.0, num_classes=1000, prob=0.5) + ])) diff --git a/openmmlab_test/mmclassification-0.24.1/configs/_base_/models/twins_svt_base.py b/openmmlab_test/mmclassification-0.24.1/configs/_base_/models/twins_svt_base.py new file mode 100644 index 00000000..cabd3739 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/_base_/models/twins_svt_base.py @@ -0,0 +1,30 @@ +# model settings +model = dict( + type='ImageClassifier', + backbone=dict( + type='SVT', + arch='base', + in_channels=3, + out_indices=(3, ), + qkv_bias=True, + norm_cfg=dict(type='LN'), + norm_after_stage=[False, False, False, True], + drop_rate=0.0, + attn_drop_rate=0., + drop_path_rate=0.3), + neck=dict(type='GlobalAveragePooling'), + head=dict( + type='LinearClsHead', + num_classes=1000, + in_channels=768, + loss=dict( + type='LabelSmoothLoss', label_smooth_val=0.1, mode='original'), + cal_acc=False), + init_cfg=[ + dict(type='TruncNormal', layer='Linear', std=0.02, bias=0.), + dict(type='Constant', layer='LayerNorm', val=1., bias=0.) + ], + train_cfg=dict(augments=[ + dict(type='BatchMixup', alpha=0.8, num_classes=1000, prob=0.5), + dict(type='BatchCutMix', alpha=1.0, num_classes=1000, prob=0.5) + ])) diff --git a/openmmlab_test/mmclassification-0.24.1/configs/_base_/models/van/van_b0.py b/openmmlab_test/mmclassification-0.24.1/configs/_base_/models/van/van_b0.py new file mode 100644 index 00000000..5fa977e7 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/_base_/models/van/van_b0.py @@ -0,0 +1,21 @@ +# model settings +model = dict( + type='ImageClassifier', + backbone=dict(type='VAN', arch='b0', drop_path_rate=0.1), + neck=dict(type='GlobalAveragePooling'), + head=dict( + type='LinearClsHead', + num_classes=1000, + in_channels=256, + init_cfg=None, # suppress the default init_cfg of LinearClsHead. + loss=dict( + type='LabelSmoothLoss', label_smooth_val=0.1, mode='original'), + cal_acc=False), + init_cfg=[ + dict(type='TruncNormal', layer='Linear', std=0.02, bias=0.), + dict(type='Constant', layer='LayerNorm', val=1., bias=0.) + ], + train_cfg=dict(augments=[ + dict(type='BatchMixup', alpha=0.8, num_classes=1000, prob=0.5), + dict(type='BatchCutMix', alpha=1.0, num_classes=1000, prob=0.5) + ])) diff --git a/openmmlab_test/mmclassification-0.24.1/configs/_base_/models/van/van_b1.py b/openmmlab_test/mmclassification-0.24.1/configs/_base_/models/van/van_b1.py new file mode 100644 index 00000000..a27a50b1 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/_base_/models/van/van_b1.py @@ -0,0 +1,21 @@ +# model settings +model = dict( + type='ImageClassifier', + backbone=dict(type='VAN', arch='b1', drop_path_rate=0.1), + neck=dict(type='GlobalAveragePooling'), + head=dict( + type='LinearClsHead', + num_classes=1000, + in_channels=512, + init_cfg=None, # suppress the default init_cfg of LinearClsHead. + loss=dict( + type='LabelSmoothLoss', label_smooth_val=0.1, mode='original'), + cal_acc=False), + init_cfg=[ + dict(type='TruncNormal', layer='Linear', std=0.02, bias=0.), + dict(type='Constant', layer='LayerNorm', val=1., bias=0.) + ], + train_cfg=dict(augments=[ + dict(type='BatchMixup', alpha=0.8, num_classes=1000, prob=0.5), + dict(type='BatchCutMix', alpha=1.0, num_classes=1000, prob=0.5) + ])) diff --git a/openmmlab_test/mmclassification-0.24.1/configs/_base_/models/van/van_b2.py b/openmmlab_test/mmclassification-0.24.1/configs/_base_/models/van/van_b2.py new file mode 100644 index 00000000..41b0484f --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/_base_/models/van/van_b2.py @@ -0,0 +1,13 @@ +# model settings +model = dict( + type='ImageClassifier', + backbone=dict(type='VAN', arch='b2', drop_path_rate=0.1), + neck=dict(type='GlobalAveragePooling'), + head=dict( + type='LinearClsHead', + num_classes=1000, + in_channels=512, + init_cfg=None, # suppress the default init_cfg of LinearClsHead. + loss=dict( + type='LabelSmoothLoss', label_smooth_val=0.1, mode='original'), + cal_acc=False)) diff --git a/openmmlab_test/mmclassification-0.24.1/configs/_base_/models/van/van_b3.py b/openmmlab_test/mmclassification-0.24.1/configs/_base_/models/van/van_b3.py new file mode 100644 index 00000000..d32b12cc --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/_base_/models/van/van_b3.py @@ -0,0 +1,13 @@ +# model settings +model = dict( + type='ImageClassifier', + backbone=dict(type='VAN', arch='b3', drop_path_rate=0.2), + neck=dict(type='GlobalAveragePooling'), + head=dict( + type='LinearClsHead', + num_classes=1000, + in_channels=512, + init_cfg=None, # suppress the default init_cfg of LinearClsHead. + loss=dict( + type='LabelSmoothLoss', label_smooth_val=0.1, mode='original'), + cal_acc=False)) diff --git a/openmmlab_test/mmclassification-0.24.1/configs/_base_/models/van/van_b4.py b/openmmlab_test/mmclassification-0.24.1/configs/_base_/models/van/van_b4.py new file mode 100644 index 00000000..417835c9 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/_base_/models/van/van_b4.py @@ -0,0 +1,13 @@ +# model settings +model = dict( + type='ImageClassifier', + backbone=dict(type='VAN', arch='b4', drop_path_rate=0.2), + neck=dict(type='GlobalAveragePooling'), + head=dict( + type='LinearClsHead', + num_classes=1000, + in_channels=512, + init_cfg=None, # suppress the default init_cfg of LinearClsHead. + loss=dict( + type='LabelSmoothLoss', label_smooth_val=0.1, mode='original'), + cal_acc=False)) diff --git a/openmmlab_test/mmclassification-0.24.1/configs/_base_/models/van/van_b5.py b/openmmlab_test/mmclassification-0.24.1/configs/_base_/models/van/van_b5.py new file mode 100644 index 00000000..fe8b9236 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/_base_/models/van/van_b5.py @@ -0,0 +1,13 @@ +# model settings +model = dict( + type='ImageClassifier', + backbone=dict(type='VAN', arch='b5', drop_path_rate=0.2), + neck=dict(type='GlobalAveragePooling'), + head=dict( + type='LinearClsHead', + num_classes=1000, + in_channels=768, + init_cfg=None, # suppress the default init_cfg of LinearClsHead. + loss=dict( + type='LabelSmoothLoss', label_smooth_val=0.1, mode='original'), + cal_acc=False)) diff --git a/openmmlab_test/mmclassification-0.24.1/configs/_base_/models/van/van_b6.py b/openmmlab_test/mmclassification-0.24.1/configs/_base_/models/van/van_b6.py new file mode 100644 index 00000000..a0dfb3c7 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/_base_/models/van/van_b6.py @@ -0,0 +1,13 @@ +# model settings +model = dict( + type='ImageClassifier', + backbone=dict(type='VAN', arch='b6', drop_path_rate=0.3), + neck=dict(type='GlobalAveragePooling'), + head=dict( + type='LinearClsHead', + num_classes=1000, + in_channels=768, + init_cfg=None, # suppress the default init_cfg of LinearClsHead. + loss=dict( + type='LabelSmoothLoss', label_smooth_val=0.1, mode='original'), + cal_acc=False)) diff --git a/openmmlab_test/mmclassification-0.24.1/configs/_base_/models/van/van_base.py b/openmmlab_test/mmclassification-0.24.1/configs/_base_/models/van/van_base.py new file mode 100644 index 00000000..5c2bcf0e --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/_base_/models/van/van_base.py @@ -0,0 +1 @@ +_base_ = ['./van-b2.py'] diff --git a/openmmlab_test/mmclassification-0.24.1/configs/_base_/models/van/van_large.py b/openmmlab_test/mmclassification-0.24.1/configs/_base_/models/van/van_large.py new file mode 100644 index 00000000..bc9536c6 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/_base_/models/van/van_large.py @@ -0,0 +1 @@ +_base_ = ['./van-b3.py'] diff --git a/openmmlab_test/mmclassification-0.24.1/configs/_base_/models/van/van_small.py b/openmmlab_test/mmclassification-0.24.1/configs/_base_/models/van/van_small.py new file mode 100644 index 00000000..3973c22a --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/_base_/models/van/van_small.py @@ -0,0 +1 @@ +_base_ = ['./van-b1.py'] diff --git a/openmmlab_test/mmclassification-0.24.1/configs/_base_/models/van/van_tiny.py b/openmmlab_test/mmclassification-0.24.1/configs/_base_/models/van/van_tiny.py new file mode 100644 index 00000000..ace9ebbb --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/_base_/models/van/van_tiny.py @@ -0,0 +1 @@ +_base_ = ['./van-b0.py'] diff --git a/openmmlab_test/mmclassification-speed-benchmark/configs/_base_/models/vgg11.py b/openmmlab_test/mmclassification-0.24.1/configs/_base_/models/vgg11.py similarity index 100% rename from openmmlab_test/mmclassification-speed-benchmark/configs/_base_/models/vgg11.py rename to openmmlab_test/mmclassification-0.24.1/configs/_base_/models/vgg11.py diff --git a/openmmlab_test/mmclassification-speed-benchmark/configs/_base_/models/vgg11bn.py b/openmmlab_test/mmclassification-0.24.1/configs/_base_/models/vgg11bn.py similarity index 100% rename from openmmlab_test/mmclassification-speed-benchmark/configs/_base_/models/vgg11bn.py rename to openmmlab_test/mmclassification-0.24.1/configs/_base_/models/vgg11bn.py diff --git a/openmmlab_test/mmclassification-speed-benchmark/configs/_base_/models/vgg13.py b/openmmlab_test/mmclassification-0.24.1/configs/_base_/models/vgg13.py similarity index 100% rename from openmmlab_test/mmclassification-speed-benchmark/configs/_base_/models/vgg13.py rename to openmmlab_test/mmclassification-0.24.1/configs/_base_/models/vgg13.py diff --git a/openmmlab_test/mmclassification-speed-benchmark/configs/_base_/models/vgg13bn.py b/openmmlab_test/mmclassification-0.24.1/configs/_base_/models/vgg13bn.py similarity index 100% rename from openmmlab_test/mmclassification-speed-benchmark/configs/_base_/models/vgg13bn.py rename to openmmlab_test/mmclassification-0.24.1/configs/_base_/models/vgg13bn.py diff --git a/openmmlab_test/mmclassification-speed-benchmark/configs/_base_/models/vgg16.py b/openmmlab_test/mmclassification-0.24.1/configs/_base_/models/vgg16.py similarity index 100% rename from openmmlab_test/mmclassification-speed-benchmark/configs/_base_/models/vgg16.py rename to openmmlab_test/mmclassification-0.24.1/configs/_base_/models/vgg16.py diff --git a/openmmlab_test/mmclassification-speed-benchmark/configs/_base_/models/vgg16bn.py b/openmmlab_test/mmclassification-0.24.1/configs/_base_/models/vgg16bn.py similarity index 100% rename from openmmlab_test/mmclassification-speed-benchmark/configs/_base_/models/vgg16bn.py rename to openmmlab_test/mmclassification-0.24.1/configs/_base_/models/vgg16bn.py diff --git a/openmmlab_test/mmclassification-speed-benchmark/configs/_base_/models/vgg19.py b/openmmlab_test/mmclassification-0.24.1/configs/_base_/models/vgg19.py similarity index 100% rename from openmmlab_test/mmclassification-speed-benchmark/configs/_base_/models/vgg19.py rename to openmmlab_test/mmclassification-0.24.1/configs/_base_/models/vgg19.py diff --git a/openmmlab_test/mmclassification-speed-benchmark/configs/_base_/models/vgg19bn.py b/openmmlab_test/mmclassification-0.24.1/configs/_base_/models/vgg19bn.py similarity index 100% rename from openmmlab_test/mmclassification-speed-benchmark/configs/_base_/models/vgg19bn.py rename to openmmlab_test/mmclassification-0.24.1/configs/_base_/models/vgg19bn.py diff --git a/openmmlab_test/mmclassification-0.24.1/configs/_base_/models/vit-base-p16.py b/openmmlab_test/mmclassification-0.24.1/configs/_base_/models/vit-base-p16.py new file mode 100644 index 00000000..bb42bed5 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/_base_/models/vit-base-p16.py @@ -0,0 +1,25 @@ +# model settings +model = dict( + type='ImageClassifier', + backbone=dict( + type='VisionTransformer', + arch='b', + img_size=224, + patch_size=16, + drop_rate=0.1, + init_cfg=[ + dict( + type='Kaiming', + layer='Conv2d', + mode='fan_in', + nonlinearity='linear') + ]), + neck=None, + head=dict( + type='VisionTransformerClsHead', + num_classes=1000, + in_channels=768, + loss=dict( + type='LabelSmoothLoss', label_smooth_val=0.1, + mode='classy_vision'), + )) diff --git a/openmmlab_test/mmclassification-0.24.1/configs/_base_/models/vit-base-p32.py b/openmmlab_test/mmclassification-0.24.1/configs/_base_/models/vit-base-p32.py new file mode 100644 index 00000000..ad550ef9 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/_base_/models/vit-base-p32.py @@ -0,0 +1,24 @@ +# model settings +model = dict( + type='ImageClassifier', + backbone=dict( + type='VisionTransformer', + arch='b', + img_size=224, + patch_size=32, + drop_rate=0.1, + init_cfg=[ + dict( + type='Kaiming', + layer='Conv2d', + mode='fan_in', + nonlinearity='linear') + ]), + neck=None, + head=dict( + type='VisionTransformerClsHead', + num_classes=1000, + in_channels=768, + loss=dict(type='CrossEntropyLoss', loss_weight=1.0), + topk=(1, 5), + )) diff --git a/openmmlab_test/mmclassification-0.24.1/configs/_base_/models/vit-large-p16.py b/openmmlab_test/mmclassification-0.24.1/configs/_base_/models/vit-large-p16.py new file mode 100644 index 00000000..97162304 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/_base_/models/vit-large-p16.py @@ -0,0 +1,24 @@ +# model settings +model = dict( + type='ImageClassifier', + backbone=dict( + type='VisionTransformer', + arch='l', + img_size=224, + patch_size=16, + drop_rate=0.1, + init_cfg=[ + dict( + type='Kaiming', + layer='Conv2d', + mode='fan_in', + nonlinearity='linear') + ]), + neck=None, + head=dict( + type='VisionTransformerClsHead', + num_classes=1000, + in_channels=1024, + loss=dict(type='CrossEntropyLoss', loss_weight=1.0), + topk=(1, 5), + )) diff --git a/openmmlab_test/mmclassification-0.24.1/configs/_base_/models/vit-large-p32.py b/openmmlab_test/mmclassification-0.24.1/configs/_base_/models/vit-large-p32.py new file mode 100644 index 00000000..f9491bb5 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/_base_/models/vit-large-p32.py @@ -0,0 +1,24 @@ +# model settings +model = dict( + type='ImageClassifier', + backbone=dict( + type='VisionTransformer', + arch='l', + img_size=224, + patch_size=32, + drop_rate=0.1, + init_cfg=[ + dict( + type='Kaiming', + layer='Conv2d', + mode='fan_in', + nonlinearity='linear') + ]), + neck=None, + head=dict( + type='VisionTransformerClsHead', + num_classes=1000, + in_channels=1024, + loss=dict(type='CrossEntropyLoss', loss_weight=1.0), + topk=(1, 5), + )) diff --git a/openmmlab_test/mmclassification-0.24.1/configs/_base_/models/wide-resnet50.py b/openmmlab_test/mmclassification-0.24.1/configs/_base_/models/wide-resnet50.py new file mode 100644 index 00000000..a2913b9a --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/_base_/models/wide-resnet50.py @@ -0,0 +1,20 @@ +# model settings +model = dict( + type='ImageClassifier', + backbone=dict( + type='ResNet', + depth=50, + num_stages=4, + out_indices=(3, ), + stem_channels=64, + base_channels=128, + expansion=2, + style='pytorch'), + neck=dict(type='GlobalAveragePooling'), + head=dict( + type='LinearClsHead', + num_classes=1000, + in_channels=2048, + loss=dict(type='CrossEntropyLoss', loss_weight=1.0), + topk=(1, 5), + )) diff --git a/openmmlab_test/mmclassification-speed-benchmark/configs/_base_/schedules/cifar10_bs128.py b/openmmlab_test/mmclassification-0.24.1/configs/_base_/schedules/cifar10_bs128.py similarity index 100% rename from openmmlab_test/mmclassification-speed-benchmark/configs/_base_/schedules/cifar10_bs128.py rename to openmmlab_test/mmclassification-0.24.1/configs/_base_/schedules/cifar10_bs128.py diff --git a/openmmlab_test/mmclassification-0.24.1/configs/_base_/schedules/cub_bs64.py b/openmmlab_test/mmclassification-0.24.1/configs/_base_/schedules/cub_bs64.py new file mode 100644 index 00000000..93cce6a7 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/_base_/schedules/cub_bs64.py @@ -0,0 +1,13 @@ +# optimizer +optimizer = dict( + type='SGD', lr=0.01, momentum=0.9, weight_decay=0.0005, nesterov=True) +optimizer_config = dict(grad_clip=None) +# learning policy +lr_config = dict( + policy='CosineAnnealing', + min_lr=0, + warmup='linear', + warmup_iters=5, + warmup_ratio=0.01, + warmup_by_epoch=True) +runner = dict(type='EpochBasedRunner', max_epochs=100) diff --git a/openmmlab_test/mmclassification-0.24.1/configs/_base_/schedules/imagenet_bs1024_adamw_conformer.py b/openmmlab_test/mmclassification-0.24.1/configs/_base_/schedules/imagenet_bs1024_adamw_conformer.py new file mode 100644 index 00000000..92f18017 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/_base_/schedules/imagenet_bs1024_adamw_conformer.py @@ -0,0 +1,29 @@ +paramwise_cfg = dict( + norm_decay_mult=0.0, + bias_decay_mult=0.0, + custom_keys={ + '.cls_token': dict(decay_mult=0.0), + }) + +# for batch in each gpu is 128, 8 gpu +# lr = 5e-4 * 128 * 8 / 512 = 0.001 +optimizer = dict( + type='AdamW', + lr=5e-4 * 128 * 8 / 512, + weight_decay=0.05, + eps=1e-8, + betas=(0.9, 0.999), + paramwise_cfg=paramwise_cfg) +optimizer_config = dict(grad_clip=None) + +# learning policy +lr_config = dict( + policy='CosineAnnealing', + by_epoch=False, + min_lr_ratio=1e-2, + warmup='linear', + warmup_ratio=1e-3, + warmup_iters=5 * 1252, + warmup_by_epoch=False) + +runner = dict(type='EpochBasedRunner', max_epochs=300) diff --git a/openmmlab_test/mmclassification-0.24.1/configs/_base_/schedules/imagenet_bs1024_adamw_swin.py b/openmmlab_test/mmclassification-0.24.1/configs/_base_/schedules/imagenet_bs1024_adamw_swin.py new file mode 100644 index 00000000..2ad035cb --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/_base_/schedules/imagenet_bs1024_adamw_swin.py @@ -0,0 +1,30 @@ +paramwise_cfg = dict( + norm_decay_mult=0.0, + bias_decay_mult=0.0, + custom_keys={ + '.absolute_pos_embed': dict(decay_mult=0.0), + '.relative_position_bias_table': dict(decay_mult=0.0) + }) + +# for batch in each gpu is 128, 8 gpu +# lr = 5e-4 * 128 * 8 / 512 = 0.001 +optimizer = dict( + type='AdamW', + lr=5e-4 * 1024 / 512, + weight_decay=0.05, + eps=1e-8, + betas=(0.9, 0.999), + paramwise_cfg=paramwise_cfg) +optimizer_config = dict(grad_clip=dict(max_norm=5.0)) + +# learning policy +lr_config = dict( + policy='CosineAnnealing', + by_epoch=False, + min_lr_ratio=1e-2, + warmup='linear', + warmup_ratio=1e-3, + warmup_iters=20, + warmup_by_epoch=True) + +runner = dict(type='EpochBasedRunner', max_epochs=300) diff --git a/openmmlab_test/mmclassification-0.24.1/configs/_base_/schedules/imagenet_bs1024_coslr.py b/openmmlab_test/mmclassification-0.24.1/configs/_base_/schedules/imagenet_bs1024_coslr.py new file mode 100644 index 00000000..ee84e7a6 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/_base_/schedules/imagenet_bs1024_coslr.py @@ -0,0 +1,12 @@ +# optimizer +optimizer = dict(type='SGD', lr=0.8, momentum=0.9, weight_decay=5e-5) +optimizer_config = dict(grad_clip=None) +# learning policy +lr_config = dict( + policy='CosineAnnealing', + min_lr=0, + warmup='linear', + warmup_iters=5, + warmup_ratio=0.1, + warmup_by_epoch=True) +runner = dict(type='EpochBasedRunner', max_epochs=100) diff --git a/openmmlab_test/mmclassification-speed-benchmark/configs/_base_/schedules/imagenet_bs1024_linearlr_bn_nowd.py b/openmmlab_test/mmclassification-0.24.1/configs/_base_/schedules/imagenet_bs1024_linearlr_bn_nowd.py similarity index 100% rename from openmmlab_test/mmclassification-speed-benchmark/configs/_base_/schedules/imagenet_bs1024_linearlr_bn_nowd.py rename to openmmlab_test/mmclassification-0.24.1/configs/_base_/schedules/imagenet_bs1024_linearlr_bn_nowd.py diff --git a/openmmlab_test/mmclassification-speed-benchmark/configs/_base_/schedules/imagenet_bs2048.py b/openmmlab_test/mmclassification-0.24.1/configs/_base_/schedules/imagenet_bs2048.py similarity index 100% rename from openmmlab_test/mmclassification-speed-benchmark/configs/_base_/schedules/imagenet_bs2048.py rename to openmmlab_test/mmclassification-0.24.1/configs/_base_/schedules/imagenet_bs2048.py diff --git a/openmmlab_test/mmclassification-speed-benchmark/configs/_base_/schedules/imagenet_bs2048_AdamW.py b/openmmlab_test/mmclassification-0.24.1/configs/_base_/schedules/imagenet_bs2048_AdamW.py similarity index 100% rename from openmmlab_test/mmclassification-speed-benchmark/configs/_base_/schedules/imagenet_bs2048_AdamW.py rename to openmmlab_test/mmclassification-0.24.1/configs/_base_/schedules/imagenet_bs2048_AdamW.py diff --git a/openmmlab_test/mmclassification-speed-benchmark/configs/_base_/schedules/imagenet_bs2048_coslr.py b/openmmlab_test/mmclassification-0.24.1/configs/_base_/schedules/imagenet_bs2048_coslr.py similarity index 100% rename from openmmlab_test/mmclassification-speed-benchmark/configs/_base_/schedules/imagenet_bs2048_coslr.py rename to openmmlab_test/mmclassification-0.24.1/configs/_base_/schedules/imagenet_bs2048_coslr.py diff --git a/openmmlab_test/mmclassification-0.24.1/configs/_base_/schedules/imagenet_bs2048_rsb.py b/openmmlab_test/mmclassification-0.24.1/configs/_base_/schedules/imagenet_bs2048_rsb.py new file mode 100644 index 00000000..e021cb0f --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/_base_/schedules/imagenet_bs2048_rsb.py @@ -0,0 +1,12 @@ +# optimizer +optimizer = dict(type='Lamb', lr=0.005, weight_decay=0.02) +optimizer_config = dict(grad_clip=None) +# learning policy +lr_config = dict( + policy='CosineAnnealing', + min_lr=1.0e-6, + warmup='linear', + # For ImageNet-1k, 626 iters per epoch, warmup 5 epochs. + warmup_iters=5 * 626, + warmup_ratio=0.0001) +runner = dict(type='EpochBasedRunner', max_epochs=100) diff --git a/openmmlab_test/mmclassification-speed-benchmark/configs/_base_/schedules/imagenet_bs256.py b/openmmlab_test/mmclassification-0.24.1/configs/_base_/schedules/imagenet_bs256.py similarity index 100% rename from openmmlab_test/mmclassification-speed-benchmark/configs/_base_/schedules/imagenet_bs256.py rename to openmmlab_test/mmclassification-0.24.1/configs/_base_/schedules/imagenet_bs256.py diff --git a/openmmlab_test/mmclassification-speed-benchmark/configs/_base_/schedules/imagenet_bs256_140e.py b/openmmlab_test/mmclassification-0.24.1/configs/_base_/schedules/imagenet_bs256_140e.py similarity index 100% rename from openmmlab_test/mmclassification-speed-benchmark/configs/_base_/schedules/imagenet_bs256_140e.py rename to openmmlab_test/mmclassification-0.24.1/configs/_base_/schedules/imagenet_bs256_140e.py diff --git a/openmmlab_test/mmclassification-0.24.1/configs/_base_/schedules/imagenet_bs256_200e_coslr_warmup.py b/openmmlab_test/mmclassification-0.24.1/configs/_base_/schedules/imagenet_bs256_200e_coslr_warmup.py new file mode 100644 index 00000000..49456b2c --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/_base_/schedules/imagenet_bs256_200e_coslr_warmup.py @@ -0,0 +1,11 @@ +# optimizer +optimizer = dict(type='SGD', lr=0.1, momentum=0.9, weight_decay=0.0001) +optimizer_config = dict(grad_clip=None) +# learning policy +lr_config = dict( + policy='CosineAnnealing', + min_lr=0, + warmup='linear', + warmup_iters=25025, + warmup_ratio=0.25) +runner = dict(type='EpochBasedRunner', max_epochs=200) diff --git a/openmmlab_test/mmclassification-speed-benchmark/configs/_base_/schedules/imagenet_bs256_coslr.py b/openmmlab_test/mmclassification-0.24.1/configs/_base_/schedules/imagenet_bs256_coslr.py similarity index 100% rename from openmmlab_test/mmclassification-speed-benchmark/configs/_base_/schedules/imagenet_bs256_coslr.py rename to openmmlab_test/mmclassification-0.24.1/configs/_base_/schedules/imagenet_bs256_coslr.py diff --git a/openmmlab_test/mmclassification-speed-benchmark/configs/_base_/schedules/imagenet_bs256_epochstep.py b/openmmlab_test/mmclassification-0.24.1/configs/_base_/schedules/imagenet_bs256_epochstep.py similarity index 100% rename from openmmlab_test/mmclassification-speed-benchmark/configs/_base_/schedules/imagenet_bs256_epochstep.py rename to openmmlab_test/mmclassification-0.24.1/configs/_base_/schedules/imagenet_bs256_epochstep.py diff --git a/openmmlab_test/mmclassification-0.24.1/configs/_base_/schedules/imagenet_bs4096_AdamW.py b/openmmlab_test/mmclassification-0.24.1/configs/_base_/schedules/imagenet_bs4096_AdamW.py new file mode 100644 index 00000000..75b00d80 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/_base_/schedules/imagenet_bs4096_AdamW.py @@ -0,0 +1,24 @@ +# specific to vit pretrain +paramwise_cfg = dict(custom_keys={ + '.cls_token': dict(decay_mult=0.0), + '.pos_embed': dict(decay_mult=0.0) +}) + +# optimizer +optimizer = dict( + type='AdamW', + lr=0.003, + weight_decay=0.3, + paramwise_cfg=paramwise_cfg, +) +optimizer_config = dict(grad_clip=dict(max_norm=1.0)) + +# learning policy +lr_config = dict( + policy='CosineAnnealing', + min_lr=0, + warmup='linear', + warmup_iters=10000, + warmup_ratio=1e-4, +) +runner = dict(type='EpochBasedRunner', max_epochs=300) diff --git a/openmmlab_test/mmclassification-0.24.1/configs/_base_/schedules/stanford_cars_bs8.py b/openmmlab_test/mmclassification-0.24.1/configs/_base_/schedules/stanford_cars_bs8.py new file mode 100644 index 00000000..dee252ec --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/_base_/schedules/stanford_cars_bs8.py @@ -0,0 +1,7 @@ +# optimizer +optimizer = dict( + type='SGD', lr=0.003, momentum=0.9, weight_decay=0.0005, nesterov=True) +optimizer_config = dict(grad_clip=None) +# learning policy +lr_config = dict(policy='step', step=[40, 70, 90]) +runner = dict(type='EpochBasedRunner', max_epochs=100) diff --git a/openmmlab_test/mmclassification-0.24.1/configs/conformer/README.md b/openmmlab_test/mmclassification-0.24.1/configs/conformer/README.md new file mode 100644 index 00000000..5b7d96b7 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/conformer/README.md @@ -0,0 +1,37 @@ +# Conformer + +> [Conformer: Local Features Coupling Global Representations for Visual Recognition](https://arxiv.org/abs/2105.03889) + + + +## Abstract + +Within Convolutional Neural Network (CNN), the convolution operations are good at extracting local features but experience difficulty to capture global representations. Within visual transformer, the cascaded self-attention modules can capture long-distance feature dependencies but unfortunately deteriorate local feature details. In this paper, we propose a hybrid network structure, termed Conformer, to take advantage of convolutional operations and self-attention mechanisms for enhanced representation learning. Conformer roots in the Feature Coupling Unit (FCU), which fuses local features and global representations under different resolutions in an interactive fashion. Conformer adopts a concurrent structure so that local features and global representations are retained to the maximum extent. Experiments show that Conformer, under the comparable parameter complexity, outperforms the visual transformer (DeiT-B) by 2.3% on ImageNet. On MSCOCO, it outperforms ResNet-101 by 3.7% and 3.6% mAPs for object detection and instance segmentation, respectively, demonstrating the great potential to be a general backbone network. + +
+ +
+ +## Results and models + +### ImageNet-1k + +| Model | Params(M) | Flops(G) | Top-1 (%) | Top-5 (%) | Config | Download | +| :-------------------: | :-------: | :------: | :-------: | :-------: | :---------------------------------------------------------------------: | :-----------------------------------------------------------------------: | +| Conformer-tiny-p16\* | 23.52 | 4.90 | 81.31 | 95.60 | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/conformer/conformer-tiny-p16_8xb128_in1k.py) | [model](https://download.openmmlab.com/mmclassification/v0/conformer/conformer-tiny-p16_3rdparty_8xb128_in1k_20211206-f6860372.pth) | +| Conformer-small-p32\* | 38.85 | 7.09 | 81.96 | 96.02 | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/conformer/conformer-small-p32_8xb128_in1k.py) | [model](https://download.openmmlab.com/mmclassification/v0/conformer/conformer-small-p32_8xb128_in1k_20211206-947a0816.pth) | +| Conformer-small-p16\* | 37.67 | 10.31 | 83.32 | 96.46 | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/conformer/conformer-small-p16_8xb128_in1k.py) | [model](https://download.openmmlab.com/mmclassification/v0/conformer/conformer-small-p16_3rdparty_8xb128_in1k_20211206-3065dcf5.pth) | +| Conformer-base-p16\* | 83.29 | 22.89 | 83.82 | 96.59 | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/conformer/conformer-base-p16_8xb128_in1k.py) | [model](https://download.openmmlab.com/mmclassification/v0/conformer/conformer-base-p16_3rdparty_8xb128_in1k_20211206-bfdf8637.pth) | + +*Models with * are converted from the [official repo](https://github.com/pengzhiliang/Conformer). The config files of these models are only for validation. We don't ensure these config files' training accuracy and welcome you to contribute your reproduction results.* + +## Citation + +``` +@article{peng2021conformer, + title={Conformer: Local Features Coupling Global Representations for Visual Recognition}, + author={Zhiliang Peng and Wei Huang and Shanzhi Gu and Lingxi Xie and Yaowei Wang and Jianbin Jiao and Qixiang Ye}, + journal={arXiv preprint arXiv:2105.03889}, + year={2021}, +} +``` diff --git a/openmmlab_test/mmclassification-0.24.1/configs/conformer/conformer-base-p16_8xb128_in1k.py b/openmmlab_test/mmclassification-0.24.1/configs/conformer/conformer-base-p16_8xb128_in1k.py new file mode 100644 index 00000000..29ed58be --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/conformer/conformer-base-p16_8xb128_in1k.py @@ -0,0 +1,9 @@ +_base_ = [ + '../_base_/models/conformer/base-p16.py', + '../_base_/datasets/imagenet_bs64_swin_224.py', + '../_base_/schedules/imagenet_bs1024_adamw_conformer.py', + '../_base_/default_runtime.py' +] + +data = dict(samples_per_gpu=128) +evaluation = dict(interval=1, metric='accuracy') diff --git a/openmmlab_test/mmclassification-0.24.1/configs/conformer/conformer-small-p16_8xb128_in1k.py b/openmmlab_test/mmclassification-0.24.1/configs/conformer/conformer-small-p16_8xb128_in1k.py new file mode 100644 index 00000000..c40ed041 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/conformer/conformer-small-p16_8xb128_in1k.py @@ -0,0 +1,9 @@ +_base_ = [ + '../_base_/models/conformer/small-p16.py', + '../_base_/datasets/imagenet_bs64_swin_224.py', + '../_base_/schedules/imagenet_bs1024_adamw_conformer.py', + '../_base_/default_runtime.py' +] + +data = dict(samples_per_gpu=128) +evaluation = dict(interval=1, metric='accuracy') diff --git a/openmmlab_test/mmclassification-0.24.1/configs/conformer/conformer-small-p32_8xb128_in1k.py b/openmmlab_test/mmclassification-0.24.1/configs/conformer/conformer-small-p32_8xb128_in1k.py new file mode 100644 index 00000000..aaa11895 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/conformer/conformer-small-p32_8xb128_in1k.py @@ -0,0 +1,9 @@ +_base_ = [ + '../_base_/models/conformer/small-p32.py', + '../_base_/datasets/imagenet_bs64_swin_224.py', + '../_base_/schedules/imagenet_bs1024_adamw_conformer.py', + '../_base_/default_runtime.py' +] + +data = dict(samples_per_gpu=128) +evaluation = dict(interval=1, metric='accuracy') diff --git a/openmmlab_test/mmclassification-0.24.1/configs/conformer/conformer-tiny-p16_8xb128_in1k.py b/openmmlab_test/mmclassification-0.24.1/configs/conformer/conformer-tiny-p16_8xb128_in1k.py new file mode 100644 index 00000000..76a264c6 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/conformer/conformer-tiny-p16_8xb128_in1k.py @@ -0,0 +1,9 @@ +_base_ = [ + '../_base_/models/conformer/tiny-p16.py', + '../_base_/datasets/imagenet_bs64_swin_224.py', + '../_base_/schedules/imagenet_bs1024_adamw_conformer.py', + '../_base_/default_runtime.py' +] + +data = dict(samples_per_gpu=128) +evaluation = dict(interval=1, metric='accuracy') diff --git a/openmmlab_test/mmclassification-0.24.1/configs/conformer/metafile.yml b/openmmlab_test/mmclassification-0.24.1/configs/conformer/metafile.yml new file mode 100644 index 00000000..4efe05fb --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/conformer/metafile.yml @@ -0,0 +1,78 @@ +Collections: + - Name: Conformer + Metadata: + Training Data: ImageNet-1k + Architecture: + - Layer Normalization + - Scaled Dot-Product Attention + - Dropout + Paper: + URL: https://arxiv.org/abs/2105.03889 + Title: "Conformer: Local Features Coupling Global Representations for Visual Recognition" + README: configs/conformer/README.md + Code: + URL: https://github.com/open-mmlab/mmclassification/blob/v0.19.0/mmcls/models/backbones/conformer.py + Version: v0.19.0 + +Models: + - Name: conformer-tiny-p16_3rdparty_8xb128_in1k + In Collection: Conformer + Config: configs/conformer/conformer-tiny-p16_8xb128_in1k.py + Metadata: + FLOPs: 4899611328 + Parameters: 23524704 + Results: + - Dataset: ImageNet-1k + Metrics: + Top 1 Accuracy: 81.31 + Top 5 Accuracy: 95.60 + Task: Image Classification + Weights: https://download.openmmlab.com/mmclassification/v0/conformer/conformer-tiny-p16_3rdparty_8xb128_in1k_20211206-f6860372.pth + Converted From: + Weights: https://drive.google.com/file/d/19SxGhKcWOR5oQSxNUWUM2MGYiaWMrF1z/view?usp=sharing + Code: https://github.com/pengzhiliang/Conformer/blob/main/models.py#L65 + - Name: conformer-small-p16_3rdparty_8xb128_in1k + In Collection: Conformer + Config: configs/conformer/conformer-small-p16_8xb128_in1k.py + Metadata: + FLOPs: 10311309312 + Parameters: 37673424 + Results: + - Dataset: ImageNet-1k + Metrics: + Top 1 Accuracy: 83.32 + Top 5 Accuracy: 96.46 + Task: Image Classification + Weights: https://download.openmmlab.com/mmclassification/v0/conformer/conformer-small-p16_3rdparty_8xb128_in1k_20211206-3065dcf5.pth + Converted From: + Weights: https://drive.google.com/file/d/1mpOlbLaVxOfEwV4-ha78j_1Ebqzj2B83/view?usp=sharing + Code: https://github.com/pengzhiliang/Conformer/blob/main/models.py#L73 + - Name: conformer-small-p32_8xb128_in1k + In Collection: Conformer + Config: configs/conformer/conformer-small-p32_8xb128_in1k.py + Metadata: + FLOPs: 7087281792 + Parameters: 38853072 + Results: + - Dataset: ImageNet-1k + Metrics: + Top 1 Accuracy: 81.96 + Top 5 Accuracy: 96.02 + Task: Image Classification + Weights: https://download.openmmlab.com/mmclassification/v0/conformer/conformer-small-p32_8xb128_in1k_20211206-947a0816.pth + - Name: conformer-base-p16_3rdparty_8xb128_in1k + In Collection: Conformer + Config: configs/conformer/conformer-base-p16_8xb128_in1k.py + Metadata: + FLOPs: 22892078080 + Parameters: 83289136 + Results: + - Dataset: ImageNet-1k + Metrics: + Top 1 Accuracy: 83.82 + Top 5 Accuracy: 96.59 + Task: Image Classification + Weights: https://download.openmmlab.com/mmclassification/v0/conformer/conformer-base-p16_3rdparty_8xb128_in1k_20211206-bfdf8637.pth + Converted From: + Weights: https://drive.google.com/file/d/1oeQ9LSOGKEUaYGu7WTlUGl3KDsQIi0MA/view?usp=sharing + Code: https://github.com/pengzhiliang/Conformer/blob/main/models.py#L89 diff --git a/openmmlab_test/mmclassification-0.24.1/configs/convmixer/README.md b/openmmlab_test/mmclassification-0.24.1/configs/convmixer/README.md new file mode 100644 index 00000000..763bad3c --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/convmixer/README.md @@ -0,0 +1,42 @@ +# ConvMixer + +> [Patches Are All You Need?](https://arxiv.org/abs/2201.09792) + + + +## Abstract + + + +Although convolutional networks have been the dominant architecture for vision tasks for many years, recent experiments have shown that Transformer-based models, most notably the Vision Transformer (ViT), may exceed their performance in some settings. However, due to the quadratic runtime of the self-attention layers in Transformers, ViTs require the use of patch embeddings, which group together small regions of the image into single input features, in order to be applied to larger image sizes. This raises a question: Is the performance of ViTs due to the inherently-more-powerful Transformer architecture, or is it at least partly due to using patches as the input representation? In this paper, we present some evidence for the latter: specifically, we propose the ConvMixer, an extremely simple model that is similar in spirit to the ViT and the even-more-basic MLP-Mixer in that it operates directly on patches as input, separates the mixing of spatial and channel dimensions, and maintains equal size and resolution throughout the network. In contrast, however, the ConvMixer uses only standard convolutions to achieve the mixing steps. Despite its simplicity, we show that the ConvMixer outperforms the ViT, MLP-Mixer, and some of their variants for similar parameter counts and data set sizes, in addition to outperforming classical vision models such as the ResNet. + + + +
+ +
+ +## Results and models + +### ImageNet-1k + +| Model | Params(M) | Flops(G) | Top-1 (%) | Top-5 (%) | Config | Download | +| :-----------------: | :-------: | :------: | :-------: | :-------: | :----------------------------------------------------------------------: | :------------------------------------------------------------------------: | +| ConvMixer-768/32\* | 21.11 | 19.62 | 80.16 | 95.08 | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/convmixer/convmixer-768-32_10xb64_in1k.py) | [model](https://download.openmmlab.com/mmclassification/v0/convmixer/convmixer-768-32_3rdparty_10xb64_in1k_20220323-bca1f7b8.pth) | +| ConvMixer-1024/20\* | 24.38 | 5.55 | 76.94 | 93.36 | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/convmixer/convmixer-1024-20_10xb64_in1k.py) | [model](https://download.openmmlab.com/mmclassification/v0/convmixer/convmixer-1024-20_3rdparty_10xb64_in1k_20220323-48f8aeba.pth) | +| ConvMixer-1536/20\* | 51.63 | 48.71 | 81.37 | 95.61 | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/convmixer/convmixer-1536-20_10xb64_in1k.py) | [model](https://download.openmmlab.com/mmclassification/v0/convmixer/convmixer-1536_20_3rdparty_10xb64_in1k_20220323-ea5786f3.pth) | + +*Models with * are converted from the [official repo](https://github.com/locuslab/convmixer). The config files of these models are only for inference. We don't ensure these config files' training accuracy and welcome you to contribute your reproduction results.* + +## Citation + +```bibtex +@misc{trockman2022patches, + title={Patches Are All You Need?}, + author={Asher Trockman and J. Zico Kolter}, + year={2022}, + eprint={2201.09792}, + archivePrefix={arXiv}, + primaryClass={cs.CV} +} +``` diff --git a/openmmlab_test/mmclassification-0.24.1/configs/convmixer/convmixer-1024-20_10xb64_in1k.py b/openmmlab_test/mmclassification-0.24.1/configs/convmixer/convmixer-1024-20_10xb64_in1k.py new file mode 100644 index 00000000..58694d6e --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/convmixer/convmixer-1024-20_10xb64_in1k.py @@ -0,0 +1,10 @@ +_base_ = [ + '../_base_/models/convmixer/convmixer-1024-20.py', + '../_base_/datasets/imagenet_bs64_convmixer_224.py', + '../_base_/schedules/imagenet_bs1024_adamw_swin.py', + '../_base_/default_runtime.py', +] + +optimizer = dict(lr=0.01) + +runner = dict(type='EpochBasedRunner', max_epochs=150) diff --git a/openmmlab_test/mmclassification-0.24.1/configs/convmixer/convmixer-1536-20_10xb64_in1k.py b/openmmlab_test/mmclassification-0.24.1/configs/convmixer/convmixer-1536-20_10xb64_in1k.py new file mode 100644 index 00000000..17a75595 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/convmixer/convmixer-1536-20_10xb64_in1k.py @@ -0,0 +1,10 @@ +_base_ = [ + '../_base_/models/convmixer/convmixer-1536-20.py', + '../_base_/datasets/imagenet_bs64_convmixer_224.py', + '../_base_/schedules/imagenet_bs1024_adamw_swin.py', + '../_base_/default_runtime.py', +] + +optimizer = dict(lr=0.01) + +runner = dict(type='EpochBasedRunner', max_epochs=150) diff --git a/openmmlab_test/mmclassification-0.24.1/configs/convmixer/convmixer-768-32_10xb64_in1k.py b/openmmlab_test/mmclassification-0.24.1/configs/convmixer/convmixer-768-32_10xb64_in1k.py new file mode 100644 index 00000000..fa4c0602 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/convmixer/convmixer-768-32_10xb64_in1k.py @@ -0,0 +1,10 @@ +_base_ = [ + '../_base_/models/convmixer/convmixer-768-32.py', + '../_base_/datasets/imagenet_bs64_convmixer_224.py', + '../_base_/schedules/imagenet_bs1024_adamw_swin.py', + '../_base_/default_runtime.py', +] + +optimizer = dict(lr=0.01) + +runner = dict(type='EpochBasedRunner', max_epochs=300) diff --git a/openmmlab_test/mmclassification-0.24.1/configs/convmixer/metafile.yml b/openmmlab_test/mmclassification-0.24.1/configs/convmixer/metafile.yml new file mode 100644 index 00000000..7831d746 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/convmixer/metafile.yml @@ -0,0 +1,61 @@ +Collections: + - Name: ConvMixer + Metadata: + Training Data: ImageNet-1k + Architecture: + - 1x1 Convolution + - LayerScale + Paper: + URL: https://arxiv.org/abs/2201.09792 + Title: Patches Are All You Need? + README: configs/convmixer/README.md + +Models: + - Name: convmixer-768-32_10xb64_in1k + Metadata: + FLOPs: 19623051264 + Parameters: 21110248 + In Collections: ConvMixer + Results: + - Dataset: ImageNet-1k + Metrics: + Top 1 Accuracy: 80.16 + Top 5 Accuracy: 95.08 + Task: Image Classification + Weights: https://download.openmmlab.com/mmclassification/v0/convmixer/convmixer-768-32_3rdparty_10xb64_in1k_20220323-bca1f7b8.pth + Config: configs/convmixer/convmixer-768-32_10xb64_in1k.py + Converted From: + Weights: https://github.com/tmp-iclr/convmixer/releases/download/v1.0/convmixer_768_32_ks7_p7_relu.pth.tar + Code: https://github.com/locuslab/convmixer + - Name: convmixer-1024-20_10xb64_in1k + Metadata: + FLOPs: 5550112768 + Parameters: 24383464 + In Collections: ConvMixer + Results: + - Dataset: ImageNet-1k + Metrics: + Top 1 Accuracy: 76.94 + Top 5 Accuracy: 93.36 + Task: Image Classification + Weights: https://download.openmmlab.com/mmclassification/v0/convmixer/convmixer-1024-20_3rdparty_10xb64_in1k_20220323-48f8aeba.pth + Config: configs/convmixer/convmixer-1024-20_10xb64_in1k.py + Converted From: + Weights: https://github.com/tmp-iclr/convmixer/releases/download/v1.0/convmixer_1024_20_ks9_p14.pth.tar + Code: https://github.com/locuslab/convmixer + - Name: convmixer-1536-20_10xb64_in1k + Metadata: + FLOPs: 48713170944 + Parameters: 51625960 + In Collections: ConvMixer + Results: + - Dataset: ImageNet-1k + Metrics: + Top 1 Accuracy: 81.37 + Top 5 Accuracy: 95.61 + Task: Image Classification + Weights: https://download.openmmlab.com/mmclassification/v0/convmixer/convmixer-1536_20_3rdparty_10xb64_in1k_20220323-ea5786f3.pth + Config: configs/convmixer/convmixer-1536-20_10xb64_in1k.py + Converted From: + Weights: https://github.com/tmp-iclr/convmixer/releases/download/v1.0/convmixer_1536_20_ks9_p7.pth.tar + Code: https://github.com/locuslab/convmixer diff --git a/openmmlab_test/mmclassification-0.24.1/configs/convnext/README.md b/openmmlab_test/mmclassification-0.24.1/configs/convnext/README.md new file mode 100644 index 00000000..7db81366 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/convnext/README.md @@ -0,0 +1,59 @@ +# ConvNeXt + +> [A ConvNet for the 2020s](https://arxiv.org/abs/2201.03545v1) + + + +## Abstract + + + +The "Roaring 20s" of visual recognition began with the introduction of Vision Transformers (ViTs), which quickly superseded ConvNets as the state-of-the-art image classification model. A vanilla ViT, on the other hand, faces difficulties when applied to general computer vision tasks such as object detection and semantic segmentation. It is the hierarchical Transformers (e.g., Swin Transformers) that reintroduced several ConvNet priors, making Transformers practically viable as a generic vision backbone and demonstrating remarkable performance on a wide variety of vision tasks. However, the effectiveness of such hybrid approaches is still largely credited to the intrinsic superiority of Transformers, rather than the inherent inductive biases of convolutions. In this work, we reexamine the design spaces and test the limits of what a pure ConvNet can achieve. We gradually "modernize" a standard ResNet toward the design of a vision Transformer, and discover several key components that contribute to the performance difference along the way. The outcome of this exploration is a family of pure ConvNet models dubbed ConvNeXt. Constructed entirely from standard ConvNet modules, ConvNeXts compete favorably with Transformers in terms of accuracy and scalability, achieving 87.8% ImageNet top-1 accuracy and outperforming Swin Transformers on COCO detection and ADE20K segmentation, while maintaining the simplicity and efficiency of standard ConvNets. + + + +
+ +
+ +## Results and models + +### ImageNet-1k + +| Model | Pretrain | Params(M) | Flops(G) | Top-1 (%) | Top-5 (%) | Config | Download | +| :-----------: | :----------: | :-------: | :------: | :-------: | :-------: | :-------------------------------------------------------------------: | :---------------------------------------------------------------------: | +| ConvNeXt-T\* | From scratch | 28.59 | 4.46 | 82.05 | 95.86 | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/convnext/convnext-tiny_32xb128_in1k.py) | [model](https://download.openmmlab.com/mmclassification/v0/convnext/convnext-tiny_3rdparty_32xb128_in1k_20220124-18abde00.pth) | +| ConvNeXt-S\* | From scratch | 50.22 | 8.69 | 83.13 | 96.44 | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/convnext/convnext-small_32xb128_in1k.py) | [model](https://download.openmmlab.com/mmclassification/v0/convnext/convnext-small_3rdparty_32xb128_in1k_20220124-d39b5192.pth) | +| ConvNeXt-B\* | From scratch | 88.59 | 15.36 | 83.85 | 96.74 | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/convnext/convnext-base_32xb128_in1k.py) | [model](https://download.openmmlab.com/mmclassification/v0/convnext/convnext-base_3rdparty_32xb128_in1k_20220124-d0915162.pth) | +| ConvNeXt-B\* | ImageNet-21k | 88.59 | 15.36 | 85.81 | 97.86 | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/convnext/convnext-base_32xb128_in1k.py) | [model](https://download.openmmlab.com/mmclassification/v0/convnext/convnext-base_in21k-pre-3rdparty_32xb128_in1k_20220124-eb2d6ada.pth) | +| ConvNeXt-L\* | From scratch | 197.77 | 34.37 | 84.30 | 96.89 | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/convnext/convnext-large_64xb64_in1k.py) | [model](https://download.openmmlab.com/mmclassification/v0/convnext/convnext-large_3rdparty_64xb64_in1k_20220124-f8a0ded0.pth) | +| ConvNeXt-L\* | ImageNet-21k | 197.77 | 34.37 | 86.61 | 98.04 | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/convnext/convnext-large_64xb64_in1k.py) | [model](https://download.openmmlab.com/mmclassification/v0/convnext/convnext-large_in21k-pre-3rdparty_64xb64_in1k_20220124-2412403d.pth) | +| ConvNeXt-XL\* | ImageNet-21k | 350.20 | 60.93 | 86.97 | 98.20 | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/convnext/convnext-xlarge_64xb64_in1k.py) | [model](https://download.openmmlab.com/mmclassification/v0/convnext/convnext-xlarge_in21k-pre-3rdparty_64xb64_in1k_20220124-76b6863d.pth) | + +*Models with * are converted from the [official repo](https://github.com/facebookresearch/ConvNeXt). The config files of these models are only for inference. We don't ensure these config files' training accuracy and welcome you to contribute your reproduction results.* + +### Pre-trained Models + +The pre-trained models on ImageNet-1k or ImageNet-21k are used to fine-tune on the downstream tasks. + +| Model | Training Data | Params(M) | Flops(G) | Download | +| :-----------: | :-----------: | :-------: | :------: | :-----------------------------------------------------------------------------------------------------------------------------------: | +| ConvNeXt-T\* | ImageNet-1k | 28.59 | 4.46 | [model](https://download.openmmlab.com/mmclassification/v0/convnext/convnext-tiny_3rdparty_32xb128-noema_in1k_20220222-2908964a.pth) | +| ConvNeXt-S\* | ImageNet-1k | 50.22 | 8.69 | [model](https://download.openmmlab.com/mmclassification/v0/convnext/convnext-small_3rdparty_32xb128-noema_in1k_20220222-fa001ca5.pth) | +| ConvNeXt-B\* | ImageNet-1k | 88.59 | 15.36 | [model](https://download.openmmlab.com/mmclassification/v0/convnext/convnext-base_3rdparty_32xb128-noema_in1k_20220222-dba4f95f.pth) | +| ConvNeXt-B\* | ImageNet-21k | 88.59 | 15.36 | [model](https://download.openmmlab.com/mmclassification/v0/convnext/convnext-base_3rdparty_in21k_20220124-13b83eec.pth) | +| ConvNeXt-L\* | ImageNet-21k | 197.77 | 34.37 | [model](https://download.openmmlab.com/mmclassification/v0/convnext/convnext-large_3rdparty_in21k_20220124-41b5a79f.pth) | +| ConvNeXt-XL\* | ImageNet-21k | 350.20 | 60.93 | [model](https://download.openmmlab.com/mmclassification/v0/convnext/convnext-xlarge_3rdparty_in21k_20220124-f909bad7.pth) | + +*Models with * are converted from the [official repo](https://github.com/facebookresearch/ConvNeXt).* + +## Citation + +```bibtex +@Article{liu2022convnet, + author = {Zhuang Liu and Hanzi Mao and Chao-Yuan Wu and Christoph Feichtenhofer and Trevor Darrell and Saining Xie}, + title = {A ConvNet for the 2020s}, + journal = {arXiv preprint arXiv:2201.03545}, + year = {2022}, +} +``` diff --git a/openmmlab_test/mmclassification-0.24.1/configs/convnext/convnext-base_32xb128_in1k.py b/openmmlab_test/mmclassification-0.24.1/configs/convnext/convnext-base_32xb128_in1k.py new file mode 100644 index 00000000..6c0450a4 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/convnext/convnext-base_32xb128_in1k.py @@ -0,0 +1,12 @@ +_base_ = [ + '../_base_/models/convnext/convnext-base.py', + '../_base_/datasets/imagenet_bs64_swin_224.py', + '../_base_/schedules/imagenet_bs1024_adamw_swin.py', + '../_base_/default_runtime.py', +] + +data = dict(samples_per_gpu=128) + +optimizer = dict(lr=4e-3) + +custom_hooks = [dict(type='EMAHook', momentum=4e-5, priority='ABOVE_NORMAL')] diff --git a/openmmlab_test/mmclassification-0.24.1/configs/convnext/convnext-large_64xb64_in1k.py b/openmmlab_test/mmclassification-0.24.1/configs/convnext/convnext-large_64xb64_in1k.py new file mode 100644 index 00000000..1faae253 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/convnext/convnext-large_64xb64_in1k.py @@ -0,0 +1,12 @@ +_base_ = [ + '../_base_/models/convnext/convnext-large.py', + '../_base_/datasets/imagenet_bs64_swin_224.py', + '../_base_/schedules/imagenet_bs1024_adamw_swin.py', + '../_base_/default_runtime.py', +] + +data = dict(samples_per_gpu=64) + +optimizer = dict(lr=4e-3) + +custom_hooks = [dict(type='EMAHook', momentum=4e-5, priority='ABOVE_NORMAL')] diff --git a/openmmlab_test/mmclassification-0.24.1/configs/convnext/convnext-small_32xb128_in1k.py b/openmmlab_test/mmclassification-0.24.1/configs/convnext/convnext-small_32xb128_in1k.py new file mode 100644 index 00000000..d820fc6c --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/convnext/convnext-small_32xb128_in1k.py @@ -0,0 +1,12 @@ +_base_ = [ + '../_base_/models/convnext/convnext-small.py', + '../_base_/datasets/imagenet_bs64_swin_224.py', + '../_base_/schedules/imagenet_bs1024_adamw_swin.py', + '../_base_/default_runtime.py', +] + +data = dict(samples_per_gpu=128) + +optimizer = dict(lr=4e-3) + +custom_hooks = [dict(type='EMAHook', momentum=4e-5, priority='ABOVE_NORMAL')] diff --git a/openmmlab_test/mmclassification-0.24.1/configs/convnext/convnext-tiny_32xb128_in1k.py b/openmmlab_test/mmclassification-0.24.1/configs/convnext/convnext-tiny_32xb128_in1k.py new file mode 100644 index 00000000..46d0185d --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/convnext/convnext-tiny_32xb128_in1k.py @@ -0,0 +1,12 @@ +_base_ = [ + '../_base_/models/convnext/convnext-tiny.py', + '../_base_/datasets/imagenet_bs64_swin_224.py', + '../_base_/schedules/imagenet_bs1024_adamw_swin.py', + '../_base_/default_runtime.py', +] + +data = dict(samples_per_gpu=128) + +optimizer = dict(lr=4e-3) + +custom_hooks = [dict(type='EMAHook', momentum=4e-5, priority='ABOVE_NORMAL')] diff --git a/openmmlab_test/mmclassification-0.24.1/configs/convnext/convnext-xlarge_64xb64_in1k.py b/openmmlab_test/mmclassification-0.24.1/configs/convnext/convnext-xlarge_64xb64_in1k.py new file mode 100644 index 00000000..72849013 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/convnext/convnext-xlarge_64xb64_in1k.py @@ -0,0 +1,12 @@ +_base_ = [ + '../_base_/models/convnext/convnext-xlarge.py', + '../_base_/datasets/imagenet_bs64_swin_224.py', + '../_base_/schedules/imagenet_bs1024_adamw_swin.py', + '../_base_/default_runtime.py', +] + +data = dict(samples_per_gpu=64) + +optimizer = dict(lr=4e-3) + +custom_hooks = [dict(type='EMAHook', momentum=4e-5, priority='ABOVE_NORMAL')] diff --git a/openmmlab_test/mmclassification-0.24.1/configs/convnext/metafile.yml b/openmmlab_test/mmclassification-0.24.1/configs/convnext/metafile.yml new file mode 100644 index 00000000..823f3327 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/convnext/metafile.yml @@ -0,0 +1,221 @@ +Collections: + - Name: ConvNeXt + Metadata: + Training Data: ImageNet-1k + Architecture: + - 1x1 Convolution + - LayerScale + Paper: + URL: https://arxiv.org/abs/2201.03545v1 + Title: A ConvNet for the 2020s + README: configs/convnext/README.md + Code: + Version: v0.20.1 + URL: https://github.com/open-mmlab/mmclassification/blob/v0.20.1/mmcls/models/backbones/convnext.py + +Models: + - Name: convnext-tiny_3rdparty_32xb128_in1k + Metadata: + FLOPs: 4457472768 + Parameters: 28589128 + In Collections: ConvNeXt + Results: + - Dataset: ImageNet-1k + Metrics: + Top 1 Accuracy: 82.05 + Top 5 Accuracy: 95.86 + Task: Image Classification + Weights: https://download.openmmlab.com/mmclassification/v0/convnext/convnext-tiny_3rdparty_32xb128_in1k_20220124-18abde00.pth + Config: configs/convnext/convnext-tiny_32xb128_in1k.py + Converted From: + Weights: https://dl.fbaipublicfiles.com/convnext/convnext_tiny_1k_224_ema.pth + Code: https://github.com/facebookresearch/ConvNeXt + - Name: convnext-tiny_3rdparty_32xb128-noema_in1k + Metadata: + Training Data: ImageNet-1k + FLOPs: 4457472768 + Parameters: 28589128 + In Collections: ConvNeXt + Results: + - Dataset: ImageNet-1k + Metrics: + Top 1 Accuracy: 81.81 + Top 5 Accuracy: 95.67 + Task: Image Classification + Weights: https://download.openmmlab.com/mmclassification/v0/convnext/convnext-tiny_3rdparty_32xb128-noema_in1k_20220222-2908964a.pth + Config: configs/convnext/convnext-tiny_32xb128_in1k.py + Converted From: + Weights: https://dl.fbaipublicfiles.com/convnext/convnext_tiny_1k_224.pth + Code: https://github.com/facebookresearch/ConvNeXt + - Name: convnext-small_3rdparty_32xb128_in1k + Metadata: + FLOPs: 8687008512 + Parameters: 50223688 + In Collections: ConvNeXt + Results: + - Dataset: ImageNet-1k + Metrics: + Top 1 Accuracy: 83.13 + Top 5 Accuracy: 96.44 + Task: Image Classification + Weights: https://download.openmmlab.com/mmclassification/v0/convnext/convnext-small_3rdparty_32xb128_in1k_20220124-d39b5192.pth + Config: configs/convnext/convnext-small_32xb128_in1k.py + Converted From: + Weights: https://dl.fbaipublicfiles.com/convnext/convnext_small_1k_224_ema.pth + Code: https://github.com/facebookresearch/ConvNeXt + - Name: convnext-small_3rdparty_32xb128-noema_in1k + Metadata: + Training Data: ImageNet-1k + FLOPs: 8687008512 + Parameters: 50223688 + In Collections: ConvNeXt + Results: + - Dataset: ImageNet-1k + Metrics: + Top 1 Accuracy: 83.11 + Top 5 Accuracy: 96.34 + Task: Image Classification + Weights: https://download.openmmlab.com/mmclassification/v0/convnext/convnext-small_3rdparty_32xb128-noema_in1k_20220222-fa001ca5.pth + Config: configs/convnext/convnext-small_32xb128_in1k.py + Converted From: + Weights: https://dl.fbaipublicfiles.com/convnext/convnext_small_1k_224.pth + Code: https://github.com/facebookresearch/ConvNeXt + - Name: convnext-base_3rdparty_32xb128_in1k + Metadata: + FLOPs: 15359124480 + Parameters: 88591464 + In Collections: ConvNeXt + Results: + - Dataset: ImageNet-1k + Metrics: + Top 1 Accuracy: 83.85 + Top 5 Accuracy: 96.74 + Task: Image Classification + Weights: https://download.openmmlab.com/mmclassification/v0/convnext/convnext-base_3rdparty_32xb128_in1k_20220124-d0915162.pth + Config: configs/convnext/convnext-base_32xb128_in1k.py + Converted From: + Weights: https://dl.fbaipublicfiles.com/convnext/convnext_base_1k_224_ema.pth + Code: https://github.com/facebookresearch/ConvNeXt + - Name: convnext-base_3rdparty_32xb128-noema_in1k + Metadata: + Training Data: ImageNet-1k + FLOPs: 15359124480 + Parameters: 88591464 + In Collections: ConvNeXt + Results: + - Dataset: ImageNet-1k + Metrics: + Top 1 Accuracy: 83.71 + Top 5 Accuracy: 96.60 + Task: Image Classification + Weights: https://download.openmmlab.com/mmclassification/v0/convnext/convnext-base_3rdparty_32xb128-noema_in1k_20220222-dba4f95f.pth + Config: configs/convnext/convnext-base_32xb128_in1k.py + Converted From: + Weights: https://dl.fbaipublicfiles.com/convnext/convnext_base_1k_224.pth + Code: https://github.com/facebookresearch/ConvNeXt + - Name: convnext-base_3rdparty_in21k + Metadata: + Training Data: ImageNet-21k + FLOPs: 15359124480 + Parameters: 88591464 + In Collections: ConvNeXt + Results: null + Weights: https://download.openmmlab.com/mmclassification/v0/convnext/convnext-base_3rdparty_in21k_20220124-13b83eec.pth + Converted From: + Weights: https://dl.fbaipublicfiles.com/convnext/convnext_base_22k_224.pth + Code: https://github.com/facebookresearch/ConvNeXt + - Name: convnext-base_in21k-pre-3rdparty_32xb128_in1k + Metadata: + Training Data: + - ImageNet-21k + - ImageNet-1k + FLOPs: 15359124480 + Parameters: 88591464 + In Collections: ConvNeXt + Results: + - Dataset: ImageNet-1k + Metrics: + Top 1 Accuracy: 85.81 + Top 5 Accuracy: 97.86 + Task: Image Classification + Weights: https://download.openmmlab.com/mmclassification/v0/convnext/convnext-base_in21k-pre-3rdparty_32xb128_in1k_20220124-eb2d6ada.pth + Config: configs/convnext/convnext-base_32xb128_in1k.py + Converted From: + Weights: https://dl.fbaipublicfiles.com/convnext/convnext_base_22k_1k_224.pth + Code: https://github.com/facebookresearch/ConvNeXt + - Name: convnext-large_3rdparty_64xb64_in1k + Metadata: + FLOPs: 34368026112 + Parameters: 197767336 + In Collections: ConvNeXt + Results: + - Dataset: ImageNet-1k + Metrics: + Top 1 Accuracy: 84.30 + Top 5 Accuracy: 96.89 + Task: Image Classification + Weights: https://download.openmmlab.com/mmclassification/v0/convnext/convnext-large_3rdparty_64xb64_in1k_20220124-f8a0ded0.pth + Config: configs/convnext/convnext-large_64xb64_in1k.py + Converted From: + Weights: https://dl.fbaipublicfiles.com/convnext/convnext_large_1k_224_ema.pth + Code: https://github.com/facebookresearch/ConvNeXt + - Name: convnext-large_3rdparty_in21k + Metadata: + Training Data: ImageNet-21k + FLOPs: 34368026112 + Parameters: 197767336 + In Collections: ConvNeXt + Results: null + Weights: https://download.openmmlab.com/mmclassification/v0/convnext/convnext-large_3rdparty_in21k_20220124-41b5a79f.pth + Converted From: + Weights: https://dl.fbaipublicfiles.com/convnext/convnext_large_22k_224.pth + Code: https://github.com/facebookresearch/ConvNeXt + - Name: convnext-large_in21k-pre-3rdparty_64xb64_in1k + Metadata: + Training Data: + - ImageNet-21k + - ImageNet-1k + FLOPs: 34368026112 + Parameters: 197767336 + In Collections: ConvNeXt + Results: + - Dataset: ImageNet-1k + Metrics: + Top 1 Accuracy: 86.61 + Top 5 Accuracy: 98.04 + Task: Image Classification + Weights: https://download.openmmlab.com/mmclassification/v0/convnext/convnext-large_in21k-pre-3rdparty_64xb64_in1k_20220124-2412403d.pth + Config: configs/convnext/convnext-large_64xb64_in1k.py + Converted From: + Weights: https://dl.fbaipublicfiles.com/convnext/convnext_large_22k_1k_224.pth + Code: https://github.com/facebookresearch/ConvNeXt + - Name: convnext-xlarge_3rdparty_in21k + Metadata: + Training Data: ImageNet-21k + FLOPs: 60929820672 + Parameters: 350196968 + In Collections: ConvNeXt + Results: null + Weights: https://download.openmmlab.com/mmclassification/v0/convnext/convnext-xlarge_3rdparty_in21k_20220124-f909bad7.pth + Converted From: + Weights: https://dl.fbaipublicfiles.com/convnext/convnext_xlarge_22k_224.pth + Code: https://github.com/facebookresearch/ConvNeXt + - Name: convnext-xlarge_in21k-pre-3rdparty_64xb64_in1k + Metadata: + Training Data: + - ImageNet-21k + - ImageNet-1k + FLOPs: 60929820672 + Parameters: 350196968 + In Collections: ConvNeXt + Results: + - Dataset: ImageNet-1k + Metrics: + Top 1 Accuracy: 86.97 + Top 5 Accuracy: 98.20 + Task: Image Classification + Weights: https://download.openmmlab.com/mmclassification/v0/convnext/convnext-xlarge_in21k-pre-3rdparty_64xb64_in1k_20220124-76b6863d.pth + Config: configs/convnext/convnext-xlarge_64xb64_in1k.py + Converted From: + Weights: https://dl.fbaipublicfiles.com/convnext/convnext_xlarge_22k_1k_224_ema.pth + Code: https://github.com/facebookresearch/ConvNeXt diff --git a/openmmlab_test/mmclassification-0.24.1/configs/cspnet/README.md b/openmmlab_test/mmclassification-0.24.1/configs/cspnet/README.md new file mode 100644 index 00000000..10eb9d0d --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/cspnet/README.md @@ -0,0 +1,41 @@ +# CSPNet + +> [CSPNet: A New Backbone that can Enhance Learning Capability of CNN](https://arxiv.org/abs/1911.11929) + + + +## Abstract + + + +Neural networks have enabled state-of-the-art approaches to achieve incredible results on computer vision tasks such as object detection. However, such success greatly relies on costly computation resources, which hinders people with cheap devices from appreciating the advanced technology. In this paper, we propose Cross Stage Partial Network (CSPNet) to mitigate the problem that previous works require heavy inference computations from the network architecture perspective. We attribute the problem to the duplicate gradient information within network optimization. The proposed networks respect the variability of the gradients by integrating feature maps from the beginning and the end of a network stage, which, in our experiments, reduces computations by 20% with equivalent or even superior accuracy on the ImageNet dataset, and significantly outperforms state-of-the-art approaches in terms of AP50 on the MS COCO object detection dataset. The CSPNet is easy to implement and general enough to cope with architectures based on ResNet, ResNeXt, and DenseNet. Source code is at this https URL. + + + +
+ +
+ +## Results and models + +### ImageNet-1k + +| Model | Pretrain | Params(M) | Flops(G) | Top-1 (%) | Top-5 (%) | Config | Download | +| :------------: | :----------: | :-------: | :------: | :-------: | :-------: | :------------------------------------------------------------------: | :---------------------------------------------------------------------: | +| CSPDarkNet50\* | From scratch | 27.64 | 5.04 | 80.05 | 95.07 | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/cspnet/cspdarknet50_8xb32_in1k.py) | [model](https://download.openmmlab.com/mmclassification/v0/cspnet/cspdarknet50_3rdparty_8xb32_in1k_20220329-bd275287.pth) | +| CSPResNet50\* | From scratch | 21.62 | 3.48 | 79.55 | 94.68 | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/cspnet/cspresnet50_8xb32_in1k.py) | [model](https://download.openmmlab.com/mmclassification/v0/cspnet/cspresnet50_3rdparty_8xb32_in1k_20220329-dd6dddfb.pth) | +| CSPResNeXt50\* | From scratch | 20.57 | 3.11 | 79.96 | 94.96 | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/cspnet/cspresnext50_8xb32_in1k.py) | [model](https://download.openmmlab.com/mmclassification/v0/cspnet/cspresnext50_3rdparty_8xb32_in1k_20220329-2cc84d21.pth) | + +*Models with * are converted from the [timm repo](https://github.com/rwightman/pytorch-image-models). The config files of these models are only for inference. We don't ensure these config files' training accuracy and welcome you to contribute your reproduction results.* + +## Citation + +```bibtex +@inproceedings{wang2020cspnet, + title={CSPNet: A new backbone that can enhance learning capability of CNN}, + author={Wang, Chien-Yao and Liao, Hong-Yuan Mark and Wu, Yueh-Hua and Chen, Ping-Yang and Hsieh, Jun-Wei and Yeh, I-Hau}, + booktitle={Proceedings of the IEEE/CVF conference on computer vision and pattern recognition workshops}, + pages={390--391}, + year={2020} +} +``` diff --git a/openmmlab_test/mmclassification-0.24.1/configs/cspnet/cspdarknet50_8xb32_in1k.py b/openmmlab_test/mmclassification-0.24.1/configs/cspnet/cspdarknet50_8xb32_in1k.py new file mode 100644 index 00000000..cf2ce731 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/cspnet/cspdarknet50_8xb32_in1k.py @@ -0,0 +1,65 @@ +_base_ = [ + '../_base_/schedules/imagenet_bs256.py', '../_base_/default_runtime.py' +] + +# model settings +model = dict( + type='ImageClassifier', + backbone=dict(type='CSPDarkNet', depth=53), + neck=dict(type='GlobalAveragePooling'), + head=dict( + type='LinearClsHead', + num_classes=1000, + in_channels=1024, + loss=dict(type='CrossEntropyLoss', loss_weight=1.0), + topk=(1, 5), + )) + +# dataset settings +dataset_type = 'ImageNet' +img_norm_cfg = dict( + mean=[123.675, 116.28, 103.53], std=[58.395, 57.12, 57.375], to_rgb=True) +train_pipeline = [ + dict(type='LoadImageFromFile'), + dict( + type='RandomResizedCrop', + size=224, + backend='pillow', + interpolation='bicubic'), + dict(type='RandomFlip', flip_prob=0.5, direction='horizontal'), + dict(type='Normalize', **img_norm_cfg), + dict(type='ImageToTensor', keys=['img']), + dict(type='ToTensor', keys=['gt_label']), + dict(type='Collect', keys=['img', 'gt_label']) +] +test_pipeline = [ + dict(type='LoadImageFromFile'), + dict( + type='Resize', + size=(288, -1), + backend='pillow', + interpolation='bicubic'), + dict(type='CenterCrop', crop_size=256), + dict(type='Normalize', **img_norm_cfg), + dict(type='ImageToTensor', keys=['img']), + dict(type='Collect', keys=['img']) +] +data = dict( + samples_per_gpu=32, + workers_per_gpu=2, + train=dict( + type=dataset_type, + data_prefix='data/imagenet/train', + pipeline=train_pipeline), + val=dict( + type=dataset_type, + data_prefix='data/imagenet/val', + ann_file='data/imagenet/meta/val.txt', + pipeline=test_pipeline), + test=dict( + # replace `data/val` with `data/test` for standard test + type=dataset_type, + data_prefix='data/imagenet/val', + ann_file='data/imagenet/meta/val.txt', + pipeline=test_pipeline)) +evaluation = dict(interval=1, metric='accuracy') diff --git a/openmmlab_test/mmclassification-0.24.1/configs/cspnet/cspresnet50_8xb32_in1k.py b/openmmlab_test/mmclassification-0.24.1/configs/cspnet/cspresnet50_8xb32_in1k.py new file mode 100644 index 00000000..f4cfbf8a --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/cspnet/cspresnet50_8xb32_in1k.py @@ -0,0 +1,66 @@ +_base_ = [ + '../_base_/datasets/imagenet_bs32_pil_resize.py', + '../_base_/schedules/imagenet_bs256.py', '../_base_/default_runtime.py' +] + +# model settings +model = dict( + type='ImageClassifier', + backbone=dict(type='CSPResNet', depth=50), + neck=dict(type='GlobalAveragePooling'), + head=dict( + type='LinearClsHead', + num_classes=1000, + in_channels=1024, + loss=dict(type='CrossEntropyLoss', loss_weight=1.0), + topk=(1, 5), + )) + +# dataset settings +dataset_type = 'ImageNet' +img_norm_cfg = dict( + mean=[123.675, 116.28, 103.53], std=[58.395, 57.12, 57.375], to_rgb=True) +train_pipeline = [ + dict(type='LoadImageFromFile'), + dict( + type='RandomResizedCrop', + size=224, + backend='pillow', + interpolation='bicubic'), + dict(type='RandomFlip', flip_prob=0.5, direction='horizontal'), + dict(type='Normalize', **img_norm_cfg), + dict(type='ImageToTensor', keys=['img']), + dict(type='ToTensor', keys=['gt_label']), + dict(type='Collect', keys=['img', 'gt_label']) +] +test_pipeline = [ + dict(type='LoadImageFromFile'), + dict( + type='Resize', + size=(288, -1), + backend='pillow', + interpolation='bicubic'), + dict(type='CenterCrop', crop_size=256), + dict(type='Normalize', **img_norm_cfg), + dict(type='ImageToTensor', keys=['img']), + dict(type='Collect', keys=['img']) +] +data = dict( + samples_per_gpu=32, + workers_per_gpu=2, + train=dict( + type=dataset_type, + data_prefix='data/imagenet/train', + pipeline=train_pipeline), + val=dict( + type=dataset_type, + data_prefix='data/imagenet/val', + ann_file='data/imagenet/meta/val.txt', + pipeline=test_pipeline), + test=dict( + # replace `data/val` with `data/test` for standard test + type=dataset_type, + data_prefix='data/imagenet/val', + ann_file='data/imagenet/meta/val.txt', + pipeline=test_pipeline)) +evaluation = dict(interval=1, metric='accuracy') diff --git a/openmmlab_test/mmclassification-0.24.1/configs/cspnet/cspresnext50_8xb32_in1k.py b/openmmlab_test/mmclassification-0.24.1/configs/cspnet/cspresnext50_8xb32_in1k.py new file mode 100644 index 00000000..a82ab751 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/cspnet/cspresnext50_8xb32_in1k.py @@ -0,0 +1,65 @@ +_base_ = [ + '../_base_/schedules/imagenet_bs256.py', '../_base_/default_runtime.py' +] + +# model settings +model = dict( + type='ImageClassifier', + backbone=dict(type='CSPResNeXt', depth=50), + neck=dict(type='GlobalAveragePooling'), + head=dict( + type='LinearClsHead', + num_classes=1000, + in_channels=2048, + loss=dict(type='CrossEntropyLoss', loss_weight=1.0), + topk=(1, 5), + )) + +# dataset settings +dataset_type = 'ImageNet' +img_norm_cfg = dict( + mean=[123.675, 116.28, 103.53], std=[58.395, 57.12, 57.375], to_rgb=True) +train_pipeline = [ + dict(type='LoadImageFromFile'), + dict( + type='RandomResizedCrop', + size=224, + backend='pillow', + interpolation='bicubic'), + dict(type='RandomFlip', flip_prob=0.5, direction='horizontal'), + dict(type='Normalize', **img_norm_cfg), + dict(type='ImageToTensor', keys=['img']), + dict(type='ToTensor', keys=['gt_label']), + dict(type='Collect', keys=['img', 'gt_label']) +] +test_pipeline = [ + dict(type='LoadImageFromFile'), + dict( + type='Resize', + size=(256, -1), + backend='pillow', + interpolation='bicubic'), + dict(type='CenterCrop', crop_size=224), + dict(type='Normalize', **img_norm_cfg), + dict(type='ImageToTensor', keys=['img']), + dict(type='Collect', keys=['img']) +] +data = dict( + samples_per_gpu=32, + workers_per_gpu=2, + train=dict( + type=dataset_type, + data_prefix='data/imagenet/train', + pipeline=train_pipeline), + val=dict( + type=dataset_type, + data_prefix='data/imagenet/val', + ann_file='data/imagenet/meta/val.txt', + pipeline=test_pipeline), + test=dict( + # replace `data/val` with `data/test` for standard test + type=dataset_type, + data_prefix='data/imagenet/val', + ann_file='data/imagenet/meta/val.txt', + pipeline=test_pipeline)) +evaluation = dict(interval=1, metric='accuracy') diff --git a/openmmlab_test/mmclassification-0.24.1/configs/cspnet/metafile.yml b/openmmlab_test/mmclassification-0.24.1/configs/cspnet/metafile.yml new file mode 100644 index 00000000..8c4a78ed --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/cspnet/metafile.yml @@ -0,0 +1,64 @@ +Collections: + - Name: CSPNet + Metadata: + Training Data: ImageNet-1k + Architecture: + - Cross Stage Partia Stage + Paper: + URL: https://arxiv.org/abs/1911.11929 + Title: 'CSPNet: A New Backbone that can Enhance Learning Capability of CNN' + README: configs/cspnet/README.md + Code: + Version: v0.22.0 + URL: https://github.com/open-mmlab/mmclassification/blob/v0.22.0/mmcls/models/backbones/cspnet.py + +Models: + - Name: cspdarknet50_3rdparty_8xb32_in1k + Metadata: + FLOPs: 5040000000 + Parameters: 27640000 + In Collections: CSPNet + Results: + - Dataset: ImageNet-1k + Metrics: + Top 1 Accuracy: 80.05 + Top 5 Accuracy: 95.07 + Task: Image Classification + Weights: https://download.openmmlab.com/mmclassification/v0/cspnet/cspdarknet50_3rdparty_8xb32_in1k_20220329-bd275287.pth + Config: configs/cspnet/cspdarknet50_8xb32_in1k.py + Converted From: + Weights: https://github.com/rwightman/pytorch-image-models/releases/download/v0.1-weights/cspdarknet53_ra_256-d05c7c21.pth + Code: https://github.com/rwightman/pytorch-image-models + - Name: cspresnet50_3rdparty_8xb32_in1k + Metadata: + Training Data: ImageNet-1k + FLOPs: 3480000000 + Parameters: 21620000 + In Collections: CSPNet + Results: + - Dataset: ImageNet-1k + Metrics: + Top 1 Accuracy: 79.55 + Top 5 Accuracy: 94.68 + Task: Image Classification + Weights: https://download.openmmlab.com/mmclassification/v0/cspnet/cspresnet50_3rdparty_8xb32_in1k_20220329-dd6dddfb.pth + Config: configs/cspnet/cspresnet50_8xb32_in1k.py + Converted From: + Weights: https://github.com/rwightman/pytorch-image-models/releases/download/v0.1-weights/cspresnet50_ra-d3e8d487.pth + Code: https://github.com/rwightman/pytorch-image-models + - Name: cspresnext50_3rdparty_8xb32_in1k + Metadata: + FLOPs: 3110000000 + Parameters: 20570000 + In Collections: CSPNet + Results: + - Dataset: ImageNet-1k + Metrics: + Top 1 Accuracy: 79.96 + Top 5 Accuracy: 94.96 + Task: Image Classification + Weights: https://download.openmmlab.com/mmclassification/v0/cspnet/cspresnext50_3rdparty_8xb32_in1k_20220329-2cc84d21.pth + Config: configs/cspnet/cspresnext50_8xb32_in1k.py + Converted From: + Weights: https://github.com/rwightman/pytorch-image-models/releases/download/v0.1-weights/cspresnext50_ra_224-648b4713.pth + Code: https://github.com/rwightman/pytorch-image-models diff --git a/openmmlab_test/mmclassification-0.24.1/configs/csra/README.md b/openmmlab_test/mmclassification-0.24.1/configs/csra/README.md new file mode 100644 index 00000000..fa677cfc --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/csra/README.md @@ -0,0 +1,36 @@ +# CSRA + +> [Residual Attention: A Simple but Effective Method for Multi-Label Recognition](https://arxiv.org/abs/2108.02456) + + + +## Abstract + +Multi-label image recognition is a challenging computer vision task of practical use. Progresses in this area, however, are often characterized by complicated methods, heavy computations, and lack of intuitive explanations. To effectively capture different spatial regions occupied by objects from different categories, we propose an embarrassingly simple module, named class-specific residual attention (CSRA). CSRA generates class-specific features for every category by proposing a simple spatial attention score, and then combines it with the class-agnostic average pooling feature. CSRA achieves state-of-the-art results on multilabel recognition, and at the same time is much simpler than them. Furthermore, with only 4 lines of code, CSRA also leads to consistent improvement across many diverse pretrained models and datasets without any extra training. CSRA is both easy to implement and light in computations, which also enjoys intuitive explanations and visualizations. + +
+ +
+ +## Results and models + +### VOC2007 + +| Model | Pretrain | Params(M) | Flops(G) | mAP | OF1 (%) | CF1 (%) | Config | Download | +| :------------: | :------------------------------------------------: | :-------: | :------: | :---: | :-----: | :-----: | :-----------------------------------------------: | :-------------------------------------------------: | +| Resnet101-CSRA | [ImageNet-1k](https://download.openmmlab.com/mmclassification/v0/resnet/resnet101_8xb32_in1k_20210831-539c63f8.pth) | 23.55 | 4.12 | 94.98 | 90.80 | 89.16 | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/csra/resnet101-csra_1xb16_voc07-448px.py) | [model](https://download.openmmlab.com/mmclassification/v0/csra/resnet101-csra_1xb16_voc07-448px_20220722-29efb40a.pth) \| [log](https://download.openmmlab.com/mmclassification/v0/csra/resnet101-csra_1xb16_voc07-448px_20220722-29efb40a.log.json) | + +## Citation + +```bibtex +@misc{https://doi.org/10.48550/arxiv.2108.02456, + doi = {10.48550/ARXIV.2108.02456}, + url = {https://arxiv.org/abs/2108.02456}, + author = {Zhu, Ke and Wu, Jianxin}, + keywords = {Computer Vision and Pattern Recognition (cs.CV), FOS: Computer and information sciences, FOS: Computer and information sciences}, + title = {Residual Attention: A Simple but Effective Method for Multi-Label Recognition}, + publisher = {arXiv}, + year = {2021}, + copyright = {arXiv.org perpetual, non-exclusive license} +} +``` diff --git a/openmmlab_test/mmclassification-0.24.1/configs/csra/metafile.yml b/openmmlab_test/mmclassification-0.24.1/configs/csra/metafile.yml new file mode 100644 index 00000000..f1fa6228 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/csra/metafile.yml @@ -0,0 +1,29 @@ +Collections: + - Name: CSRA + Metadata: + Training Data: PASCAL VOC 2007 + Architecture: + - Class-specific Residual Attention + Paper: + URL: https://arxiv.org/abs/1911.11929 + Title: 'Residual Attention: A Simple but Effective Method for Multi-Label Recognition' + README: configs/csra/README.md + Code: + Version: v0.24.0 + URL: https://github.com/open-mmlab/mmclassification/blob/v0.24.0/mmcls/models/heads/multi_label_csra_head.py + +Models: + - Name: resnet101-csra_1xb16_voc07-448px + Metadata: + FLOPs: 4120000000 + Parameters: 23550000 + In Collections: CSRA + Results: + - Dataset: PASCAL VOC 2007 + Metrics: + mAP: 94.98 + OF1: 90.80 + CF1: 89.16 + Task: Multi-Label Classification + Weights: https://download.openmmlab.com/mmclassification/v0/csra/resnet101-csra_1xb16_voc07-448px_20220722-29efb40a.pth + Config: configs/csra/resnet101-csra_1xb16_voc07-448px.py diff --git a/openmmlab_test/mmclassification-0.24.1/configs/csra/resnet101-csra_1xb16_voc07-448px.py b/openmmlab_test/mmclassification-0.24.1/configs/csra/resnet101-csra_1xb16_voc07-448px.py new file mode 100644 index 00000000..5dc5dd62 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/csra/resnet101-csra_1xb16_voc07-448px.py @@ -0,0 +1,75 @@ +_base_ = ['../_base_/datasets/voc_bs16.py', '../_base_/default_runtime.py'] + +# Pre-trained Checkpoint Path +checkpoint = 'https://download.openmmlab.com/mmclassification/v0/resnet/resnet101_8xb32_in1k_20210831-539c63f8.pth' # noqa +# If you want to use the pre-trained weight of ResNet101-CutMix from +# the originary repo(https://github.com/Kevinz-code/CSRA). Script of +# 'tools/convert_models/torchvision_to_mmcls.py' can help you convert weight +# into mmcls format. The mAP result would hit 95.5 by using the weight. +# checkpoint = 'PATH/TO/PRE-TRAINED_WEIGHT' + +# model settings +model = dict( + type='ImageClassifier', + backbone=dict( + type='ResNet', + depth=101, + num_stages=4, + out_indices=(3, ), + style='pytorch', + init_cfg=dict( + type='Pretrained', checkpoint=checkpoint, prefix='backbone')), + neck=None, + head=dict( + type='CSRAClsHead', + num_classes=20, + in_channels=2048, + num_heads=1, + lam=0.1, + loss=dict(type='CrossEntropyLoss', use_sigmoid=True, loss_weight=1.0))) + +# dataset setting +img_norm_cfg = dict(mean=[0, 0, 0], std=[255, 255, 255], to_rgb=True) +train_pipeline = [ + dict(type='LoadImageFromFile'), + dict(type='RandomResizedCrop', size=448, scale=(0.7, 1.0)), + dict(type='RandomFlip', flip_prob=0.5, direction='horizontal'), + dict(type='Normalize', **img_norm_cfg), + dict(type='ImageToTensor', keys=['img']), + dict(type='ToTensor', keys=['gt_label']), + dict(type='Collect', keys=['img', 'gt_label']) +] +test_pipeline = [ + dict(type='LoadImageFromFile'), + dict(type='Resize', size=448), + dict(type='Normalize', **img_norm_cfg), + dict(type='ImageToTensor', keys=['img']), + dict(type='Collect', keys=['img']) +] +data = dict( + # map the difficult examples as negative ones(0) + train=dict(pipeline=train_pipeline, difficult_as_postive=False), + val=dict(pipeline=test_pipeline), + test=dict(pipeline=test_pipeline)) + +# optimizer +# the lr of classifier.head is 10 * base_lr, which help convergence. +optimizer = dict( + type='SGD', + lr=0.0002, + momentum=0.9, + weight_decay=0.0001, + paramwise_cfg=dict(custom_keys={'head': dict(lr_mult=10)})) + +optimizer_config = dict(grad_clip=None) + +# learning policy +lr_config = dict( + policy='step', + step=6, + gamma=0.1, + warmup='linear', + warmup_iters=1, + warmup_ratio=1e-7, + warmup_by_epoch=True) +runner = dict(type='EpochBasedRunner', max_epochs=20) diff --git a/openmmlab_test/mmclassification-0.24.1/configs/deit/README.md b/openmmlab_test/mmclassification-0.24.1/configs/deit/README.md new file mode 100644 index 00000000..e3103658 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/deit/README.md @@ -0,0 +1,52 @@ +# DeiT + +> [Training data-efficient image transformers & distillation through attention](https://arxiv.org/abs/2012.12877) + + + +## Abstract + +Recently, neural networks purely based on attention were shown to address image understanding tasks such as image classification. However, these visual transformers are pre-trained with hundreds of millions of images using an expensive infrastructure, thereby limiting their adoption. In this work, we produce a competitive convolution-free transformer by training on Imagenet only. We train them on a single computer in less than 3 days. Our reference vision transformer (86M parameters) achieves top-1 accuracy of 83.1% (single-crop evaluation) on ImageNet with no external data. More importantly, we introduce a teacher-student strategy specific to transformers. It relies on a distillation token ensuring that the student learns from the teacher through attention. We show the interest of this token-based distillation, especially when using a convnet as a teacher. This leads us to report results competitive with convnets for both Imagenet (where we obtain up to 85.2% accuracy) and when transferring to other tasks. We share our code and models. + +
+ +
+ +## Results and models + +### ImageNet-1k + +The teacher of the distilled version DeiT is RegNetY-16GF. + +| Model | Pretrain | Params(M) | Flops(G) | Top-1 (%) | Top-5 (%) | Config | Download | +| :-------------------------: | :----------: | :-------: | :------: | :-------: | :-------: | :------------------------------------------------------------: | :--------------------------------------------------------------: | +| DeiT-tiny | From scratch | 5.72 | 1.08 | 74.50 | 92.24 | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/deit/deit-tiny_pt-4xb256_in1k.py) | [model](https://download.openmmlab.com/mmclassification/v0/deit/deit-tiny_pt-4xb256_in1k_20220218-13b382a0.pth) \| [log](https://download.openmmlab.com/mmclassification/v0/deit/deit-tiny_pt-4xb256_in1k_20220218-13b382a0.log.json) | +| DeiT-tiny distilled\* | From scratch | 5.72 | 1.08 | 74.51 | 91.90 | [config](https://github.com/open-mmlab/mmclassification/tree/master/configs/deit/deit-tiny-distilled_pt-4xb256_in1k.py) | [model](https://download.openmmlab.com/mmclassification/v0/deit/deit-tiny-distilled_3rdparty_pt-4xb256_in1k_20211216-c429839a.pth) | +| DeiT-small | From scratch | 22.05 | 4.24 | 80.69 | 95.06 | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/deit/deit-small_pt-4xb256_in1k.py) | [model](https://download.openmmlab.com/mmclassification/v0/deit/deit-small_pt-4xb256_in1k_20220218-9425b9bb.pth) \| [log](https://download.openmmlab.com/mmclassification/v0/deit/deit-small_pt-4xb256_in1k_20220218-9425b9bb.log.json) | +| DeiT-small distilled\* | From scratch | 22.05 | 4.24 | 81.17 | 95.40 | [config](https://github.com/open-mmlab/mmclassification/tree/master/configs/deit/deit-small-distilled_pt-4xb256_in1k.py) | [model](https://download.openmmlab.com/mmclassification/v0/deit/deit-small-distilled_3rdparty_pt-4xb256_in1k_20211216-4de1d725.pth) | +| DeiT-base | From scratch | 86.57 | 16.86 | 81.76 | 95.81 | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/deit/deit-base_pt-16xb64_in1k.py) | [model](https://download.openmmlab.com/mmclassification/v0/deit/deit-base_pt-16xb64_in1k_20220216-db63c16c.pth) \| [log](https://download.openmmlab.com/mmclassification/v0/deit/deit-base_pt-16xb64_in1k_20220216-db63c16c.log.json) | +| DeiT-base\* | From scratch | 86.57 | 16.86 | 81.79 | 95.59 | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/deit/deit-base_pt-16xb64_in1k.py) | [model](https://download.openmmlab.com/mmclassification/v0/deit/deit-base_3rdparty_pt-16xb64_in1k_20211124-6f40c188.pth) | +| DeiT-base distilled\* | From scratch | 86.57 | 16.86 | 83.33 | 96.49 | [config](https://github.com/open-mmlab/mmclassification/tree/master/configs/deit/deit-base-distilled_pt-16xb64_in1k.py) | [model](https://download.openmmlab.com/mmclassification/v0/deit/deit-base-distilled_3rdparty_pt-16xb64_in1k_20211216-42891296.pth) | +| DeiT-base 384px\* | ImageNet-1k | 86.86 | 49.37 | 83.04 | 96.31 | [config](https://github.com/open-mmlab/mmclassification/tree/master/configs/deit/deit-base_ft-16xb32_in1k-384px.py) | [model](https://download.openmmlab.com/mmclassification/v0/deit/deit-base_3rdparty_ft-16xb32_in1k-384px_20211124-822d02f2.pth) | +| DeiT-base distilled 384px\* | ImageNet-1k | 86.86 | 49.37 | 85.55 | 97.35 | [config](https://github.com/open-mmlab/mmclassification/tree/master/configs/deit/deit-base-distilled_ft-16xb32_in1k-384px.py) | [model](https://download.openmmlab.com/mmclassification/v0/deit/deit-base-distilled_3rdparty_ft-16xb32_in1k-384px_20211216-e48d6000.pth) | + +*Models with * are converted from the [official repo](https://github.com/facebookresearch/deit). The config files of these models are only for validation. We don't ensure these config files' training accuracy and welcome you to contribute your reproduction results.* + +```{warning} +MMClassification doesn't support training the distilled version DeiT. +And we provide distilled version checkpoints for inference only. +``` + +## Citation + +``` +@InProceedings{pmlr-v139-touvron21a, + title = {Training data-efficient image transformers & distillation through attention}, + author = {Touvron, Hugo and Cord, Matthieu and Douze, Matthijs and Massa, Francisco and Sablayrolles, Alexandre and Jegou, Herve}, + booktitle = {International Conference on Machine Learning}, + pages = {10347--10357}, + year = {2021}, + volume = {139}, + month = {July} +} +``` diff --git a/openmmlab_test/mmclassification-0.24.1/configs/deit/deit-base-distilled_ft-16xb32_in1k-384px.py b/openmmlab_test/mmclassification-0.24.1/configs/deit/deit-base-distilled_ft-16xb32_in1k-384px.py new file mode 100644 index 00000000..c8bdfb53 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/deit/deit-base-distilled_ft-16xb32_in1k-384px.py @@ -0,0 +1,9 @@ +_base_ = './deit-base_ft-16xb32_in1k-384px.py' + +# model settings +model = dict( + backbone=dict(type='DistilledVisionTransformer'), + head=dict(type='DeiTClsHead'), + # Change to the path of the pretrained model + # init_cfg=dict(type='Pretrained', checkpoint=''), +) diff --git a/openmmlab_test/mmclassification-0.24.1/configs/deit/deit-base-distilled_pt-16xb64_in1k.py b/openmmlab_test/mmclassification-0.24.1/configs/deit/deit-base-distilled_pt-16xb64_in1k.py new file mode 100644 index 00000000..67165838 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/deit/deit-base-distilled_pt-16xb64_in1k.py @@ -0,0 +1,10 @@ +_base_ = './deit-small_pt-4xb256_in1k.py' + +# model settings +model = dict( + backbone=dict(type='DistilledVisionTransformer', arch='deit-base'), + head=dict(type='DeiTClsHead', in_channels=768), +) + +# data settings +data = dict(samples_per_gpu=64, workers_per_gpu=5) diff --git a/openmmlab_test/mmclassification-0.24.1/configs/deit/deit-base_ft-16xb32_in1k-384px.py b/openmmlab_test/mmclassification-0.24.1/configs/deit/deit-base_ft-16xb32_in1k-384px.py new file mode 100644 index 00000000..db444168 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/deit/deit-base_ft-16xb32_in1k-384px.py @@ -0,0 +1,29 @@ +_base_ = [ + '../_base_/datasets/imagenet_bs64_swin_384.py', + '../_base_/schedules/imagenet_bs4096_AdamW.py', + '../_base_/default_runtime.py' +] + +# model settings +model = dict( + type='ImageClassifier', + backbone=dict( + type='VisionTransformer', + arch='deit-base', + img_size=384, + patch_size=16, + ), + neck=None, + head=dict( + type='VisionTransformerClsHead', + num_classes=1000, + in_channels=768, + loss=dict( + type='LabelSmoothLoss', label_smooth_val=0.1, mode='original'), + ), + # Change to the path of the pretrained model + # init_cfg=dict(type='Pretrained', checkpoint=''), +) + +# data settings +data = dict(samples_per_gpu=32, workers_per_gpu=5) diff --git a/openmmlab_test/mmclassification-0.24.1/configs/deit/deit-base_pt-16xb64_in1k.py b/openmmlab_test/mmclassification-0.24.1/configs/deit/deit-base_pt-16xb64_in1k.py new file mode 100644 index 00000000..24c13dca --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/deit/deit-base_pt-16xb64_in1k.py @@ -0,0 +1,13 @@ +_base_ = './deit-small_pt-4xb256_in1k.py' + +# model settings +model = dict( + backbone=dict( + type='VisionTransformer', arch='deit-base', drop_path_rate=0.1), + head=dict(type='VisionTransformerClsHead', in_channels=768), +) + +# data settings +data = dict(samples_per_gpu=64, workers_per_gpu=5) + +custom_hooks = [dict(type='EMAHook', momentum=4e-5, priority='ABOVE_NORMAL')] diff --git a/openmmlab_test/mmclassification-0.24.1/configs/deit/deit-small-distilled_pt-4xb256_in1k.py b/openmmlab_test/mmclassification-0.24.1/configs/deit/deit-small-distilled_pt-4xb256_in1k.py new file mode 100644 index 00000000..3b1fac22 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/deit/deit-small-distilled_pt-4xb256_in1k.py @@ -0,0 +1,7 @@ +_base_ = './deit-small_pt-4xb256_in1k.py' + +# model settings +model = dict( + backbone=dict(type='DistilledVisionTransformer', arch='deit-small'), + head=dict(type='DeiTClsHead', in_channels=384), +) diff --git a/openmmlab_test/mmclassification-0.24.1/configs/deit/deit-small_pt-4xb256_in1k.py b/openmmlab_test/mmclassification-0.24.1/configs/deit/deit-small_pt-4xb256_in1k.py new file mode 100644 index 00000000..550f0801 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/deit/deit-small_pt-4xb256_in1k.py @@ -0,0 +1,44 @@ +# In small and tiny arch, remove drop path and EMA hook comparing with the +# original config +_base_ = [ + '../_base_/datasets/imagenet_bs64_swin_224.py', + '../_base_/schedules/imagenet_bs1024_adamw_swin.py', + '../_base_/default_runtime.py' +] + +# model settings +model = dict( + type='ImageClassifier', + backbone=dict( + type='VisionTransformer', + arch='deit-small', + img_size=224, + patch_size=16), + neck=None, + head=dict( + type='VisionTransformerClsHead', + num_classes=1000, + in_channels=384, + loss=dict( + type='LabelSmoothLoss', label_smooth_val=0.1, mode='original'), + ), + init_cfg=[ + dict(type='TruncNormal', layer='Linear', std=.02), + dict(type='Constant', layer='LayerNorm', val=1., bias=0.), + ], + train_cfg=dict(augments=[ + dict(type='BatchMixup', alpha=0.8, num_classes=1000, prob=0.5), + dict(type='BatchCutMix', alpha=1.0, num_classes=1000, prob=0.5) + ])) + +# data settings +data = dict(samples_per_gpu=256, workers_per_gpu=5) + +paramwise_cfg = dict( + norm_decay_mult=0.0, + bias_decay_mult=0.0, + custom_keys={ + '.cls_token': dict(decay_mult=0.0), + '.pos_embed': dict(decay_mult=0.0) + }) +optimizer = dict(paramwise_cfg=paramwise_cfg) diff --git a/openmmlab_test/mmclassification-0.24.1/configs/deit/deit-tiny-distilled_pt-4xb256_in1k.py b/openmmlab_test/mmclassification-0.24.1/configs/deit/deit-tiny-distilled_pt-4xb256_in1k.py new file mode 100644 index 00000000..175f9804 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/deit/deit-tiny-distilled_pt-4xb256_in1k.py @@ -0,0 +1,7 @@ +_base_ = './deit-small_pt-4xb256_in1k.py' + +# model settings +model = dict( + backbone=dict(type='DistilledVisionTransformer', arch='deit-tiny'), + head=dict(type='DeiTClsHead', in_channels=192), +) diff --git a/openmmlab_test/mmclassification-0.24.1/configs/deit/deit-tiny_pt-4xb256_in1k.py b/openmmlab_test/mmclassification-0.24.1/configs/deit/deit-tiny_pt-4xb256_in1k.py new file mode 100644 index 00000000..43df6e13 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/deit/deit-tiny_pt-4xb256_in1k.py @@ -0,0 +1,7 @@ +_base_ = './deit-small_pt-4xb256_in1k.py' + +# model settings +model = dict( + backbone=dict(type='VisionTransformer', arch='deit-tiny'), + head=dict(type='VisionTransformerClsHead', in_channels=192), +) diff --git a/openmmlab_test/mmclassification-0.24.1/configs/deit/metafile.yml b/openmmlab_test/mmclassification-0.24.1/configs/deit/metafile.yml new file mode 100644 index 00000000..ddd4c674 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/deit/metafile.yml @@ -0,0 +1,153 @@ +Collections: + - Name: DeiT + Metadata: + Training Data: ImageNet-1k + Architecture: + - Layer Normalization + - Scaled Dot-Product Attention + - Attention Dropout + - Multi-Head Attention + Paper: + URL: https://arxiv.org/abs/2012.12877 + Title: "Training data-efficient image transformers & distillation through attention" + README: configs/deit/README.md + Code: + URL: v0.19.0 + Version: https://github.com/open-mmlab/mmclassification/blob/v0.19.0/mmcls/models/backbones/deit.py + +Models: + - Name: deit-tiny_pt-4xb256_in1k + Metadata: + FLOPs: 1080000000 + Parameters: 5720000 + In Collection: DeiT + Results: + - Dataset: ImageNet-1k + Metrics: + Top 1 Accuracy: 74.50 + Top 5 Accuracy: 92.24 + Task: Image Classification + Weights: https://download.openmmlab.com/mmclassification/v0/deit/deit-tiny_pt-4xb256_in1k_20220218-13b382a0.pth + Config: configs/deit/deit-tiny_pt-4xb256_in1k.py + - Name: deit-tiny-distilled_3rdparty_pt-4xb256_in1k + Metadata: + FLOPs: 1080000000 + Parameters: 5720000 + In Collection: DeiT + Results: + - Dataset: ImageNet-1k + Metrics: + Top 1 Accuracy: 74.51 + Top 5 Accuracy: 91.90 + Task: Image Classification + Weights: https://download.openmmlab.com/mmclassification/v0/deit/deit-tiny-distilled_3rdparty_pt-4xb256_in1k_20211216-c429839a.pth + Converted From: + Weights: https://dl.fbaipublicfiles.com/deit/deit_tiny_distilled_patch16_224-b40b3cf7.pth + Code: https://github.com/facebookresearch/deit/blob/f5123946205daf72a88783dae94cabff98c49c55/models.py#L108 + Config: configs/deit/deit-tiny-distilled_pt-4xb256_in1k.py + - Name: deit-small_pt-4xb256_in1k + Metadata: + FLOPs: 4240000000 + Parameters: 22050000 + In Collection: DeiT + Results: + - Dataset: ImageNet-1k + Metrics: + Top 1 Accuracy: 80.69 + Top 5 Accuracy: 95.06 + Task: Image Classification + Weights: https://download.openmmlab.com/mmclassification/v0/deit/deit-small_pt-4xb256_in1k_20220218-9425b9bb.pth + Config: configs/deit/deit-small_pt-4xb256_in1k.py + - Name: deit-small-distilled_3rdparty_pt-4xb256_in1k + Metadata: + FLOPs: 4240000000 + Parameters: 22050000 + In Collection: DeiT + Results: + - Dataset: ImageNet-1k + Metrics: + Top 1 Accuracy: 81.17 + Top 5 Accuracy: 95.40 + Task: Image Classification + Weights: https://download.openmmlab.com/mmclassification/v0/deit/deit-small-distilled_3rdparty_pt-4xb256_in1k_20211216-4de1d725.pth + Converted From: + Weights: https://dl.fbaipublicfiles.com/deit/deit_small_distilled_patch16_224-649709d9.pth + Code: https://github.com/facebookresearch/deit/blob/f5123946205daf72a88783dae94cabff98c49c55/models.py#L123 + Config: configs/deit/deit-small-distilled_pt-4xb256_in1k.py + - Name: deit-base_pt-16xb64_in1k + Metadata: + FLOPs: 16860000000 + Parameters: 86570000 + In Collection: DeiT + Results: + - Dataset: ImageNet-1k + Metrics: + Top 1 Accuracy: 81.76 + Top 5 Accuracy: 95.81 + Task: Image Classification + Weights: https://download.openmmlab.com/mmclassification/v0/deit/deit-base_pt-16xb64_in1k_20220216-db63c16c.pth + Config: configs/deit/deit-base_pt-16xb64_in1k.py + - Name: deit-base_3rdparty_pt-16xb64_in1k + Metadata: + FLOPs: 16860000000 + Parameters: 86570000 + In Collection: DeiT + Results: + - Dataset: ImageNet-1k + Metrics: + Top 1 Accuracy: 81.79 + Top 5 Accuracy: 95.59 + Task: Image Classification + Weights: https://download.openmmlab.com/mmclassification/v0/deit/deit-base_3rdparty_pt-16xb64_in1k_20211124-6f40c188.pth + Converted From: + Weights: https://dl.fbaipublicfiles.com/deit/deit_base_patch16_224-b5f2ef4d.pth + Code: https://github.com/facebookresearch/deit/blob/f5123946205daf72a88783dae94cabff98c49c55/models.py#L93 + Config: configs/deit/deit-base_pt-16xb64_in1k.py + - Name: deit-base-distilled_3rdparty_pt-16xb64_in1k + Metadata: + FLOPs: 16860000000 + Parameters: 86570000 + In Collection: DeiT + Results: + - Dataset: ImageNet-1k + Metrics: + Top 1 Accuracy: 83.33 + Top 5 Accuracy: 96.49 + Task: Image Classification + Weights: https://download.openmmlab.com/mmclassification/v0/deit/deit-base-distilled_3rdparty_pt-16xb64_in1k_20211216-42891296.pth + Converted From: + Weights: https://dl.fbaipublicfiles.com/deit/deit_base_distilled_patch16_224-df68dfff.pth + Code: https://github.com/facebookresearch/deit/blob/f5123946205daf72a88783dae94cabff98c49c55/models.py#L138 + Config: configs/deit/deit-base-distilled_pt-16xb64_in1k.py + - Name: deit-base_3rdparty_ft-16xb32_in1k-384px + Metadata: + FLOPs: 49370000000 + Parameters: 86860000 + In Collection: DeiT + Results: + - Dataset: ImageNet-1k + Metrics: + Top 1 Accuracy: 83.04 + Top 5 Accuracy: 96.31 + Task: Image Classification + Weights: https://download.openmmlab.com/mmclassification/v0/deit/deit-base_3rdparty_ft-16xb32_in1k-384px_20211124-822d02f2.pth + Converted From: + Weights: https://dl.fbaipublicfiles.com/deit/deit_base_patch16_384-8de9b5d1.pth + Code: https://github.com/facebookresearch/deit/blob/f5123946205daf72a88783dae94cabff98c49c55/models.py#L153 + Config: configs/deit/deit-base_ft-16xb32_in1k-384px.py + - Name: deit-base-distilled_3rdparty_ft-16xb32_in1k-384px + Metadata: + FLOPs: 49370000000 + Parameters: 86860000 + In Collection: DeiT + Results: + - Dataset: ImageNet-1k + Metrics: + Top 1 Accuracy: 85.55 + Top 5 Accuracy: 97.35 + Task: Image Classification + Weights: https://download.openmmlab.com/mmclassification/v0/deit/deit-base-distilled_3rdparty_ft-16xb32_in1k-384px_20211216-e48d6000.pth + Converted From: + Weights: https://dl.fbaipublicfiles.com/deit/deit_base_distilled_patch16_384-d0272ac0.pth + Code: https://github.com/facebookresearch/deit/blob/f5123946205daf72a88783dae94cabff98c49c55/models.py#L168 + Config: configs/deit/deit-base-distilled_ft-16xb32_in1k-384px.py diff --git a/openmmlab_test/mmclassification-0.24.1/configs/densenet/README.md b/openmmlab_test/mmclassification-0.24.1/configs/densenet/README.md new file mode 100644 index 00000000..f07f25c9 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/densenet/README.md @@ -0,0 +1,41 @@ +# DenseNet + +> [Densely Connected Convolutional Networks](https://arxiv.org/abs/1608.06993) + + + +## Abstract + +Recent work has shown that convolutional networks can be substantially deeper, more accurate, and efficient to train if they contain shorter connections between layers close to the input and those close to the output. In this paper, we embrace this observation and introduce the Dense Convolutional Network (DenseNet), which connects each layer to every other layer in a feed-forward fashion. Whereas traditional convolutional networks with L layers have L connections - one between each layer and its subsequent layer - our network has L(L+1)/2 direct connections. For each layer, the feature-maps of all preceding layers are used as inputs, and its own feature-maps are used as inputs into all subsequent layers. DenseNets have several compelling advantages: they alleviate the vanishing-gradient problem, strengthen feature propagation, encourage feature reuse, and substantially reduce the number of parameters. We evaluate our proposed architecture on four highly competitive object recognition benchmark tasks (CIFAR-10, CIFAR-100, SVHN, and ImageNet). DenseNets obtain significant improvements over the state-of-the-art on most of them, whilst requiring less computation to achieve high performance. + +
+ +
+ +## Results and models + +### ImageNet-1k + +| Model | Params(M) | Flops(G) | Top-1 (%) | Top-5 (%) | Config | Download | +| :-----------: | :-------: | :------: | :-------: | :-------: | :-------------------------------------------------------------------------: | :---------------------------------------------------------------------------: | +| DenseNet121\* | 7.98 | 2.88 | 74.96 | 92.21 | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/densenet/densenet121_4xb256_in1k.py) | [model](https://download.openmmlab.com/mmclassification/v0/densenet/densenet121_4xb256_in1k_20220426-07450f99.pth) | +| DenseNet169\* | 14.15 | 3.42 | 76.08 | 93.11 | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/densenet/densenet169_4xb256_in1k.py) | [model](https://download.openmmlab.com/mmclassification/v0/densenet/densenet169_4xb256_in1k_20220426-a2889902.pth) | +| DenseNet201\* | 20.01 | 4.37 | 77.32 | 93.64 | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/densenet/densenet201_4xb256_in1k.py) | [model](https://download.openmmlab.com/mmclassification/v0/densenet/densenet201_4xb256_in1k_20220426-05cae4ef.pth) | +| DenseNet161\* | 28.68 | 7.82 | 77.61 | 93.83 | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/densenet/densenet161_4xb256_in1k.py) | [model](https://download.openmmlab.com/mmclassification/v0/densenet/densenet161_4xb256_in1k_20220426-ee6a80a9.pth) | + +*Models with * are converted from [pytorch](https://pytorch.org/vision/stable/models.html), guided by [original repo](https://github.com/liuzhuang13/DenseNet). The config files of these models are only for inference. We don't ensure these config files' training accuracy and welcome you to contribute your reproduction results.* + +## Citation + +```bibtex +@misc{https://doi.org/10.48550/arxiv.1608.06993, + doi = {10.48550/ARXIV.1608.06993}, + url = {https://arxiv.org/abs/1608.06993}, + author = {Huang, Gao and Liu, Zhuang and van der Maaten, Laurens and Weinberger, Kilian Q.}, + keywords = {Computer Vision and Pattern Recognition (cs.CV), Machine Learning (cs.LG), FOS: Computer and information sciences, FOS: Computer and information sciences}, + title = {Densely Connected Convolutional Networks}, + publisher = {arXiv}, + year = {2016}, + copyright = {arXiv.org perpetual, non-exclusive license} +} +``` diff --git a/openmmlab_test/mmclassification-0.24.1/configs/densenet/densenet121_4xb256_in1k.py b/openmmlab_test/mmclassification-0.24.1/configs/densenet/densenet121_4xb256_in1k.py new file mode 100644 index 00000000..08d65ae2 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/densenet/densenet121_4xb256_in1k.py @@ -0,0 +1,10 @@ +_base_ = [ + '../_base_/models/densenet/densenet121.py', + '../_base_/datasets/imagenet_bs64.py', + '../_base_/schedules/imagenet_bs256.py', + '../_base_/default_runtime.py', +] + +data = dict(samples_per_gpu=256) + +runner = dict(type='EpochBasedRunner', max_epochs=90) diff --git a/openmmlab_test/mmclassification-0.24.1/configs/densenet/densenet161_4xb256_in1k.py b/openmmlab_test/mmclassification-0.24.1/configs/densenet/densenet161_4xb256_in1k.py new file mode 100644 index 00000000..4581d1de --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/densenet/densenet161_4xb256_in1k.py @@ -0,0 +1,10 @@ +_base_ = [ + '../_base_/models/densenet/densenet161.py', + '../_base_/datasets/imagenet_bs64.py', + '../_base_/schedules/imagenet_bs256.py', + '../_base_/default_runtime.py', +] + +data = dict(samples_per_gpu=256) + +runner = dict(type='EpochBasedRunner', max_epochs=90) diff --git a/openmmlab_test/mmclassification-0.24.1/configs/densenet/densenet169_4xb256_in1k.py b/openmmlab_test/mmclassification-0.24.1/configs/densenet/densenet169_4xb256_in1k.py new file mode 100644 index 00000000..6179293b --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/densenet/densenet169_4xb256_in1k.py @@ -0,0 +1,10 @@ +_base_ = [ + '../_base_/models/densenet/densenet169.py', + '../_base_/datasets/imagenet_bs64.py', + '../_base_/schedules/imagenet_bs256.py', + '../_base_/default_runtime.py', +] + +data = dict(samples_per_gpu=256) + +runner = dict(type='EpochBasedRunner', max_epochs=90) diff --git a/openmmlab_test/mmclassification-0.24.1/configs/densenet/densenet201_4xb256_in1k.py b/openmmlab_test/mmclassification-0.24.1/configs/densenet/densenet201_4xb256_in1k.py new file mode 100644 index 00000000..897a141d --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/densenet/densenet201_4xb256_in1k.py @@ -0,0 +1,10 @@ +_base_ = [ + '../_base_/models/densenet/densenet201.py', + '../_base_/datasets/imagenet_bs64.py', + '../_base_/schedules/imagenet_bs256.py', + '../_base_/default_runtime.py', +] + +data = dict(samples_per_gpu=256) + +runner = dict(type='EpochBasedRunner', max_epochs=90) diff --git a/openmmlab_test/mmclassification-0.24.1/configs/densenet/metafile.yml b/openmmlab_test/mmclassification-0.24.1/configs/densenet/metafile.yml new file mode 100644 index 00000000..84366b23 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/densenet/metafile.yml @@ -0,0 +1,76 @@ +Collections: + - Name: DenseNet + Metadata: + Training Data: ImageNet-1k + Architecture: + - DenseBlock + Paper: + URL: https://arxiv.org/abs/1608.06993 + Title: Densely Connected Convolutional Networks + README: configs/densenet/README.md + +Models: + - Name: densenet121_4xb256_in1k + Metadata: + FLOPs: 2881695488 + Parameters: 7978856 + In Collections: DenseNet + Results: + - Dataset: ImageNet-1k + Metrics: + Top 1 Accuracy: 74.96 + Top 5 Accuracy: 92.21 + Task: Image Classification + Weights: https://download.openmmlab.com/mmclassification/v0/densenet/densenet121_4xb256_in1k_20220426-07450f99.pth + Config: configs/densenet/densenet121_4xb256_in1k.py + Converted From: + Weights: https://download.pytorch.org/models/densenet121-a639ec97.pth + Code: https://github.com/pytorch/vision/blob/main/torchvision/models/densenet.py + - Name: densenet169_4xb256_in1k + Metadata: + FLOPs: 3416860160 + Parameters: 14149480 + In Collections: DenseNet + Results: + - Dataset: ImageNet-1k + Metrics: + Top 1 Accuracy: 76.08 + Top 5 Accuracy: 93.11 + Task: Image Classification + Weights: https://download.openmmlab.com/mmclassification/v0/densenet/densenet169_4xb256_in1k_20220426-a2889902.pth + Config: configs/densenet/densenet169_4xb256_in1k.py + Converted From: + Weights: https://download.pytorch.org/models/densenet169-b2777c0a.pth + Code: https://github.com/pytorch/vision/blob/main/torchvision/models/densenet.py + - Name: densenet201_4xb256_in1k + Metadata: + FLOPs: 4365236736 + Parameters: 20013928 + In Collections: DenseNet + Results: + - Dataset: ImageNet-1k + Metrics: + Top 1 Accuracy: 77.32 + Top 5 Accuracy: 93.64 + Task: Image Classification + Weights: https://download.openmmlab.com/mmclassification/v0/densenet/densenet201_4xb256_in1k_20220426-05cae4ef.pth + Config: configs/densenet/densenet201_4xb256_in1k.py + Converted From: + Weights: https://download.pytorch.org/models/densenet201-c1103571.pth + Code: https://github.com/pytorch/vision/blob/main/torchvision/models/densenet.py + - Name: densenet161_4xb256_in1k + Metadata: + FLOPs: 7816363968 + Parameters: 28681000 + In Collections: DenseNet + Results: + - Dataset: ImageNet-1k + Metrics: + Top 1 Accuracy: 77.61 + Top 5 Accuracy: 93.83 + Task: Image Classification + Weights: https://download.openmmlab.com/mmclassification/v0/densenet/densenet161_4xb256_in1k_20220426-ee6a80a9.pth + Config: configs/densenet/densenet161_4xb256_in1k.py + Converted From: + Weights: https://download.pytorch.org/models/densenet161-8d451a50.pth + Code: https://github.com/pytorch/vision/blob/main/torchvision/models/densenet.py diff --git a/openmmlab_test/mmclassification-0.24.1/configs/efficientformer/README.md b/openmmlab_test/mmclassification-0.24.1/configs/efficientformer/README.md new file mode 100644 index 00000000..ecd6b492 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/efficientformer/README.md @@ -0,0 +1,47 @@ +# EfficientFormer + +> [EfficientFormer: Vision Transformers at MobileNet Speed](https://arxiv.org/abs/2206.01191) + + + +## Abstract + +Vision Transformers (ViT) have shown rapid progress in computer vision tasks, achieving promising results on various benchmarks. However, due to the massive number of parameters and model design, e.g., attention mechanism, ViT-based models are generally times slower than lightweight convolutional networks. Therefore, the deployment of ViT for real-time applications is particularly challenging, especially on resource-constrained hardware such as mobile devices. Recent efforts try to reduce the computation complexity of ViT through network architecture search or hybrid design with MobileNet block, yet the inference speed is still unsatisfactory. This leads to an important question: can transformers run as fast as MobileNet while obtaining high performance? To answer this, we first revisit the network architecture and operators used in ViT-based models and identify inefficient designs. Then we introduce a dimension-consistent pure transformer (without MobileNet blocks) as a design paradigm. Finally, we perform latency-driven slimming to get a series of final models dubbed EfficientFormer. Extensive experiments show the superiority of EfficientFormer in performance and speed on mobile devices. Our fastest model, EfficientFormer-L1, achieves 79.2% top-1 accuracy on ImageNet-1K with only 1.6 ms inference latency on iPhone 12 (compiled with CoreML), which runs as fast as MobileNetV2×1.4 (1.6 ms, 74.7% top-1), and our largest model, EfficientFormer-L7, obtains 83.3% accuracy with only 7.0 ms latency. Our work proves that properly designed transformers can reach extremely low latency on mobile devices while maintaining high performance. + +
+ +
+ +## Results and models + +### ImageNet-1k + +| Model | Params(M) | Flops(G) | Top-1 (%) | Top-5 (%) | Config | Download | +| :------------------: | :-------: | :------: | :-------: | :-------: | :---------------------------------------------------------------------: | :------------------------------------------------------------------------: | +| EfficientFormer-l1\* | 12.19 | 1.30 | 80.46 | 94.99 | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/efficientformer/efficientformer-l1_8xb128_in1k.py) | [model](https://download.openmmlab.com/mmclassification/v0/efficientformer/efficientformer-l1_3rdparty_in1k_20220803-d66e61df.pth) | +| EfficientFormer-l3\* | 31.41 | 3.93 | 82.45 | 96.18 | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/efficientformer/efficientformer-l3_8xb128_in1k.py) | [model](https://download.openmmlab.com/mmclassification/v0/efficientformer/efficientformer-l3_3rdparty_in1k_20220803-dde1c8c5.pth) | +| EfficientFormer-l7\* | 82.23 | 10.16 | 83.40 | 96.60 | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/efficientformer/efficientformer-l7_8xb128_in1k.py) | [model](https://download.openmmlab.com/mmclassification/v0/efficientformer/efficientformer-l7_3rdparty_in1k_20220803-41a552bb.pth) | + +*Models with * are converted from the [official repo](https://github.com/snap-research/EfficientFormer). The config files of these models are only for inference. We don't ensure these config files' training accuracy and welcome you to contribute your reproduction results.* + +## Citation + +```bibtex +@misc{https://doi.org/10.48550/arxiv.2206.01191, + doi = {10.48550/ARXIV.2206.01191}, + + url = {https://arxiv.org/abs/2206.01191}, + + author = {Li, Yanyu and Yuan, Geng and Wen, Yang and Hu, Eric and Evangelidis, Georgios and Tulyakov, Sergey and Wang, Yanzhi and Ren, Jian}, + + keywords = {Computer Vision and Pattern Recognition (cs.CV), FOS: Computer and information sciences, FOS: Computer and information sciences}, + + title = {EfficientFormer: Vision Transformers at MobileNet Speed}, + + publisher = {arXiv}, + + year = {2022}, + + copyright = {Creative Commons Attribution 4.0 International} +} +``` diff --git a/openmmlab_test/mmclassification-0.24.1/configs/efficientformer/efficientformer-l1_8xb128_in1k.py b/openmmlab_test/mmclassification-0.24.1/configs/efficientformer/efficientformer-l1_8xb128_in1k.py new file mode 100644 index 00000000..f5db2bfc --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/efficientformer/efficientformer-l1_8xb128_in1k.py @@ -0,0 +1,24 @@ +_base_ = [ + '../_base_/datasets/imagenet_bs128_poolformer_small_224.py', + '../_base_/schedules/imagenet_bs1024_adamw_swin.py', + '../_base_/default_runtime.py', +] + +model = dict( + type='ImageClassifier', + backbone=dict( + type='EfficientFormer', + arch='l1', + drop_path_rate=0, + init_cfg=[ + dict( + type='TruncNormal', + layer=['Conv2d', 'Linear'], + std=.02, + bias=0.), + dict(type='Constant', layer=['GroupNorm'], val=1., bias=0.), + dict(type='Constant', layer=['LayerScale'], val=1e-5) + ]), + neck=dict(type='GlobalAveragePooling', dim=1), + head=dict( + type='EfficientFormerClsHead', in_channels=448, num_classes=1000)) diff --git a/openmmlab_test/mmclassification-0.24.1/configs/efficientformer/efficientformer-l3_8xb128_in1k.py b/openmmlab_test/mmclassification-0.24.1/configs/efficientformer/efficientformer-l3_8xb128_in1k.py new file mode 100644 index 00000000..e920f785 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/efficientformer/efficientformer-l3_8xb128_in1k.py @@ -0,0 +1,24 @@ +_base_ = [ + '../_base_/datasets/imagenet_bs128_poolformer_small_224.py', + '../_base_/schedules/imagenet_bs1024_adamw_swin.py', + '../_base_/default_runtime.py', +] + +model = dict( + type='ImageClassifier', + backbone=dict( + type='EfficientFormer', + arch='l3', + drop_path_rate=0, + init_cfg=[ + dict( + type='TruncNormal', + layer=['Conv2d', 'Linear'], + std=.02, + bias=0.), + dict(type='Constant', layer=['GroupNorm'], val=1., bias=0.), + dict(type='Constant', layer=['LayerScale'], val=1e-5) + ]), + neck=dict(type='GlobalAveragePooling', dim=1), + head=dict( + type='EfficientFormerClsHead', in_channels=512, num_classes=1000)) diff --git a/openmmlab_test/mmclassification-0.24.1/configs/efficientformer/efficientformer-l7_8xb128_in1k.py b/openmmlab_test/mmclassification-0.24.1/configs/efficientformer/efficientformer-l7_8xb128_in1k.py new file mode 100644 index 00000000..a59e3a7e --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/efficientformer/efficientformer-l7_8xb128_in1k.py @@ -0,0 +1,24 @@ +_base_ = [ + '../_base_/datasets/imagenet_bs128_poolformer_small_224.py', + '../_base_/schedules/imagenet_bs1024_adamw_swin.py', + '../_base_/default_runtime.py', +] + +model = dict( + type='ImageClassifier', + backbone=dict( + type='EfficientFormer', + arch='l7', + drop_path_rate=0, + init_cfg=[ + dict( + type='TruncNormal', + layer=['Conv2d', 'Linear'], + std=.02, + bias=0.), + dict(type='Constant', layer=['GroupNorm'], val=1., bias=0.), + dict(type='Constant', layer=['LayerScale'], val=1e-5) + ]), + neck=dict(type='GlobalAveragePooling', dim=1), + head=dict( + type='EfficientFormerClsHead', in_channels=768, num_classes=1000)) diff --git a/openmmlab_test/mmclassification-0.24.1/configs/efficientformer/metafile.yml b/openmmlab_test/mmclassification-0.24.1/configs/efficientformer/metafile.yml new file mode 100644 index 00000000..33c47865 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/efficientformer/metafile.yml @@ -0,0 +1,67 @@ +Collections: + - Name: EfficientFormer + Metadata: + Training Data: ImageNet-1k + Architecture: + - Pooling + - 1x1 Convolution + - LayerScale + - MetaFormer + Paper: + URL: https://arxiv.org/pdf/2206.01191.pdf + Title: "EfficientFormer: Vision Transformers at MobileNet Speed" + README: configs/efficientformer/README.md + Code: + Version: v0.24.0 + URL: https://github.com/open-mmlab/mmclassification/blob/v0.24.0/mmcls/models/backbones/efficientformer.py + +Models: + - Name: efficientformer-l1_3rdparty_8xb128_in1k + Metadata: + FLOPs: 1304601088 # 1.3G + Parameters: 12278696 # 12M + In Collections: EfficientFormer + Results: + - Dataset: ImageNet-1k + Metrics: + Top 1 Accuracy: 80.46 + Top 5 Accuracy: 94.99 + Task: Image Classification + Weights: https://download.openmmlab.com/mmclassification/v0/efficientformer/efficientformer-l1_3rdparty_in1k_20220803-d66e61df.pth + Config: configs/efficientformer/efficientformer-l1_8xb128_in1k.py + Converted From: + Weights: https://drive.google.com/file/d/11SbX-3cfqTOc247xKYubrAjBiUmr818y/view?usp=sharing + Code: https://github.com/snap-research/EfficientFormer + - Name: efficientformer-l3_3rdparty_8xb128_in1k + Metadata: + Training Data: ImageNet-1k + FLOPs: 3737045760 # 3.7G + Parameters: 31406000 # 31M + In Collections: EfficientFormer + Results: + - Dataset: ImageNet-1k + Metrics: + Top 1 Accuracy: 82.45 + Top 5 Accuracy: 96.18 + Task: Image Classification + Weights: https://download.openmmlab.com/mmclassification/v0/efficientformer/efficientformer-l3_3rdparty_in1k_20220803-dde1c8c5.pth + Config: configs/efficientformer/efficientformer-l3_8xb128_in1k.py + Converted From: + Weights: https://drive.google.com/file/d/1OyyjKKxDyMj-BcfInp4GlDdwLu3hc30m/view?usp=sharing + Code: https://github.com/snap-research/EfficientFormer + - Name: efficientformer-l7_3rdparty_8xb128_in1k + Metadata: + FLOPs: 10163951616 # 10.2G + Parameters: 82229328 # 82M + In Collections: EfficientFormer + Results: + - Dataset: ImageNet-1k + Metrics: + Top 1 Accuracy: 83.40 + Top 5 Accuracy: 96.60 + Task: Image Classification + Weights: https://download.openmmlab.com/mmclassification/v0/efficientformer/efficientformer-l7_3rdparty_in1k_20220803-41a552bb.pth + Config: configs/efficientformer/efficientformer-l7_8xb128_in1k.py + Converted From: + Weights: https://drive.google.com/file/d/1cVw-pctJwgvGafeouynqWWCwgkcoFMM5/view?usp=sharing + Code: https://github.com/snap-research/EfficientFormer diff --git a/openmmlab_test/mmclassification-0.24.1/configs/efficientnet/README.md b/openmmlab_test/mmclassification-0.24.1/configs/efficientnet/README.md new file mode 100644 index 00000000..832f5c6b --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/efficientnet/README.md @@ -0,0 +1,62 @@ +# EfficientNet + +> [Rethinking Model Scaling for Convolutional Neural Networks](https://arxiv.org/abs/1905.11946v5) + + + +## Abstract + +Convolutional Neural Networks (ConvNets) are commonly developed at a fixed resource budget, and then scaled up for better accuracy if more resources are available. In this paper, we systematically study model scaling and identify that carefully balancing network depth, width, and resolution can lead to better performance. Based on this observation, we propose a new scaling method that uniformly scales all dimensions of depth/width/resolution using a simple yet highly effective compound coefficient. We demonstrate the effectiveness of this method on scaling up MobileNets and ResNet. To go even further, we use neural architecture search to design a new baseline network and scale it up to obtain a family of models, called EfficientNets, which achieve much better accuracy and efficiency than previous ConvNets. In particular, our EfficientNet-B7 achieves state-of-the-art 84.3% top-1 accuracy on ImageNet, while being 8.4x smaller and 6.1x faster on inference than the best existing ConvNet. Our EfficientNets also transfer well and achieve state-of-the-art accuracy on CIFAR-100 (91.7%), Flowers (98.8%), and 3 other transfer learning datasets, with an order of magnitude fewer parameters. + +
+ +
+ +## Results and models + +### ImageNet-1k + +In the result table, AA means trained with AutoAugment pre-processing, more details can be found in the [paper](https://arxiv.org/abs/1805.09501), and AdvProp is a method to train with adversarial examples, more details can be found in the [paper](https://arxiv.org/abs/1911.09665). + +Note: In MMClassification, we support training with AutoAugment, don't support AdvProp by now. + +| Model | Params(M) | Flops(G) | Top-1 (%) | Top-5 (%) | Config | Download | +| :------------------------------: | :-------: | :------: | :-------: | :-------: | :---------------------------------------------------------------: | :------------------------------------------------------------------: | +| EfficientNet-B0\* | 5.29 | 0.02 | 76.74 | 93.17 | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/efficientnet/efficientnet-b0_8xb32_in1k.py) | [model](https://download.openmmlab.com/mmclassification/v0/efficientnet/efficientnet-b0_3rdparty_8xb32_in1k_20220119-a7e2a0b1.pth) | +| EfficientNet-B0 (AA)\* | 5.29 | 0.02 | 77.26 | 93.41 | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/efficientnet/efficientnet-b0_8xb32_in1k.py) | [model](https://download.openmmlab.com/mmclassification/v0/efficientnet/efficientnet-b0_3rdparty_8xb32-aa_in1k_20220119-8d939117.pth) | +| EfficientNet-B0 (AA + AdvProp)\* | 5.29 | 0.02 | 77.53 | 93.61 | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/efficientnet/efficientnet-b0_8xb32-01norm_in1k.py) | [model](https://download.openmmlab.com/mmclassification/v0/efficientnet/efficientnet-b0_3rdparty_8xb32-aa-advprop_in1k_20220119-26434485.pth) | +| EfficientNet-B1\* | 7.79 | 0.03 | 78.68 | 94.28 | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/efficientnet/efficientnet-b1_8xb32_in1k.py) | [model](https://download.openmmlab.com/mmclassification/v0/efficientnet/efficientnet-b1_3rdparty_8xb32_in1k_20220119-002556d9.pth) | +| EfficientNet-B1 (AA)\* | 7.79 | 0.03 | 79.20 | 94.42 | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/efficientnet/efficientnet-b1_8xb32_in1k.py) | [model](https://download.openmmlab.com/mmclassification/v0/efficientnet/efficientnet-b1_3rdparty_8xb32-aa_in1k_20220119-619d8ae3.pth) | +| EfficientNet-B1 (AA + AdvProp)\* | 7.79 | 0.03 | 79.52 | 94.43 | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/efficientnet/efficientnet-b1_8xb32-01norm_in1k.py) | [model](https://download.openmmlab.com/mmclassification/v0/efficientnet/efficientnet-b1_3rdparty_8xb32-aa-advprop_in1k_20220119-5715267d.pth) | +| EfficientNet-B2\* | 9.11 | 0.03 | 79.64 | 94.80 | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/efficientnet/efficientnet-b2_8xb32_in1k.py) | [model](https://download.openmmlab.com/mmclassification/v0/efficientnet/efficientnet-b2_3rdparty_8xb32_in1k_20220119-ea374a30.pth) | +| EfficientNet-B2 (AA)\* | 9.11 | 0.03 | 80.21 | 94.96 | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/efficientnet/efficientnet-b2_8xb32_in1k.py) | [model](https://download.openmmlab.com/mmclassification/v0/efficientnet/efficientnet-b2_3rdparty_8xb32-aa_in1k_20220119-dd61e80b.pth) | +| EfficientNet-B2 (AA + AdvProp)\* | 9.11 | 0.03 | 80.45 | 95.07 | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/efficientnet/efficientnet-b2_8xb32-01norm_in1k.py) | [model](https://download.openmmlab.com/mmclassification/v0/efficientnet/efficientnet-b2_3rdparty_8xb32-aa-advprop_in1k_20220119-1655338a.pth) | +| EfficientNet-B3\* | 12.23 | 0.06 | 81.01 | 95.34 | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/efficientnet/efficientnet-b3_8xb32_in1k.py) | [model](https://download.openmmlab.com/mmclassification/v0/efficientnet/efficientnet-b3_3rdparty_8xb32_in1k_20220119-4b4d7487.pth) | +| EfficientNet-B3 (AA)\* | 12.23 | 0.06 | 81.58 | 95.67 | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/efficientnet/efficientnet-b3_8xb32_in1k.py) | [model](https://download.openmmlab.com/mmclassification/v0/efficientnet/efficientnet-b3_3rdparty_8xb32-aa_in1k_20220119-5b4887a0.pth) | +| EfficientNet-B3 (AA + AdvProp)\* | 12.23 | 0.06 | 81.81 | 95.69 | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/efficientnet/efficientnet-b3_8xb32-01norm_in1k.py) | [model](https://download.openmmlab.com/mmclassification/v0/efficientnet/efficientnet-b3_3rdparty_8xb32-aa-advprop_in1k_20220119-53b41118.pth) | +| EfficientNet-B4\* | 19.34 | 0.12 | 82.57 | 96.09 | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/efficientnet/efficientnet-b4_8xb32_in1k.py) | [model](https://download.openmmlab.com/mmclassification/v0/efficientnet/efficientnet-b4_3rdparty_8xb32_in1k_20220119-81fd4077.pth) | +| EfficientNet-B4 (AA)\* | 19.34 | 0.12 | 82.95 | 96.26 | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/efficientnet/efficientnet-b4_8xb32_in1k.py) | [model](https://download.openmmlab.com/mmclassification/v0/efficientnet/efficientnet-b4_3rdparty_8xb32-aa_in1k_20220119-45b8bd2b.pth) | +| EfficientNet-B4 (AA + AdvProp)\* | 19.34 | 0.12 | 83.25 | 96.44 | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/efficientnet/efficientnet-b4_8xb32-01norm_in1k.py) | [model](https://download.openmmlab.com/mmclassification/v0/efficientnet/efficientnet-b4_3rdparty_8xb32-aa-advprop_in1k_20220119-38c2238c.pth) | +| EfficientNet-B5\* | 30.39 | 0.24 | 83.18 | 96.47 | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/efficientnet/efficientnet-b5_8xb32_in1k.py) | [model](https://download.openmmlab.com/mmclassification/v0/efficientnet/efficientnet-b5_3rdparty_8xb32_in1k_20220119-e9814430.pth) | +| EfficientNet-B5 (AA)\* | 30.39 | 0.24 | 83.82 | 96.76 | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/efficientnet/efficientnet-b5_8xb32_in1k.py) | [model](https://download.openmmlab.com/mmclassification/v0/efficientnet/efficientnet-b5_3rdparty_8xb32-aa_in1k_20220119-2cab8b78.pth) | +| EfficientNet-B5 (AA + AdvProp)\* | 30.39 | 0.24 | 84.21 | 96.98 | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/efficientnet/efficientnet-b5_8xb32-01norm_in1k.py) | [model](https://download.openmmlab.com/mmclassification/v0/efficientnet/efficientnet-b5_3rdparty_8xb32-aa-advprop_in1k_20220119-f57a895a.pth) | +| EfficientNet-B6 (AA)\* | 43.04 | 0.41 | 84.05 | 96.82 | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/efficientnet/efficientnet-b6_8xb32_in1k.py) | [model](https://download.openmmlab.com/mmclassification/v0/efficientnet/efficientnet-b6_3rdparty_8xb32-aa_in1k_20220119-45b03310.pth) | +| EfficientNet-B6 (AA + AdvProp)\* | 43.04 | 0.41 | 84.74 | 97.14 | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/efficientnet/efficientnet-b6_8xb32-01norm_in1k.py) | [model](https://download.openmmlab.com/mmclassification/v0/efficientnet/efficientnet-b6_3rdparty_8xb32-aa-advprop_in1k_20220119-bfe3485e.pth) | +| EfficientNet-B7 (AA)\* | 66.35 | 0.72 | 84.38 | 96.88 | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/efficientnet/efficientnet-b7_8xb32_in1k.py) | [model](https://download.openmmlab.com/mmclassification/v0/efficientnet/efficientnet-b7_3rdparty_8xb32-aa_in1k_20220119-bf03951c.pth) | +| EfficientNet-B7 (AA + AdvProp)\* | 66.35 | 0.72 | 85.14 | 97.23 | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/efficientnet/efficientnet-b7_8xb32-01norm_in1k.py) | [model](https://download.openmmlab.com/mmclassification/v0/efficientnet/efficientnet-b7_3rdparty_8xb32-aa-advprop_in1k_20220119-c6dbff10.pth) | +| EfficientNet-B8 (AA + AdvProp)\* | 87.41 | 1.09 | 85.38 | 97.28 | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/efficientnet/efficientnet-b8_8xb32-01norm_in1k.py) | [model](https://download.openmmlab.com/mmclassification/v0/efficientnet/efficientnet-b8_3rdparty_8xb32-aa-advprop_in1k_20220119-297ce1b7.pth) | + +*Models with * are converted from the [official repo](https://github.com/tensorflow/tpu/tree/master/models/official/efficientnet). The config files of these models are only for inference. We don't ensure these config files' training accuracy and welcome you to contribute your reproduction results.* + +## Citation + +``` +@inproceedings{tan2019efficientnet, + title={Efficientnet: Rethinking model scaling for convolutional neural networks}, + author={Tan, Mingxing and Le, Quoc}, + booktitle={International Conference on Machine Learning}, + pages={6105--6114}, + year={2019}, + organization={PMLR} +} +``` diff --git a/openmmlab_test/mmclassification-0.24.1/configs/efficientnet/efficientnet-b0_8xb32-01norm_in1k.py b/openmmlab_test/mmclassification-0.24.1/configs/efficientnet/efficientnet-b0_8xb32-01norm_in1k.py new file mode 100644 index 00000000..fbb490d9 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/efficientnet/efficientnet-b0_8xb32-01norm_in1k.py @@ -0,0 +1,39 @@ +_base_ = [ + '../_base_/models/efficientnet_b0.py', + '../_base_/datasets/imagenet_bs32.py', + '../_base_/schedules/imagenet_bs256.py', + '../_base_/default_runtime.py', +] + +# dataset settings +dataset_type = 'ImageNet' +img_norm_cfg = dict( + mean=[127.5, 127.5, 127.5], std=[127.5, 127.5, 127.5], to_rgb=True) +train_pipeline = [ + dict(type='LoadImageFromFile'), + dict( + type='RandomResizedCrop', + size=224, + efficientnet_style=True, + interpolation='bicubic'), + dict(type='RandomFlip', flip_prob=0.5, direction='horizontal'), + dict(type='Normalize', **img_norm_cfg), + dict(type='ImageToTensor', keys=['img']), + dict(type='ToTensor', keys=['gt_label']), + dict(type='Collect', keys=['img', 'gt_label']) +] +test_pipeline = [ + dict(type='LoadImageFromFile'), + dict( + type='CenterCrop', + crop_size=224, + efficientnet_style=True, + interpolation='bicubic'), + dict(type='Normalize', **img_norm_cfg), + dict(type='ImageToTensor', keys=['img']), + dict(type='Collect', keys=['img']) +] +data = dict( + train=dict(pipeline=train_pipeline), + val=dict(pipeline=test_pipeline), + test=dict(pipeline=test_pipeline)) diff --git a/openmmlab_test/mmclassification-0.24.1/configs/efficientnet/efficientnet-b0_8xb32_in1k.py b/openmmlab_test/mmclassification-0.24.1/configs/efficientnet/efficientnet-b0_8xb32_in1k.py new file mode 100644 index 00000000..33931e5f --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/efficientnet/efficientnet-b0_8xb32_in1k.py @@ -0,0 +1,39 @@ +_base_ = [ + '../_base_/models/efficientnet_b0.py', + '../_base_/datasets/imagenet_bs32.py', + '../_base_/schedules/imagenet_bs256.py', + '../_base_/default_runtime.py', +] + +# dataset settings +dataset_type = 'ImageNet' +img_norm_cfg = dict( + mean=[123.675, 116.28, 103.53], std=[58.395, 57.12, 57.375], to_rgb=True) +train_pipeline = [ + dict(type='LoadImageFromFile'), + dict( + type='RandomResizedCrop', + size=224, + efficientnet_style=True, + interpolation='bicubic'), + dict(type='RandomFlip', flip_prob=0.5, direction='horizontal'), + dict(type='Normalize', **img_norm_cfg), + dict(type='ImageToTensor', keys=['img']), + dict(type='ToTensor', keys=['gt_label']), + dict(type='Collect', keys=['img', 'gt_label']) +] +test_pipeline = [ + dict(type='LoadImageFromFile'), + dict( + type='CenterCrop', + crop_size=224, + efficientnet_style=True, + interpolation='bicubic'), + dict(type='Normalize', **img_norm_cfg), + dict(type='ImageToTensor', keys=['img']), + dict(type='Collect', keys=['img']) +] +data = dict( + train=dict(pipeline=train_pipeline), + val=dict(pipeline=test_pipeline), + test=dict(pipeline=test_pipeline)) diff --git a/openmmlab_test/mmclassification-0.24.1/configs/efficientnet/efficientnet-b1_8xb32-01norm_in1k.py b/openmmlab_test/mmclassification-0.24.1/configs/efficientnet/efficientnet-b1_8xb32-01norm_in1k.py new file mode 100644 index 00000000..6b66395c --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/efficientnet/efficientnet-b1_8xb32-01norm_in1k.py @@ -0,0 +1,39 @@ +_base_ = [ + '../_base_/models/efficientnet_b1.py', + '../_base_/datasets/imagenet_bs32.py', + '../_base_/schedules/imagenet_bs256.py', + '../_base_/default_runtime.py', +] + +# dataset settings +dataset_type = 'ImageNet' +img_norm_cfg = dict( + mean=[127.5, 127.5, 127.5], std=[127.5, 127.5, 127.5], to_rgb=True) +train_pipeline = [ + dict(type='LoadImageFromFile'), + dict( + type='RandomResizedCrop', + size=240, + efficientnet_style=True, + interpolation='bicubic'), + dict(type='RandomFlip', flip_prob=0.5, direction='horizontal'), + dict(type='Normalize', **img_norm_cfg), + dict(type='ImageToTensor', keys=['img']), + dict(type='ToTensor', keys=['gt_label']), + dict(type='Collect', keys=['img', 'gt_label']) +] +test_pipeline = [ + dict(type='LoadImageFromFile'), + dict( + type='CenterCrop', + crop_size=240, + efficientnet_style=True, + interpolation='bicubic'), + dict(type='Normalize', **img_norm_cfg), + dict(type='ImageToTensor', keys=['img']), + dict(type='Collect', keys=['img']) +] +data = dict( + train=dict(pipeline=train_pipeline), + val=dict(pipeline=test_pipeline), + test=dict(pipeline=test_pipeline)) diff --git a/openmmlab_test/mmclassification-0.24.1/configs/efficientnet/efficientnet-b1_8xb32_in1k.py b/openmmlab_test/mmclassification-0.24.1/configs/efficientnet/efficientnet-b1_8xb32_in1k.py new file mode 100644 index 00000000..d702a150 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/efficientnet/efficientnet-b1_8xb32_in1k.py @@ -0,0 +1,39 @@ +_base_ = [ + '../_base_/models/efficientnet_b1.py', + '../_base_/datasets/imagenet_bs32.py', + '../_base_/schedules/imagenet_bs256.py', + '../_base_/default_runtime.py', +] + +# dataset settings +dataset_type = 'ImageNet' +img_norm_cfg = dict( + mean=[123.675, 116.28, 103.53], std=[58.395, 57.12, 57.375], to_rgb=True) +train_pipeline = [ + dict(type='LoadImageFromFile'), + dict( + type='RandomResizedCrop', + size=240, + efficientnet_style=True, + interpolation='bicubic'), + dict(type='RandomFlip', flip_prob=0.5, direction='horizontal'), + dict(type='Normalize', **img_norm_cfg), + dict(type='ImageToTensor', keys=['img']), + dict(type='ToTensor', keys=['gt_label']), + dict(type='Collect', keys=['img', 'gt_label']) +] +test_pipeline = [ + dict(type='LoadImageFromFile'), + dict( + type='CenterCrop', + crop_size=240, + efficientnet_style=True, + interpolation='bicubic'), + dict(type='Normalize', **img_norm_cfg), + dict(type='ImageToTensor', keys=['img']), + dict(type='Collect', keys=['img']) +] +data = dict( + train=dict(pipeline=train_pipeline), + val=dict(pipeline=test_pipeline), + test=dict(pipeline=test_pipeline)) diff --git a/openmmlab_test/mmclassification-0.24.1/configs/efficientnet/efficientnet-b2_8xb32-01norm_in1k.py b/openmmlab_test/mmclassification-0.24.1/configs/efficientnet/efficientnet-b2_8xb32-01norm_in1k.py new file mode 100644 index 00000000..ae8cda84 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/efficientnet/efficientnet-b2_8xb32-01norm_in1k.py @@ -0,0 +1,39 @@ +_base_ = [ + '../_base_/models/efficientnet_b2.py', + '../_base_/datasets/imagenet_bs32.py', + '../_base_/schedules/imagenet_bs256.py', + '../_base_/default_runtime.py', +] + +# dataset settings +dataset_type = 'ImageNet' +img_norm_cfg = dict( + mean=[127.5, 127.5, 127.5], std=[127.5, 127.5, 127.5], to_rgb=True) +train_pipeline = [ + dict(type='LoadImageFromFile'), + dict( + type='RandomResizedCrop', + size=260, + efficientnet_style=True, + interpolation='bicubic'), + dict(type='RandomFlip', flip_prob=0.5, direction='horizontal'), + dict(type='Normalize', **img_norm_cfg), + dict(type='ImageToTensor', keys=['img']), + dict(type='ToTensor', keys=['gt_label']), + dict(type='Collect', keys=['img', 'gt_label']) +] +test_pipeline = [ + dict(type='LoadImageFromFile'), + dict( + type='CenterCrop', + crop_size=260, + efficientnet_style=True, + interpolation='bicubic'), + dict(type='Normalize', **img_norm_cfg), + dict(type='ImageToTensor', keys=['img']), + dict(type='Collect', keys=['img']) +] +data = dict( + train=dict(pipeline=train_pipeline), + val=dict(pipeline=test_pipeline), + test=dict(pipeline=test_pipeline)) diff --git a/openmmlab_test/mmclassification-0.24.1/configs/efficientnet/efficientnet-b2_8xb32_in1k.py b/openmmlab_test/mmclassification-0.24.1/configs/efficientnet/efficientnet-b2_8xb32_in1k.py new file mode 100644 index 00000000..53f7c84d --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/efficientnet/efficientnet-b2_8xb32_in1k.py @@ -0,0 +1,39 @@ +_base_ = [ + '../_base_/models/efficientnet_b2.py', + '../_base_/datasets/imagenet_bs32.py', + '../_base_/schedules/imagenet_bs256.py', + '../_base_/default_runtime.py', +] + +# dataset settings +dataset_type = 'ImageNet' +img_norm_cfg = dict( + mean=[123.675, 116.28, 103.53], std=[58.395, 57.12, 57.375], to_rgb=True) +train_pipeline = [ + dict(type='LoadImageFromFile'), + dict( + type='RandomResizedCrop', + size=260, + efficientnet_style=True, + interpolation='bicubic'), + dict(type='RandomFlip', flip_prob=0.5, direction='horizontal'), + dict(type='Normalize', **img_norm_cfg), + dict(type='ImageToTensor', keys=['img']), + dict(type='ToTensor', keys=['gt_label']), + dict(type='Collect', keys=['img', 'gt_label']) +] +test_pipeline = [ + dict(type='LoadImageFromFile'), + dict( + type='CenterCrop', + crop_size=260, + efficientnet_style=True, + interpolation='bicubic'), + dict(type='Normalize', **img_norm_cfg), + dict(type='ImageToTensor', keys=['img']), + dict(type='Collect', keys=['img']) +] +data = dict( + train=dict(pipeline=train_pipeline), + val=dict(pipeline=test_pipeline), + test=dict(pipeline=test_pipeline)) diff --git a/openmmlab_test/mmclassification-0.24.1/configs/efficientnet/efficientnet-b3_8xb32-01norm_in1k.py b/openmmlab_test/mmclassification-0.24.1/configs/efficientnet/efficientnet-b3_8xb32-01norm_in1k.py new file mode 100644 index 00000000..dfd3f92c --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/efficientnet/efficientnet-b3_8xb32-01norm_in1k.py @@ -0,0 +1,39 @@ +_base_ = [ + '../_base_/models/efficientnet_b3.py', + '../_base_/datasets/imagenet_bs32.py', + '../_base_/schedules/imagenet_bs256.py', + '../_base_/default_runtime.py', +] + +# dataset settings +dataset_type = 'ImageNet' +img_norm_cfg = dict( + mean=[127.5, 127.5, 127.5], std=[127.5, 127.5, 127.5], to_rgb=True) +train_pipeline = [ + dict(type='LoadImageFromFile'), + dict( + type='RandomResizedCrop', + size=300, + efficientnet_style=True, + interpolation='bicubic'), + dict(type='RandomFlip', flip_prob=0.5, direction='horizontal'), + dict(type='Normalize', **img_norm_cfg), + dict(type='ImageToTensor', keys=['img']), + dict(type='ToTensor', keys=['gt_label']), + dict(type='Collect', keys=['img', 'gt_label']) +] +test_pipeline = [ + dict(type='LoadImageFromFile'), + dict( + type='CenterCrop', + crop_size=300, + efficientnet_style=True, + interpolation='bicubic'), + dict(type='Normalize', **img_norm_cfg), + dict(type='ImageToTensor', keys=['img']), + dict(type='Collect', keys=['img']) +] +data = dict( + train=dict(pipeline=train_pipeline), + val=dict(pipeline=test_pipeline), + test=dict(pipeline=test_pipeline)) diff --git a/openmmlab_test/mmclassification-0.24.1/configs/efficientnet/efficientnet-b3_8xb32_in1k.py b/openmmlab_test/mmclassification-0.24.1/configs/efficientnet/efficientnet-b3_8xb32_in1k.py new file mode 100644 index 00000000..28387138 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/efficientnet/efficientnet-b3_8xb32_in1k.py @@ -0,0 +1,39 @@ +_base_ = [ + '../_base_/models/efficientnet_b3.py', + '../_base_/datasets/imagenet_bs32.py', + '../_base_/schedules/imagenet_bs256.py', + '../_base_/default_runtime.py', +] + +# dataset settings +dataset_type = 'ImageNet' +img_norm_cfg = dict( + mean=[123.675, 116.28, 103.53], std=[58.395, 57.12, 57.375], to_rgb=True) +train_pipeline = [ + dict(type='LoadImageFromFile'), + dict( + type='RandomResizedCrop', + size=300, + efficientnet_style=True, + interpolation='bicubic'), + dict(type='RandomFlip', flip_prob=0.5, direction='horizontal'), + dict(type='Normalize', **img_norm_cfg), + dict(type='ImageToTensor', keys=['img']), + dict(type='ToTensor', keys=['gt_label']), + dict(type='Collect', keys=['img', 'gt_label']) +] +test_pipeline = [ + dict(type='LoadImageFromFile'), + dict( + type='CenterCrop', + crop_size=300, + efficientnet_style=True, + interpolation='bicubic'), + dict(type='Normalize', **img_norm_cfg), + dict(type='ImageToTensor', keys=['img']), + dict(type='Collect', keys=['img']) +] +data = dict( + train=dict(pipeline=train_pipeline), + val=dict(pipeline=test_pipeline), + test=dict(pipeline=test_pipeline)) diff --git a/openmmlab_test/mmclassification-0.24.1/configs/efficientnet/efficientnet-b4_8xb32-01norm_in1k.py b/openmmlab_test/mmclassification-0.24.1/configs/efficientnet/efficientnet-b4_8xb32-01norm_in1k.py new file mode 100644 index 00000000..333a19ac --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/efficientnet/efficientnet-b4_8xb32-01norm_in1k.py @@ -0,0 +1,39 @@ +_base_ = [ + '../_base_/models/efficientnet_b4.py', + '../_base_/datasets/imagenet_bs32.py', + '../_base_/schedules/imagenet_bs256.py', + '../_base_/default_runtime.py', +] + +# dataset settings +dataset_type = 'ImageNet' +img_norm_cfg = dict( + mean=[127.5, 127.5, 127.5], std=[127.5, 127.5, 127.5], to_rgb=True) +train_pipeline = [ + dict(type='LoadImageFromFile'), + dict( + type='RandomResizedCrop', + size=380, + efficientnet_style=True, + interpolation='bicubic'), + dict(type='RandomFlip', flip_prob=0.5, direction='horizontal'), + dict(type='Normalize', **img_norm_cfg), + dict(type='ImageToTensor', keys=['img']), + dict(type='ToTensor', keys=['gt_label']), + dict(type='Collect', keys=['img', 'gt_label']) +] +test_pipeline = [ + dict(type='LoadImageFromFile'), + dict( + type='CenterCrop', + crop_size=380, + efficientnet_style=True, + interpolation='bicubic'), + dict(type='Normalize', **img_norm_cfg), + dict(type='ImageToTensor', keys=['img']), + dict(type='Collect', keys=['img']) +] +data = dict( + train=dict(pipeline=train_pipeline), + val=dict(pipeline=test_pipeline), + test=dict(pipeline=test_pipeline)) diff --git a/openmmlab_test/mmclassification-0.24.1/configs/efficientnet/efficientnet-b4_8xb32_in1k.py b/openmmlab_test/mmclassification-0.24.1/configs/efficientnet/efficientnet-b4_8xb32_in1k.py new file mode 100644 index 00000000..82f06cde --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/efficientnet/efficientnet-b4_8xb32_in1k.py @@ -0,0 +1,39 @@ +_base_ = [ + '../_base_/models/efficientnet_b4.py', + '../_base_/datasets/imagenet_bs32.py', + '../_base_/schedules/imagenet_bs256.py', + '../_base_/default_runtime.py', +] + +# dataset settings +dataset_type = 'ImageNet' +img_norm_cfg = dict( + mean=[123.675, 116.28, 103.53], std=[58.395, 57.12, 57.375], to_rgb=True) +train_pipeline = [ + dict(type='LoadImageFromFile'), + dict( + type='RandomResizedCrop', + size=380, + efficientnet_style=True, + interpolation='bicubic'), + dict(type='RandomFlip', flip_prob=0.5, direction='horizontal'), + dict(type='Normalize', **img_norm_cfg), + dict(type='ImageToTensor', keys=['img']), + dict(type='ToTensor', keys=['gt_label']), + dict(type='Collect', keys=['img', 'gt_label']) +] +test_pipeline = [ + dict(type='LoadImageFromFile'), + dict( + type='CenterCrop', + crop_size=380, + efficientnet_style=True, + interpolation='bicubic'), + dict(type='Normalize', **img_norm_cfg), + dict(type='ImageToTensor', keys=['img']), + dict(type='Collect', keys=['img']) +] +data = dict( + train=dict(pipeline=train_pipeline), + val=dict(pipeline=test_pipeline), + test=dict(pipeline=test_pipeline)) diff --git a/openmmlab_test/mmclassification-0.24.1/configs/efficientnet/efficientnet-b5_8xb32-01norm_in1k.py b/openmmlab_test/mmclassification-0.24.1/configs/efficientnet/efficientnet-b5_8xb32-01norm_in1k.py new file mode 100644 index 00000000..f66855c5 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/efficientnet/efficientnet-b5_8xb32-01norm_in1k.py @@ -0,0 +1,39 @@ +_base_ = [ + '../_base_/models/efficientnet_b5.py', + '../_base_/datasets/imagenet_bs32.py', + '../_base_/schedules/imagenet_bs256.py', + '../_base_/default_runtime.py', +] + +# dataset settings +dataset_type = 'ImageNet' +img_norm_cfg = dict( + mean=[127.5, 127.5, 127.5], std=[127.5, 127.5, 127.5], to_rgb=True) +train_pipeline = [ + dict(type='LoadImageFromFile'), + dict( + type='RandomResizedCrop', + size=456, + efficientnet_style=True, + interpolation='bicubic'), + dict(type='RandomFlip', flip_prob=0.5, direction='horizontal'), + dict(type='Normalize', **img_norm_cfg), + dict(type='ImageToTensor', keys=['img']), + dict(type='ToTensor', keys=['gt_label']), + dict(type='Collect', keys=['img', 'gt_label']) +] +test_pipeline = [ + dict(type='LoadImageFromFile'), + dict( + type='CenterCrop', + crop_size=456, + efficientnet_style=True, + interpolation='bicubic'), + dict(type='Normalize', **img_norm_cfg), + dict(type='ImageToTensor', keys=['img']), + dict(type='Collect', keys=['img']) +] +data = dict( + train=dict(pipeline=train_pipeline), + val=dict(pipeline=test_pipeline), + test=dict(pipeline=test_pipeline)) diff --git a/openmmlab_test/mmclassification-0.24.1/configs/efficientnet/efficientnet-b5_8xb32_in1k.py b/openmmlab_test/mmclassification-0.24.1/configs/efficientnet/efficientnet-b5_8xb32_in1k.py new file mode 100644 index 00000000..9b0eaab0 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/efficientnet/efficientnet-b5_8xb32_in1k.py @@ -0,0 +1,39 @@ +_base_ = [ + '../_base_/models/efficientnet_b5.py', + '../_base_/datasets/imagenet_bs32.py', + '../_base_/schedules/imagenet_bs256.py', + '../_base_/default_runtime.py', +] + +# dataset settings +dataset_type = 'ImageNet' +img_norm_cfg = dict( + mean=[123.675, 116.28, 103.53], std=[58.395, 57.12, 57.375], to_rgb=True) +train_pipeline = [ + dict(type='LoadImageFromFile'), + dict( + type='RandomResizedCrop', + size=456, + efficientnet_style=True, + interpolation='bicubic'), + dict(type='RandomFlip', flip_prob=0.5, direction='horizontal'), + dict(type='Normalize', **img_norm_cfg), + dict(type='ImageToTensor', keys=['img']), + dict(type='ToTensor', keys=['gt_label']), + dict(type='Collect', keys=['img', 'gt_label']) +] +test_pipeline = [ + dict(type='LoadImageFromFile'), + dict( + type='CenterCrop', + crop_size=456, + efficientnet_style=True, + interpolation='bicubic'), + dict(type='Normalize', **img_norm_cfg), + dict(type='ImageToTensor', keys=['img']), + dict(type='Collect', keys=['img']) +] +data = dict( + train=dict(pipeline=train_pipeline), + val=dict(pipeline=test_pipeline), + test=dict(pipeline=test_pipeline)) diff --git a/openmmlab_test/mmclassification-0.24.1/configs/efficientnet/efficientnet-b6_8xb32-01norm_in1k.py b/openmmlab_test/mmclassification-0.24.1/configs/efficientnet/efficientnet-b6_8xb32-01norm_in1k.py new file mode 100644 index 00000000..da64e0ec --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/efficientnet/efficientnet-b6_8xb32-01norm_in1k.py @@ -0,0 +1,39 @@ +_base_ = [ + '../_base_/models/efficientnet_b6.py', + '../_base_/datasets/imagenet_bs32.py', + '../_base_/schedules/imagenet_bs256.py', + '../_base_/default_runtime.py', +] + +# dataset settings +dataset_type = 'ImageNet' +img_norm_cfg = dict( + mean=[127.5, 127.5, 127.5], std=[127.5, 127.5, 127.5], to_rgb=True) +train_pipeline = [ + dict(type='LoadImageFromFile'), + dict( + type='RandomResizedCrop', + size=528, + efficientnet_style=True, + interpolation='bicubic'), + dict(type='RandomFlip', flip_prob=0.5, direction='horizontal'), + dict(type='Normalize', **img_norm_cfg), + dict(type='ImageToTensor', keys=['img']), + dict(type='ToTensor', keys=['gt_label']), + dict(type='Collect', keys=['img', 'gt_label']) +] +test_pipeline = [ + dict(type='LoadImageFromFile'), + dict( + type='CenterCrop', + crop_size=528, + efficientnet_style=True, + interpolation='bicubic'), + dict(type='Normalize', **img_norm_cfg), + dict(type='ImageToTensor', keys=['img']), + dict(type='Collect', keys=['img']) +] +data = dict( + train=dict(pipeline=train_pipeline), + val=dict(pipeline=test_pipeline), + test=dict(pipeline=test_pipeline)) diff --git a/openmmlab_test/mmclassification-0.24.1/configs/efficientnet/efficientnet-b6_8xb32_in1k.py b/openmmlab_test/mmclassification-0.24.1/configs/efficientnet/efficientnet-b6_8xb32_in1k.py new file mode 100644 index 00000000..6e03bb4c --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/efficientnet/efficientnet-b6_8xb32_in1k.py @@ -0,0 +1,39 @@ +_base_ = [ + '../_base_/models/efficientnet_b6.py', + '../_base_/datasets/imagenet_bs32.py', + '../_base_/schedules/imagenet_bs256.py', + '../_base_/default_runtime.py', +] + +# dataset settings +dataset_type = 'ImageNet' +img_norm_cfg = dict( + mean=[123.675, 116.28, 103.53], std=[58.395, 57.12, 57.375], to_rgb=True) +train_pipeline = [ + dict(type='LoadImageFromFile'), + dict( + type='RandomResizedCrop', + size=528, + efficientnet_style=True, + interpolation='bicubic'), + dict(type='RandomFlip', flip_prob=0.5, direction='horizontal'), + dict(type='Normalize', **img_norm_cfg), + dict(type='ImageToTensor', keys=['img']), + dict(type='ToTensor', keys=['gt_label']), + dict(type='Collect', keys=['img', 'gt_label']) +] +test_pipeline = [ + dict(type='LoadImageFromFile'), + dict( + type='CenterCrop', + crop_size=528, + efficientnet_style=True, + interpolation='bicubic'), + dict(type='Normalize', **img_norm_cfg), + dict(type='ImageToTensor', keys=['img']), + dict(type='Collect', keys=['img']) +] +data = dict( + train=dict(pipeline=train_pipeline), + val=dict(pipeline=test_pipeline), + test=dict(pipeline=test_pipeline)) diff --git a/openmmlab_test/mmclassification-0.24.1/configs/efficientnet/efficientnet-b7_8xb32-01norm_in1k.py b/openmmlab_test/mmclassification-0.24.1/configs/efficientnet/efficientnet-b7_8xb32-01norm_in1k.py new file mode 100644 index 00000000..27c19fc7 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/efficientnet/efficientnet-b7_8xb32-01norm_in1k.py @@ -0,0 +1,39 @@ +_base_ = [ + '../_base_/models/efficientnet_b7.py', + '../_base_/datasets/imagenet_bs32.py', + '../_base_/schedules/imagenet_bs256.py', + '../_base_/default_runtime.py', +] + +# dataset settings +dataset_type = 'ImageNet' +img_norm_cfg = dict( + mean=[127.5, 127.5, 127.5], std=[127.5, 127.5, 127.5], to_rgb=True) +train_pipeline = [ + dict(type='LoadImageFromFile'), + dict( + type='RandomResizedCrop', + size=600, + efficientnet_style=True, + interpolation='bicubic'), + dict(type='RandomFlip', flip_prob=0.5, direction='horizontal'), + dict(type='Normalize', **img_norm_cfg), + dict(type='ImageToTensor', keys=['img']), + dict(type='ToTensor', keys=['gt_label']), + dict(type='Collect', keys=['img', 'gt_label']) +] +test_pipeline = [ + dict(type='LoadImageFromFile'), + dict( + type='CenterCrop', + crop_size=600, + efficientnet_style=True, + interpolation='bicubic'), + dict(type='Normalize', **img_norm_cfg), + dict(type='ImageToTensor', keys=['img']), + dict(type='Collect', keys=['img']) +] +data = dict( + train=dict(pipeline=train_pipeline), + val=dict(pipeline=test_pipeline), + test=dict(pipeline=test_pipeline)) diff --git a/openmmlab_test/mmclassification-0.24.1/configs/efficientnet/efficientnet-b7_8xb32_in1k.py b/openmmlab_test/mmclassification-0.24.1/configs/efficientnet/efficientnet-b7_8xb32_in1k.py new file mode 100644 index 00000000..5146383e --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/efficientnet/efficientnet-b7_8xb32_in1k.py @@ -0,0 +1,39 @@ +_base_ = [ + '../_base_/models/efficientnet_b7.py', + '../_base_/datasets/imagenet_bs32.py', + '../_base_/schedules/imagenet_bs256.py', + '../_base_/default_runtime.py', +] + +# dataset settings +dataset_type = 'ImageNet' +img_norm_cfg = dict( + mean=[123.675, 116.28, 103.53], std=[58.395, 57.12, 57.375], to_rgb=True) +train_pipeline = [ + dict(type='LoadImageFromFile'), + dict( + type='RandomResizedCrop', + size=600, + efficientnet_style=True, + interpolation='bicubic'), + dict(type='RandomFlip', flip_prob=0.5, direction='horizontal'), + dict(type='Normalize', **img_norm_cfg), + dict(type='ImageToTensor', keys=['img']), + dict(type='ToTensor', keys=['gt_label']), + dict(type='Collect', keys=['img', 'gt_label']) +] +test_pipeline = [ + dict(type='LoadImageFromFile'), + dict( + type='CenterCrop', + crop_size=600, + efficientnet_style=True, + interpolation='bicubic'), + dict(type='Normalize', **img_norm_cfg), + dict(type='ImageToTensor', keys=['img']), + dict(type='Collect', keys=['img']) +] +data = dict( + train=dict(pipeline=train_pipeline), + val=dict(pipeline=test_pipeline), + test=dict(pipeline=test_pipeline)) diff --git a/openmmlab_test/mmclassification-0.24.1/configs/efficientnet/efficientnet-b8_8xb32-01norm_in1k.py b/openmmlab_test/mmclassification-0.24.1/configs/efficientnet/efficientnet-b8_8xb32-01norm_in1k.py new file mode 100644 index 00000000..25540a1a --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/efficientnet/efficientnet-b8_8xb32-01norm_in1k.py @@ -0,0 +1,39 @@ +_base_ = [ + '../_base_/models/efficientnet_b8.py', + '../_base_/datasets/imagenet_bs32.py', + '../_base_/schedules/imagenet_bs256.py', + '../_base_/default_runtime.py', +] + +# dataset settings +dataset_type = 'ImageNet' +img_norm_cfg = dict( + mean=[127.5, 127.5, 127.5], std=[127.5, 127.5, 127.5], to_rgb=True) +train_pipeline = [ + dict(type='LoadImageFromFile'), + dict( + type='RandomResizedCrop', + size=672, + efficientnet_style=True, + interpolation='bicubic'), + dict(type='RandomFlip', flip_prob=0.5, direction='horizontal'), + dict(type='Normalize', **img_norm_cfg), + dict(type='ImageToTensor', keys=['img']), + dict(type='ToTensor', keys=['gt_label']), + dict(type='Collect', keys=['img', 'gt_label']) +] +test_pipeline = [ + dict(type='LoadImageFromFile'), + dict( + type='CenterCrop', + crop_size=672, + efficientnet_style=True, + interpolation='bicubic'), + dict(type='Normalize', **img_norm_cfg), + dict(type='ImageToTensor', keys=['img']), + dict(type='Collect', keys=['img']) +] +data = dict( + train=dict(pipeline=train_pipeline), + val=dict(pipeline=test_pipeline), + test=dict(pipeline=test_pipeline)) diff --git a/openmmlab_test/mmclassification-0.24.1/configs/efficientnet/efficientnet-b8_8xb32_in1k.py b/openmmlab_test/mmclassification-0.24.1/configs/efficientnet/efficientnet-b8_8xb32_in1k.py new file mode 100644 index 00000000..4ff28c01 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/efficientnet/efficientnet-b8_8xb32_in1k.py @@ -0,0 +1,39 @@ +_base_ = [ + '../_base_/models/efficientnet_b8.py', + '../_base_/datasets/imagenet_bs32.py', + '../_base_/schedules/imagenet_bs256.py', + '../_base_/default_runtime.py', +] + +# dataset settings +dataset_type = 'ImageNet' +img_norm_cfg = dict( + mean=[123.675, 116.28, 103.53], std=[58.395, 57.12, 57.375], to_rgb=True) +train_pipeline = [ + dict(type='LoadImageFromFile'), + dict( + type='RandomResizedCrop', + size=672, + efficientnet_style=True, + interpolation='bicubic'), + dict(type='RandomFlip', flip_prob=0.5, direction='horizontal'), + dict(type='Normalize', **img_norm_cfg), + dict(type='ImageToTensor', keys=['img']), + dict(type='ToTensor', keys=['gt_label']), + dict(type='Collect', keys=['img', 'gt_label']) +] +test_pipeline = [ + dict(type='LoadImageFromFile'), + dict( + type='CenterCrop', + crop_size=672, + efficientnet_style=True, + interpolation='bicubic'), + dict(type='Normalize', **img_norm_cfg), + dict(type='ImageToTensor', keys=['img']), + dict(type='Collect', keys=['img']) +] +data = dict( + train=dict(pipeline=train_pipeline), + val=dict(pipeline=test_pipeline), + test=dict(pipeline=test_pipeline)) diff --git a/openmmlab_test/mmclassification-0.24.1/configs/efficientnet/efficientnet-em_8xb32-01norm_in1k.py b/openmmlab_test/mmclassification-0.24.1/configs/efficientnet/efficientnet-em_8xb32-01norm_in1k.py new file mode 100644 index 00000000..faa53862 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/efficientnet/efficientnet-em_8xb32-01norm_in1k.py @@ -0,0 +1,39 @@ +_base_ = [ + '../_base_/models/efficientnet_em.py', + '../_base_/datasets/imagenet_bs32.py', + '../_base_/schedules/imagenet_bs256.py', + '../_base_/default_runtime.py', +] + +# dataset settings +dataset_type = 'ImageNet' +img_norm_cfg = dict( + mean=[127.5, 127.5, 127.5], std=[127.5, 127.5, 127.5], to_rgb=True) +train_pipeline = [ + dict(type='LoadImageFromFile'), + dict( + type='RandomResizedCrop', + size=240, + efficientnet_style=True, + interpolation='bicubic'), + dict(type='RandomFlip', flip_prob=0.5, direction='horizontal'), + dict(type='Normalize', **img_norm_cfg), + dict(type='ImageToTensor', keys=['img']), + dict(type='ToTensor', keys=['gt_label']), + dict(type='Collect', keys=['img', 'gt_label']) +] +test_pipeline = [ + dict(type='LoadImageFromFile'), + dict( + type='CenterCrop', + crop_size=240, + efficientnet_style=True, + interpolation='bicubic'), + dict(type='Normalize', **img_norm_cfg), + dict(type='ImageToTensor', keys=['img']), + dict(type='Collect', keys=['img']) +] +data = dict( + train=dict(pipeline=train_pipeline), + val=dict(pipeline=test_pipeline), + test=dict(pipeline=test_pipeline)) diff --git a/openmmlab_test/mmclassification-0.24.1/configs/efficientnet/efficientnet-es_8xb32-01norm_in1k.py b/openmmlab_test/mmclassification-0.24.1/configs/efficientnet/efficientnet-es_8xb32-01norm_in1k.py new file mode 100644 index 00000000..5f11746f --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/efficientnet/efficientnet-es_8xb32-01norm_in1k.py @@ -0,0 +1,39 @@ +_base_ = [ + '../_base_/models/efficientnet_es.py', + '../_base_/datasets/imagenet_bs32.py', + '../_base_/schedules/imagenet_bs256.py', + '../_base_/default_runtime.py', +] + +# dataset settings +dataset_type = 'ImageNet' +img_norm_cfg = dict( + mean=[127.5, 127.5, 127.5], std=[127.5, 127.5, 127.5], to_rgb=True) +train_pipeline = [ + dict(type='LoadImageFromFile'), + dict( + type='RandomResizedCrop', + size=224, + efficientnet_style=True, + interpolation='bicubic'), + dict(type='RandomFlip', flip_prob=0.5, direction='horizontal'), + dict(type='Normalize', **img_norm_cfg), + dict(type='ImageToTensor', keys=['img']), + dict(type='ToTensor', keys=['gt_label']), + dict(type='Collect', keys=['img', 'gt_label']) +] +test_pipeline = [ + dict(type='LoadImageFromFile'), + dict( + type='CenterCrop', + crop_size=224, + efficientnet_style=True, + interpolation='bicubic'), + dict(type='Normalize', **img_norm_cfg), + dict(type='ImageToTensor', keys=['img']), + dict(type='Collect', keys=['img']) +] +data = dict( + train=dict(pipeline=train_pipeline), + val=dict(pipeline=test_pipeline), + test=dict(pipeline=test_pipeline)) diff --git a/openmmlab_test/mmclassification-0.24.1/configs/efficientnet/metafile.yml b/openmmlab_test/mmclassification-0.24.1/configs/efficientnet/metafile.yml new file mode 100644 index 00000000..c8bbf0dd --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/efficientnet/metafile.yml @@ -0,0 +1,391 @@ +Collections: + - Name: EfficientNet + Metadata: + Training Data: ImageNet-1k + Architecture: + - 1x1 Convolution + - Average Pooling + - Convolution + - Dense Connections + - Dropout + - Inverted Residual Block + - RMSProp + - Squeeze-and-Excitation Block + - Swish + Paper: + URL: https://arxiv.org/abs/1905.11946v5 + Title: "EfficientNet: Rethinking Model Scaling for Convolutional Neural Networks" + README: configs/efficientnet/README.md + Code: + Version: v0.20.1 + URL: https://github.com/open-mmlab/mmclassification/blob/v0.20.1/mmcls/models/backbones/efficientnet.py + +Models: + - Name: efficientnet-b0_3rdparty_8xb32_in1k + Metadata: + FLOPs: 16481180 + Parameters: 5288548 + In Collections: EfficientNet + Results: + - Dataset: ImageNet-1k + Metrics: + Top 1 Accuracy: 76.74 + Top 5 Accuracy: 93.17 + Task: Image Classification + Weights: https://download.openmmlab.com/mmclassification/v0/efficientnet/efficientnet-b0_3rdparty_8xb32_in1k_20220119-a7e2a0b1.pth + Config: configs/efficientnet/efficientnet-b0_8xb32_in1k.py + Converted From: + Weights: https://storage.googleapis.com/cloud-tpu-checkpoints/efficientnet/ckpts/efficientnet-b0.tar.gz + Code: https://github.com/tensorflow/tpu/tree/master/models/official/efficientnet + - Name: efficientnet-b0_3rdparty_8xb32-aa_in1k + Metadata: + FLOPs: 16481180 + Parameters: 5288548 + In Collections: EfficientNet + Results: + - Dataset: ImageNet-1k + Metrics: + Top 1 Accuracy: 77.26 + Top 5 Accuracy: 93.41 + Task: Image Classification + Weights: https://download.openmmlab.com/mmclassification/v0/efficientnet/efficientnet-b0_3rdparty_8xb32-aa_in1k_20220119-8d939117.pth + Config: configs/efficientnet/efficientnet-b0_8xb32_in1k.py + Converted From: + Weights: https://storage.googleapis.com/cloud-tpu-checkpoints/efficientnet/ckptsaug/efficientnet-b0.tar.gz + Code: https://github.com/tensorflow/tpu/tree/master/models/official/efficientnet + - Name: efficientnet-b0_3rdparty_8xb32-aa-advprop_in1k + Metadata: + FLOPs: 16481180 + Parameters: 5288548 + In Collections: EfficientNet + Results: + - Dataset: ImageNet-1k + Metrics: + Top 1 Accuracy: 77.53 + Top 5 Accuracy: 93.61 + Task: Image Classification + Weights: https://download.openmmlab.com/mmclassification/v0/efficientnet/efficientnet-b0_3rdparty_8xb32-aa-advprop_in1k_20220119-26434485.pth + Config: configs/efficientnet/efficientnet-b0_8xb32-01norm_in1k.py + Converted From: + Weights: https://storage.googleapis.com/cloud-tpu-checkpoints/efficientnet/advprop/efficientnet-b0.tar.gz + Code: https://github.com/tensorflow/tpu/tree/master/models/official/efficientnet + - Name: efficientnet-b1_3rdparty_8xb32_in1k + Metadata: + FLOPs: 27052224 + Parameters: 7794184 + In Collections: EfficientNet + Results: + - Dataset: ImageNet-1k + Metrics: + Top 1 Accuracy: 78.68 + Top 5 Accuracy: 94.28 + Task: Image Classification + Weights: https://download.openmmlab.com/mmclassification/v0/efficientnet/efficientnet-b1_3rdparty_8xb32_in1k_20220119-002556d9.pth + Config: configs/efficientnet/efficientnet-b1_8xb32_in1k.py + Converted From: + Weights: https://storage.googleapis.com/cloud-tpu-checkpoints/efficientnet/ckpts/efficientnet-b1.tar.gz + Code: https://github.com/tensorflow/tpu/tree/master/models/official/efficientnet + - Name: efficientnet-b1_3rdparty_8xb32-aa_in1k + Metadata: + FLOPs: 27052224 + Parameters: 7794184 + In Collections: EfficientNet + Results: + - Dataset: ImageNet-1k + Metrics: + Top 1 Accuracy: 79.20 + Top 5 Accuracy: 94.42 + Task: Image Classification + Weights: https://download.openmmlab.com/mmclassification/v0/efficientnet/efficientnet-b1_3rdparty_8xb32-aa_in1k_20220119-619d8ae3.pth + Config: configs/efficientnet/efficientnet-b1_8xb32_in1k.py + Converted From: + Weights: https://storage.googleapis.com/cloud-tpu-checkpoints/efficientnet/ckptsaug/efficientnet-b1.tar.gz + Code: https://github.com/tensorflow/tpu/tree/master/models/official/efficientnet + - Name: efficientnet-b1_3rdparty_8xb32-aa-advprop_in1k + Metadata: + FLOPs: 27052224 + Parameters: 7794184 + In Collections: EfficientNet + Results: + - Dataset: ImageNet-1k + Metrics: + Top 1 Accuracy: 79.52 + Top 5 Accuracy: 94.43 + Task: Image Classification + Weights: https://download.openmmlab.com/mmclassification/v0/efficientnet/efficientnet-b1_3rdparty_8xb32-aa-advprop_in1k_20220119-5715267d.pth + Config: configs/efficientnet/efficientnet-b1_8xb32-01norm_in1k.py + Converted From: + Weights: https://storage.googleapis.com/cloud-tpu-checkpoints/efficientnet/advprop/efficientnet-b1.tar.gz + Code: https://github.com/tensorflow/tpu/tree/master/models/official/efficientnet + - Name: efficientnet-b2_3rdparty_8xb32_in1k + Metadata: + FLOPs: 34346386 + Parameters: 9109994 + In Collections: EfficientNet + Results: + - Dataset: ImageNet-1k + Metrics: + Top 1 Accuracy: 79.64 + Top 5 Accuracy: 94.80 + Task: Image Classification + Weights: https://download.openmmlab.com/mmclassification/v0/efficientnet/efficientnet-b2_3rdparty_8xb32_in1k_20220119-ea374a30.pth + Config: configs/efficientnet/efficientnet-b2_8xb32_in1k.py + Converted From: + Weights: https://storage.googleapis.com/cloud-tpu-checkpoints/efficientnet/ckpts/efficientnet-b2.tar.gz + Code: https://github.com/tensorflow/tpu/tree/master/models/official/efficientnet + - Name: efficientnet-b2_3rdparty_8xb32-aa_in1k + Metadata: + FLOPs: 34346386 + Parameters: 9109994 + In Collections: EfficientNet + Results: + - Dataset: ImageNet-1k + Metrics: + Top 1 Accuracy: 80.21 + Top 5 Accuracy: 94.96 + Task: Image Classification + Weights: https://download.openmmlab.com/mmclassification/v0/efficientnet/efficientnet-b2_3rdparty_8xb32-aa_in1k_20220119-dd61e80b.pth + Config: configs/efficientnet/efficientnet-b2_8xb32_in1k.py + Converted From: + Weights: https://storage.googleapis.com/cloud-tpu-checkpoints/efficientnet/ckptsaug/efficientnet-b2.tar.gz + Code: https://github.com/tensorflow/tpu/tree/master/models/official/efficientnet + - Name: efficientnet-b2_3rdparty_8xb32-aa-advprop_in1k + Metadata: + FLOPs: 34346386 + Parameters: 9109994 + In Collections: EfficientNet + Results: + - Dataset: ImageNet-1k + Metrics: + Top 1 Accuracy: 80.45 + Top 5 Accuracy: 95.07 + Task: Image Classification + Weights: https://download.openmmlab.com/mmclassification/v0/efficientnet/efficientnet-b2_3rdparty_8xb32-aa-advprop_in1k_20220119-1655338a.pth + Config: configs/efficientnet/efficientnet-b2_8xb32-01norm_in1k.py + Converted From: + Weights: https://storage.googleapis.com/cloud-tpu-checkpoints/efficientnet/advprop/efficientnet-b2.tar.gz + Code: https://github.com/tensorflow/tpu/tree/master/models/official/efficientnet + - Name: efficientnet-b3_3rdparty_8xb32_in1k + Metadata: + FLOPs: 58641904 + Parameters: 12233232 + In Collections: EfficientNet + Results: + - Dataset: ImageNet-1k + Metrics: + Top 1 Accuracy: 81.01 + Top 5 Accuracy: 95.34 + Task: Image Classification + Weights: https://download.openmmlab.com/mmclassification/v0/efficientnet/efficientnet-b3_3rdparty_8xb32_in1k_20220119-4b4d7487.pth + Config: configs/efficientnet/efficientnet-b3_8xb32_in1k.py + Converted From: + Weights: https://storage.googleapis.com/cloud-tpu-checkpoints/efficientnet/ckpts/efficientnet-b3.tar.gz + Code: https://github.com/tensorflow/tpu/tree/master/models/official/efficientnet + - Name: efficientnet-b3_3rdparty_8xb32-aa_in1k + Metadata: + FLOPs: 58641904 + Parameters: 12233232 + In Collections: EfficientNet + Results: + - Dataset: ImageNet-1k + Metrics: + Top 1 Accuracy: 81.58 + Top 5 Accuracy: 95.67 + Task: Image Classification + Weights: https://download.openmmlab.com/mmclassification/v0/efficientnet/efficientnet-b3_3rdparty_8xb32-aa_in1k_20220119-5b4887a0.pth + Config: configs/efficientnet/efficientnet-b3_8xb32_in1k.py + Converted From: + Weights: https://storage.googleapis.com/cloud-tpu-checkpoints/efficientnet/ckptsaug/efficientnet-b3.tar.gz + Code: https://github.com/tensorflow/tpu/tree/master/models/official/efficientnet + - Name: efficientnet-b3_3rdparty_8xb32-aa-advprop_in1k + Metadata: + FLOPs: 58641904 + Parameters: 12233232 + In Collections: EfficientNet + Results: + - Dataset: ImageNet-1k + Metrics: + Top 1 Accuracy: 81.81 + Top 5 Accuracy: 95.69 + Task: Image Classification + Weights: https://download.openmmlab.com/mmclassification/v0/efficientnet/efficientnet-b3_3rdparty_8xb32-aa-advprop_in1k_20220119-53b41118.pth + Config: configs/efficientnet/efficientnet-b3_8xb32-01norm_in1k.py + Converted From: + Weights: https://storage.googleapis.com/cloud-tpu-checkpoints/efficientnet/advprop/efficientnet-b3.tar.gz + Code: https://github.com/tensorflow/tpu/tree/master/models/official/efficientnet + - Name: efficientnet-b4_3rdparty_8xb32_in1k + Metadata: + FLOPs: 121870624 + Parameters: 19341616 + In Collections: EfficientNet + Results: + - Dataset: ImageNet-1k + Metrics: + Top 1 Accuracy: 82.57 + Top 5 Accuracy: 96.09 + Task: Image Classification + Weights: https://download.openmmlab.com/mmclassification/v0/efficientnet/efficientnet-b4_3rdparty_8xb32_in1k_20220119-81fd4077.pth + Config: configs/efficientnet/efficientnet-b4_8xb32_in1k.py + Converted From: + Weights: https://storage.googleapis.com/cloud-tpu-checkpoints/efficientnet/ckpts/efficientnet-b4.tar.gz + Code: https://github.com/tensorflow/tpu/tree/master/models/official/efficientnet + - Name: efficientnet-b4_3rdparty_8xb32-aa_in1k + Metadata: + FLOPs: 121870624 + Parameters: 19341616 + In Collections: EfficientNet + Results: + - Dataset: ImageNet-1k + Metrics: + Top 1 Accuracy: 82.95 + Top 5 Accuracy: 96.26 + Task: Image Classification + Weights: https://download.openmmlab.com/mmclassification/v0/efficientnet/efficientnet-b4_3rdparty_8xb32-aa_in1k_20220119-45b8bd2b.pth + Config: configs/efficientnet/efficientnet-b4_8xb32_in1k.py + Converted From: + Weights: https://storage.googleapis.com/cloud-tpu-checkpoints/efficientnet/ckptsaug/efficientnet-b4.tar.gz + Code: https://github.com/tensorflow/tpu/tree/master/models/official/efficientnet + - Name: efficientnet-b4_3rdparty_8xb32-aa-advprop_in1k + Metadata: + FLOPs: 121870624 + Parameters: 19341616 + In Collections: EfficientNet + Results: + - Dataset: ImageNet-1k + Metrics: + Top 1 Accuracy: 83.25 + Top 5 Accuracy: 96.44 + Task: Image Classification + Weights: https://download.openmmlab.com/mmclassification/v0/efficientnet/efficientnet-b4_3rdparty_8xb32-aa-advprop_in1k_20220119-38c2238c.pth + Config: configs/efficientnet/efficientnet-b4_8xb32-01norm_in1k.py + Converted From: + Weights: https://storage.googleapis.com/cloud-tpu-checkpoints/efficientnet/advprop/efficientnet-b4.tar.gz + Code: https://github.com/tensorflow/tpu/tree/master/models/official/efficientnet + - Name: efficientnet-b5_3rdparty_8xb32_in1k + Metadata: + FLOPs: 243879440 + Parameters: 30389784 + In Collections: EfficientNet + Results: + - Dataset: ImageNet-1k + Metrics: + Top 1 Accuracy: 83.18 + Top 5 Accuracy: 96.47 + Task: Image Classification + Weights: https://download.openmmlab.com/mmclassification/v0/efficientnet/efficientnet-b5_3rdparty_8xb32_in1k_20220119-e9814430.pth + Config: configs/efficientnet/efficientnet-b5_8xb32_in1k.py + Converted From: + Weights: https://storage.googleapis.com/cloud-tpu-checkpoints/efficientnet/ckpts/efficientnet-b5.tar.gz + Code: https://github.com/tensorflow/tpu/tree/master/models/official/efficientnet + - Name: efficientnet-b5_3rdparty_8xb32-aa_in1k + Metadata: + FLOPs: 243879440 + Parameters: 30389784 + In Collections: EfficientNet + Results: + - Dataset: ImageNet-1k + Metrics: + Top 1 Accuracy: 83.82 + Top 5 Accuracy: 96.76 + Task: Image Classification + Weights: https://download.openmmlab.com/mmclassification/v0/efficientnet/efficientnet-b5_3rdparty_8xb32-aa_in1k_20220119-2cab8b78.pth + Config: configs/efficientnet/efficientnet-b5_8xb32_in1k.py + Converted From: + Weights: https://storage.googleapis.com/cloud-tpu-checkpoints/efficientnet/ckptsaug/efficientnet-b5.tar.gz + Code: https://github.com/tensorflow/tpu/tree/master/models/official/efficientnet + - Name: efficientnet-b5_3rdparty_8xb32-aa-advprop_in1k + Metadata: + FLOPs: 243879440 + Parameters: 30389784 + In Collections: EfficientNet + Results: + - Dataset: ImageNet-1k + Metrics: + Top 1 Accuracy: 84.21 + Top 5 Accuracy: 96.98 + Task: Image Classification + Weights: https://download.openmmlab.com/mmclassification/v0/efficientnet/efficientnet-b5_3rdparty_8xb32-aa-advprop_in1k_20220119-f57a895a.pth + Config: configs/efficientnet/efficientnet-b5_8xb32-01norm_in1k.py + Converted From: + Weights: https://storage.googleapis.com/cloud-tpu-checkpoints/efficientnet/advprop/efficientnet-b5.tar.gz + Code: https://github.com/tensorflow/tpu/tree/master/models/official/efficientnet + - Name: efficientnet-b6_3rdparty_8xb32-aa_in1k + Metadata: + FLOPs: 412002408 + Parameters: 43040704 + In Collections: EfficientNet + Results: + - Dataset: ImageNet-1k + Metrics: + Top 1 Accuracy: 84.05 + Top 5 Accuracy: 96.82 + Task: Image Classification + Weights: https://download.openmmlab.com/mmclassification/v0/efficientnet/efficientnet-b6_3rdparty_8xb32-aa_in1k_20220119-45b03310.pth + Config: configs/efficientnet/efficientnet-b6_8xb32_in1k.py + Converted From: + Weights: https://storage.googleapis.com/cloud-tpu-checkpoints/efficientnet/ckptsaug/efficientnet-b6.tar.gz + Code: https://github.com/tensorflow/tpu/tree/master/models/official/efficientnet + - Name: efficientnet-b6_3rdparty_8xb32-aa-advprop_in1k + Metadata: + FLOPs: 412002408 + Parameters: 43040704 + In Collections: EfficientNet + Results: + - Dataset: ImageNet-1k + Metrics: + Top 1 Accuracy: 84.74 + Top 5 Accuracy: 97.14 + Task: Image Classification + Weights: https://download.openmmlab.com/mmclassification/v0/efficientnet/efficientnet-b6_3rdparty_8xb32-aa-advprop_in1k_20220119-bfe3485e.pth + Config: configs/efficientnet/efficientnet-b6_8xb32-01norm_in1k.py + Converted From: + Weights: https://storage.googleapis.com/cloud-tpu-checkpoints/efficientnet/advprop/efficientnet-b6.tar.gz + Code: https://github.com/tensorflow/tpu/tree/master/models/official/efficientnet + - Name: efficientnet-b7_3rdparty_8xb32-aa_in1k + Metadata: + FLOPs: 715526512 + Parameters: 66347960 + In Collections: EfficientNet + Results: + - Dataset: ImageNet-1k + Metrics: + Top 1 Accuracy: 84.38 + Top 5 Accuracy: 96.88 + Task: Image Classification + Weights: https://download.openmmlab.com/mmclassification/v0/efficientnet/efficientnet-b7_3rdparty_8xb32-aa_in1k_20220119-bf03951c.pth + Config: configs/efficientnet/efficientnet-b7_8xb32_in1k.py + Converted From: + Weights: https://storage.googleapis.com/cloud-tpu-checkpoints/efficientnet/ckptsaug/efficientnet-b7.tar.gz + Code: https://github.com/tensorflow/tpu/tree/master/models/official/efficientnet + - Name: efficientnet-b7_3rdparty_8xb32-aa-advprop_in1k + Metadata: + FLOPs: 715526512 + Parameters: 66347960 + In Collections: EfficientNet + Results: + - Dataset: ImageNet-1k + Metrics: + Top 1 Accuracy: 85.14 + Top 5 Accuracy: 97.23 + Task: Image Classification + Weights: https://download.openmmlab.com/mmclassification/v0/efficientnet/efficientnet-b7_3rdparty_8xb32-aa-advprop_in1k_20220119-c6dbff10.pth + Config: configs/efficientnet/efficientnet-b7_8xb32-01norm_in1k.py + Converted From: + Weights: https://storage.googleapis.com/cloud-tpu-checkpoints/efficientnet/advprop/efficientnet-b7.tar.gz + Code: https://github.com/tensorflow/tpu/tree/master/models/official/efficientnet + - Name: efficientnet-b8_3rdparty_8xb32-aa-advprop_in1k + Metadata: + FLOPs: 1092755326 + Parameters: 87413142 + In Collections: EfficientNet + Results: + - Dataset: ImageNet-1k + Metrics: + Top 1 Accuracy: 85.38 + Top 5 Accuracy: 97.28 + Task: Image Classification + Weights: https://download.openmmlab.com/mmclassification/v0/efficientnet/efficientnet-b8_3rdparty_8xb32-aa-advprop_in1k_20220119-297ce1b7.pth + Config: configs/efficientnet/efficientnet-b8_8xb32-01norm_in1k.py + Converted From: + Weights: https://storage.googleapis.com/cloud-tpu-checkpoints/efficientnet/advprop/efficientnet-b8.tar.gz + Code: https://github.com/tensorflow/tpu/tree/master/models/official/efficientnet diff --git a/openmmlab_test/mmclassification-0.24.1/configs/fp16/resnet50_b32x8_fp16_dynamic_imagenet.py b/openmmlab_test/mmclassification-0.24.1/configs/fp16/resnet50_b32x8_fp16_dynamic_imagenet.py new file mode 100644 index 00000000..9075a894 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/fp16/resnet50_b32x8_fp16_dynamic_imagenet.py @@ -0,0 +1,6 @@ +_base_ = '../resnet/resnet50_8xb32-fp16-dynamic_in1k.py' + +_deprecation_ = dict( + expected='../resnet/resnet50_8xb32-fp16-dynamic_in1k.py', + reference='https://github.com/open-mmlab/mmclassification/pull/508', +) diff --git a/openmmlab_test/mmclassification-0.24.1/configs/fp16/resnet50_b32x8_fp16_imagenet.py b/openmmlab_test/mmclassification-0.24.1/configs/fp16/resnet50_b32x8_fp16_imagenet.py new file mode 100644 index 00000000..a73a4097 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/fp16/resnet50_b32x8_fp16_imagenet.py @@ -0,0 +1,6 @@ +_base_ = '../resnet/resnet50_8xb32-fp16_in1k.py' + +_deprecation_ = dict( + expected='../resnet/resnet50_8xb32-fp16_in1k.py', + reference='https://github.com/open-mmlab/mmclassification/pull/508', +) diff --git a/openmmlab_test/mmclassification-0.24.1/configs/hornet/README.md b/openmmlab_test/mmclassification-0.24.1/configs/hornet/README.md new file mode 100644 index 00000000..7c1b9a9b --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/hornet/README.md @@ -0,0 +1,51 @@ +# HorNet + +> [HorNet: Efficient High-Order Spatial Interactions with Recursive Gated Convolutions](https://arxiv.org/pdf/2207.14284v2.pdf) + + + +## Abstract + +Recent progress in vision Transformers exhibits great success in various tasks driven by the new spatial modeling mechanism based on dot-product self-attention. In this paper, we show that the key ingredients behind the vision Transformers, namely input-adaptive, long-range and high-order spatial interactions, can also be efficiently implemented with a convolution-based framework. We present the Recursive Gated Convolution (g nConv) that performs high-order spatial interactions with gated convolutions and recursive designs. The new operation is highly flexible and customizable, which is compatible with various variants of convolution and extends the two-order interactions in self-attention to arbitrary orders without introducing significant extra computation. g nConv can serve as a plug-and-play module to improve various vision Transformers and convolution-based models. Based on the operation, we construct a new family of generic vision backbones named HorNet. Extensive experiments on ImageNet classification, COCO object detection and ADE20K semantic segmentation show HorNet outperform Swin Transformers and ConvNeXt by a significant margin with similar overall architecture and training configurations. HorNet also shows favorable scalability to more training data and a larger model size. Apart from the effectiveness in visual encoders, we also show g nConv can be applied to task-specific decoders and consistently improve dense prediction performance with less computation. Our results demonstrate that g nConv can be a new basic module for visual modeling that effectively combines the merits of both vision Transformers and CNNs. Code is available at https://github.com/raoyongming/HorNet. + +
+ +
+ +## Results and models + +### ImageNet-1k + +| Model | Pretrain | resolution | Params(M) | Flops(G) | Top-1 (%) | Top-5 (%) | Config | Download | +| :-----------: | :----------: | :--------: | :-------: | :------: | :-------: | :-------: | :--------------------------------------------------------------: | :----------------------------------------------------------------: | +| HorNet-T\* | From scratch | 224x224 | 22.41 | 3.98 | 82.84 | 96.24 | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/hornet/hornet-tiny_8xb128_in1k.py) | [model](https://download.openmmlab.com/mmclassification/v0/hornet/hornet-tiny_3rdparty_in1k_20220915-0e8eedff.pth) | +| HorNet-T-GF\* | From scratch | 224x224 | 22.99 | 3.9 | 82.98 | 96.38 | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/hornet/hornet-tiny-gf_8xb128_in1k.py) | [model](https://download.openmmlab.com/mmclassification/v0/hornet/hornet-tiny-gf_3rdparty_in1k_20220915-4c35a66b.pth) | +| HorNet-S\* | From scratch | 224x224 | 49.53 | 8.83 | 83.79 | 96.75 | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/hornet/hornet-small_8xb64_in1k.py) | [model](https://download.openmmlab.com/mmclassification/v0/hornet/hornet-small_3rdparty_in1k_20220915-5935f60f.pth) | +| HorNet-S-GF\* | From scratch | 224x224 | 50.4 | 8.71 | 83.98 | 96.77 | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/hornet/hornet-small-gf_8xb64_in1k.py) | [model](https://download.openmmlab.com/mmclassification/v0/hornet/hornet-small-gf_3rdparty_in1k_20220915-649ca492.pth) | +| HorNet-B\* | From scratch | 224x224 | 87.26 | 15.59 | 84.24 | 96.94 | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/hornet/hornet-base_8xb64_in1k.py) | [model](https://download.openmmlab.com/mmclassification/v0/hornet/hornet-base_3rdparty_in1k_20220915-a06176bb.pth) | +| HorNet-B-GF\* | From scratch | 224x224 | 88.42 | 15.42 | 84.32 | 96.95 | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/hornet/hornet-base-gf_8xb64_in1k.py) | [model](https://download.openmmlab.com/mmclassification/v0/hornet/hornet-base-gf_3rdparty_in1k_20220915-82c06fa7.pth) | + +\*Models with * are converted from [the official repo](https://github.com/raoyongming/HorNet). The config files of these models are only for validation. We don't ensure these config files' training accuracy and welcome you to contribute your reproduction results. + +### Pre-trained Models + +The pre-trained models on ImageNet-21k are used to fine-tune on the downstream tasks. + +| Model | Pretrain | resolution | Params(M) | Flops(G) | Download | +| :--------------: | :----------: | :--------: | :-------: | :------: | :------------------------------------------------------------------------------------------------------------------------: | +| HorNet-L\* | ImageNet-21k | 224x224 | 194.54 | 34.83 | [model](https://download.openmmlab.com/mmclassification/v0/hornet/hornet-large_3rdparty_in21k_20220909-9ccef421.pth) | +| HorNet-L-GF\* | ImageNet-21k | 224x224 | 196.29 | 34.58 | [model](https://download.openmmlab.com/mmclassification/v0/hornet/hornet-large-gf_3rdparty_in21k_20220909-3aea3b61.pth) | +| HorNet-L-GF384\* | ImageNet-21k | 384x384 | 201.23 | 101.63 | [model](https://download.openmmlab.com/mmclassification/v0/hornet/hornet-large-gf384_3rdparty_in21k_20220909-80894290.pth) | + +\*Models with * are converted from [the official repo](https://github.com/raoyongming/HorNet). + +## Citation + +``` +@article{rao2022hornet, + title={HorNet: Efficient High-Order Spatial Interactions with Recursive Gated Convolutions}, + author={Rao, Yongming and Zhao, Wenliang and Tang, Yansong and Zhou, Jie and Lim, Ser-Lam and Lu, Jiwen}, + journal={arXiv preprint arXiv:2207.14284}, + year={2022} +} +``` diff --git a/openmmlab_test/mmclassification-0.24.1/configs/hornet/hornet-base-gf_8xb64_in1k.py b/openmmlab_test/mmclassification-0.24.1/configs/hornet/hornet-base-gf_8xb64_in1k.py new file mode 100644 index 00000000..6c29de66 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/hornet/hornet-base-gf_8xb64_in1k.py @@ -0,0 +1,13 @@ +_base_ = [ + '../_base_/models/hornet/hornet-base-gf.py', + '../_base_/datasets/imagenet_bs64_swin_224.py', + '../_base_/schedules/imagenet_bs1024_adamw_swin.py', + '../_base_/default_runtime.py', +] + +data = dict(samples_per_gpu=64) + +optimizer = dict(lr=4e-3) +optimizer_config = dict(grad_clip=dict(max_norm=1.0), _delete_=True) + +custom_hooks = [dict(type='EMAHook', momentum=4e-5, priority='ABOVE_NORMAL')] diff --git a/openmmlab_test/mmclassification-0.24.1/configs/hornet/hornet-base_8xb64_in1k.py b/openmmlab_test/mmclassification-0.24.1/configs/hornet/hornet-base_8xb64_in1k.py new file mode 100644 index 00000000..969d8b95 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/hornet/hornet-base_8xb64_in1k.py @@ -0,0 +1,13 @@ +_base_ = [ + '../_base_/models/hornet/hornet-base.py', + '../_base_/datasets/imagenet_bs64_swin_224.py', + '../_base_/schedules/imagenet_bs1024_adamw_swin.py', + '../_base_/default_runtime.py', +] + +data = dict(samples_per_gpu=64) + +optimizer = dict(lr=4e-3) +optimizer_config = dict(grad_clip=dict(max_norm=5.0), _delete_=True) + +custom_hooks = [dict(type='EMAHook', momentum=4e-5, priority='ABOVE_NORMAL')] diff --git a/openmmlab_test/mmclassification-0.24.1/configs/hornet/hornet-small-gf_8xb64_in1k.py b/openmmlab_test/mmclassification-0.24.1/configs/hornet/hornet-small-gf_8xb64_in1k.py new file mode 100644 index 00000000..deb570eb --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/hornet/hornet-small-gf_8xb64_in1k.py @@ -0,0 +1,13 @@ +_base_ = [ + '../_base_/models/hornet/hornet-small-gf.py', + '../_base_/datasets/imagenet_bs64_swin_224.py', + '../_base_/schedules/imagenet_bs1024_adamw_swin.py', + '../_base_/default_runtime.py', +] + +data = dict(samples_per_gpu=64) + +optimizer = dict(lr=4e-3) +optimizer_config = dict(grad_clip=dict(max_norm=1.0), _delete_=True) + +custom_hooks = [dict(type='EMAHook', momentum=4e-5, priority='ABOVE_NORMAL')] diff --git a/openmmlab_test/mmclassification-0.24.1/configs/hornet/hornet-small_8xb64_in1k.py b/openmmlab_test/mmclassification-0.24.1/configs/hornet/hornet-small_8xb64_in1k.py new file mode 100644 index 00000000..c07fa60d --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/hornet/hornet-small_8xb64_in1k.py @@ -0,0 +1,13 @@ +_base_ = [ + '../_base_/models/hornet/hornet-small.py', + '../_base_/datasets/imagenet_bs64_swin_224.py', + '../_base_/schedules/imagenet_bs1024_adamw_swin.py', + '../_base_/default_runtime.py', +] + +data = dict(samples_per_gpu=64) + +optimizer = dict(lr=4e-3) +optimizer_config = dict(grad_clip=dict(max_norm=5.0), _delete_=True) + +custom_hooks = [dict(type='EMAHook', momentum=4e-5, priority='ABOVE_NORMAL')] diff --git a/openmmlab_test/mmclassification-0.24.1/configs/hornet/hornet-tiny-gf_8xb128_in1k.py b/openmmlab_test/mmclassification-0.24.1/configs/hornet/hornet-tiny-gf_8xb128_in1k.py new file mode 100644 index 00000000..3a1d1a7a --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/hornet/hornet-tiny-gf_8xb128_in1k.py @@ -0,0 +1,13 @@ +_base_ = [ + '../_base_/models/hornet/hornet-tiny-gf.py', + '../_base_/datasets/imagenet_bs64_swin_224.py', + '../_base_/schedules/imagenet_bs1024_adamw_swin.py', + '../_base_/default_runtime.py', +] + +data = dict(samples_per_gpu=128) + +optimizer = dict(lr=4e-3) +optimizer_config = dict(grad_clip=dict(max_norm=1.0), _delete_=True) + +custom_hooks = [dict(type='EMAHook', momentum=4e-5, priority='ABOVE_NORMAL')] diff --git a/openmmlab_test/mmclassification-0.24.1/configs/hornet/hornet-tiny_8xb128_in1k.py b/openmmlab_test/mmclassification-0.24.1/configs/hornet/hornet-tiny_8xb128_in1k.py new file mode 100644 index 00000000..69a7cdf0 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/hornet/hornet-tiny_8xb128_in1k.py @@ -0,0 +1,13 @@ +_base_ = [ + '../_base_/models/hornet/hornet-tiny.py', + '../_base_/datasets/imagenet_bs64_swin_224.py', + '../_base_/schedules/imagenet_bs1024_adamw_swin.py', + '../_base_/default_runtime.py', +] + +data = dict(samples_per_gpu=128) + +optimizer = dict(lr=4e-3) +optimizer_config = dict(grad_clip=dict(max_norm=100.0), _delete_=True) + +custom_hooks = [dict(type='EMAHook', momentum=4e-5, priority='ABOVE_NORMAL')] diff --git a/openmmlab_test/mmclassification-0.24.1/configs/hornet/metafile.yml b/openmmlab_test/mmclassification-0.24.1/configs/hornet/metafile.yml new file mode 100644 index 00000000..71207722 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/hornet/metafile.yml @@ -0,0 +1,97 @@ +Collections: + - Name: HorNet + Metadata: + Training Data: ImageNet-1k + Training Techniques: + - AdamW + - Weight Decay + Architecture: + - HorNet + - gnConv + Paper: + URL: https://arxiv.org/pdf/2207.14284v2.pdf + Title: "HorNet: Efficient High-Order Spatial Interactions with Recursive Gated Convolutions" + README: configs/hornet/README.md + Code: + Version: v0.24.0 + URL: https://github.com/open-mmlab/mmclassification/blob/v0.24.0/mmcls/models/backbones/hornet.py + +Models: + - Name: hornet-tiny_3rdparty_in1k + Metadata: + FLOPs: 3980000000 # 3.98G + Parameters: 22410000 # 22.41M + In Collection: HorNet + Results: + - Dataset: ImageNet-1k + Metrics: + Top 1 Accuracy: 82.84 + Top 5 Accuracy: 96.24 + Task: Image Classification + Weights: https://download.openmmlab.com/mmclassification/v0/hornet/hornet-tiny_3rdparty_in1k_20220915-0e8eedff.pth + Config: configs/hornet/hornet-tiny_8xb128_in1k.py + - Name: hornet-tiny-gf_3rdparty_in1k + Metadata: + FLOPs: 3900000000 # 3.9G + Parameters: 22990000 # 22.99M + In Collection: HorNet + Results: + - Dataset: ImageNet-1k + Metrics: + Top 1 Accuracy: 82.98 + Top 5 Accuracy: 96.38 + Task: Image Classification + Weights: https://download.openmmlab.com/mmclassification/v0/hornet/hornet-tiny-gf_3rdparty_in1k_20220915-4c35a66b.pth + Config: configs/hornet/hornet-tiny-gf_8xb128_in1k.py + - Name: hornet-small_3rdparty_in1k + Metadata: + FLOPs: 8830000000 # 8.83G + Parameters: 49530000 # 49.53M + In Collection: HorNet + Results: + - Dataset: ImageNet-1k + Metrics: + Top 1 Accuracy: 83.79 + Top 5 Accuracy: 96.75 + Task: Image Classification + Weights: https://download.openmmlab.com/mmclassification/v0/hornet/hornet-small_3rdparty_in1k_20220915-5935f60f.pth + Config: configs/hornet/hornet-small_8xb64_in1k.py + - Name: hornet-small-gf_3rdparty_in1k + Metadata: + FLOPs: 8710000000 # 8.71G + Parameters: 50400000 # 50.4M + In Collection: HorNet + Results: + - Dataset: ImageNet-1k + Metrics: + Top 1 Accuracy: 83.98 + Top 5 Accuracy: 96.77 + Task: Image Classification + Weights: https://download.openmmlab.com/mmclassification/v0/hornet/hornet-small-gf_3rdparty_in1k_20220915-649ca492.pth + Config: configs/hornet/hornet-small-gf_8xb64_in1k.py + - Name: hornet-base_3rdparty_in1k + Metadata: + FLOPs: 15590000000 # 15.59G + Parameters: 87260000 # 87.26M + In Collection: HorNet + Results: + - Dataset: ImageNet-1k + Metrics: + Top 1 Accuracy: 84.24 + Top 5 Accuracy: 96.94 + Task: Image Classification + Weights: https://download.openmmlab.com/mmclassification/v0/hornet/hornet-base_3rdparty_in1k_20220915-a06176bb.pth + Config: configs/hornet/hornet-base_8xb64_in1k.py + - Name: hornet-base-gf_3rdparty_in1k + Metadata: + FLOPs: 15420000000 # 15.42G + Parameters: 88420000 # 88.42M + In Collection: HorNet + Results: + - Dataset: ImageNet-1k + Metrics: + Top 1 Accuracy: 84.32 + Top 5 Accuracy: 96.95 + Task: Image Classification + Weights: https://download.openmmlab.com/mmclassification/v0/hornet/hornet-base-gf_3rdparty_in1k_20220915-82c06fa7.pth + Config: configs/hornet/hornet-base-gf_8xb64_in1k.py diff --git a/openmmlab_test/mmclassification-0.24.1/configs/hrnet/README.md b/openmmlab_test/mmclassification-0.24.1/configs/hrnet/README.md new file mode 100644 index 00000000..0a30ccd1 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/hrnet/README.md @@ -0,0 +1,44 @@ +# HRNet + +> [Deep High-Resolution Representation Learning for Visual Recognition](https://arxiv.org/abs/1908.07919v2) + + + +## Abstract + +High-resolution representations are essential for position-sensitive vision problems, such as human pose estimation, semantic segmentation, and object detection. Existing state-of-the-art frameworks first encode the input image as a low-resolution representation through a subnetwork that is formed by connecting high-to-low resolution convolutions *in series* (e.g., ResNet, VGGNet), and then recover the high-resolution representation from the encoded low-resolution representation. Instead, our proposed network, named as High-Resolution Network (HRNet), maintains high-resolution representations through the whole process. There are two key characteristics: (i) Connect the high-to-low resolution convolution streams *in parallel*; (ii) Repeatedly exchange the information across resolutions. The benefit is that the resulting representation is semantically richer and spatially more precise. We show the superiority of the proposed HRNet in a wide range of applications, including human pose estimation, semantic segmentation, and object detection, suggesting that the HRNet is a stronger backbone for computer vision problems. + +
+ +
+ +## Results and models + +## ImageNet-1k + +| Model | Params(M) | Flops(G) | Top-1 (%) | Top-5 (%) | Config | Download | +| :----------------: | :-------: | :------: | :-------: | :-------: | :----------------------------------------------------------------------: | :-------------------------------------------------------------------------: | +| HRNet-W18\* | 21.30 | 4.33 | 76.75 | 93.44 | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/hrnet/hrnet-w18_4xb32_in1k.py) | [model](https://download.openmmlab.com/mmclassification/v0/hrnet/hrnet-w18_3rdparty_8xb32_in1k_20220120-0c10b180.pth) | +| HRNet-W30\* | 37.71 | 8.17 | 78.19 | 94.22 | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/hrnet/hrnet-w30_4xb32_in1k.py) | [model](https://download.openmmlab.com/mmclassification/v0/hrnet/hrnet-w30_3rdparty_8xb32_in1k_20220120-8aa3832f.pth) | +| HRNet-W32\* | 41.23 | 8.99 | 78.44 | 94.19 | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/hrnet/hrnet-w32_4xb32_in1k.py) | [model](https://download.openmmlab.com/mmclassification/v0/hrnet/hrnet-w32_3rdparty_8xb32_in1k_20220120-c394f1ab.pth) | +| HRNet-W40\* | 57.55 | 12.77 | 78.94 | 94.47 | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/hrnet/hrnet-w40_4xb32_in1k.py) | [model](https://download.openmmlab.com/mmclassification/v0/hrnet/hrnet-w40_3rdparty_8xb32_in1k_20220120-9a2dbfc5.pth) | +| HRNet-W44\* | 67.06 | 14.96 | 78.88 | 94.37 | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/hrnet/hrnet-w44_4xb32_in1k.py) | [model](https://download.openmmlab.com/mmclassification/v0/hrnet/hrnet-w44_3rdparty_8xb32_in1k_20220120-35d07f73.pth) | +| HRNet-W48\* | 77.47 | 17.36 | 79.32 | 94.52 | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/hrnet/hrnet-w48_4xb32_in1k.py) | [model](https://download.openmmlab.com/mmclassification/v0/hrnet/hrnet-w48_3rdparty_8xb32_in1k_20220120-e555ef50.pth) | +| HRNet-W64\* | 128.06 | 29.00 | 79.46 | 94.65 | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/hrnet/hrnet-w64_4xb32_in1k.py) | [model](https://download.openmmlab.com/mmclassification/v0/hrnet/hrnet-w64_3rdparty_8xb32_in1k_20220120-19126642.pth) | +| HRNet-W18 (ssld)\* | 21.30 | 4.33 | 81.06 | 95.70 | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/hrnet/hrnet-w18_4xb32_in1k.py) | [model](https://download.openmmlab.com/mmclassification/v0/hrnet/hrnet-w18_3rdparty_8xb32-ssld_in1k_20220120-455f69ea.pth) | +| HRNet-W48 (ssld)\* | 77.47 | 17.36 | 83.63 | 96.79 | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/hrnet/hrnet-w48_4xb32_in1k.py) | [model](https://download.openmmlab.com/mmclassification/v0/hrnet/hrnet-w48_3rdparty_8xb32-ssld_in1k_20220120-d0459c38.pth) | + +*Models with * are converted from the [official repo](https://github.com/HRNet/HRNet-Image-Classification). The config files of these models are only for inference. We don't ensure these config files' training accuracy and welcome you to contribute your reproduction results.* + +## Citation + +``` +@article{WangSCJDZLMTWLX19, + title={Deep High-Resolution Representation Learning for Visual Recognition}, + author={Jingdong Wang and Ke Sun and Tianheng Cheng and + Borui Jiang and Chaorui Deng and Yang Zhao and Dong Liu and Yadong Mu and + Mingkui Tan and Xinggang Wang and Wenyu Liu and Bin Xiao}, + journal = {TPAMI} + year={2019} +} +``` diff --git a/openmmlab_test/mmclassification-0.24.1/configs/hrnet/hrnet-w18_4xb32_in1k.py b/openmmlab_test/mmclassification-0.24.1/configs/hrnet/hrnet-w18_4xb32_in1k.py new file mode 100644 index 00000000..a84fe67f --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/hrnet/hrnet-w18_4xb32_in1k.py @@ -0,0 +1,6 @@ +_base_ = [ + '../_base_/models/hrnet/hrnet-w18.py', + '../_base_/datasets/imagenet_bs32_pil_resize.py', + '../_base_/schedules/imagenet_bs256_coslr.py', + '../_base_/default_runtime.py' +] diff --git a/openmmlab_test/mmclassification-0.24.1/configs/hrnet/hrnet-w30_4xb32_in1k.py b/openmmlab_test/mmclassification-0.24.1/configs/hrnet/hrnet-w30_4xb32_in1k.py new file mode 100644 index 00000000..d2a9c0dd --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/hrnet/hrnet-w30_4xb32_in1k.py @@ -0,0 +1,6 @@ +_base_ = [ + '../_base_/models/hrnet/hrnet-w30.py', + '../_base_/datasets/imagenet_bs32_pil_resize.py', + '../_base_/schedules/imagenet_bs256_coslr.py', + '../_base_/default_runtime.py' +] diff --git a/openmmlab_test/mmclassification-0.24.1/configs/hrnet/hrnet-w32_4xb32_in1k.py b/openmmlab_test/mmclassification-0.24.1/configs/hrnet/hrnet-w32_4xb32_in1k.py new file mode 100644 index 00000000..91380a96 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/hrnet/hrnet-w32_4xb32_in1k.py @@ -0,0 +1,6 @@ +_base_ = [ + '../_base_/models/hrnet/hrnet-w32.py', + '../_base_/datasets/imagenet_bs32_pil_resize.py', + '../_base_/schedules/imagenet_bs256_coslr.py', + '../_base_/default_runtime.py' +] diff --git a/openmmlab_test/mmclassification-0.24.1/configs/hrnet/hrnet-w40_4xb32_in1k.py b/openmmlab_test/mmclassification-0.24.1/configs/hrnet/hrnet-w40_4xb32_in1k.py new file mode 100644 index 00000000..5d35cecd --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/hrnet/hrnet-w40_4xb32_in1k.py @@ -0,0 +1,6 @@ +_base_ = [ + '../_base_/models/hrnet/hrnet-w40.py', + '../_base_/datasets/imagenet_bs32_pil_resize.py', + '../_base_/schedules/imagenet_bs256_coslr.py', + '../_base_/default_runtime.py' +] diff --git a/openmmlab_test/mmclassification-0.24.1/configs/hrnet/hrnet-w44_4xb32_in1k.py b/openmmlab_test/mmclassification-0.24.1/configs/hrnet/hrnet-w44_4xb32_in1k.py new file mode 100644 index 00000000..ce6bb41a --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/hrnet/hrnet-w44_4xb32_in1k.py @@ -0,0 +1,6 @@ +_base_ = [ + '../_base_/models/hrnet/hrnet-w44.py', + '../_base_/datasets/imagenet_bs32_pil_resize.py', + '../_base_/schedules/imagenet_bs256_coslr.py', + '../_base_/default_runtime.py' +] diff --git a/openmmlab_test/mmclassification-0.24.1/configs/hrnet/hrnet-w48_4xb32_in1k.py b/openmmlab_test/mmclassification-0.24.1/configs/hrnet/hrnet-w48_4xb32_in1k.py new file mode 100644 index 00000000..6943892e --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/hrnet/hrnet-w48_4xb32_in1k.py @@ -0,0 +1,6 @@ +_base_ = [ + '../_base_/models/hrnet/hrnet-w48.py', + '../_base_/datasets/imagenet_bs32_pil_resize.py', + '../_base_/schedules/imagenet_bs256_coslr.py', + '../_base_/default_runtime.py' +] diff --git a/openmmlab_test/mmclassification-0.24.1/configs/hrnet/hrnet-w64_4xb32_in1k.py b/openmmlab_test/mmclassification-0.24.1/configs/hrnet/hrnet-w64_4xb32_in1k.py new file mode 100644 index 00000000..0009bc67 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/hrnet/hrnet-w64_4xb32_in1k.py @@ -0,0 +1,6 @@ +_base_ = [ + '../_base_/models/hrnet/hrnet-w64.py', + '../_base_/datasets/imagenet_bs32_pil_resize.py', + '../_base_/schedules/imagenet_bs256_coslr.py', + '../_base_/default_runtime.py' +] diff --git a/openmmlab_test/mmclassification-0.24.1/configs/hrnet/metafile.yml b/openmmlab_test/mmclassification-0.24.1/configs/hrnet/metafile.yml new file mode 100644 index 00000000..64fe1422 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/hrnet/metafile.yml @@ -0,0 +1,162 @@ +Collections: + - Name: HRNet + Metadata: + Training Data: ImageNet-1k + Architecture: + - Batch Normalization + - Convolution + - ReLU + - Residual Connection + Paper: + URL: https://arxiv.org/abs/1908.07919v2 + Title: "Deep High-Resolution Representation Learning for Visual Recognition" + README: configs/hrnet/README.md + Code: + URL: https://github.com/open-mmlab/mmclassification/blob/v0.20.1/mmcls/models/backbones/hrnet.py + Version: v0.20.1 + +Models: + - Name: hrnet-w18_3rdparty_8xb32_in1k + Metadata: + FLOPs: 4330397932 + Parameters: 21295164 + In Collection: HRNet + Results: + - Dataset: ImageNet-1k + Metrics: + Top 1 Accuracy: 76.75 + Top 5 Accuracy: 93.44 + Task: Image Classification + Weights: https://download.openmmlab.com/mmclassification/v0/hrnet/hrnet-w18_3rdparty_8xb32_in1k_20220120-0c10b180.pth + Config: configs/hrnet/hrnet-w18_4xb32_in1k.py + Converted From: + Weights: https://1drv.ms/u/s!Aus8VCZ_C_33cMkPimlmClRvmpw + Code: https://github.com/HRNet/HRNet-Image-Classification + - Name: hrnet-w30_3rdparty_8xb32_in1k + Metadata: + FLOPs: 8168305684 + Parameters: 37708380 + In Collection: HRNet + Results: + - Dataset: ImageNet-1k + Metrics: + Top 1 Accuracy: 78.19 + Top 5 Accuracy: 94.22 + Task: Image Classification + Weights: https://download.openmmlab.com/mmclassification/v0/hrnet/hrnet-w30_3rdparty_8xb32_in1k_20220120-8aa3832f.pth + Config: configs/hrnet/hrnet-w30_4xb32_in1k.py + Converted From: + Weights: https://1drv.ms/u/s!Aus8VCZ_C_33cQoACCEfrzcSaVI + Code: https://github.com/HRNet/HRNet-Image-Classification + - Name: hrnet-w32_3rdparty_8xb32_in1k + Metadata: + FLOPs: 8986267584 + Parameters: 41228840 + In Collection: HRNet + Results: + - Dataset: ImageNet-1k + Metrics: + Top 1 Accuracy: 78.44 + Top 5 Accuracy: 94.19 + Task: Image Classification + Weights: https://download.openmmlab.com/mmclassification/v0/hrnet/hrnet-w32_3rdparty_8xb32_in1k_20220120-c394f1ab.pth + Config: configs/hrnet/hrnet-w32_4xb32_in1k.py + Converted From: + Weights: https://1drv.ms/u/s!Aus8VCZ_C_33dYBMemi9xOUFR0w + Code: https://github.com/HRNet/HRNet-Image-Classification + - Name: hrnet-w40_3rdparty_8xb32_in1k + Metadata: + FLOPs: 12767574064 + Parameters: 57553320 + In Collection: HRNet + Results: + - Dataset: ImageNet-1k + Metrics: + Top 1 Accuracy: 78.94 + Top 5 Accuracy: 94.47 + Task: Image Classification + Weights: https://download.openmmlab.com/mmclassification/v0/hrnet/hrnet-w40_3rdparty_8xb32_in1k_20220120-9a2dbfc5.pth + Config: configs/hrnet/hrnet-w40_4xb32_in1k.py + Converted From: + Weights: https://1drv.ms/u/s!Aus8VCZ_C_33ck0gvo5jfoWBOPo + Code: https://github.com/HRNet/HRNet-Image-Classification + - Name: hrnet-w44_3rdparty_8xb32_in1k + Metadata: + FLOPs: 14963902632 + Parameters: 67061144 + In Collection: HRNet + Results: + - Dataset: ImageNet-1k + Metrics: + Top 1 Accuracy: 78.88 + Top 5 Accuracy: 94.37 + Task: Image Classification + Weights: https://download.openmmlab.com/mmclassification/v0/hrnet/hrnet-w44_3rdparty_8xb32_in1k_20220120-35d07f73.pth + Config: configs/hrnet/hrnet-w44_4xb32_in1k.py + Converted From: + Weights: https://1drv.ms/u/s!Aus8VCZ_C_33czZQ0woUb980gRs + Code: https://github.com/HRNet/HRNet-Image-Classification + - Name: hrnet-w48_3rdparty_8xb32_in1k + Metadata: + FLOPs: 17364014752 + Parameters: 77466024 + In Collection: HRNet + Results: + - Dataset: ImageNet-1k + Metrics: + Top 1 Accuracy: 79.32 + Top 5 Accuracy: 94.52 + Task: Image Classification + Weights: https://download.openmmlab.com/mmclassification/v0/hrnet/hrnet-w48_3rdparty_8xb32_in1k_20220120-e555ef50.pth + Config: configs/hrnet/hrnet-w48_4xb32_in1k.py + Converted From: + Weights: https://1drv.ms/u/s!Aus8VCZ_C_33dKvqI6pBZlifgJk + Code: https://github.com/HRNet/HRNet-Image-Classification + - Name: hrnet-w64_3rdparty_8xb32_in1k + Metadata: + FLOPs: 29002298752 + Parameters: 128056104 + In Collection: HRNet + Results: + - Dataset: ImageNet-1k + Metrics: + Top 1 Accuracy: 79.46 + Top 5 Accuracy: 94.65 + Task: Image Classification + Weights: https://download.openmmlab.com/mmclassification/v0/hrnet/hrnet-w64_3rdparty_8xb32_in1k_20220120-19126642.pth + Config: configs/hrnet/hrnet-w64_4xb32_in1k.py + Converted From: + Weights: https://1drv.ms/u/s!Aus8VCZ_C_33gQbJsUPTIj3rQu99 + Code: https://github.com/HRNet/HRNet-Image-Classification + - Name: hrnet-w18_3rdparty_8xb32-ssld_in1k + Metadata: + FLOPs: 4330397932 + Parameters: 21295164 + In Collection: HRNet + Results: + - Dataset: ImageNet-1k + Metrics: + Top 1 Accuracy: 81.06 + Top 5 Accuracy: 95.7 + Task: Image Classification + Weights: https://download.openmmlab.com/mmclassification/v0/hrnet/hrnet-w18_3rdparty_8xb32-ssld_in1k_20220120-455f69ea.pth + Config: configs/hrnet/hrnet-w18_4xb32_in1k.py + Converted From: + Weights: https://github.com/HRNet/HRNet-Image-Classification/releases/download/PretrainedWeights/HRNet_W18_C_ssld_pretrained.pth + Code: https://github.com/HRNet/HRNet-Image-Classification + - Name: hrnet-w48_3rdparty_8xb32-ssld_in1k + Metadata: + FLOPs: 17364014752 + Parameters: 77466024 + In Collection: HRNet + Results: + - Dataset: ImageNet-1k + Metrics: + Top 1 Accuracy: 83.63 + Top 5 Accuracy: 96.79 + Task: Image Classification + Weights: https://download.openmmlab.com/mmclassification/v0/hrnet/hrnet-w48_3rdparty_8xb32-ssld_in1k_20220120-d0459c38.pth + Config: configs/hrnet/hrnet-w48_4xb32_in1k.py + Converted From: + Weights: https://github.com/HRNet/HRNet-Image-Classification/releases/download/PretrainedWeights/HRNet_W48_C_ssld_pretrained.pth + Code: https://github.com/HRNet/HRNet-Image-Classification diff --git a/openmmlab_test/mmclassification-0.24.1/configs/lenet/README.md b/openmmlab_test/mmclassification-0.24.1/configs/lenet/README.md new file mode 100644 index 00000000..2cd68eac --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/lenet/README.md @@ -0,0 +1,28 @@ +# LeNet + +> [Backpropagation Applied to Handwritten Zip Code Recognition](https://ieeexplore.ieee.org/document/6795724) + + + +## Abstract + +The ability of learning networks to generalize can be greatly enhanced by providing constraints from the task domain. This paper demonstrates how such constraints can be integrated into a backpropagation network through the architecture of the network. This approach has been successfully applied to the recognition of handwritten zip code digits provided by the U.S. Postal Service. A single network learns the entire recognition operation, going from the normalized image of the character to the final classification. + +
+ +
+ +## Citation + +``` +@ARTICLE{6795724, + author={Y. {LeCun} and B. {Boser} and J. S. {Denker} and D. {Henderson} and R. E. {Howard} and W. {Hubbard} and L. D. {Jackel}}, + journal={Neural Computation}, + title={Backpropagation Applied to Handwritten Zip Code Recognition}, + year={1989}, + volume={1}, + number={4}, + pages={541-551}, + doi={10.1162/neco.1989.1.4.541}} +} +``` diff --git a/openmmlab_test/mmclassification-speed-benchmark/configs/lenet/lenet5_mnist.py b/openmmlab_test/mmclassification-0.24.1/configs/lenet/lenet5_mnist.py similarity index 100% rename from openmmlab_test/mmclassification-speed-benchmark/configs/lenet/lenet5_mnist.py rename to openmmlab_test/mmclassification-0.24.1/configs/lenet/lenet5_mnist.py diff --git a/openmmlab_test/mmclassification-0.24.1/configs/mlp_mixer/README.md b/openmmlab_test/mmclassification-0.24.1/configs/mlp_mixer/README.md new file mode 100644 index 00000000..5ec98871 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/mlp_mixer/README.md @@ -0,0 +1,37 @@ +# Mlp-Mixer + +> [MLP-Mixer: An all-MLP Architecture for Vision](https://arxiv.org/abs/2105.01601) + + + +## Abstract + +Convolutional Neural Networks (CNNs) are the go-to model for computer vision. Recently, attention-based networks, such as the Vision Transformer, have also become popular. In this paper we show that while convolutions and attention are both sufficient for good performance, neither of them are necessary. We present MLP-Mixer, an architecture based exclusively on multi-layer perceptrons (MLPs). MLP-Mixer contains two types of layers: one with MLPs applied independently to image patches (i.e. "mixing" the per-location features), and one with MLPs applied across patches (i.e. "mixing" spatial information). When trained on large datasets, or with modern regularization schemes, MLP-Mixer attains competitive scores on image classification benchmarks, with pre-training and inference cost comparable to state-of-the-art models. We hope that these results spark further research beyond the realms of well established CNNs and Transformers. + +
+ +
+ +## Results and models + +### ImageNet-1k + +| Model | Params(M) | Flops(G) | Top-1 (%) | Top-5 (%) | Config | Download | +| :----------: | :-------: | :------: | :-------: | :-------: | :-------------------------------------------------------------------------: | :----------------------------------------------------------------------------: | +| Mixer-B/16\* | 59.88 | 12.61 | 76.68 | 92.25 | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/mlp_mixer/mlp-mixer-base-p16_64xb64_in1k.py) | [model](https://download.openmmlab.com/mmclassification/v0/mlp-mixer/mixer-base-p16_3rdparty_64xb64_in1k_20211124-1377e3e0.pth) | +| Mixer-L/16\* | 208.2 | 44.57 | 72.34 | 88.02 | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/mlp_mixer/mlp-mixer-large-p16_64xb64_in1k.py) | [model](https://download.openmmlab.com/mmclassification/v0/mlp-mixer/mixer-large-p16_3rdparty_64xb64_in1k_20211124-5a2519d2.pth) | + +*Models with * are converted from [timm](https://github.com/rwightman/pytorch-image-models/blob/master/timm/models/mlp_mixer.py). The config files of these models are only for validation. We don't ensure these config files' training accuracy and welcome you to contribute your reproduction results.* + +## Citation + +``` +@misc{tolstikhin2021mlpmixer, + title={MLP-Mixer: An all-MLP Architecture for Vision}, + author={Ilya Tolstikhin and Neil Houlsby and Alexander Kolesnikov and Lucas Beyer and Xiaohua Zhai and Thomas Unterthiner and Jessica Yung and Andreas Steiner and Daniel Keysers and Jakob Uszkoreit and Mario Lucic and Alexey Dosovitskiy}, + year={2021}, + eprint={2105.01601}, + archivePrefix={arXiv}, + primaryClass={cs.CV} +} +``` diff --git a/openmmlab_test/mmclassification-0.24.1/configs/mlp_mixer/metafile.yml b/openmmlab_test/mmclassification-0.24.1/configs/mlp_mixer/metafile.yml new file mode 100644 index 00000000..e8efa085 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/mlp_mixer/metafile.yml @@ -0,0 +1,50 @@ +Collections: + - Name: MLP-Mixer + Metadata: + Training Data: ImageNet-1k + Architecture: + - MLP + - Layer Normalization + - Dropout + Paper: + URL: https://arxiv.org/abs/2105.01601 + Title: "MLP-Mixer: An all-MLP Architecture for Vision" + README: configs/mlp_mixer/README.md + Code: + URL: https://github.com/open-mmlab/mmclassification/blob/v0.18.0/mmcls/models/backbones/mlp_mixer.py + Version: v0.18.0 + +Models: + - Name: mlp-mixer-base-p16_3rdparty_64xb64_in1k + In Collection: MLP-Mixer + Config: configs/mlp_mixer/mlp-mixer-base-p16_64xb64_in1k.py + Metadata: + FLOPs: 12610000000 # 12.61 G + Parameters: 59880000 # 59.88 M + Results: + - Dataset: ImageNet-1k + Metrics: + Top 1 Accuracy: 76.68 + Top 5 Accuracy: 92.25 + Task: Image Classification + Weights: https://download.openmmlab.com/mmclassification/v0/mlp-mixer/mixer-base-p16_3rdparty_64xb64_in1k_20211124-1377e3e0.pth + Converted From: + Weights: https://github.com/rwightman/pytorch-image-models/releases/download/v0.1-vitjx/jx_mixer_b16_224-76587d61.pth + Code: https://github.com/rwightman/pytorch-image-models/blob/master/timm/models/mlp_mixer.py#L70 + + - Name: mlp-mixer-large-p16_3rdparty_64xb64_in1k + In Collection: MLP-Mixer + Config: configs/mlp_mixer/mlp-mixer-large-p16_64xb64_in1k.py + Metadata: + FLOPs: 44570000000 # 44.57 G + Parameters: 208200000 # 208.2 M + Results: + - Dataset: ImageNet-1k + Metrics: + Top 1 Accuracy: 72.34 + Top 5 Accuracy: 88.02 + Task: Image Classification + Weights: https://download.openmmlab.com/mmclassification/v0/mlp-mixer/mixer-large-p16_3rdparty_64xb64_in1k_20211124-5a2519d2.pth + Converted From: + Weights: https://github.com/rwightman/pytorch-image-models/releases/download/v0.1-vitjx/jx_mixer_b16_224_in21k-617b3de2.pth + Code: https://github.com/rwightman/pytorch-image-models/blob/master/timm/models/mlp_mixer.py#L73 diff --git a/openmmlab_test/mmclassification-0.24.1/configs/mlp_mixer/mlp-mixer-base-p16_64xb64_in1k.py b/openmmlab_test/mmclassification-0.24.1/configs/mlp_mixer/mlp-mixer-base-p16_64xb64_in1k.py new file mode 100644 index 00000000..e35dae55 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/mlp_mixer/mlp-mixer-base-p16_64xb64_in1k.py @@ -0,0 +1,6 @@ +_base_ = [ + '../_base_/models/mlp_mixer_base_patch16.py', + '../_base_/datasets/imagenet_bs64_mixer_224.py', + '../_base_/schedules/imagenet_bs4096_AdamW.py', + '../_base_/default_runtime.py', +] diff --git a/openmmlab_test/mmclassification-0.24.1/configs/mlp_mixer/mlp-mixer-large-p16_64xb64_in1k.py b/openmmlab_test/mmclassification-0.24.1/configs/mlp_mixer/mlp-mixer-large-p16_64xb64_in1k.py new file mode 100644 index 00000000..459563c8 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/mlp_mixer/mlp-mixer-large-p16_64xb64_in1k.py @@ -0,0 +1,6 @@ +_base_ = [ + '../_base_/models/mlp_mixer_large_patch16.py', + '../_base_/datasets/imagenet_bs64_mixer_224.py', + '../_base_/schedules/imagenet_bs4096_AdamW.py', + '../_base_/default_runtime.py', +] diff --git a/openmmlab_test/mmclassification-0.24.1/configs/mobilenet_v2/README.md b/openmmlab_test/mmclassification-0.24.1/configs/mobilenet_v2/README.md new file mode 100644 index 00000000..675c8dd4 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/mobilenet_v2/README.md @@ -0,0 +1,38 @@ +# MobileNet V2 + +> [MobileNetV2: Inverted Residuals and Linear Bottlenecks](https://arxiv.org/abs/1801.04381) + + + +## Abstract + +In this paper we describe a new mobile architecture, MobileNetV2, that improves the state of the art performance of mobile models on multiple tasks and benchmarks as well as across a spectrum of different model sizes. We also describe efficient ways of applying these mobile models to object detection in a novel framework we call SSDLite. Additionally, we demonstrate how to build mobile semantic segmentation models through a reduced form of DeepLabv3 which we call Mobile DeepLabv3. + +The MobileNetV2 architecture is based on an inverted residual structure where the input and output of the residual block are thin bottleneck layers opposite to traditional residual models which use expanded representations in the input an MobileNetV2 uses lightweight depthwise convolutions to filter features in the intermediate expansion layer. Additionally, we find that it is important to remove non-linearities in the narrow layers in order to maintain representational power. We demonstrate that this improves performance and provide an intuition that led to this design. Finally, our approach allows decoupling of the input/output domains from the expressiveness of the transformation, which provides a convenient framework for further analysis. We measure our performance on Imagenet classification, COCO object detection, VOC image segmentation. We evaluate the trade-offs between accuracy, and number of operations measured by multiply-adds (MAdd), as well as the number of parameters + +
+ +
+ +## Results and models + +### ImageNet-1k + +| Model | Params(M) | Flops(G) | Top-1 (%) | Top-5 (%) | Config | Download | +| :----------: | :-------: | :------: | :-------: | :-------: | :-------------------------------------------------------------------------: | :----------------------------------------------------------------------------: | +| MobileNet V2 | 3.5 | 0.319 | 71.86 | 90.42 | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/mobilenet_v2/mobilenet-v2_8xb32_in1k.py) | [model](https://download.openmmlab.com/mmclassification/v0/mobilenet_v2/mobilenet_v2_batch256_imagenet_20200708-3b2dc3af.pth) \| [log](https://download.openmmlab.com/mmclassification/v0/mobilenet_v2/mobilenet_v2_batch256_imagenet_20200708-3b2dc3af.log.json) | + +## Citation + +``` +@INPROCEEDINGS{8578572, + author={M. {Sandler} and A. {Howard} and M. {Zhu} and A. {Zhmoginov} and L. {Chen}}, + booktitle={2018 IEEE/CVF Conference on Computer Vision and Pattern Recognition}, + title={MobileNetV2: Inverted Residuals and Linear Bottlenecks}, + year={2018}, + volume={}, + number={}, + pages={4510-4520}, + doi={10.1109/CVPR.2018.00474}} +} +``` diff --git a/openmmlab_test/mmclassification-0.24.1/configs/mobilenet_v2/metafile.yml b/openmmlab_test/mmclassification-0.24.1/configs/mobilenet_v2/metafile.yml new file mode 100644 index 00000000..e16557fb --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/mobilenet_v2/metafile.yml @@ -0,0 +1,34 @@ +Collections: + - Name: MobileNet V2 + Metadata: + Training Data: ImageNet-1k + Training Techniques: + - SGD with Momentum + - Weight Decay + Training Resources: 8x V100 GPUs + Epochs: 300 + Batch Size: 256 + Architecture: + - MobileNet V2 + Paper: + URL: https://arxiv.org/abs/1801.04381 + Title: "MobileNetV2: Inverted Residuals and Linear Bottlenecks" + README: configs/mobilenet_v2/README.md + Code: + URL: https://github.com/open-mmlab/mmclassification/blob/v0.15.0/mmcls/models/backbones/mobilenet_v2.py#L101 + Version: v0.15.0 + +Models: + - Name: mobilenet-v2_8xb32_in1k + Metadata: + FLOPs: 319000000 + Parameters: 3500000 + In Collection: MobileNet V2 + Results: + - Dataset: ImageNet-1k + Metrics: + Top 1 Accuracy: 71.86 + Top 5 Accuracy: 90.42 + Task: Image Classification + Weights: https://download.openmmlab.com/mmclassification/v0/mobilenet_v2/mobilenet_v2_batch256_imagenet_20200708-3b2dc3af.pth + Config: configs/mobilenet_v2/mobilenet-v2_8xb32_in1k.py diff --git a/openmmlab_test/mmclassification-0.24.1/configs/mobilenet_v2/mobilenet-v2_8xb32_in1k.py b/openmmlab_test/mmclassification-0.24.1/configs/mobilenet_v2/mobilenet-v2_8xb32_in1k.py new file mode 100644 index 00000000..88eaad52 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/mobilenet_v2/mobilenet-v2_8xb32_in1k.py @@ -0,0 +1,8 @@ +_base_ = [ + '../_base_/models/mobilenet_v2_1x.py', + '../_base_/datasets/imagenet_bs32_pil_resize.py', + '../_base_/schedules/imagenet_bs256_epochstep.py', + '../_base_/default_runtime.py' +] + +#fp16 = dict(loss_scale=512.) diff --git a/openmmlab_test/mmclassification-0.24.1/configs/mobilenet_v2/mobilenet_v2_b32x8_imagenet.py b/openmmlab_test/mmclassification-0.24.1/configs/mobilenet_v2/mobilenet_v2_b32x8_imagenet.py new file mode 100644 index 00000000..26c2b6de --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/mobilenet_v2/mobilenet_v2_b32x8_imagenet.py @@ -0,0 +1,6 @@ +_base_ = 'mobilenet-v2_8xb32_in1k.py' + +_deprecation_ = dict( + expected='mobilenet-v2_8xb32_in1k.py', + reference='https://github.com/open-mmlab/mmclassification/pull/508', +) diff --git a/openmmlab_test/mmclassification-0.24.1/configs/mobilenet_v3/README.md b/openmmlab_test/mmclassification-0.24.1/configs/mobilenet_v3/README.md new file mode 100644 index 00000000..737c4d32 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/mobilenet_v3/README.md @@ -0,0 +1,36 @@ +# MobileNet V3 + +> [Searching for MobileNetV3](https://arxiv.org/abs/1905.02244) + + + +## Abstract + +We present the next generation of MobileNets based on a combination of complementary search techniques as well as a novel architecture design. MobileNetV3 is tuned to mobile phone CPUs through a combination of hardware-aware network architecture search (NAS) complemented by the NetAdapt algorithm and then subsequently improved through novel architecture advances. This paper starts the exploration of how automated search algorithms and network design can work together to harness complementary approaches improving the overall state of the art. Through this process we create two new MobileNet models for release: MobileNetV3-Large and MobileNetV3-Small which are targeted for high and low resource use cases. These models are then adapted and applied to the tasks of object detection and semantic segmentation. For the task of semantic segmentation (or any dense pixel prediction), we propose a new efficient segmentation decoder Lite Reduced Atrous Spatial Pyramid Pooling (LR-ASPP). We achieve new state of the art results for mobile classification, detection and segmentation. MobileNetV3-Large is 3.2% more accurate on ImageNet classification while reducing latency by 15% compared to MobileNetV2. MobileNetV3-Small is 4.6% more accurate while reducing latency by 5% compared to MobileNetV2. MobileNetV3-Large detection is 25% faster at roughly the same accuracy as MobileNetV2 on COCO detection. MobileNetV3-Large LR-ASPP is 30% faster than MobileNetV2 R-ASPP at similar accuracy for Cityscapes segmentation. + +
+ +
+ +## Results and models + +### ImageNet-1k + +| Model | Params(M) | Flops(G) | Top-1 (%) | Top-5 (%) | Config | Download | +| :-----------------: | :-------: | :------: | :-------: | :-------: | :----------------------------------------------------------------------: | :------------------------------------------------------------------------: | +| MobileNetV3-Small\* | 2.54 | 0.06 | 67.66 | 87.41 | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/mobilenet_v3/mobilenet-v3-small_8xb32_in1k.py) | [model](https://download.openmmlab.com/mmclassification/v0/mobilenet_v3/convert/mobilenet_v3_small-8427ecf0.pth) | +| MobileNetV3-Large\* | 5.48 | 0.23 | 74.04 | 91.34 | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/mobilenet_v3/mobilenet-v3-large_8xb32_in1k.py) | [model](https://download.openmmlab.com/mmclassification/v0/mobilenet_v3/convert/mobilenet_v3_large-3ea3c186.pth) | + +*Models with * are converted from [torchvision](https://pytorch.org/vision/stable/_modules/torchvision/models/mobilenetv3.html). The config files of these models are only for validation. We don't ensure these config files' training accuracy and welcome you to contribute your reproduction results.* + +## Citation + +``` +@inproceedings{Howard_2019_ICCV, + author = {Howard, Andrew and Sandler, Mark and Chu, Grace and Chen, Liang-Chieh and Chen, Bo and Tan, Mingxing and Wang, Weijun and Zhu, Yukun and Pang, Ruoming and Vasudevan, Vijay and Le, Quoc V. and Adam, Hartwig}, + title = {Searching for MobileNetV3}, + booktitle = {Proceedings of the IEEE/CVF International Conference on Computer Vision (ICCV)}, + month = {October}, + year = {2019} +} +``` diff --git a/openmmlab_test/mmclassification-0.24.1/configs/mobilenet_v3/metafile.yml b/openmmlab_test/mmclassification-0.24.1/configs/mobilenet_v3/metafile.yml new file mode 100644 index 00000000..09c4732e --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/mobilenet_v3/metafile.yml @@ -0,0 +1,47 @@ +Collections: + - Name: MobileNet V3 + Metadata: + Training Data: ImageNet-1k + Training Techniques: + - RMSprop with Momentum + - Weight Decay + Training Resources: 8x V100 GPUs + Epochs: 600 + Batch Size: 1024 + Architecture: + - MobileNet V3 + Paper: + URL: https://arxiv.org/abs/1905.02244 + Title: Searching for MobileNetV3 + README: configs/mobilenet_v3/README.md + Code: + URL: https://github.com/open-mmlab/mmclassification/blob/v0.15.0/mmcls/models/backbones/mobilenet_v3.py + Version: v0.15.0 + +Models: + - Name: mobilenet_v3_small_imagenet + Metadata: + FLOPs: 60000000 + Parameters: 2540000 + In Collection: MobileNet V3 + Results: + - Dataset: ImageNet-1k + Metrics: + Top 1 Accuracy: 67.66 + Top 5 Accuracy: 87.41 + Task: Image Classification + Weights: https://download.openmmlab.com/mmclassification/v0/mobilenet_v3/convert/mobilenet_v3_small-8427ecf0.pth + Config: configs/mobilenet_v3/mobilenet-v3-small_8xb32_in1k.py + - Name: mobilenet_v3_large_imagenet + Metadata: + FLOPs: 230000000 + Parameters: 5480000 + In Collection: MobileNet V3 + Results: + - Dataset: ImageNet-1k + Metrics: + Top 1 Accuracy: 74.04 + Top 5 Accuracy: 91.34 + Task: Image Classification + Weights: https://download.openmmlab.com/mmclassification/v0/mobilenet_v3/convert/mobilenet_v3_large-3ea3c186.pth + Config: configs/mobilenet_v3/mobilenet-v3-large_8xb32_in1k.py diff --git a/openmmlab_test/mmclassification-0.24.1/configs/mobilenet_v3/mobilenet-v3-large_8xb32_in1k.py b/openmmlab_test/mmclassification-0.24.1/configs/mobilenet_v3/mobilenet-v3-large_8xb32_in1k.py new file mode 100644 index 00000000..985ef520 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/mobilenet_v3/mobilenet-v3-large_8xb32_in1k.py @@ -0,0 +1,158 @@ +# Refer to https://pytorch.org/blog/ml-models-torchvision-v0.9/#classification +# ---------------------------- +# -[x] auto_augment='imagenet' +# -[x] batch_size=128 (per gpu) +# -[x] epochs=600 +# -[x] opt='rmsprop' +# -[x] lr=0.064 +# -[x] eps=0.0316 +# -[x] alpha=0.9 +# -[x] weight_decay=1e-05 +# -[x] momentum=0.9 +# -[x] lr_gamma=0.973 +# -[x] lr_step_size=2 +# -[x] nproc_per_node=8 +# -[x] random_erase=0.2 +# -[x] workers=16 (workers_per_gpu) +# - modify: RandomErasing use RE-M instead of RE-0 + +_base_ = [ + '../_base_/models/mobilenet_v3_large_imagenet.py', + '../_base_/datasets/imagenet_bs32_pil_resize.py', + '../_base_/default_runtime.py' +] + +img_norm_cfg = dict( + mean=[123.675, 116.28, 103.53], std=[58.395, 57.12, 57.375], to_rgb=True) + +policies = [ + [ + dict(type='Posterize', bits=4, prob=0.4), + dict(type='Rotate', angle=30., prob=0.6) + ], + [ + dict(type='Solarize', thr=256 / 9 * 4, prob=0.6), + dict(type='AutoContrast', prob=0.6) + ], + [dict(type='Equalize', prob=0.8), + dict(type='Equalize', prob=0.6)], + [ + dict(type='Posterize', bits=5, prob=0.6), + dict(type='Posterize', bits=5, prob=0.6) + ], + [ + dict(type='Equalize', prob=0.4), + dict(type='Solarize', thr=256 / 9 * 5, prob=0.2) + ], + [ + dict(type='Equalize', prob=0.4), + dict(type='Rotate', angle=30 / 9 * 8, prob=0.8) + ], + [ + dict(type='Solarize', thr=256 / 9 * 6, prob=0.6), + dict(type='Equalize', prob=0.6) + ], + [dict(type='Posterize', bits=6, prob=0.8), + dict(type='Equalize', prob=1.)], + [ + dict(type='Rotate', angle=10., prob=0.2), + dict(type='Solarize', thr=256 / 9, prob=0.6) + ], + [ + dict(type='Equalize', prob=0.6), + dict(type='Posterize', bits=5, prob=0.4) + ], + [ + dict(type='Rotate', angle=30 / 9 * 8, prob=0.8), + dict(type='ColorTransform', magnitude=0., prob=0.4) + ], + [ + dict(type='Rotate', angle=30., prob=0.4), + dict(type='Equalize', prob=0.6) + ], + [dict(type='Equalize', prob=0.0), + dict(type='Equalize', prob=0.8)], + [dict(type='Invert', prob=0.6), + dict(type='Equalize', prob=1.)], + [ + dict(type='ColorTransform', magnitude=0.4, prob=0.6), + dict(type='Contrast', magnitude=0.8, prob=1.) + ], + [ + dict(type='Rotate', angle=30 / 9 * 8, prob=0.8), + dict(type='ColorTransform', magnitude=0.2, prob=1.) + ], + [ + dict(type='ColorTransform', magnitude=0.8, prob=0.8), + dict(type='Solarize', thr=256 / 9 * 2, prob=0.8) + ], + [ + dict(type='Sharpness', magnitude=0.7, prob=0.4), + dict(type='Invert', prob=0.6) + ], + [ + dict( + type='Shear', + magnitude=0.3 / 9 * 5, + prob=0.6, + direction='horizontal'), + dict(type='Equalize', prob=1.) + ], + [ + dict(type='ColorTransform', magnitude=0., prob=0.4), + dict(type='Equalize', prob=0.6) + ], + [ + dict(type='Equalize', prob=0.4), + dict(type='Solarize', thr=256 / 9 * 5, prob=0.2) + ], + [ + dict(type='Solarize', thr=256 / 9 * 4, prob=0.6), + dict(type='AutoContrast', prob=0.6) + ], + [dict(type='Invert', prob=0.6), + dict(type='Equalize', prob=1.)], + [ + dict(type='ColorTransform', magnitude=0.4, prob=0.6), + dict(type='Contrast', magnitude=0.8, prob=1.) + ], + [dict(type='Equalize', prob=0.8), + dict(type='Equalize', prob=0.6)], +] + +train_pipeline = [ + dict(type='LoadImageFromFile'), + dict(type='RandomResizedCrop', size=224, backend='pillow'), + dict(type='RandomFlip', flip_prob=0.5, direction='horizontal'), + dict(type='AutoAugment', policies=policies), + dict( + type='RandomErasing', + erase_prob=0.2, + mode='const', + min_area_ratio=0.02, + max_area_ratio=1 / 3, + fill_color=img_norm_cfg['mean']), + dict(type='Normalize', **img_norm_cfg), + dict(type='ImageToTensor', keys=['img']), + dict(type='ToTensor', keys=['gt_label']), + dict(type='Collect', keys=['img', 'gt_label']) +] + +data = dict( + samples_per_gpu=128, + workers_per_gpu=4, + train=dict(pipeline=train_pipeline)) +evaluation = dict(interval=10, metric='accuracy') + +# optimizer +optimizer = dict( + type='RMSprop', + lr=0.064, + alpha=0.9, + momentum=0.9, + eps=0.0316, + weight_decay=1e-5) +optimizer_config = dict(grad_clip=None) +# learning policy +lr_config = dict(policy='step', step=2, gamma=0.973, by_epoch=True) +runner = dict(type='EpochBasedRunner', max_epochs=600) diff --git a/openmmlab_test/mmclassification-0.24.1/configs/mobilenet_v3/mobilenet-v3-small_8xb16_cifar10.py b/openmmlab_test/mmclassification-0.24.1/configs/mobilenet_v3/mobilenet-v3-small_8xb16_cifar10.py new file mode 100644 index 00000000..06e63dab --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/mobilenet_v3/mobilenet-v3-small_8xb16_cifar10.py @@ -0,0 +1,8 @@ +_base_ = [ + '../_base_/models/mobilenet-v3-small_cifar.py', + '../_base_/datasets/cifar10_bs16.py', + '../_base_/schedules/cifar10_bs128.py', '../_base_/default_runtime.py' +] + +lr_config = dict(policy='step', step=[120, 170]) +runner = dict(type='EpochBasedRunner', max_epochs=200) diff --git a/openmmlab_test/mmclassification-0.24.1/configs/mobilenet_v3/mobilenet-v3-small_8xb32_in1k.py b/openmmlab_test/mmclassification-0.24.1/configs/mobilenet_v3/mobilenet-v3-small_8xb32_in1k.py new file mode 100644 index 00000000..2612166f --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/mobilenet_v3/mobilenet-v3-small_8xb32_in1k.py @@ -0,0 +1,158 @@ +# Refer to https://pytorch.org/blog/ml-models-torchvision-v0.9/#classification +# ---------------------------- +# -[x] auto_augment='imagenet' +# -[x] batch_size=128 (per gpu) +# -[x] epochs=600 +# -[x] opt='rmsprop' +# -[x] lr=0.064 +# -[x] eps=0.0316 +# -[x] alpha=0.9 +# -[x] weight_decay=1e-05 +# -[x] momentum=0.9 +# -[x] lr_gamma=0.973 +# -[x] lr_step_size=2 +# -[x] nproc_per_node=8 +# -[x] random_erase=0.2 +# -[x] workers=16 (workers_per_gpu) +# - modify: RandomErasing use RE-M instead of RE-0 + +_base_ = [ + '../_base_/models/mobilenet_v3_small_imagenet.py', + '../_base_/datasets/imagenet_bs32_pil_resize.py', + '../_base_/default_runtime.py' +] + +img_norm_cfg = dict( + mean=[123.675, 116.28, 103.53], std=[58.395, 57.12, 57.375], to_rgb=True) + +policies = [ + [ + dict(type='Posterize', bits=4, prob=0.4), + dict(type='Rotate', angle=30., prob=0.6) + ], + [ + dict(type='Solarize', thr=256 / 9 * 4, prob=0.6), + dict(type='AutoContrast', prob=0.6) + ], + [dict(type='Equalize', prob=0.8), + dict(type='Equalize', prob=0.6)], + [ + dict(type='Posterize', bits=5, prob=0.6), + dict(type='Posterize', bits=5, prob=0.6) + ], + [ + dict(type='Equalize', prob=0.4), + dict(type='Solarize', thr=256 / 9 * 5, prob=0.2) + ], + [ + dict(type='Equalize', prob=0.4), + dict(type='Rotate', angle=30 / 9 * 8, prob=0.8) + ], + [ + dict(type='Solarize', thr=256 / 9 * 6, prob=0.6), + dict(type='Equalize', prob=0.6) + ], + [dict(type='Posterize', bits=6, prob=0.8), + dict(type='Equalize', prob=1.)], + [ + dict(type='Rotate', angle=10., prob=0.2), + dict(type='Solarize', thr=256 / 9, prob=0.6) + ], + [ + dict(type='Equalize', prob=0.6), + dict(type='Posterize', bits=5, prob=0.4) + ], + [ + dict(type='Rotate', angle=30 / 9 * 8, prob=0.8), + dict(type='ColorTransform', magnitude=0., prob=0.4) + ], + [ + dict(type='Rotate', angle=30., prob=0.4), + dict(type='Equalize', prob=0.6) + ], + [dict(type='Equalize', prob=0.0), + dict(type='Equalize', prob=0.8)], + [dict(type='Invert', prob=0.6), + dict(type='Equalize', prob=1.)], + [ + dict(type='ColorTransform', magnitude=0.4, prob=0.6), + dict(type='Contrast', magnitude=0.8, prob=1.) + ], + [ + dict(type='Rotate', angle=30 / 9 * 8, prob=0.8), + dict(type='ColorTransform', magnitude=0.2, prob=1.) + ], + [ + dict(type='ColorTransform', magnitude=0.8, prob=0.8), + dict(type='Solarize', thr=256 / 9 * 2, prob=0.8) + ], + [ + dict(type='Sharpness', magnitude=0.7, prob=0.4), + dict(type='Invert', prob=0.6) + ], + [ + dict( + type='Shear', + magnitude=0.3 / 9 * 5, + prob=0.6, + direction='horizontal'), + dict(type='Equalize', prob=1.) + ], + [ + dict(type='ColorTransform', magnitude=0., prob=0.4), + dict(type='Equalize', prob=0.6) + ], + [ + dict(type='Equalize', prob=0.4), + dict(type='Solarize', thr=256 / 9 * 5, prob=0.2) + ], + [ + dict(type='Solarize', thr=256 / 9 * 4, prob=0.6), + dict(type='AutoContrast', prob=0.6) + ], + [dict(type='Invert', prob=0.6), + dict(type='Equalize', prob=1.)], + [ + dict(type='ColorTransform', magnitude=0.4, prob=0.6), + dict(type='Contrast', magnitude=0.8, prob=1.) + ], + [dict(type='Equalize', prob=0.8), + dict(type='Equalize', prob=0.6)], +] + +train_pipeline = [ + dict(type='LoadImageFromFile'), + dict(type='RandomResizedCrop', size=224, backend='pillow'), + dict(type='RandomFlip', flip_prob=0.5, direction='horizontal'), + dict(type='AutoAugment', policies=policies), + dict( + type='RandomErasing', + erase_prob=0.2, + mode='const', + min_area_ratio=0.02, + max_area_ratio=1 / 3, + fill_color=img_norm_cfg['mean']), + dict(type='Normalize', **img_norm_cfg), + dict(type='ImageToTensor', keys=['img']), + dict(type='ToTensor', keys=['gt_label']), + dict(type='Collect', keys=['img', 'gt_label']) +] + +data = dict( + samples_per_gpu=128, + workers_per_gpu=4, + train=dict(pipeline=train_pipeline)) +evaluation = dict(interval=10, metric='accuracy') + +# optimizer +optimizer = dict( + type='RMSprop', + lr=0.064, + alpha=0.9, + momentum=0.9, + eps=0.0316, + weight_decay=1e-5) +optimizer_config = dict(grad_clip=None) +# learning policy +lr_config = dict(policy='step', step=2, gamma=0.973, by_epoch=True) +runner = dict(type='EpochBasedRunner', max_epochs=600) diff --git a/openmmlab_test/mmclassification-0.24.1/configs/mobilenet_v3/mobilenet_v3_large_imagenet.py b/openmmlab_test/mmclassification-0.24.1/configs/mobilenet_v3/mobilenet_v3_large_imagenet.py new file mode 100644 index 00000000..93e89a49 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/mobilenet_v3/mobilenet_v3_large_imagenet.py @@ -0,0 +1,6 @@ +_base_ = 'mobilenet-v3-large_8xb32_in1k.py' + +_deprecation_ = dict( + expected='mobilenet-v3-large_8xb32_in1k.py', + reference='https://github.com/open-mmlab/mmclassification/pull/508', +) diff --git a/openmmlab_test/mmclassification-0.24.1/configs/mobilenet_v3/mobilenet_v3_small_cifar.py b/openmmlab_test/mmclassification-0.24.1/configs/mobilenet_v3/mobilenet_v3_small_cifar.py new file mode 100644 index 00000000..c09bd1cd --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/mobilenet_v3/mobilenet_v3_small_cifar.py @@ -0,0 +1,6 @@ +_base_ = 'mobilenet-v3-small_8xb16_cifar10.py' + +_deprecation_ = dict( + expected='mobilenet-v3-small_8xb16_cifar10.py', + reference='https://github.com/open-mmlab/mmclassification/pull/508', +) diff --git a/openmmlab_test/mmclassification-0.24.1/configs/mobilenet_v3/mobilenet_v3_small_imagenet.py b/openmmlab_test/mmclassification-0.24.1/configs/mobilenet_v3/mobilenet_v3_small_imagenet.py new file mode 100644 index 00000000..15debd0f --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/mobilenet_v3/mobilenet_v3_small_imagenet.py @@ -0,0 +1,6 @@ +_base_ = 'mobilenet-v3-small_8xb32_in1k.py' + +_deprecation_ = dict( + expected='mobilenet-v3-small_8xb32_in1k.py', + reference='https://github.com/open-mmlab/mmclassification/pull/508', +) diff --git a/openmmlab_test/mmclassification-0.24.1/configs/mvit/README.md b/openmmlab_test/mmclassification-0.24.1/configs/mvit/README.md new file mode 100644 index 00000000..6f5c5608 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/mvit/README.md @@ -0,0 +1,44 @@ +# MViT V2 + +> [MViTv2: Improved Multiscale Vision Transformers for Classification and Detection](http://openaccess.thecvf.com//content/CVPR2022/papers/Li_MViTv2_Improved_Multiscale_Vision_Transformers_for_Classification_and_Detection_CVPR_2022_paper.pdf) + + + +## Abstract + +In this paper, we study Multiscale Vision Transformers (MViTv2) as a unified architecture for image and video +classification, as well as object detection. We present an improved version of MViT that incorporates +decomposed relative positional embeddings and residual pooling connections. We instantiate this architecture +in five sizes and evaluate it for ImageNet classification, COCO detection and Kinetics video recognition where +it outperforms prior work. We further compare MViTv2s' pooling attention to window attention mechanisms where +it outperforms the latter in accuracy/compute. Without bells-and-whistles, MViTv2 has state-of-the-art +performance in 3 domains: 88.8% accuracy on ImageNet classification, 58.7 boxAP on COCO object detection as +well as 86.1% on Kinetics-400 video classification. + +
+ +
+ +## Results and models + +### ImageNet-1k + +| Model | Pretrain | Params(M) | Flops(G) | Top-1 (%) | Top-5 (%) | Config | Download | +| :------------: | :----------: | :-------: | :------: | :-------: | :-------: | :------------------------------------------------------------------: | :---------------------------------------------------------------------: | +| MViTv2-tiny\* | From scratch | 24.17 | 4.70 | 82.33 | 96.15 | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/mvit/mvitv2-tiny_8xb256_in1k.py) | [model](https://download.openmmlab.com/mmclassification/v0/mvit/mvitv2-tiny_3rdparty_in1k_20220722-db7beeef.pth) | +| MViTv2-small\* | From scratch | 34.87 | 7.00 | 83.63 | 96.51 | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/mvit/mvitv2-small_8xb256_in1k.py) | [model](https://download.openmmlab.com/mmclassification/v0/mvit/mvitv2-small_3rdparty_in1k_20220722-986bd741.pth) | +| MViTv2-base\* | From scratch | 51.47 | 10.20 | 84.34 | 96.86 | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/mvit/mvitv2-base_8xb256_in1k.py) | [model](https://download.openmmlab.com/mmclassification/v0/mvit/mvitv2-base_3rdparty_in1k_20220722-9c4f0a17.pth) | +| MViTv2-large\* | From scratch | 217.99 | 42.10 | 85.25 | 97.14 | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/mvit/mvitv2-large_8xb256_in1k.py) | [model](https://download.openmmlab.com/mmclassification/v0/mvit/mvitv2-large_3rdparty_in1k_20220722-2b57b983.pth) | + +*Models with * are converted from the [official repo](https://github.com/facebookresearch/mvit). The config files of these models are only for inference. We don't ensure these config files' training accuracy and welcome you to contribute your reproduction results.* + +## Citation + +```bibtex +@inproceedings{li2021improved, + title={MViTv2: Improved multiscale vision transformers for classification and detection}, + author={Li, Yanghao and Wu, Chao-Yuan and Fan, Haoqi and Mangalam, Karttikeya and Xiong, Bo and Malik, Jitendra and Feichtenhofer, Christoph}, + booktitle={CVPR}, + year={2022} +} +``` diff --git a/openmmlab_test/mmclassification-0.24.1/configs/mvit/metafile.yml b/openmmlab_test/mmclassification-0.24.1/configs/mvit/metafile.yml new file mode 100644 index 00000000..8d46a0c8 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/mvit/metafile.yml @@ -0,0 +1,95 @@ +Collections: + - Name: MViT V2 + Metadata: + Architecture: + - Attention Dropout + - Convolution + - Dense Connections + - GELU + - Layer Normalization + - Scaled Dot-Product Attention + - Attention Pooling + Paper: + URL: http://openaccess.thecvf.com//content/CVPR2022/papers/Li_MViTv2_Improved_Multiscale_Vision_Transformers_for_Classification_and_Detection_CVPR_2022_paper.pdf + Title: 'MViTv2: Improved Multiscale Vision Transformers for Classification and Detection' + README: configs/mvit/README.md + Code: + URL: https://github.com/open-mmlab/mmclassification/blob/v0.24.0/mmcls/models/backbones/mvit.py + Version: v0.24.0 + +Models: + - Name: mvitv2-tiny_3rdparty_in1k + In Collection: MViT V2 + Metadata: + FLOPs: 4700000000 + Parameters: 24173320 + Training Data: + - ImageNet-1k + Results: + - Dataset: ImageNet-1k + Task: Image Classification + Metrics: + Top 1 Accuracy: 82.33 + Top 5 Accuracy: 96.15 + Weights: https://download.openmmlab.com/mmclassification/v0/mvit/mvitv2-tiny_3rdparty_in1k_20220722-db7beeef.pth + Converted From: + Weights: https://dl.fbaipublicfiles.com/mvit/mvitv2_models/MViTv2_T_in1k.pyth + Code: https://github.com/facebookresearch/mvit + Config: configs/mvit/mvitv2-tiny_8xb256_in1k.py + + - Name: mvitv2-small_3rdparty_in1k + In Collection: MViT V2 + Metadata: + FLOPs: 7000000000 + Parameters: 34870216 + Training Data: + - ImageNet-1k + Results: + - Dataset: ImageNet-1k + Task: Image Classification + Metrics: + Top 1 Accuracy: 83.63 + Top 5 Accuracy: 96.51 + Weights: https://download.openmmlab.com/mmclassification/v0/mvit/mvitv2-small_3rdparty_in1k_20220722-986bd741.pth + Converted From: + Weights: https://dl.fbaipublicfiles.com/mvit/mvitv2_models/MViTv2_S_in1k.pyth + Code: https://github.com/facebookresearch/mvit + Config: configs/mvit/mvitv2-small_8xb256_in1k.py + + - Name: mvitv2-base_3rdparty_in1k + In Collection: MViT V2 + Metadata: + FLOPs: 10200000000 + Parameters: 51472744 + Training Data: + - ImageNet-1k + Results: + - Dataset: ImageNet-1k + Task: Image Classification + Metrics: + Top 1 Accuracy: 84.34 + Top 5 Accuracy: 96.86 + Weights: https://download.openmmlab.com/mmclassification/v0/mvit/mvitv2-base_3rdparty_in1k_20220722-9c4f0a17.pth + Converted From: + Weights: https://dl.fbaipublicfiles.com/mvit/mvitv2_models/MViTv2_B_in1k.pyth + Code: https://github.com/facebookresearch/mvit + Config: configs/mvit/mvitv2-base_8xb256_in1k.py + + - Name: mvitv2-large_3rdparty_in1k + In Collection: MViT V2 + Metadata: + FLOPs: 42100000000 + Parameters: 217992952 + Training Data: + - ImageNet-1k + Results: + - Dataset: ImageNet-1k + Task: Image Classification + Metrics: + Top 1 Accuracy: 85.25 + Top 5 Accuracy: 97.14 + Weights: https://download.openmmlab.com/mmclassification/v0/mvit/mvitv2-large_3rdparty_in1k_20220722-2b57b983.pth + Converted From: + Weights: https://dl.fbaipublicfiles.com/mvit/mvitv2_models/MViTv2_L_in1k.pyth + Code: https://github.com/facebookresearch/mvit + Config: configs/mvit/mvitv2-large_8xb256_in1k.py diff --git a/openmmlab_test/mmclassification-0.24.1/configs/mvit/mvitv2-base_8xb256_in1k.py b/openmmlab_test/mmclassification-0.24.1/configs/mvit/mvitv2-base_8xb256_in1k.py new file mode 100644 index 00000000..ea92cf40 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/mvit/mvitv2-base_8xb256_in1k.py @@ -0,0 +1,29 @@ +_base_ = [ + '../_base_/models/mvit/mvitv2-base.py', + '../_base_/datasets/imagenet_bs64_swin_224.py', + '../_base_/schedules/imagenet_bs1024_adamw_swin.py', + '../_base_/default_runtime.py' +] + +# dataset settings +data = dict(samples_per_gpu=256) + +# schedule settings +paramwise_cfg = dict( + norm_decay_mult=0.0, + bias_decay_mult=0.0, + custom_keys={ + '.pos_embed': dict(decay_mult=0.0), + '.rel_pos_h': dict(decay_mult=0.0), + '.rel_pos_w': dict(decay_mult=0.0) + }) + +optimizer = dict(lr=0.00025, paramwise_cfg=paramwise_cfg) +optimizer_config = dict(grad_clip=dict(max_norm=1.0)) + +# learning policy +lr_config = dict( + policy='CosineAnnealing', + warmup='linear', + warmup_iters=70, + warmup_by_epoch=True) diff --git a/openmmlab_test/mmclassification-0.24.1/configs/mvit/mvitv2-large_8xb256_in1k.py b/openmmlab_test/mmclassification-0.24.1/configs/mvit/mvitv2-large_8xb256_in1k.py new file mode 100644 index 00000000..fbb81d69 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/mvit/mvitv2-large_8xb256_in1k.py @@ -0,0 +1,29 @@ +_base_ = [ + '../_base_/models/mvit/mvitv2-large.py', + '../_base_/datasets/imagenet_bs64_swin_224.py', + '../_base_/schedules/imagenet_bs2048_AdamW.py', + '../_base_/default_runtime.py' +] + +# dataset settings +data = dict(samples_per_gpu=256) + +# schedule settings +paramwise_cfg = dict( + norm_decay_mult=0.0, + bias_decay_mult=0.0, + custom_keys={ + '.pos_embed': dict(decay_mult=0.0), + '.rel_pos_h': dict(decay_mult=0.0), + '.rel_pos_w': dict(decay_mult=0.0) + }) + +optimizer = dict(lr=0.00025, paramwise_cfg=paramwise_cfg) +optimizer_config = dict(grad_clip=dict(max_norm=1.0)) + +# learning policy +lr_config = dict( + policy='CosineAnnealing', + warmup='linear', + warmup_iters=70, + warmup_by_epoch=True) diff --git a/openmmlab_test/mmclassification-0.24.1/configs/mvit/mvitv2-small_8xb256_in1k.py b/openmmlab_test/mmclassification-0.24.1/configs/mvit/mvitv2-small_8xb256_in1k.py new file mode 100644 index 00000000..18038593 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/mvit/mvitv2-small_8xb256_in1k.py @@ -0,0 +1,29 @@ +_base_ = [ + '../_base_/models/mvit/mvitv2-small.py', + '../_base_/datasets/imagenet_bs64_swin_224.py', + '../_base_/schedules/imagenet_bs2048_AdamW.py', + '../_base_/default_runtime.py' +] + +# dataset settings +data = dict(samples_per_gpu=256) + +# schedule settings +paramwise_cfg = dict( + norm_decay_mult=0.0, + bias_decay_mult=0.0, + custom_keys={ + '.pos_embed': dict(decay_mult=0.0), + '.rel_pos_h': dict(decay_mult=0.0), + '.rel_pos_w': dict(decay_mult=0.0) + }) + +optimizer = dict(lr=0.00025, paramwise_cfg=paramwise_cfg) +optimizer_config = dict(grad_clip=dict(max_norm=1.0)) + +# learning policy +lr_config = dict( + policy='CosineAnnealing', + warmup='linear', + warmup_iters=70, + warmup_by_epoch=True) diff --git a/openmmlab_test/mmclassification-0.24.1/configs/mvit/mvitv2-tiny_8xb256_in1k.py b/openmmlab_test/mmclassification-0.24.1/configs/mvit/mvitv2-tiny_8xb256_in1k.py new file mode 100644 index 00000000..f4b9bc48 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/mvit/mvitv2-tiny_8xb256_in1k.py @@ -0,0 +1,29 @@ +_base_ = [ + '../_base_/models/mvit/mvitv2-tiny.py', + '../_base_/datasets/imagenet_bs64_swin_224.py', + '../_base_/schedules/imagenet_bs2048_AdamW.py', + '../_base_/default_runtime.py' +] + +# dataset settings +data = dict(samples_per_gpu=256) + +# schedule settings +paramwise_cfg = dict( + norm_decay_mult=0.0, + bias_decay_mult=0.0, + custom_keys={ + '.pos_embed': dict(decay_mult=0.0), + '.rel_pos_h': dict(decay_mult=0.0), + '.rel_pos_w': dict(decay_mult=0.0) + }) + +optimizer = dict(lr=0.00025, paramwise_cfg=paramwise_cfg) +optimizer_config = dict(grad_clip=dict(max_norm=1.0)) + +# learning policy +lr_config = dict( + policy='CosineAnnealing', + warmup='linear', + warmup_iters=70, + warmup_by_epoch=True) diff --git a/openmmlab_test/mmclassification-0.24.1/configs/poolformer/README.md b/openmmlab_test/mmclassification-0.24.1/configs/poolformer/README.md new file mode 100644 index 00000000..cc557e10 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/poolformer/README.md @@ -0,0 +1,38 @@ +# PoolFormer + +> [MetaFormer is Actually What You Need for Vision](https://arxiv.org/abs/2111.11418) + + + +## Abstract + +Transformers have shown great potential in computer vision tasks. A common belief is their attention-based token mixer module contributes most to their competence. However, recent works show the attention-based module in transformers can be replaced by spatial MLPs and the resulted models still perform quite well. Based on this observation, we hypothesize that the general architecture of the transformers, instead of the specific token mixer module, is more essential to the model's performance. To verify this, we deliberately replace the attention module in transformers with an embarrassingly simple spatial pooling operator to conduct only basic token mixing. Surprisingly, we observe that the derived model, termed as PoolFormer, achieves competitive performance on multiple computer vision tasks. For example, on ImageNet-1K, PoolFormer achieves 82.1% top-1 accuracy, surpassing well-tuned vision transformer/MLP-like baselines DeiT-B/ResMLP-B24 by 0.3%/1.1% accuracy with 35%/52% fewer parameters and 49%/61% fewer MACs. The effectiveness of PoolFormer verifies our hypothesis and urges us to initiate the concept of "MetaFormer", a general architecture abstracted from transformers without specifying the token mixer. Based on the extensive experiments, we argue that MetaFormer is the key player in achieving superior results for recent transformer and MLP-like models on vision tasks. This work calls for more future research dedicated to improving MetaFormer instead of focusing on the token mixer modules. Additionally, our proposed PoolFormer could serve as a starting baseline for future MetaFormer architecture design. + +
+ +
+ +## Results and models + +### ImageNet-1k + +| Model | Params(M) | Flops(G) | Top-1 (%) | Top-5 (%) | Config | Download | +| :--------------: | :-------: | :------: | :-------: | :-------: | :-----------------------------------------------------------------------: | :--------------------------------------------------------------------------: | +| PoolFormer-S12\* | 11.92 | 1.87 | 77.24 | 93.51 | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/poolformer/poolformer-s12_32xb128_in1k.py) | [model](https://download.openmmlab.com/mmclassification/v0/poolformer/poolformer-s12_3rdparty_32xb128_in1k_20220414-f8d83051.pth) | +| PoolFormer-S24\* | 21.39 | 3.51 | 80.33 | 95.05 | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/poolformer/poolformer-s24_32xb128_in1k.py) | [model](https://download.openmmlab.com/mmclassification/v0/poolformer/poolformer-s24_3rdparty_32xb128_in1k_20220414-d7055904.pth) | +| PoolFormer-S36\* | 30.86 | 5.15 | 81.43 | 95.45 | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/poolformer/poolformer-s36_32xb128_in1k.py) | [model](https://download.openmmlab.com/mmclassification/v0/poolformer/poolformer-s36_3rdparty_32xb128_in1k_20220414-d78ff3e8.pth) | +| PoolFormer-M36\* | 56.17 | 8.96 | 82.14 | 95.71 | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/poolformer/poolformer-m36_32xb128_in1k.py) | [model](https://download.openmmlab.com/mmclassification/v0/poolformer/poolformer-m36_3rdparty_32xb128_in1k_20220414-c55e0949.pth) | +| PoolFormer-M48\* | 73.47 | 11.80 | 82.51 | 95.95 | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/poolformer/poolformer-m48_32xb128_in1k.py) | [model](https://download.openmmlab.com/mmclassification/v0/poolformer/poolformer-m48_3rdparty_32xb128_in1k_20220414-9378f3eb.pth) | + +*Models with * are converted from the [official repo](https://github.com/sail-sg/poolformer). The config files of these models are only for inference. We don't ensure these config files' training accuracy and welcome you to contribute your reproduction results.* + +## Citation + +```bibtex +@article{yu2021metaformer, + title={MetaFormer is Actually What You Need for Vision}, + author={Yu, Weihao and Luo, Mi and Zhou, Pan and Si, Chenyang and Zhou, Yichen and Wang, Xinchao and Feng, Jiashi and Yan, Shuicheng}, + journal={arXiv preprint arXiv:2111.11418}, + year={2021} +} +``` diff --git a/openmmlab_test/mmclassification-0.24.1/configs/poolformer/metafile.yml b/openmmlab_test/mmclassification-0.24.1/configs/poolformer/metafile.yml new file mode 100644 index 00000000..d94219d1 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/poolformer/metafile.yml @@ -0,0 +1,99 @@ +Collections: + - Name: PoolFormer + Metadata: + Training Data: ImageNet-1k + Architecture: + - Pooling + - 1x1 Convolution + - LayerScale + Paper: + URL: https://arxiv.org/abs/2111.11418 + Title: MetaFormer is Actually What You Need for Vision + README: configs/poolformer/README.md + Code: + Version: v0.22.1 + URL: https://github.com/open-mmlab/mmclassification/blob/v0.22.1/mmcls/models/backbones/poolformer.py + +Models: + - Name: poolformer-s12_3rdparty_32xb128_in1k + Metadata: + FLOPs: 1871399424 + Parameters: 11915176 + In Collections: PoolFormer + Results: + - Dataset: ImageNet-1k + Metrics: + Top 1 Accuracy: 77.24 + Top 5 Accuracy: 93.51 + Task: Image Classification + Weights: https://download.openmmlab.com/mmclassification/v0/poolformer/poolformer-s12_3rdparty_32xb128_in1k_20220414-f8d83051.pth + Config: configs/poolformer/poolformer-s12_32xb128_in1k.py + Converted From: + Weights: https://github.com/sail-sg/poolformer/releases/download/v1.0/poolformer_s12.pth.tar + Code: https://github.com/sail-sg/poolformer + - Name: poolformer-s24_3rdparty_32xb128_in1k + Metadata: + Training Data: ImageNet-1k + FLOPs: 3510411008 + Parameters: 21388968 + In Collections: PoolFormer + Results: + - Dataset: ImageNet-1k + Metrics: + Top 1 Accuracy: 80.33 + Top 5 Accuracy: 95.05 + Task: Image Classification + Weights: https://download.openmmlab.com/mmclassification/v0/poolformer/poolformer-s24_3rdparty_32xb128_in1k_20220414-d7055904.pth + Config: configs/poolformer/poolformer-s24_32xb128_in1k.py + Converted From: + Weights: https://github.com/sail-sg/poolformer/releases/download/v1.0/poolformer_s24.pth.tar + Code: https://github.com/sail-sg/poolformer + - Name: poolformer-s36_3rdparty_32xb128_in1k + Metadata: + FLOPs: 5149422592 + Parameters: 30862760 + In Collections: PoolFormer + Results: + - Dataset: ImageNet-1k + Metrics: + Top 1 Accuracy: 81.43 + Top 5 Accuracy: 95.45 + Task: Image Classification + Weights: https://download.openmmlab.com/mmclassification/v0/poolformer/poolformer-s36_3rdparty_32xb128_in1k_20220414-d78ff3e8.pth + Config: configs/poolformer/poolformer-s36_32xb128_in1k.py + Converted From: + Weights: https://github.com/sail-sg/poolformer/releases/download/v1.0/poolformer_s36.pth.tar + Code: https://github.com/sail-sg/poolformer + - Name: poolformer-m36_3rdparty_32xb128_in1k + Metadata: + Training Data: ImageNet-1k + FLOPs: 8960175744 + Parameters: 56172520 + In Collections: PoolFormer + Results: + - Dataset: ImageNet-1k + Metrics: + Top 1 Accuracy: 82.14 + Top 5 Accuracy: 95.71 + Task: Image Classification + Weights: https://download.openmmlab.com/mmclassification/v0/poolformer/poolformer-m36_3rdparty_32xb128_in1k_20220414-c55e0949.pth + Config: configs/poolformer/poolformer-m36_32xb128_in1k.py + Converted From: + Weights: https://github.com/sail-sg/poolformer/releases/download/v1.0/poolformer_m36.pth.tar + Code: https://github.com/sail-sg/poolformer + - Name: poolformer-m48_3rdparty_32xb128_in1k + Metadata: + FLOPs: 11801805696 + Parameters: 73473448 + In Collections: PoolFormer + Results: + - Dataset: ImageNet-1k + Metrics: + Top 1 Accuracy: 82.51 + Top 5 Accuracy: 95.95 + Task: Image Classification + Weights: https://download.openmmlab.com/mmclassification/v0/poolformer/poolformer-m48_3rdparty_32xb128_in1k_20220414-9378f3eb.pth + Config: configs/poolformer/poolformer-m48_32xb128_in1k.py + Converted From: + Weights: https://github.com/sail-sg/poolformer/releases/download/v1.0/poolformer_m48.pth.tar + Code: https://github.com/sail-sg/poolformer diff --git a/openmmlab_test/mmclassification-0.24.1/configs/poolformer/poolformer-m36_32xb128_in1k.py b/openmmlab_test/mmclassification-0.24.1/configs/poolformer/poolformer-m36_32xb128_in1k.py new file mode 100644 index 00000000..1937a786 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/poolformer/poolformer-m36_32xb128_in1k.py @@ -0,0 +1,8 @@ +_base_ = [ + '../_base_/models/poolformer/poolformer_m36.py', + '../_base_/datasets/imagenet_bs128_poolformer_medium_224.py', + '../_base_/schedules/imagenet_bs1024_adamw_swin.py', + '../_base_/default_runtime.py', +] + +optimizer = dict(lr=4e-3) diff --git a/openmmlab_test/mmclassification-0.24.1/configs/poolformer/poolformer-m48_32xb128_in1k.py b/openmmlab_test/mmclassification-0.24.1/configs/poolformer/poolformer-m48_32xb128_in1k.py new file mode 100644 index 00000000..a65b76a6 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/poolformer/poolformer-m48_32xb128_in1k.py @@ -0,0 +1,8 @@ +_base_ = [ + '../_base_/models/poolformer/poolformer_m48.py', + '../_base_/datasets/imagenet_bs128_poolformer_medium_224.py', + '../_base_/schedules/imagenet_bs1024_adamw_swin.py', + '../_base_/default_runtime.py', +] + +optimizer = dict(lr=4e-3) diff --git a/openmmlab_test/mmclassification-0.24.1/configs/poolformer/poolformer-s12_32xb128_in1k.py b/openmmlab_test/mmclassification-0.24.1/configs/poolformer/poolformer-s12_32xb128_in1k.py new file mode 100644 index 00000000..98027c07 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/poolformer/poolformer-s12_32xb128_in1k.py @@ -0,0 +1,8 @@ +_base_ = [ + '../_base_/models/poolformer/poolformer_s12.py', + '../_base_/datasets/imagenet_bs128_poolformer_small_224.py', + '../_base_/schedules/imagenet_bs1024_adamw_swin.py', + '../_base_/default_runtime.py', +] + +optimizer = dict(lr=4e-3) diff --git a/openmmlab_test/mmclassification-0.24.1/configs/poolformer/poolformer-s24_32xb128_in1k.py b/openmmlab_test/mmclassification-0.24.1/configs/poolformer/poolformer-s24_32xb128_in1k.py new file mode 100644 index 00000000..97742594 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/poolformer/poolformer-s24_32xb128_in1k.py @@ -0,0 +1,8 @@ +_base_ = [ + '../_base_/models/poolformer/poolformer_s24.py', + '../_base_/datasets/imagenet_bs128_poolformer_small_224.py', + '../_base_/schedules/imagenet_bs1024_adamw_swin.py', + '../_base_/default_runtime.py', +] + +optimizer = dict(lr=4e-3) diff --git a/openmmlab_test/mmclassification-0.24.1/configs/poolformer/poolformer-s36_32xb128_in1k.py b/openmmlab_test/mmclassification-0.24.1/configs/poolformer/poolformer-s36_32xb128_in1k.py new file mode 100644 index 00000000..4d742d37 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/poolformer/poolformer-s36_32xb128_in1k.py @@ -0,0 +1,8 @@ +_base_ = [ + '../_base_/models/poolformer/poolformer_s36.py', + '../_base_/datasets/imagenet_bs128_poolformer_small_224.py', + '../_base_/schedules/imagenet_bs1024_adamw_swin.py', + '../_base_/default_runtime.py', +] + +optimizer = dict(lr=4e-3) diff --git a/openmmlab_test/mmclassification-0.24.1/configs/regnet/README.md b/openmmlab_test/mmclassification-0.24.1/configs/regnet/README.md new file mode 100644 index 00000000..1ae074d6 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/regnet/README.md @@ -0,0 +1,51 @@ +# RegNet + +> [Designing Network Design Spaces](https://arxiv.org/abs/2003.13678) + + + +## Abstract + +In this work, we present a new network design paradigm. Our goal is to help advance the understanding of network design and discover design principles that generalize across settings. Instead of focusing on designing individual network instances, we design network design spaces that parametrize populations of networks. The overall process is analogous to classic manual design of networks, but elevated to the design space level. Using our methodology we explore the structure aspect of network design and arrive at a low-dimensional design space consisting of simple, regular networks that we call RegNet. The core insight of the RegNet parametrization is surprisingly simple: widths and depths of good networks can be explained by a quantized linear function. We analyze the RegNet design space and arrive at interesting findings that do not match the current practice of network design. The RegNet design space provides simple and fast networks that work well across a wide range of flop regimes. Under comparable training settings and flops, the RegNet models outperform the popular EfficientNet models while being up to 5x faster on GPUs. + +
+ +
+ +## Results and models + +### ImageNet-1k + +| Model | Params(M) | Flops(G) | Top-1 (%) | Top-5 (%) | Config | Download | +| :-------------: | :-------: | :------: | :-------: | :-------: | :------------------------------------------------------------------------: | :--------------------------------------------------------------------------: | +| RegNetX-400MF | 5.16 | 0.41 | 72.56 | 90.78 | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/regnet/regnetx-400mf_8xb128_in1k.py) | [model](https://download.openmmlab.com/mmclassification/v0/regnet/regnetx-400mf_8xb128_in1k_20211213-89bfc226.pth) \| [log](https://download.openmmlab.com/mmclassification/v0/regnet/regnetx-400mf_8xb128_in1k_20211208_143316.log.json) | +| RegNetX-800MF | 7.26 | 0.81 | 74.76 | 92.32 | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/regnet/regnetx-800mf_8xb128_in1k.py) | [model](https://download.openmmlab.com/mmclassification/v0/regnet/regnetx-800mf_8xb128_in1k_20211213-222b0f11.pth) \| [log](https://download.openmmlab.com/mmclassification/v0/regnet/regnetx-800mf_8xb128_in1k_20211207_143037.log.json) | +| RegNetX-1.6GF | 9.19 | 1.63 | 76.84 | 93.31 | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/regnet/regnetx-1.6gf_8xb128_in1k.py) | [model](https://download.openmmlab.com/mmclassification/v0/regnet/regnetx-1.6gf_8xb128_in1k_20211213-d1b89758.pth) \| [log](https://download.openmmlab.com/mmclassification/v0/regnet/regnetx-1.6gf_8xb128_in1k_20211208_143018.log.json) | +| RegNetX-3.2GF | 15.3 | 3.21 | 78.09 | 94.08 | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/regnet/regnetx-3.2gf_8xb64_in1k.py) | [model](https://download.openmmlab.com/mmclassification/v0/regnet/regnetx-3.2gf_8xb64_in1k_20211213-1fdd82ae.pth) \| [log](https://download.openmmlab.com/mmclassification/v0/regnet/regnetx-3.2gf_8xb64_in1k_20211208_142720.log.json) | +| RegNetX-4.0GF | 22.12 | 4.0 | 78.60 | 94.17 | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/regnet/regnetx-4.0gf_8xb64_in1k.py) | [model](https://download.openmmlab.com/mmclassification/v0/regnet/regnetx-4.0gf_8xb64_in1k_20211213-efed675c.pth) \| [log](https://download.openmmlab.com/mmclassification/v0/regnet/regnetx-4.0gf_8xb64_in1k_20211207_150431.log.json) | +| RegNetX-6.4GF | 26.21 | 6.51 | 79.38 | 94.65 | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/regnet/regnetx-6.4gf_8xb64_in1k.py) | [model](https://download.openmmlab.com/mmclassification/v0/regnet/regnetx-6.4gf_8xb64_in1k_20211215-5c6089da.pth) \| [log](https://download.openmmlab.com/mmclassification/v0/regnet/regnetx-6.4gf_8xb64_in1k_20211213_172748.log.json) | +| RegNetX-8.0GF | 39.57 | 8.03 | 79.12 | 94.51 | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/regnet/regnetx-8.0gf_8xb64_in1k.py) | [model](https://download.openmmlab.com/mmclassification/v0/regnet/regnetx-8.0gf_8xb64_in1k_20211213-9a9fcc76.pth) \| [log](https://download.openmmlab.com/mmclassification/v0/regnet/regnetx-8.0gf_8xb64_in1k_20211208_103250.log.json) | +| RegNetX-12GF | 46.11 | 12.15 | 79.67 | 95.03 | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/regnet/regnetx-12gf_8xb64_in1k.py) | [model](https://download.openmmlab.com/mmclassification/v0/regnet/regnetx-12gf_8xb64_in1k_20211213-5df8c2f8.pth) \| [log](https://download.openmmlab.com/mmclassification/v0/regnet/regnetx-12gf_8xb64_in1k_20211208_143713.log.json) | +| RegNetX-400MF\* | 5.16 | 0.41 | 72.55 | 90.91 | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/regnet/regnetx-400mf_8xb128_in1k) | [model](https://download.openmmlab.com/mmclassification/v0/regnet/convert/RegNetX-400MF-0db9f35c.pth) | +| RegNetX-800MF\* | 7.26 | 0.81 | 75.21 | 92.37 | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/regnet/regnetx-800mf_8xb128_in1k.py) | [model](https://download.openmmlab.com/mmclassification/v0/regnet/convert/RegNetX-800MF-4f9d1e8a.pth) | +| RegNetX-1.6GF\* | 9.19 | 1.63 | 77.04 | 93.51 | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/regnet/regnetx-1.6gf_8xb128_in1k.py) | [model](https://download.openmmlab.com/mmclassification/v0/regnet/convert/RegNetX-1.6GF-cfb32375.pth) | +| RegNetX-3.2GF\* | 15.3 | 3.21 | 78.26 | 94.20 | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/regnet/regnetx-3.2gf_8xb64_in1k.py) | [model](https://download.openmmlab.com/mmclassification/v0/regnet/convert/RegNetX-3.2GF-82c43fd5.pth) | +| RegNetX-4.0GF\* | 22.12 | 4.0 | 78.72 | 94.22 | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/regnet/regnetx-4.0gf_8xb64_in1k.py) | [model](https://download.openmmlab.com/mmclassification/v0/regnet/convert/RegNetX-4.0GF-ef8bb32c.pth) | +| RegNetX-6.4GF\* | 26.21 | 6.51 | 79.22 | 94.61 | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/regnet/regnetx-6.4gf_8xb64_in1k.py) | [model](https://download.openmmlab.com/mmclassification/v0/regnet/convert/RegNetX-6.4GF-6888c0ea.pth) | +| RegNetX-8.0GF\* | 39.57 | 8.03 | 79.31 | 94.57 | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/regnet/regnetx-8.0gf_8xb64_in1k.py) | [model](https://download.openmmlab.com/mmclassification/v0/regnet/convert/RegNetX-8.0GF-cb4c77ec.pth) | +| RegNetX-12GF\* | 46.11 | 12.15 | 79.91 | 94.78 | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/regnet/regnetx-12gf_8xb64_in1k.py) | [model](https://download.openmmlab.com/mmclassification/v0/regnet/convert/RegNetX-12GF-0574538f.pth) | + +*Models with * are converted from [pycls](https://github.com/facebookresearch/pycls/blob/master/MODEL_ZOO.md). The config files of these models are only for validation.* + +## Citation + +``` +@article{radosavovic2020designing, + title={Designing Network Design Spaces}, + author={Ilija Radosavovic and Raj Prateek Kosaraju and Ross Girshick and Kaiming He and Piotr Dollár}, + year={2020}, + eprint={2003.13678}, + archivePrefix={arXiv}, + primaryClass={cs.CV} +} +``` diff --git a/openmmlab_test/mmclassification-0.24.1/configs/regnet/metafile.yml b/openmmlab_test/mmclassification-0.24.1/configs/regnet/metafile.yml new file mode 100644 index 00000000..6b301abb --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/regnet/metafile.yml @@ -0,0 +1,122 @@ +Collections: + - Name: RegNet + Metadata: + Training Data: ImageNet-1k + Architecture: + - Neural Architecture Search + - Design Space Design + - Precise BN + - SGD with nesterov + Paper: + URL: https://arxiv.org/abs/2003.13678 + Title: Designing Network Design Spaces + README: configs/regnet/README.md + Code: + URL: https://github.com/open-mmlab/mmclassification/blob/v0.18.0/mmcls/models/backbones/regnet.py + Version: v0.18.0 + +Models: + - Name: regnetx-400mf_8xb128_in1k + In Collection: RegNet + Config: configs/regnet/regnetx-400mf_8xb128_in1k.py + Metadata: + FLOPs: 410000000 # 0.41G + Parameters: 5160000 # 5.16M + Results: + - Dataset: ImageNet-1k + Task: Image Classification + Metrics: + Top 1 Accuracy: 72.56 + Top 5 Accuracy: 90.78 + Weights: https://download.openmmlab.com/mmclassification/v0/regnet/regnetx-400mf_8xb128_in1k_20211213-89bfc226.pth + - Name: regnetx-800mf_8xb128_in1k + In Collection: RegNet + Config: configs/regnet/regnetx-800mf_8xb128_in1k.py + Metadata: + FLOPs: 810000000 # 0.81G + Parameters: 7260000 # 7.26M + Results: + - Dataset: ImageNet-1k + Task: Image Classification + Metrics: + Top 1 Accuracy: 74.76 + Top 5 Accuracy: 92.32 + Weights: https://download.openmmlab.com/mmclassification/v0/regnet/regnetx-800mf_8xb128_in1k_20211213-222b0f11.pth + - Name: regnetx-1.6gf_8xb128_in1k + In Collection: RegNet + Config: configs/regnet/regnetx-1.6gf_8xb128_in1k.py + Metadata: + FLOPs: 1630000000 # 1.63G + Parameters: 9190000 # 9.19M + Results: + - Dataset: ImageNet-1k + Task: Image Classification + Metrics: + Top 1 Accuracy: 76.84 + Top 5 Accuracy: 93.31 + Weights: https://download.openmmlab.com/mmclassification/v0/regnet/regnetx-1.6gf_8xb128_in1k_20211213-d1b89758.pth + - Name: regnetx-3.2gf_8xb64_in1k + In Collection: RegNet + Config: configs/regnet/regnetx-3.2gf_8xb64_in1k.py + Metadata: + FLOPs: 1530000000 # 1.53G + Parameters: 3210000 # 32.1M + Results: + - Dataset: ImageNet-1k + Task: Image Classification + Metrics: + Top 1 Accuracy: 78.09 + Top 5 Accuracy: 94.08 + Weights: https://download.openmmlab.com/mmclassification/v0/regnet/regnetx-3.2gf_8xb64_in1k_20211213-1fdd82ae.pth + - Name: regnetx-4.0gf_8xb64_in1k + In Collection: RegNet + Config: configs/regnet/regnetx-4.0gf_8xb64_in1k.py + Metadata: + FLOPs: 4000000000 # 4G + Parameters: 22120000 # 22.12M + Results: + - Dataset: ImageNet-1k + Task: Image Classification + Metrics: + Top 1 Accuracy: 78.60 + Top 5 Accuracy: 94.17 + Weights: https://download.openmmlab.com/mmclassification/v0/regnet/regnetx-4.0gf_8xb64_in1k_20211213-efed675c.pth + - Name: regnetx-6.4gf_8xb64_in1k + In Collection: RegNet + Config: configs/regnet/regnetx-6.4gf_8xb64_in1k.py + Metadata: + FLOPs: 6510000000 # 6.51G + Parameters: 26210000 # 26.21M + Results: + - Dataset: ImageNet-1k + Task: Image Classification + Metrics: + Top 1 Accuracy: 79.38 + Top 5 Accuracy: 94.65 + Weights: https://download.openmmlab.com/mmclassification/v0/regnet/regnetx-6.4gf_8xb64_in1k_20211215-5c6089da.pth + - Name: regnetx-8.0gf_8xb64_in1k + In Collection: RegNet + Config: configs/regnet/regnetx-8.0gf_8xb64_in1k.py + Metadata: + FLOPs: 8030000000 # 8.03G + Parameters: 39570000 # 39.57M + Results: + - Dataset: ImageNet-1k + Task: Image Classification + Metrics: + Top 1 Accuracy: 79.12 + Top 5 Accuracy: 94.51 + Weights: https://download.openmmlab.com/mmclassification/v0/regnet/regnetx-8.0gf_8xb64_in1k_20211213-9a9fcc76.pth + - Name: regnetx-12gf_8xb64_in1k + In Collection: RegNet + Config: configs/regnet/regnetx-12gf_8xb64_in1k.py + Metadata: + FLOPs: 12150000000 # 12.15G + Parameters: 46110000 # 46.11M + Results: + - Dataset: ImageNet-1k + Task: Image Classification + Metrics: + Top 1 Accuracy: 79.67 + Top 5 Accuracy: 95.03 + Weights: https://download.openmmlab.com/mmclassification/v0/regnet/regnetx-12gf_8xb64_in1k_20211213-5df8c2f8.pth diff --git a/openmmlab_test/mmclassification-0.24.1/configs/regnet/regnetx-1.6gf_8xb128_in1k.py b/openmmlab_test/mmclassification-0.24.1/configs/regnet/regnetx-1.6gf_8xb128_in1k.py new file mode 100644 index 00000000..d3e9e934 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/regnet/regnetx-1.6gf_8xb128_in1k.py @@ -0,0 +1,6 @@ +_base_ = ['./regnetx-400mf_8xb128_in1k.py'] + +# model settings +model = dict( + backbone=dict(type='RegNet', arch='regnetx_1.6gf'), + head=dict(in_channels=912, )) diff --git a/openmmlab_test/mmclassification-0.24.1/configs/regnet/regnetx-12gf_8xb64_in1k.py b/openmmlab_test/mmclassification-0.24.1/configs/regnet/regnetx-12gf_8xb64_in1k.py new file mode 100644 index 00000000..5da0ebe9 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/regnet/regnetx-12gf_8xb64_in1k.py @@ -0,0 +1,11 @@ +_base_ = ['./regnetx-400mf_8xb128_in1k.py'] + +# model settings +model = dict( + backbone=dict(type='RegNet', arch='regnetx_12gf'), + head=dict(in_channels=2240, )) + +# for batch_size 512, use lr = 0.4 +optimizer = dict(lr=0.4) + +data = dict(samples_per_gpu=64, ) diff --git a/openmmlab_test/mmclassification-0.24.1/configs/regnet/regnetx-3.2gf_8xb64_in1k.py b/openmmlab_test/mmclassification-0.24.1/configs/regnet/regnetx-3.2gf_8xb64_in1k.py new file mode 100644 index 00000000..98c4a0b3 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/regnet/regnetx-3.2gf_8xb64_in1k.py @@ -0,0 +1,11 @@ +_base_ = ['./regnetx-400mf_8xb128_in1k.py'] + +# model settings +model = dict( + backbone=dict(type='RegNet', arch='regnetx_3.2gf'), + head=dict(in_channels=1008, )) + +# for batch_size 512, use lr = 0.4 +optimizer = dict(lr=0.4) + +data = dict(samples_per_gpu=64, ) diff --git a/openmmlab_test/mmclassification-0.24.1/configs/regnet/regnetx-4.0gf_8xb64_in1k.py b/openmmlab_test/mmclassification-0.24.1/configs/regnet/regnetx-4.0gf_8xb64_in1k.py new file mode 100644 index 00000000..87bc8470 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/regnet/regnetx-4.0gf_8xb64_in1k.py @@ -0,0 +1,11 @@ +_base_ = ['./regnetx-400mf_8xb128_in1k.py'] + +# model settings +model = dict( + backbone=dict(type='RegNet', arch='regnetx_4.0gf'), + head=dict(in_channels=1360, )) + +# for batch_size 512, use lr = 0.4 +optimizer = dict(lr=0.4) + +data = dict(samples_per_gpu=64, ) diff --git a/openmmlab_test/mmclassification-0.24.1/configs/regnet/regnetx-400mf_8xb128_in1k.py b/openmmlab_test/mmclassification-0.24.1/configs/regnet/regnetx-400mf_8xb128_in1k.py new file mode 100644 index 00000000..86fee908 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/regnet/regnetx-400mf_8xb128_in1k.py @@ -0,0 +1,77 @@ +_base_ = [ + '../_base_/models/regnet/regnetx_400mf.py', + '../_base_/datasets/imagenet_bs32.py', + '../_base_/schedules/imagenet_bs1024_coslr.py', + '../_base_/default_runtime.py' +] + +# Precise BN hook will update the bn stats, so this hook should be executed +# before CheckpointHook, which has priority of 'NORMAL'. So set the +# priority of PreciseBNHook to 'ABOVE_NORMAL' here. +custom_hooks = [ + dict( + type='PreciseBNHook', + num_samples=8192, + interval=1, + priority='ABOVE_NORMAL') +] + +# sgd with nesterov, base ls is 0.8 for batch_size 1024, +# 0.4 for batch_size 512 and 0.2 for batch_size 256 when training ImageNet1k +optimizer = dict(lr=0.8, nesterov=True) + +# dataset settings +dataset_type = 'ImageNet' + +# normalization params, in order of BGR +NORM_MEAN = [103.53, 116.28, 123.675] +NORM_STD = [57.375, 57.12, 58.395] + +# lighting params, in order of RGB, from repo. pycls +EIGVAL = [0.2175, 0.0188, 0.0045] +EIGVEC = [[-0.5675, 0.7192, 0.4009], [-0.5808, -0.0045, -0.814], + [-0.5836, -0.6948, 0.4203]] + +train_pipeline = [ + dict(type='LoadImageFromFile'), + dict(type='RandomResizedCrop', size=224), + dict(type='RandomFlip', flip_prob=0.5, direction='horizontal'), + dict( + type='Lighting', + eigval=EIGVAL, + eigvec=EIGVEC, + alphastd=25.5, # because the value range of images is [0,255] + to_rgb=True + ), # BGR image from cv2 in LoadImageFromFile, convert to RGB here + dict(type='Normalize', mean=NORM_MEAN, std=NORM_STD, + to_rgb=True), # RGB2BGR + dict(type='ImageToTensor', keys=['img']), + dict(type='ToTensor', keys=['gt_label']), + dict(type='Collect', keys=['img', 'gt_label']) +] +test_pipeline = [ + dict(type='LoadImageFromFile'), + dict(type='Resize', size=(256, -1)), + dict(type='CenterCrop', crop_size=224), + dict(type='Normalize', mean=NORM_MEAN, std=NORM_STD, to_rgb=False), + dict(type='ImageToTensor', keys=['img']), + dict(type='Collect', keys=['img']) +] +data = dict( + samples_per_gpu=128, + workers_per_gpu=8, + train=dict( + type=dataset_type, + data_prefix='data/imagenet/train', + pipeline=train_pipeline), + val=dict( + type=dataset_type, + data_prefix='data/imagenet/val', + ann_file='data/imagenet/meta/val.txt', + pipeline=test_pipeline), + test=dict( + # replace `data/val` with `data/test` for standard test + type=dataset_type, + data_prefix='data/imagenet/val', + ann_file='data/imagenet/meta/val.txt', + pipeline=test_pipeline)) diff --git a/openmmlab_test/mmclassification-0.24.1/configs/regnet/regnetx-6.4gf_8xb64_in1k.py b/openmmlab_test/mmclassification-0.24.1/configs/regnet/regnetx-6.4gf_8xb64_in1k.py new file mode 100644 index 00000000..02ee424b --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/regnet/regnetx-6.4gf_8xb64_in1k.py @@ -0,0 +1,11 @@ +_base_ = ['./regnetx-400mf_8xb128_in1k.py'] + +# model settings +model = dict( + backbone=dict(type='RegNet', arch='regnetx_6.4gf'), + head=dict(in_channels=1624, )) + +# for batch_size 512, use lr = 0.4 +optimizer = dict(lr=0.4) + +data = dict(samples_per_gpu=64, ) diff --git a/openmmlab_test/mmclassification-0.24.1/configs/regnet/regnetx-8.0gf_8xb64_in1k.py b/openmmlab_test/mmclassification-0.24.1/configs/regnet/regnetx-8.0gf_8xb64_in1k.py new file mode 100644 index 00000000..84ab8114 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/regnet/regnetx-8.0gf_8xb64_in1k.py @@ -0,0 +1,11 @@ +_base_ = ['./regnetx-400mf_8xb128_in1k.py'] + +# model settings +model = dict( + backbone=dict(type='RegNet', arch='regnetx_8.0gf'), + head=dict(in_channels=1920, )) + +# for batch_size 512, use lr = 0.4 +optimizer = dict(lr=0.4) + +data = dict(samples_per_gpu=64, ) diff --git a/openmmlab_test/mmclassification-0.24.1/configs/regnet/regnetx-800mf_8xb128_in1k.py b/openmmlab_test/mmclassification-0.24.1/configs/regnet/regnetx-800mf_8xb128_in1k.py new file mode 100644 index 00000000..9cd71379 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/regnet/regnetx-800mf_8xb128_in1k.py @@ -0,0 +1,6 @@ +_base_ = ['./regnetx-400mf_8xb128_in1k.py'] + +# model settings +model = dict( + backbone=dict(type='RegNet', arch='regnetx_800mf'), + head=dict(in_channels=672, )) diff --git a/openmmlab_test/mmclassification-0.24.1/configs/repmlp/README.md b/openmmlab_test/mmclassification-0.24.1/configs/repmlp/README.md new file mode 100644 index 00000000..45334635 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/repmlp/README.md @@ -0,0 +1,93 @@ +# RepMLP + +> [RepMLP: Re-parameterizing Convolutions into Fully-connected Layers forImage Recognition](https://arxiv.org/abs/2105.01883) + + + +## Abstract + +We propose RepMLP, a multi-layer-perceptron-style neural network building block for image recognition, which is composed of a series of fully-connected (FC) layers. Compared to convolutional layers, FC layers are more efficient, better at modeling the long-range dependencies and positional patterns, but worse at capturing the local structures, hence usually less favored for image recognition. We propose a structural re-parameterization technique that adds local prior into an FC to make it powerful for image recognition. Specifically, we construct convolutional layers inside a RepMLP during training and merge them into the FC for inference. On CIFAR, a simple pure-MLP model shows performance very close to CNN. By inserting RepMLP in traditional CNN, we improve ResNets by 1.8% accuracy on ImageNet, 2.9% for face recognition, and 2.3% mIoU on Cityscapes with lower FLOPs. Our intriguing findings highlight that combining the global representational capacity and positional perception of FC with the local prior of convolution can improve the performance of neural network with faster speed on both the tasks with translation invariance (e.g., semantic segmentation) and those with aligned images and positional patterns (e.g., face recognition). + +
+ +
+ +## Results and models + +### ImageNet-1k + +| Model | Params(M) | Flops(G) | Top-1 (%) | Top-5 (%) | Config | Download | +| :-----------: | :-------: | :------: | :-------: | :-------: | :-------------------------------------------------------------------------: | :---------------------------------------------------------------------------: | +| RepMLP-B224\* | 68.24 | 6.71 | 80.41 | 95.12 | [train_cfg](https://github.com/open-mmlab/mmclassification/blob/master/configs/repmlp/repmlp-base_8xb64_in1k.py) \| [deploy_cfg](https://github.com/open-mmlab/mmclassification/blob/master/configs/repmlp/repmlp-base_delopy_8xb64_in1k.py) | [model](https://download.openmmlab.com/mmclassification/v0/repmlp/repmlp-base_3rdparty_8xb64_in1k_20220330-1cb1f11b.pth) | +| RepMLP-B256\* | 96.45 | 9.69 | 81.11 | 95.5 | [train_cfg](https://github.com/open-mmlab/mmclassification/blob/master/configs/repmlp/repmlp-base_8xb64_in1k-256px.py) \| [deploy_cfg](https://github.com/open-mmlab/mmclassification/blob/master/configs/repmlp/repmlp-b256_deploy_8xb64_in1k.py) | [model](https://download.openmmlab.com/mmclassification/v0/repmlp/repmlp-base_3rdparty_8xb64_in1k-256px_20220330-7c5a91ce.pth) | + +*Models with * are converted from [the official repo.](https://github.com/DingXiaoH/RepMLP). The config files of these models are only for validation. We don't ensure these config files' training accuracy and welcome you to contribute your reproduction results.* + +## How to use + +The checkpoints provided are all `training-time` models. Use the reparameterize tool to switch them to more efficient `inference-time` architecture, which not only has fewer parameters but also less calculations. + +### Use tool + +Use provided tool to reparameterize the given model and save the checkpoint: + +```bash +python tools/convert_models/reparameterize_model.py ${CFG_PATH} ${SRC_CKPT_PATH} ${TARGET_CKPT_PATH} +``` + +`${CFG_PATH}` is the config file, `${SRC_CKPT_PATH}` is the source chenpoint file, `${TARGET_CKPT_PATH}` is the target deploy weight file path. + +To use reparameterized weights, the config file must switch to the deploy config files. + +```bash +python tools/test.py ${Deploy_CFG} ${Deploy_Checkpoint} --metrics accuracy +``` + +### In the code + +Use `backbone.switch_to_deploy()` or `classificer.backbone.switch_to_deploy()` to switch to the deploy mode. For example: + +```python +from mmcls.models import build_backbone + +backbone_cfg=dict(type='RepMLPNet', arch='B', img_size=224, reparam_conv_kernels=(1, 3), deploy=False) +backbone = build_backbone(backbone_cfg) +backbone.switch_to_deploy() +``` + +or + +```python +from mmcls.models import build_classifier + +cfg = dict( + type='ImageClassifier', + backbone=dict( + type='RepMLPNet', + arch='B', + img_size=224, + reparam_conv_kernels=(1, 3), + deploy=False), + neck=dict(type='GlobalAveragePooling'), + head=dict( + type='LinearClsHead', + num_classes=1000, + in_channels=768, + loss=dict(type='CrossEntropyLoss', loss_weight=1.0), + topk=(1, 5), + )) + +classifier = build_classifier(cfg) +classifier.backbone.switch_to_deploy() +``` + +## Citation + +``` +@article{ding2021repmlp, + title={Repmlp: Re-parameterizing convolutions into fully-connected layers for image recognition}, + author={Ding, Xiaohan and Xia, Chunlong and Zhang, Xiangyu and Chu, Xiaojie and Han, Jungong and Ding, Guiguang}, + journal={arXiv preprint arXiv:2105.01883}, + year={2021} +} +``` diff --git a/openmmlab_test/mmclassification-0.24.1/configs/repmlp/metafile.yml b/openmmlab_test/mmclassification-0.24.1/configs/repmlp/metafile.yml new file mode 100644 index 00000000..19caecbe --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/repmlp/metafile.yml @@ -0,0 +1,48 @@ +Collections: + - Name: RepMLP + Metadata: + Training Data: ImageNet-1k + Architecture: + - Multi-layer Perceptron + - Re-parameterization Convolution + Paper: + URL: https://arxiv.org/abs/2105.01883 + Title: 'RepMLP: Re-parameterizing Convolutions into Fully-connected Layers for Image Recognition' + README: configs/repmlp/README.md + Code: + URL: https://github.com/open-mmlab/mmclassification/blob/v0.21.0/mmcls/models/backbones/repmlp.py + Version: v0.21.0 + +Models: + - Name: repmlp-base_3rdparty_8xb64_in1k + In Collection: RepMLP + Config: configs/repmlp/repmlp-base_8xb64_in1k.py + Metadata: + FLOPs: 6710000000 # 6.71 G + Parameters: 68240000 # 68.24 M + Results: + - Dataset: ImageNet-1k + Metrics: + Top 1 Accuracy: 80.41 + Top 5 Accuracy: 95.14 + Task: Image Classification + Weights: https://download.openmmlab.com/mmclassification/v0/repmlp/repmlp-base_3rdparty_8xb64_in1k_20220330-1cb1f11b.pth + Converted From: + Weights: https://github.com/DingXiaoH/RepMLP + Code: https://github.com/DingXiaoH/RepMLP/blob/072d8516beba83d75dfe6ebb12f625abad4b53d5/repmlpnet.py#L274 + - Name: repmlp-base_3rdparty_8xb64_in1k-256px.py + In Collection: RepMLP + Config: configs/repmlp/repmlp-base_8xb64_in1k-256px.py + Metadata: + FLOPs: 9690000000 # 9.69 G + Parameters: 96450000 # 96.45M + Results: + - Dataset: ImageNet-1k + Metrics: + Top 1 Accuracy: 81.11 + Top 5 Accuracy: 95.50 + Task: Image Classification + Weights: https://download.openmmlab.com/mmclassification/v0/repmlp/repmlp-base_3rdparty_8xb64_in1k-256px_20220330-7c5a91ce.pth + Converted From: + Weights: https://github.com/DingXiaoH/RepMLP + Code: https://github.com/DingXiaoH/RepMLP/blob/072d8516beba83d75dfe6ebb12f625abad4b53d5/repmlpnet.py#L278 diff --git a/openmmlab_test/mmclassification-0.24.1/configs/repmlp/repmlp-base_8xb64_in1k-256px.py b/openmmlab_test/mmclassification-0.24.1/configs/repmlp/repmlp-base_8xb64_in1k-256px.py new file mode 100644 index 00000000..ff03c6f9 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/repmlp/repmlp-base_8xb64_in1k-256px.py @@ -0,0 +1,21 @@ +_base_ = [ + '../_base_/models/repmlp-base_224.py', + '../_base_/datasets/imagenet_bs64_mixer_224.py', + '../_base_/schedules/imagenet_bs4096_AdamW.py', + '../_base_/default_runtime.py' +] + +model = dict(backbone=dict(img_size=256)) + +img_norm_cfg = dict( + mean=[123.675, 116.28, 103.53], std=[58.395, 57.12, 57.375], to_rgb=True) +test_pipeline = [ + dict(type='LoadImageFromFile'), + dict(type='Resize', size=(256 * 256 // 224, -1), backend='pillow'), + dict(type='CenterCrop', crop_size=256), + dict(type='Normalize', **img_norm_cfg), + dict(type='ImageToTensor', keys=['img']), + dict(type='Collect', keys=['img']) +] +data = dict( + val=dict(pipeline=test_pipeline), test=dict(pipeline=test_pipeline)) diff --git a/openmmlab_test/mmclassification-0.24.1/configs/repmlp/repmlp-base_8xb64_in1k.py b/openmmlab_test/mmclassification-0.24.1/configs/repmlp/repmlp-base_8xb64_in1k.py new file mode 100644 index 00000000..430cdc0c --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/repmlp/repmlp-base_8xb64_in1k.py @@ -0,0 +1,20 @@ +_base_ = [ + '../_base_/models/repmlp-base_224.py', + '../_base_/datasets/imagenet_bs64_pil_resize.py', + '../_base_/schedules/imagenet_bs1024_adamw_swin.py', + '../_base_/default_runtime.py' +] + +img_norm_cfg = dict( + mean=[123.675, 116.28, 103.53], std=[58.395, 57.12, 57.375], to_rgb=True) +test_pipeline = [ + dict(type='LoadImageFromFile'), + # resizing to (256, 256) here, different with resizing shorter edge to 256 + dict(type='Resize', size=(256, 256), backend='pillow'), + dict(type='CenterCrop', crop_size=224), + dict(type='Normalize', **img_norm_cfg), + dict(type='ImageToTensor', keys=['img']), + dict(type='Collect', keys=['img']) +] +data = dict( + val=dict(pipeline=test_pipeline), test=dict(pipeline=test_pipeline)) diff --git a/openmmlab_test/mmclassification-0.24.1/configs/repmlp/repmlp-base_delopy_8xb64_in1k.py b/openmmlab_test/mmclassification-0.24.1/configs/repmlp/repmlp-base_delopy_8xb64_in1k.py new file mode 100644 index 00000000..b5b2c882 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/repmlp/repmlp-base_delopy_8xb64_in1k.py @@ -0,0 +1,3 @@ +_base_ = ['./repmlp-base_8xb64_in1k.py'] + +model = dict(backbone=dict(deploy=True)) diff --git a/openmmlab_test/mmclassification-0.24.1/configs/repmlp/repmlp-base_deploy_8xb64_in1k-256px.py b/openmmlab_test/mmclassification-0.24.1/configs/repmlp/repmlp-base_deploy_8xb64_in1k-256px.py new file mode 100644 index 00000000..27ff50a0 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/repmlp/repmlp-base_deploy_8xb64_in1k-256px.py @@ -0,0 +1,3 @@ +_base_ = ['./repmlp-base_8xb64_in1k-256px.py'] + +model = dict(backbone=dict(deploy=True)) diff --git a/openmmlab_test/mmclassification-0.24.1/configs/repvgg/README.md b/openmmlab_test/mmclassification-0.24.1/configs/repvgg/README.md new file mode 100644 index 00000000..b9341326 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/repvgg/README.md @@ -0,0 +1,101 @@ +# RepVGG + +> [Repvgg: Making vgg-style convnets great again](https://arxiv.org/abs/2101.03697) + + + +## Abstract + +We present a simple but powerful architecture of convolutional neural network, which has a VGG-like inference-time body composed of nothing but a stack of 3x3 convolution and ReLU, while the training-time model has a multi-branch topology. Such decoupling of the training-time and inference-time architecture is realized by a structural re-parameterization technique so that the model is named RepVGG. On ImageNet, RepVGG reaches over 80% top-1 accuracy, which is the first time for a plain model, to the best of our knowledge. On NVIDIA 1080Ti GPU, RepVGG models run 83% faster than ResNet-50 or 101% faster than ResNet-101 with higher accuracy and show favorable accuracy-speed trade-off compared to the state-of-the-art models like EfficientNet and RegNet. + +
+ +
+ +## Results and models + +### ImageNet-1k + +| Model | Epochs | Params(M) | Flops(G) | Top-1 (%) | Top-5 (%) | Config | Download | +| :-----------: | :----: | :-------------------------------: | :-----------------------------: | :-------: | :-------: | :----------------------------------------------: | :-------------------------------------------------: | +| RepVGG-A0\* | 120 | 9.11(train) \| 8.31 (deploy) | 1.52 (train) \| 1.36 (deploy) | 72.41 | 90.50 | [config (train)](https://github.com/open-mmlab/mmclassification/blob/master/configs/repvgg/repvgg-A0_4xb64-coslr-120e_in1k.py) \| [config (deploy)](https://github.com/open-mmlab/mmclassification/blob/master/configs/repvgg/deploy/repvgg-A0_deploy_4xb64-coslr-120e_in1k.py) | [model](https://download.openmmlab.com/mmclassification/v0/repvgg/repvgg-A0_3rdparty_4xb64-coslr-120e_in1k_20210909-883ab98c.pth) | +| RepVGG-A1\* | 120 | 14.09 (train) \| 12.79 (deploy) | 2.64 (train) \| 2.37 (deploy) | 74.47 | 91.85 | [config (train)](https://github.com/open-mmlab/mmclassification/blob/master/configs/repvgg/repvgg-A1_4xb64-coslr-120e_in1k.py) \| [config (deploy)](https://github.com/open-mmlab/mmclassification/blob/master/configs/repvgg/deploy/repvgg-A1_deploy_4xb64-coslr-120e_in1k.py) | [model](https://download.openmmlab.com/mmclassification/v0/repvgg/repvgg-A1_3rdparty_4xb64-coslr-120e_in1k_20210909-24003a24.pth) | +| RepVGG-A2\* | 120 | 28.21 (train) \| 25.5 (deploy) | 5.7 (train) \| 5.12 (deploy) | 76.48 | 93.01 | [config (train)](https://github.com/open-mmlab/mmclassification/blob/master/configs/repvgg/repvgg-A2_4xb64-coslr-120e_in1k.py) \|[config (deploy)](https://github.com/open-mmlab/mmclassification/blob/master/configs/repvgg/deploy/repvgg-A2_deploy_4xb64-coslr-120e_in1k.py) | [model](https://download.openmmlab.com/mmclassification/v0/repvgg/repvgg-A2_3rdparty_4xb64-coslr-120e_in1k_20210909-97d7695a.pth) | +| RepVGG-B0\* | 120 | 15.82 (train) \| 14.34 (deploy) | 3.42 (train) \| 3.06 (deploy) | 75.14 | 92.42 | [config (train)](https://github.com/open-mmlab/mmclassification/blob/master/configs/repvgg/repvgg-B0_4xb64-coslr-120e_in1k.py) \|[config (deploy)](https://github.com/open-mmlab/mmclassification/blob/master/configs/repvgg/deploy/repvgg-B0_deploy_4xb64-coslr-120e_in1k.py) | [model](https://download.openmmlab.com/mmclassification/v0/repvgg/repvgg-B0_3rdparty_4xb64-coslr-120e_in1k_20210909-446375f4.pth) | +| RepVGG-B1\* | 120 | 57.42 (train) \| 51.83 (deploy) | 13.16 (train) \| 11.82 (deploy) | 78.37 | 94.11 | [config (train)](https://github.com/open-mmlab/mmclassification/blob/master/configs/repvgg/repvgg-B1_4xb64-coslr-120e_in1k.py) \|[config (deploy)](https://github.com/open-mmlab/mmclassification/blob/master/configs/repvgg/deploy/repvgg-B1_deploy_4xb64-coslr-120e_in1k.py) | [model](https://download.openmmlab.com/mmclassification/v0/repvgg/repvgg-B1_3rdparty_4xb64-coslr-120e_in1k_20210909-750cdf67.pth) | +| RepVGG-B1g2\* | 120 | 45.78 (train) \| 41.36 (deploy) | 9.82 (train) \| 8.82 (deploy) | 77.79 | 93.88 | [config (train)](https://github.com/open-mmlab/mmclassification/blob/master/configs/repvgg/repvgg-B1g2_4xb64-coslr-120e_in1k.py) \|[config (deploy)](https://github.com/open-mmlab/mmclassification/blob/master/configs/repvgg/deploy/repvgg-B1g2_deploy_4xb64-coslr-120e_in1k.py) | [model](https://download.openmmlab.com/mmclassification/v0/repvgg/repvgg-B1g2_3rdparty_4xb64-coslr-120e_in1k_20210909-344f6422.pth) | +| RepVGG-B1g4\* | 120 | 39.97 (train) \| 36.13 (deploy) | 8.15 (train) \| 7.32 (deploy) | 77.58 | 93.84 | [config (train)](https://github.com/open-mmlab/mmclassification/blob/master/configs/repvgg/repvgg-B1g4_4xb64-coslr-120e_in1k.py) \|[config (deploy)](https://github.com/open-mmlab/mmclassification/blob/master/configs/repvgg/deploy/repvgg-B1g4_deploy_4xb64-coslr-120e_in1k.py) | [model](https://download.openmmlab.com/mmclassification/v0/repvgg/repvgg-B1g4_3rdparty_4xb64-coslr-120e_in1k_20210909-d4c1a642.pth) | +| RepVGG-B2\* | 120 | 89.02 (train) \| 80.32 (deploy) | 20.46 (train) \| 18.39 (deploy) | 78.78 | 94.42 | [config (train)](https://github.com/open-mmlab/mmclassification/blob/master/configs/repvgg/repvgg-B2_4xb64-coslr-120e_in1k.py) \|[config (deploy)](https://github.com/open-mmlab/mmclassification/blob/master/configs/repvgg/deploy/repvgg-B2_deploy_4xb64-coslr-120e_in1k.py) | [model](https://download.openmmlab.com/mmclassification/v0/repvgg/repvgg-B2_3rdparty_4xb64-coslr-120e_in1k_20210909-bd6b937c.pth) | +| RepVGG-B2g4\* | 200 | 61.76 (train) \| 55.78 (deploy) | 12.63 (train) \| 11.34 (deploy) | 79.38 | 94.68 | [config (train)](https://github.com/open-mmlab/mmclassification/blob/master/configs/repvgg/repvgg-B2g4_4xb64-autoaug-lbs-mixup-coslr-200e_in1k.py) \|[config (deploy)](https://github.com/open-mmlab/mmclassification/blob/master/configs/repvgg/deploy/repvgg-B2g4_deploy_4xb64-autoaug-lbs-mixup-coslr-200e_in1k.py) | [model](https://download.openmmlab.com/mmclassification/v0/repvgg/repvgg-B2g4_3rdparty_4xb64-autoaug-lbs-mixup-coslr-200e_in1k_20210909-7b7955f0.pth) | +| RepVGG-B3\* | 200 | 123.09 (train) \| 110.96 (deploy) | 29.17 (train) \| 26.22 (deploy) | 80.52 | 95.26 | [config (train)](https://github.com/open-mmlab/mmclassification/blob/master/configs/repvgg/repvgg-B3_4xb64-autoaug-lbs-mixup-coslr-200e_in1k.py) \|[config (deploy)](https://github.com/open-mmlab/mmclassification/blob/master/configs/repvgg/deploy/repvgg-B3_deploy_4xb64-autoaug-lbs-mixup-coslr-200e_in1k.py) | [model](https://download.openmmlab.com/mmclassification/v0/repvgg/repvgg-B3_3rdparty_4xb64-autoaug-lbs-mixup-coslr-200e_in1k_20210909-dda968bf.pth) | +| RepVGG-B3g4\* | 200 | 83.83 (train) \| 75.63 (deploy) | 17.9 (train) \| 16.08 (deploy) | 80.22 | 95.10 | [config (train)](https://github.com/open-mmlab/mmclassification/blob/master/configs/repvgg/repvgg-B3g4_4xb64-autoaug-lbs-mixup-coslr-200e_in1k.py) \|[config (deploy)](https://github.com/open-mmlab/mmclassification/blob/master/configs/repvgg/deploy/repvgg-B3g4_deploy_4xb64-autoaug-lbs-mixup-coslr-200e_in1k.py) | [model](https://download.openmmlab.com/mmclassification/v0/repvgg/repvgg-B3g4_3rdparty_4xb64-autoaug-lbs-mixup-coslr-200e_in1k_20210909-4e54846a.pth) | +| RepVGG-D2se\* | 200 | 133.33 (train) \| 120.39 (deploy) | 36.56 (train) \| 32.85 (deploy) | 81.81 | 95.94 | [config (train)](https://github.com/open-mmlab/mmclassification/blob/master/configs/repvgg/repvgg-D2se_4xb64-autoaug-lbs-mixup-coslr-200e_in1k.py) \|[config (deploy)](https://github.com/open-mmlab/mmclassification/blob/master/configs/repvgg/deploy/repvgg-D2se_deploy_4xb64-autoaug-lbs-mixup-coslr-200e_in1k.py) | [model](https://download.openmmlab.com/mmclassification/v0/repvgg/repvgg-D2se_3rdparty_4xb64-autoaug-lbs-mixup-coslr-200e_in1k_20210909-cf3139b7.pth) | + +*Models with * are converted from the [official repo](https://github.com/DingXiaoH/RepVGG). The config files of these models are only for validation. We don't ensure these config files' training accuracy and welcome you to contribute your reproduction results.* + +## How to use + +The checkpoints provided are all `training-time` models. Use the reparameterize tool to switch them to more efficient `inference-time` architecture, which not only has fewer parameters but also less calculations. + +### Use tool + +Use provided tool to reparameterize the given model and save the checkpoint: + +```bash +python tools/convert_models/reparameterize_model.py ${CFG_PATH} ${SRC_CKPT_PATH} ${TARGET_CKPT_PATH} +``` + +`${CFG_PATH}` is the config file, `${SRC_CKPT_PATH}` is the source chenpoint file, `${TARGET_CKPT_PATH}` is the target deploy weight file path. + +To use reparameterized weights, the config file must switch to the deploy config files. + +```bash +python tools/test.py ${Deploy_CFG} ${Deploy_Checkpoint} --metrics accuracy +``` + +### In the code + +Use `backbone.switch_to_deploy()` or `classificer.backbone.switch_to_deploy()` to switch to the deploy mode. For example: + +```python +from mmcls.models import build_backbone + +backbone_cfg=dict(type='RepVGG',arch='A0'), +backbone = build_backbone(backbone_cfg) +backbone.switch_to_deploy() +``` + +or + +```python +from mmcls.models import build_classifier + +cfg = dict( + type='ImageClassifier', + backbone=dict( + type='RepVGG', + arch='A0'), + neck=dict(type='GlobalAveragePooling'), + head=dict( + type='LinearClsHead', + num_classes=1000, + in_channels=1280, + loss=dict(type='CrossEntropyLoss', loss_weight=1.0), + topk=(1, 5), + )) + +classifier = build_classifier(cfg) +classifier.backbone.switch_to_deploy() +``` + +## Citation + +``` +@inproceedings{ding2021repvgg, + title={Repvgg: Making vgg-style convnets great again}, + author={Ding, Xiaohan and Zhang, Xiangyu and Ma, Ningning and Han, Jungong and Ding, Guiguang and Sun, Jian}, + booktitle={Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition}, + pages={13733--13742}, + year={2021} +} +``` diff --git a/openmmlab_test/mmclassification-0.24.1/configs/repvgg/deploy/repvgg-A0_deploy_4xb64-coslr-120e_in1k.py b/openmmlab_test/mmclassification-0.24.1/configs/repvgg/deploy/repvgg-A0_deploy_4xb64-coslr-120e_in1k.py new file mode 100644 index 00000000..20787f28 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/repvgg/deploy/repvgg-A0_deploy_4xb64-coslr-120e_in1k.py @@ -0,0 +1,3 @@ +_base_ = '../repvgg-A0_4xb64-coslr-120e_in1k.py' + +model = dict(backbone=dict(deploy=True)) diff --git a/openmmlab_test/mmclassification-0.24.1/configs/repvgg/deploy/repvgg-A1_deploy_4xb64-coslr-120e_in1k.py b/openmmlab_test/mmclassification-0.24.1/configs/repvgg/deploy/repvgg-A1_deploy_4xb64-coslr-120e_in1k.py new file mode 100644 index 00000000..eea0da9c --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/repvgg/deploy/repvgg-A1_deploy_4xb64-coslr-120e_in1k.py @@ -0,0 +1,3 @@ +_base_ = '../repvgg-A1_4xb64-coslr-120e_in1k.py' + +model = dict(backbone=dict(deploy=True)) diff --git a/openmmlab_test/mmclassification-0.24.1/configs/repvgg/deploy/repvgg-A2_deploy_4xb64-coslr-120e_in1k.py b/openmmlab_test/mmclassification-0.24.1/configs/repvgg/deploy/repvgg-A2_deploy_4xb64-coslr-120e_in1k.py new file mode 100644 index 00000000..7b0cea7b --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/repvgg/deploy/repvgg-A2_deploy_4xb64-coslr-120e_in1k.py @@ -0,0 +1,3 @@ +_base_ = '../repvgg-A2_4xb64-coslr-120e_in1k.py' + +model = dict(backbone=dict(deploy=True)) diff --git a/openmmlab_test/mmclassification-0.24.1/configs/repvgg/deploy/repvgg-B0_deploy_4xb64-coslr-120e_in1k.py b/openmmlab_test/mmclassification-0.24.1/configs/repvgg/deploy/repvgg-B0_deploy_4xb64-coslr-120e_in1k.py new file mode 100644 index 00000000..23a2898a --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/repvgg/deploy/repvgg-B0_deploy_4xb64-coslr-120e_in1k.py @@ -0,0 +1,3 @@ +_base_ = '../repvgg-B0_4xb64-coslr-120e_in1k.py' + +model = dict(backbone=dict(deploy=True)) diff --git a/openmmlab_test/mmclassification-0.24.1/configs/repvgg/deploy/repvgg-B1_deploy_4xb64-coslr-120e_in1k.py b/openmmlab_test/mmclassification-0.24.1/configs/repvgg/deploy/repvgg-B1_deploy_4xb64-coslr-120e_in1k.py new file mode 100644 index 00000000..24355eda --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/repvgg/deploy/repvgg-B1_deploy_4xb64-coslr-120e_in1k.py @@ -0,0 +1,3 @@ +_base_ = '../repvgg-B1_4xb64-coslr-120e_in1k.py' + +model = dict(backbone=dict(deploy=True)) diff --git a/openmmlab_test/mmclassification-0.24.1/configs/repvgg/deploy/repvgg-B1g2_deploy_4xb64-coslr-120e_in1k.py b/openmmlab_test/mmclassification-0.24.1/configs/repvgg/deploy/repvgg-B1g2_deploy_4xb64-coslr-120e_in1k.py new file mode 100644 index 00000000..579fcc47 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/repvgg/deploy/repvgg-B1g2_deploy_4xb64-coslr-120e_in1k.py @@ -0,0 +1,3 @@ +_base_ = '../repvgg-B1g2_4xb64-coslr-120e_in1k.py' + +model = dict(backbone=dict(deploy=True)) diff --git a/openmmlab_test/mmclassification-0.24.1/configs/repvgg/deploy/repvgg-B1g4_deploy_4xb64-coslr-120e_in1k.py b/openmmlab_test/mmclassification-0.24.1/configs/repvgg/deploy/repvgg-B1g4_deploy_4xb64-coslr-120e_in1k.py new file mode 100644 index 00000000..eab5d440 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/repvgg/deploy/repvgg-B1g4_deploy_4xb64-coslr-120e_in1k.py @@ -0,0 +1,3 @@ +_base_ = '../repvgg-B1g4_4xb64-coslr-120e_in1k.py' + +model = dict(backbone=dict(deploy=True)) diff --git a/openmmlab_test/mmclassification-0.24.1/configs/repvgg/deploy/repvgg-B2_deploy_4xb64-coslr-120e_in1k.py b/openmmlab_test/mmclassification-0.24.1/configs/repvgg/deploy/repvgg-B2_deploy_4xb64-coslr-120e_in1k.py new file mode 100644 index 00000000..0681f14d --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/repvgg/deploy/repvgg-B2_deploy_4xb64-coslr-120e_in1k.py @@ -0,0 +1,3 @@ +_base_ = '../repvgg-B2_4xb64-coslr-120e_in1k.py' + +model = dict(backbone=dict(deploy=True)) diff --git a/openmmlab_test/mmclassification-0.24.1/configs/repvgg/deploy/repvgg-B2g4_deploy_4xb64-autoaug-lbs-mixup-coslr-200e_in1k.py b/openmmlab_test/mmclassification-0.24.1/configs/repvgg/deploy/repvgg-B2g4_deploy_4xb64-autoaug-lbs-mixup-coslr-200e_in1k.py new file mode 100644 index 00000000..8f184014 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/repvgg/deploy/repvgg-B2g4_deploy_4xb64-autoaug-lbs-mixup-coslr-200e_in1k.py @@ -0,0 +1,3 @@ +_base_ = '../repvgg-B2g4_4xb64-autoaug-lbs-mixup-coslr-200e_in1k.py' + +model = dict(backbone=dict(deploy=True)) diff --git a/openmmlab_test/mmclassification-0.24.1/configs/repvgg/deploy/repvgg-B3_deploy_4xb64-autoaug-lbs-mixup-coslr-200e_in1k.py b/openmmlab_test/mmclassification-0.24.1/configs/repvgg/deploy/repvgg-B3_deploy_4xb64-autoaug-lbs-mixup-coslr-200e_in1k.py new file mode 100644 index 00000000..e60b0678 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/repvgg/deploy/repvgg-B3_deploy_4xb64-autoaug-lbs-mixup-coslr-200e_in1k.py @@ -0,0 +1,3 @@ +_base_ = '../repvgg-B3_4xb64-autoaug-lbs-mixup-coslr-200e_in1k.py' + +model = dict(backbone=dict(deploy=True)) diff --git a/openmmlab_test/mmclassification-0.24.1/configs/repvgg/deploy/repvgg-B3g4_deploy_4xb64-autoaug-lbs-mixup-coslr-200e_in1k.py b/openmmlab_test/mmclassification-0.24.1/configs/repvgg/deploy/repvgg-B3g4_deploy_4xb64-autoaug-lbs-mixup-coslr-200e_in1k.py new file mode 100644 index 00000000..46f18778 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/repvgg/deploy/repvgg-B3g4_deploy_4xb64-autoaug-lbs-mixup-coslr-200e_in1k.py @@ -0,0 +1,3 @@ +_base_ = '../repvgg-B3g4_4xb64-autoaug-lbs-mixup-coslr-200e_in1k.py' + +model = dict(backbone=dict(deploy=True)) diff --git a/openmmlab_test/mmclassification-0.24.1/configs/repvgg/deploy/repvgg-D2se_deploy_4xb64-autoaug-lbs-mixup-coslr-200e_in1k.py b/openmmlab_test/mmclassification-0.24.1/configs/repvgg/deploy/repvgg-D2se_deploy_4xb64-autoaug-lbs-mixup-coslr-200e_in1k.py new file mode 100644 index 00000000..66dff3b6 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/repvgg/deploy/repvgg-D2se_deploy_4xb64-autoaug-lbs-mixup-coslr-200e_in1k.py @@ -0,0 +1,3 @@ +_base_ = '../repvgg-D2se_4xb64-autoaug-lbs-mixup-coslr-200e_in1k.py' + +model = dict(backbone=dict(deploy=True)) diff --git a/openmmlab_test/mmclassification-0.24.1/configs/repvgg/metafile.yml b/openmmlab_test/mmclassification-0.24.1/configs/repvgg/metafile.yml new file mode 100644 index 00000000..84fee591 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/repvgg/metafile.yml @@ -0,0 +1,208 @@ +Collections: + - Name: RepVGG + Metadata: + Training Data: ImageNet-1k + Architecture: + - re-parameterization Convolution + - VGG-style Neural Network + Paper: + URL: https://arxiv.org/abs/2101.03697 + Title: 'RepVGG: Making VGG-style ConvNets Great Again' + README: configs/repvgg/README.md + Code: + URL: https://github.com/open-mmlab/mmclassification/blob/v0.16.0/mmcls/models/backbones/repvgg.py#L257 + Version: v0.16.0 + +Models: + - Name: repvgg-A0_3rdparty_4xb64-coslr-120e_in1k + In Collection: RepVGG + Config: configs/repvgg/repvgg-A0_4xb64-coslr-120e_in1k.py + Metadata: + FLOPs: 1520000000 + Parameters: 9110000 + Results: + - Dataset: ImageNet-1k + Task: Image Classification + Metrics: + Top 1 Accuracy: 72.41 + Top 5 Accuracy: 90.50 + Weights: https://download.openmmlab.com/mmclassification/v0/repvgg/repvgg-A0_3rdparty_4xb64-coslr-120e_in1k_20210909-883ab98c.pth + Converted From: + Weights: https://drive.google.com/drive/folders/1Avome4KvNp0Lqh2QwhXO6L5URQjzCjUq + Code: https://github.com/DingXiaoH/RepVGG/blob/9f272318abfc47a2b702cd0e916fca8d25d683e7/repvgg.py#L196 + - Name: repvgg-A1_3rdparty_4xb64-coslr-120e_in1k + In Collection: RepVGG + Config: configs/repvgg/repvgg-A1_4xb64-coslr-120e_in1k.py + Metadata: + FLOPs: 2640000000 + Parameters: 14090000 + Results: + - Dataset: ImageNet-1k + Task: Image Classification + Metrics: + Top 1 Accuracy: 74.47 + Top 5 Accuracy: 91.85 + Weights: https://download.openmmlab.com/mmclassification/v0/repvgg/repvgg-A1_3rdparty_4xb64-coslr-120e_in1k_20210909-24003a24.pth + Converted From: + Weights: https://drive.google.com/drive/folders/1Avome4KvNp0Lqh2QwhXO6L5URQjzCjUq + Code: https://github.com/DingXiaoH/RepVGG/blob/9f272318abfc47a2b702cd0e916fca8d25d683e7/repvgg.py#L200 + - Name: repvgg-A2_3rdparty_4xb64-coslr-120e_in1k + In Collection: RepVGG + Config: configs/repvgg/repvgg-A2_4xb64-coslr-120e_in1k.py + Metadata: + FLOPs: 28210000000 + Parameters: 5700000 + Results: + - Dataset: ImageNet-1k + Task: Image Classification + Metrics: + Top 1 Accuracy: 76.48 + Top 5 Accuracy: 93.01 + Weights: https://download.openmmlab.com/mmclassification/v0/repvgg/repvgg-A2_3rdparty_4xb64-coslr-120e_in1k_20210909-97d7695a.pth + Converted From: + Weights: https://drive.google.com/drive/folders/1Avome4KvNp0Lqh2QwhXO6L5URQjzCjUq + Code: https://github.com/DingXiaoH/RepVGG/blob/9f272318abfc47a2b702cd0e916fca8d25d683e7/repvgg.py#L204 + - Name: repvgg-B0_3rdparty_4xb64-coslr-120e_in1k + In Collection: RepVGG + Config: configs/repvgg/repvgg-B0_4xb64-coslr-120e_in1k.py + Metadata: + FLOPs: 15820000000 + Parameters: 3420000 + Results: + - Dataset: ImageNet-1k + Task: Image Classification + Metrics: + Top 1 Accuracy: 75.14 + Top 5 Accuracy: 92.42 + Weights: https://download.openmmlab.com/mmclassification/v0/repvgg/repvgg-B0_3rdparty_4xb64-coslr-120e_in1k_20210909-446375f4.pth + Converted From: + Weights: https://drive.google.com/drive/folders/1Avome4KvNp0Lqh2QwhXO6L5URQjzCjUq + Code: https://github.com/DingXiaoH/RepVGG/blob/9f272318abfc47a2b702cd0e916fca8d25d683e7/repvgg.py#L208 + - Name: repvgg-B1_3rdparty_4xb64-coslr-120e_in1k + In Collection: RepVGG + Config: configs/repvgg/repvgg-B1_4xb64-coslr-120e_in1k.py + Metadata: + FLOPs: 57420000000 + Parameters: 13160000 + Results: + - Dataset: ImageNet-1k + Task: Image Classification + Metrics: + Top 1 Accuracy: 78.37 + Top 5 Accuracy: 94.11 + Weights: https://download.openmmlab.com/mmclassification/v0/repvgg/repvgg-B1_3rdparty_4xb64-coslr-120e_in1k_20210909-750cdf67.pth + Converted From: + Weights: https://drive.google.com/drive/folders/1Avome4KvNp0Lqh2QwhXO6L5URQjzCjUq + Code: https://github.com/DingXiaoH/RepVGG/blob/9f272318abfc47a2b702cd0e916fca8d25d683e7/repvgg.py#L212 + - Name: repvgg-B1g2_3rdparty_4xb64-coslr-120e_in1k + In Collection: RepVGG + Config: configs/repvgg/repvgg-B1g2_4xb64-coslr-120e_in1k.py + Metadata: + FLOPs: 45780000000 + Parameters: 9820000 + Results: + - Dataset: ImageNet-1k + Task: Image Classification + Metrics: + Top 1 Accuracy: 77.79 + Top 5 Accuracy: 93.88 + Weights: https://download.openmmlab.com/mmclassification/v0/repvgg/repvgg-B1g2_3rdparty_4xb64-coslr-120e_in1k_20210909-344f6422.pth + Converted From: + Weights: https://drive.google.com/drive/folders/1Avome4KvNp0Lqh2QwhXO6L5URQjzCjUq + Code: https://github.com/DingXiaoH/RepVGG/blob/9f272318abfc47a2b702cd0e916fca8d25d683e7/repvgg.py#L216 + - Name: repvgg-B1g4_3rdparty_4xb64-coslr-120e_in1k + In Collection: RepVGG + Config: configs/repvgg/repvgg-B1g4_4xb64-coslr-120e_in1k.py + Metadata: + FLOPs: 39970000000 + Parameters: 8150000 + Results: + - Dataset: ImageNet-1k + Task: Image Classification + Metrics: + Top 1 Accuracy: 77.58 + Top 5 Accuracy: 93.84 + Weights: https://download.openmmlab.com/mmclassification/v0/repvgg/repvgg-B1g4_3rdparty_4xb64-coslr-120e_in1k_20210909-d4c1a642.pth + Converted From: + Weights: https://drive.google.com/drive/folders/1Avome4KvNp0Lqh2QwhXO6L5URQjzCjUq + Code: https://github.com/DingXiaoH/RepVGG/blob/9f272318abfc47a2b702cd0e916fca8d25d683e7/repvgg.py#L220 + - Name: repvgg-B2_3rdparty_4xb64-coslr-120e_in1k + In Collection: RepVGG + Config: configs/repvgg/repvgg-B2_4xb64-coslr-120e_in1k.py + Metadata: + FLOPs: 89020000000 + Parameters: 20420000 + Results: + - Dataset: ImageNet-1k + Task: Image Classification + Metrics: + Top 1 Accuracy: 78.78 + Top 5 Accuracy: 94.42 + Weights: https://download.openmmlab.com/mmclassification/v0/repvgg/repvgg-B2_3rdparty_4xb64-coslr-120e_in1k_20210909-bd6b937c.pth + Converted From: + Weights: https://drive.google.com/drive/folders/1Avome4KvNp0Lqh2QwhXO6L5URQjzCjUq + Code: https://github.com/DingXiaoH/RepVGG/blob/9f272318abfc47a2b702cd0e916fca8d25d683e7/repvgg.py#L225 + - Name: repvgg-B2g4_3rdparty_4xb64-autoaug-lbs-mixup-coslr-200e_in1k + In Collection: RepVGG + Config: configs/repvgg/repvgg-B2g4_4xb64-autoaug-lbs-mixup-coslr-200e_in1k.py + Metadata: + FLOPs: 61760000000 + Parameters: 12630000 + Results: + - Dataset: ImageNet-1k + Task: Image Classification + Metrics: + Top 1 Accuracy: 79.38 + Top 5 Accuracy: 94.68 + Weights: https://download.openmmlab.com/mmclassification/v0/repvgg/repvgg-B2g4_3rdparty_4xb64-autoaug-lbs-mixup-coslr-200e_in1k_20210909-7b7955f0.pth + Converted From: + Weights: https://drive.google.com/drive/folders/1Avome4KvNp0Lqh2QwhXO6L5URQjzCjUq + Code: https://github.com/DingXiaoH/RepVGG/blob/9f272318abfc47a2b702cd0e916fca8d25d683e7/repvgg.py#L229 + - Name: repvgg-B3_3rdparty_4xb64-autoaug-lbs-mixup-coslr-200e_in1k + In Collection: RepVGG + Config: configs/repvgg/repvgg-B3_4xb64-autoaug-lbs-mixup-coslr-200e_in1k.py + Metadata: + FLOPs: 123090000000 + Parameters: 29170000 + Results: + - Dataset: ImageNet-1k + Task: Image Classification + Metrics: + Top 1 Accuracy: 80.52 + Top 5 Accuracy: 95.26 + Weights: https://download.openmmlab.com/mmclassification/v0/repvgg/repvgg-B3_3rdparty_4xb64-autoaug-lbs-mixup-coslr-200e_in1k_20210909-dda968bf.pth + Converted From: + Weights: https://drive.google.com/drive/folders/1Avome4KvNp0Lqh2QwhXO6L5URQjzCjUq + Code: https://github.com/DingXiaoH/RepVGG/blob/9f272318abfc47a2b702cd0e916fca8d25d683e7/repvgg.py#L238 + - Name: repvgg-B3g4_3rdparty_4xb64-autoaug-lbs-mixup-coslr-200e_in1k + In Collection: RepVGG + Config: configs/repvgg/repvgg-B3g4_4xb64-autoaug-lbs-mixup-coslr-200e_in1k.py + Metadata: + FLOPs: 83830000000 + Parameters: 17900000 + Results: + - Dataset: ImageNet-1k + Task: Image Classification + Metrics: + Top 1 Accuracy: 80.22 + Top 5 Accuracy: 95.10 + Weights: https://download.openmmlab.com/mmclassification/v0/repvgg/repvgg-B3g4_3rdparty_4xb64-autoaug-lbs-mixup-coslr-200e_in1k_20210909-4e54846a.pth + Converted From: + Weights: https://drive.google.com/drive/folders/1Avome4KvNp0Lqh2QwhXO6L5URQjzCjUq + Code: https://github.com/DingXiaoH/RepVGG/blob/9f272318abfc47a2b702cd0e916fca8d25d683e7/repvgg.py#L238 + - Name: repvgg-D2se_3rdparty_4xb64-autoaug-lbs-mixup-coslr-200e_in1k + In Collection: RepVGG + Config: configs/repvgg/repvgg-D2se_4xb64-autoaug-lbs-mixup-coslr-200e_in1k.py + Metadata: + FLOPs: 133330000000 + Parameters: 36560000 + Results: + - Dataset: ImageNet-1k + Task: Image Classification + Metrics: + Top 1 Accuracy: 81.81 + Top 5 Accuracy: 95.94 + Weights: https://download.openmmlab.com/mmclassification/v0/repvgg/repvgg-D2se_3rdparty_4xb64-autoaug-lbs-mixup-coslr-200e_in1k_20210909-cf3139b7.pth + Converted From: + Weights: https://drive.google.com/drive/folders/1Avome4KvNp0Lqh2QwhXO6L5URQjzCjUq + Code: https://github.com/DingXiaoH/RepVGG/blob/9f272318abfc47a2b702cd0e916fca8d25d683e7/repvgg.py#L250 diff --git a/openmmlab_test/mmclassification-0.24.1/configs/repvgg/repvgg-A0_4xb64-coslr-120e_in1k.py b/openmmlab_test/mmclassification-0.24.1/configs/repvgg/repvgg-A0_4xb64-coslr-120e_in1k.py new file mode 100644 index 00000000..a7fd3bbe --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/repvgg/repvgg-A0_4xb64-coslr-120e_in1k.py @@ -0,0 +1,8 @@ +_base_ = [ + '../_base_/models/repvgg-A0_in1k.py', + '../_base_/datasets/imagenet_bs64_pil_resize.py', + '../_base_/schedules/imagenet_bs256_coslr.py', + '../_base_/default_runtime.py' +] + +runner = dict(max_epochs=120) diff --git a/openmmlab_test/mmclassification-0.24.1/configs/repvgg/repvgg-A1_4xb64-coslr-120e_in1k.py b/openmmlab_test/mmclassification-0.24.1/configs/repvgg/repvgg-A1_4xb64-coslr-120e_in1k.py new file mode 100644 index 00000000..649020f2 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/repvgg/repvgg-A1_4xb64-coslr-120e_in1k.py @@ -0,0 +1,3 @@ +_base_ = './repvgg-A0_4xb64-coslr-120e_in1k.py' + +model = dict(backbone=dict(arch='A1')) diff --git a/openmmlab_test/mmclassification-0.24.1/configs/repvgg/repvgg-A2_4xb64-coslr-120e_in1k.py b/openmmlab_test/mmclassification-0.24.1/configs/repvgg/repvgg-A2_4xb64-coslr-120e_in1k.py new file mode 100644 index 00000000..eedaf2d2 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/repvgg/repvgg-A2_4xb64-coslr-120e_in1k.py @@ -0,0 +1,3 @@ +_base_ = './repvgg-A0_4xb64-coslr-120e_in1k.py' + +model = dict(backbone=dict(arch='A2'), head=dict(in_channels=1408)) diff --git a/openmmlab_test/mmclassification-0.24.1/configs/repvgg/repvgg-B0_4xb64-coslr-120e_in1k.py b/openmmlab_test/mmclassification-0.24.1/configs/repvgg/repvgg-B0_4xb64-coslr-120e_in1k.py new file mode 100644 index 00000000..b3ce7ea2 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/repvgg/repvgg-B0_4xb64-coslr-120e_in1k.py @@ -0,0 +1,3 @@ +_base_ = './repvgg-A0_4xb64-coslr-120e_in1k.py' + +model = dict(backbone=dict(arch='B0'), head=dict(in_channels=1280)) diff --git a/openmmlab_test/mmclassification-0.24.1/configs/repvgg/repvgg-B1_4xb64-coslr-120e_in1k.py b/openmmlab_test/mmclassification-0.24.1/configs/repvgg/repvgg-B1_4xb64-coslr-120e_in1k.py new file mode 100644 index 00000000..30adea3d --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/repvgg/repvgg-B1_4xb64-coslr-120e_in1k.py @@ -0,0 +1,3 @@ +_base_ = './repvgg-A0_4xb64-coslr-120e_in1k.py' + +model = dict(backbone=dict(arch='B1'), head=dict(in_channels=2048)) diff --git a/openmmlab_test/mmclassification-0.24.1/configs/repvgg/repvgg-B1g2_4xb64-coslr-120e_in1k.py b/openmmlab_test/mmclassification-0.24.1/configs/repvgg/repvgg-B1g2_4xb64-coslr-120e_in1k.py new file mode 100644 index 00000000..2749db8d --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/repvgg/repvgg-B1g2_4xb64-coslr-120e_in1k.py @@ -0,0 +1,3 @@ +_base_ = './repvgg-A0_4xb64-coslr-120e_in1k.py' + +model = dict(backbone=dict(arch='B1g2'), head=dict(in_channels=2048)) diff --git a/openmmlab_test/mmclassification-0.24.1/configs/repvgg/repvgg-B1g4_4xb64-coslr-120e_in1k.py b/openmmlab_test/mmclassification-0.24.1/configs/repvgg/repvgg-B1g4_4xb64-coslr-120e_in1k.py new file mode 100644 index 00000000..26476909 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/repvgg/repvgg-B1g4_4xb64-coslr-120e_in1k.py @@ -0,0 +1,3 @@ +_base_ = './repvgg-A0_4xb64-coslr-120e_in1k.py' + +model = dict(backbone=dict(arch='B1g4'), head=dict(in_channels=2048)) diff --git a/openmmlab_test/mmclassification-0.24.1/configs/repvgg/repvgg-B2_4xb64-coslr-120e_in1k.py b/openmmlab_test/mmclassification-0.24.1/configs/repvgg/repvgg-B2_4xb64-coslr-120e_in1k.py new file mode 100644 index 00000000..4d215567 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/repvgg/repvgg-B2_4xb64-coslr-120e_in1k.py @@ -0,0 +1,3 @@ +_base_ = './repvgg-A0_4xb64-coslr-120e_in1k.py' + +model = dict(backbone=dict(arch='B2'), head=dict(in_channels=2560)) diff --git a/openmmlab_test/mmclassification-0.24.1/configs/repvgg/repvgg-B2g4_4xb64-autoaug-lbs-mixup-coslr-200e_in1k.py b/openmmlab_test/mmclassification-0.24.1/configs/repvgg/repvgg-B2g4_4xb64-autoaug-lbs-mixup-coslr-200e_in1k.py new file mode 100644 index 00000000..11331cf0 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/repvgg/repvgg-B2g4_4xb64-autoaug-lbs-mixup-coslr-200e_in1k.py @@ -0,0 +1,3 @@ +_base_ = './repvgg-B3_4xb64-autoaug-lbs-mixup-coslr-200e_in1k.py' + +model = dict(backbone=dict(arch='B2g4')) diff --git a/openmmlab_test/mmclassification-0.24.1/configs/repvgg/repvgg-B3_4xb64-autoaug-lbs-mixup-coslr-200e_in1k.py b/openmmlab_test/mmclassification-0.24.1/configs/repvgg/repvgg-B3_4xb64-autoaug-lbs-mixup-coslr-200e_in1k.py new file mode 100644 index 00000000..7b6dc506 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/repvgg/repvgg-B3_4xb64-autoaug-lbs-mixup-coslr-200e_in1k.py @@ -0,0 +1,6 @@ +_base_ = [ + '../_base_/models/repvgg-B3_lbs-mixup_in1k.py', + '../_base_/datasets/imagenet_bs64_pil_resize.py', + '../_base_/schedules/imagenet_bs256_200e_coslr_warmup.py', + '../_base_/default_runtime.py' +] diff --git a/openmmlab_test/mmclassification-0.24.1/configs/repvgg/repvgg-B3g4_4xb64-autoaug-lbs-mixup-coslr-200e_in1k.py b/openmmlab_test/mmclassification-0.24.1/configs/repvgg/repvgg-B3g4_4xb64-autoaug-lbs-mixup-coslr-200e_in1k.py new file mode 100644 index 00000000..67e3688c --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/repvgg/repvgg-B3g4_4xb64-autoaug-lbs-mixup-coslr-200e_in1k.py @@ -0,0 +1,3 @@ +_base_ = './repvgg-B3_4xb64-autoaug-lbs-mixup-coslr-200e_in1k.py' + +model = dict(backbone=dict(arch='B3g4')) diff --git a/openmmlab_test/mmclassification-0.24.1/configs/repvgg/repvgg-D2se_4xb64-autoaug-lbs-mixup-coslr-200e_in1k.py b/openmmlab_test/mmclassification-0.24.1/configs/repvgg/repvgg-D2se_4xb64-autoaug-lbs-mixup-coslr-200e_in1k.py new file mode 100644 index 00000000..d235610f --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/repvgg/repvgg-D2se_4xb64-autoaug-lbs-mixup-coslr-200e_in1k.py @@ -0,0 +1,3 @@ +_base_ = './repvgg-B3_4xb64-autoaug-lbs-mixup-coslr-200e_in1k.py' + +model = dict(backbone=dict(arch='D2se')) diff --git a/openmmlab_test/mmclassification-0.24.1/configs/res2net/README.md b/openmmlab_test/mmclassification-0.24.1/configs/res2net/README.md new file mode 100644 index 00000000..61190092 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/res2net/README.md @@ -0,0 +1,37 @@ +# Res2Net + +> [Res2Net: A New Multi-scale Backbone Architecture](https://arxiv.org/pdf/1904.01169.pdf) + + + +## Abstract + +Representing features at multiple scales is of great importance for numerous vision tasks. Recent advances in backbone convolutional neural networks (CNNs) continually demonstrate stronger multi-scale representation ability, leading to consistent performance gains on a wide range of applications. However, most existing methods represent the multi-scale features in a layer-wise manner. In this paper, we propose a novel building block for CNNs, namely Res2Net, by constructing hierarchical residual-like connections within one single residual block. The Res2Net represents multi-scale features at a granular level and increases the range of receptive fields for each network layer. The proposed Res2Net block can be plugged into the state-of-the-art backbone CNN models, e.g., ResNet, ResNeXt, and DLA. We evaluate the Res2Net block on all these models and demonstrate consistent performance gains over baseline models on widely-used datasets, e.g., CIFAR-100 and ImageNet. Further ablation studies and experimental results on representative computer vision tasks, i.e., object detection, class activation mapping, and salient object detection, further verify the superiority of the Res2Net over the state-of-the-art baseline methods. + +
+ +
+ +## Results and models + +### ImageNet-1k + +| Model | resolution | Params(M) | Flops(G) | Top-1 (%) | Top-5 (%) | Config | Download | +| :------------------: | :--------: | :-------: | :------: | :-------: | :-------: | :----------------------------------------------------------------: | :-------------------------------------------------------------------: | +| Res2Net-50-14w-8s\* | 224x224 | 25.06 | 4.22 | 78.14 | 93.85 | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/res2net/res2net50-w14-s8_8xb32_in1k.py) | [model](https://download.openmmlab.com/mmclassification/v0/res2net/res2net50-w14-s8_3rdparty_8xb32_in1k_20210927-bc967bf1.pth) \| [log](<>) | +| Res2Net-50-26w-8s\* | 224x224 | 48.40 | 8.39 | 79.20 | 94.36 | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/res2net/res2net50-w26-s8_8xb32_in1k.py) | [model](https://download.openmmlab.com/mmclassification/v0/res2net/res2net50-w26-s8_3rdparty_8xb32_in1k_20210927-f547a94b.pth) \| [log](<>) | +| Res2Net-101-26w-4s\* | 224x224 | 45.21 | 8.12 | 79.19 | 94.44 | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/res2net/res2net101-w26-s4_8xb32_in1k.py) | [model](https://download.openmmlab.com/mmclassification/v0/res2net/res2net101-w26-s4_3rdparty_8xb32_in1k_20210927-870b6c36.pth) \| [log](<>) | + +*Models with * are converted from the [official repo](https://github.com/Res2Net/Res2Net-PretrainedModels). The config files of these models are only for validation. We don't ensure these config files' training accuracy and welcome you to contribute your reproduction results.* + +## Citation + +``` +@article{gao2019res2net, + title={Res2Net: A New Multi-scale Backbone Architecture}, + author={Gao, Shang-Hua and Cheng, Ming-Ming and Zhao, Kai and Zhang, Xin-Yu and Yang, Ming-Hsuan and Torr, Philip}, + journal={IEEE TPAMI}, + year={2021}, + doi={10.1109/TPAMI.2019.2938758}, +} +``` diff --git a/openmmlab_test/mmclassification-0.24.1/configs/res2net/metafile.yml b/openmmlab_test/mmclassification-0.24.1/configs/res2net/metafile.yml new file mode 100644 index 00000000..d76f898b --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/res2net/metafile.yml @@ -0,0 +1,70 @@ +Collections: + - Name: Res2Net + Metadata: + Training Data: ImageNet-1k + Training Techniques: + - SGD with Momentum + - Weight Decay + Architecture: + - Batch Normalization + - Convolution + - Global Average Pooling + - ReLU + - Res2Net Block + Paper: + Title: 'Res2Net: A New Multi-scale Backbone Architecture' + URL: https://arxiv.org/pdf/1904.01169.pdf + README: configs/res2net/README.md + Code: + URL: https://github.com/open-mmlab/mmclassification/blob/v0.17.0/mmcls/models/backbones/res2net.py + Version: v0.17.0 + +Models: + - Name: res2net50-w14-s8_3rdparty_8xb32_in1k + Metadata: + FLOPs: 4220000000 + Parameters: 25060000 + In Collection: Res2Net + Results: + - Dataset: ImageNet-1k + Metrics: + Top 1 Accuracy: 78.14 + Top 5 Accuracy: 93.85 + Task: Image Classification + Weights: https://download.openmmlab.com/mmclassification/v0/res2net/res2net50-w14-s8_3rdparty_8xb32_in1k_20210927-bc967bf1.pth + Converted From: + Weights: https://1drv.ms/u/s!AkxDDnOtroRPdOTqhF8ne_aakDI?e=EVb8Ri + Code: https://github.com/Res2Net/Res2Net-PretrainedModels/blob/master/res2net.py#L221 + Config: configs/res2net/res2net50-w14-s8_8xb32_in1k.py + - Name: res2net50-w26-s8_3rdparty_8xb32_in1k + Metadata: + FLOPs: 8390000000 + Parameters: 48400000 + In Collection: Res2Net + Results: + - Dataset: ImageNet-1k + Metrics: + Top 1 Accuracy: 79.20 + Top 5 Accuracy: 94.36 + Task: Image Classification + Weights: https://download.openmmlab.com/mmclassification/v0/res2net/res2net50-w26-s8_3rdparty_8xb32_in1k_20210927-f547a94b.pth + Converted From: + Weights: https://1drv.ms/u/s!AkxDDnOtroRPdTrAd_Afzc26Z7Q?e=slYqsR + Code: https://github.com/Res2Net/Res2Net-PretrainedModels/blob/master/res2net.py#L201 + Config: configs/res2net/res2net50-w26-s8_8xb32_in1k.py + - Name: res2net101-w26-s4_3rdparty_8xb32_in1k + Metadata: + FLOPs: 8120000000 + Parameters: 45210000 + In Collection: Res2Net + Results: + - Dataset: ImageNet-1k + Metrics: + Top 1 Accuracy: 79.19 + Top 5 Accuracy: 94.44 + Task: Image Classification + Weights: https://download.openmmlab.com/mmclassification/v0/res2net/res2net101-w26-s4_3rdparty_8xb32_in1k_20210927-870b6c36.pth + Converted From: + Weights: https://1drv.ms/u/s!AkxDDnOtroRPcJRgTLkahL0cFYw?e=nwbnic + Code: https://github.com/Res2Net/Res2Net-PretrainedModels/blob/master/res2net.py#L181 + Config: configs/res2net/res2net101-w26-s4_8xb32_in1k.py diff --git a/openmmlab_test/mmclassification-0.24.1/configs/res2net/res2net101-w26-s4_8xb32_in1k.py b/openmmlab_test/mmclassification-0.24.1/configs/res2net/res2net101-w26-s4_8xb32_in1k.py new file mode 100644 index 00000000..7ebe9e94 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/res2net/res2net101-w26-s4_8xb32_in1k.py @@ -0,0 +1,5 @@ +_base_ = [ + '../_base_/models/res2net101-w26-s4.py', + '../_base_/datasets/imagenet_bs32_pil_resize.py', + '../_base_/schedules/imagenet_bs256.py', '../_base_/default_runtime.py' +] diff --git a/openmmlab_test/mmclassification-0.24.1/configs/res2net/res2net50-w14-s8_8xb32_in1k.py b/openmmlab_test/mmclassification-0.24.1/configs/res2net/res2net50-w14-s8_8xb32_in1k.py new file mode 100644 index 00000000..56cc02e3 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/res2net/res2net50-w14-s8_8xb32_in1k.py @@ -0,0 +1,5 @@ +_base_ = [ + '../_base_/models/res2net50-w14-s8.py', + '../_base_/datasets/imagenet_bs32_pil_resize.py', + '../_base_/schedules/imagenet_bs256.py', '../_base_/default_runtime.py' +] diff --git a/openmmlab_test/mmclassification-0.24.1/configs/res2net/res2net50-w26-s8_8xb32_in1k.py b/openmmlab_test/mmclassification-0.24.1/configs/res2net/res2net50-w26-s8_8xb32_in1k.py new file mode 100644 index 00000000..d7dcbeb9 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/res2net/res2net50-w26-s8_8xb32_in1k.py @@ -0,0 +1,5 @@ +_base_ = [ + '../_base_/models/res2net50-w26-s8.py', + '../_base_/datasets/imagenet_bs32_pil_resize.py', + '../_base_/schedules/imagenet_bs256.py', '../_base_/default_runtime.py' +] diff --git a/openmmlab_test/mmclassification-0.24.1/configs/resnest/README.md b/openmmlab_test/mmclassification-0.24.1/configs/resnest/README.md new file mode 100644 index 00000000..eb6c5fd7 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/resnest/README.md @@ -0,0 +1,26 @@ +# ResNeSt + +> [ResNeSt: Split-Attention Networks](https://arxiv.org/abs/2004.08955) + + + +## Abstract + +It is well known that featuremap attention and multi-path representation are important for visual recognition. In this paper, we present a modularized architecture, which applies the channel-wise attention on different network branches to leverage their success in capturing cross-feature interactions and learning diverse representations. Our design results in a simple and unified computation block, which can be parameterized using only a few variables. Our model, named ResNeSt, outperforms EfficientNet in accuracy and latency trade-off on image classification. In addition, ResNeSt has achieved superior transfer learning results on several public benchmarks serving as the backbone, and has been adopted by the winning entries of COCO-LVIS challenge. The source code for complete system and pretrained models are publicly available. + +
+ +
+ +## Citation + +``` +@misc{zhang2020resnest, + title={ResNeSt: Split-Attention Networks}, + author={Hang Zhang and Chongruo Wu and Zhongyue Zhang and Yi Zhu and Haibin Lin and Zhi Zhang and Yue Sun and Tong He and Jonas Mueller and R. Manmatha and Mu Li and Alexander Smola}, + year={2020}, + eprint={2004.08955}, + archivePrefix={arXiv}, + primaryClass={cs.CV} +} +``` diff --git a/openmmlab_test/mmclassification-0.24.1/configs/resnest/resnest101_32xb64_in1k.py b/openmmlab_test/mmclassification-0.24.1/configs/resnest/resnest101_32xb64_in1k.py new file mode 100644 index 00000000..27b1882c --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/resnest/resnest101_32xb64_in1k.py @@ -0,0 +1,181 @@ +_base_ = ['../_base_/models/resnest101.py', '../_base_/default_runtime.py'] + +# dataset settings +dataset_type = 'ImageNet' +img_lighting_cfg = dict( + eigval=[55.4625, 4.7940, 1.1475], + eigvec=[[-0.5675, 0.7192, 0.4009], [-0.5808, -0.0045, -0.8140], + [-0.5836, -0.6948, 0.4203]], + alphastd=0.1, + to_rgb=True) +policies = [ + dict(type='AutoContrast', prob=0.5), + dict(type='Equalize', prob=0.5), + dict(type='Invert', prob=0.5), + dict( + type='Rotate', + magnitude_key='angle', + magnitude_range=(0, 30), + pad_val=0, + prob=0.5, + random_negative_prob=0.5), + dict( + type='Posterize', + magnitude_key='bits', + magnitude_range=(0, 4), + prob=0.5), + dict( + type='Solarize', + magnitude_key='thr', + magnitude_range=(0, 256), + prob=0.5), + dict( + type='SolarizeAdd', + magnitude_key='magnitude', + magnitude_range=(0, 110), + thr=128, + prob=0.5), + dict( + type='ColorTransform', + magnitude_key='magnitude', + magnitude_range=(-0.9, 0.9), + prob=0.5, + random_negative_prob=0.), + dict( + type='Contrast', + magnitude_key='magnitude', + magnitude_range=(-0.9, 0.9), + prob=0.5, + random_negative_prob=0.), + dict( + type='Brightness', + magnitude_key='magnitude', + magnitude_range=(-0.9, 0.9), + prob=0.5, + random_negative_prob=0.), + dict( + type='Sharpness', + magnitude_key='magnitude', + magnitude_range=(-0.9, 0.9), + prob=0.5, + random_negative_prob=0.), + dict( + type='Shear', + magnitude_key='magnitude', + magnitude_range=(0, 0.3), + pad_val=0, + prob=0.5, + direction='horizontal', + random_negative_prob=0.5), + dict( + type='Shear', + magnitude_key='magnitude', + magnitude_range=(0, 0.3), + pad_val=0, + prob=0.5, + direction='vertical', + random_negative_prob=0.5), + dict( + type='Cutout', + magnitude_key='shape', + magnitude_range=(1, 41), + pad_val=0, + prob=0.5), + dict( + type='Translate', + magnitude_key='magnitude', + magnitude_range=(0, 0.3), + pad_val=0, + prob=0.5, + direction='horizontal', + random_negative_prob=0.5, + interpolation='bicubic'), + dict( + type='Translate', + magnitude_key='magnitude', + magnitude_range=(0, 0.3), + pad_val=0, + prob=0.5, + direction='vertical', + random_negative_prob=0.5, + interpolation='bicubic') +] +train_pipeline = [ + dict(type='LoadImageFromFile'), + dict( + type='RandAugment', + policies=policies, + num_policies=2, + magnitude_level=12), + dict( + type='RandomResizedCrop', + size=256, + efficientnet_style=True, + interpolation='bicubic', + backend='pillow'), + dict(type='RandomFlip', flip_prob=0.5, direction='horizontal'), + dict(type='ColorJitter', brightness=0.4, contrast=0.4, saturation=0.4), + dict(type='Lighting', **img_lighting_cfg), + dict( + type='Normalize', + mean=[123.675, 116.28, 103.53], + std=[58.395, 57.12, 57.375], + to_rgb=False), + dict(type='ImageToTensor', keys=['img']), + dict(type='ToTensor', keys=['gt_label']), + dict(type='Collect', keys=['img', 'gt_label']) +] +test_pipeline = [ + dict(type='LoadImageFromFile'), + dict( + type='CenterCrop', + crop_size=256, + efficientnet_style=True, + interpolation='bicubic', + backend='pillow'), + dict( + type='Normalize', + mean=[123.675, 116.28, 103.53], + std=[58.395, 57.12, 57.375], + to_rgb=True), + dict(type='ImageToTensor', keys=['img']), + dict(type='Collect', keys=['img']) +] +data = dict( + samples_per_gpu=64, + workers_per_gpu=2, + train=dict( + type=dataset_type, + data_prefix='data/imagenet/train', + pipeline=train_pipeline), + val=dict( + type=dataset_type, + data_prefix='data/imagenet/val', + ann_file='data/imagenet/meta/val.txt', + pipeline=test_pipeline), + test=dict( + # replace `data/val` with `data/test` for standard test + type=dataset_type, + data_prefix='data/imagenet/val', + ann_file='data/imagenet/meta/val.txt', + pipeline=test_pipeline)) +evaluation = dict(interval=1, metric='accuracy') + +# optimizer +optimizer = dict( + type='SGD', + lr=0.8, + momentum=0.9, + weight_decay=1e-4, + paramwise_cfg=dict(bias_decay_mult=0., norm_decay_mult=0.)) +optimizer_config = dict(grad_clip=None) + +# learning policy +lr_config = dict( + policy='CosineAnnealing', + min_lr=0, + warmup='linear', + warmup_iters=5, + warmup_ratio=1e-6, + warmup_by_epoch=True) +runner = dict(type='EpochBasedRunner', max_epochs=270) diff --git a/openmmlab_test/mmclassification-0.24.1/configs/resnest/resnest101_b64x32_imagenet.py b/openmmlab_test/mmclassification-0.24.1/configs/resnest/resnest101_b64x32_imagenet.py new file mode 100644 index 00000000..31c36477 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/resnest/resnest101_b64x32_imagenet.py @@ -0,0 +1,6 @@ +_base_ = 'resnest101_32xb64_in1k.py' + +_deprecation_ = dict( + expected='resnest101_32xb64_in1k.py', + reference='https://github.com/open-mmlab/mmclassification/pull/508', +) diff --git a/openmmlab_test/mmclassification-0.24.1/configs/resnest/resnest200_64xb32_in1k.py b/openmmlab_test/mmclassification-0.24.1/configs/resnest/resnest200_64xb32_in1k.py new file mode 100644 index 00000000..3b166a2d --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/resnest/resnest200_64xb32_in1k.py @@ -0,0 +1,181 @@ +_base_ = ['../_base_/models/resnest200.py', '../_base_/default_runtime.py'] + +# dataset settings +dataset_type = 'ImageNet' +img_lighting_cfg = dict( + eigval=[55.4625, 4.7940, 1.1475], + eigvec=[[-0.5675, 0.7192, 0.4009], [-0.5808, -0.0045, -0.8140], + [-0.5836, -0.6948, 0.4203]], + alphastd=0.1, + to_rgb=True) +policies = [ + dict(type='AutoContrast', prob=0.5), + dict(type='Equalize', prob=0.5), + dict(type='Invert', prob=0.5), + dict( + type='Rotate', + magnitude_key='angle', + magnitude_range=(0, 30), + pad_val=0, + prob=0.5, + random_negative_prob=0.5), + dict( + type='Posterize', + magnitude_key='bits', + magnitude_range=(0, 4), + prob=0.5), + dict( + type='Solarize', + magnitude_key='thr', + magnitude_range=(0, 256), + prob=0.5), + dict( + type='SolarizeAdd', + magnitude_key='magnitude', + magnitude_range=(0, 110), + thr=128, + prob=0.5), + dict( + type='ColorTransform', + magnitude_key='magnitude', + magnitude_range=(-0.9, 0.9), + prob=0.5, + random_negative_prob=0.), + dict( + type='Contrast', + magnitude_key='magnitude', + magnitude_range=(-0.9, 0.9), + prob=0.5, + random_negative_prob=0.), + dict( + type='Brightness', + magnitude_key='magnitude', + magnitude_range=(-0.9, 0.9), + prob=0.5, + random_negative_prob=0.), + dict( + type='Sharpness', + magnitude_key='magnitude', + magnitude_range=(-0.9, 0.9), + prob=0.5, + random_negative_prob=0.), + dict( + type='Shear', + magnitude_key='magnitude', + magnitude_range=(0, 0.3), + pad_val=0, + prob=0.5, + direction='horizontal', + random_negative_prob=0.5), + dict( + type='Shear', + magnitude_key='magnitude', + magnitude_range=(0, 0.3), + pad_val=0, + prob=0.5, + direction='vertical', + random_negative_prob=0.5), + dict( + type='Cutout', + magnitude_key='shape', + magnitude_range=(1, 41), + pad_val=0, + prob=0.5), + dict( + type='Translate', + magnitude_key='magnitude', + magnitude_range=(0, 0.3), + pad_val=0, + prob=0.5, + direction='horizontal', + random_negative_prob=0.5, + interpolation='bicubic'), + dict( + type='Translate', + magnitude_key='magnitude', + magnitude_range=(0, 0.3), + pad_val=0, + prob=0.5, + direction='vertical', + random_negative_prob=0.5, + interpolation='bicubic') +] +train_pipeline = [ + dict(type='LoadImageFromFile'), + dict( + type='RandAugment', + policies=policies, + num_policies=2, + magnitude_level=12), + dict( + type='RandomResizedCrop', + size=320, + efficientnet_style=True, + interpolation='bicubic', + backend='pillow'), + dict(type='RandomFlip', flip_prob=0.5, direction='horizontal'), + dict(type='ColorJitter', brightness=0.4, contrast=0.4, saturation=0.4), + dict(type='Lighting', **img_lighting_cfg), + dict( + type='Normalize', + mean=[123.675, 116.28, 103.53], + std=[58.395, 57.12, 57.375], + to_rgb=False), + dict(type='ImageToTensor', keys=['img']), + dict(type='ToTensor', keys=['gt_label']), + dict(type='Collect', keys=['img', 'gt_label']) +] +test_pipeline = [ + dict(type='LoadImageFromFile'), + dict( + type='CenterCrop', + crop_size=320, + efficientnet_style=True, + interpolation='bicubic', + backend='pillow'), + dict( + type='Normalize', + mean=[123.675, 116.28, 103.53], + std=[58.395, 57.12, 57.375], + to_rgb=True), + dict(type='ImageToTensor', keys=['img']), + dict(type='Collect', keys=['img']) +] +data = dict( + samples_per_gpu=32, + workers_per_gpu=2, + train=dict( + type=dataset_type, + data_prefix='data/imagenet/train', + pipeline=train_pipeline), + val=dict( + type=dataset_type, + data_prefix='data/imagenet/val', + ann_file='data/imagenet/meta/val.txt', + pipeline=test_pipeline), + test=dict( + # replace `data/val` with `data/test` for standard test + type=dataset_type, + data_prefix='data/imagenet/val', + ann_file='data/imagenet/meta/val.txt', + pipeline=test_pipeline)) +evaluation = dict(interval=1, metric='accuracy') + +# optimizer +optimizer = dict( + type='SGD', + lr=0.8, + momentum=0.9, + weight_decay=1e-4, + paramwise_cfg=dict(bias_decay_mult=0., norm_decay_mult=0.)) +optimizer_config = dict(grad_clip=None) + +# learning policy +lr_config = dict( + policy='CosineAnnealing', + min_lr=0, + warmup='linear', + warmup_iters=5, + warmup_ratio=1e-6, + warmup_by_epoch=True) +runner = dict(type='EpochBasedRunner', max_epochs=270) diff --git a/openmmlab_test/mmclassification-0.24.1/configs/resnest/resnest200_b32x64_imagenet.py b/openmmlab_test/mmclassification-0.24.1/configs/resnest/resnest200_b32x64_imagenet.py new file mode 100644 index 00000000..8e62865f --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/resnest/resnest200_b32x64_imagenet.py @@ -0,0 +1,6 @@ +_base_ = 'resnest200_64xb32_in1k.py' + +_deprecation_ = dict( + expected='resnest200_64xb32_in1k.py', + reference='https://github.com/open-mmlab/mmclassification/pull/508', +) diff --git a/openmmlab_test/mmclassification-0.24.1/configs/resnest/resnest269_64xb32_in1k.py b/openmmlab_test/mmclassification-0.24.1/configs/resnest/resnest269_64xb32_in1k.py new file mode 100644 index 00000000..7a4db092 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/resnest/resnest269_64xb32_in1k.py @@ -0,0 +1,181 @@ +_base_ = ['../_base_/models/resnest269.py', '../_base_/default_runtime.py'] + +# dataset settings +dataset_type = 'ImageNet' +img_lighting_cfg = dict( + eigval=[55.4625, 4.7940, 1.1475], + eigvec=[[-0.5675, 0.7192, 0.4009], [-0.5808, -0.0045, -0.8140], + [-0.5836, -0.6948, 0.4203]], + alphastd=0.1, + to_rgb=True) +policies = [ + dict(type='AutoContrast', prob=0.5), + dict(type='Equalize', prob=0.5), + dict(type='Invert', prob=0.5), + dict( + type='Rotate', + magnitude_key='angle', + magnitude_range=(0, 30), + pad_val=0, + prob=0.5, + random_negative_prob=0.5), + dict( + type='Posterize', + magnitude_key='bits', + magnitude_range=(0, 4), + prob=0.5), + dict( + type='Solarize', + magnitude_key='thr', + magnitude_range=(0, 256), + prob=0.5), + dict( + type='SolarizeAdd', + magnitude_key='magnitude', + magnitude_range=(0, 110), + thr=128, + prob=0.5), + dict( + type='ColorTransform', + magnitude_key='magnitude', + magnitude_range=(-0.9, 0.9), + prob=0.5, + random_negative_prob=0.), + dict( + type='Contrast', + magnitude_key='magnitude', + magnitude_range=(-0.9, 0.9), + prob=0.5, + random_negative_prob=0.), + dict( + type='Brightness', + magnitude_key='magnitude', + magnitude_range=(-0.9, 0.9), + prob=0.5, + random_negative_prob=0.), + dict( + type='Sharpness', + magnitude_key='magnitude', + magnitude_range=(-0.9, 0.9), + prob=0.5, + random_negative_prob=0.), + dict( + type='Shear', + magnitude_key='magnitude', + magnitude_range=(0, 0.3), + pad_val=0, + prob=0.5, + direction='horizontal', + random_negative_prob=0.5), + dict( + type='Shear', + magnitude_key='magnitude', + magnitude_range=(0, 0.3), + pad_val=0, + prob=0.5, + direction='vertical', + random_negative_prob=0.5), + dict( + type='Cutout', + magnitude_key='shape', + magnitude_range=(1, 41), + pad_val=0, + prob=0.5), + dict( + type='Translate', + magnitude_key='magnitude', + magnitude_range=(0, 0.3), + pad_val=0, + prob=0.5, + direction='horizontal', + random_negative_prob=0.5, + interpolation='bicubic'), + dict( + type='Translate', + magnitude_key='magnitude', + magnitude_range=(0, 0.3), + pad_val=0, + prob=0.5, + direction='vertical', + random_negative_prob=0.5, + interpolation='bicubic') +] +train_pipeline = [ + dict(type='LoadImageFromFile'), + dict( + type='RandAugment', + policies=policies, + num_policies=2, + magnitude_level=12), + dict( + type='RandomResizedCrop', + size=416, + efficientnet_style=True, + interpolation='bicubic', + backend='pillow'), + dict(type='RandomFlip', flip_prob=0.5, direction='horizontal'), + dict(type='ColorJitter', brightness=0.4, contrast=0.4, saturation=0.4), + dict(type='Lighting', **img_lighting_cfg), + dict( + type='Normalize', + mean=[123.675, 116.28, 103.53], + std=[58.395, 57.12, 57.375], + to_rgb=False), + dict(type='ImageToTensor', keys=['img']), + dict(type='ToTensor', keys=['gt_label']), + dict(type='Collect', keys=['img', 'gt_label']) +] +test_pipeline = [ + dict(type='LoadImageFromFile'), + dict( + type='CenterCrop', + crop_size=416, + efficientnet_style=True, + interpolation='bicubic', + backend='pillow'), + dict( + type='Normalize', + mean=[123.675, 116.28, 103.53], + std=[58.395, 57.12, 57.375], + to_rgb=True), + dict(type='ImageToTensor', keys=['img']), + dict(type='Collect', keys=['img']) +] +data = dict( + samples_per_gpu=32, + workers_per_gpu=2, + train=dict( + type=dataset_type, + data_prefix='data/imagenet/train', + pipeline=train_pipeline), + val=dict( + type=dataset_type, + data_prefix='data/imagenet/val', + ann_file='data/imagenet/meta/val.txt', + pipeline=test_pipeline), + test=dict( + # replace `data/val` with `data/test` for standard test + type=dataset_type, + data_prefix='data/imagenet/val', + ann_file='data/imagenet/meta/val.txt', + pipeline=test_pipeline)) +evaluation = dict(interval=1, metric='accuracy') + +# optimizer +optimizer = dict( + type='SGD', + lr=0.8, + momentum=0.9, + weight_decay=1e-4, + paramwise_cfg=dict(bias_decay_mult=0., norm_decay_mult=0.)) +optimizer_config = dict(grad_clip=None) + +# learning policy +lr_config = dict( + policy='CosineAnnealing', + min_lr=0, + warmup='linear', + warmup_iters=5, + warmup_ratio=1e-6, + warmup_by_epoch=True) +runner = dict(type='EpochBasedRunner', max_epochs=270) diff --git a/openmmlab_test/mmclassification-0.24.1/configs/resnest/resnest269_b32x64_imagenet.py b/openmmlab_test/mmclassification-0.24.1/configs/resnest/resnest269_b32x64_imagenet.py new file mode 100644 index 00000000..0f8b76c5 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/resnest/resnest269_b32x64_imagenet.py @@ -0,0 +1,6 @@ +_base_ = 'resnest269_64xb32_in1k.py' + +_deprecation_ = dict( + expected='resnest269_64xb32_in1k.py', + reference='https://github.com/open-mmlab/mmclassification/pull/508', +) diff --git a/openmmlab_test/mmclassification-0.24.1/configs/resnest/resnest50_32xb64_in1k.py b/openmmlab_test/mmclassification-0.24.1/configs/resnest/resnest50_32xb64_in1k.py new file mode 100644 index 00000000..812a3bee --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/resnest/resnest50_32xb64_in1k.py @@ -0,0 +1,181 @@ +_base_ = ['../_base_/models/resnest50.py', '../_base_/default_runtime.py'] + +# dataset settings +dataset_type = 'ImageNet' +img_lighting_cfg = dict( + eigval=[55.4625, 4.7940, 1.1475], + eigvec=[[-0.5675, 0.7192, 0.4009], [-0.5808, -0.0045, -0.8140], + [-0.5836, -0.6948, 0.4203]], + alphastd=0.1, + to_rgb=True) +policies = [ + dict(type='AutoContrast', prob=0.5), + dict(type='Equalize', prob=0.5), + dict(type='Invert', prob=0.5), + dict( + type='Rotate', + magnitude_key='angle', + magnitude_range=(0, 30), + pad_val=0, + prob=0.5, + random_negative_prob=0.5), + dict( + type='Posterize', + magnitude_key='bits', + magnitude_range=(0, 4), + prob=0.5), + dict( + type='Solarize', + magnitude_key='thr', + magnitude_range=(0, 256), + prob=0.5), + dict( + type='SolarizeAdd', + magnitude_key='magnitude', + magnitude_range=(0, 110), + thr=128, + prob=0.5), + dict( + type='ColorTransform', + magnitude_key='magnitude', + magnitude_range=(-0.9, 0.9), + prob=0.5, + random_negative_prob=0.), + dict( + type='Contrast', + magnitude_key='magnitude', + magnitude_range=(-0.9, 0.9), + prob=0.5, + random_negative_prob=0.), + dict( + type='Brightness', + magnitude_key='magnitude', + magnitude_range=(-0.9, 0.9), + prob=0.5, + random_negative_prob=0.), + dict( + type='Sharpness', + magnitude_key='magnitude', + magnitude_range=(-0.9, 0.9), + prob=0.5, + random_negative_prob=0.), + dict( + type='Shear', + magnitude_key='magnitude', + magnitude_range=(0, 0.3), + pad_val=0, + prob=0.5, + direction='horizontal', + random_negative_prob=0.5), + dict( + type='Shear', + magnitude_key='magnitude', + magnitude_range=(0, 0.3), + pad_val=0, + prob=0.5, + direction='vertical', + random_negative_prob=0.5), + dict( + type='Cutout', + magnitude_key='shape', + magnitude_range=(1, 41), + pad_val=0, + prob=0.5), + dict( + type='Translate', + magnitude_key='magnitude', + magnitude_range=(0, 0.3), + pad_val=0, + prob=0.5, + direction='horizontal', + random_negative_prob=0.5, + interpolation='bicubic'), + dict( + type='Translate', + magnitude_key='magnitude', + magnitude_range=(0, 0.3), + pad_val=0, + prob=0.5, + direction='vertical', + random_negative_prob=0.5, + interpolation='bicubic') +] +train_pipeline = [ + dict(type='LoadImageFromFile'), + dict( + type='RandAugment', + policies=policies, + num_policies=2, + magnitude_level=12), + dict( + type='RandomResizedCrop', + size=224, + efficientnet_style=True, + interpolation='bicubic', + backend='pillow'), + dict(type='RandomFlip', flip_prob=0.5, direction='horizontal'), + dict(type='ColorJitter', brightness=0.4, contrast=0.4, saturation=0.4), + dict(type='Lighting', **img_lighting_cfg), + dict( + type='Normalize', + mean=[123.675, 116.28, 103.53], + std=[58.395, 57.12, 57.375], + to_rgb=False), + dict(type='ImageToTensor', keys=['img']), + dict(type='ToTensor', keys=['gt_label']), + dict(type='Collect', keys=['img', 'gt_label']) +] +test_pipeline = [ + dict(type='LoadImageFromFile'), + dict( + type='CenterCrop', + crop_size=224, + efficientnet_style=True, + interpolation='bicubic', + backend='pillow'), + dict( + type='Normalize', + mean=[123.675, 116.28, 103.53], + std=[58.395, 57.12, 57.375], + to_rgb=True), + dict(type='ImageToTensor', keys=['img']), + dict(type='Collect', keys=['img']) +] +data = dict( + samples_per_gpu=64, + workers_per_gpu=2, + train=dict( + type=dataset_type, + data_prefix='data/imagenet/train', + pipeline=train_pipeline), + val=dict( + type=dataset_type, + data_prefix='data/imagenet/val', + ann_file='data/imagenet/meta/val.txt', + pipeline=test_pipeline), + test=dict( + # replace `data/val` with `data/test` for standard test + type=dataset_type, + data_prefix='data/imagenet/val', + ann_file='data/imagenet/meta/val.txt', + pipeline=test_pipeline)) +evaluation = dict(interval=1, metric='accuracy') + +# optimizer +optimizer = dict( + type='SGD', + lr=0.8, + momentum=0.9, + weight_decay=1e-4, + paramwise_cfg=dict(bias_decay_mult=0., norm_decay_mult=0.)) +optimizer_config = dict(grad_clip=None) + +# learning policy +lr_config = dict( + policy='CosineAnnealing', + min_lr=0, + warmup='linear', + warmup_iters=5, + warmup_ratio=1e-6, + warmup_by_epoch=True) +runner = dict(type='EpochBasedRunner', max_epochs=270) diff --git a/openmmlab_test/mmclassification-0.24.1/configs/resnest/resnest50_b64x32_imagenet.py b/openmmlab_test/mmclassification-0.24.1/configs/resnest/resnest50_b64x32_imagenet.py new file mode 100644 index 00000000..c0da422a --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/resnest/resnest50_b64x32_imagenet.py @@ -0,0 +1,6 @@ +_base_ = 'resnest50_32xb64_in1k.py' + +_deprecation_ = dict( + expected='resnest50_32xb64_in1k.py', + reference='https://github.com/open-mmlab/mmclassification/pull/508', +) diff --git a/openmmlab_test/mmclassification-0.24.1/configs/resnet/README.md b/openmmlab_test/mmclassification-0.24.1/configs/resnet/README.md new file mode 100644 index 00000000..d32fcd64 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/resnet/README.md @@ -0,0 +1,91 @@ +# ResNet + +> [Deep Residual Learning for Image Recognition](https://openaccess.thecvf.com/content_cvpr_2016/html/He_Deep_Residual_Learning_CVPR_2016_paper.html) + + + +## Abstract + +Deeper neural networks are more difficult to train. We present a residual learning framework to ease the training of networks that are substantially deeper than those used previously. We explicitly reformulate the layers as learning residual functions with reference to the layer inputs, instead of learning unreferenced functions. We provide comprehensive empirical evidence showing that these residual networks are easier to optimize, and can gain accuracy from considerably increased depth. On the ImageNet dataset we evaluate residual nets with a depth of up to 152 layers---8x deeper than VGG nets but still having lower complexity. An ensemble of these residual nets achieves 3.57% error on the ImageNet test set. This result won the 1st place on the ILSVRC 2015 classification task. We also present analysis on CIFAR-10 with 100 and 1000 layers. + +The depth of representations is of central importance for many visual recognition tasks. Solely due to our extremely deep representations, we obtain a 28% relative improvement on the COCO object detection dataset. Deep residual nets are foundations of our submissions to ILSVRC & COCO 2015 competitions, where we also won the 1st places on the tasks of ImageNet detection, ImageNet localization, COCO detection, and COCO segmentation. + +
+ +
+ +## Results and models + +The pre-trained models on ImageNet-21k are used to fine-tune, and therefore don't have evaluation results. + +| Model | resolution | Params(M) | Flops(G) | Download | +| :------------: | :--------: | :-------: | :------: | :-------------------------------------------------------------------------------------------------------------------: | +| ResNet-50-mill | 224x224 | 86.74 | 15.14 | [model](https://download.openmmlab.com/mmclassification/v0/resnet/resnet50_3rdparty-mill_in21k_20220331-faac000b.pth) | + +*The "mill" means using the mutil-label pretrain weight from [ImageNet-21K Pretraining for the Masses](https://github.com/Alibaba-MIIL/ImageNet21K).* + +### Cifar10 + +| Model | Params(M) | Flops(G) | Top-1 (%) | Top-5 (%) | Config | Download | +| :--------: | :-------: | :------: | :-------: | :-------: | :--------------------------------------------------------------------------: | :-----------------------------------------------------------------------------: | +| ResNet-18 | 11.17 | 0.56 | 94.82 | 99.87 | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/resnet/resnet18_8xb16_cifar10.py) | [model](https://download.openmmlab.com/mmclassification/v0/resnet/resnet18_b16x8_cifar10_20210528-bd6371c8.pth) \| [log](https://download.openmmlab.com/mmclassification/v0/resnet/resnet18_b16x8_cifar10_20210528-bd6371c8.log.json) | +| ResNet-34 | 21.28 | 1.16 | 95.34 | 99.87 | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/resnet/resnet34_8xb16_cifar10.py) | [model](https://download.openmmlab.com/mmclassification/v0/resnet/resnet34_b16x8_cifar10_20210528-a8aa36a6.pth) \| [log](https://download.openmmlab.com/mmclassification/v0/resnet/resnet34_b16x8_cifar10_20210528-a8aa36a6.log.json) | +| ResNet-50 | 23.52 | 1.31 | 95.55 | 99.91 | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/resnet/resnet50_8xb16_cifar10.py) | [model](https://download.openmmlab.com/mmclassification/v0/resnet/resnet50_b16x8_cifar10_20210528-f54bfad9.pth) \| [log](https://download.openmmlab.com/mmclassification/v0/resnet/resnet50_b16x8_cifar10_20210528-f54bfad9.log.json) | +| ResNet-101 | 42.51 | 2.52 | 95.58 | 99.87 | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/resnet/resnet101_8xb16_cifar10.py) | [model](https://download.openmmlab.com/mmclassification/v0/resnet/resnet101_b16x8_cifar10_20210528-2d29e936.pth) \| [log](https://download.openmmlab.com/mmclassification/v0/resnet/resnet101_b16x8_cifar10_20210528-2d29e936.log.json) | +| ResNet-152 | 58.16 | 3.74 | 95.76 | 99.89 | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/resnet/resnet152_8xb16_cifar10.py) | [model](https://download.openmmlab.com/mmclassification/v0/resnet/resnet152_b16x8_cifar10_20210528-3e8e9178.pth) \| [log](https://download.openmmlab.com/mmclassification/v0/resnet/resnet152_b16x8_cifar10_20210528-3e8e9178.log.json) | + +### Cifar100 + +| Model | Params(M) | Flops(G) | Top-1 (%) | Top-5 (%) | Config | Download | +| :-------: | :-------: | :------: | :-------: | :-------: | :---------------------------------------------------------------------------: | :-----------------------------------------------------------------------------: | +| ResNet-50 | 23.71 | 1.31 | 79.90 | 95.19 | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/resnet/resnet50_8xb16_cifar100.py) | [model](https://download.openmmlab.com/mmclassification/v0/resnet/resnet50_b16x8_cifar100_20210528-67b58a1b.pth) \| [log](https://download.openmmlab.com/mmclassification/v0/resnet/resnet50_b16x8_cifar100_20210528-67b58a1b.log.json) | + +### ImageNet-1k + +| Model | Params(M) | Flops(G) | Top-1 (%) | Top-5 (%) | Config | Download | +| :----------------: | :-------: | :------: | :-------: | :-------: | :----------------------------------------------------------------------: | :-------------------------------------------------------------------------: | +| ResNet-18 | 11.69 | 1.82 | 69.90 | 89.43 | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/resnet/resnet18_8xb32_in1k.py) | [model](https://download.openmmlab.com/mmclassification/v0/resnet/resnet18_8xb32_in1k_20210831-fbbb1da6.pth) \| [log](https://download.openmmlab.com/mmclassification/v0/resnet/resnet18_8xb32_in1k_20210831-fbbb1da6.log.json) | +| ResNet-34 | 21.8 | 3.68 | 73.62 | 91.59 | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/resnet/resnet34_8xb32_in1k.py) | [model](https://download.openmmlab.com/mmclassification/v0/resnet/resnet34_8xb32_in1k_20210831-f257d4e6.pth) \| [log](https://download.openmmlab.com/mmclassification/v0/resnet/resnet34_8xb32_in1k_20210831-f257d4e6.log.json) | +| ResNet-50 | 25.56 | 4.12 | 76.55 | 93.06 | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/resnet/resnet50_8xb32_in1k.py) | [model](https://download.openmmlab.com/mmclassification/v0/resnet/resnet50_8xb32_in1k_20210831-ea4938fc.pth) \| [log](https://download.openmmlab.com/mmclassification/v0/resnet/resnet50_8xb32_in1k_20210831-ea4938fc.log.json) | +| ResNet-101 | 44.55 | 7.85 | 77.97 | 94.06 | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/resnet/resnet101_8xb32_in1k.py) | [model](https://download.openmmlab.com/mmclassification/v0/resnet/resnet101_8xb32_in1k_20210831-539c63f8.pth) \| [log](https://download.openmmlab.com/mmclassification/v0/resnet/resnet101_8xb32_in1k_20210831-539c63f8.log.json) | +| ResNet-152 | 60.19 | 11.58 | 78.48 | 94.13 | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/resnet/resnet152_8xb32_in1k.py) | [model](https://download.openmmlab.com/mmclassification/v0/resnet/resnet152_8xb32_in1k_20210901-4d7582fa.pth) \| [log](https://download.openmmlab.com/mmclassification/v0/resnet/resnet152_8xb32_in1k_20210901-4d7582fa.log.json) | +| ResNetV1C-50 | 25.58 | 4.36 | 77.01 | 93.58 | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/resnet/resnetv1c50_8xb32_in1k.py) | [model](https://download.openmmlab.com/mmclassification/v0/resnet/resnetv1c50_8xb32_in1k_20220214-3343eccd.pth) \| [log](https://download.openmmlab.com/mmclassification/v0/resnet/resnetv1c50_8xb32_in1k_20220214-3343eccd.log.json) | +| ResNetV1C-101 | 44.57 | 8.09 | 78.30 | 94.27 | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/resnet/resnetv1c101_8xb32_in1k.py) | [model](https://download.openmmlab.com/mmclassification/v0/resnet/resnetv1c101_8xb32_in1k_20220214-434fe45f.pth) \| [log](https://download.openmmlab.com/mmclassification/v0/resnet/resnetv1c101_8xb32_in1k_20220214-434fe45f.log.json) | +| ResNetV1C-152 | 60.21 | 11.82 | 78.76 | 94.41 | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/resnet/resnetv1c152_8xb32_in1k.py) | [model](https://download.openmmlab.com/mmclassification/v0/resnet/resnetv1c152_8xb32_in1k_20220214-c013291f.pth) \| [log](https://download.openmmlab.com/mmclassification/v0/resnet/resnetv1c152_8xb32_in1k_20220214-c013291f.log.json) | +| ResNetV1D-50 | 25.58 | 4.36 | 77.54 | 93.57 | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/resnet/resnetv1d50_8xb32_in1k.py) | [model](https://download.openmmlab.com/mmclassification/v0/resnet/resnetv1d50_b32x8_imagenet_20210531-db14775a.pth) \| [log](https://download.openmmlab.com/mmclassification/v0/resnet/resnetv1d50_b32x8_imagenet_20210531-db14775a.log.json) | +| ResNetV1D-101 | 44.57 | 8.09 | 78.93 | 94.48 | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/resnet/resnetv1d101_8xb32_in1k.py) | [model](https://download.openmmlab.com/mmclassification/v0/resnet/resnetv1d101_b32x8_imagenet_20210531-6e13bcd3.pth) \| [log](https://download.openmmlab.com/mmclassification/v0/resnet/resnetv1d101_b32x8_imagenet_20210531-6e13bcd3.log.json) | +| ResNetV1D-152 | 60.21 | 11.82 | 79.41 | 94.70 | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/resnet/resnetv1d152_8xb32_in1k.py) | [model](https://download.openmmlab.com/mmclassification/v0/resnet/resnetv1d152_b32x8_imagenet_20210531-278cf22a.pth) \| [log](https://download.openmmlab.com/mmclassification/v0/resnet/resnetv1d152_b32x8_imagenet_20210531-278cf22a.log.json) | +| ResNet-50 (fp16) | 25.56 | 4.12 | 76.30 | 93.07 | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/resnet/resnet50_8xb32-fp16_in1k.py) | [model](https://download.openmmlab.com/mmclassification/v0/fp16/resnet50_batch256_fp16_imagenet_20210320-b3964210.pth) \| [log](https://download.openmmlab.com/mmclassification/v0/fp16/resnet50_batch256_fp16_imagenet_20210320-b3964210.log.json) | +| Wide-ResNet-50\* | 68.88 | 11.44 | 78.48 | 94.08 | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/resnet/wide-resnet50_8xb32_in1k.py) | [model](https://download.openmmlab.com/mmclassification/v0/resnet/wide-resnet50_3rdparty_8xb32_in1k_20220304-66678344.pth) | +| Wide-ResNet-101\* | 126.89 | 22.81 | 78.84 | 94.28 | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/resnet/resnet101_8xb32_in1k.py) | [model](https://download.openmmlab.com/mmclassification/v0/resnet/wide-resnet101_3rdparty_8xb32_in1k_20220304-8d5f9d61.pth) | +| ResNet-50 (rsb-a1) | 25.56 | 4.12 | 80.12 | 94.78 | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/resnet/resnet50_8xb256-rsb-a1-600e_in1k.py) | [model](https://download.openmmlab.com/mmclassification/v0/resnet/resnet50_8xb256-rsb-a1-600e_in1k_20211228-20e21305.pth) \| [log](https://download.openmmlab.com/mmclassification/v0/resnet/resnet50_8xb256-rsb-a1-600e_in1k_20211228-20e21305.log.json) | +| ResNet-50 (rsb-a2) | 25.56 | 4.12 | 79.55 | 94.37 | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/resnet/resnet50_8xb256-rsb-a2-300e_in1k.py) | [model](https://download.openmmlab.com/mmclassification/v0/resnet/resnet50_8xb256-rsb-a2-300e_in1k_20211228-0fd8be6e.pth) \| [log](https://download.openmmlab.com/mmclassification/v0/resnet/resnet50_8xb256-rsb-a2-300e_in1k_20211228-0fd8be6e.log.json) | +| ResNet-50 (rsb-a3) | 25.56 | 4.12 | 78.30 | 93.80 | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/resnet/resnet50_8xb256-rsb-a3-100e_in1k.py) | [model](https://download.openmmlab.com/mmclassification/v0/resnet/resnet50_8xb256-rsb-a3-100e_in1k_20211228-3493673c.pth) \| [log](https://download.openmmlab.com/mmclassification/v0/resnet/resnet50_8xb256-rsb-a3-100e_in1k_20211228-3493673c.log.json) | + +*The "rsb" means using the training settings from [ResNet strikes back: An improved training procedure in timm](https://arxiv.org/abs/2110.00476).* + +*Models with * are converted from the [official repo](https://github.com/pytorch/vision). The config files of these models are only for validation. We don't ensure these config files' training accuracy and welcome you to contribute your reproduction results.* + +### CUB-200-2011 + +| Model | Pretrain | resolution | Params(M) | Flops(G) | Top-1 (%) | Config | Download | +| :-------: | :--------------------------------------------------: | :--------: | :-------: | :------: | :-------: | :------------------------------------------------: | :---------------------------------------------------: | +| ResNet-50 | [ImageNet-21k-mill](https://download.openmmlab.com/mmclassification/v0/resnet/resnet50_3rdparty-mill_in21k_20220331-faac000b.pth) | 448x448 | 23.92 | 16.48 | 88.45 | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/resnet/resnet50_8xb8_cub.py) | [model](https://download.openmmlab.com/mmclassification/v0/resnet/resnet50_8xb8_cub_20220307-57840e60.pth) \| [log](https://download.openmmlab.com/mmclassification/v0/resnet/resnet50_8xb8_cub_20220307-57840e60.log.json) | + +### Stanford-Cars + +| Model | Pretrain | resolution | Params(M) | Flops(G) | Top-1 (%) | Config | Download | +| :-------: | :--------------------------------------------------: | :--------: | :-------: | :------: | :-------: | :------------------------------------------------: | :---------------------------------------------------: | +| ResNet-50 | [ImageNet-21k-mill](https://download.openmmlab.com/mmclassification/v0/resnet/resnet50_3rdparty-mill_in21k_20220331-faac000b.pth) | 448x448 | 23.92 | 16.48 | 92.82 | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/resnet/resnet50_8xb8_cars.py) | [model](https://download.openmmlab.com/mmclassification/v0/resnet/resnet50_8xb8_cars_20220812-9d85901a.pth) \| [log](https://download.openmmlab.com/mmclassification/v0/resnet/resnet50_8xb8_cars_20220812-9d85901a.log.json) | + +## Citation + +``` +@inproceedings{he2016deep, + title={Deep residual learning for image recognition}, + author={He, Kaiming and Zhang, Xiangyu and Ren, Shaoqing and Sun, Jian}, + booktitle={Proceedings of the IEEE conference on computer vision and pattern recognition}, + pages={770--778}, + year={2016} +} +``` diff --git a/openmmlab_test/mmclassification-0.24.1/configs/resnet/metafile.yml b/openmmlab_test/mmclassification-0.24.1/configs/resnet/metafile.yml new file mode 100644 index 00000000..4be4bf9b --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/resnet/metafile.yml @@ -0,0 +1,365 @@ +Collections: + - Name: ResNet + Metadata: + Training Data: ImageNet-1k + Training Techniques: + - SGD with Momentum + - Weight Decay + Training Resources: 8x V100 GPUs + Epochs: 100 + Batch Size: 256 + Architecture: + - ResNet + Paper: + URL: https://openaccess.thecvf.com/content_cvpr_2016/html/He_Deep_Residual_Learning_CVPR_2016_paper.html + Title: "Deep Residual Learning for Image Recognition" + README: configs/resnet/README.md + Code: + URL: https://github.com/open-mmlab/mmclassification/blob/v0.15.0/mmcls/models/backbones/resnet.py#L383 + Version: v0.15.0 + +Models: + - Name: resnet18_8xb16_cifar10 + Metadata: + Training Data: CIFAR-10 + Epochs: 200 + Batch Size: 128 + FLOPs: 560000000 + Parameters: 11170000 + In Collection: ResNet + Results: + - Dataset: CIFAR-10 + Metrics: + Top 1 Accuracy: 94.82 + Task: Image Classification + Weights: https://download.openmmlab.com/mmclassification/v0/resnet/resnet18_b16x8_cifar10_20210528-bd6371c8.pth + Config: configs/resnet/resnet18_8xb16_cifar10.py + - Name: resnet34_8xb16_cifar10 + Metadata: + Training Data: CIFAR-10 + Epochs: 200 + Batch Size: 128 + FLOPs: 1160000000 + Parameters: 21280000 + In Collection: ResNet + Results: + - Dataset: CIFAR-10 + Metrics: + Top 1 Accuracy: 95.34 + Task: Image Classification + Weights: https://download.openmmlab.com/mmclassification/v0/resnet/resnet34_b16x8_cifar10_20210528-a8aa36a6.pth + Config: configs/resnet/resnet34_8xb16_cifar10.py + - Name: resnet50_8xb16_cifar10 + Metadata: + Training Data: CIFAR-10 + Epochs: 200 + Batch Size: 128 + FLOPs: 1310000000 + Parameters: 23520000 + In Collection: ResNet + Results: + - Dataset: CIFAR-10 + Metrics: + Top 1 Accuracy: 95.55 + Task: Image Classification + Weights: https://download.openmmlab.com/mmclassification/v0/resnet/resnet50_b16x8_cifar10_20210528-f54bfad9.pth + Config: configs/resnet/resnet50_8xb16_cifar10.py + - Name: resnet101_8xb16_cifar10 + Metadata: + Training Data: CIFAR-10 + Epochs: 200 + Batch Size: 128 + FLOPs: 2520000000 + Parameters: 42510000 + In Collection: ResNet + Results: + - Dataset: CIFAR-10 + Metrics: + Top 1 Accuracy: 95.58 + Task: Image Classification + Weights: https://download.openmmlab.com/mmclassification/v0/resnet/resnet101_b16x8_cifar10_20210528-2d29e936.pth + Config: configs/resnet/resnet101_8xb16_cifar10.py + - Name: resnet152_8xb16_cifar10 + Metadata: + Training Data: CIFAR-10 + Epochs: 200 + Batch Size: 128 + FLOPs: 3740000000 + Parameters: 58160000 + In Collection: ResNet + Results: + - Dataset: CIFAR-10 + Metrics: + Top 1 Accuracy: 95.76 + Task: Image Classification + Weights: https://download.openmmlab.com/mmclassification/v0/resnet/resnet152_b16x8_cifar10_20210528-3e8e9178.pth + Config: configs/resnet/resnet152_8xb16_cifar10.py + - Name: resnet50_8xb16_cifar100 + Metadata: + Training Data: CIFAR-100 + Epochs: 200 + Batch Size: 128 + FLOPs: 1310000000 + Parameters: 23710000 + In Collection: ResNet + Results: + - Dataset: CIFAR-100 + Metrics: + Top 1 Accuracy: 79.90 + Top 5 Accuracy: 95.19 + Task: Image Classification + Weights: https://download.openmmlab.com/mmclassification/v0/resnet/resnet50_b16x8_cifar100_20210528-67b58a1b.pth + Config: configs/resnet/resnet50_8xb16_cifar100.py + - Name: resnet18_8xb32_in1k + Metadata: + FLOPs: 1820000000 + Parameters: 11690000 + In Collection: ResNet + Results: + - Dataset: ImageNet-1k + Metrics: + Top 1 Accuracy: 69.90 + Top 5 Accuracy: 89.43 + Task: Image Classification + Weights: https://download.openmmlab.com/mmclassification/v0/resnet/resnet18_8xb32_in1k_20210831-fbbb1da6.pth + Config: configs/resnet/resnet18_8xb32_in1k.py + - Name: resnet34_8xb32_in1k + Metadata: + FLOPs: 3680000000 + Parameters: 2180000 + In Collection: ResNet + Results: + - Dataset: ImageNet-1k + Metrics: + Top 1 Accuracy: 73.62 + Top 5 Accuracy: 91.59 + Task: Image Classification + Weights: https://download.openmmlab.com/mmclassification/v0/resnet/resnet34_8xb32_in1k_20210831-f257d4e6.pth + Config: configs/resnet/resnet34_8xb32_in1k.py + - Name: resnet50_8xb32_in1k + Metadata: + FLOPs: 4120000000 + Parameters: 25560000 + In Collection: ResNet + Results: + - Dataset: ImageNet-1k + Metrics: + Top 1 Accuracy: 76.55 + Top 5 Accuracy: 93.06 + Task: Image Classification + Weights: https://download.openmmlab.com/mmclassification/v0/resnet/resnet50_8xb32_in1k_20210831-ea4938fc.pth + Config: configs/resnet/resnet50_8xb32_in1k.py + - Name: resnet101_8xb32_in1k + Metadata: + FLOPs: 7850000000 + Parameters: 44550000 + In Collection: ResNet + Results: + - Dataset: ImageNet-1k + Metrics: + Top 1 Accuracy: 77.97 + Top 5 Accuracy: 94.06 + Task: Image Classification + Weights: https://download.openmmlab.com/mmclassification/v0/resnet/resnet101_8xb32_in1k_20210831-539c63f8.pth + Config: configs/resnet/resnet101_8xb32_in1k.py + - Name: resnet152_8xb32_in1k + Metadata: + FLOPs: 11580000000 + Parameters: 60190000 + In Collection: ResNet + Results: + - Dataset: ImageNet-1k + Metrics: + Top 1 Accuracy: 78.48 + Top 5 Accuracy: 94.13 + Task: Image Classification + Weights: https://download.openmmlab.com/mmclassification/v0/resnet/resnet152_8xb32_in1k_20210901-4d7582fa.pth + Config: configs/resnet/resnet152_8xb32_in1k.py + - Name: resnetv1d50_8xb32_in1k + Metadata: + FLOPs: 4360000000 + Parameters: 25580000 + In Collection: ResNet + Results: + - Dataset: ImageNet-1k + Metrics: + Top 1 Accuracy: 77.54 + Top 5 Accuracy: 93.57 + Task: Image Classification + Weights: https://download.openmmlab.com/mmclassification/v0/resnet/resnetv1d50_b32x8_imagenet_20210531-db14775a.pth + Config: configs/resnet/resnetv1d50_8xb32_in1k.py + - Name: resnetv1d101_8xb32_in1k + Metadata: + FLOPs: 8090000000 + Parameters: 44570000 + In Collection: ResNet + Results: + - Dataset: ImageNet-1k + Metrics: + Top 1 Accuracy: 78.93 + Top 5 Accuracy: 94.48 + Task: Image Classification + Weights: https://download.openmmlab.com/mmclassification/v0/resnet/resnetv1d101_b32x8_imagenet_20210531-6e13bcd3.pth + Config: configs/resnet/resnetv1d101_8xb32_in1k.py + - Name: resnetv1d152_8xb32_in1k + Metadata: + FLOPs: 11820000000 + Parameters: 60210000 + In Collection: ResNet + Results: + - Dataset: ImageNet-1k + Metrics: + Top 1 Accuracy: 79.41 + Top 5 Accuracy: 94.70 + Task: Image Classification + Weights: https://download.openmmlab.com/mmclassification/v0/resnet/resnetv1d152_b32x8_imagenet_20210531-278cf22a.pth + Config: configs/resnet/resnetv1d152_8xb32_in1k.py + - Name: resnet50_8xb32-fp16_in1k + Metadata: + FLOPs: 4120000000 + Parameters: 25560000 + Training Techniques: + - SGD with Momentum + - Weight Decay + - Mixed Precision Training + In Collection: ResNet + Results: + - Task: Image Classification + Dataset: ImageNet-1k + Metrics: + Top 1 Accuracy: 76.30 + Top 5 Accuracy: 93.07 + Weights: https://download.openmmlab.com/mmclassification/v0/fp16/resnet50_batch256_fp16_imagenet_20210320-b3964210.pth + Config: configs/resnet/resnet50_8xb32-fp16_in1k.py + - Name: resnet50_8xb256-rsb-a1-600e_in1k + Metadata: + FLOPs: 4120000000 + Parameters: 25560000 + Training Techniques: + - LAMB + - Weight Decay + - Cosine Annealing + - Mixup + - CutMix + - RepeatAugSampler + - RandAugment + Epochs: 600 + Batch Size: 2048 + In Collection: ResNet + Results: + - Task: Image Classification + Dataset: ImageNet-1k + Metrics: + Top 1 Accuracy: 80.12 + Top 5 Accuracy: 94.78 + Weights: https://download.openmmlab.com/mmclassification/v0/resnet/resnet50_8xb256-rsb-a1-600e_in1k_20211228-20e21305.pth + Config: configs/resnet/resnet50_8xb256-rsb-a1-600e_in1k.py + - Name: resnet50_8xb256-rsb-a2-300e_in1k + Metadata: + FLOPs: 4120000000 + Parameters: 25560000 + Training Techniques: + - LAMB + - Weight Decay + - Cosine Annealing + - Mixup + - CutMix + - RepeatAugSampler + - RandAugment + Epochs: 300 + Batch Size: 2048 + In Collection: ResNet + Results: + - Task: Image Classification + Dataset: ImageNet-1k + Metrics: + Top 1 Accuracy: 79.55 + Top 5 Accuracy: 94.37 + Weights: https://download.openmmlab.com/mmclassification/v0/resnet/resnet50_8xb256-rsb-a2-300e_in1k_20211228-0fd8be6e.pth + Config: configs/resnet/resnet50_8xb256-rsb-a2-300e_in1k.py + - Name: resnet50_8xb256-rsb-a3-100e_in1k + Metadata: + FLOPs: 4120000000 + Parameters: 25560000 + Training Techniques: + - LAMB + - Weight Decay + - Cosine Annealing + - Mixup + - CutMix + - RandAugment + Batch Size: 2048 + In Collection: ResNet + Results: + - Task: Image Classification + Dataset: ImageNet-1k + Metrics: + Top 1 Accuracy: 78.30 + Top 5 Accuracy: 93.80 + Weights: https://download.openmmlab.com/mmclassification/v0/resnet/resnet50_8xb256-rsb-a3-100e_in1k_20211228-3493673c.pth + Config: configs/resnet/resnet50_8xb256-rsb-a3-100e_in1k.py + - Name: resnetv1c50_8xb32_in1k + Metadata: + FLOPs: 4360000000 + Parameters: 25580000 + In Collection: ResNet + Results: + - Dataset: ImageNet-1k + Metrics: + Top 1 Accuracy: 77.01 + Top 5 Accuracy: 93.58 + Task: Image Classification + Weights: https://download.openmmlab.com/mmclassification/v0/resnet/resnetv1c50_8xb32_in1k_20220214-3343eccd.pth + Config: configs/resnet/resnetv1c50_8xb32_in1k.py + - Name: resnetv1c101_8xb32_in1k + Metadata: + FLOPs: 8090000000 + Parameters: 44570000 + In Collection: ResNet + Results: + - Dataset: ImageNet-1k + Metrics: + Top 1 Accuracy: 78.30 + Top 5 Accuracy: 94.27 + Task: Image Classification + Weights: https://download.openmmlab.com/mmclassification/v0/resnet/resnetv1c101_8xb32_in1k_20220214-434fe45f.pth + Config: configs/resnet/resnetv1c101_8xb32_in1k.py + - Name: resnetv1c152_8xb32_in1k + Metadata: + FLOPs: 11820000000 + Parameters: 60210000 + In Collection: ResNet + Results: + - Dataset: ImageNet-1k + Metrics: + Top 1 Accuracy: 78.76 + Top 5 Accuracy: 94.41 + Task: Image Classification + Weights: https://download.openmmlab.com/mmclassification/v0/resnet/resnetv1c152_8xb32_in1k_20220214-c013291f.pth + Config: configs/resnet/resnetv1c152_8xb32_in1k.py + - Name: resnet50_8xb8_cub + Metadata: + FLOPs: 16480000000 + Parameters: 23920000 + In Collection: ResNet + Results: + - Dataset: CUB-200-2011 + Metrics: + Top 1 Accuracy: 88.45 + Task: Image Classification + Pretrain: https://download.openmmlab.com/mmclassification/v0/resnet/resnet50_3rdparty-mill_in21k_20220331-faac000b.pth + Weights: https://download.openmmlab.com/mmclassification/v0/resnet/resnet50_8xb8_cub_20220307-57840e60.pth + Config: configs/resnet/resnet50_8xb8_cub.py + - Name: resnet50_8xb8_cars + Metadata: + FLOPs: 16480000000 + Parameters: 23920000 + In Collection: ResNet + Results: + - Dataset: StanfordCars + Metrics: + Top 1 Accuracy: 92.82 + Task: Image Classification + Pretrain: https://download.openmmlab.com/mmclassification/v0/resnet/resnet50_3rdparty-mill_in21k_20220331-faac000b.pth + Weights: https://download.openmmlab.com/mmclassification/v0/resnet/resnet50_8xb8_cars_20220812-9d85901a.pth + Config: configs/resnet/resnet50_8xb8_cars.py diff --git a/openmmlab_test/mmclassification-speed-benchmark/configs/resnet/resnet101_b16x8_cifar10.py b/openmmlab_test/mmclassification-0.24.1/configs/resnet/resnet101_8xb16_cifar10.py similarity index 100% rename from openmmlab_test/mmclassification-speed-benchmark/configs/resnet/resnet101_b16x8_cifar10.py rename to openmmlab_test/mmclassification-0.24.1/configs/resnet/resnet101_8xb16_cifar10.py diff --git a/openmmlab_test/mmclassification-speed-benchmark/configs/resnet/resnet101_b32x8_imagenet.py b/openmmlab_test/mmclassification-0.24.1/configs/resnet/resnet101_8xb32_in1k.py similarity index 100% rename from openmmlab_test/mmclassification-speed-benchmark/configs/resnet/resnet101_b32x8_imagenet.py rename to openmmlab_test/mmclassification-0.24.1/configs/resnet/resnet101_8xb32_in1k.py diff --git a/openmmlab_test/mmclassification-0.24.1/configs/resnet/resnet101_b16x8_cifar10.py b/openmmlab_test/mmclassification-0.24.1/configs/resnet/resnet101_b16x8_cifar10.py new file mode 100644 index 00000000..57758f2d --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/resnet/resnet101_b16x8_cifar10.py @@ -0,0 +1,6 @@ +_base_ = 'resnet101_8xb16_cifar10.py' + +_deprecation_ = dict( + expected='resnet101_8xb16_cifar10.py', + reference='https://github.com/open-mmlab/mmclassification/pull/508', +) diff --git a/openmmlab_test/mmclassification-0.24.1/configs/resnet/resnet101_b32x8_imagenet.py b/openmmlab_test/mmclassification-0.24.1/configs/resnet/resnet101_b32x8_imagenet.py new file mode 100644 index 00000000..8d45adc3 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/resnet/resnet101_b32x8_imagenet.py @@ -0,0 +1,6 @@ +_base_ = 'resnet101_8xb32_in1k.py' + +_deprecation_ = dict( + expected='resnet101_8xb32_in1k.py', + reference='https://github.com/open-mmlab/mmclassification/pull/508', +) diff --git a/openmmlab_test/mmclassification-speed-benchmark/configs/resnet/resnet152_b16x8_cifar10.py b/openmmlab_test/mmclassification-0.24.1/configs/resnet/resnet152_8xb16_cifar10.py similarity index 100% rename from openmmlab_test/mmclassification-speed-benchmark/configs/resnet/resnet152_b16x8_cifar10.py rename to openmmlab_test/mmclassification-0.24.1/configs/resnet/resnet152_8xb16_cifar10.py diff --git a/openmmlab_test/mmclassification-speed-benchmark/configs/resnet/resnet152_b32x8_imagenet.py b/openmmlab_test/mmclassification-0.24.1/configs/resnet/resnet152_8xb32_in1k.py similarity index 100% rename from openmmlab_test/mmclassification-speed-benchmark/configs/resnet/resnet152_b32x8_imagenet.py rename to openmmlab_test/mmclassification-0.24.1/configs/resnet/resnet152_8xb32_in1k.py diff --git a/openmmlab_test/mmclassification-0.24.1/configs/resnet/resnet152_b16x8_cifar10.py b/openmmlab_test/mmclassification-0.24.1/configs/resnet/resnet152_b16x8_cifar10.py new file mode 100644 index 00000000..5c76cac6 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/resnet/resnet152_b16x8_cifar10.py @@ -0,0 +1,6 @@ +_base_ = 'resnet152_8xb16_cifar10.py' + +_deprecation_ = dict( + expected='resnet152_8xb16_cifar10.py', + reference='https://github.com/open-mmlab/mmclassification/pull/508', +) diff --git a/openmmlab_test/mmclassification-0.24.1/configs/resnet/resnet152_b32x8_imagenet.py b/openmmlab_test/mmclassification-0.24.1/configs/resnet/resnet152_b32x8_imagenet.py new file mode 100644 index 00000000..133638a4 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/resnet/resnet152_b32x8_imagenet.py @@ -0,0 +1,6 @@ +_base_ = 'resnet152_8xb32_in1k.py' + +_deprecation_ = dict( + expected='resnet152_8xb32_in1k.py', + reference='https://github.com/open-mmlab/mmclassification/pull/508', +) diff --git a/openmmlab_test/mmclassification-speed-benchmark/configs/resnet/resnet18_b16x8_cifar10.py b/openmmlab_test/mmclassification-0.24.1/configs/resnet/resnet18_8xb16_cifar10.py similarity index 100% rename from openmmlab_test/mmclassification-speed-benchmark/configs/resnet/resnet18_b16x8_cifar10.py rename to openmmlab_test/mmclassification-0.24.1/configs/resnet/resnet18_8xb16_cifar10.py diff --git a/openmmlab_test/mmclassification-speed-benchmark/configs/resnet/resnet18_b32x8_imagenet.py b/openmmlab_test/mmclassification-0.24.1/configs/resnet/resnet18_8xb32_in1k.py similarity index 100% rename from openmmlab_test/mmclassification-speed-benchmark/configs/resnet/resnet18_b32x8_imagenet.py rename to openmmlab_test/mmclassification-0.24.1/configs/resnet/resnet18_8xb32_in1k.py diff --git a/openmmlab_test/mmclassification-0.24.1/configs/resnet/resnet18_b16x8_cifar10.py b/openmmlab_test/mmclassification-0.24.1/configs/resnet/resnet18_b16x8_cifar10.py new file mode 100644 index 00000000..5a25a0e4 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/resnet/resnet18_b16x8_cifar10.py @@ -0,0 +1,6 @@ +_base_ = 'resnet18_8xb16_cifar10.py' + +_deprecation_ = dict( + expected='resnet18_8xb16_cifar10.py', + reference='https://github.com/open-mmlab/mmclassification/pull/508', +) diff --git a/openmmlab_test/mmclassification-0.24.1/configs/resnet/resnet18_b32x8_imagenet.py b/openmmlab_test/mmclassification-0.24.1/configs/resnet/resnet18_b32x8_imagenet.py new file mode 100644 index 00000000..e6d08f60 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/resnet/resnet18_b32x8_imagenet.py @@ -0,0 +1,6 @@ +_base_ = 'resnet18_8xb32_in1k.py' + +_deprecation_ = dict( + expected='resnet18_8xb32_in1k.py', + reference='https://github.com/open-mmlab/mmclassification/pull/508', +) diff --git a/openmmlab_test/mmclassification-speed-benchmark/configs/resnet/resnet34_b16x8_cifar10.py b/openmmlab_test/mmclassification-0.24.1/configs/resnet/resnet34_8xb16_cifar10.py similarity index 100% rename from openmmlab_test/mmclassification-speed-benchmark/configs/resnet/resnet34_b16x8_cifar10.py rename to openmmlab_test/mmclassification-0.24.1/configs/resnet/resnet34_8xb16_cifar10.py diff --git a/openmmlab_test/mmclassification-speed-benchmark/configs/resnet/resnet34_b32x8_imagenet.py b/openmmlab_test/mmclassification-0.24.1/configs/resnet/resnet34_8xb32_in1k.py similarity index 100% rename from openmmlab_test/mmclassification-speed-benchmark/configs/resnet/resnet34_b32x8_imagenet.py rename to openmmlab_test/mmclassification-0.24.1/configs/resnet/resnet34_8xb32_in1k.py diff --git a/openmmlab_test/mmclassification-0.24.1/configs/resnet/resnet34_b16x8_cifar10.py b/openmmlab_test/mmclassification-0.24.1/configs/resnet/resnet34_b16x8_cifar10.py new file mode 100644 index 00000000..eec98b2a --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/resnet/resnet34_b16x8_cifar10.py @@ -0,0 +1,6 @@ +_base_ = 'resnet34_8xb16_cifar10.py' + +_deprecation_ = dict( + expected='resnet34_8xb16_cifar10.py', + reference='https://github.com/open-mmlab/mmclassification/pull/508', +) diff --git a/openmmlab_test/mmclassification-0.24.1/configs/resnet/resnet34_b32x8_imagenet.py b/openmmlab_test/mmclassification-0.24.1/configs/resnet/resnet34_b32x8_imagenet.py new file mode 100644 index 00000000..144613a3 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/resnet/resnet34_b32x8_imagenet.py @@ -0,0 +1,6 @@ +_base_ = 'resnet34_8xb32_in1k.py' + +_deprecation_ = dict( + expected='resnet34_8xb32_in1k.py', + reference='https://github.com/open-mmlab/mmclassification/pull/508', +) diff --git a/openmmlab_test/mmclassification-speed-benchmark/configs/resnet/resnet50_b64x32_warmup_coslr_imagenet.py b/openmmlab_test/mmclassification-0.24.1/configs/resnet/resnet50_32xb64-warmup-coslr_in1k.py similarity index 100% rename from openmmlab_test/mmclassification-speed-benchmark/configs/resnet/resnet50_b64x32_warmup_coslr_imagenet.py rename to openmmlab_test/mmclassification-0.24.1/configs/resnet/resnet50_32xb64-warmup-coslr_in1k.py diff --git a/openmmlab_test/mmclassification-0.24.1/configs/resnet/resnet50_32xb64-warmup-lbs_in1k.py b/openmmlab_test/mmclassification-0.24.1/configs/resnet/resnet50_32xb64-warmup-lbs_in1k.py new file mode 100644 index 00000000..2f24f9a0 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/resnet/resnet50_32xb64-warmup-lbs_in1k.py @@ -0,0 +1,12 @@ +_base_ = ['./resnet50_32xb64-warmup_in1k.py'] +model = dict( + head=dict( + type='LinearClsHead', + num_classes=1000, + in_channels=2048, + loss=dict( + type='LabelSmoothLoss', + loss_weight=1.0, + label_smooth_val=0.1, + num_classes=1000), + )) diff --git a/openmmlab_test/mmclassification-speed-benchmark/configs/resnet/resnet50_b64x32_warmup_imagenet.py b/openmmlab_test/mmclassification-0.24.1/configs/resnet/resnet50_32xb64-warmup_in1k.py similarity index 100% rename from openmmlab_test/mmclassification-speed-benchmark/configs/resnet/resnet50_b64x32_warmup_imagenet.py rename to openmmlab_test/mmclassification-0.24.1/configs/resnet/resnet50_32xb64-warmup_in1k.py diff --git a/openmmlab_test/mmclassification-0.24.1/configs/resnet/resnet50_8xb128_coslr-90e_in21k.py b/openmmlab_test/mmclassification-0.24.1/configs/resnet/resnet50_8xb128_coslr-90e_in21k.py new file mode 100644 index 00000000..8cc79211 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/resnet/resnet50_8xb128_coslr-90e_in21k.py @@ -0,0 +1,11 @@ +_base_ = [ + '../_base_/models/resnet50.py', '../_base_/datasets/imagenet21k_bs128.py', + '../_base_/schedules/imagenet_bs1024_coslr.py', + '../_base_/default_runtime.py' +] + +# model settings +model = dict(head=dict(num_classes=21843)) + +# runtime settings +runner = dict(type='EpochBasedRunner', max_epochs=90) diff --git a/openmmlab_test/mmclassification-speed-benchmark/configs/resnet/resnet50_b16x8_cifar10_mixup.py b/openmmlab_test/mmclassification-0.24.1/configs/resnet/resnet50_8xb16-mixup_cifar10.py similarity index 100% rename from openmmlab_test/mmclassification-speed-benchmark/configs/resnet/resnet50_b16x8_cifar10_mixup.py rename to openmmlab_test/mmclassification-0.24.1/configs/resnet/resnet50_8xb16-mixup_cifar10.py diff --git a/openmmlab_test/mmclassification-speed-benchmark/configs/resnet/resnet50_b16x8_cifar10.py b/openmmlab_test/mmclassification-0.24.1/configs/resnet/resnet50_8xb16_cifar10.py similarity index 100% rename from openmmlab_test/mmclassification-speed-benchmark/configs/resnet/resnet50_b16x8_cifar10.py rename to openmmlab_test/mmclassification-0.24.1/configs/resnet/resnet50_8xb16_cifar10.py diff --git a/openmmlab_test/mmclassification-speed-benchmark/configs/resnet/resnet50_b16x8_cifar100.py b/openmmlab_test/mmclassification-0.24.1/configs/resnet/resnet50_8xb16_cifar100.py similarity index 100% rename from openmmlab_test/mmclassification-speed-benchmark/configs/resnet/resnet50_b16x8_cifar100.py rename to openmmlab_test/mmclassification-0.24.1/configs/resnet/resnet50_8xb16_cifar100.py diff --git a/openmmlab_test/mmclassification-0.24.1/configs/resnet/resnet50_8xb256-rsb-a1-600e_in1k.py b/openmmlab_test/mmclassification-0.24.1/configs/resnet/resnet50_8xb256-rsb-a1-600e_in1k.py new file mode 100644 index 00000000..192776fc --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/resnet/resnet50_8xb256-rsb-a1-600e_in1k.py @@ -0,0 +1,33 @@ +_base_ = [ + '../_base_/models/resnet50.py', + '../_base_/datasets/imagenet_bs256_rsb_a12.py', + '../_base_/schedules/imagenet_bs2048_rsb.py', + '../_base_/default_runtime.py' +] + +# Model settings +model = dict( + backbone=dict( + norm_cfg=dict(type='SyncBN', requires_grad=True), + drop_path_rate=0.05, + ), + head=dict( + loss=dict( + type='LabelSmoothLoss', + label_smooth_val=0.1, + mode='original', + )), + train_cfg=dict(augments=[ + dict(type='BatchMixup', alpha=0.2, num_classes=1000, prob=0.5), + dict(type='BatchCutMix', alpha=1.0, num_classes=1000, prob=0.5) + ])) + +# Dataset settings +sampler = dict(type='RepeatAugSampler') + +# Schedule settings +runner = dict(max_epochs=600) +optimizer = dict( + weight_decay=0.01, + paramwise_cfg=dict(bias_decay_mult=0., norm_decay_mult=0.), +) diff --git a/openmmlab_test/mmclassification-0.24.1/configs/resnet/resnet50_8xb256-rsb-a2-300e_in1k.py b/openmmlab_test/mmclassification-0.24.1/configs/resnet/resnet50_8xb256-rsb-a2-300e_in1k.py new file mode 100644 index 00000000..fcdc880e --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/resnet/resnet50_8xb256-rsb-a2-300e_in1k.py @@ -0,0 +1,25 @@ +_base_ = [ + '../_base_/models/resnet50.py', + '../_base_/datasets/imagenet_bs256_rsb_a12.py', + '../_base_/schedules/imagenet_bs2048_rsb.py', + '../_base_/default_runtime.py' +] + +# Model settings +model = dict( + backbone=dict( + norm_cfg=dict(type='SyncBN', requires_grad=True), + drop_path_rate=0.05, + ), + head=dict(loss=dict(use_sigmoid=True)), + train_cfg=dict(augments=[ + dict(type='BatchMixup', alpha=0.1, num_classes=1000, prob=0.5), + dict(type='BatchCutMix', alpha=1.0, num_classes=1000, prob=0.5) + ])) + +# Dataset settings +sampler = dict(type='RepeatAugSampler') + +# Schedule settings +runner = dict(max_epochs=300) +optimizer = dict(paramwise_cfg=dict(bias_decay_mult=0., norm_decay_mult=0.)) diff --git a/openmmlab_test/mmclassification-0.24.1/configs/resnet/resnet50_8xb256-rsb-a3-100e_in1k.py b/openmmlab_test/mmclassification-0.24.1/configs/resnet/resnet50_8xb256-rsb-a3-100e_in1k.py new file mode 100644 index 00000000..4ff52ac8 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/resnet/resnet50_8xb256-rsb-a3-100e_in1k.py @@ -0,0 +1,19 @@ +_base_ = [ + '../_base_/models/resnet50.py', + '../_base_/datasets/imagenet_bs256_rsb_a3.py', + '../_base_/schedules/imagenet_bs2048_rsb.py', + '../_base_/default_runtime.py' +] + +# Model settings +model = dict( + backbone=dict(norm_cfg=dict(type='SyncBN', requires_grad=True)), + head=dict(loss=dict(use_sigmoid=True)), + train_cfg=dict(augments=[ + dict(type='BatchMixup', alpha=0.1, num_classes=1000, prob=0.5), + dict(type='BatchCutMix', alpha=1.0, num_classes=1000, prob=0.5) + ])) + +# Schedule settings +optimizer = dict( + lr=0.008, paramwise_cfg=dict(bias_decay_mult=0., norm_decay_mult=0.)) diff --git a/openmmlab_test/mmclassification-0.24.1/configs/resnet/resnet50_8xb32-coslr-preciseBN_in1k.py b/openmmlab_test/mmclassification-0.24.1/configs/resnet/resnet50_8xb32-coslr-preciseBN_in1k.py new file mode 100644 index 00000000..dab82c6e --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/resnet/resnet50_8xb32-coslr-preciseBN_in1k.py @@ -0,0 +1,12 @@ +_base_ = 'resnet50_8xb32-coslr_in1k.py' + +# Precise BN hook will update the bn stats, so this hook should be executed +# before CheckpointHook, which has priority of 'NORMAL'. So set the +# priority of PreciseBNHook to 'ABOVE_NORMAL' here. +custom_hooks = [ + dict( + type='PreciseBNHook', + num_samples=8192, + interval=1, + priority='ABOVE_NORMAL') +] diff --git a/openmmlab_test/mmclassification-speed-benchmark/configs/resnet/resnet50_b32x8_coslr_imagenet.py b/openmmlab_test/mmclassification-0.24.1/configs/resnet/resnet50_8xb32-coslr_in1k.py similarity index 100% rename from openmmlab_test/mmclassification-speed-benchmark/configs/resnet/resnet50_b32x8_coslr_imagenet.py rename to openmmlab_test/mmclassification-0.24.1/configs/resnet/resnet50_8xb32-coslr_in1k.py diff --git a/openmmlab_test/mmclassification-speed-benchmark/configs/resnet/resnet50_b32x8_cutmix_imagenet.py b/openmmlab_test/mmclassification-0.24.1/configs/resnet/resnet50_8xb32-cutmix_in1k.py similarity index 100% rename from openmmlab_test/mmclassification-speed-benchmark/configs/resnet/resnet50_b32x8_cutmix_imagenet.py rename to openmmlab_test/mmclassification-0.24.1/configs/resnet/resnet50_8xb32-cutmix_in1k.py diff --git a/openmmlab_test/mmclassification-0.24.1/configs/resnet/resnet50_8xb32-fp16-dynamic_in1k.py b/openmmlab_test/mmclassification-0.24.1/configs/resnet/resnet50_8xb32-fp16-dynamic_in1k.py new file mode 100644 index 00000000..7a6c93c3 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/resnet/resnet50_8xb32-fp16-dynamic_in1k.py @@ -0,0 +1,4 @@ +_base_ = ['./resnet50_8xb32_in1k.py'] + +# fp16 settings +fp16 = dict(loss_scale='dynamic') diff --git a/openmmlab_test/mmclassification-0.24.1/configs/resnet/resnet50_8xb32-fp16_in1k.py b/openmmlab_test/mmclassification-0.24.1/configs/resnet/resnet50_8xb32-fp16_in1k.py new file mode 100644 index 00000000..4245d198 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/resnet/resnet50_8xb32-fp16_in1k.py @@ -0,0 +1,4 @@ +_base_ = ['./resnet50_8xb32_in1k.py'] + +# fp16 settings +fp16 = dict(loss_scale=512.) diff --git a/openmmlab_test/mmclassification-speed-benchmark/configs/resnet/resnet50_b32x8_label_smooth_imagenet.py b/openmmlab_test/mmclassification-0.24.1/configs/resnet/resnet50_8xb32-lbs_in1k.py similarity index 100% rename from openmmlab_test/mmclassification-speed-benchmark/configs/resnet/resnet50_b32x8_label_smooth_imagenet.py rename to openmmlab_test/mmclassification-0.24.1/configs/resnet/resnet50_8xb32-lbs_in1k.py diff --git a/openmmlab_test/mmclassification-speed-benchmark/configs/resnet/resnet50_b32x8_mixup_imagenet.py b/openmmlab_test/mmclassification-0.24.1/configs/resnet/resnet50_8xb32-mixup_in1k.py similarity index 100% rename from openmmlab_test/mmclassification-speed-benchmark/configs/resnet/resnet50_b32x8_mixup_imagenet.py rename to openmmlab_test/mmclassification-0.24.1/configs/resnet/resnet50_8xb32-mixup_in1k.py diff --git a/openmmlab_test/mmclassification-0.24.1/configs/resnet/resnet50_8xb32_in1k.py b/openmmlab_test/mmclassification-0.24.1/configs/resnet/resnet50_8xb32_in1k.py new file mode 100644 index 00000000..b3cf5869 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/resnet/resnet50_8xb32_in1k.py @@ -0,0 +1,6 @@ +_base_ = [ + '../_base_/models/resnet50.py', '../_base_/datasets/imagenet_bs32.py', + '../_base_/schedules/imagenet_bs256.py', '../_base_/default_runtime.py' +] + +fp16 = dict(loss_scale=512.) diff --git a/openmmlab_test/mmclassification-0.24.1/configs/resnet/resnet50_8xb8_cars.py b/openmmlab_test/mmclassification-0.24.1/configs/resnet/resnet50_8xb8_cars.py new file mode 100644 index 00000000..2d2db45d --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/resnet/resnet50_8xb8_cars.py @@ -0,0 +1,19 @@ +_base_ = [ + '../_base_/models/resnet50.py', + '../_base_/datasets/stanford_cars_bs8_448.py', + '../_base_/schedules/stanford_cars_bs8.py', '../_base_/default_runtime.py' +] + +# use pre-train weight converted from https://github.com/Alibaba-MIIL/ImageNet21K # noqa +checkpoint = 'https://download.openmmlab.com/mmclassification/v0/resnet/resnet50_3rdparty-mill_in21k_20220331-faac000b.pth' # noqa + +model = dict( + type='ImageClassifier', + backbone=dict( + init_cfg=dict( + type='Pretrained', checkpoint=checkpoint, prefix='backbone')), + head=dict(num_classes=196, )) + +log_config = dict(interval=50) +checkpoint_config = dict( + interval=1, max_keep_ckpts=3) # save last three checkpoints diff --git a/openmmlab_test/mmclassification-0.24.1/configs/resnet/resnet50_8xb8_cub.py b/openmmlab_test/mmclassification-0.24.1/configs/resnet/resnet50_8xb8_cub.py new file mode 100644 index 00000000..dffb076c --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/resnet/resnet50_8xb8_cub.py @@ -0,0 +1,19 @@ +_base_ = [ + '../_base_/models/resnet50.py', '../_base_/datasets/cub_bs8_448.py', + '../_base_/schedules/cub_bs64.py', '../_base_/default_runtime.py' +] + +# use pre-train weight converted from https://github.com/Alibaba-MIIL/ImageNet21K # noqa +checkpoint = 'https://download.openmmlab.com/mmclassification/v0/resnet/resnet50_3rdparty-mill_in21k_20220331-faac000b.pth' # noqa + +model = dict( + type='ImageClassifier', + backbone=dict( + init_cfg=dict( + type='Pretrained', checkpoint=checkpoint, prefix='backbone')), + head=dict(num_classes=200, )) + +log_config = dict(interval=20) # log every 20 intervals + +checkpoint_config = dict( + interval=1, max_keep_ckpts=3) # save last three checkpoints diff --git a/openmmlab_test/mmclassification-0.24.1/configs/resnet/resnet50_b16x8_cifar10.py b/openmmlab_test/mmclassification-0.24.1/configs/resnet/resnet50_b16x8_cifar10.py new file mode 100644 index 00000000..e40d1ee3 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/resnet/resnet50_b16x8_cifar10.py @@ -0,0 +1,6 @@ +_base_ = 'resnet50_8xb16_cifar10.py' + +_deprecation_ = dict( + expected='resnet50_8xb16_cifar10.py', + reference='https://github.com/open-mmlab/mmclassification/pull/508', +) diff --git a/openmmlab_test/mmclassification-0.24.1/configs/resnet/resnet50_b16x8_cifar100.py b/openmmlab_test/mmclassification-0.24.1/configs/resnet/resnet50_b16x8_cifar100.py new file mode 100644 index 00000000..b49b6f45 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/resnet/resnet50_b16x8_cifar100.py @@ -0,0 +1,6 @@ +_base_ = 'resnet50_8xb16_cifar100.py' + +_deprecation_ = dict( + expected='resnet50_8xb16_cifar100.py', + reference='https://github.com/open-mmlab/mmclassification/pull/508', +) diff --git a/openmmlab_test/mmclassification-0.24.1/configs/resnet/resnet50_b16x8_cifar10_mixup.py b/openmmlab_test/mmclassification-0.24.1/configs/resnet/resnet50_b16x8_cifar10_mixup.py new file mode 100644 index 00000000..409a40e9 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/resnet/resnet50_b16x8_cifar10_mixup.py @@ -0,0 +1,6 @@ +_base_ = 'resnet50_8xb16-mixup_cifar10.py' + +_deprecation_ = dict( + expected='resnet50_8xb16-mixup_cifar10.py', + reference='https://github.com/open-mmlab/mmclassification/pull/508', +) diff --git a/openmmlab_test/mmclassification-0.24.1/configs/resnet/resnet50_b32x8_coslr_imagenet.py b/openmmlab_test/mmclassification-0.24.1/configs/resnet/resnet50_b32x8_coslr_imagenet.py new file mode 100644 index 00000000..647153b4 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/resnet/resnet50_b32x8_coslr_imagenet.py @@ -0,0 +1,6 @@ +_base_ = 'resnet50_8xb32-coslr_in1k.py' + +_deprecation_ = dict( + expected='resnet50_8xb32-coslr_in1k.py', + reference='https://github.com/open-mmlab/mmclassification/pull/508', +) diff --git a/openmmlab_test/mmclassification-0.24.1/configs/resnet/resnet50_b32x8_cutmix_imagenet.py b/openmmlab_test/mmclassification-0.24.1/configs/resnet/resnet50_b32x8_cutmix_imagenet.py new file mode 100644 index 00000000..87b27d5a --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/resnet/resnet50_b32x8_cutmix_imagenet.py @@ -0,0 +1,6 @@ +_base_ = 'resnet50_8xb32-cutmix_in1k.py' + +_deprecation_ = dict( + expected='resnet50_8xb32-cutmix_in1k.py', + reference='https://github.com/open-mmlab/mmclassification/pull/508', +) diff --git a/openmmlab_test/mmclassification-0.24.1/configs/resnet/resnet50_b32x8_imagenet.py b/openmmlab_test/mmclassification-0.24.1/configs/resnet/resnet50_b32x8_imagenet.py new file mode 100644 index 00000000..7d7f69ec --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/resnet/resnet50_b32x8_imagenet.py @@ -0,0 +1,6 @@ +_base_ = 'resnet50_8xb32_in1k.py' + +_deprecation_ = dict( + expected='resnet50_8xb32_in1k.py', + reference='https://github.com/open-mmlab/mmclassification/pull/508', +) diff --git a/openmmlab_test/mmclassification-0.24.1/configs/resnet/resnet50_b32x8_label_smooth_imagenet.py b/openmmlab_test/mmclassification-0.24.1/configs/resnet/resnet50_b32x8_label_smooth_imagenet.py new file mode 100644 index 00000000..6e874155 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/resnet/resnet50_b32x8_label_smooth_imagenet.py @@ -0,0 +1,6 @@ +_base_ = 'resnet50_8xb32-lbs_in1k.py' + +_deprecation_ = dict( + expected='resnet50_8xb32-lbs_in1k.py', + reference='https://github.com/open-mmlab/mmclassification/pull/508', +) diff --git a/openmmlab_test/mmclassification-0.24.1/configs/resnet/resnet50_b32x8_mixup_imagenet.py b/openmmlab_test/mmclassification-0.24.1/configs/resnet/resnet50_b32x8_mixup_imagenet.py new file mode 100644 index 00000000..3405319d --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/resnet/resnet50_b32x8_mixup_imagenet.py @@ -0,0 +1,6 @@ +_base_ = 'resnet50_8xb32-mixup_in1k.py' + +_deprecation_ = dict( + expected='resnet50_8xb32-mixup_in1k.py', + reference='https://github.com/open-mmlab/mmclassification/pull/508', +) diff --git a/openmmlab_test/mmclassification-0.24.1/configs/resnet/resnet50_b64x32_warmup_coslr_imagenet.py b/openmmlab_test/mmclassification-0.24.1/configs/resnet/resnet50_b64x32_warmup_coslr_imagenet.py new file mode 100644 index 00000000..4724616c --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/resnet/resnet50_b64x32_warmup_coslr_imagenet.py @@ -0,0 +1,6 @@ +_base_ = 'resnet50_32xb64-warmup-coslr_in1k.py' + +_deprecation_ = dict( + expected='resnet50_32xb64-warmup-coslr_in1k.py', + reference='https://github.com/open-mmlab/mmclassification/pull/508', +) diff --git a/openmmlab_test/mmclassification-0.24.1/configs/resnet/resnet50_b64x32_warmup_imagenet.py b/openmmlab_test/mmclassification-0.24.1/configs/resnet/resnet50_b64x32_warmup_imagenet.py new file mode 100644 index 00000000..3e350541 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/resnet/resnet50_b64x32_warmup_imagenet.py @@ -0,0 +1,6 @@ +_base_ = 'resnet50_32xb64-warmup_in1k.py' + +_deprecation_ = dict( + expected='resnet50_32xb64-warmup_in1k.py', + reference='https://github.com/open-mmlab/mmclassification/pull/508', +) diff --git a/openmmlab_test/mmclassification-0.24.1/configs/resnet/resnet50_b64x32_warmup_label_smooth_imagenet.py b/openmmlab_test/mmclassification-0.24.1/configs/resnet/resnet50_b64x32_warmup_label_smooth_imagenet.py new file mode 100644 index 00000000..2544e33f --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/resnet/resnet50_b64x32_warmup_label_smooth_imagenet.py @@ -0,0 +1,6 @@ +_base_ = 'resnet50_32xb64-warmup-lbs_in1k.py' + +_deprecation_ = dict( + expected='resnet50_32xb64-warmup-lbs_in1k.py', + reference='https://github.com/open-mmlab/mmclassification/pull/508', +) diff --git a/openmmlab_test/mmclassification-0.24.1/configs/resnet/resnetv1c101_8xb32_in1k.py b/openmmlab_test/mmclassification-0.24.1/configs/resnet/resnetv1c101_8xb32_in1k.py new file mode 100644 index 00000000..441aff59 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/resnet/resnetv1c101_8xb32_in1k.py @@ -0,0 +1,7 @@ +_base_ = [ + '../_base_/models/resnetv1c50.py', + '../_base_/datasets/imagenet_bs32_pil_resize.py', + '../_base_/schedules/imagenet_bs256.py', '../_base_/default_runtime.py' +] + +model = dict(backbone=dict(depth=101)) diff --git a/openmmlab_test/mmclassification-0.24.1/configs/resnet/resnetv1c152_8xb32_in1k.py b/openmmlab_test/mmclassification-0.24.1/configs/resnet/resnetv1c152_8xb32_in1k.py new file mode 100644 index 00000000..b9f466f8 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/resnet/resnetv1c152_8xb32_in1k.py @@ -0,0 +1,7 @@ +_base_ = [ + '../_base_/models/resnetv1c50.py', + '../_base_/datasets/imagenet_bs32_pil_resize.py', + '../_base_/schedules/imagenet_bs256.py', '../_base_/default_runtime.py' +] + +model = dict(backbone=dict(depth=152)) diff --git a/openmmlab_test/mmclassification-0.24.1/configs/resnet/resnetv1c50_8xb32_in1k.py b/openmmlab_test/mmclassification-0.24.1/configs/resnet/resnetv1c50_8xb32_in1k.py new file mode 100644 index 00000000..aa1c8b64 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/resnet/resnetv1c50_8xb32_in1k.py @@ -0,0 +1,5 @@ +_base_ = [ + '../_base_/models/resnetv1c50.py', + '../_base_/datasets/imagenet_bs32_pil_resize.py', + '../_base_/schedules/imagenet_bs256.py', '../_base_/default_runtime.py' +] diff --git a/openmmlab_test/mmclassification-speed-benchmark/configs/resnet/resnetv1d101_b32x8_imagenet.py b/openmmlab_test/mmclassification-0.24.1/configs/resnet/resnetv1d101_8xb32_in1k.py similarity index 100% rename from openmmlab_test/mmclassification-speed-benchmark/configs/resnet/resnetv1d101_b32x8_imagenet.py rename to openmmlab_test/mmclassification-0.24.1/configs/resnet/resnetv1d101_8xb32_in1k.py diff --git a/openmmlab_test/mmclassification-0.24.1/configs/resnet/resnetv1d101_b32x8_imagenet.py b/openmmlab_test/mmclassification-0.24.1/configs/resnet/resnetv1d101_b32x8_imagenet.py new file mode 100644 index 00000000..e736937e --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/resnet/resnetv1d101_b32x8_imagenet.py @@ -0,0 +1,6 @@ +_base_ = 'resnetv1d101_8xb32_in1k.py' + +_deprecation_ = dict( + expected='resnetv1d101_8xb32_in1k.py', + reference='https://github.com/open-mmlab/mmclassification/pull/508', +) diff --git a/openmmlab_test/mmclassification-speed-benchmark/configs/resnet/resnetv1d152_b32x8_imagenet.py b/openmmlab_test/mmclassification-0.24.1/configs/resnet/resnetv1d152_8xb32_in1k.py similarity index 100% rename from openmmlab_test/mmclassification-speed-benchmark/configs/resnet/resnetv1d152_b32x8_imagenet.py rename to openmmlab_test/mmclassification-0.24.1/configs/resnet/resnetv1d152_8xb32_in1k.py diff --git a/openmmlab_test/mmclassification-0.24.1/configs/resnet/resnetv1d152_b32x8_imagenet.py b/openmmlab_test/mmclassification-0.24.1/configs/resnet/resnetv1d152_b32x8_imagenet.py new file mode 100644 index 00000000..88e5b9f0 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/resnet/resnetv1d152_b32x8_imagenet.py @@ -0,0 +1,6 @@ +_base_ = 'resnetv1d152_8xb32_in1k.py' + +_deprecation_ = dict( + expected='resnetv1d152_8xb32_in1k.py', + reference='https://github.com/open-mmlab/mmclassification/pull/508', +) diff --git a/openmmlab_test/mmclassification-speed-benchmark/configs/resnet/resnetv1d50_b32x8_imagenet.py b/openmmlab_test/mmclassification-0.24.1/configs/resnet/resnetv1d50_8xb32_in1k.py similarity index 100% rename from openmmlab_test/mmclassification-speed-benchmark/configs/resnet/resnetv1d50_b32x8_imagenet.py rename to openmmlab_test/mmclassification-0.24.1/configs/resnet/resnetv1d50_8xb32_in1k.py diff --git a/openmmlab_test/mmclassification-0.24.1/configs/resnet/resnetv1d50_b32x8_imagenet.py b/openmmlab_test/mmclassification-0.24.1/configs/resnet/resnetv1d50_b32x8_imagenet.py new file mode 100644 index 00000000..5455e055 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/resnet/resnetv1d50_b32x8_imagenet.py @@ -0,0 +1,6 @@ +_base_ = 'resnetv1d50_8xb32_in1k.py' + +_deprecation_ = dict( + expected='resnetv1d50_8xb32_in1k.py', + reference='https://github.com/open-mmlab/mmclassification/pull/508', +) diff --git a/openmmlab_test/mmclassification-0.24.1/configs/resnext/README.md b/openmmlab_test/mmclassification-0.24.1/configs/resnext/README.md new file mode 100644 index 00000000..56df277e --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/resnext/README.md @@ -0,0 +1,36 @@ +# ResNeXt + +> [Aggregated Residual Transformations for Deep Neural Networks](https://openaccess.thecvf.com/content_cvpr_2017/html/Xie_Aggregated_Residual_Transformations_CVPR_2017_paper.html) + + + +## Abstract + +We present a simple, highly modularized network architecture for image classification. Our network is constructed by repeating a building block that aggregates a set of transformations with the same topology. Our simple design results in a homogeneous, multi-branch architecture that has only a few hyper-parameters to set. This strategy exposes a new dimension, which we call "cardinality" (the size of the set of transformations), as an essential factor in addition to the dimensions of depth and width. On the ImageNet-1K dataset, we empirically show that even under the restricted condition of maintaining complexity, increasing cardinality is able to improve classification accuracy. Moreover, increasing cardinality is more effective than going deeper or wider when we increase the capacity. Our models, named ResNeXt, are the foundations of our entry to the ILSVRC 2016 classification task in which we secured 2nd place. We further investigate ResNeXt on an ImageNet-5K set and the COCO detection set, also showing better results than its ResNet counterpart. The code and models are publicly available online. + +
+ +
+ +## Results and models + +### ImageNet-1k + +| Model | Params(M) | Flops(G) | Top-1 (%) | Top-5 (%) | Config | Download | +| :---------------: | :-------: | :------: | :-------: | :-------: | :-----------------------------------------------------------------------: | :-------------------------------------------------------------------------: | +| ResNeXt-32x4d-50 | 25.03 | 4.27 | 77.90 | 93.66 | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/resnext/resnext50-32x4d_8xb32_in1k.py) | [model](https://download.openmmlab.com/mmclassification/v0/resnext/resnext50_32x4d_b32x8_imagenet_20210429-56066e27.pth) \| [log](https://download.openmmlab.com/mmclassification/v0/resnext/resnext50_32x4d_b32x8_imagenet_20210429-56066e27.log.json) | +| ResNeXt-32x4d-101 | 44.18 | 8.03 | 78.61 | 94.17 | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/resnext/resnext101-32x4d_8xb32_in1k.py) | [model](https://download.openmmlab.com/mmclassification/v0/resnext/resnext101_32x4d_b32x8_imagenet_20210506-e0fa3dd5.pth) \| [log](https://download.openmmlab.com/mmclassification/v0/resnext/resnext101_32x4d_b32x8_imagenet_20210506-e0fa3dd5.log.json) | +| ResNeXt-32x8d-101 | 88.79 | 16.5 | 79.27 | 94.58 | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/resnext/resnext101-32x8d_8xb32_in1k.py) | [model](https://download.openmmlab.com/mmclassification/v0/resnext/resnext101_32x8d_b32x8_imagenet_20210506-23a247d5.pth) \| [log](https://download.openmmlab.com/mmclassification/v0/resnext/resnext101_32x8d_b32x8_imagenet_20210506-23a247d5.log.json) | +| ResNeXt-32x4d-152 | 59.95 | 11.8 | 78.88 | 94.33 | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/resnext/resnext152-32x4d_8xb32_in1k.py) | [model](https://download.openmmlab.com/mmclassification/v0/resnext/resnext152_32x4d_b32x8_imagenet_20210524-927787be.pth) \| [log](https://download.openmmlab.com/mmclassification/v0/resnext/resnext152_32x4d_b32x8_imagenet_20210524-927787be.log.json) | + +## Citation + +``` +@inproceedings{xie2017aggregated, + title={Aggregated residual transformations for deep neural networks}, + author={Xie, Saining and Girshick, Ross and Doll{\'a}r, Piotr and Tu, Zhuowen and He, Kaiming}, + booktitle={Proceedings of the IEEE conference on computer vision and pattern recognition}, + pages={1492--1500}, + year={2017} +} +``` diff --git a/openmmlab_test/mmclassification-0.24.1/configs/resnext/metafile.yml b/openmmlab_test/mmclassification-0.24.1/configs/resnext/metafile.yml new file mode 100644 index 00000000..c68e7f9d --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/resnext/metafile.yml @@ -0,0 +1,73 @@ +Collections: + - Name: ResNeXt + Metadata: + Training Data: ImageNet-1k + Training Techniques: + - SGD with Momentum + - Weight Decay + Training Resources: 8x V100 GPUs + Epochs: 100 + Batch Size: 256 + Architecture: + - ResNeXt + Paper: + URL: https://openaccess.thecvf.com/content_cvpr_2017/html/Xie_Aggregated_Residual_Transformations_CVPR_2017_paper.html + Title: "Aggregated Residual Transformations for Deep Neural Networks" + README: configs/resnext/README.md + Code: + URL: https://github.com/open-mmlab/mmclassification/blob/v0.15.0/mmcls/models/backbones/resnext.py#L90 + Version: v0.15.0 + +Models: + - Name: resnext50-32x4d_8xb32_in1k + Metadata: + FLOPs: 4270000000 + Parameters: 25030000 + In Collection: ResNeXt + Results: + - Dataset: ImageNet-1k + Metrics: + Top 1 Accuracy: 77.90 + Top 5 Accuracy: 93.66 + Task: Image Classification + Weights: https://download.openmmlab.com/mmclassification/v0/resnext/resnext50_32x4d_b32x8_imagenet_20210429-56066e27.pth + Config: configs/resnext/resnext50-32x4d_8xb32_in1k.py + - Name: resnext101-32x4d_8xb32_in1k + Metadata: + FLOPs: 8030000000 + Parameters: 44180000 + In Collection: ResNeXt + Results: + - Dataset: ImageNet-1k + Metrics: + Top 1 Accuracy: 78.61 + Top 5 Accuracy: 94.17 + Task: Image Classification + Weights: https://download.openmmlab.com/mmclassification/v0/resnext/resnext101_32x4d_b32x8_imagenet_20210506-e0fa3dd5.pth + Config: configs/resnext/resnext101-32x4d_8xb32_in1k.py + - Name: resnext101-32x8d_8xb32_in1k + Metadata: + FLOPs: 16500000000 + Parameters: 88790000 + In Collection: ResNeXt + Results: + - Dataset: ImageNet-1k + Metrics: + Top 1 Accuracy: 79.27 + Top 5 Accuracy: 94.58 + Task: Image Classification + Weights: https://download.openmmlab.com/mmclassification/v0/resnext/resnext101_32x8d_b32x8_imagenet_20210506-23a247d5.pth + Config: configs/resnext/resnext101-32x8d_8xb32_in1k.py + - Name: resnext152-32x4d_8xb32_in1k + Metadata: + FLOPs: 11800000000 + Parameters: 59950000 + In Collection: ResNeXt + Results: + - Dataset: ImageNet-1k + Metrics: + Top 1 Accuracy: 78.88 + Top 5 Accuracy: 94.33 + Task: Image Classification + Weights: https://download.openmmlab.com/mmclassification/v0/resnext/resnext152_32x4d_b32x8_imagenet_20210524-927787be.pth + Config: configs/resnext/resnext152-32x4d_8xb32_in1k.py diff --git a/openmmlab_test/mmclassification-speed-benchmark/configs/resnext/resnext101_32x4d_b32x8_imagenet.py b/openmmlab_test/mmclassification-0.24.1/configs/resnext/resnext101-32x4d_8xb32_in1k.py similarity index 100% rename from openmmlab_test/mmclassification-speed-benchmark/configs/resnext/resnext101_32x4d_b32x8_imagenet.py rename to openmmlab_test/mmclassification-0.24.1/configs/resnext/resnext101-32x4d_8xb32_in1k.py diff --git a/openmmlab_test/mmclassification-speed-benchmark/configs/resnext/resnext101_32x8d_b32x8_imagenet.py b/openmmlab_test/mmclassification-0.24.1/configs/resnext/resnext101-32x8d_8xb32_in1k.py similarity index 100% rename from openmmlab_test/mmclassification-speed-benchmark/configs/resnext/resnext101_32x8d_b32x8_imagenet.py rename to openmmlab_test/mmclassification-0.24.1/configs/resnext/resnext101-32x8d_8xb32_in1k.py diff --git a/openmmlab_test/mmclassification-0.24.1/configs/resnext/resnext101_32x4d_b32x8_imagenet.py b/openmmlab_test/mmclassification-0.24.1/configs/resnext/resnext101_32x4d_b32x8_imagenet.py new file mode 100644 index 00000000..07d66c35 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/resnext/resnext101_32x4d_b32x8_imagenet.py @@ -0,0 +1,6 @@ +_base_ = 'resnext101-32x4d_8xb32_in1k.py' + +_deprecation_ = dict( + expected='resnext101-32x4d_8xb32_in1k.py', + reference='https://github.com/open-mmlab/mmclassification/pull/508', +) diff --git a/openmmlab_test/mmclassification-0.24.1/configs/resnext/resnext101_32x8d_b32x8_imagenet.py b/openmmlab_test/mmclassification-0.24.1/configs/resnext/resnext101_32x8d_b32x8_imagenet.py new file mode 100644 index 00000000..071ca60f --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/resnext/resnext101_32x8d_b32x8_imagenet.py @@ -0,0 +1,6 @@ +_base_ = 'resnext101-32x8d_8xb32_in1k.py' + +_deprecation_ = dict( + expected='resnext101-32x8d_8xb32_in1k.py', + reference='https://github.com/open-mmlab/mmclassification/pull/508', +) diff --git a/openmmlab_test/mmclassification-speed-benchmark/configs/resnext/resnext152_32x4d_b32x8_imagenet.py b/openmmlab_test/mmclassification-0.24.1/configs/resnext/resnext152-32x4d_8xb32_in1k.py similarity index 100% rename from openmmlab_test/mmclassification-speed-benchmark/configs/resnext/resnext152_32x4d_b32x8_imagenet.py rename to openmmlab_test/mmclassification-0.24.1/configs/resnext/resnext152-32x4d_8xb32_in1k.py diff --git a/openmmlab_test/mmclassification-0.24.1/configs/resnext/resnext152_32x4d_b32x8_imagenet.py b/openmmlab_test/mmclassification-0.24.1/configs/resnext/resnext152_32x4d_b32x8_imagenet.py new file mode 100644 index 00000000..6d05c8b3 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/resnext/resnext152_32x4d_b32x8_imagenet.py @@ -0,0 +1,6 @@ +_base_ = 'resnext152-32x4d_8xb32_in1k.py' + +_deprecation_ = dict( + expected='resnext152-32x4d_8xb32_in1k.py', + reference='https://github.com/open-mmlab/mmclassification/pull/508', +) diff --git a/openmmlab_test/mmclassification-speed-benchmark/configs/resnext/resnext50_32x4d_b32x8_imagenet.py b/openmmlab_test/mmclassification-0.24.1/configs/resnext/resnext50-32x4d_8xb32_in1k.py similarity index 100% rename from openmmlab_test/mmclassification-speed-benchmark/configs/resnext/resnext50_32x4d_b32x8_imagenet.py rename to openmmlab_test/mmclassification-0.24.1/configs/resnext/resnext50-32x4d_8xb32_in1k.py diff --git a/openmmlab_test/mmclassification-0.24.1/configs/resnext/resnext50_32x4d_b32x8_imagenet.py b/openmmlab_test/mmclassification-0.24.1/configs/resnext/resnext50_32x4d_b32x8_imagenet.py new file mode 100644 index 00000000..92ae0639 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/resnext/resnext50_32x4d_b32x8_imagenet.py @@ -0,0 +1,6 @@ +_base_ = 'resnext50-32x4d_8xb32_in1k.py' + +_deprecation_ = dict( + expected='resnext50-32x4d_8xb32_in1k.py', + reference='https://github.com/open-mmlab/mmclassification/pull/508', +) diff --git a/openmmlab_test/mmclassification-0.24.1/configs/seresnet/README.md b/openmmlab_test/mmclassification-0.24.1/configs/seresnet/README.md new file mode 100644 index 00000000..ccfd1d15 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/seresnet/README.md @@ -0,0 +1,34 @@ +# SE-ResNet + +> [Squeeze-and-Excitation Networks](https://openaccess.thecvf.com/content_cvpr_2018/html/Hu_Squeeze-and-Excitation_Networks_CVPR_2018_paper.html) + + + +## Abstract + +The central building block of convolutional neural networks (CNNs) is the convolution operator, which enables networks to construct informative features by fusing both spatial and channel-wise information within local receptive fields at each layer. A broad range of prior research has investigated the spatial component of this relationship, seeking to strengthen the representational power of a CNN by enhancing the quality of spatial encodings throughout its feature hierarchy. In this work, we focus instead on the channel relationship and propose a novel architectural unit, which we term the "Squeeze-and-Excitation" (SE) block, that adaptively recalibrates channel-wise feature responses by explicitly modelling interdependencies between channels. We show that these blocks can be stacked together to form SENet architectures that generalise extremely effectively across different datasets. We further demonstrate that SE blocks bring significant improvements in performance for existing state-of-the-art CNNs at slight additional computational cost. Squeeze-and-Excitation Networks formed the foundation of our ILSVRC 2017 classification submission which won first place and reduced the top-5 error to 2.251%, surpassing the winning entry of 2016 by a relative improvement of ~25%. + +
+ +
+ +## Results and models + +### ImageNet-1k + +| Model | Params(M) | Flops(G) | Top-1 (%) | Top-5 (%) | Config | Download | +| :-----------: | :-------: | :------: | :-------: | :-------: | :-------------------------------------------------------------------------: | :---------------------------------------------------------------------------: | +| SE-ResNet-50 | 28.09 | 4.13 | 77.74 | 93.84 | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/seresnet/seresnet50_8xb32_in1k.py) | [model](https://download.openmmlab.com/mmclassification/v0/se-resnet/se-resnet50_batch256_imagenet_20200804-ae206104.pth) \| [log](https://download.openmmlab.com/mmclassification/v0/se-resnet/se-resnet50_batch256_imagenet_20200708-657b3c36.log.json) | +| SE-ResNet-101 | 49.33 | 7.86 | 78.26 | 94.07 | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/seresnet/seresnet101_8xb32_in1k.py) | [model](https://download.openmmlab.com/mmclassification/v0/se-resnet/se-resnet101_batch256_imagenet_20200804-ba5b51d4.pth) \| [log](https://download.openmmlab.com/mmclassification/v0/se-resnet/se-resnet101_batch256_imagenet_20200708-038a4d04.log.json) | + +## Citation + +``` +@inproceedings{hu2018squeeze, + title={Squeeze-and-excitation networks}, + author={Hu, Jie and Shen, Li and Sun, Gang}, + booktitle={Proceedings of the IEEE conference on computer vision and pattern recognition}, + pages={7132--7141}, + year={2018} +} +``` diff --git a/openmmlab_test/mmclassification-0.24.1/configs/seresnet/metafile.yml b/openmmlab_test/mmclassification-0.24.1/configs/seresnet/metafile.yml new file mode 100644 index 00000000..7d2a3810 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/seresnet/metafile.yml @@ -0,0 +1,47 @@ +Collections: + - Name: SEResNet + Metadata: + Training Data: ImageNet-1k + Training Techniques: + - SGD with Momentum + - Weight Decay + Training Resources: 8x V100 GPUs + Epochs: 140 + Batch Size: 256 + Architecture: + - ResNet + Paper: + URL: https://openaccess.thecvf.com/content_cvpr_2018/html/Hu_Squeeze-and-Excitation_Networks_CVPR_2018_paper.html + Title: "Squeeze-and-Excitation Networks" + README: configs/seresnet/README.md + Code: + URL: https://github.com/open-mmlab/mmclassification/blob/v0.15.0/mmcls/models/backbones/seresnet.py#L58 + Version: v0.15.0 + +Models: + - Name: seresnet50_8xb32_in1k + Metadata: + FLOPs: 4130000000 + Parameters: 28090000 + In Collection: SEResNet + Results: + - Dataset: ImageNet-1k + Metrics: + Top 1 Accuracy: 77.74 + Top 5 Accuracy: 93.84 + Task: Image Classification + Weights: https://download.openmmlab.com/mmclassification/v0/se-resnet/se-resnet50_batch256_imagenet_20200804-ae206104.pth + Config: configs/seresnet/seresnet50_8xb32_in1k.py + - Name: seresnet101_8xb32_in1k + Metadata: + FLOPs: 7860000000 + Parameters: 49330000 + In Collection: SEResNet + Results: + - Dataset: ImageNet-1k + Metrics: + Top 1 Accuracy: 78.26 + Top 5 Accuracy: 94.07 + Task: Image Classification + Weights: https://download.openmmlab.com/mmclassification/v0/se-resnet/se-resnet101_batch256_imagenet_20200804-ba5b51d4.pth + Config: configs/seresnet/seresnet101_8xb32_in1k.py diff --git a/openmmlab_test/mmclassification-speed-benchmark/configs/seresnet/seresnet101_b32x8_imagenet.py b/openmmlab_test/mmclassification-0.24.1/configs/seresnet/seresnet101_8xb32_in1k.py similarity index 100% rename from openmmlab_test/mmclassification-speed-benchmark/configs/seresnet/seresnet101_b32x8_imagenet.py rename to openmmlab_test/mmclassification-0.24.1/configs/seresnet/seresnet101_8xb32_in1k.py diff --git a/openmmlab_test/mmclassification-0.24.1/configs/seresnet/seresnet101_b32x8_imagenet.py b/openmmlab_test/mmclassification-0.24.1/configs/seresnet/seresnet101_b32x8_imagenet.py new file mode 100644 index 00000000..46daa09a --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/seresnet/seresnet101_b32x8_imagenet.py @@ -0,0 +1,6 @@ +_base_ = 'seresnet101_8xb32_in1k.py' + +_deprecation_ = dict( + expected='seresnet101_8xb32_in1k.py', + reference='https://github.com/open-mmlab/mmclassification/pull/508', +) diff --git a/openmmlab_test/mmclassification-speed-benchmark/configs/seresnet/seresnet50_b32x8_imagenet.py b/openmmlab_test/mmclassification-0.24.1/configs/seresnet/seresnet50_8xb32_in1k.py similarity index 100% rename from openmmlab_test/mmclassification-speed-benchmark/configs/seresnet/seresnet50_b32x8_imagenet.py rename to openmmlab_test/mmclassification-0.24.1/configs/seresnet/seresnet50_8xb32_in1k.py diff --git a/openmmlab_test/mmclassification-0.24.1/configs/seresnet/seresnet50_b32x8_imagenet.py b/openmmlab_test/mmclassification-0.24.1/configs/seresnet/seresnet50_b32x8_imagenet.py new file mode 100644 index 00000000..0fb9df39 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/seresnet/seresnet50_b32x8_imagenet.py @@ -0,0 +1,6 @@ +_base_ = 'seresnet50_8xb32_in1k.py' + +_deprecation_ = dict( + expected='seresnet50_8xb32_in1k.py', + reference='https://github.com/open-mmlab/mmclassification/pull/508', +) diff --git a/openmmlab_test/mmclassification-speed-benchmark/configs/seresnext/seresnext101_32x4d_b32x8_imagenet.py b/openmmlab_test/mmclassification-0.24.1/configs/seresnet/seresnext101-32x4d_8xb32_in1k.py similarity index 100% rename from openmmlab_test/mmclassification-speed-benchmark/configs/seresnext/seresnext101_32x4d_b32x8_imagenet.py rename to openmmlab_test/mmclassification-0.24.1/configs/seresnet/seresnext101-32x4d_8xb32_in1k.py diff --git a/openmmlab_test/mmclassification-0.24.1/configs/seresnet/seresnext101_32x4d_b32x8_imagenet.py b/openmmlab_test/mmclassification-0.24.1/configs/seresnet/seresnext101_32x4d_b32x8_imagenet.py new file mode 100644 index 00000000..cb99ec66 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/seresnet/seresnext101_32x4d_b32x8_imagenet.py @@ -0,0 +1,6 @@ +_base_ = 'seresnext101-32x4d_8xb32_in1k.py' + +_deprecation_ = dict( + expected='seresnext101-32x4d_8xb32_in1k.py', + reference='https://github.com/open-mmlab/mmclassification/pull/508', +) diff --git a/openmmlab_test/mmclassification-speed-benchmark/configs/seresnext/seresnext50_32x4d_b32x8_imagenet.py b/openmmlab_test/mmclassification-0.24.1/configs/seresnet/seresnext50-32x4d_8xb32_in1k.py similarity index 100% rename from openmmlab_test/mmclassification-speed-benchmark/configs/seresnext/seresnext50_32x4d_b32x8_imagenet.py rename to openmmlab_test/mmclassification-0.24.1/configs/seresnet/seresnext50-32x4d_8xb32_in1k.py diff --git a/openmmlab_test/mmclassification-0.24.1/configs/seresnet/seresnext50_32x4d_b32x8_imagenet.py b/openmmlab_test/mmclassification-0.24.1/configs/seresnet/seresnext50_32x4d_b32x8_imagenet.py new file mode 100644 index 00000000..49229604 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/seresnet/seresnext50_32x4d_b32x8_imagenet.py @@ -0,0 +1,6 @@ +_base_ = 'seresnext50-32x4d_8xb32_in1k.py' + +_deprecation_ = dict( + expected='seresnext50-32x4d_8xb32_in1k.py', + reference='https://github.com/open-mmlab/mmclassification/pull/508', +) diff --git a/openmmlab_test/mmclassification-0.24.1/configs/shufflenet_v1/README.md b/openmmlab_test/mmclassification-0.24.1/configs/shufflenet_v1/README.md new file mode 100644 index 00000000..fd131279 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/shufflenet_v1/README.md @@ -0,0 +1,33 @@ +# ShuffleNet V1 + +> [ShuffleNet: An Extremely Efficient Convolutional Neural Network for Mobile Devices](https://openaccess.thecvf.com/content_cvpr_2018/html/Zhang_ShuffleNet_An_Extremely_CVPR_2018_paper.html) + + + +## Abstract + +We introduce an extremely computation-efficient CNN architecture named ShuffleNet, which is designed specially for mobile devices with very limited computing power (e.g., 10-150 MFLOPs). The new architecture utilizes two new operations, pointwise group convolution and channel shuffle, to greatly reduce computation cost while maintaining accuracy. Experiments on ImageNet classification and MS COCO object detection demonstrate the superior performance of ShuffleNet over other structures, e.g. lower top-1 error (absolute 7.8%) than recent MobileNet on ImageNet classification task, under the computation budget of 40 MFLOPs. On an ARM-based mobile device, ShuffleNet achieves ~13x actual speedup over AlexNet while maintaining comparable accuracy. + +
+ +
+ +## Results and models + +### ImageNet-1k + +| Model | Params(M) | Flops(G) | Top-1 (%) | Top-5 (%) | Config | Download | +| :-------------------------: | :-------: | :------: | :-------: | :-------: | :------------------------------------------------------------------: | :--------------------------------------------------------------------: | +| ShuffleNetV1 1.0x (group=3) | 1.87 | 0.146 | 68.13 | 87.81 | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/shufflenet_v1/shufflenet-v1-1x_16xb64_in1k.py) | [model](https://download.openmmlab.com/mmclassification/v0/shufflenet_v1/shufflenet_v1_batch1024_imagenet_20200804-5d6cec73.pth) \| [log](https://download.openmmlab.com/mmclassification/v0/shufflenet_v1/shufflenet_v1_batch1024_imagenet_20200804-5d6cec73.log.json) | + +## Citation + +``` +@inproceedings{zhang2018shufflenet, + title={Shufflenet: An extremely efficient convolutional neural network for mobile devices}, + author={Zhang, Xiangyu and Zhou, Xinyu and Lin, Mengxiao and Sun, Jian}, + booktitle={Proceedings of the IEEE conference on computer vision and pattern recognition}, + pages={6848--6856}, + year={2018} +} +``` diff --git a/openmmlab_test/mmclassification-0.24.1/configs/shufflenet_v1/metafile.yml b/openmmlab_test/mmclassification-0.24.1/configs/shufflenet_v1/metafile.yml new file mode 100644 index 00000000..2cfffa10 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/shufflenet_v1/metafile.yml @@ -0,0 +1,35 @@ +Collections: + - Name: Shufflenet V1 + Metadata: + Training Data: ImageNet-1k + Training Techniques: + - SGD with Momentum + - Weight Decay + - No BN decay + Training Resources: 8x 1080 GPUs + Epochs: 300 + Batch Size: 1024 + Architecture: + - Shufflenet V1 + Paper: + URL: https://openaccess.thecvf.com/content_cvpr_2018/html/Zhang_ShuffleNet_An_Extremely_CVPR_2018_paper.html + Title: "ShuffleNet: An Extremely Efficient Convolutional Neural Network for Mobile Devices" + README: configs/shufflenet_v1/README.md + Code: + URL: https://github.com/open-mmlab/mmclassification/blob/v0.15.0/mmcls/models/backbones/shufflenet_v1.py#L152 + Version: v0.15.0 + +Models: + - Name: shufflenet-v1-1x_16xb64_in1k + Metadata: + FLOPs: 146000000 + Parameters: 1870000 + In Collection: Shufflenet V1 + Results: + - Dataset: ImageNet-1k + Metrics: + Top 1 Accuracy: 68.13 + Top 5 Accuracy: 87.81 + Task: Image Classification + Weights: https://download.openmmlab.com/mmclassification/v0/shufflenet_v1/shufflenet_v1_batch1024_imagenet_20200804-5d6cec73.pth + Config: configs/shufflenet_v1/shufflenet-v1-1x_16xb64_in1k.py diff --git a/openmmlab_test/mmclassification-speed-benchmark/configs/shufflenet_v1/shufflenet_v1_1x_b64x16_linearlr_bn_nowd_imagenet.py b/openmmlab_test/mmclassification-0.24.1/configs/shufflenet_v1/shufflenet-v1-1x_16xb64_in1k.py similarity index 100% rename from openmmlab_test/mmclassification-speed-benchmark/configs/shufflenet_v1/shufflenet_v1_1x_b64x16_linearlr_bn_nowd_imagenet.py rename to openmmlab_test/mmclassification-0.24.1/configs/shufflenet_v1/shufflenet-v1-1x_16xb64_in1k.py diff --git a/openmmlab_test/mmclassification-0.24.1/configs/shufflenet_v1/shufflenet_v1_1x_b64x16_linearlr_bn_nowd_imagenet.py b/openmmlab_test/mmclassification-0.24.1/configs/shufflenet_v1/shufflenet_v1_1x_b64x16_linearlr_bn_nowd_imagenet.py new file mode 100644 index 00000000..03121979 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/shufflenet_v1/shufflenet_v1_1x_b64x16_linearlr_bn_nowd_imagenet.py @@ -0,0 +1,6 @@ +_base_ = 'shufflenet-v1-1x_16xb64_in1k.py' + +_deprecation_ = dict( + expected='shufflenet-v1-1x_16xb64_in1k.py', + reference='https://github.com/open-mmlab/mmclassification/pull/508', +) diff --git a/openmmlab_test/mmclassification-0.24.1/configs/shufflenet_v2/README.md b/openmmlab_test/mmclassification-0.24.1/configs/shufflenet_v2/README.md new file mode 100644 index 00000000..78271543 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/shufflenet_v2/README.md @@ -0,0 +1,33 @@ +# ShuffleNet V2 + +> [Shufflenet v2: Practical guidelines for efficient cnn architecture design](https://openaccess.thecvf.com/content_ECCV_2018/papers/Ningning_Light-weight_CNN_Architecture_ECCV_2018_paper.pdf) + + + +## Abstract + +Currently, the neural network architecture design is mostly guided by the *indirect* metric of computation complexity, i.e., FLOPs. However, the *direct* metric, e.g., speed, also depends on the other factors such as memory access cost and platform characterics. Thus, this work proposes to evaluate the direct metric on the target platform, beyond only considering FLOPs. Based on a series of controlled experiments, this work derives several practical *guidelines* for efficient network design. Accordingly, a new architecture is presented, called *ShuffleNet V2*. Comprehensive ablation experiments verify that our model is the state-of-the-art in terms of speed and accuracy tradeoff. + +
+ +
+ +## Results and models + +### ImageNet-1k + +| Model | Params(M) | Flops(G) | Top-1 (%) | Top-5 (%) | Config | Download | +| :---------------: | :-------: | :------: | :-------: | :-------: | :-----------------------------------------------------------------------: | :-------------------------------------------------------------------------: | +| ShuffleNetV2 1.0x | 2.28 | 0.149 | 69.55 | 88.92 | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/shufflenet_v2/shufflenet-v2-1x_16xb64_in1k.py) | [model](https://download.openmmlab.com/mmclassification/v0/shufflenet_v2/shufflenet_v2_batch1024_imagenet_20200812-5bf4721e.pth) \| [log](https://download.openmmlab.com/mmclassification/v0/shufflenet_v2/shufflenet_v2_batch1024_imagenet_20200804-8860eec9.log.json) | + +## Citation + +``` +@inproceedings{ma2018shufflenet, + title={Shufflenet v2: Practical guidelines for efficient cnn architecture design}, + author={Ma, Ningning and Zhang, Xiangyu and Zheng, Hai-Tao and Sun, Jian}, + booktitle={Proceedings of the European conference on computer vision (ECCV)}, + pages={116--131}, + year={2018} +} +``` diff --git a/openmmlab_test/mmclassification-0.24.1/configs/shufflenet_v2/metafile.yml b/openmmlab_test/mmclassification-0.24.1/configs/shufflenet_v2/metafile.yml new file mode 100644 index 00000000..a06322dd --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/shufflenet_v2/metafile.yml @@ -0,0 +1,35 @@ +Collections: + - Name: Shufflenet V2 + Metadata: + Training Data: ImageNet-1k + Training Techniques: + - SGD with Momentum + - Weight Decay + - No BN decay + Training Resources: 8x 1080 GPUs + Epochs: 300 + Batch Size: 1024 + Architecture: + - Shufflenet V2 + Paper: + URL: https://openaccess.thecvf.com/content_ECCV_2018/papers/Ningning_Light-weight_CNN_Architecture_ECCV_2018_paper.pdf + Title: "ShuffleNet V2: Practical Guidelines for Efficient CNN Architecture Design" + README: configs/shufflenet_v2/README.md + Code: + URL: https://github.com/open-mmlab/mmclassification/blob/v0.15.0/mmcls/models/backbones/shufflenet_v2.py#L134 + Version: v0.15.0 + +Models: + - Name: shufflenet-v2-1x_16xb64_in1k + Metadata: + FLOPs: 149000000 + Parameters: 2280000 + In Collection: Shufflenet V2 + Results: + - Dataset: ImageNet-1k + Metrics: + Top 1 Accuracy: 69.55 + Top 5 Accuracy: 88.92 + Task: Image Classification + Weights: https://download.openmmlab.com/mmclassification/v0/shufflenet_v2/shufflenet_v2_batch1024_imagenet_20200812-5bf4721e.pth + Config: configs/shufflenet_v2/shufflenet-v2-1x_16xb64_in1k.py diff --git a/openmmlab_test/mmclassification-0.24.1/configs/shufflenet_v2/shufflenet-v2-1x_16xb64_in1k.py b/openmmlab_test/mmclassification-0.24.1/configs/shufflenet_v2/shufflenet-v2-1x_16xb64_in1k.py new file mode 100644 index 00000000..b43bd34d --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/shufflenet_v2/shufflenet-v2-1x_16xb64_in1k.py @@ -0,0 +1,8 @@ +_base_ = [ + '../_base_/models/shufflenet_v2_1x.py', + '../_base_/datasets/imagenet_bs64_pil_resize.py', + '../_base_/schedules/imagenet_bs1024_linearlr_bn_nowd.py', + '../_base_/default_runtime.py' +] + +fp16 = dict(loss_scale=512.) diff --git a/openmmlab_test/mmclassification-0.24.1/configs/shufflenet_v2/shufflenet_v2_1x_b64x16_linearlr_bn_nowd_imagenet.py b/openmmlab_test/mmclassification-0.24.1/configs/shufflenet_v2/shufflenet_v2_1x_b64x16_linearlr_bn_nowd_imagenet.py new file mode 100644 index 00000000..c0938b09 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/shufflenet_v2/shufflenet_v2_1x_b64x16_linearlr_bn_nowd_imagenet.py @@ -0,0 +1,6 @@ +_base_ = 'shufflenet-v2-1x_16xb64_in1k.py' + +_deprecation_ = dict( + expected='shufflenet-v2-1x_16xb64_in1k.py', + reference='https://github.com/open-mmlab/mmclassification/pull/508', +) diff --git a/openmmlab_test/mmclassification-0.24.1/configs/swin_transformer/README.md b/openmmlab_test/mmclassification-0.24.1/configs/swin_transformer/README.md new file mode 100644 index 00000000..86975ec8 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/swin_transformer/README.md @@ -0,0 +1,60 @@ +# Swin Transformer + +> [Swin Transformer: Hierarchical Vision Transformer using Shifted Windows](https://arxiv.org/pdf/2103.14030.pdf) + + + +## Abstract + +This paper presents a new vision Transformer, called Swin Transformer, that capably serves as a general-purpose backbone for computer vision. Challenges in adapting Transformer from language to vision arise from differences between the two domains, such as large variations in the scale of visual entities and the high resolution of pixels in images compared to words in text. To address these differences, we propose a hierarchical Transformer whose representation is computed with **S**hifted **win**dows. The shifted windowing scheme brings greater efficiency by limiting self-attention computation to non-overlapping local windows while also allowing for cross-window connection. This hierarchical architecture has the flexibility to model at various scales and has linear computational complexity with respect to image size. These qualities of Swin Transformer make it compatible with a broad range of vision tasks, including image classification (87.3 top-1 accuracy on ImageNet-1K) and dense prediction tasks such as object detection (58.7 box AP and 51.1 mask AP on COCO test-dev) and semantic segmentation (53.5 mIoU on ADE20K val). Its performance surpasses the previous state-of-the-art by a large margin of +2.7 box AP and +2.6 mask AP on COCO, and +3.2 mIoU on ADE20K, demonstrating the potential of Transformer-based models as vision backbones. The hierarchical design and the shifted window approach also prove beneficial for all-MLP architectures. + +
+ +
+ +## Results and models + +### ImageNet-21k + +The pre-trained models on ImageNet-21k are used to fine-tune, and therefore don't have evaluation results. + +| Model | resolution | Params(M) | Flops(G) | Download | +| :----: | :--------: | :-------: | :------: | :---------------------------------------------------------------------------------------------------------------------: | +| Swin-B | 224x224 | 86.74 | 15.14 | [model](https://download.openmmlab.com/mmclassification/v0/swin-transformer/convert/swin-base_3rdparty_in21k.pth) | +| Swin-B | 384x384 | 86.88 | 44.49 | [model](https://download.openmmlab.com/mmclassification/v0/swin-transformer/convert/swin-base_3rdparty_in21k-384px.pth) | +| Swin-L | 224x224 | 195.00 | 34.04 | [model](https://download.openmmlab.com/mmclassification/v0/swin-transformer/convert/swin-large_3rdparty_in21k.pth) | +| Swin-L | 384x384 | 195.20 | 100.04 | [model](https://download.openmmlab.com/mmclassification/v0/swin-transformer/convert/swin-base_3rdparty_in21k-384px.pth) | + +### ImageNet-1k + +| Model | Pretrain | resolution | Params(M) | Flops(G) | Top-1 (%) | Top-5 (%) | Config | Download | +| :------: | :----------: | :--------: | :-------: | :------: | :-------: | :-------: | :----------------------------------------------------------------: | :-------------------------------------------------------------------: | +| Swin-T | From scratch | 224x224 | 28.29 | 4.36 | 81.18 | 95.61 | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/swin_transformer/swin-tiny_16xb64_in1k.py) | [model](https://download.openmmlab.com/mmclassification/v0/swin-transformer/swin_tiny_224_b16x64_300e_imagenet_20210616_090925-66df6be6.pth) \| [log](https://download.openmmlab.com/mmclassification/v0/swin-transformer/swin_tiny_224_b16x64_300e_imagenet_20210616_090925.log.json) | +| Swin-S | From scratch | 224x224 | 49.61 | 8.52 | 83.02 | 96.29 | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/swin_transformer/swin-small_16xb64_in1k.py) | [model](https://download.openmmlab.com/mmclassification/v0/swin-transformer/swin_small_224_b16x64_300e_imagenet_20210615_110219-7f9d988b.pth) \| [log](https://download.openmmlab.com/mmclassification/v0/swin-transformer/swin_small_224_b16x64_300e_imagenet_20210615_110219.log.json) | +| Swin-B | From scratch | 224x224 | 87.77 | 15.14 | 83.36 | 96.44 | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/swin_transformer/swin_base_224_b16x64_300e_imagenet.py) | [model](https://download.openmmlab.com/mmclassification/v0/swin-transformer/swin_base_224_b16x64_300e_imagenet_20210616_190742-93230b0d.pth) \| [log](https://download.openmmlab.com/mmclassification/v0/swin-transformer/swin_base_224_b16x64_300e_imagenet_20210616_190742.log.json) | +| Swin-S\* | From scratch | 224x224 | 49.61 | 8.52 | 83.21 | 96.25 | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/swin_transformer/swin-small_16xb64_in1k.py) | [model](https://download.openmmlab.com/mmclassification/v0/swin-transformer/convert/swin_small_patch4_window7_224-cc7a01c9.pth) | +| Swin-B\* | From scratch | 224x224 | 87.77 | 15.14 | 83.42 | 96.44 | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/swin_transformer/swin-base_16xb64_in1k.py) | [model](https://download.openmmlab.com/mmclassification/v0/swin-transformer/convert/swin_base_patch4_window7_224-4670dd19.pth) | +| Swin-B\* | From scratch | 384x384 | 87.90 | 44.49 | 84.49 | 96.95 | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/swin_transformer/swin-base_16xb64_in1k-384px.py) | [model](https://download.openmmlab.com/mmclassification/v0/swin-transformer/convert/swin_base_patch4_window12_384-02c598a4.pth) | +| Swin-B\* | ImageNet-21k | 224x224 | 87.77 | 15.14 | 85.16 | 97.50 | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/swin_transformer/swin-base_16xb64_in1k.py) | [model](https://download.openmmlab.com/mmclassification/v0/swin-transformer/convert/swin_base_patch4_window7_224_22kto1k-f967f799.pth) | +| Swin-B\* | ImageNet-21k | 384x384 | 87.90 | 44.49 | 86.44 | 98.05 | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/swin_transformer/swin-base_16xb64_in1k-384px.py) | [model](https://download.openmmlab.com/mmclassification/v0/swin-transformer/convert/swin_base_patch4_window12_384_22kto1k-d59b0d1d.pth) | +| Swin-L\* | ImageNet-21k | 224x224 | 196.53 | 34.04 | 86.24 | 97.88 | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/swin_transformer/swin-large_16xb64_in1k.py) | [model](https://download.openmmlab.com/mmclassification/v0/swin-transformer/convert/swin_large_patch4_window7_224_22kto1k-5f0996db.pth) | +| Swin-L\* | ImageNet-21k | 384x384 | 196.74 | 100.04 | 87.25 | 98.25 | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/swin_transformer/swin-large_16xb64_in1k-384px.py) | [model](https://download.openmmlab.com/mmclassification/v0/swin-transformer/convert/swin_large_patch4_window12_384_22kto1k-0a40944b.pth) | + +*Models with * are converted from the [official repo](https://github.com/microsoft/Swin-Transformer#main-results-on-imagenet-with-pretrained-models). The config files of these models are only for validation. We don't ensure these config files' training accuracy and welcome you to contribute your reproduction results.* + +### CUB-200-2011 + +| Model | Pretrain | resolution | Params(M) | Flops(G) | Top-1 (%) | Config | Download | +| :----: | :---------------------------------------------------: | :--------: | :-------: | :------: | :-------: | :-------------------------------------------------: | :----------------------------------------------------: | +| Swin-L | [ImageNet-21k](https://download.openmmlab.com/mmclassification/v0/swin-transformer/convert/swin-base_3rdparty_in21k-384px.pth) | 384x384 | 195.51 | 100.04 | 91.87 | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/swin_transformer/swin-large_8xb8_cub_384px.py) | [model](https://download.openmmlab.com/mmclassification/v0/swin-transformer/swin-large_8xb8_cub_384px_20220307-1bbaee6a.pth) \| [log](https://download.openmmlab.com/mmclassification/v0/swin-transformer/swin-large_8xb8_cub_384px_20220307-1bbaee6a.log.json) | + +## Citation + +``` +@article{liu2021Swin, + title={Swin Transformer: Hierarchical Vision Transformer using Shifted Windows}, + author={Liu, Ze and Lin, Yutong and Cao, Yue and Hu, Han and Wei, Yixuan and Zhang, Zheng and Lin, Stephen and Guo, Baining}, + journal={arXiv preprint arXiv:2103.14030}, + year={2021} +} +``` diff --git a/openmmlab_test/mmclassification-0.24.1/configs/swin_transformer/metafile.yml b/openmmlab_test/mmclassification-0.24.1/configs/swin_transformer/metafile.yml new file mode 100644 index 00000000..b44c1ba8 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/swin_transformer/metafile.yml @@ -0,0 +1,201 @@ +Collections: + - Name: Swin-Transformer + Metadata: + Training Data: ImageNet-1k + Training Techniques: + - AdamW + - Weight Decay + Training Resources: 16x V100 GPUs + Epochs: 300 + Batch Size: 1024 + Architecture: + - Shift Window Multihead Self Attention + Paper: + URL: https://arxiv.org/pdf/2103.14030.pdf + Title: "Swin Transformer: Hierarchical Vision Transformer using Shifted Windows" + README: configs/swin_transformer/README.md + Code: + URL: https://github.com/open-mmlab/mmclassification/blob/v0.15.0/mmcls/models/backbones/swin_transformer.py#L176 + Version: v0.15.0 + +Models: + - Name: swin-tiny_16xb64_in1k + Metadata: + FLOPs: 4360000000 + Parameters: 28290000 + In Collection: Swin-Transformer + Results: + - Dataset: ImageNet-1k + Metrics: + Top 1 Accuracy: 81.18 + Top 5 Accuracy: 95.61 + Task: Image Classification + Weights: https://download.openmmlab.com/mmclassification/v0/swin-transformer/swin_tiny_224_b16x64_300e_imagenet_20210616_090925-66df6be6.pth + Config: configs/swin_transformer/swin-tiny_16xb64_in1k.py + - Name: swin-small_16xb64_in1k + Metadata: + FLOPs: 8520000000 + Parameters: 49610000 + In Collection: Swin-Transformer + Results: + - Dataset: ImageNet-1k + Metrics: + Top 1 Accuracy: 83.02 + Top 5 Accuracy: 96.29 + Task: Image Classification + Weights: https://download.openmmlab.com/mmclassification/v0/swin-transformer/swin_small_224_b16x64_300e_imagenet_20210615_110219-7f9d988b.pth + Config: configs/swin_transformer/swin-small_16xb64_in1k.py + - Name: swin-base_16xb64_in1k + Metadata: + FLOPs: 15140000000 + Parameters: 87770000 + In Collection: Swin-Transformer + Results: + - Dataset: ImageNet-1k + Metrics: + Top 1 Accuracy: 83.36 + Top 5 Accuracy: 96.44 + Task: Image Classification + Weights: https://download.openmmlab.com/mmclassification/v0/swin-transformer/swin_base_224_b16x64_300e_imagenet_20210616_190742-93230b0d.pth + Config: configs/swin_transformer/swin-base_16xb64_in1k.py + - Name: swin-tiny_3rdparty_in1k + Metadata: + FLOPs: 4360000000 + Parameters: 28290000 + In Collection: Swin-Transformer + Results: + - Dataset: ImageNet-1k + Metrics: + Top 1 Accuracy: 81.18 + Top 5 Accuracy: 95.52 + Task: Image Classification + Weights: https://download.openmmlab.com/mmclassification/v0/swin-transformer/convert/swin_tiny_patch4_window7_224-160bb0a5.pth + Converted From: + Weights: https://github.com/SwinTransformer/storage/releases/download/v1.0.0/swin_tiny_patch4_window7_224.pth + Code: https://github.com/microsoft/Swin-Transformer/blob/777f6c66604bb5579086c4447efe3620344d95a9/models/swin_transformer.py#L458 + Config: configs/swin_transformer/swin-tiny_16xb64_in1k.py + - Name: swin-small_3rdparty_in1k + Metadata: + FLOPs: 8520000000 + Parameters: 49610000 + In Collection: Swin-Transformer + Results: + - Dataset: ImageNet-1k + Metrics: + Top 1 Accuracy: 83.21 + Top 5 Accuracy: 96.25 + Task: Image Classification + Weights: https://download.openmmlab.com/mmclassification/v0/swin-transformer/convert/swin_small_patch4_window7_224-cc7a01c9.pth + Converted From: + Weights: https://github.com/SwinTransformer/storage/releases/download/v1.0.0/swin_small_patch4_window7_224.pth + Code: https://github.com/microsoft/Swin-Transformer/blob/777f6c66604bb5579086c4447efe3620344d95a9/models/swin_transformer.py#L458 + Config: configs/swin_transformer/swin-small_16xb64_in1k.py + - Name: swin-base_3rdparty_in1k + Metadata: + FLOPs: 15140000000 + Parameters: 87770000 + In Collection: Swin-Transformer + Results: + - Dataset: ImageNet-1k + Metrics: + Top 1 Accuracy: 83.42 + Top 5 Accuracy: 96.44 + Task: Image Classification + Weights: https://download.openmmlab.com/mmclassification/v0/swin-transformer/convert/swin_base_patch4_window7_224-4670dd19.pth + Converted From: + Weights: https://github.com/SwinTransformer/storage/releases/download/v1.0.0/swin_base_patch4_window7_224.pth + Code: https://github.com/microsoft/Swin-Transformer/blob/777f6c66604bb5579086c4447efe3620344d95a9/models/swin_transformer.py#L458 + Config: configs/swin_transformer/swin-base_16xb64_in1k.py + - Name: swin-base_3rdparty_in1k-384 + Metadata: + FLOPs: 44490000000 + Parameters: 87900000 + In Collection: Swin-Transformer + Results: + - Dataset: ImageNet-1k + Metrics: + Top 1 Accuracy: 84.49 + Top 5 Accuracy: 96.95 + Task: Image Classification + Weights: https://download.openmmlab.com/mmclassification/v0/swin-transformer/convert/swin_base_patch4_window12_384-02c598a4.pth + Converted From: + Weights: https://github.com/SwinTransformer/storage/releases/download/v1.0.0/swin_base_patch4_window12_384.pth + Code: https://github.com/microsoft/Swin-Transformer/blob/777f6c66604bb5579086c4447efe3620344d95a9/models/swin_transformer.py#L458 + Config: configs/swin_transformer/swin-base_16xb64_in1k-384px.py + - Name: swin-base_in21k-pre-3rdparty_in1k + Metadata: + FLOPs: 15140000000 + Parameters: 87770000 + In Collection: Swin-Transformer + Results: + - Dataset: ImageNet-1k + Metrics: + Top 1 Accuracy: 85.16 + Top 5 Accuracy: 97.50 + Task: Image Classification + Weights: https://download.openmmlab.com/mmclassification/v0/swin-transformer/convert/swin_base_patch4_window7_224_22kto1k-f967f799.pth + Converted From: + Weights: https://github.com/SwinTransformer/storage/releases/download/v1.0.0/swin_base_patch4_window7_224_22kto1k.pth + Code: https://github.com/microsoft/Swin-Transformer/blob/777f6c66604bb5579086c4447efe3620344d95a9/models/swin_transformer.py#L458 + Config: configs/swin_transformer/swin-base_16xb64_in1k.py + - Name: swin-base_in21k-pre-3rdparty_in1k-384 + Metadata: + FLOPs: 44490000000 + Parameters: 87900000 + In Collection: Swin-Transformer + Results: + - Dataset: ImageNet-1k + Metrics: + Top 1 Accuracy: 86.44 + Top 5 Accuracy: 98.05 + Task: Image Classification + Weights: https://download.openmmlab.com/mmclassification/v0/swin-transformer/convert/swin_base_patch4_window12_384_22kto1k-d59b0d1d.pth + Converted From: + Weights: https://github.com/SwinTransformer/storage/releases/download/v1.0.0/swin_base_patch4_window12_384_22kto1k.pth + Code: https://github.com/microsoft/Swin-Transformer/blob/777f6c66604bb5579086c4447efe3620344d95a9/models/swin_transformer.py#L458 + Config: configs/swin_transformer/swin-base_16xb64_in1k-384px.py + - Name: swin-large_in21k-pre-3rdparty_in1k + Metadata: + FLOPs: 34040000000 + Parameters: 196530000 + In Collection: Swin-Transformer + Results: + - Dataset: ImageNet-1k + Metrics: + Top 1 Accuracy: 86.24 + Top 5 Accuracy: 97.88 + Task: Image Classification + Weights: https://download.openmmlab.com/mmclassification/v0/swin-transformer/convert/swin_large_patch4_window7_224_22kto1k-5f0996db.pth + Converted From: + Weights: https://github.com/SwinTransformer/storage/releases/download/v1.0.0/swin_large_patch4_window7_224_22kto1k.pth + Code: https://github.com/microsoft/Swin-Transformer/blob/777f6c66604bb5579086c4447efe3620344d95a9/models/swin_transformer.py#L458 + Config: configs/swin_transformer/swin-large_16xb64_in1k.py + - Name: swin-large_in21k-pre-3rdparty_in1k-384 + Metadata: + FLOPs: 100040000000 + Parameters: 196740000 + In Collection: Swin-Transformer + Results: + - Dataset: ImageNet-1k + Metrics: + Top 1 Accuracy: 87.25 + Top 5 Accuracy: 98.25 + Task: Image Classification + Weights: https://download.openmmlab.com/mmclassification/v0/swin-transformer/convert/swin_large_patch4_window12_384_22kto1k-0a40944b.pth + Converted From: + Weights: https://github.com/SwinTransformer/storage/releases/download/v1.0.0/swin_large_patch4_window12_384_22kto1k.pth + Code: https://github.com/microsoft/Swin-Transformer/blob/777f6c66604bb5579086c4447efe3620344d95a9/models/swin_transformer.py#L458 + Config: configs/swin_transformer/swin-large_16xb64_in1k-384px.py + - Name: swin-large_8xb8_cub_384px + Metadata: + FLOPs: 100040000000 + Parameters: 195510000 + In Collection: Swin-Transformer + Results: + - Dataset: CUB-200-2011 + Metrics: + Top 1 Accuracy: 91.87 + Task: Image Classification + Pretrain: https://download.openmmlab.com/mmclassification/v0/swin-transformer/convert/swin-large_3rdparty_in21k-384px.pth + Weights: https://download.openmmlab.com/mmclassification/v0/swin-transformer/swin-large_8xb8_cub_384px_20220307-1bbaee6a.pth + Config: configs/swin_transformer/swin-large_8xb8_cub_384px.py diff --git a/openmmlab_test/mmclassification-0.24.1/configs/swin_transformer/swin-base_16xb64_in1k-384px.py b/openmmlab_test/mmclassification-0.24.1/configs/swin_transformer/swin-base_16xb64_in1k-384px.py new file mode 100644 index 00000000..711a0d6d --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/swin_transformer/swin-base_16xb64_in1k-384px.py @@ -0,0 +1,7 @@ +# Only for evaluation +_base_ = [ + '../_base_/models/swin_transformer/base_384.py', + '../_base_/datasets/imagenet_bs64_swin_384.py', + '../_base_/schedules/imagenet_bs1024_adamw_swin.py', + '../_base_/default_runtime.py' +] diff --git a/openmmlab_test/mmclassification-0.24.1/configs/swin_transformer/swin-base_16xb64_in1k.py b/openmmlab_test/mmclassification-0.24.1/configs/swin_transformer/swin-base_16xb64_in1k.py new file mode 100644 index 00000000..2a4548af --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/swin_transformer/swin-base_16xb64_in1k.py @@ -0,0 +1,6 @@ +_base_ = [ + '../_base_/models/swin_transformer/base_224.py', + '../_base_/datasets/imagenet_bs64_swin_224.py', + '../_base_/schedules/imagenet_bs1024_adamw_swin.py', + '../_base_/default_runtime.py' +] diff --git a/openmmlab_test/mmclassification-0.24.1/configs/swin_transformer/swin-large_16xb64_in1k-384px.py b/openmmlab_test/mmclassification-0.24.1/configs/swin_transformer/swin-large_16xb64_in1k-384px.py new file mode 100644 index 00000000..a7f0ad27 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/swin_transformer/swin-large_16xb64_in1k-384px.py @@ -0,0 +1,7 @@ +# Only for evaluation +_base_ = [ + '../_base_/models/swin_transformer/large_384.py', + '../_base_/datasets/imagenet_bs64_swin_384.py', + '../_base_/schedules/imagenet_bs1024_adamw_swin.py', + '../_base_/default_runtime.py' +] diff --git a/openmmlab_test/mmclassification-0.24.1/configs/swin_transformer/swin-large_16xb64_in1k.py b/openmmlab_test/mmclassification-0.24.1/configs/swin_transformer/swin-large_16xb64_in1k.py new file mode 100644 index 00000000..4e875c59 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/swin_transformer/swin-large_16xb64_in1k.py @@ -0,0 +1,7 @@ +# Only for evaluation +_base_ = [ + '../_base_/models/swin_transformer/large_224.py', + '../_base_/datasets/imagenet_bs64_swin_224.py', + '../_base_/schedules/imagenet_bs1024_adamw_swin.py', + '../_base_/default_runtime.py' +] diff --git a/openmmlab_test/mmclassification-0.24.1/configs/swin_transformer/swin-large_8xb8_cub_384px.py b/openmmlab_test/mmclassification-0.24.1/configs/swin_transformer/swin-large_8xb8_cub_384px.py new file mode 100644 index 00000000..d1137161 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/swin_transformer/swin-large_8xb8_cub_384px.py @@ -0,0 +1,37 @@ +_base_ = [ + '../_base_/models/swin_transformer/large_384.py', + '../_base_/datasets/cub_bs8_384.py', '../_base_/schedules/cub_bs64.py', + '../_base_/default_runtime.py' +] + +# model settings +checkpoint = 'https://download.openmmlab.com/mmclassification/v0/swin-transformer/convert/swin-large_3rdparty_in21k-384px.pth' # noqa +model = dict( + type='ImageClassifier', + backbone=dict( + init_cfg=dict( + type='Pretrained', checkpoint=checkpoint, prefix='backbone')), + head=dict(num_classes=200, )) + +paramwise_cfg = dict( + norm_decay_mult=0.0, + bias_decay_mult=0.0, + custom_keys={ + '.absolute_pos_embed': dict(decay_mult=0.0), + '.relative_position_bias_table': dict(decay_mult=0.0) + }) + +optimizer = dict( + _delete_=True, + type='AdamW', + lr=5e-6, + weight_decay=0.0005, + eps=1e-8, + betas=(0.9, 0.999), + paramwise_cfg=paramwise_cfg) +optimizer_config = dict(grad_clip=dict(max_norm=5.0), _delete_=True) + +log_config = dict(interval=20) # log every 20 intervals + +checkpoint_config = dict( + interval=1, max_keep_ckpts=3) # save last three checkpoints diff --git a/openmmlab_test/mmclassification-0.24.1/configs/swin_transformer/swin-small_16xb64_in1k.py b/openmmlab_test/mmclassification-0.24.1/configs/swin_transformer/swin-small_16xb64_in1k.py new file mode 100644 index 00000000..aa1fa21b --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/swin_transformer/swin-small_16xb64_in1k.py @@ -0,0 +1,6 @@ +_base_ = [ + '../_base_/models/swin_transformer/small_224.py', + '../_base_/datasets/imagenet_bs64_swin_224.py', + '../_base_/schedules/imagenet_bs1024_adamw_swin.py', + '../_base_/default_runtime.py' +] diff --git a/openmmlab_test/mmclassification-0.24.1/configs/swin_transformer/swin-tiny_16xb64_in1k.py b/openmmlab_test/mmclassification-0.24.1/configs/swin_transformer/swin-tiny_16xb64_in1k.py new file mode 100644 index 00000000..e1ed022a --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/swin_transformer/swin-tiny_16xb64_in1k.py @@ -0,0 +1,6 @@ +_base_ = [ + '../_base_/models/swin_transformer/tiny_224.py', + '../_base_/datasets/imagenet_bs64_swin_224.py', + '../_base_/schedules/imagenet_bs1024_adamw_swin.py', + '../_base_/default_runtime.py' +] diff --git a/openmmlab_test/mmclassification-0.24.1/configs/swin_transformer/swin_base_224_b16x64_300e_imagenet.py b/openmmlab_test/mmclassification-0.24.1/configs/swin_transformer/swin_base_224_b16x64_300e_imagenet.py new file mode 100644 index 00000000..912c379b --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/swin_transformer/swin_base_224_b16x64_300e_imagenet.py @@ -0,0 +1,6 @@ +_base_ = 'swin-base_16xb64_in1k.py' + +_deprecation_ = dict( + expected='swin-base_16xb64_in1k.py', + reference='https://github.com/open-mmlab/mmclassification/pull/508', +) diff --git a/openmmlab_test/mmclassification-0.24.1/configs/swin_transformer/swin_base_384_evalonly_imagenet.py b/openmmlab_test/mmclassification-0.24.1/configs/swin_transformer/swin_base_384_evalonly_imagenet.py new file mode 100644 index 00000000..9ed58889 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/swin_transformer/swin_base_384_evalonly_imagenet.py @@ -0,0 +1,6 @@ +_base_ = 'swin-base_16xb64_in1k-384px.py' + +_deprecation_ = dict( + expected='swin-base_16xb64_in1k-384px.py', + reference='https://github.com/open-mmlab/mmclassification/pull/508', +) diff --git a/openmmlab_test/mmclassification-0.24.1/configs/swin_transformer/swin_large_224_evalonly_imagenet.py b/openmmlab_test/mmclassification-0.24.1/configs/swin_transformer/swin_large_224_evalonly_imagenet.py new file mode 100644 index 00000000..5ebb54a5 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/swin_transformer/swin_large_224_evalonly_imagenet.py @@ -0,0 +1,6 @@ +_base_ = 'swin-large_16xb64_in1k.py' + +_deprecation_ = dict( + expected='swin-large_16xb64_in1k.py', + reference='https://github.com/open-mmlab/mmclassification/pull/508', +) diff --git a/openmmlab_test/mmclassification-0.24.1/configs/swin_transformer/swin_large_384_evalonly_imagenet.py b/openmmlab_test/mmclassification-0.24.1/configs/swin_transformer/swin_large_384_evalonly_imagenet.py new file mode 100644 index 00000000..9a59f5b6 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/swin_transformer/swin_large_384_evalonly_imagenet.py @@ -0,0 +1,6 @@ +_base_ = 'swin-large_16xb64_in1k-384px.py' + +_deprecation_ = dict( + expected='swin-large_16xb64_in1k-384px.py', + reference='https://github.com/open-mmlab/mmclassification/pull/508', +) diff --git a/openmmlab_test/mmclassification-0.24.1/configs/swin_transformer/swin_small_224_b16x64_300e_imagenet.py b/openmmlab_test/mmclassification-0.24.1/configs/swin_transformer/swin_small_224_b16x64_300e_imagenet.py new file mode 100644 index 00000000..a747aa4d --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/swin_transformer/swin_small_224_b16x64_300e_imagenet.py @@ -0,0 +1,6 @@ +_base_ = 'swin-small_16xb64_in1k.py' + +_deprecation_ = dict( + expected='swin-small_16xb64_in1k.py', + reference='https://github.com/open-mmlab/mmclassification/pull/508', +) diff --git a/openmmlab_test/mmclassification-0.24.1/configs/swin_transformer/swin_tiny_224_b16x64_300e_imagenet.py b/openmmlab_test/mmclassification-0.24.1/configs/swin_transformer/swin_tiny_224_b16x64_300e_imagenet.py new file mode 100644 index 00000000..2160eb91 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/swin_transformer/swin_tiny_224_b16x64_300e_imagenet.py @@ -0,0 +1,6 @@ +_base_ = 'swin-tiny_16xb64_in1k.py' + +_deprecation_ = dict( + expected='swin-tiny_16xb64_in1k.py', + reference='https://github.com/open-mmlab/mmclassification/pull/508', +) diff --git a/openmmlab_test/mmclassification-0.24.1/configs/swin_transformer_v2/README.md b/openmmlab_test/mmclassification-0.24.1/configs/swin_transformer_v2/README.md new file mode 100644 index 00000000..31d1aff5 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/swin_transformer_v2/README.md @@ -0,0 +1,58 @@ +# Swin Transformer V2 + +> [Swin Transformer V2: Scaling Up Capacity and Resolution](https://arxiv.org/abs/2111.09883.pdf) + + + +## Abstract + +Large-scale NLP models have been shown to significantly improve the performance on language tasks with no signs of saturation. They also demonstrate amazing few-shot capabilities like that of human beings. This paper aims to explore large-scale models in computer vision. We tackle three major issues in training and application of large vision models, including training instability, resolution gaps between pre-training and fine-tuning, and hunger on labelled data. Three main techniques are proposed: 1) a residual-post-norm method combined with cosine attention to improve training stability; 2) A log-spaced continuous position bias method to effectively transfer models pre-trained using low-resolution images to downstream tasks with high-resolution inputs; 3) A self-supervised pre-training method, SimMIM, to reduce the needs of vast labeled images. Through these techniques, this paper successfully trained a 3 billion-parameter Swin Transformer V2 model, which is the largest dense vision model to date, and makes it capable of training with images of up to 1,536×1,536 resolution. It set new performance records on 4 representative vision tasks, including ImageNet-V2 image classification, COCO object detection, ADE20K semantic segmentation, and Kinetics-400 video action classification. Also note our training is much more efficient than that in Google's billion-level visual models, which consumes 40 times less labelled data and 40 times less training time. + +
+ +
+ +## Results and models + +### ImageNet-21k + +The pre-trained models on ImageNet-21k are used to fine-tune, and therefore don't have evaluation results. + +| Model | resolution | Params(M) | Flops(G) | Download | +| :------: | :--------: | :-------: | :------: | :--------------------------------------------------------------------------------------------------------------------------------------: | +| Swin-B\* | 192x192 | 87.92 | 8.51 | [model](https://download.openmmlab.com/mmclassification/v0/swin-v2/pretrain/swinv2-base-w12_3rdparty_in21k-192px_20220803-f7dc9763.pth) | +| Swin-L\* | 192x192 | 196.74 | 19.04 | [model](https://download.openmmlab.com/mmclassification/v0/swin-v2/pretrain/swinv2-large-w12_3rdparty_in21k-192px_20220803-d9073fee.pth) | + +### ImageNet-1k + +| Model | Pretrain | resolution | window | Params(M) | Flops(G) | Top-1 (%) | Top-5 (%) | Config | Download | +| :------: | :----------: | :--------: | :----: | :-------: | :------: | :-------: | :-------: | :-------------------------------------------------------------: | :----------------------------------------------------------------: | +| Swin-T\* | From scratch | 256x256 | 8x8 | 28.35 | 4.35 | 81.76 | 95.87 | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/swin_transformer_v2/swinv2-tiny-w8_16xb64_in1k-256px.py) | [model](https://download.openmmlab.com/mmclassification/v0/swin-v2/swinv2-tiny-w8_3rdparty_in1k-256px_20220803-e318968f.pth) | +| Swin-T\* | From scratch | 256x256 | 16x16 | 28.35 | 4.4 | 82.81 | 96.23 | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/swin_transformer_v2/swinv2-tiny-w16_16xb64_in1k-256px.py) | [model](https://download.openmmlab.com/mmclassification/v0/swin-v2/swinv2-tiny-w16_3rdparty_in1k-256px_20220803-9651cdd7.pth) | +| Swin-S\* | From scratch | 256x256 | 8x8 | 49.73 | 8.45 | 83.74 | 96.6 | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/swin_transformer_v2/swinv2-small-w8_16xb64_in1k-256px.py) | [model](https://download.openmmlab.com/mmclassification/v0/swin-v2/swinv2-small-w8_3rdparty_in1k-256px_20220803-b01a4332.pth) | +| Swin-S\* | From scratch | 256x256 | 16x16 | 49.73 | 8.57 | 84.13 | 96.83 | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/swin_transformer_v2/swinv2-small-w16_16xb64_in1k-256px.py) | [model](https://download.openmmlab.com/mmclassification/v0/swin-v2/swinv2-small-w16_3rdparty_in1k-256px_20220803-b707d206.pth) | +| Swin-B\* | From scratch | 256x256 | 8x8 | 87.92 | 14.99 | 84.2 | 96.86 | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/swin_transformer_v2/swinv2-base-w8_16xb64_in1k-256px.py) | [model](https://download.openmmlab.com/mmclassification/v0/swin-v2/swinv2-base-w8_3rdparty_in1k-256px_20220803-8ff28f2b.pth) | +| Swin-B\* | From scratch | 256x256 | 16x16 | 87.92 | 15.14 | 84.6 | 97.05 | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/swin_transformer_v2/swinv2-base-w16_16xb64_in1k-256px.py) | [model](https://download.openmmlab.com/mmclassification/v0/swin-v2/swinv2-base-w16_3rdparty_in1k-256px_20220803-5a1886b7.pth) | +| Swin-B\* | ImageNet-21k | 256x256 | 16x16 | 87.92 | 15.14 | 86.17 | 97.88 | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/swin_transformer_v2/swinv2-base-w16_in21k-pre_16xb64_in1k-256px.py) | [model](https://download.openmmlab.com/mmclassification/v0/swin-v2/swinv2-base-w16_in21k-pre_3rdparty_in1k-256px_20220803-8d7aa8ad.pth) | +| Swin-B\* | ImageNet-21k | 384x384 | 24x24 | 87.92 | 34.07 | 87.14 | 98.23 | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/swin_transformer_v2/swinv2-base-w24_in21k-pre_16xb64_in1k-384px.py) | [model](https://download.openmmlab.com/mmclassification/v0/swin-v2/swinv2-base-w24_in21k-pre_3rdparty_in1k-384px_20220803-44eb70f8.pth) | +| Swin-L\* | ImageNet-21k | 256X256 | 16x16 | 196.75 | 33.86 | 86.93 | 98.06 | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/swin_transformer_v2/swinv2-large-w16_in21k-pre_16xb64_in1k-256px.py) | [model](https://download.openmmlab.com/mmclassification/v0/swin-v2/swinv2-large-w16_in21k-pre_3rdparty_in1k-256px_20220803-c40cbed7.pth) | +| Swin-L\* | ImageNet-21k | 384x384 | 24x24 | 196.75 | 76.2 | 87.59 | 98.27 | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/swin_transformer_v2/swinv2-large-w24_in21k-pre_16xb64_in1k-384px.py) | [model](https://download.openmmlab.com/mmclassification/v0/swin-v2/swinv2-large-w24_in21k-pre_3rdparty_in1k-384px_20220803-3b36c165.pth) | + +*Models with * are converted from the [official repo](https://github.com/microsoft/Swin-Transformer#main-results-on-imagenet-with-pretrained-models). The config files of these models are only for validation. We don't ensure these config files' training accuracy and welcome you to contribute your reproduction results.* + +*ImageNet-21k pretrained models with input resolution of 256x256 and 384x384 both fine-tuned from the same pre-training model using a smaller input resolution of 192x192.* + +## Citation + +``` +@article{https://doi.org/10.48550/arxiv.2111.09883, + doi = {10.48550/ARXIV.2111.09883}, + url = {https://arxiv.org/abs/2111.09883}, + author = {Liu, Ze and Hu, Han and Lin, Yutong and Yao, Zhuliang and Xie, Zhenda and Wei, Yixuan and Ning, Jia and Cao, Yue and Zhang, Zheng and Dong, Li and Wei, Furu and Guo, Baining}, + keywords = {Computer Vision and Pattern Recognition (cs.CV), FOS: Computer and information sciences, FOS: Computer and information sciences}, + title = {Swin Transformer V2: Scaling Up Capacity and Resolution}, + publisher = {arXiv}, + year = {2021}, + copyright = {Creative Commons Attribution 4.0 International} +} +``` diff --git a/openmmlab_test/mmclassification-0.24.1/configs/swin_transformer_v2/metafile.yml b/openmmlab_test/mmclassification-0.24.1/configs/swin_transformer_v2/metafile.yml new file mode 100644 index 00000000..cef83923 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/swin_transformer_v2/metafile.yml @@ -0,0 +1,204 @@ +Collections: + - Name: Swin-Transformer-V2 + Metadata: + Training Data: ImageNet-1k + Training Techniques: + - AdamW + - Weight Decay + Training Resources: 16x V100 GPUs + Epochs: 300 + Batch Size: 1024 + Architecture: + - Shift Window Multihead Self Attention + Paper: + URL: https://arxiv.org/abs/2111.09883.pdf + Title: "Swin Transformer V2: Scaling Up Capacity and Resolution" + README: configs/swin_transformer_v2/README.md + +Models: + - Name: swinv2-tiny-w8_3rdparty_in1k-256px + Metadata: + FLOPs: 4350000000 + Parameters: 28350000 + In Collection: Swin-Transformer-V2 + Results: + - Dataset: ImageNet-1k + Metrics: + Top 1 Accuracy: 81.76 + Top 5 Accuracy: 95.87 + Task: Image Classification + Weights: https://download.openmmlab.com/mmclassification/v0/swin-v2/swinv2-tiny-w8_3rdparty_in1k-256px_20220803-e318968f.pth + Config: configs/swin_transformer_v2/swinv2-tiny-w8_16xb64_in1k-256px.py + Converted From: + Weights: https://github.com/SwinTransformer/storage/releases/download/v2.0.0/swinv2_tiny_patch4_window8_256.pth + Code: https://github.com/microsoft/Swin-Transformer + - Name: swinv2-tiny-w16_3rdparty_in1k-256px + Metadata: + FLOPs: 4400000000 + Parameters: 28350000 + In Collection: Swin-Transformer-V2 + Results: + - Dataset: ImageNet-1k + Metrics: + Top 1 Accuracy: 82.81 + Top 5 Accuracy: 96.23 + Task: Image Classification + Weights: https://download.openmmlab.com/mmclassification/v0/swin-v2/swinv2-tiny-w16_3rdparty_in1k-256px_20220803-9651cdd7.pth + Config: configs/swin_transformer_v2/swinv2-tiny-w16_16xb64_in1k-256px.py + Converted From: + Weights: https://github.com/SwinTransformer/storage/releases/download/v2.0.0/swinv2_tiny_patch4_window16_256.pth + Code: https://github.com/microsoft/Swin-Transformer + - Name: swinv2-small-w8_3rdparty_in1k-256px + Metadata: + FLOPs: 8450000000 + Parameters: 49730000 + In Collection: Swin-Transformer-V2 + Results: + - Dataset: ImageNet-1k + Metrics: + Top 1 Accuracy: 83.74 + Top 5 Accuracy: 96.6 + Task: Image Classification + Weights: https://download.openmmlab.com/mmclassification/v0/swin-v2/swinv2-small-w8_3rdparty_in1k-256px_20220803-b01a4332.pth + Config: configs/swin_transformer_v2/swinv2-small-w8_16xb64_in1k-256px.py + Converted From: + Weights: https://github.com/SwinTransformer/storage/releases/download/v2.0.0/swinv2_small_patch4_window8_256.pth + Code: https://github.com/microsoft/Swin-Transformer + - Name: swinv2-small-w16_3rdparty_in1k-256px + Metadata: + FLOPs: 8570000000 + Parameters: 49730000 + In Collection: Swin-Transformer-V2 + Results: + - Dataset: ImageNet-1k + Metrics: + Top 1 Accuracy: 84.13 + Top 5 Accuracy: 96.83 + Task: Image Classification + Weights: https://download.openmmlab.com/mmclassification/v0/swin-v2/swinv2-small-w16_3rdparty_in1k-256px_20220803-b707d206.pth + Config: configs/swin_transformer_v2/swinv2-small-w16_16xb64_in1k-256px.py + Converted From: + Weights: https://github.com/SwinTransformer/storage/releases/download/v2.0.0/swinv2_small_patch4_window16_256.pth + Code: https://github.com/microsoft/Swin-Transformer + - Name: swinv2-base-w8_3rdparty_in1k-256px + Metadata: + FLOPs: 14990000000 + Parameters: 87920000 + In Collection: Swin-Transformer-V2 + Results: + - Dataset: ImageNet-1k + Metrics: + Top 1 Accuracy: 84.2 + Top 5 Accuracy: 96.86 + Task: Image Classification + Weights: https://download.openmmlab.com/mmclassification/v0/swin-v2/swinv2-base-w8_3rdparty_in1k-256px_20220803-8ff28f2b.pth + Config: configs/swin_transformer_v2/swinv2-base-w8_16xb64_in1k-256px.py + Converted From: + Weights: https://github.com/SwinTransformer/storage/releases/download/v2.0.0/swinv2_base_patch4_window8_256.pth + Code: https://github.com/microsoft/Swin-Transformer + - Name: swinv2-base-w16_3rdparty_in1k-256px + Metadata: + FLOPs: 15140000000 + Parameters: 87920000 + In Collection: Swin-Transformer-V2 + Results: + - Dataset: ImageNet-1k + Metrics: + Top 1 Accuracy: 84.6 + Top 5 Accuracy: 97.05 + Task: Image Classification + Weights: https://download.openmmlab.com/mmclassification/v0/swin-v2/swinv2-base-w16_3rdparty_in1k-256px_20220803-5a1886b7.pth + Config: configs/swin_transformer_v2/swinv2-base-w16_16xb64_in1k-256px.py + Converted From: + Weights: https://github.com/SwinTransformer/storage/releases/download/v2.0.0/swinv2_base_patch4_window16_256.pth + Code: https://github.com/microsoft/Swin-Transformer + - Name: swinv2-base-w16_in21k-pre_3rdparty_in1k-256px + Metadata: + Training Data: ImageNet-21k + FLOPs: 15140000000 + Parameters: 87920000 + In Collection: Swin-Transformer-V2 + Results: + - Dataset: ImageNet-1k + Metrics: + Top 1 Accuracy: 86.17 + Top 5 Accuracy: 97.88 + Task: Image Classification + Weights: https://download.openmmlab.com/mmclassification/v0/swin-v2/swinv2-base-w16_in21k-pre_3rdparty_in1k-256px_20220803-8d7aa8ad.pth + Config: configs/swin_transformer_v2/swinv2-base-w16_in21k-pre_16xb64_in1k-256px.py + Converted From: + Weights: https://github.com/SwinTransformer/storage/releases/download/v2.0.0/swinv2_base_patch4_window12to16_192to256_22kto1k_ft.pth + Code: https://github.com/microsoft/Swin-Transformer + - Name: swinv2-base-w24_in21k-pre_3rdparty_in1k-384px + Metadata: + Training Data: ImageNet-21k + FLOPs: 34070000000 + Parameters: 87920000 + In Collection: Swin-Transformer-V2 + Results: + - Dataset: ImageNet-1k + Metrics: + Top 1 Accuracy: 87.14 + Top 5 Accuracy: 98.23 + Task: Image Classification + Weights: https://download.openmmlab.com/mmclassification/v0/swin-v2/swinv2-base-w24_in21k-pre_3rdparty_in1k-384px_20220803-44eb70f8.pth + Config: configs/swin_transformer_v2/swinv2-base-w24_in21k-pre_16xb64_in1k-384px.py + Converted From: + Weights: https://github.com/SwinTransformer/storage/releases/download/v2.0.0/swinv2_base_patch4_window12to24_192to384_22kto1k_ft.pth + Code: https://github.com/microsoft/Swin-Transformer + - Name: swinv2-large-w16_in21k-pre_3rdparty_in1k-256px + Metadata: + Training Data: ImageNet-21k + FLOPs: 33860000000 + Parameters: 196750000 + In Collection: Swin-Transformer-V2 + Results: + - Dataset: ImageNet-1k + Metrics: + Top 1 Accuracy: 86.93 + Top 5 Accuracy: 98.06 + Task: Image Classification + Weights: https://download.openmmlab.com/mmclassification/v0/swin-v2/swinv2-large-w16_in21k-pre_3rdparty_in1k-256px_20220803-c40cbed7.pth + Config: configs/swin_transformer_v2/swinv2-large-w16_in21k-pre_16xb64_in1k-256px.py + Converted From: + Weights: https://github.com/SwinTransformer/storage/releases/download/v2.0.0/swinv2_large_patch4_window12to16_192to256_22kto1k_ft.pth + Code: https://github.com/microsoft/Swin-Transformer + - Name: swinv2-large-w24_in21k-pre_3rdparty_in1k-384px + Metadata: + Training Data: ImageNet-21k + FLOPs: 76200000000 + Parameters: 196750000 + In Collection: Swin-Transformer-V2 + Results: + - Dataset: ImageNet-1k + Metrics: + Top 1 Accuracy: 87.59 + Top 5 Accuracy: 98.27 + Task: Image Classification + Weights: https://download.openmmlab.com/mmclassification/v0/swin-v2/swinv2-large-w24_in21k-pre_3rdparty_in1k-384px_20220803-3b36c165.pth + Config: configs/swin_transformer_v2/swinv2-large-w24_in21k-pre_16xb64_in1k-384px.py + Converted From: + Weights: https://github.com/SwinTransformer/storage/releases/download/v2.0.0/swinv2_large_patch4_window12to24_192to384_22kto1k_ft.pth + Code: https://github.com/microsoft/Swin-Transformer + - Name: swinv2-base-w12_3rdparty_in21k-192px + Metadata: + Training Data: ImageNet-21k + FLOPs: 8510000000 + Parameters: 87920000 + In Collections: Swin-Transformer-V2 + Results: null + Weights: https://download.openmmlab.com/mmclassification/v0/swin-v2/pretrain/swinv2-base-w12_3rdparty_in21k-192px_20220803-f7dc9763.pth + Converted From: + Weights: https://github.com/SwinTransformer/storage/releases/download/v2.0.0/swinv2_base_patch4_window12_192_22k.pth + Code: https://github.com/microsoft/Swin-Transformer + - Name: swinv2-large-w12_3rdparty_in21k-192px + Metadata: + Training Data: ImageNet-21k + FLOPs: 19040000000 + Parameters: 196740000 + In Collections: Swin-Transformer-V2 + Results: null + Weights: https://download.openmmlab.com/mmclassification/v0/swin-v2/pretrain/swinv2-large-w12_3rdparty_in21k-192px_20220803-d9073fee.pth + Converted From: + Weights: https://github.com/SwinTransformer/storage/releases/download/v2.0.0/swinv2_large_patch4_window12_192_22k.pth + Code: https://github.com/microsoft/Swin-Transformer diff --git a/openmmlab_test/mmclassification-0.24.1/configs/swin_transformer_v2/swinv2-base-w16_16xb64_in1k-256px.py b/openmmlab_test/mmclassification-0.24.1/configs/swin_transformer_v2/swinv2-base-w16_16xb64_in1k-256px.py new file mode 100644 index 00000000..5f375ee1 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/swin_transformer_v2/swinv2-base-w16_16xb64_in1k-256px.py @@ -0,0 +1,8 @@ +_base_ = [ + '../_base_/models/swin_transformer_v2/base_256.py', + '../_base_/datasets/imagenet_bs64_swin_256.py', + '../_base_/schedules/imagenet_bs1024_adamw_swin.py', + '../_base_/default_runtime.py' +] + +model = dict(backbone=dict(window_size=[16, 16, 16, 8])) diff --git a/openmmlab_test/mmclassification-0.24.1/configs/swin_transformer_v2/swinv2-base-w16_in21k-pre_16xb64_in1k-256px.py b/openmmlab_test/mmclassification-0.24.1/configs/swin_transformer_v2/swinv2-base-w16_in21k-pre_16xb64_in1k-256px.py new file mode 100644 index 00000000..0725f9e7 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/swin_transformer_v2/swinv2-base-w16_in21k-pre_16xb64_in1k-256px.py @@ -0,0 +1,13 @@ +_base_ = [ + '../_base_/models/swin_transformer_v2/base_256.py', + '../_base_/datasets/imagenet_bs64_swin_256.py', + '../_base_/schedules/imagenet_bs1024_adamw_swin.py', + '../_base_/default_runtime.py' +] + +model = dict( + type='ImageClassifier', + backbone=dict( + window_size=[16, 16, 16, 8], + drop_path_rate=0.2, + pretrained_window_sizes=[12, 12, 12, 6])) diff --git a/openmmlab_test/mmclassification-0.24.1/configs/swin_transformer_v2/swinv2-base-w24_in21k-pre_16xb64_in1k-384px.py b/openmmlab_test/mmclassification-0.24.1/configs/swin_transformer_v2/swinv2-base-w24_in21k-pre_16xb64_in1k-384px.py new file mode 100644 index 00000000..3dd4e5fd --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/swin_transformer_v2/swinv2-base-w24_in21k-pre_16xb64_in1k-384px.py @@ -0,0 +1,14 @@ +_base_ = [ + '../_base_/models/swin_transformer_v2/base_384.py', + '../_base_/datasets/imagenet_bs64_swin_384.py', + '../_base_/schedules/imagenet_bs1024_adamw_swin.py', + '../_base_/default_runtime.py' +] + +model = dict( + type='ImageClassifier', + backbone=dict( + img_size=384, + window_size=[24, 24, 24, 12], + drop_path_rate=0.2, + pretrained_window_sizes=[12, 12, 12, 6])) diff --git a/openmmlab_test/mmclassification-0.24.1/configs/swin_transformer_v2/swinv2-base-w8_16xb64_in1k-256px.py b/openmmlab_test/mmclassification-0.24.1/configs/swin_transformer_v2/swinv2-base-w8_16xb64_in1k-256px.py new file mode 100644 index 00000000..23fc4070 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/swin_transformer_v2/swinv2-base-w8_16xb64_in1k-256px.py @@ -0,0 +1,6 @@ +_base_ = [ + '../_base_/models/swin_transformer_v2/base_256.py', + '../_base_/datasets/imagenet_bs64_swin_256.py', + '../_base_/schedules/imagenet_bs1024_adamw_swin.py', + '../_base_/default_runtime.py' +] diff --git a/openmmlab_test/mmclassification-0.24.1/configs/swin_transformer_v2/swinv2-large-w16_in21k-pre_16xb64_in1k-256px.py b/openmmlab_test/mmclassification-0.24.1/configs/swin_transformer_v2/swinv2-large-w16_in21k-pre_16xb64_in1k-256px.py new file mode 100644 index 00000000..62a2a29b --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/swin_transformer_v2/swinv2-large-w16_in21k-pre_16xb64_in1k-256px.py @@ -0,0 +1,13 @@ +# Only for evaluation +_base_ = [ + '../_base_/models/swin_transformer_v2/large_256.py', + '../_base_/datasets/imagenet_bs64_swin_256.py', + '../_base_/schedules/imagenet_bs1024_adamw_swin.py', + '../_base_/default_runtime.py' +] + +model = dict( + type='ImageClassifier', + backbone=dict( + window_size=[16, 16, 16, 8], pretrained_window_sizes=[12, 12, 12, 6]), +) diff --git a/openmmlab_test/mmclassification-0.24.1/configs/swin_transformer_v2/swinv2-large-w24_in21k-pre_16xb64_in1k-384px.py b/openmmlab_test/mmclassification-0.24.1/configs/swin_transformer_v2/swinv2-large-w24_in21k-pre_16xb64_in1k-384px.py new file mode 100644 index 00000000..d97d9b2b --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/swin_transformer_v2/swinv2-large-w24_in21k-pre_16xb64_in1k-384px.py @@ -0,0 +1,15 @@ +# Only for evaluation +_base_ = [ + '../_base_/models/swin_transformer_v2/large_384.py', + '../_base_/datasets/imagenet_bs64_swin_384.py', + '../_base_/schedules/imagenet_bs1024_adamw_swin.py', + '../_base_/default_runtime.py' +] + +model = dict( + type='ImageClassifier', + backbone=dict( + img_size=384, + window_size=[24, 24, 24, 12], + pretrained_window_sizes=[12, 12, 12, 6]), +) diff --git a/openmmlab_test/mmclassification-0.24.1/configs/swin_transformer_v2/swinv2-small-w16_16xb64_in1k-256px.py b/openmmlab_test/mmclassification-0.24.1/configs/swin_transformer_v2/swinv2-small-w16_16xb64_in1k-256px.py new file mode 100644 index 00000000..f87265dd --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/swin_transformer_v2/swinv2-small-w16_16xb64_in1k-256px.py @@ -0,0 +1,8 @@ +_base_ = [ + '../_base_/models/swin_transformer_v2/small_256.py', + '../_base_/datasets/imagenet_bs64_swin_256.py', + '../_base_/schedules/imagenet_bs1024_adamw_swin.py', + '../_base_/default_runtime.py' +] + +model = dict(backbone=dict(window_size=[16, 16, 16, 8])) diff --git a/openmmlab_test/mmclassification-0.24.1/configs/swin_transformer_v2/swinv2-small-w8_16xb64_in1k-256px.py b/openmmlab_test/mmclassification-0.24.1/configs/swin_transformer_v2/swinv2-small-w8_16xb64_in1k-256px.py new file mode 100644 index 00000000..f1001f1b --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/swin_transformer_v2/swinv2-small-w8_16xb64_in1k-256px.py @@ -0,0 +1,6 @@ +_base_ = [ + '../_base_/models/swin_transformer_v2/small_256.py', + '../_base_/datasets/imagenet_bs64_swin_256.py', + '../_base_/schedules/imagenet_bs1024_adamw_swin.py', + '../_base_/default_runtime.py' +] diff --git a/openmmlab_test/mmclassification-0.24.1/configs/swin_transformer_v2/swinv2-tiny-w16_16xb64_in1k-256px.py b/openmmlab_test/mmclassification-0.24.1/configs/swin_transformer_v2/swinv2-tiny-w16_16xb64_in1k-256px.py new file mode 100644 index 00000000..7e1f290f --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/swin_transformer_v2/swinv2-tiny-w16_16xb64_in1k-256px.py @@ -0,0 +1,8 @@ +_base_ = [ + '../_base_/models/swin_transformer_v2/tiny_256.py', + '../_base_/datasets/imagenet_bs64_swin_256.py', + '../_base_/schedules/imagenet_bs1024_adamw_swin.py', + '../_base_/default_runtime.py' +] + +model = dict(backbone=dict(window_size=[16, 16, 16, 8])) diff --git a/openmmlab_test/mmclassification-0.24.1/configs/swin_transformer_v2/swinv2-tiny-w8_16xb64_in1k-256px.py b/openmmlab_test/mmclassification-0.24.1/configs/swin_transformer_v2/swinv2-tiny-w8_16xb64_in1k-256px.py new file mode 100644 index 00000000..2cdc9a25 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/swin_transformer_v2/swinv2-tiny-w8_16xb64_in1k-256px.py @@ -0,0 +1,6 @@ +_base_ = [ + '../_base_/models/swin_transformer_v2/tiny_256.py', + '../_base_/datasets/imagenet_bs64_swin_256.py', + '../_base_/schedules/imagenet_bs1024_adamw_swin.py', + '../_base_/default_runtime.py' +] diff --git a/openmmlab_test/mmclassification-0.24.1/configs/t2t_vit/README.md b/openmmlab_test/mmclassification-0.24.1/configs/t2t_vit/README.md new file mode 100644 index 00000000..1e3a0827 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/t2t_vit/README.md @@ -0,0 +1,36 @@ +# Tokens-to-Token ViT + +> [Tokens-to-Token ViT: Training Vision Transformers from Scratch on ImageNet](https://arxiv.org/abs/2101.11986) + + + +## Abstract + +Transformers, which are popular for language modeling, have been explored for solving vision tasks recently, \\eg, the Vision Transformer (ViT) for image classification. The ViT model splits each image into a sequence of tokens with fixed length and then applies multiple Transformer layers to model their global relation for classification. However, ViT achieves inferior performance to CNNs when trained from scratch on a midsize dataset like ImageNet. We find it is because: 1) the simple tokenization of input images fails to model the important local structure such as edges and lines among neighboring pixels, leading to low training sample efficiency; 2) the redundant attention backbone design of ViT leads to limited feature richness for fixed computation budgets and limited training samples. To overcome such limitations, we propose a new Tokens-To-Token Vision Transformer (T2T-ViT), which incorporates 1) a layer-wise Tokens-to-Token (T2T) transformation to progressively structurize the image to tokens by recursively aggregating neighboring Tokens into one Token (Tokens-to-Token), such that local structure represented by surrounding tokens can be modeled and tokens length can be reduced; 2) an efficient backbone with a deep-narrow structure for vision transformer motivated by CNN architecture design after empirical study. Notably, T2T-ViT reduces the parameter count and MACs of vanilla ViT by half, while achieving more than 3.0% improvement when trained from scratch on ImageNet. It also outperforms ResNets and achieves comparable performance with MobileNets by directly training on ImageNet. For example, T2T-ViT with comparable size to ResNet50 (21.5M parameters) can achieve 83.3% top1 accuracy in image resolution 384×384 on ImageNet. + +
+ +
+ +## Results and models + +### ImageNet-1k + +| Model | Params(M) | Flops(G) | Top-1 (%) | Top-5 (%) | Config | Download | +| :----------: | :-------: | :------: | :-------: | :-------: | :-------------------------------------------------------------------------: | :----------------------------------------------------------------------------: | +| T2T-ViT_t-14 | 21.47 | 4.34 | 81.83 | 95.84 | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/t2t_vit/t2t-vit-t-14_8xb64_in1k.py) | [model](https://download.openmmlab.com/mmclassification/v0/t2t-vit/t2t-vit-t-14_8xb64_in1k_20211220-f7378dd5.pth) \| [log](https://download.openmmlab.com/mmclassification/v0/t2t-vit/t2t-vit-t-14_8xb64_in1k_20211220-f7378dd5.log.json) | +| T2T-ViT_t-19 | 39.08 | 7.80 | 82.63 | 96.18 | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/t2t_vit/t2t-vit-t-19_8xb64_in1k.py) | [model](https://download.openmmlab.com/mmclassification/v0/t2t-vit/t2t-vit-t-19_8xb64_in1k_20211214-7f5e3aaf.pth) \| [log](https://download.openmmlab.com/mmclassification/v0/t2t-vit/t2t-vit-t-19_8xb64_in1k_20211214-7f5e3aaf.log.json) | +| T2T-ViT_t-24 | 64.00 | 12.69 | 82.71 | 96.09 | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/t2t_vit/t2t-vit-t-24_8xb64_in1k.py) | [model](https://download.openmmlab.com/mmclassification/v0/t2t-vit/t2t-vit-t-24_8xb64_in1k_20211214-b2a68ae3.pth) \| [log](https://download.openmmlab.com/mmclassification/v0/t2t-vit/t2t-vit-t-24_8xb64_in1k_20211214-b2a68ae3.log.json) | + +*In consistent with the [official repo](https://github.com/yitu-opensource/T2T-ViT), we adopt the best checkpoints during training.* + +## Citation + +``` +@article{yuan2021tokens, + title={Tokens-to-token vit: Training vision transformers from scratch on imagenet}, + author={Yuan, Li and Chen, Yunpeng and Wang, Tao and Yu, Weihao and Shi, Yujun and Tay, Francis EH and Feng, Jiashi and Yan, Shuicheng}, + journal={arXiv preprint arXiv:2101.11986}, + year={2021} +} +``` diff --git a/openmmlab_test/mmclassification-0.24.1/configs/t2t_vit/metafile.yml b/openmmlab_test/mmclassification-0.24.1/configs/t2t_vit/metafile.yml new file mode 100644 index 00000000..f2125426 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/t2t_vit/metafile.yml @@ -0,0 +1,58 @@ +Collections: + - Name: Tokens-to-Token ViT + Metadata: + Training Data: ImageNet-1k + Architecture: + - Layer Normalization + - Scaled Dot-Product Attention + - Attention Dropout + - Dropout + - Tokens to Token + Paper: + URL: https://arxiv.org/abs/2101.11986 + Title: "Tokens-to-Token ViT: Training Vision Transformers from Scratch on ImageNet" + README: configs/t2t_vit/README.md + Code: + URL: https://github.com/open-mmlab/mmclassification/blob/v0.17.0/mmcls/models/backbones/t2t_vit.py + Version: v0.17.0 + +Models: + - Name: t2t-vit-t-14_8xb64_in1k + Metadata: + FLOPs: 4340000000 + Parameters: 21470000 + In Collection: Tokens-to-Token ViT + Results: + - Dataset: ImageNet-1k + Metrics: + Top 1 Accuracy: 81.83 + Top 5 Accuracy: 95.84 + Task: Image Classification + Weights: https://download.openmmlab.com/mmclassification/v0/t2t-vit/t2t-vit-t-14_8xb64_in1k_20211220-f7378dd5.pth + Config: configs/t2t_vit/t2t-vit-t-14_8xb64_in1k.py + - Name: t2t-vit-t-19_8xb64_in1k + Metadata: + FLOPs: 7800000000 + Parameters: 39080000 + In Collection: Tokens-to-Token ViT + Results: + - Dataset: ImageNet-1k + Metrics: + Top 1 Accuracy: 82.63 + Top 5 Accuracy: 96.18 + Task: Image Classification + Weights: https://download.openmmlab.com/mmclassification/v0/t2t-vit/t2t-vit-t-19_8xb64_in1k_20211214-7f5e3aaf.pth + Config: configs/t2t_vit/t2t-vit-t-19_8xb64_in1k.py + - Name: t2t-vit-t-24_8xb64_in1k + Metadata: + FLOPs: 12690000000 + Parameters: 64000000 + In Collection: Tokens-to-Token ViT + Results: + - Dataset: ImageNet-1k + Metrics: + Top 1 Accuracy: 82.71 + Top 5 Accuracy: 96.09 + Task: Image Classification + Weights: https://download.openmmlab.com/mmclassification/v0/t2t-vit/t2t-vit-t-24_8xb64_in1k_20211214-b2a68ae3.pth + Config: configs/t2t_vit/t2t-vit-t-24_8xb64_in1k.py diff --git a/openmmlab_test/mmclassification-0.24.1/configs/t2t_vit/t2t-vit-t-14_8xb64_in1k.py b/openmmlab_test/mmclassification-0.24.1/configs/t2t_vit/t2t-vit-t-14_8xb64_in1k.py new file mode 100644 index 00000000..a391df48 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/t2t_vit/t2t-vit-t-14_8xb64_in1k.py @@ -0,0 +1,35 @@ +_base_ = [ + '../_base_/models/t2t-vit-t-14.py', + '../_base_/datasets/imagenet_bs64_t2t_224.py', + '../_base_/default_runtime.py', +] + +# optimizer +paramwise_cfg = dict( + norm_decay_mult=0.0, + bias_decay_mult=0.0, + custom_keys={'cls_token': dict(decay_mult=0.0)}, +) +optimizer = dict( + type='AdamW', + lr=5e-4, + weight_decay=0.05, + paramwise_cfg=paramwise_cfg, +) +optimizer_config = dict(grad_clip=None) + +# learning policy +# FIXME: lr in the first 300 epochs conforms to the CosineAnnealing and +# the lr in the last 10 epoch equals to min_lr +lr_config = dict( + policy='CosineAnnealingCooldown', + min_lr=1e-5, + cool_down_time=10, + cool_down_ratio=0.1, + by_epoch=True, + warmup_by_epoch=True, + warmup='linear', + warmup_iters=10, + warmup_ratio=1e-6) +custom_hooks = [dict(type='EMAHook', momentum=4e-5, priority='ABOVE_NORMAL')] +runner = dict(type='EpochBasedRunner', max_epochs=310) diff --git a/openmmlab_test/mmclassification-0.24.1/configs/t2t_vit/t2t-vit-t-19_8xb64_in1k.py b/openmmlab_test/mmclassification-0.24.1/configs/t2t_vit/t2t-vit-t-19_8xb64_in1k.py new file mode 100644 index 00000000..e1157f89 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/t2t_vit/t2t-vit-t-19_8xb64_in1k.py @@ -0,0 +1,35 @@ +_base_ = [ + '../_base_/models/t2t-vit-t-19.py', + '../_base_/datasets/imagenet_bs64_t2t_224.py', + '../_base_/default_runtime.py', +] + +# optimizer +paramwise_cfg = dict( + norm_decay_mult=0.0, + bias_decay_mult=0.0, + custom_keys={'cls_token': dict(decay_mult=0.0)}, +) +optimizer = dict( + type='AdamW', + lr=5e-4, + weight_decay=0.065, + paramwise_cfg=paramwise_cfg, +) +optimizer_config = dict(grad_clip=None) + +# learning policy +# FIXME: lr in the first 300 epochs conforms to the CosineAnnealing and +# the lr in the last 10 epoch equals to min_lr +lr_config = dict( + policy='CosineAnnealingCooldown', + min_lr=1e-5, + cool_down_time=10, + cool_down_ratio=0.1, + by_epoch=True, + warmup_by_epoch=True, + warmup='linear', + warmup_iters=10, + warmup_ratio=1e-6) +custom_hooks = [dict(type='EMAHook', momentum=4e-5, priority='ABOVE_NORMAL')] +runner = dict(type='EpochBasedRunner', max_epochs=310) diff --git a/openmmlab_test/mmclassification-0.24.1/configs/t2t_vit/t2t-vit-t-24_8xb64_in1k.py b/openmmlab_test/mmclassification-0.24.1/configs/t2t_vit/t2t-vit-t-24_8xb64_in1k.py new file mode 100644 index 00000000..815f2f15 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/t2t_vit/t2t-vit-t-24_8xb64_in1k.py @@ -0,0 +1,35 @@ +_base_ = [ + '../_base_/models/t2t-vit-t-24.py', + '../_base_/datasets/imagenet_bs64_t2t_224.py', + '../_base_/default_runtime.py', +] + +# optimizer +paramwise_cfg = dict( + norm_decay_mult=0.0, + bias_decay_mult=0.0, + custom_keys={'cls_token': dict(decay_mult=0.0)}, +) +optimizer = dict( + type='AdamW', + lr=5e-4, + weight_decay=0.065, + paramwise_cfg=paramwise_cfg, +) +optimizer_config = dict(grad_clip=None) + +# learning policy +# FIXME: lr in the first 300 epochs conforms to the CosineAnnealing and +# the lr in the last 10 epoch equals to min_lr +lr_config = dict( + policy='CosineAnnealingCooldown', + min_lr=1e-5, + cool_down_time=10, + cool_down_ratio=0.1, + by_epoch=True, + warmup_by_epoch=True, + warmup='linear', + warmup_iters=10, + warmup_ratio=1e-6) +custom_hooks = [dict(type='EMAHook', momentum=4e-5, priority='ABOVE_NORMAL')] +runner = dict(type='EpochBasedRunner', max_epochs=310) diff --git a/openmmlab_test/mmclassification-0.24.1/configs/tnt/README.md b/openmmlab_test/mmclassification-0.24.1/configs/tnt/README.md new file mode 100644 index 00000000..948eef74 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/tnt/README.md @@ -0,0 +1,36 @@ +# TNT + +> [Transformer in Transformer](https://arxiv.org/abs/2103.00112) + + + +## Abstract + +Transformer is a new kind of neural architecture which encodes the input data as powerful features via the attention mechanism. Basically, the visual transformers first divide the input images into several local patches and then calculate both representations and their relationship. Since natural images are of high complexity with abundant detail and color information, the granularity of the patch dividing is not fine enough for excavating features of objects in different scales and locations. In this paper, we point out that the attention inside these local patches are also essential for building visual transformers with high performance and we explore a new architecture, namely, Transformer iN Transformer (TNT). Specifically, we regard the local patches (e.g., 16×16) as "visual sentences" and present to further divide them into smaller patches (e.g., 4×4) as "visual words". The attention of each word will be calculated with other words in the given visual sentence with negligible computational costs. Features of both words and sentences will be aggregated to enhance the representation ability. Experiments on several benchmarks demonstrate the effectiveness of the proposed TNT architecture, e.g., we achieve an 81.5% top-1 accuracy on the ImageNet, which is about 1.7% higher than that of the state-of-the-art visual transformer with similar computational cost. + +
+ +
+ +## Results and models + +### ImageNet-1k + +| Model | Params(M) | Flops(G) | Top-1 (%) | Top-5 (%) | Config | Download | +| :---------: | :-------: | :------: | :-------: | :-------: | :--------------------------------------------------------------------------: | :----------------------------------------------------------------------------: | +| TNT-small\* | 23.76 | 3.36 | 81.52 | 95.73 | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/tnt/tnt-s-p16_16xb64_in1k.py) | [model](https://download.openmmlab.com/mmclassification/v0/tnt/tnt-small-p16_3rdparty_in1k_20210903-c56ee7df.pth) | + +*Models with * are converted from [timm](https://github.com/rwightman/pytorch-image-models/). The config files of these models are only for validation. We don't ensure these config files' training accuracy and welcome you to contribute your reproduction results.* + +## Citation + +``` +@misc{han2021transformer, + title={Transformer in Transformer}, + author={Kai Han and An Xiao and Enhua Wu and Jianyuan Guo and Chunjing Xu and Yunhe Wang}, + year={2021}, + eprint={2103.00112}, + archivePrefix={arXiv}, + primaryClass={cs.CV} +} +``` diff --git a/openmmlab_test/mmclassification-0.24.1/configs/tnt/metafile.yml b/openmmlab_test/mmclassification-0.24.1/configs/tnt/metafile.yml new file mode 100644 index 00000000..67f3c782 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/tnt/metafile.yml @@ -0,0 +1,29 @@ +Collections: + - Name: Transformer in Transformer + Metadata: + Training Data: ImageNet-1k + Paper: + URL: https://arxiv.org/abs/2103.00112 + Title: "Transformer in Transformer" + README: configs/tnt/README.md + Code: + URL: https://github.com/open-mmlab/mmclassification/blob/v0.15.0/mmcls/models/backbones/tnt.py#L203 + Version: v0.15.0 + +Models: + - Name: tnt-small-p16_3rdparty_in1k + Metadata: + FLOPs: 3360000000 + Parameters: 23760000 + In Collection: Transformer in Transformer + Results: + - Dataset: ImageNet-1k + Metrics: + Top 1 Accuracy: 81.52 + Top 5 Accuracy: 95.73 + Task: Image Classification + Weights: https://download.openmmlab.com/mmclassification/v0/tnt/tnt-small-p16_3rdparty_in1k_20210903-c56ee7df.pth + Config: configs/tnt/tnt-s-p16_16xb64_in1k.py + Converted From: + Weights: https://github.com/contrastive/pytorch-image-models/releases/download/TNT/tnt_s_patch16_224.pth.tar + Code: https://github.com/contrastive/pytorch-image-models/blob/809271b0f3e5d9be4e11c0c5cec1dbba8b5e2c60/timm/models/tnt.py#L144 diff --git a/openmmlab_test/mmclassification-0.24.1/configs/tnt/tnt-s-p16_16xb64_in1k.py b/openmmlab_test/mmclassification-0.24.1/configs/tnt/tnt-s-p16_16xb64_in1k.py new file mode 100644 index 00000000..36693689 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/tnt/tnt-s-p16_16xb64_in1k.py @@ -0,0 +1,39 @@ +# accuracy_top-1 : 81.52 accuracy_top-5 : 95.73 +_base_ = [ + '../_base_/models/tnt_s_patch16_224.py', + '../_base_/datasets/imagenet_bs32_pil_resize.py', + '../_base_/default_runtime.py' +] + +img_norm_cfg = dict( + mean=[127.5, 127.5, 127.5], std=[127.5, 127.5, 127.5], to_rgb=True) + +test_pipeline = [ + dict(type='LoadImageFromFile'), + dict( + type='Resize', + size=(248, -1), + interpolation='bicubic', + backend='pillow'), + dict(type='CenterCrop', crop_size=224), + dict(type='Normalize', **img_norm_cfg), + dict(type='ImageToTensor', keys=['img']), + dict(type='Collect', keys=['img']) +] + +dataset_type = 'ImageNet' +data = dict( + samples_per_gpu=64, workers_per_gpu=4, test=dict(pipeline=test_pipeline)) + +# optimizer +optimizer = dict(type='AdamW', lr=1e-3, weight_decay=0.05) +optimizer_config = dict(grad_clip=None) + +lr_config = dict( + policy='CosineAnnealing', + min_lr=0, + warmup_by_epoch=True, + warmup='linear', + warmup_iters=5, + warmup_ratio=1e-3) +runner = dict(type='EpochBasedRunner', max_epochs=300) diff --git a/openmmlab_test/mmclassification-0.24.1/configs/tnt/tnt_s_patch16_224_evalonly_imagenet.py b/openmmlab_test/mmclassification-0.24.1/configs/tnt/tnt_s_patch16_224_evalonly_imagenet.py new file mode 100644 index 00000000..3c054d4a --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/tnt/tnt_s_patch16_224_evalonly_imagenet.py @@ -0,0 +1,6 @@ +_base_ = 'tnt-s-p16_16xb64_in1k.py' + +_deprecation_ = dict( + expected='tnt-s-p16_16xb64_in1k.py', + reference='https://github.com/open-mmlab/mmclassification/pull/508', +) diff --git a/openmmlab_test/mmclassification-0.24.1/configs/twins/README.md b/openmmlab_test/mmclassification-0.24.1/configs/twins/README.md new file mode 100644 index 00000000..87e72941 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/twins/README.md @@ -0,0 +1,39 @@ +# Twins + +> [Twins: Revisiting the Design of Spatial Attention in Vision Transformers](http://arxiv-export-lb.library.cornell.edu/abs/2104.13840) + + + +## Abstract + +Very recently, a variety of vision transformer architectures for dense prediction tasks have been proposed and they show that the design of spatial attention is critical to their success in these tasks. In this work, we revisit the design of the spatial attention and demonstrate that a carefully-devised yet simple spatial attention mechanism performs favourably against the state-of-the-art schemes. As a result, we propose two vision transformer architectures, namely, Twins-PCPVT and Twins-SVT. Our proposed architectures are highly-efficient and easy to implement, only involving matrix multiplications that are highly optimized in modern deep learning frameworks. More importantly, the proposed architectures achieve excellent performance on a wide range of visual tasks, including image level classification as well as dense detection and segmentation. The simplicity and strong performance suggest that our proposed architectures may serve as stronger backbones for many vision tasks. Our code is released at [this https URL](https://github.com/Meituan-AutoML/Twins). + +
+ +
+ +## Results and models + +### ImageNet-1k + +| Model | Params(M) | Flops(G) | Top-1 (%) | Top-5 (%) | Config | Download | +| :-----------: | :-------: | :------: | :-------: | :-------: | :-------------------------------------------------------------------------: | :---------------------------------------------------------------------------: | +| PCPVT-small\* | 24.11 | 3.67 | 81.14 | 95.69 | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/twins/twins-pcpvt-small_8xb128_in1k.py) | [model](https://download.openmmlab.com/mmclassification/v0/twins/twins-pcpvt-small_3rdparty_8xb128_in1k_20220126-ef23c132.pth) | +| PCPVT-base\* | 43.83 | 6.45 | 82.66 | 96.26 | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/twins/twins-pcpvt-base_8xb128_in1k.py) | [model](https://download.openmmlab.com/mmclassification/v0/twins/twins-pcpvt-base_3rdparty_8xb128_in1k_20220126-f8c4b0d5.pth) | +| PCPVT-large\* | 60.99 | 9.51 | 83.09 | 96.59 | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/twins/twins-pcpvt-large_16xb64_in1k.py) | [model](https://download.openmmlab.com/mmclassification/v0/twins/twins-pcpvt-large_3rdparty_16xb64_in1k_20220126-c1ef8d80.pth) | +| SVT-small\* | 24.06 | 2.82 | 81.77 | 95.57 | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/twins/twins-svt-small_8xb128_in1k.py) | [model](https://download.openmmlab.com/mmclassification/v0/twins/twins-svt-small_3rdparty_8xb128_in1k_20220126-8fe5205b.pth) | +| SVT-base\* | 56.07 | 8.35 | 83.13 | 96.29 | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/twins/twins-svt-base_8xb128_in1k.py) | [model](https://download.openmmlab.com/mmclassification/v0/twins/twins-svt-base_3rdparty_8xb128_in1k_20220126-e31cc8e9.pth) | +| SVT-large\* | 99.27 | 14.82 | 83.60 | 96.50 | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/twins/twins-svt-large_16xb64_in1k.py) | [model](https://download.openmmlab.com/mmclassification/v0/twins/twins-svt-large_3rdparty_16xb64_in1k_20220126-4817645f.pth) | + +*Models with * are converted from [the official repo](https://github.com/Meituan-AutoML/Twins). The config files of these models are only for validation. We don't ensure these config files' training accuracy and welcome you to contribute your reproduction results. The validation accuracy is a little different from the official paper because of the PyTorch version. This result is get in PyTorch=1.9 while the official result is get in PyTorch=1.7* + +## Citation + +``` +@article{chu2021twins, + title={Twins: Revisiting spatial attention design in vision transformers}, + author={Chu, Xiangxiang and Tian, Zhi and Wang, Yuqing and Zhang, Bo and Ren, Haibing and Wei, Xiaolin and Xia, Huaxia and Shen, Chunhua}, + journal={arXiv preprint arXiv:2104.13840}, + year={2021}altgvt +} +``` diff --git a/openmmlab_test/mmclassification-0.24.1/configs/twins/metafile.yml b/openmmlab_test/mmclassification-0.24.1/configs/twins/metafile.yml new file mode 100644 index 00000000..f8a7d819 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/twins/metafile.yml @@ -0,0 +1,114 @@ +Collections: + - Name: Twins + Metadata: + Training Data: ImageNet-1k + Architecture: + - Global Subsampled Attention + - Locally Grouped SelfAttention + - Conditional Position Encoding + - Pyramid Vision Transformer + Paper: + URL: http://arxiv-export-lb.library.cornell.edu/abs/2104.13840 + Title: "Twins: Revisiting the Design of Spatial Attention in Vision Transformers" + README: configs/twins/README.md + Code: + URL: https://github.com/open-mmlab/mmclassification/blob/v0.20.1/mmcls/models/backbones/twins.py + Version: v0.20.1 + +Models: + - Name: twins-pcpvt-small_3rdparty_8xb128_in1k + Metadata: + FLOPs: 3670000000 # 3.67G + Parameters: 24110000 # 24.11M + In Collection: Twins + Results: + - Dataset: ImageNet-1k + Metrics: + Top 1 Accuracy: 81.14 + Top 5 Accuracy: 95.69 + Task: Image Classification + Weights: https://download.openmmlab.com/mmclassification/v0/twins/twins-pcpvt-small_3rdparty_8xb128_in1k_20220126-ef23c132.pth + Config: configs/twins/twins-pcpvt-small_8xb128_in1k.py + Converted From: + Weights: https://github.com/rwightman/pytorch-image-models/releases/download/v0.1-vt3p-weights/twins_pcpvt_small-e70e7e7a.pth + Code: https://github.com/rwightman/pytorch-image-models/blob/master/timm/models/twins.py + - Name: twins-pcpvt-base_3rdparty_8xb128_in1k + Metadata: + FLOPs: 6450000000 # 6.45G + Parameters: 43830000 # 43.83M + In Collection: Twins + Results: + - Dataset: ImageNet-1k + Metrics: + Top 1 Accuracy: 82.66 + Top 5 Accuracy: 96.26 + Task: Image Classification + Weights: https://download.openmmlab.com/mmclassification/v0/twins/twins-pcpvt-base_3rdparty_8xb128_in1k_20220126-f8c4b0d5.pth + Config: configs/twins/twins-pcpvt-base_8xb128_in1k.py + Converted From: + Weights: https://github.com/rwightman/pytorch-image-models/releases/download/v0.1-vt3p-weights/twins_pcpvt_small-e70e7e7a.pth + Code: https://github.com/rwightman/pytorch-image-models/blob/master/timm/models/twins.py + - Name: twins-pcpvt-large_3rdparty_16xb64_in1k + Metadata: + FLOPs: 9510000000 # 9.51G + Parameters: 60990000 # 60.99M + In Collection: Twins + Results: + - Dataset: ImageNet-1k + Metrics: + Top 1 Accuracy: 83.09 + Top 5 Accuracy: 96.59 + Task: Image Classification + Weights: https://download.openmmlab.com/mmclassification/v0/twins/twins-pcpvt-large_3rdparty_16xb64_in1k_20220126-c1ef8d80.pth + Config: configs/twins/twins-pcpvt-large_16xb64_in1k.py + Converted From: + Weights: https://github.com/rwightman/pytorch-image-models/releases/download/v0.1-vt3p-weights/twins_pcpvt_small-e70e7e7a.pth + Code: https://github.com/rwightman/pytorch-image-models/blob/master/timm/models/twins.py + - Name: twins-svt-small_3rdparty_8xb128_in1k + Metadata: + FLOPs: 2820000000 # 2.82G + Parameters: 24060000 # 24.06M + In Collection: Twins + Results: + - Dataset: ImageNet-1k + Metrics: + Top 1 Accuracy: 81.77 + Top 5 Accuracy: 95.57 + Task: Image Classification + Weights: https://download.openmmlab.com/mmclassification/v0/twins/twins-svt-small_3rdparty_8xb128_in1k_20220126-8fe5205b.pth + Config: configs/twins/twins-svt-small_8xb128_in1k.py + Converted From: + Weights: https://github.com/rwightman/pytorch-image-models/releases/download/v0.1-vt3p-weights/twins_pcpvt_small-e70e7e7a.pth + Code: https://github.com/rwightman/pytorch-image-models/blob/master/timm/models/twins.py + - Name: twins-svt-base_8xb128_3rdparty_in1k + Metadata: + FLOPs: 8350000000 # 8.35G + Parameters: 56070000 # 56.07M + In Collection: Twins + Results: + - Dataset: ImageNet-1k + Metrics: + Top 1 Accuracy: 83.13 + Top 5 Accuracy: 96.29 + Task: Image Classification + Weights: https://download.openmmlab.com/mmclassification/v0/twins/twins-svt-base_3rdparty_8xb128_in1k_20220126-e31cc8e9.pth + Config: configs/twins/twins-svt-base_8xb128_in1k.py + Converted From: + Weights: https://github.com/rwightman/pytorch-image-models/releases/download/v0.1-vt3p-weights/twins_pcpvt_small-e70e7e7a.pth + Code: https://github.com/rwightman/pytorch-image-models/blob/master/timm/models/twins.py + - Name: twins-svt-large_3rdparty_16xb64_in1k + Metadata: + FLOPs: 14820000000 # 14.82G + Parameters: 99270000 # 99.27M + In Collection: Twins + Results: + - Dataset: ImageNet-1k + Metrics: + Top 1 Accuracy: 83.60 + Top 5 Accuracy: 96.50 + Task: Image Classification + Weights: https://download.openmmlab.com/mmclassification/v0/twins/twins-svt-large_3rdparty_16xb64_in1k_20220126-4817645f.pth + Config: configs/twins/twins-svt-large_16xb64_in1k.py + Converted From: + Weights: https://github.com/rwightman/pytorch-image-models/releases/download/v0.1-vt3p-weights/twins_pcpvt_small-e70e7e7a.pth + Code: https://github.com/rwightman/pytorch-image-models/blob/master/timm/models/twins.py diff --git a/openmmlab_test/mmclassification-0.24.1/configs/twins/twins-pcpvt-base_8xb128_in1k.py b/openmmlab_test/mmclassification-0.24.1/configs/twins/twins-pcpvt-base_8xb128_in1k.py new file mode 100644 index 00000000..8ea9adc3 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/twins/twins-pcpvt-base_8xb128_in1k.py @@ -0,0 +1,33 @@ +_base_ = [ + '../_base_/models/twins_pcpvt_base.py', + '../_base_/datasets/imagenet_bs64_swin_224.py', + '../_base_/schedules/imagenet_bs1024_adamw_swin.py', + '../_base_/default_runtime.py' +] + +data = dict(samples_per_gpu=128) + +paramwise_cfg = dict(_delete=True, norm_decay_mult=0.0, bias_decay_mult=0.0) + +# for batch in each gpu is 128, 8 gpu +# lr = 5e-4 * 128 * 8 / 512 = 0.001 +optimizer = dict( + type='AdamW', + lr=5e-4 * 128 * 8 / 512, + weight_decay=0.05, + eps=1e-8, + betas=(0.9, 0.999), + paramwise_cfg=paramwise_cfg) +optimizer_config = dict(_delete_=True, grad_clip=dict(max_norm=5.0)) + +# learning policy +lr_config = dict( + policy='CosineAnnealing', + by_epoch=True, + min_lr_ratio=1e-2, + warmup='linear', + warmup_ratio=1e-3, + warmup_iters=5, + warmup_by_epoch=True) + +evaluation = dict(interval=1, metric='accuracy') diff --git a/openmmlab_test/mmclassification-0.24.1/configs/twins/twins-pcpvt-large_16xb64_in1k.py b/openmmlab_test/mmclassification-0.24.1/configs/twins/twins-pcpvt-large_16xb64_in1k.py new file mode 100644 index 00000000..e9c9a35e --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/twins/twins-pcpvt-large_16xb64_in1k.py @@ -0,0 +1,5 @@ +_base_ = ['twins-pcpvt-base_8xb128_in1k.py'] + +model = dict(backbone=dict(arch='large'), head=dict(in_channels=512)) + +data = dict(samples_per_gpu=64) diff --git a/openmmlab_test/mmclassification-0.24.1/configs/twins/twins-pcpvt-small_8xb128_in1k.py b/openmmlab_test/mmclassification-0.24.1/configs/twins/twins-pcpvt-small_8xb128_in1k.py new file mode 100644 index 00000000..cb8bdc38 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/twins/twins-pcpvt-small_8xb128_in1k.py @@ -0,0 +1,3 @@ +_base_ = ['twins-pcpvt-base_8xb128_in1k.py'] + +model = dict(backbone=dict(arch='small'), head=dict(in_channels=512)) diff --git a/openmmlab_test/mmclassification-0.24.1/configs/twins/twins-svt-base_8xb128_in1k.py b/openmmlab_test/mmclassification-0.24.1/configs/twins/twins-svt-base_8xb128_in1k.py new file mode 100644 index 00000000..e2db2301 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/twins/twins-svt-base_8xb128_in1k.py @@ -0,0 +1,33 @@ +_base_ = [ + '../_base_/models/twins_svt_base.py', + '../_base_/datasets/imagenet_bs64_swin_224.py', + '../_base_/schedules/imagenet_bs1024_adamw_swin.py', + '../_base_/default_runtime.py' +] + +data = dict(samples_per_gpu=128) + +paramwise_cfg = dict(_delete=True, norm_decay_mult=0.0, bias_decay_mult=0.0) + +# for batch in each gpu is 128, 8 gpu +# lr = 5e-4 * 128 * 8 / 512 = 0.001 +optimizer = dict( + type='AdamW', + lr=5e-4 * 128 * 8 / 512, + weight_decay=0.05, + eps=1e-8, + betas=(0.9, 0.999), + paramwise_cfg=paramwise_cfg) +optimizer_config = dict(_delete_=True, grad_clip=dict(max_norm=5.0)) + +# learning policy +lr_config = dict( + policy='CosineAnnealing', + by_epoch=True, + min_lr_ratio=1e-2, + warmup='linear', + warmup_ratio=1e-3, + warmup_iters=5, + warmup_by_epoch=True) + +evaluation = dict(interval=1, metric='accuracy') diff --git a/openmmlab_test/mmclassification-0.24.1/configs/twins/twins-svt-large_16xb64_in1k.py b/openmmlab_test/mmclassification-0.24.1/configs/twins/twins-svt-large_16xb64_in1k.py new file mode 100644 index 00000000..9288a706 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/twins/twins-svt-large_16xb64_in1k.py @@ -0,0 +1,5 @@ +_base_ = ['twins-svt-base_8xb128_in1k.py'] + +data = dict(samples_per_gpu=64) + +model = dict(backbone=dict(arch='large'), head=dict(in_channels=1024)) diff --git a/openmmlab_test/mmclassification-0.24.1/configs/twins/twins-svt-small_8xb128_in1k.py b/openmmlab_test/mmclassification-0.24.1/configs/twins/twins-svt-small_8xb128_in1k.py new file mode 100644 index 00000000..b92f1d3f --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/twins/twins-svt-small_8xb128_in1k.py @@ -0,0 +1,3 @@ +_base_ = ['twins-svt-base_8xb128_in1k.py'] + +model = dict(backbone=dict(arch='small'), head=dict(in_channels=512)) diff --git a/openmmlab_test/mmclassification-0.24.1/configs/van/README.md b/openmmlab_test/mmclassification-0.24.1/configs/van/README.md new file mode 100644 index 00000000..a84cf329 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/van/README.md @@ -0,0 +1,50 @@ +# Visual Attention Network + +> [Visual Attention Network](https://arxiv.org/pdf/2202.09741v2.pdf) + + + +## Abstract + +While originally designed for natural language processing (NLP) tasks, the self-attention mechanism has recently taken various computer vision areas by storm. However, the 2D nature of images brings three challenges for applying self-attention in computer vision. (1) Treating images as 1D sequences neglects their 2D structures. (2) The quadratic complexity is too expensive for high-resolution images. (3) It only captures spatial adaptability but ignores channel adaptability. In this paper, we propose a novel large kernel attention (LKA) module to enable self-adaptive and long-range correlations in self-attention while avoiding the above issues. We further introduce a novel neural network based on LKA, namely Visual Attention Network (VAN). While extremely simple and efficient, VAN outperforms the state-of-the-art vision transformers and convolutional neural networks with a large margin in extensive experiments, including image classification, object detection, semantic segmentation, instance segmentation, etc. + +
+ +
+ +## Results and models + +### ImageNet-1k + +| Model | Pretrain | resolution | Params(M) | Flops(G) | Top-1 (%) | Top-5 (%) | Config | Download | +| :------: | :----------: | :--------: | :-------: | :------: | :-------: | :-------: | :----------------------------------------------------------------: | :-------------------------------------------------------------------: | +| VAN-B0\* | From scratch | 224x224 | 4.11 | 0.88 | 75.41 | 93.02 | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/van/van-b0_8xb128_in1k.py) | [model](https://download.openmmlab.com/mmclassification/v0/van/van-tiny_8xb128_in1k_20220501-385941af.pth) | +| VAN-B1\* | From scratch | 224x224 | 13.86 | 2.52 | 81.01 | 95.63 | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/van/van-b1_8xb128_in1k.py) | [model](https://download.openmmlab.com/mmclassification/v0/van/van-small_8xb128_in1k_20220501-17bc91aa.pth) | +| VAN-B2\* | From scratch | 224x224 | 26.58 | 5.03 | 82.80 | 96.21 | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/van/van-b2_8xb128_in1k.py) | [model](https://download.openmmlab.com/mmclassification/v0/van/van-base_8xb128_in1k_20220501-6a4cc31b.pth) | +| VAN-B3\* | From scratch | 224x224 | 44.77 | 8.99 | 83.86 | 96.73 | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/van/van-b3_8xb128_in1k.py) | [model](https://download.openmmlab.com/mmclassification/v0/van/van-large_8xb128_in1k_20220501-f212ba21.pth) | +| VAN-B4\* | From scratch | 224x224 | 60.28 | 12.22 | 84.13 | 96.86 | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/van/van-b4_8xb128_in1k.py) | [model](https://download.openmmlab.com/mmclassification/v0/van/van-b4_3rdparty_in1k_20220909-f4665b92.pth) | + +\*Models with * are converted from [the official repo](https://github.com/Visual-Attention-Network/VAN-Classification). The config files of these models are only for validation. We don't ensure these config files' training accuracy and welcome you to contribute your reproduction results. + +### Pre-trained Models + +The pre-trained models on ImageNet-21k are used to fine-tune on the downstream tasks. + +| Model | Pretrain | resolution | Params(M) | Flops(G) | Download | +| :------: | :----------: | :--------: | :-------: | :------: | :---------------------------------------------------------------------------------------------------------: | +| VAN-B4\* | ImageNet-21k | 224x224 | 60.28 | 12.22 | [model](https://download.openmmlab.com/mmclassification/v0/van/van-b4_3rdparty_in21k_20220909-db926b18.pth) | +| VAN-B5\* | ImageNet-21k | 224x224 | 89.97 | 17.21 | [model](https://download.openmmlab.com/mmclassification/v0/van/van-b5_3rdparty_in21k_20220909-18e904e3.pth) | +| VAN-B6\* | ImageNet-21k | 224x224 | 283.9 | 55.28 | [model](https://download.openmmlab.com/mmclassification/v0/van/van-b6_3rdparty_in21k_20220909-96c2cb3a.pth) | + +\*Models with * are converted from [the official repo](https://github.com/Visual-Attention-Network/VAN-Classification). + +## Citation + +``` +@article{guo2022visual, + title={Visual Attention Network}, + author={Guo, Meng-Hao and Lu, Cheng-Ze and Liu, Zheng-Ning and Cheng, Ming-Ming and Hu, Shi-Min}, + journal={arXiv preprint arXiv:2202.09741}, + year={2022} +} +``` diff --git a/openmmlab_test/mmclassification-0.24.1/configs/van/metafile.yml b/openmmlab_test/mmclassification-0.24.1/configs/van/metafile.yml new file mode 100644 index 00000000..c32df84a --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/van/metafile.yml @@ -0,0 +1,84 @@ +Collections: + - Name: Visual-Attention-Network + Metadata: + Training Data: ImageNet-1k + Training Techniques: + - AdamW + - Weight Decay + Architecture: + - Visual Attention Network + - LKA + Paper: + URL: https://arxiv.org/pdf/2202.09741v2.pdf + Title: "Visual Attention Network" + README: configs/van/README.md + Code: + URL: https://github.com/open-mmlab/mmclassification/blob/v0.23.0/mmcls/models/backbones/van.py + Version: v0.23.0 + +Models: + - Name: van-b0_3rdparty_in1k + Metadata: + FLOPs: 880000000 # 0.88G + Parameters: 4110000 # 4.11M + In Collection: Visual-Attention-Network + Results: + - Dataset: ImageNet-1k + Metrics: + Top 1 Accuracy: 75.41 + Top 5 Accuracy: 93.02 + Task: Image Classification + Weights: https://download.openmmlab.com/mmclassification/v0/van/van-tiny_8xb128_in1k_20220501-385941af.pth + Config: configs/van/van-b0_8xb128_in1k.py + - Name: van-b1_3rdparty_in1k + Metadata: + FLOPs: 2520000000 # 2.52G + Parameters: 13860000 # 13.86M + In Collection: Visual-Attention-Network + Results: + - Dataset: ImageNet-1k + Metrics: + Top 1 Accuracy: 81.01 + Top 5 Accuracy: 95.63 + Task: Image Classification + Weights: https://download.openmmlab.com/mmclassification/v0/van/van-small_8xb128_in1k_20220501-17bc91aa.pth + Config: configs/van/van-b1_8xb128_in1k.py + - Name: van-b2_3rdparty_in1k + Metadata: + FLOPs: 5030000000 # 5.03G + Parameters: 26580000 # 26.58M + In Collection: Visual-Attention-Network + Results: + - Dataset: ImageNet-1k + Metrics: + Top 1 Accuracy: 82.80 + Top 5 Accuracy: 96.21 + Task: Image Classification + Weights: https://download.openmmlab.com/mmclassification/v0/van/van-base_8xb128_in1k_20220501-6a4cc31b.pth + Config: configs/van/van-b2_8xb128_in1k.py + - Name: van-b3_3rdparty_in1k + Metadata: + FLOPs: 8990000000 # 8.99G + Parameters: 44770000 # 44.77M + In Collection: Visual-Attention-Network + Results: + - Dataset: ImageNet-1k + Metrics: + Top 1 Accuracy: 83.86 + Top 5 Accuracy: 96.73 + Task: Image Classification + Weights: https://download.openmmlab.com/mmclassification/v0/van/van-large_8xb128_in1k_20220501-f212ba21.pth + Config: configs/van/van-b3_8xb128_in1k.py + - Name: van-b4_3rdparty_in1k + Metadata: + FLOPs: 12220000000 # 12.22G + Parameters: 60280000 # 60.28M + In Collection: Visual-Attention-Network + Results: + - Dataset: ImageNet-1k + Metrics: + Top 1 Accuracy: 84.13 + Top 5 Accuracy: 96.86 + Task: Image Classification + Weights: https://download.openmmlab.com/mmclassification/v0/van/van-b4_3rdparty_in1k_20220909-f4665b92.pth + Config: configs/van/van-b4_8xb128_in1k.py diff --git a/openmmlab_test/mmclassification-0.24.1/configs/van/van-b0_8xb128_in1k.py b/openmmlab_test/mmclassification-0.24.1/configs/van/van-b0_8xb128_in1k.py new file mode 100644 index 00000000..1acb7af3 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/van/van-b0_8xb128_in1k.py @@ -0,0 +1,61 @@ +_base_ = [ + '../_base_/models/van/van_b0.py', + '../_base_/datasets/imagenet_bs64_swin_224.py', + '../_base_/schedules/imagenet_bs1024_adamw_swin.py', + '../_base_/default_runtime.py' +] + +# Note that the mean and variance used here are different from other configs +img_norm_cfg = dict( + mean=[127.5, 127.5, 127.5], std=[127.5, 127.5, 127.5], to_rgb=True) +train_pipeline = [ + dict(type='LoadImageFromFile'), + dict( + type='RandomResizedCrop', + size=224, + backend='pillow', + interpolation='bicubic'), + dict(type='RandomFlip', flip_prob=0.5, direction='horizontal'), + dict( + type='RandAugment', + policies={{_base_.rand_increasing_policies}}, + num_policies=2, + total_level=10, + magnitude_level=9, + magnitude_std=0.5, + hparams=dict( + pad_val=[round(x) for x in img_norm_cfg['mean'][::-1]], + interpolation='bicubic')), + dict(type='ColorJitter', brightness=0.4, contrast=0.4, saturation=0.4), + dict( + type='RandomErasing', + erase_prob=0.25, + mode='rand', + min_area_ratio=0.02, + max_area_ratio=1 / 3, + fill_color=img_norm_cfg['mean'][::-1], + fill_std=img_norm_cfg['std'][::-1]), + dict(type='Normalize', **img_norm_cfg), + dict(type='ImageToTensor', keys=['img']), + dict(type='ToTensor', keys=['gt_label']), + dict(type='Collect', keys=['img', 'gt_label']) +] + +test_pipeline = [ + dict(type='LoadImageFromFile'), + dict( + type='Resize', + size=(248, -1), + backend='pillow', + interpolation='bicubic'), + dict(type='CenterCrop', crop_size=224), + dict(type='Normalize', **img_norm_cfg), + dict(type='ImageToTensor', keys=['img']), + dict(type='Collect', keys=['img']) +] + +data = dict( + samples_per_gpu=128, + train=dict(pipeline=train_pipeline), + val=dict(pipeline=test_pipeline), + test=dict(pipeline=test_pipeline)) diff --git a/openmmlab_test/mmclassification-0.24.1/configs/van/van-b1_8xb128_in1k.py b/openmmlab_test/mmclassification-0.24.1/configs/van/van-b1_8xb128_in1k.py new file mode 100644 index 00000000..64483db8 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/van/van-b1_8xb128_in1k.py @@ -0,0 +1,61 @@ +_base_ = [ + '../_base_/models/van/van_b1.py', + '../_base_/datasets/imagenet_bs64_swin_224.py', + '../_base_/schedules/imagenet_bs1024_adamw_swin.py', + '../_base_/default_runtime.py' +] + +# Note that the mean and variance used here are different from other configs +img_norm_cfg = dict( + mean=[127.5, 127.5, 127.5], std=[127.5, 127.5, 127.5], to_rgb=True) +train_pipeline = [ + dict(type='LoadImageFromFile'), + dict( + type='RandomResizedCrop', + size=224, + backend='pillow', + interpolation='bicubic'), + dict(type='RandomFlip', flip_prob=0.5, direction='horizontal'), + dict( + type='RandAugment', + policies={{_base_.rand_increasing_policies}}, + num_policies=2, + total_level=10, + magnitude_level=9, + magnitude_std=0.5, + hparams=dict( + pad_val=[round(x) for x in img_norm_cfg['mean'][::-1]], + interpolation='bicubic')), + dict(type='ColorJitter', brightness=0.4, contrast=0.4, saturation=0.4), + dict( + type='RandomErasing', + erase_prob=0.25, + mode='rand', + min_area_ratio=0.02, + max_area_ratio=1 / 3, + fill_color=img_norm_cfg['mean'][::-1], + fill_std=img_norm_cfg['std'][::-1]), + dict(type='Normalize', **img_norm_cfg), + dict(type='ImageToTensor', keys=['img']), + dict(type='ToTensor', keys=['gt_label']), + dict(type='Collect', keys=['img', 'gt_label']) +] + +test_pipeline = [ + dict(type='LoadImageFromFile'), + dict( + type='Resize', + size=(248, -1), + backend='pillow', + interpolation='bicubic'), + dict(type='CenterCrop', crop_size=224), + dict(type='Normalize', **img_norm_cfg), + dict(type='ImageToTensor', keys=['img']), + dict(type='Collect', keys=['img']) +] + +data = dict( + samples_per_gpu=128, + train=dict(pipeline=train_pipeline), + val=dict(pipeline=test_pipeline), + test=dict(pipeline=test_pipeline)) diff --git a/openmmlab_test/mmclassification-0.24.1/configs/van/van-b2_8xb128_in1k.py b/openmmlab_test/mmclassification-0.24.1/configs/van/van-b2_8xb128_in1k.py new file mode 100644 index 00000000..88493dc2 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/van/van-b2_8xb128_in1k.py @@ -0,0 +1,61 @@ +_base_ = [ + '../_base_/models/van/van_b2.py', + '../_base_/datasets/imagenet_bs64_swin_224.py', + '../_base_/schedules/imagenet_bs1024_adamw_swin.py', + '../_base_/default_runtime.py' +] + +# Note that the mean and variance used here are different from other configs +img_norm_cfg = dict( + mean=[127.5, 127.5, 127.5], std=[127.5, 127.5, 127.5], to_rgb=True) +train_pipeline = [ + dict(type='LoadImageFromFile'), + dict( + type='RandomResizedCrop', + size=224, + backend='pillow', + interpolation='bicubic'), + dict(type='RandomFlip', flip_prob=0.5, direction='horizontal'), + dict( + type='RandAugment', + policies={{_base_.rand_increasing_policies}}, + num_policies=2, + total_level=10, + magnitude_level=9, + magnitude_std=0.5, + hparams=dict( + pad_val=[round(x) for x in img_norm_cfg['mean'][::-1]], + interpolation='bicubic')), + dict(type='ColorJitter', brightness=0.4, contrast=0.4, saturation=0.4), + dict( + type='RandomErasing', + erase_prob=0.25, + mode='rand', + min_area_ratio=0.02, + max_area_ratio=1 / 3, + fill_color=img_norm_cfg['mean'][::-1], + fill_std=img_norm_cfg['std'][::-1]), + dict(type='Normalize', **img_norm_cfg), + dict(type='ImageToTensor', keys=['img']), + dict(type='ToTensor', keys=['gt_label']), + dict(type='Collect', keys=['img', 'gt_label']) +] + +test_pipeline = [ + dict(type='LoadImageFromFile'), + dict( + type='Resize', + size=(248, -1), + backend='pillow', + interpolation='bicubic'), + dict(type='CenterCrop', crop_size=224), + dict(type='Normalize', **img_norm_cfg), + dict(type='ImageToTensor', keys=['img']), + dict(type='Collect', keys=['img']) +] + +data = dict( + samples_per_gpu=128, + train=dict(pipeline=train_pipeline), + val=dict(pipeline=test_pipeline), + test=dict(pipeline=test_pipeline)) diff --git a/openmmlab_test/mmclassification-0.24.1/configs/van/van-b3_8xb128_in1k.py b/openmmlab_test/mmclassification-0.24.1/configs/van/van-b3_8xb128_in1k.py new file mode 100644 index 00000000..6b415f65 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/van/van-b3_8xb128_in1k.py @@ -0,0 +1,61 @@ +_base_ = [ + '../_base_/models/van/van_b3.py', + '../_base_/datasets/imagenet_bs64_swin_224.py', + '../_base_/schedules/imagenet_bs1024_adamw_swin.py', + '../_base_/default_runtime.py' +] + +# Note that the mean and variance used here are different from other configs +img_norm_cfg = dict( + mean=[127.5, 127.5, 127.5], std=[127.5, 127.5, 127.5], to_rgb=True) +train_pipeline = [ + dict(type='LoadImageFromFile'), + dict( + type='RandomResizedCrop', + size=224, + backend='pillow', + interpolation='bicubic'), + dict(type='RandomFlip', flip_prob=0.5, direction='horizontal'), + dict( + type='RandAugment', + policies={{_base_.rand_increasing_policies}}, + num_policies=2, + total_level=10, + magnitude_level=9, + magnitude_std=0.5, + hparams=dict( + pad_val=[round(x) for x in img_norm_cfg['mean'][::-1]], + interpolation='bicubic')), + dict(type='ColorJitter', brightness=0.4, contrast=0.4, saturation=0.4), + dict( + type='RandomErasing', + erase_prob=0.25, + mode='rand', + min_area_ratio=0.02, + max_area_ratio=1 / 3, + fill_color=img_norm_cfg['mean'][::-1], + fill_std=img_norm_cfg['std'][::-1]), + dict(type='Normalize', **img_norm_cfg), + dict(type='ImageToTensor', keys=['img']), + dict(type='ToTensor', keys=['gt_label']), + dict(type='Collect', keys=['img', 'gt_label']) +] + +test_pipeline = [ + dict(type='LoadImageFromFile'), + dict( + type='Resize', + size=(248, -1), + backend='pillow', + interpolation='bicubic'), + dict(type='CenterCrop', crop_size=224), + dict(type='Normalize', **img_norm_cfg), + dict(type='ImageToTensor', keys=['img']), + dict(type='Collect', keys=['img']) +] + +data = dict( + samples_per_gpu=128, + train=dict(pipeline=train_pipeline), + val=dict(pipeline=test_pipeline), + test=dict(pipeline=test_pipeline)) diff --git a/openmmlab_test/mmclassification-0.24.1/configs/van/van-b4_8xb128_in1k.py b/openmmlab_test/mmclassification-0.24.1/configs/van/van-b4_8xb128_in1k.py new file mode 100644 index 00000000..ba8914f8 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/van/van-b4_8xb128_in1k.py @@ -0,0 +1,61 @@ +_base_ = [ + '../_base_/models/van/van_b4.py', + '../_base_/datasets/imagenet_bs64_swin_224.py', + '../_base_/schedules/imagenet_bs1024_adamw_swin.py', + '../_base_/default_runtime.py' +] + +# Note that the mean and variance used here are different from other configs +img_norm_cfg = dict( + mean=[127.5, 127.5, 127.5], std=[127.5, 127.5, 127.5], to_rgb=True) +train_pipeline = [ + dict(type='LoadImageFromFile'), + dict( + type='RandomResizedCrop', + size=224, + backend='pillow', + interpolation='bicubic'), + dict(type='RandomFlip', flip_prob=0.5, direction='horizontal'), + dict( + type='RandAugment', + policies={{_base_.rand_increasing_policies}}, + num_policies=2, + total_level=10, + magnitude_level=9, + magnitude_std=0.5, + hparams=dict( + pad_val=[round(x) for x in img_norm_cfg['mean'][::-1]], + interpolation='bicubic')), + dict(type='ColorJitter', brightness=0.4, contrast=0.4, saturation=0.4), + dict( + type='RandomErasing', + erase_prob=0.25, + mode='rand', + min_area_ratio=0.02, + max_area_ratio=1 / 3, + fill_color=img_norm_cfg['mean'][::-1], + fill_std=img_norm_cfg['std'][::-1]), + dict(type='Normalize', **img_norm_cfg), + dict(type='ImageToTensor', keys=['img']), + dict(type='ToTensor', keys=['gt_label']), + dict(type='Collect', keys=['img', 'gt_label']) +] + +test_pipeline = [ + dict(type='LoadImageFromFile'), + dict( + type='Resize', + size=(248, -1), + backend='pillow', + interpolation='bicubic'), + dict(type='CenterCrop', crop_size=224), + dict(type='Normalize', **img_norm_cfg), + dict(type='ImageToTensor', keys=['img']), + dict(type='Collect', keys=['img']) +] + +data = dict( + samples_per_gpu=128, + train=dict(pipeline=train_pipeline), + val=dict(pipeline=test_pipeline), + test=dict(pipeline=test_pipeline)) diff --git a/openmmlab_test/mmclassification-0.24.1/configs/van/van-base_8xb128_in1k.py b/openmmlab_test/mmclassification-0.24.1/configs/van/van-base_8xb128_in1k.py new file mode 100644 index 00000000..e331980d --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/van/van-base_8xb128_in1k.py @@ -0,0 +1,6 @@ +_base_ = ['./van-b2_8xb128_in1k.py'] + +_deprecation_ = dict( + expected='van-b2_8xb128_in1k.p', + reference='https://github.com/open-mmlab/mmclassification/pull/1017', +) diff --git a/openmmlab_test/mmclassification-0.24.1/configs/van/van-large_8xb128_in1k.py b/openmmlab_test/mmclassification-0.24.1/configs/van/van-large_8xb128_in1k.py new file mode 100644 index 00000000..84f8c7ed --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/van/van-large_8xb128_in1k.py @@ -0,0 +1,6 @@ +_base_ = ['./van-b3_8xb128_in1k.py'] + +_deprecation_ = dict( + expected='van-b3_8xb128_in1k.p', + reference='https://github.com/open-mmlab/mmclassification/pull/1017', +) diff --git a/openmmlab_test/mmclassification-0.24.1/configs/van/van-small_8xb128_in1k.py b/openmmlab_test/mmclassification-0.24.1/configs/van/van-small_8xb128_in1k.py new file mode 100644 index 00000000..75d3220b --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/van/van-small_8xb128_in1k.py @@ -0,0 +1,6 @@ +_base_ = ['./van-b1_8xb128_in1k.py'] + +_deprecation_ = dict( + expected='van-b1_8xb128_in1k.py', + reference='https://github.com/open-mmlab/mmclassification/pull/1017', +) diff --git a/openmmlab_test/mmclassification-0.24.1/configs/van/van-tiny_8xb128_in1k.py b/openmmlab_test/mmclassification-0.24.1/configs/van/van-tiny_8xb128_in1k.py new file mode 100644 index 00000000..9f83e77c --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/van/van-tiny_8xb128_in1k.py @@ -0,0 +1,6 @@ +_base_ = ['./van-b0_8xb128_in1k.py'] + +_deprecation_ = dict( + expected='van-b0_8xb128_in1k.py', + reference='https://github.com/open-mmlab/mmclassification/pull/1017', +) diff --git a/openmmlab_test/mmclassification-0.24.1/configs/vgg/README.md b/openmmlab_test/mmclassification-0.24.1/configs/vgg/README.md new file mode 100644 index 00000000..454489ff --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/vgg/README.md @@ -0,0 +1,39 @@ +# VGG + +> [Very Deep Convolutional Networks for Large-Scale Image Recognition](https://arxiv.org/abs/1409.1556) + + + +## Abstract + +In this work we investigate the effect of the convolutional network depth on its accuracy in the large-scale image recognition setting. Our main contribution is a thorough evaluation of networks of increasing depth using an architecture with very small (3x3) convolution filters, which shows that a significant improvement on the prior-art configurations can be achieved by pushing the depth to 16-19 weight layers. These findings were the basis of our ImageNet Challenge 2014 submission, where our team secured the first and the second places in the localisation and classification tracks respectively. We also show that our representations generalise well to other datasets, where they achieve state-of-the-art results. We have made our two best-performing ConvNet models publicly available to facilitate further research on the use of deep visual representations in computer vision. + +
+ +
+ +## Results and models + +### ImageNet-1k + +| Model | Params(M) | Flops(G) | Top-1 (%) | Top-5 (%) | Config | Download | +| :-------: | :-------: | :------: | :-------: | :-------: | :---------------------------------------------------------------------------: | :-----------------------------------------------------------------------------: | +| VGG-11 | 132.86 | 7.63 | 68.75 | 88.87 | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/vgg/vgg11_8xb32_in1k.py) | [model](https://download.openmmlab.com/mmclassification/v0/vgg/vgg11_batch256_imagenet_20210208-4271cd6c.pth) \| [log](https://download.openmmlab.com/mmclassification/v0/vgg/vgg11_batch256_imagenet_20210208-4271cd6c.log.json) | +| VGG-13 | 133.05 | 11.34 | 70.02 | 89.46 | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/vgg/vgg13_8xb32_in1k.py) | [model](https://download.openmmlab.com/mmclassification/v0/vgg/vgg13_batch256_imagenet_20210208-4d1d6080.pth) \| [log](https://download.openmmlab.com/mmclassification/v0/vgg/vgg13_batch256_imagenet_20210208-4d1d6080.log.json) | +| VGG-16 | 138.36 | 15.5 | 71.62 | 90.49 | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/vgg/vgg16_8xb32_in1k.py) | [model](https://download.openmmlab.com/mmclassification/v0/vgg/vgg16_batch256_imagenet_20210208-db26f1a5.pth) \| [log](https://download.openmmlab.com/mmclassification/v0/vgg/vgg16_batch256_imagenet_20210208-db26f1a5.log.json) | +| VGG-19 | 143.67 | 19.67 | 72.41 | 90.80 | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/vgg/vgg19_8xb32_in1k.py) | [model](https://download.openmmlab.com/mmclassification/v0/vgg/vgg19_batch256_imagenet_20210208-e6920e4a.pth) \| [log](https://download.openmmlab.com/mmclassification/v0/vgg/vgg19_batch256_imagenet_20210208-e6920e4a.log.json) | +| VGG-11-BN | 132.87 | 7.64 | 70.67 | 90.16 | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/vgg/vgg11bn_8xb32_in1k.py) | [model](https://download.openmmlab.com/mmclassification/v0/vgg/vgg11_bn_batch256_imagenet_20210207-f244902c.pth) \| [log](https://download.openmmlab.com/mmclassification/v0/vgg/vgg11_bn_batch256_imagenet_20210207-f244902c.log.json) | +| VGG-13-BN | 133.05 | 11.36 | 72.12 | 90.66 | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/vgg/vgg13bn_8xb32_in1k.py) | [model](https://download.openmmlab.com/mmclassification/v0/vgg/vgg13_bn_batch256_imagenet_20210207-1a8b7864.pth) \| [log](https://download.openmmlab.com/mmclassification/v0/vgg/vgg13_bn_batch256_imagenet_20210207-1a8b7864.log.json) | +| VGG-16-BN | 138.37 | 15.53 | 73.74 | 91.66 | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/vgg/vgg16_8xb32_in1k.py) | [model](https://download.openmmlab.com/mmclassification/v0/vgg/vgg16_bn_batch256_imagenet_20210208-7e55cd29.pth) \| [log](https://download.openmmlab.com/mmclassification/v0/vgg/vgg16_bn_batch256_imagenet_20210208-7e55cd29.log.json) | +| VGG-19-BN | 143.68 | 19.7 | 74.68 | 92.27 | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/vgg/vgg19bn_8xb32_in1k.py) | [model](https://download.openmmlab.com/mmclassification/v0/vgg/vgg19_bn_batch256_imagenet_20210208-da620c4f.pth) \| [log](https://download.openmmlab.com/mmclassification/v0/vgg/vgg19_bn_batch256_imagenet_20210208-da620c4f.log.json) | + +## Citation + +``` +@article{simonyan2014very, + title={Very deep convolutional networks for large-scale image recognition}, + author={Simonyan, Karen and Zisserman, Andrew}, + journal={arXiv preprint arXiv:1409.1556}, + year={2014} +} +``` diff --git a/openmmlab_test/mmclassification-0.24.1/configs/vgg/metafile.yml b/openmmlab_test/mmclassification-0.24.1/configs/vgg/metafile.yml new file mode 100644 index 00000000..4410c950 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/vgg/metafile.yml @@ -0,0 +1,125 @@ +Collections: + - Name: VGG + Metadata: + Training Data: ImageNet-1k + Training Techniques: + - SGD with Momentum + - Weight Decay + Training Resources: 8x Xp GPUs + Epochs: 100 + Batch Size: 256 + Architecture: + - VGG + Paper: + URL: https://arxiv.org/abs/1409.1556 + Title: "Very Deep Convolutional Networks for Large-Scale Image" + README: configs/vgg/README.md + Code: + URL: https://github.com/open-mmlab/mmclassification/blob/v0.15.0/mmcls/models/backbones/vgg.py#L39 + Version: v0.15.0 + +Models: + - Name: vgg11_8xb32_in1k + Metadata: + FLOPs: 7630000000 + Parameters: 132860000 + In Collection: VGG + Results: + - Dataset: ImageNet-1k + Metrics: + Top 1 Accuracy: 68.75 + Top 5 Accuracy: 88.87 + Task: Image Classification + Weights: https://download.openmmlab.com/mmclassification/v0/vgg/vgg11_batch256_imagenet_20210208-4271cd6c.pth + Config: configs/vgg/vgg11_8xb32_in1k.py + - Name: vgg13_8xb32_in1k + Metadata: + FLOPs: 11340000000 + Parameters: 133050000 + In Collection: VGG + Results: + - Dataset: ImageNet-1k + Metrics: + Top 1 Accuracy: 70.02 + Top 5 Accuracy: 89.46 + Task: Image Classification + Weights: https://download.openmmlab.com/mmclassification/v0/vgg/vgg13_batch256_imagenet_20210208-4d1d6080.pth + Config: configs/vgg/vgg13_8xb32_in1k.py + - Name: vgg16_8xb32_in1k + Metadata: + FLOPs: 15500000000 + Parameters: 138360000 + In Collection: VGG + Results: + - Dataset: ImageNet-1k + Metrics: + Top 1 Accuracy: 71.62 + Top 5 Accuracy: 90.49 + Task: Image Classification + Weights: https://download.openmmlab.com/mmclassification/v0/vgg/vgg16_batch256_imagenet_20210208-db26f1a5.pth + Config: configs/vgg/vgg16_8xb32_in1k.py + - Name: vgg19_8xb32_in1k + Metadata: + FLOPs: 19670000000 + Parameters: 143670000 + In Collection: VGG + Results: + - Dataset: ImageNet-1k + Metrics: + Top 1 Accuracy: 72.41 + Top 5 Accuracy: 90.8 + Task: Image Classification + Weights: https://download.openmmlab.com/mmclassification/v0/vgg/vgg19_batch256_imagenet_20210208-e6920e4a.pth + Config: configs/vgg/vgg19_8xb32_in1k.py + - Name: vgg11bn_8xb32_in1k + Metadata: + FLOPs: 7640000000 + Parameters: 132870000 + In Collection: VGG + Results: + - Dataset: ImageNet-1k + Metrics: + Top 1 Accuracy: 70.67 + Top 5 Accuracy: 90.16 + Task: Image Classification + Weights: https://download.openmmlab.com/mmclassification/v0/vgg/vgg11_bn_batch256_imagenet_20210207-f244902c.pth + Config: configs/vgg/vgg11bn_8xb32_in1k.py + - Name: vgg13bn_8xb32_in1k + Metadata: + FLOPs: 11360000000 + Parameters: 133050000 + In Collection: VGG + Results: + - Dataset: ImageNet-1k + Metrics: + Top 1 Accuracy: 72.12 + Top 5 Accuracy: 90.66 + Task: Image Classification + Weights: https://download.openmmlab.com/mmclassification/v0/vgg/vgg13_bn_batch256_imagenet_20210207-1a8b7864.pth + Config: configs/vgg/vgg13bn_8xb32_in1k.py + - Name: vgg16bn_8xb32_in1k + Metadata: + FLOPs: 15530000000 + Parameters: 138370000 + In Collection: VGG + Results: + - Dataset: ImageNet-1k + Metrics: + Top 1 Accuracy: 73.74 + Top 5 Accuracy: 91.66 + Task: Image Classification + Weights: https://download.openmmlab.com/mmclassification/v0/vgg/vgg16_bn_batch256_imagenet_20210208-7e55cd29.pth + Config: configs/vgg/vgg16bn_8xb32_in1k.py + - Name: vgg19bn_8xb32_in1k + Metadata: + FLOPs: 19700000000 + Parameters: 143680000 + In Collection: VGG + Results: + - Dataset: ImageNet-1k + Metrics: + Top 1 Accuracy: 74.68 + Top 5 Accuracy: 92.27 + Task: Image Classification + Weights: https://download.openmmlab.com/mmclassification/v0/vgg/vgg19_bn_batch256_imagenet_20210208-da620c4f.pth + Config: configs/vgg/vgg19bn_8xb32_in1k.py diff --git a/openmmlab_test/mmclassification-speed-benchmark/configs/vgg/vgg11_b32x8_imagenet.py b/openmmlab_test/mmclassification-0.24.1/configs/vgg/vgg11_8xb32_in1k.py similarity index 100% rename from openmmlab_test/mmclassification-speed-benchmark/configs/vgg/vgg11_b32x8_imagenet.py rename to openmmlab_test/mmclassification-0.24.1/configs/vgg/vgg11_8xb32_in1k.py diff --git a/openmmlab_test/mmclassification-0.24.1/configs/vgg/vgg11_b32x8_imagenet.py b/openmmlab_test/mmclassification-0.24.1/configs/vgg/vgg11_b32x8_imagenet.py new file mode 100644 index 00000000..b15396be --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/vgg/vgg11_b32x8_imagenet.py @@ -0,0 +1,6 @@ +_base_ = 'vgg11_8xb32_in1k.py' + +_deprecation_ = dict( + expected='vgg11_8xb32_in1k.py', + reference='https://github.com/open-mmlab/mmclassification/pull/508', +) diff --git a/openmmlab_test/mmclassification-speed-benchmark/configs/vgg/vgg11bn_b32x8_imagenet.py b/openmmlab_test/mmclassification-0.24.1/configs/vgg/vgg11bn_8xb32_in1k.py similarity index 100% rename from openmmlab_test/mmclassification-speed-benchmark/configs/vgg/vgg11bn_b32x8_imagenet.py rename to openmmlab_test/mmclassification-0.24.1/configs/vgg/vgg11bn_8xb32_in1k.py diff --git a/openmmlab_test/mmclassification-0.24.1/configs/vgg/vgg11bn_b32x8_imagenet.py b/openmmlab_test/mmclassification-0.24.1/configs/vgg/vgg11bn_b32x8_imagenet.py new file mode 100644 index 00000000..350c9bef --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/vgg/vgg11bn_b32x8_imagenet.py @@ -0,0 +1,6 @@ +_base_ = 'vgg11bn_8xb32_in1k.py' + +_deprecation_ = dict( + expected='vgg11bn_8xb32_in1k.py', + reference='https://github.com/open-mmlab/mmclassification/pull/508', +) diff --git a/openmmlab_test/mmclassification-speed-benchmark/configs/vgg/vgg13_b32x8_imagenet.py b/openmmlab_test/mmclassification-0.24.1/configs/vgg/vgg13_8xb32_in1k.py similarity index 100% rename from openmmlab_test/mmclassification-speed-benchmark/configs/vgg/vgg13_b32x8_imagenet.py rename to openmmlab_test/mmclassification-0.24.1/configs/vgg/vgg13_8xb32_in1k.py diff --git a/openmmlab_test/mmclassification-0.24.1/configs/vgg/vgg13_b32x8_imagenet.py b/openmmlab_test/mmclassification-0.24.1/configs/vgg/vgg13_b32x8_imagenet.py new file mode 100644 index 00000000..6198ca2c --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/vgg/vgg13_b32x8_imagenet.py @@ -0,0 +1,6 @@ +_base_ = 'vgg13_8xb32_in1k.py' + +_deprecation_ = dict( + expected='vgg13_8xb32_in1k.py', + reference='https://github.com/open-mmlab/mmclassification/pull/508', +) diff --git a/openmmlab_test/mmclassification-speed-benchmark/configs/vgg/vgg13bn_b32x8_imagenet.py b/openmmlab_test/mmclassification-0.24.1/configs/vgg/vgg13bn_8xb32_in1k.py similarity index 100% rename from openmmlab_test/mmclassification-speed-benchmark/configs/vgg/vgg13bn_b32x8_imagenet.py rename to openmmlab_test/mmclassification-0.24.1/configs/vgg/vgg13bn_8xb32_in1k.py diff --git a/openmmlab_test/mmclassification-0.24.1/configs/vgg/vgg13bn_b32x8_imagenet.py b/openmmlab_test/mmclassification-0.24.1/configs/vgg/vgg13bn_b32x8_imagenet.py new file mode 100644 index 00000000..0a715d7f --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/vgg/vgg13bn_b32x8_imagenet.py @@ -0,0 +1,6 @@ +_base_ = 'vgg13bn_8xb32_in1k.py' + +_deprecation_ = dict( + expected='vgg13bn_8xb32_in1k.py', + reference='https://github.com/open-mmlab/mmclassification/pull/508', +) diff --git a/openmmlab_test/mmclassification-speed-benchmark/configs/vgg/vgg16_b16x8_voc.py b/openmmlab_test/mmclassification-0.24.1/configs/vgg/vgg16_8xb16_voc.py similarity index 100% rename from openmmlab_test/mmclassification-speed-benchmark/configs/vgg/vgg16_b16x8_voc.py rename to openmmlab_test/mmclassification-0.24.1/configs/vgg/vgg16_8xb16_voc.py diff --git a/openmmlab_test/mmclassification-0.24.1/configs/vgg/vgg16_8xb32_in1k.py b/openmmlab_test/mmclassification-0.24.1/configs/vgg/vgg16_8xb32_in1k.py new file mode 100644 index 00000000..a477db37 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/vgg/vgg16_8xb32_in1k.py @@ -0,0 +1,7 @@ +_base_ = [ + '../_base_/models/vgg16bn.py', + '../_base_/datasets/imagenet_bs32_pil_resize.py', + '../_base_/schedules/imagenet_bs256.py', '../_base_/default_runtime.py' +] +optimizer = dict(lr=0.01) +fp16 = dict(loss_scale=512.) diff --git a/openmmlab_test/mmclassification-0.24.1/configs/vgg/vgg16_b16x8_voc.py b/openmmlab_test/mmclassification-0.24.1/configs/vgg/vgg16_b16x8_voc.py new file mode 100644 index 00000000..06225e72 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/vgg/vgg16_b16x8_voc.py @@ -0,0 +1,6 @@ +_base_ = 'vgg16_8xb16_voc.py' + +_deprecation_ = dict( + expected='vgg16_8xb16_voc.py', + reference='https://github.com/open-mmlab/mmclassification/pull/508', +) diff --git a/openmmlab_test/mmclassification-0.24.1/configs/vgg/vgg16_b32x8_imagenet.py b/openmmlab_test/mmclassification-0.24.1/configs/vgg/vgg16_b32x8_imagenet.py new file mode 100644 index 00000000..2fefb949 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/vgg/vgg16_b32x8_imagenet.py @@ -0,0 +1,6 @@ +_base_ = 'vgg16_8xb32_in1k.py' + +_deprecation_ = dict( + expected='vgg16_8xb32_in1k.py', + reference='https://github.com/open-mmlab/mmclassification/pull/508', +) diff --git a/openmmlab_test/mmclassification-speed-benchmark/configs/vgg/vgg16bn_b32x8_imagenet.py b/openmmlab_test/mmclassification-0.24.1/configs/vgg/vgg16bn_8xb32_in1k.py similarity index 100% rename from openmmlab_test/mmclassification-speed-benchmark/configs/vgg/vgg16bn_b32x8_imagenet.py rename to openmmlab_test/mmclassification-0.24.1/configs/vgg/vgg16bn_8xb32_in1k.py diff --git a/openmmlab_test/mmclassification-0.24.1/configs/vgg/vgg16bn_b32x8_imagenet.py b/openmmlab_test/mmclassification-0.24.1/configs/vgg/vgg16bn_b32x8_imagenet.py new file mode 100644 index 00000000..cb21917f --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/vgg/vgg16bn_b32x8_imagenet.py @@ -0,0 +1,6 @@ +_base_ = 'vgg16bn_8xb32_in1k.py' + +_deprecation_ = dict( + expected='vgg16bn_8xb32_in1k.py', + reference='https://github.com/open-mmlab/mmclassification/pull/508', +) diff --git a/openmmlab_test/mmclassification-speed-benchmark/configs/vgg/vgg19_b32x8_imagenet.py b/openmmlab_test/mmclassification-0.24.1/configs/vgg/vgg19_8xb32_in1k.py similarity index 100% rename from openmmlab_test/mmclassification-speed-benchmark/configs/vgg/vgg19_b32x8_imagenet.py rename to openmmlab_test/mmclassification-0.24.1/configs/vgg/vgg19_8xb32_in1k.py diff --git a/openmmlab_test/mmclassification-0.24.1/configs/vgg/vgg19_b32x8_imagenet.py b/openmmlab_test/mmclassification-0.24.1/configs/vgg/vgg19_b32x8_imagenet.py new file mode 100644 index 00000000..e8b8b25a --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/vgg/vgg19_b32x8_imagenet.py @@ -0,0 +1,6 @@ +_base_ = 'vgg19_8xb32_in1k.py' + +_deprecation_ = dict( + expected='vgg19_8xb32_in1k.py', + reference='https://github.com/open-mmlab/mmclassification/pull/508', +) diff --git a/openmmlab_test/mmclassification-speed-benchmark/configs/vgg/vgg19bn_b32x8_imagenet.py b/openmmlab_test/mmclassification-0.24.1/configs/vgg/vgg19bn_8xb32_in1k.py similarity index 100% rename from openmmlab_test/mmclassification-speed-benchmark/configs/vgg/vgg19bn_b32x8_imagenet.py rename to openmmlab_test/mmclassification-0.24.1/configs/vgg/vgg19bn_8xb32_in1k.py diff --git a/openmmlab_test/mmclassification-0.24.1/configs/vgg/vgg19bn_b32x8_imagenet.py b/openmmlab_test/mmclassification-0.24.1/configs/vgg/vgg19bn_b32x8_imagenet.py new file mode 100644 index 00000000..f615496c --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/vgg/vgg19bn_b32x8_imagenet.py @@ -0,0 +1,6 @@ +_base_ = 'vgg19bn_8xb32_in1k.py' + +_deprecation_ = dict( + expected='vgg19bn_8xb32_in1k.py', + reference='https://github.com/open-mmlab/mmclassification/pull/508', +) diff --git a/openmmlab_test/mmclassification-0.24.1/configs/vision_transformer/README.md b/openmmlab_test/mmclassification-0.24.1/configs/vision_transformer/README.md new file mode 100644 index 00000000..c35c242e --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/vision_transformer/README.md @@ -0,0 +1,57 @@ +# Vision Transformer + +> [An Image is Worth 16x16 Words: Transformers for Image Recognition at Scale](https://arxiv.org/pdf/2010.11929.pdf) + + + +## Abstract + +While the Transformer architecture has become the de-facto standard for natural language processing tasks, its applications to computer vision remain limited. In vision, attention is either applied in conjunction with convolutional networks, or used to replace certain components of convolutional networks while keeping their overall structure in place. We show that this reliance on CNNs is not necessary and a pure transformer applied directly to sequences of image patches can perform very well on image classification tasks. When pre-trained on large amounts of data and transferred to multiple mid-sized or small image recognition benchmarks (ImageNet, CIFAR-100, VTAB, etc.), Vision Transformer (ViT) attains excellent results compared to state-of-the-art convolutional networks while requiring substantially fewer computational resources to train. + +
+ +
+ +## Results and models + +The training step of Vision Transformers is divided into two steps. The first +step is training the model on a large dataset, like ImageNet-21k, and get the +pre-trained model. And the second step is training the model on the target +dataset, like ImageNet-1k, and get the fine-tuned model. Here, we provide both +pre-trained models and fine-tuned models. + +### ImageNet-21k + +The pre-trained models on ImageNet-21k are used to fine-tune, and therefore don't have evaluation results. + +| Model | resolution | Params(M) | Flops(G) | Download | +| :-------: | :--------: | :-------: | :------: | :--------------------------------------------------------------------------------------------------------------------------------------: | +| ViT-B16\* | 224x224 | 86.86 | 33.03 | [model](https://download.openmmlab.com/mmclassification/v0/vit/pretrain/vit-base-p16_3rdparty_pt-64xb64_in1k-224_20210928-02284250.pth) | +| ViT-B32\* | 224x224 | 88.30 | 8.56 | [model](https://download.openmmlab.com/mmclassification/v0/vit/pretrain/vit-base-p32_3rdparty_pt-64xb64_in1k-224_20210928-eee25dd4.pth) | +| ViT-L16\* | 224x224 | 304.72 | 116.68 | [model](https://download.openmmlab.com/mmclassification/v0/vit/pretrain/vit-large-p16_3rdparty_pt-64xb64_in1k-224_20210928-0001f9a1.pth) | + +*Models with * are converted from the [official repo](https://github.com/google-research/vision_transformer#available-vit-models).* + +### ImageNet-1k + +| Model | Pretrain | resolution | Params(M) | Flops(G) | Top-1 (%) | Top-5 (%) | Config | Download | +| :-----------: | :----------: | :--------: | :-------: | :------: | :-------: | :-------: | :--------------------------------------------------------------: | :----------------------------------------------------------------: | +| ViT-B16\* | ImageNet-21k | 384x384 | 86.86 | 33.03 | 85.43 | 97.77 | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/vision_transformer/vit-base-p16_ft-64xb64_in1k-384.py) | [model](https://download.openmmlab.com/mmclassification/v0/vit/finetune/vit-base-p16_in21k-pre-3rdparty_ft-64xb64_in1k-384_20210928-98e8652b.pth) | +| ViT-B32\* | ImageNet-21k | 384x384 | 88.30 | 8.56 | 84.01 | 97.08 | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/vision_transformer/vit-base-p32_ft-64xb64_in1k-384.py) | [model](https://download.openmmlab.com/mmclassification/v0/vit/finetune/vit-base-p32_in21k-pre-3rdparty_ft-64xb64_in1k-384_20210928-9cea8599.pth) | +| ViT-L16\* | ImageNet-21k | 384x384 | 304.72 | 116.68 | 85.63 | 97.63 | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/vision_transformer/vit-large-p16_ft-64xb64_in1k-384.py) | [model](https://download.openmmlab.com/mmclassification/v0/vit/finetune/vit-large-p16_in21k-pre-3rdparty_ft-64xb64_in1k-384_20210928-b20ba619.pth) | +| ViT-B16 (IPU) | ImageNet-21k | 224x224 | 86.86 | 33.03 | 81.22 | 95.56 | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/vision_transformer/vit-base-p16_ft-4xb544-ipu_in1k.py) | [model](https://download.openmmlab.com/mmclassification/v0/vit/vit-base-p16_ft-4xb544-ipu_in1k_20220603-c215811a.pth) \| [log](https://download.openmmlab.com/mmclassification/v0/vit/vit-base-p16_ft-4xb544-ipu_in1k.log) | + +*Models with * are converted from the [official repo](https://github.com/google-research/vision_transformer#available-vit-models). The config files of these models are only for validation. We don't ensure these config files' training accuracy and welcome you to contribute your reproduction results.* + +## Citation + +``` +@inproceedings{ + dosovitskiy2021an, + title={An Image is Worth 16x16 Words: Transformers for Image Recognition at Scale}, + author={Alexey Dosovitskiy and Lucas Beyer and Alexander Kolesnikov and Dirk Weissenborn and Xiaohua Zhai and Thomas Unterthiner and Mostafa Dehghani and Matthias Minderer and Georg Heigold and Sylvain Gelly and Jakob Uszkoreit and Neil Houlsby}, + booktitle={International Conference on Learning Representations}, + year={2021}, + url={https://openreview.net/forum?id=YicbFdNTTy} +} +``` diff --git a/openmmlab_test/mmclassification-0.24.1/configs/vision_transformer/metafile.yml b/openmmlab_test/mmclassification-0.24.1/configs/vision_transformer/metafile.yml new file mode 100644 index 00000000..9ac80469 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/vision_transformer/metafile.yml @@ -0,0 +1,79 @@ +Collections: + - Name: Vision Transformer + Metadata: + Architecture: + - Attention Dropout + - Convolution + - Dense Connections + - Dropout + - GELU + - Layer Normalization + - Multi-Head Attention + - Scaled Dot-Product Attention + - Tanh Activation + Paper: + URL: https://arxiv.org/pdf/2010.11929.pdf + Title: 'An Image is Worth 16x16 Words: Transformers for Image Recognition at Scale' + README: configs/vision_transformer/README.md + Code: + URL: https://github.com/open-mmlab/mmclassification/blob/v0.17.0/mmcls/models/backbones/vision_transformer.py + Version: v0.17.0 + +Models: + - Name: vit-base-p16_in21k-pre-3rdparty_ft-64xb64_in1k-384 + In Collection: Vision Transformer + Metadata: + FLOPs: 33030000000 + Parameters: 86860000 + Training Data: + - ImageNet-21k + - ImageNet-1k + Results: + - Dataset: ImageNet-1k + Task: Image Classification + Metrics: + Top 1 Accuracy: 85.43 + Top 5 Accuracy: 97.77 + Weights: https://download.openmmlab.com/mmclassification/v0/vit/finetune/vit-base-p16_in21k-pre-3rdparty_ft-64xb64_in1k-384_20210928-98e8652b.pth + Converted From: + Weights: https://console.cloud.google.com/storage/browser/_details/vit_models/augreg/B_16-i21k-300ep-lr_0.001-aug_medium1-wd_0.1-do_0.0-sd_0.0--imagenet2012-steps_20k-lr_0.03-res_384.npz + Code: https://github.com/google-research/vision_transformer/blob/88a52f8892c80c10de99194990a517b4d80485fd/vit_jax/models.py#L208 + Config: configs/vision_transformer/vit-base-p16_ft-64xb64_in1k-384.py + - Name: vit-base-p32_in21k-pre-3rdparty_ft-64xb64_in1k-384 + In Collection: Vision Transformer + Metadata: + FLOPs: 8560000000 + Parameters: 88300000 + Training Data: + - ImageNet-21k + - ImageNet-1k + Results: + - Dataset: ImageNet-1k + Task: Image Classification + Metrics: + Top 1 Accuracy: 84.01 + Top 5 Accuracy: 97.08 + Weights: https://download.openmmlab.com/mmclassification/v0/vit/finetune/vit-base-p32_in21k-pre-3rdparty_ft-64xb64_in1k-384_20210928-9cea8599.pth + Converted From: + Weights: https://console.cloud.google.com/storage/browser/_details/vit_models/augreg/B_32-i21k-300ep-lr_0.001-aug_light1-wd_0.1-do_0.0-sd_0.0--imagenet2012-steps_20k-lr_0.01-res_384.npz + Code: https://github.com/google-research/vision_transformer/blob/88a52f8892c80c10de99194990a517b4d80485fd/vit_jax/models.py#L208 + Config: configs/vision_transformer/vit-base-p32_ft-64xb64_in1k-384.py + - Name: vit-large-p16_in21k-pre-3rdparty_ft-64xb64_in1k-384 + In Collection: Vision Transformer + Metadata: + FLOPs: 116680000000 + Parameters: 304720000 + Training Data: + - ImageNet-21k + - ImageNet-1k + Results: + - Dataset: ImageNet-1k + Task: Image Classification + Metrics: + Top 1 Accuracy: 85.63 + Top 5 Accuracy: 97.63 + Weights: https://download.openmmlab.com/mmclassification/v0/vit/finetune/vit-large-p16_in21k-pre-3rdparty_ft-64xb64_in1k-384_20210928-b20ba619.pth + Converted From: + Weights: https://console.cloud.google.com/storage/browser/_details/vit_models/augreg/L_16-i21k-300ep-lr_0.001-aug_strong1-wd_0.1-do_0.0-sd_0.0--imagenet2012-steps_20k-lr_0.01-res_384.npz + Code: https://github.com/google-research/vision_transformer/blob/88a52f8892c80c10de99194990a517b4d80485fd/vit_jax/models.py#L208 + Config: configs/vision_transformer/vit-large-p16_ft-64xb64_in1k-384.py diff --git a/openmmlab_test/mmclassification-0.24.1/configs/vision_transformer/vit-base-p16_ft-4xb544-ipu_in1k.py b/openmmlab_test/mmclassification-0.24.1/configs/vision_transformer/vit-base-p16_ft-4xb544-ipu_in1k.py new file mode 100644 index 00000000..097d8d6b --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/vision_transformer/vit-base-p16_ft-4xb544-ipu_in1k.py @@ -0,0 +1,115 @@ +_base_ = [ + '../_base_/models/vit-base-p16.py', + '../_base_/datasets/imagenet_bs64_pil_resize_autoaug.py', + '../_base_/default_runtime.py' +] + +# specific to vit pretrain +paramwise_cfg = dict(custom_keys={ + '.cls_token': dict(decay_mult=0.0), + '.pos_embed': dict(decay_mult=0.0) +}) + +pretrained = 'https://download.openmmlab.com/mmclassification/v0/vit/pretrain/vit-base-p16_3rdparty_pt-64xb64_in1k-224_20210928-02284250.pth' # noqa + +model = dict( + head=dict( + loss=dict(type='CrossEntropyLoss', loss_weight=1.0, _delete_=True), ), + backbone=dict( + img_size=224, + init_cfg=dict( + type='Pretrained', + checkpoint=pretrained, + _delete_=True, + prefix='backbone'))) + +img_norm_cfg = dict( + mean=[127.5, 127.5, 127.5], std=[127.5, 127.5, 127.5], to_rgb=True) + +train_pipeline = [ + dict(type='LoadImageFromFile'), + dict(type='RandomResizedCrop', size=224, backend='pillow'), + dict(type='RandomFlip', flip_prob=0.5, direction='horizontal'), + dict(type='Normalize', **img_norm_cfg), + dict(type='ImageToTensor', keys=['img']), + dict(type='ToTensor', keys=['gt_label']), + dict(type='ToHalf', keys=['img']), + dict(type='Collect', keys=['img', 'gt_label']) +] + +test_pipeline = [ + dict(type='LoadImageFromFile'), + dict(type='Resize', size=(224, -1), backend='pillow'), + dict(type='CenterCrop', crop_size=224), + dict(type='Normalize', **img_norm_cfg), + dict(type='ImageToTensor', keys=['img']), + dict(type='ToHalf', keys=['img']), + dict(type='Collect', keys=['img']) +] + +# change batch size +data = dict( + samples_per_gpu=17, + workers_per_gpu=16, + drop_last=True, + train=dict(pipeline=train_pipeline), + train_dataloader=dict(mode='async'), + val=dict(pipeline=test_pipeline, ), + val_dataloader=dict(samples_per_gpu=4, workers_per_gpu=1), + test=dict(pipeline=test_pipeline), + test_dataloader=dict(samples_per_gpu=4, workers_per_gpu=1)) + +# remove clip-norm +optimizer_config = dict() + +# optimizer +optimizer = dict( + type='SGD', + lr=0.08, + weight_decay=1e-5, + momentum=0.9, + paramwise_cfg=paramwise_cfg, +) + +# learning policy +lr_config = dict( + policy='CosineAnnealing', + min_lr=0, + warmup='linear', + warmup_iters=800, + warmup_ratio=0.02, +) + +# ipu cfg +# model partition config +ipu_model_cfg = dict( + train_split_edges=[ + dict(layer_to_call='backbone.patch_embed', ipu_id=0), + dict(layer_to_call='backbone.layers.3', ipu_id=1), + dict(layer_to_call='backbone.layers.6', ipu_id=2), + dict(layer_to_call='backbone.layers.9', ipu_id=3) + ], + train_ckpt_nodes=['backbone.layers.{}'.format(i) for i in range(12)]) + +# device config +options_cfg = dict( + randomSeed=42, + partialsType='half', + train_cfg=dict( + executionStrategy='SameAsIpu', + Training=dict(gradientAccumulation=32), + availableMemoryProportion=[0.3, 0.3, 0.3, 0.3], + ), + eval_cfg=dict(deviceIterations=1, ), +) + +# add model partition config and device config to runner +runner = dict( + type='IterBasedRunner', + ipu_model_cfg=ipu_model_cfg, + options_cfg=options_cfg, + max_iters=5000) + +checkpoint_config = dict(interval=1000) + +fp16 = dict(loss_scale=256.0, velocity_accum_type='half', accum_type='half') diff --git a/openmmlab_test/mmclassification-0.24.1/configs/vision_transformer/vit-base-p16_ft-64xb64_in1k-384.py b/openmmlab_test/mmclassification-0.24.1/configs/vision_transformer/vit-base-p16_ft-64xb64_in1k-384.py new file mode 100644 index 00000000..cb42d0d8 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/vision_transformer/vit-base-p16_ft-64xb64_in1k-384.py @@ -0,0 +1,36 @@ +_base_ = [ + '../_base_/models/vit-base-p16.py', + '../_base_/datasets/imagenet_bs64_pil_resize_autoaug.py', + '../_base_/schedules/imagenet_bs4096_AdamW.py', + '../_base_/default_runtime.py' +] + +model = dict(backbone=dict(img_size=384)) + +img_norm_cfg = dict( + mean=[127.5, 127.5, 127.5], std=[127.5, 127.5, 127.5], to_rgb=True) + +train_pipeline = [ + dict(type='LoadImageFromFile'), + dict(type='RandomResizedCrop', size=384, backend='pillow'), + dict(type='RandomFlip', flip_prob=0.5, direction='horizontal'), + dict(type='Normalize', **img_norm_cfg), + dict(type='ImageToTensor', keys=['img']), + dict(type='ToTensor', keys=['gt_label']), + dict(type='Collect', keys=['img', 'gt_label']) +] + +test_pipeline = [ + dict(type='LoadImageFromFile'), + dict(type='Resize', size=(384, -1), backend='pillow'), + dict(type='CenterCrop', crop_size=384), + dict(type='Normalize', **img_norm_cfg), + dict(type='ImageToTensor', keys=['img']), + dict(type='Collect', keys=['img']) +] + +data = dict( + train=dict(pipeline=train_pipeline), + val=dict(pipeline=test_pipeline), + test=dict(pipeline=test_pipeline), +) diff --git a/openmmlab_test/mmclassification-0.24.1/configs/vision_transformer/vit-base-p16_pt-64xb64_in1k-224.py b/openmmlab_test/mmclassification-0.24.1/configs/vision_transformer/vit-base-p16_pt-64xb64_in1k-224.py new file mode 100644 index 00000000..79c323b1 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/vision_transformer/vit-base-p16_pt-64xb64_in1k-224.py @@ -0,0 +1,12 @@ +_base_ = [ + '../_base_/models/vit-base-p16.py', + '../_base_/datasets/imagenet_bs64_pil_resize_autoaug.py', + '../_base_/schedules/imagenet_bs4096_AdamW.py', + '../_base_/default_runtime.py' +] + +model = dict( + head=dict(hidden_dim=3072), + train_cfg=dict( + augments=dict(type='BatchMixup', alpha=0.2, num_classes=1000, + prob=1.))) diff --git a/openmmlab_test/mmclassification-0.24.1/configs/vision_transformer/vit-base-p32_ft-64xb64_in1k-384.py b/openmmlab_test/mmclassification-0.24.1/configs/vision_transformer/vit-base-p32_ft-64xb64_in1k-384.py new file mode 100644 index 00000000..0386fef1 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/vision_transformer/vit-base-p32_ft-64xb64_in1k-384.py @@ -0,0 +1,36 @@ +_base_ = [ + '../_base_/models/vit-base-p32.py', + '../_base_/datasets/imagenet_bs64_pil_resize_autoaug.py', + '../_base_/schedules/imagenet_bs4096_AdamW.py', + '../_base_/default_runtime.py' +] + +model = dict(backbone=dict(img_size=384)) + +img_norm_cfg = dict( + mean=[127.5, 127.5, 127.5], std=[127.5, 127.5, 127.5], to_rgb=True) + +train_pipeline = [ + dict(type='LoadImageFromFile'), + dict(type='RandomResizedCrop', size=384, backend='pillow'), + dict(type='RandomFlip', flip_prob=0.5, direction='horizontal'), + dict(type='Normalize', **img_norm_cfg), + dict(type='ImageToTensor', keys=['img']), + dict(type='ToTensor', keys=['gt_label']), + dict(type='Collect', keys=['img', 'gt_label']) +] + +test_pipeline = [ + dict(type='LoadImageFromFile'), + dict(type='Resize', size=(384, -1), backend='pillow'), + dict(type='CenterCrop', crop_size=384), + dict(type='Normalize', **img_norm_cfg), + dict(type='ImageToTensor', keys=['img']), + dict(type='Collect', keys=['img']) +] + +data = dict( + train=dict(pipeline=train_pipeline), + val=dict(pipeline=test_pipeline), + test=dict(pipeline=test_pipeline), +) diff --git a/openmmlab_test/mmclassification-0.24.1/configs/vision_transformer/vit-base-p32_pt-64xb64_in1k-224.py b/openmmlab_test/mmclassification-0.24.1/configs/vision_transformer/vit-base-p32_pt-64xb64_in1k-224.py new file mode 100644 index 00000000..a477e211 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/vision_transformer/vit-base-p32_pt-64xb64_in1k-224.py @@ -0,0 +1,12 @@ +_base_ = [ + '../_base_/models/vit-base-p32.py', + '../_base_/datasets/imagenet_bs64_pil_resize_autoaug.py', + '../_base_/schedules/imagenet_bs4096_AdamW.py', + '../_base_/default_runtime.py' +] + +model = dict( + head=dict(hidden_dim=3072), + train_cfg=dict( + augments=dict(type='BatchMixup', alpha=0.2, num_classes=1000, + prob=1.))) diff --git a/openmmlab_test/mmclassification-0.24.1/configs/vision_transformer/vit-large-p16_ft-64xb64_in1k-384.py b/openmmlab_test/mmclassification-0.24.1/configs/vision_transformer/vit-large-p16_ft-64xb64_in1k-384.py new file mode 100644 index 00000000..5be99188 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/vision_transformer/vit-large-p16_ft-64xb64_in1k-384.py @@ -0,0 +1,36 @@ +_base_ = [ + '../_base_/models/vit-large-p16.py', + '../_base_/datasets/imagenet_bs64_pil_resize_autoaug.py', + '../_base_/schedules/imagenet_bs4096_AdamW.py', + '../_base_/default_runtime.py' +] + +model = dict(backbone=dict(img_size=384)) + +img_norm_cfg = dict( + mean=[127.5, 127.5, 127.5], std=[127.5, 127.5, 127.5], to_rgb=True) + +train_pipeline = [ + dict(type='LoadImageFromFile'), + dict(type='RandomResizedCrop', size=384, backend='pillow'), + dict(type='RandomFlip', flip_prob=0.5, direction='horizontal'), + dict(type='Normalize', **img_norm_cfg), + dict(type='ImageToTensor', keys=['img']), + dict(type='ToTensor', keys=['gt_label']), + dict(type='Collect', keys=['img', 'gt_label']) +] + +test_pipeline = [ + dict(type='LoadImageFromFile'), + dict(type='Resize', size=(384, -1), backend='pillow'), + dict(type='CenterCrop', crop_size=384), + dict(type='Normalize', **img_norm_cfg), + dict(type='ImageToTensor', keys=['img']), + dict(type='Collect', keys=['img']) +] + +data = dict( + train=dict(pipeline=train_pipeline), + val=dict(pipeline=test_pipeline), + test=dict(pipeline=test_pipeline), +) diff --git a/openmmlab_test/mmclassification-0.24.1/configs/vision_transformer/vit-large-p16_pt-64xb64_in1k-224.py b/openmmlab_test/mmclassification-0.24.1/configs/vision_transformer/vit-large-p16_pt-64xb64_in1k-224.py new file mode 100644 index 00000000..5cf7a7d3 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/vision_transformer/vit-large-p16_pt-64xb64_in1k-224.py @@ -0,0 +1,12 @@ +_base_ = [ + '../_base_/models/vit-large-p16.py', + '../_base_/datasets/imagenet_bs64_pil_resize_autoaug.py', + '../_base_/schedules/imagenet_bs4096_AdamW.py', + '../_base_/default_runtime.py' +] + +model = dict( + head=dict(hidden_dim=3072), + train_cfg=dict( + augments=dict(type='BatchMixup', alpha=0.2, num_classes=1000, + prob=1.))) diff --git a/openmmlab_test/mmclassification-0.24.1/configs/vision_transformer/vit-large-p32_ft-64xb64_in1k-384.py b/openmmlab_test/mmclassification-0.24.1/configs/vision_transformer/vit-large-p32_ft-64xb64_in1k-384.py new file mode 100644 index 00000000..60506b02 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/vision_transformer/vit-large-p32_ft-64xb64_in1k-384.py @@ -0,0 +1,37 @@ +# Refer to pytorch-image-models +_base_ = [ + '../_base_/models/vit-large-p32.py', + '../_base_/datasets/imagenet_bs64_pil_resize_autoaug.py', + '../_base_/schedules/imagenet_bs4096_AdamW.py', + '../_base_/default_runtime.py' +] + +model = dict(backbone=dict(img_size=384)) + +img_norm_cfg = dict( + mean=[127.5, 127.5, 127.5], std=[127.5, 127.5, 127.5], to_rgb=True) + +train_pipeline = [ + dict(type='LoadImageFromFile'), + dict(type='RandomResizedCrop', size=384, backend='pillow'), + dict(type='RandomFlip', flip_prob=0.5, direction='horizontal'), + dict(type='Normalize', **img_norm_cfg), + dict(type='ImageToTensor', keys=['img']), + dict(type='ToTensor', keys=['gt_label']), + dict(type='Collect', keys=['img', 'gt_label']) +] + +test_pipeline = [ + dict(type='LoadImageFromFile'), + dict(type='Resize', size=(384, -1), backend='pillow'), + dict(type='CenterCrop', crop_size=384), + dict(type='Normalize', **img_norm_cfg), + dict(type='ImageToTensor', keys=['img']), + dict(type='Collect', keys=['img']) +] + +data = dict( + train=dict(pipeline=train_pipeline), + val=dict(pipeline=test_pipeline), + test=dict(pipeline=test_pipeline), +) diff --git a/openmmlab_test/mmclassification-0.24.1/configs/vision_transformer/vit-large-p32_pt-64xb64_in1k-224.py b/openmmlab_test/mmclassification-0.24.1/configs/vision_transformer/vit-large-p32_pt-64xb64_in1k-224.py new file mode 100644 index 00000000..773ade87 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/vision_transformer/vit-large-p32_pt-64xb64_in1k-224.py @@ -0,0 +1,12 @@ +_base_ = [ + '../_base_/models/vit-large-p32.py', + '../_base_/datasets/imagenet_bs64_pil_resize_autoaug.py', + '../_base_/schedules/imagenet_bs4096_AdamW.py', + '../_base_/default_runtime.py' +] + +model = dict( + head=dict(hidden_dim=3072), + train_cfg=dict( + augments=dict(type='BatchMixup', alpha=0.2, num_classes=1000, + prob=1.))) diff --git a/openmmlab_test/mmclassification-0.24.1/configs/wrn/README.md b/openmmlab_test/mmclassification-0.24.1/configs/wrn/README.md new file mode 100644 index 00000000..b036caaf --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/wrn/README.md @@ -0,0 +1,35 @@ +# Wide-ResNet + +> [Wide Residual Networks](https://arxiv.org/abs/1605.07146) + + + +## Abstract + +Deep residual networks were shown to be able to scale up to thousands of layers and still have improving performance. However, each fraction of a percent of improved accuracy costs nearly doubling the number of layers, and so training very deep residual networks has a problem of diminishing feature reuse, which makes these networks very slow to train. To tackle these problems, in this paper we conduct a detailed experimental study on the architecture of ResNet blocks, based on which we propose a novel architecture where we decrease depth and increase width of residual networks. We call the resulting network structures wide residual networks (WRNs) and show that these are far superior over their commonly used thin and very deep counterparts. For example, we demonstrate that even a simple 16-layer-deep wide residual network outperforms in accuracy and efficiency all previous deep residual networks, including thousand-layer-deep networks, achieving new state-of-the-art results on CIFAR, SVHN, COCO, and significant improvements on ImageNet. + +
+ +
+ +## Results and models + +### ImageNet-1k + +| Model | Params(M) | Flops(G) | Top-1 (%) | Top-5 (%) | Config | Download | +| :-------------: | :-------: | :------: | :-------: | :-------: | :------------------------------------------------------------------------: | :--------------------------------------------------------------------------: | +| WRN-50\* | 68.88 | 11.44 | 78.48 | 94.08 | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/wrn/wide-resnet50_8xb32_in1k.py) | [model](https://download.openmmlab.com/mmclassification/v0/wrn/wide-resnet50_3rdparty_8xb32_in1k_20220304-66678344.pth) | +| WRN-101\* | 126.89 | 22.81 | 78.84 | 94.28 | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/wrn/wide-resnet101_8xb32_in1k.py) | [model](https://download.openmmlab.com/mmclassification/v0/wrn/wide-resnet101_3rdparty_8xb32_in1k_20220304-8d5f9d61.pth) | +| WRN-50 (timm)\* | 68.88 | 11.44 | 81.45 | 95.53 | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/wrn/wide-resnet50_timm_8xb32_in1k.py) | [model](https://download.openmmlab.com/mmclassification/v0/wrn/wide-resnet50_3rdparty-timm_8xb32_in1k_20220304-83ae4399.pth) | + +*Models with * are converted from the [TorchVision](https://github.com/pytorch/vision/blob/main/torchvision/models/resnet.py) and [TIMM](https://github.com/rwightman/pytorch-image-models/blob/master). The config files of these models are only for inference. We don't ensure these config files' training accuracy and welcome you to contribute your reproduction results.* + +## Citation + +```bibtex +@INPROCEEDINGS{Zagoruyko2016WRN, + author = {Sergey Zagoruyko and Nikos Komodakis}, + title = {Wide Residual Networks}, + booktitle = {BMVC}, + year = {2016}} +``` diff --git a/openmmlab_test/mmclassification-0.24.1/configs/wrn/metafile.yml b/openmmlab_test/mmclassification-0.24.1/configs/wrn/metafile.yml new file mode 100644 index 00000000..cc37eefd --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/wrn/metafile.yml @@ -0,0 +1,77 @@ +Collections: + - Name: Wide-ResNet + Metadata: + Training Data: ImageNet-1k + Training Techniques: + - SGD with Momentum + - Weight Decay + Training Resources: 8x V100 GPUs + Epochs: 100 + Batch Size: 256 + Architecture: + - 1x1 Convolution + - Batch Normalization + - Convolution + - Global Average Pooling + - Max Pooling + - ReLU + - Residual Connection + - Softmax + - Wide Residual Block + Paper: + URL: https://arxiv.org/abs/1605.07146 + Title: "Wide Residual Networks" + README: configs/wrn/README.md + Code: + URL: https://github.com/open-mmlab/mmclassification/blob/v0.20.1/mmcls/models/backbones/resnet.py#L383 + Version: v0.20.1 + +Models: + - Name: wide-resnet50_3rdparty_8xb32_in1k + Metadata: + FLOPs: 11440000000 # 11.44G + Parameters: 68880000 # 68.88M + In Collection: Wide-ResNet + Results: + - Task: Image Classification + Dataset: ImageNet-1k + Metrics: + Top 1 Accuracy: 78.48 + Top 5 Accuracy: 94.08 + Weights: https://download.openmmlab.com/mmclassification/v0/wrn/wide-resnet50_3rdparty_8xb32_in1k_20220304-66678344.pth + Config: configs/wrn/wide-resnet50_8xb32_in1k.py + Converted From: + Weights: https://download.pytorch.org/models/wide_resnet50_2-95faca4d.pth + Code: https://github.com/pytorch/vision/blob/main/torchvision/models/resnet.py + - Name: wide-resnet101_3rdparty_8xb32_in1k + Metadata: + FLOPs: 22810000000 # 22.81G + Parameters: 126890000 # 126.89M + In Collection: Wide-ResNet + Results: + - Task: Image Classification + Dataset: ImageNet-1k + Metrics: + Top 1 Accuracy: 78.84 + Top 5 Accuracy: 94.28 + Weights: https://download.openmmlab.com/mmclassification/v0/wrn/wide-resnet101_3rdparty_8xb32_in1k_20220304-8d5f9d61.pth + Config: configs/wrn/wide-resnet101_8xb32_in1k.py + Converted From: + Weights: https://download.pytorch.org/models/wide_resnet101_2-32ee1156.pth + Code: https://github.com/pytorch/vision/blob/main/torchvision/models/resnet.py + - Name: wide-resnet50_3rdparty-timm_8xb32_in1k + Metadata: + FLOPs: 11440000000 # 11.44G + Parameters: 68880000 # 68.88M + In Collection: Wide-ResNet + Results: + - Task: Image Classification + Dataset: ImageNet-1k + Metrics: + Top 1 Accuracy: 81.45 + Top 5 Accuracy: 95.53 + Weights: https://download.openmmlab.com/mmclassification/v0/wrn/wide-resnet50_3rdparty-timm_8xb32_in1k_20220304-83ae4399.pth + Config: configs/wrn/wide-resnet50_timm_8xb32_in1k.py + Converted From: + Weights: https://github.com/rwightman/pytorch-image-models/releases/download/v0.1-weights/wide_resnet50_racm-8234f177.pth + Code: https://github.com/rwightman/pytorch-image-models/blob/master/timm/models/resnet.py diff --git a/openmmlab_test/mmclassification-0.24.1/configs/wrn/wide-resnet101_8xb32_in1k.py b/openmmlab_test/mmclassification-0.24.1/configs/wrn/wide-resnet101_8xb32_in1k.py new file mode 100644 index 00000000..d1bf5e5e --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/wrn/wide-resnet101_8xb32_in1k.py @@ -0,0 +1,7 @@ +_base_ = [ + '../_base_/models/wide-resnet50.py', + '../_base_/datasets/imagenet_bs32_pil_resize.py', + '../_base_/schedules/imagenet_bs256.py', '../_base_/default_runtime.py' +] + +model = dict(backbone=dict(depth=101)) diff --git a/openmmlab_test/mmclassification-0.24.1/configs/wrn/wide-resnet50_8xb32_in1k.py b/openmmlab_test/mmclassification-0.24.1/configs/wrn/wide-resnet50_8xb32_in1k.py new file mode 100644 index 00000000..edf6a051 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/wrn/wide-resnet50_8xb32_in1k.py @@ -0,0 +1,5 @@ +_base_ = [ + '../_base_/models/wide-resnet50.py', + '../_base_/datasets/imagenet_bs32_pil_resize.py', + '../_base_/schedules/imagenet_bs256.py', '../_base_/default_runtime.py' +] diff --git a/openmmlab_test/mmclassification-0.24.1/configs/wrn/wide-resnet50_timm_8xb32_in1k.py b/openmmlab_test/mmclassification-0.24.1/configs/wrn/wide-resnet50_timm_8xb32_in1k.py new file mode 100644 index 00000000..8dca8f37 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/configs/wrn/wide-resnet50_timm_8xb32_in1k.py @@ -0,0 +1,5 @@ +_base_ = [ + '../_base_/models/wide-resnet50.py', + '../_base_/datasets/imagenet_bs32_pil_bicubic.py', + '../_base_/schedules/imagenet_bs256.py', '../_base_/default_runtime.py' +] diff --git a/openmmlab_test/mmclassification-0.24.1/demo/bird.JPEG b/openmmlab_test/mmclassification-0.24.1/demo/bird.JPEG new file mode 100644 index 0000000000000000000000000000000000000000..9c132a099e87d1c3c1a76dfd9201b03801301eab GIT binary patch literal 74237 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

od+8w<1jca(}YX@Gy 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

r6e7~zBo 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

r|8+n9^Iz}7 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

s`W+ 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 z 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

yk! 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≤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 CL%$=X~eKw+$TsZ=hO%DIXTkI+UB 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

VJiTEF<63G+3k$^G$pJSTJ3O4+ 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

BJpK3suSP0z~$$1h5Qo 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 z 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

rUEP(2TQsG z8?PD^TvfjL166M&e#cYds)ERQBA_B@p1l2t3JE^0c>RITe?)Q33zQI8Rj)pv?)@LA ze#PgAqbkCyUb0xPf5($&ZxpT`l~yZUN&QtLup|@ojIWjML4j8N+dmbwo)S3ExDDwh zl?Z5xvEgQ2nARIEy0u&kPBV}GlD9qdlGmx4&flrOV^y> zO0rjyZIXdTUlNaX#Fb>Tp4Ib&@~Yu|p42`^?VI;1qy|g&L5kc3R06Db{JbAO{(+DD zOmb!6TUjRG31KB&kTR9}E6HLBvLve}bz*|9yWF=c*YDuw-3KZIm(7!j;7W~PPoNb) zu2$Krhk3*nk@cvk5{0GDQ1ZAQrB8^e%2%kVC8!uxHT+xh@sp=Avimzce<_HP;`R@y zeJZ-=g>h9vEa5bP~7xZy&L14KPR~^y6 zLu>SKb5wwm!gi^#lI)e>N($c_>#`)9CBrr>8aD#de;$DG{l3MhK7BCun{O~{$PlcW zG8yY<&%){%)3IjO46K|v4KqfMz=Db65xQe5q62*4w`m=A@wX+w3iaKh#=??pmJBp1 zxZ0l>i_}D^y^2y-5K8x;AWLwyecf6%p4P)>ix<4NY(acXwCWOEzIYLQxlTxcKZ14= zZm}^qcIcoA!It1FA|x1x($aAD)M=bQcTu58kkwdgCBPC;$yBmf0w;lzz)Btqm;_PM zb$IB&VH`|9gac^@)p|12f^0{y*0{~a44G_GGGC2olA#-3^jF6I4$MlN5n-ws%vFCL>8m= zSpoMyAN3M7xu~toR5e(yYIE@J`6K*BVEyM^3GlHL|9LOq%EZT)xA4cCOZfBMaeR1@ zi09S5c=mKPo>whG-P7qP$@v-gu71Vnirl+Bk#&>6B7`nobYg>!AUSP|lPC1VlpaTq z>T%?#Ee;*A#o=R8I8IQVk#NLu!s_@rN1QxwkJA_IaPopZ&RllJr5mkq{Z4x}z&hf_ zjrO>GyFC%zk$>BEct{xK5?DnAZBSAu(^mYh+M&3-BO6_9k@JX;OFOA7R!LbG0=E-N ziaYb~*#X&^t#Dtu7c)EvEMhIA6*BI)6U8q4+dJa=HG5pY>8QF4ugH)Nm$f*3NsD7= zEpYgh6%HKNC|vDMH^rWGGbE%KVPCoh()ihSr`Qlu#MB;Z#P7Ff1K%DA={AVjXNK@Z z14JbnBX&2RkFi8RkTHSv1-6GYM^LN=K~kd?Vu_tW8a`(O{{S0!`)aUthdDNHGs0$X z0&6)@wUWSCLr|?xw#DW&2Y4TLg5M!Wc<9LmZ+7M@pby0k;U`wnH)nHSMEjC3< zp}G~;@$tHFD{P3=5LdSF+r#(YBVB*C*qP*n;52t)%7egigKsL|Gue*NvO@s(HSCBJ zB9A&F`j|6fPdFp&fDQrsGzjJw7m`9%?zVt;k{JThH3;Vy8hO+nVTWxInod}8oxmin zyGMh_WSzQ?QsMzu95~eh=_lIY$k~oKc%}nVPqjnZnfBPvX%az~aL^q|hdqg}u1G)i z4N{Kw$FAh>39N6hc}EY-U(yyM#yFtwcY3t#q=loa5p49I!&>`qSXzDxGvm)-ZrBVO zQ!8kUZD4Akfl)Jam>8K7P$n=jYX(E(ri4|)@C<^f#;!uiS_!fwYbD^4!gd*+p)p#w zZi~)cx}kfoz8LV!Fif2_7t`jg9py&8f3UI-2ILrh!*689w_68_DX;yxT=&cLB?~!;^l`w6{4~WD^ylWYOQ1{xT>swgIc~ua3%Ayo)o%E z4VD0_g21UJZr*(SQ^87*)rc!8E`QB!zuB-8+-wFI63OR`xn-zmhE*VN$|-$#J;QVQM)tQY)V zUJ;v(z<@}oovKZwR^{A|Qtp*U4=@V7_PAJwBQVd!C zKj#|;CVj^f(g##jze9P|J06JnH?JhHp1$HfKj%rY2BrMpD0ozg+qdqi6ZFYr$B~wt zf=z4IVo?9@@l}^DXxX9#bXHnu%{8zzvQ(inwSk^tZD0k9FWCTUW&sB?8^THpJ7aU` z_`B4bn!wh=40;PwXiW^EGckfQf#qp$i?)sq=-}e4x(j7khaPO`^m6w=Up91p5@>bm zh=yC_xT(yPbo~joB$Fl3l7U5s_Ufv}$daoI1zu8%HD|=nm^|a31X(kuWBIhn>c-EBA%Tbs^2fF{EBKpSrf!uJ;^W2N>Ow4>F_FmfQ{!MA zN!f$L$-8kRIZ0)(1XnW9sB{yCc<;bAHpV1_wR6XI?BrvCQ?UO|%pvI3u3Q0sA8!Qu z`KnBoWUQpyP%>JPGTZ~_52U83@BTFZ22!jpMd}g)q&xiEG!8No$8coIZaR8%Tp39clYrLtEQlF@pK+S+=Rxe|=YYYGaA39LFcPU_h> zdB#Ri70Sv9IRdM;z7{WD)wA(HXw_Hof4PG3L;>qreFYm66?pmjDPF$e@B3vbUPy8K z>vFt(Q;yd!it(Z@5A{{q3Ro|n$gj6Z;zKpmcvOW~z&$rq5k5~hz=xNK zcv0hn+NY~fUpXI@W#dtt{S$KU^~S?nU6FOY12V3(#;t1}1d1yzUvXmN&XK=!2OfhQ zaOxBhby~Us9dPWF6HcCW!6_M4{k$VioOe)h@{%J?^L3{#6KGf6arIVP+{);T+xG~! z+norWj{IA8__g%&G$fINm~>UTm=Pf zQOL;4@g%NXaOb82?%j6cyc-@6TlWd9jN5LwdCigk13Fx~WW&#($N5XvICIewr!Hu4 zt*msc24%w(oRcM?k!ilKZ{W`=S&?E7%4Pv=Y zhF>%@Gu01n{mih{ z*AQEFHp3_D_vx`Q)ef7}?XiV=^FHE$pi^!LKSR_Uv4?N6C4Ban!gseRcI@U0xkKAh zwD3vO!#ADKVR-Mi!}b(gY}>1c7m>1sSlhnOfjD!3*KVRMQI9R0ZcWe=RvKc>27Y|r zXRjT$?y|;~I1P3XX4~ThSXS^$(jhR#9>J;h2qEG^4!96g4Y1m_m+S4bCa|mtE-n1i ztofWJp`}IiNqZuSXiBw2@P5LH&-o>DzmxgJq#9x80aFAWwnFG(Yi`qu?_o~J86$AF z38GWARI3eAj=15}#m+c%vJH+ARmUz6TW4G2z*$d5Yowm^K+;iHBp+{y1E)LV;ORa{ zKJpD>_Vk5MP!FtF-yRdDIiuf?=4ju^6wdAz(AgWnO8YOEYd#^4K7qN(zo0QQg2u!e z8Y6pH7&^k#$PN~4QCn)vVP@GB21Ho%=1mo<1X)tx-Y}B8k;-66=1Pj(rMTU}!3mz8 zZT=e_J9R~`ufM|&gMLB3p9Z1-z`>Y4cMdjg+k&O5SE!pjuiChZ{~Q4biN@ zDqsbKZbN9u280H$L{Q*T`1#C7Xy6h=h4H}ZJqO!1PR8~P6X3n!SGJNTz<1+#Y+XGP zTUHE%_uA3$UOft1mJMSJ$M)6Zuw~^qY+5m%2kbdS+Ddi%oB;n#M4S(z`QGunW0AxI ze)54d>^*n{`;MJeHCX9quBdF*$!qu2Epi%%WKg%qd0MZ!2_+<}Rm>A`8L?FU>K%c_ z~Hph0;a%`1w0LBP=Q<%T@PA!K&uXZ>pQH{_P(MPm-~cp%}`mU!ac5r7KYC zuxh!zTE0%e)zBqKAn`r3h(1A9dG&Kt)Vxrjs^j}h_n;KG3#ue@)tJGOD+;CP{nh*5 zR5xN755j`19JX}jo`a3uZ-Okz7B$Y_e~_!PNzzp)tzyYw36vzu^z7M7Jm=?;X(Oi`B(@sH$tr*HLIJCgf0Nvt zBA$G6apM}Xdg2sM_WSvN>x)rChoNt;Ug+4q16&OQhNkf5RFJi4 z#UiYjKLgv>ufV~*yHtUD`kq}ldn6tE6XOsowN`}D-q;v5RD%G^Z}TPud2dGuQ6&ZL z+qZaO)v~3SHFXLW@;KtVZL7*;39yn95)`<0a2?5PNmgs`?nERf?Nym4>FN_0NeGk# zNXL#GSJ;xP^rV|m9t)#wn!P_j{12`E97tS7IN5RA!GUMJ5rqDmkpk1w9Pq^1I= z#%z^z6E@adNft{oW%9frOqNLE=o^ZS61XdYdzbwJa`a-;{%g3AN1**vXMGb+)`9I$YuFCQIn?ihi znZspw@vi;~KE67~Wry(YMJ%3IZ$n+>asq2M%JPRIH=_@7?sY@vjrO>E(E}M*J#hba zE8MV&fd z)@1_gW=0nRs~e9KopIx4dp363@$cH2uy*I))t%peD`Hlz474Yz9N8Fa!Q({>Jj`<< zu$)m??7?GQ3m$u1k)7?z*EkW>TK+Fs;`&u<+`6u3*x~L?XU6{m*2N22TqLs2ULdZ{ zTM&X)IDATgWlmsOA>}B8M%aH`kJO`Dg3Ahf(yb7^*9_r%2q>B+E?tlK!#X7J`CSLi z5wqVA(X>Nck{M#-Ef5(aH;Xnw&@OXC?6E;qk}bk_=@A^MLrA0^p;7h-2(y8AfH}7M z8)9n^f#pTDZB4hujzh%NVS?$X9YW8zAm)NQ!jJO>X%_G&QUZvPorH^bs)k_=pZyXx z@J-XfkFS^T-ERx;6g_sNa69`Q;G0Th?GtR-!Y9Q6engWG0p^#?ojK@?-~$fWnatNG z5lU*xZ71@52&hoPE&PxJA`Uwu?2se;x$SLSZ!4uKSv5cIhaVB;oovp>#)OtRB2U;M z;4r&o}K#Rb1S;q|CX~x)|ZV2xK#t1lUj!=HtArx#tiV1vnH;4ZoBSfcbm0(kk zx4`MEU2ynxYaBh>7ALO|TNm5nz&V2ITq|O$B~nj$AmvmmVygr89_fmN)E)?n>4`1g zT`+&CCx(x<#aF!y;nB(v_D<%+Ra2trA27H48!S1sGXG2g%aR9n3qu0SzzJrYnzI#c zX=x4<^JZvf@F~9h@=F*RO4drQC^Y8d=4jHy0LE-lYuF06)jPn-l2coIv~S-Lty;B# zo!t7vy(PN!?2WJc|A5}#^;6TalO|%p@+FutZx(?y9qYENQ`xJS-I0h&3`ba8psK-& zNeDu8%vMB3tVI+fEMx`3f|jubyAXccXTfLdbolR>fv}x(5x9N&U$s{g;JN(&5TAa8u)2tY=dP-3*6EuWxSIJ0cVzI;5*f+8lEA7%S-lLm@D3%luT&ws3?eG^ zSJFi&-GfgVm5eHx5=fOqNyT%%ruH=|>R#iijFD9@^-AvuCFvThRUut|(rqZ~JSLn3 zP-RsFf{fu*^Gao~vbZmIGV}3FWsF`y#(8>6$Ox(gQm=V{mF$&dv}AeRO9Jp|jjE4o z1Xm?NB!iPm-BV#j09VPE1AE+&wei>3nir$DtjeUL6AVHs;Umph%CusNw!Hs z3f)x(tE!gJdyD7XpEuGC_>ud@&o3~O+N(DNrGToT%a9o4d=0B5o_|ZeM^WKZ7iwvyT6)WOsgu2z<4XKPD1wZ@>X-SA7-?)b4?NBq#PEq>_G4&SzsdMsBp zCf3)U4Ru+AyLDE}J3H87c%L2^^Iczj)4C<54Ej-xfi-2&04$q00ZYb@$AZzLu$;eR zpJmGsvS9;(wFEm>EJI>&0OA66V#A{O*t~2Jwy#-!2L{EG) zQg+4Q)WQ8o+Z~Vaojyp22*vUJsW`N6FZM)7AzsGC3JXCbu@n{-@JAm_wQyP zxg5=k_`?t|9YbJ!Mpj@V;2r}2lZ8J5^}z?2>^Ky0!B;^>R` zB)Pqg70;Iz2v0O4%rr>YZ-<0r2Sn}C5m#CofY9P}XBf>9Vg#S?=J;f5nl*MDB$SR2 zNJsS8Nx_AmaYQuL8g@dDAii0^0iq|(j99UN-vJx=5FVuvUq*uoCz5q^-k zI$(=X;w>ay!j`zxV@skHHpQ89YJnZZ*mi#4ZTmRgX9b^B?gNn+c-S7nN1YJF?fMc- ze(40=K|+h4!~duTLHv?~DA|AmmfR*kQ!+)m-x5)W^oZvECmwf3`i0g=JMW1@m)hgd ztVZjo%T8BEJQzs+X z+I;~V8$-CbSi#=j1ZJlHhLHiGWzqy13o}@mTEo)B7G?%I7=B>|gD=ft++4Z}&4?%y z7#f&x%4Lk^&5Y5ksgb&}(8SmRmgd$lH?!t8t)SD{!_BoNT%23L&ejQTZmrO+Q)hJO z))jrf{}uy=493qRhG6QPX;>?@PXXKE6YPy`JG~GXxs&@Ifza5U2#WH&9cdTvfP!5;m=wgpF&aVB@-3*s^H>wr^VrZ=bdB_1mP76%xkx4h=wHR0N{-r6Td* zQS3c>5(m!mpvl&1I$OJkFJ8sv2W(-MRp1d@llhg;P*TSe^}F||;6d;)@$&T5J5(~N z2$*VOp@zVCM(ETsYKWa0J}2W{RS_Q*1W7r8^7t7MRa1{AJXk)HRwps^M2chUUlCL? z;Aj;J8C3+`3u2^<2z!uSjLe*3p5R}gmM4D6V7+=rxP1JBc=|wC$=FlUMJPix{E2#^ zOGYxU5gc*ZGrp#>_6@;72ys7Zh$6WI|Lr^X)fIbkskhW|$SCe|^H^CXU3ZlNr&_)z zUn7O?(j6hdl45tsXuXmy$`^0&xRUQB;NoYkXS|XwKjp@UNVlbbZ zJa`aROr462^XFs7ayC*{@^`d)75q1>$5x_i`Sj^nK#WZrIUK)o-T9Lzuz|B4aYR(= z?gZ?Ki^iqXCvob~0mKqfyJMnoENwrIr>Emkax#wW-;e#fcOy153{inWhz$=z`rah0 zC7!(2uI6ugEkb;K5Fm9}oW@5)U{6dmg1mRI5w!x_Wk0yiX6{o&pg&R);*rKi({92o zf>?`>j6fQ}cInhfq$DO_S4226Wt4ci^6)?!E^>LsjcX{#ey9d5mGQN*@83sm<^#w; zrujKJY6yrU+~2f)`*8pEZ4~D}QlrRc-n)mS_;{Q>eF~Q^HVkx{^&pdoDnSjgRQF77 z68!{a1XM{;G2~u}<)!6nS;b=+Zh`C6)~mX!$4_Lql6p2q-V;+&uhfEJ>E-}>qRAMt4mP-tQhq*g{Z4}#AzPh)EDBz>r(vorWC)w zE@b53w->kZ+sljipbHAKzry3fukk3W zE0OAnJ2yRW>t+l7j@<|=XPmj{Kv+59H0O_9u*XrxaYE|YWd|I;%z4I<^Ew_?wZ?Y>k(eBe_YJ!yzb*LB>MEw`b^ zwHtPvx5Jg2c6?u3T)1Y#eX+)g3syLG-Vz5-nIiSLF>z&vv=f#{J84B=S>wQQYosyu zAGc9it(2o$B+&?o=_c5fYKXX$=EPM~#O-TJL>VB7R!BZzg}wXDv1_jp684#3pWF(F zK1tYXL1dXAI^GPCyUY+2X{aJB&IF(A;7UFRweUSmh#c0!pZEwrZI8&ajtJqK2Pu>g zQHLzxn{EN01J)|M(}?43u1V2{rqV&Ae?Gbv?4bf-Z z5hrol4Kb%&5qGu);?J}|^fAIqK*fmo3s+(3dIS?qL8;aVB$WJ9^w^dlwOeM`5N(PL zoNkOY$F?MbFV&uyvM1{7up`-yfO03Y+|^^BG{TX9+$mj$#|TD706*(amEE#XS-D_- z{>USCh@fC&jyYiOc@LyqBC;;GLmH8_?{rIo$`!khxgmkmxP#8vb|_Nyy&23+o59?;IV?<#VPa^E=3g2p zP+1shi7acFG`EInb1lq`bTBoxCakO&7BDh2C#*~fE`gVYf|aF(janvCCr3Bvbv!xP zI-_OFwrJC~BU-j;ht?h2qsQ01FmUJ~jF~hB3zjdyR=+LS5x5;&cW#Dv&{p_{Y)AO6 zKtv`4At=fR!QopG9=;Bdp{o!Uv|Qmzrcq(55fQRdflH?TJ`3QxeJ*x-&xiNcS@7C0 zl|e*Fx8U0GY|T!>=5-UWY28F@+dLCK+ZV#udntDMu7IEKTI}#%gYDbbV5h$q!Xo?; z5fjSqFc#6tDTqo=MGRZK$tO<{Sc0qzIC1R;u4m^ESmnsAc#51S0<9_(*Vdtw2f1=d z^NOo4+77q&}&d7!gQS)W1aK%U5{DgJaDbp6J=~ ze9D7o2@jm5Qcoe6kz#hDq?}MHD5^ltqjD6LRjU(!1(8rmB*@i-Zv-;$|G()bDym$-8j$Odz%Xc|{8)wd3#rbnL*ou@J z=|04R`*MX=F{2a@vrCZ8C?>KV6I8`zH7H?}KCV@DR|2fZ@}7j1x_L8EC*YEsKFec? z26Qz%-&lXuINty){%vHPY8lp{0aqnu&rwuTkK9L<$aql9?=cTIZ)fuWe;Y~32jCYF zf+fpWW8|1|`1+gg@a@;%qf^^1Xye`%?OfZSqg#7)bZ&!ob{_B`w(N~HM3y1UrE9Qh zGiVGApffdv-du)tFo({}9F|0u;g_Gota($|Yb?1PXLN9JLOTMhhpP*IY}*z;wDiQ# zj-4^QTMzX0XoXIWj%ti78Oq_CHf=G02piPBJHB#r!;hW2U|_fI=;q>rA-#HI^mpH3 z_Q;W#IA{>Q>(CJ+`}M=jQKK+p#0bVntS7Rfe0&hOV+XvJEWyHw6R~i@L@Xu1=8YeZ ztxK08cP6{J2G9014-tZyhd^T;s`ejS7Y|dyRkCe;;xVsAwT$*-w@6+z5-Cb~ZhY$!5+zAj!h`YPHhXe^O zP0RR?QDOJ#_kQo6=b2B{sx43bT6cFh2P=f9OBV=P zmvHT>1~3Yc?>41ryLJT^E@+TM=sJ6v5XEkX47v=bG``)lU3zy$gT-+Dfphz~!DaT?LBOdT?cKjWB(9dXE3(y9b{}f>$?tGV;}b`SU#F8 zv@hBkdkA6&*tVZgwqp;0YsVmL-DN}AvO&bAfmk0k1ewy(VoUoj>Ce{^eW8DZQPCU*I^J$9(REM0gnr$l%*kQ?D>%MrW?N*q--5QH_ zJ7D1+C(PYVAlvWB&j%qYWf-=l(Nc$DYsye;PY=V+v@mQ-3Pt2GKdg=R!1CQrShmvv zEB81Xz*@oWB|99jc)JT0Y<0%mC`Zg7VEqz42$R%W5(Jc zD9{RCoEm=APtJW;Qy7kMkZsQt6vh&@%e?KtEojXN1_I}*ugcN=s`OnODPIY5wv;xFkG|Yjy%z{`=dR-H#p?tug4`uS9@{Qn{S)LoT)6Uwfdc_n55cVML@z3;>e123 z^LBLq1ydF^ODdK?OG|GwHnkbJQk=)R^MsAl1SBa{Hv--TR3^Lo*-Hknv`=dlYM&+Z zyGpey?L&L}DYQyiqP4a0JOnI(mS*FXmp7ugxE4i4H3qC=W7CkGU5eynxeK!mTxDmL z7{DqkQIK#GD$4k`C~ZJlSpymxx(ujw@_Sk!N?@f#qpGV-&rD#YcC}f+O8eAqIYyqS@*vUPF92A>*|bQK3*6~xEkT^j)}g0xGyLOj}0A;e~q1hXUC4moq@r) zJs|L}Z0`asZ7T!3)-Zhikw@|J0}qv!J4qF;W&(y3E1{mU=$hbF;EpB6NBSNj^GI2x#+!n40Nqsv7!&KR<1N4rMRqB3+7`B+f-N9 z_x)S9Aa?&gQy$=X6vL(bSqr93#k|RrG5!1R3{b6Ew1E3oVf*@ZX8YqeUpFwNC5+Ur z_^(Z?SDO91Hg3SaEt_$iz*U}~L%^yx;8a^)g0m-2;1Xe^wxR@Og?Y$HCqTu<7|1Hl z%O)t~6TT`?Sz3r=hog~9xXMh=Kq>nQK~z(NmctRCoW!|a_7Q|Fxf=@$3UKj)lJ%Z5 z$4GgSi%+h;^NO#MYmlX&%F?Ft+OOA*igo2G`xqW$lq|y0$&-X5!c-4oP(XG4`ZWVv zrwLH9bA+k$=g*q@DT0(hOVD-s@C%b9@X zf|P8nLFhv$B8ah`sRf=(gOFM1$2Kp-r#TaZ2r|b8VSmg(>^m~RY$p<&1X7s=UdS!> zLqS=fv0MULdLGY}S(m|%4z(VoEQgd<5#h)Hn4(F8Z%vpZsryWwyw zA(D`_pTM*?+P2RQ5zJ@@jyU2_tTT=f#&mpKk~@wbcSdxKJq{n^z8J#U0bA_aXG`#6 zoh-F&mn~t7z_!l?H!axjgn5LFSv#yTW7}ZN+hc1Ko|Q*ju{7Ed%V^!hmJzUKZ*|19O*U9epj&Yy0P}adVb*pB%-PLz?6=2~XhIgh+y4fv z6$hNL_K+La9&{z>`Cu3CZ71(_djjt{#v5CX`eJ8%Ft!r3w#SBGf64?zr`?Nv@edBQU@YzP?WI@N|Z|hbtT%m0rObb{hTKJF%qMI1##B zOzf5Q5N8b0Y{G#~7}(#zBpSW#)*%L@1X+JKDOb1LJiq{#i?b(&hK@wo@G<6Gwmk2s zF%xjl{SV;I`|iP`Pd$dGUVH}6z49DB`tl?EFy%XZ`Qzti?Lnzm0<3wAH9n75aCgu^o7SI0z^XGhlnbSX^eU5nqtYyn*VomrW!qqaPV69xsa?=Jx z9XNn(hmRoYV6?F<(TA}8NDL08q#~uL*nm|&N2OU6l?Je+V0CaL*})O#33hgxJ!jzR z+ON34j_{%}LY8LJ5wb4-@gKnIz4EJ3yUucydin}~tj}LCfYrqgx20Q|+k4T;&a<`q zG_>4HO9#QF=Nu}kn^9Pztjuj@ww%C0EF+n|&Pw zh?ANnclHWu6ewQbY~V?yU`miBz*1dp6_vFnd7)-0UAU;(fLA#JCWM^m11YIj3QU($ zC5RGWnN$vhF14#o;MJ#eoiY2{+D{s=lG-G-N?FkbS#@;!Ij!o zT0qJIV-{sgrKK*&vM5^JS~92mGCH~hSLX>={E=*tiq(aJqIzUxmEiEvMC{tj|3f== zm;F(0r`j;APEsc8I+JESDi1AXyDD zE&ddcB^q2y4l&li|@9NgFOPA95L3{7k3h#?(z@71B9xFgF|sYO?j~% z9y8Wtc$ab|$QtJ(ci~XH@#tgt>h(A9>O&73W$W!Hp2RbE+=)9wLJV9zeb-%he9|Pm z``mN*;>|Y=P{}1Ip!)Kyw=ntBPci4a@BVTVe*DTS`10+yv6uk1eBJ`gnlc5uwrnw= z^$U;NvSEYS-oJAv(h?Goa{M^<%9TgJQVf+8ul1|6#LjY~VC~xyg{|wt%{qlzekeZr zAd+K_nD!kT)*I6-L;;pkJSg3Rz)1kLZs}qi*tP}B=FGxJ1gzbgB8_sje`}Q4zkc~r z16WEIp*E>lMVaXatg6e3jrDX8FbExuHI-(&hWma~W{L4{ORc!!DfOUa`C;?VsUIDVRve12kFm$FDT^yucy?PZF2~&M>REnYE zV9TUmkjgB#-c_?t>Xk~1vUQpRyUwmIba%_u*UiC2JOBR^h`PJb(a~n=GS$`A)zx8+ z(XoQ99+oG2x_NKB#>I2EaQ?KhQ>Qx6)?9)$R7|Ef4iT^pB)J$ffJNAdjuW8p_~Qf*0!VBE z0WHZB@n*Ri!c&$nQZqb|K(I+jazJXj3kN_R$jX&l&)Yy%hH_UCh_VD&C4tBiU~xM! z-Ie#_fa8RuxD-c%oUMti(jw7W1>VRlB3zXQqNqF=g|q_Y!7B7O=gcbbC%pL~DU;tP z#f6~dhU2`CxO7^I2aXFQlf4K`QsCTiB#z)n$U1Pu0S99oaESFIaV|J!psMd!eI_Z5 z5Si$T!!dSyDUcX;@iCqc^050KJPI5a9pG_2~any9-+m+=pfB?xzdw5y zKh5|7Yc{UH!j*F{eg4l_x^^DIH!sJ!O^Xo`F&mpBXJO0cx!4df9V?grfF+B*#)@Tx ztF;P#pN6%of5Gyla`_RexL>w-!RJ^!@8cW6@E>6j>&q8?Mfm!j`@X@vxnE)7!XL3{ z@nkF^)Gc2%7pvAR#F}+W5gxe;8@98(|js zC_BSZsQ|0vbgywEcAvY5+LjKJdO*R}0<7GE3U&}>sH|y4Z9}I4hfc!5Db0L4cMaXA zFB^~&M4i3(JK^h3!WPhb;Wq1 zqy$KE6Y4u_cA*8BbFw;4;V&?i}Da-DU%ue++=l z&HdpxV33Kw@+4e&J2=AA-VsiNtYCfHZLsav-?$CE2v#1pHt?{vMu@8`ZVw8?9RWeO z-P;e7ynHax!xMKBwv-p^=}C9sg?sMBi}&7V+<^~_7-^Q%dG^k`3}gwqq-bfs;7e;7 zzIfk#cZ3enFM?_%l^5s~zV1WUw zLpyhvMW6*!atj{ayN3`IjojoU16x|ZP|B9pFkCo&no+y@j@^XFmCLy=90#{=#jKxx zz_%ZNXxxQb|M2jx9Y(bha0#w-Ov=$C$cT?cURnxDaSAettLFrIx;xR{)`+goX7&ln zG+$4ssv}(0p{KJJr@Cu#?sUD$?A`}ijrjdaHGaF0gI{~&ajo|NPPMK=L)o{q_s~)I zCOYe1KwZf_s4JU>3H&}uSw2YQ_lQrsagTy5-e+tAzaLrV&{2oKlqqd%Us9Sc zLD7%qi$nrwie^qG5HJs0<0t_u+3fdcKjUE*mR4$uXtL9RBOWY$aML0Mx$kkr+?|9N z+R}s0SQqDu$OHmWEP*Q43maMAteJ)Jo>(8}gtalYh&X144TP*U2dxQ2L$Hy=x0MuY zAZwQm%?``t-VwIi$vR<`!eu%->MabTMR261110n}jDt(-AnkOTS;5M0^afGZmVRu*@mU`sJq z+9$AbbM=O;jT1scMqtdCiSYIbz=XT*#54bT0e3%mFYbBhUcCL`+qAdv?90#K({Db) z?8P(i^UUutdG_~M7Czs^V6BVdh;qv^tX(?;5#iGiwP_AEMb0KnO*YHrtXTE~R-hhUt6GmAPTxp#>t-U9ON^U~A4Fy?J zvCd!q!_?&(JlT8A9MgI7JZkG(3`7aAaP?DqJEo zNr_VM`x&+E8EHfrffQ7LQR3m(C@4l0v1@nCdhE zl|{X3Zc_k!pNeH^lbM(;+TXVYW_^M1Qm_>0ZUL-w#ywbD--C*(4wRO+AUD5?Bh5_g zJ9rdP+jrxq$~cZ0W!4?;YH5$qlaA3G1YC?6dGYsmlH3fo)z z!(}iBO9U)mM;Cb7IT5S|!ur;Ja3*MZ+SN@Qq-05{Qv8+Tt^{2c_u)u>?!K@vJUVV1-XJu|H7I3D zuE0-Udkz17;ROR%Yv#`Clf{4nFgQ)R~DeEEGa~7MJZYv2=(P9W}iyA4Fy`|#rY`8%Rv^w>d2wPNZ{bi z66oI6qAc!8FxqP3vg9&UyWs0I2WVHXa1hqpYrsknb&>tR_1}KSpMYsQt;O8g&vc#W zG0-K2OS1+0j=h3QSF|Rmvbu9{)7-#!CKo9wNk~XI&UYxofR=!(va%diRTUhlRPwk+ zqiVIawV+kN)zya1juyU0Roqug$YL7-tFx^JEe)mUXsN)-6V>QFS&vJ-jrjFqEB?IJ zjz6x};@a74S^|E*cm!8_qi~^TF)nsbrhS1k9dDqu<`LAF---Il+xZN~qrQ3~s>{b9 zhj5inu*zVWnC62c@h&)=NF!7Uqz=#oT5=Hzumo0zQ@PE$VzlA}RVhAZVdW$xEG2{_ zrFbEkmPRPa%<@N8CeKe0k!5EF66y#)1h1?d9|KOZEJBu`DYqzq16V&(&$&@bnNlfN zV`8c^GI)G`VE_t>0#R5JL<=Tt1*3pvUQrOw!Lm4nkQG8e^Fu*V z7b1>2WBpM(!j&ze5}dJ>e~1W@+=jz8*qP{wy?nr%V_gw`z!7T?xM0mb*S?sl-GVGv ztUBasQYl1|^41ev)*mOl#q%@AeXu3bpXc<$h8Pd5+-r};+lOG$w!v7c6b!ttrGzY{ zaab(1YL^RE9VDqO9;!L_bWA8jR^%24m)q!I-aE zgHo~fJN3a8ZOI;f=e>^n9t13!RICkz!A(cJu`@mp+Y@+yd|*+0SQ`%qV%@%AEZ-7} zg%Kk$W64d+kh@%ijt*`n=v~T{ zzh8&}Ee{W0Oqh5lo_O|I+@eK>$laJa=NC+w^E1Ai@)c$+ znu^HnYq5UoDy)iJf=%03W9zmh*tlU1)`ttUren?ODOkPo7lf~w%J$jDRA08_d(55n z8D`D+7z^irWuR;IitiAy`g^Qf{R5UQ`U3N3e}Z{)KF6Yk-(kVR?=gMGSF~?1Z{cLD zSUn$WBbFgz;~H$-7Ky06JF)ZVQ4?<^m!Om@#bCv-!&Lm$k+gKvCfF)!Xf$e;AgiRY z8I?--$Ii1(`ECeVO19alS%zl`5rid~+=mv>GEj9x!BPyC084H{0ah=|UbYFYS_p0( zC(oiwsUW(}psKcoU{%i-uN--WRVL??VyXmBf+jO-j?mC^<`Mx*Y8IjA+*RWqlyaqG z`_!!KW@ce^Ek~;-P8qPu&M7czmXxcUT)E@Q|H=%lHpOa5x$290%I1a z`a59h7(te?t_x`IJa3lVX>8WSgVU&MIB66txd?LzSg9HL*tT;&7A;$apQlX6Q%^t3 z0ZEgRS6hWnmV;tNFzCI_EP2+I~wr?Z!95!)Ras#FwJ8ELDO0%RWi6aO)hJnlDgjq|+%Xhoq!HHk zAul!A#9);Wlmu1Hb=3x<^0U$rb8w$=4W4LgHbB)+=dE(m$G%`veGe}$7S{p0w*a{GSwAt_3L#GkO*R} zZ5@1{G%N6eaT#7#tFg~I>u~BsJjK~$il;VIgKXsEh_ zU^N!awFIroF(@EBI3Lm>YqfyhZG{A7jFhO!R{;PW7W z5td|vD#21gaUk*uSrye`e3wU}xHP0srK08J`|>`$k;h||wLLH2pM7L72cMzF1X;QH zybdkDgx4Wtr4i&3d9O+71T4Z;3ZW^DrIfWkC{WN5WMfU~P+c!meaD9LVs+{&YWV zjdMrjVS*T8YV|(CmDDFf*3!KShIho87+1oTCpH}KvrP$vD?-eU)F5moc&*$gm*5~{ zi?Qf$_e9XuCp^+6BbUx3NrzKBpYCyMt@uv)Um8S{78@w?bzM${1e9B~__ zY#e~8n+ISfVQv0y8!Y0vmhN}NiW|AIRuZ;W69zXN@uGPmBHA6B4ttw)4Z9P9v7HZT zM`9r1aRh;D3?ie)VtLePOkX+z-%J^S*WL@n_&coN<#RLKJqTDHj&SA3)ycsfR@QD9 zIK&+eE`f0M427MO4?)VFU}cSd?4WNQI0S=i>(|Z1hV`=% z!BQ4U@QNUKEnoH%7B2V(t5#0Nwk?aWY2!T1B}grp^RZE}=Fa>#W=)rUfZ4M?#hf`` z7{FS*lwh`E7S^m=gowzM*ci1AyZ7(Jp`(Wo&5`l`gaqu1PcQ-QDrJHy1-HvG%F2<; z&QYd#ETd#K5VGnTP*Pius-{*nbeup-H^J!iji7gSf>N}kNXaa9wVQ3Z5(!mu52}>n zrT8tm7mVI{W(TACp!_n_jkln3g>smsQ7DA*EE z>6nHV9d{L7CoiC}O^QpM0Vly!R(8ILwUSzunU%+mPwNzF4ZFR%K;_0V=6iXU<&Zh?)0N(ZtSQ%Y?KWxYB+p zS_*ns{8d6imI1A*%9j5FteP4KWeS$3$weqQtK~DPtl@FhEhbh?pw*Y%{e%H7JvTi^ zwQJIVAj$$y0x64I@b7`{GO1UlP0QqTUF=KI&>_2cBgnlIC1w2o!23(jD#D)qN3db@ zHY{Df3Lkv%G48zME`){*H}Q{y`dPt+@2R(|FI;R~VAIbUHn&+3tcJjz0Ortt5S#}N zGLYqL0^Y3%SA??uLwL+USpCl}u)p~>cn-0Fznufdc>5yQ-Vq@VPDX{gGbjWPgpI@l zBSzuA;bBId(n8PzEt%9SDOUn51-EN<;hn)DX8Wm$lMIMGclX_Rx)SaJz!R-t0C1X^*2598-=zs2kS`WMzLTZU-1CmucosZxS0sZ~<0stWQAU?~nu z&?PsbVzdry+lqsPGPxA>nL|6bn^>&HGpCy%cR|(C*)z?yz)FCnO!E1JDgjnbVggDD zPz9{#(c~hOVkPD3c+4TJU$YX~Y01W2D5$cy4mE@DWM>=l2w_RbW09GfhJswJeVA_m ztGcqvC|3%2uPm=HP^EY*i|g$C~`9hSE(V$CTwN!yqVeDm*v<6{bt}lv;f>1)RDy9_{2C)zIK{|mjE5{${tf%n) zlL=UDaMTXl5}dJ{4|NyGbx*Q4wiB?n#JVE#h$~j@ zcfbmQ)yn-YJhy{M2CBST;YVE%5$jIS^1wzyRupe&Te2S_V?78vyoZAh1UeUlA95sI z*%GpBSvqrHUyiJZBi?3dob^WpWJ+AhYjEH4{jN6v%NDb@SYgWgewe(WAEs^YkJ*IC z1w7AU!5Y8Y+87V4Q)-4o9!9-V?A1ovhC{rc7$3q^5cVX7Vn;$CAuAZWlSW}r(p}hi z@D9vgIRc;l7=X7v3c}Mb`eO8WJ9zsHf~%_);Yxtz0XxFgph1KrTPat5u(tOmIJp?b zYLJZstQ{O-MYC}tMAf|I*DhK?G6;bTU?-OmFfCyc}^Z@-LxfA(*DL%^D~h@;;H zQ;f}A_=^E7saR_w7i0Z~1%#@(*t}^0wnQz$`iMDLxneS*ipS9wFZuyXm;8to%O_)9 z_$+hms+By?j8Cv^$=8Tj^CKeG{>;zyt!KDq^)#$fcKGnw2#?@(B9|d*YdE5|t;d#~ zn{hB^KaM5F;y~0CQMFooP8)^G;zpF6VrOZAEV&BLDz@TUpUS1ApxtK(Di;V~ zXRn~4`GkQ6fq)d4@~UQ((WKDGY6uSs=9W89+gk8gt}(@B$(q~G5UvP9J!er~S!aUT zHFHpD8U$2=EU8&(>DflPlDkjvll4>Q`l5!>0N>HU)g@P`@R&`aY32JX^A;c;(dwrLQ z!>S>W3DByl2vxKSJ`+6~nLw+O&#atfQE44VhV`aRprvOhuo5^4tSs(8)h&Rfy4w1n zi_m-O>W!I%*9coz2wQ!#2^*UDylcBS`fWp2ZYg4wwD!m`tXLIp0Bh{%vGDTng|Bx2 z++Dok=IjLrTNl_{Il^`j-_4r`q5pr~i~;}kPgwo)R@mRx4-WnM8%4`ufD(&3!Hw^t z6YDP89&8IA4w6C~T`}C%6Mj~<81CYR`w3R}3>}VphmSDjcwavQSg$dSuL4bBx-gXbG;~di)8z{^+9yt{xaY8g~pGiVt6U2~$4%%qUsU-FF`z8aEF2 zjvR^iUwqM|XOMeP0q?Iq{uu5VJqq^|)<%Vf;t?ME0zYF3be}tYI->XN`D-R&!qKA$ zU$Fw8zW=_7*OI$%-_|WgosuiCAT8CXQ&OyCf-6CkNm5F{(s5F>)F#lXH2fa#KY0ZOGz>+R(WnV%JZ_35*vdQZkHD18px7*wSU)ktXaMU z@kb9ExDrrFz3T1h!s!zo1dndxQj9+qgQG`cjCv*aU>yfxf-42FD<11`^dX~eNxf1I ztc&L_;8(r#XU?FzyN8f;2AUZtp!(y_KKG#9fdVO&+NW47nNm4uTkgcG*RBz?e#IYu z{AS=vvjNYY>&4Zpmko3&xV@yL$hZupW*y{rPfJTNDp#{+Og7f?U1~&YOFbGJz7$xsmGNI1-N`Zo$YbB)Vm88Plw~u zsf9Rq;s=~+`!_-B1vFMZNVuAas^T%IEFOufGQvaY2m(h42O|LlkU*ppKvD=I@dS){5(INkAO!2N=@ax(NYOnnfxxfTEDP( zDEm?+SLJzVrKQ7+sb0YSg)ECph7zj6czW>)4gh09$iO@Rvtgs zr)~{JT2?TUQu)l{S%joYoZ;o?yxg~gK!h=gf#~o5l$G{aKyv7?$&bu zs)II!EC)m$bHYa2mN;i@jdes6!E5_*1%rEHXQCH29U}}KQV_h>|MSGkgHBkXYaDeX zSP{VD-4U7KflY~?*rMa(c^tuOeT*}<@EqHdeX)tht=xAb+xjj$!k!Qe0Xn4 zt3V(-=uWsI5Guw?iB9)8niLW9w%cIZ#{R};Z5>3ovN3U2f~z%02zRmGMx`@>^#Uv@ zSb{B{Ya=0Rdt874tW7cgh=?Zq9UhL2hbLmy_S-Ra(I|ZSeHdPPD+ssWw$9FQ_Vj?GyBq9WoG{qV4z~@q z;(ihL)TUpE_@qZVW9wq@85IUg%mO~>jrGq85;EMrkymmq4(QmkQpDWPjM0cz8xg@_7QiZF$63JO2l!o|(6r)}VvZPq0rezuElKW7gC0C(bhU(Zg zik2I&v8mmtSb{5olQO}VS7_E@lWDhrl^{!InQ7Q_lFz7<*C$l<^jt)5FTZE^1p`|HR*-3LRR+%VeH2X_;y zZVw2;c)tML6*3f)f`W{DQ1B%6O2O{$KJ_%-fA%?}VoBNh=!F;Y&XZ3W^-KFdc7?vM~@&g zGo9~i2^t#(RB{{Ea=_D!lPBBI*2=b~N}TQ{ND{Cvo+VgaJb_;?b>ml-*IE8?^#uO- zwFTF&meca_+ciN}Gyy9T=eif6r{!C8HNK0M>gP~hbPvk&$DzJr5}K-SC%_IxUUtx5 zaad_LAS*e`zfYmc@L{RESYC)pbi<)oCmfA;HNoKt1gh9r7aWgsLu!&Ik_cY0gsHe= z*4%bP4xuSM#Tf~)Hb{zdKu#I~Dl-V#iGKWh6H?NGkdf+%lw@aPSvk6#6U;FB6$DqD$4EGDNh8d+ya92POl#4RI zAb@={p{p=+eChT})I{|6yaaU|S;(#s3Tudz1t`uKH9hV!=4cn3x z&lP}h*4HYAE8Y#8_y>tf_BOVK^t+vOyCumB>yJ4T%ItV;2W&X1z;k=7+HZ{&d#p@s z)b5nw*qc5Qkug5J9~Z1UL^wL)O)zvPV0ju_w$B+_pKy_8Mn(-XHfP%qZrk-GMU5sr z68IwHe6cZ3i$oK&V!W~Gs1G6uY!Ukje=N7h`WwL7emo3YVn-7q@4%+R_hCuoUHEd! zaQy3SU)=LBJJzrv2n->_1QC4PoXkSZ4(x30>|HTvuoDJZxf8IwO#GF#gNsqFY@8ej zJ`S*Vb%eE}E&2}`Y}|!Xw+3@G-JhSk`L_RWng-1tv?Ll8Y{_LPxRR@IMA%r93(K1$ zbN_%4__A~N4)BA2Xds4<2{Q_o0PD4PU&TvrzKA#8e-+gpe@9PjSI1M-5e}mF%2tLPDgmeT(&L1`iPm> z5HS_22v_sxeuhPhzQMZinOL`;$F7=*Wh)6}tL9><;;$lCVEyKGW z`=2JTT{8q_XD+iOTv^nsv+P*UvGY{!EGby}%-PG=aq8R^v~-*#01%uA05U;=(lrR6 zq)^E%D7ca<&;ncCr!N}UVrFg`ipuJZn@mf}s9xQm#bA4kB4u#{rf1}Eq*P?;mN+aW zAMI1PN(^ABlW%NNw(=_D9u!#AKhfc5v34Khm{mS9PBi?Stvl7c1opx~;yvV}iZeX|I)PXMORl<|8?rIHD%^u6_5 z{_Y~QfRBUzuar~Xe&F(@#lFNPYKwI4MkN&v%zi&mq|G5=b zxAY@W4TNL=0kFTdpII`;iSM7ME#b=A86JZj;KMS=-VFhK9|Jfr3gfxL+`KT>CjfVb z4#PPA0F3hX#dwyt2L>95dg1PS3}k)z+Uq7YgK}R(!&p%*ek(Tpra%1A2SBeJ@^2g=efWA{BxsP z39uf$|9;~pRLqrJf;njf`umpxaaoGHvbYPCC+otQljvw^!m%SquzTk&qgV;9 zG;>gKR*J)_s;I>A*f;}N+OH&|%8jL5SbzTcCqYQ79h^6DSHIr?tl$6mlTg(+W6-kw z8~YKt2o;aj(n=U=Z|6I93KuW(v%g+7Q1y4XQaT2ySSmGpP|B48-{n5c%gf@Ab~fLc zTvS#T@;%gghyufUoIJtrcK(EM5h_)KAnVHcPW*bI%K+BzS5Dx!t1Y;4xdK;c}aNG@X{5?;Ib4Lod6OTI)YOVQftqE3+$WtnX zG$*7c*da5;1%=suD9Q>#ZZhF2iC~fyilV$gf*2tv%?&wOUMMdOMGZkmKqXbmfEK|< z+a&~Y5uw90wT znred84XdvmO&dcPA7QRn&Fj~)UPq{EBwRJtk3|EIQF{g9u8h|%HsnV{^O{HW0Md9k#`q1A-YltUYLl6}tvw>DK;Ox@`cK zZ6Amgdu>qwVPIB!`2Omh+2=G2ln;>R!WMQJ*WU( zL888RE9JdXtd-O%!PWl;ESUwcOxAS*m0(J)L5o>jgepzWtG@-e%LHEC9JNZRGH}I? z^#VK73mmapW*c5q_V>%bp|eN%nzYnQUxsnPfS^IDi~vhB2vsWXs*3O+)k9?kQYl|mJk}C>B@;|3W=+s(*_Qp?MW| zP1pxm3V5%n>*BTA%w&X&>_Y6=y&sdO&BPmTyp4PBz7O}_^B^97>}iZAWO@4pVu+PJ z`uFGicJl!I z_Fy|#*1ZW>ftU~&f-xNAjP?)2SOV4rnsQ#r9Vlh$mk&O~kMI54fYeX_ejnez^R96d zD$rf3)|-z#j*nmbm&xS*_R~)rh>}7j#p=ZeA2hB)waHZ|;L;32#bMnwe7K3#GOofO zf54nyCS%6WKbzPpiK);48i4d=NQ#WN|gXiE<`C;3UpVgjO+?>mx85q3<`GFtU|$+)GMWNkbAJIAP+57 z73ip|F|ef|_q?=ZR&UElQoy6tyT?Vkuni#Bh0#-NvxN;hQTs?)~f9=4vt2Oxb zS{dtkxOyQL=T2_H$+pFWtMAcX`yslU-$irfQ+&3gk&_aN+OqNJY`PCkHIq=3Kb)Y` zH@h#Fkd>YpfTT3VFA=g>YG$BvWF_)WDUeNdR^XW&XuQ$?sM zCse64b%9L@fs1t=Q(ZBXU=@sp>QFS+3`1Qdk1Y)#UOw=c?g7)Q?6}!x%I-jzLS)I5e|f&tq%&`O1n= zTCgdrDu<$&=QV&;KmaTsfr`qp?61eMA6Gd6H|*AzfxnLt9OSU0_z(p$F6z77?32sl8WlM z^)cRvBwVdOOsG0U;F5cAzbn@6al*R2gida6IpRmq8iOrI@4~u0cVl71Bz!eB49~pk zhOu`JA;1iTo5vtHxmd&5*%3}oP6R9m*xNh6+L~}R#1^*pget<2wXJ3o+S~xEfw0no z&O>gc-G+XH`r+0A18~~_EA$)afZJ}f!>zX}B?FHithEU34P*(nWELe$u0q9L1^9=W zQMmG9g#?Ge)!mCQ$9r*cLfF`mxck9-FlN#iOt^aj?tSDQJow}T_~@(mF>l!{ELk%j z8@8=M)b0oqhqYk&bSzyVc(SNhgd;-KlBH9yblFtG)@-w_Qpd=&y*7LX*#@u{uO!5+UW~=7WJ|Crave7A*@eyQ@V6g1 zYJ%M5BD5%2G9?(bWN-gJa$&LaY*OZRtzLhsZ}y;Ef_+L>pNeGy*)Lr+pe3kM-2zZ1 zMFUNMbzX4w+aI_{`wOzJ{ASh=)bcmyE?ze-E5!-vhhA`?7%RnH37n)}X;~b_S_!Tc znc@Wm2uAW-0!vg2!6owCV^?nnfspvY4Kcte)T|#Yzg`-{Y;c5VY!l zcM<;GJ=k}QVzmfhrwLtWer3sL-Q5RQO)Y1Qi?F)3&qbKaXRMioN;W!w;Zl73@n^W_ zu6r>wG|Vh1HEh@@j2b-wo?iYKFvte~{AWM>QKh%G!MvY;!s1!8@WqE8;;mO-F~RHeX3Q|l=FFTj#i&(F z=FKySNWc2z6a4t~*T!`y08=LS9g!Q1TBQK@4J(#o?cznoWw>G<-|aQ4%|69qDezse zrDL|Qk1#Gpsa;a6EE(J78kBwh-aDB2|rB?vPC?u0D`xK~yc@m(t8b}1?<^7!r* z^Bf9tZ^F6L?FO(eo$bVhv#hhcexb(z)}PmDzxVJyn(*88D*SQ17{6Xl;xT)1@zgr> zv`j}`>AR>ddL9+I52848A}R|epsD&UwAS5&#;V&_F?yg0;wR&C`7v^0)KW33=-xB;qax%0{hHl;(& z{)U=S1S^73)ljt74@YZ57~4X4TmYeq=cs1AGT4Atc`2c;#GhrL0iwEEe!gLpfu}}7 zR#WXLv^0!0)=)DN^*S%xS{uh1Yik;h_U7@dk4016C<9qll~U2<%It%zlG0$Kjw#5# zqGBYfs>TuI#uKzAurHs4oA&4UV0VU>nGv`#mVgvPxH)8v6}$QquKs}qwB_6TW9>d0 zw!30O9N{KmC^p3h8wF^S@>(5p<38oYvN5*#xGQ$^53)BW2zzouus4rDmhOWH!j+(E z;|<$z+=;;EX!2=oBmu8yxsH&x;V8Fbop^31MDe&C$v)Vd7J~ihVc3^847-v;uqED~ zKt}}n1C*lSKVYSWo(J~-&r&%GdKX|R(Wpw3qJf>elao7~T|D6A<_FN_#J z8lxwUMbPkI3>`g`fORk4eE)S!n?D&VB9>sm3PILfEL=GYQ|A1D`OBsueEkBfi+`T|`7}b-R0C2QH!U&c;w4i|($H0_XAz_p5~Q?_;S}1>2wyvy$4teV@ab5! zW;#}f&!Wx43SMhDp>AdP5-c@DHQ;2) z?k*)uU?uQUDG<|sSwU$n(y|KKnPnPfN&uCRm}=_9C4EUo1y?euS&Gq;qNMP2t%M!0;$%WP0#vhnA0ve%4V5L$nL#b9$t5lj) z3pH)VHE4k@wJ9A#Yx7C|Se@Z0uiMNhEG(!-S!un2G99n7nkE&?qE-p6>YBO;R*Jcz zwej!MMxdj$YU!Si|DPNaV(@?8jKTlt51U&FSc3#uuJE&VL7}t{jkg`{1>QAI3Ltyot|WeYG#%>ZzxVJ%7)=c$<(k{j<;T(ep3hi&tO6 z*DYQ07eFnWGus5WD<&&DF~KNY+NV?vnoX#fthI|5npi94!CEqFhEcJk zV14+;YbI@ja$X6n6o)1EU{7Y_U0+L*Xi?-f^g`022ik$-yzTXz%(GG|>N;r!1M5JZ`9(5*M zIh$bj^+)UpS60T&xHZuod$Rnok2JiWq`Hr`E!7v1JnzN?H*Dtq&GD=scQh6i?}+V5 zQqk;qp20kyH8#iDVN}m-dr|_hm0%Zfz!^)nSz%$+V5}q< zDGR)oyje}yTDDh9>kPo0sD7A3$WjUlsatXruHxq+j=1yQJqTHDgi2RL#<*isj5pRF zi#80yR z2p3mdV@@tMu(P)&U=fCF9BG0r8E5eszP2?(U+P(=>MQIC4w~QOo39|C3O44IQTy41W>b7cLX7e#QB}xd)|eo#F9kF0uXEAGq=x zaN*kTW&vlVV(955j9vJH^($t^pi&JK6xR@%iVbMVB`DAmG)T!3XlUkKeo?hCK~_2e zD={gZFJ}=)KxN3xQgXr!f>sK$v-9|}D)y=bDXAF*v2^6*@D<`fnwolv&CLU0cbgR)w00=pO{XCa@Z{(G?cES$=YrAh zz6f)4!zgD@jB@p4n*)ZqxM75sCx*Mb;lWWO@afAh;`7&D!mE!ygjXJU7%x6}KVEzM zF}(9^A3VLI0QI}?!Q_uV!7m?vj89&C8DGEg7C-ZvSz}OZ4+^fHzyE%G@X|~8nc(!x z=bxE!+Sgy=moGlUm;ZhjbAJ92YZuMO!WmPsVEPO~(>%=nWimFdS&PMU=HRoz+80clVp1|_!Dj)LW)v#!>W$~0HM0p73}3FCRf+K^&P+#ZbtRfA z%1w%f%wz%q8JxV#3_?~4f7J8%qgu)zK0-*NX3?F)`7@_* z_OupI*8gd#L|Pk=5Ko}$=;$;6b(-MR($Y%M>BS#^{DE_4wFJ%;{7S&mvDf+TUm`U9 zXLg{HiC*UCrT(^=*@G4rp#V!0PI?JnI_`Hu*40ZFapv?XoaodfkT$+o9q8^NQ1x`1 znTkE#9GtYa81<@$ZCYOE#EEuvbhhySa1#d+EjV?i3%%!hSXVfJg5H~WY%?wpu&!L{ z!KDi)aFO+^7rXJBT!g=M6R?_b=~6k5$;SD!iG;DkxO8?K&YfIA*jm72XW(@Ar>H4? z3^}QzkdrRuXq-trT2(R{1^kW9%MM0vRvyoNkJgN zmt}4Mfvc~*yp#YW5UNrPlU!(0k9=AB5p)zQP_qM8~BXbq#; z=M6(yIe}06bWB4S2X`Y;-#iixEF0=a^Z}P(t9dLxH-_7zP1({so&(2m+$LBN!s-cM zwN)e89}h)YSqMtX6x1HbzPT^8L|#E(($wr6U-r-ZZsj9*T^?UK8aEvxc^L&O#g!1` zhMno&*h+epi*D)80a(1PpNYj zCb(cvhOe=GSpkUVA8tRXcUzJdfyRZ$3#8;0ltSge;~lUw#R+>eoUtvD=Q=hJ+v2TQ zw?b6hAnZu6MRbNc4k?o?|KR&lG{cW@7VU)a-F8^IWiS>*4#cvpwkE~G`on#RN|){$ zf<@a2R|LelTLxnBZe?tD!Lr?sSh2^EAm+^bcQugMx6F^D33d3J-5P!qs57d04~A zc?iL2h*=^>9k{I^%i12+R&x3E0agEggslF9Fi-*Rgr|PD4I*F-V*6kW8fb+Wl%_LkL*@ zc<70T@brsM;k}RF#*|q<;j14$!Ph^2j31|ciP?)MW5v38ShbFw>H68&uyHO&{d4%k zB$euWEL!p%R^ zfANo)yYMHLQ?P6muMxS-1i7zTzns@yhLsyuVa?`^SWm#(xO=a$orJ9Yaq&2mn2h6@ z*+|OGM_OSqvdb!vTT#Wb($sTU&#kCsy$0E(ED1L`<#i~nZ$|^+r#p*XD!?X=#@e;PY? z`498s-$sxUWGSFqX$a(=QZiD-XUUDIeTqSnlA|_df-fwoMqXYq3JQw&@>UU`@{q{y znn0LLOUvNC0%O_Pxya=A&nHlpmX@QWq|B5xHT9^fB;1r%u@h)!C$5$G&vWEVcp*qN zHEI;!ZOYo3MgwDNudN~cR5ln8l4@lEDnXW%D~qb7c0rep5olFbHXC)Swe>WO-?#n* zuiZ#EtTRfNC1$I>dru9Ji;LSkzNn%LIZ z)`fZkm)3o>lr0^n&1_6rEAOw9_tnuY1@RpBY005pW3Aj)du!J@RP$adYWSQhn~

cxSK4Q|u2I5tjjB`nzwwujYieEgbFB4{r?h@Ir{A3j#UV8P4~76yM3QuI?D? z;YrAH!h`@{{Of_c@%EFC;Kc{-!V`Cl#}ju=#A{DIhELyo4e!7FFFbzFU3hrH1ibUy z^Z4eick$lS&*P)#U&6d^zC-xzIav79Pxypz_4<=f;%x%ir*FKDsb7DE1yiSB{*=j> z{=;|p>8sE2!}TPj8ETr7jM4sB3^m= z8GQH2r}*lF5Ao@{?-7g^W8>;InEKuKm^*oj0V(CI(lR%KBCRDTSd!aM3pOjym9n-g z)=F-`MKh)u_n&49O66L;P)S9nne_=32)~d3_s&cIG7Cd1SiUfwgNxJ@0#*jtAJ7T|P;oIw5VaBqS8^xH4SmJ%e)u zo6{$ijQ1Q)6QJ7KwFJ!xXf46UCJjWi+|)_4Po+RfOXFzf;Dw7?YDyD6G@I}ee*gVX zTqbz+@Us`WPheJ4!$Abk(bd&$K6{y_&zwHR^RewL;p-}oz0k}5r-Zo9);8mwRQ#7* zl2Xe~(FAg`Q>VBs<2`qEck%yt2L}@;aOV7J^jTiYM~l@2iBQCci;3hZ-{ z(JJL8BlwgNcFM{_P+3J7sv&F<31e{S^eJGQvu6`A`%Q ztV$~hLjc@RtpOSSx5RS*G9z!hlJshX-_!dd|D-QNVa*O{0p%?2ba@?5o2 zzZxfSKsSc{@CX#~o{D)-RgJtZ!K$*6*RBsmMJ?}@R?T~>ZQy-1jbgtv2K9t1S#!$- zmgD$6M)5n1KzZc|qfX@$F7pZk%#u9$B|*q8@I!uakjWsQo#)2^vXY<%5VC@KJVC59 z6gTb7bjL0N%(hflL?t_8ONtw!lH3R$4p_O*3d?s7Ca_pxHEq?tfe1e|kT5lbaAeKW ziltnF_AKpKI$&3-2Vuz6$J;@P! z(g;}Tj{K}GcBj~256eBNcG#6{gWbut*q`D^bH=_TXY7b`#Kwa*2q!?T+HQpVsZn@<)Gh@-q%Li_59vq45KD-bbIt;@{j3iKTbnfmB8)qlD`FbO4>?qv# z$o+WX^%u;NIUj!h9^U@oRebZ)r*OUZi}M@030x=6T|!syg}<`CpVG23m#^b2LF?@0KG?cKz#>-}yZk#0T%Eqi z(JtYv_rkBnwbe)%sS}9s+FC{@Gp7`3nMI~<$xto;>w~Wff>Y+`5BWdKS_l?AEQ0k0Z zQ9#z0KdbgHxN2|{{xR;+}PXU z?-y)TV1bsStut=@pIg!Yp9HPJ4sfw@f-Qk+(EkXsZrFeK!IssnLoj53HSBEo?zwv) z#6JLGegO!yb3iEDMmxA*I0sRaJiRf>)fGb>?eW;S(Rl6Q`|$XL(Rg6Ya6C3?EM9o{ zUVQ%U8+iL)&*7m-6EHHs53fA&IKCqMJbU;3cFF*CAKp@C0m_8K?W=zGBd9$!7Vhs-L-j2Q7w_rEHYG>p|#O^)&ANx8L&Ii}CZ9pBccC z8uiFscbFh`B?sLZx!%N7X@O?lgVZURAWN>mjjL7~u=?ezFO90D%vWH5L8*kc7j!1Ll_~2U_-E~uGRJkG!SHJ>%&l4Jrw1HqY{EuL0O0ap;CfS zQ7Pf2*oXaRFzV`u@)`mxe}bGJO{G7|OMD1~zHARhZ8hPjRtnfi0@iTe$0%M)!R28b z#17+m334^Oev{y8I7(`RP+T2=lIlSAIl;UKsav6_<~`Lm@H`EpQByyP_c{huwWCnV za~73^68wUZmE&jfX{GU*;XWw|4Y5VI-S37eB$urb~l5n9ywke!)TxaNR0Rv#Eh7#T#6vZmP@xZ09nPjfVo zwKc&RJ5xLeSKcf=2~1uFvUa8VU|XUGqT*Z;c~og2h6c3x|5hAR$cyW&8W6Jg8= zhjLtSAd^6q;fRBoPS~GjkKKv3*qg}vOmM5Ukic#6Z^K9fM86)9^zcG*6lrwB}&sQBQscFKmwUCh++pGA0BYqDNz6 z^u1WO^C8SyHW8owI2@0^=!DSGx4<{(R`>?kz|Y?Ue(Y4;-F-}OxvPr@yga?&@z@SI`q>5w3p0iZ#;+UDL35#ZApT%vm&@a5Wo? zRxZHOHA@iAk?_t#G1wh*3_A`T!JebBM#b88@DTRJ9!GLs0kYV+Nwtz$>iJc*s8p;` z*BO-7cOavv8fk=>eC1u@c0pCM0j|7?Mgw1E4gAsXI*ry-7twn9BHB)0K!=o{8~L%? zmB!%AMVvf;m9TYLiz+0PFPWD+Z{P8%vO7 zsY|s|pu3LMc30PV16fT?r`X9V?^R!%mLRK22}cQ6az9#3F=EyHo|V-Nd?tJ@wGD(Q zw%vfM!m>(shJ0ofHH55216We9WQy6cWPn$!TYd9MG_)w8>wjQNb+uXA>zaB{Ro6+# zYU2pA4ry5>*ts_bKTn>47ytDt9(dqU1P2Y{JL?A*XAij3oNS$7r5U<64>Z}_?fcun zN=ZlmUxL?v-D)7q>YsyP+n<9btpRH52oJt{{sgIDcTWs;cEu=XciiI>fJts%m`L~v zwza_+PY=9s?_GHAu8Fv3STG(TWWDp;llbt}7x2;(58=+yBQP;66p!6~Cq8-ob-eh{ zLwI!TM11(d%lP^Ik1*?tukp=WZ{z(Jp2vI7J&)I)e1gZlhUK$nB5KVlY+AL#xZ$?0 z568|;8?br(8tmS-8He`mLdx-DNI7;4F?;sn@UGoP$FWhH!~0gTyix|`Q~e*ZXG{(z{GGVI9@82+=WuLjvqRR@`8Lc*VUq| zsL-fZyS8n`!M%GBd*m>3GSba*I3+x$wXp$bdb$l@HSzefr%w?!6r6t5z*S!ym6ng< zd)?863J%1|I3Sa&Pv9k0OH1EqeL)>7MM~F{0?vprwrWfZq zj|#E~3weGhDONyt2&$`wa$q(bjRYr)HPjCyK!vbx8%B5vBbaDAl*VK0hjUwS6>0#i zju0c@l9E+fEg&1l_cP2uP>E&%a(}hiN4RPjih5dgjpC>LP*FyxD)B~Xv9}4JFDdji z3Yr4WHT$ocCbg(SGYkn?rDa3e$MU=tL)q61M+NV*m{66+^Awc(prnd`ML;W|mGRn@ z)x+2ykKpwMXnY3MqX=n)tKy*soYFIWkd)$%fP*)0nh!DvUs<_I z)ewy0Qsu+a>_UPgA?v0cQj4-(ushq0faQdZNe+lgbHSEWH*8KIXdQP(WUMpR9U*8P z8iL4URsP zo3k&R9DF#E^@Ovd4?I2m;p*%~sFFL-7526sgexs|(+5^ktSoRPfU*G9-vLYejk48m z2;r)q0W2w30xSX5%{Q~NCtx`_xfpY2$1c@MkQE#pit*zo^8NzQkHA5)G9&M-%V}Ww>o?Zf$C>0TP4u?5lfc;gvHB$rcK7eWi$fT(p7V?a@}Iu z60C|?hVV^muzA;JY~HhzwjZ1K9>9j3yN$areCu|sh}?v=Tee}-o_z+q1Y6OH$s%|h zA%Gl9%S2*MAu@`qjDnS%TZY8!667f6iIA0~;PV@G0ha37rFEt(R(w!vH(Gmo|H}5R z!1%_FlV~|{1|6r)qxl8V*R++h?fS@((42Da2DxKf+kge}co{Lwf`03vV^oCH*-PHDN1 z%SO493AzMdf-Aw3j_FgkwBBGZe{AGBRLs?XQaJPl!uNrdvc)$LIF*;HvZ|iXq>iJ; zdQ=JwYq-t(S1I6CLY&<3c^}B&#klDX2zrdJ&Eu&%pAP>+s!oKjGbXJ}{{of&zz{_s)jzsJE*(-0a;9U=8^1 zekPdRT4_>P7hKs8u8f;-pdIW6(KvW=b|7RqI>Uzpolyj>F|MAt%bS4Z?uFrY_89H% zhDXPZ#WQzK!Xslw;IZ+e@$$nD;KP?+zhjF1nc=Eox@#))d;=LDNz@xX{ zj<=qC2H(B?u1VkU?OX5Q<+q@AmyLTETNrB}1wnkxl zWCWrJT1O8NRAQo$6c>Y(qsNeykjP`!W99q>M!|ai(Z}#QVNGBqTRwLl_C{^N`sFJK zK;PnH0^R(nQ_Xp`fb$QZeS%3N!wh7}J*b!~!Ic(mmYOBN`sJ%Hj2kg(?P?RRHT&nE z@Y5Hc^O&X30?`62LD$S5e=u!I?_kLiUqooKqT48-c6OYwe@`Gnh00~ zD1zL1f|^`}7Zuwjpkn>}4Y;~=;UX?x{Qug8i%M{+tnfVk0*%0R=_1c@v6n!08t2cR zswwHFg9p}!p`6n|XXg)8S)kDzrq5Vu=U|m2$mR4@X1Y z2sAg2LTfXvWi;Ao&4jAjx?n!L;p|IBn6kb>suqDt?l+cI)k=>LWYn&@IszEWs;W@- z2L!CD;RK-&zTZR9sPnar?t`nwP&Cl$Y6A&&0xWNo6nPT*JW!bL!P3*DVko;YJFu*b zpjhBXunIMRB{>@YhmwFTG6p*gPqLnB#z%0X4Rxymwr!)&; zJkM~Hlng_DelRjJeL28&6I1#Y6rVF@S5tZbE%_O%-USNHU;;s4u&!s+XGo>qb z62^A0>;o%L?4j-FjYadK`?LIvsqRUdw$LV`!bwynAbkWhZk4uiQ{|- zamDU9oa2PU+0Ho1eS)mL$#&S6>`ZgV&N$xF5rSZ}GtCVf_Pb&IzP|MXH^=y3?S3aL z+c5~M2v+N&Z4rLZ7HbdKBI1w>qGJ89Js|{9aY0yr*q3cu9>*VB;)Y`5k>OamJrv8L z#$xHld+`0NF?ji1FWmKz4MIotN62s+3=8u#Zb3%}cS4mPTpfc5QoeAsS61j?S`hbf z+s>CGTwhoZaUo#IHTZuAEQ>o(b<6gD_A5SXpi!;_S-0NW5C8nfOc=MhJTaN7XT?t>#1VN>1@bK|QC;@BOC|M}(y#Ee7`t*Z%>5XTxdi@g2 zT<{aV`0n4BzicYzF8%>?7k-1)Yo=i1=6S{hSTe<538v&Clv&yYU$XU)tZ$fsHA*xZ zK9!&~nV|IxAxnYoELTp)>UHxG9=QZ-HY_7tEhS_v#k!5Fv1#Wftlz!`5!-ekYTrR@ zJrIpuM~)g-VdSno#&vk$c!Gf{xef(cQo8o=2V{R-0=E-+d^`>(W*fLl&96X8Ub!i= z2s{ER!I#Ry>K5ZZl%kbUqBf3f2?33r-Tz5as%2=}yHU;``5MAV&$(-as$bF6*^6em z&dw@_)^F%x*_UeIER^M4Kvkt+a6*+JN+u;s0q~Xtn^Ld@S+xYLoSY(LXXXCYX-l0F zNXgW}7t1xu9{_=s_6fAqR?iNuLN3x zDV2YREN$!9yrNomhQ&BWz*@I{Grs@+XFT`ZOStondodzx46Hc#u~7;JD+f4QIl_(r zWks;+Pq315CBTvm`7c7&KL#1sp|xVL_&z(^JHVR*9e)mHv<~4oH!qBH_P_{R2Mo2f z!-KRvJVU5@aN<}ze$O3v`^D$+)%))m_n*=* zy!phFc<<@w@aaph;KS!%Fo0#rf%Va=uVT~kWr!!_9NW9wxab5zo7b+w4g%KUeY+5Q z_y7*?-;IQ0hmpnqGbLHsShsW;;pQjf5`6g1yYTW;Pvi6V{%sVkt?MGNef_f#~$)so%rl*-S56YpX7%T#ab!8O0Xq}DzB(Q%+Xj=$~7p!O60qy z$s_fIDXCO){dMzmm6g@VC5*{^FW|B$R~q1020R)N$z|Bl-iebZy3yOyr(g-N6pwX9 zv0dC&qEqGDlB?08T=iv+SKOEK(Va9gS{Kd}%m`RlF3~QZ=Vwmi-02fMXBS~jxv)A| zcHr8j9{llZFaG@XB(7bo;k63!>*XA_r|_D`*tQ?nE=1u{?{b{&nTj(fzC=sSizv;# z12rXgpr_>_oNj*rUCno+t?@22*G(eSPC$LtSU%6ue6FKSg3UT5-6UW&60lkt`@pKb zb&RpL)=_-thtopYkA$#K3g&ws#J(b!@BUDh$`vKoqQ8ly`pdOQ=&7k0P7n#@V3hj_ zTum*bXmTm?91TGPtPu7cI-fs3@ADU6Nx>>E^kv-#MJxqbg@uZL@+2$;66i)6Skl7L zX6?eVK=!@9$jWy|W}XZC0}tdE`IyY^ikZsHB6#I!nI0aiWpW6X1qC7en}_o69Eg+@ zPaHeuh(m{LaPXiN_Us*uLotp>O5-(if{<6hYZVPgexX#W;Rdh-XceVlDChP~F-2ZD zROn$;tgWeppA>roSXx#&O9%c*6a@8Il{0oG89vn4#l@KhU0~| z+%W0>K^QY>2!e+XhF_2k`~%(K;UUG!n^5IPi1LTMjW6tMyx1lMD-cd>SDVdX1<*Rf znw_@XgnxGtT0raXP-WS+wCNZt!j#ou8w@r<@Pi0xg9&sF@Z<>D$IBNZM~uep6DA=z zD8#f|X+c^$2NUS-K*+LH-PIL-fdRaCe>k~1A}G`!k3RVjUVG;yd_Vb1EM7SqAAR{2 zzWm_>!p=O*nD-54&;QB*)3zN;uqkT3QKu}bmD>9P-DjJ9QCk;c^OgmFsa&hq{YSwP zT&-L~&{{i&w)6s36I3A+4Jz|qff!tC(tNZHdgjp~|`|4`vhycEep`P9t?yMPv zZn(qC50gB7aZg|n?jvAL3J${K6UXC?M<2#x}(TwRP*OlCUQm$Tj>=6S|3TPK#DN(4Bh$=(7Vy^^O0zD~M zio=@m!*@ohQa&sxRf@ql2v>+5l{v&+O_og!=rw0^txt4R-`gr+72i>BF(|J&q7)bW=ISQpQp!TDao z*4b0&J*l-8+i>nwC(fUyo#OX7-A;Hqfj_RE!5>$&Y)&=dDj(OcWD&Fyaj{oRn4o);bjn>-x&|Y^3I_f8)y+e8o!<}eh*;0QyzsCf$ zG)zEq!#Ki~GMf)4Y>nV{pMoXG>H{rqw+=&N6QQa;fH0)s^ggSpkp=Pj`SaO%qomk} z{nU*(uBs6BTMA4MC6q{o5=TI5G?k^7QR zM3W1%Am87t4Jc@mt5B{v1)Jv;_@RKu7ZR|t^E{B5?TqYPS01M&bbQ#)dhl=V&cB~0 z2eW?s`v&vxE4bq4^FrAcz&_a%M~^xZuB>t3fED)dwVjQusdM{j}67TeSuiE)dveU_+VL7 z80M@E!#6X6@#e?Axc6}zgp9fwAtMIDKV&dGeTKl(%Mq@wZg6q(HbB(}Szhd<-3VE3 zgc}doT6=I*?1BEbIb%RShrebITH>&zWLeZK!IZ$t0$mn0OBvd&hS>7FwirmT8qkj& z`w$yAIXLs$u5fX5L1^$$gbf=3e;c+WPwQiPiKQ3J{6Dz|PU{%BttO#FB z&|1v;a;)CC#ss;CZ`p>G8#iNV1V_T#cVhG2{U#1efMszB#u7dfIEqYRXQx1S1-@4a zHrh{`VD^fp6DTDNR5o{;c&p6fDjZJC#L<*o16}c%McmFZmY7q5+_G9!5qDwP}gYOf->5C`-XADCK#|`<5Z9uIqyWLRwa- znMt^D^G?j4zZgIMI2rG~`=L>=T%6ny>=y!OI~UjuwlnI~kede^6>IQ62Vw}#mcZqB zn++UT+R1fDlY-^S0gRuUrva?dwDBI^m_WOe@8mrMtI=K_cxc=hy!+hK_}BgS;f4F| z#amii@a{Ws@92?u*r?vaP^#&gf$;X7`}W3_+y8WlTIK{NkIIe zLng?5)q;ii>5DIUy+=(9mSz(!nKj$E4x@MMG@zwzL6}smzEli5O%AJXKmHJ3zW<(4 ztdyZ$>jnz61XNPAEUrPRSBlY6%$5L6IkBW(Ntu#@B{!jRYAH{aVy@&GRG_;6tEQ;1 zZ!zh(SQHb!l8?uk0QWsScIwYRVcx8nW;WqYe)n_&SaN)vaUpiLwGy@xkPv$eC58DM zSkxF7pP)*yRf@Cfn>lzExg3}rVqYScpkf$hf-uEqrSaW6a^$Firv~;XGO1XKxzgkk zy^DG$<*wH;s_Q+}`>D1(T2Wp;YS|w()zzb#1HZ=FIs;l4&z(04mJ}+%l$0x}R;N!Z znEq_v_Kmo$3*3M9R1dU>_4zYBgenetx;qG2tvGwKozT>Z3nyDm9<1Lkoy6~#y71d& zDOfoKuXvm}aS&&^cA@vgMx5+einfNI&{+8)TB=`1XT!f}PoSmhZZwpSVL2KtHRI4& zJ)ZYG$pBVsgUSiq9@nQ}-2klmnlLogk3ehF$UZkAt+`RTr2_e^0?^PH$i5($+ftqS zps1=+!SMnicLI?IiVCGf5s=CRS;GldeOcNSOI4>-3Iwv++5q-lAq2M@fK@Lyp@Q3e zZ@`t3h=!W@Fs(UQ#(Hs4Fk#4>#%qy5^0WXmIizoi96th()(!MRR<;(FcII)cXA;T? zNU15_NK5rGxxR99LI`Wa_?clm_fX_y2XmhnNxjyNDD#*zO=$S21$ARavLv)564rlVqkT#F-VH`|#z-|KH?j%?2PWD37 zF_*raTzl;aR`yuA!`?vFx_z!}b42(aTSRdGCO(iI@ou~}K`+${2h#XG30ON~1F_{u zFg6_=itwF5SRCn#nX7#;b*Vpom>Yt(Kl8?;&pYAnhg}dnl3?X`3p{-K!_9LL+&z>% z-I-uTfFVpdIe5a!(Zj3_XibPx@=seE7lM>4`rYb4U{a8~;OhSyhb8;FdZl(9BNK>8 z^%^|T3OE1b7Tk7gKVH)b?yeqiQ_d@O>LEi-so6||F2R+hF0eACfh`xfxw&z~&L4r% zBXHN6D0iVsDOggoR967J_Qw%EQVWWa#UJGSN(Hd@%^Ga# zK8H4~19<8p>IfPYOv7Lz)Epef-S+6OkkzVn8q6K&AcKCwP*ZP;e#ns;*A3C6}Or zo3ztOQU7u%uMoBDdfW0+ux#Z?S?s_bCp`nFA*m z0+y%JGq}2Al!q7Y@Cm?JzLR(Q`r~#VU)&iQjA!q=8_(Q(7oNH6PQ3NR6DEh%grFeY zJ#qx@9Xkg1PaKB_CXPptyDJ`@G!Y-a_A-9{@O{ks>I;1J`fK>$`RDN6yYJ!`g4X&4 z3y^f+0FLk7gTp(v;gD?Sc4Kl6?%ccqNA~Z=kpp{>aP%N56;{GtV?H45vajgi~FQwyBZ!CHV zSY6F)&{Q)MwPjzSEdO;>6+Vx;(#O$Q@c>$D?m<_>UFd3@#N+NjXVcwiZ@e2Vgsi5T z31}c7G!VWTsz(zNN3k4%y2_!buNsEt`Y^OKj39swClmz{XnonQ1aZ(7!ZMhBQ4kvH zSSkjqCWL6x)gmLI}BmyiO1b^MX;38_aEj6(OrI-;dzrLtt`8 zMw%_4snHpd+(&w|SD4*x1<>wNzvO|%b5rmXPZzRQgA~o3;iSa&& zjU`;gdm|;)k9{*gmp_!CID&s)f>rHUes?7rF>e{c#}42YZt|v0ceOk2zp% z^dPJ|tP~7(G<$3zV96c0Bi@PTj9rOtraWj8fchA~+L!7{xbjDIrjLOt!PVYWckE9i zV5JhUlx87~$EC~q(lYEzx2M?=ylikF!VnmKZLn&$HJ0zN!P2cZSh3w6t9CeG^-eoNmK`=m^L~%J8t4-M9^kzlB&8lm z4#2h;e}a`KRz`VY)s{dk+Z2jv%l+}iR1duQi8JnfVgQDXyBVWzcf^QsZtxBm2v^Tr z;o?33uI{#k6&FI4D;#NZ#c6pQTU$br)nE)6VnxVuARIXpj%3Ql-j|xe0#+84N@jtn z|2upQ!hqWb7_%D0j-Bx2K!|d7aE6bk54_yH;X&Z?=7`yorS{nj;V7G>m%A5yy?o7f zzguo2l(}Num@ybJau`O88j2^MeiY9<|0te*{t>+U@$2~V#}6@g*;E5qi&jm;qGdl~ zHGxS=m7qzWrMd;MWR@5#L6+1ji<@xys-KLDFnojHY6e!W)eOQZ1gaTWzGfyCFQ0*h z%VuEds(B^`YqiOPwG=DYuf(d2>rMVE#a#)o6x6O6go?qEnx(pBcA?_1{vPChEG-L1 zQ?iXZrCEfzKaZf0iRspsaH-$#n9UX$D zP6JemwX(!pNud%*XDWFOVP$0t@3nzY)fbB;sIs^RmC)3pURAR!*E8kwm132}AEor1eB|(%msHjgu9{KH zdz5R?5{Fe;*J_k2<+PFsoRo$^DwbeMpd~d+ZI*oktCEUlGlNj>!R-7h16cd_$6)g0 z>3Hy=M~!<>vj|6z9FOs%Ccw+Z8@7XN``m>6tPNxhxrKmrYad|Q{c{j({;NN%|GPhI zZsGPo8`xXfz{T1Q{v6Cm!SWk81h@0OyTdO4cM+mqy#HQ8(*%t5_rp_@?!Ys5-i1-# zKA035%JxYZ$@X9mHw^Rf#Dlkw$M+w-k6%9h2>*WWX?*s|zwr7a58>UXp2C9fe?T~a zWyhK|IJ|WW4n}Rpo{bx@HGGYUcT#NBg6UJtEW)D)_Zq+oU%3=Jqc$3aN^o`ih>>{g zo_o#A!EZkL*eF%|w{9aeZ8t7LDOd`EmwQn8u=a1=YSbwKmIB$=FPFP-3$!4!vabuU z0hf-IiY51=;;#f*hj#8DfXz2S?1C*ziUuiJatn4hHKIZ>S8OZF%s>I* zDvO|HQKt42$W{~3zW@3wJoVV4`0lGOjjOPtq}aF-6@w+n%FoH>k7zdX`3}_)e56h( zErVc6F;{}EqsQWmJFs3V6`@M)7Rb^&W@ZK|K)$2PK$YBuQpEmJssv_yA9b8eASU-? zGtW`VceSauj`vfIxR|3@zIX{%uULub0|)sd&(9Sq-ZC5IWo3M)+BvY%>|M=FY~lOa zVp2Ms?CLVHWL@peIN9BSv!~>8>>_-%;#6ldy4!ev9rb2C!rv~RB3Sj%8u91#QkJ>6 zelZCb&qU))_a>ZZU5xgo$!Mwll=e27DxX1Z>3ygxy8|uNx6{U>y>22p8}C9}{T*nk zCR|mHMP2zw8lj5TP#K0gt^HRPjN0-LG}a8|cN|7|2t{pW0P1T9SdBph$WWFceQ;IF z>o$)Z=xB5V~lIAyksOHYq(igv7~SWuS-x;_W68*SbiXZ z%%9NZgWN1{!c{1W^G9?4C_+>iVSXq&-3Mv;4$2v8G_8T08^%? z1R^QXpD-STj7%wKT8l6UCB>nruIyVRS_?=w){HaX@214`(Kv8C0J~$ou~m7YqV2HZ zkS(HO`xL9q$Lz2(QE=pLR3yRF4uY86b#e{vNp}BB)e>wOm!Xs^9)BRi69+Oq2vKq+ zx)QVqO2!CSsgBs2=D>CWR+=pi60{Dgo@#5{f=4o35R>7CL#ez@f)n9SLGo@0kG99M zokNT*-DZuYTWkqeQm$MOvCkQi(LC;`Gj{XX=rk`J&h*9s-RE(F;W2mYi1EY5z5ZCf z(Hjfa_+Z|uAWT~lg3o{P!y6xZ^~S*v;o{6blX5U+Bm@1gMj7YfdFrRc)5DQdZ3kQ_i^(wZ9Z<^aNu>F*yhF& zwvVS5LIMNf=j(+@cZ|c^@4k+^?wg27_l&`}zkG&;D`#T%(#iOF)|Z&K^k;0?JRchg zQvxQr1O-`^d{>sBcPUyb)uw%dFG1Ln<=_7WSm7IHVmaYz@rs|ZXvJi#SUU@AA{Mf3 zo|#3sK57j%Zi~R?T^q6I$X*;uh&7qp1y-6hsM&*3v*aQaR9OH^?n1?1DgTwq%o4?7 zRTHRc%?v`h{`SNqAv!+Oz?NKv%7LXgEX899tOQ$vuC8-e(R=lGll!Xk^f@$j^$?=k zQQy{$_LJvO-PD1?ih2T;0^haWMc`^fm0W|}7f?kgv7}vS;B};439uB8WtmN=c9l}C z1XhAArEf?`&f*V30bfpKXD>D*WR0HHfm;+SL6tgkOR4?Z*Tf%$P6Cz%rv5%#P%tI9 zvZQE`392k{Sncf!P?yWElO0vP0VBBr6>DX26)M(B+kz|YlX_(VEVZ|^XusTuJ>1t9 zpC$KUAAAYgI=J0e7hEX^mO!htg3siJa#c`DfFx*1$*Qa)JT>&iUX@h#xd}@u8)%Iv z;`7ZXsLCv{RTlT4N+lH)RH-iTvM5}FEakz9j!8zu#$A}VU>Uyp>N~vh@*8;isps*? z!%vuHbHYMKz}MXm9*!RHbMu9#y}QZQ?y3cyS$E@r$^M^%VSUqWu>ODh!G?9a0oJe| zYz=3=@4gOBCTn{j>mxYux;K~r#R1JoFL#Uy@Wmq&#^a&UWAN~pad>F#IE?4JI5sc< zcZ>)lSWUq5k34`kpMM(9KX@NT`g-Di4uqb&dlEkrhUuSug0-_}Vdj@#nk??$y!S2^ zPW}Ze=gh|PIkOC0ttPzeCEV=V9Eml{7GuTY`B<}jv8gMOXqbNh{5Z%`a?uZ7f5X`7 zg^LJ0dyV^0!R^}C3`40`3V1)TZJU85#Y}1Dpg>D`ue5fcvae?xk2P>5x1d~wGRvaQ zmIa;_ccp;#_~?TMwv_Wq>l6yOq*f^{gSM4qv@$;rZ8gGiTtPH(tjpFTP-4OEU~x8tPF~QEn8is`4@pR&tRg1(@%M084H{fmL-)oe6T+ z48rt`EE52)7%ah+5|ipU<+Kt^DgH|8l}bx2mIB`O-U+Z&O108H0hoZSo2Bw#H51b6 zDy#V8T!6@R5tvS3T}W`U>cv`Izgj}eqos2@4j0eu#f8%w zaJFX=dOCh0n0}ABhv~WBDEBh8)ViY&ao{;MKtU zsq2HQ`kFfkZg-%pbPW5hQK;hmR#uEhdGT06)hPZykeW3T7NVZ65y+#cCi61Ix+MiSh|qpWBw%6QI-l5ys|1v$eFbmixSAuDqzGBZMH zLCDPVM;-xAGX|?FhC|uxwWgsa3Di`M#7z}d&)|5TClIJ&mGHCAwjFb%IbbINXb&N47hy2Ts_nhF% z9R~?p2QyX5ToIiqH={Gp?L-iALUg(#4yHH|s+@5o-HqmfXt^2*bvqN?%p%h3W1O*a zudPYPuy&sd*6nk{h65hhs37;l?u0}S>^e@MOX9V7zlYL2c^)t9i+929V;5X_p_seM7tJz}4SXEQ|d|vFZzKw`>m@FvNh9 z?O+>Nu`Uxtc{sbnlW;Y-{~!Zbfj$8oN!uB7v3Dj=xx$ffB{1{m{$Srgc)7X5-NgmN zLWA(|!}sCQ#~;M~kKBcq-*^_2XMT&-k&Cf3d@klLpMvEPv$1D?I5uvYXW&WTv}M~O zqgV;H1XThlnba$_S>m)-uAYnyn|Msr90OM?)+m$v&jzrTtelGFYXn#e_+z&mo3^o2 z-m?+A4s64o!@IEi@E%0&+>XU-BMew+hM*KGxdAP4R|7ZNVC4{ z6dJqFqFU}b0!@t+B_;nnaULx_XHnNlNFXE$tUAwL!-@0C=6(&Wr!S$S_cGc~oj0=w zwGedo*^6j7(Tg^IPBB=G9j6Fe7tz#t1}D#7!HM3hD5`8GY;~i703x@bfJy3=081uC zOJF6F>(H`9j%E}J$g*;kgtQR(d3|b?ph~5nN_7F3I(31RM%ES;OP#$kN^AOfds|=1 z1%ZfB#$L&2Ahv$zS{S`|M2WzR#OvyTnJ*Qr-4Js#=OF#Ap|2+`4 z|2+V9w_3qrkS!doY~W^NZvbn!t2-w71!9Dg3&yy4;PwE2jPmosg@+!*zaD!8_l_Gw8;!e04aW#ycZ9k-;(fx_TTebp$hsZVKK&4% zzVea@a-aJ7=UDX1FPQ)HPgpc{iiwGm>rO7Y?S!Evb7tc65C2U7c@}eLOu^jgQ!p|x z2(H#Pc_2cJXm>~DQlnsKe1<=wsim%c&(qfMq z7h!z#0TYWAy`vApEUrPRSPFWVTD52MW;07rFeO)@+=7BBsaM)oY*u<)Y@ceCk#68h zN>){2K1%Zy%T#V$fP$=JhYw>nk5>$q!0NfDo;2>lRm+x|lnn|DR|3+a{9OL|T?ip+So|cjMgI3nobY5|6)p;i3t2Z)s>mb_V;cz5B3e!9oLChYuY_c6K(;k;V7D zl%MS)%qbYZ6^+eJsBfr4RZS(Ts>}KQ)S|Pq1>IdO93%<0S_oS$Flibtb>rIQlel!g z9hWZD;_8)B{Cc&3fR#f_;=aQKt?jscZVk?#o{fuVe!_)QpP~1}o3s~kw)osN(mvr3S&8n=N)6>nX1Ys5_oPW{7gVm;b__@4o(SL1fkNxafG8W1SLXK z79lHlGzzl_QR%_RPWD5#)=fFyv>9V*5xGWR4`1jYVb2 zL;~7)mJ?80J_%Izl|bd=Sychx11)2>TQL5uNIf!|8qm6mJ|Q`5n#iXWfUe<3WgVB!oE< zXzZ}@fHk%rvE#NqcEmamwrsI8&YrO3fn$8QM+jMm(g|CHt0TF-G#{Eb&5P&s#L-+H zmq&ohAjl=z;XtAzqEp-uLohp*<%^hfUqq+*V1I@m_VD3sKJJ0FgurzNTo7^49UBgM zA~M>;1ib(MIQt9eJdSN`7tLNPiP@HAF*8~+Glm&fn3=&zOffUFY|EBpF*7qWGc#Id zX2)^f`_597f1Q2qxntbpF{Z1#n)_2#KND(JK%zOq)2-FLCzseGowS@@ZqIY^{JE4I zdw#H|A|Toc$Gz=v;DiHq9CE^UD~#~We;&uIC6B^!#u%8{Xu!hSm|$fB3oBz-*%+v~ z2F=V(2w5i3(=&jMj;?YIYU{{cf*Q~vXzA*THA|q%kbp#)ps(Ocrmz{dS`E7hCHK{+ zk>ixeT!T_4U?uyAl}l4ZtXBjpu|^44*;-J$CR_=0jedNT0xm04OBm`HD8SMs%!%l0 z>cYZ+8nuNjOA{WiL&!44(!~p~c=0?;o@|2;K6wjkH!sKftt)Z(}2Nv2F^q1f*o!uoX+T2L>NfNk>HjLl40(h@GtaW*j)O1_zI< z#Szy{IPM`M3<+mGhY=J;?KUO=;jux8Ns2&RY79bSL;1TzD6kUupTt{JH9ayU+5jsuR#Ud;I|} z-1-xj?>tah+b^(ll?k3zruJI|uuC`4bLJA^>N-?n(d+kdOXeiJ4>f|YYfu2}x^e-E zg-Tq1Vx5w833@+wk=H$YO#xV0<^KtEFD$7;USSm~YY1GDmO#PPP#~>n$07n-vMwMc zBH$&RxoFPfx)9gI=>ft9;YCDTe`2v31}d30=jxT4YF+9@RB$^XOQmffVD7D(Ouw5tXSnW^=c$xJ-17u(IGiafRfY<638wfCF_LN-l3$T!;mF1 z3|V5elDMnk{8uR%#fVMJg>PUq_8&Z^ELiWo`;ki1;52y}Y^)q$XJwC>&NH!e-V>N= zH&x9uIC0bjXtIqez#6L!!%by#3;HD!0|^i=M!XvlrlnIScSEVdssfp2E_ZGq6P5_IB2=GuFp!2P=H^ z+6(yRt=I7u;p*3q-^EYwzl|Nse?^$vNrbt(}W{LYNuq;>ktx@ZMXm;l-z)fR%xvau14IP%^l0TDeNaWQF_s!SAG-io4pf`gg4U z>1Q0=zC*=i`MY^w{cpcv&9a}BWlE;S5et^g8CaT~NpK1$Fb(D45?7&=5)3bKSRxX$ zB?0aNPZDb-kR|a~;tmwJ60j1$5{s5tu9^u_*Uu8x>+4WkQiSH}YJSWrRhk9?ERp=| zY~>c*zIhYgee(^t96X>bSSR`H66k*A;sq7t-rU5$p}Iz8u@Wnl0F;`j`R+aC${Why z&cAyqDpCr730%pj!`pZ6;hwbr+jnv8n&haut>z~D^UptVm&ePrIu|cep<=rf1!&ks zC|TeiaKF1ZZ{i`3|LfsjYSiE#ckUAYZYaxCc4ig=_-;MiJrEKSf>gc(0WGm&b#--9 z0ihDo%eLObw$ssy*7jzuckmv2aQ^%NuHQIM_&d-0IzyNn#GN}A@aKc8c=+dK-eW)h zxZi?5|7c`g4W&pW8ohTnf*|J2dpLx9H+SOhjkUOO=?7dp{|T;~dlwf5Uc+G5GZ<(S zm*E0*Hq1qP-7K`#PDg94Sgxk6mD`H6^+?32EK*`*R6oO7=`Ak$*h_z|~s!Hdgv|t7bbEcpq zZyJGWDvGikkeg!3zco|jr#NoKR`j{lSs^+g2VzRWK~QldXcDrt2}~A9;}4TuYNg;Rq1XcPB@z=wxFU2Vay_w_&{bka7&0f2NvxGV zVzLbopJ#^DVq2t>c+*N8kWgqxz_LepfjzuaOmQMw4=1Ay;TCNSk7!f)#96>E(E?%V zgur}fq?J!acFk1e)=_Gmcs>&(@|=lz_J~M!fLEw3j(OVR;0Y&e+dmm!{G^X1FFcCb zi$-GFoJp{D(1jJXPYZFk*;vEM+Kg~z3Nyltk)Z^&54rv%W4o4?WLno40xelr?m-i1 zO*B)b#AFSRBK&VFmdG$@4Z8*Zv1*C1e%y#Lm@sM_^axF61SMl#UU$MIXpSWS61a>A zRYRf$HAyKRGq54GXIqXaNFghu)xEH)4kalwd9jzoM~EMn8*5Rnv*WS*7JDu5D2B4@#Y^%kuDgZh55|Ntjt8^>wIf>Ha5)=x`Qyv1Ij}zlk$f@8jH! z2Y<_b!qt8BOFDvc*U)$28ZO_ui|h9v;Ns0YxOn3ZA?i;xxwB++7gyoH1$LC@ujBN^ z8!FN0nag)os)o}SZla&S*2ZfIV2Nu`AWJM)0#}l~UFyZcHJrvlVzJaTIgK3zlz}13 zRZ}xTq+P{eiIyx@DuF72DY0TnDWD}&bjY#<-wI$2j|>!$5~vcm5||RWx_0%Js=s{c zx)Mq2(Dipf{6N20orbJa0#pK85=YhC+^ayTp+O)?<`I;13^G#ilCpNSH1{dck__&W z18ZR5D(`2I_c}CWyT!8{q{~dcJBL*d)U2|1&>l&! zdQ=03k57c&V;azv7_9MH&=%!qf+oz^z9t(OVVa={rs)~t`DxSf=_@bc^(Pl&nvDe( zIXmI?1xxVUjJbGX>P$Q}a~A8Iv2f}XOt-bhTqg(2b9TTJGpFF&58lF;Z@i4}-gzAx ze)tN%eexlWY}|l@lvQ7UjgMY=1s}fhGPbQ=1s@40C(Qi%&DZ$P^UuP`+5*<5hIsk8 zr?8l9-Okb!lPxUq(i2ar>2SnCB^E1j2?|)r)Ho7zCCNr5gS%vM4^B48C8ENK@)AbGH4^q{y6#fl{WCe|ylbjiMA^~#r#eZ@rzti+lnV3nIB z$xoAbjHhxT%65UUo~A~XvO%m_?e$bLDk{`y!R(AQWT&U1klO^f#FDjk)k-WU{K*tL zZpV)yjCJQu52&eg#Ddk-+=8>`FDmd6*PmFf1h8asW`Qj!uU@;MmIb=Rx^{t45=3GB6 zUO9t%e_Y3{J8ahktgF{${W5@?AjH808$+_<_O zSI)1%nf@;^*!LdJpMDz`&%B9q{Vx$}p2q1;v0g1kPxE|q6KJ|6$h~nULCfhMz-p+l zR)E!7XRpfoN(tPVn88}GBRnt(@`t1g|6N=jL=Gl~mrQC?z8C0V8q za#j;uOFD_hI$JdJ9W_+ja;*5Qxan@QcXz6+fS;g~^TEvUi&PPe}LgdxW zL~8kD#FIqDg5?*lkH91&oQl-M$#a+V{6J-5N- z*g6GKfguMG9CjGK0sAO>)iw``)CB||z@ek7almC2j-HTU_f0BT-pg-40>h3WAoMsq zeGkJs;21)qdvlSA-IVwsBqf>lLR3(5%| zh1HT?p&5-`eQ54EjoP*zR5f>V{R}!zUq(0KruY1fe`2j9s9gfwMFy|l#o)Dj=(~Iy z1Aos;D3d*3yY~PxJ&w2mFW$IIh`NDu0x8^oDE5li>Ka7nfLOI|p_^cG?#f*Z5YpPZ z#WmG~wk`seTJBXAn4W=)1TJx1^{H)5tQYC*6{{CJ(SdVpphMOv0Vn}1fvX-uh?Fu) zNw$eQLbeN7brDPiwEFr^tIq!1*^9~@C}1V7Kq;?ZyMya|mUD!zON7MBe2#u@>ms~} z^=g3d)6aYB?UU(p&a(b2>gpvnL}IeK&_L<#Ig56cEOaQPgKQHB6QGjZSIx}>1gguF zOWZyLVFGBCl`Xt)8KEe#TLM_^%8J!NxNB?gCLHw;pa@SCaS;wLOB|NOU`ZYopMsYYBJ)RRUN=r47gtuu3gJR7?g!!jj;2 zDiAw%AH*B)e1NIbX2HhBk!^1xG}!(OwW+v_W&0gPWo3dcEObqkd(cYXT*YC@B+oK} z&~O9+i;$%&z%`bTMKNG|HrLdKHQT5I+uJO*!NvBDcwz2b%(b(_OdA_KKYt#UI#0zC z%Bzc?z_Z*o$KD>Z9qh1RsU^*wFEzY@D5fJpgwu^ zRb};B_1!mc+qYLulXGO}c6|TIM|ftzJUCfdV48z1o?bW)3ujKllk?|b-ZW=CHE$jP z>P!6e#TPhv@F3yJg>bcBxdp{yCDYlgS+-1NZkJqHl6X|sfBohgY+AV-KY#hTN+ofU z@FaP+JY5d|6Ij1-`LEcwc_RV{Qv!Q3C*juBE3sqEYJ~fEsYIx`Nr}qpRh*uVJc3nG zTAFe%N)UXYyBm5M8&O|cj2gm|>{mc2Db*OH zB`!n(u6y_YP?oBPB&t6MNa8LWnv?L(-C_QIf= z>{+JExpn&ru3bA%#pw)g-@br{f8D@ef88XwohQKc^S-(Wh^_eJK`o!J5Vvk7^O=Hi z<%&BMts}U6aSKlO{fM6S4{^HZJzPEi5$@giLb(bD+Mhyii@?lS^=!NgsS=IY+kCQv1T4>1gr>%6~$9g zS0(XYQ&3fAPskL@l_Tn^ZBSorO~A6@JK_7``+DSJ*AKXVeLWuD+eq?V$By_%boRfG z(uSvzT{Ry$^$U?%KMx5NQxQeb2~IPGPl7(dMjvhw6X6-71F9GmxHNjKaz~)V6e? zgMiSd5`bPok7QK8a0Bgq7r3n#jh&~_MwqB+>qUipunA!eJ%odS3zYL{K79e*mu?WU zZlSgRERW&GpHOj@&~@>~eVo5`SBY4x1h6CzmXs}ojkaDMPjKo#e@z9%H+A%(zEyH% z5uQ$;) z)j5=kK`d3>okKBHUA$ILx3~z;;Iz0p1hURZoQR}kI7_Yl5gCG8qJ zZ&|)cP5G*_2=xzMM0ej=$n-TGVm0FX5vy8leH-c;I?&7KYHaD`J@%o4&{$SkkE+@h z$b5?}ZF~=Hd=DMx(cVdL>$$*>j=&;6JcOMAiOJ&c&`Rj+z@B6OGjV zB?p#>Sh0rEHps|90#u{q!D>O3k~UP<4oQ{7u2nXoq^1RBHLWOPT`gg&L9Bw+Ehv@T zVik=jD3q-DWk^iQMnpt1{Cp#@Yu90X_5IJ7Pe`$GoD5?VbBug!q_PNW6RfmHPJqFf zNiZJA_CKC7fr<&+uNmRXgbJ0c8;;S0zQC2_#u_mmdZQ=8nDv%as?6A?Z6+CDmW4eQ z*gL~s<0;?D4|9MR;QROe~%{6|X<}1U@1ty|8cr=1g|L6SHUHK*Z70F>Ci1PJD zQ&|ZH+xXiNx+)1+Y206|U!~bOD9X%2bWkwT;}eiU$)ciFkWS!=jzv15E8Nc?i4lKc?2B+Dzys2r42X{bYUOA9)?Ix#TNkF#e72}c)r>@_uI&W)=CsykQk z*FyrrH;cUligxqJ*QMXvR2nDQ~Wd1<{PHUY5+8dl%Qfj84t!|of8#YxDuxbRT98py+ zqw)w9HPg60hfp<#P&NmDGSjCaH)|#e zbLJo~V>+@}UywP4Amu>7x8dKE5z?a#P@HCss=UbrugPj#L8=qVvS*Wtf3F9Xcpk&G$P30aGz!JC`wps~LNhx)*U6x0U6yO@G<{X@)p-ByUJjRb618t3o zFwr-Fg%Kf-*Ax-UlnLQWMlu;mBGQT4gepxKYig;$R_$?PV5~C<&eUuj?QLOcX^tnT z6@T&V7x?CK!RDob_9g)M^MBe$`QmQc_A?^0AbPYJl{zL zS+R-1yp|Wde2)>qyXwD%9H^=cV8N2w)9G<0;c{tUV(t?k_^4ojd)vadHawy78? z0jZXz4pquFDThZ0_V8YNd&EUZz+>m$-`k79fz#?kGQjH%N(|P;Yt(=VRA+~#k?HQg zg06w9gwb0B(dz`is|v6LphQj+$|QwCX$3oY-bW+fQww28g3@KZjqj|gwh1-$Eh=cg zrS&u#n+H(eK#*-FKoPFGx(Qibe6H?u$~xA~chu6_&3l#+j68O|ed|2Wl zltiPFV6>vPSp~aS6ZDGsn`GveA-Av!rG%)$3Yq?>4n@_3DZ*Y!b+dvl8DS_RGz*Gr zkdawT&9)R7X@!U)V0pL&V9Vy+c=fIK;5278rp}%X2S+DpvV9t8=s@!^$<#g?rem~V zsUfhW3u85kP#>l`1S}l`wkbUr3wVv21bu>)&g0{uP0=Hq8IGL<(+S$J)G~yPjtQn& z*umMv8cV0n#o{TmFxAoqFE3q+uit-{;PWKrIyvI0xwBPrQL$jnqvEr4)(o}$&4=&f zqyM~$H=ln7Z#?%5mVNa(e*E-f{QA`w*tGmt{J>>_D9Hf-?MENry;oks`>(!?-@f@u z$;WTJj(1;vk;gxamzFNZr*FTBA3y&TYnJ^)kXnhA1T%@3lI-gORKF95R{i+Bish0i zao*r@@4fmGHW0MF{os8pm^>L@zx@v4{QTgtZy!E*@kMO>`Dgt4+2>gO%{MGR!}kQL zquaK@=kQ_t{_VGFpS8SBu$wCq30WeUF_B0O4?#^{HVTsyP?4FY%Iw%^oNa4HS4}0V z31J!0k%;#5MPXVxvJ=IX=#ALm5H;daN|{?x>T{Bk5$5X$AJ-GeOG$;#iIXayS8H7Z z6_IWggQYB41Rrtt2?UAN>D;;VR6edLSbFf_p#rMg5*~2%5`Wo%wzf7ZPXoA0AiG1rx^SLGQ!RmXsdh=T~%*mpz%GN zZ~Kt%{~h!-y@c+DrD(05f$Cx_R1}z^u3UoJod`ymO|`RGw-C+M3%UPd0@fnR0$y(cy6OpA)w9uDHVchKb5NH*7nOvX^8ERzELnoO ziX|v3nvMJ%C&JWJf|Ua@GcA#sWsR&Xdt_xhB0b%SKqWE-Y3b9ELLiDybU+g8vItlC zxpPrcI3LBivysEP+_cHaQxIi`%vfVBDF+m=8-1GPod3Gn2Dj47zjpU1iVUhbZ)l5Y*_p2v#Hdaqo z7Qa@$nr(R;>;48~K9kosm^J1+fIPa8hk(;&gb1Ou?=rwpg~t z7;kCL=A(~FiZ`LK$Xbjl>1KHcmW|UT;2uWKmtUjNAPPUH<#w6L?4^9QE)yz++u`9m13U zakzONhKKi2mA1h<&;v60vzyOJ1V;tKFVqjmPZ7TS{dlcV9urB>i{g41j|-v%!_y}M zKK_vii%LdTUO9>YJVC?0tC~nF2OIg$0t)|WyhA^3@a3~A>MU@4o|Y$HU`h%LTB$Kw04~zlJ4__y9>%HRY$Pt z;Q20GzJaFJE)kJ2hh zJlclJ`c~u>%S6ou1n5$fNLKv1HWb&$bVscUu(G*5joSpS%LrgO`4#Md3sFGm&d;qt zWOy?6?{menpH||T7hi>moh=N^&Ee!c73RifR8H8g1(L?F{fwe=GG>xm))Q;hc(y0D zOFgzLJ%W|giPcI+5|9d%QM4W(2VEX-N+7djUtvMWvNJTtQ?nK-S>QAiuRi$<-h25a zWodGzk~723Mp><%;rf$vW+_Y7EC)M${?1$2zhx5^&6q~WdJU@yKI?v6rb+=XfvR_2 zdO-oyr*FNXELH+nzyI`unk@R&r=C#r8p^g;o?NQn>k}?NyKp|9TeLudlvu1Jje=OS zw*I~fE583$S*?~4;KT|h*Z$$NPq2;K-g)79yu5HBe*64$M0$E+|N8X`pf>#U6Fz(W zb%NL1Sn=hT`1G~cRGs&sL)g7$4SxCb6a4<&*Kpmv1AfPjs4~>!B;o>mP?DBRsESe& z<>QIQ;sTUqq@pxE1(n$uC`d{`NoEGB3ks2+nx^t}$*9Ko&@iP zZOIZPMq(o+rHTZ)3tS0gb#`{)0^x0V-ofGJ2lxNLANTGP;%*aw?&1%w-;%)ho?g{< zWuMbjj@sJT2XuF!Z-DK+zmM&^o9$k5VVx(SUB!*d7jf$vLF?uf+`V;)fOQcM?_UNU zUd5mH&g1^AKHR<8LHKIIts9lNaXpXcPQs;&VLXR7&h;HePt$s|lzoq;!q3rB`UOtc zeuImx-(#@x6SS4TL;!k%AhbY1R%4|zn#9#tC4uhK(AF>;-EHDBo2%lYn(HK>-B~3K ztuB|84Fr+;Mcj8WA%mbMkVUxaY*@&0E*i=SHpSCXUosCh1gqiFQJ(9J0`f?1k})dt?9f~>15FjP`1eJ~;(ir5GtpSOl=rn5 z)kX6ZAhtFTpa_z!O+!*oz!b|`Lmgp^(pWtcHRAf@yJ>BlsYVOdR66io*z?^u^Y|$Q zPA9^c10ETyc@vjgKE%1E_i?H7Gu*lKGk>tP{KHs_TZF9(mw%$h{XWtQmm-3Y5<>Wi zNVP;joDoh2X{gda-Wc9ddMu69dT_EC!qY4fo^D0>u|sVBWW*4V!~zzUYlon8YxwY` zxkZ@ZNPr&pcxd8)mkv&Zn8H26jOQ{(aEdLV&KBVrLkU9T^BfVI>pRpKpYeQcI*)*sW5&TqQxmo(Mm$azdRm$=H!;S1>Cm5k0?sp>@Z@t(;D_I+ zxgOX87q@-b@3IXiPl*dq;EA9WLO_agB}^SB*c?KjOohEr2am4DzQb#A(sMVjL5K@=<8@9@PV!nF zJg+u;qb$E(dYK^At|``oq&Nh;S7GpMVG+7t4E0K}y%__7jUX>>QWXfu~NyhfR=2N54@~PR(EkHN}jB?o?pt`o45k$?hMVxf{4Dsc@;y#SUh56>+q+hx6r=jbQE ziF@$O;2E6#`{SYJQM(|4yH_xH<_g=d0M^j_e61a42{?mj?>dM6!OQ3o*CwH=jWE^C z^ENhjpo$e2ZlV(THh4YtS4jcp`W#++>KQDUDlR}v zWv!Cb3<6bRu@cMG!f8`5+tFT4nIqPz`P_H&%H=q)b+fWkeev$w%9SVhzRJtB zea&hGdLIx9Uz|T5pT7DkPVU~VELc(sOuhH~^GeqL_#@VQ_Z^mh@daFW?u5tQeaf=+ z(Hxv~mH8JTJnq*$)95)!fUhaXkIz5rHCSOh{t!U))fDuz+4 zRuYIVE_;C;0&mMn1@N}X7_BqmD$P0l+!+E;?z zd%CG0HMc;rw)b}PZ@#q+-Ta#uh>|SrGS{G3tt1Xhey16$OmQ~4okv!6pv&SJEbFF{A` z0<;h!8q24kzHAB_Dy9*h=Afr-5xQCkArg3AI}~?RU+t*eWX-j6lm)A?auK0y2^y;i zDg>;K#)aHA7gZ(GP*FGy)x~pBNx;fan}LkvDJaaFhpO@?RhgFTg!EKrBqiD-G}MS< zh?qDF#3foInZT4=IE($kLMnmt*dI+p8tXC$WjS0f%$HnM3s76W2xSE`k(cg>f-DDA z6-_}UxuY!GihoabXef2!-;g|;xCW;vD^_LRY}63Y>PqLMt&U*W$g*h`+L~ofL7C2H zDjMr%p@q-VL|CjYb4E#l4JybN0#}W7JV%)|sw-{K)WGu-JY`CsnhJY7(o^^}2FhMU zZ^?@|Tl+R{4}6CQS6AWgr4_h&X*qwejU@ez=k|Y@vV}js#GX%2qjWmE; z&?I=X42a`;G$D)R8JuK+pkxb#rdcB_(+;78rJziE_$1rFE!rF|Ax7BmtA`zKTG(`C z0=6HYgoEBDa0w8LmW&LvMF0skDA^Vf84`nKuV5{T=ZNG>4M}o6T*n0 zkty^I%%CfY292$tZ)l;W!I3ztVfo+ItYHzz5~xxWGmo8sv7^VS(SZNQ^*0n}_21U3 z5s!~iP$ibFVb`IE7J)z~qefAQpjv*-Ajo@~Q$9NEwTnTAM;pKON`-+>; zoyVTQA=iUA>V6b^4)4X*Jv(sB{UqTkkdP%31mD0&0$mcK<1-MOn1jf;41~s{AS^aj zNoZ^eLgUjAosx~D>>{M*6RffdkVv@7B2?w`7%KLIUqdA0Y*XgL`XNAO}P z>yoj&u}ui5~WwBuODfeJMKOlqZBO)Ri z_L;L6ae7cj2wud6OE(ov4dvvzK$tqK;-xNJy2br2qnQxbN^p|tY#InuA|1S*)HgSG zqO!7%z> zKABXz88z)~XryK?fH^#Ra0sp%RVh|1ne4erev_&O1z5Fw_w_2MogXxo0$7cF=k*;! zpw-klh$ez?Syi*LUS;K$DZmQwi^TDxUf8wc5Ptk_1zvgaEzFoT50-Xz(3qs9^3_Q$ zIZY}+S`Uc{=3R*C8da1xMaU2GpDP4#X>fJiW64<@SSoA%DIp2 z*@eBEHemg)%M{4{^!caioD#bwz;^iW{oa1=SuCA8RZZ`+^|#-Yg-QTR@^O9j)?0Z0 zg%=cDZC|kh-@f}U)_(uJ$~J#&`*wW)!F$-Y@;4mWwi!Qu`~h~XUV)Q)cPXe!2@6&h ztrL58;@Hk@i1a=M?;~vQ+qWQ?pjDQYfzG;megrE}l9m0BTTp)obYzb-I#5jU?$a?y)~sEhnIUr;ev zfBw-2JZuO4Y`|ZCR`FR1_)Mw1XGzoGgWETbdU99vI_6>7UTsjN6c~g*`JsG(< z&dAH2g7T6%sIOX#isCuQNwY;(iY3YmCM!s+FPn_U3PNEyVX$f{+6aX8JVzzrtTJyV zp^wXjGx)3osk+%{X_(IEbVi*DU?*TU&EfhS)QJnV!U@F%Rwyd4RFLea zn`8s`7)!W>nqjZ60k*koW8+axtT~{86}!h`%{~omJ7$1gZid+BX^ayg*6@tBg;$I< zA(qIJR|gRDnbihQIimmppVE*E5zkFA(lT%Ox7&K zW<3e7u=&_`Y$|@=Rfcm5Gb=)t4fORbprd1=Kub%dWB5OC z_1}Os3|YgaSgkb1PsBKa&}c%C%po{|upll~8q*fFwY60w+8U;GoM69C6);;~s|zR{OF4=w2K? zaY$LQTs>WJ=(vjlEDv9Qcn5^QFF2AC#q&h+o}v&C5>IGLR;h?cNJn5)B0Pg4 z;1v>uu!J;3rDh{CMRI2qDN9yrVL9RmT;ejUYVAQKKjekw^(w|k;;;m)1ft4nTUDI^ zm(=B!)F|+(YV1O}1X)X9yZ}(|X%(Pd-_n8ZfwQU<*yvz=Cm~9}OG;Un(Q?g_wY-hm zF6)#VuzLuehLeQ~Uev z$u49^SjY~QFxAk8g1j<*I2zE@*pBitv1TQPo*hgNFywbbBi+FH?bflxO% zfU0)FQ+Ed%dk9#P*GmCti-Ic=v1CacmLwRJ5rhI+66`)a7okegAl56c3tWi^Xo;(~ zv;QJwGU%$hb~V>yc6KSk_&0INJrKKh9>Eu%{)nfacnPy+&4;bMBPLAHfPp^Si@ve4 zOldqeT8ZYPW0cEJtWzp3OW=!bRZ^i$pfWW6QE7*)XPea;Ew1^A&||wbV7t?&Og6X0 zWD8s6cAV)j1xscvz;rt&OtrGbJZC37J$JT>y%HCpgQ>ByXo<_vp30rTmAK_3x0Q^} z6AP38nOL+0rUaDaSOF&iG;t@2TX6ZeUt`VBKdShv4_|*(xg7=4WS{>$`?LZ&so%44 zy~_OVarhwiZr-3q`$?U|WWD|3^XmF?&hI|{5XblK#{SKllzZ^0=`-;8fBvIffrmD2 z!r{%Ev2)cbl~rCWSduzICZYb}gAefKn{VR8u3ZQ?b_|;ch--fM7JJvP!LrXj#`3Q| z$L_VO6;KIa<-|oR;M%hM7sU8^!^hp}m8%MbB#>QVt2)~|(9+b5 z=Ef!z^L{0Zds#^-I@;QmW$WCTvkI=1HS4MX-!kGS_!`UCG1%}r`Wv2A!RSo{tG3#iXsIPQ5uOCF+M5;< zJmx8vS$*9Uf`>DzOKeb4V1v4{>4d9UT%JLhiL(6Zs4SU|ijpZP%(rL%VS~&xYosJu zBQ?z>4_#N$+IKyNj#K2nyMUz zVx%NspU)+3%Su98HSe{W_g$LfgwlLF0-+O|A-Jk2b0RoN5WYFG zvJ7~AQ7w{9@EC}2PR_q?(z6#`&j(6c{G06I-ZcFgN=vu zu=7U^93Tq(ahc5SnU~Sj0947(^ctN^w3(&c*lF+xnSt$xZ1BrkV|@CJAzpYz8*}Dr!r565cGf0pPCrv)YnYkZ zv*R_VcB>DazmthdDu(~<78FaBrp6>y4sVn73Dk(idL@u0GLfCHuC@X9(@_vL3|7N3 zUgW=kYqX3c6e|}yb~QB)MF4Buqa!fx-;c4wAFIGhELWDgGL453%qQu>f*rag@7Z#a zzFIfneM}lTN&%Lso(^m*%rJA>R5&>~!okS_ufF-J0<0bTcVNSgwQ%>9SSfcxiz}kz ze3b-+o`8SQaRSUyc=`xT9YJ7-D?%eqAu`5`%P089?~2$2e}wSZV<&d9-jjb51hJ4^ z2#h!YztFw#^cTz3(1g#YeD@LJju4V0#>)jB-iH-n9e3LgSHhKtuPg861WtMr!h*dK z5bm#HumZzF_%{|oNDC*RMIj_Ip0JjL@aSaaA`FR4=KaSL_M?>qL?$34Hidta$q0(& zK8fjwPRl_CVWFV9QMn6K@=FO>Wk@fQ0Qf2ucO{l7fv3`%7Uc>Q3zYy>Qf49Ade5SB z-~!SK7Xn=Jv9D|E<+8Z0S}<_-5}~0>#SjTZwGcSUYZ{dGs++*n+Sv!03PvnhV%d`A zPI31Mcy-8JWJ53|a5ZevlDc6_mdLO*tBu#`=^2W{l2{D^Ea~t?n^u-Ao};(t3_k$W ziqBp_JD*F^B@CXHWTWS}PVHM#PBeD#L(qo~0Zf8YJK?6ep`F@b5jD4FYHgj!$;emR z%J_~dN^7XOHnSrur{-4AeVR~ISW3vMMkC> z2v)rWrcN38C)42!16GrICjzAne72!1?%hfxHG_;GtZ5i>+1ByC#XTs1)kNr3zZs!R zQaQ-J#bx!#&#y#ka-MP#9zN)X58nHdfBy?GZR#wx`}wdir$S|F0TVrA6<;ORs)>(} z#n}HDf${$uH6;J0f<&m2HYmC1#y&cV?QoQWD}gFQO|~<(>*3Ob?cCYQ0oGJ@GYNHbohGxi#S|+GHUFTv;{>e4Jt!8YU%&oRS&qblBqI#14fK>%OW;Rf zOO6$b*RW+uU`W7f%c>O$vSeLAN?eGNxmY$IHW`|;qmEh>Os z;OcvVl>pl>UwxrcGVEHr1}`mGfG4I+Q-Jl&JMUoMx^*fBYuyh&sNnWDo_tbSvIM@w zf+cZT0$gI{66=%z*7~1+z>2TGz^`9?ihUc_Dpz69$>Yd~3RiByqtI5i_SR#~t_B<89tCl@^g7FieQlCq|#SOJzKOcg7ZBv6eC2}68bf|@j4+;{?5 z0z?uwC8fB~#o{EOBoHMQtgBaVD8Q1qt6`Xu`u`K`E^fm6$_gfmjkq4=T*K{cIP<#z zmc(2M6b;8=$t2GLRrLhJoUCjGT4K=>H=;n6ShTJa&Tiefj=Ohm;ojZ5xJRH83zx)a zi5v0Sl`Cw=rwLtW30)TmW9JBCXL0-1Is9?=4F0^|Lun#xRpO8Pg}mQ1+`Six+jl&1 z^VUJ!ys;TqFZ_aYy&t2mS4fx-&A<2|}5(sSwRYO3F-v)eJ({0wg8RMp(E#AF`WwF6!t-cEMBW1XJ`tX5<*j6I-xAt1jV_Mz1ks&hhPB|(WWRgh+h(kur;`!tm26Vmdm*w0xLsvOz>O{P*wz-lCrHP0eoO(#%U zAt%oS8JW6BNYp@DhBgX|O;K8IfwD?VR8(8>8(@v%3TqUUSmKd-0#=ES8M0jsk?&!N z{8RQQ3*-xodj>t(@8DwfH@MZh9Je}G;#%*|{A2iyB>y`*_0LdR`V3OjX7a=8zz?7e zyh2QI#8ZoqWdhG|Gn@!EhG&!&JfbY&5@d>fKIYg=cv`h@BEf1LzTY$k->n~w@7IsV zuUoaSatFa{k1jU57-HuMBkVe%hrRB4ge((6ni;%fjR;U?@Qbs9SClP|5!eoT>f)f6 zHV*q}J6(1SlhAJWf$DMj}T2RCtsp0n0;ekBRr=@9zB%Xh|6uatz1aH^IYi3xcB$ zsetzro?GDVvjc8k5(vMCaCMmFejGcwhhViACr=&3DW7AkcSArJp(?_c_u@lH^MO~O z7rcYK5fT-K$oM#fM#WI#5E++@xa2G(r{^OntpKsfxd@9*LqK#Qf(TV%3F(L<7-SHh za>{EJP>JPAV5*?HK}`T%R^Nv5#D60(Y_kXgu%oZzGa<0~8gk+j@WBxV$-4|(_C zWwkvcznqP{Pkrz+3(Al~P-_!_A}Cc5s)k4ARn|74oq*I&(2@1(`eqdAicv+Vs-|S6=1`-nM-}0! zl2XTaQe9q0z^dbiq6Wo9r6?&bQxob|)zlG+WVB=}3dJ?j+>8cE{z#~5?C(QWX9w!K z2ui%?{|2mz+6EPWB^E$&5e`rET-zjb5DukZ5Xc&S=T*&wFalOf&sj8Zy`E6q)IOk6 zHDu?NBRjVovC(Nbe$*42Htfd7AAU_m%9+ZLSgY;SWa%m)uc0Z7bqti7Z#>~?^dpa9 z+~1Hj_Fp3~`d^P@%%dYQ_VLk}z;-y1?NVa41geaw(1_JaMBqw9lKV=%ov9UOI!;xP zHN#;FoGh*3XlANnp+v-bWoK-tELe-CPgSv0YnT0`Ku4fU_7Mo1VP~th%YITPa3wKZ z0$T!NV(Ahn8n$qWi*V1zb;>#=fF<%9!EGxc?AWdy2tDNvpQA1+6a4P=Yq5f0_Q`)< z$Fk2q#iqYU4SxH8Dklj40f-dbOG_aqEg-RSedFP3y6J)pBfD_9HwF?8T{rdzHmXMiu%WcR_&b zQ3YM%CiFPCA4hkwPda!|S*cp93H7CA$`vTC!rI~zRo5>uPK`~k!- z|As8FWC>VF-YZGXAnrebtsy|VihFnNs=N(kGOr;4?`QGHtzJC1-GM*vHSiuvaPM9+ z0V|NucN~{5ZNk~pKjL)HM;PpS1LwP5#f6R+FxdPgq3UV$*FTBwng!@@nvZjx^Kqtg zHu_qpqN`~NI%QtH<~e9>n6Io@jWu&nUpCViGbF_5AS`$+qQW)VCiM{-qK%*cUBt!MAUV;ILeR>XN!Xf=)Rb9BOPfp3nvR&* z$%u%uK`1#QCc%<`<%E)|SyXy?ADv6k*1m)a-Yk?9IikFTU`NPGPmya{BR|U#xfwRd zNHRfgx-s%H4N#P8fQA|?_IJ(%MF-wDp)1D>xhY13baRyD+M}vyvdTPPU13A8vZVrQ zkLD&viZdGOr?7r9GP4X2pD=;a@8S-X=BexE$lzV?ZMV?4|TxFAZNJxPQl*e4p_g_8ejaVi&x(n zkHyc7g7fspU|}@^X66%MXrK)pZC&W=8d8j)r>hSg9W7{UkB7F-IBuKtPmI<7wpNKt zP=M?IS-7u2mAD}&{};#_tBG+0s&SI{ipv6B;!+gQ5)0PY5o0K$F>VAq`^QIOyyU>* z^&};O1h{Jvz{FiBRxDHApWavv=!_muZJcm5TDDDui4N~wV>}FWwBaCb341#{@zhd$ z`_s4h_4i+}ZSPhbbw7+#{>Kp%;fW|hlfaW-;4uYP0!}{uE=oee-4PY*qaaH}0894u z@;$69T>@L4KKpU__*xa@9u_+^qR{o!W*l|fgrg_7z~#gi9C76}PwarJ`w(2YdmV1Rzohk7tc}U18 zL_&5E;cWaZw0z5+E*t;SwY+DGfxr#0n)j zwpcIQ>j@AIlEH#f zBo0JA8ZrrVduumZcz?Ll%}D&nIO z6<7&q33N$WSzOHys)X8M1v{Wx)DpO=%WBxEm7=Vq43!mCC@&|V)in?z8&FVIfs&ef zwDt9)uA>v>0$Ti#l-BdT@uS$>H5BMRJn6HLQ%YR*uPe1+^)2GaXuC^hJ^^Kt? zZJBLHrk66*(t{b>y|@Y|JVuaubV$bjdnA>b5g7Y-a$gO?l>nBC*4!^(R&!30$pOwl3Z0gRC(3u~!oCF4inbNLoVZud1w8sT3p-U97v(E~Je}Q2KCiy0{Pps05;9`>-2O0P7Bc zNUT`Haa+UjTC%Rvq5R$61h~W^CiUVTlz1wEso~fv0WDb z&$Ae8Ux=ROY3L?U^tL)+pv#FsHXVJPGub!HMn}^;wA9ZtZ*P; z84-RBRhIOUOb0@*1(Kumkr1hc*zgI62pNOu2o1!?=y6#aA%WUlwxZY|GTa;~i86X{ zHZoGDDd0-tdP=Gjl2RNIN4QE#wLxytRFv1wVIMFbO>GO&Myaovj>23U<%X;*nSqpe zV5eghtE$Ms9UqP*;7_yt(O%ij{7K~~s)XdJd49*2XT`Z(lg3>SYh z>^^0T4M+5_h5)y6rw)GHsDUq*kHlxcj=~RXCSlonEtcc)^Lh=eB4n-It%=n;$6?*x zaoBxw5{?Dx!6iToE`9=T7C7o>g*~oD*m_78+m7g9n~OHKyXfM8hb0br*x{g?6ZX4K z#kT!Zux8s7eDa+so_%#ZX3T#ambU+bk;$VlG1Y*v3E@glPvyBX)Hftx=@P0m6=3P; z5LgIX5@$6GR{~DMRx4TlZ|m0oO$b<%#uKUtP$HV+c--GIVa!BKAY6%Pj2YT4BI}aH zeKb4vk&lj0$wkME9Es77kDwMk8d~EupvPh@IFAu zI{FVx1&6sQ%hm9*NLb`4mL~~S2URRqQ0Pgxdx}+R6Z}H=5VCgSn8ya3@Y;f7?wbf+ z8!4LzSX#H5*B}#YoO6Mq+lM%88XzTBG18 zI64_gSw$$WYF4hm)SMCpRsv1}RLR^X=^A8R+=Nm}5WMUofF=7B6RyfD8&FtO!BUb0 zcB;vZE32fw4($R)6alY#iexmG`S@gXUS)NIf+c|~fhkGXAnO8GlA=KXNtOk!hJi}} zOG;T6z-psLE?Tt2V@ap40&WM+5Tg26@&iEWZtq4r&)3WIobEkM(CS2e6=9IiRz-N~ zZt20f{_{v7V8w;UQ|rq|ZdxA73718DC&eNJteUbqb&SAO8Q*hZP64Vas;P}Ppt8J% zAFd{pRn{QCs9dFg=q1=S@Y>}BsK(A7)bP48l2Y8JGEI)8Ymih866`M4D{-I7T!h0x z?xlRMl4w)~xQnZh?_3Q$XzLw{!)otS7A#3NJDlmgRDP?!0c+Qe!}$KY6?oyfH{k3z z3l=6;urM-L$wie5o(hQ$m(BHzRe-txlE&j>G3MVRFzSCE!|4A4tZ{@daU)I|!Q&nq z!}c~oB_XvCrHpM{hsR3byFNk7O5YSVypF_Q&7jyA8pE7Qj*%u6Buz~PPvROBk(jCX z2v>G&o3q(QCC*A*ff95su0XM335W?W$u=1wC~m>8KX~t-k%$tfB`!d54Nj*LC3V9A z@L#|44&3+cRe7pDe&rPfK;qVWZtfgBGiw&Nzm17$R7JMh!jUnf|- zuIiqhJzE94%d)r&KYZyW1zOL~or`()_HZ^aQR{MUv1Up6tpwh``=)XcimdzTdj(oz z(Gutqm*AdtzbmVi=QKkNo6B#0CZ8_}+bL{zRE4Q7l>F5)`G1uN`Oo9Vu?lT#`POef$fB> z2Y*|+1i;Slo+KE)qoo;V`}nuVarHtgu3fIerHffOJs5)S{v%ZGwqoGSN`m0`INkRVx>{aDOU)vc zpXyx4GdS1zGzL4Kz}cQ9=#Zt0_2tdIru9%)nsJOxDjqPs==XHqJ$Ry`*Ch zx1qQXr=hKOGO7y9QIKkg!c=pVX4xSx*@7@kjtCx$cNl*`cY?hGMPC+8TmmG0&I9`%ckBV!~J?#*aZt$~ffa zYNNQ+2qonv1TAAK+!h2uJN9{wD6Mh8BWZgkA#Il?Qg%#4+{Uq#@ra?sZ`DMOi#aNN zr=c}+5qeUd!}*H$aii}?{xDzT#yJAky)D2WJ8SYZ~pZgeW9RCetvwuV1@Nt-$PK2460nAN}VQOpw16_TBlmOHO z!V^1REe*nzHs$|}5*&sr0jS}+|3?vv)!)!G1XAq4{|2k^?4ZZ7Ll%+c;eBL%%;RGe zV2yfwBp!eCF+BROf8o*p`4>iy7|C;Lz)(^*7!U|~UnVM>yE*L5En%vo4}E?xj5M{V zS!-b8=#kK$qyZZXQ`pA6#5_KEip^Q4r%qyi9 zQ;eD#c7%kZ+PY@c5Hu>pg+_pqIsvY_`W6LP0$?(AjO-_MVx5xdZ3LWZYZ?_)NwQH1 zG#AJkhO1%g)i7Ww5bKaE>Eiz2Ho{gHKPW2Ly>~z*TkP-Y$GOvI(Z~H->YLF?m^s}u zpw`FX5J?us6j>=HV~@X`_bKZksUr^sIymDu!i$t z4b4S31X&^iSi@-=DkUvOeTTA6N%nRDTd`o(wDxdWrp@6;R7QBV^{e?FWzy}uyb2sS z#4)1j+n3S)f>SQxU6=$k-u4BH=}X~M{{T%G`9Z37r->BB%%7Za)6jQrPQ zc>I6%?Ln8fw>1tCiy>_1ODfiM0JY?tkFti)G+^zzH(0H)%6fI{&N<#sFRol}<^5FS!leS7IUmQi z=8mS$?No4>3sryowIPJ zpKx`WW$$#H>0#MD4+9(|?3e(MyonVTzXcMHzSR#cI8DxN@Xj8(F9WqkPk;#1u^KDR8MnEZZ zAZXd5q{NYZ%5*BEvrt(%n|isz_Q8a+ z8a`W*DY7&5kd>~3oJ=jsB;@7l5WEafQDKUTDsz-mDr>D#-ROX-hRN)&9PvovmWfE) zp@sMj;}G@xNJRcV0;xNA@F8OqxbVPJcIb$lhyIkOaIW|bTyFUaU6t?Sa^EsMytxJU zudc_<%d64T^$ik}7h%WV@z}U~47MDeh|PyIu>H6WcAOjvT;F`y80+^L5uEh#>xN1A zcI8-nw~|1$)d;J$=wsO$4T6>i*6q~7#yy%?zjG`$?;DTZ$2GCXO#|Cp#}L{kV)scS z>^N$SwYzn(V#_2f-#iJwZq%eq!kX>I6br1{Y=adW9P#Zkdp!NJ7N*P^1;?pl;51be zHue)?YBm8zh7)0+uf6p$JUWFLm9;rJ>6tl`mv|2ME2 z7HYN%rUasfL28t&Prz7e!Xm?fH7rAbHI^_n8Y4%H!efsniL$vYc?W3Hy$$#QH7YVe78naLjE7LGHMk^x4Dv2#%fH3s<-O zaPxG5cc42$q5=>eABu?haD+q;B^vb(^dnRSs!Z+@gB2JSqbyjGSXA;~rDl~PHLo1W zMde5>u0RSUm7pcLuF_db{FNjdl~fE8q#hBUPDxX_vf>F85wU5AO2||&CGk~KN-iyN z8HN)yhOJs+#S*~EDdu^3o}8je*bp|g!2 z7uKCWeGca&M;8I6rH&s6?sKNQAE#w*L;_1~aSe(IP`SxDXy!AP5jr#ZE;8aIlXey= z_+HC$N|Be6%a2$FinEGQ$M;yAPoPc9W(ULVd=Ndo|)8O#j0=C6}XK|Mt zXHqAzSz_g?sBS?~X&n+0vT)4B6F>jB8qYrc8XRn=!NSB2=KAI^lIg3cz=#V_g4V}# zS$Co~6%k!E=cfd;3t)}-pT|_}l~}n1x-{7?C;WRf#ys*EwAgM{ruT_@|A-_ZHJfAr z1A>=>ktLQ)n+qp1TbL5IYz>Xoq|RcQnr>sIz)1qwMFf;Y1c=0?Cn*;szDit&0$-A3 zba=F&jP4V_k~*Nu(U>GMw%sLkZHo|rXL1)U4{hy_YqdIDP_G79j= z4?k4yzqg-xMnRT9l#~)Kl&0JZ9%KQRl-IDk$fv@vaFgp0RU*FKE;7Wi<+JwNB zK#^FVhGVfLS!iBffpQ@VD2Z|+@Fb%LWj}GhOR&5o5*5G_iq59cqOCPeXmZ=S^+iNX5o3hq5PjhlB`aOFlh&R@wu&zWG-B&2kjg ze1+Q9FVNWb5f!^P(Ny;enrmM~XT!?`tk==s`W8-ie}MA?A7G&CC6$VyPvWrp=3}sT z4$k$?!};C?eBbjh*ggjXEz{87;>^+!y)E|WA+((CoJq)XCS=*7rqEGIafSto(~VJI zWQ~?`do&VY>I&^qnQe!>cynaMm?J&b3du2M$Vf0lW|9f}5PcLEn4!GH3{{nu{C%uZ zSwUc_noQ+$2Fux~D4&h$$~k;5i_z9N7X{f?$V@gvZiYQ_Qtj2m&87J>QIbCm6(!SA zTQ!Zx5wPm*`S;*VaUif-5Y9|dUulNgatqX!S)pFyuBz-I6IOS1II-U)V6}(^%aSl| zK{z#~5~+`(d?QqHxvJEZ{hK*zs(5@YkFU33pKgQNdcK1uM?#hWmIEG%Bba3DGC;!m z@rYS763JU8AZMQ*viEBvlaN#5YK)d(Cp3jRqdtZtTk$@6t3Jl%uAgxC{O`Cn_#5tA zS@xyXEeE6j`mOf{Q$x|o6+Fk?JwnK1b zXecrXx;mPKp^4OT*-`47QNuNdp^gc3CK^C%0yWxklQ29kAwDo>MGYgsoxAmaGre5wb>%SAg~S<0CL)#0ZR^FabKcI?&V8 zgN}|4WbQ*<9bH&kTEp4F5#}bQgeYy803|`%z7Vi%EiGYZVZo1yOrxU(Yl-`?vsR-B zpL}vDKL6@-Y}>sZ2MAa$ZijIyfB+TZ0pH-02nan%i1AQh6%ye}xH^H*NLK>X5dze4 z#3pzVXuP@IUFF9Lk2;BXHYEWXZ+66BAWnGfSCHlDdmNsAuJ8>xMWFJ+u~RMz{!aRwBxHpkIWrX*xj9HmCj@2W zAU(GT`2;4Jcdo3e1*Mc+f=^0O1=7o^QP|juVt$|nup|yEud*J6{3w^!wW@e3fv2d1 z41!q^QVADPgo)tDL=`9>N9Ym@mISuPBxfUr046Xc5>4O`xDpYomRPU^uyP3-WdtgL zrXdSX9ZE{s`4f_ctyNMd+XT8~KY_09zg>gFaaICU0$F0o8cLPWp|%N3$+E~WV2Ski zpH=y;I=lK5WOegHA|H#Mu3q$tJ7eGsE}gwVP4qOn#ll6%>ZY{SHlV(&1`TC|ID(5n zRtdo=i(pcaRzRpKLs3Q{a+0Xw=awm`Doo2)(3K_7#pf?6C`V#^D$-N4+365A37>`B zx1yvTbyckjsOl@Ew-VqydCv5d>?#%NizE1fF&s{WYlFjpS_a5lZ+&+ zm*9IsU=iGoJSQ3jRIjqEjC9-kFZ*V)fAGiGU%3edz+|-F2QR#UC#O$W7Ar}$AXD8)jMZ0fzpboR0$VaNP|9CE{Zwt2 zoK~{$`!Bqxz)9dtEMSsYRL=9>^Dn4+0XV61*}4_`*KbhEo0l!a_LVCXJPpTSNk(^< z?ORlkyNn!^SS;E0{fF-<=u&{iZQg{fNIzesMMtZcD{=oxGSP~>e3ha>GPz4&yI8Sg zy`ijJxd~3QvcQpaBy-nPeT^Kymi?io?aq;Q^ zZr(eOdw*WU9}mtDvbu5i&lcSIs~R`{$iu~((HOkqiGj<9(SL3SdIr|=-j|`F_DiE<#aTcIian>5#6;@&{N}#E<#dg84rJObq$_Bqb%Tb&5n)6m^LnSG}v6+a8K z)f4_?qUu@)wAD>UYyD)jH%}&DIr4qm@)!&L?xv`zF-K*k1Q-NlT6MJU^(gCEyu;EQFW@XZPh ztk`6Zl^gBx^C|~?{gWNu{*WEqQd8L2Ys1(~14bqj2`b~Er#lfwhPp5^kepW3UbXe1 zH^~q>8ivpsFJes1))W&6Ly~$y;OhSXmWG0^|DVG9EUzeJ+j*M6w$Lo!Oow+F{+gia&f@)_>$9vRrS5ceXwreYP?k5CEoKuJ= z0>V8B7rqFO^+srvy8=^y`6Rvj?ly<_+ zXS2$K^-;@f=OH{UMZr}%>oRhRk)2zt0IQy0S4~JL704?pS5PHzRa9I-;Hp&1 z!!E*x#&&cNswAdR|TRUmOKrN~dsLoT0LELO6d zotTNl@C2mArlNxIl%14`yp(Kqf_a3kLX;MiAup={N%3jOVqIBL6*b5LYLa=>9toC3 z4QQxnLsMl3`r9s0(>=#dy`5m!N6oQ|fHjnoLAeR}ECN{)>@ILsR^33Tk`aYsJG5_#g+Ll_aZ^hZs^R5Lr+=$XJwQx8ri)|g@G0B2JROg1&aQi7GZ@t&SL2MeZ6 z!P_r9uVSfWj>3=r^Ey6x<8=jDk}~1g?w#;*IgA~@ufq4Ae27)we}ipoyUV`#6yFj` zR>>4Mzx<3ngs%fzHmcEr@4oy3o+Dtr`{MKX;+?nf72EqJ!p^W&N-S405>TvC0#Iwe z`(8nkSfwO6sDPCKlYrI9UAtA?Pal7*>LsxK1K#iV?}_ldFAoJ>M+l8F+VCKs z!Sm35_^>Y6(?bDPMqE5nBBNCfEJ@8EBJRNS*f_N;Kvh>#inf|se%PyUn())czoP+} z1C-0d6ETbRN@AzP+9dA3t5>i6W7!f{q0A{LkTh(O60j10k{By-5$5FNsZsz;&RJ1W zrH+?Co*q=|x2{~l z{TnxMmmqfk_8t5|5WIPrkf+i-$o!lG?7jggLH3HUU+`fMnH}Cf2 z_Prk5|Em)Z(1Lq^Rp9Q!Y(iHuZrqN<^&3IBdeH|L`cL3Yy9>^?9mC~rH(cpIigUf& zsR*sYK=)5L+xHd0>O)*Q^Csn0Tsr+6k6B8&-K8x@j5)8>ZoO?F@8C0@ExzH0Do3UD0eRboMCD zwqc)PgW_C$6ctQDRfR60#R!cJrhI1-m_7qN9ShOXyc8{UPoSx0Df^LmXeVIRl}|%? zfiuBsI*PJoc@D}7W~01l7U5?Rk6pq(a~2iVnds}CsVr0Ngu||OYjn5Rp|jbMeIfy{ zc`BiH3cA{+pu5wF?_6TA%oJcXG+3dL@Fb}lnrrRRTE}xV62d4=gsb`*OWv;y@0V~@ zZ-?3j2UOMAqp;K(kHl{pi=4f>C_ieB^sSo6+^U6~9lFTdWq^V`2FTv2g`z`xsP-^N zkq1wf_!Rmp-o@#fw{gAeGjvqEj7x*x;NiVZz@NKt^X68hWxRxaE~eOdSYHL8Z`eN` zoAzm9%N{*!-l>P}2hFhixHa~B*kixD19rMtVA}x$Y}~Ga%{#{9&`~`cbtP0C*1%pD z4IFmY!=4j5%I&!0s1Ej?G{W{Hx>&Jw41QiW65szm0$>03IDTFu)-XH#zG*ssT0RXQ ze{PGHUo*$_nR+m{oCtlx36zO2FqlNqfsv5`A;l2-`g+jO*1;rA9m0toCXO>C7@0w9 zf+Z%7H&CPgWb~h=hJcf}3U$=nffKnd+y1|cmV&c!1gA07dPn|yG)7a)9V;5NxCvFf z)daO|3_E_=Z`_D+81>i~cJLH&5sn-|c^sohvBRf~;_|q0W1uY=+O>I4n&WvNVu|DP znVIsL^q_B`3sX~LSX-Jax1a!|9U<%OcizA!pM8Wk-hLG;eqRPx4{^!4!9TAew$PyCJ}C)W_L))J`J^LpDUJ8{5eBlaKO05`7#D!^UlBb2!a-Mn0I{M2!{db-0e zEC~MLq3{k4CaC#ReBcutir~l?!d3#J6J@ktHqvs6kVE*%E2&X&RSi9ZsP8$ANKe@C7~yiFqA_;NJ`0sk6$pne1Z@yX&(|&;o~0y|G+RLBxfKjBKDtU z3EIxiE9Nm-NJ`B@WHjL;GY^T$naE&ST2_Uss#=tn6Y>gpenMbjVJT{A8`$6oc4d`n zyTDT;A*`mhQDsQ45|<$Xu(hc}jrx;hpUNFb=nywzOhyIFpodV`A@C*%MN4Z?mR*Eg z0#p`ZvLv$rIf-dV3g>(F4M4EB4?Djc@B8ml3eaS=Ki5Jv4QyNuG-;2(ARGnzmk)H+G67QcT+dv^PU*1ii6u+ieKJyTyn?6^1hBDcw4jnv<1m5i zvQ1JrjQ!W+m`KplcYXu0{UZRHU%BbvUkEXD?3cJ zw8k^@=HP_|^Duw1172J>A78xnhMG=h&5z$(;=Rpb_rj zhRweU^n8X5KYoK>K6xKszVR~Feg75qtz89|&FgS#-%jjZvjRW7_ZEKq;B9>S&VTUT zyKky}w*9sYpS?z4BNVx8*^G@p{YV&Ej_u2T!>*Mpuxr&yY+m-WT6WpI83)#{=ed4| z=l*^0I&@IYE9iD$X!(N|p2LSPJcDH)yn{7geu~wEzMtQI17E%R5`O>cQyks24!#HW z^4Q%tuyGAmeEAWUfBpgXuUmz{>v(pTnGPShmjQ%fw%x)LYEt20{n*3M;vp3 z@9|^sKjDhl;2^?$I#Oa{5bp1f0!cF3(1@zSA{1q2QW;1^L|_nV2v>z!SyUD(P*qff z>LUK_z-C|ilTsAzAS+CCvM-lM|irda?nZptgfyjYz^S*l_ATO zfYtSDH`pHA(A?C*53*Q}1#)CgP(mG{Os1;3a`_t0o;i=2>RPlCyaxLQ(ALbqcY;(7 z@A>fl12}Q?IJR%vf;B5wW80?9IC}U9;v%C^QCxzGk}~9GW>K=yKuA0{IQWmn>jL3R z<}4Iz*yYQY34k(EQLJm1aO37x+_`rX5B|JOxrsmiyo&pOo>!KvKmR<9KOgq8z8&`; zG_tG*(1?eBR^h?@GW_*NIq&Q|lZmr}ii1Txlj5wtoS`CIZn z8m-XMWXEMf7Xhq;FxJuNL?D|+Fq=x?bL4MlkH%UDG}TMqEJwn)0~P2gD66!?BSnOn z{6ku(b~i)y2}_h8u|n})bCm73M%5vElVi`=N>0b3_mO4idWd7-Nr%C3YS& z$97kOmb)bmcv|D2n<=*K9*-Tn#^A&WU3hpH;*iS(>^nRThfnHa?=gLBJur!2rG>q& zy4Z4XJbvByKlowoBlvO6|KR)8Bd~ml3CTJ7F z^awZxs+4u9|9=tal-~!s7y2VzCkz;dma)ZL%)g#}Kwgvm7CCB}orQ zOTy8S-2Ny=JoYb)eEi=SH+CeiDQH zhk>!7f~}dersJt+mg2b=pT@U8e98B^n=o{gaOI`|N8+KvqrDLo=Z)}~Q-mj(D(5(S z{f;3Z$W@Ifl#zlG_#PAQt>Um`{y~|C&@bp9y!|ER!Zw1|76nxZysf zptrprjRcB{@>&((-arT|uOfi4^KYUC+}zQDhL%=BRvY1}4NWaA>@YeAPF?I6WH@(^ z8ul&2x>W}+)+>URXyW45=#U( zc~J%0n%YrXSVk?c1ubH=s%qr5dkI5bC@gOx9Cf3RDo%wKHZ|Il@NQ1iGUpVB{nJ!i0a1A|y?OCfnTje~nbB8YEl0CY2o-HK?+@ zO9poWmF5VM(W;y@a;y@W7gXaho@1u}QNh)Jo?L== zo_iXfzwsKrdFM?m`}8CH`uQiyO}6aQ5App6@8al=E%0?YgiXKvgx|mY3hRIP2FnRn zZ!DgRFJFBQ-@f@W-hFBzzJ22*>|M1CC%13J&fk8(x^F(kCbsR(KN75#eXF(|-mnI% zB+lu#U*Jtpa@(~72iLEK`|h1MxpO;quUdgUt5@LYmQAXD+po)TV*6HvyRpq5J&faf zcEQ*6DB=Tsv3upO`1!!ZypNqfeGQkj1h(ZrV(0RoaCj5j z|F(5Fws|%7|NbkEZ&`~NPgf-Qdm+NZ6+tIlP>>Xd^r&zohOzDW`5=UUYcWCmJBx}& zQe-5OqGOPel%xQvG(TTS1tF@YtPFMK<@|^iASosmk-;ITA@H}>5t7>5`S;&SaO%Zr zf=@T0Y2fr(6{k3O=7O3+>f)tqxJSskb^AU6?2NMhN-nzkh8CP7bcyBa!nupMbm1~O z+q?L2ZB-WGu8wY;Ca|49E2DG=l@cRLi|pGiE_q(Fp{5Qok__3~7blJ!#iq6EuzllZ zY+knk+cs>%`c=Qkq<|Oz|V59&g~Uzb;cQQZD>0=LuHlC};mm2JsgLxPPC5 zu!j$OfCmi(ts+V`9^OgD{o7Hvb2AXPZg}9v^~1PwX)B*`CC;4whT!o&0pu05H$6+J zS&Gi4#Z=ms;_SdvxP0z8T)#*bxbOn5oOyomh9p_S+oJS>cKHvEQ^mE_- z_CA3?m*Q-`$9YsTXHYqHV*fW8&CPabZnWle z*rUIPaME=MY!_Gp*5vQ7e4`(*wt*%6j)DGthY*h#SL6bDTsWX(cFj1$h)zJyDyZ{ybKZ*i&T2V6h94u3s3!5?QY zKQwQ{)7JsVJWO%i%>svco;~}_`4OIsgB}h9EDLNsW`cblmN-J$b5I)x4rs#N%?O^J zCOCRr3kQ#C;)uHe4xBI`s7=D={S&a2aJ7E-Nc^_(5z4=@V)H1L6R~=WIo51(#;>cU z;-gP(@$7T@m@!L(;4vPC#^VWA8U!n?Axn?G9$`zHP^E#1n(QpKB+hBl&>UqG^a(-6 z6f;cHF!_HCSOQT3SprW2P9n1W4`8trz#85rGE%Hu?EF<$_|c;=cBG_gcnqVJ^=dRG zO`-;^t2Jb`vM^CVC1PV|1#25i7#Qh8Q;Q!Atw}I6F~*c>&X~7g4i+q$gRj2*40{i3 zC**F#(GzMPM<9|eDcMpqn<2Fe^ zx(mlnZXsB0hnL?TiU1Sg>Ev2vy>j*3h?Cxu18XA=99^R(dzL&{Cr<5xPk@UGsQ2(b z#N(*72D!u2&ka67eh7+;CR_#Mh}$U~_w<3gUm!dKLkL=Nh~-B;B_|*0)KaC4O-)ze z6%rGVu=r#I$0WgnVC3o(2sgr!n@6h_GlR#3ifsqQYY2=H@F` zg20so#>!l15*#a|l!m2(ASlDb#VsL0xJ?Z*YN!<*&0VOjASmXS60*3RU{%MCy|J|e zO$4a=W`bFRj7V&wHZHD@W;WyoHtGgK3<0gXN5Pfk&XFPA5|BGQOud)3cG6oQCw+1Z1(J&xlVzPI4kL;$n~)&ktCDH@sbsAemqlaOxPL z>m;(1lTgCnK)_0JXQd{jDap?&P;ix=l!3~UD#By4TCc0DLpOm))*Hmq*xZZK>Q)p> z{9H{NL93IUY!50My9rma-mcPN$OysVvbMEnXp-l40vFFE?%yiHRVmLWfF&_n`GwU; zC1eE!Mq}spLwNViPvLAk6NcK7U7gB?mN6`~jaBT_1POBgpAkceMY$|+C7IkM2iE_A zD;YUBB-*1VD2S5$bHh-jK#S`FTH0eKsCDhp8-Dm4+kX2Vdw=Kk zHm-o%jtw}qdkex(x*#Rk7g3%k5#n|Xi9!A-N=ZU>elFreg5h)g7<^n^ReV)ZW)?D~ z%*jD@DHWH30wvA0R6yrNRjB{~|MW>jK~yMJB_(JfP!;FqA~rl+ftc*uODK`~{`&e( zqm^*f(b=oON}x)tR+lbcBV=7r%XjYHCw!g9*>jhaC9AZ&S^<}U)#Zy@k6obMG~Tl zNIHp!fBk{K9^S%Ve_mlp$P)Q;sC@YF61Nk&a7oEST)+c@*Mo;=@dxF>pMwgv@UWZG zL22f3b*wMN-9NH%=Ux(S-HpP{+X1+C{Uk13Jb<%<+i<#fE&98b6Hvb6JNXNtROfFWHrb%J5AG2R&Ikw z@;nVu6>N<%9}5(mFhPl{6)M~&qxh%;#SukE?U8%Pf?|%0gXYL~wMVJ{bd&{8MRoKv zRK`xh>55lyqw6d5*L;Gjy{mBN(oWpHwg*=)Z{`Q%9ry>>W~$e?08$M!>{$%-`0li3Af} z7#SL=fN`x!n$Xao<~m^{0c#w$PlC3#%qggY@nZ}KKqiy1ctH`jr3-D zlI1BxC-^9ltn89N)Js{dB!l}Yf|a`(O?c8{Cyt-k#_cjW^nL|cuI`)R?zKaKmS4zz z1y}oBs2RI$fS3OsxcltJzQb#na!d~6cZ32k}QKGP)tpPi+Y0$Ia=B|s(d8xl+_ zRxSap8fv=3u^-h0swNqASJRA2!k>&Flvu7BLQ-ubL8`S)!BtINEjuKcqC;|IHKV4o z3UyW0YJ`zY#UUcDK$*Q?+!}ISfvkFgID*>nNW(^%FOlc3t7)XRSAhb)(@eg{w73M8 zLx7b=xJn3!G$0JI5wXZj z=6i@sfuwOL$txjjrK75}T3NGd<@u@_(a_S1nx-BFRwY%fD6i!`wGE)IwNF{Dh5<_~ zSrT_u(?n4097JR10ICUBr36Natt;X?E2wNx@mOWtuc)LBDJgmI_6o(?-?!oA=ih>( z^)wjkT0vLC2ou;2b=c-)#Gf{m7^4X~svPymzcKoeM^${5z?IZVo-1)9ipaYDI88{N zIf1ERxY8k1$pq_$6DBG68vC!uV5+T$8FrKZ1}q0Gm^vNrz5Fu4>UF$JuoB4n_|=#2 z!-wx-^|xQ)w=X_bpe2B{?#J)&<45n~ji-iS?49SI#xpaV@zxUy@WpG-vz(7-raR(= z*;DY#M{i@p_XM<0-&26Kd*#pAy6jtQ`td6SA3K1cqx-S_*B@|#z;=Aw7OegDYkc^^ za|)=AZQacJZTR86cksfTS@`aqx3Fc|PuTR+4{DpwfqjVe^+INJ1VZ@RN1Qr=6oU5l zpTETl!qs5{)Vhz}!1|Bh#9Efe*Zu;3Nm{&dr2;CkUj6>%he}+xu0x>9e#CjXAuW^& z)UiVdB& zS0g_&6FpQoWH~7&2I+~31pF+>{C{T%RXx3@2~g*7{=yYy!MZ?Lx_Rp!E?>EU>o@M; z-u;J!hTFJt^R9w08Gs@{cIDDl1yFrG{mMEepe1l6Aa&;SSpvp6C9>WugEPu1*_P^& z#dhR(${WGH{%X1&0jL1>En>~uvTg%5tX`w6T8YuIy!UKWvM*?@Z{+i|vTg90>gv(P zw%*q-mS@Qhe;QY=Tv1jlkz2QJ;jT=h^SAYC7_=V#^?;Cc2M-@yr(7G7KSi!`JLTb3 zg4K2W2`>M26@UD78TSca5*&Z;&kJf@w)1UppUafU|RDC}+9|a2<;=(7puStwV0Zw)#1g*{H9Yf`%Grg3%1V*Qv_Y*g=qLl~fH) z4$39iOUM)H=^!+9Od&uK!jwDEUX{%a)@Z1;qF5-aS6efWBVdX3s-HmEL&)lAB2*Es zS_xY11VfRghN)C?rwjpBet;R85=mXr&L})3kY$OYlZ2|HcF1+HM~;gf!O8;Zgsa3o zMo8Xgj+6uDNIqzY>agi34xEhkjHl3+{UX}(B#px|T!7W18+0`h`f0^Vy zogXfH964f-Lp=AUy@uFy$QTDs+2N?KBaVC7@xyJ7lP68#>0u5J4-*Ag`;KVfpsN;+ zc^l!7hc0#>n~0r9CK9qH5UeI(>waBqJzz$_vc!t@Hu(ByYrOHEF%~b?grk!r6a5!~ zV>EPhhb&ZvhJ+GBQ$mV9CQh8FtU_bQJr2!D>@ao3O*jNnI?fAmtQV`5+o@ej1g^aN_Td!4 zN!*0Kf&1YXbbye=b-$e|d;5_S>u`+Vb&}xa=CvCqJ$J#=?+}5?gRtWPp8(0ZbsRqa zyk4j`?;!v|5upem^!O8i#4Q+~o~0~RQpOQ*qLb4UT#5W&ms1g$l!7pVg18j@!=vFv zP;>VU;5CDI&1eLNM&RI~BRJx6jDKSua691!4|flEp7O-O{ReRDunPiw{Nd_y90&I9 zgQuGZygj_&&kiz?0GCK@Gb%h187XNdS0C~B;UiOK(1u%wicN3txC zC2%Eyu>w~DSz_UmWdX19;tJH1*Rq3cR-*@NsvA{YNO^S)$_PmUT9q|5sHm(YFf}WX zYM>ThNlmx9yqt}@QGwO46-xk1+=2pE?d=^b*@07=A9jTd16EmSC5rO+5i2Y~X&&#H z&m}QdVZQtbdU+zy!wnIB-bjm$K%~DHVuE}SM!1UbJ%tc%5BBjxTtp1A1uzMqQ6UkC zA$SUSr4d4N#Nx*?JuwxPB^9Wvs8MAVVW^rARoB$3q^zn9rG%{7#vUayBDB1^4fV}^ zsB0#OHA*1-X*747p|;zHs@85)P)Zxx6l|3>w4+e0e|3T2tQ<`(VQ*}XCuYsVhp)Vf&)@tHK7IWa z1y=%9Vy#;B&6f(OzIpd8W!ZZDiN$z+-fX-ue-7S%@j2yET;ybnPhWl-Z!VpO*_K9F zGT9m*Jhzl}&*0OSp22UQysJQK^G{zZz&cK#2|IBZhc~Rkwq@U8`)@yE^;ZP3&puHw z_2qwFQ*d=^?{2j`*TxDj&Yi8mORQP}E{EZF_#h%rxg$L?1gQ~$i1u_tMlk;_4(!6O zZ@+@w-+zXEl(p}_isf&=h&?}jffE~+ii=Pn>&n%e1T2EdU%;)~ zL+gG0XZgYJ$F(chaqGry1ySN66sQsr_n^R*Se+%Yu9WGi8E|J`63xCKCo>1W9-i2= zW*v^RpGl?SCvYXe<#p0sZ5u9=V&c%iw%x~eDk4cm#l?U2+*tykj7pRVs)sCB!+<4l zH4Ie`9z0MY%YXg#5cum4;Ne}$ogw+_4(kbBlt00e@__OOh@c$dQ&9%GS z>o!5{=3n=4gU4V0i(CG>ft!S`8xQ%;9-hISzXoyduhRsse%$}F2lxMI$KCs7e1Fln zb2k{b@A?qDWLln`1lE=4?)@4)eeV-)|3g@O7N-XnQD$Lqa4N-#G7V=>FTwf2XK|+g zDT2-dbhpn%Z`VBZ_snNG7d@SG(NDlS-6K{j0u^CxNS?yko+mKaxrm^%0R3$XRU*{( zx|wLHo35n3ax&_x$tDD%b^=yAfvT&Mz|}5wPUvo%!E4SOlCGI5j;yPF3Sn1buk0xT zSXNYg%~4xr%+gc=S4WF8dfI36cbkV^-fu@Uuh}?FNrwc}x6dJriK}o5`+QqGQV?o` z@^Cv;hS{UY+X{InEs=fH5@`o4D3(asXMt3fS;y_UY=*>b#)#dli-eu}$aS?wi4RW{ zJR7CKbJ3LgG6qUM$JOTFaJ78}u6D1)-3#k+~qz} zj>D8gX4rnf7HhZJ%!97lFw)bBU2;j61emz zrdDQfoZ^JJ^XCyV7i0R&X#}mg`1zL~uxsx&Y~QsBM_u<5hK|8Mcqj%-04qA)PsLx! zC_jISZ@^&{+#VC}g`m)5aCP5~6Ye_*Lr1ya$^RNX$PP19Mid_5xd?3nTK;GBHJM6Om=HUWxlqfXq82T*YpA1_Z;G%i#00e- z#LhD^EDUi3t_0q9T3Uv36-rFjumwwCD2n#}- zxNhB#!ROdPMEH0hGJxyq;}OV@MZAKnWd06OeCLtD;ndzESeK!;31F2fkdvu*%2a-@ z%IX#cQ%!9HDjrLKO3GSs5sF2N>y51gXzxC+q_y)b8d~~M$$bQ{%9}e?kb4EoVwNh~ zep$U5K`1W5z<_A1Ubz`d7CZ}cLt7Z@T0(ogJ|;XS=@up^h*H_uSqemng-U>H!oS!D zuucF>L}Ih_*>;U(q@a$GnqXa^N~~7K6SZNcrKd#dB=*W&TOST47MNk{sNhN<>$!zX z@Smp$NKZYX+

gwc+O+l8K6>#5eD>S|uAw;;JM69=`ij|7> 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

hR%~~ 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
t4q~v4{TZtsGG0_MktC|5BTUv+ZU}dK# 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%0D2^3zug5pa#7-(t3#?%}JnmVvGvxKva9W0DY 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 z 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 Qw=*>9jfmjD0& literal 0 HcmV?d00001 diff --git a/openmmlab_test/mmclassification-0.24.1/demo/image_demo.py b/openmmlab_test/mmclassification-0.24.1/demo/image_demo.py new file mode 100644 index 00000000..8539ef48 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/demo/image_demo.py @@ -0,0 +1,33 @@ +# Copyright (c) OpenMMLab. All rights reserved. +from argparse import ArgumentParser + +import mmcv + +from mmcls.apis import inference_model, init_model, show_result_pyplot + + +def main(): + parser = ArgumentParser() + parser.add_argument('img', help='Image file') + parser.add_argument('config', help='Config file') + parser.add_argument('checkpoint', help='Checkpoint file') + parser.add_argument( + '--show', + action='store_true', + help='Whether to show the predict results by matplotlib.') + parser.add_argument( + '--device', default='cuda:0', help='Device used for inference') + args = parser.parse_args() + + # build the model from a config file and a checkpoint file + model = init_model(args.config, args.checkpoint, device=args.device) + # test a single image + result = inference_model(model, args.img) + # show the results + print(mmcv.dump(result, file_format='json', indent=4)) + if args.show: + show_result_pyplot(model, args.img, result) + + +if __name__ == '__main__': + main() diff --git a/openmmlab_test/mmclassification-0.24.1/demo/ipu_train_example.sh b/openmmlab_test/mmclassification-0.24.1/demo/ipu_train_example.sh new file mode 100644 index 00000000..94c8456d --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/demo/ipu_train_example.sh @@ -0,0 +1,9 @@ + + +# get SOTA accuracy 81.2 for 224 input ViT fine-tuning, reference is below: +# https://github.com/google-research/vision_transformer#available-vit-models +# cfg: vit-base-p16_ft-4xb544_in1k-224_ipu train model in fp16 precision +# 8 epoch, 2176 batch size, 16 IPUs, 4 replicas, model Tput = 5600 images, training time 0.6 hour roughly +cfg_name=vit-base-p16_ft-4xb544_in1k-224_ipu +python3 tools/train.py configs/vision_transformer/${cfg_name}.py --ipu-replicas 4 --no-validate && +python3 tools/test.py configs/vision_transformer/${cfg_name}.py work_dirs/${cfg_name}/latest.pth --metrics accuracy --device ipu diff --git a/openmmlab_test/mmclassification-0.24.1/docker/Dockerfile b/openmmlab_test/mmclassification-0.24.1/docker/Dockerfile new file mode 100644 index 00000000..fc36510f --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/docker/Dockerfile @@ -0,0 +1,23 @@ +ARG PYTORCH="1.8.1" +ARG CUDA="10.2" +ARG CUDNN="7" + +FROM pytorch/pytorch:${PYTORCH}-cuda${CUDA}-cudnn${CUDNN}-devel + +ENV TORCH_CUDA_ARCH_LIST="6.0 6.1 7.0+PTX" +ENV TORCH_NVCC_FLAGS="-Xfatbin -compress-all" +ENV CMAKE_PREFIX_PATH="(dirname(which conda))/../" + +RUN apt-get update && apt-get install -y ffmpeg libsm6 libxext6 git ninja-build libglib2.0-0 libsm6 libxrender-dev libxext6 \ + && apt-get clean \ + && rm -rf /var/lib/apt/lists/* + +# Install MMCV +RUN pip install openmim +RUN mim install mmcv-full + +# Install MMClassification +RUN conda clean --all +RUN git clone https://github.com/open-mmlab/mmclassification.git +WORKDIR ./mmclassification +RUN pip install --no-cache-dir -e . diff --git a/openmmlab_test/mmclassification-0.24.1/docker/serve/Dockerfile b/openmmlab_test/mmclassification-0.24.1/docker/serve/Dockerfile new file mode 100644 index 00000000..3056e905 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/docker/serve/Dockerfile @@ -0,0 +1,49 @@ +ARG PYTORCH="1.8.1" +ARG CUDA="10.2" +ARG CUDNN="7" +FROM pytorch/pytorch:${PYTORCH}-cuda${CUDA}-cudnn${CUDNN}-devel + +ARG MMCV="1.7.0" +ARG MMCLS="0.24.1" + +ENV PYTHONUNBUFFERED TRUE + +RUN apt-get update && \ + DEBIAN_FRONTEND=noninteractive apt-get install --no-install-recommends -y \ + ca-certificates \ + g++ \ + openjdk-11-jre-headless \ + # MMDet Requirements + ffmpeg libsm6 libxext6 git ninja-build libglib2.0-0 libsm6 libxrender-dev libxext6 \ + && rm -rf /var/lib/apt/lists/* + +ENV PATH="/opt/conda/bin:$PATH" +RUN export FORCE_CUDA=1 + +# TORCHSEVER +RUN pip install torchserve torch-model-archiver + +# MMLAB +ARG PYTORCH +ARG CUDA +RUN ["/bin/bash", "-c", "pip install mmcv-full==${MMCV} -f https://download.openmmlab.com/mmcv/dist/cu${CUDA//./}/torch${PYTORCH}/index.html"] +RUN pip install mmcls==${MMCLS} + +RUN useradd -m model-server \ + && mkdir -p /home/model-server/tmp + +COPY entrypoint.sh /usr/local/bin/entrypoint.sh + +RUN chmod +x /usr/local/bin/entrypoint.sh \ + && chown -R model-server /home/model-server + +COPY config.properties /home/model-server/config.properties +RUN mkdir /home/model-server/model-store && chown -R model-server /home/model-server/model-store + +EXPOSE 8080 8081 8082 + +USER model-server +WORKDIR /home/model-server +ENV TEMP=/home/model-server/tmp +ENTRYPOINT ["/usr/local/bin/entrypoint.sh"] +CMD ["serve"] diff --git a/openmmlab_test/mmclassification-speed-benchmark/docker/serve/config.properties b/openmmlab_test/mmclassification-0.24.1/docker/serve/config.properties similarity index 100% rename from openmmlab_test/mmclassification-speed-benchmark/docker/serve/config.properties rename to openmmlab_test/mmclassification-0.24.1/docker/serve/config.properties diff --git a/openmmlab_test/mmclassification-speed-benchmark/docker/serve/entrypoint.sh b/openmmlab_test/mmclassification-0.24.1/docker/serve/entrypoint.sh similarity index 100% rename from openmmlab_test/mmclassification-speed-benchmark/docker/serve/entrypoint.sh rename to openmmlab_test/mmclassification-0.24.1/docker/serve/entrypoint.sh diff --git a/openmmlab_test/mmclassification-speed-benchmark/docs/Makefile b/openmmlab_test/mmclassification-0.24.1/docs/en/Makefile similarity index 100% rename from openmmlab_test/mmclassification-speed-benchmark/docs/Makefile rename to openmmlab_test/mmclassification-0.24.1/docs/en/Makefile diff --git a/openmmlab_test/mmclassification-0.24.1/docs/en/_static/css/readthedocs.css b/openmmlab_test/mmclassification-0.24.1/docs/en/_static/css/readthedocs.css new file mode 100644 index 00000000..577a67a8 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/docs/en/_static/css/readthedocs.css @@ -0,0 +1,27 @@ +.header-logo { + background-image: url("../image/mmcls-logo.png"); + background-size: 204px 40px; + height: 40px; + width: 204px; +} + +pre { + white-space: pre; +} + +article.pytorch-article section code { + padding: .2em .4em; + background-color: #f3f4f7; + border-radius: 5px; +} + +/* Disable the change in tables */ +article.pytorch-article section table code { + padding: unset; + background-color: unset; + border-radius: unset; +} + +table.autosummary td { + width: 50% +} diff --git a/openmmlab_test/mmclassification-speed-benchmark/resources/mmcls-logo.png b/openmmlab_test/mmclassification-0.24.1/docs/en/_static/image/mmcls-logo.png similarity index 100% rename from openmmlab_test/mmclassification-speed-benchmark/resources/mmcls-logo.png rename to openmmlab_test/mmclassification-0.24.1/docs/en/_static/image/mmcls-logo.png diff --git a/openmmlab_test/mmclassification-0.24.1/docs/en/_static/image/tools/analysis/analyze_log.jpg b/openmmlab_test/mmclassification-0.24.1/docs/en/_static/image/tools/analysis/analyze_log.jpg new file mode 100644 index 0000000000000000000000000000000000000000..8eb1a27d6464d255b84b23a7460a5f622f51712f GIT binary patch literal 68146 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

+ +```shell +python tools/analysis_tools/analyze_logs.py plot_curve \ + ${JSON_LOGS} \ + [--keys ${KEYS}] \ + [--title ${TITLE}] \ + [--legend ${LEGEND}] \ + [--backend ${BACKEND}] \ + [--style ${STYLE}] \ + [--out ${OUT_FILE}] \ + [--window-size ${WINDOW_SIZE}] +``` + +**Description of all arguments**: + +- `json_logs` : The paths of the log files, separate multiple files by spaces. +- `--keys` : The fields of the logs to analyze, separate multiple keys by spaces. Defaults to 'loss'. +- `--title` : The title of the figure. Defaults to use the filename. +- `--legend` : The names of legend, the number of which must be equal to `len(${JSON_LOGS}) * len(${KEYS})`. Defaults to use `"${JSON_LOG}-${KEYS}"`. +- `--backend` : The backend of matplotlib. Defaults to auto selected by matplotlib. +- `--style` : The style of the figure. Default to `whitegrid`. +- `--out` : The path of the output picture. If not set, the figure won't be saved. +- `--window-size`: The shape of the display window. The format should be `'W*H'`. Defaults to `'12*7'`. + +```{note} +The `--style` option depends on `seaborn` package, please install it before setting it. +``` + +Examples: + +- Plot the loss curve in training. + + ```shell + python tools/analysis_tools/analyze_logs.py plot_curve your_log_json --keys loss --legend loss + ``` + +- Plot the top-1 accuracy and top-5 accuracy curves, and save the figure to results.jpg. + + ```shell + python tools/analysis_tools/analyze_logs.py plot_curve your_log_json --keys accuracy_top-1 accuracy_top-5 --legend top1 top5 --out results.jpg + ``` + +- Compare the top-1 accuracy of two log files in the same figure. + + ```shell + python tools/analysis_tools/analyze_logs.py plot_curve log1.json log2.json --keys accuracy_top-1 --legend exp1 exp2 + ``` + +```{note} +The tool will automatically select to find keys in training logs or validation logs according to the keys. +Therefore, if you add a custom evaluation metric, please also add the key to `TEST_METRICS` in this tool. +``` + +### Calculate Training Time + +`tools/analysis_tools/analyze_logs.py` can also calculate the training time according to the log files. + +```shell +python tools/analysis_tools/analyze_logs.py cal_train_time \ + ${JSON_LOGS} + [--include-outliers] +``` + +**Description of all arguments**: + +- `json_logs` : The paths of the log files, separate multiple files by spaces. +- `--include-outliers` : If set, include the first iteration in each epoch (Sometimes the time of first iterations is longer). + +Example: + +```shell +python tools/analysis_tools/analyze_logs.py cal_train_time work_dirs/some_exp/20200422_153324.log.json +``` + +The output is expected to be like the below. + +```text +-----Analyze train time of work_dirs/some_exp/20200422_153324.log.json----- +slowest epoch 68, average time is 0.3818 +fastest epoch 1, average time is 0.3694 +time std over epochs is 0.0020 +average iter time: 0.3777 s/iter +``` + +## Result Analysis + +With the `--out` argument in `tools/test.py`, we can save the inference results of all samples as a file. +And with this result file, we can do further analysis. + +### Evaluate Results + +`tools/analysis_tools/eval_metric.py` can evaluate metrics again. + +```shell +python tools/analysis_tools/eval_metric.py \ + ${CONFIG} \ + ${RESULT} \ + [--metrics ${METRICS}] \ + [--cfg-options ${CFG_OPTIONS}] \ + [--metric-options ${METRIC_OPTIONS}] +``` + +Description of all arguments: + +- `config` : The path of the model config file. +- `result`: The Output result file in json/pickle format from `tools/test.py`. +- `--metrics` : Evaluation metrics, the acceptable values depend on the dataset. +- `--cfg-options`: If specified, the key-value pair config will be merged into the config file, for more details please refer to [Tutorial 1: Learn about Configs](../tutorials/config.md) +- `--metric-options`: If specified, the key-value pair arguments will be passed to the `metric_options` argument of dataset's `evaluate` function. + +```{note} +In `tools/test.py`, we support using `--out-items` option to select which kind of results will be saved. Please ensure the result file includes "class_scores" to use this tool. +``` + +**Examples**: + +```shell +python tools/analysis_tools/eval_metric.py configs/t2t_vit/t2t-vit-t-14_8xb64_in1k.py your_result.pkl --metrics accuracy --metric-options "topk=(1,5)" +``` + +### View Typical Results + +`tools/analysis_tools/analyze_results.py` can save the images with the highest scores in successful or failed prediction. + +```shell +python tools/analysis_tools/analyze_results.py \ + ${CONFIG} \ + ${RESULT} \ + [--out-dir ${OUT_DIR}] \ + [--topk ${TOPK}] \ + [--cfg-options ${CFG_OPTIONS}] +``` + +**Description of all arguments**: + +- `config` : The path of the model config file. +- `result`: Output result file in json/pickle format from `tools/test.py`. +- `--out-dir`: Directory to store output files. +- `--topk`: The number of images in successful or failed prediction with the highest `topk` scores to save. If not specified, it will be set to 20. +- `--cfg-options`: If specified, the key-value pair config will be merged into the config file, for more details please refer to [Tutorial 1: Learn about Configs](../tutorials/config.md) + +```{note} +In `tools/test.py`, we support using `--out-items` option to select which kind of results will be saved. Please ensure the result file includes "pred_score", "pred_label" and "pred_class" to use this tool. +``` + +**Examples**: + +```shell +python tools/analysis_tools/analyze_results.py \ + configs/resnet/resnet50_b32x8_imagenet.py \ + result.pkl \ + --out-dir results \ + --topk 50 +``` + +## Model Complexity + +### Get the FLOPs and params (experimental) + +We provide a script adapted from [flops-counter.pytorch](https://github.com/sovrasov/flops-counter.pytorch) to compute the FLOPs and params of a given model. + +```shell +python tools/analysis_tools/get_flops.py ${CONFIG_FILE} [--shape ${INPUT_SHAPE}] +``` + +Description of all arguments: + +- `config` : The path of the model config file. +- `--shape`: Input size, support single value or double value parameter, such as `--shape 256` or `--shape 224 256`. If not set, default to be `224 224`. + +You will get a result like this. + +```text +============================== +Input shape: (3, 224, 224) +Flops: 4.12 GFLOPs +Params: 25.56 M +============================== +``` + +```{warning} +This tool is still experimental and we do not guarantee that the number is correct. You may well use the result for simple comparisons, but double-check it before you adopt it in technical reports or papers. +- FLOPs are related to the input shape while parameters are not. The default input shape is (1, 3, 224, 224). +- Some operators are not counted into FLOPs like GN and custom operators. Refer to [`mmcv.cnn.get_model_complexity_info()`](https://github.com/open-mmlab/mmcv/blob/master/mmcv/cnn/utils/flops_counter.py) for details. +``` + +## FAQs + +- None diff --git a/openmmlab_test/mmclassification-0.24.1/docs/en/tools/miscellaneous.md b/openmmlab_test/mmclassification-0.24.1/docs/en/tools/miscellaneous.md new file mode 100644 index 00000000..4e66d91a --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/docs/en/tools/miscellaneous.md @@ -0,0 +1,59 @@ +# Miscellaneous + + + +- [Print the entire config](#print-the-entire-config) +- [Verify Dataset](#verify-dataset) +- [FAQs](#faqs) + + + +## Print the entire config + +`tools/misc/print_config.py` prints the whole config verbatim, expanding all its imports. + +```shell +python tools/misc/print_config.py ${CONFIG} [--cfg-options ${CFG_OPTIONS}] +``` + +Description of all arguments: + +- `config` : The path of the model config file. +- `--cfg-options`: If specified, the key-value pair config will be merged into the config file, for more details please refer to [Tutorial 1: Learn about Configs](../tutorials/config.md) + +**Examples**: + +```shell +python tools/misc/print_config.py configs/t2t_vit/t2t-vit-t-14_8xb64_in1k.py +``` + +## Verify Dataset + +`tools/misc/verify_dataset.py` can verify dataset, check whether there are broken pictures in the given dataset. + +```shell +python tools/print_config.py \ + ${CONFIG} \ + [--out-path ${OUT-PATH}] \ + [--phase ${PHASE}] \ + [--num-process ${NUM-PROCESS}] + [--cfg-options ${CFG_OPTIONS}] +``` + +**Description of all arguments**: + +- `config` : The path of the model config file. +- `--out-path` : The path to save the verification result, if not set, defaults to 'brokenfiles.log'. +- `--phase` : Phase of dataset to verify, accept "train" "test" and "val", if not set, defaults to "train". +- `--num-process` : number of process to use, if not set, defaults to 1. +- `--cfg-options`: If specified, the key-value pair config will be merged into the config file, for more details please refer to [Tutorial 1: Learn about Configs](../tutorials/config.md) + +**Examples**: + +```shell +python tools/misc/verify_dataset.py configs/t2t_vit/t2t-vit-t-14_8xb64_in1k.py --out-path broken_imgs.log --phase val --num-process 8 +``` + +## FAQs + +- None diff --git a/openmmlab_test/mmclassification-0.24.1/docs/en/tools/model_serving.md b/openmmlab_test/mmclassification-0.24.1/docs/en/tools/model_serving.md new file mode 100644 index 00000000..d633a0f3 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/docs/en/tools/model_serving.md @@ -0,0 +1,87 @@ +# Model Serving + +In order to serve an `MMClassification` model with [`TorchServe`](https://pytorch.org/serve/), you can follow the steps: + +## 1. Convert model from MMClassification to TorchServe + +```shell +python tools/deployment/mmcls2torchserve.py ${CONFIG_FILE} ${CHECKPOINT_FILE} \ +--output-folder ${MODEL_STORE} \ +--model-name ${MODEL_NAME} +``` + +```{note} +${MODEL_STORE} needs to be an absolute path to a folder. +``` + +Example: + +```shell +python tools/deployment/mmcls2torchserve.py \ + configs/resnet/resnet18_8xb32_in1k.py \ + checkpoints/resnet18_8xb32_in1k_20210831-fbbb1da6.pth \ + --output-folder ./checkpoints \ + --model-name resnet18_in1k +``` + +## 2. Build `mmcls-serve` docker image + +```shell +docker build -t mmcls-serve:latest docker/serve/ +``` + +## 3. Run `mmcls-serve` + +Check the official docs for [running TorchServe with docker](https://github.com/pytorch/serve/blob/master/docker/README.md#running-torchserve-in-a-production-docker-environment). + +In order to run in GPU, you need to install [nvidia-docker](https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/install-guide.html). You can omit the `--gpus` argument in order to run in GPU. + +Example: + +```shell +docker run --rm \ +--cpus 8 \ +--gpus device=0 \ +-p8080:8080 -p8081:8081 -p8082:8082 \ +--mount type=bind,source=`realpath ./checkpoints`,target=/home/model-server/model-store \ +mmcls-serve:latest +``` + +```{note} +`realpath ./checkpoints` points to the absolute path of "./checkpoints", and you can replace it with the absolute path where you store torchserve models. +``` + +[Read the docs](https://github.com/pytorch/serve/blob/master/docs/rest_api.md) about the Inference (8080), Management (8081) and Metrics (8082) APis + +## 4. Test deployment + +```shell +curl http://127.0.0.1:8080/predictions/${MODEL_NAME} -T demo/demo.JPEG +``` + +You should obtain a response similar to: + +```json +{ + "pred_label": 58, + "pred_score": 0.38102269172668457, + "pred_class": "water snake" +} +``` + +And you can use `test_torchserver.py` to compare result of TorchServe and PyTorch, and visualize them. + +```shell +python tools/deployment/test_torchserver.py ${IMAGE_FILE} ${CONFIG_FILE} ${CHECKPOINT_FILE} ${MODEL_NAME} +[--inference-addr ${INFERENCE_ADDR}] [--device ${DEVICE}] +``` + +Example: + +```shell +python tools/deployment/test_torchserver.py \ + demo/demo.JPEG \ + configs/resnet/resnet18_8xb32_in1k.py \ + checkpoints/resnet18_8xb32_in1k_20210831-fbbb1da6.pth \ + resnet18_in1k +``` diff --git a/openmmlab_test/mmclassification-0.24.1/docs/en/tools/onnx2tensorrt.md b/openmmlab_test/mmclassification-0.24.1/docs/en/tools/onnx2tensorrt.md new file mode 100644 index 00000000..ea0f1484 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/docs/en/tools/onnx2tensorrt.md @@ -0,0 +1,80 @@ +# ONNX to TensorRT (Experimental) + + + +- [ONNX to TensorRT (Experimental)](#onnx-to-tensorrt-experimental) + - [How to convert models from ONNX to TensorRT](#how-to-convert-models-from-onnx-to-tensorrt) + - [Prerequisite](#prerequisite) + - [Usage](#usage) + - [List of supported models convertible to TensorRT](#list-of-supported-models-convertible-to-tensorrt) + - [Reminders](#reminders) + - [FAQs](#faqs) + + + +## How to convert models from ONNX to TensorRT + +### Prerequisite + +1. Please refer to [install.md](https://mmclassification.readthedocs.io/en/latest/install.html#install-mmclassification) for installation of MMClassification from source. +2. Use our tool [pytorch2onnx.md](./pytorch2onnx.md) to convert the model from PyTorch to ONNX. + +### Usage + +```bash +python tools/deployment/onnx2tensorrt.py \ + ${MODEL} \ + --trt-file ${TRT_FILE} \ + --shape ${IMAGE_SHAPE} \ + --max-batch-size ${MAX_BATCH_SIZE} \ + --workspace-size ${WORKSPACE_SIZE} \ + --fp16 \ + --show \ + --verify \ +``` + +Description of all arguments: + +- `model` : The path of an ONNX model file. +- `--trt-file`: The Path of output TensorRT engine file. If not specified, it will be set to `tmp.trt`. +- `--shape`: The height and width of model input. If not specified, it will be set to `224 224`. +- `--max-batch-size`: The max batch size of TensorRT model, should not be less than 1. +- `--fp16`: Enable fp16 mode. +- `--workspace-size` : The required GPU workspace size in GiB to build TensorRT engine. If not specified, it will be set to `1` GiB. +- `--show`: Determines whether to show the outputs of the model. If not specified, it will be set to `False`. +- `--verify`: Determines whether to verify the correctness of models between ONNXRuntime and TensorRT. If not specified, it will be set to `False`. + +Example: + +```bash +python tools/deployment/onnx2tensorrt.py \ + checkpoints/resnet/resnet18_b16x8_cifar10.onnx \ + --trt-file checkpoints/resnet/resnet18_b16x8_cifar10.trt \ + --shape 224 224 \ + --show \ + --verify \ +``` + +## List of supported models convertible to TensorRT + +The table below lists the models that are guaranteed to be convertible to TensorRT. + +| Model | Config | Status | +| :----------: | :-----------------------------------------------------: | :----: | +| MobileNetV2 | `configs/mobilenet_v2/mobilenet-v2_8xb32_in1k.py` | Y | +| ResNet | `configs/resnet/resnet18_8xb16_cifar10.py` | Y | +| ResNeXt | `configs/resnext/resnext50-32x4d_8xb32_in1k.py` | Y | +| ShuffleNetV1 | `configs/shufflenet_v1/shufflenet-v1-1x_16xb64_in1k.py` | Y | +| ShuffleNetV2 | `configs/shufflenet_v2/shufflenet-v2-1x_16xb64_in1k.py` | Y | + +Notes: + +- *All models above are tested with Pytorch==1.6.0 and TensorRT-7.2.1.6.Ubuntu-16.04.x86_64-gnu.cuda-10.2.cudnn8.0* + +## Reminders + +- If you meet any problem with the listed models above, please create an issue and it would be taken care of soon. For models not included in the list, we may not provide much help here due to the limited resources. Please try to dig a little deeper and debug by yourself. + +## FAQs + +- None diff --git a/openmmlab_test/mmclassification-0.24.1/docs/en/tools/pytorch2onnx.md b/openmmlab_test/mmclassification-0.24.1/docs/en/tools/pytorch2onnx.md new file mode 100644 index 00000000..7352d453 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/docs/en/tools/pytorch2onnx.md @@ -0,0 +1,204 @@ +# Pytorch to ONNX (Experimental) + + + +- [Pytorch to ONNX (Experimental)](#pytorch-to-onnx-experimental) + - [How to convert models from Pytorch to ONNX](#how-to-convert-models-from-pytorch-to-onnx) + - [Prerequisite](#prerequisite) + - [Usage](#usage) + - [Description of all arguments:](#description-of-all-arguments) + - [How to evaluate ONNX models with ONNX Runtime](#how-to-evaluate-onnx-models-with-onnx-runtime) + - [Prerequisite](#prerequisite-1) + - [Usage](#usage-1) + - [Description of all arguments](#description-of-all-arguments-1) + - [Results and Models](#results-and-models) + - [List of supported models exportable to ONNX](#list-of-supported-models-exportable-to-onnx) + - [Reminders](#reminders) + - [FAQs](#faqs) + + + +## How to convert models from Pytorch to ONNX + +### Prerequisite + +1. Please refer to [install](https://mmclassification.readthedocs.io/en/latest/install.html#install-mmclassification) for installation of MMClassification. +2. Install onnx and onnxruntime + +```shell +pip install onnx onnxruntime==1.5.1 +``` + +### Usage + +```bash +python tools/deployment/pytorch2onnx.py \ + ${CONFIG_FILE} \ + --checkpoint ${CHECKPOINT_FILE} \ + --output-file ${OUTPUT_FILE} \ + --shape ${IMAGE_SHAPE} \ + --opset-version ${OPSET_VERSION} \ + --dynamic-export \ + --show \ + --simplify \ + --verify \ +``` + +### Description of all arguments: + +- `config` : The path of a model config file. +- `--checkpoint` : The path of a model checkpoint file. +- `--output-file`: The path of output ONNX model. If not specified, it will be set to `tmp.onnx`. +- `--shape`: The height and width of input tensor to the model. If not specified, it will be set to `224 224`. +- `--opset-version` : The opset version of ONNX. If not specified, it will be set to `11`. +- `--dynamic-export` : Determines whether to export ONNX with dynamic input shape and output shapes. If not specified, it will be set to `False`. +- `--show`: Determines whether to print the architecture of the exported model. If not specified, it will be set to `False`. +- `--simplify`: Determines whether to simplify the exported ONNX model. If not specified, it will be set to `False`. +- `--verify`: Determines whether to verify the correctness of an exported model. If not specified, it will be set to `False`. + +Example: + +```bash +python tools/deployment/pytorch2onnx.py \ + configs/resnet/resnet18_8xb16_cifar10.py \ + --checkpoint checkpoints/resnet/resnet18_8xb16_cifar10.pth \ + --output-file checkpoints/resnet/resnet18_8xb16_cifar10.onnx \ + --dynamic-export \ + --show \ + --simplify \ + --verify \ +``` + +## How to evaluate ONNX models with ONNX Runtime + +We prepare a tool `tools/deployment/test.py` to evaluate ONNX models with ONNXRuntime or TensorRT. + +### Prerequisite + +- Install onnx and onnxruntime-gpu + + ```shell + pip install onnx onnxruntime-gpu + ``` + +### Usage + +```bash +python tools/deployment/test.py \ + ${CONFIG_FILE} \ + ${ONNX_FILE} \ + --backend ${BACKEND} \ + --out ${OUTPUT_FILE} \ + --metrics ${EVALUATION_METRICS} \ + --metric-options ${EVALUATION_OPTIONS} \ + --show + --show-dir ${SHOW_DIRECTORY} \ + --cfg-options ${CFG_OPTIONS} \ +``` + +### Description of all arguments + +- `config`: The path of a model config file. +- `model`: The path of a ONNX model file. +- `--backend`: Backend for input model to run and should be `onnxruntime` or `tensorrt`. +- `--out`: The path of output result file in pickle format. +- `--metrics`: Evaluation metrics, which depends on the dataset, e.g., "accuracy", "precision", "recall", "f1_score", "support" for single label dataset, and "mAP", "CP", "CR", "CF1", "OP", "OR", "OF1" for multi-label dataset. +- `--show`: Determines whether to show classifier outputs. If not specified, it will be set to `False`. +- `--show-dir`: Directory where painted images will be saved +- `--metrics-options`: Custom options for evaluation, the key-value pair in `xxx=yyy` format will be kwargs for `dataset.evaluate()` function +- `--cfg-options`: Override some settings in the used config file, the key-value pair in `xxx=yyy` format will be merged into config file. + +### Results and Models + +This part selects ImageNet for onnxruntime verification. ImageNet has multiple versions, but the most commonly used one is [ILSVRC 2012](http://www.image-net.org/challenges/LSVRC/2012/). + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ModelConfigMetricPyTorchONNXRuntimeTensorRT-fp32TensorRT-fp16
ResNetresnet50_8xb32_in1k.pyTop 1 / 576.55 / 93.1576.49 / 93.2276.49 / 93.2276.50 / 93.20
ResNeXtresnext50-32x4d_8xb32_in1k.pyTop 1 / 577.90 / 93.6677.90 / 93.6677.90 / 93.6677.89 / 93.65
SE-ResNetseresnet50_8xb32_in1k.pyTop 1 / 577.74 / 93.8477.74 / 93.8477.74 / 93.8477.74 / 93.85
ShuffleNetV1shufflenet-v1-1x_16xb64_in1k.pyTop 1 / 568.13 / 87.8168.13 / 87.8168.13 / 87.8168.10 / 87.80
ShuffleNetV2shufflenet-v2-1x_16xb64_in1k.pyTop 1 / 569.55 / 88.9269.55 / 88.9269.55 / 88.9269.55 / 88.92
MobileNetV2mobilenet-v2_8xb32_in1k.pyTop 1 / 571.86 / 90.4271.86 / 90.4271.86 / 90.4271.88 / 90.40
+ +## List of supported models exportable to ONNX + +The table below lists the models that are guaranteed to be exportable to ONNX and runnable in ONNX Runtime. + +| Model | Config | Batch Inference | Dynamic Shape | Note | +| :----------: | :-------------------------------------------------------------------------------------------------------------------------------------------------: | :-------------: | :-----------: | ---- | +| MobileNetV2 | [mobilenet-v2_8xb32_in1k.py](https://github.com/open-mmlab/mmclassification/tree/master/configs/mobilenet_v2/mobilenet-v2_8xb32_in1k.py) | Y | Y | | +| ResNet | [resnet18_8xb16_cifar10.py](https://github.com/open-mmlab/mmclassification/tree/master/configs/resnet/resnet18_8xb16_cifar10.py) | Y | Y | | +| ResNeXt | [resnext50-32x4d_8xb32_in1k.py](https://github.com/open-mmlab/mmclassification/tree/master/configs/resnext/resnext50-32x4d_8xb32_in1k.py) | Y | Y | | +| SE-ResNet | [seresnet50_8xb32_in1k.py](https://github.com/open-mmlab/mmclassification/tree/master/configs/seresnet/seresnet50_8xb32_in1k.py) | Y | Y | | +| ShuffleNetV1 | [shufflenet-v1-1x_16xb64_in1k.py](https://github.com/open-mmlab/mmclassification/tree/master/configs/shufflenet_v1/shufflenet-v1-1x_16xb64_in1k.py) | Y | Y | | +| ShuffleNetV2 | [shufflenet-v2-1x_16xb64_in1k.py](https://github.com/open-mmlab/mmclassification/tree/master/configs/shufflenet_v2/shufflenet-v2-1x_16xb64_in1k.py) | Y | Y | | + +Notes: + +- *All models above are tested with Pytorch==1.6.0* + +## Reminders + +- If you meet any problem with the listed models above, please create an issue and it would be taken care of soon. For models not included in the list, please try to dig a little deeper and debug a little bit more and hopefully solve them by yourself. + +## FAQs + +- None diff --git a/openmmlab_test/mmclassification-0.24.1/docs/en/tools/pytorch2torchscript.md b/openmmlab_test/mmclassification-0.24.1/docs/en/tools/pytorch2torchscript.md new file mode 100644 index 00000000..8b01cd02 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/docs/en/tools/pytorch2torchscript.md @@ -0,0 +1,56 @@ +# Pytorch to TorchScript (Experimental) + + + +- [Pytorch to TorchScript (Experimental)](#pytorch-to-torchscript-experimental) + - [How to convert models from Pytorch to TorchScript](#how-to-convert-models-from-pytorch-to-torchscript) + - [Usage](#usage) + - [Description of all arguments](#description-of-all-arguments) + - [Reminders](#reminders) + - [FAQs](#faqs) + + + +## How to convert models from Pytorch to TorchScript + +### Usage + +```bash +python tools/deployment/pytorch2torchscript.py \ + ${CONFIG_FILE} \ + --checkpoint ${CHECKPOINT_FILE} \ + --output-file ${OUTPUT_FILE} \ + --shape ${IMAGE_SHAPE} \ + --verify \ +``` + +### Description of all arguments + +- `config` : The path of a model config file. +- `--checkpoint` : The path of a model checkpoint file. +- `--output-file`: The path of output TorchScript model. If not specified, it will be set to `tmp.pt`. +- `--shape`: The height and width of input tensor to the model. If not specified, it will be set to `224 224`. +- `--verify`: Determines whether to verify the correctness of an exported model. If not specified, it will be set to `False`. + +Example: + +```bash +python tools/deployment/pytorch2onnx.py \ + configs/resnet/resnet18_8xb16_cifar10.py \ + --checkpoint checkpoints/resnet/resnet18_8xb16_cifar10.pth \ + --output-file checkpoints/resnet/resnet18_8xb16_cifar10.pt \ + --verify \ +``` + +Notes: + +- *All models are tested with Pytorch==1.8.1* + +## Reminders + +- For torch.jit.is_tracing() is only supported after v1.6. For users with pytorch v1.3-v1.5, we suggest early returning tensors manually. +- If you meet any problem with the models in this repo, please create an issue and it would be taken care of soon. + +## FAQs + +- None diff --git a/openmmlab_test/mmclassification-0.24.1/docs/en/tools/visualization.md b/openmmlab_test/mmclassification-0.24.1/docs/en/tools/visualization.md new file mode 100644 index 00000000..01282453 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/docs/en/tools/visualization.md @@ -0,0 +1,302 @@ +# Visualization + + + +- [Pipeline Visualization](#pipeline-visualization) +- [Learning Rate Schedule Visualization](#learning-rate-schedule-visualization) +- [Class Activation Map Visualization](#class-activation-map-visualization) +- [FAQs](#faqs) + + + +## Pipeline Visualization + +```bash +python tools/visualizations/vis_pipeline.py \ + ${CONFIG_FILE} \ + [--output-dir ${OUTPUT_DIR}] \ + [--phase ${DATASET_PHASE}] \ + [--number ${BUNBER_IMAGES_DISPLAY}] \ + [--skip-type ${SKIP_TRANSFORM_TYPE}] \ + [--mode ${DISPLAY_MODE}] \ + [--show] \ + [--adaptive] \ + [--min-edge-length ${MIN_EDGE_LENGTH}] \ + [--max-edge-length ${MAX_EDGE_LENGTH}] \ + [--bgr2rgb] \ + [--window-size ${WINDOW_SIZE}] \ + [--cfg-options ${CFG_OPTIONS}] +``` + +**Description of all arguments**: + +- `config` : The path of a model config file. +- `--output-dir`: The output path for visualized images. If not specified, it will be set to `''`, which means not to save. +- `--phase`: Phase of visualizing dataset,must be one of `[train, val, test]`. If not specified, it will be set to `train`. +- `--number`: The number of samples to visualized. If not specified, display all images in the dataset. +- `--skip-type`: The pipelines to be skipped. If not specified, it will be set to `['ToTensor', 'Normalize', 'ImageToTensor', 'Collect']`. +- `--mode`: The display mode, can be one of `[original, pipeline, concat]`. If not specified, it will be set to `concat`. +- `--show`: If set, display pictures in pop-up windows. +- `--adaptive`: If set, adaptively resize images for better visualization. +- `--min-edge-length`: The minimum edge length, used when `--adaptive` is set. When any side of the picture is smaller than `${MIN_EDGE_LENGTH}`, the picture will be enlarged while keeping the aspect ratio unchanged, and the short side will be aligned to `${MIN_EDGE_LENGTH}`. If not specified, it will be set to 200. +- `--max-edge-length`: The maximum edge length, used when `--adaptive` is set. When any side of the picture is larger than `${MAX_EDGE_LENGTH}`, the picture will be reduced while keeping the aspect ratio unchanged, and the long side will be aligned to `${MAX_EDGE_LENGTH}`. If not specified, it will be set to 1000. +- `--bgr2rgb`: If set, flip the color channel order of images. +- `--window-size`: The shape of the display window. If not specified, it will be set to `12*7`. If used, it must be in the format `'W*H'`. +- `--cfg-options` : Modifications to the configuration file, refer to [Tutorial 1: Learn about Configs](https://mmclassification.readthedocs.io/en/latest/tutorials/config.html). + +```{note} + +1. If the `--mode` is not specified, it will be set to `concat` as default, get the pictures stitched together by original pictures and transformed pictures; if the `--mode` is set to `original`, get the original pictures; if the `--mode` is set to `transformed`, get the transformed pictures; if the `--mode` is set to `pipeline`, get all the intermediate images through the pipeline. + +2. When `--adaptive` option is set, images that are too large or too small will be automatically adjusted, you can use `--min-edge-length` and `--max-edge-length` to set the adjust size. +``` + +**Examples**: + +1. In **'original'** mode, visualize 100 original pictures in the `CIFAR100` validation set, then display and save them in the `./tmp` folder: + +```shell +python ./tools/visualizations/vis_pipeline.py configs/resnet/resnet50_8xb16_cifar100.py --phase val --output-dir tmp --mode original --number 100 --show --adaptive --bgr2rgb +``` + +
+ +2. In **'transformed'** mode, visualize all the transformed pictures of the `ImageNet` training set and display them in pop-up windows: + +```shell +python ./tools/visualizations/vis_pipeline.py ./configs/resnet/resnet50_8xb32_in1k.py --show --mode transformed +``` + +
+ +3. In **'concat'** mode, visualize 10 pairs of origin and transformed images for comparison in the `ImageNet` train set and save them in the `./tmp` folder: + +```shell +python ./tools/visualizations/vis_pipeline.py configs/swin_transformer/swin_base_224_b16x64_300e_imagenet.py --phase train --output-dir tmp --number 10 --adaptive +``` + +
+ +4. In **'pipeline'** mode, visualize all the intermediate pictures in the `ImageNet` train set through the pipeline: + +```shell +python ./tools/visualizations/vis_pipeline.py configs/swin_transformer/swin_base_224_b16x64_300e_imagenet.py --phase train --adaptive --mode pipeline --show +``` + +
+ +## Learning Rate Schedule Visualization + +```bash +python tools/visualizations/vis_lr.py \ + ${CONFIG_FILE} \ + --dataset-size ${DATASET_SIZE} \ + --ngpus ${NUM_GPUs} + --save-path ${SAVE_PATH} \ + --title ${TITLE} \ + --style ${STYLE} \ + --window-size ${WINDOW_SIZE} + --cfg-options +``` + +**Description of all arguments**: + +- `config` : The path of a model config file. +- `dataset-size` : The size of the datasets. If set,`build_dataset` will be skipped and `${DATASET_SIZE}` will be used as the size. Default to use the function `build_dataset`. +- `ngpus` : The number of GPUs used in training, default to be 1. +- `save-path` : The learning rate curve plot save path, default not to save. +- `title` : Title of figure. If not set, default to be config file name. +- `style` : Style of plt. If not set, default to be `whitegrid`. +- `window-size`: The shape of the display window. If not specified, it will be set to `12*7`. If used, it must be in the format `'W*H'`. +- `cfg-options` : Modifications to the configuration file, refer to [Tutorial 1: Learn about Configs](https://mmclassification.readthedocs.io/en/latest/tutorials/config.html). + +```{note} +Loading annotations maybe consume much time, you can directly specify the size of the dataset with `dataset-size` to save time. +``` + +**Examples**: + +```bash +python tools/visualizations/vis_lr.py configs/resnet/resnet50_b16x8_cifar100.py +``` + +
+ +When using ImageNet, directly specify the size of ImageNet, as below: + +```bash +python tools/visualizations/vis_lr.py configs/repvgg/repvgg-B3g4_4xb64-autoaug-lbs-mixup-coslr-200e_in1k.py --dataset-size 1281167 --ngpus 4 --save-path ./repvgg-B3g4_4xb64-lr.jpg +``` + +
+ +## Class Activation Map Visualization + +MMClassification provides `tools\visualizations\vis_cam.py` tool to visualize class activation map. Please use `pip install "grad-cam>=1.3.6"` command to install [pytorch-grad-cam](https://github.com/jacobgil/pytorch-grad-cam). + +The supported methods are as follows: + +| Method | What it does | +| ------------ | ---------------------------------------------------------------------------------------------------------------------------- | +| GradCAM | Weight the 2D activations by the average gradient | +| GradCAM++ | Like GradCAM but uses second order gradients | +| XGradCAM | Like GradCAM but scale the gradients by the normalized activations | +| EigenCAM | Takes the first principle component of the 2D Activations (no class discrimination, but seems to give great results) | +| EigenGradCAM | Like EigenCAM but with class discrimination: First principle component of Activations\*Grad. Looks like GradCAM, but cleaner | +| LayerCAM | Spatially weight the activations by positive gradients. Works better especially in lower layers | + +**Command**: + +```bash +python tools/visualizations/vis_cam.py \ + ${IMG} \ + ${CONFIG_FILE} \ + ${CHECKPOINT} \ + [--target-layers ${TARGET-LAYERS}] \ + [--preview-model] \ + [--method ${METHOD}] \ + [--target-category ${TARGET-CATEGORY}] \ + [--save-path ${SAVE_PATH}] \ + [--vit-like] \ + [--num-extra-tokens ${NUM-EXTRA-TOKENS}] + [--aug_smooth] \ + [--eigen_smooth] \ + [--device ${DEVICE}] \ + [--cfg-options ${CFG-OPTIONS}] +``` + +**Description of all arguments**: + +- `img` : The target picture path. +- `config` : The path of the model config file. +- `checkpoint` : The path of the checkpoint. +- `--target-layers` : The target layers to get activation maps, one or more network layers can be specified. If not set, use the norm layer of the last block. +- `--preview-model` : Whether to print all network layer names in the model. +- `--method` : Visualization method, supports `GradCAM`, `GradCAM++`, `XGradCAM`, `EigenCAM`, `EigenGradCAM`, `LayerCAM`, which is case insensitive. Defaults to `GradCAM`. +- `--target-category` : Target category, if not set, use the category detected by the given model. +- `--save-path` : The path to save the CAM visualization image. If not set, the CAM image will not be saved. +- `--vit-like` : Whether the network is ViT-like network. +- `--num-extra-tokens` : The number of extra tokens in ViT-like backbones. If not set, use num_extra_tokens the backbone. +- `--aug_smooth` : Whether to use TTA(Test Time Augment) to get CAM. +- `--eigen_smooth` : Whether to use the principal component to reduce noise. +- `--device` : The computing device used. Default to 'cpu'. +- `--cfg-options` : Modifications to the configuration file, refer to [Tutorial 1: Learn about Configs](https://mmclassification.readthedocs.io/en/latest/tutorials/config.html). + +```{note} +The argument `--preview-model` can view all network layers names in the given model. It will be helpful if you know nothing about the model layers when setting `--target-layers`. +``` + +**Examples(CNN)**: + +Here are some examples of `target-layers` in ResNet-50, which can be any module or layer: + +- `'backbone.layer4'` means the output of the forth ResLayer. +- `'backbone.layer4.2'` means the output of the third BottleNeck block in the forth ResLayer. +- `'backbone.layer4.2.conv1'` means the output of the `conv1` layer in above BottleNeck block. + +```{note} +For `ModuleList` or `Sequential`, you can also use the index to specify which sub-module is the target layer. + +For example, the `backbone.layer4[-1]` is the same as `backbone.layer4.2` since `layer4` is a `Sequential` with three sub-modules. +``` + +1. Use different methods to visualize CAM for `ResNet50`, the `target-category` is the predicted result by the given checkpoint, using the default `target-layers`. + + ```shell + python tools/visualizations/vis_cam.py \ + demo/bird.JPEG \ + configs/resnet/resnet50_8xb32_in1k.py \ + https://download.openmmlab.com/mmclassification/v0/resnet/resnet50_batch256_imagenet_20200708-cfb998bf.pth \ + --method GradCAM + # GradCAM++, XGradCAM, EigenCAM, EigenGradCAM, LayerCAM + ``` + + | Image | GradCAM | GradCAM++ | EigenGradCAM | LayerCAM | + | ------------------------------------ | --------------------------------------- | ----------------------------------------- | -------------------------------------------- | ---------------------------------------- | + |
|
|
|
|
| + +2. Use different `target-category` to get CAM from the same picture. In `ImageNet` dataset, the category 238 is 'Greater Swiss Mountain dog', the category 281 is 'tabby, tabby cat'. + + ```shell + python tools/visualizations/vis_cam.py \ + demo/cat-dog.png configs/resnet/resnet50_8xb32_in1k.py \ + https://download.openmmlab.com/mmclassification/v0/resnet/resnet50_batch256_imagenet_20200708-cfb998bf.pth \ + --target-layers 'backbone.layer4.2' \ + --method GradCAM \ + --target-category 238 + # --target-category 281 + ``` + + | Category | Image | GradCAM | XGradCAM | LayerCAM | + | -------- | ---------------------------------------------- | ------------------------------------------------ | ------------------------------------------------- | ------------------------------------------------- | + | Dog |
|
|
|
| + | Cat |
|
|
|
| + +3. Use `--eigen-smooth` and `--aug-smooth` to improve visual effects. + + ```shell + python tools/visualizations/vis_cam.py \ + demo/dog.jpg \ + configs/mobilenet_v3/mobilenet-v3-large_8xb32_in1k.py \ + https://download.openmmlab.com/mmclassification/v0/mobilenet_v3/convert/mobilenet_v3_large-3ea3c186.pth \ + --target-layers 'backbone.layer16' \ + --method LayerCAM \ + --eigen-smooth --aug-smooth + ``` + + | Image | LayerCAM | eigen-smooth | aug-smooth | eigen&aug | + | ------------------------------------ | --------------------------------------- | ------------------------------------------- | ----------------------------------------- | ----------------------------------------- | + |
|
|
|
|
| + +**Examples(Transformer)**: + +Here are some examples: + +- `'backbone.norm3'` for Swin-Transformer; +- `'backbone.layers[-1].ln1'` for ViT; + +For ViT-like networks, such as ViT, T2T-ViT and Swin-Transformer, the features are flattened. And for drawing the CAM, we need to specify the `--vit-like` argument to reshape the features into square feature maps. + +Besides the flattened features, some ViT-like networks also add extra tokens like the class token in ViT and T2T-ViT, and the distillation token in DeiT. In these networks, the final classification is done on the tokens computed in the last attention block, and therefore, the classification score will not be affected by other features and the gradient of the classification score with respect to them, will be zero. Therefore, you shouldn't use the output of the last attention block as the target layer in these networks. + +To exclude these extra tokens, we need know the number of extra tokens. Almost all transformer-based backbones in MMClassification have the `num_extra_tokens` attribute. If you want to use this tool in a new or third-party network that don't have the `num_extra_tokens` attribute, please specify it the `--num-extra-tokens` argument. + +1. Visualize CAM for `Swin Transformer`, using default `target-layers`: + + ```shell + python tools/visualizations/vis_cam.py \ + demo/bird.JPEG \ + configs/swin_transformer/swin-tiny_16xb64_in1k.py \ + https://download.openmmlab.com/mmclassification/v0/swin-transformer/swin_tiny_224_b16x64_300e_imagenet_20210616_090925-66df6be6.pth \ + --vit-like + ``` + +2. Visualize CAM for `Vision Transformer(ViT)`: + + ```shell + python tools/visualizations/vis_cam.py \ + demo/bird.JPEG \ + configs/vision_transformer/vit-base-p16_ft-64xb64_in1k-384.py \ + https://download.openmmlab.com/mmclassification/v0/vit/finetune/vit-base-p16_in21k-pre-3rdparty_ft-64xb64_in1k-384_20210928-98e8652b.pth \ + --vit-like \ + --target-layers 'backbone.layers[-1].ln1' + ``` + +3. Visualize CAM for `T2T-ViT`: + + ```shell + python tools/visualizations/vis_cam.py \ + demo/bird.JPEG \ + configs/t2t_vit/t2t-vit-t-14_8xb64_in1k.py \ + https://download.openmmlab.com/mmclassification/v0/t2t-vit/t2t-vit-t-14_3rdparty_8xb64_in1k_20210928-b7c09b62.pth \ + --vit-like \ + --target-layers 'backbone.encoder[-1].ln1' + ``` + +| Image | ResNet50 | ViT | Swin | T2T-ViT | +| --------------------------------------- | ------------------------------------------ | -------------------------------------- | --------------------------------------- | ------------------------------------------ | +|
|
|
|
|
| + +## FAQs + +- None diff --git a/openmmlab_test/mmclassification-0.24.1/docs/en/tutorials/MMClassification_python.ipynb b/openmmlab_test/mmclassification-0.24.1/docs/en/tutorials/MMClassification_python.ipynb new file mode 100644 index 00000000..e0466665 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/docs/en/tutorials/MMClassification_python.ipynb @@ -0,0 +1,2040 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": { + "id": "XjQxmm04iTx4" + }, + "source": [ + "\"Open" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "UdMfIsMpiODD" + }, + "source": [ + "# MMClassification Python API tutorial on Colab\n", + "\n", + "In this tutorial, we will introduce the following content:\n", + "\n", + "* How to install MMCls\n", + "* Inference a model with Python API\n", + "* Fine-tune a model with Python API" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "iOl0X9UEiRvE" + }, + "source": [ + "## Install MMClassification\n", + "\n", + "Before using MMClassification, we need to prepare the environment with the following steps:\n", + "\n", + "1. Install Python, CUDA, C/C++ compiler and git\n", + "2. Install PyTorch (CUDA version)\n", + "3. Install mmcv\n", + "4. Clone mmcls source code from GitHub and install it\n", + "\n", + "Because this tutorial is on Google Colab, and the basic environment has been completed, we can skip the first two steps." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "_i7cjqS_LtoP" + }, + "source": [ + "### Check environment" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "c6MbAw10iUJI", + "outputId": "dd37cdf5-7bcf-4a03-f5b5-4b17c3ca16de" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "/content\n" + ] + } + ], + "source": [ + "%cd /content" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "4IyFL3MaiYRu", + "outputId": "5008efdf-0356-4d93-ba9d-e51787036213" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "/content\n" + ] + } + ], + "source": [ + "!pwd" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "DMw7QwvpiiUO", + "outputId": "33fa5eb8-d083-4a1f-d094-ab0f59e2818e" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "nvcc: NVIDIA (R) Cuda compiler driver\n", + "Copyright (c) 2005-2020 NVIDIA Corporation\n", + "Built on Mon_Oct_12_20:09:46_PDT_2020\n", + "Cuda compilation tools, release 11.1, V11.1.105\n", + "Build cuda_11.1.TC455_06.29190527_0\n" + ] + } + ], + "source": [ + "# Check nvcc version\n", + "!nvcc -V" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "4VIBU7Fain4D", + "outputId": "ec20652d-ca24-4b82-b407-e90354d728f8" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "gcc (Ubuntu 7.5.0-3ubuntu1~18.04) 7.5.0\n", + "Copyright (C) 2017 Free Software Foundation, Inc.\n", + "This is free software; see the source for copying conditions. There is NO\n", + "warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n", + "\n" + ] + } + ], + "source": [ + "# Check GCC version\n", + "!gcc --version" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "24lDLCqFisZ9", + "outputId": "30ec9a1c-cdb3-436c-cdc8-f2a22afe254f" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "1.9.0+cu111\n", + "True\n" + ] + } + ], + "source": [ + "# Check PyTorch installation\n", + "import torch, torchvision\n", + "print(torch.__version__)\n", + "print(torch.cuda.is_available())" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "R2aZNLUwizBs" + }, + "source": [ + "### Install MMCV\n", + "\n", + "MMCV is the basic package of all OpenMMLab packages. We have pre-built wheels on Linux, so we can download and install them directly.\n", + "\n", + "Please pay attention to PyTorch and CUDA versions to match the wheel.\n", + "\n", + "In the above steps, we have checked the version of PyTorch and CUDA, and they are 1.9.0 and 11.1 respectively, so we need to choose the corresponding wheel.\n", + "\n", + "In addition, we can also install the full version of mmcv (mmcv-full). It includes full features and various CUDA ops out of the box, but needs a longer time to build." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "nla40LrLi7oo", + "outputId": "162bf14d-0d3e-4540-e85e-a46084a786b1" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Looking in links: https://download.openmmlab.com/mmcv/dist/cu111/torch1.9.0/index.html\n", + "Collecting mmcv\n", + " Downloading mmcv-1.3.15.tar.gz (352 kB)\n", + "\u001b[K |████████████████████████████████| 352 kB 5.2 MB/s \n", + "\u001b[?25hCollecting addict\n", + " Downloading addict-2.4.0-py3-none-any.whl (3.8 kB)\n", + "Requirement already satisfied: numpy in /usr/local/lib/python3.7/dist-packages (from mmcv) (1.19.5)\n", + "Requirement already satisfied: packaging in /usr/local/lib/python3.7/dist-packages (from mmcv) (21.0)\n", + "Requirement already satisfied: Pillow in /usr/local/lib/python3.7/dist-packages (from mmcv) (7.1.2)\n", + "Requirement already satisfied: pyyaml in /usr/local/lib/python3.7/dist-packages (from mmcv) (3.13)\n", + "Collecting yapf\n", + " Downloading yapf-0.31.0-py2.py3-none-any.whl (185 kB)\n", + "\u001b[K |████████████████████████████████| 185 kB 49.9 MB/s \n", + "\u001b[?25hRequirement already satisfied: pyparsing>=2.0.2 in /usr/local/lib/python3.7/dist-packages (from packaging->mmcv) (2.4.7)\n", + "Building wheels for collected packages: mmcv\n", + " Building wheel for mmcv (setup.py) ... \u001b[?25l\u001b[?25hdone\n", + " Created wheel for mmcv: filename=mmcv-1.3.15-py2.py3-none-any.whl size=509835 sha256=793fe3796421336ca7a7740a1397a54016ba71ce95fd80cb80a116644adb4070\n", + " Stored in directory: /root/.cache/pip/wheels/b2/f4/4e/8f6d2dd2bef6b7eb8c89aa0e5d61acd7bff60aaf3d4d4b29b0\n", + "Successfully built mmcv\n", + "Installing collected packages: yapf, addict, mmcv\n", + "Successfully installed addict-2.4.0 mmcv-1.3.15 yapf-0.31.0\n" + ] + } + ], + "source": [ + "# Install mmcv\n", + "!pip install mmcv -f https://download.openmmlab.com/mmcv/dist/cu111/torch1.9.0/index.html\n", + "# !pip install mmcv-full -f https://download.openmmlab.com/mmcv/dist/cu110/torch1.9.0/index.html" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "GDTUrYvXjlRb" + }, + "source": [ + "### Clone and install MMClassification\n", + "\n", + "Next, we clone the latest mmcls repository from GitHub and install it." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "Bwme6tWHjl5s", + "outputId": "eae20624-4695-4cd9-c3e5-9c59596d150a" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Cloning into 'mmclassification'...\n", + "remote: Enumerating objects: 4152, done.\u001b[K\n", + "remote: Counting objects: 100% (994/994), done.\u001b[K\n", + "remote: Compressing objects: 100% (576/576), done.\u001b[K\n", + "remote: Total 4152 (delta 476), reused 765 (delta 401), pack-reused 3158\u001b[K\n", + "Receiving objects: 100% (4152/4152), 8.20 MiB | 21.00 MiB/s, done.\n", + "Resolving deltas: 100% (2524/2524), done.\n" + ] + } + ], + "source": [ + "# Clone mmcls repository\n", + "!git clone https://github.com/open-mmlab/mmclassification.git\n", + "%cd mmclassification/\n", + "\n", + "# Install MMClassification from source\n", + "!pip install -e . " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "hFg_oSG4j3zB", + "outputId": "05a91f9b-d41c-4ae7-d4fe-c30a30d3f639" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0.16.0\n" + ] + } + ], + "source": [ + "# Check MMClassification installation\n", + "import mmcls\n", + "print(mmcls.__version__)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "4Mi3g6yzj96L" + }, + "source": [ + "## Inference a model with Python API\n", + "\n", + "MMClassification provides many pre-trained models, and you can check them by the link of [model zoo](https://mmclassification.readthedocs.io/en/latest/model_zoo.html). Almost all models can reproduce the results in original papers or reach higher metrics. And we can use these models directly.\n", + "\n", + "To use the pre-trained model, we need to do the following steps:\n", + "\n", + "- Prepare the model\n", + " - Prepare the config file\n", + " - Prepare the checkpoint file\n", + "- Build the model\n", + "- Inference with the model" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "nDQchz8CkJaT", + "outputId": "9805bd7d-cc2a-4269-b43d-257412f1df93" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--2021-10-21 03:52:36-- https://www.dropbox.com/s/k5fsqi6qha09l1v/banana.png?dl=0\n", + "Resolving www.dropbox.com (www.dropbox.com)... 162.125.3.18, 2620:100:601b:18::a27d:812\n", + "Connecting to www.dropbox.com (www.dropbox.com)|162.125.3.18|:443... connected.\n", + "HTTP request sent, awaiting response... 301 Moved Permanently\n", + "Location: /s/raw/k5fsqi6qha09l1v/banana.png [following]\n", + "--2021-10-21 03:52:36-- https://www.dropbox.com/s/raw/k5fsqi6qha09l1v/banana.png\n", + "Reusing existing connection to www.dropbox.com:443.\n", + "HTTP request sent, awaiting response... 302 Found\n", + "Location: https://uc10f85c3c33c4b5233bac4d074e.dl.dropboxusercontent.com/cd/0/inline/BYYklQk6LNPXNm7o5xE_fxE2GA9reePyNajQgoe9roPlSrtsJd4WN6RVww7zrtNZWFq8iZv349MNQJlm7vVaqRBxTcd0ufxkqbcJYJvOrORpxOPV7mHmhMjKYUncez8YNqELGwDd-aeZqLGKBC8spSnx/file# [following]\n", + "--2021-10-21 03:52:36-- https://uc10f85c3c33c4b5233bac4d074e.dl.dropboxusercontent.com/cd/0/inline/BYYklQk6LNPXNm7o5xE_fxE2GA9reePyNajQgoe9roPlSrtsJd4WN6RVww7zrtNZWFq8iZv349MNQJlm7vVaqRBxTcd0ufxkqbcJYJvOrORpxOPV7mHmhMjKYUncez8YNqELGwDd-aeZqLGKBC8spSnx/file\n", + "Resolving uc10f85c3c33c4b5233bac4d074e.dl.dropboxusercontent.com (uc10f85c3c33c4b5233bac4d074e.dl.dropboxusercontent.com)... 162.125.3.15, 2620:100:601b:15::a27d:80f\n", + "Connecting to uc10f85c3c33c4b5233bac4d074e.dl.dropboxusercontent.com (uc10f85c3c33c4b5233bac4d074e.dl.dropboxusercontent.com)|162.125.3.15|:443... connected.\n", + "HTTP request sent, awaiting response... 200 OK\n", + "Length: 297299 (290K) [image/png]\n", + "Saving to: ‘demo/banana.png’\n", + "\n", + "demo/banana.png 100%[===================>] 290.33K --.-KB/s in 0.08s \n", + "\n", + "2021-10-21 03:52:36 (3.47 MB/s) - ‘demo/banana.png’ saved [297299/297299]\n", + "\n" + ] + } + ], + "source": [ + "# Get the demo image\n", + "!wget https://www.dropbox.com/s/k5fsqi6qha09l1v/banana.png?dl=0 -O demo/banana.png" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 420 + }, + "id": "o2eiitWnkQq_", + "outputId": "192b3ebb-202b-4d6e-e178-561223024318" + }, + "outputs": [ + { + "data": { + "image/png": "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", + "text/plain": [ + "" + ] + }, + "execution_count": 20, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "from PIL import Image\n", + "Image.open('demo/banana.png')" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "sRfAui8EkTDX" + }, + "source": [ + "### Prepare the config file and checkpoint file\n", + "\n", + "We configure a model with a config file and save weights with a checkpoint file.\n", + "\n", + "On GitHub, you can find all these pre-trained models in the config folder of MMClassification. For example, you can find the config files and checkpoints of Mobilenet V2 in [this link](https://github.com/open-mmlab/mmclassification/tree/master/configs/mobilenet_v2).\n", + "\n", + "We have integrated many config files for various models in the MMClassification repository. As for the checkpoint, we can download it in advance, or just pass an URL to API, and MMClassification will download it before load weights." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "VvRoZpBGkgpC", + "outputId": "68282782-015e-4f5c-cef2-79be3bf6a9b7" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "configs/mobilenet_v2/mobilenet-v2_8xb32_in1k.py\n" + ] + } + ], + "source": [ + "# Confirm the config file exists\n", + "!ls configs/mobilenet_v2/mobilenet-v2_8xb32_in1k.py\n", + "\n", + "# Specify the path of the config file and checkpoint file.\n", + "config_file = 'configs/mobilenet_v2/mobilenet-v2_8xb32_in1k.py'\n", + "checkpoint_file = 'https://download.openmmlab.com/mmclassification/v0/mobilenet_v2/mobilenet_v2_batch256_imagenet_20200708-3b2dc3af.pth'" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "eiYdsHoIkpD1" + }, + "source": [ + "### Inference the model\n", + "\n", + "MMClassification provides high-level Python API to inference models.\n", + "\n", + "At first, we build the MobilenetV2 model and load the checkpoint." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 323, + "referenced_widgets": [ + "badf240bbb7d442fbd214e837edbffe2", + "520112917e0f4844995d418c5041d23a", + "9f3f6b72b4d14e2a96b9185331c8081b", + "a275bef3584b49ab9b680b528420d461", + "c4b2c6914a05497b8d2b691bd6dda6da", + "863d2a8cc4074f2e890ba6aea7c54384", + "be55ab36267d4dcab1d83dfaa8540270", + "31475aa888da4c8d844ba99a0b3397f5", + "e310c50e610248dd897fbbf5dd09dd7a", + "8a8ab7c27e404459951cffe7a32b8faa", + "e1a3dce90c1a4804a9ef0c687a9c0703" + ] + }, + "id": "KwJWlR2QkpiV", + "outputId": "982b365e-d3be-4e3d-dee7-c507a8020292" + }, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/usr/local/lib/python3.7/dist-packages/mmcv/cnn/bricks/transformer.py:28: UserWarning: Fail to import ``MultiScaleDeformableAttention`` from ``mmcv.ops.multi_scale_deform_attn``, You should install ``mmcv-full`` if you need this module. \n", + " warnings.warn('Fail to import ``MultiScaleDeformableAttention`` from '\n", + "/usr/lib/python3.7/importlib/_bootstrap.py:219: RuntimeWarning: numpy.ufunc size changed, may indicate binary incompatibility. Expected 192 from C header, got 216 from PyObject\n", + " return f(*args, **kwds)\n", + "/usr/lib/python3.7/importlib/_bootstrap.py:219: RuntimeWarning: numpy.ufunc size changed, may indicate binary incompatibility. Expected 192 from C header, got 216 from PyObject\n", + " return f(*args, **kwds)\n", + "/usr/lib/python3.7/importlib/_bootstrap.py:219: RuntimeWarning: numpy.ufunc size changed, may indicate binary incompatibility. Expected 192 from C header, got 216 from PyObject\n", + " return f(*args, **kwds)\n", + "/usr/local/lib/python3.7/dist-packages/yaml/constructor.py:126: DeprecationWarning: Using or importing the ABCs from 'collections' instead of from 'collections.abc' is deprecated since Python 3.3,and in 3.9 it will stop working\n", + " if not isinstance(key, collections.Hashable):\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Use load_from_http loader\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Downloading: \"https://download.openmmlab.com/mmclassification/v0/mobilenet_v2/mobilenet_v2_batch256_imagenet_20200708-3b2dc3af.pth\" to /root/.cache/torch/hub/checkpoints/mobilenet_v2_batch256_imagenet_20200708-3b2dc3af.pth\n" + ] + }, + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "badf240bbb7d442fbd214e837edbffe2", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + " 0%| | 0.00/13.5M [00:00" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "%matplotlib inline\n", + "# Visualize the inference result\n", + "show_result_pyplot(model, img, result)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "oDMr3Bx_lESy" + }, + "source": [ + "## Fine-tune a model with Python API\n", + "\n", + "Fine-tuning is to re-train a model which has been trained on another dataset (like ImageNet) to fit our target dataset. Compared with training from scratch, fine-tuning is much faster can avoid over-fitting problems during training on a small dataset.\n", + "\n", + "The basic steps of fine-tuning are as below:\n", + "\n", + "1. Prepare the target dataset and meet MMClassification's requirements.\n", + "2. Modify the training config.\n", + "3. Start training and validation.\n", + "\n", + "More details are in [the docs](https://mmclassification.readthedocs.io/en/latest/tutorials/finetune.html)." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "TJtKKwAvlHX_" + }, + "source": [ + "### Prepare the target dataset\n", + "\n", + "Here we download the cats & dogs dataset directly. You can find more introduction about the dataset in the [tools tutorial](https://colab.research.google.com/github/open-mmlab/mmclassification/blob/master/docs/tutorials/MMClassification_tools.ipynb)." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "3vBfU8GGlFPS", + "outputId": "b12dadb4-ccbc-45b4-bb08-3d24977ed93c" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--2021-10-21 03:57:58-- https://www.dropbox.com/s/wml49yrtdo53mie/cats_dogs_dataset_reorg.zip?dl=0\n", + "Resolving www.dropbox.com (www.dropbox.com)... 162.125.80.18, 2620:100:6018:18::a27d:312\n", + "Connecting to www.dropbox.com (www.dropbox.com)|162.125.80.18|:443... connected.\n", + "HTTP request sent, awaiting response... 301 Moved Permanently\n", + "Location: /s/raw/wml49yrtdo53mie/cats_dogs_dataset_reorg.zip [following]\n", + "--2021-10-21 03:57:58-- https://www.dropbox.com/s/raw/wml49yrtdo53mie/cats_dogs_dataset_reorg.zip\n", + "Reusing existing connection to www.dropbox.com:443.\n", + "HTTP request sent, awaiting response... 302 Found\n", + "Location: https://ucfd8157272a6270e100392293da.dl.dropboxusercontent.com/cd/0/inline/BYbFG6Zo1S3l2kJtqLrJIne9lTLgQn-uoJxmUjhLSkp36V7AoiwlyR2gP0XVoUQt9WzF2ZsmeERagMy7rpsNoIYG4MjsYA90i_JsarFDs9PHhXHw9qwHpHqBvgd4YU_mwDQHuouJ_oCU1kft04QgCVRg/file# [following]\n", + "--2021-10-21 03:57:59-- https://ucfd8157272a6270e100392293da.dl.dropboxusercontent.com/cd/0/inline/BYbFG6Zo1S3l2kJtqLrJIne9lTLgQn-uoJxmUjhLSkp36V7AoiwlyR2gP0XVoUQt9WzF2ZsmeERagMy7rpsNoIYG4MjsYA90i_JsarFDs9PHhXHw9qwHpHqBvgd4YU_mwDQHuouJ_oCU1kft04QgCVRg/file\n", + "Resolving ucfd8157272a6270e100392293da.dl.dropboxusercontent.com (ucfd8157272a6270e100392293da.dl.dropboxusercontent.com)... 162.125.3.15, 2620:100:6018:15::a27d:30f\n", + "Connecting to ucfd8157272a6270e100392293da.dl.dropboxusercontent.com (ucfd8157272a6270e100392293da.dl.dropboxusercontent.com)|162.125.3.15|:443... connected.\n", + "HTTP request sent, awaiting response... 302 Found\n", + "Location: /cd/0/inline2/BYYSXb-0kWS7Lpk-cdrgBGzcOBfsvy7KjhqWEgjI5L9xfcaXohKlVeFMNFVyqvCwZLym2kWCD0nwURRpQ2mnHICrNsrvTvavbn24hk1Bd3_lXX08LBBe3C6YvD2U_iP8UMXROqm-B3JtnBjeMpk1R4YZ0O6aVLgKu0eET9RXsRaNCczD2lTK_i72zmbYhGmBvlRWmf_yQnnS5WKpGhSAobznIqKzw78yPzo5FsgGiEj5VXb91AElrKVAW8HFC9EhdUs7RrL3q9f0mQ9TbQpauoAp32TL3YQcuAp891Rv-EmDVxzfMwKVTGU8hxR2SiIWkse4u2QGhliqhdha7qBu7sIPcIoeI5-DdSoc6XG77vTYTRhrs_cf7rQuTPH2gTIUwTY/file [following]\n", + "--2021-10-21 03:57:59-- https://ucfd8157272a6270e100392293da.dl.dropboxusercontent.com/cd/0/inline2/BYYSXb-0kWS7Lpk-cdrgBGzcOBfsvy7KjhqWEgjI5L9xfcaXohKlVeFMNFVyqvCwZLym2kWCD0nwURRpQ2mnHICrNsrvTvavbn24hk1Bd3_lXX08LBBe3C6YvD2U_iP8UMXROqm-B3JtnBjeMpk1R4YZ0O6aVLgKu0eET9RXsRaNCczD2lTK_i72zmbYhGmBvlRWmf_yQnnS5WKpGhSAobznIqKzw78yPzo5FsgGiEj5VXb91AElrKVAW8HFC9EhdUs7RrL3q9f0mQ9TbQpauoAp32TL3YQcuAp891Rv-EmDVxzfMwKVTGU8hxR2SiIWkse4u2QGhliqhdha7qBu7sIPcIoeI5-DdSoc6XG77vTYTRhrs_cf7rQuTPH2gTIUwTY/file\n", + "Reusing existing connection to ucfd8157272a6270e100392293da.dl.dropboxusercontent.com:443.\n", + "HTTP request sent, awaiting response... 200 OK\n", + "Length: 228802825 (218M) [application/zip]\n", + "Saving to: ‘cats_dogs_dataset.zip’\n", + "\n", + "cats_dogs_dataset.z 100%[===================>] 218.20M 86.3MB/s in 2.5s \n", + "\n", + "2021-10-21 03:58:02 (86.3 MB/s) - ‘cats_dogs_dataset.zip’ saved [228802825/228802825]\n", + "\n" + ] + } + ], + "source": [ + "# Download the cats & dogs dataset\n", + "!wget https://www.dropbox.com/s/wml49yrtdo53mie/cats_dogs_dataset_reorg.zip?dl=0 -O cats_dogs_dataset.zip\n", + "!mkdir -p data\n", + "!unzip -qo cats_dogs_dataset.zip -d ./data/" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "15iKNG0SlV9y" + }, + "source": [ + "### Read the config file and modify the config\n", + "\n", + "In the [tools tutorial](https://colab.research.google.com/github/open-mmlab/mmclassification/blob/master/docs/tutorials/MMClassification_tools.ipynb), we have introduced all parts of the config file, and here we can modify the loaded config by Python code." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "WCfnDavFlWrK" + }, + "outputs": [], + "source": [ + "# Load the base config file\n", + "from mmcv import Config\n", + "from mmcls.utils import auto_select_device\n", + "\n", + "cfg = Config.fromfile('configs/mobilenet_v2/mobilenet-v2_8xb32_in1k.py')\n", + "cfg.device = auto_select_device()\n", + "\n", + "# Modify the number of classes in the head.\n", + "cfg.model.head.num_classes = 2\n", + "cfg.model.head.topk = (1, )\n", + "\n", + "# Load the pre-trained model's checkpoint.\n", + "cfg.model.backbone.init_cfg = dict(type='Pretrained', checkpoint=checkpoint_file, prefix='backbone')\n", + "\n", + "# Specify sample size and number of workers.\n", + "cfg.data.samples_per_gpu = 32\n", + "cfg.data.workers_per_gpu = 2\n", + "\n", + "# Specify the path and meta files of training dataset\n", + "cfg.data.train.data_prefix = 'data/cats_dogs_dataset/training_set/training_set'\n", + "cfg.data.train.classes = 'data/cats_dogs_dataset/classes.txt'\n", + "\n", + "# Specify the path and meta files of validation dataset\n", + "cfg.data.val.data_prefix = 'data/cats_dogs_dataset/val_set/val_set'\n", + "cfg.data.val.ann_file = 'data/cats_dogs_dataset/val.txt'\n", + "cfg.data.val.classes = 'data/cats_dogs_dataset/classes.txt'\n", + "\n", + "# Specify the path and meta files of test dataset\n", + "cfg.data.test.data_prefix = 'data/cats_dogs_dataset/test_set/test_set'\n", + "cfg.data.test.ann_file = 'data/cats_dogs_dataset/test.txt'\n", + "cfg.data.test.classes = 'data/cats_dogs_dataset/classes.txt'\n", + "\n", + "# Specify the normalization parameters in data pipeline\n", + "normalize_cfg = dict(type='Normalize', mean=[124.508, 116.050, 106.438], std=[58.577, 57.310, 57.437], to_rgb=True)\n", + "cfg.data.train.pipeline[3] = normalize_cfg\n", + "cfg.data.val.pipeline[3] = normalize_cfg\n", + "cfg.data.test.pipeline[3] = normalize_cfg\n", + "\n", + "# Modify the evaluation metric\n", + "cfg.evaluation['metric_options']={'topk': (1, )}\n", + "\n", + "# Specify the optimizer\n", + "cfg.optimizer = dict(type='SGD', lr=0.005, momentum=0.9, weight_decay=0.0001)\n", + "cfg.optimizer_config = dict(grad_clip=None)\n", + "\n", + "# Specify the learning rate scheduler\n", + "cfg.lr_config = dict(policy='step', step=1, gamma=0.1)\n", + "cfg.runner = dict(type='EpochBasedRunner', max_epochs=2)\n", + "\n", + "# Specify the work directory\n", + "cfg.work_dir = './work_dirs/cats_dogs_dataset'\n", + "\n", + "# Output logs for every 10 iterations\n", + "cfg.log_config.interval = 10\n", + "\n", + "# Set the random seed and enable the deterministic option of cuDNN\n", + "# to keep the results' reproducible.\n", + "from mmcls.apis import set_random_seed\n", + "cfg.seed = 0\n", + "set_random_seed(0, deterministic=True)\n", + "\n", + "cfg.gpu_ids = range(1)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "HDerVUPFmNR0" + }, + "source": [ + "### Fine-tune the model\n", + "\n", + "Use the API `train_model` to fine-tune our model on the cats & dogs dataset." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "P7unq5cNmN8G", + "outputId": "bf32711b-7bdf-45ee-8db5-e8699d3eff91" + }, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2021-10-21 04:04:12,758 - mmcv - INFO - initialize MobileNetV2 with init_cfg {'type': 'Pretrained', 'checkpoint': 'https://download.openmmlab.com/mmclassification/v0/mobilenet_v2/mobilenet_v2_batch256_imagenet_20200708-3b2dc3af.pth', 'prefix': 'backbone'}\n", + "2021-10-21 04:04:12,759 - mmcv - INFO - load backbone in model from: https://download.openmmlab.com/mmclassification/v0/mobilenet_v2/mobilenet_v2_batch256_imagenet_20200708-3b2dc3af.pth\n", + "2021-10-21 04:04:12,815 - mmcv - INFO - initialize LinearClsHead with init_cfg {'type': 'Normal', 'layer': 'Linear', 'std': 0.01}\n", + "2021-10-21 04:04:12,818 - mmcv - INFO - \n", + "backbone.conv1.conv.weight - torch.Size([32, 3, 3, 3]): \n", + "PretrainedInit: load from https://download.openmmlab.com/mmclassification/v0/mobilenet_v2/mobilenet_v2_batch256_imagenet_20200708-3b2dc3af.pth \n", + " \n", + "2021-10-21 04:04:12,821 - mmcv - INFO - \n", + "backbone.conv1.bn.weight - torch.Size([32]): \n", + "PretrainedInit: load from https://download.openmmlab.com/mmclassification/v0/mobilenet_v2/mobilenet_v2_batch256_imagenet_20200708-3b2dc3af.pth \n", + " \n", + "2021-10-21 04:04:12,823 - mmcv - INFO - \n", + "backbone.conv1.bn.bias - torch.Size([32]): \n", + "PretrainedInit: load from https://download.openmmlab.com/mmclassification/v0/mobilenet_v2/mobilenet_v2_batch256_imagenet_20200708-3b2dc3af.pth \n", + " \n", + "2021-10-21 04:04:12,824 - mmcv - INFO - \n", + "backbone.layer1.0.conv.0.conv.weight - torch.Size([32, 1, 3, 3]): \n", + "PretrainedInit: load from https://download.openmmlab.com/mmclassification/v0/mobilenet_v2/mobilenet_v2_batch256_imagenet_20200708-3b2dc3af.pth \n", + " \n", + "2021-10-21 04:04:12,826 - mmcv - INFO - \n", + "backbone.layer1.0.conv.0.bn.weight - torch.Size([32]): \n", + "PretrainedInit: load from https://download.openmmlab.com/mmclassification/v0/mobilenet_v2/mobilenet_v2_batch256_imagenet_20200708-3b2dc3af.pth \n", + " \n", + "2021-10-21 04:04:12,827 - mmcv - INFO - \n", + "backbone.layer1.0.conv.0.bn.bias - torch.Size([32]): \n", + "PretrainedInit: load from https://download.openmmlab.com/mmclassification/v0/mobilenet_v2/mobilenet_v2_batch256_imagenet_20200708-3b2dc3af.pth \n", + " \n", + "2021-10-21 04:04:12,829 - mmcv - INFO - \n", + "backbone.layer1.0.conv.1.conv.weight - torch.Size([16, 32, 1, 1]): \n", + "PretrainedInit: load from https://download.openmmlab.com/mmclassification/v0/mobilenet_v2/mobilenet_v2_batch256_imagenet_20200708-3b2dc3af.pth \n", + " \n", + "2021-10-21 04:04:12,830 - mmcv - INFO - \n", + "backbone.layer1.0.conv.1.bn.weight - torch.Size([16]): \n", + "PretrainedInit: load from https://download.openmmlab.com/mmclassification/v0/mobilenet_v2/mobilenet_v2_batch256_imagenet_20200708-3b2dc3af.pth \n", + " \n", + "2021-10-21 04:04:12,832 - mmcv - INFO - \n", + "backbone.layer1.0.conv.1.bn.bias - torch.Size([16]): \n", + "PretrainedInit: load from https://download.openmmlab.com/mmclassification/v0/mobilenet_v2/mobilenet_v2_batch256_imagenet_20200708-3b2dc3af.pth \n", + " \n", + "2021-10-21 04:04:12,833 - mmcv - INFO - \n", + "backbone.layer2.0.conv.0.conv.weight - torch.Size([96, 16, 1, 1]): \n", + "PretrainedInit: load from https://download.openmmlab.com/mmclassification/v0/mobilenet_v2/mobilenet_v2_batch256_imagenet_20200708-3b2dc3af.pth \n", + " \n", + "2021-10-21 04:04:12,835 - mmcv - INFO - \n", + "backbone.layer2.0.conv.0.bn.weight - torch.Size([96]): \n", + "PretrainedInit: load from https://download.openmmlab.com/mmclassification/v0/mobilenet_v2/mobilenet_v2_batch256_imagenet_20200708-3b2dc3af.pth \n", + " \n", + "2021-10-21 04:04:12,836 - mmcv - INFO - \n", + "backbone.layer2.0.conv.0.bn.bias - torch.Size([96]): \n", + "PretrainedInit: load from https://download.openmmlab.com/mmclassification/v0/mobilenet_v2/mobilenet_v2_batch256_imagenet_20200708-3b2dc3af.pth \n", + " \n", + "2021-10-21 04:04:12,838 - mmcv - INFO - \n", + "backbone.layer2.0.conv.1.conv.weight - torch.Size([96, 1, 3, 3]): \n", + "PretrainedInit: load from https://download.openmmlab.com/mmclassification/v0/mobilenet_v2/mobilenet_v2_batch256_imagenet_20200708-3b2dc3af.pth \n", + " \n", + "2021-10-21 04:04:12,839 - mmcv - INFO - \n", + "backbone.layer2.0.conv.1.bn.weight - torch.Size([96]): \n", + "PretrainedInit: load from https://download.openmmlab.com/mmclassification/v0/mobilenet_v2/mobilenet_v2_batch256_imagenet_20200708-3b2dc3af.pth \n", + " \n", + "2021-10-21 04:04:12,841 - mmcv - INFO - \n", + "backbone.layer2.0.conv.1.bn.bias - torch.Size([96]): \n", + "PretrainedInit: load from https://download.openmmlab.com/mmclassification/v0/mobilenet_v2/mobilenet_v2_batch256_imagenet_20200708-3b2dc3af.pth \n", + " \n", + "2021-10-21 04:04:12,842 - mmcv - INFO - \n", + "backbone.layer2.0.conv.2.conv.weight - torch.Size([24, 96, 1, 1]): \n", + "PretrainedInit: load from https://download.openmmlab.com/mmclassification/v0/mobilenet_v2/mobilenet_v2_batch256_imagenet_20200708-3b2dc3af.pth \n", + " \n", + "2021-10-21 04:04:12,844 - mmcv - INFO - \n", + "backbone.layer2.0.conv.2.bn.weight - torch.Size([24]): \n", + "PretrainedInit: load from https://download.openmmlab.com/mmclassification/v0/mobilenet_v2/mobilenet_v2_batch256_imagenet_20200708-3b2dc3af.pth \n", + " \n", + "2021-10-21 04:04:12,845 - mmcv - INFO - \n", + "backbone.layer2.0.conv.2.bn.bias - torch.Size([24]): \n", + "PretrainedInit: load from https://download.openmmlab.com/mmclassification/v0/mobilenet_v2/mobilenet_v2_batch256_imagenet_20200708-3b2dc3af.pth \n", + " \n", + "2021-10-21 04:04:12,847 - mmcv - INFO - \n", + "backbone.layer2.1.conv.0.conv.weight - torch.Size([144, 24, 1, 1]): \n", + "PretrainedInit: load from https://download.openmmlab.com/mmclassification/v0/mobilenet_v2/mobilenet_v2_batch256_imagenet_20200708-3b2dc3af.pth \n", + " \n", + "2021-10-21 04:04:12,848 - mmcv - INFO - \n", + "backbone.layer2.1.conv.0.bn.weight - torch.Size([144]): \n", + "PretrainedInit: load from https://download.openmmlab.com/mmclassification/v0/mobilenet_v2/mobilenet_v2_batch256_imagenet_20200708-3b2dc3af.pth \n", + " \n", + "2021-10-21 04:04:12,850 - mmcv - INFO - \n", + "backbone.layer2.1.conv.0.bn.bias - torch.Size([144]): \n", + "PretrainedInit: load from https://download.openmmlab.com/mmclassification/v0/mobilenet_v2/mobilenet_v2_batch256_imagenet_20200708-3b2dc3af.pth \n", + " \n", + "2021-10-21 04:04:12,851 - mmcv - INFO - \n", + "backbone.layer2.1.conv.1.conv.weight - torch.Size([144, 1, 3, 3]): \n", + "PretrainedInit: load from https://download.openmmlab.com/mmclassification/v0/mobilenet_v2/mobilenet_v2_batch256_imagenet_20200708-3b2dc3af.pth \n", + " \n", + "2021-10-21 04:04:12,853 - mmcv - INFO - \n", + "backbone.layer2.1.conv.1.bn.weight - torch.Size([144]): \n", + "PretrainedInit: load from https://download.openmmlab.com/mmclassification/v0/mobilenet_v2/mobilenet_v2_batch256_imagenet_20200708-3b2dc3af.pth \n", + " \n", + "2021-10-21 04:04:12,854 - mmcv - INFO - \n", + "backbone.layer2.1.conv.1.bn.bias - torch.Size([144]): \n", + "PretrainedInit: load from https://download.openmmlab.com/mmclassification/v0/mobilenet_v2/mobilenet_v2_batch256_imagenet_20200708-3b2dc3af.pth \n", + " \n", + "2021-10-21 04:04:12,856 - mmcv - INFO - \n", + "backbone.layer2.1.conv.2.conv.weight - torch.Size([24, 144, 1, 1]): \n", + "PretrainedInit: load from https://download.openmmlab.com/mmclassification/v0/mobilenet_v2/mobilenet_v2_batch256_imagenet_20200708-3b2dc3af.pth \n", + " \n", + "2021-10-21 04:04:12,857 - mmcv - INFO - \n", + "backbone.layer2.1.conv.2.bn.weight - torch.Size([24]): \n", + "PretrainedInit: load from https://download.openmmlab.com/mmclassification/v0/mobilenet_v2/mobilenet_v2_batch256_imagenet_20200708-3b2dc3af.pth \n", + " \n", + "2021-10-21 04:04:12,858 - mmcv - INFO - \n", + "backbone.layer2.1.conv.2.bn.bias - torch.Size([24]): \n", + "PretrainedInit: load from https://download.openmmlab.com/mmclassification/v0/mobilenet_v2/mobilenet_v2_batch256_imagenet_20200708-3b2dc3af.pth \n", + " \n", + "2021-10-21 04:04:12,860 - mmcv - INFO - \n", + "backbone.layer3.0.conv.0.conv.weight - torch.Size([144, 24, 1, 1]): \n", + "PretrainedInit: load from https://download.openmmlab.com/mmclassification/v0/mobilenet_v2/mobilenet_v2_batch256_imagenet_20200708-3b2dc3af.pth \n", + " \n", + "2021-10-21 04:04:12,861 - mmcv - INFO - \n", + "backbone.layer3.0.conv.0.bn.weight - torch.Size([144]): \n", + "PretrainedInit: load from https://download.openmmlab.com/mmclassification/v0/mobilenet_v2/mobilenet_v2_batch256_imagenet_20200708-3b2dc3af.pth \n", + " \n", + "2021-10-21 04:04:12,863 - mmcv - INFO - \n", + "backbone.layer3.0.conv.0.bn.bias - torch.Size([144]): \n", + "PretrainedInit: load from https://download.openmmlab.com/mmclassification/v0/mobilenet_v2/mobilenet_v2_batch256_imagenet_20200708-3b2dc3af.pth \n", + " \n", + "2021-10-21 04:04:12,864 - mmcv - INFO - \n", + "backbone.layer3.0.conv.1.conv.weight - torch.Size([144, 1, 3, 3]): \n", + "PretrainedInit: load from https://download.openmmlab.com/mmclassification/v0/mobilenet_v2/mobilenet_v2_batch256_imagenet_20200708-3b2dc3af.pth \n", + " \n", + "2021-10-21 04:04:12,866 - mmcv - INFO - \n", + "backbone.layer3.0.conv.1.bn.weight - torch.Size([144]): \n", + "PretrainedInit: load from https://download.openmmlab.com/mmclassification/v0/mobilenet_v2/mobilenet_v2_batch256_imagenet_20200708-3b2dc3af.pth \n", + " \n", + "2021-10-21 04:04:12,867 - mmcv - INFO - \n", + "backbone.layer3.0.conv.1.bn.bias - torch.Size([144]): \n", + "PretrainedInit: load from https://download.openmmlab.com/mmclassification/v0/mobilenet_v2/mobilenet_v2_batch256_imagenet_20200708-3b2dc3af.pth \n", + " \n", + "2021-10-21 04:04:12,869 - mmcv - INFO - \n", + "backbone.layer3.0.conv.2.conv.weight - torch.Size([32, 144, 1, 1]): \n", + "PretrainedInit: load from https://download.openmmlab.com/mmclassification/v0/mobilenet_v2/mobilenet_v2_batch256_imagenet_20200708-3b2dc3af.pth \n", + " \n", + "2021-10-21 04:04:12,870 - mmcv - INFO - \n", + "backbone.layer3.0.conv.2.bn.weight - torch.Size([32]): \n", + "PretrainedInit: load from https://download.openmmlab.com/mmclassification/v0/mobilenet_v2/mobilenet_v2_batch256_imagenet_20200708-3b2dc3af.pth \n", + " \n", + "2021-10-21 04:04:12,872 - mmcv - INFO - \n", + "backbone.layer3.0.conv.2.bn.bias - torch.Size([32]): \n", + "PretrainedInit: load from https://download.openmmlab.com/mmclassification/v0/mobilenet_v2/mobilenet_v2_batch256_imagenet_20200708-3b2dc3af.pth \n", + " \n", + "2021-10-21 04:04:12,873 - mmcv - INFO - \n", + "backbone.layer3.1.conv.0.conv.weight - torch.Size([192, 32, 1, 1]): \n", + "PretrainedInit: load from https://download.openmmlab.com/mmclassification/v0/mobilenet_v2/mobilenet_v2_batch256_imagenet_20200708-3b2dc3af.pth \n", + " \n", + "2021-10-21 04:04:12,875 - mmcv - INFO - \n", + "backbone.layer3.1.conv.0.bn.weight - torch.Size([192]): \n", + "PretrainedInit: load from https://download.openmmlab.com/mmclassification/v0/mobilenet_v2/mobilenet_v2_batch256_imagenet_20200708-3b2dc3af.pth \n", + " \n", + "2021-10-21 04:04:12,876 - mmcv - INFO - \n", + "backbone.layer3.1.conv.0.bn.bias - torch.Size([192]): \n", + "PretrainedInit: load from https://download.openmmlab.com/mmclassification/v0/mobilenet_v2/mobilenet_v2_batch256_imagenet_20200708-3b2dc3af.pth \n", + " \n", + "2021-10-21 04:04:12,878 - mmcv - INFO - \n", + "backbone.layer3.1.conv.1.conv.weight - torch.Size([192, 1, 3, 3]): \n", + "PretrainedInit: load from https://download.openmmlab.com/mmclassification/v0/mobilenet_v2/mobilenet_v2_batch256_imagenet_20200708-3b2dc3af.pth \n", + " \n", + "2021-10-21 04:04:12,879 - mmcv - INFO - \n", + "backbone.layer3.1.conv.1.bn.weight - torch.Size([192]): \n", + "PretrainedInit: load from https://download.openmmlab.com/mmclassification/v0/mobilenet_v2/mobilenet_v2_batch256_imagenet_20200708-3b2dc3af.pth \n", + " \n", + "2021-10-21 04:04:12,882 - mmcv - INFO - \n", + "backbone.layer3.1.conv.1.bn.bias - torch.Size([192]): \n", + "PretrainedInit: load from https://download.openmmlab.com/mmclassification/v0/mobilenet_v2/mobilenet_v2_batch256_imagenet_20200708-3b2dc3af.pth \n", + " \n", + "2021-10-21 04:04:12,883 - mmcv - INFO - \n", + "backbone.layer3.1.conv.2.conv.weight - torch.Size([32, 192, 1, 1]): \n", + "PretrainedInit: load from https://download.openmmlab.com/mmclassification/v0/mobilenet_v2/mobilenet_v2_batch256_imagenet_20200708-3b2dc3af.pth \n", + " \n", + "2021-10-21 04:04:12,885 - mmcv - INFO - \n", + "backbone.layer3.1.conv.2.bn.weight - torch.Size([32]): \n", + "PretrainedInit: load from https://download.openmmlab.com/mmclassification/v0/mobilenet_v2/mobilenet_v2_batch256_imagenet_20200708-3b2dc3af.pth \n", + " \n", + "2021-10-21 04:04:12,886 - mmcv - INFO - \n", + "backbone.layer3.1.conv.2.bn.bias - torch.Size([32]): \n", + "PretrainedInit: load from https://download.openmmlab.com/mmclassification/v0/mobilenet_v2/mobilenet_v2_batch256_imagenet_20200708-3b2dc3af.pth \n", + " \n", + "2021-10-21 04:04:12,887 - mmcv - INFO - \n", + "backbone.layer3.2.conv.0.conv.weight - torch.Size([192, 32, 1, 1]): \n", + "PretrainedInit: load from https://download.openmmlab.com/mmclassification/v0/mobilenet_v2/mobilenet_v2_batch256_imagenet_20200708-3b2dc3af.pth \n", + " \n", + "2021-10-21 04:04:12,889 - mmcv - INFO - \n", + "backbone.layer3.2.conv.0.bn.weight - torch.Size([192]): \n", + "PretrainedInit: load from https://download.openmmlab.com/mmclassification/v0/mobilenet_v2/mobilenet_v2_batch256_imagenet_20200708-3b2dc3af.pth \n", + " \n", + "2021-10-21 04:04:12,890 - mmcv - INFO - \n", + "backbone.layer3.2.conv.0.bn.bias - torch.Size([192]): \n", + "PretrainedInit: load from https://download.openmmlab.com/mmclassification/v0/mobilenet_v2/mobilenet_v2_batch256_imagenet_20200708-3b2dc3af.pth \n", + " \n", + "2021-10-21 04:04:12,892 - mmcv - INFO - \n", + "backbone.layer3.2.conv.1.conv.weight - torch.Size([192, 1, 3, 3]): \n", + "PretrainedInit: load from https://download.openmmlab.com/mmclassification/v0/mobilenet_v2/mobilenet_v2_batch256_imagenet_20200708-3b2dc3af.pth \n", + " \n", + "2021-10-21 04:04:12,894 - mmcv - INFO - \n", + "backbone.layer3.2.conv.1.bn.weight - torch.Size([192]): \n", + "PretrainedInit: load from https://download.openmmlab.com/mmclassification/v0/mobilenet_v2/mobilenet_v2_batch256_imagenet_20200708-3b2dc3af.pth \n", + " \n", + "2021-10-21 04:04:12,895 - mmcv - INFO - \n", + "backbone.layer3.2.conv.1.bn.bias - torch.Size([192]): \n", + "PretrainedInit: load from https://download.openmmlab.com/mmclassification/v0/mobilenet_v2/mobilenet_v2_batch256_imagenet_20200708-3b2dc3af.pth \n", + " \n", + "2021-10-21 04:04:12,896 - mmcv - INFO - \n", + "backbone.layer3.2.conv.2.conv.weight - torch.Size([32, 192, 1, 1]): \n", + "PretrainedInit: load from https://download.openmmlab.com/mmclassification/v0/mobilenet_v2/mobilenet_v2_batch256_imagenet_20200708-3b2dc3af.pth \n", + " \n", + "2021-10-21 04:04:12,898 - mmcv - INFO - \n", + "backbone.layer3.2.conv.2.bn.weight - torch.Size([32]): \n", + "PretrainedInit: load from https://download.openmmlab.com/mmclassification/v0/mobilenet_v2/mobilenet_v2_batch256_imagenet_20200708-3b2dc3af.pth \n", + " \n", + "2021-10-21 04:04:12,899 - mmcv - INFO - \n", + "backbone.layer3.2.conv.2.bn.bias - torch.Size([32]): \n", + "PretrainedInit: load from https://download.openmmlab.com/mmclassification/v0/mobilenet_v2/mobilenet_v2_batch256_imagenet_20200708-3b2dc3af.pth \n", + " \n", + "2021-10-21 04:04:12,901 - mmcv - INFO - \n", + "backbone.layer4.0.conv.0.conv.weight - torch.Size([192, 32, 1, 1]): \n", + "PretrainedInit: load from https://download.openmmlab.com/mmclassification/v0/mobilenet_v2/mobilenet_v2_batch256_imagenet_20200708-3b2dc3af.pth \n", + " \n", + "2021-10-21 04:04:12,903 - mmcv - INFO - \n", + "backbone.layer4.0.conv.0.bn.weight - torch.Size([192]): \n", + "PretrainedInit: load from https://download.openmmlab.com/mmclassification/v0/mobilenet_v2/mobilenet_v2_batch256_imagenet_20200708-3b2dc3af.pth \n", + " \n", + "2021-10-21 04:04:12,907 - mmcv - INFO - \n", + "backbone.layer4.0.conv.0.bn.bias - torch.Size([192]): \n", + "PretrainedInit: load from https://download.openmmlab.com/mmclassification/v0/mobilenet_v2/mobilenet_v2_batch256_imagenet_20200708-3b2dc3af.pth \n", + " \n", + "2021-10-21 04:04:12,908 - mmcv - INFO - \n", + "backbone.layer4.0.conv.1.conv.weight - torch.Size([192, 1, 3, 3]): \n", + "PretrainedInit: load from https://download.openmmlab.com/mmclassification/v0/mobilenet_v2/mobilenet_v2_batch256_imagenet_20200708-3b2dc3af.pth \n", + " \n", + "2021-10-21 04:04:12,910 - mmcv - INFO - \n", + "backbone.layer4.0.conv.1.bn.weight - torch.Size([192]): \n", + "PretrainedInit: load from https://download.openmmlab.com/mmclassification/v0/mobilenet_v2/mobilenet_v2_batch256_imagenet_20200708-3b2dc3af.pth \n", + " \n", + "2021-10-21 04:04:12,911 - mmcv - INFO - \n", + "backbone.layer4.0.conv.1.bn.bias - torch.Size([192]): \n", + "PretrainedInit: load from https://download.openmmlab.com/mmclassification/v0/mobilenet_v2/mobilenet_v2_batch256_imagenet_20200708-3b2dc3af.pth \n", + " \n", + "2021-10-21 04:04:12,913 - mmcv - INFO - \n", + "backbone.layer4.0.conv.2.conv.weight - torch.Size([64, 192, 1, 1]): \n", + "PretrainedInit: load from https://download.openmmlab.com/mmclassification/v0/mobilenet_v2/mobilenet_v2_batch256_imagenet_20200708-3b2dc3af.pth \n", + " \n", + "2021-10-21 04:04:12,914 - mmcv - INFO - \n", + "backbone.layer4.0.conv.2.bn.weight - torch.Size([64]): \n", + "PretrainedInit: load from https://download.openmmlab.com/mmclassification/v0/mobilenet_v2/mobilenet_v2_batch256_imagenet_20200708-3b2dc3af.pth \n", + " \n", + "2021-10-21 04:04:12,915 - mmcv - INFO - \n", + "backbone.layer4.0.conv.2.bn.bias - torch.Size([64]): \n", + "PretrainedInit: load from https://download.openmmlab.com/mmclassification/v0/mobilenet_v2/mobilenet_v2_batch256_imagenet_20200708-3b2dc3af.pth \n", + " \n", + "2021-10-21 04:04:12,917 - mmcv - INFO - \n", + "backbone.layer4.1.conv.0.conv.weight - torch.Size([384, 64, 1, 1]): \n", + "PretrainedInit: load from https://download.openmmlab.com/mmclassification/v0/mobilenet_v2/mobilenet_v2_batch256_imagenet_20200708-3b2dc3af.pth \n", + " \n", + "2021-10-21 04:04:12,918 - mmcv - INFO - \n", + "backbone.layer4.1.conv.0.bn.weight - torch.Size([384]): \n", + "PretrainedInit: load from https://download.openmmlab.com/mmclassification/v0/mobilenet_v2/mobilenet_v2_batch256_imagenet_20200708-3b2dc3af.pth \n", + " \n", + "2021-10-21 04:04:12,920 - mmcv - INFO - \n", + "backbone.layer4.1.conv.0.bn.bias - torch.Size([384]): \n", + "PretrainedInit: load from https://download.openmmlab.com/mmclassification/v0/mobilenet_v2/mobilenet_v2_batch256_imagenet_20200708-3b2dc3af.pth \n", + " \n", + "2021-10-21 04:04:12,921 - mmcv - INFO - \n", + "backbone.layer4.1.conv.1.conv.weight - torch.Size([384, 1, 3, 3]): \n", + "PretrainedInit: load from https://download.openmmlab.com/mmclassification/v0/mobilenet_v2/mobilenet_v2_batch256_imagenet_20200708-3b2dc3af.pth \n", + " \n", + "2021-10-21 04:04:12,923 - mmcv - INFO - \n", + "backbone.layer4.1.conv.1.bn.weight - torch.Size([384]): \n", + "PretrainedInit: load from https://download.openmmlab.com/mmclassification/v0/mobilenet_v2/mobilenet_v2_batch256_imagenet_20200708-3b2dc3af.pth \n", + " \n", + "2021-10-21 04:04:12,924 - mmcv - INFO - \n", + "backbone.layer4.1.conv.1.bn.bias - torch.Size([384]): \n", + "PretrainedInit: load from https://download.openmmlab.com/mmclassification/v0/mobilenet_v2/mobilenet_v2_batch256_imagenet_20200708-3b2dc3af.pth \n", + " \n", + "2021-10-21 04:04:12,925 - mmcv - INFO - \n", + "backbone.layer4.1.conv.2.conv.weight - torch.Size([64, 384, 1, 1]): \n", + "PretrainedInit: load from https://download.openmmlab.com/mmclassification/v0/mobilenet_v2/mobilenet_v2_batch256_imagenet_20200708-3b2dc3af.pth \n", + " \n", + "2021-10-21 04:04:12,927 - mmcv - INFO - \n", + "backbone.layer4.1.conv.2.bn.weight - torch.Size([64]): \n", + "PretrainedInit: load from https://download.openmmlab.com/mmclassification/v0/mobilenet_v2/mobilenet_v2_batch256_imagenet_20200708-3b2dc3af.pth \n", + " \n", + "2021-10-21 04:04:12,928 - mmcv - INFO - \n", + "backbone.layer4.1.conv.2.bn.bias - torch.Size([64]): \n", + "PretrainedInit: load from https://download.openmmlab.com/mmclassification/v0/mobilenet_v2/mobilenet_v2_batch256_imagenet_20200708-3b2dc3af.pth \n", + " \n", + "2021-10-21 04:04:12,930 - mmcv - INFO - \n", + "backbone.layer4.2.conv.0.conv.weight - torch.Size([384, 64, 1, 1]): \n", + "PretrainedInit: load from https://download.openmmlab.com/mmclassification/v0/mobilenet_v2/mobilenet_v2_batch256_imagenet_20200708-3b2dc3af.pth \n", + " \n", + "2021-10-21 04:04:12,932 - mmcv - INFO - \n", + "backbone.layer4.2.conv.0.bn.weight - torch.Size([384]): \n", + "PretrainedInit: load from https://download.openmmlab.com/mmclassification/v0/mobilenet_v2/mobilenet_v2_batch256_imagenet_20200708-3b2dc3af.pth \n", + " \n", + "2021-10-21 04:04:12,933 - mmcv - INFO - \n", + "backbone.layer4.2.conv.0.bn.bias - torch.Size([384]): \n", + "PretrainedInit: load from https://download.openmmlab.com/mmclassification/v0/mobilenet_v2/mobilenet_v2_batch256_imagenet_20200708-3b2dc3af.pth \n", + " \n", + "2021-10-21 04:04:12,935 - mmcv - INFO - \n", + "backbone.layer4.2.conv.1.conv.weight - torch.Size([384, 1, 3, 3]): \n", + "PretrainedInit: load from https://download.openmmlab.com/mmclassification/v0/mobilenet_v2/mobilenet_v2_batch256_imagenet_20200708-3b2dc3af.pth \n", + " \n", + "2021-10-21 04:04:12,936 - mmcv - INFO - \n", + "backbone.layer4.2.conv.1.bn.weight - torch.Size([384]): \n", + "PretrainedInit: load from https://download.openmmlab.com/mmclassification/v0/mobilenet_v2/mobilenet_v2_batch256_imagenet_20200708-3b2dc3af.pth \n", + " \n", + "2021-10-21 04:04:12,938 - mmcv - INFO - \n", + "backbone.layer4.2.conv.1.bn.bias - torch.Size([384]): \n", + "PretrainedInit: load from https://download.openmmlab.com/mmclassification/v0/mobilenet_v2/mobilenet_v2_batch256_imagenet_20200708-3b2dc3af.pth \n", + " \n", + "2021-10-21 04:04:12,939 - mmcv - INFO - \n", + "backbone.layer4.2.conv.2.conv.weight - torch.Size([64, 384, 1, 1]): \n", + "PretrainedInit: load from https://download.openmmlab.com/mmclassification/v0/mobilenet_v2/mobilenet_v2_batch256_imagenet_20200708-3b2dc3af.pth \n", + " \n", + "2021-10-21 04:04:12,941 - mmcv - INFO - \n", + "backbone.layer4.2.conv.2.bn.weight - torch.Size([64]): \n", + "PretrainedInit: load from https://download.openmmlab.com/mmclassification/v0/mobilenet_v2/mobilenet_v2_batch256_imagenet_20200708-3b2dc3af.pth \n", + " \n", + "2021-10-21 04:04:12,942 - mmcv - INFO - \n", + "backbone.layer4.2.conv.2.bn.bias - torch.Size([64]): \n", + "PretrainedInit: load from https://download.openmmlab.com/mmclassification/v0/mobilenet_v2/mobilenet_v2_batch256_imagenet_20200708-3b2dc3af.pth \n", + " \n", + "2021-10-21 04:04:12,944 - mmcv - INFO - \n", + "backbone.layer4.3.conv.0.conv.weight - torch.Size([384, 64, 1, 1]): \n", + "PretrainedInit: load from https://download.openmmlab.com/mmclassification/v0/mobilenet_v2/mobilenet_v2_batch256_imagenet_20200708-3b2dc3af.pth \n", + " \n", + "2021-10-21 04:04:12,945 - mmcv - INFO - \n", + "backbone.layer4.3.conv.0.bn.weight - torch.Size([384]): \n", + "PretrainedInit: load from https://download.openmmlab.com/mmclassification/v0/mobilenet_v2/mobilenet_v2_batch256_imagenet_20200708-3b2dc3af.pth \n", + " \n", + "2021-10-21 04:04:12,946 - mmcv - INFO - \n", + "backbone.layer4.3.conv.0.bn.bias - torch.Size([384]): \n", + "PretrainedInit: load from https://download.openmmlab.com/mmclassification/v0/mobilenet_v2/mobilenet_v2_batch256_imagenet_20200708-3b2dc3af.pth \n", + " \n", + "2021-10-21 04:04:12,948 - mmcv - INFO - \n", + "backbone.layer4.3.conv.1.conv.weight - torch.Size([384, 1, 3, 3]): \n", + "PretrainedInit: load from https://download.openmmlab.com/mmclassification/v0/mobilenet_v2/mobilenet_v2_batch256_imagenet_20200708-3b2dc3af.pth \n", + " \n", + "2021-10-21 04:04:12,949 - mmcv - INFO - \n", + "backbone.layer4.3.conv.1.bn.weight - torch.Size([384]): \n", + "PretrainedInit: load from https://download.openmmlab.com/mmclassification/v0/mobilenet_v2/mobilenet_v2_batch256_imagenet_20200708-3b2dc3af.pth \n", + " \n", + "2021-10-21 04:04:12,951 - mmcv - INFO - \n", + "backbone.layer4.3.conv.1.bn.bias - torch.Size([384]): \n", + "PretrainedInit: load from https://download.openmmlab.com/mmclassification/v0/mobilenet_v2/mobilenet_v2_batch256_imagenet_20200708-3b2dc3af.pth \n", + " \n", + "2021-10-21 04:04:12,952 - mmcv - INFO - \n", + "backbone.layer4.3.conv.2.conv.weight - torch.Size([64, 384, 1, 1]): \n", + "PretrainedInit: load from https://download.openmmlab.com/mmclassification/v0/mobilenet_v2/mobilenet_v2_batch256_imagenet_20200708-3b2dc3af.pth \n", + " \n", + "2021-10-21 04:04:12,954 - mmcv - INFO - \n", + "backbone.layer4.3.conv.2.bn.weight - torch.Size([64]): \n", + "PretrainedInit: load from https://download.openmmlab.com/mmclassification/v0/mobilenet_v2/mobilenet_v2_batch256_imagenet_20200708-3b2dc3af.pth \n", + " \n", + "2021-10-21 04:04:12,955 - mmcv - INFO - \n", + "backbone.layer4.3.conv.2.bn.bias - torch.Size([64]): \n", + "PretrainedInit: load from https://download.openmmlab.com/mmclassification/v0/mobilenet_v2/mobilenet_v2_batch256_imagenet_20200708-3b2dc3af.pth \n", + " \n", + "2021-10-21 04:04:12,957 - mmcv - INFO - \n", + "backbone.layer5.0.conv.0.conv.weight - torch.Size([384, 64, 1, 1]): \n", + "PretrainedInit: load from https://download.openmmlab.com/mmclassification/v0/mobilenet_v2/mobilenet_v2_batch256_imagenet_20200708-3b2dc3af.pth \n", + " \n", + "2021-10-21 04:04:12,958 - mmcv - INFO - \n", + "backbone.layer5.0.conv.0.bn.weight - torch.Size([384]): \n", + "PretrainedInit: load from https://download.openmmlab.com/mmclassification/v0/mobilenet_v2/mobilenet_v2_batch256_imagenet_20200708-3b2dc3af.pth \n", + " \n", + "2021-10-21 04:04:12,959 - mmcv - INFO - \n", + "backbone.layer5.0.conv.0.bn.bias - torch.Size([384]): \n", + "PretrainedInit: load from https://download.openmmlab.com/mmclassification/v0/mobilenet_v2/mobilenet_v2_batch256_imagenet_20200708-3b2dc3af.pth \n", + " \n", + "2021-10-21 04:04:12,961 - mmcv - INFO - \n", + "backbone.layer5.0.conv.1.conv.weight - torch.Size([384, 1, 3, 3]): \n", + "PretrainedInit: load from https://download.openmmlab.com/mmclassification/v0/mobilenet_v2/mobilenet_v2_batch256_imagenet_20200708-3b2dc3af.pth \n", + " \n", + "2021-10-21 04:04:12,963 - mmcv - INFO - \n", + "backbone.layer5.0.conv.1.bn.weight - torch.Size([384]): \n", + "PretrainedInit: load from https://download.openmmlab.com/mmclassification/v0/mobilenet_v2/mobilenet_v2_batch256_imagenet_20200708-3b2dc3af.pth \n", + " \n", + "2021-10-21 04:04:12,964 - mmcv - INFO - \n", + "backbone.layer5.0.conv.1.bn.bias - torch.Size([384]): \n", + "PretrainedInit: load from https://download.openmmlab.com/mmclassification/v0/mobilenet_v2/mobilenet_v2_batch256_imagenet_20200708-3b2dc3af.pth \n", + " \n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Use load_from_http loader\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2021-10-21 04:04:12,965 - mmcv - INFO - \n", + "backbone.layer5.0.conv.2.conv.weight - torch.Size([96, 384, 1, 1]): \n", + "PretrainedInit: load from https://download.openmmlab.com/mmclassification/v0/mobilenet_v2/mobilenet_v2_batch256_imagenet_20200708-3b2dc3af.pth \n", + " \n", + "2021-10-21 04:04:12,967 - mmcv - INFO - \n", + "backbone.layer5.0.conv.2.bn.weight - torch.Size([96]): \n", + "PretrainedInit: load from https://download.openmmlab.com/mmclassification/v0/mobilenet_v2/mobilenet_v2_batch256_imagenet_20200708-3b2dc3af.pth \n", + " \n", + "2021-10-21 04:04:12,969 - mmcv - INFO - \n", + "backbone.layer5.0.conv.2.bn.bias - torch.Size([96]): \n", + "PretrainedInit: load from https://download.openmmlab.com/mmclassification/v0/mobilenet_v2/mobilenet_v2_batch256_imagenet_20200708-3b2dc3af.pth \n", + " \n", + "2021-10-21 04:04:12,970 - mmcv - INFO - \n", + "backbone.layer5.1.conv.0.conv.weight - torch.Size([576, 96, 1, 1]): \n", + "PretrainedInit: load from https://download.openmmlab.com/mmclassification/v0/mobilenet_v2/mobilenet_v2_batch256_imagenet_20200708-3b2dc3af.pth \n", + " \n", + "2021-10-21 04:04:12,972 - mmcv - INFO - \n", + "backbone.layer5.1.conv.0.bn.weight - torch.Size([576]): \n", + "PretrainedInit: load from https://download.openmmlab.com/mmclassification/v0/mobilenet_v2/mobilenet_v2_batch256_imagenet_20200708-3b2dc3af.pth \n", + " \n", + "2021-10-21 04:04:12,973 - mmcv - INFO - \n", + "backbone.layer5.1.conv.0.bn.bias - torch.Size([576]): \n", + "PretrainedInit: load from https://download.openmmlab.com/mmclassification/v0/mobilenet_v2/mobilenet_v2_batch256_imagenet_20200708-3b2dc3af.pth \n", + " \n", + "2021-10-21 04:04:12,975 - mmcv - INFO - \n", + "backbone.layer5.1.conv.1.conv.weight - torch.Size([576, 1, 3, 3]): \n", + "PretrainedInit: load from https://download.openmmlab.com/mmclassification/v0/mobilenet_v2/mobilenet_v2_batch256_imagenet_20200708-3b2dc3af.pth \n", + " \n", + "2021-10-21 04:04:12,976 - mmcv - INFO - \n", + "backbone.layer5.1.conv.1.bn.weight - torch.Size([576]): \n", + "PretrainedInit: load from https://download.openmmlab.com/mmclassification/v0/mobilenet_v2/mobilenet_v2_batch256_imagenet_20200708-3b2dc3af.pth \n", + " \n", + "2021-10-21 04:04:12,978 - mmcv - INFO - \n", + "backbone.layer5.1.conv.1.bn.bias - torch.Size([576]): \n", + "PretrainedInit: load from https://download.openmmlab.com/mmclassification/v0/mobilenet_v2/mobilenet_v2_batch256_imagenet_20200708-3b2dc3af.pth \n", + " \n", + "2021-10-21 04:04:12,979 - mmcv - INFO - \n", + "backbone.layer5.1.conv.2.conv.weight - torch.Size([96, 576, 1, 1]): \n", + "PretrainedInit: load from https://download.openmmlab.com/mmclassification/v0/mobilenet_v2/mobilenet_v2_batch256_imagenet_20200708-3b2dc3af.pth \n", + " \n", + "2021-10-21 04:04:12,981 - mmcv - INFO - \n", + "backbone.layer5.1.conv.2.bn.weight - torch.Size([96]): \n", + "PretrainedInit: load from https://download.openmmlab.com/mmclassification/v0/mobilenet_v2/mobilenet_v2_batch256_imagenet_20200708-3b2dc3af.pth \n", + " \n", + "2021-10-21 04:04:12,982 - mmcv - INFO - \n", + "backbone.layer5.1.conv.2.bn.bias - torch.Size([96]): \n", + "PretrainedInit: load from https://download.openmmlab.com/mmclassification/v0/mobilenet_v2/mobilenet_v2_batch256_imagenet_20200708-3b2dc3af.pth \n", + " \n", + "2021-10-21 04:04:12,984 - mmcv - INFO - \n", + "backbone.layer5.2.conv.0.conv.weight - torch.Size([576, 96, 1, 1]): \n", + "PretrainedInit: load from https://download.openmmlab.com/mmclassification/v0/mobilenet_v2/mobilenet_v2_batch256_imagenet_20200708-3b2dc3af.pth \n", + " \n", + "2021-10-21 04:04:12,985 - mmcv - INFO - \n", + "backbone.layer5.2.conv.0.bn.weight - torch.Size([576]): \n", + "PretrainedInit: load from https://download.openmmlab.com/mmclassification/v0/mobilenet_v2/mobilenet_v2_batch256_imagenet_20200708-3b2dc3af.pth \n", + " \n", + "2021-10-21 04:04:12,986 - mmcv - INFO - \n", + "backbone.layer5.2.conv.0.bn.bias - torch.Size([576]): \n", + "PretrainedInit: load from https://download.openmmlab.com/mmclassification/v0/mobilenet_v2/mobilenet_v2_batch256_imagenet_20200708-3b2dc3af.pth \n", + " \n", + "2021-10-21 04:04:12,988 - mmcv - INFO - \n", + "backbone.layer5.2.conv.1.conv.weight - torch.Size([576, 1, 3, 3]): \n", + "PretrainedInit: load from https://download.openmmlab.com/mmclassification/v0/mobilenet_v2/mobilenet_v2_batch256_imagenet_20200708-3b2dc3af.pth \n", + " \n", + "2021-10-21 04:04:12,989 - mmcv - INFO - \n", + "backbone.layer5.2.conv.1.bn.weight - torch.Size([576]): \n", + "PretrainedInit: load from https://download.openmmlab.com/mmclassification/v0/mobilenet_v2/mobilenet_v2_batch256_imagenet_20200708-3b2dc3af.pth \n", + " \n", + "2021-10-21 04:04:12,991 - mmcv - INFO - \n", + "backbone.layer5.2.conv.1.bn.bias - torch.Size([576]): \n", + "PretrainedInit: load from https://download.openmmlab.com/mmclassification/v0/mobilenet_v2/mobilenet_v2_batch256_imagenet_20200708-3b2dc3af.pth \n", + " \n", + "2021-10-21 04:04:12,992 - mmcv - INFO - \n", + "backbone.layer5.2.conv.2.conv.weight - torch.Size([96, 576, 1, 1]): \n", + "PretrainedInit: load from https://download.openmmlab.com/mmclassification/v0/mobilenet_v2/mobilenet_v2_batch256_imagenet_20200708-3b2dc3af.pth \n", + " \n", + "2021-10-21 04:04:12,994 - mmcv - INFO - \n", + "backbone.layer5.2.conv.2.bn.weight - torch.Size([96]): \n", + "PretrainedInit: load from https://download.openmmlab.com/mmclassification/v0/mobilenet_v2/mobilenet_v2_batch256_imagenet_20200708-3b2dc3af.pth \n", + " \n", + "2021-10-21 04:04:12,995 - mmcv - INFO - \n", + "backbone.layer5.2.conv.2.bn.bias - torch.Size([96]): \n", + "PretrainedInit: load from https://download.openmmlab.com/mmclassification/v0/mobilenet_v2/mobilenet_v2_batch256_imagenet_20200708-3b2dc3af.pth \n", + " \n", + "2021-10-21 04:04:12,997 - mmcv - INFO - \n", + "backbone.layer6.0.conv.0.conv.weight - torch.Size([576, 96, 1, 1]): \n", + "PretrainedInit: load from https://download.openmmlab.com/mmclassification/v0/mobilenet_v2/mobilenet_v2_batch256_imagenet_20200708-3b2dc3af.pth \n", + " \n", + "2021-10-21 04:04:12,998 - mmcv - INFO - \n", + "backbone.layer6.0.conv.0.bn.weight - torch.Size([576]): \n", + "PretrainedInit: load from https://download.openmmlab.com/mmclassification/v0/mobilenet_v2/mobilenet_v2_batch256_imagenet_20200708-3b2dc3af.pth \n", + " \n", + "2021-10-21 04:04:12,999 - mmcv - INFO - \n", + "backbone.layer6.0.conv.0.bn.bias - torch.Size([576]): \n", + "PretrainedInit: load from https://download.openmmlab.com/mmclassification/v0/mobilenet_v2/mobilenet_v2_batch256_imagenet_20200708-3b2dc3af.pth \n", + " \n", + "2021-10-21 04:04:13,001 - mmcv - INFO - \n", + "backbone.layer6.0.conv.1.conv.weight - torch.Size([576, 1, 3, 3]): \n", + "PretrainedInit: load from https://download.openmmlab.com/mmclassification/v0/mobilenet_v2/mobilenet_v2_batch256_imagenet_20200708-3b2dc3af.pth \n", + " \n", + "2021-10-21 04:04:13,002 - mmcv - INFO - \n", + "backbone.layer6.0.conv.1.bn.weight - torch.Size([576]): \n", + "PretrainedInit: load from https://download.openmmlab.com/mmclassification/v0/mobilenet_v2/mobilenet_v2_batch256_imagenet_20200708-3b2dc3af.pth \n", + " \n", + "2021-10-21 04:04:13,004 - mmcv - INFO - \n", + "backbone.layer6.0.conv.1.bn.bias - torch.Size([576]): \n", + "PretrainedInit: load from https://download.openmmlab.com/mmclassification/v0/mobilenet_v2/mobilenet_v2_batch256_imagenet_20200708-3b2dc3af.pth \n", + " \n", + "2021-10-21 04:04:13,005 - mmcv - INFO - \n", + "backbone.layer6.0.conv.2.conv.weight - torch.Size([160, 576, 1, 1]): \n", + "PretrainedInit: load from https://download.openmmlab.com/mmclassification/v0/mobilenet_v2/mobilenet_v2_batch256_imagenet_20200708-3b2dc3af.pth \n", + " \n", + "2021-10-21 04:04:13,007 - mmcv - INFO - \n", + "backbone.layer6.0.conv.2.bn.weight - torch.Size([160]): \n", + "PretrainedInit: load from https://download.openmmlab.com/mmclassification/v0/mobilenet_v2/mobilenet_v2_batch256_imagenet_20200708-3b2dc3af.pth \n", + " \n", + "2021-10-21 04:04:13,008 - mmcv - INFO - \n", + "backbone.layer6.0.conv.2.bn.bias - torch.Size([160]): \n", + "PretrainedInit: load from https://download.openmmlab.com/mmclassification/v0/mobilenet_v2/mobilenet_v2_batch256_imagenet_20200708-3b2dc3af.pth \n", + " \n", + "2021-10-21 04:04:13,010 - mmcv - INFO - \n", + "backbone.layer6.1.conv.0.conv.weight - torch.Size([960, 160, 1, 1]): \n", + "PretrainedInit: load from https://download.openmmlab.com/mmclassification/v0/mobilenet_v2/mobilenet_v2_batch256_imagenet_20200708-3b2dc3af.pth \n", + " \n", + "2021-10-21 04:04:13,011 - mmcv - INFO - \n", + "backbone.layer6.1.conv.0.bn.weight - torch.Size([960]): \n", + "PretrainedInit: load from https://download.openmmlab.com/mmclassification/v0/mobilenet_v2/mobilenet_v2_batch256_imagenet_20200708-3b2dc3af.pth \n", + " \n", + "2021-10-21 04:04:13,013 - mmcv - INFO - \n", + "backbone.layer6.1.conv.0.bn.bias - torch.Size([960]): \n", + "PretrainedInit: load from https://download.openmmlab.com/mmclassification/v0/mobilenet_v2/mobilenet_v2_batch256_imagenet_20200708-3b2dc3af.pth \n", + " \n", + "2021-10-21 04:04:13,014 - mmcv - INFO - \n", + "backbone.layer6.1.conv.1.conv.weight - torch.Size([960, 1, 3, 3]): \n", + "PretrainedInit: load from https://download.openmmlab.com/mmclassification/v0/mobilenet_v2/mobilenet_v2_batch256_imagenet_20200708-3b2dc3af.pth \n", + " \n", + "2021-10-21 04:04:13,015 - mmcv - INFO - \n", + "backbone.layer6.1.conv.1.bn.weight - torch.Size([960]): \n", + "PretrainedInit: load from https://download.openmmlab.com/mmclassification/v0/mobilenet_v2/mobilenet_v2_batch256_imagenet_20200708-3b2dc3af.pth \n", + " \n", + "2021-10-21 04:04:13,017 - mmcv - INFO - \n", + "backbone.layer6.1.conv.1.bn.bias - torch.Size([960]): \n", + "PretrainedInit: load from https://download.openmmlab.com/mmclassification/v0/mobilenet_v2/mobilenet_v2_batch256_imagenet_20200708-3b2dc3af.pth \n", + " \n", + "2021-10-21 04:04:13,018 - mmcv - INFO - \n", + "backbone.layer6.1.conv.2.conv.weight - torch.Size([160, 960, 1, 1]): \n", + "PretrainedInit: load from https://download.openmmlab.com/mmclassification/v0/mobilenet_v2/mobilenet_v2_batch256_imagenet_20200708-3b2dc3af.pth \n", + " \n", + "2021-10-21 04:04:13,021 - mmcv - INFO - \n", + "backbone.layer6.1.conv.2.bn.weight - torch.Size([160]): \n", + "PretrainedInit: load from https://download.openmmlab.com/mmclassification/v0/mobilenet_v2/mobilenet_v2_batch256_imagenet_20200708-3b2dc3af.pth \n", + " \n", + "2021-10-21 04:04:13,022 - mmcv - INFO - \n", + "backbone.layer6.1.conv.2.bn.bias - torch.Size([160]): \n", + "PretrainedInit: load from https://download.openmmlab.com/mmclassification/v0/mobilenet_v2/mobilenet_v2_batch256_imagenet_20200708-3b2dc3af.pth \n", + " \n", + "2021-10-21 04:04:13,024 - mmcv - INFO - \n", + "backbone.layer6.2.conv.0.conv.weight - torch.Size([960, 160, 1, 1]): \n", + "PretrainedInit: load from https://download.openmmlab.com/mmclassification/v0/mobilenet_v2/mobilenet_v2_batch256_imagenet_20200708-3b2dc3af.pth \n", + " \n", + "2021-10-21 04:04:13,025 - mmcv - INFO - \n", + "backbone.layer6.2.conv.0.bn.weight - torch.Size([960]): \n", + "PretrainedInit: load from https://download.openmmlab.com/mmclassification/v0/mobilenet_v2/mobilenet_v2_batch256_imagenet_20200708-3b2dc3af.pth \n", + " \n", + "2021-10-21 04:04:13,027 - mmcv - INFO - \n", + "backbone.layer6.2.conv.0.bn.bias - torch.Size([960]): \n", + "PretrainedInit: load from https://download.openmmlab.com/mmclassification/v0/mobilenet_v2/mobilenet_v2_batch256_imagenet_20200708-3b2dc3af.pth \n", + " \n", + "2021-10-21 04:04:13,028 - mmcv - INFO - \n", + "backbone.layer6.2.conv.1.conv.weight - torch.Size([960, 1, 3, 3]): \n", + "PretrainedInit: load from https://download.openmmlab.com/mmclassification/v0/mobilenet_v2/mobilenet_v2_batch256_imagenet_20200708-3b2dc3af.pth \n", + " \n", + "2021-10-21 04:04:13,030 - mmcv - INFO - \n", + "backbone.layer6.2.conv.1.bn.weight - torch.Size([960]): \n", + "PretrainedInit: load from https://download.openmmlab.com/mmclassification/v0/mobilenet_v2/mobilenet_v2_batch256_imagenet_20200708-3b2dc3af.pth \n", + " \n", + "2021-10-21 04:04:13,031 - mmcv - INFO - \n", + "backbone.layer6.2.conv.1.bn.bias - torch.Size([960]): \n", + "PretrainedInit: load from https://download.openmmlab.com/mmclassification/v0/mobilenet_v2/mobilenet_v2_batch256_imagenet_20200708-3b2dc3af.pth \n", + " \n", + "2021-10-21 04:04:13,033 - mmcv - INFO - \n", + "backbone.layer6.2.conv.2.conv.weight - torch.Size([160, 960, 1, 1]): \n", + "PretrainedInit: load from https://download.openmmlab.com/mmclassification/v0/mobilenet_v2/mobilenet_v2_batch256_imagenet_20200708-3b2dc3af.pth \n", + " \n", + "2021-10-21 04:04:13,034 - mmcv - INFO - \n", + "backbone.layer6.2.conv.2.bn.weight - torch.Size([160]): \n", + "PretrainedInit: load from https://download.openmmlab.com/mmclassification/v0/mobilenet_v2/mobilenet_v2_batch256_imagenet_20200708-3b2dc3af.pth \n", + " \n", + "2021-10-21 04:04:13,036 - mmcv - INFO - \n", + "backbone.layer6.2.conv.2.bn.bias - torch.Size([160]): \n", + "PretrainedInit: load from https://download.openmmlab.com/mmclassification/v0/mobilenet_v2/mobilenet_v2_batch256_imagenet_20200708-3b2dc3af.pth \n", + " \n", + "2021-10-21 04:04:13,037 - mmcv - INFO - \n", + "backbone.layer7.0.conv.0.conv.weight - torch.Size([960, 160, 1, 1]): \n", + "PretrainedInit: load from https://download.openmmlab.com/mmclassification/v0/mobilenet_v2/mobilenet_v2_batch256_imagenet_20200708-3b2dc3af.pth \n", + " \n", + "2021-10-21 04:04:13,039 - mmcv - INFO - \n", + "backbone.layer7.0.conv.0.bn.weight - torch.Size([960]): \n", + "PretrainedInit: load from https://download.openmmlab.com/mmclassification/v0/mobilenet_v2/mobilenet_v2_batch256_imagenet_20200708-3b2dc3af.pth \n", + " \n", + "2021-10-21 04:04:13,040 - mmcv - INFO - \n", + "backbone.layer7.0.conv.0.bn.bias - torch.Size([960]): \n", + "PretrainedInit: load from https://download.openmmlab.com/mmclassification/v0/mobilenet_v2/mobilenet_v2_batch256_imagenet_20200708-3b2dc3af.pth \n", + " \n", + "2021-10-21 04:04:13,041 - mmcv - INFO - \n", + "backbone.layer7.0.conv.1.conv.weight - torch.Size([960, 1, 3, 3]): \n", + "PretrainedInit: load from https://download.openmmlab.com/mmclassification/v0/mobilenet_v2/mobilenet_v2_batch256_imagenet_20200708-3b2dc3af.pth \n", + " \n", + "2021-10-21 04:04:13,043 - mmcv - INFO - \n", + "backbone.layer7.0.conv.1.bn.weight - torch.Size([960]): \n", + "PretrainedInit: load from https://download.openmmlab.com/mmclassification/v0/mobilenet_v2/mobilenet_v2_batch256_imagenet_20200708-3b2dc3af.pth \n", + " \n", + "2021-10-21 04:04:13,045 - mmcv - INFO - \n", + "backbone.layer7.0.conv.1.bn.bias - torch.Size([960]): \n", + "PretrainedInit: load from https://download.openmmlab.com/mmclassification/v0/mobilenet_v2/mobilenet_v2_batch256_imagenet_20200708-3b2dc3af.pth \n", + " \n", + "2021-10-21 04:04:13,046 - mmcv - INFO - \n", + "backbone.layer7.0.conv.2.conv.weight - torch.Size([320, 960, 1, 1]): \n", + "PretrainedInit: load from https://download.openmmlab.com/mmclassification/v0/mobilenet_v2/mobilenet_v2_batch256_imagenet_20200708-3b2dc3af.pth \n", + " \n", + "2021-10-21 04:04:13,048 - mmcv - INFO - \n", + "backbone.layer7.0.conv.2.bn.weight - torch.Size([320]): \n", + "PretrainedInit: load from https://download.openmmlab.com/mmclassification/v0/mobilenet_v2/mobilenet_v2_batch256_imagenet_20200708-3b2dc3af.pth \n", + " \n", + "2021-10-21 04:04:13,049 - mmcv - INFO - \n", + "backbone.layer7.0.conv.2.bn.bias - torch.Size([320]): \n", + "PretrainedInit: load from https://download.openmmlab.com/mmclassification/v0/mobilenet_v2/mobilenet_v2_batch256_imagenet_20200708-3b2dc3af.pth \n", + " \n", + "2021-10-21 04:04:13,051 - mmcv - INFO - \n", + "backbone.conv2.conv.weight - torch.Size([1280, 320, 1, 1]): \n", + "PretrainedInit: load from https://download.openmmlab.com/mmclassification/v0/mobilenet_v2/mobilenet_v2_batch256_imagenet_20200708-3b2dc3af.pth \n", + " \n", + "2021-10-21 04:04:13,052 - mmcv - INFO - \n", + "backbone.conv2.bn.weight - torch.Size([1280]): \n", + "PretrainedInit: load from https://download.openmmlab.com/mmclassification/v0/mobilenet_v2/mobilenet_v2_batch256_imagenet_20200708-3b2dc3af.pth \n", + " \n", + "2021-10-21 04:04:13,054 - mmcv - INFO - \n", + "backbone.conv2.bn.bias - torch.Size([1280]): \n", + "PretrainedInit: load from https://download.openmmlab.com/mmclassification/v0/mobilenet_v2/mobilenet_v2_batch256_imagenet_20200708-3b2dc3af.pth \n", + " \n", + "2021-10-21 04:04:13,055 - mmcv - INFO - \n", + "head.fc.weight - torch.Size([2, 1280]): \n", + "NormalInit: mean=0, std=0.01, bias=0 \n", + " \n", + "2021-10-21 04:04:13,057 - mmcv - INFO - \n", + "head.fc.bias - torch.Size([2]): \n", + "NormalInit: mean=0, std=0.01, bias=0 \n", + " \n", + "2021-10-21 04:04:13,408 - mmcls - INFO - Start running, host: root@cc5b42005207, work_dir: /content/mmclassification/work_dirs/cats_dogs_dataset\n", + "2021-10-21 04:04:13,412 - mmcls - INFO - Hooks will be executed in the following order:\n", + "before_run:\n", + "(VERY_HIGH ) StepLrUpdaterHook \n", + "(NORMAL ) CheckpointHook \n", + "(LOW ) EvalHook \n", + "(VERY_LOW ) TextLoggerHook \n", + " -------------------- \n", + "before_train_epoch:\n", + "(VERY_HIGH ) StepLrUpdaterHook \n", + "(LOW ) IterTimerHook \n", + "(LOW ) EvalHook \n", + "(VERY_LOW ) TextLoggerHook \n", + " -------------------- \n", + "before_train_iter:\n", + "(VERY_HIGH ) StepLrUpdaterHook \n", + "(LOW ) IterTimerHook \n", + "(LOW ) EvalHook \n", + " -------------------- \n", + "after_train_iter:\n", + "(ABOVE_NORMAL) OptimizerHook \n", + "(NORMAL ) CheckpointHook \n", + "(LOW ) IterTimerHook \n", + "(LOW ) EvalHook \n", + "(VERY_LOW ) TextLoggerHook \n", + " -------------------- \n", + "after_train_epoch:\n", + "(NORMAL ) CheckpointHook \n", + "(LOW ) EvalHook \n", + "(VERY_LOW ) TextLoggerHook \n", + " -------------------- \n", + "before_val_epoch:\n", + "(LOW ) IterTimerHook \n", + "(VERY_LOW ) TextLoggerHook \n", + " -------------------- \n", + "before_val_iter:\n", + "(LOW ) IterTimerHook \n", + " -------------------- \n", + "after_val_iter:\n", + "(LOW ) IterTimerHook \n", + " -------------------- \n", + "after_val_epoch:\n", + "(VERY_LOW ) TextLoggerHook \n", + " -------------------- \n", + "2021-10-21 04:04:13,417 - mmcls - INFO - workflow: [('train', 1)], max: 2 epochs\n", + "2021-10-21 04:04:18,924 - mmcls - INFO - Epoch [1][10/201]\tlr: 5.000e-03, eta: 0:03:29, time: 0.535, data_time: 0.259, memory: 1709, loss: 0.3917\n", + "2021-10-21 04:04:21,743 - mmcls - INFO - Epoch [1][20/201]\tlr: 5.000e-03, eta: 0:02:35, time: 0.281, data_time: 0.019, memory: 1709, loss: 0.3508\n", + "2021-10-21 04:04:24,552 - mmcls - INFO - Epoch [1][30/201]\tlr: 5.000e-03, eta: 0:02:15, time: 0.280, data_time: 0.020, memory: 1709, loss: 0.3955\n", + "2021-10-21 04:04:27,371 - mmcls - INFO - Epoch [1][40/201]\tlr: 5.000e-03, eta: 0:02:04, time: 0.282, data_time: 0.021, memory: 1709, loss: 0.2485\n", + "2021-10-21 04:04:30,202 - mmcls - INFO - Epoch [1][50/201]\tlr: 5.000e-03, eta: 0:01:56, time: 0.283, data_time: 0.021, memory: 1709, loss: 0.4196\n", + "2021-10-21 04:04:33,021 - mmcls - INFO - Epoch [1][60/201]\tlr: 5.000e-03, eta: 0:01:50, time: 0.282, data_time: 0.023, memory: 1709, loss: 0.4994\n", + "2021-10-21 04:04:35,800 - mmcls - INFO - Epoch [1][70/201]\tlr: 5.000e-03, eta: 0:01:45, time: 0.278, data_time: 0.020, memory: 1709, loss: 0.4372\n", + "2021-10-21 04:04:38,595 - mmcls - INFO - Epoch [1][80/201]\tlr: 5.000e-03, eta: 0:01:40, time: 0.280, data_time: 0.019, memory: 1709, loss: 0.3179\n", + "2021-10-21 04:04:41,351 - mmcls - INFO - Epoch [1][90/201]\tlr: 5.000e-03, eta: 0:01:36, time: 0.276, data_time: 0.018, memory: 1709, loss: 0.3175\n", + "2021-10-21 04:04:44,157 - mmcls - INFO - Epoch [1][100/201]\tlr: 5.000e-03, eta: 0:01:32, time: 0.280, data_time: 0.021, memory: 1709, loss: 0.3412\n", + "2021-10-21 04:04:46,974 - mmcls - INFO - Epoch [1][110/201]\tlr: 5.000e-03, eta: 0:01:28, time: 0.282, data_time: 0.019, memory: 1709, loss: 0.2985\n", + "2021-10-21 04:04:49,767 - mmcls - INFO - Epoch [1][120/201]\tlr: 5.000e-03, eta: 0:01:25, time: 0.280, data_time: 0.021, memory: 1709, loss: 0.2778\n", + "2021-10-21 04:04:52,553 - mmcls - INFO - Epoch [1][130/201]\tlr: 5.000e-03, eta: 0:01:21, time: 0.278, data_time: 0.021, memory: 1709, loss: 0.2229\n", + "2021-10-21 04:04:55,356 - mmcls - INFO - Epoch [1][140/201]\tlr: 5.000e-03, eta: 0:01:18, time: 0.280, data_time: 0.021, memory: 1709, loss: 0.2318\n", + "2021-10-21 04:04:58,177 - mmcls - INFO - Epoch [1][150/201]\tlr: 5.000e-03, eta: 0:01:14, time: 0.282, data_time: 0.022, memory: 1709, loss: 0.2333\n", + "2021-10-21 04:05:01,025 - mmcls - INFO - Epoch [1][160/201]\tlr: 5.000e-03, eta: 0:01:11, time: 0.285, data_time: 0.020, memory: 1709, loss: 0.2783\n", + "2021-10-21 04:05:03,833 - mmcls - INFO - Epoch [1][170/201]\tlr: 5.000e-03, eta: 0:01:08, time: 0.281, data_time: 0.022, memory: 1709, loss: 0.2132\n", + "2021-10-21 04:05:06,648 - mmcls - INFO - Epoch [1][180/201]\tlr: 5.000e-03, eta: 0:01:05, time: 0.281, data_time: 0.019, memory: 1709, loss: 0.2096\n", + "2021-10-21 04:05:09,472 - mmcls - INFO - Epoch [1][190/201]\tlr: 5.000e-03, eta: 0:01:02, time: 0.282, data_time: 0.020, memory: 1709, loss: 0.1729\n", + "2021-10-21 04:05:12,229 - mmcls - INFO - Epoch [1][200/201]\tlr: 5.000e-03, eta: 0:00:59, time: 0.275, data_time: 0.018, memory: 1709, loss: 0.1969\n", + "2021-10-21 04:05:12,275 - mmcls - INFO - Saving checkpoint at 1 epochs\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[>>>>>>>>>>>>>>>>>>>>>>>>>>] 1601/1601, 104.1 task/s, elapsed: 15s, ETA: 0s" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2021-10-21 04:05:27,767 - mmcls - INFO - Epoch(val) [1][51]\taccuracy_top-1: 95.6277\n", + "2021-10-21 04:05:32,987 - mmcls - INFO - Epoch [2][10/201]\tlr: 5.000e-04, eta: 0:00:57, time: 0.505, data_time: 0.238, memory: 1709, loss: 0.1764\n", + "2021-10-21 04:05:35,779 - mmcls - INFO - Epoch [2][20/201]\tlr: 5.000e-04, eta: 0:00:54, time: 0.278, data_time: 0.020, memory: 1709, loss: 0.1514\n", + "2021-10-21 04:05:38,537 - mmcls - INFO - Epoch [2][30/201]\tlr: 5.000e-04, eta: 0:00:51, time: 0.276, data_time: 0.020, memory: 1709, loss: 0.1395\n", + "2021-10-21 04:05:41,283 - mmcls - INFO - Epoch [2][40/201]\tlr: 5.000e-04, eta: 0:00:48, time: 0.275, data_time: 0.020, memory: 1709, loss: 0.1508\n", + "2021-10-21 04:05:44,017 - mmcls - INFO - Epoch [2][50/201]\tlr: 5.000e-04, eta: 0:00:44, time: 0.274, data_time: 0.021, memory: 1709, loss: 0.1771\n", + "2021-10-21 04:05:46,800 - mmcls - INFO - Epoch [2][60/201]\tlr: 5.000e-04, eta: 0:00:41, time: 0.278, data_time: 0.020, memory: 1709, loss: 0.1438\n", + "2021-10-21 04:05:49,570 - mmcls - INFO - Epoch [2][70/201]\tlr: 5.000e-04, eta: 0:00:38, time: 0.277, data_time: 0.020, memory: 1709, loss: 0.1321\n", + "2021-10-21 04:05:52,314 - mmcls - INFO - Epoch [2][80/201]\tlr: 5.000e-04, eta: 0:00:35, time: 0.275, data_time: 0.021, memory: 1709, loss: 0.1629\n", + "2021-10-21 04:05:55,052 - mmcls - INFO - Epoch [2][90/201]\tlr: 5.000e-04, eta: 0:00:32, time: 0.273, data_time: 0.021, memory: 1709, loss: 0.1574\n", + "2021-10-21 04:05:57,791 - mmcls - INFO - Epoch [2][100/201]\tlr: 5.000e-04, eta: 0:00:29, time: 0.274, data_time: 0.019, memory: 1709, loss: 0.1220\n", + "2021-10-21 04:06:00,534 - mmcls - INFO - Epoch [2][110/201]\tlr: 5.000e-04, eta: 0:00:26, time: 0.274, data_time: 0.021, memory: 1709, loss: 0.2550\n", + "2021-10-21 04:06:03,295 - mmcls - INFO - Epoch [2][120/201]\tlr: 5.000e-04, eta: 0:00:23, time: 0.276, data_time: 0.019, memory: 1709, loss: 0.1528\n", + "2021-10-21 04:06:06,048 - mmcls - INFO - Epoch [2][130/201]\tlr: 5.000e-04, eta: 0:00:20, time: 0.275, data_time: 0.022, memory: 1709, loss: 0.1223\n", + "2021-10-21 04:06:08,811 - mmcls - INFO - Epoch [2][140/201]\tlr: 5.000e-04, eta: 0:00:17, time: 0.276, data_time: 0.021, memory: 1709, loss: 0.1734\n", + "2021-10-21 04:06:11,576 - mmcls - INFO - Epoch [2][150/201]\tlr: 5.000e-04, eta: 0:00:14, time: 0.277, data_time: 0.020, memory: 1709, loss: 0.1527\n", + "2021-10-21 04:06:14,330 - mmcls - INFO - Epoch [2][160/201]\tlr: 5.000e-04, eta: 0:00:11, time: 0.276, data_time: 0.020, memory: 1709, loss: 0.1910\n", + "2021-10-21 04:06:17,106 - mmcls - INFO - Epoch [2][170/201]\tlr: 5.000e-04, eta: 0:00:09, time: 0.277, data_time: 0.019, memory: 1709, loss: 0.1922\n", + "2021-10-21 04:06:19,855 - mmcls - INFO - Epoch [2][180/201]\tlr: 5.000e-04, eta: 0:00:06, time: 0.274, data_time: 0.023, memory: 1709, loss: 0.1760\n", + "2021-10-21 04:06:22,638 - mmcls - INFO - Epoch [2][190/201]\tlr: 5.000e-04, eta: 0:00:03, time: 0.278, data_time: 0.019, memory: 1709, loss: 0.1739\n", + "2021-10-21 04:06:25,367 - mmcls - INFO - Epoch [2][200/201]\tlr: 5.000e-04, eta: 0:00:00, time: 0.272, data_time: 0.020, memory: 1709, loss: 0.1654\n", + "2021-10-21 04:06:25,410 - mmcls - INFO - Saving checkpoint at 2 epochs\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[>>>>>>>>>>>>>>>>>>>>>>>>>>] 1601/1601, 105.5 task/s, elapsed: 15s, ETA: 0s" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2021-10-21 04:06:40,694 - mmcls - INFO - Epoch(val) [2][51]\taccuracy_top-1: 97.5016\n" + ] + } + ], + "source": [ + "import time\n", + "import mmcv\n", + "import os.path as osp\n", + "\n", + "from mmcls.datasets import build_dataset\n", + "from mmcls.models import build_classifier\n", + "from mmcls.apis import train_model\n", + "\n", + "# Create the work directory\n", + "mmcv.mkdir_or_exist(osp.abspath(cfg.work_dir))\n", + "# Build the classifier\n", + "model = build_classifier(cfg.model)\n", + "model.init_weights()\n", + "# Build the dataset\n", + "datasets = [build_dataset(cfg.data.train)]\n", + "# Add `CLASSES` attributes to help visualization\n", + "model.CLASSES = datasets[0].CLASSES\n", + "# Start fine-tuning\n", + "train_model(\n", + " model,\n", + " datasets,\n", + " cfg,\n", + " distributed=False,\n", + " validate=True,\n", + " timestamp=time.strftime('%Y%m%d_%H%M%S', time.localtime()),\n", + " meta=dict())" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 304 + }, + "id": "HsoGBZA3miui", + "outputId": "eb2e09f5-55ce-4165-b754-3b75dbc829ab" + }, + "outputs": [ + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "%matplotlib inline\n", + "# Validate the fine-tuned model\n", + "\n", + "img = mmcv.imread('data/cats_dogs_dataset/training_set/training_set/cats/cat.1.jpg')\n", + "\n", + "model.cfg = cfg\n", + "result = inference_model(model, img)\n", + "\n", + "show_result_pyplot(model, img, result)" + ] + } + ], + "metadata": { + "accelerator": "GPU", + "colab": { + "collapsed_sections": [], + "name": "MMClassification_python.ipynb", + "provenance": [], + "toc_visible": true + }, + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.8.11" + }, + "widgets": { + "application/vnd.jupyter.widget-state+json": { + "31475aa888da4c8d844ba99a0b3397f5": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "ProgressStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "ProgressStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "bar_color": null, + "description_width": "" + } + }, + "520112917e0f4844995d418c5041d23a": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "863d2a8cc4074f2e890ba6aea7c54384": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "DescriptionStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "8a8ab7c27e404459951cffe7a32b8faa": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "DescriptionStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "9f3f6b72b4d14e2a96b9185331c8081b": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_be55ab36267d4dcab1d83dfaa8540270", + "placeholder": "​", + "style": "IPY_MODEL_863d2a8cc4074f2e890ba6aea7c54384", + "value": "100%" + } + }, + "a275bef3584b49ab9b680b528420d461": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "FloatProgressModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "FloatProgressModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "ProgressView", + "bar_style": "success", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_e310c50e610248dd897fbbf5dd09dd7a", + "max": 14206911, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_31475aa888da4c8d844ba99a0b3397f5", + "value": 14206911 + } + }, + "badf240bbb7d442fbd214e837edbffe2": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HBoxModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_9f3f6b72b4d14e2a96b9185331c8081b", + "IPY_MODEL_a275bef3584b49ab9b680b528420d461", + "IPY_MODEL_c4b2c6914a05497b8d2b691bd6dda6da" + ], + "layout": "IPY_MODEL_520112917e0f4844995d418c5041d23a" + } + }, + "be55ab36267d4dcab1d83dfaa8540270": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "c4b2c6914a05497b8d2b691bd6dda6da": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_e1a3dce90c1a4804a9ef0c687a9c0703", + "placeholder": "​", + "style": "IPY_MODEL_8a8ab7c27e404459951cffe7a32b8faa", + "value": " 13.5M/13.5M [00:01<00:00, 9.60MB/s]" + } + }, + "e1a3dce90c1a4804a9ef0c687a9c0703": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "e310c50e610248dd897fbbf5dd09dd7a": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + } + } + } + }, + "nbformat": 4, + "nbformat_minor": 0 +} diff --git a/openmmlab_test/mmclassification-0.24.1/docs/en/tutorials/MMClassification_tools.ipynb b/openmmlab_test/mmclassification-0.24.1/docs/en/tutorials/MMClassification_tools.ipynb new file mode 100644 index 00000000..ee87e719 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/docs/en/tutorials/MMClassification_tools.ipynb @@ -0,0 +1,1249 @@ +{ + "nbformat": 4, + "nbformat_minor": 0, + "metadata": { + "accelerator": "GPU", + "colab": { + "name": "MMClassification_tools.ipynb", + "provenance": [], + "collapsed_sections": [], + "toc_visible": true + }, + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.8.8" + } + }, + "cells": [ + { + "cell_type": "markdown", + "metadata": { + "id": "XjQxmm04iTx4", + "tags": [] + }, + "source": [ + "\"Open" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "4z0JDgisPRr-" + }, + "source": [ + "# MMClassification tools tutorial on Colab\n", + "\n", + "In this tutorial, we will introduce the following content:\n", + "\n", + "* How to install MMCls\n", + "* Prepare data\n", + "* Prepare the config file\n", + "* Train and test model with shell command" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "inm7Ciy5PXrU" + }, + "source": [ + "## Install MMClassification\n", + "\n", + "Before using MMClassification, we need to prepare the environment with the following steps:\n", + "\n", + "1. Install Python, CUDA, C/C++ compiler and git\n", + "2. Install PyTorch (CUDA version)\n", + "3. Install mmcv\n", + "4. Clone mmcls source code from GitHub and install it\n", + "\n", + "Because this tutorial is on Google Colab, and the basic environment has been completed, we can skip the first two steps." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "TDOxbcDvPbNk" + }, + "source": [ + "### Check environment" + ] + }, + { + "cell_type": "code", + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "c6MbAw10iUJI", + "outputId": "8d3d6b53-c69b-4425-ce0c-bfb8d31ab971" + }, + "source": [ + "%cd /content" + ], + "execution_count": null, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "/content\n" + ] + } + ] + }, + { + "cell_type": "code", + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "4IyFL3MaiYRu", + "outputId": "c46dc718-27de-418b-da17-9d5a717e8424" + }, + "source": [ + "!pwd" + ], + "execution_count": null, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "/content\n" + ] + } + ] + }, + { + "cell_type": "code", + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "DMw7QwvpiiUO", + "outputId": "0d852285-07c4-48d3-e537-4a51dea04d10" + }, + "source": [ + "# Check nvcc version\n", + "!nvcc -V" + ], + "execution_count": null, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "nvcc: NVIDIA (R) Cuda compiler driver\n", + "Copyright (c) 2005-2020 NVIDIA Corporation\n", + "Built on Mon_Oct_12_20:09:46_PDT_2020\n", + "Cuda compilation tools, release 11.1, V11.1.105\n", + "Build cuda_11.1.TC455_06.29190527_0\n" + ] + } + ] + }, + { + "cell_type": "code", + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "4VIBU7Fain4D", + "outputId": "fb34a7b6-8eda-4180-e706-1bf67d1a6fd4" + }, + "source": [ + "# Check GCC version\n", + "!gcc --version" + ], + "execution_count": null, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "gcc (Ubuntu 7.5.0-3ubuntu1~18.04) 7.5.0\n", + "Copyright (C) 2017 Free Software Foundation, Inc.\n", + "This is free software; see the source for copying conditions. There is NO\n", + "warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n", + "\n" + ] + } + ] + }, + { + "cell_type": "code", + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "24lDLCqFisZ9", + "outputId": "304ad2f7-a9bb-4441-d25b-09b5516ccd74" + }, + "source": [ + "# Check PyTorch installation\n", + "import torch, torchvision\n", + "print(torch.__version__)\n", + "print(torch.cuda.is_available())" + ], + "execution_count": null, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "1.9.0+cu111\n", + "True\n" + ] + } + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "R2aZNLUwizBs" + }, + "source": [ + "### Install MMCV\n", + "\n", + "MMCV is the basic package of all OpenMMLab packages. We have pre-built wheels on Linux, so we can download and install them directly.\n", + "\n", + "Please pay attention to PyTorch and CUDA versions to match the wheel.\n", + "\n", + "In the above steps, we have checked the version of PyTorch and CUDA, and they are 1.9.0 and 11.1 respectively, so we need to choose the corresponding wheel.\n", + "\n", + "In addition, we can also install the full version of mmcv (mmcv-full). It includes full features and various CUDA ops out of the box, but needs a longer time to build." + ] + }, + { + "cell_type": "code", + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "nla40LrLi7oo", + "outputId": "a17d50d6-05b7-45d6-c3fb-6a2507415cf5" + }, + "source": [ + "# Install mmcv\n", + "!pip install mmcv -f https://download.openmmlab.com/mmcv/dist/cu111/torch1.9.0/index.html\n", + "# !pip install mmcv-full -f https://download.openmmlab.com/mmcv/dist/cu111/torch1.9.0/index.html" + ], + "execution_count": null, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Looking in links: https://download.openmmlab.com/mmcv/dist/cu111/torch1.9.0/index.html\n", + "Collecting mmcv\n", + " Downloading mmcv-1.3.15.tar.gz (352 kB)\n", + "\u001b[K |████████████████████████████████| 352 kB 12.8 MB/s \n", + "\u001b[?25hCollecting addict\n", + " Downloading addict-2.4.0-py3-none-any.whl (3.8 kB)\n", + "Requirement already satisfied: numpy in /usr/local/lib/python3.7/dist-packages (from mmcv) (1.19.5)\n", + "Requirement already satisfied: packaging in /usr/local/lib/python3.7/dist-packages (from mmcv) (21.0)\n", + "Requirement already satisfied: Pillow in /usr/local/lib/python3.7/dist-packages (from mmcv) (7.1.2)\n", + "Requirement already satisfied: pyyaml in /usr/local/lib/python3.7/dist-packages (from mmcv) (3.13)\n", + "Collecting yapf\n", + " Downloading yapf-0.31.0-py2.py3-none-any.whl (185 kB)\n", + "\u001b[K |████████████████████████████████| 185 kB 49.3 MB/s \n", + "\u001b[?25hRequirement already satisfied: pyparsing>=2.0.2 in /usr/local/lib/python3.7/dist-packages (from packaging->mmcv) (2.4.7)\n", + "Building wheels for collected packages: mmcv\n", + " Building wheel for mmcv (setup.py) ... \u001b[?25l\u001b[?25hdone\n", + " Created wheel for mmcv: filename=mmcv-1.3.15-py2.py3-none-any.whl size=509835 sha256=13b8c5d70c29029916f661f2dc9b773b74a9ea4e0758491a7b5c15c798efaa61\n", + " Stored in directory: /root/.cache/pip/wheels/b2/f4/4e/8f6d2dd2bef6b7eb8c89aa0e5d61acd7bff60aaf3d4d4b29b0\n", + "Successfully built mmcv\n", + "Installing collected packages: yapf, addict, mmcv\n", + "Successfully installed addict-2.4.0 mmcv-1.3.15 yapf-0.31.0\n" + ] + } + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "GDTUrYvXjlRb" + }, + "source": [ + "### Clone and install MMClassification\n", + "\n", + "Next, we clone the latest mmcls repository from GitHub and install it." + ] + }, + { + "cell_type": "code", + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "Bwme6tWHjl5s", + "outputId": "7e2d54c8-b134-405a-b014-194da1708776" + }, + "source": [ + "# Clone mmcls repository\n", + "!git clone https://github.com/open-mmlab/mmclassification.git\n", + "%cd mmclassification/\n", + "\n", + "# Install MMClassification from source\n", + "!pip install -e . " + ], + "execution_count": null, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Cloning into 'mmclassification'...\n", + "remote: Enumerating objects: 4152, done.\u001b[K\n", + "remote: Counting objects: 100% (994/994), done.\u001b[K\n", + "remote: Compressing objects: 100% (579/579), done.\u001b[K\n", + "remote: Total 4152 (delta 476), reused 761 (delta 398), pack-reused 3158\u001b[K\n", + "Receiving objects: 100% (4152/4152), 8.21 MiB | 19.02 MiB/s, done.\n", + "Resolving deltas: 100% (2518/2518), done.\n", + "/content/mmclassification\n", + "Obtaining file:///content/mmclassification\n", + "Requirement already satisfied: matplotlib in /usr/local/lib/python3.7/dist-packages (from mmcls==0.16.0) (3.2.2)\n", + "Requirement already satisfied: numpy in /usr/local/lib/python3.7/dist-packages (from mmcls==0.16.0) (1.19.5)\n", + "Requirement already satisfied: packaging in /usr/local/lib/python3.7/dist-packages (from mmcls==0.16.0) (21.0)\n", + "Requirement already satisfied: cycler>=0.10 in /usr/local/lib/python3.7/dist-packages (from matplotlib->mmcls==0.16.0) (0.10.0)\n", + "Requirement already satisfied: kiwisolver>=1.0.1 in /usr/local/lib/python3.7/dist-packages (from matplotlib->mmcls==0.16.0) (1.3.2)\n", + "Requirement already satisfied: pyparsing!=2.0.4,!=2.1.2,!=2.1.6,>=2.0.1 in /usr/local/lib/python3.7/dist-packages (from matplotlib->mmcls==0.16.0) (2.4.7)\n", + "Requirement already satisfied: python-dateutil>=2.1 in /usr/local/lib/python3.7/dist-packages (from matplotlib->mmcls==0.16.0) (2.8.2)\n", + "Requirement already satisfied: six in /usr/local/lib/python3.7/dist-packages (from cycler>=0.10->matplotlib->mmcls==0.16.0) (1.15.0)\n", + "Installing collected packages: mmcls\n", + " Running setup.py develop for mmcls\n", + "Successfully installed mmcls-0.16.0\n" + ] + } + ] + }, + { + "cell_type": "code", + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "hFg_oSG4j3zB", + "outputId": "1cc74bac-f918-4f0e-bf56-9f13447dfce1" + }, + "source": [ + "# Check MMClassification installation\n", + "import mmcls\n", + "print(mmcls.__version__)" + ], + "execution_count": null, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "0.16.0\n" + ] + } + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "HCOHRp3iV5Xk" + }, + "source": [ + "## Prepare data" + ] + }, + { + "cell_type": "code", + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "XHCHnKb_Qd3P", + "outputId": "35496010-ee57-4e72-af00-2af55dc80f47" + }, + "source": [ + "# Download the dataset (cats & dogs dataset)\n", + "!wget https://www.dropbox.com/s/wml49yrtdo53mie/cats_dogs_dataset_reorg.zip?dl=0 -O cats_dogs_dataset.zip\n", + "!mkdir -p data\n", + "!unzip -q cats_dogs_dataset.zip -d ./data/" + ], + "execution_count": null, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "--2021-10-21 02:47:54-- https://www.dropbox.com/s/wml49yrtdo53mie/cats_dogs_dataset_reorg.zip?dl=0\n", + "Resolving www.dropbox.com (www.dropbox.com)... 162.125.67.18, 2620:100:6020:18::a27d:4012\n", + "Connecting to www.dropbox.com (www.dropbox.com)|162.125.67.18|:443... connected.\n", + "HTTP request sent, awaiting response... 301 Moved Permanently\n", + "Location: /s/raw/wml49yrtdo53mie/cats_dogs_dataset_reorg.zip [following]\n", + "--2021-10-21 02:47:54-- https://www.dropbox.com/s/raw/wml49yrtdo53mie/cats_dogs_dataset_reorg.zip\n", + "Reusing existing connection to www.dropbox.com:443.\n", + "HTTP request sent, awaiting response... 302 Found\n", + "Location: https://uc88da1070f63f9a78ee48b59098.dl.dropboxusercontent.com/cd/0/inline/BYb26ayxWasysNPC1wSer1N9YqdOShCMIBzSIQ5NKaIoKQQ47lxZ3y7DkjKNLrYiSHkA_KgTE47_9jUHaHW79JqDtcSNEAO3unPfo8bPwsxaQUHqo97L_RjsSBhWg4HZStWRbLIJUl5WUOtpETbSQtvD/file# [following]\n", + "--2021-10-21 02:47:54-- https://uc88da1070f63f9a78ee48b59098.dl.dropboxusercontent.com/cd/0/inline/BYb26ayxWasysNPC1wSer1N9YqdOShCMIBzSIQ5NKaIoKQQ47lxZ3y7DkjKNLrYiSHkA_KgTE47_9jUHaHW79JqDtcSNEAO3unPfo8bPwsxaQUHqo97L_RjsSBhWg4HZStWRbLIJUl5WUOtpETbSQtvD/file\n", + "Resolving uc88da1070f63f9a78ee48b59098.dl.dropboxusercontent.com (uc88da1070f63f9a78ee48b59098.dl.dropboxusercontent.com)... 162.125.67.15, 2620:100:6020:15::a27d:400f\n", + "Connecting to uc88da1070f63f9a78ee48b59098.dl.dropboxusercontent.com (uc88da1070f63f9a78ee48b59098.dl.dropboxusercontent.com)|162.125.67.15|:443... connected.\n", + "HTTP request sent, awaiting response... 302 Found\n", + "Location: /cd/0/inline2/BYbEOCLrcXNg9qXvYXbyZZ0cgv3fSQ1vs-iqDCz24_84Fgz_2Z5SkserjAUpmYgty-eQkchAlzxQPbgzayZnie5yCipe42WVTChJJiIQ6m5x7GxgWJOn6_5QP3eRbFuYyrc1yV61BKlYuCJDHH0eyNaN8paR6bjevwMJ7Alip-gvf3c9JfjJmMgZrzcpknENyaI62FSgxFkX-Kc-FS41RYQadnMfUmhZCfMrFDSzTcmRprDiC9hQ-zJkcW_kbjI0whA1ZLQ-OG9-8Qf7jn8qd4g_tQLneL8X44qOUX4hRs2LE23g4n0jz8DeNt8KZ48WhGs8_20rBIgHH0dut3OjHF5DZMI8dVyHFAiJGyxOknZ5aCfImtz6MGgHDwbiipkICxk/file [following]\n", + "--2021-10-21 02:47:55-- https://uc88da1070f63f9a78ee48b59098.dl.dropboxusercontent.com/cd/0/inline2/BYbEOCLrcXNg9qXvYXbyZZ0cgv3fSQ1vs-iqDCz24_84Fgz_2Z5SkserjAUpmYgty-eQkchAlzxQPbgzayZnie5yCipe42WVTChJJiIQ6m5x7GxgWJOn6_5QP3eRbFuYyrc1yV61BKlYuCJDHH0eyNaN8paR6bjevwMJ7Alip-gvf3c9JfjJmMgZrzcpknENyaI62FSgxFkX-Kc-FS41RYQadnMfUmhZCfMrFDSzTcmRprDiC9hQ-zJkcW_kbjI0whA1ZLQ-OG9-8Qf7jn8qd4g_tQLneL8X44qOUX4hRs2LE23g4n0jz8DeNt8KZ48WhGs8_20rBIgHH0dut3OjHF5DZMI8dVyHFAiJGyxOknZ5aCfImtz6MGgHDwbiipkICxk/file\n", + "Reusing existing connection to uc88da1070f63f9a78ee48b59098.dl.dropboxusercontent.com:443.\n", + "HTTP request sent, awaiting response... 200 OK\n", + "Length: 228802825 (218M) [application/zip]\n", + "Saving to: ‘cats_dogs_dataset.zip’\n", + "\n", + "cats_dogs_dataset.z 100%[===================>] 218.20M 16.9MB/s in 13s \n", + "\n", + "2021-10-21 02:48:08 (16.9 MB/s) - ‘cats_dogs_dataset.zip’ saved [228802825/228802825]\n", + "\n" + ] + } + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "e4t2P2aTQokX" + }, + "source": [ + "**After downloading and extraction,** we get \"Cats and Dogs Dataset\" and the file structure is as below:\n", + "```\n", + "data/cats_dogs_dataset\n", + "├── classes.txt\n", + "├── test.txt\n", + "├── val.txt\n", + "├── training_set\n", + "│ ├── training_set\n", + "│ │ ├── cats\n", + "│ │ │ ├── cat.1.jpg\n", + "│ │ │ ├── cat.2.jpg\n", + "│ │ │ ├── ...\n", + "│ │ ├── dogs\n", + "│ │ │ ├── dog.2.jpg\n", + "│ │ │ ├── dog.3.jpg\n", + "│ │ │ ├── ...\n", + "├── val_set\n", + "│ ├── val_set\n", + "│ │ ├── cats\n", + "│ │ │ ├── cat.3.jpg\n", + "│ │ │ ├── cat.5.jpg\n", + "│ │ │ ├── ...\n", + "│ │ ├── dogs\n", + "│ │ │ ├── dog.1.jpg\n", + "│ │ │ ├── dog.6.jpg\n", + "│ │ │ ├── ...\n", + "├── test_set\n", + "│ ├── test_set\n", + "│ │ ├── cats\n", + "│ │ │ ├── cat.4001.jpg\n", + "│ │ │ ├── cat.4002.jpg\n", + "│ │ │ ├── ...\n", + "│ │ ├── dogs\n", + "│ │ │ ├── dog.4001.jpg\n", + "│ │ │ ├── dog.4002.jpg\n", + "│ │ │ ├── ...\n", + "```\n", + "\n", + "You can use shell command `tree data/cats_dogs_dataset` to check the structure." + ] + }, + { + "cell_type": "code", + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 297 + }, + "id": "46tyHTdtQy_Z", + "outputId": "6124a89e-03eb-4917-a0bf-df6a391eb280" + }, + "source": [ + "# Pick an image and visualize it\n", + "from PIL import Image\n", + "Image.open('data/cats_dogs_dataset/training_set/training_set/cats/cat.1.jpg')" + ], + "execution_count": null, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "image/png": "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\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "execution_count": 10 + } + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "My5Z6p7pQ3UC" + }, + "source": [ + "### Support new dataset\n", + "\n", + "We have two methods to support a new dataset in MMClassification.\n", + "\n", + "The simplest method is to re-organize the new dataset as the format of a dataset supported officially (like ImageNet). And the other method is to create a new dataset class, and more details are in [the docs](https://mmclassification.readthedocs.io/en/latest/tutorials/new_dataset.html#an-example-of-customized-dataset).\n", + "\n", + "In this tutorial, for convenience, we have re-organized the cats & dogs dataset as the format of ImageNet." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "P335gKt9Q5U-" + }, + "source": [ + "Besides image files, it also includes the following files:\n", + "\n", + "1. A class list file, and every line is a class.\n", + " ```\n", + " cats\n", + " dogs\n", + " ```\n", + "2. Training / Validation / Test annotation files. And every line includes an file path and the corresponding label.\n", + "\n", + " ```\n", + " ...\n", + " cats/cat.3769.jpg 0\n", + " cats/cat.882.jpg 0\n", + " ...\n", + " dogs/dog.3881.jpg 1\n", + " dogs/dog.3377.jpg 1\n", + " ...\n", + " ```" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "BafQ7ijBQ8N_" + }, + "source": [ + "## Train and test model with shell commands\n", + "\n", + "You can use shell commands provided by MMClassification to do the following task:\n", + "\n", + "1. Train a model\n", + "2. Fine-tune a model\n", + "3. Test a model\n", + "4. Inference with a model\n", + "\n", + "The procedure to train and fine-tune a model is almost the same. And we have introduced how to do these tasks with Python API. In the following, we will introduce how to do them with shell commands. More details are in [the docs](https://mmclassification.readthedocs.io/en/latest/getting_started.html)." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "Aj5cGMihURrZ" + }, + "source": [ + "### Fine-tune a model\n", + "\n", + "The steps to fine-tune a model are as below:\n", + "\n", + "1. Prepare the custom dataset.\n", + "2. Create a new config file of the task.\n", + "3. Start training task by shell commands.\n", + "\n", + "We have finished the first step, and then we will introduce the next two steps.\n" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "WBBV3aG79ZH5" + }, + "source": [ + "#### Create a new config file\n", + "\n", + "To reuse the common parts of different config files, we support inheriting multiple base config files. For example, to fine-tune a MobileNetV2 model, the new config file can create the model's basic structure by inheriting `configs/_base_/models/mobilenet_v2_1x.py`.\n", + "\n", + "According to the common practice, we usually split whole configs into four parts: model, dataset, learning rate schedule, and runtime. Configs of each part are saved into one file in the `configs/_base_` folder. \n", + "\n", + "And then, when creating a new config file, we can select some parts to inherit and only override some different configs.\n", + "\n", + "The head of the final config file should look like:\n", + "\n", + "```python\n", + "_base_ = [\n", + " '../_base_/models/mobilenet_v2_1x.py',\n", + " '../_base_/schedules/imagenet_bs256_epochstep.py',\n", + " '../_base_/default_runtime.py'\n", + "]\n", + "```\n", + "\n", + "Here, because the dataset configs are almost brand new, we don't need to inherit any dataset config file.\n", + "\n", + "Of course, you can also create an entire config file without inheritance, like `configs/mnist/lenet5.py`." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "_UV3oBhLRG8B" + }, + "source": [ + "After that, we only need to set the part of configs we want to modify, because the inherited configs will be merged to the final configs." + ] + }, + { + "cell_type": "code", + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "8QfM4qBeWIQh", + "outputId": "a826f0cf-2633-4a9a-e49b-4be7eca5e3a0" + }, + "source": [ + "%%writefile configs/mobilenet_v2/mobilenet_v2_1x_cats_dogs.py\n", + "_base_ = [\n", + " '../_base_/models/mobilenet_v2_1x.py',\n", + " '../_base_/schedules/imagenet_bs256_epochstep.py',\n", + " '../_base_/default_runtime.py'\n", + "]\n", + "\n", + "# ---- Model configs ----\n", + "# Here we use init_cfg to load pre-trained model.\n", + "# In this way, only the weights of backbone will be loaded.\n", + "# And modify the num_classes to match our dataset.\n", + "\n", + "model = dict(\n", + " backbone=dict(\n", + " init_cfg = dict(\n", + " type='Pretrained', \n", + " checkpoint='https://download.openmmlab.com/mmclassification/v0/mobilenet_v2/mobilenet_v2_batch256_imagenet_20200708-3b2dc3af.pth', \n", + " prefix='backbone')\n", + " ),\n", + " head=dict(\n", + " num_classes=2,\n", + " topk = (1, )\n", + " ))\n", + "\n", + "# ---- Dataset configs ----\n", + "# We re-organized the dataset as ImageNet format.\n", + "dataset_type = 'ImageNet'\n", + "img_norm_cfg = dict(\n", + " mean=[124.508, 116.050, 106.438],\n", + " std=[58.577, 57.310, 57.437],\n", + " to_rgb=True)\n", + "train_pipeline = [\n", + " dict(type='LoadImageFromFile'),\n", + " dict(type='RandomResizedCrop', size=224, backend='pillow'),\n", + " dict(type='RandomFlip', flip_prob=0.5, direction='horizontal'),\n", + " dict(type='Normalize', **img_norm_cfg),\n", + " dict(type='ImageToTensor', keys=['img']),\n", + " dict(type='ToTensor', keys=['gt_label']),\n", + " dict(type='Collect', keys=['img', 'gt_label'])\n", + "]\n", + "test_pipeline = [\n", + " dict(type='LoadImageFromFile'),\n", + " dict(type='Resize', size=(256, -1), backend='pillow'),\n", + " dict(type='CenterCrop', crop_size=224),\n", + " dict(type='Normalize', **img_norm_cfg),\n", + " dict(type='ImageToTensor', keys=['img']),\n", + " dict(type='Collect', keys=['img'])\n", + "]\n", + "data = dict(\n", + " # Specify the batch size and number of workers in each GPU.\n", + " # Please configure it according to your hardware.\n", + " samples_per_gpu=32,\n", + " workers_per_gpu=2,\n", + " # Specify the training dataset type and path\n", + " train=dict(\n", + " type=dataset_type,\n", + " data_prefix='data/cats_dogs_dataset/training_set/training_set',\n", + " classes='data/cats_dogs_dataset/classes.txt',\n", + " pipeline=train_pipeline),\n", + " # Specify the validation dataset type and path\n", + " val=dict(\n", + " type=dataset_type,\n", + " data_prefix='data/cats_dogs_dataset/val_set/val_set',\n", + " ann_file='data/cats_dogs_dataset/val.txt',\n", + " classes='data/cats_dogs_dataset/classes.txt',\n", + " pipeline=test_pipeline),\n", + " # Specify the test dataset type and path\n", + " test=dict(\n", + " type=dataset_type,\n", + " data_prefix='data/cats_dogs_dataset/test_set/test_set',\n", + " ann_file='data/cats_dogs_dataset/test.txt',\n", + " classes='data/cats_dogs_dataset/classes.txt',\n", + " pipeline=test_pipeline))\n", + "\n", + "# Specify evaluation metric\n", + "evaluation = dict(metric='accuracy', metric_options={'topk': (1, )})\n", + "\n", + "# ---- Schedule configs ----\n", + "# Usually in fine-tuning, we need a smaller learning rate and less training epochs.\n", + "# Specify the learning rate\n", + "optimizer = dict(type='SGD', lr=0.005, momentum=0.9, weight_decay=0.0001)\n", + "optimizer_config = dict(grad_clip=None)\n", + "# Set the learning rate scheduler\n", + "lr_config = dict(policy='step', step=1, gamma=0.1)\n", + "runner = dict(type='EpochBasedRunner', max_epochs=2)\n", + "\n", + "# ---- Runtime configs ----\n", + "# Output training log every 10 iterations.\n", + "log_config = dict(interval=10)" + ], + "execution_count": null, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Writing configs/mobilenet_v2/mobilenet_v2_1x_cats_dogs.py\n" + ] + } + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "chLX7bL3RP2F" + }, + "source": [ + "#### Use shell command to start fine-tuning\n", + "\n", + "We use `tools/train.py` to fine-tune a model:\n", + "\n", + "```shell\n", + "python tools/train.py ${CONFIG_FILE} [optional arguments]\n", + "```\n", + "\n", + "And if you want to specify another folder to save log files and checkpoints, use the argument `--work_dir ${YOUR_WORK_DIR}`.\n", + "\n", + "If you want to ensure reproducibility, use the argument `--seed ${SEED}` to set a random seed. And the argument `--deterministic` can enable the deterministic option in cuDNN to further ensure reproducibility, but it may reduce the training speed.\n", + "\n", + "Here we use the `MobileNetV2` model and cats & dogs dataset as an example:\n" + ] + }, + { + "cell_type": "code", + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "gbFGR4SBRUYN", + "outputId": "3412752c-433f-43c5-82a9-3495d1cd797a" + }, + "source": [ + "!python tools/train.py \\\n", + " configs/mobilenet_v2/mobilenet_v2_1x_cats_dogs.py \\\n", + " --work-dir work_dirs/mobilenet_v2_1x_cats_dogs \\\n", + " --seed 0 \\\n", + " --deterministic" + ], + "execution_count": null, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "/usr/local/lib/python3.7/dist-packages/mmcv/cnn/bricks/transformer.py:28: UserWarning: Fail to import ``MultiScaleDeformableAttention`` from ``mmcv.ops.multi_scale_deform_attn``, You should install ``mmcv-full`` if you need this module. \n", + " warnings.warn('Fail to import ``MultiScaleDeformableAttention`` from '\n", + "/usr/lib/python3.7/importlib/_bootstrap.py:219: RuntimeWarning: numpy.ufunc size changed, may indicate binary incompatibility. Expected 192 from C header, got 216 from PyObject\n", + " return f(*args, **kwds)\n", + "/usr/lib/python3.7/importlib/_bootstrap.py:219: RuntimeWarning: numpy.ufunc size changed, may indicate binary incompatibility. Expected 192 from C header, got 216 from PyObject\n", + " return f(*args, **kwds)\n", + "/usr/lib/python3.7/importlib/_bootstrap.py:219: RuntimeWarning: numpy.ufunc size changed, may indicate binary incompatibility. Expected 192 from C header, got 216 from PyObject\n", + " return f(*args, **kwds)\n", + "/usr/local/lib/python3.7/dist-packages/yaml/constructor.py:126: DeprecationWarning: Using or importing the ABCs from 'collections' instead of from 'collections.abc' is deprecated since Python 3.3,and in 3.9 it will stop working\n", + " if not isinstance(key, collections.Hashable):\n", + "2021-10-21 02:48:20,030 - mmcls - INFO - Environment info:\n", + "------------------------------------------------------------\n", + "sys.platform: linux\n", + "Python: 3.7.12 (default, Sep 10 2021, 00:21:48) [GCC 7.5.0]\n", + "CUDA available: True\n", + "GPU 0: Tesla K80\n", + "CUDA_HOME: /usr/local/cuda\n", + "NVCC: Build cuda_11.1.TC455_06.29190527_0\n", + "GCC: gcc (Ubuntu 7.5.0-3ubuntu1~18.04) 7.5.0\n", + "PyTorch: 1.9.0+cu111\n", + "PyTorch compiling details: PyTorch built with:\n", + " - GCC 7.3\n", + " - C++ Version: 201402\n", + " - Intel(R) Math Kernel Library Version 2020.0.0 Product Build 20191122 for Intel(R) 64 architecture applications\n", + " - Intel(R) MKL-DNN v2.1.2 (Git Hash 98be7e8afa711dc9b66c8ff3504129cb82013cdb)\n", + " - OpenMP 201511 (a.k.a. OpenMP 4.5)\n", + " - NNPACK is enabled\n", + " - CPU capability usage: AVX2\n", + " - CUDA Runtime 11.1\n", + " - NVCC architecture flags: -gencode;arch=compute_37,code=sm_37;-gencode;arch=compute_50,code=sm_50;-gencode;arch=compute_60,code=sm_60;-gencode;arch=compute_70,code=sm_70;-gencode;arch=compute_75,code=sm_75;-gencode;arch=compute_80,code=sm_80;-gencode;arch=compute_86,code=sm_86\n", + " - CuDNN 8.0.5\n", + " - Magma 2.5.2\n", + " - Build settings: BLAS_INFO=mkl, BUILD_TYPE=Release, CUDA_VERSION=11.1, CUDNN_VERSION=8.0.5, CXX_COMPILER=/opt/rh/devtoolset-7/root/usr/bin/c++, CXX_FLAGS= -Wno-deprecated -fvisibility-inlines-hidden -DUSE_PTHREADPOOL -fopenmp -DNDEBUG -DUSE_KINETO -DUSE_FBGEMM -DUSE_QNNPACK -DUSE_PYTORCH_QNNPACK -DUSE_XNNPACK -DSYMBOLICATE_MOBILE_DEBUG_HANDLE -O2 -fPIC -Wno-narrowing -Wall -Wextra -Werror=return-type -Wno-missing-field-initializers -Wno-type-limits -Wno-array-bounds -Wno-unknown-pragmas -Wno-sign-compare -Wno-unused-parameter -Wno-unused-variable -Wno-unused-function -Wno-unused-result -Wno-unused-local-typedefs -Wno-strict-overflow -Wno-strict-aliasing -Wno-error=deprecated-declarations -Wno-stringop-overflow -Wno-psabi -Wno-error=pedantic -Wno-error=redundant-decls -Wno-error=old-style-cast -fdiagnostics-color=always -faligned-new -Wno-unused-but-set-variable -Wno-maybe-uninitialized -fno-math-errno -fno-trapping-math -Werror=format -Wno-stringop-overflow, LAPACK_INFO=mkl, PERF_WITH_AVX=1, PERF_WITH_AVX2=1, PERF_WITH_AVX512=1, TORCH_VERSION=1.9.0, USE_CUDA=ON, USE_CUDNN=ON, USE_EXCEPTION_PTR=1, USE_GFLAGS=OFF, USE_GLOG=OFF, USE_MKL=ON, USE_MKLDNN=ON, USE_MPI=OFF, USE_NCCL=ON, USE_NNPACK=ON, USE_OPENMP=ON, \n", + "\n", + "TorchVision: 0.10.0+cu111\n", + "OpenCV: 4.1.2\n", + "MMCV: 1.3.15\n", + "MMCV Compiler: n/a\n", + "MMCV CUDA Compiler: n/a\n", + "MMClassification: 0.16.0+77a3834\n", + "------------------------------------------------------------\n", + "\n", + "2021-10-21 02:48:20,030 - mmcls - INFO - Distributed training: False\n", + "2021-10-21 02:48:20,688 - mmcls - INFO - Config:\n", + "model = dict(\n", + " type='ImageClassifier',\n", + " backbone=dict(\n", + " type='MobileNetV2',\n", + " widen_factor=1.0,\n", + " init_cfg=dict(\n", + " type='Pretrained',\n", + " checkpoint=\n", + " 'https://download.openmmlab.com/mmclassification/v0/mobilenet_v2/mobilenet_v2_batch256_imagenet_20200708-3b2dc3af.pth',\n", + " prefix='backbone')),\n", + " neck=dict(type='GlobalAveragePooling'),\n", + " head=dict(\n", + " type='LinearClsHead',\n", + " num_classes=2,\n", + " in_channels=1280,\n", + " loss=dict(type='CrossEntropyLoss', loss_weight=1.0),\n", + " topk=(1, )))\n", + "optimizer = dict(type='SGD', lr=0.005, momentum=0.9, weight_decay=0.0001)\n", + "optimizer_config = dict(grad_clip=None)\n", + "lr_config = dict(policy='step', gamma=0.1, step=1)\n", + "runner = dict(type='EpochBasedRunner', max_epochs=2)\n", + "checkpoint_config = dict(interval=1)\n", + "log_config = dict(interval=10, hooks=[dict(type='TextLoggerHook')])\n", + "dist_params = dict(backend='nccl')\n", + "log_level = 'INFO'\n", + "load_from = None\n", + "resume_from = None\n", + "workflow = [('train', 1)]\n", + "dataset_type = 'ImageNet'\n", + "img_norm_cfg = dict(\n", + " mean=[124.508, 116.05, 106.438], std=[58.577, 57.31, 57.437], to_rgb=True)\n", + "train_pipeline = [\n", + " dict(type='LoadImageFromFile'),\n", + " dict(type='RandomResizedCrop', size=224, backend='pillow'),\n", + " dict(type='RandomFlip', flip_prob=0.5, direction='horizontal'),\n", + " dict(\n", + " type='Normalize',\n", + " mean=[124.508, 116.05, 106.438],\n", + " std=[58.577, 57.31, 57.437],\n", + " to_rgb=True),\n", + " dict(type='ImageToTensor', keys=['img']),\n", + " dict(type='ToTensor', keys=['gt_label']),\n", + " dict(type='Collect', keys=['img', 'gt_label'])\n", + "]\n", + "test_pipeline = [\n", + " dict(type='LoadImageFromFile'),\n", + " dict(type='Resize', size=(256, -1), backend='pillow'),\n", + " dict(type='CenterCrop', crop_size=224),\n", + " dict(\n", + " type='Normalize',\n", + " mean=[124.508, 116.05, 106.438],\n", + " std=[58.577, 57.31, 57.437],\n", + " to_rgb=True),\n", + " dict(type='ImageToTensor', keys=['img']),\n", + " dict(type='Collect', keys=['img'])\n", + "]\n", + "data = dict(\n", + " samples_per_gpu=32,\n", + " workers_per_gpu=2,\n", + " train=dict(\n", + " type='ImageNet',\n", + " data_prefix='data/cats_dogs_dataset/training_set/training_set',\n", + " classes='data/cats_dogs_dataset/classes.txt',\n", + " pipeline=[\n", + " dict(type='LoadImageFromFile'),\n", + " dict(type='RandomResizedCrop', size=224, backend='pillow'),\n", + " dict(type='RandomFlip', flip_prob=0.5, direction='horizontal'),\n", + " dict(\n", + " type='Normalize',\n", + " mean=[124.508, 116.05, 106.438],\n", + " std=[58.577, 57.31, 57.437],\n", + " to_rgb=True),\n", + " dict(type='ImageToTensor', keys=['img']),\n", + " dict(type='ToTensor', keys=['gt_label']),\n", + " dict(type='Collect', keys=['img', 'gt_label'])\n", + " ]),\n", + " val=dict(\n", + " type='ImageNet',\n", + " data_prefix='data/cats_dogs_dataset/val_set/val_set',\n", + " ann_file='data/cats_dogs_dataset/val.txt',\n", + " classes='data/cats_dogs_dataset/classes.txt',\n", + " pipeline=[\n", + " dict(type='LoadImageFromFile'),\n", + " dict(type='Resize', size=(256, -1), backend='pillow'),\n", + " dict(type='CenterCrop', crop_size=224),\n", + " dict(\n", + " type='Normalize',\n", + " mean=[124.508, 116.05, 106.438],\n", + " std=[58.577, 57.31, 57.437],\n", + " to_rgb=True),\n", + " dict(type='ImageToTensor', keys=['img']),\n", + " dict(type='Collect', keys=['img'])\n", + " ]),\n", + " test=dict(\n", + " type='ImageNet',\n", + " data_prefix='data/cats_dogs_dataset/test_set/test_set',\n", + " ann_file='data/cats_dogs_dataset/test.txt',\n", + " classes='data/cats_dogs_dataset/classes.txt',\n", + " pipeline=[\n", + " dict(type='LoadImageFromFile'),\n", + " dict(type='Resize', size=(256, -1), backend='pillow'),\n", + " dict(type='CenterCrop', crop_size=224),\n", + " dict(\n", + " type='Normalize',\n", + " mean=[124.508, 116.05, 106.438],\n", + " std=[58.577, 57.31, 57.437],\n", + " to_rgb=True),\n", + " dict(type='ImageToTensor', keys=['img']),\n", + " dict(type='Collect', keys=['img'])\n", + " ]))\n", + "evaluation = dict(metric='accuracy', metric_options=dict(topk=(1, )))\n", + "work_dir = 'work_dirs/mobilenet_v2_1x_cats_dogs'\n", + "gpu_ids = range(0, 1)\n", + "\n", + "2021-10-21 02:48:20,689 - mmcls - INFO - Set random seed to 0, deterministic: True\n", + "2021-10-21 02:48:20,854 - mmcls - INFO - initialize MobileNetV2 with init_cfg {'type': 'Pretrained', 'checkpoint': 'https://download.openmmlab.com/mmclassification/v0/mobilenet_v2/mobilenet_v2_batch256_imagenet_20200708-3b2dc3af.pth', 'prefix': 'backbone'}\n", + "2021-10-21 02:48:20,855 - mmcv - INFO - load backbone in model from: https://download.openmmlab.com/mmclassification/v0/mobilenet_v2/mobilenet_v2_batch256_imagenet_20200708-3b2dc3af.pth\n", + "Use load_from_http loader\n", + "Downloading: \"https://download.openmmlab.com/mmclassification/v0/mobilenet_v2/mobilenet_v2_batch256_imagenet_20200708-3b2dc3af.pth\" to /root/.cache/torch/hub/checkpoints/mobilenet_v2_batch256_imagenet_20200708-3b2dc3af.pth\n", + "100% 13.5M/13.5M [00:01<00:00, 9.54MB/s]\n", + "2021-10-21 02:48:23,564 - mmcls - INFO - initialize LinearClsHead with init_cfg {'type': 'Normal', 'layer': 'Linear', 'std': 0.01}\n", + "2021-10-21 02:48:38,767 - mmcls - INFO - Start running, host: root@992cc7e7be60, work_dir: /content/mmclassification/work_dirs/mobilenet_v2_1x_cats_dogs\n", + "2021-10-21 02:48:38,767 - mmcls - INFO - Hooks will be executed in the following order:\n", + "before_run:\n", + "(VERY_HIGH ) StepLrUpdaterHook \n", + "(NORMAL ) CheckpointHook \n", + "(LOW ) EvalHook \n", + "(VERY_LOW ) TextLoggerHook \n", + " -------------------- \n", + "before_train_epoch:\n", + "(VERY_HIGH ) StepLrUpdaterHook \n", + "(LOW ) IterTimerHook \n", + "(LOW ) EvalHook \n", + "(VERY_LOW ) TextLoggerHook \n", + " -------------------- \n", + "before_train_iter:\n", + "(VERY_HIGH ) StepLrUpdaterHook \n", + "(LOW ) IterTimerHook \n", + "(LOW ) EvalHook \n", + " -------------------- \n", + "after_train_iter:\n", + "(ABOVE_NORMAL) OptimizerHook \n", + "(NORMAL ) CheckpointHook \n", + "(LOW ) IterTimerHook \n", + "(LOW ) EvalHook \n", + "(VERY_LOW ) TextLoggerHook \n", + " -------------------- \n", + "after_train_epoch:\n", + "(NORMAL ) CheckpointHook \n", + "(LOW ) EvalHook \n", + "(VERY_LOW ) TextLoggerHook \n", + " -------------------- \n", + "before_val_epoch:\n", + "(LOW ) IterTimerHook \n", + "(VERY_LOW ) TextLoggerHook \n", + " -------------------- \n", + "before_val_iter:\n", + "(LOW ) IterTimerHook \n", + " -------------------- \n", + "after_val_iter:\n", + "(LOW ) IterTimerHook \n", + " -------------------- \n", + "after_val_epoch:\n", + "(VERY_LOW ) TextLoggerHook \n", + " -------------------- \n", + "2021-10-21 02:48:38,768 - mmcls - INFO - workflow: [('train', 1)], max: 2 epochs\n", + "2021-10-21 02:48:44,261 - mmcls - INFO - Epoch [1][10/201]\tlr: 5.000e-03, eta: 0:03:29, time: 0.533, data_time: 0.257, memory: 1709, loss: 0.3917\n", + "2021-10-21 02:48:46,950 - mmcls - INFO - Epoch [1][20/201]\tlr: 5.000e-03, eta: 0:02:33, time: 0.269, data_time: 0.019, memory: 1709, loss: 0.3508\n", + "2021-10-21 02:48:49,618 - mmcls - INFO - Epoch [1][30/201]\tlr: 5.000e-03, eta: 0:02:12, time: 0.266, data_time: 0.021, memory: 1709, loss: 0.3955\n", + "2021-10-21 02:48:52,271 - mmcls - INFO - Epoch [1][40/201]\tlr: 5.000e-03, eta: 0:02:00, time: 0.266, data_time: 0.018, memory: 1709, loss: 0.2485\n", + "2021-10-21 02:48:54,984 - mmcls - INFO - Epoch [1][50/201]\tlr: 5.000e-03, eta: 0:01:53, time: 0.272, data_time: 0.019, memory: 1709, loss: 0.4196\n", + "2021-10-21 02:48:57,661 - mmcls - INFO - Epoch [1][60/201]\tlr: 5.000e-03, eta: 0:01:46, time: 0.266, data_time: 0.019, memory: 1709, loss: 0.4994\n", + "2021-10-21 02:49:00,341 - mmcls - INFO - Epoch [1][70/201]\tlr: 5.000e-03, eta: 0:01:41, time: 0.268, data_time: 0.018, memory: 1709, loss: 0.4372\n", + "2021-10-21 02:49:03,035 - mmcls - INFO - Epoch [1][80/201]\tlr: 5.000e-03, eta: 0:01:37, time: 0.270, data_time: 0.019, memory: 1709, loss: 0.3179\n", + "2021-10-21 02:49:05,731 - mmcls - INFO - Epoch [1][90/201]\tlr: 5.000e-03, eta: 0:01:32, time: 0.269, data_time: 0.020, memory: 1709, loss: 0.3175\n", + "2021-10-21 02:49:08,404 - mmcls - INFO - Epoch [1][100/201]\tlr: 5.000e-03, eta: 0:01:29, time: 0.268, data_time: 0.019, memory: 1709, loss: 0.3412\n", + "2021-10-21 02:49:11,106 - mmcls - INFO - Epoch [1][110/201]\tlr: 5.000e-03, eta: 0:01:25, time: 0.270, data_time: 0.016, memory: 1709, loss: 0.2985\n", + "2021-10-21 02:49:13,776 - mmcls - INFO - Epoch [1][120/201]\tlr: 5.000e-03, eta: 0:01:21, time: 0.267, data_time: 0.018, memory: 1709, loss: 0.2778\n", + "2021-10-21 02:49:16,478 - mmcls - INFO - Epoch [1][130/201]\tlr: 5.000e-03, eta: 0:01:18, time: 0.270, data_time: 0.021, memory: 1709, loss: 0.2229\n", + "2021-10-21 02:49:19,130 - mmcls - INFO - Epoch [1][140/201]\tlr: 5.000e-03, eta: 0:01:15, time: 0.266, data_time: 0.018, memory: 1709, loss: 0.2318\n", + "2021-10-21 02:49:21,812 - mmcls - INFO - Epoch [1][150/201]\tlr: 5.000e-03, eta: 0:01:12, time: 0.268, data_time: 0.019, memory: 1709, loss: 0.2333\n", + "2021-10-21 02:49:24,514 - mmcls - INFO - Epoch [1][160/201]\tlr: 5.000e-03, eta: 0:01:08, time: 0.270, data_time: 0.017, memory: 1709, loss: 0.2783\n", + "2021-10-21 02:49:27,184 - mmcls - INFO - Epoch [1][170/201]\tlr: 5.000e-03, eta: 0:01:05, time: 0.267, data_time: 0.017, memory: 1709, loss: 0.2132\n", + "2021-10-21 02:49:29,875 - mmcls - INFO - Epoch [1][180/201]\tlr: 5.000e-03, eta: 0:01:02, time: 0.269, data_time: 0.021, memory: 1709, loss: 0.2096\n", + "2021-10-21 02:49:32,546 - mmcls - INFO - Epoch [1][190/201]\tlr: 5.000e-03, eta: 0:00:59, time: 0.267, data_time: 0.019, memory: 1709, loss: 0.1729\n", + "2021-10-21 02:49:35,200 - mmcls - INFO - Epoch [1][200/201]\tlr: 5.000e-03, eta: 0:00:56, time: 0.265, data_time: 0.017, memory: 1709, loss: 0.1969\n", + "2021-10-21 02:49:35,247 - mmcls - INFO - Saving checkpoint at 1 epochs\n", + "[ ] 0/1601, elapsed: 0s, ETA:[W pthreadpool-cpp.cc:90] Warning: Leaking Caffe2 thread-pool after fork. (function pthreadpool)\n", + "[W pthreadpool-cpp.cc:90] Warning: Leaking Caffe2 thread-pool after fork. (function pthreadpool)\n", + "[>>] 1601/1601, 173.2 task/s, elapsed: 9s, ETA: 0s2021-10-21 02:49:44,587 - mmcls - INFO - Epoch(val) [1][51]\taccuracy_top-1: 95.6277\n", + "2021-10-21 02:49:49,625 - mmcls - INFO - Epoch [2][10/201]\tlr: 5.000e-04, eta: 0:00:55, time: 0.488, data_time: 0.237, memory: 1709, loss: 0.1764\n", + "2021-10-21 02:49:52,305 - mmcls - INFO - Epoch [2][20/201]\tlr: 5.000e-04, eta: 0:00:52, time: 0.270, data_time: 0.018, memory: 1709, loss: 0.1514\n", + "2021-10-21 02:49:55,060 - mmcls - INFO - Epoch [2][30/201]\tlr: 5.000e-04, eta: 0:00:49, time: 0.275, data_time: 0.016, memory: 1709, loss: 0.1395\n", + "2021-10-21 02:49:57,696 - mmcls - INFO - Epoch [2][40/201]\tlr: 5.000e-04, eta: 0:00:46, time: 0.262, data_time: 0.016, memory: 1709, loss: 0.1508\n", + "2021-10-21 02:50:00,430 - mmcls - INFO - Epoch [2][50/201]\tlr: 5.000e-04, eta: 0:00:43, time: 0.273, data_time: 0.018, memory: 1709, loss: 0.1771\n", + "2021-10-21 02:50:03,099 - mmcls - INFO - Epoch [2][60/201]\tlr: 5.000e-04, eta: 0:00:40, time: 0.268, data_time: 0.020, memory: 1709, loss: 0.1438\n", + "2021-10-21 02:50:05,745 - mmcls - INFO - Epoch [2][70/201]\tlr: 5.000e-04, eta: 0:00:37, time: 0.264, data_time: 0.018, memory: 1709, loss: 0.1321\n", + "2021-10-21 02:50:08,385 - mmcls - INFO - Epoch [2][80/201]\tlr: 5.000e-04, eta: 0:00:34, time: 0.264, data_time: 0.020, memory: 1709, loss: 0.1629\n", + "2021-10-21 02:50:11,025 - mmcls - INFO - Epoch [2][90/201]\tlr: 5.000e-04, eta: 0:00:31, time: 0.264, data_time: 0.019, memory: 1709, loss: 0.1574\n", + "2021-10-21 02:50:13,685 - mmcls - INFO - Epoch [2][100/201]\tlr: 5.000e-04, eta: 0:00:28, time: 0.266, data_time: 0.019, memory: 1709, loss: 0.1220\n", + "2021-10-21 02:50:16,329 - mmcls - INFO - Epoch [2][110/201]\tlr: 5.000e-04, eta: 0:00:25, time: 0.264, data_time: 0.021, memory: 1709, loss: 0.2550\n", + "2021-10-21 02:50:19,007 - mmcls - INFO - Epoch [2][120/201]\tlr: 5.000e-04, eta: 0:00:22, time: 0.268, data_time: 0.020, memory: 1709, loss: 0.1528\n", + "2021-10-21 02:50:21,750 - mmcls - INFO - Epoch [2][130/201]\tlr: 5.000e-04, eta: 0:00:20, time: 0.275, data_time: 0.021, memory: 1709, loss: 0.1223\n", + "2021-10-21 02:50:24,392 - mmcls - INFO - Epoch [2][140/201]\tlr: 5.000e-04, eta: 0:00:17, time: 0.264, data_time: 0.017, memory: 1709, loss: 0.1734\n", + "2021-10-21 02:50:27,049 - mmcls - INFO - Epoch [2][150/201]\tlr: 5.000e-04, eta: 0:00:14, time: 0.265, data_time: 0.020, memory: 1709, loss: 0.1527\n", + "2021-10-21 02:50:29,681 - mmcls - INFO - Epoch [2][160/201]\tlr: 5.000e-04, eta: 0:00:11, time: 0.265, data_time: 0.019, memory: 1709, loss: 0.1910\n", + "2021-10-21 02:50:32,318 - mmcls - INFO - Epoch [2][170/201]\tlr: 5.000e-04, eta: 0:00:08, time: 0.262, data_time: 0.017, memory: 1709, loss: 0.1922\n", + "2021-10-21 02:50:34,955 - mmcls - INFO - Epoch [2][180/201]\tlr: 5.000e-04, eta: 0:00:05, time: 0.264, data_time: 0.021, memory: 1709, loss: 0.1760\n", + "2021-10-21 02:50:37,681 - mmcls - INFO - Epoch [2][190/201]\tlr: 5.000e-04, eta: 0:00:03, time: 0.273, data_time: 0.019, memory: 1709, loss: 0.1739\n", + "2021-10-21 02:50:40,408 - mmcls - INFO - Epoch [2][200/201]\tlr: 5.000e-04, eta: 0:00:00, time: 0.272, data_time: 0.018, memory: 1709, loss: 0.1654\n", + "2021-10-21 02:50:40,443 - mmcls - INFO - Saving checkpoint at 2 epochs\n", + "[>>] 1601/1601, 170.9 task/s, elapsed: 9s, ETA: 0s2021-10-21 02:50:49,905 - mmcls - INFO - Epoch(val) [2][51]\taccuracy_top-1: 97.5016\n" + ] + } + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "m_ZSkwB5Rflb" + }, + "source": [ + "### Test a model\n", + "\n", + "We use `tools/test.py` to test a model:\n", + "\n", + "```\n", + "python tools/test.py ${CONFIG_FILE} ${CHECKPOINT_FILE} [optional arguments]\n", + "```\n", + "\n", + "Here are some optional arguments:\n", + "\n", + "- `--metrics`: The evaluation metrics. The available choices are defined in the dataset class. Usually, you can specify \"accuracy\" to metric a single-label classification task.\n", + "- `--metric-options`: The extra options passed to metrics. For example, by specifying \"topk=1\", the \"accuracy\" metric will calculate top-1 accuracy.\n", + "\n", + "More details are in the help docs of `tools/test.py`.\n", + "\n", + "Here we still use the `MobileNetV2` model we fine-tuned." + ] + }, + { + "cell_type": "code", + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "Zd4EM00QRtyc", + "outputId": "8788264f-83df-4419-9748-822c20538aa7" + }, + "source": [ + "!python tools/test.py configs/mobilenet_v2/mobilenet_v2_1x_cats_dogs.py work_dirs/mobilenet_v2_1x_cats_dogs/latest.pth --metrics accuracy --metric-options topk=1" + ], + "execution_count": null, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "/usr/local/lib/python3.7/dist-packages/mmcv/cnn/bricks/transformer.py:28: UserWarning: Fail to import ``MultiScaleDeformableAttention`` from ``mmcv.ops.multi_scale_deform_attn``, You should install ``mmcv-full`` if you need this module. \n", + " warnings.warn('Fail to import ``MultiScaleDeformableAttention`` from '\n", + "/usr/lib/python3.7/importlib/_bootstrap.py:219: RuntimeWarning: numpy.ufunc size changed, may indicate binary incompatibility. Expected 192 from C header, got 216 from PyObject\n", + " return f(*args, **kwds)\n", + "/usr/lib/python3.7/importlib/_bootstrap.py:219: RuntimeWarning: numpy.ufunc size changed, may indicate binary incompatibility. Expected 192 from C header, got 216 from PyObject\n", + " return f(*args, **kwds)\n", + "/usr/lib/python3.7/importlib/_bootstrap.py:219: RuntimeWarning: numpy.ufunc size changed, may indicate binary incompatibility. Expected 192 from C header, got 216 from PyObject\n", + " return f(*args, **kwds)\n", + "/usr/local/lib/python3.7/dist-packages/yaml/constructor.py:126: DeprecationWarning: Using or importing the ABCs from 'collections' instead of from 'collections.abc' is deprecated since Python 3.3,and in 3.9 it will stop working\n", + " if not isinstance(key, collections.Hashable):\n", + "Use load_from_local loader\n", + "[>>] 2023/2023, 168.4 task/s, elapsed: 12s, ETA: 0s\n", + "accuracy : 97.38\n" + ] + } + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "IwThQkjaRwF7" + }, + "source": [ + "### Inference with a model\n", + "\n", + "Sometimes we want to save the inference results on a dataset, just use the command below.\n", + "\n", + "```shell\n", + "python tools/test.py ${CONFIG_FILE} ${CHECKPOINT_FILE} [--out ${RESULT_FILE}]\n", + "```\n", + "\n", + "Arguments:\n", + "\n", + "- `--out`: The output filename. If not specified, the inference results won't be saved. It supports json, pkl and yml.\n", + "- `--out-items`: What items will be saved. You can choose some of \"class_scores\", \"pred_score\", \"pred_label\" and \"pred_class\", or use \"all\" to select all of them.\n", + "\n", + "These items mean:\n", + "- `class_scores`: The score of every class for each sample.\n", + "- `pred_score`: The score of predict class for each sample.\n", + "- `pred_label`: The label of predict class for each sample. It will read the label string of each class from the model, if the label strings are not saved, it will use ImageNet labels.\n", + "- `pred_class`: The id of predict class for each sample. It's a group of integers. \n", + "- `all`: Save all items above.\n", + "- `none`: Don't save any items above. Because the output file will save the metric besides inference results. If you want to save only metrics, you can use this option to reduce the output file size.\n" + ] + }, + { + "cell_type": "code", + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "6GVKloPHR0Fn", + "outputId": "4f4cd414-1be6-4e17-985f-6449b8a3d9e8" + }, + "source": [ + "!python tools/test.py configs/mobilenet_v2/mobilenet_v2_1x_cats_dogs.py work_dirs/mobilenet_v2_1x_cats_dogs/latest.pth --out results.json --out-items all" + ], + "execution_count": null, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "/usr/local/lib/python3.7/dist-packages/mmcv/cnn/bricks/transformer.py:28: UserWarning: Fail to import ``MultiScaleDeformableAttention`` from ``mmcv.ops.multi_scale_deform_attn``, You should install ``mmcv-full`` if you need this module. \n", + " warnings.warn('Fail to import ``MultiScaleDeformableAttention`` from '\n", + "/usr/lib/python3.7/importlib/_bootstrap.py:219: RuntimeWarning: numpy.ufunc size changed, may indicate binary incompatibility. Expected 192 from C header, got 216 from PyObject\n", + " return f(*args, **kwds)\n", + "/usr/lib/python3.7/importlib/_bootstrap.py:219: RuntimeWarning: numpy.ufunc size changed, may indicate binary incompatibility. Expected 192 from C header, got 216 from PyObject\n", + " return f(*args, **kwds)\n", + "/usr/lib/python3.7/importlib/_bootstrap.py:219: RuntimeWarning: numpy.ufunc size changed, may indicate binary incompatibility. Expected 192 from C header, got 216 from PyObject\n", + " return f(*args, **kwds)\n", + "/usr/local/lib/python3.7/dist-packages/yaml/constructor.py:126: DeprecationWarning: Using or importing the ABCs from 'collections' instead of from 'collections.abc' is deprecated since Python 3.3,and in 3.9 it will stop working\n", + " if not isinstance(key, collections.Hashable):\n", + "Use load_from_local loader\n", + "[>>] 2023/2023, 170.6 task/s, elapsed: 12s, ETA: 0s\n", + "dumping results to results.json\n" + ] + } + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "G0NJI1s6e3FD" + }, + "source": [ + "All inference results are saved in the output json file, and you can read it." + ] + }, + { + "cell_type": "code", + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 370 + }, + "id": "HJdJeLUafFhX", + "outputId": "7614d546-7c2f-4bfd-ce63-4c2a5228620f" + }, + "source": [ + "import json\n", + "\n", + "with open(\"./results.json\", 'r') as f:\n", + " results = json.load(f)\n", + "\n", + "# Show the inference result of the first image.\n", + "print('class_scores:', results['class_scores'][0])\n", + "print('pred_class:', results['pred_class'][0])\n", + "print('pred_label:', results['pred_label'][0])\n", + "print('pred_score:', results['pred_score'][0])\n", + "Image.open('data/cats_dogs_dataset/training_set/training_set/cats/cat.1.jpg')" + ], + "execution_count": null, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "class_scores: [1.0, 5.184615757547473e-13]\n", + "pred_class: cats\n", + "pred_label: 0\n", + "pred_score: 1.0\n" + ] + }, + { + "output_type": "execute_result", + "data": { + "image/png": "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\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "execution_count": 15 + } + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "1bEUwwzcVG8o" + }, + "source": [ + "You can also use the visualization API provided by MMClassification to show the inference result." + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "BcSNyvAWRx20", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 304 + }, + "outputId": "0d68077f-2ec8-4f3d-8aaa-18d4021ca77b" + }, + "source": [ + "from mmcls.core.visualization import imshow_infos\n", + "\n", + "filepath = 'data/cats_dogs_dataset/training_set/training_set/cats/cat.1.jpg'\n", + "\n", + "result = {\n", + " 'pred_class': results['pred_class'][0],\n", + " 'pred_label': results['pred_label'][0],\n", + " 'pred_score': results['pred_score'][0],\n", + "}\n", + "\n", + "img = imshow_infos(filepath, result)" + ], + "execution_count": null, + "outputs": [ + { + "output_type": "display_data", + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + } + } + ] + } + ] +} diff --git a/openmmlab_test/mmclassification-0.24.1/docs/en/tutorials/config.md b/openmmlab_test/mmclassification-0.24.1/docs/en/tutorials/config.md new file mode 100644 index 00000000..16e43ac2 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/docs/en/tutorials/config.md @@ -0,0 +1,417 @@ +# Tutorial 1: Learn about Configs + +MMClassification mainly uses python files as configs. The design of our configuration file system integrates modularity and inheritance, facilitating users to conduct various experiments. All configuration files are placed in the `configs` folder, which mainly contains the primitive configuration folder of `_base_` and many algorithm folders such as `resnet`, `swin_transformer`, `vision_transformer`, etc. + +If you wish to inspect the config file, you may run `python tools/misc/print_config.py /PATH/TO/CONFIG` to see the complete config. + + + +- [Config File and Checkpoint Naming Convention](#config-file-and-checkpoint-naming-convention) +- [Config File Structure](#config-file-structure) +- [Inherit and Modify Config File](#inherit-and-modify-config-file) + - [Use intermediate variables in configs](#use-intermediate-variables-in-configs) + - [Ignore some fields in the base configs](#ignore-some-fields-in-the-base-configs) + - [Use some fields in the base configs](#use-some-fields-in-the-base-configs) +- [Modify config through script arguments](#modify-config-through-script-arguments) +- [Import user-defined modules](#import-user-defined-modules) +- [FAQ](#faq) + + + +## Config File and Checkpoint Naming Convention + +We follow the below convention to name config files. Contributors are advised to follow the same style. The config file names are divided into four parts: algorithm info, module information, training information and data information. Logically, different parts are concatenated by underscores `'_'`, and words in the same part are concatenated by dashes `'-'`. + +``` +{algorithm info}_{module info}_{training info}_{data info}.py +``` + +- `algorithm info`:algorithm information, model name and neural network architecture, such as resnet, etc.; +- `module info`: module information is used to represent some special neck, head and pretrain information; +- `training info`:Training information, some training schedule, including batch size, lr schedule, data augment and the like; +- `data info`:Data information, dataset name, input size and so on, such as imagenet, cifar, etc.; + +### Algorithm information + +The main algorithm name and the corresponding branch architecture information. E.g: + +- `resnet50` +- `mobilenet-v3-large` +- `vit-small-patch32` : `patch32` represents the size of the partition in `ViT` algorithm; +- `seresnext101-32x4d` : `SeResNet101` network structure, `32x4d` means that `groups` and `width_per_group` are 32 and 4 respectively in `Bottleneck`; + +### Module information + +Some special `neck`, `head` and `pretrain` information. In classification tasks, `pretrain` information is the most commonly used: + +- `in21k-pre` : pre-trained on ImageNet21k; +- `in21k-pre-3rd-party` : pre-trained on ImageNet21k and the checkpoint is converted from a third-party repository; + +### Training information + +Training schedule, including training type, `batch size`, `lr schedule`, data augment, special loss functions and so on: + +- format `{gpu x batch_per_gpu}`, such as `8xb32` + +Training type (mainly seen in the transformer network, such as the `ViT` algorithm, which is usually divided into two training type: pre-training and fine-tuning): + +- `ft` : configuration file for fine-tuning +- `pt` : configuration file for pretraining + +Training recipe. Usually, only the part that is different from the original paper will be marked. These methods will be arranged in the order `{pipeline aug}-{train aug}-{loss trick}-{scheduler}-{epochs}`. + +- `coslr-200e` : use cosine scheduler to train 200 epochs +- `autoaug-mixup-lbs-coslr-50e` : use `autoaug`, `mixup`, `label smooth`, `cosine scheduler` to train 50 epochs + +### Data information + +- `in1k` : `ImageNet1k` dataset, default to use the input image size of 224x224; +- `in21k` : `ImageNet21k` dataset, also called `ImageNet22k` dataset, default to use the input image size of 224x224; +- `in1k-384px` : Indicates that the input image size is 384x384; +- `cifar100` + +### Config File Name Example + +``` +repvgg-D2se_deploy_4xb64-autoaug-lbs-mixup-coslr-200e_in1k.py +``` + +- `repvgg-D2se`: Algorithm information + - `repvgg`: The main algorithm. + - `D2se`: The architecture. +- `deploy`: Module information, means the backbone is in the deploy state. +- `4xb64-autoaug-lbs-mixup-coslr-200e`: Training information. + - `4xb64`: Use 4 GPUs and the size of batches per GPU is 64. + - `autoaug`: Use `AutoAugment` in training pipeline. + - `lbs`: Use label smoothing loss. + - `mixup`: Use `mixup` training augment method. + - `coslr`: Use cosine learning rate scheduler. + - `200e`: Train the model for 200 epochs. +- `in1k`: Dataset information. The config is for `ImageNet1k` dataset and the input size is `224x224`. + +```{note} +Some configuration files currently do not follow this naming convention, and related files will be updated in the near future. +``` + +### Checkpoint Naming Convention + +The naming of the weight mainly includes the configuration file name, date and hash value. + +``` +{config_name}_{date}-{hash}.pth +``` + +## Config File Structure + +There are four kinds of basic component file in the `configs/_base_` folders, namely: + +- [models](https://github.com/open-mmlab/mmclassification/tree/master/configs/_base_/models) +- [datasets](https://github.com/open-mmlab/mmclassification/tree/master/configs/_base_/datasets) +- [schedules](https://github.com/open-mmlab/mmclassification/tree/master/configs/_base_/schedules) +- [runtime](https://github.com/open-mmlab/mmclassification/blob/master/configs/_base_/default_runtime.py) + +You can easily build your own training config file by inherit some base config files. And the configs that are composed by components from `_base_` are called _primitive_. + +For easy understanding, we use [ResNet50 primitive config](https://github.com/open-mmlab/mmclassification/blob/master/configs/resnet/resnet50_8xb32_in1k.py) as a example and comment the meaning of each line. For more detaile, please refer to the API documentation. + +```python +_base_ = [ + '../_base_/models/resnet50.py', # model + '../_base_/datasets/imagenet_bs32.py', # data + '../_base_/schedules/imagenet_bs256.py', # training schedule + '../_base_/default_runtime.py' # runtime setting +] +``` + +The four parts are explained separately below, and the above-mentioned ResNet50 primitive config are also used as an example. + +### model + +The parameter `"model"` is a python dictionary in the configuration file, which mainly includes information such as network structure and loss function: + +- `type` : Classifier name, MMCls supports `ImageClassifier`, refer to [API documentation](https://mmclassification.readthedocs.io/en/latest/api/models.html#classifier). +- `backbone` : Backbone configs, refer to [API documentation](https://mmclassification.readthedocs.io/en/latest/api/models.html#backbones) for available options. +- `neck` :Neck network name, MMCls supports `GlobalAveragePooling`, please refer to [API documentation](https://mmclassification.readthedocs.io/en/latest/api/models.html#necks). +- `head`: Head network name, MMCls supports single-label and multi-label classification head networks, available options refer to [API documentation](https://mmclassification.readthedocs.io/en/latest/api/models.html#heads). + - `loss`: Loss function type, supports `CrossEntropyLoss`, [`LabelSmoothLoss`](https://github.com/open-mmlab/mmclassification/blob/master/configs/_base_/models/resnet50_label_smooth.py) etc., For available options, refer to [API documentation](https://mmclassification.readthedocs.io/en/latest/api/models.html#losses). +- `train_cfg` :Training augment config, MMCls supports [`mixup`](https://github.com/open-mmlab/mmclassification/blob/master/configs/_base_/models/resnet50_mixup.py), [`cutmix`](https://github.com/open-mmlab/mmclassification/blob/master/configs/_base_/models/resnet50_cutmix.py) and other augments. + +```{note} +The 'type' in the configuration file is not a constructed parameter, but a class name. +``` + +```python +model = dict( + type='ImageClassifier', # Classifier name + backbone=dict( + type='ResNet', # Backbones name + depth=50, # depth of backbone, ResNet has options of 18, 34, 50, 101, 152. + num_stages=4, # number of stages,The feature maps generated by these states are used as the input for the subsequent neck and head. + out_indices=(3, ), # The output index of the output feature maps. + frozen_stages=-1, # the stage to be frozen, '-1' means not be forzen + style='pytorch'), # The style of backbone, 'pytorch' means that stride 2 layers are in 3x3 conv, 'caffe' means stride 2 layers are in 1x1 convs. + neck=dict(type='GlobalAveragePooling'), # neck network name + head=dict( + type='LinearClsHead', # linear classification head, + num_classes=1000, # The number of output categories, consistent with the number of categories in the dataset + in_channels=2048, # The number of input channels, consistent with the output channel of the neck + loss=dict(type='CrossEntropyLoss', loss_weight=1.0), # Loss function configuration information + topk=(1, 5), # Evaluation index, Top-k accuracy rate, here is the accuracy rate of top1 and top5 + )) +``` + +### data + +The parameter `"data"` is a python dictionary in the configuration file, which mainly includes information to construct dataloader: + +- `samples_per_gpu` : the BatchSize of each GPU when building the dataloader +- `workers_per_gpu` : the number of threads per GPU when building dataloader +- `train | val | test` : config to construct dataset + - `type`: Dataset name, MMCls supports `ImageNet`, `Cifar` etc., refer to [API documentation](https://mmclassification.readthedocs.io/en/latest/api/datasets.html) + - `data_prefix` : Dataset root directory + - `pipeline` : Data processing pipeline, refer to related tutorial [CUSTOM DATA PIPELINES](https://mmclassification.readthedocs.io/en/latest/tutorials/data_pipeline.html) + +The parameter `evaluation` is also a dictionary, which is the configuration information of `evaluation hook`, mainly including evaluation interval, evaluation index, etc.. + +```python +# dataset settings +dataset_type = 'ImageNet' # dataset name, +img_norm_cfg = dict( # Image normalization config to normalize the input images + mean=[123.675, 116.28, 103.53], # Mean values used to pre-training the pre-trained backbone models + std=[58.395, 57.12, 57.375], # Standard variance used to pre-training the pre-trained backbone models + to_rgb=True) # Whether to invert the color channel, rgb2bgr or bgr2rgb. +# train data pipeline +train_pipeline = [ + dict(type='LoadImageFromFile'), # First pipeline to load images from file path + dict(type='RandomResizedCrop', size=224), # RandomResizedCrop + dict(type='RandomFlip', flip_prob=0.5, direction='horizontal'), # Randomly flip the picture horizontally with a probability of 0.5 + dict(type='Normalize', **img_norm_cfg), # normalization + dict(type='ImageToTensor', keys=['img']), # convert image from numpy into torch.Tensor + dict(type='ToTensor', keys=['gt_label']), # convert gt_label into torch.Tensor + dict(type='Collect', keys=['img', 'gt_label']) # Pipeline that decides which keys in the data should be passed to the detector +] +# test data pipeline +test_pipeline = [ + dict(type='LoadImageFromFile'), + dict(type='Resize', size=(256, -1)), + dict(type='CenterCrop', crop_size=224), + dict(type='Normalize', **img_norm_cfg), + dict(type='ImageToTensor', keys=['img']), + dict(type='Collect', keys=['img']) # do not pass gt_label while testing +] +data = dict( + samples_per_gpu=32, # Batch size of a single GPU + workers_per_gpu=2, # Worker to pre-fetch data for each single GPU + train=dict( # Train dataset config + train=dict( # train data config + type=dataset_type, # dataset name + data_prefix='data/imagenet/train', # Dataset root, when ann_file does not exist, the category information is automatically obtained from the root folder + pipeline=train_pipeline), # train data pipeline + val=dict( # val data config + type=dataset_type, + data_prefix='data/imagenet/val', + ann_file='data/imagenet/meta/val.txt', # ann_file existes, the category information is obtained from file + pipeline=test_pipeline), + test=dict( # test data config + type=dataset_type, + data_prefix='data/imagenet/val', + ann_file='data/imagenet/meta/val.txt', + pipeline=test_pipeline)) +evaluation = dict( # The config to build the evaluation hook, refer to https://github.com/open-mmlab/mmdetection/blob/master/mmdet/core/evaluation/eval_hooks.py#L7 for more details. + interval=1, # Evaluation interval + metric='accuracy') # Metrics used during evaluation +``` + +### training schedule + +Mainly include optimizer settings, `optimizer hook` settings, learning rate schedule and `runner` settings: + +- `optimizer`: optimizer setting , support all optimizers in `pytorch`, refer to related [mmcv](https://mmcv.readthedocs.io/en/latest/_modules/mmcv/runner/optimizer/default_constructor.html#DefaultOptimizerConstructor) documentation. +- `optimizer_config`: `optimizer hook` configuration file, such as setting gradient limit, refer to related [mmcv](https://github.com/open-mmlab/mmcv/blob/master/mmcv/runner/hooks/optimizer.py#L8) code. +- `lr_config`: Learning rate scheduler, supports "CosineAnnealing", "Step", "Cyclic", etc. refer to related [mmcv](https://mmcv.readthedocs.io/en/latest/_modules/mmcv/runner/hooks/lr_updater.html#LrUpdaterHook) documentation for more options. +- `runner`: For `runner`, please refer to `mmcv` for [`runner`](https://mmcv.readthedocs.io/en/latest/understand_mmcv/runner.html) introduction document. + +```python +# he configuration file used to build the optimizer, support all optimizers in PyTorch. +optimizer = dict(type='SGD', # Optimizer type + lr=0.1, # Learning rate of optimizers, see detail usages of the parameters in the documentation of PyTorch + momentum=0.9, # Momentum + weight_decay=0.0001) # Weight decay of SGD +# Config used to build the optimizer hook, refer to https://github.com/open-mmlab/mmcv/blob/master/mmcv/runner/hooks/optimizer.py#L8 for implementation details. +optimizer_config = dict(grad_clip=None) # Most of the methods do not use gradient clip +# Learning rate scheduler config used to register LrUpdater hook +lr_config = dict(policy='step', # The policy of scheduler, also support CosineAnnealing, Cyclic, etc. Refer to details of supported LrUpdater from https://github.com/open-mmlab/mmcv/blob/master/mmcv/runner/hooks/lr_updater.py#L9. + step=[30, 60, 90]) # Steps to decay the learning rate +runner = dict(type='EpochBasedRunner', # Type of runner to use (i.e. IterBasedRunner or EpochBasedRunner) + max_epochs=100) # Runner that runs the workflow in total max_epochs. For IterBasedRunner use `max_iters` +``` + +### runtime setting + +This part mainly includes saving the checkpoint strategy, log configuration, training parameters, breakpoint weight path, working directory, etc.. + +```python +# Config to set the checkpoint hook, Refer to https://github.com/open-mmlab/mmcv/blob/master/mmcv/runner/hooks/checkpoint.py for implementation. +checkpoint_config = dict(interval=1) # The save interval is 1 +# config to register logger hook +log_config = dict( + interval=100, # Interval to print the log + hooks=[ + dict(type='TextLoggerHook'), # The Tensorboard logger is also supported + # dict(type='TensorboardLoggerHook') + ]) + +dist_params = dict(backend='nccl') # Parameters to setup distributed training, the port can also be set. +log_level = 'INFO' # The output level of the log. +resume_from = None # Resume checkpoints from a given path, the training will be resumed from the epoch when the checkpoint's is saved. +workflow = [('train', 1)] # Workflow for runner. [('train', 1)] means there is only one workflow and the workflow named 'train' is executed once. +work_dir = 'work_dir' # Directory to save the model checkpoints and logs for the current experiments. +``` + +## Inherit and Modify Config File + +For easy understanding, we recommend contributors to inherit from existing methods. + +For all configs under the same folder, it is recommended to have only **one** _primitive_ config. All other configs should inherit from the _primitive_ config. In this way, the maximum of inheritance level is 3. + +For example, if your config file is based on ResNet with some other modification, you can first inherit the basic ResNet structure, dataset and other training setting by specifying `_base_ ='./resnet50_8xb32_in1k.py'` (The path relative to your config file), and then modify the necessary parameters in the config file. A more specific example, now we want to use almost all configs in `configs/resnet/resnet50_8xb32_in1k.py`, but change the number of training epochs from 100 to 300, modify when to decay the learning rate, and modify the dataset path, you can create a new config file `configs/resnet/resnet50_8xb32-300e_in1k.py` with content as below: + +```python +_base_ = './resnet50_8xb32_in1k.py' + +runner = dict(max_epochs=300) +lr_config = dict(step=[150, 200, 250]) + +data = dict( + train=dict(data_prefix='mydata/imagenet/train'), + val=dict(data_prefix='mydata/imagenet/train', ), + test=dict(data_prefix='mydata/imagenet/train', ) +) +``` + +### Use intermediate variables in configs + +Some intermediate variables are used in the configuration file. The intermediate variables make the configuration file clearer and easier to modify. + +For example, `train_pipeline` / `test_pipeline` is the intermediate variable of the data pipeline. We first need to define `train_pipeline` / `test_pipeline`, and then pass them to `data`. If you want to modify the size of the input image during training and testing, you need to modify the intermediate variables of `train_pipeline` / `test_pipeline`. + +```python +img_norm_cfg = dict( + mean=[123.675, 116.28, 103.53], std=[58.395, 57.12, 57.375], to_rgb=True) +train_pipeline = [ + dict(type='LoadImageFromFile'), + dict(type='RandomResizedCrop', size=384, backend='pillow',), + dict(type='RandomFlip', flip_prob=0.5, direction='horizontal'), + dict(type='Normalize', **img_norm_cfg), + dict(type='ImageToTensor', keys=['img']), + dict(type='ToTensor', keys=['gt_label']), + dict(type='Collect', keys=['img', 'gt_label']) +] +test_pipeline = [ + dict(type='LoadImageFromFile'), + dict(type='Resize', size=384, backend='pillow'), + dict(type='Normalize', **img_norm_cfg), + dict(type='ImageToTensor', keys=['img']), + dict(type='Collect', keys=['img']) +] +data = dict( + train=dict(pipeline=train_pipeline), + val=dict(pipeline=test_pipeline), + test=dict(pipeline=test_pipeline)) +``` + +### Ignore some fields in the base configs + +Sometimes, you need to set `_delete_=True` to ignore some domain content in the basic configuration file. You can refer to [mmcv](https://mmcv.readthedocs.io/en/latest/understand_mmcv/config.html#inherit-from-base-config-with-ignored-fields) for more instructions. + +The following is an example. If you want to use cosine schedule in the above ResNet50 case, just using inheritance and directly modify it will report `get unexcepected keyword'step'` error, because the `'step'` field of the basic config in `lr_config` domain information is reserved, and you need to add `_delete_ =True` to ignore the content of `lr_config` related fields in the basic configuration file: + +```python +_base_ = '../../configs/resnet/resnet50_8xb32_in1k.py' + +lr_config = dict( + _delete_=True, + policy='CosineAnnealing', + min_lr=0, + warmup='linear', + by_epoch=True, + warmup_iters=5, + warmup_ratio=0.1 +) +``` + +### Use some fields in the base configs + +Sometimes, you may refer to some fields in the `_base_` config, so as to avoid duplication of definitions. You can refer to [mmcv](https://mmcv.readthedocs.io/en/latest/understand_mmcv/config.html#reference-variables-from-base) for some more instructions. + +The following is an example of using auto augment in the training data preprocessing pipeline, refer to [`configs/_base_/datasets/imagenet_bs64_autoaug.py`](https://github.com/open-mmlab/mmclassification/blob/master/configs/_base_/datasets/imagenet_bs64_autoaug.py). When defining `train_pipeline`, just add the definition file name of auto augment to `_base_`, and then use `{{_base_.auto_increasing_policies}}` to reference the variables: + +```python +_base_ = ['./pipelines/auto_aug.py'] + +# dataset settings +dataset_type = 'ImageNet' +img_norm_cfg = dict( + mean=[123.675, 116.28, 103.53], std=[58.395, 57.12, 57.375], to_rgb=True) +train_pipeline = [ + dict(type='LoadImageFromFile'), + dict(type='RandomResizedCrop', size=224), + dict(type='RandomFlip', flip_prob=0.5, direction='horizontal'), + dict(type='AutoAugment', policies={{_base_.auto_increasing_policies}}), + dict(type='Normalize', **img_norm_cfg), + dict(type='ImageToTensor', keys=['img']), + dict(type='ToTensor', keys=['gt_label']), + dict(type='Collect', keys=['img', 'gt_label']) +] +test_pipeline = [...] +data = dict( + samples_per_gpu=64, + workers_per_gpu=2, + train=dict(..., pipeline=train_pipeline), + val=dict(..., pipeline=test_pipeline)) +evaluation = dict(interval=1, metric='accuracy') +``` + +## Modify config through script arguments + +When users use the script "tools/train.py" or "tools/test.py" to submit tasks or use some other tools, they can directly modify the content of the configuration file used by specifying the `--cfg-options` parameter. + +- Update config keys of dict chains. + + The config options can be specified following the order of the dict keys in the original config. + For example, `--cfg-options model.backbone.norm_eval=False` changes the all BN modules in model backbones to `train` mode. + +- Update keys inside a list of configs. + + Some config dicts are composed as a list in your config. For example, the training pipeline `data.train.pipeline` is normally a list + e.g. `[dict(type='LoadImageFromFile'), dict(type='TopDownRandomFlip', flip_prob=0.5), ...]`. If you want to change `'flip_prob=0.5'` to `'flip_prob=0.0'` in the pipeline, + you may specify `--cfg-options data.train.pipeline.1.flip_prob=0.0`. + +- Update values of list/tuples. + + If the value to be updated is a list or a tuple. For example, the config file normally sets `workflow=[('train', 1)]`. If you want to + change this key, you may specify `--cfg-options workflow="[(train,1),(val,1)]"`. Note that the quotation mark " is necessary to + support list/tuple data types, and that **NO** white space is allowed inside the quotation marks in the specified value. + +## Import user-defined modules + +```{note} +This part may only be used when using MMClassification as a third party library to build your own project, and beginners can skip it. +``` + +After studying the follow-up tutorials [ADDING NEW DATASET](https://mmclassification.readthedocs.io/en/latest/tutorials/new_dataset.html), [CUSTOM DATA PIPELINES](https://mmclassification.readthedocs.io/en/latest/tutorials/data_pipeline.html), [ADDING NEW MODULES](https://mmclassification.readthedocs.io/en/latest/tutorials/new_modules.html). You may use MMClassification to complete your project and create new classes of datasets, models, data enhancements, etc. in the project. In order to streamline the code, you can use MMClassification as a third-party library, you just need to keep your own extra code and import your own custom module in the configuration files. For examples, you may refer to [OpenMMLab Algorithm Competition Project](https://github.com/zhangrui-wolf/openmmlab-competition-2021) . + +Add the following code to your own configuration files: + +```python +custom_imports = dict( + imports=['your_dataset_class', + 'your_transforme_class', + 'your_model_class', + 'your_module_class'], + allow_failed_imports=False) +``` + +## FAQ + +- None diff --git a/openmmlab_test/mmclassification-0.24.1/docs/en/tutorials/data_pipeline.md b/openmmlab_test/mmclassification-0.24.1/docs/en/tutorials/data_pipeline.md new file mode 100644 index 00000000..4b32280e --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/docs/en/tutorials/data_pipeline.md @@ -0,0 +1,150 @@ +# Tutorial 4: Custom Data Pipelines + +## Design of Data pipelines + +Following typical conventions, we use `Dataset` and `DataLoader` for data loading +with multiple workers. Indexing `Dataset` returns a dict of data items corresponding to +the arguments of models forward method. + +The data preparation pipeline and the dataset is decomposed. Usually a dataset +defines how to process the annotations and a data pipeline defines all the steps to prepare a data dict. +A pipeline consists of a sequence of operations. Each operation takes a dict as input and also output a dict for the next transform. + +The operations are categorized into data loading, pre-processing and formatting. + +Here is an pipeline example for ResNet-50 training on ImageNet. + +```python +img_norm_cfg = dict( + mean=[123.675, 116.28, 103.53], std=[58.395, 57.12, 57.375], to_rgb=True) +train_pipeline = [ + dict(type='LoadImageFromFile'), + dict(type='RandomResizedCrop', size=224), + dict(type='RandomFlip', flip_prob=0.5, direction='horizontal'), + dict(type='Normalize', **img_norm_cfg), + dict(type='ImageToTensor', keys=['img']), + dict(type='ToTensor', keys=['gt_label']), + dict(type='Collect', keys=['img', 'gt_label']) +] +test_pipeline = [ + dict(type='LoadImageFromFile'), + dict(type='Resize', size=256), + dict(type='CenterCrop', crop_size=224), + dict(type='Normalize', **img_norm_cfg), + dict(type='ImageToTensor', keys=['img']), + dict(type='Collect', keys=['img']) +] +``` + +For each operation, we list the related dict fields that are added/updated/removed. +At the end of the pipeline, we use `Collect` to only retain the necessary items for forward computation. + +### Data loading + +`LoadImageFromFile` + +- add: img, img_shape, ori_shape + +By default, `LoadImageFromFile` loads images from disk but it may lead to IO bottleneck for efficient small models. +Various backends are supported by mmcv to accelerate this process. For example, if the training machines have setup +[memcached](https://memcached.org/), we can revise the config as follows. + +``` +memcached_root = '/mnt/xxx/memcached_client/' +train_pipeline = [ + dict( + type='LoadImageFromFile', + file_client_args=dict( + backend='memcached', + server_list_cfg=osp.join(memcached_root, 'server_list.conf'), + client_cfg=osp.join(memcached_root, 'client.conf'))), +] +``` + +More supported backends can be found in [mmcv.fileio.FileClient](https://github.com/open-mmlab/mmcv/blob/master/mmcv/fileio/file_client.py). + +### Pre-processing + +`Resize` + +- add: scale, scale_idx, pad_shape, scale_factor, keep_ratio +- update: img, img_shape + +`RandomFlip` + +- add: flip, flip_direction +- update: img + +`RandomCrop` + +- update: img, pad_shape + +`Normalize` + +- add: img_norm_cfg +- update: img + +### Formatting + +`ToTensor` + +- update: specified by `keys`. + +`ImageToTensor` + +- update: specified by `keys`. + +`Collect` + +- remove: all other keys except for those specified by `keys` + +For more information about other data transformation classes, please refer to [Data Transformations](../api/transforms.rst) + +## Extend and use custom pipelines + +1. Write a new pipeline in any file, e.g., `my_pipeline.py`, and place it in + the folder `mmcls/datasets/pipelines/`. The pipeline class needs to override + the `__call__` method which takes a dict as input and returns a dict. + + ```python + from mmcls.datasets import PIPELINES + + @PIPELINES.register_module() + class MyTransform(object): + + def __call__(self, results): + # apply transforms on results['img'] + return results + ``` + +2. Import the new class in `mmcls/datasets/pipelines/__init__.py`. + + ```python + ... + from .my_pipeline import MyTransform + + __all__ = [ + ..., 'MyTransform' + ] + ``` + +3. Use it in config files. + + ```python + img_norm_cfg = dict( + mean=[123.675, 116.28, 103.53], std=[58.395, 57.12, 57.375], to_rgb=True) + train_pipeline = [ + dict(type='LoadImageFromFile'), + dict(type='RandomResizedCrop', size=224), + dict(type='RandomFlip', flip_prob=0.5, direction='horizontal'), + dict(type='MyTransform'), + dict(type='Normalize', **img_norm_cfg), + dict(type='ImageToTensor', keys=['img']), + dict(type='ToTensor', keys=['gt_label']), + dict(type='Collect', keys=['img', 'gt_label']) + ] + ``` + +## Pipeline visualization + +After designing data pipelines, you can use the [visualization tools](../tools/visualization.md) to view the performance. diff --git a/openmmlab_test/mmclassification-0.24.1/docs/en/tutorials/finetune.md b/openmmlab_test/mmclassification-0.24.1/docs/en/tutorials/finetune.md new file mode 100644 index 00000000..98538fbf --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/docs/en/tutorials/finetune.md @@ -0,0 +1,236 @@ +# Tutorial 2: Fine-tune Models + +Classification models pre-trained on the ImageNet dataset have been demonstrated to be effective for other datasets and other downstream tasks. +This tutorial provides instructions for users to use the models provided in the [Model Zoo](../model_zoo.md) for other datasets to obtain better performance. + +There are two steps to fine-tune a model on a new dataset. + +- Add support for the new dataset following [Tutorial 3: Customize Dataset](new_dataset.md). +- Modify the configs as will be discussed in this tutorial. + +Assume we have a ResNet-50 model pre-trained on the ImageNet-2012 dataset and want +to take the fine-tuning on the CIFAR-10 dataset, we need to modify five parts in the +config. + +## Inherit base configs + +At first, create a new config file +`configs/tutorial/resnet50_finetune_cifar.py` to store our configs. Of course, +the path can be customized by yourself. + +To reuse the common parts among different configs, we support inheriting +configs from multiple existing configs. To fine-tune a ResNet-50 model, the new +config needs to inherit `configs/_base_/models/resnet50.py` to build the basic +structure of the model. To use the CIFAR-10 dataset, the new config can also +simply inherit `configs/_base_/datasets/cifar10_bs16.py`. For runtime settings such as +training schedules, the new config needs to inherit +`configs/_base_/default_runtime.py`. + +To inherit all above configs, put the following code at the config file. + +```python +_base_ = [ + '../_base_/models/resnet50.py', + '../_base_/datasets/cifar10_bs16.py', '../_base_/default_runtime.py' +] +``` + +Besides, you can also choose to write the whole contents rather than use inheritance, +like [`configs/lenet/lenet5_mnist.py`](https://github.com/open-mmlab/mmclassification/blob/master/configs/lenet/lenet5_mnist.py). + +## Modify model + +When fine-tuning a model, usually we want to load the pre-trained backbone +weights and train a new classification head. + +To load the pre-trained backbone, we need to change the initialization config +of the backbone and use `Pretrained` initialization function. Besides, in the +`init_cfg`, we use `prefix='backbone'` to tell the initialization +function to remove the prefix of keys in the checkpoint, for example, it will +change `backbone.conv1` to `conv1`. And here we use an online checkpoint, it +will be downloaded during training, you can also download the model manually +and use a local path. + +And then we need to modify the head according to the class numbers of the new +datasets by just changing `num_classes` in the head. + +```python +model = dict( + backbone=dict( + init_cfg=dict( + type='Pretrained', + checkpoint='https://download.openmmlab.com/mmclassification/v0/resnet/resnet50_8xb32_in1k_20210831-ea4938fc.pth', + prefix='backbone', + )), + head=dict(num_classes=10), +) +``` + +```{tip} +Here we only need to set the part of configs we want to modify, because the +inherited configs will be merged and get the entire configs. +``` + +Sometimes, we want to freeze the first several layers' parameters of the +backbone, that will help the network to keep ability to extract low-level +information learnt from pre-trained model. In MMClassification, you can simply +specify how many layers to freeze by `frozen_stages` argument. For example, to +freeze the first two layers' parameters, just use the following config: + +```python +model = dict( + backbone=dict( + frozen_stages=2, + init_cfg=dict( + type='Pretrained', + checkpoint='https://download.openmmlab.com/mmclassification/v0/resnet/resnet50_8xb32_in1k_20210831-ea4938fc.pth', + prefix='backbone', + )), + head=dict(num_classes=10), +) +``` + +```{note} +Not all backbones support the `frozen_stages` argument by now. Please check +[the docs](https://mmclassification.readthedocs.io/en/latest/api/models.html#backbones) +to confirm if your backbone supports it. +``` + +## Modify dataset + +When fine-tuning on a new dataset, usually we need to modify some dataset +configs. Here, we need to modify the pipeline to resize the image from 32 to +224 to fit the input size of the model pre-trained on ImageNet, and some other +configs. + +```python +img_norm_cfg = dict( + mean=[125.307, 122.961, 113.8575], + std=[51.5865, 50.847, 51.255], + to_rgb=False, +) +train_pipeline = [ + dict(type='RandomCrop', size=32, padding=4), + dict(type='RandomFlip', flip_prob=0.5, direction='horizontal'), + dict(type='Resize', size=224), + dict(type='Normalize', **img_norm_cfg), + dict(type='ImageToTensor', keys=['img']), + dict(type='ToTensor', keys=['gt_label']), + dict(type='Collect', keys=['img', 'gt_label']), +] +test_pipeline = [ + dict(type='Resize', size=224), + dict(type='Normalize', **img_norm_cfg), + dict(type='ImageToTensor', keys=['img']), + dict(type='Collect', keys=['img']), +] +data = dict( + train=dict(pipeline=train_pipeline), + val=dict(pipeline=test_pipeline), + test=dict(pipeline=test_pipeline), +) +``` + +## Modify training schedule + +The fine-tuning hyper parameters vary from the default schedule. It usually +requires smaller learning rate and less training epochs. + +```python +# lr is set for a batch size of 128 +optimizer = dict(type='SGD', lr=0.01, momentum=0.9, weight_decay=0.0001) +optimizer_config = dict(grad_clip=None) +# learning policy +lr_config = dict(policy='step', step=[15]) +runner = dict(type='EpochBasedRunner', max_epochs=200) +log_config = dict(interval=100) +``` + +## Start Training + +Now, we have finished the fine-tuning config file as following: + +```python +_base_ = [ + '../_base_/models/resnet50.py', + '../_base_/datasets/cifar10_bs16.py', '../_base_/default_runtime.py' +] + +# Model config +model = dict( + backbone=dict( + frozen_stages=2, + init_cfg=dict( + type='Pretrained', + checkpoint='https://download.openmmlab.com/mmclassification/v0/resnet/resnet50_8xb32_in1k_20210831-ea4938fc.pth', + prefix='backbone', + )), + head=dict(num_classes=10), +) + +# Dataset config +img_norm_cfg = dict( + mean=[125.307, 122.961, 113.8575], + std=[51.5865, 50.847, 51.255], + to_rgb=False, +) +train_pipeline = [ + dict(type='RandomCrop', size=32, padding=4), + dict(type='RandomFlip', flip_prob=0.5, direction='horizontal'), + dict(type='Resize', size=224), + dict(type='Normalize', **img_norm_cfg), + dict(type='ImageToTensor', keys=['img']), + dict(type='ToTensor', keys=['gt_label']), + dict(type='Collect', keys=['img', 'gt_label']), +] +test_pipeline = [ + dict(type='Resize', size=224), + dict(type='Normalize', **img_norm_cfg), + dict(type='ImageToTensor', keys=['img']), + dict(type='Collect', keys=['img']), +] +data = dict( + train=dict(pipeline=train_pipeline), + val=dict(pipeline=test_pipeline), + test=dict(pipeline=test_pipeline), +) + +# Training schedule config +# lr is set for a batch size of 128 +optimizer = dict(type='SGD', lr=0.01, momentum=0.9, weight_decay=0.0001) +optimizer_config = dict(grad_clip=None) +# learning policy +lr_config = dict(policy='step', step=[15]) +runner = dict(type='EpochBasedRunner', max_epochs=200) +log_config = dict(interval=100) +``` + +Here we use 8 GPUs on your computer to train the model with the following +command: + +```shell +bash tools/dist_train.sh configs/tutorial/resnet50_finetune_cifar.py 8 +``` + +Also, you can use only one GPU to train the model with the following command: + +```shell +python tools/train.py configs/tutorial/resnet50_finetune_cifar.py +``` + +But wait, an important config need to be changed if using one GPU. We need to +change the dataset config as following: + +```python +data = dict( + samples_per_gpu=128, + train=dict(pipeline=train_pipeline), + val=dict(pipeline=test_pipeline), + test=dict(pipeline=test_pipeline), +) +``` + +It's because our training schedule is for a batch size of 128. If using 8 GPUs, +just use `samples_per_gpu=16` config in the base config file, and the total batch +size will be 128. But if using one GPU, you need to change it to 128 manually to +match the training schedule. diff --git a/openmmlab_test/mmclassification-0.24.1/docs/en/tutorials/new_dataset.md b/openmmlab_test/mmclassification-0.24.1/docs/en/tutorials/new_dataset.md new file mode 100644 index 00000000..24e6fe9e --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/docs/en/tutorials/new_dataset.md @@ -0,0 +1,239 @@ +# Tutorial 3: Customize Dataset + +We support many common public datasets for image classification task, you can find them in +[this page](https://mmclassification.readthedocs.io/en/latest/api/datasets.html). + +In this section, we demonstrate how to [use your own dataset](#use-your-own-dataset) +and [use dataset wrapper](#use-dataset-wrapper). + +## Use your own dataset + +### Reorganize dataset to existing format + +The simplest way to use your own dataset is to convert it to existing dataset formats. + +For multi-class classification task, we recommend to use the format of +[`CustomDataset`](https://mmclassification.readthedocs.io/en/latest/api/datasets.html#mmcls.datasets.CustomDataset). + +The `CustomDataset` supports two kinds of format: + +1. An annotation file is provided, and each line indicates a sample image. + + The sample images can be organized in any structure, like: + + ``` + train/ + ├── folder_1 + │ ├── xxx.png + │ ├── xxy.png + │ └── ... + ├── 123.png + ├── nsdf3.png + └── ... + ``` + + And an annotation file records all paths of samples and corresponding + category index. The first column is the image path relative to the folder + (in this example, `train`) and the second column is the index of category: + + ``` + folder_1/xxx.png 0 + folder_1/xxy.png 1 + 123.png 1 + nsdf3.png 2 + ... + ``` + + ```{note} + The value of the category indices should fall in range `[0, num_classes - 1]`. + ``` + +2. The sample images are arranged in the special structure: + + ``` + train/ + ├── cat + │ ├── xxx.png + │ ├── xxy.png + │ └── ... + │ └── xxz.png + ├── bird + │ ├── bird1.png + │ ├── bird2.png + │ └── ... + └── dog + ├── 123.png + ├── nsdf3.png + ├── ... + └── asd932_.png + ``` + + In this case, you don't need provide annotation file, and all images in the directory `cat` will be + recognized as samples of `cat`. + +Usually, we will split the whole dataset to three sub datasets: `train`, `val` +and `test` for training, validation and test. And **every** sub dataset should +be organized as one of the above structures. + +For example, the whole dataset is as below (using the first structure): + +``` +mmclassification +└── data + └── my_dataset + ├── meta + │ ├── train.txt + │ ├── val.txt + │ └── test.txt + ├── train + ├── val + └── test +``` + +And in your config file, you can modify the `data` field as below: + +```python +... +dataset_type = 'CustomDataset' +classes = ['cat', 'bird', 'dog'] # The category names of your dataset + +data = dict( + train=dict( + type=dataset_type, + data_prefix='data/my_dataset/train', + ann_file='data/my_dataset/meta/train.txt', + classes=classes, + pipeline=train_pipeline + ), + val=dict( + type=dataset_type, + data_prefix='data/my_dataset/val', + ann_file='data/my_dataset/meta/val.txt', + classes=classes, + pipeline=test_pipeline + ), + test=dict( + type=dataset_type, + data_prefix='data/my_dataset/test', + ann_file='data/my_dataset/meta/test.txt', + classes=classes, + pipeline=test_pipeline + ) +) +... +``` + +### Create a new dataset class + +You can write a new dataset class inherited from `BaseDataset`, and overwrite `load_annotations(self)`, +like [CIFAR10](https://github.com/open-mmlab/mmclassification/blob/master/mmcls/datasets/cifar.py) and +[CustomDataset](https://github.com/open-mmlab/mmclassification/blob/master/mmcls/datasets/custom.py). + +Typically, this function returns a list, where each sample is a dict, containing necessary data information, +e.g., `img` and `gt_label`. + +Assume we are going to implement a `Filelist` dataset, which takes filelists for both training and testing. +The format of annotation list is as follows: + +``` +000001.jpg 0 +000002.jpg 1 +``` + +We can create a new dataset in `mmcls/datasets/filelist.py` to load the data. + +```python +import mmcv +import numpy as np + +from .builder import DATASETS +from .base_dataset import BaseDataset + + +@DATASETS.register_module() +class Filelist(BaseDataset): + + def load_annotations(self): + assert isinstance(self.ann_file, str) + + data_infos = [] + with open(self.ann_file) as f: + samples = [x.strip().split(' ') for x in f.readlines()] + for filename, gt_label in samples: + info = {'img_prefix': self.data_prefix} + info['img_info'] = {'filename': filename} + info['gt_label'] = np.array(gt_label, dtype=np.int64) + data_infos.append(info) + return data_infos + +``` + +And add this dataset class in `mmcls/datasets/__init__.py` + +```python +from .base_dataset import BaseDataset +... +from .filelist import Filelist + +__all__ = [ + 'BaseDataset', ... ,'Filelist' +] +``` + +Then in the config, to use `Filelist` you can modify the config as the following + +```python +train = dict( + type='Filelist', + ann_file='image_list.txt', + pipeline=train_pipeline +) +``` + +## Use dataset wrapper + +The dataset wrapper is a kind of class to change the behavior of dataset class, such as repeat the dataset or +re-balance the samples of different categories. + +### Repeat dataset + +We use `RepeatDataset` as wrapper to repeat the dataset. For example, suppose the original dataset is +`Dataset_A`, to repeat it, the config looks like the following + +```python +data = dict( + train = dict( + type='RepeatDataset', + times=N, + dataset=dict( # This is the original config of Dataset_A + type='Dataset_A', + ... + pipeline=train_pipeline + ) + ) + ... +) +``` + +### Class balanced dataset + +We use `ClassBalancedDataset` as wrapper to repeat the dataset based on category frequency. The dataset to +repeat needs to implement method `get_cat_ids(idx)` to support `ClassBalancedDataset`. For example, to repeat +`Dataset_A` with `oversample_thr=1e-3`, the config looks like the following + +```python +data = dict( + train = dict( + type='ClassBalancedDataset', + oversample_thr=1e-3, + dataset=dict( # This is the original config of Dataset_A + type='Dataset_A', + ... + pipeline=train_pipeline + ) + ) + ... +) +``` + +You may refer to [API reference](https://mmclassification.readthedocs.io/en/latest/api/datasets.html#mmcls.datasets.ClassBalancedDataset) for details. diff --git a/openmmlab_test/mmclassification-0.24.1/docs/en/tutorials/new_modules.md b/openmmlab_test/mmclassification-0.24.1/docs/en/tutorials/new_modules.md new file mode 100644 index 00000000..5ac89de3 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/docs/en/tutorials/new_modules.md @@ -0,0 +1,272 @@ +# Tutorial 5: Adding New Modules + +## Develop new components + +We basically categorize model components into 3 types. + +- backbone: usually an feature extraction network, e.g., ResNet, MobileNet. +- neck: the component between backbones and heads, e.g., GlobalAveragePooling. +- head: the component for specific tasks, e.g., classification or regression. + +### Add new backbones + +Here we show how to develop new components with an example of ResNet_CIFAR. +As the input size of CIFAR is 32x32, this backbone replaces the `kernel_size=7, stride=2` to `kernel_size=3, stride=1` and remove the MaxPooling after stem, to avoid forwarding small feature maps to residual blocks. +It inherits from ResNet and only modifies the stem layers. + +1. Create a new file `mmcls/models/backbones/resnet_cifar.py`. + +```python +import torch.nn as nn + +from ..builder import BACKBONES +from .resnet import ResNet + + +@BACKBONES.register_module() +class ResNet_CIFAR(ResNet): + + """ResNet backbone for CIFAR. + + short description of the backbone + + Args: + depth(int): Network depth, from {18, 34, 50, 101, 152}. + ... + """ + + def __init__(self, depth, deep_stem, **kwargs): + # call ResNet init + super(ResNet_CIFAR, self).__init__(depth, deep_stem=deep_stem, **kwargs) + # other specific initialization + assert not self.deep_stem, 'ResNet_CIFAR do not support deep_stem' + + def _make_stem_layer(self, in_channels, base_channels): + # override ResNet method to modify the network structure + self.conv1 = build_conv_layer( + self.conv_cfg, + in_channels, + base_channels, + kernel_size=3, + stride=1, + padding=1, + bias=False) + self.norm1_name, norm1 = build_norm_layer( + self.norm_cfg, base_channels, postfix=1) + self.add_module(self.norm1_name, norm1) + self.relu = nn.ReLU(inplace=True) + + def forward(self, x): # should return a tuple + pass # implementation is ignored + + def init_weights(self, pretrained=None): + pass # override ResNet init_weights if necessary + + def train(self, mode=True): + pass # override ResNet train if necessary +``` + +2. Import the module in `mmcls/models/backbones/__init__.py`. + +```python +... +from .resnet_cifar import ResNet_CIFAR + +__all__ = [ + ..., 'ResNet_CIFAR' +] +``` + +3. Use it in your config file. + +```python +model = dict( + ... + backbone=dict( + type='ResNet_CIFAR', + depth=18, + other_arg=xxx), + ... +``` + +### Add new necks + +Here we take `GlobalAveragePooling` as an example. It is a very simple neck without any arguments. +To add a new neck, we mainly implement the `forward` function, which applies some operation on the output from backbone and forward the results to head. + +1. Create a new file in `mmcls/models/necks/gap.py`. + + ```python + import torch.nn as nn + + from ..builder import NECKS + + @NECKS.register_module() + class GlobalAveragePooling(nn.Module): + + def __init__(self): + self.gap = nn.AdaptiveAvgPool2d((1, 1)) + + def forward(self, inputs): + # we regard inputs as tensor for simplicity + outs = self.gap(inputs) + outs = outs.view(inputs.size(0), -1) + return outs + ``` + +2. Import the module in `mmcls/models/necks/__init__.py`. + + ```python + ... + from .gap import GlobalAveragePooling + + __all__ = [ + ..., 'GlobalAveragePooling' + ] + ``` + +3. Modify the config file. + + ```python + model = dict( + neck=dict(type='GlobalAveragePooling'), + ) + ``` + +### Add new heads + +Here we show how to develop a new head with the example of `LinearClsHead` as the following. +To implement a new head, basically we need to implement `forward_train`, which takes the feature maps from necks or backbones as input and compute loss based on ground-truth labels. + +1. Create a new file in `mmcls/models/heads/linear_head.py`. + + ```python + from ..builder import HEADS + from .cls_head import ClsHead + + + @HEADS.register_module() + class LinearClsHead(ClsHead): + + def __init__(self, + num_classes, + in_channels, + loss=dict(type='CrossEntropyLoss', loss_weight=1.0), + topk=(1, )): + super(LinearClsHead, self).__init__(loss=loss, topk=topk) + self.in_channels = in_channels + self.num_classes = num_classes + + if self.num_classes <= 0: + raise ValueError( + f'num_classes={num_classes} must be a positive integer') + + self._init_layers() + + def _init_layers(self): + self.fc = nn.Linear(self.in_channels, self.num_classes) + + def init_weights(self): + normal_init(self.fc, mean=0, std=0.01, bias=0) + + def forward_train(self, x, gt_label): + cls_score = self.fc(x) + losses = self.loss(cls_score, gt_label) + return losses + + ``` + +2. Import the module in `mmcls/models/heads/__init__.py`. + + ```python + ... + from .linear_head import LinearClsHead + + __all__ = [ + ..., 'LinearClsHead' + ] + ``` + +3. Modify the config file. + +Together with the added GlobalAveragePooling neck, an entire config for a model is as follows. + +```python +model = dict( + type='ImageClassifier', + backbone=dict( + type='ResNet', + depth=50, + num_stages=4, + out_indices=(3, ), + style='pytorch'), + neck=dict(type='GlobalAveragePooling'), + head=dict( + type='LinearClsHead', + num_classes=1000, + in_channels=2048, + loss=dict(type='CrossEntropyLoss', loss_weight=1.0), + topk=(1, 5), + )) + +``` + +### Add new loss + +To add a new loss function, we mainly implement the `forward` function in the loss module. +In addition, it is helpful to leverage the decorator `weighted_loss` to weight the loss for each element. +Assuming that we want to mimic a probabilistic distribution generated from another classification model, we implement a L1Loss to fulfil the purpose as below. + +1. Create a new file in `mmcls/models/losses/l1_loss.py`. + + ```python + import torch + import torch.nn as nn + + from ..builder import LOSSES + from .utils import weighted_loss + + @weighted_loss + def l1_loss(pred, target): + assert pred.size() == target.size() and target.numel() > 0 + loss = torch.abs(pred - target) + return loss + + @LOSSES.register_module() + class L1Loss(nn.Module): + + def __init__(self, reduction='mean', loss_weight=1.0): + super(L1Loss, self).__init__() + self.reduction = reduction + self.loss_weight = loss_weight + + def forward(self, + pred, + target, + weight=None, + avg_factor=None, + reduction_override=None): + assert reduction_override in (None, 'none', 'mean', 'sum') + reduction = ( + reduction_override if reduction_override else self.reduction) + loss = self.loss_weight * l1_loss( + pred, target, weight, reduction=reduction, avg_factor=avg_factor) + return loss + ``` + +2. Import the module in `mmcls/models/losses/__init__.py`. + + ```python + ... + from .l1_loss import L1Loss, l1_loss + + __all__ = [ + ..., 'L1Loss', 'l1_loss' + ] + ``` + +3. Modify loss field in the config. + + ```python + loss=dict(type='L1Loss', loss_weight=1.0)) + ``` diff --git a/openmmlab_test/mmclassification-0.24.1/docs/en/tutorials/runtime.md b/openmmlab_test/mmclassification-0.24.1/docs/en/tutorials/runtime.md new file mode 100644 index 00000000..b2127448 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/docs/en/tutorials/runtime.md @@ -0,0 +1,257 @@ +# Tutorial 7: Customize Runtime Settings + +In this tutorial, we will introduce some methods about how to customize workflow and hooks when running your own settings for the project. + + + +- [Customize Workflow](#customize-workflow) +- [Hooks](#hooks) + - [Default training hooks](#default-training-hooks) + - [Use other implemented hooks](#use-other-implemented-hooks) + - [Customize self-implemented hooks](#customize-self-implemented-hooks) +- [FAQ](#faq) + + + +## Customize Workflow + +Workflow is a list of (phase, duration) to specify the running order and duration. The meaning of "duration" depends on the runner's type. + +For example, we use epoch-based runner by default, and the "duration" means how many epochs the phase to be executed in a cycle. Usually, +we only want to execute training phase, just use the following config. + +```python +workflow = [('train', 1)] +``` + +Sometimes we may want to check some metrics (e.g. loss, accuracy) about the model on the validate set. +In such case, we can set the workflow as + +```python +[('train', 1), ('val', 1)] +``` + +so that 1 epoch for training and 1 epoch for validation will be run iteratively. + +By default, we recommend using **`EvalHook`** to do evaluation after the training epoch, but you can still use `val` workflow as an alternative. + +```{note} +1. The parameters of model will not be updated during the val epoch. +2. Keyword `max_epochs` in the config only controls the number of training epochs and will not affect the validation workflow. +3. Workflows `[('train', 1), ('val', 1)]` and `[('train', 1)]` will not change the behavior of `EvalHook` because `EvalHook` is called by `after_train_epoch` and validation workflow only affect hooks that are called through `after_val_epoch`. + Therefore, the only difference between `[('train', 1), ('val', 1)]` and ``[('train', 1)]`` is that the runner will calculate losses on the validation set after each training epoch. +``` + +## Hooks + +The hook mechanism is widely used in the OpenMMLab open-source algorithm library. Combined with the `Runner`, the entire life cycle of the training process can be managed easily. You can learn more about the hook through [related article](https://www.calltutors.com/blog/what-is-hook/). + +Hooks only work after being registered into the runner. At present, hooks are mainly divided into two categories: + +- default training hooks + +The default training hooks are registered by the runner by default. Generally, they are hooks for some basic functions, and have a certain priority, you don't need to modify the priority. + +- custom hooks + +The custom hooks are registered through `custom_hooks`. Generally, they are hooks with enhanced functions. The priority needs to be specified in the configuration file. If you do not specify the priority of the hook, it will be set to 'NORMAL' by default. + +**Priority list** + +| Level | Value | +| :-------------: | :---: | +| HIGHEST | 0 | +| VERY_HIGH | 10 | +| HIGH | 30 | +| ABOVE_NORMAL | 40 | +| NORMAL(default) | 50 | +| BELOW_NORMAL | 60 | +| LOW | 70 | +| VERY_LOW | 90 | +| LOWEST | 100 | + +The priority determines the execution order of the hooks. Before training, the log will print out the execution order of the hooks at each stage to facilitate debugging. + +### default training hooks + +Some common hooks are not registered through `custom_hooks`, they are + +| Hooks | Priority | +| :-------------------: | :---------------: | +| `LrUpdaterHook` | VERY_HIGH (10) | +| `MomentumUpdaterHook` | HIGH (30) | +| `OptimizerHook` | ABOVE_NORMAL (40) | +| `CheckpointHook` | NORMAL (50) | +| `IterTimerHook` | LOW (70) | +| `EvalHook` | LOW (70) | +| `LoggerHook(s)` | VERY_LOW (90) | + +`OptimizerHook`, `MomentumUpdaterHook` and `LrUpdaterHook` have been introduced in [sehedule strategy](./schedule.md). +`IterTimerHook` is used to record elapsed time and does not support modification. + +Here we reveal how to customize `CheckpointHook`, `LoggerHooks`, and `EvalHook`. + +#### CheckpointHook + +The MMCV runner will use `checkpoint_config` to initialize [`CheckpointHook`](https://github.com/open-mmlab/mmcv/blob/9ecd6b0d5ff9d2172c49a182eaa669e9f27bb8e7/mmcv/runner/hooks/checkpoint.py). + +```python +checkpoint_config = dict(interval=1) +``` + +We could set `max_keep_ckpts` to save only a small number of checkpoints or decide whether to store state dict of optimizer by `save_optimizer`. +More details of the arguments are [here](https://mmcv.readthedocs.io/en/latest/api.html#mmcv.runner.CheckpointHook) + +#### LoggerHooks + +The `log_config` wraps multiple logger hooks and enables to set intervals. Now MMCV supports `TextLoggerHook`, `WandbLoggerHook`, `MlflowLoggerHook`, `NeptuneLoggerHook`, `DvcliveLoggerHook` and `TensorboardLoggerHook`. +The detailed usages can be found in the [doc](https://mmcv.readthedocs.io/en/latest/api.html#mmcv.runner.LoggerHook). + +```python +log_config = dict( + interval=50, + hooks=[ + dict(type='TextLoggerHook'), + dict(type='TensorboardLoggerHook') + ]) +``` + +#### EvalHook + +The config of `evaluation` will be used to initialize the [`EvalHook`](https://github.com/open-mmlab/mmclassification/blob/master/mmcls/core/evaluation/eval_hooks.py). + +The `EvalHook` has some reserved keys, such as `interval`, `save_best` and `start`, and the other arguments such as `metrics` will be passed to the `dataset.evaluate()` + +```python +evaluation = dict(interval=1, metric='accuracy', metric_options={'topk': (1, )}) +``` + +You can save the model weight when the best verification result is obtained by modifying the parameter `save_best`: + +```python +# "auto" means automatically select the metrics to compare. +# You can also use a specific key like "accuracy_top-1". +evaluation = dict(interval=1, save_best="auto", metric='accuracy', metric_options={'topk': (1, )}) +``` + +When running some large experiments, you can skip the validation step at the beginning of training by modifying the parameter `start` as below: + +```python +evaluation = dict(interval=1, start=200, metric='accuracy', metric_options={'topk': (1, )}) +``` + +This indicates that, before the 200th epoch, evaluations would not be executed. Since the 200th epoch, evaluations would be executed after the training process. + +```{note} +In the default configuration files of MMClassification, the evaluation field is generally placed in the datasets configs. +``` + +### Use other implemented hooks + +Some hooks have been already implemented in MMCV and MMClassification, they are: + +- [EMAHook](https://github.com/open-mmlab/mmcv/blob/master/mmcv/runner/hooks/ema.py) +- [SyncBuffersHook](https://github.com/open-mmlab/mmcv/blob/master/mmcv/runner/hooks/sync_buffer.py) +- [EmptyCacheHook](https://github.com/open-mmlab/mmcv/blob/master/mmcv/runner/hooks/memory.py) +- [ProfilerHook](https://github.com/open-mmlab/mmcv/blob/master/mmcv/runner/hooks/profiler.py) +- ...... + +If the hook is already implemented in MMCV, you can directly modify the config to use the hook as below + +```python +mmcv_hooks = [ + dict(type='MMCVHook', a=a_value, b=b_value, priority='NORMAL') +] +``` + +such as using `EMAHook`, interval is 100 iters: + +```python +custom_hooks = [ + dict(type='EMAHook', interval=100, priority='HIGH') +] +``` + +## Customize self-implemented hooks + +### 1. Implement a new hook + +Here we give an example of creating a new hook in MMClassification and using it in training. + +```python +from mmcv.runner import HOOKS, Hook + + +@HOOKS.register_module() +class MyHook(Hook): + + def __init__(self, a, b): + pass + + def before_run(self, runner): + pass + + def after_run(self, runner): + pass + + def before_epoch(self, runner): + pass + + def after_epoch(self, runner): + pass + + def before_iter(self, runner): + pass + + def after_iter(self, runner): + pass +``` + +Depending on the functionality of the hook, the users need to specify what the hook will do at each stage of the training in `before_run`, `after_run`, `before_epoch`, `after_epoch`, `before_iter`, and `after_iter`. + +### 2. Register the new hook + +Then we need to make `MyHook` imported. Assuming the file is in `mmcls/core/utils/my_hook.py` there are two ways to do that: + +- Modify `mmcls/core/utils/__init__.py` to import it. + + The newly defined module should be imported in `mmcls/core/utils/__init__.py` so that the registry will + find the new module and add it: + +```python +from .my_hook import MyHook +``` + +- Use `custom_imports` in the config to manually import it + +```python +custom_imports = dict(imports=['mmcls.core.utils.my_hook'], allow_failed_imports=False) +``` + +### 3. Modify the config + +```python +custom_hooks = [ + dict(type='MyHook', a=a_value, b=b_value) +] +``` + +You can also set the priority of the hook as below: + +```python +custom_hooks = [ + dict(type='MyHook', a=a_value, b=b_value, priority='ABOVE_NORMAL') +] +``` + +By default, the hook's priority is set as `NORMAL` during registration. + +## FAQ + +### 1. `resume_from` and `load_from` and `init_cfg.Pretrained` + +- `load_from` : only imports model weights, which is mainly used to load pre-trained or trained models; + +- `resume_from` : not only import model weights, but also optimizer information, current epoch information, mainly used to continue training from the checkpoint. + +- `init_cfg.Pretrained` : Load weights during weight initialization, and you can specify which module to load. This is usually used when fine-tuning a model, refer to [Tutorial 2: Fine-tune Models](./finetune.md). diff --git a/openmmlab_test/mmclassification-0.24.1/docs/en/tutorials/schedule.md b/openmmlab_test/mmclassification-0.24.1/docs/en/tutorials/schedule.md new file mode 100644 index 00000000..1afc4b7f --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/docs/en/tutorials/schedule.md @@ -0,0 +1,341 @@ +# Tutorial 6: Customize Schedule + +In this tutorial, we will introduce some methods about how to construct optimizers, customize learning rate and momentum schedules, parameter-wise finely configuration, gradient clipping, gradient accumulation, and customize self-implemented methods for the project. + + + +- [Customize optimizer supported by PyTorch](#customize-optimizer-supported-by-pytorch) +- [Customize learning rate schedules](#customize-learning-rate-schedules) + - [Learning rate decay](#learning-rate-decay) + - [Warmup strategy](#warmup-strategy) +- [Customize momentum schedules](#customize-momentum-schedules) +- [Parameter-wise finely configuration](#parameter-wise-finely-configuration) +- [Gradient clipping and gradient accumulation](#gradient-clipping-and-gradient-accumulation) + - [Gradient clipping](#gradient-clipping) + - [Gradient accumulation](#gradient-accumulation) +- [Customize self-implemented methods](#customize-self-implemented-methods) + - [Customize self-implemented optimizer](#customize-self-implemented-optimizer) + - [Customize optimizer constructor](#customize-optimizer-constructor) + + + +## Customize optimizer supported by PyTorch + +We already support to use all the optimizers implemented by PyTorch, and to use and modify them, please change the `optimizer` field of config files. + +For example, if you want to use `SGD`, the modification could be as the following. + +```python +optimizer = dict(type='SGD', lr=0.0003, weight_decay=0.0001) +``` + +To modify the learning rate of the model, just modify the `lr` in the config of optimizer. +You can also directly set other arguments according to the [API doc](https://pytorch.org/docs/stable/optim.html?highlight=optim#module-torch.optim) of PyTorch. + +For example, if you want to use `Adam` with the setting like `torch.optim.Adam(params, lr=0.001, betas=(0.9, 0.999), eps=1e-08, weight_decay=0, amsgrad=False)` in PyTorch, +the config should looks like. + +```python +optimizer = dict(type='Adam', lr=0.001, betas=(0.9, 0.999), eps=1e-08, weight_decay=0, amsgrad=False) +``` + +## Customize learning rate schedules + +### Learning rate decay + +Learning rate decay is widely used to improve performance. And to use learning rate decay, please set the `lr_confg` field in config files. + +For example, we use step policy as the default learning rate decay policy of ResNet, and the config is: + +```python +lr_config = dict(policy='step', step=[100, 150]) +``` + +Then during training, the program will call [`StepLRHook`](https://github.com/open-mmlab/mmcv/blob/f48241a65aebfe07db122e9db320c31b685dc674/mmcv/runner/hooks/lr_updater.py#L153) periodically to update the learning rate. + +We also support many other learning rate schedules [here](https://github.com/open-mmlab/mmcv/blob/master/mmcv/runner/hooks/lr_updater.py), such as `CosineAnnealing` and `Poly` schedule. Here are some examples + +- ConsineAnnealing schedule: + + ```python + lr_config = dict( + policy='CosineAnnealing', + warmup='linear', + warmup_iters=1000, + warmup_ratio=1.0 / 10, + min_lr_ratio=1e-5) + ``` + +- Poly schedule: + + ```python + lr_config = dict(policy='poly', power=0.9, min_lr=1e-4, by_epoch=False) + ``` + +### Warmup strategy + +In the early stage, training is easy to be volatile, and warmup is a technique +to reduce volatility. With warmup, the learning rate will increase gradually +from a minor value to the expected value. + +In MMClassification, we use `lr_config` to configure the warmup strategy, the main parameters are as follows: + +- `warmup`: The warmup curve type. Please choose one from 'constant', 'linear', 'exp' and `None`, and `None` means disable warmup. +- `warmup_by_epoch` : if warmup by epoch or not, default to be True, if set to be False, warmup by iter. +- `warmup_iters` : the number of warm-up iterations, when `warmup_by_epoch=True`, the unit is epoch; when `warmup_by_epoch=False`, the unit is the number of iterations (iter). +- `warmup_ratio` : warm-up initial learning rate will calculate as `lr = lr * warmup_ratio`。 + +Here are some examples + +1. linear & warmup by iter + + ```python + lr_config = dict( + policy='CosineAnnealing', + by_epoch=False, + min_lr_ratio=1e-2, + warmup='linear', + warmup_ratio=1e-3, + warmup_iters=20 * 1252, + warmup_by_epoch=False) + ``` + +2. exp & warmup by epoch + + ```python + lr_config = dict( + policy='CosineAnnealing', + min_lr=0, + warmup='exp', + warmup_iters=5, + warmup_ratio=0.1, + warmup_by_epoch=True) + ``` + +```{tip} +After completing your configuration file,you could use [learning rate visualization tool](https://mmclassification.readthedocs.io/en/latest/tools/visualization.html#learning-rate-schedule-visualization) to draw the corresponding learning rate adjustment curve. +``` + +## Customize momentum schedules + +We support the momentum scheduler to modify the model's momentum according to learning rate, which could make the model converge in a faster way. + +Momentum scheduler is usually used with LR scheduler, for example, the following config is used to accelerate convergence. +For more details, please refer to the implementation of [CyclicLrUpdater](https://github.com/open-mmlab/mmcv/blob/f48241a65aebfe07db122e9db320c31b685dc674/mmcv/runner/hooks/lr_updater.py#L327) +and [CyclicMomentumUpdater](https://github.com/open-mmlab/mmcv/blob/f48241a65aebfe07db122e9db320c31b685dc674/mmcv/runner/hooks/momentum_updater.py#L130). + +Here is an example + +```python +lr_config = dict( + policy='cyclic', + target_ratio=(10, 1e-4), + cyclic_times=1, + step_ratio_up=0.4, +) +momentum_config = dict( + policy='cyclic', + target_ratio=(0.85 / 0.95, 1), + cyclic_times=1, + step_ratio_up=0.4, +) +``` + +## Parameter-wise finely configuration + +Some models may have some parameter-specific settings for optimization, for example, no weight decay to the BatchNorm layer or using different learning rates for different network layers. +To finely configuration them, we can use the `paramwise_cfg` option in `optimizer`. + +We provide some examples here and more usages refer to [DefaultOptimizerConstructor](https://mmcv.readthedocs.io/en/latest/_modules/mmcv/runner/optimizer/default_constructor.html#DefaultOptimizerConstructor). + +- Using specified options + + The `DefaultOptimizerConstructor` provides options including `bias_lr_mult`, `bias_decay_mult`, `norm_decay_mult`, `dwconv_decay_mult`, `dcn_offset_lr_mult` and `bypass_duplicate` to configure special optimizer behaviors of bias, normalization, depth-wise convolution, deformable convolution and duplicated parameter. E.g: + + 1. No weight decay to the BatchNorm layer + + ```python + optimizer = dict( + type='SGD', + lr=0.8, + weight_decay=1e-4, + paramwise_cfg=dict(norm_decay_mult=0.)) + ``` + +- Using `custom_keys` dict + + MMClassification can use `custom_keys` to specify different parameters to use different learning rates or weight decays, for example: + + 1. No weight decay for specific parameters + + ```python + paramwise_cfg = dict( + custom_keys={ + 'backbone.cls_token': dict(decay_mult=0.0), + 'backbone.pos_embed': dict(decay_mult=0.0) + }) + + optimizer = dict( + type='SGD', + lr=0.8, + weight_decay=1e-4, + paramwise_cfg=paramwise_cfg) + ``` + + 2. Using a smaller learning rate and a weight decay for the backbone layers + + ```python + optimizer = dict( + type='SGD', + lr=0.8, + weight_decay=1e-4, + # 'lr' for backbone and 'weight_decay' are 0.1 * lr and 0.9 * weight_decay + paramwise_cfg=dict( + custom_keys={'backbone': dict(lr_mult=0.1, decay_mult=0.9)})) + ``` + +## Gradient clipping and gradient accumulation + +Besides the basic function of PyTorch optimizers, we also provide some enhancement functions, such as gradient clipping, gradient accumulation, etc., refer to [MMCV](https://github.com/open-mmlab/mmcv/blob/master/mmcv/runner/hooks/optimizer.py). + +### Gradient clipping + +During the training process, the loss function may get close to a cliffy region and cause gradient explosion. And gradient clipping is helpful to stabilize the training process. More introduction can be found in [this page](https://paperswithcode.com/method/gradient-clipping). + +Currently we support `grad_clip` option in `optimizer_config`, and the arguments refer to [PyTorch Documentation](https://pytorch.org/docs/stable/generated/torch.nn.utils.clip_grad_norm_.html). + +Here is an example: + +```python +optimizer_config = dict(grad_clip=dict(max_norm=35, norm_type=2)) +# norm_type: type of the used p-norm, here norm_type is 2. +``` + +When inheriting from base and modifying configs, if `grad_clip=None` in base, `_delete_=True` is needed. For more details about `_delete_` you can refer to [TUTORIAL 1: LEARN ABOUT CONFIGS](https://mmclassification.readthedocs.io/en/latest/tutorials/config.html#ignore-some-fields-in-the-base-configs). For example, + +```python +_base_ = [./_base_/schedules/imagenet_bs256_coslr.py] + +optimizer_config = dict(grad_clip=dict(max_norm=35, norm_type=2), _delete_=True, type='OptimizerHook') +# you can ignore type if type is 'OptimizerHook', otherwise you must add "type='xxxxxOptimizerHook'" here +``` + +### Gradient accumulation + +When computing resources are lacking, the batch size can only be set to a small value, which may affect the performance of models. Gradient accumulation can be used to solve this problem. + +Here is an example: + +```python +data = dict(samples_per_gpu=64) +optimizer_config = dict(type="GradientCumulativeOptimizerHook", cumulative_iters=4) +``` + +Indicates that during training, back-propagation is performed every 4 iters. And the above is equivalent to: + +```python +data = dict(samples_per_gpu=256) +optimizer_config = dict(type="OptimizerHook") +``` + +```{note} +When the optimizer hook type is not specified in `optimizer_config`, `OptimizerHook` is used by default. +``` + +## Customize self-implemented methods + +In academic research and industrial practice, it may be necessary to use optimization methods not implemented by MMClassification, and you can add them through the following methods. + +```{note} +This part will modify the MMClassification source code or add code to the MMClassification framework, beginners can skip it. +``` + +### Customize self-implemented optimizer + +#### 1. Define a new optimizer + +A customized optimizer could be defined as below. + +Assume you want to add an optimizer named `MyOptimizer`, which has arguments `a`, `b`, and `c`. +You need to create a new directory named `mmcls/core/optimizer`. +And then implement the new optimizer in a file, e.g., in `mmcls/core/optimizer/my_optimizer.py`: + +```python +from mmcv.runner import OPTIMIZERS +from torch.optim import Optimizer + + +@OPTIMIZERS.register_module() +class MyOptimizer(Optimizer): + + def __init__(self, a, b, c): + +``` + +#### 2. Add the optimizer to registry + +To find the above module defined above, this module should be imported into the main namespace at first. There are two ways to achieve it. + +- Modify `mmcls/core/optimizer/__init__.py` to import it into `optimizer` package, and then modify `mmcls/core/__init__.py` to import the new `optimizer` package. + + Create the `mmcls/core/optimizer` folder and the `mmcls/core/optimizer/__init__.py` file if they don't exist. The newly defined module should be imported in `mmcls/core/optimizer/__init__.py` and `mmcls/core/__init__.py` so that the registry will find the new module and add it: + +```python +# In mmcls/core/optimizer/__init__.py +from .my_optimizer import MyOptimizer # MyOptimizer maybe other class name + +__all__ = ['MyOptimizer'] +``` + +```python +# In mmcls/core/__init__.py +... +from .optimizer import * # noqa: F401, F403 +``` + +- Use `custom_imports` in the config to manually import it + +```python +custom_imports = dict(imports=['mmcls.core.optimizer.my_optimizer'], allow_failed_imports=False) +``` + +The module `mmcls.core.optimizer.my_optimizer` will be imported at the beginning of the program and the class `MyOptimizer` is then automatically registered. +Note that only the package containing the class `MyOptimizer` should be imported. `mmcls.core.optimizer.my_optimizer.MyOptimizer` **cannot** be imported directly. + +#### 3. Specify the optimizer in the config file + +Then you can use `MyOptimizer` in `optimizer` field of config files. +In the configs, the optimizers are defined by the field `optimizer` like the following: + +```python +optimizer = dict(type='SGD', lr=0.02, momentum=0.9, weight_decay=0.0001) +``` + +To use your own optimizer, the field can be changed to + +```python +optimizer = dict(type='MyOptimizer', a=a_value, b=b_value, c=c_value) +``` + +### Customize optimizer constructor + +Some models may have some parameter-specific settings for optimization, e.g. weight decay for BatchNorm layers. + +Although our `DefaultOptimizerConstructor` is powerful, it may still not cover your need. If that, you can do those fine-grained parameter tuning through customizing optimizer constructor. + +```python +from mmcv.runner.optimizer import OPTIMIZER_BUILDERS + + +@OPTIMIZER_BUILDERS.register_module() +class MyOptimizerConstructor: + + def __init__(self, optimizer_cfg, paramwise_cfg=None): + pass + + def __call__(self, model): + ... # Construct your optimzier here. + return my_optimizer +``` + +The default optimizer constructor is implemented [here](https://github.com/open-mmlab/mmcv/blob/9ecd6b0d5ff9d2172c49a182eaa669e9f27bb8e7/mmcv/runner/optimizer/default_constructor.py#L11), which could also serve as a template for new optimizer constructor. diff --git a/openmmlab_test/mmclassification-speed-benchmark/docs_zh-CN/Makefile b/openmmlab_test/mmclassification-0.24.1/docs/zh_CN/Makefile similarity index 100% rename from openmmlab_test/mmclassification-speed-benchmark/docs_zh-CN/Makefile rename to openmmlab_test/mmclassification-0.24.1/docs/zh_CN/Makefile diff --git a/openmmlab_test/mmclassification-0.24.1/docs/zh_CN/_static/css/readthedocs.css b/openmmlab_test/mmclassification-0.24.1/docs/zh_CN/_static/css/readthedocs.css new file mode 100644 index 00000000..577a67a8 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/docs/zh_CN/_static/css/readthedocs.css @@ -0,0 +1,27 @@ +.header-logo { + background-image: url("../image/mmcls-logo.png"); + background-size: 204px 40px; + height: 40px; + width: 204px; +} + +pre { + white-space: pre; +} + +article.pytorch-article section code { + padding: .2em .4em; + background-color: #f3f4f7; + border-radius: 5px; +} + +/* Disable the change in tables */ +article.pytorch-article section table code { + padding: unset; + background-color: unset; + border-radius: unset; +} + +table.autosummary td { + width: 50% +} diff --git a/openmmlab_test/mmclassification-0.24.1/docs/zh_CN/_static/image/mmcls-logo.png b/openmmlab_test/mmclassification-0.24.1/docs/zh_CN/_static/image/mmcls-logo.png new file mode 100644 index 0000000000000000000000000000000000000000..6e65420ab9b63bc8080d1156372e6822e0efe15a GIT binary patch literal 33009 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

qg0|u#M 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 literal 0 HcmV?d00001 diff --git a/openmmlab_test/mmclassification-0.24.1/docs/zh_CN/_static/image/tools/visualization/lr_schedule1.png b/openmmlab_test/mmclassification-0.24.1/docs/zh_CN/_static/image/tools/visualization/lr_schedule1.png new file mode 100644 index 0000000000000000000000000000000000000000..31fca35bb525280af6f83b755aef3f2495f07ed2 GIT binary patch literal 30065 zcmd4430#e9+cv(i&5?O*U{{7hqG--sNky|XAXB9|ng<(YYLKDOfYPWE(V&Sa3DGJ^ z6Vg1-D%Jlu*Rsdw+28xU@3X((`|tNWzuH;d>%On+yw2e`j`Lh+cdE!wnY3UMgTa`h zsIWzi!T9MOgE2a7!Z`e9WbHO@e3P))7CMhbgmu5&y=m8>W>rmY+KG(=Qqg3ZBAS&u!eeF?E*9hS3w2 zZH@Lam>o7zP2=mRU8BzxZuB*H&fmS@Lr@j(_xnDk_k9;NtN8UbalOfV<9xg~ILK+; zjq}UrWUuBJg*(94lA4-^(d-}Hofc=Ye{_$UzL)*)Sw$1@@btCUQ2o%l=87?|<)dg=g+4`3o*vrtsLVt=D#WcxPw6a8r%H;qmKp z=FW|1t#~Z-^Us^Gh}XqTuO2>kGS{pkRTKaDG4)tXgc2To$_DnWlJYiE-!GJjLMZx;p=(S>3p(NzR4&lE)e^2RnD>9oX#eX}7JFKj%u8UjU9v-Y3Y5em1{3H&JqOJnD`00Gxq~A8h8>H(# zIP|*kBA@)%mX_GVAud`$lE>7p2x{_JdZ``$`r_ipMB_`T$C|?3-5IA(osv#G==QxM z_hX7p1ijI>Z}!KU-YZ*V^dGu!RDiq2RqG={T>UD{wYO|JRp~ltHhbC5MR_`QeF`S& z-#hbDEkFN~F+5hE`Gg?_3A?$lPgx3~9dW@e_K*4;>hbjOB{Twc|lH5TQ`w~U$L z4JmcO>RYxv%U&^;!C-A}*6GaQ0i{bzRo|z9TiGfqg#i9(W>TN3x(sZ<9H2b^iN)n86^}J=A zdhhB!G!al7$Q&7zlNtV2Jl(pSC3WaOi>P&-d&M;jI95_GCDLq z$*x1G>g|`bila4^96G;RNsQFKzA@0A&8c~3`)uVv@m+pJx3^9%Z8`3O4K*pff5*D! zWzX9tEZY?WmmbZ7ZvuC3_MDo2*j>!NeXoO)lWE77=PI{ep1i)^B6!p0%{_TbLtgAp zQ1HV8gm1qhNK3*glhxVPrL<i$!Kn=<2wvp`|mt``jlT0R;PAy+!Rrp+8sTu6?^>Z9Qk9nw;cBL_t%cz zeA~0-^jw3TM~+1DM>%xWz6_E|3Rek=Zp$1ofC=^-F>AeSAlo;J5&T39&cmlXO!3mJ zS+m0M2vMpbvVz)ifx1cNEde9N+J;d$PLn22X4(|UM3BKXmp)L*7eC${Q0d&Ita(>w z*R5N(96z6)TNI-$te;~2Tx1E(G%i$(bD)vw>Vk7XhC1-slh?1vwzXVh3YYlK*@7CD z7xtvtCm0RCkKI#zclTPw!mJZxX5$`i-dwa&KUFmEew;zNVD@T1{l3^eNpu!fnuHY1 zJ|@2FX)1ZRFWX}<^Tdc{SFQ3C9%-HF)29pSrzQ^cG({-+uafYZIAOxh+E>@w9^cLO z5ru7!QogZHMP7DjNaOLdrc?7hZsA-=J-WfK zpJu-c3!Je)^vF%MJKLjd8wwkXqAt0P4B17LD5V`LjMj|l#wy@sY!}>pKaAc?@nwjd z+quT!+8Y+L7A$C-5YHc_aPenB!;G}|cXwBJJC20Q&*+QCL&V7Y@X#av{PWME&fhFy zy!j$=W@V2Y8}9h~>2HhGeaQ3ioyo%W<{C}!V`ua5#NkaE9+ns|dELH$7Om~8aw~Bk zHAW-d@z`k(kLdl+&n*zQytzs**|#}Wps#dStgaZHFr0pMI5^x&bYpRhX@6&pO1?tt z0v+MZ@An%^;^VQc4e+K~d42+#QECFpL6Ty51A($Gy85ZMyX@_gU-}D^t31LCR~~6h z)jgPh^$LHGv_qlD%EgN}&Rnu%=cOge8sR(UpZ4^OfgOIlfAGA~t0?sdu3HUX^Dc1@ z$ru;%=LXQ@I`y?Wwx-n4oxp9>54L5h?$SU0SpUJ{0xeiQ{k|^5&0yEAUEa*wszH)9 zoi^eLNPU2*@s8Q7OnyQNa^*B_5QYfj+=%C`%0Lqa(=g%cxS0!15@C&4jQ@6CdmzI{6=r%H}k?BKc?sK+haqOP; zVkSijLfUZ}aG?4gNBU;WoXOW<{;4>_#p(3v(@|IeGE5b$+C1$rh3P%@?=~B{^jxX- z`P@_zZ~7_ggk$Zs!$qO;oVg$Bf}K?G%!TDCHpd!^mUGKG>%4pSF4el`9C_U6fhDTJ zcU^}D@^W+KD<0dG+_1=qS{iKsw83W}6E_e@&!VXI{M>BrGUe2TbMEd*Qqhdocn4FQ zh21zgo--OYENR!O=XcPh`?wLzf#78H1 z7V{zc6yYEjMX2(ow?CbHUCJ(Q+>`}h1FG)r+srL)xnVpfkF8^6oc?3m<_{ubN8T=a z-ctf2G+zI4xOqitlyYA+TLMysa#$;GS-54#He(zob@7@r0>U z*Lm~GwFW$L8*$AxdAPu)?#;0sPJ=B;URbgPcvL$_SL9U}a5CquH!ok!k-ZwZ(m|bA zEhBgtMFUejTh7~Co4sZWY0X21A?Cr!YkqmzuBVZ^AB0;WGssP@uRjuM-|;2y{owbm zf`#dhJ*jn)Llu4kN*po8CZgu$9~2Z6EO&%R9*f@hP}d79EHIdczro!sk+S%3Zy!BX zuv4o9pP=ANorfk@M9e;l@<~gVNA3#suo@aTmaB8)^`S(Q;+K&-Z~bC5{M~_1Qu5=n zUAIpqn3k-HIGFSN`TUl$r1f{TVyX?1$90rhWZtpYpOU>A-r>+JA+1;SA0Ni-dr%r! zi~J$C02VKX9HvRM3d@1Rq{76aUpXMLR5e(1)22-q;6$Xt%}Vb-$3kv{JK|3F4Mgfl zi-$8{E78`LuPka&DNVodQNCHG0 zyN^UzWqV9n`!qY-3#(Ysbqu#)ikMwc^F2m8egRyy*l<_Kh`6$kmzNkarD{=`l)fIM zb?b1s4wx_h?j$$Y zLHy-5YAa7MDo3bm==WcxzeZ3aaxVv$_*-Lc{T_WBBrn8!sg=3rNefr*c_fMm?NFd= zw0}SCI>*9wEArBw4YeSwtdg5KvYVOyNI(DTO0OKRg;L68NXVJ%63SY(y}mByrETEw z+}JJCs@j9XU?^fnpB^t`!$9_QB!)@-l;TF@R=M;AH6MSBqaKQsOlo-SPe0W+M1&j< z48A1ebX>6z=O7Z%x4cUXcX{)dv6Cfv<_c-;z*E=-MjOrZ$QbI~qZy;6?6FTg-Tc6T zusFSx+v!eym3I0#X7L+Oj*G(oksw^Hbg1L@S|GL^xhoTw;i@*TOl#igwlUHlRLimLtb$013JsiC!DGolAvVg`w8*2Y+Veri&loUmj^z)i&NWvf^3M1>NLLmT|%Ba*YF zk1OKfOp%oK3*}d-s_s}WCnuL{eRSOoqz^am?tT!B3wVd#9FE%+x{cHJWhj4clvAF5 zh){>)jhh)6hnR2`_(hMKi`i|&-6mLU zw03+j)3v6i<_^xVWRQ7ZUtbSyMAB_I4Jp`i#k^Lxk?+k48i_}CzrUX*o1 z^D_*VD%fTYikdy^j=phtdJ|`-;ZjXu0q1;t>=yL(HGLGYez;Pv zrEMf_iJo<^{g<=+Pj=uy+J4F!m0OJjG6tEMV$P5Zzv|g1C&$wPp@iq^iru$SeF>CW z+Q7$M7cuhi=8%bzkCdh|e4@M3ppq-n{w%yUwpvhbiKq**Ly2@{tKg4%C!X z^+bLUxdCE?09qEWNFydva}6jgNpvoi}9WXxUy-ex*QKyz)5H}hN@0>s0{NdKx!*3|d@)kMk@)idJ=!JCYK^yta zj2Akzi#+Q0_HIOx_`Sc245^Ph#6C9`=VWu{Q118(-?L2%f@PxhQtlfK1j{%bNGe0|ouHBKVcYk#7#B&a z?tqESTDUM~u7UmH;`~Wdr(O-?kC+1>r2gsY$uBQ0^%WMr%$cF}niA=eZE!eWKfgXzGNCUYgthd06XyJHkJT%eF{r;>cFIZ-9^F*Cd3}fCB z)Q0vuu-!EP{NP5GN;E!Q&5;{4203fAlwGU%>m=P+xU=oOvtpe(dV96V*S%g}#hrZ(NcD`BI`=kEzAHKKxxX%?gboh2qujU|g>2l4-S;Db3q?g6`psFT zS8wb1j(&?bklyJ&d;0XnKqX@JQVOk1ZrJu|EV=Qzw%fBBx6|`vJZ~i4lZHwXcN?o4g*}&1TUrBd-=sPmmE! z%Qa$K$=%)RaHa(K)(X78jBKptP0$`ZtcT8r$<78b9e8&VL0fII8462sJ*YFDpZbu664h4zk zS9`C4u#`(qfpdPu2=nV&EYq9fry*dzrEF1nf{p8 z6;*^W%2B{HC1dn0Y5{6BzP)vlY&ull$K=T`V+Ga2FECGs1I~+$&luS5$0a|CN^HL{ zz==^v)%;owl2Z*cT^p-1GXYzN(jFqEpmG||+mtMOZQndc)M-~FYz|QoT3B&@tsDN^ zu`Rt%Bg5H&U|(`7*Vmav10PaD38W1pI@a=0j4Yi%kGeNO>S@7bimA2@w|!&>6i~No z(P65qivV08WKo&ch&7I`Ou{1_LDfO16pjHQ116}lRpeLRd4|O3SnaF%xzCH;`fKLq zI+dZ$m+2`|_X|T(*o4YN1Mk!GQYiifKnS2$en7_!9BO9gcB(P?kgS)W1`s>^hHLAV zE#k!lVo>-6dP?98g&Rs|@}}#-%la0Z6vNatfr;eqvR_W6UT*5J{_ywyoz@<{BmY5S)qFN0+sBj8045|0gWL_$dsT0%c2e+7VO zLShMCH7SV;8a-wVC2zULRwK1vY5`+4z6Fo67uN_xO-TY&`>&NXzt z1$&Y-f3&Eg#UDRW2tsu9<#B2jkr`}$0Ml_q`48096qv^bpiw(dj2=4+R0?v%dN`UQ z)Z2RRyHH=n06nE`Mv5PYx5|T`FEMn}MCn=`&Oi=c0%9ZFuF`?>UQ~%Ukmg)(>_HYz zEXAQWfl)XyQLt8(u5?6p)EVgmjWOiiX=UJS^{^jI?9CON#fYZnQH(-4&{6L4>AfFK z>6Q<@zJ6!9dbmQW6L%DDDjHGHuQgb59z4Rxa9<|ipuqbF@@@kNro89#=g(2DuR*8~ zOmcnA!E+gdtx_(-{dJDb3At1QM3~?PGCtonFJ#07_pf3CHP^Y?O_0*TQp8d^`MySTXYlpYRgILRry^G%>c@%@8J$T#z? zG+qEW>%qx4EeumsiI|KHPqJ*)5#0qFqMYSMI+5Y`XRK zLM%SF-3K9f0KP0T%Gx(UF+?^YeYwgeo5oG$3iw*|%JUr`0(Hr$i8DoyH|z9&`xXhm z0wXuPZ?tgT(a3k9@(}|r7kqqFdq;l;=TbsN2JU?s4(>qng91^P0bAr3;&FCGVTv_IAVsn|pl z0p#Iy)}Rf&k;7b%PIS9gM{_hoj`_R{x$QM zIA=j}ZU$A(U0y(&LXkgh1cI%OK&n2(1FTUSS-ckFV4zBf@~r98Z=slK4E2#MOmpb6 z1wJ%(+&IA%D_%9ofsmem^0~dQQ9Jm_y^{cT7sB_4@IqLd_&j1K?GhNdk znO8)^wJvd5Da21WF}73{L4=7S?IAoNr9wtI7dmV~bF+Cd`ws{(VwRt>oV*oVZ&w)a zK5*cxOdW6zozQJw*6L#OvylfB1BtD9bxj>4fK_U}oZk5h7mC2wkbf&Zx^DJLT@Bdo zKELzc1S6g|MUefp&uys3e=4`6ZGp&>Cr_wIxFP7+z0RW2xu73jl6JE~V+u&>SKhy| z);U|t*^Kw!^W0f{s{zlZcjPSe3qviv8=)%LQwWT?!ebUmUU=rzsh?E+aotbT%TG_E zZ&U|RfgC7dgIIe|r7L4(*r}!<#1JrY5o(T`hHgWeyYC;^McA+9rwuho(g8Un1-ta_ zCY}$!hU=vgmY{F}rK`(Uty1xk=?#FFj~)45Cl{=vjQ2}w@35u2Zzz>&OCyY_0q#N* z$b*0)=*D;02twz@EGqTjfC%0eJ@jf`4+N8D%0s@MsC(Tv^8^&cs!3?ezMz#@t5p+%nxW@9NO}KNO4Wt_QG%9ms_%YcL2quAR zc3+-Nly{%a#nmht4}9RdjMF13s&K4`DT8N^c6R=zJD$NP6wYYCMeMVXp=u({?rAAo zpO==&8%4-VgoCPVf7tst{TMhp)2`ar=e)h&cQ-J_Kn#EnmF-N$(n+5nOZYUstEcBm zg}L4JIb2+KsVq^I>CuSx34R$U@c>y=IF^Y}{b= zQqrL_OzW=BEm~B=3}|z>jr8&c3hC{|2h-tYnhknPk2@XQh}(>Wm`QX`6&UC z^!4A6cWm+ya~pOh9VX<*8uK+}R9_8>E9LYAarM9k(x^9o&DnaWZS%-6%N5~G0k zm^5XICU`pVAUPT(zj)Rm4bp^91^Kg_U^k1j4i8x97tvaTD(tovG7A{Z9hkN{VK_## zd=MZg<3MS^5BC7fQ4;88a7Pkr&vY&HllBVh}ZCo0Fojgzld-{$$b1(gs>%eX_%xoy8uzAJ9p|c z&vnkYG@A3`r~?~fv|`u%a`L1X!pcHOIy^f|{B`Fd8fE1#3f$yw-+?KJnx2?(oobYqhYuBwnT;~P=d#J|7uR(#c4{{ITob$pN zN4i@p%0x!s61U-0UI1z_51vSrWFUM9GT*=iaT$@Kfhdn0&@f)$vF1~9FrAC*D3`e9 zBF%@NK05%xxPY}|{Vlz58d9`vNO~{8#wBt%c%(l>V#^Z1d>O$BZ38KJ0kyegZB>d* zZX^e1m!$0rVypmhv)td2pT>@z?>5{Yv2UJ-2#!uDaMT?5V=kj@K0Ibc(VF=k$?%&w zgrIAv!dH3W8SW&{k=E_#=%Af<9qvDzy}C7H1c8lsFfOARgZltRdh9EoqHun;(4l8J zIg&Xmbnay>1D_wtOB87+oQ6t#@q@#v)mO9)tfVul4l8drc@hdIEn$RM*gY1s*ahNg z@R*{m0}V?bkHl$>OJ{%~wIz+uK?Z zGikP8>xvK{O- zi!f6|L4^ockWhhFEe2kM5R)4K&!eC2sOdSC+xkLE$s^S~_A`Sh1J@>~pXsW9XZw}g z!iy9aNZLk%3~%nPRB|>yV4Lg1tBp5AMjnULQ4eSAS3g++T&p$`IMQXRU&5oK(v3a(!+`o*&eVi%Tp3Vv4!vAh@rE!8qDRhh8)PlyP2 zKpY!`VO6Z{NV#YQD3cOJLA~UA`;Cmm4!)d4r3>KVFyWgJcQvBI(1x=n4v@ebq{#m9 z@$smKUfHRAT1+~pusxs}2T%YcLP(_QKl;)#T5i-u;73A2ol9`^xmnAj)8IeU^(OPI%3dvMTfdXoeoDB2AAJ&) zLp(&rrcwqg;UieW=rOL?grr5quoHRpU0`Z4U5-c4Ba&cg^ARHEP9-=KMRUI3nBKSMtX6mI~ zW;<@4(5Pd-rlF7Y)uQ?fbIlLM+Lvy#LLWVjGxW=p37() zC(lvr((^NC&x#yxt29eITDqpREI70CrBDuZ99{^hPwW9QTuN{0M>w;fFcGlc!r*?A zOlH;L*Fz>xvcYQ4s|K>V4(nt59SKSfgdZ1>Ra7JI6XiIW;r<}A>h#;y^*$E}oXA0@ zSlI+llL z^oj#IfK0`rHKO+aG=BU-oWQk&jZ!)XP!hbqsh=B&r1eleZ?FIc%Z2XFz8hbb&pwBiqUaq8=;m4>87gEHb z)CZKod}KM6*F*et+uQj|=0e?}bN|3uqgP1Uy%ulwmk9EvPL7um4a$y~*Q>ukTHWB$qE<{DgTY>r_2w@+OO{*^Xo4-Y!g@ zJ3!yu*V5jBZM!b*uqJbw?+Vs$El*dv3w4icJv~g{K3({&(*0eZ-G!=A!42oMwLFCn zxIMT)RsU+g*N4jvYx3u za{Aso`-qc<7bf@?X1)UfM;%nQ_>@<%+^gsD1}Sy8iW=*RNJ{aA(@?k&O_}D=RBw)?^)ka>HBird(m@ZHEU!4}{BR z;Zh1p6Ydp8PM*8!#i0jzRaI5SsQ}SYpzS|*@Z-@(ZTX0kSca&?~U zx5?Ls@0ZHxPh{9#`_?7EEoY-5b-et0N&cF_!(7sye>@JBbFuzcr0mR5Q!h3%(c`;`i2kZ3x*-|Gr&?Sj_ zU`Ojnl40;e-4YNm@1a@Q`&s$jy}c?kc@vHAsMwDiy7)$CMQ7)I>C0x@|8knM^ncPZ z)}eF@I|6z0vK1?KK$rR+frVgDMS@bg;m2cu^@C*z8$yNS9YTVCIA! z-aJDyLf~NpU8A8un(qltw zAAaPADYU|ba_Bi~8eGoa(zp$DgR;yKlVAV6_Snc`_FKBwP5aM$-;13b+05B=F@=?X z>NHuDea{}^6?}1?`ZwkbA5jN*RB@@yWN)6@1u79zub~F9Os{ZVc)nk z<4-$FcgpzZdWaTn7LnGcOS)_Pmqy{vk^P0;0VO@{|M5L>uQbZQfi_xELYbkY@$}m7K-P8`Au(%5_kgViM@n zMAQHzI>%cUL;b{U1g~=kGCJe#`gcS(kzNr5Vgs^byAl(23MIZ6K8%<_sOuuZehTU) zM&1q$CF&TI6n|+4;@B=Em4K_3&R(vz1qqwR*%<<)V$BTzJxAsGxie>WqFy5E47pu% zhWv5%wWS4RaZWgwpo0KS0h-_zxtUNlXrKx(tICimtphT(8BBuZ^*I180sTtw_zP-o zCp-X8a~U~1b&dhDDTX&x*AIPtNU6uBe0hTGgOZ5_2!l(reL1qfX_sALMIYo)mcrfR z@lDOMZ}|{>b0}nvi*CGL0tH4y0~837;GOOloQ0Bq!-frh)G+3q3%sxp%JJ@}lZAEb5?R@TU{o4)r+ z9w@_yM!8c-k4OkS5snoo_p-p;&;``_)f*NJ$jNnio#XeLo1CpQTcgqi49`cWU z867_zkez(A+2@@b29BG$^yJ--4na?XP{3K#x4m9?BZ*Ge_?J2aTU z=n-9WMcGjnR}?I*L+N3Pa!-XxWodi6rD7o}V*-kh+(wAtE!J?DOMwf+m-I>4ZPSN@ zP}o%%BohsYq|{kK?P-8;75u2<2P-L=1Mv~7PvOG+wYJ~d_d&|92%*U?RMf0io)U_d z#34eSK`1^k?LeeR+`+S3p7mY~mBl;$E)Fk0!HUBrBWqp~)&D9$WPzM(8t~o-plQa? zEr0^@7OBqhVnT68GJYUEibNlx?gwNjloZd)dJp$4?pJClMqB+dg0i&SFCt_S62c zhSB-wKC@kP*#E5IbiT*0_q6CAyeAZVtH_IN5d06jW&gnx0=bhax-&uY7XOz)hF-Zn0nIy;1QYF$CU}mcX6El z9%A3#-aG+*HQ>N2>e2#Idu6%$HmF-nJ|;$i?&^xvVh6lW!KlUVq0%!2me+`IL83`C z=`4r#3>-tA_ee`p6?H!Wnb`q0gS72bYjR85zZIzkJ3@?RutV*9I2difNN=gx3GD+Z zrVrT<5I7A*D%1fQV10@bjn#>v2RKYH!(=5HV-BSG&%=W+>%=WW0((Ob^WpjK9+ zS7@e;B!L7l7IlPh4X9fwTR>oJ)dkf`UrYa+0b9`z00;P@oA875kRVIcDHA|7TO7HI zuUHHvsD@l_(2SBaZOvrUR z7UKViUw#`v|0a~=d9q7^;{!BS%*lQJT+t6T`7sDMNM=MS3HUC+>Pzs)%1Bt=A!hhT zFR*K?42tdu_S0%Sb@(lBLq62W2Nc^$JT}~Ozy8lRFedptBmXs?Mt1m{kxR$(xqz2T zh^`+!cG3~3-w87RsI|Dr|;@*$8n>zzss;RCH{dwy-aj)fQMP#)`7WdfwHQYb{ z`TXp4oM0pm#6$t<1QUl!3}UK^WUI}H{ulWnG*AVQdhCJ)IX8*GdUzYU)=sEMvla^i!1}X})+TpiCTjcmfLsc~u*`fQ9H}7JLD9_Patj8YE$}Ey<$l_;tL26sP7` zMnecnT^4d6JptAQyetG055&lTAaL4A4I%I!2lM>4LZS0(iT-W8uy)%XbZ#KJZLxugW;>ob)x1FSamhfSJic-a)OMN21|HM$Y=j@HMe(`btu(@;J-V2dNlD(^X7(8)E$f? zSL`-2Xo$Wj$J8zC*E1JqSzjWJFzO^VT2~NYq~=@zN+0cu``GR41tz;kehG z{dM`_-jzv1ig_avJmb*=7!#jiy}&4e)#^c)8ioxj|H%gV<4&;9mtWJPWgZ+X1sY?~ zmH%^kWVhJ%0ifj6z`DA+rRcd^uQi5svwK~C(lLh|aX0EE|E>`GFB8R}$0He}|J?B} z*oKG2D@C&rYuo@NI4p({@<}D63nf_TIKmn+5(U(#Iyx(*_1KZyy>2@G4*e}Gs5y2| zi3qgwCa7(6lPzx@DhQ4x!$pJ7#2=8Bd-9pbWhlb+p`BJ(la3q#WvwTF6i$RBDC8SL z>>FOa6vxX6-Cz$PS>b2S#j!7uaav|XOiSGj@RVB5hcJ5sBBCq& zU`plXy}91O$^{guD?#%4G)B8+dDD^wv>dM};*u5s+0YSqB}q)C;BUb2i?^WENjs~k zhMG@CXEAH-+*79QbwFFnSTZYBfA;(OF2OIeP!2*2wCZ_oZvJYH2nY0FcJA24`Xk1Y zt?o642v9(RK>5PKg5Zh<#}#wVp9Y}Dli>C}lP=^g>P`;ZZNvrGtp=Jqsig$$4Ev26 z92`>JFVv#8hcJ-)GYdRrY?y=vho&+NMSM%c8uq&ta;RYE!N!^baglWXb`Pzy&d!1B zH^T4AXs|u8y9DhNAP0U$_3#~vYYO%!907sfx{A$1P@PxajG+&GZ2Sl9gp;U~g}&UQ ztbV$>5Cp6|$O#N%xF&k|O`wyv8KUHkX!c7K7UIwMLJCVMD>Y3*p^(CL_|H~81y&x? zj44Td_kV+Yf2Y*MN9Vr=I6-wb-ewsZ&LF}u9v+Ij$UY3d@5n@*+R`IX){|C{JlDYl z%T1FR$(Q!or?PG&iq;*{tHN&`)tV{R2O(QvJ%aBN%PA|?LkOseJ_i|n$R6>v;rd3r zIzFxQ90bOECvARc<u+{(2>197-~?%YAygNHkdj%$dNW4YM7=TjUhvo5t&iITS6`TmRh z<^f^h3SzHWJ0~vP3xeD!^(V%Qdw&GAQ%aF7)%+>$NkE@PDmuh9DP`agsh)!D)ngq; zDS#m0_DKya8RsHUkv{b*%Tf6REY4;M(ETU~up(U=G;=RQR}#1O2-=}zZI${6mlqN2a6ZsT5(8dJs^S{7w)6#jE9Dv#=*V;U6~SJ- z2dyE{(E7XrLiff$1-a4(1+p=qf+KNSX<7;tUrP)P4Jq3jJ84$Ctpodl;poyf@5R6k z9l4r7=17jFrQ2Hy3 zjm9{k?>Z`%$LZCtJ036xxlbt)wIay02vS6j0@yT`+IP_WxCdxoA?8|0>;KGpKldmk zP&d4gCqS0+@!r0Z=;3J&Fi0}jNAG0b$t!Hv6EKr53iWjn^bBUj1U ztoh?5bLl0>W`n%bwv)>wvKC3z3-M%4vV7llEYr&MY7dQzxf3xyUbYZ2Aeu~8&(Pe;CL!VLF9r)U$R z?xKpde?ZEm7r{R}q9ZFPdc=*_V8UoaNdxC@10m_y2mf$Y9w2{O`rA z=aU~RLh;@zF@kW*nbr&)mMO+b5jmEy|G6lpdO#AD!YZ$+?G`!`ty`N;lUFCrTxkL| zHiG&m#WsYjpHGmU7GL%|VFgQ&dnVUqBCp&|o%TJ}P^ZKKdW%NMPV=I0)WadoL?l=$ zHH@uQ50P~#!iXZux>2=hBY`}IZXbT5Oo%)&RYM(_gz_;Kn*rWyGPWxZwI*+#H5}`& zh`3)EAY8K#_cr3xzk_!0>VfY_ZlFLBK)$Z%$FeE(FJsA>=q=-}rlDp)*^Tkc$h^Av zqPSW2zeqrQw9phKHr=ZU2>g$9uWGM^)bZw>z#W6ak$#z=i1N;bJy5C%q`w;?SXsZ1 zY^zc`#|Mz%UkP8oW}7cxzRa37&G&#av~JZMfb1!mf|Oz?X5i?$vP{R}(5pHjrA@4A z_|iTFkA2@`TK-CrMr99P9wsas=7#vfg^5lYbI#Wot~7<3fHNvuUg!sg?2n8jKUYab zK1g=iUpQMv>(5{nFtrI?pKbhekNThu#rm@5ZHNaWLSu&|Tv3madRjphAxIk{E(qV7+p!Dd+bf=^S_8qIo>1V#o&A;8=-ag)7++Ql$FqJQZr@PMs zbnZfCgy}ly+tUc$Hbv1c-VkjZR5LCa36NE!t2Z-F3l9o1J@X09|c>{O}kgb~MTinnxOx2aj4SF3=8P7?ta< zmq57n@5@z36Lz-3Xa$YLeFU?U^3}(oAiZ%w7o!j~&`>o?SWc`Yo$YSyKcuzFu}>SL zo$H_H>o$1oW4BT;cqSkZ1(Em%SHwCb{|kch|3UCHf|)3+o>$DzBegN$q8Nl( zNpu46(>xon$sq=AL&qpUfOLEhj;;sU++&*`STz^0@MJ(C(WtlyD5qXPL{gf!h)Ak< z{Ety|>$zFGFd{({T3%|H^t;R_Kb169z;lb&7D$KU5vD8{D3(8_<2?5 zx{vnG=@DrvZxAfwt>d-78I@G%GB5fXjw1g4bp&v2|Aa7jd`lA zXW09_Hm|QWD;pzMW&U9KlSB3I&2FSMb0(|~bLjSvaB$lFwdwUp>1c-Udyr)}< z_F~l67)eoIU#}tOhJfsIGul)5*MK}Qwl(s|RlVRT4$+%$3!j+TCR< z@m=MK%sZ0){e5tD=a=6juznb(LtXS#fdIsc7^oLgq;ftf$u2siZWWs5QOd7#VZr%B z(fz_9swA??cJ|KEX9nuuK(4ZNw!t!=+{T-~@$pMLhBggsg-#9$@DD&4J)|D|=wB9E zvSb??B9wb2z^BkuLFTc0KiK8m>SyhZNa?9V54pt9hChd8QeJ{4f0doz)cP=f#T;Sv zqca`Hu;~P#`9iwkRy1n|4cDX)CV&eQw%+|w=|zpRx!(|(p?grKPGTC&Mk8opir!gG zv<_(5C&U?8FywX1*R9h+1m3Qo(EdV_6*Ao~cp(`}Cg}!5TQq(a8h;`NP{zEr+Wv_~ zVT}wfQ$()*9ui|w*YEbY0Tr|d6$0Zp@K9Gk5z&|lE?htnnp#`OSP(eNpe|N6h5K)B z(;?9)jw{cM(RXccVx3m0&JTpL&d(URCrvZ*;vSN9d={Qe_$9!x5;*ES)SxvF~EE~H-GrA-VPDK5 zaN`72?(%>l$M~Vw^^Kb!xcP7XcslOHx0iK?i}cqfbE3X8 z=J|^btHG~kBxLgoYARJ2{97b0OzG_U#a}t-mSz7omuV;*$((qL!~Eaf4sQ4de~)MX zJ~BAXdNkb)?_cjm?aS73iJvAj+!KBNPNlUWwL5d|1PRY+c+u}|vA>IjSxdEHpnIfX zv8eb-yh`*hmvXm-p`o&8Kd$ep-CTVnF)-%->&+}UjE(N{ir@AxOqC19_V4cH50-$XLGKj9-S*_4 z_rl%w^(R?+e+Sn4EBLdPxtsl}h6OaS>t8IEOn%`XOx~1b@*n@jqz*TYfgOG)Gz}&^Th0>DxW|1LwVHFV7>QeZHtO`kA-^A4RSEDhODMwf#GW0pN;8! z5zqKE%sx+9W7394V%JEFp3G?dVT#h9M(VWhJ3ZoHD9rrzMdJ8(wI2p8{mE_AoQZQ7 z<(zCYuy>yeC$!-l+uOL0*I7~SF^!>ij=e9^&-QqBP3|||z)f`M%)|;yAq+;j?0enRM ziL;<#xl=6n$nvyK;k7vb3r|5u=Ho-7c{aIUnfeMEJ+NKcM~~hm$N-YO<>=6?`9?_e z(^C^AT?P_~^TWKOXuwR~{g_e%eeVDoJ&%C^p{_B+5_GeiF2A>q-aY4{%q1T!uC%z> zCC%rNWs&g{JhDGbHh>ytMFisu%Sr-0uq{UtEvnE zb1C*pK=B8?oWdGeND2J#22BCACOfu+tC!NOmJwj5Q9rKsXJy~#ixa0z5$m}X_s8sq z+C%=Np8Ji=FT4k`fCiI6^r6D6M*9HQ!7IxsNxZ1x#>-2i*sem|7$E}MR!P(4Ph|bS zd4KQ^3~6!jNQ6BvsdY=ze8^&7ccCNA&qW2(n}PLx5j6t@1(AV2KeZ`f`kzXEnqyBi z+LIcruhAL7wD1{_(PI$&f5Nl!FrTuxU$}a@sm!&1|Uh?@;ir^Snx|bFiFlE(wAy$ z2OzvO^%vMQkFFQ{)tu*O>;`@P{S*rN*MCkaO;`Kl!1fg&9LF}b4=G|Ze8S(f?20H2z5Ugr};ZTC||}L237wP z^6reuoI&U>qHCw69Y{cN?5%_nQ61+w5n?9LHLuY{GWL=B$E@RPJd!*o+m;*~9Yv8)DQU3^~m-l3cy48u+gNRv;<`Lv9w5SKj zt72r}+J6uO6eNZgVqlP`;2Rn(aQVQ(qBwnY@&DW520VAgjcCl1Uki;SKryS>tQ6di zIaZNC;LcsRKx1m~hjpS=?2(ceFJ1(Hs}8iD27yM1fIrm$BF!3d0DT6Ag*`$AUz_t# zVWjn8ka<-`EQ;tDL?awyYLq68EQ(r*m3%2fZGeDn`l7>3`^rMl`saIKArvqYUi;h} z6I+wK{06yc0zV2FiJW`FGLFmphlBjujswOf$T}P@J{ps2Xgtxex;NZ*ag)|eL+Q-0 ze~PMJ46-*@_Dc0S1-SG{+WG7(Mpr_k<1^QAU`}pOTUr65u53(}vJEDOJL^8y{(FZF`oVjEf z-Gg?#7Q6w!BDzsE5y(lz4#unr61(?s8e%B!FuXPOSbU2uKz>9TRgA(+rEm}6x+%S{ zl1X$r;;W<=BEVxj$!Gh(m3!7D6@~07w{Y_dLw_Q5ZhPmVZA+!AG=wL1&@2=!WbYa} zAhf)dJ!4ZngVe zXqG-oy_HZpSnZGkOGs0(@nnyqHt`?EFi~it#W)^Un9mzG=obMmO2aE`NUF09fyRrB zBV0ejxs>`!X(~nb>ft0|uxa@shv0p;!FW6H-l_55IKGCIEti03OB4jQ)j+p#ZX)`| z7XUMHepb8~vvKLEaXE>_Dj6NKoEadni4nuZQc!L*ouDXOc_AiHsv-M< zB`SA%1_HnWP9dWqg1v}4YsBSbN$P0j$%5#K!wbmDZv*px|yV47|ya2<9jIpz&A;Godq`r z(U+&-s}J}zj95UTOPzFcsuF}9w7v{m#aAi9!H|5B`5kAp9(K`eXnq`R7?iV<%LmC6 z=$)}$1#d*|9`XOB^6W1m#CIc4l9H|d5c0|hnUkbrH}xpFRwXnm`FO{$%yTXX#IJFu z&ia&wv@e^scX4*dZ+sdT6P8H48b$$eYF)KLO@JA%jc_tF_fzxch7*IbhoNQh`&Lu0 zh{S^lT^EKZM53V^v!Enfv`GvE{B{-(PixB0YwuBQgWMb?M@pS|uRsA6Hkhs$)Eflf zZUSJ;yGjvJyO8ufIM}(=dXC0uA(Uz@Vuv-(elG5)&V}`?z}%(5jDpfkw@jSa_rsxa5P~P zgZ-&J3-wwPEZn3p>}-TmzAt*Ddf@Y#pxRYK_RUrIis}?R+eh2P^Y6IvlK5M8-&-gJ^%l;`9 zr5IrNqpBDva2u``zcQ{BDbVHSZdz@ixTIsNbZlBlGfgO^2zKsN#L{lY0IM7q)vBy) zCO-CP2qishj`r8QP{^esp(pTeT0)~;FeQ&Z_UAIV1>6)lcCOOuQ8d)>M}jnamEH%D zAnXFowE~DNaIF$kQ%IJ;Mhi%pOylWr*?N3@!m*FXk^X^V&Q5e4a-?xS5c$%bhhjQU zij8LBLnpHcxY#IcMV_n$(08=eQET{Yct79<%g{xKVoDpcyGc7e?CW#}IU~)?q^>~7 z+i1`^L>@87aA1wH=1%FWr?JiGnEcifMuW#B0Q39n=WVjFbV z?#*K0fUn5w#(FD<$X1M*jdCr_f(3zb(&sYK3`V9X>R?Vy{H1S()g+*fS!3Gapx`Z; znK)vKsZNenm>f;*iu8dwSWI1fHU+bb6UPvn1ej+BQV9~eQ06Uq2>seLAe0U{dJy5x zBwuGDfD`mWNi*#c37@-Y&K%7wf@9IfNDKt^D1Z{ux9$GF(#|KO$uN%N??U=_*`XLg z!V0#?JlG{E@=)2RH&!vxH5S#n1UjkA!m$wy4;=zS28~z*6%k7ISL(1D3_8>ysi_+s zid;xFBna9Fg0j!|8H5*44umOl@5B2%&+q*{-{1H5{V|f6LfuHNL97h2%L>v`31(@A zb4GcGlyo>gpRbAi8K!fV&@eGQ3L3uhwFSpr$d4{6Iutf!^ecPgsi>b#1j}DwK2@D4 zr*ae0YEH5gg2VtH3DHT7e1BGh{EuA|^NG)2FJcw;+PO@LIt*Fnrc`?>hr<7A6;2h! z;f?K80#GvxOU9xtYm3W#+ zd8uYTa;}l5J4OC>2Q?t>iSJhDm=7qIOD~5uq<^gb@#xLQ^^6D)*#x6235<=J=96zRWi2-4Hf_f)=jw4lNMfeEo z?6Bd|V-{<<0I>eEKYat~{@NilhZo|#k3+bxdu@P1Nm6HWr2(0$1Hf)lXfOh-b>@!4 z`|levg2=XI$a2ocUr@53;@4Csc35gu1Oyv+qhg*}T3sMkYDUYU3K4A3e?IJajkhvz zXAH3PO{Wn)Fkh5dyiKZ8CI~pXxwW-aIq|uYNa?VpgOD&BN?F}c>I{RX%>((e?tIcA z7LSL_ZDd8G{J>!idvf$=$?WLAD^FIQRNWjfa0WhodG7kwlY_!_n5@kKcHR-*8yyI4 zcZFXz!Bbn#2s{eF`FtjbQPKTl&x4a6EiERQ`LT}#u}PX8$R>W5adNC-CpF65m;PF- zo*o9<(?uekf+S_SlXBWbZRgiRr|%*RfsmeH3!1}w=!yCDLwkr`oYt>#T-##VmE7N| zhgNftIRWMl!j#cv^Ja8>Y@w{oq_Oy0ep+;|c`Z`JRi}2A=m=A1uNJM^G}m7^JcsMY zJi=*RJGuLBY3hAoo!&>ySd-g~d_14Y>uVzil?AaLZ6b|hS)nyXLpQd{u{S~3kZmS zG)M~)vu}Lon{U4LU$bV-tTk&~>-Wlw&vVYXlm+h`&zTi)+{`+ZfwBUA8l#x_H_Cs-=y+rI`VvqmkV;GaG9j zE?zDkPDWFE`>WRkxVf$V>jPXib|&1P!p~RZA{(wsXFiiUV zSrzB!Lv2pZyBb3WXT;J*#rtC|7wXqshiZL=YUQKssXkKo-dEG$ltfGHh z6sx$xne)38UmswVdK5Lubvt15$0N<-i`#iJna-R$XB_Az+Vnp5+VoKO(>9(g*Kpxp zpZ8s3&a3ed`16M~xp~FEAE`plt=#zUM-kuEyZ`;9-jZCWZX@ zQ73ij-?z)+AC;|K{@r!?!#CC}|3nob@&DBYughz^ymTWfIy%RwYIl~{YnnZ$?P6MT zEKDp92-r*2)YLo^aWA;1sN3#kD>gUPq)$UnpQ`V<&@iMR8=^jZSU^B4TGFp%z%%|B z-LXs8*KXQ#$#D9d%7GpwxhqCTJeArk#(;nL8-saGx>(a8}T4CEd2e~Td(~AwW@hI8 zE!fX(YO~H2`SW8{jzyE)@#Dt_YGWUi%nc;V z&J?@OSZ`(!(wG`-QV%?GaT50*s83W@|LdPtA-XgleQzg=dD-<9N&2N8C34hpEPNr{ z`qqxDvoeK_!zbK+&GglXJ=lG;;HP_^QP!1J&%^2<(|Nm+PX$H?}#pS_QG<|b>gWgn!bJynLrNzGk4ap$}1_qOu z=Kitr10nAX6nnpf`BKUs(kqvGEbOAAODbn@mA!ZG-rVoETQS>Q?u)a%)a%z*Oc{QZ z{`;-aDV;2XYNC=j_FPMzts$4Bcgiu>U8bp8IrdGuPSOE#&rd~Gi!SLLmhe%Kk-1Nq z8VDX#(=1cyC5seE1c*blBAMo!1R(SQ9eRM=HkVM+zyZA z?(QpxBPV~{+G^}+I3V}%pnQQZQSjkH|#f}=&z`>gX0UZ{4NX>(G|HdW-aYEkKMpJ`KlxNX*}w6wJO zV7Iokv^2X?jMSZRrC1rWj{(d{iqUrz9n0yR`V!;AYj3XEI9ax8Yl2-*Wk5_l41AU5R> zgFL0$xz^?#CB?>Hp1X)|NSPmyX&0o*+orsJMRy`5NgGQr_jj~(>Q9$nvTfIgf!5sg zu|FaD9*Nd%10!x-ML(OE4;?zU`@#FZ1YKEY=e(OYZ(hl5 zEw02mr?N!2DQ%|XRfv}Ge)wC47>1+u^3vHm3vRPLA;@hZc=imAho{@t9dKjx zE02DCYn{p5pS#-+@7lRDx~$wh z7vM4ZqJpv7zukPY0<(Pl_*lU4k=9&!{JvgUUYJ?5bZEhm2V>g2|CGY#XMD`%#Bs+=;~y?M5s+7gpv`fN!qz-TCXe<6{98C zL`2#xBKGlHeto-DG-WWoRL^0sQ57*iIbOwG)p^yqq3~M^_tVtDz&8FMdh%$kudGzl z^@OKJJ4D~|e%r|+NA{i4U}LIpR|z6Ei}&*h_m+W7qbj5|7P1ORd5vGf1ev8HJmwOu z^E%hQfA`K5Id1Q?OQ*$gvs$Kx6isD|rnIS~neW%C$zJ%dt6`F_mFv5{@t~wp&ohV9 zV`F0!%rRD6&`@R!GgTZ{{r>&?e&i&ziC>>-Fu&S1#i|IRPcPHcOBb~;CCUqPQw=Z9 zu5#$F6-TNm=_aQBgq5ug{^$GQsSaI?X#x7DL}M%EQ(qgOB?s-%a?XVr}o=yI1p!&%$S76cJaKXWM0uYRAUUuZGI?`B?1ao54$S zrwi=+m5Tq46q>gc?knf!WZ^FF)mG&S5>HOE|) z{?yg7WFd~GsYiz;2T=X^^+G2-`@dV~BH+!6)INuvY?`PRjp*c=G;kbkPnBeFIgb<@ zh9n*zYF!|0Q#5v`siWHRV&3GaV{g?^v38DmFsTvo;S~0_B0F~MK%jK-o#SC<7DsKY z-F))j|Gvb`!eTP}Eif?9m-`!1^xVQsN6yvGb8U82N1q;1|Jl{mV=v(F^W6pn z?1c>*Hkdc2JRQqx9d5+u(lK$#$T3M;IY}jdM+ANM96wZ78sYE%0%%|WzfnGa{`}*v zFP|{&ldsnu=<5m5S5r_>h;s;c`L!2GP7bx}t4W0Wkq}TNlAY<7=ch9@IAx@yzG7Q9Qb!g9~_)fsWErc9nz|%JFjjy%C;`HPMpDNOo`UY}UeNd$ihRX<^0z zCDp9L{~!T>^%!`Vu&Y{K+{L;&dC}D7EE9cu{h1EWQY151;fYT?T1Czo=gytWHvUY9 zb&~fJ8n2*{Z!7-JH>iZH7EiX>%t+fndvPHqB(*MH-l8E%Rls9DPv$WvoA=wu6|2_v zmEBlHiZJ$KLQhqQMR&!c`+j~W(` zfrdIi(M3~B7G~x|05VDW^HmTu;idxs7mzE;G4$x&|x)0?bY=t%IelCts?fdAklNroD1Glzw# zCf8vnByObFrzB7BV3tWZ=S3}{RJHYx{{$` z53s~>@ZeeU$UEhQ2$=hx5Gc};kMc&xYwEw{fJjQDn0Jy!h5@_wt09_VIk|XcGF2KH zPt;x1(gsO^BG@~^b5Rr7M&^z?{@;XF-qlECR%50i(ZxT83$wiudJzYoHfI=m(Xgw0MS0COZ%E=;%ouz#lZN^*@HO&Q$-=a@FCAayplc&iRd7Inf!m#UPp$=| za)N0Q4snTB1^a@e=dmp*@toz>m`{SGT@qbF5{~9S4j;-s` z?mnZNJ{~6MM8P&2R&58wkylX(>P6Y+tpuPH&TVrHjn~XF4i5_2oO$$gnTeX`9yP?4LTzj5NjJ{xBpu8^@m zCp+A_$n`!wKV8RqEng=bGen7siV~XWt)6M=_%qfeJlvAQv#19sfxLRH+Q_i_6E<6S ze_LU0(-@|WU91>O?M%Ld{%&kP>dwx6`$9V%o{M^xu&}dNUIU8THyTNX`TO;{3YLC9VplB%7u^_8BLVRNR@@(r;$iUxo}T#zNZ z@==9~+dKS3<|=m5(Dcmye8A1Mw+{PS7zI51t@qY_MhkyuW+s7}#M;QMT3%UMSeoQ+ zHv09(odFY1zLkh#-uo@XP+}InM<vRekHxF`f)uQhwvK|O?i|6qS z)t);)6(`P;!)$8(k5ba?-^A+*3Fhfs@j--nT?GtT-!ST z{b1JVg>R_XW;&&Hu@RoP)^0xWWd%my0!%8LW8N?>@L^;6t^V>_K#=t6HUy!IyNQ&X z+%&IQ?Yp{SSEqFTLZERxtV&!{<3=Ed#%oAgu0MbN6tcCo4JT0@?l%5WR+J-)qI-bP zJP7l`F4hK;z?JMiV8dzlC4hIHqooRHdxh{1GjrOQ#KEc0LzMop`I)v6H(J-x+S08$ z&S~?cZZzdwLdgsV6r?n!>yN71jC{{uUS2{PeC%4GaO}9(w(D%9BBT!!?!-D*8|4-| zHr~fGRwh^pDV*nfKHCEA8~YV2Rtz9C@wnNDE@`tmRn+}#V94n9G~L2UR7+RiT8!Ek z@uQlob~HN0dF&_2@l72%g^sDu<>H%EXr)n_JzqU6cK9d_i^#}q$SXGY| zFrxRU!={~_tdrM&WexrZjjPSYa3RgD!jt|hSFPeMxT8MWUR>eekWLclsWQjICc|8!npp$vSrs zGh~iFbqj;glgsQTatKgvLINPS8s#j`jD62Ckq4!*r`+>0p(W5c2ch(Hqa8$1;c4|0 z6trS36tM66!B+_ihf*-zV&U7hftor1?fv3R>5`Glvnnr4$S*#n!4`}3V5Tm z8^-2Zm0AvUh3ufAiS<6!gnu?v*xs5J^A?1-~!W zlk|T3s6U6*J?!~pzjA-HPL`6>?0Ap)x0jKa@n2IewM8z-@LcJM4(dq&2zrN2>G;f< z`p2yXm4q1lB>Wf%q8bD@)POP)-qVY{*kNI>g=>&DV*yKs%5Ih07Kf^po=CY6!WCTC zU!R)WPI+$|U-f0sW07xYs5vXMbr|=&9M_co!FQkjW_A-Egej{#@!F}FWg(&#c^vAb6A&mq|eFKSKwt|2ny^f*Eq2j`kfioNBYgc*u6ee*+Feq~~GkX%(cbtk@g3ZRN4|UUfG?m9bzC?6WC4UN=YUxE})z zyWBa$u9_qjKmZEZ%wSGUCGu6!iE(IPRFqmm8~`)YA6}v?Y!sJ}pjaI^ZO2qMj#}pG z{?s8~XK&+=^&2z)h5l?Nd^m$FK95+Htamo2co6=Wy!nQIsrgPOSjh-BHA6g zE4GWDKYv9-cJ|FFW-~Of;2BG-3;N?W`5AfF_4Dq&Aums@^97Uz5DmLkM~QBF@pOxL z{DD~Rk>_cqHBtBP-aRJ3)F0M>)u+36f0BZd*Z`o{Z7rX!=l1w4xPIqCT9lT@V!65gC@-#AhQK!2bkOO{f4jhn)$|I zr)&?26`ehMR^aN7GVyfZezF?C60Xdmu}g9Bak=Rw?tjfu^XE#J{)(cbk~pfBtw8!n zgi95J*wYh6MFR67uKKkY-RCDao5B30mxDPvp<8`K_;PT2qP*xRq6Y1COa3(^!odk$ zXZMmFw6F3ftFNbIr#{fkHhqMMoC0K^FdxeLY0#^Qu#^iEh(+8Yon8citOXQJnI2+e zvzohPX=xc(U7a>mG}7U@R7`Lo7OHJf_%o-bU831L+9TSvA#@d$f3N2E>J9O9R9DLb zrREJS))C5!0*;>VmL7|QEx*EP>lupA9d26b3u@hwe8e31tq|_`vI8O zTe7q#N^1*ufqT}J7oG}wWz&%cBw~j7EFgiDdF3NVi@w@^VT#IdYwiqtsIcp+XZ%)_ zn%)@Cv)ZK|?r|Gq;x=yFSO>;Fp83M#E3WQQVC&4$MN>dp6zvXo6bQ3BwI2!99~*y! z&!ER(_ff4FKzeiZq`C;%^~DVxN!18u{#O)F!h!#g#P2R>#j(q zt3!6;;VcO)(V)m}qT`hUEUv?qrjV@qkppWH!|6y`i4ZYp-92k{hkmW2<*2rd>GDGP zG3D%guIXC*E#dYM*A9;oqz#Id-@cP0_a%jv*-J7HpxmUk4YZYczFgmXG%-x zG!JdsHK+U;aT)C)4*;x!u7`qzHNNuA!-+B(o|gb*c+xq#!)ljt=+xZ}X+(Fr=Hpob^9 zop1+ve+}h~rW`t6UcNO_y5zxU{au5*==aS-hYod*j;2G47)(wtsr+5^AT^zpP3#T7 zu3EeIbD@)hGC{1D=S_j~I8;-$RA<^<(~YacQ;~=-D2?beL1}sO_AQ_7&v&v1s(nX= zX$wbmhj@AnMs=YSOf{QC^g~rp0Tq`G<{B4hu<$*b+nSn?kRVIz7II?o%!(IR8E>p9 zV>vG&QQ0+?0EwjF*E0()?Io00MeG7~1Ef{=fbOX(Q(R?oexiDxSi{V4YrN}dag&8U zf~#Wkix_SDLDq$)mR0MvB!G~RnC-8NFZMXbfi020Q%=@X{K0Os z@$QeL!?e{Q0R{dq4MobLCEE*fqZBnDHYTPId17iV zMYlJ-a+x2%UDx}cr%+@C+gj!!4=@JpM!; zk$di3Gt+BsTi8Y-3>*yMDF-0o)qyDO=A&j8zOzv>M%QvcNi9v2w&YcRbP1RSa0;Hf zCw@`Wu$y87fbrL(pAdGPmKtZU+JU-(P$FobC;?;dX_xoMjdctajZ)96in%$|)9OLo zCZkL%Vr!m@`;kcv z3>J7~RQuyOQgsW}uzm8b)N=FmN1P7%Ynuq_SRl_|l4BBJh=IurKO{G<-A!9(G7slo6jrfHYv9GnzMl@-$fVWjKH%~%a zZxWQ>HnPc97uofhkc-_NPb`QE$Rj?N@$L%`7X^Uh!cMe>Fy)xlNsxw8M(*PCQ;L#) z3=NZSF}iW0%3Z}&ymCupg&XG^F@K*2`5W#l&O_U zy>)9f?+1hp`>|sRxGsOdQ&8nIl+s%Lj!DJcy}8nbZQ*8;$w&b$NOS7waVJj9p9l+Q zEI2k+1FVeIwgB_0=Q;X-yTrfE`edA5EDOt*bnq@GinH_pgR)Jk8PXF41s#XJf}s-t^lI&`0-AOPrrT!Ptj=Ifmt1+(D`Aoepi^ z0+liq#GrF32ReH`lP~+RyNFyD5Y(w67-wi$yS(sEN473IHl<&#*1cdZ!sSg*-4qrg-H2JQoCQ~S4`8`k3qA}&; z@0r@sfq`Uz^F%b0`p_K-FFwjAt{ea%An{?)Qj}= z3s9B&&@6nIIwaUMHCgSyai=u8;Gn9W%E=Kox%i2II(Dc;iI`A}#rfI2Elsn>0mUn= zb1eV?C7RLG1@`CkE2XF<6TQG4jT7OEpUaut5nS&y^i2^wWA)^-fvcx7CvP3Ne$#uq z29?{nD_3F|+$R+Qtt|xH{=7u$d=Vx7faGtje7jiCxv`KA_f4TkNZl&(=ZyE(18R^c zNW)DaId}1-(j5n8#9ItWGZAj%_XuTrIj9WTCfj+;fY=)d4}SC3ttrr!$vW88AWX)p z^b?h0d9VIB z(I%tUQMvQ3Jyrz_!CR}*I*1ZA7W$|X4H!lgG}Etr3BWIMME4D~DS3MNU@M{$NlJ?F z679vVQy*C(5-z{JqgQtVc~6gsIHbb|j^y&XbBFF;8vadM=5Ihm^YK)jd?lz0A8W^6 znbw>`+e?OPPegL)4Ra{rGz<*km#?Tos-JqZk-IO_n?VVQoWud?NeRQQUJRi65xMWy zRuKfMIvQl?;sQX6gM_mnVm*O$s3jl9%HO@)b66LnPD1{@_~h7GLN7z?15F(&E675W zG;A_HbRa~b0_8J@o2V939Kig1NeF4+w`WG>YKWIVK!itB(`UfJz_Zq}JY<&FZl;UD zjA$a&gnTw82+;xhx5LQy+51Z)!7atEXqN|%LN@#?)%Wm#s2-lFf!HY;wQZyWfP*8^ zT@rOi04(C0H*b8_Wbg!rSu}bP{(w{*Xc~75oJP}#%#UUp;|_+t6AKn1$!WBmxI=i6 zG12N>Bz!mM-Dq?kx=@<3j|cPuVKtz~cfhVolzn{&pbhKb~uhv`Slg;H=_1D)On z9y5`A+AI)G!=bh(dhUx85~j(lgAFubLS~Un@>tti5dsWx0U=BLstoG>PB4cz14Rl^ z8$hH)2P6dqbR&!!Cv*)@2m-i8gQX|j6Y^&7!F|PF31ks*pX-CTK!`4)-jQh+o&SAnEG!mqGWG?D^oNSo(Esm4Xo@40;-^N83s{q^bT2h(t9s7XMndnMKa_nFQA8KdJd_Cdjp zM@j5QHkv7TpjCjCVq;~M0zRwyy)h!_)t*soJ3ix2doG3vsFF$!l2au{YP;`Vo(~qq zX{6Ujhfd-)$8lKe{f7_cbCdmO)odP*4$MHu*mu|)bA?8t9_$-gCB3=__(U{n&RNu# z8Yq@%HKlWq3rPFWRKEsFDVR>W!5WQJwYIBoH`58&C*T`_my0usf}p&bgu6(f(VTw9 z@HIj4FmYOtx{5m1mveU!cTC4qn%2fhgZfh?eFkEL!mJ4KCl>cIM;d%~`dS=d5*X1b zw9R^s1;&ml=w67fjZjV`09hqbiRhpJPft5X9>DTZ3z=&2J*~bepb??iu&o|lmN7<8 zM#2%#I{>ln5!M2;g#?yH_7$F^p2*!O&}^KXvg9f+FTeHKk^(*vc}h6CceGMLjSf7A3>+>GU z0)Ii8D{A*#az_NoA}K0Bvh#JY`VvBt(f!>=lR#E#fQx=b)H7m3gXl>JJ6rGa7cUqI z;|p9;4`)&^R>&eP|HxYbEu_9=vb}&g&ch}Gf{KtcQ(wil>e>gXIMNH)SM0g`q`6Jv z0QP_S#3W=^1qgoxzLJKRJSMu%XPt5{iDpS=65aV=PLp0BCXfUtM0bj==Yw5rQBWOB zq4j8$xaE^x%-??-@s*(jDWtVIALOXr8Q%ZpK(R~4>c>I+KWE^uswbWr$d=@Ch24MQ z#xNv%7Y!WAlB9LRsu@v)En8ouA}@D47V@MtIiE(*ImGo`e8#JoZ`YGKS#Z*#Q5I3! zfD-v4MBhUbvsX`qPVk<8RaRb*DXe-4V2(DE_wt+7q&TD2S>G95tNwGOaI~@F(cv86 zZB&P&RZUZ*vmpf*O;Rej?y9b_Js%e#k|%>cB}HipDqe+gRw9Jg0tiAd(A>K4K{?C# zBGJByosifEAixK6>$h9nH@mlkc@mPoDdLII;)hlZ~#Ice3Myoe~Iw5Y5MBI+pgRzaWinoHNN0&Po7iz6U ztaSj%gc(#nsP*TNXx6HK7hatF|tBxBrt_oj*zGG_p`at z5X<)UgO*py2dK5B=UOdl2^V3KsaJK5bcnTNzCD5w~k}JAAZ9^@=or z*|P3z+8YJ&O*#O!rC9Ly0{}k?uoV+iB{8~?9wE{8@TfoWjpyB$c(^~2R0IM=F;HUA zhJ{Re8D$aR3*!sv)}dQUhY2`TI*%Y^dC_$G(hI6#APqlW--50_2~09bxOp;@uw9ah zp7Iu}RSrQn3a-;W@SI98RqoomHxbAy85ka>${S4m_&&*!1Ouw;xh!jOudG@pf4|)t zx?gyl8m3Yzss zprP^Q?j`jH8^%{4Sv_41?OFXljvyIcT+|1>cKU5pRQa68k1O(rUW9!D@PC5Bi6jxQ zYy0+t;N`m}6qmhK(gKu8)(t7=u9I^D*EbN;H^FWYimQKr1BUkD?jv>p%FwS+8<LbP0LAjQ}lPJQ5(bHSrBtUg$k@RMe^RS>Y#J!R&2dx|0j>C_#6#%p{0U07{kh&(= zRi50n5kMpyk&=}qj?k%hJLRu956wT)62HG|jDmbmX+gFIQ$tAUA_=3&ABRW|xEc(arE1vGH5k5FNs`WB3G*MWQ3ivhz z$Ut?$N29w}!eRy04~|#XZAq9Ux>nScK&Cd2zr%!}BlyUv!(APgf+pe*0(-!L-hsG5 znLe8541gDHcyipZK3!jwP$a0ZbjJ;D@AY1_^Ir&65+fRVYlIEG($%Xki84pTBrp(! zHzDyz2ni@d#7u=M6nJ^Fzx~GDoCIzIG9*KIFa^${rlvNSTTN9KPn=bPP9sHqUFc{j zXyUnD)L)-4s_a88Eurf?c;MwTdMwJBvrg!qkgO8{^a*|L2sK}LTHo2nw3?;LmmFEr|dz994ojKK*YJ+#mmGl<`R!!BrLkGUd}3}Gz^2lMsC z*$}I`Gjc{V0?$U^U?WE~7@U9HNZx;tx^U=K&7VKc*tar-Cq!5}fG8ew@k?eev_dU@ z3Y{}l1=eN434-IuL~58|)!KCgUfU+pNU3-N*qG127_og>3*DRRugEXFAZ=KW!w^`Le+sTq9_zN9f5I`T-u2 z1ST5)MpTC>IGDk&*b(mA0p(BV;eIc1$5ztz0;zIn?EGWr z)@@~|2bZ1cOju>y2`K0VA~tGl=Zv zlSx22x`nTxb0#>gcZmS&fd|e6m3Fm8AiZQR2`;Zx{9VZkPkuSMJ}%fR{)DxA&ke7Y zY?w=AEoD$Xz9)c7fp#nq`cFkn(2wsyVVc)uSYZFS#3HL9!8A?Us zrYZSwA(w`q=Q|ykttQW*9a6yp7nkf=mER-N(g(o0+&_Y~bJ>Q7z=M-z2FYI!e+xNK zL)bYKI%ZHVXeW+wzmYg-$8432s1pF_MP}siD?f~X6dcJDLlV)~yS+(A$#@|a-8&mR zmLLz1Lyw5xd2_><$5UtGkU4-C zr)n>76L&vas6aF(AT0XhjlI`O$!L$-;dhiyFWPLlq>3lL2qFXI9FY&VbTp;9Bp`7q z@(dy5EcvzXtU1y3^XG|qbN@6n&wC}bb(2K=cdFM))Lo1a(IpOi!o&bd>V3wFV9&r= zr$E>i1f>lW18Zp|NUY=t3#yr3+Y7}6osSN@IP>A*;el>eLK9$*n6#mKu`)9LNc!OO zhDdYm{MvFJ`S#*V{_ClH#r!oV<3@}(u2Ci zR|zq^F-^OD)h)heu+s+FA z7#aCIyV0Xhd>40o!s)*?jZiXTk#)^F-*^!?NwfhRW=q7;oq(AC^r}1qTS0gb;sg*e z0Vh`m5u=U3+zoJ@W^GxqM#r(0_)F4B9wM2P6guK126ac815NMiE4c)%c%hLfDk|zN z0c^&hAA+atem7Ox{UJR`9ASt??_!GHf_TzB{&cP*)DIXip22MjWmq|2JvG8pkw%rA z7$atGvJUt?#drT|ySLz3vf+UyjCg>3-`9iW2gsU_mN+BW-vdNy?1($Gs4;OHm*GsB8$B(Y+TPV=uXZa|1k z0DxA8UR!_|j3R*#-(rf`nH3>z{Mf}2?0kHxA>ougR#w($<;sbUn`u8>4b<_eKpRS zofns@6t#`|9p(F`>A!uxV7^|$-DU5-?oEl(|K|Sx*9Uf&ACWxa?02X+DTJXtazp~f ztscdZTWbcJzg7$f0?0oABoUL#n8?4Kl*W&5eS?(+j*e5C=>^DPMio$)MDKt<+DJ>3 zjZK=6RyZ=0cK7aGoo1HhyOlLatmHTl3Nt8?yg=(G<8RU`z&(XCd-Jk`O*n=`&Se4+ z&}`f0&+!*sF8<`T%zxTKrGDgJ6|Vz|u?W&kRU{mf2OV4NFwW_VeAR#>4@}Z$J=7YK_ZVA7U(KVl z+EsD!zr`GvXim+fhT_#nWtH(z^$0g~*>)-~?-Vq|N|tG}tY){xLo7Yk&p*ofS*kr? zC_LCA#oy-X?vO69;iDYAK$xkejVN7u#Nz$H-i}VKLiy))2mZ=gw1q3{RX|-92gIik#S%<&TOSO zGoZ_oZC`afy;tP{Ym#?s)3H~{w`m)4g75cE`Y&&gWAqzR+=j?8R#+Ly5j=994ICa4 zRsg`z5ouB%DudXfvDI~8s~rZeEZHK3)$y%4&oDwtQ!;hiCm{hufKmpzYA>v=#s z*5YAvMl5|etbC}&mb3j^c(G%tN2{lnpIgDlWW9(Z!A!Btb@$iI_TLMQ>aj6QJxU(s z%;GuhahQe!iJ=dcjeg{86!ph|-Nv#rg2>(}jY|PE02F?p-OVjM(bkc(%ndQpJHdFf zT=@GgwwYeeYpw1=9eaUgLR8fqy4KwHY6?n~o=$DwY&rF!AI~RRN!AAFc+0W$*XQqY zUu-?7%D$J=MQA)rbE?+LLAB5=W7FSt zwoa7{Mo;BM$4A$fe#JETaYl-ZY42&33(-zb`0rdHjE<#Q9;<<}JW@9h{gTQ&Ox57GRRG3#wbz?Ph<1hL^0AErM$RGGJh zFO8g;t?ICyqf{xX?w!q1+`XMHf$wcAdqsrczeOM4vVoJ47IW3W8Yn8CjBT22hZC%B_Vof)uZmrFNs^U#pYyXLNcU)Wyl;Q`u=R4wlhHGDOSla0tKKCK4Q}qXG;R;UD?x1;@@aK-OSsV$3s-$$~|yagXNPxU@>4wI7NA5huA zog{a>XPj4#eErO#nlq)PO!b$PLskFut|x4_)uZ(5DhHY-OJf>oOX+L#Vq5vFKI=&< z*(F{0D3^Qa!rFZf_t(z#KT{H)5K{YhiL)y=RxmqCCNa@`Bj1;Ndw-zjWmHBnrD;Rk zZ0C}FRja5=gZAkZ-=vT&`M>+gm#Cz`wRF?DW-15xtoi&%agZ)H`)5X@jBNq4G|SEa zKGP4BsnAz)XBYXU13nwnRJ9q{>o#2F5nFy0#h-1ImNQ%#g0(v|yj-X|dvN4dJa_}& zE1WqAAJ(~G+pFZ0saZNyS13BvIJ!=5pOIDcg=DpS0~b0Da_cfDFf4W(l-Flf8)TSD zB`4__t&?XS2x+rzvHOz}lilP{6`4gDd^jgTFPbc_mdq?~xP03u-r@ZI7iuLh(HO2) zdstMLd!uRkWi`Lq>kn_WriV^Mr`QJXn42&8=#9t_0#3^x?Y^@UoMPY#?E^vT@udIjD0aXL*-pGvZquiw18dbj_DpY(~;TV8&w zHs%uyS{Zw8?9hNmd)Oup?{yYcompD*<=e@MXfJ&WbWje_pq*M6%Ra{z(s+O@oSe1M>2iZ%+-&Wr<}omWvu&Z$LWM!FANuL*}D9ljeSn;EsuuAkUCQScb29q zQX9F zRig6|yO(UwdoBesN@r@s3`SqzNLeo}vpg^hvPAv^c2$oC)YhXyeKg2mO_EK>2>WTD ztRi*2eaY5Oz4#Hm#Xt!^&J+oe@32mi$!2`r8N@_$_=YOu>OYz}BZ<>?1;P@|zBcm- zqfYaOn_P@iEzYyX9a7#z=HZ8VbnfQvm48b&a5k2)pPIK+n{8ffwN~TP;mAF3GHzE3 zz1+g9rEHP?_1|I$iB9$6H%Z$oUG0*XGS;fC;E$9PP9HAsU5M0ojHpNU@XhSYj2viu zVW8(t-nv7zhN0Mskv7J!jCwTgfXld!iQV|* zoW>t}3xygEO}-h=b(52Cj?zsuL`Z0699pDnc~t-iviBhQ_?a6d3$1Znr@Ve+A%*7c zF5M$49i#J-0o_s#gTJ3Lwdv%hG|@xez@KJGn|&2)09R&PIjJYJp3zgwD#g1!c`Vw} z@~z$FQ(9>IyyAiRJV~RsH<_e8)RO1)X%m0@pUHYd0OWPIdx+1C1bEzKId$lWSD!RzNUwm+(zJnOt+!(?5pq?Su?gNsML z$2XUA$f=5r`~}&E-rkz{w`djWeYRLMtJS;XcXAE4$h@Cg_~Pl~kg23&Z3SdC);9Qb z|6X$8Km3&MXSk%Uo}$@N(SQ5G-|nTfi57-q3+ltCZRJGgL%#;ZkTRwcuw9dU{Hh4~ z_)9@08oF*9$2}D$?2lQa@|Oe?mOh^{3Tj}}m(>^jKCq*DdGg>O8Kv~5gM5IcKr>tX2@x8FYPT2r}S zj>IOJDqR0qLvC>0WqD38hq~(@86pDB_vyBL3JQSN~4c5=-i&E#VO-hz&8=%-eUVnZu!MV zXCl!}Rz$v22@zsoyS-hb!sx~#|5Vb>sBhm)n=Sd71$CdzR*ATem#&&~uzAk(@z8@g z{?wR(Sh0%_moq^c1G!r>ePY17UFUQhR`4fVr|3%j?b_impCT5JJ=1-9&73yh&tK1u zNG`)E^{v9zjNaHtOo@9oaOxQ0;PmKL%Wl=iu~fd615R?K!=gq(sz+&}c8F_EE>rWb z&-(4Fh+LAml(BaAxL*I)Ge_I(WH03I=c#OI;7r}Rj*tI1I~jL{E)w&8nFBYLcSh04 zSp8M>rvs4!GwedPM93Aq;~}47T#78;+^s-a`GD``r8`kKJdzZDm9F_-wVNX<*mE&@ zI(^|%Py;J{(#%?3-h)K1p{k&t%)7BaQ}8)*Q`Cy*a>qL8FS28`AC-4KVj4bW+;q~D zArL>mH#mNJ`3rd`$QNX!D^%E%9;2LQmXVt%)Y-&vQl*$THGO zHD^Mt3tz3YB6E4Bghcbf!ncVEjiopJlC;>*zh1%bJ4-2K`gr(b&vb%Bzd}RmHe>6n z-&vuA{=oBPZsyPXJr&)!gIp@+}aTkc0^*ifH#Yg^>vnH--zzHDCn$>KKC4^;;f*7Jyw1bzKMR1@aq=3D8N8)qfXo4z2$5TL|2^Q8Jn?L)({ zfA7os!%1l)%Pkj7y_r{V6Jr&HH>EE}xU08#&Y_x(M%d{{Vt3_YqTK z)7>h%JI_iUm{lLPdq4R$ZRgzOrVThYSJbgvThFFVv7@_!jEQkG>bUoi?7{OQC%e*) z=(UO&Tlu%WJ~T@H(QREZcFvCd0QPq5kv~}JOzZAjl{>s0O!m$E&=gc(m0SK~58-UC zzwyyK=`Ut>_~rcPEvqW{P@AHZ4lbn*zUu$6*Zps=?Z20R$&!g#fhxqtby9h~;tSrp zoRMoEG5ZW}_4porQf;Jm8AV+dpI1G4=$+4R@(8=mkvW%=lGA3nyIq5|;?TKO!B2iF z<+7FT!A72J%{rNIrG{$fVKSi#8U%1Lx%8oCaToU#&dmZ*BQpRcm=_L{`AS2pmxAuHxzO;)Td z{L^|)Mh^C1&ZwQ!SK5}wMkSs`G(^#Jw{ePE-^9nLew-i|#cCzVn!aehOeK;|ng=^8 z7nkp5tsV0&vTsYjrNpR&oReODv0UD!9U5o09P`>%QDD#;#?dLhib>igeNOxJ3Nxo8 zoIh>q!agUnq9vmtgZd4^xnf1(;b6AgWi$!9w?|cWzMiwIyDS}0HC*%Y_AXuR#Jsd* zI%_+7@+5AXg>4wu?a14B@TxdUNm7ISE528L<%0E-J)=QEKTrHij3xKOPhR!XvG)5C zOVsv!M)#H<^#_~=lRuj|v1e<=xN51Z`ksh1zC)l&*}AV2YtxVi*rZdiV{U#uBkGX< zs_0?3bnRl^wSXAWEn$jRK3@8_u(+B!d;24HX&+47jRy0YR`&td;2erk@P4_tU1U6f zNje#~yR)}z9K7*dqO4(Cw@F<{=tI-NPUq+pi-qxmVh{0u%Xw)nd5hm{a2Q6e%JdoIgChL3! zD2etO~&Zhu_4hYPe#P&XV zux56!ZE^Fi{bl(C!S7;nd%KRzdg9kJjioC;)h0=xBk&EX>v_ZkDz2t-xEz~008GZS z{iG;f|9*bu#=LWAKhN#CvF1sfrH229b_T=cmIshENRJ@^V_t$eVikPRdDAiAL55P?^O__%{NGD9mCI=e8EW$r22iM0)gV1fas*$Tn zsMuvDyT)>*10=YLwB{kLO44kwIbEMA=UB+kEpC7sr>_?8uKpd=tJ)gYMhuC%? zNT})P=)_HVE-g4MzbL0B+MCESIQwML_cf9ngHkkso~wmJ@p|r4s^l8veKmTNer8C` zPA(1_vl1L7+E>ADJ?c7@tWW zUDeYX_F?i*8n0a8Vby~-_#;H+y7f<6Mf=~Jx18&4S~WMD9w?#N5f@y4g#FFC1nMpS zjXe#CXfgG;yZyA-N{$F3RKjWsMX|W@?c29GIEF17L0$+4ev@5nA&_Nh@Ef%0Ym|}v zUPzx7v$L~kv`mSo8uqtWhTwBAyoxZq!{Iw2dsA#$dC9ac?w!uV^}iqMe___QS8h17 z;LffZUmYIIG%WP=P{`Y~m+y`R9_G;aAL0d4dl9@tl6YBKEnXRrJl<1ff%gm%0$T**Dheow^`Sn>WgFI~A7*4lR;C^j<@i=u02 zH!BQzZT)fo>;ECA5G|q3Q2ezxhW}quXe*IIeKKX#lT_H!Yt(2Polfni;Jg+wWcI<( z6tetcH5hA}peSdBl|kJQ@q84R#`)#lu6QKS`)k&9KQKJMh+)UhzmU2fLD=SM?!`J* z3!T`Qg2wbq1}d`$AmaS*`U)6x+Lw1-ML@;Bz)=BHNU0J}@d_*Kc2$^*Wh3xj5aNPy z2_~MO4^pe4BjW@I06@9`>`M%OEKXY)BeDda2gH13v@1K~QCp&B7QBAT*I!~LIkR6i z-Lr=Cj-<|2{mV@{Yl}z!Z*#Z-xoL@t2y zNE(VEjNgIw(1{@zUx0wm6StZHCzI3$J#P)+jYG???IJ=RdBqZO#>4P?AFnnUD8d;G zV#XkDDRR()UB9G=yzdZ)K3J;#szZ*i+{n7;=Dd|a;FGAtWT$;bM)%hokKKm5|2{rh zGC^M6n2a|$Jr&_M`SN^|5st;E!0XIiP>KV62y?EcpBxFbJ4tamcLq(bPQuFhlxOn` z9RaA{lG2G>IjNdjm&Ny7CQ14aHKn7B=8w(l-Sj$)q892|KKvq{(HX_&<+g3Y*KX}k zB!{^%?5%KB>fD&*dx_M%i}UQFnNyQy@x*O_MP}(69%_84bX=hgc8T$%KIYx;b6=&- zc(6G!Y6ZVQ_L&vRaT@-dyZ<-V-UOV=w*42riIN_gNQhL(6bVEe|+D!k7MtSSI_%At?qT-*L_{*@H@}n z@3j82(QZ6;e7|+(kshTdG{j2eA-y`<2cE)DBq?a5drn>~o-Ah^bE;s){l;Zfd1VgZ+w{su9`D^dV;JXy#n)ALRJ?{S`yd0Io=+Y(^$^ol|>t3E40(JYVd9gIaE zH-52)+K{9Y1^yglq?_54zlx^H`N}5YhklIDEhDGWz|h=m=gJrNAA3c*7XrE1ixf0o zkh|^s>6n{z187~Yk4nAmQ55xR4MhcY00@77O=1~H!m__R=Rj%&ZGAA>9g)a0A^$A> z4Z?4@%RtS?Y=#!5TEFED|0sr6o z<^g;NeR<224e*wK7ByjGd8IJi7Qxv{c+iPYZafd0iJ`-l<#u;RyE zdkR~ADlpz|q`8Pa;k?SDKydqzFjUp5E8c6Me*I!Q1=^L(D{u#&X}0Gmc#b&l34g*4 zsnGo!Vt^Ayv(8G~RPmMiqYYbxT^>buqb7@Wx9t@Fc#;8{#)HwRbFqH>9EWDJucUXUV>_&+qA^XVWYz-B1Ht#;dNAb7rG7E<* zLlgq11~8>3OqBRrEaI$cj)MoYAb3uiiE{Lq${X<@o(t(CAg^4=dE#>m69tJyn|%Ro zRq4>?wK6z25iil=%pdpuCM}36H)JkT*ee&n!I6CnZ3Mjd>Qq#pyLN+eFp{41y<_&7u)VmG9HCf>S3T{p=1%ZUhf->Gh^NWFkc>7Lm31%oGmE=c z6P{>Lz=aHHs^N7UB0RZB!Qx52I^g!_3Zax)(l#=RYM(|%xb#kB3W+CrY1C<%0dxXl z|6t?_4_|JfqRQa>vZ|bZNau+)4?V_zKMSc&Je&@eGKqom(w|nxtnK_ux1LAaOIQ;3 zJ>KyJ9koRS)NIbds<^1b25{#NpdYB6k!*=W=A-WB#JydgBZr;1pc4QOnZZzM08N@h z;(U?1&Usj z%%e@2(feQ(P9VIY;K6Qk{Ti~qJ7h1F%OpQbVD*oeg@a{DjCv@^A;S^;w5@DPd~?lW zkZW<(S@yIkd3r_FN*12x103zZ=$_5zqiKQvy_kz{(R?q1EbjBXr9lo0j*+gQlRQk|zqF^h- z= ziE!}d?OMhwWP3hE&R8fD@BE*gH>;xk#7qV(FBU^P;n?+B^WoI5HJhYtjfW@KoYc%6 zF2nufZy~6Y3aoF>Nnv~JPfc#YSXAWq$bpE`>h;TaYKDjyZJz>y8d#*B!x!I$ybPOv zn0fGocdDzsxzA*D(%NleL+d@c&~^hf&$|LDQTJMOM-tmE*WLXNE=6=N$F*wD?1iZoPE`CpzZ zem$yHrvDADi0PxW`eY>}wUDW*u_Wg`Tv{uucyl;}U9*ms^7HAud-@xY}0 z9zy|(8=XH=7S@ldo@KA(q8jef9y3J=snlF(S6r=1EV1AfP9ovV@(95&`@rzyH=wvS zvC3Og-D(hQl45b1xLJmMz(VUs)_gn%9r!d_5CVV~?uGXvrw@Sf>cG)_D!4^g^cc<0 zHs)yRrBxU)a!mmHZM11mU?eX4@B5GPb1`8rw!qJSL z0$^(Fp3%dXB;LuFsLXv9UU$W9uU~_^AjTT_dOW%X>%BY>8(@>9o1M{}Up!ci9rRgo zTRK@bF?{UtJ!Y0xuyh=z=(P^Jl}ANRnZZd&Nb}0CE=sJcx~Rqf2OZzk0L zFv@i?zHhGuQK9#c9&DVHe0GF^xX^=_+4r5vI%zMs8Z73>@Qt4NoF*cg<}qDDOQU)2 z9TD9KAL?M-Q^@jd2=EsGaEA%~eLP7adsL?@nYKYiD^W$`7D4l{clQMmRJ9qsvH12j z&mTw16L6D;tw1AP>i;R>oGB+kALPmc*0&ptk-J>CV^Igffc|-vs#H@O||`f2Q5cGW)Ab z`#JV47EOiGIcSB~w!dkHwHR)jc)UwLyma>w*r+UN-a?^TIWCQ(E5hz>9?s zz#S5jKlC2g^6J145=I%^j84F9bbnx$(c5C_)8dGm+CQ~6< zQC$8S_J7@tkEh_}&hiETQiql2m_0PLzqKW2zJA3l$V}d!TRyXmxCw@Bvn}^ve?-HY z8jRps!pPQAlo@wiMnV{~h!g#|hM|iO^6|~PNVanyF1?PESo2;`#}OJ&4i2QoFrUw807krgmy%(%4_h zQybnN1bh%SGG2WCVvMNq0F$vv4h<0;q_Kfx%X>=Fmkh0O9S!VnHZlEfz_*^CHCNc{ zM8CIXaxaex9d`E8LI3z4Ia0}N{(#wf3udR^aLlkLTBc^DVCc^I-^91xtKEQ}R-%kU z{k6&ej}t!20+1lOIm~ zW|u>bwCXKI_ANU!r~vo_NQVIai4>)Q_tLqsx^N*!%4gXQk(EGXSRMYk2+Yq+=tBfb zS6Hwp;>sa}4|2B;BwmF+eAhg|p65yQ(3hHgq7w-+6C~ zWgxOR$el&SZ_u_->?P{Ln09YViVf4 z7|vTfK=KK|3(`bARES9dT45GqaxraXbYGOi=3JcLo`(8oc;biS`zfDgm#WwCSeA5{ z$@umA%qKW_jmRfuLwO~~zryI*TauwB_Z^(&zXM&m_aCbR54s;%7^xpbfS?APzo-{m z(1gr}1I7swMnJ@1q!@^Jfly;&CHP8S#v31p;%Off(m#FrRJD&rWhFx0z%MD_d`1ka8JY}0h|#ia;uLL+*XAT6O6cY z-bk4o+eewY;llgk*ZInjBdaUyjET^Rb$gpV|IV(BZjsbu({vXJtM)Xnj{OB3@rj%Z zv4CpF;0aU-^H*znYOy9-4Ik5U8;`QpEyI zDhrX)JL~|EgiE_rW5Zd{jKvMP#e#`L*Mrro{AOE6B=|j(N{^4I+=KH;PQEu=To6bB zhzkz{_hitk519wG2w#w{`rHpln-D{HCt*ma;8@&ii~tuO+} zv{Mvmk$@|(2jrfj;R;Bs9|;EleN+yFD?*T31<+W=el;)fLH^ZvM_3zr8=uyC`GlMF z(*)9_4P-mP0*1FuM2!~!e~~~am_u`>RN#bE6^~GbpFg3W_C7^{PLPy zn`fKt6=Dvnd&l@Dv(NDDJqV3tlJYZzMnGU3Kyz~F!}hTEa(rjf^ykakjr@n6q0Km zUa#N?zk1+@k%Y#Df)N8#)tJ@9Av4Ian_!~6#G zq6WekukVV}*2$BLx>>7N~BH7cak}0n|$R^)IVHjzP7` zU^A}!oKVkKVP~~ndVhGw=<>YOebxj#Hl8xE5t{qZnh#Gc9&w}Y3K(ow6wC}QS?Q@u zFzE1?2EH@Mvq)(XIz{tF@u?-v_82)2pS2^eadS`+SPxoG{@d6M^`Zmq* z4FS2&5PsCHKnL_GAksy#0t6j$Or&%A957}<`0Ky39dv;}#ZcOv7^XE&MGL6*cFSoa*zZ4bXFK{XRNZ`vTE0?M)kvgoh^xMjq)psf1- zdJ7;j_Yp=ZhU?HfQ7h$hxBd?OL)ZzXg5E!Ff-IM_4QNuphDZTQ86vFCFD!ILs7m7I zTlX{qn!pAz8u{0pzG&U0&J$1wBqW~+d_Q%sae!t{0sR>^yi4ziXc*$;AkHGlV}U*k zRFbrE4MikYMQc*hmZ-XRI@R!1cdtrIB$R z&f^)H)RuIYzBH(nmW@+~cSd8p_-^5od6+~h@RaDcr9e-(`p@@AnHniUZ$p`EUEE%U z12ATV#veV;=VUyRe1`8UM;f=iayCuc)g_ZPopESuK|rROFxn)Lv4~{=EP*E?Zfq`)% z%GmS#B0U}ezHL7Dnv33IZ{estQ+fv)ch8}2HhleU*ej?miOAVVd=Tnqunb6OEeDZD zk*F-_iCKF*5LT_P?YfL|vhd_y0Y&R|^-4gPWC(8JUtfTIG@j6C8b#R!r6jEADD1vI zkcmml&p+GP)HIF$6&T!zhJ+-KOnjH3z)@Rz#0rO@7@G1rAj{I7#bS&;_MSJ_Pm5>} zLCkQvi6`Takz_RJw0sOdacL3iC=+Nz1k`eoj7ij)w!z?A9sZ~Cg_SXko_tMT|1dIO zVIMDiIEA>5@Od5_(zHW*#2_q27>(LrB!)72Uf#M7nI)B~Q(Iwv&~9~Eb|RGhF)>e8 zJFDML{XE}E_!vyqdXQXv&vbKhQ@g^=IwGk)Wkcv*xIjL9mwS$hOix?Dlwpt(X z^~T15#kQXj!~j^$sRM2vDT0DpVDKywN&-UeVy1b4o`UJ>0RVd9dtL%O0yrNwy6g59 z5ixWsflmHYe{BmwV4*#0r-F~o-zJ_c>)NL-F3y}O37O3kI^Kg| z)$fp@!u2%2+&l2<0dkhRT7HvaxmWNe{e9V^TD^_%ZOxqC<8`voD*|oC&>xbNo6ETJ zv{Sc^3)(~ofd-k-SM`G&_J8>P4zWGFC!x-NYr!QpZ>4N&Ixce{_73WS;v7e=+jA z1p;=ZJISNh0-yWCsMWr*;>rUq zL4a|{KgQxW?2ky4S!L<2ej1q0gf1I)S+s;wAH_bHqw#M*Re=kfPRa(FCzK02k>m{$ z{{?zD()m;{ebPMgdm|pYluuwRo@A>7i%ShTZk^BUBB?eB$zIO zdkt!4W1}6#EF;~6II}o68R8IvkDogM?;X+U;q6U=nGq#O=25MZER74tL%FNqDQesLc_spDT3eEt?8ef%t57WJM8TI&JRL7UnqiRRBkhPF8cvth z({(fupv&&EE7U&|llKoM%}d|?oq@{6Iix^hGp#!APrJ(DQ*aJ{Q9;F#!w!@Ik(wT% zYTnr+Frq^j!@9tHMtygQXM#hBpPYCxUI2-k4YblAfAIOm@S(q5ZkTByRB52}_v~u1 z_GA_{&A$1*Bqp2Y4{ztfciP9{#X!*=M8vd#Nu>irJ~lS0hLGreJPrN(8$d6J1W$%V z0A(%JmixYS!&Vm|IhiJHxsfds`ld3CMY~5QV8_f;ODu{n!$cSy0qEZe-_C&q5s2N5 zyDKzbzIgr=Sm7U8`lYcoxAId8s#ibK53arcpy+Wv=Ky$PUO1kgK-L2UaP&=~nx=#B zkGe9lKY$ORO^Q)60<_N#2(mWM>x=6cHgss>Mg(j1E3f$9mmWb=+zrt_9f)R#onubg zU@Uf_92$~0+M`F)!6lg#{)8b93mjaAiU{{&hAU_kTt2vD&yZ2{FhlNh-__8mRM9l# zYVf2X%-+ngAOVMjHbA8a55&~-|U2^~mz5`iXo$pMR z>96lE$;uUryBtSH1NM$LDezg-UsnWO8A!^_p=^aOHRkH6eY%N*z$m!48z|7&@VeZf zfi7?)7zY;orIM-ERf+BU2c!4et9ZHCVUsiNJy_I7-$Bk9Wt3PhY9pMVwv;<|Ld|#NJ;W1r(1(3f&=MvO_-ldgiRt zUO0Pj=An>>;C|^)^0fgs-o_NEu#K2ETWA#Bh26-7A^(7cN1B?*9b)G6PUEFh)%=4-AirwXhx#xnFg=2;WqXlZbKvOsssGVl)g z{R9++&>Zy>%mM<+g;LeisX0rr-`(PA55ayZ?NIt)4w-)k_&5mJ&LIH<*&wexDRs~{ zi8y&l6pAz-rTvkE9?qmdl`+VfG9P@b^KY}WG07_4u-74WU%%pjaL^8>br6!znZHH7 z#Ilgl!tc_d$@eCEY8=tOC)jI)bV9i5gZ)WhGb8wDh z9z&7ly!fAaS`w@|kSma`Ct6*obxh^z;pr=8nQ>tzDXuL$8Nw@J_|D*xyj!rZfy9VB zIc2VN?e-DJZBKhoHZfxTd`OnGjTJif%8(uoG$!TE6AjeCPIL;?Vxf*!G8%SjZQAP& zYm3?A3h0|eJOq^I<8Q-FiFy5cj(|^a&-At?IO}OsoEa6*aZ}YFya5naHvna#Z7QXB zGu>z)tRKqN-2Mdb8rrUb_RriIAP& zdxpy2g_YUkNy_$0yryQDo6SNiNSlI;U6Mx-H@srKRyOj?3; z1-1u)xUtH>+~~~yk#DkeJlhKFMje!iqjXp;7HtvuvX4L+1?@vNG*JSC$)Lw*6Uf)% zpit5>^NX@Nzyj^TMF%Y$RM>gT#O!n4+sl7<7vzjWC5E$9uoNB;FL6VnNPpP=oyb0vyV@b#f&I?T49>i2sa zhSc>!_nkZF?Sbehz30h*o8OUBmEH}ZVDB4nfvGQJ90)L~Vj3(sbO9EC6caC!w^8`G zYHJE@R~X(68oxK)zvMH;+-C*kV_3a@t}^|~8hI#@NJCU|pkC{9mm%e`|n9ZuObGXXJty(MJW zD5XYvdC-!UR0Z%D%E=x+mQlRAiyO+cI^10%B$$HknUj}QztH5IcFfE`Kkv_tLD^>1 z?HuxXqf~OHV+Ckz9jHs_g6KnaYZfH5kR8X;&~`%a39UIG4pXH9?;v8b>hMA%C2xae`(Ez)u|AQRw2@R)Jz4M%M?Ozo}Gq$&t|C z%nW4ib0&^`Qp?2MF`W4vE`rqKpodfe)JL=d@<6S!Xo@2eDh8c9TXZ4@UqdYi<82zU z)DG;w9z0up`h)emzJaKOR@7lKJcTX;L$Zj8B8U-bfc8yPY-~D04M9#s6Z%lwsq;P- zK{hSQKSHAlEGp;Qe%34G{cgX4fgLDDYjEa>K)RvfZNKbC;9Fcm$)fkdd>VJypgvL1 zVs`}z8KS=3h?jRFOLyz^P^dt{S(v1E&>sLaforSOdGo)4+$tZT5b+YW8u?xc_v6m6 z6%j}aKsNGaSRo(0(pt$LW2l=Z&HNDZ*Qz?zgPy9j!gw##0++o2Ka~$uvnn9m4K`qlF5To5E2W6nD>0nHt4-fgWuEz%(fU{Ni;12 z>0g03^7(Ew)^G{9^fYmeV-ZgsQYyqLiHU)<3gSlscNr0om9G}*=H-1#;T)P1MCGS& z)eg-Mr$DP}nC*C2SZ$#R>kSa^F|PJTs!)Vv$X_Nwe&!=ofDo!>k^Wz*K#y6Gp5Gb( z&d}<7+#19V<*EVYorbaEonTPikvzD%-D=3-<5CBC4wP3k7vP|q-+oBKwff%{tyK^S z5I@Ag;QhIY8|2|~d{dK?tpHUq-pl^KN}h@p6subV*0#S)rqO*?O82+KfHWF54xDni z4`+~G$iXmoZUOH5|6BG6daq#CA+j1^#9V2HAXax-+^8Zjj}N7F{)}|9*mkfN^{IOo zj`6LI8D9J*%P6ap@JK4Fy(z-IX>=~6Fx|=DJ&WF@XIt=pH1(pY4j-Jp9%x4`0re$) zp6Fw<+(eCvGchOIe0Q`^&V3gz6I0PhVCchj9Acl8FG@_A^WO|Q16)=cB)%jj>_BCj?apj z{!8aLWW&eNfGLnPEC%gp_lb`(8vSe92p|XHy$il7c6QmIY&2d%-3v-aKor!&b)tD> z(7x>>apTwU>x$XZfo{k$vs{kVoZK3c{c`D!Fmw{V>PKaHOLb4!$g+#w3*~4Y4bmzB z-8nQL8}v_LTp~`c(E87>Z(N$G!OZ>}&YS)|p3Fm9QQQ6-Pm^&g(Va&Qw5EP4EG5^X zp-gAF^MLxLaAGG?uE^GH4PjF?k2Gw+Q?~9=LhzI~kkQ$1E=3j1~ z1tBjOLF^~hFzLnxJ{W9;pQ(uzYs{Ewu7!2zinXTj z&CO;j&?U}8G~-XEC-XDTHn#(m?NHrjY;-god;!8E&#^hdw4B0$us!F|G$WX1iALQc zVItIm&7D_;BCjIjJJ)HVwYdcAtvw*U4G1vK`Jjm_mya?|WVMzzF8F%2Q0Zpln4)vR z5jMzQTaNTT-e&GwH(Yc)zSN*!_&2g1fzJ+-@!ZB zG4^NTXX60%WHno*mhq%O0fa85+J-s1*zyakm$iK#@Gm~S?zibkRihV^)^je26|QyyU5yq&TUZyr zN^oz&p33xJ6GpcOnG@G)OVt9ExUS^>gJF6ky3=*)_pV2Y@=4au0QyRy-#+z*!Nezw z_owksOVsEljVC`E)T+M=ZY(Q*z}`hXa71YW@|=*9e8=vfmDHuH*bw!=swEW z^`g1o<<1F?S$!OBlpCV8c3*4?Rer|}eXC?-kdEWXuR9QXgs~$Y3yoAgrRrzy1%9Sw zw(N^eIO+SRfw!m)R*|HxNA!8-QXZ=_9k@cCnYDMjDna)ll;h_WBL2rS6jf?!*t{eU3$+uVhkSm=;}bF9}X|OkUpfo~t5;9pHIsL_I66 z^)l7}iS=R%>*c9|z`XE5l?UXQv~qoqC@~2*5bRK0Trl-k{^+TEotf6Y+9Pus_nNXO zDjP#% z9zMB#Ua?UwpuiFqQsy14&XP>GfA6fWVX~%ip03YI4ENx4#9eU+C!fphT=}1UuXbSv zx~JaCHd{t8KdWiYlPc;tSmH>q($I$J#c()?Nv(&b{*x25RAMZ#B@PGjv{jeF2Q*9A zd!JouoLXolHP2Ckr>#Qk6H*s+9j%YdT$+%Dv#t)g?pTy@Q7eF2;}p6x_~etMu%m1e zekIwODaX|+7xgiRvwpVgG&15aYwlzF!nM?X=qyltg@zurh)=VEgMBZe&tJGOChW~vuVP-K zLyo!vDMUSr_F>t0l-W^GeY@s?f^HTH=SFG;F0MSSf1p1Sd;a#3o5*5+*;N7SEy1L@ zZBc;^6Q44EbU2+v$@D00N+znxj-kATg+{!uEJSBc#H@JeYM~}0HO&(}pkN3eHY_+b z8l~km`g;u)1EV0Jr?TZtx^^b1+HL*BteA$Su?#F}uv24bxUQBlCobp_0`;&L?BefU z>>|Iu=GMrZl!r4bHfe@9@0~pUUbwEF4y|b;G~8nN@Gg#XigSE}DeGUaURz{q46vOX z8Ei*8Jps?{5m04Lg8F(e3W4Qj z-9wJ=wF0_+x2eMJ>UrznL4yBG*#_?lj1q=d`jD5y*e|FyYZY_orD0)9s=n>AZQqMS zMetTxlAX~*>ltUn{yHl%BUq#aTY_B)_n`At{DqL^I0<>TS)~PSu!VUXM3V!?w-7G| zca`xgKXdQCfrX%uj{a-Z@eJKTk?n5-P2hY}>dsQ!1krE!ZfwKQ(4t4#_~%W}a+7V_ zvXZ`@oT(@302-WlnB@^5j^awZW(FhOizh1{y^l4@Iy|S7Wn0g138A-paX-3}Hc50B zvVeHmlI-K-eboD1)4#N%2%hW^$&ri3>NittV%g=0;%^Ui+gjJ)9}YJ(g`=H-nnZ-WAElSidLaG3_f)yXdj7`#lI%kXlWP~iQ` zHh41TXW!PQ6kTQ&f%6{Nk<;i!)E6o?x*&7p6kXqNj4S6?`uEc(qPwm|v|C<4H*Iqy zxBuXLP%AerYBR&?^n>>9?~2J<;avKyFE=!1-QsQgi;Z0eZmPXrTkK-oz_jMglo$l+ z4QGc;d^Xe-%rh^pHLO;>>Kb$y&>#1?yRS$g{_Q7TKI(!@ZvUQ6}Gehqfy_CbD3GrQED6%)oMx3Bmn!Du#vBQQknC zTv*7UFH9Hq##fUl3SlX zzJFr-t3jqqnfyukqv7mN?Y!98!_Z`a;irxq{1MI?#k4sLR${~3u;f%SQ~brFm+)|S zGI3g7J?p`|e7DRO%j;*>Mpd777y2dWgOtPptyebk3f#^HV%sE54Ahd$3n0$HPCXUA5>^e9tI^CZX z)+tevjdD&xEMPl@uTfW4B(vKtygq3!3F2w}@g`jH%HDsbez5EA!SDhHO;038z48sZ zhE|dyKV#eTp-JWXtD9fY7n{_fFMc?XHL8d9Ipzu;&ONz1r|P9k5}#ye#@WEZH<{pR zsbO0cA1Vt&HV{8)cB-C#GjK3&tHB{DPgTyh+D+-|;Ve?DPV|+FyaG^t;cwibb9i_5 zh+9l@*%7oHaU}2SUq9V6%5UR9d`LRFGOmP&cpP`Mc z&{mu3y}xu5;ygUr^U+um0JurEyXBiK2LTs zEPyrl%fUi0Nu)doVZ*Zad5W^)hU}Wvz4Wy4v`jzMD&_V9&CoJ>HzqCZG!`0uolNhW zN(477+n?+1<_&B(&nre#ecOq9DmY3Uvgz4izo@~^)W1hG{MhRk4XY0g=KFqT{_ z7nV<#D>8fERIJY)4;Cnx5scsRb4?Z9wD=8w-G&lfEvQYRP$@`sZ8rpREPAY9_1{t1 zM_$!(SXAEdF6y1*W`SeTt$=RPNHfB1Mb`OCIq-_eQie=AoAV@A*Jrt0eXeBghT|d& z+gQ6+C%Hl(nx?1)24 zSLbXXJnno@l&+x+oUinQ$iHEDhT(^{SJz4ct4c19q1r(A0b~@w4$^#cv+^-6_+kI< z+!{k)s76Gx71~_GGY8NP#RSv_Us3p$dna!F`C*ncw~=h+yZLbpnb10Ybk5=FpVuxs zyb!D47wC69^C@>y$ul0g*c)MRA~7ue_A!t6_m9H(`&-U^g9jX4S__tpS4M9(at~IQ zcM;hDEC4_8>nyFVm)n;4g^(Hpb(Qwx&M9W~x8)h=aMM-Vj zUZ1R9p4DOE%0!E*$Ncvr2M#l*GWMq&ojvYxtkZVLLHlM(6FN}B7j_<&f^xsB0%2<- zZ!E|~+jrLOlR&CTMI5_qygmT4r_rUr#eBTyZqENo^Dv|^iUe`VL`j2E`7Dp|!>}AY zV0hsp6f)ngQA_lsMRhEDXOU)~7eaAMFVUJoX}D6EH_+(#nSmrQ#35Vpyo%~sYrolb zzz?H12*W4kT5GCG{p9O@nRAnnoKxONNY?2?Zuy-oaV?|?{97yboBe&Y;)%$~DDB*r zlg2@nKtISdJh#ibCX`ek>Q3)Qtp^+}m(+VV+~o%=Fdcj{Y?|5FrRaydj-l7;l96RRX149)=^NpyFG+Lj?}n0oEF4 zZ$Jkxs77Z(!2!(|LPTWoA0Cxx&{;Z6K4^XSPD@888Wm+hHu!mk2|Ojn!&^V81}w*Tn#tAv*0@0jQKh##UU+bgkDqw5QX^HNQC?5yhZJ}IMiH`>^qtm4}F}qYbKD{Vmy;!Oz{($I!myz zS#c)YUTUhor8?K6j2ngj*d4>veBrV6WM%Im*=9)V+a`(zW~V+CB*82Szs~V&7{LPl ziu2QLt*xCfqeNxZ70UG%MW1Qt=vK0(7QC{3+s4e7^s7|@cth3on3_1UL(Pl5yC1nT zZHw|65{fNXt~JVwvf&=91cHG-pHgbtaE>x-U#dC(QJXi8m+-W2P;VSeA%T9d+Aa7E zO6E(+A6nYmwKX(4_YREzcy{aD`}uhnG-?AT9qU}V@-8pa5mW(cZG4Kzl%7%;9ZSj= zC4RTnQcHVIIP2!tQlsCdd7h$Hmx0O!MM}lLA0Qz)qS69z7L2%z_%N>N;jx_O=LdxL zQ77Td7lp13BfqWSve9{mUpz9W(P@I)966ffM=zP!dG$zUcA?GaB?t9;_iKs_aa3_! z3-!re;*4j{c`gmFJ$V`Xjr=9G|c>SJvDb#GF3C{9sP^jdLGOQ~n&Ao0Dy zt5JS(eoQy4hQJ!waBbDZMdMfZ!;g)`FT2;{9ITTkNOd?kZy~6a4Y!A~ElP7Vn)S22 zhKt=RXe#4eBH#6QmGMzW?#6JotN+^FbiG+-;7I3Etp3%I}kI4=&#HKVbKsHYW_@3So5CuG3H zAuDKXCuG)VL9e+k5Y)SD^Qzh5RVO4I!)ZVdr6F%$%RaE-(#?;YL>F7~Ra!+v4=E9t zZ~5O_X5vJlskE{*o^})s%7EEc3P=H7MI{uPJ70jfD74hV0LRmnn}4LCU9lfcc>i~h z1$4|#MClr%#zNLf01(%p4$6juaz^#g2Q*m@I!6yY*9B96H|?&FsWK6R&}M@`$;6d= zcFjgs^m^F^2!@<~P~_XdoR{5JFd*-=uN~N((~Gb{l%N$xbaEL67sAxj29X@36ZnFg zw=;utpQlx8J(Jwf9G^q_xy?@HY)b5a9nrgCTJd{p9kZ18P=+i^)edG#tfsK*kYN;Z zM6-`&Dt9GY2`C2%_HP^eNXNSdMQVE8dYb*|!C6`1@&W>+EkuLg^2h>4Gp_?!5Fn;DAhb9D-@w*+8RN#?wb< z0jR=t&Km`4Yp7e>byfH!)F1QEv?0S{cU&<3Isg$Z4iQ^xzZq(`VjQfqB*%MC%)QhuwQ zzwfa2Jh~CWgHaIk3owPV8>2^kOI`9Lua@^stX~S0^Uif-M8O2g%iyswrFAbW`SNPx zB#B=kja+LjG?yUfk>6R8&KZyR`dR8ECMM?89-mOF#q1?HlXbbhQyrPl=*LJfQasW3 zN~=wF^WY#8TAUMDXTt>saRXVA1fC=P_1~8mbwXcRfHf1kY%fmc$x5L$JLXculsK*oCqu6l531T#%mh?tW z%jk!N#CAx>IAzgvgp|8R+nTdw6gl>XYUhT#IVL$v_F!myd8PG4X{-q~WTBijKeHN5T zgle^h>|1-f$;ICB?!%lYi76s>z~#P$Ku>sfs@!_s@x0z3qt(pxMF!t%9`W$T(VO)H zXb3I^X6lif&Fojw6iLap2{9>70~0B?@|&_G*greR_~KW%NJYL%@U5E6CKeN#i^<@E~1&F*&MpD4&}*@kC7Q*2b^{; z_v=DC!90>?q;osIOcqA6uW1>6Qo8IigEHJ6qmZacjm9 zFx@ykS}cHfXG;l(O#I4JN*hSyQIBol#kqX4XYhw+on&?tRR)m#`=QZKP9fEtm&#?w zrLgTFtVm0YLeZ>|jy&+U?)|lGJ&Oxlx zx9a1Nfw;=1@%=5F#>0UmZJ*GIl&k%5SC3-d(mOZobi|nH#(i|bRWa+h0%oBL3?!SxeL@oa5ly;0!xK(lO z)^Ge)*;4pJS`z7YlvBX3ap}7TkNx&l(?wP+&6Vs~9A4)Rt_iS;VXjQQcg!P|mb5PK z?{Sp<0ASYN!KC(0@xe2zE2?C{IEba({&ej?116UF?h~UoOwLYfAD5ThjHmb zzQdm;()K|oHL61=$CkWG7NpA!ZdSPnA7j^{#Cms321cUB$9s{wQd#vDD9qIQH5^;A z(;Q09#8`xPau;c=JC8PFOw~B$e3?8!OMgx|b=x0vw<~dtB+50m0zOmnJeKt}&8-hpB zFSYAVX{iuCOk}9` z9rdNMm7iRGKOV2njK%JpA&e(;g#6)}gJ$RvM=2g0ynkC&zl`06{d$l*wDgcj5AUoD zUe+C_tOM9h(q>}Gy8C$X@x`|r_Cewdrhqk86!-=uQ0qJ(QFGndcGBU(QX+CCNk%Bm zhuq>r+W9iw@zb(dkYOX#qh}{A!tPuy52K&B~M#$U2CQ- zyh(h#=db9NWu69X8VSxFK@7q3*f81O-Cl22-@w1V#p~y5FSm6SrR_Hv!vYP; z3_BH!G$M8xF@qvE(SKnZ?}kH_i(OU@0$9$9*)$xgYe3Dm791{z* zOtQbG&6SNZ_{OC5b}R^`?y2C%PV9Ia?AN28v%OdB8Qw6?-n;55;5j0*`Kq>VB8zrX zqxuiUh1OjMNOztYtL2bLiSE?2p`Y#F_tg7)SILyfmRQnL>9mJIOdEJnmo>^S$q@*K@TCx^sPfQq25oq5?|YVr3=_6P*~@ ziJg0pF7a87_Tc)dYh9d}xS1rWS8-K0B>u*tK-S?T-95!Zuwjq+2c?&G;sOBK_T(z|?9xqPnB5=q zv$LT~H=}8&mgpF_R`i5=LS5*6zw{iSklZ;Rc!n2_1G^Qo=&}^^R0+iw@-DB`)?NgI z*7S+}okN$8r*Y<^xNboRx^CRwc>uLj0U|Sssu|ad2L!X((i(CBaZZ~1t=en#Ym_a> zNhG)?Fi%Bu`w_$LLM^D9?d+E4asY!(J@tELV&di%3qd~p?0)}GIcZWRY5up0K2J2wr+~-U*mxf|GglcXWP$dSA}HkG)rxmGs5-ojtg7 zeHIJ%Di$0QpThZm00ad9L!MvD?Cn5~I5GEA*5b@|GkZqowC1a>+_K#!FWDbLHYw)~ zctShJaSHmKrNEB$2%j@(@JXhh1t&@;prQt~R2&zNtL^u`_@zqSniZd~bLXe0Qxmh3 zda8`G51H5R(&YcoaTdNuk#?!fsP|1?o~;4X7)>3DA5U{HPesuBga8t_wm{n+ z>`_!vP{EtzSJJnyTZ>FjpiXSADoN<8*Ci1V5#nS}ukU+P($W%L)`7)pyISdWJ zMPsX>iBf=hW%U-COfI?c>k=&uO*;HH1`(HJ_{br=E);?=thcwu`Ho4Y?UZ)w8Bt~{ zUx1@ixAU)Fh@J(p;ugLr*4lgD**MoLbb>M6x!(b^F=wu(qIp-Z_Z;u0)irzp{g8&xLrEL~4J`_|PNd!j zG*xR54phY9Is*0{=C^1*fCjaH`}Pm?B|@s48003>o$nFZ;g>HT$Gp+P|K=|Fb?@1M zoXkZn-ybebL@7Fq-bUl@35aZB`}z*KH%y>MLXfMs zB!MNW4eeOkAPK;R^Isnr>IPaXnwSmv5cQWwXf^Q+&s7WqkO4Fq>PsKly7yj^Hj!$MB5Q-c$?xEgalx5#QCg=P@?qnUM84R~Y z^ILvaO!Fpva45@y@ysyma}}3ZWY$QD1R?YIxVe>pTMO?9xTmli5O((43mR>Jg^Om$ z?-)tpJ>WZk+p4aO$okFRy?5Q9GOf-k@2l%&WX?=wdbAo7Ub;ZNX0+^Q@43C|O>+-E z!BWSu$}!G@)ez0oN$v>U>zNKt;g}$#B`pp`E!WD>?>`o7d}^-J%g;4a#6AQFib?X8 z9&^}uK*k*yfY=Z7UjPk?kIza@PCi`vp}jqd71~#h`lj{&xN=kcnMsN7bEd2hQ|>3- zoP+D9gypWe?_gycgf|>%6^33L71?d~9x`~WuKEoeki zA^(3uywLYL=N3NZC~i@ zf820wkbF0c-hi2j_N$@?EB?nr6VXfF*w7C1l9xZw%ZGk2;5T=|)XNa^zG~w3c{dI5iO0tfToI)PK<-gc&JBXbRAT95g+ z;9hHN8y5gHF|ftP~JgQAj>djpk_0s#Toh;aFK z8F;eYKnqSoL)w5*)Pcrg0@QZ&HjK+f&2mdqS$XiknocwyvH4UO8b>6jfM9PZBPj&e zQMw>bImkC8KRkSz>-1^)GX}*Ufu9u2c^lfaBL@A%)9m_kp8~5h3#P8wB6e(N@OoST@q&YbB1er(2_JEW*H5|kHUij-HK$#LSBU?e(JXHDzynkw`Oz=+uE z3wW6ZG%=~HZUTgfh9Lr(!FN1cj`(SO5z@#b{?cRE@d}VngzPviK%1boWam$nPVK~d z7(V51T!7Ve{`Iz)sr6rHfPr}-#$HgD`M-QQgV@jH&wu>(t|lZ01yPC|qmIZD5dc-Q zmbL$OeDsXYG9@+HEO}Q)=h5D1`mwNj%aZPPTuO1V7QmnvP{j=3ga_823sX*>I@Qj* zs|T>7@dS|90w8|IqY~EX^H_q0vvUC&76u*#rjYf|xHwVHqz%{k6-q9vJDI{5-sOm; zg0MTg);WdA+Wh8MZ_RsGLsw;RUFM6}iw|7ie{&*}{cfbL{sM{?ZIf=TV=hmOs8w!n z(j5Dw+S?>aN&UZE?Qr%T*)Ir1gr2YeX*~mYpij}~XL;bY{3A_%@b^wnn;(a-*Mz&! zKfcZ(oSz7Hu~+9c@X(0A^7)C?WBC97|F7s`FLI^OE2jacvqM>EFd5V~o)~E~d(W2i zp>e}#G+>O8$CItaG%0IXKEDApB^^%2!urZ+gle3Yvz7N`N{q^H$2}!U{i7ffnshj;nvpHaTjic z4vj!(&SCZ|YEU#nh_}^87T|RcI>v8o+(MH+QJbGEol$ZVv(FV6_eOGyR$z#4_H@}m z4xO==3=m4x!59=47NV0k0jJS#XvAWCNNRiagLG{q!>rqQ7gUG5>m`qZq{@(Bf@;sS z+xmose^O^>C( z-O^Dp4or^3`b-h}SIM=BQ?>S}`xzpMAuD-#`8~;7YR(l4I06bDAR1z{k7*lQ5gylE z5*?I`lk%@IS%;9K$7Fj=*T{FN$8R%1sb~7iSO3JH)lZv7I*`H$O!ozK8y``izW__+ z1c>?qZT924n83K!Jps=d9jiKGo<6lN2LAzmzip-8HV-hV(3ZBg1+b25NBE5G7D1V} zZspyD53zc*Fidj-YHHIeYkD#=xAS0Q*T7+>_XQs9GWtB!*qEPFI-ma_z7U)Tjo^}b zebWo8!ZGinRjO#UjzVA!?;JIN4UBgiY?ZBkI z1^c%KI3Ig*{~VZK*mOG&`aO&2D_}R6FB&;F($;{8j;^b_@DGc1Ybfc|K&A58yhwuT zZFlzZPLTWd1;?^DJz_{%l~}ti8L{F4ME@lqx_pU=h%mQX0K2^g+ArhWe0=+@HYuoJ z(nE7bdiqEBZ#@uw{g>dV{9)9$*!ud5#1fCmHZFprF9i7MOeu6GW@>f8rm`4*Rihzu)&g@B4n=`#jIZ z98cwfrBO)i>g(#P3ips8H#k7#8Gf@yvUhz=Q_9!+ZI0zlAK<+(;U1odh0Xk({(cAP zRf^8~6dnb#9G;8;#SXvwoG?QCw5M1K;%QG7(T07wru z@Ve|l;3wnO!2|a8x$A}?l0|;xkdV3EE|V}{*0o(+`r50GOVnMt+;+;!~F~d6r2>M#k z3jgU!tgY)8*6q5Hw9L8{uJ55$(op-%`6_R<)TkJZP)tuI^B8ip(b3UqopyB8bMkSc z&#BmG4QL-U|^$_C#|KOvn}q^)LyDt}Gx z{0R^{b+Uh-=+2!z2yq_BWa-Q|$5Y%J_ajHOlg5XfcWBA7s|34d48|W&J)iw;7+95_ zntEXv6*2|$Ocvs$*Z&xf&l~L@#zAA$%C_-6{Qa%AmfdoRFQW2^np(0 zx6puzspM~ZJ$oO*QN2uN$E`W&>{|nd2$aWBX4qP*Fxe>G*jv%X zL4vYoSy;4zP?!uF zV&#uqeLUntiqZ5z2k1lygRAT=oGcSd5`{|v-sDl_XHx+zCIWvNpT8cdhB%k&hf?=p zw#mufq0EOg=|&I+!Q1dGsd{)8pE+#<1)LsEJO2Rt zrJSmu&h0>e_^H86&bY#dNQyX1Z+XV@avl(&7$2KzpF98dA*uF!Q63kuWVzLzUl+)f zyB8+Os|-=X*VmUkv*BuAps7nw=f!qnn z-$nFRSDD228HM(orv?$oWd(7kga{XD>FGiM!O1gDj4XuxzqUe(vBBYn=;1JfxlfD{ z^D#6K_=H|hIwMocVO2Vg?U4(4d9I)lx3jl94OXZ@KpKbUn+n?_89n=n4mJj9hqaE5 zj;Ae!ZjXfeLttxN0Hw%0;TH5P6#1K1DG9C=+Q)RXWP zwHG0iWru|1(^E!;b`MP{T7SkdZDBlrPpEcet#baKH4~n)!gP>+;41#T|0gfe~2&~+9#GZBZefKICYlDPx+^=@$UYFCFZD?VyqhFpif0Fw-Uim@twb2qrj<4Jw?G02{drSkUl^nX9wz`-i^fm zM7E&75)TUt3rB|uH)RDjJ+Nrm$bu1&@=L09^|ANCQzhqHi>fg%U_tTwDJIxqaJ2!zOq(-VA?Pqz(1Wp|JHak`-MF{HT!LlIsEm5g2oIA(F zXI};x)RaYPd2|VVoV&Yw3wb}Fb4QiJn=a7k<#M^68wj2f;gvhOYaYCdoP8S_hrBW^ z0;pMx79?$rm?Hi4mhsSR>pIVH43~2PnHx5Pnzj~XvoA_OQ>_fF~|?1kI~`x%dp)MLy!>RSN_ zHk*pu7m^m2;fa*Juxwc&pvULN#Pf?5xfBc|1O;_{Tvn$VcTXjJMwE2JW{w;}oh1;f zyw~O*sQ}_P#Z}?4Dw3%od0x>kpe#>!A{Mniv2^!J*3W&%p1Blq?MYN8uclBJUrc2H z2^7E=og6H{{+tmlN51qO@FxOoM20#9a*wkjHTqwJUzr=(4ph=WFDb7^q-M2%LTHH#BNr@ts5l4qO{-Z-=BMmWV$% zHMXduP|L1$aPTG3K%`8J!U)}M!dVFF?8K5RAb==%e-TkguTM~>SbyUNy1*juMe-hH zlQU|8OVi-)~IKxY&IrD4b|m`Xzlm)_a~? JE;56U{Rxs2h5P^j literal 0 HcmV?d00001 diff --git a/openmmlab_test/mmclassification-0.24.1/docs/zh_CN/_static/js/custom.js b/openmmlab_test/mmclassification-0.24.1/docs/zh_CN/_static/js/custom.js new file mode 100644 index 00000000..44a4057d --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/docs/zh_CN/_static/js/custom.js @@ -0,0 +1 @@ +var collapsedSections = ['Model zoo']; diff --git a/openmmlab_test/mmclassification-0.24.1/docs/zh_CN/community/CONTRIBUTING.md b/openmmlab_test/mmclassification-0.24.1/docs/zh_CN/community/CONTRIBUTING.md new file mode 100644 index 00000000..55548008 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/docs/zh_CN/community/CONTRIBUTING.md @@ -0,0 +1,62 @@ +# 参与贡献 OpenMMLab + +欢迎任何类型的贡献,包括但不限于 + +- 修改拼写错误或代码错误 +- 添加文档或将文档翻译成其他语言 +- 添加新功能和新组件 + +## 工作流程 + +1. fork 并 pull 最新的 OpenMMLab 仓库 (MMClassification) +2. 签出到一个新分支(不要使用 master 分支提交 PR) +3. 进行修改并提交至 fork 出的自己的远程仓库 +4. 在我们的仓库中创建一个 PR + +```{note} +如果你计划添加一些新的功能,并引入大量改动,请尽量首先创建一个 issue 来进行讨论。 +``` + +## 代码风格 + +### Python + +我们采用 [PEP8](https://www.python.org/dev/peps/pep-0008/) 作为统一的代码风格。 + +我们使用下列工具来进行代码风格检查与格式化: + +- [flake8](https://github.com/PyCQA/flake8): Python 官方发布的代码规范检查工具,是多个检查工具的封装 +- [isort](https://github.com/timothycrosley/isort): 自动调整模块导入顺序的工具 +- [yapf](https://github.com/google/yapf): 一个 Python 文件的格式化工具。 +- [codespell](https://github.com/codespell-project/codespell): 检查单词拼写是否有误 +- [mdformat](https://github.com/executablebooks/mdformat): 检查 markdown 文件的工具 +- [docformatter](https://github.com/myint/docformatter): 一个 docstring 格式化工具。 + +yapf 和 isort 的格式设置位于 [setup.cfg](https://github.com/open-mmlab/mmclassification/blob/master/setup.cfg) + +我们使用 [pre-commit hook](https://pre-commit.com/) 来保证每次提交时自动进行代 +码检查和格式化,启用的功能包括 `flake8`, `yapf`, `isort`, `trailing whitespaces`, `markdown files`, 修复 `end-of-files`, `double-quoted-strings`, +`python-encoding-pragma`, `mixed-line-ending`, 对 `requirments.txt`的排序等。 +pre-commit hook 的配置文件位于 [.pre-commit-config](https://github.com/open-mmlab/mmclassification/blob/master/.pre-commit-config.yaml) + +在你克隆仓库后,你需要按照如下步骤安装并初始化 pre-commit hook。 + +```shell +pip install -U pre-commit +``` + +在仓库文件夹中执行 + +```shell +pre-commit install +``` + +在此之后,每次提交,代码规范检查和格式化工具都将被强制执行。 + +```{important} +在创建 PR 之前,请确保你的代码完成了代码规范检查,并经过了 yapf 的格式化。 +``` + +### C++ 和 CUDA + +C++ 和 CUDA 的代码规范遵从 [Google C++ Style Guide](https://google.github.io/styleguide/cppguide.html) diff --git a/openmmlab_test/mmclassification-0.24.1/docs/zh_CN/compatibility.md b/openmmlab_test/mmclassification-0.24.1/docs/zh_CN/compatibility.md new file mode 100644 index 00000000..178e555b --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/docs/zh_CN/compatibility.md @@ -0,0 +1,7 @@ +# 0.x 相关兼容性问题 + +## MMClassification 0.20.1 + +### MMCV 兼容性 + +在 Twins 骨干网络中,我们使用了 MMCV 提供的 `PatchEmbed` 模块,该模块是在 MMCV 1.4.2 版本加入的,因此我们需要将 MMCV 依赖版本升至 1.4.2。 diff --git a/openmmlab_test/mmclassification-0.24.1/docs/zh_CN/conf.py b/openmmlab_test/mmclassification-0.24.1/docs/zh_CN/conf.py new file mode 100644 index 00000000..71daf28b --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/docs/zh_CN/conf.py @@ -0,0 +1,226 @@ +# Configuration file for the Sphinx documentation builder. +# +# This file only contains a selection of the most common options. For a full +# list see the documentation: +# https://www.sphinx-doc.org/en/master/usage/configuration.html + +# -- Path setup -------------------------------------------------------------- + +# If extensions (or modules to document with autodoc) are in another directory, +# add these directories to sys.path here. If the directory is relative to the +# documentation root, use os.path.abspath to make it absolute, like shown here. +# +import os +import subprocess +import sys + +import pytorch_sphinx_theme +from sphinx.builders.html import StandaloneHTMLBuilder + +sys.path.insert(0, os.path.abspath('../..')) + +# -- Project information ----------------------------------------------------- + +project = 'MMClassification' +copyright = '2020, OpenMMLab' +author = 'MMClassification Authors' + +# The full version, including alpha/beta/rc tags +version_file = '../../mmcls/version.py' + + +def get_version(): + with open(version_file, 'r') as f: + exec(compile(f.read(), version_file, 'exec')) + return locals()['__version__'] + + +release = get_version() + +# -- General configuration --------------------------------------------------- + +# Add any Sphinx extension module names here, as strings. They can be +# extensions coming with Sphinx (named 'sphinx.ext.*') or your custom +# ones. +extensions = [ + 'sphinx.ext.autodoc', + 'sphinx.ext.autosummary', + 'sphinx.ext.intersphinx', + 'sphinx.ext.napoleon', + 'sphinx.ext.viewcode', + 'myst_parser', + 'sphinx_copybutton', +] + +autodoc_mock_imports = ['mmcv._ext', 'matplotlib'] + +# Add any paths that contain templates here, relative to this directory. +templates_path = ['_templates'] + +# The suffix(es) of source filenames. +# You can specify multiple suffix as a list of string: +# +source_suffix = { + '.rst': 'restructuredtext', + '.md': 'markdown', +} + +language = 'zh_CN' + +# The master toctree document. +master_doc = 'index' + +# List of patterns, relative to source directory, that match files and +# directories to ignore when looking for source files. +# This pattern also affects html_static_path and html_extra_path. +exclude_patterns = ['_build', 'Thumbs.db', '.DS_Store'] + +# -- Options for HTML output ------------------------------------------------- + +# The theme to use for HTML and HTML Help pages. See the documentation for +# a list of builtin themes. +# +html_theme = 'pytorch_sphinx_theme' +html_theme_path = [pytorch_sphinx_theme.get_html_theme_path()] + +# Theme options are theme-specific and customize the look and feel of a theme +# further. For a list of options available for each theme, see the +# documentation. +# +html_theme_options = { + 'logo_url': + 'https://mmclassification.readthedocs.io/zh_CN/latest/', + 'menu': [ + { + 'name': 'GitHub', + 'url': 'https://github.com/open-mmlab/mmclassification' + }, + { + 'name': + 'Colab 教程', + 'children': [ + { + 'name': + '用命令行工具训练和推理', + 'url': + 'https://colab.research.google.com/github/' + 'open-mmlab/mmclassification/blob/master/docs/zh_CN/' + 'tutorials/MMClassification_tools_cn.ipynb', + }, + { + 'name': + '用 Python API 训练和推理', + 'url': + 'https://colab.research.google.com/github/' + 'open-mmlab/mmclassification/blob/master/docs/zh_CN/' + 'tutorials/MMClassification_python_cn.ipynb', + }, + ] + }, + ], + # Specify the language of shared menu + 'menu_lang': + 'cn', +} + +# Add any paths that contain custom static files (such as style sheets) here, +# relative to this directory. They are copied after the builtin static files, +# so a file named "default.css" will overwrite the builtin "default.css". +html_static_path = ['_static'] +html_css_files = ['css/readthedocs.css'] +html_js_files = ['js/custom.js'] + +# -- Options for HTMLHelp output --------------------------------------------- + +# Output file base name for HTML help builder. +htmlhelp_basename = 'mmclsdoc' + +# -- Options for LaTeX output ------------------------------------------------ + +latex_elements = { + # The paper size ('letterpaper' or 'a4paper'). + # + # 'papersize': 'letterpaper', + + # The font size ('10pt', '11pt' or '12pt'). + # + # 'pointsize': '10pt', + + # Additional stuff for the LaTeX preamble. + # + # 'preamble': '', + + # Latex figure (float) alignment + # + # 'figure_align': 'htbp', +} + +# Grouping the document tree into LaTeX files. List of tuples +# (source start file, target name, title, +# author, documentclass [howto, manual, or own class]). +latex_documents = [ + (master_doc, 'mmcls.tex', 'MMClassification Documentation', author, + 'manual'), +] + +# -- Options for manual page output ------------------------------------------ + +# One entry per manual page. List of tuples +# (source start file, name, description, authors, manual section). +man_pages = [(master_doc, 'mmcls', 'MMClassification Documentation', [author], + 1)] + +# -- Options for Texinfo output ---------------------------------------------- + +# Grouping the document tree into Texinfo files. List of tuples +# (source start file, target name, title, author, +# dir menu entry, description, category) +texinfo_documents = [ + (master_doc, 'mmcls', 'MMClassification Documentation', author, 'mmcls', + 'OpenMMLab image classification toolbox and benchmark.', 'Miscellaneous'), +] + +# -- Options for Epub output ------------------------------------------------- + +# Bibliographic Dublin Core info. +epub_title = project + +# The unique identifier of the text. This can be a ISBN number +# or the project homepage. +# +# epub_identifier = '' + +# A unique identification for the text. +# +# epub_uid = '' + +# A list of files that should not be packed into the epub file. +epub_exclude_files = ['search.html'] + +# set priority when building html +StandaloneHTMLBuilder.supported_image_types = [ + 'image/svg+xml', 'image/gif', 'image/png', 'image/jpeg' +] + +# -- Extension configuration ------------------------------------------------- +# Ignore >>> when copying code +copybutton_prompt_text = r'>>> |\.\.\. ' +copybutton_prompt_is_regexp = True +# Auto-generated header anchors +myst_heading_anchors = 3 +# Configuration for intersphinx +intersphinx_mapping = { + 'python': ('https://docs.python.org/3', None), + 'numpy': ('https://numpy.org/doc/stable', None), + 'torch': ('https://pytorch.org/docs/stable/', None), + 'mmcv': ('https://mmcv.readthedocs.io/zh_CN/latest/', None), +} + + +def builder_inited_handler(app): + subprocess.run(['./stat.py']) + + +def setup(app): + app.add_config_value('no_underscore_emphasis', False, 'env') + app.connect('builder-inited', builder_inited_handler) diff --git a/openmmlab_test/mmclassification-0.24.1/docs/zh_CN/device/npu.md b/openmmlab_test/mmclassification-0.24.1/docs/zh_CN/device/npu.md new file mode 100644 index 00000000..7adcf0e5 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/docs/zh_CN/device/npu.md @@ -0,0 +1,34 @@ +# NPU (华为昇腾) + +## 使用方法 + +首先,请参考 {external+mmcv:doc}`教程 ` 安装带有 NPU 支持的 MMCV。 + +使用如下命令,可以利用 8 个 NPU 在机器上训练模型(以 ResNet 为例): + +```shell +bash tools/dist_train.sh configs/cspnet/resnet50_8xb32_in1k.py 8 --device npu +``` + +或者,使用如下命令,在一个 NPU 上训练模型(以 ResNet 为例): + +```shell +python tools/train.py configs/cspnet/resnet50_8xb32_in1k.py --device npu +``` + +## 经过验证的模型 + +| 模型 | Top-1 (%) | Top-5 (%) | 配置文件 | 相关下载 | +| :--------------------------------------------------------: | :-------: | :-------: | :------------------------------------------------------------: | :------------------------------------------------------------: | +| [CSPResNeXt50](../papers/cspnet.md) | 77.10 | 93.55 | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/cspnet/cspresnext50_8xb32_in1k.py) | [model](<>) \| [log](https://download.openmmlab.com/mmclassification/v0/device/npu/cspresnext50_8xb32_in1k.log.json) | +| [DenseNet121](../papers/densenet.md) | 72.62 | 91.04 | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/densenet/densenet121_4xb256_in1k.py) | [model](<>) \| [log](https://download.openmmlab.com/mmclassification/v0/device/npu/densenet121_4xb256_in1k.log.json) | +| [EfficientNet-B4(AA + AdvProp)](../papers/efficientnet.md) | 75.55 | 92.86 | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/efficientnet/efficientnet-b4_8xb32-01norm_in1k.py) | [model](<>) \| [log](https://download.openmmlab.com/mmclassification/v0/device/npu/efficientnet-b4_8xb32-01norm_in1k.log.json) | +| [HRNet-W18](../papers/hrnet.md) | 77.01 | 93.46 | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/hrnet/hrnet-w18_4xb32_in1k.py) | [model](<>) \| [log](https://download.openmmlab.com/mmclassification/v0/device/npu/hrnet-w18_4xb32_in1k.log.json) | +| [ResNetV1D-152](../papers/resnet.md) | 77.11 | 94.54 | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/resnet/resnetv1d152_8xb32_in1k.py) | [model](<>) \| [log](<>) | +| [ResNet-50](../papers/resnet.md) | 76.40 | - | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/resnet/resnet50_8xb32_in1k.py) | [model](<>) \| [log](<>) | +| [ResNetXt-32x4d-50](../papers/resnext.md) | 77.55 | 93.75 | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/resnext/resnext50-32x4d_8xb32_in1k.py) | [model](<>) \| [log](https://download.openmmlab.com/mmclassification/v0/device/npu/resnext50-32x4d_8xb32_in1k.log.json) | +| [SE-ResNet-50](../papers/seresnet.md) | 77.64 | 93.76 | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/seresnet/seresnet50_8xb32_in1k.py) | [model](<>) \| [log](https://download.openmmlab.com/mmclassification/v0/device/npu/seresnet50_8xb32_in1k.log.json) | +| [VGG-11](../papers/vgg.md) | 68.92 | 88.83 | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/vgg/vgg11_8xb32_in1k.py) | [model](<>) \| [log](https://download.openmmlab.com/mmclassification/v0/device/npu/vgg11_8xb32_in1k.log.json) | +| [ShuffleNetV2 1.0x](../papers/shufflenet_v2.md) | 69.53 | 88.82 | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/shufflenet_v2/shufflenet-v2-1x_16xb64_in1k.py) | [model](<>) \| [log](<>) | + +**以上所有模型权重及训练日志均由华为昇腾团队提供** diff --git a/openmmlab_test/mmclassification-0.24.1/docs/zh_CN/docutils.conf b/openmmlab_test/mmclassification-0.24.1/docs/zh_CN/docutils.conf new file mode 100644 index 00000000..0c00c846 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/docs/zh_CN/docutils.conf @@ -0,0 +1,2 @@ +[html writers] +table_style: colwidths-auto diff --git a/openmmlab_test/mmclassification-0.24.1/docs/zh_CN/faq.md b/openmmlab_test/mmclassification-0.24.1/docs/zh_CN/faq.md new file mode 100644 index 00000000..4f957222 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/docs/zh_CN/faq.md @@ -0,0 +1,73 @@ +# 常见问题 + +我们在这里列出了一些常见问题及其相应的解决方案。如果您发现任何常见问题并有方法 +帮助解决,欢迎随时丰富列表。如果这里的内容没有涵盖您的问题,请按照 +[提问模板](https://github.com/open-mmlab/mmclassification/issues/new/choose) +在 GitHub 上提出问题,并补充模板中需要的信息。 + +## 安装 + +- MMCV 与 MMClassification 的兼容问题。如遇到 + "AssertionError: MMCV==xxx is used but incompatible. Please install mmcv>=xxx, \<=xxx." + + 这里我们列举了各版本 MMClassification 对 MMCV 版本的依赖,请选择合适的 MMCV + 版本来避免安装和使用中的问题。 + + | MMClassification version | MMCV version | + | :----------------------: | :--------------------: | + | dev | mmcv>=1.7.0, \<1.9.0 | + | 0.24.1 (master) | mmcv>=1.4.2, \<1.9.0 | + | 0.23.2 | mmcv>=1.4.2, \<1.7.0 | + | 0.22.1 | mmcv>=1.4.2, \<1.6.0 | + | 0.21.0 | mmcv>=1.4.2, \<=1.5.0 | + | 0.20.1 | mmcv>=1.4.2, \<=1.5.0 | + | 0.19.0 | mmcv>=1.3.16, \<=1.5.0 | + | 0.18.0 | mmcv>=1.3.16, \<=1.5.0 | + | 0.17.0 | mmcv>=1.3.8, \<=1.5.0 | + | 0.16.0 | mmcv>=1.3.8, \<=1.5.0 | + | 0.15.0 | mmcv>=1.3.8, \<=1.5.0 | + | 0.15.0 | mmcv>=1.3.8, \<=1.5.0 | + | 0.14.0 | mmcv>=1.3.8, \<=1.5.0 | + | 0.13.0 | mmcv>=1.3.8, \<=1.5.0 | + | 0.12.0 | mmcv>=1.3.1, \<=1.5.0 | + | 0.11.1 | mmcv>=1.3.1, \<=1.5.0 | + | 0.11.0 | mmcv>=1.3.0 | + | 0.10.0 | mmcv>=1.3.0 | + | 0.9.0 | mmcv>=1.1.4 | + | 0.8.0 | mmcv>=1.1.4 | + | 0.7.0 | mmcv>=1.1.4 | + | 0.6.0 | mmcv>=1.1.4 | + + ```{note} + 由于 `dev` 分支处于频繁开发中,MMCV 版本依赖可能不准确。如果您在使用 + `dev` 分支时遇到问题,请尝试更新 MMCV 到最新版。 + ``` + +- 使用 Albumentations + + 如果你希望使用 `albumentations` 相关的功能,我们建议使用 `pip install -r requirements/optional.txt` 或者 + `pip install -U albumentations>=0.3.2 --no-binary qudida,albumentations` 命令进行安装。 + + 如果你直接使用 `pip install albumentations>=0.3.2` 来安装,它会同时安装 `opencv-python-headless` + (即使你已经安装了 `opencv-python`)。具体细节可参阅 + [官方文档](https://albumentations.ai/docs/getting_started/installation/#note-on-opencv-dependencies)。 + +## 开发 + +- 如果我对源码进行了改动,需要重新安装以使改动生效吗? + + 如果你遵照[最佳实践](install.md)的指引,从源码安装 mmcls,那么任何本地修改都不需要重新安装即可生效。 + +- 如何在多个 MMClassification 版本下进行开发? + + 通常来说,我们推荐通过不同虚拟环境来管理多个开发目录下的 MMClassification。 + 但如果你希望在不同目录(如 mmcls-0.21, mmcls-0.23 等)使用同一个环境进行开发, + 我们提供的训练和测试 shell 脚本会自动使用当前目录的 mmcls,其他 Python 脚本 + 则可以在命令前添加 `` PYTHONPATH=`pwd` `` 来使用当前目录的代码。 + + 反过来,如果你希望 shell 脚本使用环境中安装的 MMClassification,而不是当前目录的, + 则可以去掉 shell 脚本中如下一行代码: + + ```shell + PYTHONPATH="$(dirname $0)/..":$PYTHONPATH + ``` diff --git a/openmmlab_test/mmclassification-0.24.1/docs/zh_CN/getting_started.md b/openmmlab_test/mmclassification-0.24.1/docs/zh_CN/getting_started.md new file mode 100644 index 00000000..d3e98997 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/docs/zh_CN/getting_started.md @@ -0,0 +1,266 @@ +# 基础教程 + +本文档提供 MMClassification 相关用法的基本教程。 + +## 准备数据集 + +MMClassification 建议用户将数据集根目录链接到 `$MMCLASSIFICATION/data` 下。 +如果用户的文件夹结构与默认结构不同,则需要在配置文件中进行对应路径的修改。 + +``` +mmclassification +├── mmcls +├── tools +├── configs +├── docs +├── data +│ ├── imagenet +│ │ ├── meta +│ │ ├── train +│ │ ├── val +│ ├── cifar +│ │ ├── cifar-10-batches-py +│ ├── mnist +│ │ ├── train-images-idx3-ubyte +│ │ ├── train-labels-idx1-ubyte +│ │ ├── t10k-images-idx3-ubyte +│ │ ├── t10k-labels-idx1-ubyte + +``` + +对于 ImageNet,其存在多个版本,但最为常用的一个是 [ILSVRC 2012](http://www.image-net.org/challenges/LSVRC/2012/),可以通过以下步骤获取该数据集。 + +1. 注册账号并登录 [下载页面](http://www.image-net.org/download-images) +2. 获取 ILSVRC2012 下载链接并下载以下文件 + - ILSVRC2012_img_train.tar (~138GB) + - ILSVRC2012_img_val.tar (~6.3GB) +3. 解压下载的文件 +4. 使用 [该脚本](https://github.com/BVLC/caffe/blob/master/data/ilsvrc12/get_ilsvrc_aux.sh) 获取元数据 + +对于 MNIST,CIFAR10 和 CIFAR100,程序将会在需要的时候自动下载数据集。 + +对于用户自定义数据集的准备,请参阅 [教程 3:如何自定义数据集 +](tutorials/new_dataset.md) + +## 使用预训练模型进行推理 + +MMClassification 提供了一些脚本用于进行单张图像的推理、数据集的推理和数据集的测试(如 ImageNet 等) + +### 单张图像的推理 + +```shell +python demo/image_demo.py ${IMAGE_FILE} ${CONFIG_FILE} ${CHECKPOINT_FILE} + +# Example +python demo/image_demo.py demo/demo.JPEG configs/resnet/resnet50_8xb32_in1k.py \ + https://download.openmmlab.com/mmclassification/v0/resnet/resnet50_8xb32_in1k_20210831-ea4938fc.pth +``` + +### 数据集的推理与测试 + +- 支持单 GPU +- 支持 CPU +- 支持单节点多 GPU +- 支持多节点 + +用户可使用以下命令进行数据集的推理: + +```shell +# 单 GPU +python tools/test.py ${CONFIG_FILE} ${CHECKPOINT_FILE} [--metrics ${METRICS}] [--out ${RESULT_FILE}] + +# CPU: 禁用 GPU 并运行单 GPU 测试脚本 +export CUDA_VISIBLE_DEVICES=-1 +python tools/test.py ${CONFIG_FILE} ${CHECKPOINT_FILE} [--metrics ${METRICS}] [--out ${RESULT_FILE}] + +# 多 GPU +./tools/dist_test.sh ${CONFIG_FILE} ${CHECKPOINT_FILE} ${GPU_NUM} [--metrics ${METRICS}] [--out ${RESULT_FILE}] + +# 基于 slurm 分布式环境的多节点 +python tools/test.py ${CONFIG_FILE} ${CHECKPOINT_FILE} [--metrics ${METRICS}] [--out ${RESULT_FILE}] --launcher slurm +``` + +可选参数: + +- `RESULT_FILE`:输出结果的文件名。如果未指定,结果将不会保存到文件中。支持 json, yaml, pickle 格式。 +- `METRICS`:数据集测试指标,如准确率 (accuracy), 精确率 (precision), 召回率 (recall) 等 + +例子: + +在 ImageNet 验证集上,使用 ResNet-50 进行推理并获得预测标签及其对应的预测得分。 + +```shell +python tools/test.py configs/resnet/resnet50_8xb16_cifar10.py \ + https://download.openmmlab.com/mmclassification/v0/resnet/resnet50_b16x8_cifar10_20210528-f54bfad9.pth \ + --out result.pkl +``` + +## 模型训练 + +MMClassification 使用 `MMDistributedDataParallel` 进行分布式训练,使用 `MMDataParallel` 进行非分布式训练。 + +所有的输出(日志文件和模型权重文件)会被将保存到工作目录下。工作目录通过配置文件中的参数 `work_dir` 指定。 + +默认情况下,MMClassification 在每个周期后会在验证集上评估模型,可以通过在训练配置中修改 `interval` 参数来更改评估间隔 + +```python +evaluation = dict(interval=12) # 每进行 12 轮训练后评估一次模型 +``` + +### 使用单个 GPU 进行训练 + +```shell +python tools/train.py ${CONFIG_FILE} [optional arguments] +``` + +如果用户想在命令中指定工作目录,则需要增加参数 `--work-dir ${YOUR_WORK_DIR}` + +### 使用 CPU 训练 + +使用 CPU 训练的流程和使用单 GPU 训练的流程一致,我们仅需要在训练流程开始前禁用 GPU。 + +```shell +export CUDA_VISIBLE_DEVICES=-1 +``` + +之后运行单 GPU 训练脚本即可。 + +```{warning} +我们不推荐用户使用 CPU 进行训练,这太过缓慢。我们支持这个功能是为了方便用户在没有 GPU 的机器上进行调试。 +``` + +### 使用单台机器多个 GPU 进行训练 + +```shell +./tools/dist_train.sh ${CONFIG_FILE} ${GPU_NUM} [optional arguments] +``` + +可选参数为: + +- `--no-validate` (**不建议**): 默认情况下,程序将会在训练期间的每 k (默认为 1) 个周期进行一次验证。要禁用这一功能,使用 `--no-validate` +- `--work-dir ${WORK_DIR}`:覆盖配置文件中指定的工作目录。 +- `--resume-from ${CHECKPOINT_FILE}`:从以前的模型权重文件恢复训练。 + +`resume-from` 和 `load-from` 的不同点: +`resume-from` 加载模型参数和优化器状态,并且保留检查点所在的周期数,常被用于恢复意外被中断的训练。 +`load-from` 只加载模型参数,但周期数从 0 开始计数,常被用于微调模型。 + +### 使用多台机器进行训练 + +如果您想使用由 ethernet 连接起来的多台机器, 您可以使用以下命令: + +在第一台机器上: + +```shell +NNODES=2 NODE_RANK=0 PORT=$MASTER_PORT MASTER_ADDR=$MASTER_ADDR sh tools/dist_train.sh $CONFIG $GPUS +``` + +在第二台机器上: + +```shell +NNODES=2 NODE_RANK=1 PORT=$MASTER_PORT MASTER_ADDR=$MASTER_ADDR sh tools/dist_train.sh $CONFIG $GPUS +``` + +但是,如果您不使用高速网路连接这几台机器的话,训练将会非常慢。 + +如果用户在 [slurm](https://slurm.schedmd.com/) 集群上运行 MMClassification,可使用 `slurm_train.sh` 脚本。(该脚本也支持单台机器上进行训练) + +```shell +[GPUS=${GPUS}] ./tools/slurm_train.sh ${PARTITION} ${JOB_NAME} ${CONFIG_FILE} ${WORK_DIR} +``` + +用户可以在 [slurm_train.sh](https://github.com/open-mmlab/mmclassification/blob/master/tools/slurm_train.sh) 中检查所有的参数和环境变量 + +如果用户的多台机器通过 Ethernet 连接,则可以参考 pytorch [launch utility](https://pytorch.org/docs/stable/distributed.html#launch-utility)。如果用户没有高速网络,如 InfiniBand,速度将会非常慢。 + +### 使用单台机器启动多个任务 + +如果用使用单台机器启动多个任务,如在有 8 块 GPU 的单台机器上启动 2 个需要 4 块 GPU 的训练任务,则需要为每个任务指定不同端口,以避免通信冲突。 + +如果用户使用 `dist_train.sh` 脚本启动训练任务,则可以通过以下命令指定端口 + +```shell +CUDA_VISIBLE_DEVICES=0,1,2,3 PORT=29500 ./tools/dist_train.sh ${CONFIG_FILE} 4 +CUDA_VISIBLE_DEVICES=4,5,6,7 PORT=29501 ./tools/dist_train.sh ${CONFIG_FILE} 4 +``` + +如果用户在 slurm 集群下启动多个训练任务,则需要修改配置文件中的 `dist_params` 变量,以设置不同的通信端口。 + +在 `config1.py` 中, + +```python +dist_params = dict(backend='nccl', port=29500) +``` + +在 `config2.py` 中, + +```python +dist_params = dict(backend='nccl', port=29501) +``` + +之后便可启动两个任务,分别对应 `config1.py` 和 `config2.py`。 + +```shell +CUDA_VISIBLE_DEVICES=0,1,2,3 GPUS=4 ./tools/slurm_train.sh ${PARTITION} ${JOB_NAME} config1.py ${WORK_DIR} +CUDA_VISIBLE_DEVICES=4,5,6,7 GPUS=4 ./tools/slurm_train.sh ${PARTITION} ${JOB_NAME} config2.py ${WORK_DIR} +``` + +## 实用工具 + +我们在 `tools/` 目录下提供的一些对训练和测试十分有用的工具 + +### 计算 FLOPs 和参数量(试验性的) + +我们根据 [flops-counter.pytorch](https://github.com/sovrasov/flops-counter.pytorch) 提供了一个脚本用于计算给定模型的 FLOPs 和参数量 + +```shell +python tools/analysis_tools/get_flops.py ${CONFIG_FILE} [--shape ${INPUT_SHAPE}] +``` + +用户将获得如下结果: + +``` +============================== +Input shape: (3, 224, 224) +Flops: 4.12 GFLOPs +Params: 25.56 M +============================== +``` + +```{warning} +此工具仍处于试验阶段,我们不保证该数字正确无误。您最好将结果用于简单比较,但在技术报告或论文中采用该结果之前,请仔细检查。 +- FLOPs 与输入的尺寸有关,而参数量与输入尺寸无关。默认输入尺寸为 (1, 3, 224, 224) +- 一些运算不会被计入 FLOPs 的统计中,例如 GN 和自定义运算。详细信息请参考 [`mmcv.cnn.get_model_complexity_info()`](https://github.com/open-mmlab/mmcv/blob/master/mmcv/cnn/utils/flops_counter.py) +``` + +### 模型发布 + +在发布模型之前,你也许会需要 + +1. 转换模型权重至 CPU 张量 +2. 删除优化器状态 +3. 计算模型权重文件的哈希值,并添加至文件名之后 + +```shell +python tools/convert_models/publish_model.py ${INPUT_FILENAME} ${OUTPUT_FILENAME} +``` + +例如: + +```shell +python tools/convert_models/publish_model.py work_dirs/resnet50/latest.pth imagenet_resnet50.pth +``` + +最终输出的文件名将会是 `imagenet_resnet50_{date}-{hash id}.pth` + +## 详细教程 + +目前,MMClassification 提供以下几种更详细的教程: + +- [如何编写配置文件](tutorials/config.md) +- [如何微调模型](tutorials/finetune.md) +- [如何增加新数据集](tutorials/new_dataset.md) +- [如何设计数据处理流程](tutorials/data_pipeline.md) +- [如何增加新模块](tutorials/new_modules.md) +- [如何自定义优化策略](tutorials/schedule.md) +- [如何自定义运行参数](tutorials/runtime.md)。 diff --git a/openmmlab_test/mmclassification-0.24.1/docs/zh_CN/imgs/qq_group_qrcode.jpg b/openmmlab_test/mmclassification-0.24.1/docs/zh_CN/imgs/qq_group_qrcode.jpg new file mode 100644 index 0000000000000000000000000000000000000000..7c6b04f561da283ae622f4219ea9b8cabf8f301a GIT binary patch literal 71955 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 + mmcls.core + mmcls.models + mmcls.models.utils + mmcls.datasets + 数据转换 + 批数据增强 + mmcls.utils + + +.. toctree:: + :maxdepth: 1 + :caption: 其他说明 + + changelog.md + compatibility.md + faq.md + + +.. toctree:: + :maxdepth: 1 + :caption: 设备支持 + + device/npu.md + + +.. toctree:: + :caption: 语言切换 + + English + 简体中文 + + +索引与表格 +================== + +* :ref:`genindex` +* :ref:`search` diff --git a/openmmlab_test/mmclassification-0.24.1/docs/zh_CN/install.md b/openmmlab_test/mmclassification-0.24.1/docs/zh_CN/install.md new file mode 100644 index 00000000..e8815866 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/docs/zh_CN/install.md @@ -0,0 +1,210 @@ +# 依赖环境 + +在本节中,我们将演示如何准备 PyTorch 相关的依赖环境。 + +MMClassification 适用于 Linux、Windows 和 macOS。它需要 Python 3.6+、CUDA 9.2+ 和 PyTorch 1.5+。 + +```{note} +如果你对配置 PyTorch 环境已经很熟悉,并且已经完成了配置,可以直接进入[下一节](#安装)。 +否则的话,请依照以下步骤完成配置。 +``` + +**第 1 步** 从[官网](https://docs.conda.io/en/latest/miniconda.html)下载并安装 Miniconda。 + +**第 2 步** 创建一个 conda 虚拟环境并激活它。 + +```shell +conda create --name openmmlab python=3.8 -y +conda activate openmmlab +``` + +**第 3 步** 按照[官方指南](https://pytorch.org/get-started/locally/)安装 PyTorch。例如: + +在 GPU 平台: + +```shell +conda install pytorch torchvision -c pytorch +``` + +```{warning} +以上命令会自动安装最新版的 PyTorch 与对应的 cudatoolkit,请检查它们是否与你的环境匹配。 +``` + +在 CPU 平台: + +```shell +conda install pytorch torchvision cpuonly -c pytorch +``` + +# 安装 + +我们推荐用户按照我们的最佳实践来安装 MMClassification。但除此之外,如果你想根据 +你的习惯完成安装流程,也可以参见[自定义安装](#自定义安装)一节来获取更多信息。 + +## 最佳实践 + +**第 1 步** 使用 [MIM](https://github.com/open-mmlab/mim) 安装 [MMCV](https://github.com/open-mmlab/mmcv) + +```shell +pip install -U openmim +mim install mmcv-full +``` + +**第 2 步** 安装 MMClassification + +根据具体需求,我们支持两种安装模式: + +- [从源码安装(推荐)](#从源码安装):希望基于 MMClassification 框架开发自己的图像分类任务,需要添加新的功能,比如新的模型或是数据集,或者使用我们提供的各种工具。 +- [作为 Python 包安装](#作为-python-包安装):只是希望调用 MMClassification 的 API 接口,或者在自己的项目中导入 MMClassification 中的模块。 + +### 从源码安装 + +这种情况下,从源码按如下方式安装 mmcls: + +```shell +git clone https://github.com/open-mmlab/mmclassification.git +cd mmclassification +pip install -v -e . +# "-v" 表示输出更多安装相关的信息 +# "-e" 表示以可编辑形式安装,这样可以在不重新安装的情况下,让本地修改直接生效 +``` + +另外,如果你希望向 MMClassification 贡献代码,或者使用试验中的功能,请签出到 `dev` 分支。 + +```shell +git checkout dev +``` + +### 作为 Python 包安装 + +直接使用 pip 安装即可。 + +```shell +pip install mmcls +``` + +## 验证安装 + +为了验证 MMClassification 的安装是否正确,我们提供了一些示例代码来执行模型推理。 + +**第 1 步** 我们需要下载配置文件和模型权重文件 + +```shell +mim download mmcls --config resnet50_8xb32_in1k --dest . +``` + +**第 2 步** 验证示例的推理流程 + +如果你是**从源码安装**的 mmcls,那么直接运行以下命令进行验证: + +```shell +python demo/image_demo.py demo/demo.JPEG resnet50_8xb32_in1k.py resnet50_8xb32_in1k_20210831-ea4938fc.pth --device cpu +``` + +你可以看到命令行中输出了结果字典,包括 `pred_label`,`pred_score` 和 `pred_class` 三个字段。另外如果你拥有图形 +界面(而不是使用远程终端),那么可以启用 `--show` 选项,将示例图像和对应的预测结果在窗口中进行显示。 + +如果你是**作为 PyThon 包安装**,那么可以打开你的 Python 解释器,并粘贴如下代码: + +```python +from mmcls.apis import init_model, inference_model + +config_file = 'resnet50_8xb32_in1k.py' +checkpoint_file = 'resnet50_8xb32_in1k_20210831-ea4938fc.pth' +model = init_model(config_file, checkpoint_file, device='cpu') # 或者 device='cuda:0' +inference_model(model, 'demo/demo.JPEG') +``` + +你会看到输出一个字典,包含预测的标签、得分及类别名。 + +## 自定义安装 + +### CUDA 版本 + +安装 PyTorch 时,需要指定 CUDA 版本。如果您不清楚选择哪个,请遵循我们的建议: + +- 对于 Ampere 架构的 NVIDIA GPU,例如 GeForce 30 series 以及 NVIDIA A100,CUDA 11 是必需的。 +- 对于更早的 NVIDIA GPU,CUDA 11 是向前兼容的,但 CUDA 10.2 能够提供更好的兼容性,也更加轻量。 + +请确保你的 GPU 驱动版本满足最低的版本需求,参阅[这张表](https://docs.nvidia.com/cuda/cuda-toolkit-release-notes/index.html#cuda-major-component-versions__table-cuda-toolkit-driver-versions)。 + +```{note} +如果按照我们的最佳实践进行安装,CUDA 运行时库就足够了,因为我们提供相关 CUDA 代码的预编译,你不需要进行本地编译。 +但如果你希望从源码进行 MMCV 的编译,或是进行其他 CUDA 算子的开发,那么就必须安装完整的 CUDA 工具链,参见 +[NVIDIA 官网](https://developer.nvidia.com/cuda-downloads),另外还需要确保该 CUDA 工具链的版本与 PyTorch 安装时 +的配置相匹配(如用 `conda install` 安装 PyTorch 时指定的 cudatoolkit 版本)。 +``` + +### 不使用 MIM 安装 MMCV + +MMCV 包含 C++ 和 CUDA 扩展,因此其对 PyTorch 的依赖比较复杂。MIM 会自动解析这些 +依赖,选择合适的 MMCV 预编译包,使安装更简单,但它并不是必需的。 + +要使用 pip 而不是 MIM 来安装 MMCV,请遵照 [MMCV 安装指南](https://mmcv.readthedocs.io/zh_CN/latest/get_started/installation.html)。 +它需要你用指定 url 的形式手动指定对应的 PyTorch 和 CUDA 版本。 + +举个例子,如下命令将会安装基于 PyTorch 1.10.x 和 CUDA 11.3 编译的 mmcv-full。 + +```shell +pip install mmcv-full -f https://download.openmmlab.com/mmcv/dist/cu113/torch1.10/index.html +``` + +### 在 CPU 环境中安装 + +MMClassification 可以仅在 CPU 环境中安装,在 CPU 模式下,你可以完成训练(需要 MMCV 版本 >= 1.4.4)、测试和模型推理等所有操作。 + +在 CPU 模式下,MMCV 的部分功能将不可用,通常是一些 GPU 编译的算子。不过不用担心, +MMClassification 中几乎所有的模型都不会依赖这些算子。 + +### 在 Google Colab 中安装 + +[Google Colab](https://research.google.com/) 通常已经包含了 PyTorch 环境,因此我们只需要安装 MMCV 和 MMClassification 即可,命令如下: + +**第 1 步** 使用 [MIM](https://github.com/open-mmlab/mim) 安装 [MMCV](https://github.com/open-mmlab/mmcv) + +```shell +!pip3 install openmim +!mim install mmcv-full +``` + +**第 2 步** 从源码安装 MMClassification + +```shell +!git clone https://github.com/open-mmlab/mmclassification.git +%cd mmclassification +!pip install -e . +``` + +**第 3 步** 验证 + +```python +import mmcls +print(mmcls.__version__) +# 预期输出: 0.23.0 或更新的版本号 +``` + +```{note} +在 Jupyter 中,感叹号 `!` 用于执行外部命令,而 `%cd` 是一个[魔术命令](https://ipython.readthedocs.io/en/stable/interactive/magics.html#magic-cd),用于切换 Python 的工作路径。 +``` + +### 通过 Docker 使用 MMClassification + +MMClassification 提供 [Dockerfile](https://github.com/open-mmlab/mmclassification/blob/master/docker/Dockerfile) +用于构建镜像。请确保你的 [Docker 版本](https://docs.docker.com/engine/install/) >=19.03。 + +```shell +# 构建默认的 PyTorch 1.8.1,CUDA 10.2 版本镜像 +# 如果你希望使用其他版本,请修改 Dockerfile +docker build -t mmclassification docker/ +``` + +用以下命令运行 Docker 镜像: + +```shell +docker run --gpus all --shm-size=8g -it -v {DATA_DIR}:/mmclassification/data mmclassification +``` + +## 故障解决 + +如果你在安装过程中遇到了什么问题,请先查阅[常见问题](faq.md)。如果没有找到解决方法,可以在 GitHub +上[提出 issue](https://github.com/open-mmlab/mmclassification/issues/new/choose)。 diff --git a/openmmlab_test/mmclassification-0.24.1/docs/zh_CN/stat.py b/openmmlab_test/mmclassification-0.24.1/docs/zh_CN/stat.py new file mode 100644 index 00000000..f6d5b3ab --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/docs/zh_CN/stat.py @@ -0,0 +1,99 @@ +#!/usr/bin/env python +import functools as func +import glob +import os +import re +from pathlib import Path + +import numpy as np + +MMCLS_ROOT = Path(__file__).absolute().parents[1] +url_prefix = 'https://github.com/open-mmlab/mmclassification/blob/master/' + +papers_root = Path('papers') +papers_root.mkdir(exist_ok=True) +files = [Path(f) for f in sorted(glob.glob('../../configs/*/README.md'))] + +stats = [] +titles = [] +num_ckpts = 0 +num_configs = 0 + +for f in files: + with open(f, 'r') as content_file: + content = content_file.read() + + # Extract checkpoints + ckpts = set(x.lower().strip() + for x in re.findall(r'\[model\]\((https?.*)\)', content)) + if len(ckpts) == 0: + continue + num_ckpts += len(ckpts) + + # Extract paper title + match_res = list(re.finditer(r'> \[(.*)\]\((.*)\)', content)) + if len(match_res) > 0: + title, paperlink = match_res[0].groups() + else: + title = content.split('\n')[0].replace('# ', '').strip() + paperlink = None + titles.append(title) + + # Replace paper link to a button + if paperlink is not None: + start = match_res[0].start() + end = match_res[0].end() + link_button = f'[{title}]({paperlink})' + content = content[:start] + link_button + content[end:] + + # Extract paper type + _papertype = [x for x in re.findall(r'\[([A-Z]+)\]', content)] + assert len(_papertype) > 0 + papertype = _papertype[0] + paper = set([(papertype, title)]) + + # Write a copy of README + copy = papers_root / (f.parent.name + '.md') + if copy.exists(): + os.remove(copy) + + def replace_link(matchobj): + # Replace relative link to GitHub link. + name = matchobj.group(1) + link = matchobj.group(2) + if not link.startswith('http') and (f.parent / link).exists(): + rel_link = (f.parent / link).absolute().relative_to(MMCLS_ROOT) + link = url_prefix + str(rel_link) + return f'[{name}]({link})' + + content = re.sub(r'\[([^\]]+)\]\(([^)]+)\)', replace_link, content) + + with open(copy, 'w') as copy_file: + copy_file.write(content) + + statsmsg = f""" +\t* [{papertype}] [{title}]({copy}) ({len(ckpts)} ckpts) +""" + stats.append(dict(paper=paper, ckpts=ckpts, statsmsg=statsmsg, copy=copy)) + +allpapers = func.reduce(lambda a, b: a.union(b), + [stat['paper'] for stat in stats]) +msglist = '\n'.join(stat['statsmsg'] for stat in stats) + +papertypes, papercounts = np.unique([t for t, _ in allpapers], + return_counts=True) +countstr = '\n'.join( + [f' - {t}: {c}' for t, c in zip(papertypes, papercounts)]) + +modelzoo = f""" +# 模型库统计 + +* 论文数量: {len(set(titles))} +{countstr} + +* 模型权重文件数量: {num_ckpts} +{msglist} +""" + +with open('modelzoo_statistics.md', 'w') as f: + f.write(modelzoo) diff --git a/openmmlab_test/mmclassification-0.24.1/docs/zh_CN/tools/analysis.md b/openmmlab_test/mmclassification-0.24.1/docs/zh_CN/tools/analysis.md new file mode 100644 index 00000000..840ff39c --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/docs/zh_CN/tools/analysis.md @@ -0,0 +1,211 @@ +# 分析 + + + +- [日志分析](#日志分析) + - [绘制曲线图](#绘制曲线图) + - [统计训练时间](#统计训练时间) +- [结果分析](#结果分析) + - [评估结果](#查看典型结果) + - [查看典型结果](#查看典型结果) +- [模型复杂度分析](#模型复杂度分析) +- [常见问题](#常见问题) + + + +## 日志分析 + +### 绘制曲线图 + +指定一个训练日志文件,可通过 `tools/analysis_tools/analyze_logs.py` 脚本绘制指定键值的变化曲线 + +

+ +```shell +python tools/analysis_tools/analyze_logs.py plot_curve \ + ${JSON_LOGS} \ + [--keys ${KEYS}] \ + [--title ${TITLE}] \ + [--legend ${LEGEND}] \ + [--backend ${BACKEND}] \ + [--style ${STYLE}] \ + [--out ${OUT_FILE}] \ + [--window-size ${WINDOW_SIZE}] +``` + +所有参数的说明 + +- `json_logs` :模型配置文件的路径(可同时传入多个,使用空格分开)。 +- `--keys` :分析日志的关键字段,数量为 `len(${JSON_LOGS}) * len(${KEYS})` 默认为 'loss'。 +- `--title` :分析日志的图片名称,默认使用配置文件名, 默认为空。 +- `--legend` :图例名(可同时传入多个,使用空格分开,数目与 `${JSON_LOGS} * ${KEYS}` 数目一致)。默认使用 `"${JSON_LOG}-${KEYS}"`。 +- `--backend` :matplotlib 的绘图后端,默认由 matplotlib 自动选择。 +- `--style` :绘图配色风格,默认为 `whitegrid`。 +- `--out` :保存分析图片的路径,如不指定则不保存。 +- `--window-size`: 可视化窗口大小,如果没有指定,默认为 `12*7`。如果需要指定,需按照格式 `'W*H'`。 + +```{note} +`--style` 选项依赖于第三方库 `seaborn`,需要设置绘图风格请现安装该库。 +``` + +例如: + +- 绘制某日志文件对应的损失曲线图。 + + ```shell + python tools/analysis_tools/analyze_logs.py plot_curve your_log_json --keys loss --legend loss + ``` + +- 绘制某日志文件对应的 top-1 和 top-5 准确率曲线图,并将曲线图导出为 results.jpg 文件。 + + ```shell + python tools/analysis_tools/analyze_logs.py plot_curve your_log_json --keys accuracy_top-1 accuracy_top-5 --legend top1 top5 --out results.jpg + ``` + +- 在同一图像内绘制两份日志文件对应的 top-1 准确率曲线图。 + + ```shell + python tools/analysis_tools/analyze_logs.py plot_curve log1.json log2.json --keys accuracy_top-1 --legend run1 run2 + ``` + +```{note} +本工具会自动根据关键字段选择从日志的训练部分还是验证部分读取,因此如果你添加了 +自定义的验证指标,请把相对应的关键字段加入到本工具的 `TEST_METRICS` 变量中。 +``` + +### 统计训练时间 + +`tools/analysis_tools/analyze_logs.py` 也可以根据日志文件统计训练耗时。 + +```shell +python tools/analysis_tools/analyze_logs.py cal_train_time \ + ${JSON_LOGS} + [--include-outliers] +``` + +**所有参数的说明**: + +- `json_logs` :模型配置文件的路径(可同时传入多个,使用空格分开)。 +- `--include-outliers` :如果指定,将不会排除每个轮次中第一轮迭代的记录(有时第一轮迭代会耗时较长) + +**示例**: + +```shell +python tools/analysis_tools/analyze_logs.py cal_train_time work_dirs/some_exp/20200422_153324.log.json +``` + +预计输出结果如下所示: + +```text +-----Analyze train time of work_dirs/some_exp/20200422_153324.log.json----- +slowest epoch 68, average time is 0.3818 +fastest epoch 1, average time is 0.3694 +time std over epochs is 0.0020 +average iter time: 0.3777 s/iter +``` + +## 结果分析 + +利用 `tools/test.py` 的 `--out` 参数,我们可以将所有的样本的推理结果保存到输出 +文件中。利用这一文件,我们可以进行进一步的分析。 + +### 评估结果 + +`tools/analysis_tools/eval_metric.py` 可以用来再次计算评估结果。 + +```shell +python tools/analysis_tools/eval_metric.py \ + ${CONFIG} \ + ${RESULT} \ + [--metrics ${METRICS}] \ + [--cfg-options ${CFG_OPTIONS}] \ + [--metric-options ${METRIC_OPTIONS}] +``` + +**所有参数说明**: + +- `config` :配置文件的路径。 +- `result` : `tools/test.py` 的输出结果文件。 +- `metrics` : 评估的衡量指标,可接受的值取决于数据集类。 +- `--cfg-options`: 额外的配置选项,会被合入配置文件,参考[教程 1:如何编写配置文件](https://mmclassification.readthedocs.io/zh_CN/latest/tutorials/config.html)。 +- `--metric-options`: 如果指定了,这些选项将被传递给数据集 `evaluate` 函数的 `metric_options` 参数。 + +```{note} +在 `tools/test.py` 中,我们支持使用 `--out-items` 选项来选择保存哪些结果。为了使用本工具,请确保结果文件中包含 "class_scores"。 +``` + +**示例**: + +```shell +python tools/analysis_tools/eval_metric.py configs/t2t_vit/t2t-vit-t-14_8xb64_in1k.py ./result.pkl --metrics accuracy --metric-options "topk=(1,5)" +``` + +### 查看典型结果 + +`tools/analysis_tools/analyze_results.py` 可以保存预测成功/失败,同时得分最高的 k 个图像。 + +```shell +python tools/analysis_tools/analyze_results.py \ + ${CONFIG} \ + ${RESULT} \ + [--out-dir ${OUT_DIR}] \ + [--topk ${TOPK}] \ + [--cfg-options ${CFG_OPTIONS}] +``` + +**所有参数说明**: + +- `config` :配置文件的路径。 +- `result` : `tools/test.py` 的输出结果文件。 +- `--out-dir` :保存结果分析的文件夹路径。 +- `--topk` :分别保存多少张预测成功/失败的图像。如果不指定,默认为 `20`。 +- `--cfg-options`: 额外的配置选项,会被合入配置文件,参考[教程 1:如何编写配置文件](https://mmclassification.readthedocs.io/zh_CN/latest/tutorials/config.html)。 + +```{note} +在 `tools/test.py` 中,我们支持使用 `--out-items` 选项来选择保存哪些结果。为了使用本工具,请确保结果文件中包含 "pred_score"、"pred_label" 和 "pred_class"。 +``` + +**示例**: + +```shell +python tools/analysis_tools/analyze_results.py \ + configs/resnet/resnet50_xxxx.py \ + result.pkl \ + --out-dir results \ + --topk 50 +``` + +## 模型复杂度分析 + +### 计算 FLOPs 和参数量(试验性的) + +我们根据 [flops-counter.pytorch](https://github.com/sovrasov/flops-counter.pytorch) 提供了一个脚本用于计算给定模型的 FLOPs 和参数量。 + +```shell +python tools/analysis_tools/get_flops.py ${CONFIG_FILE} [--shape ${INPUT_SHAPE}] +``` + +**所有参数说明**: + +- `config` :配置文件的路径。 +- `--shape`: 输入尺寸,支持单值或者双值, 如: `--shape 256`、`--shape 224 256`。默认为`224 224`。 + +用户将获得如下结果: + +```text +============================== +Input shape: (3, 224, 224) +Flops: 4.12 GFLOPs +Params: 25.56 M +============================== +``` + +```{warning} +此工具仍处于试验阶段,我们不保证该数字正确无误。您最好将结果用于简单比较,但在技术报告或论文中采用该结果之前,请仔细检查。 +- FLOPs 与输入的尺寸有关,而参数量与输入尺寸无关。默认输入尺寸为 (1, 3, 224, 224) +- 一些运算不会被计入 FLOPs 的统计中,例如 GN 和自定义运算。详细信息请参考 [`mmcv.cnn.get_model_complexity_info()`](https://github.com/open-mmlab/mmcv/blob/master/mmcv/cnn/utils/flops_counter.py) +``` + +## 常见问题 + +- 无 diff --git a/openmmlab_test/mmclassification-0.24.1/docs/zh_CN/tools/miscellaneous.md b/openmmlab_test/mmclassification-0.24.1/docs/zh_CN/tools/miscellaneous.md new file mode 100644 index 00000000..a2cb6250 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/docs/zh_CN/tools/miscellaneous.md @@ -0,0 +1,59 @@ +# 其他工具 + + + +- [打印完整配置](#打印完整配置) +- [检查数据集](#检查数据集) +- [常见问题](#常见问题) + + + +## 打印完整配置 + +`tools/misc/print_config.py` 脚本会解析所有输入变量,并打印完整配置信息。 + +```shell +python tools/misc/print_config.py ${CONFIG} [--cfg-options ${CFG_OPTIONS}] +``` + +**所有参数说明**: + +- `config` :配置文件的路径。 +- `--cfg-options`: 额外的配置选项,会被合入配置文件,参考[教程 1:如何编写配置文件](https://mmclassification.readthedocs.io/zh_CN/latest/tutorials/config.html)。 + +**示例**: + +```shell +python tools/misc/print_config.py configs/t2t_vit/t2t-vit-t-14_8xb64_in1k.py +``` + +## 检查数据集 + +`tools/misc/verify_dataset.py` 脚本会检查数据集的所有图片,查看是否有已经损坏的图片。 + +```shell +python tools/print_config.py \ + ${CONFIG} \ + [--out-path ${OUT-PATH}] \ + [--phase ${PHASE}] \ + [--num-process ${NUM-PROCESS}] + [--cfg-options ${CFG_OPTIONS}] +``` + +**所有参数说明**: + +- `config` : 配置文件的路径。 +- `--out-path` : 输出结果路径,默认为 'brokenfiles.log'。 +- `--phase` : 检查哪个阶段的数据集,可用值为 "train" 、"test" 或者 "val", 默认为 "train"。 +- `--num-process` : 指定的进程数,默认为1。 +- `--cfg-options`: 额外的配置选项,会被合入配置文件,参考[教程 1:如何编写配置文件](https://mmclassification.readthedocs.io/zh_CN/latest/tutorials/config.html)。 + +**示例**: + +```shell +python tools/misc/verify_dataset.py configs/t2t_vit/t2t-vit-t-14_8xb64_in1k.py --out-path broken_imgs.log --phase val --num-process 8 +``` + +## 常见问题 + +- 无 diff --git a/openmmlab_test/mmclassification-0.24.1/docs/zh_CN/tools/model_serving.md b/openmmlab_test/mmclassification-0.24.1/docs/zh_CN/tools/model_serving.md new file mode 100644 index 00000000..4eed488c --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/docs/zh_CN/tools/model_serving.md @@ -0,0 +1,87 @@ +# 模型部署至 TorchServe + +为了使用 [`TorchServe`](https://pytorch.org/serve/) 部署一个 `MMClassification` 模型,需要进行以下几步: + +## 1. 转换 MMClassification 模型至 TorchServe + +```shell +python tools/deployment/mmcls2torchserve.py ${CONFIG_FILE} ${CHECKPOINT_FILE} \ +--output-folder ${MODEL_STORE} \ +--model-name ${MODEL_NAME} +``` + +```{note} +${MODEL_STORE} 需要是一个文件夹的绝对路径。 +``` + +示例: + +```shell +python tools/deployment/mmcls2torchserve.py \ + configs/resnet/resnet18_8xb32_in1k.py \ + checkpoints/resnet18_8xb32_in1k_20210831-fbbb1da6.pth \ + --output-folder ./checkpoints \ + --model-name resnet18_in1k +``` + +## 2. 构建 `mmcls-serve` docker 镜像 + +```shell +docker build -t mmcls-serve:latest docker/serve/ +``` + +## 3. 运行 `mmcls-serve` 镜像 + +请参考官方文档 [基于 docker 运行 TorchServe](https://github.com/pytorch/serve/blob/master/docker/README.md#running-torchserve-in-a-production-docker-environment). + +为了使镜像能够使用 GPU 资源,需要安装 [nvidia-docker](https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/install-guide.html)。之后可以传递 `--gpus` 参数以在 GPU 上运。 + +示例: + +```shell +docker run --rm \ +--cpus 8 \ +--gpus device=0 \ +-p8080:8080 -p8081:8081 -p8082:8082 \ +--mount type=bind,source=`realpath ./checkpoints`,target=/home/model-server/model-store \ +mmcls-serve:latest +``` + +```{note} +`realpath ./checkpoints` 是 "./checkpoints" 的绝对路径,你可以将其替换为你保存 TorchServe 模型的目录的绝对路径。 +``` + +参考 [该文档](https://github.com/pytorch/serve/blob/master/docs/rest_api.md) 了解关于推理 (8080),管理 (8081) 和指标 (8082) 等 API 的信息。 + +## 4. 测试部署 + +```shell +curl http://127.0.0.1:8080/predictions/${MODEL_NAME} -T demo/demo.JPEG +``` + +您应该获得类似于以下内容的响应: + +```json +{ + "pred_label": 58, + "pred_score": 0.38102269172668457, + "pred_class": "water snake" +} +``` + +另外,你也可以使用 `test_torchserver.py` 来比较 TorchServe 和 PyTorch 的结果,并进行可视化。 + +```shell +python tools/deployment/test_torchserver.py ${IMAGE_FILE} ${CONFIG_FILE} ${CHECKPOINT_FILE} ${MODEL_NAME} +[--inference-addr ${INFERENCE_ADDR}] [--device ${DEVICE}] +``` + +示例: + +```shell +python tools/deployment/test_torchserver.py \ + demo/demo.JPEG \ + configs/resnet/resnet18_8xb32_in1k.py \ + checkpoints/resnet18_8xb32_in1k_20210831-fbbb1da6.pth \ + resnet18_in1k +``` diff --git a/openmmlab_test/mmclassification-0.24.1/docs/zh_CN/tools/onnx2tensorrt.md b/openmmlab_test/mmclassification-0.24.1/docs/zh_CN/tools/onnx2tensorrt.md new file mode 100644 index 00000000..f6a25fa4 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/docs/zh_CN/tools/onnx2tensorrt.md @@ -0,0 +1,75 @@ +# ONNX 转 TensorRT(试验性的) + + + +- [如何将模型从 ONNX 转换到 TensorRT](#如何将模型从-onnx-转换到-tensorrt) + - [准备工作](#准备工作) + - [使用方法](#使用方法) +- [支持转换至 TensorRT 的模型列表](#支持转换至-tensorrt-的模型列表) +- [提示](#提示) +- [常见问题](#常见问题) + + + +## 如何将模型从 ONNX 转换到 TensorRT + +### 准备工作 + +1. 请参照 [安装指南](https://mmclassification.readthedocs.io/zh_CN/latest/install.html#mmclassification) 从源码安装 MMClassification。 +2. 使用我们的工具 [pytorch2onnx.md](./pytorch2onnx.md) 将 PyTorch 模型转换至 ONNX。 + +### 使用方法 + +```bash +python tools/deployment/onnx2tensorrt.py \ + ${MODEL} \ + --trt-file ${TRT_FILE} \ + --shape ${IMAGE_SHAPE} \ + --workspace-size {WORKSPACE_SIZE} \ + --show \ + --verify \ +``` + +所有参数的说明: + +- `model` : ONNX 模型的路径。 +- `--trt-file`: TensorRT 引擎文件的输出路径。如果没有指定,默认为当前脚本执行路径下的 `tmp.trt`。 +- `--shape`: 模型输入的高度和宽度。如果没有指定,默认为 `224 224`。 +- `--workspace-size` : 构建 TensorRT 引擎所需要的 GPU 空间大小,单位为 GiB。如果没有指定,默认为 `1` GiB。 +- `--show`: 是否展示模型的输出。如果没有指定,默认为 `False`。 +- `--verify`: 是否使用 ONNXRuntime 和 TensorRT 验证模型转换的正确性。如果没有指定,默认为`False`。 + +示例: + +```bash +python tools/deployment/onnx2tensorrt.py \ + checkpoints/resnet/resnet18_b16x8_cifar10.onnx \ + --trt-file checkpoints/resnet/resnet18_b16x8_cifar10.trt \ + --shape 224 224 \ + --show \ + --verify \ +``` + +## 支持转换至 TensorRT 的模型列表 + +下表列出了保证可转换为 TensorRT 的模型。 + +| 模型 | 配置文件 | 状态 | +| :----------: | :-----------------------------------------------------: | :--: | +| MobileNetV2 | `configs/mobilenet_v2/mobilenet-v2_8xb32_in1k.py` | Y | +| ResNet | `configs/resnet/resnet18_8xb16_cifar10.py` | Y | +| ResNeXt | `configs/resnext/resnext50-32x4d_8xb32_in1k.py` | Y | +| ShuffleNetV1 | `configs/shufflenet_v1/shufflenet-v1-1x_16xb64_in1k.py` | Y | +| ShuffleNetV2 | `configs/shufflenet_v2/shufflenet-v2-1x_16xb64_in1k.py` | Y | + +注: + +- *以上所有模型转换测试基于 Pytorch==1.6.0 和 TensorRT-7.2.1.6.Ubuntu-16.04.x86_64-gnu.cuda-10.2.cudnn8.0 进行* + +## 提示 + +- 如果你在上述模型的转换中遇到问题,请在 GitHub 中创建一个 issue,我们会尽快处理。未在上表中列出的模型,由于资源限制,我们可能无法提供很多帮助,如果遇到问题,请尝试自行解决。 + +## 常见问题 + +- 无 diff --git a/openmmlab_test/mmclassification-0.24.1/docs/zh_CN/tools/pytorch2onnx.md b/openmmlab_test/mmclassification-0.24.1/docs/zh_CN/tools/pytorch2onnx.md new file mode 100644 index 00000000..c66991a2 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/docs/zh_CN/tools/pytorch2onnx.md @@ -0,0 +1,88 @@ +# Pytorch 转 ONNX (试验性的) + + + +- [如何将模型从 PyTorch 转换到 ONNX](#如何将模型从-pytorch-转换到-onnx) + - [准备工作](#准备工作) + - [使用方法](#使用方法) +- [支持导出至 ONNX 的模型列表](#支持导出至-onnx-的模型列表) +- [提示](#提示) +- [常见问题](#常见问题) + + + +## 如何将模型从 PyTorch 转换到 ONNX + +### 准备工作 + +1. 请参照 [安装指南](https://mmclassification.readthedocs.io/zh_CN/latest/install.html#mmclassification) 从源码安装 MMClassification。 +2. 安装 onnx 和 onnxruntime。 + +```shell +pip install onnx onnxruntime==1.5.1 +``` + +### 使用方法 + +```bash +python tools/deployment/pytorch2onnx.py \ + ${CONFIG_FILE} \ + --checkpoint ${CHECKPOINT_FILE} \ + --output-file ${OUTPUT_FILE} \ + --shape ${IMAGE_SHAPE} \ + --opset-version ${OPSET_VERSION} \ + --dynamic-shape \ + --show \ + --simplify \ + --verify \ +``` + +所有参数的说明: + +- `config` : 模型配置文件的路径。 +- `--checkpoint` : 模型权重文件的路径。 +- `--output-file`: ONNX 模型的输出路径。如果没有指定,默认为当前脚本执行路径下的 `tmp.onnx`。 +- `--shape`: 模型输入的高度和宽度。如果没有指定,默认为 `224 224`。 +- `--opset-version` : ONNX 的 opset 版本。如果没有指定,默认为 `11`。 +- `--dynamic-shape` : 是否以动态输入尺寸导出 ONNX。 如果没有指定,默认为 `False`。 +- `--show`: 是否打印导出模型的架构。如果没有指定,默认为 `False`。 +- `--simplify`: 是否精简导出的 ONNX 模型。如果没有指定,默认为 `False`。 +- `--verify`: 是否验证导出模型的正确性。如果没有指定,默认为`False`。 + +示例: + +```bash +python tools/deployment/pytorch2onnx.py \ + configs/resnet/resnet18_8xb16_cifar10.py \ + --checkpoint checkpoints/resnet/resnet18_b16x8_cifar10.pth \ + --output-file checkpoints/resnet/resnet18_b16x8_cifar10.onnx \ + --dynamic-shape \ + --show \ + --simplify \ + --verify \ +``` + +## 支持导出至 ONNX 的模型列表 + +下表列出了保证可导出至 ONNX,并在 ONNX Runtime 中运行的模型。 + +| 模型 | 配置文件 | 批推理 | 动态输入尺寸 | 备注 | +| :----------: | :-----------------------------------------------------: | :----: | :----------: | ---- | +| MobileNetV2 | `configs/mobilenet_v2/mobilenet-v2_8xb32_in1k.py` | Y | Y | | +| ResNet | `configs/resnet/resnet18_8xb16_cifar10.py` | Y | Y | | +| ResNeXt | `configs/resnext/resnext50-32x4d_8xb32_in1k.py` | Y | Y | | +| SE-ResNet | `configs/seresnet/seresnet50_8xb32_in1k.py` | Y | Y | | +| ShuffleNetV1 | `configs/shufflenet_v1/shufflenet-v1-1x_16xb64_in1k.py` | Y | Y | | +| ShuffleNetV2 | `configs/shufflenet_v2/shufflenet-v2-1x_16xb64_in1k.py` | Y | Y | | + +注: + +- *以上所有模型转换测试基于 Pytorch==1.6.0 进行* + +## 提示 + +- 如果你在上述模型的转换中遇到问题,请在 GitHub 中创建一个 issue,我们会尽快处理。未在上表中列出的模型,由于资源限制,我们可能无法提供很多帮助,如果遇到问题,请尝试自行解决。 + +## 常见问题 + +- 无 diff --git a/openmmlab_test/mmclassification-0.24.1/docs/zh_CN/tools/pytorch2torchscript.md b/openmmlab_test/mmclassification-0.24.1/docs/zh_CN/tools/pytorch2torchscript.md new file mode 100644 index 00000000..02b12e34 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/docs/zh_CN/tools/pytorch2torchscript.md @@ -0,0 +1,54 @@ +# Pytorch 转 TorchScript (试验性的) + + + +- [如何将 PyTorch 模型转换至 TorchScript](#如何将-pytorch-模型转换至-torchscript) + - [使用方法](#使用方法) +- [提示](#提示) +- [常见问题](#常见问题) + + + +## 如何将 PyTorch 模型转换至 TorchScript + +### 使用方法 + +```bash +python tools/deployment/pytorch2torchscript.py \ + ${CONFIG_FILE} \ + --checkpoint ${CHECKPOINT_FILE} \ + --output-file ${OUTPUT_FILE} \ + --shape ${IMAGE_SHAPE} \ + --verify \ +``` + +所有参数的说明: + +- `config` : 模型配置文件的路径。 +- `--checkpoint` : 模型权重文件的路径。 +- `--output-file`: TorchScript 模型的输出路径。如果没有指定,默认为当前脚本执行路径下的 `tmp.pt`。 +- `--shape`: 模型输入的高度和宽度。如果没有指定,默认为 `224 224`。 +- `--verify`: 是否验证导出模型的正确性。如果没有指定,默认为`False`。 + +示例: + +```bash +python tools/deployment/pytorch2onnx.py \ + configs/resnet/resnet18_8xb16_cifar10.py \ + --checkpoint checkpoints/resnet/resnet18_b16x8_cifar10.pth \ + --output-file checkpoints/resnet/resnet18_b16x8_cifar10.pt \ + --verify \ +``` + +注: + +- *所有模型基于 Pytorch==1.8.1 通过了转换测试* + +## 提示 + +- 由于 `torch.jit.is_tracing()` 只在 PyTorch 1.6 之后的版本中得到支持,对于 PyTorch 1.3-1.5 的用户,我们建议手动提前返回结果。 +- 如果你在本仓库的模型转换中遇到问题,请在 GitHub 中创建一个 issue,我们会尽快处理。 + +## 常见问题 + +- 无 diff --git a/openmmlab_test/mmclassification-0.24.1/docs/zh_CN/tools/visualization.md b/openmmlab_test/mmclassification-0.24.1/docs/zh_CN/tools/visualization.md new file mode 100644 index 00000000..75d81421 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/docs/zh_CN/tools/visualization.md @@ -0,0 +1,302 @@ +# 可视化 + + + +- [数据流水线可视化](#数据流水线可视化) +- [学习率策略可视化](#学习率策略可视化) +- [类别激活图可视化](#类别激活图可视化) +- [常见问题](#常见问题) + + + +## 数据流水线可视化 + +```bash +python tools/visualizations/vis_pipeline.py \ + ${CONFIG_FILE} \ + [--output-dir ${OUTPUT_DIR}] \ + [--phase ${DATASET_PHASE}] \ + [--number ${BUNBER_IMAGES_DISPLAY}] \ + [--skip-type ${SKIP_TRANSFORM_TYPE}] \ + [--mode ${DISPLAY_MODE}] \ + [--show] \ + [--adaptive] \ + [--min-edge-length ${MIN_EDGE_LENGTH}] \ + [--max-edge-length ${MAX_EDGE_LENGTH}] \ + [--bgr2rgb] \ + [--window-size ${WINDOW_SIZE}] \ + [--cfg-options ${CFG_OPTIONS}] +``` + +**所有参数的说明**: + +- `config` : 模型配置文件的路径。 +- `--output-dir`: 保存图片文件夹,如果没有指定,默认为 `''`,表示不保存。 +- `--phase`: 可视化数据集的阶段,只能为 `[train, val, test]` 之一,默认为 `train`。 +- `--number`: 可视化样本数量。如果没有指定,默认展示数据集的所有图片。 +- `--skip-type`: 预设跳过的数据流水线过程。如果没有指定,默认为 `['ToTensor', 'Normalize', 'ImageToTensor', 'Collect']`。 +- `--mode`: 可视化的模式,只能为 `[original, transformed, concat, pipeline]` 之一,如果没有指定,默认为 `concat`。 +- `--show`: 将可视化图片以弹窗形式展示。 +- `--adaptive`: 自动调节可视化图片的大小。 +- `--min-edge-length`: 最短边长度,当使用了 `--adaptive` 时有效。 当图片任意边小于 `${MIN_EDGE_LENGTH}` 时,会保持长宽比不变放大图片,短边对齐至 `${MIN_EDGE_LENGTH}`,默认为200。 +- `--max-edge-length`: 最长边长度,当使用了 `--adaptive` 时有效。 当图片任意边大于 `${MAX_EDGE_LENGTH}` 时,会保持长宽比不变缩小图片,短边对齐至 `${MAX_EDGE_LENGTH}`,默认为1000。 +- `--bgr2rgb`: 将图片的颜色通道翻转。 +- `--window-size`: 可视化窗口大小,如果没有指定,默认为 `12*7`。如果需要指定,按照格式 `'W*H'`。 +- `--cfg-options` : 对配置文件的修改,参考[教程 1:如何编写配置文件](https://mmclassification.readthedocs.io/zh_CN/latest/tutorials/config.html)。 + +```{note} + +1. 如果不指定 `--mode`,默认设置为 `concat`,获取原始图片和预处理后图片拼接的图片;如果 `--mode` 设置为 `original`,则获取原始图片;如果 `--mode` 设置为 `transformed`,则获取预处理后的图片;如果 `--mode` 设置为 `pipeline`,则获得数据流水线所有中间过程图片。 + +2. 当指定了 `--adaptive` 选项时,会自动的调整尺寸过大和过小的图片,你可以通过设定 `--min-edge-length` 与 `--max-edge-length` 来指定自动调整的图片尺寸。 +``` + +**示例**: + +1. **'original'** 模式,可视化 `CIFAR100` 验证集中的100张原始图片,显示并保存在 `./tmp` 文件夹下: + +```shell +python ./tools/visualizations/vis_pipeline.py configs/resnet/resnet50_8xb16_cifar100.py --phase val --output-dir tmp --mode original --number 100 --show --adaptive --bgr2rgb +``` + +
+ +2. **'transformed'** 模式,可视化 `ImageNet` 训练集的所有经过预处理的图片,并以弹窗形式显示: + +```shell +python ./tools/visualizations/vis_pipeline.py ./configs/resnet/resnet50_8xb32_in1k.py --show --mode transformed +``` + +
+ +3. **'concat'** 模式,可视化 `ImageNet` 训练集的10张原始图片与预处理后图片对比图,保存在 `./tmp` 文件夹下: + +```shell +python ./tools/visualizations/vis_pipeline.py configs/swin_transformer/swin_base_224_b16x64_300e_imagenet.py --phase train --output-dir tmp --number 10 --adaptive +``` + +
+ +4. **'pipeline'** 模式,可视化 `ImageNet` 训练集经过数据流水线的过程图像: + +```shell +python ./tools/visualizations/vis_pipeline.py configs/swin_transformer/swin_base_224_b16x64_300e_imagenet.py --phase train --adaptive --mode pipeline --show +``` + +
+ +## 学习率策略可视化 + +```bash +python tools/visualizations/vis_lr.py \ + ${CONFIG_FILE} \ + [--dataset-size ${Dataset_Size}] \ + [--ngpus ${NUM_GPUs}] \ + [--save-path ${SAVE_PATH}] \ + [--title ${TITLE}] \ + [--style ${STYLE}] \ + [--window-size ${WINDOW_SIZE}] \ + [--cfg-options ${CFG_OPTIONS}] \ +``` + +**所有参数的说明**: + +- `config` : 模型配置文件的路径。 +- `--dataset-size` : 数据集的大小。如果指定,`build_dataset` 将被跳过并使用这个大小作为数据集大小,默认使用 `build_dataset` 所得数据集的大小。 +- `--ngpus` : 使用 GPU 的数量。 +- `--save-path` : 保存的可视化图片的路径,默认不保存。 +- `--title` : 可视化图片的标题,默认为配置文件名。 +- `--style` : 可视化图片的风格,默认为 `whitegrid`。 +- `--window-size`: 可视化窗口大小,如果没有指定,默认为 `12*7`。如果需要指定,按照格式 `'W*H'`。 +- `--cfg-options` : 对配置文件的修改,参考[教程 1:如何编写配置文件](https://mmclassification.readthedocs.io/zh_CN/latest/tutorials/config.html)。 + +```{note} + +部分数据集在解析标注阶段比较耗时,可直接将 `dataset-size` 指定数据集的大小,以节约时间。 + +``` + +**示例**: + +```bash +python tools/visualizations/vis_lr.py configs/resnet/resnet50_b16x8_cifar100.py +``` + +
+ +当数据集为 ImageNet 时,通过直接指定数据集大小来节约时间,并保存图片: + +```bash +python tools/visualizations/vis_lr.py configs/repvgg/repvgg-B3g4_4xb64-autoaug-lbs-mixup-coslr-200e_in1k.py --dataset-size 1281167 --ngpus 4 --save-path ./repvgg-B3g4_4xb64-lr.jpg +``` + +
+ +## 类别激活图可视化 + +MMClassification 提供 `tools\visualizations\vis_cam.py` 工具来可视化类别激活图。请使用 `pip install "grad-cam>=1.3.6"` 安装依赖的 [pytorch-grad-cam](https://github.com/jacobgil/pytorch-grad-cam)。 + +目前支持的方法有: + +| Method | What it does | +| :----------: | :-----------------------------------------------------------------------------------------------: | +| GradCAM | 使用平均梯度对 2D 激活进行加权 | +| GradCAM++ | 类似 GradCAM,但使用了二阶梯度 | +| XGradCAM | 类似 GradCAM,但通过归一化的激活对梯度进行了加权 | +| EigenCAM | 使用 2D 激活的第一主成分(无法区分类别,但效果似乎不错) | +| EigenGradCAM | 类似 EigenCAM,但支持类别区分,使用了激活 * 梯度的第一主成分,看起来和 GradCAM 差不多,但是更干净 | +| LayerCAM | 使用正梯度对激活进行空间加权,对于浅层有更好的效果 | + +**命令行**: + +```bash +python tools/visualizations/vis_cam.py \ + ${IMG} \ + ${CONFIG_FILE} \ + ${CHECKPOINT} \ + [--target-layers ${TARGET-LAYERS}] \ + [--preview-model] \ + [--method ${METHOD}] \ + [--target-category ${TARGET-CATEGORY}] \ + [--save-path ${SAVE_PATH}] \ + [--vit-like] \ + [--num-extra-tokens ${NUM-EXTRA-TOKENS}] + [--aug_smooth] \ + [--eigen_smooth] \ + [--device ${DEVICE}] \ + [--cfg-options ${CFG-OPTIONS}] +``` + +**所有参数的说明**: + +- `img`:目标图片路径。 +- `config`:模型配置文件的路径。 +- `checkpoint`:权重路径。 +- `--target-layers`:所查看的网络层名称,可输入一个或者多个网络层, 如果不设置,将使用最后一个`block`中的`norm`层。 +- `--preview-model`:是否查看模型所有网络层。 +- `--method`:类别激活图图可视化的方法,目前支持 `GradCAM`, `GradCAM++`, `XGradCAM`, `EigenCAM`, `EigenGradCAM`, `LayerCAM`,不区分大小写。如果不设置,默认为 `GradCAM`。 +- `--target-category`:查看的目标类别,如果不设置,使用模型检测出来的类别做为目标类别。 +- `--save-path`:保存的可视化图片的路径,默认不保存。 +- `--eigen-smooth`:是否使用主成分降低噪音,默认不开启。 +- `--vit-like`: 是否为 `ViT` 类似的 Transformer-based 网络 +- `--num-extra-tokens`: `ViT` 类网络的额外的 tokens 通道数,默认使用主干网络的 `num_extra_tokens`。 +- `--aug-smooth`:是否使用测试时增强 +- `--device`:使用的计算设备,如果不设置,默认为'cpu'。 +- `--cfg-options`:对配置文件的修改,参考[教程 1:如何编写配置文件](https://mmclassification.readthedocs.io/zh_CN/latest/tutorials/config.html)。 + +```{note} +在指定 `--target-layers` 时,如果不知道模型有哪些网络层,可使用命令行添加 `--preview-model` 查看所有网络层名称; +``` + +**示例(CNN)**: + +`--target-layers` 在 `Resnet-50` 中的一些示例如下: + +- `'backbone.layer4'`,表示第四个 `ResLayer` 层的输出。 +- `'backbone.layer4.2'` 表示第四个 `ResLayer` 层中第三个 `BottleNeck` 块的输出。 +- `'backbone.layer4.2.conv1'` 表示上述 `BottleNeck` 块中 `conv1` 层的输出。 + +```{note} +对于 `ModuleList` 或者 `Sequential` 类型的网络层,可以直接使用索引的方式指定子模块。比如 `backbone.layer4[-1]` 和 `backbone.layer4.2` 是相同的,因为 `layer4` 是一个拥有三个子模块的 `Sequential`。 +``` + +1. 使用不同方法可视化 `ResNet50`,默认 `target-category` 为模型检测的结果,使用默认推导的 `target-layers`。 + + ```shell + python tools/visualizations/vis_cam.py \ + demo/bird.JPEG \ + configs/resnet/resnet50_8xb32_in1k.py \ + https://download.openmmlab.com/mmclassification/v0/resnet/resnet50_batch256_imagenet_20200708-cfb998bf.pth \ + --method GradCAM + # GradCAM++, XGradCAM, EigenCAM, EigenGradCAM, LayerCAM + ``` + + | Image | GradCAM | GradCAM++ | EigenGradCAM | LayerCAM | + | ------------------------------------ | --------------------------------------- | ----------------------------------------- | -------------------------------------------- | ---------------------------------------- | + |
|
|
|
|
| + +2. 同一张图不同类别的激活图效果图,在 `ImageNet` 数据集中,类别238为 'Greater Swiss Mountain dog',类别281为 'tabby, tabby cat'。 + + ```shell + python tools/visualizations/vis_cam.py \ + demo/cat-dog.png configs/resnet/resnet50_8xb32_in1k.py \ + https://download.openmmlab.com/mmclassification/v0/resnet/resnet50_batch256_imagenet_20200708-cfb998bf.pth \ + --target-layers 'backbone.layer4.2' \ + --method GradCAM \ + --target-category 238 + # --target-category 281 + ``` + + | Category | Image | GradCAM | XGradCAM | LayerCAM | + | -------- | ---------------------------------------------- | ------------------------------------------------ | ------------------------------------------------- | ------------------------------------------------- | + | Dog |
|
|
|
| + | Cat |
|
|
|
| + +3. 使用 `--eigen-smooth` 以及 `--aug-smooth` 获取更好的可视化效果。 + + ```shell + python tools/visualizations/vis_cam.py \ + demo/dog.jpg \ + configs/mobilenet_v3/mobilenet-v3-large_8xb32_in1k.py \ + https://download.openmmlab.com/mmclassification/v0/mobilenet_v3/convert/mobilenet_v3_large-3ea3c186.pth \ + --target-layers 'backbone.layer16' \ + --method LayerCAM \ + --eigen-smooth --aug-smooth + ``` + + | Image | LayerCAM | eigen-smooth | aug-smooth | eigen&aug | + | ------------------------------------ | --------------------------------------- | ------------------------------------------- | ----------------------------------------- | ----------------------------------------- | + |
|
|
|
|
| + +**示例(Transformer)**: + +`--target-layers` 在 Transformer-based 网络中的一些示例如下: + +- Swin-Transformer 中:`'backbone.norm3'` +- ViT 中:`'backbone.layers[-1].ln1'` + +对于 Transformer-based 的网络,比如 ViT、T2T-ViT 和 Swin-Transformer,特征是被展平的。为了绘制 CAM 图,我们需要指定 `--vit-like` 选项,从而让被展平的特征恢复方形的特征图。 + +除了特征被展平之外,一些类 ViT 的网络还会添加额外的 tokens。比如 ViT 和 T2T-ViT 中添加了分类 token,DeiT 中还添加了蒸馏 token。在这些网络中,分类计算在最后一个注意力模块之后就已经完成了,分类得分也只和这些额外的 tokens 有关,与特征图无关,也就是说,分类得分对这些特征图的导数为 0。因此,我们不能使用最后一个注意力模块的输出作为 CAM 绘制的目标层。 + +另外,为了去除这些额外的 toekns 以获得特征图,我们需要知道这些额外 tokens 的数量。MMClassification 中几乎所有 Transformer-based 的网络都拥有 `num_extra_tokens` 属性。而如果你希望将此工具应用于新的,或者第三方的网络,而且该网络没有指定 `num_extra_tokens` 属性,那么可以使用 `--num-extra-tokens` 参数手动指定其数量。 + +1. 对 `Swin Transformer` 使用默认 `target-layers` 进行 CAM 可视化: + + ```shell + python tools/visualizations/vis_cam.py \ + demo/bird.JPEG \ + configs/swin_transformer/swin-tiny_16xb64_in1k.py \ + https://download.openmmlab.com/mmclassification/v0/swin-transformer/swin_tiny_224_b16x64_300e_imagenet_20210616_090925-66df6be6.pth \ + --vit-like + ``` + +2. 对 `Vision Transformer(ViT)` 进行 CAM 可视化: + + ```shell + python tools/visualizations/vis_cam.py \ + demo/bird.JPEG \ + configs/vision_transformer/vit-base-p16_ft-64xb64_in1k-384.py \ + https://download.openmmlab.com/mmclassification/v0/vit/finetune/vit-base-p16_in21k-pre-3rdparty_ft-64xb64_in1k-384_20210928-98e8652b.pth \ + --vit-like \ + --target-layers 'backbone.layers[-1].ln1' + ``` + +3. 对 `T2T-ViT` 进行 CAM 可视化: + + ```shell + python tools/visualizations/vis_cam.py \ + demo/bird.JPEG \ + configs/t2t_vit/t2t-vit-t-14_8xb64_in1k.py \ + https://download.openmmlab.com/mmclassification/v0/t2t-vit/t2t-vit-t-14_3rdparty_8xb64_in1k_20210928-b7c09b62.pth \ + --vit-like \ + --target-layers 'backbone.encoder[-1].ln1' + ``` + +| Image | ResNet50 | ViT | Swin | T2T-ViT | +| --------------------------------------- | ------------------------------------------ | -------------------------------------- | --------------------------------------- | ------------------------------------------ | +|
|
|
|
|
| + +## 常见问题 + +- 无 diff --git a/openmmlab_test/mmclassification-0.24.1/docs/zh_CN/tutorials/MMClassification_python_cn.ipynb b/openmmlab_test/mmclassification-0.24.1/docs/zh_CN/tutorials/MMClassification_python_cn.ipynb new file mode 100644 index 00000000..b81bf870 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/docs/zh_CN/tutorials/MMClassification_python_cn.ipynb @@ -0,0 +1,2041 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": { + "id": "XjQxmm04iTx4" + }, + "source": [ + "
\"Open" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "UdMfIsMpiODD" + }, + "source": [ + "# MMClassification Python API 教程\n", + "\n", + "在本教程中会介绍如下内容:\n", + "\n", + "* 如何安装 MMClassification\n", + "* 使用 Python API 进行模型推理\n", + "* 使用 Python API 进行模型微调" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "iOl0X9UEiRvE" + }, + "source": [ + "## 安装 MMClassification\n", + "\n", + "在使用 MMClassification 之前,我们需要配置环境,步骤如下:\n", + "\n", + "- 安装 Python, CUDA, C/C++ compiler 和 git\n", + "- 安装 PyTorch (CUDA 版)\n", + "- 安装 mmcv\n", + "- 克隆 mmcls github 代码库然后安装\n", + "\n", + "因为我们在 Google Colab 进行实验,Colab 已经帮我们完成了基本的配置,我们可以直接跳过前面两个步骤 。" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "_i7cjqS_LtoP" + }, + "source": [ + "### 检查环境" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "c6MbAw10iUJI", + "outputId": "dd37cdf5-7bcf-4a03-f5b5-4b17c3ca16de" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "/content\n" + ] + } + ], + "source": [ + "%cd /content" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "4IyFL3MaiYRu", + "outputId": "5008efdf-0356-4d93-ba9d-e51787036213" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "/content\n" + ] + } + ], + "source": [ + "!pwd" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "DMw7QwvpiiUO", + "outputId": "33fa5eb8-d083-4a1f-d094-ab0f59e2818e" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "nvcc: NVIDIA (R) Cuda compiler driver\n", + "Copyright (c) 2005-2020 NVIDIA Corporation\n", + "Built on Mon_Oct_12_20:09:46_PDT_2020\n", + "Cuda compilation tools, release 11.1, V11.1.105\n", + "Build cuda_11.1.TC455_06.29190527_0\n" + ] + } + ], + "source": [ + "# 检查 nvcc 版本\n", + "!nvcc -V" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "4VIBU7Fain4D", + "outputId": "ec20652d-ca24-4b82-b407-e90354d728f8" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "gcc (Ubuntu 7.5.0-3ubuntu1~18.04) 7.5.0\n", + "Copyright (C) 2017 Free Software Foundation, Inc.\n", + "This is free software; see the source for copying conditions. There is NO\n", + "warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n", + "\n" + ] + } + ], + "source": [ + "# 检查 GCC 版本\n", + "!gcc --version" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "24lDLCqFisZ9", + "outputId": "30ec9a1c-cdb3-436c-cdc8-f2a22afe254f" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "1.9.0+cu111\n", + "True\n" + ] + } + ], + "source": [ + "# 检查 PyTorch 的安装情况\n", + "import torch, torchvision\n", + "print(torch.__version__)\n", + "print(torch.cuda.is_available())" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "R2aZNLUwizBs" + }, + "source": [ + "### 安装 MMCV\n", + "\n", + "MMCV 是 OpenMMLab 代码库的基础库。Linux 环境的安装 whl 包已经提前打包好,大家可以直接下载安装。\n", + "\n", + "需要注意 PyTorch 和 CUDA 版本,确保能够正常安装。\n", + "\n", + "在前面的步骤中,我们输出了环境中 CUDA 和 PyTorch 的版本,分别是 11.1 和 1.9.0,我们需要选择相应的 MMCV 版本。\n", + "\n", + "另外,也可以安装完整版的 MMCV-full,它包含所有的特性以及丰富的开箱即用的 CUDA 算子。需要注意的是完整版本可能需要更长时间来编译。" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "nla40LrLi7oo", + "outputId": "162bf14d-0d3e-4540-e85e-a46084a786b1" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Looking in links: https://download.openmmlab.com/mmcv/dist/cu111/torch1.9.0/index.html\n", + "Collecting mmcv\n", + " Downloading mmcv-1.3.15.tar.gz (352 kB)\n", + "\u001b[K |████████████████████████████████| 352 kB 5.2 MB/s \n", + "\u001b[?25hCollecting addict\n", + " Downloading addict-2.4.0-py3-none-any.whl (3.8 kB)\n", + "Requirement already satisfied: numpy in /usr/local/lib/python3.7/dist-packages (from mmcv) (1.19.5)\n", + "Requirement already satisfied: packaging in /usr/local/lib/python3.7/dist-packages (from mmcv) (21.0)\n", + "Requirement already satisfied: Pillow in /usr/local/lib/python3.7/dist-packages (from mmcv) (7.1.2)\n", + "Requirement already satisfied: pyyaml in /usr/local/lib/python3.7/dist-packages (from mmcv) (3.13)\n", + "Collecting yapf\n", + " Downloading yapf-0.31.0-py2.py3-none-any.whl (185 kB)\n", + "\u001b[K |████████████████████████████████| 185 kB 49.9 MB/s \n", + "\u001b[?25hRequirement already satisfied: pyparsing>=2.0.2 in /usr/local/lib/python3.7/dist-packages (from packaging->mmcv) (2.4.7)\n", + "Building wheels for collected packages: mmcv\n", + " Building wheel for mmcv (setup.py) ... \u001b[?25l\u001b[?25hdone\n", + " Created wheel for mmcv: filename=mmcv-1.3.15-py2.py3-none-any.whl size=509835 sha256=793fe3796421336ca7a7740a1397a54016ba71ce95fd80cb80a116644adb4070\n", + " Stored in directory: /root/.cache/pip/wheels/b2/f4/4e/8f6d2dd2bef6b7eb8c89aa0e5d61acd7bff60aaf3d4d4b29b0\n", + "Successfully built mmcv\n", + "Installing collected packages: yapf, addict, mmcv\n", + "Successfully installed addict-2.4.0 mmcv-1.3.15 yapf-0.31.0\n" + ] + } + ], + "source": [ + "# 安装 mmcv\n", + "!pip install mmcv -f https://download.openmmlab.com/mmcv/dist/cu111/torch1.9.0/index.html\n", + "# !pip install mmcv-full -f https://download.openmmlab.com/mmcv/dist/cu110/torch1.9.0/index.html" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "GDTUrYvXjlRb" + }, + "source": [ + "### 克隆并安装 MMClassification\n", + "\n", + "接着,我们从 github 上克隆下 mmcls 最新代码库并进行安装。" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "Bwme6tWHjl5s", + "outputId": "eae20624-4695-4cd9-c3e5-9c59596d150a" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Cloning into 'mmclassification'...\n", + "remote: Enumerating objects: 4152, done.\u001b[K\n", + "remote: Counting objects: 100% (994/994), done.\u001b[K\n", + "remote: Compressing objects: 100% (576/576), done.\u001b[K\n", + "remote: Total 4152 (delta 476), reused 765 (delta 401), pack-reused 3158\u001b[K\n", + "Receiving objects: 100% (4152/4152), 8.20 MiB | 21.00 MiB/s, done.\n", + "Resolving deltas: 100% (2524/2524), done.\n" + ] + } + ], + "source": [ + "# 下载 mmcls 代码库\n", + "!git clone https://github.com/open-mmlab/mmclassification.git\n", + "%cd mmclassification/\n", + "\n", + "# 从源码安装 MMClassification\n", + "!pip install -e . " + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "hFg_oSG4j3zB", + "outputId": "05a91f9b-d41c-4ae7-d4fe-c30a30d3f639" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0.16.0\n" + ] + } + ], + "source": [ + "# 检查 MMClassification 的安装情况\n", + "import mmcls\n", + "print(mmcls.__version__)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "4Mi3g6yzj96L" + }, + "source": [ + "## 使用 Python API 进行模型推理\n", + "\n", + "MMClassification 提供很多预训练好的模型,可以访问链接查看[模型库](https://mmclassification.readthedocs.io/zh_CN/latest/model_zoo.html)。\n", + "绝大部分模型都能够复现原始论文的精度,或者达到更高的精度。\n", + "我们能够直接使用这些模型进行推理计算。\n", + "\n", + "在使用预训练模型之前,我们需要进行如下操作:\n", + "\n", + "- 准备模型\n", + " - 准备 config 配置文件 \n", + " - 准备模型权重参数文件\n", + "- 构建模型\n", + "- 进行推理计算" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "nDQchz8CkJaT", + "outputId": "9805bd7d-cc2a-4269-b43d-257412f1df93" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--2021-10-21 03:52:36-- https://www.dropbox.com/s/k5fsqi6qha09l1v/banana.png?dl=0\n", + "Resolving www.dropbox.com (www.dropbox.com)... 162.125.3.18, 2620:100:601b:18::a27d:812\n", + "Connecting to www.dropbox.com (www.dropbox.com)|162.125.3.18|:443... connected.\n", + "HTTP request sent, awaiting response... 301 Moved Permanently\n", + "Location: /s/raw/k5fsqi6qha09l1v/banana.png [following]\n", + "--2021-10-21 03:52:36-- https://www.dropbox.com/s/raw/k5fsqi6qha09l1v/banana.png\n", + "Reusing existing connection to www.dropbox.com:443.\n", + "HTTP request sent, awaiting response... 302 Found\n", + "Location: https://uc10f85c3c33c4b5233bac4d074e.dl.dropboxusercontent.com/cd/0/inline/BYYklQk6LNPXNm7o5xE_fxE2GA9reePyNajQgoe9roPlSrtsJd4WN6RVww7zrtNZWFq8iZv349MNQJlm7vVaqRBxTcd0ufxkqbcJYJvOrORpxOPV7mHmhMjKYUncez8YNqELGwDd-aeZqLGKBC8spSnx/file# [following]\n", + "--2021-10-21 03:52:36-- https://uc10f85c3c33c4b5233bac4d074e.dl.dropboxusercontent.com/cd/0/inline/BYYklQk6LNPXNm7o5xE_fxE2GA9reePyNajQgoe9roPlSrtsJd4WN6RVww7zrtNZWFq8iZv349MNQJlm7vVaqRBxTcd0ufxkqbcJYJvOrORpxOPV7mHmhMjKYUncez8YNqELGwDd-aeZqLGKBC8spSnx/file\n", + "Resolving uc10f85c3c33c4b5233bac4d074e.dl.dropboxusercontent.com (uc10f85c3c33c4b5233bac4d074e.dl.dropboxusercontent.com)... 162.125.3.15, 2620:100:601b:15::a27d:80f\n", + "Connecting to uc10f85c3c33c4b5233bac4d074e.dl.dropboxusercontent.com (uc10f85c3c33c4b5233bac4d074e.dl.dropboxusercontent.com)|162.125.3.15|:443... connected.\n", + "HTTP request sent, awaiting response... 200 OK\n", + "Length: 297299 (290K) [image/png]\n", + "Saving to: ‘demo/banana.png’\n", + "\n", + "demo/banana.png 100%[===================>] 290.33K --.-KB/s in 0.08s \n", + "\n", + "2021-10-21 03:52:36 (3.47 MB/s) - ‘demo/banana.png’ saved [297299/297299]\n", + "\n" + ] + } + ], + "source": [ + "# 获取示例图片\n", + "!wget https://www.dropbox.com/s/k5fsqi6qha09l1v/banana.png?dl=0 -O demo/banana.png" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 420 + }, + "id": "o2eiitWnkQq_", + "outputId": "192b3ebb-202b-4d6e-e178-561223024318" + }, + "outputs": [ + { + "data": { + "image/png": "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", + "text/plain": [ + "" + ] + }, + "execution_count": 20, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "from PIL import Image\n", + "Image.open('demo/banana.png')" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "sRfAui8EkTDX" + }, + "source": [ + "### 准备配置文件和模型权重文件\n", + "\n", + "预训练模型通过配置文件和模型权重文件来定义。配置文件定义了模型结构,模型权重文件保存了训练好的模型参数。\n", + "\n", + "在 GitHub 上 MMClassification 通过不同的页面来提供预训练模型。\n", + "比如, MobileNetV2 的配置文件和模型权重文件就在这个[链接](https://github.com/open-mmlab/mmclassification/tree/master/configs/mobilenet_v2)下。\n", + "\n", + "我们在 MMClassification 库中已经内置了大量模型训练所需要的配置文件,可以直接读取。而模型权重文件则需要下载,方便的是,我们的 API 提供了读取模型权重 url 的功能,因此可以直接以 url 的方式指定模型权重文件。" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "VvRoZpBGkgpC", + "outputId": "68282782-015e-4f5c-cef2-79be3bf6a9b7" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "configs/mobilenet_v2/mobilenet-v2_8xb32_in1k.py\n" + ] + } + ], + "source": [ + "# 检查确保配置文件存在\n", + "!ls configs/mobilenet_v2/mobilenet-v2_8xb32_in1k.py\n", + "\n", + "# 指明配置文件和权重参数文件的路径\n", + "# 其中,权重参数文件的路径可以是一个 url,会在加载权重时自动下载。\n", + "config_file = 'configs/mobilenet_v2/mobilenet-v2_8xb32_in1k.py'\n", + "checkpoint_file = 'https://download.openmmlab.com/mmclassification/v0/mobilenet_v2/mobilenet_v2_batch256_imagenet_20200708-3b2dc3af.pth'" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "eiYdsHoIkpD1" + }, + "source": [ + "### 进行模型推理\n", + "\n", + "MMClassification 提供了 high level 的 Python API 用来进行推理计算. \n", + "\n", + "首先,我们构建模型。" + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 323, + "referenced_widgets": [ + "badf240bbb7d442fbd214e837edbffe2", + "520112917e0f4844995d418c5041d23a", + "9f3f6b72b4d14e2a96b9185331c8081b", + "a275bef3584b49ab9b680b528420d461", + "c4b2c6914a05497b8d2b691bd6dda6da", + "863d2a8cc4074f2e890ba6aea7c54384", + "be55ab36267d4dcab1d83dfaa8540270", + "31475aa888da4c8d844ba99a0b3397f5", + "e310c50e610248dd897fbbf5dd09dd7a", + "8a8ab7c27e404459951cffe7a32b8faa", + "e1a3dce90c1a4804a9ef0c687a9c0703" + ] + }, + "id": "KwJWlR2QkpiV", + "outputId": "982b365e-d3be-4e3d-dee7-c507a8020292" + }, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/usr/local/lib/python3.7/dist-packages/mmcv/cnn/bricks/transformer.py:28: UserWarning: Fail to import ``MultiScaleDeformableAttention`` from ``mmcv.ops.multi_scale_deform_attn``, You should install ``mmcv-full`` if you need this module. \n", + " warnings.warn('Fail to import ``MultiScaleDeformableAttention`` from '\n", + "/usr/lib/python3.7/importlib/_bootstrap.py:219: RuntimeWarning: numpy.ufunc size changed, may indicate binary incompatibility. Expected 192 from C header, got 216 from PyObject\n", + " return f(*args, **kwds)\n", + "/usr/lib/python3.7/importlib/_bootstrap.py:219: RuntimeWarning: numpy.ufunc size changed, may indicate binary incompatibility. Expected 192 from C header, got 216 from PyObject\n", + " return f(*args, **kwds)\n", + "/usr/lib/python3.7/importlib/_bootstrap.py:219: RuntimeWarning: numpy.ufunc size changed, may indicate binary incompatibility. Expected 192 from C header, got 216 from PyObject\n", + " return f(*args, **kwds)\n", + "/usr/local/lib/python3.7/dist-packages/yaml/constructor.py:126: DeprecationWarning: Using or importing the ABCs from 'collections' instead of from 'collections.abc' is deprecated since Python 3.3,and in 3.9 it will stop working\n", + " if not isinstance(key, collections.Hashable):\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Use load_from_http loader\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Downloading: \"https://download.openmmlab.com/mmclassification/v0/mobilenet_v2/mobilenet_v2_batch256_imagenet_20200708-3b2dc3af.pth\" to /root/.cache/torch/hub/checkpoints/mobilenet_v2_batch256_imagenet_20200708-3b2dc3af.pth\n" + ] + }, + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "badf240bbb7d442fbd214e837edbffe2", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + " 0%| | 0.00/13.5M [00:00" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "%matplotlib inline\n", + "# 可视化分类结果\n", + "show_result_pyplot(model, img, result)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "oDMr3Bx_lESy" + }, + "source": [ + "## 使用 Python API 进行模型微调\n", + "\n", + "模型微调是将预训练好的模型在特定的数据集上对模型参数进行非常精细调整的过程,最终让预训练的模型能够适配新的数据集及对应的任务。相比于模型的训练过程,模型微调大大降低了训练的时间,并减少了数据量很小的数据集在训练过程中会出现的过拟合问题。\n", + "\n", + "模型微调的基本步骤如下:\n", + "\n", + "1. 准备新数据集并满足 MMClassification 的要求\n", + "2. 根据数据集修改训练配置 \n", + "3. 进行训练和验证\n", + "\n", + "更多细节可以查看 [文档](https://mmclassification.readthedocs.io/zh_CN/latest/tutorials/finetune.html)." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "TJtKKwAvlHX_" + }, + "source": [ + "### 准备数据集并满足 MMClassification 的要求\n", + "\n", + "这里我们下载猫狗分类数据集,关于数据集格式的详细介绍参考 [tools 教程](https://colab.research.google.com/github/open-mmlab/mmclassification/blob/master/docs_zh-CN/tutorials/MMClassification_tools_cn.ipynb)" + ] + }, + { + "cell_type": "code", + "execution_count": 29, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "3vBfU8GGlFPS", + "outputId": "b12dadb4-ccbc-45b4-bb08-3d24977ed93c" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--2021-10-21 03:57:58-- https://www.dropbox.com/s/wml49yrtdo53mie/cats_dogs_dataset_reorg.zip?dl=0\n", + "Resolving www.dropbox.com (www.dropbox.com)... 162.125.80.18, 2620:100:6018:18::a27d:312\n", + "Connecting to www.dropbox.com (www.dropbox.com)|162.125.80.18|:443... connected.\n", + "HTTP request sent, awaiting response... 301 Moved Permanently\n", + "Location: /s/raw/wml49yrtdo53mie/cats_dogs_dataset_reorg.zip [following]\n", + "--2021-10-21 03:57:58-- https://www.dropbox.com/s/raw/wml49yrtdo53mie/cats_dogs_dataset_reorg.zip\n", + "Reusing existing connection to www.dropbox.com:443.\n", + "HTTP request sent, awaiting response... 302 Found\n", + "Location: https://ucfd8157272a6270e100392293da.dl.dropboxusercontent.com/cd/0/inline/BYbFG6Zo1S3l2kJtqLrJIne9lTLgQn-uoJxmUjhLSkp36V7AoiwlyR2gP0XVoUQt9WzF2ZsmeERagMy7rpsNoIYG4MjsYA90i_JsarFDs9PHhXHw9qwHpHqBvgd4YU_mwDQHuouJ_oCU1kft04QgCVRg/file# [following]\n", + "--2021-10-21 03:57:59-- https://ucfd8157272a6270e100392293da.dl.dropboxusercontent.com/cd/0/inline/BYbFG6Zo1S3l2kJtqLrJIne9lTLgQn-uoJxmUjhLSkp36V7AoiwlyR2gP0XVoUQt9WzF2ZsmeERagMy7rpsNoIYG4MjsYA90i_JsarFDs9PHhXHw9qwHpHqBvgd4YU_mwDQHuouJ_oCU1kft04QgCVRg/file\n", + "Resolving ucfd8157272a6270e100392293da.dl.dropboxusercontent.com (ucfd8157272a6270e100392293da.dl.dropboxusercontent.com)... 162.125.3.15, 2620:100:6018:15::a27d:30f\n", + "Connecting to ucfd8157272a6270e100392293da.dl.dropboxusercontent.com (ucfd8157272a6270e100392293da.dl.dropboxusercontent.com)|162.125.3.15|:443... connected.\n", + "HTTP request sent, awaiting response... 302 Found\n", + "Location: /cd/0/inline2/BYYSXb-0kWS7Lpk-cdrgBGzcOBfsvy7KjhqWEgjI5L9xfcaXohKlVeFMNFVyqvCwZLym2kWCD0nwURRpQ2mnHICrNsrvTvavbn24hk1Bd3_lXX08LBBe3C6YvD2U_iP8UMXROqm-B3JtnBjeMpk1R4YZ0O6aVLgKu0eET9RXsRaNCczD2lTK_i72zmbYhGmBvlRWmf_yQnnS5WKpGhSAobznIqKzw78yPzo5FsgGiEj5VXb91AElrKVAW8HFC9EhdUs7RrL3q9f0mQ9TbQpauoAp32TL3YQcuAp891Rv-EmDVxzfMwKVTGU8hxR2SiIWkse4u2QGhliqhdha7qBu7sIPcIoeI5-DdSoc6XG77vTYTRhrs_cf7rQuTPH2gTIUwTY/file [following]\n", + "--2021-10-21 03:57:59-- https://ucfd8157272a6270e100392293da.dl.dropboxusercontent.com/cd/0/inline2/BYYSXb-0kWS7Lpk-cdrgBGzcOBfsvy7KjhqWEgjI5L9xfcaXohKlVeFMNFVyqvCwZLym2kWCD0nwURRpQ2mnHICrNsrvTvavbn24hk1Bd3_lXX08LBBe3C6YvD2U_iP8UMXROqm-B3JtnBjeMpk1R4YZ0O6aVLgKu0eET9RXsRaNCczD2lTK_i72zmbYhGmBvlRWmf_yQnnS5WKpGhSAobznIqKzw78yPzo5FsgGiEj5VXb91AElrKVAW8HFC9EhdUs7RrL3q9f0mQ9TbQpauoAp32TL3YQcuAp891Rv-EmDVxzfMwKVTGU8hxR2SiIWkse4u2QGhliqhdha7qBu7sIPcIoeI5-DdSoc6XG77vTYTRhrs_cf7rQuTPH2gTIUwTY/file\n", + "Reusing existing connection to ucfd8157272a6270e100392293da.dl.dropboxusercontent.com:443.\n", + "HTTP request sent, awaiting response... 200 OK\n", + "Length: 228802825 (218M) [application/zip]\n", + "Saving to: ‘cats_dogs_dataset.zip’\n", + "\n", + "cats_dogs_dataset.z 100%[===================>] 218.20M 86.3MB/s in 2.5s \n", + "\n", + "2021-10-21 03:58:02 (86.3 MB/s) - ‘cats_dogs_dataset.zip’ saved [228802825/228802825]\n", + "\n" + ] + } + ], + "source": [ + "# 下载分类数据集文件\n", + "!wget https://www.dropbox.com/s/wml49yrtdo53mie/cats_dogs_dataset_reorg.zip?dl=0 -O cats_dogs_dataset.zip\n", + "!mkdir -p data\n", + "!unzip -qo cats_dogs_dataset.zip -d ./data/" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "15iKNG0SlV9y" + }, + "source": [ + "### 读取配置文件并进行修改\n", + "\n", + "在 [tools 教程](https://colab.research.google.com/github/open-mmlab/mmclassification/blob/master/docs_zh-CN/tutorials/MMClassification_tools_cn.ipynb) 中,我们详细介绍了模型微调所需要修改的各部分配置文件,这里我们可以以 Python 代码的方式修改基础配置文件如下:" + ] + }, + { + "cell_type": "code", + "execution_count": 31, + "metadata": { + "id": "WCfnDavFlWrK" + }, + "outputs": [], + "source": [ + "# 载入已经存在的配置文件\n", + "from mmcv import Config\n", + "from mmcls.utils import auto_select_device\n", + "\n", + "cfg = Config.fromfile('configs/mobilenet_v2/mobilenet-v2_8xb32_in1k.py')\n", + "cfg.device = auto_select_device()\n", + "\n", + "# 修改模型分类头中的类别数目\n", + "cfg.model.head.num_classes = 2\n", + "cfg.model.head.topk = (1, )\n", + "\n", + "# 加载预训练权重\n", + "cfg.model.backbone.init_cfg = dict(type='Pretrained', checkpoint=checkpoint_file, prefix='backbone')\n", + "\n", + "# 根据你的电脑情况设置 sample size 和 workers \n", + "cfg.data.samples_per_gpu = 32\n", + "cfg.data.workers_per_gpu = 2\n", + "\n", + "# 指定训练集路径\n", + "cfg.data.train.data_prefix = 'data/cats_dogs_dataset/training_set/training_set'\n", + "cfg.data.train.classes = 'data/cats_dogs_dataset/classes.txt'\n", + "\n", + "# 指定验证集路径\n", + "cfg.data.val.data_prefix = 'data/cats_dogs_dataset/val_set/val_set'\n", + "cfg.data.val.ann_file = 'data/cats_dogs_dataset/val.txt'\n", + "cfg.data.val.classes = 'data/cats_dogs_dataset/classes.txt'\n", + "\n", + "# 指定测试集路径\n", + "cfg.data.test.data_prefix = 'data/cats_dogs_dataset/test_set/test_set'\n", + "cfg.data.test.ann_file = 'data/cats_dogs_dataset/test.txt'\n", + "cfg.data.test.classes = 'data/cats_dogs_dataset/classes.txt'\n", + "\n", + "# 设定数据集归一化参数\n", + "normalize_cfg = dict(type='Normalize', mean=[124.508, 116.050, 106.438], std=[58.577, 57.310, 57.437], to_rgb=True)\n", + "cfg.data.train.pipeline[3] = normalize_cfg\n", + "cfg.data.val.pipeline[3] = normalize_cfg\n", + "cfg.data.test.pipeline[3] = normalize_cfg\n", + "\n", + "# 修改评价指标选项\n", + "cfg.evaluation['metric_options']={'topk': (1, )}\n", + "\n", + "# 设置优化器\n", + "cfg.optimizer = dict(type='SGD', lr=0.005, momentum=0.9, weight_decay=0.0001)\n", + "cfg.optimizer_config = dict(grad_clip=None)\n", + "\n", + "# 设置学习率策略\n", + "cfg.lr_config = dict(policy='step', step=1, gamma=0.1)\n", + "cfg.runner = dict(type='EpochBasedRunner', max_epochs=2)\n", + "\n", + "# 设置工作目录以保存模型和日志\n", + "cfg.work_dir = './work_dirs/cats_dogs_dataset'\n", + "\n", + "# 设置每 10 个训练批次输出一次日志\n", + "cfg.log_config.interval = 10\n", + "\n", + "# 设置随机种子,并启用 cudnn 确定性选项以保证结果的可重复性\n", + "from mmcls.apis import set_random_seed\n", + "cfg.seed = 0\n", + "set_random_seed(0, deterministic=True)\n", + "\n", + "cfg.gpu_ids = range(1)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "HDerVUPFmNR0" + }, + "source": [ + "### 模型微调\n", + "\n", + "基于我们修改的训练配置,开始对我们的数据集进行模型微调计算。 我们调用 `train_model` API 进行计算. " + ] + }, + { + "cell_type": "code", + "execution_count": 32, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "P7unq5cNmN8G", + "outputId": "bf32711b-7bdf-45ee-8db5-e8699d3eff91" + }, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2021-10-21 04:04:12,758 - mmcv - INFO - initialize MobileNetV2 with init_cfg {'type': 'Pretrained', 'checkpoint': 'https://download.openmmlab.com/mmclassification/v0/mobilenet_v2/mobilenet_v2_batch256_imagenet_20200708-3b2dc3af.pth', 'prefix': 'backbone'}\n", + "2021-10-21 04:04:12,759 - mmcv - INFO - load backbone in model from: https://download.openmmlab.com/mmclassification/v0/mobilenet_v2/mobilenet_v2_batch256_imagenet_20200708-3b2dc3af.pth\n", + "2021-10-21 04:04:12,815 - mmcv - INFO - initialize LinearClsHead with init_cfg {'type': 'Normal', 'layer': 'Linear', 'std': 0.01}\n", + "2021-10-21 04:04:12,818 - mmcv - INFO - \n", + "backbone.conv1.conv.weight - torch.Size([32, 3, 3, 3]): \n", + "PretrainedInit: load from https://download.openmmlab.com/mmclassification/v0/mobilenet_v2/mobilenet_v2_batch256_imagenet_20200708-3b2dc3af.pth \n", + " \n", + "2021-10-21 04:04:12,821 - mmcv - INFO - \n", + "backbone.conv1.bn.weight - torch.Size([32]): \n", + "PretrainedInit: load from https://download.openmmlab.com/mmclassification/v0/mobilenet_v2/mobilenet_v2_batch256_imagenet_20200708-3b2dc3af.pth \n", + " \n", + "2021-10-21 04:04:12,823 - mmcv - INFO - \n", + "backbone.conv1.bn.bias - torch.Size([32]): \n", + "PretrainedInit: load from https://download.openmmlab.com/mmclassification/v0/mobilenet_v2/mobilenet_v2_batch256_imagenet_20200708-3b2dc3af.pth \n", + " \n", + "2021-10-21 04:04:12,824 - mmcv - INFO - \n", + "backbone.layer1.0.conv.0.conv.weight - torch.Size([32, 1, 3, 3]): \n", + "PretrainedInit: load from https://download.openmmlab.com/mmclassification/v0/mobilenet_v2/mobilenet_v2_batch256_imagenet_20200708-3b2dc3af.pth \n", + " \n", + "2021-10-21 04:04:12,826 - mmcv - INFO - \n", + "backbone.layer1.0.conv.0.bn.weight - torch.Size([32]): \n", + "PretrainedInit: load from https://download.openmmlab.com/mmclassification/v0/mobilenet_v2/mobilenet_v2_batch256_imagenet_20200708-3b2dc3af.pth \n", + " \n", + "2021-10-21 04:04:12,827 - mmcv - INFO - \n", + "backbone.layer1.0.conv.0.bn.bias - torch.Size([32]): \n", + "PretrainedInit: load from https://download.openmmlab.com/mmclassification/v0/mobilenet_v2/mobilenet_v2_batch256_imagenet_20200708-3b2dc3af.pth \n", + " \n", + "2021-10-21 04:04:12,829 - mmcv - INFO - \n", + "backbone.layer1.0.conv.1.conv.weight - torch.Size([16, 32, 1, 1]): \n", + "PretrainedInit: load from https://download.openmmlab.com/mmclassification/v0/mobilenet_v2/mobilenet_v2_batch256_imagenet_20200708-3b2dc3af.pth \n", + " \n", + "2021-10-21 04:04:12,830 - mmcv - INFO - \n", + "backbone.layer1.0.conv.1.bn.weight - torch.Size([16]): \n", + "PretrainedInit: load from https://download.openmmlab.com/mmclassification/v0/mobilenet_v2/mobilenet_v2_batch256_imagenet_20200708-3b2dc3af.pth \n", + " \n", + "2021-10-21 04:04:12,832 - mmcv - INFO - \n", + "backbone.layer1.0.conv.1.bn.bias - torch.Size([16]): \n", + "PretrainedInit: load from https://download.openmmlab.com/mmclassification/v0/mobilenet_v2/mobilenet_v2_batch256_imagenet_20200708-3b2dc3af.pth \n", + " \n", + "2021-10-21 04:04:12,833 - mmcv - INFO - \n", + "backbone.layer2.0.conv.0.conv.weight - torch.Size([96, 16, 1, 1]): \n", + "PretrainedInit: load from https://download.openmmlab.com/mmclassification/v0/mobilenet_v2/mobilenet_v2_batch256_imagenet_20200708-3b2dc3af.pth \n", + " \n", + "2021-10-21 04:04:12,835 - mmcv - INFO - \n", + "backbone.layer2.0.conv.0.bn.weight - torch.Size([96]): \n", + "PretrainedInit: load from https://download.openmmlab.com/mmclassification/v0/mobilenet_v2/mobilenet_v2_batch256_imagenet_20200708-3b2dc3af.pth \n", + " \n", + "2021-10-21 04:04:12,836 - mmcv - INFO - \n", + "backbone.layer2.0.conv.0.bn.bias - torch.Size([96]): \n", + "PretrainedInit: load from https://download.openmmlab.com/mmclassification/v0/mobilenet_v2/mobilenet_v2_batch256_imagenet_20200708-3b2dc3af.pth \n", + " \n", + "2021-10-21 04:04:12,838 - mmcv - INFO - \n", + "backbone.layer2.0.conv.1.conv.weight - torch.Size([96, 1, 3, 3]): \n", + "PretrainedInit: load from https://download.openmmlab.com/mmclassification/v0/mobilenet_v2/mobilenet_v2_batch256_imagenet_20200708-3b2dc3af.pth \n", + " \n", + "2021-10-21 04:04:12,839 - mmcv - INFO - \n", + "backbone.layer2.0.conv.1.bn.weight - torch.Size([96]): \n", + "PretrainedInit: load from https://download.openmmlab.com/mmclassification/v0/mobilenet_v2/mobilenet_v2_batch256_imagenet_20200708-3b2dc3af.pth \n", + " \n", + "2021-10-21 04:04:12,841 - mmcv - INFO - \n", + "backbone.layer2.0.conv.1.bn.bias - torch.Size([96]): \n", + "PretrainedInit: load from https://download.openmmlab.com/mmclassification/v0/mobilenet_v2/mobilenet_v2_batch256_imagenet_20200708-3b2dc3af.pth \n", + " \n", + "2021-10-21 04:04:12,842 - mmcv - INFO - \n", + "backbone.layer2.0.conv.2.conv.weight - torch.Size([24, 96, 1, 1]): \n", + "PretrainedInit: load from https://download.openmmlab.com/mmclassification/v0/mobilenet_v2/mobilenet_v2_batch256_imagenet_20200708-3b2dc3af.pth \n", + " \n", + "2021-10-21 04:04:12,844 - mmcv - INFO - \n", + "backbone.layer2.0.conv.2.bn.weight - torch.Size([24]): \n", + "PretrainedInit: load from https://download.openmmlab.com/mmclassification/v0/mobilenet_v2/mobilenet_v2_batch256_imagenet_20200708-3b2dc3af.pth \n", + " \n", + "2021-10-21 04:04:12,845 - mmcv - INFO - \n", + "backbone.layer2.0.conv.2.bn.bias - torch.Size([24]): \n", + "PretrainedInit: load from https://download.openmmlab.com/mmclassification/v0/mobilenet_v2/mobilenet_v2_batch256_imagenet_20200708-3b2dc3af.pth \n", + " \n", + "2021-10-21 04:04:12,847 - mmcv - INFO - \n", + "backbone.layer2.1.conv.0.conv.weight - torch.Size([144, 24, 1, 1]): \n", + "PretrainedInit: load from https://download.openmmlab.com/mmclassification/v0/mobilenet_v2/mobilenet_v2_batch256_imagenet_20200708-3b2dc3af.pth \n", + " \n", + "2021-10-21 04:04:12,848 - mmcv - INFO - \n", + "backbone.layer2.1.conv.0.bn.weight - torch.Size([144]): \n", + "PretrainedInit: load from https://download.openmmlab.com/mmclassification/v0/mobilenet_v2/mobilenet_v2_batch256_imagenet_20200708-3b2dc3af.pth \n", + " \n", + "2021-10-21 04:04:12,850 - mmcv - INFO - \n", + "backbone.layer2.1.conv.0.bn.bias - torch.Size([144]): \n", + "PretrainedInit: load from https://download.openmmlab.com/mmclassification/v0/mobilenet_v2/mobilenet_v2_batch256_imagenet_20200708-3b2dc3af.pth \n", + " \n", + "2021-10-21 04:04:12,851 - mmcv - INFO - \n", + "backbone.layer2.1.conv.1.conv.weight - torch.Size([144, 1, 3, 3]): \n", + "PretrainedInit: load from https://download.openmmlab.com/mmclassification/v0/mobilenet_v2/mobilenet_v2_batch256_imagenet_20200708-3b2dc3af.pth \n", + " \n", + "2021-10-21 04:04:12,853 - mmcv - INFO - \n", + "backbone.layer2.1.conv.1.bn.weight - torch.Size([144]): \n", + "PretrainedInit: load from https://download.openmmlab.com/mmclassification/v0/mobilenet_v2/mobilenet_v2_batch256_imagenet_20200708-3b2dc3af.pth \n", + " \n", + "2021-10-21 04:04:12,854 - mmcv - INFO - \n", + "backbone.layer2.1.conv.1.bn.bias - torch.Size([144]): \n", + "PretrainedInit: load from https://download.openmmlab.com/mmclassification/v0/mobilenet_v2/mobilenet_v2_batch256_imagenet_20200708-3b2dc3af.pth \n", + " \n", + "2021-10-21 04:04:12,856 - mmcv - INFO - \n", + "backbone.layer2.1.conv.2.conv.weight - torch.Size([24, 144, 1, 1]): \n", + "PretrainedInit: load from https://download.openmmlab.com/mmclassification/v0/mobilenet_v2/mobilenet_v2_batch256_imagenet_20200708-3b2dc3af.pth \n", + " \n", + "2021-10-21 04:04:12,857 - mmcv - INFO - \n", + "backbone.layer2.1.conv.2.bn.weight - torch.Size([24]): \n", + "PretrainedInit: load from https://download.openmmlab.com/mmclassification/v0/mobilenet_v2/mobilenet_v2_batch256_imagenet_20200708-3b2dc3af.pth \n", + " \n", + "2021-10-21 04:04:12,858 - mmcv - INFO - \n", + "backbone.layer2.1.conv.2.bn.bias - torch.Size([24]): \n", + "PretrainedInit: load from https://download.openmmlab.com/mmclassification/v0/mobilenet_v2/mobilenet_v2_batch256_imagenet_20200708-3b2dc3af.pth \n", + " \n", + "2021-10-21 04:04:12,860 - mmcv - INFO - \n", + "backbone.layer3.0.conv.0.conv.weight - torch.Size([144, 24, 1, 1]): \n", + "PretrainedInit: load from https://download.openmmlab.com/mmclassification/v0/mobilenet_v2/mobilenet_v2_batch256_imagenet_20200708-3b2dc3af.pth \n", + " \n", + "2021-10-21 04:04:12,861 - mmcv - INFO - \n", + "backbone.layer3.0.conv.0.bn.weight - torch.Size([144]): \n", + "PretrainedInit: load from https://download.openmmlab.com/mmclassification/v0/mobilenet_v2/mobilenet_v2_batch256_imagenet_20200708-3b2dc3af.pth \n", + " \n", + "2021-10-21 04:04:12,863 - mmcv - INFO - \n", + "backbone.layer3.0.conv.0.bn.bias - torch.Size([144]): \n", + "PretrainedInit: load from https://download.openmmlab.com/mmclassification/v0/mobilenet_v2/mobilenet_v2_batch256_imagenet_20200708-3b2dc3af.pth \n", + " \n", + "2021-10-21 04:04:12,864 - mmcv - INFO - \n", + "backbone.layer3.0.conv.1.conv.weight - torch.Size([144, 1, 3, 3]): \n", + "PretrainedInit: load from https://download.openmmlab.com/mmclassification/v0/mobilenet_v2/mobilenet_v2_batch256_imagenet_20200708-3b2dc3af.pth \n", + " \n", + "2021-10-21 04:04:12,866 - mmcv - INFO - \n", + "backbone.layer3.0.conv.1.bn.weight - torch.Size([144]): \n", + "PretrainedInit: load from https://download.openmmlab.com/mmclassification/v0/mobilenet_v2/mobilenet_v2_batch256_imagenet_20200708-3b2dc3af.pth \n", + " \n", + "2021-10-21 04:04:12,867 - mmcv - INFO - \n", + "backbone.layer3.0.conv.1.bn.bias - torch.Size([144]): \n", + "PretrainedInit: load from https://download.openmmlab.com/mmclassification/v0/mobilenet_v2/mobilenet_v2_batch256_imagenet_20200708-3b2dc3af.pth \n", + " \n", + "2021-10-21 04:04:12,869 - mmcv - INFO - \n", + "backbone.layer3.0.conv.2.conv.weight - torch.Size([32, 144, 1, 1]): \n", + "PretrainedInit: load from https://download.openmmlab.com/mmclassification/v0/mobilenet_v2/mobilenet_v2_batch256_imagenet_20200708-3b2dc3af.pth \n", + " \n", + "2021-10-21 04:04:12,870 - mmcv - INFO - \n", + "backbone.layer3.0.conv.2.bn.weight - torch.Size([32]): \n", + "PretrainedInit: load from https://download.openmmlab.com/mmclassification/v0/mobilenet_v2/mobilenet_v2_batch256_imagenet_20200708-3b2dc3af.pth \n", + " \n", + "2021-10-21 04:04:12,872 - mmcv - INFO - \n", + "backbone.layer3.0.conv.2.bn.bias - torch.Size([32]): \n", + "PretrainedInit: load from https://download.openmmlab.com/mmclassification/v0/mobilenet_v2/mobilenet_v2_batch256_imagenet_20200708-3b2dc3af.pth \n", + " \n", + "2021-10-21 04:04:12,873 - mmcv - INFO - \n", + "backbone.layer3.1.conv.0.conv.weight - torch.Size([192, 32, 1, 1]): \n", + "PretrainedInit: load from https://download.openmmlab.com/mmclassification/v0/mobilenet_v2/mobilenet_v2_batch256_imagenet_20200708-3b2dc3af.pth \n", + " \n", + "2021-10-21 04:04:12,875 - mmcv - INFO - \n", + "backbone.layer3.1.conv.0.bn.weight - torch.Size([192]): \n", + "PretrainedInit: load from https://download.openmmlab.com/mmclassification/v0/mobilenet_v2/mobilenet_v2_batch256_imagenet_20200708-3b2dc3af.pth \n", + " \n", + "2021-10-21 04:04:12,876 - mmcv - INFO - \n", + "backbone.layer3.1.conv.0.bn.bias - torch.Size([192]): \n", + "PretrainedInit: load from https://download.openmmlab.com/mmclassification/v0/mobilenet_v2/mobilenet_v2_batch256_imagenet_20200708-3b2dc3af.pth \n", + " \n", + "2021-10-21 04:04:12,878 - mmcv - INFO - \n", + "backbone.layer3.1.conv.1.conv.weight - torch.Size([192, 1, 3, 3]): \n", + "PretrainedInit: load from https://download.openmmlab.com/mmclassification/v0/mobilenet_v2/mobilenet_v2_batch256_imagenet_20200708-3b2dc3af.pth \n", + " \n", + "2021-10-21 04:04:12,879 - mmcv - INFO - \n", + "backbone.layer3.1.conv.1.bn.weight - torch.Size([192]): \n", + "PretrainedInit: load from https://download.openmmlab.com/mmclassification/v0/mobilenet_v2/mobilenet_v2_batch256_imagenet_20200708-3b2dc3af.pth \n", + " \n", + "2021-10-21 04:04:12,882 - mmcv - INFO - \n", + "backbone.layer3.1.conv.1.bn.bias - torch.Size([192]): \n", + "PretrainedInit: load from https://download.openmmlab.com/mmclassification/v0/mobilenet_v2/mobilenet_v2_batch256_imagenet_20200708-3b2dc3af.pth \n", + " \n", + "2021-10-21 04:04:12,883 - mmcv - INFO - \n", + "backbone.layer3.1.conv.2.conv.weight - torch.Size([32, 192, 1, 1]): \n", + "PretrainedInit: load from https://download.openmmlab.com/mmclassification/v0/mobilenet_v2/mobilenet_v2_batch256_imagenet_20200708-3b2dc3af.pth \n", + " \n", + "2021-10-21 04:04:12,885 - mmcv - INFO - \n", + "backbone.layer3.1.conv.2.bn.weight - torch.Size([32]): \n", + "PretrainedInit: load from https://download.openmmlab.com/mmclassification/v0/mobilenet_v2/mobilenet_v2_batch256_imagenet_20200708-3b2dc3af.pth \n", + " \n", + "2021-10-21 04:04:12,886 - mmcv - INFO - \n", + "backbone.layer3.1.conv.2.bn.bias - torch.Size([32]): \n", + "PretrainedInit: load from https://download.openmmlab.com/mmclassification/v0/mobilenet_v2/mobilenet_v2_batch256_imagenet_20200708-3b2dc3af.pth \n", + " \n", + "2021-10-21 04:04:12,887 - mmcv - INFO - \n", + "backbone.layer3.2.conv.0.conv.weight - torch.Size([192, 32, 1, 1]): \n", + "PretrainedInit: load from https://download.openmmlab.com/mmclassification/v0/mobilenet_v2/mobilenet_v2_batch256_imagenet_20200708-3b2dc3af.pth \n", + " \n", + "2021-10-21 04:04:12,889 - mmcv - INFO - \n", + "backbone.layer3.2.conv.0.bn.weight - torch.Size([192]): \n", + "PretrainedInit: load from https://download.openmmlab.com/mmclassification/v0/mobilenet_v2/mobilenet_v2_batch256_imagenet_20200708-3b2dc3af.pth \n", + " \n", + "2021-10-21 04:04:12,890 - mmcv - INFO - \n", + "backbone.layer3.2.conv.0.bn.bias - torch.Size([192]): \n", + "PretrainedInit: load from https://download.openmmlab.com/mmclassification/v0/mobilenet_v2/mobilenet_v2_batch256_imagenet_20200708-3b2dc3af.pth \n", + " \n", + "2021-10-21 04:04:12,892 - mmcv - INFO - \n", + "backbone.layer3.2.conv.1.conv.weight - torch.Size([192, 1, 3, 3]): \n", + "PretrainedInit: load from https://download.openmmlab.com/mmclassification/v0/mobilenet_v2/mobilenet_v2_batch256_imagenet_20200708-3b2dc3af.pth \n", + " \n", + "2021-10-21 04:04:12,894 - mmcv - INFO - \n", + "backbone.layer3.2.conv.1.bn.weight - torch.Size([192]): \n", + "PretrainedInit: load from https://download.openmmlab.com/mmclassification/v0/mobilenet_v2/mobilenet_v2_batch256_imagenet_20200708-3b2dc3af.pth \n", + " \n", + "2021-10-21 04:04:12,895 - mmcv - INFO - \n", + "backbone.layer3.2.conv.1.bn.bias - torch.Size([192]): \n", + "PretrainedInit: load from https://download.openmmlab.com/mmclassification/v0/mobilenet_v2/mobilenet_v2_batch256_imagenet_20200708-3b2dc3af.pth \n", + " \n", + "2021-10-21 04:04:12,896 - mmcv - INFO - \n", + "backbone.layer3.2.conv.2.conv.weight - torch.Size([32, 192, 1, 1]): \n", + "PretrainedInit: load from https://download.openmmlab.com/mmclassification/v0/mobilenet_v2/mobilenet_v2_batch256_imagenet_20200708-3b2dc3af.pth \n", + " \n", + "2021-10-21 04:04:12,898 - mmcv - INFO - \n", + "backbone.layer3.2.conv.2.bn.weight - torch.Size([32]): \n", + "PretrainedInit: load from https://download.openmmlab.com/mmclassification/v0/mobilenet_v2/mobilenet_v2_batch256_imagenet_20200708-3b2dc3af.pth \n", + " \n", + "2021-10-21 04:04:12,899 - mmcv - INFO - \n", + "backbone.layer3.2.conv.2.bn.bias - torch.Size([32]): \n", + "PretrainedInit: load from https://download.openmmlab.com/mmclassification/v0/mobilenet_v2/mobilenet_v2_batch256_imagenet_20200708-3b2dc3af.pth \n", + " \n", + "2021-10-21 04:04:12,901 - mmcv - INFO - \n", + "backbone.layer4.0.conv.0.conv.weight - torch.Size([192, 32, 1, 1]): \n", + "PretrainedInit: load from https://download.openmmlab.com/mmclassification/v0/mobilenet_v2/mobilenet_v2_batch256_imagenet_20200708-3b2dc3af.pth \n", + " \n", + "2021-10-21 04:04:12,903 - mmcv - INFO - \n", + "backbone.layer4.0.conv.0.bn.weight - torch.Size([192]): \n", + "PretrainedInit: load from https://download.openmmlab.com/mmclassification/v0/mobilenet_v2/mobilenet_v2_batch256_imagenet_20200708-3b2dc3af.pth \n", + " \n", + "2021-10-21 04:04:12,907 - mmcv - INFO - \n", + "backbone.layer4.0.conv.0.bn.bias - torch.Size([192]): \n", + "PretrainedInit: load from https://download.openmmlab.com/mmclassification/v0/mobilenet_v2/mobilenet_v2_batch256_imagenet_20200708-3b2dc3af.pth \n", + " \n", + "2021-10-21 04:04:12,908 - mmcv - INFO - \n", + "backbone.layer4.0.conv.1.conv.weight - torch.Size([192, 1, 3, 3]): \n", + "PretrainedInit: load from https://download.openmmlab.com/mmclassification/v0/mobilenet_v2/mobilenet_v2_batch256_imagenet_20200708-3b2dc3af.pth \n", + " \n", + "2021-10-21 04:04:12,910 - mmcv - INFO - \n", + "backbone.layer4.0.conv.1.bn.weight - torch.Size([192]): \n", + "PretrainedInit: load from https://download.openmmlab.com/mmclassification/v0/mobilenet_v2/mobilenet_v2_batch256_imagenet_20200708-3b2dc3af.pth \n", + " \n", + "2021-10-21 04:04:12,911 - mmcv - INFO - \n", + "backbone.layer4.0.conv.1.bn.bias - torch.Size([192]): \n", + "PretrainedInit: load from https://download.openmmlab.com/mmclassification/v0/mobilenet_v2/mobilenet_v2_batch256_imagenet_20200708-3b2dc3af.pth \n", + " \n", + "2021-10-21 04:04:12,913 - mmcv - INFO - \n", + "backbone.layer4.0.conv.2.conv.weight - torch.Size([64, 192, 1, 1]): \n", + "PretrainedInit: load from https://download.openmmlab.com/mmclassification/v0/mobilenet_v2/mobilenet_v2_batch256_imagenet_20200708-3b2dc3af.pth \n", + " \n", + "2021-10-21 04:04:12,914 - mmcv - INFO - \n", + "backbone.layer4.0.conv.2.bn.weight - torch.Size([64]): \n", + "PretrainedInit: load from https://download.openmmlab.com/mmclassification/v0/mobilenet_v2/mobilenet_v2_batch256_imagenet_20200708-3b2dc3af.pth \n", + " \n", + "2021-10-21 04:04:12,915 - mmcv - INFO - \n", + "backbone.layer4.0.conv.2.bn.bias - torch.Size([64]): \n", + "PretrainedInit: load from https://download.openmmlab.com/mmclassification/v0/mobilenet_v2/mobilenet_v2_batch256_imagenet_20200708-3b2dc3af.pth \n", + " \n", + "2021-10-21 04:04:12,917 - mmcv - INFO - \n", + "backbone.layer4.1.conv.0.conv.weight - torch.Size([384, 64, 1, 1]): \n", + "PretrainedInit: load from https://download.openmmlab.com/mmclassification/v0/mobilenet_v2/mobilenet_v2_batch256_imagenet_20200708-3b2dc3af.pth \n", + " \n", + "2021-10-21 04:04:12,918 - mmcv - INFO - \n", + "backbone.layer4.1.conv.0.bn.weight - torch.Size([384]): \n", + "PretrainedInit: load from https://download.openmmlab.com/mmclassification/v0/mobilenet_v2/mobilenet_v2_batch256_imagenet_20200708-3b2dc3af.pth \n", + " \n", + "2021-10-21 04:04:12,920 - mmcv - INFO - \n", + "backbone.layer4.1.conv.0.bn.bias - torch.Size([384]): \n", + "PretrainedInit: load from https://download.openmmlab.com/mmclassification/v0/mobilenet_v2/mobilenet_v2_batch256_imagenet_20200708-3b2dc3af.pth \n", + " \n", + "2021-10-21 04:04:12,921 - mmcv - INFO - \n", + "backbone.layer4.1.conv.1.conv.weight - torch.Size([384, 1, 3, 3]): \n", + "PretrainedInit: load from https://download.openmmlab.com/mmclassification/v0/mobilenet_v2/mobilenet_v2_batch256_imagenet_20200708-3b2dc3af.pth \n", + " \n", + "2021-10-21 04:04:12,923 - mmcv - INFO - \n", + "backbone.layer4.1.conv.1.bn.weight - torch.Size([384]): \n", + "PretrainedInit: load from https://download.openmmlab.com/mmclassification/v0/mobilenet_v2/mobilenet_v2_batch256_imagenet_20200708-3b2dc3af.pth \n", + " \n", + "2021-10-21 04:04:12,924 - mmcv - INFO - \n", + "backbone.layer4.1.conv.1.bn.bias - torch.Size([384]): \n", + "PretrainedInit: load from https://download.openmmlab.com/mmclassification/v0/mobilenet_v2/mobilenet_v2_batch256_imagenet_20200708-3b2dc3af.pth \n", + " \n", + "2021-10-21 04:04:12,925 - mmcv - INFO - \n", + "backbone.layer4.1.conv.2.conv.weight - torch.Size([64, 384, 1, 1]): \n", + "PretrainedInit: load from https://download.openmmlab.com/mmclassification/v0/mobilenet_v2/mobilenet_v2_batch256_imagenet_20200708-3b2dc3af.pth \n", + " \n", + "2021-10-21 04:04:12,927 - mmcv - INFO - \n", + "backbone.layer4.1.conv.2.bn.weight - torch.Size([64]): \n", + "PretrainedInit: load from https://download.openmmlab.com/mmclassification/v0/mobilenet_v2/mobilenet_v2_batch256_imagenet_20200708-3b2dc3af.pth \n", + " \n", + "2021-10-21 04:04:12,928 - mmcv - INFO - \n", + "backbone.layer4.1.conv.2.bn.bias - torch.Size([64]): \n", + "PretrainedInit: load from https://download.openmmlab.com/mmclassification/v0/mobilenet_v2/mobilenet_v2_batch256_imagenet_20200708-3b2dc3af.pth \n", + " \n", + "2021-10-21 04:04:12,930 - mmcv - INFO - \n", + "backbone.layer4.2.conv.0.conv.weight - torch.Size([384, 64, 1, 1]): \n", + "PretrainedInit: load from https://download.openmmlab.com/mmclassification/v0/mobilenet_v2/mobilenet_v2_batch256_imagenet_20200708-3b2dc3af.pth \n", + " \n", + "2021-10-21 04:04:12,932 - mmcv - INFO - \n", + "backbone.layer4.2.conv.0.bn.weight - torch.Size([384]): \n", + "PretrainedInit: load from https://download.openmmlab.com/mmclassification/v0/mobilenet_v2/mobilenet_v2_batch256_imagenet_20200708-3b2dc3af.pth \n", + " \n", + "2021-10-21 04:04:12,933 - mmcv - INFO - \n", + "backbone.layer4.2.conv.0.bn.bias - torch.Size([384]): \n", + "PretrainedInit: load from https://download.openmmlab.com/mmclassification/v0/mobilenet_v2/mobilenet_v2_batch256_imagenet_20200708-3b2dc3af.pth \n", + " \n", + "2021-10-21 04:04:12,935 - mmcv - INFO - \n", + "backbone.layer4.2.conv.1.conv.weight - torch.Size([384, 1, 3, 3]): \n", + "PretrainedInit: load from https://download.openmmlab.com/mmclassification/v0/mobilenet_v2/mobilenet_v2_batch256_imagenet_20200708-3b2dc3af.pth \n", + " \n", + "2021-10-21 04:04:12,936 - mmcv - INFO - \n", + "backbone.layer4.2.conv.1.bn.weight - torch.Size([384]): \n", + "PretrainedInit: load from https://download.openmmlab.com/mmclassification/v0/mobilenet_v2/mobilenet_v2_batch256_imagenet_20200708-3b2dc3af.pth \n", + " \n", + "2021-10-21 04:04:12,938 - mmcv - INFO - \n", + "backbone.layer4.2.conv.1.bn.bias - torch.Size([384]): \n", + "PretrainedInit: load from https://download.openmmlab.com/mmclassification/v0/mobilenet_v2/mobilenet_v2_batch256_imagenet_20200708-3b2dc3af.pth \n", + " \n", + "2021-10-21 04:04:12,939 - mmcv - INFO - \n", + "backbone.layer4.2.conv.2.conv.weight - torch.Size([64, 384, 1, 1]): \n", + "PretrainedInit: load from https://download.openmmlab.com/mmclassification/v0/mobilenet_v2/mobilenet_v2_batch256_imagenet_20200708-3b2dc3af.pth \n", + " \n", + "2021-10-21 04:04:12,941 - mmcv - INFO - \n", + "backbone.layer4.2.conv.2.bn.weight - torch.Size([64]): \n", + "PretrainedInit: load from https://download.openmmlab.com/mmclassification/v0/mobilenet_v2/mobilenet_v2_batch256_imagenet_20200708-3b2dc3af.pth \n", + " \n", + "2021-10-21 04:04:12,942 - mmcv - INFO - \n", + "backbone.layer4.2.conv.2.bn.bias - torch.Size([64]): \n", + "PretrainedInit: load from https://download.openmmlab.com/mmclassification/v0/mobilenet_v2/mobilenet_v2_batch256_imagenet_20200708-3b2dc3af.pth \n", + " \n", + "2021-10-21 04:04:12,944 - mmcv - INFO - \n", + "backbone.layer4.3.conv.0.conv.weight - torch.Size([384, 64, 1, 1]): \n", + "PretrainedInit: load from https://download.openmmlab.com/mmclassification/v0/mobilenet_v2/mobilenet_v2_batch256_imagenet_20200708-3b2dc3af.pth \n", + " \n", + "2021-10-21 04:04:12,945 - mmcv - INFO - \n", + "backbone.layer4.3.conv.0.bn.weight - torch.Size([384]): \n", + "PretrainedInit: load from https://download.openmmlab.com/mmclassification/v0/mobilenet_v2/mobilenet_v2_batch256_imagenet_20200708-3b2dc3af.pth \n", + " \n", + "2021-10-21 04:04:12,946 - mmcv - INFO - \n", + "backbone.layer4.3.conv.0.bn.bias - torch.Size([384]): \n", + "PretrainedInit: load from https://download.openmmlab.com/mmclassification/v0/mobilenet_v2/mobilenet_v2_batch256_imagenet_20200708-3b2dc3af.pth \n", + " \n", + "2021-10-21 04:04:12,948 - mmcv - INFO - \n", + "backbone.layer4.3.conv.1.conv.weight - torch.Size([384, 1, 3, 3]): \n", + "PretrainedInit: load from https://download.openmmlab.com/mmclassification/v0/mobilenet_v2/mobilenet_v2_batch256_imagenet_20200708-3b2dc3af.pth \n", + " \n", + "2021-10-21 04:04:12,949 - mmcv - INFO - \n", + "backbone.layer4.3.conv.1.bn.weight - torch.Size([384]): \n", + "PretrainedInit: load from https://download.openmmlab.com/mmclassification/v0/mobilenet_v2/mobilenet_v2_batch256_imagenet_20200708-3b2dc3af.pth \n", + " \n", + "2021-10-21 04:04:12,951 - mmcv - INFO - \n", + "backbone.layer4.3.conv.1.bn.bias - torch.Size([384]): \n", + "PretrainedInit: load from https://download.openmmlab.com/mmclassification/v0/mobilenet_v2/mobilenet_v2_batch256_imagenet_20200708-3b2dc3af.pth \n", + " \n", + "2021-10-21 04:04:12,952 - mmcv - INFO - \n", + "backbone.layer4.3.conv.2.conv.weight - torch.Size([64, 384, 1, 1]): \n", + "PretrainedInit: load from https://download.openmmlab.com/mmclassification/v0/mobilenet_v2/mobilenet_v2_batch256_imagenet_20200708-3b2dc3af.pth \n", + " \n", + "2021-10-21 04:04:12,954 - mmcv - INFO - \n", + "backbone.layer4.3.conv.2.bn.weight - torch.Size([64]): \n", + "PretrainedInit: load from https://download.openmmlab.com/mmclassification/v0/mobilenet_v2/mobilenet_v2_batch256_imagenet_20200708-3b2dc3af.pth \n", + " \n", + "2021-10-21 04:04:12,955 - mmcv - INFO - \n", + "backbone.layer4.3.conv.2.bn.bias - torch.Size([64]): \n", + "PretrainedInit: load from https://download.openmmlab.com/mmclassification/v0/mobilenet_v2/mobilenet_v2_batch256_imagenet_20200708-3b2dc3af.pth \n", + " \n", + "2021-10-21 04:04:12,957 - mmcv - INFO - \n", + "backbone.layer5.0.conv.0.conv.weight - torch.Size([384, 64, 1, 1]): \n", + "PretrainedInit: load from https://download.openmmlab.com/mmclassification/v0/mobilenet_v2/mobilenet_v2_batch256_imagenet_20200708-3b2dc3af.pth \n", + " \n", + "2021-10-21 04:04:12,958 - mmcv - INFO - \n", + "backbone.layer5.0.conv.0.bn.weight - torch.Size([384]): \n", + "PretrainedInit: load from https://download.openmmlab.com/mmclassification/v0/mobilenet_v2/mobilenet_v2_batch256_imagenet_20200708-3b2dc3af.pth \n", + " \n", + "2021-10-21 04:04:12,959 - mmcv - INFO - \n", + "backbone.layer5.0.conv.0.bn.bias - torch.Size([384]): \n", + "PretrainedInit: load from https://download.openmmlab.com/mmclassification/v0/mobilenet_v2/mobilenet_v2_batch256_imagenet_20200708-3b2dc3af.pth \n", + " \n", + "2021-10-21 04:04:12,961 - mmcv - INFO - \n", + "backbone.layer5.0.conv.1.conv.weight - torch.Size([384, 1, 3, 3]): \n", + "PretrainedInit: load from https://download.openmmlab.com/mmclassification/v0/mobilenet_v2/mobilenet_v2_batch256_imagenet_20200708-3b2dc3af.pth \n", + " \n", + "2021-10-21 04:04:12,963 - mmcv - INFO - \n", + "backbone.layer5.0.conv.1.bn.weight - torch.Size([384]): \n", + "PretrainedInit: load from https://download.openmmlab.com/mmclassification/v0/mobilenet_v2/mobilenet_v2_batch256_imagenet_20200708-3b2dc3af.pth \n", + " \n", + "2021-10-21 04:04:12,964 - mmcv - INFO - \n", + "backbone.layer5.0.conv.1.bn.bias - torch.Size([384]): \n", + "PretrainedInit: load from https://download.openmmlab.com/mmclassification/v0/mobilenet_v2/mobilenet_v2_batch256_imagenet_20200708-3b2dc3af.pth \n", + " \n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Use load_from_http loader\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2021-10-21 04:04:12,965 - mmcv - INFO - \n", + "backbone.layer5.0.conv.2.conv.weight - torch.Size([96, 384, 1, 1]): \n", + "PretrainedInit: load from https://download.openmmlab.com/mmclassification/v0/mobilenet_v2/mobilenet_v2_batch256_imagenet_20200708-3b2dc3af.pth \n", + " \n", + "2021-10-21 04:04:12,967 - mmcv - INFO - \n", + "backbone.layer5.0.conv.2.bn.weight - torch.Size([96]): \n", + "PretrainedInit: load from https://download.openmmlab.com/mmclassification/v0/mobilenet_v2/mobilenet_v2_batch256_imagenet_20200708-3b2dc3af.pth \n", + " \n", + "2021-10-21 04:04:12,969 - mmcv - INFO - \n", + "backbone.layer5.0.conv.2.bn.bias - torch.Size([96]): \n", + "PretrainedInit: load from https://download.openmmlab.com/mmclassification/v0/mobilenet_v2/mobilenet_v2_batch256_imagenet_20200708-3b2dc3af.pth \n", + " \n", + "2021-10-21 04:04:12,970 - mmcv - INFO - \n", + "backbone.layer5.1.conv.0.conv.weight - torch.Size([576, 96, 1, 1]): \n", + "PretrainedInit: load from https://download.openmmlab.com/mmclassification/v0/mobilenet_v2/mobilenet_v2_batch256_imagenet_20200708-3b2dc3af.pth \n", + " \n", + "2021-10-21 04:04:12,972 - mmcv - INFO - \n", + "backbone.layer5.1.conv.0.bn.weight - torch.Size([576]): \n", + "PretrainedInit: load from https://download.openmmlab.com/mmclassification/v0/mobilenet_v2/mobilenet_v2_batch256_imagenet_20200708-3b2dc3af.pth \n", + " \n", + "2021-10-21 04:04:12,973 - mmcv - INFO - \n", + "backbone.layer5.1.conv.0.bn.bias - torch.Size([576]): \n", + "PretrainedInit: load from https://download.openmmlab.com/mmclassification/v0/mobilenet_v2/mobilenet_v2_batch256_imagenet_20200708-3b2dc3af.pth \n", + " \n", + "2021-10-21 04:04:12,975 - mmcv - INFO - \n", + "backbone.layer5.1.conv.1.conv.weight - torch.Size([576, 1, 3, 3]): \n", + "PretrainedInit: load from https://download.openmmlab.com/mmclassification/v0/mobilenet_v2/mobilenet_v2_batch256_imagenet_20200708-3b2dc3af.pth \n", + " \n", + "2021-10-21 04:04:12,976 - mmcv - INFO - \n", + "backbone.layer5.1.conv.1.bn.weight - torch.Size([576]): \n", + "PretrainedInit: load from https://download.openmmlab.com/mmclassification/v0/mobilenet_v2/mobilenet_v2_batch256_imagenet_20200708-3b2dc3af.pth \n", + " \n", + "2021-10-21 04:04:12,978 - mmcv - INFO - \n", + "backbone.layer5.1.conv.1.bn.bias - torch.Size([576]): \n", + "PretrainedInit: load from https://download.openmmlab.com/mmclassification/v0/mobilenet_v2/mobilenet_v2_batch256_imagenet_20200708-3b2dc3af.pth \n", + " \n", + "2021-10-21 04:04:12,979 - mmcv - INFO - \n", + "backbone.layer5.1.conv.2.conv.weight - torch.Size([96, 576, 1, 1]): \n", + "PretrainedInit: load from https://download.openmmlab.com/mmclassification/v0/mobilenet_v2/mobilenet_v2_batch256_imagenet_20200708-3b2dc3af.pth \n", + " \n", + "2021-10-21 04:04:12,981 - mmcv - INFO - \n", + "backbone.layer5.1.conv.2.bn.weight - torch.Size([96]): \n", + "PretrainedInit: load from https://download.openmmlab.com/mmclassification/v0/mobilenet_v2/mobilenet_v2_batch256_imagenet_20200708-3b2dc3af.pth \n", + " \n", + "2021-10-21 04:04:12,982 - mmcv - INFO - \n", + "backbone.layer5.1.conv.2.bn.bias - torch.Size([96]): \n", + "PretrainedInit: load from https://download.openmmlab.com/mmclassification/v0/mobilenet_v2/mobilenet_v2_batch256_imagenet_20200708-3b2dc3af.pth \n", + " \n", + "2021-10-21 04:04:12,984 - mmcv - INFO - \n", + "backbone.layer5.2.conv.0.conv.weight - torch.Size([576, 96, 1, 1]): \n", + "PretrainedInit: load from https://download.openmmlab.com/mmclassification/v0/mobilenet_v2/mobilenet_v2_batch256_imagenet_20200708-3b2dc3af.pth \n", + " \n", + "2021-10-21 04:04:12,985 - mmcv - INFO - \n", + "backbone.layer5.2.conv.0.bn.weight - torch.Size([576]): \n", + "PretrainedInit: load from https://download.openmmlab.com/mmclassification/v0/mobilenet_v2/mobilenet_v2_batch256_imagenet_20200708-3b2dc3af.pth \n", + " \n", + "2021-10-21 04:04:12,986 - mmcv - INFO - \n", + "backbone.layer5.2.conv.0.bn.bias - torch.Size([576]): \n", + "PretrainedInit: load from https://download.openmmlab.com/mmclassification/v0/mobilenet_v2/mobilenet_v2_batch256_imagenet_20200708-3b2dc3af.pth \n", + " \n", + "2021-10-21 04:04:12,988 - mmcv - INFO - \n", + "backbone.layer5.2.conv.1.conv.weight - torch.Size([576, 1, 3, 3]): \n", + "PretrainedInit: load from https://download.openmmlab.com/mmclassification/v0/mobilenet_v2/mobilenet_v2_batch256_imagenet_20200708-3b2dc3af.pth \n", + " \n", + "2021-10-21 04:04:12,989 - mmcv - INFO - \n", + "backbone.layer5.2.conv.1.bn.weight - torch.Size([576]): \n", + "PretrainedInit: load from https://download.openmmlab.com/mmclassification/v0/mobilenet_v2/mobilenet_v2_batch256_imagenet_20200708-3b2dc3af.pth \n", + " \n", + "2021-10-21 04:04:12,991 - mmcv - INFO - \n", + "backbone.layer5.2.conv.1.bn.bias - torch.Size([576]): \n", + "PretrainedInit: load from https://download.openmmlab.com/mmclassification/v0/mobilenet_v2/mobilenet_v2_batch256_imagenet_20200708-3b2dc3af.pth \n", + " \n", + "2021-10-21 04:04:12,992 - mmcv - INFO - \n", + "backbone.layer5.2.conv.2.conv.weight - torch.Size([96, 576, 1, 1]): \n", + "PretrainedInit: load from https://download.openmmlab.com/mmclassification/v0/mobilenet_v2/mobilenet_v2_batch256_imagenet_20200708-3b2dc3af.pth \n", + " \n", + "2021-10-21 04:04:12,994 - mmcv - INFO - \n", + "backbone.layer5.2.conv.2.bn.weight - torch.Size([96]): \n", + "PretrainedInit: load from https://download.openmmlab.com/mmclassification/v0/mobilenet_v2/mobilenet_v2_batch256_imagenet_20200708-3b2dc3af.pth \n", + " \n", + "2021-10-21 04:04:12,995 - mmcv - INFO - \n", + "backbone.layer5.2.conv.2.bn.bias - torch.Size([96]): \n", + "PretrainedInit: load from https://download.openmmlab.com/mmclassification/v0/mobilenet_v2/mobilenet_v2_batch256_imagenet_20200708-3b2dc3af.pth \n", + " \n", + "2021-10-21 04:04:12,997 - mmcv - INFO - \n", + "backbone.layer6.0.conv.0.conv.weight - torch.Size([576, 96, 1, 1]): \n", + "PretrainedInit: load from https://download.openmmlab.com/mmclassification/v0/mobilenet_v2/mobilenet_v2_batch256_imagenet_20200708-3b2dc3af.pth \n", + " \n", + "2021-10-21 04:04:12,998 - mmcv - INFO - \n", + "backbone.layer6.0.conv.0.bn.weight - torch.Size([576]): \n", + "PretrainedInit: load from https://download.openmmlab.com/mmclassification/v0/mobilenet_v2/mobilenet_v2_batch256_imagenet_20200708-3b2dc3af.pth \n", + " \n", + "2021-10-21 04:04:12,999 - mmcv - INFO - \n", + "backbone.layer6.0.conv.0.bn.bias - torch.Size([576]): \n", + "PretrainedInit: load from https://download.openmmlab.com/mmclassification/v0/mobilenet_v2/mobilenet_v2_batch256_imagenet_20200708-3b2dc3af.pth \n", + " \n", + "2021-10-21 04:04:13,001 - mmcv - INFO - \n", + "backbone.layer6.0.conv.1.conv.weight - torch.Size([576, 1, 3, 3]): \n", + "PretrainedInit: load from https://download.openmmlab.com/mmclassification/v0/mobilenet_v2/mobilenet_v2_batch256_imagenet_20200708-3b2dc3af.pth \n", + " \n", + "2021-10-21 04:04:13,002 - mmcv - INFO - \n", + "backbone.layer6.0.conv.1.bn.weight - torch.Size([576]): \n", + "PretrainedInit: load from https://download.openmmlab.com/mmclassification/v0/mobilenet_v2/mobilenet_v2_batch256_imagenet_20200708-3b2dc3af.pth \n", + " \n", + "2021-10-21 04:04:13,004 - mmcv - INFO - \n", + "backbone.layer6.0.conv.1.bn.bias - torch.Size([576]): \n", + "PretrainedInit: load from https://download.openmmlab.com/mmclassification/v0/mobilenet_v2/mobilenet_v2_batch256_imagenet_20200708-3b2dc3af.pth \n", + " \n", + "2021-10-21 04:04:13,005 - mmcv - INFO - \n", + "backbone.layer6.0.conv.2.conv.weight - torch.Size([160, 576, 1, 1]): \n", + "PretrainedInit: load from https://download.openmmlab.com/mmclassification/v0/mobilenet_v2/mobilenet_v2_batch256_imagenet_20200708-3b2dc3af.pth \n", + " \n", + "2021-10-21 04:04:13,007 - mmcv - INFO - \n", + "backbone.layer6.0.conv.2.bn.weight - torch.Size([160]): \n", + "PretrainedInit: load from https://download.openmmlab.com/mmclassification/v0/mobilenet_v2/mobilenet_v2_batch256_imagenet_20200708-3b2dc3af.pth \n", + " \n", + "2021-10-21 04:04:13,008 - mmcv - INFO - \n", + "backbone.layer6.0.conv.2.bn.bias - torch.Size([160]): \n", + "PretrainedInit: load from https://download.openmmlab.com/mmclassification/v0/mobilenet_v2/mobilenet_v2_batch256_imagenet_20200708-3b2dc3af.pth \n", + " \n", + "2021-10-21 04:04:13,010 - mmcv - INFO - \n", + "backbone.layer6.1.conv.0.conv.weight - torch.Size([960, 160, 1, 1]): \n", + "PretrainedInit: load from https://download.openmmlab.com/mmclassification/v0/mobilenet_v2/mobilenet_v2_batch256_imagenet_20200708-3b2dc3af.pth \n", + " \n", + "2021-10-21 04:04:13,011 - mmcv - INFO - \n", + "backbone.layer6.1.conv.0.bn.weight - torch.Size([960]): \n", + "PretrainedInit: load from https://download.openmmlab.com/mmclassification/v0/mobilenet_v2/mobilenet_v2_batch256_imagenet_20200708-3b2dc3af.pth \n", + " \n", + "2021-10-21 04:04:13,013 - mmcv - INFO - \n", + "backbone.layer6.1.conv.0.bn.bias - torch.Size([960]): \n", + "PretrainedInit: load from https://download.openmmlab.com/mmclassification/v0/mobilenet_v2/mobilenet_v2_batch256_imagenet_20200708-3b2dc3af.pth \n", + " \n", + "2021-10-21 04:04:13,014 - mmcv - INFO - \n", + "backbone.layer6.1.conv.1.conv.weight - torch.Size([960, 1, 3, 3]): \n", + "PretrainedInit: load from https://download.openmmlab.com/mmclassification/v0/mobilenet_v2/mobilenet_v2_batch256_imagenet_20200708-3b2dc3af.pth \n", + " \n", + "2021-10-21 04:04:13,015 - mmcv - INFO - \n", + "backbone.layer6.1.conv.1.bn.weight - torch.Size([960]): \n", + "PretrainedInit: load from https://download.openmmlab.com/mmclassification/v0/mobilenet_v2/mobilenet_v2_batch256_imagenet_20200708-3b2dc3af.pth \n", + " \n", + "2021-10-21 04:04:13,017 - mmcv - INFO - \n", + "backbone.layer6.1.conv.1.bn.bias - torch.Size([960]): \n", + "PretrainedInit: load from https://download.openmmlab.com/mmclassification/v0/mobilenet_v2/mobilenet_v2_batch256_imagenet_20200708-3b2dc3af.pth \n", + " \n", + "2021-10-21 04:04:13,018 - mmcv - INFO - \n", + "backbone.layer6.1.conv.2.conv.weight - torch.Size([160, 960, 1, 1]): \n", + "PretrainedInit: load from https://download.openmmlab.com/mmclassification/v0/mobilenet_v2/mobilenet_v2_batch256_imagenet_20200708-3b2dc3af.pth \n", + " \n", + "2021-10-21 04:04:13,021 - mmcv - INFO - \n", + "backbone.layer6.1.conv.2.bn.weight - torch.Size([160]): \n", + "PretrainedInit: load from https://download.openmmlab.com/mmclassification/v0/mobilenet_v2/mobilenet_v2_batch256_imagenet_20200708-3b2dc3af.pth \n", + " \n", + "2021-10-21 04:04:13,022 - mmcv - INFO - \n", + "backbone.layer6.1.conv.2.bn.bias - torch.Size([160]): \n", + "PretrainedInit: load from https://download.openmmlab.com/mmclassification/v0/mobilenet_v2/mobilenet_v2_batch256_imagenet_20200708-3b2dc3af.pth \n", + " \n", + "2021-10-21 04:04:13,024 - mmcv - INFO - \n", + "backbone.layer6.2.conv.0.conv.weight - torch.Size([960, 160, 1, 1]): \n", + "PretrainedInit: load from https://download.openmmlab.com/mmclassification/v0/mobilenet_v2/mobilenet_v2_batch256_imagenet_20200708-3b2dc3af.pth \n", + " \n", + "2021-10-21 04:04:13,025 - mmcv - INFO - \n", + "backbone.layer6.2.conv.0.bn.weight - torch.Size([960]): \n", + "PretrainedInit: load from https://download.openmmlab.com/mmclassification/v0/mobilenet_v2/mobilenet_v2_batch256_imagenet_20200708-3b2dc3af.pth \n", + " \n", + "2021-10-21 04:04:13,027 - mmcv - INFO - \n", + "backbone.layer6.2.conv.0.bn.bias - torch.Size([960]): \n", + "PretrainedInit: load from https://download.openmmlab.com/mmclassification/v0/mobilenet_v2/mobilenet_v2_batch256_imagenet_20200708-3b2dc3af.pth \n", + " \n", + "2021-10-21 04:04:13,028 - mmcv - INFO - \n", + "backbone.layer6.2.conv.1.conv.weight - torch.Size([960, 1, 3, 3]): \n", + "PretrainedInit: load from https://download.openmmlab.com/mmclassification/v0/mobilenet_v2/mobilenet_v2_batch256_imagenet_20200708-3b2dc3af.pth \n", + " \n", + "2021-10-21 04:04:13,030 - mmcv - INFO - \n", + "backbone.layer6.2.conv.1.bn.weight - torch.Size([960]): \n", + "PretrainedInit: load from https://download.openmmlab.com/mmclassification/v0/mobilenet_v2/mobilenet_v2_batch256_imagenet_20200708-3b2dc3af.pth \n", + " \n", + "2021-10-21 04:04:13,031 - mmcv - INFO - \n", + "backbone.layer6.2.conv.1.bn.bias - torch.Size([960]): \n", + "PretrainedInit: load from https://download.openmmlab.com/mmclassification/v0/mobilenet_v2/mobilenet_v2_batch256_imagenet_20200708-3b2dc3af.pth \n", + " \n", + "2021-10-21 04:04:13,033 - mmcv - INFO - \n", + "backbone.layer6.2.conv.2.conv.weight - torch.Size([160, 960, 1, 1]): \n", + "PretrainedInit: load from https://download.openmmlab.com/mmclassification/v0/mobilenet_v2/mobilenet_v2_batch256_imagenet_20200708-3b2dc3af.pth \n", + " \n", + "2021-10-21 04:04:13,034 - mmcv - INFO - \n", + "backbone.layer6.2.conv.2.bn.weight - torch.Size([160]): \n", + "PretrainedInit: load from https://download.openmmlab.com/mmclassification/v0/mobilenet_v2/mobilenet_v2_batch256_imagenet_20200708-3b2dc3af.pth \n", + " \n", + "2021-10-21 04:04:13,036 - mmcv - INFO - \n", + "backbone.layer6.2.conv.2.bn.bias - torch.Size([160]): \n", + "PretrainedInit: load from https://download.openmmlab.com/mmclassification/v0/mobilenet_v2/mobilenet_v2_batch256_imagenet_20200708-3b2dc3af.pth \n", + " \n", + "2021-10-21 04:04:13,037 - mmcv - INFO - \n", + "backbone.layer7.0.conv.0.conv.weight - torch.Size([960, 160, 1, 1]): \n", + "PretrainedInit: load from https://download.openmmlab.com/mmclassification/v0/mobilenet_v2/mobilenet_v2_batch256_imagenet_20200708-3b2dc3af.pth \n", + " \n", + "2021-10-21 04:04:13,039 - mmcv - INFO - \n", + "backbone.layer7.0.conv.0.bn.weight - torch.Size([960]): \n", + "PretrainedInit: load from https://download.openmmlab.com/mmclassification/v0/mobilenet_v2/mobilenet_v2_batch256_imagenet_20200708-3b2dc3af.pth \n", + " \n", + "2021-10-21 04:04:13,040 - mmcv - INFO - \n", + "backbone.layer7.0.conv.0.bn.bias - torch.Size([960]): \n", + "PretrainedInit: load from https://download.openmmlab.com/mmclassification/v0/mobilenet_v2/mobilenet_v2_batch256_imagenet_20200708-3b2dc3af.pth \n", + " \n", + "2021-10-21 04:04:13,041 - mmcv - INFO - \n", + "backbone.layer7.0.conv.1.conv.weight - torch.Size([960, 1, 3, 3]): \n", + "PretrainedInit: load from https://download.openmmlab.com/mmclassification/v0/mobilenet_v2/mobilenet_v2_batch256_imagenet_20200708-3b2dc3af.pth \n", + " \n", + "2021-10-21 04:04:13,043 - mmcv - INFO - \n", + "backbone.layer7.0.conv.1.bn.weight - torch.Size([960]): \n", + "PretrainedInit: load from https://download.openmmlab.com/mmclassification/v0/mobilenet_v2/mobilenet_v2_batch256_imagenet_20200708-3b2dc3af.pth \n", + " \n", + "2021-10-21 04:04:13,045 - mmcv - INFO - \n", + "backbone.layer7.0.conv.1.bn.bias - torch.Size([960]): \n", + "PretrainedInit: load from https://download.openmmlab.com/mmclassification/v0/mobilenet_v2/mobilenet_v2_batch256_imagenet_20200708-3b2dc3af.pth \n", + " \n", + "2021-10-21 04:04:13,046 - mmcv - INFO - \n", + "backbone.layer7.0.conv.2.conv.weight - torch.Size([320, 960, 1, 1]): \n", + "PretrainedInit: load from https://download.openmmlab.com/mmclassification/v0/mobilenet_v2/mobilenet_v2_batch256_imagenet_20200708-3b2dc3af.pth \n", + " \n", + "2021-10-21 04:04:13,048 - mmcv - INFO - \n", + "backbone.layer7.0.conv.2.bn.weight - torch.Size([320]): \n", + "PretrainedInit: load from https://download.openmmlab.com/mmclassification/v0/mobilenet_v2/mobilenet_v2_batch256_imagenet_20200708-3b2dc3af.pth \n", + " \n", + "2021-10-21 04:04:13,049 - mmcv - INFO - \n", + "backbone.layer7.0.conv.2.bn.bias - torch.Size([320]): \n", + "PretrainedInit: load from https://download.openmmlab.com/mmclassification/v0/mobilenet_v2/mobilenet_v2_batch256_imagenet_20200708-3b2dc3af.pth \n", + " \n", + "2021-10-21 04:04:13,051 - mmcv - INFO - \n", + "backbone.conv2.conv.weight - torch.Size([1280, 320, 1, 1]): \n", + "PretrainedInit: load from https://download.openmmlab.com/mmclassification/v0/mobilenet_v2/mobilenet_v2_batch256_imagenet_20200708-3b2dc3af.pth \n", + " \n", + "2021-10-21 04:04:13,052 - mmcv - INFO - \n", + "backbone.conv2.bn.weight - torch.Size([1280]): \n", + "PretrainedInit: load from https://download.openmmlab.com/mmclassification/v0/mobilenet_v2/mobilenet_v2_batch256_imagenet_20200708-3b2dc3af.pth \n", + " \n", + "2021-10-21 04:04:13,054 - mmcv - INFO - \n", + "backbone.conv2.bn.bias - torch.Size([1280]): \n", + "PretrainedInit: load from https://download.openmmlab.com/mmclassification/v0/mobilenet_v2/mobilenet_v2_batch256_imagenet_20200708-3b2dc3af.pth \n", + " \n", + "2021-10-21 04:04:13,055 - mmcv - INFO - \n", + "head.fc.weight - torch.Size([2, 1280]): \n", + "NormalInit: mean=0, std=0.01, bias=0 \n", + " \n", + "2021-10-21 04:04:13,057 - mmcv - INFO - \n", + "head.fc.bias - torch.Size([2]): \n", + "NormalInit: mean=0, std=0.01, bias=0 \n", + " \n", + "2021-10-21 04:04:13,408 - mmcls - INFO - Start running, host: root@cc5b42005207, work_dir: /content/mmclassification/work_dirs/cats_dogs_dataset\n", + "2021-10-21 04:04:13,412 - mmcls - INFO - Hooks will be executed in the following order:\n", + "before_run:\n", + "(VERY_HIGH ) StepLrUpdaterHook \n", + "(NORMAL ) CheckpointHook \n", + "(LOW ) EvalHook \n", + "(VERY_LOW ) TextLoggerHook \n", + " -------------------- \n", + "before_train_epoch:\n", + "(VERY_HIGH ) StepLrUpdaterHook \n", + "(LOW ) IterTimerHook \n", + "(LOW ) EvalHook \n", + "(VERY_LOW ) TextLoggerHook \n", + " -------------------- \n", + "before_train_iter:\n", + "(VERY_HIGH ) StepLrUpdaterHook \n", + "(LOW ) IterTimerHook \n", + "(LOW ) EvalHook \n", + " -------------------- \n", + "after_train_iter:\n", + "(ABOVE_NORMAL) OptimizerHook \n", + "(NORMAL ) CheckpointHook \n", + "(LOW ) IterTimerHook \n", + "(LOW ) EvalHook \n", + "(VERY_LOW ) TextLoggerHook \n", + " -------------------- \n", + "after_train_epoch:\n", + "(NORMAL ) CheckpointHook \n", + "(LOW ) EvalHook \n", + "(VERY_LOW ) TextLoggerHook \n", + " -------------------- \n", + "before_val_epoch:\n", + "(LOW ) IterTimerHook \n", + "(VERY_LOW ) TextLoggerHook \n", + " -------------------- \n", + "before_val_iter:\n", + "(LOW ) IterTimerHook \n", + " -------------------- \n", + "after_val_iter:\n", + "(LOW ) IterTimerHook \n", + " -------------------- \n", + "after_val_epoch:\n", + "(VERY_LOW ) TextLoggerHook \n", + " -------------------- \n", + "2021-10-21 04:04:13,417 - mmcls - INFO - workflow: [('train', 1)], max: 2 epochs\n", + "2021-10-21 04:04:18,924 - mmcls - INFO - Epoch [1][10/201]\tlr: 5.000e-03, eta: 0:03:29, time: 0.535, data_time: 0.259, memory: 1709, loss: 0.3917\n", + "2021-10-21 04:04:21,743 - mmcls - INFO - Epoch [1][20/201]\tlr: 5.000e-03, eta: 0:02:35, time: 0.281, data_time: 0.019, memory: 1709, loss: 0.3508\n", + "2021-10-21 04:04:24,552 - mmcls - INFO - Epoch [1][30/201]\tlr: 5.000e-03, eta: 0:02:15, time: 0.280, data_time: 0.020, memory: 1709, loss: 0.3955\n", + "2021-10-21 04:04:27,371 - mmcls - INFO - Epoch [1][40/201]\tlr: 5.000e-03, eta: 0:02:04, time: 0.282, data_time: 0.021, memory: 1709, loss: 0.2485\n", + "2021-10-21 04:04:30,202 - mmcls - INFO - Epoch [1][50/201]\tlr: 5.000e-03, eta: 0:01:56, time: 0.283, data_time: 0.021, memory: 1709, loss: 0.4196\n", + "2021-10-21 04:04:33,021 - mmcls - INFO - Epoch [1][60/201]\tlr: 5.000e-03, eta: 0:01:50, time: 0.282, data_time: 0.023, memory: 1709, loss: 0.4994\n", + "2021-10-21 04:04:35,800 - mmcls - INFO - Epoch [1][70/201]\tlr: 5.000e-03, eta: 0:01:45, time: 0.278, data_time: 0.020, memory: 1709, loss: 0.4372\n", + "2021-10-21 04:04:38,595 - mmcls - INFO - Epoch [1][80/201]\tlr: 5.000e-03, eta: 0:01:40, time: 0.280, data_time: 0.019, memory: 1709, loss: 0.3179\n", + "2021-10-21 04:04:41,351 - mmcls - INFO - Epoch [1][90/201]\tlr: 5.000e-03, eta: 0:01:36, time: 0.276, data_time: 0.018, memory: 1709, loss: 0.3175\n", + "2021-10-21 04:04:44,157 - mmcls - INFO - Epoch [1][100/201]\tlr: 5.000e-03, eta: 0:01:32, time: 0.280, data_time: 0.021, memory: 1709, loss: 0.3412\n", + "2021-10-21 04:04:46,974 - mmcls - INFO - Epoch [1][110/201]\tlr: 5.000e-03, eta: 0:01:28, time: 0.282, data_time: 0.019, memory: 1709, loss: 0.2985\n", + "2021-10-21 04:04:49,767 - mmcls - INFO - Epoch [1][120/201]\tlr: 5.000e-03, eta: 0:01:25, time: 0.280, data_time: 0.021, memory: 1709, loss: 0.2778\n", + "2021-10-21 04:04:52,553 - mmcls - INFO - Epoch [1][130/201]\tlr: 5.000e-03, eta: 0:01:21, time: 0.278, data_time: 0.021, memory: 1709, loss: 0.2229\n", + "2021-10-21 04:04:55,356 - mmcls - INFO - Epoch [1][140/201]\tlr: 5.000e-03, eta: 0:01:18, time: 0.280, data_time: 0.021, memory: 1709, loss: 0.2318\n", + "2021-10-21 04:04:58,177 - mmcls - INFO - Epoch [1][150/201]\tlr: 5.000e-03, eta: 0:01:14, time: 0.282, data_time: 0.022, memory: 1709, loss: 0.2333\n", + "2021-10-21 04:05:01,025 - mmcls - INFO - Epoch [1][160/201]\tlr: 5.000e-03, eta: 0:01:11, time: 0.285, data_time: 0.020, memory: 1709, loss: 0.2783\n", + "2021-10-21 04:05:03,833 - mmcls - INFO - Epoch [1][170/201]\tlr: 5.000e-03, eta: 0:01:08, time: 0.281, data_time: 0.022, memory: 1709, loss: 0.2132\n", + "2021-10-21 04:05:06,648 - mmcls - INFO - Epoch [1][180/201]\tlr: 5.000e-03, eta: 0:01:05, time: 0.281, data_time: 0.019, memory: 1709, loss: 0.2096\n", + "2021-10-21 04:05:09,472 - mmcls - INFO - Epoch [1][190/201]\tlr: 5.000e-03, eta: 0:01:02, time: 0.282, data_time: 0.020, memory: 1709, loss: 0.1729\n", + "2021-10-21 04:05:12,229 - mmcls - INFO - Epoch [1][200/201]\tlr: 5.000e-03, eta: 0:00:59, time: 0.275, data_time: 0.018, memory: 1709, loss: 0.1969\n", + "2021-10-21 04:05:12,275 - mmcls - INFO - Saving checkpoint at 1 epochs\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[>>>>>>>>>>>>>>>>>>>>>>>>>>] 1601/1601, 104.1 task/s, elapsed: 15s, ETA: 0s" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2021-10-21 04:05:27,767 - mmcls - INFO - Epoch(val) [1][51]\taccuracy_top-1: 95.6277\n", + "2021-10-21 04:05:32,987 - mmcls - INFO - Epoch [2][10/201]\tlr: 5.000e-04, eta: 0:00:57, time: 0.505, data_time: 0.238, memory: 1709, loss: 0.1764\n", + "2021-10-21 04:05:35,779 - mmcls - INFO - Epoch [2][20/201]\tlr: 5.000e-04, eta: 0:00:54, time: 0.278, data_time: 0.020, memory: 1709, loss: 0.1514\n", + "2021-10-21 04:05:38,537 - mmcls - INFO - Epoch [2][30/201]\tlr: 5.000e-04, eta: 0:00:51, time: 0.276, data_time: 0.020, memory: 1709, loss: 0.1395\n", + "2021-10-21 04:05:41,283 - mmcls - INFO - Epoch [2][40/201]\tlr: 5.000e-04, eta: 0:00:48, time: 0.275, data_time: 0.020, memory: 1709, loss: 0.1508\n", + "2021-10-21 04:05:44,017 - mmcls - INFO - Epoch [2][50/201]\tlr: 5.000e-04, eta: 0:00:44, time: 0.274, data_time: 0.021, memory: 1709, loss: 0.1771\n", + "2021-10-21 04:05:46,800 - mmcls - INFO - Epoch [2][60/201]\tlr: 5.000e-04, eta: 0:00:41, time: 0.278, data_time: 0.020, memory: 1709, loss: 0.1438\n", + "2021-10-21 04:05:49,570 - mmcls - INFO - Epoch [2][70/201]\tlr: 5.000e-04, eta: 0:00:38, time: 0.277, data_time: 0.020, memory: 1709, loss: 0.1321\n", + "2021-10-21 04:05:52,314 - mmcls - INFO - Epoch [2][80/201]\tlr: 5.000e-04, eta: 0:00:35, time: 0.275, data_time: 0.021, memory: 1709, loss: 0.1629\n", + "2021-10-21 04:05:55,052 - mmcls - INFO - Epoch [2][90/201]\tlr: 5.000e-04, eta: 0:00:32, time: 0.273, data_time: 0.021, memory: 1709, loss: 0.1574\n", + "2021-10-21 04:05:57,791 - mmcls - INFO - Epoch [2][100/201]\tlr: 5.000e-04, eta: 0:00:29, time: 0.274, data_time: 0.019, memory: 1709, loss: 0.1220\n", + "2021-10-21 04:06:00,534 - mmcls - INFO - Epoch [2][110/201]\tlr: 5.000e-04, eta: 0:00:26, time: 0.274, data_time: 0.021, memory: 1709, loss: 0.2550\n", + "2021-10-21 04:06:03,295 - mmcls - INFO - Epoch [2][120/201]\tlr: 5.000e-04, eta: 0:00:23, time: 0.276, data_time: 0.019, memory: 1709, loss: 0.1528\n", + "2021-10-21 04:06:06,048 - mmcls - INFO - Epoch [2][130/201]\tlr: 5.000e-04, eta: 0:00:20, time: 0.275, data_time: 0.022, memory: 1709, loss: 0.1223\n", + "2021-10-21 04:06:08,811 - mmcls - INFO - Epoch [2][140/201]\tlr: 5.000e-04, eta: 0:00:17, time: 0.276, data_time: 0.021, memory: 1709, loss: 0.1734\n", + "2021-10-21 04:06:11,576 - mmcls - INFO - Epoch [2][150/201]\tlr: 5.000e-04, eta: 0:00:14, time: 0.277, data_time: 0.020, memory: 1709, loss: 0.1527\n", + "2021-10-21 04:06:14,330 - mmcls - INFO - Epoch [2][160/201]\tlr: 5.000e-04, eta: 0:00:11, time: 0.276, data_time: 0.020, memory: 1709, loss: 0.1910\n", + "2021-10-21 04:06:17,106 - mmcls - INFO - Epoch [2][170/201]\tlr: 5.000e-04, eta: 0:00:09, time: 0.277, data_time: 0.019, memory: 1709, loss: 0.1922\n", + "2021-10-21 04:06:19,855 - mmcls - INFO - Epoch [2][180/201]\tlr: 5.000e-04, eta: 0:00:06, time: 0.274, data_time: 0.023, memory: 1709, loss: 0.1760\n", + "2021-10-21 04:06:22,638 - mmcls - INFO - Epoch [2][190/201]\tlr: 5.000e-04, eta: 0:00:03, time: 0.278, data_time: 0.019, memory: 1709, loss: 0.1739\n", + "2021-10-21 04:06:25,367 - mmcls - INFO - Epoch [2][200/201]\tlr: 5.000e-04, eta: 0:00:00, time: 0.272, data_time: 0.020, memory: 1709, loss: 0.1654\n", + "2021-10-21 04:06:25,410 - mmcls - INFO - Saving checkpoint at 2 epochs\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[>>>>>>>>>>>>>>>>>>>>>>>>>>] 1601/1601, 105.5 task/s, elapsed: 15s, ETA: 0s" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2021-10-21 04:06:40,694 - mmcls - INFO - Epoch(val) [2][51]\taccuracy_top-1: 97.5016\n" + ] + } + ], + "source": [ + "import time\n", + "import mmcv\n", + "import os.path as osp\n", + "\n", + "from mmcls.datasets import build_dataset\n", + "from mmcls.models import build_classifier\n", + "from mmcls.apis import train_model\n", + "\n", + "# 创建工作目录\n", + "mmcv.mkdir_or_exist(osp.abspath(cfg.work_dir))\n", + "# 创建分类器\n", + "model = build_classifier(cfg.model)\n", + "model.init_weights()\n", + "# 创建数据集\n", + "datasets = [build_dataset(cfg.data.train)]\n", + "# 添加类别属性以方便可视化\n", + "model.CLASSES = datasets[0].CLASSES\n", + "# 开始微调\n", + "train_model(\n", + " model,\n", + " datasets,\n", + " cfg,\n", + " distributed=False,\n", + " validate=True,\n", + " timestamp=time.strftime('%Y%m%d_%H%M%S', time.localtime()),\n", + " meta=dict())" + ] + }, + { + "cell_type": "code", + "execution_count": 34, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 304 + }, + "id": "HsoGBZA3miui", + "outputId": "eb2e09f5-55ce-4165-b754-3b75dbc829ab" + }, + "outputs": [ + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "%matplotlib inline\n", + "# 验证训练好的模型\n", + "\n", + "img = mmcv.imread('data/cats_dogs_dataset/training_set/training_set/cats/cat.1.jpg')\n", + "\n", + "model.cfg = cfg\n", + "result = inference_model(model, img)\n", + "\n", + "show_result_pyplot(model, img, result)" + ] + } + ], + "metadata": { + "accelerator": "GPU", + "colab": { + "collapsed_sections": [], + "name": "MMClassification_python_cn.ipynb", + "provenance": [], + "toc_visible": true + }, + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.8.11" + }, + "widgets": { + "application/vnd.jupyter.widget-state+json": { + "31475aa888da4c8d844ba99a0b3397f5": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "ProgressStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "ProgressStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "bar_color": null, + "description_width": "" + } + }, + "520112917e0f4844995d418c5041d23a": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "863d2a8cc4074f2e890ba6aea7c54384": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "DescriptionStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "8a8ab7c27e404459951cffe7a32b8faa": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "DescriptionStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "9f3f6b72b4d14e2a96b9185331c8081b": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_be55ab36267d4dcab1d83dfaa8540270", + "placeholder": "​", + "style": "IPY_MODEL_863d2a8cc4074f2e890ba6aea7c54384", + "value": "100%" + } + }, + "a275bef3584b49ab9b680b528420d461": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "FloatProgressModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "FloatProgressModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "ProgressView", + "bar_style": "success", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_e310c50e610248dd897fbbf5dd09dd7a", + "max": 14206911, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_31475aa888da4c8d844ba99a0b3397f5", + "value": 14206911 + } + }, + "badf240bbb7d442fbd214e837edbffe2": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HBoxModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_9f3f6b72b4d14e2a96b9185331c8081b", + "IPY_MODEL_a275bef3584b49ab9b680b528420d461", + "IPY_MODEL_c4b2c6914a05497b8d2b691bd6dda6da" + ], + "layout": "IPY_MODEL_520112917e0f4844995d418c5041d23a" + } + }, + "be55ab36267d4dcab1d83dfaa8540270": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "c4b2c6914a05497b8d2b691bd6dda6da": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "1.5.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_e1a3dce90c1a4804a9ef0c687a9c0703", + "placeholder": "​", + "style": "IPY_MODEL_8a8ab7c27e404459951cffe7a32b8faa", + "value": " 13.5M/13.5M [00:01<00:00, 9.60MB/s]" + } + }, + "e1a3dce90c1a4804a9ef0c687a9c0703": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "e310c50e610248dd897fbbf5dd09dd7a": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "1.2.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + } + } + } + }, + "nbformat": 4, + "nbformat_minor": 0 +} diff --git a/openmmlab_test/mmclassification-0.24.1/docs/zh_CN/tutorials/MMClassification_tools_cn.ipynb b/openmmlab_test/mmclassification-0.24.1/docs/zh_CN/tutorials/MMClassification_tools_cn.ipynb new file mode 100644 index 00000000..1914956f --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/docs/zh_CN/tutorials/MMClassification_tools_cn.ipynb @@ -0,0 +1,1247 @@ +{ + "nbformat": 4, + "nbformat_minor": 0, + "metadata": { + "accelerator": "GPU", + "colab": { + "name": "MMClassification_tools_cn.ipynb", + "provenance": [], + "collapsed_sections": [], + "toc_visible": true + }, + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.8.8" + } + }, + "cells": [ + { + "cell_type": "markdown", + "metadata": { + "id": "XjQxmm04iTx4", + "tags": [] + }, + "source": [ + "\"Open" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "4z0JDgisPRr-" + }, + "source": [ + "# MMClassification 命令行工具教程\n", + "\n", + "在本教程中会介绍如下内容:\n", + "\n", + "* 如何安装 MMClassification\n", + "* 准备数据\n", + "* 准备配置文件\n", + "* 使用 shell 命令进行模型训练和测试" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "inm7Ciy5PXrU" + }, + "source": [ + "## 安装 MMClassification\n", + "\n", + "在使用 MMClassification 之前,我们需要配置环境,步骤如下:\n", + "\n", + "- 安装 Python, CUDA, C/C++ compiler 和 git\n", + "- 安装 PyTorch (CUDA 版)\n", + "- 安装 mmcv\n", + "- 克隆 mmcls github 代码库然后安装\n", + "\n", + "因为我们在 Google Colab 进行实验,Colab 已经帮我们完成了基本的配置,我们可以直接跳过前面两个步骤 。" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "TDOxbcDvPbNk" + }, + "source": [ + "### 检查环境" + ] + }, + { + "cell_type": "code", + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "c6MbAw10iUJI", + "outputId": "5f95ad09-7b96-4d27-dfa8-17f31caba50d" + }, + "source": [ + "%cd /content" + ], + "execution_count": 1, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "/content\n" + ] + } + ] + }, + { + "cell_type": "code", + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "4IyFL3MaiYRu", + "outputId": "b0ab6848-12ea-49a1-98ec-691e2c9814e1" + }, + "source": [ + "!pwd" + ], + "execution_count": 2, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "/content\n" + ] + } + ] + }, + { + "cell_type": "code", + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "DMw7QwvpiiUO", + "outputId": "d699b9d2-22e5-431c-83d8-9317a694cb0e" + }, + "source": [ + "# 检查 nvcc 版本\n", + "!nvcc -V" + ], + "execution_count": 3, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "nvcc: NVIDIA (R) Cuda compiler driver\n", + "Copyright (c) 2005-2020 NVIDIA Corporation\n", + "Built on Mon_Oct_12_20:09:46_PDT_2020\n", + "Cuda compilation tools, release 11.1, V11.1.105\n", + "Build cuda_11.1.TC455_06.29190527_0\n" + ] + } + ] + }, + { + "cell_type": "code", + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "4VIBU7Fain4D", + "outputId": "7eb1d91f-86c7-43cf-d335-3d37ae014060" + }, + "source": [ + "# 检查 GCC 版本\n", + "!gcc --version" + ], + "execution_count": 4, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "gcc (Ubuntu 7.5.0-3ubuntu1~18.04) 7.5.0\n", + "Copyright (C) 2017 Free Software Foundation, Inc.\n", + "This is free software; see the source for copying conditions. There is NO\n", + "warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n", + "\n" + ] + } + ] + }, + { + "cell_type": "code", + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "24lDLCqFisZ9", + "outputId": "3c553c42-e7ac-4c6a-863e-13ad158bac22" + }, + "source": [ + "# 检查 PyTorch 的安装情况\n", + "import torch, torchvision\n", + "print(torch.__version__)\n", + "print(torch.cuda.is_available())" + ], + "execution_count": 5, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "1.9.0+cu111\n", + "True\n" + ] + } + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "R2aZNLUwizBs" + }, + "source": [ + "### 安装 MMCV\n", + "\n", + "MMCV 是 OpenMMLab 代码库的基础库。Linux 环境的安装 whl 包已经提前打包好,大家可以直接下载安装。\n", + "\n", + "需要注意 PyTorch 和 CUDA 版本,确保能够正常安装。\n", + "\n", + "在前面的步骤中,我们输出了环境中 CUDA 和 PyTorch 的版本,分别是 11.1 和 1.9.0,我们需要选择相应的 MMCV 版本。\n", + "\n", + "另外,也可以安装完整版的 MMCV-full,它包含所有的特性以及丰富的开箱即用的 CUDA 算子。需要注意的是完整版本可能需要更长时间来编译。" + ] + }, + { + "cell_type": "code", + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "nla40LrLi7oo", + "outputId": "475dcd11-0b58-45d3-ad81-a3b7772d3132" + }, + "source": [ + "# 安装 mmcv\n", + "!pip install mmcv -f https://download.openmmlab.com/mmcv/dist/cu111/torch1.9.0/index.html\n", + "# !pip install mmcv-full -f https://download.openmmlab.com/mmcv/dist/cu111/torch1.9.0/index.html" + ], + "execution_count": 6, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Looking in links: https://download.openmmlab.com/mmcv/dist/cu111/torch1.9.0/index.html\n", + "Collecting mmcv\n", + " Downloading mmcv-1.3.15.tar.gz (352 kB)\n", + "\u001b[K |████████████████████████████████| 352 kB 5.2 MB/s \n", + "\u001b[?25hCollecting addict\n", + " Downloading addict-2.4.0-py3-none-any.whl (3.8 kB)\n", + "Requirement already satisfied: numpy in /usr/local/lib/python3.7/dist-packages (from mmcv) (1.19.5)\n", + "Requirement already satisfied: packaging in /usr/local/lib/python3.7/dist-packages (from mmcv) (21.0)\n", + "Requirement already satisfied: Pillow in /usr/local/lib/python3.7/dist-packages (from mmcv) (7.1.2)\n", + "Requirement already satisfied: pyyaml in /usr/local/lib/python3.7/dist-packages (from mmcv) (3.13)\n", + "Collecting yapf\n", + " Downloading yapf-0.31.0-py2.py3-none-any.whl (185 kB)\n", + "\u001b[K |████████████████████████████████| 185 kB 45.4 MB/s \n", + "\u001b[?25hRequirement already satisfied: pyparsing>=2.0.2 in /usr/local/lib/python3.7/dist-packages (from packaging->mmcv) (2.4.7)\n", + "Building wheels for collected packages: mmcv\n", + " Building wheel for mmcv (setup.py) ... \u001b[?25l\u001b[?25hdone\n", + " Created wheel for mmcv: filename=mmcv-1.3.15-py2.py3-none-any.whl size=509835 sha256=0296cfd1e3e858ece30623050be2953941a442daf0575389030aa25603e5c205\n", + " Stored in directory: /root/.cache/pip/wheels/b2/f4/4e/8f6d2dd2bef6b7eb8c89aa0e5d61acd7bff60aaf3d4d4b29b0\n", + "Successfully built mmcv\n", + "Installing collected packages: yapf, addict, mmcv\n", + "Successfully installed addict-2.4.0 mmcv-1.3.15 yapf-0.31.0\n" + ] + } + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "GDTUrYvXjlRb" + }, + "source": [ + "### 克隆并安装 MMClassification\n", + "\n", + "接着,我们从 github 上克隆下 mmcls 最新代码库并进行安装。" + ] + }, + { + "cell_type": "code", + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "Bwme6tWHjl5s", + "outputId": "07c0ca6f-8a10-4ac3-a6bc-afabff6aba51" + }, + "source": [ + "# 下载 mmcls 代码库\n", + "!git clone https://github.com/open-mmlab/mmclassification.git\n", + "%cd mmclassification/\n", + "\n", + "# 从源码安装 MMClassification\n", + "!pip install -e . " + ], + "execution_count": 7, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Cloning into 'mmclassification'...\n", + "remote: Enumerating objects: 4152, done.\u001b[K\n", + "remote: Counting objects: 100% (994/994), done.\u001b[K\n", + "remote: Compressing objects: 100% (574/574), done.\u001b[K\n", + "remote: Total 4152 (delta 476), reused 764 (delta 403), pack-reused 3158\u001b[K\n", + "Receiving objects: 100% (4152/4152), 8.20 MiB | 20.90 MiB/s, done.\n", + "Resolving deltas: 100% (2525/2525), done.\n", + "/content/mmclassification\n", + "Obtaining file:///content/mmclassification\n", + "Requirement already satisfied: matplotlib in /usr/local/lib/python3.7/dist-packages (from mmcls==0.16.0) (3.2.2)\n", + "Requirement already satisfied: numpy in /usr/local/lib/python3.7/dist-packages (from mmcls==0.16.0) (1.19.5)\n", + "Requirement already satisfied: packaging in /usr/local/lib/python3.7/dist-packages (from mmcls==0.16.0) (21.0)\n", + "Requirement already satisfied: python-dateutil>=2.1 in /usr/local/lib/python3.7/dist-packages (from matplotlib->mmcls==0.16.0) (2.8.2)\n", + "Requirement already satisfied: kiwisolver>=1.0.1 in /usr/local/lib/python3.7/dist-packages (from matplotlib->mmcls==0.16.0) (1.3.2)\n", + "Requirement already satisfied: cycler>=0.10 in /usr/local/lib/python3.7/dist-packages (from matplotlib->mmcls==0.16.0) (0.10.0)\n", + "Requirement already satisfied: pyparsing!=2.0.4,!=2.1.2,!=2.1.6,>=2.0.1 in /usr/local/lib/python3.7/dist-packages (from matplotlib->mmcls==0.16.0) (2.4.7)\n", + "Requirement already satisfied: six in /usr/local/lib/python3.7/dist-packages (from cycler>=0.10->matplotlib->mmcls==0.16.0) (1.15.0)\n", + "Installing collected packages: mmcls\n", + " Running setup.py develop for mmcls\n", + "Successfully installed mmcls-0.16.0\n" + ] + } + ] + }, + { + "cell_type": "code", + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "hFg_oSG4j3zB", + "outputId": "521a6a75-2dbb-4ff2-ab9f-4fbe785b4400" + }, + "source": [ + "# 检查 MMClassification 的安装情况\n", + "import mmcls\n", + "print(mmcls.__version__)" + ], + "execution_count": 8, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "0.16.0\n" + ] + } + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "arpM46CZOPtR" + }, + "source": [ + "## 准备数据" + ] + }, + { + "cell_type": "code", + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "XHCHnKb_Qd3P", + "outputId": "4f6eaa3f-7b96-46e4-e75b-aae28c8ec42d" + }, + "source": [ + "# 下载分类数据集文件 (猫狗数据集)\n", + "!wget https://www.dropbox.com/s/wml49yrtdo53mie/cats_dogs_dataset_reorg.zip?dl=0 -O cats_dogs_dataset.zip\n", + "!mkdir data\n", + "!unzip -q cats_dogs_dataset.zip -d ./data/" + ], + "execution_count": 9, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "--2021-10-21 02:53:27-- https://www.dropbox.com/s/wml49yrtdo53mie/cats_dogs_dataset_reorg.zip?dl=0\n", + "Resolving www.dropbox.com (www.dropbox.com)... 162.125.3.18, 2620:100:6018:18::a27d:312\n", + "Connecting to www.dropbox.com (www.dropbox.com)|162.125.3.18|:443... connected.\n", + "HTTP request sent, awaiting response... 301 Moved Permanently\n", + "Location: /s/raw/wml49yrtdo53mie/cats_dogs_dataset_reorg.zip [following]\n", + "--2021-10-21 02:53:27-- https://www.dropbox.com/s/raw/wml49yrtdo53mie/cats_dogs_dataset_reorg.zip\n", + "Reusing existing connection to www.dropbox.com:443.\n", + "HTTP request sent, awaiting response... 302 Found\n", + "Location: https://uc2e142222b11f678e96f89b0223.dl.dropboxusercontent.com/cd/0/inline/BYaBa5-WWfPf_jhSt9A5JMet_BB55MzZhB2D3RXLo53VGHSIYbVMnFTdccihcsD-kwc9FxBG8qOwqA50z7XD6-3yUXWK9iA0x4L8IV5wegYKilKuDauDKWiNAsbgZoEBg4nC1UWR5pLSiH3j0Dn68b2V/file# [following]\n", + "--2021-10-21 02:53:27-- https://uc2e142222b11f678e96f89b0223.dl.dropboxusercontent.com/cd/0/inline/BYaBa5-WWfPf_jhSt9A5JMet_BB55MzZhB2D3RXLo53VGHSIYbVMnFTdccihcsD-kwc9FxBG8qOwqA50z7XD6-3yUXWK9iA0x4L8IV5wegYKilKuDauDKWiNAsbgZoEBg4nC1UWR5pLSiH3j0Dn68b2V/file\n", + "Resolving uc2e142222b11f678e96f89b0223.dl.dropboxusercontent.com (uc2e142222b11f678e96f89b0223.dl.dropboxusercontent.com)... 162.125.3.15, 2620:100:6018:15::a27d:30f\n", + "Connecting to uc2e142222b11f678e96f89b0223.dl.dropboxusercontent.com (uc2e142222b11f678e96f89b0223.dl.dropboxusercontent.com)|162.125.3.15|:443... connected.\n", + "HTTP request sent, awaiting response... 302 Found\n", + "Location: /cd/0/inline2/BYZCXE2D0HPaLzwKVyTyfirCsVVcpsp0-D9eMfo9OFpQdWubKX08yUdUJz2CZ7dn6Vm4ZF22V2hf_4XTw41KZRj5m3Dm_1Z8gH9h_kawyi4bsKn5EYJ6b89lfhXhoxgBa0Fa8h7V39gPRaIfaWDiUE0tzYAM_aEVwT30FVU4uWisNXBvjz5-yS6_XYzJIiMZ1CUrFU8DwqBis4RwPmLA7rzdCsVV7a6VV0NiTcNgOKMwLP0lMYx4bYpDDmnOtF-m-GBVArV_2Xd0akIDKSXy4LY-4ovbTNI13uvUX5U3UcjpR0UPjGtBcgm3LR4Iqcvw5D6Wt14g3PCmBMIPgdTp_IN9RnLl9AK_mfl4v1kmJ_C-BfoEr43qQP-6uqBavD3Xhz8/file [following]\n", + "--2021-10-21 02:53:27-- https://uc2e142222b11f678e96f89b0223.dl.dropboxusercontent.com/cd/0/inline2/BYZCXE2D0HPaLzwKVyTyfirCsVVcpsp0-D9eMfo9OFpQdWubKX08yUdUJz2CZ7dn6Vm4ZF22V2hf_4XTw41KZRj5m3Dm_1Z8gH9h_kawyi4bsKn5EYJ6b89lfhXhoxgBa0Fa8h7V39gPRaIfaWDiUE0tzYAM_aEVwT30FVU4uWisNXBvjz5-yS6_XYzJIiMZ1CUrFU8DwqBis4RwPmLA7rzdCsVV7a6VV0NiTcNgOKMwLP0lMYx4bYpDDmnOtF-m-GBVArV_2Xd0akIDKSXy4LY-4ovbTNI13uvUX5U3UcjpR0UPjGtBcgm3LR4Iqcvw5D6Wt14g3PCmBMIPgdTp_IN9RnLl9AK_mfl4v1kmJ_C-BfoEr43qQP-6uqBavD3Xhz8/file\n", + "Reusing existing connection to uc2e142222b11f678e96f89b0223.dl.dropboxusercontent.com:443.\n", + "HTTP request sent, awaiting response... 200 OK\n", + "Length: 228802825 (218M) [application/zip]\n", + "Saving to: ‘cats_dogs_dataset.zip’\n", + "\n", + "cats_dogs_dataset.z 100%[===================>] 218.20M 73.2MB/s in 3.0s \n", + "\n", + "2021-10-21 02:53:31 (73.2 MB/s) - ‘cats_dogs_dataset.zip’ saved [228802825/228802825]\n", + "\n" + ] + } + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "e4t2P2aTQokX" + }, + "source": [ + "完成下载和解压之后, \"Cats and Dogs Dataset\" 文件夹下的文件结构如下:\n", + "```\n", + "data/cats_dogs_dataset\n", + "├── classes.txt\n", + "├── test.txt\n", + "├── val.txt\n", + "├── training_set\n", + "│ ├── training_set\n", + "│ │ ├── cats\n", + "│ │ │ ├── cat.1.jpg\n", + "│ │ │ ├── cat.2.jpg\n", + "│ │ │ ├── ...\n", + "│ │ ├── dogs\n", + "│ │ │ ├── dog.2.jpg\n", + "│ │ │ ├── dog.3.jpg\n", + "│ │ │ ├── ...\n", + "├── val_set\n", + "│ ├── val_set\n", + "│ │ ├── cats\n", + "│ │ │ ├── cat.3.jpg\n", + "│ │ │ ├── cat.5.jpg\n", + "│ │ │ ├── ...\n", + "│ │ ├── dogs\n", + "│ │ │ ├── dog.1.jpg\n", + "│ │ │ ├── dog.6.jpg\n", + "│ │ │ ├── ...\n", + "├── test_set\n", + "│ ├── test_set\n", + "│ │ ├── cats\n", + "│ │ │ ├── cat.4001.jpg\n", + "│ │ │ ├── cat.4002.jpg\n", + "│ │ │ ├── ...\n", + "│ │ ├── dogs\n", + "│ │ │ ├── dog.4001.jpg\n", + "│ │ │ ├── dog.4002.jpg\n", + "│ │ │ ├── ...\n", + "```\n", + "\n", + "可以通过 shell 命令 `tree data/cats_dogs_dataset` 查看文件结构。" + ] + }, + { + "cell_type": "code", + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 297 + }, + "id": "46tyHTdtQy_Z", + "outputId": "a6e89ddb-431e-4ba0-f1f5-3581a702fd2a" + }, + "source": [ + "# 获取一张图像可视化\n", + "from PIL import Image\n", + "Image.open('data/cats_dogs_dataset/training_set/training_set/cats/cat.1.jpg')" + ], + "execution_count": 10, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "image/png": "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\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "execution_count": 10 + } + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "My5Z6p7pQ3UC" + }, + "source": [ + "### 支持新的数据集\n", + "\n", + "MMClassification 要求数据集必须将图像和标签放在同级目录下。有两种方式可以支持自定义数据集。\n", + "\n", + "最简单的方式就是将数据集转换成现有的数据集格式(比如 ImageNet)。另一种方式就是新建一个新的数据集类。细节可以查看 [文档](https://github.com/open-mmlab/mmclassification/blob/master/docs_zh-CN/tutorials/new_dataset.md).\n", + "\n", + "在这个教程中,为了方便学习,我们已经将 “猫狗分类数据集” 按照 ImageNet 的数据集格式进行了整理。" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "P335gKt9Q5U-" + }, + "source": [ + "除了图片文件外,数据集还包括以下文件:\n", + "\n", + "1. 类别列表。每行代表一个类别。\n", + " ```\n", + " cats\n", + " dogs\n", + " ```\n", + "2. 训练/验证/测试标签。\n", + "每行包括一个文件名和其相对应的标签。\n", + " ```\n", + " ...\n", + " cats/cat.3769.jpg 0\n", + " cats/cat.882.jpg 0\n", + " ...\n", + " dogs/dog.3881.jpg 1\n", + " dogs/dog.3377.jpg 1\n", + " ...\n", + " ```" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "BafQ7ijBQ8N_" + }, + "source": [ + "## 使用 shell 命令进行模型训练和测试\n", + "\n", + "MMCls 同样提供了命令行工具,提供如下功能:\n", + "\n", + "1. 模型训练\n", + "2. 模型微调\n", + "3. 模型测试\n", + "4. 推理计算\n", + "\n", + "模型训练的过程与模型微调的过程一致,我们已经看到 Python API 的推理和模型微调过程。接下来我们将会看到如何使用命令行工具完成这些任务。更过细节可以参考 [文档](https://github.com/open-mmlab/mmclassification/blob/master/docs_zh-CN/getting_started.md)." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "Aj5cGMihURrZ" + }, + "source": [ + "### 模型微调\n", + "\n", + "通过命令行进行模型微调步骤如下:\n", + "\n", + "1. 准备自定义数据集\n", + "2. 在 py 脚本中修改配置文件\n", + "3. 使用命令行工具进行模型微调\n", + "\n", + "第 1 步与之前的介绍一致,我们将会介绍后面两个步骤的内容。" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "wl-FNFP8O0dh" + }, + "source": [ + "#### 创建一个新的配置文件\n", + "\n", + "为了能够复用不同配置文件中常用的部分,我们支持多配置文件继承。比如模型微调 MobileNetV2 ,新的配置文件可以通过继承 `configs/_base_/models/mobilenet_v2_1x.py` 来创建模型的基本结构。\n", + "\n", + "根据以往的实践,我们通常把完整的配置拆分成四个部分:模型、数据集、优化器、运行设置。每个部分的配置单独保存到一个文件,并放在 `config/_base_` 的对应目录下。\n", + "\n", + "这样一来,在创建新的配置文件时,我们就可以选择继承若干个需要的配置文件,然后覆盖其中需要修改的部分内容。\n", + "\n", + "我们的新配置文件开头的继承部分为:\n", + "\n", + "```python\n", + "_base_ = [\n", + " '../_base_/models/mobilenet_v2_1x.py',\n", + " '../_base_/schedules/imagenet_bs256_epochstep.py',\n", + " '../_base_/default_runtime.py'\n", + "]\n", + "```\n", + "\n", + "这里,因为我们使用了一个新的数据集,所以没有继承任何数据集相关的配置。\n", + "\n", + "此外,也可以不使用这种继承的方式,而直接构建完整的配置文件,比如 `configs/mnist/lenet5.py`." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "_UV3oBhLRG8B" + }, + "source": [ + "之后,我们只需要设定配置文件中我们希望修改的部分,其他部分的设置会自动从继承的配置文件中读取。" + ] + }, + { + "cell_type": "code", + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "8QfM4qBeWIQh", + "outputId": "0e658dca-722e-4bed-dd0b-601731b00457" + }, + "source": [ + "%%writefile configs/mobilenet_v2/mobilenet_v2_1x_cats_dogs.py\n", + "_base_ = [\n", + " '../_base_/models/mobilenet_v2_1x.py',\n", + " '../_base_/schedules/imagenet_bs256_epochstep.py',\n", + " '../_base_/default_runtime.py'\n", + "]\n", + "\n", + "# ---- 模型配置 ----\n", + "# 这里使用 init_cfg 来加载预训练模型,通过这种方式,只有主干网络的权重会被加载。\n", + "# 另外还修改了分类头部的 num_classes 来匹配我们的数据集。\n", + "\n", + "model = dict(\n", + " backbone=dict(\n", + " init_cfg = dict(\n", + " type='Pretrained', \n", + " checkpoint='https://download.openmmlab.com/mmclassification/v0/mobilenet_v2/mobilenet_v2_batch256_imagenet_20200708-3b2dc3af.pth', \n", + " prefix='backbone')\n", + " ),\n", + " head=dict(\n", + " num_classes=2,\n", + " topk = (1, )\n", + " ))\n", + "\n", + "# ---- 数据集配置 ----\n", + "# 我们已经将数据集重新组织为 ImageNet 格式\n", + "dataset_type = 'ImageNet'\n", + "img_norm_cfg = dict(\n", + " mean=[124.508, 116.050, 106.438],\n", + " std=[58.577, 57.310, 57.437],\n", + " to_rgb=True)\n", + "train_pipeline = [\n", + " dict(type='LoadImageFromFile'),\n", + " dict(type='RandomResizedCrop', size=224, backend='pillow'),\n", + " dict(type='RandomFlip', flip_prob=0.5, direction='horizontal'),\n", + " dict(type='Normalize', **img_norm_cfg),\n", + " dict(type='ImageToTensor', keys=['img']),\n", + " dict(type='ToTensor', keys=['gt_label']),\n", + " dict(type='Collect', keys=['img', 'gt_label'])\n", + "]\n", + "test_pipeline = [\n", + " dict(type='LoadImageFromFile'),\n", + " dict(type='Resize', size=(256, -1), backend='pillow'),\n", + " dict(type='CenterCrop', crop_size=224),\n", + " dict(type='Normalize', **img_norm_cfg),\n", + " dict(type='ImageToTensor', keys=['img']),\n", + " dict(type='Collect', keys=['img'])\n", + "]\n", + "data = dict(\n", + " # 设置每个 GPU 上的 batch size 和 workers 数, 根据你的硬件来修改这些选项。\n", + " samples_per_gpu=32,\n", + " workers_per_gpu=2,\n", + " # 指定训练集类型和路径\n", + " train=dict(\n", + " type=dataset_type,\n", + " data_prefix='data/cats_dogs_dataset/training_set/training_set',\n", + " classes='data/cats_dogs_dataset/classes.txt',\n", + " pipeline=train_pipeline),\n", + " # 指定验证集类型和路径\n", + " val=dict(\n", + " type=dataset_type,\n", + " data_prefix='data/cats_dogs_dataset/val_set/val_set',\n", + " ann_file='data/cats_dogs_dataset/val.txt',\n", + " classes='data/cats_dogs_dataset/classes.txt',\n", + " pipeline=test_pipeline),\n", + " # 指定测试集类型和路径\n", + " test=dict(\n", + " type=dataset_type,\n", + " data_prefix='data/cats_dogs_dataset/test_set/test_set',\n", + " ann_file='data/cats_dogs_dataset/test.txt',\n", + " classes='data/cats_dogs_dataset/classes.txt',\n", + " pipeline=test_pipeline))\n", + "\n", + "# 设置验证指标\n", + "evaluation = dict(metric='accuracy', metric_options={'topk': (1, )})\n", + "\n", + "# ---- 优化器设置 ----\n", + "# 通常在微调任务中,我们需要一个较小的学习率,训练轮次可以较短。\n", + "# 设置学习率\n", + "optimizer = dict(type='SGD', lr=0.005, momentum=0.9, weight_decay=0.0001)\n", + "optimizer_config = dict(grad_clip=None)\n", + "# 设置学习率调度器\n", + "lr_config = dict(policy='step', step=1, gamma=0.1)\n", + "runner = dict(type='EpochBasedRunner', max_epochs=2)\n", + "\n", + "# ---- 运行设置 ----\n", + "# 每 10 个训练批次输出一次日志\n", + "log_config = dict(interval=10)" + ], + "execution_count": 11, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Writing configs/mobilenet_v2/mobilenet_v2_1x_cats_dogs.py\n" + ] + } + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "chLX7bL3RP2F" + }, + "source": [ + "#### 使用命令行进行模型微调\n", + "\n", + "我们使用 `tools/train.py` 进行模型微调:\n", + "\n", + "```\n", + "python tools/train.py ${CONFIG_FILE} [optional arguments]\n", + "```\n", + "\n", + "如果你希望指定训练过程中相关文件的保存位置,可以增加一个参数 `--work_dir ${YOUR_WORK_DIR}`.\n", + "\n", + "通过增加参数 `--seed ${SEED}`,设置随机种子以保证结果的可重复性,而参数 `--deterministic`则会启用 cudnn 的确定性选项,进一步保证可重复性,但可能降低些许效率。\n", + "\n", + "这里我们使用 `MobileNetV2` 和数据集 `CatsDogsDataset` 作为示例" + ] + }, + { + "cell_type": "code", + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "gbFGR4SBRUYN", + "outputId": "66019f0f-2ded-4fae-9a5f-ece9729a7c2d" + }, + "source": [ + "!python tools/train.py \\\n", + " configs/mobilenet_v2/mobilenet_v2_1x_cats_dogs.py \\\n", + " --work-dir work_dirs/mobilenet_v2_1x_cats_dogs \\\n", + " --seed 0 \\\n", + " --deterministic" + ], + "execution_count": 12, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "/usr/local/lib/python3.7/dist-packages/mmcv/cnn/bricks/transformer.py:28: UserWarning: Fail to import ``MultiScaleDeformableAttention`` from ``mmcv.ops.multi_scale_deform_attn``, You should install ``mmcv-full`` if you need this module. \n", + " warnings.warn('Fail to import ``MultiScaleDeformableAttention`` from '\n", + "/usr/lib/python3.7/importlib/_bootstrap.py:219: RuntimeWarning: numpy.ufunc size changed, may indicate binary incompatibility. Expected 192 from C header, got 216 from PyObject\n", + " return f(*args, **kwds)\n", + "/usr/lib/python3.7/importlib/_bootstrap.py:219: RuntimeWarning: numpy.ufunc size changed, may indicate binary incompatibility. Expected 192 from C header, got 216 from PyObject\n", + " return f(*args, **kwds)\n", + "/usr/lib/python3.7/importlib/_bootstrap.py:219: RuntimeWarning: numpy.ufunc size changed, may indicate binary incompatibility. Expected 192 from C header, got 216 from PyObject\n", + " return f(*args, **kwds)\n", + "/usr/local/lib/python3.7/dist-packages/yaml/constructor.py:126: DeprecationWarning: Using or importing the ABCs from 'collections' instead of from 'collections.abc' is deprecated since Python 3.3,and in 3.9 it will stop working\n", + " if not isinstance(key, collections.Hashable):\n", + "2021-10-21 02:53:42,465 - mmcls - INFO - Environment info:\n", + "------------------------------------------------------------\n", + "sys.platform: linux\n", + "Python: 3.7.12 (default, Sep 10 2021, 00:21:48) [GCC 7.5.0]\n", + "CUDA available: True\n", + "GPU 0: Tesla K80\n", + "CUDA_HOME: /usr/local/cuda\n", + "NVCC: Build cuda_11.1.TC455_06.29190527_0\n", + "GCC: gcc (Ubuntu 7.5.0-3ubuntu1~18.04) 7.5.0\n", + "PyTorch: 1.9.0+cu111\n", + "PyTorch compiling details: PyTorch built with:\n", + " - GCC 7.3\n", + " - C++ Version: 201402\n", + " - Intel(R) Math Kernel Library Version 2020.0.0 Product Build 20191122 for Intel(R) 64 architecture applications\n", + " - Intel(R) MKL-DNN v2.1.2 (Git Hash 98be7e8afa711dc9b66c8ff3504129cb82013cdb)\n", + " - OpenMP 201511 (a.k.a. OpenMP 4.5)\n", + " - NNPACK is enabled\n", + " - CPU capability usage: AVX2\n", + " - CUDA Runtime 11.1\n", + " - NVCC architecture flags: -gencode;arch=compute_37,code=sm_37;-gencode;arch=compute_50,code=sm_50;-gencode;arch=compute_60,code=sm_60;-gencode;arch=compute_70,code=sm_70;-gencode;arch=compute_75,code=sm_75;-gencode;arch=compute_80,code=sm_80;-gencode;arch=compute_86,code=sm_86\n", + " - CuDNN 8.0.5\n", + " - Magma 2.5.2\n", + " - Build settings: BLAS_INFO=mkl, BUILD_TYPE=Release, CUDA_VERSION=11.1, CUDNN_VERSION=8.0.5, CXX_COMPILER=/opt/rh/devtoolset-7/root/usr/bin/c++, CXX_FLAGS= -Wno-deprecated -fvisibility-inlines-hidden -DUSE_PTHREADPOOL -fopenmp -DNDEBUG -DUSE_KINETO -DUSE_FBGEMM -DUSE_QNNPACK -DUSE_PYTORCH_QNNPACK -DUSE_XNNPACK -DSYMBOLICATE_MOBILE_DEBUG_HANDLE -O2 -fPIC -Wno-narrowing -Wall -Wextra -Werror=return-type -Wno-missing-field-initializers -Wno-type-limits -Wno-array-bounds -Wno-unknown-pragmas -Wno-sign-compare -Wno-unused-parameter -Wno-unused-variable -Wno-unused-function -Wno-unused-result -Wno-unused-local-typedefs -Wno-strict-overflow -Wno-strict-aliasing -Wno-error=deprecated-declarations -Wno-stringop-overflow -Wno-psabi -Wno-error=pedantic -Wno-error=redundant-decls -Wno-error=old-style-cast -fdiagnostics-color=always -faligned-new -Wno-unused-but-set-variable -Wno-maybe-uninitialized -fno-math-errno -fno-trapping-math -Werror=format -Wno-stringop-overflow, LAPACK_INFO=mkl, PERF_WITH_AVX=1, PERF_WITH_AVX2=1, PERF_WITH_AVX512=1, TORCH_VERSION=1.9.0, USE_CUDA=ON, USE_CUDNN=ON, USE_EXCEPTION_PTR=1, USE_GFLAGS=OFF, USE_GLOG=OFF, USE_MKL=ON, USE_MKLDNN=ON, USE_MPI=OFF, USE_NCCL=ON, USE_NNPACK=ON, USE_OPENMP=ON, \n", + "\n", + "TorchVision: 0.10.0+cu111\n", + "OpenCV: 4.1.2\n", + "MMCV: 1.3.15\n", + "MMCV Compiler: n/a\n", + "MMCV CUDA Compiler: n/a\n", + "MMClassification: 0.16.0+77a3834\n", + "------------------------------------------------------------\n", + "\n", + "2021-10-21 02:53:42,465 - mmcls - INFO - Distributed training: False\n", + "2021-10-21 02:53:43,086 - mmcls - INFO - Config:\n", + "model = dict(\n", + " type='ImageClassifier',\n", + " backbone=dict(\n", + " type='MobileNetV2',\n", + " widen_factor=1.0,\n", + " init_cfg=dict(\n", + " type='Pretrained',\n", + " checkpoint=\n", + " 'https://download.openmmlab.com/mmclassification/v0/mobilenet_v2/mobilenet_v2_batch256_imagenet_20200708-3b2dc3af.pth',\n", + " prefix='backbone')),\n", + " neck=dict(type='GlobalAveragePooling'),\n", + " head=dict(\n", + " type='LinearClsHead',\n", + " num_classes=2,\n", + " in_channels=1280,\n", + " loss=dict(type='CrossEntropyLoss', loss_weight=1.0),\n", + " topk=(1, )))\n", + "optimizer = dict(type='SGD', lr=0.005, momentum=0.9, weight_decay=0.0001)\n", + "optimizer_config = dict(grad_clip=None)\n", + "lr_config = dict(policy='step', gamma=0.1, step=1)\n", + "runner = dict(type='EpochBasedRunner', max_epochs=2)\n", + "checkpoint_config = dict(interval=1)\n", + "log_config = dict(interval=10, hooks=[dict(type='TextLoggerHook')])\n", + "dist_params = dict(backend='nccl')\n", + "log_level = 'INFO'\n", + "load_from = None\n", + "resume_from = None\n", + "workflow = [('train', 1)]\n", + "dataset_type = 'ImageNet'\n", + "img_norm_cfg = dict(\n", + " mean=[124.508, 116.05, 106.438], std=[58.577, 57.31, 57.437], to_rgb=True)\n", + "train_pipeline = [\n", + " dict(type='LoadImageFromFile'),\n", + " dict(type='RandomResizedCrop', size=224, backend='pillow'),\n", + " dict(type='RandomFlip', flip_prob=0.5, direction='horizontal'),\n", + " dict(\n", + " type='Normalize',\n", + " mean=[124.508, 116.05, 106.438],\n", + " std=[58.577, 57.31, 57.437],\n", + " to_rgb=True),\n", + " dict(type='ImageToTensor', keys=['img']),\n", + " dict(type='ToTensor', keys=['gt_label']),\n", + " dict(type='Collect', keys=['img', 'gt_label'])\n", + "]\n", + "test_pipeline = [\n", + " dict(type='LoadImageFromFile'),\n", + " dict(type='Resize', size=(256, -1), backend='pillow'),\n", + " dict(type='CenterCrop', crop_size=224),\n", + " dict(\n", + " type='Normalize',\n", + " mean=[124.508, 116.05, 106.438],\n", + " std=[58.577, 57.31, 57.437],\n", + " to_rgb=True),\n", + " dict(type='ImageToTensor', keys=['img']),\n", + " dict(type='Collect', keys=['img'])\n", + "]\n", + "data = dict(\n", + " samples_per_gpu=32,\n", + " workers_per_gpu=2,\n", + " train=dict(\n", + " type='ImageNet',\n", + " data_prefix='data/cats_dogs_dataset/training_set/training_set',\n", + " classes='data/cats_dogs_dataset/classes.txt',\n", + " pipeline=[\n", + " dict(type='LoadImageFromFile'),\n", + " dict(type='RandomResizedCrop', size=224, backend='pillow'),\n", + " dict(type='RandomFlip', flip_prob=0.5, direction='horizontal'),\n", + " dict(\n", + " type='Normalize',\n", + " mean=[124.508, 116.05, 106.438],\n", + " std=[58.577, 57.31, 57.437],\n", + " to_rgb=True),\n", + " dict(type='ImageToTensor', keys=['img']),\n", + " dict(type='ToTensor', keys=['gt_label']),\n", + " dict(type='Collect', keys=['img', 'gt_label'])\n", + " ]),\n", + " val=dict(\n", + " type='ImageNet',\n", + " data_prefix='data/cats_dogs_dataset/val_set/val_set',\n", + " ann_file='data/cats_dogs_dataset/val.txt',\n", + " classes='data/cats_dogs_dataset/classes.txt',\n", + " pipeline=[\n", + " dict(type='LoadImageFromFile'),\n", + " dict(type='Resize', size=(256, -1), backend='pillow'),\n", + " dict(type='CenterCrop', crop_size=224),\n", + " dict(\n", + " type='Normalize',\n", + " mean=[124.508, 116.05, 106.438],\n", + " std=[58.577, 57.31, 57.437],\n", + " to_rgb=True),\n", + " dict(type='ImageToTensor', keys=['img']),\n", + " dict(type='Collect', keys=['img'])\n", + " ]),\n", + " test=dict(\n", + " type='ImageNet',\n", + " data_prefix='data/cats_dogs_dataset/test_set/test_set',\n", + " ann_file='data/cats_dogs_dataset/test.txt',\n", + " classes='data/cats_dogs_dataset/classes.txt',\n", + " pipeline=[\n", + " dict(type='LoadImageFromFile'),\n", + " dict(type='Resize', size=(256, -1), backend='pillow'),\n", + " dict(type='CenterCrop', crop_size=224),\n", + " dict(\n", + " type='Normalize',\n", + " mean=[124.508, 116.05, 106.438],\n", + " std=[58.577, 57.31, 57.437],\n", + " to_rgb=True),\n", + " dict(type='ImageToTensor', keys=['img']),\n", + " dict(type='Collect', keys=['img'])\n", + " ]))\n", + "evaluation = dict(metric='accuracy', metric_options=dict(topk=(1, )))\n", + "work_dir = 'work_dirs/mobilenet_v2_1x_cats_dogs'\n", + "gpu_ids = range(0, 1)\n", + "\n", + "2021-10-21 02:53:43,086 - mmcls - INFO - Set random seed to 0, deterministic: True\n", + "2021-10-21 02:53:43,251 - mmcls - INFO - initialize MobileNetV2 with init_cfg {'type': 'Pretrained', 'checkpoint': 'https://download.openmmlab.com/mmclassification/v0/mobilenet_v2/mobilenet_v2_batch256_imagenet_20200708-3b2dc3af.pth', 'prefix': 'backbone'}\n", + "2021-10-21 02:53:43,252 - mmcv - INFO - load backbone in model from: https://download.openmmlab.com/mmclassification/v0/mobilenet_v2/mobilenet_v2_batch256_imagenet_20200708-3b2dc3af.pth\n", + "Use load_from_http loader\n", + "Downloading: \"https://download.openmmlab.com/mmclassification/v0/mobilenet_v2/mobilenet_v2_batch256_imagenet_20200708-3b2dc3af.pth\" to /root/.cache/torch/hub/checkpoints/mobilenet_v2_batch256_imagenet_20200708-3b2dc3af.pth\n", + "100% 13.5M/13.5M [00:01<00:00, 9.62MB/s]\n", + "2021-10-21 02:53:46,164 - mmcls - INFO - initialize LinearClsHead with init_cfg {'type': 'Normal', 'layer': 'Linear', 'std': 0.01}\n", + "2021-10-21 02:54:01,365 - mmcls - INFO - Start running, host: root@3a8df14fab46, work_dir: /content/mmclassification/work_dirs/mobilenet_v2_1x_cats_dogs\n", + "2021-10-21 02:54:01,365 - mmcls - INFO - Hooks will be executed in the following order:\n", + "before_run:\n", + "(VERY_HIGH ) StepLrUpdaterHook \n", + "(NORMAL ) CheckpointHook \n", + "(LOW ) EvalHook \n", + "(VERY_LOW ) TextLoggerHook \n", + " -------------------- \n", + "before_train_epoch:\n", + "(VERY_HIGH ) StepLrUpdaterHook \n", + "(LOW ) IterTimerHook \n", + "(LOW ) EvalHook \n", + "(VERY_LOW ) TextLoggerHook \n", + " -------------------- \n", + "before_train_iter:\n", + "(VERY_HIGH ) StepLrUpdaterHook \n", + "(LOW ) IterTimerHook \n", + "(LOW ) EvalHook \n", + " -------------------- \n", + "after_train_iter:\n", + "(ABOVE_NORMAL) OptimizerHook \n", + "(NORMAL ) CheckpointHook \n", + "(LOW ) IterTimerHook \n", + "(LOW ) EvalHook \n", + "(VERY_LOW ) TextLoggerHook \n", + " -------------------- \n", + "after_train_epoch:\n", + "(NORMAL ) CheckpointHook \n", + "(LOW ) EvalHook \n", + "(VERY_LOW ) TextLoggerHook \n", + " -------------------- \n", + "before_val_epoch:\n", + "(LOW ) IterTimerHook \n", + "(VERY_LOW ) TextLoggerHook \n", + " -------------------- \n", + "before_val_iter:\n", + "(LOW ) IterTimerHook \n", + " -------------------- \n", + "after_val_iter:\n", + "(LOW ) IterTimerHook \n", + " -------------------- \n", + "after_val_epoch:\n", + "(VERY_LOW ) TextLoggerHook \n", + " -------------------- \n", + "2021-10-21 02:54:01,365 - mmcls - INFO - workflow: [('train', 1)], max: 2 epochs\n", + "2021-10-21 02:54:07,010 - mmcls - INFO - Epoch [1][10/201]\tlr: 5.000e-03, eta: 0:03:34, time: 0.548, data_time: 0.260, memory: 1709, loss: 0.3917\n", + "2021-10-21 02:54:09,888 - mmcls - INFO - Epoch [1][20/201]\tlr: 5.000e-03, eta: 0:02:39, time: 0.288, data_time: 0.021, memory: 1709, loss: 0.3508\n", + "2021-10-21 02:54:12,795 - mmcls - INFO - Epoch [1][30/201]\tlr: 5.000e-03, eta: 0:02:19, time: 0.291, data_time: 0.020, memory: 1709, loss: 0.3955\n", + "2021-10-21 02:54:15,744 - mmcls - INFO - Epoch [1][40/201]\tlr: 5.000e-03, eta: 0:02:08, time: 0.295, data_time: 0.019, memory: 1709, loss: 0.2485\n", + "2021-10-21 02:54:18,667 - mmcls - INFO - Epoch [1][50/201]\tlr: 5.000e-03, eta: 0:02:00, time: 0.292, data_time: 0.021, memory: 1709, loss: 0.4196\n", + "2021-10-21 02:54:21,590 - mmcls - INFO - Epoch [1][60/201]\tlr: 5.000e-03, eta: 0:01:54, time: 0.293, data_time: 0.022, memory: 1709, loss: 0.4994\n", + "2021-10-21 02:54:24,496 - mmcls - INFO - Epoch [1][70/201]\tlr: 5.000e-03, eta: 0:01:48, time: 0.291, data_time: 0.021, memory: 1709, loss: 0.4372\n", + "2021-10-21 02:54:27,400 - mmcls - INFO - Epoch [1][80/201]\tlr: 5.000e-03, eta: 0:01:44, time: 0.290, data_time: 0.020, memory: 1709, loss: 0.3179\n", + "2021-10-21 02:54:30,313 - mmcls - INFO - Epoch [1][90/201]\tlr: 5.000e-03, eta: 0:01:39, time: 0.292, data_time: 0.020, memory: 1709, loss: 0.3175\n", + "2021-10-21 02:54:33,208 - mmcls - INFO - Epoch [1][100/201]\tlr: 5.000e-03, eta: 0:01:35, time: 0.289, data_time: 0.020, memory: 1709, loss: 0.3412\n", + "2021-10-21 02:54:36,129 - mmcls - INFO - Epoch [1][110/201]\tlr: 5.000e-03, eta: 0:01:31, time: 0.292, data_time: 0.021, memory: 1709, loss: 0.2985\n", + "2021-10-21 02:54:39,067 - mmcls - INFO - Epoch [1][120/201]\tlr: 5.000e-03, eta: 0:01:28, time: 0.294, data_time: 0.021, memory: 1709, loss: 0.2778\n", + "2021-10-21 02:54:41,963 - mmcls - INFO - Epoch [1][130/201]\tlr: 5.000e-03, eta: 0:01:24, time: 0.289, data_time: 0.020, memory: 1709, loss: 0.2229\n", + "2021-10-21 02:54:44,861 - mmcls - INFO - Epoch [1][140/201]\tlr: 5.000e-03, eta: 0:01:21, time: 0.290, data_time: 0.021, memory: 1709, loss: 0.2318\n", + "2021-10-21 02:54:47,782 - mmcls - INFO - Epoch [1][150/201]\tlr: 5.000e-03, eta: 0:01:17, time: 0.293, data_time: 0.020, memory: 1709, loss: 0.2333\n", + "2021-10-21 02:54:50,682 - mmcls - INFO - Epoch [1][160/201]\tlr: 5.000e-03, eta: 0:01:14, time: 0.290, data_time: 0.020, memory: 1709, loss: 0.2783\n", + "2021-10-21 02:54:53,595 - mmcls - INFO - Epoch [1][170/201]\tlr: 5.000e-03, eta: 0:01:11, time: 0.291, data_time: 0.019, memory: 1709, loss: 0.2132\n", + "2021-10-21 02:54:56,499 - mmcls - INFO - Epoch [1][180/201]\tlr: 5.000e-03, eta: 0:01:07, time: 0.290, data_time: 0.021, memory: 1709, loss: 0.2096\n", + "2021-10-21 02:54:59,381 - mmcls - INFO - Epoch [1][190/201]\tlr: 5.000e-03, eta: 0:01:04, time: 0.288, data_time: 0.023, memory: 1709, loss: 0.1729\n", + "2021-10-21 02:55:02,270 - mmcls - INFO - Epoch [1][200/201]\tlr: 5.000e-03, eta: 0:01:01, time: 0.288, data_time: 0.020, memory: 1709, loss: 0.1969\n", + "2021-10-21 02:55:02,313 - mmcls - INFO - Saving checkpoint at 1 epochs\n", + "[ ] 0/1601, elapsed: 0s, ETA:[W pthreadpool-cpp.cc:90] Warning: Leaking Caffe2 thread-pool after fork. (function pthreadpool)\n", + "[W pthreadpool-cpp.cc:90] Warning: Leaking Caffe2 thread-pool after fork. (function pthreadpool)\n", + "[>>] 1601/1601, 171.8 task/s, elapsed: 9s, ETA: 0s2021-10-21 02:55:11,743 - mmcls - INFO - Epoch(val) [1][51]\taccuracy_top-1: 95.6277\n", + "2021-10-21 02:55:16,920 - mmcls - INFO - Epoch [2][10/201]\tlr: 5.000e-04, eta: 0:00:59, time: 0.501, data_time: 0.237, memory: 1709, loss: 0.1764\n", + "2021-10-21 02:55:19,776 - mmcls - INFO - Epoch [2][20/201]\tlr: 5.000e-04, eta: 0:00:56, time: 0.286, data_time: 0.021, memory: 1709, loss: 0.1514\n", + "2021-10-21 02:55:22,637 - mmcls - INFO - Epoch [2][30/201]\tlr: 5.000e-04, eta: 0:00:52, time: 0.286, data_time: 0.019, memory: 1709, loss: 0.1395\n", + "2021-10-21 02:55:25,497 - mmcls - INFO - Epoch [2][40/201]\tlr: 5.000e-04, eta: 0:00:49, time: 0.286, data_time: 0.020, memory: 1709, loss: 0.1508\n", + "2021-10-21 02:55:28,338 - mmcls - INFO - Epoch [2][50/201]\tlr: 5.000e-04, eta: 0:00:46, time: 0.284, data_time: 0.018, memory: 1709, loss: 0.1771\n", + "2021-10-21 02:55:31,214 - mmcls - INFO - Epoch [2][60/201]\tlr: 5.000e-04, eta: 0:00:43, time: 0.287, data_time: 0.019, memory: 1709, loss: 0.1438\n", + "2021-10-21 02:55:34,075 - mmcls - INFO - Epoch [2][70/201]\tlr: 5.000e-04, eta: 0:00:40, time: 0.286, data_time: 0.020, memory: 1709, loss: 0.1321\n", + "2021-10-21 02:55:36,921 - mmcls - INFO - Epoch [2][80/201]\tlr: 5.000e-04, eta: 0:00:36, time: 0.285, data_time: 0.023, memory: 1709, loss: 0.1629\n", + "2021-10-21 02:55:39,770 - mmcls - INFO - Epoch [2][90/201]\tlr: 5.000e-04, eta: 0:00:33, time: 0.285, data_time: 0.018, memory: 1709, loss: 0.1574\n", + "2021-10-21 02:55:42,606 - mmcls - INFO - Epoch [2][100/201]\tlr: 5.000e-04, eta: 0:00:30, time: 0.284, data_time: 0.019, memory: 1709, loss: 0.1220\n", + "2021-10-21 02:55:45,430 - mmcls - INFO - Epoch [2][110/201]\tlr: 5.000e-04, eta: 0:00:27, time: 0.282, data_time: 0.021, memory: 1709, loss: 0.2550\n", + "2021-10-21 02:55:48,280 - mmcls - INFO - Epoch [2][120/201]\tlr: 5.000e-04, eta: 0:00:24, time: 0.285, data_time: 0.021, memory: 1709, loss: 0.1528\n", + "2021-10-21 02:55:51,131 - mmcls - INFO - Epoch [2][130/201]\tlr: 5.000e-04, eta: 0:00:21, time: 0.285, data_time: 0.020, memory: 1709, loss: 0.1223\n", + "2021-10-21 02:55:53,983 - mmcls - INFO - Epoch [2][140/201]\tlr: 5.000e-04, eta: 0:00:18, time: 0.285, data_time: 0.019, memory: 1709, loss: 0.1734\n", + "2021-10-21 02:55:56,823 - mmcls - INFO - Epoch [2][150/201]\tlr: 5.000e-04, eta: 0:00:15, time: 0.284, data_time: 0.022, memory: 1709, loss: 0.1527\n", + "2021-10-21 02:55:59,645 - mmcls - INFO - Epoch [2][160/201]\tlr: 5.000e-04, eta: 0:00:12, time: 0.283, data_time: 0.021, memory: 1709, loss: 0.1910\n", + "2021-10-21 02:56:02,514 - mmcls - INFO - Epoch [2][170/201]\tlr: 5.000e-04, eta: 0:00:09, time: 0.287, data_time: 0.019, memory: 1709, loss: 0.1922\n", + "2021-10-21 02:56:05,375 - mmcls - INFO - Epoch [2][180/201]\tlr: 5.000e-04, eta: 0:00:06, time: 0.286, data_time: 0.018, memory: 1709, loss: 0.1760\n", + "2021-10-21 02:56:08,241 - mmcls - INFO - Epoch [2][190/201]\tlr: 5.000e-04, eta: 0:00:03, time: 0.287, data_time: 0.019, memory: 1709, loss: 0.1739\n", + "2021-10-21 02:56:11,081 - mmcls - INFO - Epoch [2][200/201]\tlr: 5.000e-04, eta: 0:00:00, time: 0.282, data_time: 0.019, memory: 1709, loss: 0.1654\n", + "2021-10-21 02:56:11,125 - mmcls - INFO - Saving checkpoint at 2 epochs\n", + "[>>] 1601/1601, 170.9 task/s, elapsed: 9s, ETA: 0s2021-10-21 02:56:20,592 - mmcls - INFO - Epoch(val) [2][51]\taccuracy_top-1: 97.5016\n" + ] + } + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "m_ZSkwB5Rflb" + }, + "source": [ + "### 测试模型\n", + "\n", + "使用 `tools/test.py` 对模型进行测试:\n", + "\n", + "```\n", + "python tools/test.py ${CONFIG_FILE} ${CHECKPOINT_FILE} [optional arguments]\n", + "```\n", + "\n", + "这里有一些可选参数可以进行配置:\n", + "\n", + "- `--metrics`: 评价指标。可以在数据集类中找到所有可用的选择,一般对单标签分类任务,我们都可以使用 \"accuracy\" 进行评价。\n", + "- `--metric-options`: 传递给评价指标的自定义参数。比如指定了 \"topk=1\",那么就会计算 \"top-1 accuracy\"。\n", + "\n", + "更多细节请参看 `tools/test.py` 的帮助文档。\n", + "\n", + "这里使用我们微调好的 `MobileNetV2` 模型进行测试" + ] + }, + { + "cell_type": "code", + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "Zd4EM00QRtyc", + "outputId": "e0be9ba6-47f5-45d9-cca2-d2c5a38b1407" + }, + "source": [ + "!python tools/test.py configs/mobilenet_v2/mobilenet_v2_1x_cats_dogs.py work_dirs/mobilenet_v2_1x_cats_dogs/latest.pth --metrics accuracy --metric-options topk=1" + ], + "execution_count": 13, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "/usr/local/lib/python3.7/dist-packages/mmcv/cnn/bricks/transformer.py:28: UserWarning: Fail to import ``MultiScaleDeformableAttention`` from ``mmcv.ops.multi_scale_deform_attn``, You should install ``mmcv-full`` if you need this module. \n", + " warnings.warn('Fail to import ``MultiScaleDeformableAttention`` from '\n", + "/usr/lib/python3.7/importlib/_bootstrap.py:219: RuntimeWarning: numpy.ufunc size changed, may indicate binary incompatibility. Expected 192 from C header, got 216 from PyObject\n", + " return f(*args, **kwds)\n", + "/usr/lib/python3.7/importlib/_bootstrap.py:219: RuntimeWarning: numpy.ufunc size changed, may indicate binary incompatibility. Expected 192 from C header, got 216 from PyObject\n", + " return f(*args, **kwds)\n", + "/usr/lib/python3.7/importlib/_bootstrap.py:219: RuntimeWarning: numpy.ufunc size changed, may indicate binary incompatibility. Expected 192 from C header, got 216 from PyObject\n", + " return f(*args, **kwds)\n", + "/usr/local/lib/python3.7/dist-packages/yaml/constructor.py:126: DeprecationWarning: Using or importing the ABCs from 'collections' instead of from 'collections.abc' is deprecated since Python 3.3,and in 3.9 it will stop working\n", + " if not isinstance(key, collections.Hashable):\n", + "Use load_from_local loader\n", + "[>>] 2023/2023, 169.7 task/s, elapsed: 12s, ETA: 0s\n", + "accuracy : 97.38\n" + ] + } + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "IwThQkjaRwF7" + }, + "source": [ + "### 推理计算\n", + "\n", + "有时我们会希望保存模型在数据集上的推理结果,可以使用如下命令:\n", + "\n", + "```shell\n", + "python tools/test.py ${CONFIG_FILE} ${CHECKPOINT_FILE} [--out ${RESULT_FILE}]\n", + "```\n", + "\n", + "参数:\n", + "\n", + "- `--out`: 输出结果的文件名。如果不指定,计算结果不会被保存。支持的格式包括json, pkl 和 yml\n", + "- `--out-items`: 哪些推理结果需要被保存,可以从 \"class_scores\", \"pred_score\", \"pred_label\" 和 \"pred_class\" 中选择若干个,或者使用 \"all\" 来保存所有推理结果。\n", + "\n", + "这些项的具体含义:\n", + "- `class_scores`: 各个样本在每个类上的分类得分。\n", + "- `pred_score`: 各个样本在预测类上的分类得分。\n", + "- `pred_label`: 各个样本预测类的标签。标签文本将会从模型权重文件中读取,如果模型权重文件中没有标签文本,则会使用 ImageNet 的标签文本。\n", + "- `pred_class`: 各个样本预测类的 id,为一组整数。\n", + "- `all`: 保存以上所有项。\n", + "- `none`: 不保存以上任何项。因为输出文件除了推理结果,还会保存评价指标,如果你只希望保存总体评价指标,可以设置不保存任何项,可以大幅减小输出文件大小。" + ] + }, + { + "cell_type": "code", + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "6GVKloPHR0Fn", + "outputId": "1efde0e4-97cd-4e62-ce98-1cbc79da3a6c" + }, + "source": [ + "!python tools/test.py configs/mobilenet_v2/mobilenet_v2_1x_cats_dogs.py work_dirs/mobilenet_v2_1x_cats_dogs/latest.pth --out results.json --out-items all" + ], + "execution_count": 14, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "/usr/local/lib/python3.7/dist-packages/mmcv/cnn/bricks/transformer.py:28: UserWarning: Fail to import ``MultiScaleDeformableAttention`` from ``mmcv.ops.multi_scale_deform_attn``, You should install ``mmcv-full`` if you need this module. \n", + " warnings.warn('Fail to import ``MultiScaleDeformableAttention`` from '\n", + "/usr/lib/python3.7/importlib/_bootstrap.py:219: RuntimeWarning: numpy.ufunc size changed, may indicate binary incompatibility. Expected 192 from C header, got 216 from PyObject\n", + " return f(*args, **kwds)\n", + "/usr/lib/python3.7/importlib/_bootstrap.py:219: RuntimeWarning: numpy.ufunc size changed, may indicate binary incompatibility. Expected 192 from C header, got 216 from PyObject\n", + " return f(*args, **kwds)\n", + "/usr/lib/python3.7/importlib/_bootstrap.py:219: RuntimeWarning: numpy.ufunc size changed, may indicate binary incompatibility. Expected 192 from C header, got 216 from PyObject\n", + " return f(*args, **kwds)\n", + "/usr/local/lib/python3.7/dist-packages/yaml/constructor.py:126: DeprecationWarning: Using or importing the ABCs from 'collections' instead of from 'collections.abc' is deprecated since Python 3.3,and in 3.9 it will stop working\n", + " if not isinstance(key, collections.Hashable):\n", + "Use load_from_local loader\n", + "[>>] 2023/2023, 170.3 task/s, elapsed: 12s, ETA: 0s\n", + "dumping results to results.json\n" + ] + } + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "G0NJI1s6e3FD" + }, + "source": [ + "导出的json 文件中保存了所有样本的推理结果、分类结果和分类得分" + ] + }, + { + "cell_type": "code", + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 370 + }, + "id": "HJdJeLUafFhX", + "outputId": "486c0652-2124-419a-ec7d-fd3583baedb1" + }, + "source": [ + "import json\n", + "\n", + "with open(\"./results.json\", 'r') as f:\n", + " results = json.load(f)\n", + "\n", + "# 展示第一张图片的结果信息\n", + "print('class_scores:', results['class_scores'][0])\n", + "print('pred_class:', results['pred_class'][0])\n", + "print('pred_label:', results['pred_label'][0])\n", + "print('pred_score:', results['pred_score'][0])\n", + "Image.open('data/cats_dogs_dataset/training_set/training_set/cats/cat.1.jpg')" + ], + "execution_count": 15, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "class_scores: [1.0, 5.184615757547473e-13]\n", + "pred_class: cats\n", + "pred_label: 0\n", + "pred_score: 1.0\n" + ] + }, + { + "output_type": "execute_result", + "data": { + "image/png": "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\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "execution_count": 15 + } + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "1bEUwwzcVG8o" + }, + "source": [ + "也可以使用 MMClassification 提供的可视化函数 imshow_infos 更好地展示预测结果。" + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "BcSNyvAWRx20", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 304 + }, + "outputId": "1db811f7-9637-44c4-8aec-330f5765e20c" + }, + "source": [ + "from mmcls.core.visualization import imshow_infos\n", + "\n", + "filepath = 'data/cats_dogs_dataset/training_set/training_set/cats/cat.1.jpg'\n", + "\n", + "result = {\n", + " 'pred_class': results['pred_class'][0],\n", + " 'pred_label': results['pred_label'][0],\n", + " 'pred_score': results['pred_score'][0],\n", + "}\n", + "\n", + "img = imshow_infos(filepath, result)" + ], + "execution_count": 16, + "outputs": [ + { + "output_type": "display_data", + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + } + } + ] + } + ] +} diff --git a/openmmlab_test/mmclassification-0.24.1/docs/zh_CN/tutorials/config.md b/openmmlab_test/mmclassification-0.24.1/docs/zh_CN/tutorials/config.md new file mode 100644 index 00000000..9e9c87e8 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/docs/zh_CN/tutorials/config.md @@ -0,0 +1,417 @@ +# 教程 1:如何编写配置文件 + +MMClassification 主要使用 python 文件作为配置文件。其配置文件系统的设计将模块化与继承整合进来,方便用户进行各种实验。所有配置文件都放置在 `configs` 文件夹下,主要包含 `_base_` 原始配置文件夹 以及 `resnet`, `swin_transformer`,`vision_transformer` 等诸多算法文件夹。 + +可以使用 `python tools/misc/print_config.py /PATH/TO/CONFIG` 命令来查看完整的配置信息,从而方便检查所对应的配置文件。 + + + +- [配置文件以及权重命名规则](#配置文件以及权重命名规则) +- [配置文件结构](#配置文件结构) +- [继承并修改配置文件](#继承并修改配置文件) + - [使用配置文件里的中间变量](#使用配置文件里的中间变量) + - [忽略基础配置文件里的部分内容](#忽略基础配置文件里的部分内容) + - [引用基础配置文件里的变量](#引用基础配置文件里的变量) +- [通过命令行参数修改配置信息](#通过命令行参数修改配置信息) +- [导入用户自定义模块](#导入用户自定义模块) +- [常见问题](#常见问题) + + + +## 配置文件以及权重命名规则 + +MMClassification 按照以下风格进行配置文件命名,代码库的贡献者需要遵循相同的命名规则。文件名总体分为四部分:算法信息,模块信息,训练信息和数据信息。逻辑上属于不同部分的单词之间用下划线 `'_'` 连接,同一部分有多个单词用短横线 `'-'` 连接。 + +``` +{algorithm info}_{module info}_{training info}_{data info}.py +``` + +- `algorithm info`:算法信息,算法名称或者网络架构,如 resnet 等; +- `module info`: 模块信息,因任务而异,用以表示一些特殊的 neck、head 和 pretrain 信息; +- `training info`:一些训练信息,训练策略设置,包括 batch size,schedule 数据增强等; +- `data info`:数据信息,数据集名称、模态、输入尺寸等,如 imagenet, cifar 等; + +### 算法信息 + +指论文中的算法名称缩写,以及相应的分支架构信息。例如: + +- `resnet50` +- `mobilenet-v3-large` +- `vit-small-patch32` : `patch32` 表示 `ViT` 切分的分块大小 +- `seresnext101-32x4d` : `SeResNet101` 基本网络结构,`32x4d` 表示在 `Bottleneck` 中 `groups` 和 `width_per_group` 分别为32和4 + +### 模块信息 + +指一些特殊的 `neck` 、`head` 或者 `pretrain` 的信息, 在分类中常见为预训练信息,比如: + +- `in21k-pre` : 在 `ImageNet21k` 上预训练 +- `in21k-pre-3rd-party` : 在 `ImageNet21k` 上预训练,其权重来自其他仓库 + +### 训练信息 + +训练策略的一些设置,包括训练类型、 `batch size`、 `lr schedule`、 数据增强以及特殊的损失函数等等,比如: +Batch size 信息: + +- 格式为`{gpu x batch_per_gpu}`, 如 `8xb32` + +训练类型(主要见于 transformer 网络,如 `ViT` 算法,这类算法通常分为预训练和微调两种模式): + +- `ft` : Finetune config,用于微调的配置文件 +- `pt` : Pretrain config,用于预训练的配置文件 + +训练策略信息,训练策略以复现配置文件为基础,此基础不必标注训练策略。但如果在此基础上进行改进,则需注明训练策略,按照应用点位顺序排列,如:`{pipeline aug}-{train aug}-{loss trick}-{scheduler}-{epochs}` + +- `coslr-200e` : 使用 cosine scheduler, 训练 200 个 epoch +- `autoaug-mixup-lbs-coslr-50e` : 使用了 `autoaug`、`mixup`、`label smooth`、`cosine scheduler`, 训练了 50 个轮次 + +### 数据信息 + +- `in1k` : `ImageNet1k` 数据集,默认使用 `224x224` 大小的图片 +- `in21k` : `ImageNet21k` 数据集,有些地方也称为 `ImageNet22k` 数据集,默认使用 `224x224` 大小的图片 +- `in1k-384px` : 表示训练的输出图片大小为 `384x384` +- `cifar100` + +### 配置文件命名案例: + +``` +repvgg-D2se_deploy_4xb64-autoaug-lbs-mixup-coslr-200e_in1k.py +``` + +- `repvgg-D2se`: 算法信息 + - `repvgg`: 主要算法名称。 + - `D2se`: 模型的结构。 +- `deploy`:模块信息,该模型为推理状态。 +- `4xb64-autoaug-lbs-mixup-coslr-200e`: 训练信息 + - `4xb64`: 使用4块 GPU 并且 每块 GPU 的批大小为64。 + - `autoaug`: 使用 `AutoAugment` 数据增强方法。 + - `lbs`: 使用 `label smoothing` 损失函数。 + - `mixup`: 使用 `mixup` 训练增强方法。 + - `coslr`: 使用 `cosine scheduler` 优化策略。 + - `200e`: 训练 200 轮次。 +- `in1k`: 数据信息。 配置文件用于 `ImageNet1k` 数据集上使用 `224x224` 大小图片训练。 + +```{note} +部分配置文件目前还没有遵循此命名规范,相关文件命名近期会更新。 +``` + +### 权重命名规则 + +权重的命名主要包括配置文件名,日期和哈希值。 + +``` +{config_name}_{date}-{hash}.pth +``` + +## 配置文件结构 + +在 `configs/_base_` 文件夹下有 4 个基本组件类型,分别是: + +- [模型(model)](https://github.com/open-mmlab/mmclassification/tree/master/configs/_base_/models) +- [数据(data)](https://github.com/open-mmlab/mmclassification/tree/master/configs/_base_/datasets) +- [训练策略(schedule)](https://github.com/open-mmlab/mmclassification/tree/master/configs/_base_/schedules) +- [运行设置(runtime)](https://github.com/open-mmlab/mmclassification/blob/master/configs/_base_/default_runtime.py) + +你可以通过继承一些基本配置文件轻松构建自己的训练配置文件。由来自`_base_` 的组件组成的配置称为 _primitive_。 + +为了帮助用户对 MMClassification 检测系统中的完整配置和模块有一个基本的了解,我们使用 [ResNet50 原始配置文件](https://github.com/open-mmlab/mmclassification/blob/master/configs/resnet/resnet50_8xb32_in1k.py) 作为案例进行说明并注释每一行含义。更详细的用法和各个模块对应的替代方案,请参考 API 文档。 + +```python +_base_ = [ + '../_base_/models/resnet50.py', # 模型 + '../_base_/datasets/imagenet_bs32.py', # 数据 + '../_base_/schedules/imagenet_bs256.py', # 训练策略 + '../_base_/default_runtime.py' # 默认运行设置 +] +``` + +下面对这四个部分分别进行说明,仍然以上述 ResNet50 原始配置文件作为案例。 + +### 模型 + +模型参数 `model` 在配置文件中为一个 `python` 字典,主要包括网络结构、损失函数等信息: + +- `type` : 分类器名称, 目前 MMClassification 只支持 `ImageClassifier`, 参考 [API 文档](https://mmclassification.readthedocs.io/zh_CN/latest/api/models.html#classifier)。 +- `backbone` : 主干网类型,可用选项参考 [API 文档](https://mmclassification.readthedocs.io/zh_CN/latest/api/models.html#backbones)。 +- `neck` : 颈网络类型,目前 MMClassification 只支持 `GlobalAveragePooling`, 参考 [API 文档](https://mmclassification.readthedocs.io/zh_CN/latest/api/models.html#necks)。 +- `head` : 头网络类型, 包括单标签分类与多标签分类头网络,可用选项参考 [API 文档](https://mmclassification.readthedocs.io/zh_CN/latest/api/models.html#heads)。 + - `loss` : 损失函数类型, 支持 `CrossEntropyLoss`, [`LabelSmoothLoss`](https://github.com/open-mmlab/mmclassification/blob/master/configs/_base_/models/resnet50_label_smooth.py) 等,可用选项参考 [API 文档](https://mmclassification.readthedocs.io/zh_CN/latest/api/models.html#losses)。 +- `train_cfg` :训练配置, 支持 [`mixup`](https://github.com/open-mmlab/mmclassification/blob/master/configs/_base_/models/resnet50_mixup.py), [`cutmix`](https://github.com/open-mmlab/mmclassification/blob/master/configs/_base_/models/resnet50_cutmix.py) 等训练增强。 + +```{note} +配置文件中的 'type' 不是构造时的参数,而是类名。 +``` + +```python +model = dict( + type='ImageClassifier', # 分类器类型 + backbone=dict( + type='ResNet', # 主干网络类型 + depth=50, # 主干网网络深度, ResNet 一般有18, 34, 50, 101, 152 可以选择 + num_stages=4, # 主干网络状态(stages)的数目,这些状态产生的特征图作为后续的 head 的输入。 + out_indices=(3, ), # 输出的特征图输出索引。越远离输入图像,索引越大 + frozen_stages=-1, # 网络微调时,冻结网络的stage(训练时不执行反相传播算法),若num_stages=4,backbone包含stem 与 4 个 stages。frozen_stages为-1时,不冻结网络; 为0时,冻结 stem; 为1时,冻结 stem 和 stage1; 为4时,冻结整个backbone + style='pytorch'), # 主干网络的风格,'pytorch' 意思是步长为2的层为 3x3 卷积, 'caffe' 意思是步长为2的层为 1x1 卷积。 + neck=dict(type='GlobalAveragePooling'), # 颈网络类型 + head=dict( + type='LinearClsHead', # 线性分类头, + num_classes=1000, # 输出类别数,这与数据集的类别数一致 + in_channels=2048, # 输入通道数,这与 neck 的输出通道一致 + loss=dict(type='CrossEntropyLoss', loss_weight=1.0), # 损失函数配置信息 + topk=(1, 5), # 评估指标,Top-k 准确率, 这里为 top1 与 top5 准确率 + )) +``` + +### 数据 + +数据参数 `data` 在配置文件中为一个 `python` 字典,主要包含构造数据集加载器(dataloader)配置信息: + +- `samples_per_gpu` : 构建 dataloader 时,每个 GPU 的 Batch Size +- `workers_per_gpu` : 构建 dataloader 时,每个 GPU 的 线程数 +- `train | val | test` : 构造数据集 + - `type` : 数据集类型, MMClassification 支持 `ImageNet`、 `Cifar` 等 ,参考[API 文档](https://mmclassification.readthedocs.io/zh_CN/latest/api/datasets.html) + - `data_prefix` : 数据集根目录 + - `pipeline` : 数据处理流水线,参考相关教程文档 [如何设计数据处理流水线](https://mmclassification.readthedocs.io/zh_CN/latest/tutorials/data_pipeline.html) + +评估参数 `evaluation` 也是一个字典, 为 `evaluation hook` 的配置信息, 主要包括评估间隔、评估指标等。 + +```python +# dataset settings +dataset_type = 'ImageNet' # 数据集名称, +img_norm_cfg = dict( #图像归一化配置,用来归一化输入的图像。 + mean=[123.675, 116.28, 103.53], # 预训练里用于预训练主干网络模型的平均值。 + std=[58.395, 57.12, 57.375], # 预训练里用于预训练主干网络模型的标准差。 + to_rgb=True) # 是否反转通道,使用 cv2, mmcv 读取图片默认为 BGR 通道顺序,这里 Normalize 均值方差数组的数值是以 RGB 通道顺序, 因此需要反转通道顺序。 +# 训练数据流水线 +train_pipeline = [ + dict(type='LoadImageFromFile'), # 读取图片 + dict(type='RandomResizedCrop', size=224), # 随机缩放抠图 + dict(type='RandomFlip', flip_prob=0.5, direction='horizontal'), # 以概率为0.5随机水平翻转图片 + dict(type='Normalize', **img_norm_cfg), # 归一化 + dict(type='ImageToTensor', keys=['img']), # image 转为 torch.Tensor + dict(type='ToTensor', keys=['gt_label']), # gt_label 转为 torch.Tensor + dict(type='Collect', keys=['img', 'gt_label']) # 决定数据中哪些键应该传递给检测器的流程 +] +# 测试数据流水线 +test_pipeline = [ + dict(type='LoadImageFromFile'), + dict(type='Resize', size=(256, -1)), + dict(type='CenterCrop', crop_size=224), + dict(type='Normalize', **img_norm_cfg), + dict(type='ImageToTensor', keys=['img']), + dict(type='Collect', keys=['img']) # test 时不传递 gt_label +] +data = dict( + samples_per_gpu=32, # 单个 GPU 的 Batch size + workers_per_gpu=2, # 单个 GPU 的 线程数 + train=dict( # 训练数据信息 + type=dataset_type, # 数据集名称 + data_prefix='data/imagenet/train', # 数据集目录,当不存在 ann_file 时,类别信息从文件夹自动获取 + pipeline=train_pipeline), # 数据集需要经过的 数据流水线 + val=dict( # 验证数据集信息 + type=dataset_type, + data_prefix='data/imagenet/val', + ann_file='data/imagenet/meta/val.txt', # 标注文件路径,存在 ann_file 时,不通过文件夹自动获取类别信息 + pipeline=test_pipeline), + test=dict( # 测试数据集信息 + type=dataset_type, + data_prefix='data/imagenet/val', + ann_file='data/imagenet/meta/val.txt', + pipeline=test_pipeline)) +evaluation = dict( # evaluation hook 的配置 + interval=1, # 验证期间的间隔,单位为 epoch 或者 iter, 取决于 runner 类型。 + metric='accuracy') # 验证期间使用的指标。 +``` + +### 训练策略 + +主要包含 优化器设置、 `optimizer hook` 设置、学习率策略和 `runner`设置: + +- `optimizer` : 优化器设置信息, 支持 `pytorch` 所有的优化器,参考相关 [mmcv](https://mmcv.readthedocs.io/zh_CN/latest/_modules/mmcv/runner/optimizer/default_constructor.html#DefaultOptimizerConstructor) 文档 +- `optimizer_config` : `optimizer hook` 的配置文件,如设置梯度限制,参考相关 [mmcv](https://github.com/open-mmlab/mmcv/blob/master/mmcv/runner/hooks/optimizer.py#L8) 代码 +- `lr_config` : 学习率策略,支持 "CosineAnnealing"、 "Step"、 "Cyclic" 等等,参考相关 [mmcv](https://mmcv.readthedocs.io/zh_CN/latest/_modules/mmcv/runner/hooks/lr_updater.html#LrUpdaterHook) 文档 +- `runner` : 有关 `runner` 可以参考 `mmcv` 对于 [`runner`](https://mmcv.readthedocs.io/zh_CN/latest/understand_mmcv/runner.html) 介绍文档 + +```python +# 用于构建优化器的配置文件。支持 PyTorch 中的所有优化器,同时它们的参数与 PyTorch 里的优化器参数一致。 +optimizer = dict(type='SGD', # 优化器类型 + lr=0.1, # 优化器的学习率,参数的使用细节请参照对应的 PyTorch 文档。 + momentum=0.9, # 动量(Momentum) + weight_decay=0.0001) # 权重衰减系数(weight decay)。 + # optimizer hook 的配置文件 +optimizer_config = dict(grad_clip=None) # 大多数方法不使用梯度限制(grad_clip)。 +# 学习率调整配置,用于注册 LrUpdater hook。 +lr_config = dict(policy='step', # 调度流程(scheduler)的策略,也支持 CosineAnnealing, Cyclic, 等。 + step=[30, 60, 90]) # 在 epoch 为 30, 60, 90 时, lr 进行衰减 +runner = dict(type='EpochBasedRunner', # 将使用的 runner 的类别,如 IterBasedRunner 或 EpochBasedRunner。 + max_epochs=100) # runner 总回合数, 对于 IterBasedRunner 使用 `max_iters` +``` + +### 运行设置 + +本部分主要包括保存权重策略、日志配置、训练参数、断点权重路径和工作目录等等。 + +```python +# Checkpoint hook 的配置文件。 +checkpoint_config = dict(interval=1) # 保存的间隔是 1,单位会根据 runner 不同变动,可以为 epoch 或者 iter。 +# 日志配置信息。 +log_config = dict( + interval=100, # 打印日志的间隔, 单位 iters + hooks=[ + dict(type='TextLoggerHook'), # 用于记录训练过程的文本记录器(logger)。 + # dict(type='TensorboardLoggerHook') # 同样支持 Tensorboard 日志 + ]) + +dist_params = dict(backend='nccl') # 用于设置分布式训练的参数,端口也同样可被设置。 +log_level = 'INFO' # 日志的输出级别。 +resume_from = None # 从给定路径里恢复检查点(checkpoints),训练模式将从检查点保存的轮次开始恢复训练。 +workflow = [('train', 1)] # runner 的工作流程,[('train', 1)] 表示只有一个工作流且工作流仅执行一次。 +work_dir = 'work_dir' # 用于保存当前实验的模型检查点和日志的目录文件地址。 +``` + +## 继承并修改配置文件 + +为了精简代码、更快的修改配置文件以及便于理解,我们建议继承现有方法。 + +对于在同一算法文件夹下的所有配置文件,MMClassification 推荐只存在 **一个** 对应的 _原始配置_ 文件。 +所有其他的配置文件都应该继承 _原始配置_ 文件,这样就能保证配置文件的最大继承深度为 3。 + +例如,如果在 ResNet 的基础上做了一些修改,用户首先可以通过指定 `_base_ = './resnet50_8xb32_in1k.py'`(相对于你的配置文件的路径),来继承基础的 ResNet 结构、数据集以及其他训练配置信息,然后修改配置文件中的必要参数以完成继承。如想在基础 resnet50 的基础上将训练轮数由 100 改为 300 和修改学习率衰减轮数,同时修改数据集路径,可以建立新的配置文件 `configs/resnet/resnet50_8xb32-300e_in1k.py`, 文件中写入以下内容: + +```python +_base_ = './resnet50_8xb32_in1k.py' + +runner = dict(max_epochs=300) +lr_config = dict(step=[150, 200, 250]) + +data = dict( + train=dict(data_prefix='mydata/imagenet/train'), + val=dict(data_prefix='mydata/imagenet/train', ), + test=dict(data_prefix='mydata/imagenet/train', ) +) +``` + +### 使用配置文件里的中间变量 + +用一些中间变量,中间变量让配置文件更加清晰,也更容易修改。 + +例如数据集里的 `train_pipeline` / `test_pipeline` 是作为数据流水线的中间变量。我们首先要定义 `train_pipeline` / `test_pipeline`,然后将它们传递到 `data` 中。如果想修改训练或测试时输入图片的大小,就需要修改 `train_pipeline` / `test_pipeline` 这些中间变量。 + +```python +img_norm_cfg = dict( + mean=[123.675, 116.28, 103.53], std=[58.395, 57.12, 57.375], to_rgb=True) +train_pipeline = [ + dict(type='LoadImageFromFile'), + dict(type='RandomResizedCrop', size=384, backend='pillow',), + dict(type='RandomFlip', flip_prob=0.5, direction='horizontal'), + dict(type='Normalize', **img_norm_cfg), + dict(type='ImageToTensor', keys=['img']), + dict(type='ToTensor', keys=['gt_label']), + dict(type='Collect', keys=['img', 'gt_label']) +] +test_pipeline = [ + dict(type='LoadImageFromFile'), + dict(type='Resize', size=384, backend='pillow'), + dict(type='Normalize', **img_norm_cfg), + dict(type='ImageToTensor', keys=['img']), + dict(type='Collect', keys=['img']) +] +data = dict( + train=dict(pipeline=train_pipeline), + val=dict(pipeline=test_pipeline), + test=dict(pipeline=test_pipeline)) +``` + +### 忽略基础配置文件里的部分内容 + +有时,您需要设置 `_delete_=True` 去忽略基础配置文件里的一些域内容。 可以参照 [mmcv](https://mmcv.readthedocs.io/zh_CN/latest/understand_mmcv/config.html#inherit-from-base-config-with-ignored-fields) 来获得一些简单的指导。 + +以下是一个简单应用案例。 如果在上述 ResNet50 案例中 使用 cosine schedule ,使用继承并直接修改会报 `get unexcepected keyword 'step'` 错, 因为基础配置文件 lr_config 域信息的 `'step'` 字段被保留下来了,需要加入 `_delete_=True` 去忽略基础配置文件里的 `lr_config` 相关域内容: + +```python +_base_ = '../../configs/resnet/resnet50_8xb32_in1k.py' + +lr_config = dict( + _delete_=True, + policy='CosineAnnealing', + min_lr=0, + warmup='linear', + by_epoch=True, + warmup_iters=5, + warmup_ratio=0.1 +) +``` + +### 引用基础配置文件里的变量 + +有时,您可以引用 `_base_` 配置信息的一些域内容,这样可以避免重复定义。 可以参照 [mmcv](https://mmcv.readthedocs.io/zh_CN/latest/understand_mmcv/config.html#reference-variables-from-base) 来获得一些简单的指导。 + +以下是一个简单应用案例,在训练数据预处理流水线中使用 auto augment 数据增强,参考配置文件 [`configs/_base_/datasets/imagenet_bs64_autoaug.py`](https://github.com/open-mmlab/mmclassification/blob/master/configs/_base_/datasets/imagenet_bs64_autoaug.py)。 在定义 `train_pipeline` 时,可以直接在 `_base_` 中加入定义 auto augment 数据增强的文件命名,再通过 `{{_base_.auto_increasing_policies}}` 引用变量: + +```python +_base_ = ['./pipelines/auto_aug.py'] + +# dataset settings +dataset_type = 'ImageNet' +img_norm_cfg = dict( + mean=[123.675, 116.28, 103.53], std=[58.395, 57.12, 57.375], to_rgb=True) +train_pipeline = [ + dict(type='LoadImageFromFile'), + dict(type='RandomResizedCrop', size=224), + dict(type='RandomFlip', flip_prob=0.5, direction='horizontal'), + dict(type='AutoAugment', policies={{_base_.auto_increasing_policies}}), + dict(type='Normalize', **img_norm_cfg), + dict(type='ImageToTensor', keys=['img']), + dict(type='ToTensor', keys=['gt_label']), + dict(type='Collect', keys=['img', 'gt_label']) +] +test_pipeline = [...] +data = dict( + samples_per_gpu=64, + workers_per_gpu=2, + train=dict(..., pipeline=train_pipeline), + val=dict(..., pipeline=test_pipeline)) +evaluation = dict(interval=1, metric='accuracy') +``` + +## 通过命令行参数修改配置信息 + +当用户使用脚本 "tools/train.py" 或者 "tools/test.py" 提交任务,以及使用一些工具脚本时,可以通过指定 `--cfg-options` 参数来直接修改所使用的配置文件内容。 + +- 更新配置文件内的字典 + + 可以按照原始配置文件中字典的键的顺序指定配置选项。 + 例如,`--cfg-options model.backbone.norm_eval=False` 将主干网络中的所有 BN 模块更改为 `train` 模式。 + +- 更新配置文件内列表的键 + + 一些配置字典在配置文件中会形成一个列表。例如,训练流水线 `data.train.pipeline` 通常是一个列表。 + 例如,`[dict(type='LoadImageFromFile'), dict(type='TopDownRandomFlip', flip_prob=0.5), ...]` 。如果要将流水线中的 `'flip_prob=0.5'` 更改为 `'flip_prob=0.0'`,您可以这样指定 `--cfg-options data.train.pipeline.1.flip_prob=0.0` 。 + +- 更新列表/元组的值。 + + 当配置文件中需要更新的是一个列表或者元组,例如,配置文件通常会设置 `workflow=[('train', 1)]`,用户如果想更改, + 需要指定 `--cfg-options workflow="[(train,1),(val,1)]"`。注意这里的引号 " 对于列表以及元组数据类型的修改是必要的, + 并且 **不允许** 引号内所指定的值的书写存在空格。 + +## 导入用户自定义模块 + +```{note} +本部分仅在当将 MMClassification 当作库构建自己项目时可能用到,初学者可跳过。 +``` + +在学习完后续教程 [如何添加新数据集](https://mmclassification.readthedocs.io/zh_CN/latest/tutorials/new_dataset.html)、[如何设计数据处理流程](https://mmclassification.readthedocs.io/zh_CN/latest/tutorials/data_pipeline.html) 、[如何增加新模块](https://mmclassification.readthedocs.io/zh_CN/latest/tutorials/new_modules.html) 后,您可能使用 MMClassification 完成自己的项目并在项目中自定义了数据集、模型、数据增强等。为了精简代码,可以将 MMClassification 作为一个第三方库,只需要保留自己的额外的代码,并在配置文件中导入自定义的模块。案例可以参考 [OpenMMLab 算法大赛项目](https://github.com/zhangrui-wolf/openmmlab-competition-2021)。 + +只需要在你的配置文件中添加以下代码: + +```python +custom_imports = dict( + imports=['your_dataset_class', + 'your_transforme_class', + 'your_model_class', + 'your_module_class'], + allow_failed_imports=False) +``` + +## 常见问题 + +- 无 diff --git a/openmmlab_test/mmclassification-0.24.1/docs/zh_CN/tutorials/data_pipeline.md b/openmmlab_test/mmclassification-0.24.1/docs/zh_CN/tutorials/data_pipeline.md new file mode 100644 index 00000000..bbcf9d58 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/docs/zh_CN/tutorials/data_pipeline.md @@ -0,0 +1,148 @@ +# 教程 4:如何设计数据处理流程 + +## 设计数据流水线 + +按照典型的用法,我们通过 `Dataset` 和 `DataLoader` 来使用多个 worker 进行数据加 +载。对 `Dataset` 的索引操作将返回一个与模型的 `forward` 方法的参数相对应的字典。 + +数据流水线和数据集在这里是解耦的。通常,数据集定义如何处理标注文件,而数据流水 +线定义所有准备数据字典的步骤。流水线由一系列操作组成。每个操作都将一个字典作为 +输入,并输出一个字典。 + +这些操作分为数据加载,预处理和格式化。 + +这里使用 ResNet-50 在 ImageNet 数据集上的数据流水线作为示例。 + +```python +img_norm_cfg = dict( + mean=[123.675, 116.28, 103.53], std=[58.395, 57.12, 57.375], to_rgb=True) +train_pipeline = [ + dict(type='LoadImageFromFile'), + dict(type='RandomResizedCrop', size=224), + dict(type='RandomFlip', flip_prob=0.5, direction='horizontal'), + dict(type='Normalize', **img_norm_cfg), + dict(type='ImageToTensor', keys=['img']), + dict(type='ToTensor', keys=['gt_label']), + dict(type='Collect', keys=['img', 'gt_label']) +] +test_pipeline = [ + dict(type='LoadImageFromFile'), + dict(type='Resize', size=256), + dict(type='CenterCrop', crop_size=224), + dict(type='Normalize', **img_norm_cfg), + dict(type='ImageToTensor', keys=['img']), + dict(type='Collect', keys=['img']) +] +``` + +对于每个操作,我们列出了添加、更新、删除的相关字典字段。在流水线的最后,我们使 +用 `Collect` 仅保留进行模型 `forward` 方法所需的项。 + +### 数据加载 + +`LoadImageFromFile` - 从文件中加载图像 + +- 添加:img, img_shape, ori_shape + +默认情况下,`LoadImageFromFile` 将会直接从硬盘加载图像,但对于一些效率较高、规 +模较小的模型,这可能会导致 IO 瓶颈。MMCV 支持多种数据加载后端来加速这一过程。例 +如,如果训练设备上配置了 [memcached](https://memcached.org/),那么我们按照如下 +方式修改配置文件。 + +``` +memcached_root = '/mnt/xxx/memcached_client/' +train_pipeline = [ + dict( + type='LoadImageFromFile', + file_client_args=dict( + backend='memcached', + server_list_cfg=osp.join(memcached_root, 'server_list.conf'), + client_cfg=osp.join(memcached_root, 'client.conf'))), +] +``` + +更多支持的数据加载后端,可以参见 [mmcv.fileio.FileClient](https://github.com/open-mmlab/mmcv/blob/master/mmcv/fileio/file_client.py)。 + +### 预处理 + +`Resize` - 缩放图像尺寸 + +- 添加:scale, scale_idx, pad_shape, scale_factor, keep_ratio +- 更新:img, img_shape + +`RandomFlip` - 随机翻转图像 + +- 添加:flip, flip_direction +- 更新:img + +`RandomCrop` - 随机裁剪图像 + +- 更新:img, pad_shape + +`Normalize` - 图像数据归一化 + +- 添加:img_norm_cfg +- 更新:img + +### 格式化 + +`ToTensor` - 转换(标签)数据至 `torch.Tensor` + +- 更新:根据参数 `keys` 指定 + +`ImageToTensor` - 转换图像数据至 `torch.Tensor` + +- 更新:根据参数 `keys` 指定 + +`Collect` - 保留指定键值 + +- 删除:除了参数 `keys` 指定以外的所有键值对 + +## 扩展及使用自定义流水线 + +1. 编写一个新的数据处理操作,并放置在 `mmcls/datasets/pipelines/` 目录下的任何 + 一个文件中,例如 `my_pipeline.py`。这个类需要重载 `__call__` 方法,接受一个 + 字典作为输入,并返回一个字典。 + + ```python + from mmcls.datasets import PIPELINES + + @PIPELINES.register_module() + class MyTransform(object): + + def __call__(self, results): + # 对 results['img'] 进行变换操作 + return results + ``` + +2. 在 `mmcls/datasets/pipelines/__init__.py` 中导入这个新的类。 + + ```python + ... + from .my_pipeline import MyTransform + + __all__ = [ + ..., 'MyTransform' + ] + ``` + +3. 在数据流水线的配置中添加这一操作。 + + ```python + img_norm_cfg = dict( + mean=[123.675, 116.28, 103.53], std=[58.395, 57.12, 57.375], to_rgb=True) + train_pipeline = [ + dict(type='LoadImageFromFile'), + dict(type='RandomResizedCrop', size=224), + dict(type='RandomFlip', flip_prob=0.5, direction='horizontal'), + dict(type='MyTransform'), + dict(type='Normalize', **img_norm_cfg), + dict(type='ImageToTensor', keys=['img']), + dict(type='ToTensor', keys=['gt_label']), + dict(type='Collect', keys=['img', 'gt_label']) + ] + ``` + +## 流水线可视化 + +设计好数据流水线后,可以使用[可视化工具](../tools/visualization.md)查看具体的效果。 diff --git a/openmmlab_test/mmclassification-0.24.1/docs/zh_CN/tutorials/finetune.md b/openmmlab_test/mmclassification-0.24.1/docs/zh_CN/tutorials/finetune.md new file mode 100644 index 00000000..efaa88f3 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/docs/zh_CN/tutorials/finetune.md @@ -0,0 +1,222 @@ +# 教程 2:如何微调模型 + +已经证明,在 ImageNet 数据集上预先训练的分类模型对于其他数据集和其他下游任务有很好的效果。 + +该教程提供了如何将 [Model Zoo](https://github.com/open-mmlab/mmclassification/blob/master/docs/model_zoo.md) 中提供的预训练模型用于其他数据集,已获得更好的效果。 + +在新数据集上微调模型分为两步: + +- 按照 [教程 3:如何自定义数据集](new_dataset.md) 添加对新数据集的支持。 +- 按照本教程中讨论的内容修改配置文件 + +假设我们现在有一个在 ImageNet-2012 数据集上训练好的 ResNet-50 模型,并且希望在 +CIFAR-10 数据集上进行模型微调,我们需要修改配置文件中的五个部分。 + +## 继承基础配置 + +首先,创建一个新的配置文件 `configs/tutorial/resnet50_finetune_cifar.py` 来保存我们的配置,当然,这个文件名可以自由设定。 + +为了重用不同配置之间的通用部分,我们支持从多个现有配置中继承配置。要微调 +ResNet-50 模型,新配置需要继承 `_base_/models/resnet50.py` 来搭建模型的基本结构。 +为了使用 CIFAR10 数据集,新的配置文件可以直接继承 `_base_/datasets/cifar10.py`。 +而为了保留运行相关设置,比如训练调整器,新的配置文件需要继承 +`_base_/default_runtime.py`。 + +要继承以上这些配置文件,只需要把下面一段代码放在我们的配置文件开头。 + +```python +_base_ = [ + '../_base_/models/resnet50.py', + '../_base_/datasets/cifar10.py', '../_base_/default_runtime.py' +] +``` + +除此之外,你也可以不使用继承,直接编写完整的配置文件,例如 +[`configs/lenet/lenet5_mnist.py`](https://github.com/open-mmlab/mmclassification/blob/master/configs/lenet/lenet5_mnist.py)。 + +## 修改模型 + +在进行模型微调是,我们通常希望在主干网络(backbone)加载预训练模型,再用我们的数据集训练一个新的分类头(head)。 + +为了在主干网络加载预训练模型,我们需要修改主干网络的初始化设置,使用 +`Pretrained` 类型的初始化函数。另外,在初始化设置中,我们使用 +`prefix='backbone'` 来告诉初始化函数移除权重文件中键值名称的前缀,比如把 +`backbone.conv1` 变成 `conv1`。方便起见,我们这里使用一个在线的权重文件链接,它 +会在训练前自动下载对应的文件,你也可以提前下载这个模型,然后使用本地路径。 + +接下来,新的配置文件需要按照新数据集的类别数目来修改分类头的配置。只需要修改分 +类头中的 `num_classes` 设置即可。 + +```python +model = dict( + backbone=dict( + init_cfg=dict( + type='Pretrained', + checkpoint='https://download.openmmlab.com/mmclassification/v0/resnet/resnet50_8xb32_in1k_20210831-ea4938fc.pth', + prefix='backbone', + )), + head=dict(num_classes=10), +) +``` + +```{tip} +这里我们只需要设定我们想要修改的部分配置,其他配置将会自动从我们的父配置文件中获取。 +``` + +另外,有时我们在进行微调时会希望冻结主干网络前面几层的参数,这么做有助于在后续 +训练中,保持网络从预训练权重中获得的提取低阶特征的能力。在 MMClassification 中, +这一功能可以通过简单的一个 `frozen_stages` 参数来实现。比如我们需要冻结前两层网 +络的参数,只需要在上面的配置中添加一行: + +```python +model = dict( + backbone=dict( + frozen_stages=2, + init_cfg=dict( + type='Pretrained', + checkpoint='https://download.openmmlab.com/mmclassification/v0/resnet/resnet50_8xb32_in1k_20210831-ea4938fc.pth', + prefix='backbone', + )), + head=dict(num_classes=10), +) +``` + +```{note} +目前还不是所有的网络都支持 `frozen_stages` 参数,在使用之前,请先检查 +[文档](https://mmclassification.readthedocs.io/zh_CN/latest/api/models.html#backbones) +以确认你所使用的主干网络是否支持。 +``` + +## 修改数据集 + +当针对一个新的数据集进行微调时,我们通常都需要修改一些数据集相关的配置。比如这 +里,我们就需要把 CIFAR-10 数据集中的图像大小从 32 缩放到 224 来配合 ImageNet 上 +预训练模型的输入。这一需要可以通过修改数据集的预处理流水线(pipeline)来实现。 + +```python +img_norm_cfg = dict( + mean=[125.307, 122.961, 113.8575], + std=[51.5865, 50.847, 51.255], + to_rgb=False, +) +train_pipeline = [ + dict(type='RandomCrop', size=32, padding=4), + dict(type='RandomFlip', flip_prob=0.5, direction='horizontal'), + dict(type='Resize', size=224), + dict(type='Normalize', **img_norm_cfg), + dict(type='ImageToTensor', keys=['img']), + dict(type='ToTensor', keys=['gt_label']), + dict(type='Collect', keys=['img', 'gt_label']), +] +test_pipeline = [ + dict(type='Resize', size=224), + dict(type='Normalize', **img_norm_cfg), + dict(type='ImageToTensor', keys=['img']), + dict(type='Collect', keys=['img']), +] +data = dict( + train=dict(pipeline=train_pipeline), + val=dict(pipeline=test_pipeline), + test=dict(pipeline=test_pipeline), +) +``` + +## 修改训练策略设置 + +用于微调任务的超参数与默认配置不同,通常只需要较小的学习率和较少的训练时间。 + +```python +# 用于批大小为 128 的优化器学习率 +optimizer = dict(type='SGD', lr=0.01, momentum=0.9, weight_decay=0.0001) +optimizer_config = dict(grad_clip=None) +# 学习率衰减策略 +lr_config = dict(policy='step', step=[15]) +runner = dict(type='EpochBasedRunner', max_epochs=200) +log_config = dict(interval=100) +``` + +## 开始训练 + +现在,我们完成了用于微调的配置文件,完整的文件如下: + +```python +_base_ = [ + '../_base_/models/resnet50.py', + '../_base_/datasets/cifar10_bs16.py', '../_base_/default_runtime.py' +] + +# 模型设置 +model = dict( + backbone=dict( + frozen_stages=2, + init_cfg=dict( + type='Pretrained', + checkpoint='https://download.openmmlab.com/mmclassification/v0/resnet/resnet50_8xb32_in1k_20210831-ea4938fc.pth', + prefix='backbone', + )), + head=dict(num_classes=10), +) + +# 数据集设置 +img_norm_cfg = dict( + mean=[125.307, 122.961, 113.8575], + std=[51.5865, 50.847, 51.255], + to_rgb=False, +) +train_pipeline = [ + dict(type='RandomCrop', size=32, padding=4), + dict(type='RandomFlip', flip_prob=0.5, direction='horizontal'), + dict(type='Resize', size=224), + dict(type='Normalize', **img_norm_cfg), + dict(type='ImageToTensor', keys=['img']), + dict(type='ToTensor', keys=['gt_label']), + dict(type='Collect', keys=['img', 'gt_label']), +] +test_pipeline = [ + dict(type='Resize', size=224), + dict(type='Normalize', **img_norm_cfg), + dict(type='ImageToTensor', keys=['img']), + dict(type='Collect', keys=['img']), +] +data = dict( + train=dict(pipeline=train_pipeline), + val=dict(pipeline=test_pipeline), + test=dict(pipeline=test_pipeline), +) + +# 训练策略设置 +# 用于批大小为 128 的优化器学习率 +optimizer = dict(type='SGD', lr=0.01, momentum=0.9, weight_decay=0.0001) +optimizer_config = dict(grad_clip=None) +# 学习率衰减策略 +lr_config = dict(policy='step', step=[15]) +runner = dict(type='EpochBasedRunner', max_epochs=200) +log_config = dict(interval=100) +``` + +接下来,我们使用一台 8 张 GPU 的电脑来训练我们的模型,指令如下: + +```shell +bash tools/dist_train.sh configs/tutorial/resnet50_finetune_cifar.py 8 +``` + +当然,我们也可以使用单张 GPU 来进行训练,使用如下命令: + +```shell +python tools/train.py configs/tutorial/resnet50_finetune_cifar.py +``` + +但是如果我们使用单张 GPU 进行训练的话,需要在数据集设置部分作如下修改: + +```python +data = dict( + samples_per_gpu=128, + train=dict(pipeline=train_pipeline), + val=dict(pipeline=test_pipeline), + test=dict(pipeline=test_pipeline), +) +``` + +这是因为我们的训练策略是针对批次大小(batch size)为 128 设置的。在父配置文件中, +设置了 `samples_per_gpu=16`,如果使用 8 张 GPU,总的批次大小就是 128。而如果使 +用单张 GPU,就必须手动修改 `samples_per_gpu=128` 来匹配训练策略。 diff --git a/openmmlab_test/mmclassification-0.24.1/docs/zh_CN/tutorials/new_dataset.md b/openmmlab_test/mmclassification-0.24.1/docs/zh_CN/tutorials/new_dataset.md new file mode 100644 index 00000000..86782a13 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/docs/zh_CN/tutorials/new_dataset.md @@ -0,0 +1,230 @@ +# 教程 3:如何自定义数据集 + +我们支持许多常用的图像分类领域公开数据集,你可以在 +[此页面](https://mmclassification.readthedocs.io/zh_CN/latest/api/datasets.html)中找到它们。 + +在本节中,我们将介绍如何[使用自己的数据集](#使用自己的数据集)以及如何[使用数据集包装](#使用数据集包装)。 + +## 使用自己的数据集 + +### 将数据集重新组织为已有格式 + +想要使用自己的数据集,最简单的方法就是将数据集转换为现有的数据集格式。 + +对于多分类任务,我们推荐使用 [`CustomDataset`](https://mmclassification.readthedocs.io/zh_CN/latest/api/datasets.html#mmcls.datasets.CustomDataset) 格式。 + +`CustomDataset` 支持两种类型的数据格式: + +1. 提供一个标注文件,其中每一行表示一张样本图片。 + + 样本图片可以以任意的结构进行组织,比如: + + ``` + train/ + ├── folder_1 + │ ├── xxx.png + │ ├── xxy.png + │ └── ... + ├── 123.png + ├── nsdf3.png + └── ... + ``` + + 而标注文件则记录了所有样本图片的文件路径以及相应的类别序号。其中第一列表示图像 + 相对于主目录(本例中为 `train` 目录)的路径,第二列表示类别序号: + + ``` + folder_1/xxx.png 0 + folder_1/xxy.png 1 + 123.png 1 + nsdf3.png 2 + ... + ``` + + ```{note} + 类别序号的值应当属于 `[0, num_classes - 1]` 范围。 + ``` + +2. 将所有样本文件按如下结构进行组织: + + ``` + train/ + ├── cat + │ ├── xxx.png + │ ├── xxy.png + │ └── ... + │ └── xxz.png + ├── bird + │ ├── bird1.png + │ ├── bird2.png + │ └── ... + └── dog + ├── 123.png + ├── nsdf3.png + ├── ... + └── asd932_.png + ``` + + 这种情况下,你不需要提供标注文件,所有位于 `cat` 目录下的图片文件都会被视为 `cat` 类别的样本。 + +通常而言,我们会将整个数据集分为三个子数据集:`train`,`val` 和 `test`,分别用于训练、验证和测试。**每一个**子 +数据集都需要被组织成如上的一种结构。 + +举个例子,完整的数据集结构如下所示(使用第一种组织结构): + +``` +mmclassification +└── data + └── my_dataset + ├── meta + │ ├── train.txt + │ ├── val.txt + │ └── test.txt + ├── train + ├── val + └── test +``` + +之后在你的配置文件中,可以修改其中的 `data` 字段为如下格式: + +```python +... +dataset_type = 'CustomDataset' +classes = ['cat', 'bird', 'dog'] # 数据集中各类别的名称 + +data = dict( + train=dict( + type=dataset_type, + data_prefix='data/my_dataset/train', + ann_file='data/my_dataset/meta/train.txt', + classes=classes, + pipeline=train_pipeline + ), + val=dict( + type=dataset_type, + data_prefix='data/my_dataset/val', + ann_file='data/my_dataset/meta/val.txt', + classes=classes, + pipeline=test_pipeline + ), + test=dict( + type=dataset_type, + data_prefix='data/my_dataset/test', + ann_file='data/my_dataset/meta/test.txt', + classes=classes, + pipeline=test_pipeline + ) +) +... +``` + +### 创建一个新的数据集类 + +用户可以编写一个继承自 `BasesDataset` 的新数据集类,并重载 `load_annotations(self)` 方法, +类似 [CIFAR10](https://github.com/open-mmlab/mmclassification/blob/master/mmcls/datasets/cifar.py) +和 [ImageNet](https://github.com/open-mmlab/mmclassification/blob/master/mmcls/datasets/imagenet.py)。 + +通常,此方法返回一个包含所有样本的列表,其中的每个样本都是一个字典。字典中包含了必要的数据信息,例如 `img` 和 `gt_label`。 + +假设我们将要实现一个 `Filelist` 数据集,该数据集将使用文件列表进行训练和测试。注释列表的格式如下: + +``` +000001.jpg 0 +000002.jpg 1 +``` + +我们可以在 `mmcls/datasets/filelist.py` 中创建一个新的数据集类以加载数据。 + +```python +import mmcv +import numpy as np + +from .builder import DATASETS +from .base_dataset import BaseDataset + + +@DATASETS.register_module() +class Filelist(BaseDataset): + + def load_annotations(self): + assert isinstance(self.ann_file, str) + + data_infos = [] + with open(self.ann_file) as f: + samples = [x.strip().split(' ') for x in f.readlines()] + for filename, gt_label in samples: + info = {'img_prefix': self.data_prefix} + info['img_info'] = {'filename': filename} + info['gt_label'] = np.array(gt_label, dtype=np.int64) + data_infos.append(info) + return data_infos + +``` + +将新的数据集类加入到 `mmcls/datasets/__init__.py` 中: + +```python +from .base_dataset import BaseDataset +... +from .filelist import Filelist + +__all__ = [ + 'BaseDataset', ... ,'Filelist' +] +``` + +然后在配置文件中,为了使用 `Filelist`,用户可以按以下方式修改配置 + +```python +train = dict( + type='Filelist', + ann_file = 'image_list.txt', + pipeline=train_pipeline +) +``` + +## 使用数据集包装 + +数据集包装是一种可以改变数据集类行为的类,比如将数据集中的样本进行重复,或是将不同类别的数据进行再平衡。 + +### 重复数据集 + +我们使用 `RepeatDataset` 作为一个重复数据集的封装。举个例子,假设原始数据集是 `Dataset_A`,为了重复它,我们需要如下的配置文件: + +```python +data = dict( + train=dict( + type='RepeatDataset', + times=N, + dataset=dict( # 这里是 Dataset_A 的原始配置 + type='Dataset_A', + ... + pipeline=train_pipeline + ) + ) + ... +) +``` + +### 类别平衡数据集 + +我们使用 `ClassBalancedDataset` 作为根据类别频率对数据集进行重复采样的封装类。进行重复采样的数据集需要实现函数 `self.get_cat_ids(idx)` 以支持 `ClassBalancedDataset`。 + +举个例子,按照 `oversample_thr=1e-3` 对 `Dataset_A` 进行重复采样,需要如下的配置文件: + +```python +data = dict( + train = dict( + type='ClassBalancedDataset', + oversample_thr=1e-3, + dataset=dict( # 这里是 Dataset_A 的原始配置 + type='Dataset_A', + ... + pipeline=train_pipeline + ) + ) + ... +) +``` + +更加具体的细节,请参考 [API 文档](https://mmclassification.readthedocs.io/zh_CN/latest/api/datasets.html#mmcls.datasets.ClassBalancedDataset)。 diff --git a/openmmlab_test/mmclassification-0.24.1/docs/zh_CN/tutorials/new_modules.md b/openmmlab_test/mmclassification-0.24.1/docs/zh_CN/tutorials/new_modules.md new file mode 100644 index 00000000..14ee32c1 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/docs/zh_CN/tutorials/new_modules.md @@ -0,0 +1,280 @@ +# 教程 5:如何增加新模块 + +## 开发新组件 + +我们基本上将模型组件分为 3 种类型。 + +- 主干网络:通常是一个特征提取网络,例如 ResNet、MobileNet +- 颈部:用于连接主干网络和头部的组件,例如 GlobalAveragePooling +- 头部:用于执行特定任务的组件,例如分类和回归 + +### 添加新的主干网络 + +这里,我们以 ResNet_CIFAR 为例,展示了如何开发一个新的主干网络组件。 + +ResNet_CIFAR 针对 CIFAR 32x32 的图像输入,将 ResNet 中 `kernel_size=7, stride=2` 的设置替换为 `kernel_size=3, stride=1`,并移除了 stem 层之后的 +`MaxPooling`,以避免传递过小的特征图到残差块中。 + +它继承自 `ResNet` 并只修改了 stem 层。 + +1. 创建一个新文件 `mmcls/models/backbones/resnet_cifar.py`。 + +```python +import torch.nn as nn + +from ..builder import BACKBONES +from .resnet import ResNet + + +@BACKBONES.register_module() +class ResNet_CIFAR(ResNet): + + """ResNet backbone for CIFAR. + + (对这个主干网络的简短描述) + + Args: + depth(int): Network depth, from {18, 34, 50, 101, 152}. + ... + (参数文档) + """ + + def __init__(self, depth, deep_stem=False, **kwargs): + # 调用基类 ResNet 的初始化函数 + super(ResNet_CIFAR, self).__init__(depth, deep_stem=deep_stem **kwargs) + # 其他特殊的初始化流程 + assert not self.deep_stem, 'ResNet_CIFAR do not support deep_stem' + + def _make_stem_layer(self, in_channels, base_channels): + # 重载基类的方法,以实现对网络结构的修改 + self.conv1 = build_conv_layer( + self.conv_cfg, + in_channels, + base_channels, + kernel_size=3, + stride=1, + padding=1, + bias=False) + self.norm1_name, norm1 = build_norm_layer( + self.norm_cfg, base_channels, postfix=1) + self.add_module(self.norm1_name, norm1) + self.relu = nn.ReLU(inplace=True) + + def forward(self, x): # 需要返回一个元组 + pass # 此处省略了网络的前向实现 + + def init_weights(self, pretrained=None): + pass # 如果有必要的话,重载基类 ResNet 的参数初始化函数 + + def train(self, mode=True): + pass # 如果有必要的话,重载基类 ResNet 的训练状态函数 +``` + +2. 在 `mmcls/models/backbones/__init__.py` 中导入新模块 + +```python +... +from .resnet_cifar import ResNet_CIFAR + +__all__ = [ + ..., 'ResNet_CIFAR' +] +``` + +3. 在配置文件中使用新的主干网络 + +```python +model = dict( + ... + backbone=dict( + type='ResNet_CIFAR', + depth=18, + other_arg=xxx), + ... +``` + +### 添加新的颈部组件 + +这里我们以 `GlobalAveragePooling` 为例。这是一个非常简单的颈部组件,没有任何参数。 + +要添加新的颈部组件,我们主要需要实现 `forward` 函数,该函数对主干网络的输出进行 +一些操作并将结果传递到头部。 + +1. 创建一个新文件 `mmcls/models/necks/gap.py` + + ```python + import torch.nn as nn + + from ..builder import NECKS + + @NECKS.register_module() + class GlobalAveragePooling(nn.Module): + + def __init__(self): + self.gap = nn.AdaptiveAvgPool2d((1, 1)) + + def forward(self, inputs): + # 简单起见,我们默认输入是一个张量 + outs = self.gap(inputs) + outs = outs.view(inputs.size(0), -1) + return outs + ``` + +2. 在 `mmcls/models/necks/__init__.py` 中导入新模块 + + ```python + ... + from .gap import GlobalAveragePooling + + __all__ = [ + ..., 'GlobalAveragePooling' + ] + ``` + +3. 修改配置文件以使用新的颈部组件 + + ```python + model = dict( + neck=dict(type='GlobalAveragePooling'), + ) + ``` + +### 添加新的头部组件 + +在此,我们以 `LinearClsHead` 为例,说明如何开发新的头部组件。 + +要添加一个新的头部组件,基本上我们需要实现 `forward_train` 函数,它接受来自颈部 +或主干网络的特征图作为输入,并基于真实标签计算。 + +1. 创建一个文件 `mmcls/models/heads/linear_head.py`. + + ```python + from ..builder import HEADS + from .cls_head import ClsHead + + + @HEADS.register_module() + class LinearClsHead(ClsHead): + + def __init__(self, + num_classes, + in_channels, + loss=dict(type='CrossEntropyLoss', loss_weight=1.0), + topk=(1, )): + super(LinearClsHead, self).__init__(loss=loss, topk=topk) + self.in_channels = in_channels + self.num_classes = num_classes + + if self.num_classes <= 0: + raise ValueError( + f'num_classes={num_classes} must be a positive integer') + + self._init_layers() + + def _init_layers(self): + self.fc = nn.Linear(self.in_channels, self.num_classes) + + def init_weights(self): + normal_init(self.fc, mean=0, std=0.01, bias=0) + + def forward_train(self, x, gt_label): + cls_score = self.fc(x) + losses = self.loss(cls_score, gt_label) + return losses + + ``` + +2. 在 `mmcls/models/heads/__init__.py` 中导入这个模块 + + ```python + ... + from .linear_head import LinearClsHead + + __all__ = [ + ..., 'LinearClsHead' + ] + ``` + +3. 修改配置文件以使用新的头部组件。 + +连同 `GlobalAveragePooling` 颈部组件,完整的模型配置如下: + +```python +model = dict( + type='ImageClassifier', + backbone=dict( + type='ResNet', + depth=50, + num_stages=4, + out_indices=(3, ), + style='pytorch'), + neck=dict(type='GlobalAveragePooling'), + head=dict( + type='LinearClsHead', + num_classes=1000, + in_channels=2048, + loss=dict(type='CrossEntropyLoss', loss_weight=1.0), + topk=(1, 5), + )) + +``` + +### 添加新的损失函数 + +要添加新的损失函数,我们主要需要在损失函数模块中 `forward` 函数。另外,利用装饰器 `weighted_loss` 可以方便的实现对每个元素的损失进行加权平均。 + +假设我们要模拟从另一个分类模型生成的概率分布,需要添加 `L1loss` 来实现该目的。 + +1. 创建一个新文件 `mmcls/models/losses/l1_loss.py` + + ```python + import torch + import torch.nn as nn + + from ..builder import LOSSES + from .utils import weighted_loss + + @weighted_loss + def l1_loss(pred, target): + assert pred.size() == target.size() and target.numel() > 0 + loss = torch.abs(pred - target) + return loss + + @LOSSES.register_module() + class L1Loss(nn.Module): + + def __init__(self, reduction='mean', loss_weight=1.0): + super(L1Loss, self).__init__() + self.reduction = reduction + self.loss_weight = loss_weight + + def forward(self, + pred, + target, + weight=None, + avg_factor=None, + reduction_override=None): + assert reduction_override in (None, 'none', 'mean', 'sum') + reduction = ( + reduction_override if reduction_override else self.reduction) + loss = self.loss_weight * l1_loss( + pred, target, weight, reduction=reduction, avg_factor=avg_factor) + return loss + ``` + +2. 在文件 `mmcls/models/losses/__init__.py` 中导入这个模块 + + ```python + ... + from .l1_loss import L1Loss, l1_loss + + __all__ = [ + ..., 'L1Loss', 'l1_loss' + ] + ``` + +3. 修改配置文件中的 `loss` 字段以使用新的损失函数 + + ```python + loss=dict(type='L1Loss', loss_weight=1.0)) + ``` diff --git a/openmmlab_test/mmclassification-0.24.1/docs/zh_CN/tutorials/runtime.md b/openmmlab_test/mmclassification-0.24.1/docs/zh_CN/tutorials/runtime.md new file mode 100644 index 00000000..0be7999e --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/docs/zh_CN/tutorials/runtime.md @@ -0,0 +1,260 @@ +# 教程 7:如何自定义模型运行参数 + +在本教程中,我们将介绍如何在运行自定义模型时,进行自定义工作流和钩子的方法。 + + + +- [定制工作流](#定制工作流) +- [钩子](#钩子) + - [默认训练钩子](#默认训练钩子) + - [使用内置钩子](#使用内置钩子) + - [自定义钩子](#自定义钩子) +- [常见问题](#常见问题) + + + +## 定制工作流 + +工作流是一个形如 (任务名,周期数) 的列表,用于指定运行顺序和周期。这里“周期数”的单位由执行器的类型来决定。 + +比如在 MMClassification 中,我们默认使用基于**轮次**的执行器(`EpochBasedRunner`),那么“周期数”指的就是对应的任务在一个周期中 +要执行多少个轮次。通常,我们只希望执行训练任务,那么只需要使用以下设置: + +```python +workflow = [('train', 1)] +``` + +有时我们可能希望在训练过程中穿插检查模型在验证集上的一些指标(例如,损失,准确性)。 + +在这种情况下,可以将工作流程设置为: + +```python +[('train', 1), ('val', 1)] +``` + +这样一来,程序会一轮训练一轮测试地反复执行。 + +需要注意的是,默认情况下,我们并不推荐用这种方式来进行模型验证,而是推荐在训练中使用 **`EvalHook`** 进行模型验证。使用上述工作流的方式进行模型验证只是一个替代方案。 + +```{note} +1. 在验证周期时不会更新模型参数。 +2. 配置文件内的关键词 `max_epochs` 控制训练时期数,并且不会影响验证工作流程。 +3. 工作流 `[('train', 1), ('val', 1)]` 和 `[('train', 1)]` 不会改变 `EvalHook` 的行为。 + 因为 `EvalHook` 由 `after_train_epoch` 调用,而验证工作流只会影响 `after_val_epoch` 调用的钩子。 + 因此,`[('train', 1), ('val', 1)]` 和 ``[('train', 1)]`` 的区别在于,runner 在完成每一轮训练后,会计算验证集上的损失。 +``` + +## 钩子 + +钩子机制在 OpenMMLab 开源算法库中应用非常广泛,结合执行器可以实现对训练过程的整个生命周期进行管理,可以通过[相关文章](https://zhuanlan.zhihu.com/p/355272220)进一步理解钩子。 + +钩子只有在构造器中被注册才起作用,目前钩子主要分为两类: + +- 默认训练钩子 + +默认训练钩子由运行器默认注册,一般为一些基础型功能的钩子,已经有确定的优先级,一般不需要修改优先级。 + +- 定制钩子 + +定制钩子通过 `custom_hooks` 注册,一般为一些增强型功能的钩子,需要在配置文件中指定优先级,不指定该钩子的优先级将默被设定为 'NORMAL'。 + +**优先级列表** + +| Level | Value | +| :-------------: | :---: | +| HIGHEST | 0 | +| VERY_HIGH | 10 | +| HIGH | 30 | +| ABOVE_NORMAL | 40 | +| NORMAL(default) | 50 | +| BELOW_NORMAL | 60 | +| LOW | 70 | +| VERY_LOW | 90 | +| LOWEST | 100 | + +优先级确定钩子的执行顺序,每次训练前,日志会打印出各个阶段钩子的执行顺序,方便调试。 + +### 默认训练钩子 + +有一些常见的钩子未通过 `custom_hooks` 注册,但会在运行器(`Runner`)中默认注册,它们是: + +| Hooks | Priority | +| :-------------------: | :---------------: | +| `LrUpdaterHook` | VERY_HIGH (10) | +| `MomentumUpdaterHook` | HIGH (30) | +| `OptimizerHook` | ABOVE_NORMAL (40) | +| `CheckpointHook` | NORMAL (50) | +| `IterTimerHook` | LOW (70) | +| `EvalHook` | LOW (70) | +| `LoggerHook(s)` | VERY_LOW (90) | + +`OptimizerHook`,`MomentumUpdaterHook`和 `LrUpdaterHook` 在 [优化策略](./schedule.md) 部分进行了介绍, +`IterTimerHook` 用于记录所用时间,目前不支持修改; + +下面介绍如何使用去定制 `CheckpointHook`、`LoggerHooks` 以及 `EvalHook`。 + +#### 权重文件钩子(CheckpointHook) + +MMCV 的 runner 使用 `checkpoint_config` 来初始化 [`CheckpointHook`](https://github.com/open-mmlab/mmcv/blob/9ecd6b0d5ff9d2172c49a182eaa669e9f27bb8e7/mmcv/runner/hooks/checkpoint.py#L9)。 + +```python +checkpoint_config = dict(interval=1) +``` + +用户可以设置 “max_keep_ckpts” 来仅保存少量模型权重文件,或者通过 “save_optimizer” 决定是否存储优化器的状态字典。 +更多细节可参考 [这里](https://mmcv.readthedocs.io/zh_CN/latest/api.html#mmcv.runner.CheckpointHook)。 + +#### 日志钩子(LoggerHooks) + +`log_config` 包装了多个记录器钩子,并可以设置间隔。 +目前,MMCV 支持 `TextLoggerHook`、 `WandbLoggerHook`、`MlflowLoggerHook` 和 `TensorboardLoggerHook`。 +更多细节可参考[这里](https://mmcv.readthedocs.io/zh_CN/latest/api.html#mmcv.runner.LoggerHook)。 + +```python +log_config = dict( + interval=50, + hooks=[ + dict(type='TextLoggerHook'), + dict(type='TensorboardLoggerHook') + ]) +``` + +#### 验证钩子(EvalHook) + +配置中的 `evaluation` 字段将用于初始化 [`EvalHook`](https://github.com/open-mmlab/mmcv/blob/master/mmcv/runner/hooks/evaluation.py)。 + +`EvalHook` 有一些保留参数,如 `interval`,`save_best` 和 `start` 等。其他的参数,如“metrics”将被传递给 `dataset.evaluate()`。 + +```python +evaluation = dict(interval=1, metric='accuracy', metric_options={'topk': (1, )}) +``` + +我们可以通过参数 `save_best` 保存取得最好验证结果时的模型权重: + +```python +# "auto" 表示自动选择指标来进行模型的比较。也可以指定一个特定的 key 比如 "accuracy_top-1"。 +evaluation = dict(interval=1, save_best=True, metric='accuracy', metric_options={'topk': (1, )}) +``` + +在跑一些大型实验时,可以通过修改参数 `start` 跳过训练靠前轮次时的验证步骤,以节约时间。如下: + +```python +evaluation = dict(interval=1, start=200, metric='accuracy', metric_options={'topk': (1, )}) +``` + +表示在第 200 轮之前,只执行训练流程,不执行验证;从轮次 200 开始,在每一轮训练之后进行验证。 + +```{note} +在 MMClassification 的默认配置文件中,evaluation 字段一般被放在 datasets 基础配置文件中。 +``` + +### 使用内置钩子 + +一些钩子已在 MMCV 和 MMClassification 中实现: + +- [EMAHook](https://github.com/open-mmlab/mmcv/blob/master/mmcv/runner/hooks/ema.py) +- [SyncBuffersHook](https://github.com/open-mmlab/mmcv/blob/master/mmcv/runner/hooks/sync_buffer.py) +- [EmptyCacheHook](https://github.com/open-mmlab/mmcv/blob/master/mmcv/runner/hooks/memory.py) +- [ProfilerHook](https://github.com/open-mmlab/mmcv/blob/master/mmcv/runner/hooks/profiler.py) +- ...... + +可以直接修改配置以使用该钩子,如下格式: + +```python +custom_hooks = [ + dict(type='MMCVHook', a=a_value, b=b_value, priority='NORMAL') +] +``` + +例如使用 `EMAHook`,进行一次 EMA 的间隔是100个迭代: + +```python +custom_hooks = [ + dict(type='EMAHook', interval=100, priority='HIGH') +] +``` + +## 自定义钩子 + +### 创建一个新钩子 + +这里举一个在 MMClassification 中创建一个新钩子,并在训练中使用它的示例: + +```python +from mmcv.runner import HOOKS, Hook + + +@HOOKS.register_module() +class MyHook(Hook): + + def __init__(self, a, b): + pass + + def before_run(self, runner): + pass + + def after_run(self, runner): + pass + + def before_epoch(self, runner): + pass + + def after_epoch(self, runner): + pass + + def before_iter(self, runner): + pass + + def after_iter(self, runner): + pass +``` + +根据钩子的功能,用户需要指定钩子在训练的每个阶段将要执行的操作,比如 `before_run`,`after_run`,`before_epoch`,`after_epoch`,`before_iter` 和 `after_iter`。 + +### 注册新钩子 + +之后,需要导入 `MyHook`。假设该文件在 `mmcls/core/utils/my_hook.py`,有两种办法导入它: + +- 修改 `mmcls/core/utils/__init__.py` 进行导入 + + 新定义的模块应导入到 `mmcls/core/utils/__init__py` 中,以便注册器能找到并添加新模块: + +```python +from .my_hook import MyHook + +__all__ = ['MyHook'] +``` + +- 使用配置文件中的 `custom_imports` 变量手动导入 + +```python +custom_imports = dict(imports=['mmcls.core.utils.my_hook'], allow_failed_imports=False) +``` + +### 修改配置 + +```python +custom_hooks = [ + dict(type='MyHook', a=a_value, b=b_value) +] +``` + +还可通过 `priority` 参数设置钩子优先级,如下所示: + +```python +custom_hooks = [ + dict(type='MyHook', a=a_value, b=b_value, priority='NORMAL') +] +``` + +默认情况下,在注册过程中,钩子的优先级设置为“NORMAL”。 + +## 常见问题 + +### 1. resume_from, load_from,init_cfg.Pretrained 区别 + +- `load_from` :仅仅加载模型权重,主要用于加载预训练或者训练好的模型; + +- `resume_from` :不仅导入模型权重,还会导入优化器信息,当前轮次(epoch)信息,主要用于从断点继续训练。 + +- `init_cfg.Pretrained` :在权重初始化期间加载权重,您可以指定要加载的模块。 这通常在微调模型时使用,请参阅[教程 2:如何微调模型](./finetune.md) diff --git a/openmmlab_test/mmclassification-0.24.1/docs/zh_CN/tutorials/schedule.md b/openmmlab_test/mmclassification-0.24.1/docs/zh_CN/tutorials/schedule.md new file mode 100644 index 00000000..931edd09 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/docs/zh_CN/tutorials/schedule.md @@ -0,0 +1,333 @@ +# 教程 6:如何自定义优化策略 + +在本教程中,我们将介绍如何在运行自定义模型时,进行构造优化器、定制学习率及动量调整策略、梯度裁剪、梯度累计以及用户自定义优化方法等。 + + + +- [构造 PyTorch 内置优化器](#构造-pytorch-内置优化器) +- [定制学习率调整策略](#定制学习率调整策略) + - [学习率衰减曲线](#定制学习率衰减曲线) + - [学习率预热策略](#定制学习率预热策略) +- [定制动量调整策略](#定制动量调整策略) +- [参数化精细配置](#参数化精细配置) +- [梯度裁剪与梯度累计](#梯度裁剪与梯度累计) + - [梯度裁剪](#梯度裁剪) + - [梯度累计](#梯度累计) +- [用户自定义优化方法](#用户自定义优化方法) + - [自定义优化器](#自定义优化器) + - [自定义优化器构造器](#自定义优化器构造器) + + + +## 构造 PyTorch 内置优化器 + +MMClassification 支持 PyTorch 实现的所有优化器,仅需在配置文件中,指定 “optimizer” 字段。 +例如,如果要使用 “SGD”,则修改如下。 + +```python +optimizer = dict(type='SGD', lr=0.0003, weight_decay=0.0001) +``` + +要修改模型的学习率,只需要在优化器的配置中修改 `lr` 即可。 +要配置其他参数,可直接根据 [PyTorch API 文档](https://pytorch.org/docs/stable/optim.html?highlight=optim#module-torch.optim) 进行。 + +```{note} +配置文件中的 'type' 不是构造时的参数,而是 PyTorch 内置优化器的类名。 +``` + +例如,如果想使用 `Adam` 并设置参数为 `torch.optim.Adam(params, lr=0.001, betas=(0.9, 0.999), eps=1e-08, weight_decay=0, amsgrad=False)`, +则需要进行如下修改 + +```python +optimizer = dict(type='Adam', lr=0.001, betas=(0.9, 0.999), eps=1e-08, weight_decay=0, amsgrad=False) +``` + +## 定制学习率调整策略 + +### 定制学习率衰减曲线 + +深度学习研究中,广泛应用学习率衰减来提高网络的性能。要使用学习率衰减,可以在配置中设置 `lr_confg` 字段。 + +比如在默认的 ResNet 网络训练中,我们使用阶梯式的学习率衰减策略,配置文件为: + +```python +lr_config = dict(policy='step', step=[100, 150]) +``` + +在训练过程中,程序会周期性地调用 MMCV 中的 [`StepLRHook`](https://github.com/open-mmlab/mmcv/blob/f48241a65aebfe07db122e9db320c31b685dc674/mmcv/runner/hooks/lr_updater.py#L153) 来进行学习率更新。 + +此外,我们也支持其他学习率调整方法,如 `CosineAnnealing` 和 `Poly` 等。详情可见 [这里](https://github.com/open-mmlab/mmcv/blob/master/mmcv/runner/hooks/lr_updater.py) + +- ConsineAnnealing: + + ```python + lr_config = dict(policy='CosineAnnealing', min_lr_ratio=1e-5) + ``` + +- Poly: + + ```python + lr_config = dict(policy='poly', power=0.9, min_lr=1e-4, by_epoch=False) + ``` + +### 定制学习率预热策略 + +在训练的早期阶段,网络容易不稳定,而学习率的预热就是为了减少这种不稳定性。通过预热,学习率将会从一个很小的值逐步提高到预定值。 + +在 MMClassification 中,我们同样使用 `lr_config` 配置学习率预热策略,主要的参数有以下几个: + +- `warmup` : 学习率预热曲线类别,必须为 'constant'、 'linear', 'exp' 或者 `None` 其一, 如果为 `None`, 则不使用学习率预热策略。 +- `warmup_by_epoch` : 是否以轮次(epoch)为单位进行预热。 +- `warmup_iters` : 预热的迭代次数,当 `warmup_by_epoch=True` 时,单位为轮次(epoch);当 `warmup_by_epoch=False` 时,单位为迭代次数(iter)。 +- `warmup_ratio` : 预测的初始学习率 `lr = lr * warmup_ratio`。 + +例如: + +1. 逐**迭代次数**地**线性**预热 + + ```python + lr_config = dict( + policy='CosineAnnealing', + by_epoch=False, + min_lr_ratio=1e-2, + warmup='linear', + warmup_ratio=1e-3, + warmup_iters=20 * 1252, + warmup_by_epoch=False) + ``` + +2. 逐**轮次**地**指数**预热 + + ```python + lr_config = dict( + policy='CosineAnnealing', + min_lr=0, + warmup='exp', + warmup_iters=5, + warmup_ratio=0.1, + warmup_by_epoch=True) + ``` + +```{tip} +配置完成后,可以使用 MMClassification 提供的 [学习率可视化工具](https://mmclassification.readthedocs.io/zh_CN/latest/tools/visualization.html#id3) 画出对应学习率调整曲线。 +``` + +## 定制动量调整策略 + +MMClassification 支持动量调整器根据学习率修改模型的动量,从而使模型收敛更快。 + +动量调整程序通常与学习率调整器一起使用,例如,以下配置用于加速收敛。 +更多细节可参考 [CyclicLrUpdater](https://github.com/open-mmlab/mmcv/blob/f48241a65aebfe07db122e9db320c31b685dc674/mmcv/runner/hooks/lr_updater.py#L327) 和 [CyclicMomentumUpdater](https://github.com/open-mmlab/mmcv/blob/f48241a65aebfe07db122e9db320c31b685dc674/mmcv/runner/hooks/momentum_updater.py#L130)。 + +这里是一个用例: + +```python +lr_config = dict( + policy='cyclic', + target_ratio=(10, 1e-4), + cyclic_times=1, + step_ratio_up=0.4, +) +momentum_config = dict( + policy='cyclic', + target_ratio=(0.85 / 0.95, 1), + cyclic_times=1, + step_ratio_up=0.4, +) +``` + +## 参数化精细配置 + +一些模型可能具有一些特定于参数的设置以进行优化,例如 BatchNorm 层不添加权重衰减或者对不同的网络层使用不同的学习率。 +在 MMClassification 中,我们通过 `optimizer` 的 `paramwise_cfg` 参数进行配置,可以参考[MMCV](https://mmcv.readthedocs.io/en/latest/_modules/mmcv/runner/optimizer/default_constructor.html#DefaultOptimizerConstructor)。 + +- 使用指定选项 + + MMClassification 提供了包括 `bias_lr_mult`、 `bias_decay_mult`、 `norm_decay_mult`、 `dwconv_decay_mult`、 `dcn_offset_lr_mult` 和 `bypass_duplicate` 选项,指定相关所有的 `bais`、 `norm`、 `dwconv`、 `dcn` 和 `bypass` 参数。例如令模型中所有的 BN 不进行参数衰减: + + ```python + optimizer = dict( + type='SGD', + lr=0.8, + weight_decay=1e-4, + paramwise_cfg=dict(norm_decay_mult=0.) + ) + ``` + +- 使用 `custom_keys` 指定参数 + + MMClassification 可通过 `custom_keys` 指定不同的参数使用不同的学习率或者权重衰减,例如对特定的参数不使用权重衰减: + + ```python + paramwise_cfg = dict( + custom_keys={ + 'backbone.cls_token': dict(decay_mult=0.0), + 'backbone.pos_embed': dict(decay_mult=0.0) + }) + + optimizer = dict( + type='SGD', + lr=0.8, + weight_decay=1e-4, + paramwise_cfg=paramwise_cfg) + ``` + + 对 backbone 使用更小的学习率与衰减系数: + + ```python + optimizer = dict( + type='SGD', + lr=0.8, + weight_decay=1e-4, + # backbone 的 'lr' and 'weight_decay' 分别为 0.1 * lr 和 0.9 * weight_decay + paramwise_cfg = dict(custom_keys={'backbone': dict(lr_mult=0.1, decay_mult=0.9)})) + ``` + +## 梯度裁剪与梯度累计 + +除了 PyTorch 优化器的基本功能,我们还提供了一些对优化器的增强功能,例如梯度裁剪、梯度累计等,参考 [MMCV](https://github.com/open-mmlab/mmcv/blob/master/mmcv/runner/hooks/optimizer.py)。 + +### 梯度裁剪 + +在训练过程中,损失函数可能接近于一些异常陡峭的区域,从而导致梯度爆炸。而梯度裁剪可以帮助稳定训练过程,更多介绍可以参见[该页面](https://paperswithcode.com/method/gradient-clipping)。 + +目前我们支持在 `optimizer_config` 字段中添加 `grad_clip` 参数来进行梯度裁剪,更详细的参数可参考 [PyTorch 文档](https://pytorch.org/docs/stable/generated/torch.nn.utils.clip_grad_norm_.html)。 + +用例如下: + +```python +# norm_type: 使用的范数类型,此处使用范数2。 +optimizer_config = dict(grad_clip=dict(max_norm=35, norm_type=2)) +``` + +当使用继承并修改基础配置方式时,如果基础配置中 `grad_clip=None`,需要添加 `_delete_=True`。有关 `_delete_` 可以参考[教程 1:如何编写配置文件](https://mmclassification.readthedocs.io/zh_CN/latest/tutorials/config.html#id16)。案例如下: + +```python +_base_ = [./_base_/schedules/imagenet_bs256_coslr.py] + +optimizer_config = dict(grad_clip=dict(max_norm=35, norm_type=2), _delete_=True, type='OptimizerHook') +# 当 type 为 'OptimizerHook',可以省略 type;其他情况下,此处必须指明 type='xxxOptimizerHook'。 +``` + +### 梯度累计 + +计算资源缺乏缺乏时,每个训练批次的大小(batch size)只能设置为较小的值,这可能会影响模型的性能。 + +可以使用梯度累计来规避这一问题。 + +用例如下: + +```python +data = dict(samples_per_gpu=64) +optimizer_config = dict(type="GradientCumulativeOptimizerHook", cumulative_iters=4) +``` + +表示训练时,每 4 个 iter 执行一次反向传播。由于此时单张 GPU 上的批次大小为 64,也就等价于单张 GPU 上一次迭代的批次大小为 256,也即: + +```python +data = dict(samples_per_gpu=256) +optimizer_config = dict(type="OptimizerHook") +``` + +```{note} +当在 `optimizer_config` 不指定优化器钩子类型时,默认使用 `OptimizerHook`。 +``` + +## 用户自定义优化方法 + +在学术研究和工业实践中,可能需要使用 MMClassification 未实现的优化方法,可以通过以下方法添加。 + +```{note} +本部分将修改 MMClassification 源码或者向 MMClassification 框架添加代码,初学者可跳过。 +``` + +### 自定义优化器 + +#### 1. 定义一个新的优化器 + +一个自定义的优化器可根据如下规则进行定制 + +假设我们想添加一个名为 `MyOptimzer` 的优化器,其拥有参数 `a`, `b` 和 `c`。 +可以创建一个名为 `mmcls/core/optimizer` 的文件夹,并在目录下的一个文件,如 `mmcls/core/optimizer/my_optimizer.py` 中实现该自定义优化器: + +```python +from mmcv.runner import OPTIMIZERS +from torch.optim import Optimizer + + +@OPTIMIZERS.register_module() +class MyOptimizer(Optimizer): + + def __init__(self, a, b, c): + +``` + +#### 2. 注册优化器 + +要注册上面定义的上述模块,首先需要将此模块导入到主命名空间中。有两种方法可以实现它。 + +- 修改 `mmcls/core/optimizer/__init__.py`,将其导入至 `optimizer` 包;再修改 `mmcls/core/__init__.py` 以导入 `optimizer` 包 + + 创建 `mmcls/core/optimizer/__init__.py` 文件。 + 新定义的模块应导入到 `mmcls/core/optimizer/__init__.py` 中,以便注册器能找到新模块并将其添加: + +```python +# 在 mmcls/core/optimizer/__init__.py 中 +from .my_optimizer import MyOptimizer # MyOptimizer 是我们自定义的优化器的名字 + +__all__ = ['MyOptimizer'] +``` + +```python +# 在 mmcls/core/__init__.py 中 +... +from .optimizer import * # noqa: F401, F403 +``` + +- 在配置中使用 `custom_imports` 手动导入 + +```python +custom_imports = dict(imports=['mmcls.core.optimizer.my_optimizer'], allow_failed_imports=False) +``` + +`mmcls.core.optimizer.my_optimizer` 模块将会在程序开始阶段被导入,`MyOptimizer` 类会随之自动被注册。 +注意,只有包含 `MyOptmizer` 类的包会被导入。`mmcls.core.optimizer.my_optimizer.MyOptimizer` **不会** 被直接导入。 + +#### 3. 在配置文件中指定优化器 + +之后,用户便可在配置文件的 `optimizer` 域中使用 `MyOptimizer`。 +在配置中,优化器由 “optimizer” 字段定义,如下所示: + +```python +optimizer = dict(type='SGD', lr=0.02, momentum=0.9, weight_decay=0.0001) +``` + +要使用自定义的优化器,可以将该字段更改为 + +```python +optimizer = dict(type='MyOptimizer', a=a_value, b=b_value, c=c_value) +``` + +### 自定义优化器构造器 + +某些模型可能具有一些特定于参数的设置以进行优化,例如 BatchNorm 层的权重衰减。 + +虽然我们的 `DefaultOptimizerConstructor` 已经提供了这些强大的功能,但可能仍然无法覆盖需求。 +此时我们可以通过自定义优化器构造函数来进行其他细粒度的参数调整。 + +```python +from mmcv.runner.optimizer import OPTIMIZER_BUILDERS + + +@OPTIMIZER_BUILDERS.register_module() +class MyOptimizerConstructor: + + def __init__(self, optimizer_cfg, paramwise_cfg=None): + pass + + def __call__(self, model): + ... # 在这里实现自己的优化器构造器。 + return my_optimizer +``` + +[这里](https://github.com/open-mmlab/mmcv/blob/9ecd6b0d5ff9d2172c49a182eaa669e9f27bb8e7/mmcv/runner/optimizer/default_constructor.py#L11)是我们默认的优化器构造器的实现,可以作为新优化器构造器实现的模板。 diff --git a/openmmlab_test/mmclassification-0.24.1/hostfile b/openmmlab_test/mmclassification-0.24.1/hostfile new file mode 100644 index 00000000..2c505426 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/hostfile @@ -0,0 +1,2 @@ +a03r3n15 slots=4 +a03r1n12 slots=4 diff --git a/openmmlab_test/mmclassification-0.24.1/mmcls/__init__.py b/openmmlab_test/mmclassification-0.24.1/mmcls/__init__.py new file mode 100644 index 00000000..097c8fef --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/mmcls/__init__.py @@ -0,0 +1,60 @@ +# Copyright (c) OpenMMLab. All rights reserved. +import warnings + +import mmcv +from packaging.version import parse + +from .version import __version__ + + +def digit_version(version_str: str, length: int = 4): + """Convert a version string into a tuple of integers. + + This method is usually used for comparing two versions. For pre-release + versions: alpha < beta < rc. + + Args: + version_str (str): The version string. + length (int): The maximum number of version levels. Default: 4. + + Returns: + tuple[int]: The version info in digits (integers). + """ + version = parse(version_str) + assert version.release, f'failed to parse version {version_str}' + release = list(version.release) + release = release[:length] + if len(release) < length: + release = release + [0] * (length - len(release)) + if version.is_prerelease: + mapping = {'a': -3, 'b': -2, 'rc': -1} + val = -4 + # version.pre can be None + if version.pre: + if version.pre[0] not in mapping: + warnings.warn(f'unknown prerelease version {version.pre[0]}, ' + 'version checking may go wrong') + else: + val = mapping[version.pre[0]] + release.extend([val, version.pre[-1]]) + else: + release.extend([val, 0]) + + elif version.is_postrelease: + release.extend([1, version.post]) + else: + release.extend([0, 0]) + return tuple(release) + + +mmcv_minimum_version = '1.4.2' +mmcv_maximum_version = '1.9.0' +mmcv_version = digit_version(mmcv.__version__) + + +assert (mmcv_version >= digit_version(mmcv_minimum_version) + and mmcv_version <= digit_version(mmcv_maximum_version)), \ + f'MMCV=={mmcv.__version__} is used but incompatible. ' \ + f'Please install mmcv>={mmcv_minimum_version}, <={mmcv_maximum_version}.' + +__all__ = ['__version__', 'digit_version'] diff --git a/openmmlab_test/mmclassification-0.24.1/mmcls/apis/__init__.py b/openmmlab_test/mmclassification-0.24.1/mmcls/apis/__init__.py new file mode 100644 index 00000000..b632f2a9 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/mmcls/apis/__init__.py @@ -0,0 +1,10 @@ +# Copyright (c) OpenMMLab. All rights reserved. +from .inference import inference_model, init_model, show_result_pyplot +from .test import multi_gpu_test, single_gpu_test +from .train import init_random_seed, set_random_seed, train_model + +__all__ = [ + 'set_random_seed', 'train_model', 'init_model', 'inference_model', + 'multi_gpu_test', 'single_gpu_test', 'show_result_pyplot', + 'init_random_seed' +] diff --git a/openmmlab_test/mmclassification-speed-benchmark/mmcls/apis/inference.py b/openmmlab_test/mmclassification-0.24.1/mmcls/apis/inference.py similarity index 82% rename from openmmlab_test/mmclassification-speed-benchmark/mmcls/apis/inference.py rename to openmmlab_test/mmclassification-0.24.1/mmcls/apis/inference.py index 5483c86a..09e00418 100644 --- a/openmmlab_test/mmclassification-speed-benchmark/mmcls/apis/inference.py +++ b/openmmlab_test/mmclassification-0.24.1/mmcls/apis/inference.py @@ -1,6 +1,6 @@ +# Copyright (c) OpenMMLab. All rights reserved. import warnings -import matplotlib.pyplot as plt import mmcv import numpy as np import torch @@ -34,8 +34,9 @@ def init_model(config, checkpoint=None, device='cuda:0', options=None): config.model.pretrained = None model = build_classifier(config.model) if checkpoint is not None: - map_loc = 'cpu' if device == 'cpu' else None - checkpoint = load_checkpoint(model, checkpoint, map_location=map_loc) + # Mapping the weights to GPU may cause unexpected video memory leak + # which refers to https://github.com/open-mmlab/mmdetection/pull/6405 + checkpoint = load_checkpoint(model, checkpoint, map_location='cpu') if 'CLASSES' in checkpoint.get('meta', {}): model.CLASSES = checkpoint['meta']['CLASSES'] else: @@ -89,7 +90,12 @@ def inference_model(model, img): return result -def show_result_pyplot(model, img, result, fig_size=(15, 10)): +def show_result_pyplot(model, + img, + result, + fig_size=(15, 10), + title='result', + wait_time=0): """Visualize the classification results on the image. Args: @@ -97,10 +103,18 @@ def show_result_pyplot(model, img, result, fig_size=(15, 10)): img (str or np.ndarray): Image filename or loaded image. result (list): The classification result. fig_size (tuple): Figure size of the pyplot figure. + Defaults to (15, 10). + title (str): Title of the pyplot figure. + Defaults to 'result'. + wait_time (int): How many seconds to display the image. + Defaults to 0. """ if hasattr(model, 'module'): model = model.module - img = model.show_result(img, result, show=False) - plt.figure(figsize=fig_size) - plt.imshow(mmcv.bgr2rgb(img)) - plt.show() + model.show_result( + img, + result, + show=True, + fig_size=fig_size, + win_name=title, + wait_time=wait_time) diff --git a/openmmlab_test/mmclassification-0.24.1/mmcls/apis/test.py b/openmmlab_test/mmclassification-0.24.1/mmcls/apis/test.py new file mode 100644 index 00000000..dba3f8f0 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/mmcls/apis/test.py @@ -0,0 +1,230 @@ +# Copyright (c) OpenMMLab. All rights reserved. +import os.path as osp +import pickle +import shutil +import tempfile +import time + +import mmcv +import numpy as np +import torch +import torch.distributed as dist +from mmcv.image import tensor2imgs +from mmcv.runner import get_dist_info + + +def single_gpu_test(model, + data_loader, + show=False, + out_dir=None, + **show_kwargs): + """Test model with local single gpu. + + This method tests model with a single gpu and supports showing results. + + Args: + model (:obj:`torch.nn.Module`): Model to be tested. + data_loader (:obj:`torch.utils.data.DataLoader`): Pytorch data loader. + show (bool): Whether to show the test results. Defaults to False. + out_dir (str): The output directory of result plots of all samples. + Defaults to None, which means not to write output files. + **show_kwargs: Any other keyword arguments for showing results. + + Returns: + list: The prediction results. + """ + model.eval() + results = [] + dataset = data_loader.dataset + + for i, data in enumerate(data_loader): + if i<100: + with torch.no_grad(): + result = model(return_loss=False, **data) + + prog_bar = mmcv.ProgressBar(len(dataset)) + for i, data in enumerate(data_loader): + with torch.no_grad(): + result = model(return_loss=False, **data) + + batch_size = len(result) + #print("batch size api_test-------:",batch_size) + results.extend(result) + + if show or out_dir: + scores = np.vstack(result) + pred_score = np.max(scores, axis=1) + pred_label = np.argmax(scores, axis=1) + pred_class = [model.CLASSES[lb] for lb in pred_label] + + img_metas = data['img_metas'].data[0] + imgs = tensor2imgs(data['img'], **img_metas[0]['img_norm_cfg']) + assert len(imgs) == len(img_metas) + + for i, (img, img_meta) in enumerate(zip(imgs, img_metas)): + h, w, _ = img_meta['img_shape'] + img_show = img[:h, :w, :] + + ori_h, ori_w = img_meta['ori_shape'][:-1] + img_show = mmcv.imresize(img_show, (ori_w, ori_h)) + + if out_dir: + out_file = osp.join(out_dir, img_meta['ori_filename']) + else: + out_file = None + + result_show = { + 'pred_score': pred_score[i], + 'pred_label': pred_label[i], + 'pred_class': pred_class[i] + } + model.module.show_result( + img_show, + result_show, + show=show, + out_file=out_file, + **show_kwargs) + + batch_size = data['img'].size(0) + #print("batch size api_test:",batch_size) + prog_bar.update(batch_size) + return results + + +def multi_gpu_test(model, data_loader, tmpdir=None, gpu_collect=False): + """Test model with multiple gpus. + + This method tests model with multiple gpus and collects the results + under two different modes: gpu and cpu modes. By setting 'gpu_collect=True' + it encodes results to gpu tensors and use gpu communication for results + collection. On cpu mode it saves the results on different gpus to 'tmpdir' + and collects them by the rank 0 worker. + + Args: + model (nn.Module): Model to be tested. + data_loader (nn.Dataloader): Pytorch data loader. + tmpdir (str): Path of directory to save the temporary results from + different gpus under cpu mode. + gpu_collect (bool): Option to use either gpu or cpu to collect results. + + Returns: + list: The prediction results. + """ + model.eval() + results = [] + dataset = data_loader.dataset + rank, world_size = get_dist_info() + + for i, data in enumerate(data_loader): + if i<100: + #print("warm up................") + with torch.no_grad(): + result = model(return_loss=False, **data) + + #print("warm up end ................") + if rank == 0: + # Check if tmpdir is valid for cpu_collect + if (not gpu_collect) and (tmpdir is not None and osp.exists(tmpdir)): + raise OSError((f'The tmpdir {tmpdir} already exists.', + ' Since tmpdir will be deleted after testing,', + ' please make sure you specify an empty one.')) + prog_bar = mmcv.ProgressBar(len(dataset)) + time.sleep(2) + dist.barrier() + for i, data in enumerate(data_loader): + with torch.no_grad(): + result = model(return_loss=False, **data) + if isinstance(result, list): + results.extend(result) + else: + results.append(result) + + if rank == 0: + batch_size = data['img'].size(0) + #print("batch size api_test-----:",batch_size * world_size) + for _ in range(batch_size * world_size): + prog_bar.update() + + # collect results from all ranks + if gpu_collect: + results = collect_results_gpu(results, len(dataset)) + else: + results = collect_results_cpu(results, len(dataset), tmpdir) + return results + + +def collect_results_cpu(result_part, size, tmpdir=None): + rank, world_size = get_dist_info() + # create a tmp dir if it is not specified + if tmpdir is None: + MAX_LEN = 512 + # 32 is whitespace + dir_tensor = torch.full((MAX_LEN, ), + 32, + dtype=torch.uint8, + device='cuda') + if rank == 0: + mmcv.mkdir_or_exist('.dist_test') + tmpdir = tempfile.mkdtemp(dir='.dist_test') + tmpdir = torch.tensor( + bytearray(tmpdir.encode()), dtype=torch.uint8, device='cuda') + dir_tensor[:len(tmpdir)] = tmpdir + dist.broadcast(dir_tensor, 0) + tmpdir = dir_tensor.cpu().numpy().tobytes().decode().rstrip() + else: + mmcv.mkdir_or_exist(tmpdir) + # dump the part result to the dir + mmcv.dump(result_part, osp.join(tmpdir, f'part_{rank}.pkl')) + dist.barrier() + # collect all parts + if rank != 0: + return None + else: + # load results of all parts from tmp dir + part_list = [] + for i in range(world_size): + part_file = osp.join(tmpdir, f'part_{i}.pkl') + part_result = mmcv.load(part_file) + part_list.append(part_result) + # sort the results + ordered_results = [] + for res in zip(*part_list): + ordered_results.extend(list(res)) + # the dataloader may pad some samples + ordered_results = ordered_results[:size] + # remove tmp dir + shutil.rmtree(tmpdir) + return ordered_results + + +def collect_results_gpu(result_part, size): + rank, world_size = get_dist_info() + # dump result part to tensor with pickle + part_tensor = torch.tensor( + bytearray(pickle.dumps(result_part)), dtype=torch.uint8, device='cuda') + # gather all result part tensor shape + shape_tensor = torch.tensor(part_tensor.shape, device='cuda') + shape_list = [shape_tensor.clone() for _ in range(world_size)] + dist.all_gather(shape_list, shape_tensor) + # padding result part tensor to max length + shape_max = torch.tensor(shape_list).max() + part_send = torch.zeros(shape_max, dtype=torch.uint8, device='cuda') + part_send[:shape_tensor[0]] = part_tensor + part_recv_list = [ + part_tensor.new_zeros(shape_max) for _ in range(world_size) + ] + # gather all result part + dist.all_gather(part_recv_list, part_send) + + if rank == 0: + part_list = [] + for recv, shape in zip(part_recv_list, shape_list): + part_result = pickle.loads(recv[:shape[0]].cpu().numpy().tobytes()) + part_list.append(part_result) + # sort the results + ordered_results = [] + for res in zip(*part_list): + ordered_results.extend(list(res)) + # the dataloader may pad some samples + ordered_results = ordered_results[:size] + return ordered_results \ No newline at end of file diff --git a/openmmlab_test/mmclassification-0.24.1/mmcls/apis/test_old.py b/openmmlab_test/mmclassification-0.24.1/mmcls/apis/test_old.py new file mode 100644 index 00000000..c15ad2d0 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/mmcls/apis/test_old.py @@ -0,0 +1,228 @@ +# Copyright (c) OpenMMLab. All rights reserved. +import os.path as osp +import pickle +import shutil +import tempfile +import time + +import mmcv +import numpy as np +import torch +import torch.distributed as dist +from mmcv.image import tensor2imgs +from mmcv.runner import get_dist_info + + +def single_gpu_test(model, + data_loader, + show=False, + out_dir=None, + **show_kwargs): + """Test model with local single gpu. + + This method tests model with a single gpu and supports showing results. + + Args: + model (:obj:`torch.nn.Module`): Model to be tested. + data_loader (:obj:`torch.utils.data.DataLoader`): Pytorch data loader. + show (bool): Whether to show the test results. Defaults to False. + out_dir (str): The output directory of result plots of all samples. + Defaults to None, which means not to write output files. + **show_kwargs: Any other keyword arguments for showing results. + + Returns: + list: The prediction results. + """ + + #dummy = torch.rand(1, 3, 608, 608).cuda() + #model = torch.jit.script(model).eval() + #model = torch_blade.optimize(model, allow_tracing=True,model_inputs=(dummy,)) + model.eval() + results = [] + start=0 + end=0 + dataset = data_loader.dataset + prog_bar = mmcv.ProgressBar(len(dataset)) + for i, data in enumerate(data_loader): + with torch.no_grad(): + #dummy = torch.rand(32, 3, 224, 224).cuda() + #print("-------------------:",data['img'].shape) + #model = torch.jit.script(model).eval() + #model = torch_blade.optimize(model, allow_tracing=True,model_inputs=data['img']) + #print("------------------------:",data['img'].shape) + start=time.time() + result = model(return_loss=False, **data) + end=time.time() + #print("====================:",end-start) + + batch_size = len(result) + #print("=============:",batch_size) + results.extend(result) + + if show or out_dir: + scores = np.vstack(result) + pred_score = np.max(scores, axis=1) + pred_label = np.argmax(scores, axis=1) + pred_class = [model.CLASSES[lb] for lb in pred_label] + + img_metas = data['img_metas'].data[0] + imgs = tensor2imgs(data['img'], **img_metas[0]['img_norm_cfg']) + assert len(imgs) == len(img_metas) + + for i, (img, img_meta) in enumerate(zip(imgs, img_metas)): + h, w, _ = img_meta['img_shape'] + img_show = img[:h, :w, :] + + ori_h, ori_w = img_meta['ori_shape'][:-1] + img_show = mmcv.imresize(img_show, (ori_w, ori_h)) + + if out_dir: + out_file = osp.join(out_dir, img_meta['ori_filename']) + else: + out_file = None + + result_show = { + 'pred_score': pred_score[i], + 'pred_label': pred_label[i], + 'pred_class': pred_class[i] + } + model.module.show_result( + img_show, + result_show, + show=show, + out_file=out_file, + **show_kwargs) + + batch_size = data['img'].size(0) + prog_bar.update(batch_size) + return results + + +def multi_gpu_test(model, data_loader, tmpdir=None, gpu_collect=False): + """Test model with multiple gpus. + + This method tests model with multiple gpus and collects the results + under two different modes: gpu and cpu modes. By setting 'gpu_collect=True' + it encodes results to gpu tensors and use gpu communication for results + collection. On cpu mode it saves the results on different gpus to 'tmpdir' + and collects them by the rank 0 worker. + + Args: + model (nn.Module): Model to be tested. + data_loader (nn.Dataloader): Pytorch data loader. + tmpdir (str): Path of directory to save the temporary results from + different gpus under cpu mode. + gpu_collect (bool): Option to use either gpu or cpu to collect results. + + Returns: + list: The prediction results. + """ + model.eval() + results = [] + dataset = data_loader.dataset + rank, world_size = get_dist_info() + if rank == 0: + # Check if tmpdir is valid for cpu_collect + if (not gpu_collect) and (tmpdir is not None and osp.exists(tmpdir)): + raise OSError((f'The tmpdir {tmpdir} already exists.', + ' Since tmpdir will be deleted after testing,', + ' please make sure you specify an empty one.')) + prog_bar = mmcv.ProgressBar(len(dataset)) + time.sleep(2) + dist.barrier() + for i, data in enumerate(data_loader): + with torch.no_grad(): + result = model(return_loss=False, **data) + if isinstance(result, list): + results.extend(result) + else: + results.append(result) + + if rank == 0: + batch_size = data['img'].size(0) + for _ in range(batch_size * world_size): + prog_bar.update() + + # collect results from all ranks + if gpu_collect: + results = collect_results_gpu(results, len(dataset)) + else: + results = collect_results_cpu(results, len(dataset), tmpdir) + return results + + +def collect_results_cpu(result_part, size, tmpdir=None): + rank, world_size = get_dist_info() + # create a tmp dir if it is not specified + if tmpdir is None: + MAX_LEN = 512 + # 32 is whitespace + dir_tensor = torch.full((MAX_LEN, ), + 32, + dtype=torch.uint8, + device='cuda') + if rank == 0: + mmcv.mkdir_or_exist('.dist_test') + tmpdir = tempfile.mkdtemp(dir='.dist_test') + tmpdir = torch.tensor( + bytearray(tmpdir.encode()), dtype=torch.uint8, device='cuda') + dir_tensor[:len(tmpdir)] = tmpdir + dist.broadcast(dir_tensor, 0) + tmpdir = dir_tensor.cpu().numpy().tobytes().decode().rstrip() + else: + mmcv.mkdir_or_exist(tmpdir) + # dump the part result to the dir + mmcv.dump(result_part, osp.join(tmpdir, f'part_{rank}.pkl')) + dist.barrier() + # collect all parts + if rank != 0: + return None + else: + # load results of all parts from tmp dir + part_list = [] + for i in range(world_size): + part_file = osp.join(tmpdir, f'part_{i}.pkl') + part_result = mmcv.load(part_file) + part_list.append(part_result) + # sort the results + ordered_results = [] + for res in zip(*part_list): + ordered_results.extend(list(res)) + # the dataloader may pad some samples + ordered_results = ordered_results[:size] + # remove tmp dir + shutil.rmtree(tmpdir) + return ordered_results + + +def collect_results_gpu(result_part, size): + rank, world_size = get_dist_info() + # dump result part to tensor with pickle + part_tensor = torch.tensor( + bytearray(pickle.dumps(result_part)), dtype=torch.uint8, device='cuda') + # gather all result part tensor shape + shape_tensor = torch.tensor(part_tensor.shape, device='cuda') + shape_list = [shape_tensor.clone() for _ in range(world_size)] + dist.all_gather(shape_list, shape_tensor) + # padding result part tensor to max length + shape_max = torch.tensor(shape_list).max() + part_send = torch.zeros(shape_max, dtype=torch.uint8, device='cuda') + part_send[:shape_tensor[0]] = part_tensor + part_recv_list = [ + part_tensor.new_zeros(shape_max) for _ in range(world_size) + ] + # gather all result part + dist.all_gather(part_recv_list, part_send) + + if rank == 0: + part_list = [] + for recv, shape in zip(part_recv_list, shape_list): + part_result = pickle.loads(recv[:shape[0]].cpu().numpy().tobytes()) + part_list.append(part_result) + # sort the results + ordered_results = [] + for res in zip(*part_list): + ordered_results.extend(list(res)) + # the dataloader may pad some samples + ordered_results = ordered_results[:size] + return ordered_results diff --git a/openmmlab_test/mmclassification-0.24.1/mmcls/apis/test_time.py b/openmmlab_test/mmclassification-0.24.1/mmcls/apis/test_time.py new file mode 100644 index 00000000..7a7f5dad --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/mmcls/apis/test_time.py @@ -0,0 +1,257 @@ +# Copyright (c) OpenMMLab. All rights reserved. +import os.path as osp +import pickle +import shutil +import tempfile +import time + +import mmcv +import numpy as np +import torch +import torch.distributed as dist +from mmcv.image import tensor2imgs +from mmcv.runner import get_dist_info + + +def single_gpu_test(model, + data_loader, + show=False, + out_dir=None, + **show_kwargs): + """Test model with local single gpu. + + This method tests model with a single gpu and supports showing results. + + Args: + model (:obj:`torch.nn.Module`): Model to be tested. + data_loader (:obj:`torch.utils.data.DataLoader`): Pytorch data loader. + show (bool): Whether to show the test results. Defaults to False. + out_dir (str): The output directory of result plots of all samples. + Defaults to None, which means not to write output files. + **show_kwargs: Any other keyword arguments for showing results. + + Returns: + list: The prediction results. + """ + + #dummy = torch.rand(1, 3, 608, 608).cuda() + #model = torch.jit.script(model).eval() + #model = torch_blade.optimize(model, allow_tracing=True,model_inputs=(dummy,)) + model.eval() + results = [] + start=0 + end=0 + dataset = data_loader.dataset + #prog_bar = mmcv.ProgressBar(len(dataset)) + ips_num=0 + j=0 + start=time.time() + + for i, data in enumerate(data_loader): + end_time1=time.time() + time1=end_time1-start + with torch.no_grad(): + result = model(return_loss=False, **data) + end_time2=time.time() + time2=end_time2-end_time1 + + batch_size = len(result) + + ips=batch_size/time2 + if i >0: + ips_num=ips_num+ips + j=j+1 + print("=============batch_size1:",batch_size) + results.extend(result) + + if show or out_dir: + scores = np.vstack(result) + pred_score = np.max(scores, axis=1) + pred_label = np.argmax(scores, axis=1) + pred_class = [model.CLASSES[lb] for lb in pred_label] + + img_metas = data['img_metas'].data[0] + imgs = tensor2imgs(data['img'], **img_metas[0]['img_norm_cfg']) + assert len(imgs) == len(img_metas) + + for i, (img, img_meta) in enumerate(zip(imgs, img_metas)): + h, w, _ = img_meta['img_shape'] + img_show = img[:h, :w, :] + + ori_h, ori_w = img_meta['ori_shape'][:-1] + img_show = mmcv.imresize(img_show, (ori_w, ori_h)) + + if out_dir: + out_file = osp.join(out_dir, img_meta['ori_filename']) + else: + out_file = None + + result_show = { + 'pred_score': pred_score[i], + 'pred_label': pred_label[i], + 'pred_class': pred_class[i] + } + model.module.show_result( + img_show, + result_show, + show=show, + out_file=out_file, + **show_kwargs) + + batch_size = data['img'].size(0) + print("=============batch_size2:",batch_size) + #prog_bar.update(batch_size) + print("batch size is %d ,data load cost time: %f s model cost time: %f s,ips: %f" % (batch_size,time1,time2,(batch_size/time2))) + + start=time.time() + ips_avg=ips_num/j + print("Avg ips is %f" %ips_avg) + return results + + +def multi_gpu_test(model, data_loader, tmpdir=None, gpu_collect=False): + """Test model with multiple gpus. + + This method tests model with multiple gpus and collects the results + under two different modes: gpu and cpu modes. By setting 'gpu_collect=True' + it encodes results to gpu tensors and use gpu communication for results + collection. On cpu mode it saves the results on different gpus to 'tmpdir' + and collects them by the rank 0 worker. + + Args: + model (nn.Module): Model to be tested. + data_loader (nn.Dataloader): Pytorch data loader. + tmpdir (str): Path of directory to save the temporary results from + different gpus under cpu mode. + gpu_collect (bool): Option to use either gpu or cpu to collect results. + + Returns: + list: The prediction results. + """ + model.eval() + results = [] + dataset = data_loader.dataset + rank, world_size = get_dist_info() + + if rank == 0: + # Check if tmpdir is valid for cpu_collect + if (not gpu_collect) and (tmpdir is not None and osp.exists(tmpdir)): + raise OSError((f'The tmpdir {tmpdir} already exists.', + ' Since tmpdir will be deleted after testing,', + ' please make sure you specify an empty one.')) + prog_bar = mmcv.ProgressBar(len(dataset)) + + + time.sleep(2) + #dist.barrier() + ips_num=0 + j_num=0 + satrt=time.time() + for i, data in enumerate(data_loader): + end_time1=time.time() + time1=end_time1-satrt + with torch.no_grad(): + result = model(return_loss=False, **data) + end_time2=time.time() + time2=end_time2-end_time1 + if isinstance(result, list): + results.extend(result) + else: + results.append(result) + + if rank == 0: + batch_size = data['img'].size(0) + for _ in range(batch_size * world_size): + prog_bar.update() + batch_size_global=batch_size * world_size + ips=batch_size_global/time2 + #print("samples_per_gpu is %d ,data load cost time %f s,ips:%f" % (batch_size,time1,ips)) + if i>0: + ips_num=ips_num+ips + j_num=j_num+1 + # collect results from all ranks + if gpu_collect: + results = collect_results_gpu(results, len(dataset)) + else: + results = collect_results_cpu(results, len(dataset), tmpdir) + if rank == 0: + ips_avg=ips_num/j_num + print("Avg IPS is %f " % ips_avg) + return results + + +def collect_results_cpu(result_part, size, tmpdir=None): + rank, world_size = get_dist_info() + # create a tmp dir if it is not specified + if tmpdir is None: + MAX_LEN = 512 + # 32 is whitespace + dir_tensor = torch.full((MAX_LEN, ), + 32, + dtype=torch.uint8, + device='cuda') + if rank == 0: + mmcv.mkdir_or_exist('.dist_test') + tmpdir = tempfile.mkdtemp(dir='.dist_test') + tmpdir = torch.tensor( + bytearray(tmpdir.encode()), dtype=torch.uint8, device='cuda') + dir_tensor[:len(tmpdir)] = tmpdir + dist.broadcast(dir_tensor, 0) + tmpdir = dir_tensor.cpu().numpy().tobytes().decode().rstrip() + else: + mmcv.mkdir_or_exist(tmpdir) + # dump the part result to the dir + mmcv.dump(result_part, osp.join(tmpdir, f'part_{rank}.pkl')) + dist.barrier() + # collect all parts + if rank != 0: + return None + else: + # load results of all parts from tmp dir + part_list = [] + for i in range(world_size): + part_file = osp.join(tmpdir, f'part_{i}.pkl') + part_result = mmcv.load(part_file) + part_list.append(part_result) + # sort the results + ordered_results = [] + for res in zip(*part_list): + ordered_results.extend(list(res)) + # the dataloader may pad some samples + ordered_results = ordered_results[:size] + # remove tmp dir + shutil.rmtree(tmpdir) + return ordered_results + + +def collect_results_gpu(result_part, size): + rank, world_size = get_dist_info() + # dump result part to tensor with pickle + part_tensor = torch.tensor( + bytearray(pickle.dumps(result_part)), dtype=torch.uint8, device='cuda') + # gather all result part tensor shape + shape_tensor = torch.tensor(part_tensor.shape, device='cuda') + shape_list = [shape_tensor.clone() for _ in range(world_size)] + dist.all_gather(shape_list, shape_tensor) + # padding result part tensor to max length + shape_max = torch.tensor(shape_list).max() + part_send = torch.zeros(shape_max, dtype=torch.uint8, device='cuda') + part_send[:shape_tensor[0]] = part_tensor + part_recv_list = [ + part_tensor.new_zeros(shape_max) for _ in range(world_size) + ] + # gather all result part + dist.all_gather(part_recv_list, part_send) + + if rank == 0: + part_list = [] + for recv, shape in zip(part_recv_list, shape_list): + part_result = pickle.loads(recv[:shape[0]].cpu().numpy().tobytes()) + part_list.append(part_result) + # sort the results + ordered_results = [] + for res in zip(*part_list): + ordered_results.extend(list(res)) + # the dataloader may pad some samples + ordered_results = ordered_results[:size] + return ordered_results diff --git a/openmmlab_test/mmclassification-0.24.1/mmcls/apis/train.py b/openmmlab_test/mmclassification-0.24.1/mmcls/apis/train.py new file mode 100644 index 00000000..909b116d --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/mmcls/apis/train.py @@ -0,0 +1,232 @@ +# Copyright (c) OpenMMLab. All rights reserved. +import random +import warnings + +import numpy as np +import torch +import torch.distributed as dist +from mmcv.runner import (DistSamplerSeedHook, Fp16OptimizerHook, + build_optimizer, build_runner, get_dist_info) + +from mmcls.core import DistEvalHook, DistOptimizerHook, EvalHook +from mmcls.datasets import build_dataloader, build_dataset +from mmcls.utils import (get_root_logger, wrap_distributed_model, + wrap_non_distributed_model) + + +def init_random_seed(seed=None, device='cuda'): + """Initialize random seed. + + If the seed is not set, the seed will be automatically randomized, + and then broadcast to all processes to prevent some potential bugs. + + Args: + seed (int, Optional): The seed. Default to None. + device (str): The device where the seed will be put on. + Default to 'cuda'. + + Returns: + int: Seed to be used. + """ + if seed is not None: + return seed + + # Make sure all ranks share the same random seed to prevent + # some potential bugs. Please refer to + # https://github.com/open-mmlab/mmdetection/issues/6339 + rank, world_size = get_dist_info() + seed = np.random.randint(2**31) + if world_size == 1: + return seed + + if rank == 0: + random_num = torch.tensor(seed, dtype=torch.int32, device=device) + else: + random_num = torch.tensor(0, dtype=torch.int32, device=device) + dist.broadcast(random_num, src=0) + return random_num.item() + + +def set_random_seed(seed, deterministic=False): + """Set random seed. + + Args: + seed (int): Seed to be used. + deterministic (bool): Whether to set the deterministic option for + CUDNN backend, i.e., set `torch.backends.cudnn.deterministic` + to True and `torch.backends.cudnn.benchmark` to False. + Default: False. + """ + random.seed(seed) + np.random.seed(seed) + torch.manual_seed(seed) + torch.cuda.manual_seed_all(seed) + if deterministic: + torch.backends.cudnn.deterministic = True + torch.backends.cudnn.benchmark = False + + +def train_model(model, + dataset, + cfg, + distributed=False, + validate=False, + timestamp=None, + device=None, + meta=None): + """Train a model. + + This method will build dataloaders, wrap the model and build a runner + according to the provided config. + + Args: + model (:obj:`torch.nn.Module`): The model to be run. + dataset (:obj:`mmcls.datasets.BaseDataset` | List[BaseDataset]): + The dataset used to train the model. It can be a single dataset, + or a list of dataset with the same length as workflow. + cfg (:obj:`mmcv.utils.Config`): The configs of the experiment. + distributed (bool): Whether to train the model in a distributed + environment. Defaults to False. + validate (bool): Whether to do validation with + :obj:`mmcv.runner.EvalHook`. Defaults to False. + timestamp (str, optional): The timestamp string to auto generate the + name of log files. Defaults to None. + device (str, optional): TODO + meta (dict, optional): A dict records some import information such as + environment info and seed, which will be logged in logger hook. + Defaults to None. + """ + logger = get_root_logger() + + # prepare data loaders + dataset = dataset if isinstance(dataset, (list, tuple)) else [dataset] + + # The default loader config + loader_cfg = dict( + # cfg.gpus will be ignored if distributed + num_gpus=cfg.ipu_replicas if device == 'ipu' else len(cfg.gpu_ids), + dist=distributed, + round_up=True, + seed=cfg.get('seed'), + sampler_cfg=cfg.get('sampler', None), + ) + # The overall dataloader settings + loader_cfg.update({ + k: v + for k, v in cfg.data.items() if k not in [ + 'train', 'val', 'test', 'train_dataloader', 'val_dataloader', + 'test_dataloader' + ] + }) + # The specific dataloader settings + train_loader_cfg = {**loader_cfg, **cfg.data.get('train_dataloader', {})} + + data_loaders = [build_dataloader(ds, **train_loader_cfg) for ds in dataset] + + # put model on gpus + if distributed: + find_unused_parameters = cfg.get('find_unused_parameters', False) + # Sets the `find_unused_parameters` parameter in + # torch.nn.parallel.DistributedDataParallel + model = wrap_distributed_model( + model, + cfg.device, + broadcast_buffers=False, + find_unused_parameters=find_unused_parameters) + else: + model = wrap_non_distributed_model( + model, cfg.device, device_ids=cfg.gpu_ids) + + # build runner + optimizer = build_optimizer(model, cfg.optimizer) + + if cfg.get('runner') is None: + cfg.runner = { + 'type': 'EpochBasedRunner', + 'max_epochs': cfg.total_epochs + } + warnings.warn( + 'config is now expected to have a `runner` section, ' + 'please set `runner` in your config.', UserWarning) + + if device == 'ipu': + if not cfg.runner['type'].startswith('IPU'): + cfg.runner['type'] = 'IPU' + cfg.runner['type'] + if 'options_cfg' not in cfg.runner: + cfg.runner['options_cfg'] = {} + cfg.runner['options_cfg']['replicationFactor'] = cfg.ipu_replicas + cfg.runner['fp16_cfg'] = cfg.get('fp16', None) + + runner = build_runner( + cfg.runner, + default_args=dict( + model=model, + batch_processor=None, + optimizer=optimizer, + work_dir=cfg.work_dir, + logger=logger, + meta=meta)) + + # an ugly walkaround to make the .log and .log.json filenames the same + runner.timestamp = timestamp + + # fp16 setting + fp16_cfg = cfg.get('fp16', None) + + if fp16_cfg is None and device == 'npu': + fp16_cfg = {'loss_scale': 'dynamic'} + + if fp16_cfg is not None: + if device == 'ipu': + from mmcv.device.ipu import IPUFp16OptimizerHook + optimizer_config = IPUFp16OptimizerHook( + **cfg.optimizer_config, + loss_scale=fp16_cfg['loss_scale'], + distributed=distributed) + else: + optimizer_config = Fp16OptimizerHook( + **cfg.optimizer_config, + loss_scale=fp16_cfg['loss_scale'], + distributed=distributed) + elif distributed and 'type' not in cfg.optimizer_config: + optimizer_config = DistOptimizerHook(**cfg.optimizer_config) + else: + optimizer_config = cfg.optimizer_config + + # register hooks + runner.register_training_hooks( + cfg.lr_config, + optimizer_config, + cfg.checkpoint_config, + cfg.log_config, + cfg.get('momentum_config', None), + custom_hooks_config=cfg.get('custom_hooks', None)) + if distributed and cfg.runner['type'] == 'EpochBasedRunner': + runner.register_hook(DistSamplerSeedHook()) + + # register eval hooks + if validate: + val_dataset = build_dataset(cfg.data.val, dict(test_mode=True)) + # The specific dataloader settings + val_loader_cfg = { + **loader_cfg, + 'shuffle': False, # Not shuffle by default + 'sampler_cfg': None, # Not use sampler by default + 'drop_last': False, # Not drop last by default + **cfg.data.get('val_dataloader', {}), + } + val_dataloader = build_dataloader(val_dataset, **val_loader_cfg) + eval_cfg = cfg.get('evaluation', {}) + eval_cfg['by_epoch'] = cfg.runner['type'] != 'IterBasedRunner' + eval_hook = DistEvalHook if distributed else EvalHook + # `EvalHook` needs to be executed after `IterTimerHook`. + # Otherwise, it will cause a bug if use `IterBasedRunner`. + # Refers to https://github.com/open-mmlab/mmcv/issues/1261 + runner.register_hook( + eval_hook(val_dataloader, **eval_cfg), priority='LOW') + + if cfg.resume_from: + runner.resume(cfg.resume_from) + elif cfg.load_from: + runner.load_checkpoint(cfg.load_from) + runner.run(data_loaders, cfg.workflow) diff --git a/openmmlab_test/mmclassification-0.24.1/mmcls/core/__init__.py b/openmmlab_test/mmclassification-0.24.1/mmcls/core/__init__.py new file mode 100644 index 00000000..dd108032 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/mmcls/core/__init__.py @@ -0,0 +1,5 @@ +# Copyright (c) OpenMMLab. All rights reserved. +from .evaluation import * # noqa: F401, F403 +from .hook import * # noqa: F401, F403 +from .optimizers import * # noqa: F401, F403 +from .utils import * # noqa: F401, F403 diff --git a/openmmlab_test/mmclassification-0.24.1/mmcls/core/evaluation/__init__.py b/openmmlab_test/mmclassification-0.24.1/mmcls/core/evaluation/__init__.py new file mode 100644 index 00000000..dd4e57cc --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/mmcls/core/evaluation/__init__.py @@ -0,0 +1,12 @@ +# Copyright (c) OpenMMLab. All rights reserved. +from .eval_hooks import DistEvalHook, EvalHook +from .eval_metrics import (calculate_confusion_matrix, f1_score, precision, + precision_recall_f1, recall, support) +from .mean_ap import average_precision, mAP +from .multilabel_eval_metrics import average_performance + +__all__ = [ + 'precision', 'recall', 'f1_score', 'support', 'average_precision', 'mAP', + 'average_performance', 'calculate_confusion_matrix', 'precision_recall_f1', + 'EvalHook', 'DistEvalHook' +] diff --git a/openmmlab_test/mmclassification-0.24.1/mmcls/core/evaluation/eval_hooks.py b/openmmlab_test/mmclassification-0.24.1/mmcls/core/evaluation/eval_hooks.py new file mode 100644 index 00000000..412eab4f --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/mmcls/core/evaluation/eval_hooks.py @@ -0,0 +1,78 @@ +# Copyright (c) OpenMMLab. All rights reserved. +import os.path as osp + +import torch.distributed as dist +from mmcv.runner import DistEvalHook as BaseDistEvalHook +from mmcv.runner import EvalHook as BaseEvalHook +from torch.nn.modules.batchnorm import _BatchNorm + + +class EvalHook(BaseEvalHook): + """Non-Distributed evaluation hook. + + Comparing with the ``EvalHook`` in MMCV, this hook will save the latest + evaluation results as an attribute for other hooks to use (like + `MMClsWandbHook`). + """ + + def __init__(self, dataloader, **kwargs): + super(EvalHook, self).__init__(dataloader, **kwargs) + self.latest_results = None + + def _do_evaluate(self, runner): + """perform evaluation and save ckpt.""" + results = self.test_fn(runner.model, self.dataloader) + self.latest_results = results + runner.log_buffer.output['eval_iter_num'] = len(self.dataloader) + key_score = self.evaluate(runner, results) + # the key_score may be `None` so it needs to skip the action to save + # the best checkpoint + if self.save_best and key_score: + self._save_ckpt(runner, key_score) + + +class DistEvalHook(BaseDistEvalHook): + """Non-Distributed evaluation hook. + + Comparing with the ``EvalHook`` in MMCV, this hook will save the latest + evaluation results as an attribute for other hooks to use (like + `MMClsWandbHook`). + """ + + def __init__(self, dataloader, **kwargs): + super(DistEvalHook, self).__init__(dataloader, **kwargs) + self.latest_results = None + + def _do_evaluate(self, runner): + """perform evaluation and save ckpt.""" + # Synchronization of BatchNorm's buffer (running_mean + # and running_var) is not supported in the DDP of pytorch, + # which may cause the inconsistent performance of models in + # different ranks, so we broadcast BatchNorm's buffers + # of rank 0 to other ranks to avoid this. + if self.broadcast_bn_buffer: + model = runner.model + for name, module in model.named_modules(): + if isinstance(module, + _BatchNorm) and module.track_running_stats: + dist.broadcast(module.running_var, 0) + dist.broadcast(module.running_mean, 0) + + tmpdir = self.tmpdir + if tmpdir is None: + tmpdir = osp.join(runner.work_dir, '.eval_hook') + + results = self.test_fn( + runner.model, + self.dataloader, + tmpdir=tmpdir, + gpu_collect=self.gpu_collect) + self.latest_results = results + if runner.rank == 0: + print('\n') + runner.log_buffer.output['eval_iter_num'] = len(self.dataloader) + key_score = self.evaluate(runner, results) + # the key_score may be `None` so it needs to skip the action to + # save the best checkpoint + if self.save_best and key_score: + self._save_ckpt(runner, key_score) diff --git a/openmmlab_test/mmclassification-0.24.1/mmcls/core/evaluation/eval_metrics.py b/openmmlab_test/mmclassification-0.24.1/mmcls/core/evaluation/eval_metrics.py new file mode 100644 index 00000000..365b4088 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/mmcls/core/evaluation/eval_metrics.py @@ -0,0 +1,259 @@ +# Copyright (c) OpenMMLab. All rights reserved. +from numbers import Number + +import numpy as np +import torch +from torch.nn.functional import one_hot + + +def calculate_confusion_matrix(pred, target): + """Calculate confusion matrix according to the prediction and target. + + Args: + pred (torch.Tensor | np.array): The model prediction with shape (N, C). + target (torch.Tensor | np.array): The target of each prediction with + shape (N, 1) or (N,). + + Returns: + torch.Tensor: Confusion matrix + The shape is (C, C), where C is the number of classes. + """ + + if isinstance(pred, np.ndarray): + pred = torch.from_numpy(pred) + if isinstance(target, np.ndarray): + target = torch.from_numpy(target) + assert ( + isinstance(pred, torch.Tensor) and isinstance(target, torch.Tensor)), \ + (f'pred and target should be torch.Tensor or np.ndarray, ' + f'but got {type(pred)} and {type(target)}.') + + # Modified from PyTorch-Ignite + num_classes = pred.size(1) + pred_label = torch.argmax(pred, dim=1).flatten() + target_label = target.flatten() + assert len(pred_label) == len(target_label) + + with torch.no_grad(): + indices = num_classes * target_label + pred_label + matrix = torch.bincount(indices, minlength=num_classes**2) + matrix = matrix.reshape(num_classes, num_classes) + return matrix + + +def precision_recall_f1(pred, target, average_mode='macro', thrs=0.): + """Calculate precision, recall and f1 score according to the prediction and + target. + + Args: + pred (torch.Tensor | np.array): The model prediction with shape (N, C). + target (torch.Tensor | np.array): The target of each prediction with + shape (N, 1) or (N,). + average_mode (str): The type of averaging performed on the result. + Options are 'macro' and 'none'. If 'none', the scores for each + class are returned. If 'macro', calculate metrics for each class, + and find their unweighted mean. + Defaults to 'macro'. + thrs (Number | tuple[Number], optional): Predictions with scores under + the thresholds are considered negative. Default to 0. + + Returns: + tuple: tuple containing precision, recall, f1 score. + + The type of precision, recall, f1 score is one of the following: + + +----------------------------+--------------------+-------------------+ + | Args | ``thrs`` is number | ``thrs`` is tuple | + +============================+====================+===================+ + | ``average_mode`` = "macro" | float | list[float] | + +----------------------------+--------------------+-------------------+ + | ``average_mode`` = "none" | np.array | list[np.array] | + +----------------------------+--------------------+-------------------+ + """ + + allowed_average_mode = ['macro', 'none'] + if average_mode not in allowed_average_mode: + raise ValueError(f'Unsupport type of averaging {average_mode}.') + + if isinstance(pred, np.ndarray): + pred = torch.from_numpy(pred) + assert isinstance(pred, torch.Tensor), \ + (f'pred should be torch.Tensor or np.ndarray, but got {type(pred)}.') + if isinstance(target, np.ndarray): + target = torch.from_numpy(target).long() + assert isinstance(target, torch.Tensor), \ + f'target should be torch.Tensor or np.ndarray, ' \ + f'but got {type(target)}.' + + if isinstance(thrs, Number): + thrs = (thrs, ) + return_single = True + elif isinstance(thrs, tuple): + return_single = False + else: + raise TypeError( + f'thrs should be a number or tuple, but got {type(thrs)}.') + + num_classes = pred.size(1) + pred_score, pred_label = torch.topk(pred, k=1) + pred_score = pred_score.flatten() + pred_label = pred_label.flatten() + + gt_positive = one_hot(target.flatten(), num_classes) + + precisions = [] + recalls = [] + f1_scores = [] + for thr in thrs: + # Only prediction values larger than thr are counted as positive + pred_positive = one_hot(pred_label, num_classes) + if thr is not None: + pred_positive[pred_score <= thr] = 0 + class_correct = (pred_positive & gt_positive).sum(0) + precision = class_correct / np.maximum(pred_positive.sum(0), 1.) * 100 + recall = class_correct / np.maximum(gt_positive.sum(0), 1.) * 100 + f1_score = 2 * precision * recall / np.maximum( + precision + recall, + torch.finfo(torch.float32).eps) + if average_mode == 'macro': + precision = float(precision.mean()) + recall = float(recall.mean()) + f1_score = float(f1_score.mean()) + elif average_mode == 'none': + precision = precision.detach().cpu().numpy() + recall = recall.detach().cpu().numpy() + f1_score = f1_score.detach().cpu().numpy() + else: + raise ValueError(f'Unsupport type of averaging {average_mode}.') + precisions.append(precision) + recalls.append(recall) + f1_scores.append(f1_score) + + if return_single: + return precisions[0], recalls[0], f1_scores[0] + else: + return precisions, recalls, f1_scores + + +def precision(pred, target, average_mode='macro', thrs=0.): + """Calculate precision according to the prediction and target. + + Args: + pred (torch.Tensor | np.array): The model prediction with shape (N, C). + target (torch.Tensor | np.array): The target of each prediction with + shape (N, 1) or (N,). + average_mode (str): The type of averaging performed on the result. + Options are 'macro' and 'none'. If 'none', the scores for each + class are returned. If 'macro', calculate metrics for each class, + and find their unweighted mean. + Defaults to 'macro'. + thrs (Number | tuple[Number], optional): Predictions with scores under + the thresholds are considered negative. Default to 0. + + Returns: + float | np.array | list[float | np.array]: Precision. + + +----------------------------+--------------------+-------------------+ + | Args | ``thrs`` is number | ``thrs`` is tuple | + +============================+====================+===================+ + | ``average_mode`` = "macro" | float | list[float] | + +----------------------------+--------------------+-------------------+ + | ``average_mode`` = "none" | np.array | list[np.array] | + +----------------------------+--------------------+-------------------+ + """ + precisions, _, _ = precision_recall_f1(pred, target, average_mode, thrs) + return precisions + + +def recall(pred, target, average_mode='macro', thrs=0.): + """Calculate recall according to the prediction and target. + + Args: + pred (torch.Tensor | np.array): The model prediction with shape (N, C). + target (torch.Tensor | np.array): The target of each prediction with + shape (N, 1) or (N,). + average_mode (str): The type of averaging performed on the result. + Options are 'macro' and 'none'. If 'none', the scores for each + class are returned. If 'macro', calculate metrics for each class, + and find their unweighted mean. + Defaults to 'macro'. + thrs (Number | tuple[Number], optional): Predictions with scores under + the thresholds are considered negative. Default to 0. + + Returns: + float | np.array | list[float | np.array]: Recall. + + +----------------------------+--------------------+-------------------+ + | Args | ``thrs`` is number | ``thrs`` is tuple | + +============================+====================+===================+ + | ``average_mode`` = "macro" | float | list[float] | + +----------------------------+--------------------+-------------------+ + | ``average_mode`` = "none" | np.array | list[np.array] | + +----------------------------+--------------------+-------------------+ + """ + _, recalls, _ = precision_recall_f1(pred, target, average_mode, thrs) + return recalls + + +def f1_score(pred, target, average_mode='macro', thrs=0.): + """Calculate F1 score according to the prediction and target. + + Args: + pred (torch.Tensor | np.array): The model prediction with shape (N, C). + target (torch.Tensor | np.array): The target of each prediction with + shape (N, 1) or (N,). + average_mode (str): The type of averaging performed on the result. + Options are 'macro' and 'none'. If 'none', the scores for each + class are returned. If 'macro', calculate metrics for each class, + and find their unweighted mean. + Defaults to 'macro'. + thrs (Number | tuple[Number], optional): Predictions with scores under + the thresholds are considered negative. Default to 0. + + Returns: + float | np.array | list[float | np.array]: F1 score. + + +----------------------------+--------------------+-------------------+ + | Args | ``thrs`` is number | ``thrs`` is tuple | + +============================+====================+===================+ + | ``average_mode`` = "macro" | float | list[float] | + +----------------------------+--------------------+-------------------+ + | ``average_mode`` = "none" | np.array | list[np.array] | + +----------------------------+--------------------+-------------------+ + """ + _, _, f1_scores = precision_recall_f1(pred, target, average_mode, thrs) + return f1_scores + + +def support(pred, target, average_mode='macro'): + """Calculate the total number of occurrences of each label according to the + prediction and target. + + Args: + pred (torch.Tensor | np.array): The model prediction with shape (N, C). + target (torch.Tensor | np.array): The target of each prediction with + shape (N, 1) or (N,). + average_mode (str): The type of averaging performed on the result. + Options are 'macro' and 'none'. If 'none', the scores for each + class are returned. If 'macro', calculate metrics for each class, + and find their unweighted sum. + Defaults to 'macro'. + + Returns: + float | np.array: Support. + + - If the ``average_mode`` is set to macro, the function returns + a single float. + - If the ``average_mode`` is set to none, the function returns + a np.array with shape C. + """ + confusion_matrix = calculate_confusion_matrix(pred, target) + with torch.no_grad(): + res = confusion_matrix.sum(1) + if average_mode == 'macro': + res = float(res.sum().numpy()) + elif average_mode == 'none': + res = res.numpy() + else: + raise ValueError(f'Unsupport type of averaging {average_mode}.') + return res diff --git a/openmmlab_test/mmclassification-speed-benchmark/mmcls/core/evaluation/mean_ap.py b/openmmlab_test/mmclassification-0.24.1/mmcls/core/evaluation/mean_ap.py similarity index 92% rename from openmmlab_test/mmclassification-speed-benchmark/mmcls/core/evaluation/mean_ap.py rename to openmmlab_test/mmclassification-0.24.1/mmcls/core/evaluation/mean_ap.py index 2255ce22..2771a2ac 100644 --- a/openmmlab_test/mmclassification-speed-benchmark/mmcls/core/evaluation/mean_ap.py +++ b/openmmlab_test/mmclassification-0.24.1/mmcls/core/evaluation/mean_ap.py @@ -1,15 +1,16 @@ +# Copyright (c) OpenMMLab. All rights reserved. import numpy as np import torch def average_precision(pred, target): - """Calculate the average precision for a single class. + r"""Calculate the average precision for a single class. AP summarizes a precision-recall curve as the weighted mean of maximum precisions obtained for any r'>r, where r is the recall: - ..math:: - \\text{AP} = \\sum_n (R_n - R_{n-1}) P_n + .. math:: + \text{AP} = \sum_n (R_n - R_{n-1}) P_n Note that no approximation is involved since the curve is piecewise constant. diff --git a/openmmlab_test/mmclassification-speed-benchmark/mmcls/core/evaluation/multilabel_eval_metrics.py b/openmmlab_test/mmclassification-0.24.1/mmcls/core/evaluation/multilabel_eval_metrics.py similarity index 98% rename from openmmlab_test/mmclassification-speed-benchmark/mmcls/core/evaluation/multilabel_eval_metrics.py rename to openmmlab_test/mmclassification-0.24.1/mmcls/core/evaluation/multilabel_eval_metrics.py index e8fcfc11..1d34e2b0 100644 --- a/openmmlab_test/mmclassification-speed-benchmark/mmcls/core/evaluation/multilabel_eval_metrics.py +++ b/openmmlab_test/mmclassification-0.24.1/mmcls/core/evaluation/multilabel_eval_metrics.py @@ -1,3 +1,4 @@ +# Copyright (c) OpenMMLab. All rights reserved. import warnings import numpy as np diff --git a/openmmlab_test/mmclassification-0.24.1/mmcls/core/export/__init__.py b/openmmlab_test/mmclassification-0.24.1/mmcls/core/export/__init__.py new file mode 100644 index 00000000..1c6ec1b9 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/mmcls/core/export/__init__.py @@ -0,0 +1,4 @@ +# Copyright (c) OpenMMLab. All rights reserved. +from .test import ONNXRuntimeClassifier, TensorRTClassifier + +__all__ = ['ONNXRuntimeClassifier', 'TensorRTClassifier'] diff --git a/openmmlab_test/mmclassification-0.24.1/mmcls/core/export/test.py b/openmmlab_test/mmclassification-0.24.1/mmcls/core/export/test.py new file mode 100644 index 00000000..f7caed6e --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/mmcls/core/export/test.py @@ -0,0 +1,96 @@ +# Copyright (c) OpenMMLab. All rights reserved. +import warnings + +import numpy as np +import onnxruntime as ort +import torch + +from mmcls.models.classifiers import BaseClassifier + + +class ONNXRuntimeClassifier(BaseClassifier): + """Wrapper for classifier's inference with ONNXRuntime.""" + + def __init__(self, onnx_file, class_names, device_id): + super(ONNXRuntimeClassifier, self).__init__() + sess = ort.InferenceSession(onnx_file) + + providers = ['CPUExecutionProvider'] + options = [{}] + is_cuda_available = ort.get_device() == 'GPU' + if is_cuda_available: + providers.insert(0, 'CUDAExecutionProvider') + options.insert(0, {'device_id': device_id}) + sess.set_providers(providers, options) + + self.sess = sess + self.CLASSES = class_names + self.device_id = device_id + self.io_binding = sess.io_binding() + self.output_names = [_.name for _ in sess.get_outputs()] + self.is_cuda_available = is_cuda_available + + def simple_test(self, img, img_metas, **kwargs): + raise NotImplementedError('This method is not implemented.') + + def extract_feat(self, imgs): + raise NotImplementedError('This method is not implemented.') + + def forward_train(self, imgs, **kwargs): + raise NotImplementedError('This method is not implemented.') + + def forward_test(self, imgs, img_metas, **kwargs): + input_data = imgs + # set io binding for inputs/outputs + device_type = 'cuda' if self.is_cuda_available else 'cpu' + if not self.is_cuda_available: + input_data = input_data.cpu() + self.io_binding.bind_input( + name='input', + device_type=device_type, + device_id=self.device_id, + element_type=np.float32, + shape=input_data.shape, + buffer_ptr=input_data.data_ptr()) + + for name in self.output_names: + self.io_binding.bind_output(name) + # run session to get outputs + self.sess.run_with_iobinding(self.io_binding) + results = self.io_binding.copy_outputs_to_cpu()[0] + return list(results) + + +class TensorRTClassifier(BaseClassifier): + + def __init__(self, trt_file, class_names, device_id): + super(TensorRTClassifier, self).__init__() + from mmcv.tensorrt import TRTWraper, load_tensorrt_plugin + try: + load_tensorrt_plugin() + except (ImportError, ModuleNotFoundError): + warnings.warn('If input model has custom op from mmcv, \ + you may have to build mmcv with TensorRT from source.') + model = TRTWraper( + trt_file, input_names=['input'], output_names=['probs']) + + self.model = model + self.device_id = device_id + self.CLASSES = class_names + + def simple_test(self, img, img_metas, **kwargs): + raise NotImplementedError('This method is not implemented.') + + def extract_feat(self, imgs): + raise NotImplementedError('This method is not implemented.') + + def forward_train(self, imgs, **kwargs): + raise NotImplementedError('This method is not implemented.') + + def forward_test(self, imgs, img_metas, **kwargs): + input_data = imgs + with torch.cuda.device(self.device_id), torch.no_grad(): + results = self.model({'input': input_data})['probs'] + results = results.detach().cpu().numpy() + + return list(results) diff --git a/openmmlab_test/mmclassification-0.24.1/mmcls/core/hook/__init__.py b/openmmlab_test/mmclassification-0.24.1/mmcls/core/hook/__init__.py new file mode 100644 index 00000000..4212dcf9 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/mmcls/core/hook/__init__.py @@ -0,0 +1,10 @@ +# Copyright (c) OpenMMLab. All rights reserved. +from .class_num_check_hook import ClassNumCheckHook +from .lr_updater import CosineAnnealingCooldownLrUpdaterHook +from .precise_bn_hook import PreciseBNHook +from .wandblogger_hook import MMClsWandbHook + +__all__ = [ + 'ClassNumCheckHook', 'PreciseBNHook', + 'CosineAnnealingCooldownLrUpdaterHook', 'MMClsWandbHook' +] diff --git a/openmmlab_test/mmclassification-0.24.1/mmcls/core/hook/class_num_check_hook.py b/openmmlab_test/mmclassification-0.24.1/mmcls/core/hook/class_num_check_hook.py new file mode 100644 index 00000000..52c2c9a5 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/mmcls/core/hook/class_num_check_hook.py @@ -0,0 +1,73 @@ +# Copyright (c) OpenMMLab. All rights reserved +from mmcv.runner import IterBasedRunner +from mmcv.runner.hooks import HOOKS, Hook +from mmcv.utils import is_seq_of + + +@HOOKS.register_module() +class ClassNumCheckHook(Hook): + + def _check_head(self, runner, dataset): + """Check whether the `num_classes` in head matches the length of + `CLASSES` in `dataset`. + + Args: + runner (obj:`EpochBasedRunner`, `IterBasedRunner`): runner object. + dataset (obj: `BaseDataset`): the dataset to check. + """ + model = runner.model + if dataset.CLASSES is None: + runner.logger.warning( + f'Please set `CLASSES` ' + f'in the {dataset.__class__.__name__} and' + f'check if it is consistent with the `num_classes` ' + f'of head') + else: + assert is_seq_of(dataset.CLASSES, str), \ + (f'`CLASSES` in {dataset.__class__.__name__}' + f'should be a tuple of str.') + for name, module in model.named_modules(): + if hasattr(module, 'num_classes'): + assert module.num_classes == len(dataset.CLASSES), \ + (f'The `num_classes` ({module.num_classes}) in ' + f'{module.__class__.__name__} of ' + f'{model.__class__.__name__} does not matches ' + f'the length of `CLASSES` ' + f'{len(dataset.CLASSES)}) in ' + f'{dataset.__class__.__name__}') + + def before_train_iter(self, runner): + """Check whether the training dataset is compatible with head. + + Args: + runner (obj: `IterBasedRunner`): Iter based Runner. + """ + if not isinstance(runner, IterBasedRunner): + return + self._check_head(runner, runner.data_loader._dataloader.dataset) + + def before_val_iter(self, runner): + """Check whether the eval dataset is compatible with head. + + Args: + runner (obj:`IterBasedRunner`): Iter based Runner. + """ + if not isinstance(runner, IterBasedRunner): + return + self._check_head(runner, runner.data_loader._dataloader.dataset) + + def before_train_epoch(self, runner): + """Check whether the training dataset is compatible with head. + + Args: + runner (obj:`EpochBasedRunner`): Epoch based Runner. + """ + self._check_head(runner, runner.data_loader.dataset) + + def before_val_epoch(self, runner): + """Check whether the eval dataset is compatible with head. + + Args: + runner (obj:`EpochBasedRunner`): Epoch based Runner. + """ + self._check_head(runner, runner.data_loader.dataset) diff --git a/openmmlab_test/mmclassification-0.24.1/mmcls/core/hook/lr_updater.py b/openmmlab_test/mmclassification-0.24.1/mmcls/core/hook/lr_updater.py new file mode 100644 index 00000000..021f66b5 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/mmcls/core/hook/lr_updater.py @@ -0,0 +1,83 @@ +# Copyright (c) OpenMMLab. All rights reserved. +from math import cos, pi + +from mmcv.runner.hooks import HOOKS, LrUpdaterHook + + +@HOOKS.register_module() +class CosineAnnealingCooldownLrUpdaterHook(LrUpdaterHook): + """Cosine annealing learning rate scheduler with cooldown. + + Args: + min_lr (float, optional): The minimum learning rate after annealing. + Defaults to None. + min_lr_ratio (float, optional): The minimum learning ratio after + nnealing. Defaults to None. + cool_down_ratio (float): The cooldown ratio. Defaults to 0.1. + cool_down_time (int): The cooldown time. Defaults to 10. + by_epoch (bool): If True, the learning rate changes epoch by epoch. If + False, the learning rate changes iter by iter. Defaults to True. + warmup (string, optional): Type of warmup used. It can be None (use no + warmup), 'constant', 'linear' or 'exp'. Defaults to None. + warmup_iters (int): The number of iterations or epochs that warmup + lasts. Defaults to 0. + warmup_ratio (float): LR used at the beginning of warmup equals to + ``warmup_ratio * initial_lr``. Defaults to 0.1. + warmup_by_epoch (bool): If True, the ``warmup_iters`` + means the number of epochs that warmup lasts, otherwise means the + number of iteration that warmup lasts. Defaults to False. + + Note: + You need to set one and only one of ``min_lr`` and ``min_lr_ratio``. + """ + + def __init__(self, + min_lr=None, + min_lr_ratio=None, + cool_down_ratio=0.1, + cool_down_time=10, + **kwargs): + assert (min_lr is None) ^ (min_lr_ratio is None) + self.min_lr = min_lr + self.min_lr_ratio = min_lr_ratio + self.cool_down_time = cool_down_time + self.cool_down_ratio = cool_down_ratio + super(CosineAnnealingCooldownLrUpdaterHook, self).__init__(**kwargs) + + def get_lr(self, runner, base_lr): + if self.by_epoch: + progress = runner.epoch + max_progress = runner.max_epochs + else: + progress = runner.iter + max_progress = runner.max_iters + + if self.min_lr_ratio is not None: + target_lr = base_lr * self.min_lr_ratio + else: + target_lr = self.min_lr + + if progress > max_progress - self.cool_down_time: + return target_lr * self.cool_down_ratio + else: + max_progress = max_progress - self.cool_down_time + + return annealing_cos(base_lr, target_lr, progress / max_progress) + + +def annealing_cos(start, end, factor, weight=1): + """Calculate annealing cos learning rate. + + Cosine anneal from `weight * start + (1 - weight) * end` to `end` as + percentage goes from 0.0 to 1.0. + + Args: + start (float): The starting learning rate of the cosine annealing. + end (float): The ending learing rate of the cosine annealing. + factor (float): The coefficient of `pi` when calculating the current + percentage. Range from 0.0 to 1.0. + weight (float, optional): The combination factor of `start` and `end` + when calculating the actual starting learning rate. Default to 1. + """ + cos_out = cos(pi * factor) + 1 + return end + 0.5 * weight * (start - end) * cos_out diff --git a/openmmlab_test/mmclassification-0.24.1/mmcls/core/hook/precise_bn_hook.py b/openmmlab_test/mmclassification-0.24.1/mmcls/core/hook/precise_bn_hook.py new file mode 100644 index 00000000..e6d45980 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/mmcls/core/hook/precise_bn_hook.py @@ -0,0 +1,180 @@ +# Copyright (c) OpenMMLab. All rights reserved. +# Adapted from https://github.com/facebookresearch/pycls/blob/f8cd962737e33ce9e19b3083a33551da95c2d9c0/pycls/core/net.py # noqa: E501 +# Original licence: Copyright (c) 2019 Facebook, Inc under the Apache License 2.0 # noqa: E501 + +import itertools +import logging +from typing import List, Optional + +import mmcv +import torch +import torch.nn as nn +from mmcv.runner import EpochBasedRunner, get_dist_info +from mmcv.runner.hooks import HOOKS, Hook +from mmcv.utils import print_log +from torch.functional import Tensor +from torch.nn import GroupNorm +from torch.nn.modules.batchnorm import _BatchNorm +from torch.nn.modules.instancenorm import _InstanceNorm +from torch.utils.data import DataLoader + + +def scaled_all_reduce(tensors: List[Tensor], num_gpus: int) -> List[Tensor]: + """Performs the scaled all_reduce operation on the provided tensors. + + The input tensors are modified in-place. Currently supports only the sum + reduction operator. The reduced values are scaled by the inverse size of + the process group. + + Args: + tensors (List[torch.Tensor]): The tensors to process. + num_gpus (int): The number of gpus to use + Returns: + List[torch.Tensor]: The processed tensors. + """ + # There is no need for reduction in the single-proc case + if num_gpus == 1: + return tensors + # Queue the reductions + reductions = [] + for tensor in tensors: + reduction = torch.distributed.all_reduce(tensor, async_op=True) + reductions.append(reduction) + # Wait for reductions to finish + for reduction in reductions: + reduction.wait() + # Scale the results + for tensor in tensors: + tensor.mul_(1.0 / num_gpus) + return tensors + + +@torch.no_grad() +def update_bn_stats(model: nn.Module, + loader: DataLoader, + num_samples: int = 8192, + logger: Optional[logging.Logger] = None) -> None: + """Computes precise BN stats on training data. + + Args: + model (nn.module): The model whose bn stats will be recomputed. + loader (DataLoader): PyTorch dataloader._dataloader + num_samples (int): The number of samples to update the bn stats. + Defaults to 8192. + logger (:obj:`logging.Logger` | None): Logger for logging. + Default: None. + """ + # get dist info + rank, world_size = get_dist_info() + # Compute the number of mini-batches to use, if the size of dataloader is + # less than num_iters, use all the samples in dataloader. + num_iter = num_samples // (loader.batch_size * world_size) + num_iter = min(num_iter, len(loader)) + # Retrieve the BN layers + bn_layers = [ + m for m in model.modules() + if m.training and isinstance(m, (_BatchNorm)) + ] + + if len(bn_layers) == 0: + print_log('No BN found in model', logger=logger, level=logging.WARNING) + return + print_log( + f'{len(bn_layers)} BN found, run {num_iter} iters...', logger=logger) + + # Finds all the other norm layers with training=True. + other_norm_layers = [ + m for m in model.modules() + if m.training and isinstance(m, (_InstanceNorm, GroupNorm)) + ] + if len(other_norm_layers) > 0: + print_log( + 'IN/GN stats will not be updated in PreciseHook.', + logger=logger, + level=logging.INFO) + + # Initialize BN stats storage for computing + # mean(mean(batch)) and mean(var(batch)) + running_means = [torch.zeros_like(bn.running_mean) for bn in bn_layers] + running_vars = [torch.zeros_like(bn.running_var) for bn in bn_layers] + # Remember momentum values + momentums = [bn.momentum for bn in bn_layers] + # Set momentum to 1.0 to compute BN stats that reflect the current batch + for bn in bn_layers: + bn.momentum = 1.0 + # Average the BN stats for each BN layer over the batches + if rank == 0: + prog_bar = mmcv.ProgressBar(num_iter) + + for data in itertools.islice(loader, num_iter): + model.train_step(data) + for i, bn in enumerate(bn_layers): + running_means[i] += bn.running_mean / num_iter + running_vars[i] += bn.running_var / num_iter + if rank == 0: + prog_bar.update() + + # Sync BN stats across GPUs (no reduction if 1 GPU used) + running_means = scaled_all_reduce(running_means, world_size) + running_vars = scaled_all_reduce(running_vars, world_size) + # Set BN stats and restore original momentum values + for i, bn in enumerate(bn_layers): + bn.running_mean = running_means[i] + bn.running_var = running_vars[i] + bn.momentum = momentums[i] + + +@HOOKS.register_module() +class PreciseBNHook(Hook): + """Precise BN hook. + + Recompute and update the batch norm stats to make them more precise. During + training both BN stats and the weight are changing after every iteration, + so the running average can not precisely reflect the actual stats of the + current model. + + With this hook, the BN stats are recomputed with fixed weights, to make the + running average more precise. Specifically, it computes the true average of + per-batch mean/variance instead of the running average. See Sec. 3 of the + paper `Rethinking Batch in BatchNorm ` + for details. + + This hook will update BN stats, so it should be executed before + ``CheckpointHook`` and ``EMAHook``, generally set its priority to + "ABOVE_NORMAL". + + Args: + num_samples (int): The number of samples to update the bn stats. + Defaults to 8192. + interval (int): Perform precise bn interval. Defaults to 1. + """ + + def __init__(self, num_samples: int = 8192, interval: int = 1) -> None: + assert interval > 0 and num_samples > 0 + + self.interval = interval + self.num_samples = num_samples + + def _perform_precise_bn(self, runner: EpochBasedRunner) -> None: + print_log( + f'Running Precise BN for {self.num_samples} items...', + logger=runner.logger) + update_bn_stats( + runner.model, + runner.data_loader, + self.num_samples, + logger=runner.logger) + print_log('Finish Precise BN, BN stats updated.', logger=runner.logger) + + def after_train_epoch(self, runner: EpochBasedRunner) -> None: + """Calculate prcise BN and broadcast BN stats across GPUs. + + Args: + runner (obj:`EpochBasedRunner`): runner object. + """ + assert isinstance(runner, EpochBasedRunner), \ + 'PreciseBN only supports `EpochBasedRunner` by now' + + # if by epoch, do perform precise every `self.interval` epochs; + if self.every_n_epochs(runner, self.interval): + self._perform_precise_bn(runner) diff --git a/openmmlab_test/mmclassification-0.24.1/mmcls/core/hook/wandblogger_hook.py b/openmmlab_test/mmclassification-0.24.1/mmcls/core/hook/wandblogger_hook.py new file mode 100644 index 00000000..61ccfe90 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/mmcls/core/hook/wandblogger_hook.py @@ -0,0 +1,340 @@ +# Copyright (c) OpenMMLab. All rights reserved. +import os.path as osp + +import numpy as np +from mmcv.runner import HOOKS, BaseRunner +from mmcv.runner.dist_utils import master_only +from mmcv.runner.hooks.checkpoint import CheckpointHook +from mmcv.runner.hooks.evaluation import DistEvalHook, EvalHook +from mmcv.runner.hooks.logger.wandb import WandbLoggerHook + + +@HOOKS.register_module() +class MMClsWandbHook(WandbLoggerHook): + """Enhanced Wandb logger hook for classification. + + Comparing with the :cls:`mmcv.runner.WandbLoggerHook`, this hook can not + only automatically log all information in ``log_buffer`` but also log + the following extra information. + + - **Checkpoints**: If ``log_checkpoint`` is True, the checkpoint saved at + every checkpoint interval will be saved as W&B Artifacts. This depends on + the : class:`mmcv.runner.CheckpointHook` whose priority is higher than + this hook. Please refer to + https://docs.wandb.ai/guides/artifacts/model-versioning to learn more + about model versioning with W&B Artifacts. + + - **Checkpoint Metadata**: If ``log_checkpoint_metadata`` is True, every + checkpoint artifact will have a metadata associated with it. The metadata + contains the evaluation metrics computed on validation data with that + checkpoint along with the current epoch/iter. It depends on + :class:`EvalHook` whose priority is higher than this hook. + + - **Evaluation**: At every interval, this hook logs the model prediction as + interactive W&B Tables. The number of samples logged is given by + ``num_eval_images``. Currently, this hook logs the predicted labels along + with the ground truth at every evaluation interval. This depends on the + :class:`EvalHook` whose priority is higher than this hook. Also note that + the data is just logged once and subsequent evaluation tables uses + reference to the logged data to save memory usage. Please refer to + https://docs.wandb.ai/guides/data-vis to learn more about W&B Tables. + + Here is a config example: + + .. code:: python + + checkpoint_config = dict(interval=10) + + # To log checkpoint metadata, the interval of checkpoint saving should + # be divisible by the interval of evaluation. + evaluation = dict(interval=5) + + log_config = dict( + ... + hooks=[ + ... + dict(type='MMClsWandbHook', + init_kwargs={ + 'entity': "YOUR_ENTITY", + 'project': "YOUR_PROJECT_NAME" + }, + log_checkpoint=True, + log_checkpoint_metadata=True, + num_eval_images=100) + ]) + + Args: + init_kwargs (dict): A dict passed to wandb.init to initialize + a W&B run. Please refer to https://docs.wandb.ai/ref/python/init + for possible key-value pairs. + interval (int): Logging interval (every k iterations). Defaults to 10. + log_checkpoint (bool): Save the checkpoint at every checkpoint interval + as W&B Artifacts. Use this for model versioning where each version + is a checkpoint. Defaults to False. + log_checkpoint_metadata (bool): Log the evaluation metrics computed + on the validation data with the checkpoint, along with current + epoch as a metadata to that checkpoint. + Defaults to True. + num_eval_images (int): The number of validation images to be logged. + If zero, the evaluation won't be logged. Defaults to 100. + """ + + def __init__(self, + init_kwargs=None, + interval=10, + log_checkpoint=False, + log_checkpoint_metadata=False, + num_eval_images=100, + **kwargs): + super(MMClsWandbHook, self).__init__(init_kwargs, interval, **kwargs) + + self.log_checkpoint = log_checkpoint + self.log_checkpoint_metadata = ( + log_checkpoint and log_checkpoint_metadata) + self.num_eval_images = num_eval_images + self.log_evaluation = (num_eval_images > 0) + self.ckpt_hook: CheckpointHook = None + self.eval_hook: EvalHook = None + + @master_only + def before_run(self, runner: BaseRunner): + super(MMClsWandbHook, self).before_run(runner) + + # Inspect CheckpointHook and EvalHook + for hook in runner.hooks: + if isinstance(hook, CheckpointHook): + self.ckpt_hook = hook + if isinstance(hook, (EvalHook, DistEvalHook)): + self.eval_hook = hook + + # Check conditions to log checkpoint + if self.log_checkpoint: + if self.ckpt_hook is None: + self.log_checkpoint = False + self.log_checkpoint_metadata = False + runner.logger.warning( + 'To log checkpoint in MMClsWandbHook, `CheckpointHook` is' + 'required, please check hooks in the runner.') + else: + self.ckpt_interval = self.ckpt_hook.interval + + # Check conditions to log evaluation + if self.log_evaluation or self.log_checkpoint_metadata: + if self.eval_hook is None: + self.log_evaluation = False + self.log_checkpoint_metadata = False + runner.logger.warning( + 'To log evaluation or checkpoint metadata in ' + 'MMClsWandbHook, `EvalHook` or `DistEvalHook` in mmcls ' + 'is required, please check whether the validation ' + 'is enabled.') + else: + self.eval_interval = self.eval_hook.interval + self.val_dataset = self.eval_hook.dataloader.dataset + if (self.log_evaluation + and self.num_eval_images > len(self.val_dataset)): + self.num_eval_images = len(self.val_dataset) + runner.logger.warning( + f'The num_eval_images ({self.num_eval_images}) is ' + 'greater than the total number of validation samples ' + f'({len(self.val_dataset)}). The complete validation ' + 'dataset will be logged.') + + # Check conditions to log checkpoint metadata + if self.log_checkpoint_metadata: + assert self.ckpt_interval % self.eval_interval == 0, \ + 'To log checkpoint metadata in MMClsWandbHook, the interval ' \ + f'of checkpoint saving ({self.ckpt_interval}) should be ' \ + 'divisible by the interval of evaluation ' \ + f'({self.eval_interval}).' + + # Initialize evaluation table + if self.log_evaluation: + # Initialize data table + self._init_data_table() + # Add ground truth to the data table + self._add_ground_truth() + # Log ground truth data + self._log_data_table() + + @master_only + def after_train_epoch(self, runner): + super(MMClsWandbHook, self).after_train_epoch(runner) + + if not self.by_epoch: + return + + # Save checkpoint and metadata + if (self.log_checkpoint + and self.every_n_epochs(runner, self.ckpt_interval) + or (self.ckpt_hook.save_last and self.is_last_epoch(runner))): + if self.log_checkpoint_metadata and self.eval_hook: + metadata = { + 'epoch': runner.epoch + 1, + **self._get_eval_results() + } + else: + metadata = None + aliases = [f'epoch_{runner.epoch+1}', 'latest'] + model_path = osp.join(self.ckpt_hook.out_dir, + f'epoch_{runner.epoch+1}.pth') + self._log_ckpt_as_artifact(model_path, aliases, metadata) + + # Save prediction table + if self.log_evaluation and self.eval_hook._should_evaluate(runner): + results = self.eval_hook.latest_results + # Initialize evaluation table + self._init_pred_table() + # Add predictions to evaluation table + self._add_predictions(results, runner.epoch + 1) + # Log the evaluation table + self._log_eval_table(runner.epoch + 1) + + @master_only + def after_train_iter(self, runner): + if self.get_mode(runner) == 'train': + # An ugly patch. The iter-based eval hook will call the + # `after_train_iter` method of all logger hooks before evaluation. + # Use this trick to skip that call. + # Don't call super method at first, it will clear the log_buffer + return super(MMClsWandbHook, self).after_train_iter(runner) + else: + super(MMClsWandbHook, self).after_train_iter(runner) + + if self.by_epoch: + return + + # Save checkpoint and metadata + if (self.log_checkpoint + and self.every_n_iters(runner, self.ckpt_interval) + or (self.ckpt_hook.save_last and self.is_last_iter(runner))): + if self.log_checkpoint_metadata and self.eval_hook: + metadata = { + 'iter': runner.iter + 1, + **self._get_eval_results() + } + else: + metadata = None + aliases = [f'iter_{runner.iter+1}', 'latest'] + model_path = osp.join(self.ckpt_hook.out_dir, + f'iter_{runner.iter+1}.pth') + self._log_ckpt_as_artifact(model_path, aliases, metadata) + + # Save prediction table + if self.log_evaluation and self.eval_hook._should_evaluate(runner): + results = self.eval_hook.latest_results + # Initialize evaluation table + self._init_pred_table() + # Log predictions + self._add_predictions(results, runner.iter + 1) + # Log the table + self._log_eval_table(runner.iter + 1) + + @master_only + def after_run(self, runner): + self.wandb.finish() + + def _log_ckpt_as_artifact(self, model_path, aliases, metadata=None): + """Log model checkpoint as W&B Artifact. + + Args: + model_path (str): Path of the checkpoint to log. + aliases (list): List of the aliases associated with this artifact. + metadata (dict, optional): Metadata associated with this artifact. + """ + model_artifact = self.wandb.Artifact( + f'run_{self.wandb.run.id}_model', type='model', metadata=metadata) + model_artifact.add_file(model_path) + self.wandb.log_artifact(model_artifact, aliases=aliases) + + def _get_eval_results(self): + """Get model evaluation results.""" + results = self.eval_hook.latest_results + eval_results = self.val_dataset.evaluate( + results, logger='silent', **self.eval_hook.eval_kwargs) + return eval_results + + def _init_data_table(self): + """Initialize the W&B Tables for validation data.""" + columns = ['image_name', 'image', 'ground_truth'] + self.data_table = self.wandb.Table(columns=columns) + + def _init_pred_table(self): + """Initialize the W&B Tables for model evaluation.""" + columns = ['epoch'] if self.by_epoch else ['iter'] + columns += ['image_name', 'image', 'ground_truth', 'prediction' + ] + list(self.val_dataset.CLASSES) + self.eval_table = self.wandb.Table(columns=columns) + + def _add_ground_truth(self): + # Get image loading pipeline + from mmcls.datasets.pipelines import LoadImageFromFile + img_loader = None + for t in self.val_dataset.pipeline.transforms: + if isinstance(t, LoadImageFromFile): + img_loader = t + + CLASSES = self.val_dataset.CLASSES + self.eval_image_indexs = np.arange(len(self.val_dataset)) + # Set seed so that same validation set is logged each time. + np.random.seed(42) + np.random.shuffle(self.eval_image_indexs) + self.eval_image_indexs = self.eval_image_indexs[:self.num_eval_images] + + for idx in self.eval_image_indexs: + img_info = self.val_dataset.data_infos[idx] + if img_loader is not None: + img_info = img_loader(img_info) + # Get image and convert from BGR to RGB + image = img_info['img'][..., ::-1] + else: + # For CIFAR dataset. + image = img_info['img'] + image_name = img_info.get('filename', f'img_{idx}') + gt_label = img_info.get('gt_label').item() + + self.data_table.add_data(image_name, self.wandb.Image(image), + CLASSES[gt_label]) + + def _add_predictions(self, results, idx): + table_idxs = self.data_table_ref.get_index() + assert len(table_idxs) == len(self.eval_image_indexs) + + for ndx, eval_image_index in enumerate(self.eval_image_indexs): + result = results[eval_image_index] + + self.eval_table.add_data( + idx, self.data_table_ref.data[ndx][0], + self.data_table_ref.data[ndx][1], + self.data_table_ref.data[ndx][2], + self.val_dataset.CLASSES[np.argmax(result)], *tuple(result)) + + def _log_data_table(self): + """Log the W&B Tables for validation data as artifact and calls + `use_artifact` on it so that the evaluation table can use the reference + of already uploaded images. + + This allows the data to be uploaded just once. + """ + data_artifact = self.wandb.Artifact('val', type='dataset') + data_artifact.add(self.data_table, 'val_data') + + self.wandb.run.use_artifact(data_artifact) + data_artifact.wait() + + self.data_table_ref = data_artifact.get('val_data') + + def _log_eval_table(self, idx): + """Log the W&B Tables for model evaluation. + + The table will be logged multiple times creating new version. Use this + to compare models at different intervals interactively. + """ + pred_artifact = self.wandb.Artifact( + f'run_{self.wandb.run.id}_pred', type='evaluation') + pred_artifact.add(self.eval_table, 'eval_data') + if self.by_epoch: + aliases = ['latest', f'epoch_{idx}'] + else: + aliases = ['latest', f'iter_{idx}'] + self.wandb.run.log_artifact(pred_artifact, aliases=aliases) diff --git a/openmmlab_test/mmclassification-0.24.1/mmcls/core/optimizers/__init__.py b/openmmlab_test/mmclassification-0.24.1/mmcls/core/optimizers/__init__.py new file mode 100644 index 00000000..aa9cc43e --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/mmcls/core/optimizers/__init__.py @@ -0,0 +1,6 @@ +# Copyright (c) OpenMMLab. All rights reserved. +from .lamb import Lamb + +__all__ = [ + 'Lamb', +] diff --git a/openmmlab_test/mmclassification-0.24.1/mmcls/core/optimizers/lamb.py b/openmmlab_test/mmclassification-0.24.1/mmcls/core/optimizers/lamb.py new file mode 100644 index 00000000..c65fbae2 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/mmcls/core/optimizers/lamb.py @@ -0,0 +1,227 @@ +"""PyTorch Lamb optimizer w/ behaviour similar to NVIDIA FusedLamb. + +This optimizer code was adapted from the following (starting with latest) +* https://github.com/HabanaAI/Model-References/blob/ +2b435114fe8e31f159b1d3063b8280ae37af7423/PyTorch/nlp/bert/pretraining/lamb.py +* https://github.com/NVIDIA/DeepLearningExamples/blob/master/PyTorch/ +LanguageModeling/Transformer-XL/pytorch/lamb.py +* https://github.com/cybertronai/pytorch-lamb + +Use FusedLamb if you can (GPU). The reason for including this variant of Lamb +is to have a version that is +similar in behaviour to APEX FusedLamb if you aren't using NVIDIA GPUs or +cannot install/use APEX. + +In addition to some cleanup, this Lamb impl has been modified to support +PyTorch XLA and has been tested on TPU. + +Original copyrights for above sources are below. + +Modifications Copyright 2021 Ross Wightman +""" +# Copyright (c) 2021, Habana Labs Ltd. All rights reserved. + +# Copyright (c) 2019-2020, NVIDIA CORPORATION. All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# MIT License +# +# Copyright (c) 2019 cybertronai +# +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documentation files (the "Software"), to deal +# in the Software without restriction, including without limitation the rights +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +# copies of the Software, and to permit persons to whom the Software is +# furnished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice shall be included in +# all copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +# SOFTWARE. +import math + +import torch +from mmcv.runner import OPTIMIZERS +from torch.optim import Optimizer + + +@OPTIMIZERS.register_module() +class Lamb(Optimizer): + """A pure pytorch variant of FuseLAMB (NvLamb variant) optimizer. + + This class is copied from `timm`_. The LAMB was proposed in `Large Batch + Optimization for Deep Learning - Training BERT in 76 minutes`_. + + .. _timm: + https://github.com/rwightman/pytorch-image-models/blob/master/timm/optim/lamb.py + .. _Large Batch Optimization for Deep Learning - Training BERT in 76 minutes: + https://arxiv.org/abs/1904.00962 + + Arguments: + params (iterable): iterable of parameters to optimize or dicts defining + parameter groups. + lr (float, optional): learning rate. (default: 1e-3) + betas (Tuple[float, float], optional): coefficients used for computing + running averages of gradient and its norm. (default: (0.9, 0.999)) + eps (float, optional): term added to the denominator to improve + numerical stability. (default: 1e-8) + weight_decay (float, optional): weight decay (L2 penalty) (default: 0) + grad_averaging (bool, optional): whether apply (1-beta2) to grad when + calculating running averages of gradient. (default: True) + max_grad_norm (float, optional): value used to clip global grad norm + (default: 1.0) + trust_clip (bool): enable LAMBC trust ratio clipping (default: False) + always_adapt (boolean, optional): Apply adaptive learning rate to 0.0 + weight decay parameter (default: False) + """ # noqa: E501 + + def __init__(self, + params, + lr=1e-3, + bias_correction=True, + betas=(0.9, 0.999), + eps=1e-6, + weight_decay=0.01, + grad_averaging=True, + max_grad_norm=1.0, + trust_clip=False, + always_adapt=False): + defaults = dict( + lr=lr, + bias_correction=bias_correction, + betas=betas, + eps=eps, + weight_decay=weight_decay, + grad_averaging=grad_averaging, + max_grad_norm=max_grad_norm, + trust_clip=trust_clip, + always_adapt=always_adapt) + super().__init__(params, defaults) + + @torch.no_grad() + def step(self, closure=None): + """Performs a single optimization step. + + Arguments: + closure (callable, optional): A closure that reevaluates the model + and returns the loss. + """ + loss = None + if closure is not None: + with torch.enable_grad(): + loss = closure() + + device = self.param_groups[0]['params'][0].device + one_tensor = torch.tensor( + 1.0, device=device + ) # because torch.where doesn't handle scalars correctly + global_grad_norm = torch.zeros(1, device=device) + for group in self.param_groups: + for p in group['params']: + if p.grad is None: + continue + grad = p.grad + if grad.is_sparse: + raise RuntimeError( + 'Lamb does not support sparse gradients, consider ' + 'SparseAdam instead.') + global_grad_norm.add_(grad.pow(2).sum()) + + global_grad_norm = torch.sqrt(global_grad_norm) + # FIXME it'd be nice to remove explicit tensor conversion of scalars + # when torch.where promotes + # scalar types properly https://github.com/pytorch/pytorch/issues/9190 + max_grad_norm = torch.tensor( + self.defaults['max_grad_norm'], device=device) + clip_global_grad_norm = torch.where(global_grad_norm > max_grad_norm, + global_grad_norm / max_grad_norm, + one_tensor) + + for group in self.param_groups: + bias_correction = 1 if group['bias_correction'] else 0 + beta1, beta2 = group['betas'] + grad_averaging = 1 if group['grad_averaging'] else 0 + beta3 = 1 - beta1 if grad_averaging else 1.0 + + # assume same step across group now to simplify things + # per parameter step can be easily support by making it tensor, or + # pass list into kernel + if 'step' in group: + group['step'] += 1 + else: + group['step'] = 1 + + if bias_correction: + bias_correction1 = 1 - beta1**group['step'] + bias_correction2 = 1 - beta2**group['step'] + else: + bias_correction1, bias_correction2 = 1.0, 1.0 + + for p in group['params']: + if p.grad is None: + continue + grad = p.grad.div_(clip_global_grad_norm) + state = self.state[p] + + # State initialization + if len(state) == 0: + # Exponential moving average of gradient valuesa + state['exp_avg'] = torch.zeros_like(p) + # Exponential moving average of squared gradient values + state['exp_avg_sq'] = torch.zeros_like(p) + + exp_avg, exp_avg_sq = state['exp_avg'], state['exp_avg_sq'] + + # Decay the first and second moment running average coefficient + exp_avg.mul_(beta1).add_(grad, alpha=beta3) # m_t + exp_avg_sq.mul_(beta2).addcmul_( + grad, grad, value=1 - beta2) # v_t + + denom = (exp_avg_sq.sqrt() / math.sqrt(bias_correction2)).add_( + group['eps']) + update = (exp_avg / bias_correction1).div_(denom) + + weight_decay = group['weight_decay'] + if weight_decay != 0: + update.add_(p, alpha=weight_decay) + + if weight_decay != 0 or group['always_adapt']: + # Layer-wise LR adaptation. By default, skip adaptation on + # parameters that are + # excluded from weight decay, unless always_adapt == True, + # then always enabled. + w_norm = p.norm(2.0) + g_norm = update.norm(2.0) + # FIXME nested where required since logical and/or not + # working in PT XLA + trust_ratio = torch.where( + w_norm > 0, + torch.where(g_norm > 0, w_norm / g_norm, one_tensor), + one_tensor, + ) + if group['trust_clip']: + # LAMBC trust clipping, upper bound fixed at one + trust_ratio = torch.minimum(trust_ratio, one_tensor) + update.mul_(trust_ratio) + + p.add_(update, alpha=-group['lr']) + + return loss diff --git a/openmmlab_test/mmclassification-0.24.1/mmcls/core/utils/__init__.py b/openmmlab_test/mmclassification-0.24.1/mmcls/core/utils/__init__.py new file mode 100644 index 00000000..7170f232 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/mmcls/core/utils/__init__.py @@ -0,0 +1,7 @@ +# Copyright (c) OpenMMLab. All rights reserved. +from .dist_utils import DistOptimizerHook, allreduce_grads, sync_random_seed +from .misc import multi_apply + +__all__ = [ + 'allreduce_grads', 'DistOptimizerHook', 'multi_apply', 'sync_random_seed' +] diff --git a/openmmlab_test/mmclassification-0.24.1/mmcls/core/utils/dist_utils.py b/openmmlab_test/mmclassification-0.24.1/mmcls/core/utils/dist_utils.py new file mode 100644 index 00000000..8912cea4 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/mmcls/core/utils/dist_utils.py @@ -0,0 +1,98 @@ +# Copyright (c) OpenMMLab. All rights reserved. +from collections import OrderedDict + +import numpy as np +import torch +import torch.distributed as dist +from mmcv.runner import OptimizerHook, get_dist_info +from torch._utils import (_flatten_dense_tensors, _take_tensors, + _unflatten_dense_tensors) + + +def _allreduce_coalesced(tensors, world_size, bucket_size_mb=-1): + if bucket_size_mb > 0: + bucket_size_bytes = bucket_size_mb * 1024 * 1024 + buckets = _take_tensors(tensors, bucket_size_bytes) + else: + buckets = OrderedDict() + for tensor in tensors: + tp = tensor.type() + if tp not in buckets: + buckets[tp] = [] + buckets[tp].append(tensor) + buckets = buckets.values() + + for bucket in buckets: + flat_tensors = _flatten_dense_tensors(bucket) + dist.all_reduce(flat_tensors) + flat_tensors.div_(world_size) + for tensor, synced in zip( + bucket, _unflatten_dense_tensors(flat_tensors, bucket)): + tensor.copy_(synced) + + +def allreduce_grads(params, coalesce=True, bucket_size_mb=-1): + grads = [ + param.grad.data for param in params + if param.requires_grad and param.grad is not None + ] + world_size = dist.get_world_size() + if coalesce: + _allreduce_coalesced(grads, world_size, bucket_size_mb) + else: + for tensor in grads: + dist.all_reduce(tensor.div_(world_size)) + + +class DistOptimizerHook(OptimizerHook): + + def __init__(self, grad_clip=None, coalesce=True, bucket_size_mb=-1): + self.grad_clip = grad_clip + self.coalesce = coalesce + self.bucket_size_mb = bucket_size_mb + + def after_train_iter(self, runner): + runner.optimizer.zero_grad() + runner.outputs['loss'].backward() + if self.grad_clip is not None: + self.clip_grads(runner.model.parameters()) + runner.optimizer.step() + + +def sync_random_seed(seed=None, device='cuda'): + """Make sure different ranks share the same seed. + + All workers must call this function, otherwise it will deadlock. + This method is generally used in `DistributedSampler`, + because the seed should be identical across all processes + in the distributed group. + + In distributed sampling, different ranks should sample non-overlapped + data in the dataset. Therefore, this function is used to make sure that + each rank shuffles the data indices in the same order based + on the same seed. Then different ranks could use different indices + to select non-overlapped data from the same data list. + + Args: + seed (int, Optional): The seed. Default to None. + device (str): The device where the seed will be put on. + Default to 'cuda'. + + Returns: + int: Seed to be used. + """ + if seed is None: + seed = np.random.randint(2**31) + assert isinstance(seed, int) + + rank, world_size = get_dist_info() + + if world_size == 1: + return seed + + if rank == 0: + random_num = torch.tensor(seed, dtype=torch.int32, device=device) + else: + random_num = torch.tensor(0, dtype=torch.int32, device=device) + dist.broadcast(random_num, src=0) + return random_num.item() diff --git a/openmmlab_test/mmclassification-speed-benchmark/mmcls/core/utils/misc.py b/openmmlab_test/mmclassification-0.24.1/mmcls/core/utils/misc.py similarity index 81% rename from openmmlab_test/mmclassification-speed-benchmark/mmcls/core/utils/misc.py rename to openmmlab_test/mmclassification-0.24.1/mmcls/core/utils/misc.py index be6a0b66..31f84637 100644 --- a/openmmlab_test/mmclassification-speed-benchmark/mmcls/core/utils/misc.py +++ b/openmmlab_test/mmclassification-0.24.1/mmcls/core/utils/misc.py @@ -1,3 +1,4 @@ +# Copyright (c) OpenMMLab. All rights reserved. from functools import partial diff --git a/openmmlab_test/mmclassification-0.24.1/mmcls/core/visualization/__init__.py b/openmmlab_test/mmclassification-0.24.1/mmcls/core/visualization/__init__.py new file mode 100644 index 00000000..bdd0c189 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/mmcls/core/visualization/__init__.py @@ -0,0 +1,8 @@ +# Copyright (c) OpenMMLab. All rights reserved. +from .image import (BaseFigureContextManager, ImshowInfosContextManager, + color_val_matplotlib, imshow_infos) + +__all__ = [ + 'BaseFigureContextManager', 'ImshowInfosContextManager', 'imshow_infos', + 'color_val_matplotlib' +] diff --git a/openmmlab_test/mmclassification-0.24.1/mmcls/core/visualization/image.py b/openmmlab_test/mmclassification-0.24.1/mmcls/core/visualization/image.py new file mode 100644 index 00000000..d0169748 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/mmcls/core/visualization/image.py @@ -0,0 +1,343 @@ +# Copyright (c) OpenMMLab. All rights reserved. +import matplotlib.pyplot as plt +import mmcv +import numpy as np +from matplotlib.backend_bases import CloseEvent + +# A small value +EPS = 1e-2 + + +def color_val_matplotlib(color): + """Convert various input in BGR order to normalized RGB matplotlib color + tuples, + + Args: + color (:obj:`mmcv.Color`/str/tuple/int/ndarray): Color inputs + + Returns: + tuple[float]: A tuple of 3 normalized floats indicating RGB channels. + """ + color = mmcv.color_val(color) + color = [color / 255 for color in color[::-1]] + return tuple(color) + + +class BaseFigureContextManager: + """Context Manager to reuse matplotlib figure. + + It provides a figure for saving and a figure for showing to support + different settings. + + Args: + axis (bool): Whether to show the axis lines. + fig_save_cfg (dict): Keyword parameters of figure for saving. + Defaults to empty dict. + fig_show_cfg (dict): Keyword parameters of figure for showing. + Defaults to empty dict. + """ + + def __init__(self, axis=False, fig_save_cfg={}, fig_show_cfg={}) -> None: + self.is_inline = 'inline' in plt.get_backend() + + # Because save and show need different figure size + # We set two figure and axes to handle save and show + self.fig_save: plt.Figure = None + self.fig_save_cfg = fig_save_cfg + self.ax_save: plt.Axes = None + + self.fig_show: plt.Figure = None + self.fig_show_cfg = fig_show_cfg + self.ax_show: plt.Axes = None + + self.axis = axis + + def __enter__(self): + if not self.is_inline: + # If use inline backend, we cannot control which figure to show, + # so disable the interactive fig_show, and put the initialization + # of fig_save to `prepare` function. + self._initialize_fig_save() + self._initialize_fig_show() + return self + + def _initialize_fig_save(self): + fig = plt.figure(**self.fig_save_cfg) + ax = fig.add_subplot() + + # remove white edges by set subplot margin + fig.subplots_adjust(left=0, right=1, bottom=0, top=1) + + self.fig_save, self.ax_save = fig, ax + + def _initialize_fig_show(self): + # fig_save will be resized to image size, only fig_show needs fig_size. + fig = plt.figure(**self.fig_show_cfg) + ax = fig.add_subplot() + + # remove white edges by set subplot margin + fig.subplots_adjust(left=0, right=1, bottom=0, top=1) + + self.fig_show, self.ax_show = fig, ax + + def __exit__(self, exc_type, exc_value, traceback): + if self.is_inline: + # If use inline backend, whether to close figure depends on if + # users want to show the image. + return + + plt.close(self.fig_save) + plt.close(self.fig_show) + + def prepare(self): + if self.is_inline: + # if use inline backend, just rebuild the fig_save. + self._initialize_fig_save() + self.ax_save.cla() + self.ax_save.axis(self.axis) + return + + # If users force to destroy the window, rebuild fig_show. + if not plt.fignum_exists(self.fig_show.number): + self._initialize_fig_show() + + # Clear all axes + self.ax_save.cla() + self.ax_save.axis(self.axis) + self.ax_show.cla() + self.ax_show.axis(self.axis) + + def wait_continue(self, timeout=0, continue_key=' ') -> int: + """Show the image and wait for the user's input. + + This implementation refers to + https://github.com/matplotlib/matplotlib/blob/v3.5.x/lib/matplotlib/_blocking_input.py + + Args: + timeout (int): If positive, continue after ``timeout`` seconds. + Defaults to 0. + continue_key (str): The key for users to continue. Defaults to + the space key. + + Returns: + int: If zero, means time out or the user pressed ``continue_key``, + and if one, means the user closed the show figure. + """ # noqa: E501 + if self.is_inline: + # If use inline backend, interactive input and timeout is no use. + return + + if self.fig_show.canvas.manager: + # Ensure that the figure is shown + self.fig_show.show() + + while True: + + # Connect the events to the handler function call. + event = None + + def handler(ev): + # Set external event variable + nonlocal event + # Qt backend may fire two events at the same time, + # use a condition to avoid missing close event. + event = ev if not isinstance(event, CloseEvent) else event + self.fig_show.canvas.stop_event_loop() + + cids = [ + self.fig_show.canvas.mpl_connect(name, handler) + for name in ('key_press_event', 'close_event') + ] + + try: + self.fig_show.canvas.start_event_loop(timeout) + finally: # Run even on exception like ctrl-c. + # Disconnect the callbacks. + for cid in cids: + self.fig_show.canvas.mpl_disconnect(cid) + + if isinstance(event, CloseEvent): + return 1 # Quit for close. + elif event is None or event.key == continue_key: + return 0 # Quit for continue. + + +class ImshowInfosContextManager(BaseFigureContextManager): + """Context Manager to reuse matplotlib figure and put infos on images. + + Args: + fig_size (tuple[int]): Size of the figure to show image. + + Examples: + >>> import mmcv + >>> from mmcls.core import visualization as vis + >>> img1 = mmcv.imread("./1.png") + >>> info1 = {'class': 'cat', 'label': 0} + >>> img2 = mmcv.imread("./2.png") + >>> info2 = {'class': 'dog', 'label': 1} + >>> with vis.ImshowInfosContextManager() as manager: + ... # Show img1 + ... manager.put_img_infos(img1, info1) + ... # Show img2 on the same figure and save output image. + ... manager.put_img_infos( + ... img2, info2, out_file='./2_out.png') + """ + + def __init__(self, fig_size=(15, 10)): + super().__init__( + axis=False, + # A proper dpi for image save with default font size. + fig_save_cfg=dict(frameon=False, dpi=36), + fig_show_cfg=dict(frameon=False, figsize=fig_size)) + + def _put_text(self, ax, text, x, y, text_color, font_size): + ax.text( + x, + y, + f'{text}', + bbox={ + 'facecolor': 'black', + 'alpha': 0.7, + 'pad': 0.2, + 'edgecolor': 'none', + 'boxstyle': 'round' + }, + color=text_color, + fontsize=font_size, + family='monospace', + verticalalignment='top', + horizontalalignment='left') + + def put_img_infos(self, + img, + infos, + text_color='white', + font_size=26, + row_width=20, + win_name='', + show=True, + wait_time=0, + out_file=None): + """Show image with extra information. + + Args: + img (str | ndarray): The image to be displayed. + infos (dict): Extra infos to display in the image. + text_color (:obj:`mmcv.Color`/str/tuple/int/ndarray): Extra infos + display color. Defaults to 'white'. + font_size (int): Extra infos display font size. Defaults to 26. + row_width (int): width between each row of results on the image. + win_name (str): The image title. Defaults to '' + show (bool): Whether to show the image. Defaults to True. + wait_time (int): How many seconds to display the image. + Defaults to 0. + out_file (Optional[str]): The filename to write the image. + Defaults to None. + + Returns: + np.ndarray: The image with extra infomations. + """ + self.prepare() + + text_color = color_val_matplotlib(text_color) + img = mmcv.imread(img).astype(np.uint8) + + x, y = 3, row_width // 2 + img = mmcv.bgr2rgb(img) + width, height = img.shape[1], img.shape[0] + img = np.ascontiguousarray(img) + + # add a small EPS to avoid precision lost due to matplotlib's + # truncation (https://github.com/matplotlib/matplotlib/issues/15363) + dpi = self.fig_save.get_dpi() + self.fig_save.set_size_inches((width + EPS) / dpi, + (height + EPS) / dpi) + + for k, v in infos.items(): + if isinstance(v, float): + v = f'{v:.2f}' + label_text = f'{k}: {v}' + self._put_text(self.ax_save, label_text, x, y, text_color, + font_size) + if show and not self.is_inline: + self._put_text(self.ax_show, label_text, x, y, text_color, + font_size) + y += row_width + + self.ax_save.imshow(img) + stream, _ = self.fig_save.canvas.print_to_buffer() + buffer = np.frombuffer(stream, dtype='uint8') + img_rgba = buffer.reshape(height, width, 4) + rgb, _ = np.split(img_rgba, [3], axis=2) + img_save = rgb.astype('uint8') + img_save = mmcv.rgb2bgr(img_save) + + if out_file is not None: + mmcv.imwrite(img_save, out_file) + + ret = 0 + if show and not self.is_inline: + # Reserve some space for the tip. + self.ax_show.set_title(win_name) + self.ax_show.set_ylim(height + 20) + self.ax_show.text( + width // 2, + height + 18, + 'Press SPACE to continue.', + ha='center', + fontsize=font_size) + self.ax_show.imshow(img) + + # Refresh canvas, necessary for Qt5 backend. + self.fig_show.canvas.draw() + + ret = self.wait_continue(timeout=wait_time) + elif (not show) and self.is_inline: + # If use inline backend, we use fig_save to show the image + # So we need to close it if users don't want to show. + plt.close(self.fig_save) + + return ret, img_save + + +def imshow_infos(img, + infos, + text_color='white', + font_size=26, + row_width=20, + win_name='', + show=True, + fig_size=(15, 10), + wait_time=0, + out_file=None): + """Show image with extra information. + + Args: + img (str | ndarray): The image to be displayed. + infos (dict): Extra infos to display in the image. + text_color (:obj:`mmcv.Color`/str/tuple/int/ndarray): Extra infos + display color. Defaults to 'white'. + font_size (int): Extra infos display font size. Defaults to 26. + row_width (int): width between each row of results on the image. + win_name (str): The image title. Defaults to '' + show (bool): Whether to show the image. Defaults to True. + fig_size (tuple): Image show figure size. Defaults to (15, 10). + wait_time (int): How many seconds to display the image. Defaults to 0. + out_file (Optional[str]): The filename to write the image. + Defaults to None. + + Returns: + np.ndarray: The image with extra infomations. + """ + with ImshowInfosContextManager(fig_size=fig_size) as manager: + _, img = manager.put_img_infos( + img, + infos, + text_color=text_color, + font_size=font_size, + row_width=row_width, + win_name=win_name, + show=show, + wait_time=wait_time, + out_file=out_file) + return img diff --git a/openmmlab_test/mmclassification-0.24.1/mmcls/datasets/__init__.py b/openmmlab_test/mmclassification-0.24.1/mmcls/datasets/__init__.py new file mode 100644 index 00000000..095077e2 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/mmcls/datasets/__init__.py @@ -0,0 +1,25 @@ +# Copyright (c) OpenMMLab. All rights reserved. +from .base_dataset import BaseDataset +from .builder import (DATASETS, PIPELINES, SAMPLERS, build_dataloader, + build_dataset, build_sampler) +from .cifar import CIFAR10, CIFAR100 +from .cub import CUB +from .custom import CustomDataset +from .dataset_wrappers import (ClassBalancedDataset, ConcatDataset, + KFoldDataset, RepeatDataset) +from .imagenet import ImageNet +from .imagenet21k import ImageNet21k +from .mnist import MNIST, FashionMNIST +from .multi_label import MultiLabelDataset +from .samplers import DistributedSampler, RepeatAugSampler +from .stanford_cars import StanfordCars +from .voc import VOC + +__all__ = [ + 'BaseDataset', 'ImageNet', 'CIFAR10', 'CIFAR100', 'MNIST', 'FashionMNIST', + 'VOC', 'MultiLabelDataset', 'build_dataloader', 'build_dataset', + 'DistributedSampler', 'ConcatDataset', 'RepeatDataset', + 'ClassBalancedDataset', 'DATASETS', 'PIPELINES', 'ImageNet21k', 'SAMPLERS', + 'build_sampler', 'RepeatAugSampler', 'KFoldDataset', 'CUB', + 'CustomDataset', 'StanfordCars' +] diff --git a/openmmlab_test/mmclassification-speed-benchmark/mmcls/datasets/base_dataset.py b/openmmlab_test/mmclassification-0.24.1/mmcls/datasets/base_dataset.py similarity index 81% rename from openmmlab_test/mmclassification-speed-benchmark/mmcls/datasets/base_dataset.py rename to openmmlab_test/mmclassification-0.24.1/mmcls/datasets/base_dataset.py index 5ccea9ff..fb6578ab 100644 --- a/openmmlab_test/mmclassification-speed-benchmark/mmcls/datasets/base_dataset.py +++ b/openmmlab_test/mmclassification-0.24.1/mmcls/datasets/base_dataset.py @@ -1,5 +1,9 @@ +# Copyright (c) OpenMMLab. All rights reserved. import copy +import os.path as osp from abc import ABCMeta, abstractmethod +from os import PathLike +from typing import List import mmcv import numpy as np @@ -10,6 +14,13 @@ from mmcls.models.losses import accuracy from .pipelines import Compose +def expanduser(path): + if isinstance(path, (str, PathLike)): + return osp.expanduser(path) + else: + return path + + class BaseDataset(Dataset, metaclass=ABCMeta): """Base dataset. @@ -32,12 +43,11 @@ class BaseDataset(Dataset, metaclass=ABCMeta): ann_file=None, test_mode=False): super(BaseDataset, self).__init__() - - self.ann_file = ann_file - self.data_prefix = data_prefix - self.test_mode = test_mode + self.data_prefix = expanduser(data_prefix) self.pipeline = Compose(pipeline) self.CLASSES = self.get_classes(classes) + self.ann_file = expanduser(ann_file) + self.test_mode = test_mode self.data_infos = self.load_annotations() @abstractmethod @@ -58,23 +68,23 @@ class BaseDataset(Dataset, metaclass=ABCMeta): """Get all ground-truth labels (categories). Returns: - list[int]: categories for all images. + np.ndarray: categories for all images. """ gt_labels = np.array([data['gt_label'] for data in self.data_infos]) return gt_labels - def get_cat_ids(self, idx): + def get_cat_ids(self, idx: int) -> List[int]: """Get category id by index. Args: idx (int): Index of data. Returns: - int: Image category of specified index. + cat_ids (List[int]): Image category of specified index. """ - return self.data_infos[idx]['gt_label'].astype(np.int) + return [int(self.data_infos[idx]['gt_label'])] def prepare_data(self, idx): results = copy.deepcopy(self.data_infos[idx]) @@ -89,6 +99,7 @@ class BaseDataset(Dataset, metaclass=ABCMeta): @classmethod def get_classes(cls, classes=None): """Get class names of current dataset. + Args: classes (Sequence[str] | str | None): If classes is None, use default CLASSES defined by builtin dataset. If classes is a @@ -104,7 +115,7 @@ class BaseDataset(Dataset, metaclass=ABCMeta): if isinstance(classes, str): # take it as a file path - class_names = mmcv.list_from_file(classes) + class_names = mmcv.list_from_file(expanduser(classes)) elif isinstance(classes, (tuple, list)): class_names = classes else: @@ -116,6 +127,7 @@ class BaseDataset(Dataset, metaclass=ABCMeta): results, metric='accuracy', metric_options=None, + indices=None, logger=None): """Evaluate the dataset. @@ -126,6 +138,8 @@ class BaseDataset(Dataset, metaclass=ABCMeta): metric_options (dict, optional): Options for calculating metrics. Allowed keys are 'topk', 'thrs' and 'average_mode'. Defaults to None. + indices (list, optional): The indices of samples corresponding to + the results. Defaults to None. logger (logging.Logger | str, optional): Logger used for printing related information during evaluation. Defaults to None. Returns: @@ -143,20 +157,25 @@ class BaseDataset(Dataset, metaclass=ABCMeta): eval_results = {} results = np.vstack(results) gt_labels = self.get_gt_labels() + if indices is not None: + gt_labels = gt_labels[indices] num_imgs = len(results) assert len(gt_labels) == num_imgs, 'dataset testing results should '\ 'be of the same length as gt_labels.' invalid_metrics = set(metrics) - set(allowed_metrics) if len(invalid_metrics) != 0: - raise ValueError(f'metirc {invalid_metrics} is not supported.') + raise ValueError(f'metric {invalid_metrics} is not supported.') topk = metric_options.get('topk', (1, 5)) thrs = metric_options.get('thrs') average_mode = metric_options.get('average_mode', 'macro') if 'accuracy' in metrics: - acc = accuracy(results, gt_labels, topk=topk, thrs=thrs) + if thrs is not None: + acc = accuracy(results, gt_labels, topk=topk, thrs=thrs) + else: + acc = accuracy(results, gt_labels, topk=topk) if isinstance(topk, tuple): eval_results_ = { f'accuracy_top-{k}': a @@ -182,8 +201,12 @@ class BaseDataset(Dataset, metaclass=ABCMeta): precision_recall_f1_keys = ['precision', 'recall', 'f1_score'] if len(set(metrics) & set(precision_recall_f1_keys)) != 0: - precision_recall_f1_values = precision_recall_f1( - results, gt_labels, average_mode=average_mode, thrs=thrs) + if thrs is not None: + precision_recall_f1_values = precision_recall_f1( + results, gt_labels, average_mode=average_mode, thrs=thrs) + else: + precision_recall_f1_values = precision_recall_f1( + results, gt_labels, average_mode=average_mode) for key, values in zip(precision_recall_f1_keys, precision_recall_f1_values): if key in metrics: diff --git a/openmmlab_test/mmclassification-0.24.1/mmcls/datasets/builder.py b/openmmlab_test/mmclassification-0.24.1/mmcls/datasets/builder.py new file mode 100644 index 00000000..1b626b4a --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/mmcls/datasets/builder.py @@ -0,0 +1,183 @@ +# Copyright (c) OpenMMLab. All rights reserved. +import copy +import platform +import random +from functools import partial + +import numpy as np +import torch +from mmcv.parallel import collate +from mmcv.runner import get_dist_info +from mmcv.utils import Registry, build_from_cfg, digit_version +from torch.utils.data import DataLoader + +try: + from mmcv.utils import IS_IPU_AVAILABLE +except ImportError: + IS_IPU_AVAILABLE = False + +if platform.system() != 'Windows': + # https://github.com/pytorch/pytorch/issues/973 + import resource + rlimit = resource.getrlimit(resource.RLIMIT_NOFILE) + hard_limit = rlimit[1] + soft_limit = min(4096, hard_limit) + resource.setrlimit(resource.RLIMIT_NOFILE, (soft_limit, hard_limit)) + +DATASETS = Registry('dataset') +PIPELINES = Registry('pipeline') +SAMPLERS = Registry('sampler') + + +def build_dataset(cfg, default_args=None): + from .dataset_wrappers import (ClassBalancedDataset, ConcatDataset, + KFoldDataset, RepeatDataset) + if isinstance(cfg, (list, tuple)): + dataset = ConcatDataset([build_dataset(c, default_args) for c in cfg]) + elif cfg['type'] == 'ConcatDataset': + dataset = ConcatDataset( + [build_dataset(c, default_args) for c in cfg['datasets']], + separate_eval=cfg.get('separate_eval', True)) + elif cfg['type'] == 'RepeatDataset': + dataset = RepeatDataset( + build_dataset(cfg['dataset'], default_args), cfg['times']) + elif cfg['type'] == 'ClassBalancedDataset': + dataset = ClassBalancedDataset( + build_dataset(cfg['dataset'], default_args), cfg['oversample_thr']) + elif cfg['type'] == 'KFoldDataset': + cp_cfg = copy.deepcopy(cfg) + if cp_cfg.get('test_mode', None) is None: + cp_cfg['test_mode'] = (default_args or {}).pop('test_mode', False) + cp_cfg['dataset'] = build_dataset(cp_cfg['dataset'], default_args) + cp_cfg.pop('type') + dataset = KFoldDataset(**cp_cfg) + else: + dataset = build_from_cfg(cfg, DATASETS, default_args) + + return dataset + + +def build_dataloader(dataset, + samples_per_gpu, + workers_per_gpu, + num_gpus=1, + dist=True, + shuffle=True, + round_up=True, + seed=None, + pin_memory=True, + persistent_workers=True, + sampler_cfg=None, + **kwargs): + """Build PyTorch DataLoader. + + In distributed training, each GPU/process has a dataloader. + In non-distributed training, there is only one dataloader for all GPUs. + + Args: + dataset (Dataset): A PyTorch dataset. + samples_per_gpu (int): Number of training samples on each GPU, i.e., + batch size of each GPU. + workers_per_gpu (int): How many subprocesses to use for data loading + for each GPU. + num_gpus (int): Number of GPUs. Only used in non-distributed training. + dist (bool): Distributed training/test or not. Default: True. + shuffle (bool): Whether to shuffle the data at every epoch. + Default: True. + round_up (bool): Whether to round up the length of dataset by adding + extra samples to make it evenly divisible. Default: True. + pin_memory (bool): Whether to use pin_memory in DataLoader. + Default: True + persistent_workers (bool): If True, the data loader will not shutdown + the worker processes after a dataset has been consumed once. + This allows to maintain the workers Dataset instances alive. + The argument also has effect in PyTorch>=1.7.0. + Default: True + sampler_cfg (dict): sampler configuration to override the default + sampler + kwargs: any keyword argument to be used to initialize DataLoader + + Returns: + DataLoader: A PyTorch dataloader. + """ + rank, world_size = get_dist_info() + + # Custom sampler logic + if sampler_cfg: + # shuffle=False when val and test + sampler_cfg.update(shuffle=shuffle) + sampler = build_sampler( + sampler_cfg, + default_args=dict( + dataset=dataset, num_replicas=world_size, rank=rank, + seed=seed)) + # Default sampler logic + elif dist: + sampler = build_sampler( + dict( + type='DistributedSampler', + dataset=dataset, + num_replicas=world_size, + rank=rank, + shuffle=shuffle, + round_up=round_up, + seed=seed)) + else: + sampler = None + + # If sampler exists, turn off dataloader shuffle + if sampler is not None: + shuffle = False + + if dist: + batch_size = samples_per_gpu + num_workers = workers_per_gpu + else: + batch_size = num_gpus * samples_per_gpu + num_workers = num_gpus * workers_per_gpu + + init_fn = partial( + worker_init_fn, num_workers=num_workers, rank=rank, + seed=seed) if seed is not None else None + + if digit_version(torch.__version__) >= digit_version('1.8.0'): + kwargs['persistent_workers'] = persistent_workers + if IS_IPU_AVAILABLE: + from mmcv.device.ipu import IPUDataLoader + data_loader = IPUDataLoader( + dataset, + None, + batch_size=samples_per_gpu, + num_workers=num_workers, + shuffle=shuffle, + worker_init_fn=init_fn, + **kwargs) + else: + data_loader = DataLoader( + dataset, + batch_size=batch_size, + sampler=sampler, + num_workers=num_workers, + collate_fn=partial(collate, samples_per_gpu=samples_per_gpu), + pin_memory=pin_memory, + shuffle=shuffle, + worker_init_fn=init_fn, + **kwargs) + + return data_loader + + +def worker_init_fn(worker_id, num_workers, rank, seed): + # The seed of each worker equals to + # num_worker * rank + worker_id + user_seed + worker_seed = num_workers * rank + worker_id + seed + np.random.seed(worker_seed) + random.seed(worker_seed) + torch.manual_seed(worker_seed) + + +def build_sampler(cfg, default_args=None): + if cfg is None: + return None + else: + return build_from_cfg(cfg, SAMPLERS, default_args=default_args) diff --git a/openmmlab_test/mmclassification-speed-benchmark/mmcls/datasets/cifar.py b/openmmlab_test/mmclassification-0.24.1/mmcls/datasets/cifar.py similarity index 76% rename from openmmlab_test/mmclassification-speed-benchmark/mmcls/datasets/cifar.py rename to openmmlab_test/mmclassification-0.24.1/mmcls/datasets/cifar.py index f3159ea8..453b8d9d 100644 --- a/openmmlab_test/mmclassification-speed-benchmark/mmcls/datasets/cifar.py +++ b/openmmlab_test/mmclassification-0.24.1/mmcls/datasets/cifar.py @@ -1,3 +1,4 @@ +# Copyright (c) OpenMMLab. All rights reserved. import os import os.path import pickle @@ -16,8 +17,8 @@ class CIFAR10(BaseDataset): """`CIFAR10 `_ Dataset. This implementation is modified from - https://github.com/pytorch/vision/blob/master/torchvision/datasets/cifar.py # noqa: E501 - """ + https://github.com/pytorch/vision/blob/master/torchvision/datasets/cifar.py + """ # noqa: E501 base_folder = 'cifar-10-batches-py' url = 'https://www.cs.toronto.edu/~kriz/cifar-10-python.tar.gz' @@ -39,6 +40,10 @@ class CIFAR10(BaseDataset): 'key': 'label_names', 'md5': '5ff9c542aee3614f3951f8cda6e48888', } + CLASSES = [ + 'airplane', 'automobile', 'bird', 'cat', 'deer', 'dog', 'frog', + 'horse', 'ship', 'truck' + ] def load_annotations(self): @@ -130,3 +135,21 @@ class CIFAR100(CIFAR10): 'key': 'fine_label_names', 'md5': '7973b15100ade9c7d40fb424638fde48', } + CLASSES = [ + 'apple', 'aquarium_fish', 'baby', 'bear', 'beaver', 'bed', 'bee', + 'beetle', 'bicycle', 'bottle', 'bowl', 'boy', 'bridge', 'bus', + 'butterfly', 'camel', 'can', 'castle', 'caterpillar', 'cattle', + 'chair', 'chimpanzee', 'clock', 'cloud', 'cockroach', 'couch', 'crab', + 'crocodile', 'cup', 'dinosaur', 'dolphin', 'elephant', 'flatfish', + 'forest', 'fox', 'girl', 'hamster', 'house', 'kangaroo', 'keyboard', + 'lamp', 'lawn_mower', 'leopard', 'lion', 'lizard', 'lobster', 'man', + 'maple_tree', 'motorcycle', 'mountain', 'mouse', 'mushroom', + 'oak_tree', 'orange', 'orchid', 'otter', 'palm_tree', 'pear', + 'pickup_truck', 'pine_tree', 'plain', 'plate', 'poppy', 'porcupine', + 'possum', 'rabbit', 'raccoon', 'ray', 'road', 'rocket', 'rose', 'sea', + 'seal', 'shark', 'shrew', 'skunk', 'skyscraper', 'snail', 'snake', + 'spider', 'squirrel', 'streetcar', 'sunflower', 'sweet_pepper', + 'table', 'tank', 'telephone', 'television', 'tiger', 'tractor', + 'train', 'trout', 'tulip', 'turtle', 'wardrobe', 'whale', + 'willow_tree', 'wolf', 'woman', 'worm' + ] diff --git a/openmmlab_test/mmclassification-0.24.1/mmcls/datasets/cub.py b/openmmlab_test/mmclassification-0.24.1/mmcls/datasets/cub.py new file mode 100644 index 00000000..6199bc7a --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/mmcls/datasets/cub.py @@ -0,0 +1,129 @@ +# Copyright (c) OpenMMLab. All rights reserved. +import numpy as np + +from .base_dataset import BaseDataset +from .builder import DATASETS + + +@DATASETS.register_module() +class CUB(BaseDataset): + """The CUB-200-2011 Dataset. + + Support the `CUB-200-2011 `_ Dataset. + Comparing with the `CUB-200 `_ Dataset, + there are much more pictures in `CUB-200-2011`. + + Args: + ann_file (str): the annotation file. + images.txt in CUB. + image_class_labels_file (str): the label file. + image_class_labels.txt in CUB. + train_test_split_file (str): the split file. + train_test_split_file.txt in CUB. + """ # noqa: E501 + + CLASSES = [ + 'Black_footed_Albatross', 'Laysan_Albatross', 'Sooty_Albatross', + 'Groove_billed_Ani', 'Crested_Auklet', 'Least_Auklet', + 'Parakeet_Auklet', 'Rhinoceros_Auklet', 'Brewer_Blackbird', + 'Red_winged_Blackbird', 'Rusty_Blackbird', 'Yellow_headed_Blackbird', + 'Bobolink', 'Indigo_Bunting', 'Lazuli_Bunting', 'Painted_Bunting', + 'Cardinal', 'Spotted_Catbird', 'Gray_Catbird', 'Yellow_breasted_Chat', + 'Eastern_Towhee', 'Chuck_will_Widow', 'Brandt_Cormorant', + 'Red_faced_Cormorant', 'Pelagic_Cormorant', 'Bronzed_Cowbird', + 'Shiny_Cowbird', 'Brown_Creeper', 'American_Crow', 'Fish_Crow', + 'Black_billed_Cuckoo', 'Mangrove_Cuckoo', 'Yellow_billed_Cuckoo', + 'Gray_crowned_Rosy_Finch', 'Purple_Finch', 'Northern_Flicker', + 'Acadian_Flycatcher', 'Great_Crested_Flycatcher', 'Least_Flycatcher', + 'Olive_sided_Flycatcher', 'Scissor_tailed_Flycatcher', + 'Vermilion_Flycatcher', 'Yellow_bellied_Flycatcher', 'Frigatebird', + 'Northern_Fulmar', 'Gadwall', 'American_Goldfinch', + 'European_Goldfinch', 'Boat_tailed_Grackle', 'Eared_Grebe', + 'Horned_Grebe', 'Pied_billed_Grebe', 'Western_Grebe', 'Blue_Grosbeak', + 'Evening_Grosbeak', 'Pine_Grosbeak', 'Rose_breasted_Grosbeak', + 'Pigeon_Guillemot', 'California_Gull', 'Glaucous_winged_Gull', + 'Heermann_Gull', 'Herring_Gull', 'Ivory_Gull', 'Ring_billed_Gull', + 'Slaty_backed_Gull', 'Western_Gull', 'Anna_Hummingbird', + 'Ruby_throated_Hummingbird', 'Rufous_Hummingbird', 'Green_Violetear', + 'Long_tailed_Jaeger', 'Pomarine_Jaeger', 'Blue_Jay', 'Florida_Jay', + 'Green_Jay', 'Dark_eyed_Junco', 'Tropical_Kingbird', 'Gray_Kingbird', + 'Belted_Kingfisher', 'Green_Kingfisher', 'Pied_Kingfisher', + 'Ringed_Kingfisher', 'White_breasted_Kingfisher', + 'Red_legged_Kittiwake', 'Horned_Lark', 'Pacific_Loon', 'Mallard', + 'Western_Meadowlark', 'Hooded_Merganser', 'Red_breasted_Merganser', + 'Mockingbird', 'Nighthawk', 'Clark_Nutcracker', + 'White_breasted_Nuthatch', 'Baltimore_Oriole', 'Hooded_Oriole', + 'Orchard_Oriole', 'Scott_Oriole', 'Ovenbird', 'Brown_Pelican', + 'White_Pelican', 'Western_Wood_Pewee', 'Sayornis', 'American_Pipit', + 'Whip_poor_Will', 'Horned_Puffin', 'Common_Raven', + 'White_necked_Raven', 'American_Redstart', 'Geococcyx', + 'Loggerhead_Shrike', 'Great_Grey_Shrike', 'Baird_Sparrow', + 'Black_throated_Sparrow', 'Brewer_Sparrow', 'Chipping_Sparrow', + 'Clay_colored_Sparrow', 'House_Sparrow', 'Field_Sparrow', + 'Fox_Sparrow', 'Grasshopper_Sparrow', 'Harris_Sparrow', + 'Henslow_Sparrow', 'Le_Conte_Sparrow', 'Lincoln_Sparrow', + 'Nelson_Sharp_tailed_Sparrow', 'Savannah_Sparrow', 'Seaside_Sparrow', + 'Song_Sparrow', 'Tree_Sparrow', 'Vesper_Sparrow', + 'White_crowned_Sparrow', 'White_throated_Sparrow', + 'Cape_Glossy_Starling', 'Bank_Swallow', 'Barn_Swallow', + 'Cliff_Swallow', 'Tree_Swallow', 'Scarlet_Tanager', 'Summer_Tanager', + 'Artic_Tern', 'Black_Tern', 'Caspian_Tern', 'Common_Tern', + 'Elegant_Tern', 'Forsters_Tern', 'Least_Tern', 'Green_tailed_Towhee', + 'Brown_Thrasher', 'Sage_Thrasher', 'Black_capped_Vireo', + 'Blue_headed_Vireo', 'Philadelphia_Vireo', 'Red_eyed_Vireo', + 'Warbling_Vireo', 'White_eyed_Vireo', 'Yellow_throated_Vireo', + 'Bay_breasted_Warbler', 'Black_and_white_Warbler', + 'Black_throated_Blue_Warbler', 'Blue_winged_Warbler', 'Canada_Warbler', + 'Cape_May_Warbler', 'Cerulean_Warbler', 'Chestnut_sided_Warbler', + 'Golden_winged_Warbler', 'Hooded_Warbler', 'Kentucky_Warbler', + 'Magnolia_Warbler', 'Mourning_Warbler', 'Myrtle_Warbler', + 'Nashville_Warbler', 'Orange_crowned_Warbler', 'Palm_Warbler', + 'Pine_Warbler', 'Prairie_Warbler', 'Prothonotary_Warbler', + 'Swainson_Warbler', 'Tennessee_Warbler', 'Wilson_Warbler', + 'Worm_eating_Warbler', 'Yellow_Warbler', 'Northern_Waterthrush', + 'Louisiana_Waterthrush', 'Bohemian_Waxwing', 'Cedar_Waxwing', + 'American_Three_toed_Woodpecker', 'Pileated_Woodpecker', + 'Red_bellied_Woodpecker', 'Red_cockaded_Woodpecker', + 'Red_headed_Woodpecker', 'Downy_Woodpecker', 'Bewick_Wren', + 'Cactus_Wren', 'Carolina_Wren', 'House_Wren', 'Marsh_Wren', + 'Rock_Wren', 'Winter_Wren', 'Common_Yellowthroat' + ] + + def __init__(self, *args, ann_file, image_class_labels_file, + train_test_split_file, **kwargs): + self.image_class_labels_file = image_class_labels_file + self.train_test_split_file = train_test_split_file + super(CUB, self).__init__(*args, ann_file=ann_file, **kwargs) + + def load_annotations(self): + with open(self.ann_file) as f: + samples = [x.strip().split(' ')[1] for x in f.readlines()] + + with open(self.image_class_labels_file) as f: + gt_labels = [ + # in the official CUB-200-2011 dataset, labels in + # image_class_labels_file are started from 1, so + # here we need to '- 1' to let them start from 0. + int(x.strip().split(' ')[1]) - 1 for x in f.readlines() + ] + + with open(self.train_test_split_file) as f: + splits = [int(x.strip().split(' ')[1]) for x in f.readlines()] + + assert len(samples) == len(gt_labels) == len(splits),\ + f'samples({len(samples)}), gt_labels({len(gt_labels)}) and ' \ + f'splits({len(splits)}) should have same length.' + + data_infos = [] + for filename, gt_label, split in zip(samples, gt_labels, splits): + if split and self.test_mode: + # skip train samples when test_mode=True + continue + elif not split and not self.test_mode: + # skip test samples when test_mode=False + continue + info = {'img_prefix': self.data_prefix} + info['img_info'] = {'filename': filename} + info['gt_label'] = np.array(gt_label, dtype=np.int64) + data_infos.append(info) + return data_infos diff --git a/openmmlab_test/mmclassification-0.24.1/mmcls/datasets/custom.py b/openmmlab_test/mmclassification-0.24.1/mmcls/datasets/custom.py new file mode 100644 index 00000000..61458f63 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/mmcls/datasets/custom.py @@ -0,0 +1,229 @@ +# Copyright (c) OpenMMLab. All rights reserved. +import warnings +from typing import Callable, Dict, List, Optional, Sequence, Tuple, Union + +import mmcv +import numpy as np +from mmcv import FileClient + +from .base_dataset import BaseDataset +from .builder import DATASETS + + +def find_folders(root: str, + file_client: FileClient) -> Tuple[List[str], Dict[str, int]]: + """Find classes by folders under a root. + + Args: + root (string): root directory of folders + + Returns: + Tuple[List[str], Dict[str, int]]: + + - folders: The name of sub folders under the root. + - folder_to_idx: The map from folder name to class idx. + """ + folders = list( + file_client.list_dir_or_file( + root, + list_dir=True, + list_file=False, + recursive=False, + )) + folders.sort() + folder_to_idx = {folders[i]: i for i in range(len(folders))} + return folders, folder_to_idx + + +def get_samples(root: str, folder_to_idx: Dict[str, int], + is_valid_file: Callable, file_client: FileClient): + """Make dataset by walking all images under a root. + + Args: + root (string): root directory of folders + folder_to_idx (dict): the map from class name to class idx + is_valid_file (Callable): A function that takes path of a file + and check if the file is a valid sample file. + + Returns: + Tuple[list, set]: + + - samples: a list of tuple where each element is (image, class_idx) + - empty_folders: The folders don't have any valid files. + """ + samples = [] + available_classes = set() + + for folder_name in sorted(list(folder_to_idx.keys())): + _dir = file_client.join_path(root, folder_name) + files = list( + file_client.list_dir_or_file( + _dir, + list_dir=False, + list_file=True, + recursive=True, + )) + for file in sorted(list(files)): + if is_valid_file(file): + path = file_client.join_path(folder_name, file) + item = (path, folder_to_idx[folder_name]) + samples.append(item) + available_classes.add(folder_name) + + empty_folders = set(folder_to_idx.keys()) - available_classes + + return samples, empty_folders + + +@DATASETS.register_module() +class CustomDataset(BaseDataset): + """Custom dataset for classification. + + The dataset supports two kinds of annotation format. + + 1. An annotation file is provided, and each line indicates a sample: + + The sample files: :: + + data_prefix/ + ├── folder_1 + │ ├── xxx.png + │ ├── xxy.png + │ └── ... + └── folder_2 + ├── 123.png + ├── nsdf3.png + └── ... + + The annotation file (the first column is the image path and the second + column is the index of category): :: + + folder_1/xxx.png 0 + folder_1/xxy.png 1 + folder_2/123.png 5 + folder_2/nsdf3.png 3 + ... + + Please specify the name of categories by the argument ``classes``. + + 2. The samples are arranged in the specific way: :: + + data_prefix/ + ├── class_x + │ ├── xxx.png + │ ├── xxy.png + │ └── ... + │ └── xxz.png + └── class_y + ├── 123.png + ├── nsdf3.png + ├── ... + └── asd932_.png + + If the ``ann_file`` is specified, the dataset will be generated by the + first way, otherwise, try the second way. + + Args: + data_prefix (str): The path of data directory. + pipeline (Sequence[dict]): A list of dict, where each element + represents a operation defined in :mod:`mmcls.datasets.pipelines`. + Defaults to an empty tuple. + classes (str | Sequence[str], optional): Specify names of classes. + + - If is string, it should be a file path, and the every line of + the file is a name of a class. + - If is a sequence of string, every item is a name of class. + - If is None, use ``cls.CLASSES`` or the names of sub folders + (If use the second way to arrange samples). + + Defaults to None. + ann_file (str, optional): The annotation file. If is string, read + samples paths from the ann_file. If is None, find samples in + ``data_prefix``. Defaults to None. + extensions (Sequence[str]): A sequence of allowed extensions. Defaults + to ('.jpg', '.jpeg', '.png', '.ppm', '.bmp', '.pgm', '.tif'). + test_mode (bool): In train mode or test mode. It's only a mark and + won't be used in this class. Defaults to False. + file_client_args (dict, optional): Arguments to instantiate a + FileClient. See :class:`mmcv.fileio.FileClient` for details. + If None, automatically inference from the specified path. + Defaults to None. + """ + + def __init__(self, + data_prefix: str, + pipeline: Sequence = (), + classes: Union[str, Sequence[str], None] = None, + ann_file: Optional[str] = None, + extensions: Sequence[str] = ('.jpg', '.jpeg', '.png', '.ppm', + '.bmp', '.pgm', '.tif'), + test_mode: bool = False, + file_client_args: Optional[dict] = None): + self.extensions = tuple(set([i.lower() for i in extensions])) + self.file_client_args = file_client_args + + super().__init__( + data_prefix=data_prefix, + pipeline=pipeline, + classes=classes, + ann_file=ann_file, + test_mode=test_mode) + + def _find_samples(self): + """find samples from ``data_prefix``.""" + file_client = FileClient.infer_client(self.file_client_args, + self.data_prefix) + classes, folder_to_idx = find_folders(self.data_prefix, file_client) + samples, empty_classes = get_samples( + self.data_prefix, + folder_to_idx, + is_valid_file=self.is_valid_file, + file_client=file_client, + ) + + if len(samples) == 0: + raise RuntimeError( + f'Found 0 files in subfolders of: {self.data_prefix}. ' + f'Supported extensions are: {",".join(self.extensions)}') + + if self.CLASSES is not None: + assert len(self.CLASSES) == len(classes), \ + f"The number of subfolders ({len(classes)}) doesn't match " \ + f'the number of specified classes ({len(self.CLASSES)}). ' \ + 'Please check the data folder.' + else: + self.CLASSES = classes + + if empty_classes: + warnings.warn( + 'Found no valid file in the folder ' + f'{", ".join(empty_classes)}. ' + f"Supported extensions are: {', '.join(self.extensions)}", + UserWarning) + + self.folder_to_idx = folder_to_idx + + return samples + + def load_annotations(self): + """Load image paths and gt_labels.""" + if self.ann_file is None: + samples = self._find_samples() + elif isinstance(self.ann_file, str): + lines = mmcv.list_from_file( + self.ann_file, file_client_args=self.file_client_args) + samples = [x.strip().rsplit(' ', 1) for x in lines] + else: + raise TypeError('ann_file must be a str or None') + + data_infos = [] + for filename, gt_label in samples: + info = {'img_prefix': self.data_prefix} + info['img_info'] = {'filename': filename} + info['gt_label'] = np.array(gt_label, dtype=np.int64) + data_infos.append(info) + return data_infos + + def is_valid_file(self, filename: str) -> bool: + """Check if a file is a valid sample.""" + return filename.lower().endswith(self.extensions) diff --git a/openmmlab_test/mmclassification-0.24.1/mmcls/datasets/dataset_wrappers.py b/openmmlab_test/mmclassification-0.24.1/mmcls/datasets/dataset_wrappers.py new file mode 100644 index 00000000..93de60f6 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/mmcls/datasets/dataset_wrappers.py @@ -0,0 +1,329 @@ +# Copyright (c) OpenMMLab. All rights reserved. +import bisect +import math +from collections import defaultdict + +import numpy as np +from mmcv.utils import print_log +from torch.utils.data.dataset import ConcatDataset as _ConcatDataset + +from .builder import DATASETS + + +@DATASETS.register_module() +class ConcatDataset(_ConcatDataset): + """A wrapper of concatenated dataset. + + Same as :obj:`torch.utils.data.dataset.ConcatDataset`, but + add `get_cat_ids` function. + + Args: + datasets (list[:obj:`BaseDataset`]): A list of datasets. + separate_eval (bool): Whether to evaluate the results + separately if it is used as validation dataset. + Defaults to True. + """ + + def __init__(self, datasets, separate_eval=True): + super(ConcatDataset, self).__init__(datasets) + self.separate_eval = separate_eval + + self.CLASSES = datasets[0].CLASSES + + if not separate_eval: + if len(set([type(ds) for ds in datasets])) != 1: + raise NotImplementedError( + 'To evaluate a concat dataset non-separately, ' + 'all the datasets should have same types') + + def get_cat_ids(self, idx): + if idx < 0: + if -idx > len(self): + raise ValueError( + 'absolute value of index should not exceed dataset length') + idx = len(self) + idx + dataset_idx = bisect.bisect_right(self.cumulative_sizes, idx) + if dataset_idx == 0: + sample_idx = idx + else: + sample_idx = idx - self.cumulative_sizes[dataset_idx - 1] + return self.datasets[dataset_idx].get_cat_ids(sample_idx) + + def evaluate(self, results, *args, indices=None, logger=None, **kwargs): + """Evaluate the results. + + Args: + results (list[list | tuple]): Testing results of the dataset. + indices (list, optional): The indices of samples corresponding to + the results. It's unavailable on ConcatDataset. + Defaults to None. + logger (logging.Logger | str, optional): Logger used for printing + related information during evaluation. Defaults to None. + + Returns: + dict[str: float]: AP results of the total dataset or each separate + dataset if `self.separate_eval=True`. + """ + if indices is not None: + raise NotImplementedError( + 'Use indices to evaluate speific samples in a ConcatDataset ' + 'is not supported by now.') + + assert len(results) == len(self), \ + ('Dataset and results have different sizes: ' + f'{len(self)} v.s. {len(results)}') + + # Check whether all the datasets support evaluation + for dataset in self.datasets: + assert hasattr(dataset, 'evaluate'), \ + f"{type(dataset)} haven't implemented the evaluate function." + + if self.separate_eval: + total_eval_results = dict() + for dataset_idx, dataset in enumerate(self.datasets): + start_idx = 0 if dataset_idx == 0 else \ + self.cumulative_sizes[dataset_idx-1] + end_idx = self.cumulative_sizes[dataset_idx] + + results_per_dataset = results[start_idx:end_idx] + print_log( + f'Evaluateing dataset-{dataset_idx} with ' + f'{len(results_per_dataset)} images now', + logger=logger) + + eval_results_per_dataset = dataset.evaluate( + results_per_dataset, *args, logger=logger, **kwargs) + for k, v in eval_results_per_dataset.items(): + total_eval_results.update({f'{dataset_idx}_{k}': v}) + + return total_eval_results + else: + original_data_infos = self.datasets[0].data_infos + self.datasets[0].data_infos = sum( + [dataset.data_infos for dataset in self.datasets], []) + eval_results = self.datasets[0].evaluate( + results, logger=logger, **kwargs) + self.datasets[0].data_infos = original_data_infos + return eval_results + + +@DATASETS.register_module() +class RepeatDataset(object): + """A wrapper of repeated dataset. + + The length of repeated dataset will be `times` larger than the original + dataset. This is useful when the data loading time is long but the dataset + is small. Using RepeatDataset can reduce the data loading time between + epochs. + + Args: + dataset (:obj:`BaseDataset`): The dataset to be repeated. + times (int): Repeat times. + """ + + def __init__(self, dataset, times): + self.dataset = dataset + self.times = times + self.CLASSES = dataset.CLASSES + + self._ori_len = len(self.dataset) + + def __getitem__(self, idx): + return self.dataset[idx % self._ori_len] + + def get_cat_ids(self, idx): + return self.dataset.get_cat_ids(idx % self._ori_len) + + def __len__(self): + return self.times * self._ori_len + + def evaluate(self, *args, **kwargs): + raise NotImplementedError( + 'evaluate results on a repeated dataset is weird. ' + 'Please inference and evaluate on the original dataset.') + + def __repr__(self): + """Print the number of instance number.""" + dataset_type = 'Test' if self.test_mode else 'Train' + result = ( + f'\n{self.__class__.__name__} ({self.dataset.__class__.__name__}) ' + f'{dataset_type} dataset with total number of samples {len(self)}.' + ) + return result + + +# Modified from https://github.com/facebookresearch/detectron2/blob/41d475b75a230221e21d9cac5d69655e3415e3a4/detectron2/data/samplers/distributed_sampler.py#L57 # noqa +@DATASETS.register_module() +class ClassBalancedDataset(object): + r"""A wrapper of repeated dataset with repeat factor. + + Suitable for training on class imbalanced datasets like LVIS. Following the + sampling strategy in `this paper`_, in each epoch, an image may appear + multiple times based on its "repeat factor". + + .. _this paper: https://arxiv.org/pdf/1908.03195.pdf + + The repeat factor for an image is a function of the frequency the rarest + category labeled in that image. The "frequency of category c" in [0, 1] + is defined by the fraction of images in the training set (without repeats) + in which category c appears. + + The dataset needs to implement :func:`self.get_cat_ids` to support + ClassBalancedDataset. + + The repeat factor is computed as followed. + + 1. For each category c, compute the fraction :math:`f(c)` of images that + contain it. + 2. For each category c, compute the category-level repeat factor + + .. math:: + r(c) = \max(1, \sqrt{\frac{t}{f(c)}}) + + 3. For each image I and its labels :math:`L(I)`, compute the image-level + repeat factor + + .. math:: + r(I) = \max_{c \in L(I)} r(c) + + Args: + dataset (:obj:`BaseDataset`): The dataset to be repeated. + oversample_thr (float): frequency threshold below which data is + repeated. For categories with ``f_c`` >= ``oversample_thr``, there + is no oversampling. For categories with ``f_c`` < + ``oversample_thr``, the degree of oversampling following the + square-root inverse frequency heuristic above. + """ + + def __init__(self, dataset, oversample_thr): + self.dataset = dataset + self.oversample_thr = oversample_thr + self.CLASSES = dataset.CLASSES + + repeat_factors = self._get_repeat_factors(dataset, oversample_thr) + repeat_indices = [] + for dataset_index, repeat_factor in enumerate(repeat_factors): + repeat_indices.extend([dataset_index] * math.ceil(repeat_factor)) + self.repeat_indices = repeat_indices + + flags = [] + if hasattr(self.dataset, 'flag'): + for flag, repeat_factor in zip(self.dataset.flag, repeat_factors): + flags.extend([flag] * int(math.ceil(repeat_factor))) + assert len(flags) == len(repeat_indices) + self.flag = np.asarray(flags, dtype=np.uint8) + + def _get_repeat_factors(self, dataset, repeat_thr): + # 1. For each category c, compute the fraction # of images + # that contain it: f(c) + category_freq = defaultdict(int) + num_images = len(dataset) + for idx in range(num_images): + cat_ids = set(self.dataset.get_cat_ids(idx)) + for cat_id in cat_ids: + category_freq[cat_id] += 1 + for k, v in category_freq.items(): + assert v > 0, f'caterogy {k} does not contain any images' + category_freq[k] = v / num_images + + # 2. For each category c, compute the category-level repeat factor: + # r(c) = max(1, sqrt(t/f(c))) + category_repeat = { + cat_id: max(1.0, math.sqrt(repeat_thr / cat_freq)) + for cat_id, cat_freq in category_freq.items() + } + + # 3. For each image I and its labels L(I), compute the image-level + # repeat factor: + # r(I) = max_{c in L(I)} r(c) + repeat_factors = [] + for idx in range(num_images): + cat_ids = set(self.dataset.get_cat_ids(idx)) + repeat_factor = max( + {category_repeat[cat_id] + for cat_id in cat_ids}) + repeat_factors.append(repeat_factor) + + return repeat_factors + + def __getitem__(self, idx): + ori_index = self.repeat_indices[idx] + return self.dataset[ori_index] + + def __len__(self): + return len(self.repeat_indices) + + def evaluate(self, *args, **kwargs): + raise NotImplementedError( + 'evaluate results on a class-balanced dataset is weird. ' + 'Please inference and evaluate on the original dataset.') + + def __repr__(self): + """Print the number of instance number.""" + dataset_type = 'Test' if self.test_mode else 'Train' + result = ( + f'\n{self.__class__.__name__} ({self.dataset.__class__.__name__}) ' + f'{dataset_type} dataset with total number of samples {len(self)}.' + ) + return result + + +@DATASETS.register_module() +class KFoldDataset: + """A wrapper of dataset for K-Fold cross-validation. + + K-Fold cross-validation divides all the samples in groups of samples, + called folds, of almost equal sizes. And we use k-1 of folds to do training + and use the fold left to do validation. + + Args: + dataset (:obj:`BaseDataset`): The dataset to be divided. + fold (int): The fold used to do validation. Defaults to 0. + num_splits (int): The number of all folds. Defaults to 5. + test_mode (bool): Use the training dataset or validation dataset. + Defaults to False. + seed (int, optional): The seed to shuffle the dataset before splitting. + If None, not shuffle the dataset. Defaults to None. + """ + + def __init__(self, + dataset, + fold=0, + num_splits=5, + test_mode=False, + seed=None): + self.dataset = dataset + self.CLASSES = dataset.CLASSES + self.test_mode = test_mode + self.num_splits = num_splits + + length = len(dataset) + indices = list(range(length)) + if isinstance(seed, int): + rng = np.random.default_rng(seed) + rng.shuffle(indices) + + test_start = length * fold // num_splits + test_end = length * (fold + 1) // num_splits + if test_mode: + self.indices = indices[test_start:test_end] + else: + self.indices = indices[:test_start] + indices[test_end:] + + def get_cat_ids(self, idx): + return self.dataset.get_cat_ids(self.indices[idx]) + + def get_gt_labels(self): + dataset_gt_labels = self.dataset.get_gt_labels() + gt_labels = np.array([dataset_gt_labels[idx] for idx in self.indices]) + return gt_labels + + def __getitem__(self, idx): + return self.dataset[self.indices[idx]] + + def __len__(self): + return len(self.indices) + + def evaluate(self, *args, **kwargs): + kwargs['indices'] = self.indices + return self.dataset.evaluate(*args, **kwargs) diff --git a/openmmlab_test/mmclassification-speed-benchmark/mmcls/datasets/imagenet.py b/openmmlab_test/mmclassification-0.24.1/mmcls/datasets/imagenet.py similarity index 91% rename from openmmlab_test/mmclassification-speed-benchmark/mmcls/datasets/imagenet.py rename to openmmlab_test/mmclassification-0.24.1/mmcls/datasets/imagenet.py index 86ac5c5c..84341dc9 100644 --- a/openmmlab_test/mmclassification-speed-benchmark/mmcls/datasets/imagenet.py +++ b/openmmlab_test/mmclassification-0.24.1/mmcls/datasets/imagenet.py @@ -1,75 +1,42 @@ -import os +# Copyright (c) OpenMMLab. All rights reserved. +from typing import Optional, Sequence, Union -import numpy as np - -from .base_dataset import BaseDataset from .builder import DATASETS +from .custom import CustomDataset -def has_file_allowed_extension(filename, extensions): - """Checks if a file is an allowed extension. - - Args: - filename (string): path to a file - - Returns: - bool: True if the filename ends with a known image extension - """ - filename_lower = filename.lower() - return any(filename_lower.endswith(ext) for ext in extensions) - - -def find_folders(root): - """Find classes by folders under a root. - - Args: - root (string): root directory of folders - - Returns: - folder_to_idx (dict): the map from folder name to class idx - """ - folders = [ - d for d in os.listdir(root) if os.path.isdir(os.path.join(root, d)) - ] - folders.sort() - folder_to_idx = {folders[i]: i for i in range(len(folders))} - return folder_to_idx - +@DATASETS.register_module() +class ImageNet(CustomDataset): + """`ImageNet `_ Dataset. -def get_samples(root, folder_to_idx, extensions): - """Make dataset by walking all images under a root. + The dataset supports two kinds of annotation format. More details can be + found in :class:`CustomDataset`. Args: - root (string): root directory of folders - folder_to_idx (dict): the map from class name to class idx - extensions (tuple): allowed extensions - - Returns: - samples (list): a list of tuple where each element is (image, label) - """ - samples = [] - root = os.path.expanduser(root) - for folder_name in sorted(os.listdir(root)): - _dir = os.path.join(root, folder_name) - if not os.path.isdir(_dir): - continue - - for _, _, fns in sorted(os.walk(_dir)): - for fn in sorted(fns): - if has_file_allowed_extension(fn, extensions): - path = os.path.join(folder_name, fn) - item = (path, folder_to_idx[folder_name]) - samples.append(item) - return samples + data_prefix (str): The path of data directory. + pipeline (Sequence[dict]): A list of dict, where each element + represents a operation defined in :mod:`mmcls.datasets.pipelines`. + Defaults to an empty tuple. + classes (str | Sequence[str], optional): Specify names of classes. + - If is string, it should be a file path, and the every line of + the file is a name of a class. + - If is a sequence of string, every item is a name of class. + - If is None, use the default ImageNet-1k classes names. -@DATASETS.register_module() -class ImageNet(BaseDataset): - """`ImageNet `_ Dataset. - - This implementation is modified from - https://github.com/pytorch/vision/blob/master/torchvision/datasets/imagenet.py # noqa: E501 - """ + Defaults to None. + ann_file (str, optional): The annotation file. If is string, read + samples paths from the ann_file. If is None, find samples in + ``data_prefix``. Defaults to None. + extensions (Sequence[str]): A sequence of allowed extensions. Defaults + to ('.jpg', '.jpeg', '.png', '.ppm', '.bmp', '.pgm', '.tif'). + test_mode (bool): In train mode or test mode. It's only a mark and + won't be used in this class. Defaults to False. + file_client_args (dict, optional): Arguments to instantiate a + FileClient. See :class:`mmcv.fileio.FileClient` for details. + If None, automatically inference from the specified path. + Defaults to None. + """ # noqa: E501 IMG_EXTENSIONS = ('.jpg', '.jpeg', '.png', '.ppm', '.bmp', '.pgm', '.tif') CLASSES = [ @@ -1075,31 +1042,18 @@ class ImageNet(BaseDataset): 'toilet tissue, toilet paper, bathroom tissue' ] - def load_annotations(self): - if self.ann_file is None: - folder_to_idx = find_folders(self.data_prefix) - samples = get_samples( - self.data_prefix, - folder_to_idx, - extensions=self.IMG_EXTENSIONS) - if len(samples) == 0: - raise (RuntimeError('Found 0 files in subfolders of: ' - f'{self.data_prefix}. ' - 'Supported extensions are: ' - f'{",".join(self.IMG_EXTENSIONS)}')) - - self.folder_to_idx = folder_to_idx - elif isinstance(self.ann_file, str): - with open(self.ann_file) as f: - samples = [x.strip().split(' ') for x in f.readlines()] - else: - raise TypeError('ann_file must be a str or None') - self.samples = samples - - data_infos = [] - for filename, gt_label in self.samples: - info = {'img_prefix': self.data_prefix} - info['img_info'] = {'filename': filename} - info['gt_label'] = np.array(gt_label, dtype=np.int64) - data_infos.append(info) - return data_infos + def __init__(self, + data_prefix: str, + pipeline: Sequence = (), + classes: Union[str, Sequence[str], None] = None, + ann_file: Optional[str] = None, + test_mode: bool = False, + file_client_args: Optional[dict] = None): + super().__init__( + data_prefix=data_prefix, + pipeline=pipeline, + classes=classes, + ann_file=ann_file, + extensions=self.IMG_EXTENSIONS, + test_mode=test_mode, + file_client_args=file_client_args) diff --git a/openmmlab_test/mmclassification-0.24.1/mmcls/datasets/imagenet21k.py b/openmmlab_test/mmclassification-0.24.1/mmcls/datasets/imagenet21k.py new file mode 100644 index 00000000..864e215c --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/mmcls/datasets/imagenet21k.py @@ -0,0 +1,174 @@ +# Copyright (c) OpenMMLab. All rights reserved. +import gc +import pickle +import warnings +from typing import List, Optional, Sequence, Tuple, Union + +import numpy as np + +from .builder import DATASETS +from .custom import CustomDataset + + +@DATASETS.register_module() +class ImageNet21k(CustomDataset): + """ImageNet21k Dataset. + + Since the dataset ImageNet21k is extremely big, cantains 21k+ classes + and 1.4B files. This class has improved the following points on the + basis of the class ``ImageNet``, in order to save memory, we enable the + ``serialize_data`` optional by default. With this option, the annotation + won't be stored in the list ``data_infos``, but be serialized as an + array. + + Args: + data_prefix (str): The path of data directory. + pipeline (Sequence[dict]): A list of dict, where each element + represents a operation defined in :mod:`mmcls.datasets.pipelines`. + Defaults to an empty tuple. + classes (str | Sequence[str], optional): Specify names of classes. + + - If is string, it should be a file path, and the every line of + the file is a name of a class. + - If is a sequence of string, every item is a name of class. + - If is None, the object won't have category information. + (Not recommended) + + Defaults to None. + ann_file (str, optional): The annotation file. If is string, read + samples paths from the ann_file. If is None, find samples in + ``data_prefix``. Defaults to None. + serialize_data (bool): Whether to hold memory using serialized objects, + when enabled, data loader workers can use shared RAM from master + process instead of making a copy. Defaults to True. + multi_label (bool): Not implement by now. Use multi label or not. + Defaults to False. + recursion_subdir(bool): Deprecated, and the dataset will recursively + get all images now. + test_mode (bool): In train mode or test mode. It's only a mark and + won't be used in this class. Defaults to False. + file_client_args (dict, optional): Arguments to instantiate a + FileClient. See :class:`mmcv.fileio.FileClient` for details. + If None, automatically inference from the specified path. + Defaults to None. + """ + + IMG_EXTENSIONS = ('.jpg', '.jpeg', '.png', '.ppm', '.bmp', '.pgm', '.tif') + CLASSES = None + + def __init__(self, + data_prefix: str, + pipeline: Sequence = (), + classes: Union[str, Sequence[str], None] = None, + ann_file: Optional[str] = None, + serialize_data: bool = True, + multi_label: bool = False, + recursion_subdir: bool = True, + test_mode=False, + file_client_args: Optional[dict] = None): + assert recursion_subdir, 'The `recursion_subdir` option is ' \ + 'deprecated. Now the dataset will recursively get all images.' + if multi_label: + raise NotImplementedError( + 'The `multi_label` option is not supported by now.') + self.multi_label = multi_label + self.serialize_data = serialize_data + + if ann_file is None: + warnings.warn( + 'The ImageNet21k dataset is large, and scanning directory may ' + 'consume long time. Considering to specify the `ann_file` to ' + 'accelerate the initialization.', UserWarning) + + if classes is None: + warnings.warn( + 'The CLASSES is not stored in the `ImageNet21k` class. ' + 'Considering to specify the `classes` argument if you need ' + 'do inference on the ImageNet-21k dataset', UserWarning) + + super().__init__( + data_prefix=data_prefix, + pipeline=pipeline, + classes=classes, + ann_file=ann_file, + extensions=self.IMG_EXTENSIONS, + test_mode=test_mode, + file_client_args=file_client_args) + + if self.serialize_data: + self.data_infos_bytes, self.data_address = self._serialize_data() + # Empty cache for preventing making multiple copies of + # `self.data_infos` when loading data multi-processes. + self.data_infos.clear() + gc.collect() + + def get_cat_ids(self, idx: int) -> List[int]: + """Get category id by index. + + Args: + idx (int): Index of data. + + Returns: + cat_ids (List[int]): Image category of specified index. + """ + + return [int(self.get_data_info(idx)['gt_label'])] + + def get_data_info(self, idx: int) -> dict: + """Get annotation by index. + + Args: + idx (int): The index of data. + + Returns: + dict: The idx-th annotation of the dataset. + """ + if self.serialize_data: + start_addr = 0 if idx == 0 else self.data_address[idx - 1].item() + end_addr = self.data_address[idx].item() + bytes = memoryview(self.data_infos_bytes[start_addr:end_addr]) + data_info = pickle.loads(bytes) + else: + data_info = self.data_infos[idx] + + return data_info + + def prepare_data(self, idx): + data_info = self.get_data_info(idx) + return self.pipeline(data_info) + + def _serialize_data(self) -> Tuple[np.ndarray, np.ndarray]: + """Serialize ``self.data_infos`` to save memory when launching multiple + workers in data loading. This function will be called in ``full_init``. + + Hold memory using serialized objects, and data loader workers can use + shared RAM from master process instead of making a copy. + + Returns: + Tuple[np.ndarray, np.ndarray]: serialize result and corresponding + address. + """ + + def _serialize(data): + buffer = pickle.dumps(data, protocol=4) + return np.frombuffer(buffer, dtype=np.uint8) + + serialized_data_infos_list = [_serialize(x) for x in self.data_infos] + address_list = np.asarray([len(x) for x in serialized_data_infos_list], + dtype=np.int64) + data_address: np.ndarray = np.cumsum(address_list) + serialized_data_infos = np.concatenate(serialized_data_infos_list) + + return serialized_data_infos, data_address + + def __len__(self) -> int: + """Get the length of filtered dataset and automatically call + ``full_init`` if the dataset has not been fully init. + + Returns: + int: The length of filtered dataset. + """ + if self.serialize_data: + return len(self.data_address) + else: + return len(self.data_infos) diff --git a/openmmlab_test/mmclassification-speed-benchmark/mmcls/datasets/mnist.py b/openmmlab_test/mmclassification-0.24.1/mmcls/datasets/mnist.py similarity index 98% rename from openmmlab_test/mmclassification-speed-benchmark/mmcls/datasets/mnist.py rename to openmmlab_test/mmclassification-0.24.1/mmcls/datasets/mnist.py index f00ef20e..4065e0d5 100644 --- a/openmmlab_test/mmclassification-speed-benchmark/mmcls/datasets/mnist.py +++ b/openmmlab_test/mmclassification-0.24.1/mmcls/datasets/mnist.py @@ -1,3 +1,4 @@ +# Copyright (c) OpenMMLab. All rights reserved. import codecs import os import os.path as osp @@ -17,8 +18,8 @@ class MNIST(BaseDataset): """`MNIST `_ Dataset. This implementation is modified from - https://github.com/pytorch/vision/blob/master/torchvision/datasets/mnist.py # noqa: E501 - """ + https://github.com/pytorch/vision/blob/master/torchvision/datasets/mnist.py + """ # noqa: E501 resource_prefix = 'http://yann.lecun.com/exdb/mnist/' resources = { diff --git a/openmmlab_test/mmclassification-speed-benchmark/mmcls/datasets/multi_label.py b/openmmlab_test/mmclassification-0.24.1/mmcls/datasets/multi_label.py similarity index 81% rename from openmmlab_test/mmclassification-speed-benchmark/mmcls/datasets/multi_label.py rename to openmmlab_test/mmclassification-0.24.1/mmcls/datasets/multi_label.py index 68076a66..02480f0b 100644 --- a/openmmlab_test/mmclassification-speed-benchmark/mmcls/datasets/multi_label.py +++ b/openmmlab_test/mmclassification-0.24.1/mmcls/datasets/multi_label.py @@ -1,4 +1,5 @@ -import warnings +# Copyright (c) OpenMMLab. All rights reserved. +from typing import List import numpy as np @@ -9,25 +10,25 @@ from .base_dataset import BaseDataset class MultiLabelDataset(BaseDataset): """Multi-label Dataset.""" - def get_cat_ids(self, idx): + def get_cat_ids(self, idx: int) -> List[int]: """Get category ids by index. Args: idx (int): Index of data. Returns: - np.ndarray: Image categories of specified index. + cat_ids (List[int]): Image categories of specified index. """ gt_labels = self.data_infos[idx]['gt_label'] - cat_ids = np.where(gt_labels == 1)[0] + cat_ids = np.where(gt_labels == 1)[0].tolist() return cat_ids def evaluate(self, results, metric='mAP', metric_options=None, - logger=None, - **deprecated_kwargs): + indices=None, + logger=None): """Evaluate the dataset. Args: @@ -39,19 +40,13 @@ class MultiLabelDataset(BaseDataset): Allowed keys are 'k' and 'thr'. Defaults to None logger (logging.Logger | str, optional): Logger used for printing related information during evaluation. Defaults to None. - deprecated_kwargs (dict): Used for containing deprecated arguments. Returns: dict: evaluation results """ - if metric_options is None: + if metric_options is None or metric_options == {}: metric_options = {'thr': 0.5} - if deprecated_kwargs != {}: - warnings.warn('Option arguments for metrics has been changed to ' - '`metric_options`.') - metric_options = {**deprecated_kwargs} - if isinstance(metric, str): metrics = [metric] else: @@ -60,6 +55,8 @@ class MultiLabelDataset(BaseDataset): eval_results = {} results = np.vstack(results) gt_labels = self.get_gt_labels() + if indices is not None: + gt_labels = gt_labels[indices] num_imgs = len(results) assert len(gt_labels) == num_imgs, 'dataset testing results should '\ 'be of the same length as gt_labels.' diff --git a/openmmlab_test/mmclassification-0.24.1/mmcls/datasets/pipelines/__init__.py b/openmmlab_test/mmclassification-0.24.1/mmcls/datasets/pipelines/__init__.py new file mode 100644 index 00000000..e010ed1d --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/mmcls/datasets/pipelines/__init__.py @@ -0,0 +1,22 @@ +# Copyright (c) OpenMMLab. All rights reserved. +from .auto_augment import (AutoAugment, AutoContrast, Brightness, + ColorTransform, Contrast, Cutout, Equalize, Invert, + Posterize, RandAugment, Rotate, Sharpness, Shear, + Solarize, SolarizeAdd, Translate) +from .compose import Compose +from .formatting import (Collect, ImageToTensor, ToNumpy, ToPIL, ToTensor, + Transpose, to_tensor) +from .loading import LoadImageFromFile +from .transforms import (CenterCrop, ColorJitter, Lighting, Normalize, Pad, + RandomCrop, RandomErasing, RandomFlip, + RandomGrayscale, RandomResizedCrop, Resize) + +__all__ = [ + 'Compose', 'to_tensor', 'ToTensor', 'ImageToTensor', 'ToPIL', 'ToNumpy', + 'Transpose', 'Collect', 'LoadImageFromFile', 'Resize', 'CenterCrop', + 'RandomFlip', 'Normalize', 'RandomCrop', 'RandomResizedCrop', + 'RandomGrayscale', 'Shear', 'Translate', 'Rotate', 'Invert', + 'ColorTransform', 'Solarize', 'Posterize', 'AutoContrast', 'Equalize', + 'Contrast', 'Brightness', 'Sharpness', 'AutoAugment', 'SolarizeAdd', + 'Cutout', 'RandAugment', 'Lighting', 'ColorJitter', 'RandomErasing', 'Pad' +] diff --git a/openmmlab_test/mmclassification-speed-benchmark/mmcls/datasets/pipelines/auto_augment.py b/openmmlab_test/mmclassification-0.24.1/mmcls/datasets/pipelines/auto_augment.py similarity index 88% rename from openmmlab_test/mmclassification-speed-benchmark/mmcls/datasets/pipelines/auto_augment.py rename to openmmlab_test/mmclassification-0.24.1/mmcls/datasets/pipelines/auto_augment.py index 6087464f..e7fffd6d 100644 --- a/openmmlab_test/mmclassification-speed-benchmark/mmcls/datasets/pipelines/auto_augment.py +++ b/openmmlab_test/mmclassification-0.24.1/mmcls/datasets/pipelines/auto_augment.py @@ -1,5 +1,8 @@ +# Copyright (c) OpenMMLab. All rights reserved. import copy +import inspect import random +from math import ceil from numbers import Number from typing import Sequence @@ -9,18 +12,43 @@ import numpy as np from ..builder import PIPELINES from .compose import Compose +# Default hyperparameters for all Ops +_HPARAMS_DEFAULT = dict(pad_val=128) + def random_negative(value, random_negative_prob): """Randomly negate value based on random_negative_prob.""" return -value if np.random.rand() < random_negative_prob else value +def merge_hparams(policy: dict, hparams: dict): + """Merge hyperparameters into policy config. + + Only merge partial hyperparameters required of the policy. + + Args: + policy (dict): Original policy config dict. + hparams (dict): Hyperparameters need to be merged. + + Returns: + dict: Policy config dict after adding ``hparams``. + """ + op = PIPELINES.get(policy['type']) + assert op is not None, f'Invalid policy type "{policy["type"]}".' + for key, value in hparams.items(): + if policy.get(key, None) is not None: + continue + if key in inspect.getfullargspec(op.__init__).args: + policy[key] = value + return policy + + @PIPELINES.register_module() class AutoAugment(object): - """Auto augmentation. This data augmentation is proposed in `AutoAugment: - Learning Augmentation Policies from Data. + """Auto augmentation. - `_. + This data augmentation is proposed in `AutoAugment: Learning Augmentation + Policies from Data `_. Args: policies (list[list[dict]]): The policies of auto augmentation. Each @@ -28,9 +56,12 @@ class AutoAugment(object): composed by several augmentations (dict). When AutoAugment is called, a random policy in ``policies`` will be selected to augment images. + hparams (dict): Configs of hyperparameters. Hyperparameters will be + used in policies that require these arguments if these arguments + are not set in policy dicts. Defaults to use _HPARAMS_DEFAULT. """ - def __init__(self, policies): + def __init__(self, policies, hparams=_HPARAMS_DEFAULT): assert isinstance(policies, list) and len(policies) > 0, \ 'Policies must be a non-empty list.' for policy in policies: @@ -41,7 +72,13 @@ class AutoAugment(object): 'Each specific augmentation must be a dict with key' \ ' "type".' - self.policies = copy.deepcopy(policies) + self.hparams = hparams + policies = copy.deepcopy(policies) + self.policies = [] + for sub in policies: + merged_sub = [merge_hparams(policy, hparams) for policy in sub] + self.policies.append(merged_sub) + self.sub_policy = [Compose(policy) for policy in self.policies] def __call__(self, results): @@ -56,9 +93,10 @@ class AutoAugment(object): @PIPELINES.register_module() class RandAugment(object): - """Random augmentation. This data augmentation is proposed in `RandAugment: - Practical automated data augmentation with a reduced search space. + r"""Random augmentation. + This data augmentation is proposed in `RandAugment: Practical automated + data augmentation with a reduced search space `_. Args: @@ -78,19 +116,26 @@ class RandAugment(object): total_level (int | float): Total level for the magnitude. Defaults to 30. magnitude_std (Number | str): Deviation of magnitude noise applied. - If positive number, magnitude is sampled from normal distribution - (mean=magnitude, std=magnitude_std). - If 0 or negative number, magnitude remains unchanged. - If str "inf", magnitude is sampled from uniform distribution - (range=[min, magnitude]). + + - If positive number, magnitude is sampled from normal distribution + (mean=magnitude, std=magnitude_std). + - If 0 or negative number, magnitude remains unchanged. + - If str "inf", magnitude is sampled from uniform distribution + (range=[min, magnitude]). + hparams (dict): Configs of hyperparameters. Hyperparameters will be + used in policies that require these arguments if these arguments + are not set in policy dicts. Defaults to use _HPARAMS_DEFAULT. Note: `magnitude_std` will introduce some randomness to policy, modified by - https://github.com/rwightman/pytorch-image-models + https://github.com/rwightman/pytorch-image-models. + When magnitude_std=0, we calculate the magnitude as follows: .. math:: - magnitude = magnitude_level / total_level * (val2 - val1) + val1 + \text{magnitude} = \frac{\text{magnitude_level}} + {\text{totallevel}} \times (\text{val2} - \text{val1}) + + \text{val1} """ def __init__(self, @@ -98,7 +143,8 @@ class RandAugment(object): num_policies, magnitude_level, magnitude_std=0., - total_level=30): + total_level=30, + hparams=_HPARAMS_DEFAULT): assert isinstance(num_policies, int), 'Number of policies must be ' \ f'of int type, got {type(num_policies)} instead.' assert isinstance(magnitude_level, (int, float)), \ @@ -125,8 +171,10 @@ class RandAugment(object): self.magnitude_level = magnitude_level self.magnitude_std = magnitude_std self.total_level = total_level - self.policies = policies - self._check_policies(self.policies) + self.hparams = hparams + policies = copy.deepcopy(policies) + self._check_policies(policies) + self.policies = [merge_hparams(policy, hparams) for policy in policies] def _check_policies(self, policies): for policy in policies: @@ -190,8 +238,8 @@ class Shear(object): Args: magnitude (int | float): The magnitude used for shear. - pad_val (int, tuple[int]): Pixel pad_val value for constant fill. If a - tuple of length 3, it is used to pad_val R, G, B channels + pad_val (int, Sequence[int]): Pixel pad_val value for constant fill. + If a sequence of length 3, it is used to pad_val R, G, B channels respectively. Defaults to 128. prob (float): The probability for performing Shear therefore should be in range [0, 1]. Defaults to 0.5. @@ -214,7 +262,7 @@ class Shear(object): f'be int or float, but got {type(magnitude)} instead.' if isinstance(pad_val, int): pad_val = tuple([pad_val] * 3) - elif isinstance(pad_val, tuple): + elif isinstance(pad_val, Sequence): assert len(pad_val) == 3, 'pad_val as a tuple must have 3 ' \ f'elements, got {len(pad_val)} instead.' assert all(isinstance(i, int) for i in pad_val), 'pad_val as a '\ @@ -229,7 +277,7 @@ class Shear(object): f'should be in range [0,1], got {random_negative_prob} instead.' self.magnitude = magnitude - self.pad_val = pad_val + self.pad_val = tuple(pad_val) self.prob = prob self.direction = direction self.random_negative_prob = random_negative_prob @@ -269,9 +317,9 @@ class Translate(object): magnitude (int | float): The magnitude used for translate. Note that the offset is calculated by magnitude * size in the corresponding direction. With a magnitude of 1, the whole image will be moved out - of the range. - pad_val (int, tuple[int]): Pixel pad_val value for constant fill. If a - tuple of length 3, it is used to pad_val R, G, B channels + of the range. + pad_val (int, Sequence[int]): Pixel pad_val value for constant fill. + If a sequence of length 3, it is used to pad_val R, G, B channels respectively. Defaults to 128. prob (float): The probability for performing translate therefore should be in range [0, 1]. Defaults to 0.5. @@ -294,7 +342,7 @@ class Translate(object): f'be int or float, but got {type(magnitude)} instead.' if isinstance(pad_val, int): pad_val = tuple([pad_val] * 3) - elif isinstance(pad_val, tuple): + elif isinstance(pad_val, Sequence): assert len(pad_val) == 3, 'pad_val as a tuple must have 3 ' \ f'elements, got {len(pad_val)} instead.' assert all(isinstance(i, int) for i in pad_val), 'pad_val as a '\ @@ -309,7 +357,7 @@ class Translate(object): f'should be in range [0,1], got {random_negative_prob} instead.' self.magnitude = magnitude - self.pad_val = pad_val + self.pad_val = tuple(pad_val) self.prob = prob self.direction = direction self.random_negative_prob = random_negative_prob @@ -354,11 +402,11 @@ class Rotate(object): angle (float): The angle used for rotate. Positive values stand for clockwise rotation. center (tuple[float], optional): Center point (w, h) of the rotation in - the source image. If None, the center of the image will be used. - defaults to None. + the source image. If None, the center of the image will be used. + Defaults to None. scale (float): Isotropic scale factor. Defaults to 1.0. - pad_val (int, tuple[int]): Pixel pad_val value for constant fill. If a - tuple of length 3, it is used to pad_val R, G, B channels + pad_val (int, Sequence[int]): Pixel pad_val value for constant fill. + If a sequence of length 3, it is used to pad_val R, G, B channels respectively. Defaults to 128. prob (float): The probability for performing Rotate therefore should be in range [0, 1]. Defaults to 0.5. @@ -388,7 +436,7 @@ class Rotate(object): f'got {type(scale)} instead.' if isinstance(pad_val, int): pad_val = tuple([pad_val] * 3) - elif isinstance(pad_val, tuple): + elif isinstance(pad_val, Sequence): assert len(pad_val) == 3, 'pad_val as a tuple must have 3 ' \ f'elements, got {len(pad_val)} instead.' assert all(isinstance(i, int) for i in pad_val), 'pad_val as a '\ @@ -403,7 +451,7 @@ class Rotate(object): self.angle = angle self.center = center self.scale = scale - self.pad_val = pad_val + self.pad_val = tuple(pad_val) self.prob = prob self.random_negative_prob = random_negative_prob self.interpolation = interpolation @@ -621,7 +669,8 @@ class Posterize(object): assert 0 <= prob <= 1.0, 'The prob should be in range [0,1], ' \ f'got {prob} instead.' - self.bits = int(bits) + # To align timm version, we need to round up to integer here. + self.bits = ceil(bits) self.prob = prob def __call__(self, results): @@ -692,7 +741,7 @@ class ColorTransform(object): Args: magnitude (int | float): The magnitude used for color transform. A positive magnitude would enhance the color and a negative magnitude - would make the image grayer. A magnitude=0 gives the origin img. + would make the image grayer. A magnitude=0 gives the origin img. prob (float): The probability for performing ColorTransform therefore should be in range [0, 1]. Defaults to 0.5. random_negative_prob (float): The probability that turns the magnitude @@ -827,8 +876,8 @@ class Cutout(object): shape (int | float | tuple(int | float)): Expected cutout shape (h, w). If given as a single value, the value will be used for both h and w. - pad_val (int, tuple[int]): Pixel pad_val value for constant fill. If - it is a tuple, it must have the same length with the image + pad_val (int, Sequence[int]): Pixel pad_val value for constant fill. + If it is a sequence, it must have the same length with the image channels. Defaults to 128. prob (float): The probability for performing cutout therefore should be in range [0, 1]. Defaults to 0.5. @@ -843,11 +892,16 @@ class Cutout(object): raise TypeError( 'shape must be of ' f'type int, float or tuple, got {type(shape)} instead') + if isinstance(pad_val, int): + pad_val = tuple([pad_val] * 3) + elif isinstance(pad_val, Sequence): + assert len(pad_val) == 3, 'pad_val as a tuple must have 3 ' \ + f'elements, got {len(pad_val)} instead.' assert 0 <= prob <= 1.0, 'The prob should be in range [0,1], ' \ f'got {prob} instead.' self.shape = shape - self.pad_val = pad_val + self.pad_val = tuple(pad_val) self.prob = prob def __call__(self, results): diff --git a/openmmlab_test/mmclassification-speed-benchmark/mmcls/datasets/pipelines/compose.py b/openmmlab_test/mmclassification-0.24.1/mmcls/datasets/pipelines/compose.py similarity index 96% rename from openmmlab_test/mmclassification-speed-benchmark/mmcls/datasets/pipelines/compose.py rename to openmmlab_test/mmclassification-0.24.1/mmcls/datasets/pipelines/compose.py index 21960b22..012d2b63 100644 --- a/openmmlab_test/mmclassification-speed-benchmark/mmcls/datasets/pipelines/compose.py +++ b/openmmlab_test/mmclassification-0.24.1/mmcls/datasets/pipelines/compose.py @@ -1,3 +1,4 @@ +# Copyright (c) OpenMMLab. All rights reserved. from collections.abc import Sequence from mmcv.utils import build_from_cfg diff --git a/openmmlab_test/mmclassification-0.24.1/mmcls/datasets/pipelines/formatting.py b/openmmlab_test/mmclassification-0.24.1/mmcls/datasets/pipelines/formatting.py new file mode 100644 index 00000000..eeb1650e --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/mmcls/datasets/pipelines/formatting.py @@ -0,0 +1,195 @@ +# Copyright (c) OpenMMLab. All rights reserved. +from collections.abc import Sequence + +import mmcv +import numpy as np +import torch +from mmcv.parallel import DataContainer as DC +from PIL import Image + +from ..builder import PIPELINES + + +def to_tensor(data): + """Convert objects of various python types to :obj:`torch.Tensor`. + + Supported types are: :class:`numpy.ndarray`, :class:`torch.Tensor`, + :class:`Sequence`, :class:`int` and :class:`float`. + """ + if isinstance(data, torch.Tensor): + return data + elif isinstance(data, np.ndarray): + return torch.from_numpy(data) + elif isinstance(data, Sequence) and not mmcv.is_str(data): + return torch.tensor(data) + elif isinstance(data, int): + return torch.LongTensor([data]) + elif isinstance(data, float): + return torch.FloatTensor([data]) + else: + raise TypeError( + f'Type {type(data)} cannot be converted to tensor.' + 'Supported types are: `numpy.ndarray`, `torch.Tensor`, ' + '`Sequence`, `int` and `float`') + + +@PIPELINES.register_module() +class ToTensor(object): + + def __init__(self, keys): + self.keys = keys + + def __call__(self, results): + for key in self.keys: + results[key] = to_tensor(results[key]) + return results + + def __repr__(self): + return self.__class__.__name__ + f'(keys={self.keys})' + + +@PIPELINES.register_module() +class ImageToTensor(object): + + def __init__(self, keys): + self.keys = keys + + def __call__(self, results): + for key in self.keys: + img = results[key] + if len(img.shape) < 3: + img = np.expand_dims(img, -1) + results[key] = to_tensor(img.transpose(2, 0, 1)) + return results + + def __repr__(self): + return self.__class__.__name__ + f'(keys={self.keys})' + + +@PIPELINES.register_module() +class Transpose(object): + + def __init__(self, keys, order): + self.keys = keys + self.order = order + + def __call__(self, results): + for key in self.keys: + results[key] = results[key].transpose(self.order) + return results + + def __repr__(self): + return self.__class__.__name__ + \ + f'(keys={self.keys}, order={self.order})' + + +@PIPELINES.register_module() +class ToPIL(object): + + def __init__(self): + pass + + def __call__(self, results): + results['img'] = Image.fromarray(results['img']) + return results + + +@PIPELINES.register_module() +class ToNumpy(object): + + def __init__(self): + pass + + def __call__(self, results): + results['img'] = np.array(results['img'], dtype=np.float32) + return results + + +@PIPELINES.register_module() +class Collect(object): + """Collect data from the loader relevant to the specific task. + + This is usually the last stage of the data loader pipeline. Typically keys + is set to some subset of "img" and "gt_label". + + Args: + keys (Sequence[str]): Keys of results to be collected in ``data``. + meta_keys (Sequence[str], optional): Meta keys to be converted to + ``mmcv.DataContainer`` and collected in ``data[img_metas]``. + Default: ('filename', 'ori_shape', 'img_shape', 'flip', + 'flip_direction', 'img_norm_cfg') + + Returns: + dict: The result dict contains the following keys + + - keys in ``self.keys`` + - ``img_metas`` if available + """ + + def __init__(self, + keys, + meta_keys=('filename', 'ori_filename', 'ori_shape', + 'img_shape', 'flip', 'flip_direction', + 'img_norm_cfg')): + self.keys = keys + self.meta_keys = meta_keys + + def __call__(self, results): + data = {} + img_meta = {} + for key in self.meta_keys: + if key in results: + img_meta[key] = results[key] + data['img_metas'] = DC(img_meta, cpu_only=True) + for key in self.keys: + data[key] = results[key] + return data + + def __repr__(self): + return self.__class__.__name__ + \ + f'(keys={self.keys}, meta_keys={self.meta_keys})' + + +@PIPELINES.register_module() +class WrapFieldsToLists(object): + """Wrap fields of the data dictionary into lists for evaluation. + + This class can be used as a last step of a test or validation + pipeline for single image evaluation or inference. + + Example: + >>> test_pipeline = [ + >>> dict(type='LoadImageFromFile'), + >>> dict(type='Normalize', + mean=[123.675, 116.28, 103.53], + std=[58.395, 57.12, 57.375], + to_rgb=True), + >>> dict(type='ImageToTensor', keys=['img']), + >>> dict(type='Collect', keys=['img']), + >>> dict(type='WrapIntoLists') + >>> ] + """ + + def __call__(self, results): + # Wrap dict fields into lists + for key, val in results.items(): + results[key] = [val] + return results + + def __repr__(self): + return f'{self.__class__.__name__}()' + + +@PIPELINES.register_module() +class ToHalf(object): + + def __init__(self, keys): + self.keys = keys + + def __call__(self, results): + for k in self.keys: + if isinstance(results[k], torch.Tensor): + results[k] = results[k].to(torch.half) + else: + results[k] = results[k].astype(np.float16) + return results diff --git a/openmmlab_test/mmclassification-speed-benchmark/mmcls/datasets/pipelines/loading.py b/openmmlab_test/mmclassification-0.24.1/mmcls/datasets/pipelines/loading.py similarity index 98% rename from openmmlab_test/mmclassification-speed-benchmark/mmcls/datasets/pipelines/loading.py rename to openmmlab_test/mmclassification-0.24.1/mmcls/datasets/pipelines/loading.py index ce185f03..b5d8e95d 100644 --- a/openmmlab_test/mmclassification-speed-benchmark/mmcls/datasets/pipelines/loading.py +++ b/openmmlab_test/mmclassification-0.24.1/mmcls/datasets/pipelines/loading.py @@ -1,3 +1,4 @@ +# Copyright (c) OpenMMLab. All rights reserved. import os.path as osp import mmcv diff --git a/openmmlab_test/mmclassification-speed-benchmark/mmcls/datasets/pipelines/transforms.py b/openmmlab_test/mmclassification-0.24.1/mmcls/datasets/pipelines/transforms.py similarity index 84% rename from openmmlab_test/mmclassification-speed-benchmark/mmcls/datasets/pipelines/transforms.py rename to openmmlab_test/mmclassification-0.24.1/mmcls/datasets/pipelines/transforms.py index fdc72efc..a56ce3c3 100644 --- a/openmmlab_test/mmclassification-speed-benchmark/mmcls/datasets/pipelines/transforms.py +++ b/openmmlab_test/mmclassification-0.24.1/mmcls/datasets/pipelines/transforms.py @@ -1,3 +1,5 @@ +# Copyright (c) OpenMMLab. All rights reserved. +import copy import inspect import math import random @@ -36,18 +38,19 @@ class RandomCrop(object): pad_val (Number | Sequence[Number]): Pixel pad_val value for constant fill. If a tuple of length 3, it is used to pad_val R, G, B channels respectively. Default: 0. - padding_mode (str): Type of padding. Should be: constant, edge, - reflect or symmetric. Default: constant. - -constant: Pads with a constant value, this value is specified + padding_mode (str): Type of padding. Defaults to "constant". Should + be one of the following: + + - constant: Pads with a constant value, this value is specified \ with pad_val. - -edge: pads with the last value at the edge of the image. - -reflect: Pads with reflection of image without repeating the - last value on the edge. For example, padding [1, 2, 3, 4] - with 2 elements on both sides in reflect mode will result + - edge: pads with the last value at the edge of the image. + - reflect: Pads with reflection of image without repeating the \ + last value on the edge. For example, padding [1, 2, 3, 4] \ + with 2 elements on both sides in reflect mode will result \ in [3, 2, 1, 2, 3, 4, 3, 2]. - -symmetric: Pads with reflection of image repeating the last - value on the edge. For example, padding [1, 2, 3, 4] with - 2 elements on both sides in symmetric mode will result in + - symmetric: Pads with reflection of image repeating the last \ + value on the edge. For example, padding [1, 2, 3, 4] with \ + 2 elements on both sides in symmetric mode will result in \ [2, 1, 1, 2, 3, 4, 4, 3]. """ @@ -151,7 +154,7 @@ class RandomResizedCrop(object): to the original image. Defaults to (0.08, 1.0). ratio (tuple): Range of the random aspect ratio of the cropped image compared to the original image. Defaults to (3. / 4., 4. / 3.). - max_attempts (int): Maxinum number of attempts before falling back to + max_attempts (int): Maximum number of attempts before falling back to Central Crop. Defaults to 10. efficientnet_style (bool): Whether to use efficientnet style Random ResizedCrop. Defaults to False. @@ -163,7 +166,7 @@ class RandomResizedCrop(object): interpolation (str): Interpolation method, accepted values are 'nearest', 'bilinear', 'bicubic', 'area', 'lanczos'. Defaults to 'bilinear'. - backend (str): The image resize backend type, accpeted values are + backend (str): The image resize backend type, accepted values are `cv2` and `pillow`. Defaults to `cv2`. """ @@ -191,7 +194,7 @@ class RandomResizedCrop(object): f'But received scale {scale} and rato {ratio}.') assert min_covered >= 0, 'min_covered should be no less than 0.' assert isinstance(max_attempts, int) and max_attempts >= 0, \ - 'max_attempts mush be of typle int and no less than 0.' + 'max_attempts mush be int and no less than 0.' assert interpolation in ('nearest', 'bilinear', 'bicubic', 'area', 'lanczos') if backend not in ['cv2', 'pillow']: @@ -217,7 +220,7 @@ class RandomResizedCrop(object): compared to the original image size. ratio (tuple): Range of the random aspect ratio of the cropped image compared to the original image area. - max_attempts (int): Maxinum number of attempts before falling back + max_attempts (int): Maximum number of attempts before falling back to central crop. Defaults to 10. Returns: @@ -279,7 +282,7 @@ class RandomResizedCrop(object): compared to the original image size. ratio (tuple): Range of the random aspect ratio of the cropped image compared to the original image area. - max_attempts (int): Maxinum number of attempts before falling back + max_attempts (int): Maximum number of attempts before falling back to central crop. Defaults to 10. min_covered (Number): Minimum ratio of the cropped area to the original area. Only valid if efficientnet_style is true. @@ -311,7 +314,7 @@ class RandomResizedCrop(object): max_target_height = min(max_target_height, height) min_target_height = min(max_target_height, min_target_height) - # slightly differs from tf inplementation + # slightly differs from tf implementation target_height = int( round(random.uniform(min_target_height, max_target_height))) target_width = int(round(target_height * aspect_ratio)) @@ -393,11 +396,12 @@ class RandomGrayscale(object): grayscale. Default: 0.1. Returns: - ndarray: Grayscale version of the input image with probability - gray_prob and unchanged with probability (1-gray_prob). - - If input image is 1 channel: grayscale version is 1 channel. - - If input image is 3 channel: grayscale version is 3 channel - with r == g == b. + ndarray: Image after randomly grayscale transform. + + Notes: + - If input image is 1 channel: grayscale version is 1 channel. + - If input image is 3 channel: grayscale version is 3 channel + with r == g == b. """ def __init__(self, gray_prob=0.1): @@ -484,20 +488,24 @@ class RandomErasing(object): if float, it will be converted to (aspect_ratio, 1/aspect_ratio) Default: (3/10, 10/3) mode (str): Fill method in erased area, can be: - - 'const' (default): All pixels are assign with the same value. - - 'rand': each pixel is assigned with a random value in [0, 255] + + - const (default): All pixels are assign with the same value. + - rand: each pixel is assigned with a random value in [0, 255] + fill_color (sequence | Number): Base color filled in erased area. - Default: (128, 128, 128) - fill_std (sequence | Number, optional): If set and mode='rand', fill - erased area with random color from normal distribution + Defaults to (128, 128, 128). + fill_std (sequence | Number, optional): If set and ``mode`` is 'rand', + fill erased area with random color from normal distribution (mean=fill_color, std=fill_std); If not set, fill erased area with - random color from uniform distribution (0~255) - Default: None + random color from uniform distribution (0~255). Defaults to None. Note: - See https://arxiv.org/pdf/1708.04896.pdf + See `Random Erasing Data Augmentation + `_ + This paper provided 4 modes: RE-R, RE-M, RE-0, RE-255, and use RE-M as - default. + default. The config of these 4 modes are: + - RE-R: RandomErasing(mode='rand') - RE-M: RandomErasing(mode='const', fill_color=(123.67, 116.3, 103.5)) - RE-0: RandomErasing(mode='const', fill_color=0) @@ -605,6 +613,58 @@ class RandomErasing(object): return repr_str +@PIPELINES.register_module() +class Pad(object): + """Pad images. + + Args: + size (tuple[int] | None): Expected padding size (h, w). Conflicts with + pad_to_square. Defaults to None. + pad_to_square (bool): Pad any image to square shape. Defaults to False. + pad_val (Number | Sequence[Number]): Values to be filled in padding + areas when padding_mode is 'constant'. Default to 0. + padding_mode (str): Type of padding. Should be: constant, edge, + reflect or symmetric. Default to "constant". + """ + + def __init__(self, + size=None, + pad_to_square=False, + pad_val=0, + padding_mode='constant'): + assert (size is None) ^ (pad_to_square is False), \ + 'Only one of [size, pad_to_square] should be given, ' \ + f'but get {(size is not None) + (pad_to_square is not False)}' + self.size = size + self.pad_to_square = pad_to_square + self.pad_val = pad_val + self.padding_mode = padding_mode + + def __call__(self, results): + for key in results.get('img_fields', ['img']): + img = results[key] + if self.pad_to_square: + target_size = tuple( + max(img.shape[0], img.shape[1]) for _ in range(2)) + else: + target_size = self.size + img = mmcv.impad( + img, + shape=target_size, + pad_val=self.pad_val, + padding_mode=self.padding_mode) + results[key] = img + results['img_shape'] = img.shape + return results + + def __repr__(self): + repr_str = self.__class__.__name__ + repr_str += f'(size={self.size}, ' + repr_str += f'(pad_val={self.pad_val}, ' + repr_str += f'padding_mode={self.padding_mode})' + return repr_str + + @PIPELINES.register_module() class Resize(object): """Resize images. @@ -613,35 +673,49 @@ class Resize(object): size (int | tuple): Images scales for resizing (h, w). When size is int, the default behavior is to resize an image to (size, size). When size is tuple and the second value is -1, - the short edge of an image is resized to its first value. - For example, when size is 224, the image is resized to 224x224. - When size is (224, -1), the short side is resized to 224 and the - other side is computed based on the short side, maintaining the - aspect ratio. - interpolation (str): Interpolation method, accepted values are - "nearest", "bilinear", "bicubic", "area", "lanczos". + the image will be resized according to adaptive_side. For example, + when size is 224, the image is resized to 224x224. When size is + (224, -1) and adaptive_size is "short", the short side is resized + to 224 and the other side is computed based on the short side, + maintaining the aspect ratio. + interpolation (str): Interpolation method. For "cv2" backend, accepted + values are "nearest", "bilinear", "bicubic", "area", "lanczos". For + "pillow" backend, accepted values are "nearest", "bilinear", + "bicubic", "box", "lanczos", "hamming". More details can be found in `mmcv.image.geometric`. - backend (str): The image resize backend type, accpeted values are + adaptive_side(str): Adaptive resize policy, accepted values are + "short", "long", "height", "width". Default to "short". + backend (str): The image resize backend type, accepted values are `cv2` and `pillow`. Default: `cv2`. """ - def __init__(self, size, interpolation='bilinear', backend='cv2'): + def __init__(self, + size, + interpolation='bilinear', + adaptive_side='short', + backend='cv2'): assert isinstance(size, int) or (isinstance(size, tuple) and len(size) == 2) - self.resize_w_short_side = False + assert adaptive_side in {'short', 'long', 'height', 'width'} + + self.adaptive_side = adaptive_side + self.adaptive_resize = False if isinstance(size, int): assert size > 0 size = (size, size) else: assert size[0] > 0 and (size[1] > 0 or size[1] == -1) if size[1] == -1: - self.resize_w_short_side = True - assert interpolation in ('nearest', 'bilinear', 'bicubic', 'area', - 'lanczos') + self.adaptive_resize = True if backend not in ['cv2', 'pillow']: raise ValueError(f'backend: {backend} is not supported for resize.' 'Supported backends are "cv2", "pillow"') - + if backend == 'cv2': + assert interpolation in ('nearest', 'bilinear', 'bicubic', 'area', + 'lanczos') + else: + assert interpolation in ('nearest', 'bilinear', 'bicubic', 'box', + 'lanczos', 'hamming') self.size = size self.interpolation = interpolation self.backend = backend @@ -650,19 +724,29 @@ class Resize(object): for key in results.get('img_fields', ['img']): img = results[key] ignore_resize = False - if self.resize_w_short_side: + if self.adaptive_resize: h, w = img.shape[:2] - short_side = self.size[0] - if (w <= h and w == short_side) or (h <= w - and h == short_side): + target_size = self.size[0] + + condition_ignore_resize = { + 'short': min(h, w) == target_size, + 'long': max(h, w) == target_size, + 'height': h == target_size, + 'width': w == target_size + } + + if condition_ignore_resize[self.adaptive_side]: ignore_resize = True + elif any([ + self.adaptive_side == 'short' and w < h, + self.adaptive_side == 'long' and w > h, + self.adaptive_side == 'width', + ]): + width = target_size + height = int(target_size * h / w) else: - if w < h: - width = short_side - height = int(short_side * h / w) - else: - height = short_side - width = int(short_side * w / h) + height = target_size + width = int(target_size * w / h) else: height, width = self.size if not ignore_resize: @@ -700,21 +784,23 @@ class CenterCrop(object): 32. interpolation (str): Interpolation method, accepted values are 'nearest', 'bilinear', 'bicubic', 'area', 'lanczos'. Only valid if - efficientnet style is True. Defaults to 'bilinear'. - backend (str): The image resize backend type, accpeted values are + ``efficientnet_style`` is True. Defaults to 'bilinear'. + backend (str): The image resize backend type, accepted values are `cv2` and `pillow`. Only valid if efficientnet style is True. Defaults to `cv2`. Notes: - If the image is smaller than the crop size, return the original image. - If efficientnet_style is set to False, the pipeline would be a simple - center crop using the crop_size. - If efficientnet_style is set to True, the pipeline will be to first to - perform the center crop with the crop_size_ as: + - If the image is smaller than the crop size, return the original + image. + - If efficientnet_style is set to False, the pipeline would be a simple + center crop using the crop_size. + - If efficientnet_style is set to True, the pipeline will be to first + to perform the center crop with the ``crop_size_`` as: .. math:: - crop\_size\_ = crop\_size / (crop\_size + crop\_padding) * short\_edge + \text{crop_size_} = \frac{\text{crop_size}}{\text{crop_size} + + \text{crop_padding}} \times \text{short_edge} And then the pipeline resizes the img to the input crop size. """ @@ -886,7 +972,7 @@ class Lighting(object): eigvec (list[list]): the eigenvector of the convariance matrix of pixel values, respectively. alphastd (float): The standard deviation for distribution of alpha. - Dafaults to 0.1 + Defaults to 0.1 to_rgb (bool): Whether to convert img to rgb. """ @@ -1032,19 +1118,23 @@ class Albu(object): return updated_dict def __call__(self, results): + + # backup gt_label in case Albu modify it. + _gt_label = copy.deepcopy(results.get('gt_label', None)) + # dict to albumentations format results = self.mapper(results, self.keymap_to_albu) + # process aug results = self.aug(**results) - if 'gt_labels' in results: - if isinstance(results['gt_labels'], list): - results['gt_labels'] = np.array(results['gt_labels']) - results['gt_labels'] = results['gt_labels'].astype(np.int64) - # back to the original format results = self.mapper(results, self.keymap_back) + if _gt_label is not None: + # recover backup gt_label + results.update({'gt_label': _gt_label}) + # update final shape if self.update_pad_shape: results['pad_shape'] = results['img'].shape diff --git a/openmmlab_test/mmclassification-0.24.1/mmcls/datasets/samplers/__init__.py b/openmmlab_test/mmclassification-0.24.1/mmcls/datasets/samplers/__init__.py new file mode 100644 index 00000000..70162885 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/mmcls/datasets/samplers/__init__.py @@ -0,0 +1,5 @@ +# Copyright (c) OpenMMLab. All rights reserved. +from .distributed_sampler import DistributedSampler +from .repeat_aug import RepeatAugSampler + +__all__ = ('DistributedSampler', 'RepeatAugSampler') diff --git a/openmmlab_test/mmclassification-0.24.1/mmcls/datasets/samplers/distributed_sampler.py b/openmmlab_test/mmclassification-0.24.1/mmcls/datasets/samplers/distributed_sampler.py new file mode 100644 index 00000000..9e78c400 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/mmcls/datasets/samplers/distributed_sampler.py @@ -0,0 +1,61 @@ +# Copyright (c) OpenMMLab. All rights reserved. +import torch +from torch.utils.data import DistributedSampler as _DistributedSampler + +from mmcls.core.utils import sync_random_seed +from mmcls.datasets import SAMPLERS +from mmcls.utils import auto_select_device + + +@SAMPLERS.register_module() +class DistributedSampler(_DistributedSampler): + + def __init__(self, + dataset, + num_replicas=None, + rank=None, + shuffle=True, + round_up=True, + seed=0): + super().__init__(dataset, num_replicas=num_replicas, rank=rank) + self.shuffle = shuffle + self.round_up = round_up + if self.round_up: + self.total_size = self.num_samples * self.num_replicas + else: + self.total_size = len(self.dataset) + + # In distributed sampling, different ranks should sample + # non-overlapped data in the dataset. Therefore, this function + # is used to make sure that each rank shuffles the data indices + # in the same order based on the same seed. Then different ranks + # could use different indices to select non-overlapped data from the + # same data list. + self.seed = sync_random_seed(seed, device=auto_select_device()) + + def __iter__(self): + # deterministically shuffle based on epoch + if self.shuffle: + g = torch.Generator() + # When :attr:`shuffle=True`, this ensures all replicas + # use a different random ordering for each epoch. + # Otherwise, the next iteration of this sampler will + # yield the same ordering. + g.manual_seed(self.epoch + self.seed) + indices = torch.randperm(len(self.dataset), generator=g).tolist() + else: + indices = torch.arange(len(self.dataset)).tolist() + + # add extra samples to make it evenly divisible + if self.round_up: + indices = ( + indices * + int(self.total_size / len(indices) + 1))[:self.total_size] + assert len(indices) == self.total_size + + # subsample + indices = indices[self.rank:self.total_size:self.num_replicas] + if self.round_up: + assert len(indices) == self.num_samples + + return iter(indices) diff --git a/openmmlab_test/mmclassification-0.24.1/mmcls/datasets/samplers/repeat_aug.py b/openmmlab_test/mmclassification-0.24.1/mmcls/datasets/samplers/repeat_aug.py new file mode 100644 index 00000000..5de096bd --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/mmcls/datasets/samplers/repeat_aug.py @@ -0,0 +1,106 @@ +import math + +import torch +from mmcv.runner import get_dist_info +from torch.utils.data import Sampler + +from mmcls.core.utils import sync_random_seed +from mmcls.datasets import SAMPLERS + + +@SAMPLERS.register_module() +class RepeatAugSampler(Sampler): + """Sampler that restricts data loading to a subset of the dataset for + distributed, with repeated augmentation. It ensures that different each + augmented version of a sample will be visible to a different process (GPU). + Heavily based on torch.utils.data.DistributedSampler. + + This sampler was taken from + https://github.com/facebookresearch/deit/blob/0c4b8f60/samplers.py + Used in + Copyright (c) 2015-present, Facebook, Inc. + """ + + def __init__(self, + dataset, + num_replicas=None, + rank=None, + shuffle=True, + num_repeats=3, + selected_round=256, + selected_ratio=0, + seed=0): + default_rank, default_world_size = get_dist_info() + rank = default_rank if rank is None else rank + num_replicas = ( + default_world_size if num_replicas is None else num_replicas) + + self.dataset = dataset + self.num_replicas = num_replicas + self.rank = rank + self.shuffle = shuffle + self.num_repeats = num_repeats + self.epoch = 0 + self.num_samples = int( + math.ceil(len(self.dataset) * num_repeats / self.num_replicas)) + self.total_size = self.num_samples * self.num_replicas + # Determine the number of samples to select per epoch for each rank. + # num_selected logic defaults to be the same as original RASampler + # impl, but this one can be tweaked + # via selected_ratio and selected_round args. + selected_ratio = selected_ratio or num_replicas # ratio to reduce + # selected samples by, num_replicas if 0 + if selected_round: + self.num_selected_samples = int( + math.floor( + len(self.dataset) // selected_round * selected_round / + selected_ratio)) + else: + self.num_selected_samples = int( + math.ceil(len(self.dataset) / selected_ratio)) + + # In distributed sampling, different ranks should sample + # non-overlapped data in the dataset. Therefore, this function + # is used to make sure that each rank shuffles the data indices + # in the same order based on the same seed. Then different ranks + # could use different indices to select non-overlapped data from the + # same data list. + self.seed = sync_random_seed(seed) + + def __iter__(self): + # deterministically shuffle based on epoch + if self.shuffle: + if self.num_replicas > 1: # In distributed environment + # deterministically shuffle based on epoch + g = torch.Generator() + # When :attr:`shuffle=True`, this ensures all replicas + # use a different random ordering for each epoch. + # Otherwise, the next iteration of this sampler will + # yield the same ordering. + g.manual_seed(self.epoch + self.seed) + indices = torch.randperm( + len(self.dataset), generator=g).tolist() + else: + indices = torch.randperm(len(self.dataset)).tolist() + else: + indices = list(range(len(self.dataset))) + + # produce repeats e.g. [0, 0, 0, 1, 1, 1, 2, 2, 2....] + indices = [x for x in indices for _ in range(self.num_repeats)] + # add extra samples to make it evenly divisible + padding_size = self.total_size - len(indices) + indices += indices[:padding_size] + assert len(indices) == self.total_size + + # subsample per rank + indices = indices[self.rank:self.total_size:self.num_replicas] + assert len(indices) == self.num_samples + + # return up to num selected samples + return iter(indices[:self.num_selected_samples]) + + def __len__(self): + return self.num_selected_samples + + def set_epoch(self, epoch): + self.epoch = epoch diff --git a/openmmlab_test/mmclassification-0.24.1/mmcls/datasets/stanford_cars.py b/openmmlab_test/mmclassification-0.24.1/mmcls/datasets/stanford_cars.py new file mode 100644 index 00000000..df1f9512 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/mmcls/datasets/stanford_cars.py @@ -0,0 +1,210 @@ +# Copyright (c) OpenMMLab. All rights reserved. +import os.path as osp +from typing import Optional + +import numpy as np + +from .base_dataset import BaseDataset +from .builder import DATASETS + + +@DATASETS.register_module() +class StanfordCars(BaseDataset): + """`Stanford Cars`_ Dataset. + + After downloading and decompression, the dataset + directory structure is as follows. + + Stanford Cars dataset directory:: + + Stanford Cars + ├── cars_train + │ ├── 00001.jpg + │ ├── 00002.jpg + │ └── ... + ├── cars_test + │ ├── 00001.jpg + │ ├── 00002.jpg + │ └── ... + └── devkit + ├── cars_meta.mat + ├── cars_train_annos.mat + ├── cars_test_annos.mat + ├── cars_test_annoswithlabels.mat + ├── eval_train.m + └── train_perfect_preds.txt + + .. _Stanford Cars: https://ai.stanford.edu/~jkrause/cars/car_dataset.html + + Args: + data_prefix (str): the prefix of data path + test_mode (bool): ``test_mode=True`` means in test phase. It determines + to use the training set or test set. + ann_file (str, optional): The annotation file. If is string, read + samples paths from the ann_file. If is None, read samples path + from cars_{train|test}_annos.mat file. Defaults to None. + """ # noqa: E501 + + CLASSES = [ + 'AM General Hummer SUV 2000', 'Acura RL Sedan 2012', + 'Acura TL Sedan 2012', 'Acura TL Type-S 2008', 'Acura TSX Sedan 2012', + 'Acura Integra Type R 2001', 'Acura ZDX Hatchback 2012', + 'Aston Martin V8 Vantage Convertible 2012', + 'Aston Martin V8 Vantage Coupe 2012', + 'Aston Martin Virage Convertible 2012', + 'Aston Martin Virage Coupe 2012', 'Audi RS 4 Convertible 2008', + 'Audi A5 Coupe 2012', 'Audi TTS Coupe 2012', 'Audi R8 Coupe 2012', + 'Audi V8 Sedan 1994', 'Audi 100 Sedan 1994', 'Audi 100 Wagon 1994', + 'Audi TT Hatchback 2011', 'Audi S6 Sedan 2011', + 'Audi S5 Convertible 2012', 'Audi S5 Coupe 2012', 'Audi S4 Sedan 2012', + 'Audi S4 Sedan 2007', 'Audi TT RS Coupe 2012', + 'BMW ActiveHybrid 5 Sedan 2012', 'BMW 1 Series Convertible 2012', + 'BMW 1 Series Coupe 2012', 'BMW 3 Series Sedan 2012', + 'BMW 3 Series Wagon 2012', 'BMW 6 Series Convertible 2007', + 'BMW X5 SUV 2007', 'BMW X6 SUV 2012', 'BMW M3 Coupe 2012', + 'BMW M5 Sedan 2010', 'BMW M6 Convertible 2010', 'BMW X3 SUV 2012', + 'BMW Z4 Convertible 2012', + 'Bentley Continental Supersports Conv. Convertible 2012', + 'Bentley Arnage Sedan 2009', 'Bentley Mulsanne Sedan 2011', + 'Bentley Continental GT Coupe 2012', + 'Bentley Continental GT Coupe 2007', + 'Bentley Continental Flying Spur Sedan 2007', + 'Bugatti Veyron 16.4 Convertible 2009', + 'Bugatti Veyron 16.4 Coupe 2009', 'Buick Regal GS 2012', + 'Buick Rainier SUV 2007', 'Buick Verano Sedan 2012', + 'Buick Enclave SUV 2012', 'Cadillac CTS-V Sedan 2012', + 'Cadillac SRX SUV 2012', 'Cadillac Escalade EXT Crew Cab 2007', + 'Chevrolet Silverado 1500 Hybrid Crew Cab 2012', + 'Chevrolet Corvette Convertible 2012', 'Chevrolet Corvette ZR1 2012', + 'Chevrolet Corvette Ron Fellows Edition Z06 2007', + 'Chevrolet Traverse SUV 2012', 'Chevrolet Camaro Convertible 2012', + 'Chevrolet HHR SS 2010', 'Chevrolet Impala Sedan 2007', + 'Chevrolet Tahoe Hybrid SUV 2012', 'Chevrolet Sonic Sedan 2012', + 'Chevrolet Express Cargo Van 2007', + 'Chevrolet Avalanche Crew Cab 2012', 'Chevrolet Cobalt SS 2010', + 'Chevrolet Malibu Hybrid Sedan 2010', 'Chevrolet TrailBlazer SS 2009', + 'Chevrolet Silverado 2500HD Regular Cab 2012', + 'Chevrolet Silverado 1500 Classic Extended Cab 2007', + 'Chevrolet Express Van 2007', 'Chevrolet Monte Carlo Coupe 2007', + 'Chevrolet Malibu Sedan 2007', + 'Chevrolet Silverado 1500 Extended Cab 2012', + 'Chevrolet Silverado 1500 Regular Cab 2012', 'Chrysler Aspen SUV 2009', + 'Chrysler Sebring Convertible 2010', + 'Chrysler Town and Country Minivan 2012', 'Chrysler 300 SRT-8 2010', + 'Chrysler Crossfire Convertible 2008', + 'Chrysler PT Cruiser Convertible 2008', 'Daewoo Nubira Wagon 2002', + 'Dodge Caliber Wagon 2012', 'Dodge Caliber Wagon 2007', + 'Dodge Caravan Minivan 1997', 'Dodge Ram Pickup 3500 Crew Cab 2010', + 'Dodge Ram Pickup 3500 Quad Cab 2009', 'Dodge Sprinter Cargo Van 2009', + 'Dodge Journey SUV 2012', 'Dodge Dakota Crew Cab 2010', + 'Dodge Dakota Club Cab 2007', 'Dodge Magnum Wagon 2008', + 'Dodge Challenger SRT8 2011', 'Dodge Durango SUV 2012', + 'Dodge Durango SUV 2007', 'Dodge Charger Sedan 2012', + 'Dodge Charger SRT-8 2009', 'Eagle Talon Hatchback 1998', + 'FIAT 500 Abarth 2012', 'FIAT 500 Convertible 2012', + 'Ferrari FF Coupe 2012', 'Ferrari California Convertible 2012', + 'Ferrari 458 Italia Convertible 2012', 'Ferrari 458 Italia Coupe 2012', + 'Fisker Karma Sedan 2012', 'Ford F-450 Super Duty Crew Cab 2012', + 'Ford Mustang Convertible 2007', 'Ford Freestar Minivan 2007', + 'Ford Expedition EL SUV 2009', 'Ford Edge SUV 2012', + 'Ford Ranger SuperCab 2011', 'Ford GT Coupe 2006', + 'Ford F-150 Regular Cab 2012', 'Ford F-150 Regular Cab 2007', + 'Ford Focus Sedan 2007', 'Ford E-Series Wagon Van 2012', + 'Ford Fiesta Sedan 2012', 'GMC Terrain SUV 2012', + 'GMC Savana Van 2012', 'GMC Yukon Hybrid SUV 2012', + 'GMC Acadia SUV 2012', 'GMC Canyon Extended Cab 2012', + 'Geo Metro Convertible 1993', 'HUMMER H3T Crew Cab 2010', + 'HUMMER H2 SUT Crew Cab 2009', 'Honda Odyssey Minivan 2012', + 'Honda Odyssey Minivan 2007', 'Honda Accord Coupe 2012', + 'Honda Accord Sedan 2012', 'Hyundai Veloster Hatchback 2012', + 'Hyundai Santa Fe SUV 2012', 'Hyundai Tucson SUV 2012', + 'Hyundai Veracruz SUV 2012', 'Hyundai Sonata Hybrid Sedan 2012', + 'Hyundai Elantra Sedan 2007', 'Hyundai Accent Sedan 2012', + 'Hyundai Genesis Sedan 2012', 'Hyundai Sonata Sedan 2012', + 'Hyundai Elantra Touring Hatchback 2012', 'Hyundai Azera Sedan 2012', + 'Infiniti G Coupe IPL 2012', 'Infiniti QX56 SUV 2011', + 'Isuzu Ascender SUV 2008', 'Jaguar XK XKR 2012', + 'Jeep Patriot SUV 2012', 'Jeep Wrangler SUV 2012', + 'Jeep Liberty SUV 2012', 'Jeep Grand Cherokee SUV 2012', + 'Jeep Compass SUV 2012', 'Lamborghini Reventon Coupe 2008', + 'Lamborghini Aventador Coupe 2012', + 'Lamborghini Gallardo LP 570-4 Superleggera 2012', + 'Lamborghini Diablo Coupe 2001', 'Land Rover Range Rover SUV 2012', + 'Land Rover LR2 SUV 2012', 'Lincoln Town Car Sedan 2011', + 'MINI Cooper Roadster Convertible 2012', + 'Maybach Landaulet Convertible 2012', 'Mazda Tribute SUV 2011', + 'McLaren MP4-12C Coupe 2012', + 'Mercedes-Benz 300-Class Convertible 1993', + 'Mercedes-Benz C-Class Sedan 2012', + 'Mercedes-Benz SL-Class Coupe 2009', + 'Mercedes-Benz E-Class Sedan 2012', 'Mercedes-Benz S-Class Sedan 2012', + 'Mercedes-Benz Sprinter Van 2012', 'Mitsubishi Lancer Sedan 2012', + 'Nissan Leaf Hatchback 2012', 'Nissan NV Passenger Van 2012', + 'Nissan Juke Hatchback 2012', 'Nissan 240SX Coupe 1998', + 'Plymouth Neon Coupe 1999', 'Porsche Panamera Sedan 2012', + 'Ram C/V Cargo Van Minivan 2012', + 'Rolls-Royce Phantom Drophead Coupe Convertible 2012', + 'Rolls-Royce Ghost Sedan 2012', 'Rolls-Royce Phantom Sedan 2012', + 'Scion xD Hatchback 2012', 'Spyker C8 Convertible 2009', + 'Spyker C8 Coupe 2009', 'Suzuki Aerio Sedan 2007', + 'Suzuki Kizashi Sedan 2012', 'Suzuki SX4 Hatchback 2012', + 'Suzuki SX4 Sedan 2012', 'Tesla Model S Sedan 2012', + 'Toyota Sequoia SUV 2012', 'Toyota Camry Sedan 2012', + 'Toyota Corolla Sedan 2012', 'Toyota 4Runner SUV 2012', + 'Volkswagen Golf Hatchback 2012', 'Volkswagen Golf Hatchback 1991', + 'Volkswagen Beetle Hatchback 2012', 'Volvo C30 Hatchback 2012', + 'Volvo 240 Sedan 1993', 'Volvo XC90 SUV 2007', + 'smart fortwo Convertible 2012' + ] + + def __init__(self, + data_prefix: str, + test_mode: bool, + ann_file: Optional[str] = None, + **kwargs): + if test_mode: + if ann_file is not None: + self.test_ann_file = ann_file + else: + self.test_ann_file = osp.join( + data_prefix, 'devkit/cars_test_annos_withlabels.mat') + data_prefix = osp.join(data_prefix, 'cars_test') + else: + if ann_file is not None: + self.train_ann_file = ann_file + else: + self.train_ann_file = osp.join(data_prefix, + 'devkit/cars_train_annos.mat') + data_prefix = osp.join(data_prefix, 'cars_train') + super(StanfordCars, self).__init__( + ann_file=ann_file, + data_prefix=data_prefix, + test_mode=test_mode, + **kwargs) + + def load_annotations(self): + try: + import scipy.io as sio + except ImportError: + raise ImportError( + 'please run `pip install scipy` to install package `scipy`.') + + data_infos = [] + if self.test_mode: + data = sio.loadmat(self.test_ann_file) + else: + data = sio.loadmat(self.train_ann_file) + for img in data['annotations'][0]: + info = {'img_prefix': self.data_prefix} + # The organization of each record is as follows, + # 0: bbox_x1 of each image + # 1: bbox_y1 of each image + # 2: bbox_x2 of each image + # 3: bbox_y2 of each image + # 4: class_id, start from 0, so + # here we need to '- 1' to let them start from 0 + # 5: file name of each image + info['img_info'] = {'filename': img[5][0]} + info['gt_label'] = np.array(img[4][0][0] - 1, dtype=np.int64) + data_infos.append(info) + return data_infos diff --git a/openmmlab_test/mmclassification-0.24.1/mmcls/datasets/utils.py b/openmmlab_test/mmclassification-0.24.1/mmcls/datasets/utils.py new file mode 100644 index 00000000..75070bc0 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/mmcls/datasets/utils.py @@ -0,0 +1,153 @@ +# Copyright (c) OpenMMLab. All rights reserved. +import gzip +import hashlib +import os +import os.path +import shutil +import tarfile +import urllib.error +import urllib.request +import zipfile + +__all__ = ['rm_suffix', 'check_integrity', 'download_and_extract_archive'] + + +def rm_suffix(s, suffix=None): + if suffix is None: + return s[:s.rfind('.')] + else: + return s[:s.rfind(suffix)] + + +def calculate_md5(fpath, chunk_size=1024 * 1024): + md5 = hashlib.md5() + with open(fpath, 'rb') as f: + for chunk in iter(lambda: f.read(chunk_size), b''): + md5.update(chunk) + return md5.hexdigest() + + +def check_md5(fpath, md5, **kwargs): + return md5 == calculate_md5(fpath, **kwargs) + + +def check_integrity(fpath, md5=None): + if not os.path.isfile(fpath): + return False + if md5 is None: + return True + return check_md5(fpath, md5) + + +def download_url_to_file(url, fpath): + with urllib.request.urlopen(url) as resp, open(fpath, 'wb') as of: + shutil.copyfileobj(resp, of) + + +def download_url(url, root, filename=None, md5=None): + """Download a file from a url and place it in root. + + Args: + url (str): URL to download file from. + root (str): Directory to place downloaded file in. + filename (str | None): Name to save the file under. + If filename is None, use the basename of the URL. + md5 (str | None): MD5 checksum of the download. + If md5 is None, download without md5 check. + """ + root = os.path.expanduser(root) + if not filename: + filename = os.path.basename(url) + fpath = os.path.join(root, filename) + + os.makedirs(root, exist_ok=True) + + if check_integrity(fpath, md5): + print(f'Using downloaded and verified file: {fpath}') + else: + try: + print(f'Downloading {url} to {fpath}') + download_url_to_file(url, fpath) + except (urllib.error.URLError, IOError) as e: + if url[:5] == 'https': + url = url.replace('https:', 'http:') + print('Failed download. Trying https -> http instead.' + f' Downloading {url} to {fpath}') + download_url_to_file(url, fpath) + else: + raise e + # check integrity of downloaded file + if not check_integrity(fpath, md5): + raise RuntimeError('File not found or corrupted.') + + +def _is_tarxz(filename): + return filename.endswith('.tar.xz') + + +def _is_tar(filename): + return filename.endswith('.tar') + + +def _is_targz(filename): + return filename.endswith('.tar.gz') + + +def _is_tgz(filename): + return filename.endswith('.tgz') + + +def _is_gzip(filename): + return filename.endswith('.gz') and not filename.endswith('.tar.gz') + + +def _is_zip(filename): + return filename.endswith('.zip') + + +def extract_archive(from_path, to_path=None, remove_finished=False): + if to_path is None: + to_path = os.path.dirname(from_path) + + if _is_tar(from_path): + with tarfile.open(from_path, 'r') as tar: + tar.extractall(path=to_path) + elif _is_targz(from_path) or _is_tgz(from_path): + with tarfile.open(from_path, 'r:gz') as tar: + tar.extractall(path=to_path) + elif _is_tarxz(from_path): + with tarfile.open(from_path, 'r:xz') as tar: + tar.extractall(path=to_path) + elif _is_gzip(from_path): + to_path = os.path.join( + to_path, + os.path.splitext(os.path.basename(from_path))[0]) + with open(to_path, 'wb') as out_f, gzip.GzipFile(from_path) as zip_f: + out_f.write(zip_f.read()) + elif _is_zip(from_path): + with zipfile.ZipFile(from_path, 'r') as z: + z.extractall(to_path) + else: + raise ValueError(f'Extraction of {from_path} not supported') + + if remove_finished: + os.remove(from_path) + + +def download_and_extract_archive(url, + download_root, + extract_root=None, + filename=None, + md5=None, + remove_finished=False): + download_root = os.path.expanduser(download_root) + if extract_root is None: + extract_root = download_root + if not filename: + filename = os.path.basename(url) + + download_url(url, download_root, filename, md5) + + archive = os.path.join(download_root, filename) + print(f'Extracting {archive} to {extract_root}') + extract_archive(archive, extract_root, remove_finished) diff --git a/openmmlab_test/mmclassification-0.24.1/mmcls/datasets/voc.py b/openmmlab_test/mmclassification-0.24.1/mmcls/datasets/voc.py new file mode 100644 index 00000000..e9c8bceb --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/mmcls/datasets/voc.py @@ -0,0 +1,94 @@ +# Copyright (c) OpenMMLab. All rights reserved. +import os.path as osp +import xml.etree.ElementTree as ET + +import mmcv +import numpy as np + +from .builder import DATASETS +from .multi_label import MultiLabelDataset + + +@DATASETS.register_module() +class VOC(MultiLabelDataset): + """`Pascal VOC `_ Dataset. + + Args: + data_prefix (str): the prefix of data path + pipeline (list): a list of dict, where each element represents + a operation defined in `mmcls.datasets.pipelines` + ann_file (str | None): the annotation file. When ann_file is str, + the subclass is expected to read from the ann_file. When ann_file + is None, the subclass is expected to read according to data_prefix + difficult_as_postive (Optional[bool]): Whether to map the difficult + labels as positive. If it set to True, map difficult examples to + positive ones(1), If it set to False, map difficult examples to + negative ones(0). Defaults to None, the difficult labels will be + set to '-1'. + """ + + CLASSES = ('aeroplane', 'bicycle', 'bird', 'boat', 'bottle', 'bus', 'car', + 'cat', 'chair', 'cow', 'diningtable', 'dog', 'horse', + 'motorbike', 'person', 'pottedplant', 'sheep', 'sofa', 'train', + 'tvmonitor') + + def __init__(self, difficult_as_postive=None, **kwargs): + self.difficult_as_postive = difficult_as_postive + super(VOC, self).__init__(**kwargs) + if 'VOC2007' in self.data_prefix: + self.year = 2007 + else: + raise ValueError('Cannot infer dataset year from img_prefix.') + + def load_annotations(self): + """Load annotations. + + Returns: + list[dict]: Annotation info from XML file. + """ + data_infos = [] + img_ids = mmcv.list_from_file(self.ann_file) + for img_id in img_ids: + filename = f'JPEGImages/{img_id}.jpg' + xml_path = osp.join(self.data_prefix, 'Annotations', + f'{img_id}.xml') + tree = ET.parse(xml_path) + root = tree.getroot() + labels = [] + labels_difficult = [] + for obj in root.findall('object'): + label_name = obj.find('name').text + # in case customized dataset has wrong labels + # or CLASSES has been override. + if label_name not in self.CLASSES: + continue + label = self.class_to_idx[label_name] + difficult = int(obj.find('difficult').text) + if difficult: + labels_difficult.append(label) + else: + labels.append(label) + + gt_label = np.zeros(len(self.CLASSES)) + # set difficult example first, then set postivate examples. + # The order cannot be swapped for the case where multiple objects + # of the same kind exist and some are difficult. + if self.difficult_as_postive is None: + # map difficult examples to -1, + # it may be used in evaluation to ignore difficult targets. + gt_label[labels_difficult] = -1 + elif self.difficult_as_postive: + # map difficult examples to positive ones(1). + gt_label[labels_difficult] = 1 + else: + # map difficult examples to negative ones(0). + gt_label[labels_difficult] = 0 + gt_label[labels] = 1 + + info = dict( + img_prefix=self.data_prefix, + img_info=dict(filename=filename), + gt_label=gt_label.astype(np.int8)) + data_infos.append(info) + + return data_infos diff --git a/openmmlab_test/mmclassification-0.24.1/mmcls/models/__init__.py b/openmmlab_test/mmclassification-0.24.1/mmcls/models/__init__.py new file mode 100644 index 00000000..b501833e --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/mmcls/models/__init__.py @@ -0,0 +1,14 @@ +# Copyright (c) OpenMMLab. All rights reserved. +from .backbones import * # noqa: F401,F403 +from .builder import (BACKBONES, CLASSIFIERS, HEADS, LOSSES, NECKS, + build_backbone, build_classifier, build_head, build_loss, + build_neck) +from .classifiers import * # noqa: F401,F403 +from .heads import * # noqa: F401,F403 +from .losses import * # noqa: F401,F403 +from .necks import * # noqa: F401,F403 + +__all__ = [ + 'BACKBONES', 'HEADS', 'NECKS', 'LOSSES', 'CLASSIFIERS', 'build_backbone', + 'build_head', 'build_neck', 'build_loss', 'build_classifier' +] diff --git a/openmmlab_test/mmclassification-0.24.1/mmcls/models/backbones/__init__.py b/openmmlab_test/mmclassification-0.24.1/mmcls/models/backbones/__init__.py new file mode 100644 index 00000000..a919a42c --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/mmcls/models/backbones/__init__.py @@ -0,0 +1,51 @@ +# Copyright (c) OpenMMLab. All rights reserved. +from .alexnet import AlexNet +from .conformer import Conformer +from .convmixer import ConvMixer +from .convnext import ConvNeXt +from .cspnet import CSPDarkNet, CSPNet, CSPResNet, CSPResNeXt +from .deit import DistilledVisionTransformer +from .densenet import DenseNet +from .efficientformer import EfficientFormer +from .efficientnet import EfficientNet +from .hornet import HorNet +from .hrnet import HRNet +from .lenet import LeNet5 +from .mlp_mixer import MlpMixer +from .mobilenet_v2 import MobileNetV2 +from .mobilenet_v3 import MobileNetV3 +from .mvit import MViT +from .poolformer import PoolFormer +from .regnet import RegNet +from .repmlp import RepMLPNet +from .repvgg import RepVGG +from .res2net import Res2Net +from .resnest import ResNeSt +from .resnet import ResNet, ResNetV1c, ResNetV1d +from .resnet_cifar import ResNet_CIFAR +from .resnext import ResNeXt +from .seresnet import SEResNet +from .seresnext import SEResNeXt +from .shufflenet_v1 import ShuffleNetV1 +from .shufflenet_v2 import ShuffleNetV2 +from .swin_transformer import SwinTransformer +from .swin_transformer_v2 import SwinTransformerV2 +from .t2t_vit import T2T_ViT +from .timm_backbone import TIMMBackbone +from .tnt import TNT +from .twins import PCPVT, SVT +from .van import VAN +from .vgg import VGG +from .vision_transformer import VisionTransformer + +__all__ = [ + 'LeNet5', 'AlexNet', 'VGG', 'RegNet', 'ResNet', 'ResNeXt', 'ResNetV1d', + 'ResNeSt', 'ResNet_CIFAR', 'SEResNet', 'SEResNeXt', 'ShuffleNetV1', + 'ShuffleNetV2', 'MobileNetV2', 'MobileNetV3', 'VisionTransformer', + 'SwinTransformer', 'SwinTransformerV2', 'TNT', 'TIMMBackbone', 'T2T_ViT', + 'Res2Net', 'RepVGG', 'Conformer', 'MlpMixer', 'DistilledVisionTransformer', + 'PCPVT', 'SVT', 'EfficientNet', 'ConvNeXt', 'HRNet', 'ResNetV1c', + 'ConvMixer', 'CSPDarkNet', 'CSPResNet', 'CSPResNeXt', 'CSPNet', + 'RepMLPNet', 'PoolFormer', 'DenseNet', 'VAN', 'MViT', 'EfficientFormer', + 'HorNet' +] diff --git a/openmmlab_test/mmclassification-speed-benchmark/mmcls/models/backbones/alexnet.py b/openmmlab_test/mmclassification-0.24.1/mmcls/models/backbones/alexnet.py similarity index 96% rename from openmmlab_test/mmclassification-speed-benchmark/mmcls/models/backbones/alexnet.py rename to openmmlab_test/mmclassification-0.24.1/mmcls/models/backbones/alexnet.py index ee1d2afe..1b74dc70 100644 --- a/openmmlab_test/mmclassification-speed-benchmark/mmcls/models/backbones/alexnet.py +++ b/openmmlab_test/mmclassification-0.24.1/mmcls/models/backbones/alexnet.py @@ -1,3 +1,4 @@ +# Copyright (c) OpenMMLab. All rights reserved. import torch.nn as nn from ..builder import BACKBONES @@ -52,4 +53,4 @@ class AlexNet(BaseBackbone): x = x.view(x.size(0), 256 * 6 * 6) x = self.classifier(x) - return x + return (x, ) diff --git a/openmmlab_test/mmclassification-speed-benchmark/mmcls/models/backbones/base_backbone.py b/openmmlab_test/mmclassification-0.24.1/mmcls/models/backbones/base_backbone.py similarity index 94% rename from openmmlab_test/mmclassification-speed-benchmark/mmcls/models/backbones/base_backbone.py rename to openmmlab_test/mmclassification-0.24.1/mmcls/models/backbones/base_backbone.py index 12852d32..c1050fab 100644 --- a/openmmlab_test/mmclassification-speed-benchmark/mmcls/models/backbones/base_backbone.py +++ b/openmmlab_test/mmclassification-0.24.1/mmcls/models/backbones/base_backbone.py @@ -1,3 +1,4 @@ +# Copyright (c) OpenMMLab. All rights reserved. from abc import ABCMeta, abstractmethod from mmcv.runner import BaseModule diff --git a/openmmlab_test/mmclassification-0.24.1/mmcls/models/backbones/conformer.py b/openmmlab_test/mmclassification-0.24.1/mmcls/models/backbones/conformer.py new file mode 100644 index 00000000..e70c62db --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/mmcls/models/backbones/conformer.py @@ -0,0 +1,626 @@ +# Copyright (c) OpenMMLab. All rights reserved. +from typing import Sequence + +import torch +import torch.nn as nn +import torch.nn.functional as F +from mmcv.cnn import build_activation_layer, build_norm_layer +from mmcv.cnn.bricks.drop import DropPath +from mmcv.cnn.bricks.transformer import AdaptivePadding +from mmcv.cnn.utils.weight_init import trunc_normal_ + +from mmcls.utils import get_root_logger +from ..builder import BACKBONES +from .base_backbone import BaseBackbone, BaseModule +from .vision_transformer import TransformerEncoderLayer + + +class ConvBlock(BaseModule): + """Basic convluation block used in Conformer. + + This block includes three convluation modules, and supports three new + functions: + 1. Returns the output of both the final layers and the second convluation + module. + 2. Fuses the input of the second convluation module with an extra input + feature map. + 3. Supports to add an extra convluation module to the identity connection. + + Args: + in_channels (int): The number of input channels. + out_channels (int): The number of output channels. + stride (int): The stride of the second convluation module. + Defaults to 1. + groups (int): The groups of the second convluation module. + Defaults to 1. + drop_path_rate (float): The rate of the DropPath layer. Defaults to 0. + with_residual_conv (bool): Whether to add an extra convluation module + to the identity connection. Defaults to False. + norm_cfg (dict): The config of normalization layers. + Defaults to ``dict(type='BN', eps=1e-6)``. + act_cfg (dict): The config of activative functions. + Defaults to ``dict(type='ReLU', inplace=True))``. + init_cfg (dict, optional): The extra config to initialize the module. + Defaults to None. + """ + + def __init__(self, + in_channels, + out_channels, + stride=1, + groups=1, + drop_path_rate=0., + with_residual_conv=False, + norm_cfg=dict(type='BN', eps=1e-6), + act_cfg=dict(type='ReLU', inplace=True), + init_cfg=None): + super(ConvBlock, self).__init__(init_cfg=init_cfg) + + expansion = 4 + mid_channels = out_channels // expansion + + self.conv1 = nn.Conv2d( + in_channels, + mid_channels, + kernel_size=1, + stride=1, + padding=0, + bias=False) + self.bn1 = build_norm_layer(norm_cfg, mid_channels)[1] + self.act1 = build_activation_layer(act_cfg) + + self.conv2 = nn.Conv2d( + mid_channels, + mid_channels, + kernel_size=3, + stride=stride, + groups=groups, + padding=1, + bias=False) + self.bn2 = build_norm_layer(norm_cfg, mid_channels)[1] + self.act2 = build_activation_layer(act_cfg) + + self.conv3 = nn.Conv2d( + mid_channels, + out_channels, + kernel_size=1, + stride=1, + padding=0, + bias=False) + self.bn3 = build_norm_layer(norm_cfg, out_channels)[1] + self.act3 = build_activation_layer(act_cfg) + + if with_residual_conv: + self.residual_conv = nn.Conv2d( + in_channels, + out_channels, + kernel_size=1, + stride=stride, + padding=0, + bias=False) + self.residual_bn = build_norm_layer(norm_cfg, out_channels)[1] + + self.with_residual_conv = with_residual_conv + self.drop_path = DropPath( + drop_path_rate) if drop_path_rate > 0. else nn.Identity() + + def zero_init_last_bn(self): + nn.init.zeros_(self.bn3.weight) + + def forward(self, x, fusion_features=None, out_conv2=True): + identity = x + + x = self.conv1(x) + x = self.bn1(x) + x = self.act1(x) + + x = self.conv2(x) if fusion_features is None else self.conv2( + x + fusion_features) + x = self.bn2(x) + x2 = self.act2(x) + + x = self.conv3(x2) + x = self.bn3(x) + + if self.drop_path is not None: + x = self.drop_path(x) + + if self.with_residual_conv: + identity = self.residual_conv(identity) + identity = self.residual_bn(identity) + + x += identity + x = self.act3(x) + + if out_conv2: + return x, x2 + else: + return x + + +class FCUDown(BaseModule): + """CNN feature maps -> Transformer patch embeddings.""" + + def __init__(self, + in_channels, + out_channels, + down_stride, + with_cls_token=True, + norm_cfg=dict(type='LN', eps=1e-6), + act_cfg=dict(type='GELU'), + init_cfg=None): + super(FCUDown, self).__init__(init_cfg=init_cfg) + self.down_stride = down_stride + self.with_cls_token = with_cls_token + + self.conv_project = nn.Conv2d( + in_channels, out_channels, kernel_size=1, stride=1, padding=0) + self.sample_pooling = nn.AvgPool2d( + kernel_size=down_stride, stride=down_stride) + + self.ln = build_norm_layer(norm_cfg, out_channels)[1] + self.act = build_activation_layer(act_cfg) + + def forward(self, x, x_t): + x = self.conv_project(x) # [N, C, H, W] + + x = self.sample_pooling(x).flatten(2).transpose(1, 2) + x = self.ln(x) + x = self.act(x) + + if self.with_cls_token: + x = torch.cat([x_t[:, 0][:, None, :], x], dim=1) + + return x + + +class FCUUp(BaseModule): + """Transformer patch embeddings -> CNN feature maps.""" + + def __init__(self, + in_channels, + out_channels, + up_stride, + with_cls_token=True, + norm_cfg=dict(type='BN', eps=1e-6), + act_cfg=dict(type='ReLU', inplace=True), + init_cfg=None): + super(FCUUp, self).__init__(init_cfg=init_cfg) + + self.up_stride = up_stride + self.with_cls_token = with_cls_token + + self.conv_project = nn.Conv2d( + in_channels, out_channels, kernel_size=1, stride=1, padding=0) + self.bn = build_norm_layer(norm_cfg, out_channels)[1] + self.act = build_activation_layer(act_cfg) + + def forward(self, x, H, W): + B, _, C = x.shape + # [N, 197, 384] -> [N, 196, 384] -> [N, 384, 196] -> [N, 384, 14, 14] + if self.with_cls_token: + x_r = x[:, 1:].transpose(1, 2).reshape(B, C, H, W) + else: + x_r = x.transpose(1, 2).reshape(B, C, H, W) + + x_r = self.act(self.bn(self.conv_project(x_r))) + + return F.interpolate( + x_r, size=(H * self.up_stride, W * self.up_stride)) + + +class ConvTransBlock(BaseModule): + """Basic module for Conformer. + + This module is a fusion of CNN block transformer encoder block. + + Args: + in_channels (int): The number of input channels in conv blocks. + out_channels (int): The number of output channels in conv blocks. + embed_dims (int): The embedding dimension in transformer blocks. + conv_stride (int): The stride of conv2d layers. Defaults to 1. + groups (int): The groups of conv blocks. Defaults to 1. + with_residual_conv (bool): Whether to add a conv-bn layer to the + identity connect in the conv block. Defaults to False. + down_stride (int): The stride of the downsample pooling layer. + Defaults to 4. + num_heads (int): The number of heads in transformer attention layers. + Defaults to 12. + mlp_ratio (float): The expansion ratio in transformer FFN module. + Defaults to 4. + qkv_bias (bool): Enable bias for qkv if True. Defaults to False. + with_cls_token (bool): Whether use class token or not. + Defaults to True. + drop_rate (float): The dropout rate of the output projection and + FFN in the transformer block. Defaults to 0. + attn_drop_rate (float): The dropout rate after the attention + calculation in the transformer block. Defaults to 0. + drop_path_rate (bloat): The drop path rate in both the conv block + and the transformer block. Defaults to 0. + last_fusion (bool): Whether this block is the last stage. If so, + downsample the fusion feature map. + init_cfg (dict, optional): The extra config to initialize the module. + Defaults to None. + """ + + def __init__(self, + in_channels, + out_channels, + embed_dims, + conv_stride=1, + groups=1, + with_residual_conv=False, + down_stride=4, + num_heads=12, + mlp_ratio=4., + qkv_bias=False, + with_cls_token=True, + drop_rate=0., + attn_drop_rate=0., + drop_path_rate=0., + last_fusion=False, + init_cfg=None): + super(ConvTransBlock, self).__init__(init_cfg=init_cfg) + expansion = 4 + self.cnn_block = ConvBlock( + in_channels=in_channels, + out_channels=out_channels, + with_residual_conv=with_residual_conv, + stride=conv_stride, + groups=groups) + + if last_fusion: + self.fusion_block = ConvBlock( + in_channels=out_channels, + out_channels=out_channels, + stride=2, + with_residual_conv=True, + groups=groups, + drop_path_rate=drop_path_rate) + else: + self.fusion_block = ConvBlock( + in_channels=out_channels, + out_channels=out_channels, + groups=groups, + drop_path_rate=drop_path_rate) + + self.squeeze_block = FCUDown( + in_channels=out_channels // expansion, + out_channels=embed_dims, + down_stride=down_stride, + with_cls_token=with_cls_token) + + self.expand_block = FCUUp( + in_channels=embed_dims, + out_channels=out_channels // expansion, + up_stride=down_stride, + with_cls_token=with_cls_token) + + self.trans_block = TransformerEncoderLayer( + embed_dims=embed_dims, + num_heads=num_heads, + feedforward_channels=int(embed_dims * mlp_ratio), + drop_rate=drop_rate, + drop_path_rate=drop_path_rate, + attn_drop_rate=attn_drop_rate, + qkv_bias=qkv_bias, + norm_cfg=dict(type='LN', eps=1e-6)) + + self.down_stride = down_stride + self.embed_dim = embed_dims + self.last_fusion = last_fusion + + def forward(self, cnn_input, trans_input): + x, x_conv2 = self.cnn_block(cnn_input, out_conv2=True) + + _, _, H, W = x_conv2.shape + + # Convert the feature map of conv2 to transformer embedding + # and concat with class token. + conv2_embedding = self.squeeze_block(x_conv2, trans_input) + + trans_output = self.trans_block(conv2_embedding + trans_input) + + # Convert the transformer output embedding to feature map + trans_features = self.expand_block(trans_output, H // self.down_stride, + W // self.down_stride) + x = self.fusion_block( + x, fusion_features=trans_features, out_conv2=False) + + return x, trans_output + + +@BACKBONES.register_module() +class Conformer(BaseBackbone): + """Conformer backbone. + + A PyTorch implementation of : `Conformer: Local Features Coupling Global + Representations for Visual Recognition `_ + + Args: + arch (str | dict): Conformer architecture. Defaults to 'tiny'. + patch_size (int): The patch size. Defaults to 16. + base_channels (int): The base number of channels in CNN network. + Defaults to 64. + mlp_ratio (float): The expansion ratio of FFN network in transformer + block. Defaults to 4. + with_cls_token (bool): Whether use class token or not. + Defaults to True. + drop_path_rate (float): stochastic depth rate. Defaults to 0. + out_indices (Sequence | int): Output from which stages. + Defaults to -1, means the last stage. + init_cfg (dict, optional): Initialization config dict. + Defaults to None. + """ + arch_zoo = { + **dict.fromkeys(['t', 'tiny'], + {'embed_dims': 384, + 'channel_ratio': 1, + 'num_heads': 6, + 'depths': 12 + }), + **dict.fromkeys(['s', 'small'], + {'embed_dims': 384, + 'channel_ratio': 4, + 'num_heads': 6, + 'depths': 12 + }), + **dict.fromkeys(['b', 'base'], + {'embed_dims': 576, + 'channel_ratio': 6, + 'num_heads': 9, + 'depths': 12 + }), + } # yapf: disable + + _version = 1 + + def __init__(self, + arch='tiny', + patch_size=16, + base_channels=64, + mlp_ratio=4., + qkv_bias=True, + with_cls_token=True, + drop_path_rate=0., + norm_eval=True, + frozen_stages=0, + out_indices=-1, + init_cfg=None): + + super().__init__(init_cfg=init_cfg) + + if isinstance(arch, str): + arch = arch.lower() + assert arch in set(self.arch_zoo), \ + f'Arch {arch} is not in default archs {set(self.arch_zoo)}' + self.arch_settings = self.arch_zoo[arch] + else: + essential_keys = { + 'embed_dims', 'depths', 'num_heads', 'channel_ratio' + } + assert isinstance(arch, dict) and set(arch) == essential_keys, \ + f'Custom arch needs a dict with keys {essential_keys}' + self.arch_settings = arch + + self.num_features = self.embed_dims = self.arch_settings['embed_dims'] + self.depths = self.arch_settings['depths'] + self.num_heads = self.arch_settings['num_heads'] + self.channel_ratio = self.arch_settings['channel_ratio'] + + if isinstance(out_indices, int): + out_indices = [out_indices] + assert isinstance(out_indices, Sequence), \ + f'"out_indices" must by a sequence or int, ' \ + f'get {type(out_indices)} instead.' + for i, index in enumerate(out_indices): + if index < 0: + out_indices[i] = self.depths + index + 1 + assert out_indices[i] >= 0, f'Invalid out_indices {index}' + self.out_indices = out_indices + + self.norm_eval = norm_eval + self.frozen_stages = frozen_stages + + self.with_cls_token = with_cls_token + if self.with_cls_token: + self.cls_token = nn.Parameter(torch.zeros(1, 1, self.embed_dims)) + + # stochastic depth decay rule + self.trans_dpr = [ + x.item() for x in torch.linspace(0, drop_path_rate, self.depths) + ] + + # Stem stage: get the feature maps by conv block + self.conv1 = nn.Conv2d( + 3, 64, kernel_size=7, stride=2, padding=3, + bias=False) # 1 / 2 [112, 112] + self.bn1 = nn.BatchNorm2d(64) + self.act1 = nn.ReLU(inplace=True) + self.maxpool = nn.MaxPool2d( + kernel_size=3, stride=2, padding=1) # 1 / 4 [56, 56] + + assert patch_size % 16 == 0, 'The patch size of Conformer must ' \ + 'be divisible by 16.' + trans_down_stride = patch_size // 4 + + # To solve the issue #680 + # Auto pad the feature map to be divisible by trans_down_stride + self.auto_pad = AdaptivePadding(trans_down_stride, trans_down_stride) + + # 1 stage + stage1_channels = int(base_channels * self.channel_ratio) + self.conv_1 = ConvBlock( + in_channels=64, + out_channels=stage1_channels, + with_residual_conv=True, + stride=1) + self.trans_patch_conv = nn.Conv2d( + 64, + self.embed_dims, + kernel_size=trans_down_stride, + stride=trans_down_stride, + padding=0) + + self.trans_1 = TransformerEncoderLayer( + embed_dims=self.embed_dims, + num_heads=self.num_heads, + feedforward_channels=int(self.embed_dims * mlp_ratio), + drop_path_rate=self.trans_dpr[0], + qkv_bias=qkv_bias, + norm_cfg=dict(type='LN', eps=1e-6)) + + # 2~4 stage + init_stage = 2 + fin_stage = self.depths // 3 + 1 + for i in range(init_stage, fin_stage): + self.add_module( + f'conv_trans_{i}', + ConvTransBlock( + in_channels=stage1_channels, + out_channels=stage1_channels, + embed_dims=self.embed_dims, + conv_stride=1, + with_residual_conv=False, + down_stride=trans_down_stride, + num_heads=self.num_heads, + mlp_ratio=mlp_ratio, + qkv_bias=qkv_bias, + drop_path_rate=self.trans_dpr[i - 1], + with_cls_token=self.with_cls_token)) + + stage2_channels = int(base_channels * self.channel_ratio * 2) + # 5~8 stage + init_stage = fin_stage # 5 + fin_stage = fin_stage + self.depths // 3 # 9 + for i in range(init_stage, fin_stage): + if i == init_stage: + conv_stride = 2 + in_channels = stage1_channels + else: + conv_stride = 1 + in_channels = stage2_channels + + with_residual_conv = True if i == init_stage else False + self.add_module( + f'conv_trans_{i}', + ConvTransBlock( + in_channels=in_channels, + out_channels=stage2_channels, + embed_dims=self.embed_dims, + conv_stride=conv_stride, + with_residual_conv=with_residual_conv, + down_stride=trans_down_stride // 2, + num_heads=self.num_heads, + mlp_ratio=mlp_ratio, + qkv_bias=qkv_bias, + drop_path_rate=self.trans_dpr[i - 1], + with_cls_token=self.with_cls_token)) + + stage3_channels = int(base_channels * self.channel_ratio * 2 * 2) + # 9~12 stage + init_stage = fin_stage # 9 + fin_stage = fin_stage + self.depths // 3 # 13 + for i in range(init_stage, fin_stage): + if i == init_stage: + conv_stride = 2 + in_channels = stage2_channels + with_residual_conv = True + else: + conv_stride = 1 + in_channels = stage3_channels + with_residual_conv = False + + last_fusion = (i == self.depths) + + self.add_module( + f'conv_trans_{i}', + ConvTransBlock( + in_channels=in_channels, + out_channels=stage3_channels, + embed_dims=self.embed_dims, + conv_stride=conv_stride, + with_residual_conv=with_residual_conv, + down_stride=trans_down_stride // 4, + num_heads=self.num_heads, + mlp_ratio=mlp_ratio, + qkv_bias=qkv_bias, + drop_path_rate=self.trans_dpr[i - 1], + with_cls_token=self.with_cls_token, + last_fusion=last_fusion)) + self.fin_stage = fin_stage + + self.pooling = nn.AdaptiveAvgPool2d(1) + self.trans_norm = nn.LayerNorm(self.embed_dims) + + if self.with_cls_token: + trunc_normal_(self.cls_token, std=.02) + + def _init_weights(self, m): + if isinstance(m, nn.Linear): + trunc_normal_(m.weight, std=.02) + if isinstance(m, nn.Linear) and m.bias is not None: + nn.init.constant_(m.bias, 0) + elif isinstance(m, nn.LayerNorm): + nn.init.constant_(m.bias, 0) + nn.init.constant_(m.weight, 1.0) + elif isinstance(m, nn.Conv2d): + nn.init.kaiming_normal_( + m.weight, mode='fan_out', nonlinearity='relu') + elif isinstance(m, nn.BatchNorm2d): + nn.init.constant_(m.weight, 1.) + nn.init.constant_(m.bias, 0.) + + if hasattr(m, 'zero_init_last_bn'): + m.zero_init_last_bn() + + def init_weights(self): + super(Conformer, self).init_weights() + logger = get_root_logger() + + if (isinstance(self.init_cfg, dict) + and self.init_cfg['type'] == 'Pretrained'): + # Suppress default init if use pretrained model. + return + else: + logger.info(f'No pre-trained weights for ' + f'{self.__class__.__name__}, ' + f'training start from scratch') + self.apply(self._init_weights) + + def forward(self, x): + output = [] + B = x.shape[0] + if self.with_cls_token: + cls_tokens = self.cls_token.expand(B, -1, -1) + + # stem + x_base = self.maxpool(self.act1(self.bn1(self.conv1(x)))) + x_base = self.auto_pad(x_base) + + # 1 stage [N, 64, 56, 56] -> [N, 128, 56, 56] + x = self.conv_1(x_base, out_conv2=False) + x_t = self.trans_patch_conv(x_base).flatten(2).transpose(1, 2) + if self.with_cls_token: + x_t = torch.cat([cls_tokens, x_t], dim=1) + x_t = self.trans_1(x_t) + + # 2 ~ final + for i in range(2, self.fin_stage): + stage = getattr(self, f'conv_trans_{i}') + x, x_t = stage(x, x_t) + if i in self.out_indices: + if self.with_cls_token: + output.append([ + self.pooling(x).flatten(1), + self.trans_norm(x_t)[:, 0] + ]) + else: + # if no class token, use the mean patch token + # as the transformer feature. + output.append([ + self.pooling(x).flatten(1), + self.trans_norm(x_t).mean(dim=1) + ]) + + return tuple(output) diff --git a/openmmlab_test/mmclassification-0.24.1/mmcls/models/backbones/convmixer.py b/openmmlab_test/mmclassification-0.24.1/mmcls/models/backbones/convmixer.py new file mode 100644 index 00000000..cb33fbfc --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/mmcls/models/backbones/convmixer.py @@ -0,0 +1,176 @@ +# Copyright (c) OpenMMLab. All rights reserved. +from typing import Sequence + +import torch +import torch.nn as nn +from mmcv.cnn.bricks import (Conv2dAdaptivePadding, build_activation_layer, + build_norm_layer) +from mmcv.utils import digit_version + +from ..builder import BACKBONES +from .base_backbone import BaseBackbone + + +class Residual(nn.Module): + + def __init__(self, fn): + super().__init__() + self.fn = fn + + def forward(self, x): + return self.fn(x) + x + + +@BACKBONES.register_module() +class ConvMixer(BaseBackbone): + """ConvMixer. . + + A PyTorch implementation of : `Patches Are All You Need? + `_ + + Modified from the `official repo + `_ + and `timm + `_. + + Args: + arch (str | dict): The model's architecture. If string, it should be + one of architecture in ``ConvMixer.arch_settings``. And if dict, it + should include the following two keys: + + - embed_dims (int): The dimensions of patch embedding. + - depth (int): Number of repetitions of ConvMixer Layer. + - patch_size (int): The patch size. + - kernel_size (int): The kernel size of depthwise conv layers. + + Defaults to '768/32'. + in_channels (int): Number of input image channels. Defaults to 3. + patch_size (int): The size of one patch in the patch embed layer. + Defaults to 7. + norm_cfg (dict): The config dict for norm layers. + Defaults to ``dict(type='BN')``. + act_cfg (dict): The config dict for activation after each convolution. + Defaults to ``dict(type='GELU')``. + out_indices (Sequence | int): Output from which stages. + Defaults to -1, means the last stage. + frozen_stages (int): Stages to be frozen (all param fixed). + Defaults to 0, which means not freezing any parameters. + init_cfg (dict, optional): Initialization config dict. + """ + arch_settings = { + '768/32': { + 'embed_dims': 768, + 'depth': 32, + 'patch_size': 7, + 'kernel_size': 7 + }, + '1024/20': { + 'embed_dims': 1024, + 'depth': 20, + 'patch_size': 14, + 'kernel_size': 9 + }, + '1536/20': { + 'embed_dims': 1536, + 'depth': 20, + 'patch_size': 7, + 'kernel_size': 9 + }, + } + + def __init__(self, + arch='768/32', + in_channels=3, + norm_cfg=dict(type='BN'), + act_cfg=dict(type='GELU'), + out_indices=-1, + frozen_stages=0, + init_cfg=None): + super().__init__(init_cfg=init_cfg) + + if isinstance(arch, str): + assert arch in self.arch_settings, \ + f'Unavailable arch, please choose from ' \ + f'({set(self.arch_settings)}) or pass a dict.' + arch = self.arch_settings[arch] + elif isinstance(arch, dict): + essential_keys = { + 'embed_dims', 'depth', 'patch_size', 'kernel_size' + } + assert isinstance(arch, dict) and essential_keys <= set(arch), \ + f'Custom arch needs a dict with keys {essential_keys}' + + self.embed_dims = arch['embed_dims'] + self.depth = arch['depth'] + self.patch_size = arch['patch_size'] + self.kernel_size = arch['kernel_size'] + self.act = build_activation_layer(act_cfg) + + # check out indices and frozen stages + if isinstance(out_indices, int): + out_indices = [out_indices] + assert isinstance(out_indices, Sequence), \ + f'"out_indices" must by a sequence or int, ' \ + f'get {type(out_indices)} instead.' + for i, index in enumerate(out_indices): + if index < 0: + out_indices[i] = self.depth + index + assert out_indices[i] >= 0, f'Invalid out_indices {index}' + self.out_indices = out_indices + self.frozen_stages = frozen_stages + + # Set stem layers + self.stem = nn.Sequential( + nn.Conv2d( + in_channels, + self.embed_dims, + kernel_size=self.patch_size, + stride=self.patch_size), self.act, + build_norm_layer(norm_cfg, self.embed_dims)[1]) + + # Set conv2d according to torch version + convfunc = nn.Conv2d + if digit_version(torch.__version__) < digit_version('1.9.0'): + convfunc = Conv2dAdaptivePadding + + # Repetitions of ConvMixer Layer + self.stages = nn.Sequential(*[ + nn.Sequential( + Residual( + nn.Sequential( + convfunc( + self.embed_dims, + self.embed_dims, + self.kernel_size, + groups=self.embed_dims, + padding='same'), self.act, + build_norm_layer(norm_cfg, self.embed_dims)[1])), + nn.Conv2d(self.embed_dims, self.embed_dims, kernel_size=1), + self.act, + build_norm_layer(norm_cfg, self.embed_dims)[1]) + for _ in range(self.depth) + ]) + + self._freeze_stages() + + def forward(self, x): + x = self.stem(x) + outs = [] + for i, stage in enumerate(self.stages): + x = stage(x) + if i in self.out_indices: + outs.append(x) + + # x = self.pooling(x).flatten(1) + return tuple(outs) + + def train(self, mode=True): + super(ConvMixer, self).train(mode) + self._freeze_stages() + + def _freeze_stages(self): + for i in range(self.frozen_stages): + stage = self.stages[i] + stage.eval() + for param in stage.parameters(): + param.requires_grad = False diff --git a/openmmlab_test/mmclassification-0.24.1/mmcls/models/backbones/convnext.py b/openmmlab_test/mmclassification-0.24.1/mmcls/models/backbones/convnext.py new file mode 100644 index 00000000..00393638 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/mmcls/models/backbones/convnext.py @@ -0,0 +1,333 @@ +# Copyright (c) OpenMMLab. All rights reserved. +from functools import partial +from itertools import chain +from typing import Sequence + +import torch +import torch.nn as nn +import torch.nn.functional as F +from mmcv.cnn.bricks import (NORM_LAYERS, DropPath, build_activation_layer, + build_norm_layer) +from mmcv.runner import BaseModule +from mmcv.runner.base_module import ModuleList, Sequential + +from ..builder import BACKBONES +from .base_backbone import BaseBackbone + + +@NORM_LAYERS.register_module('LN2d') +class LayerNorm2d(nn.LayerNorm): + """LayerNorm on channels for 2d images. + + Args: + num_channels (int): The number of channels of the input tensor. + eps (float): a value added to the denominator for numerical stability. + Defaults to 1e-5. + elementwise_affine (bool): a boolean value that when set to ``True``, + this module has learnable per-element affine parameters initialized + to ones (for weights) and zeros (for biases). Defaults to True. + """ + + def __init__(self, num_channels: int, **kwargs) -> None: + super().__init__(num_channels, **kwargs) + self.num_channels = self.normalized_shape[0] + + def forward(self, x): + assert x.dim() == 4, 'LayerNorm2d only supports inputs with shape ' \ + f'(N, C, H, W), but got tensor with shape {x.shape}' + return F.layer_norm( + x.permute(0, 2, 3, 1).contiguous(), self.normalized_shape, + self.weight, self.bias, self.eps).permute(0, 3, 1, 2).contiguous() + + +class ConvNeXtBlock(BaseModule): + """ConvNeXt Block. + + Args: + in_channels (int): The number of input channels. + norm_cfg (dict): The config dict for norm layers. + Defaults to ``dict(type='LN2d', eps=1e-6)``. + act_cfg (dict): The config dict for activation between pointwise + convolution. Defaults to ``dict(type='GELU')``. + mlp_ratio (float): The expansion ratio in both pointwise convolution. + Defaults to 4. + linear_pw_conv (bool): Whether to use linear layer to do pointwise + convolution. More details can be found in the note. + Defaults to True. + drop_path_rate (float): Stochastic depth rate. Defaults to 0. + layer_scale_init_value (float): Init value for Layer Scale. + Defaults to 1e-6. + + Note: + There are two equivalent implementations: + + 1. DwConv -> LayerNorm -> 1x1 Conv -> GELU -> 1x1 Conv; + all outputs are in (N, C, H, W). + 2. DwConv -> LayerNorm -> Permute to (N, H, W, C) -> Linear -> GELU + -> Linear; Permute back + + As default, we use the second to align with the official repository. + And it may be slightly faster. + """ + + def __init__(self, + in_channels, + norm_cfg=dict(type='LN2d', eps=1e-6), + act_cfg=dict(type='GELU'), + mlp_ratio=4., + linear_pw_conv=True, + drop_path_rate=0., + layer_scale_init_value=1e-6): + super().__init__() + self.depthwise_conv = nn.Conv2d( + in_channels, + in_channels, + kernel_size=7, + padding=3, + groups=in_channels) + + self.linear_pw_conv = linear_pw_conv + self.norm = build_norm_layer(norm_cfg, in_channels)[1] + + mid_channels = int(mlp_ratio * in_channels) + if self.linear_pw_conv: + # Use linear layer to do pointwise conv. + pw_conv = nn.Linear + else: + pw_conv = partial(nn.Conv2d, kernel_size=1) + + self.pointwise_conv1 = pw_conv(in_channels, mid_channels) + self.act = build_activation_layer(act_cfg) + self.pointwise_conv2 = pw_conv(mid_channels, in_channels) + + self.gamma = nn.Parameter( + layer_scale_init_value * torch.ones((in_channels)), + requires_grad=True) if layer_scale_init_value > 0 else None + + self.drop_path = DropPath( + drop_path_rate) if drop_path_rate > 0. else nn.Identity() + + def forward(self, x): + shortcut = x + x = self.depthwise_conv(x) + x = self.norm(x) + + if self.linear_pw_conv: + x = x.permute(0, 2, 3, 1) # (N, C, H, W) -> (N, H, W, C) + + x = self.pointwise_conv1(x) + x = self.act(x) + x = self.pointwise_conv2(x) + + if self.linear_pw_conv: + x = x.permute(0, 3, 1, 2) # permute back + + if self.gamma is not None: + x = x.mul(self.gamma.view(1, -1, 1, 1)) + + x = shortcut + self.drop_path(x) + return x + + +@BACKBONES.register_module() +class ConvNeXt(BaseBackbone): + """ConvNeXt. + + A PyTorch implementation of : `A ConvNet for the 2020s + `_ + + Modified from the `official repo + `_ + and `timm + `_. + + Args: + arch (str | dict): The model's architecture. If string, it should be + one of architecture in ``ConvNeXt.arch_settings``. And if dict, it + should include the following two keys: + + - depths (list[int]): Number of blocks at each stage. + - channels (list[int]): The number of channels at each stage. + + Defaults to 'tiny'. + in_channels (int): Number of input image channels. Defaults to 3. + stem_patch_size (int): The size of one patch in the stem layer. + Defaults to 4. + norm_cfg (dict): The config dict for norm layers. + Defaults to ``dict(type='LN2d', eps=1e-6)``. + act_cfg (dict): The config dict for activation between pointwise + convolution. Defaults to ``dict(type='GELU')``. + linear_pw_conv (bool): Whether to use linear layer to do pointwise + convolution. Defaults to True. + drop_path_rate (float): Stochastic depth rate. Defaults to 0. + layer_scale_init_value (float): Init value for Layer Scale. + Defaults to 1e-6. + out_indices (Sequence | int): Output from which stages. + Defaults to -1, means the last stage. + frozen_stages (int): Stages to be frozen (all param fixed). + Defaults to 0, which means not freezing any parameters. + gap_before_final_norm (bool): Whether to globally average the feature + map before the final norm layer. In the official repo, it's only + used in classification task. Defaults to True. + init_cfg (dict, optional): Initialization config dict + """ # noqa: E501 + arch_settings = { + 'tiny': { + 'depths': [3, 3, 9, 3], + 'channels': [96, 192, 384, 768] + }, + 'small': { + 'depths': [3, 3, 27, 3], + 'channels': [96, 192, 384, 768] + }, + 'base': { + 'depths': [3, 3, 27, 3], + 'channels': [128, 256, 512, 1024] + }, + 'large': { + 'depths': [3, 3, 27, 3], + 'channels': [192, 384, 768, 1536] + }, + 'xlarge': { + 'depths': [3, 3, 27, 3], + 'channels': [256, 512, 1024, 2048] + }, + } + + def __init__(self, + arch='tiny', + in_channels=3, + stem_patch_size=4, + norm_cfg=dict(type='LN2d', eps=1e-6), + act_cfg=dict(type='GELU'), + linear_pw_conv=True, + drop_path_rate=0., + layer_scale_init_value=1e-6, + out_indices=-1, + frozen_stages=0, + gap_before_final_norm=True, + init_cfg=None): + super().__init__(init_cfg=init_cfg) + + if isinstance(arch, str): + assert arch in self.arch_settings, \ + f'Unavailable arch, please choose from ' \ + f'({set(self.arch_settings)}) or pass a dict.' + arch = self.arch_settings[arch] + elif isinstance(arch, dict): + assert 'depths' in arch and 'channels' in arch, \ + f'The arch dict must have "depths" and "channels", ' \ + f'but got {list(arch.keys())}.' + + self.depths = arch['depths'] + self.channels = arch['channels'] + assert (isinstance(self.depths, Sequence) + and isinstance(self.channels, Sequence) + and len(self.depths) == len(self.channels)), \ + f'The "depths" ({self.depths}) and "channels" ({self.channels}) ' \ + 'should be both sequence with the same length.' + + self.num_stages = len(self.depths) + + if isinstance(out_indices, int): + out_indices = [out_indices] + assert isinstance(out_indices, Sequence), \ + f'"out_indices" must by a sequence or int, ' \ + f'get {type(out_indices)} instead.' + for i, index in enumerate(out_indices): + if index < 0: + out_indices[i] = 4 + index + assert out_indices[i] >= 0, f'Invalid out_indices {index}' + self.out_indices = out_indices + + self.frozen_stages = frozen_stages + self.gap_before_final_norm = gap_before_final_norm + + # stochastic depth decay rule + dpr = [ + x.item() + for x in torch.linspace(0, drop_path_rate, sum(self.depths)) + ] + block_idx = 0 + + # 4 downsample layers between stages, including the stem layer. + self.downsample_layers = ModuleList() + stem = nn.Sequential( + nn.Conv2d( + in_channels, + self.channels[0], + kernel_size=stem_patch_size, + stride=stem_patch_size), + build_norm_layer(norm_cfg, self.channels[0])[1], + ) + self.downsample_layers.append(stem) + + # 4 feature resolution stages, each consisting of multiple residual + # blocks + self.stages = nn.ModuleList() + + for i in range(self.num_stages): + depth = self.depths[i] + channels = self.channels[i] + + if i >= 1: + downsample_layer = nn.Sequential( + LayerNorm2d(self.channels[i - 1]), + nn.Conv2d( + self.channels[i - 1], + channels, + kernel_size=2, + stride=2), + ) + self.downsample_layers.append(downsample_layer) + + stage = Sequential(*[ + ConvNeXtBlock( + in_channels=channels, + drop_path_rate=dpr[block_idx + j], + norm_cfg=norm_cfg, + act_cfg=act_cfg, + linear_pw_conv=linear_pw_conv, + layer_scale_init_value=layer_scale_init_value) + for j in range(depth) + ]) + block_idx += depth + + self.stages.append(stage) + + if i in self.out_indices: + norm_layer = build_norm_layer(norm_cfg, channels)[1] + self.add_module(f'norm{i}', norm_layer) + + self._freeze_stages() + + def forward(self, x): + outs = [] + for i, stage in enumerate(self.stages): + x = self.downsample_layers[i](x) + x = stage(x) + if i in self.out_indices: + norm_layer = getattr(self, f'norm{i}') + if self.gap_before_final_norm: + gap = x.mean([-2, -1], keepdim=True) + outs.append(norm_layer(gap).flatten(1)) + else: + # The output of LayerNorm2d may be discontiguous, which + # may cause some problem in the downstream tasks + outs.append(norm_layer(x).contiguous()) + + return tuple(outs) + + def _freeze_stages(self): + for i in range(self.frozen_stages): + downsample_layer = self.downsample_layers[i] + stage = self.stages[i] + downsample_layer.eval() + stage.eval() + for param in chain(downsample_layer.parameters(), + stage.parameters()): + param.requires_grad = False + + def train(self, mode=True): + super(ConvNeXt, self).train(mode) + self._freeze_stages() diff --git a/openmmlab_test/mmclassification-0.24.1/mmcls/models/backbones/cspnet.py b/openmmlab_test/mmclassification-0.24.1/mmcls/models/backbones/cspnet.py new file mode 100644 index 00000000..70aff4c8 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/mmcls/models/backbones/cspnet.py @@ -0,0 +1,679 @@ +# Copyright (c) OpenMMLab. All rights reserved. +import math +from typing import Sequence + +import torch +import torch.nn as nn +from mmcv.cnn import ConvModule, DepthwiseSeparableConvModule +from mmcv.cnn.bricks import DropPath +from mmcv.runner import BaseModule, Sequential +from torch.nn.modules.batchnorm import _BatchNorm + +from ..builder import BACKBONES +from ..utils import to_ntuple +from .resnet import Bottleneck as ResNetBottleneck +from .resnext import Bottleneck as ResNeXtBottleneck + +eps = 1.0e-5 + + +class DarknetBottleneck(BaseModule): + """The basic bottleneck block used in Darknet. Each DarknetBottleneck + consists of two ConvModules and the input is added to the final output. + Each ConvModule is composed of Conv, BN, and LeakyReLU. The first convLayer + has filter size of 1x1 and the second one has the filter size of 3x3. + + Args: + in_channels (int): The input channels of this Module. + out_channels (int): The output channels of this Module. + expansion (int): The ratio of ``out_channels/mid_channels`` where + ``mid_channels`` is the input/output channels of conv2. + Defaults to 4. + add_identity (bool): Whether to add identity to the out. + Defaults to True. + use_depthwise (bool): Whether to use depthwise separable convolution. + Defaults to False. + conv_cfg (dict): Config dict for convolution layer. Defaults to None, + which means using conv2d. + drop_path_rate (float): The ratio of the drop path layer. Default: 0. + norm_cfg (dict): Config dict for normalization layer. + Defaults to ``dict(type='BN', eps=1e-5)``. + act_cfg (dict): Config dict for activation layer. + Defaults to ``dict(type='Swish')``. + """ + + def __init__(self, + in_channels, + out_channels, + expansion=2, + add_identity=True, + use_depthwise=False, + conv_cfg=None, + drop_path_rate=0, + norm_cfg=dict(type='BN', eps=1e-5), + act_cfg=dict(type='LeakyReLU', inplace=True), + init_cfg=None): + super().__init__(init_cfg) + hidden_channels = int(out_channels / expansion) + conv = DepthwiseSeparableConvModule if use_depthwise else ConvModule + self.conv1 = ConvModule( + in_channels, + hidden_channels, + 1, + conv_cfg=conv_cfg, + norm_cfg=norm_cfg, + act_cfg=act_cfg) + self.conv2 = conv( + hidden_channels, + out_channels, + 3, + stride=1, + padding=1, + conv_cfg=conv_cfg, + norm_cfg=norm_cfg, + act_cfg=act_cfg) + self.add_identity = \ + add_identity and in_channels == out_channels + + self.drop_path = DropPath(drop_prob=drop_path_rate + ) if drop_path_rate > eps else nn.Identity() + + def forward(self, x): + identity = x + out = self.conv1(x) + out = self.conv2(out) + out = self.drop_path(out) + + if self.add_identity: + return out + identity + else: + return out + + +class CSPStage(BaseModule): + """Cross Stage Partial Stage. + + .. code:: text + + Downsample Convolution (optional) + | + | + Expand Convolution + | + | + Split to xa, xb + | \ + | \ + | blocks(xb) + | / + | / transition + | / + Concat xa, blocks(xb) + | + Transition Convolution + + Args: + block_fn (nn.module): The basic block function in the Stage. + in_channels (int): The input channels of the CSP layer. + out_channels (int): The output channels of the CSP layer. + has_downsampler (bool): Whether to add a downsampler in the stage. + Default: False. + down_growth (bool): Whether to expand the channels in the + downsampler layer of the stage. Default: False. + expand_ratio (float): The expand ratio to adjust the number of + channels of the expand conv layer. Default: 0.5 + bottle_ratio (float): Ratio to adjust the number of channels of the + hidden layer. Default: 0.5 + block_dpr (float): The ratio of the drop path layer in the + blocks of the stage. Default: 0. + num_blocks (int): Number of blocks. Default: 1 + conv_cfg (dict, optional): Config dict for convolution layer. + Default: None, which means using conv2d. + norm_cfg (dict): Config dict for normalization layer. + Default: dict(type='BN') + act_cfg (dict): Config dict for activation layer. + Default: dict(type='LeakyReLU', inplace=True) + """ + + def __init__(self, + block_fn, + in_channels, + out_channels, + has_downsampler=True, + down_growth=False, + expand_ratio=0.5, + bottle_ratio=2, + num_blocks=1, + block_dpr=0, + block_args={}, + conv_cfg=None, + norm_cfg=dict(type='BN', eps=1e-5), + act_cfg=dict(type='LeakyReLU', inplace=True), + init_cfg=None): + super().__init__(init_cfg) + # grow downsample channels to output channels + down_channels = out_channels if down_growth else in_channels + block_dpr = to_ntuple(num_blocks)(block_dpr) + + if has_downsampler: + self.downsample_conv = ConvModule( + in_channels=in_channels, + out_channels=down_channels, + kernel_size=3, + stride=2, + padding=1, + groups=32 if block_fn is ResNeXtBottleneck else 1, + norm_cfg=norm_cfg, + act_cfg=act_cfg) + else: + self.downsample_conv = nn.Identity() + + exp_channels = int(down_channels * expand_ratio) + self.expand_conv = ConvModule( + in_channels=down_channels, + out_channels=exp_channels, + kernel_size=1, + norm_cfg=norm_cfg, + act_cfg=act_cfg if block_fn is DarknetBottleneck else None) + + assert exp_channels % 2 == 0, \ + 'The channel number before blocks must be divisible by 2.' + block_channels = exp_channels // 2 + blocks = [] + for i in range(num_blocks): + block_cfg = dict( + in_channels=block_channels, + out_channels=block_channels, + expansion=bottle_ratio, + drop_path_rate=block_dpr[i], + conv_cfg=conv_cfg, + norm_cfg=norm_cfg, + act_cfg=act_cfg, + **block_args) + blocks.append(block_fn(**block_cfg)) + self.blocks = Sequential(*blocks) + self.atfer_blocks_conv = ConvModule( + block_channels, + block_channels, + 1, + norm_cfg=norm_cfg, + act_cfg=act_cfg) + + self.final_conv = ConvModule( + 2 * block_channels, + out_channels, + 1, + norm_cfg=norm_cfg, + act_cfg=act_cfg) + + def forward(self, x): + x = self.downsample_conv(x) + x = self.expand_conv(x) + + split = x.shape[1] // 2 + xa, xb = x[:, :split], x[:, split:] + + xb = self.blocks(xb) + xb = self.atfer_blocks_conv(xb).contiguous() + + x_final = torch.cat((xa, xb), dim=1) + return self.final_conv(x_final) + + +class CSPNet(BaseModule): + """The abstract CSP Network class. + + A Pytorch implementation of `CSPNet: A New Backbone that can Enhance + Learning Capability of CNN `_ + + This class is an abstract class because the Cross Stage Partial Network + (CSPNet) is a kind of universal network structure, and you + network block to implement networks like CSPResNet, CSPResNeXt and + CSPDarkNet. + + Args: + arch (dict): The architecture of the CSPNet. + It should have the following keys: + + - block_fn (Callable): A function or class to return a block + module, and it should accept at least ``in_channels``, + ``out_channels``, ``expansion``, ``drop_path_rate``, ``norm_cfg`` + and ``act_cfg``. + - in_channels (Tuple[int]): The number of input channels of each + stage. + - out_channels (Tuple[int]): The number of output channels of each + stage. + - num_blocks (Tuple[int]): The number of blocks in each stage. + - expansion_ratio (float | Tuple[float]): The expansion ratio in + the expand convolution of each stage. Defaults to 0.5. + - bottle_ratio (float | Tuple[float]): The expansion ratio of + blocks in each stage. Defaults to 2. + - has_downsampler (bool | Tuple[bool]): Whether to add a + downsample convolution in each stage. Defaults to True + - down_growth (bool | Tuple[bool]): Whether to expand the channels + in the downsampler layer of each stage. Defaults to False. + - block_args (dict | Tuple[dict], optional): The extra arguments to + the blocks in each stage. Defaults to None. + + stem_fn (Callable): A function or class to return a stem module. + And it should accept ``in_channels``. + in_channels (int): Number of input image channels. Defaults to 3. + out_indices (int | Sequence[int]): Output from which stages. + Defaults to -1, which means the last stage. + frozen_stages (int): Stages to be frozen (stop grad and set eval mode). + -1 means not freezing any parameters. Defaults to -1. + conv_cfg (dict, optional): The config dict for conv layers in blocks. + Defaults to None, which means use Conv2d. + norm_cfg (dict): The config dict for norm layers. + Defaults to ``dict(type='BN', eps=1e-5)``. + act_cfg (dict): The config dict for activation functions. + Defaults to ``dict(type='LeakyReLU', inplace=True)``. + norm_eval (bool): Whether to set norm layers to eval mode, namely, + freeze running stats (mean and var). Note: Effect on Batch Norm + and its variants only. Defaults to False. + init_cfg (dict, optional): The initialization settings. + Defaults to ``dict(type='Kaiming', layer='Conv2d'))``. + + Example: + >>> from functools import partial + >>> import torch + >>> import torch.nn as nn + >>> from mmcls.models import CSPNet + >>> from mmcls.models.backbones.resnet import Bottleneck + >>> + >>> # A simple example to build CSPNet. + >>> arch = dict( + ... block_fn=Bottleneck, + ... in_channels=[32, 64], + ... out_channels=[64, 128], + ... num_blocks=[3, 4] + ... ) + >>> stem_fn = partial(nn.Conv2d, out_channels=32, kernel_size=3) + >>> model = CSPNet(arch=arch, stem_fn=stem_fn, out_indices=(0, 1)) + >>> inputs = torch.rand(1, 3, 224, 224) + >>> outs = model(inputs) + >>> for out in outs: + ... print(out.shape) + ... + (1, 64, 111, 111) + (1, 128, 56, 56) + """ + + def __init__(self, + arch, + stem_fn, + in_channels=3, + out_indices=-1, + frozen_stages=-1, + drop_path_rate=0., + conv_cfg=None, + norm_cfg=dict(type='BN', eps=1e-5), + act_cfg=dict(type='LeakyReLU', inplace=True), + norm_eval=False, + init_cfg=dict(type='Kaiming', layer='Conv2d')): + super().__init__(init_cfg=init_cfg) + self.arch = self.expand_arch(arch) + self.num_stages = len(self.arch['in_channels']) + self.conv_cfg = conv_cfg + self.norm_cfg = norm_cfg + self.act_cfg = act_cfg + self.norm_eval = norm_eval + if frozen_stages not in range(-1, self.num_stages): + raise ValueError('frozen_stages must be in range(-1, ' + f'{self.num_stages}). But received ' + f'{frozen_stages}') + self.frozen_stages = frozen_stages + + self.stem = stem_fn(in_channels) + + stages = [] + depths = self.arch['num_blocks'] + dpr = torch.linspace(0, drop_path_rate, sum(depths)).split(depths) + + for i in range(self.num_stages): + stage_cfg = {k: v[i] for k, v in self.arch.items()} + csp_stage = CSPStage( + **stage_cfg, + block_dpr=dpr[i].tolist(), + conv_cfg=conv_cfg, + norm_cfg=norm_cfg, + act_cfg=act_cfg, + init_cfg=init_cfg) + stages.append(csp_stage) + self.stages = Sequential(*stages) + + if isinstance(out_indices, int): + out_indices = [out_indices] + assert isinstance(out_indices, Sequence), \ + f'"out_indices" must by a sequence or int, ' \ + f'get {type(out_indices)} instead.' + out_indices = list(out_indices) + for i, index in enumerate(out_indices): + if index < 0: + out_indices[i] = len(self.stages) + index + assert 0 <= out_indices[i] <= len(self.stages), \ + f'Invalid out_indices {index}.' + self.out_indices = out_indices + + @staticmethod + def expand_arch(arch): + num_stages = len(arch['in_channels']) + + def to_tuple(x, name=''): + if isinstance(x, (list, tuple)): + assert len(x) == num_stages, \ + f'The length of {name} ({len(x)}) does not ' \ + f'equals to the number of stages ({num_stages})' + return tuple(x) + else: + return (x, ) * num_stages + + full_arch = {k: to_tuple(v, k) for k, v in arch.items()} + if 'block_args' not in full_arch: + full_arch['block_args'] = to_tuple({}) + return full_arch + + def _freeze_stages(self): + if self.frozen_stages >= 0: + self.stem.eval() + for param in self.stem.parameters(): + param.requires_grad = False + + for i in range(self.frozen_stages + 1): + m = self.stages[i] + m.eval() + for param in m.parameters(): + param.requires_grad = False + + def train(self, mode=True): + super(CSPNet, self).train(mode) + self._freeze_stages() + if mode and self.norm_eval: + for m in self.modules(): + if isinstance(m, _BatchNorm): + m.eval() + + def forward(self, x): + outs = [] + + x = self.stem(x) + for i, stage in enumerate(self.stages): + x = stage(x) + if i in self.out_indices: + outs.append(x) + return tuple(outs) + + +@BACKBONES.register_module() +class CSPDarkNet(CSPNet): + """CSP-Darknet backbone used in YOLOv4. + + Args: + depth (int): Depth of CSP-Darknet. Default: 53. + in_channels (int): Number of input image channels. Default: 3. + out_indices (Sequence[int]): Output from which stages. + Default: (3, ). + frozen_stages (int): Stages to be frozen (stop grad and set eval + mode). -1 means not freezing any parameters. Default: -1. + conv_cfg (dict): Config dict for convolution layer. Default: None. + norm_cfg (dict): Dictionary to construct and config norm layer. + Default: dict(type='BN', requires_grad=True). + act_cfg (dict): Config dict for activation layer. + Default: dict(type='LeakyReLU', negative_slope=0.1). + norm_eval (bool): Whether to set norm layers to eval mode, namely, + freeze running stats (mean and var). Note: Effect on Batch Norm + and its variants only. + init_cfg (dict or list[dict], optional): Initialization config dict. + Default: None. + + Example: + >>> from mmcls.models import CSPDarkNet + >>> import torch + >>> model = CSPDarkNet(depth=53, out_indices=(0, 1, 2, 3, 4)) + >>> model.eval() + >>> inputs = torch.rand(1, 3, 416, 416) + >>> level_outputs = model(inputs) + >>> for level_out in level_outputs: + ... print(tuple(level_out.shape)) + ... + (1, 64, 208, 208) + (1, 128, 104, 104) + (1, 256, 52, 52) + (1, 512, 26, 26) + (1, 1024, 13, 13) + """ + arch_settings = { + 53: + dict( + block_fn=DarknetBottleneck, + in_channels=(32, 64, 128, 256, 512), + out_channels=(64, 128, 256, 512, 1024), + num_blocks=(1, 2, 8, 8, 4), + expand_ratio=(2, 1, 1, 1, 1), + bottle_ratio=(2, 1, 1, 1, 1), + has_downsampler=True, + down_growth=True, + ), + } + + def __init__(self, + depth, + in_channels=3, + out_indices=(4, ), + frozen_stages=-1, + conv_cfg=None, + norm_cfg=dict(type='BN', eps=1e-5), + act_cfg=dict(type='LeakyReLU', inplace=True), + norm_eval=False, + init_cfg=dict( + type='Kaiming', + layer='Conv2d', + a=math.sqrt(5), + distribution='uniform', + mode='fan_in', + nonlinearity='leaky_relu')): + + assert depth in self.arch_settings, 'depth must be one of ' \ + f'{list(self.arch_settings.keys())}, but get {depth}.' + + super().__init__( + arch=self.arch_settings[depth], + stem_fn=self._make_stem_layer, + in_channels=in_channels, + out_indices=out_indices, + frozen_stages=frozen_stages, + conv_cfg=conv_cfg, + norm_cfg=norm_cfg, + act_cfg=act_cfg, + norm_eval=norm_eval, + init_cfg=init_cfg) + + def _make_stem_layer(self, in_channels): + """using a stride=1 conv as the stem in CSPDarknet.""" + # `stem_channels` equals to the `in_channels` in the first stage. + stem_channels = self.arch['in_channels'][0] + stem = ConvModule( + in_channels=in_channels, + out_channels=stem_channels, + kernel_size=3, + padding=1, + norm_cfg=self.norm_cfg, + act_cfg=self.act_cfg) + return stem + + +@BACKBONES.register_module() +class CSPResNet(CSPNet): + """CSP-ResNet backbone. + + Args: + depth (int): Depth of CSP-ResNet. Default: 50. + out_indices (Sequence[int]): Output from which stages. + Default: (4, ). + frozen_stages (int): Stages to be frozen (stop grad and set eval + mode). -1 means not freezing any parameters. Default: -1. + conv_cfg (dict): Config dict for convolution layer. Default: None. + norm_cfg (dict): Dictionary to construct and config norm layer. + Default: dict(type='BN', requires_grad=True). + act_cfg (dict): Config dict for activation layer. + Default: dict(type='LeakyReLU', negative_slope=0.1). + norm_eval (bool): Whether to set norm layers to eval mode, namely, + freeze running stats (mean and var). Note: Effect on Batch Norm + and its variants only. + init_cfg (dict or list[dict], optional): Initialization config dict. + Default: None. + Example: + >>> from mmcls.models import CSPResNet + >>> import torch + >>> model = CSPResNet(depth=50, out_indices=(0, 1, 2, 3)) + >>> model.eval() + >>> inputs = torch.rand(1, 3, 416, 416) + >>> level_outputs = model(inputs) + >>> for level_out in level_outputs: + ... print(tuple(level_out.shape)) + ... + (1, 128, 104, 104) + (1, 256, 52, 52) + (1, 512, 26, 26) + (1, 1024, 13, 13) + """ + arch_settings = { + 50: + dict( + block_fn=ResNetBottleneck, + in_channels=(64, 128, 256, 512), + out_channels=(128, 256, 512, 1024), + num_blocks=(3, 3, 5, 2), + expand_ratio=4, + bottle_ratio=2, + has_downsampler=(False, True, True, True), + down_growth=False), + } + + def __init__(self, + depth, + in_channels=3, + out_indices=(3, ), + frozen_stages=-1, + deep_stem=False, + conv_cfg=None, + norm_cfg=dict(type='BN', eps=1e-5), + act_cfg=dict(type='LeakyReLU', inplace=True), + norm_eval=False, + init_cfg=dict(type='Kaiming', layer='Conv2d')): + assert depth in self.arch_settings, 'depth must be one of ' \ + f'{list(self.arch_settings.keys())}, but get {depth}.' + self.deep_stem = deep_stem + + super().__init__( + arch=self.arch_settings[depth], + stem_fn=self._make_stem_layer, + in_channels=in_channels, + out_indices=out_indices, + frozen_stages=frozen_stages, + conv_cfg=conv_cfg, + norm_cfg=norm_cfg, + act_cfg=act_cfg, + norm_eval=norm_eval, + init_cfg=init_cfg) + + def _make_stem_layer(self, in_channels): + # `stem_channels` equals to the `in_channels` in the first stage. + stem_channels = self.arch['in_channels'][0] + if self.deep_stem: + stem = nn.Sequential( + ConvModule( + in_channels, + stem_channels // 2, + kernel_size=3, + stride=2, + padding=1, + conv_cfg=self.conv_cfg, + norm_cfg=self.norm_cfg, + act_cfg=self.act_cfg), + ConvModule( + stem_channels // 2, + stem_channels // 2, + kernel_size=3, + stride=1, + padding=1, + conv_cfg=self.conv_cfg, + norm_cfg=self.norm_cfg, + act_cfg=self.act_cfg), + ConvModule( + stem_channels // 2, + stem_channels, + kernel_size=3, + stride=1, + padding=1, + conv_cfg=self.conv_cfg, + norm_cfg=self.norm_cfg, + act_cfg=self.act_cfg)) + else: + stem = nn.Sequential( + ConvModule( + in_channels, + stem_channels, + kernel_size=7, + stride=2, + padding=3, + conv_cfg=self.conv_cfg, + norm_cfg=self.norm_cfg, + act_cfg=self.act_cfg), + nn.MaxPool2d(kernel_size=3, stride=2, padding=1)) + return stem + + +@BACKBONES.register_module() +class CSPResNeXt(CSPResNet): + """CSP-ResNeXt backbone. + + Args: + depth (int): Depth of CSP-ResNeXt. Default: 50. + out_indices (Sequence[int]): Output from which stages. + Default: (4, ). + frozen_stages (int): Stages to be frozen (stop grad and set eval + mode). -1 means not freezing any parameters. Default: -1. + conv_cfg (dict): Config dict for convolution layer. Default: None. + norm_cfg (dict): Dictionary to construct and config norm layer. + Default: dict(type='BN', requires_grad=True). + act_cfg (dict): Config dict for activation layer. + Default: dict(type='LeakyReLU', negative_slope=0.1). + norm_eval (bool): Whether to set norm layers to eval mode, namely, + freeze running stats (mean and var). Note: Effect on Batch Norm + and its variants only. + init_cfg (dict or list[dict], optional): Initialization config dict. + Default: None. + Example: + >>> from mmcls.models import CSPResNeXt + >>> import torch + >>> model = CSPResNeXt(depth=50, out_indices=(0, 1, 2, 3)) + >>> model.eval() + >>> inputs = torch.rand(1, 3, 224, 224) + >>> level_outputs = model(inputs) + >>> for level_out in level_outputs: + ... print(tuple(level_out.shape)) + ... + (1, 256, 56, 56) + (1, 512, 28, 28) + (1, 1024, 14, 14) + (1, 2048, 7, 7) + """ + arch_settings = { + 50: + dict( + block_fn=ResNeXtBottleneck, + in_channels=(64, 256, 512, 1024), + out_channels=(256, 512, 1024, 2048), + num_blocks=(3, 3, 5, 2), + expand_ratio=(4, 2, 2, 2), + bottle_ratio=4, + has_downsampler=(False, True, True, True), + down_growth=False, + # the base_channels is changed from 64 to 32 in CSPNet + block_args=dict(base_channels=32), + ), + } + + def __init__(self, *args, **kwargs): + super().__init__(*args, **kwargs) diff --git a/openmmlab_test/mmclassification-0.24.1/mmcls/models/backbones/deit.py b/openmmlab_test/mmclassification-0.24.1/mmcls/models/backbones/deit.py new file mode 100644 index 00000000..56e74e07 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/mmcls/models/backbones/deit.py @@ -0,0 +1,117 @@ +# Copyright (c) OpenMMLab. All rights reserved. +import torch +import torch.nn as nn +from mmcv.cnn.utils.weight_init import trunc_normal_ + +from ..builder import BACKBONES +from .vision_transformer import VisionTransformer + + +@BACKBONES.register_module() +class DistilledVisionTransformer(VisionTransformer): + """Distilled Vision Transformer. + + A PyTorch implement of : `Training data-efficient image transformers & + distillation through attention `_ + + Args: + arch (str | dict): Vision Transformer architecture. If use string, + choose from 'small', 'base', 'large', 'deit-tiny', 'deit-small' + and 'deit-base'. If use dict, it should have below keys: + + - **embed_dims** (int): The dimensions of embedding. + - **num_layers** (int): The number of transformer encoder layers. + - **num_heads** (int): The number of heads in attention modules. + - **feedforward_channels** (int): The hidden dimensions in + feedforward modules. + + Defaults to 'deit-base'. + img_size (int | tuple): The expected input image shape. Because we + support dynamic input shape, just set the argument to the most + common input image shape. Defaults to 224. + patch_size (int | tuple): The patch size in patch embedding. + Defaults to 16. + in_channels (int): The num of input channels. Defaults to 3. + out_indices (Sequence | int): Output from which stages. + Defaults to -1, means the last stage. + drop_rate (float): Probability of an element to be zeroed. + Defaults to 0. + drop_path_rate (float): stochastic depth rate. Defaults to 0. + qkv_bias (bool): Whether to add bias for qkv in attention modules. + Defaults to True. + norm_cfg (dict): Config dict for normalization layer. + Defaults to ``dict(type='LN')``. + final_norm (bool): Whether to add a additional layer to normalize + final feature map. Defaults to True. + with_cls_token (bool): Whether concatenating class token into image + tokens as transformer input. Defaults to True. + output_cls_token (bool): Whether output the cls_token. If set True, + ``with_cls_token`` must be True. Defaults to True. + interpolate_mode (str): Select the interpolate mode for position + embeding vector resize. Defaults to "bicubic". + patch_cfg (dict): Configs of patch embeding. Defaults to an empty dict. + layer_cfgs (Sequence | dict): Configs of each transformer layer in + encoder. Defaults to an empty dict. + init_cfg (dict, optional): Initialization config dict. + Defaults to None. + """ + num_extra_tokens = 2 # cls_token, dist_token + + def __init__(self, arch='deit-base', *args, **kwargs): + super(DistilledVisionTransformer, self).__init__( + arch=arch, *args, **kwargs) + self.dist_token = nn.Parameter(torch.zeros(1, 1, self.embed_dims)) + + def forward(self, x): + B = x.shape[0] + x, patch_resolution = self.patch_embed(x) + + # stole cls_tokens impl from Phil Wang, thanks + cls_tokens = self.cls_token.expand(B, -1, -1) + dist_token = self.dist_token.expand(B, -1, -1) + x = torch.cat((cls_tokens, dist_token, x), dim=1) + x = x + self.resize_pos_embed( + self.pos_embed, + self.patch_resolution, + patch_resolution, + mode=self.interpolate_mode, + num_extra_tokens=self.num_extra_tokens) + x = self.drop_after_pos(x) + + if not self.with_cls_token: + # Remove class token for transformer encoder input + x = x[:, 2:] + + outs = [] + for i, layer in enumerate(self.layers): + x = layer(x) + + if i == len(self.layers) - 1 and self.final_norm: + x = self.norm1(x) + + if i in self.out_indices: + B, _, C = x.shape + if self.with_cls_token: + patch_token = x[:, 2:].reshape(B, *patch_resolution, C) + patch_token = patch_token.permute(0, 3, 1, 2) + cls_token = x[:, 0] + dist_token = x[:, 1] + else: + patch_token = x.reshape(B, *patch_resolution, C) + patch_token = patch_token.permute(0, 3, 1, 2) + cls_token = None + dist_token = None + if self.output_cls_token: + out = [patch_token, cls_token, dist_token] + else: + out = patch_token + outs.append(out) + + return tuple(outs) + + def init_weights(self): + super(DistilledVisionTransformer, self).init_weights() + + if not (isinstance(self.init_cfg, dict) + and self.init_cfg['type'] == 'Pretrained'): + trunc_normal_(self.dist_token, std=0.02) diff --git a/openmmlab_test/mmclassification-0.24.1/mmcls/models/backbones/densenet.py b/openmmlab_test/mmclassification-0.24.1/mmcls/models/backbones/densenet.py new file mode 100644 index 00000000..9947fbf5 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/mmcls/models/backbones/densenet.py @@ -0,0 +1,332 @@ +# Copyright (c) OpenMMLab. All rights reserved. +import math +from itertools import chain +from typing import Sequence + +import torch +import torch.nn as nn +import torch.nn.functional as F +import torch.utils.checkpoint as cp +from mmcv.cnn.bricks import build_activation_layer, build_norm_layer +from torch.jit.annotations import List + +from ..builder import BACKBONES +from .base_backbone import BaseBackbone + + +class DenseLayer(BaseBackbone): + """DenseBlock layers.""" + + def __init__(self, + in_channels, + growth_rate, + bn_size, + norm_cfg=dict(type='BN'), + act_cfg=dict(type='ReLU'), + drop_rate=0., + memory_efficient=False): + super(DenseLayer, self).__init__() + + self.norm1 = build_norm_layer(norm_cfg, in_channels)[1] + self.conv1 = nn.Conv2d( + in_channels, + bn_size * growth_rate, + kernel_size=1, + stride=1, + bias=False) + self.act = build_activation_layer(act_cfg) + self.norm2 = build_norm_layer(norm_cfg, bn_size * growth_rate)[1] + self.conv2 = nn.Conv2d( + bn_size * growth_rate, + growth_rate, + kernel_size=3, + stride=1, + padding=1, + bias=False) + self.drop_rate = float(drop_rate) + self.memory_efficient = memory_efficient + + def bottleneck_fn(self, xs): + # type: (List[torch.Tensor]) -> torch.Tensor + concated_features = torch.cat(xs, 1) + bottleneck_output = self.conv1( + self.act(self.norm1(concated_features))) # noqa: T484 + return bottleneck_output + + # todo: rewrite when torchscript supports any + def any_requires_grad(self, x): + # type: (List[torch.Tensor]) -> bool + for tensor in x: + if tensor.requires_grad: + return True + return False + + # This decorator indicates to the compiler that a function or method + # should be ignored and replaced with the raising of an exception. + # Here this function is incompatible with torchscript. + @torch.jit.unused # noqa: T484 + def call_checkpoint_bottleneck(self, x): + # type: (List[torch.Tensor]) -> torch.Tensor + def closure(*xs): + return self.bottleneck_fn(xs) + + # Here use torch.utils.checkpoint to rerun a forward-pass during + # backward in bottleneck to save memories. + return cp.checkpoint(closure, *x) + + def forward(self, x): # noqa: F811 + # type: (List[torch.Tensor]) -> torch.Tensor + # assert input features is a list of Tensor + assert isinstance(x, list) + + if self.memory_efficient and self.any_requires_grad(x): + if torch.jit.is_scripting(): + raise Exception('Memory Efficient not supported in JIT') + bottleneck_output = self.call_checkpoint_bottleneck(x) + else: + bottleneck_output = self.bottleneck_fn(x) + + new_features = self.conv2(self.act(self.norm2(bottleneck_output))) + if self.drop_rate > 0: + new_features = F.dropout( + new_features, p=self.drop_rate, training=self.training) + return new_features + + +class DenseBlock(nn.Module): + """DenseNet Blocks.""" + + def __init__(self, + num_layers, + in_channels, + bn_size, + growth_rate, + norm_cfg=dict(type='BN'), + act_cfg=dict(type='ReLU'), + drop_rate=0., + memory_efficient=False): + super(DenseBlock, self).__init__() + self.block = nn.ModuleList([ + DenseLayer( + in_channels + i * growth_rate, + growth_rate=growth_rate, + bn_size=bn_size, + norm_cfg=norm_cfg, + act_cfg=act_cfg, + drop_rate=drop_rate, + memory_efficient=memory_efficient) for i in range(num_layers) + ]) + + def forward(self, init_features): + features = [init_features] + for layer in self.block: + new_features = layer(features) + features.append(new_features) + return torch.cat(features, 1) + + +class DenseTransition(nn.Sequential): + """DenseNet Transition Layers.""" + + def __init__(self, + in_channels, + out_channels, + norm_cfg=dict(type='BN'), + act_cfg=dict(type='ReLU')): + super(DenseTransition, self).__init__() + self.add_module('norm', build_norm_layer(norm_cfg, in_channels)[1]) + self.add_module('act', build_activation_layer(act_cfg)) + self.add_module( + 'conv', + nn.Conv2d( + in_channels, out_channels, kernel_size=1, stride=1, + bias=False)) + self.add_module('pool', nn.AvgPool2d(kernel_size=2, stride=2)) + + +@BACKBONES.register_module() +class DenseNet(BaseBackbone): + """DenseNet. + + A PyTorch implementation of : `Densely Connected Convolutional Networks + `_ + + Modified from the `official repo + `_ + and `pytorch + `_. + + Args: + arch (str | dict): The model's architecture. If string, it should be + one of architecture in ``DenseNet.arch_settings``. And if dict, it + should include the following two keys: + + - growth_rate (int): Each layer of DenseBlock produce `k` feature + maps. Here refers `k` as the growth rate of the network. + - depths (list[int]): Number of repeated layers in each DenseBlock. + - init_channels (int): The output channels of stem layers. + + Defaults to '121'. + in_channels (int): Number of input image channels. Defaults to 3. + bn_size (int): Refers to channel expansion parameter of 1x1 + convolution layer. Defaults to 4. + drop_rate (float): Drop rate of Dropout Layer. Defaults to 0. + compression_factor (float): The reduction rate of transition layers. + Defaults to 0.5. + memory_efficient (bool): If True, uses checkpointing. Much more memory + efficient, but slower. Defaults to False. + See `"paper" `_. + norm_cfg (dict): The config dict for norm layers. + Defaults to ``dict(type='BN')``. + act_cfg (dict): The config dict for activation after each convolution. + Defaults to ``dict(type='ReLU')``. + out_indices (Sequence | int): Output from which stages. + Defaults to -1, means the last stage. + frozen_stages (int): Stages to be frozen (all param fixed). + Defaults to 0, which means not freezing any parameters. + init_cfg (dict, optional): Initialization config dict. + """ + arch_settings = { + '121': { + 'growth_rate': 32, + 'depths': [6, 12, 24, 16], + 'init_channels': 64, + }, + '169': { + 'growth_rate': 32, + 'depths': [6, 12, 32, 32], + 'init_channels': 64, + }, + '201': { + 'growth_rate': 32, + 'depths': [6, 12, 48, 32], + 'init_channels': 64, + }, + '161': { + 'growth_rate': 48, + 'depths': [6, 12, 36, 24], + 'init_channels': 96, + }, + } + + def __init__(self, + arch='121', + in_channels=3, + bn_size=4, + drop_rate=0, + compression_factor=0.5, + memory_efficient=False, + norm_cfg=dict(type='BN'), + act_cfg=dict(type='ReLU'), + out_indices=-1, + frozen_stages=0, + init_cfg=None): + super().__init__(init_cfg=init_cfg) + + if isinstance(arch, str): + assert arch in self.arch_settings, \ + f'Unavailable arch, please choose from ' \ + f'({set(self.arch_settings)}) or pass a dict.' + arch = self.arch_settings[arch] + elif isinstance(arch, dict): + essential_keys = {'growth_rate', 'depths', 'init_channels'} + assert isinstance(arch, dict) and essential_keys <= set(arch), \ + f'Custom arch needs a dict with keys {essential_keys}' + + self.growth_rate = arch['growth_rate'] + self.depths = arch['depths'] + self.init_channels = arch['init_channels'] + self.act = build_activation_layer(act_cfg) + + self.num_stages = len(self.depths) + + # check out indices and frozen stages + if isinstance(out_indices, int): + out_indices = [out_indices] + assert isinstance(out_indices, Sequence), \ + f'"out_indices" must by a sequence or int, ' \ + f'get {type(out_indices)} instead.' + for i, index in enumerate(out_indices): + if index < 0: + out_indices[i] = self.num_stages + index + assert out_indices[i] >= 0, f'Invalid out_indices {index}' + self.out_indices = out_indices + self.frozen_stages = frozen_stages + + # Set stem layers + self.stem = nn.Sequential( + nn.Conv2d( + in_channels, + self.init_channels, + kernel_size=7, + stride=2, + padding=3, + bias=False), + build_norm_layer(norm_cfg, self.init_channels)[1], self.act, + nn.MaxPool2d(kernel_size=3, stride=2, padding=1)) + + # Repetitions of DenseNet Blocks + self.stages = nn.ModuleList() + self.transitions = nn.ModuleList() + + channels = self.init_channels + for i in range(self.num_stages): + depth = self.depths[i] + + stage = DenseBlock( + num_layers=depth, + in_channels=channels, + bn_size=bn_size, + growth_rate=self.growth_rate, + norm_cfg=norm_cfg, + act_cfg=act_cfg, + drop_rate=drop_rate, + memory_efficient=memory_efficient) + self.stages.append(stage) + channels += depth * self.growth_rate + + if i != self.num_stages - 1: + transition = DenseTransition( + in_channels=channels, + out_channels=math.floor(channels * compression_factor), + norm_cfg=norm_cfg, + act_cfg=act_cfg, + ) + channels = math.floor(channels * compression_factor) + else: + # Final layers after dense block is just bn with act. + # Unlike the paper, the original repo also put this in + # transition layer, whereas torchvision take this out. + # We reckon this as transition layer here. + transition = nn.Sequential( + build_norm_layer(norm_cfg, channels)[1], + self.act, + ) + self.transitions.append(transition) + + self._freeze_stages() + + def forward(self, x): + x = self.stem(x) + outs = [] + for i in range(self.num_stages): + x = self.stages[i](x) + x = self.transitions[i](x) + if i in self.out_indices: + outs.append(x) + + return tuple(outs) + + def _freeze_stages(self): + for i in range(self.frozen_stages): + downsample_layer = self.transitions[i] + stage = self.stages[i] + downsample_layer.eval() + stage.eval() + for param in chain(downsample_layer.parameters(), + stage.parameters()): + param.requires_grad = False + + def train(self, mode=True): + super(DenseNet, self).train(mode) + self._freeze_stages() diff --git a/openmmlab_test/mmclassification-0.24.1/mmcls/models/backbones/efficientformer.py b/openmmlab_test/mmclassification-0.24.1/mmcls/models/backbones/efficientformer.py new file mode 100644 index 00000000..173444ff --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/mmcls/models/backbones/efficientformer.py @@ -0,0 +1,606 @@ +# Copyright (c) OpenMMLab. All rights reserved. +import itertools +from typing import Optional, Sequence + +import torch +import torch.nn as nn +from mmcv.cnn.bricks import (ConvModule, DropPath, build_activation_layer, + build_norm_layer) +from mmcv.runner import BaseModule, ModuleList, Sequential + +from ..builder import BACKBONES +from ..utils import LayerScale +from .base_backbone import BaseBackbone +from .poolformer import Pooling + + +class AttentionWithBias(BaseModule): + """Multi-head Attention Module with attention_bias. + + Args: + embed_dims (int): The embedding dimension. + num_heads (int): Parallel attention heads. Defaults to 8. + key_dim (int): The dimension of q, k. Defaults to 32. + attn_ratio (float): The dimension of v equals to + ``key_dim * attn_ratio``. Defaults to 4. + resolution (int): The height and width of attention_bias. + Defaults to 7. + init_cfg (dict, optional): The Config for initialization. + Defaults to None. + """ + + def __init__(self, + embed_dims, + num_heads=8, + key_dim=32, + attn_ratio=4., + resolution=7, + init_cfg=None): + super().__init__(init_cfg=init_cfg) + self.num_heads = num_heads + self.scale = key_dim**-0.5 + self.attn_ratio = attn_ratio + self.key_dim = key_dim + self.nh_kd = key_dim * num_heads + self.d = int(attn_ratio * key_dim) + self.dh = int(attn_ratio * key_dim) * num_heads + h = self.dh + self.nh_kd * 2 + self.qkv = nn.Linear(embed_dims, h) + self.proj = nn.Linear(self.dh, embed_dims) + + points = list(itertools.product(range(resolution), range(resolution))) + N = len(points) + attention_offsets = {} + idxs = [] + for p1 in points: + for p2 in points: + offset = (abs(p1[0] - p2[0]), abs(p1[1] - p2[1])) + if offset not in attention_offsets: + attention_offsets[offset] = len(attention_offsets) + idxs.append(attention_offsets[offset]) + self.attention_biases = nn.Parameter( + torch.zeros(num_heads, len(attention_offsets))) + self.register_buffer('attention_bias_idxs', + torch.LongTensor(idxs).view(N, N)) + + @torch.no_grad() + def train(self, mode=True): + """change the mode of model.""" + super().train(mode) + if mode and hasattr(self, 'ab'): + del self.ab + else: + self.ab = self.attention_biases[:, self.attention_bias_idxs] + + def forward(self, x): + """forward function. + + Args: + x (tensor): input features with shape of (B, N, C) + """ + B, N, _ = x.shape + qkv = self.qkv(x) + qkv = qkv.reshape(B, N, self.num_heads, -1).permute(0, 2, 1, 3) + q, k, v = qkv.split([self.key_dim, self.key_dim, self.d], dim=-1) + + attn = ((q @ k.transpose(-2, -1)) * self.scale + + (self.attention_biases[:, self.attention_bias_idxs] + if self.training else self.ab)) + attn = attn.softmax(dim=-1) + x = (attn @ v).transpose(1, 2).reshape(B, N, self.dh) + x = self.proj(x) + return x + + +class Flat(nn.Module): + """Flat the input from (B, C, H, W) to (B, H*W, C).""" + + def __init__(self, ): + super().__init__() + + def forward(self, x: torch.Tensor): + x = x.flatten(2).transpose(1, 2) + return x + + +class LinearMlp(BaseModule): + """Mlp implemented with linear. + + The shape of input and output tensor are (B, N, C). + + Args: + in_features (int): Dimension of input features. + hidden_features (int): Dimension of hidden features. + out_features (int): Dimension of output features. + norm_cfg (dict): Config dict for normalization layer. + Defaults to ``dict(type='BN')``. + act_cfg (dict): The config dict for activation between pointwise + convolution. Defaults to ``dict(type='GELU')``. + drop (float): Dropout rate. Defaults to 0.0. + init_cfg (obj:`mmcv.ConfigDict`): The Config for initialization. + Default: None. + """ + + def __init__(self, + in_features: int, + hidden_features: Optional[int] = None, + out_features: Optional[int] = None, + act_cfg=dict(type='GELU'), + drop=0., + init_cfg=None): + super().__init__(init_cfg=init_cfg) + out_features = out_features or in_features + hidden_features = hidden_features or in_features + + self.fc1 = nn.Linear(in_features, hidden_features) + self.act = build_activation_layer(act_cfg) + self.drop1 = nn.Dropout(drop) + self.fc2 = nn.Linear(hidden_features, out_features) + self.drop2 = nn.Dropout(drop) + + def forward(self, x): + """ + Args: + x (torch.Tensor): input tensor with shape (B, N, C). + + Returns: + torch.Tensor: output tensor with shape (B, N, C). + """ + x = self.drop1(self.act(self.fc1(x))) + x = self.drop2(self.fc2(x)) + return x + + +class ConvMlp(BaseModule): + """Mlp implemented with 1*1 convolutions. + + Args: + in_features (int): Dimension of input features. + hidden_features (int): Dimension of hidden features. + out_features (int): Dimension of output features. + norm_cfg (dict): Config dict for normalization layer. + Defaults to ``dict(type='BN')``. + act_cfg (dict): The config dict for activation between pointwise + convolution. Defaults to ``dict(type='GELU')``. + drop (float): Dropout rate. Defaults to 0.0. + init_cfg (obj:`mmcv.ConfigDict`): The Config for initialization. + Default: None. + """ + + def __init__(self, + in_features, + hidden_features=None, + out_features=None, + norm_cfg=dict(type='BN'), + act_cfg=dict(type='GELU'), + drop=0., + init_cfg=None): + super().__init__(init_cfg=init_cfg) + out_features = out_features or in_features + hidden_features = hidden_features or in_features + self.fc1 = nn.Conv2d(in_features, hidden_features, 1) + self.act = build_activation_layer(act_cfg) + self.fc2 = nn.Conv2d(hidden_features, out_features, 1) + self.norm1 = build_norm_layer(norm_cfg, hidden_features)[1] + self.norm2 = build_norm_layer(norm_cfg, out_features)[1] + + self.drop = nn.Dropout(drop) + + def forward(self, x): + """ + Args: + x (torch.Tensor): input tensor with shape (B, C, H, W). + + Returns: + torch.Tensor: output tensor with shape (B, C, H, W). + """ + + x = self.act(self.norm1(self.fc1(x))) + x = self.drop(x) + x = self.norm2(self.fc2(x)) + x = self.drop(x) + return x + + +class Meta3D(BaseModule): + """Meta Former block using 3 dimensions inputs, ``torch.Tensor`` with shape + (B, N, C).""" + + def __init__(self, + dim, + mlp_ratio=4., + norm_cfg=dict(type='LN'), + act_cfg=dict(type='GELU'), + drop=0., + drop_path=0., + use_layer_scale=True, + init_cfg=None): + super().__init__(init_cfg=init_cfg) + self.norm1 = build_norm_layer(norm_cfg, dim)[1] + self.token_mixer = AttentionWithBias(dim) + self.norm2 = build_norm_layer(norm_cfg, dim)[1] + mlp_hidden_dim = int(dim * mlp_ratio) + self.mlp = LinearMlp( + in_features=dim, + hidden_features=mlp_hidden_dim, + act_cfg=act_cfg, + drop=drop) + + self.drop_path = DropPath(drop_path) if drop_path > 0. \ + else nn.Identity() + if use_layer_scale: + self.ls1 = LayerScale(dim) + self.ls2 = LayerScale(dim) + else: + self.ls1, self.ls2 = nn.Identity(), nn.Identity() + + def forward(self, x): + x = x + self.drop_path(self.ls1(self.token_mixer(self.norm1(x)))) + x = x + self.drop_path(self.ls2(self.mlp(self.norm2(x)))) + return x + + +class Meta4D(BaseModule): + """Meta Former block using 4 dimensions inputs, ``torch.Tensor`` with shape + (B, C, H, W).""" + + def __init__(self, + dim, + pool_size=3, + mlp_ratio=4., + act_cfg=dict(type='GELU'), + drop=0., + drop_path=0., + use_layer_scale=True, + init_cfg=None): + super().__init__(init_cfg=init_cfg) + + self.token_mixer = Pooling(pool_size=pool_size) + mlp_hidden_dim = int(dim * mlp_ratio) + self.mlp = ConvMlp( + in_features=dim, + hidden_features=mlp_hidden_dim, + act_cfg=act_cfg, + drop=drop) + + self.drop_path = DropPath(drop_path) if drop_path > 0. \ + else nn.Identity() + if use_layer_scale: + self.ls1 = LayerScale(dim, data_format='channels_first') + self.ls2 = LayerScale(dim, data_format='channels_first') + else: + self.ls1, self.ls2 = nn.Identity(), nn.Identity() + + def forward(self, x): + x = x + self.drop_path(self.ls1(self.token_mixer(x))) + x = x + self.drop_path(self.ls2(self.mlp(x))) + return x + + +def basic_blocks(in_channels, + out_channels, + index, + layers, + pool_size=3, + mlp_ratio=4., + act_cfg=dict(type='GELU'), + drop_rate=.0, + drop_path_rate=0., + use_layer_scale=True, + vit_num=1, + has_downsamper=False): + """generate EfficientFormer blocks for a stage.""" + blocks = [] + if has_downsamper: + blocks.append( + ConvModule( + in_channels=in_channels, + out_channels=out_channels, + kernel_size=3, + stride=2, + padding=1, + bias=True, + norm_cfg=dict(type='BN'), + act_cfg=None)) + if index == 3 and vit_num == layers[index]: + blocks.append(Flat()) + for block_idx in range(layers[index]): + block_dpr = drop_path_rate * (block_idx + sum(layers[:index])) / ( + sum(layers) - 1) + if index == 3 and layers[index] - block_idx <= vit_num: + blocks.append( + Meta3D( + out_channels, + mlp_ratio=mlp_ratio, + act_cfg=act_cfg, + drop=drop_rate, + drop_path=block_dpr, + use_layer_scale=use_layer_scale, + )) + else: + blocks.append( + Meta4D( + out_channels, + pool_size=pool_size, + act_cfg=act_cfg, + drop=drop_rate, + drop_path=block_dpr, + use_layer_scale=use_layer_scale)) + if index == 3 and layers[index] - block_idx - 1 == vit_num: + blocks.append(Flat()) + blocks = nn.Sequential(*blocks) + return blocks + + +@BACKBONES.register_module() +class EfficientFormer(BaseBackbone): + """EfficientFormer. + + A PyTorch implementation of EfficientFormer introduced by: + `EfficientFormer: Vision Transformers at MobileNet Speed `_ + + Modified from the `official repo + `. + + Args: + arch (str | dict): The model's architecture. If string, it should be + one of architecture in ``EfficientFormer.arch_settings``. And if dict, + it should include the following 4 keys: + + - layers (list[int]): Number of blocks at each stage. + - embed_dims (list[int]): The number of channels at each stage. + - downsamples (list[int]): Has downsample or not in the four stages. + - vit_num (int): The num of vit blocks in the last stage. + + Defaults to 'l1'. + + in_channels (int): The num of input channels. Defaults to 3. + pool_size (int): The pooling size of ``Meta4D`` blocks. Defaults to 3. + mlp_ratios (int): The dimension ratio of multi-head attention mechanism + in ``Meta4D`` blocks. Defaults to 3. + reshape_last_feat (bool): Whether to reshape the feature map from + (B, N, C) to (B, C, H, W) in the last stage, when the ``vit-num`` + in ``arch`` is not 0. Defaults to False. Usually set to True + in downstream tasks. + out_indices (Sequence[int]): Output from which stages. + Defaults to -1. + frozen_stages (int): Stages to be frozen (stop grad and set eval mode). + -1 means not freezing any parameters. Defaults to -1. + act_cfg (dict): The config dict for activation between pointwise + convolution. Defaults to ``dict(type='GELU')``. + drop_rate (float): Dropout rate. Defaults to 0. + drop_path_rate (float): Stochastic depth rate. Defaults to 0. + use_layer_scale (bool): Whether to use use_layer_scale in MetaFormer + block. Defaults to True. + init_cfg (dict, optional): Initialization config dict. + Defaults to None. + + Example: + >>> from mmcls.models import EfficientFormer + >>> import torch + >>> inputs = torch.rand((1, 3, 224, 224)) + >>> # build EfficientFormer backbone for classification task + >>> model = EfficientFormer(arch="l1") + >>> model.eval() + >>> level_outputs = model(inputs) + >>> for level_out in level_outputs: + ... print(tuple(level_out.shape)) + (1, 448, 49) + >>> # build EfficientFormer backbone for downstream task + >>> model = EfficientFormer( + >>> arch="l3", + >>> out_indices=(0, 1, 2, 3), + >>> reshape_last_feat=True) + >>> model.eval() + >>> level_outputs = model(inputs) + >>> for level_out in level_outputs: + ... print(tuple(level_out.shape)) + (1, 64, 56, 56) + (1, 128, 28, 28) + (1, 320, 14, 14) + (1, 512, 7, 7) + """ # noqa: E501 + + # --layers: [x,x,x,x], numbers of layers for the four stages + # --embed_dims: [x,x,x,x], embedding dims for the four stages + # --downsamples: [x,x,x,x], has downsample or not in the four stages + # --vit_num:(int), the num of vit blocks in the last stage + arch_settings = { + 'l1': { + 'layers': [3, 2, 6, 4], + 'embed_dims': [48, 96, 224, 448], + 'downsamples': [False, True, True, True], + 'vit_num': 1, + }, + 'l3': { + 'layers': [4, 4, 12, 6], + 'embed_dims': [64, 128, 320, 512], + 'downsamples': [False, True, True, True], + 'vit_num': 4, + }, + 'l7': { + 'layers': [6, 6, 18, 8], + 'embed_dims': [96, 192, 384, 768], + 'downsamples': [False, True, True, True], + 'vit_num': 8, + }, + } + + def __init__(self, + arch='l1', + in_channels=3, + pool_size=3, + mlp_ratios=4, + reshape_last_feat=False, + out_indices=-1, + frozen_stages=-1, + act_cfg=dict(type='GELU'), + drop_rate=0., + drop_path_rate=0., + use_layer_scale=True, + init_cfg=None): + + super().__init__(init_cfg=init_cfg) + self.num_extra_tokens = 0 # no cls_token, no dist_token + + if isinstance(arch, str): + assert arch in self.arch_settings, \ + f'Unavailable arch, please choose from ' \ + f'({set(self.arch_settings)}) or pass a dict.' + arch = self.arch_settings[arch] + elif isinstance(arch, dict): + default_keys = set(self.arch_settings['l1'].keys()) + assert set(arch.keys()) == default_keys, \ + f'The arch dict must have {default_keys}, ' \ + f'but got {list(arch.keys())}.' + + self.layers = arch['layers'] + self.embed_dims = arch['embed_dims'] + self.downsamples = arch['downsamples'] + assert isinstance(self.layers, list) and isinstance( + self.embed_dims, list) and isinstance(self.downsamples, list) + assert len(self.layers) == len(self.embed_dims) == len( + self.downsamples) + + self.vit_num = arch['vit_num'] + self.reshape_last_feat = reshape_last_feat + + assert self.vit_num >= 0, "'vit_num' must be an integer " \ + 'greater than or equal to 0.' + assert self.vit_num <= self.layers[-1], ( + "'vit_num' must be an integer smaller than layer number") + + self._make_stem(in_channels, self.embed_dims[0]) + + # set the main block in network + network = [] + for i in range(len(self.layers)): + if i != 0: + in_channels = self.embed_dims[i - 1] + else: + in_channels = self.embed_dims[i] + out_channels = self.embed_dims[i] + stage = basic_blocks( + in_channels, + out_channels, + i, + self.layers, + pool_size=pool_size, + mlp_ratio=mlp_ratios, + act_cfg=act_cfg, + drop_rate=drop_rate, + drop_path_rate=drop_path_rate, + vit_num=self.vit_num, + use_layer_scale=use_layer_scale, + has_downsamper=self.downsamples[i]) + network.append(stage) + + self.network = ModuleList(network) + + if isinstance(out_indices, int): + out_indices = [out_indices] + assert isinstance(out_indices, Sequence), \ + f'"out_indices" must by a sequence or int, ' \ + f'get {type(out_indices)} instead.' + for i, index in enumerate(out_indices): + if index < 0: + out_indices[i] = 4 + index + assert out_indices[i] >= 0, f'Invalid out_indices {index}' + + self.out_indices = out_indices + for i_layer in self.out_indices: + if not self.reshape_last_feat and \ + i_layer == 3 and self.vit_num > 0: + layer = build_norm_layer( + dict(type='LN'), self.embed_dims[i_layer])[1] + else: + # use GN with 1 group as channel-first LN2D + layer = build_norm_layer( + dict(type='GN', num_groups=1), self.embed_dims[i_layer])[1] + + layer_name = f'norm{i_layer}' + self.add_module(layer_name, layer) + + self.frozen_stages = frozen_stages + self._freeze_stages() + + def _make_stem(self, in_channels: int, stem_channels: int): + """make 2-ConvBNReLu stem layer.""" + self.patch_embed = Sequential( + ConvModule( + in_channels, + stem_channels // 2, + kernel_size=3, + stride=2, + padding=1, + bias=True, + conv_cfg=None, + norm_cfg=dict(type='BN'), + inplace=True), + ConvModule( + stem_channels // 2, + stem_channels, + kernel_size=3, + stride=2, + padding=1, + bias=True, + conv_cfg=None, + norm_cfg=dict(type='BN'), + inplace=True)) + + def forward_tokens(self, x): + outs = [] + for idx, block in enumerate(self.network): + if idx == len(self.network) - 1: + N, _, H, W = x.shape + if self.downsamples[idx]: + H, W = H // 2, W // 2 + x = block(x) + if idx in self.out_indices: + norm_layer = getattr(self, f'norm{idx}') + + if idx == len(self.network) - 1 and x.dim() == 3: + # when ``vit-num`` > 0 and in the last stage, + # if `self.reshape_last_feat`` is True, reshape the + # features to `BCHW` format before the final normalization. + # if `self.reshape_last_feat`` is False, do + # normalization directly and permute the features to `BCN`. + if self.reshape_last_feat: + x = x.permute((0, 2, 1)).reshape(N, -1, H, W) + x_out = norm_layer(x) + else: + x_out = norm_layer(x).permute((0, 2, 1)) + else: + x_out = norm_layer(x) + + outs.append(x_out.contiguous()) + return tuple(outs) + + def forward(self, x): + # input embedding + x = self.patch_embed(x) + # through stages + x = self.forward_tokens(x) + return x + + def _freeze_stages(self): + if self.frozen_stages >= 0: + self.patch_embed.eval() + for param in self.patch_embed.parameters(): + param.requires_grad = False + + for i in range(self.frozen_stages): + # Include both block and downsample layer. + module = self.network[i] + module.eval() + for param in module.parameters(): + param.requires_grad = False + if i in self.out_indices: + norm_layer = getattr(self, f'norm{i}') + norm_layer.eval() + for param in norm_layer.parameters(): + param.requires_grad = False + + def train(self, mode=True): + super(EfficientFormer, self).train(mode) + self._freeze_stages() diff --git a/openmmlab_test/mmclassification-0.24.1/mmcls/models/backbones/efficientnet.py b/openmmlab_test/mmclassification-0.24.1/mmcls/models/backbones/efficientnet.py new file mode 100644 index 00000000..ede2c184 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/mmcls/models/backbones/efficientnet.py @@ -0,0 +1,407 @@ +# Copyright (c) OpenMMLab. All rights reserved. +import copy +import math +from functools import partial + +import torch +import torch.nn as nn +import torch.utils.checkpoint as cp +from mmcv.cnn.bricks import ConvModule, DropPath +from mmcv.runner import BaseModule, Sequential + +from mmcls.models.backbones.base_backbone import BaseBackbone +from mmcls.models.utils import InvertedResidual, SELayer, make_divisible +from ..builder import BACKBONES + + +class EdgeResidual(BaseModule): + """Edge Residual Block. + + Args: + in_channels (int): The input channels of this module. + out_channels (int): The output channels of this module. + mid_channels (int): The input channels of the second convolution. + kernel_size (int): The kernel size of the first convolution. + Defaults to 3. + stride (int): The stride of the first convolution. Defaults to 1. + se_cfg (dict, optional): Config dict for se layer. Defaults to None, + which means no se layer. + with_residual (bool): Use residual connection. Defaults to True. + conv_cfg (dict, optional): Config dict for convolution layer. + Defaults to None, which means using conv2d. + norm_cfg (dict): Config dict for normalization layer. + Defaults to ``dict(type='BN')``. + act_cfg (dict): Config dict for activation layer. + Defaults to ``dict(type='ReLU')``. + drop_path_rate (float): stochastic depth rate. Defaults to 0. + with_cp (bool): Use checkpoint or not. Using checkpoint will save some + memory while slowing down the training speed. Defaults to False. + init_cfg (dict | list[dict], optional): Initialization config dict. + """ + + def __init__(self, + in_channels, + out_channels, + mid_channels, + kernel_size=3, + stride=1, + se_cfg=None, + with_residual=True, + conv_cfg=None, + norm_cfg=dict(type='BN'), + act_cfg=dict(type='ReLU'), + drop_path_rate=0., + with_cp=False, + init_cfg=None): + super(EdgeResidual, self).__init__(init_cfg=init_cfg) + assert stride in [1, 2] + self.with_cp = with_cp + self.drop_path = DropPath( + drop_path_rate) if drop_path_rate > 0 else nn.Identity() + self.with_se = se_cfg is not None + self.with_residual = ( + stride == 1 and in_channels == out_channels and with_residual) + + if self.with_se: + assert isinstance(se_cfg, dict) + + self.conv1 = ConvModule( + in_channels=in_channels, + out_channels=mid_channels, + kernel_size=kernel_size, + stride=1, + padding=kernel_size // 2, + conv_cfg=conv_cfg, + norm_cfg=norm_cfg, + act_cfg=act_cfg) + + if self.with_se: + self.se = SELayer(**se_cfg) + + self.conv2 = ConvModule( + in_channels=mid_channels, + out_channels=out_channels, + kernel_size=1, + stride=stride, + padding=0, + conv_cfg=conv_cfg, + norm_cfg=norm_cfg, + act_cfg=None) + + def forward(self, x): + + def _inner_forward(x): + out = x + out = self.conv1(out) + + if self.with_se: + out = self.se(out) + + out = self.conv2(out) + + if self.with_residual: + return x + self.drop_path(out) + else: + return out + + if self.with_cp and x.requires_grad: + out = cp.checkpoint(_inner_forward, x) + else: + out = _inner_forward(x) + + return out + + +def model_scaling(layer_setting, arch_setting): + """Scaling operation to the layer's parameters according to the + arch_setting.""" + # scale width + new_layer_setting = copy.deepcopy(layer_setting) + for layer_cfg in new_layer_setting: + for block_cfg in layer_cfg: + block_cfg[1] = make_divisible(block_cfg[1] * arch_setting[0], 8) + + # scale depth + split_layer_setting = [new_layer_setting[0]] + for layer_cfg in new_layer_setting[1:-1]: + tmp_index = [0] + for i in range(len(layer_cfg) - 1): + if layer_cfg[i + 1][1] != layer_cfg[i][1]: + tmp_index.append(i + 1) + tmp_index.append(len(layer_cfg)) + for i in range(len(tmp_index) - 1): + split_layer_setting.append(layer_cfg[tmp_index[i]:tmp_index[i + + 1]]) + split_layer_setting.append(new_layer_setting[-1]) + + num_of_layers = [len(layer_cfg) for layer_cfg in split_layer_setting[1:-1]] + new_layers = [ + int(math.ceil(arch_setting[1] * num)) for num in num_of_layers + ] + + merge_layer_setting = [split_layer_setting[0]] + for i, layer_cfg in enumerate(split_layer_setting[1:-1]): + if new_layers[i] <= num_of_layers[i]: + tmp_layer_cfg = layer_cfg[:new_layers[i]] + else: + tmp_layer_cfg = copy.deepcopy(layer_cfg) + [layer_cfg[-1]] * ( + new_layers[i] - num_of_layers[i]) + if tmp_layer_cfg[0][3] == 1 and i != 0: + merge_layer_setting[-1] += tmp_layer_cfg.copy() + else: + merge_layer_setting.append(tmp_layer_cfg.copy()) + merge_layer_setting.append(split_layer_setting[-1]) + + return merge_layer_setting + + +@BACKBONES.register_module() +class EfficientNet(BaseBackbone): + """EfficientNet backbone. + + Args: + arch (str): Architecture of efficientnet. Defaults to b0. + out_indices (Sequence[int]): Output from which stages. + Defaults to (6, ). + frozen_stages (int): Stages to be frozen (all param fixed). + Defaults to 0, which means not freezing any parameters. + conv_cfg (dict): Config dict for convolution layer. + Defaults to None, which means using conv2d. + norm_cfg (dict): Config dict for normalization layer. + Defaults to dict(type='BN'). + act_cfg (dict): Config dict for activation layer. + Defaults to dict(type='Swish'). + norm_eval (bool): Whether to set norm layers to eval mode, namely, + freeze running stats (mean and var). Note: Effect on Batch Norm + and its variants only. Defaults to False. + with_cp (bool): Use checkpoint or not. Using checkpoint will save some + memory while slowing down the training speed. Defaults to False. + """ + + # Parameters to build layers. + # 'b' represents the architecture of normal EfficientNet family includes + # 'b0', 'b1', 'b2', 'b3', 'b4', 'b5', 'b6', 'b7', 'b8'. + # 'e' represents the architecture of EfficientNet-EdgeTPU including 'es', + # 'em', 'el'. + # 6 parameters are needed to construct a layer, From left to right: + # - kernel_size: The kernel size of the block + # - out_channel: The number of out_channels of the block + # - se_ratio: The sequeeze ratio of SELayer. + # - stride: The stride of the block + # - expand_ratio: The expand_ratio of the mid_channels + # - block_type: -1: Not a block, 0: InvertedResidual, 1: EdgeResidual + layer_settings = { + 'b': [[[3, 32, 0, 2, 0, -1]], + [[3, 16, 4, 1, 1, 0]], + [[3, 24, 4, 2, 6, 0], + [3, 24, 4, 1, 6, 0]], + [[5, 40, 4, 2, 6, 0], + [5, 40, 4, 1, 6, 0]], + [[3, 80, 4, 2, 6, 0], + [3, 80, 4, 1, 6, 0], + [3, 80, 4, 1, 6, 0], + [5, 112, 4, 1, 6, 0], + [5, 112, 4, 1, 6, 0], + [5, 112, 4, 1, 6, 0]], + [[5, 192, 4, 2, 6, 0], + [5, 192, 4, 1, 6, 0], + [5, 192, 4, 1, 6, 0], + [5, 192, 4, 1, 6, 0], + [3, 320, 4, 1, 6, 0]], + [[1, 1280, 0, 1, 0, -1]] + ], + 'e': [[[3, 32, 0, 2, 0, -1]], + [[3, 24, 0, 1, 3, 1]], + [[3, 32, 0, 2, 8, 1], + [3, 32, 0, 1, 8, 1]], + [[3, 48, 0, 2, 8, 1], + [3, 48, 0, 1, 8, 1], + [3, 48, 0, 1, 8, 1], + [3, 48, 0, 1, 8, 1]], + [[5, 96, 0, 2, 8, 0], + [5, 96, 0, 1, 8, 0], + [5, 96, 0, 1, 8, 0], + [5, 96, 0, 1, 8, 0], + [5, 96, 0, 1, 8, 0], + [5, 144, 0, 1, 8, 0], + [5, 144, 0, 1, 8, 0], + [5, 144, 0, 1, 8, 0], + [5, 144, 0, 1, 8, 0]], + [[5, 192, 0, 2, 8, 0], + [5, 192, 0, 1, 8, 0]], + [[1, 1280, 0, 1, 0, -1]] + ] + } # yapf: disable + + # Parameters to build different kinds of architecture. + # From left to right: scaling factor for width, scaling factor for depth, + # resolution. + arch_settings = { + 'b0': (1.0, 1.0, 224), + 'b1': (1.0, 1.1, 240), + 'b2': (1.1, 1.2, 260), + 'b3': (1.2, 1.4, 300), + 'b4': (1.4, 1.8, 380), + 'b5': (1.6, 2.2, 456), + 'b6': (1.8, 2.6, 528), + 'b7': (2.0, 3.1, 600), + 'b8': (2.2, 3.6, 672), + 'es': (1.0, 1.0, 224), + 'em': (1.0, 1.1, 240), + 'el': (1.2, 1.4, 300) + } + + def __init__(self, + arch='b0', + drop_path_rate=0., + out_indices=(6, ), + frozen_stages=0, + conv_cfg=dict(type='Conv2dAdaptivePadding'), + norm_cfg=dict(type='BN', eps=1e-3), + act_cfg=dict(type='Swish'), + norm_eval=False, + with_cp=False, + init_cfg=[ + dict(type='Kaiming', layer='Conv2d'), + dict( + type='Constant', + layer=['_BatchNorm', 'GroupNorm'], + val=1) + ]): + super(EfficientNet, self).__init__(init_cfg) + assert arch in self.arch_settings, \ + f'"{arch}" is not one of the arch_settings ' \ + f'({", ".join(self.arch_settings.keys())})' + self.arch_setting = self.arch_settings[arch] + self.layer_setting = self.layer_settings[arch[:1]] + for index in out_indices: + if index not in range(0, len(self.layer_setting)): + raise ValueError('the item in out_indices must in ' + f'range(0, {len(self.layer_setting)}). ' + f'But received {index}') + + if frozen_stages not in range(len(self.layer_setting) + 1): + raise ValueError('frozen_stages must be in range(0, ' + f'{len(self.layer_setting) + 1}). ' + f'But received {frozen_stages}') + self.drop_path_rate = drop_path_rate + self.out_indices = out_indices + self.frozen_stages = frozen_stages + self.conv_cfg = conv_cfg + self.norm_cfg = norm_cfg + self.act_cfg = act_cfg + self.norm_eval = norm_eval + self.with_cp = with_cp + + self.layer_setting = model_scaling(self.layer_setting, + self.arch_setting) + block_cfg_0 = self.layer_setting[0][0] + block_cfg_last = self.layer_setting[-1][0] + self.in_channels = make_divisible(block_cfg_0[1], 8) + self.out_channels = block_cfg_last[1] + self.layers = nn.ModuleList() + self.layers.append( + ConvModule( + in_channels=3, + out_channels=self.in_channels, + kernel_size=block_cfg_0[0], + stride=block_cfg_0[3], + padding=block_cfg_0[0] // 2, + conv_cfg=self.conv_cfg, + norm_cfg=self.norm_cfg, + act_cfg=self.act_cfg)) + self.make_layer() + self.layers.append( + ConvModule( + in_channels=self.in_channels, + out_channels=self.out_channels, + kernel_size=block_cfg_last[0], + stride=block_cfg_last[3], + padding=block_cfg_last[0] // 2, + conv_cfg=self.conv_cfg, + norm_cfg=self.norm_cfg, + act_cfg=self.act_cfg)) + + def make_layer(self): + # Without the first and the final conv block. + layer_setting = self.layer_setting[1:-1] + + total_num_blocks = sum([len(x) for x in layer_setting]) + block_idx = 0 + dpr = [ + x.item() + for x in torch.linspace(0, self.drop_path_rate, total_num_blocks) + ] # stochastic depth decay rule + + for layer_cfg in layer_setting: + layer = [] + for i, block_cfg in enumerate(layer_cfg): + (kernel_size, out_channels, se_ratio, stride, expand_ratio, + block_type) = block_cfg + + mid_channels = int(self.in_channels * expand_ratio) + out_channels = make_divisible(out_channels, 8) + if se_ratio <= 0: + se_cfg = None + else: + se_cfg = dict( + channels=mid_channels, + ratio=expand_ratio * se_ratio, + divisor=1, + act_cfg=(self.act_cfg, dict(type='Sigmoid'))) + if block_type == 1: # edge tpu + if i > 0 and expand_ratio == 3: + with_residual = False + expand_ratio = 4 + else: + with_residual = True + mid_channels = int(self.in_channels * expand_ratio) + if se_cfg is not None: + se_cfg = dict( + channels=mid_channels, + ratio=se_ratio * expand_ratio, + divisor=1, + act_cfg=(self.act_cfg, dict(type='Sigmoid'))) + block = partial(EdgeResidual, with_residual=with_residual) + else: + block = InvertedResidual + layer.append( + block( + in_channels=self.in_channels, + out_channels=out_channels, + mid_channels=mid_channels, + kernel_size=kernel_size, + stride=stride, + se_cfg=se_cfg, + conv_cfg=self.conv_cfg, + norm_cfg=self.norm_cfg, + act_cfg=self.act_cfg, + drop_path_rate=dpr[block_idx], + with_cp=self.with_cp)) + self.in_channels = out_channels + block_idx += 1 + self.layers.append(Sequential(*layer)) + + def forward(self, x): + outs = [] + for i, layer in enumerate(self.layers): + x = layer(x) + if i in self.out_indices: + outs.append(x) + + return tuple(outs) + + def _freeze_stages(self): + for i in range(self.frozen_stages): + m = self.layers[i] + m.eval() + for param in m.parameters(): + param.requires_grad = False + + def train(self, mode=True): + super(EfficientNet, self).train(mode) + self._freeze_stages() + if mode and self.norm_eval: + for m in self.modules(): + if isinstance(m, nn.BatchNorm2d): + m.eval() diff --git a/openmmlab_test/mmclassification-0.24.1/mmcls/models/backbones/hornet.py b/openmmlab_test/mmclassification-0.24.1/mmcls/models/backbones/hornet.py new file mode 100644 index 00000000..1822b7c0 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/mmcls/models/backbones/hornet.py @@ -0,0 +1,499 @@ +# Copyright (c) OpenMMLab. All rights reserved. +# Adapted from official impl at https://github.com/raoyongming/HorNet. +try: + import torch.fft + fft = True +except ImportError: + fft = None + +import copy +from functools import partial +from typing import Sequence + +import torch +import torch.nn as nn +import torch.nn.functional as F +import torch.utils.checkpoint as checkpoint +from mmcv.cnn.bricks import DropPath + +from mmcls.models.builder import BACKBONES +from ..utils import LayerScale +from .base_backbone import BaseBackbone + + +def get_dwconv(dim, kernel_size, bias=True): + """build a pepth-wise convolution.""" + return nn.Conv2d( + dim, + dim, + kernel_size=kernel_size, + padding=(kernel_size - 1) // 2, + bias=bias, + groups=dim) + + +class HorNetLayerNorm(nn.Module): + """An implementation of LayerNorm of HorNet. + + The differences between HorNetLayerNorm & torch LayerNorm: + 1. Supports two data formats channels_last or channels_first. + + Args: + normalized_shape (int or list or torch.Size): input shape from an + expected input of size. + eps (float): a value added to the denominator for numerical stability. + Defaults to 1e-5. + data_format (str): The ordering of the dimensions in the inputs. + channels_last corresponds to inputs with shape (batch_size, height, + width, channels) while channels_first corresponds to inputs with + shape (batch_size, channels, height, width). + Defaults to 'channels_last'. + """ + + def __init__(self, + normalized_shape, + eps=1e-6, + data_format='channels_last'): + super().__init__() + self.weight = nn.Parameter(torch.ones(normalized_shape)) + self.bias = nn.Parameter(torch.zeros(normalized_shape)) + self.eps = eps + self.data_format = data_format + if self.data_format not in ['channels_last', 'channels_first']: + raise ValueError( + 'data_format must be channels_last or channels_first') + self.normalized_shape = (normalized_shape, ) + + def forward(self, x): + if self.data_format == 'channels_last': + return F.layer_norm(x, self.normalized_shape, self.weight, + self.bias, self.eps) + elif self.data_format == 'channels_first': + u = x.mean(1, keepdim=True) + s = (x - u).pow(2).mean(1, keepdim=True) + x = (x - u) / torch.sqrt(s + self.eps) + x = self.weight[:, None, None] * x + self.bias[:, None, None] + return x + + +class GlobalLocalFilter(nn.Module): + """A GlobalLocalFilter of HorNet. + + Args: + dim (int): Number of input channels. + h (int): Height of complex_weight. + Defaults to 14. + w (int): Width of complex_weight. + Defaults to 8. + """ + + def __init__(self, dim, h=14, w=8): + super().__init__() + self.dw = nn.Conv2d( + dim // 2, + dim // 2, + kernel_size=3, + padding=1, + bias=False, + groups=dim // 2) + self.complex_weight = nn.Parameter( + torch.randn(dim // 2, h, w, 2, dtype=torch.float32) * 0.02) + self.pre_norm = HorNetLayerNorm( + dim, eps=1e-6, data_format='channels_first') + self.post_norm = HorNetLayerNorm( + dim, eps=1e-6, data_format='channels_first') + + def forward(self, x): + x = self.pre_norm(x) + x1, x2 = torch.chunk(x, 2, dim=1) + x1 = self.dw(x1) + + x2 = x2.to(torch.float32) + B, C, a, b = x2.shape + x2 = torch.fft.rfft2(x2, dim=(2, 3), norm='ortho') + + weight = self.complex_weight + if not weight.shape[1:3] == x2.shape[2:4]: + weight = F.interpolate( + weight.permute(3, 0, 1, 2), + size=x2.shape[2:4], + mode='bilinear', + align_corners=True).permute(1, 2, 3, 0) + + weight = torch.view_as_complex(weight.contiguous()) + + x2 = x2 * weight + x2 = torch.fft.irfft2(x2, s=(a, b), dim=(2, 3), norm='ortho') + + x = torch.cat([x1.unsqueeze(2), x2.unsqueeze(2)], + dim=2).reshape(B, 2 * C, a, b) + x = self.post_norm(x) + return x + + +class gnConv(nn.Module): + """A gnConv of HorNet. + + Args: + dim (int): Number of input channels. + order (int): Order of gnConv. + Defaults to 5. + dw_cfg (dict): The Config for dw conv. + Defaults to ``dict(type='DW', kernel_size=7)``. + scale (float): Scaling parameter of gflayer outputs. + Defaults to 1.0. + """ + + def __init__(self, + dim, + order=5, + dw_cfg=dict(type='DW', kernel_size=7), + scale=1.0): + super().__init__() + self.order = order + self.dims = [dim // 2**i for i in range(order)] + self.dims.reverse() + self.proj_in = nn.Conv2d(dim, 2 * dim, 1) + + cfg = copy.deepcopy(dw_cfg) + dw_type = cfg.pop('type') + assert dw_type in ['DW', 'GF'],\ + 'dw_type should be `DW` or `GF`' + if dw_type == 'DW': + self.dwconv = get_dwconv(sum(self.dims), **cfg) + elif dw_type == 'GF': + self.dwconv = GlobalLocalFilter(sum(self.dims), **cfg) + + self.proj_out = nn.Conv2d(dim, dim, 1) + + self.projs = nn.ModuleList([ + nn.Conv2d(self.dims[i], self.dims[i + 1], 1) + for i in range(order - 1) + ]) + + self.scale = scale + + def forward(self, x): + x = self.proj_in(x) + y, x = torch.split(x, (self.dims[0], sum(self.dims)), dim=1) + + x = self.dwconv(x) * self.scale + + dw_list = torch.split(x, self.dims, dim=1) + x = y * dw_list[0] + + for i in range(self.order - 1): + x = self.projs[i](x) * dw_list[i + 1] + + x = self.proj_out(x) + + return x + + +class HorNetBlock(nn.Module): + """A block of HorNet. + + Args: + dim (int): Number of input channels. + order (int): Order of gnConv. + Defaults to 5. + dw_cfg (dict): The Config for dw conv. + Defaults to ``dict(type='DW', kernel_size=7)``. + scale (float): Scaling parameter of gflayer outputs. + Defaults to 1.0. + drop_path_rate (float): Stochastic depth rate. Defaults to 0. + use_layer_scale (bool): Whether to use use_layer_scale in HorNet + block. Defaults to True. + """ + + def __init__(self, + dim, + order=5, + dw_cfg=dict(type='DW', kernel_size=7), + scale=1.0, + drop_path_rate=0., + use_layer_scale=True): + super().__init__() + self.out_channels = dim + + self.norm1 = HorNetLayerNorm( + dim, eps=1e-6, data_format='channels_first') + self.gnconv = gnConv(dim, order, dw_cfg, scale) + self.norm2 = HorNetLayerNorm(dim, eps=1e-6) + self.pwconv1 = nn.Linear(dim, 4 * dim) + self.act = nn.GELU() + self.pwconv2 = nn.Linear(4 * dim, dim) + + if use_layer_scale: + self.gamma1 = LayerScale(dim, data_format='channels_first') + self.gamma2 = LayerScale(dim) + else: + self.gamma1, self.gamma2 = nn.Identity(), nn.Identity() + + self.drop_path = DropPath( + drop_path_rate) if drop_path_rate > 0. else nn.Identity() + + def forward(self, x): + x = x + self.drop_path(self.gamma1(self.gnconv(self.norm1(x)))) + + input = x + x = x.permute(0, 2, 3, 1) # (N, C, H, W) -> (N, H, W, C) + x = self.norm2(x) + x = self.pwconv1(x) + x = self.act(x) + x = self.pwconv2(x) + x = self.gamma2(x) + x = x.permute(0, 3, 1, 2) # (N, H, W, C) -> (N, C, H, W) + + x = input + self.drop_path(x) + return x + + +@BACKBONES.register_module() +class HorNet(BaseBackbone): + """HorNet + A PyTorch impl of : `HorNet: Efficient High-Order Spatial Interactions + with Recursive Gated Convolutions` + + Inspiration from + https://github.com/raoyongming/HorNet + + Args: + arch (str | dict): HorNet architecture. + If use string, choose from 'tiny', 'small', 'base' and 'large'. + If use dict, it should have below keys: + - **base_dim** (int): The base dimensions of embedding. + - **depths** (List[int]): The number of blocks in each stage. + - **orders** (List[int]): The number of order of gnConv in each + stage. + - **dw_cfg** (List[dict]): The Config for dw conv. + + Defaults to 'tiny'. + in_channels (int): Number of input image channels. Defaults to 3. + drop_path_rate (float): Stochastic depth rate. Defaults to 0. + scale (float): Scaling parameter of gflayer outputs. Defaults to 1/3. + use_layer_scale (bool): Whether to use use_layer_scale in HorNet + block. Defaults to True. + out_indices (Sequence[int]): Output from which stages. + Default: ``(3, )``. + frozen_stages (int): Stages to be frozen (stop grad and set eval mode). + -1 means not freezing any parameters. Defaults to -1. + with_cp (bool): Use checkpoint or not. Using checkpoint will save some + memory while slowing down the training speed. Defaults to False. + gap_before_final_norm (bool): Whether to globally average the feature + map before the final norm layer. In the official repo, it's only + used in classification task. Defaults to True. + init_cfg (dict, optional): The Config for initialization. + Defaults to None. + """ + arch_zoo = { + **dict.fromkeys(['t', 'tiny'], + {'base_dim': 64, + 'depths': [2, 3, 18, 2], + 'orders': [2, 3, 4, 5], + 'dw_cfg': [dict(type='DW', kernel_size=7)] * 4}), + **dict.fromkeys(['t-gf', 'tiny-gf'], + {'base_dim': 64, + 'depths': [2, 3, 18, 2], + 'orders': [2, 3, 4, 5], + 'dw_cfg': [ + dict(type='DW', kernel_size=7), + dict(type='DW', kernel_size=7), + dict(type='GF', h=14, w=8), + dict(type='GF', h=7, w=4)]}), + **dict.fromkeys(['s', 'small'], + {'base_dim': 96, + 'depths': [2, 3, 18, 2], + 'orders': [2, 3, 4, 5], + 'dw_cfg': [dict(type='DW', kernel_size=7)] * 4}), + **dict.fromkeys(['s-gf', 'small-gf'], + {'base_dim': 96, + 'depths': [2, 3, 18, 2], + 'orders': [2, 3, 4, 5], + 'dw_cfg': [ + dict(type='DW', kernel_size=7), + dict(type='DW', kernel_size=7), + dict(type='GF', h=14, w=8), + dict(type='GF', h=7, w=4)]}), + **dict.fromkeys(['b', 'base'], + {'base_dim': 128, + 'depths': [2, 3, 18, 2], + 'orders': [2, 3, 4, 5], + 'dw_cfg': [dict(type='DW', kernel_size=7)] * 4}), + **dict.fromkeys(['b-gf', 'base-gf'], + {'base_dim': 128, + 'depths': [2, 3, 18, 2], + 'orders': [2, 3, 4, 5], + 'dw_cfg': [ + dict(type='DW', kernel_size=7), + dict(type='DW', kernel_size=7), + dict(type='GF', h=14, w=8), + dict(type='GF', h=7, w=4)]}), + **dict.fromkeys(['b-gf384', 'base-gf384'], + {'base_dim': 128, + 'depths': [2, 3, 18, 2], + 'orders': [2, 3, 4, 5], + 'dw_cfg': [ + dict(type='DW', kernel_size=7), + dict(type='DW', kernel_size=7), + dict(type='GF', h=24, w=12), + dict(type='GF', h=13, w=7)]}), + **dict.fromkeys(['l', 'large'], + {'base_dim': 192, + 'depths': [2, 3, 18, 2], + 'orders': [2, 3, 4, 5], + 'dw_cfg': [dict(type='DW', kernel_size=7)] * 4}), + **dict.fromkeys(['l-gf', 'large-gf'], + {'base_dim': 192, + 'depths': [2, 3, 18, 2], + 'orders': [2, 3, 4, 5], + 'dw_cfg': [ + dict(type='DW', kernel_size=7), + dict(type='DW', kernel_size=7), + dict(type='GF', h=14, w=8), + dict(type='GF', h=7, w=4)]}), + **dict.fromkeys(['l-gf384', 'large-gf384'], + {'base_dim': 192, + 'depths': [2, 3, 18, 2], + 'orders': [2, 3, 4, 5], + 'dw_cfg': [ + dict(type='DW', kernel_size=7), + dict(type='DW', kernel_size=7), + dict(type='GF', h=24, w=12), + dict(type='GF', h=13, w=7)]}), + } # yapf: disable + + def __init__(self, + arch='tiny', + in_channels=3, + drop_path_rate=0., + scale=1 / 3, + use_layer_scale=True, + out_indices=(3, ), + frozen_stages=-1, + with_cp=False, + gap_before_final_norm=True, + init_cfg=None): + super().__init__(init_cfg=init_cfg) + if fft is None: + raise RuntimeError( + 'Failed to import torch.fft. Please install "torch>=1.7".') + + if isinstance(arch, str): + arch = arch.lower() + assert arch in set(self.arch_zoo), \ + f'Arch {arch} is not in default archs {set(self.arch_zoo)}' + self.arch_settings = self.arch_zoo[arch] + else: + essential_keys = {'base_dim', 'depths', 'orders', 'dw_cfg'} + assert isinstance(arch, dict) and set(arch) == essential_keys, \ + f'Custom arch needs a dict with keys {essential_keys}' + self.arch_settings = arch + + self.scale = scale + self.out_indices = out_indices + self.frozen_stages = frozen_stages + self.with_cp = with_cp + self.gap_before_final_norm = gap_before_final_norm + + base_dim = self.arch_settings['base_dim'] + dims = list(map(lambda x: 2**x * base_dim, range(4))) + + self.downsample_layers = nn.ModuleList() + stem = nn.Sequential( + nn.Conv2d(in_channels, dims[0], kernel_size=4, stride=4), + HorNetLayerNorm(dims[0], eps=1e-6, data_format='channels_first')) + self.downsample_layers.append(stem) + for i in range(3): + downsample_layer = nn.Sequential( + HorNetLayerNorm( + dims[i], eps=1e-6, data_format='channels_first'), + nn.Conv2d(dims[i], dims[i + 1], kernel_size=2, stride=2), + ) + self.downsample_layers.append(downsample_layer) + + total_depth = sum(self.arch_settings['depths']) + dpr = [ + x.item() for x in torch.linspace(0, drop_path_rate, total_depth) + ] # stochastic depth decay rule + + cur_block_idx = 0 + self.stages = nn.ModuleList() + for i in range(4): + stage = nn.Sequential(*[ + HorNetBlock( + dim=dims[i], + order=self.arch_settings['orders'][i], + dw_cfg=self.arch_settings['dw_cfg'][i], + scale=self.scale, + drop_path_rate=dpr[cur_block_idx + j], + use_layer_scale=use_layer_scale) + for j in range(self.arch_settings['depths'][i]) + ]) + self.stages.append(stage) + cur_block_idx += self.arch_settings['depths'][i] + + if isinstance(out_indices, int): + out_indices = [out_indices] + assert isinstance(out_indices, Sequence), \ + f'"out_indices" must by a sequence or int, ' \ + f'get {type(out_indices)} instead.' + out_indices = list(out_indices) + for i, index in enumerate(out_indices): + if index < 0: + out_indices[i] = len(self.stages) + index + assert 0 <= out_indices[i] <= len(self.stages), \ + f'Invalid out_indices {index}.' + self.out_indices = out_indices + + norm_layer = partial( + HorNetLayerNorm, eps=1e-6, data_format='channels_first') + for i_layer in out_indices: + layer = norm_layer(dims[i_layer]) + layer_name = f'norm{i_layer}' + self.add_module(layer_name, layer) + + def train(self, mode=True): + super(HorNet, self).train(mode) + self._freeze_stages() + + def _freeze_stages(self): + for i in range(0, self.frozen_stages + 1): + # freeze patch embed + m = self.downsample_layers[i] + m.eval() + for param in m.parameters(): + param.requires_grad = False + + # freeze blocks + m = self.stages[i] + m.eval() + for param in m.parameters(): + param.requires_grad = False + + if i in self.out_indices: + # freeze norm + m = getattr(self, f'norm{i + 1}') + m.eval() + for param in m.parameters(): + param.requires_grad = False + + def forward(self, x): + outs = [] + for i in range(4): + x = self.downsample_layers[i](x) + if self.with_cp: + x = checkpoint.checkpoint_sequential(self.stages[i], + len(self.stages[i]), x) + else: + x = self.stages[i](x) + if i in self.out_indices: + norm_layer = getattr(self, f'norm{i}') + if self.gap_before_final_norm: + gap = x.mean([-2, -1], keepdim=True) + outs.append(norm_layer(gap).flatten(1)) + else: + # The output of LayerNorm2d may be discontiguous, which + # may cause some problem in the downstream tasks + outs.append(norm_layer(x).contiguous()) + return tuple(outs) diff --git a/openmmlab_test/mmclassification-0.24.1/mmcls/models/backbones/hrnet.py b/openmmlab_test/mmclassification-0.24.1/mmcls/models/backbones/hrnet.py new file mode 100644 index 00000000..57baf0ca --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/mmcls/models/backbones/hrnet.py @@ -0,0 +1,563 @@ +# Copyright (c) OpenMMLab. All rights reserved. +import torch.nn as nn +from mmcv.cnn import build_conv_layer, build_norm_layer +from mmcv.runner import BaseModule, ModuleList, Sequential +from torch.nn.modules.batchnorm import _BatchNorm + +from ..builder import BACKBONES +from .resnet import BasicBlock, Bottleneck, ResLayer, get_expansion + + +class HRModule(BaseModule): + """High-Resolution Module for HRNet. + + In this module, every branch has 4 BasicBlocks/Bottlenecks. Fusion/Exchange + is in this module. + + Args: + num_branches (int): The number of branches. + block (``BaseModule``): Convolution block module. + num_blocks (tuple): The number of blocks in each branch. + The length must be equal to ``num_branches``. + num_channels (tuple): The number of base channels in each branch. + The length must be equal to ``num_branches``. + multiscale_output (bool): Whether to output multi-level features + produced by multiple branches. If False, only the first level + feature will be output. Defaults to True. + with_cp (bool): Use checkpoint or not. Using checkpoint will save some + memory while slowing down the training speed. Defaults to False. + conv_cfg (dict, optional): Dictionary to construct and config conv + layer. Defaults to None. + norm_cfg (dict): Dictionary to construct and config norm layer. + Defaults to ``dict(type='BN')``. + block_init_cfg (dict, optional): The initialization configs of every + blocks. Defaults to None. + init_cfg (dict or list[dict], optional): Initialization config dict. + Defaults to None. + """ + + def __init__(self, + num_branches, + block, + num_blocks, + in_channels, + num_channels, + multiscale_output=True, + with_cp=False, + conv_cfg=None, + norm_cfg=dict(type='BN'), + block_init_cfg=None, + init_cfg=None): + super(HRModule, self).__init__(init_cfg) + self.block_init_cfg = block_init_cfg + self._check_branches(num_branches, num_blocks, in_channels, + num_channels) + + self.in_channels = in_channels + self.num_branches = num_branches + + self.multiscale_output = multiscale_output + self.norm_cfg = norm_cfg + self.conv_cfg = conv_cfg + self.with_cp = with_cp + self.branches = self._make_branches(num_branches, block, num_blocks, + num_channels) + self.fuse_layers = self._make_fuse_layers() + self.relu = nn.ReLU(inplace=False) + + def _check_branches(self, num_branches, num_blocks, in_channels, + num_channels): + if num_branches != len(num_blocks): + error_msg = f'NUM_BRANCHES({num_branches}) ' \ + f'!= NUM_BLOCKS({len(num_blocks)})' + raise ValueError(error_msg) + + if num_branches != len(num_channels): + error_msg = f'NUM_BRANCHES({num_branches}) ' \ + f'!= NUM_CHANNELS({len(num_channels)})' + raise ValueError(error_msg) + + if num_branches != len(in_channels): + error_msg = f'NUM_BRANCHES({num_branches}) ' \ + f'!= NUM_INCHANNELS({len(in_channels)})' + raise ValueError(error_msg) + + def _make_branches(self, num_branches, block, num_blocks, num_channels): + branches = [] + + for i in range(num_branches): + out_channels = num_channels[i] * get_expansion(block) + branches.append( + ResLayer( + block=block, + num_blocks=num_blocks[i], + in_channels=self.in_channels[i], + out_channels=out_channels, + conv_cfg=self.conv_cfg, + norm_cfg=self.norm_cfg, + with_cp=self.with_cp, + init_cfg=self.block_init_cfg, + )) + + return ModuleList(branches) + + def _make_fuse_layers(self): + if self.num_branches == 1: + return None + + num_branches = self.num_branches + in_channels = self.in_channels + fuse_layers = [] + num_out_branches = num_branches if self.multiscale_output else 1 + for i in range(num_out_branches): + fuse_layer = [] + for j in range(num_branches): + if j > i: + # Upsample the feature maps of smaller scales. + fuse_layer.append( + nn.Sequential( + build_conv_layer( + self.conv_cfg, + in_channels[j], + in_channels[i], + kernel_size=1, + stride=1, + padding=0, + bias=False), + build_norm_layer(self.norm_cfg, in_channels[i])[1], + nn.Upsample( + scale_factor=2**(j - i), mode='nearest'))) + elif j == i: + # Keep the feature map with the same scale. + fuse_layer.append(None) + else: + # Downsample the feature maps of larger scales. + conv_downsamples = [] + for k in range(i - j): + # Use stacked convolution layers to downsample. + if k == i - j - 1: + conv_downsamples.append( + nn.Sequential( + build_conv_layer( + self.conv_cfg, + in_channels[j], + in_channels[i], + kernel_size=3, + stride=2, + padding=1, + bias=False), + build_norm_layer(self.norm_cfg, + in_channels[i])[1])) + else: + conv_downsamples.append( + nn.Sequential( + build_conv_layer( + self.conv_cfg, + in_channels[j], + in_channels[j], + kernel_size=3, + stride=2, + padding=1, + bias=False), + build_norm_layer(self.norm_cfg, + in_channels[j])[1], + nn.ReLU(inplace=False))) + fuse_layer.append(nn.Sequential(*conv_downsamples)) + fuse_layers.append(nn.ModuleList(fuse_layer)) + + return nn.ModuleList(fuse_layers) + + def forward(self, x): + """Forward function.""" + if self.num_branches == 1: + return [self.branches[0](x[0])] + + for i in range(self.num_branches): + x[i] = self.branches[i](x[i]) + + x_fuse = [] + for i in range(len(self.fuse_layers)): + y = 0 + for j in range(self.num_branches): + if i == j: + y += x[j] + else: + y += self.fuse_layers[i][j](x[j]) + x_fuse.append(self.relu(y)) + return x_fuse + + +@BACKBONES.register_module() +class HRNet(BaseModule): + """HRNet backbone. + + `High-Resolution Representations for Labeling Pixels and Regions + `_. + + Args: + arch (str): The preset HRNet architecture, includes 'w18', 'w30', + 'w32', 'w40', 'w44', 'w48', 'w64'. It will only be used if + extra is ``None``. Defaults to 'w32'. + extra (dict, optional): Detailed configuration for each stage of HRNet. + There must be 4 stages, the configuration for each stage must have + 5 keys: + + - num_modules (int): The number of HRModule in this stage. + - num_branches (int): The number of branches in the HRModule. + - block (str): The type of convolution block. Please choose between + 'BOTTLENECK' and 'BASIC'. + - num_blocks (tuple): The number of blocks in each branch. + The length must be equal to num_branches. + - num_channels (tuple): The number of base channels in each branch. + The length must be equal to num_branches. + + Defaults to None. + in_channels (int): Number of input image channels. Defaults to 3. + conv_cfg (dict, optional): Dictionary to construct and config conv + layer. Defaults to None. + norm_cfg (dict): Dictionary to construct and config norm layer. + Defaults to ``dict(type='BN')``. + norm_eval (bool): Whether to set norm layers to eval mode, namely, + freeze running stats (mean and var). Note: Effect on Batch Norm + and its variants only. Defaults to False. + with_cp (bool): Use checkpoint or not. Using checkpoint will save some + memory while slowing down the training speed. Defaults to False. + zero_init_residual (bool): Whether to use zero init for last norm layer + in resblocks to let them behave as identity. Defaults to False. + multiscale_output (bool): Whether to output multi-level features + produced by multiple branches. If False, only the first level + feature will be output. Defaults to True. + init_cfg (dict or list[dict], optional): Initialization config dict. + Defaults to None. + + Example: + >>> import torch + >>> from mmcls.models import HRNet + >>> extra = dict( + >>> stage1=dict( + >>> num_modules=1, + >>> num_branches=1, + >>> block='BOTTLENECK', + >>> num_blocks=(4, ), + >>> num_channels=(64, )), + >>> stage2=dict( + >>> num_modules=1, + >>> num_branches=2, + >>> block='BASIC', + >>> num_blocks=(4, 4), + >>> num_channels=(32, 64)), + >>> stage3=dict( + >>> num_modules=4, + >>> num_branches=3, + >>> block='BASIC', + >>> num_blocks=(4, 4, 4), + >>> num_channels=(32, 64, 128)), + >>> stage4=dict( + >>> num_modules=3, + >>> num_branches=4, + >>> block='BASIC', + >>> num_blocks=(4, 4, 4, 4), + >>> num_channels=(32, 64, 128, 256))) + >>> self = HRNet(extra, in_channels=1) + >>> self.eval() + >>> inputs = torch.rand(1, 1, 32, 32) + >>> level_outputs = self.forward(inputs) + >>> for level_out in level_outputs: + ... print(tuple(level_out.shape)) + (1, 32, 8, 8) + (1, 64, 4, 4) + (1, 128, 2, 2) + (1, 256, 1, 1) + """ + + blocks_dict = {'BASIC': BasicBlock, 'BOTTLENECK': Bottleneck} + arch_zoo = { + # num_modules, num_branches, block, num_blocks, num_channels + 'w18': [[1, 1, 'BOTTLENECK', (4, ), (64, )], + [1, 2, 'BASIC', (4, 4), (18, 36)], + [4, 3, 'BASIC', (4, 4, 4), (18, 36, 72)], + [3, 4, 'BASIC', (4, 4, 4, 4), (18, 36, 72, 144)]], + 'w30': [[1, 1, 'BOTTLENECK', (4, ), (64, )], + [1, 2, 'BASIC', (4, 4), (30, 60)], + [4, 3, 'BASIC', (4, 4, 4), (30, 60, 120)], + [3, 4, 'BASIC', (4, 4, 4, 4), (30, 60, 120, 240)]], + 'w32': [[1, 1, 'BOTTLENECK', (4, ), (64, )], + [1, 2, 'BASIC', (4, 4), (32, 64)], + [4, 3, 'BASIC', (4, 4, 4), (32, 64, 128)], + [3, 4, 'BASIC', (4, 4, 4, 4), (32, 64, 128, 256)]], + 'w40': [[1, 1, 'BOTTLENECK', (4, ), (64, )], + [1, 2, 'BASIC', (4, 4), (40, 80)], + [4, 3, 'BASIC', (4, 4, 4), (40, 80, 160)], + [3, 4, 'BASIC', (4, 4, 4, 4), (40, 80, 160, 320)]], + 'w44': [[1, 1, 'BOTTLENECK', (4, ), (64, )], + [1, 2, 'BASIC', (4, 4), (44, 88)], + [4, 3, 'BASIC', (4, 4, 4), (44, 88, 176)], + [3, 4, 'BASIC', (4, 4, 4, 4), (44, 88, 176, 352)]], + 'w48': [[1, 1, 'BOTTLENECK', (4, ), (64, )], + [1, 2, 'BASIC', (4, 4), (48, 96)], + [4, 3, 'BASIC', (4, 4, 4), (48, 96, 192)], + [3, 4, 'BASIC', (4, 4, 4, 4), (48, 96, 192, 384)]], + 'w64': [[1, 1, 'BOTTLENECK', (4, ), (64, )], + [1, 2, 'BASIC', (4, 4), (64, 128)], + [4, 3, 'BASIC', (4, 4, 4), (64, 128, 256)], + [3, 4, 'BASIC', (4, 4, 4, 4), (64, 128, 256, 512)]], + } # yapf:disable + + def __init__(self, + arch='w32', + extra=None, + in_channels=3, + conv_cfg=None, + norm_cfg=dict(type='BN'), + norm_eval=False, + with_cp=False, + zero_init_residual=False, + multiscale_output=True, + init_cfg=[ + dict(type='Kaiming', layer='Conv2d'), + dict( + type='Constant', + val=1, + layer=['_BatchNorm', 'GroupNorm']) + ]): + super(HRNet, self).__init__(init_cfg) + + extra = self.parse_arch(arch, extra) + + # Assert configurations of 4 stages are in extra + for i in range(1, 5): + assert f'stage{i}' in extra, f'Missing stage{i} config in "extra".' + # Assert whether the length of `num_blocks` and `num_channels` are + # equal to `num_branches` + cfg = extra[f'stage{i}'] + assert len(cfg['num_blocks']) == cfg['num_branches'] and \ + len(cfg['num_channels']) == cfg['num_branches'] + + self.extra = extra + self.conv_cfg = conv_cfg + self.norm_cfg = norm_cfg + self.norm_eval = norm_eval + self.with_cp = with_cp + self.zero_init_residual = zero_init_residual + + # -------------------- stem net -------------------- + self.conv1 = build_conv_layer( + self.conv_cfg, + in_channels, + out_channels=64, + kernel_size=3, + stride=2, + padding=1, + bias=False) + + self.norm1_name, norm1 = build_norm_layer(self.norm_cfg, 64, postfix=1) + self.add_module(self.norm1_name, norm1) + + self.conv2 = build_conv_layer( + self.conv_cfg, + in_channels=64, + out_channels=64, + kernel_size=3, + stride=2, + padding=1, + bias=False) + + self.norm2_name, norm2 = build_norm_layer(self.norm_cfg, 64, postfix=2) + self.add_module(self.norm2_name, norm2) + self.relu = nn.ReLU(inplace=True) + + # -------------------- stage 1 -------------------- + self.stage1_cfg = self.extra['stage1'] + base_channels = self.stage1_cfg['num_channels'] + block_type = self.stage1_cfg['block'] + num_blocks = self.stage1_cfg['num_blocks'] + + block = self.blocks_dict[block_type] + num_channels = [ + channel * get_expansion(block) for channel in base_channels + ] + # To align with the original code, use layer1 instead of stage1 here. + self.layer1 = ResLayer( + block, + in_channels=64, + out_channels=num_channels[0], + num_blocks=num_blocks[0]) + pre_num_channels = num_channels + + # -------------------- stage 2~4 -------------------- + for i in range(2, 5): + stage_cfg = self.extra[f'stage{i}'] + base_channels = stage_cfg['num_channels'] + block = self.blocks_dict[stage_cfg['block']] + multiscale_output_ = multiscale_output if i == 4 else True + + num_channels = [ + channel * get_expansion(block) for channel in base_channels + ] + # The transition layer from layer1 to stage2 + transition = self._make_transition_layer(pre_num_channels, + num_channels) + self.add_module(f'transition{i-1}', transition) + stage = self._make_stage( + stage_cfg, num_channels, multiscale_output=multiscale_output_) + self.add_module(f'stage{i}', stage) + + pre_num_channels = num_channels + + @property + def norm1(self): + """nn.Module: the normalization layer named "norm1" """ + return getattr(self, self.norm1_name) + + @property + def norm2(self): + """nn.Module: the normalization layer named "norm2" """ + return getattr(self, self.norm2_name) + + def _make_transition_layer(self, num_channels_pre_layer, + num_channels_cur_layer): + num_branches_cur = len(num_channels_cur_layer) + num_branches_pre = len(num_channels_pre_layer) + + transition_layers = [] + for i in range(num_branches_cur): + if i < num_branches_pre: + # For existing scale branches, + # add conv block when the channels are not the same. + if num_channels_cur_layer[i] != num_channels_pre_layer[i]: + transition_layers.append( + nn.Sequential( + build_conv_layer( + self.conv_cfg, + num_channels_pre_layer[i], + num_channels_cur_layer[i], + kernel_size=3, + stride=1, + padding=1, + bias=False), + build_norm_layer(self.norm_cfg, + num_channels_cur_layer[i])[1], + nn.ReLU(inplace=True))) + else: + transition_layers.append(nn.Identity()) + else: + # For new scale branches, add stacked downsample conv blocks. + # For example, num_branches_pre = 2, for the 4th branch, add + # stacked two downsample conv blocks. + conv_downsamples = [] + for j in range(i + 1 - num_branches_pre): + in_channels = num_channels_pre_layer[-1] + out_channels = num_channels_cur_layer[i] \ + if j == i - num_branches_pre else in_channels + conv_downsamples.append( + nn.Sequential( + build_conv_layer( + self.conv_cfg, + in_channels, + out_channels, + kernel_size=3, + stride=2, + padding=1, + bias=False), + build_norm_layer(self.norm_cfg, out_channels)[1], + nn.ReLU(inplace=True))) + transition_layers.append(nn.Sequential(*conv_downsamples)) + + return nn.ModuleList(transition_layers) + + def _make_stage(self, layer_config, in_channels, multiscale_output=True): + num_modules = layer_config['num_modules'] + num_branches = layer_config['num_branches'] + num_blocks = layer_config['num_blocks'] + num_channels = layer_config['num_channels'] + block = self.blocks_dict[layer_config['block']] + + hr_modules = [] + block_init_cfg = None + if self.zero_init_residual: + if block is BasicBlock: + block_init_cfg = dict( + type='Constant', val=0, override=dict(name='norm2')) + elif block is Bottleneck: + block_init_cfg = dict( + type='Constant', val=0, override=dict(name='norm3')) + + for i in range(num_modules): + # multi_scale_output is only used for the last module + if not multiscale_output and i == num_modules - 1: + reset_multiscale_output = False + else: + reset_multiscale_output = True + + hr_modules.append( + HRModule( + num_branches, + block, + num_blocks, + in_channels, + num_channels, + reset_multiscale_output, + with_cp=self.with_cp, + norm_cfg=self.norm_cfg, + conv_cfg=self.conv_cfg, + block_init_cfg=block_init_cfg)) + + return Sequential(*hr_modules) + + def forward(self, x): + """Forward function.""" + x = self.conv1(x) + x = self.norm1(x) + x = self.relu(x) + x = self.conv2(x) + x = self.norm2(x) + x = self.relu(x) + x = self.layer1(x) + + x_list = [x] + + for i in range(2, 5): + # Apply transition + transition = getattr(self, f'transition{i-1}') + inputs = [] + for j, layer in enumerate(transition): + if j < len(x_list): + inputs.append(layer(x_list[j])) + else: + inputs.append(layer(x_list[-1])) + # Forward HRModule + stage = getattr(self, f'stage{i}') + x_list = stage(inputs) + + return tuple(x_list) + + def train(self, mode=True): + """Convert the model into training mode will keeping the normalization + layer freezed.""" + super(HRNet, self).train(mode) + if mode and self.norm_eval: + for m in self.modules(): + # trick: eval have effect on BatchNorm only + if isinstance(m, _BatchNorm): + m.eval() + + def parse_arch(self, arch, extra=None): + if extra is not None: + return extra + + assert arch in self.arch_zoo, \ + ('Invalid arch, please choose arch from ' + f'{list(self.arch_zoo.keys())}, or specify `extra` ' + 'argument directly.') + + extra = dict() + for i, stage_setting in enumerate(self.arch_zoo[arch], start=1): + extra[f'stage{i}'] = dict( + num_modules=stage_setting[0], + num_branches=stage_setting[1], + block=stage_setting[2], + num_blocks=stage_setting[3], + num_channels=stage_setting[4], + ) + + return extra diff --git a/openmmlab_test/mmclassification-speed-benchmark/mmcls/models/backbones/lenet.py b/openmmlab_test/mmclassification-0.24.1/mmcls/models/backbones/lenet.py similarity index 94% rename from openmmlab_test/mmclassification-speed-benchmark/mmcls/models/backbones/lenet.py rename to openmmlab_test/mmclassification-0.24.1/mmcls/models/backbones/lenet.py index 81b9c59e..11686619 100644 --- a/openmmlab_test/mmclassification-speed-benchmark/mmcls/models/backbones/lenet.py +++ b/openmmlab_test/mmclassification-0.24.1/mmcls/models/backbones/lenet.py @@ -1,3 +1,4 @@ +# Copyright (c) OpenMMLab. All rights reserved. import torch.nn as nn from ..builder import BACKBONES @@ -38,4 +39,4 @@ class LeNet5(BaseBackbone): if self.num_classes > 0: x = self.classifier(x.squeeze()) - return x + return (x, ) diff --git a/openmmlab_test/mmclassification-0.24.1/mmcls/models/backbones/mlp_mixer.py b/openmmlab_test/mmclassification-0.24.1/mmcls/models/backbones/mlp_mixer.py new file mode 100644 index 00000000..13171a4b --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/mmcls/models/backbones/mlp_mixer.py @@ -0,0 +1,263 @@ +# Copyright (c) OpenMMLab. All rights reserved. +from typing import Sequence + +import torch.nn as nn +from mmcv.cnn import build_norm_layer +from mmcv.cnn.bricks.transformer import FFN, PatchEmbed +from mmcv.runner.base_module import BaseModule, ModuleList + +from ..builder import BACKBONES +from ..utils import to_2tuple +from .base_backbone import BaseBackbone + + +class MixerBlock(BaseModule): + """Mlp-Mixer basic block. + + Basic module of `MLP-Mixer: An all-MLP Architecture for Vision + `_ + + Args: + num_tokens (int): The number of patched tokens + embed_dims (int): The feature dimension + tokens_mlp_dims (int): The hidden dimension for tokens FFNs + channels_mlp_dims (int): The hidden dimension for channels FFNs + drop_rate (float): Probability of an element to be zeroed + after the feed forward layer. Defaults to 0. + drop_path_rate (float): Stochastic depth rate. Defaults to 0. + num_fcs (int): The number of fully-connected layers for FFNs. + Defaults to 2. + act_cfg (dict): The activation config for FFNs. + Defaluts to ``dict(type='GELU')``. + norm_cfg (dict): Config dict for normalization layer. + Defaults to ``dict(type='LN')``. + init_cfg (dict, optional): Initialization config dict. + Defaults to None. + """ + + def __init__(self, + num_tokens, + embed_dims, + tokens_mlp_dims, + channels_mlp_dims, + drop_rate=0., + drop_path_rate=0., + num_fcs=2, + act_cfg=dict(type='GELU'), + norm_cfg=dict(type='LN'), + init_cfg=None): + super(MixerBlock, self).__init__(init_cfg=init_cfg) + + self.norm1_name, norm1 = build_norm_layer( + norm_cfg, embed_dims, postfix=1) + self.add_module(self.norm1_name, norm1) + self.token_mix = FFN( + embed_dims=num_tokens, + feedforward_channels=tokens_mlp_dims, + num_fcs=num_fcs, + ffn_drop=drop_rate, + dropout_layer=dict(type='DropPath', drop_prob=drop_path_rate), + act_cfg=act_cfg, + add_identity=False) + + self.norm2_name, norm2 = build_norm_layer( + norm_cfg, embed_dims, postfix=2) + self.add_module(self.norm2_name, norm2) + self.channel_mix = FFN( + embed_dims=embed_dims, + feedforward_channels=channels_mlp_dims, + num_fcs=num_fcs, + ffn_drop=drop_rate, + dropout_layer=dict(type='DropPath', drop_prob=drop_path_rate), + act_cfg=act_cfg) + + @property + def norm1(self): + return getattr(self, self.norm1_name) + + @property + def norm2(self): + return getattr(self, self.norm2_name) + + def init_weights(self): + super(MixerBlock, self).init_weights() + for m in self.token_mix.modules(): + if isinstance(m, nn.Linear): + nn.init.xavier_uniform_(m.weight) + nn.init.normal_(m.bias, std=1e-6) + for m in self.channel_mix.modules(): + if isinstance(m, nn.Linear): + nn.init.xavier_uniform_(m.weight) + nn.init.normal_(m.bias, std=1e-6) + + def forward(self, x): + out = self.norm1(x).transpose(1, 2) + x = x + self.token_mix(out).transpose(1, 2) + x = self.channel_mix(self.norm2(x), identity=x) + return x + + +@BACKBONES.register_module() +class MlpMixer(BaseBackbone): + """Mlp-Mixer backbone. + + Pytorch implementation of `MLP-Mixer: An all-MLP Architecture for Vision + `_ + + Args: + arch (str | dict): MLP Mixer architecture. If use string, choose from + 'small', 'base' and 'large'. If use dict, it should have below + keys: + + - **embed_dims** (int): The dimensions of embedding. + - **num_layers** (int): The number of MLP blocks. + - **tokens_mlp_dims** (int): The hidden dimensions for tokens FFNs. + - **channels_mlp_dims** (int): The The hidden dimensions for + channels FFNs. + + Defaults to 'base'. + img_size (int | tuple): The input image shape. Defaults to 224. + patch_size (int | tuple): The patch size in patch embedding. + Defaults to 16. + out_indices (Sequence | int): Output from which layer. + Defaults to -1, means the last layer. + drop_rate (float): Probability of an element to be zeroed. + Defaults to 0. + drop_path_rate (float): stochastic depth rate. Defaults to 0. + norm_cfg (dict): Config dict for normalization layer. + Defaults to ``dict(type='LN')``. + act_cfg (dict): The activation config for FFNs. Default GELU. + patch_cfg (dict): Configs of patch embeding. Defaults to an empty dict. + layer_cfgs (Sequence | dict): Configs of each mixer block layer. + Defaults to an empty dict. + init_cfg (dict, optional): Initialization config dict. + Defaults to None. + """ + + arch_zoo = { + **dict.fromkeys( + ['s', 'small'], { + 'embed_dims': 512, + 'num_layers': 8, + 'tokens_mlp_dims': 256, + 'channels_mlp_dims': 2048, + }), + **dict.fromkeys( + ['b', 'base'], { + 'embed_dims': 768, + 'num_layers': 12, + 'tokens_mlp_dims': 384, + 'channels_mlp_dims': 3072, + }), + **dict.fromkeys( + ['l', 'large'], { + 'embed_dims': 1024, + 'num_layers': 24, + 'tokens_mlp_dims': 512, + 'channels_mlp_dims': 4096, + }), + } + + def __init__(self, + arch='base', + img_size=224, + patch_size=16, + out_indices=-1, + drop_rate=0., + drop_path_rate=0., + norm_cfg=dict(type='LN'), + act_cfg=dict(type='GELU'), + patch_cfg=dict(), + layer_cfgs=dict(), + init_cfg=None): + super(MlpMixer, self).__init__(init_cfg) + + if isinstance(arch, str): + arch = arch.lower() + assert arch in set(self.arch_zoo), \ + f'Arch {arch} is not in default archs {set(self.arch_zoo)}' + self.arch_settings = self.arch_zoo[arch] + else: + essential_keys = { + 'embed_dims', 'num_layers', 'tokens_mlp_dims', + 'channels_mlp_dims' + } + assert isinstance(arch, dict) and set(arch) == essential_keys, \ + f'Custom arch needs a dict with keys {essential_keys}' + self.arch_settings = arch + + self.embed_dims = self.arch_settings['embed_dims'] + self.num_layers = self.arch_settings['num_layers'] + self.tokens_mlp_dims = self.arch_settings['tokens_mlp_dims'] + self.channels_mlp_dims = self.arch_settings['channels_mlp_dims'] + + self.img_size = to_2tuple(img_size) + + _patch_cfg = dict( + input_size=img_size, + embed_dims=self.embed_dims, + conv_type='Conv2d', + kernel_size=patch_size, + stride=patch_size, + ) + _patch_cfg.update(patch_cfg) + self.patch_embed = PatchEmbed(**_patch_cfg) + self.patch_resolution = self.patch_embed.init_out_size + num_patches = self.patch_resolution[0] * self.patch_resolution[1] + + if isinstance(out_indices, int): + out_indices = [out_indices] + assert isinstance(out_indices, Sequence), \ + f'"out_indices" must be a sequence or int, ' \ + f'get {type(out_indices)} instead.' + for i, index in enumerate(out_indices): + if index < 0: + out_indices[i] = self.num_layers + index + assert out_indices[i] >= 0, f'Invalid out_indices {index}' + else: + assert index >= self.num_layers, f'Invalid out_indices {index}' + self.out_indices = out_indices + + self.layers = ModuleList() + if isinstance(layer_cfgs, dict): + layer_cfgs = [layer_cfgs] * self.num_layers + for i in range(self.num_layers): + _layer_cfg = dict( + num_tokens=num_patches, + embed_dims=self.embed_dims, + tokens_mlp_dims=self.tokens_mlp_dims, + channels_mlp_dims=self.channels_mlp_dims, + drop_rate=drop_rate, + drop_path_rate=drop_path_rate, + act_cfg=act_cfg, + norm_cfg=norm_cfg, + ) + _layer_cfg.update(layer_cfgs[i]) + self.layers.append(MixerBlock(**_layer_cfg)) + + self.norm1_name, norm1 = build_norm_layer( + norm_cfg, self.embed_dims, postfix=1) + self.add_module(self.norm1_name, norm1) + + @property + def norm1(self): + return getattr(self, self.norm1_name) + + def forward(self, x): + assert x.shape[2:] == self.img_size, \ + "The MLP-Mixer doesn't support dynamic input shape. " \ + f'Please input images with shape {self.img_size}' + x, _ = self.patch_embed(x) + + outs = [] + for i, layer in enumerate(self.layers): + x = layer(x) + + if i == len(self.layers) - 1: + x = self.norm1(x) + + if i in self.out_indices: + out = x.transpose(1, 2) + outs.append(out) + + return tuple(outs) diff --git a/openmmlab_test/mmclassification-speed-benchmark/mmcls/models/backbones/mobilenet_v2.py b/openmmlab_test/mmclassification-0.24.1/mmcls/models/backbones/mobilenet_v2.py similarity index 91% rename from openmmlab_test/mmclassification-speed-benchmark/mmcls/models/backbones/mobilenet_v2.py rename to openmmlab_test/mmclassification-0.24.1/mmcls/models/backbones/mobilenet_v2.py index 37f27cd8..8f171eda 100644 --- a/openmmlab_test/mmclassification-speed-benchmark/mmcls/models/backbones/mobilenet_v2.py +++ b/openmmlab_test/mmclassification-0.24.1/mmcls/models/backbones/mobilenet_v2.py @@ -1,9 +1,8 @@ -import logging - +# Copyright (c) OpenMMLab. All rights reserved. import torch.nn as nn import torch.utils.checkpoint as cp -from mmcv.cnn import ConvModule, constant_init, kaiming_init -from mmcv.runner import load_checkpoint +from mmcv.cnn import ConvModule +from mmcv.runner import BaseModule from torch.nn.modules.batchnorm import _BatchNorm from mmcls.models.utils import make_divisible @@ -11,7 +10,7 @@ from ..builder import BACKBONES from .base_backbone import BaseBackbone -class InvertedResidual(nn.Module): +class InvertedResidual(BaseModule): """InvertedResidual block for MobileNetV2. Args: @@ -41,8 +40,9 @@ class InvertedResidual(nn.Module): conv_cfg=None, norm_cfg=dict(type='BN'), act_cfg=dict(type='ReLU6'), - with_cp=False): - super(InvertedResidual, self).__init__() + with_cp=False, + init_cfg=None): + super(InvertedResidual, self).__init__(init_cfg) self.stride = stride assert stride in [1, 2], f'stride must in [1, 2]. ' \ f'But received {stride}.' @@ -233,19 +233,6 @@ class MobileNetV2(BaseBackbone): return nn.Sequential(*layers) - def init_weights(self, pretrained=None): - if isinstance(pretrained, str): - logger = logging.getLogger() - load_checkpoint(self, pretrained, strict=False, logger=logger) - elif pretrained is None: - for m in self.modules(): - if isinstance(m, nn.Conv2d): - kaiming_init(m) - elif isinstance(m, (_BatchNorm, nn.GroupNorm)): - constant_init(m, 1) - else: - raise TypeError('pretrained must be a str or None') - def forward(self, x): x = self.conv1(x) @@ -256,10 +243,7 @@ class MobileNetV2(BaseBackbone): if i in self.out_indices: outs.append(x) - if len(outs) == 1: - return outs[0] - else: - return tuple(outs) + return tuple(outs) def _freeze_stages(self): if self.frozen_stages >= 0: diff --git a/openmmlab_test/mmclassification-0.24.1/mmcls/models/backbones/mobilenet_v3.py b/openmmlab_test/mmclassification-0.24.1/mmcls/models/backbones/mobilenet_v3.py new file mode 100644 index 00000000..b612b887 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/mmcls/models/backbones/mobilenet_v3.py @@ -0,0 +1,195 @@ +# Copyright (c) OpenMMLab. All rights reserved. +from mmcv.cnn import ConvModule +from torch.nn.modules.batchnorm import _BatchNorm + +from ..builder import BACKBONES +from ..utils import InvertedResidual +from .base_backbone import BaseBackbone + + +@BACKBONES.register_module() +class MobileNetV3(BaseBackbone): + """MobileNetV3 backbone. + + Args: + arch (str): Architecture of mobilnetv3, from {small, large}. + Default: small. + conv_cfg (dict, optional): Config dict for convolution layer. + Default: None, which means using conv2d. + norm_cfg (dict): Config dict for normalization layer. + Default: dict(type='BN'). + out_indices (None or Sequence[int]): Output from which stages. + Default: None, which means output tensors from final stage. + frozen_stages (int): Stages to be frozen (all param fixed). + Default: -1, which means not freezing any parameters. + norm_eval (bool): Whether to set norm layers to eval mode, namely, + freeze running stats (mean and var). Note: Effect on Batch Norm + and its variants only. Default: False. + with_cp (bool): Use checkpoint or not. Using checkpoint will save + some memory while slowing down the training speed. + Default: False. + """ + # Parameters to build each block: + # [kernel size, mid channels, out channels, with_se, act type, stride] + arch_settings = { + 'small': [[3, 16, 16, True, 'ReLU', 2], + [3, 72, 24, False, 'ReLU', 2], + [3, 88, 24, False, 'ReLU', 1], + [5, 96, 40, True, 'HSwish', 2], + [5, 240, 40, True, 'HSwish', 1], + [5, 240, 40, True, 'HSwish', 1], + [5, 120, 48, True, 'HSwish', 1], + [5, 144, 48, True, 'HSwish', 1], + [5, 288, 96, True, 'HSwish', 2], + [5, 576, 96, True, 'HSwish', 1], + [5, 576, 96, True, 'HSwish', 1]], + 'large': [[3, 16, 16, False, 'ReLU', 1], + [3, 64, 24, False, 'ReLU', 2], + [3, 72, 24, False, 'ReLU', 1], + [5, 72, 40, True, 'ReLU', 2], + [5, 120, 40, True, 'ReLU', 1], + [5, 120, 40, True, 'ReLU', 1], + [3, 240, 80, False, 'HSwish', 2], + [3, 200, 80, False, 'HSwish', 1], + [3, 184, 80, False, 'HSwish', 1], + [3, 184, 80, False, 'HSwish', 1], + [3, 480, 112, True, 'HSwish', 1], + [3, 672, 112, True, 'HSwish', 1], + [5, 672, 160, True, 'HSwish', 2], + [5, 960, 160, True, 'HSwish', 1], + [5, 960, 160, True, 'HSwish', 1]] + } # yapf: disable + + def __init__(self, + arch='small', + conv_cfg=None, + norm_cfg=dict(type='BN', eps=0.001, momentum=0.01), + out_indices=None, + frozen_stages=-1, + norm_eval=False, + with_cp=False, + init_cfg=[ + dict( + type='Kaiming', + layer=['Conv2d'], + nonlinearity='leaky_relu'), + dict(type='Normal', layer=['Linear'], std=0.01), + dict(type='Constant', layer=['BatchNorm2d'], val=1) + ]): + super(MobileNetV3, self).__init__(init_cfg) + assert arch in self.arch_settings + if out_indices is None: + out_indices = (12, ) if arch == 'small' else (16, ) + for order, index in enumerate(out_indices): + if index not in range(0, len(self.arch_settings[arch]) + 2): + raise ValueError( + 'the item in out_indices must in ' + f'range(0, {len(self.arch_settings[arch]) + 2}). ' + f'But received {index}') + + if frozen_stages not in range(-1, len(self.arch_settings[arch]) + 2): + raise ValueError('frozen_stages must be in range(-1, ' + f'{len(self.arch_settings[arch]) + 2}). ' + f'But received {frozen_stages}') + self.arch = arch + self.conv_cfg = conv_cfg + self.norm_cfg = norm_cfg + self.out_indices = out_indices + self.frozen_stages = frozen_stages + self.norm_eval = norm_eval + self.with_cp = with_cp + + self.layers = self._make_layer() + self.feat_dim = self.arch_settings[arch][-1][1] + + def _make_layer(self): + layers = [] + layer_setting = self.arch_settings[self.arch] + in_channels = 16 + + layer = ConvModule( + in_channels=3, + out_channels=in_channels, + kernel_size=3, + stride=2, + padding=1, + conv_cfg=self.conv_cfg, + norm_cfg=self.norm_cfg, + act_cfg=dict(type='HSwish')) + self.add_module('layer0', layer) + layers.append('layer0') + + for i, params in enumerate(layer_setting): + (kernel_size, mid_channels, out_channels, with_se, act, + stride) = params + if with_se: + se_cfg = dict( + channels=mid_channels, + ratio=4, + act_cfg=(dict(type='ReLU'), + dict( + type='HSigmoid', + bias=3, + divisor=6, + min_value=0, + max_value=1))) + else: + se_cfg = None + + layer = InvertedResidual( + in_channels=in_channels, + out_channels=out_channels, + mid_channels=mid_channels, + kernel_size=kernel_size, + stride=stride, + se_cfg=se_cfg, + conv_cfg=self.conv_cfg, + norm_cfg=self.norm_cfg, + act_cfg=dict(type=act), + with_cp=self.with_cp) + in_channels = out_channels + layer_name = 'layer{}'.format(i + 1) + self.add_module(layer_name, layer) + layers.append(layer_name) + + # Build the last layer before pooling + # TODO: No dilation + layer = ConvModule( + in_channels=in_channels, + out_channels=576 if self.arch == 'small' else 960, + kernel_size=1, + stride=1, + padding=0, + conv_cfg=self.conv_cfg, + norm_cfg=self.norm_cfg, + act_cfg=dict(type='HSwish')) + layer_name = 'layer{}'.format(len(layer_setting) + 1) + self.add_module(layer_name, layer) + layers.append(layer_name) + + return layers + + def forward(self, x): + outs = [] + for i, layer_name in enumerate(self.layers): + layer = getattr(self, layer_name) + x = layer(x) + if i in self.out_indices: + outs.append(x) + + return tuple(outs) + + def _freeze_stages(self): + for i in range(0, self.frozen_stages + 1): + layer = getattr(self, f'layer{i}') + layer.eval() + for param in layer.parameters(): + param.requires_grad = False + + def train(self, mode=True): + super(MobileNetV3, self).train(mode) + self._freeze_stages() + if mode and self.norm_eval: + for m in self.modules(): + if isinstance(m, _BatchNorm): + m.eval() diff --git a/openmmlab_test/mmclassification-0.24.1/mmcls/models/backbones/mvit.py b/openmmlab_test/mmclassification-0.24.1/mmcls/models/backbones/mvit.py new file mode 100644 index 00000000..b9e67df9 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/mmcls/models/backbones/mvit.py @@ -0,0 +1,700 @@ +# Copyright (c) OpenMMLab. All rights reserved. +from typing import Optional, Sequence + +import numpy as np +import torch +import torch.nn as nn +import torch.nn.functional as F +from mmcv.cnn import build_norm_layer +from mmcv.cnn.bricks import DropPath +from mmcv.cnn.bricks.transformer import PatchEmbed, build_activation_layer +from mmcv.cnn.utils.weight_init import trunc_normal_ +from mmcv.runner import BaseModule, ModuleList +from mmcv.utils import to_2tuple + +from ..builder import BACKBONES +from ..utils import resize_pos_embed +from .base_backbone import BaseBackbone + + +def resize_decomposed_rel_pos(rel_pos, q_size, k_size): + """Get relative positional embeddings according to the relative positions + of query and key sizes. + + Args: + q_size (int): size of query q. + k_size (int): size of key k. + rel_pos (Tensor): relative position embeddings (L, C). + + Returns: + Extracted positional embeddings according to relative positions. + """ + max_rel_dist = int(2 * max(q_size, k_size) - 1) + # Interpolate rel pos if needed. + if rel_pos.shape[0] != max_rel_dist: + # Interpolate rel pos. + resized = F.interpolate( + # (L, C) -> (1, C, L) + rel_pos.transpose(0, 1).unsqueeze(0), + size=max_rel_dist, + mode='linear', + ) + # (1, C, L) -> (L, C) + resized = resized.squeeze(0).transpose(0, 1) + else: + resized = rel_pos + + # Scale the coords with short length if shapes for q and k are different. + q_h_ratio = max(k_size / q_size, 1.0) + k_h_ratio = max(q_size / k_size, 1.0) + q_coords = torch.arange(q_size)[:, None] * q_h_ratio + k_coords = torch.arange(k_size)[None, :] * k_h_ratio + relative_coords = (q_coords - k_coords) + (k_size - 1) * k_h_ratio + + return resized[relative_coords.long()] + + +def add_decomposed_rel_pos(attn, + q, + q_shape, + k_shape, + rel_pos_h, + rel_pos_w, + has_cls_token=False): + """Spatial Relative Positional Embeddings.""" + sp_idx = 1 if has_cls_token else 0 + B, num_heads, _, C = q.shape + q_h, q_w = q_shape + k_h, k_w = k_shape + + Rh = resize_decomposed_rel_pos(rel_pos_h, q_h, k_h) + Rw = resize_decomposed_rel_pos(rel_pos_w, q_w, k_w) + + r_q = q[:, :, sp_idx:].reshape(B, num_heads, q_h, q_w, C) + rel_h = torch.einsum('byhwc,hkc->byhwk', r_q, Rh) + rel_w = torch.einsum('byhwc,wkc->byhwk', r_q, Rw) + rel_pos_embed = rel_h[:, :, :, :, :, None] + rel_w[:, :, :, :, None, :] + + attn_map = attn[:, :, sp_idx:, sp_idx:].view(B, -1, q_h, q_w, k_h, k_w) + attn_map += rel_pos_embed + attn[:, :, sp_idx:, sp_idx:] = attn_map.view(B, -1, q_h * q_w, k_h * k_w) + + return attn + + +class MLP(BaseModule): + """Two-layer multilayer perceptron. + + Comparing with :class:`mmcv.cnn.bricks.transformer.FFN`, this class allows + different input and output channel numbers. + + Args: + in_channels (int): The number of input channels. + hidden_channels (int, optional): The number of hidden layer channels. + If None, same as the ``in_channels``. Defaults to None. + out_channels (int, optional): The number of output channels. If None, + same as the ``in_channels``. Defaults to None. + act_cfg (dict): The config of activation function. + Defaults to ``dict(type='GELU')``. + init_cfg (dict, optional): The config of weight initialization. + Defaults to None. + """ + + def __init__(self, + in_channels, + hidden_channels=None, + out_channels=None, + act_cfg=dict(type='GELU'), + init_cfg=None): + super().__init__(init_cfg=init_cfg) + out_channels = out_channels or in_channels + hidden_channels = hidden_channels or in_channels + self.fc1 = nn.Linear(in_channels, hidden_channels) + self.act = build_activation_layer(act_cfg) + self.fc2 = nn.Linear(hidden_channels, out_channels) + + def forward(self, x): + x = self.fc1(x) + x = self.act(x) + x = self.fc2(x) + return x + + +def attention_pool(x: torch.Tensor, + pool: nn.Module, + in_size: tuple, + norm: Optional[nn.Module] = None): + """Pooling the feature tokens. + + Args: + x (torch.Tensor): The input tensor, should be with shape + ``(B, num_heads, L, C)`` or ``(B, L, C)``. + pool (nn.Module): The pooling module. + in_size (Tuple[int]): The shape of the input feature map. + norm (nn.Module, optional): The normalization module. + Defaults to None. + """ + ndim = x.ndim + if ndim == 4: + B, num_heads, L, C = x.shape + elif ndim == 3: + num_heads = 1 + B, L, C = x.shape + else: + raise RuntimeError(f'Unsupported input dimension {x.shape}') + + H, W = in_size + assert L == H * W + + # (B, num_heads, H*W, C) -> (B*num_heads, C, H, W) + x = x.reshape(B * num_heads, H, W, C).permute(0, 3, 1, 2).contiguous() + x = pool(x) + out_size = x.shape[-2:] + + # (B*num_heads, C, H', W') -> (B, num_heads, H'*W', C) + x = x.reshape(B, num_heads, C, -1).transpose(2, 3) + + if norm is not None: + x = norm(x) + + if ndim == 3: + x = x.squeeze(1) + + return x, out_size + + +class MultiScaleAttention(BaseModule): + """Multiscale Multi-head Attention block. + + Args: + in_dims (int): Number of input channels. + out_dims (int): Number of output channels. + num_heads (int): Number of attention heads. + qkv_bias (bool): If True, add a learnable bias to query, key and + value. Defaults to True. + norm_cfg (dict): The config of normalization layers. + Defaults to ``dict(type='LN')``. + pool_kernel (tuple): kernel size for qkv pooling layers. + Defaults to (3, 3). + stride_q (int): stride size for q pooling layer. Defaults to 1. + stride_kv (int): stride size for kv pooling layer. Defaults to 1. + rel_pos_spatial (bool): Whether to enable the spatial relative + position embedding. Defaults to True. + residual_pooling (bool): Whether to enable the residual connection + after attention pooling. Defaults to True. + input_size (Tuple[int], optional): The input resolution, necessary + if enable the ``rel_pos_spatial``. Defaults to None. + rel_pos_zero_init (bool): If True, zero initialize relative + positional parameters. Defaults to False. + init_cfg (dict, optional): The config of weight initialization. + Defaults to None. + """ + + def __init__(self, + in_dims, + out_dims, + num_heads, + qkv_bias=True, + norm_cfg=dict(type='LN'), + pool_kernel=(3, 3), + stride_q=1, + stride_kv=1, + rel_pos_spatial=False, + residual_pooling=True, + input_size=None, + rel_pos_zero_init=False, + init_cfg=None): + super().__init__(init_cfg=init_cfg) + self.num_heads = num_heads + self.in_dims = in_dims + self.out_dims = out_dims + + head_dim = out_dims // num_heads + self.scale = head_dim**-0.5 + + self.qkv = nn.Linear(in_dims, out_dims * 3, bias=qkv_bias) + self.proj = nn.Linear(out_dims, out_dims) + + # qkv pooling + pool_padding = [k // 2 for k in pool_kernel] + pool_dims = out_dims // num_heads + + def build_pooling(stride): + pool = nn.Conv2d( + pool_dims, + pool_dims, + pool_kernel, + stride=stride, + padding=pool_padding, + groups=pool_dims, + bias=False, + ) + norm = build_norm_layer(norm_cfg, pool_dims)[1] + return pool, norm + + self.pool_q, self.norm_q = build_pooling(stride_q) + self.pool_k, self.norm_k = build_pooling(stride_kv) + self.pool_v, self.norm_v = build_pooling(stride_kv) + + self.residual_pooling = residual_pooling + + self.rel_pos_spatial = rel_pos_spatial + self.rel_pos_zero_init = rel_pos_zero_init + if self.rel_pos_spatial: + # initialize relative positional embeddings + assert input_size[0] == input_size[1] + + size = input_size[0] + rel_dim = 2 * max(size // stride_q, size // stride_kv) - 1 + self.rel_pos_h = nn.Parameter(torch.zeros(rel_dim, head_dim)) + self.rel_pos_w = nn.Parameter(torch.zeros(rel_dim, head_dim)) + + def init_weights(self): + """Weight initialization.""" + super().init_weights() + + if (isinstance(self.init_cfg, dict) + and self.init_cfg['type'] == 'Pretrained'): + # Suppress rel_pos_zero_init if use pretrained model. + return + + if not self.rel_pos_zero_init: + trunc_normal_(self.rel_pos_h, std=0.02) + trunc_normal_(self.rel_pos_w, std=0.02) + + def forward(self, x, in_size): + """Forward the MultiScaleAttention.""" + B, N, _ = x.shape # (B, H*W, C) + + # qkv: (B, H*W, 3, num_heads, C) + qkv = self.qkv(x).reshape(B, N, 3, self.num_heads, -1) + # q, k, v: (B, num_heads, H*W, C) + q, k, v = qkv.permute(2, 0, 3, 1, 4).unbind(0) + + q, q_shape = attention_pool(q, self.pool_q, in_size, norm=self.norm_q) + k, k_shape = attention_pool(k, self.pool_k, in_size, norm=self.norm_k) + v, v_shape = attention_pool(v, self.pool_v, in_size, norm=self.norm_v) + + attn = (q * self.scale) @ k.transpose(-2, -1) + if self.rel_pos_spatial: + attn = add_decomposed_rel_pos(attn, q, q_shape, k_shape, + self.rel_pos_h, self.rel_pos_w) + + attn = attn.softmax(dim=-1) + x = attn @ v + + if self.residual_pooling: + x = x + q + + # (B, num_heads, H'*W', C'//num_heads) -> (B, H'*W', C') + x = x.transpose(1, 2).reshape(B, -1, self.out_dims) + x = self.proj(x) + + return x, q_shape + + +class MultiScaleBlock(BaseModule): + """Multiscale Transformer blocks. + + Args: + in_dims (int): Number of input channels. + out_dims (int): Number of output channels. + num_heads (int): Number of attention heads. + mlp_ratio (float): Ratio of hidden dimensions in MLP layers. + Defaults to 4.0. + qkv_bias (bool): If True, add a learnable bias to query, key and + value. Defaults to True. + drop_path (float): Stochastic depth rate. Defaults to 0. + norm_cfg (dict): The config of normalization layers. + Defaults to ``dict(type='LN')``. + act_cfg (dict): The config of activation function. + Defaults to ``dict(type='GELU')``. + qkv_pool_kernel (tuple): kernel size for qkv pooling layers. + Defaults to (3, 3). + stride_q (int): stride size for q pooling layer. Defaults to 1. + stride_kv (int): stride size for kv pooling layer. Defaults to 1. + rel_pos_spatial (bool): Whether to enable the spatial relative + position embedding. Defaults to True. + residual_pooling (bool): Whether to enable the residual connection + after attention pooling. Defaults to True. + dim_mul_in_attention (bool): Whether to multiply the ``embed_dims`` in + attention layers. If False, multiply it in MLP layers. + Defaults to True. + input_size (Tuple[int], optional): The input resolution, necessary + if enable the ``rel_pos_spatial``. Defaults to None. + rel_pos_zero_init (bool): If True, zero initialize relative + positional parameters. Defaults to False. + init_cfg (dict, optional): The config of weight initialization. + Defaults to None. + """ + + def __init__( + self, + in_dims, + out_dims, + num_heads, + mlp_ratio=4.0, + qkv_bias=True, + drop_path=0.0, + norm_cfg=dict(type='LN'), + act_cfg=dict(type='GELU'), + qkv_pool_kernel=(3, 3), + stride_q=1, + stride_kv=1, + rel_pos_spatial=True, + residual_pooling=True, + dim_mul_in_attention=True, + input_size=None, + rel_pos_zero_init=False, + init_cfg=None, + ): + super().__init__(init_cfg=init_cfg) + self.in_dims = in_dims + self.out_dims = out_dims + self.norm1 = build_norm_layer(norm_cfg, in_dims)[1] + self.dim_mul_in_attention = dim_mul_in_attention + + attn_dims = out_dims if dim_mul_in_attention else in_dims + self.attn = MultiScaleAttention( + in_dims, + attn_dims, + num_heads=num_heads, + qkv_bias=qkv_bias, + norm_cfg=norm_cfg, + pool_kernel=qkv_pool_kernel, + stride_q=stride_q, + stride_kv=stride_kv, + rel_pos_spatial=rel_pos_spatial, + residual_pooling=residual_pooling, + input_size=input_size, + rel_pos_zero_init=rel_pos_zero_init) + self.drop_path = DropPath( + drop_path) if drop_path > 0.0 else nn.Identity() + + self.norm2 = build_norm_layer(norm_cfg, attn_dims)[1] + + self.mlp = MLP( + in_channels=attn_dims, + hidden_channels=int(attn_dims * mlp_ratio), + out_channels=out_dims, + act_cfg=act_cfg) + + if in_dims != out_dims: + self.proj = nn.Linear(in_dims, out_dims) + else: + self.proj = None + + if stride_q > 1: + kernel_skip = stride_q + 1 + padding_skip = int(kernel_skip // 2) + self.pool_skip = nn.MaxPool2d( + kernel_skip, stride_q, padding_skip, ceil_mode=False) + + if input_size is not None: + input_size = to_2tuple(input_size) + out_size = [size // stride_q for size in input_size] + self.init_out_size = out_size + else: + self.init_out_size = None + else: + self.pool_skip = None + self.init_out_size = input_size + + def forward(self, x, in_size): + x_norm = self.norm1(x) + x_attn, out_size = self.attn(x_norm, in_size) + + if self.dim_mul_in_attention and self.proj is not None: + skip = self.proj(x_norm) + else: + skip = x + + if self.pool_skip is not None: + skip, _ = attention_pool(skip, self.pool_skip, in_size) + + x = skip + self.drop_path(x_attn) + x_norm = self.norm2(x) + x_mlp = self.mlp(x_norm) + + if not self.dim_mul_in_attention and self.proj is not None: + skip = self.proj(x_norm) + else: + skip = x + + x = skip + self.drop_path(x_mlp) + + return x, out_size + + +@BACKBONES.register_module() +class MViT(BaseBackbone): + """Multi-scale ViT v2. + + A PyTorch implement of : `MViTv2: Improved Multiscale Vision Transformers + for Classification and Detection `_ + + Inspiration from `the official implementation + `_ and `the detectron2 + implementation `_ + + Args: + arch (str | dict): MViT architecture. If use string, choose + from 'tiny', 'small', 'base' and 'large'. If use dict, it should + have below keys: + + - **embed_dims** (int): The dimensions of embedding. + - **num_layers** (int): The number of layers. + - **num_heads** (int): The number of heads in attention + modules of the initial layer. + - **downscale_indices** (List[int]): The layer indices to downscale + the feature map. + + Defaults to 'base'. + img_size (int): The expected input image shape. Defaults to 224. + in_channels (int): The num of input channels. Defaults to 3. + out_scales (int | Sequence[int]): The output scale indices. + They should not exceed the length of ``downscale_indices``. + Defaults to -1, which means the last scale. + drop_path_rate (float): Stochastic depth rate. Defaults to 0.1. + use_abs_pos_embed (bool): If True, add absolute position embedding to + the patch embedding. Defaults to False. + interpolate_mode (str): Select the interpolate mode for absolute + position embedding vector resize. Defaults to "bicubic". + pool_kernel (tuple): kernel size for qkv pooling layers. + Defaults to (3, 3). + dim_mul (int): The magnification for ``embed_dims`` in the downscale + layers. Defaults to 2. + head_mul (int): The magnification for ``num_heads`` in the downscale + layers. Defaults to 2. + adaptive_kv_stride (int): The stride size for kv pooling in the initial + layer. Defaults to 4. + rel_pos_spatial (bool): Whether to enable the spatial relative position + embedding. Defaults to True. + residual_pooling (bool): Whether to enable the residual connection + after attention pooling. Defaults to True. + dim_mul_in_attention (bool): Whether to multiply the ``embed_dims`` in + attention layers. If False, multiply it in MLP layers. + Defaults to True. + rel_pos_zero_init (bool): If True, zero initialize relative + positional parameters. Defaults to False. + mlp_ratio (float): Ratio of hidden dimensions in MLP layers. + Defaults to 4.0. + qkv_bias (bool): enable bias for qkv if True. Defaults to True. + norm_cfg (dict): Config dict for normalization layer for all output + features. Defaults to ``dict(type='LN', eps=1e-6)``. + patch_cfg (dict): Config dict for the patch embedding layer. + Defaults to ``dict(kernel_size=7, stride=4, padding=3)``. + init_cfg (dict, optional): The Config for initialization. + Defaults to None. + + Examples: + >>> import torch + >>> from mmcls.models import build_backbone + >>> + >>> cfg = dict(type='MViT', arch='tiny', out_scales=[0, 1, 2, 3]) + >>> model = build_backbone(cfg) + >>> inputs = torch.rand(1, 3, 224, 224) + >>> outputs = model(inputs) + >>> for i, output in enumerate(outputs): + >>> print(f'scale{i}: {output.shape}') + scale0: torch.Size([1, 96, 56, 56]) + scale1: torch.Size([1, 192, 28, 28]) + scale2: torch.Size([1, 384, 14, 14]) + scale3: torch.Size([1, 768, 7, 7]) + """ + arch_zoo = { + 'tiny': { + 'embed_dims': 96, + 'num_layers': 10, + 'num_heads': 1, + 'downscale_indices': [1, 3, 8] + }, + 'small': { + 'embed_dims': 96, + 'num_layers': 16, + 'num_heads': 1, + 'downscale_indices': [1, 3, 14] + }, + 'base': { + 'embed_dims': 96, + 'num_layers': 24, + 'num_heads': 1, + 'downscale_indices': [2, 5, 21] + }, + 'large': { + 'embed_dims': 144, + 'num_layers': 48, + 'num_heads': 2, + 'downscale_indices': [2, 8, 44] + }, + } + num_extra_tokens = 0 + + def __init__(self, + arch='base', + img_size=224, + in_channels=3, + out_scales=-1, + drop_path_rate=0., + use_abs_pos_embed=False, + interpolate_mode='bicubic', + pool_kernel=(3, 3), + dim_mul=2, + head_mul=2, + adaptive_kv_stride=4, + rel_pos_spatial=True, + residual_pooling=True, + dim_mul_in_attention=True, + rel_pos_zero_init=False, + mlp_ratio=4., + qkv_bias=True, + norm_cfg=dict(type='LN', eps=1e-6), + patch_cfg=dict(kernel_size=7, stride=4, padding=3), + init_cfg=None): + super().__init__(init_cfg) + + if isinstance(arch, str): + arch = arch.lower() + assert arch in set(self.arch_zoo), \ + f'Arch {arch} is not in default archs {set(self.arch_zoo)}' + self.arch_settings = self.arch_zoo[arch] + else: + essential_keys = { + 'embed_dims', 'num_layers', 'num_heads', 'downscale_indices' + } + assert isinstance(arch, dict) and essential_keys <= set(arch), \ + f'Custom arch needs a dict with keys {essential_keys}' + self.arch_settings = arch + + self.embed_dims = self.arch_settings['embed_dims'] + self.num_layers = self.arch_settings['num_layers'] + self.num_heads = self.arch_settings['num_heads'] + self.downscale_indices = self.arch_settings['downscale_indices'] + self.num_scales = len(self.downscale_indices) + 1 + self.stage_indices = { + index - 1: i + for i, index in enumerate(self.downscale_indices) + } + self.stage_indices[self.num_layers - 1] = self.num_scales - 1 + self.use_abs_pos_embed = use_abs_pos_embed + self.interpolate_mode = interpolate_mode + + if isinstance(out_scales, int): + out_scales = [out_scales] + assert isinstance(out_scales, Sequence), \ + f'"out_scales" must by a sequence or int, ' \ + f'get {type(out_scales)} instead.' + for i, index in enumerate(out_scales): + if index < 0: + out_scales[i] = self.num_scales + index + assert 0 <= out_scales[i] <= self.num_scales, \ + f'Invalid out_scales {index}' + self.out_scales = sorted(list(out_scales)) + + # Set patch embedding + _patch_cfg = dict( + in_channels=in_channels, + input_size=img_size, + embed_dims=self.embed_dims, + conv_type='Conv2d', + ) + _patch_cfg.update(patch_cfg) + self.patch_embed = PatchEmbed(**_patch_cfg) + self.patch_resolution = self.patch_embed.init_out_size + + # Set absolute position embedding + if self.use_abs_pos_embed: + num_patches = self.patch_resolution[0] * self.patch_resolution[1] + self.pos_embed = nn.Parameter( + torch.zeros(1, num_patches, self.embed_dims)) + + # stochastic depth decay rule + dpr = np.linspace(0, drop_path_rate, self.num_layers) + + self.blocks = ModuleList() + out_dims_list = [self.embed_dims] + num_heads = self.num_heads + stride_kv = adaptive_kv_stride + input_size = self.patch_resolution + for i in range(self.num_layers): + if i in self.downscale_indices: + num_heads *= head_mul + stride_q = 2 + stride_kv = max(stride_kv // 2, 1) + else: + stride_q = 1 + + # Set output embed_dims + if dim_mul_in_attention and i in self.downscale_indices: + # multiply embed_dims in downscale layers. + out_dims = out_dims_list[-1] * dim_mul + elif not dim_mul_in_attention and i + 1 in self.downscale_indices: + # multiply embed_dims before downscale layers. + out_dims = out_dims_list[-1] * dim_mul + else: + out_dims = out_dims_list[-1] + + attention_block = MultiScaleBlock( + in_dims=out_dims_list[-1], + out_dims=out_dims, + num_heads=num_heads, + mlp_ratio=mlp_ratio, + qkv_bias=qkv_bias, + drop_path=dpr[i], + norm_cfg=norm_cfg, + qkv_pool_kernel=pool_kernel, + stride_q=stride_q, + stride_kv=stride_kv, + rel_pos_spatial=rel_pos_spatial, + residual_pooling=residual_pooling, + dim_mul_in_attention=dim_mul_in_attention, + input_size=input_size, + rel_pos_zero_init=rel_pos_zero_init) + self.blocks.append(attention_block) + + input_size = attention_block.init_out_size + out_dims_list.append(out_dims) + + if i in self.stage_indices: + stage_index = self.stage_indices[i] + if stage_index in self.out_scales: + norm_layer = build_norm_layer(norm_cfg, out_dims)[1] + self.add_module(f'norm{stage_index}', norm_layer) + + def init_weights(self): + super().init_weights() + + if (isinstance(self.init_cfg, dict) + and self.init_cfg['type'] == 'Pretrained'): + # Suppress default init if use pretrained model. + return + + if self.use_abs_pos_embed: + trunc_normal_(self.pos_embed, std=0.02) + + def forward(self, x): + """Forward the MViT.""" + B = x.shape[0] + x, patch_resolution = self.patch_embed(x) + + if self.use_abs_pos_embed: + x = x + resize_pos_embed( + self.pos_embed, + self.patch_resolution, + patch_resolution, + mode=self.interpolate_mode, + num_extra_tokens=self.num_extra_tokens) + + outs = [] + for i, block in enumerate(self.blocks): + x, patch_resolution = block(x, patch_resolution) + + if i in self.stage_indices: + stage_index = self.stage_indices[i] + if stage_index in self.out_scales: + B, _, C = x.shape + x = getattr(self, f'norm{stage_index}')(x) + out = x.transpose(1, 2).reshape(B, C, *patch_resolution) + outs.append(out.contiguous()) + + return tuple(outs) diff --git a/openmmlab_test/mmclassification-0.24.1/mmcls/models/backbones/poolformer.py b/openmmlab_test/mmclassification-0.24.1/mmcls/models/backbones/poolformer.py new file mode 100644 index 00000000..e3fc4e1c --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/mmcls/models/backbones/poolformer.py @@ -0,0 +1,416 @@ +# Copyright (c) OpenMMLab. All rights reserved. +from typing import Sequence + +import torch +import torch.nn as nn +from mmcv.cnn.bricks import DropPath, build_activation_layer, build_norm_layer +from mmcv.runner import BaseModule + +from ..builder import BACKBONES +from .base_backbone import BaseBackbone + + +class PatchEmbed(nn.Module): + """Patch Embedding module implemented by a layer of convolution. + + Input: tensor in shape [B, C, H, W] + Output: tensor in shape [B, C, H/stride, W/stride] + Args: + patch_size (int): Patch size of the patch embedding. Defaults to 16. + stride (int): Stride of the patch embedding. Defaults to 16. + padding (int): Padding of the patch embedding. Defaults to 0. + in_chans (int): Input channels. Defaults to 3. + embed_dim (int): Output dimension of the patch embedding. + Defaults to 768. + norm_layer (module): Normalization module. Defaults to None (not use). + """ + + def __init__(self, + patch_size=16, + stride=16, + padding=0, + in_chans=3, + embed_dim=768, + norm_layer=None): + super().__init__() + self.proj = nn.Conv2d( + in_chans, + embed_dim, + kernel_size=patch_size, + stride=stride, + padding=padding) + self.norm = norm_layer(embed_dim) if norm_layer else nn.Identity() + + def forward(self, x): + x = self.proj(x) + x = self.norm(x) + return x + + +class Pooling(nn.Module): + """Pooling module. + + Args: + pool_size (int): Pooling size. Defaults to 3. + """ + + def __init__(self, pool_size=3): + super().__init__() + self.pool = nn.AvgPool2d( + pool_size, + stride=1, + padding=pool_size // 2, + count_include_pad=False) + + def forward(self, x): + return self.pool(x) - x + + +class Mlp(nn.Module): + """Mlp implemented by with 1*1 convolutions. + + Input: Tensor with shape [B, C, H, W]. + Output: Tensor with shape [B, C, H, W]. + Args: + in_features (int): Dimension of input features. + hidden_features (int): Dimension of hidden features. + out_features (int): Dimension of output features. + act_cfg (dict): The config dict for activation between pointwise + convolution. Defaults to ``dict(type='GELU')``. + drop (float): Dropout rate. Defaults to 0.0. + """ + + def __init__(self, + in_features, + hidden_features=None, + out_features=None, + act_cfg=dict(type='GELU'), + drop=0.): + super().__init__() + out_features = out_features or in_features + hidden_features = hidden_features or in_features + self.fc1 = nn.Conv2d(in_features, hidden_features, 1) + self.act = build_activation_layer(act_cfg) + self.fc2 = nn.Conv2d(hidden_features, out_features, 1) + self.drop = nn.Dropout(drop) + + def forward(self, x): + x = self.fc1(x) + x = self.act(x) + x = self.drop(x) + x = self.fc2(x) + x = self.drop(x) + return x + + +class PoolFormerBlock(BaseModule): + """PoolFormer Block. + + Args: + dim (int): Embedding dim. + pool_size (int): Pooling size. Defaults to 3. + mlp_ratio (float): Mlp expansion ratio. Defaults to 4. + norm_cfg (dict): The config dict for norm layers. + Defaults to ``dict(type='GN', num_groups=1)``. + act_cfg (dict): The config dict for activation between pointwise + convolution. Defaults to ``dict(type='GELU')``. + drop (float): Dropout rate. Defaults to 0. + drop_path (float): Stochastic depth rate. Defaults to 0. + layer_scale_init_value (float): Init value for Layer Scale. + Defaults to 1e-5. + """ + + def __init__(self, + dim, + pool_size=3, + mlp_ratio=4., + norm_cfg=dict(type='GN', num_groups=1), + act_cfg=dict(type='GELU'), + drop=0., + drop_path=0., + layer_scale_init_value=1e-5): + + super().__init__() + + self.norm1 = build_norm_layer(norm_cfg, dim)[1] + self.token_mixer = Pooling(pool_size=pool_size) + self.norm2 = build_norm_layer(norm_cfg, dim)[1] + mlp_hidden_dim = int(dim * mlp_ratio) + self.mlp = Mlp( + in_features=dim, + hidden_features=mlp_hidden_dim, + act_cfg=act_cfg, + drop=drop) + + # The following two techniques are useful to train deep PoolFormers. + self.drop_path = DropPath(drop_path) if drop_path > 0. \ + else nn.Identity() + self.layer_scale_1 = nn.Parameter( + layer_scale_init_value * torch.ones((dim)), requires_grad=True) + self.layer_scale_2 = nn.Parameter( + layer_scale_init_value * torch.ones((dim)), requires_grad=True) + + def forward(self, x): + x = x + self.drop_path( + self.layer_scale_1.unsqueeze(-1).unsqueeze(-1) * + self.token_mixer(self.norm1(x))) + x = x + self.drop_path( + self.layer_scale_2.unsqueeze(-1).unsqueeze(-1) * + self.mlp(self.norm2(x))) + return x + + +def basic_blocks(dim, + index, + layers, + pool_size=3, + mlp_ratio=4., + norm_cfg=dict(type='GN', num_groups=1), + act_cfg=dict(type='GELU'), + drop_rate=.0, + drop_path_rate=0., + layer_scale_init_value=1e-5): + """ + generate PoolFormer blocks for a stage + return: PoolFormer blocks + """ + blocks = [] + for block_idx in range(layers[index]): + block_dpr = drop_path_rate * (block_idx + sum(layers[:index])) / ( + sum(layers) - 1) + blocks.append( + PoolFormerBlock( + dim, + pool_size=pool_size, + mlp_ratio=mlp_ratio, + norm_cfg=norm_cfg, + act_cfg=act_cfg, + drop=drop_rate, + drop_path=block_dpr, + layer_scale_init_value=layer_scale_init_value, + )) + blocks = nn.Sequential(*blocks) + + return blocks + + +@BACKBONES.register_module() +class PoolFormer(BaseBackbone): + """PoolFormer. + + A PyTorch implementation of PoolFormer introduced by: + `MetaFormer is Actually What You Need for Vision `_ + + Modified from the `official repo + `. + + Args: + arch (str | dict): The model's architecture. If string, it should be + one of architecture in ``PoolFormer.arch_settings``. And if dict, it + should include the following two keys: + + - layers (list[int]): Number of blocks at each stage. + - embed_dims (list[int]): The number of channels at each stage. + - mlp_ratios (list[int]): Expansion ratio of MLPs. + - layer_scale_init_value (float): Init value for Layer Scale. + + Defaults to 'S12'. + + norm_cfg (dict): The config dict for norm layers. + Defaults to ``dict(type='LN2d', eps=1e-6)``. + act_cfg (dict): The config dict for activation between pointwise + convolution. Defaults to ``dict(type='GELU')``. + in_patch_size (int): The patch size of input image patch embedding. + Defaults to 7. + in_stride (int): The stride of input image patch embedding. + Defaults to 4. + in_pad (int): The padding of input image patch embedding. + Defaults to 2. + down_patch_size (int): The patch size of downsampling patch embedding. + Defaults to 3. + down_stride (int): The stride of downsampling patch embedding. + Defaults to 2. + down_pad (int): The padding of downsampling patch embedding. + Defaults to 1. + drop_rate (float): Dropout rate. Defaults to 0. + drop_path_rate (float): Stochastic depth rate. Defaults to 0. + out_indices (Sequence | int): Output from which network position. + Index 0-6 respectively corresponds to + [stage1, downsampling, stage2, downsampling, stage3, downsampling, stage4] + Defaults to -1, means the last stage. + frozen_stages (int): Stages to be frozen (all param fixed). + Defaults to 0, which means not freezing any parameters. + init_cfg (dict, optional): Initialization config dict + """ # noqa: E501 + + # --layers: [x,x,x,x], numbers of layers for the four stages + # --embed_dims, --mlp_ratios: + # embedding dims and mlp ratios for the four stages + # --downsamples: flags to apply downsampling or not in four blocks + arch_settings = { + 's12': { + 'layers': [2, 2, 6, 2], + 'embed_dims': [64, 128, 320, 512], + 'mlp_ratios': [4, 4, 4, 4], + 'layer_scale_init_value': 1e-5, + }, + 's24': { + 'layers': [4, 4, 12, 4], + 'embed_dims': [64, 128, 320, 512], + 'mlp_ratios': [4, 4, 4, 4], + 'layer_scale_init_value': 1e-5, + }, + 's36': { + 'layers': [6, 6, 18, 6], + 'embed_dims': [64, 128, 320, 512], + 'mlp_ratios': [4, 4, 4, 4], + 'layer_scale_init_value': 1e-6, + }, + 'm36': { + 'layers': [6, 6, 18, 6], + 'embed_dims': [96, 192, 384, 768], + 'mlp_ratios': [4, 4, 4, 4], + 'layer_scale_init_value': 1e-6, + }, + 'm48': { + 'layers': [8, 8, 24, 8], + 'embed_dims': [96, 192, 384, 768], + 'mlp_ratios': [4, 4, 4, 4], + 'layer_scale_init_value': 1e-6, + }, + } + + def __init__(self, + arch='s12', + pool_size=3, + norm_cfg=dict(type='GN', num_groups=1), + act_cfg=dict(type='GELU'), + in_patch_size=7, + in_stride=4, + in_pad=2, + down_patch_size=3, + down_stride=2, + down_pad=1, + drop_rate=0., + drop_path_rate=0., + out_indices=-1, + frozen_stages=0, + init_cfg=None): + + super().__init__(init_cfg=init_cfg) + + if isinstance(arch, str): + assert arch in self.arch_settings, \ + f'Unavailable arch, please choose from ' \ + f'({set(self.arch_settings)}) or pass a dict.' + arch = self.arch_settings[arch] + elif isinstance(arch, dict): + assert 'layers' in arch and 'embed_dims' in arch, \ + f'The arch dict must have "layers" and "embed_dims", ' \ + f'but got {list(arch.keys())}.' + + layers = arch['layers'] + embed_dims = arch['embed_dims'] + mlp_ratios = arch['mlp_ratios'] \ + if 'mlp_ratios' in arch else [4, 4, 4, 4] + layer_scale_init_value = arch['layer_scale_init_value'] \ + if 'layer_scale_init_value' in arch else 1e-5 + + self.patch_embed = PatchEmbed( + patch_size=in_patch_size, + stride=in_stride, + padding=in_pad, + in_chans=3, + embed_dim=embed_dims[0]) + + # set the main block in network + network = [] + for i in range(len(layers)): + stage = basic_blocks( + embed_dims[i], + i, + layers, + pool_size=pool_size, + mlp_ratio=mlp_ratios[i], + norm_cfg=norm_cfg, + act_cfg=act_cfg, + drop_rate=drop_rate, + drop_path_rate=drop_path_rate, + layer_scale_init_value=layer_scale_init_value) + network.append(stage) + if i >= len(layers) - 1: + break + if embed_dims[i] != embed_dims[i + 1]: + # downsampling between two stages + network.append( + PatchEmbed( + patch_size=down_patch_size, + stride=down_stride, + padding=down_pad, + in_chans=embed_dims[i], + embed_dim=embed_dims[i + 1])) + + self.network = nn.ModuleList(network) + + if isinstance(out_indices, int): + out_indices = [out_indices] + assert isinstance(out_indices, Sequence), \ + f'"out_indices" must by a sequence or int, ' \ + f'get {type(out_indices)} instead.' + for i, index in enumerate(out_indices): + if index < 0: + out_indices[i] = 7 + index + assert out_indices[i] >= 0, f'Invalid out_indices {index}' + self.out_indices = out_indices + if self.out_indices: + for i_layer in self.out_indices: + layer = build_norm_layer(norm_cfg, + embed_dims[(i_layer + 1) // 2])[1] + layer_name = f'norm{i_layer}' + self.add_module(layer_name, layer) + + self.frozen_stages = frozen_stages + self._freeze_stages() + + def forward_embeddings(self, x): + x = self.patch_embed(x) + return x + + def forward_tokens(self, x): + outs = [] + for idx, block in enumerate(self.network): + x = block(x) + if idx in self.out_indices: + norm_layer = getattr(self, f'norm{idx}') + x_out = norm_layer(x) + outs.append(x_out) + return tuple(outs) + + def forward(self, x): + # input embedding + x = self.forward_embeddings(x) + # through backbone + x = self.forward_tokens(x) + return x + + def _freeze_stages(self): + if self.frozen_stages >= 0: + self.patch_embed.eval() + for param in self.patch_embed.parameters(): + param.requires_grad = False + + for i in range(self.frozen_stages): + # Include both block and downsample layer. + module = self.network[i] + module.eval() + for param in module.parameters(): + param.requires_grad = False + if i in self.out_indices: + norm_layer = getattr(self, f'norm{i}') + norm_layer.eval() + for param in norm_layer.parameters(): + param.requires_grad = False + + def train(self, mode=True): + super(PoolFormer, self).train(mode) + self._freeze_stages() diff --git a/openmmlab_test/mmclassification-speed-benchmark/mmcls/models/backbones/regnet.py b/openmmlab_test/mmclassification-0.24.1/mmcls/models/backbones/regnet.py similarity index 85% rename from openmmlab_test/mmclassification-speed-benchmark/mmcls/models/backbones/regnet.py rename to openmmlab_test/mmclassification-0.24.1/mmcls/models/backbones/regnet.py index a3556ad5..036b699c 100644 --- a/openmmlab_test/mmclassification-speed-benchmark/mmcls/models/backbones/regnet.py +++ b/openmmlab_test/mmclassification-0.24.1/mmcls/models/backbones/regnet.py @@ -1,3 +1,4 @@ +# Copyright (c) OpenMMLab. All rights reserved. import numpy as np import torch.nn as nn from mmcv.cnn import build_conv_layer, build_norm_layer @@ -20,7 +21,7 @@ class RegNet(ResNet): - wm (float): quantization parameter to quantize the width - depth (int): depth of the backbone - group_w (int): width of group - - bot_mul (float): bottleneck ratio, i.e. expansion of bottlneck. + - bot_mul (float): bottleneck ratio, i.e. expansion of bottleneck. strides (Sequence[int]): Strides of the first block of each stage. base_channels (int): Base channels after stem layer. in_channels (int): Number of input image channels. Default: 3. @@ -42,26 +43,33 @@ class RegNet(ResNet): in resblocks to let them behave as identity. Default: True. Example: - >>> from mmdet.models import RegNet + >>> from mmcls.models import RegNet >>> import torch - >>> self = RegNet( - arch=dict( - w0=88, - wa=26.31, - wm=2.25, - group_w=48, - depth=25, - bot_mul=1.0)) - >>> self.eval() >>> inputs = torch.rand(1, 3, 32, 32) - >>> level_outputs = self.forward(inputs) + >>> # use str type 'arch' + >>> # Note that default out_indices is (3,) + >>> regnet_cfg = dict(arch='regnetx_4.0gf') + >>> model = RegNet(**regnet_cfg) + >>> model.eval() + >>> level_outputs = model(inputs) >>> for level_out in level_outputs: ... print(tuple(level_out.shape)) - (1, 96, 8, 8) - (1, 192, 4, 4) - (1, 432, 2, 2) - (1, 1008, 1, 1) + (1, 1360, 1, 1) + >>> # use dict type 'arch' + >>> arch_cfg =dict(w0=88, wa=26.31, wm=2.25, + >>> group_w=48, depth=25, bot_mul=1.0) + >>> regnet_cfg = dict(arch=arch_cfg, out_indices=(0, 1, 2, 3)) + >>> model = RegNet(**regnet_cfg) + >>> model.eval() + >>> level_outputs = model(inputs) + >>> for level_out in level_outputs: + ... print(tuple(level_out.shape)) + (1, 96, 8, 8) + (1, 192, 4, 4) + (1, 432, 2, 2) + (1, 1008, 1, 1) """ + arch_settings = { 'regnetx_400mf': dict(w0=24, wa=24.48, wm=2.54, group_w=16, depth=22, bot_mul=1.0), @@ -81,31 +89,33 @@ class RegNet(ResNet): dict(w0=168, wa=73.36, wm=2.37, group_w=112, depth=19, bot_mul=1.0), } - def __init__(self, - arch, - in_channels=3, - stem_channels=32, - base_channels=32, - strides=(2, 2, 2, 2), - dilations=(1, 1, 1, 1), - out_indices=(3, ), - style='pytorch', - deep_stem=False, - avg_down=False, - frozen_stages=-1, - conv_cfg=None, - norm_cfg=dict(type='BN', requires_grad=True), - norm_eval=False, - with_cp=False, - zero_init_residual=True, - init_cfg=None): + def __init__( + self, + arch, + in_channels=3, + stem_channels=32, + base_channels=32, + strides=(2, 2, 2, 2), + dilations=(1, 1, 1, 1), + out_indices=(3, ), + style='pytorch', + deep_stem=False, + avg_down=False, + frozen_stages=-1, + conv_cfg=None, + norm_cfg=dict(type='BN', requires_grad=True), + norm_eval=False, + with_cp=False, + zero_init_residual=True, + init_cfg=None, + ): super(ResNet, self).__init__(init_cfg) # Generate RegNet parameters first if isinstance(arch, str): - assert arch in self.arch_settings, \ - f'"arch": "{arch}" is not one of the' \ - ' arch_settings' + assert arch in self.arch_settings, ( + f'"arch": "{arch}" is not one of the' + ' arch_settings') arch = self.arch_settings[arch] elif not isinstance(arch, dict): raise TypeError('Expect "arch" to be either a string ' @@ -179,7 +189,8 @@ class RegNet(ResNet): norm_cfg=self.norm_cfg, base_channels=self.stage_widths[i], groups=stage_groups, - width_per_group=group_width) + width_per_group=group_width, + ) _in_channels = self.stage_widths[i] layer_name = f'layer{i + 1}' self.add_module(layer_name, res_layer) @@ -197,7 +208,8 @@ class RegNet(ResNet): kernel_size=3, stride=2, padding=1, - bias=False) + bias=False, + ) self.norm1_name, norm1 = build_norm_layer( self.norm_cfg, base_channels, postfix=1) self.add_module(self.norm1_name, norm1) @@ -219,8 +231,9 @@ class RegNet(ResNet): divisor (int): The divisor of channels. Defaults to 8. Returns: - list, int: return a list of widths of each stage and the number of - stages + tuple: tuple containing: + - list: Widths of each stage. + - int: The number of stages. """ assert width_slope >= 0 assert initial_width > 0 @@ -307,7 +320,4 @@ class RegNet(ResNet): if i in self.out_indices: outs.append(x) - if len(outs) == 1: - return outs[0] - else: - return tuple(outs) + return tuple(outs) diff --git a/openmmlab_test/mmclassification-0.24.1/mmcls/models/backbones/repmlp.py b/openmmlab_test/mmclassification-0.24.1/mmcls/models/backbones/repmlp.py new file mode 100644 index 00000000..9e6e2ed9 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/mmcls/models/backbones/repmlp.py @@ -0,0 +1,578 @@ +# Copyright (c) OpenMMLab. All rights reserved. +# Adapted from official impl at https://github.com/DingXiaoH/RepMLP. +import torch +import torch.nn as nn +import torch.nn.functional as F +from mmcv.cnn import (ConvModule, build_activation_layer, build_conv_layer, + build_norm_layer) +from mmcv.cnn.bricks.transformer import PatchEmbed as _PatchEmbed +from mmcv.runner import BaseModule, ModuleList, Sequential + +from mmcls.models.builder import BACKBONES +from mmcls.models.utils import SELayer, to_2tuple + + +def fuse_bn(conv_or_fc, bn): + """fuse conv and bn.""" + std = (bn.running_var + bn.eps).sqrt() + tmp_weight = bn.weight / std + tmp_weight = tmp_weight.reshape(-1, 1, 1, 1) + + if len(tmp_weight) == conv_or_fc.weight.size(0): + return (conv_or_fc.weight * tmp_weight, + bn.bias - bn.running_mean * bn.weight / std) + else: + # in RepMLPBlock, dim0 of fc3 weights and fc3_bn weights + # are different. + repeat_times = conv_or_fc.weight.size(0) // len(tmp_weight) + repeated = tmp_weight.repeat_interleave(repeat_times, 0) + fused_weight = conv_or_fc.weight * repeated + bias = bn.bias - bn.running_mean * bn.weight / std + fused_bias = (bias).repeat_interleave(repeat_times, 0) + return (fused_weight, fused_bias) + + +class PatchEmbed(_PatchEmbed): + """Image to Patch Embedding. + + Compared with default Patch Embedding(in ViT), Patch Embedding of RepMLP + have ReLu and do not convert output tensor into shape (N, L, C). + + Args: + in_channels (int): The num of input channels. Default: 3 + embed_dims (int): The dimensions of embedding. Default: 768 + conv_type (str): The type of convolution + to generate patch embedding. Default: "Conv2d". + kernel_size (int): The kernel_size of embedding conv. Default: 16. + stride (int): The slide stride of embedding conv. + Default: 16. + padding (int | tuple | string): The padding length of + embedding conv. When it is a string, it means the mode + of adaptive padding, support "same" and "corner" now. + Default: "corner". + dilation (int): The dilation rate of embedding conv. Default: 1. + bias (bool): Bias of embed conv. Default: True. + norm_cfg (dict, optional): Config dict for normalization layer. + Default: None. + input_size (int | tuple | None): The size of input, which will be + used to calculate the out size. Only works when `dynamic_size` + is False. Default: None. + init_cfg (`mmcv.ConfigDict`, optional): The Config for initialization. + Default: None. + """ + + def __init__(self, *args, **kwargs): + super(PatchEmbed, self).__init__(*args, **kwargs) + self.relu = nn.ReLU() + + def forward(self, x): + """ + Args: + x (Tensor): Has shape (B, C, H, W). In most case, C is 3. + Returns: + tuple: Contains merged results and its spatial shape. + - x (Tensor): The output tensor. + - out_size (tuple[int]): Spatial shape of x, arrange as + (out_h, out_w). + """ + + if self.adaptive_padding: + x = self.adaptive_padding(x) + + x = self.projection(x) + if self.norm is not None: + x = self.norm(x) + x = self.relu(x) + out_size = (x.shape[2], x.shape[3]) + return x, out_size + + +class GlobalPerceptron(SELayer): + """GlobalPerceptron implemented by using ``mmcls.modes.SELayer``. + + Args: + input_channels (int): The number of input (and output) channels + in the GlobalPerceptron. + ratio (int): Squeeze ratio in GlobalPerceptron, the intermediate + channel will be ``make_divisible(channels // ratio, divisor)``. + """ + + def __init__(self, input_channels: int, ratio: int, **kwargs) -> None: + super(GlobalPerceptron, self).__init__( + channels=input_channels, + ratio=ratio, + return_weight=True, + act_cfg=(dict(type='ReLU'), dict(type='Sigmoid')), + **kwargs) + + +class RepMLPBlock(BaseModule): + """Basic RepMLPNet, consists of PartitionPerceptron and GlobalPerceptron. + + Args: + channels (int): The number of input and the output channels of the + block. + path_h (int): The height of patches. + path_w (int): The weidth of patches. + reparam_conv_kernels (Squeue(int) | None): The conv kernels in the + GlobalPerceptron. Default: None. + globalperceptron_ratio (int): The reducation ratio in the + GlobalPerceptron. Default: 4. + num_sharesets (int): The number of sharesets in the + PartitionPerceptron. Default 1. + conv_cfg (dict, optional): Config dict for convolution layer. + Default: None, which means using conv2d. + norm_cfg (dict): dictionary to construct and config norm layer. + Default: dict(type='BN', requires_grad=True). + deploy (bool): Whether to switch the model structure to + deployment mode. Default: False. + init_cfg (dict or list[dict], optional): Initialization config dict. + Default: None + """ + + def __init__(self, + channels, + path_h, + path_w, + reparam_conv_kernels=None, + globalperceptron_ratio=4, + num_sharesets=1, + conv_cfg=None, + norm_cfg=dict(type='BN', requires_grad=True), + deploy=False, + init_cfg=None): + super().__init__(init_cfg=init_cfg) + + self.deploy = deploy + self.channels = channels + self.num_sharesets = num_sharesets + self.path_h, self.path_w = path_h, path_w + # the input channel of fc3 + self._path_vec_channles = path_h * path_w * num_sharesets + + self.conv_cfg = conv_cfg + self.norm_cfg = norm_cfg + + self.gp = GlobalPerceptron( + input_channels=channels, ratio=globalperceptron_ratio) + + # using a conv layer to implement a fc layer + self.fc3 = build_conv_layer( + conv_cfg, + in_channels=self._path_vec_channles, + out_channels=self._path_vec_channles, + kernel_size=1, + stride=1, + padding=0, + bias=deploy, + groups=num_sharesets) + if deploy: + self.fc3_bn = nn.Identity() + else: + norm_layer = build_norm_layer(norm_cfg, num_sharesets)[1] + self.add_module('fc3_bn', norm_layer) + + self.reparam_conv_kernels = reparam_conv_kernels + if not deploy and reparam_conv_kernels is not None: + for k in reparam_conv_kernels: + conv_branch = ConvModule( + in_channels=num_sharesets, + out_channels=num_sharesets, + kernel_size=k, + stride=1, + padding=k // 2, + norm_cfg=dict(type='BN', requires_grad=True), + groups=num_sharesets, + act_cfg=None) + self.__setattr__('repconv{}'.format(k), conv_branch) + + def partition(self, x, h_parts, w_parts): + # convert (N, C, H, W) to (N, h_parts, w_parts, C, path_h, path_w) + x = x.reshape(-1, self.channels, h_parts, self.path_h, w_parts, + self.path_w) + x = x.permute(0, 2, 4, 1, 3, 5) + return x + + def partition_affine(self, x, h_parts, w_parts): + """perform Partition Perceptron.""" + fc_inputs = x.reshape(-1, self._path_vec_channles, 1, 1) + out = self.fc3(fc_inputs) + out = out.reshape(-1, self.num_sharesets, self.path_h, self.path_w) + out = self.fc3_bn(out) + out = out.reshape(-1, h_parts, w_parts, self.num_sharesets, + self.path_h, self.path_w) + return out + + def forward(self, inputs): + # Global Perceptron + global_vec = self.gp(inputs) + + origin_shape = inputs.size() + h_parts = origin_shape[2] // self.path_h + w_parts = origin_shape[3] // self.path_w + + partitions = self.partition(inputs, h_parts, w_parts) + + # Channel Perceptron + fc3_out = self.partition_affine(partitions, h_parts, w_parts) + + # perform Local Perceptron + if self.reparam_conv_kernels is not None and not self.deploy: + conv_inputs = partitions.reshape(-1, self.num_sharesets, + self.path_h, self.path_w) + conv_out = 0 + for k in self.reparam_conv_kernels: + conv_branch = self.__getattr__('repconv{}'.format(k)) + conv_out += conv_branch(conv_inputs) + conv_out = conv_out.reshape(-1, h_parts, w_parts, + self.num_sharesets, self.path_h, + self.path_w) + fc3_out += conv_out + + # N, h_parts, w_parts, num_sharesets, out_h, out_w + fc3_out = fc3_out.permute(0, 3, 1, 4, 2, 5) + out = fc3_out.reshape(*origin_shape) + out = out * global_vec + return out + + def get_equivalent_fc3(self): + """get the equivalent fc3 weight and bias.""" + fc_weight, fc_bias = fuse_bn(self.fc3, self.fc3_bn) + if self.reparam_conv_kernels is not None: + largest_k = max(self.reparam_conv_kernels) + largest_branch = self.__getattr__('repconv{}'.format(largest_k)) + total_kernel, total_bias = fuse_bn(largest_branch.conv, + largest_branch.bn) + for k in self.reparam_conv_kernels: + if k != largest_k: + k_branch = self.__getattr__('repconv{}'.format(k)) + kernel, bias = fuse_bn(k_branch.conv, k_branch.bn) + total_kernel += F.pad(kernel, [(largest_k - k) // 2] * 4) + total_bias += bias + rep_weight, rep_bias = self._convert_conv_to_fc( + total_kernel, total_bias) + final_fc3_weight = rep_weight.reshape_as(fc_weight) + fc_weight + final_fc3_bias = rep_bias + fc_bias + else: + final_fc3_weight = fc_weight + final_fc3_bias = fc_bias + return final_fc3_weight, final_fc3_bias + + def local_inject(self): + """inject the Local Perceptron into Partition Perceptron.""" + self.deploy = True + # Locality Injection + fc3_weight, fc3_bias = self.get_equivalent_fc3() + # Remove Local Perceptron + if self.reparam_conv_kernels is not None: + for k in self.reparam_conv_kernels: + self.__delattr__('repconv{}'.format(k)) + self.__delattr__('fc3') + self.__delattr__('fc3_bn') + self.fc3 = build_conv_layer( + self.conv_cfg, + self._path_vec_channles, + self._path_vec_channles, + 1, + 1, + 0, + bias=True, + groups=self.num_sharesets) + self.fc3_bn = nn.Identity() + self.fc3.weight.data = fc3_weight + self.fc3.bias.data = fc3_bias + + def _convert_conv_to_fc(self, conv_kernel, conv_bias): + """convert conv_k1 to fc, which is still a conv_k2, and the k2 > k1.""" + in_channels = torch.eye(self.path_h * self.path_w).repeat( + 1, self.num_sharesets).reshape(self.path_h * self.path_w, + self.num_sharesets, self.path_h, + self.path_w).to(conv_kernel.device) + fc_k = F.conv2d( + in_channels, + conv_kernel, + padding=(conv_kernel.size(2) // 2, conv_kernel.size(3) // 2), + groups=self.num_sharesets) + fc_k = fc_k.reshape(self.path_w * self.path_w, self.num_sharesets * + self.path_h * self.path_w).t() + fc_bias = conv_bias.repeat_interleave(self.path_h * self.path_w) + return fc_k, fc_bias + + +class RepMLPNetUnit(BaseModule): + """A basic unit in RepMLPNet : [REPMLPBlock + BN + ConvFFN + BN]. + + Args: + channels (int): The number of input and the output channels of the + unit. + path_h (int): The height of patches. + path_w (int): The weidth of patches. + reparam_conv_kernels (Squeue(int) | None): The conv kernels in the + GlobalPerceptron. Default: None. + globalperceptron_ratio (int): The reducation ratio in the + GlobalPerceptron. Default: 4. + num_sharesets (int): The number of sharesets in the + PartitionPerceptron. Default 1. + conv_cfg (dict, optional): Config dict for convolution layer. + Default: None, which means using conv2d. + norm_cfg (dict): dictionary to construct and config norm layer. + Default: dict(type='BN', requires_grad=True). + act_cfg (dict): Config dict for activation layer. + Default: dict(type='ReLU'). + deploy (bool): Whether to switch the model structure to + deployment mode. Default: False. + init_cfg (dict or list[dict], optional): Initialization config dict. + Default: None + """ + + def __init__(self, + channels, + path_h, + path_w, + reparam_conv_kernels, + globalperceptron_ratio, + norm_cfg=dict(type='BN', requires_grad=True), + ffn_expand=4, + num_sharesets=1, + deploy=False, + init_cfg=None): + super().__init__(init_cfg=init_cfg) + self.repmlp_block = RepMLPBlock( + channels=channels, + path_h=path_h, + path_w=path_w, + reparam_conv_kernels=reparam_conv_kernels, + globalperceptron_ratio=globalperceptron_ratio, + num_sharesets=num_sharesets, + deploy=deploy) + self.ffn_block = ConvFFN(channels, channels * ffn_expand) + norm1 = build_norm_layer(norm_cfg, channels)[1] + self.add_module('norm1', norm1) + norm2 = build_norm_layer(norm_cfg, channels)[1] + self.add_module('norm2', norm2) + + def forward(self, x): + y = x + self.repmlp_block(self.norm1(x)) + out = y + self.ffn_block(self.norm2(y)) + return out + + +class ConvFFN(nn.Module): + """ConvFFN implemented by using point-wise convs.""" + + def __init__(self, + in_channels, + hidden_channels=None, + out_channels=None, + norm_cfg=dict(type='BN', requires_grad=True), + act_cfg=dict(type='GELU')): + super().__init__() + out_features = out_channels or in_channels + hidden_features = hidden_channels or in_channels + self.ffn_fc1 = ConvModule( + in_channels=in_channels, + out_channels=hidden_features, + kernel_size=1, + stride=1, + padding=0, + norm_cfg=norm_cfg, + act_cfg=None) + self.ffn_fc2 = ConvModule( + in_channels=hidden_features, + out_channels=out_features, + kernel_size=1, + stride=1, + padding=0, + norm_cfg=norm_cfg, + act_cfg=None) + self.act = build_activation_layer(act_cfg) + + def forward(self, x): + x = self.ffn_fc1(x) + x = self.act(x) + x = self.ffn_fc2(x) + return x + + +@BACKBONES.register_module() +class RepMLPNet(BaseModule): + """RepMLPNet backbone. + + A PyTorch impl of : `RepMLP: Re-parameterizing Convolutions into + Fully-connected Layers for Image Recognition + `_ + + Args: + arch (str | dict): RepMLP architecture. If use string, choose + from 'base' and 'b'. If use dict, it should have below keys: + + - channels (List[int]): Number of blocks in each stage. + - depths (List[int]): The number of blocks in each branch. + - sharesets_nums (List[int]): RepVGG Block that declares + the need to apply group convolution. + + img_size (int | tuple): The size of input image. Defaults: 224. + in_channels (int): Number of input image channels. Default: 3. + patch_size (int | tuple): The patch size in patch embedding. + Defaults to 4. + out_indices (Sequence[int]): Output from which stages. + Default: ``(3, )``. + reparam_conv_kernels (Squeue(int) | None): The conv kernels in the + GlobalPerceptron. Default: None. + globalperceptron_ratio (int): The reducation ratio in the + GlobalPerceptron. Default: 4. + num_sharesets (int): The number of sharesets in the + PartitionPerceptron. Default 1. + conv_cfg (dict | None): The config dict for conv layers. Default: None. + norm_cfg (dict): The config dict for norm layers. + Default: dict(type='BN', requires_grad=True). + patch_cfg (dict): Extra config dict for patch embedding. + Defaults to an empty dict. + final_norm (bool): Whether to add a additional layer to normalize + final feature map. Defaults to True. + act_cfg (dict): Config dict for activation layer. + Default: dict(type='ReLU'). + deploy (bool): Whether to switch the model structure to deployment + mode. Default: False. + init_cfg (dict or list[dict], optional): Initialization config dict. + """ + arch_zoo = { + **dict.fromkeys(['b', 'base'], + {'channels': [96, 192, 384, 768], + 'depths': [2, 2, 12, 2], + 'sharesets_nums': [1, 4, 32, 128]}), + } # yapf: disable + + num_extra_tokens = 0 # there is no cls-token in RepMLP + + def __init__(self, + arch, + img_size=224, + in_channels=3, + patch_size=4, + out_indices=(3, ), + reparam_conv_kernels=(3, ), + globalperceptron_ratio=4, + conv_cfg=None, + norm_cfg=dict(type='BN', requires_grad=True), + patch_cfg=dict(), + final_norm=True, + deploy=False, + init_cfg=None): + super(RepMLPNet, self).__init__(init_cfg=init_cfg) + if isinstance(arch, str): + arch = arch.lower() + assert arch in set(self.arch_zoo), \ + f'Arch {arch} is not in default archs {set(self.arch_zoo)}' + self.arch_settings = self.arch_zoo[arch] + else: + essential_keys = {'channels', 'depths', 'sharesets_nums'} + assert isinstance(arch, dict) and set(arch) == essential_keys, \ + f'Custom arch needs a dict with keys {essential_keys}.' + self.arch_settings = arch + + self.img_size = to_2tuple(img_size) + self.patch_size = to_2tuple(patch_size) + self.conv_cfg = conv_cfg + self.norm_cfg = norm_cfg + + self.num_stage = len(self.arch_settings['channels']) + for value in self.arch_settings.values(): + assert isinstance(value, list) and len(value) == self.num_stage, ( + 'Length of setting item in arch dict must be type of list and' + ' have the same length.') + + self.channels = self.arch_settings['channels'] + self.depths = self.arch_settings['depths'] + self.sharesets_nums = self.arch_settings['sharesets_nums'] + + _patch_cfg = dict( + in_channels=in_channels, + input_size=self.img_size, + embed_dims=self.channels[0], + conv_type='Conv2d', + kernel_size=self.patch_size, + stride=self.patch_size, + norm_cfg=self.norm_cfg, + bias=False) + _patch_cfg.update(patch_cfg) + self.patch_embed = PatchEmbed(**_patch_cfg) + self.patch_resolution = self.patch_embed.init_out_size + + self.patch_hs = [ + self.patch_resolution[0] // 2**i for i in range(self.num_stage) + ] + self.patch_ws = [ + self.patch_resolution[1] // 2**i for i in range(self.num_stage) + ] + + self.stages = ModuleList() + self.downsample_layers = ModuleList() + for stage_idx in range(self.num_stage): + # make stage layers + _stage_cfg = dict( + channels=self.channels[stage_idx], + path_h=self.patch_hs[stage_idx], + path_w=self.patch_ws[stage_idx], + reparam_conv_kernels=reparam_conv_kernels, + globalperceptron_ratio=globalperceptron_ratio, + norm_cfg=self.norm_cfg, + ffn_expand=4, + num_sharesets=self.sharesets_nums[stage_idx], + deploy=deploy) + stage_blocks = [ + RepMLPNetUnit(**_stage_cfg) + for _ in range(self.depths[stage_idx]) + ] + self.stages.append(Sequential(*stage_blocks)) + + # make downsample layers + if stage_idx < self.num_stage - 1: + self.downsample_layers.append( + ConvModule( + in_channels=self.channels[stage_idx], + out_channels=self.channels[stage_idx + 1], + kernel_size=2, + stride=2, + padding=0, + conv_cfg=self.conv_cfg, + norm_cfg=self.norm_cfg, + inplace=True)) + + self.out_indice = out_indices + + if final_norm: + norm_layer = build_norm_layer(norm_cfg, self.channels[-1])[1] + else: + norm_layer = nn.Identity() + self.add_module('final_norm', norm_layer) + + def forward(self, x): + assert x.shape[2:] == self.img_size, \ + "The Rep-MLP doesn't support dynamic input shape. " \ + f'Please input images with shape {self.img_size}' + + outs = [] + + x, _ = self.patch_embed(x) + for i, stage in enumerate(self.stages): + x = stage(x) + + # downsample after each stage except last stage + if i < len(self.stages) - 1: + downsample = self.downsample_layers[i] + x = downsample(x) + + if i in self.out_indice: + if self.final_norm and i == len(self.stages) - 1: + out = self.final_norm(x) + else: + out = x + outs.append(out) + + return tuple(outs) + + def switch_to_deploy(self): + for m in self.modules(): + if hasattr(m, 'local_inject'): + m.local_inject() diff --git a/openmmlab_test/mmclassification-0.24.1/mmcls/models/backbones/repvgg.py b/openmmlab_test/mmclassification-0.24.1/mmcls/models/backbones/repvgg.py new file mode 100644 index 00000000..bbdbda2f --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/mmcls/models/backbones/repvgg.py @@ -0,0 +1,619 @@ +# Copyright (c) OpenMMLab. All rights reserved. +import torch +import torch.nn.functional as F +import torch.utils.checkpoint as cp +from mmcv.cnn import (ConvModule, build_activation_layer, build_conv_layer, + build_norm_layer) +from mmcv.runner import BaseModule, Sequential +from mmcv.utils.parrots_wrapper import _BatchNorm +from torch import nn + +from ..builder import BACKBONES +from ..utils.se_layer import SELayer +from .base_backbone import BaseBackbone + + +class RepVGGBlock(BaseModule): + """RepVGG block for RepVGG backbone. + + Args: + in_channels (int): The input channels of the block. + out_channels (int): The output channels of the block. + stride (int): Stride of the 3x3 and 1x1 convolution layer. Default: 1. + padding (int): Padding of the 3x3 convolution layer. + dilation (int): Dilation of the 3x3 convolution layer. + groups (int): Groups of the 3x3 and 1x1 convolution layer. Default: 1. + padding_mode (str): Padding mode of the 3x3 convolution layer. + Default: 'zeros'. + se_cfg (None or dict): The configuration of the se module. + Default: None. + with_cp (bool): Use checkpoint or not. Using checkpoint will save some + memory while slowing down the training speed. Default: False. + conv_cfg (dict, optional): Config dict for convolution layer. + Default: None, which means using conv2d. + norm_cfg (dict): dictionary to construct and config norm layer. + Default: dict(type='BN', requires_grad=True). + act_cfg (dict): Config dict for activation layer. + Default: dict(type='ReLU'). + deploy (bool): Whether to switch the model structure to + deployment mode. Default: False. + init_cfg (dict or list[dict], optional): Initialization config dict. + Default: None + """ + + def __init__(self, + in_channels, + out_channels, + stride=1, + padding=1, + dilation=1, + groups=1, + padding_mode='zeros', + se_cfg=None, + with_cp=False, + conv_cfg=None, + norm_cfg=dict(type='BN'), + act_cfg=dict(type='ReLU'), + deploy=False, + init_cfg=None): + super(RepVGGBlock, self).__init__(init_cfg) + + assert se_cfg is None or isinstance(se_cfg, dict) + + self.in_channels = in_channels + self.out_channels = out_channels + self.stride = stride + self.padding = padding + self.dilation = dilation + self.groups = groups + self.se_cfg = se_cfg + self.with_cp = with_cp + self.conv_cfg = conv_cfg + self.norm_cfg = norm_cfg + self.act_cfg = act_cfg + self.deploy = deploy + + if deploy: + self.branch_reparam = build_conv_layer( + conv_cfg, + in_channels=in_channels, + out_channels=out_channels, + kernel_size=3, + stride=stride, + padding=padding, + dilation=dilation, + groups=groups, + bias=True, + padding_mode=padding_mode) + else: + # judge if input shape and output shape are the same. + # If true, add a normalized identity shortcut. + if out_channels == in_channels and stride == 1 and \ + padding == dilation: + self.branch_norm = build_norm_layer(norm_cfg, in_channels)[1] + else: + self.branch_norm = None + + self.branch_3x3 = self.create_conv_bn( + kernel_size=3, + dilation=dilation, + padding=padding, + ) + self.branch_1x1 = self.create_conv_bn(kernel_size=1) + + if se_cfg is not None: + self.se_layer = SELayer(channels=out_channels, **se_cfg) + else: + self.se_layer = None + + self.act = build_activation_layer(act_cfg) + + def create_conv_bn(self, kernel_size, dilation=1, padding=0): + conv_bn = Sequential() + conv_bn.add_module( + 'conv', + build_conv_layer( + self.conv_cfg, + in_channels=self.in_channels, + out_channels=self.out_channels, + kernel_size=kernel_size, + stride=self.stride, + dilation=dilation, + padding=padding, + groups=self.groups, + bias=False)) + conv_bn.add_module( + 'norm', + build_norm_layer(self.norm_cfg, num_features=self.out_channels)[1]) + + return conv_bn + + def forward(self, x): + + def _inner_forward(inputs): + if self.deploy: + return self.branch_reparam(inputs) + + if self.branch_norm is None: + branch_norm_out = 0 + else: + branch_norm_out = self.branch_norm(inputs) + + inner_out = self.branch_3x3(inputs) + self.branch_1x1( + inputs) + branch_norm_out + + if self.se_cfg is not None: + inner_out = self.se_layer(inner_out) + + return inner_out + + if self.with_cp and x.requires_grad: + out = cp.checkpoint(_inner_forward, x) + else: + out = _inner_forward(x) + + out = self.act(out) + + return out + + def switch_to_deploy(self): + """Switch the model structure from training mode to deployment mode.""" + if self.deploy: + return + assert self.norm_cfg['type'] == 'BN', \ + "Switch is not allowed when norm_cfg['type'] != 'BN'." + + reparam_weight, reparam_bias = self.reparameterize() + self.branch_reparam = build_conv_layer( + self.conv_cfg, + self.in_channels, + self.out_channels, + kernel_size=3, + stride=self.stride, + padding=self.padding, + dilation=self.dilation, + groups=self.groups, + bias=True) + self.branch_reparam.weight.data = reparam_weight + self.branch_reparam.bias.data = reparam_bias + + for param in self.parameters(): + param.detach_() + delattr(self, 'branch_3x3') + delattr(self, 'branch_1x1') + delattr(self, 'branch_norm') + + self.deploy = True + + def reparameterize(self): + """Fuse all the parameters of all branches. + + Returns: + tuple[torch.Tensor, torch.Tensor]: Parameters after fusion of all + branches. the first element is the weights and the second is + the bias. + """ + weight_3x3, bias_3x3 = self._fuse_conv_bn(self.branch_3x3) + weight_1x1, bias_1x1 = self._fuse_conv_bn(self.branch_1x1) + # pad a conv1x1 weight to a conv3x3 weight + weight_1x1 = F.pad(weight_1x1, [1, 1, 1, 1], value=0) + + weight_norm, bias_norm = 0, 0 + if self.branch_norm: + tmp_conv_bn = self._norm_to_conv3x3(self.branch_norm) + weight_norm, bias_norm = self._fuse_conv_bn(tmp_conv_bn) + + return (weight_3x3 + weight_1x1 + weight_norm, + bias_3x3 + bias_1x1 + bias_norm) + + def _fuse_conv_bn(self, branch): + """Fuse the parameters in a branch with a conv and bn. + + Args: + branch (mmcv.runner.Sequential): A branch with conv and bn. + + Returns: + tuple[torch.Tensor, torch.Tensor]: The parameters obtained after + fusing the parameters of conv and bn in one branch. + The first element is the weight and the second is the bias. + """ + if branch is None: + return 0, 0 + conv_weight = branch.conv.weight + running_mean = branch.norm.running_mean + running_var = branch.norm.running_var + gamma = branch.norm.weight + beta = branch.norm.bias + eps = branch.norm.eps + + std = (running_var + eps).sqrt() + fused_weight = (gamma / std).reshape(-1, 1, 1, 1) * conv_weight + fused_bias = -running_mean * gamma / std + beta + + return fused_weight, fused_bias + + def _norm_to_conv3x3(self, branch_norm): + """Convert a norm layer to a conv3x3-bn sequence. + + Args: + branch (nn.BatchNorm2d): A branch only with bn in the block. + + Returns: + tmp_conv3x3 (mmcv.runner.Sequential): a sequential with conv3x3 and + bn. + """ + input_dim = self.in_channels // self.groups + conv_weight = torch.zeros((self.in_channels, input_dim, 3, 3), + dtype=branch_norm.weight.dtype) + + for i in range(self.in_channels): + conv_weight[i, i % input_dim, 1, 1] = 1 + conv_weight = conv_weight.to(branch_norm.weight.device) + + tmp_conv3x3 = self.create_conv_bn(kernel_size=3) + tmp_conv3x3.conv.weight.data = conv_weight + tmp_conv3x3.norm = branch_norm + return tmp_conv3x3 + + +class MTSPPF(nn.Module): + """MTSPPF block for YOLOX-PAI RepVGG backbone. + + Args: + in_channels (int): The input channels of the block. + out_channels (int): The output channels of the block. + norm_cfg (dict): dictionary to construct and config norm layer. + Default: dict(type='BN'). + act_cfg (dict): Config dict for activation layer. + Default: dict(type='ReLU'). + kernel_size (int): Kernel size of pooling. Default: 5. + """ + + def __init__(self, + in_channels, + out_channels, + norm_cfg=dict(type='BN'), + act_cfg=dict(type='ReLU'), + kernel_size=5): + super().__init__() + hidden_features = in_channels // 2 # hidden channels + self.conv1 = ConvModule( + in_channels, + hidden_features, + 1, + stride=1, + norm_cfg=norm_cfg, + act_cfg=act_cfg) + self.conv2 = ConvModule( + hidden_features * 4, + out_channels, + 1, + stride=1, + norm_cfg=norm_cfg, + act_cfg=act_cfg) + self.maxpool = nn.MaxPool2d( + kernel_size=kernel_size, stride=1, padding=kernel_size // 2) + + def forward(self, x): + x = self.conv1(x) + y1 = self.maxpool(x) + y2 = self.maxpool(y1) + return self.conv2(torch.cat([x, y1, y2, self.maxpool(y2)], 1)) + + +@BACKBONES.register_module() +class RepVGG(BaseBackbone): + """RepVGG backbone. + + A PyTorch impl of : `RepVGG: Making VGG-style ConvNets Great Again + `_ + + Args: + arch (str | dict): RepVGG architecture. If use string, + choose from 'A0', 'A1`', 'A2', 'B0', 'B1', 'B1g2', 'B1g4', 'B2' + , 'B2g2', 'B2g4', 'B3', 'B3g2', 'B3g4' or 'D2se'. If use dict, + it should have below keys: + + - num_blocks (Sequence[int]): Number of blocks in each stage. + - width_factor (Sequence[float]): Width deflator in each stage. + - group_layer_map (dict | None): RepVGG Block that declares + the need to apply group convolution. + - se_cfg (dict | None): Se Layer config. + - stem_channels (int, optional): The stem channels, the final + stem channels will be + ``min(stem_channels, base_channels*width_factor[0])``. + If not set here, 64 is used by default in the code. + + in_channels (int): Number of input image channels. Default: 3. + base_channels (int): Base channels of RepVGG backbone, work with + width_factor together. Defaults to 64. + out_indices (Sequence[int]): Output from which stages. Default: (3, ). + strides (Sequence[int]): Strides of the first block of each stage. + Default: (2, 2, 2, 2). + dilations (Sequence[int]): Dilation of each stage. + Default: (1, 1, 1, 1). + frozen_stages (int): Stages to be frozen (all param fixed). -1 means + not freezing any parameters. Default: -1. + conv_cfg (dict | None): The config dict for conv layers. Default: None. + norm_cfg (dict): The config dict for norm layers. + Default: dict(type='BN'). + act_cfg (dict): Config dict for activation layer. + Default: dict(type='ReLU'). + with_cp (bool): Use checkpoint or not. Using checkpoint will save some + memory while slowing down the training speed. Default: False. + deploy (bool): Whether to switch the model structure to deployment + mode. Default: False. + norm_eval (bool): Whether to set norm layers to eval mode, namely, + freeze running stats (mean and var). Note: Effect on Batch Norm + and its variants only. Default: False. + add_ppf (bool): Whether to use the MTSPPF block. Default: False. + init_cfg (dict or list[dict], optional): Initialization config dict. + """ + + groupwise_layers = [2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26] + g2_layer_map = {layer: 2 for layer in groupwise_layers} + g4_layer_map = {layer: 4 for layer in groupwise_layers} + + arch_settings = { + 'A0': + dict( + num_blocks=[2, 4, 14, 1], + width_factor=[0.75, 0.75, 0.75, 2.5], + group_layer_map=None, + se_cfg=None), + 'A1': + dict( + num_blocks=[2, 4, 14, 1], + width_factor=[1, 1, 1, 2.5], + group_layer_map=None, + se_cfg=None), + 'A2': + dict( + num_blocks=[2, 4, 14, 1], + width_factor=[1.5, 1.5, 1.5, 2.75], + group_layer_map=None, + se_cfg=None), + 'B0': + dict( + num_blocks=[4, 6, 16, 1], + width_factor=[1, 1, 1, 2.5], + group_layer_map=None, + se_cfg=None, + stem_channels=64), + 'B1': + dict( + num_blocks=[4, 6, 16, 1], + width_factor=[2, 2, 2, 4], + group_layer_map=None, + se_cfg=None), + 'B1g2': + dict( + num_blocks=[4, 6, 16, 1], + width_factor=[2, 2, 2, 4], + group_layer_map=g2_layer_map, + se_cfg=None), + 'B1g4': + dict( + num_blocks=[4, 6, 16, 1], + width_factor=[2, 2, 2, 4], + group_layer_map=g4_layer_map, + se_cfg=None), + 'B2': + dict( + num_blocks=[4, 6, 16, 1], + width_factor=[2.5, 2.5, 2.5, 5], + group_layer_map=None, + se_cfg=None), + 'B2g2': + dict( + num_blocks=[4, 6, 16, 1], + width_factor=[2.5, 2.5, 2.5, 5], + group_layer_map=g2_layer_map, + se_cfg=None), + 'B2g4': + dict( + num_blocks=[4, 6, 16, 1], + width_factor=[2.5, 2.5, 2.5, 5], + group_layer_map=g4_layer_map, + se_cfg=None), + 'B3': + dict( + num_blocks=[4, 6, 16, 1], + width_factor=[3, 3, 3, 5], + group_layer_map=None, + se_cfg=None), + 'B3g2': + dict( + num_blocks=[4, 6, 16, 1], + width_factor=[3, 3, 3, 5], + group_layer_map=g2_layer_map, + se_cfg=None), + 'B3g4': + dict( + num_blocks=[4, 6, 16, 1], + width_factor=[3, 3, 3, 5], + group_layer_map=g4_layer_map, + se_cfg=None), + 'D2se': + dict( + num_blocks=[8, 14, 24, 1], + width_factor=[2.5, 2.5, 2.5, 5], + group_layer_map=None, + se_cfg=dict(ratio=16, divisor=1)), + 'yolox-pai-small': + dict( + num_blocks=[3, 5, 7, 3], + width_factor=[1, 1, 1, 1], + group_layer_map=None, + se_cfg=None, + stem_channels=32), + } + + def __init__(self, + arch, + in_channels=3, + base_channels=64, + out_indices=(3, ), + strides=(2, 2, 2, 2), + dilations=(1, 1, 1, 1), + frozen_stages=-1, + conv_cfg=None, + norm_cfg=dict(type='BN'), + act_cfg=dict(type='ReLU'), + with_cp=False, + deploy=False, + norm_eval=False, + add_ppf=False, + init_cfg=[ + dict(type='Kaiming', layer=['Conv2d']), + dict( + type='Constant', + val=1, + layer=['_BatchNorm', 'GroupNorm']) + ]): + super(RepVGG, self).__init__(init_cfg) + + if isinstance(arch, str): + assert arch in self.arch_settings, \ + f'"arch": "{arch}" is not one of the arch_settings' + arch = self.arch_settings[arch] + elif not isinstance(arch, dict): + raise TypeError('Expect "arch" to be either a string ' + f'or a dict, got {type(arch)}') + + assert len(arch['num_blocks']) == len( + arch['width_factor']) == len(strides) == len(dilations) + assert max(out_indices) < len(arch['num_blocks']) + if arch['group_layer_map'] is not None: + assert max(arch['group_layer_map'].keys()) <= sum( + arch['num_blocks']) + + if arch['se_cfg'] is not None: + assert isinstance(arch['se_cfg'], dict) + + self.base_channels = base_channels + self.arch = arch + self.in_channels = in_channels + self.out_indices = out_indices + self.strides = strides + self.dilations = dilations + self.deploy = deploy + self.frozen_stages = frozen_stages + self.conv_cfg = conv_cfg + self.norm_cfg = norm_cfg + self.act_cfg = act_cfg + self.with_cp = with_cp + self.norm_eval = norm_eval + + # defaults to 64 to prevert BC-breaking if stem_channels + # not in arch dict; + # the stem channels should not be larger than that of stage1. + channels = min( + arch.get('stem_channels', 64), + int(self.base_channels * self.arch['width_factor'][0])) + self.stem = RepVGGBlock( + self.in_channels, + channels, + stride=2, + se_cfg=arch['se_cfg'], + with_cp=with_cp, + conv_cfg=conv_cfg, + norm_cfg=norm_cfg, + act_cfg=act_cfg, + deploy=deploy) + + next_create_block_idx = 1 + self.stages = [] + for i in range(len(arch['num_blocks'])): + num_blocks = self.arch['num_blocks'][i] + stride = self.strides[i] + dilation = self.dilations[i] + out_channels = int(self.base_channels * 2**i * + self.arch['width_factor'][i]) + + stage, next_create_block_idx = self._make_stage( + channels, out_channels, num_blocks, stride, dilation, + next_create_block_idx, init_cfg) + stage_name = f'stage_{i + 1}' + self.add_module(stage_name, stage) + self.stages.append(stage_name) + + channels = out_channels + + if add_ppf: + self.ppf = MTSPPF( + out_channels, + out_channels, + norm_cfg=norm_cfg, + act_cfg=act_cfg, + kernel_size=5) + else: + self.ppf = None + + def _make_stage(self, in_channels, out_channels, num_blocks, stride, + dilation, next_create_block_idx, init_cfg): + strides = [stride] + [1] * (num_blocks - 1) + dilations = [dilation] * num_blocks + + blocks = [] + for i in range(num_blocks): + groups = self.arch['group_layer_map'].get( + next_create_block_idx, + 1) if self.arch['group_layer_map'] is not None else 1 + blocks.append( + RepVGGBlock( + in_channels, + out_channels, + stride=strides[i], + padding=dilations[i], + dilation=dilations[i], + groups=groups, + se_cfg=self.arch['se_cfg'], + with_cp=self.with_cp, + conv_cfg=self.conv_cfg, + norm_cfg=self.norm_cfg, + act_cfg=self.act_cfg, + deploy=self.deploy, + init_cfg=init_cfg)) + in_channels = out_channels + next_create_block_idx += 1 + + return Sequential(*blocks), next_create_block_idx + + def forward(self, x): + x = self.stem(x) + outs = [] + for i, stage_name in enumerate(self.stages): + stage = getattr(self, stage_name) + x = stage(x) + if i + 1 == len(self.stages) and self.ppf is not None: + x = self.ppf(x) + if i in self.out_indices: + outs.append(x) + + return tuple(outs) + + def _freeze_stages(self): + if self.frozen_stages >= 0: + self.stem.eval() + for param in self.stem.parameters(): + param.requires_grad = False + for i in range(self.frozen_stages): + stage = getattr(self, f'stage_{i+1}') + stage.eval() + for param in stage.parameters(): + param.requires_grad = False + + def train(self, mode=True): + super(RepVGG, self).train(mode) + self._freeze_stages() + if mode and self.norm_eval: + for m in self.modules(): + if isinstance(m, _BatchNorm): + m.eval() + + def switch_to_deploy(self): + for m in self.modules(): + if isinstance(m, RepVGGBlock): + m.switch_to_deploy() + self.deploy = True diff --git a/openmmlab_test/mmclassification-0.24.1/mmcls/models/backbones/res2net.py b/openmmlab_test/mmclassification-0.24.1/mmcls/models/backbones/res2net.py new file mode 100644 index 00000000..491b6f47 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/mmcls/models/backbones/res2net.py @@ -0,0 +1,306 @@ +# Copyright (c) OpenMMLab. All rights reserved. +import math + +import torch +import torch.nn as nn +import torch.utils.checkpoint as cp +from mmcv.cnn import build_conv_layer, build_norm_layer +from mmcv.runner import ModuleList, Sequential + +from ..builder import BACKBONES +from .resnet import Bottleneck as _Bottleneck +from .resnet import ResNet + + +class Bottle2neck(_Bottleneck): + expansion = 4 + + def __init__(self, + in_channels, + out_channels, + scales=4, + base_width=26, + base_channels=64, + stage_type='normal', + **kwargs): + """Bottle2neck block for Res2Net.""" + super(Bottle2neck, self).__init__(in_channels, out_channels, **kwargs) + assert scales > 1, 'Res2Net degenerates to ResNet when scales = 1.' + + mid_channels = out_channels // self.expansion + width = int(math.floor(mid_channels * (base_width / base_channels))) + + self.norm1_name, norm1 = build_norm_layer( + self.norm_cfg, width * scales, postfix=1) + self.norm3_name, norm3 = build_norm_layer( + self.norm_cfg, self.out_channels, postfix=3) + + self.conv1 = build_conv_layer( + self.conv_cfg, + self.in_channels, + width * scales, + kernel_size=1, + stride=self.conv1_stride, + bias=False) + self.add_module(self.norm1_name, norm1) + + if stage_type == 'stage': + self.pool = nn.AvgPool2d( + kernel_size=3, stride=self.conv2_stride, padding=1) + + self.convs = ModuleList() + self.bns = ModuleList() + for i in range(scales - 1): + self.convs.append( + build_conv_layer( + self.conv_cfg, + width, + width, + kernel_size=3, + stride=self.conv2_stride, + padding=self.dilation, + dilation=self.dilation, + bias=False)) + self.bns.append( + build_norm_layer(self.norm_cfg, width, postfix=i + 1)[1]) + + self.conv3 = build_conv_layer( + self.conv_cfg, + width * scales, + self.out_channels, + kernel_size=1, + bias=False) + self.add_module(self.norm3_name, norm3) + + self.stage_type = stage_type + self.scales = scales + self.width = width + delattr(self, 'conv2') + delattr(self, self.norm2_name) + + def forward(self, x): + """Forward function.""" + + def _inner_forward(x): + identity = x + + out = self.conv1(x) + out = self.norm1(out) + out = self.relu(out) + + spx = torch.split(out, self.width, 1) + sp = self.convs[0](spx[0].contiguous()) + sp = self.relu(self.bns[0](sp)) + out = sp + for i in range(1, self.scales - 1): + if self.stage_type == 'stage': + sp = spx[i] + else: + sp = sp + spx[i] + sp = self.convs[i](sp.contiguous()) + sp = self.relu(self.bns[i](sp)) + out = torch.cat((out, sp), 1) + + if self.stage_type == 'normal' and self.scales != 1: + out = torch.cat((out, spx[self.scales - 1]), 1) + elif self.stage_type == 'stage' and self.scales != 1: + out = torch.cat((out, self.pool(spx[self.scales - 1])), 1) + + out = self.conv3(out) + out = self.norm3(out) + + if self.downsample is not None: + identity = self.downsample(x) + + out += identity + + return out + + if self.with_cp and x.requires_grad: + out = cp.checkpoint(_inner_forward, x) + else: + out = _inner_forward(x) + + out = self.relu(out) + + return out + + +class Res2Layer(Sequential): + """Res2Layer to build Res2Net style backbone. + + Args: + block (nn.Module): block used to build ResLayer. + inplanes (int): inplanes of block. + planes (int): planes of block. + num_blocks (int): number of blocks. + stride (int): stride of the first block. Default: 1 + avg_down (bool): Use AvgPool instead of stride conv when + downsampling in the bottle2neck. Defaults to True. + conv_cfg (dict): dictionary to construct and config conv layer. + Default: None + norm_cfg (dict): dictionary to construct and config norm layer. + Default: dict(type='BN') + scales (int): Scales used in Res2Net. Default: 4 + base_width (int): Basic width of each scale. Default: 26 + """ + + def __init__(self, + block, + in_channels, + out_channels, + num_blocks, + stride=1, + avg_down=True, + conv_cfg=None, + norm_cfg=dict(type='BN'), + scales=4, + base_width=26, + **kwargs): + self.block = block + + downsample = None + if stride != 1 or in_channels != out_channels: + if avg_down: + downsample = nn.Sequential( + nn.AvgPool2d( + kernel_size=stride, + stride=stride, + ceil_mode=True, + count_include_pad=False), + build_conv_layer( + conv_cfg, + in_channels, + out_channels, + kernel_size=1, + stride=1, + bias=False), + build_norm_layer(norm_cfg, out_channels)[1], + ) + else: + downsample = nn.Sequential( + build_conv_layer( + conv_cfg, + in_channels, + out_channels, + kernel_size=1, + stride=stride, + bias=False), + build_norm_layer(norm_cfg, out_channels)[1], + ) + + layers = [] + layers.append( + block( + in_channels=in_channels, + out_channels=out_channels, + stride=stride, + downsample=downsample, + conv_cfg=conv_cfg, + norm_cfg=norm_cfg, + scales=scales, + base_width=base_width, + stage_type='stage', + **kwargs)) + in_channels = out_channels + for _ in range(1, num_blocks): + layers.append( + block( + in_channels=in_channels, + out_channels=out_channels, + stride=1, + conv_cfg=conv_cfg, + norm_cfg=norm_cfg, + scales=scales, + base_width=base_width, + **kwargs)) + super(Res2Layer, self).__init__(*layers) + + +@BACKBONES.register_module() +class Res2Net(ResNet): + """Res2Net backbone. + + A PyTorch implement of : `Res2Net: A New Multi-scale Backbone + Architecture `_ + + Args: + depth (int): Depth of Res2Net, choose from {50, 101, 152}. + scales (int): Scales used in Res2Net. Defaults to 4. + base_width (int): Basic width of each scale. Defaults to 26. + in_channels (int): Number of input image channels. Defaults to 3. + num_stages (int): Number of Res2Net stages. Defaults to 4. + strides (Sequence[int]): Strides of the first block of each stage. + Defaults to ``(1, 2, 2, 2)``. + dilations (Sequence[int]): Dilation of each stage. + Defaults to ``(1, 1, 1, 1)``. + out_indices (Sequence[int]): Output from which stages. + Defaults to ``(3, )``. + style (str): "pytorch" or "caffe". If set to "pytorch", the stride-two + layer is the 3x3 conv layer, otherwise the stride-two layer is + the first 1x1 conv layer. Defaults to "pytorch". + deep_stem (bool): Replace 7x7 conv in input stem with 3 3x3 conv. + Defaults to True. + avg_down (bool): Use AvgPool instead of stride conv when + downsampling in the bottle2neck. Defaults to True. + frozen_stages (int): Stages to be frozen (stop grad and set eval mode). + -1 means not freezing any parameters. Defaults to -1. + norm_cfg (dict): Dictionary to construct and config norm layer. + Defaults to ``dict(type='BN', requires_grad=True)``. + norm_eval (bool): Whether to set norm layers to eval mode, namely, + freeze running stats (mean and var). Note: Effect on Batch Norm + and its variants only. Defaults to False. + with_cp (bool): Use checkpoint or not. Using checkpoint will save some + memory while slowing down the training speed. Defaults to False. + zero_init_residual (bool): Whether to use zero init for last norm layer + in resblocks to let them behave as identity. Defaults to True. + init_cfg (dict or list[dict], optional): Initialization config dict. + Defaults to None. + + Example: + >>> from mmcls.models import Res2Net + >>> import torch + >>> model = Res2Net(depth=50, + ... scales=4, + ... base_width=26, + ... out_indices=(0, 1, 2, 3)) + >>> model.eval() + >>> inputs = torch.rand(1, 3, 32, 32) + >>> level_outputs = model.forward(inputs) + >>> for level_out in level_outputs: + ... print(tuple(level_out.shape)) + (1, 256, 8, 8) + (1, 512, 4, 4) + (1, 1024, 2, 2) + (1, 2048, 1, 1) + """ + + arch_settings = { + 50: (Bottle2neck, (3, 4, 6, 3)), + 101: (Bottle2neck, (3, 4, 23, 3)), + 152: (Bottle2neck, (3, 8, 36, 3)) + } + + def __init__(self, + scales=4, + base_width=26, + style='pytorch', + deep_stem=True, + avg_down=True, + init_cfg=None, + **kwargs): + self.scales = scales + self.base_width = base_width + super(Res2Net, self).__init__( + style=style, + deep_stem=deep_stem, + avg_down=avg_down, + init_cfg=init_cfg, + **kwargs) + + def make_res_layer(self, **kwargs): + return Res2Layer( + scales=self.scales, + base_width=self.base_width, + base_channels=self.base_channels, + **kwargs) diff --git a/openmmlab_test/mmclassification-speed-benchmark/mmcls/models/backbones/resnest.py b/openmmlab_test/mmclassification-0.24.1/mmcls/models/backbones/resnest.py similarity index 99% rename from openmmlab_test/mmclassification-speed-benchmark/mmcls/models/backbones/resnest.py rename to openmmlab_test/mmclassification-0.24.1/mmcls/models/backbones/resnest.py index 2fb5d6c2..0a823988 100644 --- a/openmmlab_test/mmclassification-speed-benchmark/mmcls/models/backbones/resnest.py +++ b/openmmlab_test/mmclassification-0.24.1/mmcls/models/backbones/resnest.py @@ -1,3 +1,4 @@ +# Copyright (c) OpenMMLab. All rights reserved. import torch import torch.nn as nn import torch.nn.functional as F @@ -260,7 +261,7 @@ class Bottleneck(_Bottleneck): class ResNeSt(ResNetV1d): """ResNeSt backbone. - Please refer to the `paper `_ for + Please refer to the `paper `__ for details. Args: diff --git a/openmmlab_test/mmclassification-speed-benchmark/mmcls/models/backbones/resnet.py b/openmmlab_test/mmclassification-0.24.1/mmcls/models/backbones/resnet.py similarity index 90% rename from openmmlab_test/mmclassification-speed-benchmark/mmcls/models/backbones/resnet.py rename to openmmlab_test/mmclassification-0.24.1/mmcls/models/backbones/resnet.py index ee47ff55..d01ebe0c 100644 --- a/openmmlab_test/mmclassification-speed-benchmark/mmcls/models/backbones/resnet.py +++ b/openmmlab_test/mmclassification-0.24.1/mmcls/models/backbones/resnet.py @@ -1,14 +1,20 @@ +# Copyright (c) OpenMMLab. All rights reserved. + import torch.nn as nn import torch.utils.checkpoint as cp -from mmcv.cnn import (ConvModule, build_conv_layer, build_norm_layer, - constant_init) +from mmcv.cnn import (ConvModule, build_activation_layer, build_conv_layer, + build_norm_layer, constant_init) +from mmcv.cnn.bricks import DropPath +from mmcv.runner import BaseModule from mmcv.utils.parrots_wrapper import _BatchNorm from ..builder import BACKBONES from .base_backbone import BaseBackbone +eps = 1.0e-5 + -class BasicBlock(nn.Module): +class BasicBlock(BaseModule): """BasicBlock for ResNet. Args: @@ -41,8 +47,11 @@ class BasicBlock(nn.Module): style='pytorch', with_cp=False, conv_cfg=None, - norm_cfg=dict(type='BN')): - super(BasicBlock, self).__init__() + norm_cfg=dict(type='BN'), + drop_path_rate=0.0, + act_cfg=dict(type='ReLU', inplace=True), + init_cfg=None): + super(BasicBlock, self).__init__(init_cfg=init_cfg) self.in_channels = in_channels self.out_channels = out_channels self.expansion = expansion @@ -80,8 +89,10 @@ class BasicBlock(nn.Module): bias=False) self.add_module(self.norm2_name, norm2) - self.relu = nn.ReLU(inplace=True) + self.relu = build_activation_layer(act_cfg) self.downsample = downsample + self.drop_path = DropPath(drop_prob=drop_path_rate + ) if drop_path_rate > eps else nn.Identity() @property def norm1(self): @@ -106,6 +117,8 @@ class BasicBlock(nn.Module): if self.downsample is not None: identity = self.downsample(x) + out = self.drop_path(out) + out += identity return out @@ -120,7 +133,7 @@ class BasicBlock(nn.Module): return out -class Bottleneck(nn.Module): +class Bottleneck(BaseModule): """Bottleneck block for ResNet. Args: @@ -153,8 +166,11 @@ class Bottleneck(nn.Module): style='pytorch', with_cp=False, conv_cfg=None, - norm_cfg=dict(type='BN')): - super(Bottleneck, self).__init__() + norm_cfg=dict(type='BN'), + act_cfg=dict(type='ReLU', inplace=True), + drop_path_rate=0.0, + init_cfg=None): + super(Bottleneck, self).__init__(init_cfg=init_cfg) assert style in ['pytorch', 'caffe'] self.in_channels = in_channels @@ -210,8 +226,10 @@ class Bottleneck(nn.Module): bias=False) self.add_module(self.norm3_name, norm3) - self.relu = nn.ReLU(inplace=True) + self.relu = build_activation_layer(act_cfg) self.downsample = downsample + self.drop_path = DropPath(drop_prob=drop_path_rate + ) if drop_path_rate > eps else nn.Identity() @property def norm1(self): @@ -244,6 +262,8 @@ class Bottleneck(nn.Module): if self.downsample is not None: identity = self.downsample(x) + out = self.drop_path(out) + out += identity return out @@ -382,7 +402,7 @@ class ResLayer(nn.Sequential): class ResNet(BaseBackbone): """ResNet backbone. - Please refer to the `paper `_ for + Please refer to the `paper `__ for details. Args: @@ -395,10 +415,8 @@ class ResNet(BaseBackbone): Default: ``(1, 2, 2, 2)``. dilations (Sequence[int]): Dilation of each stage. Default: ``(1, 1, 1, 1)``. - out_indices (Sequence[int]): Output from which stages. If only one - stage is specified, a single tensor (feature map) is returned, - otherwise multiple stages are specified, a tuple of tensors will - be returned. Default: ``(3, )``. + out_indices (Sequence[int]): Output from which stages. + Default: ``(3, )``. style (str): `pytorch` or `caffe`. If set to "pytorch", the stride-two layer is the 3x3 conv layer, otherwise the stride-two layer is the first 1x1 conv layer. @@ -466,7 +484,8 @@ class ResNet(BaseBackbone): type='Constant', val=1, layer=['_BatchNorm', 'GroupNorm']) - ]): + ], + drop_path_rate=0.0): super(ResNet, self).__init__(init_cfg) if depth not in self.arch_settings: raise KeyError(f'invalid depth {depth} for resnet') @@ -513,7 +532,8 @@ class ResNet(BaseBackbone): avg_down=self.avg_down, with_cp=with_cp, conv_cfg=conv_cfg, - norm_cfg=norm_cfg) + norm_cfg=norm_cfg, + drop_path_rate=drop_path_rate) _in_channels = _out_channels _out_channels *= 2 layer_name = f'layer{i + 1}' @@ -594,10 +614,14 @@ class ResNet(BaseBackbone): for param in m.parameters(): param.requires_grad = False - # def init_weights(self, pretrained=None): def init_weights(self): super(ResNet, self).init_weights() + if (isinstance(self.init_cfg, dict) + and self.init_cfg['type'] == 'Pretrained'): + # Suppress zero_init_residual if use pretrained model. + return + if self.zero_init_residual: for m in self.modules(): if isinstance(m, Bottleneck): @@ -619,10 +643,7 @@ class ResNet(BaseBackbone): x = res_layer(x) if i in self.out_indices: outs.append(x) - if len(outs) == 1: - return outs[0] - else: - return tuple(outs) + return tuple(outs) def train(self, mode=True): super(ResNet, self).train(mode) @@ -634,10 +655,27 @@ class ResNet(BaseBackbone): m.eval() +@BACKBONES.register_module() +class ResNetV1c(ResNet): + """ResNetV1c backbone. + + This variant is described in `Bag of Tricks. + `_. + + Compared with default ResNet(ResNetV1b), ResNetV1c replaces the 7x7 conv + in the input stem with three 3x3 convs. + """ + + def __init__(self, **kwargs): + super(ResNetV1c, self).__init__( + deep_stem=True, avg_down=False, **kwargs) + + @BACKBONES.register_module() class ResNetV1d(ResNet): - """ResNetV1d variant described in `Bag of Tricks. + """ResNetV1d backbone. + This variant is described in `Bag of Tricks. `_. Compared with default ResNet(ResNetV1b), ResNetV1d replaces the 7x7 conv in diff --git a/openmmlab_test/mmclassification-speed-benchmark/mmcls/models/backbones/resnet_cifar.py b/openmmlab_test/mmclassification-0.24.1/mmcls/models/backbones/resnet_cifar.py similarity index 97% rename from openmmlab_test/mmclassification-speed-benchmark/mmcls/models/backbones/resnet_cifar.py rename to openmmlab_test/mmclassification-0.24.1/mmcls/models/backbones/resnet_cifar.py index d0759940..54b8a48b 100644 --- a/openmmlab_test/mmclassification-speed-benchmark/mmcls/models/backbones/resnet_cifar.py +++ b/openmmlab_test/mmclassification-0.24.1/mmcls/models/backbones/resnet_cifar.py @@ -1,3 +1,4 @@ +# Copyright (c) OpenMMLab. All rights reserved. import torch.nn as nn from mmcv.cnn import build_conv_layer, build_norm_layer @@ -77,7 +78,4 @@ class ResNet_CIFAR(ResNet): x = res_layer(x) if i in self.out_indices: outs.append(x) - if len(outs) == 1: - return outs[0] - else: - return tuple(outs) + return tuple(outs) diff --git a/openmmlab_test/mmclassification-speed-benchmark/mmcls/models/backbones/resnext.py b/openmmlab_test/mmclassification-0.24.1/mmcls/models/backbones/resnext.py similarity index 99% rename from openmmlab_test/mmclassification-speed-benchmark/mmcls/models/backbones/resnext.py rename to openmmlab_test/mmclassification-0.24.1/mmcls/models/backbones/resnext.py index 3549c95c..2370b711 100644 --- a/openmmlab_test/mmclassification-speed-benchmark/mmcls/models/backbones/resnext.py +++ b/openmmlab_test/mmclassification-0.24.1/mmcls/models/backbones/resnext.py @@ -1,3 +1,4 @@ +# Copyright (c) OpenMMLab. All rights reserved. from mmcv.cnn import build_conv_layer, build_norm_layer from ..builder import BACKBONES @@ -89,7 +90,7 @@ class Bottleneck(_Bottleneck): class ResNeXt(ResNet): """ResNeXt backbone. - Please refer to the `paper `_ for + Please refer to the `paper `__ for details. Args: diff --git a/openmmlab_test/mmclassification-speed-benchmark/mmcls/models/backbones/seresnet.py b/openmmlab_test/mmclassification-0.24.1/mmcls/models/backbones/seresnet.py similarity index 98% rename from openmmlab_test/mmclassification-speed-benchmark/mmcls/models/backbones/seresnet.py rename to openmmlab_test/mmclassification-0.24.1/mmcls/models/backbones/seresnet.py index 862698f1..0cfc5d1d 100644 --- a/openmmlab_test/mmclassification-speed-benchmark/mmcls/models/backbones/seresnet.py +++ b/openmmlab_test/mmclassification-0.24.1/mmcls/models/backbones/seresnet.py @@ -1,3 +1,4 @@ +# Copyright (c) OpenMMLab. All rights reserved. import torch.utils.checkpoint as cp from ..builder import BACKBONES @@ -57,7 +58,7 @@ class SEBottleneck(Bottleneck): class SEResNet(ResNet): """SEResNet backbone. - Please refer to the `paper `_ for + Please refer to the `paper `__ for details. Args: diff --git a/openmmlab_test/mmclassification-speed-benchmark/mmcls/models/backbones/seresnext.py b/openmmlab_test/mmclassification-0.24.1/mmcls/models/backbones/seresnext.py similarity index 99% rename from openmmlab_test/mmclassification-speed-benchmark/mmcls/models/backbones/seresnext.py rename to openmmlab_test/mmclassification-0.24.1/mmcls/models/backbones/seresnext.py index 8e66a842..aff5cb49 100644 --- a/openmmlab_test/mmclassification-speed-benchmark/mmcls/models/backbones/seresnext.py +++ b/openmmlab_test/mmclassification-0.24.1/mmcls/models/backbones/seresnext.py @@ -1,3 +1,4 @@ +# Copyright (c) OpenMMLab. All rights reserved. from mmcv.cnn import build_conv_layer, build_norm_layer from ..builder import BACKBONES @@ -95,7 +96,7 @@ class SEBottleneck(_SEBottleneck): class SEResNeXt(SEResNet): """SEResNeXt backbone. - Please refer to the `paper `_ for + Please refer to the `paper `__ for details. Args: diff --git a/openmmlab_test/mmclassification-speed-benchmark/mmcls/models/backbones/shufflenet_v1.py b/openmmlab_test/mmclassification-0.24.1/mmcls/models/backbones/shufflenet_v1.py similarity index 95% rename from openmmlab_test/mmclassification-speed-benchmark/mmcls/models/backbones/shufflenet_v1.py rename to openmmlab_test/mmclassification-0.24.1/mmcls/models/backbones/shufflenet_v1.py index d1b7e2d3..0b6c70f0 100644 --- a/openmmlab_test/mmclassification-speed-benchmark/mmcls/models/backbones/shufflenet_v1.py +++ b/openmmlab_test/mmclassification-0.24.1/mmcls/models/backbones/shufflenet_v1.py @@ -1,8 +1,10 @@ +# Copyright (c) OpenMMLab. All rights reserved. import torch import torch.nn as nn import torch.utils.checkpoint as cp from mmcv.cnn import (ConvModule, build_activation_layer, constant_init, normal_init) +from mmcv.runner import BaseModule from torch.nn.modules.batchnorm import _BatchNorm from mmcls.models.utils import channel_shuffle, make_divisible @@ -10,7 +12,7 @@ from ..builder import BACKBONES from .base_backbone import BaseBackbone -class ShuffleUnit(nn.Module): +class ShuffleUnit(BaseModule): """ShuffleUnit block. ShuffleNet unit with pointwise group convolution (GConv) and channel @@ -22,7 +24,7 @@ class ShuffleUnit(nn.Module): groups (int): The number of groups to be used in grouped 1x1 convolutions in each ShuffleUnit. Default: 3 first_block (bool): Whether it is the first ShuffleUnit of a - sequential ShuffleUnits. Default: False, which means not using the + sequential ShuffleUnits. Default: True, which means not using the grouped 1x1 convolution. combine (str): The ways to combine the input and output branches. Default: 'add'. @@ -184,6 +186,7 @@ class ShuffleNetV1(BaseBackbone): with_cp=False, init_cfg=None): super(ShuffleNetV1, self).__init__(init_cfg) + self.init_cfg = init_cfg self.stage_blocks = [4, 8, 4] self.groups = groups @@ -250,6 +253,12 @@ class ShuffleNetV1(BaseBackbone): def init_weights(self): super(ShuffleNetV1, self).init_weights() + + if (isinstance(self.init_cfg, dict) + and self.init_cfg['type'] == 'Pretrained'): + # Suppress default init if use pretrained model. + return + for name, m in self.named_modules(): if isinstance(m, nn.Conv2d): if 'conv1' in name: @@ -257,7 +266,7 @@ class ShuffleNetV1(BaseBackbone): else: normal_init(m, mean=0, std=1.0 / m.weight.shape[1]) elif isinstance(m, (_BatchNorm, nn.GroupNorm)): - constant_init(m.weight, val=1, bias=0.0001) + constant_init(m, val=1, bias=0.0001) if isinstance(m, _BatchNorm): if m.running_mean is not None: nn.init.constant_(m.running_mean, 0) @@ -269,7 +278,7 @@ class ShuffleNetV1(BaseBackbone): out_channels (int): out_channels of the block. num_blocks (int): Number of blocks. first_block (bool): Whether is the first ShuffleUnit of a - sequential ShuffleUnits. Default: False, which means not using + sequential ShuffleUnits. Default: False, which means using the grouped 1x1 convolution. """ layers = [] @@ -301,10 +310,7 @@ class ShuffleNetV1(BaseBackbone): if i in self.out_indices: outs.append(x) - if len(outs) == 1: - return outs[0] - else: - return tuple(outs) + return tuple(outs) def train(self, mode=True): super(ShuffleNetV1, self).train(mode) diff --git a/openmmlab_test/mmclassification-speed-benchmark/mmcls/models/backbones/shufflenet_v2.py b/openmmlab_test/mmclassification-0.24.1/mmcls/models/backbones/shufflenet_v2.py similarity index 92% rename from openmmlab_test/mmclassification-speed-benchmark/mmcls/models/backbones/shufflenet_v2.py rename to openmmlab_test/mmclassification-0.24.1/mmcls/models/backbones/shufflenet_v2.py index 9e2b5429..bfe7ac82 100644 --- a/openmmlab_test/mmclassification-speed-benchmark/mmcls/models/backbones/shufflenet_v2.py +++ b/openmmlab_test/mmclassification-0.24.1/mmcls/models/backbones/shufflenet_v2.py @@ -1,7 +1,9 @@ +# Copyright (c) OpenMMLab. All rights reserved. import torch import torch.nn as nn import torch.utils.checkpoint as cp from mmcv.cnn import ConvModule, constant_init, normal_init +from mmcv.runner import BaseModule from torch.nn.modules.batchnorm import _BatchNorm from mmcls.models.utils import channel_shuffle @@ -9,7 +11,7 @@ from ..builder import BACKBONES from .base_backbone import BaseBackbone -class InvertedResidual(nn.Module): +class InvertedResidual(BaseModule): """InvertedResidual block for ShuffleNetV2 backbone. Args: @@ -36,8 +38,9 @@ class InvertedResidual(nn.Module): conv_cfg=None, norm_cfg=dict(type='BN'), act_cfg=dict(type='ReLU'), - with_cp=False): - super(InvertedResidual, self).__init__() + with_cp=False, + init_cfg=None): + super(InvertedResidual, self).__init__(init_cfg) self.stride = stride self.with_cp = with_cp @@ -112,7 +115,14 @@ class InvertedResidual(nn.Module): if self.stride > 1: out = torch.cat((self.branch1(x), self.branch2(x)), dim=1) else: - x1, x2 = x.chunk(2, dim=1) + # Channel Split operation. using these lines of code to replace + # ``chunk(x, 2, dim=1)`` can make it easier to deploy a + # shufflenetv2 model by using mmdeploy. + channels = x.shape[1] + c = channels // 2 + channels % 2 + x1 = x[:, :c, :, :] + x2 = x[:, c:, :, :] + out = torch.cat((x1, self.branch2(x2)), dim=1) out = channel_shuffle(out, 2) @@ -253,8 +263,14 @@ class ShuffleNetV2(BaseBackbone): for param in m.parameters(): param.requires_grad = False - def init_weighs(self): + def init_weights(self): super(ShuffleNetV2, self).init_weights() + + if (isinstance(self.init_cfg, dict) + and self.init_cfg['type'] == 'Pretrained'): + # Suppress default init if use pretrained model. + return + for name, m in self.named_modules(): if isinstance(m, nn.Conv2d): if 'conv1' in name: @@ -277,10 +293,7 @@ class ShuffleNetV2(BaseBackbone): if i in self.out_indices: outs.append(x) - if len(outs) == 1: - return outs[0] - else: - return tuple(outs) + return tuple(outs) def train(self, mode=True): super(ShuffleNetV2, self).train(mode) diff --git a/openmmlab_test/mmclassification-0.24.1/mmcls/models/backbones/swin_transformer.py b/openmmlab_test/mmclassification-0.24.1/mmcls/models/backbones/swin_transformer.py new file mode 100644 index 00000000..962d41d6 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/mmcls/models/backbones/swin_transformer.py @@ -0,0 +1,548 @@ +# Copyright (c) OpenMMLab. All rights reserved. +from copy import deepcopy +from typing import Sequence + +import numpy as np +import torch +import torch.nn as nn +import torch.utils.checkpoint as cp +from mmcv.cnn import build_norm_layer +from mmcv.cnn.bricks.transformer import FFN, PatchEmbed, PatchMerging +from mmcv.cnn.utils.weight_init import trunc_normal_ +from mmcv.runner.base_module import BaseModule, ModuleList +from mmcv.utils.parrots_wrapper import _BatchNorm + +from ..builder import BACKBONES +from ..utils import (ShiftWindowMSA, resize_pos_embed, + resize_relative_position_bias_table, to_2tuple) +from .base_backbone import BaseBackbone + + +class SwinBlock(BaseModule): + """Swin Transformer block. + + Args: + embed_dims (int): Number of input channels. + num_heads (int): Number of attention heads. + window_size (int): The height and width of the window. Defaults to 7. + shift (bool): Shift the attention window or not. Defaults to False. + ffn_ratio (float): The expansion ratio of feedforward network hidden + layer channels. Defaults to 4. + drop_path (float): The drop path rate after attention and ffn. + Defaults to 0. + pad_small_map (bool): If True, pad the small feature map to the window + size, which is common used in detection and segmentation. If False, + avoid shifting window and shrink the window size to the size of + feature map, which is common used in classification. + Defaults to False. + attn_cfgs (dict): The extra config of Shift Window-MSA. + Defaults to empty dict. + ffn_cfgs (dict): The extra config of FFN. Defaults to empty dict. + norm_cfg (dict): The config of norm layers. + Defaults to ``dict(type='LN')``. + with_cp (bool): Use checkpoint or not. Using checkpoint will save some + memory while slowing down the training speed. Defaults to False. + init_cfg (dict, optional): The extra config for initialization. + Defaults to None. + """ + + def __init__(self, + embed_dims, + num_heads, + window_size=7, + shift=False, + ffn_ratio=4., + drop_path=0., + pad_small_map=False, + attn_cfgs=dict(), + ffn_cfgs=dict(), + norm_cfg=dict(type='LN'), + with_cp=False, + init_cfg=None): + + super(SwinBlock, self).__init__(init_cfg) + self.with_cp = with_cp + + _attn_cfgs = { + 'embed_dims': embed_dims, + 'num_heads': num_heads, + 'shift_size': window_size // 2 if shift else 0, + 'window_size': window_size, + 'dropout_layer': dict(type='DropPath', drop_prob=drop_path), + 'pad_small_map': pad_small_map, + **attn_cfgs + } + self.norm1 = build_norm_layer(norm_cfg, embed_dims)[1] + self.attn = ShiftWindowMSA(**_attn_cfgs) + + _ffn_cfgs = { + 'embed_dims': embed_dims, + 'feedforward_channels': int(embed_dims * ffn_ratio), + 'num_fcs': 2, + 'ffn_drop': 0, + 'dropout_layer': dict(type='DropPath', drop_prob=drop_path), + 'act_cfg': dict(type='GELU'), + **ffn_cfgs + } + self.norm2 = build_norm_layer(norm_cfg, embed_dims)[1] + self.ffn = FFN(**_ffn_cfgs) + + def forward(self, x, hw_shape): + + def _inner_forward(x): + identity = x + x = self.norm1(x) + x = self.attn(x, hw_shape) + x = x + identity + + identity = x + x = self.norm2(x) + x = self.ffn(x, identity=identity) + + return x + + if self.with_cp and x.requires_grad: + x = cp.checkpoint(_inner_forward, x) + else: + x = _inner_forward(x) + + return x + + +class SwinBlockSequence(BaseModule): + """Module with successive Swin Transformer blocks and downsample layer. + + Args: + embed_dims (int): Number of input channels. + depth (int): Number of successive swin transformer blocks. + num_heads (int): Number of attention heads. + window_size (int): The height and width of the window. Defaults to 7. + downsample (bool): Downsample the output of blocks by patch merging. + Defaults to False. + downsample_cfg (dict): The extra config of the patch merging layer. + Defaults to empty dict. + drop_paths (Sequence[float] | float): The drop path rate in each block. + Defaults to 0. + block_cfgs (Sequence[dict] | dict): The extra config of each block. + Defaults to empty dicts. + with_cp (bool): Use checkpoint or not. Using checkpoint will save some + memory while slowing down the training speed. Defaults to False. + pad_small_map (bool): If True, pad the small feature map to the window + size, which is common used in detection and segmentation. If False, + avoid shifting window and shrink the window size to the size of + feature map, which is common used in classification. + Defaults to False. + init_cfg (dict, optional): The extra config for initialization. + Defaults to None. + """ + + def __init__(self, + embed_dims, + depth, + num_heads, + window_size=7, + downsample=False, + downsample_cfg=dict(), + drop_paths=0., + block_cfgs=dict(), + with_cp=False, + pad_small_map=False, + init_cfg=None): + super().__init__(init_cfg) + + if not isinstance(drop_paths, Sequence): + drop_paths = [drop_paths] * depth + + if not isinstance(block_cfgs, Sequence): + block_cfgs = [deepcopy(block_cfgs) for _ in range(depth)] + + self.embed_dims = embed_dims + self.blocks = ModuleList() + for i in range(depth): + _block_cfg = { + 'embed_dims': embed_dims, + 'num_heads': num_heads, + 'window_size': window_size, + 'shift': False if i % 2 == 0 else True, + 'drop_path': drop_paths[i], + 'with_cp': with_cp, + 'pad_small_map': pad_small_map, + **block_cfgs[i] + } + block = SwinBlock(**_block_cfg) + self.blocks.append(block) + + if downsample: + _downsample_cfg = { + 'in_channels': embed_dims, + 'out_channels': 2 * embed_dims, + 'norm_cfg': dict(type='LN'), + **downsample_cfg + } + self.downsample = PatchMerging(**_downsample_cfg) + else: + self.downsample = None + + def forward(self, x, in_shape, do_downsample=True): + for block in self.blocks: + x = block(x, in_shape) + + if self.downsample is not None and do_downsample: + x, out_shape = self.downsample(x, in_shape) + else: + out_shape = in_shape + return x, out_shape + + @property + def out_channels(self): + if self.downsample: + return self.downsample.out_channels + else: + return self.embed_dims + + +@BACKBONES.register_module() +class SwinTransformer(BaseBackbone): + """Swin Transformer. + + A PyTorch implement of : `Swin Transformer: + Hierarchical Vision Transformer using Shifted Windows + `_ + + Inspiration from + https://github.com/microsoft/Swin-Transformer + + Args: + arch (str | dict): Swin Transformer architecture. If use string, choose + from 'tiny', 'small', 'base' and 'large'. If use dict, it should + have below keys: + + - **embed_dims** (int): The dimensions of embedding. + - **depths** (List[int]): The number of blocks in each stage. + - **num_heads** (List[int]): The number of heads in attention + modules of each stage. + + Defaults to 'tiny'. + img_size (int | tuple): The expected input image shape. Because we + support dynamic input shape, just set the argument to the most + common input image shape. Defaults to 224. + patch_size (int | tuple): The patch size in patch embedding. + Defaults to 4. + in_channels (int): The num of input channels. Defaults to 3. + window_size (int): The height and width of the window. Defaults to 7. + drop_rate (float): Dropout rate after embedding. Defaults to 0. + drop_path_rate (float): Stochastic depth rate. Defaults to 0.1. + out_after_downsample (bool): Whether to output the feature map of a + stage after the following downsample layer. Defaults to False. + use_abs_pos_embed (bool): If True, add absolute position embedding to + the patch embedding. Defaults to False. + interpolate_mode (str): Select the interpolate mode for absolute + position embeding vector resize. Defaults to "bicubic". + with_cp (bool): Use checkpoint or not. Using checkpoint will save some + memory while slowing down the training speed. Defaults to False. + frozen_stages (int): Stages to be frozen (stop grad and set eval mode). + -1 means not freezing any parameters. Defaults to -1. + norm_eval (bool): Whether to set norm layers to eval mode, namely, + freeze running stats (mean and var). Note: Effect on Batch Norm + and its variants only. Defaults to False. + pad_small_map (bool): If True, pad the small feature map to the window + size, which is common used in detection and segmentation. If False, + avoid shifting window and shrink the window size to the size of + feature map, which is common used in classification. + Defaults to False. + norm_cfg (dict): Config dict for normalization layer for all output + features. Defaults to ``dict(type='LN')`` + stage_cfgs (Sequence[dict] | dict): Extra config dict for each + stage. Defaults to an empty dict. + patch_cfg (dict): Extra config dict for patch embedding. + Defaults to an empty dict. + init_cfg (dict, optional): The Config for initialization. + Defaults to None. + + Examples: + >>> from mmcls.models import SwinTransformer + >>> import torch + >>> extra_config = dict( + >>> arch='tiny', + >>> stage_cfgs=dict(downsample_cfg={'kernel_size': 3, + >>> 'expansion_ratio': 3})) + >>> self = SwinTransformer(**extra_config) + >>> inputs = torch.rand(1, 3, 224, 224) + >>> output = self.forward(inputs) + >>> print(output.shape) + (1, 2592, 4) + """ + arch_zoo = { + **dict.fromkeys(['t', 'tiny'], + {'embed_dims': 96, + 'depths': [2, 2, 6, 2], + 'num_heads': [3, 6, 12, 24]}), + **dict.fromkeys(['s', 'small'], + {'embed_dims': 96, + 'depths': [2, 2, 18, 2], + 'num_heads': [3, 6, 12, 24]}), + **dict.fromkeys(['b', 'base'], + {'embed_dims': 128, + 'depths': [2, 2, 18, 2], + 'num_heads': [4, 8, 16, 32]}), + **dict.fromkeys(['l', 'large'], + {'embed_dims': 192, + 'depths': [2, 2, 18, 2], + 'num_heads': [6, 12, 24, 48]}), + } # yapf: disable + + _version = 3 + num_extra_tokens = 0 + + def __init__(self, + arch='tiny', + img_size=224, + patch_size=4, + in_channels=3, + window_size=7, + drop_rate=0., + drop_path_rate=0.1, + out_indices=(3, ), + out_after_downsample=False, + use_abs_pos_embed=False, + interpolate_mode='bicubic', + with_cp=False, + frozen_stages=-1, + norm_eval=False, + pad_small_map=False, + norm_cfg=dict(type='LN'), + stage_cfgs=dict(), + patch_cfg=dict(), + init_cfg=None): + super(SwinTransformer, self).__init__(init_cfg=init_cfg) + + if isinstance(arch, str): + arch = arch.lower() + assert arch in set(self.arch_zoo), \ + f'Arch {arch} is not in default archs {set(self.arch_zoo)}' + self.arch_settings = self.arch_zoo[arch] + else: + essential_keys = {'embed_dims', 'depths', 'num_heads'} + assert isinstance(arch, dict) and set(arch) == essential_keys, \ + f'Custom arch needs a dict with keys {essential_keys}' + self.arch_settings = arch + + self.embed_dims = self.arch_settings['embed_dims'] + self.depths = self.arch_settings['depths'] + self.num_heads = self.arch_settings['num_heads'] + self.num_layers = len(self.depths) + self.out_indices = out_indices + self.out_after_downsample = out_after_downsample + self.use_abs_pos_embed = use_abs_pos_embed + self.interpolate_mode = interpolate_mode + self.frozen_stages = frozen_stages + + _patch_cfg = dict( + in_channels=in_channels, + input_size=img_size, + embed_dims=self.embed_dims, + conv_type='Conv2d', + kernel_size=patch_size, + stride=patch_size, + norm_cfg=dict(type='LN'), + ) + _patch_cfg.update(patch_cfg) + self.patch_embed = PatchEmbed(**_patch_cfg) + self.patch_resolution = self.patch_embed.init_out_size + + if self.use_abs_pos_embed: + num_patches = self.patch_resolution[0] * self.patch_resolution[1] + self.absolute_pos_embed = nn.Parameter( + torch.zeros(1, num_patches, self.embed_dims)) + self._register_load_state_dict_pre_hook( + self._prepare_abs_pos_embed) + + self._register_load_state_dict_pre_hook( + self._prepare_relative_position_bias_table) + + self.drop_after_pos = nn.Dropout(p=drop_rate) + self.norm_eval = norm_eval + + # stochastic depth + total_depth = sum(self.depths) + dpr = [ + x.item() for x in torch.linspace(0, drop_path_rate, total_depth) + ] # stochastic depth decay rule + + self.stages = ModuleList() + embed_dims = [self.embed_dims] + for i, (depth, + num_heads) in enumerate(zip(self.depths, self.num_heads)): + if isinstance(stage_cfgs, Sequence): + stage_cfg = stage_cfgs[i] + else: + stage_cfg = deepcopy(stage_cfgs) + downsample = True if i < self.num_layers - 1 else False + _stage_cfg = { + 'embed_dims': embed_dims[-1], + 'depth': depth, + 'num_heads': num_heads, + 'window_size': window_size, + 'downsample': downsample, + 'drop_paths': dpr[:depth], + 'with_cp': with_cp, + 'pad_small_map': pad_small_map, + **stage_cfg + } + + stage = SwinBlockSequence(**_stage_cfg) + self.stages.append(stage) + + dpr = dpr[depth:] + embed_dims.append(stage.out_channels) + + if self.out_after_downsample: + self.num_features = embed_dims[1:] + else: + self.num_features = embed_dims[:-1] + + for i in out_indices: + if norm_cfg is not None: + norm_layer = build_norm_layer(norm_cfg, + self.num_features[i])[1] + else: + norm_layer = nn.Identity() + + self.add_module(f'norm{i}', norm_layer) + + def init_weights(self): + super(SwinTransformer, self).init_weights() + + if (isinstance(self.init_cfg, dict) + and self.init_cfg['type'] == 'Pretrained'): + # Suppress default init if use pretrained model. + return + + if self.use_abs_pos_embed: + trunc_normal_(self.absolute_pos_embed, std=0.02) + + def forward(self, x): + x, hw_shape = self.patch_embed(x) + if self.use_abs_pos_embed: + x = x + resize_pos_embed( + self.absolute_pos_embed, self.patch_resolution, hw_shape, + self.interpolate_mode, self.num_extra_tokens) + x = self.drop_after_pos(x) + + outs = [] + for i, stage in enumerate(self.stages): + x, hw_shape = stage( + x, hw_shape, do_downsample=self.out_after_downsample) + if i in self.out_indices: + norm_layer = getattr(self, f'norm{i}') + out = norm_layer(x) + out = out.view(-1, *hw_shape, + self.num_features[i]).permute(0, 3, 1, + 2).contiguous() + outs.append(out) + if stage.downsample is not None and not self.out_after_downsample: + x, hw_shape = stage.downsample(x, hw_shape) + + return tuple(outs) + + def _load_from_state_dict(self, state_dict, prefix, local_metadata, *args, + **kwargs): + """load checkpoints.""" + # Names of some parameters in has been changed. + version = local_metadata.get('version', None) + if (version is None + or version < 2) and self.__class__ is SwinTransformer: + final_stage_num = len(self.stages) - 1 + state_dict_keys = list(state_dict.keys()) + for k in state_dict_keys: + if k.startswith('norm.') or k.startswith('backbone.norm.'): + convert_key = k.replace('norm.', f'norm{final_stage_num}.') + state_dict[convert_key] = state_dict[k] + del state_dict[k] + if (version is None + or version < 3) and self.__class__ is SwinTransformer: + state_dict_keys = list(state_dict.keys()) + for k in state_dict_keys: + if 'attn_mask' in k: + del state_dict[k] + + super()._load_from_state_dict(state_dict, prefix, local_metadata, + *args, **kwargs) + + def _freeze_stages(self): + if self.frozen_stages >= 0: + self.patch_embed.eval() + for param in self.patch_embed.parameters(): + param.requires_grad = False + + for i in range(0, self.frozen_stages + 1): + m = self.stages[i] + m.eval() + for param in m.parameters(): + param.requires_grad = False + for i in self.out_indices: + if i <= self.frozen_stages: + for param in getattr(self, f'norm{i}').parameters(): + param.requires_grad = False + + def train(self, mode=True): + super(SwinTransformer, self).train(mode) + self._freeze_stages() + if mode and self.norm_eval: + for m in self.modules(): + # trick: eval have effect on BatchNorm only + if isinstance(m, _BatchNorm): + m.eval() + + def _prepare_abs_pos_embed(self, state_dict, prefix, *args, **kwargs): + name = prefix + 'absolute_pos_embed' + if name not in state_dict.keys(): + return + + ckpt_pos_embed_shape = state_dict[name].shape + if self.absolute_pos_embed.shape != ckpt_pos_embed_shape: + from mmcls.utils import get_root_logger + logger = get_root_logger() + logger.info( + 'Resize the absolute_pos_embed shape from ' + f'{ckpt_pos_embed_shape} to {self.absolute_pos_embed.shape}.') + + ckpt_pos_embed_shape = to_2tuple( + int(np.sqrt(ckpt_pos_embed_shape[1] - self.num_extra_tokens))) + pos_embed_shape = self.patch_embed.init_out_size + + state_dict[name] = resize_pos_embed(state_dict[name], + ckpt_pos_embed_shape, + pos_embed_shape, + self.interpolate_mode, + self.num_extra_tokens) + + def _prepare_relative_position_bias_table(self, state_dict, prefix, *args, + **kwargs): + state_dict_model = self.state_dict() + all_keys = list(state_dict_model.keys()) + for key in all_keys: + if 'relative_position_bias_table' in key: + ckpt_key = prefix + key + if ckpt_key not in state_dict: + continue + relative_position_bias_table_pretrained = state_dict[ckpt_key] + relative_position_bias_table_current = state_dict_model[key] + L1, nH1 = relative_position_bias_table_pretrained.size() + L2, nH2 = relative_position_bias_table_current.size() + if L1 != L2: + src_size = int(L1**0.5) + dst_size = int(L2**0.5) + new_rel_pos_bias = resize_relative_position_bias_table( + src_size, dst_size, + relative_position_bias_table_pretrained, nH1) + from mmcls.utils import get_root_logger + logger = get_root_logger() + logger.info('Resize the relative_position_bias_table from ' + f'{state_dict[ckpt_key].shape} to ' + f'{new_rel_pos_bias.shape}') + state_dict[ckpt_key] = new_rel_pos_bias + + # The index buffer need to be re-generated. + index_buffer = ckpt_key.replace('bias_table', 'index') + del state_dict[index_buffer] diff --git a/openmmlab_test/mmclassification-0.24.1/mmcls/models/backbones/swin_transformer_v2.py b/openmmlab_test/mmclassification-0.24.1/mmcls/models/backbones/swin_transformer_v2.py new file mode 100644 index 00000000..c26b4e6c --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/mmcls/models/backbones/swin_transformer_v2.py @@ -0,0 +1,560 @@ +# Copyright (c) OpenMMLab. All rights reserved. +from copy import deepcopy +from typing import Sequence + +import numpy as np +import torch +import torch.nn as nn +import torch.utils.checkpoint as cp +from mmcv.cnn import build_norm_layer +from mmcv.cnn.bricks.transformer import FFN, PatchEmbed +from mmcv.cnn.utils.weight_init import trunc_normal_ +from mmcv.runner.base_module import BaseModule, ModuleList +from mmcv.utils.parrots_wrapper import _BatchNorm + +from ..builder import BACKBONES +from ..utils import (PatchMerging, ShiftWindowMSA, WindowMSAV2, + resize_pos_embed, to_2tuple) +from .base_backbone import BaseBackbone + + +class SwinBlockV2(BaseModule): + """Swin Transformer V2 block. Use post normalization. + + Args: + embed_dims (int): Number of input channels. + num_heads (int): Number of attention heads. + window_size (int): The height and width of the window. Defaults to 7. + shift (bool): Shift the attention window or not. Defaults to False. + extra_norm (bool): Whether add extra norm at the end of main branch. + ffn_ratio (float): The expansion ratio of feedforward network hidden + layer channels. Defaults to 4. + drop_path (float): The drop path rate after attention and ffn. + Defaults to 0. + pad_small_map (bool): If True, pad the small feature map to the window + size, which is common used in detection and segmentation. If False, + avoid shifting window and shrink the window size to the size of + feature map, which is common used in classification. + Defaults to False. + attn_cfgs (dict): The extra config of Shift Window-MSA. + Defaults to empty dict. + ffn_cfgs (dict): The extra config of FFN. Defaults to empty dict. + norm_cfg (dict): The config of norm layers. + Defaults to ``dict(type='LN')``. + with_cp (bool): Use checkpoint or not. Using checkpoint will save some + memory while slowing down the training speed. Defaults to False. + pretrained_window_size (int): Window size in pretrained. + init_cfg (dict, optional): The extra config for initialization. + Defaults to None. + """ + + def __init__(self, + embed_dims, + num_heads, + window_size=8, + shift=False, + extra_norm=False, + ffn_ratio=4., + drop_path=0., + pad_small_map=False, + attn_cfgs=dict(), + ffn_cfgs=dict(), + norm_cfg=dict(type='LN'), + with_cp=False, + pretrained_window_size=0, + init_cfg=None): + + super(SwinBlockV2, self).__init__(init_cfg) + self.with_cp = with_cp + self.extra_norm = extra_norm + + _attn_cfgs = { + 'embed_dims': embed_dims, + 'num_heads': num_heads, + 'shift_size': window_size // 2 if shift else 0, + 'window_size': window_size, + 'dropout_layer': dict(type='DropPath', drop_prob=drop_path), + 'pad_small_map': pad_small_map, + **attn_cfgs + } + # use V2 attention implementation + _attn_cfgs.update( + window_msa=WindowMSAV2, + msa_cfg=dict( + pretrained_window_size=to_2tuple(pretrained_window_size))) + self.attn = ShiftWindowMSA(**_attn_cfgs) + self.norm1 = build_norm_layer(norm_cfg, embed_dims)[1] + + _ffn_cfgs = { + 'embed_dims': embed_dims, + 'feedforward_channels': int(embed_dims * ffn_ratio), + 'num_fcs': 2, + 'ffn_drop': 0, + 'dropout_layer': dict(type='DropPath', drop_prob=drop_path), + 'act_cfg': dict(type='GELU'), + 'add_identity': False, + **ffn_cfgs + } + self.ffn = FFN(**_ffn_cfgs) + self.norm2 = build_norm_layer(norm_cfg, embed_dims)[1] + + # add extra norm for every n blocks in huge and giant model + if self.extra_norm: + self.norm3 = build_norm_layer(norm_cfg, embed_dims)[1] + + def forward(self, x, hw_shape): + + def _inner_forward(x): + # Use post normalization + identity = x + x = self.attn(x, hw_shape) + x = self.norm1(x) + x = x + identity + + identity = x + x = self.ffn(x) + x = self.norm2(x) + x = x + identity + + if self.extra_norm: + x = self.norm3(x) + + return x + + if self.with_cp and x.requires_grad: + x = cp.checkpoint(_inner_forward, x) + else: + x = _inner_forward(x) + + return x + + +class SwinBlockV2Sequence(BaseModule): + """Module with successive Swin Transformer blocks and downsample layer. + + Args: + embed_dims (int): Number of input channels. + depth (int): Number of successive swin transformer blocks. + num_heads (int): Number of attention heads. + window_size (int): The height and width of the window. Defaults to 7. + downsample (bool): Downsample the output of blocks by patch merging. + Defaults to False. + downsample_cfg (dict): The extra config of the patch merging layer. + Defaults to empty dict. + drop_paths (Sequence[float] | float): The drop path rate in each block. + Defaults to 0. + block_cfgs (Sequence[dict] | dict): The extra config of each block. + Defaults to empty dicts. + with_cp (bool): Use checkpoint or not. Using checkpoint will save some + memory while slowing down the training speed. Defaults to False. + pad_small_map (bool): If True, pad the small feature map to the window + size, which is common used in detection and segmentation. If False, + avoid shifting window and shrink the window size to the size of + feature map, which is common used in classification. + Defaults to False. + extra_norm_every_n_blocks (int): Add extra norm at the end of main + branch every n blocks. Defaults to 0, which means no needs for + extra norm layer. + pretrained_window_size (int): Window size in pretrained. + init_cfg (dict, optional): The extra config for initialization. + Defaults to None. + """ + + def __init__(self, + embed_dims, + depth, + num_heads, + window_size=8, + downsample=False, + downsample_cfg=dict(), + drop_paths=0., + block_cfgs=dict(), + with_cp=False, + pad_small_map=False, + extra_norm_every_n_blocks=0, + pretrained_window_size=0, + init_cfg=None): + super().__init__(init_cfg) + + if not isinstance(drop_paths, Sequence): + drop_paths = [drop_paths] * depth + + if not isinstance(block_cfgs, Sequence): + block_cfgs = [deepcopy(block_cfgs) for _ in range(depth)] + + if downsample: + self.out_channels = 2 * embed_dims + _downsample_cfg = { + 'in_channels': embed_dims, + 'out_channels': self.out_channels, + 'norm_cfg': dict(type='LN'), + **downsample_cfg + } + self.downsample = PatchMerging(**_downsample_cfg) + else: + self.out_channels = embed_dims + self.downsample = None + + self.blocks = ModuleList() + for i in range(depth): + extra_norm = True if extra_norm_every_n_blocks and \ + (i + 1) % extra_norm_every_n_blocks == 0 else False + _block_cfg = { + 'embed_dims': self.out_channels, + 'num_heads': num_heads, + 'window_size': window_size, + 'shift': False if i % 2 == 0 else True, + 'extra_norm': extra_norm, + 'drop_path': drop_paths[i], + 'with_cp': with_cp, + 'pad_small_map': pad_small_map, + 'pretrained_window_size': pretrained_window_size, + **block_cfgs[i] + } + block = SwinBlockV2(**_block_cfg) + self.blocks.append(block) + + def forward(self, x, in_shape): + if self.downsample: + x, out_shape = self.downsample(x, in_shape) + else: + out_shape = in_shape + + for block in self.blocks: + x = block(x, out_shape) + + return x, out_shape + + +@BACKBONES.register_module() +class SwinTransformerV2(BaseBackbone): + """Swin Transformer V2. + + A PyTorch implement of : `Swin Transformer V2: + Scaling Up Capacity and Resolution + `_ + + Inspiration from + https://github.com/microsoft/Swin-Transformer + + Args: + arch (str | dict): Swin Transformer architecture. If use string, choose + from 'tiny', 'small', 'base' and 'large'. If use dict, it should + have below keys: + + - **embed_dims** (int): The dimensions of embedding. + - **depths** (List[int]): The number of blocks in each stage. + - **num_heads** (List[int]): The number of heads in attention + modules of each stage. + - **extra_norm_every_n_blocks** (int): Add extra norm at the end + of main branch every n blocks. + + Defaults to 'tiny'. + img_size (int | tuple): The expected input image shape. Because we + support dynamic input shape, just set the argument to the most + common input image shape. Defaults to 224. + patch_size (int | tuple): The patch size in patch embedding. + Defaults to 4. + in_channels (int): The num of input channels. Defaults to 3. + window_size (int | Sequence): The height and width of the window. + Defaults to 7. + drop_rate (float): Dropout rate after embedding. Defaults to 0. + drop_path_rate (float): Stochastic depth rate. Defaults to 0.1. + use_abs_pos_embed (bool): If True, add absolute position embedding to + the patch embedding. Defaults to False. + interpolate_mode (str): Select the interpolate mode for absolute + position embeding vector resize. Defaults to "bicubic". + with_cp (bool): Use checkpoint or not. Using checkpoint will save some + memory while slowing down the training speed. Defaults to False. + frozen_stages (int): Stages to be frozen (stop grad and set eval mode). + -1 means not freezing any parameters. Defaults to -1. + norm_eval (bool): Whether to set norm layers to eval mode, namely, + freeze running stats (mean and var). Note: Effect on Batch Norm + and its variants only. Defaults to False. + pad_small_map (bool): If True, pad the small feature map to the window + size, which is common used in detection and segmentation. If False, + avoid shifting window and shrink the window size to the size of + feature map, which is common used in classification. + Defaults to False. + norm_cfg (dict): Config dict for normalization layer for all output + features. Defaults to ``dict(type='LN')`` + stage_cfgs (Sequence[dict] | dict): Extra config dict for each + stage. Defaults to an empty dict. + patch_cfg (dict): Extra config dict for patch embedding. + Defaults to an empty dict. + pretrained_window_sizes (tuple(int)): Pretrained window sizes of + each layer. + init_cfg (dict, optional): The Config for initialization. + Defaults to None. + + Examples: + >>> from mmcls.models import SwinTransformerV2 + >>> import torch + >>> extra_config = dict( + >>> arch='tiny', + >>> stage_cfgs=dict(downsample_cfg={'kernel_size': 3, + >>> 'padding': 'same'})) + >>> self = SwinTransformerV2(**extra_config) + >>> inputs = torch.rand(1, 3, 224, 224) + >>> output = self.forward(inputs) + >>> print(output.shape) + (1, 2592, 4) + """ + arch_zoo = { + **dict.fromkeys(['t', 'tiny'], + {'embed_dims': 96, + 'depths': [2, 2, 6, 2], + 'num_heads': [3, 6, 12, 24], + 'extra_norm_every_n_blocks': 0}), + **dict.fromkeys(['s', 'small'], + {'embed_dims': 96, + 'depths': [2, 2, 18, 2], + 'num_heads': [3, 6, 12, 24], + 'extra_norm_every_n_blocks': 0}), + **dict.fromkeys(['b', 'base'], + {'embed_dims': 128, + 'depths': [2, 2, 18, 2], + 'num_heads': [4, 8, 16, 32], + 'extra_norm_every_n_blocks': 0}), + **dict.fromkeys(['l', 'large'], + {'embed_dims': 192, + 'depths': [2, 2, 18, 2], + 'num_heads': [6, 12, 24, 48], + 'extra_norm_every_n_blocks': 0}), + # head count not certain for huge, and is employed for another + # parallel study about self-supervised learning. + **dict.fromkeys(['h', 'huge'], + {'embed_dims': 352, + 'depths': [2, 2, 18, 2], + 'num_heads': [8, 16, 32, 64], + 'extra_norm_every_n_blocks': 6}), + **dict.fromkeys(['g', 'giant'], + {'embed_dims': 512, + 'depths': [2, 2, 42, 4], + 'num_heads': [16, 32, 64, 128], + 'extra_norm_every_n_blocks': 6}), + } # yapf: disable + + _version = 1 + num_extra_tokens = 0 + + def __init__(self, + arch='tiny', + img_size=256, + patch_size=4, + in_channels=3, + window_size=8, + drop_rate=0., + drop_path_rate=0.1, + out_indices=(3, ), + use_abs_pos_embed=False, + interpolate_mode='bicubic', + with_cp=False, + frozen_stages=-1, + norm_eval=False, + pad_small_map=False, + norm_cfg=dict(type='LN'), + stage_cfgs=dict(downsample_cfg=dict(is_post_norm=True)), + patch_cfg=dict(), + pretrained_window_sizes=[0, 0, 0, 0], + init_cfg=None): + super(SwinTransformerV2, self).__init__(init_cfg=init_cfg) + + if isinstance(arch, str): + arch = arch.lower() + assert arch in set(self.arch_zoo), \ + f'Arch {arch} is not in default archs {set(self.arch_zoo)}' + self.arch_settings = self.arch_zoo[arch] + else: + essential_keys = { + 'embed_dims', 'depths', 'num_heads', + 'extra_norm_every_n_blocks' + } + assert isinstance(arch, dict) and set(arch) == essential_keys, \ + f'Custom arch needs a dict with keys {essential_keys}' + self.arch_settings = arch + + self.embed_dims = self.arch_settings['embed_dims'] + self.depths = self.arch_settings['depths'] + self.num_heads = self.arch_settings['num_heads'] + self.extra_norm_every_n_blocks = self.arch_settings[ + 'extra_norm_every_n_blocks'] + self.num_layers = len(self.depths) + self.out_indices = out_indices + self.use_abs_pos_embed = use_abs_pos_embed + self.interpolate_mode = interpolate_mode + self.frozen_stages = frozen_stages + + if isinstance(window_size, int): + self.window_sizes = [window_size for _ in range(self.num_layers)] + elif isinstance(window_size, Sequence): + assert len(window_size) == self.num_layers, \ + f'Length of window_sizes {len(window_size)} is not equal to '\ + f'length of stages {self.num_layers}.' + self.window_sizes = window_size + else: + raise TypeError('window_size should be a Sequence or int.') + + _patch_cfg = dict( + in_channels=in_channels, + input_size=img_size, + embed_dims=self.embed_dims, + conv_type='Conv2d', + kernel_size=patch_size, + stride=patch_size, + norm_cfg=dict(type='LN'), + ) + _patch_cfg.update(patch_cfg) + self.patch_embed = PatchEmbed(**_patch_cfg) + self.patch_resolution = self.patch_embed.init_out_size + + if self.use_abs_pos_embed: + num_patches = self.patch_resolution[0] * self.patch_resolution[1] + self.absolute_pos_embed = nn.Parameter( + torch.zeros(1, num_patches, self.embed_dims)) + self._register_load_state_dict_pre_hook( + self._prepare_abs_pos_embed) + + self._register_load_state_dict_pre_hook(self._delete_reinit_params) + + self.drop_after_pos = nn.Dropout(p=drop_rate) + self.norm_eval = norm_eval + + # stochastic depth + total_depth = sum(self.depths) + dpr = [ + x.item() for x in torch.linspace(0, drop_path_rate, total_depth) + ] # stochastic depth decay rule + + self.stages = ModuleList() + embed_dims = [self.embed_dims] + for i, (depth, + num_heads) in enumerate(zip(self.depths, self.num_heads)): + if isinstance(stage_cfgs, Sequence): + stage_cfg = stage_cfgs[i] + else: + stage_cfg = deepcopy(stage_cfgs) + downsample = True if i > 0 else False + _stage_cfg = { + 'embed_dims': embed_dims[-1], + 'depth': depth, + 'num_heads': num_heads, + 'window_size': self.window_sizes[i], + 'downsample': downsample, + 'drop_paths': dpr[:depth], + 'with_cp': with_cp, + 'pad_small_map': pad_small_map, + 'extra_norm_every_n_blocks': self.extra_norm_every_n_blocks, + 'pretrained_window_size': pretrained_window_sizes[i], + **stage_cfg + } + + stage = SwinBlockV2Sequence(**_stage_cfg) + self.stages.append(stage) + + dpr = dpr[depth:] + embed_dims.append(stage.out_channels) + + for i in out_indices: + if norm_cfg is not None: + norm_layer = build_norm_layer(norm_cfg, embed_dims[i + 1])[1] + else: + norm_layer = nn.Identity() + + self.add_module(f'norm{i}', norm_layer) + + def init_weights(self): + super(SwinTransformerV2, self).init_weights() + + if (isinstance(self.init_cfg, dict) + and self.init_cfg['type'] == 'Pretrained'): + # Suppress default init if use pretrained model. + return + + if self.use_abs_pos_embed: + trunc_normal_(self.absolute_pos_embed, std=0.02) + + def forward(self, x): + x, hw_shape = self.patch_embed(x) + + if self.use_abs_pos_embed: + x = x + resize_pos_embed( + self.absolute_pos_embed, self.patch_resolution, hw_shape, + self.interpolate_mode, self.num_extra_tokens) + x = self.drop_after_pos(x) + + outs = [] + for i, stage in enumerate(self.stages): + x, hw_shape = stage(x, hw_shape) + if i in self.out_indices: + norm_layer = getattr(self, f'norm{i}') + out = norm_layer(x) + out = out.view(-1, *hw_shape, + stage.out_channels).permute(0, 3, 1, + 2).contiguous() + outs.append(out) + + return tuple(outs) + + def _freeze_stages(self): + if self.frozen_stages >= 0: + self.patch_embed.eval() + for param in self.patch_embed.parameters(): + param.requires_grad = False + + for i in range(0, self.frozen_stages + 1): + m = self.stages[i] + m.eval() + for param in m.parameters(): + param.requires_grad = False + for i in self.out_indices: + if i <= self.frozen_stages: + for param in getattr(self, f'norm{i}').parameters(): + param.requires_grad = False + + def train(self, mode=True): + super(SwinTransformerV2, self).train(mode) + self._freeze_stages() + if mode and self.norm_eval: + for m in self.modules(): + # trick: eval have effect on BatchNorm only + if isinstance(m, _BatchNorm): + m.eval() + + def _prepare_abs_pos_embed(self, state_dict, prefix, *args, **kwargs): + name = prefix + 'absolute_pos_embed' + if name not in state_dict.keys(): + return + + ckpt_pos_embed_shape = state_dict[name].shape + if self.absolute_pos_embed.shape != ckpt_pos_embed_shape: + from mmcls.utils import get_root_logger + logger = get_root_logger() + logger.info( + 'Resize the absolute_pos_embed shape from ' + f'{ckpt_pos_embed_shape} to {self.absolute_pos_embed.shape}.') + + ckpt_pos_embed_shape = to_2tuple( + int(np.sqrt(ckpt_pos_embed_shape[1] - self.num_extra_tokens))) + pos_embed_shape = self.patch_embed.init_out_size + + state_dict[name] = resize_pos_embed(state_dict[name], + ckpt_pos_embed_shape, + pos_embed_shape, + self.interpolate_mode, + self.num_extra_tokens) + + def _delete_reinit_params(self, state_dict, prefix, *args, **kwargs): + # delete relative_position_index since we always re-init it + relative_position_index_keys = [ + k for k in state_dict.keys() if 'relative_position_index' in k + ] + for k in relative_position_index_keys: + del state_dict[k] + + # delete relative_coords_table since we always re-init it + relative_position_index_keys = [ + k for k in state_dict.keys() if 'relative_coords_table' in k + ] + for k in relative_position_index_keys: + del state_dict[k] diff --git a/openmmlab_test/mmclassification-0.24.1/mmcls/models/backbones/t2t_vit.py b/openmmlab_test/mmclassification-0.24.1/mmcls/models/backbones/t2t_vit.py new file mode 100644 index 00000000..2edb991e --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/mmcls/models/backbones/t2t_vit.py @@ -0,0 +1,440 @@ +# Copyright (c) OpenMMLab. All rights reserved. +from copy import deepcopy +from typing import Sequence + +import numpy as np +import torch +import torch.nn as nn +from mmcv.cnn import build_norm_layer +from mmcv.cnn.bricks.transformer import FFN +from mmcv.cnn.utils.weight_init import trunc_normal_ +from mmcv.runner.base_module import BaseModule, ModuleList + +from ..builder import BACKBONES +from ..utils import MultiheadAttention, resize_pos_embed, to_2tuple +from .base_backbone import BaseBackbone + + +class T2TTransformerLayer(BaseModule): + """Transformer Layer for T2T_ViT. + + Comparing with :obj:`TransformerEncoderLayer` in ViT, it supports + different ``input_dims`` and ``embed_dims``. + + Args: + embed_dims (int): The feature dimension. + num_heads (int): Parallel attention heads. + feedforward_channels (int): The hidden dimension for FFNs + input_dims (int, optional): The input token dimension. + Defaults to None. + drop_rate (float): Probability of an element to be zeroed + after the feed forward layer. Defaults to 0. + attn_drop_rate (float): The drop out rate for attention output weights. + Defaults to 0. + drop_path_rate (float): Stochastic depth rate. Defaults to 0. + num_fcs (int): The number of fully-connected layers for FFNs. + Defaults to 2. + qkv_bias (bool): enable bias for qkv if True. Defaults to True. + qk_scale (float, optional): Override default qk scale of + ``(input_dims // num_heads) ** -0.5`` if set. Defaults to None. + act_cfg (dict): The activation config for FFNs. + Defaluts to ``dict(type='GELU')``. + norm_cfg (dict): Config dict for normalization layer. + Defaults to ``dict(type='LN')``. + init_cfg (dict, optional): Initialization config dict. + Defaults to None. + + Notes: + In general, ``qk_scale`` should be ``head_dims ** -0.5``, i.e. + ``(embed_dims // num_heads) ** -0.5``. However, in the official + code, it uses ``(input_dims // num_heads) ** -0.5``, so here we + keep the same with the official implementation. + """ + + def __init__(self, + embed_dims, + num_heads, + feedforward_channels, + input_dims=None, + drop_rate=0., + attn_drop_rate=0., + drop_path_rate=0., + num_fcs=2, + qkv_bias=False, + qk_scale=None, + act_cfg=dict(type='GELU'), + norm_cfg=dict(type='LN'), + init_cfg=None): + super(T2TTransformerLayer, self).__init__(init_cfg=init_cfg) + + self.v_shortcut = True if input_dims is not None else False + input_dims = input_dims or embed_dims + + self.norm1_name, norm1 = build_norm_layer( + norm_cfg, input_dims, postfix=1) + self.add_module(self.norm1_name, norm1) + + self.attn = MultiheadAttention( + input_dims=input_dims, + embed_dims=embed_dims, + num_heads=num_heads, + attn_drop=attn_drop_rate, + proj_drop=drop_rate, + dropout_layer=dict(type='DropPath', drop_prob=drop_path_rate), + qkv_bias=qkv_bias, + qk_scale=qk_scale or (input_dims // num_heads)**-0.5, + v_shortcut=self.v_shortcut) + + self.norm2_name, norm2 = build_norm_layer( + norm_cfg, embed_dims, postfix=2) + self.add_module(self.norm2_name, norm2) + + self.ffn = FFN( + embed_dims=embed_dims, + feedforward_channels=feedforward_channels, + num_fcs=num_fcs, + ffn_drop=drop_rate, + dropout_layer=dict(type='DropPath', drop_prob=drop_path_rate), + act_cfg=act_cfg) + + @property + def norm1(self): + return getattr(self, self.norm1_name) + + @property + def norm2(self): + return getattr(self, self.norm2_name) + + def forward(self, x): + if self.v_shortcut: + x = self.attn(self.norm1(x)) + else: + x = x + self.attn(self.norm1(x)) + x = self.ffn(self.norm2(x), identity=x) + return x + + +class T2TModule(BaseModule): + """Tokens-to-Token module. + + "Tokens-to-Token module" (T2T Module) can model the local structure + information of images and reduce the length of tokens progressively. + + Args: + img_size (int): Input image size + in_channels (int): Number of input channels + embed_dims (int): Embedding dimension + token_dims (int): Tokens dimension in T2TModuleAttention. + use_performer (bool): If True, use Performer version self-attention to + adopt regular self-attention. Defaults to False. + init_cfg (dict, optional): The extra config for initialization. + Default: None. + + Notes: + Usually, ``token_dim`` is set as a small value (32 or 64) to reduce + MACs + """ + + def __init__( + self, + img_size=224, + in_channels=3, + embed_dims=384, + token_dims=64, + use_performer=False, + init_cfg=None, + ): + super(T2TModule, self).__init__(init_cfg) + + self.embed_dims = embed_dims + + self.soft_split0 = nn.Unfold( + kernel_size=(7, 7), stride=(4, 4), padding=(2, 2)) + self.soft_split1 = nn.Unfold( + kernel_size=(3, 3), stride=(2, 2), padding=(1, 1)) + self.soft_split2 = nn.Unfold( + kernel_size=(3, 3), stride=(2, 2), padding=(1, 1)) + + if not use_performer: + self.attention1 = T2TTransformerLayer( + input_dims=in_channels * 7 * 7, + embed_dims=token_dims, + num_heads=1, + feedforward_channels=token_dims) + + self.attention2 = T2TTransformerLayer( + input_dims=token_dims * 3 * 3, + embed_dims=token_dims, + num_heads=1, + feedforward_channels=token_dims) + + self.project = nn.Linear(token_dims * 3 * 3, embed_dims) + else: + raise NotImplementedError("Performer hasn't been implemented.") + + # there are 3 soft split, stride are 4,2,2 separately + out_side = img_size // (4 * 2 * 2) + self.init_out_size = [out_side, out_side] + self.num_patches = out_side**2 + + @staticmethod + def _get_unfold_size(unfold: nn.Unfold, input_size): + h, w = input_size + kernel_size = to_2tuple(unfold.kernel_size) + stride = to_2tuple(unfold.stride) + padding = to_2tuple(unfold.padding) + dilation = to_2tuple(unfold.dilation) + + h_out = (h + 2 * padding[0] - dilation[0] * + (kernel_size[0] - 1) - 1) // stride[0] + 1 + w_out = (w + 2 * padding[1] - dilation[1] * + (kernel_size[1] - 1) - 1) // stride[1] + 1 + return (h_out, w_out) + + def forward(self, x): + # step0: soft split + hw_shape = self._get_unfold_size(self.soft_split0, x.shape[2:]) + x = self.soft_split0(x).transpose(1, 2) + + for step in [1, 2]: + # re-structurization/reconstruction + attn = getattr(self, f'attention{step}') + x = attn(x).transpose(1, 2) + B, C, _ = x.shape + x = x.reshape(B, C, hw_shape[0], hw_shape[1]) + + # soft split + soft_split = getattr(self, f'soft_split{step}') + hw_shape = self._get_unfold_size(soft_split, hw_shape) + x = soft_split(x).transpose(1, 2) + + # final tokens + x = self.project(x) + return x, hw_shape + + +def get_sinusoid_encoding(n_position, embed_dims): + """Generate sinusoid encoding table. + + Sinusoid encoding is a kind of relative position encoding method came from + `Attention Is All You Need`_. + Args: + n_position (int): The length of the input token. + embed_dims (int): The position embedding dimension. + Returns: + :obj:`torch.FloatTensor`: The sinusoid encoding table. + """ + + vec = torch.arange(embed_dims, dtype=torch.float64) + vec = (vec - vec % 2) / embed_dims + vec = torch.pow(10000, -vec).view(1, -1) + + sinusoid_table = torch.arange(n_position).view(-1, 1) * vec + sinusoid_table[:, 0::2].sin_() # dim 2i + sinusoid_table[:, 1::2].cos_() # dim 2i+1 + + sinusoid_table = sinusoid_table.to(torch.float32) + + return sinusoid_table.unsqueeze(0) + + +@BACKBONES.register_module() +class T2T_ViT(BaseBackbone): + """Tokens-to-Token Vision Transformer (T2T-ViT) + + A PyTorch implementation of `Tokens-to-Token ViT: Training Vision + Transformers from Scratch on ImageNet `_ + + Args: + img_size (int | tuple): The expected input image shape. Because we + support dynamic input shape, just set the argument to the most + common input image shape. Defaults to 224. + in_channels (int): Number of input channels. + embed_dims (int): Embedding dimension. + num_layers (int): Num of transformer layers in encoder. + Defaults to 14. + out_indices (Sequence | int): Output from which stages. + Defaults to -1, means the last stage. + drop_rate (float): Dropout rate after position embedding. + Defaults to 0. + drop_path_rate (float): stochastic depth rate. Defaults to 0. + norm_cfg (dict): Config dict for normalization layer. Defaults to + ``dict(type='LN')``. + final_norm (bool): Whether to add a additional layer to normalize + final feature map. Defaults to True. + with_cls_token (bool): Whether concatenating class token into image + tokens as transformer input. Defaults to True. + output_cls_token (bool): Whether output the cls_token. If set True, + ``with_cls_token`` must be True. Defaults to True. + interpolate_mode (str): Select the interpolate mode for position + embeding vector resize. Defaults to "bicubic". + t2t_cfg (dict): Extra config of Tokens-to-Token module. + Defaults to an empty dict. + layer_cfgs (Sequence | dict): Configs of each transformer layer in + encoder. Defaults to an empty dict. + init_cfg (dict, optional): The Config for initialization. + Defaults to None. + """ + num_extra_tokens = 1 # cls_token + + def __init__(self, + img_size=224, + in_channels=3, + embed_dims=384, + num_layers=14, + out_indices=-1, + drop_rate=0., + drop_path_rate=0., + norm_cfg=dict(type='LN'), + final_norm=True, + with_cls_token=True, + output_cls_token=True, + interpolate_mode='bicubic', + t2t_cfg=dict(), + layer_cfgs=dict(), + init_cfg=None): + super(T2T_ViT, self).__init__(init_cfg) + + # Token-to-Token Module + self.tokens_to_token = T2TModule( + img_size=img_size, + in_channels=in_channels, + embed_dims=embed_dims, + **t2t_cfg) + self.patch_resolution = self.tokens_to_token.init_out_size + num_patches = self.patch_resolution[0] * self.patch_resolution[1] + + # Set cls token + if output_cls_token: + assert with_cls_token is True, f'with_cls_token must be True if' \ + f'set output_cls_token to True, but got {with_cls_token}' + self.with_cls_token = with_cls_token + self.output_cls_token = output_cls_token + self.cls_token = nn.Parameter(torch.zeros(1, 1, embed_dims)) + + # Set position embedding + self.interpolate_mode = interpolate_mode + sinusoid_table = get_sinusoid_encoding( + num_patches + self.num_extra_tokens, embed_dims) + self.register_buffer('pos_embed', sinusoid_table) + self._register_load_state_dict_pre_hook(self._prepare_pos_embed) + + self.drop_after_pos = nn.Dropout(p=drop_rate) + + if isinstance(out_indices, int): + out_indices = [out_indices] + assert isinstance(out_indices, Sequence), \ + f'"out_indices" must be a sequence or int, ' \ + f'get {type(out_indices)} instead.' + for i, index in enumerate(out_indices): + if index < 0: + out_indices[i] = num_layers + index + assert 0 <= out_indices[i] <= num_layers, \ + f'Invalid out_indices {index}' + self.out_indices = out_indices + + # stochastic depth decay rule + dpr = [x for x in np.linspace(0, drop_path_rate, num_layers)] + + self.encoder = ModuleList() + for i in range(num_layers): + if isinstance(layer_cfgs, Sequence): + layer_cfg = layer_cfgs[i] + else: + layer_cfg = deepcopy(layer_cfgs) + layer_cfg = { + 'embed_dims': embed_dims, + 'num_heads': 6, + 'feedforward_channels': 3 * embed_dims, + 'drop_path_rate': dpr[i], + 'qkv_bias': False, + 'norm_cfg': norm_cfg, + **layer_cfg + } + + layer = T2TTransformerLayer(**layer_cfg) + self.encoder.append(layer) + + self.final_norm = final_norm + if final_norm: + self.norm = build_norm_layer(norm_cfg, embed_dims)[1] + else: + self.norm = nn.Identity() + + def init_weights(self): + super().init_weights() + + if (isinstance(self.init_cfg, dict) + and self.init_cfg['type'] == 'Pretrained'): + # Suppress custom init if use pretrained model. + return + + trunc_normal_(self.cls_token, std=.02) + + def _prepare_pos_embed(self, state_dict, prefix, *args, **kwargs): + name = prefix + 'pos_embed' + if name not in state_dict.keys(): + return + + ckpt_pos_embed_shape = state_dict[name].shape + if self.pos_embed.shape != ckpt_pos_embed_shape: + from mmcls.utils import get_root_logger + logger = get_root_logger() + logger.info( + f'Resize the pos_embed shape from {ckpt_pos_embed_shape} ' + f'to {self.pos_embed.shape}.') + + ckpt_pos_embed_shape = to_2tuple( + int(np.sqrt(ckpt_pos_embed_shape[1] - self.num_extra_tokens))) + pos_embed_shape = self.tokens_to_token.init_out_size + + state_dict[name] = resize_pos_embed(state_dict[name], + ckpt_pos_embed_shape, + pos_embed_shape, + self.interpolate_mode, + self.num_extra_tokens) + + def forward(self, x): + B = x.shape[0] + x, patch_resolution = self.tokens_to_token(x) + + # stole cls_tokens impl from Phil Wang, thanks + cls_tokens = self.cls_token.expand(B, -1, -1) + x = torch.cat((cls_tokens, x), dim=1) + + x = x + resize_pos_embed( + self.pos_embed, + self.patch_resolution, + patch_resolution, + mode=self.interpolate_mode, + num_extra_tokens=self.num_extra_tokens) + x = self.drop_after_pos(x) + + if not self.with_cls_token: + # Remove class token for transformer encoder input + x = x[:, 1:] + + outs = [] + for i, layer in enumerate(self.encoder): + x = layer(x) + + if i == len(self.encoder) - 1 and self.final_norm: + x = self.norm(x) + + if i in self.out_indices: + B, _, C = x.shape + if self.with_cls_token: + patch_token = x[:, 1:].reshape(B, *patch_resolution, C) + patch_token = patch_token.permute(0, 3, 1, 2) + cls_token = x[:, 0] + else: + patch_token = x.reshape(B, *patch_resolution, C) + patch_token = patch_token.permute(0, 3, 1, 2) + cls_token = None + if self.output_cls_token: + out = [patch_token, cls_token] + else: + out = patch_token + outs.append(out) + + return tuple(outs) diff --git a/openmmlab_test/mmclassification-0.24.1/mmcls/models/backbones/timm_backbone.py b/openmmlab_test/mmclassification-0.24.1/mmcls/models/backbones/timm_backbone.py new file mode 100644 index 00000000..1506619a --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/mmcls/models/backbones/timm_backbone.py @@ -0,0 +1,112 @@ +# Copyright (c) OpenMMLab. All rights reserved. +try: + import timm +except ImportError: + timm = None + +import warnings + +from mmcv.cnn.bricks.registry import NORM_LAYERS + +from ...utils import get_root_logger +from ..builder import BACKBONES +from .base_backbone import BaseBackbone + + +def print_timm_feature_info(feature_info): + """Print feature_info of timm backbone to help development and debug. + + Args: + feature_info (list[dict] | timm.models.features.FeatureInfo | None): + feature_info of timm backbone. + """ + logger = get_root_logger() + if feature_info is None: + logger.warning('This backbone does not have feature_info') + elif isinstance(feature_info, list): + for feat_idx, each_info in enumerate(feature_info): + logger.info(f'backbone feature_info[{feat_idx}]: {each_info}') + else: + try: + logger.info(f'backbone out_indices: {feature_info.out_indices}') + logger.info(f'backbone out_channels: {feature_info.channels()}') + logger.info(f'backbone out_strides: {feature_info.reduction()}') + except AttributeError: + logger.warning('Unexpected format of backbone feature_info') + + +@BACKBONES.register_module() +class TIMMBackbone(BaseBackbone): + """Wrapper to use backbones from timm library. + + More details can be found in + `timm `_. + See especially the document for `feature extraction + `_. + + Args: + model_name (str): Name of timm model to instantiate. + features_only (bool): Whether to extract feature pyramid (multi-scale + feature maps from the deepest layer at each stride). For Vision + Transformer models that do not support this argument, + set this False. Defaults to False. + pretrained (bool): Whether to load pretrained weights. + Defaults to False. + checkpoint_path (str): Path of checkpoint to load at the last of + ``timm.create_model``. Defaults to empty string, which means + not loading. + in_channels (int): Number of input image channels. Defaults to 3. + init_cfg (dict or list[dict], optional): Initialization config dict of + OpenMMLab projects. Defaults to None. + **kwargs: Other timm & model specific arguments. + """ + + def __init__(self, + model_name, + features_only=False, + pretrained=False, + checkpoint_path='', + in_channels=3, + init_cfg=None, + **kwargs): + if timm is None: + raise RuntimeError( + 'Failed to import timm. Please run "pip install timm". ' + '"pip install dataclasses" may also be needed for Python 3.6.') + if not isinstance(pretrained, bool): + raise TypeError('pretrained must be bool, not str for model path') + if features_only and checkpoint_path: + warnings.warn( + 'Using both features_only and checkpoint_path will cause error' + ' in timm. See ' + 'https://github.com/rwightman/pytorch-image-models/issues/488') + + super(TIMMBackbone, self).__init__(init_cfg) + if 'norm_layer' in kwargs: + kwargs['norm_layer'] = NORM_LAYERS.get(kwargs['norm_layer']) + self.timm_model = timm.create_model( + model_name=model_name, + features_only=features_only, + pretrained=pretrained, + in_chans=in_channels, + checkpoint_path=checkpoint_path, + **kwargs) + + # reset classifier + if hasattr(self.timm_model, 'reset_classifier'): + self.timm_model.reset_classifier(0, '') + + # Hack to use pretrained weights from timm + if pretrained or checkpoint_path: + self._is_init = True + + feature_info = getattr(self.timm_model, 'feature_info', None) + print_timm_feature_info(feature_info) + + def forward(self, x): + features = self.timm_model(x) + if isinstance(features, (list, tuple)): + features = tuple(features) + else: + features = (features, ) + return features diff --git a/openmmlab_test/mmclassification-0.24.1/mmcls/models/backbones/tnt.py b/openmmlab_test/mmclassification-0.24.1/mmcls/models/backbones/tnt.py new file mode 100644 index 00000000..b03120b9 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/mmcls/models/backbones/tnt.py @@ -0,0 +1,368 @@ +# Copyright (c) OpenMMLab. All rights reserved. +import math + +import torch +import torch.nn as nn +from mmcv.cnn import build_norm_layer +from mmcv.cnn.bricks.transformer import FFN, MultiheadAttention +from mmcv.cnn.utils.weight_init import trunc_normal_ +from mmcv.runner.base_module import BaseModule, ModuleList + +from ..builder import BACKBONES +from ..utils import to_2tuple +from .base_backbone import BaseBackbone + + +class TransformerBlock(BaseModule): + """Implement a transformer block in TnTLayer. + + Args: + embed_dims (int): The feature dimension + num_heads (int): Parallel attention heads + ffn_ratio (int): A ratio to calculate the hidden_dims in ffn layer. + Default: 4 + drop_rate (float): Probability of an element to be zeroed + after the feed forward layer. Default 0. + attn_drop_rate (float): The drop out rate for attention layer. + Default 0. + drop_path_rate (float): stochastic depth rate. Default 0. + num_fcs (int): The number of fully-connected layers for FFNs. Default 2 + qkv_bias (bool): Enable bias for qkv if True. Default False + act_cfg (dict): The activation config for FFNs. Defaults to GELU. + norm_cfg (dict): Config dict for normalization layer. Default + layer normalization + batch_first (bool): Key, Query and Value are shape of + (batch, n, embed_dim) or (n, batch, embed_dim). + (batch, n, embed_dim) is common case in CV. Default to False + init_cfg (dict, optional): Initialization config dict. Default to None + """ + + def __init__(self, + embed_dims, + num_heads, + ffn_ratio=4, + drop_rate=0., + attn_drop_rate=0., + drop_path_rate=0., + num_fcs=2, + qkv_bias=False, + act_cfg=dict(type='GELU'), + norm_cfg=dict(type='LN'), + batch_first=True, + init_cfg=None): + super(TransformerBlock, self).__init__(init_cfg=init_cfg) + + self.norm_attn = build_norm_layer(norm_cfg, embed_dims)[1] + self.attn = MultiheadAttention( + embed_dims=embed_dims, + num_heads=num_heads, + attn_drop=attn_drop_rate, + proj_drop=drop_rate, + dropout_layer=dict(type='DropPath', drop_prob=drop_path_rate), + batch_first=batch_first) + + self.norm_ffn = build_norm_layer(norm_cfg, embed_dims)[1] + self.ffn = FFN( + embed_dims=embed_dims, + feedforward_channels=embed_dims * ffn_ratio, + num_fcs=num_fcs, + ffn_drop=drop_rate, + dropout_layer=dict(type='DropPath', drop_prob=drop_path_rate), + act_cfg=act_cfg) + + if not qkv_bias: + self.attn.attn.in_proj_bias = None + + def forward(self, x): + x = self.attn(self.norm_attn(x), identity=x) + x = self.ffn(self.norm_ffn(x), identity=x) + return x + + +class TnTLayer(BaseModule): + """Implement one encoder layer in Transformer in Transformer. + + Args: + num_pixel (int): The pixel number in target patch transformed with + a linear projection in inner transformer + embed_dims_inner (int): Feature dimension in inner transformer block + embed_dims_outer (int): Feature dimension in outer transformer block + num_heads_inner (int): Parallel attention heads in inner transformer. + num_heads_outer (int): Parallel attention heads in outer transformer. + inner_block_cfg (dict): Extra config of inner transformer block. + Defaults to empty dict. + outer_block_cfg (dict): Extra config of outer transformer block. + Defaults to empty dict. + norm_cfg (dict): Config dict for normalization layer. Default + layer normalization + init_cfg (dict, optional): Initialization config dict. Default to None + """ + + def __init__(self, + num_pixel, + embed_dims_inner, + embed_dims_outer, + num_heads_inner, + num_heads_outer, + inner_block_cfg=dict(), + outer_block_cfg=dict(), + norm_cfg=dict(type='LN'), + init_cfg=None): + super(TnTLayer, self).__init__(init_cfg=init_cfg) + + self.inner_block = TransformerBlock( + embed_dims=embed_dims_inner, + num_heads=num_heads_inner, + **inner_block_cfg) + + self.norm_proj = build_norm_layer(norm_cfg, embed_dims_inner)[1] + self.projection = nn.Linear( + embed_dims_inner * num_pixel, embed_dims_outer, bias=True) + + self.outer_block = TransformerBlock( + embed_dims=embed_dims_outer, + num_heads=num_heads_outer, + **outer_block_cfg) + + def forward(self, pixel_embed, patch_embed): + pixel_embed = self.inner_block(pixel_embed) + + B, N, C = patch_embed.size() + patch_embed[:, 1:] = patch_embed[:, 1:] + self.projection( + self.norm_proj(pixel_embed).reshape(B, N - 1, -1)) + patch_embed = self.outer_block(patch_embed) + + return pixel_embed, patch_embed + + +class PixelEmbed(BaseModule): + """Image to Pixel Embedding. + + Args: + img_size (int | tuple): The size of input image + patch_size (int): The size of one patch + in_channels (int): The num of input channels + embed_dims_inner (int): The num of channels of the target patch + transformed with a linear projection in inner transformer + stride (int): The stride of the conv2d layer. We use a conv2d layer + and a unfold layer to implement image to pixel embedding. + init_cfg (dict, optional): Initialization config dict + """ + + def __init__(self, + img_size=224, + patch_size=16, + in_channels=3, + embed_dims_inner=48, + stride=4, + init_cfg=None): + super(PixelEmbed, self).__init__(init_cfg=init_cfg) + img_size = to_2tuple(img_size) + patch_size = to_2tuple(patch_size) + # patches_resolution property necessary for resizing + # positional embedding + patches_resolution = [ + img_size[0] // patch_size[0], img_size[1] // patch_size[1] + ] + num_patches = patches_resolution[0] * patches_resolution[1] + + self.img_size = img_size + self.num_patches = num_patches + self.embed_dims_inner = embed_dims_inner + + new_patch_size = [math.ceil(ps / stride) for ps in patch_size] + self.new_patch_size = new_patch_size + + self.proj = nn.Conv2d( + in_channels, + self.embed_dims_inner, + kernel_size=7, + padding=3, + stride=stride) + self.unfold = nn.Unfold( + kernel_size=new_patch_size, stride=new_patch_size) + + def forward(self, x, pixel_pos): + B, C, H, W = x.shape + assert H == self.img_size[0] and W == self.img_size[1], \ + f"Input image size ({H}*{W}) doesn't match model " \ + f'({self.img_size[0]}*{self.img_size[1]}).' + x = self.proj(x) + x = self.unfold(x) + x = x.transpose(1, + 2).reshape(B * self.num_patches, self.embed_dims_inner, + self.new_patch_size[0], + self.new_patch_size[1]) + x = x + pixel_pos + x = x.reshape(B * self.num_patches, self.embed_dims_inner, + -1).transpose(1, 2) + return x + + +@BACKBONES.register_module() +class TNT(BaseBackbone): + """Transformer in Transformer. + + A PyTorch implement of: `Transformer in Transformer + `_ + + Inspiration from + https://github.com/rwightman/pytorch-image-models/blob/master/timm/models/tnt.py + + Args: + arch (str | dict): Vision Transformer architecture + Default: 'b' + img_size (int | tuple): Input image size. Default to 224 + patch_size (int | tuple): The patch size. Deault to 16 + in_channels (int): Number of input channels. Default to 3 + ffn_ratio (int): A ratio to calculate the hidden_dims in ffn layer. + Default: 4 + qkv_bias (bool): Enable bias for qkv if True. Default False + drop_rate (float): Probability of an element to be zeroed + after the feed forward layer. Default 0. + attn_drop_rate (float): The drop out rate for attention layer. + Default 0. + drop_path_rate (float): stochastic depth rate. Default 0. + act_cfg (dict): The activation config for FFNs. Defaults to GELU. + norm_cfg (dict): Config dict for normalization layer. Default + layer normalization + first_stride (int): The stride of the conv2d layer. We use a conv2d + layer and a unfold layer to implement image to pixel embedding. + num_fcs (int): The number of fully-connected layers for FFNs. Default 2 + init_cfg (dict, optional): Initialization config dict + """ + arch_zoo = { + **dict.fromkeys( + ['s', 'small'], { + 'embed_dims_outer': 384, + 'embed_dims_inner': 24, + 'num_layers': 12, + 'num_heads_outer': 6, + 'num_heads_inner': 4 + }), + **dict.fromkeys( + ['b', 'base'], { + 'embed_dims_outer': 640, + 'embed_dims_inner': 40, + 'num_layers': 12, + 'num_heads_outer': 10, + 'num_heads_inner': 4 + }) + } + + def __init__(self, + arch='b', + img_size=224, + patch_size=16, + in_channels=3, + ffn_ratio=4, + qkv_bias=False, + drop_rate=0., + attn_drop_rate=0., + drop_path_rate=0., + act_cfg=dict(type='GELU'), + norm_cfg=dict(type='LN'), + first_stride=4, + num_fcs=2, + init_cfg=[ + dict(type='TruncNormal', layer='Linear', std=.02), + dict(type='Constant', layer='LayerNorm', val=1., bias=0.) + ]): + super(TNT, self).__init__(init_cfg=init_cfg) + + if isinstance(arch, str): + arch = arch.lower() + assert arch in set(self.arch_zoo), \ + f'Arch {arch} is not in default archs {set(self.arch_zoo)}' + self.arch_settings = self.arch_zoo[arch] + else: + essential_keys = { + 'embed_dims_outer', 'embed_dims_inner', 'num_layers', + 'num_heads_inner', 'num_heads_outer' + } + assert isinstance(arch, dict) and set(arch) == essential_keys, \ + f'Custom arch needs a dict with keys {essential_keys}' + self.arch_settings = arch + + self.embed_dims_inner = self.arch_settings['embed_dims_inner'] + self.embed_dims_outer = self.arch_settings['embed_dims_outer'] + # embed_dims for consistency with other models + self.embed_dims = self.embed_dims_outer + self.num_layers = self.arch_settings['num_layers'] + self.num_heads_inner = self.arch_settings['num_heads_inner'] + self.num_heads_outer = self.arch_settings['num_heads_outer'] + + self.pixel_embed = PixelEmbed( + img_size=img_size, + patch_size=patch_size, + in_channels=in_channels, + embed_dims_inner=self.embed_dims_inner, + stride=first_stride) + num_patches = self.pixel_embed.num_patches + self.num_patches = num_patches + new_patch_size = self.pixel_embed.new_patch_size + num_pixel = new_patch_size[0] * new_patch_size[1] + + self.norm1_proj = build_norm_layer(norm_cfg, num_pixel * + self.embed_dims_inner)[1] + self.projection = nn.Linear(num_pixel * self.embed_dims_inner, + self.embed_dims_outer) + self.norm2_proj = build_norm_layer(norm_cfg, self.embed_dims_outer)[1] + + self.cls_token = nn.Parameter(torch.zeros(1, 1, self.embed_dims_outer)) + self.patch_pos = nn.Parameter( + torch.zeros(1, num_patches + 1, self.embed_dims_outer)) + self.pixel_pos = nn.Parameter( + torch.zeros(1, self.embed_dims_inner, new_patch_size[0], + new_patch_size[1])) + self.drop_after_pos = nn.Dropout(p=drop_rate) + + dpr = [ + x.item() + for x in torch.linspace(0, drop_path_rate, self.num_layers) + ] # stochastic depth decay rule + self.layers = ModuleList() + for i in range(self.num_layers): + block_cfg = dict( + ffn_ratio=ffn_ratio, + drop_rate=drop_rate, + attn_drop_rate=attn_drop_rate, + drop_path_rate=dpr[i], + num_fcs=num_fcs, + qkv_bias=qkv_bias, + norm_cfg=norm_cfg, + batch_first=True) + self.layers.append( + TnTLayer( + num_pixel=num_pixel, + embed_dims_inner=self.embed_dims_inner, + embed_dims_outer=self.embed_dims_outer, + num_heads_inner=self.num_heads_inner, + num_heads_outer=self.num_heads_outer, + inner_block_cfg=block_cfg, + outer_block_cfg=block_cfg, + norm_cfg=norm_cfg)) + + self.norm = build_norm_layer(norm_cfg, self.embed_dims_outer)[1] + + trunc_normal_(self.cls_token, std=.02) + trunc_normal_(self.patch_pos, std=.02) + trunc_normal_(self.pixel_pos, std=.02) + + def forward(self, x): + B = x.shape[0] + pixel_embed = self.pixel_embed(x, self.pixel_pos) + + patch_embed = self.norm2_proj( + self.projection( + self.norm1_proj(pixel_embed.reshape(B, self.num_patches, -1)))) + patch_embed = torch.cat( + (self.cls_token.expand(B, -1, -1), patch_embed), dim=1) + patch_embed = patch_embed + self.patch_pos + patch_embed = self.drop_after_pos(patch_embed) + + for layer in self.layers: + pixel_embed, patch_embed = layer(pixel_embed, patch_embed) + + patch_embed = self.norm(patch_embed) + return (patch_embed[:, 0], ) diff --git a/openmmlab_test/mmclassification-0.24.1/mmcls/models/backbones/twins.py b/openmmlab_test/mmclassification-0.24.1/mmcls/models/backbones/twins.py new file mode 100644 index 00000000..0e3c47a4 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/mmcls/models/backbones/twins.py @@ -0,0 +1,723 @@ +# Copyright (c) OpenMMLab. All rights reserved. +import math + +import torch +import torch.nn as nn +import torch.nn.functional as F +from mmcv.cnn import Conv2d, build_norm_layer +from mmcv.cnn.bricks.drop import build_dropout +from mmcv.cnn.bricks.transformer import FFN, PatchEmbed +from mmcv.cnn.utils.weight_init import (constant_init, normal_init, + trunc_normal_init) +from mmcv.runner import BaseModule, ModuleList +from torch.nn.modules.batchnorm import _BatchNorm + +from mmcls.models.builder import BACKBONES +from mmcls.models.utils.attention import MultiheadAttention +from mmcls.models.utils.position_encoding import ConditionalPositionEncoding + + +class GlobalSubsampledAttention(MultiheadAttention): + """Global Sub-sampled Attention (GSA) module. + + Args: + embed_dims (int): The embedding dimension. + num_heads (int): Parallel attention heads. + input_dims (int, optional): The input dimension, and if None, + use ``embed_dims``. Defaults to None. + attn_drop (float): Dropout rate of the dropout layer after the + attention calculation of query and key. Defaults to 0. + proj_drop (float): Dropout rate of the dropout layer after the + output projection. Defaults to 0. + dropout_layer (dict): The dropout config before adding the shortcut. + Defaults to ``dict(type='Dropout', drop_prob=0.)``. + qkv_bias (bool): If True, add a learnable bias to q, k, v. + Defaults to True. + norm_cfg (dict): Config dict for normalization layer. + Default: dict(type='LN'). + qk_scale (float, optional): Override default qk scale of + ``head_dim ** -0.5`` if set. Defaults to None. + proj_bias (bool) If True, add a learnable bias to output projection. + Defaults to True. + v_shortcut (bool): Add a shortcut from value to output. It's usually + used if ``input_dims`` is different from ``embed_dims``. + Defaults to False. + sr_ratio (float): The ratio of spatial reduction in attention modules. + Defaults to 1. + init_cfg (dict, optional): The Config for initialization. + Defaults to None. + """ + + def __init__(self, + embed_dims, + num_heads, + norm_cfg=dict(type='LN'), + qkv_bias=True, + sr_ratio=1, + **kwargs): + super(GlobalSubsampledAttention, + self).__init__(embed_dims, num_heads, **kwargs) + + self.qkv_bias = qkv_bias + self.q = nn.Linear(self.input_dims, embed_dims, bias=qkv_bias) + self.kv = nn.Linear(self.input_dims, embed_dims * 2, bias=qkv_bias) + + # remove self.qkv, here split into self.q, self.kv + delattr(self, 'qkv') + + self.sr_ratio = sr_ratio + if sr_ratio > 1: + # use a conv as the spatial-reduction operation, the kernel_size + # and stride in conv are equal to the sr_ratio. + self.sr = Conv2d( + in_channels=embed_dims, + out_channels=embed_dims, + kernel_size=sr_ratio, + stride=sr_ratio) + # The ret[0] of build_norm_layer is norm name. + self.norm = build_norm_layer(norm_cfg, embed_dims)[1] + + def forward(self, x, hw_shape): + B, N, C = x.shape + H, W = hw_shape + assert H * W == N, 'The product of h and w of hw_shape must be N, ' \ + 'which is the 2nd dim number of the input Tensor x.' + + q = self.q(x).reshape(B, N, self.num_heads, + C // self.num_heads).permute(0, 2, 1, 3) + + if self.sr_ratio > 1: + x = x.permute(0, 2, 1).reshape(B, C, *hw_shape) # BNC_2_BCHW + x = self.sr(x) + x = x.reshape(B, C, -1).permute(0, 2, 1) # BCHW_2_BNC + x = self.norm(x) + + kv = self.kv(x).reshape(B, -1, 2, self.num_heads, + self.head_dims).permute(2, 0, 3, 1, 4) + k, v = kv[0], kv[1] + + attn = (q @ k.transpose(-2, -1)) * self.scale + attn = attn.softmax(dim=-1) + attn = self.attn_drop(attn) + + x = (attn @ v).transpose(1, 2).reshape(B, N, C) + x = self.proj(x) + x = self.out_drop(self.proj_drop(x)) + + if self.v_shortcut: + x = v.squeeze(1) + x + return x + + +class GSAEncoderLayer(BaseModule): + """Implements one encoder layer with GlobalSubsampledAttention(GSA). + + Args: + embed_dims (int): The feature dimension. + num_heads (int): Parallel attention heads. + feedforward_channels (int): The hidden dimension for FFNs. + drop_rate (float): Probability of an element to be zeroed + after the feed forward layer. Default: 0.0. + attn_drop_rate (float): The drop out rate for attention layer. + Default: 0.0. + drop_path_rate (float): Stochastic depth rate. Default 0.0. + num_fcs (int): The number of fully-connected layers for FFNs. + Default: 2. + qkv_bias (bool): Enable bias for qkv if True. Default: True + act_cfg (dict): The activation config for FFNs. + Default: dict(type='GELU'). + norm_cfg (dict): Config dict for normalization layer. + Default: dict(type='LN'). + sr_ratio (float): The ratio of spatial reduction in attention modules. + Defaults to 1. + init_cfg (dict, optional): The Config for initialization. + Defaults to None. + """ + + def __init__(self, + embed_dims, + num_heads, + feedforward_channels, + drop_rate=0., + attn_drop_rate=0., + drop_path_rate=0., + num_fcs=2, + qkv_bias=True, + act_cfg=dict(type='GELU'), + norm_cfg=dict(type='LN'), + sr_ratio=1., + init_cfg=None): + super(GSAEncoderLayer, self).__init__(init_cfg=init_cfg) + + self.norm1 = build_norm_layer(norm_cfg, embed_dims, postfix=1)[1] + self.attn = GlobalSubsampledAttention( + embed_dims=embed_dims, + num_heads=num_heads, + attn_drop=attn_drop_rate, + proj_drop=drop_rate, + dropout_layer=dict(type='DropPath', drop_prob=drop_path_rate), + qkv_bias=qkv_bias, + norm_cfg=norm_cfg, + sr_ratio=sr_ratio) + + self.norm2 = build_norm_layer(norm_cfg, embed_dims, postfix=2)[1] + self.ffn = FFN( + embed_dims=embed_dims, + feedforward_channels=feedforward_channels, + num_fcs=num_fcs, + ffn_drop=drop_rate, + dropout_layer=dict(type='DropPath', drop_prob=drop_path_rate), + act_cfg=act_cfg, + add_identity=False) + + self.drop_path = build_dropout( + dict(type='DropPath', drop_prob=drop_path_rate) + ) if drop_path_rate > 0. else nn.Identity() + + def forward(self, x, hw_shape): + x = x + self.drop_path(self.attn(self.norm1(x), hw_shape)) + x = x + self.drop_path(self.ffn(self.norm2(x))) + return x + + +class LocallyGroupedSelfAttention(BaseModule): + """Locally-grouped Self Attention (LSA) module. + + Args: + embed_dims (int): Number of input channels. + num_heads (int): Number of attention heads. Default: 8 + qkv_bias (bool, optional): If True, add a learnable bias to q, k, v. + Default: False. + qk_scale (float | None, optional): Override default qk scale of + head_dim ** -0.5 if set. Default: None. + attn_drop_rate (float, optional): Dropout ratio of attention weight. + Default: 0.0 + proj_drop_rate (float, optional): Dropout ratio of output. Default: 0. + window_size(int): Window size of LSA. Default: 1. + init_cfg (dict, optional): The Config for initialization. + Defaults to None. + """ + + def __init__(self, + embed_dims, + num_heads=8, + qkv_bias=False, + qk_scale=None, + attn_drop_rate=0., + proj_drop_rate=0., + window_size=1, + init_cfg=None): + super(LocallyGroupedSelfAttention, self).__init__(init_cfg=init_cfg) + + assert embed_dims % num_heads == 0, \ + f'dim {embed_dims} should be divided by num_heads {num_heads}' + + self.embed_dims = embed_dims + self.num_heads = num_heads + head_dim = embed_dims // num_heads + self.scale = qk_scale or head_dim**-0.5 + + self.qkv = nn.Linear(embed_dims, embed_dims * 3, bias=qkv_bias) + self.attn_drop = nn.Dropout(attn_drop_rate) + self.proj = nn.Linear(embed_dims, embed_dims) + self.proj_drop = nn.Dropout(proj_drop_rate) + self.window_size = window_size + + def forward(self, x, hw_shape): + B, N, C = x.shape + H, W = hw_shape + x = x.view(B, H, W, C) + + # pad feature maps to multiples of Local-groups + pad_l = pad_t = 0 + pad_r = (self.window_size - W % self.window_size) % self.window_size + pad_b = (self.window_size - H % self.window_size) % self.window_size + x = F.pad(x, (0, 0, pad_l, pad_r, pad_t, pad_b)) + + # calculate attention mask for LSA + Hp, Wp = x.shape[1:-1] + _h, _w = Hp // self.window_size, Wp // self.window_size + mask = torch.zeros((1, Hp, Wp), device=x.device) + mask[:, -pad_b:, :].fill_(1) + mask[:, :, -pad_r:].fill_(1) + + # [B, _h, _w, window_size, window_size, C] + x = x.reshape(B, _h, self.window_size, _w, self.window_size, + C).transpose(2, 3) + mask = mask.reshape(1, _h, self.window_size, _w, + self.window_size).transpose(2, 3).reshape( + 1, _h * _w, + self.window_size * self.window_size) + # [1, _h*_w, window_size*window_size, window_size*window_size] + attn_mask = mask.unsqueeze(2) - mask.unsqueeze(3) + attn_mask = attn_mask.masked_fill(attn_mask != 0, + float(-1000.0)).masked_fill( + attn_mask == 0, float(0.0)) + + # [3, B, _w*_h, nhead, window_size*window_size, dim] + qkv = self.qkv(x).reshape(B, _h * _w, + self.window_size * self.window_size, 3, + self.num_heads, C // self.num_heads).permute( + 3, 0, 1, 4, 2, 5) + q, k, v = qkv[0], qkv[1], qkv[2] + # [B, _h*_w, n_head, window_size*window_size, window_size*window_size] + attn = (q @ k.transpose(-2, -1)) * self.scale + attn = attn + attn_mask.unsqueeze(2) + attn = attn.softmax(dim=-1) + attn = self.attn_drop(attn) + attn = (attn @ v).transpose(2, 3).reshape(B, _h, _w, self.window_size, + self.window_size, C) + x = attn.transpose(2, 3).reshape(B, _h * self.window_size, + _w * self.window_size, C) + if pad_r > 0 or pad_b > 0: + x = x[:, :H, :W, :].contiguous() + + x = x.reshape(B, N, C) + x = self.proj(x) + x = self.proj_drop(x) + return x + + +class LSAEncoderLayer(BaseModule): + """Implements one encoder layer with LocallyGroupedSelfAttention(LSA). + + Args: + embed_dims (int): The feature dimension. + num_heads (int): Parallel attention heads. + feedforward_channels (int): The hidden dimension for FFNs. + drop_rate (float): Probability of an element to be zeroed + after the feed forward layer. Default: 0.0. + attn_drop_rate (float, optional): Dropout ratio of attention weight. + Default: 0.0 + drop_path_rate (float): Stochastic depth rate. Default 0.0. + num_fcs (int): The number of fully-connected layers for FFNs. + Default: 2. + qkv_bias (bool): Enable bias for qkv if True. Default: True + qk_scale (float | None, optional): Override default qk scale of + head_dim ** -0.5 if set. Default: None. + act_cfg (dict): The activation config for FFNs. + Default: dict(type='GELU'). + norm_cfg (dict): Config dict for normalization layer. + Default: dict(type='LN'). + window_size (int): Window size of LSA. Default: 1. + init_cfg (dict, optional): The Config for initialization. + Defaults to None. + """ + + def __init__(self, + embed_dims, + num_heads, + feedforward_channels, + drop_rate=0., + attn_drop_rate=0., + drop_path_rate=0., + num_fcs=2, + qkv_bias=True, + qk_scale=None, + act_cfg=dict(type='GELU'), + norm_cfg=dict(type='LN'), + window_size=1, + init_cfg=None): + + super(LSAEncoderLayer, self).__init__(init_cfg=init_cfg) + + self.norm1 = build_norm_layer(norm_cfg, embed_dims, postfix=1)[1] + self.attn = LocallyGroupedSelfAttention(embed_dims, num_heads, + qkv_bias, qk_scale, + attn_drop_rate, drop_rate, + window_size) + + self.norm2 = build_norm_layer(norm_cfg, embed_dims, postfix=2)[1] + self.ffn = FFN( + embed_dims=embed_dims, + feedforward_channels=feedforward_channels, + num_fcs=num_fcs, + ffn_drop=drop_rate, + dropout_layer=dict(type='DropPath', drop_prob=drop_path_rate), + act_cfg=act_cfg, + add_identity=False) + + self.drop_path = build_dropout( + dict(type='DropPath', drop_prob=drop_path_rate) + ) if drop_path_rate > 0. else nn.Identity() + + def forward(self, x, hw_shape): + x = x + self.drop_path(self.attn(self.norm1(x), hw_shape)) + x = x + self.drop_path(self.ffn(self.norm2(x))) + return x + + +@BACKBONES.register_module() +class PCPVT(BaseModule): + """The backbone of Twins-PCPVT. + + This backbone is the implementation of `Twins: Revisiting the Design + of Spatial Attention in Vision Transformers + `_. + + Args: + arch (dict, str): PCPVT architecture, a str value in arch zoo or a + detailed configuration dict with 7 keys, and the length of all the + values in dict should be the same: + + - depths (List[int]): The number of encoder layers in each stage. + - embed_dims (List[int]): Embedding dimension in each stage. + - patch_sizes (List[int]): The patch sizes in each stage. + - num_heads (List[int]): Numbers of attention head in each stage. + - strides (List[int]): The strides in each stage. + - mlp_ratios (List[int]): The ratios of mlp in each stage. + - sr_ratios (List[int]): The ratios of GSA-encoder layers in each + stage. + + in_channels (int): Number of input channels. Default: 3. + out_indices (tuple[int]): Output from which stages. + Default: (3, ). + qkv_bias (bool): Enable bias for qkv if True. Default: False. + drop_rate (float): Probability of an element to be zeroed. + Default 0. + attn_drop_rate (float): The drop out rate for attention layer. + Default 0.0 + drop_path_rate (float): Stochastic depth rate. Default 0.0 + norm_cfg (dict): Config dict for normalization layer. + Default: dict(type='LN') + norm_after_stage(bool, List[bool]): Add extra norm after each stage. + Default False. + init_cfg (dict, optional): The Config for initialization. + Defaults to None. + + Examples: + >>> from mmcls.models import PCPVT + >>> import torch + >>> pcpvt_cfg = {'arch': "small", + >>> 'norm_after_stage': [False, False, False, True]} + >>> model = PCPVT(**pcpvt_cfg) + >>> x = torch.rand(1, 3, 224, 224) + >>> outputs = model(x) + >>> print(outputs[-1].shape) + torch.Size([1, 512, 7, 7]) + >>> pcpvt_cfg['norm_after_stage'] = [True, True, True, True] + >>> pcpvt_cfg['out_indices'] = (0, 1, 2, 3) + >>> model = PCPVT(**pcpvt_cfg) + >>> outputs = model(x) + >>> for feat in outputs: + >>> print(feat.shape) + torch.Size([1, 64, 56, 56]) + torch.Size([1, 128, 28, 28]) + torch.Size([1, 320, 14, 14]) + torch.Size([1, 512, 7, 7]) + """ + arch_zoo = { + **dict.fromkeys(['s', 'small'], + {'embed_dims': [64, 128, 320, 512], + 'depths': [3, 4, 6, 3], + 'num_heads': [1, 2, 5, 8], + 'patch_sizes': [4, 2, 2, 2], + 'strides': [4, 2, 2, 2], + 'mlp_ratios': [8, 8, 4, 4], + 'sr_ratios': [8, 4, 2, 1]}), + **dict.fromkeys(['b', 'base'], + {'embed_dims': [64, 128, 320, 512], + 'depths': [3, 4, 18, 3], + 'num_heads': [1, 2, 5, 8], + 'patch_sizes': [4, 2, 2, 2], + 'strides': [4, 2, 2, 2], + 'mlp_ratios': [8, 8, 4, 4], + 'sr_ratios': [8, 4, 2, 1]}), + **dict.fromkeys(['l', 'large'], + {'embed_dims': [64, 128, 320, 512], + 'depths': [3, 8, 27, 3], + 'num_heads': [1, 2, 5, 8], + 'patch_sizes': [4, 2, 2, 2], + 'strides': [4, 2, 2, 2], + 'mlp_ratios': [8, 8, 4, 4], + 'sr_ratios': [8, 4, 2, 1]}), + } # yapf: disable + + essential_keys = { + 'embed_dims', 'depths', 'num_heads', 'patch_sizes', 'strides', + 'mlp_ratios', 'sr_ratios' + } + + def __init__(self, + arch, + in_channels=3, + out_indices=(3, ), + qkv_bias=False, + drop_rate=0., + attn_drop_rate=0., + drop_path_rate=0., + norm_cfg=dict(type='LN'), + norm_after_stage=False, + init_cfg=None): + super(PCPVT, self).__init__(init_cfg=init_cfg) + if isinstance(arch, str): + arch = arch.lower() + assert arch in set(self.arch_zoo), \ + f'Arch {arch} is not in default archs {set(self.arch_zoo)}' + self.arch_settings = self.arch_zoo[arch] + else: + assert isinstance(arch, dict) and ( + set(arch) == self.essential_keys + ), f'Custom arch needs a dict with keys {self.essential_keys}.' + self.arch_settings = arch + + self.depths = self.arch_settings['depths'] + self.embed_dims = self.arch_settings['embed_dims'] + self.patch_sizes = self.arch_settings['patch_sizes'] + self.strides = self.arch_settings['strides'] + self.mlp_ratios = self.arch_settings['mlp_ratios'] + self.num_heads = self.arch_settings['num_heads'] + self.sr_ratios = self.arch_settings['sr_ratios'] + + self.num_extra_tokens = 0 # there is no cls-token in Twins + self.num_stage = len(self.depths) + for key, value in self.arch_settings.items(): + assert isinstance(value, list) and len(value) == self.num_stage, ( + 'Length of setting item in arch dict must be type of list and' + ' have the same length.') + + # patch_embeds + self.patch_embeds = ModuleList() + self.position_encoding_drops = ModuleList() + self.stages = ModuleList() + + for i in range(self.num_stage): + # use in_channels of the model in the first stage + if i == 0: + stage_in_channels = in_channels + else: + stage_in_channels = self.embed_dims[i - 1] + + self.patch_embeds.append( + PatchEmbed( + in_channels=stage_in_channels, + embed_dims=self.embed_dims[i], + conv_type='Conv2d', + kernel_size=self.patch_sizes[i], + stride=self.strides[i], + padding='corner', + norm_cfg=dict(type='LN'))) + + self.position_encoding_drops.append(nn.Dropout(p=drop_rate)) + + # PEGs + self.position_encodings = ModuleList([ + ConditionalPositionEncoding(embed_dim, embed_dim) + for embed_dim in self.embed_dims + ]) + + # stochastic depth + total_depth = sum(self.depths) + self.dpr = [ + x.item() for x in torch.linspace(0, drop_path_rate, total_depth) + ] # stochastic depth decay rule + cur = 0 + + for k in range(len(self.depths)): + _block = ModuleList([ + GSAEncoderLayer( + embed_dims=self.embed_dims[k], + num_heads=self.num_heads[k], + feedforward_channels=self.mlp_ratios[k] * + self.embed_dims[k], + attn_drop_rate=attn_drop_rate, + drop_rate=drop_rate, + drop_path_rate=self.dpr[cur + i], + num_fcs=2, + qkv_bias=qkv_bias, + act_cfg=dict(type='GELU'), + norm_cfg=norm_cfg, + sr_ratio=self.sr_ratios[k]) for i in range(self.depths[k]) + ]) + self.stages.append(_block) + cur += self.depths[k] + + self.out_indices = out_indices + + assert isinstance(norm_after_stage, (bool, list)) + if isinstance(norm_after_stage, bool): + self.norm_after_stage = [norm_after_stage] * self.num_stage + else: + self.norm_after_stage = norm_after_stage + assert len(self.norm_after_stage) == self.num_stage, \ + (f'Number of norm_after_stage({len(self.norm_after_stage)}) should' + f' be equal to the number of stages({self.num_stage}).') + + for i, has_norm in enumerate(self.norm_after_stage): + assert isinstance(has_norm, bool), 'norm_after_stage should be ' \ + 'bool or List[bool].' + if has_norm and norm_cfg is not None: + norm_layer = build_norm_layer(norm_cfg, self.embed_dims[i])[1] + else: + norm_layer = nn.Identity() + + self.add_module(f'norm_after_stage{i}', norm_layer) + + def init_weights(self): + if self.init_cfg is not None: + super(PCPVT, self).init_weights() + else: + for m in self.modules(): + if isinstance(m, nn.Linear): + trunc_normal_init(m, std=.02, bias=0.) + elif isinstance(m, (_BatchNorm, nn.GroupNorm, nn.LayerNorm)): + constant_init(m, val=1.0, bias=0.) + elif isinstance(m, nn.Conv2d): + fan_out = m.kernel_size[0] * m.kernel_size[ + 1] * m.out_channels + fan_out //= m.groups + normal_init( + m, mean=0, std=math.sqrt(2.0 / fan_out), bias=0) + + def forward(self, x): + outputs = list() + + b = x.shape[0] + + for i in range(self.num_stage): + x, hw_shape = self.patch_embeds[i](x) + h, w = hw_shape + x = self.position_encoding_drops[i](x) + for j, blk in enumerate(self.stages[i]): + x = blk(x, hw_shape) + if j == 0: + x = self.position_encodings[i](x, hw_shape) + + norm_layer = getattr(self, f'norm_after_stage{i}') + x = norm_layer(x) + x = x.reshape(b, h, w, -1).permute(0, 3, 1, 2).contiguous() + + if i in self.out_indices: + outputs.append(x) + + return tuple(outputs) + + +@BACKBONES.register_module() +class SVT(PCPVT): + """The backbone of Twins-SVT. + + This backbone is the implementation of `Twins: Revisiting the Design + of Spatial Attention in Vision Transformers + `_. + + Args: + arch (dict, str): SVT architecture, a str value in arch zoo or a + detailed configuration dict with 8 keys, and the length of all the + values in dict should be the same: + + - depths (List[int]): The number of encoder layers in each stage. + - embed_dims (List[int]): Embedding dimension in each stage. + - patch_sizes (List[int]): The patch sizes in each stage. + - num_heads (List[int]): Numbers of attention head in each stage. + - strides (List[int]): The strides in each stage. + - mlp_ratios (List[int]): The ratios of mlp in each stage. + - sr_ratios (List[int]): The ratios of GSA-encoder layers in each + stage. + - windiow_sizes (List[int]): The window sizes in LSA-encoder layers + in each stage. + + in_channels (int): Number of input channels. Default: 3. + out_indices (tuple[int]): Output from which stages. + Default: (3, ). + qkv_bias (bool): Enable bias for qkv if True. Default: False. + drop_rate (float): Dropout rate. Default 0. + attn_drop_rate (float): Dropout ratio of attention weight. + Default 0.0 + drop_path_rate (float): Stochastic depth rate. Default 0.2. + norm_cfg (dict): Config dict for normalization layer. + Default: dict(type='LN') + norm_after_stage(bool, List[bool]): Add extra norm after each stage. + Default False. + init_cfg (dict, optional): The Config for initialization. + Defaults to None. + + Examples: + >>> from mmcls.models import SVT + >>> import torch + >>> svt_cfg = {'arch': "small", + >>> 'norm_after_stage': [False, False, False, True]} + >>> model = SVT(**svt_cfg) + >>> x = torch.rand(1, 3, 224, 224) + >>> outputs = model(x) + >>> print(outputs[-1].shape) + torch.Size([1, 512, 7, 7]) + >>> svt_cfg["out_indices"] = (0, 1, 2, 3) + >>> svt_cfg["norm_after_stage"] = [True, True, True, True] + >>> model = SVT(**svt_cfg) + >>> output = model(x) + >>> for feat in output: + >>> print(feat.shape) + torch.Size([1, 64, 56, 56]) + torch.Size([1, 128, 28, 28]) + torch.Size([1, 320, 14, 14]) + torch.Size([1, 512, 7, 7]) + """ + arch_zoo = { + **dict.fromkeys(['s', 'small'], + {'embed_dims': [64, 128, 256, 512], + 'depths': [2, 2, 10, 4], + 'num_heads': [2, 4, 8, 16], + 'patch_sizes': [4, 2, 2, 2], + 'strides': [4, 2, 2, 2], + 'mlp_ratios': [4, 4, 4, 4], + 'sr_ratios': [8, 4, 2, 1], + 'window_sizes': [7, 7, 7, 7]}), + **dict.fromkeys(['b', 'base'], + {'embed_dims': [96, 192, 384, 768], + 'depths': [2, 2, 18, 2], + 'num_heads': [3, 6, 12, 24], + 'patch_sizes': [4, 2, 2, 2], + 'strides': [4, 2, 2, 2], + 'mlp_ratios': [4, 4, 4, 4], + 'sr_ratios': [8, 4, 2, 1], + 'window_sizes': [7, 7, 7, 7]}), + **dict.fromkeys(['l', 'large'], + {'embed_dims': [128, 256, 512, 1024], + 'depths': [2, 2, 18, 2], + 'num_heads': [4, 8, 16, 32], + 'patch_sizes': [4, 2, 2, 2], + 'strides': [4, 2, 2, 2], + 'mlp_ratios': [4, 4, 4, 4], + 'sr_ratios': [8, 4, 2, 1], + 'window_sizes': [7, 7, 7, 7]}), + } # yapf: disable + + essential_keys = { + 'embed_dims', 'depths', 'num_heads', 'patch_sizes', 'strides', + 'mlp_ratios', 'sr_ratios', 'window_sizes' + } + + def __init__(self, + arch, + in_channels=3, + out_indices=(3, ), + qkv_bias=False, + drop_rate=0., + attn_drop_rate=0., + drop_path_rate=0.0, + norm_cfg=dict(type='LN'), + norm_after_stage=False, + init_cfg=None): + super(SVT, self).__init__(arch, in_channels, out_indices, qkv_bias, + drop_rate, attn_drop_rate, drop_path_rate, + norm_cfg, norm_after_stage, init_cfg) + + self.window_sizes = self.arch_settings['window_sizes'] + + for k in range(self.num_stage): + for i in range(self.depths[k]): + # in even-numbered layers of each stage, replace GSA with LSA + if i % 2 == 0: + ffn_channels = self.mlp_ratios[k] * self.embed_dims[k] + self.stages[k][i] = \ + LSAEncoderLayer( + embed_dims=self.embed_dims[k], + num_heads=self.num_heads[k], + feedforward_channels=ffn_channels, + drop_rate=drop_rate, + norm_cfg=norm_cfg, + attn_drop_rate=attn_drop_rate, + drop_path_rate=self.dpr[sum(self.depths[:k])+i], + qkv_bias=qkv_bias, + window_size=self.window_sizes[k]) diff --git a/openmmlab_test/mmclassification-0.24.1/mmcls/models/backbones/van.py b/openmmlab_test/mmclassification-0.24.1/mmcls/models/backbones/van.py new file mode 100644 index 00000000..925240ed --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/mmcls/models/backbones/van.py @@ -0,0 +1,445 @@ +# Copyright (c) OpenMMLab. All rights reserved. +import torch +import torch.nn as nn +from mmcv.cnn import Conv2d, build_activation_layer, build_norm_layer +from mmcv.cnn.bricks import DropPath +from mmcv.cnn.bricks.transformer import PatchEmbed +from mmcv.runner import BaseModule, ModuleList +from mmcv.utils.parrots_wrapper import _BatchNorm + +from ..builder import BACKBONES +from .base_backbone import BaseBackbone + + +class MixFFN(BaseModule): + """An implementation of MixFFN of VAN. Refer to + mmdetection/mmdet/models/backbones/pvt.py. + + The differences between MixFFN & FFN: + 1. Use 1X1 Conv to replace Linear layer. + 2. Introduce 3X3 Depth-wise Conv to encode positional information. + + Args: + embed_dims (int): The feature dimension. Same as + `MultiheadAttention`. + feedforward_channels (int): The hidden dimension of FFNs. + act_cfg (dict, optional): The activation config for FFNs. + Default: dict(type='GELU'). + ffn_drop (float, optional): Probability of an element to be + zeroed in FFN. Default 0.0. + init_cfg (obj:`mmcv.ConfigDict`): The Config for initialization. + Default: None. + """ + + def __init__(self, + embed_dims, + feedforward_channels, + act_cfg=dict(type='GELU'), + ffn_drop=0., + init_cfg=None): + super(MixFFN, self).__init__(init_cfg=init_cfg) + + self.embed_dims = embed_dims + self.feedforward_channels = feedforward_channels + self.act_cfg = act_cfg + + self.fc1 = Conv2d( + in_channels=embed_dims, + out_channels=feedforward_channels, + kernel_size=1) + self.dwconv = Conv2d( + in_channels=feedforward_channels, + out_channels=feedforward_channels, + kernel_size=3, + stride=1, + padding=1, + bias=True, + groups=feedforward_channels) + self.act = build_activation_layer(act_cfg) + self.fc2 = Conv2d( + in_channels=feedforward_channels, + out_channels=embed_dims, + kernel_size=1) + self.drop = nn.Dropout(ffn_drop) + + def forward(self, x): + x = self.fc1(x) + x = self.dwconv(x) + x = self.act(x) + x = self.drop(x) + x = self.fc2(x) + x = self.drop(x) + return x + + +class LKA(BaseModule): + """Large Kernel Attention(LKA) of VAN. + + .. code:: text + DW_conv (depth-wise convolution) + | + | + DW_D_conv (depth-wise dilation convolution) + | + | + Transition Convolution (1×1 convolution) + + Args: + embed_dims (int): Number of input channels. + init_cfg (obj:`mmcv.ConfigDict`): The Config for initialization. + Default: None. + """ + + def __init__(self, embed_dims, init_cfg=None): + super(LKA, self).__init__(init_cfg=init_cfg) + + # a spatial local convolution (depth-wise convolution) + self.DW_conv = Conv2d( + in_channels=embed_dims, + out_channels=embed_dims, + kernel_size=5, + padding=2, + groups=embed_dims) + + # a spatial long-range convolution (depth-wise dilation convolution) + self.DW_D_conv = Conv2d( + in_channels=embed_dims, + out_channels=embed_dims, + kernel_size=7, + stride=1, + padding=9, + groups=embed_dims, + dilation=3) + + self.conv1 = Conv2d( + in_channels=embed_dims, out_channels=embed_dims, kernel_size=1) + + def forward(self, x): + u = x.clone() + attn = self.DW_conv(x) + attn = self.DW_D_conv(attn) + attn = self.conv1(attn) + + return u * attn + + +class SpatialAttention(BaseModule): + """Basic attention module in VANBloack. + + Args: + embed_dims (int): Number of input channels. + act_cfg (dict, optional): The activation config for FFNs. + Default: dict(type='GELU'). + init_cfg (obj:`mmcv.ConfigDict`): The Config for initialization. + Default: None. + """ + + def __init__(self, embed_dims, act_cfg=dict(type='GELU'), init_cfg=None): + super(SpatialAttention, self).__init__(init_cfg=init_cfg) + + self.proj_1 = Conv2d( + in_channels=embed_dims, out_channels=embed_dims, kernel_size=1) + self.activation = build_activation_layer(act_cfg) + self.spatial_gating_unit = LKA(embed_dims) + self.proj_2 = Conv2d( + in_channels=embed_dims, out_channels=embed_dims, kernel_size=1) + + def forward(self, x): + shorcut = x.clone() + x = self.proj_1(x) + x = self.activation(x) + x = self.spatial_gating_unit(x) + x = self.proj_2(x) + x = x + shorcut + return x + + +class VANBlock(BaseModule): + """A block of VAN. + + Args: + embed_dims (int): Number of input channels. + ffn_ratio (float): The expansion ratio of feedforward network hidden + layer channels. Defaults to 4. + drop_rate (float): Dropout rate after embedding. Defaults to 0. + drop_path_rate (float): Stochastic depth rate. Defaults to 0.1. + act_cfg (dict, optional): The activation config for FFNs. + Default: dict(type='GELU'). + layer_scale_init_value (float): Init value for Layer Scale. + Defaults to 1e-2. + init_cfg (obj:`mmcv.ConfigDict`): The Config for initialization. + Default: None. + """ + + def __init__(self, + embed_dims, + ffn_ratio=4., + drop_rate=0., + drop_path_rate=0., + act_cfg=dict(type='GELU'), + norm_cfg=dict(type='BN', eps=1e-5), + layer_scale_init_value=1e-2, + init_cfg=None): + super(VANBlock, self).__init__(init_cfg=init_cfg) + self.out_channels = embed_dims + + self.norm1 = build_norm_layer(norm_cfg, embed_dims)[1] + self.attn = SpatialAttention(embed_dims, act_cfg=act_cfg) + self.drop_path = DropPath( + drop_path_rate) if drop_path_rate > 0. else nn.Identity() + + self.norm2 = build_norm_layer(norm_cfg, embed_dims)[1] + mlp_hidden_dim = int(embed_dims * ffn_ratio) + self.mlp = MixFFN( + embed_dims=embed_dims, + feedforward_channels=mlp_hidden_dim, + act_cfg=act_cfg, + ffn_drop=drop_rate) + self.layer_scale_1 = nn.Parameter( + layer_scale_init_value * torch.ones((embed_dims)), + requires_grad=True) if layer_scale_init_value > 0 else None + self.layer_scale_2 = nn.Parameter( + layer_scale_init_value * torch.ones((embed_dims)), + requires_grad=True) if layer_scale_init_value > 0 else None + + def forward(self, x): + identity = x + x = self.norm1(x) + x = self.attn(x) + if self.layer_scale_1 is not None: + x = self.layer_scale_1.unsqueeze(-1).unsqueeze(-1) * x + x = identity + self.drop_path(x) + + identity = x + x = self.norm2(x) + x = self.mlp(x) + if self.layer_scale_2 is not None: + x = self.layer_scale_2.unsqueeze(-1).unsqueeze(-1) * x + x = identity + self.drop_path(x) + + return x + + +class VANPatchEmbed(PatchEmbed): + """Image to Patch Embedding of VAN. + + The differences between VANPatchEmbed & PatchEmbed: + 1. Use BN. + 2. Do not use 'flatten' and 'transpose'. + """ + + def __init__(self, *args, norm_cfg=dict(type='BN'), **kwargs): + super(VANPatchEmbed, self).__init__(*args, norm_cfg=norm_cfg, **kwargs) + + def forward(self, x): + """ + Args: + x (Tensor): Has shape (B, C, H, W). In most case, C is 3. + Returns: + tuple: Contains merged results and its spatial shape. + - x (Tensor): Has shape (B, out_h * out_w, embed_dims) + - out_size (tuple[int]): Spatial shape of x, arrange as + (out_h, out_w). + """ + + if self.adaptive_padding: + x = self.adaptive_padding(x) + + x = self.projection(x) + out_size = (x.shape[2], x.shape[3]) + if self.norm is not None: + x = self.norm(x) + return x, out_size + + +@BACKBONES.register_module() +class VAN(BaseBackbone): + """Visual Attention Network. + + A PyTorch implement of : `Visual Attention Network + `_ + + Inspiration from + https://github.com/Visual-Attention-Network/VAN-Classification + + Args: + arch (str | dict): Visual Attention Network architecture. + If use string, choose from 'b0', 'b1', b2', b3' and etc., + if use dict, it should have below keys: + + - **embed_dims** (List[int]): The dimensions of embedding. + - **depths** (List[int]): The number of blocks in each stage. + - **ffn_ratios** (List[int]): The number of expansion ratio of + feedforward network hidden layer channels. + + Defaults to 'tiny'. + patch_sizes (List[int | tuple]): The patch size in patch embeddings. + Defaults to [7, 3, 3, 3]. + in_channels (int): The num of input channels. Defaults to 3. + drop_rate (float): Dropout rate after embedding. Defaults to 0. + drop_path_rate (float): Stochastic depth rate. Defaults to 0.1. + out_indices (Sequence[int]): Output from which stages. + Default: ``(3, )``. + frozen_stages (int): Stages to be frozen (stop grad and set eval mode). + -1 means not freezing any parameters. Defaults to -1. + norm_eval (bool): Whether to set norm layers to eval mode, namely, + freeze running stats (mean and var). Note: Effect on Batch Norm + and its variants only. Defaults to False. + norm_cfg (dict): Config dict for normalization layer for all output + features. Defaults to ``dict(type='LN')`` + block_cfgs (Sequence[dict] | dict): The extra config of each block. + Defaults to empty dicts. + init_cfg (dict, optional): The Config for initialization. + Defaults to None. + + Examples: + >>> from mmcls.models import VAN + >>> import torch + >>> model = VAN(arch='b0') + >>> inputs = torch.rand(1, 3, 224, 224) + >>> outputs = model(inputs) + >>> for out in outputs: + >>> print(out.size()) + (1, 256, 7, 7) + """ + arch_zoo = { + **dict.fromkeys(['b0', 't', 'tiny'], + {'embed_dims': [32, 64, 160, 256], + 'depths': [3, 3, 5, 2], + 'ffn_ratios': [8, 8, 4, 4]}), + **dict.fromkeys(['b1', 's', 'small'], + {'embed_dims': [64, 128, 320, 512], + 'depths': [2, 2, 4, 2], + 'ffn_ratios': [8, 8, 4, 4]}), + **dict.fromkeys(['b2', 'b', 'base'], + {'embed_dims': [64, 128, 320, 512], + 'depths': [3, 3, 12, 3], + 'ffn_ratios': [8, 8, 4, 4]}), + **dict.fromkeys(['b3', 'l', 'large'], + {'embed_dims': [64, 128, 320, 512], + 'depths': [3, 5, 27, 3], + 'ffn_ratios': [8, 8, 4, 4]}), + **dict.fromkeys(['b4'], + {'embed_dims': [64, 128, 320, 512], + 'depths': [3, 6, 40, 3], + 'ffn_ratios': [8, 8, 4, 4]}), + **dict.fromkeys(['b5'], + {'embed_dims': [96, 192, 480, 768], + 'depths': [3, 3, 24, 3], + 'ffn_ratios': [8, 8, 4, 4]}), + **dict.fromkeys(['b6'], + {'embed_dims': [96, 192, 384, 768], + 'depths': [6, 6, 90, 6], + 'ffn_ratios': [8, 8, 4, 4]}), + } # yapf: disable + + def __init__(self, + arch='tiny', + patch_sizes=[7, 3, 3, 3], + in_channels=3, + drop_rate=0., + drop_path_rate=0., + out_indices=(3, ), + frozen_stages=-1, + norm_eval=False, + norm_cfg=dict(type='LN'), + block_cfgs=dict(), + init_cfg=None): + super(VAN, self).__init__(init_cfg=init_cfg) + + if isinstance(arch, str): + arch = arch.lower() + assert arch in set(self.arch_zoo), \ + f'Arch {arch} is not in default archs {set(self.arch_zoo)}' + self.arch_settings = self.arch_zoo[arch] + else: + essential_keys = {'embed_dims', 'depths', 'ffn_ratios'} + assert isinstance(arch, dict) and set(arch) == essential_keys, \ + f'Custom arch needs a dict with keys {essential_keys}' + self.arch_settings = arch + + self.embed_dims = self.arch_settings['embed_dims'] + self.depths = self.arch_settings['depths'] + self.ffn_ratios = self.arch_settings['ffn_ratios'] + self.num_stages = len(self.depths) + self.out_indices = out_indices + self.frozen_stages = frozen_stages + self.norm_eval = norm_eval + + total_depth = sum(self.depths) + dpr = [ + x.item() for x in torch.linspace(0, drop_path_rate, total_depth) + ] # stochastic depth decay rule + + cur_block_idx = 0 + for i, depth in enumerate(self.depths): + patch_embed = VANPatchEmbed( + in_channels=in_channels if i == 0 else self.embed_dims[i - 1], + input_size=None, + embed_dims=self.embed_dims[i], + kernel_size=patch_sizes[i], + stride=patch_sizes[i] // 2 + 1, + padding=(patch_sizes[i] // 2, patch_sizes[i] // 2), + norm_cfg=dict(type='BN')) + + blocks = ModuleList([ + VANBlock( + embed_dims=self.embed_dims[i], + ffn_ratio=self.ffn_ratios[i], + drop_rate=drop_rate, + drop_path_rate=dpr[cur_block_idx + j], + **block_cfgs) for j in range(depth) + ]) + cur_block_idx += depth + norm = build_norm_layer(norm_cfg, self.embed_dims[i])[1] + + self.add_module(f'patch_embed{i + 1}', patch_embed) + self.add_module(f'blocks{i + 1}', blocks) + self.add_module(f'norm{i + 1}', norm) + + def train(self, mode=True): + super(VAN, self).train(mode) + self._freeze_stages() + if mode and self.norm_eval: + for m in self.modules(): + # trick: eval have effect on BatchNorm only + if isinstance(m, _BatchNorm): + m.eval() + + def _freeze_stages(self): + for i in range(0, self.frozen_stages + 1): + # freeze patch embed + m = getattr(self, f'patch_embed{i + 1}') + m.eval() + for param in m.parameters(): + param.requires_grad = False + + # freeze blocks + m = getattr(self, f'blocks{i + 1}') + m.eval() + for param in m.parameters(): + param.requires_grad = False + + # freeze norm + m = getattr(self, f'norm{i + 1}') + m.eval() + for param in m.parameters(): + param.requires_grad = False + + def forward(self, x): + outs = [] + for i in range(self.num_stages): + patch_embed = getattr(self, f'patch_embed{i + 1}') + blocks = getattr(self, f'blocks{i + 1}') + norm = getattr(self, f'norm{i + 1}') + x, hw_shape = patch_embed(x) + for block in blocks: + x = block(x) + x = x.flatten(2).transpose(1, 2) + x = norm(x) + x = x.reshape(-1, *hw_shape, + block.out_channels).permute(0, 3, 1, 2).contiguous() + if i in self.out_indices: + outs.append(x) + + return tuple(outs) diff --git a/openmmlab_test/mmclassification-speed-benchmark/mmcls/models/backbones/vgg.py b/openmmlab_test/mmclassification-0.24.1/mmcls/models/backbones/vgg.py similarity index 91% rename from openmmlab_test/mmclassification-speed-benchmark/mmcls/models/backbones/vgg.py rename to openmmlab_test/mmclassification-0.24.1/mmcls/models/backbones/vgg.py index e0143589..b21151c8 100644 --- a/openmmlab_test/mmclassification-speed-benchmark/mmcls/models/backbones/vgg.py +++ b/openmmlab_test/mmclassification-0.24.1/mmcls/models/backbones/vgg.py @@ -1,3 +1,4 @@ +# Copyright (c) OpenMMLab. All rights reserved. import torch.nn as nn from mmcv.cnn import ConvModule from mmcv.utils.parrots_wrapper import _BatchNorm @@ -45,13 +46,11 @@ class VGG(BaseBackbone): num_stages (int): VGG stages, normally 5. dilations (Sequence[int]): Dilation of each stage. out_indices (Sequence[int], optional): Output from which stages. - If only one stage is specified, a single tensor (feature map) is - returned, otherwise multiple stages are specified, a tuple of - tensors will be returned. When it is None, the default behavior - depends on whether num_classes is specified. If num_classes <= 0, - the default value is (4, ), outputing the last feature map before - classifier. If num_classes > 0, the default value is (5, ), - outputing the classification score. Default: None. + When it is None, the default behavior depends on whether + num_classes is specified. If num_classes <= 0, the default value is + (4, ), output the last feature map before classifier. If + num_classes > 0, the default value is (5, ), output the + classification score. Default: None. frozen_stages (int): Stages to be frozen (all param fixed). -1 means not freezing any parameters. norm_eval (bool): Whether to set norm layers to eval mode, namely, @@ -162,10 +161,8 @@ class VGG(BaseBackbone): x = x.view(x.size(0), -1) x = self.classifier(x) outs.append(x) - if len(outs) == 1: - return outs[0] - else: - return tuple(outs) + + return tuple(outs) def _freeze_stages(self): vgg_layers = getattr(self, self.module_name) diff --git a/openmmlab_test/mmclassification-0.24.1/mmcls/models/backbones/vision_transformer.py b/openmmlab_test/mmclassification-0.24.1/mmcls/models/backbones/vision_transformer.py new file mode 100644 index 00000000..87a70640 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/mmcls/models/backbones/vision_transformer.py @@ -0,0 +1,383 @@ +# Copyright (c) OpenMMLab. All rights reserved. +from typing import Sequence + +import numpy as np +import torch +import torch.nn as nn +from mmcv.cnn import build_norm_layer +from mmcv.cnn.bricks.transformer import FFN, PatchEmbed +from mmcv.cnn.utils.weight_init import trunc_normal_ +from mmcv.runner.base_module import BaseModule, ModuleList + +from mmcls.utils import get_root_logger +from ..builder import BACKBONES +from ..utils import MultiheadAttention, resize_pos_embed, to_2tuple +from .base_backbone import BaseBackbone + + +class TransformerEncoderLayer(BaseModule): + """Implements one encoder layer in Vision Transformer. + + Args: + embed_dims (int): The feature dimension + num_heads (int): Parallel attention heads + feedforward_channels (int): The hidden dimension for FFNs + drop_rate (float): Probability of an element to be zeroed + after the feed forward layer. Defaults to 0. + attn_drop_rate (float): The drop out rate for attention output weights. + Defaults to 0. + drop_path_rate (float): Stochastic depth rate. Defaults to 0. + num_fcs (int): The number of fully-connected layers for FFNs. + Defaults to 2. + qkv_bias (bool): enable bias for qkv if True. Defaults to True. + act_cfg (dict): The activation config for FFNs. + Defaluts to ``dict(type='GELU')``. + norm_cfg (dict): Config dict for normalization layer. + Defaults to ``dict(type='LN')``. + init_cfg (dict, optional): Initialization config dict. + Defaults to None. + """ + + def __init__(self, + embed_dims, + num_heads, + feedforward_channels, + drop_rate=0., + attn_drop_rate=0., + drop_path_rate=0., + num_fcs=2, + qkv_bias=True, + act_cfg=dict(type='GELU'), + norm_cfg=dict(type='LN'), + init_cfg=None): + super(TransformerEncoderLayer, self).__init__(init_cfg=init_cfg) + + self.embed_dims = embed_dims + + self.norm1_name, norm1 = build_norm_layer( + norm_cfg, self.embed_dims, postfix=1) + self.add_module(self.norm1_name, norm1) + + self.attn = MultiheadAttention( + embed_dims=embed_dims, + num_heads=num_heads, + attn_drop=attn_drop_rate, + proj_drop=drop_rate, + dropout_layer=dict(type='DropPath', drop_prob=drop_path_rate), + qkv_bias=qkv_bias) + + self.norm2_name, norm2 = build_norm_layer( + norm_cfg, self.embed_dims, postfix=2) + self.add_module(self.norm2_name, norm2) + + self.ffn = FFN( + embed_dims=embed_dims, + feedforward_channels=feedforward_channels, + num_fcs=num_fcs, + ffn_drop=drop_rate, + dropout_layer=dict(type='DropPath', drop_prob=drop_path_rate), + act_cfg=act_cfg) + + @property + def norm1(self): + return getattr(self, self.norm1_name) + + @property + def norm2(self): + return getattr(self, self.norm2_name) + + def init_weights(self): + super(TransformerEncoderLayer, self).init_weights() + for m in self.ffn.modules(): + if isinstance(m, nn.Linear): + nn.init.xavier_uniform_(m.weight) + nn.init.normal_(m.bias, std=1e-6) + + def forward(self, x): + x = x + self.attn(self.norm1(x)) + x = self.ffn(self.norm2(x), identity=x) + return x + + +@BACKBONES.register_module() +class VisionTransformer(BaseBackbone): + """Vision Transformer. + + A PyTorch implement of : `An Image is Worth 16x16 Words: Transformers + for Image Recognition at Scale `_ + + Args: + arch (str | dict): Vision Transformer architecture. If use string, + choose from 'small', 'base', 'large', 'deit-tiny', 'deit-small' + and 'deit-base'. If use dict, it should have below keys: + + - **embed_dims** (int): The dimensions of embedding. + - **num_layers** (int): The number of transformer encoder layers. + - **num_heads** (int): The number of heads in attention modules. + - **feedforward_channels** (int): The hidden dimensions in + feedforward modules. + + Defaults to 'base'. + img_size (int | tuple): The expected input image shape. Because we + support dynamic input shape, just set the argument to the most + common input image shape. Defaults to 224. + patch_size (int | tuple): The patch size in patch embedding. + Defaults to 16. + in_channels (int): The num of input channels. Defaults to 3. + out_indices (Sequence | int): Output from which stages. + Defaults to -1, means the last stage. + drop_rate (float): Probability of an element to be zeroed. + Defaults to 0. + drop_path_rate (float): stochastic depth rate. Defaults to 0. + qkv_bias (bool): Whether to add bias for qkv in attention modules. + Defaults to True. + norm_cfg (dict): Config dict for normalization layer. + Defaults to ``dict(type='LN')``. + final_norm (bool): Whether to add a additional layer to normalize + final feature map. Defaults to True. + with_cls_token (bool): Whether concatenating class token into image + tokens as transformer input. Defaults to True. + output_cls_token (bool): Whether output the cls_token. If set True, + ``with_cls_token`` must be True. Defaults to True. + interpolate_mode (str): Select the interpolate mode for position + embeding vector resize. Defaults to "bicubic". + patch_cfg (dict): Configs of patch embeding. Defaults to an empty dict. + layer_cfgs (Sequence | dict): Configs of each transformer layer in + encoder. Defaults to an empty dict. + init_cfg (dict, optional): Initialization config dict. + Defaults to None. + """ + arch_zoo = { + **dict.fromkeys( + ['s', 'small'], { + 'embed_dims': 768, + 'num_layers': 8, + 'num_heads': 8, + 'feedforward_channels': 768 * 3, + }), + **dict.fromkeys( + ['b', 'base'], { + 'embed_dims': 768, + 'num_layers': 12, + 'num_heads': 12, + 'feedforward_channels': 3072 + }), + **dict.fromkeys( + ['l', 'large'], { + 'embed_dims': 1024, + 'num_layers': 24, + 'num_heads': 16, + 'feedforward_channels': 4096 + }), + **dict.fromkeys( + ['deit-t', 'deit-tiny'], { + 'embed_dims': 192, + 'num_layers': 12, + 'num_heads': 3, + 'feedforward_channels': 192 * 4 + }), + **dict.fromkeys( + ['deit-s', 'deit-small'], { + 'embed_dims': 384, + 'num_layers': 12, + 'num_heads': 6, + 'feedforward_channels': 384 * 4 + }), + **dict.fromkeys( + ['deit-b', 'deit-base'], { + 'embed_dims': 768, + 'num_layers': 12, + 'num_heads': 12, + 'feedforward_channels': 768 * 4 + }), + } + # Some structures have multiple extra tokens, like DeiT. + num_extra_tokens = 1 # cls_token + + def __init__(self, + arch='base', + img_size=224, + patch_size=16, + in_channels=3, + out_indices=-1, + drop_rate=0., + drop_path_rate=0., + qkv_bias=True, + norm_cfg=dict(type='LN', eps=1e-6), + final_norm=True, + with_cls_token=True, + output_cls_token=True, + interpolate_mode='bicubic', + patch_cfg=dict(), + layer_cfgs=dict(), + init_cfg=None): + super(VisionTransformer, self).__init__(init_cfg) + + if isinstance(arch, str): + arch = arch.lower() + assert arch in set(self.arch_zoo), \ + f'Arch {arch} is not in default archs {set(self.arch_zoo)}' + self.arch_settings = self.arch_zoo[arch] + else: + essential_keys = { + 'embed_dims', 'num_layers', 'num_heads', 'feedforward_channels' + } + assert isinstance(arch, dict) and essential_keys <= set(arch), \ + f'Custom arch needs a dict with keys {essential_keys}' + self.arch_settings = arch + + self.embed_dims = self.arch_settings['embed_dims'] + self.num_layers = self.arch_settings['num_layers'] + self.img_size = to_2tuple(img_size) + + # Set patch embedding + _patch_cfg = dict( + in_channels=in_channels, + input_size=img_size, + embed_dims=self.embed_dims, + conv_type='Conv2d', + kernel_size=patch_size, + stride=patch_size, + ) + _patch_cfg.update(patch_cfg) + self.patch_embed = PatchEmbed(**_patch_cfg) + self.patch_resolution = self.patch_embed.init_out_size + num_patches = self.patch_resolution[0] * self.patch_resolution[1] + + # Set cls token + if output_cls_token: + assert with_cls_token is True, f'with_cls_token must be True if' \ + f'set output_cls_token to True, but got {with_cls_token}' + self.with_cls_token = with_cls_token + self.output_cls_token = output_cls_token + self.cls_token = nn.Parameter(torch.zeros(1, 1, self.embed_dims)) + + # Set position embedding + self.interpolate_mode = interpolate_mode + self.pos_embed = nn.Parameter( + torch.zeros(1, num_patches + self.num_extra_tokens, + self.embed_dims)) + self._register_load_state_dict_pre_hook(self._prepare_pos_embed) + + self.drop_after_pos = nn.Dropout(p=drop_rate) + + if isinstance(out_indices, int): + out_indices = [out_indices] + assert isinstance(out_indices, Sequence), \ + f'"out_indices" must by a sequence or int, ' \ + f'get {type(out_indices)} instead.' + for i, index in enumerate(out_indices): + if index < 0: + out_indices[i] = self.num_layers + index + assert 0 <= out_indices[i] <= self.num_layers, \ + f'Invalid out_indices {index}' + self.out_indices = out_indices + + # stochastic depth decay rule + dpr = np.linspace(0, drop_path_rate, self.num_layers) + + self.layers = ModuleList() + if isinstance(layer_cfgs, dict): + layer_cfgs = [layer_cfgs] * self.num_layers + for i in range(self.num_layers): + _layer_cfg = dict( + embed_dims=self.embed_dims, + num_heads=self.arch_settings['num_heads'], + feedforward_channels=self. + arch_settings['feedforward_channels'], + drop_rate=drop_rate, + drop_path_rate=dpr[i], + qkv_bias=qkv_bias, + norm_cfg=norm_cfg) + _layer_cfg.update(layer_cfgs[i]) + self.layers.append(TransformerEncoderLayer(**_layer_cfg)) + + self.final_norm = final_norm + if final_norm: + self.norm1_name, norm1 = build_norm_layer( + norm_cfg, self.embed_dims, postfix=1) + self.add_module(self.norm1_name, norm1) + + @property + def norm1(self): + return getattr(self, self.norm1_name) + + def init_weights(self): + super(VisionTransformer, self).init_weights() + + if not (isinstance(self.init_cfg, dict) + and self.init_cfg['type'] == 'Pretrained'): + trunc_normal_(self.pos_embed, std=0.02) + + def _prepare_pos_embed(self, state_dict, prefix, *args, **kwargs): + name = prefix + 'pos_embed' + if name not in state_dict.keys(): + return + + ckpt_pos_embed_shape = state_dict[name].shape + if self.pos_embed.shape != ckpt_pos_embed_shape: + from mmcv.utils import print_log + logger = get_root_logger() + print_log( + f'Resize the pos_embed shape from {ckpt_pos_embed_shape} ' + f'to {self.pos_embed.shape}.', + logger=logger) + + ckpt_pos_embed_shape = to_2tuple( + int(np.sqrt(ckpt_pos_embed_shape[1] - self.num_extra_tokens))) + pos_embed_shape = self.patch_embed.init_out_size + + state_dict[name] = resize_pos_embed(state_dict[name], + ckpt_pos_embed_shape, + pos_embed_shape, + self.interpolate_mode, + self.num_extra_tokens) + + @staticmethod + def resize_pos_embed(*args, **kwargs): + """Interface for backward-compatibility.""" + return resize_pos_embed(*args, **kwargs) + + def forward(self, x): + B = x.shape[0] + x, patch_resolution = self.patch_embed(x) + + # stole cls_tokens impl from Phil Wang, thanks + cls_tokens = self.cls_token.expand(B, -1, -1) + x = torch.cat((cls_tokens, x), dim=1) + x = x + resize_pos_embed( + self.pos_embed, + self.patch_resolution, + patch_resolution, + mode=self.interpolate_mode, + num_extra_tokens=self.num_extra_tokens) + x = self.drop_after_pos(x) + + if not self.with_cls_token: + # Remove class token for transformer encoder input + x = x[:, 1:] + + outs = [] + for i, layer in enumerate(self.layers): + x = layer(x) + + if i == len(self.layers) - 1 and self.final_norm: + x = self.norm1(x) + + if i in self.out_indices: + B, _, C = x.shape + if self.with_cls_token: + patch_token = x[:, 1:].reshape(B, *patch_resolution, C) + patch_token = patch_token.permute(0, 3, 1, 2) + cls_token = x[:, 0] + else: + patch_token = x.reshape(B, *patch_resolution, C) + patch_token = patch_token.permute(0, 3, 1, 2) + cls_token = None + if self.output_cls_token: + out = [patch_token, cls_token] + else: + out = patch_token + outs.append(out) + + return tuple(outs) diff --git a/openmmlab_test/mmclassification-0.24.1/mmcls/models/builder.py b/openmmlab_test/mmclassification-0.24.1/mmcls/models/builder.py new file mode 100644 index 00000000..9b43913e --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/mmcls/models/builder.py @@ -0,0 +1,38 @@ +# Copyright (c) OpenMMLab. All rights reserved. +from mmcv.cnn import MODELS as MMCV_MODELS +from mmcv.cnn.bricks.registry import ATTENTION as MMCV_ATTENTION +from mmcv.utils import Registry + +MODELS = Registry('models', parent=MMCV_MODELS) + +BACKBONES = MODELS +NECKS = MODELS +HEADS = MODELS +LOSSES = MODELS +CLASSIFIERS = MODELS + +ATTENTION = Registry('attention', parent=MMCV_ATTENTION) + + +def build_backbone(cfg): + """Build backbone.""" + return BACKBONES.build(cfg) + + +def build_neck(cfg): + """Build neck.""" + return NECKS.build(cfg) + + +def build_head(cfg): + """Build head.""" + return HEADS.build(cfg) + + +def build_loss(cfg): + """Build loss.""" + return LOSSES.build(cfg) + + +def build_classifier(cfg): + return CLASSIFIERS.build(cfg) diff --git a/openmmlab_test/mmclassification-0.24.1/mmcls/models/classifiers/__init__.py b/openmmlab_test/mmclassification-0.24.1/mmcls/models/classifiers/__init__.py new file mode 100644 index 00000000..5fdfb91f --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/mmcls/models/classifiers/__init__.py @@ -0,0 +1,5 @@ +# Copyright (c) OpenMMLab. All rights reserved. +from .base import BaseClassifier +from .image import ImageClassifier + +__all__ = ['BaseClassifier', 'ImageClassifier'] diff --git a/openmmlab_test/mmclassification-0.24.1/mmcls/models/classifiers/base.py b/openmmlab_test/mmclassification-0.24.1/mmcls/models/classifiers/base.py new file mode 100644 index 00000000..acb5ef3d --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/mmcls/models/classifiers/base.py @@ -0,0 +1,224 @@ +# Copyright (c) OpenMMLab. All rights reserved. +from abc import ABCMeta, abstractmethod +from collections import OrderedDict +from typing import Sequence + +import mmcv +import torch +import torch.distributed as dist +from mmcv.runner import BaseModule, auto_fp16 + +from mmcls.core.visualization import imshow_infos + + +class BaseClassifier(BaseModule, metaclass=ABCMeta): + """Base class for classifiers.""" + + def __init__(self, init_cfg=None): + super(BaseClassifier, self).__init__(init_cfg) + self.fp16_enabled = False + + @property + def with_neck(self): + return hasattr(self, 'neck') and self.neck is not None + + @property + def with_head(self): + return hasattr(self, 'head') and self.head is not None + + @abstractmethod + def extract_feat(self, imgs, stage=None): + pass + + def extract_feats(self, imgs, stage=None): + assert isinstance(imgs, Sequence) + kwargs = {} if stage is None else {'stage': stage} + for img in imgs: + yield self.extract_feat(img, **kwargs) + + @abstractmethod + def forward_train(self, imgs, **kwargs): + """ + Args: + img (list[Tensor]): List of tensors of shape (1, C, H, W). + Typically these should be mean centered and std scaled. + kwargs (keyword arguments): Specific to concrete implementation. + """ + pass + + @abstractmethod + def simple_test(self, img, **kwargs): + pass + + def forward_test(self, imgs, **kwargs): + """ + Args: + imgs (List[Tensor]): the outer list indicates test-time + augmentations and inner Tensor should have a shape NxCxHxW, + which contains all images in the batch. + """ + if isinstance(imgs, torch.Tensor): + imgs = [imgs] + for var, name in [(imgs, 'imgs')]: + if not isinstance(var, list): + raise TypeError(f'{name} must be a list, but got {type(var)}') + + if len(imgs) == 1: + return self.simple_test(imgs[0], **kwargs) + else: + raise NotImplementedError('aug_test has not been implemented') + + @auto_fp16(apply_to=('img', )) + def forward(self, img, return_loss=True, **kwargs): + """Calls either forward_train or forward_test depending on whether + return_loss=True. + + Note this setting will change the expected inputs. When + `return_loss=True`, img and img_meta are single-nested (i.e. Tensor and + List[dict]), and when `resturn_loss=False`, img and img_meta should be + double nested (i.e. List[Tensor], List[List[dict]]), with the outer + list indicating test time augmentations. + """ + if return_loss: + return self.forward_train(img, **kwargs) + else: + return self.forward_test(img, **kwargs) + + def _parse_losses(self, losses): + log_vars = OrderedDict() + for loss_name, loss_value in losses.items(): + if isinstance(loss_value, torch.Tensor): + log_vars[loss_name] = loss_value.mean() + elif isinstance(loss_value, list): + log_vars[loss_name] = sum(_loss.mean() for _loss in loss_value) + elif isinstance(loss_value, dict): + for name, value in loss_value.items(): + log_vars[name] = value + else: + raise TypeError( + f'{loss_name} is not a tensor or list of tensors') + + loss = sum(_value for _key, _value in log_vars.items() + if 'loss' in _key) + + log_vars['loss'] = loss + for loss_name, loss_value in log_vars.items(): + # reduce loss when distributed training + if dist.is_available() and dist.is_initialized(): + loss_value = loss_value.data.clone() + dist.all_reduce(loss_value.div_(dist.get_world_size())) + log_vars[loss_name] = loss_value.item() + + return loss, log_vars + + def train_step(self, data, optimizer=None, **kwargs): + """The iteration step during training. + + This method defines an iteration step during training, except for the + back propagation and optimizer updating, which are done in an optimizer + hook. Note that in some complicated cases or models, the whole process + including back propagation and optimizer updating are also defined in + this method, such as GAN. + + Args: + data (dict): The output of dataloader. + optimizer (:obj:`torch.optim.Optimizer` | dict, optional): The + optimizer of runner is passed to ``train_step()``. This + argument is unused and reserved. + + Returns: + dict: Dict of outputs. The following fields are contained. + - loss (torch.Tensor): A tensor for back propagation, which \ + can be a weighted sum of multiple losses. + - log_vars (dict): Dict contains all the variables to be sent \ + to the logger. + - num_samples (int): Indicates the batch size (when the model \ + is DDP, it means the batch size on each GPU), which is \ + used for averaging the logs. + """ + losses = self(**data) + loss, log_vars = self._parse_losses(losses) + + outputs = dict( + loss=loss, log_vars=log_vars, num_samples=len(data['img'].data)) + + return outputs + + def val_step(self, data, optimizer=None, **kwargs): + """The iteration step during validation. + + This method shares the same signature as :func:`train_step`, but used + during val epochs. Note that the evaluation after training epochs is + not implemented with this method, but an evaluation hook. + + Args: + data (dict): The output of dataloader. + optimizer (:obj:`torch.optim.Optimizer` | dict, optional): The + optimizer of runner is passed to ``train_step()``. This + argument is unused and reserved. + + Returns: + dict: Dict of outputs. The following fields are contained. + - loss (torch.Tensor): A tensor for back propagation, which \ + can be a weighted sum of multiple losses. + - log_vars (dict): Dict contains all the variables to be sent \ + to the logger. + - num_samples (int): Indicates the batch size (when the model \ + is DDP, it means the batch size on each GPU), which is \ + used for averaging the logs. + """ + losses = self(**data) + loss, log_vars = self._parse_losses(losses) + + outputs = dict( + loss=loss, log_vars=log_vars, num_samples=len(data['img'].data)) + + return outputs + + def show_result(self, + img, + result, + text_color='white', + font_scale=0.5, + row_width=20, + show=False, + fig_size=(15, 10), + win_name='', + wait_time=0, + out_file=None): + """Draw `result` over `img`. + + Args: + img (str or ndarray): The image to be displayed. + result (dict): The classification results to draw over `img`. + text_color (str or tuple or :obj:`Color`): Color of texts. + font_scale (float): Font scales of texts. + row_width (int): width between each row of results on the image. + show (bool): Whether to show the image. + Default: False. + fig_size (tuple): Image show figure size. Defaults to (15, 10). + win_name (str): The window name. + wait_time (int): How many seconds to display the image. + Defaults to 0. + out_file (str or None): The filename to write the image. + Default: None. + + Returns: + img (ndarray): Image with overlaid results. + """ + img = mmcv.imread(img) + img = img.copy() + + img = imshow_infos( + img, + result, + text_color=text_color, + font_size=int(font_scale * 50), + row_width=row_width, + win_name=win_name, + show=show, + fig_size=fig_size, + wait_time=wait_time, + out_file=out_file) + + return img diff --git a/openmmlab_test/mmclassification-0.24.1/mmcls/models/classifiers/image.py b/openmmlab_test/mmclassification-0.24.1/mmcls/models/classifiers/image.py new file mode 100644 index 00000000..95ffa466 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/mmcls/models/classifiers/image.py @@ -0,0 +1,160 @@ +# Copyright (c) OpenMMLab. All rights reserved. +from ..builder import CLASSIFIERS, build_backbone, build_head, build_neck +from ..heads import MultiLabelClsHead +from ..utils.augment import Augments +from .base import BaseClassifier + + +@CLASSIFIERS.register_module() +class ImageClassifier(BaseClassifier): + + def __init__(self, + backbone, + neck=None, + head=None, + pretrained=None, + train_cfg=None, + init_cfg=None): + super(ImageClassifier, self).__init__(init_cfg) + + if pretrained is not None: + self.init_cfg = dict(type='Pretrained', checkpoint=pretrained) + self.backbone = build_backbone(backbone) + + if neck is not None: + self.neck = build_neck(neck) + + if head is not None: + self.head = build_head(head) + + self.augments = None + if train_cfg is not None: + augments_cfg = train_cfg.get('augments', None) + if augments_cfg is not None: + self.augments = Augments(augments_cfg) + + def forward_dummy(self, img): + """Used for computing network flops. + + See `mmclassificaiton/tools/analysis_tools/get_flops.py` + """ + return self.extract_feat(img, stage='pre_logits') + + def extract_feat(self, img, stage='neck'): + """Directly extract features from the specified stage. + + Args: + img (Tensor): The input images. The shape of it should be + ``(num_samples, num_channels, *img_shape)``. + stage (str): Which stage to output the feature. Choose from + "backbone", "neck" and "pre_logits". Defaults to "neck". + + Returns: + tuple | Tensor: The output of specified stage. + The output depends on detailed implementation. In general, the + output of backbone and neck is a tuple and the output of + pre_logits is a tensor. + + Examples: + 1. Backbone output + + >>> import torch + >>> from mmcv import Config + >>> from mmcls.models import build_classifier + >>> + >>> cfg = Config.fromfile('configs/resnet/resnet18_8xb32_in1k.py').model + >>> cfg.backbone.out_indices = (0, 1, 2, 3) # Output multi-scale feature maps + >>> model = build_classifier(cfg) + >>> outs = model.extract_feat(torch.rand(1, 3, 224, 224), stage='backbone') + >>> for out in outs: + ... print(out.shape) + torch.Size([1, 64, 56, 56]) + torch.Size([1, 128, 28, 28]) + torch.Size([1, 256, 14, 14]) + torch.Size([1, 512, 7, 7]) + + 2. Neck output + + >>> import torch + >>> from mmcv import Config + >>> from mmcls.models import build_classifier + >>> + >>> cfg = Config.fromfile('configs/resnet/resnet18_8xb32_in1k.py').model + >>> cfg.backbone.out_indices = (0, 1, 2, 3) # Output multi-scale feature maps + >>> model = build_classifier(cfg) + >>> + >>> outs = model.extract_feat(torch.rand(1, 3, 224, 224), stage='neck') + >>> for out in outs: + ... print(out.shape) + torch.Size([1, 64]) + torch.Size([1, 128]) + torch.Size([1, 256]) + torch.Size([1, 512]) + + 3. Pre-logits output (without the final linear classifier head) + + >>> import torch + >>> from mmcv import Config + >>> from mmcls.models import build_classifier + >>> + >>> cfg = Config.fromfile('configs/vision_transformer/vit-base-p16_pt-64xb64_in1k-224.py').model + >>> model = build_classifier(cfg) + >>> + >>> out = model.extract_feat(torch.rand(1, 3, 224, 224), stage='pre_logits') + >>> print(out.shape) # The hidden dims in head is 3072 + torch.Size([1, 3072]) + """ # noqa: E501 + assert stage in ['backbone', 'neck', 'pre_logits'], \ + (f'Invalid output stage "{stage}", please choose from "backbone", ' + '"neck" and "pre_logits"') + + x = self.backbone(img) + + if stage == 'backbone': + return x + + if self.with_neck: + x = self.neck(x) + if stage == 'neck': + return x + + if self.with_head and hasattr(self.head, 'pre_logits'): + x = self.head.pre_logits(x) + return x + + def forward_train(self, img, gt_label, **kwargs): + """Forward computation during training. + + Args: + img (Tensor): of shape (N, C, H, W) encoding input images. + Typically these should be mean centered and std scaled. + gt_label (Tensor): It should be of shape (N, 1) encoding the + ground-truth label of input images for single label task. It + should be of shape (N, C) encoding the ground-truth label + of input images for multi-labels task. + Returns: + dict[str, Tensor]: a dictionary of loss components + """ + if self.augments is not None: + img, gt_label = self.augments(img, gt_label) + + x = self.extract_feat(img) + + losses = dict() + loss = self.head.forward_train(x, gt_label) + + losses.update(loss) + + return losses + + def simple_test(self, img, img_metas=None, **kwargs): + """Test without augmentation.""" + x = self.extract_feat(img) + + if isinstance(self.head, MultiLabelClsHead): + assert 'softmax' not in kwargs, ( + 'Please use `sigmoid` instead of `softmax` ' + 'in multi-label tasks.') + res = self.head.simple_test(x, **kwargs) + + return res diff --git a/openmmlab_test/mmclassification-0.24.1/mmcls/models/heads/__init__.py b/openmmlab_test/mmclassification-0.24.1/mmcls/models/heads/__init__.py new file mode 100644 index 00000000..d7301613 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/mmcls/models/heads/__init__.py @@ -0,0 +1,17 @@ +# Copyright (c) OpenMMLab. All rights reserved. +from .cls_head import ClsHead +from .conformer_head import ConformerHead +from .deit_head import DeiTClsHead +from .efficientformer_head import EfficientFormerClsHead +from .linear_head import LinearClsHead +from .multi_label_csra_head import CSRAClsHead +from .multi_label_head import MultiLabelClsHead +from .multi_label_linear_head import MultiLabelLinearClsHead +from .stacked_head import StackedLinearClsHead +from .vision_transformer_head import VisionTransformerClsHead + +__all__ = [ + 'ClsHead', 'LinearClsHead', 'StackedLinearClsHead', 'MultiLabelClsHead', + 'MultiLabelLinearClsHead', 'VisionTransformerClsHead', 'DeiTClsHead', + 'ConformerHead', 'EfficientFormerClsHead', 'CSRAClsHead' +] diff --git a/openmmlab_test/mmclassification-speed-benchmark/mmcls/models/heads/base_head.py b/openmmlab_test/mmclassification-0.24.1/mmcls/models/heads/base_head.py similarity index 86% rename from openmmlab_test/mmclassification-speed-benchmark/mmcls/models/heads/base_head.py rename to openmmlab_test/mmclassification-0.24.1/mmcls/models/heads/base_head.py index b3197552..e8936f28 100644 --- a/openmmlab_test/mmclassification-speed-benchmark/mmcls/models/heads/base_head.py +++ b/openmmlab_test/mmclassification-0.24.1/mmcls/models/heads/base_head.py @@ -1,3 +1,4 @@ +# Copyright (c) OpenMMLab. All rights reserved. from abc import ABCMeta, abstractmethod from mmcv.runner import BaseModule diff --git a/openmmlab_test/mmclassification-0.24.1/mmcls/models/heads/cls_head.py b/openmmlab_test/mmclassification-0.24.1/mmcls/models/heads/cls_head.py new file mode 100644 index 00000000..2e430c5a --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/mmcls/models/heads/cls_head.py @@ -0,0 +1,116 @@ +# Copyright (c) OpenMMLab. All rights reserved. +import warnings + +import torch +import torch.nn.functional as F + +from mmcls.models.losses import Accuracy +from ..builder import HEADS, build_loss +from ..utils import is_tracing +from .base_head import BaseHead + + +@HEADS.register_module() +class ClsHead(BaseHead): + """classification head. + + Args: + loss (dict): Config of classification loss. + topk (int | tuple): Top-k accuracy. + cal_acc (bool): Whether to calculate accuracy during training. + If you use Mixup/CutMix or something like that during training, + it is not reasonable to calculate accuracy. Defaults to False. + """ + + def __init__(self, + loss=dict(type='CrossEntropyLoss', loss_weight=1.0), + topk=(1, ), + cal_acc=False, + init_cfg=None): + super(ClsHead, self).__init__(init_cfg=init_cfg) + + assert isinstance(loss, dict) + assert isinstance(topk, (int, tuple)) + if isinstance(topk, int): + topk = (topk, ) + for _topk in topk: + assert _topk > 0, 'Top-k should be larger than 0' + self.topk = topk + + self.compute_loss = build_loss(loss) + self.compute_accuracy = Accuracy(topk=self.topk) + self.cal_acc = cal_acc + + def loss(self, cls_score, gt_label, **kwargs): + num_samples = len(cls_score) + losses = dict() + # compute loss + loss = self.compute_loss( + cls_score, gt_label, avg_factor=num_samples, **kwargs) + if self.cal_acc: + # compute accuracy + acc = self.compute_accuracy(cls_score, gt_label) + assert len(acc) == len(self.topk) + losses['accuracy'] = { + f'top-{k}': a + for k, a in zip(self.topk, acc) + } + losses['loss'] = loss + return losses + + def forward_train(self, cls_score, gt_label, **kwargs): + if isinstance(cls_score, tuple): + cls_score = cls_score[-1] + losses = self.loss(cls_score, gt_label, **kwargs) + return losses + + def pre_logits(self, x): + if isinstance(x, tuple): + x = x[-1] + + warnings.warn( + 'The input of ClsHead should be already logits. ' + 'Please modify the backbone if you want to get pre-logits feature.' + ) + return x + + def simple_test(self, cls_score, softmax=True, post_process=True): + """Inference without augmentation. + + Args: + cls_score (tuple[Tensor]): The input classification score logits. + Multi-stage inputs are acceptable but only the last stage will + be used to classify. The shape of every item should be + ``(num_samples, num_classes)``. + softmax (bool): Whether to softmax the classification score. + post_process (bool): Whether to do post processing the + inference results. It will convert the output to a list. + + Returns: + Tensor | list: The inference results. + + - If no post processing, the output is a tensor with shape + ``(num_samples, num_classes)``. + - If post processing, the output is a multi-dimentional list of + float and the dimensions are ``(num_samples, num_classes)``. + """ + if isinstance(cls_score, tuple): + cls_score = cls_score[-1] + + if softmax: + pred = ( + F.softmax(cls_score, dim=1) if cls_score is not None else None) + else: + pred = cls_score + + if post_process: + return self.post_process(pred) + else: + return pred + + def post_process(self, pred): + on_trace = is_tracing() + if torch.onnx.is_in_onnx_export() or on_trace: + return pred + pred = list(pred.detach().cpu().numpy()) + return pred diff --git a/openmmlab_test/mmclassification-0.24.1/mmcls/models/heads/conformer_head.py b/openmmlab_test/mmclassification-0.24.1/mmcls/models/heads/conformer_head.py new file mode 100644 index 00000000..c6557962 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/mmcls/models/heads/conformer_head.py @@ -0,0 +1,132 @@ +# Copyright (c) OpenMMLab. All rights reserved. +import torch.nn as nn +import torch.nn.functional as F +from mmcv.cnn.utils.weight_init import trunc_normal_ + +from ..builder import HEADS +from .cls_head import ClsHead + + +@HEADS.register_module() +class ConformerHead(ClsHead): + """Linear classifier head. + + Args: + num_classes (int): Number of categories excluding the background + category. + in_channels (int): Number of channels in the input feature map. + init_cfg (dict | optional): The extra init config of layers. + Defaults to use ``dict(type='Normal', layer='Linear', std=0.01)``. + """ + + def __init__( + self, + num_classes, + in_channels, # [conv_dim, trans_dim] + init_cfg=dict(type='Normal', layer='Linear', std=0.01), + *args, + **kwargs): + super(ConformerHead, self).__init__(init_cfg=None, *args, **kwargs) + + self.in_channels = in_channels + self.num_classes = num_classes + self.init_cfg = init_cfg + + if self.num_classes <= 0: + raise ValueError( + f'num_classes={num_classes} must be a positive integer') + + self.conv_cls_head = nn.Linear(self.in_channels[0], num_classes) + self.trans_cls_head = nn.Linear(self.in_channels[1], num_classes) + + def _init_weights(self, m): + if isinstance(m, nn.Linear): + trunc_normal_(m.weight, std=.02) + if isinstance(m, nn.Linear) and m.bias is not None: + nn.init.constant_(m.bias, 0) + + def init_weights(self): + super(ConformerHead, self).init_weights() + + if (isinstance(self.init_cfg, dict) + and self.init_cfg['type'] == 'Pretrained'): + # Suppress default init if use pretrained model. + return + else: + self.apply(self._init_weights) + + def pre_logits(self, x): + if isinstance(x, tuple): + x = x[-1] + return x + + def simple_test(self, x, softmax=True, post_process=True): + """Inference without augmentation. + + Args: + x (tuple[tuple[tensor, tensor]]): The input features. + Multi-stage inputs are acceptable but only the last stage will + be used to classify. Every item should be a tuple which + includes convluation features and transformer features. The + shape of them should be ``(num_samples, in_channels[0])`` and + ``(num_samples, in_channels[1])``. + softmax (bool): Whether to softmax the classification score. + post_process (bool): Whether to do post processing the + inference results. It will convert the output to a list. + + Returns: + Tensor | list: The inference results. + + - If no post processing, the output is a tensor with shape + ``(num_samples, num_classes)``. + - If post processing, the output is a multi-dimentional list of + float and the dimensions are ``(num_samples, num_classes)``. + """ + x = self.pre_logits(x) + # There are two outputs in the Conformer model + assert len(x) == 2 + + conv_cls_score = self.conv_cls_head(x[0]) + tran_cls_score = self.trans_cls_head(x[1]) + + if softmax: + cls_score = conv_cls_score + tran_cls_score + pred = ( + F.softmax(cls_score, dim=1) if cls_score is not None else None) + if post_process: + pred = self.post_process(pred) + else: + pred = [conv_cls_score, tran_cls_score] + if post_process: + pred = list(map(self.post_process, pred)) + return pred + + def forward_train(self, x, gt_label): + x = self.pre_logits(x) + assert isinstance(x, list) and len(x) == 2, \ + 'There should be two outputs in the Conformer model' + + conv_cls_score = self.conv_cls_head(x[0]) + tran_cls_score = self.trans_cls_head(x[1]) + + losses = self.loss([conv_cls_score, tran_cls_score], gt_label) + return losses + + def loss(self, cls_score, gt_label): + num_samples = len(cls_score[0]) + losses = dict() + # compute loss + loss = sum([ + self.compute_loss(score, gt_label, avg_factor=num_samples) / + len(cls_score) for score in cls_score + ]) + if self.cal_acc: + # compute accuracy + acc = self.compute_accuracy(cls_score[0] + cls_score[1], gt_label) + assert len(acc) == len(self.topk) + losses['accuracy'] = { + f'top-{k}': a + for k, a in zip(self.topk, acc) + } + losses['loss'] = loss + return losses diff --git a/openmmlab_test/mmclassification-0.24.1/mmcls/models/heads/deit_head.py b/openmmlab_test/mmclassification-0.24.1/mmcls/models/heads/deit_head.py new file mode 100644 index 00000000..1e9f22a6 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/mmcls/models/heads/deit_head.py @@ -0,0 +1,96 @@ +# Copyright (c) OpenMMLab. All rights reserved. +import torch.nn as nn +import torch.nn.functional as F + +from mmcls.utils import get_root_logger +from ..builder import HEADS +from .vision_transformer_head import VisionTransformerClsHead + + +@HEADS.register_module() +class DeiTClsHead(VisionTransformerClsHead): + """Distilled Vision Transformer classifier head. + + Comparing with the :class:`VisionTransformerClsHead`, this head adds an + extra linear layer to handle the dist token. The final classification score + is the average of both linear transformation results of ``cls_token`` and + ``dist_token``. + + Args: + num_classes (int): Number of categories excluding the background + category. + in_channels (int): Number of channels in the input feature map. + hidden_dim (int): Number of the dimensions for hidden layer. + Defaults to None, which means no extra hidden layer. + act_cfg (dict): The activation config. Only available during + pre-training. Defaults to ``dict(type='Tanh')``. + init_cfg (dict): The extra initialization configs. Defaults to + ``dict(type='Constant', layer='Linear', val=0)``. + """ + + def __init__(self, *args, **kwargs): + super(DeiTClsHead, self).__init__(*args, **kwargs) + if self.hidden_dim is None: + head_dist = nn.Linear(self.in_channels, self.num_classes) + else: + head_dist = nn.Linear(self.hidden_dim, self.num_classes) + self.layers.add_module('head_dist', head_dist) + + def pre_logits(self, x): + if isinstance(x, tuple): + x = x[-1] + _, cls_token, dist_token = x + + if self.hidden_dim is None: + return cls_token, dist_token + else: + cls_token = self.layers.act(self.layers.pre_logits(cls_token)) + dist_token = self.layers.act(self.layers.pre_logits(dist_token)) + return cls_token, dist_token + + def simple_test(self, x, softmax=True, post_process=True): + """Inference without augmentation. + + Args: + x (tuple[tuple[tensor, tensor, tensor]]): The input features. + Multi-stage inputs are acceptable but only the last stage will + be used to classify. Every item should be a tuple which + includes patch token, cls token and dist token. The cls token + and dist token will be used to classify and the shape of them + should be ``(num_samples, in_channels)``. + softmax (bool): Whether to softmax the classification score. + post_process (bool): Whether to do post processing the + inference results. It will convert the output to a list. + + Returns: + Tensor | list: The inference results. + + - If no post processing, the output is a tensor with shape + ``(num_samples, num_classes)``. + - If post processing, the output is a multi-dimentional list of + float and the dimensions are ``(num_samples, num_classes)``. + """ + cls_token, dist_token = self.pre_logits(x) + cls_score = (self.layers.head(cls_token) + + self.layers.head_dist(dist_token)) / 2 + + if softmax: + pred = F.softmax( + cls_score, dim=1) if cls_score is not None else None + else: + pred = cls_score + + if post_process: + return self.post_process(pred) + else: + return pred + + def forward_train(self, x, gt_label): + logger = get_root_logger() + logger.warning("MMClassification doesn't support to train the " + 'distilled version DeiT.') + cls_token, dist_token = self.pre_logits(x) + cls_score = (self.layers.head(cls_token) + + self.layers.head_dist(dist_token)) / 2 + losses = self.loss(cls_score, gt_label) + return losses diff --git a/openmmlab_test/mmclassification-0.24.1/mmcls/models/heads/efficientformer_head.py b/openmmlab_test/mmclassification-0.24.1/mmcls/models/heads/efficientformer_head.py new file mode 100644 index 00000000..3127f12e --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/mmcls/models/heads/efficientformer_head.py @@ -0,0 +1,96 @@ +# Copyright (c) OpenMMLab. All rights reserved. +import torch.nn as nn +import torch.nn.functional as F + +from ..builder import HEADS +from .cls_head import ClsHead + + +@HEADS.register_module() +class EfficientFormerClsHead(ClsHead): + """EfficientFormer classifier head. + + Args: + num_classes (int): Number of categories excluding the background + category. + in_channels (int): Number of channels in the input feature map. + distillation (bool): Whether use a additional distilled head. + Defaults to True. + init_cfg (dict): The extra initialization configs. Defaults to + ``dict(type='Normal', layer='Linear', std=0.01)``. + """ + + def __init__(self, + num_classes, + in_channels, + distillation=True, + init_cfg=dict(type='Normal', layer='Linear', std=0.01), + *args, + **kwargs): + super(EfficientFormerClsHead, self).__init__( + init_cfg=init_cfg, *args, **kwargs) + self.in_channels = in_channels + self.num_classes = num_classes + self.dist = distillation + + if self.num_classes <= 0: + raise ValueError( + f'num_classes={num_classes} must be a positive integer') + + self.head = nn.Linear(self.in_channels, self.num_classes) + if self.dist: + self.dist_head = nn.Linear(self.in_channels, self.num_classes) + + def pre_logits(self, x): + if isinstance(x, tuple): + x = x[-1] + return x + + def simple_test(self, x, softmax=True, post_process=True): + """Inference without augmentation. + + Args: + x (tuple[tuple[tensor, tensor]]): The input features. + Multi-stage inputs are acceptable but only the last stage will + be used to classify. Every item should be a tuple which + includes patch token and cls token. The cls token will be used + to classify and the shape of it should be + ``(num_samples, in_channels)``. + softmax (bool): Whether to softmax the classification score. + post_process (bool): Whether to do post processing the + inference results. It will convert the output to a list. + + Returns: + Tensor | list: The inference results. + + - If no post processing, the output is a tensor with shape + ``(num_samples, num_classes)``. + - If post processing, the output is a multi-dimentional list of + float and the dimensions are ``(num_samples, num_classes)``. + """ + x = self.pre_logits(x) + cls_score = self.head(x) + if self.dist: + cls_score = (cls_score + self.dist_head(x)) / 2 + + if softmax: + pred = ( + F.softmax(cls_score, dim=1) if cls_score is not None else None) + else: + pred = cls_score + + if post_process: + return self.post_process(pred) + else: + return pred + + def forward_train(self, x, gt_label, **kwargs): + if self.dist: + raise NotImplementedError( + "MMClassification doesn't support to train" + ' the distilled version EfficientFormer.') + else: + x = self.pre_logits(x) + cls_score = self.head(x) + losses = self.loss(cls_score, gt_label, **kwargs) + return losses diff --git a/openmmlab_test/mmclassification-0.24.1/mmcls/models/heads/linear_head.py b/openmmlab_test/mmclassification-0.24.1/mmcls/models/heads/linear_head.py new file mode 100644 index 00000000..113b41b6 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/mmcls/models/heads/linear_head.py @@ -0,0 +1,81 @@ +# Copyright (c) OpenMMLab. All rights reserved. +import torch.nn as nn +import torch.nn.functional as F + +from ..builder import HEADS +from .cls_head import ClsHead + + +@HEADS.register_module() +class LinearClsHead(ClsHead): + """Linear classifier head. + + Args: + num_classes (int): Number of categories excluding the background + category. + in_channels (int): Number of channels in the input feature map. + init_cfg (dict | optional): The extra init config of layers. + Defaults to use dict(type='Normal', layer='Linear', std=0.01). + """ + + def __init__(self, + num_classes, + in_channels, + init_cfg=dict(type='Normal', layer='Linear', std=0.01), + *args, + **kwargs): + super(LinearClsHead, self).__init__(init_cfg=init_cfg, *args, **kwargs) + + self.in_channels = in_channels + self.num_classes = num_classes + + if self.num_classes <= 0: + raise ValueError( + f'num_classes={num_classes} must be a positive integer') + + self.fc = nn.Linear(self.in_channels, self.num_classes) + + def pre_logits(self, x): + if isinstance(x, tuple): + x = x[-1] + return x + + def simple_test(self, x, softmax=True, post_process=True): + """Inference without augmentation. + + Args: + x (tuple[Tensor]): The input features. + Multi-stage inputs are acceptable but only the last stage will + be used to classify. The shape of every item should be + ``(num_samples, in_channels)``. + softmax (bool): Whether to softmax the classification score. + post_process (bool): Whether to do post processing the + inference results. It will convert the output to a list. + + Returns: + Tensor | list: The inference results. + + - If no post processing, the output is a tensor with shape + ``(num_samples, num_classes)``. + - If post processing, the output is a multi-dimentional list of + float and the dimensions are ``(num_samples, num_classes)``. + """ + x = self.pre_logits(x) + cls_score = self.fc(x) + + if softmax: + pred = ( + F.softmax(cls_score, dim=1) if cls_score is not None else None) + else: + pred = cls_score + + if post_process: + return self.post_process(pred) + else: + return pred + + def forward_train(self, x, gt_label, **kwargs): + x = self.pre_logits(x) + cls_score = self.fc(x) + losses = self.loss(cls_score, gt_label, **kwargs) + return losses diff --git a/openmmlab_test/mmclassification-0.24.1/mmcls/models/heads/multi_label_csra_head.py b/openmmlab_test/mmclassification-0.24.1/mmcls/models/heads/multi_label_csra_head.py new file mode 100644 index 00000000..f28ba42b --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/mmcls/models/heads/multi_label_csra_head.py @@ -0,0 +1,121 @@ +# Copyright (c) OpenMMLab. All rights reserved. +# Modified from https://github.com/Kevinz-code/CSRA +import torch +import torch.nn as nn +from mmcv.runner import BaseModule, ModuleList + +from ..builder import HEADS +from .multi_label_head import MultiLabelClsHead + + +@HEADS.register_module() +class CSRAClsHead(MultiLabelClsHead): + """Class-specific residual attention classifier head. + + Residual Attention: A Simple but Effective Method for Multi-Label + Recognition (ICCV 2021) + Please refer to the `paper `__ for + details. + + Args: + num_classes (int): Number of categories. + in_channels (int): Number of channels in the input feature map. + num_heads (int): Number of residual at tensor heads. + loss (dict): Config of classification loss. + lam (float): Lambda that combines global average and max pooling + scores. + init_cfg (dict | optional): The extra init config of layers. + Defaults to use dict(type='Normal', layer='Linear', std=0.01). + """ + temperature_settings = { # softmax temperature settings + 1: [1], + 2: [1, 99], + 4: [1, 2, 4, 99], + 6: [1, 2, 3, 4, 5, 99], + 8: [1, 2, 3, 4, 5, 6, 7, 99] + } + + def __init__(self, + num_classes, + in_channels, + num_heads, + lam, + loss=dict( + type='CrossEntropyLoss', + use_sigmoid=True, + reduction='mean', + loss_weight=1.0), + init_cfg=dict(type='Normal', layer='Linear', std=0.01), + *args, + **kwargs): + assert num_heads in self.temperature_settings.keys( + ), 'The num of heads is not in temperature setting.' + assert lam > 0, 'Lambda should be between 0 and 1.' + super(CSRAClsHead, self).__init__( + init_cfg=init_cfg, loss=loss, *args, **kwargs) + self.temp_list = self.temperature_settings[num_heads] + self.csra_heads = ModuleList([ + CSRAModule(num_classes, in_channels, self.temp_list[i], lam) + for i in range(num_heads) + ]) + + def pre_logits(self, x): + if isinstance(x, tuple): + x = x[-1] + return x + + def simple_test(self, x, post_process=True, **kwargs): + logit = 0. + x = self.pre_logits(x) + for head in self.csra_heads: + logit += head(x) + if post_process: + return self.post_process(logit) + else: + return logit + + def forward_train(self, x, gt_label, **kwargs): + logit = 0. + x = self.pre_logits(x) + for head in self.csra_heads: + logit += head(x) + gt_label = gt_label.type_as(logit) + _gt_label = torch.abs(gt_label) + losses = self.loss(logit, _gt_label, **kwargs) + return losses + + +class CSRAModule(BaseModule): + """Basic module of CSRA with different temperature. + + Args: + num_classes (int): Number of categories. + in_channels (int): Number of channels in the input feature map. + T (int): Temperature setting. + lam (float): Lambda that combines global average and max pooling + scores. + init_cfg (dict | optional): The extra init config of layers. + Defaults to use dict(type='Normal', layer='Linear', std=0.01). + """ + + def __init__(self, num_classes, in_channels, T, lam, init_cfg=None): + + super(CSRAModule, self).__init__(init_cfg=init_cfg) + self.T = T # temperature + self.lam = lam # Lambda + self.head = nn.Conv2d(in_channels, num_classes, 1, bias=False) + self.softmax = nn.Softmax(dim=2) + + def forward(self, x): + score = self.head(x) / torch.norm( + self.head.weight, dim=1, keepdim=True).transpose(0, 1) + score = score.flatten(2) + base_logit = torch.mean(score, dim=2) + + if self.T == 99: # max-pooling + att_logit = torch.max(score, dim=2)[0] + else: + score_soft = self.softmax(score * self.T) + att_logit = torch.sum(score * score_soft, dim=2) + + return base_logit + self.lam * att_logit diff --git a/openmmlab_test/mmclassification-0.24.1/mmcls/models/heads/multi_label_head.py b/openmmlab_test/mmclassification-0.24.1/mmcls/models/heads/multi_label_head.py new file mode 100644 index 00000000..e11a7733 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/mmcls/models/heads/multi_label_head.py @@ -0,0 +1,99 @@ +# Copyright (c) OpenMMLab. All rights reserved. +import torch + +from ..builder import HEADS, build_loss +from ..utils import is_tracing +from .base_head import BaseHead + + +@HEADS.register_module() +class MultiLabelClsHead(BaseHead): + """Classification head for multilabel task. + + Args: + loss (dict): Config of classification loss. + """ + + def __init__(self, + loss=dict( + type='CrossEntropyLoss', + use_sigmoid=True, + reduction='mean', + loss_weight=1.0), + init_cfg=None): + super(MultiLabelClsHead, self).__init__(init_cfg=init_cfg) + + assert isinstance(loss, dict) + + self.compute_loss = build_loss(loss) + + def loss(self, cls_score, gt_label): + gt_label = gt_label.type_as(cls_score) + num_samples = len(cls_score) + losses = dict() + + # map difficult examples to positive ones + _gt_label = torch.abs(gt_label) + # compute loss + loss = self.compute_loss(cls_score, _gt_label, avg_factor=num_samples) + losses['loss'] = loss + return losses + + def forward_train(self, cls_score, gt_label, **kwargs): + if isinstance(cls_score, tuple): + cls_score = cls_score[-1] + gt_label = gt_label.type_as(cls_score) + losses = self.loss(cls_score, gt_label, **kwargs) + return losses + + def pre_logits(self, x): + if isinstance(x, tuple): + x = x[-1] + + from mmcls.utils import get_root_logger + logger = get_root_logger() + logger.warning( + 'The input of MultiLabelClsHead should be already logits. ' + 'Please modify the backbone if you want to get pre-logits feature.' + ) + return x + + def simple_test(self, x, sigmoid=True, post_process=True): + """Inference without augmentation. + + Args: + cls_score (tuple[Tensor]): The input classification score logits. + Multi-stage inputs are acceptable but only the last stage will + be used to classify. The shape of every item should be + ``(num_samples, num_classes)``. + sigmoid (bool): Whether to sigmoid the classification score. + post_process (bool): Whether to do post processing the + inference results. It will convert the output to a list. + + Returns: + Tensor | list: The inference results. + + - If no post processing, the output is a tensor with shape + ``(num_samples, num_classes)``. + - If post processing, the output is a multi-dimentional list of + float and the dimensions are ``(num_samples, num_classes)``. + """ + if isinstance(x, tuple): + x = x[-1] + + if sigmoid: + pred = torch.sigmoid(x) if x is not None else None + else: + pred = x + + if post_process: + return self.post_process(pred) + else: + return pred + + def post_process(self, pred): + on_trace = is_tracing() + if torch.onnx.is_in_onnx_export() or on_trace: + return pred + pred = list(pred.detach().cpu().numpy()) + return pred diff --git a/openmmlab_test/mmclassification-0.24.1/mmcls/models/heads/multi_label_linear_head.py b/openmmlab_test/mmclassification-0.24.1/mmcls/models/heads/multi_label_linear_head.py new file mode 100644 index 00000000..0e9d0684 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/mmcls/models/heads/multi_label_linear_head.py @@ -0,0 +1,85 @@ +# Copyright (c) OpenMMLab. All rights reserved. +import torch +import torch.nn as nn + +from ..builder import HEADS +from .multi_label_head import MultiLabelClsHead + + +@HEADS.register_module() +class MultiLabelLinearClsHead(MultiLabelClsHead): + """Linear classification head for multilabel task. + + Args: + num_classes (int): Number of categories. + in_channels (int): Number of channels in the input feature map. + loss (dict): Config of classification loss. + init_cfg (dict | optional): The extra init config of layers. + Defaults to use dict(type='Normal', layer='Linear', std=0.01). + """ + + def __init__(self, + num_classes, + in_channels, + loss=dict( + type='CrossEntropyLoss', + use_sigmoid=True, + reduction='mean', + loss_weight=1.0), + init_cfg=dict(type='Normal', layer='Linear', std=0.01)): + super(MultiLabelLinearClsHead, self).__init__( + loss=loss, init_cfg=init_cfg) + + if num_classes <= 0: + raise ValueError( + f'num_classes={num_classes} must be a positive integer') + + self.in_channels = in_channels + self.num_classes = num_classes + + self.fc = nn.Linear(self.in_channels, self.num_classes) + + def pre_logits(self, x): + if isinstance(x, tuple): + x = x[-1] + return x + + def forward_train(self, x, gt_label, **kwargs): + x = self.pre_logits(x) + gt_label = gt_label.type_as(x) + cls_score = self.fc(x) + losses = self.loss(cls_score, gt_label, **kwargs) + return losses + + def simple_test(self, x, sigmoid=True, post_process=True): + """Inference without augmentation. + + Args: + x (tuple[Tensor]): The input features. + Multi-stage inputs are acceptable but only the last stage will + be used to classify. The shape of every item should be + ``(num_samples, in_channels)``. + sigmoid (bool): Whether to sigmoid the classification score. + post_process (bool): Whether to do post processing the + inference results. It will convert the output to a list. + + Returns: + Tensor | list: The inference results. + + - If no post processing, the output is a tensor with shape + ``(num_samples, num_classes)``. + - If post processing, the output is a multi-dimentional list of + float and the dimensions are ``(num_samples, num_classes)``. + """ + x = self.pre_logits(x) + cls_score = self.fc(x) + + if sigmoid: + pred = torch.sigmoid(cls_score) if cls_score is not None else None + else: + pred = cls_score + + if post_process: + return self.post_process(pred) + else: + return pred diff --git a/openmmlab_test/mmclassification-0.24.1/mmcls/models/heads/stacked_head.py b/openmmlab_test/mmclassification-0.24.1/mmcls/models/heads/stacked_head.py new file mode 100644 index 00000000..bbb0dc24 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/mmcls/models/heads/stacked_head.py @@ -0,0 +1,163 @@ +# Copyright (c) OpenMMLab. All rights reserved. +from typing import Dict, Sequence + +import torch.nn as nn +import torch.nn.functional as F +from mmcv.cnn import build_activation_layer, build_norm_layer +from mmcv.runner import BaseModule, ModuleList + +from ..builder import HEADS +from .cls_head import ClsHead + + +class LinearBlock(BaseModule): + + def __init__(self, + in_channels, + out_channels, + dropout_rate=0., + norm_cfg=None, + act_cfg=None, + init_cfg=None): + super().__init__(init_cfg=init_cfg) + self.fc = nn.Linear(in_channels, out_channels) + + self.norm = None + self.act = None + self.dropout = None + + if norm_cfg is not None: + self.norm = build_norm_layer(norm_cfg, out_channels)[1] + if act_cfg is not None: + self.act = build_activation_layer(act_cfg) + if dropout_rate > 0: + self.dropout = nn.Dropout(p=dropout_rate) + + def forward(self, x): + x = self.fc(x) + if self.norm is not None: + x = self.norm(x) + if self.act is not None: + x = self.act(x) + if self.dropout is not None: + x = self.dropout(x) + return x + + +@HEADS.register_module() +class StackedLinearClsHead(ClsHead): + """Classifier head with several hidden fc layer and a output fc layer. + + Args: + num_classes (int): Number of categories. + in_channels (int): Number of channels in the input feature map. + mid_channels (Sequence): Number of channels in the hidden fc layers. + dropout_rate (float): Dropout rate after each hidden fc layer, + except the last layer. Defaults to 0. + norm_cfg (dict, optional): Config dict of normalization layer after + each hidden fc layer, except the last layer. Defaults to None. + act_cfg (dict, optional): Config dict of activation function after each + hidden layer, except the last layer. Defaults to use "ReLU". + """ + + def __init__(self, + num_classes: int, + in_channels: int, + mid_channels: Sequence, + dropout_rate: float = 0., + norm_cfg: Dict = None, + act_cfg: Dict = dict(type='ReLU'), + **kwargs): + super(StackedLinearClsHead, self).__init__(**kwargs) + assert num_classes > 0, \ + f'`num_classes` of StackedLinearClsHead must be a positive ' \ + f'integer, got {num_classes} instead.' + self.num_classes = num_classes + + self.in_channels = in_channels + + assert isinstance(mid_channels, Sequence), \ + f'`mid_channels` of StackedLinearClsHead should be a sequence, ' \ + f'instead of {type(mid_channels)}' + self.mid_channels = mid_channels + + self.dropout_rate = dropout_rate + self.norm_cfg = norm_cfg + self.act_cfg = act_cfg + + self._init_layers() + + def _init_layers(self): + self.layers = ModuleList() + in_channels = self.in_channels + for hidden_channels in self.mid_channels: + self.layers.append( + LinearBlock( + in_channels, + hidden_channels, + dropout_rate=self.dropout_rate, + norm_cfg=self.norm_cfg, + act_cfg=self.act_cfg)) + in_channels = hidden_channels + + self.layers.append( + LinearBlock( + self.mid_channels[-1], + self.num_classes, + dropout_rate=0., + norm_cfg=None, + act_cfg=None)) + + def init_weights(self): + self.layers.init_weights() + + def pre_logits(self, x): + if isinstance(x, tuple): + x = x[-1] + for layer in self.layers[:-1]: + x = layer(x) + return x + + @property + def fc(self): + return self.layers[-1] + + def simple_test(self, x, softmax=True, post_process=True): + """Inference without augmentation. + + Args: + x (tuple[Tensor]): The input features. + Multi-stage inputs are acceptable but only the last stage will + be used to classify. The shape of every item should be + ``(num_samples, in_channels)``. + softmax (bool): Whether to softmax the classification score. + post_process (bool): Whether to do post processing the + inference results. It will convert the output to a list. + + Returns: + Tensor | list: The inference results. + + - If no post processing, the output is a tensor with shape + ``(num_samples, num_classes)``. + - If post processing, the output is a multi-dimentional list of + float and the dimensions are ``(num_samples, num_classes)``. + """ + x = self.pre_logits(x) + cls_score = self.fc(x) + + if softmax: + pred = ( + F.softmax(cls_score, dim=1) if cls_score is not None else None) + else: + pred = cls_score + + if post_process: + return self.post_process(pred) + else: + return pred + + def forward_train(self, x, gt_label, **kwargs): + x = self.pre_logits(x) + cls_score = self.fc(x) + losses = self.loss(cls_score, gt_label, **kwargs) + return losses diff --git a/openmmlab_test/mmclassification-0.24.1/mmcls/models/heads/vision_transformer_head.py b/openmmlab_test/mmclassification-0.24.1/mmcls/models/heads/vision_transformer_head.py new file mode 100644 index 00000000..d0586cb9 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/mmcls/models/heads/vision_transformer_head.py @@ -0,0 +1,123 @@ +# Copyright (c) OpenMMLab. All rights reserved. +import math +from collections import OrderedDict + +import torch.nn as nn +import torch.nn.functional as F +from mmcv.cnn import build_activation_layer +from mmcv.cnn.utils.weight_init import trunc_normal_ +from mmcv.runner import Sequential + +from ..builder import HEADS +from .cls_head import ClsHead + + +@HEADS.register_module() +class VisionTransformerClsHead(ClsHead): + """Vision Transformer classifier head. + + Args: + num_classes (int): Number of categories excluding the background + category. + in_channels (int): Number of channels in the input feature map. + hidden_dim (int): Number of the dimensions for hidden layer. + Defaults to None, which means no extra hidden layer. + act_cfg (dict): The activation config. Only available during + pre-training. Defaults to ``dict(type='Tanh')``. + init_cfg (dict): The extra initialization configs. Defaults to + ``dict(type='Constant', layer='Linear', val=0)``. + """ + + def __init__(self, + num_classes, + in_channels, + hidden_dim=None, + act_cfg=dict(type='Tanh'), + init_cfg=dict(type='Constant', layer='Linear', val=0), + *args, + **kwargs): + super(VisionTransformerClsHead, self).__init__( + init_cfg=init_cfg, *args, **kwargs) + self.in_channels = in_channels + self.num_classes = num_classes + self.hidden_dim = hidden_dim + self.act_cfg = act_cfg + + if self.num_classes <= 0: + raise ValueError( + f'num_classes={num_classes} must be a positive integer') + + self._init_layers() + + def _init_layers(self): + if self.hidden_dim is None: + layers = [('head', nn.Linear(self.in_channels, self.num_classes))] + else: + layers = [ + ('pre_logits', nn.Linear(self.in_channels, self.hidden_dim)), + ('act', build_activation_layer(self.act_cfg)), + ('head', nn.Linear(self.hidden_dim, self.num_classes)), + ] + self.layers = Sequential(OrderedDict(layers)) + + def init_weights(self): + super(VisionTransformerClsHead, self).init_weights() + # Modified from ClassyVision + if hasattr(self.layers, 'pre_logits'): + # Lecun norm + trunc_normal_( + self.layers.pre_logits.weight, + std=math.sqrt(1 / self.layers.pre_logits.in_features)) + nn.init.zeros_(self.layers.pre_logits.bias) + + def pre_logits(self, x): + if isinstance(x, tuple): + x = x[-1] + _, cls_token = x + if self.hidden_dim is None: + return cls_token + else: + x = self.layers.pre_logits(cls_token) + return self.layers.act(x) + + def simple_test(self, x, softmax=True, post_process=True): + """Inference without augmentation. + + Args: + x (tuple[tuple[tensor, tensor]]): The input features. + Multi-stage inputs are acceptable but only the last stage will + be used to classify. Every item should be a tuple which + includes patch token and cls token. The cls token will be used + to classify and the shape of it should be + ``(num_samples, in_channels)``. + softmax (bool): Whether to softmax the classification score. + post_process (bool): Whether to do post processing the + inference results. It will convert the output to a list. + + Returns: + Tensor | list: The inference results. + + - If no post processing, the output is a tensor with shape + ``(num_samples, num_classes)``. + - If post processing, the output is a multi-dimentional list of + float and the dimensions are ``(num_samples, num_classes)``. + """ + x = self.pre_logits(x) + cls_score = self.layers.head(x) + + if softmax: + pred = ( + F.softmax(cls_score, dim=1) if cls_score is not None else None) + else: + pred = cls_score + + if post_process: + return self.post_process(pred) + else: + return pred + + def forward_train(self, x, gt_label, **kwargs): + x = self.pre_logits(x) + cls_score = self.layers.head(x) + losses = self.loss(cls_score, gt_label, **kwargs) + return losses diff --git a/openmmlab_test/mmclassification-0.24.1/mmcls/models/losses/__init__.py b/openmmlab_test/mmclassification-0.24.1/mmcls/models/losses/__init__.py new file mode 100644 index 00000000..9c900861 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/mmcls/models/losses/__init__.py @@ -0,0 +1,17 @@ +# Copyright (c) OpenMMLab. All rights reserved. +from .accuracy import Accuracy, accuracy +from .asymmetric_loss import AsymmetricLoss, asymmetric_loss +from .cross_entropy_loss import (CrossEntropyLoss, binary_cross_entropy, + cross_entropy) +from .focal_loss import FocalLoss, sigmoid_focal_loss +from .label_smooth_loss import LabelSmoothLoss +from .seesaw_loss import SeesawLoss +from .utils import (convert_to_one_hot, reduce_loss, weight_reduce_loss, + weighted_loss) + +__all__ = [ + 'accuracy', 'Accuracy', 'asymmetric_loss', 'AsymmetricLoss', + 'cross_entropy', 'binary_cross_entropy', 'CrossEntropyLoss', 'reduce_loss', + 'weight_reduce_loss', 'LabelSmoothLoss', 'weighted_loss', 'FocalLoss', + 'sigmoid_focal_loss', 'convert_to_one_hot', 'SeesawLoss' +] diff --git a/openmmlab_test/mmclassification-0.24.1/mmcls/models/losses/accuracy.py b/openmmlab_test/mmclassification-0.24.1/mmcls/models/losses/accuracy.py new file mode 100644 index 00000000..1b142bc7 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/mmcls/models/losses/accuracy.py @@ -0,0 +1,143 @@ +# Copyright (c) OpenMMLab. All rights reserved. +from numbers import Number + +import numpy as np +import torch +import torch.nn as nn + + +def accuracy_numpy(pred, target, topk=(1, ), thrs=0.): + if isinstance(thrs, Number): + thrs = (thrs, ) + res_single = True + elif isinstance(thrs, tuple): + res_single = False + else: + raise TypeError( + f'thrs should be a number or tuple, but got {type(thrs)}.') + + res = [] + maxk = max(topk) + num = pred.shape[0] + + static_inds = np.indices((num, maxk))[0] + pred_label = pred.argpartition(-maxk, axis=1)[:, -maxk:] + pred_score = pred[static_inds, pred_label] + + sort_inds = np.argsort(pred_score, axis=1)[:, ::-1] + pred_label = pred_label[static_inds, sort_inds] + pred_score = pred_score[static_inds, sort_inds] + + for k in topk: + correct_k = pred_label[:, :k] == target.reshape(-1, 1) + res_thr = [] + for thr in thrs: + # Only prediction values larger than thr are counted as correct + _correct_k = correct_k & (pred_score[:, :k] > thr) + _correct_k = np.logical_or.reduce(_correct_k, axis=1) + res_thr.append((_correct_k.sum() * 100. / num)) + if res_single: + res.append(res_thr[0]) + else: + res.append(res_thr) + return res + + +def accuracy_torch(pred, target, topk=(1, ), thrs=0.): + if isinstance(thrs, Number): + thrs = (thrs, ) + res_single = True + elif isinstance(thrs, tuple): + res_single = False + else: + raise TypeError( + f'thrs should be a number or tuple, but got {type(thrs)}.') + + res = [] + maxk = max(topk) + num = pred.size(0) + pred = pred.float() + pred_score, pred_label = pred.topk(maxk, dim=1) + pred_label = pred_label.t() + correct = pred_label.eq(target.view(1, -1).expand_as(pred_label)) + for k in topk: + res_thr = [] + for thr in thrs: + # Only prediction values larger than thr are counted as correct + _correct = correct & (pred_score.t() > thr) + correct_k = _correct[:k].reshape(-1).float().sum(0, keepdim=True) + res_thr.append((correct_k.mul_(100. / num))) + if res_single: + res.append(res_thr[0]) + else: + res.append(res_thr) + return res + + +def accuracy(pred, target, topk=1, thrs=0.): + """Calculate accuracy according to the prediction and target. + + Args: + pred (torch.Tensor | np.array): The model prediction. + target (torch.Tensor | np.array): The target of each prediction + topk (int | tuple[int]): If the predictions in ``topk`` + matches the target, the predictions will be regarded as + correct ones. Defaults to 1. + thrs (Number | tuple[Number], optional): Predictions with scores under + the thresholds are considered negative. Default to 0. + + Returns: + torch.Tensor | list[torch.Tensor] | list[list[torch.Tensor]]: Accuracy + - torch.Tensor: If both ``topk`` and ``thrs`` is a single value. + - list[torch.Tensor]: If one of ``topk`` or ``thrs`` is a tuple. + - list[list[torch.Tensor]]: If both ``topk`` and ``thrs`` is a \ + tuple. And the first dim is ``topk``, the second dim is ``thrs``. + """ + assert isinstance(topk, (int, tuple)) + if isinstance(topk, int): + topk = (topk, ) + return_single = True + else: + return_single = False + + assert isinstance(pred, (torch.Tensor, np.ndarray)), \ + f'The pred should be torch.Tensor or np.ndarray ' \ + f'instead of {type(pred)}.' + assert isinstance(target, (torch.Tensor, np.ndarray)), \ + f'The target should be torch.Tensor or np.ndarray ' \ + f'instead of {type(target)}.' + + # torch version is faster in most situations. + to_tensor = (lambda x: torch.from_numpy(x) + if isinstance(x, np.ndarray) else x) + pred = to_tensor(pred) + target = to_tensor(target) + + res = accuracy_torch(pred, target, topk, thrs) + + return res[0] if return_single else res + + +class Accuracy(nn.Module): + + def __init__(self, topk=(1, )): + """Module to calculate the accuracy. + + Args: + topk (tuple): The criterion used to calculate the + accuracy. Defaults to (1,). + """ + super().__init__() + self.topk = topk + + def forward(self, pred, target): + """Forward function to calculate accuracy. + + Args: + pred (torch.Tensor): Prediction of models. + target (torch.Tensor): Target for each prediction. + + Returns: + list[torch.Tensor]: The accuracies under different topk criterions. + """ + return accuracy(pred, target, self.topk) diff --git a/openmmlab_test/mmclassification-0.24.1/mmcls/models/losses/asymmetric_loss.py b/openmmlab_test/mmclassification-0.24.1/mmcls/models/losses/asymmetric_loss.py new file mode 100644 index 00000000..1c3b5744 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/mmcls/models/losses/asymmetric_loss.py @@ -0,0 +1,149 @@ +# Copyright (c) OpenMMLab. All rights reserved. +import torch +import torch.nn as nn + +from ..builder import LOSSES +from .utils import convert_to_one_hot, weight_reduce_loss + + +def asymmetric_loss(pred, + target, + weight=None, + gamma_pos=1.0, + gamma_neg=4.0, + clip=0.05, + reduction='mean', + avg_factor=None, + use_sigmoid=True, + eps=1e-8): + r"""asymmetric loss. + + Please refer to the `paper `__ for + details. + + Args: + pred (torch.Tensor): The prediction with shape (N, \*). + target (torch.Tensor): The ground truth label of the prediction with + shape (N, \*). + weight (torch.Tensor, optional): Sample-wise loss weight with shape + (N, ). Defaults to None. + gamma_pos (float): positive focusing parameter. Defaults to 0.0. + gamma_neg (float): Negative focusing parameter. We usually set + gamma_neg > gamma_pos. Defaults to 4.0. + clip (float, optional): Probability margin. Defaults to 0.05. + reduction (str): The method used to reduce the loss. + Options are "none", "mean" and "sum". If reduction is 'none' , loss + is same shape as pred and label. Defaults to 'mean'. + avg_factor (int, optional): Average factor that is used to average + the loss. Defaults to None. + use_sigmoid (bool): Whether the prediction uses sigmoid instead + of softmax. Defaults to True. + eps (float): The minimum value of the argument of logarithm. Defaults + to 1e-8. + + Returns: + torch.Tensor: Loss. + """ + assert pred.shape == \ + target.shape, 'pred and target should be in the same shape.' + + if use_sigmoid: + pred_sigmoid = pred.sigmoid() + else: + pred_sigmoid = nn.functional.softmax(pred, dim=-1) + + target = target.type_as(pred) + + if clip and clip > 0: + pt = (1 - pred_sigmoid + + clip).clamp(max=1) * (1 - target) + pred_sigmoid * target + else: + pt = (1 - pred_sigmoid) * (1 - target) + pred_sigmoid * target + asymmetric_weight = (1 - pt).pow(gamma_pos * target + gamma_neg * + (1 - target)) + loss = -torch.log(pt.clamp(min=eps)) * asymmetric_weight + if weight is not None: + assert weight.dim() == 1 + weight = weight.float() + if pred.dim() > 1: + weight = weight.reshape(-1, 1) + loss = weight_reduce_loss(loss, weight, reduction, avg_factor) + return loss + + +@LOSSES.register_module() +class AsymmetricLoss(nn.Module): + """asymmetric loss. + + Args: + gamma_pos (float): positive focusing parameter. + Defaults to 0.0. + gamma_neg (float): Negative focusing parameter. We + usually set gamma_neg > gamma_pos. Defaults to 4.0. + clip (float, optional): Probability margin. Defaults to 0.05. + reduction (str): The method used to reduce the loss into + a scalar. + loss_weight (float): Weight of loss. Defaults to 1.0. + use_sigmoid (bool): Whether the prediction uses sigmoid instead + of softmax. Defaults to True. + eps (float): The minimum value of the argument of logarithm. Defaults + to 1e-8. + """ + + def __init__(self, + gamma_pos=0.0, + gamma_neg=4.0, + clip=0.05, + reduction='mean', + loss_weight=1.0, + use_sigmoid=True, + eps=1e-8): + super(AsymmetricLoss, self).__init__() + self.gamma_pos = gamma_pos + self.gamma_neg = gamma_neg + self.clip = clip + self.reduction = reduction + self.loss_weight = loss_weight + self.use_sigmoid = use_sigmoid + self.eps = eps + + def forward(self, + pred, + target, + weight=None, + avg_factor=None, + reduction_override=None): + r"""asymmetric loss. + + Args: + pred (torch.Tensor): The prediction with shape (N, \*). + target (torch.Tensor): The ground truth label of the prediction + with shape (N, \*), N or (N,1). + weight (torch.Tensor, optional): Sample-wise loss weight with shape + (N, \*). Defaults to None. + avg_factor (int, optional): Average factor that is used to average + the loss. Defaults to None. + reduction_override (str, optional): The method used to reduce the + loss into a scalar. Options are "none", "mean" and "sum". + Defaults to None. + + Returns: + torch.Tensor: Loss. + """ + assert reduction_override in (None, 'none', 'mean', 'sum') + reduction = ( + reduction_override if reduction_override else self.reduction) + if target.dim() == 1 or (target.dim() == 2 and target.shape[1] == 1): + target = convert_to_one_hot(target.view(-1, 1), pred.shape[-1]) + loss_cls = self.loss_weight * asymmetric_loss( + pred, + target, + weight, + gamma_pos=self.gamma_pos, + gamma_neg=self.gamma_neg, + clip=self.clip, + reduction=reduction, + avg_factor=avg_factor, + use_sigmoid=self.use_sigmoid, + eps=self.eps) + return loss_cls diff --git a/openmmlab_test/mmclassification-0.24.1/mmcls/models/losses/cross_entropy_loss.py b/openmmlab_test/mmclassification-0.24.1/mmcls/models/losses/cross_entropy_loss.py new file mode 100644 index 00000000..0b92212a --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/mmcls/models/losses/cross_entropy_loss.py @@ -0,0 +1,209 @@ +# Copyright (c) OpenMMLab. All rights reserved. +import torch.nn as nn +import torch.nn.functional as F + +from ..builder import LOSSES +from .utils import weight_reduce_loss + + +def cross_entropy(pred, + label, + weight=None, + reduction='mean', + avg_factor=None, + class_weight=None): + """Calculate the CrossEntropy loss. + + Args: + pred (torch.Tensor): The prediction with shape (N, C), C is the number + of classes. + label (torch.Tensor): The gt label of the prediction. + weight (torch.Tensor, optional): Sample-wise loss weight. + reduction (str): The method used to reduce the loss. + avg_factor (int, optional): Average factor that is used to average + the loss. Defaults to None. + class_weight (torch.Tensor, optional): The weight for each class with + shape (C), C is the number of classes. Default None. + + Returns: + torch.Tensor: The calculated loss + """ + # element-wise losses + loss = F.cross_entropy(pred, label, weight=class_weight, reduction='none') + + # apply weights and do the reduction + if weight is not None: + weight = weight.float() + loss = weight_reduce_loss( + loss, weight=weight, reduction=reduction, avg_factor=avg_factor) + + return loss + + +def soft_cross_entropy(pred, + label, + weight=None, + reduction='mean', + class_weight=None, + avg_factor=None): + """Calculate the Soft CrossEntropy loss. The label can be float. + + Args: + pred (torch.Tensor): The prediction with shape (N, C), C is the number + of classes. + label (torch.Tensor): The gt label of the prediction with shape (N, C). + When using "mixup", the label can be float. + weight (torch.Tensor, optional): Sample-wise loss weight. + reduction (str): The method used to reduce the loss. + avg_factor (int, optional): Average factor that is used to average + the loss. Defaults to None. + class_weight (torch.Tensor, optional): The weight for each class with + shape (C), C is the number of classes. Default None. + + Returns: + torch.Tensor: The calculated loss + """ + # element-wise losses + loss = -label * F.log_softmax(pred, dim=-1) + if class_weight is not None: + loss *= class_weight + loss = loss.sum(dim=-1) + + # apply weights and do the reduction + if weight is not None: + weight = weight.float() + loss = weight_reduce_loss( + loss, weight=weight, reduction=reduction, avg_factor=avg_factor) + + return loss + + +def binary_cross_entropy(pred, + label, + weight=None, + reduction='mean', + avg_factor=None, + class_weight=None, + pos_weight=None): + r"""Calculate the binary CrossEntropy loss with logits. + + Args: + pred (torch.Tensor): The prediction with shape (N, \*). + label (torch.Tensor): The gt label with shape (N, \*). + weight (torch.Tensor, optional): Element-wise weight of loss with shape + (N, ). Defaults to None. + reduction (str): The method used to reduce the loss. + Options are "none", "mean" and "sum". If reduction is 'none' , loss + is same shape as pred and label. Defaults to 'mean'. + avg_factor (int, optional): Average factor that is used to average + the loss. Defaults to None. + class_weight (torch.Tensor, optional): The weight for each class with + shape (C), C is the number of classes. Default None. + pos_weight (torch.Tensor, optional): The positive weight for each + class with shape (C), C is the number of classes. Default None. + + Returns: + torch.Tensor: The calculated loss + """ + # Ensure that the size of class_weight is consistent with pred and label to + # avoid automatic boracast, + assert pred.dim() == label.dim() + + if class_weight is not None: + N = pred.size()[0] + class_weight = class_weight.repeat(N, 1) + loss = F.binary_cross_entropy_with_logits( + pred, + label, + weight=class_weight, + pos_weight=pos_weight, + reduction='none') + + # apply weights and do the reduction + if weight is not None: + assert weight.dim() == 1 + weight = weight.float() + if pred.dim() > 1: + weight = weight.reshape(-1, 1) + loss = weight_reduce_loss( + loss, weight=weight, reduction=reduction, avg_factor=avg_factor) + return loss + + +@LOSSES.register_module() +class CrossEntropyLoss(nn.Module): + """Cross entropy loss. + + Args: + use_sigmoid (bool): Whether the prediction uses sigmoid + of softmax. Defaults to False. + use_soft (bool): Whether to use the soft version of CrossEntropyLoss. + Defaults to False. + reduction (str): The method used to reduce the loss. + Options are "none", "mean" and "sum". Defaults to 'mean'. + loss_weight (float): Weight of the loss. Defaults to 1.0. + class_weight (List[float], optional): The weight for each class with + shape (C), C is the number of classes. Default None. + pos_weight (List[float], optional): The positive weight for each + class with shape (C), C is the number of classes. Only enabled in + BCE loss when ``use_sigmoid`` is True. Default None. + """ + + def __init__(self, + use_sigmoid=False, + use_soft=False, + reduction='mean', + loss_weight=1.0, + class_weight=None, + pos_weight=None): + super(CrossEntropyLoss, self).__init__() + self.use_sigmoid = use_sigmoid + self.use_soft = use_soft + assert not ( + self.use_soft and self.use_sigmoid + ), 'use_sigmoid and use_soft could not be set simultaneously' + + self.reduction = reduction + self.loss_weight = loss_weight + self.class_weight = class_weight + self.pos_weight = pos_weight + + if self.use_sigmoid: + self.cls_criterion = binary_cross_entropy + elif self.use_soft: + self.cls_criterion = soft_cross_entropy + else: + self.cls_criterion = cross_entropy + + def forward(self, + cls_score, + label, + weight=None, + avg_factor=None, + reduction_override=None, + **kwargs): + assert reduction_override in (None, 'none', 'mean', 'sum') + reduction = ( + reduction_override if reduction_override else self.reduction) + + if self.class_weight is not None: + class_weight = cls_score.new_tensor(self.class_weight) + else: + class_weight = None + + # only BCE loss has pos_weight + if self.pos_weight is not None and self.use_sigmoid: + pos_weight = cls_score.new_tensor(self.pos_weight) + kwargs.update({'pos_weight': pos_weight}) + else: + pos_weight = None + + loss_cls = self.loss_weight * self.cls_criterion( + cls_score, + label, + weight, + class_weight=class_weight, + reduction=reduction, + avg_factor=avg_factor, + **kwargs) + return loss_cls diff --git a/openmmlab_test/mmclassification-speed-benchmark/mmcls/models/losses/focal_loss.py b/openmmlab_test/mmclassification-0.24.1/mmcls/models/losses/focal_loss.py similarity index 84% rename from openmmlab_test/mmclassification-speed-benchmark/mmcls/models/losses/focal_loss.py rename to openmmlab_test/mmclassification-0.24.1/mmcls/models/losses/focal_loss.py index f8b61653..8bd0c457 100644 --- a/openmmlab_test/mmclassification-speed-benchmark/mmcls/models/losses/focal_loss.py +++ b/openmmlab_test/mmclassification-0.24.1/mmcls/models/losses/focal_loss.py @@ -1,8 +1,9 @@ +# Copyright (c) OpenMMLab. All rights reserved. import torch.nn as nn import torch.nn.functional as F from ..builder import LOSSES -from .utils import weight_reduce_loss +from .utils import convert_to_one_hot, weight_reduce_loss def sigmoid_focal_loss(pred, @@ -12,14 +13,14 @@ def sigmoid_focal_loss(pred, alpha=0.25, reduction='mean', avg_factor=None): - """Sigmoid focal loss. + r"""Sigmoid focal loss. Args: - pred (torch.Tensor): The prediction with shape (N, *). + pred (torch.Tensor): The prediction with shape (N, \*). target (torch.Tensor): The ground truth label of the prediction with - shape (N, *). + shape (N, \*). weight (torch.Tensor, optional): Sample-wise loss weight with shape - (N, ). Dafaults to None. + (N, ). Defaults to None. gamma (float): The gamma for calculating the modulating factor. Defaults to 2.0. alpha (float): A balanced form for Focal Loss. Defaults to 0.25. @@ -82,16 +83,16 @@ class FocalLoss(nn.Module): weight=None, avg_factor=None, reduction_override=None): - """Sigmoid focal loss. + r"""Sigmoid focal loss. Args: - pred (torch.Tensor): The prediction with shape (N, *). + pred (torch.Tensor): The prediction with shape (N, \*). target (torch.Tensor): The ground truth label of the prediction - with shape (N, *). + with shape (N, \*), N or (N,1). weight (torch.Tensor, optional): Sample-wise loss weight with shape - (N, *). Dafaults to None. + (N, \*). Defaults to None. avg_factor (int, optional): Average factor that is used to average - the loss. Defaults to None. + the loss. Defaults to None. reduction_override (str, optional): The method used to reduce the loss into a scalar. Options are "none", "mean" and "sum". Defaults to None. @@ -102,6 +103,8 @@ class FocalLoss(nn.Module): assert reduction_override in (None, 'none', 'mean', 'sum') reduction = ( reduction_override if reduction_override else self.reduction) + if target.dim() == 1 or (target.dim() == 2 and target.shape[1] == 1): + target = convert_to_one_hot(target.view(-1, 1), pred.shape[-1]) loss_cls = self.loss_weight * sigmoid_focal_loss( pred, target, diff --git a/openmmlab_test/mmclassification-speed-benchmark/mmcls/models/losses/label_smooth_loss.py b/openmmlab_test/mmclassification-0.24.1/mmcls/models/losses/label_smooth_loss.py similarity index 81% rename from openmmlab_test/mmclassification-speed-benchmark/mmcls/models/losses/label_smooth_loss.py rename to openmmlab_test/mmclassification-0.24.1/mmcls/models/losses/label_smooth_loss.py index f8a26fcd..daa73444 100644 --- a/openmmlab_test/mmclassification-speed-benchmark/mmcls/models/losses/label_smooth_loss.py +++ b/openmmlab_test/mmclassification-0.24.1/mmcls/models/losses/label_smooth_loss.py @@ -1,5 +1,4 @@ -import warnings - +# Copyright (c) OpenMMLab. All rights reserved. import torch import torch.nn as nn @@ -10,9 +9,10 @@ from .utils import convert_to_one_hot @LOSSES.register_module() class LabelSmoothLoss(nn.Module): - r"""Intializer for the label smoothed cross entropy loss. - Refers to `Rethinking the Inception Architecture for Computer Vision` - - https://arxiv.org/abs/1512.00567 + r"""Initializer for the label smoothed cross entropy loss. + + Refers to `Rethinking the Inception Architecture for Computer Vision + `_ This decreases gap between output scores and encourages generalization. Labels provided to forward can be one-hot like vectors (NxC) or class @@ -24,7 +24,7 @@ class LabelSmoothLoss(nn.Module): label_smooth_val (float): The degree of label smoothing. num_classes (int, optional): Number of classes. Defaults to None. mode (str): Refers to notes, Options are 'original', 'classy_vision', - 'multi_label'. Defaults to 'classy_vision' + 'multi_label'. Defaults to 'original' reduction (str): The method used to reduce the loss. Options are "none", "mean" and "sum". Defaults to 'mean'. loss_weight (float): Weight of the loss. Defaults to 1.0. @@ -34,7 +34,7 @@ class LabelSmoothLoss(nn.Module): as the original paper as: .. math:: - (1-\epsilon)\delta_{k, y} + \frac{\epsilon}{K} + (1-\epsilon)\delta_{k, y} + \frac{\epsilon}{K} where epsilon is the `label_smooth_val`, K is the num_classes and delta(k,y) is Dirac delta, which equals 1 for k=y and 0 otherwise. @@ -43,19 +43,19 @@ class LabelSmoothLoss(nn.Module): method as the facebookresearch/ClassyVision repo as: .. math:: - \frac{\delta_{k, y} + \epsilon/K}{1+\epsilon} + \frac{\delta_{k, y} + \epsilon/K}{1+\epsilon} if the mode is "multi_label", this will accept labels from multi-label task and smoothing them as: .. math:: - (1-2\epsilon)\delta_{k, y} + \epsilon + (1-2\epsilon)\delta_{k, y} + \epsilon """ def __init__(self, label_smooth_val, num_classes=None, - mode=None, + mode='original', reduction='mean', loss_weight=1.0): super().__init__() @@ -74,14 +74,6 @@ class LabelSmoothLoss(nn.Module): f'but gets {mode}.' self.reduction = reduction - if mode is None: - warnings.warn( - 'LabelSmoothLoss mode is not set, use "classy_vision" ' - 'by default. The default value will be changed to ' - '"original" recently. Please set mode manually if want ' - 'to keep "classy_vision".', UserWarning) - mode = 'classy_vision' - accept_mode = {'original', 'classy_vision', 'multi_label'} assert mode in accept_mode, \ f'LabelSmoothLoss supports mode {accept_mode}, but gets {mode}.' @@ -124,6 +116,23 @@ class LabelSmoothLoss(nn.Module): avg_factor=None, reduction_override=None, **kwargs): + r"""Label smooth loss. + + Args: + pred (torch.Tensor): The prediction with shape (N, \*). + label (torch.Tensor): The ground truth label of the prediction + with shape (N, \*). + weight (torch.Tensor, optional): Sample-wise loss weight with shape + (N, \*). Defaults to None. + avg_factor (int, optional): Average factor that is used to average + the loss. Defaults to None. + reduction_override (str, optional): The method used to reduce the + loss into a scalar. Options are "none", "mean" and "sum". + Defaults to None. + + Returns: + torch.Tensor: Loss. + """ if self.num_classes is not None: assert self.num_classes == cls_score.shape[1], \ f'num_classes should equal to cls_score.shape[1], ' \ diff --git a/openmmlab_test/mmclassification-0.24.1/mmcls/models/losses/seesaw_loss.py b/openmmlab_test/mmclassification-0.24.1/mmcls/models/losses/seesaw_loss.py new file mode 100644 index 00000000..14176de6 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/mmcls/models/losses/seesaw_loss.py @@ -0,0 +1,173 @@ +# Copyright (c) OpenMMLab. All rights reserved. +# migrate from mmdetection with modifications +import torch +import torch.nn as nn +import torch.nn.functional as F + +from ..builder import LOSSES +from .utils import weight_reduce_loss + + +def seesaw_ce_loss(cls_score, + labels, + weight, + cum_samples, + num_classes, + p, + q, + eps, + reduction='mean', + avg_factor=None): + """Calculate the Seesaw CrossEntropy loss. + + Args: + cls_score (torch.Tensor): The prediction with shape (N, C), + C is the number of classes. + labels (torch.Tensor): The learning label of the prediction. + weight (torch.Tensor): Sample-wise loss weight. + cum_samples (torch.Tensor): Cumulative samples for each category. + num_classes (int): The number of classes. + p (float): The ``p`` in the mitigation factor. + q (float): The ``q`` in the compenstation factor. + eps (float): The minimal value of divisor to smooth + the computation of compensation factor + reduction (str, optional): The method used to reduce the loss. + avg_factor (int, optional): Average factor that is used to average + the loss. Defaults to None. + + Returns: + torch.Tensor: The calculated loss + """ + assert cls_score.size(-1) == num_classes + assert len(cum_samples) == num_classes + + onehot_labels = F.one_hot(labels, num_classes) + seesaw_weights = cls_score.new_ones(onehot_labels.size()) + + # mitigation factor + if p > 0: + sample_ratio_matrix = cum_samples[None, :].clamp( + min=1) / cum_samples[:, None].clamp(min=1) + index = (sample_ratio_matrix < 1.0).float() + sample_weights = sample_ratio_matrix.pow(p) * index + (1 - index + ) # M_{ij} + mitigation_factor = sample_weights[labels.long(), :] + seesaw_weights = seesaw_weights * mitigation_factor + + # compensation factor + if q > 0: + scores = F.softmax(cls_score.detach(), dim=1) + self_scores = scores[ + torch.arange(0, len(scores)).to(scores.device).long(), + labels.long()] + score_matrix = scores / self_scores[:, None].clamp(min=eps) + index = (score_matrix > 1.0).float() + compensation_factor = score_matrix.pow(q) * index + (1 - index) + seesaw_weights = seesaw_weights * compensation_factor + + cls_score = cls_score + (seesaw_weights.log() * (1 - onehot_labels)) + + loss = F.cross_entropy(cls_score, labels, weight=None, reduction='none') + + if weight is not None: + weight = weight.float() + loss = weight_reduce_loss( + loss, weight=weight, reduction=reduction, avg_factor=avg_factor) + return loss + + +@LOSSES.register_module() +class SeesawLoss(nn.Module): + """Implementation of seesaw loss. + + Refers to `Seesaw Loss for Long-Tailed Instance Segmentation (CVPR 2021) + `_ + + Args: + use_sigmoid (bool): Whether the prediction uses sigmoid of softmax. + Only False is supported. Defaults to False. + p (float): The ``p`` in the mitigation factor. + Defaults to 0.8. + q (float): The ``q`` in the compenstation factor. + Defaults to 2.0. + num_classes (int): The number of classes. + Default to 1000 for the ImageNet dataset. + eps (float): The minimal value of divisor to smooth + the computation of compensation factor, default to 1e-2. + reduction (str): The method that reduces the loss to a scalar. + Options are "none", "mean" and "sum". Default to "mean". + loss_weight (float): The weight of the loss. Defaults to 1.0 + """ + + def __init__(self, + use_sigmoid=False, + p=0.8, + q=2.0, + num_classes=1000, + eps=1e-2, + reduction='mean', + loss_weight=1.0): + super(SeesawLoss, self).__init__() + assert not use_sigmoid, '`use_sigmoid` is not supported' + self.use_sigmoid = False + self.p = p + self.q = q + self.num_classes = num_classes + self.eps = eps + self.reduction = reduction + self.loss_weight = loss_weight + + self.cls_criterion = seesaw_ce_loss + + # cumulative samples for each category + self.register_buffer('cum_samples', + torch.zeros(self.num_classes, dtype=torch.float)) + + def forward(self, + cls_score, + labels, + weight=None, + avg_factor=None, + reduction_override=None): + """Forward function. + + Args: + cls_score (torch.Tensor): The prediction with shape (N, C). + labels (torch.Tensor): The learning label of the prediction. + weight (torch.Tensor, optional): Sample-wise loss weight. + avg_factor (int, optional): Average factor that is used to average + the loss. Defaults to None. + reduction (str, optional): The method used to reduce the loss. + Options are "none", "mean" and "sum". + Returns: + torch.Tensor: The calculated loss + """ + assert reduction_override in (None, 'none', 'mean', 'sum'), \ + f'The `reduction_override` should be one of (None, "none", ' \ + f'"mean", "sum"), but get "{reduction_override}".' + assert cls_score.size(0) == labels.view(-1).size(0), \ + f'Expected `labels` shape [{cls_score.size(0)}], ' \ + f'but got {list(labels.size())}' + reduction = ( + reduction_override if reduction_override else self.reduction) + assert cls_score.size(-1) == self.num_classes, \ + f'The channel number of output ({cls_score.size(-1)}) does ' \ + f'not match the `num_classes` of seesaw loss ({self.num_classes}).' + + # accumulate the samples for each category + unique_labels = labels.unique() + for u_l in unique_labels: + inds_ = labels == u_l.item() + self.cum_samples[u_l] += inds_.sum() + + if weight is not None: + weight = weight.float() + else: + weight = labels.new_ones(labels.size(), dtype=torch.float) + + # calculate loss_cls_classes + loss_cls = self.loss_weight * self.cls_criterion( + cls_score, labels, weight, self.cum_samples, self.num_classes, + self.p, self.q, self.eps, reduction, avg_factor) + + return loss_cls diff --git a/openmmlab_test/mmclassification-0.24.1/mmcls/models/losses/utils.py b/openmmlab_test/mmclassification-0.24.1/mmcls/models/losses/utils.py new file mode 100644 index 00000000..a65b68a6 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/mmcls/models/losses/utils.py @@ -0,0 +1,119 @@ +# Copyright (c) OpenMMLab. All rights reserved. +import functools + +import torch +import torch.nn.functional as F + + +def reduce_loss(loss, reduction): + """Reduce loss as specified. + + Args: + loss (Tensor): Elementwise loss tensor. + reduction (str): Options are "none", "mean" and "sum". + + Return: + Tensor: Reduced loss tensor. + """ + reduction_enum = F._Reduction.get_enum(reduction) + # none: 0, elementwise_mean:1, sum: 2 + if reduction_enum == 0: + return loss + elif reduction_enum == 1: + return loss.mean() + elif reduction_enum == 2: + return loss.sum() + + +def weight_reduce_loss(loss, weight=None, reduction='mean', avg_factor=None): + """Apply element-wise weight and reduce loss. + + Args: + loss (Tensor): Element-wise loss. + weight (Tensor): Element-wise weights. + reduction (str): Same as built-in losses of PyTorch. + avg_factor (float): Average factor when computing the mean of losses. + + Returns: + Tensor: Processed loss values. + """ + # if weight is specified, apply element-wise weight + if weight is not None: + loss = loss * weight + + # if avg_factor is not specified, just reduce the loss + if avg_factor is None: + loss = reduce_loss(loss, reduction) + else: + # if reduction is mean, then average the loss by avg_factor + if reduction == 'mean': + loss = loss.sum() / avg_factor + # if reduction is 'none', then do nothing, otherwise raise an error + elif reduction != 'none': + raise ValueError('avg_factor can not be used with reduction="sum"') + return loss + + +def weighted_loss(loss_func): + """Create a weighted version of a given loss function. + + To use this decorator, the loss function must have the signature like + ``loss_func(pred, target, **kwargs)``. The function only needs to compute + element-wise loss without any reduction. This decorator will add weight + and reduction arguments to the function. The decorated function will have + the signature like ``loss_func(pred, target, weight=None, reduction='mean', + avg_factor=None, **kwargs)``. + + :Example: + + >>> import torch + >>> @weighted_loss + >>> def l1_loss(pred, target): + >>> return (pred - target).abs() + + >>> pred = torch.Tensor([0, 2, 3]) + >>> target = torch.Tensor([1, 1, 1]) + >>> weight = torch.Tensor([1, 0, 1]) + + >>> l1_loss(pred, target) + tensor(1.3333) + >>> l1_loss(pred, target, weight) + tensor(1.) + >>> l1_loss(pred, target, reduction='none') + tensor([1., 1., 2.]) + >>> l1_loss(pred, target, weight, avg_factor=2) + tensor(1.5000) + """ + + @functools.wraps(loss_func) + def wrapper(pred, + target, + weight=None, + reduction='mean', + avg_factor=None, + **kwargs): + # get element-wise loss + loss = loss_func(pred, target, **kwargs) + loss = weight_reduce_loss(loss, weight, reduction, avg_factor) + return loss + + return wrapper + + +def convert_to_one_hot(targets: torch.Tensor, classes) -> torch.Tensor: + """This function converts target class indices to one-hot vectors, given + the number of classes. + + Args: + targets (Tensor): The ground truth label of the prediction + with shape (N, 1) + classes (int): the number of classes. + + Returns: + Tensor: Processed loss values. + """ + assert (torch.max(targets).item() < + classes), 'Class Index must be less than number of classes' + one_hot_targets = F.one_hot( + targets.long().squeeze(-1), num_classes=classes) + return one_hot_targets diff --git a/openmmlab_test/mmclassification-0.24.1/mmcls/models/necks/__init__.py b/openmmlab_test/mmclassification-0.24.1/mmcls/models/necks/__init__.py new file mode 100644 index 00000000..aa5411f0 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/mmcls/models/necks/__init__.py @@ -0,0 +1,6 @@ +# Copyright (c) OpenMMLab. All rights reserved. +from .gap import GlobalAveragePooling +from .gem import GeneralizedMeanPooling +from .hr_fuse import HRFuseScales + +__all__ = ['GlobalAveragePooling', 'GeneralizedMeanPooling', 'HRFuseScales'] diff --git a/openmmlab_test/mmclassification-speed-benchmark/mmcls/models/necks/gap.py b/openmmlab_test/mmclassification-0.24.1/mmcls/models/necks/gap.py similarity index 96% rename from openmmlab_test/mmclassification-speed-benchmark/mmcls/models/necks/gap.py rename to openmmlab_test/mmclassification-0.24.1/mmcls/models/necks/gap.py index 3b8835c4..f64cce0f 100644 --- a/openmmlab_test/mmclassification-speed-benchmark/mmcls/models/necks/gap.py +++ b/openmmlab_test/mmclassification-0.24.1/mmcls/models/necks/gap.py @@ -1,3 +1,4 @@ +# Copyright (c) OpenMMLab. All rights reserved. import torch import torch.nn as nn diff --git a/openmmlab_test/mmclassification-0.24.1/mmcls/models/necks/gem.py b/openmmlab_test/mmclassification-0.24.1/mmcls/models/necks/gem.py new file mode 100644 index 00000000..f499357c --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/mmcls/models/necks/gem.py @@ -0,0 +1,53 @@ +# Copyright (c) OpenMMLab. All rights reserved. +import torch +from torch import Tensor, nn +from torch.nn import functional as F +from torch.nn.parameter import Parameter + +from ..builder import NECKS + + +def gem(x: Tensor, p: Parameter, eps: float = 1e-6, clamp=True) -> Tensor: + if clamp: + x = x.clamp(min=eps) + return F.avg_pool2d(x.pow(p), (x.size(-2), x.size(-1))).pow(1. / p) + + +@NECKS.register_module() +class GeneralizedMeanPooling(nn.Module): + """Generalized Mean Pooling neck. + + Note that we use `view` to remove extra channel after pooling. We do not + use `squeeze` as it will also remove the batch dimension when the tensor + has a batch dimension of size 1, which can lead to unexpected errors. + + Args: + p (float): Parameter value. + Default: 3. + eps (float): epsilon. + Default: 1e-6 + clamp (bool): Use clamp before pooling. + Default: True + """ + + def __init__(self, p=3., eps=1e-6, clamp=True): + assert p >= 1, "'p' must be a value greater then 1" + super(GeneralizedMeanPooling, self).__init__() + self.p = Parameter(torch.ones(1) * p) + self.eps = eps + self.clamp = clamp + + def forward(self, inputs): + if isinstance(inputs, tuple): + outs = tuple([ + gem(x, p=self.p, eps=self.eps, clamp=self.clamp) + for x in inputs + ]) + outs = tuple( + [out.view(x.size(0), -1) for out, x in zip(outs, inputs)]) + elif isinstance(inputs, torch.Tensor): + outs = gem(inputs, p=self.p, eps=self.eps, clamp=self.clamp) + outs = outs.view(inputs.size(0), -1) + else: + raise TypeError('neck inputs should be tuple or torch.tensor') + return outs diff --git a/openmmlab_test/mmclassification-0.24.1/mmcls/models/necks/hr_fuse.py b/openmmlab_test/mmclassification-0.24.1/mmcls/models/necks/hr_fuse.py new file mode 100644 index 00000000..1acc3827 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/mmcls/models/necks/hr_fuse.py @@ -0,0 +1,83 @@ +# Copyright (c) OpenMMLab. All rights reserved. +import torch.nn as nn +from mmcv.cnn.bricks import ConvModule +from mmcv.runner import BaseModule + +from ..backbones.resnet import Bottleneck, ResLayer +from ..builder import NECKS + + +@NECKS.register_module() +class HRFuseScales(BaseModule): + """Fuse feature map of multiple scales in HRNet. + + Args: + in_channels (list[int]): The input channels of all scales. + out_channels (int): The channels of fused feature map. + Defaults to 2048. + norm_cfg (dict): dictionary to construct norm layers. + Defaults to ``dict(type='BN', momentum=0.1)``. + init_cfg (dict | list[dict], optional): Initialization config dict. + Defaults to ``dict(type='Normal', layer='Linear', std=0.01))``. + """ + + def __init__(self, + in_channels, + out_channels=2048, + norm_cfg=dict(type='BN', momentum=0.1), + init_cfg=dict(type='Normal', layer='Linear', std=0.01)): + super(HRFuseScales, self).__init__(init_cfg=init_cfg) + self.in_channels = in_channels + self.out_channels = out_channels + self.norm_cfg = norm_cfg + + block_type = Bottleneck + out_channels = [128, 256, 512, 1024] + + # Increase the channels on each resolution + # from C, 2C, 4C, 8C to 128, 256, 512, 1024 + increase_layers = [] + for i in range(len(in_channels)): + increase_layers.append( + ResLayer( + block_type, + in_channels=in_channels[i], + out_channels=out_channels[i], + num_blocks=1, + stride=1, + )) + self.increase_layers = nn.ModuleList(increase_layers) + + # Downsample feature maps in each scale. + downsample_layers = [] + for i in range(len(in_channels) - 1): + downsample_layers.append( + ConvModule( + in_channels=out_channels[i], + out_channels=out_channels[i + 1], + kernel_size=3, + stride=2, + padding=1, + norm_cfg=self.norm_cfg, + bias=False, + )) + self.downsample_layers = nn.ModuleList(downsample_layers) + + # The final conv block before final classifier linear layer. + self.final_layer = ConvModule( + in_channels=out_channels[3], + out_channels=self.out_channels, + kernel_size=1, + norm_cfg=self.norm_cfg, + bias=False, + ) + + def forward(self, x): + assert isinstance(x, tuple) and len(x) == len(self.in_channels) + + feat = self.increase_layers[0](x[0]) + for i in range(len(self.downsample_layers)): + feat = self.downsample_layers[i](feat) + \ + self.increase_layers[i + 1](x[i + 1]) + + return (self.final_layer(feat), ) diff --git a/openmmlab_test/mmclassification-0.24.1/mmcls/models/utils/__init__.py b/openmmlab_test/mmclassification-0.24.1/mmcls/models/utils/__init__.py new file mode 100644 index 00000000..05af4db9 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/mmcls/models/utils/__init__.py @@ -0,0 +1,20 @@ +# Copyright (c) OpenMMLab. All rights reserved. +from .attention import MultiheadAttention, ShiftWindowMSA, WindowMSAV2 +from .augment.augments import Augments +from .channel_shuffle import channel_shuffle +from .embed import (HybridEmbed, PatchEmbed, PatchMerging, resize_pos_embed, + resize_relative_position_bias_table) +from .helpers import is_tracing, to_2tuple, to_3tuple, to_4tuple, to_ntuple +from .inverted_residual import InvertedResidual +from .layer_scale import LayerScale +from .make_divisible import make_divisible +from .position_encoding import ConditionalPositionEncoding +from .se_layer import SELayer + +__all__ = [ + 'channel_shuffle', 'make_divisible', 'InvertedResidual', 'SELayer', + 'to_ntuple', 'to_2tuple', 'to_3tuple', 'to_4tuple', 'PatchEmbed', + 'PatchMerging', 'HybridEmbed', 'Augments', 'ShiftWindowMSA', 'is_tracing', + 'MultiheadAttention', 'ConditionalPositionEncoding', 'resize_pos_embed', + 'resize_relative_position_bias_table', 'WindowMSAV2', 'LayerScale' +] diff --git a/openmmlab_test/mmclassification-0.24.1/mmcls/models/utils/attention.py b/openmmlab_test/mmclassification-0.24.1/mmcls/models/utils/attention.py new file mode 100644 index 00000000..1aae72ae --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/mmcls/models/utils/attention.py @@ -0,0 +1,564 @@ +# Copyright (c) OpenMMLab. All rights reserved. +import warnings + +import numpy as np +import torch +import torch.nn as nn +import torch.nn.functional as F +from mmcv.cnn.bricks.registry import DROPOUT_LAYERS +from mmcv.cnn.bricks.transformer import build_dropout +from mmcv.cnn.utils.weight_init import trunc_normal_ +from mmcv.runner.base_module import BaseModule + +from ..builder import ATTENTION +from .helpers import to_2tuple + + +class WindowMSA(BaseModule): + """Window based multi-head self-attention (W-MSA) module with relative + position bias. + + Args: + embed_dims (int): Number of input channels. + window_size (tuple[int]): The height and width of the window. + num_heads (int): Number of attention heads. + qkv_bias (bool, optional): If True, add a learnable bias to q, k, v. + Defaults to True. + qk_scale (float, optional): Override default qk scale of + ``head_dim ** -0.5`` if set. Defaults to None. + attn_drop (float, optional): Dropout ratio of attention weight. + Defaults to 0. + proj_drop (float, optional): Dropout ratio of output. Defaults to 0. + init_cfg (dict, optional): The extra config for initialization. + Defaults to None. + """ + + def __init__(self, + embed_dims, + window_size, + num_heads, + qkv_bias=True, + qk_scale=None, + attn_drop=0., + proj_drop=0., + init_cfg=None): + + super().__init__(init_cfg) + self.embed_dims = embed_dims + self.window_size = window_size # Wh, Ww + self.num_heads = num_heads + head_embed_dims = embed_dims // num_heads + self.scale = qk_scale or head_embed_dims**-0.5 + + # define a parameter table of relative position bias + self.relative_position_bias_table = nn.Parameter( + torch.zeros((2 * window_size[0] - 1) * (2 * window_size[1] - 1), + num_heads)) # 2*Wh-1 * 2*Ww-1, nH + + # About 2x faster than original impl + Wh, Ww = self.window_size + rel_index_coords = self.double_step_seq(2 * Ww - 1, Wh, 1, Ww) + rel_position_index = rel_index_coords + rel_index_coords.T + rel_position_index = rel_position_index.flip(1).contiguous() + self.register_buffer('relative_position_index', rel_position_index) + + self.qkv = nn.Linear(embed_dims, embed_dims * 3, bias=qkv_bias) + self.attn_drop = nn.Dropout(attn_drop) + self.proj = nn.Linear(embed_dims, embed_dims) + self.proj_drop = nn.Dropout(proj_drop) + + self.softmax = nn.Softmax(dim=-1) + + def init_weights(self): + super(WindowMSA, self).init_weights() + + trunc_normal_(self.relative_position_bias_table, std=0.02) + + def forward(self, x, mask=None): + """ + Args: + + x (tensor): input features with shape of (num_windows*B, N, C) + mask (tensor, Optional): mask with shape of (num_windows, Wh*Ww, + Wh*Ww), value should be between (-inf, 0]. + """ + B_, N, C = x.shape + qkv = self.qkv(x).reshape(B_, N, 3, self.num_heads, + C // self.num_heads).permute(2, 0, 3, 1, 4) + q, k, v = qkv[0], qkv[1], qkv[ + 2] # make torchscript happy (cannot use tensor as tuple) + + q = q * self.scale + attn = (q @ k.transpose(-2, -1)) + + relative_position_bias = self.relative_position_bias_table[ + self.relative_position_index.view(-1)].view( + self.window_size[0] * self.window_size[1], + self.window_size[0] * self.window_size[1], + -1) # Wh*Ww,Wh*Ww,nH + relative_position_bias = relative_position_bias.permute( + 2, 0, 1).contiguous() # nH, Wh*Ww, Wh*Ww + attn = attn + relative_position_bias.unsqueeze(0) + + if mask is not None: + nW = mask.shape[0] + attn = attn.view(B_ // nW, nW, self.num_heads, N, + N) + mask.unsqueeze(1).unsqueeze(0) + attn = attn.view(-1, self.num_heads, N, N) + attn = self.softmax(attn) + else: + attn = self.softmax(attn) + + attn = self.attn_drop(attn) + + x = (attn @ v).transpose(1, 2).reshape(B_, N, C) + x = self.proj(x) + x = self.proj_drop(x) + return x + + @staticmethod + def double_step_seq(step1, len1, step2, len2): + seq1 = torch.arange(0, step1 * len1, step1) + seq2 = torch.arange(0, step2 * len2, step2) + return (seq1[:, None] + seq2[None, :]).reshape(1, -1) + + +class WindowMSAV2(BaseModule): + """Window based multi-head self-attention (W-MSA) module with relative + position bias. + + Based on implementation on Swin Transformer V2 original repo. Refers to + https://github.com/microsoft/Swin-Transformer/blob/main/models/swin_transformer_v2.py + for more details. + + Args: + embed_dims (int): Number of input channels. + window_size (tuple[int]): The height and width of the window. + num_heads (int): Number of attention heads. + qkv_bias (bool, optional): If True, add a learnable bias to q, k, v. + Defaults to True. + attn_drop (float, optional): Dropout ratio of attention weight. + Defaults to 0. + proj_drop (float, optional): Dropout ratio of output. Defaults to 0. + pretrained_window_size (tuple(int)): The height and width of the window + in pre-training. + init_cfg (dict, optional): The extra config for initialization. + Defaults to None. + """ + + def __init__(self, + embed_dims, + window_size, + num_heads, + qkv_bias=True, + attn_drop=0., + proj_drop=0., + cpb_mlp_hidden_dims=512, + pretrained_window_size=(0, 0), + init_cfg=None, + **kwargs): # accept extra arguments + + super().__init__(init_cfg) + self.embed_dims = embed_dims + self.window_size = window_size # Wh, Ww + self.num_heads = num_heads + + # Use small network for continuous relative position bias + self.cpb_mlp = nn.Sequential( + nn.Linear( + in_features=2, out_features=cpb_mlp_hidden_dims, bias=True), + nn.ReLU(inplace=True), + nn.Linear( + in_features=cpb_mlp_hidden_dims, + out_features=num_heads, + bias=False)) + + # Add learnable scalar for cosine attention + self.logit_scale = nn.Parameter( + torch.log(10 * torch.ones((num_heads, 1, 1))), requires_grad=True) + + # get relative_coords_table + relative_coords_h = torch.arange( + -(self.window_size[0] - 1), + self.window_size[0], + dtype=torch.float32) + relative_coords_w = torch.arange( + -(self.window_size[1] - 1), + self.window_size[1], + dtype=torch.float32) + relative_coords_table = torch.stack( + torch.meshgrid([relative_coords_h, relative_coords_w])).permute( + 1, 2, 0).contiguous().unsqueeze(0) # 1, 2*Wh-1, 2*Ww-1, 2 + if pretrained_window_size[0] > 0: + relative_coords_table[:, :, :, 0] /= ( + pretrained_window_size[0] - 1) + relative_coords_table[:, :, :, 1] /= ( + pretrained_window_size[1] - 1) + else: + relative_coords_table[:, :, :, 0] /= (self.window_size[0] - 1) + relative_coords_table[:, :, :, 1] /= (self.window_size[1] - 1) + relative_coords_table *= 8 # normalize to -8, 8 + relative_coords_table = torch.sign(relative_coords_table) * torch.log2( + torch.abs(relative_coords_table) + 1.0) / np.log2(8) + self.register_buffer('relative_coords_table', relative_coords_table) + + # get pair-wise relative position index + # for each token inside the window + indexes_h = torch.arange(self.window_size[0]) + indexes_w = torch.arange(self.window_size[1]) + coordinates = torch.stack( + torch.meshgrid([indexes_h, indexes_w]), dim=0) # 2, Wh, Ww + coordinates = torch.flatten(coordinates, start_dim=1) # 2, Wh*Ww + # 2, Wh*Ww, Wh*Ww + relative_coordinates = coordinates[:, :, None] - coordinates[:, + None, :] + relative_coordinates = relative_coordinates.permute( + 1, 2, 0).contiguous() # Wh*Ww, Wh*Ww, 2 + + relative_coordinates[:, :, 0] += self.window_size[ + 0] - 1 # shift to start from 0 + relative_coordinates[:, :, 1] += self.window_size[1] - 1 + relative_coordinates[:, :, 0] *= 2 * self.window_size[1] - 1 + relative_position_index = relative_coordinates.sum(-1) # Wh*Ww, Wh*Ww + self.register_buffer('relative_position_index', + relative_position_index) + + self.qkv = nn.Linear(embed_dims, embed_dims * 3, bias=False) + if qkv_bias: + self.q_bias = nn.Parameter(torch.zeros(embed_dims)) + self.v_bias = nn.Parameter(torch.zeros(embed_dims)) + else: + self.q_bias = None + self.v_bias = None + self.attn_drop = nn.Dropout(attn_drop) + self.proj = nn.Linear(embed_dims, embed_dims) + self.proj_drop = nn.Dropout(proj_drop) + + self.softmax = nn.Softmax(dim=-1) + + def forward(self, x, mask=None): + """ + Args: + + x (tensor): input features with shape of (num_windows*B, N, C) + mask (tensor, Optional): mask with shape of (num_windows, Wh*Ww, + Wh*Ww), value should be between (-inf, 0]. + """ + B_, N, C = x.shape + qkv_bias = None + if self.q_bias is not None: + qkv_bias = torch.cat( + (self.q_bias, + torch.zeros_like(self.v_bias, + requires_grad=False), self.v_bias)) + qkv = F.linear(input=x, weight=self.qkv.weight, bias=qkv_bias) + qkv = qkv.reshape(B_, N, 3, self.num_heads, + C // self.num_heads).permute(2, 0, 3, 1, 4) + q, k, v = qkv[0], qkv[1], qkv[ + 2] # make torchscript happy (cannot use tensor as tuple) + + # cosine attention + attn = ( + F.normalize(q, dim=-1) @ F.normalize(k, dim=-1).transpose(-2, -1)) + logit_scale = torch.clamp( + self.logit_scale, max=np.log(1. / 0.01)).exp() + attn = attn * logit_scale + + relative_position_bias_table = self.cpb_mlp( + self.relative_coords_table).view(-1, self.num_heads) + relative_position_bias = relative_position_bias_table[ + self.relative_position_index.view(-1)].view( + self.window_size[0] * self.window_size[1], + self.window_size[0] * self.window_size[1], + -1) # Wh*Ww,Wh*Ww,nH + relative_position_bias = relative_position_bias.permute( + 2, 0, 1).contiguous() # nH, Wh*Ww, Wh*Ww + relative_position_bias = 16 * torch.sigmoid(relative_position_bias) + attn = attn + relative_position_bias.unsqueeze(0) + + if mask is not None: + nW = mask.shape[0] + attn = attn.view(B_ // nW, nW, self.num_heads, N, + N) + mask.unsqueeze(1).unsqueeze(0) + attn = attn.view(-1, self.num_heads, N, N) + attn = self.softmax(attn) + else: + attn = self.softmax(attn) + + attn = self.attn_drop(attn) + + x = (attn @ v).transpose(1, 2).reshape(B_, N, C) + x = self.proj(x) + x = self.proj_drop(x) + return x + + +@ATTENTION.register_module() +class ShiftWindowMSA(BaseModule): + """Shift Window Multihead Self-Attention Module. + + Args: + embed_dims (int): Number of input channels. + num_heads (int): Number of attention heads. + window_size (int): The height and width of the window. + shift_size (int, optional): The shift step of each window towards + right-bottom. If zero, act as regular window-msa. Defaults to 0. + qkv_bias (bool, optional): If True, add a learnable bias to q, k, v. + Defaults to True + qk_scale (float | None, optional): Override default qk scale of + head_dim ** -0.5 if set. Defaults to None. + attn_drop (float, optional): Dropout ratio of attention weight. + Defaults to 0.0. + proj_drop (float, optional): Dropout ratio of output. Defaults to 0. + dropout_layer (dict, optional): The dropout_layer used before output. + Defaults to dict(type='DropPath', drop_prob=0.). + pad_small_map (bool): If True, pad the small feature map to the window + size, which is common used in detection and segmentation. If False, + avoid shifting window and shrink the window size to the size of + feature map, which is common used in classification. + Defaults to False. + version (str, optional): Version of implementation of Swin + Transformers. Defaults to `v1`. + init_cfg (dict, optional): The extra config for initialization. + Defaults to None. + """ + + def __init__(self, + embed_dims, + num_heads, + window_size, + shift_size=0, + qkv_bias=True, + qk_scale=None, + attn_drop=0, + proj_drop=0, + dropout_layer=dict(type='DropPath', drop_prob=0.), + pad_small_map=False, + input_resolution=None, + auto_pad=None, + window_msa=WindowMSA, + msa_cfg=dict(), + init_cfg=None): + super().__init__(init_cfg) + + if input_resolution is not None or auto_pad is not None: + warnings.warn( + 'The ShiftWindowMSA in new version has supported auto padding ' + 'and dynamic input shape in all condition. And the argument ' + '`auto_pad` and `input_resolution` have been deprecated.', + DeprecationWarning) + + self.shift_size = shift_size + self.window_size = window_size + assert 0 <= self.shift_size < self.window_size + + assert issubclass(window_msa, BaseModule), \ + 'Expect Window based multi-head self-attention Module is type of' \ + f'{type(BaseModule)}, but got {type(window_msa)}.' + self.w_msa = window_msa( + embed_dims=embed_dims, + window_size=to_2tuple(self.window_size), + num_heads=num_heads, + qkv_bias=qkv_bias, + qk_scale=qk_scale, + attn_drop=attn_drop, + proj_drop=proj_drop, + **msa_cfg, + ) + + self.drop = build_dropout(dropout_layer) + self.pad_small_map = pad_small_map + + def forward(self, query, hw_shape): + B, L, C = query.shape + H, W = hw_shape + assert L == H * W, f"The query length {L} doesn't match the input "\ + f'shape ({H}, {W}).' + query = query.view(B, H, W, C) + + window_size = self.window_size + shift_size = self.shift_size + + if min(H, W) == window_size: + # If not pad small feature map, avoid shifting when the window size + # is equal to the size of feature map. It's to align with the + # behavior of the original implementation. + shift_size = shift_size if self.pad_small_map else 0 + elif min(H, W) < window_size: + # In the original implementation, the window size will be shrunk + # to the size of feature map. The behavior is different with + # swin-transformer for downstream tasks. To support dynamic input + # shape, we don't allow this feature. + assert self.pad_small_map, \ + f'The input shape ({H}, {W}) is smaller than the window ' \ + f'size ({window_size}). Please set `pad_small_map=True`, or ' \ + 'decrease the `window_size`.' + + pad_r = (window_size - W % window_size) % window_size + pad_b = (window_size - H % window_size) % window_size + query = F.pad(query, (0, 0, 0, pad_r, 0, pad_b)) + + H_pad, W_pad = query.shape[1], query.shape[2] + + # cyclic shift + if shift_size > 0: + query = torch.roll( + query, shifts=(-shift_size, -shift_size), dims=(1, 2)) + + attn_mask = self.get_attn_mask((H_pad, W_pad), + window_size=window_size, + shift_size=shift_size, + device=query.device) + + # nW*B, window_size, window_size, C + query_windows = self.window_partition(query, window_size) + # nW*B, window_size*window_size, C + query_windows = query_windows.view(-1, window_size**2, C) + + # W-MSA/SW-MSA (nW*B, window_size*window_size, C) + attn_windows = self.w_msa(query_windows, mask=attn_mask) + + # merge windows + attn_windows = attn_windows.view(-1, window_size, window_size, C) + + # B H' W' C + shifted_x = self.window_reverse(attn_windows, H_pad, W_pad, + window_size) + # reverse cyclic shift + if self.shift_size > 0: + x = torch.roll( + shifted_x, shifts=(shift_size, shift_size), dims=(1, 2)) + else: + x = shifted_x + + if H != H_pad or W != W_pad: + x = x[:, :H, :W, :].contiguous() + + x = x.view(B, H * W, C) + + x = self.drop(x) + + return x + + @staticmethod + def window_reverse(windows, H, W, window_size): + B = int(windows.shape[0] / (H * W / window_size / window_size)) + x = windows.view(B, H // window_size, W // window_size, window_size, + window_size, -1) + x = x.permute(0, 1, 3, 2, 4, 5).contiguous().view(B, H, W, -1) + return x + + @staticmethod + def window_partition(x, window_size): + B, H, W, C = x.shape + x = x.view(B, H // window_size, window_size, W // window_size, + window_size, C) + windows = x.permute(0, 1, 3, 2, 4, 5).contiguous() + windows = windows.view(-1, window_size, window_size, C) + return windows + + @staticmethod + def get_attn_mask(hw_shape, window_size, shift_size, device=None): + if shift_size > 0: + img_mask = torch.zeros(1, *hw_shape, 1, device=device) + h_slices = (slice(0, -window_size), slice(-window_size, + -shift_size), + slice(-shift_size, None)) + w_slices = (slice(0, -window_size), slice(-window_size, + -shift_size), + slice(-shift_size, None)) + cnt = 0 + for h in h_slices: + for w in w_slices: + img_mask[:, h, w, :] = cnt + cnt += 1 + + # nW, window_size, window_size, 1 + mask_windows = ShiftWindowMSA.window_partition( + img_mask, window_size) + mask_windows = mask_windows.view(-1, window_size * window_size) + attn_mask = mask_windows.unsqueeze(1) - mask_windows.unsqueeze(2) + attn_mask = attn_mask.masked_fill(attn_mask != 0, -100.0) + attn_mask = attn_mask.masked_fill(attn_mask == 0, 0.0) + else: + attn_mask = None + return attn_mask + + +class MultiheadAttention(BaseModule): + """Multi-head Attention Module. + + This module implements multi-head attention that supports different input + dims and embed dims. And it also supports a shortcut from ``value``, which + is useful if input dims is not the same with embed dims. + + Args: + embed_dims (int): The embedding dimension. + num_heads (int): Parallel attention heads. + input_dims (int, optional): The input dimension, and if None, + use ``embed_dims``. Defaults to None. + attn_drop (float): Dropout rate of the dropout layer after the + attention calculation of query and key. Defaults to 0. + proj_drop (float): Dropout rate of the dropout layer after the + output projection. Defaults to 0. + dropout_layer (dict): The dropout config before adding the shortcut. + Defaults to ``dict(type='Dropout', drop_prob=0.)``. + qkv_bias (bool): If True, add a learnable bias to q, k, v. + Defaults to True. + qk_scale (float, optional): Override default qk scale of + ``head_dim ** -0.5`` if set. Defaults to None. + proj_bias (bool) If True, add a learnable bias to output projection. + Defaults to True. + v_shortcut (bool): Add a shortcut from value to output. It's usually + used if ``input_dims`` is different from ``embed_dims``. + Defaults to False. + init_cfg (dict, optional): The Config for initialization. + Defaults to None. + """ + + def __init__(self, + embed_dims, + num_heads, + input_dims=None, + attn_drop=0., + proj_drop=0., + dropout_layer=dict(type='Dropout', drop_prob=0.), + qkv_bias=True, + qk_scale=None, + proj_bias=True, + v_shortcut=False, + init_cfg=None): + super(MultiheadAttention, self).__init__(init_cfg=init_cfg) + + self.input_dims = input_dims or embed_dims + self.embed_dims = embed_dims + self.num_heads = num_heads + self.v_shortcut = v_shortcut + + self.head_dims = embed_dims // num_heads + self.scale = qk_scale or self.head_dims**-0.5 + + self.qkv = nn.Linear(self.input_dims, embed_dims * 3, bias=qkv_bias) + self.attn_drop = nn.Dropout(attn_drop) + self.proj = nn.Linear(embed_dims, embed_dims, bias=proj_bias) + self.proj_drop = nn.Dropout(proj_drop) + + self.out_drop = DROPOUT_LAYERS.build(dropout_layer) + + def forward(self, x): + B, N, _ = x.shape + qkv = self.qkv(x).reshape(B, N, 3, self.num_heads, + self.head_dims).permute(2, 0, 3, 1, 4) + q, k, v = qkv[0], qkv[1], qkv[2] + + attn = (q @ k.transpose(-2, -1)) * self.scale + attn = attn.softmax(dim=-1) + attn = self.attn_drop(attn) + + x = (attn @ v).transpose(1, 2).reshape(B, N, self.embed_dims) + x = self.proj(x) + x = self.out_drop(self.proj_drop(x)) + + if self.v_shortcut: + x = v.squeeze(1) + x + return x diff --git a/openmmlab_test/mmclassification-0.24.1/mmcls/models/utils/augment/__init__.py b/openmmlab_test/mmclassification-0.24.1/mmcls/models/utils/augment/__init__.py new file mode 100644 index 00000000..9f92cd54 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/mmcls/models/utils/augment/__init__.py @@ -0,0 +1,9 @@ +# Copyright (c) OpenMMLab. All rights reserved. +from .augments import Augments +from .cutmix import BatchCutMixLayer +from .identity import Identity +from .mixup import BatchMixupLayer +from .resizemix import BatchResizeMixLayer + +__all__ = ('Augments', 'BatchCutMixLayer', 'Identity', 'BatchMixupLayer', + 'BatchResizeMixLayer') diff --git a/openmmlab_test/mmclassification-speed-benchmark/mmcls/models/utils/augment/augments.py b/openmmlab_test/mmclassification-0.24.1/mmcls/models/utils/augment/augments.py similarity index 98% rename from openmmlab_test/mmclassification-speed-benchmark/mmcls/models/utils/augment/augments.py rename to openmmlab_test/mmclassification-0.24.1/mmcls/models/utils/augment/augments.py index 59b9a1fa..8455e935 100644 --- a/openmmlab_test/mmclassification-speed-benchmark/mmcls/models/utils/augment/augments.py +++ b/openmmlab_test/mmclassification-0.24.1/mmcls/models/utils/augment/augments.py @@ -1,3 +1,4 @@ +# Copyright (c) OpenMMLab. All rights reserved. import random import numpy as np @@ -9,6 +10,7 @@ class Augments(object): """Data augments. We implement some data augmentation methods, such as mixup, cutmix. + Args: augments_cfg (list[`mmcv.ConfigDict`] | obj:`mmcv.ConfigDict`): Config dict of augments diff --git a/openmmlab_test/mmclassification-0.24.1/mmcls/models/utils/augment/builder.py b/openmmlab_test/mmclassification-0.24.1/mmcls/models/utils/augment/builder.py new file mode 100644 index 00000000..5d1205ee --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/mmcls/models/utils/augment/builder.py @@ -0,0 +1,8 @@ +# Copyright (c) OpenMMLab. All rights reserved. +from mmcv.utils import Registry, build_from_cfg + +AUGMENT = Registry('augment') + + +def build_augment(cfg, default_args=None): + return build_from_cfg(cfg, AUGMENT, default_args) diff --git a/openmmlab_test/mmclassification-0.24.1/mmcls/models/utils/augment/cutmix.py b/openmmlab_test/mmclassification-0.24.1/mmcls/models/utils/augment/cutmix.py new file mode 100644 index 00000000..0d8ba9dd --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/mmcls/models/utils/augment/cutmix.py @@ -0,0 +1,175 @@ +# Copyright (c) OpenMMLab. All rights reserved. +from abc import ABCMeta, abstractmethod + +import numpy as np +import torch + +from .builder import AUGMENT +from .utils import one_hot_encoding + + +class BaseCutMixLayer(object, metaclass=ABCMeta): + """Base class for CutMixLayer. + + Args: + alpha (float): Parameters for Beta distribution. Positive(>0) + num_classes (int): The number of classes + prob (float): MixUp probability. It should be in range [0, 1]. + Default to 1.0 + cutmix_minmax (List[float], optional): cutmix min/max image ratio. + (as percent of image size). When cutmix_minmax is not None, we + generate cutmix bounding-box using cutmix_minmax instead of alpha + correct_lam (bool): Whether to apply lambda correction when cutmix bbox + clipped by image borders. Default to True + """ + + def __init__(self, + alpha, + num_classes, + prob=1.0, + cutmix_minmax=None, + correct_lam=True): + super(BaseCutMixLayer, self).__init__() + + assert isinstance(alpha, float) and alpha > 0 + assert isinstance(num_classes, int) + assert isinstance(prob, float) and 0.0 <= prob <= 1.0 + + self.alpha = alpha + self.num_classes = num_classes + self.prob = prob + self.cutmix_minmax = cutmix_minmax + self.correct_lam = correct_lam + + def rand_bbox_minmax(self, img_shape, count=None): + """Min-Max CutMix bounding-box Inspired by Darknet cutmix + implementation. It generates a random rectangular bbox based on min/max + percent values applied to each dimension of the input image. + + Typical defaults for minmax are usually in the .2-.3 for min and + .8-.9 range for max. + + Args: + img_shape (tuple): Image shape as tuple + count (int, optional): Number of bbox to generate. Default to None + """ + assert len(self.cutmix_minmax) == 2 + img_h, img_w = img_shape[-2:] + cut_h = np.random.randint( + int(img_h * self.cutmix_minmax[0]), + int(img_h * self.cutmix_minmax[1]), + size=count) + cut_w = np.random.randint( + int(img_w * self.cutmix_minmax[0]), + int(img_w * self.cutmix_minmax[1]), + size=count) + yl = np.random.randint(0, img_h - cut_h, size=count) + xl = np.random.randint(0, img_w - cut_w, size=count) + yu = yl + cut_h + xu = xl + cut_w + return yl, yu, xl, xu + + def rand_bbox(self, img_shape, lam, margin=0., count=None): + """Standard CutMix bounding-box that generates a random square bbox + based on lambda value. This implementation includes support for + enforcing a border margin as percent of bbox dimensions. + + Args: + img_shape (tuple): Image shape as tuple + lam (float): Cutmix lambda value + margin (float): Percentage of bbox dimension to enforce as margin + (reduce amount of box outside image). Default to 0. + count (int, optional): Number of bbox to generate. Default to None + """ + ratio = np.sqrt(1 - lam) + img_h, img_w = img_shape[-2:] + cut_h, cut_w = int(img_h * ratio), int(img_w * ratio) + margin_y, margin_x = int(margin * cut_h), int(margin * cut_w) + cy = np.random.randint(0 + margin_y, img_h - margin_y, size=count) + cx = np.random.randint(0 + margin_x, img_w - margin_x, size=count) + yl = np.clip(cy - cut_h // 2, 0, img_h) + yh = np.clip(cy + cut_h // 2, 0, img_h) + xl = np.clip(cx - cut_w // 2, 0, img_w) + xh = np.clip(cx + cut_w // 2, 0, img_w) + return yl, yh, xl, xh + + def cutmix_bbox_and_lam(self, img_shape, lam, count=None): + """Generate bbox and apply lambda correction. + + Args: + img_shape (tuple): Image shape as tuple + lam (float): Cutmix lambda value + count (int, optional): Number of bbox to generate. Default to None + """ + if self.cutmix_minmax is not None: + yl, yu, xl, xu = self.rand_bbox_minmax(img_shape, count=count) + else: + yl, yu, xl, xu = self.rand_bbox(img_shape, lam, count=count) + if self.correct_lam or self.cutmix_minmax is not None: + bbox_area = (yu - yl) * (xu - xl) + lam = 1. - bbox_area / float(img_shape[-2] * img_shape[-1]) + return (yl, yu, xl, xu), lam + + @abstractmethod + def cutmix(self, imgs, gt_label): + pass + + +@AUGMENT.register_module(name='BatchCutMix') +class BatchCutMixLayer(BaseCutMixLayer): + r"""CutMix layer for a batch of data. + + CutMix is a method to improve the network's generalization capability. It's + proposed in `CutMix: Regularization Strategy to Train Strong Classifiers + with Localizable Features ` + + With this method, patches are cut and pasted among training images where + the ground truth labels are also mixed proportionally to the area of the + patches. + + Args: + alpha (float): Parameters for Beta distribution to generate the + mixing ratio. It should be a positive number. More details + can be found in :class:`BatchMixupLayer`. + num_classes (int): The number of classes + prob (float): The probability to execute cutmix. It should be in + range [0, 1]. Defaults to 1.0. + cutmix_minmax (List[float], optional): The min/max area ratio of the + patches. If not None, the bounding-box of patches is uniform + sampled within this ratio range, and the ``alpha`` will be ignored. + Otherwise, the bounding-box is generated according to the + ``alpha``. Defaults to None. + correct_lam (bool): Whether to apply lambda correction when cutmix bbox + clipped by image borders. Defaults to True. + + Note: + If the ``cutmix_minmax`` is None, how to generate the bounding-box of + patches according to the ``alpha``? + + First, generate a :math:`\lambda`, details can be found in + :class:`BatchMixupLayer`. And then, the area ratio of the bounding-box + is calculated by: + + .. math:: + \text{ratio} = \sqrt{1-\lambda} + """ + + def __init__(self, *args, **kwargs): + super(BatchCutMixLayer, self).__init__(*args, **kwargs) + + def cutmix(self, img, gt_label): + one_hot_gt_label = one_hot_encoding(gt_label, self.num_classes) + lam = np.random.beta(self.alpha, self.alpha) + batch_size = img.size(0) + index = torch.randperm(batch_size) + + (bby1, bby2, bbx1, + bbx2), lam = self.cutmix_bbox_and_lam(img.shape, lam) + img[:, :, bby1:bby2, bbx1:bbx2] = \ + img[index, :, bby1:bby2, bbx1:bbx2] + mixed_gt_label = lam * one_hot_gt_label + ( + 1 - lam) * one_hot_gt_label[index, :] + return img, mixed_gt_label + + def __call__(self, img, gt_label): + return self.cutmix(img, gt_label) diff --git a/openmmlab_test/mmclassification-speed-benchmark/mmcls/models/utils/augment/identity.py b/openmmlab_test/mmclassification-0.24.1/mmcls/models/utils/augment/identity.py similarity index 83% rename from openmmlab_test/mmclassification-speed-benchmark/mmcls/models/utils/augment/identity.py rename to openmmlab_test/mmclassification-0.24.1/mmcls/models/utils/augment/identity.py index 414b092b..ae3a3df5 100644 --- a/openmmlab_test/mmclassification-speed-benchmark/mmcls/models/utils/augment/identity.py +++ b/openmmlab_test/mmclassification-0.24.1/mmcls/models/utils/augment/identity.py @@ -1,6 +1,6 @@ -import torch.nn.functional as F - +# Copyright (c) OpenMMLab. All rights reserved. from .builder import AUGMENT +from .utils import one_hot_encoding @AUGMENT.register_module(name='Identity') @@ -23,7 +23,7 @@ class Identity(object): self.prob = prob def one_hot(self, gt_label): - return F.one_hot(gt_label, num_classes=self.num_classes) + return one_hot_encoding(gt_label, self.num_classes) def __call__(self, img, gt_label): return img, self.one_hot(gt_label) diff --git a/openmmlab_test/mmclassification-0.24.1/mmcls/models/utils/augment/mixup.py b/openmmlab_test/mmclassification-0.24.1/mmcls/models/utils/augment/mixup.py new file mode 100644 index 00000000..e8899dd3 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/mmcls/models/utils/augment/mixup.py @@ -0,0 +1,80 @@ +# Copyright (c) OpenMMLab. All rights reserved. +from abc import ABCMeta, abstractmethod + +import numpy as np +import torch + +from .builder import AUGMENT +from .utils import one_hot_encoding + + +class BaseMixupLayer(object, metaclass=ABCMeta): + """Base class for MixupLayer. + + Args: + alpha (float): Parameters for Beta distribution to generate the + mixing ratio. It should be a positive number. + num_classes (int): The number of classes. + prob (float): MixUp probability. It should be in range [0, 1]. + Default to 1.0 + """ + + def __init__(self, alpha, num_classes, prob=1.0): + super(BaseMixupLayer, self).__init__() + + assert isinstance(alpha, float) and alpha > 0 + assert isinstance(num_classes, int) + assert isinstance(prob, float) and 0.0 <= prob <= 1.0 + + self.alpha = alpha + self.num_classes = num_classes + self.prob = prob + + @abstractmethod + def mixup(self, imgs, gt_label): + pass + + +@AUGMENT.register_module(name='BatchMixup') +class BatchMixupLayer(BaseMixupLayer): + r"""Mixup layer for a batch of data. + + Mixup is a method to reduces the memorization of corrupt labels and + increases the robustness to adversarial examples. It's + proposed in `mixup: Beyond Empirical Risk Minimization + ` + + This method simply linearly mix pairs of data and their labels. + + Args: + alpha (float): Parameters for Beta distribution to generate the + mixing ratio. It should be a positive number. More details + are in the note. + num_classes (int): The number of classes. + prob (float): The probability to execute mixup. It should be in + range [0, 1]. Default sto 1.0. + + Note: + The :math:`\alpha` (``alpha``) determines a random distribution + :math:`Beta(\alpha, \alpha)`. For each batch of data, we sample + a mixing ratio (marked as :math:`\lambda`, ``lam``) from the random + distribution. + """ + + def __init__(self, *args, **kwargs): + super(BatchMixupLayer, self).__init__(*args, **kwargs) + + def mixup(self, img, gt_label): + one_hot_gt_label = one_hot_encoding(gt_label, self.num_classes) + lam = np.random.beta(self.alpha, self.alpha) + batch_size = img.size(0) + index = torch.randperm(batch_size) + + mixed_img = lam * img + (1 - lam) * img[index, :] + mixed_gt_label = lam * one_hot_gt_label + ( + 1 - lam) * one_hot_gt_label[index, :] + + return mixed_img, mixed_gt_label + + def __call__(self, img, gt_label): + return self.mixup(img, gt_label) diff --git a/openmmlab_test/mmclassification-0.24.1/mmcls/models/utils/augment/resizemix.py b/openmmlab_test/mmclassification-0.24.1/mmcls/models/utils/augment/resizemix.py new file mode 100644 index 00000000..1506cc37 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/mmcls/models/utils/augment/resizemix.py @@ -0,0 +1,93 @@ +# Copyright (c) OpenMMLab. All rights reserved. +import numpy as np +import torch +import torch.nn.functional as F + +from mmcls.models.utils.augment.builder import AUGMENT +from .cutmix import BatchCutMixLayer +from .utils import one_hot_encoding + + +@AUGMENT.register_module(name='BatchResizeMix') +class BatchResizeMixLayer(BatchCutMixLayer): + r"""ResizeMix Random Paste layer for a batch of data. + + The ResizeMix will resize an image to a small patch and paste it on another + image. It's proposed in `ResizeMix: Mixing Data with Preserved Object + Information and True Labels `_ + + Args: + alpha (float): Parameters for Beta distribution to generate the + mixing ratio. It should be a positive number. More details + can be found in :class:`BatchMixupLayer`. + num_classes (int): The number of classes. + lam_min(float): The minimum value of lam. Defaults to 0.1. + lam_max(float): The maximum value of lam. Defaults to 0.8. + interpolation (str): algorithm used for upsampling: + 'nearest' | 'linear' | 'bilinear' | 'bicubic' | 'trilinear' | + 'area'. Default to 'bilinear'. + prob (float): The probability to execute resizemix. It should be in + range [0, 1]. Defaults to 1.0. + cutmix_minmax (List[float], optional): The min/max area ratio of the + patches. If not None, the bounding-box of patches is uniform + sampled within this ratio range, and the ``alpha`` will be ignored. + Otherwise, the bounding-box is generated according to the + ``alpha``. Defaults to None. + correct_lam (bool): Whether to apply lambda correction when cutmix bbox + clipped by image borders. Defaults to True + **kwargs: Any other parameters accpeted by :class:`BatchCutMixLayer`. + + Note: + The :math:`\lambda` (``lam``) is the mixing ratio. It's a random + variable which follows :math:`Beta(\alpha, \alpha)` and is mapped + to the range [``lam_min``, ``lam_max``]. + + .. math:: + \lambda = \frac{Beta(\alpha, \alpha)} + {\lambda_{max} - \lambda_{min}} + \lambda_{min} + + And the resize ratio of source images is calculated by :math:`\lambda`: + + .. math:: + \text{ratio} = \sqrt{1-\lambda} + """ + + def __init__(self, + alpha, + num_classes, + lam_min: float = 0.1, + lam_max: float = 0.8, + interpolation='bilinear', + prob=1.0, + cutmix_minmax=None, + correct_lam=True, + **kwargs): + super(BatchResizeMixLayer, self).__init__( + alpha=alpha, + num_classes=num_classes, + prob=prob, + cutmix_minmax=cutmix_minmax, + correct_lam=correct_lam, + **kwargs) + self.lam_min = lam_min + self.lam_max = lam_max + self.interpolation = interpolation + + def cutmix(self, img, gt_label): + one_hot_gt_label = one_hot_encoding(gt_label, self.num_classes) + + lam = np.random.beta(self.alpha, self.alpha) + lam = lam * (self.lam_max - self.lam_min) + self.lam_min + batch_size = img.size(0) + index = torch.randperm(batch_size) + + (bby1, bby2, bbx1, + bbx2), lam = self.cutmix_bbox_and_lam(img.shape, lam) + + img[:, :, bby1:bby2, bbx1:bbx2] = F.interpolate( + img[index], + size=(bby2 - bby1, bbx2 - bbx1), + mode=self.interpolation) + mixed_gt_label = lam * one_hot_gt_label + ( + 1 - lam) * one_hot_gt_label[index, :] + return img, mixed_gt_label diff --git a/openmmlab_test/mmclassification-0.24.1/mmcls/models/utils/augment/utils.py b/openmmlab_test/mmclassification-0.24.1/mmcls/models/utils/augment/utils.py new file mode 100644 index 00000000..e972d54b --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/mmcls/models/utils/augment/utils.py @@ -0,0 +1,24 @@ +# Copyright (c) OpenMMLab. All rights reserved. +import torch.nn.functional as F + + +def one_hot_encoding(gt, num_classes): + """Change gt_label to one_hot encoding. + + If the shape has 2 or more + dimensions, return it without encoding. + Args: + gt (Tensor): The gt label with shape (N,) or shape (N, */). + num_classes (int): The number of classes. + Return: + Tensor: One hot gt label. + """ + if gt.ndim == 1: + # multi-class classification + return F.one_hot(gt, num_classes=num_classes) + else: + # binary classification + # example. [[0], [1], [1]] + # multi-label classification + # example. [[0, 1, 1], [1, 0, 0], [1, 1, 1]] + return gt diff --git a/openmmlab_test/mmclassification-speed-benchmark/mmcls/models/utils/channel_shuffle.py b/openmmlab_test/mmclassification-0.24.1/mmcls/models/utils/channel_shuffle.py similarity index 94% rename from openmmlab_test/mmclassification-speed-benchmark/mmcls/models/utils/channel_shuffle.py rename to openmmlab_test/mmclassification-0.24.1/mmcls/models/utils/channel_shuffle.py index 51d6d98c..27006a80 100644 --- a/openmmlab_test/mmclassification-speed-benchmark/mmcls/models/utils/channel_shuffle.py +++ b/openmmlab_test/mmclassification-0.24.1/mmcls/models/utils/channel_shuffle.py @@ -1,3 +1,4 @@ +# Copyright (c) OpenMMLab. All rights reserved. import torch diff --git a/openmmlab_test/mmclassification-0.24.1/mmcls/models/utils/embed.py b/openmmlab_test/mmclassification-0.24.1/mmcls/models/utils/embed.py new file mode 100644 index 00000000..ff65fc43 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/mmcls/models/utils/embed.py @@ -0,0 +1,420 @@ +# Copyright (c) OpenMMLab. All rights reserved. +import warnings +from typing import Sequence + +import numpy as np +import torch +import torch.nn as nn +import torch.nn.functional as F +from mmcv.cnn import build_conv_layer, build_norm_layer +from mmcv.cnn.bricks.transformer import AdaptivePadding +from mmcv.runner.base_module import BaseModule + +from .helpers import to_2tuple + + +def resize_pos_embed(pos_embed, + src_shape, + dst_shape, + mode='bicubic', + num_extra_tokens=1): + """Resize pos_embed weights. + + Args: + pos_embed (torch.Tensor): Position embedding weights with shape + [1, L, C]. + src_shape (tuple): The resolution of downsampled origin training + image, in format (H, W). + dst_shape (tuple): The resolution of downsampled new training + image, in format (H, W). + mode (str): Algorithm used for upsampling. Choose one from 'nearest', + 'linear', 'bilinear', 'bicubic' and 'trilinear'. + Defaults to 'bicubic'. + num_extra_tokens (int): The number of extra tokens, such as cls_token. + Defaults to 1. + + Returns: + torch.Tensor: The resized pos_embed of shape [1, L_new, C] + """ + if src_shape[0] == dst_shape[0] and src_shape[1] == dst_shape[1]: + return pos_embed + assert pos_embed.ndim == 3, 'shape of pos_embed must be [1, L, C]' + _, L, C = pos_embed.shape + src_h, src_w = src_shape + assert L == src_h * src_w + num_extra_tokens, \ + f"The length of `pos_embed` ({L}) doesn't match the expected " \ + f'shape ({src_h}*{src_w}+{num_extra_tokens}). Please check the' \ + '`img_size` argument.' + extra_tokens = pos_embed[:, :num_extra_tokens] + + src_weight = pos_embed[:, num_extra_tokens:] + src_weight = src_weight.reshape(1, src_h, src_w, C).permute(0, 3, 1, 2) + + dst_weight = F.interpolate( + src_weight, size=dst_shape, align_corners=False, mode=mode) + dst_weight = torch.flatten(dst_weight, 2).transpose(1, 2) + + return torch.cat((extra_tokens, dst_weight), dim=1) + + +def resize_relative_position_bias_table(src_shape, dst_shape, table, num_head): + """Resize relative position bias table. + + Args: + src_shape (int): The resolution of downsampled origin training + image, in format (H, W). + dst_shape (int): The resolution of downsampled new training + image, in format (H, W). + table (tensor): The relative position bias of the pretrained model. + num_head (int): Number of attention heads. + + Returns: + torch.Tensor: The resized relative position bias table. + """ + from scipy import interpolate + + def geometric_progression(a, r, n): + return a * (1.0 - r**n) / (1.0 - r) + + left, right = 1.01, 1.5 + while right - left > 1e-6: + q = (left + right) / 2.0 + gp = geometric_progression(1, q, src_shape // 2) + if gp > dst_shape // 2: + right = q + else: + left = q + + dis = [] + cur = 1 + for i in range(src_shape // 2): + dis.append(cur) + cur += q**(i + 1) + + r_ids = [-_ for _ in reversed(dis)] + + x = r_ids + [0] + dis + y = r_ids + [0] + dis + + t = dst_shape // 2.0 + dx = np.arange(-t, t + 0.1, 1.0) + dy = np.arange(-t, t + 0.1, 1.0) + + all_rel_pos_bias = [] + + for i in range(num_head): + z = table[:, i].view(src_shape, src_shape).float().numpy() + f_cubic = interpolate.interp2d(x, y, z, kind='cubic') + all_rel_pos_bias.append( + torch.Tensor(f_cubic(dx, + dy)).contiguous().view(-1, + 1).to(table.device)) + new_rel_pos_bias = torch.cat(all_rel_pos_bias, dim=-1) + return new_rel_pos_bias + + +class PatchEmbed(BaseModule): + """Image to Patch Embedding. + + We use a conv layer to implement PatchEmbed. + + Args: + img_size (int | tuple): The size of input image. Default: 224 + in_channels (int): The num of input channels. Default: 3 + embed_dims (int): The dimensions of embedding. Default: 768 + norm_cfg (dict, optional): Config dict for normalization layer. + Default: None + conv_cfg (dict, optional): The config dict for conv layers. + Default: None + init_cfg (`mmcv.ConfigDict`, optional): The Config for initialization. + Default: None + """ + + def __init__(self, + img_size=224, + in_channels=3, + embed_dims=768, + norm_cfg=None, + conv_cfg=None, + init_cfg=None): + super(PatchEmbed, self).__init__(init_cfg) + warnings.warn('The `PatchEmbed` in mmcls will be deprecated. ' + 'Please use `mmcv.cnn.bricks.transformer.PatchEmbed`. ' + "It's more general and supports dynamic input shape") + + if isinstance(img_size, int): + img_size = to_2tuple(img_size) + elif isinstance(img_size, tuple): + if len(img_size) == 1: + img_size = to_2tuple(img_size[0]) + assert len(img_size) == 2, \ + f'The size of image should have length 1 or 2, ' \ + f'but got {len(img_size)}' + + self.img_size = img_size + self.embed_dims = embed_dims + + # Use conv layer to embed + conv_cfg = conv_cfg or dict() + _conv_cfg = dict( + type='Conv2d', kernel_size=16, stride=16, padding=0, dilation=1) + _conv_cfg.update(conv_cfg) + self.projection = build_conv_layer(_conv_cfg, in_channels, embed_dims) + + # Calculate how many patches a input image is splited to. + h_out, w_out = [(self.img_size[i] + 2 * self.projection.padding[i] - + self.projection.dilation[i] * + (self.projection.kernel_size[i] - 1) - 1) // + self.projection.stride[i] + 1 for i in range(2)] + + self.patches_resolution = (h_out, w_out) + self.num_patches = h_out * w_out + + if norm_cfg is not None: + self.norm = build_norm_layer(norm_cfg, embed_dims)[1] + else: + self.norm = None + + def forward(self, x): + B, C, H, W = x.shape + assert H == self.img_size[0] and W == self.img_size[1], \ + f"Input image size ({H}*{W}) doesn't " \ + f'match model ({self.img_size[0]}*{self.img_size[1]}).' + # The output size is (B, N, D), where N=H*W/P/P, D is embid_dim + x = self.projection(x).flatten(2).transpose(1, 2) + + if self.norm is not None: + x = self.norm(x) + + return x + + +# Modified from pytorch-image-models +class HybridEmbed(BaseModule): + """CNN Feature Map Embedding. + + Extract feature map from CNN, flatten, + project to embedding dim. + + Args: + backbone (nn.Module): CNN backbone + img_size (int | tuple): The size of input image. Default: 224 + feature_size (int | tuple, optional): Size of feature map extracted by + CNN backbone. Default: None + in_channels (int): The num of input channels. Default: 3 + embed_dims (int): The dimensions of embedding. Default: 768 + conv_cfg (dict, optional): The config dict for conv layers. + Default: None. + init_cfg (`mmcv.ConfigDict`, optional): The Config for initialization. + Default: None. + """ + + def __init__(self, + backbone, + img_size=224, + feature_size=None, + in_channels=3, + embed_dims=768, + conv_cfg=None, + init_cfg=None): + super(HybridEmbed, self).__init__(init_cfg) + assert isinstance(backbone, nn.Module) + if isinstance(img_size, int): + img_size = to_2tuple(img_size) + elif isinstance(img_size, tuple): + if len(img_size) == 1: + img_size = to_2tuple(img_size[0]) + assert len(img_size) == 2, \ + f'The size of image should have length 1 or 2, ' \ + f'but got {len(img_size)}' + + self.img_size = img_size + self.backbone = backbone + if feature_size is None: + with torch.no_grad(): + # FIXME this is hacky, but most reliable way of + # determining the exact dim of the output feature + # map for all networks, the feature metadata has + # reliable channel and stride info, but using + # stride to calc feature dim requires info about padding of + # each stage that isn't captured. + training = backbone.training + if training: + backbone.eval() + o = self.backbone( + torch.zeros(1, in_channels, img_size[0], img_size[1])) + if isinstance(o, (list, tuple)): + # last feature if backbone outputs list/tuple of features + o = o[-1] + feature_size = o.shape[-2:] + feature_dim = o.shape[1] + backbone.train(training) + else: + feature_size = to_2tuple(feature_size) + if hasattr(self.backbone, 'feature_info'): + feature_dim = self.backbone.feature_info.channels()[-1] + else: + feature_dim = self.backbone.num_features + self.num_patches = feature_size[0] * feature_size[1] + + # Use conv layer to embed + conv_cfg = conv_cfg or dict() + _conv_cfg = dict( + type='Conv2d', kernel_size=1, stride=1, padding=0, dilation=1) + _conv_cfg.update(conv_cfg) + self.projection = build_conv_layer(_conv_cfg, feature_dim, embed_dims) + + def forward(self, x): + x = self.backbone(x) + if isinstance(x, (list, tuple)): + # last feature if backbone outputs list/tuple of features + x = x[-1] + x = self.projection(x).flatten(2).transpose(1, 2) + return x + + +class PatchMerging(BaseModule): + """Merge patch feature map. Modified from mmcv, which uses pre-norm layer + whereas Swin V2 uses post-norm here. Therefore, add extra parameter to + decide whether use post-norm or not. + + This layer groups feature map by kernel_size, and applies norm and linear + layers to the grouped feature map ((used in Swin Transformer)). + Our implementation uses `nn.Unfold` to + merge patches, which is about 25% faster than the original + implementation. However, we need to modify pretrained + models for compatibility. + + Args: + in_channels (int): The num of input channels. + to gets fully covered by filter and stride you specified. + out_channels (int): The num of output channels. + kernel_size (int | tuple, optional): the kernel size in the unfold + layer. Defaults to 2. + stride (int | tuple, optional): the stride of the sliding blocks in the + unfold layer. Defaults to None. (Would be set as `kernel_size`) + padding (int | tuple | string ): The padding length of + embedding conv. When it is a string, it means the mode + of adaptive padding, support "same" and "corner" now. + Defaults to "corner". + dilation (int | tuple, optional): dilation parameter in the unfold + layer. Default: 1. + bias (bool, optional): Whether to add bias in linear layer or not. + Defaults to False. + norm_cfg (dict, optional): Config dict for normalization layer. + Defaults to dict(type='LN'). + is_post_norm (bool): Whether to use post normalization here. + Defaults to False. + init_cfg (dict, optional): The extra config for initialization. + Defaults to None. + """ + + def __init__(self, + in_channels, + out_channels, + kernel_size=2, + stride=None, + padding='corner', + dilation=1, + bias=False, + norm_cfg=dict(type='LN'), + is_post_norm=False, + init_cfg=None): + super().__init__(init_cfg=init_cfg) + self.in_channels = in_channels + self.out_channels = out_channels + self.is_post_norm = is_post_norm + + if stride: + stride = stride + else: + stride = kernel_size + + kernel_size = to_2tuple(kernel_size) + stride = to_2tuple(stride) + dilation = to_2tuple(dilation) + + if isinstance(padding, str): + self.adaptive_padding = AdaptivePadding( + kernel_size=kernel_size, + stride=stride, + dilation=dilation, + padding=padding) + # disable the padding of unfold + padding = 0 + else: + self.adaptive_padding = None + + padding = to_2tuple(padding) + self.sampler = nn.Unfold( + kernel_size=kernel_size, + dilation=dilation, + padding=padding, + stride=stride) + + sample_dim = kernel_size[0] * kernel_size[1] * in_channels + + self.reduction = nn.Linear(sample_dim, out_channels, bias=bias) + + if norm_cfg is not None: + # build pre or post norm layer based on different channels + if self.is_post_norm: + self.norm = build_norm_layer(norm_cfg, out_channels)[1] + else: + self.norm = build_norm_layer(norm_cfg, sample_dim)[1] + else: + self.norm = None + + def forward(self, x, input_size): + """ + Args: + x (Tensor): Has shape (B, H*W, C_in). + input_size (tuple[int]): The spatial shape of x, arrange as (H, W). + Default: None. + + Returns: + tuple: Contains merged results and its spatial shape. + + - x (Tensor): Has shape (B, Merged_H * Merged_W, C_out) + - out_size (tuple[int]): Spatial shape of x, arrange as + (Merged_H, Merged_W). + """ + B, L, C = x.shape + assert isinstance(input_size, Sequence), f'Expect ' \ + f'input_size is ' \ + f'`Sequence` ' \ + f'but get {input_size}' + + H, W = input_size + assert L == H * W, 'input feature has wrong size' + + x = x.view(B, H, W, C).permute([0, 3, 1, 2]) # B, C, H, W + + if self.adaptive_padding: + x = self.adaptive_padding(x) + H, W = x.shape[-2:] + + # Use nn.Unfold to merge patch. About 25% faster than original method, + # but need to modify pretrained model for compatibility + # if kernel_size=2 and stride=2, x should has shape (B, 4*C, H/2*W/2) + x = self.sampler(x) + + out_h = (H + 2 * self.sampler.padding[0] - self.sampler.dilation[0] * + (self.sampler.kernel_size[0] - 1) - + 1) // self.sampler.stride[0] + 1 + out_w = (W + 2 * self.sampler.padding[1] - self.sampler.dilation[1] * + (self.sampler.kernel_size[1] - 1) - + 1) // self.sampler.stride[1] + 1 + + output_size = (out_h, out_w) + x = x.transpose(1, 2) # B, H/2*W/2, 4*C + + if self.is_post_norm: + # use post-norm here + x = self.reduction(x) + x = self.norm(x) if self.norm else x + else: + x = self.norm(x) if self.norm else x + x = self.reduction(x) + + return x, output_size diff --git a/openmmlab_test/mmclassification-0.24.1/mmcls/models/utils/helpers.py b/openmmlab_test/mmclassification-0.24.1/mmcls/models/utils/helpers.py new file mode 100644 index 00000000..bf55424f --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/mmcls/models/utils/helpers.py @@ -0,0 +1,53 @@ +# Copyright (c) OpenMMLab. All rights reserved. +import collections.abc +import warnings +from itertools import repeat + +import torch +from mmcv.utils import digit_version + + +def is_tracing() -> bool: + """Determine whether the model is called during the tracing of code with + ``torch.jit.trace``.""" + if digit_version(torch.__version__) >= digit_version('1.6.0'): + on_trace = torch.jit.is_tracing() + # In PyTorch 1.6, torch.jit.is_tracing has a bug. + # Refers to https://github.com/pytorch/pytorch/issues/42448 + if isinstance(on_trace, bool): + return on_trace + else: + return torch._C._is_tracing() + else: + warnings.warn( + 'torch.jit.is_tracing is only supported after v1.6.0. ' + 'Therefore is_tracing returns False automatically. Please ' + 'set on_trace manually if you are using trace.', UserWarning) + return False + + +# From PyTorch internals +def _ntuple(n): + """A `to_tuple` function generator. + + It returns a function, this function will repeat the input to a tuple of + length ``n`` if the input is not an Iterable object, otherwise, return the + input directly. + + Args: + n (int): The number of the target length. + """ + + def parse(x): + if isinstance(x, collections.abc.Iterable): + return x + return tuple(repeat(x, n)) + + return parse + + +to_1tuple = _ntuple(1) +to_2tuple = _ntuple(2) +to_3tuple = _ntuple(3) +to_4tuple = _ntuple(4) +to_ntuple = _ntuple diff --git a/openmmlab_test/mmclassification-0.24.1/mmcls/models/utils/inverted_residual.py b/openmmlab_test/mmclassification-0.24.1/mmcls/models/utils/inverted_residual.py new file mode 100644 index 00000000..7c432943 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/mmcls/models/utils/inverted_residual.py @@ -0,0 +1,125 @@ +# Copyright (c) OpenMMLab. All rights reserved. +import torch.nn as nn +import torch.utils.checkpoint as cp +from mmcv.cnn import ConvModule +from mmcv.cnn.bricks import DropPath +from mmcv.runner import BaseModule + +from .se_layer import SELayer + + +class InvertedResidual(BaseModule): + """Inverted Residual Block. + + Args: + in_channels (int): The input channels of this module. + out_channels (int): The output channels of this module. + mid_channels (int): The input channels of the depthwise convolution. + kernel_size (int): The kernel size of the depthwise convolution. + Defaults to 3. + stride (int): The stride of the depthwise convolution. Defaults to 1. + se_cfg (dict, optional): Config dict for se layer. Defaults to None, + which means no se layer. + conv_cfg (dict): Config dict for convolution layer. Defaults to None, + which means using conv2d. + norm_cfg (dict): Config dict for normalization layer. + Defaults to ``dict(type='BN')``. + act_cfg (dict): Config dict for activation layer. + Defaults to ``dict(type='ReLU')``. + drop_path_rate (float): stochastic depth rate. Defaults to 0. + with_cp (bool): Use checkpoint or not. Using checkpoint will save some + memory while slowing down the training speed. Defaults to False. + init_cfg (dict | list[dict], optional): Initialization config dict. + """ + + def __init__(self, + in_channels, + out_channels, + mid_channels, + kernel_size=3, + stride=1, + se_cfg=None, + conv_cfg=None, + norm_cfg=dict(type='BN'), + act_cfg=dict(type='ReLU'), + drop_path_rate=0., + with_cp=False, + init_cfg=None): + super(InvertedResidual, self).__init__(init_cfg) + self.with_res_shortcut = (stride == 1 and in_channels == out_channels) + assert stride in [1, 2] + self.with_cp = with_cp + self.drop_path = DropPath( + drop_path_rate) if drop_path_rate > 0 else nn.Identity() + self.with_se = se_cfg is not None + self.with_expand_conv = (mid_channels != in_channels) + + if self.with_se: + assert isinstance(se_cfg, dict) + + if self.with_expand_conv: + self.expand_conv = ConvModule( + in_channels=in_channels, + out_channels=mid_channels, + kernel_size=1, + stride=1, + padding=0, + conv_cfg=conv_cfg, + norm_cfg=norm_cfg, + act_cfg=act_cfg) + self.depthwise_conv = ConvModule( + in_channels=mid_channels, + out_channels=mid_channels, + kernel_size=kernel_size, + stride=stride, + padding=kernel_size // 2, + groups=mid_channels, + conv_cfg=conv_cfg, + norm_cfg=norm_cfg, + act_cfg=act_cfg) + if self.with_se: + self.se = SELayer(**se_cfg) + self.linear_conv = ConvModule( + in_channels=mid_channels, + out_channels=out_channels, + kernel_size=1, + stride=1, + padding=0, + conv_cfg=conv_cfg, + norm_cfg=norm_cfg, + act_cfg=None) + + def forward(self, x): + """Forward function. + + Args: + x (torch.Tensor): The input tensor. + + Returns: + torch.Tensor: The output tensor. + """ + + def _inner_forward(x): + out = x + + if self.with_expand_conv: + out = self.expand_conv(out) + + out = self.depthwise_conv(out) + + if self.with_se: + out = self.se(out) + + out = self.linear_conv(out) + + if self.with_res_shortcut: + return x + self.drop_path(out) + else: + return out + + if self.with_cp and x.requires_grad: + out = cp.checkpoint(_inner_forward, x) + else: + out = _inner_forward(x) + + return out diff --git a/openmmlab_test/mmclassification-0.24.1/mmcls/models/utils/layer_scale.py b/openmmlab_test/mmclassification-0.24.1/mmcls/models/utils/layer_scale.py new file mode 100644 index 00000000..fbd89bc2 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/mmcls/models/utils/layer_scale.py @@ -0,0 +1,35 @@ +# Copyright (c) OpenMMLab. All rights reserved. +import torch +from torch import nn + + +class LayerScale(nn.Module): + """LayerScale layer. + + Args: + dim (int): Dimension of input features. + inplace (bool): inplace: can optionally do the + operation in-place. Default: ``False`` + data_format (str): The input data format, can be 'channels_last' + and 'channels_first', representing (B, C, H, W) and + (B, N, C) format data respectively. + """ + + def __init__(self, + dim: int, + inplace: bool = False, + data_format: str = 'channels_last'): + super().__init__() + assert data_format in ('channels_last', 'channels_first'), \ + "'data_format' could only be channels_last or channels_first." + self.inplace = inplace + self.data_format = data_format + self.weight = nn.Parameter(torch.ones(dim) * 1e-5) + + def forward(self, x): + if self.data_format == 'channels_first': + if self.inplace: + return x.mul_(self.weight.view(-1, 1, 1)) + else: + return x * self.weight.view(-1, 1, 1) + return x.mul_(self.weight) if self.inplace else x * self.weight diff --git a/openmmlab_test/mmclassification-speed-benchmark/mmcls/models/utils/make_divisible.py b/openmmlab_test/mmclassification-0.24.1/mmcls/models/utils/make_divisible.py similarity index 95% rename from openmmlab_test/mmclassification-speed-benchmark/mmcls/models/utils/make_divisible.py rename to openmmlab_test/mmclassification-0.24.1/mmcls/models/utils/make_divisible.py index dbf66dc7..1ec74689 100644 --- a/openmmlab_test/mmclassification-speed-benchmark/mmcls/models/utils/make_divisible.py +++ b/openmmlab_test/mmclassification-0.24.1/mmcls/models/utils/make_divisible.py @@ -1,3 +1,4 @@ +# Copyright (c) OpenMMLab. All rights reserved. def make_divisible(value, divisor, min_value=None, min_ratio=0.9): """Make divisible function. diff --git a/openmmlab_test/mmclassification-0.24.1/mmcls/models/utils/position_encoding.py b/openmmlab_test/mmclassification-0.24.1/mmcls/models/utils/position_encoding.py new file mode 100644 index 00000000..99f32de0 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/mmcls/models/utils/position_encoding.py @@ -0,0 +1,41 @@ +# Copyright (c) OpenMMLab. All rights reserved. +import torch.nn as nn +from mmcv.runner.base_module import BaseModule + + +class ConditionalPositionEncoding(BaseModule): + """The Conditional Position Encoding (CPE) module. + + The CPE is the implementation of 'Conditional Positional Encodings + for Vision Transformers '_. + + Args: + in_channels (int): Number of input channels. + embed_dims (int): The feature dimension. Default: 768. + stride (int): Stride of conv layer. Default: 1. + """ + + def __init__(self, in_channels, embed_dims=768, stride=1, init_cfg=None): + super(ConditionalPositionEncoding, self).__init__(init_cfg=init_cfg) + self.proj = nn.Conv2d( + in_channels, + embed_dims, + kernel_size=3, + stride=stride, + padding=1, + bias=True, + groups=embed_dims) + self.stride = stride + + def forward(self, x, hw_shape): + B, N, C = x.shape + H, W = hw_shape + feat_token = x + # convert (B, N, C) to (B, C, H, W) + cnn_feat = feat_token.transpose(1, 2).view(B, C, H, W).contiguous() + if self.stride == 1: + x = self.proj(cnn_feat) + cnn_feat + else: + x = self.proj(cnn_feat) + x = x.flatten(2).transpose(1, 2) + return x diff --git a/openmmlab_test/mmclassification-0.24.1/mmcls/models/utils/se_layer.py b/openmmlab_test/mmclassification-0.24.1/mmcls/models/utils/se_layer.py new file mode 100644 index 00000000..47a830ac --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/mmcls/models/utils/se_layer.py @@ -0,0 +1,80 @@ +# Copyright (c) OpenMMLab. All rights reserved. +import mmcv +import torch.nn as nn +from mmcv.cnn import ConvModule +from mmcv.runner import BaseModule + +from .make_divisible import make_divisible + + +class SELayer(BaseModule): + """Squeeze-and-Excitation Module. + + Args: + channels (int): The input (and output) channels of the SE layer. + squeeze_channels (None or int): The intermediate channel number of + SElayer. Default: None, means the value of ``squeeze_channels`` + is ``make_divisible(channels // ratio, divisor)``. + ratio (int): Squeeze ratio in SELayer, the intermediate channel will + be ``make_divisible(channels // ratio, divisor)``. Only used when + ``squeeze_channels`` is None. Default: 16. + divisor(int): The divisor to true divide the channel number. Only + used when ``squeeze_channels`` is None. Default: 8. + conv_cfg (None or dict): Config dict for convolution layer. Default: + None, which means using conv2d. + return_weight(bool): Whether to return the weight. Default: False. + act_cfg (dict or Sequence[dict]): Config dict for activation layer. + If act_cfg is a dict, two activation layers will be configurated + by this dict. If act_cfg is a sequence of dicts, the first + activation layer will be configurated by the first dict and the + second activation layer will be configurated by the second dict. + Default: (dict(type='ReLU'), dict(type='Sigmoid')) + """ + + def __init__(self, + channels, + squeeze_channels=None, + ratio=16, + divisor=8, + bias='auto', + conv_cfg=None, + act_cfg=(dict(type='ReLU'), dict(type='Sigmoid')), + return_weight=False, + init_cfg=None): + super(SELayer, self).__init__(init_cfg) + if isinstance(act_cfg, dict): + act_cfg = (act_cfg, act_cfg) + assert len(act_cfg) == 2 + assert mmcv.is_tuple_of(act_cfg, dict) + self.global_avgpool = nn.AdaptiveAvgPool2d(1) + if squeeze_channels is None: + squeeze_channels = make_divisible(channels // ratio, divisor) + assert isinstance(squeeze_channels, int) and squeeze_channels > 0, \ + '"squeeze_channels" should be a positive integer, but get ' + \ + f'{squeeze_channels} instead.' + self.return_weight = return_weight + self.conv1 = ConvModule( + in_channels=channels, + out_channels=squeeze_channels, + kernel_size=1, + stride=1, + bias=bias, + conv_cfg=conv_cfg, + act_cfg=act_cfg[0]) + self.conv2 = ConvModule( + in_channels=squeeze_channels, + out_channels=channels, + kernel_size=1, + stride=1, + bias=bias, + conv_cfg=conv_cfg, + act_cfg=act_cfg[1]) + + def forward(self, x): + out = self.global_avgpool(x) + out = self.conv1(out) + out = self.conv2(out) + if self.return_weight: + return out + else: + return x * out diff --git a/openmmlab_test/mmclassification-0.24.1/mmcls/utils/__init__.py b/openmmlab_test/mmclassification-0.24.1/mmcls/utils/__init__.py new file mode 100644 index 00000000..abfea81b --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/mmcls/utils/__init__.py @@ -0,0 +1,12 @@ +# Copyright (c) OpenMMLab. All rights reserved. +from .collect_env import collect_env +from .device import auto_select_device +from .distribution import wrap_distributed_model, wrap_non_distributed_model +from .logger import get_root_logger, load_json_log +from .setup_env import setup_multi_processes + +__all__ = [ + 'collect_env', 'get_root_logger', 'load_json_log', 'setup_multi_processes', + 'wrap_non_distributed_model', 'wrap_distributed_model', + 'auto_select_device' +] diff --git a/openmmlab_test/mmclassification-speed-benchmark/mmcls/utils/collect_env.py b/openmmlab_test/mmclassification-0.24.1/mmcls/utils/collect_env.py similarity index 89% rename from openmmlab_test/mmclassification-speed-benchmark/mmcls/utils/collect_env.py rename to openmmlab_test/mmclassification-0.24.1/mmcls/utils/collect_env.py index f889ecf6..adb5030f 100644 --- a/openmmlab_test/mmclassification-speed-benchmark/mmcls/utils/collect_env.py +++ b/openmmlab_test/mmclassification-0.24.1/mmcls/utils/collect_env.py @@ -1,3 +1,4 @@ +# Copyright (c) OpenMMLab. All rights reserved. from mmcv.utils import collect_env as collect_base_env from mmcv.utils import get_git_hash diff --git a/openmmlab_test/mmclassification-0.24.1/mmcls/utils/device.py b/openmmlab_test/mmclassification-0.24.1/mmcls/utils/device.py new file mode 100644 index 00000000..ee4848ad --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/mmcls/utils/device.py @@ -0,0 +1,15 @@ +# Copyright (c) OpenMMLab. All rights reserved. +import mmcv +import torch +from mmcv.utils import digit_version + + +def auto_select_device() -> str: + mmcv_version = digit_version(mmcv.__version__) + if mmcv_version >= digit_version('1.6.0'): + from mmcv.device import get_device + return get_device() + elif torch.cuda.is_available(): + return 'cuda' + else: + return 'cpu' diff --git a/openmmlab_test/mmclassification-0.24.1/mmcls/utils/distribution.py b/openmmlab_test/mmclassification-0.24.1/mmcls/utils/distribution.py new file mode 100644 index 00000000..d57bd2b5 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/mmcls/utils/distribution.py @@ -0,0 +1,68 @@ +# Copyright (c) OpenMMLab. All rights reserved. + + +def wrap_non_distributed_model(model, device='cuda', dim=0, *args, **kwargs): + """Wrap module in non-distributed environment by device type. + + - For CUDA, wrap as :obj:`mmcv.parallel.MMDataParallel`. + - For MPS, wrap as :obj:`mmcv.device.mps.MPSDataParallel`. + - For CPU & IPU, not wrap the model. + + Args: + model(:class:`nn.Module`): model to be parallelized. + device(str): device type, cuda, cpu or mlu. Defaults to cuda. + dim(int): Dimension used to scatter the data. Defaults to 0. + + Returns: + model(nn.Module): the model to be parallelized. + """ + if device == 'npu': + from mmcv.device.npu import NPUDataParallel + model = NPUDataParallel(model.npu(), dim=dim, *args, **kwargs) + elif device == 'cuda': + from mmcv.parallel import MMDataParallel + model = MMDataParallel(model.cuda(), dim=dim, *args, **kwargs) + elif device == 'cpu': + model = model.cpu() + elif device == 'ipu': + model = model.cpu() + elif device == 'mps': + from mmcv.device import mps + model = mps.MPSDataParallel(model.to('mps'), dim=dim, *args, **kwargs) + else: + raise RuntimeError(f'Unavailable device "{device}"') + + return model + + +def wrap_distributed_model(model, device='cuda', *args, **kwargs): + """Build DistributedDataParallel module by device type. + + - For CUDA, wrap as :obj:`mmcv.parallel.MMDistributedDataParallel`. + - Other device types are not supported by now. + + Args: + model(:class:`nn.Module`): module to be parallelized. + device(str): device type, mlu or cuda. + + Returns: + model(:class:`nn.Module`): the module to be parallelized + + References: + .. [1] https://pytorch.org/docs/stable/generated/torch.nn.parallel. + DistributedDataParallel.html + """ + if device == 'npu': + from mmcv.device.npu import NPUDistributedDataParallel + from torch.npu import current_device + model = NPUDistributedDataParallel( + model.npu(), *args, device_ids=[current_device()], **kwargs) + elif device == 'cuda': + from mmcv.parallel import MMDistributedDataParallel + from torch.cuda import current_device + model = MMDistributedDataParallel( + model.cuda(), *args, device_ids=[current_device()], **kwargs) + else: + raise RuntimeError(f'Unavailable device "{device}"') + + return model diff --git a/openmmlab_test/mmclassification-0.24.1/mmcls/utils/logger.py b/openmmlab_test/mmclassification-0.24.1/mmcls/utils/logger.py new file mode 100644 index 00000000..2d77fcb9 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/mmcls/utils/logger.py @@ -0,0 +1,56 @@ +# Copyright (c) OpenMMLab. All rights reserved. +import json +import logging +from collections import defaultdict + +from mmcv.utils import get_logger + + +def get_root_logger(log_file=None, log_level=logging.INFO): + """Get root logger. + + Args: + log_file (str, optional): File path of log. Defaults to None. + log_level (int, optional): The level of logger. + Defaults to :obj:`logging.INFO`. + + Returns: + :obj:`logging.Logger`: The obtained logger + """ + return get_logger('mmcls', log_file, log_level) + + +def load_json_log(json_log): + """load and convert json_logs to log_dicts. + + Args: + json_log (str): The path of the json log file. + + Returns: + dict[int, dict[str, list]]: + Key is the epoch, value is a sub dict. The keys in each sub dict + are different metrics, e.g. memory, bbox_mAP, and the value is a + list of corresponding values in all iterations in this epoch. + + .. code-block:: python + + # An example output + { + 1: {'iter': [100, 200, 300], 'loss': [6.94, 6.73, 6.53]}, + 2: {'iter': [100, 200, 300], 'loss': [6.33, 6.20, 6.07]}, + ... + } + """ + log_dict = dict() + with open(json_log, 'r') as log_file: + for line in log_file: + log = json.loads(line.strip()) + # skip lines without `epoch` field + if 'epoch' not in log: + continue + epoch = log.pop('epoch') + if epoch not in log_dict: + log_dict[epoch] = defaultdict(list) + for k, v in log.items(): + log_dict[epoch][k].append(v) + return log_dict diff --git a/openmmlab_test/mmclassification-0.24.1/mmcls/utils/setup_env.py b/openmmlab_test/mmclassification-0.24.1/mmcls/utils/setup_env.py new file mode 100644 index 00000000..21def2f0 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/mmcls/utils/setup_env.py @@ -0,0 +1,47 @@ +# Copyright (c) OpenMMLab. All rights reserved. +import os +import platform +import warnings + +import cv2 +import torch.multiprocessing as mp + + +def setup_multi_processes(cfg): + """Setup multi-processing environment variables.""" + # set multi-process start method as `fork` to speed up the training + if platform.system() != 'Windows': + mp_start_method = cfg.get('mp_start_method', 'fork') + current_method = mp.get_start_method(allow_none=True) + if current_method is not None and current_method != mp_start_method: + warnings.warn( + f'Multi-processing start method `{mp_start_method}` is ' + f'different from the previous setting `{current_method}`.' + f'It will be force set to `{mp_start_method}`. You can change ' + f'this behavior by changing `mp_start_method` in your config.') + mp.set_start_method(mp_start_method, force=True) + + # disable opencv multithreading to avoid system being overloaded + opencv_num_threads = cfg.get('opencv_num_threads', 0) + cv2.setNumThreads(opencv_num_threads) + + # setup OMP threads + # This code is referred from https://github.com/pytorch/pytorch/blob/master/torch/distributed/run.py # noqa + if 'OMP_NUM_THREADS' not in os.environ and cfg.data.workers_per_gpu > 1: + omp_num_threads = 1 + warnings.warn( + f'Setting OMP_NUM_THREADS environment variable for each process ' + f'to be {omp_num_threads} in default, to avoid your system being ' + f'overloaded, please further tune the variable for optimal ' + f'performance in your application as needed.') + os.environ['OMP_NUM_THREADS'] = str(omp_num_threads) + + # setup MKL threads + if 'MKL_NUM_THREADS' not in os.environ and cfg.data.workers_per_gpu > 1: + mkl_num_threads = 1 + warnings.warn( + f'Setting MKL_NUM_THREADS environment variable for each process ' + f'to be {mkl_num_threads} in default, to avoid your system being ' + f'overloaded, please further tune the variable for optimal ' + f'performance in your application as needed.') + os.environ['MKL_NUM_THREADS'] = str(mkl_num_threads) diff --git a/openmmlab_test/mmclassification-speed-benchmark/mmcls/version.py b/openmmlab_test/mmclassification-0.24.1/mmcls/version.py similarity index 91% rename from openmmlab_test/mmclassification-speed-benchmark/mmcls/version.py rename to openmmlab_test/mmclassification-0.24.1/mmcls/version.py index a9c00fb1..42df0388 100644 --- a/openmmlab_test/mmclassification-speed-benchmark/mmcls/version.py +++ b/openmmlab_test/mmclassification-0.24.1/mmcls/version.py @@ -1,6 +1,6 @@ -# Copyright (c) Open-MMLab. All rights reserved. +# Copyright (c) OpenMMLab. All rights reserved -__version__ = '0.12.0' +__version__ = '0.24.1' def parse_version_info(version_str): diff --git a/openmmlab_test/mmclassification-0.24.1/model-index.yml b/openmmlab_test/mmclassification-0.24.1/model-index.yml new file mode 100644 index 00000000..56c7dc97 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/model-index.yml @@ -0,0 +1,34 @@ +Import: + - configs/mobilenet_v2/metafile.yml + - configs/resnet/metafile.yml + - configs/res2net/metafile.yml + - configs/resnext/metafile.yml + - configs/seresnet/metafile.yml + - configs/shufflenet_v1/metafile.yml + - configs/shufflenet_v2/metafile.yml + - configs/swin_transformer/metafile.yml + - configs/swin_transformer_v2/metafile.yml + - configs/vgg/metafile.yml + - configs/repvgg/metafile.yml + - configs/tnt/metafile.yml + - configs/vision_transformer/metafile.yml + - configs/t2t_vit/metafile.yml + - configs/mlp_mixer/metafile.yml + - configs/conformer/metafile.yml + - configs/regnet/metafile.yml + - configs/deit/metafile.yml + - configs/twins/metafile.yml + - configs/efficientnet/metafile.yml + - configs/convnext/metafile.yml + - configs/hrnet/metafile.yml + - configs/repmlp/metafile.yml + - configs/wrn/metafile.yml + - configs/van/metafile.yml + - configs/cspnet/metafile.yml + - configs/convmixer/metafile.yml + - configs/densenet/metafile.yml + - configs/poolformer/metafile.yml + - configs/csra/metafile.yml + - configs/mvit/metafile.yml + - configs/efficientformer/metafile.yml + - configs/hornet/metafile.yml diff --git a/openmmlab_test/mmclassification-0.24.1/mult_test.sh b/openmmlab_test/mmclassification-0.24.1/mult_test.sh new file mode 100644 index 00000000..ecf6f5fd --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/mult_test.sh @@ -0,0 +1,7 @@ +export MIOPEN_FIND_MODE=1 +export MIOPEN_USE_APPROXIMATE_PERFORMANCE=0 +export HSA_FORCE_FINE_GRAIN_PCIE=1 +./tools/dist_test.sh configs/vgg/vgg16_8xb32_in1k.py models/vgg16_bn_batch256_imagenet_20210208-7e55cd29.pth 4 --metrics=accuracy --metric-options=topk=5 2>&1 | tee fp16_vgg16.log +./tools/dist_test.sh configs/resnet/resnet50_8xb32_in1k.py models/resnet50_8xb32_in1k_20210831-ea4938fc.pth 4 --metrics=accuracy --metric-options=topk=5 2>&1 | tee fp16_resnet50.log +./tools/dist_test.sh configs/shufflenet_v2/shufflenet-v2-1x_16xb64_in1k.py models/shufflenet_v2_batch1024_imagenet_20200812-5bf4721e.pth 4 --metrics=accuracy --metric-options=topk=5 2>&1 | tee fp16_shufflenet_v2.log +./tools/dist_test.sh configs/mobilenet_v2/mobilenet-v2_8xb32_in1k.py models/mobilenet_v2_batch256_imagenet_20200708-3b2dc3af.pth 4 --metrics=accuracy --metric-options=topk=5 2>&1 | tee fp16_mobilenet_v2.log diff --git a/openmmlab_test/mmclassification-speed-benchmark/requirements.txt b/openmmlab_test/mmclassification-0.24.1/requirements.txt similarity index 100% rename from openmmlab_test/mmclassification-speed-benchmark/requirements.txt rename to openmmlab_test/mmclassification-0.24.1/requirements.txt diff --git a/openmmlab_test/mmclassification-0.24.1/requirements/docs.txt b/openmmlab_test/mmclassification-0.24.1/requirements/docs.txt new file mode 100644 index 00000000..41b221f0 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/requirements/docs.txt @@ -0,0 +1,6 @@ +docutils==0.17.1 +myst-parser +-e git+https://github.com/open-mmlab/pytorch_sphinx_theme.git#egg=pytorch_sphinx_theme +sphinx==4.5.0 +sphinx-copybutton +sphinx_markdown_tables diff --git a/openmmlab_test/mmclassification-0.24.1/requirements/mminstall.txt b/openmmlab_test/mmclassification-0.24.1/requirements/mminstall.txt new file mode 100644 index 00000000..be7abf02 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/requirements/mminstall.txt @@ -0,0 +1 @@ +mmcv-full>=1.4.2,<1.9.0 diff --git a/openmmlab_test/mmclassification-0.24.1/requirements/optional.txt b/openmmlab_test/mmclassification-0.24.1/requirements/optional.txt new file mode 100644 index 00000000..cc022804 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/requirements/optional.txt @@ -0,0 +1,5 @@ +albumentations>=0.3.2 --no-binary qudida,albumentations +colorama +requests +rich +scipy diff --git a/openmmlab_test/mmclassification-0.24.1/requirements/readthedocs.txt b/openmmlab_test/mmclassification-0.24.1/requirements/readthedocs.txt new file mode 100644 index 00000000..3b346257 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/requirements/readthedocs.txt @@ -0,0 +1,3 @@ +mmcv>=1.4.2 +torch +torchvision diff --git a/openmmlab_test/mmclassification-0.24.1/requirements/runtime.txt b/openmmlab_test/mmclassification-0.24.1/requirements/runtime.txt new file mode 100644 index 00000000..0df372f7 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/requirements/runtime.txt @@ -0,0 +1,3 @@ +matplotlib>=3.1.0 +numpy +packaging diff --git a/openmmlab_test/mmclassification-speed-benchmark/requirements/tests.txt b/openmmlab_test/mmclassification-0.24.1/requirements/tests.txt similarity index 92% rename from openmmlab_test/mmclassification-speed-benchmark/requirements/tests.txt rename to openmmlab_test/mmclassification-0.24.1/requirements/tests.txt index 4babae51..29d351b5 100644 --- a/openmmlab_test/mmclassification-speed-benchmark/requirements/tests.txt +++ b/openmmlab_test/mmclassification-0.24.1/requirements/tests.txt @@ -2,6 +2,7 @@ codecov flake8 interrogate isort==4.3.21 +mmdet pytest xdoctest >= 0.10.0 yapf diff --git a/openmmlab_test/mmclassification-0.24.1/resources/mmcls-logo.png b/openmmlab_test/mmclassification-0.24.1/resources/mmcls-logo.png new file mode 100644 index 0000000000000000000000000000000000000000..6e65420ab9b63bc8080d1156372e6822e0efe15a GIT binary patch literal 33009 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

qg0|u#M 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', '==', '>']) + ')' + parts = re.split(pat, line, maxsplit=1) + parts = [p.strip() for p in parts] + + info['package'] = parts[0] + if len(parts) > 1: + op, rest = parts[1:] + if ';' in rest: + # Handle platform specific dependencies + # http://setuptools.readthedocs.io/en/latest/setuptools.html#declaring-platform-specific-dependencies + version, platform_deps = map(str.strip, + rest.split(';')) + info['platform_deps'] = platform_deps + else: + version = rest # NOQA + if '--' in version: + # the `extras_require` doesn't accept options. + version = version.split('--')[0].strip() + info['version'] = (op, version) + yield info + + def parse_require_file(fpath): + with open(fpath, 'r') as f: + for line in f.readlines(): + line = line.strip() + if line and not line.startswith('#'): + for info in parse_line(line): + yield info + + def gen_packages_items(): + if exists(require_fpath): + for info in parse_require_file(require_fpath): + parts = [info['package']] + if with_version and 'version' in info: + parts.extend(info['version']) + if not sys.version.startswith('3.4'): + # apparently package_deps are broken in 3.4 + platform_deps = info.get('platform_deps') + if platform_deps is not None: + parts.append(';' + platform_deps) + item = ''.join(parts) + yield item + + packages = list(gen_packages_items()) + return packages + + +def add_mim_extension(): + """Add extra files that are required to support MIM into the package. + + These files will be added by creating a symlink to the originals if the + package is installed in `editable` mode (e.g. pip install -e .), or by + copying from the originals otherwise. + """ + + # parse installment mode + if 'develop' in sys.argv: + # installed by `pip install -e .` + mode = 'symlink' + elif 'sdist' in sys.argv or 'bdist_wheel' in sys.argv: + # installed by `pip install .` + # or create source distribution by `python setup.py sdist` + mode = 'copy' + else: + return + + filenames = ['tools', 'configs', 'model-index.yml'] + repo_path = osp.dirname(__file__) + mim_path = osp.join(repo_path, 'mmcls', '.mim') + os.makedirs(mim_path, exist_ok=True) + + for filename in filenames: + if osp.exists(filename): + src_path = osp.join(repo_path, filename) + tar_path = osp.join(mim_path, filename) + + if osp.isfile(tar_path) or osp.islink(tar_path): + os.remove(tar_path) + elif osp.isdir(tar_path): + shutil.rmtree(tar_path) + + if mode == 'symlink': + src_relpath = osp.relpath(src_path, osp.dirname(tar_path)) + try: + os.symlink(src_relpath, tar_path) + except OSError: + # Creating a symbolic link on windows may raise an + # `OSError: [WinError 1314]` due to privilege. If + # the error happens, the src file will be copied + mode = 'copy' + warnings.warn( + f'Failed to create a symbolic link for {src_relpath}, ' + f'and it will be copied to {tar_path}') + else: + continue + + if mode == 'copy': + if osp.isfile(src_path): + shutil.copyfile(src_path, tar_path) + elif osp.isdir(src_path): + shutil.copytree(src_path, tar_path) + else: + warnings.warn(f'Cannot copy file {src_path}.') + else: + raise ValueError(f'Invalid mode {mode}') + + +if __name__ == '__main__': + add_mim_extension() + setup( + name='mmcls', + version=get_version(), + description='OpenMMLab Image Classification Toolbox and Benchmark', + long_description=readme(), + long_description_content_type='text/markdown', + keywords='computer vision, image classification', + packages=find_packages(exclude=('configs', 'tools', 'demo')), + include_package_data=True, + classifiers=[ + 'Development Status :: 4 - Beta', + 'License :: OSI Approved :: Apache Software License', + 'Operating System :: OS Independent', + 'Programming Language :: Python :: 3', + 'Programming Language :: Python :: 3.6', + 'Programming Language :: Python :: 3.7', + 'Programming Language :: Python :: 3.8', + 'Programming Language :: Python :: 3.9', + 'Topic :: Scientific/Engineering :: Artificial Intelligence', + ], + url='https://github.com/open-mmlab/mmclassification', + author='MMClassification Contributors', + author_email='openmmlab@gmail.com', + license='Apache License 2.0', + install_requires=parse_requirements('requirements/runtime.txt'), + extras_require={ + 'all': parse_requirements('requirements.txt'), + 'tests': parse_requirements('requirements/tests.txt'), + 'optional': parse_requirements('requirements/optional.txt'), + 'mim': parse_requirements('requirements/mminstall.txt'), + }, + zip_safe=False) diff --git a/openmmlab_test/mmclassification-speed-benchmark/sing_test.sh b/openmmlab_test/mmclassification-0.24.1/sing_test.sh similarity index 77% rename from openmmlab_test/mmclassification-speed-benchmark/sing_test.sh rename to openmmlab_test/mmclassification-0.24.1/sing_test.sh index d52a2d32..d42f2041 100644 --- a/openmmlab_test/mmclassification-speed-benchmark/sing_test.sh +++ b/openmmlab_test/mmclassification-0.24.1/sing_test.sh @@ -1,6 +1,6 @@ #!/bin/bash export HIP_VISIBLE_DEVICES=3 -export MIOPEN_FIND_MODE=3 +export MIOPEN_FIND_MODE=1 my_config=$1 python3 tools/train.py $my_config diff --git a/openmmlab_test/mmclassification-0.24.1/single_process.sh b/openmmlab_test/mmclassification-0.24.1/single_process.sh new file mode 100644 index 00000000..2f3f1603 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/single_process.sh @@ -0,0 +1,28 @@ +#!/bin/bash +lrank=$OMPI_COMM_WORLD_LOCAL_RANK +comm_rank=$OMPI_COMM_WORLD_RANK +comm_size=$OMPI_COMM_WORLD_SIZE +export MASTER_ADDR=${1} + +APP="python3 tools/train.py configs/resnet/resnet18_b32x8_imagenet.py --launcher mpi" +case ${lrank} in +[0]) + numactl --cpunodebind=0 --membind=0 ${APP} + ;; +[1]) + + numactl --cpunodebind=1 --membind=1 ${APP} + ;; +[2]) + + numactl --cpunodebind=2 --membind=2 ${APP} + ;; +[3]) + + numactl --cpunodebind=3 --membind=3 ${APP} + ;; +[4]) + + numactl --cpunodebind=4 --membind=4 ${APP} + ;; +esac diff --git a/openmmlab_test/mmclassification-speed-benchmark/tests/data/color.jpg b/openmmlab_test/mmclassification-0.24.1/tests/data/color.jpg similarity index 100% rename from openmmlab_test/mmclassification-speed-benchmark/tests/data/color.jpg rename to openmmlab_test/mmclassification-0.24.1/tests/data/color.jpg diff --git a/openmmlab_test/mmclassification-0.24.1/tests/data/dataset/a/1.JPG b/openmmlab_test/mmclassification-0.24.1/tests/data/dataset/a/1.JPG new file mode 100644 index 00000000..e69de29b diff --git a/openmmlab_test/mmclassification-0.24.1/tests/data/dataset/ann.txt b/openmmlab_test/mmclassification-0.24.1/tests/data/dataset/ann.txt new file mode 100644 index 00000000..a21a9c42 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/tests/data/dataset/ann.txt @@ -0,0 +1,3 @@ +a/1.JPG 0 +b/2.jpeg 1 +b/subb/2.jpeg 1 diff --git a/openmmlab_test/mmclassification-0.24.1/tests/data/dataset/b/2.jpeg b/openmmlab_test/mmclassification-0.24.1/tests/data/dataset/b/2.jpeg new file mode 100644 index 00000000..e69de29b diff --git a/openmmlab_test/mmclassification-0.24.1/tests/data/dataset/b/subb/3.jpg b/openmmlab_test/mmclassification-0.24.1/tests/data/dataset/b/subb/3.jpg new file mode 100644 index 00000000..e69de29b diff --git a/openmmlab_test/mmclassification-0.24.1/tests/data/dataset/classes.txt b/openmmlab_test/mmclassification-0.24.1/tests/data/dataset/classes.txt new file mode 100644 index 00000000..c012a51e --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/tests/data/dataset/classes.txt @@ -0,0 +1,2 @@ +bus +car diff --git a/openmmlab_test/mmclassification-speed-benchmark/tests/data/gray.jpg b/openmmlab_test/mmclassification-0.24.1/tests/data/gray.jpg similarity index 100% rename from openmmlab_test/mmclassification-speed-benchmark/tests/data/gray.jpg rename to openmmlab_test/mmclassification-0.24.1/tests/data/gray.jpg diff --git a/openmmlab_test/mmclassification-0.24.1/tests/data/retinanet.py b/openmmlab_test/mmclassification-0.24.1/tests/data/retinanet.py new file mode 100644 index 00000000..e7e6ea00 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/tests/data/retinanet.py @@ -0,0 +1,83 @@ +# Copyright (c) OpenMMLab. All rights reserved. +# small RetinaNet +num_classes = 3 + +# model settings +model = dict( + type='RetinaNet', + backbone=dict( + type='ResNet', + depth=50, + num_stages=4, + out_indices=(0, 1, 2, 3), + frozen_stages=1, + norm_cfg=dict(type='BN', requires_grad=True), + norm_eval=True, + style='pytorch', + init_cfg=dict(type='Pretrained', checkpoint='torchvision://resnet50')), + neck=dict( + type='FPN', + in_channels=[256, 512, 1024, 2048], + out_channels=256, + start_level=1, + add_extra_convs='on_input', + num_outs=5), + bbox_head=dict( + type='RetinaHead', + num_classes=num_classes, + in_channels=256, + stacked_convs=1, + feat_channels=256, + anchor_generator=dict( + type='AnchorGenerator', + octave_base_scale=4, + scales_per_octave=3, + ratios=[0.5, 1.0, 2.0], + strides=[8, 16, 32, 64, 128]), + bbox_coder=dict( + type='DeltaXYWHBBoxCoder', + target_means=[.0, .0, .0, .0], + target_stds=[1.0, 1.0, 1.0, 1.0]), + loss_cls=dict( + type='FocalLoss', + use_sigmoid=True, + gamma=2.0, + alpha=0.25, + loss_weight=1.0), + loss_bbox=dict(type='L1Loss', loss_weight=1.0)), + # model training and testing settings + train_cfg=dict( + assigner=dict( + type='MaxIoUAssigner', + pos_iou_thr=0.5, + neg_iou_thr=0.4, + min_pos_iou=0, + ignore_iof_thr=-1), + allowed_border=-1, + pos_weight=-1, + debug=False), + test_cfg=dict( + nms_pre=1000, + min_bbox_size=0, + score_thr=0.05, + nms=dict(type='nms', iou_threshold=0.5), + max_per_img=100)) + +img_norm_cfg = dict( + mean=[123.675, 116.28, 103.53], std=[58.395, 57.12, 57.375], to_rgb=True) +test_pipeline = [ + dict(type='LoadImageFromFile'), + dict( + type='MultiScaleFlipAug', + img_scale=(1333, 800), + flip=False, + transforms=[ + dict(type='Resize', keep_ratio=True), + dict(type='RandomFlip'), + dict(type='Normalize', **img_norm_cfg), + dict(type='Pad', size_divisor=32), + dict(type='ImageToTensor', keys=['img']), + dict(type='Collect', keys=['img']), + ]) +] +data = dict(test=dict(pipeline=test_pipeline)) diff --git a/openmmlab_test/mmclassification-0.24.1/tests/data/test.logjson b/openmmlab_test/mmclassification-0.24.1/tests/data/test.logjson new file mode 100644 index 00000000..dd9a1603 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/tests/data/test.logjson @@ -0,0 +1,10 @@ +{"a": "b"} +{"mode": "train", "epoch": 1, "iter": 10, "lr": 0.01309, "memory": 0, "data_time": 0.0072, "time": 0.00727} +{"mode": "train", "epoch": 1, "iter": 20, "lr": 0.02764, "memory": 0, "data_time": 0.00044, "time": 0.00046} +{"mode": "train", "epoch": 1, "iter": 30, "lr": 0.04218, "memory": 0, "data_time": 0.00028, "time": 0.0003} +{"mode": "train", "epoch": 1, "iter": 40, "lr": 0.05673, "memory": 0, "data_time": 0.00027, "time": 0.00029} +{"mode": "train", "epoch": 2, "iter": 10, "lr": 0.17309, "memory": 0, "data_time": 0.00048, "time": 0.0005} +{"mode": "train", "epoch": 2, "iter": 20, "lr": 0.18763, "memory": 0, "data_time": 0.00038, "time": 0.0004} +{"mode": "train", "epoch": 2, "iter": 30, "lr": 0.20218, "memory": 0, "data_time": 0.00037, "time": 0.00039} +{"mode": "train", "epoch": 3, "iter": 10, "lr": 0.33305, "memory": 0, "data_time": 0.00045, "time": 0.00046} +{"mode": "train", "epoch": 3, "iter": 20, "lr": 0.34759, "memory": 0, "data_time": 0.0003, "time": 0.00032} \ No newline at end of file diff --git a/openmmlab_test/mmclassification-0.24.1/tests/test_data/test_builder.py b/openmmlab_test/mmclassification-0.24.1/tests/test_data/test_builder.py new file mode 100644 index 00000000..c911b982 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/tests/test_data/test_builder.py @@ -0,0 +1,272 @@ +# Copyright (c) OpenMMLab. All rights reserved. +import os.path as osp +from copy import deepcopy +from unittest.mock import patch + +import torch +from mmcv.utils import digit_version + +from mmcls.datasets import ImageNet, build_dataloader, build_dataset +from mmcls.datasets.dataset_wrappers import (ClassBalancedDataset, + ConcatDataset, KFoldDataset, + RepeatDataset) + + +class TestDataloaderBuilder(): + + @classmethod + def setup_class(cls): + cls.data = list(range(20)) + cls.samples_per_gpu = 5 + cls.workers_per_gpu = 1 + + @patch('mmcls.datasets.builder.get_dist_info', return_value=(0, 1)) + def test_single_gpu(self, _): + common_cfg = dict( + dataset=self.data, + samples_per_gpu=self.samples_per_gpu, + workers_per_gpu=self.workers_per_gpu, + dist=False) + + # Test default config + dataloader = build_dataloader(**common_cfg) + + if digit_version(torch.__version__) >= digit_version('1.8.0'): + assert dataloader.persistent_workers + elif hasattr(dataloader, 'persistent_workers'): + assert not dataloader.persistent_workers + + assert dataloader.batch_size == self.samples_per_gpu + assert dataloader.num_workers == self.workers_per_gpu + assert not all( + torch.cat(list(iter(dataloader))) == torch.tensor(self.data)) + + # Test without shuffle + dataloader = build_dataloader(**common_cfg, shuffle=False) + assert all( + torch.cat(list(iter(dataloader))) == torch.tensor(self.data)) + + # Test with custom sampler_cfg + dataloader = build_dataloader( + **common_cfg, + sampler_cfg=dict(type='RepeatAugSampler', selected_round=0), + shuffle=False) + expect = [0, 0, 0, 1, 1, 1, 2, 2, 2, 3, 3, 3, 4, 4, 4, 5, 5, 5, 6, 6] + assert all(torch.cat(list(iter(dataloader))) == torch.tensor(expect)) + + @patch('mmcls.datasets.builder.get_dist_info', return_value=(0, 1)) + def test_multi_gpu(self, _): + common_cfg = dict( + dataset=self.data, + samples_per_gpu=self.samples_per_gpu, + workers_per_gpu=self.workers_per_gpu, + num_gpus=2, + dist=False) + + # Test default config + dataloader = build_dataloader(**common_cfg) + + if digit_version(torch.__version__) >= digit_version('1.8.0'): + assert dataloader.persistent_workers + elif hasattr(dataloader, 'persistent_workers'): + assert not dataloader.persistent_workers + + assert dataloader.batch_size == self.samples_per_gpu * 2 + assert dataloader.num_workers == self.workers_per_gpu * 2 + assert not all( + torch.cat(list(iter(dataloader))) == torch.tensor(self.data)) + + # Test without shuffle + dataloader = build_dataloader(**common_cfg, shuffle=False) + assert all( + torch.cat(list(iter(dataloader))) == torch.tensor(self.data)) + + # Test with custom sampler_cfg + dataloader = build_dataloader( + **common_cfg, + sampler_cfg=dict(type='RepeatAugSampler', selected_round=0), + shuffle=False) + expect = torch.tensor( + [0, 0, 0, 1, 1, 1, 2, 2, 2, 3, 3, 3, 4, 4, 4, 5, 5, 5, 6, 6]) + assert all(torch.cat(list(iter(dataloader))) == expect) + + @patch('mmcls.datasets.builder.get_dist_info', return_value=(1, 2)) + def test_distributed(self, _): + common_cfg = dict( + dataset=self.data, + samples_per_gpu=self.samples_per_gpu, + workers_per_gpu=self.workers_per_gpu, + num_gpus=2, # num_gpus will be ignored in distributed environment. + dist=True) + + # Test default config + dataloader = build_dataloader(**common_cfg) + + if digit_version(torch.__version__) >= digit_version('1.8.0'): + assert dataloader.persistent_workers + elif hasattr(dataloader, 'persistent_workers'): + assert not dataloader.persistent_workers + + assert dataloader.batch_size == self.samples_per_gpu + assert dataloader.num_workers == self.workers_per_gpu + non_expect = torch.tensor(self.data[1::2]) + assert not all(torch.cat(list(iter(dataloader))) == non_expect) + + # Test without shuffle + dataloader = build_dataloader(**common_cfg, shuffle=False) + expect = torch.tensor(self.data[1::2]) + assert all(torch.cat(list(iter(dataloader))) == expect) + + # Test with custom sampler_cfg + dataloader = build_dataloader( + **common_cfg, + sampler_cfg=dict(type='RepeatAugSampler', selected_round=0), + shuffle=False) + expect = torch.tensor( + [0, 0, 0, 1, 1, 1, 2, 2, 2, 3, 3, 3, 4, 4, 4, 5, 5, 5, 6, 6][1::2]) + assert all(torch.cat(list(iter(dataloader))) == expect) + + +class TestDatasetBuilder(): + + @classmethod + def setup_class(cls): + data_prefix = osp.join(osp.dirname(__file__), '../data/dataset') + cls.dataset_cfg = dict( + type='ImageNet', + data_prefix=data_prefix, + ann_file=osp.join(data_prefix, 'ann.txt'), + pipeline=[], + test_mode=False, + ) + + def test_normal_dataset(self): + # Test build + dataset = build_dataset(self.dataset_cfg) + assert isinstance(dataset, ImageNet) + assert dataset.test_mode == self.dataset_cfg['test_mode'] + + # Test default_args + dataset = build_dataset(self.dataset_cfg, {'test_mode': True}) + assert dataset.test_mode == self.dataset_cfg['test_mode'] + + cp_cfg = deepcopy(self.dataset_cfg) + cp_cfg.pop('test_mode') + dataset = build_dataset(cp_cfg, {'test_mode': True}) + assert dataset.test_mode + + def test_concat_dataset(self): + # Test build + dataset = build_dataset([self.dataset_cfg, self.dataset_cfg]) + assert isinstance(dataset, ConcatDataset) + assert dataset.datasets[0].test_mode == self.dataset_cfg['test_mode'] + + # Test default_args + dataset = build_dataset([self.dataset_cfg, self.dataset_cfg], + {'test_mode': True}) + assert dataset.datasets[0].test_mode == self.dataset_cfg['test_mode'] + + cp_cfg = deepcopy(self.dataset_cfg) + cp_cfg.pop('test_mode') + dataset = build_dataset([cp_cfg, cp_cfg], {'test_mode': True}) + assert dataset.datasets[0].test_mode + + def test_repeat_dataset(self): + # Test build + dataset = build_dataset( + dict(type='RepeatDataset', dataset=self.dataset_cfg, times=3)) + assert isinstance(dataset, RepeatDataset) + assert dataset.dataset.test_mode == self.dataset_cfg['test_mode'] + + # Test default_args + dataset = build_dataset( + dict(type='RepeatDataset', dataset=self.dataset_cfg, times=3), + {'test_mode': True}) + assert dataset.dataset.test_mode == self.dataset_cfg['test_mode'] + + cp_cfg = deepcopy(self.dataset_cfg) + cp_cfg.pop('test_mode') + dataset = build_dataset( + dict(type='RepeatDataset', dataset=cp_cfg, times=3), + {'test_mode': True}) + assert dataset.dataset.test_mode + + def test_class_balance_dataset(self): + # Test build + dataset = build_dataset( + dict( + type='ClassBalancedDataset', + dataset=self.dataset_cfg, + oversample_thr=1., + )) + assert isinstance(dataset, ClassBalancedDataset) + assert dataset.dataset.test_mode == self.dataset_cfg['test_mode'] + + # Test default_args + dataset = build_dataset( + dict( + type='ClassBalancedDataset', + dataset=self.dataset_cfg, + oversample_thr=1., + ), {'test_mode': True}) + assert dataset.dataset.test_mode == self.dataset_cfg['test_mode'] + + cp_cfg = deepcopy(self.dataset_cfg) + cp_cfg.pop('test_mode') + dataset = build_dataset( + dict( + type='ClassBalancedDataset', + dataset=cp_cfg, + oversample_thr=1., + ), {'test_mode': True}) + assert dataset.dataset.test_mode + + def test_kfold_dataset(self): + # Test build + dataset = build_dataset( + dict( + type='KFoldDataset', + dataset=self.dataset_cfg, + fold=0, + num_splits=5, + test_mode=False, + )) + assert isinstance(dataset, KFoldDataset) + assert not dataset.test_mode + assert dataset.dataset.test_mode == self.dataset_cfg['test_mode'] + + # Test default_args + dataset = build_dataset( + dict( + type='KFoldDataset', + dataset=self.dataset_cfg, + fold=0, + num_splits=5, + test_mode=False, + ), + default_args={ + 'test_mode': True, + 'classes': [1, 2, 3] + }) + assert not dataset.test_mode + assert dataset.dataset.test_mode == self.dataset_cfg['test_mode'] + assert dataset.dataset.CLASSES == [1, 2, 3] + + cp_cfg = deepcopy(self.dataset_cfg) + cp_cfg.pop('test_mode') + dataset = build_dataset( + dict( + type='KFoldDataset', + dataset=self.dataset_cfg, + fold=0, + num_splits=5, + ), + default_args={ + 'test_mode': True, + 'classes': [1, 2, 3] + }) + # The test_mode in default_args will be passed to KFoldDataset + assert dataset.test_mode + assert not dataset.dataset.test_mode + # Other default_args will be passed to child dataset. + assert dataset.dataset.CLASSES == [1, 2, 3] diff --git a/openmmlab_test/mmclassification-0.24.1/tests/test_data/test_datasets/test_common.py b/openmmlab_test/mmclassification-0.24.1/tests/test_data/test_datasets/test_common.py new file mode 100644 index 00000000..5ec38184 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/tests/test_data/test_datasets/test_common.py @@ -0,0 +1,911 @@ +# Copyright (c) OpenMMLab. All rights reserved. +import os +import os.path as osp +import pickle +import tempfile +from unittest import TestCase +from unittest.mock import patch + +import numpy as np +import torch + +from mmcls.datasets import DATASETS +from mmcls.datasets import BaseDataset as _BaseDataset +from mmcls.datasets import MultiLabelDataset as _MultiLabelDataset + +ASSETS_ROOT = osp.abspath( + osp.join(osp.dirname(__file__), '../../data/dataset')) + + +class BaseDataset(_BaseDataset): + + def load_annotations(self): + pass + + +class MultiLabelDataset(_MultiLabelDataset): + + def load_annotations(self): + pass + + +DATASETS.module_dict['BaseDataset'] = BaseDataset +DATASETS.module_dict['MultiLabelDataset'] = MultiLabelDataset + + +class TestBaseDataset(TestCase): + DATASET_TYPE = 'BaseDataset' + + DEFAULT_ARGS = dict(data_prefix='', pipeline=[]) + + def test_initialize(self): + dataset_class = DATASETS.get(self.DATASET_TYPE) + + with patch.object(dataset_class, 'load_annotations'): + # Test default behavior + cfg = {**self.DEFAULT_ARGS, 'classes': None, 'ann_file': None} + dataset = dataset_class(**cfg) + self.assertEqual(dataset.CLASSES, dataset_class.CLASSES) + self.assertFalse(dataset.test_mode) + self.assertIsNone(dataset.ann_file) + + # Test setting classes as a tuple + cfg = {**self.DEFAULT_ARGS, 'classes': ('bus', 'car')} + dataset = dataset_class(**cfg) + self.assertEqual(dataset.CLASSES, ('bus', 'car')) + + # Test setting classes as a tuple + cfg = {**self.DEFAULT_ARGS, 'classes': ['bus', 'car']} + dataset = dataset_class(**cfg) + self.assertEqual(dataset.CLASSES, ['bus', 'car']) + + # Test setting classes through a file + classes_file = osp.join(ASSETS_ROOT, 'classes.txt') + cfg = {**self.DEFAULT_ARGS, 'classes': classes_file} + dataset = dataset_class(**cfg) + self.assertEqual(dataset.CLASSES, ['bus', 'car']) + self.assertEqual(dataset.class_to_idx, {'bus': 0, 'car': 1}) + + # Test invalid classes + cfg = {**self.DEFAULT_ARGS, 'classes': dict(classes=1)} + with self.assertRaisesRegex(ValueError, "type "): + dataset_class(**cfg) + + def test_get_cat_ids(self): + dataset_class = DATASETS.get(self.DATASET_TYPE) + fake_ann = [ + dict( + img_prefix='', + img_info=dict(), + gt_label=np.array(0, dtype=np.int64)) + ] + + with patch.object(dataset_class, 'load_annotations') as mock_load: + mock_load.return_value = fake_ann + dataset = dataset_class(**self.DEFAULT_ARGS) + + cat_ids = dataset.get_cat_ids(0) + self.assertIsInstance(cat_ids, list) + self.assertEqual(len(cat_ids), 1) + self.assertIsInstance(cat_ids[0], int) + + def test_evaluate(self): + dataset_class = DATASETS.get(self.DATASET_TYPE) + + fake_ann = [ + dict(gt_label=np.array(0, dtype=np.int64)), + dict(gt_label=np.array(0, dtype=np.int64)), + dict(gt_label=np.array(1, dtype=np.int64)), + dict(gt_label=np.array(2, dtype=np.int64)), + dict(gt_label=np.array(1, dtype=np.int64)), + dict(gt_label=np.array(0, dtype=np.int64)), + ] + + with patch.object(dataset_class, 'load_annotations') as mock_load: + mock_load.return_value = fake_ann + dataset = dataset_class(**self.DEFAULT_ARGS) + + fake_results = np.array([ + [0.7, 0.0, 0.3], + [0.5, 0.2, 0.3], + [0.4, 0.5, 0.1], + [0.0, 0.0, 1.0], + [0.0, 0.0, 1.0], + [0.0, 0.0, 1.0], + ]) + + eval_results = dataset.evaluate( + fake_results, + metric=['precision', 'recall', 'f1_score', 'support', 'accuracy'], + metric_options={'topk': 1}) + + # Test results + self.assertAlmostEqual( + eval_results['precision'], (1 + 1 + 1 / 3) / 3 * 100.0, places=4) + self.assertAlmostEqual( + eval_results['recall'], (2 / 3 + 1 / 2 + 1) / 3 * 100.0, places=4) + self.assertAlmostEqual( + eval_results['f1_score'], (4 / 5 + 2 / 3 + 1 / 2) / 3 * 100.0, + places=4) + self.assertEqual(eval_results['support'], 6) + self.assertAlmostEqual(eval_results['accuracy'], 4 / 6 * 100, places=4) + + # test indices + eval_results_ = dataset.evaluate( + fake_results[:5], + metric=['precision', 'recall', 'f1_score', 'support', 'accuracy'], + metric_options={'topk': 1}, + indices=range(5)) + self.assertAlmostEqual( + eval_results_['precision'], (1 + 1 + 1 / 2) / 3 * 100.0, places=4) + self.assertAlmostEqual( + eval_results_['recall'], (1 + 1 / 2 + 1) / 3 * 100.0, places=4) + self.assertAlmostEqual( + eval_results_['f1_score'], (1 + 2 / 3 + 2 / 3) / 3 * 100.0, + places=4) + self.assertEqual(eval_results_['support'], 5) + self.assertAlmostEqual( + eval_results_['accuracy'], 4 / 5 * 100, places=4) + + # test input as tensor + fake_results_tensor = torch.from_numpy(fake_results) + eval_results_ = dataset.evaluate( + fake_results_tensor, + metric=['precision', 'recall', 'f1_score', 'support', 'accuracy'], + metric_options={'topk': 1}) + assert eval_results_ == eval_results + + # test thr + eval_results = dataset.evaluate( + fake_results, + metric=['precision', 'recall', 'f1_score', 'accuracy'], + metric_options={ + 'thrs': 0.6, + 'topk': 1 + }) + + self.assertAlmostEqual( + eval_results['precision'], (1 + 0 + 1 / 3) / 3 * 100.0, places=4) + self.assertAlmostEqual( + eval_results['recall'], (1 / 3 + 0 + 1) / 3 * 100.0, places=4) + self.assertAlmostEqual( + eval_results['f1_score'], (1 / 2 + 0 + 1 / 2) / 3 * 100.0, + places=4) + self.assertAlmostEqual(eval_results['accuracy'], 2 / 6 * 100, places=4) + + # thrs must be a number or tuple + with self.assertRaises(TypeError): + dataset.evaluate( + fake_results, + metric=['precision', 'recall', 'f1_score', 'accuracy'], + metric_options={ + 'thrs': 'thr', + 'topk': 1 + }) + + # test topk and thr as tuple + eval_results = dataset.evaluate( + fake_results, + metric=['precision', 'recall', 'f1_score', 'accuracy'], + metric_options={ + 'thrs': (0.5, 0.6), + 'topk': (1, 2) + }) + self.assertEqual( + { + 'precision_thr_0.50', 'precision_thr_0.60', 'recall_thr_0.50', + 'recall_thr_0.60', 'f1_score_thr_0.50', 'f1_score_thr_0.60', + 'accuracy_top-1_thr_0.50', 'accuracy_top-1_thr_0.60', + 'accuracy_top-2_thr_0.50', 'accuracy_top-2_thr_0.60' + }, eval_results.keys()) + + self.assertIsInstance(eval_results['precision_thr_0.50'], float) + self.assertIsInstance(eval_results['recall_thr_0.50'], float) + self.assertIsInstance(eval_results['f1_score_thr_0.50'], float) + self.assertIsInstance(eval_results['accuracy_top-1_thr_0.50'], float) + + # test topk is tuple while thrs is number + eval_results = dataset.evaluate( + fake_results, + metric='accuracy', + metric_options={ + 'thrs': 0.5, + 'topk': (1, 2) + }) + self.assertEqual({'accuracy_top-1', 'accuracy_top-2'}, + eval_results.keys()) + self.assertIsInstance(eval_results['accuracy_top-1'], float) + + # test topk is number while thrs is tuple + eval_results = dataset.evaluate( + fake_results, + metric='accuracy', + metric_options={ + 'thrs': (0.5, 0.6), + 'topk': 1 + }) + self.assertEqual({'accuracy_thr_0.50', 'accuracy_thr_0.60'}, + eval_results.keys()) + self.assertIsInstance(eval_results['accuracy_thr_0.50'], float) + + # test evaluation results for classes + eval_results = dataset.evaluate( + fake_results, + metric=['precision', 'recall', 'f1_score', 'support'], + metric_options={'average_mode': 'none'}) + self.assertEqual(eval_results['precision'].shape, (3, )) + self.assertEqual(eval_results['recall'].shape, (3, )) + self.assertEqual(eval_results['f1_score'].shape, (3, )) + self.assertEqual(eval_results['support'].shape, (3, )) + + # the average_mode method must be valid + with self.assertRaises(ValueError): + dataset.evaluate( + fake_results, + metric=['precision', 'recall', 'f1_score', 'support'], + metric_options={'average_mode': 'micro'}) + + # the metric must be valid for the dataset + with self.assertRaisesRegex(ValueError, + "{'unknown'} is not supported"): + dataset.evaluate(fake_results, metric='unknown') + + +class TestMultiLabelDataset(TestBaseDataset): + DATASET_TYPE = 'MultiLabelDataset' + + def test_get_cat_ids(self): + dataset_class = DATASETS.get(self.DATASET_TYPE) + fake_ann = [ + dict( + img_prefix='', + img_info=dict(), + gt_label=np.array([0, 1, 1, 0], dtype=np.uint8)) + ] + + with patch.object(dataset_class, 'load_annotations') as mock_load: + mock_load.return_value = fake_ann + dataset = dataset_class(**self.DEFAULT_ARGS) + + cat_ids = dataset.get_cat_ids(0) + self.assertIsInstance(cat_ids, list) + self.assertEqual(len(cat_ids), 2) + self.assertIsInstance(cat_ids[0], int) + self.assertEqual(cat_ids, [1, 2]) + + def test_evaluate(self): + dataset_class = DATASETS.get(self.DATASET_TYPE) + + fake_ann = [ + dict(gt_label=np.array([1, 1, 0, -1], dtype=np.int8)), + dict(gt_label=np.array([1, 1, 0, -1], dtype=np.int8)), + dict(gt_label=np.array([0, -1, 1, -1], dtype=np.int8)), + dict(gt_label=np.array([0, 1, 0, -1], dtype=np.int8)), + dict(gt_label=np.array([0, 1, 0, -1], dtype=np.int8)), + ] + + with patch.object(dataset_class, 'load_annotations') as mock_load: + mock_load.return_value = fake_ann + dataset = dataset_class(**self.DEFAULT_ARGS) + + fake_results = np.array([ + [0.9, 0.8, 0.3, 0.2], + [0.1, 0.2, 0.2, 0.1], + [0.7, 0.5, 0.9, 0.3], + [0.8, 0.1, 0.1, 0.2], + [0.8, 0.1, 0.1, 0.2], + ]) + + # the metric must be valid for the dataset + with self.assertRaisesRegex(ValueError, + "{'unknown'} is not supported"): + dataset.evaluate(fake_results, metric='unknown') + + # only one metric + eval_results = dataset.evaluate(fake_results, metric='mAP') + self.assertEqual(eval_results.keys(), {'mAP'}) + self.assertAlmostEqual(eval_results['mAP'], 67.5, places=4) + + # multiple metrics + eval_results = dataset.evaluate( + fake_results, metric=['mAP', 'CR', 'OF1']) + self.assertEqual(eval_results.keys(), {'mAP', 'CR', 'OF1'}) + self.assertAlmostEqual(eval_results['mAP'], 67.50, places=2) + self.assertAlmostEqual(eval_results['CR'], 43.75, places=2) + self.assertAlmostEqual(eval_results['OF1'], 42.86, places=2) + + +class TestCustomDataset(TestBaseDataset): + DATASET_TYPE = 'CustomDataset' + + def test_load_annotations(self): + dataset_class = DATASETS.get(self.DATASET_TYPE) + + # test load without ann_file + cfg = { + **self.DEFAULT_ARGS, + 'data_prefix': ASSETS_ROOT, + 'ann_file': None, + } + dataset = dataset_class(**cfg) + self.assertEqual(len(dataset), 3) + self.assertEqual(dataset.CLASSES, ['a', 'b']) # auto infer classes + self.assertEqual( + dataset.data_infos[0], { + 'img_prefix': ASSETS_ROOT, + 'img_info': { + 'filename': 'a/1.JPG' + }, + 'gt_label': np.array(0) + }) + self.assertEqual( + dataset.data_infos[2], { + 'img_prefix': ASSETS_ROOT, + 'img_info': { + 'filename': 'b/subb/3.jpg' + }, + 'gt_label': np.array(1) + }) + + # test ann_file assertion + cfg = { + **self.DEFAULT_ARGS, + 'data_prefix': ASSETS_ROOT, + 'ann_file': ['ann_file.txt'], + } + with self.assertRaisesRegex(TypeError, 'must be a str'): + dataset_class(**cfg) + + # test load with ann_file + cfg = { + **self.DEFAULT_ARGS, + 'data_prefix': ASSETS_ROOT, + 'ann_file': osp.join(ASSETS_ROOT, 'ann.txt'), + } + dataset = dataset_class(**cfg) + self.assertEqual(len(dataset), 3) + # custom dataset won't infer CLASSES from ann_file + self.assertEqual(dataset.CLASSES, dataset_class.CLASSES) + self.assertEqual( + dataset.data_infos[0], { + 'img_prefix': ASSETS_ROOT, + 'img_info': { + 'filename': 'a/1.JPG' + }, + 'gt_label': np.array(0) + }) + self.assertEqual( + dataset.data_infos[2], { + 'img_prefix': ASSETS_ROOT, + 'img_info': { + 'filename': 'b/subb/2.jpeg' + }, + 'gt_label': np.array(1) + }) + + # test extensions filter + cfg = { + **self.DEFAULT_ARGS, 'data_prefix': ASSETS_ROOT, + 'ann_file': None, + 'extensions': ('.txt', ) + } + with self.assertRaisesRegex(RuntimeError, + 'Supported extensions are: .txt'): + dataset_class(**cfg) + + cfg = { + **self.DEFAULT_ARGS, 'data_prefix': ASSETS_ROOT, + 'ann_file': None, + 'extensions': ('.jpeg', ) + } + with self.assertWarnsRegex(UserWarning, + 'Supported extensions are: .jpeg'): + dataset = dataset_class(**cfg) + self.assertEqual(len(dataset), 1) + self.assertEqual( + dataset.data_infos[0], { + 'img_prefix': ASSETS_ROOT, + 'img_info': { + 'filename': 'b/2.jpeg' + }, + 'gt_label': np.array(1) + }) + + # test classes check + cfg = { + **self.DEFAULT_ARGS, + 'data_prefix': ASSETS_ROOT, + 'classes': ['apple', 'banana'], + 'ann_file': None, + } + dataset = dataset_class(**cfg) + self.assertEqual(dataset.CLASSES, ['apple', 'banana']) + + cfg['classes'] = ['apple', 'banana', 'dog'] + with self.assertRaisesRegex(AssertionError, + r"\(2\) doesn't match .* classes \(3\)"): + dataset_class(**cfg) + + +class TestImageNet(TestBaseDataset): + DATASET_TYPE = 'ImageNet' + + def test_load_annotations(self): + dataset_class = DATASETS.get(self.DATASET_TYPE) + + # test classes number + cfg = { + **self.DEFAULT_ARGS, + 'data_prefix': ASSETS_ROOT, + 'ann_file': None, + } + with self.assertRaisesRegex( + AssertionError, r"\(2\) doesn't match .* classes \(1000\)"): + dataset_class(**cfg) + + # test override classes + cfg = { + **self.DEFAULT_ARGS, + 'data_prefix': ASSETS_ROOT, + 'classes': ['cat', 'dog'], + 'ann_file': None, + } + dataset = dataset_class(**cfg) + self.assertEqual(len(dataset), 3) + self.assertEqual(dataset.CLASSES, ['cat', 'dog']) + + +class TestImageNet21k(TestBaseDataset): + DATASET_TYPE = 'ImageNet21k' + + DEFAULT_ARGS = dict( + data_prefix=ASSETS_ROOT, + pipeline=[], + classes=['cat', 'dog'], + ann_file=osp.join(ASSETS_ROOT, 'ann.txt'), + serialize_data=False) + + def test_initialize(self): + super().test_initialize() + dataset_class = DATASETS.get(self.DATASET_TYPE) + + # The multi_label option is not implemented not. + cfg = {**self.DEFAULT_ARGS, 'multi_label': True} + with self.assertRaisesRegex(NotImplementedError, 'not supported'): + dataset_class(**cfg) + + # Warn about ann_file + cfg = {**self.DEFAULT_ARGS, 'ann_file': None} + with self.assertWarnsRegex(UserWarning, 'specify the `ann_file`'): + dataset_class(**cfg) + + # Warn about classes + cfg = {**self.DEFAULT_ARGS, 'classes': None} + with self.assertWarnsRegex(UserWarning, 'specify the `classes`'): + dataset_class(**cfg) + + def test_load_annotations(self): + dataset_class = DATASETS.get(self.DATASET_TYPE) + + # Test with serialize_data=False + cfg = {**self.DEFAULT_ARGS, 'serialize_data': False} + dataset = dataset_class(**cfg) + self.assertEqual(len(dataset.data_infos), 3) + self.assertEqual(len(dataset), 3) + self.assertEqual( + dataset[0], { + 'img_prefix': ASSETS_ROOT, + 'img_info': { + 'filename': 'a/1.JPG' + }, + 'gt_label': np.array(0) + }) + self.assertEqual( + dataset[2], { + 'img_prefix': ASSETS_ROOT, + 'img_info': { + 'filename': 'b/subb/2.jpeg' + }, + 'gt_label': np.array(1) + }) + + # Test with serialize_data=True + cfg = {**self.DEFAULT_ARGS, 'serialize_data': True} + dataset = dataset_class(**cfg) + self.assertEqual(len(dataset.data_infos), 0) # data_infos is clear. + self.assertEqual(len(dataset), 3) + self.assertEqual( + dataset[0], { + 'img_prefix': ASSETS_ROOT, + 'img_info': { + 'filename': 'a/1.JPG' + }, + 'gt_label': np.array(0) + }) + self.assertEqual( + dataset[2], { + 'img_prefix': ASSETS_ROOT, + 'img_info': { + 'filename': 'b/subb/2.jpeg' + }, + 'gt_label': np.array(1) + }) + + +class TestMNIST(TestBaseDataset): + DATASET_TYPE = 'MNIST' + + @classmethod + def setUpClass(cls) -> None: + super().setUpClass() + + tmpdir = tempfile.TemporaryDirectory() + cls.tmpdir = tmpdir + data_prefix = tmpdir.name + cls.DEFAULT_ARGS = dict(data_prefix=data_prefix, pipeline=[]) + + dataset_class = DATASETS.get(cls.DATASET_TYPE) + + def rm_suffix(s): + return s[:s.rfind('.')] + + train_image_file = osp.join( + data_prefix, + rm_suffix(dataset_class.resources['train_image_file'][0])) + train_label_file = osp.join( + data_prefix, + rm_suffix(dataset_class.resources['train_label_file'][0])) + test_image_file = osp.join( + data_prefix, + rm_suffix(dataset_class.resources['test_image_file'][0])) + test_label_file = osp.join( + data_prefix, + rm_suffix(dataset_class.resources['test_label_file'][0])) + cls.fake_img = np.random.randint(0, 255, size=(28, 28), dtype=np.uint8) + cls.fake_label = np.random.randint(0, 10, size=(1, ), dtype=np.uint8) + + for file in [train_image_file, test_image_file]: + magic = b'\x00\x00\x08\x03' # num_dims = 3, type = uint8 + head = b'\x00\x00\x00\x01' + b'\x00\x00\x00\x1c' * 2 # (1, 28, 28) + data = magic + head + cls.fake_img.flatten().tobytes() + with open(file, 'wb') as f: + f.write(data) + + for file in [train_label_file, test_label_file]: + magic = b'\x00\x00\x08\x01' # num_dims = 3, type = uint8 + head = b'\x00\x00\x00\x01' # (1, ) + data = magic + head + cls.fake_label.tobytes() + with open(file, 'wb') as f: + f.write(data) + + def test_load_annotations(self): + dataset_class = DATASETS.get(self.DATASET_TYPE) + + with patch.object(dataset_class, 'download'): + # Test default behavior + dataset = dataset_class(**self.DEFAULT_ARGS) + self.assertEqual(len(dataset), 1) + + data_info = dataset[0] + np.testing.assert_equal(data_info['img'], self.fake_img) + np.testing.assert_equal(data_info['gt_label'], self.fake_label) + + @classmethod + def tearDownClass(cls): + cls.tmpdir.cleanup() + + +class TestCIFAR10(TestBaseDataset): + DATASET_TYPE = 'CIFAR10' + + @classmethod + def setUpClass(cls) -> None: + super().setUpClass() + + tmpdir = tempfile.TemporaryDirectory() + cls.tmpdir = tmpdir + data_prefix = tmpdir.name + cls.DEFAULT_ARGS = dict(data_prefix=data_prefix, pipeline=[]) + + dataset_class = DATASETS.get(cls.DATASET_TYPE) + base_folder = osp.join(data_prefix, dataset_class.base_folder) + os.mkdir(base_folder) + + cls.fake_imgs = np.random.randint( + 0, 255, size=(6, 3 * 32 * 32), dtype=np.uint8) + cls.fake_labels = np.random.randint(0, 10, size=(6, )) + cls.fake_classes = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] + + batch1 = dict( + data=cls.fake_imgs[:2], labels=cls.fake_labels[:2].tolist()) + with open(osp.join(base_folder, 'data_batch_1'), 'wb') as f: + f.write(pickle.dumps(batch1)) + + batch2 = dict( + data=cls.fake_imgs[2:4], labels=cls.fake_labels[2:4].tolist()) + with open(osp.join(base_folder, 'data_batch_2'), 'wb') as f: + f.write(pickle.dumps(batch2)) + + test_batch = dict( + data=cls.fake_imgs[4:], labels=cls.fake_labels[4:].tolist()) + with open(osp.join(base_folder, 'test_batch'), 'wb') as f: + f.write(pickle.dumps(test_batch)) + + meta = {dataset_class.meta['key']: cls.fake_classes} + meta_filename = dataset_class.meta['filename'] + with open(osp.join(base_folder, meta_filename), 'wb') as f: + f.write(pickle.dumps(meta)) + + dataset_class.train_list = [['data_batch_1', None], + ['data_batch_2', None]] + dataset_class.test_list = [['test_batch', None]] + dataset_class.meta['md5'] = None + + def test_load_annotations(self): + dataset_class = DATASETS.get(self.DATASET_TYPE) + + # Test default behavior + dataset = dataset_class(**self.DEFAULT_ARGS) + self.assertEqual(len(dataset), 4) + self.assertEqual(dataset.CLASSES, self.fake_classes) + + data_info = dataset[0] + fake_img = self.fake_imgs[0].reshape(3, 32, 32).transpose(1, 2, 0) + np.testing.assert_equal(data_info['img'], fake_img) + np.testing.assert_equal(data_info['gt_label'], self.fake_labels[0]) + + # Test with test_mode=True + cfg = {**self.DEFAULT_ARGS, 'test_mode': True} + dataset = dataset_class(**cfg) + self.assertEqual(len(dataset), 2) + + data_info = dataset[0] + fake_img = self.fake_imgs[4].reshape(3, 32, 32).transpose(1, 2, 0) + np.testing.assert_equal(data_info['img'], fake_img) + np.testing.assert_equal(data_info['gt_label'], self.fake_labels[4]) + + @classmethod + def tearDownClass(cls): + cls.tmpdir.cleanup() + + +class TestCIFAR100(TestCIFAR10): + DATASET_TYPE = 'CIFAR100' + + +class TestVOC(TestMultiLabelDataset): + DATASET_TYPE = 'VOC' + + DEFAULT_ARGS = dict(data_prefix='VOC2007', pipeline=[]) + + +class TestCUB(TestBaseDataset): + DATASET_TYPE = 'CUB' + + @classmethod + def setUpClass(cls) -> None: + super().setUpClass() + + tmpdir = tempfile.TemporaryDirectory() + cls.tmpdir = tmpdir + cls.data_prefix = tmpdir.name + cls.ann_file = osp.join(cls.data_prefix, 'ann_file.txt') + cls.image_class_labels_file = osp.join(cls.data_prefix, 'classes.txt') + cls.train_test_split_file = osp.join(cls.data_prefix, 'split.txt') + cls.train_test_split_file2 = osp.join(cls.data_prefix, 'split2.txt') + cls.DEFAULT_ARGS = dict( + data_prefix=cls.data_prefix, + pipeline=[], + ann_file=cls.ann_file, + image_class_labels_file=cls.image_class_labels_file, + train_test_split_file=cls.train_test_split_file) + + with open(cls.ann_file, 'w') as f: + f.write('\n'.join([ + '1 1.txt', + '2 2.txt', + '3 3.txt', + ])) + + with open(cls.image_class_labels_file, 'w') as f: + f.write('\n'.join([ + '1 2', + '2 3', + '3 1', + ])) + + with open(cls.train_test_split_file, 'w') as f: + f.write('\n'.join([ + '1 0', + '2 1', + '3 1', + ])) + + with open(cls.train_test_split_file2, 'w') as f: + f.write('\n'.join([ + '1 0', + '2 1', + ])) + + def test_load_annotations(self): + dataset_class = DATASETS.get(self.DATASET_TYPE) + + # Test default behavior + dataset = dataset_class(**self.DEFAULT_ARGS) + self.assertEqual(len(dataset), 2) + self.assertEqual(dataset.CLASSES, dataset_class.CLASSES) + + data_info = dataset[0] + np.testing.assert_equal(data_info['img_prefix'], self.data_prefix) + np.testing.assert_equal(data_info['img_info'], {'filename': '2.txt'}) + np.testing.assert_equal(data_info['gt_label'], 3 - 1) + + # Test with test_mode=True + cfg = {**self.DEFAULT_ARGS, 'test_mode': True} + dataset = dataset_class(**cfg) + self.assertEqual(len(dataset), 1) + + data_info = dataset[0] + np.testing.assert_equal(data_info['img_prefix'], self.data_prefix) + np.testing.assert_equal(data_info['img_info'], {'filename': '1.txt'}) + np.testing.assert_equal(data_info['gt_label'], 2 - 1) + + # Test if the numbers of line are not match + cfg = { + **self.DEFAULT_ARGS, 'train_test_split_file': + self.train_test_split_file2 + } + with self.assertRaisesRegex(AssertionError, 'should have same length'): + dataset_class(**cfg) + + @classmethod + def tearDownClass(cls): + cls.tmpdir.cleanup() + + +class TestStanfordCars(TestBaseDataset): + DATASET_TYPE = 'StanfordCars' + + def test_initialize(self): + dataset_class = DATASETS.get(self.DATASET_TYPE) + + with patch.object(dataset_class, 'load_annotations'): + # Test with test_mode=False, ann_file is None + cfg = {**self.DEFAULT_ARGS, 'test_mode': False, 'ann_file': None} + dataset = dataset_class(**cfg) + self.assertEqual(dataset.CLASSES, dataset_class.CLASSES) + self.assertFalse(dataset.test_mode) + self.assertIsNone(dataset.ann_file) + self.assertIsNotNone(dataset.train_ann_file) + + # Test with test_mode=False, ann_file is not None + cfg = { + **self.DEFAULT_ARGS, 'test_mode': False, + 'ann_file': 'train_ann_file.mat' + } + dataset = dataset_class(**cfg) + self.assertEqual(dataset.CLASSES, dataset_class.CLASSES) + self.assertFalse(dataset.test_mode) + self.assertIsNotNone(dataset.ann_file) + self.assertEqual(dataset.ann_file, 'train_ann_file.mat') + self.assertIsNotNone(dataset.train_ann_file) + + # Test with test_mode=True, ann_file is None + cfg = {**self.DEFAULT_ARGS, 'test_mode': True, 'ann_file': None} + dataset = dataset_class(**cfg) + self.assertEqual(dataset.CLASSES, dataset_class.CLASSES) + self.assertTrue(dataset.test_mode) + self.assertIsNone(dataset.ann_file) + self.assertIsNotNone(dataset.test_ann_file) + + # Test with test_mode=True, ann_file is not None + cfg = { + **self.DEFAULT_ARGS, 'test_mode': True, + 'ann_file': 'test_ann_file.mat' + } + dataset = dataset_class(**cfg) + self.assertEqual(dataset.CLASSES, dataset_class.CLASSES) + self.assertTrue(dataset.test_mode) + self.assertIsNotNone(dataset.ann_file) + self.assertEqual(dataset.ann_file, 'test_ann_file.mat') + self.assertIsNotNone(dataset.test_ann_file) + + @classmethod + def setUpClass(cls) -> None: + super().setUpClass() + + tmpdir = tempfile.TemporaryDirectory() + cls.tmpdir = tmpdir + cls.data_prefix = tmpdir.name + cls.ann_file = None + devkit = osp.join(cls.data_prefix, 'devkit') + if not osp.exists(devkit): + os.mkdir(devkit) + cls.train_ann_file = osp.join(devkit, 'cars_train_annos.mat') + cls.test_ann_file = osp.join(devkit, 'cars_test_annos_withlabels.mat') + cls.DEFAULT_ARGS = dict( + data_prefix=cls.data_prefix, pipeline=[], test_mode=False) + + try: + import scipy.io as sio + except ImportError: + raise ImportError( + 'please run `pip install scipy` to install package `scipy`.') + + sio.savemat( + cls.train_ann_file, { + 'annotations': [( + (np.array([1]), np.array([10]), np.array( + [20]), np.array([50]), 15, np.array(['001.jpg'])), + (np.array([2]), np.array([15]), np.array( + [240]), np.array([250]), 15, np.array(['002.jpg'])), + (np.array([89]), np.array([150]), np.array( + [278]), np.array([388]), 150, np.array(['012.jpg'])), + )] + }) + + sio.savemat( + cls.test_ann_file, { + 'annotations': + [((np.array([89]), np.array([150]), np.array( + [278]), np.array([388]), 150, np.array(['025.jpg'])), + (np.array([155]), np.array([10]), np.array( + [200]), np.array([233]), 0, np.array(['111.jpg'])), + (np.array([25]), np.array([115]), np.array( + [240]), np.array([360]), 15, np.array(['265.jpg'])))] + }) + + def test_load_annotations(self): + dataset_class = DATASETS.get(self.DATASET_TYPE) + + # Test with test_mode=False and ann_file=None + dataset = dataset_class(**self.DEFAULT_ARGS) + self.assertEqual(len(dataset), 3) + self.assertEqual(dataset.CLASSES, dataset_class.CLASSES) + + data_info = dataset[0] + np.testing.assert_equal(data_info['img_prefix'], + osp.join(self.data_prefix, 'cars_train')) + np.testing.assert_equal(data_info['img_info'], {'filename': '001.jpg'}) + np.testing.assert_equal(data_info['gt_label'], 15 - 1) + + # Test with test_mode=True and ann_file=None + cfg = {**self.DEFAULT_ARGS, 'test_mode': True} + dataset = dataset_class(**cfg) + self.assertEqual(len(dataset), 3) + + data_info = dataset[0] + np.testing.assert_equal(data_info['img_prefix'], + osp.join(self.data_prefix, 'cars_test')) + np.testing.assert_equal(data_info['img_info'], {'filename': '025.jpg'}) + np.testing.assert_equal(data_info['gt_label'], 150 - 1) + + # Test with test_mode=False, ann_file is not None + cfg = { + **self.DEFAULT_ARGS, 'test_mode': False, + 'ann_file': self.train_ann_file + } + dataset = dataset_class(**cfg) + data_info = dataset[0] + np.testing.assert_equal(data_info['img_prefix'], + osp.join(self.data_prefix, 'cars_train')) + np.testing.assert_equal(data_info['img_info'], {'filename': '001.jpg'}) + np.testing.assert_equal(data_info['gt_label'], 15 - 1) + + # Test with test_mode=True, ann_file is not None + cfg = { + **self.DEFAULT_ARGS, 'test_mode': True, + 'ann_file': self.test_ann_file + } + dataset = dataset_class(**cfg) + self.assertEqual(len(dataset), 3) + + data_info = dataset[0] + np.testing.assert_equal(data_info['img_prefix'], + osp.join(self.data_prefix, 'cars_test')) + np.testing.assert_equal(data_info['img_info'], {'filename': '025.jpg'}) + np.testing.assert_equal(data_info['gt_label'], 150 - 1) + + @classmethod + def tearDownClass(cls): + cls.tmpdir.cleanup() diff --git a/openmmlab_test/mmclassification-0.24.1/tests/test_data/test_datasets/test_dataset_utils.py b/openmmlab_test/mmclassification-0.24.1/tests/test_data/test_datasets/test_dataset_utils.py new file mode 100644 index 00000000..d29b203d --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/tests/test_data/test_datasets/test_dataset_utils.py @@ -0,0 +1,22 @@ +# Copyright (c) OpenMMLab. All rights reserved. +import os.path as osp +import random +import string + +from mmcls.datasets.utils import check_integrity, rm_suffix + + +def test_dataset_utils(): + # test rm_suffix + assert rm_suffix('a.jpg') == 'a' + assert rm_suffix('a.bak.jpg') == 'a.bak' + assert rm_suffix('a.bak.jpg', suffix='.jpg') == 'a.bak' + assert rm_suffix('a.bak.jpg', suffix='.bak.jpg') == 'a' + + # test check_integrity + rand_file = ''.join(random.sample(string.ascii_letters, 10)) + assert not check_integrity(rand_file, md5=None) + assert not check_integrity(rand_file, md5=2333) + test_file = osp.join(osp.dirname(__file__), '../../data/color.jpg') + assert check_integrity(test_file, md5='08252e5100cb321fe74e0e12a724ce14') + assert not check_integrity(test_file, md5=2333) diff --git a/openmmlab_test/mmclassification-0.24.1/tests/test_data/test_datasets/test_dataset_wrapper.py b/openmmlab_test/mmclassification-0.24.1/tests/test_data/test_datasets/test_dataset_wrapper.py new file mode 100644 index 00000000..fc4e266b --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/tests/test_data/test_datasets/test_dataset_wrapper.py @@ -0,0 +1,192 @@ +# Copyright (c) OpenMMLab. All rights reserved. +import bisect +import math +from collections import defaultdict +from unittest.mock import MagicMock, patch + +import numpy as np +import pytest + +from mmcls.datasets import (BaseDataset, ClassBalancedDataset, ConcatDataset, + KFoldDataset, RepeatDataset) + + +def mock_evaluate(results, + metric='accuracy', + metric_options=None, + indices=None, + logger=None): + return dict( + results=results, + metric=metric, + metric_options=metric_options, + indices=indices, + logger=logger) + + +@patch.multiple(BaseDataset, __abstractmethods__=set()) +def construct_toy_multi_label_dataset(length): + BaseDataset.CLASSES = ('foo', 'bar') + BaseDataset.__getitem__ = MagicMock(side_effect=lambda idx: idx) + dataset = BaseDataset(data_prefix='', pipeline=[], test_mode=True) + cat_ids_list = [ + np.random.randint(0, 80, num).tolist() + for num in np.random.randint(1, 20, length) + ] + dataset.data_infos = MagicMock() + dataset.data_infos.__len__.return_value = length + dataset.get_cat_ids = MagicMock(side_effect=lambda idx: cat_ids_list[idx]) + dataset.get_gt_labels = \ + MagicMock(side_effect=lambda: np.array(cat_ids_list)) + dataset.evaluate = MagicMock(side_effect=mock_evaluate) + return dataset, cat_ids_list + + +@patch.multiple(BaseDataset, __abstractmethods__=set()) +def construct_toy_single_label_dataset(length): + BaseDataset.CLASSES = ('foo', 'bar') + BaseDataset.__getitem__ = MagicMock(side_effect=lambda idx: idx) + dataset = BaseDataset(data_prefix='', pipeline=[], test_mode=True) + cat_ids_list = [[np.random.randint(0, 80)] for _ in range(length)] + dataset.data_infos = MagicMock() + dataset.data_infos.__len__.return_value = length + dataset.get_cat_ids = MagicMock(side_effect=lambda idx: cat_ids_list[idx]) + dataset.get_gt_labels = \ + MagicMock(side_effect=lambda: cat_ids_list) + dataset.evaluate = MagicMock(side_effect=mock_evaluate) + return dataset, cat_ids_list + + +@pytest.mark.parametrize('construct_dataset', [ + 'construct_toy_multi_label_dataset', 'construct_toy_single_label_dataset' +]) +def test_concat_dataset(construct_dataset): + construct_toy_dataset = eval(construct_dataset) + dataset_a, cat_ids_list_a = construct_toy_dataset(10) + dataset_b, cat_ids_list_b = construct_toy_dataset(20) + + concat_dataset = ConcatDataset([dataset_a, dataset_b]) + assert concat_dataset[5] == 5 + assert concat_dataset[25] == 15 + assert concat_dataset.get_cat_ids(5) == cat_ids_list_a[5] + assert concat_dataset.get_cat_ids(25) == cat_ids_list_b[15] + assert len(concat_dataset) == len(dataset_a) + len(dataset_b) + assert concat_dataset.CLASSES == BaseDataset.CLASSES + + +@pytest.mark.parametrize('construct_dataset', [ + 'construct_toy_multi_label_dataset', 'construct_toy_single_label_dataset' +]) +def test_repeat_dataset(construct_dataset): + construct_toy_dataset = eval(construct_dataset) + dataset, cat_ids_list = construct_toy_dataset(10) + repeat_dataset = RepeatDataset(dataset, 10) + assert repeat_dataset[5] == 5 + assert repeat_dataset[15] == 5 + assert repeat_dataset[27] == 7 + assert repeat_dataset.get_cat_ids(5) == cat_ids_list[5] + assert repeat_dataset.get_cat_ids(15) == cat_ids_list[5] + assert repeat_dataset.get_cat_ids(27) == cat_ids_list[7] + assert len(repeat_dataset) == 10 * len(dataset) + assert repeat_dataset.CLASSES == BaseDataset.CLASSES + + +@pytest.mark.parametrize('construct_dataset', [ + 'construct_toy_multi_label_dataset', 'construct_toy_single_label_dataset' +]) +def test_class_balanced_dataset(construct_dataset): + construct_toy_dataset = eval(construct_dataset) + dataset, cat_ids_list = construct_toy_dataset(10) + + category_freq = defaultdict(int) + for cat_ids in cat_ids_list: + cat_ids = set(cat_ids) + for cat_id in cat_ids: + category_freq[cat_id] += 1 + for k, v in category_freq.items(): + category_freq[k] = v / len(cat_ids_list) + + mean_freq = np.mean(list(category_freq.values())) + repeat_thr = mean_freq + + category_repeat = { + cat_id: max(1.0, math.sqrt(repeat_thr / cat_freq)) + for cat_id, cat_freq in category_freq.items() + } + + repeat_factors = [] + for cat_ids in cat_ids_list: + cat_ids = set(cat_ids) + repeat_factor = max({category_repeat[cat_id] for cat_id in cat_ids}) + repeat_factors.append(math.ceil(repeat_factor)) + repeat_factors_cumsum = np.cumsum(repeat_factors) + repeat_factor_dataset = ClassBalancedDataset(dataset, repeat_thr) + assert repeat_factor_dataset.CLASSES == BaseDataset.CLASSES + assert len(repeat_factor_dataset) == repeat_factors_cumsum[-1] + for idx in np.random.randint(0, len(repeat_factor_dataset), 3): + assert repeat_factor_dataset[idx] == bisect.bisect_right( + repeat_factors_cumsum, idx) + + +@pytest.mark.parametrize('construct_dataset', [ + 'construct_toy_multi_label_dataset', 'construct_toy_single_label_dataset' +]) +def test_kfold_dataset(construct_dataset): + construct_toy_dataset = eval(construct_dataset) + dataset, cat_ids_list = construct_toy_dataset(10) + + # test without random seed + train_datasets = [ + KFoldDataset(dataset, fold=i, num_splits=3, test_mode=False) + for i in range(5) + ] + test_datasets = [ + KFoldDataset(dataset, fold=i, num_splits=3, test_mode=True) + for i in range(5) + ] + + assert sum([i.indices for i in test_datasets], []) == list(range(10)) + for train_set, test_set in zip(train_datasets, test_datasets): + train_samples = [train_set[i] for i in range(len(train_set))] + test_samples = [test_set[i] for i in range(len(test_set))] + assert set(train_samples + test_samples) == set(range(10)) + + # test with random seed + train_datasets = [ + KFoldDataset(dataset, fold=i, num_splits=3, test_mode=False, seed=1) + for i in range(5) + ] + test_datasets = [ + KFoldDataset(dataset, fold=i, num_splits=3, test_mode=True, seed=1) + for i in range(5) + ] + + assert sum([i.indices for i in test_datasets], []) != list(range(10)) + assert set(sum([i.indices for i in test_datasets], [])) == set(range(10)) + for train_set, test_set in zip(train_datasets, test_datasets): + train_samples = [train_set[i] for i in range(len(train_set))] + test_samples = [test_set[i] for i in range(len(test_set))] + assert set(train_samples + test_samples) == set(range(10)) + + # test behavior of get_cat_ids method + for train_set, test_set in zip(train_datasets, test_datasets): + for i in range(len(train_set)): + cat_ids = train_set.get_cat_ids(i) + assert cat_ids == cat_ids_list[train_set.indices[i]] + for i in range(len(test_set)): + cat_ids = test_set.get_cat_ids(i) + assert cat_ids == cat_ids_list[test_set.indices[i]] + + # test behavior of get_gt_labels method + for train_set, test_set in zip(train_datasets, test_datasets): + for i in range(len(train_set)): + gt_label = train_set.get_gt_labels()[i] + assert gt_label == cat_ids_list[train_set.indices[i]] + for i in range(len(test_set)): + gt_label = test_set.get_gt_labels()[i] + assert gt_label == cat_ids_list[test_set.indices[i]] + + # test evaluate + for test_set in test_datasets: + eval_inputs = test_set.evaluate(None) + assert eval_inputs['indices'] == test_set.indices diff --git a/openmmlab_test/mmclassification-0.24.1/tests/test_data/test_datasets/test_sampler.py b/openmmlab_test/mmclassification-0.24.1/tests/test_data/test_datasets/test_sampler.py new file mode 100644 index 00000000..683b953a --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/tests/test_data/test_datasets/test_sampler.py @@ -0,0 +1,53 @@ +# Copyright (c) OpenMMLab. All rights reserved. + +from unittest.mock import MagicMock, patch + +import numpy as np + +from mmcls.datasets import BaseDataset, RepeatAugSampler, build_sampler + + +@patch.multiple(BaseDataset, __abstractmethods__=set()) +def construct_toy_single_label_dataset(length): + BaseDataset.CLASSES = ('foo', 'bar') + BaseDataset.__getitem__ = MagicMock(side_effect=lambda idx: idx) + dataset = BaseDataset(data_prefix='', pipeline=[], test_mode=True) + cat_ids_list = [[np.random.randint(0, 80)] for _ in range(length)] + dataset.data_infos = MagicMock() + dataset.data_infos.__len__.return_value = length + dataset.get_cat_ids = MagicMock(side_effect=lambda idx: cat_ids_list[idx]) + return dataset, cat_ids_list + + +@patch('mmcls.datasets.samplers.repeat_aug.get_dist_info', return_value=(0, 1)) +def test_sampler_builder(_): + assert build_sampler(None) is None + dataset = construct_toy_single_label_dataset(1000)[0] + build_sampler(dict(type='RepeatAugSampler', dataset=dataset)) + + +@patch('mmcls.datasets.samplers.repeat_aug.get_dist_info', return_value=(0, 1)) +def test_rep_aug(_): + dataset = construct_toy_single_label_dataset(1000)[0] + ra = RepeatAugSampler(dataset, selected_round=0, shuffle=False) + ra.set_epoch(0) + assert len(ra) == 1000 + ra = RepeatAugSampler(dataset) + assert len(ra) == 768 + val = None + for idx, content in enumerate(ra): + if idx % 3 == 0: + val = content + else: + assert val is not None + assert content == val + + +@patch('mmcls.datasets.samplers.repeat_aug.get_dist_info', return_value=(0, 2)) +def test_rep_aug_dist(_): + dataset = construct_toy_single_label_dataset(1000)[0] + ra = RepeatAugSampler(dataset, selected_round=0, shuffle=False) + ra.set_epoch(0) + assert len(ra) == 1000 // 2 + ra = RepeatAugSampler(dataset) + assert len(ra) == 768 // 2 diff --git a/openmmlab_test/mmclassification-speed-benchmark/tests/test_pipelines/test_auto_augment.py b/openmmlab_test/mmclassification-0.24.1/tests/test_data/test_pipelines/test_auto_augment.py similarity index 92% rename from openmmlab_test/mmclassification-speed-benchmark/tests/test_pipelines/test_auto_augment.py rename to openmmlab_test/mmclassification-0.24.1/tests/test_data/test_pipelines/test_auto_augment.py index 2342792f..388ff46d 100644 --- a/openmmlab_test/mmclassification-speed-benchmark/tests/test_pipelines/test_auto_augment.py +++ b/openmmlab_test/mmclassification-0.24.1/tests/test_data/test_pipelines/test_auto_augment.py @@ -1,3 +1,4 @@ +# Copyright (c) OpenMMLab. All rights reserved. import copy import random @@ -39,6 +40,47 @@ def construct_toy_data_photometric(): return results +def test_auto_augment(): + policies = [[ + dict(type='Posterize', bits=4, prob=0.4), + dict(type='Rotate', angle=30., prob=0.6) + ]] + + # test assertion for policies + with pytest.raises(AssertionError): + # policies shouldn't be empty + transform = dict(type='AutoAugment', policies=[]) + build_from_cfg(transform, PIPELINES) + with pytest.raises(AssertionError): + # policy should have type + invalid_policies = copy.deepcopy(policies) + invalid_policies[0][0].pop('type') + transform = dict(type='AutoAugment', policies=invalid_policies) + build_from_cfg(transform, PIPELINES) + with pytest.raises(AssertionError): + # sub policy should be a non-empty list + invalid_policies = copy.deepcopy(policies) + invalid_policies[0] = [] + transform = dict(type='AutoAugment', policies=invalid_policies) + build_from_cfg(transform, PIPELINES) + with pytest.raises(AssertionError): + # policy should be valid in PIPELINES registry. + invalid_policies = copy.deepcopy(policies) + invalid_policies.append([dict(type='Wrong_policy')]) + transform = dict(type='AutoAugment', policies=invalid_policies) + build_from_cfg(transform, PIPELINES) + + # test hparams + transform = dict( + type='AutoAugment', + policies=policies, + hparams=dict(pad_val=15, interpolation='nearest')) + pipeline = build_from_cfg(transform, PIPELINES) + # use hparams if not set in policies config + assert pipeline.policies[0][1]['pad_val'] == 15 + assert pipeline.policies[0][1]['interpolation'] == 'nearest' + + def test_rand_augment(): policies = [ dict( @@ -47,12 +89,13 @@ def test_rand_augment(): magnitude_range=(0, 1), pad_val=128, prob=1., - direction='horizontal'), + direction='horizontal', + interpolation='nearest'), dict(type='Invert', prob=1.), dict( type='Rotate', magnitude_key='angle', - magnitude_range=(0, 30), + magnitude_range=(0, 90), prob=0.) ] # test assertion for num_policies @@ -136,6 +179,15 @@ def test_rand_augment(): num_policies=2, magnitude_level=12) build_from_cfg(transform, PIPELINES) + with pytest.raises(AssertionError): + invalid_policies = copy.deepcopy(policies) + invalid_policies.append(dict(type='Wrong_policy')) + transform = dict( + type='RandAugment', + policies=invalid_policies, + num_policies=2, + magnitude_level=12) + build_from_cfg(transform, PIPELINES) with pytest.raises(AssertionError): invalid_policies = copy.deepcopy(policies) invalid_policies[2].pop('type') @@ -306,7 +358,7 @@ def test_rand_augment(): axis=-1) np.testing.assert_array_equal(results['img'], img_augmented) - # test case where magnitude_std is negtive + # test case where magnitude_std is negative random.seed(3) np.random.seed(0) results = construct_toy_data() @@ -326,6 +378,32 @@ def test_rand_augment(): axis=-1) np.testing.assert_array_equal(results['img'], img_augmented) + # test hparams + random.seed(8) + np.random.seed(0) + results = construct_toy_data() + policies[2]['prob'] = 1.0 + transform = dict( + type='RandAugment', + policies=policies, + num_policies=2, + magnitude_level=12, + magnitude_std=-1, + hparams=dict(pad_val=15, interpolation='nearest')) + pipeline = build_from_cfg(transform, PIPELINES) + # apply translate (magnitude=0.4) and rotate (angle=36) + results = pipeline(results) + img_augmented = np.array( + [[128, 128, 128, 15], [128, 128, 5, 2], [15, 9, 9, 6]], dtype=np.uint8) + img_augmented = np.stack([img_augmented, img_augmented, img_augmented], + axis=-1) + np.testing.assert_array_equal(results['img'], img_augmented) + # hparams won't override setting in policies config + assert pipeline.policies[0]['pad_val'] == 128 + # use hparams if not set in policies config + assert pipeline.policies[2]['pad_val'] == 15 + assert pipeline.policies[2]['interpolation'] == 'nearest' + def test_shear(): # test assertion for invalid type of magnitude @@ -524,7 +602,7 @@ def test_rotate(): transform = dict(type='Rotate', angle=90., center=0) build_from_cfg(transform, PIPELINES) - # test assertion for invalid lenth of center + # test assertion for invalid length of center with pytest.raises(AssertionError): transform = dict(type='Rotate', angle=90., center=(0, )) build_from_cfg(transform, PIPELINES) @@ -682,7 +760,7 @@ def test_equalize(nb_rand_test=100): def _imequalize(img): # equalize the image using PIL.ImageOps.equalize - from PIL import ImageOps, Image + from PIL import Image, ImageOps img = Image.fromarray(img) equalized_img = np.asarray(ImageOps.equalize(img)) return equalized_img @@ -704,7 +782,7 @@ def test_equalize(nb_rand_test=100): transform = dict(type='Equalize', prob=1.) pipeline = build_from_cfg(transform, PIPELINES) for _ in range(nb_rand_test): - img = np.clip(np.random.normal(0, 1, (1000, 1200, 3)) * 260, 0, + img = np.clip(np.random.normal(0, 1, (256, 256, 3)) * 260, 0, 255).astype(np.uint8) results['img'] = img results = pipeline(copy.deepcopy(results)) @@ -854,8 +932,9 @@ def test_posterize(): def test_contrast(nb_rand_test=100): def _adjust_contrast(img, factor): - from PIL.ImageEnhance import Contrast from PIL import Image + from PIL.ImageEnhance import Contrast + # Image.fromarray defaultly supports RGB, not BGR. # convert from BGR to RGB img = Image.fromarray(img[..., ::-1], mode='RGB') @@ -903,7 +982,7 @@ def test_contrast(nb_rand_test=100): prob=1., random_negative_prob=0.) pipeline = build_from_cfg(transform, PIPELINES) - img = np.clip(np.random.uniform(0, 1, (1200, 1000, 3)) * 260, 0, + img = np.clip(np.random.uniform(0, 1, (256, 256, 3)) * 260, 0, 255).astype(np.uint8) results['img'] = img results = pipeline(copy.deepcopy(results)) @@ -988,8 +1067,8 @@ def test_brightness(nb_rand_test=100): def _adjust_brightness(img, factor): # adjust the brightness of image using # PIL.ImageEnhance.Brightness - from PIL.ImageEnhance import Brightness from PIL import Image + from PIL.ImageEnhance import Brightness img = Image.fromarray(img) brightened_img = Brightness(img).enhance(factor) return np.asarray(brightened_img) @@ -1034,7 +1113,7 @@ def test_brightness(nb_rand_test=100): prob=1., random_negative_prob=0.) pipeline = build_from_cfg(transform, PIPELINES) - img = np.clip(np.random.uniform(0, 1, (1200, 1000, 3)) * 260, 0, + img = np.clip(np.random.uniform(0, 1, (256, 256, 3)) * 260, 0, 255).astype(np.uint8) results['img'] = img results = pipeline(copy.deepcopy(results)) @@ -1050,8 +1129,8 @@ def test_sharpness(nb_rand_test=100): def _adjust_sharpness(img, factor): # adjust the sharpness of image using # PIL.ImageEnhance.Sharpness - from PIL.ImageEnhance import Sharpness from PIL import Image + from PIL.ImageEnhance import Sharpness img = Image.fromarray(img) sharpened_img = Sharpness(img).enhance(factor) return np.asarray(sharpened_img) @@ -1096,7 +1175,7 @@ def test_sharpness(nb_rand_test=100): prob=1., random_negative_prob=0.) pipeline = build_from_cfg(transform, PIPELINES) - img = np.clip(np.random.uniform(0, 1, (1200, 1000, 3)) * 260, 0, + img = np.clip(np.random.uniform(0, 1, (256, 256, 3)) * 260, 0, 255).astype(np.uint8) results['img'] = img results = pipeline(copy.deepcopy(results)) diff --git a/openmmlab_test/mmclassification-speed-benchmark/tests/test_pipelines/test_loading.py b/openmmlab_test/mmclassification-0.24.1/tests/test_data/test_pipelines/test_loading.py similarity index 94% rename from openmmlab_test/mmclassification-speed-benchmark/tests/test_pipelines/test_loading.py rename to openmmlab_test/mmclassification-0.24.1/tests/test_data/test_pipelines/test_loading.py index d3d913d7..928fbc84 100644 --- a/openmmlab_test/mmclassification-speed-benchmark/tests/test_pipelines/test_loading.py +++ b/openmmlab_test/mmclassification-0.24.1/tests/test_data/test_pipelines/test_loading.py @@ -1,3 +1,4 @@ +# Copyright (c) OpenMMLab. All rights reserved. import copy import os.path as osp @@ -10,7 +11,7 @@ class TestLoading(object): @classmethod def setup_class(cls): - cls.data_prefix = osp.join(osp.dirname(__file__), '../data') + cls.data_prefix = osp.join(osp.dirname(__file__), '../../data') def test_load_img(self): results = dict( diff --git a/openmmlab_test/mmclassification-speed-benchmark/tests/test_pipelines/test_transform.py b/openmmlab_test/mmclassification-0.24.1/tests/test_data/test_pipelines/test_transform.py similarity index 89% rename from openmmlab_test/mmclassification-speed-benchmark/tests/test_pipelines/test_transform.py rename to openmmlab_test/mmclassification-0.24.1/tests/test_data/test_pipelines/test_transform.py index 9d751fa7..b23e84b5 100644 --- a/openmmlab_test/mmclassification-speed-benchmark/tests/test_pipelines/test_transform.py +++ b/openmmlab_test/mmclassification-0.24.1/tests/test_data/test_pipelines/test_transform.py @@ -1,3 +1,4 @@ +# Copyright (c) OpenMMLab. All rights reserved. import copy import os.path as osp import random @@ -62,6 +63,11 @@ def test_resize(): transform = dict(type='Resize', size=224, interpolation='2333') build_from_cfg(transform, PIPELINES) + # test assertion when resize_short is invalid + with pytest.raises(AssertionError): + transform = dict(type='Resize', size=224, adaptive_side='False') + build_from_cfg(transform, PIPELINES) + # test repr transform = dict(type='Resize', size=224) resize_module = build_from_cfg(transform, PIPELINES) @@ -70,7 +76,7 @@ def test_resize(): # read test image results = dict() img = mmcv.imread( - osp.join(osp.dirname(__file__), '../data/color.jpg'), 'color') + osp.join(osp.dirname(__file__), '../../data/color.jpg'), 'color') original_img = copy.deepcopy(img) results['img'] = img results['img2'] = copy.deepcopy(img) @@ -163,6 +169,102 @@ def test_resize(): assert results['img_shape'] == (224, 224, 3) assert np.allclose(results['img'], resized_img, atol=30) + # test resize when size is tuple, the second value is -1 + # and adaptive_side='long' + transform = dict( + type='Resize', + size=(224, -1), + adaptive_side='long', + interpolation='bilinear') + resize_module = build_from_cfg(transform, PIPELINES) + results = reset_results(results, original_img) + results = resize_module(results) + assert np.equal(results['img'], results['img2']).all() + assert results['img_shape'] == (168, 224, 3) + + # test resize when size is tuple, the second value is -1 + # and adaptive_side='long', h > w + transform1 = dict(type='Resize', size=(300, 200), interpolation='bilinear') + resize_module1 = build_from_cfg(transform1, PIPELINES) + transform2 = dict( + type='Resize', + size=(224, -1), + adaptive_side='long', + interpolation='bilinear') + resize_module2 = build_from_cfg(transform2, PIPELINES) + results = reset_results(results, original_img) + results = resize_module1(results) + results = resize_module2(results) + assert np.equal(results['img'], results['img2']).all() + assert results['img_shape'] == (224, 149, 3) + + # test resize when size is tuple, the second value is -1 + # and adaptive_side='short', h > w + transform1 = dict(type='Resize', size=(300, 200), interpolation='bilinear') + resize_module1 = build_from_cfg(transform1, PIPELINES) + transform2 = dict( + type='Resize', + size=(224, -1), + adaptive_side='short', + interpolation='bilinear') + resize_module2 = build_from_cfg(transform2, PIPELINES) + results = reset_results(results, original_img) + results = resize_module1(results) + results = resize_module2(results) + assert np.equal(results['img'], results['img2']).all() + assert results['img_shape'] == (336, 224, 3) + + # test interpolation method checking + with pytest.raises(AssertionError): + transform = dict( + type='Resize', size=(300, 200), backend='cv2', interpolation='box') + resize_module = build_from_cfg(transform, PIPELINES) + + with pytest.raises(AssertionError): + transform = dict( + type='Resize', + size=(300, 200), + backend='pillow', + interpolation='area') + resize_module = build_from_cfg(transform, PIPELINES) + + +def test_pad(): + results = dict() + img = mmcv.imread( + osp.join(osp.dirname(__file__), '../../data/color.jpg'), 'color') + results['img'] = img + results['img2'] = copy.deepcopy(img) + results['img_shape'] = img.shape + results['ori_shape'] = img.shape + results['img_fields'] = ['img', 'img2'] + + # test assertion if shape is None + with pytest.raises(AssertionError): + transform = dict(type='Pad', size=None) + pad_module = build_from_cfg(transform, PIPELINES) + pad_result = pad_module(copy.deepcopy(results)) + assert np.equal(pad_result['img'], pad_result['img2']).all() + assert pad_result['img_shape'] == (400, 400, 3) + + # test if pad is valid + transform = dict(type='Pad', size=(400, 400)) + pad_module = build_from_cfg(transform, PIPELINES) + pad_result = pad_module(copy.deepcopy(results)) + assert isinstance(repr(pad_module), str) + assert np.equal(pad_result['img'], pad_result['img2']).all() + assert pad_result['img_shape'] == (400, 400, 3) + assert np.allclose(pad_result['img'][-100:, :, :], 0) + + # test if pad_to_square is valid + transform = dict(type='Pad', pad_to_square=True) + pad_module = build_from_cfg(transform, PIPELINES) + pad_result = pad_module(copy.deepcopy(results)) + assert isinstance(repr(pad_module), str) + assert np.equal(pad_result['img'], pad_result['img2']).all() + assert pad_result['img_shape'] == (400, 400, 3) + assert np.allclose(pad_result['img'][-100:, :, :], 0) + def test_center_crop(): # test assertion if size is smaller than 0 @@ -220,7 +322,7 @@ def test_center_crop(): # read test image results = dict() img = mmcv.imread( - osp.join(osp.dirname(__file__), '../data/color.jpg'), 'color') + osp.join(osp.dirname(__file__), '../../data/color.jpg'), 'color') original_img = copy.deepcopy(img) results['img'] = img results['img2'] = copy.deepcopy(img) @@ -343,7 +445,7 @@ def test_normalize(): # read data results = dict() img = mmcv.imread( - osp.join(osp.dirname(__file__), '../data/color.jpg'), 'color') + osp.join(osp.dirname(__file__), '../../data/color.jpg'), 'color') original_img = copy.deepcopy(img) results['img'] = img results['img2'] = copy.deepcopy(img) @@ -371,9 +473,9 @@ def test_normalize(): def test_randomcrop(): ori_img = mmcv.imread( - osp.join(osp.dirname(__file__), '../data/color.jpg'), 'color') + osp.join(osp.dirname(__file__), '../../data/color.jpg'), 'color') ori_img_pil = Image.open( - osp.join(osp.dirname(__file__), '../data/color.jpg')) + osp.join(osp.dirname(__file__), '../../data/color.jpg')) seed = random.randint(0, 100) # test crop size is int @@ -517,9 +619,9 @@ def test_randomcrop(): def test_randomresizedcrop(): ori_img = mmcv.imread( - osp.join(osp.dirname(__file__), '../data/color.jpg'), 'color') + osp.join(osp.dirname(__file__), '../../data/color.jpg'), 'color') ori_img_pil = Image.open( - osp.join(osp.dirname(__file__), '../data/color.jpg')) + osp.join(osp.dirname(__file__), '../../data/color.jpg')) seed = random.randint(0, 100) @@ -900,7 +1002,7 @@ def test_randomflip(): # read test image results = dict() img = mmcv.imread( - osp.join(osp.dirname(__file__), '../data/color.jpg'), 'color') + osp.join(osp.dirname(__file__), '../../data/color.jpg'), 'color') original_img = copy.deepcopy(img) results['img'] = img results['img2'] = copy.deepcopy(img) @@ -928,7 +1030,7 @@ def test_randomflip(): results = flip_module(results) assert np.equal(results['img'], results['img2']).all() - # compare hotizontal flip with torchvision + # compare horizontal flip with torchvision transform = dict(type='RandomFlip', flip_prob=1, direction='horizontal') flip_module = build_from_cfg(transform, PIPELINES) results = reset_results(results, original_img) @@ -1077,7 +1179,7 @@ def test_color_jitter(): # read test image results = dict() img = mmcv.imread( - osp.join(osp.dirname(__file__), '../data/color.jpg'), 'color') + osp.join(osp.dirname(__file__), '../../data/color.jpg'), 'color') original_img = copy.deepcopy(img) results['img'] = img results['img2'] = copy.deepcopy(img) @@ -1123,7 +1225,7 @@ def test_lighting(): # read test image results = dict() img = mmcv.imread( - osp.join(osp.dirname(__file__), '../data/color.jpg'), 'color') + osp.join(osp.dirname(__file__), '../../data/color.jpg'), 'color') original_img = copy.deepcopy(img) results['img'] = img results['img2'] = copy.deepcopy(img) @@ -1165,15 +1267,26 @@ def test_lighting(): def test_albu_transform(): results = dict( - img_prefix=osp.join(osp.dirname(__file__), '../data'), - img_info=dict(filename='color.jpg')) + img_prefix=osp.join(osp.dirname(__file__), '../../data'), + img_info=dict(filename='color.jpg'), + gt_label=np.array(1)) # Define simple pipeline load = dict(type='LoadImageFromFile') load = build_from_cfg(load, PIPELINES) albu_transform = dict( - type='Albu', transforms=[dict(type='ChannelShuffle', p=1)]) + type='Albu', + transforms=[ + dict(type='ChannelShuffle', p=1), + dict( + type='ShiftScaleRotate', + shift_limit=0.0625, + scale_limit=0.0, + rotate_limit=0, + interpolation=1, + p=1) + ]) albu_transform = build_from_cfg(albu_transform, PIPELINES) normalize = dict(type='Normalize', mean=[0] * 3, std=[0] * 3, to_rgb=True) @@ -1185,3 +1298,4 @@ def test_albu_transform(): results = normalize(results) assert results['img'].dtype == np.float32 + assert results['gt_label'].shape == np.array(1).shape diff --git a/openmmlab_test/mmclassification-0.24.1/tests/test_downstream/test_mmdet_inference.py b/openmmlab_test/mmclassification-0.24.1/tests/test_downstream/test_mmdet_inference.py new file mode 100644 index 00000000..096c5db7 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/tests/test_downstream/test_mmdet_inference.py @@ -0,0 +1,118 @@ +# Copyright (c) OpenMMLab. All rights reserved. +import numpy as np +from mmcv import Config +from mmdet.apis import inference_detector +from mmdet.models import build_detector + +from mmcls.models import (MobileNetV2, MobileNetV3, RegNet, ResNeSt, ResNet, + ResNeXt, SEResNet, SEResNeXt, SwinTransformer, + TIMMBackbone) +from mmcls.models.backbones.timm_backbone import timm + +backbone_configs = dict( + mobilenetv2=dict( + backbone=dict( + type='mmcls.MobileNetV2', + widen_factor=1.0, + norm_cfg=dict(type='GN', num_groups=2, requires_grad=True), + out_indices=(4, 7)), + out_channels=[96, 1280]), + mobilenetv3=dict( + backbone=dict( + type='mmcls.MobileNetV3', + norm_cfg=dict(type='GN', num_groups=2, requires_grad=True), + out_indices=range(7, 12)), + out_channels=[48, 48, 96, 96, 96]), + regnet=dict( + backbone=dict(type='mmcls.RegNet', arch='regnetx_400mf'), + out_channels=384), + resnext=dict( + backbone=dict( + type='mmcls.ResNeXt', depth=50, groups=32, width_per_group=4), + out_channels=2048), + resnet=dict( + backbone=dict(type='mmcls.ResNet', depth=50), out_channels=2048), + seresnet=dict( + backbone=dict(type='mmcls.SEResNet', depth=50), out_channels=2048), + seresnext=dict( + backbone=dict( + type='mmcls.SEResNeXt', depth=50, groups=32, width_per_group=4), + out_channels=2048), + resnest=dict( + backbone=dict( + type='mmcls.ResNeSt', + depth=50, + radix=2, + reduction_factor=4, + out_indices=(0, 1, 2, 3)), + out_channels=[256, 512, 1024, 2048]), + swin=dict( + backbone=dict( + type='mmcls.SwinTransformer', + arch='small', + drop_path_rate=0.2, + img_size=800, + out_indices=(2, 3)), + out_channels=[384, 768]), + timm_efficientnet=dict( + backbone=dict( + type='mmcls.TIMMBackbone', + model_name='efficientnet_b1', + features_only=True, + pretrained=False, + out_indices=(1, 2, 3, 4)), + out_channels=[24, 40, 112, 320]), + timm_resnet=dict( + backbone=dict( + type='mmcls.TIMMBackbone', + model_name='resnet50', + features_only=True, + pretrained=False, + out_indices=(1, 2, 3, 4)), + out_channels=[256, 512, 1024, 2048])) + +module_mapping = { + 'mobilenetv2': MobileNetV2, + 'mobilenetv3': MobileNetV3, + 'regnet': RegNet, + 'resnext': ResNeXt, + 'resnet': ResNet, + 'seresnext': SEResNeXt, + 'seresnet': SEResNet, + 'resnest': ResNeSt, + 'swin': SwinTransformer, + 'timm_efficientnet': TIMMBackbone, + 'timm_resnet': TIMMBackbone +} + + +def test_mmdet_inference(): + config_path = './tests/data/retinanet.py' + rng = np.random.RandomState(0) + img1 = rng.rand(100, 100, 3) + + for module_name, backbone_config in backbone_configs.items(): + module = module_mapping[module_name] + if module is TIMMBackbone and timm is None: + print(f'skip {module_name} because timm is not available') + continue + print(f'test {module_name}') + config = Config.fromfile(config_path) + config.model.backbone = backbone_config['backbone'] + out_channels = backbone_config['out_channels'] + if isinstance(out_channels, int): + config.model.neck = None + config.model.bbox_head.in_channels = out_channels + anchor_generator = config.model.bbox_head.anchor_generator + anchor_generator.strides = anchor_generator.strides[:1] + else: + config.model.neck.in_channels = out_channels + + model = build_detector(config.model) + assert isinstance(model.backbone, module) + + model.cfg = config + + model.eval() + result = inference_detector(model, img1) + assert len(result) == config.num_classes diff --git a/openmmlab_test/mmclassification-0.24.1/tests/test_metrics/test_losses.py b/openmmlab_test/mmclassification-0.24.1/tests/test_metrics/test_losses.py new file mode 100644 index 00000000..74eec620 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/tests/test_metrics/test_losses.py @@ -0,0 +1,362 @@ +# Copyright (c) OpenMMLab. All rights reserved. +import pytest +import torch + +from mmcls.models import build_loss + + +def test_asymmetric_loss(): + # test asymmetric_loss + cls_score = torch.Tensor([[5, -5, 0], [5, -5, 0]]) + label = torch.Tensor([[1, 0, 1], [0, 1, 0]]) + weight = torch.tensor([0.5, 0.5]) + + loss_cfg = dict( + type='AsymmetricLoss', + gamma_pos=1.0, + gamma_neg=4.0, + clip=0.05, + reduction='mean', + loss_weight=1.0) + loss = build_loss(loss_cfg) + assert torch.allclose(loss(cls_score, label), torch.tensor(3.80845 / 3)) + + # test asymmetric_loss with weight + assert torch.allclose( + loss(cls_score, label, weight=weight), torch.tensor(3.80845 / 6)) + + # test asymmetric_loss without clip + loss_cfg = dict( + type='AsymmetricLoss', + gamma_pos=1.0, + gamma_neg=4.0, + clip=None, + reduction='mean', + loss_weight=1.0) + loss = build_loss(loss_cfg) + assert torch.allclose(loss(cls_score, label), torch.tensor(5.1186 / 3)) + + # test asymmetric_loss with softmax for single label task + cls_score = torch.Tensor([[5, -5, 0], [5, -5, 0]]) + label = torch.Tensor([0, 1]) + weight = torch.tensor([0.5, 0.5]) + loss_cfg = dict( + type='AsymmetricLoss', + gamma_pos=0.0, + gamma_neg=0.0, + clip=None, + reduction='mean', + loss_weight=1.0, + use_sigmoid=False, + eps=1e-8) + loss = build_loss(loss_cfg) + # test asymmetric_loss for single label task without weight + assert torch.allclose(loss(cls_score, label), torch.tensor(2.5045)) + # test asymmetric_loss for single label task with weight + assert torch.allclose( + loss(cls_score, label, weight=weight), torch.tensor(2.5045 * 0.5)) + + # test soft asymmetric_loss with softmax + cls_score = torch.Tensor([[5, -5, 0], [5, -5, 0]]) + label = torch.Tensor([[1, 0, 0], [0, 1, 0]]) + weight = torch.tensor([0.5, 0.5]) + loss_cfg = dict( + type='AsymmetricLoss', + gamma_pos=0.0, + gamma_neg=0.0, + clip=None, + reduction='mean', + loss_weight=1.0, + use_sigmoid=False, + eps=1e-8) + loss = build_loss(loss_cfg) + # test soft asymmetric_loss with softmax without weight + assert torch.allclose(loss(cls_score, label), torch.tensor(2.5045)) + # test soft asymmetric_loss with softmax with weight + assert torch.allclose( + loss(cls_score, label, weight=weight), torch.tensor(2.5045 * 0.5)) + + +def test_cross_entropy_loss(): + with pytest.raises(AssertionError): + # use_sigmoid and use_soft could not be set simultaneously + loss_cfg = dict( + type='CrossEntropyLoss', use_sigmoid=True, use_soft=True) + loss = build_loss(loss_cfg) + + # test ce_loss + cls_score = torch.Tensor([[-1000, 1000], [100, -100]]) + label = torch.Tensor([0, 1]).long() + class_weight = [0.3, 0.7] # class 0 : 0.3, class 1 : 0.7 + weight = torch.tensor([0.6, 0.4]) + + # test ce_loss without class weight + loss_cfg = dict(type='CrossEntropyLoss', reduction='mean', loss_weight=1.0) + loss = build_loss(loss_cfg) + assert torch.allclose(loss(cls_score, label), torch.tensor(1100.)) + # test ce_loss with weight + assert torch.allclose( + loss(cls_score, label, weight=weight), torch.tensor(640.)) + + # test ce_loss with class weight + loss_cfg = dict( + type='CrossEntropyLoss', + reduction='mean', + loss_weight=1.0, + class_weight=class_weight) + loss = build_loss(loss_cfg) + assert torch.allclose(loss(cls_score, label), torch.tensor(370.)) + # test ce_loss with weight + assert torch.allclose( + loss(cls_score, label, weight=weight), torch.tensor(208.)) + + # test bce_loss + cls_score = torch.Tensor([[-200, 100], [500, -1000], [300, -300]]) + label = torch.Tensor([[1, 0], [0, 1], [1, 0]]) + weight = torch.Tensor([0.6, 0.4, 0.5]) + class_weight = [0.1, 0.9] # class 0: 0.1, class 1: 0.9 + pos_weight = [0.1, 0.2] + + # test bce_loss without class weight + loss_cfg = dict( + type='CrossEntropyLoss', + use_sigmoid=True, + reduction='mean', + loss_weight=1.0) + loss = build_loss(loss_cfg) + assert torch.allclose(loss(cls_score, label), torch.tensor(300.)) + # test ce_loss with weight + assert torch.allclose( + loss(cls_score, label, weight=weight), torch.tensor(130.)) + + # test bce_loss with class weight + loss_cfg = dict( + type='CrossEntropyLoss', + use_sigmoid=True, + reduction='mean', + loss_weight=1.0, + class_weight=class_weight) + loss = build_loss(loss_cfg) + assert torch.allclose(loss(cls_score, label), torch.tensor(176.667)) + # test bce_loss with weight + assert torch.allclose( + loss(cls_score, label, weight=weight), torch.tensor(74.333)) + + # test bce loss with pos_weight + loss_cfg = dict( + type='CrossEntropyLoss', + use_sigmoid=True, + reduction='mean', + loss_weight=1.0, + pos_weight=pos_weight) + loss = build_loss(loss_cfg) + assert torch.allclose(loss(cls_score, label), torch.tensor(136.6667)) + + # test soft_ce_loss + cls_score = torch.Tensor([[-1000, 1000], [100, -100]]) + label = torch.Tensor([[1.0, 0.0], [0.0, 1.0]]) + class_weight = [0.3, 0.7] # class 0 : 0.3, class 1 : 0.7 + weight = torch.tensor([0.6, 0.4]) + + # test soft_ce_loss without class weight + loss_cfg = dict( + type='CrossEntropyLoss', + use_soft=True, + reduction='mean', + loss_weight=1.0) + loss = build_loss(loss_cfg) + assert torch.allclose(loss(cls_score, label), torch.tensor(1100.)) + # test soft_ce_loss with weight + assert torch.allclose( + loss(cls_score, label, weight=weight), torch.tensor(640.)) + + # test soft_ce_loss with class weight + loss_cfg = dict( + type='CrossEntropyLoss', + use_soft=True, + reduction='mean', + loss_weight=1.0, + class_weight=class_weight) + loss = build_loss(loss_cfg) + assert torch.allclose(loss(cls_score, label), torch.tensor(370.)) + # test soft_ce_loss with weight + assert torch.allclose( + loss(cls_score, label, weight=weight), torch.tensor(208.)) + + +def test_focal_loss(): + # test focal_loss + cls_score = torch.Tensor([[5, -5, 0], [5, -5, 0]]) + label = torch.Tensor([[1, 0, 1], [0, 1, 0]]) + weight = torch.tensor([0.5, 0.5]) + + loss_cfg = dict( + type='FocalLoss', + gamma=2.0, + alpha=0.25, + reduction='mean', + loss_weight=1.0) + loss = build_loss(loss_cfg) + assert torch.allclose(loss(cls_score, label), torch.tensor(0.8522)) + # test focal_loss with weight + assert torch.allclose( + loss(cls_score, label, weight=weight), torch.tensor(0.8522 / 2)) + # test focal loss for single label task + cls_score = torch.Tensor([[5, -5, 0], [5, -5, 0]]) + label = torch.Tensor([0, 1]) + weight = torch.tensor([0.5, 0.5]) + assert torch.allclose(loss(cls_score, label), torch.tensor(0.86664125)) + # test focal_loss single label with weight + assert torch.allclose( + loss(cls_score, label, weight=weight), torch.tensor(0.86664125 / 2)) + + +def test_label_smooth_loss(): + # test label_smooth_val assertion + with pytest.raises(AssertionError): + loss_cfg = dict(type='LabelSmoothLoss', label_smooth_val=1.0) + build_loss(loss_cfg) + + with pytest.raises(AssertionError): + loss_cfg = dict(type='LabelSmoothLoss', label_smooth_val='str') + build_loss(loss_cfg) + + # test reduction assertion + with pytest.raises(AssertionError): + loss_cfg = dict( + type='LabelSmoothLoss', label_smooth_val=0.1, reduction='unknown') + build_loss(loss_cfg) + + # test mode assertion + with pytest.raises(AssertionError): + loss_cfg = dict( + type='LabelSmoothLoss', label_smooth_val=0.1, mode='unknown') + build_loss(loss_cfg) + + # test original mode label smooth loss + cls_score = torch.tensor([[1., -1.]]) + label = torch.tensor([0]) + + loss_cfg = dict( + type='LabelSmoothLoss', + label_smooth_val=0.1, + mode='original', + reduction='mean', + loss_weight=1.0) + loss = build_loss(loss_cfg) + correct = 0.2269 # from timm + assert loss(cls_score, label) - correct <= 0.0001 + + # test classy_vision mode label smooth loss + loss_cfg = dict( + type='LabelSmoothLoss', + label_smooth_val=0.1, + mode='classy_vision', + reduction='mean', + loss_weight=1.0) + loss = build_loss(loss_cfg) + correct = 0.2178 # from ClassyVision + assert loss(cls_score, label) - correct <= 0.0001 + + # test multi_label mode label smooth loss + cls_score = torch.tensor([[1., -1., 1]]) + label = torch.tensor([[1, 0, 1]]) + + loss_cfg = dict( + type='LabelSmoothLoss', + label_smooth_val=0.1, + mode='multi_label', + reduction='mean', + loss_weight=1.0) + loss = build_loss(loss_cfg) + smooth_label = torch.tensor([[0.9, 0.1, 0.9]]) + correct = torch.binary_cross_entropy_with_logits(cls_score, + smooth_label).mean() + assert torch.allclose(loss(cls_score, label), correct) + + # test label linear combination smooth loss + cls_score = torch.tensor([[1., -1., 0.]]) + label1 = torch.tensor([[1., 0., 0.]]) + label2 = torch.tensor([[0., 0., 1.]]) + label_mix = label1 * 0.6 + label2 * 0.4 + + loss_cfg = dict( + type='LabelSmoothLoss', + label_smooth_val=0.1, + mode='original', + reduction='mean', + num_classes=3, + loss_weight=1.0) + loss = build_loss(loss_cfg) + smooth_label1 = loss.original_smooth_label(label1) + smooth_label2 = loss.original_smooth_label(label2) + label_smooth_mix = smooth_label1 * 0.6 + smooth_label2 * 0.4 + correct = (-torch.log_softmax(cls_score, -1) * label_smooth_mix).sum() + + assert loss(cls_score, label_mix) - correct <= 0.0001 + + # test label smooth loss with weight + cls_score = torch.tensor([[1., -1.], [1., -1.]]) + label = torch.tensor([0, 1]) + weight = torch.tensor([0.5, 0.5]) + + loss_cfg = dict( + type='LabelSmoothLoss', + reduction='mean', + label_smooth_val=0.1, + loss_weight=1.0) + loss = build_loss(loss_cfg) + assert torch.allclose( + loss(cls_score, label, weight=weight), + loss(cls_score, label) / 2) + + +# migrate from mmdetection with modifications +def test_seesaw_loss(): + # only softmax version of Seesaw Loss is implemented + with pytest.raises(AssertionError): + loss_cfg = dict(type='SeesawLoss', use_sigmoid=True, loss_weight=1.0) + build_loss(loss_cfg) + + # test that cls_score.size(-1) == num_classes + loss_cls_cfg = dict( + type='SeesawLoss', p=0.0, q=0.0, loss_weight=1.0, num_classes=2) + loss_cls = build_loss(loss_cls_cfg) + # the length of fake_pred should be num_classe = 4 + with pytest.raises(AssertionError): + fake_pred = torch.Tensor([[-100, 100, -100]]) + fake_label = torch.Tensor([1]).long() + loss_cls(fake_pred, fake_label) + # the length of fake_pred should be num_classes + 2 = 4 + with pytest.raises(AssertionError): + fake_pred = torch.Tensor([[-100, 100, -100, 100]]) + fake_label = torch.Tensor([1]).long() + loss_cls(fake_pred, fake_label) + + # test the calculation without p and q + loss_cls_cfg = dict( + type='SeesawLoss', p=0.0, q=0.0, loss_weight=1.0, num_classes=2) + loss_cls = build_loss(loss_cls_cfg) + fake_pred = torch.Tensor([[-100, 100]]) + fake_label = torch.Tensor([1]).long() + loss = loss_cls(fake_pred, fake_label) + assert torch.allclose(loss, torch.tensor(0.)) + + # test the calculation with p and without q + loss_cls_cfg = dict( + type='SeesawLoss', p=1.0, q=0.0, loss_weight=1.0, num_classes=2) + loss_cls = build_loss(loss_cls_cfg) + fake_pred = torch.Tensor([[-100, 100]]) + fake_label = torch.Tensor([0]).long() + loss_cls.cum_samples[0] = torch.exp(torch.Tensor([20])) + loss = loss_cls(fake_pred, fake_label) + assert torch.allclose(loss, torch.tensor(180.)) + + # test the calculation with q and without p + loss_cls_cfg = dict( + type='SeesawLoss', p=0.0, q=1.0, loss_weight=1.0, num_classes=2) + loss_cls = build_loss(loss_cls_cfg) + fake_pred = torch.Tensor([[-100, 100]]) + fake_label = torch.Tensor([0]).long() + loss = loss_cls(fake_pred, fake_label) + assert torch.allclose(loss, torch.tensor(200.) + torch.tensor(100.).log()) diff --git a/openmmlab_test/mmclassification-0.24.1/tests/test_metrics/test_metrics.py b/openmmlab_test/mmclassification-0.24.1/tests/test_metrics/test_metrics.py new file mode 100644 index 00000000..67acb095 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/tests/test_metrics/test_metrics.py @@ -0,0 +1,93 @@ +# Copyright (c) OpenMMLab. All rights reserved. +from functools import partial + +import pytest +import torch + +from mmcls.core import average_performance, mAP +from mmcls.models.losses.accuracy import Accuracy, accuracy_numpy + + +def test_mAP(): + target = torch.Tensor([[1, 1, 0, -1], [1, 1, 0, -1], [0, -1, 1, -1], + [0, 1, 0, -1]]) + pred = torch.Tensor([[0.9, 0.8, 0.3, 0.2], [0.1, 0.2, 0.2, 0.1], + [0.7, 0.5, 0.9, 0.3], [0.8, 0.1, 0.1, 0.2]]) + + # target and pred should both be np.ndarray or torch.Tensor + with pytest.raises(TypeError): + target_list = target.tolist() + _ = mAP(pred, target_list) + + # target and pred should be in the same shape + with pytest.raises(AssertionError): + target_shorter = target[:-1] + _ = mAP(pred, target_shorter) + + assert mAP(pred, target) == pytest.approx(68.75, rel=1e-2) + + target_no_difficult = torch.Tensor([[1, 1, 0, 0], [0, 1, 0, 0], + [0, 0, 1, 0], [1, 0, 0, 0]]) + assert mAP(pred, target_no_difficult) == pytest.approx(70.83, rel=1e-2) + + +def test_average_performance(): + target = torch.Tensor([[1, 1, 0, -1], [1, 1, 0, -1], [0, -1, 1, -1], + [0, 1, 0, -1], [0, 1, 0, -1]]) + pred = torch.Tensor([[0.9, 0.8, 0.3, 0.2], [0.1, 0.2, 0.2, 0.1], + [0.7, 0.5, 0.9, 0.3], [0.8, 0.1, 0.1, 0.2], + [0.8, 0.1, 0.1, 0.2]]) + + # target and pred should both be np.ndarray or torch.Tensor + with pytest.raises(TypeError): + target_list = target.tolist() + _ = average_performance(pred, target_list) + + # target and pred should be in the same shape + with pytest.raises(AssertionError): + target_shorter = target[:-1] + _ = average_performance(pred, target_shorter) + + assert average_performance(pred, target) == average_performance( + pred, target, thr=0.5) + assert average_performance(pred, target, thr=0.5, k=2) \ + == average_performance(pred, target, thr=0.5) + assert average_performance( + pred, target, thr=0.3) == pytest.approx( + (31.25, 43.75, 36.46, 33.33, 42.86, 37.50), rel=1e-2) + assert average_performance( + pred, target, k=2) == pytest.approx( + (43.75, 50.00, 46.67, 40.00, 57.14, 47.06), rel=1e-2) + + +def test_accuracy(): + pred_tensor = torch.tensor([[0.1, 0.2, 0.4], [0.2, 0.5, 0.3], + [0.4, 0.3, 0.1], [0.8, 0.9, 0.0]]) + target_tensor = torch.tensor([2, 0, 0, 0]) + pred_array = pred_tensor.numpy() + target_array = target_tensor.numpy() + + acc_top1 = 50. + acc_top2 = 75. + + compute_acc = Accuracy(topk=1) + assert compute_acc(pred_tensor, target_tensor) == acc_top1 + assert compute_acc(pred_array, target_array) == acc_top1 + + compute_acc = Accuracy(topk=(1, )) + assert compute_acc(pred_tensor, target_tensor)[0] == acc_top1 + assert compute_acc(pred_array, target_array)[0] == acc_top1 + + compute_acc = Accuracy(topk=(1, 2)) + assert compute_acc(pred_tensor, target_array)[0] == acc_top1 + assert compute_acc(pred_tensor, target_tensor)[1] == acc_top2 + assert compute_acc(pred_array, target_array)[0] == acc_top1 + assert compute_acc(pred_array, target_array)[1] == acc_top2 + + with pytest.raises(AssertionError): + compute_acc(pred_tensor, 'other_type') + + # test accuracy_numpy + compute_acc = partial(accuracy_numpy, topk=(1, 2)) + assert compute_acc(pred_array, target_array)[0] == acc_top1 + assert compute_acc(pred_array, target_array)[1] == acc_top2 diff --git a/openmmlab_test/mmclassification-0.24.1/tests/test_metrics/test_utils.py b/openmmlab_test/mmclassification-0.24.1/tests/test_metrics/test_utils.py new file mode 100644 index 00000000..962a1f8d --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/tests/test_metrics/test_utils.py @@ -0,0 +1,49 @@ +# Copyright (c) OpenMMLab. All rights reserved. +import pytest +import torch + +from mmcls.models.losses.utils import convert_to_one_hot + + +def ori_convert_to_one_hot(targets: torch.Tensor, classes) -> torch.Tensor: + assert (torch.max(targets).item() < + classes), 'Class Index must be less than number of classes' + one_hot_targets = torch.zeros((targets.shape[0], classes), + dtype=torch.long, + device=targets.device) + one_hot_targets.scatter_(1, targets.long(), 1) + return one_hot_targets + + +def test_convert_to_one_hot(): + # label should smaller than classes + targets = torch.tensor([1, 2, 3, 8, 5]) + classes = 5 + with pytest.raises(AssertionError): + _ = convert_to_one_hot(targets, classes) + + # test with original impl + classes = 10 + targets = torch.randint(high=classes, size=(10, 1)) + ori_one_hot_targets = torch.zeros((targets.shape[0], classes), + dtype=torch.long, + device=targets.device) + ori_one_hot_targets.scatter_(1, targets.long(), 1) + one_hot_targets = convert_to_one_hot(targets, classes) + assert torch.equal(ori_one_hot_targets, one_hot_targets) + + +# test cuda version +@pytest.mark.skipif( + not torch.cuda.is_available(), reason='requires CUDA support') +def test_convert_to_one_hot_cuda(): + # test with original impl + classes = 10 + targets = torch.randint(high=classes, size=(10, 1)).cuda() + ori_one_hot_targets = torch.zeros((targets.shape[0], classes), + dtype=torch.long, + device=targets.device) + ori_one_hot_targets.scatter_(1, targets.long(), 1) + one_hot_targets = convert_to_one_hot(targets, classes) + assert torch.equal(ori_one_hot_targets, one_hot_targets) + assert ori_one_hot_targets.device == one_hot_targets.device diff --git a/openmmlab_test/mmclassification-0.24.1/tests/test_models/test_backbones/__init__.py b/openmmlab_test/mmclassification-0.24.1/tests/test_models/test_backbones/__init__.py new file mode 100644 index 00000000..ef101fec --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/tests/test_models/test_backbones/__init__.py @@ -0,0 +1 @@ +# Copyright (c) OpenMMLab. All rights reserved. diff --git a/openmmlab_test/mmclassification-0.24.1/tests/test_models/test_backbones/test_conformer.py b/openmmlab_test/mmclassification-0.24.1/tests/test_models/test_backbones/test_conformer.py new file mode 100644 index 00000000..317079a1 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/tests/test_models/test_backbones/test_conformer.py @@ -0,0 +1,111 @@ +# Copyright (c) OpenMMLab. All rights reserved. +from copy import deepcopy + +import pytest +import torch +from torch.nn.modules import GroupNorm +from torch.nn.modules.batchnorm import _BatchNorm + +from mmcls.models.backbones import Conformer + + +def is_norm(modules): + """Check if is one of the norms.""" + if isinstance(modules, (GroupNorm, _BatchNorm)): + return True + return False + + +def check_norm_state(modules, train_state): + """Check if norm layer is in correct train state.""" + for mod in modules: + if isinstance(mod, _BatchNorm): + if mod.training != train_state: + return False + return True + + +def test_conformer_backbone(): + + cfg_ori = dict( + arch='T', + drop_path_rate=0.1, + ) + + with pytest.raises(AssertionError): + # test invalid arch + cfg = deepcopy(cfg_ori) + cfg['arch'] = 'unknown' + Conformer(**cfg) + + with pytest.raises(AssertionError): + # test arch without essential keys + cfg = deepcopy(cfg_ori) + cfg['arch'] = {'embed_dims': 24, 'channel_ratio': 6, 'num_heads': 9} + Conformer(**cfg) + + # Test Conformer small model with patch size of 16 + model = Conformer(**cfg_ori) + model.init_weights() + model.train() + + assert check_norm_state(model.modules(), True) + + imgs = torch.randn(3, 3, 224, 224) + conv_feature, transformer_feature = model(imgs)[-1] + assert conv_feature.shape == (3, 64 * 1 * 4 + ) # base_channels * channel_ratio * 4 + assert transformer_feature.shape == (3, 384) + + # Test Conformer with irregular input size. + model = Conformer(**cfg_ori) + model.init_weights() + model.train() + + assert check_norm_state(model.modules(), True) + + imgs = torch.randn(3, 3, 241, 241) + conv_feature, transformer_feature = model(imgs)[-1] + assert conv_feature.shape == (3, 64 * 1 * 4 + ) # base_channels * channel_ratio * 4 + assert transformer_feature.shape == (3, 384) + + imgs = torch.randn(3, 3, 321, 221) + conv_feature, transformer_feature = model(imgs)[-1] + assert conv_feature.shape == (3, 64 * 1 * 4 + ) # base_channels * channel_ratio * 4 + assert transformer_feature.shape == (3, 384) + + # Test custom arch Conformer without output cls token + cfg = deepcopy(cfg_ori) + cfg['arch'] = { + 'embed_dims': 128, + 'depths': 15, + 'num_heads': 16, + 'channel_ratio': 3, + } + cfg['with_cls_token'] = False + cfg['base_channels'] = 32 + model = Conformer(**cfg) + conv_feature, transformer_feature = model(imgs)[-1] + assert conv_feature.shape == (3, 32 * 3 * 4) + assert transformer_feature.shape == (3, 128) + + # Test Conformer with multi out indices + cfg = deepcopy(cfg_ori) + cfg['out_indices'] = [4, 8, 12] + model = Conformer(**cfg) + outs = model(imgs) + assert len(outs) == 3 + # stage 1 + conv_feature, transformer_feature = outs[0] + assert conv_feature.shape == (3, 64 * 1) + assert transformer_feature.shape == (3, 384) + # stage 2 + conv_feature, transformer_feature = outs[1] + assert conv_feature.shape == (3, 64 * 1 * 2) + assert transformer_feature.shape == (3, 384) + # stage 3 + conv_feature, transformer_feature = outs[2] + assert conv_feature.shape == (3, 64 * 1 * 4) + assert transformer_feature.shape == (3, 384) diff --git a/openmmlab_test/mmclassification-0.24.1/tests/test_models/test_backbones/test_convmixer.py b/openmmlab_test/mmclassification-0.24.1/tests/test_models/test_backbones/test_convmixer.py new file mode 100644 index 00000000..7d2219e2 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/tests/test_models/test_backbones/test_convmixer.py @@ -0,0 +1,84 @@ +# Copyright (c) OpenMMLab. All rights reserved. +import pytest +import torch + +from mmcls.models.backbones import ConvMixer + + +def test_assertion(): + with pytest.raises(AssertionError): + ConvMixer(arch='unknown') + + with pytest.raises(AssertionError): + # ConvMixer arch dict should include essential_keys, + ConvMixer(arch=dict(channels=[2, 3, 4, 5])) + + with pytest.raises(AssertionError): + # ConvMixer out_indices should be valid depth. + ConvMixer(out_indices=-100) + + +def test_convmixer(): + + # Test forward + model = ConvMixer(arch='768/32') + model.init_weights() + model.train() + + imgs = torch.randn(1, 3, 224, 224) + feat = model(imgs) + assert len(feat) == 1 + assert feat[0].shape == torch.Size([1, 768, 32, 32]) + + # Test forward with multiple outputs + model = ConvMixer(arch='768/32', out_indices=range(32)) + + imgs = torch.randn(1, 3, 224, 224) + feat = model(imgs) + assert len(feat) == 32 + for f in feat: + assert f.shape == torch.Size([1, 768, 32, 32]) + + # Test with custom arch + model = ConvMixer( + arch={ + 'embed_dims': 99, + 'depth': 5, + 'patch_size': 5, + 'kernel_size': 9 + }, + out_indices=range(5)) + model.init_weights() + model.train() + + imgs = torch.randn(1, 3, 224, 224) + feat = model(imgs) + assert len(feat) == 5 + for f in feat: + assert f.shape == torch.Size([1, 99, 44, 44]) + + # Test with even kernel size arch + model = ConvMixer(arch={ + 'embed_dims': 99, + 'depth': 5, + 'patch_size': 5, + 'kernel_size': 8 + }) + model.init_weights() + model.train() + + imgs = torch.randn(1, 3, 224, 224) + feat = model(imgs) + assert len(feat) == 1 + assert feat[0].shape == torch.Size([1, 99, 44, 44]) + + # Test frozen_stages + model = ConvMixer(arch='768/32', frozen_stages=10) + model.init_weights() + model.train() + + for i in range(10): + assert not model.stages[i].training + + for i in range(10, 32): + assert model.stages[i].training diff --git a/openmmlab_test/mmclassification-0.24.1/tests/test_models/test_backbones/test_convnext.py b/openmmlab_test/mmclassification-0.24.1/tests/test_models/test_backbones/test_convnext.py new file mode 100644 index 00000000..35448b45 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/tests/test_models/test_backbones/test_convnext.py @@ -0,0 +1,86 @@ +# Copyright (c) OpenMMLab. All rights reserved. +import pytest +import torch + +from mmcls.models.backbones import ConvNeXt + + +def test_assertion(): + with pytest.raises(AssertionError): + ConvNeXt(arch='unknown') + + with pytest.raises(AssertionError): + # ConvNeXt arch dict should include 'embed_dims', + ConvNeXt(arch=dict(channels=[2, 3, 4, 5])) + + with pytest.raises(AssertionError): + # ConvNeXt arch dict should include 'embed_dims', + ConvNeXt(arch=dict(depths=[2, 3, 4], channels=[2, 3, 4, 5])) + + +def test_convnext(): + + # Test forward + model = ConvNeXt(arch='tiny', out_indices=-1) + model.init_weights() + model.train() + + imgs = torch.randn(1, 3, 224, 224) + feat = model(imgs) + assert len(feat) == 1 + assert feat[0].shape == torch.Size([1, 768]) + + # Test forward with multiple outputs + model = ConvNeXt(arch='small', out_indices=(0, 1, 2, 3)) + + imgs = torch.randn(1, 3, 224, 224) + feat = model(imgs) + assert len(feat) == 4 + assert feat[0].shape == torch.Size([1, 96]) + assert feat[1].shape == torch.Size([1, 192]) + assert feat[2].shape == torch.Size([1, 384]) + assert feat[3].shape == torch.Size([1, 768]) + + # Test with custom arch + model = ConvNeXt( + arch={ + 'depths': [2, 3, 4, 5, 6], + 'channels': [16, 32, 64, 128, 256] + }, + out_indices=(0, 1, 2, 3, 4)) + model.init_weights() + model.train() + + imgs = torch.randn(1, 3, 224, 224) + feat = model(imgs) + assert len(feat) == 5 + assert feat[0].shape == torch.Size([1, 16]) + assert feat[1].shape == torch.Size([1, 32]) + assert feat[2].shape == torch.Size([1, 64]) + assert feat[3].shape == torch.Size([1, 128]) + assert feat[4].shape == torch.Size([1, 256]) + + # Test without gap before final norm + model = ConvNeXt( + arch='small', out_indices=(0, 1, 2, 3), gap_before_final_norm=False) + + imgs = torch.randn(1, 3, 224, 224) + feat = model(imgs) + assert len(feat) == 4 + assert feat[0].shape == torch.Size([1, 96, 56, 56]) + assert feat[1].shape == torch.Size([1, 192, 28, 28]) + assert feat[2].shape == torch.Size([1, 384, 14, 14]) + assert feat[3].shape == torch.Size([1, 768, 7, 7]) + + # Test frozen_stages + model = ConvNeXt(arch='small', out_indices=(0, 1, 2, 3), frozen_stages=2) + model.init_weights() + model.train() + + for i in range(2): + assert not model.downsample_layers[i].training + assert not model.stages[i].training + + for i in range(2, 4): + assert model.downsample_layers[i].training + assert model.stages[i].training diff --git a/openmmlab_test/mmclassification-0.24.1/tests/test_models/test_backbones/test_cspnet.py b/openmmlab_test/mmclassification-0.24.1/tests/test_models/test_backbones/test_cspnet.py new file mode 100644 index 00000000..ef762644 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/tests/test_models/test_backbones/test_cspnet.py @@ -0,0 +1,147 @@ +# Copyright (c) OpenMMLab. All rights reserved. +from copy import deepcopy +from functools import partial +from unittest import TestCase + +import torch +from mmcv.cnn import ConvModule +from mmcv.utils.parrots_wrapper import _BatchNorm + +from mmcls.models.backbones import CSPDarkNet, CSPResNet, CSPResNeXt +from mmcls.models.backbones.cspnet import (CSPNet, DarknetBottleneck, + ResNetBottleneck, ResNeXtBottleneck) + + +class TestCSPNet(TestCase): + + def setUp(self): + self.arch = dict( + block_fn=(DarknetBottleneck, ResNetBottleneck, ResNeXtBottleneck), + in_channels=(32, 64, 128), + out_channels=(64, 128, 256), + num_blocks=(1, 2, 8), + expand_ratio=(2, 1, 1), + bottle_ratio=(3, 1, 1), + has_downsampler=True, + down_growth=True, + block_args=({}, {}, dict(base_channels=32))) + self.stem_fn = partial(torch.nn.Conv2d, out_channels=32, kernel_size=3) + + def test_structure(self): + # Test with attribute arch_setting. + model = CSPNet(arch=self.arch, stem_fn=self.stem_fn, out_indices=[-1]) + self.assertEqual(len(model.stages), 3) + self.assertEqual(type(model.stages[0].blocks[0]), DarknetBottleneck) + self.assertEqual(type(model.stages[1].blocks[0]), ResNetBottleneck) + self.assertEqual(type(model.stages[2].blocks[0]), ResNeXtBottleneck) + + +class TestCSPDarkNet(TestCase): + + def setUp(self): + self.class_name = CSPDarkNet + self.cfg = dict(depth=53) + self.out_channels = [64, 128, 256, 512, 1024] + self.all_out_indices = [0, 1, 2, 3, 4] + self.frozen_stages = 2 + self.stem_down = (1, 1) + self.num_stages = 5 + + def test_structure(self): + # Test invalid default depths + with self.assertRaisesRegex(AssertionError, 'depth must be one of'): + cfg = deepcopy(self.cfg) + cfg['depth'] = 'unknown' + self.class_name(**cfg) + + # Test out_indices + cfg = deepcopy(self.cfg) + cfg['out_indices'] = {1: 1} + with self.assertRaisesRegex(AssertionError, "get "): + self.class_name(**cfg) + cfg['out_indices'] = [0, 13] + with self.assertRaisesRegex(AssertionError, 'Invalid out_indices 13'): + self.class_name(**cfg) + + # Test model structure + cfg = deepcopy(self.cfg) + model = self.class_name(**cfg) + self.assertEqual(len(model.stages), self.num_stages) + + def test_forward(self): + imgs = torch.randn(3, 3, 224, 224) + + # test without output_cls_token + cfg = deepcopy(self.cfg) + model = self.class_name(**cfg) + outs = model(imgs) + self.assertIsInstance(outs, tuple) + self.assertEqual(len(outs), 1) + self.assertEqual(outs[-1].size(), (3, self.out_channels[-1], 7, 7)) + + # Test forward with multi out indices + cfg = deepcopy(self.cfg) + cfg['out_indices'] = self.all_out_indices + model = self.class_name(**cfg) + outs = model(imgs) + self.assertIsInstance(outs, tuple) + self.assertEqual(len(outs), len(self.all_out_indices)) + w, h = 224 / self.stem_down[0], 224 / self.stem_down[1] + for i, out in enumerate(outs): + self.assertEqual( + out.size(), + (3, self.out_channels[i], w // 2**(i + 1), h // 2**(i + 1))) + + # Test frozen stages + cfg = deepcopy(self.cfg) + cfg['frozen_stages'] = self.frozen_stages + model = self.class_name(**cfg) + model.init_weights() + model.train() + assert model.stem.training is False + for param in model.stem.parameters(): + assert param.requires_grad is False + for i in range(self.frozen_stages + 1): + stage = model.stages[i] + for mod in stage.modules(): + if isinstance(mod, _BatchNorm): + assert mod.training is False, i + for param in stage.parameters(): + assert param.requires_grad is False + + +class TestCSPResNet(TestCSPDarkNet): + + def setUp(self): + self.class_name = CSPResNet + self.cfg = dict(depth=50) + self.out_channels = [128, 256, 512, 1024] + self.all_out_indices = [0, 1, 2, 3] + self.frozen_stages = 2 + self.stem_down = (2, 2) + self.num_stages = 4 + + def test_deep_stem(self, ): + cfg = deepcopy(self.cfg) + cfg['deep_stem'] = True + model = self.class_name(**cfg) + self.assertEqual(len(model.stem), 3) + for i in range(3): + self.assertEqual(type(model.stem[i]), ConvModule) + + +class TestCSPResNeXt(TestCSPDarkNet): + + def setUp(self): + self.class_name = CSPResNeXt + self.cfg = dict(depth=50) + self.out_channels = [256, 512, 1024, 2048] + self.all_out_indices = [0, 1, 2, 3] + self.frozen_stages = 2 + self.stem_down = (2, 2) + self.num_stages = 4 + + +if __name__ == '__main__': + import unittest + unittest.main() diff --git a/openmmlab_test/mmclassification-0.24.1/tests/test_models/test_backbones/test_deit.py b/openmmlab_test/mmclassification-0.24.1/tests/test_models/test_backbones/test_deit.py new file mode 100644 index 00000000..5f11a3ae --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/tests/test_models/test_backbones/test_deit.py @@ -0,0 +1,131 @@ +# Copyright (c) OpenMMLab. All rights reserved. +import math +import os +import tempfile +from copy import deepcopy +from unittest import TestCase + +import torch +from mmcv.runner import load_checkpoint, save_checkpoint + +from mmcls.models.backbones import DistilledVisionTransformer +from .utils import timm_resize_pos_embed + + +class TestDeiT(TestCase): + + def setUp(self): + self.cfg = dict( + arch='deit-base', img_size=224, patch_size=16, drop_rate=0.1) + + def test_init_weights(self): + # test weight init cfg + cfg = deepcopy(self.cfg) + cfg['init_cfg'] = [ + dict( + type='Kaiming', + layer='Conv2d', + mode='fan_in', + nonlinearity='linear') + ] + model = DistilledVisionTransformer(**cfg) + ori_weight = model.patch_embed.projection.weight.clone().detach() + # The pos_embed is all zero before initialize + self.assertTrue(torch.allclose(model.dist_token, torch.tensor(0.))) + + model.init_weights() + initialized_weight = model.patch_embed.projection.weight + self.assertFalse(torch.allclose(ori_weight, initialized_weight)) + self.assertFalse(torch.allclose(model.dist_token, torch.tensor(0.))) + + # test load checkpoint + pretrain_pos_embed = model.pos_embed.clone().detach() + tmpdir = tempfile.gettempdir() + checkpoint = os.path.join(tmpdir, 'test.pth') + save_checkpoint(model, checkpoint) + cfg = deepcopy(self.cfg) + model = DistilledVisionTransformer(**cfg) + load_checkpoint(model, checkpoint, strict=True) + self.assertTrue(torch.allclose(model.pos_embed, pretrain_pos_embed)) + + # test load checkpoint with different img_size + cfg = deepcopy(self.cfg) + cfg['img_size'] = 384 + model = DistilledVisionTransformer(**cfg) + load_checkpoint(model, checkpoint, strict=True) + resized_pos_embed = timm_resize_pos_embed( + pretrain_pos_embed, model.pos_embed, num_tokens=2) + self.assertTrue(torch.allclose(model.pos_embed, resized_pos_embed)) + + os.remove(checkpoint) + + def test_forward(self): + imgs = torch.randn(3, 3, 224, 224) + + # test with_cls_token=False + cfg = deepcopy(self.cfg) + cfg['with_cls_token'] = False + cfg['output_cls_token'] = True + with self.assertRaisesRegex(AssertionError, 'but got False'): + DistilledVisionTransformer(**cfg) + + cfg = deepcopy(self.cfg) + cfg['with_cls_token'] = False + cfg['output_cls_token'] = False + model = DistilledVisionTransformer(**cfg) + outs = model(imgs) + self.assertIsInstance(outs, tuple) + self.assertEqual(len(outs), 1) + patch_token = outs[-1] + self.assertEqual(patch_token.shape, (3, 768, 14, 14)) + + # test with output_cls_token + cfg = deepcopy(self.cfg) + model = DistilledVisionTransformer(**cfg) + outs = model(imgs) + self.assertIsInstance(outs, tuple) + self.assertEqual(len(outs), 1) + patch_token, cls_token, dist_token = outs[-1] + self.assertEqual(patch_token.shape, (3, 768, 14, 14)) + self.assertEqual(cls_token.shape, (3, 768)) + self.assertEqual(dist_token.shape, (3, 768)) + + # test without output_cls_token + cfg = deepcopy(self.cfg) + cfg['output_cls_token'] = False + model = DistilledVisionTransformer(**cfg) + outs = model(imgs) + self.assertIsInstance(outs, tuple) + self.assertEqual(len(outs), 1) + patch_token = outs[-1] + self.assertEqual(patch_token.shape, (3, 768, 14, 14)) + + # Test forward with multi out indices + cfg = deepcopy(self.cfg) + cfg['out_indices'] = [-3, -2, -1] + model = DistilledVisionTransformer(**cfg) + outs = model(imgs) + self.assertIsInstance(outs, tuple) + self.assertEqual(len(outs), 3) + for out in outs: + patch_token, cls_token, dist_token = out + self.assertEqual(patch_token.shape, (3, 768, 14, 14)) + self.assertEqual(cls_token.shape, (3, 768)) + self.assertEqual(dist_token.shape, (3, 768)) + + # Test forward with dynamic input size + imgs1 = torch.randn(3, 3, 224, 224) + imgs2 = torch.randn(3, 3, 256, 256) + imgs3 = torch.randn(3, 3, 256, 309) + cfg = deepcopy(self.cfg) + model = DistilledVisionTransformer(**cfg) + for imgs in [imgs1, imgs2, imgs3]: + outs = model(imgs) + self.assertIsInstance(outs, tuple) + self.assertEqual(len(outs), 1) + patch_token, cls_token, dist_token = outs[-1] + expect_feat_shape = (math.ceil(imgs.shape[2] / 16), + math.ceil(imgs.shape[3] / 16)) + self.assertEqual(patch_token.shape, (3, 768, *expect_feat_shape)) + self.assertEqual(cls_token.shape, (3, 768)) + self.assertEqual(dist_token.shape, (3, 768)) diff --git a/openmmlab_test/mmclassification-0.24.1/tests/test_models/test_backbones/test_densenet.py b/openmmlab_test/mmclassification-0.24.1/tests/test_models/test_backbones/test_densenet.py new file mode 100644 index 00000000..5e4c73bc --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/tests/test_models/test_backbones/test_densenet.py @@ -0,0 +1,95 @@ +# Copyright (c) OpenMMLab. All rights reserved. +import pytest +import torch + +from mmcls.models.backbones import DenseNet + + +def test_assertion(): + with pytest.raises(AssertionError): + DenseNet(arch='unknown') + + with pytest.raises(AssertionError): + # DenseNet arch dict should include essential_keys, + DenseNet(arch=dict(channels=[2, 3, 4, 5])) + + with pytest.raises(AssertionError): + # DenseNet out_indices should be valid depth. + DenseNet(out_indices=-100) + + +def test_DenseNet(): + + # Test forward + model = DenseNet(arch='121') + model.init_weights() + model.train() + + imgs = torch.randn(1, 3, 224, 224) + feat = model(imgs) + assert len(feat) == 1 + assert feat[0].shape == torch.Size([1, 1024, 7, 7]) + + # Test memory efficient option + model = DenseNet(arch='121', memory_efficient=True) + model.init_weights() + model.train() + + imgs = torch.randn(1, 3, 224, 224) + feat = model(imgs) + assert len(feat) == 1 + assert feat[0].shape == torch.Size([1, 1024, 7, 7]) + + # Test drop rate + model = DenseNet(arch='121', drop_rate=0.05) + model.init_weights() + model.train() + + imgs = torch.randn(1, 3, 224, 224) + feat = model(imgs) + assert len(feat) == 1 + assert feat[0].shape == torch.Size([1, 1024, 7, 7]) + + # Test forward with multiple outputs + model = DenseNet(arch='121', out_indices=(0, 1, 2, 3)) + + imgs = torch.randn(1, 3, 224, 224) + feat = model(imgs) + assert len(feat) == 4 + assert feat[0].shape == torch.Size([1, 128, 28, 28]) + assert feat[1].shape == torch.Size([1, 256, 14, 14]) + assert feat[2].shape == torch.Size([1, 512, 7, 7]) + assert feat[3].shape == torch.Size([1, 1024, 7, 7]) + + # Test with custom arch + model = DenseNet( + arch={ + 'growth_rate': 20, + 'depths': [4, 8, 12, 16, 20], + 'init_channels': 40, + }, + out_indices=(0, 1, 2, 3, 4)) + model.init_weights() + model.train() + + imgs = torch.randn(1, 3, 224, 224) + feat = model(imgs) + assert len(feat) == 5 + assert feat[0].shape == torch.Size([1, 60, 28, 28]) + assert feat[1].shape == torch.Size([1, 110, 14, 14]) + assert feat[2].shape == torch.Size([1, 175, 7, 7]) + assert feat[3].shape == torch.Size([1, 247, 3, 3]) + assert feat[4].shape == torch.Size([1, 647, 3, 3]) + + # Test frozen_stages + model = DenseNet(arch='121', out_indices=(0, 1, 2, 3), frozen_stages=2) + model.init_weights() + model.train() + + for i in range(2): + assert not model.stages[i].training + assert not model.transitions[i].training + + for i in range(2, 4): + assert model.stages[i].training + assert model.transitions[i].training diff --git a/openmmlab_test/mmclassification-0.24.1/tests/test_models/test_backbones/test_efficientformer.py b/openmmlab_test/mmclassification-0.24.1/tests/test_models/test_backbones/test_efficientformer.py new file mode 100644 index 00000000..88aad529 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/tests/test_models/test_backbones/test_efficientformer.py @@ -0,0 +1,199 @@ +# Copyright (c) OpenMMLab. All rights reserved. +from copy import deepcopy +from unittest import TestCase + +import torch +from mmcv.cnn import ConvModule +from torch import nn + +from mmcls.models.backbones import EfficientFormer +from mmcls.models.backbones.efficientformer import (AttentionWithBias, Flat, + Meta3D, Meta4D) +from mmcls.models.backbones.poolformer import Pooling + + +class TestEfficientFormer(TestCase): + + def setUp(self): + self.cfg = dict(arch='l1', drop_path_rate=0.1) + self.arch = EfficientFormer.arch_settings['l1'] + self.custom_arch = { + 'layers': [1, 1, 1, 4], + 'embed_dims': [48, 96, 224, 448], + 'downsamples': [False, True, True, True], + 'vit_num': 2, + } + self.custom_cfg = dict(arch=self.custom_arch) + + def test_arch(self): + # Test invalid default arch + with self.assertRaisesRegex(AssertionError, 'Unavailable arch'): + cfg = deepcopy(self.cfg) + cfg['arch'] = 'unknown' + EfficientFormer(**cfg) + + # Test invalid custom arch + with self.assertRaisesRegex(AssertionError, 'must have'): + cfg = deepcopy(self.custom_cfg) + cfg['arch'].pop('layers') + EfficientFormer(**cfg) + + # Test vit_num < 0 + with self.assertRaisesRegex(AssertionError, "'vit_num' must"): + cfg = deepcopy(self.custom_cfg) + cfg['arch']['vit_num'] = -1 + EfficientFormer(**cfg) + + # Test vit_num > last stage layers + with self.assertRaisesRegex(AssertionError, "'vit_num' must"): + cfg = deepcopy(self.custom_cfg) + cfg['arch']['vit_num'] = 10 + EfficientFormer(**cfg) + + # Test out_ind + with self.assertRaisesRegex(AssertionError, '"out_indices" must'): + cfg = deepcopy(self.custom_cfg) + cfg['out_indices'] = dict + EfficientFormer(**cfg) + + # Test custom arch + cfg = deepcopy(self.custom_cfg) + model = EfficientFormer(**cfg) + self.assertEqual(len(model.patch_embed), 2) + layers = self.custom_arch['layers'] + downsamples = self.custom_arch['downsamples'] + vit_num = self.custom_arch['vit_num'] + + for i, stage in enumerate(model.network): + if downsamples[i]: + self.assertIsInstance(stage[0], ConvModule) + self.assertEqual(stage[0].conv.stride, (2, 2)) + self.assertTrue(hasattr(stage[0].conv, 'bias')) + self.assertTrue(isinstance(stage[0].bn, nn.BatchNorm2d)) + + if i < len(model.network) - 1: + self.assertIsInstance(stage[-1], Meta4D) + self.assertIsInstance(stage[-1].token_mixer, Pooling) + self.assertEqual(len(stage) - downsamples[i], layers[i]) + elif vit_num > 0: + self.assertIsInstance(stage[-1], Meta3D) + self.assertIsInstance(stage[-1].token_mixer, AttentionWithBias) + self.assertEqual(len(stage) - downsamples[i] - 1, layers[i]) + flat_layer_idx = len(stage) - vit_num - downsamples[i] + self.assertIsInstance(stage[flat_layer_idx], Flat) + count = 0 + for layer in stage: + if isinstance(layer, Meta3D): + count += 1 + self.assertEqual(count, vit_num) + + def test_init_weights(self): + # test weight init cfg + cfg = deepcopy(self.cfg) + cfg['init_cfg'] = [ + dict( + type='Kaiming', + layer='Conv2d', + mode='fan_in', + nonlinearity='linear'), + dict(type='Constant', layer=['LayerScale'], val=1e-4) + ] + model = EfficientFormer(**cfg) + ori_weight = model.patch_embed[0].conv.weight.clone().detach() + ori_ls_weight = model.network[0][-1].ls1.weight.clone().detach() + + model.init_weights() + initialized_weight = model.patch_embed[0].conv.weight + initialized_ls_weight = model.network[0][-1].ls1.weight + self.assertFalse(torch.allclose(ori_weight, initialized_weight)) + self.assertFalse(torch.allclose(ori_ls_weight, initialized_ls_weight)) + + def test_forward(self): + imgs = torch.randn(1, 3, 224, 224) + + # test last stage output + cfg = deepcopy(self.cfg) + model = EfficientFormer(**cfg) + outs = model(imgs) + self.assertIsInstance(outs, tuple) + self.assertEqual(len(outs), 1) + feat = outs[-1] + self.assertEqual(feat.shape, (1, 448, 49)) + assert hasattr(model, 'norm3') + assert isinstance(getattr(model, 'norm3'), nn.LayerNorm) + + # test multiple output indices + cfg = deepcopy(self.cfg) + cfg['out_indices'] = (0, 1, 2, 3) + cfg['reshape_last_feat'] = True + model = EfficientFormer(**cfg) + outs = model(imgs) + self.assertIsInstance(outs, tuple) + self.assertEqual(len(outs), 4) + # Test out features shape + for dim, stride, out in zip(self.arch['embed_dims'], [1, 2, 4, 8], + outs): + self.assertEqual(out.shape, (1, dim, 56 // stride, 56 // stride)) + + # Test norm layer + for i in range(4): + assert hasattr(model, f'norm{i}') + stage_norm = getattr(model, f'norm{i}') + assert isinstance(stage_norm, nn.GroupNorm) + assert stage_norm.num_groups == 1 + + # Test vit_num == 0 + cfg = deepcopy(self.custom_cfg) + cfg['arch']['vit_num'] = 0 + cfg['out_indices'] = (0, 1, 2, 3) + model = EfficientFormer(**cfg) + for i in range(4): + assert hasattr(model, f'norm{i}') + stage_norm = getattr(model, f'norm{i}') + assert isinstance(stage_norm, nn.GroupNorm) + assert stage_norm.num_groups == 1 + + def test_structure(self): + # test drop_path_rate decay + cfg = deepcopy(self.cfg) + cfg['drop_path_rate'] = 0.2 + model = EfficientFormer(**cfg) + layers = self.arch['layers'] + for i, block in enumerate(model.network): + expect_prob = 0.2 / (sum(layers) - 1) * i + if hasattr(block, 'drop_path'): + if expect_prob == 0: + self.assertIsInstance(block.drop_path, torch.nn.Identity) + else: + self.assertAlmostEqual(block.drop_path.drop_prob, + expect_prob) + + # test with first stage frozen. + cfg = deepcopy(self.cfg) + frozen_stages = 1 + cfg['frozen_stages'] = frozen_stages + cfg['out_indices'] = (0, 1, 2, 3) + model = EfficientFormer(**cfg) + model.init_weights() + model.train() + + # the patch_embed and first stage should not require grad. + self.assertFalse(model.patch_embed.training) + for param in model.patch_embed.parameters(): + self.assertFalse(param.requires_grad) + for i in range(frozen_stages): + module = model.network[i] + for param in module.parameters(): + self.assertFalse(param.requires_grad) + for param in model.norm0.parameters(): + self.assertFalse(param.requires_grad) + + # the second stage should require grad. + for i in range(frozen_stages + 1, 4): + module = model.network[i] + for param in module.parameters(): + self.assertTrue(param.requires_grad) + if hasattr(model, f'norm{i}'): + norm = getattr(model, f'norm{i}') + for param in norm.parameters(): + self.assertTrue(param.requires_grad) diff --git a/openmmlab_test/mmclassification-0.24.1/tests/test_models/test_backbones/test_efficientnet.py b/openmmlab_test/mmclassification-0.24.1/tests/test_models/test_backbones/test_efficientnet.py new file mode 100644 index 00000000..d424b230 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/tests/test_models/test_backbones/test_efficientnet.py @@ -0,0 +1,144 @@ +# Copyright (c) OpenMMLab. All rights reserved. +import pytest +import torch +from torch.nn.modules import GroupNorm +from torch.nn.modules.batchnorm import _BatchNorm + +from mmcls.models.backbones import EfficientNet + + +def is_norm(modules): + """Check if is one of the norms.""" + if isinstance(modules, (GroupNorm, _BatchNorm)): + return True + return False + + +def check_norm_state(modules, train_state): + """Check if norm layer is in correct train state.""" + for mod in modules: + if isinstance(mod, _BatchNorm): + if mod.training != train_state: + return False + return True + + +def test_efficientnet_backbone(): + archs = ['b0', 'b1', 'b2', 'b3', 'b4', 'b5', 'b7', 'b8', 'es', 'em', 'el'] + with pytest.raises(TypeError): + # pretrained must be a string path + model = EfficientNet() + model.init_weights(pretrained=0) + + with pytest.raises(AssertionError): + # arch must in arc_settings + EfficientNet(arch='others') + + for arch in archs: + with pytest.raises(ValueError): + # frozen_stages must less than 7 + EfficientNet(arch=arch, frozen_stages=12) + + # Test EfficientNet + model = EfficientNet() + model.init_weights() + model.train() + + # Test EfficientNet with first stage frozen + frozen_stages = 7 + model = EfficientNet(arch='b0', frozen_stages=frozen_stages) + model.init_weights() + model.train() + for i in range(frozen_stages): + layer = model.layers[i] + for mod in layer.modules(): + if isinstance(mod, _BatchNorm): + assert mod.training is False + for param in layer.parameters(): + assert param.requires_grad is False + + # Test EfficientNet with norm eval + model = EfficientNet(norm_eval=True) + model.init_weights() + model.train() + assert check_norm_state(model.modules(), False) + + # Test EfficientNet forward with 'b0' arch + out_channels = [32, 16, 24, 40, 112, 320, 1280] + model = EfficientNet(arch='b0', out_indices=(0, 1, 2, 3, 4, 5, 6)) + model.init_weights() + model.train() + + imgs = torch.randn(1, 3, 224, 224) + feat = model(imgs) + assert len(feat) == 7 + assert feat[0].shape == torch.Size([1, out_channels[0], 112, 112]) + assert feat[1].shape == torch.Size([1, out_channels[1], 112, 112]) + assert feat[2].shape == torch.Size([1, out_channels[2], 56, 56]) + assert feat[3].shape == torch.Size([1, out_channels[3], 28, 28]) + assert feat[4].shape == torch.Size([1, out_channels[4], 14, 14]) + assert feat[5].shape == torch.Size([1, out_channels[5], 7, 7]) + assert feat[6].shape == torch.Size([1, out_channels[6], 7, 7]) + + # Test EfficientNet forward with 'b0' arch and GroupNorm + out_channels = [32, 16, 24, 40, 112, 320, 1280] + model = EfficientNet( + arch='b0', + out_indices=(0, 1, 2, 3, 4, 5, 6), + norm_cfg=dict(type='GN', num_groups=2, requires_grad=True)) + for m in model.modules(): + if is_norm(m): + assert isinstance(m, GroupNorm) + model.init_weights() + model.train() + + imgs = torch.randn(1, 3, 224, 224) + feat = model(imgs) + assert len(feat) == 7 + assert feat[0].shape == torch.Size([1, out_channels[0], 112, 112]) + assert feat[1].shape == torch.Size([1, out_channels[1], 112, 112]) + assert feat[2].shape == torch.Size([1, out_channels[2], 56, 56]) + assert feat[3].shape == torch.Size([1, out_channels[3], 28, 28]) + assert feat[4].shape == torch.Size([1, out_channels[4], 14, 14]) + assert feat[5].shape == torch.Size([1, out_channels[5], 7, 7]) + assert feat[6].shape == torch.Size([1, out_channels[6], 7, 7]) + + # Test EfficientNet forward with 'es' arch + out_channels = [32, 24, 32, 48, 144, 192, 1280] + model = EfficientNet(arch='es', out_indices=(0, 1, 2, 3, 4, 5, 6)) + model.init_weights() + model.train() + + imgs = torch.randn(1, 3, 224, 224) + feat = model(imgs) + assert len(feat) == 7 + assert feat[0].shape == torch.Size([1, out_channels[0], 112, 112]) + assert feat[1].shape == torch.Size([1, out_channels[1], 112, 112]) + assert feat[2].shape == torch.Size([1, out_channels[2], 56, 56]) + assert feat[3].shape == torch.Size([1, out_channels[3], 28, 28]) + assert feat[4].shape == torch.Size([1, out_channels[4], 14, 14]) + assert feat[5].shape == torch.Size([1, out_channels[5], 7, 7]) + assert feat[6].shape == torch.Size([1, out_channels[6], 7, 7]) + + # Test EfficientNet forward with 'es' arch and GroupNorm + out_channels = [32, 24, 32, 48, 144, 192, 1280] + model = EfficientNet( + arch='es', + out_indices=(0, 1, 2, 3, 4, 5, 6), + norm_cfg=dict(type='GN', num_groups=2, requires_grad=True)) + for m in model.modules(): + if is_norm(m): + assert isinstance(m, GroupNorm) + model.init_weights() + model.train() + + imgs = torch.randn(1, 3, 224, 224) + feat = model(imgs) + assert len(feat) == 7 + assert feat[0].shape == torch.Size([1, out_channels[0], 112, 112]) + assert feat[1].shape == torch.Size([1, out_channels[1], 112, 112]) + assert feat[2].shape == torch.Size([1, out_channels[2], 56, 56]) + assert feat[3].shape == torch.Size([1, out_channels[3], 28, 28]) + assert feat[4].shape == torch.Size([1, out_channels[4], 14, 14]) + assert feat[5].shape == torch.Size([1, out_channels[5], 7, 7]) + assert feat[6].shape == torch.Size([1, out_channels[6], 7, 7]) diff --git a/openmmlab_test/mmclassification-0.24.1/tests/test_models/test_backbones/test_hornet.py b/openmmlab_test/mmclassification-0.24.1/tests/test_models/test_backbones/test_hornet.py new file mode 100644 index 00000000..5fdd84b3 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/tests/test_models/test_backbones/test_hornet.py @@ -0,0 +1,174 @@ +# Copyright (c) OpenMMLab. All rights reserved. +import math +from copy import deepcopy +from itertools import chain +from unittest import TestCase + +import pytest +import torch +from mmcv.utils import digit_version +from mmcv.utils.parrots_wrapper import _BatchNorm +from torch import nn + +from mmcls.models.backbones import HorNet + + +def check_norm_state(modules, train_state): + """Check if norm layer is in correct train state.""" + for mod in modules: + if isinstance(mod, _BatchNorm): + if mod.training != train_state: + return False + return True + + +@pytest.mark.skipif( + digit_version(torch.__version__) < digit_version('1.7.0'), + reason='torch.fft is not available before 1.7.0') +class TestHorNet(TestCase): + + def setUp(self): + self.cfg = dict( + arch='t', drop_path_rate=0.1, gap_before_final_norm=False) + + def test_arch(self): + # Test invalid default arch + with self.assertRaisesRegex(AssertionError, 'not in default archs'): + cfg = deepcopy(self.cfg) + cfg['arch'] = 'unknown' + HorNet(**cfg) + + # Test invalid custom arch + with self.assertRaisesRegex(AssertionError, 'Custom arch needs'): + cfg = deepcopy(self.cfg) + cfg['arch'] = { + 'depths': [1, 1, 1, 1], + 'orders': [1, 1, 1, 1], + } + HorNet(**cfg) + + # Test custom arch + cfg = deepcopy(self.cfg) + base_dim = 64 + depths = [2, 3, 18, 2] + embed_dims = [base_dim, base_dim * 2, base_dim * 4, base_dim * 8] + cfg['arch'] = { + 'base_dim': + base_dim, + 'depths': + depths, + 'orders': [2, 3, 4, 5], + 'dw_cfg': [ + dict(type='DW', kernel_size=7), + dict(type='DW', kernel_size=7), + dict(type='GF', h=14, w=8), + dict(type='GF', h=7, w=4) + ], + } + model = HorNet(**cfg) + + for i in range(len(depths)): + stage = model.stages[i] + self.assertEqual(stage[-1].out_channels, embed_dims[i]) + self.assertEqual(len(stage), depths[i]) + + def test_init_weights(self): + # test weight init cfg + cfg = deepcopy(self.cfg) + cfg['init_cfg'] = [ + dict( + type='Kaiming', + layer='Conv2d', + mode='fan_in', + nonlinearity='linear') + ] + model = HorNet(**cfg) + ori_weight = model.downsample_layers[0][0].weight.clone().detach() + + model.init_weights() + initialized_weight = model.downsample_layers[0][0].weight + self.assertFalse(torch.allclose(ori_weight, initialized_weight)) + + def test_forward(self): + imgs = torch.randn(3, 3, 224, 224) + + cfg = deepcopy(self.cfg) + model = HorNet(**cfg) + outs = model(imgs) + self.assertIsInstance(outs, tuple) + self.assertEqual(len(outs), 1) + feat = outs[-1] + self.assertEqual(feat.shape, (3, 512, 7, 7)) + + # test multiple output indices + cfg = deepcopy(self.cfg) + cfg['out_indices'] = (0, 1, 2, 3) + model = HorNet(**cfg) + outs = model(imgs) + self.assertIsInstance(outs, tuple) + self.assertEqual(len(outs), 4) + for emb_size, stride, out in zip([64, 128, 256, 512], [1, 2, 4, 8], + outs): + self.assertEqual(out.shape, + (3, emb_size, 56 // stride, 56 // stride)) + + # test with dynamic input shape + imgs1 = torch.randn(3, 3, 224, 224) + imgs2 = torch.randn(3, 3, 256, 256) + imgs3 = torch.randn(3, 3, 256, 309) + cfg = deepcopy(self.cfg) + model = HorNet(**cfg) + for imgs in [imgs1, imgs2, imgs3]: + outs = model(imgs) + self.assertIsInstance(outs, tuple) + self.assertEqual(len(outs), 1) + feat = outs[-1] + expect_feat_shape = (math.floor(imgs.shape[2] / 32), + math.floor(imgs.shape[3] / 32)) + self.assertEqual(feat.shape, (3, 512, *expect_feat_shape)) + + def test_structure(self): + # test drop_path_rate decay + cfg = deepcopy(self.cfg) + cfg['drop_path_rate'] = 0.2 + model = HorNet(**cfg) + depths = model.arch_settings['depths'] + stages = model.stages + blocks = chain(*[stage for stage in stages]) + total_depth = sum(depths) + dpr = [ + x.item() + for x in torch.linspace(0, cfg['drop_path_rate'], total_depth) + ] + for i, (block, expect_prob) in enumerate(zip(blocks, dpr)): + if expect_prob == 0: + assert isinstance(block.drop_path, nn.Identity) + else: + self.assertAlmostEqual(block.drop_path.drop_prob, expect_prob) + + # test VAN with first stage frozen. + cfg = deepcopy(self.cfg) + frozen_stages = 0 + cfg['frozen_stages'] = frozen_stages + cfg['out_indices'] = (0, 1, 2, 3) + model = HorNet(**cfg) + model.init_weights() + model.train() + + # the patch_embed and first stage should not require grad. + for i in range(frozen_stages + 1): + down = model.downsample_layers[i] + for param in down.parameters(): + self.assertFalse(param.requires_grad) + blocks = model.stages[i] + for param in blocks.parameters(): + self.assertFalse(param.requires_grad) + + # the second stage should require grad. + for i in range(frozen_stages + 1, 4): + down = model.downsample_layers[i] + for param in down.parameters(): + self.assertTrue(param.requires_grad) + blocks = model.stages[i] + for param in blocks.parameters(): + self.assertTrue(param.requires_grad) diff --git a/openmmlab_test/mmclassification-0.24.1/tests/test_models/test_backbones/test_hrnet.py b/openmmlab_test/mmclassification-0.24.1/tests/test_models/test_backbones/test_hrnet.py new file mode 100644 index 00000000..cb9909a8 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/tests/test_models/test_backbones/test_hrnet.py @@ -0,0 +1,93 @@ +# Copyright (c) OpenMMLab. All rights reserved. +import pytest +import torch +from torch.nn.modules import GroupNorm +from torch.nn.modules.batchnorm import _BatchNorm + +from mmcls.models.backbones import HRNet + + +def is_norm(modules): + """Check if is one of the norms.""" + if isinstance(modules, (GroupNorm, _BatchNorm)): + return True + return False + + +def check_norm_state(modules, train_state): + """Check if norm layer is in correct train state.""" + for mod in modules: + if isinstance(mod, _BatchNorm): + if mod.training != train_state: + return False + return True + + +@pytest.mark.parametrize('base_channels', [18, 30, 32, 40, 44, 48, 64]) +def test_hrnet_arch_zoo(base_channels): + + cfg_ori = dict(arch=f'w{base_channels}') + + # Test HRNet model with input size of 224 + model = HRNet(**cfg_ori) + model.init_weights() + model.train() + + assert check_norm_state(model.modules(), True) + + imgs = torch.randn(3, 3, 224, 224) + outs = model(imgs) + out_channels = base_channels + out_size = 56 + assert isinstance(outs, tuple) + for out in outs: + assert out.shape == (3, out_channels, out_size, out_size) + out_channels = out_channels * 2 + out_size = out_size // 2 + + +def test_hrnet_custom_arch(): + + cfg_ori = dict( + extra=dict( + stage1=dict( + num_modules=1, + num_branches=1, + block='BOTTLENECK', + num_blocks=(4, ), + num_channels=(64, )), + stage2=dict( + num_modules=1, + num_branches=2, + block='BASIC', + num_blocks=(4, 4), + num_channels=(32, 64)), + stage3=dict( + num_modules=4, + num_branches=3, + block='BOTTLENECK', + num_blocks=(4, 4, 2), + num_channels=(32, 64, 128)), + stage4=dict( + num_modules=3, + num_branches=4, + block='BASIC', + num_blocks=(4, 3, 4, 4), + num_channels=(32, 64, 152, 256)), + ), ) + + # Test HRNet model with input size of 224 + model = HRNet(**cfg_ori) + model.init_weights() + model.train() + + assert check_norm_state(model.modules(), True) + + imgs = torch.randn(3, 3, 224, 224) + outs = model(imgs) + out_channels = (32, 64, 152, 256) + out_size = 56 + assert isinstance(outs, tuple) + for out, out_channel in zip(outs, out_channels): + assert out.shape == (3, out_channel, out_size, out_size) + out_size = out_size // 2 diff --git a/openmmlab_test/mmclassification-0.24.1/tests/test_models/test_backbones/test_mlp_mixer.py b/openmmlab_test/mmclassification-0.24.1/tests/test_models/test_backbones/test_mlp_mixer.py new file mode 100644 index 00000000..d065a680 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/tests/test_models/test_backbones/test_mlp_mixer.py @@ -0,0 +1,119 @@ +# Copyright (c) OpenMMLab. All rights reserved. +from copy import deepcopy +from unittest import TestCase + +import torch +from torch.nn.modules import GroupNorm +from torch.nn.modules.batchnorm import _BatchNorm + +from mmcls.models.backbones import MlpMixer + + +def is_norm(modules): + """Check if is one of the norms.""" + if isinstance(modules, (GroupNorm, _BatchNorm)): + return True + return False + + +def check_norm_state(modules, train_state): + """Check if norm layer is in correct train state.""" + for mod in modules: + if isinstance(mod, _BatchNorm): + if mod.training != train_state: + return False + return True + + +class TestMLPMixer(TestCase): + + def setUp(self): + self.cfg = dict( + arch='b', + img_size=224, + patch_size=16, + drop_rate=0.1, + init_cfg=[ + dict( + type='Kaiming', + layer='Conv2d', + mode='fan_in', + nonlinearity='linear') + ]) + + def test_arch(self): + # Test invalid default arch + with self.assertRaisesRegex(AssertionError, 'not in default archs'): + cfg = deepcopy(self.cfg) + cfg['arch'] = 'unknown' + MlpMixer(**cfg) + + # Test invalid custom arch + with self.assertRaisesRegex(AssertionError, 'Custom arch needs'): + cfg = deepcopy(self.cfg) + cfg['arch'] = { + 'embed_dims': 24, + 'num_layers': 16, + 'tokens_mlp_dims': 4096 + } + MlpMixer(**cfg) + + # Test custom arch + cfg = deepcopy(self.cfg) + cfg['arch'] = { + 'embed_dims': 128, + 'num_layers': 6, + 'tokens_mlp_dims': 256, + 'channels_mlp_dims': 1024 + } + model = MlpMixer(**cfg) + self.assertEqual(model.embed_dims, 128) + self.assertEqual(model.num_layers, 6) + for layer in model.layers: + self.assertEqual(layer.token_mix.feedforward_channels, 256) + self.assertEqual(layer.channel_mix.feedforward_channels, 1024) + + def test_init_weights(self): + # test weight init cfg + cfg = deepcopy(self.cfg) + cfg['init_cfg'] = [ + dict( + type='Kaiming', + layer='Conv2d', + mode='fan_in', + nonlinearity='linear') + ] + model = MlpMixer(**cfg) + ori_weight = model.patch_embed.projection.weight.clone().detach() + model.init_weights() + initialized_weight = model.patch_embed.projection.weight + self.assertFalse(torch.allclose(ori_weight, initialized_weight)) + + def test_forward(self): + imgs = torch.randn(3, 3, 224, 224) + + # test forward with single out indices + cfg = deepcopy(self.cfg) + model = MlpMixer(**cfg) + outs = model(imgs) + self.assertIsInstance(outs, tuple) + self.assertEqual(len(outs), 1) + feat = outs[-1] + self.assertEqual(feat.shape, (3, 768, 196)) + + # test forward with multi out indices + cfg = deepcopy(self.cfg) + cfg['out_indices'] = [-3, -2, -1] + model = MlpMixer(**cfg) + outs = model(imgs) + self.assertIsInstance(outs, tuple) + self.assertEqual(len(outs), 3) + for feat in outs: + self.assertEqual(feat.shape, (3, 768, 196)) + + # test with invalid input shape + imgs2 = torch.randn(3, 3, 256, 256) + cfg = deepcopy(self.cfg) + model = MlpMixer(**cfg) + with self.assertRaisesRegex(AssertionError, 'dynamic input shape.'): + model(imgs2) diff --git a/openmmlab_test/mmclassification-speed-benchmark/tests/test_backbones/test_mobilenet_v2.py b/openmmlab_test/mmclassification-0.24.1/tests/test_models/test_backbones/test_mobilenet_v2.py similarity index 97% rename from openmmlab_test/mmclassification-speed-benchmark/tests/test_backbones/test_mobilenet_v2.py rename to openmmlab_test/mmclassification-0.24.1/tests/test_models/test_backbones/test_mobilenet_v2.py index 1610f128..9ea75570 100644 --- a/openmmlab_test/mmclassification-speed-benchmark/tests/test_backbones/test_mobilenet_v2.py +++ b/openmmlab_test/mmclassification-0.24.1/tests/test_models/test_backbones/test_mobilenet_v2.py @@ -1,3 +1,4 @@ +# Copyright (c) OpenMMLab. All rights reserved. import pytest import torch from torch.nn.modules import GroupNorm @@ -154,7 +155,8 @@ def test_mobilenetv2_backbone(): imgs = torch.randn(1, 3, 224, 224) feat = model(imgs) - assert feat.shape == torch.Size((1, 2560, 7, 7)) + assert len(feat) == 1 + assert feat[0].shape == torch.Size((1, 2560, 7, 7)) # Test MobileNetV2 forward with out_indices=None model = MobileNetV2(widen_factor=1.0) @@ -163,7 +165,8 @@ def test_mobilenetv2_backbone(): imgs = torch.randn(1, 3, 224, 224) feat = model(imgs) - assert feat.shape == torch.Size((1, 1280, 7, 7)) + assert len(feat) == 1 + assert feat[0].shape == torch.Size((1, 1280, 7, 7)) # Test MobileNetV2 forward with dict(type='ReLU') model = MobileNetV2( diff --git a/openmmlab_test/mmclassification-0.24.1/tests/test_models/test_backbones/test_mobilenet_v3.py b/openmmlab_test/mmclassification-0.24.1/tests/test_models/test_backbones/test_mobilenet_v3.py new file mode 100644 index 00000000..b122dbd7 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/tests/test_models/test_backbones/test_mobilenet_v3.py @@ -0,0 +1,175 @@ +# Copyright (c) OpenMMLab. All rights reserved. +import pytest +import torch +from torch.nn.modules import GroupNorm +from torch.nn.modules.batchnorm import _BatchNorm + +from mmcls.models.backbones import MobileNetV3 +from mmcls.models.utils import InvertedResidual + + +def is_norm(modules): + """Check if is one of the norms.""" + if isinstance(modules, (GroupNorm, _BatchNorm)): + return True + return False + + +def check_norm_state(modules, train_state): + """Check if norm layer is in correct train state.""" + for mod in modules: + if isinstance(mod, _BatchNorm): + if mod.training != train_state: + return False + return True + + +def test_mobilenetv3_backbone(): + with pytest.raises(TypeError): + # pretrained must be a string path + model = MobileNetV3() + model.init_weights(pretrained=0) + + with pytest.raises(AssertionError): + # arch must in [small, large] + MobileNetV3(arch='others') + + with pytest.raises(ValueError): + # frozen_stages must less than 13 when arch is small + MobileNetV3(arch='small', frozen_stages=13) + + with pytest.raises(ValueError): + # frozen_stages must less than 17 when arch is large + MobileNetV3(arch='large', frozen_stages=17) + + with pytest.raises(ValueError): + # max out_indices must less than 13 when arch is small + MobileNetV3(arch='small', out_indices=(13, )) + + with pytest.raises(ValueError): + # max out_indices must less than 17 when arch is large + MobileNetV3(arch='large', out_indices=(17, )) + + # Test MobileNetV3 + model = MobileNetV3() + model.init_weights() + model.train() + + # Test MobileNetV3 with first stage frozen + frozen_stages = 1 + model = MobileNetV3(frozen_stages=frozen_stages) + model.init_weights() + model.train() + for i in range(0, frozen_stages + 1): + layer = getattr(model, f'layer{i}') + for mod in layer.modules(): + if isinstance(mod, _BatchNorm): + assert mod.training is False + for param in layer.parameters(): + assert param.requires_grad is False + + # Test MobileNetV3 with norm eval + model = MobileNetV3(norm_eval=True, out_indices=range(0, 12)) + model.init_weights() + model.train() + assert check_norm_state(model.modules(), False) + + # Test MobileNetV3 forward with small arch + model = MobileNetV3(out_indices=(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12)) + model.init_weights() + model.train() + + imgs = torch.randn(1, 3, 224, 224) + feat = model(imgs) + assert len(feat) == 13 + assert feat[0].shape == torch.Size([1, 16, 112, 112]) + assert feat[1].shape == torch.Size([1, 16, 56, 56]) + assert feat[2].shape == torch.Size([1, 24, 28, 28]) + assert feat[3].shape == torch.Size([1, 24, 28, 28]) + assert feat[4].shape == torch.Size([1, 40, 14, 14]) + assert feat[5].shape == torch.Size([1, 40, 14, 14]) + assert feat[6].shape == torch.Size([1, 40, 14, 14]) + assert feat[7].shape == torch.Size([1, 48, 14, 14]) + assert feat[8].shape == torch.Size([1, 48, 14, 14]) + assert feat[9].shape == torch.Size([1, 96, 7, 7]) + assert feat[10].shape == torch.Size([1, 96, 7, 7]) + assert feat[11].shape == torch.Size([1, 96, 7, 7]) + assert feat[12].shape == torch.Size([1, 576, 7, 7]) + + # Test MobileNetV3 forward with small arch and GroupNorm + model = MobileNetV3( + out_indices=(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12), + norm_cfg=dict(type='GN', num_groups=2, requires_grad=True)) + for m in model.modules(): + if is_norm(m): + assert isinstance(m, GroupNorm) + model.init_weights() + model.train() + + imgs = torch.randn(1, 3, 224, 224) + feat = model(imgs) + assert len(feat) == 13 + assert feat[0].shape == torch.Size([1, 16, 112, 112]) + assert feat[1].shape == torch.Size([1, 16, 56, 56]) + assert feat[2].shape == torch.Size([1, 24, 28, 28]) + assert feat[3].shape == torch.Size([1, 24, 28, 28]) + assert feat[4].shape == torch.Size([1, 40, 14, 14]) + assert feat[5].shape == torch.Size([1, 40, 14, 14]) + assert feat[6].shape == torch.Size([1, 40, 14, 14]) + assert feat[7].shape == torch.Size([1, 48, 14, 14]) + assert feat[8].shape == torch.Size([1, 48, 14, 14]) + assert feat[9].shape == torch.Size([1, 96, 7, 7]) + assert feat[10].shape == torch.Size([1, 96, 7, 7]) + assert feat[11].shape == torch.Size([1, 96, 7, 7]) + assert feat[12].shape == torch.Size([1, 576, 7, 7]) + + # Test MobileNetV3 forward with large arch + model = MobileNetV3( + arch='large', + out_indices=(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16)) + model.init_weights() + model.train() + + imgs = torch.randn(1, 3, 224, 224) + feat = model(imgs) + assert len(feat) == 17 + assert feat[0].shape == torch.Size([1, 16, 112, 112]) + assert feat[1].shape == torch.Size([1, 16, 112, 112]) + assert feat[2].shape == torch.Size([1, 24, 56, 56]) + assert feat[3].shape == torch.Size([1, 24, 56, 56]) + assert feat[4].shape == torch.Size([1, 40, 28, 28]) + assert feat[5].shape == torch.Size([1, 40, 28, 28]) + assert feat[6].shape == torch.Size([1, 40, 28, 28]) + assert feat[7].shape == torch.Size([1, 80, 14, 14]) + assert feat[8].shape == torch.Size([1, 80, 14, 14]) + assert feat[9].shape == torch.Size([1, 80, 14, 14]) + assert feat[10].shape == torch.Size([1, 80, 14, 14]) + assert feat[11].shape == torch.Size([1, 112, 14, 14]) + assert feat[12].shape == torch.Size([1, 112, 14, 14]) + assert feat[13].shape == torch.Size([1, 160, 7, 7]) + assert feat[14].shape == torch.Size([1, 160, 7, 7]) + assert feat[15].shape == torch.Size([1, 160, 7, 7]) + assert feat[16].shape == torch.Size([1, 960, 7, 7]) + + # Test MobileNetV3 forward with large arch + model = MobileNetV3(arch='large', out_indices=(0, )) + model.init_weights() + model.train() + + imgs = torch.randn(1, 3, 224, 224) + feat = model(imgs) + assert len(feat) == 1 + assert feat[0].shape == torch.Size([1, 16, 112, 112]) + + # Test MobileNetV3 with checkpoint forward + model = MobileNetV3(with_cp=True) + for m in model.modules(): + if isinstance(m, InvertedResidual): + assert m.with_cp + model.init_weights() + model.train() + + imgs = torch.randn(1, 3, 224, 224) + feat = model(imgs) + assert len(feat) == 1 + assert feat[0].shape == torch.Size([1, 576, 7, 7]) diff --git a/openmmlab_test/mmclassification-0.24.1/tests/test_models/test_backbones/test_mvit.py b/openmmlab_test/mmclassification-0.24.1/tests/test_models/test_backbones/test_mvit.py new file mode 100644 index 00000000..a37e93f5 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/tests/test_models/test_backbones/test_mvit.py @@ -0,0 +1,185 @@ +# Copyright (c) OpenMMLab. All rights reserved. +from copy import deepcopy +from unittest import TestCase + +import torch + +from mmcls.models.backbones import MViT + + +class TestMViT(TestCase): + + def setUp(self): + self.cfg = dict(arch='tiny', img_size=224, drop_path_rate=0.1) + + def test_arch(self): + # Test invalid default arch + with self.assertRaisesRegex(AssertionError, 'not in default archs'): + cfg = deepcopy(self.cfg) + cfg['arch'] = 'unknown' + MViT(**cfg) + + # Test invalid custom arch + with self.assertRaisesRegex(AssertionError, 'Custom arch needs'): + cfg = deepcopy(self.cfg) + cfg['arch'] = { + 'embed_dims': 96, + 'num_layers': 10, + } + MViT(**cfg) + + # Test custom arch + cfg = deepcopy(self.cfg) + embed_dims = 96 + num_layers = 10 + num_heads = 1 + downscale_indices = (2, 5, 7) + cfg['arch'] = { + 'embed_dims': embed_dims, + 'num_layers': num_layers, + 'num_heads': num_heads, + 'downscale_indices': downscale_indices + } + model = MViT(**cfg) + self.assertEqual(len(model.blocks), num_layers) + for i, block in enumerate(model.blocks): + if i in downscale_indices: + num_heads *= 2 + embed_dims *= 2 + self.assertEqual(block.out_dims, embed_dims) + self.assertEqual(block.attn.num_heads, num_heads) + + def test_init_weights(self): + # test weight init cfg + cfg = deepcopy(self.cfg) + cfg['use_abs_pos_embed'] = True + cfg['init_cfg'] = [ + dict( + type='Kaiming', + layer='Conv2d', + mode='fan_in', + nonlinearity='linear') + ] + model = MViT(**cfg) + ori_weight = model.patch_embed.projection.weight.clone().detach() + # The pos_embed is all zero before initialize + self.assertTrue(torch.allclose(model.pos_embed, torch.tensor(0.))) + + model.init_weights() + initialized_weight = model.patch_embed.projection.weight + self.assertFalse(torch.allclose(ori_weight, initialized_weight)) + self.assertFalse(torch.allclose(model.pos_embed, torch.tensor(0.))) + self.assertFalse( + torch.allclose(model.blocks[0].attn.rel_pos_h, torch.tensor(0.))) + self.assertFalse( + torch.allclose(model.blocks[0].attn.rel_pos_w, torch.tensor(0.))) + + # test rel_pos_zero_init + cfg = deepcopy(self.cfg) + cfg['rel_pos_zero_init'] = True + model = MViT(**cfg) + model.init_weights() + self.assertTrue( + torch.allclose(model.blocks[0].attn.rel_pos_h, torch.tensor(0.))) + self.assertTrue( + torch.allclose(model.blocks[0].attn.rel_pos_w, torch.tensor(0.))) + + def test_forward(self): + imgs = torch.randn(1, 3, 224, 224) + + cfg = deepcopy(self.cfg) + model = MViT(**cfg) + outs = model(imgs) + self.assertIsInstance(outs, tuple) + self.assertEqual(len(outs), 1) + feat = outs[-1] + self.assertEqual(feat.shape, (1, 768, 7, 7)) + + # test multiple output indices + cfg = deepcopy(self.cfg) + cfg['out_scales'] = (0, 1, 2, 3) + model = MViT(**cfg) + model.init_weights() + outs = model(imgs) + self.assertIsInstance(outs, tuple) + self.assertEqual(len(outs), 4) + for stride, out in zip([1, 2, 4, 8], outs): + self.assertEqual(out.shape, + (1, 96 * stride, 56 // stride, 56 // stride)) + + # test dim_mul_in_attention = False + cfg = deepcopy(self.cfg) + cfg['out_scales'] = (0, 1, 2, 3) + cfg['dim_mul_in_attention'] = False + model = MViT(**cfg) + outs = model(imgs) + self.assertIsInstance(outs, tuple) + self.assertEqual(len(outs), 4) + for dim_mul, stride, out in zip([2, 4, 8, 8], [1, 2, 4, 8], outs): + self.assertEqual(out.shape, + (1, 96 * dim_mul, 56 // stride, 56 // stride)) + + # test rel_pos_spatial = False + cfg = deepcopy(self.cfg) + cfg['out_scales'] = (0, 1, 2, 3) + cfg['rel_pos_spatial'] = False + cfg['img_size'] = None + model = MViT(**cfg) + outs = model(imgs) + self.assertIsInstance(outs, tuple) + self.assertEqual(len(outs), 4) + for stride, out in zip([1, 2, 4, 8], outs): + self.assertEqual(out.shape, + (1, 96 * stride, 56 // stride, 56 // stride)) + + # test residual_pooling = False + cfg = deepcopy(self.cfg) + cfg['out_scales'] = (0, 1, 2, 3) + cfg['residual_pooling'] = False + model = MViT(**cfg) + outs = model(imgs) + self.assertIsInstance(outs, tuple) + self.assertEqual(len(outs), 4) + for stride, out in zip([1, 2, 4, 8], outs): + self.assertEqual(out.shape, + (1, 96 * stride, 56 // stride, 56 // stride)) + + # test use_abs_pos_embed = True + cfg = deepcopy(self.cfg) + cfg['out_scales'] = (0, 1, 2, 3) + cfg['use_abs_pos_embed'] = True + model = MViT(**cfg) + model.init_weights() + outs = model(imgs) + self.assertIsInstance(outs, tuple) + self.assertEqual(len(outs), 4) + for stride, out in zip([1, 2, 4, 8], outs): + self.assertEqual(out.shape, + (1, 96 * stride, 56 // stride, 56 // stride)) + + # test dynamic inputs shape + cfg = deepcopy(self.cfg) + cfg['out_scales'] = (0, 1, 2, 3) + model = MViT(**cfg) + imgs = torch.randn(1, 3, 352, 260) + h_resolution = (352 + 2 * 3 - 7) // 4 + 1 + w_resolution = (260 + 2 * 3 - 7) // 4 + 1 + outs = model(imgs) + self.assertIsInstance(outs, tuple) + self.assertEqual(len(outs), 4) + expect_h = h_resolution + expect_w = w_resolution + for i, out in enumerate(outs): + self.assertEqual(out.shape, (1, 96 * 2**i, expect_h, expect_w)) + expect_h = (expect_h + 2 * 1 - 3) // 2 + 1 + expect_w = (expect_w + 2 * 1 - 3) // 2 + 1 + + def test_structure(self): + # test drop_path_rate decay + cfg = deepcopy(self.cfg) + cfg['drop_path_rate'] = 0.2 + model = MViT(**cfg) + for i, block in enumerate(model.blocks): + expect_prob = 0.2 / (model.num_layers - 1) * i + if expect_prob > 0: + self.assertAlmostEqual(block.drop_path.drop_prob, expect_prob) diff --git a/openmmlab_test/mmclassification-0.24.1/tests/test_models/test_backbones/test_poolformer.py b/openmmlab_test/mmclassification-0.24.1/tests/test_models/test_backbones/test_poolformer.py new file mode 100644 index 00000000..8e60b81f --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/tests/test_models/test_backbones/test_poolformer.py @@ -0,0 +1,143 @@ +# Copyright (c) OpenMMLab. All rights reserved. +from copy import deepcopy +from unittest import TestCase + +import torch + +from mmcls.models.backbones import PoolFormer +from mmcls.models.backbones.poolformer import PoolFormerBlock + + +class TestPoolFormer(TestCase): + + def setUp(self): + arch = 's12' + self.cfg = dict(arch=arch, drop_path_rate=0.1) + self.arch = PoolFormer.arch_settings[arch] + + def test_arch(self): + # Test invalid default arch + with self.assertRaisesRegex(AssertionError, 'Unavailable arch'): + cfg = deepcopy(self.cfg) + cfg['arch'] = 'unknown' + PoolFormer(**cfg) + + # Test invalid custom arch + with self.assertRaisesRegex(AssertionError, 'must have "layers"'): + cfg = deepcopy(self.cfg) + cfg['arch'] = { + 'embed_dims': 96, + 'num_heads': [3, 6, 12, 16], + } + PoolFormer(**cfg) + + # Test custom arch + cfg = deepcopy(self.cfg) + layers = [2, 2, 4, 2] + embed_dims = [6, 12, 6, 12] + mlp_ratios = [2, 3, 4, 4] + layer_scale_init_value = 1e-4 + cfg['arch'] = dict( + layers=layers, + embed_dims=embed_dims, + mlp_ratios=mlp_ratios, + layer_scale_init_value=layer_scale_init_value, + ) + model = PoolFormer(**cfg) + for i, stage in enumerate(model.network): + if not isinstance(stage, PoolFormerBlock): + continue + self.assertEqual(len(stage), layers[i]) + self.assertEqual(stage[0].mlp.fc1.in_channels, embed_dims[i]) + self.assertEqual(stage[0].mlp.fc1.out_channels, + embed_dims[i] * mlp_ratios[i]) + self.assertTrue( + torch.allclose(stage[0].layer_scale_1, + torch.tensor(layer_scale_init_value))) + self.assertTrue( + torch.allclose(stage[0].layer_scale_2, + torch.tensor(layer_scale_init_value))) + + def test_init_weights(self): + # test weight init cfg + cfg = deepcopy(self.cfg) + cfg['init_cfg'] = [ + dict( + type='Kaiming', + layer='Conv2d', + mode='fan_in', + nonlinearity='linear') + ] + model = PoolFormer(**cfg) + ori_weight = model.patch_embed.proj.weight.clone().detach() + + model.init_weights() + initialized_weight = model.patch_embed.proj.weight + self.assertFalse(torch.allclose(ori_weight, initialized_weight)) + + def test_forward(self): + imgs = torch.randn(1, 3, 224, 224) + + cfg = deepcopy(self.cfg) + model = PoolFormer(**cfg) + outs = model(imgs) + self.assertIsInstance(outs, tuple) + self.assertEqual(len(outs), 1) + feat = outs[-1] + self.assertEqual(feat.shape, (1, 512, 7, 7)) + + # test multiple output indices + cfg = deepcopy(self.cfg) + cfg['out_indices'] = (0, 2, 4, 6) + model = PoolFormer(**cfg) + outs = model(imgs) + self.assertIsInstance(outs, tuple) + self.assertEqual(len(outs), 4) + for dim, stride, out in zip(self.arch['embed_dims'], [1, 2, 4, 8], + outs): + self.assertEqual(out.shape, (1, dim, 56 // stride, 56 // stride)) + + def test_structure(self): + # test drop_path_rate decay + cfg = deepcopy(self.cfg) + cfg['drop_path_rate'] = 0.2 + model = PoolFormer(**cfg) + layers = self.arch['layers'] + for i, block in enumerate(model.network): + expect_prob = 0.2 / (sum(layers) - 1) * i + if hasattr(block, 'drop_path'): + if expect_prob == 0: + self.assertIsInstance(block.drop_path, torch.nn.Identity) + else: + self.assertAlmostEqual(block.drop_path.drop_prob, + expect_prob) + + # test with first stage frozen. + cfg = deepcopy(self.cfg) + frozen_stages = 1 + cfg['frozen_stages'] = frozen_stages + cfg['out_indices'] = (0, 2, 4, 6) + model = PoolFormer(**cfg) + model.init_weights() + model.train() + + # the patch_embed and first stage should not require grad. + self.assertFalse(model.patch_embed.training) + for param in model.patch_embed.parameters(): + self.assertFalse(param.requires_grad) + for i in range(frozen_stages): + module = model.network[i] + for param in module.parameters(): + self.assertFalse(param.requires_grad) + for param in model.norm0.parameters(): + self.assertFalse(param.requires_grad) + + # the second stage should require grad. + for i in range(frozen_stages + 1, 7): + module = model.network[i] + for param in module.parameters(): + self.assertTrue(param.requires_grad) + if hasattr(model, f'norm{i}'): + norm = getattr(model, f'norm{i}') + for param in norm.parameters(): + self.assertTrue(param.requires_grad) diff --git a/openmmlab_test/mmclassification-speed-benchmark/tests/test_backbones/test_regnet.py b/openmmlab_test/mmclassification-0.24.1/tests/test_models/test_backbones/test_regnet.py similarity index 90% rename from openmmlab_test/mmclassification-speed-benchmark/tests/test_backbones/test_regnet.py rename to openmmlab_test/mmclassification-0.24.1/tests/test_models/test_backbones/test_regnet.py index 465e5033..67de1c87 100644 --- a/openmmlab_test/mmclassification-speed-benchmark/tests/test_backbones/test_regnet.py +++ b/openmmlab_test/mmclassification-0.24.1/tests/test_models/test_backbones/test_regnet.py @@ -1,3 +1,4 @@ +# Copyright (c) OpenMMLab. All rights reserved. import pytest import torch @@ -44,8 +45,9 @@ def test_regnet_backbone(arch_name, arch, out_channels): imgs = torch.randn(1, 3, 224, 224) feat = model(imgs) - assert isinstance(feat, torch.Tensor) - assert feat.shape == (1, out_channels[-1], 7, 7) + assert len(feat) == 1 + assert isinstance(feat[0], torch.Tensor) + assert feat[0].shape == (1, out_channels[-1], 7, 7) # output feature map of all stages model = RegNet(arch_name, out_indices=(0, 1, 2, 3)) @@ -69,8 +71,9 @@ def test_custom_arch(arch_name, arch, out_channels): imgs = torch.randn(1, 3, 224, 224) feat = model(imgs) - assert isinstance(feat, torch.Tensor) - assert feat.shape == (1, out_channels[-1], 7, 7) + assert len(feat) == 1 + assert isinstance(feat[0], torch.Tensor) + assert feat[0].shape == (1, out_channels[-1], 7, 7) # output feature map of all stages model = RegNet(arch, out_indices=(0, 1, 2, 3)) diff --git a/openmmlab_test/mmclassification-0.24.1/tests/test_models/test_backbones/test_repmlp.py b/openmmlab_test/mmclassification-0.24.1/tests/test_models/test_backbones/test_repmlp.py new file mode 100644 index 00000000..dcab2cfb --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/tests/test_models/test_backbones/test_repmlp.py @@ -0,0 +1,172 @@ +# Copyright (c) OpenMMLab. All rights reserved. +import os +import tempfile +from copy import deepcopy +from unittest import TestCase + +import torch +from mmcv.runner import load_checkpoint, save_checkpoint + +from mmcls.models.backbones import RepMLPNet + + +class TestRepMLP(TestCase): + + def setUp(self): + # default model setting + self.cfg = dict( + arch='b', + img_size=224, + out_indices=(3, ), + reparam_conv_kernels=(1, 3), + final_norm=True) + + # default model setting and output stage channels + self.model_forward_settings = [ + dict(model_name='B', out_sizes=(96, 192, 384, 768)), + ] + + # temp ckpt path + self.ckpt_path = os.path.join(tempfile.gettempdir(), 'ckpt.pth') + + def test_arch(self): + # Test invalid arch data type + with self.assertRaisesRegex(AssertionError, 'arch needs a dict'): + cfg = deepcopy(self.cfg) + cfg['arch'] = [96, 192, 384, 768] + RepMLPNet(**cfg) + + # Test invalid default arch + with self.assertRaisesRegex(AssertionError, 'not in default archs'): + cfg = deepcopy(self.cfg) + cfg['arch'] = 'A' + RepMLPNet(**cfg) + + # Test invalid custom arch + with self.assertRaisesRegex(AssertionError, 'Custom arch needs'): + cfg = deepcopy(self.cfg) + cfg['arch'] = { + 'channels': [96, 192, 384, 768], + 'depths': [2, 2, 12, 2] + } + RepMLPNet(**cfg) + + # test len(arch['depths']) equals to len(arch['channels']) + # equals to len(arch['sharesets_nums']) + with self.assertRaisesRegex(AssertionError, 'Length of setting'): + cfg = deepcopy(self.cfg) + cfg['arch'] = { + 'channels': [96, 192, 384, 768], + 'depths': [2, 2, 12, 2], + 'sharesets_nums': [1, 4, 32] + } + RepMLPNet(**cfg) + + # Test custom arch + cfg = deepcopy(self.cfg) + channels = [96, 192, 384, 768] + depths = [2, 2, 12, 2] + sharesets_nums = [1, 4, 32, 128] + cfg['arch'] = { + 'channels': channels, + 'depths': depths, + 'sharesets_nums': sharesets_nums + } + cfg['out_indices'] = (0, 1, 2, 3) + model = RepMLPNet(**cfg) + for i, stage in enumerate(model.stages): + self.assertEqual(len(stage), depths[i]) + self.assertEqual(stage[0].repmlp_block.channels, channels[i]) + self.assertEqual(stage[0].repmlp_block.deploy, False) + self.assertEqual(stage[0].repmlp_block.num_sharesets, + sharesets_nums[i]) + + def test_init(self): + # test weight init cfg + cfg = deepcopy(self.cfg) + cfg['init_cfg'] = [ + dict( + type='Kaiming', + layer='Conv2d', + mode='fan_in', + nonlinearity='linear') + ] + model = RepMLPNet(**cfg) + ori_weight = model.patch_embed.projection.weight.clone().detach() + + model.init_weights() + initialized_weight = model.patch_embed.projection.weight + self.assertFalse(torch.allclose(ori_weight, initialized_weight)) + + def test_forward(self): + imgs = torch.randn(1, 3, 224, 224) + cfg = deepcopy(self.cfg) + model = RepMLPNet(**cfg) + feat = model(imgs) + self.assertTrue(isinstance(feat, tuple)) + self.assertEqual(len(feat), 1) + self.assertTrue(isinstance(feat[0], torch.Tensor)) + self.assertEqual(feat[0].shape, torch.Size((1, 768, 7, 7))) + + imgs = torch.randn(1, 3, 256, 256) + with self.assertRaisesRegex(AssertionError, "doesn't support dynamic"): + model(imgs) + + # Test RepMLPNet model forward + for model_test_setting in self.model_forward_settings: + model = RepMLPNet( + model_test_setting['model_name'], + out_indices=(0, 1, 2, 3), + final_norm=False) + model.init_weights() + + model.train() + imgs = torch.randn(1, 3, 224, 224) + feat = model(imgs) + self.assertEqual( + feat[0].shape, + torch.Size((1, model_test_setting['out_sizes'][1], 28, 28))) + self.assertEqual( + feat[1].shape, + torch.Size((1, model_test_setting['out_sizes'][2], 14, 14))) + self.assertEqual( + feat[2].shape, + torch.Size((1, model_test_setting['out_sizes'][3], 7, 7))) + self.assertEqual( + feat[3].shape, + torch.Size((1, model_test_setting['out_sizes'][3], 7, 7))) + + def test_deploy_(self): + # Test output before and load from deploy checkpoint + imgs = torch.randn((1, 3, 224, 224)) + cfg = dict( + arch='b', out_indices=( + 1, + 3, + ), reparam_conv_kernels=(1, 3, 5)) + model = RepMLPNet(**cfg) + + model.eval() + feats = model(imgs) + model.switch_to_deploy() + for m in model.modules(): + if hasattr(m, 'deploy'): + self.assertTrue(m.deploy) + model.eval() + feats_ = model(imgs) + assert len(feats) == len(feats_) + for i in range(len(feats)): + self.assertTrue( + torch.allclose( + feats[i].sum(), feats_[i].sum(), rtol=0.1, atol=0.1)) + + cfg['deploy'] = True + model_deploy = RepMLPNet(**cfg) + model_deploy.eval() + save_checkpoint(model, self.ckpt_path) + load_checkpoint(model_deploy, self.ckpt_path, strict=True) + feats__ = model_deploy(imgs) + + assert len(feats_) == len(feats__) + for i in range(len(feats)): + self.assertTrue(torch.allclose(feats__[i], feats_[i])) diff --git a/openmmlab_test/mmclassification-0.24.1/tests/test_models/test_backbones/test_repvgg.py b/openmmlab_test/mmclassification-0.24.1/tests/test_models/test_backbones/test_repvgg.py new file mode 100644 index 00000000..beecdffc --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/tests/test_models/test_backbones/test_repvgg.py @@ -0,0 +1,350 @@ +# Copyright (c) OpenMMLab. All rights reserved. +import os +import tempfile + +import pytest +import torch +from mmcv.runner import load_checkpoint, save_checkpoint +from torch import nn +from torch.nn.modules import GroupNorm +from torch.nn.modules.batchnorm import _BatchNorm + +from mmcls.models.backbones import RepVGG +from mmcls.models.backbones.repvgg import RepVGGBlock +from mmcls.models.utils import SELayer + + +def check_norm_state(modules, train_state): + """Check if norm layer is in correct train state.""" + for mod in modules: + if isinstance(mod, _BatchNorm): + if mod.training != train_state: + return False + return True + + +def is_norm(modules): + """Check if is one of the norms.""" + if isinstance(modules, (GroupNorm, _BatchNorm)): + return True + return False + + +def is_repvgg_block(modules): + if isinstance(modules, RepVGGBlock): + return True + return False + + +def test_repvgg_repvggblock(): + # Test RepVGGBlock with in_channels != out_channels, stride = 1 + block = RepVGGBlock(5, 10, stride=1) + block.eval() + x = torch.randn(1, 5, 16, 16) + x_out_not_deploy = block(x) + assert block.branch_norm is None + assert not hasattr(block, 'branch_reparam') + assert hasattr(block, 'branch_1x1') + assert hasattr(block, 'branch_3x3') + assert hasattr(block, 'branch_norm') + assert block.se_cfg is None + assert x_out_not_deploy.shape == torch.Size((1, 10, 16, 16)) + block.switch_to_deploy() + assert block.deploy is True + x_out_deploy = block(x) + assert x_out_deploy.shape == torch.Size((1, 10, 16, 16)) + assert torch.allclose(x_out_not_deploy, x_out_deploy, atol=1e-5, rtol=1e-4) + + # Test RepVGGBlock with in_channels == out_channels, stride = 1 + block = RepVGGBlock(12, 12, stride=1) + block.eval() + x = torch.randn(1, 12, 8, 8) + x_out_not_deploy = block(x) + assert isinstance(block.branch_norm, nn.BatchNorm2d) + assert not hasattr(block, 'branch_reparam') + assert x_out_not_deploy.shape == torch.Size((1, 12, 8, 8)) + block.switch_to_deploy() + assert block.deploy is True + x_out_deploy = block(x) + assert x_out_deploy.shape == torch.Size((1, 12, 8, 8)) + assert torch.allclose(x_out_not_deploy, x_out_deploy, atol=1e-5, rtol=1e-4) + + # Test RepVGGBlock with in_channels == out_channels, stride = 2 + block = RepVGGBlock(16, 16, stride=2) + block.eval() + x = torch.randn(1, 16, 8, 8) + x_out_not_deploy = block(x) + assert block.branch_norm is None + assert x_out_not_deploy.shape == torch.Size((1, 16, 4, 4)) + block.switch_to_deploy() + assert block.deploy is True + x_out_deploy = block(x) + assert x_out_deploy.shape == torch.Size((1, 16, 4, 4)) + assert torch.allclose(x_out_not_deploy, x_out_deploy, atol=1e-5, rtol=1e-4) + + # Test RepVGGBlock with padding == dilation == 2 + block = RepVGGBlock(14, 14, stride=1, padding=2, dilation=2) + block.eval() + x = torch.randn(1, 14, 16, 16) + x_out_not_deploy = block(x) + assert isinstance(block.branch_norm, nn.BatchNorm2d) + assert x_out_not_deploy.shape == torch.Size((1, 14, 16, 16)) + block.switch_to_deploy() + assert block.deploy is True + x_out_deploy = block(x) + assert x_out_deploy.shape == torch.Size((1, 14, 16, 16)) + assert torch.allclose(x_out_not_deploy, x_out_deploy, atol=1e-5, rtol=1e-4) + + # Test RepVGGBlock with groups = 2 + block = RepVGGBlock(4, 4, stride=1, groups=2) + block.eval() + x = torch.randn(1, 4, 5, 6) + x_out_not_deploy = block(x) + assert x_out_not_deploy.shape == torch.Size((1, 4, 5, 6)) + block.switch_to_deploy() + assert block.deploy is True + x_out_deploy = block(x) + assert x_out_deploy.shape == torch.Size((1, 4, 5, 6)) + assert torch.allclose(x_out_not_deploy, x_out_deploy, atol=1e-5, rtol=1e-4) + + # Test RepVGGBlock with se + se_cfg = dict(ratio=4, divisor=1) + block = RepVGGBlock(18, 18, stride=1, se_cfg=se_cfg) + block.train() + x = torch.randn(1, 18, 5, 5) + x_out_not_deploy = block(x) + assert isinstance(block.se_layer, SELayer) + assert x_out_not_deploy.shape == torch.Size((1, 18, 5, 5)) + + # Test RepVGGBlock with checkpoint forward + block = RepVGGBlock(24, 24, stride=1, with_cp=True) + assert block.with_cp + x = torch.randn(1, 24, 7, 7) + x_out = block(x) + assert x_out.shape == torch.Size((1, 24, 7, 7)) + + # Test RepVGGBlock with deploy == True + block = RepVGGBlock(8, 8, stride=1, deploy=True) + assert isinstance(block.branch_reparam, nn.Conv2d) + assert not hasattr(block, 'branch_3x3') + assert not hasattr(block, 'branch_1x1') + assert not hasattr(block, 'branch_norm') + x = torch.randn(1, 8, 16, 16) + x_out = block(x) + assert x_out.shape == torch.Size((1, 8, 16, 16)) + + +def test_repvgg_backbone(): + with pytest.raises(TypeError): + # arch must be str or dict + RepVGG(arch=[4, 6, 16, 1]) + + with pytest.raises(AssertionError): + # arch must in arch_settings + RepVGG(arch='A3') + + with pytest.raises(KeyError): + # arch must have num_blocks and width_factor + arch = dict(num_blocks=[2, 4, 14, 1]) + RepVGG(arch=arch) + + # len(arch['num_blocks']) == len(arch['width_factor']) + # == len(strides) == len(dilations) + with pytest.raises(AssertionError): + arch = dict(num_blocks=[2, 4, 14, 1], width_factor=[0.75, 0.75, 0.75]) + RepVGG(arch=arch) + + # len(strides) must equal to 4 + with pytest.raises(AssertionError): + RepVGG('A0', strides=(1, 1, 1)) + + # len(dilations) must equal to 4 + with pytest.raises(AssertionError): + RepVGG('A0', strides=(1, 1, 1, 1), dilations=(1, 1, 2)) + + # max(out_indices) < len(arch['num_blocks']) + with pytest.raises(AssertionError): + RepVGG('A0', out_indices=(5, )) + + # max(arch['group_idx'].keys()) <= sum(arch['num_blocks']) + with pytest.raises(AssertionError): + arch = dict( + num_blocks=[2, 4, 14, 1], + width_factor=[0.75, 0.75, 0.75], + group_idx={22: 2}) + RepVGG(arch=arch) + + # Test RepVGG norm state + model = RepVGG('A0') + model.train() + assert check_norm_state(model.modules(), True) + + # Test RepVGG with first stage frozen + frozen_stages = 1 + model = RepVGG('A0', frozen_stages=frozen_stages) + model.train() + for param in model.stem.parameters(): + assert param.requires_grad is False + for i in range(0, frozen_stages): + stage_name = model.stages[i] + stage = model.__getattr__(stage_name) + for mod in stage: + if isinstance(mod, _BatchNorm): + assert mod.training is False + for param in stage.parameters(): + assert param.requires_grad is False + + # Test RepVGG with norm_eval + model = RepVGG('A0', norm_eval=True) + model.train() + assert check_norm_state(model.modules(), False) + + # Test RepVGG forward with layer 3 forward + model = RepVGG('A0', out_indices=(3, )) + model.init_weights() + model.eval() + + for m in model.modules(): + if is_norm(m): + assert isinstance(m, _BatchNorm) + + imgs = torch.randn(1, 3, 32, 32) + feat = model(imgs) + assert isinstance(feat, tuple) + assert len(feat) == 1 + assert isinstance(feat[0], torch.Tensor) + assert feat[0].shape == torch.Size((1, 1280, 1, 1)) + + # Test with custom arch + cfg = dict( + num_blocks=[3, 5, 7, 3], + width_factor=[1, 1, 1, 1], + group_layer_map=None, + se_cfg=None, + stem_channels=16) + model = RepVGG(arch=cfg, out_indices=(3, )) + model.eval() + assert model.stem.out_channels == min(16, 64 * 1) + + imgs = torch.randn(1, 3, 32, 32) + feat = model(imgs) + assert isinstance(feat, tuple) + assert len(feat) == 1 + assert isinstance(feat[0], torch.Tensor) + assert feat[0].shape == torch.Size((1, 512, 1, 1)) + + # Test RepVGG forward + model_test_settings = [ + dict(model_name='A0', out_sizes=(48, 96, 192, 1280)), + dict(model_name='A1', out_sizes=(64, 128, 256, 1280)), + dict(model_name='A2', out_sizes=(96, 192, 384, 1408)), + dict(model_name='B0', out_sizes=(64, 128, 256, 1280)), + dict(model_name='B1', out_sizes=(128, 256, 512, 2048)), + dict(model_name='B1g2', out_sizes=(128, 256, 512, 2048)), + dict(model_name='B1g4', out_sizes=(128, 256, 512, 2048)), + dict(model_name='B2', out_sizes=(160, 320, 640, 2560)), + dict(model_name='B2g2', out_sizes=(160, 320, 640, 2560)), + dict(model_name='B2g4', out_sizes=(160, 320, 640, 2560)), + dict(model_name='B3', out_sizes=(192, 384, 768, 2560)), + dict(model_name='B3g2', out_sizes=(192, 384, 768, 2560)), + dict(model_name='B3g4', out_sizes=(192, 384, 768, 2560)), + dict(model_name='D2se', out_sizes=(160, 320, 640, 2560)) + ] + + choose_models = ['A0', 'B1', 'B1g2'] + # Test RepVGG model forward + for model_test_setting in model_test_settings: + if model_test_setting['model_name'] not in choose_models: + continue + model = RepVGG( + model_test_setting['model_name'], out_indices=(0, 1, 2, 3)) + model.init_weights() + model.eval() + + # Test Norm + for m in model.modules(): + if is_norm(m): + assert isinstance(m, _BatchNorm) + + imgs = torch.randn(1, 3, 32, 32) + feat = model(imgs) + assert feat[0].shape == torch.Size( + (1, model_test_setting['out_sizes'][0], 8, 8)) + assert feat[1].shape == torch.Size( + (1, model_test_setting['out_sizes'][1], 4, 4)) + assert feat[2].shape == torch.Size( + (1, model_test_setting['out_sizes'][2], 2, 2)) + assert feat[3].shape == torch.Size( + (1, model_test_setting['out_sizes'][3], 1, 1)) + + # Test eval of "train" mode and "deploy" mode + gap = nn.AdaptiveAvgPool2d(output_size=(1)) + fc = nn.Linear(model_test_setting['out_sizes'][3], 10) + model.eval() + feat = model(imgs) + pred = fc(gap(feat[3]).flatten(1)) + model.switch_to_deploy() + for m in model.modules(): + if isinstance(m, RepVGGBlock): + assert m.deploy is True + feat_deploy = model(imgs) + pred_deploy = fc(gap(feat_deploy[3]).flatten(1)) + for i in range(4): + torch.allclose(feat[i], feat_deploy[i]) + torch.allclose(pred, pred_deploy) + + # Test RepVGG forward with add_ppf + model = RepVGG('A0', out_indices=(3, ), add_ppf=True) + model.init_weights() + model.train() + + for m in model.modules(): + if is_norm(m): + assert isinstance(m, _BatchNorm) + + imgs = torch.randn(1, 3, 64, 64) + feat = model(imgs) + assert isinstance(feat, tuple) + assert len(feat) == 1 + assert isinstance(feat[0], torch.Tensor) + assert feat[0].shape == torch.Size((1, 1280, 2, 2)) + + # Test RepVGG forward with 'stem_channels' not in arch + arch = dict( + num_blocks=[2, 4, 14, 1], + width_factor=[0.75, 0.75, 0.75, 2.5], + group_layer_map=None, + se_cfg=None) + model = RepVGG(arch, add_ppf=True) + model.stem.in_channels = min(64, 64 * 0.75) + model.init_weights() + model.train() + + for m in model.modules(): + if is_norm(m): + assert isinstance(m, _BatchNorm) + + imgs = torch.randn(1, 3, 64, 64) + feat = model(imgs) + assert isinstance(feat, tuple) + assert len(feat) == 1 + assert isinstance(feat[0], torch.Tensor) + assert feat[0].shape == torch.Size((1, 1280, 2, 2)) + + +def test_repvgg_load(): + # Test output before and load from deploy checkpoint + model = RepVGG('A1', out_indices=(0, 1, 2, 3)) + inputs = torch.randn((1, 3, 32, 32)) + ckpt_path = os.path.join(tempfile.gettempdir(), 'ckpt.pth') + model.switch_to_deploy() + model.eval() + outputs = model(inputs) + + model_deploy = RepVGG('A1', out_indices=(0, 1, 2, 3), deploy=True) + save_checkpoint(model, ckpt_path) + load_checkpoint(model_deploy, ckpt_path, strict=True) + + outputs_load = model_deploy(inputs) + for feat, feat_load in zip(outputs, outputs_load): + assert torch.allclose(feat, feat_load) diff --git a/openmmlab_test/mmclassification-0.24.1/tests/test_models/test_backbones/test_res2net.py b/openmmlab_test/mmclassification-0.24.1/tests/test_models/test_backbones/test_res2net.py new file mode 100644 index 00000000..173d3e62 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/tests/test_models/test_backbones/test_res2net.py @@ -0,0 +1,71 @@ +# Copyright (c) OpenMMLab. All rights reserved. +import pytest +import torch +from mmcv.utils.parrots_wrapper import _BatchNorm + +from mmcls.models.backbones import Res2Net + + +def check_norm_state(modules, train_state): + """Check if norm layer is in correct train state.""" + for mod in modules: + if isinstance(mod, _BatchNorm): + if mod.training != train_state: + return False + return True + + +def test_resnet_cifar(): + # Only support depth 50, 101 and 152 + with pytest.raises(KeyError): + Res2Net(depth=18) + + # test the feature map size when depth is 50 + # and deep_stem=True, avg_down=True + model = Res2Net( + depth=50, out_indices=(0, 1, 2, 3), deep_stem=True, avg_down=True) + model.init_weights() + model.train() + + imgs = torch.randn(1, 3, 224, 224) + feat = model.stem(imgs) + assert feat.shape == (1, 64, 112, 112) + feat = model(imgs) + assert len(feat) == 4 + assert feat[0].shape == (1, 256, 56, 56) + assert feat[1].shape == (1, 512, 28, 28) + assert feat[2].shape == (1, 1024, 14, 14) + assert feat[3].shape == (1, 2048, 7, 7) + + # test the feature map size when depth is 101 + # and deep_stem=False, avg_down=False + model = Res2Net( + depth=101, out_indices=(0, 1, 2, 3), deep_stem=False, avg_down=False) + model.init_weights() + model.train() + + imgs = torch.randn(1, 3, 224, 224) + feat = model.conv1(imgs) + assert feat.shape == (1, 64, 112, 112) + feat = model(imgs) + assert len(feat) == 4 + assert feat[0].shape == (1, 256, 56, 56) + assert feat[1].shape == (1, 512, 28, 28) + assert feat[2].shape == (1, 1024, 14, 14) + assert feat[3].shape == (1, 2048, 7, 7) + + # Test Res2Net with first stage frozen + frozen_stages = 1 + model = Res2Net(depth=50, frozen_stages=frozen_stages, deep_stem=False) + model.init_weights() + model.train() + assert check_norm_state([model.norm1], False) + for param in model.conv1.parameters(): + assert param.requires_grad is False + for i in range(1, frozen_stages + 1): + layer = getattr(model, f'layer{i}') + for mod in layer.modules(): + if isinstance(mod, _BatchNorm): + assert mod.training is False + for param in layer.parameters(): + assert param.requires_grad is False diff --git a/openmmlab_test/mmclassification-speed-benchmark/tests/test_backbones/test_resnest.py b/openmmlab_test/mmclassification-0.24.1/tests/test_models/test_backbones/test_resnest.py similarity index 96% rename from openmmlab_test/mmclassification-speed-benchmark/tests/test_backbones/test_resnest.py rename to openmmlab_test/mmclassification-0.24.1/tests/test_models/test_backbones/test_resnest.py index 41d82f1b..7a0b250d 100644 --- a/openmmlab_test/mmclassification-speed-benchmark/tests/test_backbones/test_resnest.py +++ b/openmmlab_test/mmclassification-0.24.1/tests/test_models/test_backbones/test_resnest.py @@ -1,3 +1,4 @@ +# Copyright (c) OpenMMLab. All rights reserved. import pytest import torch diff --git a/openmmlab_test/mmclassification-speed-benchmark/tests/test_backbones/test_resnet.py b/openmmlab_test/mmclassification-0.24.1/tests/test_models/test_backbones/test_resnet.py similarity index 91% rename from openmmlab_test/mmclassification-speed-benchmark/tests/test_backbones/test_resnet.py rename to openmmlab_test/mmclassification-0.24.1/tests/test_models/test_backbones/test_resnet.py index 5adc5d4e..8ff8bc8f 100644 --- a/openmmlab_test/mmclassification-speed-benchmark/tests/test_backbones/test_resnet.py +++ b/openmmlab_test/mmclassification-0.24.1/tests/test_models/test_backbones/test_resnet.py @@ -1,10 +1,11 @@ +# Copyright (c) OpenMMLab. All rights reserved. import pytest import torch import torch.nn as nn from mmcv.cnn import ConvModule from mmcv.utils.parrots_wrapper import _BatchNorm -from mmcls.models.backbones import ResNet, ResNetV1d +from mmcls.models.backbones import ResNet, ResNetV1c, ResNetV1d from mmcls.models.backbones.resnet import (BasicBlock, Bottleneck, ResLayer, get_expansion) @@ -455,6 +456,19 @@ def test_resnet(): assert feat[2].shape == (1, 1024, 14, 14) assert feat[3].shape == (1, 2048, 7, 7) + # Test ResNet50 with DropPath forward + model = ResNet(50, out_indices=(0, 1, 2, 3), drop_path_rate=0.5) + model.init_weights() + model.train() + + imgs = torch.randn(1, 3, 224, 224) + feat = model(imgs) + assert len(feat) == 4 + assert feat[0].shape == (1, 256, 56, 56) + assert feat[1].shape == (1, 512, 28, 28) + assert feat[2].shape == (1, 1024, 14, 14) + assert feat[3].shape == (1, 2048, 7, 7) + # Test ResNet50 with layers 1, 2, 3 out forward model = ResNet(50, out_indices=(0, 1, 2)) model.init_weights() @@ -474,7 +488,8 @@ def test_resnet(): imgs = torch.randn(1, 3, 224, 224) feat = model(imgs) - assert feat.shape == (1, 2048, 7, 7) + assert len(feat) == 1 + assert feat[0].shape == (1, 2048, 7, 7) # Test ResNet50 with checkpoint forward model = ResNet(50, out_indices=(0, 1, 2, 3), with_cp=True) @@ -511,6 +526,45 @@ def test_resnet(): assert not all_zeros(m.norm2) +def test_resnet_v1c(): + model = ResNetV1c(depth=50, out_indices=(0, 1, 2, 3)) + model.init_weights() + model.train() + + assert len(model.stem) == 3 + for i in range(3): + assert isinstance(model.stem[i], ConvModule) + + imgs = torch.randn(1, 3, 224, 224) + feat = model.stem(imgs) + assert feat.shape == (1, 64, 112, 112) + feat = model(imgs) + assert len(feat) == 4 + assert feat[0].shape == (1, 256, 56, 56) + assert feat[1].shape == (1, 512, 28, 28) + assert feat[2].shape == (1, 1024, 14, 14) + assert feat[3].shape == (1, 2048, 7, 7) + + # Test ResNet50V1d with first stage frozen + frozen_stages = 1 + model = ResNetV1d(depth=50, frozen_stages=frozen_stages) + assert len(model.stem) == 3 + for i in range(3): + assert isinstance(model.stem[i], ConvModule) + model.init_weights() + model.train() + check_norm_state(model.stem, False) + for param in model.stem.parameters(): + assert param.requires_grad is False + for i in range(1, frozen_stages + 1): + layer = getattr(model, f'layer{i}') + for mod in layer.modules(): + if isinstance(mod, _BatchNorm): + assert mod.training is False + for param in layer.parameters(): + assert param.requires_grad is False + + def test_resnet_v1d(): model = ResNetV1d(depth=50, out_indices=(0, 1, 2, 3)) model.init_weights() diff --git a/openmmlab_test/mmclassification-speed-benchmark/tests/test_backbones/test_resnet_cifar.py b/openmmlab_test/mmclassification-0.24.1/tests/test_models/test_backbones/test_resnet_cifar.py similarity index 97% rename from openmmlab_test/mmclassification-speed-benchmark/tests/test_backbones/test_resnet_cifar.py rename to openmmlab_test/mmclassification-0.24.1/tests/test_models/test_backbones/test_resnet_cifar.py index 533c2e05..af7bba61 100644 --- a/openmmlab_test/mmclassification-speed-benchmark/tests/test_backbones/test_resnet_cifar.py +++ b/openmmlab_test/mmclassification-0.24.1/tests/test_models/test_backbones/test_resnet_cifar.py @@ -1,3 +1,4 @@ +# Copyright (c) OpenMMLab. All rights reserved. import pytest import torch from mmcv.utils.parrots_wrapper import _BatchNorm diff --git a/openmmlab_test/mmclassification-speed-benchmark/tests/test_backbones/test_resnext.py b/openmmlab_test/mmclassification-0.24.1/tests/test_models/test_backbones/test_resnext.py similarity index 93% rename from openmmlab_test/mmclassification-speed-benchmark/tests/test_backbones/test_resnext.py rename to openmmlab_test/mmclassification-0.24.1/tests/test_models/test_backbones/test_resnext.py index ee9de0bd..4ee15f93 100644 --- a/openmmlab_test/mmclassification-speed-benchmark/tests/test_backbones/test_resnext.py +++ b/openmmlab_test/mmclassification-0.24.1/tests/test_models/test_backbones/test_resnext.py @@ -1,3 +1,4 @@ +# Copyright (c) OpenMMLab. All rights reserved. import pytest import torch @@ -56,4 +57,5 @@ def test_resnext(): imgs = torch.randn(1, 3, 224, 224) feat = model(imgs) - assert feat.shape == torch.Size([1, 2048, 7, 7]) + assert len(feat) == 1 + assert feat[0].shape == torch.Size([1, 2048, 7, 7]) diff --git a/openmmlab_test/mmclassification-speed-benchmark/tests/test_backbones/test_seresnet.py b/openmmlab_test/mmclassification-0.24.1/tests/test_models/test_backbones/test_seresnet.py similarity index 98% rename from openmmlab_test/mmclassification-speed-benchmark/tests/test_backbones/test_seresnet.py rename to openmmlab_test/mmclassification-0.24.1/tests/test_models/test_backbones/test_seresnet.py index 557270b7..32670209 100644 --- a/openmmlab_test/mmclassification-speed-benchmark/tests/test_backbones/test_seresnet.py +++ b/openmmlab_test/mmclassification-0.24.1/tests/test_models/test_backbones/test_seresnet.py @@ -1,3 +1,4 @@ +# Copyright (c) OpenMMLab. All rights reserved. import pytest import torch from torch.nn.modules import AvgPool2d @@ -210,7 +211,8 @@ def test_seresnet(): imgs = torch.randn(1, 3, 224, 224) feat = model(imgs) - assert feat.shape == torch.Size([1, 2048, 7, 7]) + assert len(feat) == 1 + assert feat[0].shape == torch.Size([1, 2048, 7, 7]) # Test SEResNet50 with checkpoint forward model = SEResNet(50, out_indices=(0, 1, 2, 3), with_cp=True) diff --git a/openmmlab_test/mmclassification-speed-benchmark/tests/test_backbones/test_seresnext.py b/openmmlab_test/mmclassification-0.24.1/tests/test_models/test_backbones/test_seresnext.py similarity index 94% rename from openmmlab_test/mmclassification-speed-benchmark/tests/test_backbones/test_seresnext.py rename to openmmlab_test/mmclassification-0.24.1/tests/test_models/test_backbones/test_seresnext.py index bb5e4948..2431c070 100644 --- a/openmmlab_test/mmclassification-speed-benchmark/tests/test_backbones/test_seresnext.py +++ b/openmmlab_test/mmclassification-0.24.1/tests/test_models/test_backbones/test_seresnext.py @@ -1,3 +1,4 @@ +# Copyright (c) OpenMMLab. All rights reserved. import pytest import torch @@ -69,4 +70,5 @@ def test_seresnext(): imgs = torch.randn(1, 3, 224, 224) feat = model(imgs) - assert feat.shape == torch.Size([1, 2048, 7, 7]) + assert len(feat) == 1 + assert feat[0].shape == torch.Size([1, 2048, 7, 7]) diff --git a/openmmlab_test/mmclassification-speed-benchmark/tests/test_backbones/test_shufflenet_v1.py b/openmmlab_test/mmclassification-0.24.1/tests/test_models/test_backbones/test_shufflenet_v1.py similarity index 97% rename from openmmlab_test/mmclassification-speed-benchmark/tests/test_backbones/test_shufflenet_v1.py rename to openmmlab_test/mmclassification-0.24.1/tests/test_models/test_backbones/test_shufflenet_v1.py index 5ef267e6..97beee7a 100644 --- a/openmmlab_test/mmclassification-speed-benchmark/tests/test_backbones/test_shufflenet_v1.py +++ b/openmmlab_test/mmclassification-0.24.1/tests/test_models/test_backbones/test_shufflenet_v1.py @@ -1,3 +1,4 @@ +# Copyright (c) OpenMMLab. All rights reserved. import pytest import torch from torch.nn.modules import GroupNorm @@ -227,8 +228,9 @@ def test_shufflenetv1_backbone(): imgs = torch.randn(1, 3, 224, 224) feat = model(imgs) - assert isinstance(feat, torch.Tensor) - assert feat.shape == torch.Size((1, 960, 7, 7)) + assert len(feat) == 1 + assert isinstance(feat[0], torch.Tensor) + assert feat[0].shape == torch.Size((1, 960, 7, 7)) # Test ShuffleNetV1 forward with checkpoint forward model = ShuffleNetV1(groups=3, with_cp=True) diff --git a/openmmlab_test/mmclassification-speed-benchmark/tests/test_backbones/test_shufflenet_v2.py b/openmmlab_test/mmclassification-0.24.1/tests/test_models/test_backbones/test_shufflenet_v2.py similarity index 97% rename from openmmlab_test/mmclassification-speed-benchmark/tests/test_backbones/test_shufflenet_v2.py rename to openmmlab_test/mmclassification-0.24.1/tests/test_models/test_backbones/test_shufflenet_v2.py index ee564faf..b7ab4955 100644 --- a/openmmlab_test/mmclassification-speed-benchmark/tests/test_backbones/test_shufflenet_v2.py +++ b/openmmlab_test/mmclassification-0.24.1/tests/test_models/test_backbones/test_shufflenet_v2.py @@ -1,3 +1,4 @@ +# Copyright (c) OpenMMLab. All rights reserved. import pytest import torch from torch.nn.modules import GroupNorm @@ -178,8 +179,9 @@ def test_shufflenetv2_backbone(): imgs = torch.randn(1, 3, 224, 224) feat = model(imgs) - assert isinstance(feat, torch.Tensor) - assert feat.shape == torch.Size((1, 464, 7, 7)) + assert len(feat) == 1 + assert isinstance(feat[0], torch.Tensor) + assert feat[0].shape == torch.Size((1, 464, 7, 7)) # Test ShuffleNetV2 forward with layers 1 2 forward model = ShuffleNetV2(widen_factor=1.0, out_indices=(1, 2)) diff --git a/openmmlab_test/mmclassification-0.24.1/tests/test_models/test_backbones/test_swin_transformer.py b/openmmlab_test/mmclassification-0.24.1/tests/test_models/test_backbones/test_swin_transformer.py new file mode 100644 index 00000000..33947304 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/tests/test_models/test_backbones/test_swin_transformer.py @@ -0,0 +1,255 @@ +# Copyright (c) OpenMMLab. All rights reserved. +import math +import os +import tempfile +from copy import deepcopy +from itertools import chain +from unittest import TestCase + +import torch +from mmcv.runner import load_checkpoint, save_checkpoint +from mmcv.utils.parrots_wrapper import _BatchNorm + +from mmcls.models.backbones import SwinTransformer +from mmcls.models.backbones.swin_transformer import SwinBlock +from .utils import timm_resize_pos_embed + + +def check_norm_state(modules, train_state): + """Check if norm layer is in correct train state.""" + for mod in modules: + if isinstance(mod, _BatchNorm): + if mod.training != train_state: + return False + return True + + +class TestSwinTransformer(TestCase): + + def setUp(self): + self.cfg = dict( + arch='b', img_size=224, patch_size=4, drop_path_rate=0.1) + + def test_arch(self): + # Test invalid default arch + with self.assertRaisesRegex(AssertionError, 'not in default archs'): + cfg = deepcopy(self.cfg) + cfg['arch'] = 'unknown' + SwinTransformer(**cfg) + + # Test invalid custom arch + with self.assertRaisesRegex(AssertionError, 'Custom arch needs'): + cfg = deepcopy(self.cfg) + cfg['arch'] = { + 'embed_dims': 96, + 'num_heads': [3, 6, 12, 16], + } + SwinTransformer(**cfg) + + # Test custom arch + cfg = deepcopy(self.cfg) + depths = [2, 2, 4, 2] + num_heads = [6, 12, 6, 12] + cfg['arch'] = { + 'embed_dims': 256, + 'depths': depths, + 'num_heads': num_heads + } + model = SwinTransformer(**cfg) + for i, stage in enumerate(model.stages): + self.assertEqual(stage.embed_dims, 256 * (2**i)) + self.assertEqual(len(stage.blocks), depths[i]) + self.assertEqual(stage.blocks[0].attn.w_msa.num_heads, + num_heads[i]) + + def test_init_weights(self): + # test weight init cfg + cfg = deepcopy(self.cfg) + cfg['use_abs_pos_embed'] = True + cfg['init_cfg'] = [ + dict( + type='Kaiming', + layer='Conv2d', + mode='fan_in', + nonlinearity='linear') + ] + model = SwinTransformer(**cfg) + ori_weight = model.patch_embed.projection.weight.clone().detach() + # The pos_embed is all zero before initialize + self.assertTrue( + torch.allclose(model.absolute_pos_embed, torch.tensor(0.))) + + model.init_weights() + initialized_weight = model.patch_embed.projection.weight + self.assertFalse(torch.allclose(ori_weight, initialized_weight)) + self.assertFalse( + torch.allclose(model.absolute_pos_embed, torch.tensor(0.))) + + pretrain_pos_embed = model.absolute_pos_embed.clone().detach() + + tmpdir = tempfile.gettempdir() + # Save v3 checkpoints + checkpoint_v2 = os.path.join(tmpdir, 'v3.pth') + save_checkpoint(model, checkpoint_v2) + # Save v1 checkpoints + setattr(model, 'norm', model.norm3) + setattr(model.stages[0].blocks[1].attn, 'attn_mask', + torch.zeros(64, 49, 49)) + model._version = 1 + del model.norm3 + checkpoint_v1 = os.path.join(tmpdir, 'v1.pth') + save_checkpoint(model, checkpoint_v1) + + # test load v1 checkpoint + cfg = deepcopy(self.cfg) + cfg['use_abs_pos_embed'] = True + model = SwinTransformer(**cfg) + load_checkpoint(model, checkpoint_v1, strict=True) + + # test load v3 checkpoint + cfg = deepcopy(self.cfg) + cfg['use_abs_pos_embed'] = True + model = SwinTransformer(**cfg) + load_checkpoint(model, checkpoint_v2, strict=True) + + # test load v3 checkpoint with different img_size + cfg = deepcopy(self.cfg) + cfg['img_size'] = 384 + cfg['use_abs_pos_embed'] = True + model = SwinTransformer(**cfg) + load_checkpoint(model, checkpoint_v2, strict=True) + resized_pos_embed = timm_resize_pos_embed( + pretrain_pos_embed, model.absolute_pos_embed, num_tokens=0) + self.assertTrue( + torch.allclose(model.absolute_pos_embed, resized_pos_embed)) + + os.remove(checkpoint_v1) + os.remove(checkpoint_v2) + + def test_forward(self): + imgs = torch.randn(1, 3, 224, 224) + + cfg = deepcopy(self.cfg) + model = SwinTransformer(**cfg) + outs = model(imgs) + self.assertIsInstance(outs, tuple) + self.assertEqual(len(outs), 1) + feat = outs[-1] + self.assertEqual(feat.shape, (1, 1024, 7, 7)) + + # test with window_size=12 + cfg = deepcopy(self.cfg) + cfg['window_size'] = 12 + model = SwinTransformer(**cfg) + outs = model(torch.randn(1, 3, 384, 384)) + self.assertIsInstance(outs, tuple) + self.assertEqual(len(outs), 1) + feat = outs[-1] + self.assertEqual(feat.shape, (1, 1024, 12, 12)) + with self.assertRaisesRegex(AssertionError, r'the window size \(12\)'): + model(torch.randn(1, 3, 224, 224)) + + # test with pad_small_map=True + cfg = deepcopy(self.cfg) + cfg['window_size'] = 12 + cfg['pad_small_map'] = True + model = SwinTransformer(**cfg) + outs = model(torch.randn(1, 3, 224, 224)) + self.assertIsInstance(outs, tuple) + self.assertEqual(len(outs), 1) + feat = outs[-1] + self.assertEqual(feat.shape, (1, 1024, 7, 7)) + + # test multiple output indices + cfg = deepcopy(self.cfg) + cfg['out_indices'] = (0, 1, 2, 3) + model = SwinTransformer(**cfg) + outs = model(imgs) + self.assertIsInstance(outs, tuple) + self.assertEqual(len(outs), 4) + for stride, out in zip([1, 2, 4, 8], outs): + self.assertEqual(out.shape, + (1, 128 * stride, 56 // stride, 56 // stride)) + + # test with checkpoint forward + cfg = deepcopy(self.cfg) + cfg['with_cp'] = True + model = SwinTransformer(**cfg) + for m in model.modules(): + if isinstance(m, SwinBlock): + self.assertTrue(m.with_cp) + model.init_weights() + model.train() + + outs = model(imgs) + self.assertIsInstance(outs, tuple) + self.assertEqual(len(outs), 1) + feat = outs[-1] + self.assertEqual(feat.shape, (1, 1024, 7, 7)) + + # test with dynamic input shape + imgs1 = torch.randn(1, 3, 224, 224) + imgs2 = torch.randn(1, 3, 256, 256) + imgs3 = torch.randn(1, 3, 256, 309) + cfg = deepcopy(self.cfg) + model = SwinTransformer(**cfg) + for imgs in [imgs1, imgs2, imgs3]: + outs = model(imgs) + self.assertIsInstance(outs, tuple) + self.assertEqual(len(outs), 1) + feat = outs[-1] + expect_feat_shape = (math.ceil(imgs.shape[2] / 32), + math.ceil(imgs.shape[3] / 32)) + self.assertEqual(feat.shape, (1, 1024, *expect_feat_shape)) + + def test_structure(self): + # test drop_path_rate decay + cfg = deepcopy(self.cfg) + cfg['drop_path_rate'] = 0.2 + model = SwinTransformer(**cfg) + depths = model.arch_settings['depths'] + blocks = chain(*[stage.blocks for stage in model.stages]) + for i, block in enumerate(blocks): + expect_prob = 0.2 / (sum(depths) - 1) * i + self.assertAlmostEqual(block.ffn.dropout_layer.drop_prob, + expect_prob) + self.assertAlmostEqual(block.attn.drop.drop_prob, expect_prob) + + # test Swin-Transformer with norm_eval=True + cfg = deepcopy(self.cfg) + cfg['norm_eval'] = True + cfg['norm_cfg'] = dict(type='BN') + cfg['stage_cfgs'] = dict(block_cfgs=dict(norm_cfg=dict(type='BN'))) + model = SwinTransformer(**cfg) + model.init_weights() + model.train() + self.assertTrue(check_norm_state(model.modules(), False)) + + # test Swin-Transformer with first stage frozen. + cfg = deepcopy(self.cfg) + frozen_stages = 0 + cfg['frozen_stages'] = frozen_stages + cfg['out_indices'] = (0, 1, 2, 3) + model = SwinTransformer(**cfg) + model.init_weights() + model.train() + + # the patch_embed and first stage should not require grad. + self.assertFalse(model.patch_embed.training) + for param in model.patch_embed.parameters(): + self.assertFalse(param.requires_grad) + for i in range(frozen_stages + 1): + stage = model.stages[i] + for param in stage.parameters(): + self.assertFalse(param.requires_grad) + for param in model.norm0.parameters(): + self.assertFalse(param.requires_grad) + + # the second stage should require grad. + for i in range(frozen_stages + 1, 4): + stage = model.stages[i] + for param in stage.parameters(): + self.assertTrue(param.requires_grad) + norm = getattr(model, f'norm{i}') + for param in norm.parameters(): + self.assertTrue(param.requires_grad) diff --git a/openmmlab_test/mmclassification-0.24.1/tests/test_models/test_backbones/test_swin_transformer_v2.py b/openmmlab_test/mmclassification-0.24.1/tests/test_models/test_backbones/test_swin_transformer_v2.py new file mode 100644 index 00000000..1fd43140 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/tests/test_models/test_backbones/test_swin_transformer_v2.py @@ -0,0 +1,243 @@ +# Copyright (c) OpenMMLab. All rights reserved. +import math +import os +import tempfile +from copy import deepcopy +from itertools import chain +from unittest import TestCase + +import torch +from mmcv.runner import load_checkpoint, save_checkpoint +from mmcv.utils.parrots_wrapper import _BatchNorm + +from mmcls.models.backbones import SwinTransformerV2 +from mmcls.models.backbones.swin_transformer import SwinBlock +from .utils import timm_resize_pos_embed + + +def check_norm_state(modules, train_state): + """Check if norm layer is in correct train state.""" + for mod in modules: + if isinstance(mod, _BatchNorm): + if mod.training != train_state: + return False + return True + + +class TestSwinTransformerV2(TestCase): + + def setUp(self): + self.cfg = dict( + arch='b', img_size=256, patch_size=4, drop_path_rate=0.1) + + def test_arch(self): + # Test invalid default arch + with self.assertRaisesRegex(AssertionError, 'not in default archs'): + cfg = deepcopy(self.cfg) + cfg['arch'] = 'unknown' + SwinTransformerV2(**cfg) + + # Test invalid custom arch + with self.assertRaisesRegex(AssertionError, 'Custom arch needs'): + cfg = deepcopy(self.cfg) + cfg['arch'] = { + 'embed_dims': 96, + 'num_heads': [3, 6, 12, 16], + } + SwinTransformerV2(**cfg) + + # Test custom arch + cfg = deepcopy(self.cfg) + depths = [2, 2, 6, 2] + num_heads = [6, 12, 6, 12] + cfg['arch'] = { + 'embed_dims': 256, + 'depths': depths, + 'num_heads': num_heads, + 'extra_norm_every_n_blocks': 2 + } + model = SwinTransformerV2(**cfg) + for i, stage in enumerate(model.stages): + self.assertEqual(stage.out_channels, 256 * (2**i)) + self.assertEqual(len(stage.blocks), depths[i]) + self.assertEqual(stage.blocks[0].attn.w_msa.num_heads, + num_heads[i]) + self.assertIsInstance(model.stages[2].blocks[5], torch.nn.Module) + + def test_init_weights(self): + # test weight init cfg + cfg = deepcopy(self.cfg) + cfg['use_abs_pos_embed'] = True + cfg['init_cfg'] = [ + dict( + type='Kaiming', + layer='Conv2d', + mode='fan_in', + nonlinearity='linear') + ] + model = SwinTransformerV2(**cfg) + ori_weight = model.patch_embed.projection.weight.clone().detach() + # The pos_embed is all zero before initialize + self.assertTrue( + torch.allclose(model.absolute_pos_embed, torch.tensor(0.))) + + model.init_weights() + initialized_weight = model.patch_embed.projection.weight + self.assertFalse(torch.allclose(ori_weight, initialized_weight)) + self.assertFalse( + torch.allclose(model.absolute_pos_embed, torch.tensor(0.))) + + pretrain_pos_embed = model.absolute_pos_embed.clone().detach() + + tmpdir = tempfile.TemporaryDirectory() + # Save checkpoints + checkpoint = os.path.join(tmpdir.name, 'checkpoint.pth') + save_checkpoint(model, checkpoint) + + # test load checkpoint + cfg = deepcopy(self.cfg) + cfg['use_abs_pos_embed'] = True + model = SwinTransformerV2(**cfg) + load_checkpoint(model, checkpoint, strict=False) + + # test load checkpoint with different img_size + cfg = deepcopy(self.cfg) + cfg['img_size'] = 384 + cfg['use_abs_pos_embed'] = True + model = SwinTransformerV2(**cfg) + load_checkpoint(model, checkpoint, strict=False) + resized_pos_embed = timm_resize_pos_embed( + pretrain_pos_embed, model.absolute_pos_embed, num_tokens=0) + self.assertTrue( + torch.allclose(model.absolute_pos_embed, resized_pos_embed)) + + tmpdir.cleanup() + + def test_forward(self): + imgs = torch.randn(1, 3, 256, 256) + + cfg = deepcopy(self.cfg) + model = SwinTransformerV2(**cfg) + outs = model(imgs) + self.assertIsInstance(outs, tuple) + self.assertEqual(len(outs), 1) + feat = outs[-1] + self.assertEqual(feat.shape, (1, 1024, 8, 8)) + + # test with window_size=12 + cfg = deepcopy(self.cfg) + cfg['window_size'] = 12 + model = SwinTransformerV2(**cfg) + outs = model(torch.randn(1, 3, 384, 384)) + self.assertIsInstance(outs, tuple) + self.assertEqual(len(outs), 1) + feat = outs[-1] + self.assertEqual(feat.shape, (1, 1024, 12, 12)) + with self.assertRaisesRegex(AssertionError, r'the window size \(12\)'): + model(torch.randn(1, 3, 256, 256)) + + # test with pad_small_map=True + cfg = deepcopy(self.cfg) + cfg['window_size'] = 12 + cfg['pad_small_map'] = True + model = SwinTransformerV2(**cfg) + outs = model(torch.randn(1, 3, 256, 256)) + self.assertIsInstance(outs, tuple) + self.assertEqual(len(outs), 1) + feat = outs[-1] + self.assertEqual(feat.shape, (1, 1024, 8, 8)) + + # test multiple output indices + cfg = deepcopy(self.cfg) + cfg['out_indices'] = (0, 1, 2, 3) + model = SwinTransformerV2(**cfg) + outs = model(imgs) + self.assertIsInstance(outs, tuple) + self.assertEqual(len(outs), 4) + for stride, out in zip([1, 2, 4, 8], outs): + self.assertEqual(out.shape, + (1, 128 * stride, 64 // stride, 64 // stride)) + + # test with checkpoint forward + cfg = deepcopy(self.cfg) + cfg['with_cp'] = True + model = SwinTransformerV2(**cfg) + for m in model.modules(): + if isinstance(m, SwinBlock): + self.assertTrue(m.with_cp) + model.init_weights() + model.train() + + outs = model(imgs) + self.assertIsInstance(outs, tuple) + self.assertEqual(len(outs), 1) + feat = outs[-1] + self.assertEqual(feat.shape, (1, 1024, 8, 8)) + + # test with dynamic input shape + imgs1 = torch.randn(1, 3, 224, 224) + imgs2 = torch.randn(1, 3, 256, 256) + imgs3 = torch.randn(1, 3, 256, 309) + cfg = deepcopy(self.cfg) + cfg['pad_small_map'] = True + model = SwinTransformerV2(**cfg) + for imgs in [imgs1, imgs2, imgs3]: + outs = model(imgs) + self.assertIsInstance(outs, tuple) + self.assertEqual(len(outs), 1) + feat = outs[-1] + expect_feat_shape = (math.ceil(imgs.shape[2] / 32), + math.ceil(imgs.shape[3] / 32)) + self.assertEqual(feat.shape, (1, 1024, *expect_feat_shape)) + + def test_structure(self): + # test drop_path_rate decay + cfg = deepcopy(self.cfg) + cfg['drop_path_rate'] = 0.2 + model = SwinTransformerV2(**cfg) + depths = model.arch_settings['depths'] + blocks = chain(*[stage.blocks for stage in model.stages]) + for i, block in enumerate(blocks): + expect_prob = 0.2 / (sum(depths) - 1) * i + self.assertAlmostEqual(block.ffn.dropout_layer.drop_prob, + expect_prob) + self.assertAlmostEqual(block.attn.drop.drop_prob, expect_prob) + + # test Swin-Transformer V2 with norm_eval=True + cfg = deepcopy(self.cfg) + cfg['norm_eval'] = True + cfg['norm_cfg'] = dict(type='BN') + cfg['stage_cfgs'] = dict(block_cfgs=dict(norm_cfg=dict(type='BN'))) + model = SwinTransformerV2(**cfg) + model.init_weights() + model.train() + self.assertTrue(check_norm_state(model.modules(), False)) + + # test Swin-Transformer V2 with first stage frozen. + cfg = deepcopy(self.cfg) + frozen_stages = 0 + cfg['frozen_stages'] = frozen_stages + cfg['out_indices'] = (0, 1, 2, 3) + model = SwinTransformerV2(**cfg) + model.init_weights() + model.train() + + # the patch_embed and first stage should not require grad. + self.assertFalse(model.patch_embed.training) + for param in model.patch_embed.parameters(): + self.assertFalse(param.requires_grad) + for i in range(frozen_stages + 1): + stage = model.stages[i] + for param in stage.parameters(): + self.assertFalse(param.requires_grad) + for param in model.norm0.parameters(): + self.assertFalse(param.requires_grad) + + # the second stage should require grad. + for i in range(frozen_stages + 1, 4): + stage = model.stages[i] + for param in stage.parameters(): + self.assertTrue(param.requires_grad) + norm = getattr(model, f'norm{i}') + for param in norm.parameters(): + self.assertTrue(param.requires_grad) diff --git a/openmmlab_test/mmclassification-0.24.1/tests/test_models/test_backbones/test_t2t_vit.py b/openmmlab_test/mmclassification-0.24.1/tests/test_models/test_backbones/test_t2t_vit.py new file mode 100644 index 00000000..f3103c65 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/tests/test_models/test_backbones/test_t2t_vit.py @@ -0,0 +1,188 @@ +# Copyright (c) OpenMMLab. All rights reserved. +import math +import os +import tempfile +from copy import deepcopy +from unittest import TestCase + +import numpy as np +import torch +from mmcv.runner import load_checkpoint, save_checkpoint + +from mmcls.models.backbones import T2T_ViT +from mmcls.models.backbones.t2t_vit import get_sinusoid_encoding +from .utils import timm_resize_pos_embed + + +class TestT2TViT(TestCase): + + def setUp(self): + self.cfg = dict( + img_size=224, + in_channels=3, + embed_dims=384, + t2t_cfg=dict( + token_dims=64, + use_performer=False, + ), + num_layers=14, + drop_path_rate=0.1) + + def test_structure(self): + # The performer hasn't been implemented + cfg = deepcopy(self.cfg) + cfg['t2t_cfg']['use_performer'] = True + with self.assertRaises(NotImplementedError): + T2T_ViT(**cfg) + + # Test out_indices + cfg = deepcopy(self.cfg) + cfg['out_indices'] = {1: 1} + with self.assertRaisesRegex(AssertionError, "get "): + T2T_ViT(**cfg) + cfg['out_indices'] = [0, 15] + with self.assertRaisesRegex(AssertionError, 'Invalid out_indices 15'): + T2T_ViT(**cfg) + + # Test model structure + cfg = deepcopy(self.cfg) + model = T2T_ViT(**cfg) + self.assertEqual(len(model.encoder), 14) + dpr_inc = 0.1 / (14 - 1) + dpr = 0 + for layer in model.encoder: + self.assertEqual(layer.attn.embed_dims, 384) + # The default mlp_ratio is 3 + self.assertEqual(layer.ffn.feedforward_channels, 384 * 3) + self.assertAlmostEqual(layer.attn.out_drop.drop_prob, dpr) + self.assertAlmostEqual(layer.ffn.dropout_layer.drop_prob, dpr) + dpr += dpr_inc + + def test_init_weights(self): + # test weight init cfg + cfg = deepcopy(self.cfg) + cfg['init_cfg'] = [dict(type='TruncNormal', layer='Linear', std=.02)] + model = T2T_ViT(**cfg) + ori_weight = model.tokens_to_token.project.weight.clone().detach() + + model.init_weights() + initialized_weight = model.tokens_to_token.project.weight + self.assertFalse(torch.allclose(ori_weight, initialized_weight)) + + # test load checkpoint + pretrain_pos_embed = model.pos_embed.clone().detach() + tmpdir = tempfile.gettempdir() + checkpoint = os.path.join(tmpdir, 'test.pth') + save_checkpoint(model, checkpoint) + cfg = deepcopy(self.cfg) + model = T2T_ViT(**cfg) + load_checkpoint(model, checkpoint, strict=True) + self.assertTrue(torch.allclose(model.pos_embed, pretrain_pos_embed)) + + # test load checkpoint with different img_size + cfg = deepcopy(self.cfg) + cfg['img_size'] = 384 + model = T2T_ViT(**cfg) + load_checkpoint(model, checkpoint, strict=True) + resized_pos_embed = timm_resize_pos_embed(pretrain_pos_embed, + model.pos_embed) + self.assertTrue(torch.allclose(model.pos_embed, resized_pos_embed)) + + os.remove(checkpoint) + + def test_forward(self): + imgs = torch.randn(1, 3, 224, 224) + + # test with_cls_token=False + cfg = deepcopy(self.cfg) + cfg['with_cls_token'] = False + cfg['output_cls_token'] = True + with self.assertRaisesRegex(AssertionError, 'but got False'): + T2T_ViT(**cfg) + + cfg = deepcopy(self.cfg) + cfg['with_cls_token'] = False + cfg['output_cls_token'] = False + model = T2T_ViT(**cfg) + outs = model(imgs) + self.assertIsInstance(outs, tuple) + self.assertEqual(len(outs), 1) + patch_token = outs[-1] + self.assertEqual(patch_token.shape, (1, 384, 14, 14)) + + # test with output_cls_token + cfg = deepcopy(self.cfg) + model = T2T_ViT(**cfg) + outs = model(imgs) + self.assertIsInstance(outs, tuple) + self.assertEqual(len(outs), 1) + patch_token, cls_token = outs[-1] + self.assertEqual(patch_token.shape, (1, 384, 14, 14)) + self.assertEqual(cls_token.shape, (1, 384)) + + # test without output_cls_token + cfg = deepcopy(self.cfg) + cfg['output_cls_token'] = False + model = T2T_ViT(**cfg) + outs = model(imgs) + self.assertIsInstance(outs, tuple) + self.assertEqual(len(outs), 1) + patch_token = outs[-1] + self.assertEqual(patch_token.shape, (1, 384, 14, 14)) + + # Test forward with multi out indices + cfg = deepcopy(self.cfg) + cfg['out_indices'] = [-3, -2, -1] + model = T2T_ViT(**cfg) + outs = model(imgs) + self.assertIsInstance(outs, tuple) + self.assertEqual(len(outs), 3) + for out in outs: + patch_token, cls_token = out + self.assertEqual(patch_token.shape, (1, 384, 14, 14)) + self.assertEqual(cls_token.shape, (1, 384)) + + # Test forward with dynamic input size + imgs1 = torch.randn(1, 3, 224, 224) + imgs2 = torch.randn(1, 3, 256, 256) + imgs3 = torch.randn(1, 3, 256, 309) + cfg = deepcopy(self.cfg) + model = T2T_ViT(**cfg) + for imgs in [imgs1, imgs2, imgs3]: + outs = model(imgs) + self.assertIsInstance(outs, tuple) + self.assertEqual(len(outs), 1) + patch_token, cls_token = outs[-1] + expect_feat_shape = (math.ceil(imgs.shape[2] / 16), + math.ceil(imgs.shape[3] / 16)) + self.assertEqual(patch_token.shape, (1, 384, *expect_feat_shape)) + self.assertEqual(cls_token.shape, (1, 384)) + + +def test_get_sinusoid_encoding(): + # original numpy based third-party implementation copied from mmcls + # https://github.com/jadore801120/attention-is-all-you-need-pytorch/blob/master/transformer/Models.py#L31 + def get_sinusoid_encoding_numpy(n_position, d_hid): + + def get_position_angle_vec(position): + return [ + position / np.power(10000, 2 * (hid_j // 2) / d_hid) + for hid_j in range(d_hid) + ] + + sinusoid_table = np.array( + [get_position_angle_vec(pos_i) for pos_i in range(n_position)]) + sinusoid_table[:, 0::2] = np.sin(sinusoid_table[:, 0::2]) # dim 2i + sinusoid_table[:, 1::2] = np.cos(sinusoid_table[:, 1::2]) # dim 2i+1 + + return torch.FloatTensor(sinusoid_table).unsqueeze(0) + + n_positions = [128, 256, 512, 1024] + embed_dims = [128, 256, 512, 1024] + for n_position in n_positions: + for embed_dim in embed_dims: + out_mmcls = get_sinusoid_encoding(n_position, embed_dim) + out_numpy = get_sinusoid_encoding_numpy(n_position, embed_dim) + error = (out_mmcls - out_numpy).abs().max() + assert error < 1e-9, 'Test case n_position=%d, embed_dim=%d failed' + return diff --git a/openmmlab_test/mmclassification-0.24.1/tests/test_models/test_backbones/test_timm_backbone.py b/openmmlab_test/mmclassification-0.24.1/tests/test_models/test_backbones/test_timm_backbone.py new file mode 100644 index 00000000..46283091 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/tests/test_models/test_backbones/test_timm_backbone.py @@ -0,0 +1,204 @@ +# Copyright (c) OpenMMLab. All rights reserved. +import pytest +import torch +from torch import nn +from torch.nn.modules.batchnorm import _BatchNorm + +from mmcls.models.backbones import TIMMBackbone + + +def check_norm_state(modules, train_state): + """Check if norm layer is in correct train state.""" + for mod in modules: + if isinstance(mod, _BatchNorm): + if mod.training != train_state: + return False + return True + + +def test_timm_backbone(): + """Test timm backbones, features_only=False (default).""" + with pytest.raises(TypeError): + # TIMMBackbone has 1 required positional argument: 'model_name' + model = TIMMBackbone(pretrained=True) + + with pytest.raises(TypeError): + # pretrained must be bool + model = TIMMBackbone(model_name='resnet18', pretrained='model.pth') + + # Test resnet18 from timm + model = TIMMBackbone(model_name='resnet18') + model.init_weights() + model.train() + assert check_norm_state(model.modules(), True) + assert isinstance(model.timm_model.global_pool.pool, nn.Identity) + assert isinstance(model.timm_model.fc, nn.Identity) + + imgs = torch.randn(1, 3, 224, 224) + feat = model(imgs) + assert len(feat) == 1 + assert feat[0].shape == torch.Size((1, 512, 7, 7)) + + # Test efficientnet_b1 with pretrained weights + model = TIMMBackbone(model_name='efficientnet_b1', pretrained=True) + model.init_weights() + model.train() + assert isinstance(model.timm_model.global_pool.pool, nn.Identity) + assert isinstance(model.timm_model.classifier, nn.Identity) + + imgs = torch.randn(1, 3, 224, 224) + feat = model(imgs) + assert len(feat) == 1 + assert feat[0].shape == torch.Size((1, 1280, 7, 7)) + + # Test vit_tiny_patch16_224 with pretrained weights + model = TIMMBackbone(model_name='vit_tiny_patch16_224', pretrained=True) + model.init_weights() + model.train() + assert isinstance(model.timm_model.head, nn.Identity) + + imgs = torch.randn(1, 3, 224, 224) + feat = model(imgs) + assert len(feat) == 1 + # Disable the test since TIMM's behavior changes between 0.5.4 and 0.5.5 + # assert feat[0].shape == torch.Size((1, 197, 192)) + + +def test_timm_backbone_features_only(): + """Test timm backbones, features_only=True.""" + # Test different norm_layer, can be: 'SyncBN', 'BN2d', 'GN', 'LN', 'IN' + # Test resnet18 from timm, norm_layer='BN2d' + model = TIMMBackbone( + model_name='resnet18', + features_only=True, + pretrained=False, + output_stride=32, + norm_layer='BN2d') + + # Test resnet18 from timm, norm_layer='SyncBN' + model = TIMMBackbone( + model_name='resnet18', + features_only=True, + pretrained=False, + output_stride=32, + norm_layer='SyncBN') + + # Test resnet18 from timm, output_stride=32 + model = TIMMBackbone( + model_name='resnet18', + features_only=True, + pretrained=False, + output_stride=32) + model.init_weights() + model.train() + assert check_norm_state(model.modules(), True) + + imgs = torch.randn(1, 3, 224, 224) + feats = model(imgs) + assert len(feats) == 5 + assert feats[0].shape == torch.Size((1, 64, 112, 112)) + assert feats[1].shape == torch.Size((1, 64, 56, 56)) + assert feats[2].shape == torch.Size((1, 128, 28, 28)) + assert feats[3].shape == torch.Size((1, 256, 14, 14)) + assert feats[4].shape == torch.Size((1, 512, 7, 7)) + + # Test resnet18 from timm, output_stride=32, out_indices=(1, 2, 3) + model = TIMMBackbone( + model_name='resnet18', + features_only=True, + pretrained=False, + output_stride=32, + out_indices=(1, 2, 3)) + imgs = torch.randn(1, 3, 224, 224) + feats = model(imgs) + assert len(feats) == 3 + assert feats[0].shape == torch.Size((1, 64, 56, 56)) + assert feats[1].shape == torch.Size((1, 128, 28, 28)) + assert feats[2].shape == torch.Size((1, 256, 14, 14)) + + # Test resnet18 from timm, output_stride=16 + model = TIMMBackbone( + model_name='resnet18', + features_only=True, + pretrained=False, + output_stride=16) + imgs = torch.randn(1, 3, 224, 224) + feats = model(imgs) + assert len(feats) == 5 + assert feats[0].shape == torch.Size((1, 64, 112, 112)) + assert feats[1].shape == torch.Size((1, 64, 56, 56)) + assert feats[2].shape == torch.Size((1, 128, 28, 28)) + assert feats[3].shape == torch.Size((1, 256, 14, 14)) + assert feats[4].shape == torch.Size((1, 512, 14, 14)) + + # Test resnet18 from timm, output_stride=8 + model = TIMMBackbone( + model_name='resnet18', + features_only=True, + pretrained=False, + output_stride=8) + imgs = torch.randn(1, 3, 224, 224) + feats = model(imgs) + assert len(feats) == 5 + assert feats[0].shape == torch.Size((1, 64, 112, 112)) + assert feats[1].shape == torch.Size((1, 64, 56, 56)) + assert feats[2].shape == torch.Size((1, 128, 28, 28)) + assert feats[3].shape == torch.Size((1, 256, 28, 28)) + assert feats[4].shape == torch.Size((1, 512, 28, 28)) + + # Test efficientnet_b1 with pretrained weights + model = TIMMBackbone( + model_name='efficientnet_b1', features_only=True, pretrained=True) + imgs = torch.randn(1, 3, 64, 64) + feats = model(imgs) + assert len(feats) == 5 + assert feats[0].shape == torch.Size((1, 16, 32, 32)) + assert feats[1].shape == torch.Size((1, 24, 16, 16)) + assert feats[2].shape == torch.Size((1, 40, 8, 8)) + assert feats[3].shape == torch.Size((1, 112, 4, 4)) + assert feats[4].shape == torch.Size((1, 320, 2, 2)) + + # Test resnetv2_50x1_bitm from timm, output_stride=8 + model = TIMMBackbone( + model_name='resnetv2_50x1_bitm', + features_only=True, + pretrained=False, + output_stride=8) + imgs = torch.randn(1, 3, 8, 8) + feats = model(imgs) + assert len(feats) == 5 + assert feats[0].shape == torch.Size((1, 64, 4, 4)) + assert feats[1].shape == torch.Size((1, 256, 2, 2)) + assert feats[2].shape == torch.Size((1, 512, 1, 1)) + assert feats[3].shape == torch.Size((1, 1024, 1, 1)) + assert feats[4].shape == torch.Size((1, 2048, 1, 1)) + + # Test resnetv2_50x3_bitm from timm, output_stride=8 + model = TIMMBackbone( + model_name='resnetv2_50x3_bitm', + features_only=True, + pretrained=False, + output_stride=8) + imgs = torch.randn(1, 3, 8, 8) + feats = model(imgs) + assert len(feats) == 5 + assert feats[0].shape == torch.Size((1, 192, 4, 4)) + assert feats[1].shape == torch.Size((1, 768, 2, 2)) + assert feats[2].shape == torch.Size((1, 1536, 1, 1)) + assert feats[3].shape == torch.Size((1, 3072, 1, 1)) + assert feats[4].shape == torch.Size((1, 6144, 1, 1)) + + # Test resnetv2_101x1_bitm from timm, output_stride=8 + model = TIMMBackbone( + model_name='resnetv2_101x1_bitm', + features_only=True, + pretrained=False, + output_stride=8) + imgs = torch.randn(1, 3, 8, 8) + feats = model(imgs) + assert len(feats) == 5 + assert feats[0].shape == torch.Size((1, 64, 4, 4)) + assert feats[1].shape == torch.Size((1, 256, 2, 2)) + assert feats[2].shape == torch.Size((1, 512, 1, 1)) + assert feats[3].shape == torch.Size((1, 1024, 1, 1)) + assert feats[4].shape == torch.Size((1, 2048, 1, 1)) diff --git a/openmmlab_test/mmclassification-0.24.1/tests/test_models/test_backbones/test_tnt.py b/openmmlab_test/mmclassification-0.24.1/tests/test_models/test_backbones/test_tnt.py new file mode 100644 index 00000000..2feffd6a --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/tests/test_models/test_backbones/test_tnt.py @@ -0,0 +1,50 @@ +# Copyright (c) OpenMMLab. All rights reserved. +import pytest +import torch +from torch.nn.modules.batchnorm import _BatchNorm + +from mmcls.models.backbones import TNT + + +def check_norm_state(modules, train_state): + """Check if norm layer is in correct train state.""" + for mod in modules: + if isinstance(mod, _BatchNorm): + if mod.training != train_state: + return False + return True + + +def test_tnt_backbone(): + with pytest.raises(TypeError): + # pretrained must be a string path + model = TNT() + model.init_weights(pretrained=0) + + # Test tnt_base_patch16_224 + model = TNT() + model.init_weights() + model.train() + assert check_norm_state(model.modules(), True) + + imgs = torch.randn(1, 3, 224, 224) + feat = model(imgs) + assert len(feat) == 1 + assert feat[0].shape == torch.Size((1, 640)) + + # Test tnt with embed_dims=768 + arch = { + 'embed_dims_outer': 768, + 'embed_dims_inner': 48, + 'num_layers': 12, + 'num_heads_outer': 6, + 'num_heads_inner': 4 + } + model = TNT(arch=arch) + model.init_weights() + model.train() + + imgs = torch.randn(1, 3, 224, 224) + feat = model(imgs) + assert len(feat) == 1 + assert feat[0].shape == torch.Size((1, 768)) diff --git a/openmmlab_test/mmclassification-0.24.1/tests/test_models/test_backbones/test_twins.py b/openmmlab_test/mmclassification-0.24.1/tests/test_models/test_backbones/test_twins.py new file mode 100644 index 00000000..b6925843 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/tests/test_models/test_backbones/test_twins.py @@ -0,0 +1,243 @@ +# Copyright (c) OpenMMLab. All rights reserved. +import copy + +import pytest +import torch +import torch.nn as nn + +from mmcls.models.backbones.twins import (PCPVT, SVT, + GlobalSubsampledAttention, + LocallyGroupedSelfAttention) + + +def test_LSA_module(): + lsa = LocallyGroupedSelfAttention(embed_dims=32, window_size=3) + outs = lsa(torch.randn(1, 3136, 32), (56, 56)) + assert outs.shape == torch.Size([1, 3136, 32]) + + +def test_GSA_module(): + gsa = GlobalSubsampledAttention(embed_dims=32, num_heads=8) + outs = gsa(torch.randn(1, 3136, 32), (56, 56)) + assert outs.shape == torch.Size([1, 3136, 32]) + + +def test_pcpvt(): + # test init + path = 'PATH_THAT_DO_NOT_EXIST' + + # init_cfg loads pretrain from an non-existent file + model = PCPVT('s', init_cfg=dict(type='Pretrained', checkpoint=path)) + assert model.init_cfg == dict(type='Pretrained', checkpoint=path) + + # Test loading a checkpoint from an non-existent file + with pytest.raises(OSError): + model.init_weights() + + # init_cfg=123, whose type is unsupported + model = PCPVT('s', init_cfg=123) + with pytest.raises(TypeError): + model.init_weights() + + H, W = (64, 64) + temp = torch.randn((1, 3, H, W)) + + # test output last feat + model = PCPVT('small') + model.init_weights() + outs = model(temp) + assert len(outs) == 1 + assert outs[-1].shape == (1, 512, H // 32, W // 32) + + # test with mutil outputs + model = PCPVT('small', out_indices=(0, 1, 2, 3)) + model.init_weights() + outs = model(temp) + assert len(outs) == 4 + assert outs[0].shape == (1, 64, H // 4, W // 4) + assert outs[1].shape == (1, 128, H // 8, W // 8) + assert outs[2].shape == (1, 320, H // 16, W // 16) + assert outs[3].shape == (1, 512, H // 32, W // 32) + + # test with arch of dict + arch = { + 'embed_dims': [64, 128, 320, 512], + 'depths': [3, 4, 18, 3], + 'num_heads': [1, 2, 5, 8], + 'patch_sizes': [4, 2, 2, 2], + 'strides': [4, 2, 2, 2], + 'mlp_ratios': [8, 8, 4, 4], + 'sr_ratios': [8, 4, 2, 1] + } + + pcpvt_arch = copy.deepcopy(arch) + model = PCPVT(pcpvt_arch, out_indices=(0, 1, 2, 3)) + model.init_weights() + outs = model(temp) + assert len(outs) == 4 + assert outs[0].shape == (1, 64, H // 4, W // 4) + assert outs[1].shape == (1, 128, H // 8, W // 8) + assert outs[2].shape == (1, 320, H // 16, W // 16) + assert outs[3].shape == (1, 512, H // 32, W // 32) + + # assert length of arch value not equal + pcpvt_arch = copy.deepcopy(arch) + pcpvt_arch['sr_ratios'] = [8, 4, 2] + with pytest.raises(AssertionError): + model = PCPVT(pcpvt_arch, out_indices=(0, 1, 2, 3)) + + # assert lack arch essential_keys + pcpvt_arch = copy.deepcopy(arch) + del pcpvt_arch['sr_ratios'] + with pytest.raises(AssertionError): + model = PCPVT(pcpvt_arch, out_indices=(0, 1, 2, 3)) + + # assert arch value not list + pcpvt_arch = copy.deepcopy(arch) + pcpvt_arch['sr_ratios'] = 1 + with pytest.raises(AssertionError): + model = PCPVT(pcpvt_arch, out_indices=(0, 1, 2, 3)) + + pcpvt_arch = copy.deepcopy(arch) + pcpvt_arch['sr_ratios'] = '1, 2, 3, 4' + with pytest.raises(AssertionError): + model = PCPVT(pcpvt_arch, out_indices=(0, 1, 2, 3)) + + # test norm_after_stage is bool True + model = PCPVT('small', norm_after_stage=True, norm_cfg=dict(type='LN')) + for i in range(model.num_stage): + assert hasattr(model, f'norm_after_stage{i}') + assert isinstance(getattr(model, f'norm_after_stage{i}'), nn.LayerNorm) + + # test norm_after_stage is bool Flase + model = PCPVT('small', norm_after_stage=False) + for i in range(model.num_stage): + assert hasattr(model, f'norm_after_stage{i}') + assert isinstance(getattr(model, f'norm_after_stage{i}'), nn.Identity) + + # test norm_after_stage is bool list + norm_after_stage = [False, True, False, True] + model = PCPVT('small', norm_after_stage=norm_after_stage) + assert len(norm_after_stage) == model.num_stage + for i in range(model.num_stage): + assert hasattr(model, f'norm_after_stage{i}') + norm_layer = getattr(model, f'norm_after_stage{i}') + if norm_after_stage[i]: + assert isinstance(norm_layer, nn.LayerNorm) + else: + assert isinstance(norm_layer, nn.Identity) + + # test norm_after_stage is not bool list + norm_after_stage = [False, 'True', False, True] + with pytest.raises(AssertionError): + model = PCPVT('small', norm_after_stage=norm_after_stage) + + +def test_svt(): + # test init + path = 'PATH_THAT_DO_NOT_EXIST' + + # init_cfg loads pretrain from an non-existent file + model = SVT('s', init_cfg=dict(type='Pretrained', checkpoint=path)) + assert model.init_cfg == dict(type='Pretrained', checkpoint=path) + + # Test loading a checkpoint from an non-existent file + with pytest.raises(OSError): + model.init_weights() + + # init_cfg=123, whose type is unsupported + model = SVT('s', init_cfg=123) + with pytest.raises(TypeError): + model.init_weights() + + # Test feature map output + H, W = (64, 64) + temp = torch.randn((1, 3, H, W)) + + model = SVT('s') + model.init_weights() + outs = model(temp) + assert len(outs) == 1 + assert outs[-1].shape == (1, 512, H // 32, W // 32) + + # test with mutil outputs + model = SVT('small', out_indices=(0, 1, 2, 3)) + model.init_weights() + outs = model(temp) + assert len(outs) == 4 + assert outs[0].shape == (1, 64, H // 4, W // 4) + assert outs[1].shape == (1, 128, H // 8, W // 8) + assert outs[2].shape == (1, 256, H // 16, W // 16) + assert outs[3].shape == (1, 512, H // 32, W // 32) + + # test with arch of dict + arch = { + 'embed_dims': [96, 192, 384, 768], + 'depths': [2, 2, 18, 2], + 'num_heads': [3, 6, 12, 24], + 'patch_sizes': [4, 2, 2, 2], + 'strides': [4, 2, 2, 2], + 'mlp_ratios': [4, 4, 4, 4], + 'sr_ratios': [8, 4, 2, 1], + 'window_sizes': [7, 7, 7, 7] + } + model = SVT(arch, out_indices=(0, 1, 2, 3)) + model.init_weights() + outs = model(temp) + assert len(outs) == 4 + assert outs[0].shape == (1, 96, H // 4, W // 4) + assert outs[1].shape == (1, 192, H // 8, W // 8) + assert outs[2].shape == (1, 384, H // 16, W // 16) + assert outs[3].shape == (1, 768, H // 32, W // 32) + + # assert length of arch value not equal + svt_arch = copy.deepcopy(arch) + svt_arch['sr_ratios'] = [8, 4, 2] + with pytest.raises(AssertionError): + model = SVT(svt_arch, out_indices=(0, 1, 2, 3)) + + # assert lack arch essential_keys + svt_arch = copy.deepcopy(arch) + del svt_arch['window_sizes'] + with pytest.raises(AssertionError): + model = SVT(svt_arch, out_indices=(0, 1, 2, 3)) + + # assert arch value not list + svt_arch = copy.deepcopy(arch) + svt_arch['sr_ratios'] = 1 + with pytest.raises(AssertionError): + model = SVT(svt_arch, out_indices=(0, 1, 2, 3)) + + svt_arch = copy.deepcopy(arch) + svt_arch['sr_ratios'] = '1, 2, 3, 4' + with pytest.raises(AssertionError): + model = SVT(svt_arch, out_indices=(0, 1, 2, 3)) + + # test norm_after_stage is bool True + model = SVT('small', norm_after_stage=True, norm_cfg=dict(type='LN')) + for i in range(model.num_stage): + assert hasattr(model, f'norm_after_stage{i}') + assert isinstance(getattr(model, f'norm_after_stage{i}'), nn.LayerNorm) + + # test norm_after_stage is bool Flase + model = SVT('small', norm_after_stage=False) + for i in range(model.num_stage): + assert hasattr(model, f'norm_after_stage{i}') + assert isinstance(getattr(model, f'norm_after_stage{i}'), nn.Identity) + + # test norm_after_stage is bool list + norm_after_stage = [False, True, False, True] + model = SVT('small', norm_after_stage=norm_after_stage) + assert len(norm_after_stage) == model.num_stage + for i in range(model.num_stage): + assert hasattr(model, f'norm_after_stage{i}') + norm_layer = getattr(model, f'norm_after_stage{i}') + if norm_after_stage[i]: + assert isinstance(norm_layer, nn.LayerNorm) + else: + assert isinstance(norm_layer, nn.Identity) + + # test norm_after_stage is not bool list + norm_after_stage = [False, 'True', False, True] + with pytest.raises(AssertionError): + model = SVT('small', norm_after_stage=norm_after_stage) diff --git a/openmmlab_test/mmclassification-0.24.1/tests/test_models/test_backbones/test_van.py b/openmmlab_test/mmclassification-0.24.1/tests/test_models/test_backbones/test_van.py new file mode 100644 index 00000000..136ce973 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/tests/test_models/test_backbones/test_van.py @@ -0,0 +1,188 @@ +# Copyright (c) OpenMMLab. All rights reserved. +import math +from copy import deepcopy +from itertools import chain +from unittest import TestCase + +import torch +from mmcv.utils.parrots_wrapper import _BatchNorm +from torch import nn + +from mmcls.models.backbones import VAN + + +def check_norm_state(modules, train_state): + """Check if norm layer is in correct train state.""" + for mod in modules: + if isinstance(mod, _BatchNorm): + if mod.training != train_state: + return False + return True + + +class TestVAN(TestCase): + + def setUp(self): + self.cfg = dict(arch='t', drop_path_rate=0.1) + + def test_arch(self): + # Test invalid default arch + with self.assertRaisesRegex(AssertionError, 'not in default archs'): + cfg = deepcopy(self.cfg) + cfg['arch'] = 'unknown' + VAN(**cfg) + + # Test invalid custom arch + with self.assertRaisesRegex(AssertionError, 'Custom arch needs'): + cfg = deepcopy(self.cfg) + cfg['arch'] = { + 'embed_dims': [32, 64, 160, 256], + 'ffn_ratios': [8, 8, 4, 4], + } + VAN(**cfg) + + # Test custom arch + cfg = deepcopy(self.cfg) + embed_dims = [32, 64, 160, 256] + depths = [3, 3, 5, 2] + ffn_ratios = [8, 8, 4, 4] + cfg['arch'] = { + 'embed_dims': embed_dims, + 'depths': depths, + 'ffn_ratios': ffn_ratios + } + model = VAN(**cfg) + + for i in range(len(depths)): + stage = getattr(model, f'blocks{i + 1}') + self.assertEqual(stage[-1].out_channels, embed_dims[i]) + self.assertEqual(len(stage), depths[i]) + + def test_init_weights(self): + # test weight init cfg + cfg = deepcopy(self.cfg) + cfg['init_cfg'] = [ + dict( + type='Kaiming', + layer='Conv2d', + mode='fan_in', + nonlinearity='linear') + ] + model = VAN(**cfg) + ori_weight = model.patch_embed1.projection.weight.clone().detach() + + model.init_weights() + initialized_weight = model.patch_embed1.projection.weight + self.assertFalse(torch.allclose(ori_weight, initialized_weight)) + + def test_forward(self): + imgs = torch.randn(3, 3, 224, 224) + + cfg = deepcopy(self.cfg) + model = VAN(**cfg) + outs = model(imgs) + self.assertIsInstance(outs, tuple) + self.assertEqual(len(outs), 1) + feat = outs[-1] + self.assertEqual(feat.shape, (3, 256, 7, 7)) + + # test with patch_sizes + cfg = deepcopy(self.cfg) + cfg['patch_sizes'] = [7, 5, 5, 5] + model = VAN(**cfg) + outs = model(torch.randn(3, 3, 224, 224)) + self.assertIsInstance(outs, tuple) + self.assertEqual(len(outs), 1) + feat = outs[-1] + self.assertEqual(feat.shape, (3, 256, 3, 3)) + + # test multiple output indices + cfg = deepcopy(self.cfg) + cfg['out_indices'] = (0, 1, 2, 3) + model = VAN(**cfg) + outs = model(imgs) + self.assertIsInstance(outs, tuple) + self.assertEqual(len(outs), 4) + for emb_size, stride, out in zip([32, 64, 160, 256], [1, 2, 4, 8], + outs): + self.assertEqual(out.shape, + (3, emb_size, 56 // stride, 56 // stride)) + + # test with dynamic input shape + imgs1 = torch.randn(3, 3, 224, 224) + imgs2 = torch.randn(3, 3, 256, 256) + imgs3 = torch.randn(3, 3, 256, 309) + cfg = deepcopy(self.cfg) + model = VAN(**cfg) + for imgs in [imgs1, imgs2, imgs3]: + outs = model(imgs) + self.assertIsInstance(outs, tuple) + self.assertEqual(len(outs), 1) + feat = outs[-1] + expect_feat_shape = (math.ceil(imgs.shape[2] / 32), + math.ceil(imgs.shape[3] / 32)) + self.assertEqual(feat.shape, (3, 256, *expect_feat_shape)) + + def test_structure(self): + # test drop_path_rate decay + cfg = deepcopy(self.cfg) + cfg['drop_path_rate'] = 0.2 + model = VAN(**cfg) + depths = model.arch_settings['depths'] + stages = [model.blocks1, model.blocks2, model.blocks3, model.blocks4] + blocks = chain(*[stage for stage in stages]) + total_depth = sum(depths) + dpr = [ + x.item() + for x in torch.linspace(0, cfg['drop_path_rate'], total_depth) + ] + for i, (block, expect_prob) in enumerate(zip(blocks, dpr)): + if expect_prob == 0: + assert isinstance(block.drop_path, nn.Identity) + else: + self.assertAlmostEqual(block.drop_path.drop_prob, expect_prob) + + # test VAN with norm_eval=True + cfg = deepcopy(self.cfg) + cfg['norm_eval'] = True + cfg['norm_cfg'] = dict(type='BN') + model = VAN(**cfg) + model.init_weights() + model.train() + self.assertTrue(check_norm_state(model.modules(), False)) + + # test VAN with first stage frozen. + cfg = deepcopy(self.cfg) + frozen_stages = 0 + cfg['frozen_stages'] = frozen_stages + cfg['out_indices'] = (0, 1, 2, 3) + model = VAN(**cfg) + model.init_weights() + model.train() + + # the patch_embed and first stage should not require grad. + self.assertFalse(model.patch_embed1.training) + for param in model.patch_embed1.parameters(): + self.assertFalse(param.requires_grad) + for i in range(frozen_stages + 1): + patch = getattr(model, f'patch_embed{i+1}') + for param in patch.parameters(): + self.assertFalse(param.requires_grad) + blocks = getattr(model, f'blocks{i + 1}') + for param in blocks.parameters(): + self.assertFalse(param.requires_grad) + norm = getattr(model, f'norm{i + 1}') + for param in norm.parameters(): + self.assertFalse(param.requires_grad) + + # the second stage should require grad. + for i in range(frozen_stages + 1, 4): + patch = getattr(model, f'patch_embed{i + 1}') + for param in patch.parameters(): + self.assertTrue(param.requires_grad) + blocks = getattr(model, f'blocks{i+1}') + for param in blocks.parameters(): + self.assertTrue(param.requires_grad) + norm = getattr(model, f'norm{i + 1}') + for param in norm.parameters(): + self.assertTrue(param.requires_grad) diff --git a/openmmlab_test/mmclassification-speed-benchmark/tests/test_backbones/test_vgg.py b/openmmlab_test/mmclassification-0.24.1/tests/test_models/test_backbones/test_vgg.py similarity index 95% rename from openmmlab_test/mmclassification-speed-benchmark/tests/test_backbones/test_vgg.py rename to openmmlab_test/mmclassification-0.24.1/tests/test_models/test_backbones/test_vgg.py index 7696833e..4e817792 100644 --- a/openmmlab_test/mmclassification-speed-benchmark/tests/test_backbones/test_vgg.py +++ b/openmmlab_test/mmclassification-0.24.1/tests/test_models/test_backbones/test_vgg.py @@ -1,3 +1,4 @@ +# Copyright (c) OpenMMLab. All rights reserved. import pytest import torch from mmcv.utils.parrots_wrapper import _BatchNorm @@ -124,7 +125,8 @@ def test_vgg(): imgs = torch.randn(1, 3, 224, 224) feat = model(imgs) - assert feat.shape == (1, 512, 7, 7) + assert len(feat) == 1 + assert feat[0].shape == (1, 512, 7, 7) # Test VGG19 with classification score out forward model = VGG(19, num_classes=10) @@ -133,4 +135,5 @@ def test_vgg(): imgs = torch.randn(1, 3, 224, 224) feat = model(imgs) - assert feat.shape == (1, 10) + assert len(feat) == 1 + assert feat[0].shape == (1, 10) diff --git a/openmmlab_test/mmclassification-0.24.1/tests/test_models/test_backbones/test_vision_transformer.py b/openmmlab_test/mmclassification-0.24.1/tests/test_models/test_backbones/test_vision_transformer.py new file mode 100644 index 00000000..26cc7370 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/tests/test_models/test_backbones/test_vision_transformer.py @@ -0,0 +1,183 @@ +# Copyright (c) OpenMMLab. All rights reserved. +import math +import os +import tempfile +from copy import deepcopy +from unittest import TestCase + +import torch +from mmcv.runner import load_checkpoint, save_checkpoint + +from mmcls.models.backbones import VisionTransformer +from .utils import timm_resize_pos_embed + + +class TestVisionTransformer(TestCase): + + def setUp(self): + self.cfg = dict( + arch='b', img_size=224, patch_size=16, drop_path_rate=0.1) + + def test_structure(self): + # Test invalid default arch + with self.assertRaisesRegex(AssertionError, 'not in default archs'): + cfg = deepcopy(self.cfg) + cfg['arch'] = 'unknown' + VisionTransformer(**cfg) + + # Test invalid custom arch + with self.assertRaisesRegex(AssertionError, 'Custom arch needs'): + cfg = deepcopy(self.cfg) + cfg['arch'] = { + 'num_layers': 24, + 'num_heads': 16, + 'feedforward_channels': 4096 + } + VisionTransformer(**cfg) + + # Test custom arch + cfg = deepcopy(self.cfg) + cfg['arch'] = { + 'embed_dims': 128, + 'num_layers': 24, + 'num_heads': 16, + 'feedforward_channels': 1024 + } + model = VisionTransformer(**cfg) + self.assertEqual(model.embed_dims, 128) + self.assertEqual(model.num_layers, 24) + for layer in model.layers: + self.assertEqual(layer.attn.num_heads, 16) + self.assertEqual(layer.ffn.feedforward_channels, 1024) + + # Test out_indices + cfg = deepcopy(self.cfg) + cfg['out_indices'] = {1: 1} + with self.assertRaisesRegex(AssertionError, "get "): + VisionTransformer(**cfg) + cfg['out_indices'] = [0, 13] + with self.assertRaisesRegex(AssertionError, 'Invalid out_indices 13'): + VisionTransformer(**cfg) + + # Test model structure + cfg = deepcopy(self.cfg) + model = VisionTransformer(**cfg) + self.assertEqual(len(model.layers), 12) + dpr_inc = 0.1 / (12 - 1) + dpr = 0 + for layer in model.layers: + self.assertEqual(layer.attn.embed_dims, 768) + self.assertEqual(layer.attn.num_heads, 12) + self.assertEqual(layer.ffn.feedforward_channels, 3072) + self.assertAlmostEqual(layer.attn.out_drop.drop_prob, dpr) + self.assertAlmostEqual(layer.ffn.dropout_layer.drop_prob, dpr) + dpr += dpr_inc + + def test_init_weights(self): + # test weight init cfg + cfg = deepcopy(self.cfg) + cfg['init_cfg'] = [ + dict( + type='Kaiming', + layer='Conv2d', + mode='fan_in', + nonlinearity='linear') + ] + model = VisionTransformer(**cfg) + ori_weight = model.patch_embed.projection.weight.clone().detach() + # The pos_embed is all zero before initialize + self.assertTrue(torch.allclose(model.pos_embed, torch.tensor(0.))) + + model.init_weights() + initialized_weight = model.patch_embed.projection.weight + self.assertFalse(torch.allclose(ori_weight, initialized_weight)) + self.assertFalse(torch.allclose(model.pos_embed, torch.tensor(0.))) + + # test load checkpoint + pretrain_pos_embed = model.pos_embed.clone().detach() + tmpdir = tempfile.gettempdir() + checkpoint = os.path.join(tmpdir, 'test.pth') + save_checkpoint(model, checkpoint) + cfg = deepcopy(self.cfg) + model = VisionTransformer(**cfg) + load_checkpoint(model, checkpoint, strict=True) + self.assertTrue(torch.allclose(model.pos_embed, pretrain_pos_embed)) + + # test load checkpoint with different img_size + cfg = deepcopy(self.cfg) + cfg['img_size'] = 384 + model = VisionTransformer(**cfg) + load_checkpoint(model, checkpoint, strict=True) + resized_pos_embed = timm_resize_pos_embed(pretrain_pos_embed, + model.pos_embed) + self.assertTrue(torch.allclose(model.pos_embed, resized_pos_embed)) + + os.remove(checkpoint) + + def test_forward(self): + imgs = torch.randn(3, 3, 224, 224) + + # test with_cls_token=False + cfg = deepcopy(self.cfg) + cfg['with_cls_token'] = False + cfg['output_cls_token'] = True + with self.assertRaisesRegex(AssertionError, 'but got False'): + VisionTransformer(**cfg) + + cfg = deepcopy(self.cfg) + cfg['with_cls_token'] = False + cfg['output_cls_token'] = False + model = VisionTransformer(**cfg) + outs = model(imgs) + self.assertIsInstance(outs, tuple) + self.assertEqual(len(outs), 1) + patch_token = outs[-1] + self.assertEqual(patch_token.shape, (3, 768, 14, 14)) + + # test with output_cls_token + cfg = deepcopy(self.cfg) + model = VisionTransformer(**cfg) + outs = model(imgs) + self.assertIsInstance(outs, tuple) + self.assertEqual(len(outs), 1) + patch_token, cls_token = outs[-1] + self.assertEqual(patch_token.shape, (3, 768, 14, 14)) + self.assertEqual(cls_token.shape, (3, 768)) + + # test without output_cls_token + cfg = deepcopy(self.cfg) + cfg['output_cls_token'] = False + model = VisionTransformer(**cfg) + outs = model(imgs) + self.assertIsInstance(outs, tuple) + self.assertEqual(len(outs), 1) + patch_token = outs[-1] + self.assertEqual(patch_token.shape, (3, 768, 14, 14)) + + # Test forward with multi out indices + cfg = deepcopy(self.cfg) + cfg['out_indices'] = [-3, -2, -1] + model = VisionTransformer(**cfg) + outs = model(imgs) + self.assertIsInstance(outs, tuple) + self.assertEqual(len(outs), 3) + for out in outs: + patch_token, cls_token = out + self.assertEqual(patch_token.shape, (3, 768, 14, 14)) + self.assertEqual(cls_token.shape, (3, 768)) + + # Test forward with dynamic input size + imgs1 = torch.randn(3, 3, 224, 224) + imgs2 = torch.randn(3, 3, 256, 256) + imgs3 = torch.randn(3, 3, 256, 309) + cfg = deepcopy(self.cfg) + model = VisionTransformer(**cfg) + for imgs in [imgs1, imgs2, imgs3]: + outs = model(imgs) + self.assertIsInstance(outs, tuple) + self.assertEqual(len(outs), 1) + patch_token, cls_token = outs[-1] + expect_feat_shape = (math.ceil(imgs.shape[2] / 16), + math.ceil(imgs.shape[3] / 16)) + self.assertEqual(patch_token.shape, (3, 768, *expect_feat_shape)) + self.assertEqual(cls_token.shape, (3, 768)) diff --git a/openmmlab_test/mmclassification-0.24.1/tests/test_models/test_backbones/utils.py b/openmmlab_test/mmclassification-0.24.1/tests/test_models/test_backbones/utils.py new file mode 100644 index 00000000..aba9cafb --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/tests/test_models/test_backbones/utils.py @@ -0,0 +1,31 @@ +# Copyright (c) OpenMMLab. All rights reserved. +import math + +import torch +import torch.nn.functional as F + + +def timm_resize_pos_embed(posemb, posemb_new, num_tokens=1, gs_new=()): + """Timm version pos embed resize function. + + copied from https://github.com/rwightman/pytorch-image-models/blob/master/timm/models/vision_transformer.py + """ # noqa:E501 + ntok_new = posemb_new.shape[1] + if num_tokens: + posemb_tok, posemb_grid = posemb[:, :num_tokens], posemb[0, + num_tokens:] + ntok_new -= num_tokens + else: + posemb_tok, posemb_grid = posemb[:, :0], posemb[0] + gs_old = int(math.sqrt(len(posemb_grid))) + if not len(gs_new): # backwards compatibility + gs_new = [int(math.sqrt(ntok_new))] * 2 + assert len(gs_new) >= 2 + posemb_grid = posemb_grid.reshape(1, gs_old, gs_old, + -1).permute(0, 3, 1, 2) + posemb_grid = F.interpolate( + posemb_grid, size=gs_new, mode='bicubic', align_corners=False) + posemb_grid = posemb_grid.permute(0, 2, 3, + 1).reshape(1, gs_new[0] * gs_new[1], -1) + posemb = torch.cat([posemb_tok, posemb_grid], dim=1) + return posemb diff --git a/openmmlab_test/mmclassification-0.24.1/tests/test_models/test_classifiers.py b/openmmlab_test/mmclassification-0.24.1/tests/test_models/test_classifiers.py new file mode 100644 index 00000000..d021b2fa --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/tests/test_models/test_classifiers.py @@ -0,0 +1,326 @@ +# Copyright (c) OpenMMLab. All rights reserved. +import os.path as osp +import tempfile +from copy import deepcopy + +import numpy as np +import torch +from mmcv import ConfigDict + +from mmcls.models import CLASSIFIERS +from mmcls.models.classifiers import ImageClassifier + + +def test_image_classifier(): + model_cfg = dict( + type='ImageClassifier', + backbone=dict( + type='ResNet_CIFAR', + depth=50, + num_stages=4, + out_indices=(3, ), + style='pytorch'), + neck=dict(type='GlobalAveragePooling'), + head=dict( + type='LinearClsHead', + num_classes=10, + in_channels=2048, + loss=dict(type='CrossEntropyLoss'))) + + imgs = torch.randn(16, 3, 32, 32) + label = torch.randint(0, 10, (16, )) + + model_cfg_ = deepcopy(model_cfg) + model = CLASSIFIERS.build(model_cfg_) + + # test property + assert model.with_neck + assert model.with_head + + # test train_step + outputs = model.train_step({'img': imgs, 'gt_label': label}, None) + assert outputs['loss'].item() > 0 + assert outputs['num_samples'] == 16 + + # test train_step without optimizer + outputs = model.train_step({'img': imgs, 'gt_label': label}) + assert outputs['loss'].item() > 0 + assert outputs['num_samples'] == 16 + + # test val_step + outputs = model.val_step({'img': imgs, 'gt_label': label}, None) + assert outputs['loss'].item() > 0 + assert outputs['num_samples'] == 16 + + # test val_step without optimizer + outputs = model.val_step({'img': imgs, 'gt_label': label}) + assert outputs['loss'].item() > 0 + assert outputs['num_samples'] == 16 + + # test forward + losses = model(imgs, return_loss=True, gt_label=label) + assert losses['loss'].item() > 0 + + # test forward_test + model_cfg_ = deepcopy(model_cfg) + model = CLASSIFIERS.build(model_cfg_) + pred = model(imgs, return_loss=False, img_metas=None) + assert isinstance(pred, list) and len(pred) == 16 + + single_img = torch.randn(1, 3, 32, 32) + pred = model(single_img, return_loss=False, img_metas=None) + assert isinstance(pred, list) and len(pred) == 1 + + pred = model.simple_test(imgs, softmax=False) + assert isinstance(pred, list) and len(pred) == 16 + assert len(pred[0] == 10) + + pred = model.simple_test(imgs, softmax=False, post_process=False) + assert isinstance(pred, torch.Tensor) + assert pred.shape == (16, 10) + + soft_pred = model.simple_test(imgs, softmax=True, post_process=False) + assert isinstance(soft_pred, torch.Tensor) + assert soft_pred.shape == (16, 10) + torch.testing.assert_allclose(soft_pred, torch.softmax(pred, dim=1)) + + # test pretrained + model_cfg_ = deepcopy(model_cfg) + model_cfg_['pretrained'] = 'checkpoint' + model = CLASSIFIERS.build(model_cfg_) + assert model.init_cfg == dict(type='Pretrained', checkpoint='checkpoint') + + # test show_result + img = np.random.randint(0, 256, (224, 224, 3)).astype(np.uint8) + result = dict(pred_class='cat', pred_label=0, pred_score=0.9) + + with tempfile.TemporaryDirectory() as tmpdir: + out_file = osp.join(tmpdir, 'out.png') + model.show_result(img, result, out_file=out_file) + assert osp.exists(out_file) + + with tempfile.TemporaryDirectory() as tmpdir: + out_file = osp.join(tmpdir, 'out.png') + model.show_result(img, result, out_file=out_file) + assert osp.exists(out_file) + + +def test_image_classifier_with_mixup(): + # Test mixup in ImageClassifier + model_cfg = dict( + backbone=dict( + type='ResNet_CIFAR', + depth=50, + num_stages=4, + out_indices=(3, ), + style='pytorch'), + neck=dict(type='GlobalAveragePooling'), + head=dict( + type='MultiLabelLinearClsHead', + num_classes=10, + in_channels=2048, + loss=dict(type='CrossEntropyLoss', loss_weight=1.0, + use_soft=True)), + train_cfg=dict( + augments=dict( + type='BatchMixup', alpha=1., num_classes=10, prob=1.))) + img_classifier = ImageClassifier(**model_cfg) + img_classifier.init_weights() + imgs = torch.randn(16, 3, 32, 32) + label = torch.randint(0, 10, (16, )) + + losses = img_classifier.forward_train(imgs, label) + assert losses['loss'].item() > 0 + + +def test_image_classifier_with_cutmix(): + + # Test cutmix in ImageClassifier + model_cfg = dict( + backbone=dict( + type='ResNet_CIFAR', + depth=50, + num_stages=4, + out_indices=(3, ), + style='pytorch'), + neck=dict(type='GlobalAveragePooling'), + head=dict( + type='MultiLabelLinearClsHead', + num_classes=10, + in_channels=2048, + loss=dict(type='CrossEntropyLoss', loss_weight=1.0, + use_soft=True)), + train_cfg=dict( + augments=dict( + type='BatchCutMix', alpha=1., num_classes=10, prob=1.))) + img_classifier = ImageClassifier(**model_cfg) + img_classifier.init_weights() + imgs = torch.randn(16, 3, 32, 32) + label = torch.randint(0, 10, (16, )) + + losses = img_classifier.forward_train(imgs, label) + assert losses['loss'].item() > 0 + + +def test_image_classifier_with_augments(): + + imgs = torch.randn(16, 3, 32, 32) + label = torch.randint(0, 10, (16, )) + + # Test cutmix and mixup in ImageClassifier + model_cfg = dict( + backbone=dict( + type='ResNet_CIFAR', + depth=50, + num_stages=4, + out_indices=(3, ), + style='pytorch'), + neck=dict(type='GlobalAveragePooling'), + head=dict( + type='MultiLabelLinearClsHead', + num_classes=10, + in_channels=2048, + loss=dict(type='CrossEntropyLoss', loss_weight=1.0, + use_soft=True)), + train_cfg=dict(augments=[ + dict(type='BatchCutMix', alpha=1., num_classes=10, prob=0.5), + dict(type='BatchMixup', alpha=1., num_classes=10, prob=0.3), + dict(type='Identity', num_classes=10, prob=0.2) + ])) + img_classifier = ImageClassifier(**model_cfg) + img_classifier.init_weights() + + losses = img_classifier.forward_train(imgs, label) + assert losses['loss'].item() > 0 + + # Test cutmix with cutmix_minmax in ImageClassifier + model_cfg['train_cfg'] = dict( + augments=dict( + type='BatchCutMix', + alpha=1., + num_classes=10, + prob=1., + cutmix_minmax=[0.2, 0.8])) + img_classifier = ImageClassifier(**model_cfg) + img_classifier.init_weights() + + losses = img_classifier.forward_train(imgs, label) + assert losses['loss'].item() > 0 + + # Test not using train_cfg + model_cfg = dict( + backbone=dict( + type='ResNet_CIFAR', + depth=50, + num_stages=4, + out_indices=(3, ), + style='pytorch'), + neck=dict(type='GlobalAveragePooling'), + head=dict( + type='LinearClsHead', + num_classes=10, + in_channels=2048, + loss=dict(type='CrossEntropyLoss', loss_weight=1.0))) + img_classifier = ImageClassifier(**model_cfg) + img_classifier.init_weights() + imgs = torch.randn(16, 3, 32, 32) + label = torch.randint(0, 10, (16, )) + + losses = img_classifier.forward_train(imgs, label) + assert losses['loss'].item() > 0 + + # Test not using cutmix and mixup in ImageClassifier + model_cfg['train_cfg'] = dict(augments=None) + img_classifier = ImageClassifier(**model_cfg) + img_classifier.init_weights() + + losses = img_classifier.forward_train(imgs, label) + assert losses['loss'].item() > 0 + + +def test_classifier_extract_feat(): + model_cfg = ConfigDict( + type='ImageClassifier', + backbone=dict( + type='ResNet', + depth=18, + num_stages=4, + out_indices=(0, 1, 2, 3), + style='pytorch'), + neck=dict(type='GlobalAveragePooling'), + head=dict( + type='LinearClsHead', + num_classes=1000, + in_channels=512, + loss=dict(type='CrossEntropyLoss'), + topk=(1, 5), + )) + + model = CLASSIFIERS.build(model_cfg) + + # test backbone output + outs = model.extract_feat(torch.rand(1, 3, 224, 224), stage='backbone') + assert outs[0].shape == (1, 64, 56, 56) + assert outs[1].shape == (1, 128, 28, 28) + assert outs[2].shape == (1, 256, 14, 14) + assert outs[3].shape == (1, 512, 7, 7) + + # test neck output + outs = model.extract_feat(torch.rand(1, 3, 224, 224), stage='neck') + assert outs[0].shape == (1, 64) + assert outs[1].shape == (1, 128) + assert outs[2].shape == (1, 256) + assert outs[3].shape == (1, 512) + + # test pre_logits output + out = model.extract_feat(torch.rand(1, 3, 224, 224), stage='pre_logits') + assert out.shape == (1, 512) + + # test transformer style feature extraction + model_cfg = dict( + type='ImageClassifier', + backbone=dict( + type='VisionTransformer', arch='b', out_indices=[-3, -2, -1]), + neck=None, + head=dict( + type='VisionTransformerClsHead', + num_classes=1000, + in_channels=768, + hidden_dim=1024, + loss=dict(type='CrossEntropyLoss'), + )) + model = CLASSIFIERS.build(model_cfg) + + # test backbone output + outs = model.extract_feat(torch.rand(1, 3, 224, 224), stage='backbone') + for out in outs: + patch_token, cls_token = out + assert patch_token.shape == (1, 768, 14, 14) + assert cls_token.shape == (1, 768) + + # test neck output (the same with backbone) + outs = model.extract_feat(torch.rand(1, 3, 224, 224), stage='neck') + for out in outs: + patch_token, cls_token = out + assert patch_token.shape == (1, 768, 14, 14) + assert cls_token.shape == (1, 768) + + # test pre_logits output + out = model.extract_feat(torch.rand(1, 3, 224, 224), stage='pre_logits') + assert out.shape == (1, 1024) + + # test extract_feats + multi_imgs = [torch.rand(1, 3, 224, 224) for _ in range(3)] + outs = model.extract_feats(multi_imgs) + for outs_per_img in outs: + for out in outs_per_img: + patch_token, cls_token = out + assert patch_token.shape == (1, 768, 14, 14) + assert cls_token.shape == (1, 768) + + outs = model.extract_feats(multi_imgs, stage='pre_logits') + for out_per_img in outs: + assert out_per_img.shape == (1, 1024) + + out = model.forward_dummy(torch.rand(1, 3, 224, 224)) + assert out.shape == (1, 1024) diff --git a/openmmlab_test/mmclassification-0.24.1/tests/test_models/test_heads.py b/openmmlab_test/mmclassification-0.24.1/tests/test_models/test_heads.py new file mode 100644 index 00000000..e0ecdb6b --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/tests/test_models/test_heads.py @@ -0,0 +1,400 @@ +# Copyright (c) OpenMMLab. All rights reserved. +from unittest.mock import patch + +import pytest +import torch + +from mmcls.models.heads import (ClsHead, ConformerHead, CSRAClsHead, + DeiTClsHead, EfficientFormerClsHead, + LinearClsHead, MultiLabelClsHead, + MultiLabelLinearClsHead, StackedLinearClsHead, + VisionTransformerClsHead) + + +@pytest.mark.parametrize('feat', [torch.rand(4, 10), (torch.rand(4, 10), )]) +def test_cls_head(feat): + fake_gt_label = torch.randint(0, 10, (4, )) + + # test forward_train with cal_acc=True + head = ClsHead(cal_acc=True) + losses = head.forward_train(feat, fake_gt_label) + assert losses['loss'].item() > 0 + assert 'accuracy' in losses + + # test forward_train with cal_acc=False + head = ClsHead() + losses = head.forward_train(feat, fake_gt_label) + assert losses['loss'].item() > 0 + + # test forward_train with weight + weight = torch.tensor([0.5, 0.5, 0.5, 0.5]) + losses_ = head.forward_train(feat, fake_gt_label) + losses = head.forward_train(feat, fake_gt_label, weight=weight) + assert losses['loss'].item() == losses_['loss'].item() * 0.5 + + # test simple_test with post_process + pred = head.simple_test(feat) + assert isinstance(pred, list) and len(pred) == 4 + with patch('torch.onnx.is_in_onnx_export', return_value=True): + pred = head.simple_test(feat) + assert pred.shape == (4, 10) + + # test simple_test without post_process + pred = head.simple_test(feat, post_process=False) + assert isinstance(pred, torch.Tensor) and pred.shape == (4, 10) + logits = head.simple_test(feat, softmax=False, post_process=False) + torch.testing.assert_allclose(pred, torch.softmax(logits, dim=1)) + + # test pre_logits + features = head.pre_logits(feat) + if isinstance(feat, tuple): + torch.testing.assert_allclose(features, feat[0]) + else: + torch.testing.assert_allclose(features, feat) + + +@pytest.mark.parametrize('feat', [torch.rand(4, 3), (torch.rand(4, 3), )]) +def test_linear_head(feat): + + fake_gt_label = torch.randint(0, 10, (4, )) + + # test LinearClsHead forward + head = LinearClsHead(10, 3) + losses = head.forward_train(feat, fake_gt_label) + assert losses['loss'].item() > 0 + + # test init weights + head = LinearClsHead(10, 3) + head.init_weights() + assert abs(head.fc.weight).sum() > 0 + + # test simple_test with post_process + pred = head.simple_test(feat) + assert isinstance(pred, list) and len(pred) == 4 + with patch('torch.onnx.is_in_onnx_export', return_value=True): + pred = head.simple_test(feat) + assert pred.shape == (4, 10) + + # test simple_test without post_process + pred = head.simple_test(feat, post_process=False) + assert isinstance(pred, torch.Tensor) and pred.shape == (4, 10) + logits = head.simple_test(feat, softmax=False, post_process=False) + torch.testing.assert_allclose(pred, torch.softmax(logits, dim=1)) + + # test pre_logits + features = head.pre_logits(feat) + if isinstance(feat, tuple): + torch.testing.assert_allclose(features, feat[0]) + else: + torch.testing.assert_allclose(features, feat) + + +@pytest.mark.parametrize('feat', [torch.rand(4, 10), (torch.rand(4, 10), )]) +def test_multilabel_head(feat): + head = MultiLabelClsHead() + fake_gt_label = torch.randint(0, 2, (4, 10)) + + losses = head.forward_train(feat, fake_gt_label) + assert losses['loss'].item() > 0 + + # test simple_test with post_process + pred = head.simple_test(feat) + assert isinstance(pred, list) and len(pred) == 4 + with patch('torch.onnx.is_in_onnx_export', return_value=True): + pred = head.simple_test(feat) + assert pred.shape == (4, 10) + + # test simple_test without post_process + pred = head.simple_test(feat, post_process=False) + assert isinstance(pred, torch.Tensor) and pred.shape == (4, 10) + logits = head.simple_test(feat, sigmoid=False, post_process=False) + torch.testing.assert_allclose(pred, torch.sigmoid(logits)) + + # test pre_logits + features = head.pre_logits(feat) + if isinstance(feat, tuple): + torch.testing.assert_allclose(features, feat[0]) + else: + torch.testing.assert_allclose(features, feat) + + +@pytest.mark.parametrize('feat', [torch.rand(4, 5), (torch.rand(4, 5), )]) +def test_multilabel_linear_head(feat): + head = MultiLabelLinearClsHead(10, 5) + fake_gt_label = torch.randint(0, 2, (4, 10)) + + head.init_weights() + losses = head.forward_train(feat, fake_gt_label) + assert losses['loss'].item() > 0 + + # test simple_test with post_process + pred = head.simple_test(feat) + assert isinstance(pred, list) and len(pred) == 4 + with patch('torch.onnx.is_in_onnx_export', return_value=True): + pred = head.simple_test(feat) + assert pred.shape == (4, 10) + + # test simple_test without post_process + pred = head.simple_test(feat, post_process=False) + assert isinstance(pred, torch.Tensor) and pred.shape == (4, 10) + logits = head.simple_test(feat, sigmoid=False, post_process=False) + torch.testing.assert_allclose(pred, torch.sigmoid(logits)) + + # test pre_logits + features = head.pre_logits(feat) + if isinstance(feat, tuple): + torch.testing.assert_allclose(features, feat[0]) + else: + torch.testing.assert_allclose(features, feat) + + +@pytest.mark.parametrize('feat', [torch.rand(4, 5), (torch.rand(4, 5), )]) +def test_stacked_linear_cls_head(feat): + # test assertion + with pytest.raises(AssertionError): + StackedLinearClsHead(num_classes=3, in_channels=5, mid_channels=10) + + with pytest.raises(AssertionError): + StackedLinearClsHead(num_classes=-1, in_channels=5, mid_channels=[10]) + + fake_gt_label = torch.randint(0, 2, (4, )) # B, num_classes + + # test forward with default setting + head = StackedLinearClsHead( + num_classes=10, in_channels=5, mid_channels=[20]) + head.init_weights() + + losses = head.forward_train(feat, fake_gt_label) + assert losses['loss'].item() > 0 + + # test simple_test with post_process + pred = head.simple_test(feat) + assert isinstance(pred, list) and len(pred) == 4 + with patch('torch.onnx.is_in_onnx_export', return_value=True): + pred = head.simple_test(feat) + assert pred.shape == (4, 10) + + # test simple_test without post_process + pred = head.simple_test(feat, post_process=False) + assert isinstance(pred, torch.Tensor) and pred.shape == (4, 10) + logits = head.simple_test(feat, softmax=False, post_process=False) + torch.testing.assert_allclose(pred, torch.softmax(logits, dim=1)) + + # test pre_logits + features = head.pre_logits(feat) + assert features.shape == (4, 20) + + # test forward with full function + head = StackedLinearClsHead( + num_classes=3, + in_channels=5, + mid_channels=[8, 10], + dropout_rate=0.2, + norm_cfg=dict(type='BN1d'), + act_cfg=dict(type='HSwish')) + head.init_weights() + + losses = head.forward_train(feat, fake_gt_label) + assert losses['loss'].item() > 0 + + +def test_vit_head(): + fake_features = ([torch.rand(4, 7, 7, 16), torch.rand(4, 100)], ) + fake_gt_label = torch.randint(0, 10, (4, )) + + # test vit head forward + head = VisionTransformerClsHead(10, 100) + losses = head.forward_train(fake_features, fake_gt_label) + assert not hasattr(head.layers, 'pre_logits') + assert not hasattr(head.layers, 'act') + assert losses['loss'].item() > 0 + + # test vit head forward with hidden layer + head = VisionTransformerClsHead(10, 100, hidden_dim=20) + losses = head.forward_train(fake_features, fake_gt_label) + assert hasattr(head.layers, 'pre_logits') and hasattr(head.layers, 'act') + assert losses['loss'].item() > 0 + + # test vit head init_weights + head = VisionTransformerClsHead(10, 100, hidden_dim=20) + head.init_weights() + assert abs(head.layers.pre_logits.weight).sum() > 0 + + head = VisionTransformerClsHead(10, 100, hidden_dim=20) + # test simple_test with post_process + pred = head.simple_test(fake_features) + assert isinstance(pred, list) and len(pred) == 4 + with patch('torch.onnx.is_in_onnx_export', return_value=True): + pred = head.simple_test(fake_features) + assert pred.shape == (4, 10) + + # test simple_test without post_process + pred = head.simple_test(fake_features, post_process=False) + assert isinstance(pred, torch.Tensor) and pred.shape == (4, 10) + logits = head.simple_test(fake_features, softmax=False, post_process=False) + torch.testing.assert_allclose(pred, torch.softmax(logits, dim=1)) + + # test pre_logits + features = head.pre_logits(fake_features) + assert features.shape == (4, 20) + + # test assertion + with pytest.raises(ValueError): + VisionTransformerClsHead(-1, 100) + + +def test_conformer_head(): + fake_features = ([torch.rand(4, 64), torch.rand(4, 96)], ) + fake_gt_label = torch.randint(0, 10, (4, )) + + # test conformer head forward + head = ConformerHead(num_classes=10, in_channels=[64, 96]) + losses = head.forward_train(fake_features, fake_gt_label) + assert losses['loss'].item() > 0 + + # test simple_test with post_process + pred = head.simple_test(fake_features) + assert isinstance(pred, list) and len(pred) == 4 + with patch('torch.onnx.is_in_onnx_export', return_value=True): + pred = head.simple_test(fake_features) + assert pred.shape == (4, 10) + + # test simple_test without post_process + pred = head.simple_test(fake_features, post_process=False) + assert isinstance(pred, torch.Tensor) and pred.shape == (4, 10) + logits = head.simple_test(fake_features, softmax=False, post_process=False) + torch.testing.assert_allclose(pred, torch.softmax(sum(logits), dim=1)) + + # test pre_logits + features = head.pre_logits(fake_features) + assert features is fake_features[0] + + +def test_deit_head(): + fake_features = ([ + torch.rand(4, 7, 7, 16), + torch.rand(4, 100), + torch.rand(4, 100) + ], ) + fake_gt_label = torch.randint(0, 10, (4, )) + + # test deit head forward + head = DeiTClsHead(num_classes=10, in_channels=100) + losses = head.forward_train(fake_features, fake_gt_label) + assert not hasattr(head.layers, 'pre_logits') + assert not hasattr(head.layers, 'act') + assert losses['loss'].item() > 0 + + # test deit head forward with hidden layer + head = DeiTClsHead(num_classes=10, in_channels=100, hidden_dim=20) + losses = head.forward_train(fake_features, fake_gt_label) + assert hasattr(head.layers, 'pre_logits') and hasattr(head.layers, 'act') + assert losses['loss'].item() > 0 + + # test deit head init_weights + head = DeiTClsHead(10, 100, hidden_dim=20) + head.init_weights() + assert abs(head.layers.pre_logits.weight).sum() > 0 + + head = DeiTClsHead(10, 100, hidden_dim=20) + # test simple_test with post_process + pred = head.simple_test(fake_features) + assert isinstance(pred, list) and len(pred) == 4 + with patch('torch.onnx.is_in_onnx_export', return_value=True): + pred = head.simple_test(fake_features) + assert pred.shape == (4, 10) + + # test simple_test without post_process + pred = head.simple_test(fake_features, post_process=False) + assert isinstance(pred, torch.Tensor) and pred.shape == (4, 10) + logits = head.simple_test(fake_features, softmax=False, post_process=False) + torch.testing.assert_allclose(pred, torch.softmax(logits, dim=1)) + + # test pre_logits + cls_token, dist_token = head.pre_logits(fake_features) + assert cls_token.shape == (4, 20) + assert dist_token.shape == (4, 20) + + # test assertion + with pytest.raises(ValueError): + DeiTClsHead(-1, 100) + + +def test_efficientformer_head(): + fake_features = (torch.rand(4, 64), ) + fake_gt_label = torch.randint(0, 10, (4, )) + + # Test without distillation head + head = EfficientFormerClsHead( + num_classes=10, in_channels=64, distillation=False) + + # test EfficientFormer head forward + losses = head.forward_train(fake_features, fake_gt_label) + assert losses['loss'].item() > 0 + + # test simple_test with post_process + pred = head.simple_test(fake_features) + assert isinstance(pred, list) and len(pred) == 4 + with patch('torch.onnx.is_in_onnx_export', return_value=True): + pred = head.simple_test(fake_features) + assert pred.shape == (4, 10) + + # test simple_test without post_process + pred = head.simple_test(fake_features, post_process=False) + assert isinstance(pred, torch.Tensor) and pred.shape == (4, 10) + logits = head.simple_test(fake_features, softmax=False, post_process=False) + torch.testing.assert_allclose(pred, torch.softmax(logits, dim=1)) + + # test pre_logits + features = head.pre_logits(fake_features) + assert features is fake_features[0] + + # Test without distillation head + head = EfficientFormerClsHead(num_classes=10, in_channels=64) + assert hasattr(head, 'head') + assert hasattr(head, 'dist_head') + + # Test loss + with pytest.raises(NotImplementedError): + losses = head.forward_train(fake_features, fake_gt_label) + + # test simple_test with post_process + pred = head.simple_test(fake_features) + assert isinstance(pred, list) and len(pred) == 4 + with patch('torch.onnx.is_in_onnx_export', return_value=True): + pred = head.simple_test(fake_features) + assert pred.shape == (4, 10) + + # test simple_test without post_process + pred = head.simple_test(fake_features, post_process=False) + assert isinstance(pred, torch.Tensor) and pred.shape == (4, 10) + logits = head.simple_test(fake_features, softmax=False, post_process=False) + torch.testing.assert_allclose(pred, torch.softmax(logits, dim=1)) + + # test pre_logits + features = head.pre_logits(fake_features) + assert features is fake_features[0] + + +@pytest.mark.parametrize( + 'feat', [torch.rand(4, 20, 20, 30), (torch.rand(4, 20, 20, 30), )]) +def test_csra_head(feat): + head = CSRAClsHead(num_classes=10, in_channels=20, num_heads=1, lam=0.1) + fake_gt_label = torch.randint(0, 2, (4, 10)) + + losses = head.forward_train(feat, fake_gt_label) + assert losses['loss'].item() > 0 + + # test simple_test with post_process + pred = head.simple_test(feat) + assert isinstance(pred, list) and len(pred) == 4 + with patch('torch.onnx.is_in_onnx_export', return_value=True): + pred = head.simple_test(feat) + assert pred.shape == (4, 10) + + # test pre_logits + features = head.pre_logits(feat) + if isinstance(feat, tuple): + torch.testing.assert_allclose(features, feat[0]) + else: + torch.testing.assert_allclose(features, feat) diff --git a/openmmlab_test/mmclassification-0.24.1/tests/test_models/test_neck.py b/openmmlab_test/mmclassification-0.24.1/tests/test_models/test_neck.py new file mode 100644 index 00000000..b554e3da --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/tests/test_models/test_neck.py @@ -0,0 +1,87 @@ +# Copyright (c) OpenMMLab. All rights reserved. +import pytest +import torch + +from mmcls.models.necks import (GeneralizedMeanPooling, GlobalAveragePooling, + HRFuseScales) + + +def test_gap_neck(): + + # test 1d gap_neck + neck = GlobalAveragePooling(dim=1) + # batch_size, num_features, feature_size + fake_input = torch.rand(1, 16, 24) + + output = neck(fake_input) + # batch_size, num_features + assert output.shape == (1, 16) + + # test 1d gap_neck + neck = GlobalAveragePooling(dim=2) + # batch_size, num_features, feature_size(2) + fake_input = torch.rand(1, 16, 24, 24) + + output = neck(fake_input) + # batch_size, num_features + assert output.shape == (1, 16) + + # test 1d gap_neck + neck = GlobalAveragePooling(dim=3) + # batch_size, num_features, feature_size(3) + fake_input = torch.rand(1, 16, 24, 24, 5) + + output = neck(fake_input) + # batch_size, num_features + assert output.shape == (1, 16) + + with pytest.raises(AssertionError): + # dim must in [1, 2, 3] + GlobalAveragePooling(dim='other') + + +def test_gem_neck(): + + # test gem_neck + neck = GeneralizedMeanPooling() + # batch_size, num_features, feature_size(2) + fake_input = torch.rand(1, 16, 24, 24) + + output = neck(fake_input) + # batch_size, num_features + assert output.shape == (1, 16) + + # test tuple input gem_neck + neck = GeneralizedMeanPooling() + # batch_size, num_features, feature_size(2) + fake_input = (torch.rand(1, 8, 24, 24), torch.rand(1, 16, 24, 24)) + + output = neck(fake_input) + # batch_size, num_features + assert output[0].shape == (1, 8) + assert output[1].shape == (1, 16) + + with pytest.raises(AssertionError): + # p must be a value greater then 1 + GeneralizedMeanPooling(p=0.5) + + +def test_hr_fuse_scales(): + + in_channels = (18, 32, 64, 128) + neck = HRFuseScales(in_channels=in_channels, out_channels=1024) + + feat_size = 56 + inputs = [] + for in_channel in in_channels: + input_tensor = torch.rand(3, in_channel, feat_size, feat_size) + inputs.append(input_tensor) + feat_size = feat_size // 2 + + with pytest.raises(AssertionError): + neck(inputs) + + outs = neck(tuple(inputs)) + assert isinstance(outs, tuple) + assert len(outs) == 1 + assert outs[0].shape == (3, 1024, 7, 7) diff --git a/openmmlab_test/mmclassification-0.24.1/tests/test_models/test_utils/test_attention.py b/openmmlab_test/mmclassification-0.24.1/tests/test_models/test_utils/test_attention.py new file mode 100644 index 00000000..cc37d134 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/tests/test_models/test_utils/test_attention.py @@ -0,0 +1,208 @@ +# Copyright (c) OpenMMLab. All rights reserved. +from functools import partial +from unittest import TestCase +from unittest.mock import ANY, MagicMock + +import pytest +import torch +from mmcv.utils import TORCH_VERSION, digit_version + +from mmcls.models.utils.attention import ShiftWindowMSA, WindowMSA + +if digit_version(TORCH_VERSION) >= digit_version('1.10.0a0'): + torch_meshgrid_ij = partial(torch.meshgrid, indexing='ij') +else: + torch_meshgrid_ij = torch.meshgrid # Uses indexing='ij' by default + + +def get_relative_position_index(window_size): + """Method from original code of Swin-Transformer.""" + coords_h = torch.arange(window_size[0]) + coords_w = torch.arange(window_size[1]) + coords = torch.stack(torch_meshgrid_ij([coords_h, coords_w])) # 2, Wh, Ww + coords_flatten = torch.flatten(coords, 1) # 2, Wh*Ww + # 2, Wh*Ww, Wh*Ww + relative_coords = coords_flatten[:, :, None] - coords_flatten[:, None, :] + # Wh*Ww, Wh*Ww, 2 + relative_coords = relative_coords.permute(1, 2, 0).contiguous() + relative_coords[:, :, 0] += window_size[0] - 1 # shift to start from 0 + relative_coords[:, :, 1] += window_size[1] - 1 + relative_coords[:, :, 0] *= 2 * window_size[1] - 1 + relative_position_index = relative_coords.sum(-1) # Wh*Ww, Wh*Ww + return relative_position_index + + +class TestWindowMSA(TestCase): + + def test_forward(self): + attn = WindowMSA(embed_dims=96, window_size=(7, 7), num_heads=4) + inputs = torch.rand((16, 7 * 7, 96)) + output = attn(inputs) + self.assertEqual(output.shape, inputs.shape) + + # test non-square window_size + attn = WindowMSA(embed_dims=96, window_size=(6, 7), num_heads=4) + inputs = torch.rand((16, 6 * 7, 96)) + output = attn(inputs) + self.assertEqual(output.shape, inputs.shape) + + def test_relative_pos_embed(self): + attn = WindowMSA(embed_dims=96, window_size=(7, 8), num_heads=4) + self.assertEqual(attn.relative_position_bias_table.shape, + ((2 * 7 - 1) * (2 * 8 - 1), 4)) + # test relative_position_index + expected_rel_pos_index = get_relative_position_index((7, 8)) + self.assertTrue( + torch.allclose(attn.relative_position_index, + expected_rel_pos_index)) + + # test default init + self.assertTrue( + torch.allclose(attn.relative_position_bias_table, + torch.tensor(0.))) + attn.init_weights() + self.assertFalse( + torch.allclose(attn.relative_position_bias_table, + torch.tensor(0.))) + + def test_qkv_bias(self): + # test qkv_bias=True + attn = WindowMSA( + embed_dims=96, window_size=(7, 7), num_heads=4, qkv_bias=True) + self.assertEqual(attn.qkv.bias.shape, (96 * 3, )) + + # test qkv_bias=False + attn = WindowMSA( + embed_dims=96, window_size=(7, 7), num_heads=4, qkv_bias=False) + self.assertIsNone(attn.qkv.bias) + + def tets_qk_scale(self): + # test default qk_scale + attn = WindowMSA( + embed_dims=96, window_size=(7, 7), num_heads=4, qk_scale=None) + head_dims = 96 // 4 + self.assertAlmostEqual(attn.scale, head_dims**-0.5) + + # test specified qk_scale + attn = WindowMSA( + embed_dims=96, window_size=(7, 7), num_heads=4, qk_scale=0.3) + self.assertEqual(attn.scale, 0.3) + + def test_attn_drop(self): + inputs = torch.rand(16, 7 * 7, 96) + attn = WindowMSA( + embed_dims=96, window_size=(7, 7), num_heads=4, attn_drop=1.0) + # drop all attn output, output shuold be equal to proj.bias + self.assertTrue(torch.allclose(attn(inputs), attn.proj.bias)) + + def test_prob_drop(self): + inputs = torch.rand(16, 7 * 7, 96) + attn = WindowMSA( + embed_dims=96, window_size=(7, 7), num_heads=4, proj_drop=1.0) + self.assertTrue(torch.allclose(attn(inputs), torch.tensor(0.))) + + def test_mask(self): + inputs = torch.rand(16, 7 * 7, 96) + attn = WindowMSA(embed_dims=96, window_size=(7, 7), num_heads=4) + mask = torch.zeros((4, 49, 49)) + # Mask the first column + mask[:, 0, :] = -100 + mask[:, :, 0] = -100 + outs = attn(inputs, mask=mask) + inputs[:, 0, :].normal_() + outs_with_mask = attn(inputs, mask=mask) + torch.testing.assert_allclose(outs[:, 1:, :], outs_with_mask[:, 1:, :]) + + +class TestShiftWindowMSA(TestCase): + + def test_forward(self): + inputs = torch.rand((1, 14 * 14, 96)) + attn = ShiftWindowMSA(embed_dims=96, window_size=7, num_heads=4) + output = attn(inputs, (14, 14)) + self.assertEqual(output.shape, inputs.shape) + self.assertEqual(attn.w_msa.relative_position_bias_table.shape, + ((2 * 7 - 1)**2, 4)) + + # test forward with shift_size + attn = ShiftWindowMSA( + embed_dims=96, window_size=7, num_heads=4, shift_size=3) + output = attn(inputs, (14, 14)) + assert output.shape == (inputs.shape) + + # test irregular input shape + input_resolution = (19, 18) + attn = ShiftWindowMSA(embed_dims=96, num_heads=4, window_size=7) + inputs = torch.rand((1, 19 * 18, 96)) + output = attn(inputs, input_resolution) + assert output.shape == (inputs.shape) + + # test wrong input_resolution + input_resolution = (14, 14) + attn = ShiftWindowMSA(embed_dims=96, num_heads=4, window_size=7) + inputs = torch.rand((1, 14 * 14, 96)) + with pytest.raises(AssertionError): + attn(inputs, (14, 15)) + + def test_pad_small_map(self): + # test pad_small_map=True + inputs = torch.rand((1, 6 * 7, 96)) + attn = ShiftWindowMSA( + embed_dims=96, + window_size=7, + num_heads=4, + shift_size=3, + pad_small_map=True) + attn.get_attn_mask = MagicMock(wraps=attn.get_attn_mask) + output = attn(inputs, (6, 7)) + self.assertEqual(output.shape, inputs.shape) + attn.get_attn_mask.assert_called_once_with((7, 7), + window_size=7, + shift_size=3, + device=ANY) + + # test pad_small_map=False + inputs = torch.rand((1, 6 * 7, 96)) + attn = ShiftWindowMSA( + embed_dims=96, + window_size=7, + num_heads=4, + shift_size=3, + pad_small_map=False) + with self.assertRaisesRegex(AssertionError, r'the window size \(7\)'): + attn(inputs, (6, 7)) + + # test pad_small_map=False, and the input size equals to window size + inputs = torch.rand((1, 7 * 7, 96)) + attn.get_attn_mask = MagicMock(wraps=attn.get_attn_mask) + output = attn(inputs, (7, 7)) + self.assertEqual(output.shape, inputs.shape) + attn.get_attn_mask.assert_called_once_with((7, 7), + window_size=7, + shift_size=0, + device=ANY) + + def test_drop_layer(self): + inputs = torch.rand((1, 14 * 14, 96)) + attn = ShiftWindowMSA( + embed_dims=96, + window_size=7, + num_heads=4, + dropout_layer=dict(type='Dropout', drop_prob=1.0)) + attn.init_weights() + # drop all attn output, output shuold be equal to proj.bias + self.assertTrue( + torch.allclose(attn(inputs, (14, 14)), torch.tensor(0.))) + + def test_deprecation(self): + # test deprecated arguments + with pytest.warns(DeprecationWarning): + ShiftWindowMSA( + embed_dims=96, + num_heads=4, + window_size=7, + input_resolution=(14, 14)) + + with pytest.warns(DeprecationWarning): + ShiftWindowMSA( + embed_dims=96, num_heads=4, window_size=7, auto_pad=True) diff --git a/openmmlab_test/mmclassification-0.24.1/tests/test_models/test_utils/test_augment.py b/openmmlab_test/mmclassification-0.24.1/tests/test_models/test_utils/test_augment.py new file mode 100644 index 00000000..d1987fae --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/tests/test_models/test_utils/test_augment.py @@ -0,0 +1,96 @@ +# Copyright (c) OpenMMLab. All rights reserved. +import pytest +import torch + +from mmcls.models.utils import Augments + +augment_cfgs = [ + dict(type='BatchCutMix', alpha=1., prob=1.), + dict(type='BatchMixup', alpha=1., prob=1.), + dict(type='Identity', prob=1.), + dict(type='BatchResizeMix', alpha=1., prob=1.) +] + + +def test_augments(): + imgs = torch.randn(4, 3, 32, 32) + labels = torch.randint(0, 10, (4, )) + + # Test cutmix + augments_cfg = dict(type='BatchCutMix', alpha=1., num_classes=10, prob=1.) + augs = Augments(augments_cfg) + mixed_imgs, mixed_labels = augs(imgs, labels) + assert mixed_imgs.shape == torch.Size((4, 3, 32, 32)) + assert mixed_labels.shape == torch.Size((4, 10)) + + # Test mixup + augments_cfg = dict(type='BatchMixup', alpha=1., num_classes=10, prob=1.) + augs = Augments(augments_cfg) + mixed_imgs, mixed_labels = augs(imgs, labels) + assert mixed_imgs.shape == torch.Size((4, 3, 32, 32)) + assert mixed_labels.shape == torch.Size((4, 10)) + + # Test resizemix + augments_cfg = dict( + type='BatchResizeMix', alpha=1., num_classes=10, prob=1.) + augs = Augments(augments_cfg) + mixed_imgs, mixed_labels = augs(imgs, labels) + assert mixed_imgs.shape == torch.Size((4, 3, 32, 32)) + assert mixed_labels.shape == torch.Size((4, 10)) + + # Test cutmixup + augments_cfg = [ + dict(type='BatchCutMix', alpha=1., num_classes=10, prob=0.5), + dict(type='BatchMixup', alpha=1., num_classes=10, prob=0.3) + ] + augs = Augments(augments_cfg) + mixed_imgs, mixed_labels = augs(imgs, labels) + assert mixed_imgs.shape == torch.Size((4, 3, 32, 32)) + assert mixed_labels.shape == torch.Size((4, 10)) + + augments_cfg = [ + dict(type='BatchCutMix', alpha=1., num_classes=10, prob=0.5), + dict(type='BatchMixup', alpha=1., num_classes=10, prob=0.5) + ] + augs = Augments(augments_cfg) + mixed_imgs, mixed_labels = augs(imgs, labels) + assert mixed_imgs.shape == torch.Size((4, 3, 32, 32)) + assert mixed_labels.shape == torch.Size((4, 10)) + + augments_cfg = [ + dict(type='BatchCutMix', alpha=1., num_classes=10, prob=0.5), + dict(type='BatchMixup', alpha=1., num_classes=10, prob=0.3), + dict(type='Identity', num_classes=10, prob=0.2) + ] + augs = Augments(augments_cfg) + mixed_imgs, mixed_labels = augs(imgs, labels) + assert mixed_imgs.shape == torch.Size((4, 3, 32, 32)) + assert mixed_labels.shape == torch.Size((4, 10)) + + +@pytest.mark.parametrize('cfg', augment_cfgs) +def test_binary_augment(cfg): + + cfg_ = dict(num_classes=1, **cfg) + augs = Augments(cfg_) + + imgs = torch.randn(4, 3, 32, 32) + labels = torch.randint(0, 2, (4, 1)).float() + + mixed_imgs, mixed_labels = augs(imgs, labels) + assert mixed_imgs.shape == torch.Size((4, 3, 32, 32)) + assert mixed_labels.shape == torch.Size((4, 1)) + + +@pytest.mark.parametrize('cfg', augment_cfgs) +def test_multilabel_augment(cfg): + + cfg_ = dict(num_classes=10, **cfg) + augs = Augments(cfg_) + + imgs = torch.randn(4, 3, 32, 32) + labels = torch.randint(0, 2, (4, 10)).float() + + mixed_imgs, mixed_labels = augs(imgs, labels) + assert mixed_imgs.shape == torch.Size((4, 3, 32, 32)) + assert mixed_labels.shape == torch.Size((4, 10)) diff --git a/openmmlab_test/mmclassification-0.24.1/tests/test_models/test_utils/test_embed.py b/openmmlab_test/mmclassification-0.24.1/tests/test_models/test_utils/test_embed.py new file mode 100644 index 00000000..eb7356b1 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/tests/test_models/test_utils/test_embed.py @@ -0,0 +1,88 @@ +# Copyright (c) OpenMMLab. All rights reserved. +import pytest +import torch + +from mmcls.models.backbones import VGG +from mmcls.models.utils import HybridEmbed, PatchEmbed, PatchMerging + + +def cal_unfold_dim(dim, kernel_size, stride, padding=0, dilation=1): + return (dim + 2 * padding - dilation * (kernel_size - 1) - 1) // stride + 1 + + +def test_patch_embed(): + # Test PatchEmbed + patch_embed = PatchEmbed() + img = torch.randn(1, 3, 224, 224) + img = patch_embed(img) + assert img.shape == torch.Size((1, 196, 768)) + + # Test PatchEmbed with stride = 8 + conv_cfg = dict(kernel_size=16, stride=8) + patch_embed = PatchEmbed(conv_cfg=conv_cfg) + img = torch.randn(1, 3, 224, 224) + img = patch_embed(img) + assert img.shape == torch.Size((1, 729, 768)) + + +def test_hybrid_embed(): + # Test VGG11 HybridEmbed + backbone = VGG(11, norm_eval=True) + backbone.init_weights() + patch_embed = HybridEmbed(backbone) + img = torch.randn(1, 3, 224, 224) + img = patch_embed(img) + assert img.shape == torch.Size((1, 49, 768)) + + +def test_patch_merging(): + settings = dict(in_channels=16, out_channels=32, padding=0) + downsample = PatchMerging(**settings) + + # test forward with wrong dims + with pytest.raises(AssertionError): + inputs = torch.rand((1, 16, 56 * 56)) + downsample(inputs, input_size=(56, 56)) + + # test patch merging forward + inputs = torch.rand((1, 56 * 56, 16)) + out, output_size = downsample(inputs, input_size=(56, 56)) + assert output_size == (28, 28) + assert out.shape == (1, 28 * 28, 32) + + # test different kernel_size in each direction + downsample = PatchMerging(kernel_size=(2, 3), **settings) + out, output_size = downsample(inputs, input_size=(56, 56)) + expected_dim = cal_unfold_dim(56, 2, 2) * cal_unfold_dim(56, 3, 3) + assert downsample.sampler.kernel_size == (2, 3) + assert output_size == (cal_unfold_dim(56, 2, 2), cal_unfold_dim(56, 3, 3)) + assert out.shape == (1, expected_dim, 32) + + # test default stride + downsample = PatchMerging(kernel_size=6, **settings) + assert downsample.sampler.stride == (6, 6) + + # test stride=3 + downsample = PatchMerging(kernel_size=6, stride=3, **settings) + out, output_size = downsample(inputs, input_size=(56, 56)) + assert downsample.sampler.stride == (3, 3) + assert out.shape == (1, cal_unfold_dim(56, 6, stride=3)**2, 32) + + # test padding + downsample = PatchMerging( + in_channels=16, out_channels=32, kernel_size=6, padding=2) + out, output_size = downsample(inputs, input_size=(56, 56)) + assert downsample.sampler.padding == (2, 2) + assert out.shape == (1, cal_unfold_dim(56, 6, 6, padding=2)**2, 32) + + # test str padding + downsample = PatchMerging(in_channels=16, out_channels=32, kernel_size=6) + out, output_size = downsample(inputs, input_size=(56, 56)) + assert downsample.sampler.padding == (0, 0) + assert out.shape == (1, cal_unfold_dim(56, 6, 6, padding=2)**2, 32) + + # test dilation + downsample = PatchMerging(kernel_size=6, dilation=2, **settings) + out, output_size = downsample(inputs, input_size=(56, 56)) + assert downsample.sampler.dilation == (2, 2) + assert out.shape == (1, cal_unfold_dim(56, 6, 6, dilation=2)**2, 32) diff --git a/openmmlab_test/mmclassification-0.24.1/tests/test_models/test_utils/test_inverted_residual.py b/openmmlab_test/mmclassification-0.24.1/tests/test_models/test_utils/test_inverted_residual.py new file mode 100644 index 00000000..8c363279 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/tests/test_models/test_utils/test_inverted_residual.py @@ -0,0 +1,82 @@ +# Copyright (c) OpenMMLab. All rights reserved. +import pytest +import torch +from torch.nn.modules import GroupNorm +from torch.nn.modules.batchnorm import _BatchNorm + +from mmcls.models.utils import InvertedResidual, SELayer + + +def is_norm(modules): + """Check if is one of the norms.""" + if isinstance(modules, (GroupNorm, _BatchNorm)): + return True + return False + + +def test_inverted_residual(): + + with pytest.raises(AssertionError): + # stride must be in [1, 2] + InvertedResidual(16, 16, 32, stride=3) + + with pytest.raises(AssertionError): + # se_cfg must be None or dict + InvertedResidual(16, 16, 32, se_cfg=list()) + + # Add expand conv if in_channels and mid_channels is not the same + assert InvertedResidual(32, 16, 32).with_expand_conv is False + assert InvertedResidual(16, 16, 32).with_expand_conv is True + + # Test InvertedResidual forward, stride=1 + block = InvertedResidual(16, 16, 32, stride=1) + x = torch.randn(1, 16, 56, 56) + x_out = block(x) + assert getattr(block, 'se', None) is None + assert block.with_res_shortcut + assert x_out.shape == torch.Size((1, 16, 56, 56)) + + # Test InvertedResidual forward, stride=2 + block = InvertedResidual(16, 16, 32, stride=2) + x = torch.randn(1, 16, 56, 56) + x_out = block(x) + assert not block.with_res_shortcut + assert x_out.shape == torch.Size((1, 16, 28, 28)) + + # Test InvertedResidual forward with se layer + se_cfg = dict(channels=32) + block = InvertedResidual(16, 16, 32, stride=1, se_cfg=se_cfg) + x = torch.randn(1, 16, 56, 56) + x_out = block(x) + assert isinstance(block.se, SELayer) + assert x_out.shape == torch.Size((1, 16, 56, 56)) + + # Test InvertedResidual forward without expand conv + block = InvertedResidual(32, 16, 32) + x = torch.randn(1, 32, 56, 56) + x_out = block(x) + assert getattr(block, 'expand_conv', None) is None + assert x_out.shape == torch.Size((1, 16, 56, 56)) + + # Test InvertedResidual forward with GroupNorm + block = InvertedResidual( + 16, 16, 32, norm_cfg=dict(type='GN', num_groups=2)) + x = torch.randn(1, 16, 56, 56) + x_out = block(x) + for m in block.modules(): + if is_norm(m): + assert isinstance(m, GroupNorm) + assert x_out.shape == torch.Size((1, 16, 56, 56)) + + # Test InvertedResidual forward with HSigmoid + block = InvertedResidual(16, 16, 32, act_cfg=dict(type='HSigmoid')) + x = torch.randn(1, 16, 56, 56) + x_out = block(x) + assert x_out.shape == torch.Size((1, 16, 56, 56)) + + # Test InvertedResidual forward with checkpoint + block = InvertedResidual(16, 16, 32, with_cp=True) + x = torch.randn(1, 16, 56, 56) + x_out = block(x) + assert block.with_cp + assert x_out.shape == torch.Size((1, 16, 56, 56)) diff --git a/openmmlab_test/mmclassification-0.24.1/tests/test_models/test_utils/test_layer_scale.py b/openmmlab_test/mmclassification-0.24.1/tests/test_models/test_utils/test_layer_scale.py new file mode 100644 index 00000000..824be998 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/tests/test_models/test_utils/test_layer_scale.py @@ -0,0 +1,48 @@ +# Copyright (c) OpenMMLab. All rights reserved. +from unittest import TestCase + +import torch + +from mmcls.models.utils import LayerScale + + +class TestLayerScale(TestCase): + + def test_init(self): + with self.assertRaisesRegex(AssertionError, "'data_format' could"): + cfg = dict( + dim=10, + inplace=False, + data_format='BNC', + ) + LayerScale(**cfg) + + cfg = dict(dim=10) + ls = LayerScale(**cfg) + assert torch.equal(ls.weight, + torch.ones(10, requires_grad=True) * 1e-5) + + def forward(self): + # Test channels_last + cfg = dict(dim=256, inplace=False, data_format='channels_last') + ls_channels_last = LayerScale(**cfg) + x = torch.randn((4, 49, 256)) + out = ls_channels_last(x) + self.assertEqual(tuple(out.size()), (4, 49, 256)) + assert torch.equal(x * 1e-5, out) + + # Test channels_first + cfg = dict(dim=256, inplace=False, data_format='channels_first') + ls_channels_first = LayerScale(**cfg) + x = torch.randn((4, 256, 7, 7)) + out = ls_channels_first(x) + self.assertEqual(tuple(out.size()), (4, 256, 7, 7)) + assert torch.equal(x * 1e-5, out) + + # Test inplace True + cfg = dict(dim=256, inplace=True, data_format='channels_first') + ls_channels_first = LayerScale(**cfg) + x = torch.randn((4, 256, 7, 7)) + out = ls_channels_first(x) + self.assertEqual(tuple(out.size()), (4, 256, 7, 7)) + self.assertIs(x, out) diff --git a/openmmlab_test/mmclassification-0.24.1/tests/test_models/test_utils/test_misc.py b/openmmlab_test/mmclassification-0.24.1/tests/test_models/test_utils/test_misc.py new file mode 100644 index 00000000..86df85ff --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/tests/test_models/test_utils/test_misc.py @@ -0,0 +1,59 @@ +# Copyright (c) OpenMMLab. All rights reserved. +import pytest +import torch +from mmcv.utils import digit_version + +from mmcls.models.utils import channel_shuffle, is_tracing, make_divisible + + +def test_make_divisible(): + # test min_value is None + result = make_divisible(34, 8, None) + assert result == 32 + + # test when new_value > min_ratio * value + result = make_divisible(10, 8, min_ratio=0.9) + assert result == 16 + + # test min_value = 0.8 + result = make_divisible(33, 8, min_ratio=0.8) + assert result == 32 + + +def test_channel_shuffle(): + x = torch.randn(1, 24, 56, 56) + with pytest.raises(AssertionError): + # num_channels should be divisible by groups + channel_shuffle(x, 7) + + groups = 3 + batch_size, num_channels, height, width = x.size() + channels_per_group = num_channels // groups + out = channel_shuffle(x, groups) + # test the output value when groups = 3 + for b in range(batch_size): + for c in range(num_channels): + c_out = c % channels_per_group * groups + c // channels_per_group + for i in range(height): + for j in range(width): + assert x[b, c, i, j] == out[b, c_out, i, j] + + +@pytest.mark.skipif( + digit_version(torch.__version__) < digit_version('1.6.0'), + reason='torch.jit.is_tracing is not available before 1.6.0') +def test_is_tracing(): + + def foo(x): + if is_tracing(): + return x + else: + return x.tolist() + + x = torch.rand(3) + # test without trace + assert isinstance(foo(x), list) + + # test with trace + traced_foo = torch.jit.trace(foo, (torch.rand(1), )) + assert isinstance(traced_foo(x), torch.Tensor) diff --git a/openmmlab_test/mmclassification-0.24.1/tests/test_models/test_utils/test_position_encoding.py b/openmmlab_test/mmclassification-0.24.1/tests/test_models/test_utils/test_position_encoding.py new file mode 100644 index 00000000..feb171c2 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/tests/test_models/test_utils/test_position_encoding.py @@ -0,0 +1,10 @@ +# Copyright (c) OpenMMLab. All rights reserved. +import torch + +from mmcls.models.utils import ConditionalPositionEncoding + + +def test_conditional_position_encoding_module(): + CPE = ConditionalPositionEncoding(in_channels=32, embed_dims=32, stride=2) + outs = CPE(torch.randn(1, 3136, 32), (56, 56)) + assert outs.shape == torch.Size([1, 784, 32]) diff --git a/openmmlab_test/mmclassification-0.24.1/tests/test_models/test_utils/test_se.py b/openmmlab_test/mmclassification-0.24.1/tests/test_models/test_utils/test_se.py new file mode 100644 index 00000000..8cb8c509 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/tests/test_models/test_utils/test_se.py @@ -0,0 +1,95 @@ +# Copyright (c) OpenMMLab. All rights reserved. +import pytest +import torch +from torch.nn.modules import GroupNorm +from torch.nn.modules.batchnorm import _BatchNorm + +from mmcls.models.utils import SELayer + + +def is_norm(modules): + """Check if is one of the norms.""" + if isinstance(modules, (GroupNorm, _BatchNorm)): + return True + return False + + +def test_se(): + with pytest.raises(AssertionError): + # base_channels must be a number + SELayer(16, squeeze_channels='32') + + with pytest.raises(AssertionError): + # base_channels must be None or a number larger than 0 + SELayer(16, squeeze_channels=-1) + + with pytest.raises(AssertionError): + # act_cfg must be two dict tuple + SELayer( + 16, + act_cfg=(dict(type='ReLU'), dict(type='Sigmoid'), + dict(type='ReLU'))) + + # Test SELayer forward, channels=64 + input = torch.randn((4, 64, 112, 112)) + se = SELayer(64) + output = se(input) + assert se.conv1.out_channels == 8 + assert se.conv2.in_channels == 8 + assert output.shape == torch.Size((4, 64, 112, 112)) + + # Test SELayer forward, ratio=4 + input = torch.randn((4, 128, 112, 112)) + se = SELayer(128, ratio=4) + output = se(input) + assert se.conv1.out_channels == 32 + assert se.conv2.in_channels == 32 + assert output.shape == torch.Size((4, 128, 112, 112)) + + # Test SELayer forward, channels=54, ratio=4 + # channels cannot be divisible by ratio + input = torch.randn((1, 54, 76, 103)) + se = SELayer(54, ratio=4) + output = se(input) + assert se.conv1.out_channels == 16 + assert se.conv2.in_channels == 16 + assert output.shape == torch.Size((1, 54, 76, 103)) + + # Test SELayer forward, divisor=2 + se = SELayer(54, ratio=4, divisor=2) + output = se(input) + assert se.conv1.out_channels == 14 + assert se.conv2.in_channels == 14 + assert output.shape == torch.Size((1, 54, 76, 103)) + + # Test SELayer forward, squeeze_channels=25 + input = torch.randn((1, 128, 56, 56)) + se = SELayer(128, squeeze_channels=25) + output = se(input) + assert se.conv1.out_channels == 25 + assert se.conv2.in_channels == 25 + assert output.shape == torch.Size((1, 128, 56, 56)) + + # Test SELayer forward, not used ratio and divisor + input = torch.randn((1, 128, 56, 56)) + se = SELayer( + 128, + squeeze_channels=13, + ratio=4, + divisor=8, + ) + output = se(input) + assert se.conv1.out_channels == 13 + assert se.conv2.in_channels == 13 + assert output.shape == torch.Size((1, 128, 56, 56)) + + # Test SELayer with HSigmoid activate layer + input = torch.randn((4, 128, 56, 56)) + se = SELayer( + 128, + squeeze_channels=25, + act_cfg=(dict(type='ReLU'), dict(type='HSigmoid'))) + output = se(input) + assert se.conv1.out_channels == 25 + assert se.conv2.in_channels == 25 + assert output.shape == torch.Size((4, 128, 56, 56)) diff --git a/openmmlab_test/mmclassification-speed-benchmark/tests/test_eval_hook.py b/openmmlab_test/mmclassification-0.24.1/tests/test_runtime/test_eval_hook.py similarity index 89% rename from openmmlab_test/mmclassification-speed-benchmark/tests/test_eval_hook.py rename to openmmlab_test/mmclassification-0.24.1/tests/test_runtime/test_eval_hook.py index 5ef42857..b925bdeb 100644 --- a/openmmlab_test/mmclassification-speed-benchmark/tests/test_eval_hook.py +++ b/openmmlab_test/mmclassification-0.24.1/tests/test_runtime/test_eval_hook.py @@ -1,6 +1,6 @@ +# Copyright (c) OpenMMLab. All rights reserved. import logging import tempfile -import warnings from unittest.mock import MagicMock, patch import mmcv.runner @@ -8,21 +8,11 @@ import pytest import torch import torch.nn as nn from mmcv.runner import obj_from_dict +from mmcv.runner.hooks import DistEvalHook, EvalHook from torch.utils.data import DataLoader, Dataset from mmcls.apis import single_gpu_test -# TODO import eval hooks from mmcv and delete them from mmcls -try: - from mmcv.runner.hooks import EvalHook, DistEvalHook - use_mmcv_hook = True -except ImportError: - warnings.warn('DeprecationWarning: EvalHook and DistEvalHook from mmcls ' - 'will be deprecated.' - 'Please install mmcv through master branch.') - from mmcls.core import EvalHook, DistEvalHook - use_mmcv_hook = False - class ExampleDataset(Dataset): @@ -156,9 +146,8 @@ def test_dist_eval_hook(): # test DistEvalHook with tempfile.TemporaryDirectory() as tmpdir: - if use_mmcv_hook: - p = patch('mmcv.engine.multi_gpu_test', multi_gpu_test) - p.start() + p = patch('mmcv.engine.multi_gpu_test', multi_gpu_test) + p.start() eval_hook = DistEvalHook(data_loader, by_epoch=False) runner = mmcv.runner.IterBasedRunner( model=model, @@ -170,8 +159,7 @@ def test_dist_eval_hook(): runner.run([loader], [('train', 1)]) test_dataset.evaluate.assert_called_with([torch.tensor([1])], logger=runner.logger) - if use_mmcv_hook: - p.stop() + p.stop() @patch('mmcls.apis.multi_gpu_test', multi_gpu_test) @@ -200,9 +188,8 @@ def test_dist_eval_hook_epoch(): # test DistEvalHook with tempfile.TemporaryDirectory() as tmpdir: - if use_mmcv_hook: - p = patch('mmcv.engine.multi_gpu_test', multi_gpu_test) - p.start() + p = patch('mmcv.engine.multi_gpu_test', multi_gpu_test) + p.start() eval_hook = DistEvalHook(data_loader, by_epoch=True, interval=2) runner = mmcv.runner.EpochBasedRunner( model=model, @@ -214,5 +201,4 @@ def test_dist_eval_hook_epoch(): runner.run([loader], [('train', 1)]) test_dataset.evaluate.assert_called_with([torch.tensor([1])], logger=runner.logger) - if use_mmcv_hook: - p.stop() + p.stop() diff --git a/openmmlab_test/mmclassification-0.24.1/tests/test_runtime/test_hooks.py b/openmmlab_test/mmclassification-0.24.1/tests/test_runtime/test_hooks.py new file mode 100644 index 00000000..70140d9e --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/tests/test_runtime/test_hooks.py @@ -0,0 +1,158 @@ +# Copyright (c) OpenMMLab. All rights reserved. +import logging +import shutil +import tempfile + +import numpy as np +import pytest +import torch +import torch.nn as nn +from mmcv.runner import build_runner +from mmcv.runner.hooks import Hook, IterTimerHook +from torch.utils.data import DataLoader + +import mmcls.core # noqa: F401 + + +def _build_demo_runner_without_hook(runner_type='EpochBasedRunner', + max_epochs=1, + max_iters=None, + multi_optimziers=False): + + class Model(nn.Module): + + def __init__(self): + super().__init__() + self.linear = nn.Linear(2, 1) + self.conv = nn.Conv2d(3, 3, 3) + + def forward(self, x): + return self.linear(x) + + def train_step(self, x, optimizer, **kwargs): + return dict(loss=self(x)) + + def val_step(self, x, optimizer, **kwargs): + return dict(loss=self(x)) + + model = Model() + + if multi_optimziers: + optimizer = { + 'model1': + torch.optim.SGD(model.linear.parameters(), lr=0.02, momentum=0.95), + 'model2': + torch.optim.SGD(model.conv.parameters(), lr=0.01, momentum=0.9), + } + else: + optimizer = torch.optim.SGD(model.parameters(), lr=0.02, momentum=0.95) + + tmp_dir = tempfile.mkdtemp() + runner = build_runner( + dict(type=runner_type), + default_args=dict( + model=model, + work_dir=tmp_dir, + optimizer=optimizer, + logger=logging.getLogger(), + max_epochs=max_epochs, + max_iters=max_iters)) + return runner + + +def _build_demo_runner(runner_type='EpochBasedRunner', + max_epochs=1, + max_iters=None, + multi_optimziers=False): + + log_config = dict( + interval=1, hooks=[ + dict(type='TextLoggerHook'), + ]) + + runner = _build_demo_runner_without_hook(runner_type, max_epochs, + max_iters, multi_optimziers) + + runner.register_checkpoint_hook(dict(interval=1)) + runner.register_logger_hooks(log_config) + return runner + + +class ValueCheckHook(Hook): + + def __init__(self, check_dict, by_epoch=False): + super().__init__() + self.check_dict = check_dict + self.by_epoch = by_epoch + + def after_iter(self, runner): + if self.by_epoch: + return + if runner.iter in self.check_dict: + for attr, target in self.check_dict[runner.iter].items(): + value = eval(f'runner.{attr}') + assert np.isclose(value, target), \ + (f'The value of `runner.{attr}` is {value}, ' + f'not equals to {target}') + + def after_epoch(self, runner): + if not self.by_epoch: + return + if runner.epoch in self.check_dict: + for attr, target in self.check_dict[runner.epoch]: + value = eval(f'runner.{attr}') + assert np.isclose(value, target), \ + (f'The value of `runner.{attr}` is {value}, ' + f'not equals to {target}') + + +@pytest.mark.parametrize('multi_optimziers', (True, False)) +def test_cosine_cooldown_hook(multi_optimziers): + """xdoctest -m tests/test_hooks.py test_cosine_runner_hook.""" + loader = DataLoader(torch.ones((10, 2))) + runner = _build_demo_runner(multi_optimziers=multi_optimziers) + + # add momentum LR scheduler + hook_cfg = dict( + type='CosineAnnealingCooldownLrUpdaterHook', + by_epoch=False, + cool_down_time=2, + cool_down_ratio=0.1, + min_lr_ratio=0.1, + warmup_iters=2, + warmup_ratio=0.9) + runner.register_hook_from_cfg(hook_cfg) + runner.register_hook_from_cfg(dict(type='IterTimerHook')) + runner.register_hook(IterTimerHook()) + + if multi_optimziers: + check_hook = ValueCheckHook({ + 0: { + 'current_lr()["model1"][0]': 0.02, + 'current_lr()["model2"][0]': 0.01, + }, + 5: { + 'current_lr()["model1"][0]': 0.0075558491, + 'current_lr()["model2"][0]': 0.0037779246, + }, + 9: { + 'current_lr()["model1"][0]': 0.0002, + 'current_lr()["model2"][0]': 0.0001, + } + }) + else: + check_hook = ValueCheckHook({ + 0: { + 'current_lr()[0]': 0.02, + }, + 5: { + 'current_lr()[0]': 0.0075558491, + }, + 9: { + 'current_lr()[0]': 0.0002, + } + }) + runner.register_hook(check_hook, priority='LOWEST') + + runner.run([loader], [('train', 1)]) + shutil.rmtree(runner.work_dir) diff --git a/openmmlab_test/mmclassification-0.24.1/tests/test_runtime/test_num_class_hook.py b/openmmlab_test/mmclassification-0.24.1/tests/test_runtime/test_num_class_hook.py new file mode 100644 index 00000000..fe8fb059 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/tests/test_runtime/test_num_class_hook.py @@ -0,0 +1,84 @@ +# Copyright (c) OpenMMLab. All rights reserved. +import logging +import tempfile +from unittest.mock import MagicMock + +import mmcv.runner as mmcv_runner +import pytest +import torch +from mmcv.runner import obj_from_dict +from torch.utils.data import DataLoader, Dataset + +from mmcls.core.hook import ClassNumCheckHook +from mmcls.models.heads.base_head import BaseHead + + +class ExampleDataset(Dataset): + + def __init__(self, CLASSES): + self.CLASSES = CLASSES + + def __getitem__(self, idx): + results = dict(img=torch.tensor([1]), img_metas=dict()) + return results + + def __len__(self): + return 1 + + +class ExampleHead(BaseHead): + + def __init__(self, init_cfg=None): + super(BaseHead, self).__init__(init_cfg) + self.num_classes = 4 + + def forward_train(self, x, gt_label=None, **kwargs): + pass + + +class ExampleModel(torch.nn.Module): + + def __init__(self): + super(ExampleModel, self).__init__() + self.test_cfg = None + self.conv = torch.nn.Conv2d(3, 3, 3) + self.head = ExampleHead() + + def forward(self, img, img_metas, test_mode=False, **kwargs): + return img + + def train_step(self, data_batch, optimizer): + loss = self.forward(**data_batch) + return dict(loss=loss) + + +@pytest.mark.parametrize('runner_type', + ['EpochBasedRunner', 'IterBasedRunner']) +@pytest.mark.parametrize( + 'CLASSES', [None, ('A', 'B', 'C', 'D', 'E'), ('A', 'B', 'C', 'D')]) +def test_num_class_hook(runner_type, CLASSES): + test_dataset = ExampleDataset(CLASSES) + loader = DataLoader(test_dataset, batch_size=1) + model = ExampleModel() + optim_cfg = dict(type='SGD', lr=0.01, momentum=0.9, weight_decay=0.0005) + optimizer = obj_from_dict(optim_cfg, torch.optim, + dict(params=model.parameters())) + + with tempfile.TemporaryDirectory() as tmpdir: + num_class_hook = ClassNumCheckHook() + logger_mock = MagicMock(spec=logging.Logger) + runner = getattr(mmcv_runner, runner_type)( + model=model, + optimizer=optimizer, + work_dir=tmpdir, + logger=logger_mock, + max_epochs=1) + runner.register_hook(num_class_hook) + if CLASSES is None: + runner.run([loader], [('train', 1)], 1) + logger_mock.warning.assert_called() + elif len(CLASSES) != 4: + with pytest.raises(AssertionError): + runner.run([loader], [('train', 1)], 1) + else: + runner.run([loader], [('train', 1)], 1) diff --git a/openmmlab_test/mmclassification-0.24.1/tests/test_runtime/test_optimizer.py b/openmmlab_test/mmclassification-0.24.1/tests/test_runtime/test_optimizer.py new file mode 100644 index 00000000..2fdaeb08 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/tests/test_runtime/test_optimizer.py @@ -0,0 +1,309 @@ +# Copyright (c) OpenMMLab. All rights reserved. +import functools +from collections import OrderedDict +from copy import deepcopy +from typing import Iterable + +import torch +import torch.nn as nn +from mmcv.runner import build_optimizer +from mmcv.runner.optimizer.builder import OPTIMIZERS +from mmcv.utils.registry import build_from_cfg +from torch.autograd import Variable +from torch.optim.optimizer import Optimizer + +import mmcls.core # noqa: F401 + +base_lr = 0.01 +base_wd = 0.0001 + + +def assert_equal(x, y): + if isinstance(x, torch.Tensor) and isinstance(y, torch.Tensor): + torch.testing.assert_allclose(x, y.to(x.device)) + elif isinstance(x, OrderedDict) and isinstance(y, OrderedDict): + for x_value, y_value in zip(x.values(), y.values()): + assert_equal(x_value, y_value) + elif isinstance(x, dict) and isinstance(y, dict): + assert x.keys() == y.keys() + for key in x.keys(): + assert_equal(x[key], y[key]) + elif isinstance(x, str) and isinstance(y, str): + assert x == y + elif isinstance(x, Iterable) and isinstance(y, Iterable): + assert len(x) == len(y) + for x_item, y_item in zip(x, y): + assert_equal(x_item, y_item) + else: + assert x == y + + +class SubModel(nn.Module): + + def __init__(self): + super().__init__() + self.conv1 = nn.Conv2d(2, 2, kernel_size=1, groups=2) + self.gn = nn.GroupNorm(2, 2) + self.fc = nn.Linear(2, 2) + self.param1 = nn.Parameter(torch.ones(1)) + + def forward(self, x): + return x + + +class ExampleModel(nn.Module): + + def __init__(self): + super().__init__() + self.param1 = nn.Parameter(torch.ones(1)) + self.conv1 = nn.Conv2d(3, 4, kernel_size=1, bias=False) + self.conv2 = nn.Conv2d(4, 2, kernel_size=1) + self.bn = nn.BatchNorm2d(2) + self.sub = SubModel() + self.fc = nn.Linear(2, 1) + + def forward(self, x): + return x + + +def check_lamb_optimizer(optimizer, + model, + bias_lr_mult=1, + bias_decay_mult=1, + norm_decay_mult=1, + dwconv_decay_mult=1): + param_groups = optimizer.param_groups + assert isinstance(optimizer, Optimizer) + assert optimizer.defaults['lr'] == base_lr + assert optimizer.defaults['weight_decay'] == base_wd + model_parameters = list(model.parameters()) + assert len(param_groups) == len(model_parameters) + for i, param in enumerate(model_parameters): + param_group = param_groups[i] + assert torch.equal(param_group['params'][0], param) + # param1 + param1 = param_groups[0] + assert param1['lr'] == base_lr + assert param1['weight_decay'] == base_wd + # conv1.weight + conv1_weight = param_groups[1] + assert conv1_weight['lr'] == base_lr + assert conv1_weight['weight_decay'] == base_wd + # conv2.weight + conv2_weight = param_groups[2] + assert conv2_weight['lr'] == base_lr + assert conv2_weight['weight_decay'] == base_wd + # conv2.bias + conv2_bias = param_groups[3] + assert conv2_bias['lr'] == base_lr * bias_lr_mult + assert conv2_bias['weight_decay'] == base_wd * bias_decay_mult + # bn.weight + bn_weight = param_groups[4] + assert bn_weight['lr'] == base_lr + assert bn_weight['weight_decay'] == base_wd * norm_decay_mult + # bn.bias + bn_bias = param_groups[5] + assert bn_bias['lr'] == base_lr + assert bn_bias['weight_decay'] == base_wd * norm_decay_mult + # sub.param1 + sub_param1 = param_groups[6] + assert sub_param1['lr'] == base_lr + assert sub_param1['weight_decay'] == base_wd + # sub.conv1.weight + sub_conv1_weight = param_groups[7] + assert sub_conv1_weight['lr'] == base_lr + assert sub_conv1_weight['weight_decay'] == base_wd * dwconv_decay_mult + # sub.conv1.bias + sub_conv1_bias = param_groups[8] + assert sub_conv1_bias['lr'] == base_lr * bias_lr_mult + assert sub_conv1_bias['weight_decay'] == base_wd * dwconv_decay_mult + # sub.gn.weight + sub_gn_weight = param_groups[9] + assert sub_gn_weight['lr'] == base_lr + assert sub_gn_weight['weight_decay'] == base_wd * norm_decay_mult + # sub.gn.bias + sub_gn_bias = param_groups[10] + assert sub_gn_bias['lr'] == base_lr + assert sub_gn_bias['weight_decay'] == base_wd * norm_decay_mult + # sub.fc1.weight + sub_fc_weight = param_groups[11] + assert sub_fc_weight['lr'] == base_lr + assert sub_fc_weight['weight_decay'] == base_wd + # sub.fc1.bias + sub_fc_bias = param_groups[12] + assert sub_fc_bias['lr'] == base_lr * bias_lr_mult + assert sub_fc_bias['weight_decay'] == base_wd * bias_decay_mult + # fc1.weight + fc_weight = param_groups[13] + assert fc_weight['lr'] == base_lr + assert fc_weight['weight_decay'] == base_wd + # fc1.bias + fc_bias = param_groups[14] + assert fc_bias['lr'] == base_lr * bias_lr_mult + assert fc_bias['weight_decay'] == base_wd * bias_decay_mult + + +def _test_state_dict(weight, bias, input, constructor): + weight = Variable(weight, requires_grad=True) + bias = Variable(bias, requires_grad=True) + inputs = Variable(input) + + def fn_base(optimizer, weight, bias): + optimizer.zero_grad() + i = input_cuda if weight.is_cuda else inputs + loss = (weight.mv(i) + bias).pow(2).sum() + loss.backward() + return loss + + optimizer = constructor(weight, bias) + fn = functools.partial(fn_base, optimizer, weight, bias) + + # Prime the optimizer + for _ in range(20): + optimizer.step(fn) + # Clone the weights and construct new optimizer for them + weight_c = Variable(weight.data.clone(), requires_grad=True) + bias_c = Variable(bias.data.clone(), requires_grad=True) + optimizer_c = constructor(weight_c, bias_c) + fn_c = functools.partial(fn_base, optimizer_c, weight_c, bias_c) + # Load state dict + state_dict = deepcopy(optimizer.state_dict()) + state_dict_c = deepcopy(optimizer.state_dict()) + optimizer_c.load_state_dict(state_dict_c) + # Run both optimizations in parallel + for _ in range(20): + optimizer.step(fn) + optimizer_c.step(fn_c) + assert_equal(weight, weight_c) + assert_equal(bias, bias_c) + # Make sure state dict wasn't modified + assert_equal(state_dict, state_dict_c) + # Make sure state dict is deterministic with equal + # but not identical parameters + # NOTE: The state_dict of optimizers in PyTorch 1.5 have random keys, + state_dict = deepcopy(optimizer.state_dict()) + state_dict_c = deepcopy(optimizer_c.state_dict()) + keys = state_dict['param_groups'][-1]['params'] + keys_c = state_dict_c['param_groups'][-1]['params'] + for key, key_c in zip(keys, keys_c): + assert_equal(optimizer.state_dict()['state'][key], + optimizer_c.state_dict()['state'][key_c]) + # Make sure repeated parameters have identical representation in state dict + optimizer_c.param_groups.extend(optimizer_c.param_groups) + assert_equal(optimizer_c.state_dict()['param_groups'][0], + optimizer_c.state_dict()['param_groups'][1]) + + # Check that state dict can be loaded even when we cast parameters + # to a different type and move to a different device. + if not torch.cuda.is_available(): + return + + input_cuda = Variable(inputs.data.float().cuda()) + weight_cuda = Variable(weight.data.float().cuda(), requires_grad=True) + bias_cuda = Variable(bias.data.float().cuda(), requires_grad=True) + optimizer_cuda = constructor(weight_cuda, bias_cuda) + fn_cuda = functools.partial(fn_base, optimizer_cuda, weight_cuda, + bias_cuda) + + state_dict = deepcopy(optimizer.state_dict()) + state_dict_c = deepcopy(optimizer.state_dict()) + optimizer_cuda.load_state_dict(state_dict_c) + + # Make sure state dict wasn't modified + assert_equal(state_dict, state_dict_c) + + for _ in range(20): + optimizer.step(fn) + optimizer_cuda.step(fn_cuda) + assert_equal(weight, weight_cuda) + assert_equal(bias, bias_cuda) + + # validate deepcopy() copies all public attributes + def getPublicAttr(obj): + return set(k for k in obj.__dict__ if not k.startswith('_')) + + assert_equal(getPublicAttr(optimizer), getPublicAttr(deepcopy(optimizer))) + + +def _test_basic_cases_template(weight, bias, inputs, constructor, + scheduler_constructors): + """Copied from PyTorch.""" + weight = Variable(weight, requires_grad=True) + bias = Variable(bias, requires_grad=True) + inputs = Variable(inputs) + optimizer = constructor(weight, bias) + schedulers = [] + for scheduler_constructor in scheduler_constructors: + schedulers.append(scheduler_constructor(optimizer)) + + # to check if the optimizer can be printed as a string + optimizer.__repr__() + + def fn(): + optimizer.zero_grad() + y = weight.mv(inputs) + if y.is_cuda and bias.is_cuda and y.get_device() != bias.get_device(): + y = y.cuda(bias.get_device()) + loss = (y + bias).pow(2).sum() + loss.backward() + return loss + + initial_value = fn().item() + for _ in range(200): + for scheduler in schedulers: + scheduler.step() + optimizer.step(fn) + + assert fn().item() < initial_value + + +def _test_basic_cases(constructor, + scheduler_constructors=None, + ignore_multidevice=False): + """Copied from PyTorch.""" + if scheduler_constructors is None: + scheduler_constructors = [] + _test_state_dict( + torch.randn(10, 5), torch.randn(10), torch.randn(5), constructor) + _test_basic_cases_template( + torch.randn(10, 5), torch.randn(10), torch.randn(5), constructor, + scheduler_constructors) + # non-contiguous parameters + _test_basic_cases_template( + torch.randn(10, 5, 2)[..., 0], + torch.randn(10, 2)[..., 0], torch.randn(5), constructor, + scheduler_constructors) + # CUDA + if not torch.cuda.is_available(): + return + _test_basic_cases_template( + torch.randn(10, 5).cuda(), + torch.randn(10).cuda(), + torch.randn(5).cuda(), constructor, scheduler_constructors) + # Multi-GPU + if not torch.cuda.device_count() > 1 or ignore_multidevice: + return + _test_basic_cases_template( + torch.randn(10, 5).cuda(0), + torch.randn(10).cuda(1), + torch.randn(5).cuda(0), constructor, scheduler_constructors) + + +def test_lamb_optimizer(): + model = ExampleModel() + optimizer_cfg = dict( + type='Lamb', + lr=base_lr, + betas=(0.9, 0.999), + eps=1e-8, + weight_decay=base_wd, + paramwise_cfg=dict( + bias_lr_mult=2, + bias_decay_mult=0.5, + norm_decay_mult=0, + dwconv_decay_mult=0.1)) + optimizer = build_optimizer(model, optimizer_cfg) + check_lamb_optimizer(optimizer, model, **optimizer_cfg['paramwise_cfg']) + + _test_basic_cases(lambda weight, bias: build_from_cfg( + dict(type='Lamb', params=[weight, bias], lr=base_lr), OPTIMIZERS)) diff --git a/openmmlab_test/mmclassification-0.24.1/tests/test_runtime/test_preciseBN_hook.py b/openmmlab_test/mmclassification-0.24.1/tests/test_runtime/test_preciseBN_hook.py new file mode 100644 index 00000000..f9375f94 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/tests/test_runtime/test_preciseBN_hook.py @@ -0,0 +1,274 @@ +# Copyright (c) OpenMMLab. All rights reserved. +import numpy as np +import pytest +import torch +import torch.nn as nn +from mmcv.parallel import MMDataParallel, MMDistributedDataParallel +from mmcv.runner import EpochBasedRunner, IterBasedRunner, build_optimizer +from mmcv.utils import get_logger +from mmcv.utils.logging import print_log +from torch.utils.data import DataLoader, Dataset + +from mmcls.core.hook import PreciseBNHook +from mmcls.models.classifiers import BaseClassifier + + +class ExampleDataset(Dataset): + + def __init__(self): + self.index = 0 + + def __getitem__(self, idx): + results = dict(imgs=torch.tensor([1.0], dtype=torch.float32)) + return results + + def __len__(self): + return 1 + + +class BiggerDataset(ExampleDataset): + + def __init__(self, fixed_values=range(0, 12)): + assert len(self) == len(fixed_values) + self.fixed_values = fixed_values + + def __getitem__(self, idx): + results = dict( + imgs=torch.tensor([self.fixed_values[idx]], dtype=torch.float32)) + return results + + def __len__(self): + # a bigger dataset + return 12 + + +class ExampleModel(BaseClassifier): + + def __init__(self): + super().__init__() + self.conv = nn.Linear(1, 1) + self.bn = nn.BatchNorm1d(1) + self.test_cfg = None + + def forward(self, imgs, return_loss=False): + return self.bn(self.conv(imgs)) + + def simple_test(self, img, img_metas=None, **kwargs): + return {} + + def extract_feat(self, img, stage='neck'): + return () + + def forward_train(self, img, gt_label, **kwargs): + return {'loss': 0.5} + + def train_step(self, data_batch, optimizer=None, **kwargs): + self.forward(**data_batch) + outputs = { + 'loss': 0.5, + 'log_vars': { + 'accuracy': 0.98 + }, + 'num_samples': 1 + } + return outputs + + +class SingleBNModel(ExampleModel): + + def __init__(self): + super().__init__() + self.bn = nn.BatchNorm1d(1) + self.test_cfg = None + + def forward(self, imgs, return_loss=False): + return self.bn(imgs) + + +class GNExampleModel(ExampleModel): + + def __init__(self): + super().__init__() + self.conv = nn.Linear(1, 1) + self.bn = nn.GroupNorm(1, 1) + self.test_cfg = None + + +class NoBNExampleModel(ExampleModel): + + def __init__(self): + super().__init__() + self.conv = nn.Linear(1, 1) + self.test_cfg = None + + def forward(self, imgs, return_loss=False): + return self.conv(imgs) + + +def test_precise_bn(): + optimizer_cfg = dict( + type='SGD', lr=0.01, momentum=0.9, weight_decay=0.0001) + + test_dataset = ExampleDataset() + loader = DataLoader(test_dataset, batch_size=2) + model = ExampleModel() + optimizer = build_optimizer(model, optimizer_cfg) + logger = get_logger('precise_bn') + runner = EpochBasedRunner( + model=model, + batch_processor=None, + optimizer=optimizer, + logger=logger, + max_epochs=1) + + with pytest.raises(AssertionError): + # num_samples must be larger than 0 + precise_bn_hook = PreciseBNHook(num_samples=-1) + runner.register_hook(precise_bn_hook) + runner.run([loader], [('train', 1)]) + + with pytest.raises(AssertionError): + # interval must be larger than 0 + precise_bn_hook = PreciseBNHook(interval=0) + runner.register_hook(precise_bn_hook) + runner.run([loader], [('train', 1)]) + + with pytest.raises(AssertionError): + # interval must be larger than 0 + runner = EpochBasedRunner( + model=model, + batch_processor=None, + optimizer=optimizer, + logger=logger, + max_epochs=1) + precise_bn_hook = PreciseBNHook(interval=0) + runner.register_hook(precise_bn_hook) + runner.run([loader], [('train', 1)]) + + with pytest.raises(AssertionError): + # only support EpochBaseRunner + runner = IterBasedRunner( + model=model, + batch_processor=None, + optimizer=optimizer, + logger=logger, + max_epochs=1) + precise_bn_hook = PreciseBNHook(interval=2) + runner.register_hook(precise_bn_hook) + print_log(runner) + runner.run([loader], [('train', 1)]) + + # test non-DDP model + test_bigger_dataset = BiggerDataset() + loader = DataLoader(test_bigger_dataset, batch_size=2) + loaders = [loader] + precise_bn_hook = PreciseBNHook(num_samples=4) + assert precise_bn_hook.num_samples == 4 + assert precise_bn_hook.interval == 1 + runner = EpochBasedRunner( + model=model, + batch_processor=None, + optimizer=optimizer, + logger=logger, + max_epochs=1) + runner.register_hook(precise_bn_hook) + runner.run(loaders, [('train', 1)]) + + # test DP model + test_bigger_dataset = BiggerDataset() + loader = DataLoader(test_bigger_dataset, batch_size=2) + loaders = [loader] + precise_bn_hook = PreciseBNHook(num_samples=4) + assert precise_bn_hook.num_samples == 4 + assert precise_bn_hook.interval == 1 + model = MMDataParallel(model) + runner = EpochBasedRunner( + model=model, + batch_processor=None, + optimizer=optimizer, + logger=logger, + max_epochs=1) + runner.register_hook(precise_bn_hook) + runner.run(loaders, [('train', 1)]) + + # test model w/ gn layer + loader = DataLoader(test_bigger_dataset, batch_size=2) + loaders = [loader] + precise_bn_hook = PreciseBNHook(num_samples=4) + assert precise_bn_hook.num_samples == 4 + assert precise_bn_hook.interval == 1 + model = GNExampleModel() + runner = EpochBasedRunner( + model=model, + batch_processor=None, + optimizer=optimizer, + logger=logger, + max_epochs=1) + runner.register_hook(precise_bn_hook) + runner.run(loaders, [('train', 1)]) + + # test model without bn layer + loader = DataLoader(test_bigger_dataset, batch_size=2) + loaders = [loader] + precise_bn_hook = PreciseBNHook(num_samples=4) + assert precise_bn_hook.num_samples == 4 + assert precise_bn_hook.interval == 1 + model = NoBNExampleModel() + runner = EpochBasedRunner( + model=model, + batch_processor=None, + optimizer=optimizer, + logger=logger, + max_epochs=1) + runner.register_hook(precise_bn_hook) + runner.run(loaders, [('train', 1)]) + + # test how precise it is + loader = DataLoader(test_bigger_dataset, batch_size=2) + loaders = [loader] + precise_bn_hook = PreciseBNHook(num_samples=12) + assert precise_bn_hook.num_samples == 12 + assert precise_bn_hook.interval == 1 + model = SingleBNModel() + runner = EpochBasedRunner( + model=model, + batch_processor=None, + optimizer=optimizer, + logger=logger, + max_epochs=1) + runner.register_hook(precise_bn_hook) + runner.run(loaders, [('train', 1)]) + imgs_list = list() + for loader in loaders: + for i, data in enumerate(loader): + imgs_list.append(np.array(data['imgs'])) + mean = np.mean([np.mean(batch) for batch in imgs_list]) + # bassel correction used in Pytorch, therefore ddof=1 + var = np.mean([np.var(batch, ddof=1) for batch in imgs_list]) + assert np.equal(mean, model.bn.running_mean) + assert np.equal(var, model.bn.running_var) + + @pytest.mark.skipif( + not torch.cuda.is_available(), reason='requires CUDA support') + def test_ddp_model_precise_bn(): + # test DDP model + test_bigger_dataset = BiggerDataset() + loader = DataLoader(test_bigger_dataset, batch_size=2) + loaders = [loader] + precise_bn_hook = PreciseBNHook(num_samples=5) + assert precise_bn_hook.num_samples == 5 + assert precise_bn_hook.interval == 1 + model = ExampleModel() + model = MMDistributedDataParallel( + model.cuda(), + device_ids=[torch.cuda.current_device()], + broadcast_buffers=False, + find_unused_parameters=True) + runner = EpochBasedRunner( + model=model, + batch_processor=None, + optimizer=optimizer, + logger=logger, + max_epochs=1) + runner.register_hook(precise_bn_hook) + runner.run(loaders, [('train', 1)]) diff --git a/openmmlab_test/mmclassification-0.24.1/tests/test_utils/test_device.py b/openmmlab_test/mmclassification-0.24.1/tests/test_utils/test_device.py new file mode 100644 index 00000000..eb10bb21 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/tests/test_utils/test_device.py @@ -0,0 +1,28 @@ +# Copyright (c) OpenMMLab. All rights reserved. +from unittest import TestCase +from unittest.mock import patch + +import mmcv + +from mmcls.utils import auto_select_device + + +class TestAutoSelectDevice(TestCase): + + @patch.object(mmcv, '__version__', '1.6.0') + @patch('mmcv.device.get_device', create=True) + def test_mmcv(self, mock): + auto_select_device() + mock.assert_called_once() + + @patch.object(mmcv, '__version__', '1.5.0') + @patch('torch.cuda.is_available', return_value=True) + def test_cuda(self, mock): + device = auto_select_device() + self.assertEqual(device, 'cuda') + + @patch.object(mmcv, '__version__', '1.5.0') + @patch('torch.cuda.is_available', return_value=False) + def test_cpu(self, mock): + device = auto_select_device() + self.assertEqual(device, 'cpu') diff --git a/openmmlab_test/mmclassification-0.24.1/tests/test_utils/test_logger.py b/openmmlab_test/mmclassification-0.24.1/tests/test_utils/test_logger.py new file mode 100644 index 00000000..97a6fb00 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/tests/test_utils/test_logger.py @@ -0,0 +1,55 @@ +# Copyright (c) OpenMMLab. All rights reserved. +import os +import os.path as osp +import tempfile + +import mmcv.utils.logging + +from mmcls.utils import get_root_logger, load_json_log + + +def test_get_root_logger(): + # Reset the initialized log + mmcv.utils.logging.logger_initialized = {} + with tempfile.TemporaryDirectory() as tmpdirname: + log_path = osp.join(tmpdirname, 'test.log') + + logger = get_root_logger(log_file=log_path) + message1 = 'adhsuadghj' + logger.info(message1) + + logger2 = get_root_logger() + message2 = 'm,tkrgmkr' + logger2.info(message2) + + with open(log_path, 'r') as f: + lines = f.readlines() + assert message1 in lines[0] + assert message2 in lines[1] + + assert logger is logger2 + + handlers = list(logger.handlers) + for handler in handlers: + handler.close() + logger.removeHandler(handler) + os.remove(log_path) + + +def test_load_json_log(): + log_path = 'tests/data/test.logjson' + log_dict = load_json_log(log_path) + + # test log_dict + assert set(log_dict.keys()) == set([1, 2, 3]) + + # test epoch dict in log_dict + assert set(log_dict[1].keys()) == set( + ['iter', 'lr', 'memory', 'data_time', 'time', 'mode']) + assert isinstance(log_dict[1]['lr'], list) + assert len(log_dict[1]['iter']) == 4 + assert len(log_dict[1]['lr']) == 4 + assert len(log_dict[2]['iter']) == 3 + assert len(log_dict[2]['lr']) == 3 + assert log_dict[3]['iter'] == [10, 20] + assert log_dict[3]['lr'] == [0.33305, 0.34759] diff --git a/openmmlab_test/mmclassification-0.24.1/tests/test_utils/test_setup_env.py b/openmmlab_test/mmclassification-0.24.1/tests/test_utils/test_setup_env.py new file mode 100644 index 00000000..2679dbbf --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/tests/test_utils/test_setup_env.py @@ -0,0 +1,68 @@ +# Copyright (c) OpenMMLab. All rights reserved. +import multiprocessing as mp +import os +import platform + +import cv2 +from mmcv import Config + +from mmcls.utils import setup_multi_processes + + +def test_setup_multi_processes(): + # temp save system setting + sys_start_mehod = mp.get_start_method(allow_none=True) + sys_cv_threads = cv2.getNumThreads() + # pop and temp save system env vars + sys_omp_threads = os.environ.pop('OMP_NUM_THREADS', default=None) + sys_mkl_threads = os.environ.pop('MKL_NUM_THREADS', default=None) + + # test config without setting env + config = dict(data=dict(workers_per_gpu=2)) + cfg = Config(config) + setup_multi_processes(cfg) + assert os.getenv('OMP_NUM_THREADS') == '1' + assert os.getenv('MKL_NUM_THREADS') == '1' + # when set to 0, the num threads will be 1 + assert cv2.getNumThreads() == 1 + if platform.system() != 'Windows': + assert mp.get_start_method() == 'fork' + + # test num workers <= 1 + os.environ.pop('OMP_NUM_THREADS') + os.environ.pop('MKL_NUM_THREADS') + config = dict(data=dict(workers_per_gpu=0)) + cfg = Config(config) + setup_multi_processes(cfg) + assert 'OMP_NUM_THREADS' not in os.environ + assert 'MKL_NUM_THREADS' not in os.environ + + # test manually set env var + os.environ['OMP_NUM_THREADS'] = '4' + config = dict(data=dict(workers_per_gpu=2)) + cfg = Config(config) + setup_multi_processes(cfg) + assert os.getenv('OMP_NUM_THREADS') == '4' + + # test manually set opencv threads and mp start method + config = dict( + data=dict(workers_per_gpu=2), + opencv_num_threads=4, + mp_start_method='spawn') + cfg = Config(config) + setup_multi_processes(cfg) + assert cv2.getNumThreads() == 4 + assert mp.get_start_method() == 'spawn' + + # revert setting to avoid affecting other programs + if sys_start_mehod: + mp.set_start_method(sys_start_mehod, force=True) + cv2.setNumThreads(sys_cv_threads) + if sys_omp_threads: + os.environ['OMP_NUM_THREADS'] = sys_omp_threads + else: + os.environ.pop('OMP_NUM_THREADS') + if sys_mkl_threads: + os.environ['MKL_NUM_THREADS'] = sys_mkl_threads + else: + os.environ.pop('MKL_NUM_THREADS') diff --git a/openmmlab_test/mmclassification-0.24.1/tests/test_utils/test_version_utils.py b/openmmlab_test/mmclassification-0.24.1/tests/test_utils/test_version_utils.py new file mode 100644 index 00000000..f4bb3892 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/tests/test_utils/test_version_utils.py @@ -0,0 +1,21 @@ +# Copyright (c) OpenMMLab. All rights reserved. +from mmcls import digit_version + + +def test_digit_version(): + assert digit_version('0.2.16') == (0, 2, 16, 0, 0, 0) + assert digit_version('1.2.3') == (1, 2, 3, 0, 0, 0) + assert digit_version('1.2.3rc0') == (1, 2, 3, 0, -1, 0) + assert digit_version('1.2.3rc1') == (1, 2, 3, 0, -1, 1) + assert digit_version('1.0rc0') == (1, 0, 0, 0, -1, 0) + assert digit_version('1.0') == digit_version('1.0.0') + assert digit_version('1.5.0+cuda90_cudnn7.6.3_lms') == digit_version('1.5') + assert digit_version('1.0.0dev') < digit_version('1.0.0a') + assert digit_version('1.0.0a') < digit_version('1.0.0a1') + assert digit_version('1.0.0a') < digit_version('1.0.0b') + assert digit_version('1.0.0b') < digit_version('1.0.0rc') + assert digit_version('1.0.0rc1') < digit_version('1.0.0') + assert digit_version('1.0.0') < digit_version('1.0.0post') + assert digit_version('1.0.0post') < digit_version('1.0.0post1') + assert digit_version('v1') == (1, 0, 0, 0, 0, 0) + assert digit_version('v1.1.5') == (1, 1, 5, 0, 0, 0) diff --git a/openmmlab_test/mmclassification-0.24.1/tests/test_utils/test_visualization.py b/openmmlab_test/mmclassification-0.24.1/tests/test_utils/test_visualization.py new file mode 100644 index 00000000..1bc4c2b9 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/tests/test_utils/test_visualization.py @@ -0,0 +1,100 @@ +# Copyright (c) Open-MMLab. All rights reserved. +import os +import os.path as osp +import tempfile +from unittest.mock import MagicMock + +import matplotlib.pyplot as plt +import mmcv +import numpy as np +import pytest + +from mmcls.core import visualization as vis + + +def test_color(): + assert vis.color_val_matplotlib(mmcv.Color.blue) == (0., 0., 1.) + assert vis.color_val_matplotlib('green') == (0., 1., 0.) + assert vis.color_val_matplotlib((1, 2, 3)) == (3 / 255, 2 / 255, 1 / 255) + assert vis.color_val_matplotlib(100) == (100 / 255, 100 / 255, 100 / 255) + assert vis.color_val_matplotlib(np.zeros(3, dtype=int)) == (0., 0., 0.) + # forbid white color + with pytest.raises(TypeError): + vis.color_val_matplotlib([255, 255, 255]) + # forbid float + with pytest.raises(TypeError): + vis.color_val_matplotlib(1.0) + # overflowed + with pytest.raises(AssertionError): + vis.color_val_matplotlib((0, 0, 500)) + + +def test_imshow_infos(): + tmp_dir = osp.join(tempfile.gettempdir(), 'image_infos') + tmp_filename = osp.join(tmp_dir, 'image.jpg') + + image = np.ones((10, 10, 3), np.uint8) + result = {'pred_label': 1, 'pred_class': 'bird', 'pred_score': 0.98} + out_image = vis.imshow_infos( + image, result, out_file=tmp_filename, show=False) + assert osp.isfile(tmp_filename) + assert image.shape == out_image.shape + assert not np.allclose(image, out_image) + os.remove(tmp_filename) + + # test grayscale images + image = np.ones((10, 10), np.uint8) + result = {'pred_label': 1, 'pred_class': 'bird', 'pred_score': 0.98} + out_image = vis.imshow_infos( + image, result, out_file=tmp_filename, show=False) + assert osp.isfile(tmp_filename) + assert image.shape == out_image.shape[:2] + os.remove(tmp_filename) + + +def test_figure_context_manager(): + # test show multiple images with the same figure. + images = [ + np.random.randint(0, 255, (100, 100, 3), np.uint8) for _ in range(5) + ] + result = {'pred_label': 1, 'pred_class': 'bird', 'pred_score': 0.98} + + with vis.ImshowInfosContextManager() as manager: + fig_show = manager.fig_show + fig_save = manager.fig_save + + # Test time out + fig_show.canvas.start_event_loop = MagicMock() + fig_show.canvas.end_event_loop = MagicMock() + for image in images: + ret, out_image = manager.put_img_infos(image, result, show=True) + assert ret == 0 + assert image.shape == out_image.shape + assert not np.allclose(image, out_image) + assert fig_show is manager.fig_show + assert fig_save is manager.fig_save + + # Test continue key + fig_show.canvas.start_event_loop = ( + lambda _: fig_show.canvas.key_press_event(' ')) + for image in images: + ret, out_image = manager.put_img_infos(image, result, show=True) + assert ret == 0 + assert image.shape == out_image.shape + assert not np.allclose(image, out_image) + assert fig_show is manager.fig_show + assert fig_save is manager.fig_save + + # Test close figure manually + fig_show = manager.fig_show + + def destroy(*_, **__): + fig_show.canvas.close_event() + plt.close(fig_show) + + fig_show.canvas.start_event_loop = destroy + ret, out_image = manager.put_img_infos(images[0], result, show=True) + assert ret == 1 + assert image.shape == out_image.shape + assert not np.allclose(image, out_image) + assert fig_save is manager.fig_save diff --git a/openmmlab_test/mmclassification-0.24.1/tools/analysis_tools/analyze_logs.py b/openmmlab_test/mmclassification-0.24.1/tools/analysis_tools/analyze_logs.py new file mode 100644 index 00000000..b8623aec --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/tools/analysis_tools/analyze_logs.py @@ -0,0 +1,215 @@ +# Copyright (c) OpenMMLab. All rights reserved. +import argparse +import os +import re + +import matplotlib.pyplot as plt +import numpy as np + +from mmcls.utils import load_json_log + +TEST_METRICS = ('precision', 'recall', 'f1_score', 'support', 'mAP', 'CP', + 'CR', 'CF1', 'OP', 'OR', 'OF1', 'accuracy') + + +def cal_train_time(log_dicts, args): + """Compute the average time per training iteration.""" + for i, log_dict in enumerate(log_dicts): + print(f'{"-" * 5}Analyze train time of {args.json_logs[i]}{"-" * 5}') + all_times = [] + for epoch in log_dict.keys(): + if args.include_outliers: + all_times.append(log_dict[epoch]['time']) + else: + all_times.append(log_dict[epoch]['time'][1:]) + all_times = np.array(all_times) + epoch_ave_time = all_times.mean(-1) + slowest_epoch = epoch_ave_time.argmax() + fastest_epoch = epoch_ave_time.argmin() + std_over_epoch = epoch_ave_time.std() + print(f'slowest epoch {slowest_epoch + 1}, ' + f'average time is {epoch_ave_time[slowest_epoch]:.4f}') + print(f'fastest epoch {fastest_epoch + 1}, ' + f'average time is {epoch_ave_time[fastest_epoch]:.4f}') + print(f'time std over epochs is {std_over_epoch:.4f}') + print(f'average iter time: {np.mean(all_times):.4f} s/iter') + print() + + +def get_legends(args): + """if legend is None, use {filename}_{key} as legend.""" + legend = args.legend + if legend is None: + legend = [] + for json_log in args.json_logs: + for metric in args.keys: + # remove '.json' in the end of log names + basename = os.path.basename(json_log)[:-5] + if basename.endswith('.log'): + basename = basename[:-4] + legend.append(f'{basename}_{metric}') + assert len(legend) == (len(args.json_logs) * len(args.keys)) + return legend + + +def plot_phase_train(metric, log_dict, epochs, curve_label, json_log): + """plot phase of train cruve.""" + if metric not in log_dict[epochs[0]]: + raise KeyError(f'{json_log} does not contain metric {metric}' + f' in train mode') + xs, ys = [], [] + for epoch in epochs: + iters = log_dict[epoch]['iter'] + if log_dict[epoch]['mode'][-1] == 'val': + iters = iters[:-1] + num_iters_per_epoch = iters[-1] + assert len(iters) > 0, ( + 'The training log is empty, please try to reduce the ' + 'interval of log in config file.') + xs.append(np.array(iters) / num_iters_per_epoch + (epoch - 1)) + ys.append(np.array(log_dict[epoch][metric][:len(iters)])) + xs = np.concatenate(xs) + ys = np.concatenate(ys) + plt.xlabel('Epochs') + plt.plot(xs, ys, label=curve_label, linewidth=0.75) + + +def plot_phase_val(metric, log_dict, epochs, curve_label, json_log): + """plot phase of val cruves.""" + # some epoch may not have evaluation. as [(train, 5),(val, 1)] + xs = [e for e in epochs if metric in log_dict[e]] + ys = [log_dict[e][metric] for e in xs if metric in log_dict[e]] + assert len(xs) > 0, (f'{json_log} does not contain metric {metric}') + plt.xlabel('Epochs') + plt.plot(xs, ys, label=curve_label, linewidth=0.75) + + +def plot_curve_helper(log_dicts, metrics, args, legend): + """plot curves from log_dicts by metrics.""" + num_metrics = len(metrics) + for i, log_dict in enumerate(log_dicts): + epochs = list(log_dict.keys()) + for j, metric in enumerate(metrics): + json_log = args.json_logs[i] + print(f'plot curve of {json_log}, metric is {metric}') + curve_label = legend[i * num_metrics + j] + if any(m in metric for m in TEST_METRICS): + plot_phase_val(metric, log_dict, epochs, curve_label, json_log) + else: + plot_phase_train(metric, log_dict, epochs, curve_label, + json_log) + plt.legend() + + +def plot_curve(log_dicts, args): + """Plot train metric-iter graph.""" + # set backend and style + if args.backend is not None: + plt.switch_backend(args.backend) + try: + import seaborn as sns + sns.set_style(args.style) + except ImportError: + print("Attention: The plot style won't be applied because 'seaborn' " + 'package is not installed, please install it if you want better ' + 'show style.') + + # set plot window size + wind_w, wind_h = args.window_size.split('*') + wind_w, wind_h = int(wind_w), int(wind_h) + plt.figure(figsize=(wind_w, wind_h)) + + # get legends and metrics + legends = get_legends(args) + metrics = args.keys + + # plot curves from log_dicts by metrics + plot_curve_helper(log_dicts, metrics, args, legends) + + # set title and show or save + if args.title is not None: + plt.title(args.title) + if args.out is None: + plt.show() + else: + print(f'save curve to: {args.out}') + plt.savefig(args.out) + plt.cla() + + +def add_plot_parser(subparsers): + parser_plt = subparsers.add_parser( + 'plot_curve', help='parser for plotting curves') + parser_plt.add_argument( + 'json_logs', + type=str, + nargs='+', + help='path of train log in json format') + parser_plt.add_argument( + '--keys', + type=str, + nargs='+', + default=['loss'], + help='the metric that you want to plot') + parser_plt.add_argument('--title', type=str, help='title of figure') + parser_plt.add_argument( + '--legend', + type=str, + nargs='+', + default=None, + help='legend of each plot') + parser_plt.add_argument( + '--backend', type=str, default=None, help='backend of plt') + parser_plt.add_argument( + '--style', type=str, default='whitegrid', help='style of plt') + parser_plt.add_argument('--out', type=str, default=None) + parser_plt.add_argument( + '--window-size', + default='12*7', + help='size of the window to display images, in format of "$W*$H".') + + +def add_time_parser(subparsers): + parser_time = subparsers.add_parser( + 'cal_train_time', + help='parser for computing the average time per training iteration') + parser_time.add_argument( + 'json_logs', + type=str, + nargs='+', + help='path of train log in json format') + parser_time.add_argument( + '--include-outliers', + action='store_true', + help='include the first value of every epoch when computing ' + 'the average time') + + +def parse_args(): + parser = argparse.ArgumentParser(description='Analyze Json Log') + # currently only support plot curve and calculate average train time + subparsers = parser.add_subparsers(dest='task', help='task parser') + add_plot_parser(subparsers) + add_time_parser(subparsers) + args = parser.parse_args() + + if hasattr(args, 'window_size') and args.window_size != '': + assert re.match(r'\d+\*\d+', args.window_size), \ + "'window-size' must be in format 'W*H'." + return args + + +def main(): + args = parse_args() + + json_logs = args.json_logs + for json_log in json_logs: + assert json_log.endswith('.json') + + log_dicts = [load_json_log(json_log) for json_log in json_logs] + + eval(args.task)(log_dicts, args) + + +if __name__ == '__main__': + main() diff --git a/openmmlab_test/mmclassification-speed-benchmark/tools/analyze_results.py b/openmmlab_test/mmclassification-0.24.1/tools/analysis_tools/analyze_results.py similarity index 75% rename from openmmlab_test/mmclassification-speed-benchmark/tools/analyze_results.py rename to openmmlab_test/mmclassification-0.24.1/tools/analysis_tools/analyze_results.py index 6392eea8..82555ad5 100644 --- a/openmmlab_test/mmclassification-speed-benchmark/tools/analyze_results.py +++ b/openmmlab_test/mmclassification-0.24.1/tools/analysis_tools/analyze_results.py @@ -1,3 +1,4 @@ +# Copyright (c) OpenMMLab. All rights reserved. import argparse import os.path as osp @@ -20,12 +21,17 @@ def parse_args(): type=int, help='Number of images to select for success/fail') parser.add_argument( - '--options', + '--cfg-options', nargs='+', action=DictAction, help='override some settings in the used config, the key-value pair ' - 'in xxx=yyy format will be merged into config file.') + 'in xxx=yyy format will be merged into config file. If the value to ' + 'be overwritten is a list, it should be like key="[a,b]" or key=a,b ' + 'It also allows nested list/tuple values, e.g. key="[(a,b),(c,d)]" ' + 'Note that the quotation marks are necessary and that no white space ' + 'is allowed.') args = parser.parse_args() + return args @@ -45,9 +51,16 @@ def save_imgs(result_dir, folder_name, results, model): def main(): args = parse_args() + # load test results + outputs = mmcv.load(args.result) + assert ('pred_score' in outputs and 'pred_class' in outputs + and 'pred_label' in outputs), \ + 'No "pred_label", "pred_score" or "pred_class" in result file, ' \ + 'please set "--out-items" in test.py' + cfg = mmcv.Config.fromfile(args.config) - if args.options is not None: - cfg.merge_from_dict(args.options) + if args.cfg_options is not None: + cfg.merge_from_dict(args.cfg_options) model = build_classifier(cfg.model) @@ -64,12 +77,15 @@ def main(): gt_labels = list(dataset.get_gt_labels()) gt_classes = [dataset.CLASSES[x] for x in gt_labels] - # load test results - outputs = mmcv.load(args.result) outputs['filename'] = filenames outputs['gt_label'] = gt_labels outputs['gt_class'] = gt_classes + need_keys = [ + 'filename', 'gt_label', 'gt_class', 'pred_score', 'pred_label', + 'pred_class' + ] + outputs = {k: v for k, v in outputs.items() if k in need_keys} outputs_list = list() for i in range(len(gt_labels)): output = dict() diff --git a/openmmlab_test/mmclassification-0.24.1/tools/analysis_tools/eval_metric.py b/openmmlab_test/mmclassification-0.24.1/tools/analysis_tools/eval_metric.py new file mode 100644 index 00000000..1c95dbc0 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/tools/analysis_tools/eval_metric.py @@ -0,0 +1,71 @@ +# Copyright (c) OpenMMLab. All rights reserved. +import argparse + +import mmcv +from mmcv import Config, DictAction + +from mmcls.datasets import build_dataset + + +def parse_args(): + parser = argparse.ArgumentParser(description='Evaluate metric of the ' + 'results saved in pkl format') + parser.add_argument('config', help='Config of the model') + parser.add_argument('pkl_results', help='Results in pickle format') + parser.add_argument( + '--metrics', + type=str, + nargs='+', + help='Evaluation metrics, which depends on the dataset, e.g., ' + '"accuracy", "precision", "recall" and "support".') + parser.add_argument( + '--cfg-options', + nargs='+', + action=DictAction, + help='override some settings in the used config, the key-value pair ' + 'in xxx=yyy format will be merged into config file. If the value to ' + 'be overwritten is a list, it should be like key="[a,b]" or key=a,b ' + 'It also allows nested list/tuple values, e.g. key="[(a,b),(c,d)]" ' + 'Note that the quotation marks are necessary and that no white space ' + 'is allowed.') + parser.add_argument( + '--metric-options', + nargs='+', + action=DictAction, + help='custom options for evaluation, the key-value pair in xxx=yyy ' + 'format will be kwargs for dataset.evaluate() function') + args = parser.parse_args() + return args + + +def main(): + args = parse_args() + + outputs = mmcv.load(args.pkl_results) + assert 'class_scores' in outputs, \ + 'No "class_scores" in result file, please set "--out-items" in test.py' + + cfg = Config.fromfile(args.config) + assert args.metrics, ( + 'Please specify at least one metric the argument "--metrics".') + + if args.cfg_options is not None: + cfg.merge_from_dict(args.cfg_options) + cfg.data.test.test_mode = True + + dataset = build_dataset(cfg.data.test) + pred_score = outputs['class_scores'] + + eval_kwargs = cfg.get('evaluation', {}).copy() + # hard-code way to remove EvalHook args + for key in [ + 'interval', 'tmpdir', 'start', 'gpu_collect', 'save_best', 'rule' + ]: + eval_kwargs.pop(key, None) + eval_kwargs.update( + dict(metric=args.metrics, metric_options=args.metric_options)) + print(dataset.evaluate(pred_score, **eval_kwargs)) + + +if __name__ == '__main__': + main() diff --git a/openmmlab_test/mmclassification-speed-benchmark/tools/get_flops.py b/openmmlab_test/mmclassification-0.24.1/tools/analysis_tools/get_flops.py similarity index 91% rename from openmmlab_test/mmclassification-speed-benchmark/tools/get_flops.py rename to openmmlab_test/mmclassification-0.24.1/tools/analysis_tools/get_flops.py index cce41e05..45a87857 100644 --- a/openmmlab_test/mmclassification-speed-benchmark/tools/get_flops.py +++ b/openmmlab_test/mmclassification-0.24.1/tools/analysis_tools/get_flops.py @@ -1,3 +1,4 @@ +# Copyright (c) OpenMMLab. All rights reserved. import argparse from mmcv import Config @@ -34,8 +35,8 @@ def main(): model = build_classifier(cfg.model) model.eval() - if hasattr(model, 'extract_feat'): - model.forward = model.extract_feat + if hasattr(model, 'forward_dummy'): + model.forward = model.forward_dummy else: raise NotImplementedError( 'FLOPs counter is currently not currently supported with {}'. diff --git a/openmmlab_test/mmclassification-0.24.1/tools/convert_models/efficientnet_to_mmcls.py b/openmmlab_test/mmclassification-0.24.1/tools/convert_models/efficientnet_to_mmcls.py new file mode 100644 index 00000000..d1b097bd --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/tools/convert_models/efficientnet_to_mmcls.py @@ -0,0 +1,215 @@ +# Copyright (c) OpenMMLab. All rights reserved. +import argparse +import os + +import numpy as np +import torch +from mmcv.runner import Sequential +from tensorflow.python.training import py_checkpoint_reader + +from mmcls.models.backbones.efficientnet import EfficientNet + + +def tf2pth(v): + if v.ndim == 4: + return np.ascontiguousarray(v.transpose(3, 2, 0, 1)) + elif v.ndim == 2: + return np.ascontiguousarray(v.transpose()) + return v + + +def read_ckpt(ckpt): + reader = py_checkpoint_reader.NewCheckpointReader(ckpt) + weights = { + n: torch.as_tensor(tf2pth(reader.get_tensor(n))) + for (n, _) in reader.get_variable_to_shape_map().items() + } + return weights + + +def map_key(weight): + m = dict() + has_expand_conv = set() + is_MBConv = set() + max_idx = 0 + name = None + for k, v in weight.items(): + seg = k.split('/') + if len(seg) == 1: + continue + if 'edgetpu' in seg[0]: + name = 'e' + seg[0][21:].lower() + else: + name = seg[0][13:] + if seg[2] == 'tpu_batch_normalization_2': + has_expand_conv.add(seg[1]) + if seg[1].startswith('blocks_'): + idx = int(seg[1][7:]) + 1 + max_idx = max(max_idx, idx) + if 'depthwise' in k: + is_MBConv.add(seg[1]) + + model = EfficientNet(name) + idx2key = [] + for idx, module in enumerate(model.layers): + if isinstance(module, Sequential): + for j in range(len(module)): + idx2key.append('{}.{}'.format(idx, j)) + else: + idx2key.append('{}'.format(idx)) + + for k, v in weight.items(): + + if 'Exponential' in k or 'RMS' in k: + continue + + seg = k.split('/') + if len(seg) == 1: + continue + if seg[2] == 'depthwise_conv2d': + v = v.transpose(1, 0) + + if seg[1] == 'stem': + prefix = 'backbone.layers.{}'.format(idx2key[0]) + mapping = { + 'conv2d/kernel': 'conv.weight', + 'tpu_batch_normalization/beta': 'bn.bias', + 'tpu_batch_normalization/gamma': 'bn.weight', + 'tpu_batch_normalization/moving_mean': 'bn.running_mean', + 'tpu_batch_normalization/moving_variance': 'bn.running_var', + } + suffix = mapping['/'.join(seg[2:])] + m[prefix + '.' + suffix] = v + + elif seg[1].startswith('blocks_'): + idx = int(seg[1][7:]) + 1 + prefix = '.'.join(['backbone', 'layers', idx2key[idx]]) + if seg[1] not in is_MBConv: + mapping = { + 'conv2d/kernel': + 'conv1.conv.weight', + 'tpu_batch_normalization/gamma': + 'conv1.bn.weight', + 'tpu_batch_normalization/beta': + 'conv1.bn.bias', + 'tpu_batch_normalization/moving_mean': + 'conv1.bn.running_mean', + 'tpu_batch_normalization/moving_variance': + 'conv1.bn.running_var', + 'conv2d_1/kernel': + 'conv2.conv.weight', + 'tpu_batch_normalization_1/gamma': + 'conv2.bn.weight', + 'tpu_batch_normalization_1/beta': + 'conv2.bn.bias', + 'tpu_batch_normalization_1/moving_mean': + 'conv2.bn.running_mean', + 'tpu_batch_normalization_1/moving_variance': + 'conv2.bn.running_var', + } + else: + + base_mapping = { + 'depthwise_conv2d/depthwise_kernel': + 'depthwise_conv.conv.weight', + 'se/conv2d/kernel': 'se.conv1.conv.weight', + 'se/conv2d/bias': 'se.conv1.conv.bias', + 'se/conv2d_1/kernel': 'se.conv2.conv.weight', + 'se/conv2d_1/bias': 'se.conv2.conv.bias' + } + + if seg[1] not in has_expand_conv: + mapping = { + 'conv2d/kernel': + 'linear_conv.conv.weight', + 'tpu_batch_normalization/beta': + 'depthwise_conv.bn.bias', + 'tpu_batch_normalization/gamma': + 'depthwise_conv.bn.weight', + 'tpu_batch_normalization/moving_mean': + 'depthwise_conv.bn.running_mean', + 'tpu_batch_normalization/moving_variance': + 'depthwise_conv.bn.running_var', + 'tpu_batch_normalization_1/beta': + 'linear_conv.bn.bias', + 'tpu_batch_normalization_1/gamma': + 'linear_conv.bn.weight', + 'tpu_batch_normalization_1/moving_mean': + 'linear_conv.bn.running_mean', + 'tpu_batch_normalization_1/moving_variance': + 'linear_conv.bn.running_var', + } + else: + mapping = { + 'depthwise_conv2d/depthwise_kernel': + 'depthwise_conv.conv.weight', + 'conv2d/kernel': + 'expand_conv.conv.weight', + 'conv2d_1/kernel': + 'linear_conv.conv.weight', + 'tpu_batch_normalization/beta': + 'expand_conv.bn.bias', + 'tpu_batch_normalization/gamma': + 'expand_conv.bn.weight', + 'tpu_batch_normalization/moving_mean': + 'expand_conv.bn.running_mean', + 'tpu_batch_normalization/moving_variance': + 'expand_conv.bn.running_var', + 'tpu_batch_normalization_1/beta': + 'depthwise_conv.bn.bias', + 'tpu_batch_normalization_1/gamma': + 'depthwise_conv.bn.weight', + 'tpu_batch_normalization_1/moving_mean': + 'depthwise_conv.bn.running_mean', + 'tpu_batch_normalization_1/moving_variance': + 'depthwise_conv.bn.running_var', + 'tpu_batch_normalization_2/beta': + 'linear_conv.bn.bias', + 'tpu_batch_normalization_2/gamma': + 'linear_conv.bn.weight', + 'tpu_batch_normalization_2/moving_mean': + 'linear_conv.bn.running_mean', + 'tpu_batch_normalization_2/moving_variance': + 'linear_conv.bn.running_var', + } + mapping.update(base_mapping) + suffix = mapping['/'.join(seg[2:])] + m[prefix + '.' + suffix] = v + elif seg[1] == 'head': + seq_key = idx2key[max_idx + 1] + mapping = { + 'conv2d/kernel': + 'backbone.layers.{}.conv.weight'.format(seq_key), + 'tpu_batch_normalization/beta': + 'backbone.layers.{}.bn.bias'.format(seq_key), + 'tpu_batch_normalization/gamma': + 'backbone.layers.{}.bn.weight'.format(seq_key), + 'tpu_batch_normalization/moving_mean': + 'backbone.layers.{}.bn.running_mean'.format(seq_key), + 'tpu_batch_normalization/moving_variance': + 'backbone.layers.{}.bn.running_var'.format(seq_key), + 'dense/kernel': + 'head.fc.weight', + 'dense/bias': + 'head.fc.bias' + } + key = mapping['/'.join(seg[2:])] + if name.startswith('e') and 'fc' in key: + v = v[1:] + m[key] = v + return m + + +if __name__ == '__main__': + parser = argparse.ArgumentParser() + parser.add_argument('infile', type=str, help='Path to the ckpt.') + parser.add_argument('outfile', type=str, help='Output file.') + args = parser.parse_args() + assert args.outfile + + outdir = os.path.dirname(os.path.abspath(args.outfile)) + if not os.path.exists(outdir): + os.makedirs(outdir) + weights = read_ckpt(args.infile) + weights = map_key(weights) + torch.save(weights, args.outfile) diff --git a/openmmlab_test/mmclassification-0.24.1/tools/convert_models/hornet2mmcls.py b/openmmlab_test/mmclassification-0.24.1/tools/convert_models/hornet2mmcls.py new file mode 100644 index 00000000..6f39ffb2 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/tools/convert_models/hornet2mmcls.py @@ -0,0 +1,61 @@ +# Copyright (c) OpenMMLab. All rights reserved. +import argparse +import os.path as osp +from collections import OrderedDict + +import mmcv +import torch +from mmcv.runner import CheckpointLoader + + +def convert_hornet(ckpt): + + new_ckpt = OrderedDict() + + for k, v in list(ckpt.items()): + new_v = v + if k.startswith('head'): + new_k = k.replace('head.', 'head.fc.') + new_ckpt[new_k] = new_v + continue + elif k.startswith('norm'): + new_k = k.replace('norm.', 'norm3.') + elif 'gnconv.pws' in k: + new_k = k.replace('gnconv.pws', 'gnconv.projs') + elif 'gamma1' in k: + new_k = k.replace('gamma1', 'gamma1.weight') + elif 'gamma2' in k: + new_k = k.replace('gamma2', 'gamma2.weight') + else: + new_k = k + + if not new_k.startswith('head'): + new_k = 'backbone.' + new_k + new_ckpt[new_k] = new_v + return new_ckpt + + +def main(): + parser = argparse.ArgumentParser( + description='Convert keys in pretrained van models to mmcls style.') + parser.add_argument('src', help='src model path or url') + # The dst path must be a full path of the new checkpoint. + parser.add_argument('dst', help='save path') + args = parser.parse_args() + + checkpoint = CheckpointLoader.load_checkpoint(args.src, map_location='cpu') + + if 'model' in checkpoint: + state_dict = checkpoint['model'] + else: + state_dict = checkpoint + + weight = convert_hornet(state_dict) + mmcv.mkdir_or_exist(osp.dirname(args.dst)) + torch.save(weight, args.dst) + + print('Done!!') + + +if __name__ == '__main__': + main() diff --git a/openmmlab_test/mmclassification-0.24.1/tools/convert_models/mlpmixer_to_mmcls.py b/openmmlab_test/mmclassification-0.24.1/tools/convert_models/mlpmixer_to_mmcls.py new file mode 100644 index 00000000..6096c138 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/tools/convert_models/mlpmixer_to_mmcls.py @@ -0,0 +1,58 @@ +# Copyright (c) OpenMMLab. All rights reserved. +import argparse +from pathlib import Path + +import torch + + +def convert_weights(weight): + """Weight Converter. + + Converts the weights from timm to mmcls + + Args: + weight (dict): weight dict from timm + + Returns: converted weight dict for mmcls + """ + result = dict() + result['meta'] = dict() + temp = dict() + mapping = { + 'stem': 'patch_embed', + 'proj': 'projection', + 'mlp_tokens.fc1': 'token_mix.layers.0.0', + 'mlp_tokens.fc2': 'token_mix.layers.1', + 'mlp_channels.fc1': 'channel_mix.layers.0.0', + 'mlp_channels.fc2': 'channel_mix.layers.1', + 'norm1': 'ln1', + 'norm2': 'ln2', + 'norm.': 'ln1.', + 'blocks': 'layers' + } + for k, v in weight.items(): + for mk, mv in mapping.items(): + if mk in k: + k = k.replace(mk, mv) + if k.startswith('head.'): + temp['head.fc.' + k[5:]] = v + else: + temp['backbone.' + k] = v + result['state_dict'] = temp + return result + + +if __name__ == '__main__': + parser = argparse.ArgumentParser(description='Convert model keys') + parser.add_argument('src', help='src detectron model path') + parser.add_argument('dst', help='save path') + args = parser.parse_args() + dst = Path(args.dst) + if dst.suffix != '.pth': + print('The path should contain the name of the pth format file.') + exit(1) + dst.parent.mkdir(parents=True, exist_ok=True) + + original_model = torch.load(args.src, map_location='cpu') + converted_model = convert_weights(original_model) + torch.save(converted_model, args.dst) diff --git a/openmmlab_test/mmclassification-speed-benchmark/tools/convert_models/mobilenetv2_to_mmcls.py b/openmmlab_test/mmclassification-0.24.1/tools/convert_models/mobilenetv2_to_mmcls.py similarity index 98% rename from openmmlab_test/mmclassification-speed-benchmark/tools/convert_models/mobilenetv2_to_mmcls.py rename to openmmlab_test/mmclassification-0.24.1/tools/convert_models/mobilenetv2_to_mmcls.py index 9957e0ec..7f6654ed 100644 --- a/openmmlab_test/mmclassification-speed-benchmark/tools/convert_models/mobilenetv2_to_mmcls.py +++ b/openmmlab_test/mmclassification-0.24.1/tools/convert_models/mobilenetv2_to_mmcls.py @@ -1,3 +1,4 @@ +# Copyright (c) OpenMMLab. All rights reserved. import argparse from collections import OrderedDict diff --git a/openmmlab_test/mmclassification-0.24.1/tools/convert_models/publish_model.py b/openmmlab_test/mmclassification-0.24.1/tools/convert_models/publish_model.py new file mode 100644 index 00000000..a80f3e29 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/tools/convert_models/publish_model.py @@ -0,0 +1,55 @@ +# Copyright (c) OpenMMLab. All rights reserved. +import argparse +import datetime +import subprocess +from pathlib import Path + +import torch +from mmcv import digit_version + + +def parse_args(): + parser = argparse.ArgumentParser( + description='Process a checkpoint to be published') + parser.add_argument('in_file', help='input checkpoint filename') + parser.add_argument('out_file', help='output checkpoint filename') + args = parser.parse_args() + return args + + +def process_checkpoint(in_file, out_file): + checkpoint = torch.load(in_file, map_location='cpu') + # remove optimizer for smaller file size + if 'optimizer' in checkpoint: + del checkpoint['optimizer'] + # if it is necessary to remove some sensitive data in checkpoint['meta'], + # add the code here. + if digit_version(torch.__version__) >= digit_version('1.6'): + torch.save(checkpoint, out_file, _use_new_zipfile_serialization=False) + else: + torch.save(checkpoint, out_file) + + sha = subprocess.check_output(['sha256sum', out_file]).decode() + if out_file.endswith('.pth'): + out_file_name = out_file[:-4] + else: + out_file_name = out_file + + current_date = datetime.datetime.now().strftime('%Y%m%d') + final_file = out_file_name + f'_{current_date}-{sha[:8]}.pth' + subprocess.Popen(['mv', out_file, final_file]) + + print(f'Successfully generated the publish-ckpt as {final_file}.') + + +def main(): + args = parse_args() + out_dir = Path(args.out_file).parent + if not out_dir.exists(): + raise ValueError(f'Directory {out_dir} does not exist, ' + 'please generate it manually.') + process_checkpoint(args.in_file, args.out_file) + + +if __name__ == '__main__': + main() diff --git a/openmmlab_test/mmclassification-0.24.1/tools/convert_models/reparameterize_model.py b/openmmlab_test/mmclassification-0.24.1/tools/convert_models/reparameterize_model.py new file mode 100644 index 00000000..5224c356 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/tools/convert_models/reparameterize_model.py @@ -0,0 +1,55 @@ +# Copyright (c) OpenMMLab. All rights reserved. +import argparse +from pathlib import Path + +import torch + +from mmcls.apis import init_model +from mmcls.models.classifiers import ImageClassifier + + +def convert_classifier_to_deploy(model, save_path): + print('Converting...') + assert hasattr(model, 'backbone') and \ + hasattr(model.backbone, 'switch_to_deploy'), \ + '`model.backbone` must has method of "switch_to_deploy".' \ + f' But {model.backbone.__class__} does not have.' + + model.backbone.switch_to_deploy() + torch.save(model.state_dict(), save_path) + + print('Done! Save at path "{}"'.format(save_path)) + + +def main(): + parser = argparse.ArgumentParser( + description='Convert the parameters of the repvgg block ' + 'from training mode to deployment mode.') + parser.add_argument( + 'config_path', + help='The path to the configuration file of the network ' + 'containing the repvgg block.') + parser.add_argument( + 'checkpoint_path', + help='The path to the checkpoint file corresponding to the model.') + parser.add_argument( + 'save_path', + help='The path where the converted checkpoint file is stored.') + args = parser.parse_args() + + save_path = Path(args.save_path) + if save_path.suffix != '.pth': + print('The path should contain the name of the pth format file.') + exit() + save_path.parent.mkdir(parents=True, exist_ok=True) + + model = init_model( + args.config_path, checkpoint=args.checkpoint_path, device='cpu') + assert isinstance(model, ImageClassifier), \ + '`model` must be a `mmcls.classifiers.ImageClassifier` instance.' + + convert_classifier_to_deploy(model, args.save_path) + + +if __name__ == '__main__': + main() diff --git a/openmmlab_test/mmclassification-0.24.1/tools/convert_models/reparameterize_repvgg.py b/openmmlab_test/mmclassification-0.24.1/tools/convert_models/reparameterize_repvgg.py new file mode 100644 index 00000000..e075d837 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/tools/convert_models/reparameterize_repvgg.py @@ -0,0 +1,60 @@ +# Copyright (c) OpenMMLab. All rights reserved. +import argparse +import warnings +from pathlib import Path + +import torch + +from mmcls.apis import init_model + +bright_style, reset_style = '\x1b[1m', '\x1b[0m' +red_text, blue_text = '\x1b[31m', '\x1b[34m' +white_background = '\x1b[107m' + +msg = bright_style + red_text +msg += 'DeprecationWarning: This tool will be deprecated in future. ' +msg += red_text + 'Welcome to use the ' +msg += white_background +msg += '"tools/convert_models/reparameterize_model.py"' +msg += reset_style +warnings.warn(msg) + + +def convert_repvggblock_param(config_path, checkpoint_path, save_path): + model = init_model(config_path, checkpoint=checkpoint_path) + print('Converting...') + + model.backbone.switch_to_deploy() + torch.save(model.state_dict(), save_path) + + print('Done! Save at path "{}"'.format(save_path)) + + +def main(): + parser = argparse.ArgumentParser( + description='Convert the parameters of the repvgg block ' + 'from training mode to deployment mode.') + parser.add_argument( + 'config_path', + help='The path to the configuration file of the network ' + 'containing the repvgg block.') + parser.add_argument( + 'checkpoint_path', + help='The path to the checkpoint file corresponding to the model.') + parser.add_argument( + 'save_path', + help='The path where the converted checkpoint file is stored.') + args = parser.parse_args() + + save_path = Path(args.save_path) + if save_path.suffix != '.pth': + print('The path should contain the name of the pth format file.') + exit(1) + save_path.parent.mkdir(parents=True, exist_ok=True) + + convert_repvggblock_param(args.config_path, args.checkpoint_path, + args.save_path) + + +if __name__ == '__main__': + main() diff --git a/openmmlab_test/mmclassification-0.24.1/tools/convert_models/repvgg_to_mmcls.py b/openmmlab_test/mmclassification-0.24.1/tools/convert_models/repvgg_to_mmcls.py new file mode 100644 index 00000000..b7a1f053 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/tools/convert_models/repvgg_to_mmcls.py @@ -0,0 +1,60 @@ +# Copyright (c) OpenMMLab. All rights reserved. +import argparse +from collections import OrderedDict +from pathlib import Path + +import torch + + +def convert(src, dst): + print('Converting...') + blobs = torch.load(src, map_location='cpu') + converted_state_dict = OrderedDict() + + for key in blobs: + splited_key = key.split('.') + splited_key = ['norm' if i == 'bn' else i for i in splited_key] + splited_key = [ + 'branch_norm' if i == 'rbr_identity' else i for i in splited_key + ] + splited_key = [ + 'branch_1x1' if i == 'rbr_1x1' else i for i in splited_key + ] + splited_key = [ + 'branch_3x3' if i == 'rbr_dense' else i for i in splited_key + ] + splited_key = [ + 'backbone.stem' if i[:6] == 'stage0' else i for i in splited_key + ] + splited_key = [ + 'backbone.stage_' + i[5] if i[:5] == 'stage' else i + for i in splited_key + ] + splited_key = ['se_layer' if i == 'se' else i for i in splited_key] + splited_key = ['conv1.conv' if i == 'down' else i for i in splited_key] + splited_key = ['conv2.conv' if i == 'up' else i for i in splited_key] + splited_key = ['head.fc' if i == 'linear' else i for i in splited_key] + new_key = '.'.join(splited_key) + converted_state_dict[new_key] = blobs[key] + + torch.save(converted_state_dict, dst) + print('Done!') + + +def main(): + parser = argparse.ArgumentParser(description='Convert model keys') + parser.add_argument('src', help='src detectron model path') + parser.add_argument('dst', help='save path') + args = parser.parse_args() + + dst = Path(args.dst) + if dst.suffix != '.pth': + print('The path should contain the name of the pth format file.') + exit(1) + dst.parent.mkdir(parents=True, exist_ok=True) + + convert(args.src, args.dst) + + +if __name__ == '__main__': + main() diff --git a/openmmlab_test/mmclassification-speed-benchmark/tools/convert_models/shufflenetv2_to_mmcls.py b/openmmlab_test/mmclassification-0.24.1/tools/convert_models/shufflenetv2_to_mmcls.py similarity index 98% rename from openmmlab_test/mmclassification-speed-benchmark/tools/convert_models/shufflenetv2_to_mmcls.py rename to openmmlab_test/mmclassification-0.24.1/tools/convert_models/shufflenetv2_to_mmcls.py index 29b9503f..69046c36 100644 --- a/openmmlab_test/mmclassification-speed-benchmark/tools/convert_models/shufflenetv2_to_mmcls.py +++ b/openmmlab_test/mmclassification-0.24.1/tools/convert_models/shufflenetv2_to_mmcls.py @@ -1,3 +1,4 @@ +# Copyright (c) OpenMMLab. All rights reserved. import argparse from collections import OrderedDict diff --git a/openmmlab_test/mmclassification-0.24.1/tools/convert_models/torchvision_to_mmcls.py b/openmmlab_test/mmclassification-0.24.1/tools/convert_models/torchvision_to_mmcls.py new file mode 100644 index 00000000..679b791e --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/tools/convert_models/torchvision_to_mmcls.py @@ -0,0 +1,63 @@ +# Copyright (c) OpenMMLab. All rights reserved. +import argparse +from collections import OrderedDict +from pathlib import Path + +import torch + + +def convert_resnet(src_dict, dst_dict): + """convert resnet checkpoints from torchvision.""" + for key, value in src_dict.items(): + if not key.startswith('fc'): + dst_dict['backbone.' + key] = value + else: + dst_dict['head.' + key] = value + + +# model name to convert function +CONVERT_F_DICT = { + 'resnet': convert_resnet, +} + + +def convert(src: str, dst: str, convert_f: callable): + print('Converting...') + blobs = torch.load(src, map_location='cpu') + converted_state_dict = OrderedDict() + + # convert key in weight + convert_f(blobs, converted_state_dict) + + torch.save(converted_state_dict, dst) + print('Done!') + + +def main(): + parser = argparse.ArgumentParser(description='Convert model keys') + parser.add_argument('src', help='src detectron model path') + parser.add_argument('dst', help='save path') + parser.add_argument( + 'model', type=str, help='The algorithm needs to change the keys.') + args = parser.parse_args() + + dst = Path(args.dst) + if dst.suffix != '.pth': + print('The path should contain the name of the pth format file.') + exit(1) + dst.parent.mkdir(parents=True, exist_ok=True) + + # this tool only support model in CONVERT_F_DICT + support_models = list(CONVERT_F_DICT.keys()) + if args.model not in CONVERT_F_DICT: + print(f'The "{args.model}" has not been supported to convert now.') + print(f'This tool only supports {", ".join(support_models)}.') + print('If you have done the converting job, PR is welcome!') + exit(1) + + convert_f = CONVERT_F_DICT[args.model] + convert(args.src, args.dst, convert_f) + + +if __name__ == '__main__': + main() diff --git a/openmmlab_test/mmclassification-0.24.1/tools/convert_models/twins2mmcls.py b/openmmlab_test/mmclassification-0.24.1/tools/convert_models/twins2mmcls.py new file mode 100644 index 00000000..e0ea04c2 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/tools/convert_models/twins2mmcls.py @@ -0,0 +1,73 @@ +# Copyright (c) OpenMMLab. All rights reserved. +import argparse +import os.path as osp +from collections import OrderedDict + +import mmcv +import torch +from mmcv.runner import CheckpointLoader + + +def convert_twins(args, ckpt): + + new_ckpt = OrderedDict() + + for k, v in list(ckpt.items()): + new_v = v + if k.startswith('head'): + new_k = k.replace('head.', 'head.fc.') + new_ckpt[new_k] = new_v + continue + elif k.startswith('patch_embeds'): + if 'proj.' in k: + new_k = k.replace('proj.', 'projection.') + else: + new_k = k + elif k.startswith('blocks'): + k = k.replace('blocks', 'stages') + # Union + if 'mlp.fc1' in k: + new_k = k.replace('mlp.fc1', 'ffn.layers.0.0') + elif 'mlp.fc2' in k: + new_k = k.replace('mlp.fc2', 'ffn.layers.1') + + else: + new_k = k + new_k = new_k.replace('blocks.', 'layers.') + elif k.startswith('pos_block'): + new_k = k.replace('pos_block', 'position_encodings') + if 'proj.0.' in new_k: + new_k = new_k.replace('proj.0.', 'proj.') + elif k.startswith('norm'): + new_k = k.replace('norm', 'norm_after_stage3') + else: + new_k = k + new_k = 'backbone.' + new_k + new_ckpt[new_k] = new_v + return new_ckpt + + +def main(): + parser = argparse.ArgumentParser( + description='Convert keys in timm pretrained vit models to ' + 'MMClassification style.') + parser.add_argument('src', help='src model path or url') + # The dst path must be a full path of the new checkpoint. + parser.add_argument('dst', help='save path') + args = parser.parse_args() + + checkpoint = CheckpointLoader.load_checkpoint(args.src, map_location='cpu') + + if 'state_dict' in checkpoint: + # timm checkpoint + state_dict = checkpoint['state_dict'] + else: + state_dict = checkpoint + + weight = convert_twins(args, state_dict) + mmcv.mkdir_or_exist(osp.dirname(args.dst)) + torch.save(weight, args.dst) + + +if __name__ == '__main__': + main() diff --git a/openmmlab_test/mmclassification-0.24.1/tools/convert_models/van2mmcls.py b/openmmlab_test/mmclassification-0.24.1/tools/convert_models/van2mmcls.py new file mode 100644 index 00000000..5ea7d9ca --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/tools/convert_models/van2mmcls.py @@ -0,0 +1,65 @@ +# Copyright (c) OpenMMLab. All rights reserved. +import argparse +import os.path as osp +from collections import OrderedDict + +import mmcv +import torch +from mmcv.runner import CheckpointLoader + + +def convert_van(ckpt): + + new_ckpt = OrderedDict() + + for k, v in list(ckpt.items()): + new_v = v + if k.startswith('head'): + new_k = k.replace('head.', 'head.fc.') + new_ckpt[new_k] = new_v + continue + elif k.startswith('patch_embed'): + if 'proj.' in k: + new_k = k.replace('proj.', 'projection.') + else: + new_k = k + elif k.startswith('block'): + new_k = k.replace('block', 'blocks') + if 'attn.spatial_gating_unit' in new_k: + new_k = new_k.replace('conv0', 'DW_conv') + new_k = new_k.replace('conv_spatial', 'DW_D_conv') + if 'dwconv.dwconv' in new_k: + new_k = new_k.replace('dwconv.dwconv', 'dwconv') + else: + new_k = k + + if not new_k.startswith('head'): + new_k = 'backbone.' + new_k + new_ckpt[new_k] = new_v + return new_ckpt + + +def main(): + parser = argparse.ArgumentParser( + description='Convert keys in pretrained van models to mmcls style.') + parser.add_argument('src', help='src model path or url') + # The dst path must be a full path of the new checkpoint. + parser.add_argument('dst', help='save path') + args = parser.parse_args() + + checkpoint = CheckpointLoader.load_checkpoint(args.src, map_location='cpu') + + if 'state_dict' in checkpoint: + state_dict = checkpoint['state_dict'] + else: + state_dict = checkpoint + + weight = convert_van(state_dict) + mmcv.mkdir_or_exist(osp.dirname(args.dst)) + torch.save(weight, args.dst) + + print('Done!!') + + +if __name__ == '__main__': + main() diff --git a/openmmlab_test/mmclassification-speed-benchmark/tools/convert_models/vgg_to_mmcls.py b/openmmlab_test/mmclassification-0.24.1/tools/convert_models/vgg_to_mmcls.py similarity index 98% rename from openmmlab_test/mmclassification-speed-benchmark/tools/convert_models/vgg_to_mmcls.py rename to openmmlab_test/mmclassification-0.24.1/tools/convert_models/vgg_to_mmcls.py index f1937c48..b5ab87f6 100644 --- a/openmmlab_test/mmclassification-speed-benchmark/tools/convert_models/vgg_to_mmcls.py +++ b/openmmlab_test/mmclassification-0.24.1/tools/convert_models/vgg_to_mmcls.py @@ -1,3 +1,4 @@ +# Copyright (c) OpenMMLab. All rights reserved. import argparse import os from collections import OrderedDict @@ -103,7 +104,7 @@ def main(): parser.add_argument( '--bn', action='store_true', help='whether original vgg has BN') parser.add_argument( - '--layer_num', + '--layer-num', type=int, choices=[11, 13, 16, 19], default=11, diff --git a/openmmlab_test/mmclassification-speed-benchmark/tools/deployment/mmcls2torchserve.py b/openmmlab_test/mmclassification-0.24.1/tools/deployment/mmcls2torchserve.py similarity index 98% rename from openmmlab_test/mmclassification-speed-benchmark/tools/deployment/mmcls2torchserve.py rename to openmmlab_test/mmclassification-0.24.1/tools/deployment/mmcls2torchserve.py index 6124291f..b4ab14d8 100644 --- a/openmmlab_test/mmclassification-speed-benchmark/tools/deployment/mmcls2torchserve.py +++ b/openmmlab_test/mmclassification-0.24.1/tools/deployment/mmcls2torchserve.py @@ -1,3 +1,4 @@ +# Copyright (c) OpenMMLab. All rights reserved. from argparse import ArgumentParser, Namespace from pathlib import Path from tempfile import TemporaryDirectory diff --git a/openmmlab_test/mmclassification-speed-benchmark/tools/deployment/mmcls_handler.py b/openmmlab_test/mmclassification-0.24.1/tools/deployment/mmcls_handler.py similarity index 97% rename from openmmlab_test/mmclassification-speed-benchmark/tools/deployment/mmcls_handler.py rename to openmmlab_test/mmclassification-0.24.1/tools/deployment/mmcls_handler.py index 8a728f47..68815e96 100644 --- a/openmmlab_test/mmclassification-speed-benchmark/tools/deployment/mmcls_handler.py +++ b/openmmlab_test/mmclassification-0.24.1/tools/deployment/mmcls_handler.py @@ -1,3 +1,4 @@ +# Copyright (c) OpenMMLab. All rights reserved. import base64 import os diff --git a/openmmlab_test/mmclassification-speed-benchmark/tools/deployment/onnx2tensorrt.py b/openmmlab_test/mmclassification-0.24.1/tools/deployment/onnx2tensorrt.py similarity index 86% rename from openmmlab_test/mmclassification-speed-benchmark/tools/deployment/onnx2tensorrt.py rename to openmmlab_test/mmclassification-0.24.1/tools/deployment/onnx2tensorrt.py index 60454066..8f71b615 100644 --- a/openmmlab_test/mmclassification-speed-benchmark/tools/deployment/onnx2tensorrt.py +++ b/openmmlab_test/mmclassification-0.24.1/tools/deployment/onnx2tensorrt.py @@ -1,6 +1,8 @@ +# Copyright (c) OpenMMLab. All rights reserved. import argparse import os import os.path as osp +import warnings import numpy as np @@ -27,14 +29,14 @@ def onnx2tensorrt(onnx_file, max_batch_size (int): Max batch size of the model. verify (bool, optional): Whether to verify the converted model. Defaults to False. - workspace_size (int, optional): Maximium workspace of GPU. + workspace_size (int, optional): Maximum workspace of GPU. Defaults to 1. """ import onnx from mmcv.tensorrt import TRTWraper, onnx2trt, save_trt_engine onnx_model = onnx.load(onnx_file) - # create trt engine and wraper + # create trt engine and wrapper assert max_batch_size >= 1 max_shape = [max_batch_size] + list(input_shape[1:]) opt_shape_dict = {'input': [input_shape, input_shape, max_shape]} @@ -51,8 +53,8 @@ def onnx2tensorrt(onnx_file, print(f'Successfully created TensorRT engine: {trt_file}') if verify: - import torch import onnxruntime as ort + import torch input_img = torch.randn(*input_shape) input_img_cpu = input_img.detach().cpu().numpy() @@ -139,3 +141,15 @@ if __name__ == '__main__': fp16_mode=args.fp16, verify=args.verify, workspace_size=args.workspace_size) + + # Following strings of text style are from colorama package + bright_style, reset_style = '\x1b[1m', '\x1b[0m' + red_text, blue_text = '\x1b[31m', '\x1b[34m' + white_background = '\x1b[107m' + + msg = white_background + bright_style + red_text + msg += 'DeprecationWarning: This tool will be deprecated in future. ' + msg += blue_text + 'Welcome to use the unified model deployment toolbox ' + msg += 'MMDeploy: https://github.com/open-mmlab/mmdeploy' + msg += reset_style + warnings.warn(msg) diff --git a/openmmlab_test/mmclassification-0.24.1/tools/deployment/pytorch2mlmodel.py b/openmmlab_test/mmclassification-0.24.1/tools/deployment/pytorch2mlmodel.py new file mode 100644 index 00000000..814cbe94 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/tools/deployment/pytorch2mlmodel.py @@ -0,0 +1,160 @@ +# Copyright (c) OpenMMLab. All rights reserved. +import argparse +import os +import os.path as osp +import warnings +from functools import partial + +import mmcv +import numpy as np +import torch +from mmcv.runner import load_checkpoint +from torch import nn + +from mmcls.models import build_classifier + +torch.manual_seed(3) + +try: + import coremltools as ct +except ImportError: + raise ImportError('Please install coremltools to enable output file.') + + +def _demo_mm_inputs(input_shape: tuple, num_classes: int): + """Create a superset of inputs needed to run test or train batches. + + Args: + input_shape (tuple): + input batch dimensions + num_classes (int): + number of semantic classes + """ + (N, C, H, W) = input_shape + rng = np.random.RandomState(0) + imgs = rng.rand(*input_shape) + gt_labels = rng.randint( + low=0, high=num_classes, size=(N, 1)).astype(np.uint8) + mm_inputs = { + 'imgs': torch.FloatTensor(imgs).requires_grad_(False), + 'gt_labels': torch.LongTensor(gt_labels), + } + return mm_inputs + + +def pytorch2mlmodel(model: nn.Module, input_shape: tuple, output_file: str, + add_norm: bool, norm: dict): + """Export Pytorch model to mlmodel format that can be deployed in apple + devices through torch.jit.trace and the coremltools library. + + Optionally, embed the normalization step as a layer to the model. + + Args: + model (nn.Module): Pytorch model we want to export. + input_shape (tuple): Use this input shape to construct + the corresponding dummy input and execute the model. + show (bool): Whether print the computation graph. Default: False. + output_file (string): The path to where we store the output + TorchScript model. + add_norm (bool): Whether to embed the normalization layer to the + output model. + norm (dict): image normalization config for embedding it as a layer + to the output model. + """ + model.cpu().eval() + + num_classes = model.head.num_classes + mm_inputs = _demo_mm_inputs(input_shape, num_classes) + + imgs = mm_inputs.pop('imgs') + img_list = [img[None, :] for img in imgs] + model.forward = partial(model.forward, img_metas={}, return_loss=False) + + with torch.no_grad(): + trace_model = torch.jit.trace(model, img_list[0]) + save_dir, _ = osp.split(output_file) + if save_dir: + os.makedirs(save_dir, exist_ok=True) + + if add_norm: + means, stds = norm.mean, norm.std + if stds.count(stds[0]) != len(stds): + warnings.warn(f'Image std from config is {stds}. However, ' + 'current version of coremltools (5.1) uses a ' + 'global std rather than the channel-specific ' + 'values that torchvision uses. A mean will be ' + 'taken but this might tamper with the resulting ' + 'model\'s predictions. For more details refer ' + 'to the coreml docs on ImageType pre-processing') + scale = np.mean(stds) + else: + scale = stds[0] + + bias = [-mean / scale for mean in means] + image_input = ct.ImageType( + name='input_1', + shape=input_shape, + scale=1 / scale, + bias=bias, + color_layout='RGB', + channel_first=True) + + coreml_model = ct.convert(trace_model, inputs=[image_input]) + coreml_model.save(output_file) + else: + coreml_model = ct.convert( + trace_model, inputs=[ct.TensorType(shape=input_shape)]) + coreml_model.save(output_file) + + print(f'Successfully exported coreml model: {output_file}') + + +def parse_args(): + parser = argparse.ArgumentParser( + description='Convert MMCls to MlModel format for apple devices') + parser.add_argument('config', help='test config file path') + parser.add_argument('--checkpoint', help='checkpoint file', type=str) + parser.add_argument('--output-file', type=str, default='model.mlmodel') + parser.add_argument( + '--shape', + type=int, + nargs='+', + default=[224, 224], + help='input image size') + parser.add_argument( + '--add-norm-layer', + action='store_true', + help='embed normalization layer to deployed model') + args = parser.parse_args() + return args + + +if __name__ == '__main__': + args = parse_args() + + if len(args.shape) == 1: + input_shape = (1, 3, args.shape[0], args.shape[0]) + elif len(args.shape) == 2: + input_shape = ( + 1, + 3, + ) + tuple(args.shape) + else: + raise ValueError('invalid input shape') + + cfg = mmcv.Config.fromfile(args.config) + cfg.model.pretrained = None + + # build the model and load checkpoint + classifier = build_classifier(cfg.model) + + if args.checkpoint: + load_checkpoint(classifier, args.checkpoint, map_location='cpu') + + # convert model to mlmodel file + pytorch2mlmodel( + classifier, + input_shape, + output_file=args.output_file, + add_norm=args.add_norm_layer, + norm=cfg.img_norm_cfg) diff --git a/openmmlab_test/mmclassification-speed-benchmark/tools/deployment/pytorch2onnx.py b/openmmlab_test/mmclassification-0.24.1/tools/deployment/pytorch2onnx.py similarity index 81% rename from openmmlab_test/mmclassification-speed-benchmark/tools/deployment/pytorch2onnx.py rename to openmmlab_test/mmclassification-0.24.1/tools/deployment/pytorch2onnx.py index 27aba5ff..85d795f1 100644 --- a/openmmlab_test/mmclassification-speed-benchmark/tools/deployment/pytorch2onnx.py +++ b/openmmlab_test/mmclassification-0.24.1/tools/deployment/pytorch2onnx.py @@ -1,4 +1,6 @@ +# Copyright (c) OpenMMLab. All rights reserved. import argparse +import warnings from functools import partial import mmcv @@ -58,7 +60,15 @@ def pytorch2onnx(model, """ model.cpu().eval() - num_classes = model.head.num_classes + if hasattr(model.head, 'num_classes'): + num_classes = model.head.num_classes + # Some backbones use `num_classes=-1` to disable top classifier. + elif getattr(model.backbone, 'num_classes', -1) > 0: + num_classes = model.backbone.num_classes + else: + raise AttributeError('Cannot find "num_classes" in both head and ' + 'backbone, please check the config file.') + mm_inputs = _demo_mm_inputs(input_shape, num_classes) imgs = mm_inputs.pop('imgs') @@ -99,29 +109,21 @@ def pytorch2onnx(model, model.forward = origin_forward if do_simplify: - from mmcv import digit_version + import onnx import onnxsim + from mmcv import digit_version - min_required_version = '0.3.0' - assert digit_version(mmcv.__version__) >= digit_version( + min_required_version = '0.4.0' + assert digit_version(onnxsim.__version__) >= digit_version( min_required_version - ), f'Requires to install onnx-simplify>={min_required_version}' + ), f'Requires to install onnxsim>={min_required_version}' - if dynamic_axes: - input_shape = (input_shape[0], input_shape[1], input_shape[2] * 2, - input_shape[3] * 2) + model_opt, check_ok = onnxsim.simplify(output_file) + if check_ok: + onnx.save(model_opt, output_file) + print(f'Successfully simplified ONNX model: {output_file}') else: - input_shape = (input_shape[0], input_shape[1], input_shape[2], - input_shape[3]) - imgs = _demo_mm_inputs(input_shape, model.head.num_classes).pop('imgs') - input_dic = {'input': imgs.detach().cpu().numpy()} - input_shape_dic = {'input': list(input_shape)} - - onnxsim.simplify( - output_file, - input_shapes=input_shape_dic, - input_data=input_dic, - dynamic_input_shape=dynamic_export) + print('Failed to simplify ONNX model.') if verify: # check by onnx import onnx @@ -206,7 +208,7 @@ if __name__ == '__main__': if args.checkpoint: load_checkpoint(classifier, args.checkpoint, map_location='cpu') - # conver model to onnx file + # convert model to onnx file pytorch2onnx( classifier, input_shape, @@ -216,3 +218,15 @@ if __name__ == '__main__': output_file=args.output_file, do_simplify=args.simplify, verify=args.verify) + + # Following strings of text style are from colorama package + bright_style, reset_style = '\x1b[1m', '\x1b[0m' + red_text, blue_text = '\x1b[31m', '\x1b[34m' + white_background = '\x1b[107m' + + msg = white_background + bright_style + red_text + msg += 'DeprecationWarning: This tool will be deprecated in future. ' + msg += blue_text + 'Welcome to use the unified model deployment toolbox ' + msg += 'MMDeploy: https://github.com/open-mmlab/mmdeploy' + msg += reset_style + warnings.warn(msg) diff --git a/openmmlab_test/mmclassification-speed-benchmark/tools/deployment/pytorch2torchscript.py b/openmmlab_test/mmclassification-0.24.1/tools/deployment/pytorch2torchscript.py similarity index 97% rename from openmmlab_test/mmclassification-speed-benchmark/tools/deployment/pytorch2torchscript.py rename to openmmlab_test/mmclassification-0.24.1/tools/deployment/pytorch2torchscript.py index edaca2d2..f261b7c9 100644 --- a/openmmlab_test/mmclassification-speed-benchmark/tools/deployment/pytorch2torchscript.py +++ b/openmmlab_test/mmclassification-0.24.1/tools/deployment/pytorch2torchscript.py @@ -1,3 +1,4 @@ +# Copyright (c) OpenMMLab. All rights reserved. import argparse import os import os.path as osp @@ -130,7 +131,7 @@ if __name__ == '__main__': if args.checkpoint: load_checkpoint(classifier, args.checkpoint, map_location='cpu') - # conver model to TorchScript file + # convert model to TorchScript file pytorch2torchscript( classifier, input_shape, diff --git a/openmmlab_test/mmclassification-0.24.1/tools/deployment/test.py b/openmmlab_test/mmclassification-0.24.1/tools/deployment/test.py new file mode 100644 index 00000000..5977f535 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/tools/deployment/test.py @@ -0,0 +1,128 @@ +# Copyright (c) OpenMMLab. All rights reserved. +import argparse +import warnings + +import mmcv +import numpy as np +from mmcv import DictAction +from mmcv.parallel import MMDataParallel + +from mmcls.apis import single_gpu_test +from mmcls.core.export import ONNXRuntimeClassifier, TensorRTClassifier +from mmcls.datasets import build_dataloader, build_dataset + + +def parse_args(): + parser = argparse.ArgumentParser( + description='Test (and eval) an ONNX model using ONNXRuntime.') + parser.add_argument('config', help='model config file') + parser.add_argument('model', help='filename of the input ONNX model') + parser.add_argument( + '--backend', + help='Backend of the model.', + choices=['onnxruntime', 'tensorrt']) + parser.add_argument( + '--out', type=str, help='output result file in pickle format') + parser.add_argument( + '--cfg-options', + nargs='+', + action=DictAction, + help='override some settings in the used config, the key-value pair ' + 'in xxx=yyy format will be merged into config file.') + parser.add_argument( + '--metrics', + type=str, + nargs='+', + help='evaluation metrics, which depends on the dataset, e.g., ' + '"accuracy", "precision", "recall", "f1_score", "support" for single ' + 'label dataset, and "mAP", "CP", "CR", "CF1", "OP", "OR", "OF1" for ' + 'multi-label dataset') + parser.add_argument( + '--metric-options', + nargs='+', + action=DictAction, + default={}, + help='custom options for evaluation, the key-value pair in xxx=yyy ' + 'format will be parsed as a dict metric_options for dataset.evaluate()' + ' function.') + parser.add_argument('--show', action='store_true', help='show results') + parser.add_argument( + '--show-dir', help='directory where painted images will be saved') + args = parser.parse_args() + return args + + +def main(): + args = parse_args() + + if args.out is not None and not args.out.endswith(('.pkl', '.pickle')): + raise ValueError('The output file must be a pkl file.') + + cfg = mmcv.Config.fromfile(args.config) + if args.cfg_options is not None: + cfg.merge_from_dict(args.cfg_options) + + # build dataset and dataloader + dataset = build_dataset(cfg.data.test) + data_loader = build_dataloader( + dataset, + samples_per_gpu=cfg.data.samples_per_gpu, + workers_per_gpu=cfg.data.workers_per_gpu, + shuffle=False, + round_up=False) + + # build onnxruntime model and run inference. + if args.backend == 'onnxruntime': + model = ONNXRuntimeClassifier( + args.model, class_names=dataset.CLASSES, device_id=0) + elif args.backend == 'tensorrt': + model = TensorRTClassifier( + args.model, class_names=dataset.CLASSES, device_id=0) + else: + print('Unknown backend: {}.'.format(args.model)) + exit(1) + + model = MMDataParallel(model, device_ids=[0]) + model.CLASSES = dataset.CLASSES + outputs = single_gpu_test(model, data_loader, args.show, args.show_dir) + + if args.metrics: + results = dataset.evaluate(outputs, args.metrics, args.metric_options) + for k, v in results.items(): + print(f'\n{k} : {v:.2f}') + else: + warnings.warn('Evaluation metrics are not specified.') + scores = np.vstack(outputs) + pred_score = np.max(scores, axis=1) + pred_label = np.argmax(scores, axis=1) + pred_class = [dataset.CLASSES[lb] for lb in pred_label] + results = { + 'pred_score': pred_score, + 'pred_label': pred_label, + 'pred_class': pred_class + } + if not args.out: + print('\nthe predicted result for the first element is ' + f'pred_score = {pred_score[0]:.2f}, ' + f'pred_label = {pred_label[0]} ' + f'and pred_class = {pred_class[0]}. ' + 'Specify --out to save all results to files.') + if args.out: + print(f'\nwriting results to {args.out}') + mmcv.dump(results, args.out) + + +if __name__ == '__main__': + main() + + # Following strings of text style are from colorama package + bright_style, reset_style = '\x1b[1m', '\x1b[0m' + red_text, blue_text = '\x1b[31m', '\x1b[34m' + white_background = '\x1b[107m' + + msg = white_background + bright_style + red_text + msg += 'DeprecationWarning: This tool will be deprecated in future. ' + msg += blue_text + 'Welcome to use the unified model deployment toolbox ' + msg += 'MMDeploy: https://github.com/open-mmlab/mmdeploy' + msg += reset_style + warnings.warn(msg) diff --git a/openmmlab_test/mmclassification-0.24.1/tools/deployment/test_torchserver.py b/openmmlab_test/mmclassification-0.24.1/tools/deployment/test_torchserver.py new file mode 100644 index 00000000..1be611f9 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/tools/deployment/test_torchserver.py @@ -0,0 +1,45 @@ +# Copyright (c) OpenMMLab. All rights reserved. +from argparse import ArgumentParser + +import numpy as np +import requests + +from mmcls.apis import inference_model, init_model, show_result_pyplot + + +def parse_args(): + parser = ArgumentParser() + parser.add_argument('img', help='Image file') + parser.add_argument('config', help='Config file') + parser.add_argument('checkpoint', help='Checkpoint file') + parser.add_argument('model_name', help='The model name in the server') + parser.add_argument( + '--inference-addr', + default='127.0.0.1:8080', + help='Address and port of the inference server') + parser.add_argument( + '--device', default='cuda:0', help='Device used for inference') + args = parser.parse_args() + return args + + +def main(args): + # Inference single image by native apis. + model = init_model(args.config, args.checkpoint, device=args.device) + model_result = inference_model(model, args.img) + show_result_pyplot(model, args.img, model_result, title='pytorch_result') + + # Inference single image by torchserve engine. + url = 'http://' + args.inference_addr + '/predictions/' + args.model_name + with open(args.img, 'rb') as image: + response = requests.post(url, image) + server_result = response.json() + show_result_pyplot(model, args.img, server_result, title='server_result') + + assert np.allclose(model_result['pred_score'], server_result['pred_score']) + print('Test complete, the results of PyTorch and TorchServe are the same.') + + +if __name__ == '__main__': + args = parse_args() + main(args) diff --git a/openmmlab_test/mmclassification-0.24.1/tools/dist_test.sh b/openmmlab_test/mmclassification-0.24.1/tools/dist_test.sh new file mode 100644 index 00000000..dea131b4 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/tools/dist_test.sh @@ -0,0 +1,22 @@ +#!/usr/bin/env bash + +CONFIG=$1 +CHECKPOINT=$2 +GPUS=$3 +NNODES=${NNODES:-1} +NODE_RANK=${NODE_RANK:-0} +PORT=${PORT:-29500} +MASTER_ADDR=${MASTER_ADDR:-"127.0.0.1"} + +PYTHONPATH="$(dirname $0)/..":$PYTHONPATH \ +python -m torch.distributed.launch \ + --nnodes=$NNODES \ + --node_rank=$NODE_RANK \ + --master_addr=$MASTER_ADDR \ + --nproc_per_node=$GPUS \ + --master_port=$PORT \ + $(dirname "$0")/test.py \ + $CONFIG \ + $CHECKPOINT \ + --launcher pytorch \ + ${@:4} diff --git a/openmmlab_test/mmclassification-0.24.1/tools/dist_train.sh b/openmmlab_test/mmclassification-0.24.1/tools/dist_train.sh new file mode 100644 index 00000000..b6aa2db5 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/tools/dist_train.sh @@ -0,0 +1,21 @@ +#!/usr/bin/env bash +export MIOPEN_FIND_MODE=1 +export MIOPEN_USE_APPROXIMATE_PERFORMANCE=0 +export HSA_FORCE_FINE_GRAIN_PCIE=1 +CONFIG=$1 +GPUS=$2 +NNODES=${NNODES:-1} +NODE_RANK=${NODE_RANK:-0} +PORT=${PORT:-29500} +MASTER_ADDR=${MASTER_ADDR:-"127.0.0.1"} + +PYTHONPATH="$(dirname $0)/..":$PYTHONPATH \ +python -m torch.distributed.launch \ + --nnodes=$NNODES \ + --node_rank=$NODE_RANK \ + --master_addr=$MASTER_ADDR \ + --nproc_per_node=$GPUS \ + --master_port=$PORT \ + $(dirname "$0")/train.py \ + $CONFIG \ + --launcher pytorch ${@:3} diff --git a/openmmlab_test/mmclassification-0.24.1/tools/kfold-cross-valid.py b/openmmlab_test/mmclassification-0.24.1/tools/kfold-cross-valid.py new file mode 100644 index 00000000..2f3a70e1 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/tools/kfold-cross-valid.py @@ -0,0 +1,371 @@ +# Copyright (c) OpenMMLab. All rights reserved. +import argparse +import copy +import os +import os.path as osp +import time +import warnings +from datetime import datetime +from pathlib import Path + +import mmcv +import torch +from mmcv import Config, DictAction +from mmcv.runner import get_dist_info, init_dist + +from mmcls import __version__ +from mmcls.apis import init_random_seed, set_random_seed, train_model +from mmcls.datasets import build_dataset +from mmcls.models import build_classifier +from mmcls.utils import collect_env, get_root_logger, load_json_log + +TEST_METRICS = ('precision', 'recall', 'f1_score', 'support', 'mAP', 'CP', + 'CR', 'CF1', 'OP', 'OR', 'OF1', 'accuracy') + +prog_description = """K-Fold cross-validation. + +To start a 5-fold cross-validation experiment: + python tools/kfold-cross-valid.py $CONFIG --num-splits 5 + +To resume a 5-fold cross-validation from an interrupted experiment: + python tools/kfold-cross-valid.py $CONFIG --num-splits 5 --resume-from work_dirs/fold2/latest.pth + +To summarize a 5-fold cross-validation: + python tools/kfold-cross-valid.py $CONFIG --num-splits 5 --summary +""" # noqa: E501 + + +def parse_args(): + parser = argparse.ArgumentParser( + formatter_class=argparse.RawDescriptionHelpFormatter, + description=prog_description) + parser.add_argument('config', help='train config file path') + parser.add_argument( + '--num-splits', type=int, help='The number of all folds.') + parser.add_argument( + '--fold', + type=int, + help='The fold used to do validation. ' + 'If specify, only do an experiment of the specified fold.') + parser.add_argument( + '--summary', + action='store_true', + help='Summarize the k-fold cross-validation results.') + parser.add_argument('--work-dir', help='the dir to save logs and models') + parser.add_argument( + '--resume-from', help='the checkpoint file to resume from') + parser.add_argument( + '--no-validate', + action='store_true', + help='whether not to evaluate the checkpoint during training') + group_gpus = parser.add_mutually_exclusive_group() + group_gpus.add_argument('--device', help='device used for training') + group_gpus.add_argument( + '--gpus', + type=int, + help='(Deprecated, please use --gpu-id) number of gpus to use ' + '(only applicable to non-distributed training)') + group_gpus.add_argument( + '--gpu-ids', + type=int, + nargs='+', + help='(Deprecated, please use --gpu-id) ids of gpus to use ' + '(only applicable to non-distributed training)') + group_gpus.add_argument( + '--gpu-id', + type=int, + default=0, + help='id of gpu to use ' + '(only applicable to non-distributed training)') + parser.add_argument('--seed', type=int, default=None, help='random seed') + parser.add_argument( + '--deterministic', + action='store_true', + help='whether to set deterministic options for CUDNN backend.') + parser.add_argument( + '--cfg-options', + nargs='+', + action=DictAction, + help='override some settings in the used config, the key-value pair ' + 'in xxx=yyy format will be merged into config file. If the value to ' + 'be overwritten is a list, it should be like key="[a,b]" or key=a,b ' + 'It also allows nested list/tuple values, e.g. key="[(a,b),(c,d)]" ' + 'Note that the quotation marks are necessary and that no white space ' + 'is allowed.') + parser.add_argument( + '--launcher', + choices=['none', 'pytorch', 'slurm', 'mpi'], + default='none', + help='job launcher') + parser.add_argument('--local_rank', type=int, default=0) + args = parser.parse_args() + if 'LOCAL_RANK' not in os.environ: + os.environ['LOCAL_RANK'] = str(args.local_rank) + + return args + + +def copy_config(old_cfg): + """deepcopy a Config object.""" + new_cfg = Config() + _cfg_dict = copy.deepcopy(old_cfg._cfg_dict) + _filename = copy.deepcopy(old_cfg._filename) + _text = copy.deepcopy(old_cfg._text) + super(Config, new_cfg).__setattr__('_cfg_dict', _cfg_dict) + super(Config, new_cfg).__setattr__('_filename', _filename) + super(Config, new_cfg).__setattr__('_text', _text) + return new_cfg + + +def train_single_fold(args, cfg, fold, distributed, seed): + # create the work_dir for the fold + work_dir = osp.join(cfg.work_dir, f'fold{fold}') + cfg.work_dir = work_dir + + # create work_dir + mmcv.mkdir_or_exist(osp.abspath(cfg.work_dir)) + + # wrap the dataset cfg + train_dataset = dict( + type='KFoldDataset', + fold=fold, + dataset=cfg.data.train, + num_splits=args.num_splits, + seed=seed, + ) + val_dataset = dict( + type='KFoldDataset', + fold=fold, + # Use the same dataset with training. + dataset=copy.deepcopy(cfg.data.train), + num_splits=args.num_splits, + seed=seed, + test_mode=True, + ) + val_dataset['dataset']['pipeline'] = cfg.data.val.pipeline + cfg.data.train = train_dataset + cfg.data.val = val_dataset + cfg.data.test = val_dataset + + # dump config + stem, suffix = osp.basename(args.config).rsplit('.', 1) + cfg.dump(osp.join(cfg.work_dir, f'{stem}_fold{fold}.{suffix}')) + # init the logger before other steps + timestamp = time.strftime('%Y%m%d_%H%M%S', time.localtime()) + log_file = osp.join(cfg.work_dir, f'{timestamp}.log') + logger = get_root_logger(log_file=log_file, log_level=cfg.log_level) + + # init the meta dict to record some important information such as + # environment info and seed, which will be logged + meta = dict() + # log env info + env_info_dict = collect_env() + env_info = '\n'.join([(f'{k}: {v}') for k, v in env_info_dict.items()]) + dash_line = '-' * 60 + '\n' + logger.info('Environment info:\n' + dash_line + env_info + '\n' + + dash_line) + meta['env_info'] = env_info + + # log some basic info + logger.info(f'Distributed training: {distributed}') + logger.info(f'Config:\n{cfg.pretty_text}') + logger.info( + f'-------- Cross-validation: [{fold+1}/{args.num_splits}] -------- ') + + # set random seeds + # Use different seed in different folds + logger.info(f'Set random seed to {seed + fold}, ' + f'deterministic: {args.deterministic}') + set_random_seed(seed + fold, deterministic=args.deterministic) + cfg.seed = seed + fold + meta['seed'] = seed + fold + + model = build_classifier(cfg.model) + model.init_weights() + + datasets = [build_dataset(cfg.data.train)] + if len(cfg.workflow) == 2: + val_dataset = copy.deepcopy(cfg.data.val) + val_dataset.pipeline = cfg.data.train.pipeline + datasets.append(build_dataset(val_dataset)) + meta.update( + dict( + mmcls_version=__version__, + config=cfg.pretty_text, + CLASSES=datasets[0].CLASSES, + kfold=dict(fold=fold, num_splits=args.num_splits))) + # add an attribute for visualization convenience + train_model( + model, + datasets, + cfg, + distributed=distributed, + validate=(not args.no_validate), + timestamp=timestamp, + device='cpu' if args.device == 'cpu' else 'cuda', + meta=meta) + + +def summary(args, cfg): + summary = dict() + for fold in range(args.num_splits): + work_dir = Path(cfg.work_dir) / f'fold{fold}' + + # Find the latest training log + log_files = list(work_dir.glob('*.log.json')) + if len(log_files) == 0: + continue + log_file = sorted(log_files)[-1] + + date = datetime.fromtimestamp(log_file.lstat().st_mtime) + summary[fold] = {'date': date.strftime('%Y-%m-%d %H:%M:%S')} + + # Find the latest eval log + json_log = load_json_log(log_file) + epochs = sorted(list(json_log.keys())) + eval_log = {} + + def is_metric_key(key): + for metric in TEST_METRICS: + if metric in key: + return True + return False + + for epoch in epochs[::-1]: + if any(is_metric_key(k) for k in json_log[epoch].keys()): + eval_log = json_log[epoch] + break + + summary[fold]['epoch'] = epoch + summary[fold]['metric'] = { + k: v[0] # the value is a list with only one item. + for k, v in eval_log.items() if is_metric_key(k) + } + show_summary(args, summary) + + +def show_summary(args, summary_data): + try: + from rich.console import Console + from rich.table import Table + except ImportError: + raise ImportError('Please run `pip install rich` to install ' + 'package `rich` to draw the table.') + + console = Console() + table = Table(title=f'{args.num_splits}-fold Cross-validation Summary') + table.add_column('Fold') + metrics = summary_data[0]['metric'].keys() + for metric in metrics: + table.add_column(metric) + table.add_column('Epoch') + table.add_column('Date') + + for fold in range(args.num_splits): + row = [f'{fold+1}'] + if fold not in summary_data: + table.add_row(*row) + continue + for metric in metrics: + metric_value = summary_data[fold]['metric'].get(metric, '') + + def format_value(value): + if isinstance(value, float): + return f'{value:.2f}' + if isinstance(value, (list, tuple)): + return str([format_value(i) for i in value]) + else: + return str(value) + + row.append(format_value(metric_value)) + row.append(str(summary_data[fold]['epoch'])) + row.append(summary_data[fold]['date']) + table.add_row(*row) + + console.print(table) + + +def main(): + args = parse_args() + + cfg = Config.fromfile(args.config) + if args.cfg_options is not None: + cfg.merge_from_dict(args.cfg_options) + # set cudnn_benchmark + if cfg.get('cudnn_benchmark', False): + torch.backends.cudnn.benchmark = True + + # work_dir is determined in this priority: CLI > segment in file > filename + if args.work_dir is not None: + # update configs according to CLI args if args.work_dir is not None + cfg.work_dir = args.work_dir + elif cfg.get('work_dir', None) is None: + # use config filename as default work_dir if cfg.work_dir is None + cfg.work_dir = osp.join('./work_dirs', + osp.splitext(osp.basename(args.config))[0]) + + if args.summary: + summary(args, cfg) + return + + # resume from the previous experiment + if args.resume_from is not None: + cfg.resume_from = args.resume_from + resume_kfold = torch.load(cfg.resume_from).get('meta', + {}).get('kfold', None) + if resume_kfold is None: + raise RuntimeError( + 'No "meta" key in checkpoints or no "kfold" in the meta dict. ' + 'Please check if the resume checkpoint from a k-fold ' + 'cross-valid experiment.') + resume_fold = resume_kfold['fold'] + assert args.num_splits == resume_kfold['num_splits'] + else: + resume_fold = 0 + + if args.gpus is not None: + cfg.gpu_ids = range(1) + warnings.warn('`--gpus` is deprecated because we only support ' + 'single GPU mode in non-distributed training. ' + 'Use `gpus=1` now.') + if args.gpu_ids is not None: + cfg.gpu_ids = args.gpu_ids[0:1] + warnings.warn('`--gpu-ids` is deprecated, please use `--gpu-id`. ' + 'Because we only support single GPU mode in ' + 'non-distributed training. Use the first GPU ' + 'in `gpu_ids` now.') + if args.gpus is None and args.gpu_ids is None: + cfg.gpu_ids = [args.gpu_id] + + # init distributed env first, since logger depends on the dist info. + if args.launcher == 'none': + distributed = False + else: + distributed = True + init_dist(args.launcher, **cfg.dist_params) + _, world_size = get_dist_info() + cfg.gpu_ids = range(world_size) + + # init a unified random seed + seed = init_random_seed(args.seed) + + # create work_dir + mmcv.mkdir_or_exist(osp.abspath(cfg.work_dir)) + + if args.fold is not None: + folds = [args.fold] + else: + folds = range(resume_fold, args.num_splits) + + for fold in folds: + cfg_ = copy_config(cfg) + if fold != resume_fold: + cfg_.resume_from = None + train_single_fold(args, cfg_, fold, distributed, seed) + + if args.fold is None: + summary(args, cfg) + + +if __name__ == '__main__': + main() diff --git a/openmmlab_test/mmclassification-0.24.1/tools/misc/print_config.py b/openmmlab_test/mmclassification-0.24.1/tools/misc/print_config.py new file mode 100644 index 00000000..a2781a60 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/tools/misc/print_config.py @@ -0,0 +1,35 @@ +# Copyright (c) OpenMMLab. All rights reserved. +import argparse + +from mmcv import Config, DictAction + + +def parse_args(): + parser = argparse.ArgumentParser(description='Print the whole config') + parser.add_argument('config', help='config file path') + parser.add_argument( + '--cfg-options', + nargs='+', + action=DictAction, + help='override some settings in the used config, the key-value pair ' + 'in xxx=yyy format will be merged into config file. If the value to ' + 'be overwritten is a list, it should be like key="[a,b]" or key=a,b ' + 'It also allows nested list/tuple values, e.g. key="[(a,b),(c,d)]" ' + 'Note that the quotation marks are necessary and that no white space ' + 'is allowed.') + args = parser.parse_args() + + return args + + +def main(): + args = parse_args() + + cfg = Config.fromfile(args.config) + if args.cfg_options is not None: + cfg.merge_from_dict(args.cfg_options) + print(f'Config:\n{cfg.pretty_text}') + + +if __name__ == '__main__': + main() diff --git a/openmmlab_test/mmclassification-0.24.1/tools/misc/verify_dataset.py b/openmmlab_test/mmclassification-0.24.1/tools/misc/verify_dataset.py new file mode 100644 index 00000000..6114adb1 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/tools/misc/verify_dataset.py @@ -0,0 +1,131 @@ +# Copyright (c) OpenMMLab. All rights reserved. +import argparse +import fcntl +import os +from pathlib import Path + +from mmcv import Config, DictAction, track_parallel_progress, track_progress + +from mmcls.datasets import PIPELINES, build_dataset + + +def parse_args(): + parser = argparse.ArgumentParser(description='Verify Dataset') + parser.add_argument('config', help='config file path') + parser.add_argument( + '--out-path', + type=str, + default='brokenfiles.log', + help='output path of all the broken files. If the specified path ' + 'already exists, delete the previous file ') + parser.add_argument( + '--phase', + default='train', + type=str, + choices=['train', 'test', 'val'], + help='phase of dataset to visualize, accept "train" "test" and "val".') + parser.add_argument( + '--num-process', type=int, default=1, help='number of process to use') + parser.add_argument( + '--cfg-options', + nargs='+', + action=DictAction, + help='override some settings in the used config, the key-value pair ' + 'in xxx=yyy format will be merged into config file. If the value to ' + 'be overwritten is a list, it should be like key="[a,b]" or key=a,b ' + 'It also allows nested list/tuple values, e.g. key="[(a,b),(c,d)]" ' + 'Note that the quotation marks are necessary and that no white space ' + 'is allowed.') + args = parser.parse_args() + assert args.out_path is not None + assert args.num_process > 0 + return args + + +class DatasetValidator(): + """the dataset tool class to check if all file are broken.""" + + def __init__(self, dataset_cfg, log_file_path, phase): + super(DatasetValidator, self).__init__() + # keep only LoadImageFromFile pipeline + assert dataset_cfg.data[phase].pipeline[0][ + 'type'] == 'LoadImageFromFile', 'This tool is only for dataset ' \ + 'that needs to load image from files.' + self.pipeline = PIPELINES.build(dataset_cfg.data[phase].pipeline[0]) + dataset_cfg.data[phase].pipeline = [] + dataset = build_dataset(dataset_cfg.data[phase]) + + self.dataset = dataset + self.log_file_path = log_file_path + + def valid_idx(self, idx): + item = self.dataset[idx] + try: + item = self.pipeline(item) + except Exception: + with open(self.log_file_path, 'a') as f: + # add file lock to prevent multi-process writing errors + fcntl.flock(f.fileno(), fcntl.LOCK_EX) + filepath = os.path.join(item['img_prefix'], + item['img_info']['filename']) + f.write(filepath + '\n') + print(f'{filepath} cannot be read correctly, please check it.') + # Release files lock automatic using with + + def __len__(self): + return len(self.dataset) + + +def print_info(log_file_path): + """print some information and do extra action.""" + print() + with open(log_file_path, 'r') as f: + context = f.read().strip() + if context == '': + print('There is no broken file found.') + os.remove(log_file_path) + else: + num_file = len(context.split('\n')) + print(f'{num_file} broken files found, name list save in file:' + f'{log_file_path}') + print() + + +def main(): + # parse cfg and args + args = parse_args() + cfg = Config.fromfile(args.config) + if args.cfg_options is not None: + cfg.merge_from_dict(args.cfg_options) + + # touch output file to save broken files list. + output_path = Path(args.out_path) + if not output_path.parent.exists(): + raise Exception('log_file parent directory not found.') + if output_path.exists(): + os.remove(output_path) + output_path.touch() + + # do valid + validator = DatasetValidator(cfg, output_path, args.phase) + + if args.num_process > 1: + # The default chunksize calcuation method of Pool.map + chunksize, extra = divmod(len(validator), args.num_process * 8) + if extra: + chunksize += 1 + + track_parallel_progress( + validator.valid_idx, + list(range(len(validator))), + args.num_process, + chunksize=chunksize, + keep_order=False) + else: + track_progress(validator.valid_idx, list(range(len(validator)))) + + print_info(output_path) + + +if __name__ == '__main__': + main() diff --git a/openmmlab_test/mmclassification-speed-benchmark/tools/slurm_test.sh b/openmmlab_test/mmclassification-0.24.1/tools/slurm_test.sh similarity index 100% rename from openmmlab_test/mmclassification-speed-benchmark/tools/slurm_test.sh rename to openmmlab_test/mmclassification-0.24.1/tools/slurm_test.sh diff --git a/openmmlab_test/mmclassification-speed-benchmark/tools/slurm_train.sh b/openmmlab_test/mmclassification-0.24.1/tools/slurm_train.sh similarity index 100% rename from openmmlab_test/mmclassification-speed-benchmark/tools/slurm_train.sh rename to openmmlab_test/mmclassification-0.24.1/tools/slurm_train.sh diff --git a/openmmlab_test/mmclassification-0.24.1/tools/test.py b/openmmlab_test/mmclassification-0.24.1/tools/test.py new file mode 100644 index 00000000..69cb2a81 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/tools/test.py @@ -0,0 +1,254 @@ +# Copyright (c) OpenMMLab. All rights reserved. +import argparse +import os +import warnings +from numbers import Number + +import mmcv +import numpy as np +import torch +from mmcv import DictAction +from mmcv.runner import (get_dist_info, init_dist, load_checkpoint, + wrap_fp16_model) + +from mmcls.apis import multi_gpu_test, single_gpu_test +from mmcls.datasets import build_dataloader, build_dataset +from mmcls.models import build_classifier +from mmcls.utils import (auto_select_device, get_root_logger, + setup_multi_processes, wrap_distributed_model, + wrap_non_distributed_model) + + +def parse_args(): + parser = argparse.ArgumentParser(description='mmcls test model') + parser.add_argument('config', help='test config file path') + parser.add_argument('checkpoint', help='checkpoint file') + parser.add_argument('--out', help='output result file') + out_options = ['class_scores', 'pred_score', 'pred_label', 'pred_class'] + parser.add_argument( + '--out-items', + nargs='+', + default=['all'], + choices=out_options + ['none', 'all'], + help='Besides metrics, what items will be included in the output ' + f'result file. You can choose some of ({", ".join(out_options)}), ' + 'or use "all" to include all above, or use "none" to disable all of ' + 'above. Defaults to output all.', + metavar='') + parser.add_argument( + '--metrics', + type=str, + nargs='+', + help='evaluation metrics, which depends on the dataset, e.g., ' + '"accuracy", "precision", "recall", "f1_score", "support" for single ' + 'label dataset, and "mAP", "CP", "CR", "CF1", "OP", "OR", "OF1" for ' + 'multi-label dataset') + parser.add_argument('--show', action='store_true', help='show results') + parser.add_argument( + '--show-dir', help='directory where painted images will be saved') + parser.add_argument( + '--gpu-collect', + action='store_true', + help='whether to use gpu to collect results') + parser.add_argument('--tmpdir', help='tmp dir for writing some results') + parser.add_argument( + '--cfg-options', + nargs='+', + action=DictAction, + help='override some settings in the used config, the key-value pair ' + 'in xxx=yyy format will be merged into config file. If the value to ' + 'be overwritten is a list, it should be like key="[a,b]" or key=a,b ' + 'It also allows nested list/tuple values, e.g. key="[(a,b),(c,d)]" ' + 'Note that the quotation marks are necessary and that no white space ' + 'is allowed.') + parser.add_argument( + '--metric-options', + nargs='+', + action=DictAction, + default={}, + help='custom options for evaluation, the key-value pair in xxx=yyy ' + 'format will be parsed as a dict metric_options for dataset.evaluate()' + ' function.') + parser.add_argument( + '--show-options', + nargs='+', + action=DictAction, + help='custom options for show_result. key-value pair in xxx=yyy.' + 'Check available options in `model.show_result`.') + parser.add_argument( + '--gpu-ids', + type=int, + nargs='+', + help='(Deprecated, please use --gpu-id) ids of gpus to use ' + '(only applicable to non-distributed testing)') + parser.add_argument( + '--gpu-id', + type=int, + default=0, + help='id of gpu to use ' + '(only applicable to non-distributed testing)') + parser.add_argument( + '--launcher', + choices=['none', 'pytorch', 'slurm', 'mpi'], + default='none', + help='job launcher') + parser.add_argument('--local_rank', type=int, default=0) + parser.add_argument('--device', help='device used for testing') + args = parser.parse_args() + if 'LOCAL_RANK' not in os.environ: + os.environ['LOCAL_RANK'] = str(args.local_rank) + + assert args.metrics or args.out, \ + 'Please specify at least one of output path and evaluation metrics.' + + return args + + +def main(): + args = parse_args() + + cfg = mmcv.Config.fromfile(args.config) + if args.cfg_options is not None: + cfg.merge_from_dict(args.cfg_options) + + # set multi-process settings + setup_multi_processes(cfg) + + # set cudnn_benchmark + if cfg.get('cudnn_benchmark', False): + torch.backends.cudnn.benchmark = True + cfg.model.pretrained = None + + if args.gpu_ids is not None: + cfg.gpu_ids = args.gpu_ids[0:1] + warnings.warn('`--gpu-ids` is deprecated, please use `--gpu-id`. ' + 'Because we only support single GPU mode in ' + 'non-distributed testing. Use the first GPU ' + 'in `gpu_ids` now.') + else: + cfg.gpu_ids = [args.gpu_id] + cfg.device = args.device or auto_select_device() + + # init distributed env first, since logger depends on the dist info. + if args.launcher == 'none': + distributed = False + else: + distributed = True + init_dist(args.launcher, **cfg.dist_params) + + dataset = build_dataset(cfg.data.test, default_args=dict(test_mode=True)) + + # build the dataloader + # The default loader config + loader_cfg = dict( + # cfg.gpus will be ignored if distributed + num_gpus=1 if cfg.device == 'ipu' else len(cfg.gpu_ids), + dist=distributed, + round_up=True, + ) + # The overall dataloader settings + loader_cfg.update({ + k: v + for k, v in cfg.data.items() if k not in [ + 'train', 'val', 'test', 'train_dataloader', 'val_dataloader', + 'test_dataloader' + ] + }) + test_loader_cfg = { + **loader_cfg, + 'shuffle': False, # Not shuffle by default + 'sampler_cfg': None, # Not use sampler by default + **cfg.data.get('test_dataloader', {}), + } + # the extra round_up data will be removed during gpu/cpu collect + data_loader = build_dataloader(dataset, **test_loader_cfg) + + # build the model and load checkpoint + model = build_classifier(cfg.model) + fp16_cfg = cfg.get('fp16', None) + print("fp16_cfg is not None-------:",fp16_cfg is not None) + if fp16_cfg is not None: + wrap_fp16_model(model) + checkpoint = load_checkpoint(model, args.checkpoint, map_location='cpu') + + if 'CLASSES' in checkpoint.get('meta', {}): + CLASSES = checkpoint['meta']['CLASSES'] + else: + from mmcls.datasets import ImageNet + warnings.simplefilter('once') + warnings.warn('Class names are not saved in the checkpoint\'s ' + 'meta data, use imagenet by default.') + CLASSES = ImageNet.CLASSES + + if not distributed: + model = wrap_non_distributed_model( + model, device=cfg.device, device_ids=cfg.gpu_ids) + if cfg.device == 'ipu': + from mmcv.device.ipu import cfg2options, ipu_model_wrapper + opts = cfg2options(cfg.runner.get('options_cfg', {})) + if fp16_cfg is not None: + model.half() + model = ipu_model_wrapper(model, opts, fp16_cfg=fp16_cfg) + data_loader.init(opts['inference']) + model.CLASSES = CLASSES + show_kwargs = args.show_options or {} + outputs = single_gpu_test(model, data_loader, args.show, args.show_dir, + **show_kwargs) + else: + from mmcv.parallel import MMDataParallel, MMDistributedDataParallel + model = MMDistributedDataParallel( + model.cuda(), + device_ids=[torch.cuda.current_device()], + broadcast_buffers=False) + ''' + model = wrap_distributed_model( + model, + device=cfg.device, + device_ids=[int(os.environ['LOCAL_RANK'])], + broadcast_buffers=False) + ''' + outputs = multi_gpu_test(model, data_loader, args.tmpdir, + args.gpu_collect) + + rank, _ = get_dist_info() + if rank == 0: + results = {} + logger = get_root_logger() + if args.metrics: + eval_results = dataset.evaluate( + results=outputs, + metric=args.metrics, + metric_options=args.metric_options, + logger=logger) + results.update(eval_results) + for k, v in eval_results.items(): + if isinstance(v, np.ndarray): + v = [round(out, 2) for out in v.tolist()] + elif isinstance(v, Number): + v = round(v, 2) + else: + raise ValueError(f'Unsupport metric type: {type(v)}') + print(f'\n{k} : {v}') + if args.out: + if 'none' not in args.out_items: + scores = np.vstack(outputs) + pred_score = np.max(scores, axis=1) + pred_label = np.argmax(scores, axis=1) + pred_class = [CLASSES[lb] for lb in pred_label] + res_items = { + 'class_scores': scores, + 'pred_score': pred_score, + 'pred_label': pred_label, + 'pred_class': pred_class + } + if 'all' in args.out_items: + results.update(res_items) + else: + for key in args.out_items: + results[key] = res_items[key] + print(f'\ndumping results to {args.out}') + mmcv.dump(results, args.out) + + +if __name__ == '__main__': + main() diff --git a/openmmlab_test/mmclassification-0.24.1/tools/train.py b/openmmlab_test/mmclassification-0.24.1/tools/train.py new file mode 100644 index 00000000..d14c4e89 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/tools/train.py @@ -0,0 +1,215 @@ +# Copyright (c) OpenMMLab. All rights reserved. +import argparse +import copy +import os +import os.path as osp +import time +import warnings + +import mmcv +import torch +import torch.distributed as dist +from mmcv import Config, DictAction +from mmcv.runner import get_dist_info, init_dist + +from mmcls import __version__ +from mmcls.apis import init_random_seed, set_random_seed, train_model +from mmcls.datasets import build_dataset +from mmcls.models import build_classifier +from mmcls.utils import (auto_select_device, collect_env, get_root_logger, + setup_multi_processes) + + +def parse_args(): + parser = argparse.ArgumentParser(description='Train a model') + parser.add_argument('config', help='train config file path') + parser.add_argument('--work-dir', help='the dir to save logs and models') + parser.add_argument( + '--resume-from', help='the checkpoint file to resume from') + parser.add_argument( + '--no-validate', + action='store_true', + help='whether not to evaluate the checkpoint during training') + group_gpus = parser.add_mutually_exclusive_group() + group_gpus.add_argument( + '--device', help='device used for training. (Deprecated)') + group_gpus.add_argument( + '--gpus', + type=int, + help='(Deprecated, please use --gpu-id) number of gpus to use ' + '(only applicable to non-distributed training)') + group_gpus.add_argument( + '--gpu-ids', + type=int, + nargs='+', + help='(Deprecated, please use --gpu-id) ids of gpus to use ' + '(only applicable to non-distributed training)') + group_gpus.add_argument( + '--gpu-id', + type=int, + default=0, + help='id of gpu to use ' + '(only applicable to non-distributed training)') + parser.add_argument( + '--ipu-replicas', + type=int, + default=None, + help='num of ipu replicas to use') + parser.add_argument('--seed', type=int, default=None, help='random seed') + parser.add_argument( + '--diff-seed', + action='store_true', + help='Whether or not set different seeds for different ranks') + parser.add_argument( + '--deterministic', + action='store_true', + help='whether to set deterministic options for CUDNN backend.') + parser.add_argument( + '--cfg-options', + nargs='+', + action=DictAction, + help='override some settings in the used config, the key-value pair ' + 'in xxx=yyy format will be merged into config file. If the value to ' + 'be overwritten is a list, it should be like key="[a,b]" or key=a,b ' + 'It also allows nested list/tuple values, e.g. key="[(a,b),(c,d)]" ' + 'Note that the quotation marks are necessary and that no white space ' + 'is allowed.') + parser.add_argument( + '--launcher', + choices=['none', 'pytorch', 'slurm', 'mpi'], + default='none', + help='job launcher') + parser.add_argument( + '--world_size', + type=int, + default='128', + help='world_size') + parser.add_argument( + '--rank', + type=int, + default='128', + help='rank') + parser.add_argument('--local_rank', type=int, default=0) + args = parser.parse_args() + if 'LOCAL_RANK' not in os.environ: + os.environ['LOCAL_RANK'] = str(args.local_rank) + + return args + + +def main(): + args = parse_args() + + cfg = Config.fromfile(args.config) + if args.cfg_options is not None: + cfg.merge_from_dict(args.cfg_options) + + # set multi-process settings + setup_multi_processes(cfg) + + # set cudnn_benchmark + if cfg.get('cudnn_benchmark', False): + torch.backends.cudnn.benchmark = True + + # work_dir is determined in this priority: CLI > segment in file > filename + if args.work_dir is not None: + # update configs according to CLI args if args.work_dir is not None + cfg.work_dir = args.work_dir + elif cfg.get('work_dir', None) is None: + # use config filename as default work_dir if cfg.work_dir is None + cfg.work_dir = osp.join('./work_dirs', + osp.splitext(osp.basename(args.config))[0]) + if args.resume_from is not None: + cfg.resume_from = args.resume_from + if args.gpus is not None: + cfg.gpu_ids = range(1) + warnings.warn('`--gpus` is deprecated because we only support ' + 'single GPU mode in non-distributed training. ' + 'Use `gpus=1` now.') + if args.gpu_ids is not None: + cfg.gpu_ids = args.gpu_ids[0:1] + warnings.warn('`--gpu-ids` is deprecated, please use `--gpu-id`. ' + 'Because we only support single GPU mode in ' + 'non-distributed training. Use the first GPU ' + 'in `gpu_ids` now.') + if args.gpus is None and args.gpu_ids is None: + cfg.gpu_ids = [args.gpu_id] + + if args.ipu_replicas is not None: + cfg.ipu_replicas = args.ipu_replicas + args.device = 'ipu' + + # init distributed env first, since logger depends on the dist info. + if args.launcher == 'none': + distributed = False + else: + distributed = True + init_dist(args.launcher, **cfg.dist_params) + _, world_size = get_dist_info() + cfg.gpu_ids = range(world_size) + + # create work_dir + mmcv.mkdir_or_exist(osp.abspath(cfg.work_dir)) + # dump config + cfg.dump(osp.join(cfg.work_dir, osp.basename(args.config))) + # init the logger before other steps + timestamp = time.strftime('%Y%m%d_%H%M%S', time.localtime()) + log_file = osp.join(cfg.work_dir, f'{timestamp}.log') + logger = get_root_logger(log_file=log_file, log_level=cfg.log_level) + + # init the meta dict to record some important information such as + # environment info and seed, which will be logged + meta = dict() + # log env info + env_info_dict = collect_env() + env_info = '\n'.join([(f'{k}: {v}') for k, v in env_info_dict.items()]) + dash_line = '-' * 60 + '\n' + logger.info('Environment info:\n' + dash_line + env_info + '\n' + + dash_line) + meta['env_info'] = env_info + + # log some basic info + logger.info(f'Distributed training: {distributed}') + logger.info(f'Config:\n{cfg.pretty_text}') + + # set random seeds + cfg.device = args.device or auto_select_device() + seed = init_random_seed(args.seed, device=cfg.device) + seed = seed + dist.get_rank() if args.diff_seed else seed + logger.info(f'Set random seed to {seed}, ' + f'deterministic: {args.deterministic}') + set_random_seed(seed, deterministic=args.deterministic) + cfg.seed = seed + meta['seed'] = seed + + model = build_classifier(cfg.model) + model.init_weights() + + datasets = [build_dataset(cfg.data.train)] + if len(cfg.workflow) == 2: + val_dataset = copy.deepcopy(cfg.data.val) + val_dataset.pipeline = cfg.data.train.pipeline + datasets.append(build_dataset(val_dataset)) + + # save mmcls version, config file content and class names in + # runner as meta data + meta.update( + dict( + mmcls_version=__version__, + config=cfg.pretty_text, + CLASSES=datasets[0].CLASSES)) + + # add an attribute for visualization convenience + train_model( + model, + datasets, + cfg, + distributed=distributed, + validate=(not args.no_validate), + timestamp=timestamp, + device=cfg.device, + meta=meta) + + +if __name__ == '__main__': + main() diff --git a/openmmlab_test/mmclassification-0.24.1/tools/visualizations/vis_cam.py b/openmmlab_test/mmclassification-0.24.1/tools/visualizations/vis_cam.py new file mode 100644 index 00000000..a1fcadac --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/tools/visualizations/vis_cam.py @@ -0,0 +1,356 @@ +# Copyright (c) OpenMMLab. All rights reserved. +import argparse +import copy +import math +import pkg_resources +import re +from pathlib import Path + +import mmcv +import numpy as np +from mmcv import Config, DictAction +from mmcv.utils import to_2tuple +from torch.nn import BatchNorm1d, BatchNorm2d, GroupNorm, LayerNorm + +from mmcls import digit_version +from mmcls.apis import init_model +from mmcls.datasets.pipelines import Compose + +try: + from pytorch_grad_cam import (EigenCAM, EigenGradCAM, GradCAM, + GradCAMPlusPlus, LayerCAM, XGradCAM) + from pytorch_grad_cam.activations_and_gradients import \ + ActivationsAndGradients + from pytorch_grad_cam.utils.image import show_cam_on_image +except ImportError: + raise ImportError('Please run `pip install "grad-cam>=1.3.6"` to install ' + '3rd party package pytorch_grad_cam.') + +# set of transforms, which just change data format, not change the pictures +FORMAT_TRANSFORMS_SET = {'ToTensor', 'Normalize', 'ImageToTensor', 'Collect'} + +# Supported grad-cam type map +METHOD_MAP = { + 'gradcam': GradCAM, + 'gradcam++': GradCAMPlusPlus, + 'xgradcam': XGradCAM, + 'eigencam': EigenCAM, + 'eigengradcam': EigenGradCAM, + 'layercam': LayerCAM, +} + + +def parse_args(): + parser = argparse.ArgumentParser(description='Visualize CAM') + parser.add_argument('img', help='Image file') + parser.add_argument('config', help='Config file') + parser.add_argument('checkpoint', help='Checkpoint file') + parser.add_argument( + '--target-layers', + default=[], + nargs='+', + type=str, + help='The target layers to get CAM, if not set, the tool will ' + 'specify the norm layer in the last block. Backbones ' + 'implemented by users are recommended to manually specify' + ' target layers in commmad statement.') + parser.add_argument( + '--preview-model', + default=False, + action='store_true', + help='To preview all the model layers') + parser.add_argument( + '--method', + default='GradCAM', + help='Type of method to use, supports ' + f'{", ".join(list(METHOD_MAP.keys()))}.') + parser.add_argument( + '--target-category', + default=[], + nargs='+', + type=int, + help='The target category to get CAM, default to use result ' + 'get from given model.') + parser.add_argument( + '--eigen-smooth', + default=False, + action='store_true', + help='Reduce noise by taking the first principle componenet of ' + '``cam_weights*activations``') + parser.add_argument( + '--aug-smooth', + default=False, + action='store_true', + help='Wether to use test time augmentation, default not to use') + parser.add_argument( + '--save-path', + type=Path, + help='The path to save visualize cam image, default not to save.') + parser.add_argument('--device', default='cpu', help='Device to use cpu') + parser.add_argument( + '--vit-like', + action='store_true', + help='Whether the network is a ViT-like network.') + parser.add_argument( + '--num-extra-tokens', + type=int, + help='The number of extra tokens in ViT-like backbones. Defaults to' + ' use num_extra_tokens of the backbone.') + parser.add_argument( + '--cfg-options', + nargs='+', + action=DictAction, + help='override some settings in the used config, the key-value pair ' + 'in xxx=yyy format will be merged into config file. If the value to ' + 'be overwritten is a list, it should be like key="[a,b]" or key=a,b ' + 'It also allows nested list/tuple values, e.g. key="[(a,b),(c,d)]" ' + 'Note that the quotation marks are necessary and that no white space ' + 'is allowed.') + args = parser.parse_args() + if args.method.lower() not in METHOD_MAP.keys(): + raise ValueError(f'invalid CAM type {args.method},' + f' supports {", ".join(list(METHOD_MAP.keys()))}.') + + return args + + +def build_reshape_transform(model, args): + """Build reshape_transform for `cam.activations_and_grads`, which is + necessary for ViT-like networks.""" + # ViT_based_Transformers have an additional clstoken in features + if not args.vit_like: + + def check_shape(tensor): + assert len(tensor.size()) != 3, \ + (f"The input feature's shape is {tensor.size()}, and it seems " + 'to have been flattened or from a vit-like network. ' + "Please use `--vit-like` if it's from a vit-like network.") + return tensor + + return check_shape + + if args.num_extra_tokens is not None: + num_extra_tokens = args.num_extra_tokens + elif hasattr(model.backbone, 'num_extra_tokens'): + num_extra_tokens = model.backbone.num_extra_tokens + else: + num_extra_tokens = 1 + + def _reshape_transform(tensor): + """reshape_transform helper.""" + assert len(tensor.size()) == 3, \ + (f"The input feature's shape is {tensor.size()}, " + 'and the feature seems not from a vit-like network?') + tensor = tensor[:, num_extra_tokens:, :] + # get heat_map_height and heat_map_width, preset input is a square + heat_map_area = tensor.size()[1] + height, width = to_2tuple(int(math.sqrt(heat_map_area))) + assert height * height == heat_map_area, \ + (f"The input feature's length ({heat_map_area+num_extra_tokens}) " + f'minus num-extra-tokens ({num_extra_tokens}) is {heat_map_area},' + ' which is not a perfect square number. Please check if you used ' + 'a wrong num-extra-tokens.') + result = tensor.reshape(tensor.size(0), height, width, tensor.size(2)) + + # Bring the channels to the first dimension, like in CNNs. + result = result.transpose(2, 3).transpose(1, 2) + return result + + return _reshape_transform + + +def apply_transforms(img_path, pipeline_cfg): + """Apply transforms pipeline and get both formatted data and the image + without formatting.""" + data = dict(img_info=dict(filename=img_path), img_prefix=None) + + def split_pipeline_cfg(pipeline_cfg): + """to split the transfoms into image_transforms and + format_transforms.""" + image_transforms_cfg, format_transforms_cfg = [], [] + if pipeline_cfg[0]['type'] != 'LoadImageFromFile': + pipeline_cfg.insert(0, dict(type='LoadImageFromFile')) + for transform in pipeline_cfg: + if transform['type'] in FORMAT_TRANSFORMS_SET: + format_transforms_cfg.append(transform) + else: + image_transforms_cfg.append(transform) + return image_transforms_cfg, format_transforms_cfg + + image_transforms, format_transforms = split_pipeline_cfg(pipeline_cfg) + image_transforms = Compose(image_transforms) + format_transforms = Compose(format_transforms) + + intermediate_data = image_transforms(data) + inference_img = copy.deepcopy(intermediate_data['img']) + format_data = format_transforms(intermediate_data) + + return format_data, inference_img + + +class MMActivationsAndGradients(ActivationsAndGradients): + """Activations and gradients manager for mmcls models.""" + + def __call__(self, x): + self.gradients = [] + self.activations = [] + return self.model( + x, return_loss=False, softmax=False, post_process=False) + + +def init_cam(method, model, target_layers, use_cuda, reshape_transform): + """Construct the CAM object once, In order to be compatible with mmcls, + here we modify the ActivationsAndGradients object.""" + + GradCAM_Class = METHOD_MAP[method.lower()] + cam = GradCAM_Class( + model=model, target_layers=target_layers, use_cuda=use_cuda) + # Release the original hooks in ActivationsAndGradients to use + # MMActivationsAndGradients. + cam.activations_and_grads.release() + cam.activations_and_grads = MMActivationsAndGradients( + cam.model, cam.target_layers, reshape_transform) + + return cam + + +def get_layer(layer_str, model): + """get model layer from given str.""" + cur_layer = model + layer_names = layer_str.strip().split('.') + + def get_children_by_name(model, name): + try: + return getattr(model, name) + except AttributeError as e: + raise AttributeError( + e.args[0] + + '. Please use `--preview-model` to check keys at first.') + + def get_children_by_eval(model, name): + try: + return eval(f'model{name}', {}, {'model': model}) + except (AttributeError, IndexError) as e: + raise AttributeError( + e.args[0] + + '. Please use `--preview-model` to check keys at first.') + + for layer_name in layer_names: + match_res = re.match('(?P.+?)(?P(\\[.+\\])+)', + layer_name) + if match_res: + layer_name = match_res.groupdict()['name'] + indices = match_res.groupdict()['indices'] + cur_layer = get_children_by_name(cur_layer, layer_name) + cur_layer = get_children_by_eval(cur_layer, indices) + else: + cur_layer = get_children_by_name(cur_layer, layer_name) + + return cur_layer + + +def show_cam_grad(grayscale_cam, src_img, title, out_path=None): + """fuse src_img and grayscale_cam and show or save.""" + grayscale_cam = grayscale_cam[0, :] + src_img = np.float32(src_img) / 255 + visualization_img = show_cam_on_image( + src_img, grayscale_cam, use_rgb=False) + + if out_path: + mmcv.imwrite(visualization_img, str(out_path)) + else: + mmcv.imshow(visualization_img, win_name=title) + + +def get_default_traget_layers(model, args): + """get default target layers from given model, here choose nrom type layer + as default target layer.""" + norm_layers = [] + for m in model.backbone.modules(): + if isinstance(m, (BatchNorm2d, LayerNorm, GroupNorm, BatchNorm1d)): + norm_layers.append(m) + if len(norm_layers) == 0: + raise ValueError( + '`--target-layers` is empty. Please use `--preview-model`' + ' to check keys at first and then specify `target-layers`.') + # if the model is CNN model or Swin model, just use the last norm + # layer as the target-layer, if the model is ViT model, the final + # classification is done on the class token computed in the last + # attention block, the output will not be affected by the 14x14 + # channels in the last layer. The gradient of the output with + # respect to them, will be 0! here use the last 3rd norm layer. + # means the first norm of the last decoder block. + if args.vit_like: + if args.num_extra_tokens: + num_extra_tokens = args.num_extra_tokens + elif hasattr(model.backbone, 'num_extra_tokens'): + num_extra_tokens = model.backbone.num_extra_tokens + else: + raise AttributeError('Please set num_extra_tokens in backbone' + " or using 'num-extra-tokens'") + + # if a vit-like backbone's num_extra_tokens bigger than 0, view it + # as a VisionTransformer backbone, eg. DeiT, T2T-ViT. + if num_extra_tokens >= 1: + print('Automatically choose the last norm layer before the ' + 'final attention block as target_layer..') + return [norm_layers[-3]] + print('Automatically choose the last norm layer as target_layer.') + target_layers = [norm_layers[-1]] + return target_layers + + +def main(): + args = parse_args() + cfg = Config.fromfile(args.config) + if args.cfg_options is not None: + cfg.merge_from_dict(args.cfg_options) + + # build the model from a config file and a checkpoint file + model = init_model(cfg, args.checkpoint, device=args.device) + if args.preview_model: + print(model) + print('\n Please remove `--preview-model` to get the CAM.') + return + + # apply transform and perpare data + data, src_img = apply_transforms(args.img, cfg.data.test.pipeline) + + # build target layers + if args.target_layers: + target_layers = [ + get_layer(layer, model) for layer in args.target_layers + ] + else: + target_layers = get_default_traget_layers(model, args) + + # init a cam grad calculator + use_cuda = ('cuda' in args.device) + reshape_transform = build_reshape_transform(model, args) + cam = init_cam(args.method, model, target_layers, use_cuda, + reshape_transform) + + # warp the target_category with ClassifierOutputTarget in grad_cam>=1.3.7, + # to fix the bug in #654. + targets = None + if args.target_category: + grad_cam_v = pkg_resources.get_distribution('grad_cam').version + if digit_version(grad_cam_v) >= digit_version('1.3.7'): + from pytorch_grad_cam.utils.model_targets import \ + ClassifierOutputTarget + targets = [ClassifierOutputTarget(c) for c in args.target_category] + else: + targets = args.target_category + + # calculate cam grads and show|save the visualization image + grayscale_cam = cam( + data['img'].unsqueeze(0), + targets, + eigen_smooth=args.eigen_smooth, + aug_smooth=args.aug_smooth) + show_cam_grad( + grayscale_cam, src_img, title=args.method, out_path=args.save_path) + + +if __name__ == '__main__': + main() diff --git a/openmmlab_test/mmclassification-0.24.1/tools/visualizations/vis_lr.py b/openmmlab_test/mmclassification-0.24.1/tools/visualizations/vis_lr.py new file mode 100644 index 00000000..bd344215 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/tools/visualizations/vis_lr.py @@ -0,0 +1,334 @@ +# Copyright (c) OpenMMLab. All rights reserved. +import argparse +import os.path as osp +import re +import time +from pathlib import Path +from pprint import pformat + +import matplotlib.pyplot as plt +import mmcv +import torch.nn as nn +from mmcv import Config, DictAction, ProgressBar +from mmcv.runner import (EpochBasedRunner, IterBasedRunner, IterLoader, + build_optimizer) +from torch.utils.data import DataLoader + +from mmcls.utils import get_root_logger + + +class DummyEpochBasedRunner(EpochBasedRunner): + """Fake Epoch-based Runner. + + This runner won't train model, and it will only call hooks and return all + learning rate in each iteration. + """ + + def __init__(self, *args, **kwargs): + super().__init__(*args, **kwargs) + self.progress_bar = ProgressBar(self._max_epochs, start=False) + + def train(self, data_loader, **kwargs): + lr_list = [] + self.model.train() + self.mode = 'train' + self.data_loader = data_loader + self._max_iters = self._max_epochs * len(self.data_loader) + self.call_hook('before_train_epoch') + for i in range(len(self.data_loader)): + self._inner_iter = i + self.call_hook('before_train_iter') + lr_list.append(self.current_lr()) + self.call_hook('after_train_iter') + self._iter += 1 + + self.call_hook('after_train_epoch') + self._epoch += 1 + self.progress_bar.update(1) + return lr_list + + def run(self, data_loaders, workflow, **kwargs): + assert isinstance(data_loaders, list) + assert mmcv.is_list_of(workflow, tuple) + assert len(data_loaders) == len(workflow) + + assert self._max_epochs is not None, ( + 'max_epochs must be specified during instantiation') + + for i, flow in enumerate(workflow): + mode, epochs = flow + if mode == 'train': + self._max_iters = self._max_epochs * len(data_loaders[i]) + break + + self.logger.info('workflow: %s, max: %d epochs', workflow, + self._max_epochs) + self.call_hook('before_run') + + self.progress_bar.start() + lr_list = [] + while self.epoch < self._max_epochs: + for i, flow in enumerate(workflow): + mode, epochs = flow + if isinstance(mode, str): # self.train() + if not hasattr(self, mode): + raise ValueError( + f'runner has no method named "{mode}" to run an ' + 'epoch') + epoch_runner = getattr(self, mode) + else: + raise TypeError( + 'mode in workflow must be a str, but got {}'.format( + type(mode))) + + for _ in range(epochs): + if mode == 'train' and self.epoch >= self._max_epochs: + break + lr_list.extend(epoch_runner(data_loaders[i], **kwargs)) + + self.progress_bar.file.write('\n') + time.sleep(1) # wait for some hooks like loggers to finish + self.call_hook('after_run') + return lr_list + + +class DummyIterBasedRunner(IterBasedRunner): + """Fake Iter-based Runner. + + This runner won't train model, and it will only call hooks and return all + learning rate in each iteration. + """ + + def __init__(self, *args, **kwargs): + super().__init__(*args, **kwargs) + self.progress_bar = ProgressBar(self._max_iters, start=False) + + def train(self, data_loader, **kwargs): + lr_list = [] + self.model.train() + self.mode = 'train' + self.data_loader = data_loader + self._epoch = data_loader.epoch + next(data_loader) + self.call_hook('before_train_iter') + lr_list.append(self.current_lr()) + self.call_hook('after_train_iter') + self._inner_iter += 1 + self._iter += 1 + self.progress_bar.update(1) + return lr_list + + def run(self, data_loaders, workflow, **kwargs): + assert isinstance(data_loaders, list) + assert mmcv.is_list_of(workflow, tuple) + assert len(data_loaders) == len(workflow) + assert self._max_iters is not None, ( + 'max_iters must be specified during instantiation') + + self.logger.info('workflow: %s, max: %d iters', workflow, + self._max_iters) + self.call_hook('before_run') + + iter_loaders = [IterLoader(x) for x in data_loaders] + + self.call_hook('before_epoch') + + self.progress_bar.start() + lr_list = [] + while self.iter < self._max_iters: + for i, flow in enumerate(workflow): + self._inner_iter = 0 + mode, iters = flow + if not isinstance(mode, str) or not hasattr(self, mode): + raise ValueError( + 'runner has no method named "{}" to run a workflow'. + format(mode)) + iter_runner = getattr(self, mode) + for _ in range(iters): + if mode == 'train' and self.iter >= self._max_iters: + break + lr_list.extend(iter_runner(iter_loaders[i], **kwargs)) + + self.progress_bar.file.write('\n') + time.sleep(1) # wait for some hooks like loggers to finish + self.call_hook('after_epoch') + self.call_hook('after_run') + return lr_list + + +class SimpleModel(nn.Module): + """simple model that do nothing in train_step.""" + + def __init__(self): + super(SimpleModel, self).__init__() + self.conv = nn.Conv2d(1, 1, 1) + + def train_step(self, *args, **kwargs): + pass + + +def parse_args(): + parser = argparse.ArgumentParser( + description='Visualize a Dataset Pipeline') + parser.add_argument('config', help='config file path') + parser.add_argument( + '--dataset-size', + type=int, + help='The size of the dataset. If specify, `build_dataset` will ' + 'be skipped and use this size as the dataset size.') + parser.add_argument( + '--ngpus', + type=int, + default=1, + help='The number of GPUs used in training.') + parser.add_argument('--title', type=str, help='title of figure') + parser.add_argument( + '--style', type=str, default='whitegrid', help='style of plt') + parser.add_argument( + '--save-path', + type=Path, + help='The learning rate curve plot save path') + parser.add_argument( + '--window-size', + default='12*7', + help='Size of the window to display images, in format of "$W*$H".') + parser.add_argument( + '--cfg-options', + nargs='+', + action=DictAction, + help='override some settings in the used config, the key-value pair ' + 'in xxx=yyy format will be merged into config file. If the value to ' + 'be overwritten is a list, it should be like key="[a,b]" or key=a,b ' + 'It also allows nested list/tuple values, e.g. key="[(a,b),(c,d)]" ' + 'Note that the quotation marks are necessary and that no white space ' + 'is allowed.') + args = parser.parse_args() + if args.window_size != '': + assert re.match(r'\d+\*\d+', args.window_size), \ + "'window-size' must be in format 'W*H'." + + return args + + +def plot_curve(lr_list, args, iters_per_epoch, by_epoch=True): + """Plot learning rate vs iter graph.""" + try: + import seaborn as sns + sns.set_style(args.style) + except ImportError: + print("Attention: The plot style won't be applied because 'seaborn' " + 'package is not installed, please install it if you want better ' + 'show style.') + wind_w, wind_h = args.window_size.split('*') + wind_w, wind_h = int(wind_w), int(wind_h) + plt.figure(figsize=(wind_w, wind_h)) + # if legend is None, use {filename}_{key} as legend + + ax: plt.Axes = plt.subplot() + + ax.plot(lr_list, linewidth=1) + if by_epoch: + ax.xaxis.tick_top() + ax.set_xlabel('Iters') + ax.xaxis.set_label_position('top') + sec_ax = ax.secondary_xaxis( + 'bottom', + functions=(lambda x: x / iters_per_epoch, + lambda y: y * iters_per_epoch)) + sec_ax.set_xlabel('Epochs') + # ticks = range(0, len(lr_list), iters_per_epoch) + # plt.xticks(ticks=ticks, labels=range(len(ticks))) + else: + plt.xlabel('Iters') + plt.ylabel('Learning Rate') + + if args.title is None: + plt.title(f'{osp.basename(args.config)} Learning Rate curve') + else: + plt.title(args.title) + + if args.save_path: + plt.savefig(args.save_path) + print(f'The learning rate graph is saved at {args.save_path}') + plt.show() + + +def simulate_train(data_loader, cfg, by_epoch=True): + # build logger, data_loader, model and optimizer + logger = get_root_logger() + data_loaders = [data_loader] + model = SimpleModel() + optimizer = build_optimizer(model, cfg.optimizer) + + # build runner + if by_epoch: + runner = DummyEpochBasedRunner( + max_epochs=cfg.runner.max_epochs, + model=model, + optimizer=optimizer, + logger=logger) + else: + runner = DummyIterBasedRunner( + max_iters=cfg.runner.max_iters, + model=model, + optimizer=optimizer, + logger=logger) + + # register hooks + runner.register_training_hooks( + lr_config=cfg.lr_config, + custom_hooks_config=cfg.get('custom_hooks', None), + ) + + # only use the first train workflow + workflow = cfg.workflow[:1] + assert workflow[0][0] == 'train' + return runner.run(data_loaders, cfg.workflow) + + +def main(): + args = parse_args() + cfg = Config.fromfile(args.config) + if args.cfg_options is not None: + cfg.merge_from_dict(args.cfg_options) + + # make sure save_root exists + if args.save_path and not args.save_path.parent.exists(): + raise Exception(f'The save path is {args.save_path}, and directory ' + f"'{args.save_path.parent}' do not exist.") + + # init logger + logger = get_root_logger(log_level=cfg.log_level) + logger.info('Lr config : \n\n' + pformat(cfg.lr_config, sort_dicts=False) + + '\n') + + by_epoch = True if cfg.runner.type == 'EpochBasedRunner' else False + + # prepare data loader + batch_size = cfg.data.samples_per_gpu * args.ngpus + + if args.dataset_size is None and by_epoch: + from mmcls.datasets.builder import build_dataset + dataset_size = len(build_dataset(cfg.data.train)) + else: + dataset_size = args.dataset_size or batch_size + + fake_dataset = list(range(dataset_size)) + data_loader = DataLoader(fake_dataset, batch_size=batch_size) + dataset_info = (f'\nDataset infos:' + f'\n - Dataset size: {dataset_size}' + f'\n - Samples per GPU: {cfg.data.samples_per_gpu}' + f'\n - Number of GPUs: {args.ngpus}' + f'\n - Total batch size: {batch_size}') + if by_epoch: + dataset_info += f'\n - Iterations per epoch: {len(data_loader)}' + logger.info(dataset_info) + + # simulation training process + lr_list = simulate_train(data_loader, cfg, by_epoch) + + plot_curve(lr_list, args, len(data_loader), by_epoch) + + +if __name__ == '__main__': + main() diff --git a/openmmlab_test/mmclassification-0.24.1/tools/visualizations/vis_pipeline.py b/openmmlab_test/mmclassification-0.24.1/tools/visualizations/vis_pipeline.py new file mode 100644 index 00000000..ffb9b183 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/tools/visualizations/vis_pipeline.py @@ -0,0 +1,337 @@ +# Copyright (c) OpenMMLab. All rights reserved. +import argparse +import copy +import itertools +import os +import re +import sys +import warnings +from pathlib import Path +from typing import List + +import cv2 +import mmcv +import numpy as np +from mmcv import Config, DictAction, ProgressBar + +from mmcls.core import visualization as vis +from mmcls.datasets.builder import PIPELINES, build_dataset, build_from_cfg +from mmcls.models.utils import to_2tuple + +# text style +bright_style, reset_style = '\x1b[1m', '\x1b[0m' +red_text, blue_text = '\x1b[31m', '\x1b[34m' +white_background = '\x1b[107m' + + +def parse_args(): + parser = argparse.ArgumentParser( + description='Visualize a Dataset Pipeline') + parser.add_argument('config', help='config file path') + parser.add_argument( + '--skip-type', + type=str, + nargs='*', + default=['ToTensor', 'Normalize', 'ImageToTensor', 'Collect'], + help='the pipelines to skip when visualizing') + parser.add_argument( + '--output-dir', + default='', + type=str, + help='folder to save output pictures, if not set, do not save.') + parser.add_argument( + '--phase', + default='train', + type=str, + choices=['train', 'test', 'val'], + help='phase of dataset to visualize, accept "train" "test" and "val".' + ' Default train.') + parser.add_argument( + '--number', + type=int, + default=sys.maxsize, + help='number of images selected to visualize, must bigger than 0. if ' + 'the number is bigger than length of dataset, show all the images in ' + 'dataset; default "sys.maxsize", show all images in dataset') + parser.add_argument( + '--mode', + default='concat', + type=str, + choices=['original', 'transformed', 'concat', 'pipeline'], + help='display mode; display original pictures or transformed pictures' + ' or comparison pictures. "original" means show images load from disk' + '; "transformed" means to show images after transformed; "concat" ' + 'means show images stitched by "original" and "output" images. ' + '"pipeline" means show all the intermediate images. Default concat.') + parser.add_argument( + '--show', + default=False, + action='store_true', + help='whether to display images in pop-up window. Default False.') + parser.add_argument( + '--adaptive', + default=False, + action='store_true', + help='whether to automatically adjust the visualization image size') + parser.add_argument( + '--min-edge-length', + default=200, + type=int, + help='the min edge length when visualizing images, used when ' + '"--adaptive" is true. Default 200.') + parser.add_argument( + '--max-edge-length', + default=800, + type=int, + help='the max edge length when visualizing images, used when ' + '"--adaptive" is true. Default 1000.') + parser.add_argument( + '--bgr2rgb', + default=False, + action='store_true', + help='flip the color channel order of images') + parser.add_argument( + '--window-size', + default='12*7', + help='size of the window to display images, in format of "$W*$H".') + parser.add_argument( + '--cfg-options', + nargs='+', + action=DictAction, + help='override some settings in the used config, the key-value pair ' + 'in xxx=yyy format will be merged into config file. If the value to ' + 'be overwritten is a list, it should be like key="[a,b]" or key=a,b ' + 'It also allows nested list/tuple values, e.g. key="[(a,b),(c,d)]" ' + 'Note that the quotation marks are necessary and that no white space ' + 'is allowed.') + parser.add_argument( + '--show-options', + nargs='+', + action=DictAction, + help='custom options for display. key-value pair in xxx=yyy. options ' + 'in `mmcls.core.visualization.ImshowInfosContextManager.put_img_infos`' + ) + args = parser.parse_args() + + assert args.number > 0, "'args.number' must be larger than zero." + if args.window_size != '': + assert re.match(r'\d+\*\d+', args.window_size), \ + "'window-size' must be in format 'W*H'." + if args.output_dir == '' and not args.show: + raise ValueError("if '--output-dir' and '--show' are not set, " + 'nothing will happen when the program running.') + + if args.show_options is None: + args.show_options = {} + return args + + +def retrieve_data_cfg(config_path, skip_type, cfg_options, phase): + cfg = Config.fromfile(config_path) + if cfg_options is not None: + cfg.merge_from_dict(cfg_options) + data_cfg = cfg.data[phase] + while 'dataset' in data_cfg: + data_cfg = data_cfg['dataset'] + data_cfg['pipeline'] = [ + x for x in data_cfg.pipeline if x['type'] not in skip_type + ] + + return cfg + + +def build_dataset_pipelines(cfg, phase): + """build dataset and pipeline from config. + + Separate the pipeline except 'LoadImageFromFile' step if + 'LoadImageFromFile' in the pipeline. + """ + data_cfg = cfg.data[phase] + loadimage_pipeline = [] + if len(data_cfg.pipeline + ) != 0 and data_cfg.pipeline[0]['type'] == 'LoadImageFromFile': + loadimage_pipeline.append(data_cfg.pipeline.pop(0)) + origin_pipeline = data_cfg.pipeline + data_cfg.pipeline = loadimage_pipeline + dataset = build_dataset(data_cfg) + pipelines = { + pipeline_cfg['type']: build_from_cfg(pipeline_cfg, PIPELINES) + for pipeline_cfg in origin_pipeline + } + + return dataset, pipelines + + +def prepare_imgs(args, imgs: List[np.ndarray], steps=None): + """prepare the showing picture.""" + ori_shapes = [img.shape for img in imgs] + # adaptive adjustment to rescale pictures + if args.adaptive: + for i, img in enumerate(imgs): + imgs[i] = adaptive_size(img, args.min_edge_length, + args.max_edge_length) + else: + # if src image is too large or too small, + # warning a "--adaptive" message. + for ori_h, ori_w, _ in ori_shapes: + if (args.min_edge_length > ori_h or args.min_edge_length > ori_w + or args.max_edge_length < ori_h + or args.max_edge_length < ori_w): + msg = red_text + msg += 'The visualization picture is too small or too large to' + msg += ' put text information on it, please add ' + msg += bright_style + red_text + white_background + msg += '"--adaptive"' + msg += reset_style + red_text + msg += ' to adaptively rescale the showing pictures' + msg += reset_style + warnings.warn(msg) + + if len(imgs) == 1: + return imgs[0] + else: + return concat_imgs(imgs, steps, ori_shapes) + + +def concat_imgs(imgs, steps, ori_shapes): + """Concat list of pictures into a single big picture, align height here.""" + show_shapes = [img.shape for img in imgs] + show_heights = [shape[0] for shape in show_shapes] + show_widths = [shape[1] for shape in show_shapes] + + max_height = max(show_heights) + text_height = 20 + font_size = 0.5 + pic_horizontal_gap = min(show_widths) // 10 + for i, img in enumerate(imgs): + cur_height = show_heights[i] + pad_height = max_height - cur_height + pad_top, pad_bottom = to_2tuple(pad_height // 2) + # handle instance that the pad_height is an odd number + if pad_height % 2 == 1: + pad_top = pad_top + 1 + pad_bottom += text_height * 3 # keep pxs to put step information text + pad_left, pad_right = to_2tuple(pic_horizontal_gap) + # make border + img = cv2.copyMakeBorder( + img, + pad_top, + pad_bottom, + pad_left, + pad_right, + cv2.BORDER_CONSTANT, + value=(255, 255, 255)) + # put transform phase information in the bottom + imgs[i] = cv2.putText( + img=img, + text=steps[i], + org=(pic_horizontal_gap, max_height + text_height // 2), + fontFace=cv2.FONT_HERSHEY_TRIPLEX, + fontScale=font_size, + color=(255, 0, 0), + lineType=1) + # put image size information in the bottom + imgs[i] = cv2.putText( + img=img, + text=str(ori_shapes[i]), + org=(pic_horizontal_gap, max_height + int(text_height * 1.5)), + fontFace=cv2.FONT_HERSHEY_TRIPLEX, + fontScale=font_size, + color=(255, 0, 0), + lineType=1) + + # Height alignment for concatenating + board = np.concatenate(imgs, axis=1) + return board + + +def adaptive_size(image, min_edge_length, max_edge_length, src_shape=None): + """rescale image if image is too small to put text like cifar.""" + assert min_edge_length >= 0 and max_edge_length >= 0 + assert max_edge_length >= min_edge_length + src_shape = image.shape if src_shape is None else src_shape + image_h, image_w, _ = src_shape + + if image_h < min_edge_length or image_w < min_edge_length: + image = mmcv.imrescale( + image, min(min_edge_length / image_h, min_edge_length / image_h)) + if image_h > max_edge_length or image_w > max_edge_length: + image = mmcv.imrescale( + image, max(max_edge_length / image_h, max_edge_length / image_w)) + return image + + +def get_display_img(args, item, pipelines): + """get image to display.""" + # srcs picture could be in RGB or BGR order due to different backends. + if args.bgr2rgb: + item['img'] = mmcv.bgr2rgb(item['img']) + src_image = item['img'].copy() + pipeline_images = [src_image] + + # get intermediate images through pipelines + if args.mode in ['transformed', 'concat', 'pipeline']: + for pipeline in pipelines.values(): + item = pipeline(item) + trans_image = copy.deepcopy(item['img']) + trans_image = np.ascontiguousarray(trans_image, dtype=np.uint8) + pipeline_images.append(trans_image) + + # concatenate images to be showed according to mode + if args.mode == 'original': + image = prepare_imgs(args, [src_image], ['src']) + elif args.mode == 'transformed': + image = prepare_imgs(args, [pipeline_images[-1]], ['transformed']) + elif args.mode == 'concat': + steps = ['src', 'transformed'] + image = prepare_imgs(args, [pipeline_images[0], pipeline_images[-1]], + steps) + elif args.mode == 'pipeline': + steps = ['src'] + list(pipelines.keys()) + image = prepare_imgs(args, pipeline_images, steps) + + return image + + +def main(): + args = parse_args() + wind_w, wind_h = args.window_size.split('*') + wind_w, wind_h = int(wind_w), int(wind_h) # showing windows size + cfg = retrieve_data_cfg(args.config, args.skip_type, args.cfg_options, + args.phase) + + dataset, pipelines = build_dataset_pipelines(cfg, args.phase) + CLASSES = dataset.CLASSES + display_number = min(args.number, len(dataset)) + progressBar = ProgressBar(display_number) + + with vis.ImshowInfosContextManager(fig_size=(wind_w, wind_h)) as manager: + for i, item in enumerate(itertools.islice(dataset, display_number)): + image = get_display_img(args, item, pipelines) + + # dist_path is None as default, means not saving pictures + dist_path = None + if args.output_dir: + # some datasets don't have filenames, such as cifar + src_path = item.get('filename', '{}.jpg'.format(i)) + dist_path = os.path.join(args.output_dir, Path(src_path).name) + + infos = dict(label=CLASSES[item['gt_label']]) + + ret, _ = manager.put_img_infos( + image, + infos, + font_size=20, + out_file=dist_path, + show=args.show, + **args.show_options) + + progressBar.update() + + if ret == 1: + print('\nMannualy interrupted.') + break + + +if __name__ == '__main__': + main() diff --git a/openmmlab_test/mmclassification-0.24.1/train.md b/openmmlab_test/mmclassification-0.24.1/train.md new file mode 100644 index 00000000..d9e451e4 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/train.md @@ -0,0 +1,101 @@ +# MMClassification算例测试 + +## 测试前准备 + +### 数据集准备 + +使用ImageNet-pytorch数据集。 + +### 环境部署 + +```python +yum install python3 +yum install libquadmath +yum install numactl +yum install openmpi3 +yum install glog +yum install lmdb-libs +yum install opencv-core +yum install opencv +yum install openblas-serial +pip3 install --upgrade pip +pip3 install opencv-python +``` + +### 安装python依赖包 + +```python +pip3 install torch-1.10.0a0+git2040069.dtk2210-cp37-cp37m-manylinux2014_x86_64.whl -i https://pypi.tuna.tsinghua.edu.cn/simple +pip3 install torchvision-0.10.0a0+e04d001.dtk2210-cp37-cp37m-manylinux2014_x86_64.whl -i https://pypi.tuna.tsinghua.edu.cn/simple +pip3 install mmcv_full-1.6.1+gitdebbc80.dtk2210-cp37-cp37m-manylinux2014_x86_64.whl -i https://pypi.tuna.tsinghua.edu.cn/simple +mmcls 安装: +cd mmclassification-0.24.1 +pip3 install -e . +``` + +注:测试不同版本的dtk,需安装对应版本的库whl包 + +## ResNet18测试 +### 单精度测试 + +### 单卡测试(单精度) + +```python +./sing_test.sh configs/resnet/resnet18_b32x8_imagenet.py +``` +#### 参数说明 + +configs/_base_/datasets/imagenet_bs32.py 中batch_size=samples_per_gpu*卡数,性能计算方法:batch_size/time + +#### 性能关注:time + +### 多卡测试(单精度) +#### 单机多卡训练 + +1.pytorch单机多卡训练 + +```python +./tools/dist_train.sh configs/resnet/resnet18_b32x8_imagenet.py +``` +2.mpirun单机多卡训练 +mpirun --allow-run-as-root --bind-to none -np 4 single_process.sh a03r3n15 +a03r3n15为master节点ip + +#### 多机多卡训练 + +1.pytorch多机多卡训练 +在第一台机器上: +NODES=2 NODE_RANK=0 PORT=12345 MASTER_ADDR=10.1.3.56 sh tools/dist_train.sh configs/resnet/resnet18_b32x8_imagenet.py 4 +在第二台机器上: +NODES=2 NODE_RANK=1 PORT=12345 MASTER_ADDR=10.1.3.56 sh tools/dist_train.sh configs/resnet/resnet18_b32x8_imagenet.py 4 + +2.mpirun多机多卡训练 +mpirun --allow-run-as-root --hostfile hostfile --bind-to none -np 4 single_process.sh a03r3n15 +a03r3n15为master节点ip + +hostfile 文件 + +a03r3n15 slots=4 + +e10r4n04 slots=4 + +### 半精度测试 +修改configs文件,添加fp16 = dict(loss_scale=512.),单机多卡和多机多卡测试与单精度测试方法相同。 + +### 其他模型测试 + +其他模型的测试步骤和ResNet18相同,只需修改对应的config文件即可,下面列出相关模型对应的config文件列表: + +| 模型 | configs | +| ------------- | ------------------------------------------------------------ | +| ResNet34 | configs/resnet/resnet34_b32x8_imagenet.py | +| ResNet50 | configs/resnet/resnet50_b32x8_imagenet.py | +| ResNet152 | configs/resnet/resnet152_b32x8_imagenet.py | +| Vgg11 | configs/vgg/vgg11_b32x8_imagenet.py | +| Vgg16 | configs/vgg/vgg16_b32x8_imagenet.py | +| SeresNet50 | configs/seresnet/seresnet50_b32x8_imagenet.py | +| ResNext50 | configs/resnext/resnext50_32x4d_b32x8_imagenet.py | +| MobileNet-v2 | configs/mobilenet_v2/mobilenet_v2_b32x8_imagenet.py | +| ShuffleNet-v1 | configs/shufflenet_v1/shufflenet_v1_1x_b64x16_linearlr_bn_nowd_imagenet.py | +| ShuffleNet-v2 | configs/shufflenet_v2/shufflenet_v2_1x_b64x16_linearlr_bn_nowd_imagenet.py | + diff --git a/openmmlab_test/mmclassification-speed-benchmark/.github/CONTRIBUTING.md b/openmmlab_test/mmclassification-speed-benchmark/.github/CONTRIBUTING.md deleted file mode 100644 index 6f8399b8..00000000 --- a/openmmlab_test/mmclassification-speed-benchmark/.github/CONTRIBUTING.md +++ /dev/null @@ -1,69 +0,0 @@ -# Contributing to OpenMMLab - -All kinds of contributions are welcome, including but not limited to the following. - -- Fixes (typo, bugs) -- New features and components - -## Workflow - -1. fork and pull the latest OpenMMLab repository (mmclassification) -3. checkout a new branch (do not use master branch for PRs) -4. commit your changes -5. create a PR - -Note: If you plan to add some new features that involve large changes, it is encouraged to open an issue for discussion first. - -## Code style - -### Python - -We adopt [PEP8](https://www.python.org/dev/peps/pep-0008/) as the preferred code style. - -We use the following tools for linting and formatting: - -- [flake8](http://flake8.pycqa.org/en/latest/): A wrapper around some linter tools. -- [yapf](https://github.com/google/yapf): A formatter for Python files. -- [isort](https://github.com/timothycrosley/isort): A Python utility to sort imports. -- [markdownlint](https://github.com/markdownlint/markdownlint): A linter to check markdown files and flag style issues. -- [docformatter](https://github.com/myint/docformatter): A formatter to format docstring. - -Style configurations of yapf and isort can be found in [setup.cfg](./setup.cfg). - -We use [pre-commit hook](https://pre-commit.com/) that checks and formats for `flake8`, `yapf`, `isort`, `trailing whitespaces`, `markdown files`, -fixes `end-of-files`, `double-quoted-strings`, `python-encoding-pragma`, `mixed-line-ending`, sorts `requirments.txt` automatically on every commit. -The config for a pre-commit hook is stored in [.pre-commit-config](./.pre-commit-config.yaml). - -After you clone the repository, you will need to install initialize pre-commit hook. - -```shell -pip install -U pre-commit -``` - -From the repository folder - -```shell -pre-commit install -``` - -Try the following steps to install ruby when you encounter an issue on installing markdownlint - -```shell -# install rvm -curl -L https://get.rvm.io | bash -s -- --autolibs=read-fail -[[ -s "$HOME/.rvm/scripts/rvm" ]] && source "$HOME/.rvm/scripts/rvm" -rvm autolibs disable - -# install ruby -rvm install 2.7.1 -``` - -Or refer to [this repo](https://github.com/innerlee/setup) and take [`zzruby.sh`](https://github.com/innerlee/setup/blob/master/zzruby.sh) according its instruction. - -After this on every commit check code linters and formatter will be enforced. - ->Before you create a PR, make sure that your code lints and is formatted by yapf. - -### C++ and CUDA - -We follow the [Google C++ Style Guide](https://google.github.io/styleguide/cppguide.html). diff --git a/openmmlab_test/mmclassification-speed-benchmark/.github/workflows/build.yml b/openmmlab_test/mmclassification-speed-benchmark/.github/workflows/build.yml deleted file mode 100644 index 2f70db08..00000000 --- a/openmmlab_test/mmclassification-speed-benchmark/.github/workflows/build.yml +++ /dev/null @@ -1,98 +0,0 @@ -# This workflow will install Python dependencies, run tests and lint with a variety of Python versions -# For more information see: https://help.github.com/actions/language-and-framework-guides/using-python-with-github-actions - -name: build - -on: [push, pull_request] - -jobs: - lint: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v2 - - name: Set up Python 3.7 - uses: actions/setup-python@v1 - with: - python-version: 3.7 - - name: Install pre-commit hook - run: | - pip install pre-commit - pre-commit install - - name: Linting - run: pre-commit run --all-files - - build: - runs-on: ubuntu-latest - env: - UBUNTU_VERSION: ubuntu1804 - strategy: - matrix: - python-version: [3.7] - torch: [1.3.0, 1.5.0, 1.6.0, 1.7.0, 1.8.0] - include: - - torch: 1.3.0 - torchvision: 0.4.2 - - torch: 1.5.0 - torchvision: 0.6.0 - - torch: 1.6.0 - torchvision: 0.7.0 - - torch: 1.6.0 - torchvision: 0.7.0 - python-version: 3.6 - - torch: 1.6.0 - torchvision: 0.7.0 - python-version: 3.8 - - torch: 1.7.0 - torchvision: 0.8.1 - - torch: 1.7.0 - torchvision: 0.8.1 - python-version: 3.6 - - torch: 1.7.0 - torchvision: 0.8.1 - python-version: 3.8 - - torch: 1.8.0 - torchvision: 0.9.0 - - torch: 1.8.0 - torchvision: 0.9.0 - python-version: 3.6 - - torch: 1.8.0 - torchvision: 0.9.0 - python-version: 3.8 - - steps: - - uses: actions/checkout@v2 - - name: Set up Python ${{ matrix.python-version }} - uses: actions/setup-python@v2 - with: - python-version: ${{ matrix.python-version }} - - name: Install Pillow - run: pip install Pillow==6.2.2 - if: ${{matrix.torchvision < 0.5}} - - name: Install PyTorch - run: pip install --use-deprecated=legacy-resolver torch==${{matrix.torch}}+cpu torchvision==${{matrix.torchvision}}+cpu -f https://download.pytorch.org/whl/torch_stable.html - - name: Install MMCV - run: | - pip install --use-deprecated=legacy-resolver mmcv-full -f https://download.openmmlab.com/mmcv/dist/cpu/torch${{matrix.torch}}/index.html - python -c 'import mmcv; print(mmcv.__version__)' - - name: Install mmcls dependencies - run: | - pip install -r requirements.txt - - name: Build and install - run: | - rm -rf .eggs - pip install -e . -U - - name: Run unittests and generate coverage report - run: | - coverage run --branch --source mmcls -m pytest tests/ - coverage xml - coverage report -m --omit="mmcls/utils/*","mmcls/apis/*" - # Only upload coverage report for python3.7 && pytorch1.5 - - name: Upload coverage to Codecov - if: ${{matrix.torch == '1.5.0' && matrix.python-version == '3.7'}} - uses: codecov/codecov-action@v1.0.10 - with: - file: ./coverage.xml - flags: unittests - env_vars: OS,PYTHON - name: codecov-umbrella - fail_ci_if_error: false diff --git a/openmmlab_test/mmclassification-speed-benchmark/.github/workflows/deploy.yml b/openmmlab_test/mmclassification-speed-benchmark/.github/workflows/deploy.yml deleted file mode 100644 index 08936cb2..00000000 --- a/openmmlab_test/mmclassification-speed-benchmark/.github/workflows/deploy.yml +++ /dev/null @@ -1,22 +0,0 @@ -name: deploy - -on: push - -jobs: - build-n-publish: - runs-on: ubuntu-latest - if: startsWith(github.event.ref, 'refs/tags') - steps: - - uses: actions/checkout@v2 - - name: Set up Python 3.7 - uses: actions/setup-python@v2 - with: - python-version: 3.7 - - name: Build MMClassification - run: | - pip install wheel - python setup.py sdist bdist_wheel - - name: Publish distribution to PyPI - run: | - pip install twine - twine upload dist/* -u __token__ -p ${{ secrets.pypi_password }} diff --git a/openmmlab_test/mmclassification-speed-benchmark/.gitignore b/openmmlab_test/mmclassification-speed-benchmark/.gitignore deleted file mode 100644 index fb6da360..00000000 --- a/openmmlab_test/mmclassification-speed-benchmark/.gitignore +++ /dev/null @@ -1,117 +0,0 @@ -# Byte-compiled / optimized / DLL files -__pycache__/ -*.py[cod] -*$py.class -**/*.pyc - -# C extensions -*.so - -# Distribution / packaging -.Python -build/ -develop-eggs/ -dist/ -downloads/ -eggs/ -.eggs/ -lib/ -lib64/ -parts/ -sdist/ -var/ -wheels/ -*.egg-info/ -.installed.cfg -*.egg -MANIFEST - -# PyInstaller -# Usually these files are written by a python script from a template -# before PyInstaller builds the exe, so as to inject date/other infos into it. -*.manifest -*.spec - -# Installer logs -pip-log.txt -pip-delete-this-directory.txt - -# Unit test / coverage reports -htmlcov/ -.tox/ -.coverage -.coverage.* -.cache -nosetests.xml -coverage.xml -*.cover -.hypothesis/ -.pytest_cache/ - -# Translations -*.mo -*.pot - -# Django stuff: -*.log -local_settings.py -db.sqlite3 - -# Flask stuff: -instance/ -.webassets-cache - -# Scrapy stuff: -.scrapy - -# Sphinx documentation -docs/_build/ - -# PyBuilder -target/ - -# Jupyter Notebook -.ipynb_checkpoints - -# pyenv -.python-version - -# celery beat schedule file -celerybeat-schedule - -# SageMath parsed files -*.sage.py - -# Environments -.env -.venv -env/ -venv/ -ENV/ -env.bak/ -venv.bak/ - -# Spyder project settings -.spyderproject -.spyproject - -# Rope project settings -.ropeproject - -# mkdocs documentation -/site - -# mypy -.mypy_cache/ - -# custom -data -.vscode -.idea -*.pkl -*.pkl.json -*.log.json -work_dirs/ - -# Pytorch -*.pth diff --git a/openmmlab_test/mmclassification-speed-benchmark/.idea/.gitignore b/openmmlab_test/mmclassification-speed-benchmark/.idea/.gitignore deleted file mode 100644 index 26d33521..00000000 --- a/openmmlab_test/mmclassification-speed-benchmark/.idea/.gitignore +++ /dev/null @@ -1,3 +0,0 @@ -# Default ignored files -/shelf/ -/workspace.xml diff --git a/openmmlab_test/mmclassification-speed-benchmark/.idea/.name b/openmmlab_test/mmclassification-speed-benchmark/.idea/.name deleted file mode 100644 index 29a9395e..00000000 --- a/openmmlab_test/mmclassification-speed-benchmark/.idea/.name +++ /dev/null @@ -1 +0,0 @@ -resnet34_b32x8_fp16_imagenet.py \ No newline at end of file diff --git a/openmmlab_test/mmclassification-speed-benchmark/.idea/inspectionProfiles/profiles_settings.xml b/openmmlab_test/mmclassification-speed-benchmark/.idea/inspectionProfiles/profiles_settings.xml deleted file mode 100644 index 105ce2da..00000000 --- a/openmmlab_test/mmclassification-speed-benchmark/.idea/inspectionProfiles/profiles_settings.xml +++ /dev/null @@ -1,6 +0,0 @@ - - - - \ No newline at end of file diff --git a/openmmlab_test/mmclassification-speed-benchmark/.idea/mmclassification-speed-benchmark.iml b/openmmlab_test/mmclassification-speed-benchmark/.idea/mmclassification-speed-benchmark.iml deleted file mode 100644 index 3ed51aed..00000000 --- a/openmmlab_test/mmclassification-speed-benchmark/.idea/mmclassification-speed-benchmark.iml +++ /dev/null @@ -1,15 +0,0 @@ - - - - - - - - - - - - \ No newline at end of file diff --git a/openmmlab_test/mmclassification-speed-benchmark/.idea/modules.xml b/openmmlab_test/mmclassification-speed-benchmark/.idea/modules.xml deleted file mode 100644 index c40979dc..00000000 --- a/openmmlab_test/mmclassification-speed-benchmark/.idea/modules.xml +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - \ No newline at end of file diff --git a/openmmlab_test/mmclassification-speed-benchmark/.idea/vcs.xml b/openmmlab_test/mmclassification-speed-benchmark/.idea/vcs.xml deleted file mode 100644 index b2bdec2d..00000000 --- a/openmmlab_test/mmclassification-speed-benchmark/.idea/vcs.xml +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/openmmlab_test/mmclassification-speed-benchmark/.pre-commit-config.yaml b/openmmlab_test/mmclassification-speed-benchmark/.pre-commit-config.yaml deleted file mode 100644 index efa84b8c..00000000 --- a/openmmlab_test/mmclassification-speed-benchmark/.pre-commit-config.yaml +++ /dev/null @@ -1,50 +0,0 @@ -exclude: ^tests/data/ -repos: - - repo: https://gitlab.com/pycqa/flake8.git - rev: 3.8.3 - hooks: - - id: flake8 - - repo: https://github.com/asottile/seed-isort-config - rev: v2.2.0 - hooks: - - id: seed-isort-config - - repo: https://github.com/timothycrosley/isort - rev: 4.3.21 - hooks: - - id: isort - - repo: https://github.com/pre-commit/mirrors-yapf - rev: v0.30.0 - hooks: - - id: yapf - - repo: https://github.com/pre-commit/pre-commit-hooks - rev: v3.1.0 - hooks: - - id: trailing-whitespace - - id: check-yaml - - id: end-of-file-fixer - - id: requirements-txt-fixer - - id: double-quote-string-fixer - - id: check-merge-conflict - - id: fix-encoding-pragma - args: ["--remove"] - - id: mixed-line-ending - args: ["--fix=lf"] - - repo: https://github.com/jumanjihouse/pre-commit-hooks - rev: 2.1.4 - hooks: - - id: markdownlint - args: ["-r", "~MD002,~MD013,~MD029,~MD033,~MD034", - "-t", "allow_different_nesting"] - - repo: https://github.com/myint/docformatter - rev: v1.3.1 - hooks: - - id: docformatter - args: ["--in-place", "--wrap-descriptions", "79"] - # - repo: local - # hooks: - # - id: clang-format - # name: clang-format - # description: Format files with ClangFormat - # entry: clang-format -style=google -i - # language: system - # files: \.(c|cc|cxx|cpp|cu|h|hpp|hxx|cuh|proto)$ diff --git a/openmmlab_test/mmclassification-speed-benchmark/.readthedocs.yml b/openmmlab_test/mmclassification-speed-benchmark/.readthedocs.yml deleted file mode 100644 index 73ea4cb7..00000000 --- a/openmmlab_test/mmclassification-speed-benchmark/.readthedocs.yml +++ /dev/null @@ -1,7 +0,0 @@ -version: 2 - -python: - version: 3.7 - install: - - requirements: requirements/docs.txt - - requirements: requirements/readthedocs.txt diff --git a/openmmlab_test/mmclassification-speed-benchmark/MANIFEST.in b/openmmlab_test/mmclassification-speed-benchmark/MANIFEST.in deleted file mode 100644 index bf5a59ff..00000000 --- a/openmmlab_test/mmclassification-speed-benchmark/MANIFEST.in +++ /dev/null @@ -1,3 +0,0 @@ -include mmcls/model_zoo.yml -recursive-include mmcls/configs *.py *.yml -recursive-include mmcls/tools *.sh *.py diff --git a/openmmlab_test/mmclassification-speed-benchmark/README.md b/openmmlab_test/mmclassification-speed-benchmark/README.md deleted file mode 100644 index a0e5598c..00000000 --- a/openmmlab_test/mmclassification-speed-benchmark/README.md +++ /dev/null @@ -1,98 +0,0 @@ -

- -
- -[![Build Status](https://github.com/open-mmlab/mmclassification/workflows/build/badge.svg)](https://github.com/open-mmlab/mmclassification/actions) -[![Documentation Status](https://readthedocs.org/projects/mmclassification/badge/?version=latest)](https://mmclassification.readthedocs.io/en/latest/?badge=latest) -[![codecov](https://codecov.io/gh/open-mmlab/mmclassification/branch/master/graph/badge.svg)](https://codecov.io/gh/open-mmlab/mmclassification) -[![license](https://img.shields.io/github/license/open-mmlab/mmclassification.svg)](https://github.com/open-mmlab/mmclassification/blob/master/LICENSE) - -## Introduction - -English | [简体中文](/README_zh-CN.md) | [模型的测试方法及测试步骤](train.md) - -MMClassification is an open source image classification toolbox based on PyTorch. It is -a part of the [OpenMMLab](https://openmmlab.com/) project. - -Documentation: https://mmclassification.readthedocs.io/en/latest/ - -![demo](https://user-images.githubusercontent.com/9102141/87268895-3e0d0780-c4fe-11ea-849e-6140b7e0d4de.gif) - -### Major features - -- Various backbones and pretrained models -- Bag of training tricks -- Large-scale training configs -- High efficiency and extensibility - -## License - -This project is released under the [Apache 2.0 license](LICENSE). - -## Changelog - -v0.12.0 was released in 3/6/2021. -Please refer to [changelog.md](docs/changelog.md) for details and release history. - -## Benchmark and model zoo - -Results and models are available in the [model zoo](docs/model_zoo.md). - -Supported backbones: - -- [x] ResNet -- [x] ResNeXt -- [x] SE-ResNet -- [x] SE-ResNeXt -- [x] RegNet -- [x] ShuffleNetV1 -- [x] ShuffleNetV2 -- [x] MobileNetV2 -- [x] MobileNetV3 - -## Installation - -Please refer to [install.md](docs/install.md) for installation and dataset preparation. - -## Getting Started - -Please see [getting_started.md](docs/getting_started.md) for the basic usage of MMClassification. There are also tutorials for [finetuning models](docs/tutorials/finetune.md), [adding new dataset](docs/tutorials/new_dataset.md), [designing data pipeline](docs/tutorials/data_pipeline.md), and [adding new modules](docs/tutorials/new_modules.md). - -## Citation - -If you find this project useful in your research, please consider cite: - -```BibTeX -@misc{2020mmclassification, - title={OpenMMLab's Image Classification Toolbox and Benchmark}, - author={MMClassification Contributors}, - howpublished = {\url{https://github.com/open-mmlab/mmclassification}}, - year={2020} -} -``` - -## Contributing - -We appreciate all contributions to improve MMClassification. -Please refer to [CONTRUBUTING.md](.github/CONTRIBUTING.md) for the contributing guideline. - -## Acknowledgement - -MMClassification is an open source project that is contributed by researchers and engineers from various colleges and companies. We appreciate all the contributors who implement their methods or add new features, as well as users who give valuable feedbacks. -We wish that the toolbox and benchmark could serve the growing research community by providing a flexible toolkit to reimplement existing methods and develop their own new classifiers. - -## Projects in OpenMMLab - -- [MMCV](https://github.com/open-mmlab/mmcv): OpenMMLab foundational library for computer vision. -- [MMClassification](https://github.com/open-mmlab/mmclassification): OpenMMLab image classification toolbox and benchmark. -- [MMDetection](https://github.com/open-mmlab/mmdetection): OpenMMLab detection toolbox and benchmark. -- [MMDetection3D](https://github.com/open-mmlab/mmdetection3d): OpenMMLab's next-generation platform for general 3D object detection. -- [MMSegmentation](https://github.com/open-mmlab/mmsegmentation): OpenMMLab semantic segmentation toolbox and benchmark. -- [MMAction2](https://github.com/open-mmlab/mmaction2): OpenMMLab's next-generation action understanding toolbox and benchmark. -- [MMTracking](https://github.com/open-mmlab/mmtracking): OpenMMLab video perception toolbox and benchmark. -- [MMPose](https://github.com/open-mmlab/mmpose): OpenMMLab pose estimation toolbox and benchmark. -- [MMEditing](https://github.com/open-mmlab/mmediting): OpenMMLab image and video editing toolbox. -- [MMOCR](https://github.com/open-mmlab/mmocr): OpenMMLab toolbox for text detection, recognition and understanding. -- [MMGeneration](https://github.com/open-mmlab/mmgeneration): OpenMMlab toolkit for generative models. - - diff --git a/openmmlab_test/mmclassification-speed-benchmark/README_zh-CN.md b/openmmlab_test/mmclassification-speed-benchmark/README_zh-CN.md deleted file mode 100644 index 2a080641..00000000 --- a/openmmlab_test/mmclassification-speed-benchmark/README_zh-CN.md +++ /dev/null @@ -1,101 +0,0 @@ -
- -
- -[English](/README.md) | 简体中文 - -[![Build Status](https://github.com/open-mmlab/mmclassification/workflows/build/badge.svg)](https://github.com/open-mmlab/mmclassification/actions) -[![Documentation Status](https://readthedocs.org/projects/mmclassification/badge/?version=latest)](https://mmclassification.readthedocs.io/en/latest/?badge=latest) -[![codecov](https://codecov.io/gh/open-mmlab/mmclassification/branch/master/graph/badge.svg)](https://codecov.io/gh/open-mmlab/mmclassification) -[![license](https://img.shields.io/github/license/open-mmlab/mmclassification.svg)](https://github.com/open-mmlab/mmclassification/blob/master/LICENSE) - -## Introduction - -MMClassification 是一款基于 PyTorch 的开源图像分类工具箱,是 [OpenMMLab](https://openmmlab.com/) 项目的成员之一 - -参考文档:https://mmclassification.readthedocs.io/en/latest/ - -![demo](https://user-images.githubusercontent.com/9102141/87268895-3e0d0780-c4fe-11ea-849e-6140b7e0d4de.gif) - -### 主要特性 - -- 支持多样的主干网络与预训练模型 -- 支持配置多种训练技巧 -- 大量的训练配置文件 -- 高效率和高可扩展性 - -## 许可证 - -该项目开源自 [Apache 2.0 license](LICENSE). - -## 更新日志 - -2021/6/3 发布了 v0.12.0 版本 - -发布历史和更新细节请参考 [更新日志](docs/changelog.md) - -## 基准测试及模型库 - -相关结果和模型可在 [model zoo](docs/model_zoo.md) 中获得 - -支持的主干网络: - -- [x] ResNet -- [x] ResNeXt -- [x] SE-ResNet -- [x] SE-ResNeXt -- [x] RegNet -- [x] ShuffleNetV1 -- [x] ShuffleNetV2 -- [x] MobileNetV2 -- [x] MobileNetV3 - -## 安装 - -请参考 [安装指南](docs_zh-CN/install.md) 进行安装 - -## 基础教程 - -请参考 [基础教程](docs_zh-CN/getting_started.md) 来了解 MMClassification 的基本使用。其中还包含了 [如何微调模型](docs_zh-CN/tutorials/finetune.md), [如何增加新数据集](docs_zh-CN/tutorials/new_dataset.md), [如何设计数据处理流程](docs_zh-CN/tutorials/data_pipeline.md), 以及 [如何增加新模块](docs_zh-CN/tutorials/new_modules.md) 等指南。 - -## 参与贡献 - -我们非常欢迎任何有助于提升 MMClassification 的贡献,请参考 [贡献指南](.github/CONTRIBUTING.md) 来了解如何参与贡献。 - -## 致谢 - -MMClassification 是一款由不同学校和公司共同贡献的开源项目。我们感谢所有为项目提供算法复现和新功能支持的贡献者,以及提供宝贵反馈的用户。 - -我们希望该工具箱和基准测试可以为社区提供灵活的代码工具,供用户复现现有算法并开发自己的新模型,从而不断为开源社区提供贡献。 - -## OpenMMLab 的其他项目 - -- [MMCV](https://github.com/open-mmlab/mmcv): OpenMMLab 计算机视觉基础库 -- [MMDetection](https://github.com/open-mmlab/mmdetection): OpenMMLab 检测工具箱与测试基准 -- [MMDetection3D](https://github.com/open-mmlab/mmdetection3d): OpenMMLab 新一代通用 3D 目标检测平台 -- [MMSegmentation](https://github.com/open-mmlab/mmsegmentation): OpenMMLab 语义分割工具箱与测试基准 -- [MMAction2](https://github.com/open-mmlab/mmaction2): OpenMMLab 新一代视频理解工具箱与测试基准 -- [MMTracking](https://github.com/open-mmlab/mmtracking): OpenMMLab 一体化视频目标感知平台 -- [MMPose](https://github.com/open-mmlab/mmpose): OpenMMLab 姿态估计工具箱与测试基准 -- [MMEditing](https://github.com/open-mmlab/mmediting): OpenMMLab 图像视频编辑工具箱 -- [MMOCR](https://github.com/open-mmlab/mmocr): OpenMMLab 全流程文字检测识别理解工具包 -- [MMGeneration](https://github.com/open-mmlab/mmgeneration): OpenMMLab 生成模型工具箱 - -## 欢迎加入 OpenMMLab 社区 - -扫描下方的二维码可关注 OpenMMLab 团队的 [知乎官方账号](https://www.zhihu.com/people/openmmlab),加入 OpenMMLab 团队的 [官方交流 QQ 群](https://jq.qq.com/?_wv=1027&k=aCvMxdr3) - -
- -
- -我们会在 OpenMMLab 社区为大家 - -- 📢 分享 AI 框架的前沿核心技术 -- 💻 解读 PyTorch 常用模块源码 -- 📰 发布 OpenMMLab 的相关新闻 -- 🚀 介绍 OpenMMLab 开发的前沿算法 -- 🏃 获取更高效的问题答疑和意见反馈 -- 🔥 提供与各行各业开发者充分交流的平台 - -干货满满 📘,等你来撩 💗,OpenMMLab 社区期待您的加入 👬 diff --git a/openmmlab_test/mmclassification-speed-benchmark/configs/_base_/datasets/imagenet_bs32.py b/openmmlab_test/mmclassification-speed-benchmark/configs/_base_/datasets/imagenet_bs32.py deleted file mode 100644 index 8a546590..00000000 --- a/openmmlab_test/mmclassification-speed-benchmark/configs/_base_/datasets/imagenet_bs32.py +++ /dev/null @@ -1,40 +0,0 @@ -# dataset settings -dataset_type = 'ImageNet' -img_norm_cfg = dict( - mean=[123.675, 116.28, 103.53], std=[58.395, 57.12, 57.375], to_rgb=True) -train_pipeline = [ - dict(type='LoadImageFromFile'), - dict(type='RandomResizedCrop', size=224), - dict(type='RandomFlip', flip_prob=0.5, direction='horizontal'), - dict(type='Normalize', **img_norm_cfg), - dict(type='ImageToTensor', keys=['img']), - dict(type='ToTensor', keys=['gt_label']), - dict(type='Collect', keys=['img', 'gt_label']) -] -test_pipeline = [ - dict(type='LoadImageFromFile'), - dict(type='Resize', size=(256, -1)), - dict(type='CenterCrop', crop_size=224), - dict(type='Normalize', **img_norm_cfg), - dict(type='ImageToTensor', keys=['img']), - dict(type='Collect', keys=['img']) -] -data = dict( - samples_per_gpu=32, - workers_per_gpu=2, - train=dict( - type=dataset_type, - data_prefix='data/imagenet/train', - pipeline=train_pipeline), - val=dict( - type=dataset_type, - data_prefix='data/imagenet/val', - ann_file='data/imagenet/meta/val.txt', - pipeline=test_pipeline), - test=dict( - # replace `data/val` with `data/test` for standard test - type=dataset_type, - data_prefix='data/imagenet/val', - ann_file='data/imagenet/meta/val.txt', - pipeline=test_pipeline)) -evaluation = dict(interval=1, metric='accuracy') diff --git a/openmmlab_test/mmclassification-speed-benchmark/configs/_base_/models/AlexNet_1x.py b/openmmlab_test/mmclassification-speed-benchmark/configs/_base_/models/AlexNet_1x.py deleted file mode 100644 index d4bf22b6..00000000 --- a/openmmlab_test/mmclassification-speed-benchmark/configs/_base_/models/AlexNet_1x.py +++ /dev/null @@ -1,5 +0,0 @@ -# model settings -model = dict( - type='ImageClassifier', - backbone=dict(type='AlexNet'), - ) diff --git a/openmmlab_test/mmclassification-speed-benchmark/configs/_base_/models/resnest101.py b/openmmlab_test/mmclassification-speed-benchmark/configs/_base_/models/resnest101.py deleted file mode 100644 index 9486c1ae..00000000 --- a/openmmlab_test/mmclassification-speed-benchmark/configs/_base_/models/resnest101.py +++ /dev/null @@ -1,18 +0,0 @@ -# model settings -model = dict( - type='ImageClassifier', - backbone=dict( - type='ResNeSt', - depth=101, - num_stages=4, - stem_channels=128, - out_indices=(3, ), - style='pytorch'), - neck=dict(type='GlobalAveragePooling'), - head=dict( - type='LinearClsHead', - num_classes=1000, - in_channels=2048, - loss=dict(type='CrossEntropyLoss', loss_weight=1.0), - topk=(1, 5), - )) diff --git a/openmmlab_test/mmclassification-speed-benchmark/configs/_base_/models/resnest200.py b/openmmlab_test/mmclassification-speed-benchmark/configs/_base_/models/resnest200.py deleted file mode 100644 index 9842ac11..00000000 --- a/openmmlab_test/mmclassification-speed-benchmark/configs/_base_/models/resnest200.py +++ /dev/null @@ -1,18 +0,0 @@ -# model settings -model = dict( - type='ImageClassifier', - backbone=dict( - type='ResNeSt', - depth=200, - num_stages=4, - stem_channels=128, - out_indices=(3, ), - style='pytorch'), - neck=dict(type='GlobalAveragePooling'), - head=dict( - type='LinearClsHead', - num_classes=1000, - in_channels=2048, - loss=dict(type='CrossEntropyLoss', loss_weight=1.0), - topk=(1, 5), - )) diff --git a/openmmlab_test/mmclassification-speed-benchmark/configs/_base_/models/resnest269.py b/openmmlab_test/mmclassification-speed-benchmark/configs/_base_/models/resnest269.py deleted file mode 100644 index 3d4c5368..00000000 --- a/openmmlab_test/mmclassification-speed-benchmark/configs/_base_/models/resnest269.py +++ /dev/null @@ -1,18 +0,0 @@ -# model settings -model = dict( - type='ImageClassifier', - backbone=dict( - type='ResNeSt', - depth=269, - num_stages=4, - stem_channels=128, - out_indices=(3, ), - style='pytorch'), - neck=dict(type='GlobalAveragePooling'), - head=dict( - type='LinearClsHead', - num_classes=1000, - in_channels=2048, - loss=dict(type='CrossEntropyLoss', loss_weight=1.0), - topk=(1, 5), - )) diff --git a/openmmlab_test/mmclassification-speed-benchmark/configs/_base_/models/resnest50.py b/openmmlab_test/mmclassification-speed-benchmark/configs/_base_/models/resnest50.py deleted file mode 100644 index 3d218384..00000000 --- a/openmmlab_test/mmclassification-speed-benchmark/configs/_base_/models/resnest50.py +++ /dev/null @@ -1,17 +0,0 @@ -# model settings -model = dict( - type='ImageClassifier', - backbone=dict( - type='ResNeSt', - depth=50, - num_stages=4, - out_indices=(3, ), - style='pytorch'), - neck=dict(type='GlobalAveragePooling'), - head=dict( - type='LinearClsHead', - num_classes=1000, - in_channels=2048, - loss=dict(type='CrossEntropyLoss', loss_weight=1.0), - topk=(1, 5), - )) diff --git a/openmmlab_test/mmclassification-speed-benchmark/configs/_base_/models/vit_base_patch16_224_finetune.py b/openmmlab_test/mmclassification-speed-benchmark/configs/_base_/models/vit_base_patch16_224_finetune.py deleted file mode 100644 index da679dd3..00000000 --- a/openmmlab_test/mmclassification-speed-benchmark/configs/_base_/models/vit_base_patch16_224_finetune.py +++ /dev/null @@ -1,21 +0,0 @@ -# model settings -model = dict( - type='ImageClassifier', - backbone=dict( - type='VisionTransformer', - num_layers=12, - embed_dim=768, - num_heads=12, - img_size=224, - patch_size=16, - in_channels=3, - feedforward_channels=3072, - drop_rate=0.1), - neck=None, - head=dict( - type='VisionTransformerClsHead', - num_classes=1000, - in_channels=768, - loss=dict(type='CrossEntropyLoss', loss_weight=1.0), - topk=(1, 5), - )) diff --git a/openmmlab_test/mmclassification-speed-benchmark/configs/_base_/models/vit_base_patch16_224_pretrain.py b/openmmlab_test/mmclassification-speed-benchmark/configs/_base_/models/vit_base_patch16_224_pretrain.py deleted file mode 100644 index aadff399..00000000 --- a/openmmlab_test/mmclassification-speed-benchmark/configs/_base_/models/vit_base_patch16_224_pretrain.py +++ /dev/null @@ -1,26 +0,0 @@ -# model settings -model = dict( - type='ImageClassifier', - backbone=dict( - type='VisionTransformer', - num_layers=12, - embed_dim=768, - num_heads=12, - img_size=224, - patch_size=16, - in_channels=3, - feedforward_channels=3072, - drop_rate=0.1, - attn_drop_rate=0.), - neck=None, - head=dict( - type='VisionTransformerClsHead', - num_classes=1000, - in_channels=768, - hidden_dim=3072, - loss=dict(type='LabelSmoothLoss', label_smooth_val=0.1), - topk=(1, 5), - ), - train_cfg=dict( - augments=dict(type='BatchMixup', alpha=0.2, num_classes=1000, - prob=1.))) diff --git a/openmmlab_test/mmclassification-speed-benchmark/configs/_base_/models/vit_base_patch16_384_finetune.py b/openmmlab_test/mmclassification-speed-benchmark/configs/_base_/models/vit_base_patch16_384_finetune.py deleted file mode 100644 index bc35b321..00000000 --- a/openmmlab_test/mmclassification-speed-benchmark/configs/_base_/models/vit_base_patch16_384_finetune.py +++ /dev/null @@ -1,21 +0,0 @@ -# model settings -model = dict( - type='ImageClassifier', - backbone=dict( - type='VisionTransformer', - num_layers=12, - embed_dim=768, - num_heads=12, - img_size=384, - patch_size=16, - in_channels=3, - feedforward_channels=3072, - drop_rate=0.1), - neck=None, - head=dict( - type='VisionTransformerClsHead', - num_classes=1000, - in_channels=768, - loss=dict(type='CrossEntropyLoss', loss_weight=1.0), - topk=(1, 5), - )) diff --git a/openmmlab_test/mmclassification-speed-benchmark/configs/_base_/models/vit_base_patch32_384_finetune.py b/openmmlab_test/mmclassification-speed-benchmark/configs/_base_/models/vit_base_patch32_384_finetune.py deleted file mode 100644 index 5017e390..00000000 --- a/openmmlab_test/mmclassification-speed-benchmark/configs/_base_/models/vit_base_patch32_384_finetune.py +++ /dev/null @@ -1,21 +0,0 @@ -# model settings -model = dict( - type='ImageClassifier', - backbone=dict( - type='VisionTransformer', - num_layers=12, - embed_dim=768, - num_heads=12, - img_size=384, - patch_size=32, - in_channels=3, - feedforward_channels=3072, - drop_rate=0.1), - neck=None, - head=dict( - type='VisionTransformerClsHead', - num_classes=1000, - in_channels=768, - loss=dict(type='CrossEntropyLoss', loss_weight=1.0), - topk=(1, 5), - )) diff --git a/openmmlab_test/mmclassification-speed-benchmark/configs/_base_/models/vit_large_patch16_224_finetune.py b/openmmlab_test/mmclassification-speed-benchmark/configs/_base_/models/vit_large_patch16_224_finetune.py deleted file mode 100644 index 62a11031..00000000 --- a/openmmlab_test/mmclassification-speed-benchmark/configs/_base_/models/vit_large_patch16_224_finetune.py +++ /dev/null @@ -1,21 +0,0 @@ -# model settings -model = dict( - type='ImageClassifier', - backbone=dict( - type='VisionTransformer', - num_layers=24, - embed_dim=1024, - num_heads=16, - img_size=224, - patch_size=16, - in_channels=3, - feedforward_channels=4096, - drop_rate=0.1), - neck=None, - head=dict( - type='VisionTransformerClsHead', - num_classes=1000, - in_channels=1024, - loss=dict(type='CrossEntropyLoss', loss_weight=1.0), - topk=(1, 5), - )) diff --git a/openmmlab_test/mmclassification-speed-benchmark/configs/_base_/models/vit_large_patch16_384_finetune.py b/openmmlab_test/mmclassification-speed-benchmark/configs/_base_/models/vit_large_patch16_384_finetune.py deleted file mode 100644 index 6309f608..00000000 --- a/openmmlab_test/mmclassification-speed-benchmark/configs/_base_/models/vit_large_patch16_384_finetune.py +++ /dev/null @@ -1,21 +0,0 @@ -# model settings -model = dict( - type='ImageClassifier', - backbone=dict( - type='VisionTransformer', - num_layers=24, - embed_dim=1024, - num_heads=16, - img_size=384, - patch_size=16, - in_channels=3, - feedforward_channels=4096, - drop_rate=0.1), - neck=None, - head=dict( - type='VisionTransformerClsHead', - num_classes=1000, - in_channels=1024, - loss=dict(type='CrossEntropyLoss', loss_weight=1.0), - topk=(1, 5), - )) diff --git a/openmmlab_test/mmclassification-speed-benchmark/configs/_base_/models/vit_large_patch32_384_finetune.py b/openmmlab_test/mmclassification-speed-benchmark/configs/_base_/models/vit_large_patch32_384_finetune.py deleted file mode 100644 index 9c2483b1..00000000 --- a/openmmlab_test/mmclassification-speed-benchmark/configs/_base_/models/vit_large_patch32_384_finetune.py +++ /dev/null @@ -1,21 +0,0 @@ -# model settings -model = dict( - type='ImageClassifier', - backbone=dict( - type='VisionTransformer', - num_layers=24, - embed_dim=1024, - num_heads=16, - img_size=384, - patch_size=32, - in_channels=3, - feedforward_channels=4096, - drop_rate=0.1), - neck=None, - head=dict( - type='VisionTransformerClsHead', - num_classes=1000, - in_channels=1024, - loss=dict(type='CrossEntropyLoss', loss_weight=1.0), - topk=(1, 5), - )) diff --git a/openmmlab_test/mmclassification-speed-benchmark/configs/_base_/schedules/imagenet_bs4096_AdamW.py b/openmmlab_test/mmclassification-speed-benchmark/configs/_base_/schedules/imagenet_bs4096_AdamW.py deleted file mode 100644 index 859cf4b2..00000000 --- a/openmmlab_test/mmclassification-speed-benchmark/configs/_base_/schedules/imagenet_bs4096_AdamW.py +++ /dev/null @@ -1,18 +0,0 @@ -# optimizer -optimizer = dict(type='AdamW', lr=0.003, weight_decay=0.3) -optimizer_config = dict(grad_clip=dict(max_norm=1.0)) - -# specific to vit pretrain -paramwise_cfg = dict( - custom_keys={ - '.backbone.cls_token': dict(decay_mult=0.0), - '.backbone.pos_embed': dict(decay_mult=0.0) - }) -# learning policy -lr_config = dict( - policy='CosineAnnealing', - min_lr=0, - warmup='linear', - warmup_iters=10000, - warmup_ratio=1e-4) -runner = dict(type='EpochBasedRunner', max_epochs=300) diff --git a/openmmlab_test/mmclassification-speed-benchmark/configs/fp16/README.md b/openmmlab_test/mmclassification-speed-benchmark/configs/fp16/README.md deleted file mode 100644 index 7b0d9a46..00000000 --- a/openmmlab_test/mmclassification-speed-benchmark/configs/fp16/README.md +++ /dev/null @@ -1,20 +0,0 @@ -# Mixed Precision Training - -## Introduction - - - -```latex -@article{micikevicius2017mixed, - title={Mixed precision training}, - author={Micikevicius, Paulius and Narang, Sharan and Alben, Jonah and Diamos, Gregory and Elsen, Erich and Garcia, David and Ginsburg, Boris and Houston, Michael and Kuchaiev, Oleksii and Venkatesh, Ganesh and others}, - journal={arXiv preprint arXiv:1710.03740}, - year={2017} -} -``` - -## Results and models - -| Model | Params(M) | Flops(G) | Mem (GB) | Top-1 (%) | Top-5 (%) | Config | Download | -|:---------------------:|:---------:|:--------:|:---------:|:---------:|:---------:| :---------:|:--------:| -| ResNet-50 | 25.56 | 4.12 | 1.9 |76.32 | 93.04 | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/fp16/resnet50_b32x8_fp16_imagenet.py) | [model](https://download.openmmlab.com/mmclassification/v0/fp16/resnet50_batch256_fp16_imagenet_20210320-b3964210.pth) | [log](https://download.openmmlab.com/mmclassification/v0/fp16/resnet50_batch256_fp16_imagenet_20210320-b3964210.log.json) | diff --git a/openmmlab_test/mmclassification-speed-benchmark/configs/fp16/metafile.yml b/openmmlab_test/mmclassification-speed-benchmark/configs/fp16/metafile.yml deleted file mode 100644 index e4df2fa6..00000000 --- a/openmmlab_test/mmclassification-speed-benchmark/configs/fp16/metafile.yml +++ /dev/null @@ -1,30 +0,0 @@ -Collections: - - Name: FP16 - Metadata: - Training Data: ImageNet - Training Resources: 8x V100 GPUs - Training Techniques: - - SGD with Momentum - - Weight Decay - - Mixed Precision Training - Paper: https://arxiv.org/abs/1710.03740 - README: configs/fp16/README.md - -Models: -- Config: configs/fp16/resnet50_b32x8_fp16_dynamic_imagenet.py - In Collection: FP16 - Metadata: - FLOPs: 4120000000 - Parameters: 25560000 - Epochs: 100 - Batch Size: 256 - Architecture: - - ResNet - Name: resnet50_b32x8_fp16_dynamic_imagenet - Results: - - Dataset: ImageNet - Metrics: - Top 1 Accuracy: 76.32 - Top 5 Accuracy: 93.04 - Task: Image Classification - Weights: https://download.openmmlab.com/mmclassification/v0/fp16/resnet50_batch256_fp16_imagenet_20210320-b3964210.pth diff --git a/openmmlab_test/mmclassification-speed-benchmark/configs/fp16/resnet152_b32x8_fp16_imagenet.py b/openmmlab_test/mmclassification-speed-benchmark/configs/fp16/resnet152_b32x8_fp16_imagenet.py deleted file mode 100644 index b4958020..00000000 --- a/openmmlab_test/mmclassification-speed-benchmark/configs/fp16/resnet152_b32x8_fp16_imagenet.py +++ /dev/null @@ -1,6 +0,0 @@ -_base_ = [ - '../_base_/models/resnet152.py', '../speed_test/datasets/imagenet_bs32.py', - '../_base_/schedules/imagenet_bs256.py', '../_base_/default_runtime.py' -] -# fp16 settings -fp16 = dict(loss_scale=512.) \ No newline at end of file diff --git a/openmmlab_test/mmclassification-speed-benchmark/configs/fp16/resnet18_b32x8_fp16_imagenet.py b/openmmlab_test/mmclassification-speed-benchmark/configs/fp16/resnet18_b32x8_fp16_imagenet.py deleted file mode 100644 index 10af6564..00000000 --- a/openmmlab_test/mmclassification-speed-benchmark/configs/fp16/resnet18_b32x8_fp16_imagenet.py +++ /dev/null @@ -1,6 +0,0 @@ -_base_ = [ - '../_base_/models/resnet18.py', '../speed_test/datasets/imagenet_bs32.py', - '../_base_/schedules/imagenet_bs256.py', '../_base_/default_runtime.py' -] -# fp16 settings -fp16 = dict(loss_scale=512.) \ No newline at end of file diff --git a/openmmlab_test/mmclassification-speed-benchmark/configs/fp16/resnet34_b32x8_fp16_imagenet.py b/openmmlab_test/mmclassification-speed-benchmark/configs/fp16/resnet34_b32x8_fp16_imagenet.py deleted file mode 100644 index d99db4bd..00000000 --- a/openmmlab_test/mmclassification-speed-benchmark/configs/fp16/resnet34_b32x8_fp16_imagenet.py +++ /dev/null @@ -1,6 +0,0 @@ -_base_ = [ - '../_base_/models/resnet34.py', '../speed_test/datasets/imagenet_bs32.py', - '../_base_/schedules/imagenet_bs256.py', '../_base_/default_runtime.py' -] -# fp16 settings -fp16 = dict(loss_scale=512.) \ No newline at end of file diff --git a/openmmlab_test/mmclassification-speed-benchmark/configs/fp16/resnet50_b32x8_fp16_dynamic_imagenet.py b/openmmlab_test/mmclassification-speed-benchmark/configs/fp16/resnet50_b32x8_fp16_dynamic_imagenet.py deleted file mode 100644 index 35b4ff54..00000000 --- a/openmmlab_test/mmclassification-speed-benchmark/configs/fp16/resnet50_b32x8_fp16_dynamic_imagenet.py +++ /dev/null @@ -1,4 +0,0 @@ -_base_ = ['../resnet/resnet50_b32x8_imagenet.py'] - -# fp16 settings -fp16 = dict(loss_scale='dynamic') diff --git a/openmmlab_test/mmclassification-speed-benchmark/configs/fp16/resnet50_b32x8_fp16_imagenet.py b/openmmlab_test/mmclassification-speed-benchmark/configs/fp16/resnet50_b32x8_fp16_imagenet.py deleted file mode 100644 index a18b40a0..00000000 --- a/openmmlab_test/mmclassification-speed-benchmark/configs/fp16/resnet50_b32x8_fp16_imagenet.py +++ /dev/null @@ -1,10 +0,0 @@ -#_base_ = ['../resnet/resnet50_b32x8_imagenet.py'] - -_base_ = [ - '../_base_/models/resnet50.py', '../speed_test/datasets/imagenet_bs32.py', - '../_base_/schedules/imagenet_bs256.py', '../_base_/default_runtime.py' -] - - -# fp16 settings -fp16 = dict(loss_scale=512.) diff --git a/openmmlab_test/mmclassification-speed-benchmark/configs/fp16/resnext50_32x4d_b32x8_fp16_imagenet.py b/openmmlab_test/mmclassification-speed-benchmark/configs/fp16/resnext50_32x4d_b32x8_fp16_imagenet.py deleted file mode 100644 index 2f37dfb9..00000000 --- a/openmmlab_test/mmclassification-speed-benchmark/configs/fp16/resnext50_32x4d_b32x8_fp16_imagenet.py +++ /dev/null @@ -1,6 +0,0 @@ -_base_ = [ - '../_base_/models/resnext50_32x4d.py', '../speed_test/datasets/imagenet_bs32.py', - '../_base_/schedules/imagenet_bs256.py', '../_base_/default_runtime.py' -] -# fp16 settings -fp16 = dict(loss_scale=512.) \ No newline at end of file diff --git a/openmmlab_test/mmclassification-speed-benchmark/configs/fp16/seresnet50_b32x8_fp16_imagenet.py b/openmmlab_test/mmclassification-speed-benchmark/configs/fp16/seresnet50_b32x8_fp16_imagenet.py deleted file mode 100644 index cb991090..00000000 --- a/openmmlab_test/mmclassification-speed-benchmark/configs/fp16/seresnet50_b32x8_fp16_imagenet.py +++ /dev/null @@ -1,7 +0,0 @@ -_base_ = [ - '../_base_/models/seresnet50.py', '../speed_test/datasets/imagenet_bs32.py', - '../_base_/schedules/imagenet_bs256_140e.py', - '../_base_/default_runtime.py' -] -# fp16 settings -fp16 = dict(loss_scale=512.) \ No newline at end of file diff --git a/openmmlab_test/mmclassification-speed-benchmark/configs/fp16/shufflenet_v1_1x_b64x16_linearlr_bn_nowd_fp16_imagenet.py b/openmmlab_test/mmclassification-speed-benchmark/configs/fp16/shufflenet_v1_1x_b64x16_linearlr_bn_nowd_fp16_imagenet.py deleted file mode 100644 index 5b229578..00000000 --- a/openmmlab_test/mmclassification-speed-benchmark/configs/fp16/shufflenet_v1_1x_b64x16_linearlr_bn_nowd_fp16_imagenet.py +++ /dev/null @@ -1,7 +0,0 @@ -_base_ = [ - '../_base_/models/shufflenet_v1_1x.py', '../speed_test/datasets/imagenet_bs64.py', - '../_base_/schedules/imagenet_bs1024_linearlr_bn_nowd.py', - '../_base_/default_runtime.py' -] -# fp16 settings -fp16 = dict(loss_scale=512.) \ No newline at end of file diff --git a/openmmlab_test/mmclassification-speed-benchmark/configs/fp16/shufflenet_v2_1x_b64x16_linearlr_bn_nowd_fp16_imagenet.py b/openmmlab_test/mmclassification-speed-benchmark/configs/fp16/shufflenet_v2_1x_b64x16_linearlr_bn_nowd_fp16_imagenet.py deleted file mode 100644 index 6ee37a5b..00000000 --- a/openmmlab_test/mmclassification-speed-benchmark/configs/fp16/shufflenet_v2_1x_b64x16_linearlr_bn_nowd_fp16_imagenet.py +++ /dev/null @@ -1,7 +0,0 @@ -_base_ = [ - '../_base_/models/shufflenet_v2_1x.py', '../speed_test/datasets/imagenet_bs64.py', - '../_base_/schedules/imagenet_bs1024_linearlr_bn_nowd.py', - '../_base_/default_runtime.py' -] -# fp16 settings -fp16 = dict(loss_scale=512.) \ No newline at end of file diff --git a/openmmlab_test/mmclassification-speed-benchmark/configs/fp16/vgg11_b32x8_fp16_imagenet.py b/openmmlab_test/mmclassification-speed-benchmark/configs/fp16/vgg11_b32x8_fp16_imagenet.py deleted file mode 100644 index 9267fd83..00000000 --- a/openmmlab_test/mmclassification-speed-benchmark/configs/fp16/vgg11_b32x8_fp16_imagenet.py +++ /dev/null @@ -1,6 +0,0 @@ -_base_ = [ - '../_base_/models/vgg11.py', '../speed_test/datasets/imagenet_bs32.py', - '../_base_/schedules/imagenet_bs256.py', '../_base_/default_runtime.py' -] -# fp16 settings -fp16 = dict(loss_scale=512.) \ No newline at end of file diff --git a/openmmlab_test/mmclassification-speed-benchmark/configs/lenet/README.md b/openmmlab_test/mmclassification-speed-benchmark/configs/lenet/README.md deleted file mode 100644 index 3b2d7bea..00000000 --- a/openmmlab_test/mmclassification-speed-benchmark/configs/lenet/README.md +++ /dev/null @@ -1,18 +0,0 @@ -# Backpropagation Applied to Handwritten Zip Code Recognition - -## Introduction - - - -```latex -@ARTICLE{6795724, - author={Y. {LeCun} and B. {Boser} and J. S. {Denker} and D. {Henderson} and R. E. {Howard} and W. {Hubbard} and L. D. {Jackel}}, - journal={Neural Computation}, - title={Backpropagation Applied to Handwritten Zip Code Recognition}, - year={1989}, - volume={1}, - number={4}, - pages={541-551}, - doi={10.1162/neco.1989.1.4.541}} -} -``` diff --git a/openmmlab_test/mmclassification-speed-benchmark/configs/mobilenet_v2/README.md b/openmmlab_test/mmclassification-speed-benchmark/configs/mobilenet_v2/README.md deleted file mode 100644 index 86cba69d..00000000 --- a/openmmlab_test/mmclassification-speed-benchmark/configs/mobilenet_v2/README.md +++ /dev/null @@ -1,26 +0,0 @@ -# MobileNetV2: Inverted Residuals and Linear Bottlenecks - -## Introduction - - - -```latex -@INPROCEEDINGS{8578572, - author={M. {Sandler} and A. {Howard} and M. {Zhu} and A. {Zhmoginov} and L. {Chen}}, - booktitle={2018 IEEE/CVF Conference on Computer Vision and Pattern Recognition}, - title={MobileNetV2: Inverted Residuals and Linear Bottlenecks}, - year={2018}, - volume={}, - number={}, - pages={4510-4520}, - doi={10.1109/CVPR.2018.00474}} -} -``` - -## Results and models - -### ImageNet - -| Model | Params(M) | Flops(G) | Top-1 (%) | Top-5 (%) | Config | Download | -|:---------------------:|:---------:|:--------:|:---------:|:---------:|:---------:|:--------:| -| MobileNet V2 | 3.5 | 0.319 | 71.86 | 90.42 | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/mobilenet_v2/mobilenet_v2_b32x8_imagenet.py) | [model](https://download.openmmlab.com/mmclassification/v0/mobilenet_v2/mobilenet_v2_batch256_imagenet_20200708-3b2dc3af.pth) | [log](https://download.openmmlab.com/mmclassification/v0/mobilenet_v2/mobilenet_v2_batch256_imagenet_20200708-3b2dc3af.log.json) | diff --git a/openmmlab_test/mmclassification-speed-benchmark/configs/mobilenet_v2/metafile.yml b/openmmlab_test/mmclassification-speed-benchmark/configs/mobilenet_v2/metafile.yml deleted file mode 100644 index 93814f54..00000000 --- a/openmmlab_test/mmclassification-speed-benchmark/configs/mobilenet_v2/metafile.yml +++ /dev/null @@ -1,29 +0,0 @@ -Collections: - - Name: MobileNet V2 - Metadata: - Training Data: ImageNet - Training Techniques: - - SGD with Momentum - - Weight Decay - Training Resources: 8x V100 GPUs - Epochs: 300 - Batch Size: 256 - Architecture: - - MobileNet V2 - Paper: https://arxiv.org/abs/1801.04381 - README: configs/mobilenet_v2/README.md - -Models: -- Config: configs/mobilenet_v2/mobilenet_v2_b32x8_imagenet.py - In Collection: MobileNet V2 - Metadata: - FLOPs: 319000000 - Parameters: 3500000 - Name: mobilenet_v2_b32x8_imagenet - Results: - - Dataset: ImageNet - Metrics: - Top 1 Accuracy: 71.86 - Top 5 Accuracy: 90.42 - Task: Image Classification - Weights: https://download.openmmlab.com/mmclassification/v0/mobilenet_v2/mobilenet_v2_batch256_imagenet_20200708-3b2dc3af.pth diff --git a/openmmlab_test/mmclassification-speed-benchmark/configs/mobilenet_v2/mobilenet_v2_b32x8_imagenet.py b/openmmlab_test/mmclassification-speed-benchmark/configs/mobilenet_v2/mobilenet_v2_b32x8_imagenet.py deleted file mode 100644 index afd2d979..00000000 --- a/openmmlab_test/mmclassification-speed-benchmark/configs/mobilenet_v2/mobilenet_v2_b32x8_imagenet.py +++ /dev/null @@ -1,6 +0,0 @@ -_base_ = [ - '../_base_/models/mobilenet_v2_1x.py', - '../_base_/datasets/imagenet_bs32_pil_resize.py', - '../_base_/schedules/imagenet_bs256_epochstep.py', - '../_base_/default_runtime.py' -] diff --git a/openmmlab_test/mmclassification-speed-benchmark/configs/regnet/README.md b/openmmlab_test/mmclassification-speed-benchmark/configs/regnet/README.md deleted file mode 100644 index 7aa2cf01..00000000 --- a/openmmlab_test/mmclassification-speed-benchmark/configs/regnet/README.md +++ /dev/null @@ -1,37 +0,0 @@ -# Designing Network Design Spaces - -## Introduction - - - -```latex -@article{radosavovic2020designing, - title={Designing Network Design Spaces}, - author={Ilija Radosavovic and Raj Prateek Kosaraju and Ross Girshick and Kaiming He and Piotr Dollár}, - year={2020}, - eprint={2003.13678}, - archivePrefix={arXiv}, - primaryClass={cs.CV} -} -``` - -## Pretrain model - -The pre-trained modles are converted from [model zoo of pycls](https://github.com/facebookresearch/pycls/blob/master/MODEL_ZOO.md). - -### ImageNet - -| Model | Params(M) | Flops(G) | Top-1 (%) | Top-5 (%) | Download | -|:---------------------:|:---------:|:--------:|:---------:|:---------:|:--------:| -| RegNetX-400MF | 5.16 | 0.41 | 72.55 | 90.91 | [model](https://download.openmmlab.com/mmclassification/v0/regnet/convert/RegNetX-400MF-0db9f35c.pth)| -| RegNetX-800MF | 7.26 | 0.81 | 75.21 | 92.37 | [model](https://download.openmmlab.com/mmclassification/v0/regnet/convert/RegNetX-800MF-4f9d1e8a.pth)| -| RegNetX-1.6GF | 9.19 | 1.63 | 77.04 | 93.51 | [model](https://download.openmmlab.com/mmclassification/v0/regnet/convert/RegNetX-1.6GF-cfb32375.pth)| -| RegNetX-3.2GF | 15.3 | 3.21 | 78.26 | 94.20 | [model](https://download.openmmlab.com/mmclassification/v0/regnet/convert/RegNetX-3.2GF-82c43fd5.pth)| -| RegNetX-4.0GF | 22.12 | 4.0 | 78.72 | 94.22 | [model](https://download.openmmlab.com/mmclassification/v0/regnet/convert/RegNetX-4.0GF-ef8bb32c.pth)| -| RegNetX-6.4GF | 26.21 | 6.51 | 79.22 | 94.61 | [model](https://download.openmmlab.com/mmclassification/v0/regnet/convert/RegNetX-6.4GF-6888c0ea.pth)| -| RegNetX-8.0GF | 39.57 | 8.03 | 79.31 | 94.57 | [model](https://download.openmmlab.com/mmclassification/v0/regnet/convert/RegNetX-8.0GF-cb4c77ec.pth)| -| RegNetX-12GF | 46.11 | 12.15 | 79.91 | 94.78 | [model](https://download.openmmlab.com/mmclassification/v0/regnet/convert/RegNetX-12GF-0574538f.pth)| - -## Results and models - -Waiting for adding. diff --git a/openmmlab_test/mmclassification-speed-benchmark/configs/regnet/regnetx_1.6gf_b32x8_imagenet.py b/openmmlab_test/mmclassification-speed-benchmark/configs/regnet/regnetx_1.6gf_b32x8_imagenet.py deleted file mode 100644 index cfa956ff..00000000 --- a/openmmlab_test/mmclassification-speed-benchmark/configs/regnet/regnetx_1.6gf_b32x8_imagenet.py +++ /dev/null @@ -1,51 +0,0 @@ -_base_ = [ - '../_base_/models/regnet/regnetx_1.6gf.py', - '../_base_/datasets/imagenet_bs32.py', - '../_base_/schedules/imagenet_bs256.py', '../_base_/default_runtime.py' -] - -# dataset settings -dataset_type = 'ImageNet' - -img_norm_cfg = dict( - # The mean and std are used in PyCls when training RegNets - mean=[103.53, 116.28, 123.675], - std=[57.375, 57.12, 58.395], - to_rgb=False) - -train_pipeline = [ - dict(type='LoadImageFromFile'), - dict(type='RandomResizedCrop', size=224), - dict(type='RandomFlip', flip_prob=0.5, direction='horizontal'), - dict(type='Normalize', **img_norm_cfg), - dict(type='ImageToTensor', keys=['img']), - dict(type='ToTensor', keys=['gt_label']), - dict(type='Collect', keys=['img', 'gt_label']) -] -test_pipeline = [ - dict(type='LoadImageFromFile'), - dict(type='Resize', size=(256, -1)), - dict(type='CenterCrop', crop_size=224), - dict(type='Normalize', **img_norm_cfg), - dict(type='ImageToTensor', keys=['img']), - dict(type='Collect', keys=['img']) -] -data = dict( - samples_per_gpu=32, - workers_per_gpu=2, - train=dict( - type=dataset_type, - data_prefix='data/imagenet/train', - pipeline=train_pipeline), - val=dict( - type=dataset_type, - data_prefix='data/imagenet/val', - ann_file='data/imagenet/meta/val.txt', - pipeline=test_pipeline), - test=dict( - # replace `data/val` with `data/test` for standard test - type=dataset_type, - data_prefix='data/imagenet/val', - ann_file='data/imagenet/meta/val.txt', - pipeline=test_pipeline)) -evaluation = dict(interval=1, metric='accuracy') diff --git a/openmmlab_test/mmclassification-speed-benchmark/configs/regnet/regnetx_12gf_b32x8_imagenet.py b/openmmlab_test/mmclassification-speed-benchmark/configs/regnet/regnetx_12gf_b32x8_imagenet.py deleted file mode 100644 index 17796a4b..00000000 --- a/openmmlab_test/mmclassification-speed-benchmark/configs/regnet/regnetx_12gf_b32x8_imagenet.py +++ /dev/null @@ -1,51 +0,0 @@ -_base_ = [ - '../_base_/models/regnet/regnetx_12gf.py', - '../_base_/datasets/imagenet_bs32.py', - '../_base_/schedules/imagenet_bs256.py', '../_base_/default_runtime.py' -] - -# dataset settings -dataset_type = 'ImageNet' - -img_norm_cfg = dict( - # The mean and std are used in PyCls when training RegNets - mean=[103.53, 116.28, 123.675], - std=[57.375, 57.12, 58.395], - to_rgb=False) - -train_pipeline = [ - dict(type='LoadImageFromFile'), - dict(type='RandomResizedCrop', size=224), - dict(type='RandomFlip', flip_prob=0.5, direction='horizontal'), - dict(type='Normalize', **img_norm_cfg), - dict(type='ImageToTensor', keys=['img']), - dict(type='ToTensor', keys=['gt_label']), - dict(type='Collect', keys=['img', 'gt_label']) -] -test_pipeline = [ - dict(type='LoadImageFromFile'), - dict(type='Resize', size=(256, -1)), - dict(type='CenterCrop', crop_size=224), - dict(type='Normalize', **img_norm_cfg), - dict(type='ImageToTensor', keys=['img']), - dict(type='Collect', keys=['img']) -] -data = dict( - samples_per_gpu=32, - workers_per_gpu=2, - train=dict( - type=dataset_type, - data_prefix='data/imagenet/train', - pipeline=train_pipeline), - val=dict( - type=dataset_type, - data_prefix='data/imagenet/val', - ann_file='data/imagenet/meta/val.txt', - pipeline=test_pipeline), - test=dict( - # replace `data/val` with `data/test` for standard test - type=dataset_type, - data_prefix='data/imagenet/val', - ann_file='data/imagenet/meta/val.txt', - pipeline=test_pipeline)) -evaluation = dict(interval=1, metric='accuracy') diff --git a/openmmlab_test/mmclassification-speed-benchmark/configs/regnet/regnetx_3.2gf_b32x8_imagenet.py b/openmmlab_test/mmclassification-speed-benchmark/configs/regnet/regnetx_3.2gf_b32x8_imagenet.py deleted file mode 100644 index b772c786..00000000 --- a/openmmlab_test/mmclassification-speed-benchmark/configs/regnet/regnetx_3.2gf_b32x8_imagenet.py +++ /dev/null @@ -1,51 +0,0 @@ -_base_ = [ - '../_base_/models/regnet/regnetx_3.2gf.py', - '../_base_/datasets/imagenet_bs32.py', - '../_base_/schedules/imagenet_bs256.py', '../_base_/default_runtime.py' -] - -# dataset settings -dataset_type = 'ImageNet' - -img_norm_cfg = dict( - # The mean and std are used in PyCls when training RegNets - mean=[103.53, 116.28, 123.675], - std=[57.375, 57.12, 58.395], - to_rgb=False) - -train_pipeline = [ - dict(type='LoadImageFromFile'), - dict(type='RandomResizedCrop', size=224), - dict(type='RandomFlip', flip_prob=0.5, direction='horizontal'), - dict(type='Normalize', **img_norm_cfg), - dict(type='ImageToTensor', keys=['img']), - dict(type='ToTensor', keys=['gt_label']), - dict(type='Collect', keys=['img', 'gt_label']) -] -test_pipeline = [ - dict(type='LoadImageFromFile'), - dict(type='Resize', size=(256, -1)), - dict(type='CenterCrop', crop_size=224), - dict(type='Normalize', **img_norm_cfg), - dict(type='ImageToTensor', keys=['img']), - dict(type='Collect', keys=['img']) -] -data = dict( - samples_per_gpu=32, - workers_per_gpu=2, - train=dict( - type=dataset_type, - data_prefix='data/imagenet/train', - pipeline=train_pipeline), - val=dict( - type=dataset_type, - data_prefix='data/imagenet/val', - ann_file='data/imagenet/meta/val.txt', - pipeline=test_pipeline), - test=dict( - # replace `data/val` with `data/test` for standard test - type=dataset_type, - data_prefix='data/imagenet/val', - ann_file='data/imagenet/meta/val.txt', - pipeline=test_pipeline)) -evaluation = dict(interval=1, metric='accuracy') diff --git a/openmmlab_test/mmclassification-speed-benchmark/configs/regnet/regnetx_4.0gf_b32x8_imagenet.py b/openmmlab_test/mmclassification-speed-benchmark/configs/regnet/regnetx_4.0gf_b32x8_imagenet.py deleted file mode 100644 index 98e6c53b..00000000 --- a/openmmlab_test/mmclassification-speed-benchmark/configs/regnet/regnetx_4.0gf_b32x8_imagenet.py +++ /dev/null @@ -1,51 +0,0 @@ -_base_ = [ - '../_base_/models/regnet/regnetx_4.0gf.py', - '../_base_/datasets/imagenet_bs32.py', - '../_base_/schedules/imagenet_bs256.py', '../_base_/default_runtime.py' -] - -# dataset settings -dataset_type = 'ImageNet' - -img_norm_cfg = dict( - # The mean and std are used in PyCls when training RegNets - mean=[103.53, 116.28, 123.675], - std=[57.375, 57.12, 58.395], - to_rgb=False) - -train_pipeline = [ - dict(type='LoadImageFromFile'), - dict(type='RandomResizedCrop', size=224), - dict(type='RandomFlip', flip_prob=0.5, direction='horizontal'), - dict(type='Normalize', **img_norm_cfg), - dict(type='ImageToTensor', keys=['img']), - dict(type='ToTensor', keys=['gt_label']), - dict(type='Collect', keys=['img', 'gt_label']) -] -test_pipeline = [ - dict(type='LoadImageFromFile'), - dict(type='Resize', size=(256, -1)), - dict(type='CenterCrop', crop_size=224), - dict(type='Normalize', **img_norm_cfg), - dict(type='ImageToTensor', keys=['img']), - dict(type='Collect', keys=['img']) -] -data = dict( - samples_per_gpu=32, - workers_per_gpu=2, - train=dict( - type=dataset_type, - data_prefix='data/imagenet/train', - pipeline=train_pipeline), - val=dict( - type=dataset_type, - data_prefix='data/imagenet/val', - ann_file='data/imagenet/meta/val.txt', - pipeline=test_pipeline), - test=dict( - # replace `data/val` with `data/test` for standard test - type=dataset_type, - data_prefix='data/imagenet/val', - ann_file='data/imagenet/meta/val.txt', - pipeline=test_pipeline)) -evaluation = dict(interval=1, metric='accuracy') diff --git a/openmmlab_test/mmclassification-speed-benchmark/configs/regnet/regnetx_400mf_b32x8_imagenet.py b/openmmlab_test/mmclassification-speed-benchmark/configs/regnet/regnetx_400mf_b32x8_imagenet.py deleted file mode 100644 index 88ccec94..00000000 --- a/openmmlab_test/mmclassification-speed-benchmark/configs/regnet/regnetx_400mf_b32x8_imagenet.py +++ /dev/null @@ -1,51 +0,0 @@ -_base_ = [ - '../_base_/models/regnet/regnetx_400mf.py', - '../_base_/datasets/imagenet_bs32.py', - '../_base_/schedules/imagenet_bs256.py', '../_base_/default_runtime.py' -] - -# dataset settings -dataset_type = 'ImageNet' - -img_norm_cfg = dict( - # The mean and std are used in PyCls when training RegNets - mean=[103.53, 116.28, 123.675], - std=[57.375, 57.12, 58.395], - to_rgb=False) - -train_pipeline = [ - dict(type='LoadImageFromFile'), - dict(type='RandomResizedCrop', size=224), - dict(type='RandomFlip', flip_prob=0.5, direction='horizontal'), - dict(type='Normalize', **img_norm_cfg), - dict(type='ImageToTensor', keys=['img']), - dict(type='ToTensor', keys=['gt_label']), - dict(type='Collect', keys=['img', 'gt_label']) -] -test_pipeline = [ - dict(type='LoadImageFromFile'), - dict(type='Resize', size=(256, -1)), - dict(type='CenterCrop', crop_size=224), - dict(type='Normalize', **img_norm_cfg), - dict(type='ImageToTensor', keys=['img']), - dict(type='Collect', keys=['img']) -] -data = dict( - samples_per_gpu=32, - workers_per_gpu=2, - train=dict( - type=dataset_type, - data_prefix='data/imagenet/train', - pipeline=train_pipeline), - val=dict( - type=dataset_type, - data_prefix='data/imagenet/val', - ann_file='data/imagenet/meta/val.txt', - pipeline=test_pipeline), - test=dict( - # replace `data/val` with `data/test` for standard test - type=dataset_type, - data_prefix='data/imagenet/val', - ann_file='data/imagenet/meta/val.txt', - pipeline=test_pipeline)) -evaluation = dict(interval=1, metric='accuracy') diff --git a/openmmlab_test/mmclassification-speed-benchmark/configs/regnet/regnetx_6.4gf_b32x8_imagenet.py b/openmmlab_test/mmclassification-speed-benchmark/configs/regnet/regnetx_6.4gf_b32x8_imagenet.py deleted file mode 100644 index 4e5e36a0..00000000 --- a/openmmlab_test/mmclassification-speed-benchmark/configs/regnet/regnetx_6.4gf_b32x8_imagenet.py +++ /dev/null @@ -1,51 +0,0 @@ -_base_ = [ - '../_base_/models/regnet/regnetx_6.4gf.py', - '../_base_/datasets/imagenet_bs32.py', - '../_base_/schedules/imagenet_bs256.py', '../_base_/default_runtime.py' -] - -# dataset settings -dataset_type = 'ImageNet' - -img_norm_cfg = dict( - # The mean and std are used in PyCls when training RegNets - mean=[103.53, 116.28, 123.675], - std=[57.375, 57.12, 58.395], - to_rgb=False) - -train_pipeline = [ - dict(type='LoadImageFromFile'), - dict(type='RandomResizedCrop', size=224), - dict(type='RandomFlip', flip_prob=0.5, direction='horizontal'), - dict(type='Normalize', **img_norm_cfg), - dict(type='ImageToTensor', keys=['img']), - dict(type='ToTensor', keys=['gt_label']), - dict(type='Collect', keys=['img', 'gt_label']) -] -test_pipeline = [ - dict(type='LoadImageFromFile'), - dict(type='Resize', size=(256, -1)), - dict(type='CenterCrop', crop_size=224), - dict(type='Normalize', **img_norm_cfg), - dict(type='ImageToTensor', keys=['img']), - dict(type='Collect', keys=['img']) -] -data = dict( - samples_per_gpu=32, - workers_per_gpu=2, - train=dict( - type=dataset_type, - data_prefix='data/imagenet/train', - pipeline=train_pipeline), - val=dict( - type=dataset_type, - data_prefix='data/imagenet/val', - ann_file='data/imagenet/meta/val.txt', - pipeline=test_pipeline), - test=dict( - # replace `data/val` with `data/test` for standard test - type=dataset_type, - data_prefix='data/imagenet/val', - ann_file='data/imagenet/meta/val.txt', - pipeline=test_pipeline)) -evaluation = dict(interval=1, metric='accuracy') diff --git a/openmmlab_test/mmclassification-speed-benchmark/configs/regnet/regnetx_8.0gf_b32x8_imagenet.py b/openmmlab_test/mmclassification-speed-benchmark/configs/regnet/regnetx_8.0gf_b32x8_imagenet.py deleted file mode 100644 index 37d7c8fb..00000000 --- a/openmmlab_test/mmclassification-speed-benchmark/configs/regnet/regnetx_8.0gf_b32x8_imagenet.py +++ /dev/null @@ -1,51 +0,0 @@ -_base_ = [ - '../_base_/models/regnet/regnetx_8.0gf.py', - '../_base_/datasets/imagenet_bs32.py', - '../_base_/schedules/imagenet_bs256.py', '../_base_/default_runtime.py' -] - -# dataset settings -dataset_type = 'ImageNet' - -img_norm_cfg = dict( - # The mean and std are used in PyCls when training RegNets - mean=[103.53, 116.28, 123.675], - std=[57.375, 57.12, 58.395], - to_rgb=False) - -train_pipeline = [ - dict(type='LoadImageFromFile'), - dict(type='RandomResizedCrop', size=224), - dict(type='RandomFlip', flip_prob=0.5, direction='horizontal'), - dict(type='Normalize', **img_norm_cfg), - dict(type='ImageToTensor', keys=['img']), - dict(type='ToTensor', keys=['gt_label']), - dict(type='Collect', keys=['img', 'gt_label']) -] -test_pipeline = [ - dict(type='LoadImageFromFile'), - dict(type='Resize', size=(256, -1)), - dict(type='CenterCrop', crop_size=224), - dict(type='Normalize', **img_norm_cfg), - dict(type='ImageToTensor', keys=['img']), - dict(type='Collect', keys=['img']) -] -data = dict( - samples_per_gpu=32, - workers_per_gpu=2, - train=dict( - type=dataset_type, - data_prefix='data/imagenet/train', - pipeline=train_pipeline), - val=dict( - type=dataset_type, - data_prefix='data/imagenet/val', - ann_file='data/imagenet/meta/val.txt', - pipeline=test_pipeline), - test=dict( - # replace `data/val` with `data/test` for standard test - type=dataset_type, - data_prefix='data/imagenet/val', - ann_file='data/imagenet/meta/val.txt', - pipeline=test_pipeline)) -evaluation = dict(interval=1, metric='accuracy') diff --git a/openmmlab_test/mmclassification-speed-benchmark/configs/regnet/regnetx_800mf_b32x8_imagenet.py b/openmmlab_test/mmclassification-speed-benchmark/configs/regnet/regnetx_800mf_b32x8_imagenet.py deleted file mode 100644 index 3db65b36..00000000 --- a/openmmlab_test/mmclassification-speed-benchmark/configs/regnet/regnetx_800mf_b32x8_imagenet.py +++ /dev/null @@ -1,51 +0,0 @@ -_base_ = [ - '../_base_/models/regnet/regnetx_800mf.py', - '../_base_/datasets/imagenet_bs32.py', - '../_base_/schedules/imagenet_bs256.py', '../_base_/default_runtime.py' -] - -# dataset settings -dataset_type = 'ImageNet' - -img_norm_cfg = dict( - # The mean and std are used in PyCls when training RegNets - mean=[103.53, 116.28, 123.675], - std=[57.375, 57.12, 58.395], - to_rgb=False) - -train_pipeline = [ - dict(type='LoadImageFromFile'), - dict(type='RandomResizedCrop', size=224), - dict(type='RandomFlip', flip_prob=0.5, direction='horizontal'), - dict(type='Normalize', **img_norm_cfg), - dict(type='ImageToTensor', keys=['img']), - dict(type='ToTensor', keys=['gt_label']), - dict(type='Collect', keys=['img', 'gt_label']) -] -test_pipeline = [ - dict(type='LoadImageFromFile'), - dict(type='Resize', size=(256, -1)), - dict(type='CenterCrop', crop_size=224), - dict(type='Normalize', **img_norm_cfg), - dict(type='ImageToTensor', keys=['img']), - dict(type='Collect', keys=['img']) -] -data = dict( - samples_per_gpu=32, - workers_per_gpu=2, - train=dict( - type=dataset_type, - data_prefix='data/imagenet/train', - pipeline=train_pipeline), - val=dict( - type=dataset_type, - data_prefix='data/imagenet/val', - ann_file='data/imagenet/meta/val.txt', - pipeline=test_pipeline), - test=dict( - # replace `data/val` with `data/test` for standard test - type=dataset_type, - data_prefix='data/imagenet/val', - ann_file='data/imagenet/meta/val.txt', - pipeline=test_pipeline)) -evaluation = dict(interval=1, metric='accuracy') diff --git a/openmmlab_test/mmclassification-speed-benchmark/configs/resnet/README.md b/openmmlab_test/mmclassification-speed-benchmark/configs/resnet/README.md deleted file mode 100644 index dbd7b365..00000000 --- a/openmmlab_test/mmclassification-speed-benchmark/configs/resnet/README.md +++ /dev/null @@ -1,46 +0,0 @@ -# Deep Residual Learning for Image Recognition - -## Introduction - - - -```latex -@inproceedings{he2016deep, - title={Deep residual learning for image recognition}, - author={He, Kaiming and Zhang, Xiangyu and Ren, Shaoqing and Sun, Jian}, - booktitle={Proceedings of the IEEE conference on computer vision and pattern recognition}, - pages={770--778}, - year={2016} -} -``` - -## Results and models - -## Cifar10 - -| Model | Params(M) | Flops(G) | Top-1 (%) | Top-5 (%) | Config | Download | -|:---------------------:|:---------:|:--------:|:---------:|:---------:|:---------:|:--------:| -| ResNet-18-b16x8 | 11.17 | 0.56 | 94.82 | | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/resnet/resnet18_b16x8_cifar10.py) | [model](https://download.openmmlab.com/mmclassification/v0/resnet/resnet18_b16x8_cifar10_20210528-bd6371c8.pth) | [log](https://download.openmmlab.com/mmclassification/v0/resnet/resnet18_b16x8_cifar10_20210528-bd6371c8.log.json) | -| ResNet-34-b16x8 | 21.28 | 1.16 | 95.34 | | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/resnet/resnet34_b16x8_cifar10.py) | [model](https://download.openmmlab.com/mmclassification/v0/resnet/resnet34_b16x8_cifar10_20210528-a8aa36a6.pth) | [log](https://download.openmmlab.com/mmclassification/v0/resnet/resnet34_b16x8_cifar10_20210528-a8aa36a6.log.json) | -| ResNet-50-b16x8 | 23.52 | 1.31 | 95.55 | | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/resnet/resnet50_b16x8_cifar10.py) | [model](https://download.openmmlab.com/mmclassification/v0/resnet/resnet50_b16x8_cifar10_20210528-f54bfad9.pth) | [log](https://download.openmmlab.com/mmclassification/v0/resnet/resnet50_b16x8_cifar10_20210528-f54bfad9.log.json) | -| ResNet-101-b16x8 | 42.51 | 2.52 | 95.58 | | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/resnet/resnet101_b16x8_cifar10.py) | [model](https://download.openmmlab.com/mmclassification/v0/resnet/resnet101_b16x8_cifar10_20210528-2d29e936.pth) | [log](https://download.openmmlab.com/mmclassification/v0/resnet/resnet101_b16x8_cifar10_20210528-2d29e936.log.json) | -| ResNet-152-b16x8 | 58.16 | 3.74 | 95.76 | | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/resnet/resnet152_b16x8_cifar10.py) | [model](https://download.openmmlab.com/mmclassification/v0/resnet/resnet152_b16x8_cifar10_20210528-3e8e9178.pth) | [log](https://download.openmmlab.com/mmclassification/v0/resnet/resnet152_b16x8_cifar10_20210528-3e8e9178.log.json) | - -## Cifar100 - -| Model | Params(M) | Flops(G) | Top-1 (%) | Top-5 (%) | Config | Download | -|:---------------------:|:---------:|:--------:|:---------:|:---------:|:---------:|:--------:| -| ResNet-50-b16x8 | 23.71 | 1.31 | 79.9 | 95.19 | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/resnet/resnet50_b16x8_cifar100.py) | [model](https://download.openmmlab.com/mmclassification/v0/resnet/resnet50_b16x8_cifar100_20210528-67b58a1b.pth) | [log](https://download.openmmlab.com/mmclassification/v0/resnet/resnet50_b16x8_cifar100_20210528-67b58a1b.log.json) | - -### ImageNet - -| Model | Params(M) | Flops(G) | Top-1 (%) | Top-5 (%) | Config | Download | -|:---------------------:|:---------:|:--------:|:---------:|:---------:|:---------:|:--------:| -| ResNet-18 | 11.69 | 1.82 | 70.07 | 89.44 | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/resnet/resnet18_b32x8_imagenet.py) | [model](https://download.openmmlab.com/mmclassification/v0/resnet/resnet18_batch256_imagenet_20200708-34ab8f90.pth) | [log](https://download.openmmlab.com/mmclassification/v0/resnet/resnet18_batch256_imagenet_20200708-34ab8f90.log.json) | -| ResNet-34 | 21.8 | 3.68 | 73.85 | 91.53 | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/resnet/resnet34_b32x8_imagenet.py) | [model](https://download.openmmlab.com/mmclassification/v0/resnet/resnet34_batch256_imagenet_20200708-32ffb4f7.pth) | [log](https://download.openmmlab.com/mmclassification/v0/resnet/resnet34_batch256_imagenet_20200708-32ffb4f7.log.json) | -| ResNet-50 | 25.56 | 4.12 | 76.55 | 93.15 | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/resnet/resnet50_b32x8_imagenet.py) | [model](https://download.openmmlab.com/mmclassification/v0/resnet/resnet50_batch256_imagenet_20200708-cfb998bf.pth) | [log](https://download.openmmlab.com/mmclassification/v0/resnet/resnet50_batch256_imagenet_20200708-cfb998bf.log.json) | -| ResNet-101 | 44.55 | 7.85 | 78.18 | 94.03 | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/resnet/resnet101_b32x8_imagenet.py) | [model](https://download.openmmlab.com/mmclassification/v0/resnet/resnet101_batch256_imagenet_20200708-753f3608.pth) | [log](https://download.openmmlab.com/mmclassification/v0/resnet/resnet101_batch256_imagenet_20200708-753f3608.log.json) | -| ResNet-152 | 60.19 | 11.58 | 78.63 | 94.16 | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/resnet/resnet152_b32x8_imagenet.py) | [model](https://download.openmmlab.com/mmclassification/v0/resnet/resnet152_batch256_imagenet_20200708-ec25b1f9.pth) | [log](https://download.openmmlab.com/mmclassification/v0/resnet/resnet152_batch256_imagenet_20200708-ec25b1f9.log.json) | -| ResNetV1D-50 | 25.58 | 4.36 | 77.54 | 93.57 | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/resnet/resnetv1d50_b32x8_imagenet.py) | [model](https://download.openmmlab.com/mmclassification/v0/resnet/resnetv1d50_b32x8_imagenet_20210531-db14775a.pth) | [log](https://download.openmmlab.com/mmclassification/v0/resnet/resnetv1d50_b32x8_imagenet_20210531-db14775a.log.json) | -| ResNetV1D-101 | 44.57 | 8.09 | 78.93 | 94.48 | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/resnet/resnetv1d101_b32x8_imagenet.py) | [model](https://download.openmmlab.com/mmclassification/v0/resnet/resnetv1d101_b32x8_imagenet_20210531-6e13bcd3.pth) | [log](https://download.openmmlab.com/mmclassification/v0/resnet/resnetv1d101_b32x8_imagenet_20210531-6e13bcd3.log.json) | -| ResNetV1D-152 | 60.21 | 11.82 | 79.41 | 94.7 | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/resnet/resnetv1d152_b32x8_imagenet.py) | [model](https://download.openmmlab.com/mmclassification/v0/resnet/resnetv1d152_b32x8_imagenet_20210531-278cf22a.pth) | [log](https://download.openmmlab.com/mmclassification/v0/resnet/resnetv1d152_b32x8_imagenet_20210531-278cf22a.log.json) | diff --git a/openmmlab_test/mmclassification-speed-benchmark/configs/resnet/metafile.yml b/openmmlab_test/mmclassification-speed-benchmark/configs/resnet/metafile.yml deleted file mode 100644 index 9923b6aa..00000000 --- a/openmmlab_test/mmclassification-speed-benchmark/configs/resnet/metafile.yml +++ /dev/null @@ -1,217 +0,0 @@ -Collections: - - Name: ResNet - Metadata: - Training Data: ImageNet - Training Techniques: - - SGD with Momentum - - Weight Decay - Training Resources: 8x V100 GPUs - Epochs: 100 - Batch Size: 256 - Architecture: - - ResNet - Paper: https://openaccess.thecvf.com/content_cvpr_2016/html/He_Deep_Residual_Learning_CVPR_2016_paper.html - README: configs/resnet/README.md - -Models: -- Config: configs/resnet/resnet18_b16x8_cifar10.py - In Collection: ResNet - Metadata: - FLOPs: 560000000 - Parameters: 11170000 - Training Data: CIFAR-10 - Training Resources: 8x 1080 GPUs - Epochs: 200 - Batch Size: 128 - Name: resnet18_b16x8_cifar10 - Results: - - Dataset: CIFAR-10 - Metrics: - Top 1 Accuracy: 94.72 - Task: Image Classification - Weights: https://download.openmmlab.com/mmclassification/v0/resnet/resnet18_b16x8_cifar10_20200823-f906fa4e.pth -- Config: configs/resnet/resnet34_b16x8_cifar10.py - In Collection: ResNet - Metadata: - FLOPs: 1160000000 - Parameters: 21280000 - Training Data: CIFAR-10 - Training Resources: 8x 1080 GPUs - Epochs: 200 - Batch Size: 128 - Name: resnet34_b16x8_cifar10 - Results: - - Dataset: CIFAR-10 - Metrics: - Top 1 Accuracy: 95.34 - Task: Image Classification - Weights: https://download.openmmlab.com/mmclassification/v0/resnet/resnet34_b16x8_cifar10_20200823-52d5d832.pth -- Config: configs/resnet/resnet50_b16x8_cifar10.py - In Collection: ResNet - Metadata: - FLOPs: 1310000000 - Parameters: 23520000 - Training Data: CIFAR-10 - Training Resources: 8x 1080 GPUs - Epochs: 200 - Batch Size: 128 - Name: resnet50_b16x8_cifar10 - Results: - - Dataset: CIFAR-10 - Metrics: - Top 1 Accuracy: 95.36 - Task: Image Classification - Weights: https://download.openmmlab.com/mmclassification/v0/resnet/resnet50_b16x8_cifar10_20200823-882aa7b1.pth -- Config: configs/resnet/resnet101_b16x8_cifar10.py - In Collection: ResNet - Metadata: - FLOPs: 2520000000 - Parameters: 42510000 - Training Data: CIFAR-10 - Training Resources: 8x 1080 GPUs - Epochs: 200 - Batch Size: 128 - Name: resnet101_b16x8_cifar10 - Results: - - Dataset: CIFAR-10 - Metrics: - Top 1 Accuracy: 95.66 - Task: Image Classification - Weights: https://download.openmmlab.com/mmclassification/v0/resnet/resnet101_b16x8_cifar10_20200823-d9501bbc.pth -- Config: configs/resnet/resnet152_b16x8_cifar10.py - In Collection: ResNet - Metadata: - FLOPs: 3740000000 - Parameters: 58160000 - Training Data: CIFAR-10 - Training Resources: 8x 1080 GPUs - Epochs: 200 - Batch Size: 128 - Name: resnet152_b16x8_cifar10 - Results: - - Dataset: CIFAR-10 - Metrics: - Top 1 Accuracy: 95.96 - Task: Image Classification - Weights: https://download.openmmlab.com/mmclassification/v0/resnet/resnet152_b16x8_cifar10_20200823-ad4d5d0c.pth -- Config: configs/resnet/resnet50_b16x8_cifar100.py - In Collection: ResNet - Metadata: - FLOPs: 1310000000 - Parameters: 23710000 - Training Data: CIFAR-100 - Training Resources: 8x 1080 GPUs - Epochs: 200 - Batch Size: 128 - Name: resnet50_b16x8_cifar100 - Results: - - Dataset: CIFAR-100 - Metrics: - Top 1 Accuracy: 80.51 - Top 5 Accuracy: 95.27 - Task: Image Classification - Weights: https://download.openmmlab.com/mmclassification/v0/resnet/resnet50_batch256_cifar100_20210410-37f13c16.pth -- Config: configs/resnet/resnet18_b32x8_imagenet.py - In Collection: ResNet - Metadata: - FLOPs: 1820000000 - Parameters: 11690000 - Name: resnet18_b32x8_imagenet - Results: - - Dataset: ImageNet - Metrics: - Top 1 Accuracy: 70.07 - Top 5 Accuracy: 89.44 - Task: Image Classification - Weights: https://download.openmmlab.com/mmclassification/v0/resnet/resnet18_batch256_imagenet_20200708-34ab8f90.pth -- Config: configs/resnet/resnet34_b32x8_imagenet.py - In Collection: ResNet - Metadata: - FLOPs: 3680000000 - Parameters: 2180000 - Name: resnet34_b32x8_imagenet - Results: - - Dataset: ImageNet - Metrics: - Top 1 Accuracy: 73.85 - Top 5 Accuracy: 91.53 - Task: Image Classification - Weights: https://download.openmmlab.com/mmclassification/v0/resnet/resnet34_batch256_imagenet_20200708-32ffb4f7.pth -- Config: configs/resnet/resnet50_b32x8_imagenet.py - In Collection: ResNet - Metadata: - FLOPs: 4120000000 - Parameters: 25560000 - Name: resnet50_b32x8_imagenet - Results: - - Dataset: ImageNet - Metrics: - Top 1 Accuracy: 76.55 - Top 5 Accuracy: 93.15 - Task: Image Classification - Weights: https://download.openmmlab.com/mmclassification/v0/resnet/resnet50_batch256_imagenet_20200708-cfb998bf.pth -- Config: configs/resnet/resnet101_b32x8_imagenet.py - In Collection: ResNet - Metadata: - FLOPs: 7850000000 - Parameters: 44550000 - Name: resnet101_b32x8_imagenet - Results: - - Dataset: ImageNet - Metrics: - Top 1 Accuracy: 78.18 - Top 5 Accuracy: 94.03 - Task: Image Classification - Weights: https://download.openmmlab.com/mmclassification/v0/resnet/resnet101_batch256_imagenet_20200708-753f3608.pth -- Config: configs/resnet/resnet152_b32x8_imagenet.py - In Collection: ResNet - Metadata: - FLOPs: 11580000000 - Parameters: 60190000 - Name: resnet152_b32x8_imagenet - Results: - - Dataset: ImageNet - Metrics: - Top 1 Accuracy: 78.63 - Top 5 Accuracy: 94.16 - Task: Image Classification - Weights: https://download.openmmlab.com/mmclassification/v0/resnet/resnet152_batch256_imagenet_20200708-ec25b1f9.pth -- Config: configs/resnet/resnetv1d50_b32x8_imagenet.py - In Collection: ResNet - Metadata: - FLOPs: 4360000000 - Parameters: 25580000 - Name: resnetv1d50_b32x8_imagenet - Results: - - Dataset: ImageNet - Metrics: - Top 1 Accuracy: 77.4 - Top 5 Accuracy: 93.66 - Task: Image Classification - Weights: https://download.openmmlab.com/mmclassification/v0/resnet/resnetv1d50_batch256_imagenet_20200708-1ad0ce94.pth -- Config: configs/resnet/resnetv1d101_b32x8_imagenet.py - In Collection: ResNet - Metadata: - FLOPs: 8090000000 - Parameters: 44570000 - Name: resnetv1d101_b32x8_imagenet - Results: - - Dataset: ImageNet - Metrics: - Top 1 Accuracy: 78.85 - Top 5 Accuracy: 94.38 - Task: Image Classification - Weights: https://download.openmmlab.com/mmclassification/v0/resnet/resnetv1d101_batch256_imagenet_20200708-9cb302ef.pth -- Config: configs/resnet/resnetv1d152_b32x8_imagenet.py - In Collection: ResNet - Metadata: - FLOPs: 11820000000 - Parameters: 60210000 - Name: resnetv1d152_b32x8_imagenet - Results: - - Dataset: ImageNet - Metrics: - Top 1 Accuracy: 79.35 - Top 5 Accuracy: 94.61 - Task: Image Classification - Weights: https://download.openmmlab.com/mmclassification/v0/resnet/resnetv1d152_batch256_imagenet_20200708-e79cb6a2.pth diff --git a/openmmlab_test/mmclassification-speed-benchmark/configs/resnet/resnet50_b32x8_imagenet.py b/openmmlab_test/mmclassification-speed-benchmark/configs/resnet/resnet50_b32x8_imagenet.py deleted file mode 100644 index c32f333b..00000000 --- a/openmmlab_test/mmclassification-speed-benchmark/configs/resnet/resnet50_b32x8_imagenet.py +++ /dev/null @@ -1,4 +0,0 @@ -_base_ = [ - '../_base_/models/resnet50.py', '../_base_/datasets/imagenet_bs32.py', - '../_base_/schedules/imagenet_bs256.py', '../_base_/default_runtime.py' -] diff --git a/openmmlab_test/mmclassification-speed-benchmark/configs/resnet/resnet50_b64x32_warmup_label_smooth_imagenet.py b/openmmlab_test/mmclassification-speed-benchmark/configs/resnet/resnet50_b64x32_warmup_label_smooth_imagenet.py deleted file mode 100644 index 29a07be8..00000000 --- a/openmmlab_test/mmclassification-speed-benchmark/configs/resnet/resnet50_b64x32_warmup_label_smooth_imagenet.py +++ /dev/null @@ -1,12 +0,0 @@ -_base_ = ['./resnet50_batch2048_warmup.py'] -model = dict( - head=dict( - type='LinearClsHead', - num_classes=1000, - in_channels=2048, - loss=dict( - type='LabelSmoothLoss', - loss_weight=1.0, - label_smooth_val=0.1, - num_classes=1000), - )) diff --git a/openmmlab_test/mmclassification-speed-benchmark/configs/resnext/README.md b/openmmlab_test/mmclassification-speed-benchmark/configs/resnext/README.md deleted file mode 100644 index 69c12952..00000000 --- a/openmmlab_test/mmclassification-speed-benchmark/configs/resnext/README.md +++ /dev/null @@ -1,26 +0,0 @@ -# Aggregated Residual Transformations for Deep Neural Networks - -## Introduction - - - -```latex -@inproceedings{xie2017aggregated, - title={Aggregated residual transformations for deep neural networks}, - author={Xie, Saining and Girshick, Ross and Doll{\'a}r, Piotr and Tu, Zhuowen and He, Kaiming}, - booktitle={Proceedings of the IEEE conference on computer vision and pattern recognition}, - pages={1492--1500}, - year={2017} -} -``` - -## Results and models - -### ImageNet - -| Model | Params(M) | Flops(G) | Top-1 (%) | Top-5 (%) | Config | Download | -|:---------------------:|:---------:|:--------:|:---------:|:---------:|:---------:|:--------:| -| ResNeXt-32x4d-50 | 25.03 | 4.27 | 77.90 | 93.66 | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/resnext/resnext50_32x4d_b32x8_imagenet.py) | [model](https://download.openmmlab.com/mmclassification/v0/resnext/resnext50_32x4d_b32x8_imagenet_20210429-56066e27.pth) | [log](https://download.openmmlab.com/mmclassification/v0/resnext/resnext50_32x4d_b32x8_imagenet_20210429-56066e27.log.json) | -| ResNeXt-32x4d-101 | 44.18 | 8.03 | 78.71 | 94.12 | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/resnext/resnext101_32x4d_b32x8_imagenet.py) | [model](https://download.openmmlab.com/mmclassification/v0/resnext/resnext101_32x4d_b32x8_imagenet_20210506-e0fa3dd5.pth) | [log](https://download.openmmlab.com/mmclassification/v0/resnext/resnext101_32x4d_b32x8_imagenet_20210506-e0fa3dd5.log.json) | -| ResNeXt-32x8d-101 | 88.79 | 16.5 | 79.23 | 94.58 | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/resnext/resnext101_32x8d_b32x8_imagenet.py) | [model](https://download.openmmlab.com/mmclassification/v0/resnext/resnext101_32x8d_b32x8_imagenet_20210506-23a247d5.pth) | [log](https://download.openmmlab.com/mmclassification/v0/resnext/resnext101_32x8d_b32x8_imagenet_20210506-23a247d5.log.json) | -| ResNeXt-32x4d-152 | 59.95 | 11.8 | 78.93 | 94.41 | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/resnext/resnext152_32x4d_b32x8_imagenet.py) | [model](https://download.openmmlab.com/mmclassification/v0/resnext/resnext152_32x4d_b32x8_imagenet_20210524-927787be.pth) | [log](https://download.openmmlab.com/mmclassification/v0/resnext/resnext152_32x4d_b32x8_imagenet_20210524-927787be.log.json) | diff --git a/openmmlab_test/mmclassification-speed-benchmark/configs/resnext/metafile.yml b/openmmlab_test/mmclassification-speed-benchmark/configs/resnext/metafile.yml deleted file mode 100644 index 38a45c1c..00000000 --- a/openmmlab_test/mmclassification-speed-benchmark/configs/resnext/metafile.yml +++ /dev/null @@ -1,68 +0,0 @@ -Collections: - - Name: ResNeXt - Metadata: - Training Data: ImageNet - Training Techniques: - - SGD with Momentum - - Weight Decay - Training Resources: 8x V100 GPUs - Epochs: 100 - Batch Size: 256 - Architecture: - - ResNeXt - Paper: https://openaccess.thecvf.com/content_cvpr_2017/html/Xie_Aggregated_Residual_Transformations_CVPR_2017_paper.html - README: configs/resnext/README.md - -Models: -- Config: configs/resnext/resnext50_32x4d_b32x8_imagenet.py - In Collection: ResNeXt - Metadata: - FLOPs: 4270000000 - Parameters: 25030000 - Name: resnext50_32x4d_b32x8_imagenet - Results: - - Dataset: ImageNet - Metrics: - Top 1 Accuracy: 77.92 - Top 5 Accuracy: 93.74 - Task: Image Classification - Weights: https://download.openmmlab.com/mmclassification/v0/resnext/resnext50_32x4d_batch256_imagenet_20200708-c07adbb7.pth -- Config: configs/resnext/resnext101_32x4d_b32x8_imagenet.py - In Collection: ResNeXt - Metadata: - FLOPs: 8030000000 - Parameters: 44180000 - Name: resnext101_32x4d_b32x8_imagenet - Results: - - Dataset: ImageNet - Metrics: - Top 1 Accuracy: 78.7 - Top 5 Accuracy: 94.34 - Task: Image Classification - Weights: https://download.openmmlab.com/mmclassification/v0/resnext/resnext101_32x4d_batch256_imagenet_20200708-87f2d1c9.pth -- Config: configs/resnext/resnext101_32x8d_b32x8_imagenet.py - In Collection: ResNeXt - Metadata: - FLOPs: 16500000000 - Parameters: 88790000 - Name: resnext101_32x8d_b32x8_imagenet - Results: - - Dataset: ImageNet - Metrics: - Top 1 Accuracy: 79.22 - Top 5 Accuracy: 94.52 - Task: Image Classification - Weights: https://download.openmmlab.com/mmclassification/v0/resnext/resnext101_32x8d_batch256_imagenet_20200708-1ec34aa7.pth -- Config: configs/resnext/resnext152_32x4d_b32x8_imagenet.py - In Collection: ResNeXt - Metadata: - FLOPs: 11800000000 - Parameters: 59950000 - Name: resnext152_32x4d_b32x8_imagenet - Results: - - Dataset: ImageNet - Metrics: - Top 1 Accuracy: 79.06 - Top 5 Accuracy: 94.47 - Task: Image Classification - Weights: https://download.openmmlab.com/mmclassification/v0/resnext/resnext152_32x4d_batch256_imagenet_20200708-aab5034c.pth diff --git a/openmmlab_test/mmclassification-speed-benchmark/configs/seresnet/README.md b/openmmlab_test/mmclassification-speed-benchmark/configs/seresnet/README.md deleted file mode 100644 index 11a18dfb..00000000 --- a/openmmlab_test/mmclassification-speed-benchmark/configs/seresnet/README.md +++ /dev/null @@ -1,24 +0,0 @@ -# Squeeze-and-Excitation Networks - -## Introduction - - - -```latex -@inproceedings{hu2018squeeze, - title={Squeeze-and-excitation networks}, - author={Hu, Jie and Shen, Li and Sun, Gang}, - booktitle={Proceedings of the IEEE conference on computer vision and pattern recognition}, - pages={7132--7141}, - year={2018} -} -``` - -## Results and models - -### ImageNet - -| Model | Params(M) | Flops(G) | Top-1 (%) | Top-5 (%) | Config | Download | -|:---------------------:|:---------:|:--------:|:---------:|:---------:|:---------:|:--------:| -| SE-ResNet-50 | 28.09 | 4.13 | 77.74 | 93.84 | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/seresnet50/seresnet50_b32x8_imagenet.py) | [model](https://download.openmmlab.com/mmclassification/v0/se-resnet/se-resnet50_batch256_imagenet_20200804-ae206104.pth) | [log](https://download.openmmlab.com/mmclassification/v0/se-resnet/se-resnet50_batch256_imagenet_20200708-657b3c36.log.json) | -| SE-ResNet-101 | 49.33 | 7.86 | 78.26 | 94.07 | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/seresnet101/seresnet101_b32x8_imagenet.py) | [model](https://download.openmmlab.com/mmclassification/v0/se-resnet/se-resnet101_batch256_imagenet_20200804-ba5b51d4.pth) | [log](https://download.openmmlab.com/mmclassification/v0/se-resnet/se-resnet101_batch256_imagenet_20200708-038a4d04.log.json) | diff --git a/openmmlab_test/mmclassification-speed-benchmark/configs/seresnet/metafile.yml b/openmmlab_test/mmclassification-speed-benchmark/configs/seresnet/metafile.yml deleted file mode 100644 index 0019850e..00000000 --- a/openmmlab_test/mmclassification-speed-benchmark/configs/seresnet/metafile.yml +++ /dev/null @@ -1,42 +0,0 @@ -Collections: - - Name: SEResNet - Metadata: - Training Data: ImageNet - Training Techniques: - - SGD with Momentum - - Weight Decay - Training Resources: 8x V100 GPUs - Epochs: 140 - Batch Size: 256 - Architecture: - - ResNet - Paper: https://openaccess.thecvf.com/content_cvpr_2018/html/Hu_Squeeze-and-Excitation_Networks_CVPR_2018_paper.html - README: configs/seresnet/README.md - -Models: -- Config: configs/seresnet50/seresnet50_b32x8_imagenet.py - In Collection: SEResNet - Metadata: - FLOPs: 4130000000 - Parameters: 28090000 - Name: seresnet50_b32x8_imagenet - Results: - - Dataset: ImageNet - Metrics: - Top 1 Accuracy: 77.74 - Top 5 Accuracy: 93.84 - Task: Image Classification - Weights: https://download.openmmlab.com/mmclassification/v0/se-resnet/se-resnet50_batch256_imagenet_20200804-ae206104.pth -- Config: configs/seresnet101/seresnet101_b32x8_imagenet.py - In Collection: SEResNet - Metadata: - FLOPs: 7860000000 - Parameters: 49330000 - Name: seresnet101_b32x8_imagenet - Results: - - Dataset: ImageNet - Metrics: - Top 1 Accuracy: 78.26 - Top 5 Accuracy: 94.07 - Task: Image Classification - Weights: https://download.openmmlab.com/mmclassification/v0/se-resnet/se-resnet101_batch256_imagenet_20200804-ba5b51d4.pth diff --git a/openmmlab_test/mmclassification-speed-benchmark/configs/seresnext/README.md b/openmmlab_test/mmclassification-speed-benchmark/configs/seresnext/README.md deleted file mode 100644 index 8dc45fc9..00000000 --- a/openmmlab_test/mmclassification-speed-benchmark/configs/seresnext/README.md +++ /dev/null @@ -1,15 +0,0 @@ -# Squeeze-and-Excitation Networks - -## Introduction - - - -```latex -@inproceedings{hu2018squeeze, - title={Squeeze-and-excitation networks}, - author={Hu, Jie and Shen, Li and Sun, Gang}, - booktitle={Proceedings of the IEEE conference on computer vision and pattern recognition}, - pages={7132--7141}, - year={2018} -} -``` diff --git a/openmmlab_test/mmclassification-speed-benchmark/configs/shufflenet_v1/README.md b/openmmlab_test/mmclassification-speed-benchmark/configs/shufflenet_v1/README.md deleted file mode 100644 index a5314184..00000000 --- a/openmmlab_test/mmclassification-speed-benchmark/configs/shufflenet_v1/README.md +++ /dev/null @@ -1,23 +0,0 @@ -# ShuffleNet: An Extremely Efficient Convolutional Neural Network for Mobile Devices - -## Introduction - - - -```latex -@inproceedings{zhang2018shufflenet, - title={Shufflenet: An extremely efficient convolutional neural network for mobile devices}, - author={Zhang, Xiangyu and Zhou, Xinyu and Lin, Mengxiao and Sun, Jian}, - booktitle={Proceedings of the IEEE conference on computer vision and pattern recognition}, - pages={6848--6856}, - year={2018} -} -``` - -## Results and models - -### ImageNet - -| Model | Params(M) | Flops(G) | Top-1 (%) | Top-5 (%) | Config | Download | -|:---------------------:|:---------:|:--------:|:---------:|:---------:|:---------:|:--------:| -| ShuffleNetV1 1.0x (group=3) | 1.87 | 0.146 | 68.13 | 87.81 | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/shufflenet_v1/shufflenet_v1_1x_b64x16_linearlr_bn_nowd_imagenet.py) | [model](https://download.openmmlab.com/mmclassification/v0/shufflenet_v1/shufflenet_v1_batch1024_imagenet_20200804-5d6cec73.pth) | [log](https://download.openmmlab.com/mmclassification/v0/shufflenet_v1/shufflenet_v1_batch1024_imagenet_20200804-5d6cec73.log.json) | diff --git a/openmmlab_test/mmclassification-speed-benchmark/configs/shufflenet_v1/metafile.yml b/openmmlab_test/mmclassification-speed-benchmark/configs/shufflenet_v1/metafile.yml deleted file mode 100644 index 8689df71..00000000 --- a/openmmlab_test/mmclassification-speed-benchmark/configs/shufflenet_v1/metafile.yml +++ /dev/null @@ -1,30 +0,0 @@ -Collections: - - Name: Shufflenet V1 - Metadata: - Training Data: ImageNet - Training Techniques: - - SGD with Momentum - - Weight Decay - - No BN decay - Training Resources: 8x 1080 GPUs - Epochs: 300 - Batch Size: 1024 - Architecture: - - Shufflenet V1 - Paper: https://openaccess.thecvf.com/content_cvpr_2018/html/Zhang_ShuffleNet_An_Extremely_CVPR_2018_paper.html - README: configs/shufflenet_v1/README.md - -Models: -- Config: configs/shufflenet_v1/shufflenet_v1_1x_b64x16_linearlr_bn_nowd_imagenet.py - In Collection: Shufflenet V1 - Metadata: - FLOPs: 146000000 - Parameters: 1870000 - Name: shufflenet_v1_1x_b64x16_linearlr_bn_nowd_imagenet - Results: - - Dataset: ImageNet - Metrics: - Top 1 Accuracy: 68.13 - Top 5 Accuracy: 87.81 - Task: Image Classification - Weights: https://download.openmmlab.com/mmclassification/v0/shufflenet_v1/shufflenet_v1_batch1024_imagenet_20200804-5d6cec73.pth diff --git a/openmmlab_test/mmclassification-speed-benchmark/configs/shufflenet_v2/README.md b/openmmlab_test/mmclassification-speed-benchmark/configs/shufflenet_v2/README.md deleted file mode 100644 index d1645fc7..00000000 --- a/openmmlab_test/mmclassification-speed-benchmark/configs/shufflenet_v2/README.md +++ /dev/null @@ -1,23 +0,0 @@ -# Shufflenet v2: Practical guidelines for efficient cnn architecture design - -## Introduction - - - -```latex -@inproceedings{ma2018shufflenet, - title={Shufflenet v2: Practical guidelines for efficient cnn architecture design}, - author={Ma, Ningning and Zhang, Xiangyu and Zheng, Hai-Tao and Sun, Jian}, - booktitle={Proceedings of the European conference on computer vision (ECCV)}, - pages={116--131}, - year={2018} -} -``` - -## Results and models - -### ImageNet - -| Model | Params(M) | Flops(G) | Top-1 (%) | Top-5 (%) | Config | Download | -|:---------------------:|:---------:|:--------:|:---------:|:---------:|:---------:|:--------:| -| ShuffleNetV2 1.0x | 2.28 | 0.149 | 69.55 | 88.92 | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/shufflenet_v2/shufflenet_v2_1x_b64x16_linearlr_bn_nowd_imagenet.py) | [model](https://download.openmmlab.com/mmclassification/v0/shufflenet_v2/shufflenet_v2_batch1024_imagenet_20200812-5bf4721e.pth) | [log](https://download.openmmlab.com/mmclassification/v0/shufflenet_v2/shufflenet_v2_batch1024_imagenet_20200804-8860eec9.log.json) | diff --git a/openmmlab_test/mmclassification-speed-benchmark/configs/shufflenet_v2/metafile.yml b/openmmlab_test/mmclassification-speed-benchmark/configs/shufflenet_v2/metafile.yml deleted file mode 100644 index 84c00149..00000000 --- a/openmmlab_test/mmclassification-speed-benchmark/configs/shufflenet_v2/metafile.yml +++ /dev/null @@ -1,30 +0,0 @@ -Collections: - - Name: Shufflenet V2 - Metadata: - Training Data: ImageNet - Training Techniques: - - SGD with Momentum - - Weight Decay - - No BN decay - Training Resources: 8x 1080 GPUs - Epochs: 300 - Batch Size: 1024 - Architecture: - - Shufflenet V2 - Paper: https://openaccess.thecvf.com/content_ECCV_2018/papers/Ningning_Light-weight_CNN_Architecture_ECCV_2018_paper.pdf - README: configs/shufflenet_v2/README.md - -Models: -- Config: configs/shufflenet_v2/shufflenet_v2_1x_b64x16_linearlr_bn_nowd_imagenet.py - In Collection: Shufflenet V2 - Metadata: - FLOPs: 149000000 - Parameters: 2280000 - Name: shufflenet_v2_1x_b64x16_linearlr_bn_nowd_imagenet - Results: - - Dataset: ImageNet - Metrics: - Top 1 Accuracy: 69.55 - Top 5 Accuracy: 88.92 - Task: Image Classification - Weights: https://download.openmmlab.com/mmclassification/v0/shufflenet_v2/shufflenet_v2_batch1024_imagenet_20200812-5bf4721e.pth diff --git a/openmmlab_test/mmclassification-speed-benchmark/configs/shufflenet_v2/shufflenet_v2_1x_b64x16_linearlr_bn_nowd_imagenet.py b/openmmlab_test/mmclassification-speed-benchmark/configs/shufflenet_v2/shufflenet_v2_1x_b64x16_linearlr_bn_nowd_imagenet.py deleted file mode 100644 index a106ab86..00000000 --- a/openmmlab_test/mmclassification-speed-benchmark/configs/shufflenet_v2/shufflenet_v2_1x_b64x16_linearlr_bn_nowd_imagenet.py +++ /dev/null @@ -1,6 +0,0 @@ -_base_ = [ - '../_base_/models/shufflenet_v2_1x.py', - '../_base_/datasets/imagenet_bs64_pil_resize.py', - '../_base_/schedules/imagenet_bs1024_linearlr_bn_nowd.py', - '../_base_/default_runtime.py' -] diff --git a/openmmlab_test/mmclassification-speed-benchmark/configs/speed_test/AlexNet.py b/openmmlab_test/mmclassification-speed-benchmark/configs/speed_test/AlexNet.py deleted file mode 100644 index ff85012e..00000000 --- a/openmmlab_test/mmclassification-speed-benchmark/configs/speed_test/AlexNet.py +++ /dev/null @@ -1,5 +0,0 @@ -_base_ = [ - '../_base_/models/mobilenet_v2_1x.py', './datasets/imagenet_bs32.py', - '../_base_/schedules/imagenet_bs256_epochstep.py', - '../_base_/default_runtime.py' -] diff --git a/openmmlab_test/mmclassification-speed-benchmark/configs/speed_test/datasets/imagenet_bs32.py b/openmmlab_test/mmclassification-speed-benchmark/configs/speed_test/datasets/imagenet_bs32.py deleted file mode 100644 index 92a6ba78..00000000 --- a/openmmlab_test/mmclassification-speed-benchmark/configs/speed_test/datasets/imagenet_bs32.py +++ /dev/null @@ -1,35 +0,0 @@ -# dataset settings -dataset_type = 'DummyImageNet' -img_norm_cfg = dict( - mean=[123.675, 116.28, 103.53], std=[58.395, 57.12, 57.375], to_rgb=True) -train_pipeline = [ - dict(type='RandomFlip', flip_prob=0.5, direction='horizontal'), - dict(type='Normalize', **img_norm_cfg), - dict(type='ImageToTensor', keys=['img']), - dict(type='ToTensor', keys=['gt_label']), - dict(type='Collect', keys=['img', 'gt_label']) -] -test_pipeline = [ - dict(type='Normalize', **img_norm_cfg), - dict(type='ImageToTensor', keys=['img']), - dict(type='Collect', keys=['img']) -] -data = dict( - samples_per_gpu=128, - workers_per_gpu=2, - train=dict( - type=dataset_type, - data_prefix='data/imagenet/train', - pipeline=train_pipeline), - val=dict( - type=dataset_type, - data_prefix='data/imagenet/val', - ann_file='data/imagenet/meta/val.txt', - pipeline=test_pipeline), - test=dict( - # replace `data/val` with `data/test` for standard test - type=dataset_type, - data_prefix='data/imagenet/val', - ann_file='data/imagenet/meta/val.txt', - pipeline=test_pipeline)) -evaluation = dict(interval=1, metric='accuracy') diff --git a/openmmlab_test/mmclassification-speed-benchmark/configs/speed_test/datasets/imagenet_bs64.py b/openmmlab_test/mmclassification-speed-benchmark/configs/speed_test/datasets/imagenet_bs64.py deleted file mode 100644 index 92a6ba78..00000000 --- a/openmmlab_test/mmclassification-speed-benchmark/configs/speed_test/datasets/imagenet_bs64.py +++ /dev/null @@ -1,35 +0,0 @@ -# dataset settings -dataset_type = 'DummyImageNet' -img_norm_cfg = dict( - mean=[123.675, 116.28, 103.53], std=[58.395, 57.12, 57.375], to_rgb=True) -train_pipeline = [ - dict(type='RandomFlip', flip_prob=0.5, direction='horizontal'), - dict(type='Normalize', **img_norm_cfg), - dict(type='ImageToTensor', keys=['img']), - dict(type='ToTensor', keys=['gt_label']), - dict(type='Collect', keys=['img', 'gt_label']) -] -test_pipeline = [ - dict(type='Normalize', **img_norm_cfg), - dict(type='ImageToTensor', keys=['img']), - dict(type='Collect', keys=['img']) -] -data = dict( - samples_per_gpu=128, - workers_per_gpu=2, - train=dict( - type=dataset_type, - data_prefix='data/imagenet/train', - pipeline=train_pipeline), - val=dict( - type=dataset_type, - data_prefix='data/imagenet/val', - ann_file='data/imagenet/meta/val.txt', - pipeline=test_pipeline), - test=dict( - # replace `data/val` with `data/test` for standard test - type=dataset_type, - data_prefix='data/imagenet/val', - ann_file='data/imagenet/meta/val.txt', - pipeline=test_pipeline)) -evaluation = dict(interval=1, metric='accuracy') diff --git a/openmmlab_test/mmclassification-speed-benchmark/configs/speed_test/mobilenet_v2_b32x8_fp16_imagenet.py b/openmmlab_test/mmclassification-speed-benchmark/configs/speed_test/mobilenet_v2_b32x8_fp16_imagenet.py deleted file mode 100644 index b05076b4..00000000 --- a/openmmlab_test/mmclassification-speed-benchmark/configs/speed_test/mobilenet_v2_b32x8_fp16_imagenet.py +++ /dev/null @@ -1,7 +0,0 @@ -_base_ = [ - '../_base_/models/mobilenet_v2_1x.py', './datasets/imagenet_bs32.py', - '../_base_/schedules/imagenet_bs256_epochstep.py', - '../_base_/default_runtime.py' -] -# fp16 settings -fp16 = dict(loss_scale=512.) \ No newline at end of file diff --git a/openmmlab_test/mmclassification-speed-benchmark/configs/speed_test/mobilenet_v2_b32x8_imagenet.py b/openmmlab_test/mmclassification-speed-benchmark/configs/speed_test/mobilenet_v2_b32x8_imagenet.py deleted file mode 100644 index ff85012e..00000000 --- a/openmmlab_test/mmclassification-speed-benchmark/configs/speed_test/mobilenet_v2_b32x8_imagenet.py +++ /dev/null @@ -1,5 +0,0 @@ -_base_ = [ - '../_base_/models/mobilenet_v2_1x.py', './datasets/imagenet_bs32.py', - '../_base_/schedules/imagenet_bs256_epochstep.py', - '../_base_/default_runtime.py' -] diff --git a/openmmlab_test/mmclassification-speed-benchmark/configs/speed_test/resnet152_b32x8_fp16_imagenet.py b/openmmlab_test/mmclassification-speed-benchmark/configs/speed_test/resnet152_b32x8_fp16_imagenet.py deleted file mode 100644 index d9adc6a4..00000000 --- a/openmmlab_test/mmclassification-speed-benchmark/configs/speed_test/resnet152_b32x8_fp16_imagenet.py +++ /dev/null @@ -1,6 +0,0 @@ -_base_ = [ - '../_base_/models/resnet152.py', './datasets/imagenet_bs32.py', - '../_base_/schedules/imagenet_bs256.py', '../_base_/default_runtime.py' -] -# fp16 settings -fp16 = dict(loss_scale=512.) \ No newline at end of file diff --git a/openmmlab_test/mmclassification-speed-benchmark/configs/speed_test/resnet152_b32x8_imagenet.py b/openmmlab_test/mmclassification-speed-benchmark/configs/speed_test/resnet152_b32x8_imagenet.py deleted file mode 100644 index 270bad91..00000000 --- a/openmmlab_test/mmclassification-speed-benchmark/configs/speed_test/resnet152_b32x8_imagenet.py +++ /dev/null @@ -1,4 +0,0 @@ -_base_ = [ - '../_base_/models/resnet152.py', './datasets/imagenet_bs32.py', - '../_base_/schedules/imagenet_bs256.py', '../_base_/default_runtime.py' -] diff --git a/openmmlab_test/mmclassification-speed-benchmark/configs/speed_test/resnet18_b32x8_fp16_imagenet.py b/openmmlab_test/mmclassification-speed-benchmark/configs/speed_test/resnet18_b32x8_fp16_imagenet.py deleted file mode 100644 index 91b7de86..00000000 --- a/openmmlab_test/mmclassification-speed-benchmark/configs/speed_test/resnet18_b32x8_fp16_imagenet.py +++ /dev/null @@ -1,6 +0,0 @@ -_base_ = [ - '../_base_/models/resnet18.py', './datasets/imagenet_bs32.py', - '../_base_/schedules/imagenet_bs256.py', '../_base_/default_runtime.py' -] -# fp16 settings -fp16 = dict(loss_scale=512.) \ No newline at end of file diff --git a/openmmlab_test/mmclassification-speed-benchmark/configs/speed_test/resnet18_b32x8_imagenet.py b/openmmlab_test/mmclassification-speed-benchmark/configs/speed_test/resnet18_b32x8_imagenet.py deleted file mode 100644 index 3244faeb..00000000 --- a/openmmlab_test/mmclassification-speed-benchmark/configs/speed_test/resnet18_b32x8_imagenet.py +++ /dev/null @@ -1,4 +0,0 @@ -_base_ = [ - '../_base_/models/resnet18.py', './datasets/imagenet_bs32.py', - '../_base_/schedules/imagenet_bs256.py', '../_base_/default_runtime.py' -] diff --git a/openmmlab_test/mmclassification-speed-benchmark/configs/speed_test/resnet34_b32x8_fp16_imagenet.py b/openmmlab_test/mmclassification-speed-benchmark/configs/speed_test/resnet34_b32x8_fp16_imagenet.py deleted file mode 100644 index 0a8e8cbd..00000000 --- a/openmmlab_test/mmclassification-speed-benchmark/configs/speed_test/resnet34_b32x8_fp16_imagenet.py +++ /dev/null @@ -1,6 +0,0 @@ -_base_ = [ - '../_base_/models/resnet34.py', './datasets/imagenet_bs32.py', - '../_base_/schedules/imagenet_bs256.py', '../_base_/default_runtime.py' -] -# fp16 settings -fp16 = dict(loss_scale=512.) \ No newline at end of file diff --git a/openmmlab_test/mmclassification-speed-benchmark/configs/speed_test/resnet34_b32x8_imagenet.py b/openmmlab_test/mmclassification-speed-benchmark/configs/speed_test/resnet34_b32x8_imagenet.py deleted file mode 100644 index caac7527..00000000 --- a/openmmlab_test/mmclassification-speed-benchmark/configs/speed_test/resnet34_b32x8_imagenet.py +++ /dev/null @@ -1,4 +0,0 @@ -_base_ = [ - '../_base_/models/resnet34.py', './datasets/imagenet_bs32.py', - '../_base_/schedules/imagenet_bs256.py', '../_base_/default_runtime.py' -] diff --git a/openmmlab_test/mmclassification-speed-benchmark/configs/speed_test/resnet50_b32x8_fp16_imagenet.py b/openmmlab_test/mmclassification-speed-benchmark/configs/speed_test/resnet50_b32x8_fp16_imagenet.py deleted file mode 100644 index 0f0b3dd4..00000000 --- a/openmmlab_test/mmclassification-speed-benchmark/configs/speed_test/resnet50_b32x8_fp16_imagenet.py +++ /dev/null @@ -1,10 +0,0 @@ -#_base_ = ['../resnet/resnet50_b32x8_imagenet.py'] - -_base_ = [ - '../_base_/models/resnet50.py', './datasets/imagenet_bs32.py', - '../_base_/schedules/imagenet_bs256.py', '../_base_/default_runtime.py' - -] -# fp16 settings -fp16 = dict(loss_scale=512.) -#fp16 = dict(loss_scale=dynamic) diff --git a/openmmlab_test/mmclassification-speed-benchmark/configs/speed_test/resnet50_b32x8_imagenet.py b/openmmlab_test/mmclassification-speed-benchmark/configs/speed_test/resnet50_b32x8_imagenet.py deleted file mode 100644 index 0b5f8aff..00000000 --- a/openmmlab_test/mmclassification-speed-benchmark/configs/speed_test/resnet50_b32x8_imagenet.py +++ /dev/null @@ -1,4 +0,0 @@ -_base_ = [ - '../_base_/models/resnet50.py', './datasets/imagenet_bs32.py', - '../_base_/schedules/imagenet_bs256.py', '../_base_/default_runtime.py' -] diff --git a/openmmlab_test/mmclassification-speed-benchmark/configs/speed_test/resnext50_32x4d_b32x8_fp16_imagenet.py b/openmmlab_test/mmclassification-speed-benchmark/configs/speed_test/resnext50_32x4d_b32x8_fp16_imagenet.py deleted file mode 100644 index 7542f2c1..00000000 --- a/openmmlab_test/mmclassification-speed-benchmark/configs/speed_test/resnext50_32x4d_b32x8_fp16_imagenet.py +++ /dev/null @@ -1,6 +0,0 @@ -_base_ = [ - '../_base_/models/resnext50_32x4d.py', './datasets/imagenet_bs32.py', - '../_base_/schedules/imagenet_bs256.py', '../_base_/default_runtime.py' -] -# fp16 settings -fp16 = dict(loss_scale=512.) \ No newline at end of file diff --git a/openmmlab_test/mmclassification-speed-benchmark/configs/speed_test/resnext50_32x4d_b32x8_imagenet.py b/openmmlab_test/mmclassification-speed-benchmark/configs/speed_test/resnext50_32x4d_b32x8_imagenet.py deleted file mode 100644 index be66e659..00000000 --- a/openmmlab_test/mmclassification-speed-benchmark/configs/speed_test/resnext50_32x4d_b32x8_imagenet.py +++ /dev/null @@ -1,4 +0,0 @@ -_base_ = [ - '../_base_/models/resnext50_32x4d.py', './datasets/imagenet_bs32.py', - '../_base_/schedules/imagenet_bs256.py', '../_base_/default_runtime.py' -] diff --git a/openmmlab_test/mmclassification-speed-benchmark/configs/speed_test/seresnet50_b32x8_fp16_imagenet.py b/openmmlab_test/mmclassification-speed-benchmark/configs/speed_test/seresnet50_b32x8_fp16_imagenet.py deleted file mode 100644 index 8cb7aa29..00000000 --- a/openmmlab_test/mmclassification-speed-benchmark/configs/speed_test/seresnet50_b32x8_fp16_imagenet.py +++ /dev/null @@ -1,7 +0,0 @@ -_base_ = [ - '../_base_/models/seresnet50.py', './datasets/imagenet_bs32.py', - '../_base_/schedules/imagenet_bs256_140e.py', - '../_base_/default_runtime.py' -] -# fp16 settings -fp16 = dict(loss_scale=512.) \ No newline at end of file diff --git a/openmmlab_test/mmclassification-speed-benchmark/configs/speed_test/seresnet50_b32x8_imagenet.py b/openmmlab_test/mmclassification-speed-benchmark/configs/speed_test/seresnet50_b32x8_imagenet.py deleted file mode 100644 index 11604a0e..00000000 --- a/openmmlab_test/mmclassification-speed-benchmark/configs/speed_test/seresnet50_b32x8_imagenet.py +++ /dev/null @@ -1,5 +0,0 @@ -_base_ = [ - '../_base_/models/seresnet50.py', './datasets/imagenet_bs32.py', - '../_base_/schedules/imagenet_bs256_140e.py', - '../_base_/default_runtime.py' -] diff --git a/openmmlab_test/mmclassification-speed-benchmark/configs/speed_test/shufflenet_v1_1x_b64x16_linearlr_bn_nowd_fp16_imagenet.py b/openmmlab_test/mmclassification-speed-benchmark/configs/speed_test/shufflenet_v1_1x_b64x16_linearlr_bn_nowd_fp16_imagenet.py deleted file mode 100644 index 335e31ad..00000000 --- a/openmmlab_test/mmclassification-speed-benchmark/configs/speed_test/shufflenet_v1_1x_b64x16_linearlr_bn_nowd_fp16_imagenet.py +++ /dev/null @@ -1,7 +0,0 @@ -_base_ = [ - '../_base_/models/shufflenet_v1_1x.py', './datasets/imagenet_bs64.py', - '../_base_/schedules/imagenet_bs1024_linearlr_bn_nowd.py', - '../_base_/default_runtime.py' -] -# fp16 settings -fp16 = dict(loss_scale=512.) \ No newline at end of file diff --git a/openmmlab_test/mmclassification-speed-benchmark/configs/speed_test/shufflenet_v1_1x_b64x16_linearlr_bn_nowd_imagenet.py b/openmmlab_test/mmclassification-speed-benchmark/configs/speed_test/shufflenet_v1_1x_b64x16_linearlr_bn_nowd_imagenet.py deleted file mode 100644 index 91dc5b4c..00000000 --- a/openmmlab_test/mmclassification-speed-benchmark/configs/speed_test/shufflenet_v1_1x_b64x16_linearlr_bn_nowd_imagenet.py +++ /dev/null @@ -1,5 +0,0 @@ -_base_ = [ - '../_base_/models/shufflenet_v1_1x.py', './datasets/imagenet_bs64.py', - '../_base_/schedules/imagenet_bs1024_linearlr_bn_nowd.py', - '../_base_/default_runtime.py' -] diff --git a/openmmlab_test/mmclassification-speed-benchmark/configs/speed_test/shufflenet_v2_1x_b64x16_linearlr_bn_nowd_fp16_imagenet.py b/openmmlab_test/mmclassification-speed-benchmark/configs/speed_test/shufflenet_v2_1x_b64x16_linearlr_bn_nowd_fp16_imagenet.py deleted file mode 100644 index 5d244616..00000000 --- a/openmmlab_test/mmclassification-speed-benchmark/configs/speed_test/shufflenet_v2_1x_b64x16_linearlr_bn_nowd_fp16_imagenet.py +++ /dev/null @@ -1,7 +0,0 @@ -_base_ = [ - '../_base_/models/shufflenet_v2_1x.py', './datasets/imagenet_bs64.py', - '../_base_/schedules/imagenet_bs1024_linearlr_bn_nowd.py', - '../_base_/default_runtime.py' -] -# fp16 settings -fp16 = dict(loss_scale=512.) \ No newline at end of file diff --git a/openmmlab_test/mmclassification-speed-benchmark/configs/speed_test/shufflenet_v2_1x_b64x16_linearlr_bn_nowd_imagenet.py b/openmmlab_test/mmclassification-speed-benchmark/configs/speed_test/shufflenet_v2_1x_b64x16_linearlr_bn_nowd_imagenet.py deleted file mode 100644 index 05ad32be..00000000 --- a/openmmlab_test/mmclassification-speed-benchmark/configs/speed_test/shufflenet_v2_1x_b64x16_linearlr_bn_nowd_imagenet.py +++ /dev/null @@ -1,5 +0,0 @@ -_base_ = [ - '../_base_/models/shufflenet_v2_1x.py', './datasets/imagenet_bs64.py', - '../_base_/schedules/imagenet_bs1024_linearlr_bn_nowd.py', - '../_base_/default_runtime.py' -] diff --git a/openmmlab_test/mmclassification-speed-benchmark/configs/speed_test/vgg11_b32x8_fp16_imagenet.py b/openmmlab_test/mmclassification-speed-benchmark/configs/speed_test/vgg11_b32x8_fp16_imagenet.py deleted file mode 100644 index 91fad6b9..00000000 --- a/openmmlab_test/mmclassification-speed-benchmark/configs/speed_test/vgg11_b32x8_fp16_imagenet.py +++ /dev/null @@ -1,8 +0,0 @@ -_base_ = [ - '../_base_/models/vgg11.py', - './datasets/imagenet_bs32.py', - '../_base_/schedules/imagenet_bs256.py', - '../_base_/default_runtime.py', -] -# fp16 settings -fp16 = dict(loss_scale=512.) \ No newline at end of file diff --git a/openmmlab_test/mmclassification-speed-benchmark/configs/speed_test/vgg11_b32x8_imagenet.py b/openmmlab_test/mmclassification-speed-benchmark/configs/speed_test/vgg11_b32x8_imagenet.py deleted file mode 100644 index df3dc507..00000000 --- a/openmmlab_test/mmclassification-speed-benchmark/configs/speed_test/vgg11_b32x8_imagenet.py +++ /dev/null @@ -1,7 +0,0 @@ -_base_ = [ - '../_base_/models/vgg11.py', - './datasets/imagenet_bs32.py', - '../_base_/schedules/imagenet_bs256.py', - '../_base_/default_runtime.py', -] -optimizer = dict(lr=0.01) diff --git a/openmmlab_test/mmclassification-speed-benchmark/configs/vgg/README.md b/openmmlab_test/mmclassification-speed-benchmark/configs/vgg/README.md deleted file mode 100644 index 8a474ff3..00000000 --- a/openmmlab_test/mmclassification-speed-benchmark/configs/vgg/README.md +++ /dev/null @@ -1,30 +0,0 @@ -# Very Deep Convolutional Networks for Large-Scale Image Recognition - -## Introduction - - - -```latex -@article{simonyan2014very, - title={Very deep convolutional networks for large-scale image recognition}, - author={Simonyan, Karen and Zisserman, Andrew}, - journal={arXiv preprint arXiv:1409.1556}, - year={2014} -} - -``` - -## Results and models - -### ImageNet - -| Model | Params(M) | Flops(G) | Top-1 (%) | Top-5 (%) | Config | Download | -|:---------------------:|:---------:|:--------:|:---------:|:---------:|:---------:|:--------:| -| VGG-11 | 132.86 | 7.63 | 68.75 | 88.87 | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/vgg/vgg11_b32x8_imagenet.py) | [model](https://download.openmmlab.com/mmclassification/v0/vgg/vgg11_batch256_imagenet_20210208-4271cd6c.pth) | [log](https://download.openmmlab.com/mmclassification/v0/vgg/vgg11_batch256_imagenet_20210208-4271cd6c.log.json) | -| VGG-13 | 133.05 | 11.34 | 70.02 | 89.46 | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/vgg/vgg13_b32x8_imagenet.py) | [model](https://download.openmmlab.com/mmclassification/v0/vgg/vgg13_batch256_imagenet_20210208-4d1d6080.pth) | [log](https://download.openmmlab.com/mmclassification/v0/vgg/vgg13_batch256_imagenet_20210208-4d1d6080.log.json) | -| VGG-16 | 138.36 | 15.5 | 71.62 | 90.49 | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/vgg/vgg16_b32x8_imagenet.py) | [model](https://download.openmmlab.com/mmclassification/v0/vgg/vgg16_batch256_imagenet_20210208-db26f1a5.pth) | [log](https://download.openmmlab.com/mmclassification/v0/vgg/vgg16_batch256_imagenet_20210208-db26f1a5.log.json) | -| VGG-19 | 143.67 | 19.67 | 72.41 | 90.80 | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/vgg/vgg19_b32x8_imagenet.py) | [model](https://download.openmmlab.com/mmclassification/v0/vgg/vgg19_bn_batch256_imagenet_20210208-da620c4f.pth) | [log](https://download.openmmlab.com/mmclassification/v0/vgg/vgg19_bn_batch256_imagenet_20210208-da620c4f.log.json)| -| VGG-11-BN | 132.87 | 7.64 | 70.75 | 90.12 | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/vgg/vgg11bn_b32x8_imagenet.py) | [model](https://download.openmmlab.com/mmclassification/v0/vgg/vgg11_bn_batch256_imagenet_20210207-f244902c.pth) | [log](https://download.openmmlab.com/mmclassification/v0/vgg/vgg11_bn_batch256_imagenet_20210207-f244902c.log.json) | -| VGG-13-BN | 133.05 | 11.36 | 72.15 | 90.71 | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/vgg/vgg13bn_b32x8_imagenet.py) | [model](https://download.openmmlab.com/mmclassification/v0/vgg/vgg13_bn_batch256_imagenet_20210207-1a8b7864.pth) | [log](https://download.openmmlab.com/mmclassification/v0/vgg/vgg13_bn_batch256_imagenet_20210207-1a8b7864.log.json) | -| VGG-16-BN | 138.37 | 15.53 | 73.72 | 91.68 | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/vgg/vgg16_b32x8_imagenet.py) | [model](https://download.openmmlab.com/mmclassification/v0/vgg/vgg16_bn_batch256_imagenet_20210208-7e55cd29.pth) | [log](https://download.openmmlab.com/mmclassification/v0/vgg/vgg16_bn_batch256_imagenet_20210208-7e55cd29.log.json) | -| VGG-19-BN | 143.68 | 19.7 | 74.70 | 92.24 | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/vgg/vgg19bn_b32x8_imagenet.py) | [model](https://download.openmmlab.com/mmclassification/v0/vgg/vgg19_bn_batch256_imagenet_20210208-da620c4f.pth) | [log](https://download.openmmlab.com/mmclassification/v0/vgg/vgg19_bn_batch256_imagenet_20210208-da620c4f.log.json)| diff --git a/openmmlab_test/mmclassification-speed-benchmark/configs/vgg/metafile.yml b/openmmlab_test/mmclassification-speed-benchmark/configs/vgg/metafile.yml deleted file mode 100644 index dbdf0a9d..00000000 --- a/openmmlab_test/mmclassification-speed-benchmark/configs/vgg/metafile.yml +++ /dev/null @@ -1,120 +0,0 @@ -Collections: - - Name: VGG - Metadata: - Training Data: ImageNet - Training Techniques: - - SGD with Momentum - - Weight Decay - Training Resources: 8x Xp GPUs - Epochs: 100 - Batch Size: 256 - Architecture: - - VGG - Paper: https://arxiv.org/abs/1409.1556 - README: configs/vgg/README.md - -Models: -- Config: configs/vgg/vgg11_b32x8_imagenet.py - In Collection: VGG - Metadata: - FLOPs: 7630000000 - Parameters: 132860000 - Name: vgg11_b32x8_imagenet - Results: - - Dataset: ImageNet - Metrics: - Top 1 Accuracy: 68.75 - Top 5 Accuracy: 88.87 - Task: Image Classification - Weights: https://download.openmmlab.com/mmclassification/v0/vgg/vgg11_batch256_imagenet_20210208-4271cd6c.pth -- Config: configs/vgg/vgg13_b32x8_imagenet.py - In Collection: VGG - Metadata: - FLOPs: 11340000000 - Parameters: 133050000 - Name: vgg13_b32x8_imagenet - Results: - - Dataset: ImageNet - Metrics: - Top 1 Accuracy: 70.02 - Top 5 Accuracy: 89.46 - Task: Image Classification - Weights: https://download.openmmlab.com/mmclassification/v0/vgg/vgg13_batch256_imagenet_20210208-4d1d6080.pth -- Config: configs/vgg/vgg16_b32x8_imagenet.py - In Collection: VGG - Metadata: - FLOPs: 15500000000 - Parameters: 138360000 - Name: vgg16_b32x8_imagenet - Results: - - Dataset: ImageNet - Metrics: - Top 1 Accuracy: 71.62 - Top 5 Accuracy: 90.49 - Task: Image Classification - Weights: https://download.openmmlab.com/mmclassification/v0/vgg/vgg16_batch256_imagenet_20210208-db26f1a5.pth -- Config: configs/vgg/vgg19_b32x8_imagenet.py - In Collection: VGG - Metadata: - FLOPs: 19670000000 - Parameters: 143670000 - Name: vgg19_b32x8_imagenet - Results: - - Dataset: ImageNet - Metrics: - Top 1 Accuracy: 72.41 - Top 5 Accuracy: 90.8 - Task: Image Classification - Weights: https://download.openmmlab.com/mmclassification/v0/vgg/vgg19_bn_batch256_imagenet_20210208-da620c4f.pth -- Config: configs/vgg/vgg11bn_b32x8_imagenet.py - In Collection: VGG - Metadata: - FLOPs: 7640000000 - Parameters: 132870000 - Name: vgg11bn_b32x8_imagenet - Results: - - Dataset: ImageNet - Metrics: - Top 1 Accuracy: 70.75 - Top 5 Accuracy: 90.12 - Task: Image Classification - Weights: https://download.openmmlab.com/mmclassification/v0/vgg/vgg11_bn_batch256_imagenet_20210207-f244902c.pth -- Config: configs/vgg/vgg13bn_b32x8_imagenet.py - In Collection: VGG - Metadata: - FLOPs: 11360000000 - Parameters: 133050000 - Name: vgg13bn_b32x8_imagenet - Results: - - Dataset: ImageNet - Metrics: - Top 1 Accuracy: 72.15 - Top 5 Accuracy: 90.71 - Task: Image Classification - Weights: https://download.openmmlab.com/mmclassification/v0/vgg/vgg13_bn_batch256_imagenet_20210207-1a8b7864.pth -- Config: configs/vgg/vgg16_b32x8_imagenet.py - In Collection: VGG - Metadata: - FLOPs: 15530000000 - Parameters: 138370000 - Name: vgg16_b32x8_imagenet - Results: - - Dataset: ImageNet - Metrics: - Top 1 Accuracy: 73.72 - Top 5 Accuracy: 91.68 - Task: Image Classification - Weights: https://download.openmmlab.com/mmclassification/v0/vgg/vgg16_bn_batch256_imagenet_20210208-7e55cd29.pth -- Config: configs/vgg/vgg19bn_b32x8_imagenet.py - In Collection: VGG - Metadata: - FLOPs: 19700000000 - Parameters: 143680000 - Name: vgg19bn_b32x8_imagenet - Results: - - Dataset: ImageNet - Metrics: - Top 1 Accuracy: 74.7 - Top 5 Accuracy: 92.24 - Task: Image Classification - Weights: https://download.openmmlab.com/mmclassification/v0/vgg/vgg19_bn_batch256_imagenet_20210208-da620c4f.pth diff --git a/openmmlab_test/mmclassification-speed-benchmark/configs/vgg/vgg16_b32x8_imagenet.py b/openmmlab_test/mmclassification-speed-benchmark/configs/vgg/vgg16_b32x8_imagenet.py deleted file mode 100644 index 55cd9fc4..00000000 --- a/openmmlab_test/mmclassification-speed-benchmark/configs/vgg/vgg16_b32x8_imagenet.py +++ /dev/null @@ -1,6 +0,0 @@ -_base_ = [ - '../_base_/models/vgg16.py', - '../_base_/datasets/imagenet_bs32_pil_resize.py', - '../_base_/schedules/imagenet_bs256.py', '../_base_/default_runtime.py' -] -optimizer = dict(lr=0.01) diff --git a/openmmlab_test/mmclassification-speed-benchmark/configs/vision_transformer/vit_base_patch16_224_finetune_imagenet.py b/openmmlab_test/mmclassification-speed-benchmark/configs/vision_transformer/vit_base_patch16_224_finetune_imagenet.py deleted file mode 100644 index e2fa0fd7..00000000 --- a/openmmlab_test/mmclassification-speed-benchmark/configs/vision_transformer/vit_base_patch16_224_finetune_imagenet.py +++ /dev/null @@ -1,10 +0,0 @@ -# Refer to pytorch-image-models -_base_ = [ - '../_base_/models/vit_base_patch16_224_finetune.py', - '../_base_/datasets/imagenet_bs32_pil_resize.py', - '../_base_/schedules/imagenet_bs256_epochstep.py', - '../_base_/default_runtime.py' -] - -img_norm_cfg = dict( - mean=[127.5, 127.5, 127.5], std=[127.5, 127.5, 127.5], to_rgb=True) diff --git a/openmmlab_test/mmclassification-speed-benchmark/configs/vision_transformer/vit_base_patch16_224_pretrain_imagenet.py b/openmmlab_test/mmclassification-speed-benchmark/configs/vision_transformer/vit_base_patch16_224_pretrain_imagenet.py deleted file mode 100644 index 55f02496..00000000 --- a/openmmlab_test/mmclassification-speed-benchmark/configs/vision_transformer/vit_base_patch16_224_pretrain_imagenet.py +++ /dev/null @@ -1,143 +0,0 @@ -_base_ = [ - '../_base_/models/vit_base_patch16_224_pretrain.py', - '../_base_/datasets/imagenet_bs64_pil_resize.py', - '../_base_/schedules/imagenet_bs4096_AdamW.py', - '../_base_/default_runtime.py' -] - -policies = [ - [ - dict(type='Posterize', bits=4, prob=0.4), - dict(type='Rotate', angle=30., prob=0.6) - ], - [ - dict(type='Solarize', thr=256 / 9 * 4, prob=0.6), - dict(type='AutoContrast', prob=0.5) - ], - [dict(type='Equalize', prob=0.8), - dict(type='Equalize', prob=0.6)], - [ - dict(type='Posterize', bits=5, prob=0.6), - dict(type='Posterize', bits=5, prob=0.6) - ], - [ - dict(type='Equalize', prob=0.4), - dict(type='Solarize', thr=256 / 9 * 5, prob=0.2) - ], - [ - dict(type='Equalize', prob=0.4), - dict(type='Rotate', angle=30 / 9 * 8, prob=0.8) - ], - [ - dict(type='Solarize', thr=256 / 9 * 6, prob=0.6), - dict(type='Equalize', prob=0.6) - ], - [dict(type='Posterize', bits=6, prob=0.8), - dict(type='Equalize', prob=1.)], - [ - dict(type='Rotate', angle=10., prob=0.2), - dict(type='Solarize', thr=256 / 9, prob=0.6) - ], - [ - dict(type='Equalize', prob=0.6), - dict(type='Posterize', bits=5, prob=0.6) - ], - [ - dict(type='Rotate', angle=30 / 9 * 8, prob=0.8), - dict(type='ColorTransform', magnitude=0., prob=0.4) - ], - [ - dict(type='Rotate', angle=30., prob=0.4), - dict(type='Equalize', prob=0.6) - ], - [dict(type='Equalize', prob=0.0), - dict(type='Equalize', prob=0.8)], - [dict(type='Invert', prob=0.6), - dict(type='Equalize', prob=1.)], - [ - dict(type='ColorTransform', magnitude=0.4, prob=0.6), - dict(type='Contrast', magnitude=0.8, prob=1.) - ], - [ - dict(type='Rotate', angle=30 / 9 * 8, prob=0.8), - dict(type='ColorTransform', magnitude=0.2, prob=1.) - ], - [ - dict(type='ColorTransform', magnitude=0.8, prob=0.8), - dict(type='Solarize', thr=256 / 9 * 2, prob=0.8) - ], - [ - dict(type='Sharpness', magnitude=0.7, prob=0.4), - dict(type='Invert', prob=0.6) - ], - [ - dict( - type='Shear', - magnitude=0.3 / 9 * 5, - prob=0.6, - direction='horizontal'), - dict(type='Equalize', prob=1.) - ], - [ - dict(type='ColorTransform', magnitude=0., prob=0.4), - dict(type='Equalize', prob=0.6) - ], - [ - dict(type='Equalize', prob=0.4), - dict(type='Solarize', thr=256 / 9 * 5, prob=0.2) - ], - [ - dict(type='Solarize', thr=256 / 9 * 4, prob=0.6), - dict(type='AutoContrast', prob=0.6) - ], - [dict(type='Invert', prob=0.6), - dict(type='Equalize', prob=1.)], - [ - dict(type='ColorTransform', magnitude=0.4, prob=0.6), - dict(type='Contrast', magnitude=0.8, prob=1.) - ], - [dict(type='Equalize', prob=0.8), - dict(type='Equalize', prob=0.6)], -] - -dataset_type = 'ImageNet' -img_norm_cfg = dict( - mean=[123.675, 116.28, 103.53], std=[58.395, 57.12, 57.375], to_rgb=True) -train_pipeline = [ - dict(type='LoadImageFromFile'), - dict(type='RandomResizedCrop', size=224), - dict(type='RandomFlip', flip_prob=0.5, direction='horizontal'), - dict(type='AutoAugment', policies=policies), - dict(type='Normalize', **img_norm_cfg), - dict(type='ImageToTensor', keys=['img']), - dict(type='ToTensor', keys=['gt_label']), - dict(type='Collect', keys=['img', 'gt_label']) -] - -test_pipeline = [ - dict(type='LoadImageFromFile'), - dict(type='Resize', size=(256, -1), backend='pillow'), - dict(type='CenterCrop', crop_size=224), - dict(type='Normalize', **img_norm_cfg), - dict(type='ImageToTensor', keys=['img']), - dict(type='Collect', keys=['img']) -] -data = dict( - samples_per_gpu=64, - workers_per_gpu=2, - train=dict( - type=dataset_type, - data_prefix='data/imagenet/train', - pipeline=train_pipeline), - val=dict( - type=dataset_type, - data_prefix='data/imagenet/val', - ann_file='data/imagenet/meta/val.txt', - pipeline=test_pipeline), - test=dict( - # replace `data/val` with `data/test` for standard test - type=dataset_type, - data_prefix='data/imagenet/val', - ann_file='data/imagenet/meta/val.txt', - pipeline=test_pipeline)) -evaluation = dict(interval=1, metric='accuracy') diff --git a/openmmlab_test/mmclassification-speed-benchmark/configs/vision_transformer/vit_base_patch16_384_finetune_imagenet.py b/openmmlab_test/mmclassification-speed-benchmark/configs/vision_transformer/vit_base_patch16_384_finetune_imagenet.py deleted file mode 100644 index 26d095e2..00000000 --- a/openmmlab_test/mmclassification-speed-benchmark/configs/vision_transformer/vit_base_patch16_384_finetune_imagenet.py +++ /dev/null @@ -1,21 +0,0 @@ -# Refer to pytorch-image-models -_base_ = [ - '../_base_/models/vit_base_patch16_384_finetune.py', - '../_base_/datasets/imagenet_bs32_pil_resize.py', - '../_base_/schedules/imagenet_bs256_epochstep.py', - '../_base_/default_runtime.py' -] - -img_norm_cfg = dict( - mean=[127.5, 127.5, 127.5], std=[127.5, 127.5, 127.5], to_rgb=True) - -test_pipeline = [ - dict(type='LoadImageFromFile'), - dict(type='Resize', size=(384, -1), backend='pillow'), - dict(type='CenterCrop', crop_size=384), - dict(type='Normalize', **img_norm_cfg), - dict(type='ImageToTensor', keys=['img']), - dict(type='Collect', keys=['img']) -] - -data = dict(test=dict(pipeline=test_pipeline)) diff --git a/openmmlab_test/mmclassification-speed-benchmark/configs/vision_transformer/vit_base_patch32_384_finetune_imagenet.py b/openmmlab_test/mmclassification-speed-benchmark/configs/vision_transformer/vit_base_patch32_384_finetune_imagenet.py deleted file mode 100644 index bc97d597..00000000 --- a/openmmlab_test/mmclassification-speed-benchmark/configs/vision_transformer/vit_base_patch32_384_finetune_imagenet.py +++ /dev/null @@ -1,21 +0,0 @@ -# Refer to pytorch-image-models -_base_ = [ - '../_base_/models/vit_base_patch32_384_finetune.py', - '../_base_/datasets/imagenet_bs32_pil_resize.py', - '../_base_/schedules/imagenet_bs256_epochstep.py', - '../_base_/default_runtime.py' -] - -img_norm_cfg = dict( - mean=[127.5, 127.5, 127.5], std=[127.5, 127.5, 127.5], to_rgb=True) - -test_pipeline = [ - dict(type='LoadImageFromFile'), - dict(type='Resize', size=(384, -1), backend='pillow'), - dict(type='CenterCrop', crop_size=384), - dict(type='Normalize', **img_norm_cfg), - dict(type='ImageToTensor', keys=['img']), - dict(type='Collect', keys=['img']) -] - -data = dict(test=dict(pipeline=test_pipeline)) diff --git a/openmmlab_test/mmclassification-speed-benchmark/configs/vision_transformer/vit_large_patch16_224_finetune_imagenet.py b/openmmlab_test/mmclassification-speed-benchmark/configs/vision_transformer/vit_large_patch16_224_finetune_imagenet.py deleted file mode 100644 index a7410b77..00000000 --- a/openmmlab_test/mmclassification-speed-benchmark/configs/vision_transformer/vit_large_patch16_224_finetune_imagenet.py +++ /dev/null @@ -1,10 +0,0 @@ -# Refer to pytorch-image-models -_base_ = [ - '../_base_/models/vit_large_patch16_224_finetune.py', - '../_base_/datasets/imagenet_bs32_pil_resize.py', - '../_base_/schedules/imagenet_bs256_epochstep.py', - '../_base_/default_runtime.py' -] - -img_norm_cfg = dict( - mean=[127.5, 127.5, 127.5], std=[127.5, 127.5, 127.5], to_rgb=True) diff --git a/openmmlab_test/mmclassification-speed-benchmark/configs/vision_transformer/vit_large_patch16_384_finetune_imagenet.py b/openmmlab_test/mmclassification-speed-benchmark/configs/vision_transformer/vit_large_patch16_384_finetune_imagenet.py deleted file mode 100644 index 0bb5a6ac..00000000 --- a/openmmlab_test/mmclassification-speed-benchmark/configs/vision_transformer/vit_large_patch16_384_finetune_imagenet.py +++ /dev/null @@ -1,21 +0,0 @@ -# Refer to pytorch-image-models -_base_ = [ - '../_base_/models/vit_large_patch16_384_finetune.py', - '../_base_/datasets/imagenet_bs32_pil_resize.py', - '../_base_/schedules/imagenet_bs256_epochstep.py', - '../_base_/default_runtime.py' -] - -img_norm_cfg = dict( - mean=[127.5, 127.5, 127.5], std=[127.5, 127.5, 127.5], to_rgb=True) - -test_pipeline = [ - dict(type='LoadImageFromFile'), - dict(type='Resize', size=(384, -1), backend='pillow'), - dict(type='CenterCrop', crop_size=384), - dict(type='Normalize', **img_norm_cfg), - dict(type='ImageToTensor', keys=['img']), - dict(type='Collect', keys=['img']) -] - -data = dict(test=dict(pipeline=test_pipeline)) diff --git a/openmmlab_test/mmclassification-speed-benchmark/configs/vision_transformer/vit_large_patch32_384_finetune_imagenet.py b/openmmlab_test/mmclassification-speed-benchmark/configs/vision_transformer/vit_large_patch32_384_finetune_imagenet.py deleted file mode 100644 index c4b62c77..00000000 --- a/openmmlab_test/mmclassification-speed-benchmark/configs/vision_transformer/vit_large_patch32_384_finetune_imagenet.py +++ /dev/null @@ -1,21 +0,0 @@ -# Refer to pytorch-image-models -_base_ = [ - '../_base_/models/vit_large_patch32_384_finetune.py', - '../_base_/datasets/imagenet_bs32_pil_resize.py', - '../_base_/schedules/imagenet_bs256_epochstep.py', - '../_base_/default_runtime.py' -] - -img_norm_cfg = dict( - mean=[127.5, 127.5, 127.5], std=[127.5, 127.5, 127.5], to_rgb=True) - -test_pipeline = [ - dict(type='LoadImageFromFile'), - dict(type='Resize', size=(384, -1), backend='pillow'), - dict(type='CenterCrop', crop_size=384), - dict(type='Normalize', **img_norm_cfg), - dict(type='ImageToTensor', keys=['img']), - dict(type='Collect', keys=['img']) -] - -data = dict(test=dict(pipeline=test_pipeline)) diff --git a/openmmlab_test/mmclassification-speed-benchmark/demo/image_demo.py b/openmmlab_test/mmclassification-speed-benchmark/demo/image_demo.py deleted file mode 100644 index d8bb4c29..00000000 --- a/openmmlab_test/mmclassification-speed-benchmark/demo/image_demo.py +++ /dev/null @@ -1,24 +0,0 @@ -from argparse import ArgumentParser - -from mmcls.apis import inference_model, init_model, show_result_pyplot - - -def main(): - parser = ArgumentParser() - parser.add_argument('img', help='Image file') - parser.add_argument('config', help='Config file') - parser.add_argument('checkpoint', help='Checkpoint file') - parser.add_argument( - '--device', default='cuda:0', help='Device used for inference') - args = parser.parse_args() - - # build the model from a config file and a checkpoint file - model = init_model(args.config, args.checkpoint, device=args.device) - # test a single image - result = inference_model(model, args.img) - # show the results - show_result_pyplot(model, args.img, result) - - -if __name__ == '__main__': - main() diff --git a/openmmlab_test/mmclassification-speed-benchmark/docker/serve/Dockerfile b/openmmlab_test/mmclassification-speed-benchmark/docker/serve/Dockerfile deleted file mode 100644 index cd28f50f..00000000 --- a/openmmlab_test/mmclassification-speed-benchmark/docker/serve/Dockerfile +++ /dev/null @@ -1,47 +0,0 @@ -ARG PYTORCH="1.6.0" -ARG CUDA="10.1" -ARG CUDNN="7" -FROM pytorch/pytorch:${PYTORCH}-cuda${CUDA}-cudnn${CUDNN}-devel - -ARG MMCV="1.3.1" -ARG MMCLS="0.12.0" - -ENV PYTHONUNBUFFERED TRUE - -RUN apt-get update && \ - DEBIAN_FRONTEND=noninteractive apt-get install --no-install-recommends -y \ - ca-certificates \ - g++ \ - openjdk-11-jre-headless \ - # MMDet Requirements - ffmpeg libsm6 libxext6 git ninja-build libglib2.0-0 libsm6 libxrender-dev libxext6 \ - && rm -rf /var/lib/apt/lists/* - -ENV PATH="/opt/conda/bin:$PATH" -RUN export FORCE_CUDA=1 - -# TORCHSEVER -RUN pip install torchserve torch-model-archiver - -# MMLAB -RUN pip install mmcv-full==${MMCV} -f https://download.openmmlab.com/mmcv/dist/cu101/torch1.6.0/index.html -RUN pip install mmcls==${MMCLS} - -RUN useradd -m model-server \ - && mkdir -p /home/model-server/tmp - -COPY entrypoint.sh /usr/local/bin/entrypoint.sh - -RUN chmod +x /usr/local/bin/entrypoint.sh \ - && chown -R model-server /home/model-server - -COPY config.properties /home/model-server/config.properties -RUN mkdir /home/model-server/model-store && chown -R model-server /home/model-server/model-store - -EXPOSE 8080 8081 8082 - -USER model-server -WORKDIR /home/model-server -ENV TEMP=/home/model-server/tmp -ENTRYPOINT ["/usr/local/bin/entrypoint.sh"] -CMD ["serve"] diff --git a/openmmlab_test/mmclassification-speed-benchmark/docs/changelog.md b/openmmlab_test/mmclassification-speed-benchmark/docs/changelog.md deleted file mode 100644 index 70ed6d71..00000000 --- a/openmmlab_test/mmclassification-speed-benchmark/docs/changelog.md +++ /dev/null @@ -1,236 +0,0 @@ -## Changelog - -### v0.12.0(3/6/2021) - -- Finish adding Chinese tutorials and build Chinese documentation on readthedocs. -- Update ResNeXt checkpoints and ResNet checkpoints on CIFAR. - -#### New Features - -- Improve and add Chinese translation of `data_pipeline.md` and `new_modules.md`. (#265) -- Build Chinese translation on readthedocs. (#267) -- Add an argument efficientnet_style to `RandomResizedCrop` and `CenterCrop`. (#268) - -#### Improvements - -- Only allow directory operation when rank==0 when testing. (#258) -- Fix typo in `base_head`. (#274) -- Update ResNeXt checkpoints. (#283) - -#### Bug Fixes - -- Add attribute `data.test` in MNIST configs. (#264) -- Download CIFAR/MNIST dataset only on rank 0. (#273) -- Fix MMCV version compatibility. (#276) -- Fix CIFAR color channels bug and update checkpoints in model zoo. (#280) - -### v0.11.1(21/5/2021) - -- Refine `new_dataset.md` and add Chinese translation of `finture.md`, `new_dataset.md`. - -#### New Features - -- Add `dim` argument for `GlobalAveragePooling`. (#236) -- Add random noise to `RandAugment` magnitude. (#240) -- Refine `new_dataset.md` and add Chinese translation of `finture.md`, `new_dataset.md`. (#243) - -#### Improvements - -- Refactor arguments passing for Heads. (#239) -- Allow more flexible `magnitude_range` in `RandAugment`. (#249) -- Inherits MMCV registry so that in the future OpenMMLab repos like MMDet and MMSeg could directly use the backbones supported in MMCls. (#252) - -#### Bug Fixes - -- Fix typo in `analyze_results.py`. (#237) -- Fix typo in unittests. (#238) -- Check if specified tmpdir exists when testing to avoid deleting existing data. (#242 & #258) -- Add missing config files in `MANIFEST.in`. (#250 & #255) -- Use temporary directory under shared directory to collect results to avoid unavailability of temporary directory for multi-node testing. (#251) - -### v0.11.0(1/5/2021) - -- Support cutmix trick. -- Support random augmentation. -- Add `tools/deployment/test.py` as a ONNX runtime test tool. -- Support ViT backbone and add training configs for ViT on ImageNet. -- Add Chinese `README.md` and some Chinese tutorials. - -#### New Features - -- Support cutmix trick. (#198) -- Add `simplify` option in `pytorch2onnx.py`. (#200) -- Support random augmentation. (#201) -- Add config and checkpoint for training ResNet on CIFAR-100. (#208) -- Add `tools/deployment/test.py` as a ONNX runtime test tool. (#212) -- Support ViT backbone and add training configs for ViT on ImageNet. (#214) -- Add finetuning configs for ViT on ImageNet. (#217) -- Add `device` option to support training on CPU. (#219) -- Add Chinese `README.md` and some Chinese tutorials. (#221) -- Add `metafile.yml` in configs to support interaction with paper with code(PWC) and MMCLI. (#225) -- Upload configs and converted checkpoints for ViT fintuning on ImageNet. (#230) - -#### Improvements - -- Fix `LabelSmoothLoss` so that label smoothing and mixup could be enabled at the same time. (#203) -- Add `cal_acc` option in `ClsHead`. (#206) -- Check `CLASSES` in checkpoint to avoid unexpected key error. (#207) -- Check mmcv version when importing mmcls to ensure compatibility. (#209) -- Update `CONTRIBUTING.md` to align with that in MMCV. (#210) -- Change tags to html comments in configs README.md. (#226) -- Clean codes in ViT backbone. (#227) -- Reformat `pytorch2onnx.md` tutorial. (#229) -- Update `setup.py` to support MMCLI. (#232) - -#### Bug Fixes - -- Fix missing `cutmix_prob` in ViT configs. (#220) -- Fix backend for resize in ResNeXt configs. (#222) - -### v0.10.0(1/4/2021) - -- Support AutoAugmentation -- Add tutorials for installation and usage. - -#### New Features - -- Add `Rotate` pipeline for data augmentation. (#167) -- Add `Invert` pipeline for data augmentation. (#168) -- Add `Color` pipeline for data augmentation. (#171) -- Add `Solarize` and `Posterize` pipeline for data augmentation. (#172) -- Support fp16 training. (#178) -- Add tutorials for installation and basic usage of MMClassification.(#176) -- Support `AutoAugmentation`, `AutoContrast`, `Equalize`, `Contrast`, `Brightness` and `Sharpness` pipelines for data augmentation. (#179) - -#### Improvements - -- Support dynamic shape export to onnx. (#175) -- Release training configs and update model zoo for fp16 (#184) -- Use MMCV's EvalHook in MMClassification (#182) - -#### Bug Fixes - -- Fix wrong naming in vgg config (#181) - -### v0.9.0(1/3/2021) - -- Implement mixup trick. -- Add a new tool to create TensorRT engine from ONNX, run inference and verify outputs in Python. - -#### New Features - -- Implement mixup and provide configs of training ResNet50 using mixup. (#160) -- Add `Shear` pipeline for data augmentation. (#163) -- Add `Translate` pipeline for data augmentation. (#165) -- Add `tools/onnx2tensorrt.py` as a tool to create TensorRT engine from ONNX, run inference and verify outputs in Python. (#153) - -#### Improvements - -- Add `--eval-options` in `tools/test.py` to support eval options override, matching the behavior of other open-mmlab projects. (#158) -- Support showing and saving painted results in `mmcls.apis.test` and `tools/test.py`, matching the behavior of other open-mmlab projects. (#162) - -#### Bug Fixes - -- Fix configs for VGG, replace checkpoints converted from other repos with the ones trained by ourselves and upload the missing logs in the model zoo. (#161) - -### v0.8.0(31/1/2021) - -- Support multi-label task. -- Support more flexible metrics settings. -- Fix bugs. - -#### New Features - -- Add evaluation metrics: mAP, CP, CR, CF1, OP, OR, OF1 for multi-label task. (#123) -- Add BCE loss for multi-label task. (#130) -- Add focal loss for multi-label task. (#131) -- Support PASCAL VOC 2007 dataset for multi-label task. (#134) -- Add asymmetric loss for multi-label task. (#132) -- Add analyze_results.py to select images for success/fail demonstration. (#142) -- Support new metric that calculates the total number of occurrences of each label. (#143) -- Support class-wise evaluation results. (#143) -- Add thresholds in eval_metrics. (#146) -- Add heads and a baseline config for multilabel task. (#145) - -#### Improvements - -- Remove the models with 0 checkpoint and ignore the repeated papers when counting papers to gain more accurate model statistics. (#135) -- Add tags in README.md. (#137) -- Fix optional issues in docstring. (#138) -- Update stat.py to classify papers. (#139) -- Fix mismatched columns in README.md. (#150) -- Fix test.py to support more evaluation metrics. (#155) - -#### Bug Fixes - -- Fix bug in VGG weight_init. (#140) -- Fix bug in 2 ResNet configs in which outdated heads were used. (#147) -- Fix bug of misordered height and width in `RandomCrop` and `RandomResizedCrop`. (#151) -- Fix missing `meta_keys` in `Collect`. (#149 & #152) - -### v0.7.0(31/12/2020) - -- Add more evaluation metrics. -- Fix bugs. - -#### New Features - -- Remove installation of MMCV from requirements. (#90) -- Add 3 evaluation metrics: precision, recall and F-1 score. (#93) -- Allow config override during testing and inference with `--options`. (#91 & #96) - -#### Improvements - -- Use `build_runner` to make runners more flexible. (#54) -- Support to get category ids in `BaseDataset`. (#72) -- Allow `CLASSES` override during `BaseDateset` initialization. (#85) -- Allow input image as ndarray during inference. (#87) -- Optimize MNIST config. (#98) -- Add config links in model zoo documentation. (#99) -- Use functions from MMCV to collect environment. (#103) -- Refactor config files so that they are now categorized by methods. (#116) -- Add README in config directory. (#117) -- Add model statistics. (#119) -- Refactor documentation in consistency with other MM repositories. (#126) - -#### Bug Fixes - -- Add missing `CLASSES` argument to dataset wrappers. (#66) -- Fix slurm evaluation error during training. (#69) -- Resolve error caused by shape in `Accuracy`. (#104) -- Fix bug caused by extremely insufficient data in distributed sampler.(#108) -- Fix bug in `gpu_ids` in distributed training. (#107) -- Fix bug caused by extremely insufficient data in collect results during testing (#114) - -### v0.6.0(11/10/2020) - -- Support new method: ResNeSt and VGG. -- Support new dataset: CIFAR10. -- Provide new tools to do model inference, model conversion from pytorch to onnx. - -#### New Features - -- Add model inference. (#16) -- Add pytorch2onnx. (#20) -- Add PIL backend for transform `Resize`. (#21) -- Add ResNeSt. (#25) -- Add VGG and its pretained models. (#27) -- Add CIFAR10 configs and models. (#38) -- Add albumentations transforms. (#45) -- Visualize results on image demo. (#58) - -#### Improvements - -- Replace urlretrieve with urlopen in dataset.utils. (#13) -- Resize image according to its short edge. (#22) -- Update ShuffleNet config. (#31) -- Update pre-trained models for shufflenet_v2, shufflenet_v1, se-resnet50, se-resnet101. (#33) - -#### Bug Fixes - -- Fix init_weights in `shufflenet_v2.py`. (#29) -- Fix the parameter `size` in test_pipeline. (#30) -- Fix the parameter in cosine lr schedule. (#32) -- Fix the convert tools for mobilenet_v2. (#34) -- Fix crash in CenterCrop transform when image is greyscale (#40) -- Fix outdated configs. (#53) diff --git a/openmmlab_test/mmclassification-speed-benchmark/docs/conf.py b/openmmlab_test/mmclassification-speed-benchmark/docs/conf.py deleted file mode 100644 index d1c41aa2..00000000 --- a/openmmlab_test/mmclassification-speed-benchmark/docs/conf.py +++ /dev/null @@ -1,83 +0,0 @@ -# Configuration file for the Sphinx documentation builder. -# -# This file only contains a selection of the most common options. For a full -# list see the documentation: -# https://www.sphinx-doc.org/en/master/usage/configuration.html - -# -- Path setup -------------------------------------------------------------- - -# If extensions (or modules to document with autodoc) are in another directory, -# add these directories to sys.path here. If the directory is relative to the -# documentation root, use os.path.abspath to make it absolute, like shown here. -# -import os -import subprocess -import sys - -sys.path.insert(0, os.path.abspath('..')) - -# -- Project information ----------------------------------------------------- - -project = 'MMClassification' -copyright = '2020, OpenMMLab' -author = 'MMClassification Authors' -version_file = '../mmcls/version.py' - - -def get_version(): - with open(version_file, 'r') as f: - exec(compile(f.read(), version_file, 'exec')) - return locals()['__version__'] - - -# The full version, including alpha/beta/rc tags -release = get_version() - -# -- General configuration --------------------------------------------------- - -# Add any Sphinx extension module names here, as strings. They can be -# extensions coming with Sphinx (named 'sphinx.ext.*') or your custom -# ones. -extensions = [ - 'sphinx.ext.autodoc', - 'sphinx.ext.napoleon', - 'sphinx.ext.viewcode', - 'recommonmark', - 'sphinx_markdown_tables', -] - -autodoc_mock_imports = ['mmcls.version'] - -# Add any paths that contain templates here, relative to this directory. -templates_path = ['_templates'] - -# List of patterns, relative to source directory, that match files and -# directories to ignore when looking for source files. -# This pattern also affects html_static_path and html_extra_path. -exclude_patterns = ['_build', 'Thumbs.db', '.DS_Store'] - -# -- Options for HTML output ------------------------------------------------- -source_suffix = { - '.rst': 'restructuredtext', - '.md': 'markdown', -} - -# The theme to use for HTML and HTML Help pages. See the documentation for -# a list of builtin themes. -# -html_theme = 'sphinx_rtd_theme' - -# Add any paths that contain custom static files (such as style sheets) here, -# relative to this directory. They are copied after the builtin static files, -# so a file named "default.css" will overwrite the builtin "default.css". -html_static_path = ['_static'] - -master_doc = 'index' - - -def builder_inited_handler(app): - subprocess.run(['./stat.py']) - - -def setup(app): - app.connect('builder-inited', builder_inited_handler) diff --git a/openmmlab_test/mmclassification-speed-benchmark/docs/getting_started.md b/openmmlab_test/mmclassification-speed-benchmark/docs/getting_started.md deleted file mode 100644 index 0c7c86c2..00000000 --- a/openmmlab_test/mmclassification-speed-benchmark/docs/getting_started.md +++ /dev/null @@ -1,225 +0,0 @@ -# Getting Started - -This page provides basic tutorials about the usage of MMClassification. - -## Prepare datasets - -It is recommended to symlink the dataset root to `$MMCLASSIFICATION/data`. -If your folder structure is different, you may need to change the corresponding paths in config files. - -``` -mmclassification -├── mmcls -├── tools -├── configs -├── docs -├── data -│ ├── imagenet -│ │ ├── meta -│ │ ├── train -│ │ ├── val -│ ├── cifar -│ │ ├── cifar-10-batches-py -│ ├── mnist -│ │ ├── train-images-idx3-ubyte -│ │ ├── train-labels-idx1-ubyte -│ │ ├── t10k-images-idx3-ubyte -│ │ ├── t10k-labels-idx1-ubyte - -``` - -For ImageNet, it has multiple versions, but the most commonly used one is [ILSVRC 2012](http://www.image-net.org/challenges/LSVRC/2012/). It can be accessed with the following steps. - -1. Register an account and login to the [download page](http://www.image-net.org/download-images). -2. Find download links for ILSVRC2012 and download the following two files - - ILSVRC2012_img_train.tar (~138GB) - - ILSVRC2012_img_val.tar (~6.3GB) -3. Untar the downloaded files -4. Download meta data using this [script](https://github.com/BVLC/caffe/blob/master/data/ilsvrc12/get_ilsvrc_aux.sh) - -For MNIST, CIFAR10 and CIFAR100, the datasets will be downloaded and unzipped automatically if they are not found. - -For using custom datasets, please refer to [Tutorials 2: Adding New Dataset](tutorials/new_dataset.md). - -## Inference with pretrained models - -We provide scripts to inference a single image, inference a dataset and test a dataset (e.g., ImageNet). - -### Inference a single image - -```shell -python demo/image_demo.py ${IMAGE_FILE} ${CONFIG_FILE} ${CHECKPOINT_FILE} -``` - -### Inference and test a dataset - -- single GPU -- single node multiple GPU -- multiple node - -You can use the following commands to infer a dataset. - -```shell -# single-gpu -python tools/test.py ${CONFIG_FILE} ${CHECKPOINT_FILE} [--metrics ${METRICS}] [--out ${RESULT_FILE}] - -# multi-gpu -./tools/dist_test.sh ${CONFIG_FILE} ${CHECKPOINT_FILE} ${GPU_NUM} [--metrics ${METRICS}] [--out ${RESULT_FILE}] - -# multi-node in slurm environment -python tools/test.py ${CONFIG_FILE} ${CHECKPOINT_FILE} [--metrics ${METRICS}] [--out ${RESULT_FILE}] --launcher slurm -``` - -Optional arguments: - -- `RESULT_FILE`: Filename of the output results. If not specified, the results will not be saved to a file. Support formats include json, yaml and pickle. -- `METRICS`:Items to be evaluated on the results, like accuracy, precision, recall, etc. - -Examples: - -Assume that you have already downloaded the checkpoints to the directory `checkpoints/`. -Infer ResNet-50 on ImageNet validation set to get predicted labels and their corresponding predicted scores. - -```shell -python tools/test.py configs/imagenet/resnet50_batch256.py checkpoints/xxx.pth --out result.pkl -``` - -## Train a model - -MMClassification implements distributed training and non-distributed training, -which uses `MMDistributedDataParallel` and `MMDataParallel` respectively. - -All outputs (log files and checkpoints) will be saved to the working directory, -which is specified by `work_dir` in the config file. - -By default we evaluate the model on the validation set after each epoch, you can change the evaluation interval by adding the interval argument in the training config. - -```python -evaluation = dict(interval=12) # This evaluate the model per 12 epoch. -``` - -### Train with a single GPU - -```shell -python tools/train.py ${CONFIG_FILE} [optional arguments] -``` - -If you want to specify the working directory in the command, you can add an argument `--work_dir ${YOUR_WORK_DIR}`. - -### Train with multiple GPUs - -```shell -./tools/dist_train.sh ${CONFIG_FILE} ${GPU_NUM} [optional arguments] -``` - -Optional arguments are: - -- `--no-validate` (**not suggested**): By default, the codebase will perform evaluation at every k (default value is 1) epochs during the training. To disable this behavior, use `--no-validate`. -- `--work-dir ${WORK_DIR}`: Override the working directory specified in the config file. -- `--resume-from ${CHECKPOINT_FILE}`: Resume from a previous checkpoint file. - -Difference between `resume-from` and `load-from`: -`resume-from` loads both the model weights and optimizer status, and the epoch is also inherited from the specified checkpoint. It is usually used for resuming the training process that is interrupted accidentally. -`load-from` only loads the model weights and the training epoch starts from 0. It is usually used for finetuning. - -### Train with multiple machines - -If you run MMClassification on a cluster managed with [slurm](https://slurm.schedmd.com/), you can use the script `slurm_train.sh`. (This script also supports single machine training.) - -```shell -[GPUS=${GPUS}] ./tools/slurm_train.sh ${PARTITION} ${JOB_NAME} ${CONFIG_FILE} ${WORK_DIR} -``` - -You can check [slurm_train.sh](https://github.com/open-mmlab/mmclassification/blob/master/tools/slurm_train.sh) for full arguments and environment variables. - -If you have just multiple machines connected with ethernet, you can refer to -PyTorch [launch utility](https://pytorch.org/docs/stable/distributed_deprecated.html#launch-utility). -Usually it is slow if you do not have high speed networking like InfiniBand. - -### Launch multiple jobs on a single machine - -If you launch multiple jobs on a single machine, e.g., 2 jobs of 4-GPU training on a machine with 8 GPUs, -you need to specify different ports (29500 by default) for each job to avoid communication conflict. - -If you use `dist_train.sh` to launch training jobs, you can set the port in commands. - -```shell -CUDA_VISIBLE_DEVICES=0,1,2,3 PORT=29500 ./tools/dist_train.sh ${CONFIG_FILE} 4 -CUDA_VISIBLE_DEVICES=4,5,6,7 PORT=29501 ./tools/dist_train.sh ${CONFIG_FILE} 4 -``` - -If you use launch training jobs with Slurm, you need to modify the config files (usually the 6th line from the bottom in config files) to set different communication ports. - -In `config1.py`, - -```python -dist_params = dict(backend='nccl', port=29500) -``` - -In `config2.py`, - -```python -dist_params = dict(backend='nccl', port=29501) -``` - -Then you can launch two jobs with `config1.py` ang `config2.py`. - -```shell -CUDA_VISIBLE_DEVICES=0,1,2,3 GPUS=4 ./tools/slurm_train.sh ${PARTITION} ${JOB_NAME} config1.py ${WORK_DIR} -CUDA_VISIBLE_DEVICES=4,5,6,7 GPUS=4 ./tools/slurm_train.sh ${PARTITION} ${JOB_NAME} config2.py ${WORK_DIR} -``` - -## Useful tools - -We provide lots of useful tools under `tools/` directory. - -### Get the FLOPs and params (experimental) - -We provide a script adapted from [flops-counter.pytorch](https://github.com/sovrasov/flops-counter.pytorch) to compute the FLOPs and params of a given model. - -```shell -python tools/get_flops.py ${CONFIG_FILE} [--shape ${INPUT_SHAPE}] -``` - -You will get the result like this. - -``` -============================== -Input shape: (3, 224, 224) -Flops: 4.12 GFLOPs -Params: 25.56 M -============================== -``` - -**Note**: This tool is still experimental and we do not guarantee that the number is correct. You may well use the result for simple comparisons, but double check it before you adopt it in technical reports or papers. - -(1) FLOPs are related to the input shape while parameters are not. The default input shape is (1, 3, 224, 224). -(2) Some operators are not counted into FLOPs like GN and custom operators. Refer to [`mmcv.cnn.get_model_complexity_info()`](https://github.com/open-mmlab/mmcv/blob/master/mmcv/cnn/utils/flops_counter.py) for details. - -### Publish a model - -Before you upload a model to AWS, you may want to -(1) convert model weights to CPU tensors -(2) delete the optimizer states -(3) compute the hash of the checkpoint file and append the hash id to the filename. - -```shell -python tools/publish_model.py ${INPUT_FILENAME} ${OUTPUT_FILENAME} -``` - -E.g., - -```shell -python tools/publish_model.py work_dirs/resnet50/latest.pth imagenet_resnet50_20200708.pth -``` - -The final output filename will be `imagenet_resnet50_20200708-{hash id}.pth`. - -## Tutorials - -Currently, we provide five tutorials for users. - -- [finetune models](tutorials/finetune.md) -- [add new dataset](tutorials/new_dataset.md) -- [design data pipeline](tutorials/data_pipeline.md) -- [add new modules](tutorials/new_modules.md). diff --git a/openmmlab_test/mmclassification-speed-benchmark/docs/imgs/qq_group_qrcode.jpg b/openmmlab_test/mmclassification-speed-benchmark/docs/imgs/qq_group_qrcode.jpg deleted file mode 100644 index 417347449fe64cbb2c9076601f7a8206d8b54706..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 204806 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 diff --git a/openmmlab_test/mmclassification-speed-benchmark/docs/index.rst b/openmmlab_test/mmclassification-speed-benchmark/docs/index.rst deleted file mode 100644 index eaa5d883..00000000 --- a/openmmlab_test/mmclassification-speed-benchmark/docs/index.rst +++ /dev/null @@ -1,52 +0,0 @@ -Welcome to MMClassification's documentation! -========================================== - -You can switch between Chinese and English documents in the lower-left corner of the layout. - -您可以在页面左下角切换中英文文档。 - -.. toctree:: - :maxdepth: 2 - :caption: Get Started - - install.md - getting_started.md - - -.. toctree:: - :maxdepth: 2 - :caption: Model zoo - - modelzoo_statistics.md - - -.. toctree:: - :maxdepth: 2 - :caption: Tutorials - - tutorials/finetune.md - tutorials/new_dataset.md - tutorials/data_pipeline.md - tutorials/new_modules.md - - -.. toctree:: - :maxdepth: 2 - :caption: Useful Tools and Scripts - - tutorials/pytorch2onnx.md - tutorials/onnx2tensorrt.md - - -.. toctree:: - :caption: Language Switch - - switch_language.md - - - -Indices and tables -================== - -* :ref:`genindex` -* :ref:`search` diff --git a/openmmlab_test/mmclassification-speed-benchmark/docs/install.md b/openmmlab_test/mmclassification-speed-benchmark/docs/install.md deleted file mode 100644 index 58f3e03c..00000000 --- a/openmmlab_test/mmclassification-speed-benchmark/docs/install.md +++ /dev/null @@ -1,87 +0,0 @@ -## Installation - -### Requirements - -- Python 3.6+ -- PyTorch 1.3+ -- [MMCV](https://github.com/open-mmlab/mmcv) - -The compatible MMClassification and MMCV versions are as below. Please install the correct version of MMCV to avoid installation issues. - -| MMClassification version | MMCV version | -|:-------------------:|:-------------------:| -| master | mmcv>=1.3.1, <=1.5.0 | -| 0.12.0 | mmcv>=1.3.1, <=1.5.0 | -| 0.11.1 | mmcv>=1.3.1, <=1.5.0 | -| 0.11.0 | mmcv>=1.3.0 | -| 0.10.0 | mmcv>=1.3.0 | -| 0.9.0 | mmcv>=1.1.4 | -| 0.8.0 | mmcv>=1.1.4 | -| 0.7.0 | mmcv>=1.1.4 | -| 0.6.0 | mmcv>=1.1.4 | - -### Install MMClassification - -a. Create a conda virtual environment and activate it. - -```shell -conda create -n open-mmlab python=3.7 -y -conda activate open-mmlab -``` - -b. Install PyTorch and torchvision following the [official instructions](https://pytorch.org/), e.g., - -```shell -conda install pytorch torchvision -c pytorch -``` - -Note: Make sure that your compilation CUDA version and runtime CUDA version match. -You can check the supported CUDA version for precompiled packages on the [PyTorch website](https://pytorch.org/). - -`E.g.1` If you have CUDA 10.1 installed under `/usr/local/cuda` and would like to install -PyTorch 1.5, you need to install the prebuilt PyTorch with CUDA 10.1. - -```shell -conda install pytorch cudatoolkit=10.1 torchvision -c pytorch -``` - -`E.g.2` If you have CUDA 9.2 installed under `/usr/local/cuda` and would like to install -PyTorch 1.3.1., you need to install the prebuilt PyTorch with CUDA 9.2. - -```shell -conda install pytorch=1.3.1 cudatoolkit=9.2 torchvision=0.4.2 -c pytorch -``` - -If you build PyTorch from source instead of installing the prebuilt pacakge, -you can use more CUDA versions such as 9.0. - -c. Clone the mmclassification repository. - -```shell -git clone https://github.com/open-mmlab/mmclassification.git -cd mmclassification -``` - -d. Install build requirements and then install mmclassification. - -```shell -pip install -e . # or "python setup.py develop" -``` - -Note: - -1. Following the above instructions, mmclassification is installed on `dev` mode, any local modifications made to the code will take effect without the need to reinstall it (unless you submit some commits and want to update the version number). - -2. If you would like to use `opencv-python-headless` instead of `opencv-python`, - -you can install it before installing [mmcv](https://github.com/open-mmlab/mmcv). - -### Using multiple MMClassification versions - -The train and test scripts already modify the `PYTHONPATH` to ensure the script use the MMClassification in the current directory. - -To use the default MMClassification installed in the environment rather than that you are working with, you can remove the following line in those scripts - -```shell -PYTHONPATH="$(dirname $0)/..":$PYTHONPATH -``` diff --git a/openmmlab_test/mmclassification-speed-benchmark/docs/model_zoo.md b/openmmlab_test/mmclassification-speed-benchmark/docs/model_zoo.md deleted file mode 100644 index 1fcabf98..00000000 --- a/openmmlab_test/mmclassification-speed-benchmark/docs/model_zoo.md +++ /dev/null @@ -1,54 +0,0 @@ -# Model Zoo - -## ImageNet - -ImageNet has multiple versions, but the most commonly used one is [ILSVRC 2012](http://www.image-net.org/challenges/LSVRC/2012/). -The ResNet family models below are trained by standard data augmentations, i.e., RandomResizedCrop, RandomHorizontalFlip and Normalize. - -| Model | Params(M) | Flops(G) | Top-1 (%) | Top-5 (%) | Config | Download | -|:---------------------:|:---------:|:--------:|:---------:|:---------:|:---------:|:--------:| -| VGG-11 | 132.86 | 7.63 | 68.75 | 88.87 | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/vgg/vgg11_b32x8_imagenet.py) | [model](https://download.openmmlab.com/mmclassification/v0/vgg/vgg11_batch256_imagenet_20210208-4271cd6c.pth) | [log](https://download.openmmlab.com/mmclassification/v0/vgg/vgg11_batch256_imagenet_20210208-4271cd6c.log.json) | -| VGG-13 | 133.05 | 11.34 | 70.02 | 89.46 | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/vgg/vgg13_b32x8_imagenet.py) | [model](https://download.openmmlab.com/mmclassification/v0/vgg/vgg13_batch256_imagenet_20210208-4d1d6080.pth) | [log](https://download.openmmlab.com/mmclassification/v0/vgg/vgg13_batch256_imagenet_20210208-4d1d6080.log.json) | -| VGG-16 | 138.36 | 15.5 | 71.62 | 90.49 | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/vgg/vgg16_b32x8_imagenet.py) | [model](https://download.openmmlab.com/mmclassification/v0/vgg/vgg16_batch256_imagenet_20210208-db26f1a5.pth) | [log](https://download.openmmlab.com/mmclassification/v0/vgg/vgg16_batch256_imagenet_20210208-db26f1a5.log.json) | -| VGG-19 | 143.67 | 19.67 | 72.41 | 90.80 | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/vgg/vgg19_b32x8_imagenet.py) | [model](https://download.openmmlab.com/mmclassification/v0/vgg/vgg19_bn_batch256_imagenet_20210208-da620c4f.pth) | [log](https://download.openmmlab.com/mmclassification/v0/vgg/vgg19_bn_batch256_imagenet_20210208-da620c4f.log.json)| -| VGG-11-BN | 132.87 | 7.64 | 70.75 | 90.12 | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/vgg/vgg11bn_b32x8_imagenet.py) | [model](https://download.openmmlab.com/mmclassification/v0/vgg/vgg11_bn_batch256_imagenet_20210207-f244902c.pth) | [log](https://download.openmmlab.com/mmclassification/v0/vgg/vgg11_bn_batch256_imagenet_20210207-f244902c.log.json) | -| VGG-13-BN | 133.05 | 11.36 | 72.15 | 90.71 | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/vgg/vgg13bn_b32x8_imagenet.py) | [model](https://download.openmmlab.com/mmclassification/v0/vgg/vgg13_bn_batch256_imagenet_20210207-1a8b7864.pth) | [log](https://download.openmmlab.com/mmclassification/v0/vgg/vgg13_bn_batch256_imagenet_20210207-1a8b7864.log.json) | -| VGG-16-BN | 138.37 | 15.53 | 73.72 | 91.68 | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/vgg/vgg16_b32x8_imagenet.py) | [model](https://download.openmmlab.com/mmclassification/v0/vgg/vgg16_bn_batch256_imagenet_20210208-7e55cd29.pth) | [log](https://download.openmmlab.com/mmclassification/v0/vgg/vgg16_bn_batch256_imagenet_20210208-7e55cd29.log.json) | -| VGG-19-BN | 143.68 | 19.7 | 74.70 | 92.24 | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/vgg/vgg19bn_b32x8_imagenet.py) | [model](https://download.openmmlab.com/mmclassification/v0/vgg/vgg19_bn_batch256_imagenet_20210208-da620c4f.pth) | [log](https://download.openmmlab.com/mmclassification/v0/vgg/vgg19_bn_batch256_imagenet_20210208-da620c4f.log.json)| -| ResNet-18 | 11.69 | 1.82 | 70.07 | 89.44 | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/resnet/resnet18_b32x8_imagenet.py) | [model](https://download.openmmlab.com/mmclassification/v0/resnet/resnet18_batch256_imagenet_20200708-34ab8f90.pth) | [log](https://download.openmmlab.com/mmclassification/v0/resnet/resnet18_batch256_imagenet_20200708-34ab8f90.log.json) | -| ResNet-34 | 21.8 | 3.68 | 73.85 | 91.53 | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/resnet/resnet34_b32x8_imagenet.py) | [model](https://download.openmmlab.com/mmclassification/v0/resnet/resnet34_batch256_imagenet_20200708-32ffb4f7.pth) | [log](https://download.openmmlab.com/mmclassification/v0/resnet/resnet34_batch256_imagenet_20200708-32ffb4f7.log.json) | -| ResNet-50 | 25.56 | 4.12 | 76.55 | 93.15 | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/resnet/resnet50_b32x8_imagenet.py) | [model](https://download.openmmlab.com/mmclassification/v0/resnet/resnet50_batch256_imagenet_20200708-cfb998bf.pth) | [log](https://download.openmmlab.com/mmclassification/v0/resnet/resnet50_batch256_imagenet_20200708-cfb998bf.log.json) | -| ResNet-101 | 44.55 | 7.85 | 78.18 | 94.03 | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/resnet/resnet101_b32x8_imagenet.py) | [model](https://download.openmmlab.com/mmclassification/v0/resnet/resnet101_batch256_imagenet_20200708-753f3608.pth) | [log](https://download.openmmlab.com/mmclassification/v0/resnet/resnet101_batch256_imagenet_20200708-753f3608.log.json) | -| ResNet-152 | 60.19 | 11.58 | 78.63 | 94.16 | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/resnet/resnet152_b32x8_imagenet.py) | [model](https://download.openmmlab.com/mmclassification/v0/resnet/resnet152_batch256_imagenet_20200708-ec25b1f9.pth) | [log](https://download.openmmlab.com/mmclassification/v0/resnet/resnet152_batch256_imagenet_20200708-ec25b1f9.log.json) | -| ResNeSt-50* | 27.48 | 5.41 | 81.13 | 95.59 | | [model](https://download.openmmlab.com/mmclassification/v0/resnest/resnest50_imagenet_converted-1ebf0afe.pth) | [log]() | -| ResNeSt-101* | 48.28 | 10.27 | 82.32 | 96.24 | | [model](https://download.openmmlab.com/mmclassification/v0/resnest/resnest101_imagenet_converted-032caa52.pth) | [log]() | -| ResNeSt-200* | 70.2 | 17.53 | 82.41 | 96.22 | | [model](https://download.openmmlab.com/mmclassification/v0/resnest/resnest200_imagenet_converted-581a60f2.pth) | [log]() | -| ResNeSt-269* | 110.93 | 22.58 | 82.70 | 96.28 | | [model](https://download.openmmlab.com/mmclassification/v0/resnest/resnest269_imagenet_converted-59930960.pth) | [log]() | -| ResNetV1D-50 | 25.58 | 4.36 | 77.54 | 93.57 | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/resnet/resnetv1d50_b32x8_imagenet.py) | [model](https://download.openmmlab.com/mmclassification/v0/resnet/resnetv1d50_b32x8_imagenet_20210531-db14775a.pth) | [log](https://download.openmmlab.com/mmclassification/v0/resnet/resnetv1d50_b32x8_imagenet_20210531-db14775a.log.json) | -| ResNetV1D-101 | 44.57 | 8.09 | 78.93 | 94.48 | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/resnet/resnetv1d101_b32x8_imagenet.py) | [model](https://download.openmmlab.com/mmclassification/v0/resnet/resnetv1d101_b32x8_imagenet_20210531-6e13bcd3.pth) | [log](https://download.openmmlab.com/mmclassification/v0/resnet/resnetv1d101_b32x8_imagenet_20210531-6e13bcd3.log.json) | -| ResNetV1D-152 | 60.21 | 11.82 | 79.41 | 94.7 | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/resnet/resnetv1d152_b32x8_imagenet.py) | [model](https://download.openmmlab.com/mmclassification/v0/resnet/resnetv1d152_b32x8_imagenet_20210531-278cf22a.pth) | [log](https://download.openmmlab.com/mmclassification/v0/resnet/resnetv1d152_b32x8_imagenet_20210531-278cf22a.log.json) | -| ResNeXt-32x4d-50 | 25.03 | 4.27 | 77.90 | 93.66 | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/resnext/resnext50_32x4d_b32x8_imagenet.py) | [model](https://download.openmmlab.com/mmclassification/v0/resnext/resnext50_32x4d_b32x8_imagenet_20210429-56066e27.pth) | [log](https://download.openmmlab.com/mmclassification/v0/resnext/resnext50_32x4d_b32x8_imagenet_20210429-56066e27.log.json) | -| ResNeXt-32x4d-101 | 44.18 | 8.03 | 78.71 | 94.12 | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/resnext/resnext101_32x4d_b32x8_imagenet.py) | [model](https://download.openmmlab.com/mmclassification/v0/resnext/resnext101_32x4d_b32x8_imagenet_20210506-e0fa3dd5.pth) | [log](https://download.openmmlab.com/mmclassification/v0/resnext/resnext101_32x4d_b32x8_imagenet_20210506-e0fa3dd5.log.json) | -| ResNeXt-32x8d-101 | 88.79 | 16.5 | 79.23 | 94.58 | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/resnext/resnext101_32x8d_b32x8_imagenet.py) | [model](https://download.openmmlab.com/mmclassification/v0/resnext/resnext101_32x8d_b32x8_imagenet_20210506-23a247d5.pth) | [log](https://download.openmmlab.com/mmclassification/v0/resnext/resnext101_32x8d_b32x8_imagenet_20210506-23a247d5.log.json) | -| ResNeXt-32x4d-152 | 59.95 | 11.8 | 78.93 | 94.41 | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/resnext/resnext152_32x4d_b32x8_imagenet.py) | [model](https://download.openmmlab.com/mmclassification/v0/resnext/resnext152_32x4d_b32x8_imagenet_20210524-927787be.pth) | [log](https://download.openmmlab.com/mmclassification/v0/resnext/resnext152_32x4d_b32x8_imagenet_20210524-927787be.log.json) | -| SE-ResNet-50 | 28.09 | 4.13 | 77.74 | 93.84 | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/seresnet/seresnet50_b32x8_imagenet.py) | [model](https://download.openmmlab.com/mmclassification/v0/se-resnet/se-resnet50_batch256_imagenet_20200804-ae206104.pth) | [log](https://download.openmmlab.com/mmclassification/v0/se-resnet/se-resnet50_batch256_imagenet_20200708-657b3c36.log.json) | -| SE-ResNet-101 | 49.33 | 7.86 | 78.26 | 94.07 | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/seresnet/seresnet101_b32x8_imagenet.py) | [model](https://download.openmmlab.com/mmclassification/v0/se-resnet/se-resnet101_batch256_imagenet_20200804-ba5b51d4.pth) | [log](https://download.openmmlab.com/mmclassification/v0/se-resnet/se-resnet101_batch256_imagenet_20200708-038a4d04.log.json) | -| ShuffleNetV1 1.0x (group=3) | 1.87 | 0.146 | 68.13 | 87.81 | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/shufflenet_v1/shufflenet_v1_1x_b64x16_linearlr_bn_nowd_imagenet.py) | [model](https://download.openmmlab.com/mmclassification/v0/shufflenet_v1/shufflenet_v1_batch1024_imagenet_20200804-5d6cec73.pth) | [log](https://download.openmmlab.com/mmclassification/v0/shufflenet_v1/shufflenet_v1_batch1024_imagenet_20200804-5d6cec73.log.json) | -| ShuffleNetV2 1.0x | 2.28 | 0.149 | 69.55 | 88.92 | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/shufflenet_v2/shufflenet_v2_1x_b64x16_linearlr_bn_nowd_imagenet.py) | [model](https://download.openmmlab.com/mmclassification/v0/shufflenet_v2/shufflenet_v2_batch1024_imagenet_20200812-5bf4721e.pth) | [log](https://download.openmmlab.com/mmclassification/v0/shufflenet_v2/shufflenet_v2_batch1024_imagenet_20200804-8860eec9.log.json) | -| MobileNet V2 | 3.5 | 0.319 | 71.86 | 90.42 | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/mobilenet_v2/mobilenet_v2_b32x8_imagenet.py) | [model](https://download.openmmlab.com/mmclassification/v0/mobilenet_v2/mobilenet_v2_batch256_imagenet_20200708-3b2dc3af.pth) | [log](https://download.openmmlab.com/mmclassification/v0/mobilenet_v2/mobilenet_v2_batch256_imagenet_20200708-3b2dc3af.log.json) | -| ViT-B/16* | 86.86 | 33.03 | 84.20 | 97.18 | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/vision_transformer/vit_base_patch16_384_finetune_imagenet.py) | [model](https://download.openmmlab.com/mmclassification/v0/vit/vit_base_patch16_384.pth) | [log]() | -| ViT-B/32* | 88.3 | 8.56 | 81.73 | 96.13 | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/vision_transformer/vit_base_patch32_384_finetune_imagenet.py) | [model](https://download.openmmlab.com/mmclassification/v0/vit/vit_base_patch32_384.pth) | [log]() | -| ViT-L/16* | 304.72 | 116.68 | 85.08 | 97.38 | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/vision_transformer/vit_large_patch16_384_finetune_imagenet.py) | [model](https://download.openmmlab.com/mmclassification/v0/vit/vit_large_patch16_384.pth) | [log]() | -| ViT-L/32* | 306.63 | 29.66 | 81.52 | 96.06 | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/vision_transformer/vit_large_patch32_384_finetune_imagenet.py) | [model](https://download.openmmlab.com/mmclassification/v0/vit/vit_large_patch32_384.pth) | [log]() | - -Models with * are converted from other repos, others are trained by ourselves. - -## CIFAR10 - -| Model | Params(M) | Flops(G) | Top-1 (%) | Config | Download | -|:---------------------:|:---------:|:--------:|:---------:|:--------:|:--------:| -| ResNet-18-b16x8 | 11.17 | 0.56 | 94.82 | | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/resnet/resnet18_b16x8_cifar10.py) | [model](https://download.openmmlab.com/mmclassification/v0/resnet/resnet18_b16x8_cifar10_20210528-bd6371c8.pth) | [log](https://download.openmmlab.com/mmclassification/v0/resnet/resnet18_b16x8_cifar10_20210528-bd6371c8.log.json) | -| ResNet-34-b16x8 | 21.28 | 1.16 | 95.34 | | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/resnet/resnet34_b16x8_cifar10.py) | [model](https://download.openmmlab.com/mmclassification/v0/resnet/resnet34_b16x8_cifar10_20210528-a8aa36a6.pth) | [log](https://download.openmmlab.com/mmclassification/v0/resnet/resnet34_b16x8_cifar10_20210528-a8aa36a6.log.json) | -| ResNet-50-b16x8 | 23.52 | 1.31 | 95.55 | | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/resnet/resnet50_b16x8_cifar10.py) | [model](https://download.openmmlab.com/mmclassification/v0/resnet/resnet50_b16x8_cifar10_20210528-f54bfad9.pth) | [log](https://download.openmmlab.com/mmclassification/v0/resnet/resnet50_b16x8_cifar10_20210528-f54bfad9.log.json) | -| ResNet-101-b16x8 | 42.51 | 2.52 | 95.58 | | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/resnet/resnet101_b16x8_cifar10.py) | [model](https://download.openmmlab.com/mmclassification/v0/resnet/resnet101_b16x8_cifar10_20210528-2d29e936.pth) | [log](https://download.openmmlab.com/mmclassification/v0/resnet/resnet101_b16x8_cifar10_20210528-2d29e936.log.json) | -| ResNet-152-b16x8 | 58.16 | 3.74 | 95.76 | | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/resnet/resnet152_b16x8_cifar10.py) | [model](https://download.openmmlab.com/mmclassification/v0/resnet/resnet152_b16x8_cifar10_20210528-3e8e9178.pth) | [log](https://download.openmmlab.com/mmclassification/v0/resnet/resnet152_b16x8_cifar10_20210528-3e8e9178.log.json) | diff --git a/openmmlab_test/mmclassification-speed-benchmark/docs/stat.py b/openmmlab_test/mmclassification-speed-benchmark/docs/stat.py deleted file mode 100644 index 1dcd9f58..00000000 --- a/openmmlab_test/mmclassification-speed-benchmark/docs/stat.py +++ /dev/null @@ -1,65 +0,0 @@ -#!/usr/bin/env python -import functools as func -import glob -import os.path as osp -import re - -import numpy as np - -url_prefix = 'https://github.com/open-mmlab/mmclassification/blob/master/' - -files = sorted(glob.glob('../configs/*/README.md')) - -stats = [] -titles = [] -num_ckpts = 0 -num_configs = 0 - -for f in files: - url = osp.dirname(f.replace('../', url_prefix)) - - with open(f, 'r') as content_file: - content = content_file.read() - - title = content.split('\n')[0].replace('# ', '').strip() - - ckpts = set(x.lower().strip() - for x in re.findall(r'\[model\]\((https?.*)\)', content)) - - if len(ckpts) == 0: - continue - - _papertype = [x for x in re.findall(r'\[([A-Z]+)\]', content)] - assert len(_papertype) > 0 - papertype = _papertype[0] - - paper = set([(papertype, title)]) - - num_ckpts += len(ckpts) - titles.append(title) - - statsmsg = f""" -\t* [{papertype}] [{title}]({url}) ({len(ckpts)} ckpts) -""" - stats.append((paper, ckpts, statsmsg)) - -allpapers = func.reduce(lambda a, b: a.union(b), [p for p, _, _ in stats]) -msglist = '\n'.join(x for _, _, x in stats) - -papertypes, papercounts = np.unique([t for t, _ in allpapers], - return_counts=True) -countstr = '\n'.join( - [f' - {t}: {c}' for t, c in zip(papertypes, papercounts)]) - -modelzoo = f""" -# Model Zoo Statistics - -* Number of papers: {len(set(titles))} -{countstr} - -* Number of checkpoints: {num_ckpts} -{msglist} -""" - -with open('modelzoo_statistics.md', 'w') as f: - f.write(modelzoo) diff --git a/openmmlab_test/mmclassification-speed-benchmark/docs/switch_language.md b/openmmlab_test/mmclassification-speed-benchmark/docs/switch_language.md deleted file mode 100644 index dcf3b297..00000000 --- a/openmmlab_test/mmclassification-speed-benchmark/docs/switch_language.md +++ /dev/null @@ -1,3 +0,0 @@ -## English - -## 简体中文 diff --git a/openmmlab_test/mmclassification-speed-benchmark/docs/tutorials/MMClassification_Tutorial.ipynb b/openmmlab_test/mmclassification-speed-benchmark/docs/tutorials/MMClassification_Tutorial.ipynb deleted file mode 100644 index b724a12c..00000000 --- a/openmmlab_test/mmclassification-speed-benchmark/docs/tutorials/MMClassification_Tutorial.ipynb +++ /dev/null @@ -1,2353 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "metadata": { - "colab_type": "text", - "id": "FVmnaxFJvsb8" - }, - "source": [ - "# MMClassification Tutorial\n", - "Welcome to MMClassification!\n", - "\n", - "In this tutorial, we demo\n", - "* How to install MMCls\n", - "* How to do inference and feature extraction with MMCls trained weight\n", - "* How to train on your own dataset and visualize the results. \n", - "* How to use command line tools" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "colab_type": "text", - "id": "QS8YHrEhbpas" - }, - "source": [ - "## Install MMClassification\n", - "This step may take several minutes.\n", - "\n", - "We use PyTorch 1.5.0 and CUDA 10.1 for this tutorial. You may install other versions by change the version number in pip install command." - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/", - "height": 170 - }, - "colab_type": "code", - "id": "UWyLrLYaNEaL", - "outputId": "35b19c63-d6f3-49e1-dcaa-aed3ecd85ed7" - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "nvcc: NVIDIA (R) Cuda compiler driver\n", - "Copyright (c) 2005-2019 NVIDIA Corporation\n", - "Built on Wed_Oct_23_19:24:38_PDT_2019\n", - "Cuda compilation tools, release 10.2, V10.2.89\n", - "gcc (Ubuntu 5.4.0-6ubuntu1~16.04.12) 5.4.0 20160609\n", - "Copyright (C) 2015 Free Software Foundation, Inc.\n", - "This is free software; see the source for copying conditions. There is NO\n", - "warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n", - "\n" - ] - } - ], - "source": [ - "# Check nvcc version\n", - "!nvcc -V\n", - "# Check GCC version\n", - "!gcc --version" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/", - "height": 340 - }, - "colab_type": "code", - "id": "Ki3WUBjKbutg", - "outputId": "69f42fab-3f44-44d0-bd62-b73836f90a3d" - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Looking in indexes: https://mirrors.aliyun.com/pypi/simple\n", - "Looking in links: https://download.pytorch.org/whl/torch_stable.html\n", - "Requirement already up-to-date: torch==1.5.0+cu101 in /home/SENSETIME/shaoyidi/anaconda3/lib/python3.8/site-packages (1.5.0+cu101)\n", - "Requirement already up-to-date: torchvision==0.6.0+cu101 in /home/SENSETIME/shaoyidi/anaconda3/lib/python3.8/site-packages (0.6.0+cu101)\n", - "Requirement already satisfied, skipping upgrade: numpy in /home/SENSETIME/shaoyidi/anaconda3/lib/python3.8/site-packages (from torch==1.5.0+cu101) (1.19.2)\n", - "Requirement already satisfied, skipping upgrade: future in /home/SENSETIME/shaoyidi/anaconda3/lib/python3.8/site-packages (from torch==1.5.0+cu101) (0.18.2)\n", - "Requirement already satisfied, skipping upgrade: pillow>=4.1.1 in /home/SENSETIME/shaoyidi/anaconda3/lib/python3.8/site-packages (from torchvision==0.6.0+cu101) (8.0.1)\n", - "Looking in indexes: https://mirrors.aliyun.com/pypi/simple\n", - "Looking in links: https://download.openmmlab.com/mmcv/dist/cu101/torch1.5.0/index.html\n", - "Requirement already satisfied: mmcv-full in /home/SENSETIME/shaoyidi/anaconda3/lib/python3.8/site-packages (1.2.7)\n", - "Requirement already satisfied: Pillow in /home/SENSETIME/shaoyidi/anaconda3/lib/python3.8/site-packages (from mmcv-full) (8.0.1)\n", - "Requirement already satisfied: opencv-python>=3 in /home/SENSETIME/shaoyidi/anaconda3/lib/python3.8/site-packages (from mmcv-full) (4.5.1.48)\n", - "Requirement already satisfied: yapf in /home/SENSETIME/shaoyidi/anaconda3/lib/python3.8/site-packages (from mmcv-full) (0.30.0)\n", - "Requirement already satisfied: numpy in /home/SENSETIME/shaoyidi/anaconda3/lib/python3.8/site-packages (from mmcv-full) (1.19.2)\n", - "Requirement already satisfied: addict in /home/SENSETIME/shaoyidi/anaconda3/lib/python3.8/site-packages (from mmcv-full) (2.4.0)\n", - "Requirement already satisfied: pyyaml in /home/SENSETIME/shaoyidi/anaconda3/lib/python3.8/site-packages (from mmcv-full) (5.3.1)\n" - ] - } - ], - "source": [ - "# Install PyTorch\n", - "!pip install -U torch==1.5.0+cu101 torchvision==0.6.0+cu101 -f https://download.pytorch.org/whl/torch_stable.html\n", - "# Install mmcv\n", - "# !pip install mmcv-full\n", - "# !pip install mmcv-full -f https://download.openmmlab.com/mmcv/dist/{cu_version}/{torch_version}/index.html\n", - "!pip install mmcv-full -f https://download.openmmlab.com/mmcv/dist/cu101/torch1.5.0/index.html" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/", - "height": 374 - }, - "colab_type": "code", - "id": "nR-hHRvbNJJZ", - "outputId": "ca6d9c48-0034-47cf-97b5-f31f529cc31c" - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "fatal: destination path 'mmclassification' already exists and is not an empty directory.\n", - "/home/SENSETIME/shaoyidi/VirtualenvProjects/add_tutorials/MMCls_Tutorials/mmclassification\n", - "Looking in indexes: https://mirrors.aliyun.com/pypi/simple\n", - "Obtaining file:///home/SENSETIME/shaoyidi/VirtualenvProjects/add_tutorials/MMCls_Tutorials/mmclassification\n", - "Requirement already satisfied: matplotlib in /home/SENSETIME/shaoyidi/anaconda3/lib/python3.8/site-packages (from mmcls==0.9.0) (3.3.2)\n", - "Requirement already satisfied: numpy in /home/SENSETIME/shaoyidi/anaconda3/lib/python3.8/site-packages (from mmcls==0.9.0) (1.19.2)\n", - "Requirement already satisfied: python-dateutil>=2.1 in /home/SENSETIME/shaoyidi/anaconda3/lib/python3.8/site-packages (from matplotlib->mmcls==0.9.0) (2.8.1)\n", - "Requirement already satisfied: kiwisolver>=1.0.1 in /home/SENSETIME/shaoyidi/anaconda3/lib/python3.8/site-packages (from matplotlib->mmcls==0.9.0) (1.3.0)\n", - "Requirement already satisfied: pyparsing!=2.0.4,!=2.1.2,!=2.1.6,>=2.0.3 in /home/SENSETIME/shaoyidi/anaconda3/lib/python3.8/site-packages (from matplotlib->mmcls==0.9.0) (2.4.7)\n", - "Requirement already satisfied: cycler>=0.10 in /home/SENSETIME/shaoyidi/anaconda3/lib/python3.8/site-packages (from matplotlib->mmcls==0.9.0) (0.10.0)\n", - "Requirement already satisfied: certifi>=2020.06.20 in /home/SENSETIME/shaoyidi/anaconda3/lib/python3.8/site-packages (from matplotlib->mmcls==0.9.0) (2020.6.20)\n", - "Requirement already satisfied: pillow>=6.2.0 in /home/SENSETIME/shaoyidi/anaconda3/lib/python3.8/site-packages (from matplotlib->mmcls==0.9.0) (8.0.1)\n", - "Requirement already satisfied: six>=1.5 in /home/SENSETIME/shaoyidi/anaconda3/lib/python3.8/site-packages (from python-dateutil>=2.1->matplotlib->mmcls==0.9.0) (1.15.0)\n", - "Installing collected packages: mmcls\n", - " Attempting uninstall: mmcls\n", - " Found existing installation: mmcls 0.9.0\n", - " Uninstalling mmcls-0.9.0:\n", - " Successfully uninstalled mmcls-0.9.0\n", - " Running setup.py develop for mmcls\n", - "Successfully installed mmcls\n" - ] - } - ], - "source": [ - "# Install mmcls\n", - "!git clone https://github.com/open-mmlab/mmclassification.git\n", - "%cd mmclassification\n", - "\n", - "!pip install -e ." - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/", - "height": 51 - }, - "colab_type": "code", - "id": "mAE_h7XhPT7d", - "outputId": "912ec9be-4103-40b8-91cc-4d31e9415f60" - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "1.5.0+cu101 True\n", - "0.9.0\n" - ] - } - ], - "source": [ - "# Check Pytorch installation\n", - "import torch, torchvision\n", - "print(torch.__version__, torch.cuda.is_available())\n", - "\n", - "# Check MMClassification installation\n", - "import mmcls\n", - "print(mmcls.__version__)" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "colab_type": "text", - "id": "eUcuC3dUv32I" - }, - "source": [ - "## Use MMCls pretrained models\n", - "\n", - "MMCls provides many pretrained models in the [model zoo](https://github.com/open-mmlab/mmclassification/blob/master/docs/model_zoo.md).\n", - "These models are already trained to state-of-the-art accuracy on ImageNet dataset.\n", - "We can use pretrained models to classify images or extract image features for downstream tasks.\n", - "\n", - "To use a pretrained model, we need to:\n", - "\n", - "- Prepare the model\n", - " - Prepare the config file \n", - " - Prepare the parameter file\n", - "- Build the model in Python\n", - "- Perform inference tasks, such as classification or feature extraction. \n", - "\n", - "### Prepare Model Files\n", - "\n", - "A pretrained model is defined with a config file and a parameter file. The config file defines the model structure and the parameter file stores all parameters. \n", - "\n", - "MMCls provides pretrained models in separated pages on GitHub. \n", - "For example, config and parameter files for ResNet50 is listed in [this page](https://github.com/open-mmlab/mmclassification/tree/master/configs/resnet).\n", - "\n", - "As we already clone the config file along with the repo, what we need more is to download the parameter file manually. By convention, we store the parameter files into the `checkpoints` folder. " - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "mkdir: cannot create directory ‘checkpoints’: File exists\n", - "--2021-03-11 17:14:56-- https://download.openmmlab.com/mmclassification/v0/resnet/resnet50_batch256_imagenet_20200708-cfb998bf.pth\n", - "Connecting to 172.16.1.135:3128... connected.\n", - "Proxy request sent, awaiting response... 200 OK\n", - "Length: 102491894 (98M) [application/octet-stream]\n", - "Saving to: ‘checkpoints/resnet50_batch256_imagenet_20200708-cfb998bf.pth.2’\n", - "\n", - "resnet50_batch256_i 100%[===================>] 97.74M 9.98MB/s in 9.7s \n", - "\n", - "2021-03-11 17:15:07 (10.1 MB/s) - ‘checkpoints/resnet50_batch256_imagenet_20200708-cfb998bf.pth.2’ saved [102491894/102491894]\n", - "\n" - ] - } - ], - "source": [ - "!mkdir checkpoints\n", - "!wget https://download.openmmlab.com/mmclassification/v0/resnet/resnet50_batch256_imagenet_20200708-cfb998bf.pth -P checkpoints" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Perform inference\n", - "\n", - "MMCls provides high level APIs for inference. \n", - "\n", - "First, we need to build the model." - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "metadata": { - "colab": {}, - "colab_type": "code", - "id": "H8Fxg8i-wHJE" - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Use load_from_local loader\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "/home/SENSETIME/shaoyidi/VirtualenvProjects/add_tutorials/MMCls_Tutorials/mmclassification/mmcls/apis/inference.py:44: UserWarning: Class names are not saved in the checkpoint's meta data, use imagenet by default.\n", - " warnings.warn('Class names are not saved in the checkpoint\\'s '\n" - ] - } - ], - "source": [ - "from mmcls.apis import inference_model, init_model, show_result_pyplot\n", - "\n", - "# Specify the path to config file and checkpoint file\n", - "config_file = 'configs/resnet/resnet50_b32x8_imagenet.py'\n", - "checkpoint_file = 'checkpoints/resnet50_batch256_imagenet_20200708-cfb998bf.pth'\n", - "# Specify the device. You may also use cpu by `device='cpu'`.\n", - "device = 'cuda:0'\n", - "# Build the model from a config file and a checkpoint file\n", - "model = init_model(config_file, checkpoint_file, device=device)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Then, we use the model to classify the sample image. " - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "metadata": { - "colab": {}, - "colab_type": "code", - "id": "izFv6pSRujk9" - }, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "/home/SENSETIME/shaoyidi/anaconda3/lib/python3.8/site-packages/ipykernel/ipkernel.py:287: DeprecationWarning: `should_run_async` will not call `transform_cell` automatically in the future. Please pass the result to `transformed_cell` argument and any exception that happen during thetransform in `preprocessing_exc_tuple` in IPython 7.17 and above.\n", - " and should_run_async(code)\n" - ] - } - ], - "source": [ - "# Test a single image\n", - "img = 'demo/demo.JPEG'\n", - "result = inference_model(model, img)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Let's checkout the result!" - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/", - "height": 504 - }, - "colab_type": "code", - "id": "bDcs9udgunQK", - "outputId": "8221fdb1-92af-4d7c-e65b-c7adf0f5a8af" - }, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "/home/SENSETIME/shaoyidi/VirtualenvProjects/add_tutorials/MMCls_Tutorials/mmclassification/mmcls/models/classifiers/base.py:216: UserWarning: show==False and out_file is not specified, only result image will be returned\n", - " warnings.warn('show==False and out_file is not specified, only '\n" - ] - }, - { - "data": { - "image/png": "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\n", - "text/plain": [ - "

" - ] - }, - "metadata": { - "needs_background": "light" - }, - "output_type": "display_data" - } - ], - "source": [ - "# Show the results\n", - "show_result_pyplot(model, img, result)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Feature extraction\n", - "\n", - "Feature extraction is another inference task. We can use pretrained model to extract sematic feature for downstream tasks. \n", - "MMClassifcation also provides such facilities. \n", - "\n", - "Assuming we have already built model with pretrained weights, there're more steps to do:\n", - "\n", - "1. Load the image processing pipeline. This is very important because we need to ensure data preprocessing during training and testing are the equivalent.\n", - "2. Preprocess the image. \n", - "3. Forward through the model and extract feature." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Here, we load image with test pipeline. " - ] - }, - { - "cell_type": "code", - "execution_count": 9, - "metadata": {}, - "outputs": [], - "source": [ - "from mmcls.datasets.pipelines import Compose\n", - "from mmcv.parallel import collate, scatter\n", - "\n", - "# Pack image info into a dict\n", - "data = dict(img_info=dict(filename=img), img_prefix=None)\n", - "# Parse the test pipeline\n", - "cfg = model.cfg\n", - "test_pipeline = Compose(cfg.data.test.pipeline)\n", - "# Process the image\n", - "data = test_pipeline(data)\n", - "\n", - "# Scatter to specified GPU\n", - "data = collate([data], samples_per_gpu=1)\n", - "if next(model.parameters()).is_cuda:\n", - " data = scatter(data, [device])[0]" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Then, we can use the API from model to get the feature." - ] - }, - { - "cell_type": "code", - "execution_count": 10, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "torch.Size([1, 2048])\n" - ] - } - ], - "source": [ - "# Forward the model\n", - "with torch.no_grad():\n", - " features = model.extract_feat(data['img'])\n", - "\n", - "# Show the feature, it is a 1280-dim vector\n", - "print(features.shape)" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "colab_type": "text", - "id": "Ta51clKX4cwM" - }, - "source": [ - "## Finetune pretrained model with customized dataset\n", - "\n", - "Finetuning is the process in which parameters of a model would be adjusted very precisely in order to fit with certain dataset. Compared with training, it can can save lots of time and reduce overfitting when the new dataset is small. \n", - "\n", - "To finetune on a customized dataset, the following steps are neccessary. \n", - "\n", - "1. Prepare a new dataset. \n", - "2. Support it in MMCls.\n", - "3. Create a config file accordingly. \n", - "4. Perform training and evaluation.\n", - "\n", - "More details can be found [here](https://github.com/open-mmlab/mmclassification/blob/master/docs/tutorials/new_dataset.md).\n", - "\n" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "colab_type": "text", - "id": "AcZg6x_K5Zs3" - }, - "source": [ - "### Prepare dataset\n", - "\n", - "Before we support a new dataset, we need download existing dataset first.\n", - "\n", - "We use [Cats and Dogs dataset](https://www.dropbox.com/s/wml49yrtdo53mie/cats_dogs_dataset_reorg.zip?dl=0) as an example. For simplicity, we have reorganized the directory structure for further usage. Origianl dataset can be found [here](https://www.kaggle.com/tongpython/cat-and-dog). The dataset consists of 8k images for training and 2k images for testing. There are 2 classes in total, i.e. cat and dog." - ] - }, - { - "cell_type": "code", - "execution_count": 11, - "metadata": { - "scrolled": true - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "--2021-03-11 17:15:22-- https://www.dropbox.com/s/ckv2398yoy4oiqy/cats_dogs_dataset.zip?dl=0\n", - "Connecting to 172.16.1.135:3128... connected.\n", - "Proxy request sent, awaiting response... 301 Moved Permanently\n", - "Location: /s/raw/ckv2398yoy4oiqy/cats_dogs_dataset.zip [following]\n", - "--2021-03-11 17:15:23-- https://www.dropbox.com/s/raw/ckv2398yoy4oiqy/cats_dogs_dataset.zip\n", - "Reusing existing connection to www.dropbox.com:443.\n", - "Proxy request sent, awaiting response... 302 Found\n", - "Location: https://uce2f1fc5c8344ac928f7a3e619f.dl.dropboxusercontent.com/cd/0/inline/BKfHBDoPAEY-QPjLw8I3a7UY8azZSDQ_wuT8ECxXciHPSimQTk-mXQFGx3I6nGOydUZWqVnJ1jQPz-lJSRTg6TFSr-n2lh3yvtC3m2wOXrZT8RhwgqXrQ_bvQwurPSIVc7XTfHBJIhyN5rzpfsXquNu6/file# [following]\n", - "--2021-03-11 17:15:23-- https://uce2f1fc5c8344ac928f7a3e619f.dl.dropboxusercontent.com/cd/0/inline/BKfHBDoPAEY-QPjLw8I3a7UY8azZSDQ_wuT8ECxXciHPSimQTk-mXQFGx3I6nGOydUZWqVnJ1jQPz-lJSRTg6TFSr-n2lh3yvtC3m2wOXrZT8RhwgqXrQ_bvQwurPSIVc7XTfHBJIhyN5rzpfsXquNu6/file\n", - "Connecting to 172.16.1.135:3128... connected.\n", - "Proxy request sent, awaiting response... 302 Found\n", - "Location: /cd/0/inline2/BKdw_s6y59fYYUAQhWUPoG4Fb4WhR2z6MK1nxmb4GDm4MIre2Yt8iwxMZh0JxGYRnYIOtIG7vs6e1HefsS-vzCp_-ab1Bfzcnon8FnmWom91NFQNPmpGRAWWrJa_VoRB_Z1iCfnrokxhECF0wQURulHHXdwLoC0Il0fh38pag8qrJOsPL5QgBFWCZO54yA6nuytf8IIJU3T76DtFE_cAPEaOIkJcx1ZfQEX0mPSDoWczuwxK9du3M1oQQTuVRKUZDleWArNaZq1xXz6xNS_vpGCVlP66E6VbfXaxCAvgGARLjUPov_9yBKpr_73VZSZr0GjHGPXVMfvHsM4-ZsQ2XlQ8Gie_Gfit4JpVyLeRhptwKpD0aeoBl2t0h6i9Wbfr_yo/file [following]\n", - "--2021-03-11 17:15:24-- https://uce2f1fc5c8344ac928f7a3e619f.dl.dropboxusercontent.com/cd/0/inline2/BKdw_s6y59fYYUAQhWUPoG4Fb4WhR2z6MK1nxmb4GDm4MIre2Yt8iwxMZh0JxGYRnYIOtIG7vs6e1HefsS-vzCp_-ab1Bfzcnon8FnmWom91NFQNPmpGRAWWrJa_VoRB_Z1iCfnrokxhECF0wQURulHHXdwLoC0Il0fh38pag8qrJOsPL5QgBFWCZO54yA6nuytf8IIJU3T76DtFE_cAPEaOIkJcx1ZfQEX0mPSDoWczuwxK9du3M1oQQTuVRKUZDleWArNaZq1xXz6xNS_vpGCVlP66E6VbfXaxCAvgGARLjUPov_9yBKpr_73VZSZr0GjHGPXVMfvHsM4-ZsQ2XlQ8Gie_Gfit4JpVyLeRhptwKpD0aeoBl2t0h6i9Wbfr_yo/file\n", - "Reusing existing connection to uce2f1fc5c8344ac928f7a3e619f.dl.dropboxusercontent.com:443.\n", - "Proxy request sent, awaiting response... 200 OK\n", - "Length: 228487605 (218M) [application/zip]\n", - "Saving to: ‘cats_dogs_dataset.zip’\n", - "\n", - "cats_dogs_dataset.z 100%[===================>] 217.90M 9.12MB/s in 26s \n", - "\n", - "2021-03-11 17:15:51 (8.37 MB/s) - ‘cats_dogs_dataset.zip’ saved [228487605/228487605]\n", - "\n" - ] - } - ], - "source": [ - "!wget https://www.dropbox.com/s/ckv2398yoy4oiqy/cats_dogs_dataset.zip?dl=0 -O cats_dogs_dataset.zip\n", - "!mkdir data\n", - "!unzip -q cats_dogs_dataset.zip -d ./data/cats_dogs_dataset/" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "The directory of the \"Cats and Dogs Dataset\" is as follows:\n", - "```\n", - "data/cats_dogs_dataset\n", - "├── training_set\n", - "│ ├── training_set\n", - "│ │ ├── cats\n", - "│ │ │ ├── cat.1.jpg\n", - "│ │ │ ├── cat.2.jpg\n", - "│ │ │ ├── ...\n", - "│ │ ├── dogs\n", - "│ │ │ ├── dog.1.jpg\n", - "│ │ │ ├── dog.2.jpg\n", - "│ │ │ ├── ...\n", - "├── test_set\n", - "│ ├── test_set\n", - "│ │ ├── cats\n", - "│ │ │ ├── cat.4001.jpg\n", - "│ │ │ ├── cat.4002.jpg\n", - "│ │ │ ├── ...\n", - "│ │ ├── dogs\n", - "│ │ │ ├── dog.4001.jpg\n", - "│ │ │ ├── dog.4002.jpg\n", - "│ │ │ ├── ...\n", - "```\n", - "\n", - "You may also check the structure of dataset by `tree data/cats_dogs_dataset`." - ] - }, - { - "cell_type": "code", - "execution_count": 12, - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/", - "height": 377 - }, - "colab_type": "code", - "id": "78LIci7F9WWI", - "outputId": "a7f339c7-a071-40db-f30d-44028dd2ce1c" - }, - "outputs": [ - { - "data": { - "image/png": "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\n", - "text/plain": [ - "
" - ] - }, - "metadata": { - "needs_background": "light" - }, - "output_type": "display_data" - } - ], - "source": [ - "# Let's take a look at the dataset\n", - "import mmcv\n", - "import matplotlib.pyplot as plt\n", - "\n", - "img = mmcv.imread('data/cats_dogs_dataset/training_set/training_set/cats/cat.1.jpg')\n", - "plt.figure(figsize=(8, 6))\n", - "plt.imshow(mmcv.bgr2rgb(img))\n", - "plt.show()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Support a new dataset\n", - "\n", - "Datasets in MMClassification require image and ground-truth labels to be placed in folders with the same perfix. To support a new dataset, there're two ways to generate a customized dataset. \n", - "\n", - "The simplest way is to convert the dataset to existing dataset formats (ImageNet). The other way is to add new Dataset class. More details can be found [here](https://github.com/open-mmlab/mmclassification/blob/master/docs/tutorials/new_dataset.md).\n", - "\n", - "In this tutorials, we'll show the details about both of the methods." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "#### Reorganize dataset to existing format\n", - "\n", - "This is the simplest way to support a new dataset. To do this, there're two steps:\n", - "\n", - "1. Reorganize the structure of customized dataset to the existing dataset formats.\n", - "2. Generate annotation files accordingly.\n", - "\n", - "Here we take \"Cats and Dogs Dataset\" as an example. " - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "First, let's reorganize the structure. Before converting it into the format of ImageNet, let's have a quit look about the structure of ImageNet. \n", - "\n", - "For training, it differentiates classes by folders, i.e. images with the same label should be in the same folder and all the folders of different classes should be in one folder:\n", - "\n", - "```\n", - "imagenet\n", - "├── ...\n", - "├── train\n", - "│ ├── n01440764\n", - "│ │ ├── n01440764_10026.JPEG\n", - "│ │ ├── n01440764_10027.JPEG\n", - "│ │ ├── ...\n", - "│ ├── ...\n", - "│ ├── n15075141\n", - "│ │ ├── n15075141_999.JPEG\n", - "│ │ ├── n15075141_9993.JPEG\n", - "│ │ ├── ...\n", - "```\n", - "\n", - "\n", - "Luckily, our training dataset has similar structure and we don't have to do anything on it.\n", - "\n", - "Note: The `ImageNet` dataset class in MMCls will scan the directory of the training set and map each folders, i.e. the class name, to its label automatically. " - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "For validating, we need to extract validation dataset from our training dataset. Here's how we split the dataset." - ] - }, - { - "cell_type": "code", - "execution_count": 13, - "metadata": {}, - "outputs": [], - "source": [ - "import shutil\n", - "import os\n", - "import os.path as osp\n", - "\n", - "\n", - "data_root = './data/cats_dogs_dataset/'\n", - "train_dir = osp.join(data_root, 'training_set/training_set/')\n", - "val_dir = osp.join(data_root, 'val_set/val_set/')\n", - "\n", - "# Split train/val set\n", - "mmcv.mkdir_or_exist(val_dir)\n", - "class_dirs = [\n", - " d for d in os.listdir(train_dir) if osp.isdir(osp.join(train_dir, d))\n", - "]\n", - "for cls_dir in class_dirs:\n", - " train_imgs = [filename for filename in mmcv.scandir(osp.join(train_dir, cls_dir), suffix='.jpg')]\n", - " # Select first 4/5 as train set and the last 1/5 as val set\n", - " train_length = int(len(train_imgs)*4/5)\n", - " val_imgs = train_imgs[train_length:]\n", - " # Move the val set into a new dir\n", - " src_dir = osp.join(train_dir, cls_dir)\n", - " tar_dir = osp.join(val_dir, cls_dir)\n", - " mmcv.mkdir_or_exist(tar_dir)\n", - " for val_img in val_imgs:\n", - " shutil.move(osp.join(src_dir, val_img), osp.join(tar_dir, val_img))" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "For test set, there's nothing to change. " - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Second, we need to generate the annotations for validation and test dataset. The classes of the dataset are also needed." - ] - }, - { - "cell_type": "code", - "execution_count": 14, - "metadata": {}, - "outputs": [], - "source": [ - "import shutil\n", - "import os\n", - "import os.path as osp\n", - "\n", - "from itertools import chain\n", - "\n", - "\n", - "# Generate mapping from class_name to label\n", - "def find_folders(root_dir):\n", - " folders = [\n", - " d for d in os.listdir(root_dir) if osp.isdir(osp.join(root_dir, d))\n", - " ]\n", - " folders.sort()\n", - " folder_to_idx = {folders[i]: i for i in range(len(folders))}\n", - " return folder_to_idx\n", - "\n", - "\n", - "# Generate annotations\n", - "def gen_annotations(root_dir):\n", - " annotations = dict()\n", - " folder_to_idx = find_folders(root_dir)\n", - " \n", - " for cls_dir, label in folder_to_idx.items():\n", - " cls_to_label = [\n", - " '{} {}'.format(osp.join(cls_dir, filename), label) \n", - " for filename in mmcv.scandir(osp.join(root_dir, cls_dir), suffix='.jpg')\n", - " ]\n", - " annotations[cls_dir] = cls_to_label\n", - " return annotations\n", - "\n", - "\n", - "data_root = './data/cats_dogs_dataset/'\n", - "val_dir = osp.join(data_root, 'val_set/val_set/')\n", - "test_dir = osp.join(data_root, 'test_set/test_set/')\n", - " \n", - "# Save val annotations\n", - "with open(osp.join(data_root, 'val.txt'), 'w') as f:\n", - " annotations = gen_annotations(val_dir)\n", - " contents = chain(*annotations.values())\n", - " f.writelines('\\n'.join(contents))\n", - " \n", - "# Save test annotations\n", - "with open(osp.join(data_root, 'test.txt'), 'w') as f:\n", - " annotations = gen_annotations(test_dir)\n", - " contents = chain(*annotations.values())\n", - " f.writelines('\\n'.join(contents))\n", - "\n", - "# Generate classes\n", - "folder_to_idx = find_folders(train_dir)\n", - "classes = list(folder_to_idx.keys())\n", - "with open(osp.join(data_root, 'classes.txt'), 'w') as f:\n", - " f.writelines('\\n'.join(classes))" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Each line of the annotation list contains a filename and its corresponding ground-truth label. The format is as follows:\n", - "\n", - "```\n", - "...\n", - "cats/cat.3769.jpg 0\n", - "cats/cat.882.jpg 0\n", - "...\n", - "dogs/dog.3881.jpg 1\n", - "dogs/dog.3377.jpg 1\n", - "...\n", - "```" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "#### Implement a customized dataset\n", - "\n", - "NOTE: If you choose to use the first method, please SKIP the following codes.\n", - "\n", - "The second method to support a new dataset is to write a new Dataset class `CatsDogsDataset`. In this method, we don't have to change the structure of the dataset. The following steps are needed:\n", - "\n", - "1. Generate class list. Each line is the class name. E.g.\n", - " ```\n", - " cats\n", - " dogs\n", - " ```\n", - "2. Generate train/validation/test annotations. Each line contains a filename and its corresponding ground-truth label.\n", - " ```\n", - " ...\n", - " cats/cat.436.jpg 0\n", - " cats/cat.383.jpg 0\n", - " ...\n", - " dogs/dog.1340.jpg 1\n", - " dogs/dog.1660.jpg 1\n", - " ...\n", - " ```\n", - "3. Implement `CatsDogsDataset` inherited from `BaseDataset`, and overwrite `load_annotations(self)`,\n", - "like [CIFAR10](https://github.com/open-mmlab/mmclassification/blob/master/mmcls/datasets/cifar.py) and [ImageNet](https://github.com/open-mmlab/mmclassification/blob/master/mmcls/datasets/imagenet.py).\n", - "\n", - "First, let's generate class list and annotation files." - ] - }, - { - "cell_type": "code", - "execution_count": 13, - "metadata": {}, - "outputs": [], - "source": [ - "# Generate annotations\n", - "import os\n", - "import mmcv\n", - "import os.path as osp\n", - "\n", - "from itertools import chain\n", - "\n", - "\n", - "# Generate mapping from class_name to label\n", - "def find_folders(root_dir):\n", - " folders = [\n", - " d for d in os.listdir(root_dir) if osp.isdir(osp.join(root_dir, d))\n", - " ]\n", - " folders.sort()\n", - " folder_to_idx = {folders[i]: i for i in range(len(folders))}\n", - " return folder_to_idx\n", - "\n", - "\n", - "# Generate annotations\n", - "def gen_annotations(root_dir):\n", - " annotations = dict()\n", - " folder_to_idx = find_folders(root_dir)\n", - " \n", - " for cls_dir, label in folder_to_idx.items():\n", - " cls_to_label = [\n", - " '{} {}'.format(osp.join(cls_dir, filename), label) \n", - " for filename in mmcv.scandir(osp.join(root_dir, cls_dir), suffix='.jpg')\n", - " ]\n", - " annotations[cls_dir] = cls_to_label\n", - " return annotations\n", - "\n", - "\n", - "data_root = './data/cats_dogs_dataset/'\n", - "train_dir = osp.join(data_root, 'training_set/training_set/')\n", - "test_dir = osp.join(data_root, 'test_set/test_set/')\n", - "\n", - "# Generate class list\n", - "folder_to_idx = find_folders(train_dir)\n", - "classes = list(folder_to_idx.keys())\n", - "with open(osp.join(data_root, 'classes.txt'), 'w') as f:\n", - " f.writelines('\\n'.join(classes))\n", - " \n", - "# Generate train/val set randomly\n", - "annotations = gen_annotations(train_dir)\n", - "# Select first 4/5 as train set\n", - "train_length = lambda x: int(len(x)*4/5)\n", - "train_annotations = map(lambda x:x[:train_length(x)], annotations.values())\n", - "val_annotations = map(lambda x:x[train_length(x):], annotations.values())\n", - "# Save train/val annotations\n", - "with open(osp.join(data_root, 'train.txt'), 'w') as f:\n", - " contents = chain(*train_annotations)\n", - " f.writelines('\\n'.join(contents))\n", - "with open(osp.join(data_root, 'val.txt'), 'w') as f:\n", - " contents = chain(*val_annotations)\n", - " f.writelines('\\n'.join(contents))\n", - " \n", - "# Save test annotations\n", - "test_annotations = gen_annotations(test_dir)\n", - "with open(osp.join(data_root, 'test.txt'), 'w') as f:\n", - " contents = chain(*test_annotations.values())\n", - " f.writelines('\\n'.join(contents))" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Then, we need to implement `load_annotations` function in the new dataset class `CatsDogsDataset`.\n", - "\n", - "Typically, this function returns a list, where each sample is a dict, containing necessary data informations, e.g., `img_path` and `gt_label`. These will be used by `mmcv.runner` during training to load samples. " - ] - }, - { - "cell_type": "code", - "execution_count": 14, - "metadata": { - "colab": {}, - "colab_type": "code", - "id": "WnGZfribFHCx" - }, - "outputs": [], - "source": [ - "import mmcv\n", - "import numpy as np\n", - "\n", - "from mmcls.datasets import DATASETS, BaseDataset\n", - "\n", - "\n", - "# Regist model so that we can access the class through str in configs\n", - "@DATASETS.register_module()\n", - "class CatsDogsDataset(BaseDataset):\n", - "\n", - " def load_annotations(self):\n", - " assert isinstance(self.ann_file, str)\n", - "\n", - " data_infos = []\n", - " with open(self.ann_file) as f:\n", - " # The ann_file is the annotation files we generate above.\n", - " samples = [x.strip().split(' ') for x in f.readlines()]\n", - " for filename, gt_label in samples:\n", - " info = {'img_prefix': self.data_prefix}\n", - " info['img_info'] = {'filename': filename}\n", - " info['gt_label'] = np.array(gt_label, dtype=np.int64)\n", - " data_infos.append(info)\n", - " return data_infos" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "colab_type": "text", - "id": "yUVtmn3Iq3WA" - }, - "source": [ - "### Modify configs\n", - "\n", - "In this part, we need to modify the config for finetune. \n", - "\n", - "In MMCls, the configs usually look like this:\n", - "\n", - "```\n", - "# 'configs/resnet/resnet50_b32x8_imagenet.py'\n", - "_base_ = [\n", - " # Model config\n", - " '../_base_/models/resnet50.py',\n", - " # Dataset config\n", - " '../_base_/datasets/imagenet_bs32.py',\n", - " # Schedule config\n", - " '../_base_/schedules/imagenet_bs256.py',\n", - " # Runtime config\n", - " '../_base_/default_runtime.py'\n", - "]\n", - "```\n", - "\n", - "A standard configuration in MMCls contains four parts:\n", - "\n", - "1. Model config, which specify the basic structure of the model, e.g. number of the input channels.\n", - "2. Dataset config, which contains details about the dataset, e.g. type of the dataset.\n", - "3. Schedule config, which specify the training schedules, e.g. learning rate.\n", - "4. Runtime config, which contains the rest of details, e.g. log config.\n", - "\n", - "In this part, we'll show how to modify config in python files. " - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "First, let's load the existing config file." - ] - }, - { - "cell_type": "code", - "execution_count": 15, - "metadata": { - "colab": {}, - "colab_type": "code", - "id": "Wwnj9tRzqX_A" - }, - "outputs": [], - "source": [ - "# Load the existing config file\n", - "from mmcv import Config\n", - "cfg = Config.fromfile('configs/resnet/resnet50_b32x8_imagenet.py')" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "colab_type": "text", - "id": "1y2oV5w97jQo" - }, - "source": [ - "Then, we'll modify it according to the method we support our new dataset. " - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "#### Modify config after reorganization of dataset\n", - "If you reorganize the dataset and convert it into ImageNet format, there's little things to change." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "First is the model configs. The classification head would be reconstructed if `num_classes` is different from the pretrained one." - ] - }, - { - "cell_type": "code", - "execution_count": 16, - "metadata": {}, - "outputs": [], - "source": [ - "# Modify num classes of the model in classification head\n", - "cfg.model.head.num_classes = 2\n", - "cfg.model.head.topk = (1)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Second is the dataset configs. As we reorganize the dataset into the format of ImageNet, we can use most of the configurations of it. Note that the training annotations don't need to specify, because it can find the mappings through the structure of the dataset." - ] - }, - { - "cell_type": "code", - "execution_count": 17, - "metadata": {}, - "outputs": [], - "source": [ - "# Modify the number of workers according to your computer\n", - "cfg.data.samples_per_gpu = 32\n", - "cfg.data.workers_per_gpu=2\n", - "# Modify the image normalization configs \n", - "cfg.img_norm_cfg = dict(\n", - " mean=[124.508, 116.050, 106.438], std=[58.577, 57.310, 57.437], to_rgb=True)\n", - "# Specify the path to training set\n", - "cfg.data.train.data_prefix = 'data/cats_dogs_dataset/training_set/training_set'\n", - "cfg.data.train.classes = 'data/cats_dogs_dataset/classes.txt'\n", - "# Specify the path to validation set\n", - "cfg.data.val.data_prefix = 'data/cats_dogs_dataset/val_set/val_set'\n", - "cfg.data.val.ann_file = 'data/cats_dogs_dataset/val.txt'\n", - "cfg.data.val.classes = 'data/cats_dogs_dataset/classes.txt'\n", - "# Specify the path to test set\n", - "cfg.data.test.data_prefix = 'data/cats_dogs_dataset/test_set/test_set'\n", - "cfg.data.test.ann_file = 'data/cats_dogs_dataset/test.txt'\n", - "cfg.data.test.classes = 'data/cats_dogs_dataset/classes.txt'\n", - "# Modify the metric method\n", - "cfg.evaluation['metric_options']={'topk': (1)}" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Third is the schedules of finetuning." - ] - }, - { - "cell_type": "code", - "execution_count": 18, - "metadata": {}, - "outputs": [], - "source": [ - "# Optimizer\n", - "cfg.optimizer = dict(type='SGD', lr=0.01, momentum=0.9, weight_decay=0.0001)\n", - "cfg.optimizer_config = dict(grad_clip=None)\n", - "# Learning policy\n", - "cfg.lr_config = dict(policy='step', step=[1])\n", - "cfg.runner = dict(type='EpochBasedRunner', max_epochs=2)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Finally, let's modify the configuration during run time." - ] - }, - { - "cell_type": "code", - "execution_count": 19, - "metadata": {}, - "outputs": [], - "source": [ - "# Load the pretrained weights\n", - "cfg.load_from = 'checkpoints/resnet50_batch256_imagenet_20200708-cfb998bf.pth'\n", - "# Set up working dir to save files and logs.\n", - "cfg.work_dir = './work_dirs/cats_dogs_dataset'\n", - "\n", - "from mmcls.apis import set_random_seed\n", - "# Set seed thus the results are more reproducible\n", - "cfg.seed = 0\n", - "set_random_seed(0, deterministic=False)\n", - "cfg.gpu_ids = range(1)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Have a look on the new configuration! " - ] - }, - { - "cell_type": "code", - "execution_count": 20, - "metadata": { - "scrolled": true, - "tags": [] - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Config:\n", - "model = dict(\n", - " type='ImageClassifier',\n", - " backbone=dict(\n", - " type='ResNet',\n", - " depth=50,\n", - " num_stages=4,\n", - " out_indices=(3, ),\n", - " style='pytorch'),\n", - " neck=dict(type='GlobalAveragePooling'),\n", - " head=dict(\n", - " type='LinearClsHead',\n", - " num_classes=2,\n", - " in_channels=2048,\n", - " loss=dict(type='CrossEntropyLoss', loss_weight=1.0),\n", - " topk=1))\n", - "dataset_type = 'ImageNet'\n", - "img_norm_cfg = dict(\n", - " mean=[124.508, 116.05, 106.438], std=[58.577, 57.31, 57.437], to_rgb=True)\n", - "train_pipeline = [\n", - " dict(type='LoadImageFromFile'),\n", - " dict(type='RandomResizedCrop', size=224),\n", - " dict(type='RandomFlip', flip_prob=0.5, direction='horizontal'),\n", - " dict(\n", - " type='Normalize',\n", - " mean=[123.675, 116.28, 103.53],\n", - " std=[58.395, 57.12, 57.375],\n", - " to_rgb=True),\n", - " dict(type='ImageToTensor', keys=['img']),\n", - " dict(type='ToTensor', keys=['gt_label']),\n", - " dict(type='Collect', keys=['img', 'gt_label'])\n", - "]\n", - "test_pipeline = [\n", - " dict(type='LoadImageFromFile'),\n", - " dict(type='Resize', size=(256, -1)),\n", - " dict(type='CenterCrop', crop_size=224),\n", - " dict(\n", - " type='Normalize',\n", - " mean=[123.675, 116.28, 103.53],\n", - " std=[58.395, 57.12, 57.375],\n", - " to_rgb=True),\n", - " dict(type='ImageToTensor', keys=['img']),\n", - " dict(type='Collect', keys=['img'])\n", - "]\n", - "data = dict(\n", - " samples_per_gpu=32,\n", - " workers_per_gpu=2,\n", - " train=dict(\n", - " type='ImageNet',\n", - " data_prefix='data/cats_dogs_dataset/training_set/training_set',\n", - " pipeline=[\n", - " dict(type='LoadImageFromFile'),\n", - " dict(type='RandomResizedCrop', size=224),\n", - " dict(type='RandomFlip', flip_prob=0.5, direction='horizontal'),\n", - " dict(\n", - " type='Normalize',\n", - " mean=[123.675, 116.28, 103.53],\n", - " std=[58.395, 57.12, 57.375],\n", - " to_rgb=True),\n", - " dict(type='ImageToTensor', keys=['img']),\n", - " dict(type='ToTensor', keys=['gt_label']),\n", - " dict(type='Collect', keys=['img', 'gt_label'])\n", - " ],\n", - " classes='data/cats_dogs_dataset/classes.txt'),\n", - " val=dict(\n", - " type='ImageNet',\n", - " data_prefix='data/cats_dogs_dataset/val_set/val_set',\n", - " ann_file='data/cats_dogs_dataset/val.txt',\n", - " pipeline=[\n", - " dict(type='LoadImageFromFile'),\n", - " dict(type='Resize', size=(256, -1)),\n", - " dict(type='CenterCrop', crop_size=224),\n", - " dict(\n", - " type='Normalize',\n", - " mean=[123.675, 116.28, 103.53],\n", - " std=[58.395, 57.12, 57.375],\n", - " to_rgb=True),\n", - " dict(type='ImageToTensor', keys=['img']),\n", - " dict(type='Collect', keys=['img'])\n", - " ],\n", - " classes='data/cats_dogs_dataset/classes.txt'),\n", - " test=dict(\n", - " type='ImageNet',\n", - " data_prefix='data/cats_dogs_dataset/test_set/test_set',\n", - " ann_file='data/cats_dogs_dataset/test.txt',\n", - " pipeline=[\n", - " dict(type='LoadImageFromFile'),\n", - " dict(type='Resize', size=(256, -1)),\n", - " dict(type='CenterCrop', crop_size=224),\n", - " dict(\n", - " type='Normalize',\n", - " mean=[123.675, 116.28, 103.53],\n", - " std=[58.395, 57.12, 57.375],\n", - " to_rgb=True),\n", - " dict(type='ImageToTensor', keys=['img']),\n", - " dict(type='Collect', keys=['img'])\n", - " ],\n", - " classes='data/cats_dogs_dataset/classes.txt'))\n", - "evaluation = dict(interval=1, metric='accuracy', metric_options=dict(topk=1))\n", - "optimizer = dict(type='SGD', lr=0.01, momentum=0.9, weight_decay=0.0001)\n", - "optimizer_config = dict(grad_clip=None)\n", - "lr_config = dict(policy='step', step=[1])\n", - "runner = dict(type='EpochBasedRunner', max_epochs=2)\n", - "checkpoint_config = dict(interval=1)\n", - "log_config = dict(interval=100, hooks=[dict(type='TextLoggerHook')])\n", - "dist_params = dict(backend='nccl')\n", - "log_level = 'INFO'\n", - "load_from = 'checkpoints/resnet50_batch256_imagenet_20200708-cfb998bf.pth'\n", - "resume_from = None\n", - "workflow = [('train', 1)]\n", - "work_dir = './work_dirs/cats_dogs_dataset'\n", - "seed = 0\n", - "gpu_ids = range(0, 1)\n", - "\n" - ] - } - ], - "source": [ - "# Let's have a look at the final config used for finetuning\n", - "print(f'Config:\\n{cfg.pretty_text}')" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "#### Modify config after implementing a customized dataset\n", - "\n", - "NOTE: If you choose to use the first method, please SKIP the following codes.\n", - "\n", - "As we implement a new dataset, there're something different from above:\n", - "1. The new dataset type should be specified.\n", - "2. The training annotations should be specified." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "First, let's have a look about the dataset configurations." - ] - }, - { - "cell_type": "code", - "execution_count": 16, - "metadata": {}, - "outputs": [], - "source": [ - "# Specify the new dataset class\n", - "cfg.dataset_type = 'CatsDogsDataset'\n", - "cfg.data.train.type = cfg.dataset_type\n", - "cfg.data.val.type = cfg.dataset_type\n", - "cfg.data.test.type = cfg.dataset_type\n", - "\n", - "# Specify the training annotations\n", - "cfg.data.train.ann_file = 'data/cats_dogs_dataset/train.txt'\n", - "\n", - "# The followings are the same as above\n", - "cfg.data.samples_per_gpu = 32\n", - "cfg.data.workers_per_gpu=2\n", - "\n", - "cfg.img_norm_cfg = dict(\n", - " mean=[124.508, 116.050, 106.438], std=[58.577, 57.310, 57.437], to_rgb=True)\n", - "\n", - "cfg.data.train.data_prefix = 'data/cats_dogs_dataset/training_set/training_set'\n", - "cfg.data.train.classes = 'data/cats_dogs_dataset/classes.txt'\n", - "\n", - "cfg.data.val.data_prefix = 'data/cats_dogs_dataset/training_set/training_set'\n", - "cfg.data.val.ann_file = 'data/cats_dogs_dataset/val.txt'\n", - "cfg.data.val.classes = 'data/cats_dogs_dataset/classes.txt'\n", - "\n", - "cfg.data.test.data_prefix = 'data/cats_dogs_dataset/test_set/test_set'\n", - "cfg.data.test.ann_file = 'data/cats_dogs_dataset/test.txt'\n", - "cfg.data.test.classes = 'data/cats_dogs_dataset/classes.txt'\n", - "# Modify the metric method\n", - "cfg.evaluation['metric_options']={'topk': (1)}\n" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Other configurations are the same as those mentioned above. And we just list them here." - ] - }, - { - "cell_type": "code", - "execution_count": 17, - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/", - "height": 1000 - }, - "colab_type": "code", - "id": "eyKnYC1Z7iCV", - "outputId": "a25241e2-431c-4944-b0b8-b9c792d5aadd", - "scrolled": true, - "tags": [] - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Config:\n", - "model = dict(\n", - " type='ImageClassifier',\n", - " backbone=dict(\n", - " type='ResNet',\n", - " depth=50,\n", - " num_stages=4,\n", - " out_indices=(3, ),\n", - " style='pytorch'),\n", - " neck=dict(type='GlobalAveragePooling'),\n", - " head=dict(\n", - " type='LinearClsHead',\n", - " num_classes=2,\n", - " in_channels=2048,\n", - " loss=dict(type='CrossEntropyLoss', loss_weight=1.0),\n", - " topk=1))\n", - "dataset_type = 'CatsDogsDataset'\n", - "img_norm_cfg = dict(\n", - " mean=[124.508, 116.05, 106.438], std=[58.577, 57.31, 57.437], to_rgb=True)\n", - "train_pipeline = [\n", - " dict(type='LoadImageFromFile'),\n", - " dict(type='RandomResizedCrop', size=224),\n", - " dict(type='RandomFlip', flip_prob=0.5, direction='horizontal'),\n", - " dict(\n", - " type='Normalize',\n", - " mean=[123.675, 116.28, 103.53],\n", - " std=[58.395, 57.12, 57.375],\n", - " to_rgb=True),\n", - " dict(type='ImageToTensor', keys=['img']),\n", - " dict(type='ToTensor', keys=['gt_label']),\n", - " dict(type='Collect', keys=['img', 'gt_label'])\n", - "]\n", - "test_pipeline = [\n", - " dict(type='LoadImageFromFile'),\n", - " dict(type='Resize', size=(256, -1)),\n", - " dict(type='CenterCrop', crop_size=224),\n", - " dict(\n", - " type='Normalize',\n", - " mean=[123.675, 116.28, 103.53],\n", - " std=[58.395, 57.12, 57.375],\n", - " to_rgb=True),\n", - " dict(type='ImageToTensor', keys=['img']),\n", - " dict(type='Collect', keys=['img'])\n", - "]\n", - "data = dict(\n", - " samples_per_gpu=32,\n", - " workers_per_gpu=2,\n", - " train=dict(\n", - " type='CatsDogsDataset',\n", - " data_prefix='data/cats_dogs_dataset/training_set/training_set',\n", - " pipeline=[\n", - " dict(type='LoadImageFromFile'),\n", - " dict(type='RandomResizedCrop', size=224),\n", - " dict(type='RandomFlip', flip_prob=0.5, direction='horizontal'),\n", - " dict(\n", - " type='Normalize',\n", - " mean=[123.675, 116.28, 103.53],\n", - " std=[58.395, 57.12, 57.375],\n", - " to_rgb=True),\n", - " dict(type='ImageToTensor', keys=['img']),\n", - " dict(type='ToTensor', keys=['gt_label']),\n", - " dict(type='Collect', keys=['img', 'gt_label'])\n", - " ],\n", - " ann_file='data/cats_dogs_dataset/train.txt',\n", - " classes='data/cats_dogs_dataset/classes.txt'),\n", - " val=dict(\n", - " type='CatsDogsDataset',\n", - " data_prefix='data/cats_dogs_dataset/training_set/training_set',\n", - " ann_file='data/cats_dogs_dataset/val.txt',\n", - " pipeline=[\n", - " dict(type='LoadImageFromFile'),\n", - " dict(type='Resize', size=(256, -1)),\n", - " dict(type='CenterCrop', crop_size=224),\n", - " dict(\n", - " type='Normalize',\n", - " mean=[123.675, 116.28, 103.53],\n", - " std=[58.395, 57.12, 57.375],\n", - " to_rgb=True),\n", - " dict(type='ImageToTensor', keys=['img']),\n", - " dict(type='Collect', keys=['img'])\n", - " ],\n", - " classes='data/cats_dogs_dataset/classes.txt'),\n", - " test=dict(\n", - " type='CatsDogsDataset',\n", - " data_prefix='data/cats_dogs_dataset/test_set/test_set',\n", - " ann_file='data/cats_dogs_dataset/test.txt',\n", - " pipeline=[\n", - " dict(type='LoadImageFromFile'),\n", - " dict(type='Resize', size=(256, -1)),\n", - " dict(type='CenterCrop', crop_size=224),\n", - " dict(\n", - " type='Normalize',\n", - " mean=[123.675, 116.28, 103.53],\n", - " std=[58.395, 57.12, 57.375],\n", - " to_rgb=True),\n", - " dict(type='ImageToTensor', keys=['img']),\n", - " dict(type='Collect', keys=['img'])\n", - " ],\n", - " classes='data/cats_dogs_dataset/classes.txt'))\n", - "evaluation = dict(interval=1, metric='accuracy', metric_options=dict(topk=1))\n", - "optimizer = dict(type='SGD', lr=0.01, momentum=0.9, weight_decay=0.0001)\n", - "optimizer_config = dict(grad_clip=None)\n", - "lr_config = dict(policy='step', step=[1])\n", - "runner = dict(type='EpochBasedRunner', max_epochs=2)\n", - "checkpoint_config = dict(interval=1)\n", - "log_config = dict(interval=100, hooks=[dict(type='TextLoggerHook')])\n", - "dist_params = dict(backend='nccl')\n", - "log_level = 'INFO'\n", - "load_from = 'checkpoints/resnet50_batch256_imagenet_20200708-cfb998bf.pth'\n", - "resume_from = None\n", - "workflow = [('train', 1)]\n", - "work_dir = './work_dirs/cats_dogs_dataset'\n", - "seed = 0\n", - "gpu_ids = range(0, 1)\n", - "\n" - ] - } - ], - "source": [ - "# MODOL CONFIG\n", - "# Modify num classes of the model in classification head\n", - "cfg.model.head.num_classes = 2\n", - "cfg.model.head.topk = (1)\n", - "\n", - "# SCHEDULE CONFIG\n", - "# Optimizer\n", - "cfg.optimizer = dict(type='SGD', lr=0.01, momentum=0.9, weight_decay=0.0001)\n", - "cfg.optimizer_config = dict(grad_clip=None)\n", - "# Learning policy\n", - "cfg.lr_config = dict(policy='step', step=[1])\n", - "cfg.runner = dict(type='EpochBasedRunner', max_epochs=2)\n", - "\n", - "# RUNTIME CONFIG\n", - "# Load the pretrained weights\n", - "cfg.load_from = 'checkpoints/resnet50_batch256_imagenet_20200708-cfb998bf.pth'\n", - "# Set up working dir to save files and logs.\n", - "cfg.work_dir = './work_dirs/cats_dogs_dataset'\n", - "from mmcls.apis import set_random_seed\n", - "# Set seed thus the results are more reproducible\n", - "cfg.seed = 0\n", - "set_random_seed(0, deterministic=False)\n", - "cfg.gpu_ids = range(1)\n", - "\n", - "# Let's have a look at the final config used for training\n", - "print(f'Config:\\n{cfg.pretty_text}')" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "colab_type": "text", - "id": "QWuH14LYF2gQ" - }, - "source": [ - "### Finetune\n", - "\n", - "Now we finetune on our own dataset. As we've modified the training schedules, we can use the `train_model` API to finetune our model. " - ] - }, - { - "cell_type": "code", - "execution_count": 18, - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/", - "height": 953, - "referenced_widgets": [ - "40a3c0b2c7a44085b69b9c741df20b3e", - "ec96fb4251ea4b8ea268a2bc62b9c75b", - "dae4b284c5a944639991d29f4e79fac5", - "c78567afd0a6418781118ac9f4ecdea9", - "32b7d27a143c41b5bb90f1d8e66a1c67", - "55d75951f51c4ab89e32045c3d6db8a4", - "9d29e2d02731416d9852e9c7c08d1665", - "1bb2b93526cd421aa5d5b86d678932ab" - ] - }, - "colab_type": "code", - "id": "jYKoSfdMF12B", - "outputId": "1c0b5a11-434b-4c96-a4aa-9d685fff0856" - }, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2021-03-11 17:17:38,573 - mmcls - INFO - load checkpoint from checkpoints/resnet50_batch256_imagenet_20200708-cfb998bf.pth\n", - "2021-03-11 17:17:38,574 - mmcls - INFO - Use load_from_local loader\n", - "2021-03-11 17:17:38,625 - mmcls - WARNING - The model and loaded state dict do not match exactly\n", - "\n", - "size mismatch for head.fc.weight: copying a param with shape torch.Size([1000, 2048]) from checkpoint, the shape in current model is torch.Size([2, 2048]).\n", - "size mismatch for head.fc.bias: copying a param with shape torch.Size([1000]) from checkpoint, the shape in current model is torch.Size([2]).\n", - "2021-03-11 17:17:38,626 - mmcls - INFO - Start running, host: SENSETIME\\shaoyidi@CN0014004140L, work_dir: /home/SENSETIME/shaoyidi/VirtualenvProjects/add_tutorials/MMCls_Tutorials/mmclassification/work_dirs/cats_dogs_dataset\n", - "2021-03-11 17:17:38,626 - mmcls - INFO - workflow: [('train', 1)], max: 2 epochs\n", - "/home/SENSETIME/shaoyidi/anaconda3/lib/python3.8/site-packages/mmcv/runner/hooks/logger/text.py:55: DeprecationWarning: an integer is required (got type float). Implicit conversion to integers using __int__ is deprecated, and may be removed in a future version of Python.\n", - " mem_mb = torch.tensor([mem / (1024 * 1024)],\n", - "2021-03-11 17:18:22,741 - mmcls - INFO - Epoch [1][100/201]\tlr: 1.000e-02, eta: 0:02:12, time: 0.439, data_time: 0.023, memory: 2961, loss: 0.6723, top-1: 68.5312\n", - "2021-03-11 17:19:04,455 - mmcls - INFO - Epoch [1][200/201]\tlr: 1.000e-02, eta: 0:01:26, time: 0.417, data_time: 0.004, memory: 2961, loss: 0.5848, top-1: 66.3125\n", - "2021-03-11 17:19:04,521 - mmcls - INFO - Saving checkpoint at 1 epochs\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "[>>>>>>>>>>>>>>>>>>>>>>>>>>>] 1601/1601, 211.0 task/s, elapsed: 8s, ETA: 0s" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2021-03-11 17:19:12,501 - mmcls - INFO - Epoch(val) [1][201]\taccuracy: 64.3973\n", - "2021-03-11 17:19:56,609 - mmcls - INFO - Epoch [2][100/201]\tlr: 1.000e-03, eta: 0:00:43, time: 0.439, data_time: 0.023, memory: 2961, loss: 0.4877, top-1: 74.7188\n", - "2021-03-11 17:20:38,827 - mmcls - INFO - Epoch [2][200/201]\tlr: 1.000e-03, eta: 0:00:00, time: 0.422, data_time: 0.004, memory: 2961, loss: 0.4244, top-1: 78.0625\n", - "2021-03-11 17:20:38,893 - mmcls - INFO - Saving checkpoint at 2 epochs\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "[>>>>>>>>>>>>>>>>>>>>>>>>>>>] 1601/1601, 213.9 task/s, elapsed: 7s, ETA: 0s" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2021-03-11 17:20:46,778 - mmcls - INFO - Epoch(val) [2][201]\taccuracy: 88.0075\n" - ] - } - ], - "source": [ - "import time\n", - "\n", - "from mmcls.datasets import build_dataset\n", - "from mmcls.models import build_classifier\n", - "from mmcls.apis import train_model\n", - "\n", - "# Create work_dir\n", - "mmcv.mkdir_or_exist(osp.abspath(cfg.work_dir))\n", - "# Build the classifier\n", - "model = build_classifier(cfg.model)\n", - "# Build the dataset\n", - "datasets = [build_dataset(cfg.data.train)]\n", - "# Add an attribute for visualization convenience\n", - "model.CLASSES = datasets[0].CLASSES\n", - "# Begin finetuning\n", - "train_model(\n", - " model,\n", - " datasets,\n", - " cfg,\n", - " distributed=False,\n", - " validate=True,\n", - " timestamp=time.strftime('%Y%m%d_%H%M%S', time.localtime()),\n", - " meta=dict())" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "colab_type": "text", - "id": "DEkWOP-NMbc_" - }, - "source": [ - "Let's checkout our trained model." - ] - }, - { - "cell_type": "code", - "execution_count": 19, - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/", - "height": 645 - }, - "colab_type": "code", - "id": "ekG__UfaH_OU", - "outputId": "ac1eb835-19ed-48e6-8f77-e6d325b915c4" - }, - "outputs": [ - { - "data": { - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "image/png": "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\n", - "text/plain": [ - "
" - ] - }, - "metadata": { - "needs_background": "light" - }, - "output_type": "display_data" - } - ], - "source": [ - "img = mmcv.imread('data/cats_dogs_dataset/training_set/training_set/cats/cat.1.jpg')\n", - "\n", - "model.cfg = cfg\n", - "result = inference_model(model, img)\n", - "plt.figure(figsize=(8, 6))\n", - "show_result_pyplot(model, img, result)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Command line tool usages\n", - "\n", - "MMCls also provide some useful command line tools, which can help us:\n", - "\n", - "1. Train models\n", - "2. Finetune models\n", - "3. Test models\n", - "4. Do inference \n", - "\n", - "As the process of training is similar to finetuning, we'll show the details about how to finetune, test, and do inference in this tutorials. More details can be found [here](https://github.com/open-mmlab/mmclassification/blob/master/docs/getting_started.md).\n", - "\n", - "### Finetune\n", - "\n", - "To finetune via command line, several steps are needed:\n", - "1. Prepare customized dataset.\n", - "2. Support new dataset in MMCls.\n", - "3. Modify configs and write into files.\n", - "4. Finetune using command line.\n", - "\n", - "The first and second step are similar to those mentioned above. In this part, we'll show the details of the last two steps.\n", - "\n", - "#### Modify configs in files\n", - "\n", - "To reuse the common parts among different configs, we support inheriting configs from multiple existing configs. To finetune a ResNet50 model, the new config needs to inherit `configs/_base_/models/resnet50.py` to build the basic structure of the model. To use the \"Cats and Dogs Dataset\", the new config can also simply inherit `configs/_base_/datasets/cats_dogs_dataset.py`. To customize the training schedules, the new config should inherit `configs/_base_/schedules/cats_dogs_finetune.py`. For runtime settings such as training schedules, the new config needs to inherit `configs/_base_/default_runtime.py`.\n", - "\n", - "The final config file should look like this:\n", - "\n", - "```\n", - "# Save to \"configs/resnet/resnet50_cats_dogs.py\"\n", - "_base_ = [\n", - " '../_base_/models/resnet50.py',\n", - " '../_base_/datasets/imagenet_bs32.py',\n", - " '../_base_/schedules/imagenet_bs256.py',\n", - " '../_base_/default_runtime.py'\n", - "]\n", - "```\n", - "\n", - "Besides, you can also choose to write the whole contents into one config file rather than use inheritance, e.g. `configs/mnist/lenet5.py`.\n", - "\n", - "Here, we take the settings of reorganizion as an example. You can try by yourself on the case of implementing a customized dataset. All you have to do is to write new configs which will overwrite the original ones. Now, let's check the details." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "First, let's modify the model configs and save them into `configs/_base_/models/resnet50_cats_dogs.py`. The new config needs to modify the head according to the class numbers of the new datasets. By only changing `num_classes` in the head, the weights of the pre-trained models are mostly reused except the final prediction head.\n", - "\n", - "```python\n", - "_base_ = ['./resnet50.py']\n", - "model = dict(\n", - " head=dict(\n", - " num_classes=2,\n", - " topk = (1)\n", - " ))\n", - "```" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Second is the dataset's configs. Don't forget to save them into `configs/_base_/datasets/cats_dogs_dataset.py`.\n", - "\n", - "```python\n", - "_base_ = ['./imagenet_bs32.py']\n", - "img_norm_cfg = dict(\n", - " mean=[124.508, 116.050, 106.438],\n", - " std=[58.577, 57.310, 57.437],\n", - " to_rgb=True)\n", - "\n", - "data = dict(\n", - " # Modify the number of workers according to your computer\n", - " samples_per_gpu = 32,\n", - " workers_per_gpu=2,\n", - " # Specify the path to training set\n", - " train = dict(\n", - " data_prefix = 'data/cats_dogs_dataset/training_set/training_set',\n", - " classes = 'data/cats_dogs_dataset/classes.txt'\n", - " ),\n", - " # Specify the path to validation set\n", - " val = dict(\n", - " data_prefix = 'data/cats_dogs_dataset/val_set/val_set',\n", - " ann_file = 'data/cats_dogs_dataset/val.txt',\n", - " classes = 'data/cats_dogs_dataset/classes.txt'\n", - " ),\n", - " # Specify the path to test set\n", - " test = dict(\n", - " data_prefix = 'data/cats_dogs_dataset/test_set/test_set',\n", - " ann_file = 'data/cats_dogs_dataset/test.txt',\n", - " classes = 'data/cats_dogs_dataset/classes.txt'\n", - " )\n", - ")\n", - "# Modify the metric method\n", - "evaluation = dict(metric_options={'topk': (1)})\n", - "```" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Third is the training schedule. The finetuning hyperparameters vary from the default schedule. It usually requires smaller learning rate and less training epochs. Let's save it into `configs/_base_/schedules/cats_dogs_finetune.py`.\n", - "\n", - "```python\n", - "# optimizer\n", - "# lr is set for a batch size of 128\n", - "optimizer = dict(type='SGD', lr=0.01, momentum=0.9, weight_decay=0.0001)\n", - "optimizer_config = dict(grad_clip=None)\n", - "# learning policy\n", - "lr_config = dict(\n", - " policy='step',\n", - " step=[1])\n", - "runner = dict(type='EpochBasedRunner', max_epochs=2)\n", - "```" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Finally, for the run time configs, we can simple use the defualt one and change nothing. We can now gather all the configs into one file and save it into `configs/resnet/resnet50_cats_dogs.py`.\n", - "```python\n", - "_base_ = [\n", - " '../_base_/models/resnet50_cats_dogs.py', '../_base_/datasets/cats_dogs_dataset.py',\n", - " '../_base_/schedules/cats_dogs_finetune.py', '../_base_/default_runtime.py'\n", - "]\n", - "\n", - "# Don't forget to load pretrained model. Set it as the abosolute path. \n", - "load_from = 'XXX/mmclassification/checkpoints/resnet50_batch256_imagenet_20200708-cfb998bf.pth'\n", - "```\n" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "#### Finetune using command line\n", - "\n", - "We use `tools/train.py` to finetune the model:\n", - "\n", - "```\n", - "python tools/train.py ${CONFIG_FILE} [optional arguments]\n", - "```\n", - "\n", - "If you want to specify the working directory in the command, you can add an argument `--work_dir ${YOUR_WORK_DIR}`.\n", - "\n", - "Here, we take our `ResNet50` on `CatsDogsDataset` for example." - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "metadata": { - "scrolled": true, - "tags": [] - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2021-03-11 17:02:24,433 - mmcls - INFO - Environment info:\n", - "------------------------------------------------------------\n", - "sys.platform: linux\n", - "Python: 3.8.5 (default, Sep 4 2020, 07:30:14) [GCC 7.3.0]\n", - "CUDA available: True\n", - "GPU 0: GeForce GTX 1060 6GB\n", - "CUDA_HOME: /usr\n", - "NVCC: Cuda compilation tools, release 10.2, V10.2.89\n", - "GCC: gcc (Ubuntu 5.4.0-6ubuntu1~16.04.12) 5.4.0 20160609\n", - "PyTorch: 1.5.0+cu101\n", - "PyTorch compiling details: PyTorch built with:\n", - " - GCC 7.3\n", - " - C++ Version: 201402\n", - " - Intel(R) Math Kernel Library Version 2020.0.2 Product Build 20200624 for Intel(R) 64 architecture applications\n", - " - Intel(R) MKL-DNN v0.21.1 (Git Hash 7d2fd500bc78936d1d648ca713b901012f470dbc)\n", - " - OpenMP 201511 (a.k.a. OpenMP 4.5)\n", - " - NNPACK is enabled\n", - " - CPU capability usage: AVX2\n", - " - CUDA Runtime 10.1\n", - " - NVCC architecture flags: -gencode;arch=compute_37,code=sm_37;-gencode;arch=compute_50,code=sm_50;-gencode;arch=compute_60,code=sm_60;-gencode;arch=compute_61,code=sm_61;-gencode;arch=compute_70,code=sm_70;-gencode;arch=compute_75,code=sm_75;-gencode;arch=compute_37,code=compute_37\n", - " - CuDNN 7.6.3\n", - " - Magma 2.5.2\n", - " - Build settings: BLAS=MKL, BUILD_TYPE=Release, CXX_FLAGS= -Wno-deprecated -fvisibility-inlines-hidden -fopenmp -DNDEBUG -DUSE_FBGEMM -DUSE_QNNPACK -DUSE_PYTORCH_QNNPACK -DUSE_XNNPACK -DUSE_INTERNAL_THREADPOOL_IMPL -O2 -fPIC -Wno-narrowing -Wall -Wextra -Werror=return-type -Wno-missing-field-initializers -Wno-type-limits -Wno-array-bounds -Wno-unknown-pragmas -Wno-sign-compare -Wno-unused-parameter -Wno-unused-variable -Wno-unused-function -Wno-unused-result -Wno-strict-overflow -Wno-strict-aliasing -Wno-error=deprecated-declarations -Wno-stringop-overflow -Wno-error=pedantic -Wno-error=redundant-decls -Wno-error=old-style-cast -fdiagnostics-color=always -faligned-new -Wno-unused-but-set-variable -Wno-maybe-uninitialized -fno-math-errno -fno-trapping-math -Werror=format -Wno-stringop-overflow, PERF_WITH_AVX=1, PERF_WITH_AVX2=1, PERF_WITH_AVX512=1, USE_CUDA=ON, USE_EXCEPTION_PTR=1, USE_GFLAGS=OFF, USE_GLOG=OFF, USE_MKL=ON, USE_MKLDNN=ON, USE_MPI=OFF, USE_NCCL=ON, USE_NNPACK=ON, USE_OPENMP=ON, USE_STATIC_DISPATCH=OFF, \n", - "\n", - "TorchVision: 0.6.0+cu101\n", - "OpenCV: 4.5.1\n", - "MMCV: 1.2.7\n", - "MMCV Compiler: GCC 7.3\n", - "MMCV CUDA Compiler: 10.1\n", - "MMClassification: 0.9.0+f3b9380\n", - "------------------------------------------------------------\n", - "\n", - "2021-03-11 17:02:24,433 - mmcls - INFO - Distributed training: False\n", - "2021-03-11 17:02:24,563 - mmcls - INFO - Config:\n", - "model = dict(\n", - " type='ImageClassifier',\n", - " backbone=dict(\n", - " type='ResNet',\n", - " depth=50,\n", - " num_stages=4,\n", - " out_indices=(3, ),\n", - " style='pytorch'),\n", - " neck=dict(type='GlobalAveragePooling'),\n", - " head=dict(\n", - " type='LinearClsHead',\n", - " num_classes=2,\n", - " in_channels=2048,\n", - " loss=dict(type='CrossEntropyLoss', loss_weight=1.0),\n", - " topk=1))\n", - "dataset_type = 'ImageNet'\n", - "img_norm_cfg = dict(\n", - " mean=[124.508, 116.05, 106.438], std=[58.577, 57.31, 57.437], to_rgb=True)\n", - "train_pipeline = [\n", - " dict(type='LoadImageFromFile'),\n", - " dict(type='RandomResizedCrop', size=224),\n", - " dict(type='RandomFlip', flip_prob=0.5, direction='horizontal'),\n", - " dict(\n", - " type='Normalize',\n", - " mean=[123.675, 116.28, 103.53],\n", - " std=[58.395, 57.12, 57.375],\n", - " to_rgb=True),\n", - " dict(type='ImageToTensor', keys=['img']),\n", - " dict(type='ToTensor', keys=['gt_label']),\n", - " dict(type='Collect', keys=['img', 'gt_label'])\n", - "]\n", - "test_pipeline = [\n", - " dict(type='LoadImageFromFile'),\n", - " dict(type='Resize', size=(256, -1)),\n", - " dict(type='CenterCrop', crop_size=224),\n", - " dict(\n", - " type='Normalize',\n", - " mean=[123.675, 116.28, 103.53],\n", - " std=[58.395, 57.12, 57.375],\n", - " to_rgb=True),\n", - " dict(type='ImageToTensor', keys=['img']),\n", - " dict(type='Collect', keys=['img'])\n", - "]\n", - "data = dict(\n", - " samples_per_gpu=32,\n", - " workers_per_gpu=2,\n", - " train=dict(\n", - " type='ImageNet',\n", - " data_prefix='data/cats_dogs_dataset/training_set/training_set',\n", - " pipeline=[\n", - " dict(type='LoadImageFromFile'),\n", - " dict(type='RandomResizedCrop', size=224),\n", - " dict(type='RandomFlip', flip_prob=0.5, direction='horizontal'),\n", - " dict(\n", - " type='Normalize',\n", - " mean=[123.675, 116.28, 103.53],\n", - " std=[58.395, 57.12, 57.375],\n", - " to_rgb=True),\n", - " dict(type='ImageToTensor', keys=['img']),\n", - " dict(type='ToTensor', keys=['gt_label']),\n", - " dict(type='Collect', keys=['img', 'gt_label'])\n", - " ],\n", - " classes='data/cats_dogs_dataset/classes.txt'),\n", - " val=dict(\n", - " type='ImageNet',\n", - " data_prefix='data/cats_dogs_dataset/val_set/val_set',\n", - " ann_file='data/cats_dogs_dataset/val.txt',\n", - " pipeline=[\n", - " dict(type='LoadImageFromFile'),\n", - " dict(type='Resize', size=(256, -1)),\n", - " dict(type='CenterCrop', crop_size=224),\n", - " dict(\n", - " type='Normalize',\n", - " mean=[123.675, 116.28, 103.53],\n", - " std=[58.395, 57.12, 57.375],\n", - " to_rgb=True),\n", - " dict(type='ImageToTensor', keys=['img']),\n", - " dict(type='Collect', keys=['img'])\n", - " ],\n", - " classes='data/cats_dogs_dataset/classes.txt'),\n", - " test=dict(\n", - " type='ImageNet',\n", - " data_prefix='data/cats_dogs_dataset/test_set/test_set',\n", - " ann_file='data/cats_dogs_dataset/test.txt',\n", - " pipeline=[\n", - " dict(type='LoadImageFromFile'),\n", - " dict(type='Resize', size=(256, -1)),\n", - " dict(type='CenterCrop', crop_size=224),\n", - " dict(\n", - " type='Normalize',\n", - " mean=[123.675, 116.28, 103.53],\n", - " std=[58.395, 57.12, 57.375],\n", - " to_rgb=True),\n", - " dict(type='ImageToTensor', keys=['img']),\n", - " dict(type='Collect', keys=['img'])\n", - " ],\n", - " classes='data/cats_dogs_dataset/classes.txt'))\n", - "evaluation = dict(interval=1, metric='accuracy', metric_options=dict(topk=1))\n", - "optimizer = dict(type='SGD', lr=0.01, momentum=0.9, weight_decay=0.0001)\n", - "optimizer_config = dict(grad_clip=None)\n", - "lr_config = dict(policy='step', step=[1])\n", - "runner = dict(type='EpochBasedRunner', max_epochs=2)\n", - "checkpoint_config = dict(interval=1)\n", - "log_config = dict(interval=100, hooks=[dict(type='TextLoggerHook')])\n", - "dist_params = dict(backend='nccl')\n", - "log_level = 'INFO'\n", - "load_from = '/home/SENSETIME/shaoyidi/VirtualenvProjects/add_tutorials/MMCls_Tutorials/mmclassification/checkpoints/resnet50_batch256_imagenet_20200708-cfb998bf.pth'\n", - "resume_from = None\n", - "workflow = [('train', 1)]\n", - "work_dir = 'work_dirs/resnet50_cats_dogs'\n", - "gpu_ids = range(0, 1)\n", - "\n", - "2021-03-11 17:02:26,361 - mmcls - INFO - load checkpoint from /home/SENSETIME/shaoyidi/VirtualenvProjects/add_tutorials/MMCls_Tutorials/mmclassification/checkpoints/resnet50_batch256_imagenet_20200708-cfb998bf.pth\n", - "2021-03-11 17:02:26,362 - mmcls - INFO - Use load_from_local loader\n", - "2021-03-11 17:02:26,422 - mmcls - WARNING - The model and loaded state dict do not match exactly\n", - "\n", - "size mismatch for head.fc.weight: copying a param with shape torch.Size([1000, 2048]) from checkpoint, the shape in current model is torch.Size([2, 2048]).\n", - "size mismatch for head.fc.bias: copying a param with shape torch.Size([1000]) from checkpoint, the shape in current model is torch.Size([2]).\n", - "2021-03-11 17:02:26,424 - mmcls - INFO - Start running, host: SENSETIME\\shaoyidi@CN0014004140L, work_dir: /home/SENSETIME/shaoyidi/VirtualenvProjects/add_tutorials/MMCls_Tutorials/mmclassification/work_dirs/resnet50_cats_dogs\n", - "2021-03-11 17:02:26,424 - mmcls - INFO - workflow: [('train', 1)], max: 2 epochs\n", - "2021-03-11 17:03:10,368 - mmcls - INFO - Epoch [1][100/201]\tlr: 1.000e-02, eta: 0:02:12, time: 0.437, data_time: 0.023, memory: 2962, loss: 0.5598, top-1: 69.3125\n", - "2021-03-11 17:03:52,698 - mmcls - INFO - Epoch [1][200/201]\tlr: 1.000e-02, eta: 0:01:26, time: 0.423, data_time: 0.004, memory: 2962, loss: 0.3681, top-1: 78.6875\n", - "2021-03-11 17:03:52,765 - mmcls - INFO - Saving checkpoint at 1 epochs\n", - "[>>>>>>>>>>>>>>>>>>>>>>>>>>>] 1601/1601, 240.7 task/s, elapsed: 7s, ETA: 0s2021-03-11 17:03:59,601 - mmcls - INFO - Epoch(val) [1][201]\taccuracy: 92.6921\n", - "2021-03-11 17:04:43,478 - mmcls - INFO - Epoch [2][100/201]\tlr: 1.000e-03, eta: 0:00:43, time: 0.437, data_time: 0.023, memory: 2962, loss: 0.2715, top-1: 85.2500\n", - "2021-03-11 17:05:25,385 - mmcls - INFO - Epoch [2][200/201]\tlr: 1.000e-03, eta: 0:00:00, time: 0.419, data_time: 0.004, memory: 2962, loss: 0.2335, top-1: 87.6875\n", - "2021-03-11 17:05:25,449 - mmcls - INFO - Saving checkpoint at 2 epochs\n", - "[>>>>>>>>>>>>>>>>>>>>>>>>>>>] 1601/1601, 239.4 task/s, elapsed: 7s, ETA: 0s2021-03-11 17:05:32,313 - mmcls - INFO - Epoch(val) [2][201]\taccuracy: 95.3154\n" - ] - } - ], - "source": [ - "!python tools/train.py configs/resnet/resnet50_cats_dogs.py --work-dir work_dirs/resnet50_cats_dogs" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Test models\n", - "\n", - "We use `tools/test.py` to test models:\n", - "\n", - "```\n", - "python tools/test.py ${CONFIG_FILE} ${CHECKPOINT_FILE} [optional arguments]\n", - "```\n", - "\n", - "We show several optional arguments we'll use here:\n", - "\n", - "- `--metrics`: Evaluation metrics, which depends on the dataset, e.g., accuracy.\n", - "- `--metric-options`: Custom options for evaluation, e.g. topk=1.\n", - "\n", - "Please refer to `tools.test.py` for details about optional arguments.\n", - "\n", - "Here's the example of our `ResNet50`." - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Use load_from_local loader\n", - "[>>>>>>>>>>>>>>>>>>>>>>>>>>>] 2023/2023, 238.7 task/s, elapsed: 8s, ETA: 0s\n", - "accuracy : 94.91\n" - ] - } - ], - "source": [ - "!python tools/test.py configs/resnet/resnet50_cats_dogs.py work_dirs/resnet50_cats_dogs/latest.pth --metrics=accuracy --metric-options=topk=1" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Do inference\n", - "\n", - "We can use the following commands to infer a dataset and save the results.\n", - "\n", - "```shell\n", - "python tools/test.py ${CONFIG_FILE} ${CHECKPOINT_FILE} [--out ${RESULT_FILE}]\n", - "```\n", - "\n", - "Optional arguments:\n", - "\n", - "- `RESULT_FILE`: Filename of the output results. If not specified, the results will not be saved to a file.\n", - "\n", - "Here's the example of our `ResNet50`." - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Use load_from_local loader\n", - "[>>>>>>>>>>>>>>>>>>>>>>>>>>>] 2023/2023, 240.7 task/s, elapsed: 8s, ETA: 0stools/test.py:138: UserWarning: Evaluation metrics are not specified.\n", - " warnings.warn('Evaluation metrics are not specified.')\n", - "\n", - "writing results to results.json\n" - ] - } - ], - "source": [ - "!python tools/test.py configs/resnet/resnet50_cats_dogs.py work_dirs/resnet50_cats_dogs/latest.pth --out=results.json" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] - } - ], - "metadata": { - "accelerator": "GPU", - "colab": { - "collapsed_sections": [], - "include_colab_link": true, - "name": "MMSegmentation Tutorial.ipynb", - "provenance": [] - }, - "kernelspec": { - "display_name": "Python 3", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.8.5" - }, - "pycharm": { - "stem_cell": { - "cell_type": "raw", - "metadata": { - "collapsed": false - }, - "source": [] - } - }, - "toc-autonumbering": true, - "widgets": { - "application/vnd.jupyter.widget-state+json": { - "1bb2b93526cd421aa5d5b86d678932ab": { - "model_module": "@jupyter-widgets/base", - "model_name": "LayoutModel", - "state": { - "_model_module": "@jupyter-widgets/base", - "_model_module_version": "1.2.0", - "_model_name": "LayoutModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "LayoutView", - "align_content": null, - "align_items": null, - "align_self": null, - "border": null, - "bottom": null, - "display": null, - "flex": null, - "flex_flow": null, - "grid_area": null, - "grid_auto_columns": null, - "grid_auto_flow": null, - "grid_auto_rows": null, - "grid_column": null, - "grid_gap": null, - "grid_row": null, - "grid_template_areas": null, - "grid_template_columns": null, - "grid_template_rows": null, - "height": null, - "justify_content": null, - "justify_items": null, - "left": null, - "margin": null, - "max_height": null, - "max_width": null, - "min_height": null, - "min_width": null, - "object_fit": null, - "object_position": null, - "order": null, - "overflow": null, - "overflow_x": null, - "overflow_y": null, - "padding": null, - "right": null, - "top": null, - "visibility": null, - "width": null - } - }, - "32b7d27a143c41b5bb90f1d8e66a1c67": { - "model_module": "@jupyter-widgets/controls", - "model_name": "ProgressStyleModel", - "state": { - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "ProgressStyleModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "StyleView", - "bar_color": null, - "description_width": "initial" - } - }, - "40a3c0b2c7a44085b69b9c741df20b3e": { - "model_module": "@jupyter-widgets/controls", - "model_name": "HBoxModel", - "state": { - "_dom_classes": [], - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "HBoxModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/controls", - "_view_module_version": "1.5.0", - "_view_name": "HBoxView", - "box_style": "", - "children": [ - "IPY_MODEL_dae4b284c5a944639991d29f4e79fac5", - "IPY_MODEL_c78567afd0a6418781118ac9f4ecdea9" - ], - "layout": "IPY_MODEL_ec96fb4251ea4b8ea268a2bc62b9c75b" - } - }, - "55d75951f51c4ab89e32045c3d6db8a4": { - "model_module": "@jupyter-widgets/base", - "model_name": "LayoutModel", - "state": { - "_model_module": "@jupyter-widgets/base", - "_model_module_version": "1.2.0", - "_model_name": "LayoutModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "LayoutView", - "align_content": null, - "align_items": null, - "align_self": null, - "border": null, - "bottom": null, - "display": null, - "flex": null, - "flex_flow": null, - "grid_area": null, - "grid_auto_columns": null, - "grid_auto_flow": null, - "grid_auto_rows": null, - "grid_column": null, - "grid_gap": null, - "grid_row": null, - "grid_template_areas": null, - "grid_template_columns": null, - "grid_template_rows": null, - "height": null, - "justify_content": null, - "justify_items": null, - "left": null, - "margin": null, - "max_height": null, - "max_width": null, - "min_height": null, - "min_width": null, - "object_fit": null, - "object_position": null, - "order": null, - "overflow": null, - "overflow_x": null, - "overflow_y": null, - "padding": null, - "right": null, - "top": null, - "visibility": null, - "width": null - } - }, - "9d29e2d02731416d9852e9c7c08d1665": { - "model_module": "@jupyter-widgets/controls", - "model_name": "DescriptionStyleModel", - "state": { - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "DescriptionStyleModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "StyleView", - "description_width": "" - } - }, - "c78567afd0a6418781118ac9f4ecdea9": { - "model_module": "@jupyter-widgets/controls", - "model_name": "HTMLModel", - "state": { - "_dom_classes": [], - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "HTMLModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/controls", - "_view_module_version": "1.5.0", - "_view_name": "HTMLView", - "description": "", - "description_tooltip": null, - "layout": "IPY_MODEL_1bb2b93526cd421aa5d5b86d678932ab", - "placeholder": "​", - "style": "IPY_MODEL_9d29e2d02731416d9852e9c7c08d1665", - "value": " 97.8M/97.8M [00:10<00:00, 9.75MB/s]" - } - }, - "dae4b284c5a944639991d29f4e79fac5": { - "model_module": "@jupyter-widgets/controls", - "model_name": "FloatProgressModel", - "state": { - "_dom_classes": [], - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "FloatProgressModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/controls", - "_view_module_version": "1.5.0", - "_view_name": "ProgressView", - "bar_style": "success", - "description": "100%", - "description_tooltip": null, - "layout": "IPY_MODEL_55d75951f51c4ab89e32045c3d6db8a4", - "max": 102567401, - "min": 0, - "orientation": "horizontal", - "style": "IPY_MODEL_32b7d27a143c41b5bb90f1d8e66a1c67", - "value": 102567401 - } - }, - "ec96fb4251ea4b8ea268a2bc62b9c75b": { - "model_module": "@jupyter-widgets/base", - "model_name": "LayoutModel", - "state": { - "_model_module": "@jupyter-widgets/base", - "_model_module_version": "1.2.0", - "_model_name": "LayoutModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "LayoutView", - "align_content": null, - "align_items": null, - "align_self": null, - "border": null, - "bottom": null, - "display": null, - "flex": null, - "flex_flow": null, - "grid_area": null, - "grid_auto_columns": null, - "grid_auto_flow": null, - "grid_auto_rows": null, - "grid_column": null, - "grid_gap": null, - "grid_row": null, - "grid_template_areas": null, - "grid_template_columns": null, - "grid_template_rows": null, - "height": null, - "justify_content": null, - "justify_items": null, - "left": null, - "margin": null, - "max_height": null, - "max_width": null, - "min_height": null, - "min_width": null, - "object_fit": null, - "object_position": null, - "order": null, - "overflow": null, - "overflow_x": null, - "overflow_y": null, - "padding": null, - "right": null, - "top": null, - "visibility": null, - "width": null - } - } - } - } - }, - "nbformat": 4, - "nbformat_minor": 4 -} diff --git a/openmmlab_test/mmclassification-speed-benchmark/docs/tutorials/data_pipeline.md b/openmmlab_test/mmclassification-speed-benchmark/docs/tutorials/data_pipeline.md deleted file mode 100644 index dbbabdb2..00000000 --- a/openmmlab_test/mmclassification-speed-benchmark/docs/tutorials/data_pipeline.md +++ /dev/null @@ -1,144 +0,0 @@ -# Tutorial 3: Custom Data Pipelines - -## Design of Data pipelines - -Following typical conventions, we use `Dataset` and `DataLoader` for data loading -with multiple workers. Indexing `Dataset` returns a dict of data items corresponding to -the arguments of models forward method. - -The data preparation pipeline and the dataset is decomposed. Usually a dataset -defines how to process the annotations and a data pipeline defines all the steps to prepare a data dict. -A pipeline consists of a sequence of operations. Each operation takes a dict as input and also output a dict for the next transform. - -The operations are categorized into data loading, pre-processing and formatting. - -Here is an pipeline example for ResNet-50 training on ImageNet. - -```python -img_norm_cfg = dict( - mean=[123.675, 116.28, 103.53], std=[58.395, 57.12, 57.375], to_rgb=True) -train_pipeline = [ - dict(type='LoadImageFromFile'), - dict(type='RandomResizedCrop', size=224), - dict(type='RandomFlip', flip_prob=0.5, direction='horizontal'), - dict(type='Normalize', **img_norm_cfg), - dict(type='ImageToTensor', keys=['img']), - dict(type='ToTensor', keys=['gt_label']), - dict(type='Collect', keys=['img', 'gt_label']) -] -test_pipeline = [ - dict(type='LoadImageFromFile'), - dict(type='Resize', size=256), - dict(type='CenterCrop', crop_size=224), - dict(type='Normalize', **img_norm_cfg), - dict(type='ImageToTensor', keys=['img']), - dict(type='Collect', keys=['img']) -] -``` - -For each operation, we list the related dict fields that are added/updated/removed. -At the end of the pipeline, we use `Collect` to only retain the necessary items for forward computation. - -### Data loading - -`LoadImageFromFile` - -- add: img, img_shape, ori_shape - -By default, `LoadImageFromFile` loads images from disk but it may lead to IO bottleneck for efficient small models. -Various backends are supported by mmcv to accelerate this process. For example, if the training machines have setup -[memcached](https://memcached.org/), we can revise the config as follows. - -``` -memcached_root = '/mnt/xxx/memcached_client/' -train_pipeline = [ - dict( - type='LoadImageFromFile', - file_client_args=dict( - backend='memcached', - server_list_cfg=osp.join(memcached_root, 'server_list.conf'), - client_cfg=osp.join(memcached_root, 'client.conf'))), -] -``` - -More supported backends can be found in [mmcv.fileio.FileClient](https://github.com/open-mmlab/mmcv/blob/master/mmcv/fileio/file_client.py). - -### Pre-processing - -`Resize` - -- add: scale, scale_idx, pad_shape, scale_factor, keep_ratio -- update: img, img_shape - -`RandomFlip` - -- add: flip, flip_direction -- update: img - -`RandomCrop` - -- update: img, pad_shape - -`Normalize` - -- add: img_norm_cfg -- update: img - -### Formatting - -`ToTensor` - -- update: specified by `keys`. - -`ImageToTensor` - -- update: specified by `keys`. - -`Collect` - -- remove: all other keys except for those specified by `keys` - -## Extend and use custom pipelines - -1. Write a new pipeline in any file, e.g., `my_pipeline.py`, and place it in - the folder `mmcls/datasets/pipelines/`. The pipeline class needs to override - the `__call__` method which takes a dict as input and returns a dict. - - ```python - from mmcls.datasets import PIPELINES - - @PIPELINES.register_module() - class MyTransform(object): - - def __call__(self, results): - # apply transforms on results['img'] - return results - ``` - -2. Import the new class in `mmcls/datasets/pipelines/__init__.py`. - - ```python - ... - from .my_pipeline import MyTransform - - __all__ = [ - ..., 'MyTransform' - ] - ``` - -3. Use it in config files. - - ```python - img_norm_cfg = dict( - mean=[123.675, 116.28, 103.53], std=[58.395, 57.12, 57.375], to_rgb=True) - train_pipeline = [ - dict(type='LoadImageFromFile'), - dict(type='RandomResizedCrop', size=224), - dict(type='RandomFlip', flip_prob=0.5, direction='horizontal'), - dict(type='MyTransform'), - dict(type='Normalize', **img_norm_cfg), - dict(type='ImageToTensor', keys=['img']), - dict(type='ToTensor', keys=['gt_label']), - dict(type='Collect', keys=['img', 'gt_label']) - ] - ``` diff --git a/openmmlab_test/mmclassification-speed-benchmark/docs/tutorials/finetune.md b/openmmlab_test/mmclassification-speed-benchmark/docs/tutorials/finetune.md deleted file mode 100644 index d3066a55..00000000 --- a/openmmlab_test/mmclassification-speed-benchmark/docs/tutorials/finetune.md +++ /dev/null @@ -1,94 +0,0 @@ -# Tutorial 1: Finetuning Models - -Classification models pre-trained on the ImageNet dataset has been demonstrated to be effective for other datasets and other downstream tasks. -This tutorial provides instruction for users to use the models provided in the [Model Zoo](../model_zoo.md) for other datasets to obtain better performance. - -There are two steps to finetune a model on a new dataset. - -- Add support for the new dataset following [Tutorial 2: Adding New Dataset](new_dataset.md). -- Modify the configs as will be discussed in this tutorial. - -Take the finetuning on CIFAR10 Dataset as an example, the users need to modify five parts in the config. - -## Inherit base configs - -To reuse the common parts among different configs, we support inheriting configs from multiple existing configs. To finetune a ResNet-50 model, the new config needs to inherit -`_base_/models/resnet50.py` to build the basic structure of the model. To use the CIFAR10 Dataset, the new config can also simply inherit `_base_/datasets/cifar10.py`. For runtime settings such as training schedules, the new config needs to inherit `_base_/default_runtime.py`. - -```python -_base_ = [ - '../_base_/models/resnet50.py', - '../_base_/datasets/cifar10.py', '../_base_/default_runtime.py' -] -``` - -Besides, users can also choose to write the whole contents rather than use inheritance, e.g. `configs/mnist/lenet5.py`. - -## Modify head - -Then the new config needs to modify the head according to the class numbers of the new datasets. By only changing `num_classes` in the head, the weights of the pre-trained models are mostly reused except the final prediction head. - -```python -_base_ = ['./resnet50.py'] -model = dict( - pretrained=None, - head=dict( - type='LinearClsHead', - num_classes=10, - in_channels=2048, - loss=dict(type='CrossEntropyLoss', loss_weight=1.0), - )) -``` - -## Modify dataset - -The users may also need to prepare the dataset and write the configs about dataset. We currently support MNIST, CIFAR and ImageNet Dataset. -For fintuning on CIFAR10, its original input size is 32 and thus we should resize it to 224, to fit the input size of models pretrained on ImageNet. - -```python -_base_ = ['./cifar10.py'] -img_norm_cfg = dict( - mean=[125.307, 122.961, 113.8575], - std=[51.5865, 50.847, 51.255], - to_rgb=True) -train_pipeline = [ - dict(type='RandomCrop', size=32, padding=4), - dict(type='RandomFlip', flip_prob=0.5, direction='horizontal'), - dict(type='Resize', size=224) - dict(type='Normalize', **img_norm_cfg), - dict(type='ImageToTensor', keys=['img']), - dict(type='ToTensor', keys=['gt_label']), - dict(type='Collect', keys=['img', 'gt_label']) - ] - test_pipeline = [ - dict(type='Resize', size=224) - dict(type='Normalize', **img_norm_cfg), - dict(type='ImageToTensor', keys=['img']), - dict(type='Collect', keys=['img']) - ] -``` - -## Modify training schedule - -The finetuning hyperparameters vary from the default schedule. It usually requires smaller learning rate and less training epochs. - -```python -# optimizer -# lr is set for a batch size of 128 -optimizer = dict(type='SGD', lr=0.01, momentum=0.9, weight_decay=0.0001) -optimizer_config = dict(grad_clip=None) -# learning policy -lr_config = dict( - policy='step', - step=[15]) -runner = dict(type='EpochBasedRunner', max_epochs=200) -log_config = dict(interval=100) -``` - -## Use pre-trained model - -To use the pre-trained model, the new config add the link of pre-trained models in the `load_from`. The users might need to download the model weights before training to avoid the download time during training. - -```python -load_from = 'https://s3.ap-northeast-2.amazonaws.com/open-mmlab/mmclassification/models/tbd.pth' # noqa -``` diff --git a/openmmlab_test/mmclassification-speed-benchmark/docs/tutorials/model_serving.md b/openmmlab_test/mmclassification-speed-benchmark/docs/tutorials/model_serving.md deleted file mode 100644 index 253b7db7..00000000 --- a/openmmlab_test/mmclassification-speed-benchmark/docs/tutorials/model_serving.md +++ /dev/null @@ -1,55 +0,0 @@ -# Model Serving - -In order to serve an `MMClassification` model with [`TorchServe`](https://pytorch.org/serve/), you can follow the steps: - -## 1. Convert model from MMClassification to TorchServe - -```shell -python tools/deployment/mmcls2torchserve.py ${CONFIG_FILE} ${CHECKPOINT_FILE} \ ---output-folder ${MODEL_STORE} \ ---model-name ${MODEL_NAME} -``` - -**Note**: ${MODEL_STORE} needs to be an absolute path to a folder. - -## 2. Build `mmcls-serve` docker image - -```shell -docker build -t mmcls-serve:latest docker/serve/ -``` - -## 3. Run `mmcls-serve` - -Check the official docs for [running TorchServe with docker](https://github.com/pytorch/serve/blob/master/docker/README.md#running-torchserve-in-a-production-docker-environment). - -In order to run in GPU, you need to install [nvidia-docker](https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/install-guide.html). You can omit the `--gpus` argument in order to run in CPU. - -Example: - -```shell -docker run --rm \ ---cpus 8 \ ---gpus device=0 \ --p8080:8080 -p8081:8081 -p8082:8082 \ ---mount type=bind,source=$MODEL_STORE,target=/home/model-server/model-store \ -mmcls-serve:latest -``` - -[Read the docs](https://github.com/pytorch/serve/blob/072f5d088cce9bb64b2a18af065886c9b01b317b/docs/rest_api.md) about the Inference (8080), Management (8081) and Metrics (8082) APis - -## 4. Test deployment - -```shell -curl -O https://raw.githubusercontent.com/pytorch/serve/master/docs/images/3dogs.jpg -curl http://127.0.0.1:8080/predictions/${MODEL_NAME} -T 3dogs.jpg -``` - -You should obtain a respose similar to: - -```json -{ - "pred_label": 245, - "pred_score": 0.5536593794822693, - "pred_class": "French bulldog" -} -``` diff --git a/openmmlab_test/mmclassification-speed-benchmark/docs/tutorials/new_dataset.md b/openmmlab_test/mmclassification-speed-benchmark/docs/tutorials/new_dataset.md deleted file mode 100644 index 13ddfd2d..00000000 --- a/openmmlab_test/mmclassification-speed-benchmark/docs/tutorials/new_dataset.md +++ /dev/null @@ -1,141 +0,0 @@ -# Tutorial 2: Adding New Dataset - -## Customize datasets by reorganizing data - -### Reorganize dataset to existing format - -The simplest way is to convert your dataset to existing dataset formats (ImageNet). - -For training, it differentiates classes by folders. The directory of training data is as follows: - -``` -imagenet -├── ... -├── train -│ ├── n01440764 -│ │ ├── n01440764_10026.JPEG -│ │ ├── n01440764_10027.JPEG -│ │ ├── ... -│ ├── ... -│ ├── n15075141 -│ │ ├── n15075141_999.JPEG -│ │ ├── n15075141_9993.JPEG -│ │ ├── ... -``` - -For validation, we provide a annotation list. Each line of the list contrains a filename and its corresponding ground-truth labels. The format is as follows: - -``` -ILSVRC2012_val_00000001.JPEG 65 -ILSVRC2012_val_00000002.JPEG 970 -ILSVRC2012_val_00000003.JPEG 230 -ILSVRC2012_val_00000004.JPEG 809 -ILSVRC2012_val_00000005.JPEG 516 -``` - -Note: The value of ground-truth labels should fall in range `[0, num_classes - 1]`. - -### An example of customized dataset - -You can write a new Dataset class inherited from `BaseDataset`, and overwrite `load_annotations(self)`, -like [CIFAR10](https://github.com/open-mmlab/mmclassification/blob/master/mmcls/datasets/cifar.py) and [ImageNet](https://github.com/open-mmlab/mmclassification/blob/master/mmcls/datasets/imagenet.py). -Typically, this function returns a list, where each sample is a dict, containing necessary data informations, e.g., `img` and `gt_label`. - -Assume we are going to implement a `Filelist` dataset, which takes filelists for both training and testing. The format of annotation list is as follows: - -``` -000001.jpg 0 -000002.jpg 1 -``` - -We can create a new dataset in `mmcls/datasets/filelist.py` to load the data. - -```python -import mmcv -import numpy as np - -from .builder import DATASETS -from .base_dataset import BaseDataset - - -@DATASETS.register_module() -class Filelist(BaseDataset): - - def load_annotations(self): - assert isinstance(self.ann_file, str) - - data_infos = [] - with open(self.ann_file) as f: - samples = [x.strip().split(' ') for x in f.readlines()] - for filename, gt_label in samples: - info = {'img_prefix': self.data_prefix} - info['img_info'] = {'filename': filename} - info['gt_label'] = np.array(gt_label, dtype=np.int64) - data_infos.append(info) - return data_infos - -``` - -And add this dataset class in `mmcls/datasets/__init__.py` - -```python -from .base_dataset import BaseDataset -... -from .filelist import Filelist - -__all__ = [ - 'BaseDataset', ... ,'Filelist' -] -``` - -Then in the config, to use `Filelist` you can modify the config as the following - -```python -train = dict( - type='Filelist', - ann_file = 'image_list.txt', - pipeline=train_pipeline -) -``` - -## Customize datasets by mixing dataset - -MMClassification also supports to mix dataset for training. -Currently it supports to concat and repeat datasets. - -### Repeat dataset - -We use `RepeatDataset` as wrapper to repeat the dataset. For example, suppose the original dataset is `Dataset_A`, to repeat it, the config looks like the following - -```python -dataset_A_train = dict( - type='RepeatDataset', - times=N, - dataset=dict( # This is the original config of Dataset_A - type='Dataset_A', - ... - pipeline=train_pipeline - ) - ) -``` - -### Class balanced dataset - -We use `ClassBalancedDataset` as wrapper to repeat the dataset based on category -frequency. The dataset to repeat needs to instantiate function `self.get_cat_ids(idx)` -to support `ClassBalancedDataset`. -For example, to repeat `Dataset_A` with `oversample_thr=1e-3`, the config looks like the following - -```python -dataset_A_train = dict( - type='ClassBalancedDataset', - oversample_thr=1e-3, - dataset=dict( # This is the original config of Dataset_A - type='Dataset_A', - ... - pipeline=train_pipeline - ) - ) -``` - -You may refer to [source code](../../mmcls/datasets/dataset_wrappers.py) for details. diff --git a/openmmlab_test/mmclassification-speed-benchmark/docs/tutorials/new_modules.md b/openmmlab_test/mmclassification-speed-benchmark/docs/tutorials/new_modules.md deleted file mode 100644 index 8a63ca6f..00000000 --- a/openmmlab_test/mmclassification-speed-benchmark/docs/tutorials/new_modules.md +++ /dev/null @@ -1,272 +0,0 @@ -# Tutorial 4: Adding New Modules - -## Develop new components - -We basically categorize model components into 3 types. - -- backbone: usually an feature extraction network, e.g., ResNet, MobileNet. -- neck: the component between backbones and heads, e.g., GlobalAveragePooling. -- head: the component for specific tasks, e.g., classification or regression. - -### Add new backbones - -Here we show how to develop new components with an example of ResNet_CIFAR. -As the input size of CIFAR is 32x32, this backbone replaces the `kernel_size=7, stride=2` to `kernel_size=3, stride=1` and remove the MaxPooling after stem, to avoid forwarding small feature maps to residual blocks. -It inherits from ResNet and only modifies the stem layers. - -1. Create a new file `mmcls/models/backbones/resnet_cifar.py`. - -```python -import torch.nn as nn - -from ..builder import BACKBONES -from .resnet import ResNet - - -@BACKBONES.register_module() -class ResNet_CIFAR(ResNet): - - """ResNet backbone for CIFAR. - - short description of the backbone - - Args: - depth(int): Network depth, from {18, 34, 50, 101, 152}. - ... - """ - - def __init__(self, depth, deep_stem, **kwargs): - # call ResNet init - super(ResNet_CIFAR, self).__init__(depth, deep_stem=deep_stem, **kwargs) - # other specific initialization - assert not self.deep_stem, 'ResNet_CIFAR do not support deep_stem' - - def _make_stem_layer(self, in_channels, base_channels): - # override ResNet method to modify the network structure - self.conv1 = build_conv_layer( - self.conv_cfg, - in_channels, - base_channels, - kernel_size=3, - stride=1, - padding=1, - bias=False) - self.norm1_name, norm1 = build_norm_layer( - self.norm_cfg, base_channels, postfix=1) - self.add_module(self.norm1_name, norm1) - self.relu = nn.ReLU(inplace=True) - - def forward(self, x): # should return a tuple - pass # implementation is ignored - - def init_weights(self, pretrained=None): - pass # override ResNet init_weights if necessary - - def train(self, mode=True): - pass # override ResNet train if necessary -``` - -2. Import the module in `mmcls/models/backbones/__init__.py`. - -```python -... -from .resnet_cifar import ResNet_CIFAR - -__all__ = [ - ..., 'ResNet_CIFAR' -] -``` - -3. Use it in your config file. - -```python -model = dict( - ... - backbone=dict( - type='ResNet_CIFAR', - depth=18, - other_arg=xxx), - ... -``` - -### Add new necks - -Here we take `GlobalAveragePooling` as an example. It is a very simple neck without any arguments. -To add a new neck, we mainly implement the `forward` function, which applies some operation on the output from backbone and forward the results to head. - -1. Create a new file in `mmcls/models/necks/gap.py`. - - ```python - import torch.nn as nn - - from ..builder import NECKS - - @NECKS.register_module() - class GlobalAveragePooling(nn.Module): - - def __init__(self): - self.gap = nn.AdaptiveAvgPool2d((1, 1)) - - def forward(self, inputs): - # we regard inputs as tensor for simplicity - outs = self.gap(inputs) - outs = outs.view(inputs.size(0), -1) - return outs - ``` - -2. Import the module in `mmcls/models/necks/__init__.py`. - - ```python - ... - from .gap import GlobalAveragePooling - - __all__ = [ - ..., 'GlobalAveragePooling' - ] - ``` - -3. Modify the config file. - - ```python - model = dict( - neck=dict(type='GlobalAveragePooling'), - ) - ``` - -### Add new heads - -Here we show how to develop a new head with the example of `LinearClsHead` as the following. -To implement a new head, basically we need to implement `forward_train`, which takes the feature maps from necks or backbones as input and compute loss based on ground-truth labels. - -1. Create a new file in `mmcls/models/heads/linear_head.py`. - - ```python - from ..builder import HEADS - from .cls_head import ClsHead - - - @HEADS.register_module() - class LinearClsHead(ClsHead): - - def __init__(self, - num_classes, - in_channels, - loss=dict(type='CrossEntropyLoss', loss_weight=1.0), - topk=(1, )): - super(LinearClsHead, self).__init__(loss=loss, topk=topk) - self.in_channels = in_channels - self.num_classes = num_classes - - if self.num_classes <= 0: - raise ValueError( - f'num_classes={num_classes} must be a positive integer') - - self._init_layers() - - def _init_layers(self): - self.fc = nn.Linear(self.in_channels, self.num_classes) - - def init_weights(self): - normal_init(self.fc, mean=0, std=0.01, bias=0) - - def forward_train(self, x, gt_label): - cls_score = self.fc(x) - losses = self.loss(cls_score, gt_label) - return losses - - ``` - -2. Import the module in `mmcls/models/heads/__init__.py`. - - ```python - ... - from .linear_head import LinearClsHead - - __all__ = [ - ..., 'LinearClsHead' - ] - ``` - -3. Modify the config file. - -Together with the added GlobalAveragePooling neck, an entire config for a model is as follows. - -```python -model = dict( - type='ImageClassifier', - backbone=dict( - type='ResNet', - depth=50, - num_stages=4, - out_indices=(3, ), - style='pytorch'), - neck=dict(type='GlobalAveragePooling'), - head=dict( - type='LinearClsHead', - num_classes=1000, - in_channels=2048, - loss=dict(type='CrossEntropyLoss', loss_weight=1.0), - topk=(1, 5), - )) - -``` - -### Add new loss - -To add a new loss function, we mainly implement the `forward` function in the loss module. -In addition, it is helpful to leverage the decorator `weighted_loss` to weight the loss for each element. -Assuming that we want to mimic a probablistic distribution generated from another classification model, we implement a L1Loss to fulfil the purpose as below. - -1. Create a new file in `mmcls/models/losses/l1_loss.py`. - - ```python - import torch - import torch.nn as nn - - from ..builder import LOSSES - from .utils import weighted_loss - - @weighted_loss - def l1_loss(pred, target): - assert pred.size() == target.size() and target.numel() > 0 - loss = torch.abs(pred - target) - return loss - - @LOSSES.register_module() - class L1Loss(nn.Module): - - def __init__(self, reduction='mean', loss_weight=1.0): - super(L1Loss, self).__init__() - self.reduction = reduction - self.loss_weight = loss_weight - - def forward(self, - pred, - target, - weight=None, - avg_factor=None, - reduction_override=None): - assert reduction_override in (None, 'none', 'mean', 'sum') - reduction = ( - reduction_override if reduction_override else self.reduction) - loss = self.loss_weight * l1_loss( - pred, target, weight, reduction=reduction, avg_factor=avg_factor) - return loss - ``` - -2. Import the module in `mmcls/models/losses/__init__.py`. - - ```python - ... - from .l1_loss import L1Loss, l1_loss - - __all__ = [ - ..., 'L1Loss', 'l1_loss' - ] - ``` - -3. Modify loss field in the config. - - ```python - loss=dict(type='L1Loss', loss_weight=1.0)) - ``` diff --git a/openmmlab_test/mmclassification-speed-benchmark/docs/tutorials/onnx2tensorrt.md b/openmmlab_test/mmclassification-speed-benchmark/docs/tutorials/onnx2tensorrt.md deleted file mode 100644 index b2d5aa4d..00000000 --- a/openmmlab_test/mmclassification-speed-benchmark/docs/tutorials/onnx2tensorrt.md +++ /dev/null @@ -1,80 +0,0 @@ -# ONNX to TensorRT (Experimental) - - - -- [Tutorial 6: ONNX to TensorRT (Experimental)](#tutorial-6-onnx-to-tensorrt-experimental) - - [How to convert models from ONNX to TensorRT](#how-to-convert-models-from-onnx-to-tensorrt) - - [Prerequisite](#prerequisite) - - [Usage](#usage) - - [List of supported models convertable to TensorRT](#list-of-supported-models-convertable-to-tensorrt) - - [Reminders](#reminders) - - [FAQs](#faqs) - - - -## How to convert models from ONNX to TensorRT - -### Prerequisite - -1. Please refer to [install.md](https://mmclassification.readthedocs.io/en/latest/install.html#install-mmclassification) for installation of MMClassification from source. -2. Use our tool [pytorch2onnx.md](./pytorch2onnx.md) to convert the model from PyTorch to ONNX. - -### Usage - -```bash -python tools/deployment/onnx2tensorrt.py \ - ${MODEL} \ - --trt-file ${TRT_FILE} \ - --shape ${IMAGE_SHAPE} \ - --max-batch-size ${MAX_BATCH_SIZE} \ - --workspace-size ${WORKSPACE_SIZE} \ - --fp16 \ - --show \ - --verify \ -``` - -Description of all arguments: - -- `model` : The path of an ONNX model file. -- `--trt-file`: The Path of output TensorRT engine file. If not specified, it will be set to `tmp.trt`. -- `--shape`: The height and width of model input. If not specified, it will be set to `224 224`. -- `--max-batch-size`: The max batch size of TensorRT model, should not be less than 1. -- `--fp16`: Enable fp16 mode. -- `--workspace-size` : The required GPU workspace size in GiB to build TensorRT engine. If not specified, it will be set to `1` GiB. -- `--show`: Determines whether to show the outputs of the model. If not specified, it will be set to `False`. -- `--verify`: Determines whether to verify the correctness of models between ONNXRuntime and TensorRT. If not specified, it will be set to `False`. - -Example: - -```bash -python tools/deployment/onnx2tensorrt.py \ - checkpoints/resnet/resnet18_b16x8_cifar10.onnx \ - --trt-file checkpoints/resnet/resnet18_b16x8_cifar10.trt \ - --shape 224 224 \ - --show \ - --verify \ -``` - -## List of supported models convertable to TensorRT - -The table below lists the models that are guaranteed to be convertable to TensorRT. - -| Model | Config | Status | -| :----------: | :--------------------------------------------------------------------------: | :----: | -| MobileNetV2 | `configs/mobilenet_v2/mobilenet_v2_b32x8_imagenet.py` | Y | -| ResNet | `configs/resnet/resnet18_b16x8_cifar10.py` | Y | -| ResNeXt | `configs/resnext/resnext50_32x4d_b32x8_imagenet.py` | Y | -| ShuffleNetV1 | `configs/shufflenet_v1/shufflenet_v1_1x_b64x16_linearlr_bn_nowd_imagenet.py` | Y | -| ShuffleNetV2 | `configs/shufflenet_v2/shufflenet_v2_1x_b64x16_linearlr_bn_nowd_imagenet.py` | Y | - -Notes: - -- *All models above are tested with Pytorch==1.6.0 and TensorRT-7.2.1.6.Ubuntu-16.04.x86_64-gnu.cuda-10.2.cudnn8.0* - -## Reminders - -- If you meet any problem with the listed models above, please create an issue and it would be taken care of soon. For models not included in the list, we may not provide much help here due to the limited resources. Please try to dig a little deeper and debug by yourself. - -## FAQs - -- None diff --git a/openmmlab_test/mmclassification-speed-benchmark/docs/tutorials/pytorch2onnx.md b/openmmlab_test/mmclassification-speed-benchmark/docs/tutorials/pytorch2onnx.md deleted file mode 100644 index 0032a5d8..00000000 --- a/openmmlab_test/mmclassification-speed-benchmark/docs/tutorials/pytorch2onnx.md +++ /dev/null @@ -1,204 +0,0 @@ -# Pytorch to ONNX (Experimental) - - - -- [Tutorial 5: Pytorch to ONNX (Experimental)](#tutorial-5-pytorch-to-onnx-experimental) - - [How to convert models from Pytorch to ONNX](#how-to-convert-models-from-pytorch-to-onnx) - - [Prerequisite](#prerequisite) - - [Usage](#usage) - - [Description of all arguments:](#description-of-all-arguments) - - [How to evaluate ONNX models with ONNX Runtime](#how-to-evaluate-onnx-models-with-onnx-runtime) - - [Prerequisite](#prerequisite-1) - - [Usage](#usage-1) - - [Description of all arguments](#description-of-all-arguments-1) - - [Results and Models](#results-and-models) - - [List of supported models exportable to ONNX](#list-of-supported-models-exportable-to-onnx) - - [Reminders](#reminders) - - [FAQs](#faqs) - - - -## How to convert models from Pytorch to ONNX - -### Prerequisite - -1. Please refer to [install](https://mmclassification.readthedocs.io/en/latest/install.html#install-mmclassification) for installation of MMClassification. -2. Install onnx and onnxruntime - - ```shell - pip install onnx onnxruntime==1.5.1 - ``` - -### Usage - -```bash -python tools/deployment/pytorch2onnx.py \ - ${CONFIG_FILE} \ - --checkpoint ${CHECKPOINT_FILE} \ - --output-file ${OUTPUT_FILE} \ - --shape ${IMAGE_SHAPE} \ - --opset-version ${OPSET_VERSION} \ - --dynamic-export \ - --show \ - --simplify \ - --verify \ -``` - -### Description of all arguments: - -- `config` : The path of a model config file. -- `--checkpoint` : The path of a model checkpoint file. -- `--output-file`: The path of output ONNX model. If not specified, it will be set to `tmp.onnx`. -- `--shape`: The height and width of input tensor to the model. If not specified, it will be set to `224 224`. -- `--opset-version` : The opset version of ONNX. If not specified, it will be set to `11`. -- `--dynamic-export` : Determines whether to export ONNX with dynamic input shape and output shapes. If not specified, it will be set to `False`. -- `--show`: Determines whether to print the architecture of the exported model. If not specified, it will be set to `False`. -- `--simplify`: Determines whether to simplify the exported ONNX model. If not specified, it will be set to `False`. -- `--verify`: Determines whether to verify the correctness of an exported model. If not specified, it will be set to `False`. - -Example: - -```bash -python tools/deployment/pytorch2onnx.py \ - configs/resnet/resnet18_b16x8_cifar10.py \ - --checkpoint checkpoints/resnet/resnet18_b16x8_cifar10.pth \ - --output-file checkpoints/resnet/resnet18_b16x8_cifar10.onnx \ - --dynamic-export \ - --show \ - --simplify \ - --verify \ -``` - -## How to evaluate ONNX models with ONNX Runtime - -We prepare a tool `tools/deployment/test.py` to evaluate ONNX models with ONNXRuntime or TensorRT. - -### Prerequisite - -- Install onnx and onnxruntime-gpu - - ```shell - pip install onnx onnxruntime-gpu - ``` - -### Usage - -```bash -python tools/deployment/test.py \ - ${CONFIG_FILE} \ - ${ONNX_FILE} \ - --backend ${BACKEND} \ - --out ${OUTPUT_FILE} \ - --metrics ${EVALUATION_METRICS} \ - --metric-options ${EVALUATION_OPTIONS} \ - --show - --show-dir ${SHOW_DIRECTORY} \ - --cfg-options ${CFG_OPTIONS} \ -``` - -### Description of all arguments - -- `config`: The path of a model config file. -- `model`: The path of a ONNX model file. -- `--backend`: Backend for input model to run and should be `onnxruntime` or `tensorrt`. -- `--out`: The path of output result file in pickle format. -- `--metrics`: Evaluation metrics, which depends on the dataset, e.g., "accuracy", "precision", "recall", "f1_score", "support" for single label dataset, and "mAP", "CP", "CR", "CF1", "OP", "OR", "OF1" for multi-label dataset. -- `--show`: Determines whether to show classifier outputs. If not specified, it will be set to `False`. -- `--show-dir`: Directory where painted images will be saved -- `--metrics-options`: Custom options for evaluation, the key-value pair in `xxx=yyy` format will be kwargs for `dataset.evaluate()` function -- `--cfg-options`: Override some settings in the used config file, the key-value pair in `xxx=yyy` format will be merged into config file. - -### Results and Models - -This part selects ImageNet for onnxruntime verification. ImageNet has multiple versions, but the most commonly used one is [ILSVRC 2012](http://www.image-net.org/challenges/LSVRC/2012/). - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
ModelConfigMetricPyTorchONNXRuntimeTensorRT-fp32TensorRT-fp16
ResNetresnet50_b32x8_imagenet.pyTop 1 / 576.55 / 93.1576.49 / 93.2276.49 / 93.2276.50 / 93.20
ResNeXtresnext50_32x4d_b32x8_imagenet.pyTop 1 / 577.90 / 93.6677.90 / 93.6677.90 / 93.6677.89 / 93.65
SE-ResNetseresnet50_b32x8_imagenet.pyTop 1 / 577.74 / 93.8477.74 / 93.8477.74 / 93.8477.74 / 93.85
ShuffleNetV1shufflenet_v1_1x_b64x16_linearlr_bn_nowd_imagenet.pyTop 1 / 568.13 / 87.8168.13 / 87.8168.13 / 87.8168.10 / 87.80
ShuffleNetV2shufflenet_v2_1x_b64x16_linearlr_bn_nowd_imagenet.pyTop 1 / 569.55 / 88.9269.55 / 88.9269.55 / 88.9269.55 / 88.92
MobileNetV2mobilenet_v2_b32x8_imagenet.pyTop 1 / 571.86 / 90.4271.86 / 90.4271.86 / 90.4271.88 / 90.40
- -## List of supported models exportable to ONNX - -The table below lists the models that are guaranteed to be exportable to ONNX and runnable in ONNX Runtime. - -| Model | Config | Batch Inference | Dynamic Shape | Note | -| :----------: | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :-------------: | :-----------: | ---- | -| MobileNetV2 | [mobilenet_v2_b32x8_imagenet.py](https://github.com/open-mmlab/mmclassification/tree/master/configs/mobilenet_v2/mobilenet_v2_b32x8_imagenet.py) | Y | Y | | -| ResNet | [resnet18_b16x8_cifar10.py](https://github.com/open-mmlab/mmclassification/tree/master/configs/resnet/resnet18_b16x8_cifar10.py) | Y | Y | | -| ResNeXt | [resnext50_32x4d_b32x8_imagenet.py](https://github.com/open-mmlab/mmclassification/tree/master/configs/resnext/resnext50_32x4d_b32x8_imagenet.py) | Y | Y | | -| SE-ResNet | [seresnet50_b32x8_imagenet.py](https://github.com/open-mmlab/mmclassification/tree/master/configs/seresnet/seresnet50_b32x8_imagenet.py) | Y | Y | | -| ShuffleNetV1 | [shufflenet_v1_1x_b64x16_linearlr_bn_nowd_imagenet.py](https://github.com/open-mmlab/mmclassification/tree/master/configs/shufflenet_v1/shufflenet_v1_1x_b64x16_linearlr_bn_nowd_imagenet.py) | Y | Y | | -| ShuffleNetV2 | [shufflenet_v2_1x_b64x16_linearlr_bn_nowd_imagenet.py](https://github.com/open-mmlab/mmclassification/tree/master/configs/shufflenet_v2/shufflenet_v2_1x_b64x16_linearlr_bn_nowd_imagenet.py) | Y | Y | | - -Notes: - -- *All models above are tested with Pytorch==1.6.0* - -## Reminders - -- If you meet any problem with the listed models above, please create an issue and it would be taken care of soon. For models not included in the list, please try to dig a little deeper and debug a little bit more and hopefully solve them by yourself. - -## FAQs - -- None diff --git a/openmmlab_test/mmclassification-speed-benchmark/docs/tutorials/pytorch2torchscript.md b/openmmlab_test/mmclassification-speed-benchmark/docs/tutorials/pytorch2torchscript.md deleted file mode 100644 index 13ea2ccf..00000000 --- a/openmmlab_test/mmclassification-speed-benchmark/docs/tutorials/pytorch2torchscript.md +++ /dev/null @@ -1,56 +0,0 @@ -# Tutorial 5: Pytorch to TorchScript (Experimental) - - - -- [Tutorial 5: Pytorch to TorchScript (Experimental)](#tutorial-5-pytorch-to-torchscript-experimental) - - [How to convert models from Pytorch to TorchScript](#how-to-convert-models-from-pytorch-to-torchscript) - - [Usage](#usage) - - [Description of all arguments](#description-of-all-arguments) - - [Reminders](#reminders) - - [FAQs](#faqs) - - - -## How to convert models from Pytorch to TorchScript - -### Usage - -```bash -python tools/deployment/pytorch2torchscript.py \ - ${CONFIG_FILE} \ - --checkpoint ${CHECKPOINT_FILE} \ - --output-file ${OUTPUT_FILE} \ - --shape ${IMAGE_SHAPE} \ - --verify \ -``` - -### Description of all arguments - -- `config` : The path of a model config file. -- `--checkpoint` : The path of a model checkpoint file. -- `--output-file`: The path of output TorchScript model. If not specified, it will be set to `tmp.pt`. -- `--shape`: The height and width of input tensor to the model. If not specified, it will be set to `224 224`. -- `--verify`: Determines whether to verify the correctness of an exported model. If not specified, it will be set to `False`. - -Example: - -```bash -python tools/deployment/pytorch2onnx.py \ - configs/resnet/resnet18_b16x8_cifar10.py \ - --checkpoint checkpoints/resnet/resnet18_b16x8_cifar10.pth \ - --output-file checkpoints/resnet/resnet18_b16x8_cifar10.pt \ - --verify \ -``` - -Notes: - -- *All models above are tested with Pytorch==1.8.1* - -## Reminders - -- For torch.jit.is_tracing() is only supported after v1.6. For users with pytorch v1.3-v1.5, we suggest early returning tensors manually. -- If you meet any problem with the models in this repo, please create an issue and it would be taken care of soon. - -## FAQs - -- None diff --git a/openmmlab_test/mmclassification-speed-benchmark/docs_zh-CN/conf.py b/openmmlab_test/mmclassification-speed-benchmark/docs_zh-CN/conf.py deleted file mode 100644 index 5a162c8d..00000000 --- a/openmmlab_test/mmclassification-speed-benchmark/docs_zh-CN/conf.py +++ /dev/null @@ -1,85 +0,0 @@ -# Configuration file for the Sphinx documentation builder. -# -# This file only contains a selection of the most common options. For a full -# list see the documentation: -# https://www.sphinx-doc.org/en/master/usage/configuration.html - -# -- Path setup -------------------------------------------------------------- - -# If extensions (or modules to document with autodoc) are in another directory, -# add these directories to sys.path here. If the directory is relative to the -# documentation root, use os.path.abspath to make it absolute, like shown here. -# -import os -import subprocess -import sys - -sys.path.insert(0, os.path.abspath('..')) - -# -- Project information ----------------------------------------------------- - -project = 'MMClassification' -copyright = '2020, OpenMMLab' -author = 'MMClassification Authors' -version_file = '../mmcls/version.py' - - -def get_version(): - with open(version_file, 'r') as f: - exec(compile(f.read(), version_file, 'exec')) - return locals()['__version__'] - - -# The full version, including alpha/beta/rc tags -release = get_version() - -# -- General configuration --------------------------------------------------- - -# Add any Sphinx extension module names here, as strings. They can be -# extensions coming with Sphinx (named 'sphinx.ext.*') or your custom -# ones. -extensions = [ - 'sphinx.ext.autodoc', - 'sphinx.ext.napoleon', - 'sphinx.ext.viewcode', - 'recommonmark', - 'sphinx_markdown_tables', -] - -autodoc_mock_imports = ['mmcls.version'] - -# Add any paths that contain templates here, relative to this directory. -templates_path = ['_templates'] - -# List of patterns, relative to source directory, that match files and -# directories to ignore when looking for source files. -# This pattern also affects html_static_path and html_extra_path. -exclude_patterns = ['_build', 'Thumbs.db', '.DS_Store'] - -# -- Options for HTML output ------------------------------------------------- -source_suffix = { - '.rst': 'restructuredtext', - '.md': 'markdown', -} - -# The theme to use for HTML and HTML Help pages. See the documentation for -# a list of builtin themes. -# -html_theme = 'sphinx_rtd_theme' - -# Add any paths that contain custom static files (such as style sheets) here, -# relative to this directory. They are copied after the builtin static files, -# so a file named "default.css" will overwrite the builtin "default.css". -html_static_path = ['_static'] - -language = 'zh_CN' - -master_doc = 'index' - - -def builder_inited_handler(app): - subprocess.run(['./stat.py']) - - -def setup(app): - app.connect('builder-inited', builder_inited_handler) diff --git a/openmmlab_test/mmclassification-speed-benchmark/docs_zh-CN/getting_started.md b/openmmlab_test/mmclassification-speed-benchmark/docs_zh-CN/getting_started.md deleted file mode 100644 index ea46fcb7..00000000 --- a/openmmlab_test/mmclassification-speed-benchmark/docs_zh-CN/getting_started.md +++ /dev/null @@ -1,222 +0,0 @@ -# 基础教程 - -本文档提供 MMClassification 相关用法的基本教程。 - -## 准备数据集 - -MMClassification 建议用户将数据集根目录链接到 `$MMCLASSIFICATION/data` 下。 -如果用户的文件夹结构与默认结构不同,则需要在配置文件中进行对应路径的修改。 - -``` -mmclassification -├── mmcls -├── tools -├── configs -├── docs -├── data -│ ├── imagenet -│ │ ├── meta -│ │ ├── train -│ │ ├── val -│ ├── cifar -│ │ ├── cifar-10-batches-py -│ ├── mnist -│ │ ├── train-images-idx3-ubyte -│ │ ├── train-labels-idx1-ubyte -│ │ ├── t10k-images-idx3-ubyte -│ │ ├── t10k-labels-idx1-ubyte - -``` - -对于 ImageNet,其存在多个版本,但最为常用的一个是 [ILSVRC 2012](http://www.image-net.org/challenges/LSVRC/2012/),可以通过以下步骤获取该数据集。 - -1. 注册账号并登录 [下载页面](http://www.image-net.org/download-images) -2. 获取 ILSVRC2012 下载链接并下载以下文件 - - ILSVRC2012_img_train.tar (~138GB) - - ILSVRC2012_img_val.tar (~6.3GB) -3. 解压下载的文件 -4. 使用 [该脚本](https://github.com/BVLC/caffe/blob/master/data/ilsvrc12/get_ilsvrc_aux.sh) 获取元数据 - -对于 MNIST,CIFAR10 和 CIFAR100,程序将会在需要的时候自动下载数据集。 - -对于用户自定义数据集的准备,请参阅 [教程 2:如何增加新数据集](tutorials/new_dataset.md) - -## 使用预训练模型进行推理 - -MMClassification 提供了一些脚本用于进行单张图像的推理、数据集的推理和数据集的测试(如 ImageNet 等) - -### 单张图像的推理 - -```shell -python demo/image_demo.py ${IMAGE_FILE} ${CONFIG_FILE} ${CHECKPOINT_FILE} -``` - -### 数据集的推理与测试 - -- 支持单 GPU -- 支持单节点多 GPU -- 支持多节点 - -用户可使用以下命令进行数据集的推理: - -```shell -# 单 GPU -python tools/test.py ${CONFIG_FILE} ${CHECKPOINT_FILE} [--metrics ${METRICS}] [--out ${RESULT_FILE}] - -# 多 GPU -./tools/dist_test.sh ${CONFIG_FILE} ${CHECKPOINT_FILE} ${GPU_NUM} [--metrics ${METRICS}] [--out ${RESULT_FILE}] - -# 基于 slurm 分布式环境的多节点 -python tools/test.py ${CONFIG_FILE} ${CHECKPOINT_FILE} [--metrics ${METRICS}] [--out ${RESULT_FILE}] --launcher slurm -``` - -可选参数: - -- `RESULT_FILE`:输出结果的文件名。如果未指定,结果将不会保存到文件中。支持 json, yaml, pickle 格式。 -- `METRICS`:数据集测试指标,如准确率 (accuracy), 精确率 (precision), 召回率 (recall) 等 - -例子: - -假定用户将下载的模型权重文件放置在 `checkpoints/` 目录下。 - -在 ImageNet 验证集上,使用 ResNet-50 进行推理并获得预测标签及其对应的预测得分。 - -```shell -python tools/test.py configs/imagenet/resnet50_batch256.py checkpoints/xxx.pth --out result.pkl -``` - -## 模型训练 - -MMClassification 使用 `MMDistributedDataParallel` 进行分布式训练,使用 `MMDataParallel` 进行非分布式训练。 - -所有的输出(日志文件和模型权重文件)会被将保存到工作目录下。工作目录通过配置文件中的参数 `work_dir` 指定。 - -默认情况下,MMClassification 在每个周期后会在验证集上评估模型,可以通过在训练配置中修改 `interval` 参数来更改评估间隔 - -```python -evaluation = dict(interval=12) # 每进行 12 轮训练后评估一次模型 -``` - -### 使用单个 GPU 进行训练 - -```shell -python tools/train.py ${CONFIG_FILE} [optional arguments] -``` - -如果用户想在命令中指定工作目录,则需要增加参数 `--work-dir ${YOUR_WORK_DIR}` - -### 使用多个 GPU 进行训练 - -```shell -./tools/dist_train.sh ${CONFIG_FILE} ${GPU_NUM} [optional arguments] -``` - -可选参数为: - -- `--no-validate` (**不建议**): 默认情况下,程序将会在训练期间的每 k (默认为 1) 个周期进行一次验证。要禁用这一功能,使用 `--no-validate` -- `--work-dir ${WORK_DIR}`:覆盖配置文件中指定的工作目录。 -- `--resume-from ${CHECKPOINT_FILE}`:从以前的模型权重文件恢复训练。 - -`resume-from` 和 `load-from` 的不同点: -`resume-from` 加载模型参数和优化器状态,并且保留检查点所在的周期数,常被用于恢复意外被中断的训练。 -`load-from` 只加载模型参数,但周期数从 0 开始计数,常被用于微调模型。 - -### 使用多台机器进行训练 - -如果用户在 [slurm](https://slurm.schedmd.com/) 集群上运行 MMClassification,可使用 `slurm_train.sh` 脚本。(该脚本也支持单台机器上进行训练) - -```shell -[GPUS=${GPUS}] ./tools/slurm_train.sh ${PARTITION} ${JOB_NAME} ${CONFIG_FILE} ${WORK_DIR} -``` - -用户可以在 [slurm_train.sh](https://github.com/open-mmlab/mmclassification/blob/master/tools/slurm_train.sh) 中检查所有的参数和环境变量 - -如果用户的多台机器通过 Ethernet 连接,则可以参考 pytorch [launch utility](https://pytorch.org/docs/stable/distributed.html#launch-utility)。如果用户没有高速网络,如 InfiniBand,速度将会非常慢。 - -### 使用单台机器启动多个任务 - -如果用使用单台机器启动多个任务,如在有 8 块 GPU 的单台机器上启动 2 个需要 4 块 GPU 的训练任务,则需要为每个任务指定不同端口,以避免通信冲突。 - -如果用户使用 `dist_train.sh` 脚本启动训练任务,则可以通过以下命令指定端口 - -```shell -CUDA_VISIBLE_DEVICES=0,1,2,3 PORT=29500 ./tools/dist_train.sh ${CONFIG_FILE} 4 -CUDA_VISIBLE_DEVICES=4,5,6,7 PORT=29501 ./tools/dist_train.sh ${CONFIG_FILE} 4 -``` - -如果用户在 slurm 集群下启动多个训练任务,则需要修改配置文件(通常是配置文件的倒数第 6 行)中的 `dist_params` 变量,以设置不同的通信端口。 - -在 `config1.py` 中, - -```python -dist_params = dict(backend='nccl', port=29500) -``` - -在 `config2.py` 中, - -```python -dist_params = dict(backend='nccl', port=29501) -``` - -之后便可启动两个任务,分别对应 `config1.py` 和 `config2.py`。 - -```shell -CUDA_VISIBLE_DEVICES=0,1,2,3 GPUS=4 ./tools/slurm_train.sh ${PARTITION} ${JOB_NAME} config1.py ${WORK_DIR} -CUDA_VISIBLE_DEVICES=4,5,6,7 GPUS=4 ./tools/slurm_train.sh ${PARTITION} ${JOB_NAME} config2.py ${WORK_DIR} -``` - -## 实用工具 - -我们在 `tools/` 目录下提供的一些对训练和测试十分有用的工具 - -### 计算 FLOPs 和参数量(试验性的) - -我们根据 [flops-counter.pytorch](https://github.com/sovrasov/flops-counter.pytorch) 提供了一个脚本用于计算给定模型的 FLOPs 和参数量 - -```shell -python tools/get_flops.py ${CONFIG_FILE} [--shape ${INPUT_SHAPE}] -``` - -用户将获得如下结果: - -``` -============================== -Input shape: (3, 224, 224) -Flops: 4.12 GFLOPs -Params: 25.56 M -============================== -``` - - -**注意**:此工具仍处于试验阶段,我们不保证该数字正确无误。您最好将结果用于简单比较,但在技术报告或论文中采用该结果之前,请仔细检查。 - -- FLOPs 与输入的尺寸有关,而参数量与输入尺寸无关。默认输入尺寸为 (1, 3, 224, 224) -- 一些运算不会被计入 FLOPs 的统计中,例如 GN 和自定义运算。详细信息请参考 [`mmcv.cnn.get_model_complexity_info()`](https://github.com/open-mmlab/mmcv/blob/master/mmcv/cnn/utils/flops_counter.py) - -### 模型发布 - -在上传模型至 AWS 之前,也许会需要 -- 转换模型权重至 CPU 张量 -- 删除优化器状态 -- 计算模型权重文件的哈希值,并添加至文件名之后 - -```shell -python tools/publish_model.py ${INPUT_FILENAME} ${OUTPUT_FILENAME} -``` - -例如: - -```shell -python tools/publish_model.py work_dirs/resnet50/latest.pth imagenet_resnet50_20200708.pth -``` - -最终输出的文件名将会是 `imagenet_resnet50_20200708-{hash id}.pth` - -## 详细教程 - -目前,MMClassification 提供以下几种更详细的教程: - -- [如何微调模型](tutorials/finetune.md) -- [如何增加新数据集](tutorials/new_dataset.md) -- [如何设计数据处理流程](tutorials/data_pipeline.md) -- [如何增加新模块](tutorials/new_modules.md) diff --git a/openmmlab_test/mmclassification-speed-benchmark/docs_zh-CN/index.rst b/openmmlab_test/mmclassification-speed-benchmark/docs_zh-CN/index.rst deleted file mode 100644 index 3a7c46e7..00000000 --- a/openmmlab_test/mmclassification-speed-benchmark/docs_zh-CN/index.rst +++ /dev/null @@ -1,52 +0,0 @@ -欢迎来到 MMClassification 中文教程! -========================================== - -You can switch between Chinese and English documents in the lower-left corner of the layout. - -您可以在页面左下角切换中英文文档。 - -.. toctree:: - :maxdepth: 2 - :caption: 开始你的第一步 - - install.md - getting_started.md - - -.. toctree:: - :maxdepth: 2 - :caption: 模型库 - - modelzoo_statistics.md - - -.. toctree:: - :maxdepth: 2 - :caption: 教程 - - tutorials/finetune.md - tutorials/new_dataset.md - tutorials/data_pipeline.md - tutorials/new_modules.md - - -.. toctree:: - :maxdepth: 2 - :caption: 实用工具 - - tutorials/pytorch2onnx.md - tutorials/onnx2tensorrt.md - - -.. toctree:: - :caption: 语言切换 - - switch_language.md - - - -索引与表格 -================== - -* :ref:`genindex` -* :ref:`search` diff --git a/openmmlab_test/mmclassification-speed-benchmark/docs_zh-CN/install.md b/openmmlab_test/mmclassification-speed-benchmark/docs_zh-CN/install.md deleted file mode 100644 index 928d4f17..00000000 --- a/openmmlab_test/mmclassification-speed-benchmark/docs_zh-CN/install.md +++ /dev/null @@ -1,84 +0,0 @@ -## 安装 - -### 安装依赖包 - -- Python 3.6+ -- PyTorch 1.3+ -- [MMCV](https://github.com/open-mmlab/mmcv) - -MMClassification 和 MMCV 的适配关系如下,请安装正确版本的 MMCV 以避免安装问题 - -| MMClassification 版本 | MMCV 版本 | -|:---------------------:|:-----------:| -| master | mmcv>=1.3.1, <=1.5.0 | -| 0.12.0 | mmcv>=1.3.1, <=1.5.0 | -| 0.11.1 | mmcv>=1.3.1, <=1.5.0 | -| 0.11.0 | mmcv>=1.3.0 | -| 0.10.0 | mmcv>=1.3.0 | -| 0.9.0 | mmcv>=1.1.4 | -| 0.8.0 | mmcv>=1.1.4 | -| 0.7.0 | mmcv>=1.1.4 | -| 0.6.0 | mmcv>=1.1.4 | - -### 安装 MMClassification 步骤 - -a. 创建 conda 虚拟环境,并激活 - -```shell -conda create -n open-mmlab python=3.7 -y -conda activate open-mmlab -``` - -b. 按照 [官方指南](https://pytorch.org/) 安装 PyTorch 和 TorchVision,如: - -```shell -conda install pytorch torchvision -c pytorch -``` - -**注**:请确保 CUDA 编译版本和运行版本相匹配 -用户可以参照 [PyTorch 官网](https://pytorch.org/) 对预编译包所支持的 CUDA 版本进行核对。 - -`例 1`:如果用户的 `/usr/local/cuda` 文件夹下已安装 CUDA 10.1 版本,并且想要安装 PyTorch 1.5 版本, -则需要安装 CUDA 10.1 下预编译的 PyTorch。 - -```shell -conda install pytorch cudatoolkit=10.1 torchvision -c pytorch -``` - -`例 2`:如果用户的 `/usr/local/cuda` 文件夹下已安装 CUDA 9.2 版本,并且想要安装 PyTorch 1.3.1 版本, -则需要安装 CUDA 9.2 下预编译的 PyTorch。 - -```shell -conda install pytorch=1.3.1 cudatoolkit=9.2 torchvision=0.4.2 -c pytorch -``` - -如果 PyTorch 是由源码进行编译安装(而非直接下载预编译好的安装包),则可以使用更多的 CUDA 版本(如 9.0 版本)。 - -c. 克隆 mmclassification 库 - -```shell -git clone https://github.com/open-mmlab/mmclassification.git -cd mmclassification -``` - -d. 安装依赖包和 MMClassification - -```shell -pip install -e . # or "python setup.py develop" -``` - -提示: - -1. 按照以上步骤,MMClassification 是以 `dev` 模式安装的,任何本地的代码修改都可以直接生效,无需重新安装(除非提交了一些 commit,并且希望提升版本号) - -2. 如果希望使用 `opencv-python-headless` 而不是 `opencv-python`,可以在安装 [mmcv](https://github.com/open-mmlab/mmcv) 之前提前安装。 - -### 在多个 MMClassification 版本下进行开发 - -MMClassification 的训练和测试脚本已经修改了 `PYTHONPATH` 变量,以确保其能够运行当前目录下的 MMClassification。 - -如果想要运行环境下默认的 MMClassification,用户需要在训练和测试脚本中去除这一行: - -```shell -PYTHONPATH="$(dirname $0)/..":$PYTHONPATH -``` diff --git a/openmmlab_test/mmclassification-speed-benchmark/docs_zh-CN/stat.py b/openmmlab_test/mmclassification-speed-benchmark/docs_zh-CN/stat.py deleted file mode 100644 index 88f94ee8..00000000 --- a/openmmlab_test/mmclassification-speed-benchmark/docs_zh-CN/stat.py +++ /dev/null @@ -1,65 +0,0 @@ -#!/usr/bin/env python -import functools as func -import glob -import os.path as osp -import re - -import numpy as np - -url_prefix = 'https://github.com/open-mmlab/mmclassification/blob/master/' - -files = sorted(glob.glob('../configs/*/README.md')) - -stats = [] -titles = [] -num_ckpts = 0 -num_configs = 0 - -for f in files: - url = osp.dirname(f.replace('../', url_prefix)) - - with open(f, 'r') as content_file: - content = content_file.read() - - title = content.split('\n')[0].replace('# ', '').strip() - - ckpts = set(x.lower().strip() - for x in re.findall(r'\[model\]\((https?.*)\)', content)) - - if len(ckpts) == 0: - continue - - _papertype = [x for x in re.findall(r'\[([A-Z]+)\]', content)] - assert len(_papertype) > 0 - papertype = _papertype[0] - - paper = set([(papertype, title)]) - - num_ckpts += len(ckpts) - titles.append(title) - - statsmsg = f""" -\t* [{papertype}] [{title}]({url}) ({len(ckpts)} ckpts) -""" - stats.append((paper, ckpts, statsmsg)) - -allpapers = func.reduce(lambda a, b: a.union(b), [p for p, _, _ in stats]) -msglist = '\n'.join(x for _, _, x in stats) - -papertypes, papercounts = np.unique([t for t, _ in allpapers], - return_counts=True) -countstr = '\n'.join( - [f' - {t}: {c}' for t, c in zip(papertypes, papercounts)]) - -modelzoo = f""" -# 模型库统计 - -* 论文数量: {len(set(titles))} -{countstr} - -* 模型权重文件数量: {num_ckpts} -{msglist} -""" - -with open('modelzoo_statistics.md', 'w') as f: - f.write(modelzoo) diff --git a/openmmlab_test/mmclassification-speed-benchmark/docs_zh-CN/switch_language.md b/openmmlab_test/mmclassification-speed-benchmark/docs_zh-CN/switch_language.md deleted file mode 100644 index dcf3b297..00000000 --- a/openmmlab_test/mmclassification-speed-benchmark/docs_zh-CN/switch_language.md +++ /dev/null @@ -1,3 +0,0 @@ -## English - -## 简体中文 diff --git a/openmmlab_test/mmclassification-speed-benchmark/docs_zh-CN/tutorials/MMClassification_Tutorial.ipynb b/openmmlab_test/mmclassification-speed-benchmark/docs_zh-CN/tutorials/MMClassification_Tutorial.ipynb deleted file mode 100644 index b724a12c..00000000 --- a/openmmlab_test/mmclassification-speed-benchmark/docs_zh-CN/tutorials/MMClassification_Tutorial.ipynb +++ /dev/null @@ -1,2353 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "metadata": { - "colab_type": "text", - "id": "FVmnaxFJvsb8" - }, - "source": [ - "# MMClassification Tutorial\n", - "Welcome to MMClassification!\n", - "\n", - "In this tutorial, we demo\n", - "* How to install MMCls\n", - "* How to do inference and feature extraction with MMCls trained weight\n", - "* How to train on your own dataset and visualize the results. \n", - "* How to use command line tools" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "colab_type": "text", - "id": "QS8YHrEhbpas" - }, - "source": [ - "## Install MMClassification\n", - "This step may take several minutes.\n", - "\n", - "We use PyTorch 1.5.0 and CUDA 10.1 for this tutorial. You may install other versions by change the version number in pip install command." - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/", - "height": 170 - }, - "colab_type": "code", - "id": "UWyLrLYaNEaL", - "outputId": "35b19c63-d6f3-49e1-dcaa-aed3ecd85ed7" - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "nvcc: NVIDIA (R) Cuda compiler driver\n", - "Copyright (c) 2005-2019 NVIDIA Corporation\n", - "Built on Wed_Oct_23_19:24:38_PDT_2019\n", - "Cuda compilation tools, release 10.2, V10.2.89\n", - "gcc (Ubuntu 5.4.0-6ubuntu1~16.04.12) 5.4.0 20160609\n", - "Copyright (C) 2015 Free Software Foundation, Inc.\n", - "This is free software; see the source for copying conditions. There is NO\n", - "warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n", - "\n" - ] - } - ], - "source": [ - "# Check nvcc version\n", - "!nvcc -V\n", - "# Check GCC version\n", - "!gcc --version" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/", - "height": 340 - }, - "colab_type": "code", - "id": "Ki3WUBjKbutg", - "outputId": "69f42fab-3f44-44d0-bd62-b73836f90a3d" - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Looking in indexes: https://mirrors.aliyun.com/pypi/simple\n", - "Looking in links: https://download.pytorch.org/whl/torch_stable.html\n", - "Requirement already up-to-date: torch==1.5.0+cu101 in /home/SENSETIME/shaoyidi/anaconda3/lib/python3.8/site-packages (1.5.0+cu101)\n", - "Requirement already up-to-date: torchvision==0.6.0+cu101 in /home/SENSETIME/shaoyidi/anaconda3/lib/python3.8/site-packages (0.6.0+cu101)\n", - "Requirement already satisfied, skipping upgrade: numpy in /home/SENSETIME/shaoyidi/anaconda3/lib/python3.8/site-packages (from torch==1.5.0+cu101) (1.19.2)\n", - "Requirement already satisfied, skipping upgrade: future in /home/SENSETIME/shaoyidi/anaconda3/lib/python3.8/site-packages (from torch==1.5.0+cu101) (0.18.2)\n", - "Requirement already satisfied, skipping upgrade: pillow>=4.1.1 in /home/SENSETIME/shaoyidi/anaconda3/lib/python3.8/site-packages (from torchvision==0.6.0+cu101) (8.0.1)\n", - "Looking in indexes: https://mirrors.aliyun.com/pypi/simple\n", - "Looking in links: https://download.openmmlab.com/mmcv/dist/cu101/torch1.5.0/index.html\n", - "Requirement already satisfied: mmcv-full in /home/SENSETIME/shaoyidi/anaconda3/lib/python3.8/site-packages (1.2.7)\n", - "Requirement already satisfied: Pillow in /home/SENSETIME/shaoyidi/anaconda3/lib/python3.8/site-packages (from mmcv-full) (8.0.1)\n", - "Requirement already satisfied: opencv-python>=3 in /home/SENSETIME/shaoyidi/anaconda3/lib/python3.8/site-packages (from mmcv-full) (4.5.1.48)\n", - "Requirement already satisfied: yapf in /home/SENSETIME/shaoyidi/anaconda3/lib/python3.8/site-packages (from mmcv-full) (0.30.0)\n", - "Requirement already satisfied: numpy in /home/SENSETIME/shaoyidi/anaconda3/lib/python3.8/site-packages (from mmcv-full) (1.19.2)\n", - "Requirement already satisfied: addict in /home/SENSETIME/shaoyidi/anaconda3/lib/python3.8/site-packages (from mmcv-full) (2.4.0)\n", - "Requirement already satisfied: pyyaml in /home/SENSETIME/shaoyidi/anaconda3/lib/python3.8/site-packages (from mmcv-full) (5.3.1)\n" - ] - } - ], - "source": [ - "# Install PyTorch\n", - "!pip install -U torch==1.5.0+cu101 torchvision==0.6.0+cu101 -f https://download.pytorch.org/whl/torch_stable.html\n", - "# Install mmcv\n", - "# !pip install mmcv-full\n", - "# !pip install mmcv-full -f https://download.openmmlab.com/mmcv/dist/{cu_version}/{torch_version}/index.html\n", - "!pip install mmcv-full -f https://download.openmmlab.com/mmcv/dist/cu101/torch1.5.0/index.html" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/", - "height": 374 - }, - "colab_type": "code", - "id": "nR-hHRvbNJJZ", - "outputId": "ca6d9c48-0034-47cf-97b5-f31f529cc31c" - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "fatal: destination path 'mmclassification' already exists and is not an empty directory.\n", - "/home/SENSETIME/shaoyidi/VirtualenvProjects/add_tutorials/MMCls_Tutorials/mmclassification\n", - "Looking in indexes: https://mirrors.aliyun.com/pypi/simple\n", - "Obtaining file:///home/SENSETIME/shaoyidi/VirtualenvProjects/add_tutorials/MMCls_Tutorials/mmclassification\n", - "Requirement already satisfied: matplotlib in /home/SENSETIME/shaoyidi/anaconda3/lib/python3.8/site-packages (from mmcls==0.9.0) (3.3.2)\n", - "Requirement already satisfied: numpy in /home/SENSETIME/shaoyidi/anaconda3/lib/python3.8/site-packages (from mmcls==0.9.0) (1.19.2)\n", - "Requirement already satisfied: python-dateutil>=2.1 in /home/SENSETIME/shaoyidi/anaconda3/lib/python3.8/site-packages (from matplotlib->mmcls==0.9.0) (2.8.1)\n", - "Requirement already satisfied: kiwisolver>=1.0.1 in /home/SENSETIME/shaoyidi/anaconda3/lib/python3.8/site-packages (from matplotlib->mmcls==0.9.0) (1.3.0)\n", - "Requirement already satisfied: pyparsing!=2.0.4,!=2.1.2,!=2.1.6,>=2.0.3 in /home/SENSETIME/shaoyidi/anaconda3/lib/python3.8/site-packages (from matplotlib->mmcls==0.9.0) (2.4.7)\n", - "Requirement already satisfied: cycler>=0.10 in /home/SENSETIME/shaoyidi/anaconda3/lib/python3.8/site-packages (from matplotlib->mmcls==0.9.0) (0.10.0)\n", - "Requirement already satisfied: certifi>=2020.06.20 in /home/SENSETIME/shaoyidi/anaconda3/lib/python3.8/site-packages (from matplotlib->mmcls==0.9.0) (2020.6.20)\n", - "Requirement already satisfied: pillow>=6.2.0 in /home/SENSETIME/shaoyidi/anaconda3/lib/python3.8/site-packages (from matplotlib->mmcls==0.9.0) (8.0.1)\n", - "Requirement already satisfied: six>=1.5 in /home/SENSETIME/shaoyidi/anaconda3/lib/python3.8/site-packages (from python-dateutil>=2.1->matplotlib->mmcls==0.9.0) (1.15.0)\n", - "Installing collected packages: mmcls\n", - " Attempting uninstall: mmcls\n", - " Found existing installation: mmcls 0.9.0\n", - " Uninstalling mmcls-0.9.0:\n", - " Successfully uninstalled mmcls-0.9.0\n", - " Running setup.py develop for mmcls\n", - "Successfully installed mmcls\n" - ] - } - ], - "source": [ - "# Install mmcls\n", - "!git clone https://github.com/open-mmlab/mmclassification.git\n", - "%cd mmclassification\n", - "\n", - "!pip install -e ." - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/", - "height": 51 - }, - "colab_type": "code", - "id": "mAE_h7XhPT7d", - "outputId": "912ec9be-4103-40b8-91cc-4d31e9415f60" - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "1.5.0+cu101 True\n", - "0.9.0\n" - ] - } - ], - "source": [ - "# Check Pytorch installation\n", - "import torch, torchvision\n", - "print(torch.__version__, torch.cuda.is_available())\n", - "\n", - "# Check MMClassification installation\n", - "import mmcls\n", - "print(mmcls.__version__)" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "colab_type": "text", - "id": "eUcuC3dUv32I" - }, - "source": [ - "## Use MMCls pretrained models\n", - "\n", - "MMCls provides many pretrained models in the [model zoo](https://github.com/open-mmlab/mmclassification/blob/master/docs/model_zoo.md).\n", - "These models are already trained to state-of-the-art accuracy on ImageNet dataset.\n", - "We can use pretrained models to classify images or extract image features for downstream tasks.\n", - "\n", - "To use a pretrained model, we need to:\n", - "\n", - "- Prepare the model\n", - " - Prepare the config file \n", - " - Prepare the parameter file\n", - "- Build the model in Python\n", - "- Perform inference tasks, such as classification or feature extraction. \n", - "\n", - "### Prepare Model Files\n", - "\n", - "A pretrained model is defined with a config file and a parameter file. The config file defines the model structure and the parameter file stores all parameters. \n", - "\n", - "MMCls provides pretrained models in separated pages on GitHub. \n", - "For example, config and parameter files for ResNet50 is listed in [this page](https://github.com/open-mmlab/mmclassification/tree/master/configs/resnet).\n", - "\n", - "As we already clone the config file along with the repo, what we need more is to download the parameter file manually. By convention, we store the parameter files into the `checkpoints` folder. " - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "mkdir: cannot create directory ‘checkpoints’: File exists\n", - "--2021-03-11 17:14:56-- https://download.openmmlab.com/mmclassification/v0/resnet/resnet50_batch256_imagenet_20200708-cfb998bf.pth\n", - "Connecting to 172.16.1.135:3128... connected.\n", - "Proxy request sent, awaiting response... 200 OK\n", - "Length: 102491894 (98M) [application/octet-stream]\n", - "Saving to: ‘checkpoints/resnet50_batch256_imagenet_20200708-cfb998bf.pth.2’\n", - "\n", - "resnet50_batch256_i 100%[===================>] 97.74M 9.98MB/s in 9.7s \n", - "\n", - "2021-03-11 17:15:07 (10.1 MB/s) - ‘checkpoints/resnet50_batch256_imagenet_20200708-cfb998bf.pth.2’ saved [102491894/102491894]\n", - "\n" - ] - } - ], - "source": [ - "!mkdir checkpoints\n", - "!wget https://download.openmmlab.com/mmclassification/v0/resnet/resnet50_batch256_imagenet_20200708-cfb998bf.pth -P checkpoints" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Perform inference\n", - "\n", - "MMCls provides high level APIs for inference. \n", - "\n", - "First, we need to build the model." - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "metadata": { - "colab": {}, - "colab_type": "code", - "id": "H8Fxg8i-wHJE" - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Use load_from_local loader\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "/home/SENSETIME/shaoyidi/VirtualenvProjects/add_tutorials/MMCls_Tutorials/mmclassification/mmcls/apis/inference.py:44: UserWarning: Class names are not saved in the checkpoint's meta data, use imagenet by default.\n", - " warnings.warn('Class names are not saved in the checkpoint\\'s '\n" - ] - } - ], - "source": [ - "from mmcls.apis import inference_model, init_model, show_result_pyplot\n", - "\n", - "# Specify the path to config file and checkpoint file\n", - "config_file = 'configs/resnet/resnet50_b32x8_imagenet.py'\n", - "checkpoint_file = 'checkpoints/resnet50_batch256_imagenet_20200708-cfb998bf.pth'\n", - "# Specify the device. You may also use cpu by `device='cpu'`.\n", - "device = 'cuda:0'\n", - "# Build the model from a config file and a checkpoint file\n", - "model = init_model(config_file, checkpoint_file, device=device)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Then, we use the model to classify the sample image. " - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "metadata": { - "colab": {}, - "colab_type": "code", - "id": "izFv6pSRujk9" - }, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "/home/SENSETIME/shaoyidi/anaconda3/lib/python3.8/site-packages/ipykernel/ipkernel.py:287: DeprecationWarning: `should_run_async` will not call `transform_cell` automatically in the future. Please pass the result to `transformed_cell` argument and any exception that happen during thetransform in `preprocessing_exc_tuple` in IPython 7.17 and above.\n", - " and should_run_async(code)\n" - ] - } - ], - "source": [ - "# Test a single image\n", - "img = 'demo/demo.JPEG'\n", - "result = inference_model(model, img)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Let's checkout the result!" - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/", - "height": 504 - }, - "colab_type": "code", - "id": "bDcs9udgunQK", - "outputId": "8221fdb1-92af-4d7c-e65b-c7adf0f5a8af" - }, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "/home/SENSETIME/shaoyidi/VirtualenvProjects/add_tutorials/MMCls_Tutorials/mmclassification/mmcls/models/classifiers/base.py:216: UserWarning: show==False and out_file is not specified, only result image will be returned\n", - " warnings.warn('show==False and out_file is not specified, only '\n" - ] - }, - { - "data": { - "image/png": "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\n", - "text/plain": [ - "
" - ] - }, - "metadata": { - "needs_background": "light" - }, - "output_type": "display_data" - } - ], - "source": [ - "# Show the results\n", - "show_result_pyplot(model, img, result)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Feature extraction\n", - "\n", - "Feature extraction is another inference task. We can use pretrained model to extract sematic feature for downstream tasks. \n", - "MMClassifcation also provides such facilities. \n", - "\n", - "Assuming we have already built model with pretrained weights, there're more steps to do:\n", - "\n", - "1. Load the image processing pipeline. This is very important because we need to ensure data preprocessing during training and testing are the equivalent.\n", - "2. Preprocess the image. \n", - "3. Forward through the model and extract feature." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Here, we load image with test pipeline. " - ] - }, - { - "cell_type": "code", - "execution_count": 9, - "metadata": {}, - "outputs": [], - "source": [ - "from mmcls.datasets.pipelines import Compose\n", - "from mmcv.parallel import collate, scatter\n", - "\n", - "# Pack image info into a dict\n", - "data = dict(img_info=dict(filename=img), img_prefix=None)\n", - "# Parse the test pipeline\n", - "cfg = model.cfg\n", - "test_pipeline = Compose(cfg.data.test.pipeline)\n", - "# Process the image\n", - "data = test_pipeline(data)\n", - "\n", - "# Scatter to specified GPU\n", - "data = collate([data], samples_per_gpu=1)\n", - "if next(model.parameters()).is_cuda:\n", - " data = scatter(data, [device])[0]" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Then, we can use the API from model to get the feature." - ] - }, - { - "cell_type": "code", - "execution_count": 10, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "torch.Size([1, 2048])\n" - ] - } - ], - "source": [ - "# Forward the model\n", - "with torch.no_grad():\n", - " features = model.extract_feat(data['img'])\n", - "\n", - "# Show the feature, it is a 1280-dim vector\n", - "print(features.shape)" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "colab_type": "text", - "id": "Ta51clKX4cwM" - }, - "source": [ - "## Finetune pretrained model with customized dataset\n", - "\n", - "Finetuning is the process in which parameters of a model would be adjusted very precisely in order to fit with certain dataset. Compared with training, it can can save lots of time and reduce overfitting when the new dataset is small. \n", - "\n", - "To finetune on a customized dataset, the following steps are neccessary. \n", - "\n", - "1. Prepare a new dataset. \n", - "2. Support it in MMCls.\n", - "3. Create a config file accordingly. \n", - "4. Perform training and evaluation.\n", - "\n", - "More details can be found [here](https://github.com/open-mmlab/mmclassification/blob/master/docs/tutorials/new_dataset.md).\n", - "\n" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "colab_type": "text", - "id": "AcZg6x_K5Zs3" - }, - "source": [ - "### Prepare dataset\n", - "\n", - "Before we support a new dataset, we need download existing dataset first.\n", - "\n", - "We use [Cats and Dogs dataset](https://www.dropbox.com/s/wml49yrtdo53mie/cats_dogs_dataset_reorg.zip?dl=0) as an example. For simplicity, we have reorganized the directory structure for further usage. Origianl dataset can be found [here](https://www.kaggle.com/tongpython/cat-and-dog). The dataset consists of 8k images for training and 2k images for testing. There are 2 classes in total, i.e. cat and dog." - ] - }, - { - "cell_type": "code", - "execution_count": 11, - "metadata": { - "scrolled": true - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "--2021-03-11 17:15:22-- https://www.dropbox.com/s/ckv2398yoy4oiqy/cats_dogs_dataset.zip?dl=0\n", - "Connecting to 172.16.1.135:3128... connected.\n", - "Proxy request sent, awaiting response... 301 Moved Permanently\n", - "Location: /s/raw/ckv2398yoy4oiqy/cats_dogs_dataset.zip [following]\n", - "--2021-03-11 17:15:23-- https://www.dropbox.com/s/raw/ckv2398yoy4oiqy/cats_dogs_dataset.zip\n", - "Reusing existing connection to www.dropbox.com:443.\n", - "Proxy request sent, awaiting response... 302 Found\n", - "Location: https://uce2f1fc5c8344ac928f7a3e619f.dl.dropboxusercontent.com/cd/0/inline/BKfHBDoPAEY-QPjLw8I3a7UY8azZSDQ_wuT8ECxXciHPSimQTk-mXQFGx3I6nGOydUZWqVnJ1jQPz-lJSRTg6TFSr-n2lh3yvtC3m2wOXrZT8RhwgqXrQ_bvQwurPSIVc7XTfHBJIhyN5rzpfsXquNu6/file# [following]\n", - "--2021-03-11 17:15:23-- https://uce2f1fc5c8344ac928f7a3e619f.dl.dropboxusercontent.com/cd/0/inline/BKfHBDoPAEY-QPjLw8I3a7UY8azZSDQ_wuT8ECxXciHPSimQTk-mXQFGx3I6nGOydUZWqVnJ1jQPz-lJSRTg6TFSr-n2lh3yvtC3m2wOXrZT8RhwgqXrQ_bvQwurPSIVc7XTfHBJIhyN5rzpfsXquNu6/file\n", - "Connecting to 172.16.1.135:3128... connected.\n", - "Proxy request sent, awaiting response... 302 Found\n", - "Location: /cd/0/inline2/BKdw_s6y59fYYUAQhWUPoG4Fb4WhR2z6MK1nxmb4GDm4MIre2Yt8iwxMZh0JxGYRnYIOtIG7vs6e1HefsS-vzCp_-ab1Bfzcnon8FnmWom91NFQNPmpGRAWWrJa_VoRB_Z1iCfnrokxhECF0wQURulHHXdwLoC0Il0fh38pag8qrJOsPL5QgBFWCZO54yA6nuytf8IIJU3T76DtFE_cAPEaOIkJcx1ZfQEX0mPSDoWczuwxK9du3M1oQQTuVRKUZDleWArNaZq1xXz6xNS_vpGCVlP66E6VbfXaxCAvgGARLjUPov_9yBKpr_73VZSZr0GjHGPXVMfvHsM4-ZsQ2XlQ8Gie_Gfit4JpVyLeRhptwKpD0aeoBl2t0h6i9Wbfr_yo/file [following]\n", - "--2021-03-11 17:15:24-- https://uce2f1fc5c8344ac928f7a3e619f.dl.dropboxusercontent.com/cd/0/inline2/BKdw_s6y59fYYUAQhWUPoG4Fb4WhR2z6MK1nxmb4GDm4MIre2Yt8iwxMZh0JxGYRnYIOtIG7vs6e1HefsS-vzCp_-ab1Bfzcnon8FnmWom91NFQNPmpGRAWWrJa_VoRB_Z1iCfnrokxhECF0wQURulHHXdwLoC0Il0fh38pag8qrJOsPL5QgBFWCZO54yA6nuytf8IIJU3T76DtFE_cAPEaOIkJcx1ZfQEX0mPSDoWczuwxK9du3M1oQQTuVRKUZDleWArNaZq1xXz6xNS_vpGCVlP66E6VbfXaxCAvgGARLjUPov_9yBKpr_73VZSZr0GjHGPXVMfvHsM4-ZsQ2XlQ8Gie_Gfit4JpVyLeRhptwKpD0aeoBl2t0h6i9Wbfr_yo/file\n", - "Reusing existing connection to uce2f1fc5c8344ac928f7a3e619f.dl.dropboxusercontent.com:443.\n", - "Proxy request sent, awaiting response... 200 OK\n", - "Length: 228487605 (218M) [application/zip]\n", - "Saving to: ‘cats_dogs_dataset.zip’\n", - "\n", - "cats_dogs_dataset.z 100%[===================>] 217.90M 9.12MB/s in 26s \n", - "\n", - "2021-03-11 17:15:51 (8.37 MB/s) - ‘cats_dogs_dataset.zip’ saved [228487605/228487605]\n", - "\n" - ] - } - ], - "source": [ - "!wget https://www.dropbox.com/s/ckv2398yoy4oiqy/cats_dogs_dataset.zip?dl=0 -O cats_dogs_dataset.zip\n", - "!mkdir data\n", - "!unzip -q cats_dogs_dataset.zip -d ./data/cats_dogs_dataset/" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "The directory of the \"Cats and Dogs Dataset\" is as follows:\n", - "```\n", - "data/cats_dogs_dataset\n", - "├── training_set\n", - "│ ├── training_set\n", - "│ │ ├── cats\n", - "│ │ │ ├── cat.1.jpg\n", - "│ │ │ ├── cat.2.jpg\n", - "│ │ │ ├── ...\n", - "│ │ ├── dogs\n", - "│ │ │ ├── dog.1.jpg\n", - "│ │ │ ├── dog.2.jpg\n", - "│ │ │ ├── ...\n", - "├── test_set\n", - "│ ├── test_set\n", - "│ │ ├── cats\n", - "│ │ │ ├── cat.4001.jpg\n", - "│ │ │ ├── cat.4002.jpg\n", - "│ │ │ ├── ...\n", - "│ │ ├── dogs\n", - "│ │ │ ├── dog.4001.jpg\n", - "│ │ │ ├── dog.4002.jpg\n", - "│ │ │ ├── ...\n", - "```\n", - "\n", - "You may also check the structure of dataset by `tree data/cats_dogs_dataset`." - ] - }, - { - "cell_type": "code", - "execution_count": 12, - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/", - "height": 377 - }, - "colab_type": "code", - "id": "78LIci7F9WWI", - "outputId": "a7f339c7-a071-40db-f30d-44028dd2ce1c" - }, - "outputs": [ - { - "data": { - "image/png": "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\n", - "text/plain": [ - "
" - ] - }, - "metadata": { - "needs_background": "light" - }, - "output_type": "display_data" - } - ], - "source": [ - "# Let's take a look at the dataset\n", - "import mmcv\n", - "import matplotlib.pyplot as plt\n", - "\n", - "img = mmcv.imread('data/cats_dogs_dataset/training_set/training_set/cats/cat.1.jpg')\n", - "plt.figure(figsize=(8, 6))\n", - "plt.imshow(mmcv.bgr2rgb(img))\n", - "plt.show()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Support a new dataset\n", - "\n", - "Datasets in MMClassification require image and ground-truth labels to be placed in folders with the same perfix. To support a new dataset, there're two ways to generate a customized dataset. \n", - "\n", - "The simplest way is to convert the dataset to existing dataset formats (ImageNet). The other way is to add new Dataset class. More details can be found [here](https://github.com/open-mmlab/mmclassification/blob/master/docs/tutorials/new_dataset.md).\n", - "\n", - "In this tutorials, we'll show the details about both of the methods." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "#### Reorganize dataset to existing format\n", - "\n", - "This is the simplest way to support a new dataset. To do this, there're two steps:\n", - "\n", - "1. Reorganize the structure of customized dataset to the existing dataset formats.\n", - "2. Generate annotation files accordingly.\n", - "\n", - "Here we take \"Cats and Dogs Dataset\" as an example. " - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "First, let's reorganize the structure. Before converting it into the format of ImageNet, let's have a quit look about the structure of ImageNet. \n", - "\n", - "For training, it differentiates classes by folders, i.e. images with the same label should be in the same folder and all the folders of different classes should be in one folder:\n", - "\n", - "```\n", - "imagenet\n", - "├── ...\n", - "├── train\n", - "│ ├── n01440764\n", - "│ │ ├── n01440764_10026.JPEG\n", - "│ │ ├── n01440764_10027.JPEG\n", - "│ │ ├── ...\n", - "│ ├── ...\n", - "│ ├── n15075141\n", - "│ │ ├── n15075141_999.JPEG\n", - "│ │ ├── n15075141_9993.JPEG\n", - "│ │ ├── ...\n", - "```\n", - "\n", - "\n", - "Luckily, our training dataset has similar structure and we don't have to do anything on it.\n", - "\n", - "Note: The `ImageNet` dataset class in MMCls will scan the directory of the training set and map each folders, i.e. the class name, to its label automatically. " - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "For validating, we need to extract validation dataset from our training dataset. Here's how we split the dataset." - ] - }, - { - "cell_type": "code", - "execution_count": 13, - "metadata": {}, - "outputs": [], - "source": [ - "import shutil\n", - "import os\n", - "import os.path as osp\n", - "\n", - "\n", - "data_root = './data/cats_dogs_dataset/'\n", - "train_dir = osp.join(data_root, 'training_set/training_set/')\n", - "val_dir = osp.join(data_root, 'val_set/val_set/')\n", - "\n", - "# Split train/val set\n", - "mmcv.mkdir_or_exist(val_dir)\n", - "class_dirs = [\n", - " d for d in os.listdir(train_dir) if osp.isdir(osp.join(train_dir, d))\n", - "]\n", - "for cls_dir in class_dirs:\n", - " train_imgs = [filename for filename in mmcv.scandir(osp.join(train_dir, cls_dir), suffix='.jpg')]\n", - " # Select first 4/5 as train set and the last 1/5 as val set\n", - " train_length = int(len(train_imgs)*4/5)\n", - " val_imgs = train_imgs[train_length:]\n", - " # Move the val set into a new dir\n", - " src_dir = osp.join(train_dir, cls_dir)\n", - " tar_dir = osp.join(val_dir, cls_dir)\n", - " mmcv.mkdir_or_exist(tar_dir)\n", - " for val_img in val_imgs:\n", - " shutil.move(osp.join(src_dir, val_img), osp.join(tar_dir, val_img))" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "For test set, there's nothing to change. " - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Second, we need to generate the annotations for validation and test dataset. The classes of the dataset are also needed." - ] - }, - { - "cell_type": "code", - "execution_count": 14, - "metadata": {}, - "outputs": [], - "source": [ - "import shutil\n", - "import os\n", - "import os.path as osp\n", - "\n", - "from itertools import chain\n", - "\n", - "\n", - "# Generate mapping from class_name to label\n", - "def find_folders(root_dir):\n", - " folders = [\n", - " d for d in os.listdir(root_dir) if osp.isdir(osp.join(root_dir, d))\n", - " ]\n", - " folders.sort()\n", - " folder_to_idx = {folders[i]: i for i in range(len(folders))}\n", - " return folder_to_idx\n", - "\n", - "\n", - "# Generate annotations\n", - "def gen_annotations(root_dir):\n", - " annotations = dict()\n", - " folder_to_idx = find_folders(root_dir)\n", - " \n", - " for cls_dir, label in folder_to_idx.items():\n", - " cls_to_label = [\n", - " '{} {}'.format(osp.join(cls_dir, filename), label) \n", - " for filename in mmcv.scandir(osp.join(root_dir, cls_dir), suffix='.jpg')\n", - " ]\n", - " annotations[cls_dir] = cls_to_label\n", - " return annotations\n", - "\n", - "\n", - "data_root = './data/cats_dogs_dataset/'\n", - "val_dir = osp.join(data_root, 'val_set/val_set/')\n", - "test_dir = osp.join(data_root, 'test_set/test_set/')\n", - " \n", - "# Save val annotations\n", - "with open(osp.join(data_root, 'val.txt'), 'w') as f:\n", - " annotations = gen_annotations(val_dir)\n", - " contents = chain(*annotations.values())\n", - " f.writelines('\\n'.join(contents))\n", - " \n", - "# Save test annotations\n", - "with open(osp.join(data_root, 'test.txt'), 'w') as f:\n", - " annotations = gen_annotations(test_dir)\n", - " contents = chain(*annotations.values())\n", - " f.writelines('\\n'.join(contents))\n", - "\n", - "# Generate classes\n", - "folder_to_idx = find_folders(train_dir)\n", - "classes = list(folder_to_idx.keys())\n", - "with open(osp.join(data_root, 'classes.txt'), 'w') as f:\n", - " f.writelines('\\n'.join(classes))" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Each line of the annotation list contains a filename and its corresponding ground-truth label. The format is as follows:\n", - "\n", - "```\n", - "...\n", - "cats/cat.3769.jpg 0\n", - "cats/cat.882.jpg 0\n", - "...\n", - "dogs/dog.3881.jpg 1\n", - "dogs/dog.3377.jpg 1\n", - "...\n", - "```" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "#### Implement a customized dataset\n", - "\n", - "NOTE: If you choose to use the first method, please SKIP the following codes.\n", - "\n", - "The second method to support a new dataset is to write a new Dataset class `CatsDogsDataset`. In this method, we don't have to change the structure of the dataset. The following steps are needed:\n", - "\n", - "1. Generate class list. Each line is the class name. E.g.\n", - " ```\n", - " cats\n", - " dogs\n", - " ```\n", - "2. Generate train/validation/test annotations. Each line contains a filename and its corresponding ground-truth label.\n", - " ```\n", - " ...\n", - " cats/cat.436.jpg 0\n", - " cats/cat.383.jpg 0\n", - " ...\n", - " dogs/dog.1340.jpg 1\n", - " dogs/dog.1660.jpg 1\n", - " ...\n", - " ```\n", - "3. Implement `CatsDogsDataset` inherited from `BaseDataset`, and overwrite `load_annotations(self)`,\n", - "like [CIFAR10](https://github.com/open-mmlab/mmclassification/blob/master/mmcls/datasets/cifar.py) and [ImageNet](https://github.com/open-mmlab/mmclassification/blob/master/mmcls/datasets/imagenet.py).\n", - "\n", - "First, let's generate class list and annotation files." - ] - }, - { - "cell_type": "code", - "execution_count": 13, - "metadata": {}, - "outputs": [], - "source": [ - "# Generate annotations\n", - "import os\n", - "import mmcv\n", - "import os.path as osp\n", - "\n", - "from itertools import chain\n", - "\n", - "\n", - "# Generate mapping from class_name to label\n", - "def find_folders(root_dir):\n", - " folders = [\n", - " d for d in os.listdir(root_dir) if osp.isdir(osp.join(root_dir, d))\n", - " ]\n", - " folders.sort()\n", - " folder_to_idx = {folders[i]: i for i in range(len(folders))}\n", - " return folder_to_idx\n", - "\n", - "\n", - "# Generate annotations\n", - "def gen_annotations(root_dir):\n", - " annotations = dict()\n", - " folder_to_idx = find_folders(root_dir)\n", - " \n", - " for cls_dir, label in folder_to_idx.items():\n", - " cls_to_label = [\n", - " '{} {}'.format(osp.join(cls_dir, filename), label) \n", - " for filename in mmcv.scandir(osp.join(root_dir, cls_dir), suffix='.jpg')\n", - " ]\n", - " annotations[cls_dir] = cls_to_label\n", - " return annotations\n", - "\n", - "\n", - "data_root = './data/cats_dogs_dataset/'\n", - "train_dir = osp.join(data_root, 'training_set/training_set/')\n", - "test_dir = osp.join(data_root, 'test_set/test_set/')\n", - "\n", - "# Generate class list\n", - "folder_to_idx = find_folders(train_dir)\n", - "classes = list(folder_to_idx.keys())\n", - "with open(osp.join(data_root, 'classes.txt'), 'w') as f:\n", - " f.writelines('\\n'.join(classes))\n", - " \n", - "# Generate train/val set randomly\n", - "annotations = gen_annotations(train_dir)\n", - "# Select first 4/5 as train set\n", - "train_length = lambda x: int(len(x)*4/5)\n", - "train_annotations = map(lambda x:x[:train_length(x)], annotations.values())\n", - "val_annotations = map(lambda x:x[train_length(x):], annotations.values())\n", - "# Save train/val annotations\n", - "with open(osp.join(data_root, 'train.txt'), 'w') as f:\n", - " contents = chain(*train_annotations)\n", - " f.writelines('\\n'.join(contents))\n", - "with open(osp.join(data_root, 'val.txt'), 'w') as f:\n", - " contents = chain(*val_annotations)\n", - " f.writelines('\\n'.join(contents))\n", - " \n", - "# Save test annotations\n", - "test_annotations = gen_annotations(test_dir)\n", - "with open(osp.join(data_root, 'test.txt'), 'w') as f:\n", - " contents = chain(*test_annotations.values())\n", - " f.writelines('\\n'.join(contents))" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Then, we need to implement `load_annotations` function in the new dataset class `CatsDogsDataset`.\n", - "\n", - "Typically, this function returns a list, where each sample is a dict, containing necessary data informations, e.g., `img_path` and `gt_label`. These will be used by `mmcv.runner` during training to load samples. " - ] - }, - { - "cell_type": "code", - "execution_count": 14, - "metadata": { - "colab": {}, - "colab_type": "code", - "id": "WnGZfribFHCx" - }, - "outputs": [], - "source": [ - "import mmcv\n", - "import numpy as np\n", - "\n", - "from mmcls.datasets import DATASETS, BaseDataset\n", - "\n", - "\n", - "# Regist model so that we can access the class through str in configs\n", - "@DATASETS.register_module()\n", - "class CatsDogsDataset(BaseDataset):\n", - "\n", - " def load_annotations(self):\n", - " assert isinstance(self.ann_file, str)\n", - "\n", - " data_infos = []\n", - " with open(self.ann_file) as f:\n", - " # The ann_file is the annotation files we generate above.\n", - " samples = [x.strip().split(' ') for x in f.readlines()]\n", - " for filename, gt_label in samples:\n", - " info = {'img_prefix': self.data_prefix}\n", - " info['img_info'] = {'filename': filename}\n", - " info['gt_label'] = np.array(gt_label, dtype=np.int64)\n", - " data_infos.append(info)\n", - " return data_infos" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "colab_type": "text", - "id": "yUVtmn3Iq3WA" - }, - "source": [ - "### Modify configs\n", - "\n", - "In this part, we need to modify the config for finetune. \n", - "\n", - "In MMCls, the configs usually look like this:\n", - "\n", - "```\n", - "# 'configs/resnet/resnet50_b32x8_imagenet.py'\n", - "_base_ = [\n", - " # Model config\n", - " '../_base_/models/resnet50.py',\n", - " # Dataset config\n", - " '../_base_/datasets/imagenet_bs32.py',\n", - " # Schedule config\n", - " '../_base_/schedules/imagenet_bs256.py',\n", - " # Runtime config\n", - " '../_base_/default_runtime.py'\n", - "]\n", - "```\n", - "\n", - "A standard configuration in MMCls contains four parts:\n", - "\n", - "1. Model config, which specify the basic structure of the model, e.g. number of the input channels.\n", - "2. Dataset config, which contains details about the dataset, e.g. type of the dataset.\n", - "3. Schedule config, which specify the training schedules, e.g. learning rate.\n", - "4. Runtime config, which contains the rest of details, e.g. log config.\n", - "\n", - "In this part, we'll show how to modify config in python files. " - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "First, let's load the existing config file." - ] - }, - { - "cell_type": "code", - "execution_count": 15, - "metadata": { - "colab": {}, - "colab_type": "code", - "id": "Wwnj9tRzqX_A" - }, - "outputs": [], - "source": [ - "# Load the existing config file\n", - "from mmcv import Config\n", - "cfg = Config.fromfile('configs/resnet/resnet50_b32x8_imagenet.py')" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "colab_type": "text", - "id": "1y2oV5w97jQo" - }, - "source": [ - "Then, we'll modify it according to the method we support our new dataset. " - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "#### Modify config after reorganization of dataset\n", - "If you reorganize the dataset and convert it into ImageNet format, there's little things to change." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "First is the model configs. The classification head would be reconstructed if `num_classes` is different from the pretrained one." - ] - }, - { - "cell_type": "code", - "execution_count": 16, - "metadata": {}, - "outputs": [], - "source": [ - "# Modify num classes of the model in classification head\n", - "cfg.model.head.num_classes = 2\n", - "cfg.model.head.topk = (1)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Second is the dataset configs. As we reorganize the dataset into the format of ImageNet, we can use most of the configurations of it. Note that the training annotations don't need to specify, because it can find the mappings through the structure of the dataset." - ] - }, - { - "cell_type": "code", - "execution_count": 17, - "metadata": {}, - "outputs": [], - "source": [ - "# Modify the number of workers according to your computer\n", - "cfg.data.samples_per_gpu = 32\n", - "cfg.data.workers_per_gpu=2\n", - "# Modify the image normalization configs \n", - "cfg.img_norm_cfg = dict(\n", - " mean=[124.508, 116.050, 106.438], std=[58.577, 57.310, 57.437], to_rgb=True)\n", - "# Specify the path to training set\n", - "cfg.data.train.data_prefix = 'data/cats_dogs_dataset/training_set/training_set'\n", - "cfg.data.train.classes = 'data/cats_dogs_dataset/classes.txt'\n", - "# Specify the path to validation set\n", - "cfg.data.val.data_prefix = 'data/cats_dogs_dataset/val_set/val_set'\n", - "cfg.data.val.ann_file = 'data/cats_dogs_dataset/val.txt'\n", - "cfg.data.val.classes = 'data/cats_dogs_dataset/classes.txt'\n", - "# Specify the path to test set\n", - "cfg.data.test.data_prefix = 'data/cats_dogs_dataset/test_set/test_set'\n", - "cfg.data.test.ann_file = 'data/cats_dogs_dataset/test.txt'\n", - "cfg.data.test.classes = 'data/cats_dogs_dataset/classes.txt'\n", - "# Modify the metric method\n", - "cfg.evaluation['metric_options']={'topk': (1)}" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Third is the schedules of finetuning." - ] - }, - { - "cell_type": "code", - "execution_count": 18, - "metadata": {}, - "outputs": [], - "source": [ - "# Optimizer\n", - "cfg.optimizer = dict(type='SGD', lr=0.01, momentum=0.9, weight_decay=0.0001)\n", - "cfg.optimizer_config = dict(grad_clip=None)\n", - "# Learning policy\n", - "cfg.lr_config = dict(policy='step', step=[1])\n", - "cfg.runner = dict(type='EpochBasedRunner', max_epochs=2)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Finally, let's modify the configuration during run time." - ] - }, - { - "cell_type": "code", - "execution_count": 19, - "metadata": {}, - "outputs": [], - "source": [ - "# Load the pretrained weights\n", - "cfg.load_from = 'checkpoints/resnet50_batch256_imagenet_20200708-cfb998bf.pth'\n", - "# Set up working dir to save files and logs.\n", - "cfg.work_dir = './work_dirs/cats_dogs_dataset'\n", - "\n", - "from mmcls.apis import set_random_seed\n", - "# Set seed thus the results are more reproducible\n", - "cfg.seed = 0\n", - "set_random_seed(0, deterministic=False)\n", - "cfg.gpu_ids = range(1)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Have a look on the new configuration! " - ] - }, - { - "cell_type": "code", - "execution_count": 20, - "metadata": { - "scrolled": true, - "tags": [] - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Config:\n", - "model = dict(\n", - " type='ImageClassifier',\n", - " backbone=dict(\n", - " type='ResNet',\n", - " depth=50,\n", - " num_stages=4,\n", - " out_indices=(3, ),\n", - " style='pytorch'),\n", - " neck=dict(type='GlobalAveragePooling'),\n", - " head=dict(\n", - " type='LinearClsHead',\n", - " num_classes=2,\n", - " in_channels=2048,\n", - " loss=dict(type='CrossEntropyLoss', loss_weight=1.0),\n", - " topk=1))\n", - "dataset_type = 'ImageNet'\n", - "img_norm_cfg = dict(\n", - " mean=[124.508, 116.05, 106.438], std=[58.577, 57.31, 57.437], to_rgb=True)\n", - "train_pipeline = [\n", - " dict(type='LoadImageFromFile'),\n", - " dict(type='RandomResizedCrop', size=224),\n", - " dict(type='RandomFlip', flip_prob=0.5, direction='horizontal'),\n", - " dict(\n", - " type='Normalize',\n", - " mean=[123.675, 116.28, 103.53],\n", - " std=[58.395, 57.12, 57.375],\n", - " to_rgb=True),\n", - " dict(type='ImageToTensor', keys=['img']),\n", - " dict(type='ToTensor', keys=['gt_label']),\n", - " dict(type='Collect', keys=['img', 'gt_label'])\n", - "]\n", - "test_pipeline = [\n", - " dict(type='LoadImageFromFile'),\n", - " dict(type='Resize', size=(256, -1)),\n", - " dict(type='CenterCrop', crop_size=224),\n", - " dict(\n", - " type='Normalize',\n", - " mean=[123.675, 116.28, 103.53],\n", - " std=[58.395, 57.12, 57.375],\n", - " to_rgb=True),\n", - " dict(type='ImageToTensor', keys=['img']),\n", - " dict(type='Collect', keys=['img'])\n", - "]\n", - "data = dict(\n", - " samples_per_gpu=32,\n", - " workers_per_gpu=2,\n", - " train=dict(\n", - " type='ImageNet',\n", - " data_prefix='data/cats_dogs_dataset/training_set/training_set',\n", - " pipeline=[\n", - " dict(type='LoadImageFromFile'),\n", - " dict(type='RandomResizedCrop', size=224),\n", - " dict(type='RandomFlip', flip_prob=0.5, direction='horizontal'),\n", - " dict(\n", - " type='Normalize',\n", - " mean=[123.675, 116.28, 103.53],\n", - " std=[58.395, 57.12, 57.375],\n", - " to_rgb=True),\n", - " dict(type='ImageToTensor', keys=['img']),\n", - " dict(type='ToTensor', keys=['gt_label']),\n", - " dict(type='Collect', keys=['img', 'gt_label'])\n", - " ],\n", - " classes='data/cats_dogs_dataset/classes.txt'),\n", - " val=dict(\n", - " type='ImageNet',\n", - " data_prefix='data/cats_dogs_dataset/val_set/val_set',\n", - " ann_file='data/cats_dogs_dataset/val.txt',\n", - " pipeline=[\n", - " dict(type='LoadImageFromFile'),\n", - " dict(type='Resize', size=(256, -1)),\n", - " dict(type='CenterCrop', crop_size=224),\n", - " dict(\n", - " type='Normalize',\n", - " mean=[123.675, 116.28, 103.53],\n", - " std=[58.395, 57.12, 57.375],\n", - " to_rgb=True),\n", - " dict(type='ImageToTensor', keys=['img']),\n", - " dict(type='Collect', keys=['img'])\n", - " ],\n", - " classes='data/cats_dogs_dataset/classes.txt'),\n", - " test=dict(\n", - " type='ImageNet',\n", - " data_prefix='data/cats_dogs_dataset/test_set/test_set',\n", - " ann_file='data/cats_dogs_dataset/test.txt',\n", - " pipeline=[\n", - " dict(type='LoadImageFromFile'),\n", - " dict(type='Resize', size=(256, -1)),\n", - " dict(type='CenterCrop', crop_size=224),\n", - " dict(\n", - " type='Normalize',\n", - " mean=[123.675, 116.28, 103.53],\n", - " std=[58.395, 57.12, 57.375],\n", - " to_rgb=True),\n", - " dict(type='ImageToTensor', keys=['img']),\n", - " dict(type='Collect', keys=['img'])\n", - " ],\n", - " classes='data/cats_dogs_dataset/classes.txt'))\n", - "evaluation = dict(interval=1, metric='accuracy', metric_options=dict(topk=1))\n", - "optimizer = dict(type='SGD', lr=0.01, momentum=0.9, weight_decay=0.0001)\n", - "optimizer_config = dict(grad_clip=None)\n", - "lr_config = dict(policy='step', step=[1])\n", - "runner = dict(type='EpochBasedRunner', max_epochs=2)\n", - "checkpoint_config = dict(interval=1)\n", - "log_config = dict(interval=100, hooks=[dict(type='TextLoggerHook')])\n", - "dist_params = dict(backend='nccl')\n", - "log_level = 'INFO'\n", - "load_from = 'checkpoints/resnet50_batch256_imagenet_20200708-cfb998bf.pth'\n", - "resume_from = None\n", - "workflow = [('train', 1)]\n", - "work_dir = './work_dirs/cats_dogs_dataset'\n", - "seed = 0\n", - "gpu_ids = range(0, 1)\n", - "\n" - ] - } - ], - "source": [ - "# Let's have a look at the final config used for finetuning\n", - "print(f'Config:\\n{cfg.pretty_text}')" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "#### Modify config after implementing a customized dataset\n", - "\n", - "NOTE: If you choose to use the first method, please SKIP the following codes.\n", - "\n", - "As we implement a new dataset, there're something different from above:\n", - "1. The new dataset type should be specified.\n", - "2. The training annotations should be specified." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "First, let's have a look about the dataset configurations." - ] - }, - { - "cell_type": "code", - "execution_count": 16, - "metadata": {}, - "outputs": [], - "source": [ - "# Specify the new dataset class\n", - "cfg.dataset_type = 'CatsDogsDataset'\n", - "cfg.data.train.type = cfg.dataset_type\n", - "cfg.data.val.type = cfg.dataset_type\n", - "cfg.data.test.type = cfg.dataset_type\n", - "\n", - "# Specify the training annotations\n", - "cfg.data.train.ann_file = 'data/cats_dogs_dataset/train.txt'\n", - "\n", - "# The followings are the same as above\n", - "cfg.data.samples_per_gpu = 32\n", - "cfg.data.workers_per_gpu=2\n", - "\n", - "cfg.img_norm_cfg = dict(\n", - " mean=[124.508, 116.050, 106.438], std=[58.577, 57.310, 57.437], to_rgb=True)\n", - "\n", - "cfg.data.train.data_prefix = 'data/cats_dogs_dataset/training_set/training_set'\n", - "cfg.data.train.classes = 'data/cats_dogs_dataset/classes.txt'\n", - "\n", - "cfg.data.val.data_prefix = 'data/cats_dogs_dataset/training_set/training_set'\n", - "cfg.data.val.ann_file = 'data/cats_dogs_dataset/val.txt'\n", - "cfg.data.val.classes = 'data/cats_dogs_dataset/classes.txt'\n", - "\n", - "cfg.data.test.data_prefix = 'data/cats_dogs_dataset/test_set/test_set'\n", - "cfg.data.test.ann_file = 'data/cats_dogs_dataset/test.txt'\n", - "cfg.data.test.classes = 'data/cats_dogs_dataset/classes.txt'\n", - "# Modify the metric method\n", - "cfg.evaluation['metric_options']={'topk': (1)}\n" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Other configurations are the same as those mentioned above. And we just list them here." - ] - }, - { - "cell_type": "code", - "execution_count": 17, - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/", - "height": 1000 - }, - "colab_type": "code", - "id": "eyKnYC1Z7iCV", - "outputId": "a25241e2-431c-4944-b0b8-b9c792d5aadd", - "scrolled": true, - "tags": [] - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Config:\n", - "model = dict(\n", - " type='ImageClassifier',\n", - " backbone=dict(\n", - " type='ResNet',\n", - " depth=50,\n", - " num_stages=4,\n", - " out_indices=(3, ),\n", - " style='pytorch'),\n", - " neck=dict(type='GlobalAveragePooling'),\n", - " head=dict(\n", - " type='LinearClsHead',\n", - " num_classes=2,\n", - " in_channels=2048,\n", - " loss=dict(type='CrossEntropyLoss', loss_weight=1.0),\n", - " topk=1))\n", - "dataset_type = 'CatsDogsDataset'\n", - "img_norm_cfg = dict(\n", - " mean=[124.508, 116.05, 106.438], std=[58.577, 57.31, 57.437], to_rgb=True)\n", - "train_pipeline = [\n", - " dict(type='LoadImageFromFile'),\n", - " dict(type='RandomResizedCrop', size=224),\n", - " dict(type='RandomFlip', flip_prob=0.5, direction='horizontal'),\n", - " dict(\n", - " type='Normalize',\n", - " mean=[123.675, 116.28, 103.53],\n", - " std=[58.395, 57.12, 57.375],\n", - " to_rgb=True),\n", - " dict(type='ImageToTensor', keys=['img']),\n", - " dict(type='ToTensor', keys=['gt_label']),\n", - " dict(type='Collect', keys=['img', 'gt_label'])\n", - "]\n", - "test_pipeline = [\n", - " dict(type='LoadImageFromFile'),\n", - " dict(type='Resize', size=(256, -1)),\n", - " dict(type='CenterCrop', crop_size=224),\n", - " dict(\n", - " type='Normalize',\n", - " mean=[123.675, 116.28, 103.53],\n", - " std=[58.395, 57.12, 57.375],\n", - " to_rgb=True),\n", - " dict(type='ImageToTensor', keys=['img']),\n", - " dict(type='Collect', keys=['img'])\n", - "]\n", - "data = dict(\n", - " samples_per_gpu=32,\n", - " workers_per_gpu=2,\n", - " train=dict(\n", - " type='CatsDogsDataset',\n", - " data_prefix='data/cats_dogs_dataset/training_set/training_set',\n", - " pipeline=[\n", - " dict(type='LoadImageFromFile'),\n", - " dict(type='RandomResizedCrop', size=224),\n", - " dict(type='RandomFlip', flip_prob=0.5, direction='horizontal'),\n", - " dict(\n", - " type='Normalize',\n", - " mean=[123.675, 116.28, 103.53],\n", - " std=[58.395, 57.12, 57.375],\n", - " to_rgb=True),\n", - " dict(type='ImageToTensor', keys=['img']),\n", - " dict(type='ToTensor', keys=['gt_label']),\n", - " dict(type='Collect', keys=['img', 'gt_label'])\n", - " ],\n", - " ann_file='data/cats_dogs_dataset/train.txt',\n", - " classes='data/cats_dogs_dataset/classes.txt'),\n", - " val=dict(\n", - " type='CatsDogsDataset',\n", - " data_prefix='data/cats_dogs_dataset/training_set/training_set',\n", - " ann_file='data/cats_dogs_dataset/val.txt',\n", - " pipeline=[\n", - " dict(type='LoadImageFromFile'),\n", - " dict(type='Resize', size=(256, -1)),\n", - " dict(type='CenterCrop', crop_size=224),\n", - " dict(\n", - " type='Normalize',\n", - " mean=[123.675, 116.28, 103.53],\n", - " std=[58.395, 57.12, 57.375],\n", - " to_rgb=True),\n", - " dict(type='ImageToTensor', keys=['img']),\n", - " dict(type='Collect', keys=['img'])\n", - " ],\n", - " classes='data/cats_dogs_dataset/classes.txt'),\n", - " test=dict(\n", - " type='CatsDogsDataset',\n", - " data_prefix='data/cats_dogs_dataset/test_set/test_set',\n", - " ann_file='data/cats_dogs_dataset/test.txt',\n", - " pipeline=[\n", - " dict(type='LoadImageFromFile'),\n", - " dict(type='Resize', size=(256, -1)),\n", - " dict(type='CenterCrop', crop_size=224),\n", - " dict(\n", - " type='Normalize',\n", - " mean=[123.675, 116.28, 103.53],\n", - " std=[58.395, 57.12, 57.375],\n", - " to_rgb=True),\n", - " dict(type='ImageToTensor', keys=['img']),\n", - " dict(type='Collect', keys=['img'])\n", - " ],\n", - " classes='data/cats_dogs_dataset/classes.txt'))\n", - "evaluation = dict(interval=1, metric='accuracy', metric_options=dict(topk=1))\n", - "optimizer = dict(type='SGD', lr=0.01, momentum=0.9, weight_decay=0.0001)\n", - "optimizer_config = dict(grad_clip=None)\n", - "lr_config = dict(policy='step', step=[1])\n", - "runner = dict(type='EpochBasedRunner', max_epochs=2)\n", - "checkpoint_config = dict(interval=1)\n", - "log_config = dict(interval=100, hooks=[dict(type='TextLoggerHook')])\n", - "dist_params = dict(backend='nccl')\n", - "log_level = 'INFO'\n", - "load_from = 'checkpoints/resnet50_batch256_imagenet_20200708-cfb998bf.pth'\n", - "resume_from = None\n", - "workflow = [('train', 1)]\n", - "work_dir = './work_dirs/cats_dogs_dataset'\n", - "seed = 0\n", - "gpu_ids = range(0, 1)\n", - "\n" - ] - } - ], - "source": [ - "# MODOL CONFIG\n", - "# Modify num classes of the model in classification head\n", - "cfg.model.head.num_classes = 2\n", - "cfg.model.head.topk = (1)\n", - "\n", - "# SCHEDULE CONFIG\n", - "# Optimizer\n", - "cfg.optimizer = dict(type='SGD', lr=0.01, momentum=0.9, weight_decay=0.0001)\n", - "cfg.optimizer_config = dict(grad_clip=None)\n", - "# Learning policy\n", - "cfg.lr_config = dict(policy='step', step=[1])\n", - "cfg.runner = dict(type='EpochBasedRunner', max_epochs=2)\n", - "\n", - "# RUNTIME CONFIG\n", - "# Load the pretrained weights\n", - "cfg.load_from = 'checkpoints/resnet50_batch256_imagenet_20200708-cfb998bf.pth'\n", - "# Set up working dir to save files and logs.\n", - "cfg.work_dir = './work_dirs/cats_dogs_dataset'\n", - "from mmcls.apis import set_random_seed\n", - "# Set seed thus the results are more reproducible\n", - "cfg.seed = 0\n", - "set_random_seed(0, deterministic=False)\n", - "cfg.gpu_ids = range(1)\n", - "\n", - "# Let's have a look at the final config used for training\n", - "print(f'Config:\\n{cfg.pretty_text}')" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "colab_type": "text", - "id": "QWuH14LYF2gQ" - }, - "source": [ - "### Finetune\n", - "\n", - "Now we finetune on our own dataset. As we've modified the training schedules, we can use the `train_model` API to finetune our model. " - ] - }, - { - "cell_type": "code", - "execution_count": 18, - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/", - "height": 953, - "referenced_widgets": [ - "40a3c0b2c7a44085b69b9c741df20b3e", - "ec96fb4251ea4b8ea268a2bc62b9c75b", - "dae4b284c5a944639991d29f4e79fac5", - "c78567afd0a6418781118ac9f4ecdea9", - "32b7d27a143c41b5bb90f1d8e66a1c67", - "55d75951f51c4ab89e32045c3d6db8a4", - "9d29e2d02731416d9852e9c7c08d1665", - "1bb2b93526cd421aa5d5b86d678932ab" - ] - }, - "colab_type": "code", - "id": "jYKoSfdMF12B", - "outputId": "1c0b5a11-434b-4c96-a4aa-9d685fff0856" - }, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2021-03-11 17:17:38,573 - mmcls - INFO - load checkpoint from checkpoints/resnet50_batch256_imagenet_20200708-cfb998bf.pth\n", - "2021-03-11 17:17:38,574 - mmcls - INFO - Use load_from_local loader\n", - "2021-03-11 17:17:38,625 - mmcls - WARNING - The model and loaded state dict do not match exactly\n", - "\n", - "size mismatch for head.fc.weight: copying a param with shape torch.Size([1000, 2048]) from checkpoint, the shape in current model is torch.Size([2, 2048]).\n", - "size mismatch for head.fc.bias: copying a param with shape torch.Size([1000]) from checkpoint, the shape in current model is torch.Size([2]).\n", - "2021-03-11 17:17:38,626 - mmcls - INFO - Start running, host: SENSETIME\\shaoyidi@CN0014004140L, work_dir: /home/SENSETIME/shaoyidi/VirtualenvProjects/add_tutorials/MMCls_Tutorials/mmclassification/work_dirs/cats_dogs_dataset\n", - "2021-03-11 17:17:38,626 - mmcls - INFO - workflow: [('train', 1)], max: 2 epochs\n", - "/home/SENSETIME/shaoyidi/anaconda3/lib/python3.8/site-packages/mmcv/runner/hooks/logger/text.py:55: DeprecationWarning: an integer is required (got type float). Implicit conversion to integers using __int__ is deprecated, and may be removed in a future version of Python.\n", - " mem_mb = torch.tensor([mem / (1024 * 1024)],\n", - "2021-03-11 17:18:22,741 - mmcls - INFO - Epoch [1][100/201]\tlr: 1.000e-02, eta: 0:02:12, time: 0.439, data_time: 0.023, memory: 2961, loss: 0.6723, top-1: 68.5312\n", - "2021-03-11 17:19:04,455 - mmcls - INFO - Epoch [1][200/201]\tlr: 1.000e-02, eta: 0:01:26, time: 0.417, data_time: 0.004, memory: 2961, loss: 0.5848, top-1: 66.3125\n", - "2021-03-11 17:19:04,521 - mmcls - INFO - Saving checkpoint at 1 epochs\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "[>>>>>>>>>>>>>>>>>>>>>>>>>>>] 1601/1601, 211.0 task/s, elapsed: 8s, ETA: 0s" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2021-03-11 17:19:12,501 - mmcls - INFO - Epoch(val) [1][201]\taccuracy: 64.3973\n", - "2021-03-11 17:19:56,609 - mmcls - INFO - Epoch [2][100/201]\tlr: 1.000e-03, eta: 0:00:43, time: 0.439, data_time: 0.023, memory: 2961, loss: 0.4877, top-1: 74.7188\n", - "2021-03-11 17:20:38,827 - mmcls - INFO - Epoch [2][200/201]\tlr: 1.000e-03, eta: 0:00:00, time: 0.422, data_time: 0.004, memory: 2961, loss: 0.4244, top-1: 78.0625\n", - "2021-03-11 17:20:38,893 - mmcls - INFO - Saving checkpoint at 2 epochs\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "[>>>>>>>>>>>>>>>>>>>>>>>>>>>] 1601/1601, 213.9 task/s, elapsed: 7s, ETA: 0s" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2021-03-11 17:20:46,778 - mmcls - INFO - Epoch(val) [2][201]\taccuracy: 88.0075\n" - ] - } - ], - "source": [ - "import time\n", - "\n", - "from mmcls.datasets import build_dataset\n", - "from mmcls.models import build_classifier\n", - "from mmcls.apis import train_model\n", - "\n", - "# Create work_dir\n", - "mmcv.mkdir_or_exist(osp.abspath(cfg.work_dir))\n", - "# Build the classifier\n", - "model = build_classifier(cfg.model)\n", - "# Build the dataset\n", - "datasets = [build_dataset(cfg.data.train)]\n", - "# Add an attribute for visualization convenience\n", - "model.CLASSES = datasets[0].CLASSES\n", - "# Begin finetuning\n", - "train_model(\n", - " model,\n", - " datasets,\n", - " cfg,\n", - " distributed=False,\n", - " validate=True,\n", - " timestamp=time.strftime('%Y%m%d_%H%M%S', time.localtime()),\n", - " meta=dict())" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "colab_type": "text", - "id": "DEkWOP-NMbc_" - }, - "source": [ - "Let's checkout our trained model." - ] - }, - { - "cell_type": "code", - "execution_count": 19, - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/", - "height": 645 - }, - "colab_type": "code", - "id": "ekG__UfaH_OU", - "outputId": "ac1eb835-19ed-48e6-8f77-e6d325b915c4" - }, - "outputs": [ - { - "data": { - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "image/png": "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\n", - "text/plain": [ - "
" - ] - }, - "metadata": { - "needs_background": "light" - }, - "output_type": "display_data" - } - ], - "source": [ - "img = mmcv.imread('data/cats_dogs_dataset/training_set/training_set/cats/cat.1.jpg')\n", - "\n", - "model.cfg = cfg\n", - "result = inference_model(model, img)\n", - "plt.figure(figsize=(8, 6))\n", - "show_result_pyplot(model, img, result)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Command line tool usages\n", - "\n", - "MMCls also provide some useful command line tools, which can help us:\n", - "\n", - "1. Train models\n", - "2. Finetune models\n", - "3. Test models\n", - "4. Do inference \n", - "\n", - "As the process of training is similar to finetuning, we'll show the details about how to finetune, test, and do inference in this tutorials. More details can be found [here](https://github.com/open-mmlab/mmclassification/blob/master/docs/getting_started.md).\n", - "\n", - "### Finetune\n", - "\n", - "To finetune via command line, several steps are needed:\n", - "1. Prepare customized dataset.\n", - "2. Support new dataset in MMCls.\n", - "3. Modify configs and write into files.\n", - "4. Finetune using command line.\n", - "\n", - "The first and second step are similar to those mentioned above. In this part, we'll show the details of the last two steps.\n", - "\n", - "#### Modify configs in files\n", - "\n", - "To reuse the common parts among different configs, we support inheriting configs from multiple existing configs. To finetune a ResNet50 model, the new config needs to inherit `configs/_base_/models/resnet50.py` to build the basic structure of the model. To use the \"Cats and Dogs Dataset\", the new config can also simply inherit `configs/_base_/datasets/cats_dogs_dataset.py`. To customize the training schedules, the new config should inherit `configs/_base_/schedules/cats_dogs_finetune.py`. For runtime settings such as training schedules, the new config needs to inherit `configs/_base_/default_runtime.py`.\n", - "\n", - "The final config file should look like this:\n", - "\n", - "```\n", - "# Save to \"configs/resnet/resnet50_cats_dogs.py\"\n", - "_base_ = [\n", - " '../_base_/models/resnet50.py',\n", - " '../_base_/datasets/imagenet_bs32.py',\n", - " '../_base_/schedules/imagenet_bs256.py',\n", - " '../_base_/default_runtime.py'\n", - "]\n", - "```\n", - "\n", - "Besides, you can also choose to write the whole contents into one config file rather than use inheritance, e.g. `configs/mnist/lenet5.py`.\n", - "\n", - "Here, we take the settings of reorganizion as an example. You can try by yourself on the case of implementing a customized dataset. All you have to do is to write new configs which will overwrite the original ones. Now, let's check the details." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "First, let's modify the model configs and save them into `configs/_base_/models/resnet50_cats_dogs.py`. The new config needs to modify the head according to the class numbers of the new datasets. By only changing `num_classes` in the head, the weights of the pre-trained models are mostly reused except the final prediction head.\n", - "\n", - "```python\n", - "_base_ = ['./resnet50.py']\n", - "model = dict(\n", - " head=dict(\n", - " num_classes=2,\n", - " topk = (1)\n", - " ))\n", - "```" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Second is the dataset's configs. Don't forget to save them into `configs/_base_/datasets/cats_dogs_dataset.py`.\n", - "\n", - "```python\n", - "_base_ = ['./imagenet_bs32.py']\n", - "img_norm_cfg = dict(\n", - " mean=[124.508, 116.050, 106.438],\n", - " std=[58.577, 57.310, 57.437],\n", - " to_rgb=True)\n", - "\n", - "data = dict(\n", - " # Modify the number of workers according to your computer\n", - " samples_per_gpu = 32,\n", - " workers_per_gpu=2,\n", - " # Specify the path to training set\n", - " train = dict(\n", - " data_prefix = 'data/cats_dogs_dataset/training_set/training_set',\n", - " classes = 'data/cats_dogs_dataset/classes.txt'\n", - " ),\n", - " # Specify the path to validation set\n", - " val = dict(\n", - " data_prefix = 'data/cats_dogs_dataset/val_set/val_set',\n", - " ann_file = 'data/cats_dogs_dataset/val.txt',\n", - " classes = 'data/cats_dogs_dataset/classes.txt'\n", - " ),\n", - " # Specify the path to test set\n", - " test = dict(\n", - " data_prefix = 'data/cats_dogs_dataset/test_set/test_set',\n", - " ann_file = 'data/cats_dogs_dataset/test.txt',\n", - " classes = 'data/cats_dogs_dataset/classes.txt'\n", - " )\n", - ")\n", - "# Modify the metric method\n", - "evaluation = dict(metric_options={'topk': (1)})\n", - "```" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Third is the training schedule. The finetuning hyperparameters vary from the default schedule. It usually requires smaller learning rate and less training epochs. Let's save it into `configs/_base_/schedules/cats_dogs_finetune.py`.\n", - "\n", - "```python\n", - "# optimizer\n", - "# lr is set for a batch size of 128\n", - "optimizer = dict(type='SGD', lr=0.01, momentum=0.9, weight_decay=0.0001)\n", - "optimizer_config = dict(grad_clip=None)\n", - "# learning policy\n", - "lr_config = dict(\n", - " policy='step',\n", - " step=[1])\n", - "runner = dict(type='EpochBasedRunner', max_epochs=2)\n", - "```" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Finally, for the run time configs, we can simple use the defualt one and change nothing. We can now gather all the configs into one file and save it into `configs/resnet/resnet50_cats_dogs.py`.\n", - "```python\n", - "_base_ = [\n", - " '../_base_/models/resnet50_cats_dogs.py', '../_base_/datasets/cats_dogs_dataset.py',\n", - " '../_base_/schedules/cats_dogs_finetune.py', '../_base_/default_runtime.py'\n", - "]\n", - "\n", - "# Don't forget to load pretrained model. Set it as the abosolute path. \n", - "load_from = 'XXX/mmclassification/checkpoints/resnet50_batch256_imagenet_20200708-cfb998bf.pth'\n", - "```\n" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "#### Finetune using command line\n", - "\n", - "We use `tools/train.py` to finetune the model:\n", - "\n", - "```\n", - "python tools/train.py ${CONFIG_FILE} [optional arguments]\n", - "```\n", - "\n", - "If you want to specify the working directory in the command, you can add an argument `--work_dir ${YOUR_WORK_DIR}`.\n", - "\n", - "Here, we take our `ResNet50` on `CatsDogsDataset` for example." - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "metadata": { - "scrolled": true, - "tags": [] - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2021-03-11 17:02:24,433 - mmcls - INFO - Environment info:\n", - "------------------------------------------------------------\n", - "sys.platform: linux\n", - "Python: 3.8.5 (default, Sep 4 2020, 07:30:14) [GCC 7.3.0]\n", - "CUDA available: True\n", - "GPU 0: GeForce GTX 1060 6GB\n", - "CUDA_HOME: /usr\n", - "NVCC: Cuda compilation tools, release 10.2, V10.2.89\n", - "GCC: gcc (Ubuntu 5.4.0-6ubuntu1~16.04.12) 5.4.0 20160609\n", - "PyTorch: 1.5.0+cu101\n", - "PyTorch compiling details: PyTorch built with:\n", - " - GCC 7.3\n", - " - C++ Version: 201402\n", - " - Intel(R) Math Kernel Library Version 2020.0.2 Product Build 20200624 for Intel(R) 64 architecture applications\n", - " - Intel(R) MKL-DNN v0.21.1 (Git Hash 7d2fd500bc78936d1d648ca713b901012f470dbc)\n", - " - OpenMP 201511 (a.k.a. OpenMP 4.5)\n", - " - NNPACK is enabled\n", - " - CPU capability usage: AVX2\n", - " - CUDA Runtime 10.1\n", - " - NVCC architecture flags: -gencode;arch=compute_37,code=sm_37;-gencode;arch=compute_50,code=sm_50;-gencode;arch=compute_60,code=sm_60;-gencode;arch=compute_61,code=sm_61;-gencode;arch=compute_70,code=sm_70;-gencode;arch=compute_75,code=sm_75;-gencode;arch=compute_37,code=compute_37\n", - " - CuDNN 7.6.3\n", - " - Magma 2.5.2\n", - " - Build settings: BLAS=MKL, BUILD_TYPE=Release, CXX_FLAGS= -Wno-deprecated -fvisibility-inlines-hidden -fopenmp -DNDEBUG -DUSE_FBGEMM -DUSE_QNNPACK -DUSE_PYTORCH_QNNPACK -DUSE_XNNPACK -DUSE_INTERNAL_THREADPOOL_IMPL -O2 -fPIC -Wno-narrowing -Wall -Wextra -Werror=return-type -Wno-missing-field-initializers -Wno-type-limits -Wno-array-bounds -Wno-unknown-pragmas -Wno-sign-compare -Wno-unused-parameter -Wno-unused-variable -Wno-unused-function -Wno-unused-result -Wno-strict-overflow -Wno-strict-aliasing -Wno-error=deprecated-declarations -Wno-stringop-overflow -Wno-error=pedantic -Wno-error=redundant-decls -Wno-error=old-style-cast -fdiagnostics-color=always -faligned-new -Wno-unused-but-set-variable -Wno-maybe-uninitialized -fno-math-errno -fno-trapping-math -Werror=format -Wno-stringop-overflow, PERF_WITH_AVX=1, PERF_WITH_AVX2=1, PERF_WITH_AVX512=1, USE_CUDA=ON, USE_EXCEPTION_PTR=1, USE_GFLAGS=OFF, USE_GLOG=OFF, USE_MKL=ON, USE_MKLDNN=ON, USE_MPI=OFF, USE_NCCL=ON, USE_NNPACK=ON, USE_OPENMP=ON, USE_STATIC_DISPATCH=OFF, \n", - "\n", - "TorchVision: 0.6.0+cu101\n", - "OpenCV: 4.5.1\n", - "MMCV: 1.2.7\n", - "MMCV Compiler: GCC 7.3\n", - "MMCV CUDA Compiler: 10.1\n", - "MMClassification: 0.9.0+f3b9380\n", - "------------------------------------------------------------\n", - "\n", - "2021-03-11 17:02:24,433 - mmcls - INFO - Distributed training: False\n", - "2021-03-11 17:02:24,563 - mmcls - INFO - Config:\n", - "model = dict(\n", - " type='ImageClassifier',\n", - " backbone=dict(\n", - " type='ResNet',\n", - " depth=50,\n", - " num_stages=4,\n", - " out_indices=(3, ),\n", - " style='pytorch'),\n", - " neck=dict(type='GlobalAveragePooling'),\n", - " head=dict(\n", - " type='LinearClsHead',\n", - " num_classes=2,\n", - " in_channels=2048,\n", - " loss=dict(type='CrossEntropyLoss', loss_weight=1.0),\n", - " topk=1))\n", - "dataset_type = 'ImageNet'\n", - "img_norm_cfg = dict(\n", - " mean=[124.508, 116.05, 106.438], std=[58.577, 57.31, 57.437], to_rgb=True)\n", - "train_pipeline = [\n", - " dict(type='LoadImageFromFile'),\n", - " dict(type='RandomResizedCrop', size=224),\n", - " dict(type='RandomFlip', flip_prob=0.5, direction='horizontal'),\n", - " dict(\n", - " type='Normalize',\n", - " mean=[123.675, 116.28, 103.53],\n", - " std=[58.395, 57.12, 57.375],\n", - " to_rgb=True),\n", - " dict(type='ImageToTensor', keys=['img']),\n", - " dict(type='ToTensor', keys=['gt_label']),\n", - " dict(type='Collect', keys=['img', 'gt_label'])\n", - "]\n", - "test_pipeline = [\n", - " dict(type='LoadImageFromFile'),\n", - " dict(type='Resize', size=(256, -1)),\n", - " dict(type='CenterCrop', crop_size=224),\n", - " dict(\n", - " type='Normalize',\n", - " mean=[123.675, 116.28, 103.53],\n", - " std=[58.395, 57.12, 57.375],\n", - " to_rgb=True),\n", - " dict(type='ImageToTensor', keys=['img']),\n", - " dict(type='Collect', keys=['img'])\n", - "]\n", - "data = dict(\n", - " samples_per_gpu=32,\n", - " workers_per_gpu=2,\n", - " train=dict(\n", - " type='ImageNet',\n", - " data_prefix='data/cats_dogs_dataset/training_set/training_set',\n", - " pipeline=[\n", - " dict(type='LoadImageFromFile'),\n", - " dict(type='RandomResizedCrop', size=224),\n", - " dict(type='RandomFlip', flip_prob=0.5, direction='horizontal'),\n", - " dict(\n", - " type='Normalize',\n", - " mean=[123.675, 116.28, 103.53],\n", - " std=[58.395, 57.12, 57.375],\n", - " to_rgb=True),\n", - " dict(type='ImageToTensor', keys=['img']),\n", - " dict(type='ToTensor', keys=['gt_label']),\n", - " dict(type='Collect', keys=['img', 'gt_label'])\n", - " ],\n", - " classes='data/cats_dogs_dataset/classes.txt'),\n", - " val=dict(\n", - " type='ImageNet',\n", - " data_prefix='data/cats_dogs_dataset/val_set/val_set',\n", - " ann_file='data/cats_dogs_dataset/val.txt',\n", - " pipeline=[\n", - " dict(type='LoadImageFromFile'),\n", - " dict(type='Resize', size=(256, -1)),\n", - " dict(type='CenterCrop', crop_size=224),\n", - " dict(\n", - " type='Normalize',\n", - " mean=[123.675, 116.28, 103.53],\n", - " std=[58.395, 57.12, 57.375],\n", - " to_rgb=True),\n", - " dict(type='ImageToTensor', keys=['img']),\n", - " dict(type='Collect', keys=['img'])\n", - " ],\n", - " classes='data/cats_dogs_dataset/classes.txt'),\n", - " test=dict(\n", - " type='ImageNet',\n", - " data_prefix='data/cats_dogs_dataset/test_set/test_set',\n", - " ann_file='data/cats_dogs_dataset/test.txt',\n", - " pipeline=[\n", - " dict(type='LoadImageFromFile'),\n", - " dict(type='Resize', size=(256, -1)),\n", - " dict(type='CenterCrop', crop_size=224),\n", - " dict(\n", - " type='Normalize',\n", - " mean=[123.675, 116.28, 103.53],\n", - " std=[58.395, 57.12, 57.375],\n", - " to_rgb=True),\n", - " dict(type='ImageToTensor', keys=['img']),\n", - " dict(type='Collect', keys=['img'])\n", - " ],\n", - " classes='data/cats_dogs_dataset/classes.txt'))\n", - "evaluation = dict(interval=1, metric='accuracy', metric_options=dict(topk=1))\n", - "optimizer = dict(type='SGD', lr=0.01, momentum=0.9, weight_decay=0.0001)\n", - "optimizer_config = dict(grad_clip=None)\n", - "lr_config = dict(policy='step', step=[1])\n", - "runner = dict(type='EpochBasedRunner', max_epochs=2)\n", - "checkpoint_config = dict(interval=1)\n", - "log_config = dict(interval=100, hooks=[dict(type='TextLoggerHook')])\n", - "dist_params = dict(backend='nccl')\n", - "log_level = 'INFO'\n", - "load_from = '/home/SENSETIME/shaoyidi/VirtualenvProjects/add_tutorials/MMCls_Tutorials/mmclassification/checkpoints/resnet50_batch256_imagenet_20200708-cfb998bf.pth'\n", - "resume_from = None\n", - "workflow = [('train', 1)]\n", - "work_dir = 'work_dirs/resnet50_cats_dogs'\n", - "gpu_ids = range(0, 1)\n", - "\n", - "2021-03-11 17:02:26,361 - mmcls - INFO - load checkpoint from /home/SENSETIME/shaoyidi/VirtualenvProjects/add_tutorials/MMCls_Tutorials/mmclassification/checkpoints/resnet50_batch256_imagenet_20200708-cfb998bf.pth\n", - "2021-03-11 17:02:26,362 - mmcls - INFO - Use load_from_local loader\n", - "2021-03-11 17:02:26,422 - mmcls - WARNING - The model and loaded state dict do not match exactly\n", - "\n", - "size mismatch for head.fc.weight: copying a param with shape torch.Size([1000, 2048]) from checkpoint, the shape in current model is torch.Size([2, 2048]).\n", - "size mismatch for head.fc.bias: copying a param with shape torch.Size([1000]) from checkpoint, the shape in current model is torch.Size([2]).\n", - "2021-03-11 17:02:26,424 - mmcls - INFO - Start running, host: SENSETIME\\shaoyidi@CN0014004140L, work_dir: /home/SENSETIME/shaoyidi/VirtualenvProjects/add_tutorials/MMCls_Tutorials/mmclassification/work_dirs/resnet50_cats_dogs\n", - "2021-03-11 17:02:26,424 - mmcls - INFO - workflow: [('train', 1)], max: 2 epochs\n", - "2021-03-11 17:03:10,368 - mmcls - INFO - Epoch [1][100/201]\tlr: 1.000e-02, eta: 0:02:12, time: 0.437, data_time: 0.023, memory: 2962, loss: 0.5598, top-1: 69.3125\n", - "2021-03-11 17:03:52,698 - mmcls - INFO - Epoch [1][200/201]\tlr: 1.000e-02, eta: 0:01:26, time: 0.423, data_time: 0.004, memory: 2962, loss: 0.3681, top-1: 78.6875\n", - "2021-03-11 17:03:52,765 - mmcls - INFO - Saving checkpoint at 1 epochs\n", - "[>>>>>>>>>>>>>>>>>>>>>>>>>>>] 1601/1601, 240.7 task/s, elapsed: 7s, ETA: 0s2021-03-11 17:03:59,601 - mmcls - INFO - Epoch(val) [1][201]\taccuracy: 92.6921\n", - "2021-03-11 17:04:43,478 - mmcls - INFO - Epoch [2][100/201]\tlr: 1.000e-03, eta: 0:00:43, time: 0.437, data_time: 0.023, memory: 2962, loss: 0.2715, top-1: 85.2500\n", - "2021-03-11 17:05:25,385 - mmcls - INFO - Epoch [2][200/201]\tlr: 1.000e-03, eta: 0:00:00, time: 0.419, data_time: 0.004, memory: 2962, loss: 0.2335, top-1: 87.6875\n", - "2021-03-11 17:05:25,449 - mmcls - INFO - Saving checkpoint at 2 epochs\n", - "[>>>>>>>>>>>>>>>>>>>>>>>>>>>] 1601/1601, 239.4 task/s, elapsed: 7s, ETA: 0s2021-03-11 17:05:32,313 - mmcls - INFO - Epoch(val) [2][201]\taccuracy: 95.3154\n" - ] - } - ], - "source": [ - "!python tools/train.py configs/resnet/resnet50_cats_dogs.py --work-dir work_dirs/resnet50_cats_dogs" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Test models\n", - "\n", - "We use `tools/test.py` to test models:\n", - "\n", - "```\n", - "python tools/test.py ${CONFIG_FILE} ${CHECKPOINT_FILE} [optional arguments]\n", - "```\n", - "\n", - "We show several optional arguments we'll use here:\n", - "\n", - "- `--metrics`: Evaluation metrics, which depends on the dataset, e.g., accuracy.\n", - "- `--metric-options`: Custom options for evaluation, e.g. topk=1.\n", - "\n", - "Please refer to `tools.test.py` for details about optional arguments.\n", - "\n", - "Here's the example of our `ResNet50`." - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Use load_from_local loader\n", - "[>>>>>>>>>>>>>>>>>>>>>>>>>>>] 2023/2023, 238.7 task/s, elapsed: 8s, ETA: 0s\n", - "accuracy : 94.91\n" - ] - } - ], - "source": [ - "!python tools/test.py configs/resnet/resnet50_cats_dogs.py work_dirs/resnet50_cats_dogs/latest.pth --metrics=accuracy --metric-options=topk=1" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Do inference\n", - "\n", - "We can use the following commands to infer a dataset and save the results.\n", - "\n", - "```shell\n", - "python tools/test.py ${CONFIG_FILE} ${CHECKPOINT_FILE} [--out ${RESULT_FILE}]\n", - "```\n", - "\n", - "Optional arguments:\n", - "\n", - "- `RESULT_FILE`: Filename of the output results. If not specified, the results will not be saved to a file.\n", - "\n", - "Here's the example of our `ResNet50`." - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Use load_from_local loader\n", - "[>>>>>>>>>>>>>>>>>>>>>>>>>>>] 2023/2023, 240.7 task/s, elapsed: 8s, ETA: 0stools/test.py:138: UserWarning: Evaluation metrics are not specified.\n", - " warnings.warn('Evaluation metrics are not specified.')\n", - "\n", - "writing results to results.json\n" - ] - } - ], - "source": [ - "!python tools/test.py configs/resnet/resnet50_cats_dogs.py work_dirs/resnet50_cats_dogs/latest.pth --out=results.json" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] - } - ], - "metadata": { - "accelerator": "GPU", - "colab": { - "collapsed_sections": [], - "include_colab_link": true, - "name": "MMSegmentation Tutorial.ipynb", - "provenance": [] - }, - "kernelspec": { - "display_name": "Python 3", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.8.5" - }, - "pycharm": { - "stem_cell": { - "cell_type": "raw", - "metadata": { - "collapsed": false - }, - "source": [] - } - }, - "toc-autonumbering": true, - "widgets": { - "application/vnd.jupyter.widget-state+json": { - "1bb2b93526cd421aa5d5b86d678932ab": { - "model_module": "@jupyter-widgets/base", - "model_name": "LayoutModel", - "state": { - "_model_module": "@jupyter-widgets/base", - "_model_module_version": "1.2.0", - "_model_name": "LayoutModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "LayoutView", - "align_content": null, - "align_items": null, - "align_self": null, - "border": null, - "bottom": null, - "display": null, - "flex": null, - "flex_flow": null, - "grid_area": null, - "grid_auto_columns": null, - "grid_auto_flow": null, - "grid_auto_rows": null, - "grid_column": null, - "grid_gap": null, - "grid_row": null, - "grid_template_areas": null, - "grid_template_columns": null, - "grid_template_rows": null, - "height": null, - "justify_content": null, - "justify_items": null, - "left": null, - "margin": null, - "max_height": null, - "max_width": null, - "min_height": null, - "min_width": null, - "object_fit": null, - "object_position": null, - "order": null, - "overflow": null, - "overflow_x": null, - "overflow_y": null, - "padding": null, - "right": null, - "top": null, - "visibility": null, - "width": null - } - }, - "32b7d27a143c41b5bb90f1d8e66a1c67": { - "model_module": "@jupyter-widgets/controls", - "model_name": "ProgressStyleModel", - "state": { - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "ProgressStyleModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "StyleView", - "bar_color": null, - "description_width": "initial" - } - }, - "40a3c0b2c7a44085b69b9c741df20b3e": { - "model_module": "@jupyter-widgets/controls", - "model_name": "HBoxModel", - "state": { - "_dom_classes": [], - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "HBoxModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/controls", - "_view_module_version": "1.5.0", - "_view_name": "HBoxView", - "box_style": "", - "children": [ - "IPY_MODEL_dae4b284c5a944639991d29f4e79fac5", - "IPY_MODEL_c78567afd0a6418781118ac9f4ecdea9" - ], - "layout": "IPY_MODEL_ec96fb4251ea4b8ea268a2bc62b9c75b" - } - }, - "55d75951f51c4ab89e32045c3d6db8a4": { - "model_module": "@jupyter-widgets/base", - "model_name": "LayoutModel", - "state": { - "_model_module": "@jupyter-widgets/base", - "_model_module_version": "1.2.0", - "_model_name": "LayoutModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "LayoutView", - "align_content": null, - "align_items": null, - "align_self": null, - "border": null, - "bottom": null, - "display": null, - "flex": null, - "flex_flow": null, - "grid_area": null, - "grid_auto_columns": null, - "grid_auto_flow": null, - "grid_auto_rows": null, - "grid_column": null, - "grid_gap": null, - "grid_row": null, - "grid_template_areas": null, - "grid_template_columns": null, - "grid_template_rows": null, - "height": null, - "justify_content": null, - "justify_items": null, - "left": null, - "margin": null, - "max_height": null, - "max_width": null, - "min_height": null, - "min_width": null, - "object_fit": null, - "object_position": null, - "order": null, - "overflow": null, - "overflow_x": null, - "overflow_y": null, - "padding": null, - "right": null, - "top": null, - "visibility": null, - "width": null - } - }, - "9d29e2d02731416d9852e9c7c08d1665": { - "model_module": "@jupyter-widgets/controls", - "model_name": "DescriptionStyleModel", - "state": { - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "DescriptionStyleModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "StyleView", - "description_width": "" - } - }, - "c78567afd0a6418781118ac9f4ecdea9": { - "model_module": "@jupyter-widgets/controls", - "model_name": "HTMLModel", - "state": { - "_dom_classes": [], - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "HTMLModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/controls", - "_view_module_version": "1.5.0", - "_view_name": "HTMLView", - "description": "", - "description_tooltip": null, - "layout": "IPY_MODEL_1bb2b93526cd421aa5d5b86d678932ab", - "placeholder": "​", - "style": "IPY_MODEL_9d29e2d02731416d9852e9c7c08d1665", - "value": " 97.8M/97.8M [00:10<00:00, 9.75MB/s]" - } - }, - "dae4b284c5a944639991d29f4e79fac5": { - "model_module": "@jupyter-widgets/controls", - "model_name": "FloatProgressModel", - "state": { - "_dom_classes": [], - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "FloatProgressModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/controls", - "_view_module_version": "1.5.0", - "_view_name": "ProgressView", - "bar_style": "success", - "description": "100%", - "description_tooltip": null, - "layout": "IPY_MODEL_55d75951f51c4ab89e32045c3d6db8a4", - "max": 102567401, - "min": 0, - "orientation": "horizontal", - "style": "IPY_MODEL_32b7d27a143c41b5bb90f1d8e66a1c67", - "value": 102567401 - } - }, - "ec96fb4251ea4b8ea268a2bc62b9c75b": { - "model_module": "@jupyter-widgets/base", - "model_name": "LayoutModel", - "state": { - "_model_module": "@jupyter-widgets/base", - "_model_module_version": "1.2.0", - "_model_name": "LayoutModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "LayoutView", - "align_content": null, - "align_items": null, - "align_self": null, - "border": null, - "bottom": null, - "display": null, - "flex": null, - "flex_flow": null, - "grid_area": null, - "grid_auto_columns": null, - "grid_auto_flow": null, - "grid_auto_rows": null, - "grid_column": null, - "grid_gap": null, - "grid_row": null, - "grid_template_areas": null, - "grid_template_columns": null, - "grid_template_rows": null, - "height": null, - "justify_content": null, - "justify_items": null, - "left": null, - "margin": null, - "max_height": null, - "max_width": null, - "min_height": null, - "min_width": null, - "object_fit": null, - "object_position": null, - "order": null, - "overflow": null, - "overflow_x": null, - "overflow_y": null, - "padding": null, - "right": null, - "top": null, - "visibility": null, - "width": null - } - } - } - } - }, - "nbformat": 4, - "nbformat_minor": 4 -} diff --git a/openmmlab_test/mmclassification-speed-benchmark/docs_zh-CN/tutorials/data_pipeline.md b/openmmlab_test/mmclassification-speed-benchmark/docs_zh-CN/tutorials/data_pipeline.md deleted file mode 100644 index 5f00d398..00000000 --- a/openmmlab_test/mmclassification-speed-benchmark/docs_zh-CN/tutorials/data_pipeline.md +++ /dev/null @@ -1,144 +0,0 @@ -# 教程 3:如何设计数据处理流程 - -## 设计数据流水线 - -按照典型的用法,我们通过 `Dataset` 和 `DataLoader` 来使用多个 worker 进行数据加 -载。对 `Dataset` 的索引操作将返回一个与模型的 `forward` 方法的参数相对应的字典。 - -数据流水线和数据集在这里是解耦的。通常,数据集定义如何处理标注文件,而数据流水 -线定义所有准备数据字典的步骤。流水线由一系列操作组成。每个操作都将一个字典作为 -输入,并输出一个字典。 - -这些操作分为数据加载,预处理和格式化。 - -这里使用 ResNet-50 在 ImageNet 数据集上的数据流水线作为示例。 - -```python -img_norm_cfg = dict( - mean=[123.675, 116.28, 103.53], std=[58.395, 57.12, 57.375], to_rgb=True) -train_pipeline = [ - dict(type='LoadImageFromFile'), - dict(type='RandomResizedCrop', size=224), - dict(type='RandomFlip', flip_prob=0.5, direction='horizontal'), - dict(type='Normalize', **img_norm_cfg), - dict(type='ImageToTensor', keys=['img']), - dict(type='ToTensor', keys=['gt_label']), - dict(type='Collect', keys=['img', 'gt_label']) -] -test_pipeline = [ - dict(type='LoadImageFromFile'), - dict(type='Resize', size=256), - dict(type='CenterCrop', crop_size=224), - dict(type='Normalize', **img_norm_cfg), - dict(type='ImageToTensor', keys=['img']), - dict(type='Collect', keys=['img']) -] -``` - -对于每个操作,我们列出了添加、更新、删除的相关字典字段。在流水线的最后,我们使 -用 `Collect` 仅保留进行模型 `forward` 方法所需的项。 - -### 数据加载 - -`LoadImageFromFile` - 从文件中加载图像 - -- 添加:img, img_shape, ori_shape - -默认情况下,`LoadImageFromFile` 将会直接从硬盘加载图像,但对于一些效率较高、规 -模较小的模型,这可能会导致 IO 瓶颈。MMCV 支持多种数据加载后端来加速这一过程。例 -如,如果训练设备上配置了 [memcached](https://memcached.org/),那么我们按照如下 -方式修改配置文件。 - -``` -memcached_root = '/mnt/xxx/memcached_client/' -train_pipeline = [ - dict( - type='LoadImageFromFile', - file_client_args=dict( - backend='memcached', - server_list_cfg=osp.join(memcached_root, 'server_list.conf'), - client_cfg=osp.join(memcached_root, 'client.conf'))), -] -``` - -更多支持的数据加载后端,可以参见 [mmcv.fileio.FileClient](https://github.com/open-mmlab/mmcv/blob/master/mmcv/fileio/file_client.py)。 - -### 预处理 - -`Resize` - 缩放图像尺寸 - -- 添加:scale, scale_idx, pad_shape, scale_factor, keep_ratio -- 更新:img, img_shape - -`RandomFlip` - 随机翻转图像 - -- 添加:flip, flip_direction -- 更新:img - -`RandomCrop` - 随机裁剪图像 - -- 更新:img, pad_shape - -`Normalize` - 图像数据归一化 - -- 添加:img_norm_cfg -- 更新:img - -### 格式化 - -`ToTensor` - 转换(标签)数据至 `torch.Tensor` - -- 更新:根据参数 `keys` 指定 - -`ImageToTensor` - 转换图像数据至 `torch.Tensor` - -- 更新:根据参数 `keys` 指定 - -`Collect` - 保留指定键值 - -- 删除:除了参数 `keys` 指定以外的所有键值对 - -## 扩展及使用自定义流水线 - -1. 编写一个新的数据处理操作,并放置在 `mmcls/datasets/pipelines/` 目录下的任何 - 一个文件中,例如 `my_pipeline.py`。这个类需要重载 `__call__` 方法,接受一个 - 字典作为输入,并返回一个字典。 - - ```python - from mmcls.datasets import PIPELINES - - @PIPELINES.register_module() - class MyTransform(object): - - def __call__(self, results): - # 对 results['img'] 进行变换操作 - return results - ``` - -2. 在 `mmcls/datasets/pipelines/__init__.py` 中导入这个新的类。 - - ```python - ... - from .my_pipeline import MyTransform - - __all__ = [ - ..., 'MyTransform' - ] - ``` - -3. 在数据流水线的配置中添加这一操作。 - - ```python - img_norm_cfg = dict( - mean=[123.675, 116.28, 103.53], std=[58.395, 57.12, 57.375], to_rgb=True) - train_pipeline = [ - dict(type='LoadImageFromFile'), - dict(type='RandomResizedCrop', size=224), - dict(type='RandomFlip', flip_prob=0.5, direction='horizontal'), - dict(type='MyTransform'), - dict(type='Normalize', **img_norm_cfg), - dict(type='ImageToTensor', keys=['img']), - dict(type='ToTensor', keys=['gt_label']), - dict(type='Collect', keys=['img', 'gt_label']) - ] - ``` diff --git a/openmmlab_test/mmclassification-speed-benchmark/docs_zh-CN/tutorials/finetune.md b/openmmlab_test/mmclassification-speed-benchmark/docs_zh-CN/tutorials/finetune.md deleted file mode 100644 index 19b40a18..00000000 --- a/openmmlab_test/mmclassification-speed-benchmark/docs_zh-CN/tutorials/finetune.md +++ /dev/null @@ -1,92 +0,0 @@ -# 教程 1:如何微调模型 - -已经证明,在 ImageNet 数据集上预先训练的分类模型对于其他数据集和其他下游任务有很好的效果。 - -该教程提供了如何将 [Model Zoo](../model_zoo.md) 中提供的预训练模型用于其他数据集,已获得更好的效果。 - -在新数据集上微调模型分为两步: - -- 按照 [教程 2:如何增加新数据集](new_dataset.md) 添加对新数据集的支持。 -- 按照本教程中讨论的内容修改配置文件 - -以 CIFAR10 数据集的微调为例,用户需要修改配置文件中的五个部分。 - -## 继承基础配置 - -为了重用不同配置之间的通用部分,我们支持从多个现有配置中继承配置。要微调 ResNet-50 模型,新配置需要继承 `_base_/models/resnet50.py` 来搭建模型的基本结构。为了使用 CIFAR10 数据集,新的配置文件可以直接继承 `_base_/datasets/cifar10.py`。而为了保留运行相关设置,比如训练调整器,新的配置文件需要继承 `_base_/default_runtime.py`。 - -```python -_base_ = [ - '../_base_/models/resnet50.py', - '../_base_/datasets/cifar10.py', '../_base_/default_runtime.py' -] -``` - -除此之外,用户也可以直接编写完整的配置文件,而不是使用继承,例如 `configs/mnist/lenet5.py`。 - -## 修改分类头 - -接下来,新的配置文件需要按照新数据集的类别数目来修改分类头的配置。只需要修改分类头中的 `num_classes` 设置,除了最终分类头之外的绝大部分预训练模型权重都会被重用。 - -```python -_base_ = ['./resnet50.py'] -model = dict( - pretrained=None, - head=dict( - type='LinearClsHead', - num_classes=10, - in_channels=2048, - loss=dict(type='CrossEntropyLoss', loss_weight=1.0), - )) -``` - -## 修改数据集 - -用户可能还需要准备数据集并编写有关数据集的配置。我们目前支持 MNIST,CIFAR 和 ImageNet 数据集。为了在 CIFAR10 数据集上进行微调,考虑到其原始输入大小为 32,而在 ImageNet 上预训练模型的输入大小为 224,因此我们应将其大小调整为 224。 - -```python -_base_ = ['./cifar10.py'] -img_norm_cfg = dict( - mean=[125.307, 122.961, 113.8575], - std=[51.5865, 50.847, 51.255], - to_rgb=True) -train_pipeline = [ - dict(type='RandomCrop', size=32, padding=4), - dict(type='RandomFlip', flip_prob=0.5, direction='horizontal'), - dict(type='Resize', size=224) - dict(type='Normalize', **img_norm_cfg), - dict(type='ImageToTensor', keys=['img']), - dict(type='ToTensor', keys=['gt_label']), - dict(type='Collect', keys=['img', 'gt_label']) - ] - test_pipeline = [ - dict(type='Resize', size=224) - dict(type='Normalize', **img_norm_cfg), - dict(type='ImageToTensor', keys=['img']), - dict(type='Collect', keys=['img']) - ] -``` - -## 修改训练调整设置 - -用于微调任务的超参数与默认配置不同,通常只需要较小的学习率和较少的训练时间。 - -```python -# 用于批大小为 128 的优化器学习率 -optimizer = dict(type='SGD', lr=0.01, momentum=0.9, weight_decay=0.0001) -optimizer_config = dict(grad_clip=None) -# 学习策略 -lr_config = dict( - policy='step', - step=[15]) -runner = dict(type='EpochBasedRunner', max_epochs=200) -log_config = dict(interval=100) -``` - -## 使用预训练模型 - -为了使用预先训练的模型,新的配置文件中需要使用 `load_from` 添加预训练模型权重文件的链接。而为了避免训练过程中自动下载的耗时,用户可以在训练之前下载模型权重文件,并配置本地路径。 - -```python -load_from = 'https://s3.ap-northeast-2.amazonaws.com/open-mmlab/mmclassification/models/tbd.pth' # noqa -``` diff --git a/openmmlab_test/mmclassification-speed-benchmark/docs_zh-CN/tutorials/new_dataset.md b/openmmlab_test/mmclassification-speed-benchmark/docs_zh-CN/tutorials/new_dataset.md deleted file mode 100644 index f5e97636..00000000 --- a/openmmlab_test/mmclassification-speed-benchmark/docs_zh-CN/tutorials/new_dataset.md +++ /dev/null @@ -1,140 +0,0 @@ -# 教程 2:如何添加新数据集 - -## 通过重新组织数据来自定义数据集 - -### 将数据集重新组织为已有格式 - -最简单的方法是将数据集转换为现有的数据集格式 (ImageNet)。 - -为了训练,根据图片的类别,存放至不同子目录下。训练数据文件夹结构如下所示: - -``` -imagenet -├── ... -├── train -│ ├── n01440764 -│ │ ├── n01440764_10026.JPEG -│ │ ├── n01440764_10027.JPEG -│ │ ├── ... -│ ├── ... -│ ├── n15075141 -│ │ ├── n15075141_999.JPEG -│ │ ├── n15075141_9993.JPEG -│ │ ├── ... -``` - -为了验证,我们提供了一个注释列表。列表的每一行都包含一个文件名及其相应的真实标签。格式如下: - -``` -ILSVRC2012_val_00000001.JPEG 65 -ILSVRC2012_val_00000002.JPEG 970 -ILSVRC2012_val_00000003.JPEG 230 -ILSVRC2012_val_00000004.JPEG 809 -ILSVRC2012_val_00000005.JPEG 516 -``` - -注:真实标签的值应该位于 `[0, 类别数目 - 1]` 之间 - -### 自定义数据集的示例 - -用户可以编写一个继承自 `BasesDataset` 的新数据集类,并重载 `load_annotations(self)` 方法,类似 [CIFAR10](https://github.com/open-mmlab/mmclassification/blob/master/mmcls/datasets/cifar.py) 和 [ImageNet](https://github.com/open-mmlab/mmclassification/blob/master/mmcls/datasets/imagenet.py)。 - - -通常,此方法返回一个包含所有样本的列表,其中的每个样本都是一个字典。字典中包含了必要的数据信息,例如 `img` 和 `gt_label`。 - -假设我们将要实现一个 `Filelist` 数据集,该数据集将使用文件列表进行训练和测试。注释列表的格式如下: - -``` -000001.jpg 0 -000002.jpg 1 -``` - -我们可以在 `mmcls/datasets/filelist.py` 中创建一个新的数据集类以加载数据。 - -```python -import mmcv -import numpy as np - -from .builder import DATASETS -from .base_dataset import BaseDataset - - -@DATASETS.register_module() -class Filelist(BaseDataset): - - def load_annotations(self): - assert isinstance(self.ann_file, str) - - data_infos = [] - with open(self.ann_file) as f: - samples = [x.strip().split(' ') for x in f.readlines()] - for filename, gt_label in samples: - info = {'img_prefix': self.data_prefix} - info['img_info'] = {'filename': filename} - info['gt_label'] = np.array(gt_label, dtype=np.int64) - data_infos.append(info) - return data_infos - -``` - -将新的数据集类加入到 `mmcls/datasets/__init__.py` 中: - -```python -from .base_dataset import BaseDataset -... -from .filelist import Filelist - -__all__ = [ - 'BaseDataset', ... ,'Filelist' -] -``` - -然后在配置文件中,为了使用 `Filelist`,用户可以按以下方式修改配置 - -```python -train = dict( - type='Filelist', - ann_file = 'image_list.txt', - pipeline=train_pipeline -) -``` - -## 通过混合数据集来自定义数据集 - -MMClassification 还支持混合数据集以进行训练。目前支持合并和重复数据集。 - -### 重复数据集 - -我们使用 `RepeatDataset` 作为一个重复数据集的封装。举个例子,假设原始数据集是 `Dataset_A`,为了重复它,我们需要如下的配置文件: - -```python -dataset_A_train = dict( - type='RepeatDataset', - times=N, - dataset=dict( # 这里是 Dataset_A 的原始配置 - type='Dataset_A', - ... - pipeline=train_pipeline - ) - ) -``` - -### 类别平衡数据集 - -我们使用 `ClassBalancedDataset` 作为根据类别频率对数据集进行重复采样的封装类。进行重复采样的数据集需要实现函数 `self.get_cat_ids(idx)` 以支持 `ClassBalancedDataset`。 - -举个例子,按照 `oversample_thr=1e-3` 对 `Dataset_A` 进行重复采样,需要如下的配置文件: - -```python -dataset_A_train = dict( - type='ClassBalancedDataset', - oversample_thr=1e-3, - dataset=dict( # 这里是 Dataset_A 的原始配置 - type='Dataset_A', - ... - pipeline=train_pipeline - ) - ) -``` - -更加具体的细节,请参考 [源代码](../../mmcls/datasets/dataset_wrappers.py)。 diff --git a/openmmlab_test/mmclassification-speed-benchmark/docs_zh-CN/tutorials/new_modules.md b/openmmlab_test/mmclassification-speed-benchmark/docs_zh-CN/tutorials/new_modules.md deleted file mode 100644 index 3a3cb4df..00000000 --- a/openmmlab_test/mmclassification-speed-benchmark/docs_zh-CN/tutorials/new_modules.md +++ /dev/null @@ -1,281 +0,0 @@ -# 教程 4:如何增加新模块 - -## 开发新组件 - -我们基本上将模型组件分为 3 种类型。 - -- 主干网络:通常是一个特征提取网络,例如 ResNet、MobileNet -- 颈部:用于连接主干网络和头部的组件,例如 GlobalAveragePooling -- 头部:用于执行特定任务的组件,例如分类和回归 - -### 添加新的主干网络 - -这里,我们以 ResNet_CIFAR 为例,展示了如何开发一个新的主干网络组件。 - -ResNet_CIFAR 针对 CIFAR 32x32 的图像输入,将 ResNet 中 `kernel_size=7, -stride=2` 的设置替换为 `kernel_size=3, stride=1`,并移除了 stem 层之后的 -`MaxPooling`,以避免传递过小的特征图到残差块中。 - -它继承自 `ResNet` 并只修改了 stem 层。 - -1. 创建一个新文件 `mmcls/models/backbones/resnet_cifar.py`。 - -```python -import torch.nn as nn - -from ..builder import BACKBONES -from .resnet import ResNet - - -@BACKBONES.register_module() -class ResNet_CIFAR(ResNet): - - """ResNet backbone for CIFAR. - - (对这个主干网络的简短描述) - - Args: - depth(int): Network depth, from {18, 34, 50, 101, 152}. - ... - (参数文档) - """ - - def __init__(self, depth, deep_stem=False, **kwargs): - # 调用基类 ResNet 的初始化函数 - super(ResNet_CIFAR, self).__init__(depth, deep_stem=deep_stem **kwargs) - # 其他特殊的初始化流程 - assert not self.deep_stem, 'ResNet_CIFAR do not support deep_stem' - - def _make_stem_layer(self, in_channels, base_channels): - # 重载基类的方法,以实现对网络结构的修改 - self.conv1 = build_conv_layer( - self.conv_cfg, - in_channels, - base_channels, - kernel_size=3, - stride=1, - padding=1, - bias=False) - self.norm1_name, norm1 = build_norm_layer( - self.norm_cfg, base_channels, postfix=1) - self.add_module(self.norm1_name, norm1) - self.relu = nn.ReLU(inplace=True) - - def forward(self, x): # 需要返回一个元组 - pass # 此处省略了网络的前向实现 - - def init_weights(self, pretrained=None): - pass # 如果有必要的话,重载基类 ResNet 的参数初始化函数 - - def train(self, mode=True): - pass # 如果有必要的话,重载基类 ResNet 的训练状态函数 -``` - -2. 在 `mmcls/models/backbones/__init__.py` 中导入新模块 - -```python -... -from .resnet_cifar import ResNet_CIFAR - -__all__ = [ - ..., 'ResNet_CIFAR' -] -``` - -3. 在配置文件中使用新的主干网络 - -```python -model = dict( - ... - backbone=dict( - type='ResNet_CIFAR', - depth=18, - other_arg=xxx), - ... -``` - -### 添加新的颈部组件 - -这里我们以 `GlobalAveragePooling` 为例。这是一个非常简单的颈部组件,没有任何参数。 - -要添加新的颈部组件,我们主要需要实现 `forward` 函数,该函数对主干网络的输出进行 -一些操作并将结果传递到头部。 - -1. 创建一个新文件 `mmcls/models/necks/gap.py` - - ```python - import torch.nn as nn - - from ..builder import NECKS - - @NECKS.register_module() - class GlobalAveragePooling(nn.Module): - - def __init__(self): - self.gap = nn.AdaptiveAvgPool2d((1, 1)) - - def forward(self, inputs): - # 简单起见,我们默认输入是一个张量 - outs = self.gap(inputs) - outs = outs.view(inputs.size(0), -1) - return outs - ``` - -2. 在 `mmcls/models/necks/__init__.py` 中导入新模块 - - ```python - ... - from .gap import GlobalAveragePooling - - __all__ = [ - ..., 'GlobalAveragePooling' - ] - ``` - -3. 修改配置文件以使用新的颈部组件 - - ```python - model = dict( - neck=dict(type='GlobalAveragePooling'), - ) - ``` - -### 添加新的头部组件 - -在此,我们以 `LinearClsHead` 为例,说明如何开发新的头部组件。 - -要添加一个新的头部组件,基本上我们需要实现 `forward_train` 函数,它接受来自颈部 -或主干网络的特征图作为输入,并基于真实标签计算。 - -1. 创建一个文件 `mmcls/models/heads/linear_head.py`. - - ```python - from ..builder import HEADS - from .cls_head import ClsHead - - - @HEADS.register_module() - class LinearClsHead(ClsHead): - - def __init__(self, - num_classes, - in_channels, - loss=dict(type='CrossEntropyLoss', loss_weight=1.0), - topk=(1, )): - super(LinearClsHead, self).__init__(loss=loss, topk=topk) - self.in_channels = in_channels - self.num_classes = num_classes - - if self.num_classes <= 0: - raise ValueError( - f'num_classes={num_classes} must be a positive integer') - - self._init_layers() - - def _init_layers(self): - self.fc = nn.Linear(self.in_channels, self.num_classes) - - def init_weights(self): - normal_init(self.fc, mean=0, std=0.01, bias=0) - - def forward_train(self, x, gt_label): - cls_score = self.fc(x) - losses = self.loss(cls_score, gt_label) - return losses - - ``` - -2. 在 `mmcls/models/heads/__init__.py` 中导入这个模块 - - ```python - ... - from .linear_head import LinearClsHead - - __all__ = [ - ..., 'LinearClsHead' - ] - ``` - -3. 修改配置文件以使用新的头部组件。 - -连同 `GlobalAveragePooling` 颈部组件,完整的模型配置如下: - -```python -model = dict( - type='ImageClassifier', - backbone=dict( - type='ResNet', - depth=50, - num_stages=4, - out_indices=(3, ), - style='pytorch'), - neck=dict(type='GlobalAveragePooling'), - head=dict( - type='LinearClsHead', - num_classes=1000, - in_channels=2048, - loss=dict(type='CrossEntropyLoss', loss_weight=1.0), - topk=(1, 5), - )) - -``` - -### 添加新的损失函数 - -要添加新的损失函数,我们主要需要在损失函数模块中 `forward` 函数。另外,利用装饰器 `weighted_loss` 可以方便的实现对每个元素的损失进行加权平均。 - -假设我们要模拟从另一个分类模型生成的概率分布,需要添加 `L1loss` 来实现该目的。 - -1. 创建一个新文件 `mmcls/models/losses/l1_loss.py` - - ```python - import torch - import torch.nn as nn - - from ..builder import LOSSES - from .utils import weighted_loss - - @weighted_loss - def l1_loss(pred, target): - assert pred.size() == target.size() and target.numel() > 0 - loss = torch.abs(pred - target) - return loss - - @LOSSES.register_module() - class L1Loss(nn.Module): - - def __init__(self, reduction='mean', loss_weight=1.0): - super(L1Loss, self).__init__() - self.reduction = reduction - self.loss_weight = loss_weight - - def forward(self, - pred, - target, - weight=None, - avg_factor=None, - reduction_override=None): - assert reduction_override in (None, 'none', 'mean', 'sum') - reduction = ( - reduction_override if reduction_override else self.reduction) - loss = self.loss_weight * l1_loss( - pred, target, weight, reduction=reduction, avg_factor=avg_factor) - return loss - ``` - -2. 在文件 `mmcls/models/losses/__init__.py` 中导入这个模块 - - ```python - ... - from .l1_loss import L1Loss, l1_loss - - __all__ = [ - ..., 'L1Loss', 'l1_loss' - ] - ``` - -3. 修改配置文件中的 `loss` 字段以使用新的损失函数 - - ```python - loss=dict(type='L1Loss', loss_weight=1.0)) - ``` diff --git a/openmmlab_test/mmclassification-speed-benchmark/docs_zh-CN/tutorials/onnx2tensorrt.md b/openmmlab_test/mmclassification-speed-benchmark/docs_zh-CN/tutorials/onnx2tensorrt.md deleted file mode 100644 index bb828f94..00000000 --- a/openmmlab_test/mmclassification-speed-benchmark/docs_zh-CN/tutorials/onnx2tensorrt.md +++ /dev/null @@ -1,76 +0,0 @@ -# ONNX to TensorRT (Experimental) - - - -- [Tutorial 6: ONNX to TensorRT (Experimental)](#tutorial-6-onnx-to-tensorrt-experimental) - - [How to convert models from ONNX to TensorRT](#how-to-convert-models-from-onnx-to-tensorrt) - - [Prerequisite](#prerequisite) - - [Usage](#usage) - - [List of supported models convertable to TensorRT](#list-of-supported-models-convertable-to-tensorrt) - - [Reminders](#reminders) - - [FAQs](#faqs) - - - -## How to convert models from ONNX to TensorRT - -### Prerequisite - -1. Please refer to [install.md](https://mmclassification.readthedocs.io/en/latest/install.html#install-mmclassification) for installation of MMClassification from source. -2. Use our tool [pytorch2onnx.md](./pytorch2onnx.md) to convert the model from PyTorch to ONNX. - -### Usage - -```bash -python tools/deployment/onnx2tensorrt.py \ - ${MODEL} \ - --trt-file ${TRT_FILE} \ - --shape ${IMAGE_SHAPE} \ - --workspace-size {WORKSPACE_SIZE} \ - --show \ - --verify \ -``` - -Description of all arguments: - -- `model` : The path of an ONNX model file. -- `--trt-file`: The Path of output TensorRT engine file. If not specified, it will be set to `tmp.trt`. -- `--shape`: The height and width of model input. If not specified, it will be set to `224 224`. -- `--workspace-size` : The required GPU workspace size in GiB to build TensorRT engine. If not specified, it will be set to `1` GiB. -- `--show`: Determines whether to show the outputs of the model. If not specified, it will be set to `False`. -- `--verify`: Determines whether to verify the correctness of models between ONNXRuntime and TensorRT. If not specified, it will be set to `False`. - -Example: - -```bash -python tools/onnx2tensorrt.py \ - checkpoints/resnet/resnet18_b16x8_cifar10.onnx \ - --trt-file checkpoints/resnet/resnet18_b16x8_cifar10.trt \ - --shape 224 224 \ - --show \ - --verify \ -``` - -## List of supported models convertable to TensorRT - -The table below lists the models that are guaranteed to be convertable to TensorRT. - -| Model | Config | Status | -| :----------: | :----------------------------------------------------------: | :----: | -| MobileNetV2 | `configs/mobilenet_v2/mobilenet_v2_b32x8_imagenet.py` | Y | -| ResNet | `configs/resnet/resnet18_b16x8_cifar10.py` | Y | -| ResNeXt | `configs/resnext/resnext50_32x4d_b32x8_imagenet.py` | Y | -| ShuffleNetV1 | `configs/shufflenet_v1/shufflenet_v1_1x_b64x16_linearlr_bn_nowd_imagenet.py` | Y | -| ShuffleNetV2 | `configs/shufflenet_v2/shufflenet_v2_1x_b64x16_linearlr_bn_nowd_imagenet.py` | Y | - -Notes: - -- *All models above are tested with Pytorch==1.6.0 and TensorRT-7.2.1.6.Ubuntu-16.04.x86_64-gnu.cuda-10.2.cudnn8.0* - -## Reminders - -- If you meet any problem with the listed models above, please create an issue and it would be taken care of soon. For models not included in the list, we may not provide much help here due to the limited resources. Please try to dig a little deeper and debug by yourself. - -## FAQs - -- None diff --git a/openmmlab_test/mmclassification-speed-benchmark/docs_zh-CN/tutorials/pytorch2onnx.md b/openmmlab_test/mmclassification-speed-benchmark/docs_zh-CN/tutorials/pytorch2onnx.md deleted file mode 100644 index d210127c..00000000 --- a/openmmlab_test/mmclassification-speed-benchmark/docs_zh-CN/tutorials/pytorch2onnx.md +++ /dev/null @@ -1,89 +0,0 @@ -# Pytorch to ONNX (Experimental) - - - -- [Tutorial 5: Pytorch to ONNX (Experimental)](#tutorial-5-pytorch-to-onnx-experimental) - - [How to convert models from Pytorch to ONNX](#how-to-convert-models-from-pytorch-to-onnx) - - [Prerequisite](#prerequisite) - - [Usage](#usage) - - [List of supported models exportable to ONNX](#list-of-supported-models-exportable-to-onnx) - - [Reminders](#reminders) - - [FAQs](#faqs) - - - -## How to convert models from Pytorch to ONNX - -### Prerequisite - -1. Please refer to [install](https://mmclassification.readthedocs.io/en/latest/install.html#install-mmclassification) for installation of MMClassification. -2. Install onnx and onnxruntime - - ```shell - pip install onnx onnxruntime==1.5.1 - ``` - -### Usage - -```bash -python tools/pytorch2onnx.py \ - ${CONFIG_FILE} \ - --checkpoint ${CHECKPOINT_FILE} \ - --output-file ${OUTPUT_FILE} \ - --shape ${IMAGE_SHAPE} \ - --opset-version ${OPSET_VERSION} \ - --dynamic-shape \ - --show \ - --simplify \ - --verify \ -``` - -Description of all arguments: - -- `config` : The path of a model config file. -- `--checkpoint` : The path of a model checkpoint file. -- `--output-file`: The path of output ONNX model. If not specified, it will be set to `tmp.onnx`. -- `--shape`: The height and width of input tensor to the model. If not specified, it will be set to `224 224`. -- `--opset-version` : The opset version of ONNX. If not specified, it will be set to `11`. -- `--dynamic-shape` : Determines whether to export ONNX with dynamic input shape. If not specified, it will be set to `False`. -- `--show`: Determines whether to print the architecture of the exported model. If not specified, it will be set to `False`. -- `--simplify`: Determines whether to simplify the exported ONNX model. If not specified, it will be set to `False`. -- `--verify`: Determines whether to verify the correctness of an exported model. If not specified, it will be set to `False`. - -Example: - -```bash -python tools/pytorch2onnx.py \ - configs/resnet/resnet18_b16x8_cifar10.py \ - --checkpoint checkpoints/resnet/resnet18_b16x8_cifar10.pth \ - --output-file checkpoints/resnet/resnet18_b16x8_cifar10.onnx \ - --dynamic-shape \ - --show \ - --simplify \ - --verify \ -``` - -## List of supported models exportable to ONNX - -The table below lists the models that are guaranteed to be exportable to ONNX and runnable in ONNX Runtime. - -| Model | Config | Batch Inference | Dynamic Shape | Note | -| :----------: | :----------------------------------------------------------: | :-------------: | :-----------: | ---- | -| MobileNetV2 | `configs/mobilenet_v2/mobilenet_v2_b32x8_imagenet.py` | Y | Y | | -| ResNet | `configs/resnet/resnet18_b16x8_cifar10.py` | Y | Y | | -| ResNeXt | `configs/resnext/resnext50_32x4d_b32x8_imagenet.py` | Y | Y | | -| SE-ResNet | `configs/seresnet/seresnet50_b32x8_imagenet.py` | Y | Y | | -| ShuffleNetV1 | `configs/shufflenet_v1/shufflenet_v1_1x_b64x16_linearlr_bn_nowd_imagenet.py` | Y | Y | | -| ShuffleNetV2 | `configs/shufflenet_v2/shufflenet_v2_1x_b64x16_linearlr_bn_nowd_imagenet.py` | Y | Y | | - -Notes: - -- *All models above are tested with Pytorch==1.6.0* - -## Reminders - -- If you meet any problem with the listed models above, please create an issue and it would be taken care of soon. For models not included in the list, please try to dig a little deeper and debug a little bit more and hopefully solve them by yourself. - -## FAQs - -- None diff --git a/openmmlab_test/mmclassification-speed-benchmark/image/train/1659061854685.png b/openmmlab_test/mmclassification-speed-benchmark/image/train/1659061854685.png deleted file mode 100644 index c02c440b82c149324e0e6829a6988c506e82c31f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 13691 zcmZv@byQSQ-!?o53W9=w0!p`ZHv=M#gfs{Y2q@h(bPCcXAd=EO!hqz^-Q8V7cMtI$ z@B4Yy`rdcFf6SS4_L_5coc*iox+e6avg~v0H`pK$=()U{lo|;1C=)oZzjVPfw*C8{b=eh|fEDvS#g%+7sQMWa`T=2%XVgjxYsdrlgF+?H zZ*T-TSFS!Q>gc0v8t}K!Zi(>8jrgNT+exXSI7wf3NSoqjQfxiv{LU(3Dep9hsP?Jw ziIWb^Y0Ti%T3FpERhKSobQ!D_XJ=z&HC=Vo_qgH8NH(7kE39G|Z{(D^8yvs6(U9HW zMn~MJ^JzD^!)*)5fk}X{X#AVaa44C-5o+3x6&Vy(jk_{9sl6rt;=ab4BHlBKF0o6H zBlH5)z|Ztq@n62FR#lA=6c=n+spjt-smYQ(wEcHz~kHG2>ge9OMXP1 z=z4a}SYOm=xEuBs(-7tl3T3_$=(-v)+TD-bXws$RP&-ncf7mi--)gPHS{oaZ?jsQGP-)Uw{# zZdIXH*9{hobZ&WLMH#O3LQI*QGYsnzJT@PI!Uch7B?$cS*6D(wU4?7XW5r~;X8gsC zD=tc7;S)-50?oOSohT1(?jcl1eksk`ug3yeX->;0J8eT5c20|T*QdqRUN$2{y+h)@ z){OzeGi+rJd=ujr$Y{#J83*X=WTfQxP8+27k<5}Aj<8)H6WI&!!@q40K7 zGYRR91KHUUfp-VYJ22^P>$3F(p7L#1nms|ujaoADu`e07@S_GSoHWkHuG$RN?l{h{ z4@|3}NiV%WPxxG(tjxrTa=bGCk?My)$Xr*-(EL;bEn?d+%_! zq@YwvvHIgA(!Mhf^@X~I={t9mhZ#h*rU%#^b^+C?zq!J-x<2TfgVmDT?(BM^&faBm zE*9PiEba@3-+G`FCS$j(ZvTw&$M|A`{P2I{`43SfV9)C{j>YJ@im#3zOAAK4Rx^Nq zAZGgWA?|fHgkeFzdV=d$MR;|hwarZBtbC|ARtRbWAu#kqA_R6&yTMOU?E5R**G*v2 z>&`UeJVj`JAqz7=Qd0qo3@{NAa*tP6d#bsP?Y}Q4&pc=|V+CCv#q{przih(z!{~M( zU)q&_=&C>BZ%a_($dY#6W-x_$;j1W$tz31wgQD1&@3|KJ=W({u(lOFQ{-*RAr2IfN zv=5vSrl#1rqAH2utQ2cBH5t zcMy^!k|S6(el-rxIMs%1Q75KqiC9nvo~A=woPdE&G+3IQtANjv58sPAP=EaQ1W6iy zadt5MM!NaL*8ry-hn@C!n{($y8`qW|6Y)ezkVfVEYF%j-tuIR`_Hpz;+Xx6?&!Fj&=aiQ3K*2U}FV*{%_5xjU7H@tWr+*&IHzgyp% z6l9Az|2Bqbv<|RH!AT!*aBwVn!mL*$rJX|$^EB(#td3<;g}GK7j%*Y7o(0PG#{N*K z-7Ay8doqw$b{e!@6!i^qewJdDIKb(Zy~`<5Dqr}0W-HI$l!?#nNW;?N z(~#G=&LSJ1NtK-!GC9H}sB&T;19op-U5Ag5$)5TM88>pM*i+xv!Nyjzp`>=lHKXDB zh9VR}j}%or@L!^R6x|Dt+6ws@1Q|2~Ua8TQ{BlcRc$EF>em8LGN4=Sab9>00pYWmS zt}VCe?qHNDsY4tD!c5{$QWpQpjsT}!4Ka@GQ{$r0K&kr9{&vb__x1hd%$!M7Cm;-m zAGK#0${Y_cb#qY=ZF9$+B>j@N)ha@7;c0;g$Y1e`@&k(AgW=*(4hKZS%wE>~u-4w? z8;yDidYU|#DwZbq`Njm)oLO7*=z)^kS6z=kX~RV4x2BgM z8NYDWqe0HK?T0onjvvnF6Ki`Q08b%f23h9cfN1&^! zu?`>`djhTVEU|>EY%Sxf~*IlF)qWLmqCx5X@c>3)Gk-l z{WQL6ZcJgdP?>tHK*>dzaI}1Alp^sqwDU$WySmB*vkf}`CudZ0IVA0RgVHfsR=nB` z7uU5tihj1u(dTIEeD^S?eJp*6Qq=MgAsDkUv)h+p(;qL;vI)Ys~aZhOu_I`1{+zqs~LlE`ntzO!O7X3x{vqUSIWYrg|l_ZIh2~?3R^M=uTz|k zfs`E4gMPO;^F+JFN~<42Jjz8Yv46fMFTM;fv-Buap7`>_z!07*J>{~iV_9`m_BAU8 zkH9+4ywh6FNld<71O}CwA?us>f>$wOjYYz5kj zH}r4%)VSIt8M2Vp&ZHqO(xyK5oagEv2tSBIcNKimLGM^^UR>?rhYH;7@tQJ-#gqt@ z*q(9Co@LAqlI%ey$t&6vB;I_U=KJMx+}MTUjo`nVOFVDKtL=K+lgR|93%%Tk57@Bm zln~`0IY+7eC9#y7Uh|535tN~A-D;z3geSp&W*qST@0N)Q@tq+OqI<(T4$c@Dkp$h% zTRfC_te}D35qP|Uo{X@_lBL@zp(1>D6-$>I9a9W>b|ZU~fu!pCBgwufV#M^-pV6um z?y}Ow%2+NlRq0jYL(Nh4qgYpevnEysZ1uig2;P{LO8;q?bj`r=9@o=4_T!kYld3Ms znt>4#GQX#t;F^`pyNSLeAfDf8dfJ(}`j~v#&@)V6H1wtKqTRgwyYJu(0>uOY5%ck! z#^o3wl|bz`+Oe>^lV-t10xr4ETvl1-%Ip&{^H z6}vpS23gow_`50@UzvJ3lzo1fs%6A=ot<;jsWp4(M_-x$bCj~v2*!{E($s8uM}ISy zho8i2OL7Zq5!Q#!(BM96*Y*5r-d|r542gfqd8TfgRM}_~oV_tSFg(d|4t4e=w(a7+ zZCE9=b@KAOk)>c6K z<028RC!+@)R7z)G3v)H>ccxcfGGJZQ9eWK6Y?4Kl>?JMYb{_uc$s8AFVRktSm%}Uk zZsKpDJC}jlv#-?`=3ulF24iRNZJ?|nQ6+eK>#)sKh>|KM5Jd?2n%26%7!HX#{DwnJCF-a3F}Y z7wgTHmZG{RGx(n7FOC=c+_mUCwVxvXlo}01^aLXQiaXF9jl6>h{5p|nM zc+JHDY16Nox3pX-AY5xO&KzVJ-8A>a8qrb1soT2ezikS~N~vdu)yMwSH*92(LAaGy zBh0_fBssE(WAz;7c?x@=_HG(Ka@vh)m; z-6Bl{b;x*AkMC8O6`niRitls$I<}o+uui06Jh1N~1Lsq{7ti@NI*rgPUyd_zUJ5^a zkPx(^w0z|Q z0dcnL>-*cKDbI@~3msdEdJ%$Jq0Towo!dW{fu!)KsnC`6eZfb;L9>aVD&xeuZLRKK zJTq%*D|TljBbJKaG)2Vk*K*?-lW@%vQr_?25>tTib`DqHI&D*`h+W&g29lv{pdcIa z_4*{NHHTXgx>Ya8q#^bax{~}ac$>U^>?8R4PJYra<$7b`OGeLDJ!3LZTvW;tWgS-L zS?=;w+Zp1+l0Suur*j-Xs#q|^X?j&bNWLWuYH0LC4em~ba~OtA?TUDca@?JNfshe_ zKu>`F?37?rd1N>}ij|fbSWUO%9DQd^`-*wfDDDs6(ZY2S6(Y`=aMZW0voKP(+_x!7HqEbOfFs_&kDqC zZrG!k^Gvc;>@`*8y{MK!*t!#XecqgqDFei3{9PSmCD&qd3zwf<3*XxWquL63J|l8W zoyZzGo9TpPzw@IDrz?2RZnZ2qk%HpXL_F(b1=@Wj5l#+pPvl3IoFBQZPI6wO8uVK~LoW6SYJ4 z>KR9T^qI-cKB=3G6)Uq-mBFs(FLQUgWkHE_)S5YMhFI(G*XZ7eVdoK_yI$jz3wy*% zvzpglf?VU%!fs3pi! z2HwivP^Y=L$R6=$B_vC)Dap# zl%PA&kx98%pL5hrOxL2`aMFHqo$A@kA3~#dR-PYjpMu$LZA;sAk5Wb<4@(*VL?uT7 z_9z2fq!A@3y7UWTC-`P%SycXhT<5%0UBbg*PFujY@Z!X9dxhnPfE@wJ(&hN6WQmb7 zCe^|*J1GO{nMbrl`NkiUo_s=<=Ln{?^PPd9pbSqBe%ZCKlAl-nuWg-pwQ4#k4~e^g zq(rBOZKQMYLffWW1Z4E_jP7V=EiU(fUF9wZFgWKtOXVI)Ow*_|J5b$S32v-3E@h18eKmHXoQK6EkM?`mOv9Zz@vVN3zDAtZA@7g;sNano)!@bu-0E7CM2ouk z)4aNBL)oJGylwPDAiR^f{R_mQh@(&~o6ZEc>SXirJgc&#)BvBXiRJx~S5O`~*zQR> z$4iKFFTZSekM~(%$j?GOIEk&yTw?qZAv5}6BGg?6j+ZVaGewAdvdTafxGqROT>t3w zn%Q$}{u?67No8P@M5oJfdd>I8$CQb{M+Stdff46HYR1Ur{|&u9;QIZo^_(98|1($O9^Uljmv^ zX*`sE87tNk=zv+9e$(|dl#f)E2SIWUxxM-dFI3elqW&DVJ3j^&dgEf04>nEr8j=qh z*xA)0iZ8cmlA+==L;LS_)I1J|=h$yt!!!p@IC?^Ni9S`0t_(9XBLnhX|scX;qe z=F6aMez|eP_1?0xq>ux|6<3G2ZEowThy>5_8>vIp`{yF2LTGwk(9?KRCBS4&oLI-* zJ|}knJV~5BTi2kmW(a5VyzVWKdGa)x&e@wD1RBQaNeqA7OzcgU*yN-qG|%sp+Bn_m z5diXA^vA^Od?^&^_j+woDwe;5r2k_ZEv;u?JWzo@dW6^ciYvb{d0#sXXFN0Lb14Ns zxNtxWlt2hHe@tpRf^iN0PX17)fjO!GTr9 z(HXuFh_Zh=MI3!dNBN-P-qpAuc+Y; zWXroEZ|5g$Hpc_gkK{FY-6Oz9AvX+5qyGguUg*>5u@ZrgcywYq8N)QFizPF{7+S3mcG4aiOXa>9R%WC zqX8jIcKHvKSnt-v3j5;v56@fws6pjP)Qg9_&%{nPOm8@j9OWouo39h8E{Zz~sn2a zY#Ca(ZjqNw!z?xN3#$u5l;ZlF6KORKHLmAA?^F;U9lbgS6D|PEoGy<8PfYLXBU21i zg?G|Ssw6#zq9IAyJj3U} zw!!;I%447I2&ek~-e6+vyYoh*o8b~PKh+b@75WGlh)8FOlvycY=JL9DXrE%kd*^l@ z)MROK6m+K5?iS0T03+!9>0Pjt#$;#_AnvYUozJUnx7UY1w=D34NJriJZ6u z_twTk(t#2Z1l^WjcE74GJmBhVs`{kQm;z4d2#M87uk-$ zFL^r5L9dGral8OeWGfn07>Qpea5=fY_HI+cvPQ&BnPf~{b8u7uEW;2}9~O}49Hv?D?2WwV=O*G&E;B?Dt(){2Gw z-wWM*o)B>{_e%w`VKN6~Yc>8%0Q!)WK&&=CKn>9`h1(W$saq+!re<#n$5)-Rm}DJD z!M)-!{+ca(o^b5{WX9Vw!XD!GiCA*yd1N{o2KAzk$`RJp4iRc2qTCMmJKp*PxU8v$ zznU2`x$a!AvgqX<-M$#-M8R;`e2DKayP+$4CaL&d#Vqxr_7SN0an?|wB^t@I*3d3f z0U%KDtgY$pt8jeeY$f8Ren7slnQtTY zENxOFdqszi0u&B0n+81X3uOX4v4?Us;fnFJ?vv5-h4>-BM;iCM)?Dv;#9Z`9j?iZ1 z_#$a2gG1-E146YPP-DP@${@9v;ju*T#K)%R~?&6#pEN2S~6vl_)F-a&M?@lRMT3lU=07X?(~>Ei~y;w`%a zybK%sz)wMgeqv@7Yv!WYyOWOP$+unkxoe7Mmfqgj%BbdHA_~A&mgZ_t2>*c{+~w|k zDzhzX@OIH;rMc{nnLCShOAh()rS@HY`NQ7g+`;1wqN%dQCXwp5=v^Afo_aGqF_sSL z-`f+Inzf3lBPB~5q|$b{kTGWnr{R=F#O#anl2=!^MDu(OY|4ZqQSY;b7ZnWp9#@P= z!*M65;^qh?N?bK^%UsjIuh;oC3(e+}>gwYqr`^#&GU=w&H|%7M^;9X~Twjq=`2tj} z)74&&*qshy*W;y5L;W8G@xO~g^taJ?;@UgP=1$e=o|9HXC1SU?$CBy`Pm3fy4?MJe zqXW+6<#Cgo6N^)snJQNU2a4#0pFMR+5YG$a3Z01hlV7hk;=+2(RF9ji($;O z>9GT3H_f${0%x+U;+7OOLAvwSaA_`ojeQY+2%D92o{jZ|I>C^q47=p3qk=fqY3`&+C6fgO$mf z@ZClQgKN&h_V}+=sh4KV;m@r)+q5L!nLC{q?hue)Z2o_FxA%jj+=Pek&Z-5{Q1Ps< zSY(H<;ARgqPYTaB^xTl+QB~jcoTCL6!A_6&d0+eDxg+#WO$RMD z8YdgMRxgGTZQgIWp0)KnFGk!LGC6x!ft zF@|c>kGAlQinP6+Wz5bc9ym-zA60R~Dj&Dmn43Ft(UOVpx!f3wJlEm$0xU%?4f0s* z18&{$9zfx>&B=-RTDtshLWm8_xSv{pQkm+P;KgaWD1p%lA~mHGR@Yg;iMqM_vqJdM zPaM}yN|A4>3PZWLFG_&W!o z18(h9!q*%m*rs*f4mMHqZpy`d?G53aPX#u7n=JFM_ot>-b*Uk^5C!ELueXTR@jt%U z!VJfA<;7T~`QSm`%F0?@qF16i$-(e0g?2(OA@5bHl___*AskQ)vwXtzzi3!pM_BRD zuxE)Gj6U-jqW5-b`vAgNo^?#1Te*7SNUK}7fT!|9XSL@_LDzE9rux^B7acC5(&VSE zIp*l*%7+grp;tvv*OLLK8Wk;~(i-p4(^cw_gZ0P%C^WjGuH5{b15s%Mw?%`IWNR00 zAPdQD7=<1v8?L%r>aq2^#0z(>aGb&Z5sd4bZ7VER%^up9!aV@PK0w3{6VoRkKfWks zcR5M++nJW!-l8_L`F(p^q__{nR2K5p&*louya&B(07%;6vkk6w@i zcNidCib*6fn+sx%vQhwYlRh&$6+H5s8d-PjS7`U7eMfTW=ef627Ad3S`;`8JPSV#J z0;+@y4YR-WTtv3gw;kqpY*#!>Ug$8-(|jg*68&S%vTe5yP~y-x5C zqhIKR@)Yv%;#!U7aF$g?@<&esd>FZA@oq);-HvG*^i!xeEXFhzHkgmsn_;;5dv$xbcU(lLRFsonnm2135doo9ji7rUJjmY3)wcEmwC{} z))BJ4a2=mFuYeR}mcO6)NUypPUST-wA4}Wf^_Wphz zP3x#nFeF&oFUrX-bmePNc-gfCz6&BT#QF3T$D%q!c6u1q-r66)^w&DfCli{AA^`B4nWa)BLVeo;{K z7RbK|>xlORt2KkrLsJ>^Mez8pl)aljPgs)G{)y7FXiTHCceoUO{#hRNA#tvqWPsA; zpE9OdCjekH0qsTb|4;4mTiac1a@~8uZ{W7Gw->MPvlla zQ?A;MABwyNSvR!0(hWWiT_*tk+XDsao?W4%xz!} z9^2Me(=*!om|fg;Jn~Mlh3KzscuvoU{B#MG3l%fi(2(JsM#7Vxy=s;zS6FF|$7$L_ z@E40iRn)tE`*MJs?CaPEYu3G`Lkvnx*}quQ7PRm(G`mDS^Pv8J)QPK)P3cR2dG%fY zBI+Aftd#l!8hoi#`V+!W+|UL+NZ0M%C^O?0*}uT4LZ^E&^&*vCUaFc80dXp&87uN0 zUFI`Yh9A5`gx@ad-0P`lF@WSp)V`;Y%8*tpa;zMPe3uNHvUjz(*h}^1%sLaoz0di0 z{js|)Dcl8L7wrrec3P@+%lqpb^(A}Dz*mYE^REsaqn11!2Z`$v#IzrRRY^KE&w{_- z-uek6H{Bs+-=$Dm+6~-VUlOLXKF|AomYVDWBO|$<9Krw@Dtw=3aQKUC(7M}QXndSc z381x`;t z>|FT#floEU5&4T7a)-SFXl_1J4z#n!6+iT@sRioCeC{;etlh8S;(8LZhI59s*^N_4 zFq{6d-_<;|8@urJ1~r@v+mi1#V#fWaYEp)j#;!hV@OhV9Uyahc0-I`++0&Cjn2>7Z z1$o1?&;Ds-P!%CcSmdZa_;@aPsphYjx1DEs+RRl1EWLf=Q;8MHDJsmt`+LEXnSJBg zYks`*h0wk7t#1M|0d@J$S)$o|ML%DC9Z_Qr)$;nITO}1k{kx3ekTqRPB!Caey>6NA zr0FPunJXYy+qdC}nBnCeaBw}@`YSPxyT6@_gLZxKNQ|*5Iz|0Y@r1!%X*%-jk`UI} zq7LYX2R?jC7f*D1V8%{dZ>C$<&E7bX_YiaRgJy*MsB5eKP+Fj&n@=ur75=ov?oGvL zPVT%J=_G$KzFm7|KI+E$7V^q^J>U8;v1lZ{3=#$xnziU%-#gzZTX*YsC5Q<_DHDg4 zJq6oXkHJU65rMh7y8?6vZf}sNutqTk>ZYOP`R%^IA%KCxW<2{btdnsZ*<6ebIKL|S zDx92vZJkdLI+n5@RCDE~ml|_*hIXWuTy~=^n3^{_Nry}+IF9mb)r7%(Uy4;ZmWUVs zzV<)jH4*Oik1y@RK5Kj}#YyTYO-{FB_SGc#xmUD#{oW-H-aIbiS{fr}9XnKydBL77 zBjRw-@n!t}?+TR5IZRyq=G;hjQQHi;9i_rp+s$rpN8NM_uRGj(nW=b%A?$t9|1>Cm3DoR* zXwRPGdfGI|uR6t9L4JC6`4=o!EnjiSyNU{{5i{c5Y6}G9QaTGf|8Q+LC;ga{CBM3S zCFPnFI{!S6n0XfqLMA5poWfoV*^1h@KGGl;51+nwB+J?M|Aj=dQhex-5d5_{+_H)#$LEU)vGt=pZ+) zj9td)9=U2b@`x#>wu>$peA;BD@>fCUkm!{F82HuTn{q0rz6d!p{ftfPiXLOj{KT zH!@N*rPbslcrSUb!w#fAHIW7!?V`&B0U4dAMj@HQ8G;Y7h-EJ23foouJB(nr$*FiF zqen#V6CTn#T}6h*9;57RJZjlx1!uhx1xQq(m;`z21o}A0erV{aYHvb8e%wy_;Rox> zg$Dn+FC3?Ot{PEOyvsJ)lu2_vaXHJd%~U)`X0`m5DE zD4Qs$)#X_GwNY7e_Stm7DaH~L_w{oJjjdvG$|qjWUjf}>#3;}%Tg$T_l^lp30q_M_ zry=@uuStbJ;MQ{(Q;nf*Ly?7Org%f+Z(ENdg`RRTx%>kG>ky)caLhTj`LptOh-RTH zpwCElx|AUh4cb70<+iaYQFOAZPBmBOyB$d!6D*uxN#z1uH=UMZq&@eKFq|^l%NYmH zV_hKDDQtpI}A`5ZXy3*|- zMi4T+pBlOQx(`?Z*~x7_CEIwwH&NFGBOl|z&$rFcpD6!Vy5^DrNY@^n9)!hvrK6Ur zK5an+NK6|S99gzix+%JHW76623V}Pj#M;{7XUY>ou{;GR{&HFe*jsp`$PtD22_d+!Nfm*PFrwXbl&)x43S- zmw9*J3zuMVS;S137O0_KhY7;SZzz2 z-X>JG+QwbIv?rjHjKEpWe-e5pnEn2w2-z^x5tX4n+GtS7KB=|Du14%W^>=!Pki6T> ziL{7z0=tlW|Hq+6%v}z&ByDD+mmnXyPv-*0lXBa=j!f8y{Nm#+LYc+RzB*%KKi5~PFkT$NtakBaMJ_N1fy9pQeOK<9%aLFY}el8%#q*WK5^m}{O(OE%$>@-%b3zY%S^Co|+&O-rg1D{7yToxoo^cxl?UyDvL= z#DDX$iij6q59@gDY3*QW*=IQs2e~ugRb8VL9z~l!udDV$8$$xRf_CXaB0}DzXC&OK zgG-Ks-wV~`3xX>IX1?pU!Tr|GI{5FehJN`2!fHQ!KCaJFz-CVy!|ewLDQxVE@g8wv&=LM4;x)>V zg{2x|VN4bX(^E>8S57o@y&-BV(=Z}Iy(jKG@UQ&|?Y}zCX_oXu_UAda4uc`{>-hRb z7|qkMIq?SfYhwf)#|OUwX{S@adYpKA)yuMy)q03_39W>Gt>^+NEh4jh!`IRA>o^<{+AYve1uM zym8n-> zpe`9*$w4wC`!q^mF+%Q&Euk7hD9th zytQ~VvG4rr*l=a4N5~QZvoU2lhM`VDSeWx5nBi*SqtwjU<~POPM@FpMAC}?YXk+a& zwx(@SQYL9mr`K^i)`m>vUp}et?$QwAsR1ImY)Im3<*M#Ff$6u8L-|5&QzWFSvbC>? z?07X_!PPiw`=A#u&;N=}4pel{dDu3oUeq)k+pZ5R#=rR+7BN&=*P6%C&U~gMhIz?- zVZ*`+Br4`R&%s>T-?DPHN(gu-UHo{C>yExSn)Or`7F4+AEas|`rWHJN2A#1}l;X1X0h zF}qZFQvp1;>sv48S(XZUn|-Zt#dIJ=P&KVU1H?hQK|osS6K{;Ur~V>T0DQiAp-;=f zjay><*#jZAf~26lwVi%8N&yN^PR9`Yz-(Jo@9A9sY!FIBPB}w9eWBUE3{>MrHymr(_H0Q~)I;QT+t=tH?_%HlrEhhTAELOmZI|)# zZ%L9FJA>S?g8=g> zFNk+@df^`7e5C!yfCI0U{q9P}iIw{vY@wriky@t1_`UH@ns-mD7*pju<2IHPdOUJ^ z(B!66s#SEy!cN{i8R@F+!fYaSRQUtOzV4@K>R_*=!Rvut2p-`1IWe^8pUt#}gl+LJ zMVbiT5I)>HlSlmcK#1rChx{5~5F)lr%F)GrhTAtZJfK^{+^L0F1` zg3w&`J9sd!zucGRp8Qd0g0}-CCF8M zL&A|B$cRJ^tjpfnBEXPFyQUXuQGj|kP0$9{Xfcml+wpCB$t(RON&q{xy1Cm`ut`5J zrG#0HzNmvzO&ZhdXI+!XIzxN990AauW#nww=L&JJ-D-}EIv>5Fbro?W1>vpj&!BtT zVJ_aACmnLal+bnq@g`DGDvP{UJi26Hw7?jlMHPB5=B+K=JLr~bUr(rl&26mT2>QYT z8i@EM7n32Jg2Dr-&>|)Vl6(g6%=XkH&RUm_-%ZMTYA++}ezxHGsiHr^YnIClpBQf~ ztgCPH|0pP676HH0frDDf#4b>xVr}k?(PuW-95OwySp^dxHaw)+}+)!(bJiECo}JN z-ur#`oOS=XwHAxsyQ^#OU0bT^`8~CRWu$}=-eSFlf`UR275OR$1qFQy1@&s}_t%g$ zK>b%Ekbkf2UIGy%T{$yD z^E2nCVZBoZ-lr4LK}AW0+ex`w>6F*blWt|R{ljyy-6;3&)Umpvk(87ajaCZ=WN-hK zzMHJkUwi$v1O-Kh@QoSv*W$O7_H-r4N*AunrLI$Au1oaHjHgGhX(OWKrj9}*UePIp zuHNmT1IEog1Pz6asrJPPJb&Z9HuP~q%p}uK+vyuv^?D&0} zuUKKW`os8j(!HZ@STzSV*772pqdL%|E|NgUY*reu3g%sHd-QraOQd~~eSYvfNqMkC z0=U1dGah{FcY2O2>3KdEsz@(--LXB5s7GSR+_*t^ED-}}ZYd!iUV9DFVJ-_kdl&f~ zR_eSc-3rc`vtd&I=8Cg|@$K%;;iX*?MPax72*Vr<2JF`v<&w;_qf(aTm9)xnHO*we ztmy_>$bIW|?bK(WUTz<%FMrQTVm25#)6q*-obOVvFI)N{c)+8FY4{rdjFp2veM#`==j2I2?{EW zQ>Hg&+X|!CPJr^(Jf1$T2JnH^ie8tx>-vuRuJ2muN&L&R3@Z22rZf%6`OtVj{Nd=^ z$;fHz!q(v}^R(`Q(v#DW>HzP@F?b9Ihgfps-)^(thv`k>{l zIgxh-(-;FAs%l?Z?0d#+ev&ILE0yTXxLBPDAMNLrG$E(L$uhy#?NXoZ6~1zyUGt($ z&xL|1tc6zF5>FAcQ$VSLy{7ySlLAP`%)!CZ%R`fSSe%oy4guaCCHiC*#$%|(_{Y_B zX{dT1Jga%1Ictefz5L-Vk%K;x9j|CWg^0a+=A*Tl4=?V5RNL>^UuLa%ig|X<)^*@8Qs}BQS=e%vM z_NVznr!5aPRK*!#+>D zz$mMnMKT?kW_vf`urG&Iz1lTW%dE69Mdz!EDDPggj226a;L-NED51we6x7Og$G2xq zds{F`hr^9fDoZa8xOG!^np!7wp^o)q-7(vc6N|XBwhB#Gwpcm%{F;5svCPx4`qhLV8pMwO^>zgWX6EH+d3kn2@=2s=L40bowtcdwqTI#D zdy#v}$Kh(J?_m7#T=G3K{t3rDONjo<<{{TT^+);cN-1iK&?iR>7PWFqN+((yoz>AS zF1qkYPk3VxK|#XunA79O+0$HffxZ+EOdAuIFtnk7QW-C@#Es*7<7|%1OA*3jpWJ5| znx4h-QI?Pz_a;?7hwh8Q3xt$TteWPDDXn!WJN?3OF$OPYBP+({AMVb>U*(#K@hX3) z6crxZS%L6>yM{IywbyKl3pklYVF}||Wp&7lKykhiuccb@F)6sjk8%|91H$$@9n?Y%`fB#BKTBY0{*QEB7T-@~anGXc;| z^o-Nij!C${D*NtNMA=`~@5l>@u*l1_S20q~{DzYaC_d<+k*3v2uR8_i0;ncF+?R7a zFs#qnGNYN*iQb^HXbcE-Do_InMl>+ibjNtq$OL?+*Vu-Jv1-mJ8rxaq971a}l$6$p zM4OxR6U4W$JJ}c{^F28G1btcFD>o<#IU?V?dPmsru!)FH+>rNo`fU3*?4)oN?Pqw# z7p1<@Ov#b~Nl;*ODMb=Lsol&lIVqy?tWp&uB>U(>S2wau6y2c_Eob%=HRQ)e5Q7W^ zJIxAdWRY0io`Prvhj{(DNJHNCvj={CQB&RiX2I?`mGdOnrd_RMH458Ws=Qbn@7xqu z>R8CQw5VlFTfc-(duw;mboc;YHPttCe)@c@bhg3Yk(&4Xxa3dJ;6%l;BZ3HOL;nq( zCftEpSjNne=6LAAB%wZeoAl&|ezZxTWUh1lE??7B(W;uAfmBV)@Vnd<38m|;*b&}I zUdqC+N3E>;n8scP>mwgin#*e1D#|=D^(8(e2C!oXP~@$s!s&MD!OT2-dD8rH?-)Xe z$L1ZG7Ou92IoytNfje7wE2F+Qd+r|oUQem{d>Zeu;|a@`lecT;fWH#dR`lHF-cD(B z>8SivK>l7pKEt}v$tVMwRI!_&kBY`g4pdU$Rb9a_5l;CqVI=c*H-WNBC03F_PFqxO z*eC3gRU3;*N$rP>4-CS+LzhQF{JP?Ww*~Pbnn~kQS-WtIy{13{<-i!LM4RSX4qqsx zZPoyqk-$CWk2a1Rm*Y3K zjknbc=~l9H*DL()Bm;(Pd+FYRsfWkM&yH@~t4t2L8;RWGbp@eF2FEasZZxPwpmf@VX2X8Cl`)x>Ot8hBNNNMm8EpMR`6MZ~oAA87Fd`lB;;CVeE=}^zj#kh%<2;IhWN7ENArTl> z{C?{)%Gw{ap*%Tf)>elECam)O^rse^n8viG7ghZDM2F;PZKJK)vcytBLF5-D4X#FU zIjiD#zFk-9I|#D59PU@C+9habGuvM`7|GdTkFy@A@d5Ou*pE{mI6tZnPhuO3jax-y zq}=!gUVJY9bd>}o_u^Q`*UKxVc*tQS^VSK#cu&}5&$Nx-|B<ub+5FqV{Qo&A}zmq3(bV!oSCE(WcXeb`uV z*eM!YleNC)Q~h<13N;=Q+meF#*u}iU{(=^@a-Ves-L^r3I>~S`=~E?wj#(~d5_7_; z?LnluOeZ0yO^vRa-YoO^>kV7ll+(FEIZIJ}>H(|3aGJ|6G;DMFjSGdjSrqY$RGR6H z)~%gEPR+|orLt#rlcwcQJB6&dcH&;C&D^99AGbiD;JZv50}6Z~>Lfp9b4I3!JzC;6pApt1a?37hVFjpnaxmpMSX4dJO(n(UY)Axbxto6 zcYVbW7~Cr}@oZHgYb>pvaFbdDfg!#Aw}Y|z8KhG?kZN)Y93&NQ>nx9|A>J3+#fBZ2 zPJ4{X1X_}wB#Kg|N}&hIIlvkYS1who{-zo_RVN|epl$YbC?ZK%adWIBCW!SWbTfV! zr30Qw8GqT1psl(;Eo-WML94x2!}w&t@_uM@sUVZ3f|RJZBKJ& zMVFKp7i-qvGt$M~dEGDO2^!o;&xvtkCMO8Eo5fQeV#7mk3%DWuu`+jaoMpSOfLjNW zt5o8#SrgB2*P63vpg&qtd9evEfsWhu_B#XqNY&8Ccn8iEhOrNNG)TJ`DWB;nLg|s@ zpIiJ^NhjC|&AXxxj!etY)Nv#1ynBU}xh~G%O}n8Q6%4abspAPN$z%|h8<0Tm zN1`3d5z`85@z0cyTM^vD_hcHuvo-W!fE;;-H~(^COaHBR$tpz`t+>z_baR$4;^{qb zc(Zq7W2&G#&E~D*k1o$meg2pr9923TEV~`X{>Cg>$2}Mc-_E=7)RbM1pRF-k`JmA{ zsny#Rc@2O8I`h38D-l2myycDX*(x2`^>lvbKU>?>o~zhV5WfFp8B9hY-W#}GfYnLbeG!lCV{VBmZ#M~EFxB3b3$5&bR{T?p@CpU9|MVYE67Y!~si;H_$Y_PFL>&s+2l`AH z6-jqz12wS2+Li@<)2=WPE=3n9HBv5WWxm8*G2^1b*2YYg?Nm}wZQ1Q_!I65l$0Yq` z&XG51-bAA*CUA{i*W|9$yW1}Y)?A045fZ4<6Stg4=B&dgVZL_{$54~v7XEBB%pe!0 z#q1gp61`d-lgF{)i)>{p3-Auzwb+?wP0k#4847cC9Da3~ZZjz-m^`cVq57gKjXpbL zu#M4u90x`DrpjajiB(u@V|?!deG0)(&=6(Q8>HLPyQ*Li*uWkNTF@{bgUj?hzP9Tq zZ$6dm#6;+!t+PfPQI%k@D314}+(-dsVQ#l-gR@ zCrDFMgprs4J*`sqRWDYwTRAD!Y9M1|Hd5(wb|fRbTDRejQqA|~p1KVBMYUi&OHmU` zatM;maEZlSjl}>Ok5M5|I_@KB99@Kcf|>tly|@MwnN$$AJXeVXk4c^wZ*sacJ&fo? z^e78r^~<*S#qhwuKu;+8bTogjyF*moDqhRDuS*R=Rco-r+^QCS3w&6G*(5`Fg|^a! zae2k?Y$KmdPSL7(i+S(Ym41~OMiJMmrxdauww{w*YGqS7TBE7CRKg?y@57$43QbfW zli%k>*>mZy*jQ0kdCPYS_r`rNxK1fb&HdC`_DJ35?Y9IW5b3U+0rP$3>?QVeMR`n@ z1|)40!IIyK3gXh36^C~3n`dXV}VW8X&h?23I@kj;#>rp6UTtw*BiiHW#BE^8#M ziPZyQJ$()f#HU!4QVZ~=EQh6qjeN1cEaQ-}v3)v*oz0Mi^kNoAlg|stsV1DYH$nEbrg(4Bu%>aO(>g#u6V-I3#pX@ zqwgY3QT|P@y8!np)v4ljX>gB7SSW&c3y%vOMJjz?hI1Zos>p5ubgXAA z76v^c;wPh4&0sOV#rJHr!$T!N6)8DFA_Q?c$M%X(hjL>xsxm7Y1bKV{10g6wrAeS1 zW|72RHq%cenu-6qnC67usdBi65S`san+w$JkwL}<B#JnK)5w z!q@2ezd2-)O-dJ#Bp4?p5M%CBZ4i(QEKTD;J+1=>*6*Re%M+8nlX$yj8o@27WcN7^ zPAP^OxQ)<7C(?@KF~dhi2}>WnKZNtzxC5`BVxZv>wT2Gd&NA3BRv#IfJmJ%WJ@|@D zsz39!k~t6$ieSX)-e2keN#N; zxO1!x3Q8f!buBo;q}d53jppna<&6@AT>g~`;Fe5&0?j`Yo#cNZf~JUneFfFdwBC|} zQrFa6Ptq)?Z6iKQBGy$oz8ntkVnU?JE<3HG@+&J;Y~-S8gnQUEpBwmKx^(E+SIy37 z)^*#jLOed8e0sX^>Doc*W1^#D6M`Z|=?sxfT+tVr== zTAC-56Om*Lds>a#V#)qKJ4tZvN_O3ygBt~tH|R|jl0y*k6MEb&5F?Kyv(sZHh&TG~ zSGjb!Y-Kw*c$dQS8ck)0?1{AJuq!yJ__C10S*ku{bo!MMssJ^ym7Rz-1-xhL~-_+IRX0;I}nsy4A<>P%_RNp5_tgIb3nMqAQ zN|&AZ+`6`9X1bmkh|RXq%G zaF5r$uN9;IJ3!7%DlliPQSte(qGFq#P-^hJEbVaAj~E-$JT=|p{5F1bv9Tke+Djxo zx3Fvig9jnJ_xIZ%w#)5ZqpkJRm#1K_r})RDwZ=eY8W`=zgQML86`TC)5p7Rp56^?- zSlXA(;7kx;K}TdUG)DwasI{jyc>v_jB{$F1)J(~I-KbQmDs=&2=Zu);zvIrH`)XZJ{Q5E0W4b_n1P;4=Iv(sQxsxM1by^O{ z-}+G3ggw$k7ID9LXcios^B>4Lhe9GdyBOhpE&r-*!9Kt5OeBScV~poR$+cqYG`K`6 zEsO(D5pVH6CQa-!wT8CW?ZSfif!(lgD&TpCo24Zm-LlPr=l8Y)E$}Il;`k)*^VUUZ zeMG`a!x-Yu%Hs+rATt(PAji$>dHOV>r>`*|-ScV&48L)?tS-#!w%PXRmcKOuE!6XQ zt9GiY| zd!UDiWZ6cchVdAhXzP=YzT$HD*qZr>{<2vre5=*;INB^d6mu{z4Bh*cT^DvsPO8z_ z#cG}9Ao{{!sFmQD)fgbx-WO1gikDR{w4~Z5YIG4>{*-ev6R$wYcV!=vm^ z@nE}k@Sh(Uo|V59}w&`IlLT4DvVNuJ6VDzl1JY5et&;S zmuW71t$}*rag>WPPm)qdu&R?`YIBx5vc9sz0UWpwiP6`qRfWIj28TjX9$iD4CT2wP zKXC8St+ky+csv{P@VA7nkN6h#JzL@enE<#F0~^f=D_TTP4fds>)_taT!qQz<3iPAY zKz4=G+q#pYE`H;K6m#DgVm9UzAtai|wS9I6{jpfU%LtgD>GpX903Kg|x?Od9-(tV+ zFa-BjE=|Kr{b&#z*auSZB8NpfrCt`|q%o{0Tb90qTyP)H4A;ZKYVUFXB;$(zI~gw> z@5hwSuwq?5(et=c|MCD$U&}Q@pWoo=Q4QGFFPl%K7p7RLK2DSXh_Cr93v5GC-&TmASrlQn!g+0=m@} z#p^$tj;!KH zvrxMX+R2N(rS{+sU3(c}wDnFvH&yytgrpAH2k!%;au&sqybm8J5w=!U$K{^$vd72> zjG&ZRvKe!Bwz7^RuAaj=FyLYzs7Xly;&Y3Cy+SpbuOEh=bxDzbZT2n7t!PsWP92+* za~X!QJUv|ssA}cNF|S>I;nDoT2>8nQ=&gu$M}T%_6h&6j4}PHIL{@-QmVyFj_;c4jcH!FjZe$rz_r^SYnz1 zeqz}F70r!#E;KHWLurpqLNc@Qx}vSOMc(c=?}VYjx9-Fy%8A3a!R`VW!Ue@OR=W+x zKVUlhlrZN-_YR>sCXzP^NJJM|Fikm*0A(`3{af>56*ky^Md^|`LHSq0gjn2~^ zT1nZd80_3l?U`bbmnr+gGAo3Ix~iM^0K`)4yxgHCVyhqCjVcYLkYhE&RufecrC!k9 zdLS{o-f{oY>{^?y7F;OaXzIk#)q3oIBRJ%7Zp%vwXl?^la+Gw_TR%2?HKVpP$eevH z=H+$z^!o{JXgGUJ7vL1S!(UuabL7KRO1k*Ng=fmP1&bN7lW}!_P1ie?m1CDE8s>xg z8I5EVYFfswBGy<%Zm|C4*wxq|`3I|0>L-|E#j=*&;?+vab?# zVk+vLNKA!Uzby$E957H1ufc?YV|jD`0Y9${#a2hC_$c(IO0Q9kNsCq{dXx|`CZcbZ1QbA=JWO#XE4Qak1FFdH*Rrnc!_`hTx=))Vtc$p+U3Pd(-c~W9MG6Z$Uf#Q z5*1@$=VL(Zn~J2*HWRP5=hX1Y>F^861!?l@70z9w=b=RXJyCu)+1SWq?1yK^vMo*es266hXrPUTH&A5|N}tKoOV!VY-f}c=> z9{-P&+|8^E%c~|;1f=vwXZ*%sT~8X<7lJO0P+&zx)yj70a#8751ugBDmnH(1X3*uS zpJ%saVgs5Cznk%F2?_epjjUgsvGOM(Z>I=!1I| zO`2`f%m|+n1xuj4!_LJ)685=e{h}%J+Z9K(^4itMD?@wBeJi{AUHwd-$6HoKZ&FVq zrbkK9=sOegd?IqEe7{dLdu+<#IzMP-AP$-_gkGA!DW+46u_WHS}B38zQ%534C)~) z>qYqti2+qm!z7Oo?4k;bv5ZEKhKg0wibrmh@LeX6zP5-P&V-NM2FUqh4rK1jIdK^! zzshVPVVthh8Q9l{h9*fStPnSBd}9xW*4VRjbyzV(wVda6FX` zSbgXN_#|dDRUjI{xgw%vW={tD-tNFOFGqTb&#TOxR?%hp-ze)B--F51$>v;9BRx?U zk_Z`!qXi2FgCj`CS?~K*wFm9eKDndj#E_{{ROs#4g?hMEuBVVxvtRZ{G7y%X`Mupt zGI;)kPeXqZdwoZ!i8`Ms9l`X~s;W&754PwsD}GXasQG<|&;FeX3g7%O5-DLeQRuhFv9QIYh2 z1I-nIAoNmmiA?FD_fb+kFAb z@rB?_SSR1L`Nr4{J5)Cd!oMR}?$^9`<6&&}R+DixWvt=|X41RWvW zUKb!+QzT;08O2XzPCGRIh;?ne{<8t3Q2Aui()I4kVpt_jN9S z$gr7VmmRD!9B0yPL-XTq*fO)JP)rvO>>O~=8p0@Vh@C(kNkmB|9Wzsn{G)C8L*tmg zTBGB2RiT(tjD6l^sPFwWjz@nY=K;!};M|q|i{1&VBz@?Ve2uo7^N=B^eapek{=vCJ zb|7B&G@-}U{&iIwZJLN$Vwr)^J)8%NgQkTZ;Rh+pt$0_O%2NHdWT)!?Q(%rmMJLd> zit*KPK|8rs^`sXkV4(EwCiQb4Zz$F_F`Yro>7uwd$XRErDwD_dv-mcZxS*(8$N_6) zi;7{p*)UNMy^+ndl{Yw5|9^nyiUh(GX|t-4jrytvWV#CpcAp?|*aYBWhjw^WDlgIx zgIU4aHQu44^I~!O%Q~Iu>bq1PN-~dt`>!}0L$w`yi<(URqM6ZW4zJbm#pT=3-ipMu z736MYDaE8r<0$$2yVIm|t#>1-Ajf`}475*?oXr9dOR7IRD9VbOXSGzGw&O z&$&HmSRbCa#aasqoQG1Ub>R}|QW%SuU#Wi>gLq)5H>V2%H{fEkjmukU{b(eul~e zv#_VHa}O74BytZER-0m3w|BTZ+_~ho@TVZlWF$F4mXRt7is@e+<;0H#6Vio0qk@ z|0%Lr{~@xuX0@gDElt4lx*oP@KsC7??ipDv@uFo?3K|Q0NOjiQ6Duz9G<+22IH;eL zC&^DA56+vk>U6%#u3pJAz-ah~+xC%kcGc7R7}J4(4aNPr@a4+M>!OhZr@amQZ-Uze z3}IgpVhpjl`V+~(S{^c5>Y=SMfd9W`<#AT=%*<`+gwlN`_}E_mnUrJes?z*llk&j| z$nH!5w^wW}f#^6N!yc$f%RP%!8Om7Dr{95PWRUWTD#w~pxp>ci8n8le{@1RxMZ-r zt2{J@V(@5IWUyImpS<3xRE@YoeP>#I+N3PE+6Ent6@%u_hRsT5D9d@dG8Z~g9JNZ=>XhHIptJOD%)9y^+<$)Z^-0ZZD6VSjM4oNd za|qh|ji|*uoYtfcp7-H3l+33CZ&Hqe;}uNnruKU2cPjtjhDo2T3sHZO!geO_f1`-H zuF7_uFh-rLy?+x=8HUkPc8F){re3Xng<5Z~S(<>ooQ|lsE!4DRr0}aKDEaUI37+r! zRhZ4%<}MarKg=s1-G}{jm;X%PIIPu1Ov+fy_(1iIecA_Z4fXSfu(dm;0%%xShibJ; zdyWTBD>Jwb7@Ld~fBgvRJ9&ozb77SXlF#$=+4P0m!xKRf?HpCw4+jf1G&A<&arDK9 ze{Mw0T4e-o*Oc%5GP_)0S}v#T`>CDbdggHlYPB6R_VJsUezl0%qF=>B6~O$Hh>y_P zYigRzsTB(^9;QBOQQ-3A{#`Li_7JWul?tKA@7|gHgT4a8$4p1pcQznSXKJn!x9XSK z5z1{d_FA&HG_1s|H0L0#rVgHhll%+Jf1HTC&B_!z=V5$dyZvg8EseHrd^J1s6()gM z=6a1%R?ZN^^!T97cP0 zV-Lyx&5b3PrJU4`Ei8V9A84li!e_*|F1= z&k(l(oj+4kJ*UGp`|ml&+dYyhy;L9S9Gz0U1GNA(ZJuD-QFkyH)8+2L%WFg1i-h;H z^T~RAXa_ooRIA~)rwOa~<&-RdaBX(OiW~5oJj#DF!qL-z8sX_mI=R!!%dO>e%f~GIiaEcl zx@as|P>+3jsz08kLTZOi?43B$M+d{lL%xEP_S8q2G>w1U%hCg}vlnIj z(V})!$*8ChN-AW1w~7ivTWd>Wwk;fFxj$(@nD&S?!%N$3Q{43g{KlF8;fBcBRph+( ziiaBBa4WdgUhw?%<>4hIw&w_5oc59TeDx*MDHHFpRqkTvwVu-k!k)xgX5`D`X-3qG zZGx>&Ai%!O1N`z#?=FRlbf+&reGguJnio!v$AcKX7_n-D^v+fw%mew9uf|Mc>7uNh z8%F65B%{iDiUT^w<>YX*G!=_u7jS3qzSa=3;~t~;K%zom*A5zwxuB5W47|920F&(+ zAYfor5RS_H!rIQm#lxpU$2~6_Aig`+Ht*oCu&ekD8_qr-P4!hJ=_f;e|CF*wd0YL= zxl$IsXH!IUJ|Nn4!gRkIZ0)F2Cjl7Q9O(FCXZz1kptHf(S>{@apR$IM^6t&-tYTM7 z4N%?~u_`!8#Yvq1+RV4jK#R%v{$RSNeA6GhPLCzBWEHKvSLFptx{m7YVKmmcEiD-V zLUo0xZ<`vFlKWk+u(&dhn(Ot7rla*?kXPG9>aE;|`$ugMIPX5G3ld5QL4$dDK5*)* z*5CJcTH)|IC4K36xjPtdO{4*#(7sWWHl(2|ctXz$1Uz2WkCl!Y@I4s)QGtZ!Zg$GEn=5xjfDDhIydT z7!F5j)T5DSf^HTvE}T7bEpQ<=_a#f8FZ=fHcX}iM+M+DCvOicAe|J3i2zg{BjdNI@ zx}qmF7V(w^EFF4{N;1%E3PihdOU+3`{UiQ~1xxvd<#OZJ&{)?imWE|WH>491S+}Tr zk)J&_``dJN1I>Oty1`^vSL;%$RG0M?)1wfoe1n1NT!dmj%+kr?jrc6Hab?;i^vY5= zp2nSbS6vFJ_Dkv|pZ)1ms`h1W*TX63mcV)6XW{xy$WJT5DiaCsVeenww#ds7vw(+~ z{2$R)`!jE>UMRHb!+$j{<5t;8gaHnwChAA^kjSv9gL-(&>hq<0GaQB5cv{R2ysqi| zlY5`E&C|WU_T+#{HLV#a8qjfID=R%`je3BzE!U!nZxW^$0}QNzkGL0T{Ag9ru}C&? zv2O@H{b49`kk$CDnaqyMqB{Su#t-#j{FxobMRO)q{8FBt=yV~8BJUzYajJmPbC(rj&=y~juKUMf9ZRt6>`$w7vB8RkgpmvGDI+_Gy`pfqk#tRfR z%n55__B6dw@}^j>;>xi#A+M^P9zE2G-B@PXo}pP4-`G$Cw|K zKCqJA^puvw0;!)@XhBWtZa1|g4#whlSE03QC$y)f9vpnu|C7eO5S~Mm_EY2j8HhTQ zchEqd1{-BgeEd`7{xH3m%Nvz21MucM$&R2TF}FB6vd12-adhMuF>IaR*Y~O&yge2Q zG8UAtx`|b@%mrwP_b2`>_!~hW>OvY$?@=!eEq8{54E9 z&3b{ye-$^Pty+ZDVIJKV%MR{oNB2K@+!I9-F)M7N3_uv_7BQO2aD`<;>cn^m-JGa^ z$dbt50J;bXd6U&qoAE4!rm{#`1AWqL0Q#PYQ3Rx~X|XCpL#3h>WL7cYyRalO7V~u( zXK&&+|9b#H)h7pYOZRl;3{rlustt>mfvb=kU7UrWo9V&`|$kv}l?q^AZ>mdk+YhW6lr&IWJJu3Dd8;`Ma z1@_?dwT)re5@YrcAxbQKcI?`A#w2gjEzSyyQ}wDJfK4#gr`|Hh%~I|=-v?$GCr?P^ z&i|X2hwPIF_`CAx&T+-Pq+Ytmxhx6Sy6x#G7razS5MP9<#z~&1qU4Ldra>OI_6=(8 zIkq26>5yP;l6g$@y%?4rntmF{kE!NPq^pD`ofo^>jCILK6;q1@e@>{{GCE;s1QJaU zon_WyHuUf*A><4`cl8djN3)5F%Ud=@OvD1N zg(+5hGYZcPQg91+E@Lz?;pb?}cF*q*3oj0BuMC+wwF&CXy1}2v6Q_FTI>F#sR@B!& zELx0A_Sok(b(M6>M>3~5?beA8vGeX|whWUH(^=ehx2m84ta9L^9aqzH{c~<_0JtI0myPj z6NvyJLt=|m`?tu?Yu46Af$eLHrCq`xaK7m)D@`e4p4b?>ABat>7w1^OCRt(JDuJpV zu2%1Yk56a=Z4*DqG&j?~lj(P|U+)lT5i;tyvFQx?dK>9jO!oc{$+UGYW$p2eZfEEP z;|{4t(Le~jNKAx1%g@u$V~WVA_Tf@{kv?~!^N_9jCo@qoT66nk^s4S0nqofu!D${`XvN|s z!~KI{|3g&5xnoE5a-ohzsnXh;)XbGINL^c;+@u}JN4-23P@Hw2h6RAg$&q=f^X-YZ zE0~HNOADsTv_E`BN#nm!zyq%|S7Vxbi$qQYzsBDYVl1L5QBMQ(=Lw-FQ+zg4$JEH_ zC1&6lim{WSvx#2T9VT`MvNS6M&FheF^z&B&JVUn~u%wf|;{Y4#F!Wh`)0A<@=h=ig zXiEm#*bG7Rl#B|#EMhxj{sS>WrgTJLM$LnWT`I;k`Fj0=1r{py^s=lhV)<@|0V=2O zG^+$2ZegJ?s(uUm!+q+C32x)=Mtg#kqxVa6qH=iqgt(em0wNPNDP7PMHNdnbWzrAp zrm~>v?@jK#wVk#Kf%qR+u(C{CtSlN^mm`%WSkZ3W z%o)_>vMQu}r;T-x*EsjBmJML&tvXcOPXg z8x{%wiK5SnwDf>me=}}9F=3wE7-PK4dps`8^n%0c{6HTLunsZ~AHy8$& zdHB_Kb3b4aa%Fe2876!62a1P1>T|b=IAP7tUTx+4sc+}$s3wkP;#Qlfza3%lnLMMg zlqj{pP{R}WX)0fGWwSsks+m()lWb*i)OB7Ro5ym2LtF%Dyo%`3uZnT&(S?*6jzw^{L;xVG=w?m zhX+IhQyx0D7-SIjYT(TPQ~!5~yVEg#mlX%2l>1?g4c*v1kDfV3VwebjOr}-Y#&FQQ zt9si;A9`DKLQU!QLOmzpZKF)-@qL+Ja0j1<3fiFChyNOzaZ$O;1+fhjm zlJdiZ*B_5(@m8wmY3W>+@s@eCtQBnY8$uFX_WK_Vs2Rg(&j-pmiOItcYGg1w2f|zA z#{9dE5T;_Gyn62Z@zcDNa8uY?UTi)RYg_Q#c3qOd#2afBk^jSeu`} z@03Hfk$DWUq{&I0^biFe`4hf8Zjeo2vAeE%PHx>9$>yg0Rv>ZV;YRL<@EkEA(G_o^ zJzA|0S5sKzd081|AllN)<%3~|ru>AKybLGgk$&c>v~MQU8Oy^$mbf|41h6UiD#)+F7Q-&D~UflFMSHsp_L- zCTbjyfCnLB`u4)Nt796ht-LW2XIXFZLtw5u^~We;4@u!3zH(ybQuea9@L&xNm(F1P zO5)G2QW5u=QY*w0Cw`hMG@0?|?A3Cf%Ff=k<1$BcG3s^Q5!3;u;XK+z0SWSB(F2&k zu#dUQ;b;@@Gcn6_&XxR!OP4g%4C!9bS*d%{Jb$nS)(;mMsTUliFzprl+hqOJw%LqW zEFB{bfc*FCJN@EZSenm1P2QFL=DJ*G%3-s2sU=76S&hz>AwC`Z`Xr#$lcvGpwpElZ zH~X#!ZFC*+y^j5Y9OaWzH{+_8v;R}`O%z13O1XP{LQ&m%vz_?_=?aiPpwxT)7j2tk z)zU9W>6f-GL^0VWf_j*)sXF-kJZqAnTedB`-~<)fvJ z>eAI=v`7B`gSSol5JFiwAq&d3N?uP6O51s@uYDNR_PDce6w zK!jV94zC0gCS%1!p-Efh^LWg9gwzB{Rqwuc)9WZCJ#ZvpMCsdV*_X%2=m;Sw8@(SR z#Ztt zpU}g^{;4`f$jrf@Z4^?T;FH#d0psTjq2B5YzKPt^*{|LSm#I7By7_3=F=LlXG85n8 zB|5E5la=*i68zQ3FYhHVWt9L5nn0N4+BH8JO#=Jry_J(G6qaEg%Msap-$^M`AB3j* z__?E!HSPWWNwE|mex-$yZM&ysGc(%aF?xucbdTM3RDIPsQa|eT7`yHpKAmWVOWkUd zi8~4zYddKnO(k9?{W+gH5&nyl74Fkf_(R`@UHgt)~DhI#uamRAjer?NiKaJP@L}wg5PHFOMGtv3W(|#Y1z9 zwKwCQmy`Rc?mRe#aKVcRm9Dd1NHq~2Gs*#}4)8yo`zs9XT*hBt>L$ZoCZQ0CJEl%> zV4o{h((6tl-j8r9dzZ_L{g1YG@)NPZqOCXmE~2VuSC1~cXmFSWwCEt>9J9XW!8`~2 zU@E*{nu)|jP`>K0Hc20)P?{WpCe~(=f1JIhVX}~~l7q=NYftSB$$a1Jp38bmu0{EiHGIYDxC$`p?cuJ^6eoOGjE{sz$f_HCLWY8nqE>*BLPNQ z^0itfPwU_*w2Y($G1lIbjQDdtu4m_JICZhk<&%;*0!~UUIdS$N1B3NzeVIQ5@e${r zf;d7ui&)1H1QcUVzE-mP0zQKti_dE1QY@{3lK80Yelusqi)~qCvvd0bp0heF8H>r~ z^mr!hHsNcjHeT=$ojS!&>(unm(tkfR$j>9udF-ib(+B(8CKi`&uflhAD*x)2iniv~iV^H1&j zuT%h6w)59#C@2Y(f2Y-H5FoAObX%uizej1g-}Kc4147GeKG9m_QIeK$y!)Fme!H+y zABm2v;xVSxZgq8N^pG(-IZ^{az;N*d#G2u#2eplcY)p(w)n|(tOuG_8jO!vT{eQ^c z^4^oCQhz9Rts~sea;sgfBU-#g%*wDs6vXzL)mMK=c15gkz=`W)vLZkcbn02JJ9SW9 z{Z~b;mL4&)OV-M?UsmsT)z1Hfsds-kc&NerI$GzC|A|g7e%ovES3|@uM`(-|w&Xl|j^!>xY1#wMUbJT8QA6yh^1XtgyZ%=H87R#qw; z9QDt|ESg)B{wZWbL%?-!=lV{L^I(;$(8ckVK#Y?U$K}PV!LkPQ5hvvQUwa6}=sji{ zp`xO?WWVstKU-@8wzjgXN_Q5qJ$N6mmG~jvhPzxB_Z6s#%S;1m%eUImmwDO7-~}qFmoA%;qn?AE`-02BE*U-!8Fk zUpT!o`pqiZr#5l8()GI?gMP8 zw*Sr+Cz1b8KRZhwGNt0zxBva@1=;;SZWgxlVLK#H?AfrkyX(#6i(+QD{s9c+O((>% ztnaWBX-mh#a&x)4D%;*N*dj*U+z=Q+wSSy6cG!)WWx1XD1oh?{HdGk=(a6Ai7L05T zviJkFiU_ejDy-Q$sW_=zVqs%@E7Ca&$p`TFcmKEVH<5X(mzG_l%&tiTpnzj+Xtz>9 zFeBvZlDM0D&1Jf){(1%Rgeh6*Nopsls}X$vh*R*lryYGAe;`QuP$F5+N@`xCq`Y%j zo5B{7<7wqVech}(cVNkMn8Wr{vbR8l{}OJTk%-Vi-v@!#(S!GM8rn|nkpr!r1 zfcpMPE!&EH(mtE-P?+RFd=e6ypsY5{;N4+RGb}Q+CE-uli8OW9S$8eOlo;LriMani z*S1xua&=KIW)9Rpd~^m-VXMnBA=djI{+ zCOhvrxX*^$;a3m-m^>WUas@-x{4{4v&^j zSQM(b;{O+WZy6O;+rRHyptOo~DJ?18AO;-*(w##i-Jqnj)Bw`mAl)F{AT8Yt-JQQZ z*mpeleLu1O>%Z2QSG<@t!`^#lU(9(OpW__ijSQnL0Yn|q(-dgRL;dtf116spl%q#g zRb`QOdb|9M>aUGIOFAjyousG5W^~+Jo*CS#LmH)vpx3gO(ST9L8hZrL~qla>`v8kj=W+ve>7 zVj^4Z)hTFCYO-|Ia7lDj&&_glI!Ndw!dBLu>XpK}%pA?9BIW`=ASGDn6u8jcZ%_(= za>t2wIq;@Mn2BY5%g8$~eOw7pfgF4&LUd3zgc#>?7N}MAhMamXz`AFe3dFDUCNpZ) zTuuTtq^rXg;HDhvR#20wVjnw*zM%G5339SG-JETkR#_KKRcE!sc1rYaHHg4Bhx>3O z`-R#@9O?DuhgmJf;VRv9O@;Iaa*0=;vp`%ICr(&u7Wh36CY?8UH+$WOsL99$fGqqc zfr-F{;cni#O5tl31e1;-m&K{;OukpKYo>pnftT5P?KpDyRRrwym|R`MXz1T&Yz~<@ z-fOK+K^3YQ&{i!rqls}G_Ak5pBLuIJi0-x}4z#M3xD=bnfN-8GaF1ujv1=Sj9l?sK zBeijw*bBdnK(O;UsvmJ!u-fC_)R*{O0RHjGp9SC!ll_70VpGGk1NpBIQX;yXeTT7* z^imP^=1My5H?0PQI~$FQV?EPLPHb~!a~mzOwys#MS-ntRXlfv{tRYrrzi((^t^MW@ zh`(DnQ}u&u?I_mv#c9{iwlgb=K&pz8p2cqBHF5~+=Vmqr16#D!QfvCDx% zh9oz*2z7EEOM_EyxH{3I=oi#&?^-YTba!pzWN}M3lT6RXVs$~!t&jObtl683r+j*6 z*qC$p%cYWagH6Cc945!PnXqEk$B3(sbX@xI)Dj%Ux6P<`^3 zSJ#br-OW>FpC~MvnBk^SSkrPKJh6lcAs&rx(&Jj`rh-NM5@2VutL>Y5mFVF%EPbb7D``Ndy;!u%`0&L}^SMVf*uEjP0Wx z#i-UOc>tmvf*#9RjIGX2l;e8QIK8 z85h}fFhrPJ1sqBIpe7B~C)f(`1`pmyE3>y-cE5r9N16D`eWo|EK20ky6ut6Lt%g-5 zo05Kq3xiB6Y!|LPW#%s8k)`HhuftoX=XXG<3 zrDYQn>n0^bJEBr785~(coO^Qhw&Hi_3$yAIw5d-us73}Y1;YH{rb`=548F(V4*IKZ zu=Y8w*G>|&|Dneuaz^`-)DC-2AYoHlVi^Z_6fENJyuX`Qh{1FucQk5Y#nsqk!g^p} zS-q{FomJQwA_cqk&&#mlki)ZT2+u?)*&*?`=L zzO&opFS)Bod?I9D_tbXh(`~zs;Siqa%>cSy=}^by*3g0iSU*i}M_>7OrZhIg1>LKI z1IYzSvAE%N2H>8<{ylYAqo*3iWphxYj23WR@ZQCme5zKSNvo}5lJVm)6G>9N%)$vz zWmlLTt@^184!~1zgy=c)cRjg=e&f0*P zB_iaOl!{K7bX}BPFN$JdMjbY~%m9{rcY4;mQXPP5e;T=?ye$0R^_Ns1kUAPRzTG8{ zCV#ocV%R176PaD@_zRgGG&dgUiw7q3r@C>nTq38E`iJI{_p6j%DqT6$kBUIGVq}!$}hxDj9w}|3ONH zilb|IS21cASCBeFL7gq59wlQ0TWy>^*7;WgC%@ccDY0c@#H^y5STb{9rBf%>dsJ-v z=(x)Hl)`2yeP#I-I1Zw=g~c8nepV0}kbH*rO<3Yo4+u;49iEdi<+r?K>oLtMwPip2 ziejHGmwrL9zvtal!eQ-=Kk{yp?|HYZ<-W8>RKcOYE$(5LDt7F!5fFKsWwz(|{6XSf z>HYh}+s-Zry)P(|sYF-#_`I-#AVsnvyYHPpiM)+p4oJ?5e+pt;F{}hY z?1>cqFuUo06T;S|(21ZeJP=cJq~<-Lq%=Y2KZv@zbjAmFM%v1u+LYt`$6E zTDwV1RZtlfFS1By5LlCM+^o33rqMC4&Q+mzH!&Y`=h1w(@S!7NG*KNhZeBrV&|K6< zP={vYC3?M{XXin9FH&0}ncU1sC<&q4Qd zqD$^t%#&{DKIqTE>r600fkvW{GzWMMq;O-Kw|n9ZnHO2cnh*cp9khJlC2V1cOs1y%OF!7a!ym z*3jD*jQO!422XCTv50mZd0!IOlHMlWo_|SP2M$N8{Y&Cnd0!h`-~*f8tdyTce~-?n zy=;mC$!Bib*_IgY zR*Svp8qhdWAipno{NCT&RY6c+##{~!-MiFc+YOaRO;F?-GhVMAvvL?sGT@a|ROY6f zHP=c$HJ-m_kQo0tkEF!V3r`Vo0Nb&e50QH3#AsffJO&(Qr0^4R{lNxDctP5@9E>$W zHwq-&kiymL4_dvRafLd94inf&b5}L{k_e3bD;pAf=4sQUoDp%fnCb8jDVq#VMWwCY zMiv}qb~f%uZ7vO|@L-IUpG*)(^}IOMK!Ciu`8HhZU*+4>4p{}zgc9L&0*ZdP3sVy4VIlAT6qe|Mmvx!nEuH=Qc6UBn#HFx`VPp--FCw! zs(ze)^xkppqApJOk`GkI$9pZ+z4aQPdMR ziRgZCqvL4(mTz}3z;}FelN3Y(dl8FNC4d^}zaMX-r(ed~e)xYs-cH!MkGXQfBoQ}% znqpfhm;StJZl@A0gi($p_)#IXlxDHMysz&=BEnq?b~uX~<@u2J#PaN3bWkjA&kd;{ zK+*i=(o|vawuaEM5eahz#i1;F9vq^$fSg4g<8}tP`xk%cVSalr0?Q=(#g@1S3bTxA zwPoRMlcN>u!NS3WE!PXxE=}VlcY-QQ6`CvKUv!}aKHZ^&g^Ao`(+ccC6vhNf-XwT? zqk67ldZ7L>%i~V$&9wgnwN6uybTCwLw5JvNYsgx{wJxa^nr)BB*C0OCGXpot+QPSjNUU@i+l{Mif?_wfr3J$xF?g0chtAlbH1c@T!Li{sFHlZgM%OY;Afm*jLT>chae z?qH*$Y$C7?r4Z=(w%5|D_mN?iaaO-U!n?5jV&(&_ymbi`8xM@{aiI=;Nfp~R-Qdl& z`AlFa{xXOemq}|A`F+y;0HIOQFqq0@M|N}nATQ*5XN$c9QC0?;ORn`42rK?{IAUb)tzi0>mvgdByI0KgN%YvpZs$AByZx_Kh-R7L``=fL)|0u&&!7MkP2JggV5D`SULI}Q} zNHu2D;YfzxQ)7Om(wX-F(e^Ib|7+!yE`eq;sQ9aSL?0r^6IhcUg?NO@2 zd%yKHF=a<&7hQW>Q&cdWuv_+cw9ZsKpvcHoJ@;Wyb#mgvKR=(0JseVP4S^;??%5^pP0dej#Tv&*H?wg%%*WO^a@(vX?xPaum#hKWhm%N%Ggtn5RNbgI zwf4c>gMB8S?a|_UIEUi45WCLqLNfoQT!d*QP6<9{Sk_w*LFtB@Q(u#W6^-fuSwA{@bligioGQtoyR$vN515wgYV`^CGxP;No93|8)D z4RABMoy-u4=6m(Q!t{U!M+PM0g)`UT;xj9+g@-NH;i(F^R7V8sMmY?TS-Iqb%rcQh zag)I{8XxK|H#}$GK7meGwm5xR2&C!}b=X9eq&>OW>Zt)OlJeSN6)3MrQSpbi0b2Us~z7(cU1j2KF z&G+<*ln3Ls;(iaeAZs(Oq6OK*w*aw?@$iujo%Lwy9>Xp3TO}qN>sG_g!xt4DeqQ1w z^VjJ9D7RjJk~#GUa-PC9;igUpjpL>de5FSTuj9xWbh$1zh< zi93U;4_B#bYL}tZHuw2(GxRO^Rlp4*|5pO;(2Y^Q+dbY*{9Wh@w}N9nP29m&wBlAp z_;aO5L1gfsD7YC<@;_vrg7xr@^k4W4lMc&%eno-4BnsI~ zRBF4Og3UL3s$m9!x%z`bnsC@Z^=@M+L%rM5)L*^ZnTbNU*PCljN)&5-5MWG#j(5y4 zT&5=SK8F*rogS;)Rw`v29Khwx9xf}S-AI+6&_NF`eH#2c1y9Ff%edRsB3+`UXrV1i z*ERx+uPP#Ixs@!^ImKB<%xm$iV7OV~1j#-(p{!kK1*>g2j5j9tpWxf^#s3w28~9We zQW_xjvQxzI!vCb-9%_uCE{tpZxA^Us`_ENTWYC5MeTNWULgzh`h}UGyOZ&rNKv_XZ zQEd4#GD}$7D@~u0k8YoRLmg-iRAef4sNpLn6yN3&4Jmvuc{iKG|q)YrWn7p zmJ796&hyxbA=J`kYvMn7Xy(LM?jVSr>W0ry^UkLj$(5P_$gMxQzO_#)Tp<-cdTU_V z;u_uaMu*lK{~sDgmPTC*lhKd0d-(4G?ms-@H65Xrh?7C?!A6ttO7BxHu8J6qS*)m& zB6d|K$-(mBU}Dw?}EA>g`p^H8_-cYVN0tbRem7i#nbr0a@vN z?KjD=dU$9(YVJ_Ki_&I3D0VnIQy7wfK3s&VQsCQ^nuEfii*wh!odg8K9Ynm+E5H8w z)WLOs?JhskdUl@vX{{RJnL@fz2?pvg29Ksw9WWV%`5U{)o%$bk5zQhS&Z$>Y)LiW# zsbmBDA|sZVsBZAC2S|hfgC_79l4YH}0}%*Al)g44qeey8FeV(?gCizRb`0z#yCr3#=K12h=O>XF zA5m)dILi$dgHcp-%A!aJ-;pb3VvA1cCOp8w;7pyzy$I3rG{Ji$QJfG zI)suwz2|v~ck74@Y*-qdmv2}89PT|4C9M)n2Dr(rP8u`~D>-l0{M)OUlNt;!XW>xa zX`&CIyLRZj+wmqM!GQ=so-+-H;Z+aIGI19(7D~`N(};j;gphQIol}Iz|5C)gV*&_p zY%<%R5^_XM`$qX#98$qHBITq+Va;2D?}0b?V|OcX@X0bUVW)Dx2~*tid!dISXJ(%t z(k?XVpco!gi`n@nfkm=E;0{dRL{_}+P#D_|#Mbr|1i8h=RI3N!M4y5%8DcBG$J?|@ zz=Z*Qi7wySv%ff$-t3hc8knZy?XI0+uwbV<0aXQ99^ibp zjKD%IBRgmj{Vjx2^UsM|9)wuhn`OfLkObdf^UM z4c>n7j8KK4gkc`F+BpQShvd_e>EeaP*Y?$0pZ6Z>*5(5v9UR(2R`=d(-vI9F+6qSX zpSCgcUABoMAaF%cAU6)*4J!&fZw=R;r2Md&|L8R+U!HStZZJ{bqP`HJ>MP z?M8QO`B`|D(@z~toR0FQrRVj|A+_W8ZLDav&Nf>?u2bvL4Z#)yV#2P4Tw$E;q^KkI zWG!CDG*0zxnGHQ$pvQLIFP_v0Zs+6v6mye8WA3cXzZr9u zR-;Y?_|N?!MhE5ioYa8(nJ8Knw?B7b@w!K)D(Tj(jli>w0XIVP8a;3Mq?m-Wk$Oeu z6ByFm(Ztba1b?BNdx}LJTRq&K10YP*nfjGwh?7Q#1|H{|LuFo8T7GLw?Eft7?mDKF ztx?~nD8n(wB<-FWHF=MFL8TuO{4vC9qQt&lwer#SXK@0y;AAs!azYZ<^Sww5$olEobFSIg7Te+|5eXpGuo;<@j5c9|JH0@UD0X1yTd(}K9D zmD=A+xz%3%YbiHZ<6lU*6$G9-=zQ>K9F?QbHR~%{O>~4aiIC_n#(gx2g(94xd-%?* zf=(Q5IenF*9-}j_ppBbZ^xtK=SN}ZoW;zh%9&Cm#Hk;C72Bhm}BMl)GCjLXVus9ag zl!tLr8BWnh!s^4bcphmZWpH(9-|CeC*s^kb3lTfr%0V%sa z7Hm!-ekCsFd0%J2GHYY&UI~GcJs;k!t{brzOFU=eu?{)NH$Rv-?VRSu0&xeZpCIY6 zOXZsux(ruh{m&r*Oat?uoLtHA#2)S4q?XS^Px@VBQP1{9~#IOCPi(%84-@yQ0 z9egC=N+|Brs>^iBHzCNe5~fZr+LfQ?{GtIvk~*?mcCgz=o3uky%$I7|NNB~dL9w>! zttiJL%Z3t+4608cCI$}J#&KKiC9|eK*Oq`Y@U{^}AUz{xdZdAi`=l$zDs+@Sn@AC< zT!D%ou(|)L;hqzDs`m!9-LPR1^Pgqk{|9#e{}Sx}6w2@YBbrRXEg8T)!d!9P-yX=6 z4I2dnAze9pF38GZ6iAAhndT=eD_P_;KtmKxMo7=%1pdovJ4@3Qn`yp;dp|-?*jIL` zp*G3NGmVzRn(*budEmz0?y0r98S;FbAD)YkApn*9RW0(WN9#+aR;1%23*}s}Y-G_( z>o++~CHE9^OR zKaNlY>34P!0Fdt$rUANn`m$I!h9QHOyA%WSnNPR2Z&Qx15mWAz?}^D~6S(^sXZ&=@ zNLjx*q+Y(h+$1qL)$E^CQ4QXJBlwnii`7_pKm8%vCT)|`1KiHd;#^?jR4=Vj}>&x<=uBus<`~zj12+CISzw?gRMm*Qni`2b&yl z-KUK}^W=r<-mpN5@#fO7_+88T52i=?#~rNfBlXu;GVc>XrgTkE%wVsG(D}(&uiF@z zi{o8;bfx&}$I_4bKm}z_sgmfRvU0nW_w5!U%0RvYtJECso6r`=Qn>bT62RCl#<2Mb z0E~xdFB&6gd3cCWoG&)SPgip1ns0P-RhrQq&d7pzWShMK&hUJ@VtGfZJIdjRK>YO7 zaRB-0h|0a^+mDv1b2>%NnFLjmd&ZU1)4PilI?aN_-9R?|31|uC>Xmq7de_dtFtR77 zS9?RHG|F|b46plMCtRT%*b(2Cjx=Wa3Trb(`0zn@8^A&QKe5^*V%|9hh7lgiEYSTd zM1^&egJNccs zh(c-g`Fc@NSU)8ECX4D>r@f(#FzuMbio=(+@v`$HAeMsuRq~7Gg=`As$>_Uu6`yzqtOy9|D`7T7qan23ydkD%36wg8OmMSpC zfsbY1gRr8!vor?<-$uNMziSucOvYJ*fr@py9UIxVxNh;jD6Pan`okDUnx&PoHBN?H zjL=$KXZx3Xq%q}7?SIreiH~OfK#*$OOM)L?(_hbmqsU2h4GB}jaCpu4@l|ez*~DZ@ z0_rNe4H}M8%LX3RJHl*FyDs)3#WMoffM(DPUG+^`l{PrAiVY-t=fG)O^)w(Cf82g) zn`48US~!DDlg-!5tO2^!o8*`3Y<(?7ze}83e#8Z479c(_Gm!cB*TbeurvOL z%1-7O=G)<`tY6^X30SasYm zJRdlz%H~*pl;Q^F-MbW))b^P#x5WIRvZQVWjCwDLwd}n3bLb9AfOGn}B=X!?s$*8| z^**3#@;j+L&~wF4c5AWZg~*+H_M$@S{ZaMLx<%#Ld_*7-+v@QfXxX}7_XvtsovLS3 zzgo39hr_bDFuJO>>eouckxIvD^-|blabXukXd!?yY}R0)?qbD5-+ zW#(@l>ChE*+`C8luCpkRudxJk={$=sbhFa7{nimR1CtUL3=H@Q;ynn2=0xH-IWi5tYUYRao2Vnchc#;@N(J1AI>AfG?!oYOpcyHcG`hd9NXy zvB%`z(df`;sUC6VDOJ^c1pxsQEw}cEFa{>WP;BN6C)P7283%_k2&C&!X%5yq3Z|00 zG3UY?=f##~2X@5=rTNN%Z^7s?%^!e^T0LKoZ<$gL3J{+w2ot@Dj@rq~5C%nt z&LylDWFh7Tp%^9}u7X4UQnf7{xd)fwy-NH)L%4AnGKglwi#C1obQLEb4CFUrNds1s znS;DvjoXfWyl?EA|4tueua52SjN8BAxKkXndan1W^v`L|Z!8V(-3ykT22gHJBLB)6 zihE6`msXQUXJA|5NfmDH<4#&>1e+Bz!mWsqC|9dbXW)RL@Bt*J<+pg=)C)^UjLC~7 z0{fxRLQ2@UUkfRN-X(*vMV83(M9CJmNg^f!(4dYP1eN_&h6+nyttiM)>i=6nH}hWu z-7%#@0<5 zGh@wHKN)h*D;6xt9%Lqq{qkH|N`El-Rsx*Z1AB^q(=zd6xu@y0gj_(^qKr!8O&^B4 z5%oS)>x~;;n6XZskK4OuR9n^+US7&F)7g@)%I}C?aYc{g7_! z=hJfF=F{3r-E6l@dK=zR28j^)IT;^K`a8+E)4!dJkL1#SR_`-0?KLMZ($aUIPebN; z^%*;^FK{&c=rr?}=1S8SC6C+1K#Zb)A>bZ~`RX~*Bgmxu0eds6xX33!sAo*O{Vi3)Pe9-|ZI6W(GFPJHxHBPbMe*m|a*=5{qE_*yn1c9R9#0!A| zptOlhRtD{2_2F$+=q7?5HRaW{QM|wtrL+Mn$3YfeEfPU~_8QhS)y^JI)Ur{AFDbc2 z`P6%nKewKI&d^5AcFd$>=oLr1XD|%cU~;|gYAg4u0{%ODK2-NtW<{YM`i*HLf z2|K>&PhhGTcjdZ_f&R*C(MHREQ-E>^`V#>P*8#&(R?_5k=yW`(;x&3Ot}L_Ck@yOseI`XU zV3m@K%8Gdmwdu2;yb>&(gbu_+P$rhUg z4}2^C zXBw0b(6pQbNXr+v{=>AqFo4Nkt*U0`c5*#j%6S|KrPUjQnkI&P8H$UUQ(n85=!=}! zH^AH3`6;COFXrSQ(<>m=1X}lY9cyC>1^*&KLCT}T_;*DpZ8;*zzGL7{cA*xE=6azq z;4UYmr9~m|+ss@u$egN&lW1s2)L+(@l|;9ku}K2q;Zk`Ay&r7$a_>iGjh5aXDcmMkVhJRu|w`JQ|*b(%ZlLoX8S z6cRx`b|0YXp57XOM4b-}%}SlFPTgyTyB>V4?7gNq&_o8O?GmchZfINo2vKt5X{;q+ z65$omI;Qu$0+m?{(bG7?P>XPX@H5-o0g50~3e~ne%&vH&Zl}IR8_l|TMPO%~r@Hr8 z=DgxO>NpaqyD~)|=#i`6NvGzdD+)FC9p|E)b+tL&(n2i`ajO`Y&f~R`u}K1(0WVXx z(i#V~l}NweI;7N9$9`=T;u2;;fWeRgleO@Adm15zlGolgLq_jvI5_}8R|K7IbS&&5W&r|={wZIXx8y#k)M^*%V%-67nquK?)Ay!Kco_)6gw zi;fth!$ZL2Vz2NqTIR}Ye)RR;)KgOYD_6qR+`_WANII>iL8@1-P(0(>eAZkz&T(A~ z<8a^W>aVFHROJ2bC!F+Oc_9FD7fx|}d^Bi0A-6Pn3j<|Q9u%R{D}iZkK0xHG z{!@$#BL*~24(L!X9xxvq3Ok}4Fx#KS4JzSLWxo4l+1gv*S;QohFhSh$g%D3bH@sx@ zMkek`+isy#W_M10H2aaO>cE8!L^VC(x^;X~FWbIxnGdKHL_Hna)5H4yH&01?{DVl{ z#5H~eU7yXcka>;|zX%IdFcfeI{37jXvf~B&lcl8K&5qPNEOmo}{k3s$UlUe2jReKl z;-RBu1r4I^5j*>e!QsHh%c0Dlw+7HR^Kn|~=u5H?filrj$(Vj8Vx9<-+4B;T1SB18fGFuQ~!Sa}aT;h%!-=$daw=b&@KcC*+gG#-9NKYdgpiXZxRSuH)m1W`j zODC3!l%g@vXsoCz)!jP%)=XOZ<+@R0K+lh73`YW7J%+dHr*8ZFkkniukzB%Q`)Tyx z$_x6?oS%F@uY+oTRRjIvqyM$l@>%i*^usdMz|hTgDptqfytOpkeIe_}9F&d&SW$wX zjXyF}s?OqO@b}-}{CG^!(!$0%GU^(2^@@~8;y^Tq%IKJs=M}`)Mpquue0U%Hz>twf zHrP^jXuCALih=z(v|;&Mg(c}6>wk|dr{uc0+og^;p{{hc(6hLn)87wK$kt(NC97lL z)UU?N%X$QLqr7oyclk|!CDe;@bm>KTkNOqt?|7aFy$HgsM3?2G61dQ7c9-n=5K}Q! zOwBCAA_Gf(P-3qb31gW?V{R7mY}dfOdS0Z@9X6XldSn%lpGj9_GE)lP1w9MIG_&il zC0b~a=u7VFNOE8Kr5U5L*#qc^22^A>Yh}kNFV5mA?2embm7KN)dwOvWhHJ+nC+#77 z=J{#@78{*4$K!d2tY12%op~Lqzf@&}Ip^NyRUHQwE@Ps6gn60<@p(>4sK*d^IX?;mj3QXNpTv6>cI=}TYF0E zTZUgQyOwDW?L>2*=I83U59TWR6ZZ_F@ujw!BVsyc@i)oc{T8_Ejc(>eMa)CBDEEdQ z&Od12+)Y?Zi^;4z%?jB0896`I1qO}Ex(xHH6Nrc9j0Rnt#Lo#o!e1^deox_{Bc=~d zxW<$eHA%#f7{cctHS&)d(H-@Ef*82y%PWQLjsk8KS>yvV6LzHfp1w^SX%Vq@K0!&) zGeXZX|AB6?;_)GWwn{qHz6##*doNqY7i--KIJr{&S8ccVYS;*XJ)xQ-CLZ?6i*tJv zmoS=2V>Vu1s0hzTneAfpFl?E2{_!!0gP=XZplWioJP}zFdVV6k(g}bEyh-GGzRUq5CTup%HXm%#D94I0Cj{M^`zhe@ZtK%~L%HJnOwl3nlXYfbK2RX! zUU#)2Lz9qNy>uE+i13z`<0+pdHze@c2n_#Oypnf`VzkjcJzJR^soz^tZ0kl&{VW&& zMZI+F%zp@41hQzC!?Nc%w z{9b!fe(mgpKyR+LiKw}(_ViAthJM6Da+&*)21I_|CUm`L@_rQ4wmaZE+lpQ9$OPB0 z$^wUK1QgAjUWa{3o|p95$2f9oRj6Vk*v(NfN|l*elFS*2?s{cnAMe;>rdm1H-MW&q zL7U}IVTy=*u|8=GLrZh7QgFGuTltoYeY1w9|J>$^J@2dOUO8Fw8$~*h-s-W@>dH02 zQL94fpM;UA=0f40Tqgo0qT9eSY`Qr#TdtouvdJx$%*ipo#w-}|%iW(sSs%h2JHjfK z!Eia-d%kxte_e$wvZP{}#m{oTkw0|Pt-Xq4hl(|w5SC5Hv@G~oT3Tryk;W^-*Mjuy zcuv5hT)x*xPVdpIc?cK78wspL1ky;Yr0Sria2PB|t`8Tb-irc7A8BQU8kiyz&u<-< z0)y1OW@Ykk0*IH&J*Z@ZVokyU`Qvlf+G%J_I&T~M0}LIlFeCW?UFu#Mr;zg`h>hol zN;R<`gHH#&r4DZx*!OoXaWZ^Hc{SBSU+kL%#4E@+*t7)e&dD``%VWJYN)<<~o09=P z>oe(Y>g&k@T@3hlleC7T)UaCBKoyA1<&p?z`HMvGCEj`-$*{!7mQryb#eYZJe1xGeDdx#2R%F_~*R zzVf>6Ev^N_wpg*lX7nWoGvb6C<(Q{>?{?Xme7AP#peFGt?QZS@McJ@oB!qU;zvoXG z5iP9?9kH^{Q!BO|!6XKPyhv67pM>J-MD+^%ex#H?@jlku-`XEA$*UCmBmUf1-2d5N z5pcIEpfzt|{cclvJ_`E}P2!N31)VeD#18{30{v5e_$4Gwu@=5i3&eOjF^ANBle;RG3ZQovFKn)LT+PH0XY;Z^E&nZDMp- zsyCWta+(B9ktbONau()1Pope3@&XvM4cV3N3k~3f)76_*IH77$OODcuPCI4aq2`br zPctK@(^Ok(#Wr`5yl!BB7029a-9W|~%_1G2e=PuQ;Ul{H2RY*wQEiKz#F)13gM}~x z92M!91!w#*Bo`3m?j%aA1M{u*2|-Rl&$&WIf$qd*o#7k2_8T{_x?jw8Hv=kh5wRH? zcayqg=ndE>(Z1_7#TtuX44K8A0E2r#6m{W8Dhbh(t8nd9v>u>vfCa&v6O#18%+AYWT9|Bh-!A$Cvnwmh`{lNNbd)_nJY z>N=4qXPv#)Ma7OJvRBz8VgjgLog4>CD=Su|h^npk0@>GT4Gtpc2;_ z>^FnCU1r|;fVg^iRw_(m!Kgk%dyB7G589 z9Y*F)?>=p_-57hYXv~b)eVrmoLR@ zI+aWNND8d2OYRD-tFaX_G=ev!ka z6&qVl%I$pd4E^Zw5r~IC7}~CkR^9d`Y~RW5C0gQiMJi8IZ&)2w#K8lM@2h7z+{Yxs z&oksUR@)@`TB>UqgRw)A%T+z>sS-b66}&Kcp(tP-Ho(3^K311sx->*|B81`-jdb8f zXQhcA#w!vse58T86jk`KXSu`;R}gQ$pJ{>313b&q+6EUqzi${!$NpW&Vi50?5L7GR1Gf&Quhv$4COT}Ncj&sUqvHHrUE(DZn{VPe5PEYrgl zIaEM5o?yf_SIOI&VmbIY3>>gXdmA+Pi*)<}DN}7o|4(c>JpBVoqk-+RpSe0DRV#VB z=>O>RaXP_~dvm$nwu8EAGqI$r9VYGzMt7#URVL|X)ej+7 z66Tj|Tyqu9OG=j$%%y-5MPuzm@7B`VyAi+cVW3!I9>SKF}1Pj*MeuBb~ zKb4O2Bf;A~0oo$>*S7vx&Ef>?p{f5PHOu2AmUM#sAqP-OU_pA$gYIcvMdqW=Ndvx^ zg&zkr*svo-f<9UHgNEK&rh_iqFLjgDN$Dn()Ju(Zz8&6uVsWbHj=_X@*AUu zcgcyVtk-f?KQce_@dt37$bA1SULO;jri`7nYy3zlGuJRIRMe)3yClw@Kjg(D&nH!U zfuJXOSC~;mILH@TWD}&d4#Z^Vo5ORj&aQoY7=#K-3S-9997CANhT3+6vK2hM?V*mD zG~vm;0wmS0;Vrw`$X5&1P_#m|l+NK5!X4Cb=BFT|&5a^@wKGWbSMHI`iC?8GmPfhr zZlS{2A$c$R)cTBVj|C^jR&)T60eC{B6m2y0DaSD@>}8s6ZXM3Hk{UjQv#!Y0a9z#X z6ri4m2I51(yz$U>O~%m~*l`D^GZ_z5w3cp{g>#n|X<>gzuDKCG$ z3TxOXn$0!T>%Uqn#`J!`-v3&b)hwy^9^B^lI_!@|{3S!D z(gfcE`awHCJ_S%~)tXZbQ1$7lFX!o54bN6?O%MSp0L!;EPWh-tpDE!{<`h;RwF6}Y z;#}t2^Uj<=357HVqMp6Pz1I4)l2T@dqak8j4?b(_| zUZu8%EL&gO!Tn8Drdur4|A{2x5nORjbx8) zp|(@jc?Tb7;!<};a6{EH_w>LsV{wVV+3cuMkzd$k40O}n#AzdXsJqqWK~ELS1<>+1 zGyA1&`V?mCXgxbIw#roXyh@UhSuyX(W@YcE<<#8fu#Lz0#9{L@{~8&0zwszr+4(-O zlGIjTAS_8#$t&TeR_il6Wh|YW*c#X!)4<}X&SZ^MXt=W zs>Xm9o1-H8MQ9Ju9@__P(is>iJKM7yctpFl`k9&PljyT@Rh(Vwodn)KKzC(~M?3Zb zufXLH z3oYGyA{emVbDA*U!H!C6x3sQN&k-K=2$=7n`UzUsiCwAXC(9RR6z8q3=Ny<(YrOz^ z7ovx?9G?s3fAMym1_pgC*W|zVcgi(qC++1|%2=X3rWf@N{U}IN=br>20upd|4oc>W zFGb5~w?(&n7>9SJC(u_)n4O8nO`Mcp+5J2GdXn@0HXy*HnCeW5Wj%b1r1`pu!Dd&n zip+xa7i?Xk{!g&=B*ZgxaDg&u{e6W&n}UC)Zh`DgG4fksXA|$pn(s3gAar^*ix3wH zhaEwHO=zRoFO|^(<|$AUyG2dR2ld^f>hxcVHBBY~ulUszs8?Lct=3nnnfdL}kk!e< z`cz}n@TaAY_SPls=k4c{+QuRd<h!0Ib*ZXZFxJj&l|{>k7^>q)T~&uqH6q3L1W1bSy5Qeokd32gmvZ5)3AgXRFY zNx9;yh!~4k9jeh6n>t?B535^sH1*!O>FajQeKs}9UpMK4lOxFbk9svB*{T<~f;R{9 zyCS6*Vmp6_qtC6*Ryi)q_{>r<7<{VBoVzwEFaV^g^3YUuZ8=DuCeY;8Yzt%P{u(X@ z(#T^a6q(=C=>F@kTHVYICEEk&_^oZ8Mc^#S2c<<`SAHM&qDF)Qr%bR0T*cI>9O~Z9 z;*+kO5-0b@FvpLPqPkJw0K}Bx2I*AfYcXNF{!q|VJ9LME?P{#^(fZmeC?Y^uf-BmB z6CioEydon&J)$~yLSnGD;P9!!t|(f;D^<8m-2U;c*<#wsPkcL>~ji)Vecs#|K9P*Dq$DsL;w-Y=Ndsx5j z?|FHzok#w$cE}o>W4g7B%jeDTH+$SKoH68%_BjhL#X8>|<12wDCya87Lt74hw>4!d zwg&J|YtOJa_D}hmVw?9V^+hl)SF$!?e3Guga`JF)(D(4fmU=Xsjh` zGE$uLbLe{`c2|OlmX_Z$V8Qm71#+gohJE<6U>w7~IDA|oYq_^r{R8e_c5d!g<7ZLi z2V>@9qzQoT+!PcX0d&mibO>E?Bsi?*TG?5>40A(%@xnU~j=wqkl-8@VtRRZ_tg1?G zs|x00vD$&ArWXJvqh?&Cn?-ayZT$nqR=*|^gzNcR{b8XX`e5<|PA58aBLgw_P9Em_ zPDG`PHp#`~Dk8hWL)nOcu7y_Zn`Ydhfr)vpwrlaRIhpc5^|iQWuh8SJ2vP60Cj^jl zj*YT^ayu0yZRSCZsjY*wEGy9JZ|6NBAX<6I46L52GY+2j4%|pSeRH;Wq)FgG>Gb&# zZSz;ZE#0gY|600vmhhu=bB5u2>86hbH``t1ur93|BVeOSd0*jkrK?R;Evy)otHU6x zmF3>!A}aZxFxi%QNeHE_t47#14Eks=2L z70Pw0^HCCd_>3)WWz#n4Z`pjDPEoJ}cc%yq?dzAZdziaDq%9buP#5D`^2`>H zR!2g}T=t!#7y%0k3b|ciRuvN7QpD+eY{K7x{~1lHlCf;eXMv;M3CYs$H@22%HKS|A z3Vtpn(J}^WEId_M(Tc~TV{2@~srN6=M5U*^Cb5v5r6h@+6oi%p+LZNP9Lb8N%hwRT zC1rJAP3PRMDw$yTe1uEz%q~Ri-YJ*s8zD}0tUpT0iER%^H9eEx5+T%9A5(*e^f=Y8 znRU#JXuKOnG*dB6(wfCxirQ)oTrAfjWw;L*vnH~_Va4%`LONm*g6DH}&w7*BZMx{M zb6X1QWEj;4^|ivo3(-GU3hOYtxwsAFzRjh&A9`16h5oEzQ*S-NDf6oI&`Tlp<*<4& zTRLm)hU<||KEW|W=_FE=RQ#5QZ)OLtWD~nzV3rjUPVMBPKd+tlm}??A9};Hy%uh!# zeRHM?v2wO(dbUx-5)=qT=vJ}O=Gij2ERoR^#vGQAm4oxG%&FwmoXmQ8ml)SZ(4vLL zem5UM`jLP#j6grZkU24}1-mfY(|3t@5bE;kK+Mueuox9)>=s=8)@>cdOUi#6d#Bq{4J_Y-zjyrqF}PEScTDUk)(&@FR48Z z$>4aT=`nA0M%to~RIL5J?o5G5!78a-V*VXV36sGGQvFjng&>`1KUv(|O(Q!qEx!2d|Eilk0iwBA@)1%0Z6$N;yXMj>#(&2=3X0~;@mhltT%{blAf9= zU?)K&EDH=>;;O7&IJ@5=tmS4^%0s(0lMWC`b|aIXiL)wRj%Rh;9VjGt_n~9k%!59@ zIqUg(TREOd1mrDUnCISVilA?sMn`=J5AF1Umj$XPTW~xbgpEXRbN5vg0AO-t#qSwcekW;cZ_s*gMf7BFm#-Iz}owH-Y0(N zyl1Vm*4cmUKTw%~nfct;_qs4}BUCBN4ei3?rLZz+Vb1Z4k{`}-eSLV);N$V(gy-&I zICklYh+Y#opUH1u`tBj}KEKN4V0mwQwLl?MKk2ybwL*XI5znQ^mZ5}I8vcBwHxZM$ zk*Mg<4!=}0Zx|2T67Yoij+o!LSmqPosg45+_^}^`0N&Xev0kw(5Y|*JgoQQR{dC~| zv#{n1DM$0Pkm_nNT_N=@HoHJ2w}`H6SX}eIC@8Zqe){31p}Xo7W^zgV-}{<*-~q^Z&v+Ztz#@_%58^)x`DuO)NY_`{{cA*7Y4HCQ0M7VLJJo zS-gX!!O|u{_1DFF7{3WFM%*7BxZkl|WFnr;FVkEaS`=}UJD!$}_1&-7u4jLs$MO_B z-UwphVC*POmp{$()~mnTML4tBB0M`EX5BkEBQI`;@8lgyY*@6=hrNI_DuD80Dvwk= z$q)Eeu#Ed(ArteLh8BYQ=XNN1X4vObHHu~LdHxgm_~WkJU-I$%#y9Bf7xvm3YnnwR zb0wUurrq;Q-abs68pcEkVd&45FCv49vr>)KYQ!=)kbk5#$2-d0DR6GunqlP`@AX5GMV&y4IeB`Muvj2C)2Ju0P_S6URE!ulvGqTu z%WvvwS=!Q9=Q38VU(aOrin%f9qU&ILp?MCRGTkBQJQ zrf4uPN4lX=1|&#`*AnthAI!mThB9K?HKa>nN6Ej{+->^^vB^kJ4anC)6cz~^ybNrZ zQk+F+zlE+$vs{5}D(I#cZKF6isNVa~zIt3mMb-4kNTi{{Mq%ZUw>|N(iY}T}F=jcvYral)w#&t7gwRFK?zZXWQ5^5d`b5R$ zY|2Gf-wcO6B;YLjv$?>GLBu-_u~HlKv^1O8uajQp%VGYM4CTU%7%0kx17@W0?({Ba z`&So-OILkOnXXr}kSqMdlSlO6^Ia^tb%d=XgT6Nhpi+!A;0hX70r--e>Pn}#u7S5XV#K$eh`u^ ze@FO8fNm9=zGF?ZxSR8sTf{4CVS66r! z7J%J-)8Mv^^6guAN|mBX`*F6nZoP4RqF&w_#WLkrS$qGD>$f8{R7w8CatFOHYjB`_Jw!sKgIlrJ^mBKd& z@BT?JlRn`eHR9icnZ@(!ueD`=ejB%j{>xw{8jey~9U0KwEVG`q|LyOQalN*Q4-{L_YgDQ@qc!ptm4+ABVlGi2%WuYWt^zSjtDPqi>iyE4lEUAxjA zz-3q>!NZpNi`kCGj!$y!23APGs#+e;2JW}=k(O$nSnC#?>QWdR7D#N;s^7F&E9OE` zt(TQa`t=X!-cK5dFM3y5MUiNpn;7Egu$!!9CnKMkqi%u5R!wcS_u%K(zVQSY@+XMY zesN8iU!MXQ%kO6Kli;5$=1$0V%u6e0w?eI z6DXU3sc!eTC&}dBJuEGvsVOj7z4Zi%@zyqr(t9ws?ba~xZPc^eq#IeKT18TUbfbxx zqEdKQHnGmnI|_)2LJR|uH8FADa{sy#lgv-$^b!0RJb@Y5KYFPbl-4_+(Dyo?oM71E-U1}=IlwNzSGm#4l^MmDAReD*}^!rbx(t9KZ%`|B3 zM>1lC1EwV1ddB&30oOm@1KNkUUD$CGJ6BHChtxuut^iGeFVz9*i? z`K1OxuHko43Joa9Cn$V0A?c5ZWIMV|PN@6B8lgW%phxy4 z93!?W@2VqU)vcEOQwSxz$;-^K)N&~`U14Wh2fiZkc!l~crC$39*cl=WW%L5XIcT&< zmo1{8hC#%gTC2+$$xFYhy^&N0dNt>j=}aAAsP^(5trXm%yXKUcs;d(w2SsV@sQ`(K zk5evh`(XzAy`J4=XQswJppCzo+7r*th7wDwP8Dx-+ugLh9E>gWXR-47Feo#&n$*ry z)r_n=rZCFlnZ`+_3!;~RkI$}k@FKk>3)Ud?nV_tmYjAPGt~naMKR z(Nd4oWL?Y1HT}KdmV&3=>sS|WUB2tKq;v}?VEv*XXnHaN_ z_Hx`{Pym$DQ`&W|NQ(2x=j^u{#uQXBWy$Q*ylYDVUfch=F*N{TF-Zxes|bMBZj zlNg&aS0ibnN7(koayL_iH=`e_#8l>PP1Aq^`dTe?<9QGYaKdw>xHT@uf<)mT4K4rO zB%a)LiYX^xjdE)LG0<`uI7>Nrh`iM3s)ISeAD+y{K3D>To#Crl_&zzu$g-J-Inz2A z#nwSI8oM4b8gaWN^96aX28Tj>` zJMVS-#Hv26Cqiz|F##RIV*8;{$2(xh>-MzC7 zzxACi_*!!|Gn)~!*gHj>OAn$PY?hVYNxwn@_Ca%UXpZ42`34nnf-ra+6k3$ezk=l* z=?B9RePFf zw5pU@)ahS`^b)~FSe2eRX)W~lA`!NC%k9ca>3Z!2I4`4?Umj3@KayDW)j?^iw}N8R z-i)w5RGazTLGPEQ9_XR9OHEy(S!}h`w5HsARvUJ&gKu!Tj&sLT6C;l9*MGWw2gbwr zq5>ZQ6ZkjR@5b^fTqChyx4Ny5%M#UG|B0c+JaI3WfV6A*UY8IYJAV7ST? z8YfDS4AhoVNQNR!Mm{iOivWd={PdP@jLDz9+Kbg;;jwax=9>zRR-pp{#aa?rAQ66X z1*g<3>bc=NvjDk;AZygMvFpNpd;K50AT}hJ5*V1&&%%WmNJIVF@h+Xa@xw9V2xwvr1u>oZ|F{Mp9-;xGvy6%N9LF~7u z#hLrlp@`wgfLouS%5*iTveN>DI+E%ef zcB2wekLX|d&COBU#(RK@sI27+#&2_YdkD?OU}6K|SvH#>6~?bET-gxJkXX|FL2^1Y z#&D`|(X!apHB{`$7-`AZ+trS42V0DE*xFAFffTHnoYM9yNP?zu!SfA^CK6%0G(SsA z10+J>A;X6lpZj~w%{3DE)2jSV^WbFFWGFqdG#+v;wG?an1`V7M_F4HY29-7Y8hSjJ* zNaYinKF^`c0~xP?$H`YBQnAOi?5p?mp2%YeR9eRWIgOX}hM2b(sEjjX)=h*j3)MrS zTJ@||M$=82+RTw)*7Cn=S#(S%VRzWJx78=xpV0VO&hY!N-@N7f7J#?hw6C;y&GI9K zoXwk7q^_+~@!&EclP(sIvoe9wO(Cn)`Qc-We3E&SD|Oc4j(G(T+a?ZAK%U1XSsrWGkwg(8FlP@yja5b?nq)@n1duUozEUG z;&~St#>Pa#Zc!=lrtSwZesG!X?i{wL1B%s1#iIpuSfB3e`WQ|=5>nK)1HFvt*BT{q z(U}gc=(cE%?rLJS))V@DD-ZKa)k`iZK(I(#|4*j!CslnOr&hs-VW=Mt@n_WDv<7pt<)KT9E;w;&P+T^xikD^ckw zb>?qUX3uibXepr-Fa{B{#<$3UU+LPoN@k;GNtEKPMxO6Y&4K+?U#s;@allcz@^A+bR=3(;rex-b5 zf!Xa8K8aI*{zFoVO>zrL4aEB-!Wu(T?_X03_ZU9RX?(#GC6V}U9-hWW_)Er1j-G40 z0r;es)1{~57?>MAi>Cg@gykt``C=q(k(S>l<q(fHiedV!ukG^L zqk=-0F}&hFNi|de119owOxCUFXd46`mK00MGt>$fCu{z1GX>&eS^LYj33`PMJr&IU zJdyui&{C}^pvkQJX(qWmc$+TAiY=hhLnn*Q+DPbs!p6tQ1&gzc_K^aahr@{(<8{)@ zI!NZJp=j2Z-)ZqM&-d2Ms^@5V8V+5Qx&K7WQXX>_$Smt68UBAzpQ=72&nLlxH?H0OsTVuBMqasTh@w`Goop%!SzD)-nk3MarL9XZa z;zATU8$ZUeBj3u^@chIA>Porfd!iv!X3V3Z#7iF;!w>{wEY_}|%qw|fb{~hBZ7X@U z)&gyuBfYtDys&vA3_i6O%VN_<@U+Co(o{M5Aa3~4*~Vw)1^q?iTx!k?k{kn&hdwFo zD-OZX${VRUN_F7rCU!BMpnk&rrJnmZ28*GXJMEjx&FI0I2u{Ee#s420|NlNVUK@*A zUR_f`TJuWdz33RJNE2{yIsnnmfLIMAHKM8bYvK$GnlcP@^oQ~}oUD)JbZxmQTj-71 zFS%c5Aa4Lj`KM9V*44;zR5_!>QV|$}P@<;ac5Q@sc?;~E9_9WWlkL5zQ=m3}83lti_AD4dR9=lQK0N;y; z{o{ipuY$mY~$ zi|sqM1?=x@omDnJ^mQ?*mj-^)tm<*o1XUK9KB0l%6MF0)px&Cy<^ATKh3ALorg*K3 z_u!J=?79VNyGFpzJ-$PI-yG9jlJn>-gQ_LtAE9C62Qg|mwLD-uCy>ANm3>A{=7z$E z+;lAO*+t>_P2)hm4aJ`uX%z!w1ZqBsJU;!y1N(fE(rYP#@L|YW1 zXHr+Ewz1j12s?Mm81icZXFxp8UH11#?RoXSvxtNEguzZ|e_KLN9WS{%)M3Dp{P!%Urb{Eql4ZB~n zJOgSxCpUMU<4JKf)t}c|@3#<9n1Q{EE_RpMCyu6SR-)cod)s7>=DQTvAJu$b8q=2djEiub%4C2*!k;LP{fERSp51^e|G%s zQrN%H#iR_vuCd*EHy^W7e*tmVyPO|_BwZDp8k2;vA0M2P`_yWVSK7-t>Ehz=%zYQc z%={*ZQ33=pQGXG{h0M0xWbZQDs z`K1V{3)Hog#rS~9I&xU5Yp7YFK(k5d;l9rlY4JhK}^ z3^c{YBs*HH26cqPw<%+Bz_shM&3ts}+Uar)`>48fk`~^KGn9R&XqmR|-C3R=->%%z zq>Ibv(8S9wbG4-=oj8U7D8uae=Mi0Y^;S&dd2x(m9 zAN$Zac2|=T%@B4I>(TdWR-`I#uHkm^8@Rns)TrSaZV&(7AkF$)gS2OsDeFAOiHID0 zZef8vogh(y4vj28jC6o6>+RL7_!O$6Uipe>uiqOOEDMTMuX71f`wCi4D)32mi>ZxP3yY zW|m>)`optsq+lbP_i#)ALhFaeB`1OOyz2{G9LzQR76|)l%US5~ypyy~ysFEerQ^Nw5PeyEo!xV5O-(1 zLEXs#)SXr9&w7Qutg#&M2+FVde+V}Jf71OKC?%~qx-rEZT$^I%%@2Jx^o>RH?~ST@ zoW87jNe?2dKhZzR&+&C9SojLRKpv&&7gONfp(|cXOktU{z9~72cm>7|}>? zslohtczE%SIa~{ef$6m9z@1{n65I=p2HeKExoy*^i>M25*VpJ{O9}vbAHIg(QGY=1 zF-Y<^(7VgYNZmE`E_wsKA31{@OV<|x=pB)+_V3WU$Tjq?0AHo_7J%N5TJ%;;wM8C(npL4re;MRsNewhIymOM1mGtRxSq{1p^-;1EAeNy zJPVI`dH;*(1NXzge#K%77ux=^?`D{?bYi+6W*8}$87A(xYbc zIu0jGDYQNAZUO+j*8#x0;|$J&)3VJxgT!o_ud_56p)sy+?-v)bNq;^@Css?6%RxzG zH^U+XYv0BvJ&{<|hmr2mrQN9e$3#>FdQKhKvKx*YRvGA9^!pc~W%d?4t7_mGiM-~a zEY&hV>@sus;w)vU-nJ?!Y(;HW!`p#ZUBdau%m!v;=OKY&V9?!fxIl#&*$1eKOL z-;L}#8ayx~yMXxo193LyEe5v$8wb2JnSj$gR)uB$j;?No^&V|`NuG&w<_jedY06Pw zS`b>rGaqE&%tG7uIo+aUWcIYV<|1iT~-p6XYF~g(+W*GHJHl)Y}&oc_@ zrkusQQ$owM(&klCFf&Z8Cxt>N{&zDBx{c#Oowgh^r_Y}A$JjNRWj^Up>l~1(VYe%@ zdWi+A|Ns4Em`>j^Sy_6K9lA*66Lx@94gX8i|{SSK>>|PqlEM?x?=dMs7G!$_> zya8z0Q{I2a-m_{eSVyNDW)73T)a!$ca2qKH7f$Kk-{-+Iqa2<{Pn`$XH7F#g~at) z{ZmXON#M{zbCr7ErMwV0Y8PH`t)d%8_h#^?8l%H;+b}2C3kk;sob1rZAceS*yUy#r zYQLQ92Y{1ZaGx-b&@!%s(1qh0{*>4XDsjwyb(_@;X%crUMf-Df80~Jku|KF>Scpqr zD}WUssgAGP&qlHwDjJC3NFuzPp8ECn$sXL+6loxK+Rm|UkewGIni3TKcsDW0g3--JeeWvQxP)V{##1xHMLe;yvMsJ&%Y55$f z-J&7GyoW;&&Z#Ib~} zM$UUelW@NMMPY&S+Bl70D=Hbm6wNj*Tu2YWGMa)2TQ740Gah5;EA_F;eE(4LJ6kj{ zyy#?I8UxA<8|}z_Qo3Kr%{s)&Occ%8r1RoZ+w}Dn4BazQj-G+J^3UZtd zsS?UcDy#bd6|#eywO1?Sm5;uw@^oI&)Gx;7+7ol;aQ2gk-?{&bh(FpUlNclfQ6mp7 zd~TLvtLmTO4p zWitu^7n`=JEQ3;dmNdDm4N&rm^&t$4eTc_Sy45}}71c@?_ zDkch5Z;7ESLGB7|djcE~5H?bJpg+6qeG(W{9~J)?h?DAZfbCv`V^fp%mrxmfh-(E8 z!JPCctcE40g`~P4Vf+sj8%nrHU2bOAyHKdcy+uLCQ;5`XX4 z$>G5RPN}DReV|K`<4*$*5`GQ+RQ1q|qMe<}jwDu*k6>HP#p^(6mU(zO7x-GdKBKDp zC8vkjn@#Wih*`)$!kgi-2a=z4N_)<40;QMdAFXTk^*G>ZpSA!`CBld(l>{SIc2|{- zkxm#FA9!EXAgvJhuUtI7&f)Q5dbHhCA(hg(I6hi9&kNwgC`V^m!|Ie8OS|xqzHOVr zu{u-KjTVOc8S5iM(k!JOO{MYhzVtBi_~Q?xjDL*36Y`p{ROg8B%w{*XI{EB>)-HV_ z^EWLFOEp*ki4?M8vZO;HLE4Q@tLHmVBYF8srEcnbx_W;Rv6~V+WQxUn1W0;VFEgk(o12u*N0#3@NE{y+ z6=?ji{nfz?#r``YPtDj~n)Mx#-(o%7X|33V$gnrB>?C!P;8R=~FK9s@`CVr~JPOQ} znco+T6@V{S0WS<)y&CXd4uuVl^Xm~?!IawFzn6Ln^$8KPs~V|l zvC@gyB%#g|Cwroy`BBkNw0MAFmRC7IgWZ8G(A3ipoKp724CGPvjkl8pyR=g@l@jE0 z-043BeEiDz{6))seK&^ml^05DNT7LM|B1DaAKWXiO2(EvD*HBtp6>j1|4djtJEqqf zPy4DXYO!i)Xs9cSK8M;P9y0PO)Y)NI;L-8`Tk|2AyrzqT(=HtYM}c?;OSQd{$Th*Y z0@vb`;!M9+jD>1Pt0mP(usSeil=5fC$t%bNY~wed`Nl8oro;5Wjl%AOzH{&?siY8x zDN{jZMa1|Q$~juCPVYbJ21!>~CNgHEg-Z(uxHpGU*}8d5d!(}5Ovzb488Baokh6XK z^r!R%x7)UeX}yEi^||%AEd`gRD78rS%8SvKAQvXCaYd(--n~JbN8?L?^3`bt`lk~p zs45-9`C#-_)h)}N-o3sV+jm4f3cme;r}6GaYl_*GPVYz~Er-oAx9HLnxN^G3%tmVk zfqlPhwCQHwS69mfK1v-n;q-k*Y^eIR?=Stf@5f*7`(uwM1gt{%Spn7$IU%i%B7_6? z&H5wd; z_altA3%bpsyUZCYKm*0vWx%|T{&U{1N63XkCmx_1rP(`Oi7s#p8=nQw!$ zo*#ciBOGPegUG1(epxUXX%T-zDM?36?_0byl9-yJb%v-2 zH_Y|}lYi%c`Ken^fa%uV&TSyy9WYCP1IDEaSrP)v2}bJb#5XbrCA+K>OFdQs~Cm&laBn+4b_O ztd=mPp`j=I-Vl(Q2K&s@mJ0*2UuxU4v)>lbFEn$du|qe8TvI>LuJsitB`83#+o!zZ z_ph92{NY?bQdBb!+!26fOnHr8t^0$Z>;yg+UAUU_JjU*xwl zp8cG8KdiOtu?o`U(wK5Q6MwlJ)2bI#Pu`_roa1!)0@mRdFj6<3+dshQ`i z&%w{cM;|rz+aX59+hhlFF~P6k|GXdGu)Uv%W8P263Q>@H&?t~IWvHF#mI6_Zz(~$zP7^tLBld=jSgn5^=~m7x))vf1Y7ZgT2&@ ztPpsYM`5t*bu!`E{iv0e!D^*TRY0wjoc_03sguK&`EE-=uSuQVWJfx1Zjn`q}3d>qRpn6dsWJ&cvrL zE5T(FZA4q4yd{(U?4HQ((v`Nacjyy;zTeklU}?kAqdcrqPp7#3Y?y=7YuZyJQZ4IQ zsokmhS@P)D2@?;hfLpMR$zjv#kAjj3tP_M20%|}y$LFi;MeGECWZ@shA`wi{6 zNRzmpyti~D!h|+&d#6^d4KM0Xon}!i;vOhbs;=K3bv$kr6dmJHwufGFTfbk4cBvCikdT7_{#<~kwhf-%= zSorFX#(0?gW==OT-`hgRQ*^tjyJmz=pK&_-Zj6zi#!7Vdo4p4G@#g3J8p8$UQE65T zei+k%4_YQqDNl@3uQ~V@7zeNKO^!Bs)?ko0VNm*ud{1Bq8P50qdzTb;HK8AB-xzz{ zB^|N4(`TO*3Uo;WEH9b+esoE-ahfp=F)l#BX7EBDrNUlK^Wog?yWg}g9N~Z%ef?UD z{@{lgT?{VgT8w@Mh|$%r#pvlbVsr;EE|0R+zF)!ieGK(;!lIr``!p1l2Yf-^G1RZq zmna*OXLH=X(i8z=^t1UA$oXwRjBW)Jqhs4|V(jX^ry*Ur(Z1Bd!4-K`=Z6=T6_pH` zFbqvjtg*yFbu+^*Mmh&7aJUN};{Ot((@a!>(N`zGi(e)OpJ4nDzfi!$FM>DXmk$0? zCCld~NsT)XRWv5V0Pzb3D2OxP;-75ay?DjgVez!@aCLN%m2D$b-{54`z7nCMrrHfj zQ&VT^B%Mdr#EnTAtWQ`-;luGhYoO8t0C(q)iEG^u0#e~A_HabRz-@Dw^yM`meQC3? z6JubPE+GkFhv#7B`(zK0?#KQdC_{N+CkdwL_BPPhQiOUZfn(97=Cd02*2Hr3gvCjun3&&2F+ z&m41;A$5_L@L9dE7;VD?5R516&IYN3;7p%+S^G^DJLZqel+<~86glc}piFO^%6R0L zXwo~m_lo8i?`}9HU(!A1)>=GtcRl=~eBC4sx@nS@J9$pN00&;Mz9?1NYE^L9h3_*$ zN<2qW$w6$mJWV-0+rQlxA26i`jcesNozD}oZCsj}wqpZjk-$ypzOMm1>8uxFRuRkq z_m0*q)VY4V$RJiuGtu}qz{I*iJIsGrVGuKwVBy%RNRL{{fP$|VP5)zAmtAgAa`ngL5ol`tKz*wGVuql6VtA~MP1$WtZBhYTt>c}jZ&oTYLP2M;>lp7 z*vb;S>_B-2NWM~d5Uft_zJLzagnM%I+F(pPV;_A?F$~^e>TXZq2G?Tl`&~Y!oxGG33o@?ZG&ra~YbsiC5qN!Hk`xS=Px%q!MdO{3^%21I=x-OW;x|Z7Ir(SMqR`5f z24UV8sZ&~rr&211<3U_fXIWS4w`yD=M-tMuG&+1cL}r#z)a zfl1Os9EFVjm|iw+PkMOV#x^8}K^(xE&*|VV75tvYcA}(j)jG^VPI(s_pxy0mXm?RM z5b#4q5)%~&(C%$Fw0m$Mx!r#-e#`r{-3??L87$$7qe_^{SzN~q{7ZT?!UGMK9!1Gn zj1*f&1}OJ8NLuX`Gv;NIeXdk;rX`kE%Z*S3;+Y!@dYeQ}+2K^uOdxRgnrt7&Z^D|R zDx|jaW2tjyBEHR%qLj~stEiEwuCj$$Hx$HD9`q8}Qw2Hh3>qEpRg6OVJP!*c|ApmdJ zj%%rFAt=UbuALX@Xtm3*$SB4XX6UUnCF<`DJ<-xEK1ZWn$u9i{>O?wTq>afcM;7fR zqoSbbc={grz4R>Ek6maM5BR0Tl!!a#MByVGx-Y^$G?2yUP9hFm#z}s`+124>h4N&X zZoLBgwVim@(+qo1ZkJyb^JjQAC^|W}fV60aykhzK>fNKf+dj39NFyl}m6O3=s~f@Z zme9`>o#Rl$Wp*r!D$2iZmjHS~sC~&q)_jqSO}+CDJ{UpWem$c)o^+K_(a~LkT=yy- zTJ#n#=!j@$j@i)mEpFpgG@ym#FZwBmG-2)`T9b*n?)l5{+6w$k(7IZofhnoe)8 zdO`aXTj!qM_poRpN<* zvYOMeb(YHR$i>GnO%>AE;Y#t@g_cG}d^p?+?B644+i>2^Z5ILVjq_!`3&TL?PJGZW z!THRM;M{&|j`Uh^KDTcdnu_WTb(-TJtkx!FF4nuM5*;j`@p*AW zs=o_&`e2U&1Jw`Q{Q9y*Q3W6I`~cPWq<43Jfa;GcnrVpiOic`L+Mz4C;Lbf=gzGo+ z+pWMgP3Gg#IKWiphr4u-LFet-l-f6XbxhFVkYKNNHm(k3P4TtfC8j z^jzHYkw2=;@m@!wp9{ut^Vm`9&amZ*pt}qS-cJvDorL8TXl}xAYK?(xKFE#T8n*QH zQDlL~ozS$Mwa<1pXnI#;h9g}9*IYAzrt^LAe96(B0U69R6^!gmLZB~X z!}fiqV%`-wUexkBec*!iEkz8k88!XO_f(qY`XCwq8CGSXmyWuHt}RoFOaUS z$gt6RQ1>=r4kdpAK%_ek;D+fQ{zYL96S`piE_9juP3S^@&t|)h{Q>t+CLJzEyll|y z6&K{ftf0t+yAu4pddNxJoB9GBa!oP-hCHgvL^QjQ0= z0D{D}s*6l4@Tj}>PcLvP%UNwqkaLHurXsXAUrfh+6Gx0WOMWeRLnrzyC#Fltc#>uq zXBd5OM5ip@QwpYb;n!HxEt+{JiK#WF`yQv6Kjs-d8}p6YMIMXzeGZP9>dKG7+O)of zbV5IR2S2a1AdVYHkiDrzW57KBHR5HeSSnvmElX@@n0G;UrO9}>u`dFbz~_faO461v zuM5R@ughyo07?IvEyiV#78|1$f+cx#Np*{>{W6Na!y+>?Gm2hAUI78LlH&(N!@dRJ zb*GwmZ;9tN0;m7Ksl9>WjRuy`;_&M_TraXO>Z=R&>sF|8Yf2(te`*1Mq=!QMmP=Yh zXx9Vk@jb)gy0lR|GqiJRQ3k3AR&01?03=;swji8DycjzI`k{7?l0rZ0b^ z1zqB76E)*{69w2+j}pf2LYKIfBh`-wR4|tA^xu4{Ztyu)rF_A;Zh?}Yu9Y=^*bt#O zCMeR|iR#+mbvA zQFq7L!FHEplIQ0a7VD3s3Ha1sYU7N&LK!g*3ldi{4(u3I4;Om&kO2x$t5k%jy208@ z`5j2FxCYWkmXAm8HPS%zkbMCl-QgPmq$gO9(l-Ui;_66UC41ASiLf0hEcYdK>35q* zl+q}fh-~Dxs5G>Ci*v5B7Zlu4$qd)WFp9Kw+E12aGYRD06LJEcGI8h>7i7?;OJ#Ha z@awsnh1B8z-DpHtP)V4DEykVw?Hl+_yka`2@w59&0ry{Ev)C&Me}%n-ij)P1=66v5 zLKrG~WMg7av1eQJe{i|no_b8mAu>p3*2z%}M_X^ApVM1`h|8+)OAb$RdYuQQ`;`Yp z0P>){mgvAc{*JGJ#^HP}wPWt`{s(3fJ?!YG?IXAjzPZa{6sWl*D!N@bo|?h-_@}vU zRk^s$e`c6j{E-aviIXhs13qy8$e@7dh55uq5Yf#j;FF&d^4`xK*X6$TXY9`TUc@N= zA~>!u3p}ygZA1l#1Fjr+$~?$3$_E3A9CURYAGhI4vT2G6S5B$@6u(#~DcL6cTk%V2 zRHk7B`UjtRzdpRPExjgW*530=Ui`ByZm5#EV@02a`*T`v1$6NmdY{t^H)h-H$KgoJ z#l^v1!j%dCT>T>XQ~l!gyZXiB##zn*%Y$-r-t9&I$2@4_f13w=*d`~r-l5gg?$S{nzJQxx;0^hoeC#*9wu%D9W<$e&ND7##sy`-nl&Z)^99z3+M# z3G$JCI};HABUJ6qAA8Po^&2hC`aE|TH(~cx=ntA(zsKh*+DpC_T2=G6bpngOzBJnE zZ#*}4Oah~&dRHhs$(X&ZdK)X*&l~t5t6@zzr!H@c;&VZJdTilxmvHNKi5{p&XCy8ir)e*X`Z=>XljR$hUN zEhy_r;x3`4kxgbt=-JkRQRZ_?btl8`D=ASxy1>PZz2kZj@ChBP^z*yAH5Bk& z>t_9LX%xaMNO0KL6(mBWM6v53sWeI-m}hRK$%E|-MW*5>fMupWWQ{9)kHA%Whl zFHeW`tyUyP*^Y)uZ{2-^bITtwcUk)noPeAW{^^kjq>NyJqr#v17I&R)6xfZ&vR#EL zZ)`+e?SG9*N(zetUmcNOLKXJ4TvzJrtU<@~3M;${W4=atX7xwUpeI>+65#V7a_7r> zDlbA4dS4egBxLqFlB*ToIy z=TJ@`u}MoO$TW@-eO4diBQx-6+>s*W=Atjbakj%2m{(R<^6EG&hkgd6ZohE5CfWf~ zvs3HLM~39H4L(r-b3Vaexp`To_vt&@#=Y7MfZyMV2-UOl_jM|&P%kLMtHZX*%3-r6~s!*CL(E_J5%3Ax8Z8fU^ZJC^X^W~uJB%Ng3~ zhN)XZI7+0h)h(@Iu*Bz!I`V%zR;OuyAFCN}|0iSh@sYZ`{r1aD&F7QIVELBC2r;4@ zlQt@CWYeQ(>pgCz$dVVXgOwQEwFhpQE5i}olJ%GD7;dYVXBFUO1;Ix%E<2jLgXv?R z{=@*DVzkyv=S>S5+2C-uHcS>J!2U^^sGaj%{KC@{r5gs1ou7Z z;V3Dj{iP?*6!&oAbc@Z?|32kMY|hN?$pF%pfg5Q{Ysj+`Qk7Drg$*iCR)tTOujyL4 zpnEtYC-H(P1{k${Rw8fGDglytSUNp1*r=!XKkn#%m=&Iz3Xx`kOSrLp> zsQVCC$&fy23^=x=B1TQ0heMMnOYOjdngG?FeWKu(>@<;%K^l^P1(kLO}sOHp|I0=&0UU4n^| z4-^}-8E?H>x^c9%SE8ap%t$YD$apj^LE=z>8h*AHI9P!FpAXo2b8I4ElTA2H@_!86LZwmiOT?ton0u<{wSc_JP4O7dCiW z+jUSxd9%B}*Y*`TvkvrwGa=y8{AUFBYcd$(BFanf4Lva4H>H6gi z&FCP7bny%uaLFS^xfI-fBs#j@bCPUxVb58HBAIDEvTf<%lXE1f=U-6wq>Ef`g;6(QThH>tb(tNtn)X!RtzF5Vw`jn z@z#<4C9FNq4VSK$4ATOj>L(V@m)M*3%gWaw6@%XfQ0g_k_88`*<}Et;p^!51F1Lzc=X;hkYPvHs`>=a$-|&O09vZuf$&n*z;gAh9qzCZX9D z{AUmB;|Qg2%?K_Xt8N2UjyAGhU~Yt*z2|u?qopAaf87syq01?9Bp>`r^T+{lFM$N- zW2z(^aO|X_;%sUQ>Nqr9woccD@`zjh-3%r3WGL{+^De8^5g~WO`N<=<7X^qwbNHT{ z4r~$3<56u@cgQ+#DEXD6!iyUwrggpSg+)9e4-s!7o-RV`jf3E?l^4Gvo}1}Hfy_Ll zLLJ474Md>_LoX*~frRITAPL@<$up8IT@eZfI9hJtbyA#%%|+|s*j<^sARErHoDDMs zI|WsJY)Iy;=&@Vsfyy#+iGbDdDm$+n?YF$HkIjP8=17x#V=6rACi0Jtv#6~p%cC>d z`@>Uai3SuVQSmywN6SQ=)U_ERzZh)PXS)`xn;`oG#uEA4@l^-U(UGfYm!Ob6OT|3&t6)DJ676E#`Ms($&ma=p)-`$Zso%6RN0iUDB+Uf>uhPyls)=*~!?D0FO;L~{ zuC|wA} zove*6!c62v5Zxg z&?2G;X~#I2$a^W(>Za;%+;I0RVJ9?eJ&%vDh3{}h&7I4TKLR|3@l=RJGAdL&zFO^- zF_Tsmb(!B@qynQaweFjjoi4i4`pj{&L~+%M|G$;9t9cKxSf~_@_>5iv#gdmgGd;+o zg~aB))}vJB!D`tkFZ#;-XP2a>pjot7lk zZkJW0UI=WJi|Ltu*cl*3>&oes5LRW`7kG{<=+Fh8a_z5L`1)ze^}_;HvYa2?5x_he zw)?3WKN#b%BI*O1-C^UdM!Sib1P^h)!GizT(oW*7hrHxZNqqO#rg0XG*k*R_(2tw) zTKxiGIo|aF^Q0)+BWMtY4)zS*tfHDtxa>|*Nk97g$u8|IwjsjCMuwjQ02TxQVBt@H zBf%$L?qKo}_-p1g(e>_)dV!{LkZfkI1!D908uRG3l@>{VIWTr|s8ElE{^NJsB3rR! zPv3b%g5zn|SAC~5pzplzf!8UKd3%9%bLD7IX3B?C+8^h{cv`D20p0c1S>Agl$V8W- zkrGuUr-ybH%c|L-%OWmd=_3ndf%q-!LedEsm5K08KRcH8{M3l>*67UdP0Bd=q11ew z?yRI`g?gPM0dBht;UCtpsWe07{Z%}E3bk@#Y%Mk#Zm!t8aXK>|6ZO|+3mV{J7{6>& zGW<8dy|LU2(5bA5Y*TLG&BV0E@i}{` zWV2HP5BXVMpn;1SK3}vIU}sSk>I&*s;JWJ3xj-QvsJ_UOZz$ZocI5ebB94w_t`6>HV&UX z0y{J=`f3O6?iN9po7`A28GtnkFhmC?4dCwvkW@4Z+W&m-o6*ELTxu7ND-%Jo`fQvx zAoQeePA5apJg_Gbq+z^2Z7~i&i_IX@w|FOaC%c^(59Qn47nmPa%6QP$BJ2CR>`BxN z`IhpocPeyvxed^-6$k%bLsM>13k_5oK>uOD#p8}?u>cSSP@(#(a65I*Z&U81ywPWt zi-L5w;zV9wVwz5%Q;U0Zz9YNq_zJ2~}w1dxt2)izGo zsfZ3t&pJu&&2dlX;}o~QdHQa07w)ASZ`3VD&HME>91I5Ca`+xDX<}jWg&r%-y;`<5 ztXi@nuBOyn+KC=>OO#zJc1&>Jm>FW~%e^#R{4aIvt^VQE+ zuRdFNBpbAyK&4AM_e*4eq!TES9Y{K5+ZnO~ZpH?$w}f#VNIF~Tl1}M8NvGQfriEzB z^gT&ua(jIO)^5ylj{1+Mv!Wc9HWIi+jX?}Xj9DLeI#Gu_okn|}PPa&8&eLDA@$P5C z#CiZtr;x8|BcSP|b63iSroBs(+8b1Z<2;fWAU(h|ijCK-Ut{iW^JdR+-?tVGtlF-q zMBSY*q53$fHxzhEu#c>ggNJvvQ=2Qy5&<4zR=JFPs|ny8=-d^Z+Uo>5ccrY_h0a}> zC8W$yYW6*y+aX%Q2uOu-n@rO)F@|?h7QEipU~EoRn@HWnvGcZ{;(XsQ&Phmk$~foQ z3H6P{_jTRPv*?8Poy~1Xbri$wu#@Q9(dtlm)dI5Ygx zhP1QY*%0@{&}2_RZl!#N(#eozDocj6W&pa_+~o*P0=SK<8VypRn7r@&_<5yjbOe?u z+In+qTQ_nb)ZeMEW(!j|dQmm3fLXJRUI0hq!pUeVeehQzATUUPfZ)@hquMjL7IV*l z#^NJtS0#fZzXO59c&JWpf%=5sHs)DCmm&&}8T&xV1f?qKIkh(@_iG z>;w#C$Kl?@A0t2fP-57Xk;@tQpW1g zNq?oP?m~P-6ku38^Td=x#Zr3Bc3d51=aw^2`t$jcl=qP{z=@n&Y-9O)obsaIwy-1r zOb`8WuZ7(sb^=gP{)(k|!r>j|g}vxsMWuBZn%1i+DLIv$hejw6B~PhW-uz3I$96 diff --git a/openmmlab_test/mmclassification-speed-benchmark/image/train/1659064222206.png b/openmmlab_test/mmclassification-speed-benchmark/image/train/1659064222206.png deleted file mode 100644 index 7743f2e6a21490d39b0e9ec95ee2d47188417101..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 65539 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 aD~p%wrQC>e1;laS5*sz$TV<;Ep8N-+Y!#jW diff --git a/openmmlab_test/mmclassification-speed-benchmark/image/train/1659064427635.png b/openmmlab_test/mmclassification-speed-benchmark/image/train/1659064427635.png deleted file mode 100644 index c02c440b82c149324e0e6829a6988c506e82c31f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 13691 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 diff --git a/openmmlab_test/mmclassification-speed-benchmark/image/train/1659065333529.png b/openmmlab_test/mmclassification-speed-benchmark/image/train/1659065333529.png deleted file mode 100644 index 6e6e53d54a1b685ee91fa9f295d7de2dcb810093..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 56817 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

ELL>yYGc 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 SM8z*39Y8`syhO|>;Qs(!a8=3x diff --git a/openmmlab_test/mmclassification-speed-benchmark/image/train/1659065659769.png b/openmmlab_test/mmclassification-speed-benchmark/image/train/1659065659769.png deleted file mode 100644 index 71c70c7f3522a96252f79eb657cb79adfa5ad151..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 94925 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 z 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 B7Bg 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

-YnU9uFAor-4X6MR(0CZ>m_<;9r$gc;~9satc738{X+EC#X{4JTV#FH_jqON z?l(e&wcX}k!`DbNm*zzA{rAID4Ua2JHQaRxkHqogsh?_0HjRA{ZVLP^^y06A_2grj zW_!M<9+7TNkfzi72IE3^q1zms$;Ii`5_C`E?(o?y8Gr&YLsl8dv2sL>*+!yoJM-VX z7jnx@{;RNBUCv%doZ3_9lY9Scpz&L}GXSwbXPFj#7EJ%K#08C53DY%@_y-D4QS=>C zxK9Q^;rFOQHDH;#rsUvsQ@x`nOg?OdQY@eC2pi(Iv7~`$wpcGxN3+TBoqSMh&ga5J z5m^sonCS;&xCIJ4saq1atK;Kn^LvRf=?J}^_bl|NO3%I7nVvg~jv=Vme-h~~3{v0QH%>xg!58v8g3DfogAbr&MgG}R&AsWT`kvK)+ zCbCEyPViRad~)kLd3bmQ8HL%gW2r_PvzTq!Q~Te;b;hOku<~+)*?bL*MFRci6gg!Y zMp>GsKmf+SVwEGb&4#XL)ZGe(sWiz=5kHynbHH<-DV=+PtO`3Tl(6n5%@~sAsM<%jwK#5={lx`JMc&rN6Z(sZ*AX8l-yOrfZ0UN)ZiBoe%9tzwo$!!mQ$5<4i7DVi}5TgA+wL^ zI~)sYvvvyGRb_i0r#83!6qazH0?YD4%eYRC^kYkY6WP#! z)0jSBz=GprQr@U8*v6`*BilqGs{i`OryXv+MVwgTpS2WXMe4Oj)k!U7>u(x(Z~t4% zOfH}0SKg~Y9q%(~v8e2W_UM<+QLKw*Ya&$(vElT7`X=>MEiFevaWJB^$Y*rB_JKjs z?yuuM7=e__uWxETb{lkTS8pUr)@eGKt+xz)RPIBSZJI2Et%{LJw9OcWl4O^cYo{95 zD^w$POeIl_zTT>0?`MBt>lZPXs}oJxafZYUs>YtOeTGBY6#JbJPU!b=vXOt^ch{3# zpwb%>qK%YLK42}#8zG*S`C7&RZ9@jHHi?u{y|d|6nfKF+96?3rc~eil;>gCxe!%b4-3F{Q zk8g|9fA3f?M^$IvjdSjL(MsUhWL+F8=q~tIjv2kKCfs#Yy&OfIey%8?xlHnm2Q`3K zCjZM=zC!*yNzFCJshPmhBZm$So73aM%+8nV$Hy!x1kch;1(}YB1%E$DL7^Z_T2HMb45$i=%^62P?wWXZh~6NeUiNNkoA&8D{sEi`qgHLT~v z)~ru-qsC?&y^CJMyMI#w-PBWzrjVwCm9$+mIdZYBTf1M#uFcZiRD`7~>xBhV6$!5U zEU6-!Z~_wIogYOv-egMzJr^KWE1wi* zdCqgA1|T_$Wul=T>hyT>M9e>s_o$=#ELdUzN#$vTNP$WBs)H;1NoSZ-!cI=^Zk?b< z+$G!o=^xqlLQQ~ecM!&S#aN>8cRrbR9G3K!j%H>Z*elt2T%u(bJF#uBhj*^T)cL8g zj$@|yZC!q_%w2Xo(1$7A@KRp2rA++5R>*|G^KVq(GoNsu>T4;O-+S$%lv<+DN(8?M zVxEv7>F^L@Og+jGnIbZ8&0dyAE~O#b4^^QrDl;#oA|}&Nn3VCu9talgZ$~YnQprnG zVj=5_%cM(f1%UUXTbELqat2sk-q*_Ofg9@C&Q;QIRn>B2MwN>gT@3zESk-?K8xn8E z@>KarAG75BWS$N)B2=mIxMHbj%_zAWjEYCMg+79x^(IOz6{%aF%<@)#4t~8{{D|pM z=fmTLJLS~N<1XK}yHOUXmiM&21u=?*Q}Ei=iYP1xanDqQ@*nRWkH&PCE=|l17 zOe!ue6|%JiR?O%fGoMlRSP}IYa2@4h+*d5IQ*cIaTlj=YB}#!y?gNNqj(Y%+%;IvP zQ!?bhA|CfV!p3jardLUQj`RoPUeoem0$|*gHzCQa=3j)kZgU&Sl%WC}CQDsmLWYEW zPXghQL9;=^X{!35vCSladN`MErA`kYP714v%vLcBFmmMxng>3i+p-JV)eqbTt-jrc z=`18+z@A;;?R!L@7T6JZJ9f||-abB)0`Hq-gt-zM)Qp}Bn8J9*umRF3DeQLt1aX7!nc;YpLlEk_@2^cU{@(*H=c_X_<<9mCE9 z-I*fO4iw}=CxtWz`%E^6M#$;KCr!}iWA?exy#mp1^|AP4Z^?u}V`VaBwwOsDb669a zNJJ_&hsn7#Mum~EAQ8HoG66zC3v&8wWO9UtgfUtV90{BUmze0ghrf2OEdNS%8tQ~( z%7;A$i+D&YYO}Y-d@deiMQ7Y6yyd2c>D3- zg+gZJn*(HQx0e|OvdEo__zH?8S_4h)`oCRcX;ax${zhNSx#x4Y{1tvU$=PB>+d}g_ zL3~>?SSD4hRy23-9n)f2{e(>QN~`87yW>?bYpV2Ku|J!@121`Yqa5i&^w}i~t{Snk z+Kmw4D)-jjkxHjvVzy;N3SqQ=5RxegUM&sXx z-vyO9j+q2cz-qIYmxB~*)q$dN2+ROg6=^n|-`Ii&n?V-XzSb-S3F@dQQ4!$%x3 z@r962JbjOe(OO%j?uwvyO+}WgXVsCZ9|N<~C)n(7tuHV+o`c>+g}Uj+U-`JkC-^~( z?x%f^)Ok8Gt<9%K&)ahM9}X|`74{)RJq^iMw+RZ?)pu-0mxl-kxRlsu0yPxs-nR2k zZS8-E`(X9U)qMzXHSe(T88-dEru}G#@_e=aq*}6R?AcZuZPMv3kclir9Ng%6Oz9>F zM9BDF4um(y+~9j0#(dL{WO@Vi`pgx_OfWI9Prvnfr7vWDBi~V>-l$~C z?avd=h1C=GqQ=jRbV=68DJ9bJbb_c*O5x}%G{6@JOO3mZRu;ByquJ9c=nclDuq$eb zA8b|iSx5DQOY_3mb!^ol5gt_QekcaJJT-7XTfrgWsK zZ6B~iWp#2)+hu;AGmra23V(0)6qpsC$)0)7>P?fJV*ZgiqZ7EI;4dY_QW(x;KBn+r z6>EReUs|N;iiB}PB~15Yy`f8r*dOUSg>%)v)W{S$#*+V)M&`F&4D?$Op=`7AUrSO! zB3gSN%x4KzOp~KP)VKB$OyA7nI2q*Xl2-rrVtD9$6*3xqG8Jj?WlD_m)K3Wx8O2Y2 zkf<tq(Wlyx z2D~hr{xq+l^>vAFIh-+M0LkBAQ56C|lOapH8KU?H4-W`xIv{TVuKgQk+V_1QjTbkr zS?U&In!{kNpKZ~vt&ftpm6zbhLEq3QK z5YbGYqs4*)ejj$U%ivLS5K>(qFf)j7Kq2fh7mDbflY+P(jH}m$Bifl?!it50_RKrc zD*M7H@9jK*2;lGj5xS@LskY4iMd;pOF;%0IDGI$Z9hV@N4}3g!9r0A3kx3jK9X;tj zsv0J*nim+d&AiIBNz8+i^clFRQ|XnkHm0uXZ6xx+5O! zclWZe74RU1>2*B_h&|D(yLvdufVyIQz<&pd0S$`|qG2{h7;I+D$*-O!9ifC;g(Yu| z7{x$(z}RS7`RW5zO{OD%B`u_?z<5RZY%Awag9gOOj92M(%sV!F{;1jLV@$DjL?-W_ z)WNWK0Qqzy?h=F-ulkB&ayzb{6#(SLy&ut$U*+43M&`ar9@?~O;tceSqLO1Zo^9`{-EG1v&tzujn?H00Ll%%pD{QE={%sLy?RZL zbHDynEnN#~2aX(d|e%|QMpRfNDkvt=6v)L-M$aJZmW8y$0N&7mhmGRg_ zQRD|z+9B@xJ&a85;~iA@T z^MeD)Ddgp64inp)!S%bNlmmoJ3fkYz1*Q|nMhk|gOU=eAnP$MgNW~F7A;lNQnkgb9 z8$wZ)7zK{Fc6*~j+Er~j#%F@Lksr)ISv}7V9s3o9Z+e|MI7${h90FLW26NxyS|XYy zvURsNjS*OJlyUXNYF$C)l##`Als)0;`=UhrjU!#V%l^J~9bcfazvFy8coy60-jy>G zD4Hg=#b2IhT+LT;5RS2d^nYWM4|7u7V43_cBKzC9L8+sQ`G1&eki9_EHT`4qIMDP- zA#Js@wC-$y+rr#{P?9YJ^-l&H5?q5dhwsf%W~{}1`yT-qo}A3uQxt~oQltl)FE$G7 zD(YbnU>>}1*tlgI9s>>=d16c<(Lya7VHL0y{T(~P7f}>gb1~Vr*9DUcBE9^d4fEN= zP)dso;yZ1rXHUWNDCN*qyc4Pety?_9@HNV)(;$K zn*#EBEz_575*rKjF&E#Ua9nw_DB%qG_6$U3-W4{pD&K_fl8bwk>+Ih0lqVocewLAK zSZkA(roa@BN<&RPu1YyzOab6Ithq${qo_G7-x2W4il_XbBS4X~etIPL05b4VZN~`TCG#RKF`^e^g zr4@=I;CJz)XC;Q(QK^}ZRU2%5 zkIx=Db=k?di=bKc|FD^HH@ti@hL}M*d~YXI_gg+v=0+OeNgRj(x{Pw=!@`W4Zj$Tu zaXBZln~?nrp?tZ%jVV9*4bdXKk=Lbeu6nFcw#Dx<14b3AT&(A-ne$B?Hj?89%f(Tz z7ZUS(mZ}?SUr)Me);gRClpVd6;rdl)gAoU?RFiNw-bAd=X+vw`g^AC$%>ESV>-yR` zZqJm>RFnb^u_}7!1okq~OP4$j5$iv>R0T!i+D6MF;w9TcKp9adaDHk^2UFO)a_x!A&koT7w&R3|5jfdc(cqJim0auvho zN{?)8u3#g}7wk00)7M>B0iV2Gb~&s(ua5!h1bpktg?$6&VwiXB840R;GZ%1I{r3;s zYV_GRhXRkK(}BN^UG{L3+gG<^%aUc}cL8s+UxYSn2%$~XuRPj(56xCe@SSQ z{JY)GrNL&z#|_p}XBI-cKD{bsJ~q($WZ8PY|9RC!lxU7Z`50NW=$ruIk&VXDFwKQd z9*M5DQB$$xzsmFd==lfnoj~gI+|> zCQ##0m^})Ot7{Gm4w;yHejRPZGJwd4oZraUIjR-9B%48pz6<&PEzy4v94&tygI^{t z6cuTz7{P7y*{zhgEv&XZ`Y-bRs_Kd6#hRIyKs0OU1liz;o(+I%@aC z`m<=r*-58kN0rSdiKy?llcx&vwlOlw8VZT_HhTYay#K~k1N1Q0f91|V8n>B>RD=hOy3y81g-aUq^M$>RC1Wb&BcT}k zfONA7Bjf5;gY7c>6mIAZ7+rmU) zSr51Zi3sl?Ut?GgT6)GGV)?+`e-rY@_G#76ETHB0v8e|R<`xWb>^#vbgP~Q+YJiS; z(}lVD>@~T-rENv}u$eg>58JoI=HLnYw(@bk^J7L|s_;tV=v&~u+=#he!zT}m+vSeX zV0-LuvA2m?853HfCgL0P1S#VR_U+d?XnEOfP8VoRU0ILz8`BL2QMH+-NN+Ab#BKcn z(c^uNo)`Lu%wGrR6>R5zmAdELffBy3O`L8C!_ADzg5FJiU%OiuI{7~`|G;xo3u@Kb zMrs04iXXxo^0t$JxpxM*zX)$&c^AT))E~kdc>1aqLU;qZ5Z-*_;#&IS*$ZZ=m0r{9nQME|&Bl@Y{Q zCVFw09rt{wdnAUlcd>IgYCDC7|@QKZF=hi}2AUA$+mYkfsUsXK8K{SJ|Z zRt_P(qY6``V!?Lo>hDPJTj(EEYv)B^`Q@1^7mJ7a7;%Bj_xARNSp zCgP{$#;xkP@8Dkv<+-sDwwn=f02W}o>HcB6S%fTWUD|F`K3j@5_EI{NTGQC^#6)SS z_)y>S)Z0DGqn#?mQn5_vj4XK+XhGftELF}D8~&%ce~VJFw0V*(TiaBdQ`HMN4u?Zj zcy7aXAFI74!;kCd@^%^kR0@Q=T{MyHa{_f3n)m@AV;0UGB~Nn*{)YUl#zXXlG$p3jl|^ zA5Fo4QNAW~fkg}R803g`su@+LS!BBBf(I=GjREUFW)sFFp&9~pc{K=G`bGGk0kY}8 zqUe1H0E*sUv9H&Mp$uWW$)GR$HT*}&Zps1@?Qm#fHq8lz{=zAbMn43^|L=(ylLcg` zIz)KOsk zLocVLQr7fv7_(X^va|QWe&=N)o04pq!`v8wbMkK2k4-IKrZqT^f8`S8iQ$bZd#dp~ z*d=NRI2+_-CRg!Oo^C}PTh%;JFr9;mO!Q=6er&fdS$aahOP1bL@&`*VU_~uQ9T$#R z`cCwJaC(wA^XWlGOE;G!7kS#1Qa*XP)2NHyjMZayNIfpR*ha->eA74%6U_LmawyDb z8_6sh7|ao3r>1)9W$qM-emKZS3y-4)JSz+Ju6qd%xr`P2Zw+qYf8;t(EMCaJgI{C9 zPAi+R5!iMeIeEXRuYbJ#wf8HPSWc(hE5l8Lo8vvr`q@I>+f$whsk|>m#-?!w(K@s3 zA?Hi{`%i1pP9AqLJ7&aYZYiMqoy?0FCz>;*u5?W6{j}XY?8=ScT5%xKwURMD@mVy( z5f+v&TN*j-^Lw^>M>Zlf%t*zD@>aM5q{qPVFf3viD_%3%rYo0Tn4(TgG<3l`L2EWR zP#>F63oy@$)2L#-H)dIlRWY`}+y<M&=Y4 zAcSrB)j%sKaaXkY;}6pQ-QSS*sql{UUrBojf_wSy(%Bt~?E2pvBa7ZY`0F(SX}@v0 z&;nGkEpXX9)rCIkn{F)0)Iej3q-gK^7olRyPLHlD)&P7 zW??@Tw7YN73jON9xwG(^5zqdKiwaRVKSnXKDIy2ZuJ)Xt4=SxGY)}-GZBukwlGL0@ z$c_BomV8#3f~G)V+l4`S=C>4>ykt`lV4#O;LUQXBGUS5DDL2=8#8P5{-y+l^~2{1YdEYhXZz z!)5KnvBiCt;DoUeJfm*sYTzb5dnb2Q=a!NWrA6Ta+35*RqNStNTQ1q9$^${#2a7j~ zQHGBeOYtXo_K)ffmNi&ko1B*_0+aWj1G$39AKMBI;?Zm;tVJ1(W6m+=+ooSTwf~YT zl7cGMUj8^Z!9+v-SQ7ZR)<~Lve!B9yZJ9^CdT+xhG%kwW&p5687yFILR}(`WwYNl} z4ex4($i&u3d=+=z(}smc5}N0r)swND(U17MoiasHI12v?lek|8-%GA#tOR&WIee1s8p76vyMRwi! zK`vk_yb%}o7Z&;7s*@S$J_K|=gL-73bxGYT29Oy15kxj`Nd9p__Xg3z*QxsOZmkrKU#qQdnu{F0tf=JjecNL+QpGECe@(bIkCi1s|u&|8M}o)n99 zC^^vF+8K3yUhnAx_AaHuC&_@Op8szQ@`zekLHw)eAJ1pVQWa3sBe}u6u<=@hBztLesk$B z5PRFkXG(kRS0@Kx(76mP|K#c*oT&+zdE&(hc(DI)!oL&SkN(aQu=QkIM%Laxd$ATm zWMY3A+qFbGAq*F*Uffb9W)Y%PBZyS5Vu1AW!8`MI7CH>qrg4M0fXZh;7(YKc1xk(p zEnMdQO{tgth6LboOs8@QnBsD^ePy*;BZ%el5$JLeM)@#Fb=Fcddv4K0@!a$U0E29V zG2}4g?=AaNHlpa>uAOH;l*%R`(HJi+GTR*!kCONi$~-W*5~Ezx?@%>?jy*`S)z-KC zw!8F7;CR|q#8eqT*R!#6VV!UOa+Q5|X0W;CqC0bc zXJf22ez*t1FOLdMCT9fV`NBI)SC7>h2E*n# zqjfhvT^ey;t=~RV113#^md{#5qiML#@#`uNGBeM1x1lE>N1LOxV1ZmqV;<++lkw^D zdV7QIiQq3&E)uJO_*7>`=cFuWG;w@ngPo*$K-FoV``P==#M4%e9~HlyiBomwy=pD_ zr}gGkXFc6V=N!FSS5HE$Gkg7f|6IDTc29)4*O7R-Br;@!jp~f_Xt!xG$5BS?IOB;ta9PB=aD`vJzBs9|xaR8q_pC3DCwgZ%Em)e`S8d2o6+ZkC*FR-01r7n1TPMNt z*9nyW1+NXmf9$m}DHNX>6S`+^0+oIOrS4eHD_{zJ-{SkfDYWSa3`~Fa**qQ#F8qw^@1`-6 zsuvO@3%+cQQIzydK(cU9dS@jnBiy02*ZF_rpr0WB?;P|vcBli*N_OLPeiTTQ#TCue z_ZXEOvdeQ>Q+4S{&*_)s2tA3CBd?F($o`C&g-G%oRYimj|aI zP`iw@E~Zr>Wu5R>>8Jtl^chyq5w-@I-l|fjj+{}xkMl%R0C~TfRgvX^An&PbyppJ@ z6wqnBHSc$6J%6E>Gch(!P&_(Wiak*qMS0fwx_vSq+V|zCKyA%@2q$#@$MMu?^Z>|B zaR=h?K5UP zd|G$V#r4}OiLgeHxr3FJ9)P>&kTs}Bo*L$VB zc{AJA**Y~_?mDz@+B%ej#5+KesmP#azhz(wuq_*Nc=O#*AQ#M5pt9yLby*o(V(&h zU1XAe%p8i*rhB`d>$@rC!rVHvYPe$tExsH`O>vG21E&EO`uLOpf$70K8jZIBtRkm- z^B)}I@9df7X=s4DO~NLk)NG8XW_u%9hGQArkB1GWX)C1!rNsl} zTOOokecr67aF#VS6nbKFQ4UKlO5YMZ7Bn+xoFBK`ykg}7)p{y!x-deuY=u}_0%VT@ zgs|ug7x|e4qSJMHP1R-Xtr047!!c=iZ#3O^pO^NEk1wP)ByG6>UfN!!$!X5R>rk8W z1%E5jrM77x5M=(rYZEAhos>cp!YX8#egGNV(2r+y!h?N#V>`3=%HE& zGhRyfb$67W!>*$mS$U<9PkDXsBciY0;;`EfhwW@Zf}4&(DM8qGQ_FeQkZW@!(QObF zvAWtp$bX@}fz)~{Q68#UjySirLg`UgP_FD!15oP9IERu5>hAeN zQg703i+gg0QJ%LDjiTLbJAEgQv)m?smJ| zfyh-XTF(AlwSB@er_5#5S}!TzF;Xr-hOI@GoX7Oc_aupdO`Exz&P~6v%+bd(8mS4HPyU``2 z2^`{Ju#~Klxpe`&R1&hVBI!jjEFeig7MD%_(FqYsVRBz!W)Fz)(>PN_E+TyTP4qZw zL@g{}S~_vy$EXErVYAHjQc-oOnWzp;Ul@ofx zqiei8DdM&>=4`SDKN&Ei0(gKL^HSU4^#jLOlrBL-IlDQ_yANx#5?5`T*7{rU0vQZ} z#UflKNvUjYw>_1L)_8$8`dvjX85#*S5@8dd-Z`Q}yy_Kqev;5v*1}}?TnlJxOiI7& zgNz-S2H$ypWQd%P5HB)z$Z%Oy<#>SSXm4>l8aLmtYI3ZSw*KZ)=WcTS$KCIXQ;))v zz_LEQrYVo}z_!=AY@$l;GL&H^ZMJeKfOB{c!|L7;KXi((Zg67k=$Dqm)*>{%82C~ zZIs+3JUor-*dg)lVe*&oA{V>PqbaNJtmNI;_|o{&wubn4!x#gPjExgh+6`Wf(-{f^ ziN(+`$WLfgI;4zRH>XEGpCicyEU!X`Sq`N6xL0X@mM?&^vSq6(aJA$5;ag;-u|yXk z6az4o!t2`p^X%9uscph`8v1>(!UWxIhS|ko!&eg>Ut}-x{P6k9JRjC@VlH->=ig)k z@_guJo^RLuN1p$k4O3ctLw329d&`c^+`nYh3YY@xf8MSTSM_4a#=3t`*jkrQNfX)d zBsX3l!--j7BH35Y?TOCl$Ih0(k|!4B%B6Af8(W<&!7RqhGt}#yyX!4U3@Ekh>r@RLLUlg&I5lISkX(>lc2enDnG{A-xs+6~1F zrU=6t?_A2XPmkh#(W7~PRqN|-k&vvKf zw;06D1LkxqR^OA@xl&yZbhYE~HbmYNRv)v^mZM?Ws^w(N{gWZbG#^_g6OR^7MjCbURs`oiAMu*yGol4y9|nXnG4J^Vdi>PaD@>x_!zm9I zMp$t`@)vo&KGbVII@~H$gMCs;V0~vNzq6#A!uI(K!Wud&2Q<}^hb#Kno$|us5KKR9GVb|1+dnh?m)?32qZT200xLo@ z4u$|lL2804F^&`1PKC^V94|BvS6G}f2b0y$PUpFbp&Oe~f?@!>Q)ark9vmGjtpYs< zy$kXA9fWoD#xXxv`o7?P+nfg|iFJevgNRS<8^Z?jZytylN|*#0eMcs$-(%45;oCOO ztNj86NA{QovA*f5EVg`1BU+@-=REaEN&=WFo>2>WP;W`4>SgX5i4NlNre#XH^>4#{ zvySVhzpZ;hvMVFkkz@sXHFMax<9D#=Njn}_#e~~cYYB4BBN4ANi|JI)RqP1IR-wUE z!wupbDJ=9pxHTjQ=feU8kdBK|#Ev<=S8e3Bwgx^pLeA@uP5#+mZ`2fmD2X*xHBDsd zT98&J#v~-haeYu&-xe=PQ~4n*-59&fi)nX+uB@e*a<}NH?D1uw|35X@8}gu*Bl@38 z)c}5PwWH^8m&HwJp;w!C;6?y_|cv~Q%#p5yf2qol2x_eXPY+9~_GL$1_Z%;3iy zuAQ#P>U@UQz2jS*cx0?Q;2A&Lk<7xaEd?EcPmITEq=iS=Mn|{Oz_x80(@hj+i$PBK z#`Ygn4f$l_!%eFd^kT42TfH5(@#43Wv@XMa{?UtYpG^U&Yu726dmzaDOK^HEoSmFE zR3#6!IY;1sD!RAQiRdX23A?_dLgr8LABgVZWI2I_@QM!-@~VyLkxtdOYnz#Lg09r| z`>e4tx&FC!7Ht-K*w}!AG2{DNa*-)hrYBR;MxYf&6~?<_(}Zq^-lDELhn9&r*F^6M zsnoU8-{_!xb)NeI1Gl-&d~TWsG~`3nNI1>!OwczdcGOU!7hxZu`{M{JrBXyPy(A@*twPhle zya0yp2zj5OSC+&-MZYeFbKEp8(x)fc`HOZ)*2#7*@Rxyz#F!})rCni8maqLt7@pbT zsOvZ__qZaDEBG~@-=+F}_%!0}-G8abIXg?V^~S#DQFmrRJ5V=!UcgCsra!%;_(g_x z;OxM31KZrq{TDR=#PR>ej)Py{aQ_;rulhh<#hnf5YKB`R_j{eEf3<*A1l_&LbpK=r z83kn7#2IHyk1qfBjgFv=JIJk(jJ8*tamJhht*SWUA}u`$O#|Xmb=-WF;=CVJzY5hd zqT&;8ZT{+^1;gMjpf0tVNFZ=c`Ig>kU#_|Z&s|y1HOn2JDDdiO38h~C5kVcM>W-*Y z_fD8p5?qykeiI7q21;ek>@&n_XMF2tKLd_=h5EJRIR=Eky}CyKdAap3*uL(92oRD# zynNc9LZ2o^gK!*N0XZ!&(ErFFiTm~`T}9t1e-8z9yjbT>T<`nL@Wc|T<7p3v`|6cNNa-A4VxtVLo;BTs{0G*cojXE!t~@cePCj`Hnd=P#+%SS{=tU0X-51 z(b#I|By{wo6;!ITuQ%sVJA$lKcJ^3+`q=S9jLUlkr2wlrPF=<}2O;Ua(023du*b!e zwTawZ&oYQ5JgvqRh#gF{=8B%3oUs7yp*@xgSG(ZT4ysk1*q3kfG+e?0s@eUy1%n)} zM^A|n6Q221g_aH@&-SE9IlgaKUj^6t?KkK3Qh`MQyH~0?B{HjEj8)ws0xg*XJCz9zs@b)QGQ%694Se50$0 zhiey_>^|4i8V|#FwN)g7k%uMM%Db6wj%idEAFc^bTkJsd@lRWz4(tAp*v(DS_QsR< zmMPEWU7GVtX-=W9!9_EJZi7mP$*0LD3-vm_ReFc%0YG2sQO`Nu=+%pUL%4KNYtcbx zr7a?KK!tXW0u+&!lAa0lE=7p6p?6#?AmL7SL?cjeh-&JRj&F|M%$|?$+U54X_DLFe z575uB4ql5!x!N-6Ayz-NIM-z2K5xfd-TKY1LoNwN_2=tqn|o zcQ@}}?|1L*b2yxuKHXhiRbBG@p6*ZuIdOCpA{00{ICMz~5hXY{gk?CmC;rc$!hXpp zWz2*9d*Y-dE(BLG@@fZ`fHxPE6@-JU`iy#KhyY6?+e>IV!NI-g{Pp*w*RIF}4sI7- zQbbV2U2p$h{}Y9}@6~7MIj?^2T64SJ@yO7_fN;GrZIU?;J|gy)MIJUZ0Lw0N`|P$D zBGni?g#sD|+u*Jc^@4#te24xv)p$TW>I&7mq1JVbY1YZ5g&mq1XF36V>Oq0Bm6`Ri z`_@R!chlE?qiwMzQZ5fF>2#7y_rBvpDm&Y0+*{uKTTc8g&JStLjvHamV43~bw%HZ? zljN@i9Nf^eh>_n?*#A>%9|a8#u4ZFy>$Tq=&uYqXcj1=6qn$%J6(02Z{EjBOAwykH z6B8QP+1YMESs@sqq01E#@MITOzF4%J+=Jp5m+u#!G9xxUdEc5=JWg1tqo?TkV;@!1 z+u3G-CT0jC_$Acq6zKLsi^}2Poo{9JIDg!QJ?Mm}`M$)M3~CiwY5UOM$Rr@pYv*@c zDgSUbdTsh?>$U!E)LHlFsNb7I1SnD4?WA4!USa0_=AfU~X)nnq=jS?C-pgC{zHYg# z3a=;0HG>_^>o>!!pf2WP3iur?X#?L;B7i!rGn;k^?-$Pe!+dN=MusBZX_likJqcT( z{3?yN24y7PKXe_)Xux)l965YqUO)K>-qREd4_>ZYH3X!{2c^h3r`(XE&>a9f7A}Jz zAkI9@YkZaEXi`}&m8>0d;COs}1Na#W6j2b1vqmqS4e>%%E}up(7C&(BsKxm+E3T^BiC0nzISaI>wd_>tRrjc+WO0PdjjsGp|@`{YemaQ9xDZIXgM4^2{|~Q zk_)rW*Hv0%!@F1zP{+$@E(S^15k9ADCS!^bVeObBni6HSv9=yA$ba*}H2PAF$lAG6 z$7v#GB9iM8xNaK6%UXsriM4%Mrgdes+tW|gZ#-42?@{zoJ}J`Zt|?#2ZQ15RcrG^} zOVzDSGy5~>uzC7nT{dJ!W%{C-Edo(|twh+RC}WSEgER4}u1=(bt#(>oHFvzKoN^#N zf#+30rIzJD*?X!?+)rlnOhMs!BFf)am0rg|IB5GFYW8sZA~BZlwr3!pZChL)UpF>- zNmN$e_uj_vU##l4UVs~9evBVLHBi>t1RjSmF&ZyAn(g$zK6XClk+izHKgP$q1sJBU z5^^-I%DmfYTjBM+$ZYl1)7c8DI4IRBdc)=qEsB5DR?o_APSawl5JD%-cF6q9y_ai| zXE3hv;@*ITqbWwnNhwF_+WHd6a-G9L&fML2(^<4vVQn1Pe*>10bl!9&7Wnz1aY}*FLus5;aL?YVU)EE|1gUh~Zx}+P{ z4;Ns@d^;R-C{6tsMjUsQ73s;`P5WA%xJ2xFQL$N%hAbJ2I+|LP+p-O6k|PmlA!s?f z#D!O1K&y0VTh_Rb8?@!gHcPhb0LAj{Iw{~+O8ld-&L9e7LB%S+4K-{DG~KnJP3mQM zu2sI_ez?c5^%Ff3!{B#+j5!-HeM^s&x0bqhh4UHtIOjzDj+AId04V){je72Rr*3T*SCU-5+K}!wXd)!-(H)QZ0Lt*Gr+xVVAU2)QdM1;*2wX^x`D$}6|Kv| zc=G!!PQ%iRx4hmguSihUL!yvJKgx1_ju~#lRxG668jidb@Nyq*Ilp0aunM~x3a@ZF zGRNrRCFg6j@(?1(^|{zZIhvLoS8#B|CbJc;Q*#I9cTflN!b_U5wUxjTHrD| zL!;7WMR^h6>>Rw4<|pIz)-IV%*q6}WU1qTEl`Kex*7oV{*vsM!>47TQh4v}b4`9KT zil1+${maN>3wc3qA^gM|8&t;@3m0o1W*gKJdx=;~b`C&gYmhJzr+Lc&I&^s}nG9=>cf@OoHYB zZVo{{$mFJmIJ5R~TX>BkjRniEX5TvVk}a)3Q)2($%`kw_}-HcUGes3ItIY(a!lKNMR>|ao^&{N$wna123khLb~*Re*d zmtHzfXBUrIGLW6d(`u1OE;Q9xG;8t!DC|)CTPT5Q$K;~lJy`i1Q})XlFjC`&G$+wr zbaKapoI4Asrybb&nQ7(#<8!WJc*rahUqec6SuD31e1r~~#gqgZxAGU{xCW1H)u=BVgFR}*ne*TxLiON@iKe`UH7;k%&9{!yt$sAG++xSP zukDYry%i^dv;~lDknj4X1tfR|3tm#U?LP0QKw>}nY9^UV%HQQ4OTjr(t?=v`D>D)y z3X$j5utn3PR!wC|$mJk$dS{9!0M<d z6lf5EZnBIQj8G^liY|7Iv1HQXN6R^h+r0fb=w=+&Gm=sbovq;3l&TDwf~z`cx7Wzu ztAt>kiVoS&ItE84)_(!pfGFxyRQ6QK)jZjQnwGJ$y_Ixk3Wg)7N^h3r3dd;+b&`_p zJk}N;&g=YEW|k@CGDDA0?%e7{KTx?+rQDTJJil+ij=`*SBNH^lq{{ZZuC`_BLc1gO z0;^3C&8&3OT;W+50}-i=9tO{|#-CzC%LyD8e5;deO;~xmy9-2D>x`!Sps1VS=aE+_+VDr)GcR|LSa!fAvB!4D!8^>_9k9dw{oG z(@|RidbX|`|5c>B;H^n_b-d-5&{S3$3C?PTKwAk3%{WZ|1}PHvh#`RD{N)EUESZ(J zu;weeE#o7k%XijX>}wx7V@}1Z9N9TE8SG65ckn%l0c&+vNOe0ynr!uZpZHNRUPJ3q z8JLT+VnV+1J89xfLii5oc#nJ7nQwSg#c*|lkr)`F+ZAu#w@Z= zKI4tw%=JmUmTHMbo=TO1BDypwie$#JkFqhXFRTHF*6%;RYp9|8Ja6Etl*Kr{{UTkX zkJCKqrqPlA-r)6Xu&g$-;K4?TFh26aOnFa5#)S=8aYpV@N%u8cu~xGG^};K{@KS)L z_EniPg`6*YGT6MBGpF`I^Q|9-YQ4Vc_M%UR1s}~-fb@77O+;F`PJSmp=7~uKPLo9B~+&}t|VM~e5l^F4E1$HVcI$aIH~i|y~DzlI2sauwl5Ry z17_WC&d~Pg3k$IafM37Xx7}$t)w+ToJ)K7#-Y|x=9`U*KI~)>+xaKIb&?A?WhjE{u zV}gEln^V34ZW)2QgCN4PTZFK6PGW9PuhOv8QAdN=)W1J`i&(T!2^*u9X(FIbur3Z~(9;APG%%&(QYsab z<7W$Y=B5mY{1|LtJRmd9TH+cJnD8oK3i`3%`M}*HTw<=4Lt-FsJ4(H&q0SRx&s+m` zer^sDJE7_chvUP#J-vFPhgHuFn>JmhA1f{nF1NYQd7Pif%Zi(aQ8d|T_Azbwl(VsM zUcX^BEX}daras^_Tt#aiVObwz`a*Esh#vl-*k<&DdO@LC4^~}F3=6ovT0-9}N{{p0 zM@mV*pq*}1`3r9^P^^{EYt~Y_Z$A&bgEcPe9-0Sgc7D@XOC@#Nj>f`5T8d;kiT6}y zBh_G7h%yLIS)FWxw$)JjZFwZK*+rW5FztGBj}6&(X=;n87My+UWG)T|)wHKeUo4k` zc7lmgA0!T*rDj16cBm{)Uzgan?J7KtOI@TH(ia2na!p}Ou%?p3Yook{P@%kXY4oVF zlA@cGhvZG<6OpaJs@o_Aw!I*R|)5>TV&t;G>*_4@Vt`3lOfFud9 z7*}Rp+oQ5}7A73vu2Hf|48h_(MJJz@s4ywYw3;Y1*&UQQ9qQU^*lSmZe_I@0!6S!x z3fVTyO{O-@cV+ojCbAC+R&oAHm2w_1cZV(n8>)4+e^3^d)tQ-PXm2*ff~*NHag}V) z^%8Hc1aoK7WfvlMHI0TeAz6{XtVc$*qNx*MS@?VURjFSw88T_WXbk1}#TLEs8tWR@OXTt;W|4 z(Y&%s(=np9@OZElgXqbkqL=xo=JNN={&5BKSvG?67ss|!J<56hgvt<|TG4nGU8$L~ z-mRy#pE}s+t7I?5-TLUWNCbuy)nS7<$Hzm?;e@_?K*eyGI_h9ntD@zLrIfz&!_Cw0 z=|wL!OxZ)u19=|ezZt#Q)%F@p6+$cHD1g^^4qY}jXS`p>B6jsK4N7l5Us_*F7CW~% zz*&5l))w$~-#K{fpU`h~zB(@FB>9xpk<48K%;U}jeTI6-UX`jW&|Ju<#y)4Z5HDj4 z%rhWg7W&!Ke0?$8_HeVA$>%$N-8TA2*!XZioccKvH(PVO&PNoLsz?~OG^N(Wx8fuF z+DQAxB!A^8k*f>=(pS>h!XHj25N~3wtBqqYT?|fT9&Ggm0&S}VFp$dY$a?L zTOic*W@Q~^w9-|iBmxBY&m-?TroZsAWVQs()h=aa#3|Mz)aXrMB9N!Bruo`)0B7r2 zLg6D?I8*hLrH6&FO3kqBg9LGTqbFQ1g5krEyj8CJVMmyX%clN;Y9Zo?}X8jZ{O{yrF zZw1vB4(>-+hxHd}B!N_byDoyk$E?yUTpsw$3J4vkoxuVsVlL}Hxaj!dqV$u2K*BV`UpVp4%|PZMmsKyf#_QYM0ow#xaG=pd(Mi&HpmFv}gJcZyhFse; zXxi4m9r3RN;7~dAhh&yA+wE2y_O}p;+Ax!I~`GWr{VW(=RH)J)z(S4sM-{s-%)U!V{k9QWp zy{5pJOW`+LYF*pe|J%9XrAtcz+FpC9RVRcTT0-`T!&{@DF!2h@W?xe?-d)F5rINbk zy1H#o7PH+Mz9yzR4Oyy7`X)>;wU^EF_sxFj{#ap6gudGzmh%BdqvimYDcY7u?28~9 zA3N#R$MC>$Ok(TCCURRKz4|qrB0*)9m;IN8q!bp`qPYF0a()2zE_6}PDL2Cu1>^6N zek;=if#d2E3DM^-P9EL@30x_>dIRf16gv{>ApY!XdX37g%Uy|wD2rOCm*f@B_mG*7 zb44%zIX+FZq;A5NDOaTRL83ED&+;<3{Vws~qQ$lYuQm6wXLnc3J9nioq1{@Aw%U^U zpW~j^boIQKg1jh^i&YzF&^aOzix&rdbU<1dXw()0A399Fy~M;Oi8Cr)`nKzXWH zVbY}SG2{rNXlqw=085O#f1a)|3k+QKnQk4$YxsK2SC<+HyGV&HG$Fl8=y z2V_8lJ?o{E6~w(qsvPrU5tD(?*#mWA)J8okZl@%B^Fx+!|}N zow^}=O{^A0sD^}N+Ud3^iItG+XIh&^G{pwcOEM^-L(V*=^D~?-^6NmB&6UPl!R2T!~;?xkk~;Vt>w=>f3k3TJ6mWE5W{OJ-Bn6642tIg z3A>TkKbZgvBc!~E#nSa)EqtZQGV-O7+aq8w!`xrU-+wjl%O?h{E3f;O#NEnIdmqH> z^>064NnYBv*xw$6N1c6fI#4GG%QE*p?jHzu!?0_){;UTzqV55q`zXF`$_=0fee#*DD&fjDP6jqemc(;>F|-L8PoFI=g3 z){l`t32JS87&*##+<;XGw(VG`gjRCX{jRnfoHW0Y8oY;qx*-i!3MRzW*zCY-WR&ID zQ*!zJUsxQS$F2*7T8~q68byqJnb*pAya@uFfZS7pi2x`v#bX7&WnFSwhIw%rTakF? z)uv|6*&g!aQe-zj&Y1vac{bwRn(;Mx0C*Q2*@2qz$Qt3;@LHzG-j_5g@2C8C{ot5xZF*(nyOtgH@^hSLMs^Hq1IBl(PX%4JqJk09TyJ9zzeITs*X% zji|O>;z61{+ka!YWDl*`n>QNXH6%)V2@U5s=_`^=1X9(i!*n(XJW34NbHR!Q8a}nO z?=n5{lBF&Z`4j~XUP?EHAzO0Oqn?yOJw^8l@c`meVz+}Hl?*<+T?!Wu8znX4G)FAZ zFj*)*H9|Dt>P|ed?P{pHfpx2x^Iwi zg;2%T`~%9Bz@JpbRlJf_Gr%@@_gQ5JG*GA495lJ`$O!I&p6QhOWOEzVAu7{jsIj#{ zZ#6-kVkl~M8&UiMfZ`0rMHdAoF{I*V zd#3>Nq;hDXZ>qwTvt%|5m0RZd$=o`_P`T0{s9d`BmCsm`!Xo@sHklG%BG@>!F18pS z4j9k`QYD{`DSHb37b+{m4K+M`M@+xnOenFE zb8~?Z5(3pjVqYCyYR3_}7MpRM&Uv)M_fJQbw_Ie+Yz>avJ#18*t$GfKO8R-PRIe=x z7-5^g%dI@*8QCaxB2G7Kn4X#D;}36~phzJ}>6GzI;aB7)3moueQ=!+d*U~lvs(&&9 zm&EjsyLwMNP+aS=s!3?W`r4EQ^Zt^8j!bEVOVpt%sid)*EU*?kjRG&X$5qtNw02NX zv<52O6rKi*2GwHawJyzKO}LPUTJd2?)9$n`^WF8pf`IK%m^@}lt?>w5D@Go-_CztUmib4^kd_J5B${X*BD#=fM`%Z|b* z!f6dsB3579aE!f2PropORU$=X`QW<|X6Z`#TaN7Aomk;S4dR%bZmIXLMV%`#@r@$Z z8=mZrnc$3?3W9yDhL2QF7uE~KoK5IWB2SGJmO+=>vF{RgQWmUiWzcUR{p!IjW)o|; z8xYCsByR#X;fWz*D_eA>8G`~Yhp;$*teKp-zS1@2aBTL|0fiLfL=z9*&Nssh;WE_b8J#?j!^e z^(DGHGuX4u&SC5gcNk3!OdY60n>5qqB0uBY=-`PcUZ8$`%#h_wNA0xjdmYhpc1&2J zm#bjyOu+>PAzB7#853F+yjf+P5yfp9tNB)o?8Ko@%%eWZq~WJH_8W4e{Wd3=l(=(Wy7;^NNh?cBV(I7ZiI_CwEYq z*GW1m)lo`??6W#0i@uLXzw8VltBNB7QyJM|tz|m)@-sAJvnMu^unEpx)=W7W`YxgE zJK0Kj^{>}4%X`I_9qj5EpH@ietk1Fqmub{dpmR7lZNl$};f0N%BLl5igkGxeY(&Le z1EltdqXqqe*6B_4N`WI&dy~_wZE+XQv13$P3-QOi94}b)0H?)pwc$pwQlCmuRkOX` z1krYi@t6DWe%iYokxF)2qq{%fMR&BcfhJKSwN*^YKqswrajEsb-ziZ?90vMcj#8Ln zBZ~o*P{Idb%c2*O$-4C_C2HDp2{w4$e_`~>@P$c{b@L$LR5lG@Qmp_M2v<14majd_ zXm>)G@crn)sSGQsNI!7JavC}ZOKgZzrODF^$OJ?%-PYtvY~5s-br|*f(jA4>gNO3) zh@n51BPkunLb{6&t<|M->T`0?RRErifM#Xb>7HB#zR7~`^tM(#QA-`o1<|>?PyYjGz?rB(v%wzi>j^37C`(5*Gy$ftOM@w&p;+LDd$S1yP!eP|tXqX>R<)+2K z)Z3)PrYCqty<#?sjtOP99Prd>!oUhiHyS;(n)Es@4EUVCF%v87;3UTtC_7M0MbIgQ zf;W)~=qg_z<%7FF3BJgij6>hR(fhuj?_0*D#WUc?*R=I6F+q6wDx+!r-Bpw@&p2&z zJp43wvXrqr`RT6$5-aC%x05Vt70Luq_v=-8%Ra6?lc|b{`3N6cNSbn=q;Ok*PB_&n zWj5uJ(BX%0fS^1DWEia>FPwkAF_$HRjU>?DQon9?N8RY!rJSM?qqx(7#c zKl_2Wxs_jy%MJ^*vLA)!XE*k{364QvQ&ILEd@SmbmtnrP;6UGx-F>6Q8t^h+k!bFw zo&{zMh5$mKum^qk`Mb?+7vZBw$}3Z;vQu7!L8mmM_0q~nkpf1tnmDBbX%Wr|s@Rf) ziR8_R1lj{6);`(~8=~KTjUbikqCZ^<^rA&=l48Ul=nMXqHi6^PA7d;ke!1LbOo_EzF#V{G+q;25km`B;!OW%m^HDta|iTa>$bBB#u9yWFaVU?nYr69mi& z^NY+c0Q$7xj5!>#S^G~wcEzKj!D0HKncS}fCfOjB(F-Et`2m0bIEAJehVF)>-c9)v zWEJZN95Rwd3FQ~gp5Eu0jlvL~%SjdzKxi96$zZDRz-pA(5;gbhS0J+tmTVkZ%|fog z)jVbl3)Aa2e8n`h&x$L4au_XEs1-(K)4FZPSgs0Jz9J#hhJzLS8@|wfv^s*Y*WJSf zqwb?$A9@hB4qLA9vqj=|&9Uidc6s%bQwczn%l__{8@o;g5BA+ zZA~-7er@+IEU% zQl-dssohGV*n3RoT&8hWzbun7WKS}C3e{l$lt_-rn8)gI2L*ky8Q5iAu<>jm~ zj^~jKQBnj~91QMi=Bsb=V_h@F>zj*R&PVT<{9^14h*0AD+bqRf*lq0249CpT$Jg!U zz0Z_(Gg{XtJ(Z1Cq=w;Fiofxz&j!wRFn0xi?aL(v<4Ni2r$Jzf-3=nLn(t}WSSrRm zBL+s-H3PIW^H13>$_{rZv!#)qw9^$SdgV@>L1z=ry#>x3aF1!Q1Vs|QVQRpp(s}}u_NR@ymfK+^V2@76rV^tu^f;xUs{Dy-y4V#64v@y^3k)` zy=xl@ggJ)M+a?6mvNU7qF5E+f?RktQlje{mg{&FZa-3NwVntH&<(2b*8cEnQDoJU9 zqaI1Q!MqQo(dB%;+kluYx*d!duE&z&GO1UAj0Kx$%xm{oy*3}y_67XS-IpdMg+_H7 z9YwvL!6|QVZ_N9mgg^f_WN5rEmlEY=renq1w8MLnd+Fhj8Dm$`cGkS*cfI~u;2jNr zR_8GiV_~v)g|i~Ve~aF65FwamdY33l8s1reYXkEZ{5WjV-_d*g|Bl`f6aIzX*Wb+M zwbj9OBon0w>T>|fE-eBhI3g2bN=oe9SGAd!@d^o! z;H=wRy6wT5Wrd2h?fxoXe;FH^*11NOUc)7gc&?EiXNz&SV*e`bBq_F9tCa0m@evEhEG2t^(v>)XRfFb$qrfG+pXxy5gT3~;PL z6;5jVFTI;)N?_5q}4*qY1$1Kmx{SQd~kE!Z?o;7yvg=s9F4^t$UO*{u5 zcM4Lolh}6E_?mRh*;XWrtgTANGSpJQ{~$s<@RXDJKze}h^pc&L8W6xEzQ;L0F7a&P zv2i^-DZWDa;E014lh$9fBYv|LfMQBh7hHV49aGiWaxxadV)}Q^K6F!UY@_kqc+V~p z$iw*Yu1!r`-9V~pqDXmo5~Y#Twi;(ZHu3Al4dl;=2Zv+GL1HH`DKER7Pi-{_&Fg8c6k&uLG53E!jfoHDI2KVyE+))j`a60#7E6)CiSYALj8!1x$ zCx)P5lCWrcM)lt4RTt3B72{nq@dB<0jHhGbVG;$QV_x67IRggsfP{Zv@LQV3yi~JK zg?4%Qk%z1?d6^{agjoJqY|hScL95r)6zH@r`2po*~L3t(O<_fSifVq`}6)*BSB`s>55io^cY{X?vsH?IpH$aSYgg+LX2z~;&C>YPuPZ_ zK|JUJ2u(_+JuSrOvnkDE>ICR!lReE}6%9d?I>}5>U@_wC^uf-!lO0{yy zi6AkSPO8*9%R$1AzqbU0&BbM%Miz*iMC2c^`%Z!K7e(#u5rhR++N9ho z*}IPPZvm=*4_Ez%lq&)v+=sc-eW%ZD7sL*-KUXKuG9T+3X0XEdygeV{6m&-EE6YAv zb*!ww6>jx^nvQpRN03zk2WJj;%&qZOvBT(Mgfq?pzzxN+vU9J+57J9vr1_AAf3A?d z?s{8^l^&MD@Vn^Em-6IO0*C9ZYOhcQlt_Q+F3w5c*EeeU;Zi^IZY%R_@Z~69>m~74 zcxL9K&LV0ByYE%uG9FYOwwz3Syo7b1FLz!x9A3AM+T9SepX|GSy z!N792wDJpFizW#v=MD72G&)08Ld!iVF_pj-8Gt17nG-%(bkDc4?Mmq$*MazW`_k(1 zgunlLIlgV1&$z>D*NXdHVa)R(41P_IlfxBQxH~#^qrUa_5P#+wUQj!nM(R zFQ^TMU`<_pjt*Cr+pa(O>Cxtl_W(75$~HX9Pqqurx<1cub^AR1tbbovndz3m58}Vh zcGen(VaV&Hv$iy%bcd8uNnsXA7xoBmRl|?SyJO7zlH++?%V)2Q_iH7hSTw1(Qc|=D!7I1rRD${Purg=I0m=r$rHbZ=H;@o ziVC%qTU$um!m)@(?N(U5=MS50@!8-7t18*g4o(SN?+`ZeY>#U-;q6Ucn(a7;jtN;@!0fqLQQl z{WWxhni%2{W`e|yiP&#E8(60S)C;rwqpDi*g6V#|1rxdQuMam4<}xU&=QRLJ64_ip z#eD0n$TSs`Q$8<9jP9P9p(^F~f{uU`Ow@~;bX9+l4fH1GEV0ALk^PuUC{AaV&o~YEE5FO*46mIF?bR8aqhx&Dt?#4M z(#cW2H^&)HE8R!*1uHlh_(l{e?T7T~I>W-ZkH)JA% zP}4g2ksczqd7qhZaMW*s2tFr--v)JCSzq0zvnZDPwyBmUl$5L8g|wr!AW}8k)JMZW zLCY5^HqO9bK?lrdCLYu|+2@h~QV+{2fRMz8q2tns7t)mG*Yh)CeR5dJ_~Ci9n59ug zmn@~cK<&5pS;2WUEm1;M|Mil5BiROH||PshVW?xGGO< zpcG0(#DN5p;Iq=$zT{sHvMg*#{HI5*SJAO-@P|j<@`p#RDdci1JK1EucTv1dJ;kT1 zL<^(NME&|#RCW(h&HwMPxRJ(p3nDR~@+ylGG#-acP$~Ii7^XIvm$OnR3qSP5FQeRP z`ER3~Vq;f9YYHZmcfOfs5a;J%N+SJJD7P5!=DHbfTXfOWk#D5k`OKu_nszI0y^3aj zKJC-n=+$)pAvK?DCY#Uy2*?uxdA}Un$IU-Y{l&OLHVN&5`@@(Rhng zww+^NUQ6MWS;qU6u08T?A!PRg<)YvS9GSM0o z7jKY5j+h>y)I|?f7;A=MqFDk({n@QshXW1ra3aRl>j8W!-G+;}L|Z?W>s!HjO^zUD zLWh@u7g4Toe>mo^d)!edIhX!$%s)r{<(O+kg$h1zGMIReed&u8sRFv5&d!l5{B9y+ zZN0fgq>208Z?qtFB*>7{1Ve1i<0qQ%LWThBy_Z*Xh-YMW9)FvjuZ`oj4i zV4jitUjlP|cY&fQbXC5ZPs!zBY^Lc{Q|=09@AnWa7yRS-Qz5qO$nzCoySGYTK;j_l z)p>h=7hz)c*IEjwkYY(w9Y`V%_1v<8ww;_9@-BlRfr}j#OfQEP7Q^5r4YFU7f>zaYjQDe zYjt6X!9kh@NKf3t0P%!tVNBtxtONr*YMZnob?cw%6oP=Va}bJ4CAH8sxUmd9Gg(Ou z;r|mgcNIZEd5@1qB3a{XEzO$1KF>WVq$*zmFh0>}iA zGgOM6hlrf%`~lHj!`lS1f*nv;pxv@Gs&zgjzH%>E^$L;oeD%P0OLq#rN~FWU&ehP3bJz1JqUHT^k* zt}I}Nw}g>0i_U(niHj|5u`9@kRd=8snGSz3pFz2-DM_Zvqr~i2N^b1%M`Pr!#7oha zrQXoowWBR}QyW@to<2|~p;|WUx!qw)tC`wI)*a<Jf>AXoBogVta;o0d*f;rdLr6?kK0l(Hq^3brSVK?a42Y~j6j4Fv zTRj#E%Le3SY?|`id~*tND;q8M8@(yHklZ_Hu2+>5RNBg{^`?E_@qov&n5N;mz&)s7k3Hx ze$Kjeh&wR(J+7K=jrR($6Q={CwhPR%-ztB{mKJu3J6i4V(|u{9VDnM-CMYnJ6+S%@ z;$sVjFYPc|-%??CTF@ef_>~35aTC5oMu4-w#*2EQJDoRWAMM26vQVjcWcY7z$-OI%KnA$U137uxd`B+<%$# zV5Bo-d{+1qo{qyWEc&xf9uSF}c!8K2hSL26!rBl(gVJSk(SEPrxe$OUO;hT`#O9lF zfY?$e;9_`+=9R!xYtr^r6BV>onTiJutlGX4o2~}k^54{TuDgV@U2&uKh=C{hPiH8<Ne=ZHq07~vHhHRyyt2bb{ec~ zzky_u71#^7yq-In4xR6|ydNI#jvg-r`0?wF`#Als?wB&~PLQ^`kiH6~tw#h($7w9u z-$rui2a`KbNOU17t*Z9+-RPvNuE?`uqTR2~`?9Gcz(O)?gUEI4@Yw6lmDvI6!3~%q zHrB_Hc_@Qr0C-u8hWP8wd$u}-1V<%J!m6C{pZz|`L_Qh9Ton3*>P{lNl)XG7mnvR; zx~&BeGAgiDtfec#@w-uKDwO^6sWX|I_8}G}5V4@rD3=BUL#oJmHI6xMQC9UE8_*PoN+~lt zA*aIJR6dcw^Kc-Ze*YQVQ1-6Cnj0aU5*F)Cc%Y+mPnvTsYf#lUTpJVytq)sVF=x&4 zJkfUy2Gl|a%=90Aq4JKQK^Q6z$8e?~*)O{?a(rsS2B}7dBYwT)09;ys2lpOq_qa0M z1HC)Caav`?&hXLg@`Rk+Zc!*(KV8(K`DPvYi8$=w13sXV3{*ThXEN#Zj|k64M3&23 z6iItlr5@cO3D*>Zsy5^GmJ9P=BD`Z6*YE(4NEE@~zf<8qZ>Cc1|ApiI5b008J^lDg zg|~rYIgmmi6n$^Q@V5%@$wW;fD)tMizl&F(@b180goFDQ8Z>8+_`;W?=13Y2uFrp# zS)^x2tMut9;*3{?f%89v*&xFJ2J-*fzVWti!@d;pukAmk`m2v3{@|bca7uo&dxy11 z1*x{dFcDt+V%s%+Jdh^4y1ZP-OUqK}pYv-dD2=AWz6^2m>k|Q*`PRP-K-zFpbnC~h zSSBO2Cb>TtQPy)jWOW!Yq6MeV62Tygc+ZQg9%0sj-^pnrIG1&Q`^?bEm{-?~t*Cxj zZl2CgO&1ID#whmFa5hX640d(5Po&``s%;jg!6E8~5s_d-b2i{V;ROa}>2$UL0`FIp z1h|qx_50jWe%`dUz>wZnWv#7I*vsWYYm9*~bB-`X%rJlzW=s6!TCiTV%-V)QYJO{$osbfPeLjlwPw-vV;lZMR<|u3oe{CAJaU=q zmsS)zh@75A-x2Gqy8nP6_HP#|7BinEB1aVqaPCW0i_=Tb$&Fq$BJpDBy%}#Hi;KwQ6q#ILF{3%9$ZvUr zg)?Ss^N2F$cCKTH^|bPf8yR5ojw++7wsP}07$7LZ?OU@zcb$E2Y%w5L+=JvIVQ)jX zlE-Kc|8FfJ$;r=YV_=G#j2-quhA!iYaLnB=&lGZtAH~Y~$C2p}oeMoJB5+ z_%6uW&z1qPTX4d8#47v$Z#lBixz#;cclpo3 z{6{9fRBR8{1m~)X#^8n4+PLgiC<$aV{1*Oo8_bFqIAZXb@;(*bsZIG;B$x{pETK&) ztBwaUFbfhB1xr%(+e^&*Zf?=-=ZUaVURuw5-?(FVR+)H?-X+F4#7@IVxAf&qtju85 zC9-*hS8Ri=yDz)=yUB}6F^q(d461f*Fsi*Ar^X=$aTrMtVk zQzWFjQ|U&!;d>YAh%?UKv(G-~<3BIwS_2D^#r@pR?{#?ZR?$`q_mvuY|+qb!Q` zf&6v<8=Z74Vfpz(7&M@hzDcSS*?x14`^jrREJx$9NIIN0W6o2HP-}CECA{~*>22^k zd)w1I5?Dvh2wy*wl-`(-3~<>lzZki}u}5-HJ z6`rwoaTN)FSsS0?Z9jQCl{hEMeCs|N@fH{MoJQ84bNMLr6`^z0 zU@rocq}%^-E`N(IOwK)UkElm`%c60y<#j?NI-Icl(g*g-zJ)FJV#>`<+f~2%s^z0Y z&WiK z;JiDgpH=Py7aK<)0S<(_Iad}IWb&}g>r1SNchTpfZ=59l=C^Q8i9epElO(--cGlXc zndDqp1x}5rtbr3rp|*d@Y*%djq^X(p+33_pfOFd=?#tJsLpQEWm+kggl}8`yLR(&; zD3SCN29TsO+wr}+)J5K^3|FluG7$xSSL?IdJU1!|Sy@g;-eP&6dRF%mOKkfUJ`?wS zc9|~eHw2WRyI9A0zM8=w&gN}4eR{eFZi~iypTL zFNaWuRCPj0v?|b4@0=whkSEIfLuO0 z_|LigKk;2~oTtKTj@dTN88T@TD_}Etcv9@1l6_(_z9U5q1%|O2s^ZDIt-wbpZacV% z}SoR>|h)Q))p9LL-Vaq|sh@zFPb zBfUiZ4tn|Lx%?8DoE>kuCIz&Y5FEbrL2{zvan;Z`op2>Lda|^ih;!Lo@Bv=iVN{!U zRcIzv0V{*AmP~Noh7xCZLP>C^)%D&w`}N-Xc>+2%raqBiZFwP4%9?ZX+THn-enjs= z<|MvAU0NH(&WK0(6*&1NdsxxHMdM+QqnaY|C!g3iUd~5Lo-p*_vni}R$`8yFhDHGz zzWLOFn2mk$6uKkGX$R)_!8AFb$S#nWt?Eh6fIRm+g=7gwP??o(-@%|&D!*!QAqU^{ zaC8c1aYlQJj>bhoi(yM1+!0cs#8!|AvQqX#?gSn1Tb9KJ^11jjm@XIylOjT(5yuh1 z)jQ$xQ~{lzb_7wMj1PJK26;I)o|Af_SfJfMk*0N3T2EsBQCeU7QCint5Pb-zT-hG| z;;w%C>dvEJQZ9PJuIKv~9B8xsBSZAIBPz(#NnVbiVrd4poUS5BIxm%^ql_ukF&A{x zZ>cvm@>46-@kQ*bNf7t$LSyZ_9X`+llk@r1iFlC@JH!wm0R2Ykxv^VHO>SQ$B9zSN}Wl+z)3^7WA&6Rz1) zglc?y8t*voyj4cHW`5=%o=lwprV1ir*WLa4ApKUl!5+lcSwBL}P~E~;+>?PyWuIA2 z8mA}cqeXrdV06yaVW>wG;lRJ{RYao;Fr|Tn#x~ zwTNm8VO;Rz#mD++>G>Sw@Uk;x4{_D@<&9QXP1i=Ot9-tmi2FFDB1beDQTjLOdQ z1bl^5Q=;3cU4@~haVN@9{TvLHshv_2!G_?ebo9P=ie+>^3+?;)1SvUfce#{Pk)QJ~ z`jHyjzkq>F`}%MwOag^fDqcda=gcGvPdRB{0k%haj%K$6KOXLdw`lb1m&z&`a8nj! zyp!0+%j`opM-F2{>6Th#PF9An=ljRaX;l!NRMI2!(#K-RJEd*!>fS_;h@4OlakEvUX+Z zki0VMBM<`gw?v-K8#IbtG15{KPG-LUOjERme;PDCtZ!sR4!DSeS>$qH-FC>)Tim6pc1w#2_HJ0dexJ4tQvQ1>jzhV@biu{5tT-egH+wIKke-7o9&A*58O#zTs5AuRP3vn%ZBFMHQ^zLi8nA))Mwf|3%#;uueYZ0G9A^?O3K)4p+%>`z;O?*kh;0l z_)?5^NKzcn`D6BCGVX%Zds0eCA0)%0A4Cs_)PVn}xcj>#1xi#!Q8u@Rf6@`$CIbV6 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 aD~p%wrQC>e1;laS5*sz$TV<;Ep8N-+Y!#jW diff --git a/openmmlab_test/mmclassification-speed-benchmark/images/2022-07-13-14-06-28.png b/openmmlab_test/mmclassification-speed-benchmark/images/2022-07-13-14-06-28.png deleted file mode 100644 index c02c440b82c149324e0e6829a6988c506e82c31f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 13691 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 diff --git a/openmmlab_test/mmclassification-speed-benchmark/mmcls.egg-info/PKG-INFO b/openmmlab_test/mmclassification-speed-benchmark/mmcls.egg-info/PKG-INFO deleted file mode 100644 index f4f051f5..00000000 --- a/openmmlab_test/mmclassification-speed-benchmark/mmcls.egg-info/PKG-INFO +++ /dev/null @@ -1,116 +0,0 @@ -Metadata-Version: 1.1 -Name: mmcls -Version: 0.12.0 -Summary: OpenMMLab Image Classification Toolbox and Benchmark -Home-page: https://github.com/open-mmlab/mmclassification -Author: OpenMMLab -Author-email: openmmlab@gmail.com -License: Apache License 2.0 -Description-Content-Type: text/markdown -Description:

- - [![Build Status](https://github.com/open-mmlab/mmclassification/workflows/build/badge.svg)](https://github.com/open-mmlab/mmclassification/actions) - [![Documentation Status](https://readthedocs.org/projects/mmclassification/badge/?version=latest)](https://mmclassification.readthedocs.io/en/latest/?badge=latest) - [![codecov](https://codecov.io/gh/open-mmlab/mmclassification/branch/master/graph/badge.svg)](https://codecov.io/gh/open-mmlab/mmclassification) - [![license](https://img.shields.io/github/license/open-mmlab/mmclassification.svg)](https://github.com/open-mmlab/mmclassification/blob/master/LICENSE) - - ## Introduction - - English | [简体中文](/README_zh-CN.md) - - MMClassification is an open source image classification toolbox based on PyTorch. It is - a part of the [OpenMMLab](https://openmmlab.com/) project. - - Documentation: https://mmclassification.readthedocs.io/en/latest/ - - ![demo](https://user-images.githubusercontent.com/9102141/87268895-3e0d0780-c4fe-11ea-849e-6140b7e0d4de.gif) - - ### Major features - - - Various backbones and pretrained models - - Bag of training tricks - - Large-scale training configs - - High efficiency and extensibility - - ## License - - This project is released under the [Apache 2.0 license](LICENSE). - - ## Changelog - - v0.12.0 was released in 3/6/2021. - Please refer to [changelog.md](docs/changelog.md) for details and release history. - - ## Benchmark and model zoo - - Results and models are available in the [model zoo](docs/model_zoo.md). - - Supported backbones: - - - [x] ResNet - - [x] ResNeXt - - [x] SE-ResNet - - [x] SE-ResNeXt - - [x] RegNet - - [x] ShuffleNetV1 - - [x] ShuffleNetV2 - - [x] MobileNetV2 - - [x] MobileNetV3 - - ## Installation - - Please refer to [install.md](docs/install.md) for installation and dataset preparation. - - ## Getting Started - - Please see [getting_started.md](docs/getting_started.md) for the basic usage of MMClassification. There are also tutorials for [finetuning models](docs/tutorials/finetune.md), [adding new dataset](docs/tutorials/new_dataset.md), [designing data pipeline](docs/tutorials/data_pipeline.md), and [adding new modules](docs/tutorials/new_modules.md). - - ## Citation - - If you find this project useful in your research, please consider cite: - - ```BibTeX - @misc{2020mmclassification, - title={OpenMMLab's Image Classification Toolbox and Benchmark}, - author={MMClassification Contributors}, - howpublished = {\url{https://github.com/open-mmlab/mmclassification}}, - year={2020} - } - ``` - - ## Contributing - - We appreciate all contributions to improve MMClassification. - Please refer to [CONTRUBUTING.md](.github/CONTRIBUTING.md) for the contributing guideline. - - ## Acknowledgement - - MMClassification is an open source project that is contributed by researchers and engineers from various colleges and companies. We appreciate all the contributors who implement their methods or add new features, as well as users who give valuable feedbacks. - We wish that the toolbox and benchmark could serve the growing research community by providing a flexible toolkit to reimplement existing methods and develop their own new classifiers. - - ## Projects in OpenMMLab - - - [MMCV](https://github.com/open-mmlab/mmcv): OpenMMLab foundational library for computer vision. - - [MMClassification](https://github.com/open-mmlab/mmclassification): OpenMMLab image classification toolbox and benchmark. - - [MMDetection](https://github.com/open-mmlab/mmdetection): OpenMMLab detection toolbox and benchmark. - - [MMDetection3D](https://github.com/open-mmlab/mmdetection3d): OpenMMLab's next-generation platform for general 3D object detection. - - [MMSegmentation](https://github.com/open-mmlab/mmsegmentation): OpenMMLab semantic segmentation toolbox and benchmark. - - [MMAction2](https://github.com/open-mmlab/mmaction2): OpenMMLab's next-generation action understanding toolbox and benchmark. - - [MMTracking](https://github.com/open-mmlab/mmtracking): OpenMMLab video perception toolbox and benchmark. - - [MMPose](https://github.com/open-mmlab/mmpose): OpenMMLab pose estimation toolbox and benchmark. - - [MMEditing](https://github.com/open-mmlab/mmediting): OpenMMLab image and video editing toolbox. - - [MMOCR](https://github.com/open-mmlab/mmocr): OpenMMLab toolbox for text detection, recognition and understanding. - - [MMGeneration](https://github.com/open-mmlab/mmgeneration): OpenMMlab toolkit for generative models. - -Keywords: computer vision,image classification -Platform: UNKNOWN -Classifier: Development Status :: 4 - Beta -Classifier: License :: OSI Approved :: Apache Software License -Classifier: Operating System :: OS Independent -Classifier: Programming Language :: Python :: 3 -Classifier: Programming Language :: Python :: 3.5 -Classifier: Programming Language :: Python :: 3.6 -Classifier: Programming Language :: Python :: 3.7 -Classifier: Programming Language :: Python :: 3.8 diff --git a/openmmlab_test/mmclassification-speed-benchmark/mmcls.egg-info/SOURCES.txt b/openmmlab_test/mmclassification-speed-benchmark/mmcls.egg-info/SOURCES.txt deleted file mode 100644 index 5b6870c2..00000000 --- a/openmmlab_test/mmclassification-speed-benchmark/mmcls.egg-info/SOURCES.txt +++ /dev/null @@ -1,103 +0,0 @@ -MANIFEST.in -README.md -setup.cfg -setup.py -mmcls/__init__.py -mmcls/version.py -mmcls.egg-info/PKG-INFO -mmcls.egg-info/SOURCES.txt -mmcls.egg-info/dependency_links.txt -mmcls.egg-info/not-zip-safe -mmcls.egg-info/requires.txt -mmcls.egg-info/top_level.txt -mmcls/apis/__init__.py -mmcls/apis/inference.py -mmcls/apis/test.py -mmcls/apis/train.py -mmcls/core/__init__.py -mmcls/core/evaluation/__init__.py -mmcls/core/evaluation/eval_hooks.py -mmcls/core/evaluation/eval_metrics.py -mmcls/core/evaluation/mean_ap.py -mmcls/core/evaluation/multilabel_eval_metrics.py -mmcls/core/export/__init__.py -mmcls/core/export/test.py -mmcls/core/fp16/__init__.py -mmcls/core/fp16/decorators.py -mmcls/core/fp16/hooks.py -mmcls/core/fp16/utils.py -mmcls/core/utils/__init__.py -mmcls/core/utils/dist_utils.py -mmcls/core/utils/misc.py -mmcls/datasets/__init__.py -mmcls/datasets/base_dataset.py -mmcls/datasets/builder.py -mmcls/datasets/cifar.py -mmcls/datasets/dataset_wrappers.py -mmcls/datasets/dummy.py -mmcls/datasets/imagenet.py -mmcls/datasets/mnist.py -mmcls/datasets/multi_label.py -mmcls/datasets/utils.py -mmcls/datasets/voc.py -mmcls/datasets/pipelines/__init__.py -mmcls/datasets/pipelines/auto_augment.py -mmcls/datasets/pipelines/compose.py -mmcls/datasets/pipelines/formating.py -mmcls/datasets/pipelines/loading.py -mmcls/datasets/pipelines/transforms.py -mmcls/datasets/samplers/__init__.py -mmcls/datasets/samplers/distributed_sampler.py -mmcls/models/__init__.py -mmcls/models/builder.py -mmcls/models/backbones/__init__.py -mmcls/models/backbones/alexnet.py -mmcls/models/backbones/base_backbone.py -mmcls/models/backbones/lenet.py -mmcls/models/backbones/mobilenet_v2.py -mmcls/models/backbones/mobilenet_v3.py -mmcls/models/backbones/regnet.py -mmcls/models/backbones/resnest.py -mmcls/models/backbones/resnet.py -mmcls/models/backbones/resnet_cifar.py -mmcls/models/backbones/resnext.py -mmcls/models/backbones/seresnet.py -mmcls/models/backbones/seresnext.py -mmcls/models/backbones/shufflenet_v1.py -mmcls/models/backbones/shufflenet_v2.py -mmcls/models/backbones/vgg.py -mmcls/models/backbones/vision_transformer.py -mmcls/models/classifiers/__init__.py -mmcls/models/classifiers/base.py -mmcls/models/classifiers/image.py -mmcls/models/heads/__init__.py -mmcls/models/heads/base_head.py -mmcls/models/heads/cls_head.py -mmcls/models/heads/linear_head.py -mmcls/models/heads/multi_label_head.py -mmcls/models/heads/multi_label_linear_head.py -mmcls/models/heads/vision_transformer_head.py -mmcls/models/losses/__init__.py -mmcls/models/losses/accuracy.py -mmcls/models/losses/asymmetric_loss.py -mmcls/models/losses/cross_entropy_loss.py -mmcls/models/losses/focal_loss.py -mmcls/models/losses/label_smooth_loss.py -mmcls/models/losses/utils.py -mmcls/models/necks/__init__.py -mmcls/models/necks/gap.py -mmcls/models/utils/__init__.py -mmcls/models/utils/channel_shuffle.py -mmcls/models/utils/helpers.py -mmcls/models/utils/inverted_residual.py -mmcls/models/utils/make_divisible.py -mmcls/models/utils/se_layer.py -mmcls/models/utils/augment/__init__.py -mmcls/models/utils/augment/augments.py -mmcls/models/utils/augment/builder.py -mmcls/models/utils/augment/cutmix.py -mmcls/models/utils/augment/identity.py -mmcls/models/utils/augment/mixup.py -mmcls/utils/__init__.py -mmcls/utils/collect_env.py -mmcls/utils/logger.py \ No newline at end of file diff --git a/openmmlab_test/mmclassification-speed-benchmark/mmcls.egg-info/dependency_links.txt b/openmmlab_test/mmclassification-speed-benchmark/mmcls.egg-info/dependency_links.txt deleted file mode 100644 index 8b137891..00000000 --- a/openmmlab_test/mmclassification-speed-benchmark/mmcls.egg-info/dependency_links.txt +++ /dev/null @@ -1 +0,0 @@ - diff --git a/openmmlab_test/mmclassification-speed-benchmark/mmcls.egg-info/not-zip-safe b/openmmlab_test/mmclassification-speed-benchmark/mmcls.egg-info/not-zip-safe deleted file mode 100644 index 8b137891..00000000 --- a/openmmlab_test/mmclassification-speed-benchmark/mmcls.egg-info/not-zip-safe +++ /dev/null @@ -1 +0,0 @@ - diff --git a/openmmlab_test/mmclassification-speed-benchmark/mmcls.egg-info/requires.txt b/openmmlab_test/mmclassification-speed-benchmark/mmcls.egg-info/requires.txt deleted file mode 100644 index db5d81e0..00000000 --- a/openmmlab_test/mmclassification-speed-benchmark/mmcls.egg-info/requires.txt +++ /dev/null @@ -1,2 +0,0 @@ -matplotlib -numpy diff --git a/openmmlab_test/mmclassification-speed-benchmark/mmcls.egg-info/top_level.txt b/openmmlab_test/mmclassification-speed-benchmark/mmcls.egg-info/top_level.txt deleted file mode 100644 index bb1ddb4a..00000000 --- a/openmmlab_test/mmclassification-speed-benchmark/mmcls.egg-info/top_level.txt +++ /dev/null @@ -1 +0,0 @@ -mmcls diff --git a/openmmlab_test/mmclassification-speed-benchmark/mmcls/__init__.py b/openmmlab_test/mmclassification-speed-benchmark/mmcls/__init__.py deleted file mode 100644 index 2614f405..00000000 --- a/openmmlab_test/mmclassification-speed-benchmark/mmcls/__init__.py +++ /dev/null @@ -1,28 +0,0 @@ -import mmcv - -from .version import __version__ - - -def digit_version(version_str): - digit_version = [] - for x in version_str.split('.'): - if x.isdigit(): - digit_version.append(int(x)) - elif x.find('rc') != -1: - patch_version = x.split('rc') - digit_version.append(int(patch_version[0]) - 1) - digit_version.append(int(patch_version[1])) - return digit_version - - -mmcv_minimum_version = '1.3.1' -mmcv_maximum_version = '1.5.0' -mmcv_version = digit_version(mmcv.__version__) - - -assert (mmcv_version >= digit_version(mmcv_minimum_version) - and mmcv_version <= digit_version(mmcv_maximum_version)), \ - f'MMCV=={mmcv.__version__} is used but incompatible. ' \ - f'Please install mmcv>={mmcv_minimum_version}, <={mmcv_maximum_version}.' - -__all__ = ['__version__'] diff --git a/openmmlab_test/mmclassification-speed-benchmark/mmcls/__pycache__/__init__.cpython-36.pyc b/openmmlab_test/mmclassification-speed-benchmark/mmcls/__pycache__/__init__.cpython-36.pyc deleted file mode 100644 index c95462f4babbcf042902d0f293b16367aad0a69b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 800 zcmYjPO>fgc5Z&>v9XB7PLI{Dx!PiJ_(yHQ?R6zMSwL(Gy$pWn$?>61UcEawaDp7jD z9Qg-`GvY7pl~ex$7Z{raWvzLheKVSUGrPx~PV>jtXQKfn7#(FY@JLxfe%HzIZBIS#WTtIEg*KmwK%_$+NfE55^m@^j|%pXV3a;U1oEGy z75lHkJ7iI5aPFYzJe_I}CFn}r?H^oS-}z>qDeD@_2sK70Nak}{2uD?69lKD4=rY&Z zG-j-JojP&TtAp#fGf!-KxnX`1eFqQt{i=UC%VmFtL!Tym|BNDC2g!_5I8F^xQ`1C)!&Oqo-i92aci%qL^Br z(F8Nh&>BxHYEy?=i9NBY`xbePPmN(PIt_*~h6cSHFc<7On7js;pcTHE*JuG;Yy1LT zOjcHHE$|u%zs3uzvTJJ%6^yPrkO%fPrtYOJbcA%YvbQ*xeFQ2rR%fVH+tfZnU(q)} z>Hhbqa%-q-Wf1~NuOlHDiO4k*k{3CVmEd_ocwQBdt(IlVf>w*bdL|NiW_CK-;zPib zJ~;1;yqmLKdP@@+_#0L&MZVW-SU68NMy3dX^(N4O-V7D|n< zTM=4Ff8>*~PlldPqMVW*Ty-!M@#z01(mw^1d5)oc?EMv|aG)#^Z}ivMfT7KASYAW9 zvP^lU4!EQ|flVVSOO{h*gKp)_IBZ>W5YJJEd$*zP?gD)fg>O{5jH-AZZqq-I=)jm? zF9-7?V}k-nvn-9KVZ~%M$g((%q~tRmM-_aJ6In7wPo^x7=UF5!4L}aITtWF!b z*h4+E0sOM74|B)C9oz)Fhg-OdA7P=>>M*>;hoTLcSDqstz}u8fMjeD5)b6?a YnxOeOE9f$1PxS8~^*qOJK5SZl006DpssI20 diff --git a/openmmlab_test/mmclassification-speed-benchmark/mmcls/apis/__init__.py b/openmmlab_test/mmclassification-speed-benchmark/mmcls/apis/__init__.py deleted file mode 100644 index 0035632a..00000000 --- a/openmmlab_test/mmclassification-speed-benchmark/mmcls/apis/__init__.py +++ /dev/null @@ -1,8 +0,0 @@ -from .inference import inference_model, init_model, show_result_pyplot -from .test import multi_gpu_test, single_gpu_test -from .train import set_random_seed, train_model - -__all__ = [ - 'set_random_seed', 'train_model', 'init_model', 'inference_model', - 'multi_gpu_test', 'single_gpu_test', 'show_result_pyplot' -] diff --git a/openmmlab_test/mmclassification-speed-benchmark/mmcls/apis/__pycache__/__init__.cpython-36.pyc b/openmmlab_test/mmclassification-speed-benchmark/mmcls/apis/__pycache__/__init__.cpython-36.pyc deleted file mode 100644 index c8c3cb16b12d34e96544f1bbbacd89851d79cf06..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 460 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 NFTo)%Ip>@+{{<-mYV-gA diff --git a/openmmlab_test/mmclassification-speed-benchmark/mmcls/apis/__pycache__/train.cpython-36.pyc b/openmmlab_test/mmclassification-speed-benchmark/mmcls/apis/__pycache__/train.cpython-36.pyc deleted file mode 100644 index 31977e2efa57159d6ba277c495b2a908dcbdb643..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3834 zcmai1OOM>f5oVK|84l;YyIN@_KWIC#J&HWC9mfd-MM!LUVFB^Ruw*+SkWgH9&n##8 zm^3+(SKwZ<2E2!?;an0Rk9%^-59&iMIVI-+0es3=&DnUwo`RdsdEcY8he zFTZ(b_dgqk@ekv|a|!T|@D?^R3~q3i7=Ha_KGSp4xAfQcZG6q7kv9Ei+VWeB_^iZ9 z+kQKBeK+m+9gVY-ZrbyE8g3;0bl?xtp+D5~W-?0G{557AY(Tn|tfw3PMtaG=#Eegk zY+@T?bKjMJV+Q>Mn_uS65z~?_Xg%ZoxsjPaGY*E((S`+A{3}}i`bz#^7v$ZQd>itb zua@N_-sQc|nZL!?_<#=qUFGb)F<$>Cxo2l=s{RKb+zrd{!%&7vA`-QQd0dn--d&c0 zUnGq!wN9k_VY*0!ye|ZQKhO8oV0RfOJjfSioW@UtRNWdOmsuv{n5hv-{q&SfGFW$5 zGjXh)(wevCPSED&3UaxH46(x>;IP~m zrH8F@xT`?CC$8(^`LUc8w=_gEB6zRHSvkJtQBrtiP7Ylb#7_+LZ~?caafYD9k@xCu zo+n`cbWfCfa3>@XayXgdaFLOcD$l%WF3&WPws$|iyR+l%hS9#r_zf?fh{+AD;bECe z#AQV(Cee~-+2kpm51-P6l^@8Z&?)lG!n*>IPD8o>kj&f;lR}(ti;TG|rr|OvZ(XE4 z*xng;RI_%SvdKlt%oeJl?NgmJ%$8viXuJ(0Lp8X73XpcnIo*V6=v}DZQ`=DOGsDKF z93b@aGKRkzatoiY@7>(XQ*kq2h%8N$a5pGLQQoAK4~rt6#`RHotysXa*UmI)hT>+p zh>M%04C8FFI8XzGCa8C!4SpW_i#`U!by=6uYh#qxfRXDMB8P~0XyW3v@D|(1)6zIb zP9CvCr!*^MUTIIwBU3(8vCOX6j2*Hsj4#;K;1;)!%tNV`KN`IAXX}Xlnw9;EY#m^|j$XTagqvdDk$>ks%!j=HC-c|{M&;Ukoe#>5 zBNHd?5-6i`v%;NGk<{hNsakw^(&Qto+pQW^H@Kp;t#JdIdsPoQ+g~yHX1O(`^{xW5 ze#~O_d+SSf*w0=*W}tq=H;A_1BDlO(b832%@Q3}XJAVeyvsEACb9kS}+u)aI6%B0? z#4n#TnV~iQ4iaAZ!jY~NmHm||-SS0nzBK<UR0qk4AzD6)%0Z*znW;e;l+(2!5ZYM%*(hn8C4qi&N;!O-QqcVPR{g9PL zMImQ%asZnn)$nZ~4G=~^P0mhQzcqhlL!J3xY%3>Qron8nER@Yrq?ChtpYdS1&}VDh zl9be-;l9F&&{tp)EQBN(HF%uMeId^gRw6Rh0x5`jQEM=jIeA@~yudYPMbnw;&^oJo zRv%h<6-#{W-cEpz@^o?MN0=A1!>04(d3_#(H0L6j+)nZch3F1|Q(m<>jmh4O>Ta;W zb)HfsEw*uOyIeeqBSE&P(XPaG8{rxYc9+vBIOG^B=z}ZCt79gw;{zKP%O_WsS+QI! za*195rJ1yN88mx}O;FzS4X=jpE%IpZ9o(7xqx#M_m0cbzgmTmHvp^8Fc=Ab(MeqB-}Rc)9bB;pY|H8(DFi;_h`*^~#kU6$~evd}k4 zs=0MgMW*qrX+WmRmq|0FkaDnY4789xp=opF z`|lIO+l1+o47ywDe^=*_9IsvNJCut7Duw)jcso!Qtk&@Rr;}RNcPNR7*Kcb`dx07O z^af}4==!2M7YYd(UL0dE9M`&HbsfjHS=TaI6BoM4T+_jLl{tWhR@dyCChM9ua7{q; zt$ze{t)@lIfXz188ta=)%hnt;x@-uI-~f#zn)uPzLF)iswuW{3dM1BKHnZ(=1.1.4.') - from mmcls.core import Fp16OptimizerHook - - -def set_random_seed(seed, deterministic=False): - """Set random seed. - - Args: - seed (int): Seed to be used. - deterministic (bool): Whether to set the deterministic option for - CUDNN backend, i.e., set `torch.backends.cudnn.deterministic` - to True and `torch.backends.cudnn.benchmark` to False. - Default: False. - """ - random.seed(seed) - np.random.seed(seed) - torch.manual_seed(seed) - torch.cuda.manual_seed_all(seed) - if deterministic: - torch.backends.cudnn.deterministic = True - torch.backends.cudnn.benchmark = False - - -def train_model(model, - dataset, - cfg, - distributed=False, - validate=False, - timestamp=None, - device='cuda', - meta=None): - logger = get_root_logger(cfg.log_level) - - # prepare data loaders - dataset = dataset if isinstance(dataset, (list, tuple)) else [dataset] - - data_loaders = [ - build_dataloader( - ds, - cfg.data.samples_per_gpu, - cfg.data.workers_per_gpu, - # cfg.gpus will be ignored if distributed - num_gpus=len(cfg.gpu_ids), - dist=distributed, - round_up=True, - seed=cfg.seed) for ds in dataset - ] - - # put model on gpus - if distributed: - find_unused_parameters = cfg.get('find_unused_parameters', False) - # Sets the `find_unused_parameters` parameter in - # torch.nn.parallel.DistributedDataParallel - model = MMDistributedDataParallel( - model.cuda(), - device_ids=[torch.cuda.current_device()], - broadcast_buffers=False, - find_unused_parameters=find_unused_parameters) - else: - if device == 'cuda': - model = MMDataParallel( - model.cuda(cfg.gpu_ids[0]), device_ids=cfg.gpu_ids) - elif device == 'cpu': - model = model.cpu() - else: - raise ValueError(F'unsupported device name {device}.') - - # build runner - optimizer = build_optimizer(model, cfg.optimizer) - - if cfg.get('runner') is None: - cfg.runner = { - 'type': 'EpochBasedRunner', - 'max_epochs': cfg.total_epochs - } - warnings.warn( - 'config is now expected to have a `runner` section, ' - 'please set `runner` in your config.', UserWarning) - - runner = build_runner( - cfg.runner, - default_args=dict( - model=model, - batch_processor=None, - optimizer=optimizer, - work_dir=cfg.work_dir, - logger=logger, - meta=meta)) - - # an ugly walkaround to make the .log and .log.json filenames the same - runner.timestamp = timestamp - - # fp16 setting - fp16_cfg = cfg.get('fp16', None) - if fp16_cfg is not None: - optimizer_config = Fp16OptimizerHook( - **cfg.optimizer_config, **fp16_cfg, distributed=distributed) - elif distributed and 'type' not in cfg.optimizer_config: - optimizer_config = DistOptimizerHook(**cfg.optimizer_config) - else: - optimizer_config = cfg.optimizer_config - - # register hooks - runner.register_training_hooks( - cfg.lr_config, - optimizer_config, - cfg.checkpoint_config, - cfg.log_config, - cfg.get('momentum_config', None), - custom_hooks_config=cfg.get('custom_hooks', None)) - if distributed: - runner.register_hook(DistSamplerSeedHook()) - - # register eval hooks - if validate: - val_dataset = build_dataset(cfg.data.val, dict(test_mode=True)) - val_dataloader = build_dataloader( - val_dataset, - samples_per_gpu=cfg.data.samples_per_gpu, - workers_per_gpu=cfg.data.workers_per_gpu, - dist=distributed, - shuffle=False, - round_up=True) - eval_cfg = cfg.get('evaluation', {}) - eval_cfg['by_epoch'] = cfg.runner['type'] != 'IterBasedRunner' - eval_hook = DistEvalHook if distributed else EvalHook - runner.register_hook(eval_hook(val_dataloader, **eval_cfg)) - - if cfg.resume_from: - runner.resume(cfg.resume_from) - elif cfg.load_from: - runner.load_checkpoint(cfg.load_from) - runner.run(data_loaders, cfg.workflow) diff --git a/openmmlab_test/mmclassification-speed-benchmark/mmcls/core/__init__.py b/openmmlab_test/mmclassification-speed-benchmark/mmcls/core/__init__.py deleted file mode 100644 index ee0dac43..00000000 --- a/openmmlab_test/mmclassification-speed-benchmark/mmcls/core/__init__.py +++ /dev/null @@ -1,3 +0,0 @@ -from .evaluation import * # noqa: F401, F403 -from .fp16 import * # noqa: F401, F403 -from .utils import * # noqa: F401, F403 diff --git a/openmmlab_test/mmclassification-speed-benchmark/mmcls/core/__pycache__/__init__.cpython-36.pyc b/openmmlab_test/mmclassification-speed-benchmark/mmcls/core/__pycache__/__init__.cpython-36.pyc deleted file mode 100644 index ecf2dd9dbab24e28cf282202a60df621aa65a545..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 219 zcmXr!<>gw@?Y8KE>2kY);I&}4qe2vnlU zc#BcXPm}o;S87>ePHAFEW`5o+mb3yxvsWL#esmeR>AoP`d z<-~y(;DjeDwh+lbjXg8}`N)gSru_cxdjE?=(U0h#uL}0-aNL&w8A+leAe2B%V}kcs zC$OR`SkpD6G=+?2kkcFrS}guVmr&6PYFaP%mEORXZiBs+smx?93t7ra)^a1a^6aLf zXL9!`YR-R#PNF9E_1oS}@9wyMZ_KUF|5{Dzp9-$UtofvvFhe)H-V6-*Wcz!ccUQ~_ zW0fyPt3;1Je{nKdc;i~L?#ib}(`RlTM`Nc@@|@o(%Wo7r#rp)_d~ArnIC+%qj0HXj zW#iDOO%N#}N30PAqD0^pZH-tVvVafGj+QFS#SURG_ozbaahf> zhh-~1Fg`w(p-*7eQ?L16Y4)EI*7q4>I5>NV>=vaEzdyGJ1FAKn8UR8jo0OYc0HL{a zeb);Er`o|wX z>3?y{asK7(Tpsi%X!-;~ID!?}01tJoAxHm-`p7u@n>GQN8FXw+FZJt(nIprgCbfbvl z`dAJ1W2@1Vz&Z-M4t}^@Q~a2J%zwE!Embz!nbO_7mQO3GV4fdB!|WYb+oAq~%UPL? zbll~~a*)o8>M?&*8~K`HgQppxPM42H`Y+J*ClD3T7wnQTr*fC9YFxVd2bCw>%3q@Q zug>4yOZEr0WJ@OrmM&y-=|P6e24qV(z@l+-K0lT-B{Pe`vs6v<>9Afa0mRd(;K#YH z)`;(Ql&Cp z1=U1bHzr)eZuTU;OL7JqLv6zTBC+2f_Kl}yF;IIjrP?I+Npv9o>8JzT{{5SyQ8|%E zLgWXc7i_2N+plTbsce5O(^ViceXHL zlH}98N)mFUNjS`7fg7IKhOpTj*bN!0CPZ|Z#4qykn2#}-iV_Z{^JM6B-3vtHI z-@Fkqnx9dE(G{RkwAo1e90~z8W@C5h4p5H}O^qBiXYBpO{WH60{GKlxWB<}Qc7FHz zZ`}*;!e633jRVA(_mT6};WMxXJtyI+BAEa?9!hl@x9SLKQVwfbDcY^#Bq$|~k7Z4? zdYkm1oL94XWqc)5v4{g3N;M>eMjd4dg2{N(bRtayS$GX1YyLePhS>O19HDq_icANn)ZTL0r#~9*Jou$yf8VSdBE3M3h;Qs5^K`eV4@dNZ1W+Ka|xd zycOXaqS>W{f#*i;uo;H7KSTfKqL1 zyJbDSM1oU?%295m;H#bfPx2yhay6NWT=7G!_yI3xMBr%wl0B7^S*cRB;24$}*kr-0 zlI!%j1QSWVDkr=ga4^({tI6a{m6_C9>K!INDW`JF=v4KxvM6AeANI?V96lRK*j40Y z4(h`cUMim9hMx80mDjB$^0%S;r)i;AUTjo7JOMr#(b_8bjz|3sCC)k;*1{KnqPJS5c zT%np^!`1r}5NE!j>hq{eNo~&?v1@`lgA@T_SQPKqXuN^P`siaBs7sFmuUg~CVqK%(-k{&H=ufNt4f?lkMqkmEuR^Yl&}Gq5??a0Z zYQ*W>avgD^H1!UN4fg60J$^vqLlQQCe@NPoNW5|o_(sTyc)mo_^vag|uYvydH-b)Q zfs?qgs#I}P9m0%?Ne~AqV$kb6cN4`uz&zTCJ%fai=iw;DqW!R=XatA-W{G2QT8)fH zvfe*^U$aO5E4r&wBAtKDf&JIeomY9GyL4Kp3k0#KwYHPr8;&*MM>Sjjn9jDAXc2C1 Ko3$GU@BIg4#+Dxd diff --git a/openmmlab_test/mmclassification-speed-benchmark/mmcls/core/evaluation/__pycache__/eval_metrics.cpython-36.pyc b/openmmlab_test/mmclassification-speed-benchmark/mmcls/core/evaluation/__pycache__/eval_metrics.cpython-36.pyc deleted file mode 100644 index 91389ae54096840c5c2caa02210723e2751e92fe..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9312 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 GzyAO?Pm1jT diff --git a/openmmlab_test/mmclassification-speed-benchmark/mmcls/core/evaluation/__pycache__/mean_ap.cpython-36.pyc b/openmmlab_test/mmclassification-speed-benchmark/mmcls/core/evaluation/__pycache__/mean_ap.cpython-36.pyc deleted file mode 100644 index bb447b1c026976513a4fbc647f50167936cd21c8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2334 zcmb7FTW=#Z6!u(mYqRV{t1i6w0YtNE5|)(!Ri)Zec&(~Zfrxe$IWtZ&?TkIxPH#JT zA;8oA5cn(n1i$jszrYI|d(t#jw+lG3bH>O1&hha%pP#R;)_;5R)nL1Z(4T0jxgfuQ zE$Z@UD@CnvXYL1RS_e(FsLzbON>Q25Hi`!L8IaGx#a)s{lawfm)tF*(LIoL7oC_Ky zGT{slxxfU=gpE>)qm)S5sn;>Ioqa4PSw=*1K_x6%Y-z(@lBPJCh!a4R7WkAVqp_kf z&M0A+4{=7$l5CP$sKr)^`9P6`!8&V~on!Iww%EX@V=5>XI4RLe3!9}QolZv7cyrT2 z8P8rSdZu3Q>`(ER_$Bz*XL$VphBiLvzh>=c(-z+EvvTtuwp%FbzB(-)U&ZHttT?I#sXD7 z&Fee1-{#tG=fVj|C$x0x(t$)4X1M$tn(#ns)wIiU9SjpTp1ccL39A0?0{ea4lp%(FpzplYpX-vmX6<>5pHuzNMLyPvRF_8L|!mAz`trJdHU z%6m1%6=1?#uadKJxtlXxTcntFN&Y($4*>J8@4922(Js#^%d(UV`ie@`%`%(j$q?K# z*V2|brEz;eSu}=pKeh{GH{ybJsR@Z))isITCwV77*Z1e4>o2SZU{0>VfF3rz6{qS| zoq9RCP3Jx5u_GRVZb2C#e3-rqUH$=sLIqL|P=+fuL3Xa>0v&lXAQ0%m3{63ECltGH%0{@?qThyAN5L14;tt;Nyz2Y4<$p%#1aK)@P z?W#im&4YIr>@T_AyEmCF+C$$o>IAiKUrFf8680mFX=JB z;P#z(aWaJBn51d}IH$e4$Ytm10a=hs2G7S5om_ljD&Cr%2S|?jB#rTa10@cCdY3Pj zi|dQM*tlya1^Tvck0co_X|*HFqr5kQ0oo5QTK9Avo;ge15!HdUqQf$ObQn_wq^i9r zpXdPYK0g=cA=i~TkL%juc}~9(f(sqk+tSS)DXB2DF`vGmf=e9;!ba2;@GBjgVOR$Cug~hIJ!J9Nm>9!$uX&9(#SZe(r0jHy5 diff --git a/openmmlab_test/mmclassification-speed-benchmark/mmcls/core/evaluation/__pycache__/multilabel_eval_metrics.cpython-36.pyc b/openmmlab_test/mmclassification-speed-benchmark/mmcls/core/evaluation/__pycache__/multilabel_eval_metrics.cpython-36.pyc deleted file mode 100644 index 84371eb4e772b53ee48ab30bda7700846b759034..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2418 zcma)8OK%%D5GGeoOY&Q3oi-?V2nwsU<)lH2!U)5p2+4>h z8SQ%$Pws=JSF|Sm+=TS=n1u-$Lvn+s33Dfl{nErsU$~QwR;{ee>4g4Bwa2|dSzhSe z^vQE$FI(zYcz!}DNj`G&CHbq9{SPzdXv?7(V}I={xasug!Wg*d0x^~ zQ(hZ*56KMYcMWP#7#EV~&|A}_N_d$s{o;*_x`>>3uQ7G*wHJ7|$+!fabzSOLCv;o} zy`c%H0x#==F7wiDqDz6rE@)Z@&cGWlX)C2$NTK5^R(A_|nekP<)ZgSKShT*@uQ^@0 z+W(N~{KWg1jBD4@w{)xT=q~G8|JH=?N}Y^X^zxiuCwjF`9L9=Xo#U@r{K<6R zQPzhExsp4q^>=h&`z@Uf*jR^+jhT&gy>W#x-qf(D*EII@W>7?}E&ESVq6dD|8AX03 z*uje(c5saO?EVfr0&@iB$TDX=At7ff^AoOEkV-Zba<>!tN>vz!e=4Nk6;NN)N$qYF zT}xjqN{3Q(LKUXT4m)1hcX$xFg9&HP?k@8+J07XJ=v7W2)y5#T?0^Z66{PjqBh;#WEaE zM)8S|EDe|oU#RB%ROZXB$o|`dnI0g7-|4;W${fx*;oSQFuCT>q-2fVTf?BjeBnkdz*=VvSoESmFkzJ`~?cnMzYW^JNkyU1jo?G6m;_S$V9KkhXEBYK0(7g4C2;y*>EC! z5;_s>pP5pa@USD4sayz|s&*6(gvqHIXuQDAq_qmP>Gjrj_e85Uz0+o#ckse^2gj`(E?eUr zfjI($%l0=S8!-7-u-8jtv6l`-633B$($0j+_Tt!qg=jr=Yntq;p%8rc1g+JJeK~Ln zYR}$~d*alOMow!lMw^8I5mDRjwqudWu%nvD{^soJZZ9-h2@a@dSjgrUU85Uxi|!lBu?u=(`3wS6eu%qz6p3$a%_;jgsO*(#Irk4U4zREQ diff --git a/openmmlab_test/mmclassification-speed-benchmark/mmcls/core/evaluation/eval_hooks.py b/openmmlab_test/mmclassification-speed-benchmark/mmcls/core/evaluation/eval_hooks.py deleted file mode 100644 index 45c698d3..00000000 --- a/openmmlab_test/mmclassification-speed-benchmark/mmcls/core/evaluation/eval_hooks.py +++ /dev/null @@ -1,106 +0,0 @@ -import os.path as osp -import warnings - -from mmcv.runner import Hook -from torch.utils.data import DataLoader - - -class EvalHook(Hook): - """Evaluation hook. - - Args: - dataloader (DataLoader): A PyTorch dataloader. - interval (int): Evaluation interval (by epochs). Default: 1. - """ - - def __init__(self, dataloader, interval=1, by_epoch=True, **eval_kwargs): - warnings.warn( - 'DeprecationWarning: EvalHook and DistEvalHook in mmcls will be ' - 'deprecated, please install mmcv through master branch.') - if not isinstance(dataloader, DataLoader): - raise TypeError('dataloader must be a pytorch DataLoader, but got' - f' {type(dataloader)}') - self.dataloader = dataloader - self.interval = interval - self.eval_kwargs = eval_kwargs - self.by_epoch = by_epoch - - def after_train_epoch(self, runner): - if not self.by_epoch or not self.every_n_epochs(runner, self.interval): - return - from mmcls.apis import single_gpu_test - results = single_gpu_test(runner.model, self.dataloader, show=False) - self.evaluate(runner, results) - - def after_train_iter(self, runner): - if self.by_epoch or not self.every_n_iters(runner, self.interval): - return - from mmcls.apis import single_gpu_test - runner.log_buffer.clear() - results = single_gpu_test(runner.model, self.dataloader, show=False) - self.evaluate(runner, results) - - def evaluate(self, runner, results): - eval_res = self.dataloader.dataset.evaluate( - results, logger=runner.logger, **self.eval_kwargs) - for name, val in eval_res.items(): - runner.log_buffer.output[name] = val - runner.log_buffer.ready = True - - -class DistEvalHook(EvalHook): - """Distributed evaluation hook. - - Args: - dataloader (DataLoader): A PyTorch dataloader. - interval (int): Evaluation interval (by epochs). Default: 1. - tmpdir (str, optional): Temporary directory to save the results of all - processes. Default: None. - gpu_collect (bool): Whether to use gpu or cpu to collect results. - Default: False. - """ - - def __init__(self, - dataloader, - interval=1, - gpu_collect=False, - by_epoch=True, - **eval_kwargs): - warnings.warn( - 'DeprecationWarning: EvalHook and DistEvalHook in mmcls will be ' - 'deprecated, please install mmcv through master branch.') - if not isinstance(dataloader, DataLoader): - raise TypeError('dataloader must be a pytorch DataLoader, but got ' - f'{type(dataloader)}') - self.dataloader = dataloader - self.interval = interval - self.gpu_collect = gpu_collect - self.by_epoch = by_epoch - self.eval_kwargs = eval_kwargs - - def after_train_epoch(self, runner): - if not self.by_epoch or not self.every_n_epochs(runner, self.interval): - return - from mmcls.apis import multi_gpu_test - results = multi_gpu_test( - runner.model, - self.dataloader, - tmpdir=osp.join(runner.work_dir, '.eval_hook'), - gpu_collect=self.gpu_collect) - if runner.rank == 0: - print('\n') - self.evaluate(runner, results) - - def after_train_iter(self, runner): - if self.by_epoch or not self.every_n_iters(runner, self.interval): - return - from mmcls.apis import multi_gpu_test - runner.log_buffer.clear() - results = multi_gpu_test( - runner.model, - self.dataloader, - tmpdir=osp.join(runner.work_dir, '.eval_hook'), - gpu_collect=self.gpu_collect) - if runner.rank == 0: - print('\n') - self.evaluate(runner, results) diff --git a/openmmlab_test/mmclassification-speed-benchmark/mmcls/core/evaluation/eval_metrics.py b/openmmlab_test/mmclassification-speed-benchmark/mmcls/core/evaluation/eval_metrics.py deleted file mode 100644 index 64e4b953..00000000 --- a/openmmlab_test/mmclassification-speed-benchmark/mmcls/core/evaluation/eval_metrics.py +++ /dev/null @@ -1,235 +0,0 @@ -import numpy as np -import torch - - -def calculate_confusion_matrix(pred, target): - """Calculate confusion matrix according to the prediction and target. - - Args: - pred (torch.Tensor | np.array): The model prediction with shape (N, C). - target (torch.Tensor | np.array): The target of each prediction with - shape (N, 1) or (N,). - - Returns: - torch.Tensor: Confusion matrix with shape (C, C), where C is the number - of classes. - """ - - if isinstance(pred, np.ndarray): - pred = torch.from_numpy(pred) - if isinstance(target, np.ndarray): - target = torch.from_numpy(target) - assert ( - isinstance(pred, torch.Tensor) and isinstance(target, torch.Tensor)), \ - (f'pred and target should be torch.Tensor or np.ndarray, ' - f'but got {type(pred)} and {type(target)}.') - - num_classes = pred.size(1) - _, pred_label = pred.topk(1, dim=1) - pred_label = pred_label.view(-1) - target_label = target.view(-1) - assert len(pred_label) == len(target_label) - confusion_matrix = torch.zeros(num_classes, num_classes) - with torch.no_grad(): - for t, p in zip(target_label, pred_label): - confusion_matrix[t.long(), p.long()] += 1 - return confusion_matrix - - -def precision_recall_f1(pred, target, average_mode='macro', thrs=None): - """Calculate precision, recall and f1 score according to the prediction and - target. - - Args: - pred (torch.Tensor | np.array): The model prediction with shape (N, C). - target (torch.Tensor | np.array): The target of each prediction with - shape (N, 1) or (N,). - average_mode (str): The type of averaging performed on the result. - Options are 'macro' and 'none'. If 'none', the scores for each - class are returned. If 'macro', calculate metrics for each class, - and find their unweighted mean. - Defaults to 'macro'. - thrs (float | tuple[float], optional): Predictions with scores under - the thresholds are considered negative. Default to None. - - Returns: - float | np.array | list[float | np.array]: Precision, recall, f1 score. - If the ``average_mode`` is set to macro, np.array is used in favor - of float to give class-wise results. If the ``average_mode`` is set - to none, float is used to return a single value. - If ``thrs`` is a single float or None, the function will return - float or np.array. If ``thrs`` is a tuple, the function will return - a list containing metrics for each ``thrs`` condition. - """ - - allowed_average_mode = ['macro', 'none'] - if average_mode not in allowed_average_mode: - raise ValueError(f'Unsupport type of averaging {average_mode}.') - - if isinstance(pred, torch.Tensor): - pred = pred.numpy() - if isinstance(target, torch.Tensor): - target = target.numpy() - assert (isinstance(pred, np.ndarray) and isinstance(target, np.ndarray)),\ - (f'pred and target should be torch.Tensor or np.ndarray, ' - f'but got {type(pred)} and {type(target)}.') - - if thrs is None: - thrs = 0.0 - if isinstance(thrs, float): - thrs = (thrs, ) - return_single = True - elif isinstance(thrs, tuple): - return_single = False - else: - raise TypeError( - f'thrs should be float or tuple, but got {type(thrs)}.') - - label = np.indices(pred.shape)[1] - pred_label = np.argsort(pred, axis=1)[:, -1] - pred_score = np.sort(pred, axis=1)[:, -1] - - precisions = [] - recalls = [] - f1_scores = [] - for thr in thrs: - # Only prediction values larger than thr are counted as positive - _pred_label = pred_label.copy() - if thr is not None: - _pred_label[pred_score <= thr] = -1 - pred_positive = label == _pred_label.reshape(-1, 1) - gt_positive = label == target.reshape(-1, 1) - precision = (pred_positive & gt_positive).sum(0) / np.maximum( - pred_positive.sum(0), 1) * 100 - recall = (pred_positive & gt_positive).sum(0) / np.maximum( - gt_positive.sum(0), 1) * 100 - f1_score = 2 * precision * recall / np.maximum(precision + recall, - 1e-20) - if average_mode == 'macro': - precision = float(precision.mean()) - recall = float(recall.mean()) - f1_score = float(f1_score.mean()) - precisions.append(precision) - recalls.append(recall) - f1_scores.append(f1_score) - - if return_single: - return precisions[0], recalls[0], f1_scores[0] - else: - return precisions, recalls, f1_scores - - -def precision(pred, target, average_mode='macro', thrs=None): - """Calculate precision according to the prediction and target. - - Args: - pred (torch.Tensor | np.array): The model prediction with shape (N, C). - target (torch.Tensor | np.array): The target of each prediction with - shape (N, 1) or (N,). - average_mode (str): The type of averaging performed on the result. - Options are 'macro' and 'none'. If 'none', the scores for each - class are returned. If 'macro', calculate metrics for each class, - and find their unweighted mean. - Defaults to 'macro'. - thrs (float | tuple[float], optional): Predictions with scores under - the thresholds are considered negative. Default to None. - - Returns: - float | np.array | list[float | np.array]: Precision. - If the ``average_mode`` is set to macro, np.array is used in favor - of float to give class-wise results. If the ``average_mode`` is set - to none, float is used to return a single value. - If ``thrs`` is a single float or None, the function will return - float or np.array. If ``thrs`` is a tuple, the function will return - a list containing metrics for each ``thrs`` condition. - """ - precisions, _, _ = precision_recall_f1(pred, target, average_mode, thrs) - return precisions - - -def recall(pred, target, average_mode='macro', thrs=None): - """Calculate recall according to the prediction and target. - - Args: - pred (torch.Tensor | np.array): The model prediction with shape (N, C). - target (torch.Tensor | np.array): The target of each prediction with - shape (N, 1) or (N,). - average_mode (str): The type of averaging performed on the result. - Options are 'macro' and 'none'. If 'none', the scores for each - class are returned. If 'macro', calculate metrics for each class, - and find their unweighted mean. - Defaults to 'macro'. - thrs (float | tuple[float], optional): Predictions with scores under - the thresholds are considered negative. Default to None. - - Returns: - float | np.array | list[float | np.array]: Recall. - If the ``average_mode`` is set to macro, np.array is used in favor - of float to give class-wise results. If the ``average_mode`` is set - to none, float is used to return a single value. - If ``thrs`` is a single float or None, the function will return - float or np.array. If ``thrs`` is a tuple, the function will return - a list containing metrics for each ``thrs`` condition. - """ - _, recalls, _ = precision_recall_f1(pred, target, average_mode, thrs) - return recalls - - -def f1_score(pred, target, average_mode='macro', thrs=None): - """Calculate F1 score according to the prediction and target. - - Args: - pred (torch.Tensor | np.array): The model prediction with shape (N, C). - target (torch.Tensor | np.array): The target of each prediction with - shape (N, 1) or (N,). - average_mode (str): The type of averaging performed on the result. - Options are 'macro' and 'none'. If 'none', the scores for each - class are returned. If 'macro', calculate metrics for each class, - and find their unweighted mean. - Defaults to 'macro'. - thrs (float | tuple[float], optional): Predictions with scores under - the thresholds are considered negative. Default to None. - - Returns: - float | np.array | list[float | np.array]: F1 score. - If the ``average_mode`` is set to macro, np.array is used in favor - of float to give class-wise results. If the ``average_mode`` is set - to none, float is used to return a single value. - If ``thrs`` is a single float or None, the function will return - float or np.array. If ``thrs`` is a tuple, the function will return - a list containing metrics for each ``thrs`` condition. - """ - _, _, f1_scores = precision_recall_f1(pred, target, average_mode, thrs) - return f1_scores - - -def support(pred, target, average_mode='macro'): - """Calculate the total number of occurrences of each label according to the - prediction and target. - - Args: - pred (torch.Tensor | np.array): The model prediction with shape (N, C). - target (torch.Tensor | np.array): The target of each prediction with - shape (N, 1) or (N,). - average_mode (str): The type of averaging performed on the result. - Options are 'macro' and 'none'. If 'none', the scores for each - class are returned. If 'macro', calculate metrics for each class, - and find their unweighted sum. - Defaults to 'macro'. - - Returns: - float | np.array: Precision, recall, f1 score. - The function returns a single float if the average_mode is set to - macro, or a np.array with shape C if the average_mode is set to - none. - """ - confusion_matrix = calculate_confusion_matrix(pred, target) - with torch.no_grad(): - res = confusion_matrix.sum(1) - if average_mode == 'macro': - res = float(res.sum().numpy()) - elif average_mode == 'none': - res = res.numpy() - else: - raise ValueError(f'Unsupport type of averaging {average_mode}.') - return res diff --git a/openmmlab_test/mmclassification-speed-benchmark/mmcls/core/export/__init__.py b/openmmlab_test/mmclassification-speed-benchmark/mmcls/core/export/__init__.py deleted file mode 100644 index 4a4e2bf3..00000000 --- a/openmmlab_test/mmclassification-speed-benchmark/mmcls/core/export/__init__.py +++ /dev/null @@ -1,3 +0,0 @@ -from .test import ONNXRuntimeClassifier, TensorRTClassifier - -__all__ = ['ONNXRuntimeClassifier', 'TensorRTClassifier'] diff --git a/openmmlab_test/mmclassification-speed-benchmark/mmcls/core/export/test.py b/openmmlab_test/mmclassification-speed-benchmark/mmcls/core/export/test.py deleted file mode 100644 index 52245c55..00000000 --- a/openmmlab_test/mmclassification-speed-benchmark/mmcls/core/export/test.py +++ /dev/null @@ -1,95 +0,0 @@ -import warnings - -import numpy as np -import onnxruntime as ort -import torch - -from mmcls.models.classifiers import BaseClassifier - - -class ONNXRuntimeClassifier(BaseClassifier): - """Wrapper for classifier's inference with ONNXRuntime.""" - - def __init__(self, onnx_file, class_names, device_id): - super(ONNXRuntimeClassifier, self).__init__() - sess = ort.InferenceSession(onnx_file) - - providers = ['CPUExecutionProvider'] - options = [{}] - is_cuda_available = ort.get_device() == 'GPU' - if is_cuda_available: - providers.insert(0, 'CUDAExecutionProvider') - options.insert(0, {'device_id': device_id}) - sess.set_providers(providers, options) - - self.sess = sess - self.CLASSES = class_names - self.device_id = device_id - self.io_binding = sess.io_binding() - self.output_names = [_.name for _ in sess.get_outputs()] - self.is_cuda_available = is_cuda_available - - def simple_test(self, img, img_metas, **kwargs): - raise NotImplementedError('This method is not implemented.') - - def extract_feat(self, imgs): - raise NotImplementedError('This method is not implemented.') - - def forward_train(self, imgs, **kwargs): - raise NotImplementedError('This method is not implemented.') - - def forward_test(self, imgs, img_metas, **kwargs): - input_data = imgs - # set io binding for inputs/outputs - device_type = 'cuda' if self.is_cuda_available else 'cpu' - if not self.is_cuda_available: - input_data = input_data.cpu() - self.io_binding.bind_input( - name='input', - device_type=device_type, - device_id=self.device_id, - element_type=np.float32, - shape=input_data.shape, - buffer_ptr=input_data.data_ptr()) - - for name in self.output_names: - self.io_binding.bind_output(name) - # run session to get outputs - self.sess.run_with_iobinding(self.io_binding) - results = self.io_binding.copy_outputs_to_cpu()[0] - return list(results) - - -class TensorRTClassifier(BaseClassifier): - - def __init__(self, trt_file, class_names, device_id): - super(TensorRTClassifier, self).__init__() - from mmcv.tensorrt import TRTWraper, load_tensorrt_plugin - try: - load_tensorrt_plugin() - except (ImportError, ModuleNotFoundError): - warnings.warn('If input model has custom op from mmcv, \ - you may have to build mmcv with TensorRT from source.') - model = TRTWraper( - trt_file, input_names=['input'], output_names=['probs']) - - self.model = model - self.device_id = device_id - self.CLASSES = class_names - - def simple_test(self, img, img_metas, **kwargs): - raise NotImplementedError('This method is not implemented.') - - def extract_feat(self, imgs): - raise NotImplementedError('This method is not implemented.') - - def forward_train(self, imgs, **kwargs): - raise NotImplementedError('This method is not implemented.') - - def forward_test(self, imgs, img_metas, **kwargs): - input_data = imgs - with torch.cuda.device(self.device_id), torch.no_grad(): - results = self.model({'input': input_data})['probs'] - results = results.detach().cpu().numpy() - - return list(results) diff --git a/openmmlab_test/mmclassification-speed-benchmark/mmcls/core/fp16/__init__.py b/openmmlab_test/mmclassification-speed-benchmark/mmcls/core/fp16/__init__.py deleted file mode 100644 index cc655b7c..00000000 --- a/openmmlab_test/mmclassification-speed-benchmark/mmcls/core/fp16/__init__.py +++ /dev/null @@ -1,4 +0,0 @@ -from .decorators import auto_fp16, force_fp32 -from .hooks import Fp16OptimizerHook, wrap_fp16_model - -__all__ = ['auto_fp16', 'force_fp32', 'Fp16OptimizerHook', 'wrap_fp16_model'] diff --git a/openmmlab_test/mmclassification-speed-benchmark/mmcls/core/fp16/__pycache__/__init__.cpython-36.pyc b/openmmlab_test/mmclassification-speed-benchmark/mmcls/core/fp16/__pycache__/__init__.cpython-36.pyc deleted file mode 100644 index 67ce3af787a8786cf56a6eb2827226e2a692bb5b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 345 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 diff --git a/openmmlab_test/mmclassification-speed-benchmark/mmcls/core/fp16/__pycache__/utils.cpython-36.pyc b/openmmlab_test/mmclassification-speed-benchmark/mmcls/core/fp16/__pycache__/utils.cpython-36.pyc deleted file mode 100644 index ad373847dc6fc700768523abaa175daed321658a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 942 zcmaJ88x%xkSqRZk;Kqo;0)_MLIzH#Vvb#n&va3W& z3JN3|eggcZZK?PRshBw@hETB9%SJto!LCp+4G}+GPoaY=nFtzw1{kob{EY&K$jxf_dDxcomVRM9B)5%aOB`)%v~huGsazHw5U&-{^zpanUuNel$9#-JWEDc!`M!q zi!3oF9j79(X<6)TRP8J?RZhSMj;celewlgT;p|8RcUeP{968i*clhSvPvhTjOG-kMK!Z##kFQl zgl}{}b0GRu^p@tGBspqS;=T+_SKG@Lqf brA{r;S|=BE^HR<-)uT6Q=rOi<1d;a}jrif7 diff --git a/openmmlab_test/mmclassification-speed-benchmark/mmcls/core/fp16/decorators.py b/openmmlab_test/mmclassification-speed-benchmark/mmcls/core/fp16/decorators.py deleted file mode 100644 index 10ffbf89..00000000 --- a/openmmlab_test/mmclassification-speed-benchmark/mmcls/core/fp16/decorators.py +++ /dev/null @@ -1,160 +0,0 @@ -import functools -from inspect import getfullargspec - -import torch - -from .utils import cast_tensor_type - - -def auto_fp16(apply_to=None, out_fp32=False): - """Decorator to enable fp16 training automatically. - - This decorator is useful when you write custom modules and want to support - mixed precision training. If inputs arguments are fp32 tensors, they will - be converted to fp16 automatically. Arguments other than fp32 tensors are - ignored. - - Args: - apply_to (Iterable, optional): The argument names to be converted. - `None` indicates all arguments. - out_fp32 (bool): Whether to convert the output back to fp32. - - :Example: - - class MyModule1(nn.Module) - - # Convert x and y to fp16 - @auto_fp16() - def forward(self, x, y): - pass - - class MyModule2(nn.Module): - - # convert pred to fp16 - @auto_fp16(apply_to=('pred', )) - def do_something(self, pred, others): - pass - """ - - def auto_fp16_wrapper(old_func): - - @functools.wraps(old_func) - def new_func(*args, **kwargs): - # check if the module has set the attribute `fp16_enabled`, if not, - # just fallback to the original method. - if not isinstance(args[0], torch.nn.Module): - raise TypeError('@auto_fp16 can only be used to decorate the ' - 'method of nn.Module') - if not (hasattr(args[0], 'fp16_enabled') and args[0].fp16_enabled): - return old_func(*args, **kwargs) - # get the arg spec of the decorated method - args_info = getfullargspec(old_func) - # get the argument names to be casted - args_to_cast = args_info.args if apply_to is None else apply_to - # convert the args that need to be processed - new_args = [] - # NOTE: default args are not taken into consideration - if args: - arg_names = args_info.args[:len(args)] - for i, arg_name in enumerate(arg_names): - if arg_name in args_to_cast: - new_args.append( - cast_tensor_type(args[i], torch.float, torch.half)) - else: - new_args.append(args[i]) - # convert the kwargs that need to be processed - new_kwargs = {} - if kwargs: - for arg_name, arg_value in kwargs.items(): - if arg_name in args_to_cast: - new_kwargs[arg_name] = cast_tensor_type( - arg_value, torch.float, torch.half) - else: - new_kwargs[arg_name] = arg_value - # apply converted arguments to the decorated method - output = old_func(*new_args, **new_kwargs) - # cast the results back to fp32 if necessary - if out_fp32: - output = cast_tensor_type(output, torch.half, torch.float) - return output - - return new_func - - return auto_fp16_wrapper - - -def force_fp32(apply_to=None, out_fp16=False): - """Decorator to convert input arguments to fp32 in force. - - This decorator is useful when you write custom modules and want to support - mixed precision training. If there are some inputs that must be processed - in fp32 mode, then this decorator can handle it. If inputs arguments are - fp16 tensors, they will be converted to fp32 automatically. Arguments other - than fp16 tensors are ignored. - - Args: - apply_to (Iterable, optional): The argument names to be converted. - `None` indicates all arguments. - out_fp16 (bool): Whether to convert the output back to fp16. - - :Example: - - class MyModule1(nn.Module) - - # Convert x and y to fp32 - @force_fp32() - def loss(self, x, y): - pass - - class MyModule2(nn.Module): - - # convert pred to fp32 - @force_fp32(apply_to=('pred', )) - def post_process(self, pred, others): - pass - """ - - def force_fp32_wrapper(old_func): - - @functools.wraps(old_func) - def new_func(*args, **kwargs): - # check if the module has set the attribute `fp16_enabled`, if not, - # just fallback to the original method. - if not isinstance(args[0], torch.nn.Module): - raise TypeError('@force_fp32 can only be used to decorate the ' - 'method of nn.Module') - if not (hasattr(args[0], 'fp16_enabled') and args[0].fp16_enabled): - return old_func(*args, **kwargs) - # get the arg spec of the decorated method - args_info = getfullargspec(old_func) - # get the argument names to be casted - args_to_cast = args_info.args if apply_to is None else apply_to - # convert the args that need to be processed - new_args = [] - if args: - arg_names = args_info.args[:len(args)] - for i, arg_name in enumerate(arg_names): - if arg_name in args_to_cast: - new_args.append( - cast_tensor_type(args[i], torch.half, torch.float)) - else: - new_args.append(args[i]) - # convert the kwargs that need to be processed - new_kwargs = dict() - if kwargs: - for arg_name, arg_value in kwargs.items(): - if arg_name in args_to_cast: - new_kwargs[arg_name] = cast_tensor_type( - arg_value, torch.half, torch.float) - else: - new_kwargs[arg_name] = arg_value - # apply converted arguments to the decorated method - output = old_func(*new_args, **new_kwargs) - # cast the results back to fp32 if necessary - if out_fp16: - output = cast_tensor_type(output, torch.float, torch.half) - return output - - return new_func - - return force_fp32_wrapper diff --git a/openmmlab_test/mmclassification-speed-benchmark/mmcls/core/fp16/hooks.py b/openmmlab_test/mmclassification-speed-benchmark/mmcls/core/fp16/hooks.py deleted file mode 100644 index 565ac3a7..00000000 --- a/openmmlab_test/mmclassification-speed-benchmark/mmcls/core/fp16/hooks.py +++ /dev/null @@ -1,128 +0,0 @@ -import copy - -import torch -import torch.nn as nn -from mmcv.runner import OptimizerHook -from mmcv.utils.parrots_wrapper import _BatchNorm - -from ..utils import allreduce_grads -from .utils import cast_tensor_type - - -class Fp16OptimizerHook(OptimizerHook): - """FP16 optimizer hook. - - The steps of fp16 optimizer is as follows. - 1. Scale the loss value. - 2. BP in the fp16 model. - 2. Copy gradients from fp16 model to fp32 weights. - 3. Update fp32 weights. - 4. Copy updated parameters from fp32 weights to fp16 model. - - Refer to https://arxiv.org/abs/1710.03740 for more details. - - Args: - loss_scale (float): Scale factor multiplied with loss. - """ - - def __init__(self, - grad_clip=None, - coalesce=True, - bucket_size_mb=-1, - loss_scale=512., - distributed=True): - self.grad_clip = grad_clip - self.coalesce = coalesce - self.bucket_size_mb = bucket_size_mb - self.loss_scale = loss_scale - self.distributed = distributed - - def before_run(self, runner): - # keep a copy of fp32 weights - runner.optimizer.param_groups = copy.deepcopy( - runner.optimizer.param_groups) - # convert model to fp16 - wrap_fp16_model(runner.model) - - def copy_grads_to_fp32(self, fp16_net, fp32_weights): - """Copy gradients from fp16 model to fp32 weight copy.""" - for fp32_param, fp16_param in zip(fp32_weights, fp16_net.parameters()): - if fp16_param.grad is not None: - if fp32_param.grad is None: - fp32_param.grad = fp32_param.data.new(fp32_param.size()) - fp32_param.grad.copy_(fp16_param.grad) - - def copy_params_to_fp16(self, fp16_net, fp32_weights): - """Copy updated params from fp32 weight copy to fp16 model.""" - for fp16_param, fp32_param in zip(fp16_net.parameters(), fp32_weights): - fp16_param.data.copy_(fp32_param.data) - - def after_train_iter(self, runner): - # clear grads of last iteration - runner.model.zero_grad() - runner.optimizer.zero_grad() - # scale the loss value - scaled_loss = runner.outputs['loss'] * self.loss_scale - scaled_loss.backward() - # copy fp16 grads in the model to fp32 params in the optimizer - fp32_weights = [] - for param_group in runner.optimizer.param_groups: - fp32_weights += param_group['params'] - self.copy_grads_to_fp32(runner.model, fp32_weights) - # allreduce grads - if self.distributed: - allreduce_grads(fp32_weights, self.coalesce, self.bucket_size_mb) - # scale the gradients back - for param in fp32_weights: - if param.grad is not None: - param.grad.div_(self.loss_scale) - if self.grad_clip is not None: - self.clip_grads(fp32_weights) - # update fp32 params - runner.optimizer.step() - # copy fp32 params to the fp16 model - self.copy_params_to_fp16(runner.model, fp32_weights) - - -def wrap_fp16_model(model): - # convert model to fp16 - model.half() - # patch the normalization layers to make it work in fp32 mode - patch_norm_fp32(model) - # set `fp16_enabled` flag - for m in model.modules(): - if hasattr(m, 'fp16_enabled'): - m.fp16_enabled = True - - -def patch_norm_fp32(module): - if isinstance(module, (_BatchNorm, nn.GroupNorm)): - module.float() - module.forward = patch_forward_method(module.forward, torch.half, - torch.float) - for child in module.children(): - patch_norm_fp32(child) - return module - - -def patch_forward_method(func, src_type, dst_type, convert_output=True): - """Patch the forward method of a module. - - Args: - func (callable): The original forward method. - src_type (torch.dtype): Type of input arguments to be converted from. - dst_type (torch.dtype): Type of input arguments to be converted to. - convert_output (bool): Whether to convert the output back to src_type. - - Returns: - callable: The patched forward method. - """ - - def new_forward(*args, **kwargs): - output = func(*cast_tensor_type(args, src_type, dst_type), - **cast_tensor_type(kwargs, src_type, dst_type)) - if convert_output: - output = cast_tensor_type(output, dst_type, src_type) - return output - - return new_forward diff --git a/openmmlab_test/mmclassification-speed-benchmark/mmcls/core/fp16/utils.py b/openmmlab_test/mmclassification-speed-benchmark/mmcls/core/fp16/utils.py deleted file mode 100644 index ce691c79..00000000 --- a/openmmlab_test/mmclassification-speed-benchmark/mmcls/core/fp16/utils.py +++ /dev/null @@ -1,23 +0,0 @@ -from collections import abc - -import numpy as np -import torch - - -def cast_tensor_type(inputs, src_type, dst_type): - if isinstance(inputs, torch.Tensor): - return inputs.to(dst_type) - elif isinstance(inputs, str): - return inputs - elif isinstance(inputs, np.ndarray): - return inputs - elif isinstance(inputs, abc.Mapping): - return type(inputs)({ - k: cast_tensor_type(v, src_type, dst_type) - for k, v in inputs.items() - }) - elif isinstance(inputs, abc.Iterable): - return type(inputs)( - cast_tensor_type(item, src_type, dst_type) for item in inputs) - else: - return inputs diff --git a/openmmlab_test/mmclassification-speed-benchmark/mmcls/core/utils/__init__.py b/openmmlab_test/mmclassification-speed-benchmark/mmcls/core/utils/__init__.py deleted file mode 100644 index 0639e6cc..00000000 --- a/openmmlab_test/mmclassification-speed-benchmark/mmcls/core/utils/__init__.py +++ /dev/null @@ -1,4 +0,0 @@ -from .dist_utils import DistOptimizerHook, allreduce_grads -from .misc import multi_apply - -__all__ = ['allreduce_grads', 'DistOptimizerHook', 'multi_apply'] diff --git a/openmmlab_test/mmclassification-speed-benchmark/mmcls/core/utils/__pycache__/__init__.cpython-36.pyc b/openmmlab_test/mmclassification-speed-benchmark/mmcls/core/utils/__pycache__/__init__.cpython-36.pyc deleted file mode 100644 index 7bc56b5b72aff407d7a63b587a5da105ea74fe70..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 319 zcmX|6J5B^K3{7TcKU!D;#~7p~1ua4dQBZ*d-85Dv3A@q8lPJj)%NaNV2Y@T3rQ!-y zB!h${KiTqo&-Uedz4~~&?cWI@UpfDy&ecuMaGpUDNew~TQLMU(mcBAIHeHkJS~haF zt-G0=Ka+OxO|zh_(%GF3@zF(%`c?URYxn7d8{?H6g@Uc;GPE=u;b@`;?wmRJveQ=u znhX!^JgsClfiY?m{sx7T8q`5doU{PQrU0MBFN?6i&lB5ORLnXxAR697R3S1%VR#7o zMGGFa9X7!!B{#hq#16UNPlUjP^@>d!8Gs&i1h{aAw7fzqN29LGd!gKSN{_2wyL?xx diff --git a/openmmlab_test/mmclassification-speed-benchmark/mmcls/core/utils/__pycache__/dist_utils.cpython-36.pyc b/openmmlab_test/mmclassification-speed-benchmark/mmcls/core/utils/__pycache__/dist_utils.cpython-36.pyc deleted file mode 100644 index f47a142ec9aa7fdacc079f3b43fbf0b11697b7dd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2081 zcmZux%WfMt6eZ`S(MWRRz%|-5NZa%krHNcLK)W#lBQ?;V3#UK~1Q41MqahuSG!L1i zlGqrnlw~*F_6yoS=(lj&Rem9x_K*|XsS^%(=koHBm-lt<3xa^L*Win16TjLS$yrAPAzr?#d z0oVVL@E-5KAiOW4l|LSE?;#nkzl04kq^9>kav=rZ%`?4+_29u==Vg8(O&ZepD{mQ8_cUFRW$^slhU}8ZH)n5J7)WTF-KVv<>?*1TQ@h6X@f)Fi|?6i;A1*X<96Vk~X;} z;JMN!NsEFZ!}T+Y?b`hh-{fPC;#DwG>+mofm4$`p6tRnjf1D25(zuSyrco zP%znrJ#`&~(3tjV--~Dh&VH9^>{&j+7tl>AuR?48tbS~eY$#p*`~-$m?!7?0>=I-a zl{0nq(olIrdyS9U@K!!0)wSnW8y`8{SccF+l}v*sSh>s}jm|Qf*^Js@6KTyn#8jVy zpv=hQt4rF@DUksvaDexRc1Z)4XCi*gH^G7R3n~bPe+oJ-PmN zSS}uW`7Z`Ab6%(Q&q8^T|RBZhCJl+OFyW1D}pw x$H&(6xZfUYQO-eoi~qJ%+NQI;(7xv#PdD*)>+xNSH?EQTXrMmb2$IcY@E@s=4&49% diff --git a/openmmlab_test/mmclassification-speed-benchmark/mmcls/core/utils/__pycache__/misc.cpython-36.pyc b/openmmlab_test/mmclassification-speed-benchmark/mmcls/core/utils/__pycache__/misc.cpython-36.pyc deleted file mode 100644 index 46a5c1204e269308251e19d73ec336ac67eeb871..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 418 zcmYjNy-ve05I);Uf&L%{23{dU$p9llhzBSGTb9aATx!)$EZY$(N~bcSJ_0j551Use zUV({ogb*iv-<{9rPv7}sG8w+T+%7%<;1lr|6ssGAJ433VA__Dq2!V=L>=_DLCHIh} zUw8`{2?vH-FS#m7Y+$6nxWnu&kveKmJan)m9o>_fcCclhbPUhrmF{7ic3m>M(qw5!mTg^zgxd!f2J6R|i`2wsF~T=(Kj8ARu_AB1 zR4&)jmFH#?MjF-SoExJyN!)dS1mu()6FbIgma%XY-T0MKQ@MISO5S3 diff --git a/openmmlab_test/mmclassification-speed-benchmark/mmcls/core/utils/dist_utils.py b/openmmlab_test/mmclassification-speed-benchmark/mmcls/core/utils/dist_utils.py deleted file mode 100644 index 1c914b22..00000000 --- a/openmmlab_test/mmclassification-speed-benchmark/mmcls/core/utils/dist_utils.py +++ /dev/null @@ -1,56 +0,0 @@ -from collections import OrderedDict - -import torch.distributed as dist -from mmcv.runner import OptimizerHook -from torch._utils import (_flatten_dense_tensors, _take_tensors, - _unflatten_dense_tensors) - - -def _allreduce_coalesced(tensors, world_size, bucket_size_mb=-1): - if bucket_size_mb > 0: - bucket_size_bytes = bucket_size_mb * 1024 * 1024 - buckets = _take_tensors(tensors, bucket_size_bytes) - else: - buckets = OrderedDict() - for tensor in tensors: - tp = tensor.type() - if tp not in buckets: - buckets[tp] = [] - buckets[tp].append(tensor) - buckets = buckets.values() - - for bucket in buckets: - flat_tensors = _flatten_dense_tensors(bucket) - dist.all_reduce(flat_tensors) - flat_tensors.div_(world_size) - for tensor, synced in zip( - bucket, _unflatten_dense_tensors(flat_tensors, bucket)): - tensor.copy_(synced) - - -def allreduce_grads(params, coalesce=True, bucket_size_mb=-1): - grads = [ - param.grad.data for param in params - if param.requires_grad and param.grad is not None - ] - world_size = dist.get_world_size() - if coalesce: - _allreduce_coalesced(grads, world_size, bucket_size_mb) - else: - for tensor in grads: - dist.all_reduce(tensor.div_(world_size)) - - -class DistOptimizerHook(OptimizerHook): - - def __init__(self, grad_clip=None, coalesce=True, bucket_size_mb=-1): - self.grad_clip = grad_clip - self.coalesce = coalesce - self.bucket_size_mb = bucket_size_mb - - def after_train_iter(self, runner): - runner.optimizer.zero_grad() - runner.outputs['loss'].backward() - if self.grad_clip is not None: - self.clip_grads(runner.model.parameters()) - runner.optimizer.step() diff --git a/openmmlab_test/mmclassification-speed-benchmark/mmcls/datasets/__init__.py b/openmmlab_test/mmclassification-speed-benchmark/mmcls/datasets/__init__.py deleted file mode 100644 index aee67761..00000000 --- a/openmmlab_test/mmclassification-speed-benchmark/mmcls/datasets/__init__.py +++ /dev/null @@ -1,18 +0,0 @@ -from .base_dataset import BaseDataset -from .builder import DATASETS, PIPELINES, build_dataloader, build_dataset -from .cifar import CIFAR10, CIFAR100 -from .dataset_wrappers import (ClassBalancedDataset, ConcatDataset, - RepeatDataset) -from .dummy import DummyImageNet -from .imagenet import ImageNet -from .mnist import MNIST, FashionMNIST -from .multi_label import MultiLabelDataset -from .samplers import DistributedSampler -from .voc import VOC - -__all__ = [ - 'BaseDataset', 'ImageNet', 'CIFAR10', 'CIFAR100', 'MNIST', 'FashionMNIST', - 'VOC', 'MultiLabelDataset', 'build_dataloader', 'build_dataset', 'Compose', - 'DistributedSampler', 'ConcatDataset', 'RepeatDataset', 'DummyImageNet', - 'ClassBalancedDataset', 'DATASETS', 'PIPELINES' -] diff --git a/openmmlab_test/mmclassification-speed-benchmark/mmcls/datasets/__pycache__/__init__.cpython-36.pyc b/openmmlab_test/mmclassification-speed-benchmark/mmcls/datasets/__pycache__/__init__.cpython-36.pyc deleted file mode 100644 index 147b6e28741dcc5621ffbef483c51752e713582f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 915 zcmYk4-%i^w6vpGGY11~Le<)B2+kG!snRYu(gBGMp&>@O;;hV_qF%ZosiR^R}@305i z-eS+;+gIg&u4}A9i3D_Fw?}FoXj* zyz9{ec(w3Gum2EZV?=c8lqo)CrC~X$>Tr5;bFw(QS?I>q?CR`dHa}bF&T^d!NWgT7 zoB@|QeqOQfRdjtaJ3qO8d#uAJaXj*Metv~(}mqD(K?l8gUdi0(~ORmya^E;%e1 z7J^ID>VN(;kriWJ#ujyp&|=G?ZDEgEb}Rymnt?HxW05N^yLPE*(Xxmv8W!flc(Q6R zA05(YX##bLnS9(hU3Zyr`P}$o`(TycGWq;9v}4mY?w>q!TgS?3!==Em805@GXk#%QP>15wV8_P^#UXIs~kgb9%(KRtP14O#rX8sF#0 z$9cgsM6*j$a#fBISN43<+teJVIgBG!a1KXHo~`bY$uF)!jh~FDagwB2S|-Vx;z5V+ fF^9F_AM7<$LxYG6NQd+*5sA#xGV&wRBq8|+O7ZMO diff --git a/openmmlab_test/mmclassification-speed-benchmark/mmcls/datasets/__pycache__/base_dataset.cpython-36.pyc b/openmmlab_test/mmclassification-speed-benchmark/mmcls/datasets/__pycache__/base_dataset.cpython-36.pyc deleted file mode 100644 index 792f17819d1afba820178a548f20ffc0ee37860e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6745 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 mQOS*DWmlqhe9L1!P0ec=^@L>aFZwLqrrD%&0R zhpDR0;8puH5gZceJiqJ+qY>s=J+)jv!i<4@Ec~#iQKs9 zH%+@1d2!2c#cjWB`t_(2cl|E38{Cby;-255M35KP&IoTVZ26_xZ`~4anAyWwaZBt@tuqUBw0H|-zXkto`2RNF;T_(6Mg8~q4c_C| zp!GiA=GR{l|2v$XkpAvh;2k;c)1t8qqz;1!o0Bw(0xh7~nF&4Oq0*x;nWlZKaG#4A zbmgk(jQEdgHWc-Ds5k}KNle#PY_09sUOSX%Cnvh5>j;26 z$gMw;DdjeIUb#6rBxm%Du4~D!a>8qSgx43A{B3UQ2J`{UKan#FTJ9eFgVZOLR1>8B zkULkTyh^IAL9=ecT6*$;ofJYpO|3(bB(JzjIE=zY*3>iG2kfgvA!nFFts~sKLD`odl7(4~>m<;po*;NH}Ul zwxB9%I*f&qThR8q=}RG%;mAnOW#21$)#js987yI)k{w)WmgADb3ssmXjc^tY?g9!k zH&roS{Mt*Irn`6gvV0X}HI9&Y$_Tb!+YO*u}rAr>E5wK=7TW0J|nBa=zEFKHV z(&@Qt8%eO|+{wEv9Eic)^Q}?gIM9HA3cnDzdIQJBhNr1q07I{C`1ACX#X+)SDjQeO z3B`2EG9`@9XgNa&0p>S0L_pr&Cdp#-N4@Qk0ggRIXhAn;VZz=OiVLeTQ0&e)O(Ov3 zQmQ_OXCHF~15=Vz57=RuTMpPzX5vDNnrG8#B+eCmJ{K5kbaOKWeG@?zXeQvCub5b- zllg@X#P}WRWtt^?lr6tWznNn&hZ{s9ndv#kXG50piUs^FXvOb=*yn)FtQ7=g5YxoBUvmGjc$)c83bs;0m5q)iG$27k6U@#o(rAH z7gc+zmLN9>ew1LV8q8EF2jmi^5Tm)!|;)x^g1=jlwgW9wDbe zVR<>r4JG6pv)V~Q3= zepI4mGJ08IJ}-I~_fskGLl{+ep(3|E>Of-eLG94GdPtS?VQ{sxqXwY9Zg=)7gp|^QFyAHw>W`}Ofh6uvMlNlDW1m0 z<$kSbZUE-SIpe&U^IO#n#`KDJ2K5l9*+>N0}Nx1w^223kv)IQ@HcXo(q)NhH=;Sb_gwh-cSAy{%uyu diff --git a/openmmlab_test/mmclassification-speed-benchmark/mmcls/datasets/__pycache__/cifar.cpython-36.pyc b/openmmlab_test/mmclassification-speed-benchmark/mmcls/datasets/__pycache__/cifar.cpython-36.pyc deleted file mode 100644 index c6cde2ace627ed396b663e5f5b7c394afd4c05d6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4139 zcmbVPTeBNS5#F0ttJ^v9u@hh7BwLVz5^yA~c2}1WQnq88q6!T0aS;$nHoH5s((3F* zo*mgfDv5_EkEEb@CA`C*;Rnnsy!bEh0zD(?9NR^Oz^bNqrnhINXS)0AmfdJn|MI&# z!Ss?O{at$DDM9}hwBnCIkc8w!8gJk7?yZa!!B@wcc$a4SxC}idG1AJoB1=d`T2f7G zPo zjN}ukReKJ4Ne@~wYfLcpP+U+i&Z7Le3~b=m?)U}1>reO$G)rVh#jLV;M;1S8K?rZifTaXr~&i<9Zr-6b-x&%FWTtP?ZGP;6Z`$`>G z(d+2y7t*+fuA%GjuA>|14R|-uO*r$Lto*@G?%#fBb(eqpY}Yg2n^HP2-tBarK7HB_ zi#E+kp3%IG(W3L)QxY#bVI29SJ*8>#{%4-KyOVacYQpnq8W(1q&J&#CjQTXrGZQ#z zj^ZfB$c#vy3c>v@lbB8yK|9RT&ioAa3a6bXaRJjhL6QfZ)GsI|9r0nuM_VHlJ3Z!S zrul6%%OCsin)lqUC01Wv7D^sl-Q&QgV4vc6ezqL!H~spf@mZkDG|$=;4mw#bUq4^% zB|bAlcNp1St2>Ma)-W3N20hD<>|o^Lfnz%(pVhgxp3uRwKz=j|{V25DUe9s-XyDq> zz;+QH^oJoDxY0}UJ!T>&2z0S;f1x0&fWI0(BSX#0T` zb?xB@=Hq_f?ZE~E*Lq3bVP@ZUkTrBH*LHgdMgFks_6GsR$QfAOuJyA1E;F5BFLW#i zIacI4AxsT=J?sV!s51!dFkn@RA#lWbLAq;DCC@iWAJmnR<%Pn3^It z+< zsYX7f<(aXOU@T@7pVA8AlIou%RQfYu%jYtTszm~{wpKG8-u1OQ0eP<>=)tqkSL$8q zlO<@NtxNQ9)|_1eDZa|lO53PwonBt)NZ%;Gf3PmoE3?;DWsYB8Dr*B|8nf3|5c}7q zjSP5KT^Xl3`3LY1W>lRdhS=c^bhLqUh|x`c+KIHTJiA5T+;;>L;(V`N{F7#F@U=orxRvO=vMOizu;+U;xObL z5GCK@gimjogwJJ7@0D~w%ABn(NWy9Y4dw(#@iTD~tV}0M5BwICgN(z5On*{PKRjh+f{Up?$FL*uvtphXpok}O zoQPd@8P8b>l=shA2{K{dX*HNu;3Q%iOgLrLr#VTGSHw%q4)?aiXm<=A$RhBWA#Sf& zq^u&C;sA2QN{~*-8LNsLR$=84bvhwoUF7LKq-R2z0 zG}x&IO(59}IuuZ7_7Y+t8RA`C%T!-+Bq|{V#!AtnWmMtlL=C{a5@5?aYlT*3Rlqf< zCm?Rs6-T`iGOkP4Ia<{&5CcgNx77z10lPfDyN^0RYkpBCw-BUWYDW1YLuO9QFehX& zrx>-DE%Vp;!VLY)T)YszKYBzK*rfSIJjayWgj10>fwW}u7VlpNvi#-$wBI-0tyL#3 z-=ojTfD>*}G6cdj?#zT&Wvu>ikl>ny0`!c@;s+Zk3^JS_zWvWJb+)ljTTIw zKr0S_@H;pXzbXXDML@iYqYqjK%b8xNQhm=>;`~`Gn;R_`uaHIMN%s2Ei+SJix`Ts#R45Y-y;5 zWz-0l522kuJbrIMD>(V@H9l1E#+!XjJi1L2VJObdv>oM*?15|P`?KKfi>{M zC?wpxta*{+_hsc^G_V89h3eKvcoYth(~SbB=k)DigrKr)satR12qfy12dx_U4Il9E zC7*EeDJLQXzTUfp6I~GDP9DsC46V2V1Tw+7JMGih5`T%>ylNnEumHq`>f&NRj=4|`vfh(6S!5X|+v)@=ZYTnFS&nemgqmX!^O}Hg zjA5k(jgvye_O@_2BzOYrVzP@j;ow5a{}e9FcyAk)@AG=E;ME>aiv}des$5s<9QRa6 IhCx&QHzbT>n*aa+ diff --git a/openmmlab_test/mmclassification-speed-benchmark/mmcls/datasets/__pycache__/dataset_wrappers.cpython-36.pyc b/openmmlab_test/mmclassification-speed-benchmark/mmcls/datasets/__pycache__/dataset_wrappers.cpython-36.pyc deleted file mode 100644 index e0df70a1793d943d9b3f546704c60d1979b7e044..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6115 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 diff --git a/openmmlab_test/mmclassification-speed-benchmark/mmcls/datasets/__pycache__/dummy.cpython-36.pyc b/openmmlab_test/mmclassification-speed-benchmark/mmcls/datasets/__pycache__/dummy.cpython-36.pyc deleted file mode 100644 index 8d047790f95a1b9fd88caa9f58aa14679ff5afa9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1602 zcmZ8h&2Aev5GMCeD_Kt6CN+{GXt!vKVu4zlqCY4C!Dt*OMGqAM*gyaQ0kaY*iR%8D zr0U36pKKtP1U>X6+UF?x5s`CKzsU3Dk9j&317S}7dfLpROF`71 z8B^U&lH=p!ol@}9!*r4 zH;QjpMyRA&Sj+i}8J#p&!JAaeDEcHS z%A@pd^x&I2Up5BD$R;)idISAZsB&pJhA1CgPs5C$DMX z7(C$MRj1G8*Z`B&?lm}GqvL^da`Q@bdvBEFzu?p0;Wz+2Z1_ii&{O>dK<%q8r!`@u z2)KiPL(j)53{o2&~9aA${B>NTotkY43;!*BGjW> zG^8DRjoyHM^5IoF|GzPI2ZM)k8-rY=xnRt87$(6Y!*Q3fqeYsnS6Ynmaty(Yz>fMD z0fVVN2e6y#SdT@PUB(+P3{>4lr6%?mH_Ty;6%az~1E(865z}j%3fGXvVv$$N6g)Godo8efCZ>C&#dMgIfD CWt(9D diff --git a/openmmlab_test/mmclassification-speed-benchmark/mmcls/datasets/__pycache__/imagenet.cpython-36.pyc b/openmmlab_test/mmclassification-speed-benchmark/mmcls/datasets/__pycache__/imagenet.cpython-36.pyc deleted file mode 100644 index 4bb666e4bd08db26f77832e3bc5f322c423d449b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 31874 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 diff --git a/openmmlab_test/mmclassification-speed-benchmark/mmcls/datasets/__pycache__/voc.cpython-36.pyc b/openmmlab_test/mmclassification-speed-benchmark/mmcls/datasets/__pycache__/voc.cpython-36.pyc deleted file mode 100644 index a7911628f4aaaf1a3674c9ca7e0a73d42f70a5ff..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2156 zcmZ8i&5zSY6d!-YcASq5uq;q2HT{s9?Xp6pKv8!El`Co-&m?QF?Flmz z*o~YX8YC{I|3Jl^{zaAM+Dp0h+)MkOv+S`_JZ6Z zv__rhggUIXuogzJLXBy6nM&?NLzdl)R3w>- zQTFY#dPvC6fnX#sC;|J7z@qO2_6ssH=o&ru+zV>-JiYLo1kMX$lfZ>LFKX+-x0|yY zkMBn^jFavL1fOJ4 z!L&O};)6J2+8!o?0`f>{2h=FwS;MK+RvZZgrEBqSlpxKY=>|=Tq!_Dch;o#Vb#0dm z$#gyEii=^g$FwtHLh?d4CZLW{ybzSgUB)KbmV6ZHni5e`=(>8E^CE$BF~$=g6P5+5 z0ZU#6P(&FeS(vFgBBk-G0l9+r)Y@~zN7O7yXcwNUQOMBG5K)MheJ^mq^DCDxf0_K@ z5;FUAGb#$Mx=Ar&qDz;l=^n61bVq{c-6S7}6TwEwe!u5{ol`JhU_EIs48dC!hTt|F zJCxEkp4I+?D4Vh^A-L$7;1|nA+Sz*+iLr!YsE1*kMN)?0@8q9vAWb$$_{CmSHVP4}ch_4d3w0 zSrc6Dzcu$LnjMgEU~R&Z4#ap&=7xgKfC!okV{Y#MU79z^qrc`BMAiBY`rwr{w-s~@ zNI+C8p8d*PSo4~4Qn#$ZDW`N&Z$aiRX!Bsz_kS$iv`%3Ublso(rJwrLSr}qMPFYXNOqe`%EMbQMmVT^Q7VY0Xzk19Yuade( z4a^WQT-z8m*p=#F0`mq$ul73PJ-pYi+6sM;fm^vlrFNEt_yi;Z4|{_5;fZp;EjHcxqCh$A()->B@$MT>LO?dNw*EVOX*pdHN+glabj{@cr5!k>2 zK4e7r2srXY6QPCBMp!|>E*7T{P9vN_zzHDEBCH{tLpYCc0ifsM=tB2lbopVJb2`nC zZieBLX_OuAxM4_n9EJk@tmcZi4U}#j&aRkc8SEZ~s%MDzQ4%9o4ajOpqn(~6^6>105TB}&Pae^nV;5C=qcEZIE1?@Xesh<_FKpzj2sVbYXX4Q7%9vvxPUPHMU&iG+etRUk0a-RNi%rOG G$M_F2j$Q`< diff --git a/openmmlab_test/mmclassification-speed-benchmark/mmcls/datasets/builder.py b/openmmlab_test/mmclassification-speed-benchmark/mmcls/datasets/builder.py deleted file mode 100644 index ebef4c9b..00000000 --- a/openmmlab_test/mmclassification-speed-benchmark/mmcls/datasets/builder.py +++ /dev/null @@ -1,108 +0,0 @@ -import platform -import random -from functools import partial - -import numpy as np -from mmcv.parallel import collate -from mmcv.runner import get_dist_info -from mmcv.utils import Registry, build_from_cfg -from torch.utils.data import DataLoader - -from .samplers import DistributedSampler - -if platform.system() != 'Windows': - # https://github.com/pytorch/pytorch/issues/973 - import resource - rlimit = resource.getrlimit(resource.RLIMIT_NOFILE) - hard_limit = rlimit[1] - soft_limit = min(4096, hard_limit) - resource.setrlimit(resource.RLIMIT_NOFILE, (soft_limit, hard_limit)) - -DATASETS = Registry('dataset') -PIPELINES = Registry('pipeline') - - -def build_dataset(cfg, default_args=None): - from .dataset_wrappers import (ConcatDataset, RepeatDataset, - ClassBalancedDataset) - if isinstance(cfg, (list, tuple)): - dataset = ConcatDataset([build_dataset(c, default_args) for c in cfg]) - elif cfg['type'] == 'RepeatDataset': - dataset = RepeatDataset( - build_dataset(cfg['dataset'], default_args), cfg['times']) - elif cfg['type'] == 'ClassBalancedDataset': - dataset = ClassBalancedDataset( - build_dataset(cfg['dataset'], default_args), cfg['oversample_thr']) - else: - dataset = build_from_cfg(cfg, DATASETS, default_args) - - return dataset - - -def build_dataloader(dataset, - samples_per_gpu, - workers_per_gpu, - num_gpus=1, - dist=True, - shuffle=True, - round_up=True, - seed=None, - **kwargs): - """Build PyTorch DataLoader. - - In distributed training, each GPU/process has a dataloader. - In non-distributed training, there is only one dataloader for all GPUs. - - Args: - dataset (Dataset): A PyTorch dataset. - samples_per_gpu (int): Number of training samples on each GPU, i.e., - batch size of each GPU. - workers_per_gpu (int): How many subprocesses to use for data loading - for each GPU. - num_gpus (int): Number of GPUs. Only used in non-distributed training. - dist (bool): Distributed training/test or not. Default: True. - shuffle (bool): Whether to shuffle the data at every epoch. - Default: True. - round_up (bool): Whether to round up the length of dataset by adding - extra samples to make it evenly divisible. Default: True. - kwargs: any keyword argument to be used to initialize DataLoader - - Returns: - DataLoader: A PyTorch dataloader. - """ - rank, world_size = get_dist_info() - if dist: - sampler = DistributedSampler( - dataset, world_size, rank, shuffle=shuffle, round_up=round_up) - shuffle = False - batch_size = samples_per_gpu - num_workers = workers_per_gpu - else: - sampler = None - batch_size = num_gpus * samples_per_gpu - num_workers = num_gpus * workers_per_gpu - - init_fn = partial( - worker_init_fn, num_workers=num_workers, rank=rank, - seed=seed) if seed is not None else None - - data_loader = DataLoader( - dataset, - batch_size=batch_size, - sampler=sampler, - num_workers=num_workers, - collate_fn=partial(collate, samples_per_gpu=samples_per_gpu), - pin_memory=False, - shuffle=shuffle, - worker_init_fn=init_fn, - **kwargs) - - return data_loader - - -def worker_init_fn(worker_id, num_workers, rank, seed): - # The seed of each worker equals to - # num_worker * rank + worker_id + user_seed - worker_seed = num_workers * rank + worker_id + seed - np.random.seed(worker_seed) - random.seed(worker_seed) diff --git a/openmmlab_test/mmclassification-speed-benchmark/mmcls/datasets/dataset_wrappers.py b/openmmlab_test/mmclassification-speed-benchmark/mmcls/datasets/dataset_wrappers.py deleted file mode 100644 index f2ccaf07..00000000 --- a/openmmlab_test/mmclassification-speed-benchmark/mmcls/datasets/dataset_wrappers.py +++ /dev/null @@ -1,162 +0,0 @@ -import bisect -import math -from collections import defaultdict - -import numpy as np -from torch.utils.data.dataset import ConcatDataset as _ConcatDataset - -from .builder import DATASETS - - -@DATASETS.register_module() -class ConcatDataset(_ConcatDataset): - """A wrapper of concatenated dataset. - - Same as :obj:`torch.utils.data.dataset.ConcatDataset`, but - add `get_cat_ids` function. - - Args: - datasets (list[:obj:`Dataset`]): A list of datasets. - """ - - def __init__(self, datasets): - super(ConcatDataset, self).__init__(datasets) - self.CLASSES = datasets[0].CLASSES - - def get_cat_ids(self, idx): - if idx < 0: - if -idx > len(self): - raise ValueError( - 'absolute value of index should not exceed dataset length') - idx = len(self) + idx - dataset_idx = bisect.bisect_right(self.cumulative_sizes, idx) - if dataset_idx == 0: - sample_idx = idx - else: - sample_idx = idx - self.cumulative_sizes[dataset_idx - 1] - return self.datasets[dataset_idx].get_cat_ids(sample_idx) - - -@DATASETS.register_module() -class RepeatDataset(object): - """A wrapper of repeated dataset. - - The length of repeated dataset will be `times` larger than the original - dataset. This is useful when the data loading time is long but the dataset - is small. Using RepeatDataset can reduce the data loading time between - epochs. - - Args: - dataset (:obj:`Dataset`): The dataset to be repeated. - times (int): Repeat times. - """ - - def __init__(self, dataset, times): - self.dataset = dataset - self.times = times - self.CLASSES = dataset.CLASSES - - self._ori_len = len(self.dataset) - - def __getitem__(self, idx): - return self.dataset[idx % self._ori_len] - - def get_cat_ids(self, idx): - return self.dataset.get_cat_ids(idx % self._ori_len) - - def __len__(self): - return self.times * self._ori_len - - -# Modified from https://github.com/facebookresearch/detectron2/blob/41d475b75a230221e21d9cac5d69655e3415e3a4/detectron2/data/samplers/distributed_sampler.py#L57 # noqa -@DATASETS.register_module() -class ClassBalancedDataset(object): - """A wrapper of repeated dataset with repeat factor. - - Suitable for training on class imbalanced datasets like LVIS. Following - the sampling strategy in [1], in each epoch, an image may appear multiple - times based on its "repeat factor". - The repeat factor for an image is a function of the frequency the rarest - category labeled in that image. The "frequency of category c" in [0, 1] - is defined by the fraction of images in the training set (without repeats) - in which category c appears. - The dataset needs to instantiate :func:`self.get_cat_ids(idx)` to support - ClassBalancedDataset. - The repeat factor is computed as followed. - 1. For each category c, compute the fraction # of images - that contain it: f(c) - 2. For each category c, compute the category-level repeat factor: - r(c) = max(1, sqrt(t/f(c))) - 3. For each image I and its labels L(I), compute the image-level repeat - factor: - r(I) = max_{c in L(I)} r(c) - - References: - .. [1] https://arxiv.org/pdf/1908.03195.pdf - - Args: - dataset (:obj:`CustomDataset`): The dataset to be repeated. - oversample_thr (float): frequency threshold below which data is - repeated. For categories with `f_c` >= `oversample_thr`, there is - no oversampling. For categories with `f_c` < `oversample_thr`, the - degree of oversampling following the square-root inverse frequency - heuristic above. - """ - - def __init__(self, dataset, oversample_thr): - self.dataset = dataset - self.oversample_thr = oversample_thr - self.CLASSES = dataset.CLASSES - - repeat_factors = self._get_repeat_factors(dataset, oversample_thr) - repeat_indices = [] - for dataset_index, repeat_factor in enumerate(repeat_factors): - repeat_indices.extend([dataset_index] * math.ceil(repeat_factor)) - self.repeat_indices = repeat_indices - - flags = [] - if hasattr(self.dataset, 'flag'): - for flag, repeat_factor in zip(self.dataset.flag, repeat_factors): - flags.extend([flag] * int(math.ceil(repeat_factor))) - assert len(flags) == len(repeat_indices) - self.flag = np.asarray(flags, dtype=np.uint8) - - def _get_repeat_factors(self, dataset, repeat_thr): - # 1. For each category c, compute the fraction # of images - # that contain it: f(c) - category_freq = defaultdict(int) - num_images = len(dataset) - for idx in range(num_images): - cat_ids = set(self.dataset.get_cat_ids(idx)) - for cat_id in cat_ids: - category_freq[cat_id] += 1 - for k, v in category_freq.items(): - assert v > 0, f'caterogy {k} does not contain any images' - category_freq[k] = v / num_images - - # 2. For each category c, compute the category-level repeat factor: - # r(c) = max(1, sqrt(t/f(c))) - category_repeat = { - cat_id: max(1.0, math.sqrt(repeat_thr / cat_freq)) - for cat_id, cat_freq in category_freq.items() - } - - # 3. For each image I and its labels L(I), compute the image-level - # repeat factor: - # r(I) = max_{c in L(I)} r(c) - repeat_factors = [] - for idx in range(num_images): - cat_ids = set(self.dataset.get_cat_ids(idx)) - repeat_factor = max( - {category_repeat[cat_id] - for cat_id in cat_ids}) - repeat_factors.append(repeat_factor) - - return repeat_factors - - def __getitem__(self, idx): - ori_index = self.repeat_indices[idx] - return self.dataset[ori_index] - - def __len__(self): - return len(self.repeat_indices) diff --git a/openmmlab_test/mmclassification-speed-benchmark/mmcls/datasets/dummy.py b/openmmlab_test/mmclassification-speed-benchmark/mmcls/datasets/dummy.py deleted file mode 100644 index af4e1576..00000000 --- a/openmmlab_test/mmclassification-speed-benchmark/mmcls/datasets/dummy.py +++ /dev/null @@ -1,45 +0,0 @@ -import numpy as np - -from .base_dataset import BaseDataset -from .builder import DATASETS - - -@DATASETS.register_module() -class DummyImageNet(BaseDataset): - """`Dummy ImageNet `_ Dataset. - - This implementation is modified from - https://github.com/pytorch/vision/blob/master/torchvision/datasets/imagenet.py # noqa: E501 - """ - dummy_images = { - i: np.random.randint(0, 256, size=(224, 224, 3), dtype=np.uint8) - for i in range(1000) - } - - def __init__(self, - data_prefix, - pipeline, - classes=None, - ann_file=None, - test_mode=False): - if test_mode: - self.size = 50000 - else: - self.size = 1281167 - - super().__init__( - data_prefix, - pipeline, - classes=classes, - ann_file=ann_file, - test_mode=test_mode) - - def load_annotations(self): - data_infos = [] - for i in range(self.size): - gt_label = i % 1000 - info = {'img_prefix': self.data_prefix} - info['img'] = self.dummy_images[gt_label] - info['gt_label'] = np.array(gt_label, dtype=np.int64) - data_infos.append(info) - return data_infos diff --git a/openmmlab_test/mmclassification-speed-benchmark/mmcls/datasets/pipelines/__init__.py b/openmmlab_test/mmclassification-speed-benchmark/mmcls/datasets/pipelines/__init__.py deleted file mode 100644 index 0901aee8..00000000 --- a/openmmlab_test/mmclassification-speed-benchmark/mmcls/datasets/pipelines/__init__.py +++ /dev/null @@ -1,21 +0,0 @@ -from .auto_augment import (AutoAugment, AutoContrast, Brightness, - ColorTransform, Contrast, Cutout, Equalize, Invert, - Posterize, RandAugment, Rotate, Sharpness, Shear, - Solarize, SolarizeAdd, Translate) -from .compose import Compose -from .formating import (Collect, ImageToTensor, ToNumpy, ToPIL, ToTensor, - Transpose, to_tensor) -from .loading import LoadImageFromFile -from .transforms import (CenterCrop, ColorJitter, Lighting, RandomCrop, - RandomErasing, RandomFlip, RandomGrayscale, - RandomResizedCrop, Resize) - -__all__ = [ - 'Compose', 'to_tensor', 'ToTensor', 'ImageToTensor', 'ToPIL', 'ToNumpy', - 'Transpose', 'Collect', 'LoadImageFromFile', 'Resize', 'CenterCrop', - 'RandomFlip', 'Normalize', 'RandomCrop', 'RandomResizedCrop', - 'RandomGrayscale', 'Shear', 'Translate', 'Rotate', 'Invert', - 'ColorTransform', 'Solarize', 'Posterize', 'AutoContrast', 'Equalize', - 'Contrast', 'Brightness', 'Sharpness', 'AutoAugment', 'SolarizeAdd', - 'Cutout', 'RandAugment', 'Lighting', 'ColorJitter', 'RandomErasing' -] diff --git a/openmmlab_test/mmclassification-speed-benchmark/mmcls/datasets/pipelines/__pycache__/__init__.cpython-36.pyc b/openmmlab_test/mmclassification-speed-benchmark/mmcls/datasets/pipelines/__pycache__/__init__.cpython-36.pyc deleted file mode 100644 index e772db9a4cac1182986e7357930326a6b3dc9c3c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1265 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 diff --git a/openmmlab_test/mmclassification-speed-benchmark/mmcls/datasets/pipelines/__pycache__/formating.cpython-36.pyc b/openmmlab_test/mmclassification-speed-benchmark/mmcls/datasets/pipelines/__pycache__/formating.cpython-36.pyc deleted file mode 100644 index e6f141babce4e3dba1871f75af12e6c378341439..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6625 zcmb_gTW{OQ73NJ6Ez7pzWOHk~W!>%CY8`nKH=C>*r*7?d5o{_1jf)g=0*V$#GHr@f zW~eka6cnfzC{VO7ec6X1?_Kn%f1q#u6MWsL{Dnn<_B%t0mTWn}Zc2NG;+dH6v0lXQoSXM2JEeLFzYDJUxl*5ErM>AR8jgqF2Ff~$_!Fu~=_`@CryXg$+*ckY-};_`?+-!G^_3$vrRG7~j0$@u(Mk$_ zt9uhe?M1Xd0d2CcwAE}>2~-a1R7Rb4)o6ys{SCYL3OfIT>grgdarkenUFyzkC>Zw zb~szHR+_#e#7ZORb-D-Dz;!rx4jPLYeT31XHR=G%`6Fi2$`qIWBs_3q<4q zBXLeHE6yhhinX8{7t*!I#TE}cw$ukFz{EzU(|jK1Jz{Z%@t#y&d`6)iRd^IQBo=phx8R3ve1 z+O`*Xk!^p7FCiJLhvx<}RR^uvlsdX)Cz*tQ@qS;~Q#O>R7hYzBMceL#ZqEnXxMbVUdXAq?@;x+jiz?FP&^&}+PCLY}q9QI*2d0j{oTN2D z%N~+p4dt8QX-Zn{!B%HGOsuG^6T2~>N))3diWvhbPHVbJgNcix9$p-o=QN}UPPD&r z!Uy>AVl#!*otIhysFymRrNdodFZUH*jo>Q!x|=)F(2_$-p3aP`kt;m`y?pJp4xX>c z1#$B1oPNFjFP=(4t|iue7Q{KR>vS2X1;>-@MHgn)cD;^}XBUT^JAvqif>n%U$HbfvlQ?`hbQ0Mv0EMJ%9tF_*&j@&LAb((s&u zBuulONI~{PiZYNbL)A&yEcE;gC9{N=Pe?ZgM%kevt|v_)zIB*H{Z&qyL?bhahvuRs z^|hJ+%Qyk7MBcH6QKIW1NjYAF?}Dw5z;O^SorS=gf;#_GTaf7g=C=3D3>CJl6}f`5Kvbw z#P0~gX%t0cGK~QzMBOx@KT8L@yr9vb)TBx} z#&pA7==U|OFjE6m<+Uv5x#N4zj?ZN0*c>cBF45w%uZc_*@kFMG*q|lH)1wQIOVnYo z?52+6L=U~maId3?w*(jy8Bhj}Tn5H#7<$r?Q;_j{Vkxaf4namaJ%XoA8HKBvDSLts zPkE`K=tH4~(Kq_)eje8-YTvk`^!2`h#H;)m*DHvSkx|0jX|8@pd2tmkUqhl+eu)vX zuO|C$AW5Uk9;3E}l+kQ0Adr|Zdd=6f%kPSc_WkE?U>Ge_XwB8}E;nt2dXQjvpf;cXj*b?dtL;7;*Df_4*C@TE2Dji~+ch;_aQ) zE#6~q6m}#Xht((BySh#8V*cqH2c~xFn+zco-3Lr0uI4M5a!7?wOH`emro4gWQ)rBH$(1bKe{hosQ!-fTIvnvC z^SMq9>(rnlZAuc9!cNcg5hrrWG?R;x8P3|U2#lvUUU5FTRF_v)@-jeXZ8D?a6w^ur vCgmHqnAp6N+??H|+)ReLCC!BIFyT2$T1huAl~r>ZGrI?nVl-2(M@Qc5c diff --git a/openmmlab_test/mmclassification-speed-benchmark/mmcls/datasets/pipelines/__pycache__/loading.cpython-36.pyc b/openmmlab_test/mmclassification-speed-benchmark/mmcls/datasets/pipelines/__pycache__/loading.cpython-36.pyc deleted file mode 100644 index aca9c0b9aaa24b5fc4cd5e940e21a0a209c28aba..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2504 zcmZ`)&2Jk;6yMoh+v|<<(Snd#dKg)PWFd756$nKQ>IV&qR7Dj?jR@|&+WzxVy-{_1M@>yMB7e>WZH4`=DC z!Tcfo)ng#s;Uss4r0d$5*Y)h^cWd0`US2O6-3D<)V;Gz}Upw6Awbu@>iRQU?PP!o{ zFPx};2{_K-r3*A7ruqEf`O{|yhfiN5xPSG{rG5@O!s!z3fJ_4NK#uSc`GTY#uk*%h z0@4HCeC>4WJmf1dHh2ppt(qIpD#i~AHW2%=D)zHnus=aA?ow9L3{PkZM>K`AP8d@7 zz7a3SnG~EJixWke6ttZcgLouGn*Gp*dwjZ)m1)(cTa5B7(NrHXO^dP8G^t9>vJ!TL z#RC}HM*NZ$q8)YUBhCT6l5{-cOkWc;XWOW`JxHk%aJ!=WELURtzc?8< zyrko-)L+alT|@gyq->mPHHYZTkCQ5|WUNm{0=%Ln=>07yndWQ&K!b51N=;Mn`EEKc zliglXB(FMIfwAwOXrZ>E-U161Ulz4#!8aES7^XPMGXRYNUC}Mf0gwsKw4$trS*bKD zbp|m8@9e{!C-%w$2L-(lg6<|cQ);Faf@f7{!QZora{*bEtLvASwe0m!iLE|Mjz!7$ zHhHFwH>2Lnu6Ai19FAC&PvEa8kO`SMu`_Xjl8HBT&mEXS!2|WV z0|iD7qnZg9DPzJ#6pWu#qZ707Z&#U>rJcw(z7lyV0}v;n^Eh$^$Zw8ZgW=8hJ4aO^ zcB+vmiy~+J7y_ktAav-hEX@+8v#PwSMndqreNiSy1(U~?LG3_kF~~NxGs;FH&q|?o zFlDoH&;h-IIL^vU$MGEyq)@!$*GZj(JH^sI0)6{>2lUsP!ln=E(tWE41s0+K^E$7@lbIaCZeFpv>I>Y+JJtt=#pfx5Q z>;&AuaL;_0HRb8VABK8m*a8k8;zPLi0HSq;2(ucjeHiOF4p(8;n9qU-j$XsvbHba) zj{Kd6Wq@nGa?3fZ>2*NfnA8xTw=P^5Z!A`Pm9JfRfVYkkAqO@NO}J=}Ccrs%MiXG1 zvE@Oo`B;ahg`Mka*Lc8bn)AM8n)AMP>48Hp2@pAZBx)QBdq47wkB!WD(85d|5>F2L zriB<+tuDGLTW}HhpukPIKQB6)SjMZ=$oRu51B`*tW@V`bO!E&@!PJ>TfyOOIrZH=4 zre^!A@xUr9qC}h8sgRX2eg(-D)#WN)ZAhW8Mag$y)wTB71|#3Y(-!o@I5}cvDRO0# zd`i~w5OOkMc^=0fz)F1t#DRR=a9dLf;|64C%MD-*U@s(hh)dSs*ZQBVox&yPO8n59 zXrIkm#J8D7euhUKW-g4FdmfCKaXyUxFTokHajqSnwzd|fzIVE|4bQ<<&)wTReRp%) zzM{*0aqkU@phYynFf7?PMjJ6F;`m=BAGuTa1yYP;3=RA(&ap@FL(p5e<3@tl0tvG%;X8BYH(}-hUC7{g5z$Z75+(Ysi5^O&-gN8E02UB~##K5W$NC-(0xGisk`~zH9uU!BD diff --git a/openmmlab_test/mmclassification-speed-benchmark/mmcls/datasets/pipelines/__pycache__/transforms.cpython-36.pyc b/openmmlab_test/mmclassification-speed-benchmark/mmcls/datasets/pipelines/__pycache__/transforms.cpython-36.pyc deleted file mode 100644 index 58744e60a4628d19fc07ba522f901f8aa4eddc49..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 34966 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 Wn3B6P&M)Iw#PKd1PvV#v%l>cEVi*?y diff --git a/openmmlab_test/mmclassification-speed-benchmark/mmcls/datasets/pipelines/formating.py b/openmmlab_test/mmclassification-speed-benchmark/mmcls/datasets/pipelines/formating.py deleted file mode 100644 index be41d8f5..00000000 --- a/openmmlab_test/mmclassification-speed-benchmark/mmcls/datasets/pipelines/formating.py +++ /dev/null @@ -1,178 +0,0 @@ -from collections.abc import Sequence - -import mmcv -import numpy as np -import torch -from mmcv.parallel import DataContainer as DC -from PIL import Image - -from ..builder import PIPELINES - - -def to_tensor(data): - """Convert objects of various python types to :obj:`torch.Tensor`. - - Supported types are: :class:`numpy.ndarray`, :class:`torch.Tensor`, - :class:`Sequence`, :class:`int` and :class:`float`. - """ - if isinstance(data, torch.Tensor): - return data - elif isinstance(data, np.ndarray): - return torch.from_numpy(data) - elif isinstance(data, Sequence) and not mmcv.is_str(data): - return torch.tensor(data) - elif isinstance(data, int): - return torch.LongTensor([data]) - elif isinstance(data, float): - return torch.FloatTensor([data]) - else: - raise TypeError( - f'Type {type(data)} cannot be converted to tensor.' - 'Supported types are: `numpy.ndarray`, `torch.Tensor`, ' - '`Sequence`, `int` and `float`') - - -@PIPELINES.register_module() -class ToTensor(object): - - def __init__(self, keys): - self.keys = keys - - def __call__(self, results): - for key in self.keys: - results[key] = to_tensor(results[key]) - return results - - def __repr__(self): - return self.__class__.__name__ + f'(keys={self.keys})' - - -@PIPELINES.register_module() -class ImageToTensor(object): - - def __init__(self, keys): - self.keys = keys - - def __call__(self, results): - for key in self.keys: - img = results[key] - if len(img.shape) < 3: - img = np.expand_dims(img, -1) - results[key] = to_tensor(img.transpose(2, 0, 1)) - return results - - def __repr__(self): - return self.__class__.__name__ + f'(keys={self.keys})' - - -@PIPELINES.register_module() -class Transpose(object): - - def __init__(self, keys, order): - self.keys = keys - self.order = order - - def __call__(self, results): - for key in self.keys: - results[key] = results[key].transpose(self.order) - return results - - def __repr__(self): - return self.__class__.__name__ + \ - f'(keys={self.keys}, order={self.order})' - - -@PIPELINES.register_module() -class ToPIL(object): - - def __init__(self): - pass - - def __call__(self, results): - results['img'] = Image.fromarray(results['img']) - return results - - -@PIPELINES.register_module() -class ToNumpy(object): - - def __init__(self): - pass - - def __call__(self, results): - results['img'] = np.array(results['img'], dtype=np.float32) - return results - - -@PIPELINES.register_module() -class Collect(object): - """Collect data from the loader relevant to the specific task. - - This is usually the last stage of the data loader pipeline. Typically keys - is set to some subset of "img" and "gt_label". - - Args: - keys (Sequence[str]): Keys of results to be collected in ``data``. - meta_keys (Sequence[str], optional): Meta keys to be converted to - ``mmcv.DataContainer`` and collected in ``data[img_metas]``. - Default: ``('filename', 'ori_shape', 'img_shape', 'flip', - 'flip_direction', 'img_norm_cfg')`` - - Returns: - dict: The result dict contains the following keys - - keys in``self.keys`` - - ``img_metas`` if avaliable - """ - - def __init__(self, - keys, - meta_keys=('filename', 'ori_filename', 'ori_shape', - 'img_shape', 'flip', 'flip_direction', - 'img_norm_cfg')): - self.keys = keys - self.meta_keys = meta_keys - - def __call__(self, results): - data = {} - img_meta = {} - for key in self.meta_keys: - if key in results: - img_meta[key] = results[key] - data['img_metas'] = DC(img_meta, cpu_only=True) - for key in self.keys: - data[key] = results[key] - return data - - def __repr__(self): - return self.__class__.__name__ + \ - f'(keys={self.keys}, meta_keys={self.meta_keys})' - - -@PIPELINES.register_module() -class WrapFieldsToLists(object): - """Wrap fields of the data dictionary into lists for evaluation. - - This class can be used as a last step of a test or validation - pipeline for single image evaluation or inference. - - Example: - >>> test_pipeline = [ - >>> dict(type='LoadImageFromFile'), - >>> dict(type='Normalize', - mean=[123.675, 116.28, 103.53], - std=[58.395, 57.12, 57.375], - to_rgb=True), - >>> dict(type='ImageToTensor', keys=['img']), - >>> dict(type='Collect', keys=['img']), - >>> dict(type='WrapIntoLists') - >>> ] - """ - - def __call__(self, results): - # Wrap dict fields into lists - for key, val in results.items(): - results[key] = [val] - return results - - def __repr__(self): - return f'{self.__class__.__name__}()' diff --git a/openmmlab_test/mmclassification-speed-benchmark/mmcls/datasets/samplers/__init__.py b/openmmlab_test/mmclassification-speed-benchmark/mmcls/datasets/samplers/__init__.py deleted file mode 100644 index cffe4dcb..00000000 --- a/openmmlab_test/mmclassification-speed-benchmark/mmcls/datasets/samplers/__init__.py +++ /dev/null @@ -1,3 +0,0 @@ -from .distributed_sampler import DistributedSampler - -__all__ = ['DistributedSampler'] diff --git a/openmmlab_test/mmclassification-speed-benchmark/mmcls/datasets/samplers/__pycache__/__init__.cpython-36.pyc b/openmmlab_test/mmclassification-speed-benchmark/mmcls/datasets/samplers/__pycache__/__init__.cpython-36.pyc deleted file mode 100644 index 7be60bbda872935121d48b01a776fb37d4474d68..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 256 zcmYk0v1$TA5QcY8K@n{X_zqW?Ez$-Nu}&idyk^+D8RL?jyJKf9@(y{BX$ew+31>jDJ>B$ORB3Q+wgu1h(Q~zP!#j~M+|_gT?BY+Kf3WVH+b^2>RU_SZ<<{J D>b6Ml diff --git a/openmmlab_test/mmclassification-speed-benchmark/mmcls/datasets/samplers/__pycache__/distributed_sampler.cpython-36.pyc b/openmmlab_test/mmclassification-speed-benchmark/mmcls/datasets/samplers/__pycache__/distributed_sampler.cpython-36.pyc deleted file mode 100644 index a7f9cfc807a9dc9f971ed5c9d8a2ab845475825d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1273 zcmZ`&JC77O5H8!@J&&DPmSNBd2#^R69k3G|Av$q9L^cTIkD=@i4h_l8 zA`g_ZA7^maFZm&vv=K&wq}`!;c@H9v3mdSNN$#G=4(eJs@Mi zh!Ph3m!+uWLJ4>YMw#dwOk~woEu;~zAdSBf8s@18ljnu=SRA+Bnpau1E-mI9yKKBa zH+P?mg@rIcd-UGJQgr(c7RtmXIfq5`9wJ!8w0j>Vf#*kg!YirqpArW}-90DcVGAp< z5gWNtM*K%V*53-A8K7h2Je6Tox0Ob_E{i;K zA;PRaO9vr#?b>4KYhBcZ*E;mvX}esOHuSM+YoptB*yEM1yRt*hEDU|)vr@a_jSZ@_ zb?BMQXU_UG36Znq5=R8Y{kw?xFO<3`aK$rC@Qz&4oUJ4*orBMlfCccEn2^e@%&7>b3gu<6#=V# z_E5j}PBDr`L;U^ zYl;I7M}@bTDjf4foP=Icno4%G;_DffJ{VRjKpm@Rf&}1o|vd9 zF+2G!uig4In$M4pNUF4BomG}pKh(NvOk47Jr1fjM^)Av$2k-Lv;|ty9wk);2$}SbS zPjTcVyZ6jeaeVWB1cJZ)LFZ2+yg}Y@&=vZy^+o9pS;Jj)aYO&A#j8_(F2v(qu75Fm Kj^7s*LHz(EK0!bL diff --git a/openmmlab_test/mmclassification-speed-benchmark/mmcls/datasets/samplers/distributed_sampler.py b/openmmlab_test/mmclassification-speed-benchmark/mmcls/datasets/samplers/distributed_sampler.py deleted file mode 100644 index a46a086e..00000000 --- a/openmmlab_test/mmclassification-speed-benchmark/mmcls/datasets/samplers/distributed_sampler.py +++ /dev/null @@ -1,42 +0,0 @@ -import torch -from torch.utils.data import DistributedSampler as _DistributedSampler - - -class DistributedSampler(_DistributedSampler): - - def __init__(self, - dataset, - num_replicas=None, - rank=None, - shuffle=True, - round_up=True): - super().__init__(dataset, num_replicas=num_replicas, rank=rank) - self.shuffle = shuffle - self.round_up = round_up - if self.round_up: - self.total_size = self.num_samples * self.num_replicas - else: - self.total_size = len(self.dataset) - - def __iter__(self): - # deterministically shuffle based on epoch - if self.shuffle: - g = torch.Generator() - g.manual_seed(self.epoch) - indices = torch.randperm(len(self.dataset), generator=g).tolist() - else: - indices = torch.arange(len(self.dataset)).tolist() - - # add extra samples to make it evenly divisible - if self.round_up: - indices = ( - indices * - int(self.total_size / len(indices) + 1))[:self.total_size] - assert len(indices) == self.total_size - - # subsample - indices = indices[self.rank:self.total_size:self.num_replicas] - if self.round_up: - assert len(indices) == self.num_samples - - return iter(indices) diff --git a/openmmlab_test/mmclassification-speed-benchmark/mmcls/datasets/utils.py b/openmmlab_test/mmclassification-speed-benchmark/mmcls/datasets/utils.py deleted file mode 100644 index 31dd5645..00000000 --- a/openmmlab_test/mmclassification-speed-benchmark/mmcls/datasets/utils.py +++ /dev/null @@ -1,152 +0,0 @@ -import gzip -import hashlib -import os -import os.path -import shutil -import tarfile -import urllib.error -import urllib.request -import zipfile - -__all__ = ['rm_suffix', 'check_integrity', 'download_and_extract_archive'] - - -def rm_suffix(s, suffix=None): - if suffix is None: - return s[:s.rfind('.')] - else: - return s[:s.rfind(suffix)] - - -def calculate_md5(fpath, chunk_size=1024 * 1024): - md5 = hashlib.md5() - with open(fpath, 'rb') as f: - for chunk in iter(lambda: f.read(chunk_size), b''): - md5.update(chunk) - return md5.hexdigest() - - -def check_md5(fpath, md5, **kwargs): - return md5 == calculate_md5(fpath, **kwargs) - - -def check_integrity(fpath, md5=None): - if not os.path.isfile(fpath): - return False - if md5 is None: - return True - return check_md5(fpath, md5) - - -def download_url_to_file(url, fpath): - with urllib.request.urlopen(url) as resp, open(fpath, 'wb') as of: - shutil.copyfileobj(resp, of) - - -def download_url(url, root, filename=None, md5=None): - """Download a file from a url and place it in root. - - Args: - url (str): URL to download file from. - root (str): Directory to place downloaded file in. - filename (str | None): Name to save the file under. - If filename is None, use the basename of the URL. - md5 (str | None): MD5 checksum of the download. - If md5 is None, download without md5 check. - """ - root = os.path.expanduser(root) - if not filename: - filename = os.path.basename(url) - fpath = os.path.join(root, filename) - - os.makedirs(root, exist_ok=True) - - if check_integrity(fpath, md5): - print(f'Using downloaded and verified file: {fpath}') - else: - try: - print(f'Downloading {url} to {fpath}') - download_url_to_file(url, fpath) - except (urllib.error.URLError, IOError) as e: - if url[:5] == 'https': - url = url.replace('https:', 'http:') - print('Failed download. Trying https -> http instead.' - f' Downloading {url} to {fpath}') - download_url_to_file(url, fpath) - else: - raise e - # check integrity of downloaded file - if not check_integrity(fpath, md5): - raise RuntimeError('File not found or corrupted.') - - -def _is_tarxz(filename): - return filename.endswith('.tar.xz') - - -def _is_tar(filename): - return filename.endswith('.tar') - - -def _is_targz(filename): - return filename.endswith('.tar.gz') - - -def _is_tgz(filename): - return filename.endswith('.tgz') - - -def _is_gzip(filename): - return filename.endswith('.gz') and not filename.endswith('.tar.gz') - - -def _is_zip(filename): - return filename.endswith('.zip') - - -def extract_archive(from_path, to_path=None, remove_finished=False): - if to_path is None: - to_path = os.path.dirname(from_path) - - if _is_tar(from_path): - with tarfile.open(from_path, 'r') as tar: - tar.extractall(path=to_path) - elif _is_targz(from_path) or _is_tgz(from_path): - with tarfile.open(from_path, 'r:gz') as tar: - tar.extractall(path=to_path) - elif _is_tarxz(from_path): - with tarfile.open(from_path, 'r:xz') as tar: - tar.extractall(path=to_path) - elif _is_gzip(from_path): - to_path = os.path.join( - to_path, - os.path.splitext(os.path.basename(from_path))[0]) - with open(to_path, 'wb') as out_f, gzip.GzipFile(from_path) as zip_f: - out_f.write(zip_f.read()) - elif _is_zip(from_path): - with zipfile.ZipFile(from_path, 'r') as z: - z.extractall(to_path) - else: - raise ValueError(f'Extraction of {from_path} not supported') - - if remove_finished: - os.remove(from_path) - - -def download_and_extract_archive(url, - download_root, - extract_root=None, - filename=None, - md5=None, - remove_finished=False): - download_root = os.path.expanduser(download_root) - if extract_root is None: - extract_root = download_root - if not filename: - filename = os.path.basename(url) - - download_url(url, download_root, filename, md5) - - archive = os.path.join(download_root, filename) - print(f'Extracting {archive} to {extract_root}') - extract_archive(archive, extract_root, remove_finished) diff --git a/openmmlab_test/mmclassification-speed-benchmark/mmcls/datasets/voc.py b/openmmlab_test/mmclassification-speed-benchmark/mmcls/datasets/voc.py deleted file mode 100644 index 7eeb552d..00000000 --- a/openmmlab_test/mmclassification-speed-benchmark/mmcls/datasets/voc.py +++ /dev/null @@ -1,68 +0,0 @@ -import os.path as osp -import xml.etree.ElementTree as ET - -import mmcv -import numpy as np - -from .builder import DATASETS -from .multi_label import MultiLabelDataset - - -@DATASETS.register_module() -class VOC(MultiLabelDataset): - """`Pascal VOC `_ Dataset.""" - - CLASSES = ('aeroplane', 'bicycle', 'bird', 'boat', 'bottle', 'bus', 'car', - 'cat', 'chair', 'cow', 'diningtable', 'dog', 'horse', - 'motorbike', 'person', 'pottedplant', 'sheep', 'sofa', 'train', - 'tvmonitor') - - def __init__(self, **kwargs): - super(VOC, self).__init__(**kwargs) - if 'VOC2007' in self.data_prefix: - self.year = 2007 - else: - raise ValueError('Cannot infer dataset year from img_prefix.') - - def load_annotations(self): - """Load annotations. - - Returns: - list[dict]: Annotation info from XML file. - """ - data_infos = [] - img_ids = mmcv.list_from_file(self.ann_file) - for img_id in img_ids: - filename = f'JPEGImages/{img_id}.jpg' - xml_path = osp.join(self.data_prefix, 'Annotations', - f'{img_id}.xml') - tree = ET.parse(xml_path) - root = tree.getroot() - labels = [] - labels_difficult = [] - for obj in root.findall('object'): - label_name = obj.find('name').text - # in case customized dataset has wrong labels - # or CLASSES has been override. - if label_name not in self.CLASSES: - continue - label = self.class_to_idx[label_name] - difficult = int(obj.find('difficult').text) - if difficult: - labels_difficult.append(label) - else: - labels.append(label) - - gt_label = np.zeros(len(self.CLASSES)) - # The order cannot be swapped for the case where multiple objects - # of the same kind exist and some are difficult. - gt_label[labels_difficult] = -1 - gt_label[labels] = 1 - - info = dict( - img_prefix=self.data_prefix, - img_info=dict(filename=filename), - gt_label=gt_label.astype(np.int8)) - data_infos.append(info) - - return data_infos diff --git a/openmmlab_test/mmclassification-speed-benchmark/mmcls/models/__init__.py b/openmmlab_test/mmclassification-speed-benchmark/mmcls/models/__init__.py deleted file mode 100644 index 0c954b11..00000000 --- a/openmmlab_test/mmclassification-speed-benchmark/mmcls/models/__init__.py +++ /dev/null @@ -1,13 +0,0 @@ -from .backbones import * # noqa: F401,F403 -from .builder import (BACKBONES, CLASSIFIERS, HEADS, LOSSES, NECKS, - build_backbone, build_classifier, build_head, build_loss, - build_neck) -from .classifiers import * # noqa: F401,F403 -from .heads import * # noqa: F401,F403 -from .losses import * # noqa: F401,F403 -from .necks import * # noqa: F401,F403 - -__all__ = [ - 'BACKBONES', 'HEADS', 'NECKS', 'LOSSES', 'CLASSIFIERS', 'build_backbone', - 'build_head', 'build_neck', 'build_loss', 'build_classifier' -] diff --git a/openmmlab_test/mmclassification-speed-benchmark/mmcls/models/__pycache__/__init__.cpython-36.pyc b/openmmlab_test/mmclassification-speed-benchmark/mmcls/models/__pycache__/__init__.cpython-36.pyc deleted file mode 100644 index 1b0eb7b21d1f135697afcf2db7be0ce9e08d7e65..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 576 zcmYk3OK#gR5I{xC`rB@jO9U>EszA3v5ZiT;AchT;U2#K5B3ldQNQS5^dWYVl=#{w5 zDp%+#94ba4LT^SC=gmO+GM%P>|18VPk>@>m@2=G5xAxY(h42JX-Vcl;MPS56;4>e_ zYzzSlAY>s#EP|NDkgx<&mO{odGSp369Z}QQID3sBZ1lxg1R@lXh(#h&k%`H#l%0tw z_2#o@Vq4FNAs^?dNtTP%!*aJ>Q6WpyAU#STmsZEFjO3eZs&e}OIl;ZrK z*Il3i@qe4|TabBslnsC?O5RJ|=Kv>NRrGb+T`h{}?QGvai4NN0({O=NrbE+&3NyAIN!>!5_s zf%r;psrU+1%-95_LOEOWpRxAwo81||91N`QUuTK05b~28JsQMsz$61oc7hUr1!J9y7t)tj{d)4zrm9e!vE72!6;$ zA#umQfJ9u{7>m_KFb^Rzula2zYjM{YMa6h7ada08Ue+na+3=u;?TX&I;+Zax#OIjC%jBIMJ%@M1nG5YdhNbkOm=t8u#MM;3#n0Cs~y|dSuTYNqryOOP=+XD6f9TU8Ul+Y q@cIOvrzISf8JktKwKiWt+wF7y8vh0P6vUy9;wT#Z`>Lkiy?+48)5ntl diff --git a/openmmlab_test/mmclassification-speed-benchmark/mmcls/models/backbones/__init__.py b/openmmlab_test/mmclassification-speed-benchmark/mmcls/models/backbones/__init__.py deleted file mode 100644 index 98756bde..00000000 --- a/openmmlab_test/mmclassification-speed-benchmark/mmcls/models/backbones/__init__.py +++ /dev/null @@ -1,21 +0,0 @@ -from .alexnet import AlexNet -from .lenet import LeNet5 -from .mobilenet_v2 import MobileNetV2 -from .mobilenet_v3 import MobileNetv3 -from .regnet import RegNet -from .resnest import ResNeSt -from .resnet import ResNet, ResNetV1d -from .resnet_cifar import ResNet_CIFAR -from .resnext import ResNeXt -from .seresnet import SEResNet -from .seresnext import SEResNeXt -from .shufflenet_v1 import ShuffleNetV1 -from .shufflenet_v2 import ShuffleNetV2 -from .vgg import VGG -from .vision_transformer import VisionTransformer - -__all__ = [ - 'LeNet5', 'AlexNet', 'VGG', 'RegNet', 'ResNet', 'ResNeXt', 'ResNetV1d', - 'ResNeSt', 'ResNet_CIFAR', 'SEResNet', 'SEResNeXt', 'ShuffleNetV1', - 'ShuffleNetV2', 'MobileNetV2', 'MobileNetv3', 'VisionTransformer' -] diff --git a/openmmlab_test/mmclassification-speed-benchmark/mmcls/models/backbones/__pycache__/__init__.cpython-36.pyc b/openmmlab_test/mmclassification-speed-benchmark/mmcls/models/backbones/__pycache__/__init__.cpython-36.pyc deleted file mode 100644 index ad030bbeed600d04d6f08665a1bb0552ac054ca7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 969 zcmY+C&2G~`5XbE}iQ~l1SJO64KjD@`iQ0-ALKFlQ67V;*r;)pdh4h+XCDfCakAnq=2hOSf5@*i#+d zWnJRB+R{DNBW|c|y~B2heYLCmtWO-MJw0Fp;-=cy2kd~jr4IEGI|6Qtj_8Ul(G%NZ zN9>Be*b@V>FAl_^I1Aj}2`O?cBXo^66S;fYnbD;3ZJwb25z-T9fk) zb9sU5ZselKaBrl!mg8(#LMLFBd&PHhCSavs82sJG50^J!7wd2Fu-f>25d`*DOaXs< z_c)&yho9jdYc>|+Os=lr)0spjO5!hR7@K*LYMG`EbdNgaxLU9MyD2eQo;A zsml5Z}E!-`Quo38v)%L^)6eH6nHieTt%}NkDy|1k@BE`Q^I4UB_$RA9r`1 zgeXWz7pX5q;#(lT1)t+ydGc4_1!gXHX{xHMG~>DXx3fFHS%1~-`hWbkH@@!?@;AA$ z8X!Lc(mTL7;WQ>QI-=a-c5Ef~$fkrlyb(J|W7MET*fTdLj|q3VcR{!(8o8a*k;myF z={Hx9gB+|Z;C))O_ICHb-TVIFo5K~o(scHi7JDq3kF!)n=v*(S67=UF2m%F=k;UoA z=FOL6Lb=VIi`EDV;qC<)HC_^jj9l2VRd~CxI6V-CZNnzdtB+uNYRp1!4TmBfoXELc z2rk(mQ%6Jm8dh#Q&%2INGEL4z9g4%$&OIc22#Ei_+!F7VV3N9vW8Jpmk z#Y?D32OD305u8kAG!2%R+(4yu@d4AX#j{`{m{}?jh*P6jWMID&X{H&R3*$_-xZYo= ztGyNWAj00^!rym*Y#@CXuGSDk&q;30tejAC4svK4XVw66d5IUq33o41<8hBSFDXb( zur+w=(klHd?(;T$cP^d(@$z{WqHew6<$`|gEta*nSg!ZayHIiKoXl*#K6ien>V2pH zYxQ#iyv=X(UXE41s=c=K-mtWJ@0{jV?m^BDCji7d2P?d))gxqWWO$vb90j{*&xJ}w z9BO$c3RfE?xhT8^<6Ndk&tO(Oz+B8C(YF)^s}5%P3mFb*t?hy=e}!h0y;?yZhyo%j z7Y$?`8HkeHgP3m7(94BT3XMfG3}q@!7#8gt2raBME&N0AVkuH1SzNgLS$e$53+JhL z@?+8Zj-CFHWicq46`*wCeXX(u0I6`F$W$;@_%)J+>RW}QMLbb=U{8Dk!mC*b!#~MC zKMki@B8J&Qq)8I9acG1#!z8K0uLfa5FNEM5W06MFgsFMypodAuMXZN4;PsHf*r&n_ z7C)=ou-UsndJ`C-x2Q`U+M_=0(DiGM5>n6VfYk-bulU(|HRgl*j$WGr?BhOWe+Ufl z1K7{$FM$6U<#g_-2j_HV0ofe%ypda_&8fWbU33r1E-9QR)dO~;OAYk_YVp1b=U9pp zxIh4jx(fT5a|HA51^%;2e zJp@9^5&=N)!w_zD8Kc|@!xu{yR~9b}c@~9Xd9&(M2rRl)CnFKZV7RUa5(i*cSXPNN z_=6!DA=mUB>(+;*uHP)0@B~HEL7J-fz*czUrHna%6NhHh9mD@ZSoc;TWj-)n1 eRYjJGUhRA1GMd|0$JoJ9&`n@I^tfZM)BgZQs=C+! diff --git a/openmmlab_test/mmclassification-speed-benchmark/mmcls/models/backbones/__pycache__/base_backbone.cpython-36.pyc b/openmmlab_test/mmclassification-speed-benchmark/mmcls/models/backbones/__pycache__/base_backbone.cpython-36.pyc deleted file mode 100644 index 01bde2367d62e1e6e664713974ddaf34a6bfc304..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1465 zcmaJ>%Z}SN6eVT(Ii6_{q?@d`jDW^ow5uQ}IuoE>Wi}ZgfP#RbM0%t|B3+Wo!(1X#-HIPNuqXqeDdhA z@}fNwne$fUzE-|4GNJA4L^$=>$fi;`qPHvV5AGox6iKNhX(VYnkhAw>MMK1C8mpm% zSXbndrXzU}-c025YMPGUlbECv$YS2kF~*6=Uu8zC&A(`|tTz|48H06Jl#b<fXX-v?oc zGH*0{u`>3Ju=2$&)*`q%&7+=-L50|&#}D_z%>$hcR|FY7uW%2k;Q z#}vy=y>5KSsn-y7JhtcVL7)yTTyNPuue39kT`=FQEA^~1pC=FC zT^?k~6v%pJY+fvSEWkwv2hI2Vq0gJppTLLq0$A1OtkjSblfnxIisD99_j5%DxK8Z> zl$Atw0zWN%8_e!8$A8BC?OR}Uq)j$=_DJgiXM3c5zeze0ubwE+Kr$FQ=77V-u}pzC z_5T^~>i?Eq)ScbSjH!Umrv*&4ve4BG8XxAo)I0!y3T&oe?3_WXTKvXzjXDhQEgLaj zOQ@aUd!)%CCH4n++=boIG1}bTqoeZxBS6oRDR#aVwc@;;aSRN#!gFTQYTacs-h!%I?0 zHgHc0u$S(+_a0jGcl2NA+LQmnUfQ8-r^%rNI2v+>GaqL@>S$*t`s0`W@SR7<-{iq) zq5d^aeS$&~NmDYV11cTqrcUM#TuP)TTd9||1}#d!o%$8|mPlU)cSHuzs@#eW0!c4O zCtP9-a=vs>c4*!1pPqf!|Ka?bizQv{Z1;tRzKCbTB8S*IZwA6@hJJ=0AP9gA97zYR z4BwCum9F&e+5-e4{W~&fy&)bM_?WU?``^PknCImQ=6Jc%*^7xWbA8PKDN>*%wJ}I>&Zv2#OUWwlUZQjh>8>SeT^9yY~S$P$Y~* znHqK_(h?JDcJS4g?0S;K6IR;b2H|dQz=VEuUa%1eQz~F^W0Z&u=DSYJq`=GBbEcTz z=LfaQt!xuw+dMn$cL%47Q~!>_5JMNFa;8p2C|RJ+UE@t#IDOd=2Br7b!*x&*l%eg` zTiVzi8DJ0p-yX>DvAqg0etSWtu58ad^&3X9nIiOyDhIVyjz~reS~-=A-dmC&Beu?) zdn|o~ytM4@IQ7;HR1PWE$t~2rHY$;zRxDL*>$h*k4GLwMy1Ycu*{)lP?Cadc_>_EK9|Z8_=egWt-zG`W)yvfIJvN9#1l% zW{rdHWrc)P_ck=qy%cgV-T7;^hpFDjsXszN=q~lCN1xEBnNRWS;q>Y4-s(+tH}`); z5L?4D8{~5o*es+)MSn(WOsS;Uwog%W7If-Xq}jKB3Fo{ia>r9o@KAGQ^#N*ips|c_ z3mr#&XxH>ceQZ4%@wD;4XLBu-{0tX5L_wSgQSLgoyK9tdhvh#wI#e-q=>)cUxyS&U z7jcdyDO0O&bN;Fn>Dm%-E{mA+rZDOgJXr6n+Ym#VqTwD42DU|07E{BH02OU%5=Nf0 zyWi|}!aBrP7f-r*uHHji9SqAPMdB&@r0Sg^{tNl0G0HNv-cvA6v;nmS*#!D8?}JK& TFILyEf4x;HB4?X!yZiKC6NQC) diff --git a/openmmlab_test/mmclassification-speed-benchmark/mmcls/models/backbones/__pycache__/mobilenet_v2.cpython-36.pyc b/openmmlab_test/mmclassification-speed-benchmark/mmcls/models/backbones/__pycache__/mobilenet_v2.cpython-36.pyc deleted file mode 100644 index caf93e556a7cce2413b96fd02f4bc1122b34d272..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7889 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 diff --git a/openmmlab_test/mmclassification-speed-benchmark/mmcls/models/backbones/__pycache__/regnet.cpython-36.pyc b/openmmlab_test/mmclassification-speed-benchmark/mmcls/models/backbones/__pycache__/regnet.cpython-36.pyc deleted file mode 100644 index d488b77d602c065d46503539bb6400d482c4ecdd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10254 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 TmVBt%XxjF+vte&kw(b7`hAXQF diff --git a/openmmlab_test/mmclassification-speed-benchmark/mmcls/models/backbones/__pycache__/resnext.cpython-36.pyc b/openmmlab_test/mmclassification-speed-benchmark/mmcls/models/backbones/__pycache__/resnext.cpython-36.pyc deleted file mode 100644 index dd3a2f8bffbfeb9084dd79384b007690722a2428..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5664 zcmdT|TW=f372aLmDN0ss$1aK%mTpf3o-4{=>)TWf6y?w4mv_|$RrycnYI^5`+uF?}jehxSqipmm(6BCQV08Y3 zd5cxp(2qukY#a%um-te3noWk!192el=^nj#p*@;7VaR>SHoQ=^@3D`==}fVl8jYEn zcruaK$tOlL_1etOX6lDbJrL1snlJZJ@`h!|vO9|vjy+dR>?s$vo{*{cgvbnJmXPy_ z?Dp=-u8SSH-pEm0=Bm;@2ZLnQ_ipcQvI~;m+Z_y;6S}Oob8`241@v}a7jSnlSm-U4 z@LZm$o4#o)^3;gz13q?UzPiV{xstBuJIaf~Y+nAJ?l1CZG~9XP+~_!zPB8VcY8ZBY z6S*^=Z?b4gGaMg2br&2FOqZ;L#h_@YJaw9@LADwSCmc-*EA2-i&pD(zrFF0`$Q?{i zRU}4}0mC^PjGXb94?67QF_T;|6|r~H@pm?Hh&W4(v89fqTpTT^Zxh2ABc9$#PoIQ@ zid}#xjy=gQNXTa`i6RMOPe{eOC*6Xag?se<9gPpz2F{6Ewh{y+|gAw}9MoOOz zyp6pBEpcfy)ASmBjsm?WNfI@DSz+A-u{htuFbKB>oS_M zjbRj#&wmS(jV1^<(+C%v927>X1F{!lAB%xw&-a;hj^LgsSooRN40sU17{?P2E|-3E zOjGGBXqH{(Kg|Sf;4Skw;R?5Vq4}^~idPP~Km@m?cgEvta>?TI&~s$FDlXCVbu@8p>bNfa z71y)i5?7O`DBi+&+e&zK|9V`JGeioVTH?BG!_&&P#Z?k?=|TXFTY-nfnC6jq?SYhB z&`o+ML?i^M8P~JB5I3pUwL>T1Nq;Blw~8qx8R_W}L0L7fXBRhKDI~49MdYrXZn~o1 z;wCm~2RaNU3_B@4=`*hA zEhJx%LvKAw`?fvu9Vu=5pT@tRY)^2Vwh?Z_An=``jg+LegFth5W6Dvm(3ZYCTSJbB z8#v-nGstb|j*PrLbVi3m1Yfx=xD5G;>P%0?HE8lPJn~aCM(vteHLI1ndD*&ZS>`n} zeb6uKKl*N(YoIUQsb`r@t4M8{XIB>Rp_6&MT@rM61zldzLes9&aUk#6cHFd6Go#~czh15wreSL85%^?%LQwdr7zJW6Q07Q|edTw=`^Ox+{Q9Rk!7?zA*ZLQh-l&T(Qe>Ek#Jq zzp!%JXPNC&*!0NfI226qF^~tc10|Zl)FB-5?nJ4nytlpWh!gLq6N!UuXDGM3x4YfW z&0D*@?)`yHKukw!mn+Bf)!05xwZ3b zksp#>rSIA8Yg{X^H3WL53ZF_zHA{@V~SI#b1q{$s!l`m0DRJL*RjI8&adaDD+QR5hT){^fn3AA;gUk z@VL9l97gB^U_$Xw0+DQtxua%+v%s0QiC1vEhG1PfQVR?i05*FBbW_hcn7brj&1jUY zuUC)&`@X*Z9|MF@93I68O)6bj)G?6~BQu1+|pUWult7@-SQdQ_h9BgbcyXxqyh-Rc7O zI-w-EjOm=8ky1{0%BGG$+EZNM)aOxdtGk$Qhc^i#rc6+7R6SGgFmub335Qj6?xNinW>GrJjj_onf%~V+7f_o4 z_huF*fL}QZF@nsb&3WXAb_bhP{2qIV8W3AVak=Lxgo%Bqm#al_f$Z;LIwpBehz>=M zf;8q^4oru+qu)MX<9Tk~u^1!OrQ9Z@YrA1Vuo@e@4qCuo#0 zrm7HiC8|o}X~{LeDb3BlS+7jMJZm3NmdY0m<;4bi?Xn=-T%=lBXF)11kgA5L@mk;< zavLs6e(!q)7D@2fNWpd8JiC_ZyUdEUa^HyCB${5AsCO<>?-JpcIn^qF@P@ca^e#2z zQ_-V_pmDtF;0GBScU&QEN$m!4pGJ47(Z;4Gv%WSwIqXY3k`R8qT`rO7Tcx#%cIAG% z71vR@9Cb!vsH?H0rmN{+L{TKt$%(5l3ow&bqQ7D5NX+voRnOr dL_5+buD_eqZ}-XDTCH`fWwy-q()y!y^FOw4Bw7Ff diff --git a/openmmlab_test/mmclassification-speed-benchmark/mmcls/models/backbones/__pycache__/seresnet.cpython-36.pyc b/openmmlab_test/mmclassification-speed-benchmark/mmcls/models/backbones/__pycache__/seresnet.cpython-36.pyc deleted file mode 100644 index 70882ccd70188b12c073b9f803b62fa849ebb39e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5064 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 L|JB#NSTp|vA3S%$ diff --git a/openmmlab_test/mmclassification-speed-benchmark/mmcls/models/backbones/__pycache__/shufflenet_v1.cpython-36.pyc b/openmmlab_test/mmclassification-speed-benchmark/mmcls/models/backbones/__pycache__/shufflenet_v1.cpython-36.pyc deleted file mode 100644 index 43d58f16ab98bdce4cee8f885c159e9702f75e61..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9313 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 CC0B3& diff --git a/openmmlab_test/mmclassification-speed-benchmark/mmcls/models/backbones/__pycache__/shufflenet_v2.cpython-36.pyc b/openmmlab_test/mmclassification-speed-benchmark/mmcls/models/backbones/__pycache__/shufflenet_v2.cpython-36.pyc deleted file mode 100644 index 2a984a935a8ffe15bbd840fc068357da0351b39b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7768 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 diff --git a/openmmlab_test/mmclassification-speed-benchmark/mmcls/models/backbones/__pycache__/vgg.cpython-36.pyc b/openmmlab_test/mmclassification-speed-benchmark/mmcls/models/backbones/__pycache__/vgg.cpython-36.pyc deleted file mode 100644 index 6308c9a1ec48efc2777a01a8f6956a039f81f0ea..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5267 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 a9IW%n0+GyGVQF>g_R`g*mzQ2!H2)uc%lyg! diff --git a/openmmlab_test/mmclassification-speed-benchmark/mmcls/models/backbones/mobilenet_v3.py b/openmmlab_test/mmclassification-speed-benchmark/mmcls/models/backbones/mobilenet_v3.py deleted file mode 100644 index 586123ee..00000000 --- a/openmmlab_test/mmclassification-speed-benchmark/mmcls/models/backbones/mobilenet_v3.py +++ /dev/null @@ -1,173 +0,0 @@ -from mmcv.cnn import ConvModule -from torch.nn.modules.batchnorm import _BatchNorm - -from ..builder import BACKBONES -from ..utils import InvertedResidual -from .base_backbone import BaseBackbone - - -@BACKBONES.register_module() -class MobileNetv3(BaseBackbone): - """MobileNetv3 backbone. - - Args: - arch (str): Architechture of mobilnetv3, from {small, big}. - Default: small. - conv_cfg (dict, optional): Config dict for convolution layer. - Default: None, which means using conv2d. - norm_cfg (dict): Config dict for normalization layer. - Default: dict(type='BN'). - out_indices (None or Sequence[int]): Output from which stages. - Default: (10, ), which means output tensors from final stage. - frozen_stages (int): Stages to be frozen (all param fixed). - Defualt: -1, which means not freezing any parameters. - norm_eval (bool): Whether to set norm layers to eval mode, namely, - freeze running stats (mean and var). Note: Effect on Batch Norm - and its variants only. Default: False. - with_cp (bool): Use checkpoint or not. Using checkpoint will save - some memory while slowing down the training speed. - Defualt: False. - """ - # Parameters to build each block: - # [kernel size, mid channels, out channels, with_se, act type, stride] - arch_settings = { - 'small': [[3, 16, 16, True, 'ReLU', 2], - [3, 72, 24, False, 'ReLU', 2], - [3, 88, 24, False, 'ReLU', 1], - [5, 96, 40, True, 'HSwish', 2], - [5, 240, 40, True, 'HSwish', 1], - [5, 240, 40, True, 'HSwish', 1], - [5, 120, 48, True, 'HSwish', 1], - [5, 144, 48, True, 'HSwish', 1], - [5, 288, 96, True, 'HSwish', 2], - [5, 576, 96, True, 'HSwish', 1], - [5, 576, 96, True, 'HSwish', 1]], - 'big': [[3, 16, 16, False, 'ReLU', 1], - [3, 64, 24, False, 'ReLU', 2], - [3, 72, 24, False, 'ReLU', 1], - [5, 72, 40, True, 'ReLU', 2], - [5, 120, 40, True, 'ReLU', 1], - [5, 120, 40, True, 'ReLU', 1], - [3, 240, 80, False, 'HSwish', 2], - [3, 200, 80, False, 'HSwish', 1], - [3, 184, 80, False, 'HSwish', 1], - [3, 184, 80, False, 'HSwish', 1], - [3, 480, 112, True, 'HSwish', 1], - [3, 672, 112, True, 'HSwish', 1], - [5, 672, 160, True, 'HSwish', 1], - [5, 672, 160, True, 'HSwish', 2], - [5, 960, 160, True, 'HSwish', 1]] - } # yapf: disable - - def __init__(self, - arch='small', - conv_cfg=None, - norm_cfg=dict(type='BN'), - out_indices=(10, ), - frozen_stages=-1, - norm_eval=False, - with_cp=False, - init_cfg=[ - dict(type='Kaiming', layer=['Conv2d']), - dict(type='Constant', val=1, layer=['BatchNorm2d']) - ]): - super(MobileNetv3, self).__init__(init_cfg) - assert arch in self.arch_settings - for index in out_indices: - if index not in range(0, len(self.arch_settings[arch])): - raise ValueError('the item in out_indices must in ' - f'range(0, {len(self.arch_settings[arch])}). ' - f'But received {index}') - - if frozen_stages not in range(-1, len(self.arch_settings[arch])): - raise ValueError('frozen_stages must be in range(-1, ' - f'{len(self.arch_settings[arch])}). ' - f'But received {frozen_stages}') - self.out_indices = out_indices - self.frozen_stages = frozen_stages - self.arch = arch - self.conv_cfg = conv_cfg - self.norm_cfg = norm_cfg - self.out_indices = out_indices - self.frozen_stages = frozen_stages - self.norm_eval = norm_eval - self.with_cp = with_cp - - self.in_channels = 16 - self.conv1 = ConvModule( - in_channels=3, - out_channels=self.in_channels, - kernel_size=3, - stride=2, - padding=1, - conv_cfg=conv_cfg, - norm_cfg=norm_cfg, - act_cfg=dict(type='HSwish')) - - self.layers = self._make_layer() - self.feat_dim = self.arch_settings[arch][-1][2] - - def _make_layer(self): - layers = [] - layer_setting = self.arch_settings[self.arch] - for i, params in enumerate(layer_setting): - (kernel_size, mid_channels, out_channels, with_se, act, - stride) = params - if with_se: - se_cfg = dict( - channels=mid_channels, - ratio=4, - act_cfg=(dict(type='ReLU'), dict(type='HSigmoid'))) - else: - se_cfg = None - - layer = InvertedResidual( - in_channels=self.in_channels, - out_channels=out_channels, - mid_channels=mid_channels, - kernel_size=kernel_size, - stride=stride, - se_cfg=se_cfg, - with_expand_conv=True, - conv_cfg=self.conv_cfg, - norm_cfg=self.norm_cfg, - act_cfg=dict(type=act), - with_cp=self.with_cp) - self.in_channels = out_channels - layer_name = 'layer{}'.format(i + 1) - self.add_module(layer_name, layer) - layers.append(layer_name) - return layers - - def forward(self, x): - x = self.conv1(x) - - outs = [] - for i, layer_name in enumerate(self.layers): - layer = getattr(self, layer_name) - x = layer(x) - if i in self.out_indices: - outs.append(x) - - if len(outs) == 1: - return outs[0] - else: - return tuple(outs) - - def _freeze_stages(self): - if self.frozen_stages >= 0: - for param in self.conv1.parameters(): - param.requires_grad = False - for i in range(1, self.frozen_stages + 1): - layer = getattr(self, f'layer{i}') - layer.eval() - for param in layer.parameters(): - param.requires_grad = False - - def train(self, mode=True): - super(MobileNetv3, self).train(mode) - self._freeze_stages() - if mode and self.norm_eval: - for m in self.modules(): - if isinstance(m, _BatchNorm): - m.eval() diff --git a/openmmlab_test/mmclassification-speed-benchmark/mmcls/models/backbones/vision_transformer.py b/openmmlab_test/mmclassification-speed-benchmark/mmcls/models/backbones/vision_transformer.py deleted file mode 100644 index 1fed6e8d..00000000 --- a/openmmlab_test/mmclassification-speed-benchmark/mmcls/models/backbones/vision_transformer.py +++ /dev/null @@ -1,480 +0,0 @@ -import torch -import torch.nn as nn -from mmcv.cnn import (build_activation_layer, build_conv_layer, - build_norm_layer, kaiming_init) - -from ..builder import BACKBONES -from ..utils import to_2tuple -from .base_backbone import BaseBackbone - - -class FFN(nn.Module): - """Implements feed-forward networks (FFNs) with residual connection. - - Args: - embed_dims (int): The feature dimension. Same as - `MultiheadAttention`. - feedforward_channels (int): The hidden dimension of FFNs. - num_fcs (int, optional): The number of fully-connected layers in - FFNs. Defaluts to 2. - act_cfg (dict, optional): The activation config for FFNs. - dropout (float, optional): Probability of an element to be - zeroed. Default 0.0. - add_residual (bool, optional): Add resudual connection. - Defaults to False. - """ - - def __init__(self, - embed_dims, - feedforward_channels, - num_fcs=2, - act_cfg=dict(type='GELU'), - dropout=0.0, - add_residual=True): - super(FFN, self).__init__() - assert num_fcs >= 2, 'num_fcs should be no less ' \ - f'than 2. got {num_fcs}.' - self.embed_dims = embed_dims - self.feedforward_channels = feedforward_channels - self.num_fcs = num_fcs - self.act_cfg = act_cfg - self.activate = build_activation_layer(act_cfg) - - layers = nn.ModuleList() - in_channels = embed_dims - for _ in range(num_fcs - 1): - layers.append( - nn.Sequential( - nn.Linear(in_channels, feedforward_channels), - self.activate, nn.Dropout(dropout))) - in_channels = feedforward_channels - layers.append(nn.Linear(feedforward_channels, embed_dims)) - self.layers = nn.Sequential(*layers) - self.dropout = nn.Dropout(dropout) - self.add_residual = add_residual - self.init_weights() - - def init_weights(self): - for m in self.modules(): - if isinstance(m, nn.Linear): - # xavier_init(m, distribution='uniform') - - # Bias init is different from our API - # therefore initialize them separately - # The initialization is sync with ClassyVision - nn.init.xavier_normal_(m.weight) - nn.init.normal_(m.bias, std=1e-6) - - def forward(self, x, residual=None): - """Forward function for `FFN`.""" - out = self.layers(x) - if not self.add_residual: - return out - if residual is None: - residual = x - return residual + self.dropout(out) - - def __repr__(self): - """str: a string that describes the module""" - repr_str = self.__class__.__name__ - repr_str += f'(embed_dims={self.embed_dims}, ' - repr_str += f'feedforward_channels={self.feedforward_channels}, ' - repr_str += f'num_fcs={self.num_fcs}, ' - repr_str += f'act_cfg={self.act_cfg}, ' - repr_str += f'dropout={self.dropout}, ' - repr_str += f'add_residual={self.add_residual})' - return repr_str - - -class MultiheadAttention(nn.Module): - """A warpper for torch.nn.MultiheadAttention. - - This module implements MultiheadAttention with residual connection. - Args: - embed_dims (int): The embedding dimension. - num_heads (int): Parallel attention heads. Same as - `nn.MultiheadAttention`. - attn_drop (float): A Dropout layer on attn_output_weights. Default 0.0. - proj_drop (float): The drop out rate after attention. Default 0.0. - """ - - def __init__(self, embed_dims, num_heads, attn_drop=0.0, proj_drop=0.0): - super(MultiheadAttention, self).__init__() - assert embed_dims % num_heads == 0, 'embed_dims must be ' \ - f'divisible by num_heads. got {embed_dims} and {num_heads}.' - self.embed_dims = embed_dims - self.num_heads = num_heads - self.attn = nn.MultiheadAttention(embed_dims, num_heads, attn_drop) - self.dropout = nn.Dropout(proj_drop) - - def forward(self, - x, - key=None, - value=None, - residual=None, - query_pos=None, - key_pos=None, - attn_mask=None, - key_padding_mask=None): - """Forward function for `MultiheadAttention`. - - Args: - x (Tensor): The input query with shape [num_query, bs, - embed_dims]. Same in `nn.MultiheadAttention.forward`. - key (Tensor): The key tensor with shape [num_key, bs, - embed_dims]. Same in `nn.MultiheadAttention.forward`. - Default None. If None, the `query` will be used. - value (Tensor): The value tensor with same shape as `key`. - Same in `nn.MultiheadAttention.forward`. Default None. - If None, the `key` will be used. - residual (Tensor): The tensor used for addition, with the - same shape as `x`. Default None. If None, `x` will be used. - query_pos (Tensor): The positional encoding for query, with - the same shape as `x`. Default None. If not None, it will - be added to `x` before forward function. - key_pos (Tensor): The positional encoding for `key`, with the - same shape as `key`. Default None. If not None, it will - be added to `key` before forward function. If None, and - `query_pos` has the same shape as `key`, then `query_pos` - will be used for `key_pos`. - attn_mask (Tensor): ByteTensor mask with shape [num_query, - num_key]. Same in `nn.MultiheadAttention.forward`. - Default None. - key_padding_mask (Tensor): ByteTensor with shape [bs, num_key]. - Same in `nn.MultiheadAttention.forward`. Default None. - Returns: - Tensor: forwarded results with shape [num_query, bs, embed_dims]. - """ - query = x - if key is None: - key = query - if value is None: - value = key - if residual is None: - residual = x - if key_pos is None: - if query_pos is not None and key is not None: - if query_pos.shape == key.shape: - key_pos = query_pos - if query_pos is not None: - query = query + query_pos - if key_pos is not None: - key = key + key_pos - out = self.attn( - query, - key, - value=value, - attn_mask=attn_mask, - key_padding_mask=key_padding_mask)[0] - - return residual + self.dropout(out) - - -class TransformerEncoderLayer(nn.Module): - """Implements one encoder layer in Vision Transformer. - - Args: - embed_dims (int): The feature dimension. Same as `FFN`. - num_heads (int): Parallel attention heads. - feedforward_channels (int): The hidden dimension for FFNs. - attn_drop (float): The drop out rate for attention layer. - Default 0.0. - proj_drop (float): Probability of an element to be zeroed - after the feed forward layer. Default 0.0. - act_cfg (dict): The activation config for FFNs. Defalut GELU. - norm_cfg (dict): Config dict for normalization layer. Default - layer normalization. - num_fcs (int): The number of fully-connected layers for FFNs. - Default 2. - """ - - def __init__(self, - embed_dims, - num_heads, - feedforward_channels, - attn_drop=0., - proj_drop=0., - act_cfg=dict(type='GELU'), - norm_cfg=dict(type='LN'), - num_fcs=2): - super(TransformerEncoderLayer, self).__init__() - self.norm1_name, norm1 = build_norm_layer( - norm_cfg, embed_dims, postfix=1) - self.add_module(self.norm1_name, norm1) - self.attn = MultiheadAttention( - embed_dims, - num_heads=num_heads, - attn_drop=attn_drop, - proj_drop=proj_drop) - - self.norm2_name, norm2 = build_norm_layer( - norm_cfg, embed_dims, postfix=2) - self.add_module(self.norm2_name, norm2) - self.mlp = FFN(embed_dims, feedforward_channels, num_fcs, act_cfg, - proj_drop) - - @property - def norm1(self): - return getattr(self, self.norm1_name) - - @property - def norm2(self): - return getattr(self, self.norm2_name) - - def forward(self, x): - norm_x = self.norm1(x) - # Reason for permute: as the shape of input from pretrained weight - # from pytorch-image-models is [batch_size, num_query, embed_dim], - # but the one from nn.MultiheadAttention is - # [num_query, batch_size, embed_dim] - x = x.permute(1, 0, 2) - norm_x = norm_x.permute(1, 0, 2) - x = self.attn(norm_x, residual=x) - # Convert the shape back to [batch_size, num_query, embed_dim] in - # order to make use of the pretrained weight - x = x.permute(1, 0, 2) - x = self.mlp(self.norm2(x), residual=x) - return x - - -class PatchEmbed(nn.Module): - """Image to Patch Embedding. - - Args: - img_size (int | tuple): The size of input image. - patch_size (int): The size of one patch - in_channels (int): The num of input channels. - embed_dim (int): The dimensions of embedding. - conv_cfg (dict | None): The config dict for conv layers. - Default: None. - """ - - def __init__(self, - img_size=224, - patch_size=16, - in_channels=3, - embed_dim=768, - conv_cfg=None): - super(PatchEmbed, self).__init__() - if isinstance(img_size, int): - img_size = to_2tuple(img_size) - elif isinstance(img_size, tuple): - if len(img_size) == 1: - img_size = to_2tuple(img_size[0]) - assert len(img_size) == 2, \ - f'The size of image should have length 1 or 2, ' \ - f'but got {len(img_size)}' - - self.img_size = img_size - self.patch_size = to_2tuple(patch_size) - - num_patches = (self.img_size[1] // self.patch_size[1]) * ( - self.img_size[0] // self.patch_size[0]) - assert num_patches * self.patch_size[0] * self.patch_size[1] == \ - self.img_size[0] * self.img_size[1], \ - 'The image size H*W must be divisible by patch size' - self.num_patches = num_patches - - # Use conv layer to embed - self.projection = build_conv_layer( - conv_cfg, - in_channels, - embed_dim, - kernel_size=patch_size, - stride=patch_size) - - self.init_weights() - - def init_weights(self): - # Lecun norm from ClassyVision - kaiming_init(self.projection, mode='fan_in', nonlinearity='linear') - - def forward(self, x): - B, C, H, W = x.shape - # FIXME look at relaxing size constraints - assert H == self.img_size[0] and W == self.img_size[1], \ - f"Input image size ({H}*{W}) doesn't " \ - f'match model ({self.img_size[0]}*{self.img_size[1]}).' - # The output size is (B, N, D), where N=H*W/P/P, D is embid_dim - x = self.projection(x).flatten(2).transpose(1, 2) - return x - - -class HybridEmbed(nn.Module): - """CNN Feature Map Embedding. - - Extract feature map from CNN, flatten, project to embedding dim. - """ - - def __init__(self, - backbone, - img_size=224, - feature_size=None, - in_channels=3, - embed_dim=768, - conv_cfg=None): - super().__init__() - assert isinstance(backbone, nn.Module) - if isinstance(img_size, int): - img_size = to_2tuple(img_size) - elif isinstance(img_size, tuple): - if len(img_size) == 1: - img_size = to_2tuple(img_size[0]) - assert len(img_size) == 2, \ - f'The size of image should have length 1 or 2, ' \ - f'but got {len(img_size)}' - - self.img_size = img_size - self.backbone = backbone - if feature_size is None: - with torch.no_grad(): - # FIXME this is hacky, but most reliable way of - # determining the exact dim of the output feature - # map for all networks, the feature metadata has - # reliable channel and stride info, but using - # stride to calc feature dim requires info about padding of - # each stage that isn't captured. - training = backbone.training - if training: - backbone.eval() - o = self.backbone( - torch.zeros(1, in_channels, img_size[0], img_size[1])) - if isinstance(o, (list, tuple)): - # last feature if backbone outputs list/tuple of features - o = o[-1] - feature_size = o.shape[-2:] - feature_dim = o.shape[1] - backbone.train(training) - else: - feature_size = to_2tuple(feature_size) - if hasattr(self.backbone, 'feature_info'): - feature_dim = self.backbone.feature_info.channels()[-1] - else: - feature_dim = self.backbone.num_features - self.num_patches = feature_size[0] * feature_size[1] - - # Use conv layer to embed - self.projection = build_conv_layer( - conv_cfg, feature_dim, embed_dim, kernel_size=1, stride=1) - - self.init_weights() - - def init_weights(self): - # Lecun norm from ClassyVision - kaiming_init(self.projection, mode='fan_in', nonlinearity='linear') - - def forward(self, x): - x = self.backbone(x) - if isinstance(x, (list, tuple)): - # last feature if backbone outputs list/tuple of features - x = x[-1] - x = self.projection(x).flatten(2).transpose(1, 2) - return x - - -@BACKBONES.register_module() -class VisionTransformer(BaseBackbone): - """ Vision Transformer - A PyTorch impl of : `An Image is Worth 16x16 Words: - Transformers for Image Recognition at Scale` - - https://arxiv.org/abs/2010.11929 - Args: - num_layers (int): Depth of transformer - embed_dim (int): Embedding dimension - num_heads (int): Number of attention heads - img_size (int | tuple): Input image size - patch_size (int | tuple): The patch size - in_channels (int): Number of input channels - feedforward_channels (int): The hidden dimension for FFNs. - drop_rate (float): Probability of an element to be zeroed. - Default 0.0. - attn_drop (float): The drop out rate for attention layer. - Default 0.0. - hybrid_backbone (nn.Module): CNN backbone to use in-place of - PatchEmbed module. Default None. - norm_cfg - norm_cfg (dict): Config dict for normalization layer. Default - layer normalization. - act_cfg (dict): The activation config for FFNs. Defalut GELU. - num_fcs (int): The number of fully-connected layers for FFNs. - Default 2. - """ - - def __init__(self, - num_layers=12, - embed_dim=768, - num_heads=12, - img_size=224, - patch_size=16, - in_channels=3, - feedforward_channels=3072, - drop_rate=0., - attn_drop_rate=0., - hybrid_backbone=None, - norm_cfg=dict(type='LN'), - act_cfg=dict(type='GELU'), - num_fcs=2): - super(VisionTransformer, self).__init__() - self.embed_dim = embed_dim - - if hybrid_backbone is not None: - self.patch_embed = HybridEmbed( - hybrid_backbone, - img_size=img_size, - in_channels=in_channels, - embed_dim=embed_dim) - else: - self.patch_embed = PatchEmbed( - img_size=img_size, - patch_size=patch_size, - in_channels=in_channels, - embed_dim=embed_dim) - num_patches = self.patch_embed.num_patches - - self.cls_token = nn.Parameter(torch.zeros(1, 1, embed_dim)) - self.pos_embed = nn.Parameter( - torch.zeros(1, num_patches + 1, embed_dim)) - self.drop_after_pos = nn.Dropout(p=drop_rate) - - self.layers = nn.ModuleList() - for _ in range(num_layers): - self.layers.append( - TransformerEncoderLayer( - embed_dim, - num_heads, - feedforward_channels, - attn_drop=attn_drop_rate, - proj_drop=drop_rate, - act_cfg=act_cfg, - norm_cfg=norm_cfg, - num_fcs=num_fcs)) - - self.norm1_name, norm1 = build_norm_layer( - norm_cfg, embed_dim, postfix=1) - self.add_module(self.norm1_name, norm1) - - self.init_weights() - - def init_weights(self): - super(VisionTransformer, self).init_weights() - nn.init.normal_(self.pos_embed, std=0.02) - - @property - def norm1(self): - return getattr(self, self.norm1_name) - - def forward(self, x): - B = x.shape[0] - x = self.patch_embed(x) - - cls_tokens = self.cls_token.expand( - B, -1, -1) # stole cls_tokens impl from Phil Wang, thanks - x = torch.cat((cls_tokens, x), dim=1) - x = x + self.pos_embed - x = self.drop_after_pos(x) - - for layer in self.layers: - x = layer(x) - - x = self.norm1(x)[:, 0] - return x diff --git a/openmmlab_test/mmclassification-speed-benchmark/mmcls/models/builder.py b/openmmlab_test/mmclassification-speed-benchmark/mmcls/models/builder.py deleted file mode 100644 index 7b61742d..00000000 --- a/openmmlab_test/mmclassification-speed-benchmark/mmcls/models/builder.py +++ /dev/null @@ -1,34 +0,0 @@ -from mmcv.cnn import MODELS as MMCV_MODELS -from mmcv.utils import Registry - -MODELS = Registry('models', parent=MMCV_MODELS) - -BACKBONES = MODELS -NECKS = MODELS -HEADS = MODELS -LOSSES = MODELS -CLASSIFIERS = MODELS - - -def build_backbone(cfg): - """Build backbone.""" - return BACKBONES.build(cfg) - - -def build_neck(cfg): - """Build neck.""" - return NECKS.build(cfg) - - -def build_head(cfg): - """Build head.""" - return HEADS.build(cfg) - - -def build_loss(cfg): - """Build loss.""" - return LOSSES.build(cfg) - - -def build_classifier(cfg): - return CLASSIFIERS.build(cfg) diff --git a/openmmlab_test/mmclassification-speed-benchmark/mmcls/models/classifiers/__init__.py b/openmmlab_test/mmclassification-speed-benchmark/mmcls/models/classifiers/__init__.py deleted file mode 100644 index b33d1c8a..00000000 --- a/openmmlab_test/mmclassification-speed-benchmark/mmcls/models/classifiers/__init__.py +++ /dev/null @@ -1,4 +0,0 @@ -from .base import BaseClassifier -from .image import ImageClassifier - -__all__ = ['BaseClassifier', 'ImageClassifier'] diff --git a/openmmlab_test/mmclassification-speed-benchmark/mmcls/models/classifiers/__pycache__/__init__.cpython-36.pyc b/openmmlab_test/mmclassification-speed-benchmark/mmcls/models/classifiers/__pycache__/__init__.cpython-36.pyc deleted file mode 100644 index ee794bb0001c6300244d6e9fa89d6c3a77a40e7c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 290 zcmYk1u};G<5Qc3hp%rT3C0H`F9#|1VWny7r%VIh4(OUSD$d?Yh1Mh)&C9h1p0u$#5 zDo(mzzyAAlr@LOS&)?s6?NJEv$$cut?v9(TSe$S&2$YSK*{h(iXbSd)EBC4?UG*gD zvoFbLEz`x$65Iz%(!v-Uf-xT=E;63w zyU~XMK@TJJh{3jI0-7{p_j|6hlOOsGjR0=bLf;+G#+Ml&je~V90T0uKd59`$(8y64+~ER diff --git a/openmmlab_test/mmclassification-speed-benchmark/mmcls/models/classifiers/__pycache__/base.cpython-36.pyc b/openmmlab_test/mmclassification-speed-benchmark/mmcls/models/classifiers/__pycache__/base.cpython-36.pyc deleted file mode 100644 index e221da0671407d8fee686f786dedc7b93e548861..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8092 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 diff --git a/openmmlab_test/mmclassification-speed-benchmark/mmcls/models/classifiers/__pycache__/image.cpython-36.pyc b/openmmlab_test/mmclassification-speed-benchmark/mmcls/models/classifiers/__pycache__/image.cpython-36.pyc deleted file mode 100644 index 683c831f13c83b60f550be009c0ed852a39d7628..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3083 zcmbVO&5zs06(3TRL{ZXun-q!bB*g$Z)IxT(ZByj1FcRBqyInM01hD}FY8ry#j3n;z zLzx-EUV(e*8px$B`d_sDC;Er*+LLcR^wd*-Zz%0&P90)q9v|Plk9lu?!%v69;BS9= zJbk*w*uU77)&~6$U4Mf?FyW+Z(#+1p5w2*ZZq}N#GH>E#?MXZ9Ogat&-%GohKk-4g zMJMfL!6a~)Y#sN{*{_-C3jYlgz6{P==gwpxoab!RdkYKf=&g%!DSNet!bI0BAiC?$+XC29W?I?8Ho*@%lKsE)c&J#p2^(kw+`uX>aE9-mIrC1buvq& zipj{PQE=4sXBZ?yKy2cQ;CnW+p}px%TEY|UH*DgGj_6`;3t#jwcfMyHn{?rJzrJ&r zMe{2rj^eJ>%Gdz2hu%Wh`*6rG<5cY2J$9?kx#O_P6YQj?er{UFo^Xg`+QJ35^=G$Y zVaIeUa6$Q%YbC!ly~?$mplVspx29iV6CpDY4CAnB6aTM{`mAanZ^3`qJL^_mEBzO9 zr|MeiVg7gf9n$#jTe@TEUgbm9*Z-_~&1|*>*8I`2{GR%c_13rE{^IcR;UkY_=wg9mz6W=*%G1xQ1|HDV3QqUO?o!3 zmJHTmQ>nB_{9T9xWqM&46UKz$KiGd??k$Q;?iEX!XIUCeLnF1>%Q7ng6lyAXS1+X$ zyHlCRi!4$nRzUA%g^;P<+sI0#_Y%UF@$yu?2V;~|{SX7|Zo9tYIUQ%q4L~)$;{?vY z@tr|yfcYJ#W4{EBPcuC(jXs{$-5a{waov9Wz3tGoaJ4qwZmJ z36JpZ;*2`0PoE?>p(Z`$@-_A}Hhd-{Q!1(XOcfb7D85aK`6ryxJ07)cYUM$|H%h4&bxBhV(Wz!i|23eS20YR64+* z$d;wCu*F5G2ybk?ffxtD2BjXUx!%8cBQ65x_g~0d7izT6iy7C8Xes&qqaA**!+*2G zUyeAcrw|Q-!3LI~RP^|o8dCM*bcwP{kr!kD=%W`!nF<1yOh!46abrpa$RzC21|7mu zT-P%pt+?Hg9SAAs-03lU?hh=GKRcWnW9wc77vmgloUoM(yw> zcYoODxR$^KOhxLHd`t_iZCT)F2LCD-`i@2&3vp@}wWxkVgT<;L_JT?&v~^Q=%B6^m z9ChspQJ+Ar_BZLNJ0}pGYqdk{4w;g`T$*p3AvJ~sRlO!yWy8SP29f|zfD)^ZZXTd( zE?k@-LhTEPAbe`h4IrTf$^ks!=fpz8y%#`1+-C*_V>Z{HJrslhHeefTAD1OAX$zVo z?=r$k59cAwBr;$_yBW-{VEkKjO)e1*tUkCI!d1=fBWfd`Zm2xUWEj>#7y^Au*beJK z7=BkqY4gPbZ{s3unIcp5a1HsfOw%yD^k(F!pOFxul)VFcAoMl{zs;QH+1mBH{$2ZZ zG*p}<-^WmQ?SC!qP68!+BihT)UWSulX_8cr*H=?>0eVyX%qX%@-%)a&;8#MegRt5! e-D)Tco&JL+%+Ki;S<{7r`@p@6`(n`AcK!$DHAO%G diff --git a/openmmlab_test/mmclassification-speed-benchmark/mmcls/models/classifiers/base.py b/openmmlab_test/mmclassification-speed-benchmark/mmcls/models/classifiers/base.py deleted file mode 100644 index d619f718..00000000 --- a/openmmlab_test/mmclassification-speed-benchmark/mmcls/models/classifiers/base.py +++ /dev/null @@ -1,224 +0,0 @@ -import warnings -from abc import ABCMeta, abstractmethod -from collections import OrderedDict - -import cv2 -import mmcv -import torch -import torch.distributed as dist -from mmcv import color_val -from mmcv.runner import BaseModule - -# TODO import `auto_fp16` from mmcv and delete them from mmcls -try: - from mmcv.runner import auto_fp16 -except ImportError: - warnings.warn('auto_fp16 from mmcls will be deprecated.' - 'Please install mmcv>=1.1.4.') - from mmcls.core import auto_fp16 - - -class BaseClassifier(BaseModule, metaclass=ABCMeta): - """Base class for classifiers.""" - - def __init__(self, init_cfg=None): - super(BaseClassifier, self).__init__(init_cfg) - self.fp16_enabled = False - - @property - def with_neck(self): - return hasattr(self, 'neck') and self.neck is not None - - @property - def with_head(self): - return hasattr(self, 'head') and self.head is not None - - @abstractmethod - def extract_feat(self, imgs): - pass - - def extract_feats(self, imgs): - assert isinstance(imgs, list) - for img in imgs: - yield self.extract_feat(img) - - @abstractmethod - def forward_train(self, imgs, **kwargs): - """ - Args: - img (list[Tensor]): List of tensors of shape (1, C, H, W). - Typically these should be mean centered and std scaled. - kwargs (keyword arguments): Specific to concrete implementation. - """ - pass - - @abstractmethod - def simple_test(self, img, **kwargs): - pass - - def forward_test(self, imgs, **kwargs): - """ - Args: - imgs (List[Tensor]): the outer list indicates test-time - augmentations and inner Tensor should have a shape NxCxHxW, - which contains all images in the batch. - """ - if isinstance(imgs, torch.Tensor): - imgs = [imgs] - for var, name in [(imgs, 'imgs')]: - if not isinstance(var, list): - raise TypeError(f'{name} must be a list, but got {type(var)}') - - if len(imgs) == 1: - return self.simple_test(imgs[0], **kwargs) - else: - raise NotImplementedError('aug_test has not been implemented') - - @auto_fp16(apply_to=('img', )) - def forward(self, img, return_loss=True, **kwargs): - """Calls either forward_train or forward_test depending on whether - return_loss=True. - - Note this setting will change the expected inputs. When - `return_loss=True`, img and img_meta are single-nested (i.e. Tensor and - List[dict]), and when `resturn_loss=False`, img and img_meta should be - double nested (i.e. List[Tensor], List[List[dict]]), with the outer - list indicating test time augmentations. - """ - if return_loss: - return self.forward_train(img, **kwargs) - else: - return self.forward_test(img, **kwargs) - - def _parse_losses(self, losses): - log_vars = OrderedDict() - for loss_name, loss_value in losses.items(): - if isinstance(loss_value, torch.Tensor): - log_vars[loss_name] = loss_value.mean() - elif isinstance(loss_value, list): - log_vars[loss_name] = sum(_loss.mean() for _loss in loss_value) - elif isinstance(loss_value, dict): - for name, value in loss_value.items(): - log_vars[name] = value - else: - raise TypeError( - f'{loss_name} is not a tensor or list of tensors') - - loss = sum(_value for _key, _value in log_vars.items() - if 'loss' in _key) - - log_vars['loss'] = loss - for loss_name, loss_value in log_vars.items(): - # reduce loss when distributed training - if dist.is_available() and dist.is_initialized(): - loss_value = loss_value.data.clone() - dist.all_reduce(loss_value.div_(dist.get_world_size())) - log_vars[loss_name] = loss_value.item() - - return loss, log_vars - - def train_step(self, data, optimizer): - """The iteration step during training. - - This method defines an iteration step during training, except for the - back propagation and optimizer updating, which are done in an optimizer - hook. Note that in some complicated cases or models, the whole process - including back propagation and optimizer updating are also defined in - this method, such as GAN. - - Args: - data (dict): The output of dataloader. - optimizer (:obj:`torch.optim.Optimizer` | dict): The optimizer of - runner is passed to ``train_step()``. This argument is unused - and reserved. - - Returns: - dict: It should contain at least 3 keys: ``loss``, ``log_vars``, - ``num_samples``. - ``loss`` is a tensor for back propagation, which can be a - weighted sum of multiple losses. - ``log_vars`` contains all the variables to be sent to the - logger. - ``num_samples`` indicates the batch size (when the model is - DDP, it means the batch size on each GPU), which is used for - averaging the logs. - """ - losses = self(**data) - loss, log_vars = self._parse_losses(losses) - - outputs = dict( - loss=loss, log_vars=log_vars, num_samples=len(data['img'].data)) - - return outputs - - def val_step(self, data, optimizer): - """The iteration step during validation. - - This method shares the same signature as :func:`train_step`, but used - during val epochs. Note that the evaluation after training epochs is - not implemented with this method, but an evaluation hook. - """ - losses = self(**data) - loss, log_vars = self._parse_losses(losses) - - outputs = dict( - loss=loss, log_vars=log_vars, num_samples=len(data['img'].data)) - - return outputs - - def show_result(self, - img, - result, - text_color='green', - font_scale=0.5, - row_width=20, - show=False, - win_name='', - wait_time=0, - out_file=None): - """Draw `result` over `img`. - - Args: - img (str or Tensor): The image to be displayed. - result (Tensor): The classification results to draw over `img`. - text_color (str or tuple or :obj:`Color`): Color of texts. - font_scale (float): Font scales of texts. - row_width (int): width between each row of results on the image. - show (bool): Whether to show the image. - Default: False. - win_name (str): The window name. - wait_time (int): Value of waitKey param. - Default: 0. - out_file (str or None): The filename to write the image. - Default: None. - - Returns: - img (Tensor): Only if not `show` or `out_file` - """ - img = mmcv.imread(img) - img = img.copy() - - # write results on left-top of the image - x, y = 0, row_width - text_color = color_val(text_color) - for k, v in result.items(): - if isinstance(v, float): - v = f'{v:.2f}' - label_text = f'{k}: {v}' - cv2.putText(img, label_text, (x, y), cv2.FONT_HERSHEY_COMPLEX, - font_scale, text_color) - y += row_width - - # if out_file specified, do not show image in window - if out_file is not None: - show = False - - if show: - mmcv.imshow(img, win_name, wait_time) - if out_file is not None: - mmcv.imwrite(img, out_file) - - if not (show or out_file): - warnings.warn('show==False and out_file is not specified, only ' - 'result image will be returned') - return img diff --git a/openmmlab_test/mmclassification-speed-benchmark/mmcls/models/classifiers/image.py b/openmmlab_test/mmclassification-speed-benchmark/mmcls/models/classifiers/image.py deleted file mode 100644 index 043a9eb2..00000000 --- a/openmmlab_test/mmclassification-speed-benchmark/mmcls/models/classifiers/image.py +++ /dev/null @@ -1,97 +0,0 @@ -import copy -import warnings - -from ..builder import CLASSIFIERS, build_backbone, build_head, build_neck -from ..utils.augment import Augments -from .base import BaseClassifier - - -@CLASSIFIERS.register_module() -class ImageClassifier(BaseClassifier): - - def __init__(self, - backbone, - neck=None, - head=None, - pretrained=None, - train_cfg=None, - init_cfg=None): - super(ImageClassifier, self).__init__(init_cfg) - - if pretrained is not None: - warnings.warn('DeprecationWarning: pretrained is a deprecated \ - key, please consider using init_cfg') - self.init_cfg = dict(type='Pretrained', checkpoint=pretrained) - - self.backbone = build_backbone(backbone) - - if neck is not None: - self.neck = build_neck(neck) - - if head is not None: - self.head = build_head(head) - - self.augments = None - if train_cfg is not None: - augments_cfg = train_cfg.get('augments', None) - if augments_cfg is not None: - self.augments = Augments(augments_cfg) - else: - # Considering BC-breaking - mixup_cfg = train_cfg.get('mixup', None) - cutmix_cfg = train_cfg.get('cutmix', None) - assert mixup_cfg is None or cutmix_cfg is None, \ - 'If mixup and cutmix are set simultaneously,' \ - 'use augments instead.' - if mixup_cfg is not None: - warnings.warn('The mixup attribute will be deprecated. ' - 'Please use augments instead.') - cfg = copy.deepcopy(mixup_cfg) - cfg['type'] = 'BatchMixup' - # In the previous version, mixup_prob is always 1.0. - cfg['prob'] = 1.0 - self.augments = Augments(cfg) - if cutmix_cfg is not None: - warnings.warn('The cutmix attribute will be deprecated. ' - 'Please use augments instead.') - cfg = copy.deepcopy(cutmix_cfg) - cutmix_prob = cfg.pop('cutmix_prob') - cfg['type'] = 'BatchCutMix' - cfg['prob'] = cutmix_prob - self.augments = Augments(cfg) - - def extract_feat(self, img): - """Directly extract features from the backbone + neck.""" - x = self.backbone(img) - if self.with_neck: - x = self.neck(x) - return x - - def forward_train(self, img, gt_label, **kwargs): - """Forward computation during training. - - Args: - img (Tensor): of shape (N, C, H, W) encoding input images. - Typically these should be mean centered and std scaled. - gt_label (Tensor): It should be of shape (N, 1) encoding the - ground-truth label of input images for single label task. It - shoulf be of shape (N, C) encoding the ground-truth label - of input images for multi-labels task. - Returns: - dict[str, Tensor]: a dictionary of loss components - """ - if self.augments is not None: - img, gt_label = self.augments(img, gt_label) - - x = self.extract_feat(img) - - losses = dict() - loss = self.head.forward_train(x, gt_label) - losses.update(loss) - - return losses - - def simple_test(self, img, img_metas): - """Test without augmentation.""" - x = self.extract_feat(img) - return self.head.simple_test(x) diff --git a/openmmlab_test/mmclassification-speed-benchmark/mmcls/models/heads/__init__.py b/openmmlab_test/mmclassification-speed-benchmark/mmcls/models/heads/__init__.py deleted file mode 100644 index 12f06df0..00000000 --- a/openmmlab_test/mmclassification-speed-benchmark/mmcls/models/heads/__init__.py +++ /dev/null @@ -1,10 +0,0 @@ -from .cls_head import ClsHead -from .linear_head import LinearClsHead -from .multi_label_head import MultiLabelClsHead -from .multi_label_linear_head import MultiLabelLinearClsHead -from .vision_transformer_head import VisionTransformerClsHead - -__all__ = [ - 'ClsHead', 'LinearClsHead', 'MultiLabelClsHead', 'MultiLabelLinearClsHead', - 'VisionTransformerClsHead' -] diff --git a/openmmlab_test/mmclassification-speed-benchmark/mmcls/models/heads/__pycache__/__init__.cpython-36.pyc b/openmmlab_test/mmclassification-speed-benchmark/mmcls/models/heads/__pycache__/__init__.cpython-36.pyc deleted file mode 100644 index 22ab6b5fd0f32f7bf8bb5722831b2c91ca670b66..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 509 zcmZ8dJ5B>J5Vf<}?B*vy6|RsXY(a|eFXY7+5t(5pR9ls#ZOmkq!1?Pcxpo57>B2S=;sYoO5 zLJu>MMV>;AebFc0)0xh7Uk{#AG0?*YHXVIYH#X(_>=yi;QJUy@ZY!f)E1cf%ps{nc zGSG^XR{S4-_GrDWtEE$wU)K)JUoF?6W-bZP4G<=CJ%Yt_DDo1#+>nJBC58}P9F&kE zPB7Sz5PTfuP()0Q<>RDKT})o07umFC4!NQ2K9f=bNcq8BPWK4k%VJZbDeA4M5UHDN zjBg6W5|sCLZA;bAbThv-M$cBJDmSRya}4kW*4ltC!W_Pk(pI*S@_hTc&oAj|2j(h# NxE~RW`0q|~{sZAjjaC2v diff --git a/openmmlab_test/mmclassification-speed-benchmark/mmcls/models/heads/__pycache__/base_head.cpython-36.pyc b/openmmlab_test/mmclassification-speed-benchmark/mmcls/models/heads/__pycache__/base_head.cpython-36.pyc deleted file mode 100644 index 6c27c24bd3d82e1347ba5f78a7611c20157cb0fe..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 818 zcmY*XO^?$s5VaGxNxSW8kq~FDIc#%)BSP$Q010g`h)XUbH+I{waZ>D*k7{pSX)o|Q z5P!*6PW%N<%(y8mmc}02?M+(bph zX&=?G5ryFF6;rViw@e8wG*^Rfq8O;*Tb3oi@FmM4pIltNywaWYr*h#sE6dL4Zr!Sk z`|+i8`l?miT9*`k9HMvJ3?0o1u2>N%Uc@T7V@nuW95F64i_Mt3$ZqdqCEac}M+Ivwly4ckZWqZ_{GL=V&Oc^3PD+itYA0}S#hK-E+o z08$c8*Gr#&f*X729h-z7tva8zW+-$tMs&68fW# zrj(25G!ADZ1%59XT0PH(K9-BpQo}+8e}XD}oY`&Dpsv)I@akWYd(_is2jI`Ck)era H(Iox@!dJwc diff --git a/openmmlab_test/mmclassification-speed-benchmark/mmcls/models/heads/__pycache__/cls_head.cpython-36.pyc b/openmmlab_test/mmclassification-speed-benchmark/mmcls/models/heads/__pycache__/cls_head.cpython-36.pyc deleted file mode 100644 index b86ffd9a15963afdb417043eabd625b7aafe5338..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2623 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 diff --git a/openmmlab_test/mmclassification-speed-benchmark/mmcls/models/heads/__pycache__/multi_label_linear_head.cpython-36.pyc b/openmmlab_test/mmclassification-speed-benchmark/mmcls/models/heads/__pycache__/multi_label_linear_head.cpython-36.pyc deleted file mode 100644 index 960400517293a39392dcabbca1b7c27ec0c53b01..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2291 zcmZ`)&2Jnv6u0MNclIM`(uP7?K1QNIS85X^#3cesNlSYuIkXjrJz&j_y}O>wcoy5! zHp_+s8>tua7a-1v3xAMrh*KmEoH_B{?50U8;%J_qy?*xZef{#u%1ZmUpT8Phi3s_N zoEahLU&3b|f#8JGob(qn&Ah%>@A#RQ1^tkF+|L_Dv)`nI2RzK9qSbFvBAQuyPVN)l z;LStAo1!)M=d|D9^fBp0$8ay%J@!EMs0$z5yL0#PF)x=#L7~|V}KhE zOC1;JM2=3xHZgmf?RE^~jvkrqTEms93Rc?-6W@@^_O|2Qsu&0zm%|t?6r)m0VK!eH zNX61|qLj%0&*0=2sbV`8u~d`F#zT?VN{hHiCa3r0rGX2$O!3K`QVr#(e)3gc@YKS_ zt?g)7+*4MUll_OFK5;=I5;a;R^1LwyCV(r=-- zgkl2(#H_^@wZz!(Qq5RBSJ@?yJ%z=L3OP(H_W7^7OsKCCd_LdxE0`&XNl&_>O`t7xWQmg5DF2e zT{`{XJda+nOKbnZ?4(=jaQ_G!0DtKcbd6`h4SmC+JJbd?#CcAy5pWo2cCV$kZ6j;q zu7dS}ZzJ2v+8nIPN2q0;IXMVG>t-u+Vg|E74`=>kVxbqa)j7#7z_&Ih5JDgKd;aw5 z6R6JknY7~)7%Qnpg;2KU)6HGimIfV9r5g3t>saEJRK_MM70{s4SfGchaN#g76VP*^ z9R1ogPgtlqPE2C0cA+hGI(B|0t^NoccR{JtbGHsJKntSI#Pdn1fuOjs2_8)+l?$OI zC;KPK^JOv8SP3qe0KEYnsT!YnJ#8H$i%Bl(*83FBn~NZbhe_L@m%Yn$l?I?q-#;&X zXY6}z=ZL}&)ayY?inO2-&`eQihqB_8vO6m7t*}rtM z+#FV_{x^{1u6?TOTWHiAR5Is4k=SQ$tvEwC$TS-3)m_kH1c?@U>3aR_Df)$mXkGN# VA~;_lt(Y!|2;0Q#(yqTo{{z^baOwa6 diff --git a/openmmlab_test/mmclassification-speed-benchmark/mmcls/models/heads/__pycache__/vision_transformer_head.cpython-36.pyc b/openmmlab_test/mmclassification-speed-benchmark/mmcls/models/heads/__pycache__/vision_transformer_head.cpython-36.pyc deleted file mode 100644 index ba570a37876a59cb7c4163ac06eebd0ce1189119..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2958 zcmaJ@&5qm15oVK=L{ZX=?Kp;G2LU%f8w-dv2$Dmx*cfrvo9rRb2C(6SE(C|&lE@*O z+U}-3GtgXC2KJK83j{d_d6hguUvu&+-L!q0+{;96|>Z@w~YBGuc`PV-j z|77HO|M6}-J;=XD(+VB;IIFyxEf^!&ul$AY-a#2ILMQdguw|=Lq z_t~dUpFMxey05_}mHtd*Jg1W`pKveezd#V)f^iSNvPHms5%PeCU$dqEmA7QP$NO)F ziyj~F=#97NyRjjU-$X!R#K#zm_=F$eJ^acGy+sVK4(MB*$5PvQkYe`IRD4wqJiXyBaNIny)h{MfF|kFJ}trv=(yHnq(<5 z(<+hF+2&f$y5L;Mlo$28R+2%O5R%Z*37|>3<%tXLEcskkXIB=Ho!P6bsIub<`&val zZIpOyREF@&)hu}?mRVbwWZp<|Z31YM=F3&`h=Wdm=>?9xrcwe9EemX>!`?aI8>hc} zSOvFVWOCgdHn$;tfWVN|2M|Gt-tlsV2jZ- z+y>}-+Yo(!>y;sACrmvv1MY9x-;rzoK*oHDm1VT^C^x~eaIT2p=i?i!_}%%#q;9oI zj^S>yX>@_?5ecXwRzgjOwx`>TP%6eo8>KF3($tP_MBa{W=(F*4EbU+qs*PV}RVzMK zs!?{_>2Sf*(}4}OsFvy$^eb{*-KOpi9T#TcvhAO|rZ?~!rX82l^k3e8^P_cBi=$>E zWL+cLsS(;7)%9gofUMxlW4#fAKRy;RU)PyBaSQZO-EdI$h|)$My>fY%f*_ZPm%4n~ zoT&qt@c>PeJ>K9B>vumtWMdIWr7F z_DY1b40rz0U$F}&f6e_H;~>J)=Yi>AO@D_{bG3^!b-RKK(ljv9mhJEZHHQ1Z+mKwc zG02%#&8jfk1_;hHc5qu?O56W)Aw{OTAh>V@u(FFp{9Js|3TcY0Qsjv3@5AS-@6)0W zsQbZHN06zz=pLi#F*=XM?0#^EjoCf_{Ace+jVg3kw)GWqgdimenWLYeyG{(EwsEL& zw)53596GpeIFLd?4lp|)bjpbLcK$vM`g8R|XtDieCc#Dc;vAp)HY8ryv20{FRG2fD zG1H-%U`Lk(V`t-QQLNTLaj?#GW{m0}ATynEMVYJ~qMI@Y5nlIc$bsbW`4FGKLDQ64 z9@sSYeRhleA9QXWoKqO+p(E)q$Ez-%)zPVB}wII=Us%5#^q$^>E$+5b*mJ=3UsZG*BfYDxoPBju^R4eh8@ zB&XtZ(!2!ASZUybIEiUPa?`yJc;KFWgii}2)7|{ zX7j1vVHQ@6)|Y;;QyZ-)jgCd7ehU?#IHraEwg(ejrYNqQ{43-fD>aoUO4czu|M0zb ze`DKpME8QsYJqzpPE+Ji3sh1R`t*x7tM)U4H04c>;gBv^S6N+&P?QJiW9kS*JJ}cc zTvSz>UR!*bKrVMEWvHxZD$vn5?D_28VKf>Kqlrt>=^Z=Do2nA{FNi-4u4buUlKRLI zWhSNi5k42+yZoFjTj>^Om5r}ub>ueTT6s0gv5BJ8 0, 'Top-k should be larger than 0' - self.topk = topk - - self.compute_loss = build_loss(loss) - self.compute_accuracy = Accuracy(topk=self.topk) - self.cal_acc = cal_acc - - def loss(self, cls_score, gt_label): - num_samples = len(cls_score) - losses = dict() - # compute loss - loss = self.compute_loss(cls_score, gt_label, avg_factor=num_samples) - if self.cal_acc: - # compute accuracy - acc = self.compute_accuracy(cls_score, gt_label) - assert len(acc) == len(self.topk) - losses['accuracy'] = { - f'top-{k}': a - for k, a in zip(self.topk, acc) - } - losses['loss'] = loss - return losses - - def forward_train(self, cls_score, gt_label): - losses = self.loss(cls_score, gt_label) - return losses - - def simple_test(self, cls_score): - """Test without augmentation.""" - if isinstance(cls_score, list): - cls_score = sum(cls_score) / float(len(cls_score)) - pred = F.softmax(cls_score, dim=1) if cls_score is not None else None - - on_trace = hasattr(torch.jit, 'is_tracing') and torch.jit.is_tracing() - if torch.onnx.is_in_onnx_export() or on_trace: - return pred - pred = list(pred.detach().cpu().numpy()) - return pred diff --git a/openmmlab_test/mmclassification-speed-benchmark/mmcls/models/heads/linear_head.py b/openmmlab_test/mmclassification-speed-benchmark/mmcls/models/heads/linear_head.py deleted file mode 100644 index 7291d556..00000000 --- a/openmmlab_test/mmclassification-speed-benchmark/mmcls/models/heads/linear_head.py +++ /dev/null @@ -1,61 +0,0 @@ -import torch -import torch.nn as nn -import torch.nn.functional as F - -from ..builder import HEADS -from .cls_head import ClsHead - - -@HEADS.register_module() -class LinearClsHead(ClsHead): - """Linear classifier head. - - Args: - num_classes (int): Number of categories excluding the background - category. - in_channels (int): Number of channels in the input feature map. - """ - - def __init__(self, - num_classes, - in_channels, - init_cfg=None, - *args, - **kwargs): - init_cfg = init_cfg or dict( - type='Normal', - mean=0., - std=0.01, - bias=0., - override=dict(name='fc')) - super(LinearClsHead, self).__init__(init_cfg=init_cfg, *args, **kwargs) - - self.in_channels = in_channels - self.num_classes = num_classes - - if self.num_classes <= 0: - raise ValueError( - f'num_classes={num_classes} must be a positive integer') - - self._init_layers() - - def _init_layers(self): - self.fc = nn.Linear(self.in_channels, self.num_classes) - - def simple_test(self, img): - """Test without augmentation.""" - cls_score = self.fc(img) - if isinstance(cls_score, list): - cls_score = sum(cls_score) / float(len(cls_score)) - pred = F.softmax(cls_score, dim=1) if cls_score is not None else None - - on_trace = hasattr(torch.jit, 'is_tracing') and torch.jit.is_tracing() - if torch.onnx.is_in_onnx_export() or on_trace: - return pred - pred = list(pred.detach().cpu().numpy()) - return pred - - def forward_train(self, x, gt_label): - cls_score = self.fc(x) - losses = self.loss(cls_score, gt_label) - return losses diff --git a/openmmlab_test/mmclassification-speed-benchmark/mmcls/models/heads/multi_label_head.py b/openmmlab_test/mmclassification-speed-benchmark/mmcls/models/heads/multi_label_head.py deleted file mode 100644 index 3635d0d2..00000000 --- a/openmmlab_test/mmclassification-speed-benchmark/mmcls/models/heads/multi_label_head.py +++ /dev/null @@ -1,55 +0,0 @@ -import torch -import torch.nn.functional as F - -from ..builder import HEADS, build_loss -from .base_head import BaseHead - - -@HEADS.register_module() -class MultiLabelClsHead(BaseHead): - """Classification head for multilabel task. - - Args: - loss (dict): Config of classification loss. - """ - - def __init__(self, - loss=dict( - type='CrossEntropyLoss', - use_sigmoid=True, - reduction='mean', - loss_weight=1.0), - init_cfg=None): - super(MultiLabelClsHead, self).__init__(init_cfg=init_cfg) - - assert isinstance(loss, dict) - - self.compute_loss = build_loss(loss) - - def loss(self, cls_score, gt_label): - gt_label = gt_label.type_as(cls_score) - num_samples = len(cls_score) - losses = dict() - - # map difficult examples to positive ones - _gt_label = torch.abs(gt_label) - # compute loss - loss = self.compute_loss(cls_score, _gt_label, avg_factor=num_samples) - losses['loss'] = loss - return losses - - def forward_train(self, cls_score, gt_label): - gt_label = gt_label.type_as(cls_score) - losses = self.loss(cls_score, gt_label) - return losses - - def simple_test(self, cls_score): - if isinstance(cls_score, list): - cls_score = sum(cls_score) / float(len(cls_score)) - pred = F.sigmoid(cls_score) if cls_score is not None else None - - on_trace = hasattr(torch.jit, 'is_tracing') and torch.jit.is_tracing() - if torch.onnx.is_in_onnx_export() or on_trace: - return pred - pred = list(pred.detach().cpu().numpy()) - return pred diff --git a/openmmlab_test/mmclassification-speed-benchmark/mmcls/models/heads/multi_label_linear_head.py b/openmmlab_test/mmclassification-speed-benchmark/mmcls/models/heads/multi_label_linear_head.py deleted file mode 100644 index 118fe747..00000000 --- a/openmmlab_test/mmclassification-speed-benchmark/mmcls/models/heads/multi_label_linear_head.py +++ /dev/null @@ -1,64 +0,0 @@ -import torch -import torch.nn as nn -import torch.nn.functional as F - -from ..builder import HEADS -from .multi_label_head import MultiLabelClsHead - - -@HEADS.register_module() -class MultiLabelLinearClsHead(MultiLabelClsHead): - """Linear classification head for multilabel task. - - Args: - num_classes (int): Number of categories. - in_channels (int): Number of channels in the input feature map. - loss (dict): Config of classification loss. - """ - - def __init__(self, - num_classes, - in_channels, - loss=dict( - type='CrossEntropyLoss', - use_sigmoid=True, - reduction='mean', - loss_weight=1.0), - init_cfg=dict( - type='Normal', - mean=0., - std=0.01, - bias=0., - override=dict(name='fc'))): - super(MultiLabelLinearClsHead, self).__init__( - loss=loss, init_cfg=init_cfg) - - if num_classes <= 0: - raise ValueError( - f'num_classes={num_classes} must be a positive integer') - - self.in_channels = in_channels - self.num_classes = num_classes - self._init_layers() - - def _init_layers(self): - self.fc = nn.Linear(self.in_channels, self.num_classes) - - def forward_train(self, x, gt_label): - gt_label = gt_label.type_as(x) - cls_score = self.fc(x) - losses = self.loss(cls_score, gt_label) - return losses - - def simple_test(self, img): - """Test without augmentation.""" - cls_score = self.fc(img) - if isinstance(cls_score, list): - cls_score = sum(cls_score) / float(len(cls_score)) - pred = F.sigmoid(cls_score) if cls_score is not None else None - - on_trace = hasattr(torch.jit, 'is_tracing') and torch.jit.is_tracing() - if torch.onnx.is_in_onnx_export() or on_trace: - return pred - pred = list(pred.detach().cpu().numpy()) - return pred diff --git a/openmmlab_test/mmclassification-speed-benchmark/mmcls/models/heads/vision_transformer_head.py b/openmmlab_test/mmclassification-speed-benchmark/mmcls/models/heads/vision_transformer_head.py deleted file mode 100644 index 606217d4..00000000 --- a/openmmlab_test/mmclassification-speed-benchmark/mmcls/models/heads/vision_transformer_head.py +++ /dev/null @@ -1,81 +0,0 @@ -from collections import OrderedDict - -import torch -import torch.nn as nn -import torch.nn.functional as F -from mmcv.cnn import build_activation_layer, constant_init, kaiming_init - -from ..builder import HEADS -from .cls_head import ClsHead - - -@HEADS.register_module() -class VisionTransformerClsHead(ClsHead): - """Vision Transformer classifier head. - - Args: - num_classes (int): Number of categories excluding the background - category. - in_channels (int): Number of channels in the input feature map. - hidden_dim (int): Number of the dimensions for hidden layer. Only - available during pre-training. Default None. - act_cfg (dict): The activation config. Only available during - pre-training. Defalut Tanh. - """ - - def __init__(self, - num_classes, - in_channels, - hidden_dim=None, - act_cfg=dict(type='Tanh'), - *args, - **kwargs): - super(VisionTransformerClsHead, self).__init__(*args, **kwargs) - self.in_channels = in_channels - self.num_classes = num_classes - self.hidden_dim = hidden_dim - self.act_cfg = act_cfg - - if self.num_classes <= 0: - raise ValueError( - f'num_classes={num_classes} must be a positive integer') - - self._init_layers() - - def _init_layers(self): - if self.hidden_dim is None: - layers = [('head', nn.Linear(self.in_channels, self.num_classes))] - else: - layers = [ - ('pre_logits', nn.Linear(self.in_channels, self.hidden_dim)), - ('act', build_activation_layer(self.act_cfg)), - ('head', nn.Linear(self.hidden_dim, self.num_classes)), - ] - self.layers = nn.Sequential(OrderedDict(layers)) - - def init_weights(self): - super(VisionTransformerClsHead, self).init_weights() - # Modified from ClassyVision - if hasattr(self.layers, 'pre_logits'): - # Lecun norm - kaiming_init( - self.layers.pre_logits, mode='fan_in', nonlinearity='linear') - constant_init(self.layers.head, 0) - - def simple_test(self, img): - """Test without augmentation.""" - cls_score = self.layers(img) - if isinstance(cls_score, list): - cls_score = sum(cls_score) / float(len(cls_score)) - pred = F.softmax(cls_score, dim=1) if cls_score is not None else None - - on_trace = hasattr(torch.jit, 'is_tracing') and torch.jit.is_tracing() - if torch.onnx.is_in_onnx_export() or on_trace: - return pred - pred = list(pred.detach().cpu().numpy()) - return pred - - def forward_train(self, x, gt_label): - cls_score = self.layers(x) - losses = self.loss(cls_score, gt_label) - return losses diff --git a/openmmlab_test/mmclassification-speed-benchmark/mmcls/models/losses/__init__.py b/openmmlab_test/mmclassification-speed-benchmark/mmcls/models/losses/__init__.py deleted file mode 100644 index bf47e07f..00000000 --- a/openmmlab_test/mmclassification-speed-benchmark/mmcls/models/losses/__init__.py +++ /dev/null @@ -1,15 +0,0 @@ -from .accuracy import Accuracy, accuracy -from .asymmetric_loss import AsymmetricLoss, asymmetric_loss -from .cross_entropy_loss import (CrossEntropyLoss, binary_cross_entropy, - cross_entropy) -from .focal_loss import FocalLoss, sigmoid_focal_loss -from .label_smooth_loss import LabelSmoothLoss -from .utils import (convert_to_one_hot, reduce_loss, weight_reduce_loss, - weighted_loss) - -__all__ = [ - 'accuracy', 'Accuracy', 'asymmetric_loss', 'AsymmetricLoss', - 'cross_entropy', 'binary_cross_entropy', 'CrossEntropyLoss', 'reduce_loss', - 'weight_reduce_loss', 'LabelSmoothLoss', 'weighted_loss', 'FocalLoss', - 'sigmoid_focal_loss', 'convert_to_one_hot' -] diff --git a/openmmlab_test/mmclassification-speed-benchmark/mmcls/models/losses/__pycache__/__init__.cpython-36.pyc b/openmmlab_test/mmclassification-speed-benchmark/mmcls/models/losses/__pycache__/__init__.cpython-36.pyc deleted file mode 100644 index 89afe2c623b7e19433fb4c3674d3cfe87221a04e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 767 zcmZva&5qMB5Xa;6D@~h^W((pKdRTJciVzEe(~8TAi!WAcd)o+4T-h$D@38NIcoiPO zS5CYFCp<1Fr%}mja3G7I)|L*(VwUVEa@`ZQ&m7oOQ>iCHLYPqS3#eN zOw2_t7Gfz1QHn~`VkH`JCDyx=HsZ-$vU&QGgqAj`&u%zBnvS1**8Q=9THe?bfOMwk zx7u1?b$@-Pg0LC+`mG7ZyTKWKIK`m#wjVlkVjMS^Jn#78A2;Nlzt_A|@kC?$9q3-L zdz8+ZiLY+EtyFiQwcBIZX6zfThtJYD<}}lTWP9!W!boxCGM@6y7uoOjj$LZSS(74$ zm{Azmgd0lC1TjWrh#6vvC=hsQW`U>>b3~3<27K6D{V!2y@N(#L!I&~8$1*;D9P%+K zT`3%v**NX_9M<-eqwAH8H80x2j{JxbSk_WTeY#mlgFRPq%*7uy8X Qq$caMCQI^coDp2V0Ta>FM*si- diff --git a/openmmlab_test/mmclassification-speed-benchmark/mmcls/models/losses/__pycache__/accuracy.cpython-36.pyc b/openmmlab_test/mmclassification-speed-benchmark/mmcls/models/losses/__pycache__/accuracy.cpython-36.pyc deleted file mode 100644 index 9628c53da90a935c312179a46d09a391b6830589..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4296 zcmcInOOGT+5w5JNe%18!jF)BEwHK3qfTyML3|=GA?KeL@`qK-R^-pW*=c0WNPqqglEWu*yfSI>_V4Jrya1UIuCLG~DWd}9U7Bx{v zt1i|>Lp0H9ylaV;@Sa-2lkT87bq-pBePDGv&%x8$d(J>ZI*5K7cp7*f;K>B0az|Jv zP1P1`;%M|Vo7(Et-07h&?1`JaZbog4-VqM^*EK}ZZthIk?=4aL1Kv;Au{EjbT5eC- zq@G)Yx~Si>CJnS2B;+S_CF_};*VoLuXWydBVuYyho;fr!Y3k;nm0MAEHu1~Zz=OIPQ~Si8tUv?C;nL^Fit-SG)HD%0t{I6eHx%*qD-p^~8Z_|y<_&>^i*~Xe0 zOtHRq41Js5{=!;&b@FU54aT;izDz3+)SZ?#9vF69A<^|hPWISbqbXnmB zXHix$`qjPX|G`hyXr4%Sqwu0EN-`ZJp)6{KX;CvQi`M@6Nd82rR28m9vv7vNSy9XS z0osi~9cQW1g`JEF*R&c+mUCX59!Fsi``B4mQjEd69*jmZ5rvbDhd9+8VZ5koaFH79 z)6oeiZdiEW;zOk47zd(VxH$EsaFX$`@MxDG2S+ll+F6(?S+J9$g@%%$_D>3u!w0Xz z0Xgve`OIgQdJUKU_b+z)=}_*b5NJ3AH($$4?+%Ay9AsJ4gXlU+lQ*-Gl;X`JnS}je zpiaz!YiC1&HoIoK z81vY-*&W+soM!FYY?Hl+6`OX4sc&LeI78niI>gMN@5cWTeZZkXUtTZ0_}BKNIceoB zga^yKTLv8su{N~_z`~Sahj;eGpy{GQ%Xw5Ufb`Igb~&b~|#D0$A4(N3UL zaNfPk_rcAClqH@!^W7!mFWX;zQ zWy;@Lx-=!aEt872c{(C32Qg$d39uZWU&E|=w7hKPy!YmI%J^xd``qMqoa@HTxJq^54Wgn{=U>>l`NUP%+5KFqfCET3JIA_ zZ)xb!+yGHBLjIoVokx&nMSwCP!ZunSOI0eqH%>|yG+I|i1Rn5eX(<8REilKfa1)Yp zG5Iqb__Qyf2t|iO@rQ@z@D(mQGdD3(u5enBcvgy#UcW#%x;%%YLg{4r6?kpHe z9?Rrd_g93&DTImAOHqzJFu-1be_olT@G>A^1@W)~AfE^W`bDXBQ8UqFk%78xlUE7{ zb~bsX=-fw{p$GzHAyzYdi+UMK6op>Z0Vx_4cT+kn(owhmc^RcxFO^W$S!Hgylpvb3 z==UzzXOxGm8`sJz#&+$Ss8;ZxmbvYy?_w^b1+(9*a>>4h5otb7@L|&U*y=H4d*^BE z0AB;5_S8CXKek-!fU4bQ(Y#+3Q>JtcseYv&z3FlAWRx(qg~9>F1EW}P`N$vGZeRT6 z=cyRSq2I>pCc)$0MnVrte2dqeO_uK&6_U*-UDPVC9@^-T?x0ua4D{qX|qMFUcj_Ht6OaaZqRb8eAp@-tR_iK!oA zS+`DxPY`5$zwmq?nt{)v-S+**;~*|)N=v^@XRKF_5Xv~7IRi=1W$FibDdQO5Lu-V` zI7ZX%c#1}F7ZPgk%G)by<_pC{4n?0RMYD`oNrLaWq>LdZwh*+7dWkHulrwnMPvd1 diff --git a/openmmlab_test/mmclassification-speed-benchmark/mmcls/models/losses/__pycache__/asymmetric_loss.cpython-36.pyc b/openmmlab_test/mmclassification-speed-benchmark/mmcls/models/losses/__pycache__/asymmetric_loss.cpython-36.pyc deleted file mode 100644 index 940455f1a94ec77ee98326ebf597e8e70d090706..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3497 zcmdT`NpBp-6|U-aR*F#wi`fgzLXJVrkdAXOVaSplAqe1%4AX#tfq-^#s%EB#y-ccV zL{n&9LIJ+mxhH=h@ZZQa|Dcb~!O$&-oPq$!d)2dWXeFmyQjL1uUCXPteDBr!dAr^C z)93G={d0?uzmgj*fbWOU^@l(N5i}u#>P@H4z!8pc6F2n+9wovPe&VOWAb{^J(GblS zbP!5!TDvB{BBCYQFNkPMXIj5@uj!y6=qc&kc?o<;|D^-8L(Aa(C#R>6PhZmN_wI#^ z#}gANDds~NCArpL<9b5=_RivC`{CDr`~$Wx-zmLR@@!bER**KledzB&*MA36kSQtX zl$<+y$5279>F=m;u4*vuT$8Ih%((@*rdPD^)ziWk?zyL)3a_Z|lES}7rXH&J1%(m1 zOLj;BJ9fxDa@ELot5x5efsw{8nfir`YYX5|?Y)QRG)*uKi^kL|Y9jaoRD8g$GxU|5)b?$nE zaDADk(x`aI(1_hegF*Wskz7lrNv=5^b&qZ{%H(*>s4vI-KQj7Q zvbmn~B)Mc-nhl{VnUK{3wvuo2=r?a3Jxt=+;?xaWeW3C)eikROxnwE$FU~fZfc(E$ zD_~>W!r(xgB{)FqNiINA01w!%iht|d3cl#cWqV@1q#0L|?PXx)y+gK#nP87`z{j4R zr+Z!Y>rutUo)l}gk1O}tq4nm585qoJu=@fkTvr%IUKVAW%IxDw`)hUhvvD-yLjXKG zh%>Wcm`Bf~;$v`dHE$-|;9*NGc{RNu42Gmtc>@6zmh8e0rJ1YjM!?++wG;NfjdnEE z^FteosKz3w^dz4rf}KegXV$iBt-Irs&yT+P{pI5a3RAIy6oTp5P5Gzx6=(gI|AN+O zmA;Lra_f=SQlWJpE0wD<)bTjYV^N0Yawa3LOMjR^5S8vMzbJhxW$7mQxO7FFmcEUG zGE~yCQ<%6r?b1V;%b*gt462|j>nn6FKLNC*hj=XOD?F8rwJ%Cn&h(&#+@hsm&ddzH zwN8xDg1Lw0{*tI4g9QJ0+MDF5?Bz3=r73tnGE$pfnu01?$D?=%ftF|Y^-M}}|4e4X z2>|}wF3`O+7c$X3jd=QGT8>Y|A$#^gYS(Dx5#Aw2U!iG(BvCxaHfYm z;cA^-5IGB=uFd_iEt2r^v%uQO6vxYiy(pIm`DWdu>VTG2T{Xm#4;#MSMb}60VThqn zA30bpQK+N}61h-qkjR7ThD3hh0SyWtXebDPiuOA-$PaTUC=|lFtVL0r#U_f>_uyB3 zAIT4p{19iGH?->nrKe>wdeuU8A67#esz;HHLtux&s(yk5k^cm`ZUG^|7DP|=JioUI z@a|HU{z_wvzb5qepzC*mKn)n22fAel)Ly>YDf|p{oYJcRYeoY#9q13bLj{L59+?JE zdtr@OgDNg8La;&jeEW73^-B*gA8Yo~h3l!~zf#Q~fdn0|uh8~(u{y?)P(hJinaoE$i6Fqxd+qL7%^N%f^e1px{32QU^#nNDy-Bbs!zL-|u%qghmFJZWNV`D1yv6 zPw=}HMZbk&Wib;*k;sSOZgjGG14!9kU|=YdWQhY5yhBwF7gJe$V}*iE@O=g$q4zxK|u&M5CF tIgT|HZVOGy;5Swyd(sW-u1#EfyVCgqUbp%+AXV;f`Ab;|Z5(gYe*+}4u?GME diff --git a/openmmlab_test/mmclassification-speed-benchmark/mmcls/models/losses/__pycache__/cross_entropy_loss.cpython-36.pyc b/openmmlab_test/mmclassification-speed-benchmark/mmcls/models/losses/__pycache__/cross_entropy_loss.cpython-36.pyc deleted file mode 100644 index a286c1b8e7d5be1f1097784beb6564745e2d0976..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4627 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 ZK}S4@_%?PH64za5H=ymfS^dy$`~xx?#4rE= diff --git a/openmmlab_test/mmclassification-speed-benchmark/mmcls/models/losses/accuracy.py b/openmmlab_test/mmclassification-speed-benchmark/mmcls/models/losses/accuracy.py deleted file mode 100644 index 4ce2b07c..00000000 --- a/openmmlab_test/mmclassification-speed-benchmark/mmcls/models/losses/accuracy.py +++ /dev/null @@ -1,134 +0,0 @@ -import numpy as np -import torch -import torch.nn as nn - - -def accuracy_numpy(pred, target, topk=1, thrs=None): - if thrs is None: - thrs = 0.0 - if isinstance(thrs, float): - thrs = (thrs, ) - res_single = True - elif isinstance(thrs, tuple): - res_single = False - else: - raise TypeError( - f'thrs should be float or tuple, but got {type(thrs)}.') - - res = [] - maxk = max(topk) - num = pred.shape[0] - pred_label = pred.argsort(axis=1)[:, -maxk:][:, ::-1] - pred_score = np.sort(pred, axis=1)[:, -maxk:][:, ::-1] - - for k in topk: - correct_k = pred_label[:, :k] == target.reshape(-1, 1) - res_thr = [] - for thr in thrs: - # Only prediction values larger than thr are counted as correct - _correct_k = correct_k & (pred_score[:, :k] > thr) - _correct_k = np.logical_or.reduce(_correct_k, axis=1) - res_thr.append(_correct_k.sum() * 100. / num) - if res_single: - res.append(res_thr[0]) - else: - res.append(res_thr) - return res - - -def accuracy_torch(pred, target, topk=1, thrs=None): - if thrs is None: - thrs = 0.0 - if isinstance(thrs, float): - thrs = (thrs, ) - res_single = True - elif isinstance(thrs, tuple): - res_single = False - else: - raise TypeError( - f'thrs should be float or tuple, but got {type(thrs)}.') - - res = [] - maxk = max(topk) - num = pred.size(0) - pred_score, pred_label = pred.topk(maxk, dim=1) - pred_label = pred_label.t() - correct = pred_label.eq(target.view(1, -1).expand_as(pred_label)) - for k in topk: - res_thr = [] - for thr in thrs: - # Only prediction values larger than thr are counted as correct - _correct = correct & (pred_score.t() > thr) - correct_k = _correct[:k].reshape(-1).float().sum(0, keepdim=True) - res_thr.append(correct_k.mul_(100. / num)) - if res_single: - res.append(res_thr[0]) - else: - res.append(res_thr) - return res - - -def accuracy(pred, target, topk=1, thrs=None): - """Calculate accuracy according to the prediction and target. - - Args: - pred (torch.Tensor | np.array): The model prediction. - target (torch.Tensor | np.array): The target of each prediction - topk (int | tuple[int]): If the predictions in ``topk`` - matches the target, the predictions will be regarded as - correct ones. Defaults to 1. - thrs (float, optional): thrs (float | tuple[float], optional): - Predictions with scores under the thresholds are considered - negative. Default to None. - - Returns: - float | list[float] | list[list[float]]: If the input ``topk`` is a - single integer, the function will return a single float or a list - depending on whether ``thrs`` is a single float. If the input - ``topk`` is a tuple, the function will return a list of results - of accuracies of each ``topk`` number. That is to say, as long as - ``topk`` is a tuple, the returned list shall be of the same length - as topk. - """ - assert isinstance(topk, (int, tuple)) - if isinstance(topk, int): - topk = (topk, ) - return_single = True - else: - return_single = False - - if isinstance(pred, torch.Tensor) and isinstance(target, torch.Tensor): - res = accuracy_torch(pred, target, topk, thrs) - elif isinstance(pred, np.ndarray) and isinstance(target, np.ndarray): - res = accuracy_numpy(pred, target, topk, thrs) - else: - raise TypeError( - f'pred and target should both be torch.Tensor or np.ndarray, ' - f'but got {type(pred)} and {type(target)}.') - - return res[0] if return_single else res - - -class Accuracy(nn.Module): - - def __init__(self, topk=(1, )): - """Module to calculate the accuracy. - - Args: - topk (tuple): The criterion used to calculate the - accuracy. Defaults to (1,). - """ - super().__init__() - self.topk = topk - - def forward(self, pred, target): - """Forward function to calculate accuracy. - - Args: - pred (torch.Tensor): Prediction of models. - target (torch.Tensor): Target for each prediction. - - Returns: - list[float]: The accuracies under different topk criterions. - """ - return accuracy(pred, target, self.topk) diff --git a/openmmlab_test/mmclassification-speed-benchmark/mmcls/models/losses/asymmetric_loss.py b/openmmlab_test/mmclassification-speed-benchmark/mmcls/models/losses/asymmetric_loss.py deleted file mode 100644 index 5b15f167..00000000 --- a/openmmlab_test/mmclassification-speed-benchmark/mmcls/models/losses/asymmetric_loss.py +++ /dev/null @@ -1,111 +0,0 @@ -import torch -import torch.nn as nn - -from ..builder import LOSSES -from .utils import weight_reduce_loss - - -def asymmetric_loss(pred, - target, - weight=None, - gamma_pos=1.0, - gamma_neg=4.0, - clip=0.05, - reduction='mean', - avg_factor=None): - """asymmetric loss. - - Please refer to the `paper `_ for - details. - - Args: - pred (torch.Tensor): The prediction with shape (N, *). - target (torch.Tensor): The ground truth label of the prediction with - shape (N, *). - weight (torch.Tensor, optional): Sample-wise loss weight with shape - (N, ). Dafaults to None. - gamma_pos (float): positive focusing parameter. Defaults to 0.0. - gamma_neg (float): Negative focusing parameter. We usually set - gamma_neg > gamma_pos. Defaults to 4.0. - clip (float, optional): Probability margin. Defaults to 0.05. - reduction (str): The method used to reduce the loss. - Options are "none", "mean" and "sum". If reduction is 'none' , loss - is same shape as pred and label. Defaults to 'mean'. - avg_factor (int, optional): Average factor that is used to average - the loss. Defaults to None. - - Returns: - torch.Tensor: Loss. - """ - assert pred.shape == \ - target.shape, 'pred and target should be in the same shape.' - - eps = 1e-8 - pred_sigmoid = pred.sigmoid() - target = target.type_as(pred) - - if clip and clip > 0: - pt = (1 - pred_sigmoid + - clip).clamp(max=1) * (1 - target) + pred_sigmoid * target - else: - pt = (1 - pred_sigmoid) * (1 - target) + pred_sigmoid * target - asymmetric_weight = (1 - pt).pow(gamma_pos * target + gamma_neg * - (1 - target)) - loss = -torch.log(pt.clamp(min=eps)) * asymmetric_weight - if weight is not None: - assert weight.dim() == 1 - weight = weight.float() - if pred.dim() > 1: - weight = weight.reshape(-1, 1) - loss = weight_reduce_loss(loss, weight, reduction, avg_factor) - return loss - - -@LOSSES.register_module() -class AsymmetricLoss(nn.Module): - """asymmetric loss. - - Args: - gamma_pos (float): positive focusing parameter. - Defaults to 0.0. - gamma_neg (float): Negative focusing parameter. We - usually set gamma_neg > gamma_pos. Defaults to 4.0. - clip (float, optional): Probability margin. Defaults to 0.05. - reduction (str): The method used to reduce the loss into - a scalar. - loss_weight (float): Weight of loss. Defaults to 1.0. - """ - - def __init__(self, - gamma_pos=0.0, - gamma_neg=4.0, - clip=0.05, - reduction='mean', - loss_weight=1.0): - super(AsymmetricLoss, self).__init__() - self.gamma_pos = gamma_pos - self.gamma_neg = gamma_neg - self.clip = clip - self.reduction = reduction - self.loss_weight = loss_weight - - def forward(self, - pred, - target, - weight=None, - avg_factor=None, - reduction_override=None): - """asymmetric loss.""" - assert reduction_override in (None, 'none', 'mean', 'sum') - reduction = ( - reduction_override if reduction_override else self.reduction) - loss_cls = self.loss_weight * asymmetric_loss( - pred, - target, - weight, - gamma_pos=self.gamma_pos, - gamma_neg=self.gamma_neg, - clip=self.clip, - reduction=reduction, - avg_factor=avg_factor) - return loss_cls diff --git a/openmmlab_test/mmclassification-speed-benchmark/mmcls/models/losses/cross_entropy_loss.py b/openmmlab_test/mmclassification-speed-benchmark/mmcls/models/losses/cross_entropy_loss.py deleted file mode 100644 index 05859521..00000000 --- a/openmmlab_test/mmclassification-speed-benchmark/mmcls/models/losses/cross_entropy_loss.py +++ /dev/null @@ -1,157 +0,0 @@ -import torch.nn as nn -import torch.nn.functional as F - -from ..builder import LOSSES -from .utils import weight_reduce_loss - - -def cross_entropy(pred, label, weight=None, reduction='mean', avg_factor=None): - """Calculate the CrossEntropy loss. - - Args: - pred (torch.Tensor): The prediction with shape (N, C), C is the number - of classes. - label (torch.Tensor): The gt label of the prediction. - weight (torch.Tensor, optional): Sample-wise loss weight. - reduction (str): The method used to reduce the loss. - avg_factor (int, optional): Average factor that is used to average - the loss. Defaults to None. - - Returns: - torch.Tensor: The calculated loss - """ - # element-wise losses - loss = F.cross_entropy(pred, label, reduction='none') - - # apply weights and do the reduction - if weight is not None: - weight = weight.float() - loss = weight_reduce_loss( - loss, weight=weight, reduction=reduction, avg_factor=avg_factor) - - return loss - - -def soft_cross_entropy(pred, - label, - weight=None, - reduction='mean', - avg_factor=None): - """Calculate the Soft CrossEntropy loss. The label can be float. - - Args: - pred (torch.Tensor): The prediction with shape (N, C), C is the number - of classes. - label (torch.Tensor): The gt label of the prediction with shape (N, C). - When using "mixup", the label can be float. - weight (torch.Tensor, optional): Sample-wise loss weight. - reduction (str): The method used to reduce the loss. - avg_factor (int, optional): Average factor that is used to average - the loss. Defaults to None. - - Returns: - torch.Tensor: The calculated loss - """ - # element-wise losses - loss = -label * F.log_softmax(pred, dim=-1) - loss = loss.sum(dim=-1) - - # apply weights and do the reduction - if weight is not None: - weight = weight.float() - loss = weight_reduce_loss( - loss, weight=weight, reduction=reduction, avg_factor=avg_factor) - - return loss - - -def binary_cross_entropy(pred, - label, - weight=None, - reduction='mean', - avg_factor=None): - """Calculate the binary CrossEntropy loss with logits. - - Args: - pred (torch.Tensor): The prediction with shape (N, *). - label (torch.Tensor): The gt label with shape (N, *). - weight (torch.Tensor, optional): Element-wise weight of loss with shape - (N, ). Defaults to None. - reduction (str): The method used to reduce the loss. - Options are "none", "mean" and "sum". If reduction is 'none' , loss - is same shape as pred and label. Defaults to 'mean'. - avg_factor (int, optional): Average factor that is used to average - the loss. Defaults to None. - - Returns: - torch.Tensor: The calculated loss - """ - assert pred.dim() == label.dim() - - loss = F.binary_cross_entropy_with_logits(pred, label, reduction='none') - - # apply weights and do the reduction - if weight is not None: - assert weight.dim() == 1 - weight = weight.float() - if pred.dim() > 1: - weight = weight.reshape(-1, 1) - loss = weight_reduce_loss( - loss, weight=weight, reduction=reduction, avg_factor=avg_factor) - return loss - - -@LOSSES.register_module() -class CrossEntropyLoss(nn.Module): - """Cross entropy loss. - - Args: - use_sigmoid (bool): Whether the prediction uses sigmoid - of softmax. Defaults to False. - use_soft (bool): Whether to use the soft version of CrossEntropyLoss. - Defaults to False. - reduction (str): The method used to reduce the loss. - Options are "none", "mean" and "sum". Defaults to 'mean'. - loss_weight (float): Weight of the loss. Defaults to 1.0. - """ - - def __init__(self, - use_sigmoid=False, - use_soft=False, - reduction='mean', - loss_weight=1.0): - super(CrossEntropyLoss, self).__init__() - self.use_sigmoid = use_sigmoid - self.use_soft = use_soft - assert not ( - self.use_soft and self.use_sigmoid - ), 'use_sigmoid and use_soft could not be set simultaneously' - - self.reduction = reduction - self.loss_weight = loss_weight - - if self.use_sigmoid: - self.cls_criterion = binary_cross_entropy - elif self.use_soft: - self.cls_criterion = soft_cross_entropy - else: - self.cls_criterion = cross_entropy - - def forward(self, - cls_score, - label, - weight=None, - avg_factor=None, - reduction_override=None, - **kwargs): - assert reduction_override in (None, 'none', 'mean', 'sum') - reduction = ( - reduction_override if reduction_override else self.reduction) - loss_cls = self.loss_weight * self.cls_criterion( - cls_score, - label, - weight, - reduction=reduction, - avg_factor=avg_factor, - **kwargs) - return loss_cls diff --git a/openmmlab_test/mmclassification-speed-benchmark/mmcls/models/losses/utils.py b/openmmlab_test/mmclassification-speed-benchmark/mmcls/models/losses/utils.py deleted file mode 100644 index e7303443..00000000 --- a/openmmlab_test/mmclassification-speed-benchmark/mmcls/models/losses/utils.py +++ /dev/null @@ -1,120 +0,0 @@ -import functools - -import torch -import torch.nn.functional as F - - -def reduce_loss(loss, reduction): - """Reduce loss as specified. - - Args: - loss (Tensor): Elementwise loss tensor. - reduction (str): Options are "none", "mean" and "sum". - - Return: - Tensor: Reduced loss tensor. - """ - reduction_enum = F._Reduction.get_enum(reduction) - # none: 0, elementwise_mean:1, sum: 2 - if reduction_enum == 0: - return loss - elif reduction_enum == 1: - return loss.mean() - elif reduction_enum == 2: - return loss.sum() - - -def weight_reduce_loss(loss, weight=None, reduction='mean', avg_factor=None): - """Apply element-wise weight and reduce loss. - - Args: - loss (Tensor): Element-wise loss. - weight (Tensor): Element-wise weights. - reduction (str): Same as built-in losses of PyTorch. - avg_factor (float): Avarage factor when computing the mean of losses. - - Returns: - Tensor: Processed loss values. - """ - # if weight is specified, apply element-wise weight - if weight is not None: - loss = loss * weight - - # if avg_factor is not specified, just reduce the loss - if avg_factor is None: - loss = reduce_loss(loss, reduction) - else: - # if reduction is mean, then average the loss by avg_factor - if reduction == 'mean': - loss = loss.sum() / avg_factor - # if reduction is 'none', then do nothing, otherwise raise an error - elif reduction != 'none': - raise ValueError('avg_factor can not be used with reduction="sum"') - return loss - - -def weighted_loss(loss_func): - """Create a weighted version of a given loss function. - - To use this decorator, the loss function must have the signature like - `loss_func(pred, target, **kwargs)`. The function only needs to compute - element-wise loss without any reduction. This decorator will add weight - and reduction arguments to the function. The decorated function will have - the signature like `loss_func(pred, target, weight=None, reduction='mean', - avg_factor=None, **kwargs)`. - - :Example: - - >>> import torch - >>> @weighted_loss - >>> def l1_loss(pred, target): - >>> return (pred - target).abs() - - >>> pred = torch.Tensor([0, 2, 3]) - >>> target = torch.Tensor([1, 1, 1]) - >>> weight = torch.Tensor([1, 0, 1]) - - >>> l1_loss(pred, target) - tensor(1.3333) - >>> l1_loss(pred, target, weight) - tensor(1.) - >>> l1_loss(pred, target, reduction='none') - tensor([1., 1., 2.]) - >>> l1_loss(pred, target, weight, avg_factor=2) - tensor(1.5000) - """ - - @functools.wraps(loss_func) - def wrapper(pred, - target, - weight=None, - reduction='mean', - avg_factor=None, - **kwargs): - # get element-wise loss - loss = loss_func(pred, target, **kwargs) - loss = weight_reduce_loss(loss, weight, reduction, avg_factor) - return loss - - return wrapper - - -def convert_to_one_hot(targets: torch.Tensor, classes) -> torch.Tensor: - """This function converts target class indices to one-hot vectors, given - the number of classes. - - Args: - targets (Tensor): The ground truth label of the prediction - with shape (N, 1) - classes (int): the number of classes. - - Returns: - Tensor: Processed loss values. - """ - assert (torch.max(targets).item() < - classes), 'Class Index must be less than number of classes' - one_hot_targets = torch.zeros((targets.shape[0], classes), - dtype=torch.long, - device=targets.device) - one_hot_targets.scatter_(1, targets.long(), 1) - return one_hot_targets diff --git a/openmmlab_test/mmclassification-speed-benchmark/mmcls/models/necks/__init__.py b/openmmlab_test/mmclassification-speed-benchmark/mmcls/models/necks/__init__.py deleted file mode 100644 index 196c1917..00000000 --- a/openmmlab_test/mmclassification-speed-benchmark/mmcls/models/necks/__init__.py +++ /dev/null @@ -1,3 +0,0 @@ -from .gap import GlobalAveragePooling - -__all__ = ['GlobalAveragePooling'] diff --git a/openmmlab_test/mmclassification-speed-benchmark/mmcls/models/necks/__pycache__/__init__.cpython-36.pyc b/openmmlab_test/mmclassification-speed-benchmark/mmcls/models/necks/__pycache__/__init__.cpython-36.pyc deleted file mode 100644 index a3ad0b41cd935ee7a4d4bb827e726c2a720fece6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 237 zcmX|*v1$TA5QcZ}42ozcd50@>3tJJj5iCL=sceS5+wokS-92tj!FR}eguK$VsqzY` z+`Gbo|7V78`1zO9>G=C=mmh=>zfsRg;v(xpZe_-W;L1N{xxUd4S-ZlV>>fVl45nTz_T}AGyOp*r+ CcR=_6 diff --git a/openmmlab_test/mmclassification-speed-benchmark/mmcls/models/necks/__pycache__/gap.cpython-36.pyc b/openmmlab_test/mmclassification-speed-benchmark/mmcls/models/necks/__pycache__/gap.cpython-36.pyc deleted file mode 100644 index 15f7d8fafcac327dc6fada2ce01b8594dfe3c607..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2185 zcmaJ>&2Jnv6t_LIyR+LQrBF(#_%Ic!Sdnhp^cF=G>4$ni1f)~~tw7V+v3GYiGoGpK zP1^Z-+OmfS37_Ha&PcQgOI<; zYXi>Y3z%jb7C{6}Nx$Cdg!P$V!b`o(@B5TUf6^$)BO-j!I3}VY*`!%|CGEEa-6P%R z31}d@Ck)muts1)z?|-=$BX2qU1z|RUkfcuqfgfn!6YUpdNQEc-<8~jki{>%uH$+PW zus2^2pY&VsL#Mj@D9r~^x^p0PG?L%sd77wEbVv!QFZkkyFRr+f@qVw<;V^b{E4dv< zmLEz!HIhF$NaW!YZgZ|>mLEtipIII8cpNDuQyvYi)V!$w=<#nQ7dcnCb;{g(^K>fZ zOg`a};R&csQh1e`Q+;+U`5?0Kn2RKn$|SkshhwS03a|tixpvCN@IE>tnGd;1W|H4t zheru0i6g~R840v_s^qgm##Rb0wa&F!IJu)oX3Hr>m*HFfS)y!ri$7ReU^pn25$H2f zR-|(2@4C}JkUUo~hx|wQcXOTJIqIFNLzNHYFq)=zi*Gu%#%#y9;K02J(}QWouvlX0 zoRnh20YX0deM>;PM3+^*k?FAVAkk2A?J$hf$e1wvi@f}LW1MGlBQK=N zvNRfmRvNpJWlka)CUJz8+%$!h;^siAc$`Ig-wBwFEEh608(2MN1MKM)&vgLaT!v}Z zU?Fske#8P;VY1nW=LNgB^gPDY;J_W{eV7KL<8nuL_1i#qslEuCqwD1zI94kzdWSL@ zjjj0@IL4uk&OSN!&)20-afyJy)HqxgKv=+{r6to_mb%shC_4`3^Z_XWc}L7*Gh)ZY zvN@ZB+>)<0-Aixc!&~t)nE--Oeh#g0P645Q2^cTg5mSK;MAPA#0X~D>(;%Sv=sS96 zuD~)PbMnL55e0Q%R!M(lPyM|*4iJ+Skbp$9-mQv0dm~1u;ALk!O^l86thoCrDy&Oz zcI({W40C-LY0=wG^B5Y{T_Bc^Pt9A#Y7ezthsBw9?R$2Feo`=zO`vgupR8oHsZav0 z_%OsL|G+?CVsiy}LI;EEcj2b;@~PG6@PAUQ-vizamms4i+b0-Q*_Fs^ET<&1P1 ZUVT|pE;zw-Rs%Km9}@b{rR6QDB1FeAnpi=JanInR?X za6ttxXvvqf;wvh7ndS?usOEL@B{tOXCix04sO4?&QdO!}jk-{+TC0uP-qn1qcDLF7 z@^?s+?b%#?nC=LScfq&EUK#@^TtA&o2>W8L{UBcZX+%hR^P+EF)FcfBcAw1ySP$wO zIISj$VQxe69)!{l+UY~6$>#F*(--*&)-FN>8~=i>BASRYqKH^VtRnJ&ulo(($>*%s z=eJ8MsmxsVfFoG<|F^N;e5ud5ggpm)J~5s>R}KWGJTbsr3Lz1N_?g*l7$^Ms-t_}P zH;iD2P#%N_=R2Y!O6T-RAEnoWxpE_bx;lV4_9X3n+Tc1G6rk%SuLFh9MtdQy$H%#P X83NIM7rpfc?2vbw!2DlrG&JnicAj;wvrd z!iWm_90nX!s^o<#YDZMW*IYxdair&P=pa_{ite3o2}(~6QJo`yRU2yD*1;WW#Y^{u zG(Aq%Wx_R8S+7ZrqD))}#;JKgbH`%!gmmX=9|RL6O5F$WiJMx>HGeB}D{rbc_vUDv z88mQ91pg;$H~f-G9f@URc^*S^mW_8FV3t8{Tal z0dQ^8e6O|AU3ek*WfvKx)4Y3RbS$A#z`GIVZp6G+HB2@-@2VTDvg<}kY|?z@$R4lz z=>|C$^W1dNrC=uS#x=`xnt;boA%*G*=~`V%NyBEaGHlIGAZ!rbP@OGLgEz z*oTU9wx4jB=4GtU9RQ}KV!VJUb_CX5W7fxZP+fQ15B5S-ge@#&d&k@LhyK_bdpo|i gKib6CLwvZkv$j^A;6XQhg>rSlU)wmr#yJfB0X{1sKL7v# diff --git a/openmmlab_test/mmclassification-speed-benchmark/mmcls/models/utils/__pycache__/helpers.cpython-36.pyc b/openmmlab_test/mmclassification-speed-benchmark/mmcls/models/utils/__pycache__/helpers.cpython-36.pyc deleted file mode 100644 index a70bfe07364ea414d45e87a73b14c724c3cb5601..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 661 zcmYjNJ#X7E5asF1l47St17yzXAr{(n41%EO(#4B6Ee0iCV5QUtNE&DhcXEJs=>I7C zm$-J)U+B~$9mJ+^?;TEe$H#Xwo8`ZMeW)s6>@Pbx0p<4;`Xhm00wgPeIFLabmLV_^ zis*@z5k?~3Lm3k%#0l|)ctV^Krx=x)fEAl(BW+^KIoL$ufZWt{r$6ql@HzBrN`9~h z5Fmo5^gHa_Y`A=Bc0&=x1%9K2UFVY{g7u;vM_R_QBo_!*ZV3ywOdk z4ex5SXLT02!N0lT)9yjmO7 zrfAz*a;=+(rsi(lwH^?~b%kBMX}S9B8+6h30;MjtrXk#*98l@S@YTixR~l3Il7xW4 zIYjX7a@~0mi(A>(TeSTK#%jCgdmjqX*W zb9!_?=ed1#;>3cCP_AyXhTJfHFSYlE*KfTppT0Y$H^=n-F+IG&YdirjGrc84 Twi550D1A$#)0-NDisZFp%VBZO{K~b9GBa5eD-~~yXT~d zE-xff5u*GEUJ(C*U$U<}&B%h8>DXaieITgp(d+ zq-QV+8X2sF(wWIkl>3sx-^M?yGP7TOLHd-{SpB5hE3*b`o{*mPf|#UN0j*kU+P3_EgCzJGz+kyU{_D2DG(1y9m9aMk36ia`= z{n0pq>Ya!3$65N5+|&CaH+#g z30^ZRXC^bQ62PbP<(DX{p{4whHv1&AegU1`mfitf|21Cc7=dnH>1v0Z8epc-hl#D~ zh4!o(#cr$Wg?6W`X(LjVvBww$OWCvXQuZwGRVB~Pc2zV`20B-?5WoRS#0mgq?TTbF zmf}28E+BXdK-DB}tP*ww=z=AO{h zc2k*>hy8`Iy+*N*EllrOQnzFA4)A%!ba6#nscnSHhD5Ept{-|*y6*4fuW#1}P)_T~ zn8#5RdOL2)Wx5_kdPUF=d|m8ox^~ufcd25C7Y!-IF&R16+UYT7LW;cb-ESx@i z9Um-GEI(a>w*b*s63UDd`^fl_42ig&(IFMrQ)5`ljEo)|N2S=-7(Id#fz&Q_eN1S4 zkS%_gRPuO z=HfjBR}nY}-bZj5K-*CCxhg?LwW;_3spw{L9e`>rQWvq^yEvMW5M41cU@i$)Hsv{pAjtY{-x zMSx1q6xO;{a%tbegscG|M&m+*whU11?SE3OZDZNSaCAf2)?63z5U#U;H(d7_Tq5(C zitDn(cU|!=u+^z3)&Nt@ya0S2hA^ugmn-%mu0+LjbHH1##1yu#n${xsY-&R$uB_=b z?Yg>@Cc+LAn5jTZ_*t>^Ixb} Wh_HQUYVuvoN@)XVKy@^XhWR&nnN$b> diff --git a/openmmlab_test/mmclassification-speed-benchmark/mmcls/models/utils/__pycache__/make_divisible.cpython-36.pyc b/openmmlab_test/mmclassification-speed-benchmark/mmcls/models/utils/__pycache__/make_divisible.cpython-36.pyc deleted file mode 100644 index 4c2d7fb01ae401e2e02ff59cd3022ec0e26c437a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1049 zcmZ`&O=}b}7*1w(b-T6&p&%$oj$LSX1rOpPRjXI`pq_eJGLvjKY(CaZ(z-A`)uaDI z{4e?k<|-(Hzrd4kGP7R=0|}G&%{5tZuog>L z`U#&QhTfrGd-Uu3w=n)Z&s&fVqYd*G%vUgrQ&`G`;aSJ-miQ`huyeRXC1%M3bPrwQ z65og20lH4ET4k$DOLTx{$ezGAeu6>_cv7kpgx=5@Crn(3LS&MYiPyOkM)$j20^|Ku z6ss7q#%op(H{~RsQmwfp+N+FP!px;6&cu}F)bhfS3o1Q_2z4ZKd}RM{dPkKD#K zgfH!RF^p#eeGPFawCfE)3n#{kbD^oc!QWr~(V&ryf0iMTH}O&~Vzn$NyIIB>MhQJ$ zlOGW?52jGr$bhs^UN!p6Bw`uw<{oOTompdrLSFL;_0kQ=$Y_2<6sJ1)2-XA@+i?7Y zhXNZjSMCIqFoH5mK@B;aNJE##EFtPtqbT-^v!$e!Ndc#6Tto9eU)RDP^`F)yz2(kZ zz0oA-PTd@3n3xFQ+jgR%itMA`aOF@hsZvEhR%vK#yJ|XSdQ?;Y{ zWgY#BY!^`eo(-l(@qw9ht(2tM*uk|MD3wcE6rdyzHtFMH&N(~IxX!1F+F3kM3_vWG z#lSlOtAa-`j`ZOX^yiCee>;T3yW52Y-REs_Hxg MHZS=}gnSEj#nps4M6p2|Jgd zgB*m^_8ykS=?|rtWfE6=k(Tu;Mv2AKX(oCPCX$S(AYhS>TEY`8>7#|06vhsY3GfpC z1xcvris1Rms4Z4R?>QNDUJ##*x?q3Rb`STzkItovK5Y?l_+%#Kh1`k?v9XtW1~zk;8qK zq1EA)B88?FS{fXzW~K$mJCJwXVX!1sE=3v{xzNnc(kx@g@=70qJ30cXmX- zbC;b>(s;sh85Nq%bXttv`5mz|9L1)#i}uj&p@cjXvHS%YzrFzhoJddW+`Iw6cL`gl zOf`!faERPliR^3V^dfAC34EMEh@`j{!{c*^IjBJ>L-x9A-5_OCzI=ivKwCzbczE&WmfxuCg`2y@5HO%CGMHB)|XpPI%Wr zXjq5oI4@IiCk);3%S~v&1M8zC^sA5OpqFZ)c+sXf!u3I*wTS)$h#`hnWbU1KReMe; zF|Eos{@ha^RDR_r-ZS5{D}PP}eeCHS)A@~>?nzL~=smYyIq3;+4qEuC=~vXORkZSM z6FB1uuL6CdbqlVVmmQE;H~r;)wUqF#BsK(rYoL8_=>fV+3Pd3ZJ9afK_@Z@e9~ybN zT74`PG(Fepg|r=QR4Swmur08TZMUhuaMQN+Y$}z)E7Jy?r$uTwx4jhlK${3k-1-=H z+sb5N*LSs+3fpR5sZv=#&*M|Tp}Cn&Gs(-udPQO1+7;0h>R9fcj(;r6Y)9DjaaJBj z8IMlKQ{X6c#3VDlDydH{rUHffIrbQ9h__2BI}>e2OA<{rJ+Z0^J1BBU{Tj1N{C&L6_3 zKLJva6H?JRedfUoDy5lu%?vm$Bp*iyGaUcHOtJs`k%9|lXG+7_f=eS{m1e2nZa zT!m+m5}(6DW04a;i|@t80$n2!2AKOI$|dHWa|j0f7^qKr9LH$j&R zjKZMUwI&O(%re-$f)P^nAxa_|S78W3_kjc(zK_wnK{wxaJ7J*S0lp1Psp847C=|xr r23TOj7?!SJR^3v~;D@FZ2GX5f8hpk1;LF;H2iPpm`v5%e)4u;NOwU9A diff --git a/openmmlab_test/mmclassification-speed-benchmark/mmcls/models/utils/augment/__init__.py b/openmmlab_test/mmclassification-speed-benchmark/mmcls/models/utils/augment/__init__.py deleted file mode 100644 index d6eab927..00000000 --- a/openmmlab_test/mmclassification-speed-benchmark/mmcls/models/utils/augment/__init__.py +++ /dev/null @@ -1,6 +0,0 @@ -from .augments import Augments -from .cutmix import BatchCutMixLayer -from .identity import Identity -from .mixup import BatchMixupLayer - -__all__ = ['Augments', 'BatchCutMixLayer', 'Identity', 'BatchMixupLayer'] diff --git a/openmmlab_test/mmclassification-speed-benchmark/mmcls/models/utils/augment/__pycache__/__init__.cpython-36.pyc b/openmmlab_test/mmclassification-speed-benchmark/mmcls/models/utils/augment/__pycache__/__init__.cpython-36.pyc deleted file mode 100644 index 6c0564b218475710f16e15594d4a0c223c91d6f7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 392 zcmX|-&q@O^5XO`J(@l#-Ut`7-2cxmJdve6g0k-Q5TOWcH8ppvUMxD0GcKAfG26 z%`hZ;%rIljqr~mT66Lv`b0$xjse#Yh;KA%uyT+Da^-cT@7au&M>1Icwq-gR0 diff --git a/openmmlab_test/mmclassification-speed-benchmark/mmcls/models/utils/augment/__pycache__/augments.cpython-36.pyc b/openmmlab_test/mmclassification-speed-benchmark/mmcls/models/utils/augment/__pycache__/augments.cpython-36.pyc deleted file mode 100644 index 715d24dc2272df48387bb03fd0d4bc13f7f0670e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2941 zcmb7GOOG2x5bo|7KjO7lAqpq~30g>yH8|dv2vU??*gO>F00%Y_l0!5ZPq*#y&MV#R zB)iNiQXDCl1i`OB-1r4t_!o2KlpE(cDtu%ruwU@uCKrLcB|F+`T5oU zZw*5JAPbib<1eA<4d?_BG$6g=PJ2u+VFgxb_iRdT5@CzVQz9y|GPQbDLH9|!`VwZ5 zuU}H=+cazSCw?FtcQOoRWIX&6!t+?yB}b#t6OHPn~$5u%n(9B(k>Yk{xLoqJ*EJ?LJGqk%uX?tA9mU7qr|Kfe68 z5A8V)Vii-kfH^!KoIn@h-+1I=^z#|JySpbQx%VA@=OiqI!wa$2%wZyTE?jkuH@Y@4 zU-^$NbhsNNBX?)B+u_k9biBaTTI!w6jSf##+~3*ge%9{%D;hvelK%p>-Cn}Fd-AlH z1mEFh5!V)%bv_rZ{cxzk(!|Oeb(I^5Xl?UShi}9G7Pe*U!0pRm$=r|38f1x?<`dh? z6A-?`%V}j8YYVU2MLllETu9Fsl0O{zNS1dF>F|CKdk5Ute4?eulQ$#D z2XPR@5B+G!)g%CRYVIaU;7d^u4G5d~Fl`CB?*ak`sv-cE%I*7sZ+xk{{8sT+7EIx8 zKYk#KB0dDN7s2`i4i9=1PXd9_@C90M40{3ekOK`0fZQrCH@w^K@;%LO3D`)!ImEc5 z*l@_VTrQ+z2mPRf6FWrDbDxKO$T#^#^pf}6P^gXWR*}8OW=c?jdmS1ogRX*t7-DEj zrfkfngc4(=)Ywy|-cRX}9#d0E>68k3VCyYY6>LhMP+if|2S?Go&C3l;!g0NCk`V+fv z?~`9Zt`)9)n`NxKky%h#g%!!WSKqCVKuFi)L`GoU8|65wm)oN7UHDWrbaJx1bDtOIK8G-b z>(4KaZero}BwVO^p+58d1+q}?b$Nf{1|XY!v%~un!-ueCzrWnw8XOO3 zHkf5BO0p^*wQ-oOe3Rezjca69!s$#`<_(qfO)&3-o;rKoS9jDXq@~o?KKMk z2g+)sT0!^AM92EWCJr3uDty#P5CUs;mY#uCTUw{Ws$IhwksC_K$r_FWassC)jGK;w zT%UcZIgW@us2NsDeGFaJnibNM=xrVbNZosAlou8$i35#dP(Nq0CeLXKi^AbeRsl9A qhw1|y*Ye-9z++s-tO~#Nq-S#LIryA2S^Y{8>n=)hfzRr!Y5fHN{sWQ# diff --git a/openmmlab_test/mmclassification-speed-benchmark/mmcls/models/utils/augment/__pycache__/builder.cpython-36.pyc b/openmmlab_test/mmclassification-speed-benchmark/mmcls/models/utils/augment/__pycache__/builder.cpython-36.pyc deleted file mode 100644 index 1e68c2e9c8e792b0829cccb2a23f4c4f570d7c19..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 410 zcmYjMJx{|h5Vf7O2~~^u6-XW046F$8A;d%nK9(>UDpZceNB*saus5WtB#}s}wYLQ81^)a&L&ZLYOg< zB^zSthHjlDT}+vFS^DVW@#gk=@qqRLI`v}#CGVuoxUS4Q(GiNipOR&(AZb_7C?$EG zSui$Hs*v26x~vOs>$aJh6@ZxK&=gC>^|Ke4M708>Njh62?{g+TKj`^t-A{gR*-wTp wuRnt71MFSYK{~=+FLQ69-Oy*(?mjQ_DgRN7gFZgR&7FiZia+DDM=TD003MuXCjbBd diff --git a/openmmlab_test/mmclassification-speed-benchmark/mmcls/models/utils/augment/__pycache__/cutmix.cpython-36.pyc b/openmmlab_test/mmclassification-speed-benchmark/mmcls/models/utils/augment/__pycache__/cutmix.cpython-36.pyc deleted file mode 100644 index cd3312da32559e77a9a0cdd44f3f1cef67de43d4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5541 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 VeQ%S^Npj!NDB0*j>CJ;p^}pH|k1_xN diff --git a/openmmlab_test/mmclassification-speed-benchmark/mmcls/models/utils/augment/__pycache__/identity.cpython-36.pyc b/openmmlab_test/mmclassification-speed-benchmark/mmcls/models/utils/augment/__pycache__/identity.cpython-36.pyc deleted file mode 100644 index 7b3f8ee52a2dfd367937af76de7a1e6d2c890426..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1357 zcmZWpL9f&{5VoD{CcAxafkIVP;^0$7q_PY2f=~rKC`BB2hZZhrD=Ue;yV;jGTicP~ zX-{1wF6DPr{Y$=8JyhH{_tcqemVIh1c`~+V<{N)A&ezAspKCW9)h2kC$kHCPR0CbgyAE)LE?xwA+ucSL_{76iKNhDU%eiM{miT$^ei?Dd5WC z8zyreSJ$L+FdE6H=kOU+G}@{hN^;{T>#MIJzNQwqjdCi3>K=g6H%;l93a8tE#y<1~fAP0nIWJy8;OD2l?lx z*|MqCtXV5v*HB{Nly$SZ?y6AE%OXRVn|7^~yqQDEmvv^&Is-ea8>uQgYh4L4YZo;% zp; z?$~KUy9>eX=yyKq`*F9$%q8&g@xEcr6I>6@dZrV;nDNUA2aF0{I3nVM3A~J z39?~ZI>$69rh(y-V22q%`5TfI_%foyQ-u}3+ZlMtIkP1XcHciI@5{y_D3lzs8n~dTh8KqZU zV~XWe>*>7J1y(+*Jk#2b4{LK3e0-F*WhJ3k@um1nMlDL~li_@% diff --git a/openmmlab_test/mmclassification-speed-benchmark/mmcls/models/utils/augment/__pycache__/mixup.cpython-36.pyc b/openmmlab_test/mmclassification-speed-benchmark/mmcls/models/utils/augment/__pycache__/mixup.cpython-36.pyc deleted file mode 100644 index 77e6e972ee2806945e8364c4073d33c755668670..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2317 zcmaJ?OOG5i5VqaVdF0{duDpJAA{W^ zl2tDUW>GGLzk&EmzH&gh<%YzGD);QpvO!pKx!hHDm8-t0{$OLH``a(ON$3*t2RSuh zPd=nv;Ttv|u5lxM#T)+Gce^$E@zmoB3gfTinjOMKA18@_=xMyGMk(qAw`- zp4;Ju=*$QK!11tGj2ZzWNJu#e8KQiXbY!x4a~aFh)qHd zO#6DU8!PcJd$O2+5kD33;4j<qp1ksb0TC=jawIlTA!H9 zDp^|szaGy6{1zu!p4CrB!RK|Lrqv?nK_Y^z3}jqRMDXp+_kvsBt*=3^KNaJ6k=H?8 z1-C{wjZc5JQG9tPJ&q@?)@rH}n3~kIAxk!6OF~I)HMF*uOa=|*bl+CjYUd{kUs>%g znRx>-K52$E|%@+6?YcU!zt7w?^d_6bZgR?N#g z!>)GJVlJda%xXW1vNEfqNOv=pm8y=*RA|SfL=WyNB_xLazLb^J7KB*w@cc+*o9Jpf0?!i=;J`+c}C(i>vwB&2BXgez=O8b*K0?$QmWGz9v+A*%Y z39Mp32s_w5W7a4Psq{b!1q9(Q0rMFCD1yf=a^(9_^!*~vR}wFZc$G$xd7eZ!=+yqK z(>TDn4Sd}u+-mGg1m5DpKY{$r#_Tcx_#!#k*}>hE_BzVEov{xN-my+9mt{J5uDV6mOVbQMraF71o68t6?O?ix9B~(nj%@jK)wSS<|SvGzyeHTte+1-<9|@l zDh+*k32(ZL zbXaI=s4fws;dzs$QCW`0i!#M78RwALQg_#T`4(tuFIi+chaT_X&aIM}Nb9!YZ%Q$N nf2xqHcGH&3iMOrarkVL4wGHWG1eR&3Tg<0E?Ss?XSGMUtCeA5? diff --git a/openmmlab_test/mmclassification-speed-benchmark/mmcls/models/utils/augment/builder.py b/openmmlab_test/mmclassification-speed-benchmark/mmcls/models/utils/augment/builder.py deleted file mode 100644 index a32af7eb..00000000 --- a/openmmlab_test/mmclassification-speed-benchmark/mmcls/models/utils/augment/builder.py +++ /dev/null @@ -1,7 +0,0 @@ -from mmcv.utils import Registry, build_from_cfg - -AUGMENT = Registry('augment') - - -def build_augment(cfg, default_args=None): - return build_from_cfg(cfg, AUGMENT, default_args) diff --git a/openmmlab_test/mmclassification-speed-benchmark/mmcls/models/utils/augment/cutmix.py b/openmmlab_test/mmclassification-speed-benchmark/mmcls/models/utils/augment/cutmix.py deleted file mode 100644 index 1962d42a..00000000 --- a/openmmlab_test/mmclassification-speed-benchmark/mmcls/models/utils/augment/cutmix.py +++ /dev/null @@ -1,139 +0,0 @@ -from abc import ABCMeta, abstractmethod - -import numpy as np -import torch -import torch.nn.functional as F - -from .builder import AUGMENT - - -class BaseCutMixLayer(object, metaclass=ABCMeta): - """Base class for CutMixLayer. - - Args: - alpha (float): Parameters for Beta distribution. Positive(>0) - num_classes (int): The number of classes - prob (float): MixUp probability. It should be in range [0, 1]. - Default to 1.0 - cutmix_minmax (List[float], optional): cutmix min/max image ratio. - (as percent of image size). When cutmix_minmax is not None, we - generate cutmix bounding-box using cutmix_minmax instead of alpha - correct_lam (bool): Whether to apply lambda correction when cutmix bbox - clipped by image borders. Default to True - """ - - def __init__(self, - alpha, - num_classes, - prob=1.0, - cutmix_minmax=None, - correct_lam=True): - super(BaseCutMixLayer, self).__init__() - - assert isinstance(alpha, float) and alpha > 0 - assert isinstance(num_classes, int) - assert isinstance(prob, float) and 0.0 <= prob <= 1.0 - - self.alpha = alpha - self.num_classes = num_classes - self.prob = prob - self.cutmix_minmax = cutmix_minmax - self.correct_lam = correct_lam - - def rand_bbox_minmax(self, img_shape, count=None): - """Min-Max CutMix bounding-box Inspired by Darknet cutmix - implementation. It generates a random rectangular bbox based on min/max - percent values applied to each dimension of the input image. - - Typical defaults for minmax are usually in the .2-.3 for min and - .8-.9 range for max. - - Args: - img_shape (tuple): Image shape as tuple - count (int, optional): Number of bbox to generate. Default to None - """ - assert len(self.cutmix_minmax) == 2 - img_h, img_w = img_shape[-2:] - cut_h = np.random.randint( - int(img_h * self.cutmix_minmax[0]), - int(img_h * self.cutmix_minmax[1]), - size=count) - cut_w = np.random.randint( - int(img_w * self.cutmix_minmax[0]), - int(img_w * self.cutmix_minmax[1]), - size=count) - yl = np.random.randint(0, img_h - cut_h, size=count) - xl = np.random.randint(0, img_w - cut_w, size=count) - yu = yl + cut_h - xu = xl + cut_w - return yl, yu, xl, xu - - def rand_bbox(self, img_shape, lam, margin=0., count=None): - """Standard CutMix bounding-box that generates a random square bbox - based on lambda value. This implementation includes support for - enforcing a border margin as percent of bbox dimensions. - - Args: - img_shape (tuple): Image shape as tuple - lam (float): Cutmix lambda value - margin (float): Percentage of bbox dimension to enforce as margin - (reduce amount of box outside image). Default to 0. - count (int, optional): Number of bbox to generate. Default to None - """ - ratio = np.sqrt(1 - lam) - img_h, img_w = img_shape[-2:] - cut_h, cut_w = int(img_h * ratio), int(img_w * ratio) - margin_y, margin_x = int(margin * cut_h), int(margin * cut_w) - cy = np.random.randint(0 + margin_y, img_h - margin_y, size=count) - cx = np.random.randint(0 + margin_x, img_w - margin_x, size=count) - yl = np.clip(cy - cut_h // 2, 0, img_h) - yh = np.clip(cy + cut_h // 2, 0, img_h) - xl = np.clip(cx - cut_w // 2, 0, img_w) - xh = np.clip(cx + cut_w // 2, 0, img_w) - return yl, yh, xl, xh - - def cutmix_bbox_and_lam(self, img_shape, lam, count=None): - """Generate bbox and apply lambda correction. - - Args: - img_shape (tuple): Image shape as tuple - lam (float): Cutmix lambda value - count (int, optional): Number of bbox to generate. Default to None - """ - if self.cutmix_minmax is not None: - yl, yu, xl, xu = self.rand_bbox_minmax(img_shape, count=count) - else: - yl, yu, xl, xu = self.rand_bbox(img_shape, lam, count=count) - if self.correct_lam or self.cutmix_minmax is not None: - bbox_area = (yu - yl) * (xu - xl) - lam = 1. - bbox_area / float(img_shape[-2] * img_shape[-1]) - return (yl, yu, xl, xu), lam - - @abstractmethod - def cutmix(self, imgs, gt_label): - pass - - -@AUGMENT.register_module(name='BatchCutMix') -class BatchCutMixLayer(BaseCutMixLayer): - """CutMix layer for batch CutMix.""" - - def __init__(self, *args, **kwargs): - super(BatchCutMixLayer, self).__init__(*args, **kwargs) - - def cutmix(self, img, gt_label): - one_hot_gt_label = F.one_hot(gt_label, num_classes=self.num_classes) - lam = np.random.beta(self.alpha, self.alpha) - batch_size = img.size(0) - index = torch.randperm(batch_size) - - (bby1, bby2, bbx1, - bbx2), lam = self.cutmix_bbox_and_lam(img.shape, lam) - img[:, :, bby1:bby2, bbx1:bbx2] = \ - img[index, :, bby1:bby2, bbx1:bbx2] - mixed_gt_label = lam * one_hot_gt_label + ( - 1 - lam) * one_hot_gt_label[index, :] - return img, mixed_gt_label - - def __call__(self, img, gt_label): - return self.cutmix(img, gt_label) diff --git a/openmmlab_test/mmclassification-speed-benchmark/mmcls/models/utils/augment/mixup.py b/openmmlab_test/mmclassification-speed-benchmark/mmcls/models/utils/augment/mixup.py deleted file mode 100644 index 15350985..00000000 --- a/openmmlab_test/mmclassification-speed-benchmark/mmcls/models/utils/augment/mixup.py +++ /dev/null @@ -1,56 +0,0 @@ -from abc import ABCMeta, abstractmethod - -import numpy as np -import torch -import torch.nn.functional as F - -from .builder import AUGMENT - - -class BaseMixupLayer(object, metaclass=ABCMeta): - """Base class for MixupLayer. - - Args: - alpha (float): Parameters for Beta distribution. - num_classes (int): The number of classes. - prob (float): MixUp probability. It should be in range [0, 1]. - Default to 1.0 - """ - - def __init__(self, alpha, num_classes, prob=1.0): - super(BaseMixupLayer, self).__init__() - - assert isinstance(alpha, float) and alpha > 0 - assert isinstance(num_classes, int) - assert isinstance(prob, float) and 0.0 <= prob <= 1.0 - - self.alpha = alpha - self.num_classes = num_classes - self.prob = prob - - @abstractmethod - def mixup(self, imgs, gt_label): - pass - - -@AUGMENT.register_module(name='BatchMixup') -class BatchMixupLayer(BaseMixupLayer): - """Mixup layer for batch mixup.""" - - def __init__(self, *args, **kwargs): - super(BatchMixupLayer, self).__init__(*args, **kwargs) - - def mixup(self, img, gt_label): - one_hot_gt_label = F.one_hot(gt_label, num_classes=self.num_classes) - lam = np.random.beta(self.alpha, self.alpha) - batch_size = img.size(0) - index = torch.randperm(batch_size) - - mixed_img = lam * img + (1 - lam) * img[index, :] - mixed_gt_label = lam * one_hot_gt_label + ( - 1 - lam) * one_hot_gt_label[index, :] - - return mixed_img, mixed_gt_label - - def __call__(self, img, gt_label): - return self.mixup(img, gt_label) diff --git a/openmmlab_test/mmclassification-speed-benchmark/mmcls/models/utils/helpers.py b/openmmlab_test/mmclassification-speed-benchmark/mmcls/models/utils/helpers.py deleted file mode 100644 index 9d2bd96d..00000000 --- a/openmmlab_test/mmclassification-speed-benchmark/mmcls/models/utils/helpers.py +++ /dev/null @@ -1,20 +0,0 @@ -import collections.abc -from itertools import repeat - - -# From PyTorch internals -def _ntuple(n): - - def parse(x): - if isinstance(x, collections.abc.Iterable): - return x - return tuple(repeat(x, n)) - - return parse - - -to_1tuple = _ntuple(1) -to_2tuple = _ntuple(2) -to_3tuple = _ntuple(3) -to_4tuple = _ntuple(4) -to_ntuple = _ntuple diff --git a/openmmlab_test/mmclassification-speed-benchmark/mmcls/models/utils/inverted_residual.py b/openmmlab_test/mmclassification-speed-benchmark/mmcls/models/utils/inverted_residual.py deleted file mode 100644 index 110efbae..00000000 --- a/openmmlab_test/mmclassification-speed-benchmark/mmcls/models/utils/inverted_residual.py +++ /dev/null @@ -1,119 +0,0 @@ -import torch.utils.checkpoint as cp -from mmcv.cnn import ConvModule -from mmcv.runner import BaseModule - -from .se_layer import SELayer - - -# class InvertedResidual(nn.Module): -class InvertedResidual(BaseModule): - """Inverted Residual Block. - - Args: - in_channels (int): The input channels of this Module. - out_channels (int): The output channels of this Module. - mid_channels (int): The input channels of the depthwise convolution. - kernel_size (int): The kernal size of the depthwise convolution. - Default: 3. - stride (int): The stride of the depthwise convolution. Default: 1. - se_cfg (dict): Config dict for se layer. Defaul: None, which means no - se layer. - with_expand_conv (bool): Use expand conv or not. If set False, - mid_channels must be the same with in_channels. - Default: True. - conv_cfg (dict): Config dict for convolution layer. Default: None, - which means using conv2d. - norm_cfg (dict): Config dict for normalization layer. - Default: dict(type='BN'). - act_cfg (dict): Config dict for activation layer. - Default: dict(type='ReLU'). - with_cp (bool): Use checkpoint or not. Using checkpoint will save some - memory while slowing down the training speed. Default: False. - - Returns: - Tensor: The output tensor. - """ - - def __init__(self, - in_channels, - out_channels, - mid_channels, - kernel_size=3, - stride=1, - se_cfg=None, - with_expand_conv=True, - conv_cfg=None, - norm_cfg=dict(type='BN'), - act_cfg=dict(type='ReLU'), - with_cp=False, - init_cfg=None): - super(InvertedResidual, self).__init__(init_cfg) - self.with_res_shortcut = (stride == 1 and in_channels == out_channels) - assert stride in [1, 2] - self.with_cp = with_cp - self.with_se = se_cfg is not None - self.with_expand_conv = with_expand_conv - - if self.with_se: - assert isinstance(se_cfg, dict) - if not self.with_expand_conv: - assert mid_channels == in_channels - - if self.with_expand_conv: - self.expand_conv = ConvModule( - in_channels=in_channels, - out_channels=mid_channels, - kernel_size=1, - stride=1, - padding=0, - conv_cfg=conv_cfg, - norm_cfg=norm_cfg, - act_cfg=act_cfg) - self.depthwise_conv = ConvModule( - in_channels=mid_channels, - out_channels=mid_channels, - kernel_size=kernel_size, - stride=stride, - padding=kernel_size // 2, - groups=mid_channels, - conv_cfg=conv_cfg, - norm_cfg=norm_cfg, - act_cfg=act_cfg) - if self.with_se: - self.se = SELayer(**se_cfg) - self.linear_conv = ConvModule( - in_channels=mid_channels, - out_channels=out_channels, - kernel_size=1, - stride=1, - padding=0, - conv_cfg=conv_cfg, - norm_cfg=norm_cfg, - act_cfg=act_cfg) - - def forward(self, x): - - def _inner_forward(x): - out = x - - if self.with_expand_conv: - out = self.expand_conv(out) - - out = self.depthwise_conv(out) - - if self.with_se: - out = self.se(out) - - out = self.linear_conv(out) - - if self.with_res_shortcut: - return x + out - else: - return out - - if self.with_cp and x.requires_grad: - out = cp.checkpoint(_inner_forward, x) - else: - out = _inner_forward(x) - - return out diff --git a/openmmlab_test/mmclassification-speed-benchmark/mmcls/models/utils/se_layer.py b/openmmlab_test/mmclassification-speed-benchmark/mmcls/models/utils/se_layer.py deleted file mode 100644 index ff92f64e..00000000 --- a/openmmlab_test/mmclassification-speed-benchmark/mmcls/models/utils/se_layer.py +++ /dev/null @@ -1,56 +0,0 @@ -import mmcv -import torch.nn as nn -from mmcv.cnn import ConvModule -from mmcv.runner import BaseModule - - -# class SELayer(nn.Module): -class SELayer(BaseModule): - """Squeeze-and-Excitation Module. - - Args: - channels (int): The input (and output) channels of the SE layer. - ratio (int): Squeeze ratio in SELayer, the intermediate channel will be - ``int(channels/ratio)``. Default: 16. - conv_cfg (None or dict): Config dict for convolution layer. - Default: None, which means using conv2d. - act_cfg (dict or Sequence[dict]): Config dict for activation layer. - If act_cfg is a dict, two activation layers will be configurated - by this dict. If act_cfg is a sequence of dicts, the first - activation layer will be configurated by the first dict and the - second activation layer will be configurated by the second dict. - Default: (dict(type='ReLU'), dict(type='Sigmoid')) - """ - - def __init__(self, - channels, - ratio=16, - conv_cfg=None, - act_cfg=(dict(type='ReLU'), dict(type='Sigmoid')), - init_cfg=None): - super(SELayer, self).__init__(init_cfg) - if isinstance(act_cfg, dict): - act_cfg = (act_cfg, act_cfg) - assert len(act_cfg) == 2 - assert mmcv.is_tuple_of(act_cfg, dict) - self.global_avgpool = nn.AdaptiveAvgPool2d(1) - self.conv1 = ConvModule( - in_channels=channels, - out_channels=int(channels / ratio), - kernel_size=1, - stride=1, - conv_cfg=conv_cfg, - act_cfg=act_cfg[0]) - self.conv2 = ConvModule( - in_channels=int(channels / ratio), - out_channels=channels, - kernel_size=1, - stride=1, - conv_cfg=conv_cfg, - act_cfg=act_cfg[1]) - - def forward(self, x): - out = self.global_avgpool(x) - out = self.conv1(out) - out = self.conv2(out) - return x * out diff --git a/openmmlab_test/mmclassification-speed-benchmark/mmcls/utils/__init__.py b/openmmlab_test/mmclassification-speed-benchmark/mmcls/utils/__init__.py deleted file mode 100644 index bda2ff83..00000000 --- a/openmmlab_test/mmclassification-speed-benchmark/mmcls/utils/__init__.py +++ /dev/null @@ -1,4 +0,0 @@ -from .collect_env import collect_env -from .logger import get_root_logger - -__all__ = ['collect_env', 'get_root_logger'] diff --git a/openmmlab_test/mmclassification-speed-benchmark/mmcls/utils/__pycache__/__init__.cpython-36.pyc b/openmmlab_test/mmclassification-speed-benchmark/mmcls/utils/__pycache__/__init__.cpython-36.pyc deleted file mode 100644 index 75b77d0bf2a069c5b353016a0c15d94dad5ed532..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 269 zcmX|*F-` zu=Jn4?JvvMo6XtB`~CRJ82c*vFHziGQMxQJ%y43k4UAVWh&wTe;v3UWVrb0C6YINg zUZOo;&UGL{odNwzX)h+s5JSj7VVW?;dO9`*k9~V=mhNv;hs!B|A_Dkiv8&07p9i@M z4rQ3pJ4b4Sj44a!G^v#Av(+lw;J0Z;G}{rq-Z>Tb$3T*YY$-_q>umL Ncw1jiZNZwa#V?Dcc2Vqe>4r%7Kncd8!&PnVEk z8!Vnh@Dt_gX}`jrd=pvd!29v$<^BE)d3JCx{Pp8x`G*1gg}oC~|BA|fBoH824T|Lf z^L;>ln1_8I)=?gbNW|YDXBdmYMPTyJPmr~6K4{@Je0cai$df$9dzf5KaSOQSazFUZdk{>3CJx>a6rj{!mnis1{WAF@b{?zJg=t zfnZ1A!j>Y6@O$t8j^GMJG$$mR`11MUzkcQ_%%om5MiovrI%`(_$ZWNidYzHIG>ulM zot@sYr)M__+2n_(r;EC=App?FI z@B16fkVdy}W>uqb)@)EKRToR{(7Kry*ta>h8$@xuL|s;@FcpF diff --git a/openmmlab_test/mmclassification-speed-benchmark/mmcls/utils/__pycache__/logger.cpython-36.pyc b/openmmlab_test/mmclassification-speed-benchmark/mmcls/utils/__pycache__/logger.cpython-36.pyc deleted file mode 100644 index 60998a5b04f10046731c71eaff508f0241b9e3fa..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 377 zcmYjM!Ait15KYq7tz{Q~!ya~f@G2q-f(Z5Ct(T>3rrl`LlqS0%>`jk;h9Le@uAck_ zPfj9=18-)Sym|9-vRGtqFBi=#A>;$`7ZG;n2y={y6HXb{4mWqyd^YmB%=m^mhkDtof0PZ932(j`i@(&TjV%$&It z1=gLA;0}E!VF&V^Ob7V-byIA#fW3)IGlPPDZZdRUqffG-;u+KsBG zhd?mJ)(UBgAA76u(H(iWlh(hM{RI=1.3.0,<=1.5.0 diff --git a/openmmlab_test/mmclassification-speed-benchmark/requirements/optional.txt b/openmmlab_test/mmclassification-speed-benchmark/requirements/optional.txt deleted file mode 100644 index e20fb3f6..00000000 --- a/openmmlab_test/mmclassification-speed-benchmark/requirements/optional.txt +++ /dev/null @@ -1 +0,0 @@ -albumentations>=0.3.2 diff --git a/openmmlab_test/mmclassification-speed-benchmark/requirements/readthedocs.txt b/openmmlab_test/mmclassification-speed-benchmark/requirements/readthedocs.txt deleted file mode 100644 index a959c28d..00000000 --- a/openmmlab_test/mmclassification-speed-benchmark/requirements/readthedocs.txt +++ /dev/null @@ -1,3 +0,0 @@ -mmcv>=1.3.0 -torch -torchvision diff --git a/openmmlab_test/mmclassification-speed-benchmark/requirements/runtime.txt b/openmmlab_test/mmclassification-speed-benchmark/requirements/runtime.txt deleted file mode 100644 index db5d81e0..00000000 --- a/openmmlab_test/mmclassification-speed-benchmark/requirements/runtime.txt +++ /dev/null @@ -1,2 +0,0 @@ -matplotlib -numpy diff --git a/openmmlab_test/mmclassification-speed-benchmark/setup.cfg b/openmmlab_test/mmclassification-speed-benchmark/setup.cfg deleted file mode 100644 index ce016361..00000000 --- a/openmmlab_test/mmclassification-speed-benchmark/setup.cfg +++ /dev/null @@ -1,19 +0,0 @@ -[bdist_wheel] -universal=1 - -[aliases] -test=pytest - -[yapf] -based_on_style = pep8 -blank_line_before_nested_class_or_def = true -split_before_expression_after_opening_paren = true - -[isort] -line_length = 79 -multi_line_output = 0 -known_standard_library = pkg_resources,setuptools -known_first_party = mmcls -known_third_party = PIL,cv2,matplotlib,mmcv,numpy,onnxruntime,pytest,torch,torchvision,ts -no_lines_before = STDLIB,LOCALFOLDER -default_section = THIRDPARTY diff --git a/openmmlab_test/mmclassification-speed-benchmark/setup.py b/openmmlab_test/mmclassification-speed-benchmark/setup.py deleted file mode 100644 index 2536acb1..00000000 --- a/openmmlab_test/mmclassification-speed-benchmark/setup.py +++ /dev/null @@ -1,118 +0,0 @@ -from setuptools import find_packages, setup - - -def readme(): - with open('README.md', encoding='utf-8') as f: - content = f.read() - return content - - -def get_version(): - version_file = 'mmcls/version.py' - with open(version_file, 'r', encoding='utf-8') as f: - exec(compile(f.read(), version_file, 'exec')) - return locals()['__version__'] - - -def parse_requirements(fname='requirements.txt', with_version=True): - """Parse the package dependencies listed in a requirements file but strips - specific versioning information. - - Args: - fname (str): path to requirements file - with_version (bool, default=False): if True include version specs - - Returns: - List[str]: list of requirements items - - CommandLine: - python -c "import setup; print(setup.parse_requirements())" - """ - import re - import sys - from os.path import exists - require_fpath = fname - - def parse_line(line): - """Parse information from a line in a requirements text file.""" - if line.startswith('-r '): - # Allow specifying requirements in other files - target = line.split(' ')[1] - for info in parse_require_file(target): - yield info - else: - info = {'line': line} - if line.startswith('-e '): - info['package'] = line.split('#egg=')[1] - else: - # Remove versioning from the package - pat = '(' + '|'.join(['>=', '==', '>']) + ')' - parts = re.split(pat, line, maxsplit=1) - parts = [p.strip() for p in parts] - - info['package'] = parts[0] - if len(parts) > 1: - op, rest = parts[1:] - if ';' in rest: - # Handle platform specific dependencies - # http://setuptools.readthedocs.io/en/latest/setuptools.html#declaring-platform-specific-dependencies - version, platform_deps = map(str.strip, - rest.split(';')) - info['platform_deps'] = platform_deps - else: - version = rest # NOQA - info['version'] = (op, version) - yield info - - def parse_require_file(fpath): - with open(fpath, 'r') as f: - for line in f.readlines(): - line = line.strip() - if line and not line.startswith('#'): - for info in parse_line(line): - yield info - - def gen_packages_items(): - if exists(require_fpath): - for info in parse_require_file(require_fpath): - parts = [info['package']] - if with_version and 'version' in info: - parts.extend(info['version']) - if not sys.version.startswith('3.4'): - # apparently package_deps are broken in 3.4 - platform_deps = info.get('platform_deps') - if platform_deps is not None: - parts.append(';' + platform_deps) - item = ''.join(parts) - yield item - - packages = list(gen_packages_items()) - return packages - - -setup( - name='mmcls', - version=get_version(), - description='OpenMMLab Image Classification Toolbox and Benchmark', - long_description=readme(), - long_description_content_type='text/markdown', - author='OpenMMLab', - author_email='openmmlab@gmail.com', - keywords='computer vision, image classification', - url='https://github.com/open-mmlab/mmclassification', - packages=find_packages(exclude=('configs', 'tools', 'demo')), - include_package_data=True, - classifiers=[ - 'Development Status :: 4 - Beta', - 'License :: OSI Approved :: Apache Software License', - 'Operating System :: OS Independent', - 'Programming Language :: Python :: 3', - 'Programming Language :: Python :: 3.5', - 'Programming Language :: Python :: 3.6', - 'Programming Language :: Python :: 3.7', - 'Programming Language :: Python :: 3.8', - ], - license='Apache License 2.0', - tests_require=parse_requirements('requirements/tests.txt'), - install_requires=parse_requirements('requirements/runtime.txt'), - zip_safe=False) diff --git a/openmmlab_test/mmclassification-speed-benchmark/tests/test_backbones/test_mobilenet_v3.py b/openmmlab_test/mmclassification-speed-benchmark/tests/test_backbones/test_mobilenet_v3.py deleted file mode 100644 index f1b3fa21..00000000 --- a/openmmlab_test/mmclassification-speed-benchmark/tests/test_backbones/test_mobilenet_v3.py +++ /dev/null @@ -1,168 +0,0 @@ -import pytest -import torch -from torch.nn.modules import GroupNorm -from torch.nn.modules.batchnorm import _BatchNorm - -from mmcls.models.backbones import MobileNetv3 -from mmcls.models.utils import InvertedResidual - - -def is_norm(modules): - """Check if is one of the norms.""" - if isinstance(modules, (GroupNorm, _BatchNorm)): - return True - return False - - -def check_norm_state(modules, train_state): - """Check if norm layer is in correct train state.""" - for mod in modules: - if isinstance(mod, _BatchNorm): - if mod.training != train_state: - return False - return True - - -def test_mobilenetv3_backbone(): - with pytest.raises(TypeError): - # pretrained must be a string path - model = MobileNetv3() - model.init_weights(pretrained=0) - - with pytest.raises(AssertionError): - # arch must in [small, big] - MobileNetv3(arch='others') - - with pytest.raises(ValueError): - # frozen_stages must less than 12 when arch is small - MobileNetv3(arch='small', frozen_stages=12) - - with pytest.raises(ValueError): - # frozen_stages must less than 16 when arch is big - MobileNetv3(arch='big', frozen_stages=16) - - with pytest.raises(ValueError): - # max out_indices must less than 11 when arch is small - MobileNetv3(arch='small', out_indices=(11, )) - - with pytest.raises(ValueError): - # max out_indices must less than 15 when arch is big - MobileNetv3(arch='big', out_indices=(15, )) - - # Test MobileNetv3 - model = MobileNetv3() - model.init_weights() - model.train() - - # Test MobileNetv3 with first stage frozen - frozen_stages = 1 - model = MobileNetv3(frozen_stages=frozen_stages) - model.init_weights() - model.train() - for param in model.conv1.parameters(): - assert param.requires_grad is False - for i in range(1, frozen_stages + 1): - layer = getattr(model, f'layer{i}') - for mod in layer.modules(): - if isinstance(mod, _BatchNorm): - assert mod.training is False - for param in layer.parameters(): - assert param.requires_grad is False - - # Test MobileNetv3 with norm eval - model = MobileNetv3(norm_eval=True, out_indices=range(0, 11)) - model.init_weights() - model.train() - assert check_norm_state(model.modules(), False) - - # Test MobileNetv3 forward with small arch - model = MobileNetv3(out_indices=(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10)) - model.init_weights() - model.train() - - imgs = torch.randn(1, 3, 224, 224) - feat = model(imgs) - assert len(feat) == 11 - assert feat[0].shape == torch.Size([1, 16, 56, 56]) - assert feat[1].shape == torch.Size([1, 24, 28, 28]) - assert feat[2].shape == torch.Size([1, 24, 28, 28]) - assert feat[3].shape == torch.Size([1, 40, 14, 14]) - assert feat[4].shape == torch.Size([1, 40, 14, 14]) - assert feat[5].shape == torch.Size([1, 40, 14, 14]) - assert feat[6].shape == torch.Size([1, 48, 14, 14]) - assert feat[7].shape == torch.Size([1, 48, 14, 14]) - assert feat[8].shape == torch.Size([1, 96, 7, 7]) - assert feat[9].shape == torch.Size([1, 96, 7, 7]) - assert feat[10].shape == torch.Size([1, 96, 7, 7]) - - # Test MobileNetv3 forward with small arch and GroupNorm - model = MobileNetv3( - out_indices=(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10), - norm_cfg=dict(type='GN', num_groups=2, requires_grad=True)) - for m in model.modules(): - if is_norm(m): - assert isinstance(m, GroupNorm) - model.init_weights() - model.train() - - imgs = torch.randn(1, 3, 224, 224) - feat = model(imgs) - assert len(feat) == 11 - assert feat[0].shape == torch.Size([1, 16, 56, 56]) - assert feat[1].shape == torch.Size([1, 24, 28, 28]) - assert feat[2].shape == torch.Size([1, 24, 28, 28]) - assert feat[3].shape == torch.Size([1, 40, 14, 14]) - assert feat[4].shape == torch.Size([1, 40, 14, 14]) - assert feat[5].shape == torch.Size([1, 40, 14, 14]) - assert feat[6].shape == torch.Size([1, 48, 14, 14]) - assert feat[7].shape == torch.Size([1, 48, 14, 14]) - assert feat[8].shape == torch.Size([1, 96, 7, 7]) - assert feat[9].shape == torch.Size([1, 96, 7, 7]) - assert feat[10].shape == torch.Size([1, 96, 7, 7]) - - # Test MobileNetv3 forward with big arch - model = MobileNetv3( - arch='big', - out_indices=(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14)) - model.init_weights() - model.train() - - imgs = torch.randn(1, 3, 224, 224) - feat = model(imgs) - assert len(feat) == 15 - assert feat[0].shape == torch.Size([1, 16, 112, 112]) - assert feat[1].shape == torch.Size([1, 24, 56, 56]) - assert feat[2].shape == torch.Size([1, 24, 56, 56]) - assert feat[3].shape == torch.Size([1, 40, 28, 28]) - assert feat[4].shape == torch.Size([1, 40, 28, 28]) - assert feat[5].shape == torch.Size([1, 40, 28, 28]) - assert feat[6].shape == torch.Size([1, 80, 14, 14]) - assert feat[7].shape == torch.Size([1, 80, 14, 14]) - assert feat[8].shape == torch.Size([1, 80, 14, 14]) - assert feat[9].shape == torch.Size([1, 80, 14, 14]) - assert feat[10].shape == torch.Size([1, 112, 14, 14]) - assert feat[11].shape == torch.Size([1, 112, 14, 14]) - assert feat[12].shape == torch.Size([1, 160, 14, 14]) - assert feat[13].shape == torch.Size([1, 160, 7, 7]) - assert feat[14].shape == torch.Size([1, 160, 7, 7]) - - # Test MobileNetv3 forward with big arch - model = MobileNetv3(arch='big', out_indices=(0, )) - model.init_weights() - model.train() - - imgs = torch.randn(1, 3, 224, 224) - feat = model(imgs) - assert feat.shape == torch.Size([1, 16, 112, 112]) - - # Test MobileNetv3 with checkpoint forward - model = MobileNetv3(with_cp=True) - for m in model.modules(): - if isinstance(m, InvertedResidual): - assert m.with_cp - model.init_weights() - model.train() - - imgs = torch.randn(1, 3, 224, 224) - feat = model(imgs) - assert feat.shape == torch.Size([1, 96, 7, 7]) diff --git a/openmmlab_test/mmclassification-speed-benchmark/tests/test_backbones/test_utils.py b/openmmlab_test/mmclassification-speed-benchmark/tests/test_backbones/test_utils.py deleted file mode 100644 index 183a97d3..00000000 --- a/openmmlab_test/mmclassification-speed-benchmark/tests/test_backbones/test_utils.py +++ /dev/null @@ -1,164 +0,0 @@ -import pytest -import torch -from torch.nn.modules import GroupNorm -from torch.nn.modules.batchnorm import _BatchNorm - -from mmcls.models.utils import (Augments, InvertedResidual, SELayer, - channel_shuffle, make_divisible) - - -def is_norm(modules): - """Check if is one of the norms.""" - if isinstance(modules, (GroupNorm, _BatchNorm)): - return True - return False - - -def test_make_divisible(): - # test min_value is None - result = make_divisible(34, 8, None) - assert result == 32 - - # test when new_value > min_ratio * value - result = make_divisible(10, 8, min_ratio=0.9) - assert result == 16 - - # test min_value = 0.8 - result = make_divisible(33, 8, min_ratio=0.8) - assert result == 32 - - -def test_channel_shuffle(): - x = torch.randn(1, 24, 56, 56) - with pytest.raises(AssertionError): - # num_channels should be divisible by groups - channel_shuffle(x, 7) - - groups = 3 - batch_size, num_channels, height, width = x.size() - channels_per_group = num_channels // groups - out = channel_shuffle(x, groups) - # test the output value when groups = 3 - for b in range(batch_size): - for c in range(num_channels): - c_out = c % channels_per_group * groups + c // channels_per_group - for i in range(height): - for j in range(width): - assert x[b, c, i, j] == out[b, c_out, i, j] - - -def test_inverted_residual(): - - with pytest.raises(AssertionError): - # stride must be in [1, 2] - InvertedResidual(16, 16, 32, stride=3) - - with pytest.raises(AssertionError): - # se_cfg must be None or dict - InvertedResidual(16, 16, 32, se_cfg=list()) - - with pytest.raises(AssertionError): - # in_channeld and out_channels must be the same if - # with_expand_conv is False - InvertedResidual(16, 16, 32, with_expand_conv=False) - - # Test InvertedResidual forward, stride=1 - block = InvertedResidual(16, 16, 32, stride=1) - x = torch.randn(1, 16, 56, 56) - x_out = block(x) - assert getattr(block, 'se', None) is None - assert block.with_res_shortcut - assert x_out.shape == torch.Size((1, 16, 56, 56)) - - # Test InvertedResidual forward, stride=2 - block = InvertedResidual(16, 16, 32, stride=2) - x = torch.randn(1, 16, 56, 56) - x_out = block(x) - assert not block.with_res_shortcut - assert x_out.shape == torch.Size((1, 16, 28, 28)) - - # Test InvertedResidual forward with se layer - se_cfg = dict(channels=32) - block = InvertedResidual(16, 16, 32, stride=1, se_cfg=se_cfg) - x = torch.randn(1, 16, 56, 56) - x_out = block(x) - assert isinstance(block.se, SELayer) - assert x_out.shape == torch.Size((1, 16, 56, 56)) - - # Test InvertedResidual forward, with_expand_conv=False - block = InvertedResidual(32, 16, 32, with_expand_conv=False) - x = torch.randn(1, 32, 56, 56) - x_out = block(x) - assert getattr(block, 'expand_conv', None) is None - assert x_out.shape == torch.Size((1, 16, 56, 56)) - - # Test InvertedResidual forward with GroupNorm - block = InvertedResidual( - 16, 16, 32, norm_cfg=dict(type='GN', num_groups=2)) - x = torch.randn(1, 16, 56, 56) - x_out = block(x) - for m in block.modules(): - if is_norm(m): - assert isinstance(m, GroupNorm) - assert x_out.shape == torch.Size((1, 16, 56, 56)) - - # Test InvertedResidual forward with HSigmoid - block = InvertedResidual(16, 16, 32, act_cfg=dict(type='HSigmoid')) - x = torch.randn(1, 16, 56, 56) - x_out = block(x) - assert x_out.shape == torch.Size((1, 16, 56, 56)) - - # Test InvertedResidual forward with checkpoint - block = InvertedResidual(16, 16, 32, with_cp=True) - x = torch.randn(1, 16, 56, 56) - x_out = block(x) - assert block.with_cp - assert x_out.shape == torch.Size((1, 16, 56, 56)) - - -def test_augments(): - imgs = torch.randn(4, 3, 32, 32) - labels = torch.randint(0, 10, (4, )) - - # Test cutmix - augments_cfg = dict(type='BatchCutMix', alpha=1., num_classes=10, prob=1.) - augs = Augments(augments_cfg) - mixed_imgs, mixed_labels = augs(imgs, labels) - assert mixed_imgs.shape == torch.Size((4, 3, 32, 32)) - assert mixed_labels.shape == torch.Size((4, 10)) - - # Test mixup - augments_cfg = dict(type='BatchMixup', alpha=1., num_classes=10, prob=1.) - augs = Augments(augments_cfg) - mixed_imgs, mixed_labels = augs(imgs, labels) - assert mixed_imgs.shape == torch.Size((4, 3, 32, 32)) - assert mixed_labels.shape == torch.Size((4, 10)) - - # Test cutmixup - augments_cfg = [ - dict(type='BatchCutMix', alpha=1., num_classes=10, prob=0.5), - dict(type='BatchMixup', alpha=1., num_classes=10, prob=0.3) - ] - augs = Augments(augments_cfg) - mixed_imgs, mixed_labels = augs(imgs, labels) - assert mixed_imgs.shape == torch.Size((4, 3, 32, 32)) - assert mixed_labels.shape == torch.Size((4, 10)) - - augments_cfg = [ - dict(type='BatchCutMix', alpha=1., num_classes=10, prob=0.5), - dict(type='BatchMixup', alpha=1., num_classes=10, prob=0.5) - ] - augs = Augments(augments_cfg) - mixed_imgs, mixed_labels = augs(imgs, labels) - assert mixed_imgs.shape == torch.Size((4, 3, 32, 32)) - assert mixed_labels.shape == torch.Size((4, 10)) - - augments_cfg = [ - dict(type='BatchCutMix', alpha=1., num_classes=10, prob=0.5), - dict(type='BatchMixup', alpha=1., num_classes=10, prob=0.3), - dict(type='Identity', num_classes=10, prob=0.2) - ] - augs = Augments(augments_cfg) - mixed_imgs, mixed_labels = augs(imgs, labels) - assert mixed_imgs.shape == torch.Size((4, 3, 32, 32)) - assert mixed_labels.shape == torch.Size((4, 10)) diff --git a/openmmlab_test/mmclassification-speed-benchmark/tests/test_backbones/test_vision_transformer.py b/openmmlab_test/mmclassification-speed-benchmark/tests/test_backbones/test_vision_transformer.py deleted file mode 100644 index 5bbad46d..00000000 --- a/openmmlab_test/mmclassification-speed-benchmark/tests/test_backbones/test_vision_transformer.py +++ /dev/null @@ -1,57 +0,0 @@ -import pytest -import torch -from torch.nn.modules import GroupNorm -from torch.nn.modules.batchnorm import _BatchNorm - -from mmcls.models.backbones import VGG, VisionTransformer - - -def is_norm(modules): - """Check if is one of the norms.""" - if isinstance(modules, (GroupNorm, _BatchNorm)): - return True - return False - - -def check_norm_state(modules, train_state): - """Check if norm layer is in correct train state.""" - for mod in modules: - if isinstance(mod, _BatchNorm): - if mod.training != train_state: - return False - return True - - -def test_vit_backbone(): - with pytest.raises(TypeError): - # pretrained must be a string path - model = VisionTransformer() - model.init_weights(pretrained=0) - - # Test ViT base model with input size of 224 - # and patch size of 16 - model = VisionTransformer() - model.init_weights() - model.train() - - assert check_norm_state(model.modules(), True) - - imgs = torch.randn(1, 3, 224, 224) - feat = model(imgs) - assert feat.shape == torch.Size((1, 768)) - - -def test_vit_hybrid_backbone(): - - # Test VGG11+ViT-B/16 hybrid model - backbone = VGG(11, norm_eval=True) - backbone.init_weights() - model = VisionTransformer(hybrid_backbone=backbone) - model.init_weights() - model.train() - - assert check_norm_state(model.modules(), True) - - imgs = torch.randn(1, 3, 224, 224) - feat = model(imgs) - assert feat.shape == torch.Size((1, 768)) diff --git a/openmmlab_test/mmclassification-speed-benchmark/tests/test_classifiers.py b/openmmlab_test/mmclassification-speed-benchmark/tests/test_classifiers.py deleted file mode 100644 index e7194a76..00000000 --- a/openmmlab_test/mmclassification-speed-benchmark/tests/test_classifiers.py +++ /dev/null @@ -1,221 +0,0 @@ -import torch - -from mmcls.models.classifiers import ImageClassifier - - -def test_image_classifier(): - - # Test mixup in ImageClassifier - model_cfg = dict( - backbone=dict( - type='ResNet_CIFAR', - depth=50, - num_stages=4, - out_indices=(3, ), - style='pytorch'), - neck=dict(type='GlobalAveragePooling'), - head=dict( - type='MultiLabelLinearClsHead', - num_classes=10, - in_channels=2048, - loss=dict(type='CrossEntropyLoss', loss_weight=1.0, - use_soft=True)), - train_cfg=dict( - augments=dict( - type='BatchMixup', alpha=1., num_classes=10, prob=1.))) - img_classifier = ImageClassifier(**model_cfg) - img_classifier.init_weights() - imgs = torch.randn(16, 3, 32, 32) - label = torch.randint(0, 10, (16, )) - - losses = img_classifier.forward_train(imgs, label) - assert losses['loss'].item() > 0 - - # Considering BC-breaking - model_cfg['train_cfg'] = dict(mixup=dict(alpha=1.0, num_classes=10)) - img_classifier = ImageClassifier(**model_cfg) - img_classifier.init_weights() - imgs = torch.randn(16, 3, 32, 32) - label = torch.randint(0, 10, (16, )) - - losses = img_classifier.forward_train(imgs, label) - assert losses['loss'].item() > 0 - - -def test_image_classifier_with_cutmix(): - - # Test cutmix in ImageClassifier - model_cfg = dict( - backbone=dict( - type='ResNet_CIFAR', - depth=50, - num_stages=4, - out_indices=(3, ), - style='pytorch'), - neck=dict(type='GlobalAveragePooling'), - head=dict( - type='MultiLabelLinearClsHead', - num_classes=10, - in_channels=2048, - loss=dict(type='CrossEntropyLoss', loss_weight=1.0, - use_soft=True)), - train_cfg=dict( - augments=dict( - type='BatchCutMix', alpha=1., num_classes=10, prob=1.))) - img_classifier = ImageClassifier(**model_cfg) - img_classifier.init_weights() - imgs = torch.randn(16, 3, 32, 32) - label = torch.randint(0, 10, (16, )) - - losses = img_classifier.forward_train(imgs, label) - assert losses['loss'].item() > 0 - - # Considering BC-breaking - model_cfg['train_cfg'] = dict( - cutmix=dict(alpha=1.0, num_classes=10, cutmix_prob=1.0)) - img_classifier = ImageClassifier(**model_cfg) - img_classifier.init_weights() - imgs = torch.randn(16, 3, 32, 32) - label = torch.randint(0, 10, (16, )) - - losses = img_classifier.forward_train(imgs, label) - assert losses['loss'].item() > 0 - - -def test_image_classifier_with_augments(): - - imgs = torch.randn(16, 3, 32, 32) - label = torch.randint(0, 10, (16, )) - - # Test cutmix and mixup in ImageClassifier - model_cfg = dict( - backbone=dict( - type='ResNet_CIFAR', - depth=50, - num_stages=4, - out_indices=(3, ), - style='pytorch'), - neck=dict(type='GlobalAveragePooling'), - head=dict( - type='MultiLabelLinearClsHead', - num_classes=10, - in_channels=2048, - loss=dict(type='CrossEntropyLoss', loss_weight=1.0, - use_soft=True)), - train_cfg=dict(augments=[ - dict(type='BatchCutMix', alpha=1., num_classes=10, prob=0.5), - dict(type='BatchMixup', alpha=1., num_classes=10, prob=0.3), - dict(type='Identity', num_classes=10, prob=0.2) - ])) - img_classifier = ImageClassifier(**model_cfg) - img_classifier.init_weights() - - losses = img_classifier.forward_train(imgs, label) - assert losses['loss'].item() > 0 - - # Test cutmix with cutmix_minmax in ImageClassifier - model_cfg['train_cfg'] = dict( - augments=dict( - type='BatchCutMix', - alpha=1., - num_classes=10, - prob=1., - cutmix_minmax=[0.2, 0.8])) - img_classifier = ImageClassifier(**model_cfg) - img_classifier.init_weights() - - losses = img_classifier.forward_train(imgs, label) - assert losses['loss'].item() > 0 - - # Test not using cutmix and mixup in ImageClassifier - model_cfg = dict( - backbone=dict( - type='ResNet_CIFAR', - depth=50, - num_stages=4, - out_indices=(3, ), - style='pytorch'), - neck=dict(type='GlobalAveragePooling'), - head=dict( - type='LinearClsHead', - num_classes=10, - in_channels=2048, - loss=dict(type='CrossEntropyLoss', loss_weight=1.0))) - img_classifier = ImageClassifier(**model_cfg) - img_classifier.init_weights() - imgs = torch.randn(16, 3, 32, 32) - label = torch.randint(0, 10, (16, )) - - losses = img_classifier.forward_train(imgs, label) - assert losses['loss'].item() > 0 - - # Test not using cutmix and mixup in ImageClassifier - model_cfg['train_cfg'] = dict(augments=None) - img_classifier = ImageClassifier(**model_cfg) - img_classifier.init_weights() - - losses = img_classifier.forward_train(imgs, label) - assert losses['loss'].item() > 0 - - -def test_image_classifier_with_label_smooth_loss(): - - # Test mixup in ImageClassifier - model_cfg = dict( - backbone=dict( - type='ResNet_CIFAR', - depth=50, - num_stages=4, - out_indices=(3, ), - style='pytorch'), - neck=dict(type='GlobalAveragePooling'), - head=dict( - type='MultiLabelLinearClsHead', - num_classes=10, - in_channels=2048, - loss=dict(type='LabelSmoothLoss', label_smooth_val=0.1)), - train_cfg=dict( - augments=dict( - type='BatchMixup', alpha=1., num_classes=10, prob=1.))) - img_classifier = ImageClassifier(**model_cfg) - img_classifier.init_weights() - imgs = torch.randn(16, 3, 32, 32) - label = torch.randint(0, 10, (16, )) - - losses = img_classifier.forward_train(imgs, label) - assert losses['loss'].item() > 0 - - -def test_image_classifier_vit(): - - model_cfg = dict( - backbone=dict( - type='VisionTransformer', - num_layers=12, - embed_dim=768, - num_heads=12, - img_size=224, - patch_size=16, - in_channels=3, - feedforward_channels=3072, - drop_rate=0.1, - attn_drop_rate=0.), - neck=None, - head=dict( - type='VisionTransformerClsHead', - num_classes=1000, - in_channels=768, - hidden_dim=3072, - loss=dict(type='CrossEntropyLoss', loss_weight=1.0, use_soft=True), - topk=(1, 5), - ), - train_cfg=dict( - augments=dict( - type='BatchMixup', alpha=0.2, num_classes=1000, prob=1.))) - img_classifier = ImageClassifier(**model_cfg) - img_classifier.init_weights() - imgs = torch.randn(2, 3, 224, 224) - label = torch.randint(0, 1000, (2, )) - - losses = img_classifier.forward_train(imgs, label) - assert losses['loss'].item() > 0 diff --git a/openmmlab_test/mmclassification-speed-benchmark/tests/test_dataset.py b/openmmlab_test/mmclassification-speed-benchmark/tests/test_dataset.py deleted file mode 100644 index 4492f3ad..00000000 --- a/openmmlab_test/mmclassification-speed-benchmark/tests/test_dataset.py +++ /dev/null @@ -1,349 +0,0 @@ -import bisect -import math -import random -import string -import tempfile -from collections import defaultdict -from unittest.mock import MagicMock, patch - -import numpy as np -import pytest -import torch - -from mmcls.datasets import (DATASETS, BaseDataset, ClassBalancedDataset, - ConcatDataset, MultiLabelDataset, RepeatDataset) -from mmcls.datasets.utils import check_integrity, rm_suffix - - -@pytest.mark.parametrize( - 'dataset_name', - ['MNIST', 'FashionMNIST', 'CIFAR10', 'CIFAR100', 'ImageNet', 'VOC']) -def test_datasets_override_default(dataset_name): - dataset_class = DATASETS.get(dataset_name) - dataset_class.load_annotations = MagicMock() - - original_classes = dataset_class.CLASSES - - # Test VOC year - if dataset_name == 'VOC': - dataset = dataset_class( - data_prefix='VOC2007', - pipeline=[], - classes=('bus', 'car'), - test_mode=True) - assert dataset.year == 2007 - with pytest.raises(ValueError): - dataset = dataset_class( - data_prefix='VOC', - pipeline=[], - classes=('bus', 'car'), - test_mode=True) - - # Test setting classes as a tuple - dataset = dataset_class( - data_prefix='VOC2007' if dataset_name == 'VOC' else '', - pipeline=[], - classes=('bus', 'car'), - test_mode=True) - assert dataset.CLASSES != original_classes - assert dataset.CLASSES == ('bus', 'car') - - # Test setting classes as a list - dataset = dataset_class( - data_prefix='VOC2007' if dataset_name == 'VOC' else '', - pipeline=[], - classes=['bus', 'car'], - test_mode=True) - assert dataset.CLASSES != original_classes - assert dataset.CLASSES == ['bus', 'car'] - - # Test setting classes through a file - tmp_file = tempfile.NamedTemporaryFile() - with open(tmp_file.name, 'w') as f: - f.write('bus\ncar\n') - dataset = dataset_class( - data_prefix='VOC2007' if dataset_name == 'VOC' else '', - pipeline=[], - classes=tmp_file.name, - test_mode=True) - tmp_file.close() - - assert dataset.CLASSES != original_classes - assert dataset.CLASSES == ['bus', 'car'] - - # Test overriding not a subset - dataset = dataset_class( - data_prefix='VOC2007' if dataset_name == 'VOC' else '', - pipeline=[], - classes=['foo'], - test_mode=True) - assert dataset.CLASSES != original_classes - assert dataset.CLASSES == ['foo'] - - # Test default behavior - dataset = dataset_class( - data_prefix='VOC2007' if dataset_name == 'VOC' else '', pipeline=[]) - - if dataset_name == 'VOC': - assert dataset.data_prefix == 'VOC2007' - else: - assert dataset.data_prefix == '' - assert not dataset.test_mode - assert dataset.ann_file is None - assert dataset.CLASSES == original_classes - - -@patch.multiple(MultiLabelDataset, __abstractmethods__=set()) -@patch.multiple(BaseDataset, __abstractmethods__=set()) -def test_dataset_evaluation(): - # test multi-class single-label evaluation - dataset = BaseDataset(data_prefix='', pipeline=[], test_mode=True) - dataset.data_infos = [ - dict(gt_label=0), - dict(gt_label=0), - dict(gt_label=1), - dict(gt_label=2), - dict(gt_label=1), - dict(gt_label=0) - ] - fake_results = np.array([[0.7, 0, 0.3], [0.5, 0.2, 0.3], [0.4, 0.5, 0.1], - [0, 0, 1], [0, 0, 1], [0, 0, 1]]) - eval_results = dataset.evaluate( - fake_results, - metric=['precision', 'recall', 'f1_score', 'support', 'accuracy'], - metric_options={'topk': 1}) - assert eval_results['precision'] == pytest.approx( - (1 + 1 + 1 / 3) / 3 * 100.0) - assert eval_results['recall'] == pytest.approx( - (2 / 3 + 1 / 2 + 1) / 3 * 100.0) - assert eval_results['f1_score'] == pytest.approx( - (4 / 5 + 2 / 3 + 1 / 2) / 3 * 100.0) - assert eval_results['support'] == 6 - assert eval_results['accuracy'] == pytest.approx(4 / 6 * 100) - - # test input as tensor - fake_results_tensor = torch.from_numpy(fake_results) - eval_results_ = dataset.evaluate( - fake_results_tensor, - metric=['precision', 'recall', 'f1_score', 'support', 'accuracy'], - metric_options={'topk': 1}) - assert eval_results_ == eval_results - - # test thr - eval_results = dataset.evaluate( - fake_results, - metric=['precision', 'recall', 'f1_score', 'accuracy'], - metric_options={ - 'thrs': 0.6, - 'topk': 1 - }) - assert eval_results['precision'] == pytest.approx( - (1 + 0 + 1 / 3) / 3 * 100.0) - assert eval_results['recall'] == pytest.approx((1 / 3 + 0 + 1) / 3 * 100.0) - assert eval_results['f1_score'] == pytest.approx( - (1 / 2 + 0 + 1 / 2) / 3 * 100.0) - assert eval_results['accuracy'] == pytest.approx(2 / 6 * 100) - # thrs must be a float, tuple or None - with pytest.raises(TypeError): - eval_results = dataset.evaluate( - fake_results, - metric=['precision', 'recall', 'f1_score', 'accuracy'], - metric_options={ - 'thrs': 'thr', - 'topk': 1 - }) - - # test topk and thr as tuple - eval_results = dataset.evaluate( - fake_results, - metric=['precision', 'recall', 'f1_score', 'accuracy'], - metric_options={ - 'thrs': (0.5, 0.6), - 'topk': (1, 2) - }) - assert { - 'precision_thr_0.50', 'precision_thr_0.60', 'recall_thr_0.50', - 'recall_thr_0.60', 'f1_score_thr_0.50', 'f1_score_thr_0.60', - 'accuracy_top-1_thr_0.50', 'accuracy_top-1_thr_0.60', - 'accuracy_top-2_thr_0.50', 'accuracy_top-2_thr_0.60' - } == eval_results.keys() - assert type(eval_results['precision_thr_0.50']) == float - assert type(eval_results['recall_thr_0.50']) == float - assert type(eval_results['f1_score_thr_0.50']) == float - assert type(eval_results['accuracy_top-1_thr_0.50']) == float - - eval_results = dataset.evaluate( - fake_results, - metric='accuracy', - metric_options={ - 'thrs': 0.5, - 'topk': (1, 2) - }) - assert {'accuracy_top-1', 'accuracy_top-2'} == eval_results.keys() - assert type(eval_results['accuracy_top-1']) == float - - eval_results = dataset.evaluate( - fake_results, - metric='accuracy', - metric_options={ - 'thrs': (0.5, 0.6), - 'topk': 1 - }) - assert {'accuracy_thr_0.50', 'accuracy_thr_0.60'} == eval_results.keys() - assert type(eval_results['accuracy_thr_0.50']) == float - - # test evaluation results for classes - eval_results = dataset.evaluate( - fake_results, - metric=['precision', 'recall', 'f1_score', 'support'], - metric_options={'average_mode': 'none'}) - assert eval_results['precision'].shape == (3, ) - assert eval_results['recall'].shape == (3, ) - assert eval_results['f1_score'].shape == (3, ) - assert eval_results['support'].shape == (3, ) - - # the average_mode method must be valid - with pytest.raises(ValueError): - eval_results = dataset.evaluate( - fake_results, - metric='precision', - metric_options={'average_mode': 'micro'}) - with pytest.raises(ValueError): - eval_results = dataset.evaluate( - fake_results, - metric='recall', - metric_options={'average_mode': 'micro'}) - with pytest.raises(ValueError): - eval_results = dataset.evaluate( - fake_results, - metric='f1_score', - metric_options={'average_mode': 'micro'}) - with pytest.raises(ValueError): - eval_results = dataset.evaluate( - fake_results, - metric='support', - metric_options={'average_mode': 'micro'}) - - # the metric must be valid for the dataset - with pytest.raises(ValueError): - eval_results = dataset.evaluate(fake_results, metric='map') - - # test multi-label evalutation - dataset = MultiLabelDataset(data_prefix='', pipeline=[], test_mode=True) - dataset.data_infos = [ - dict(gt_label=[1, 1, 0, -1]), - dict(gt_label=[1, 1, 0, -1]), - dict(gt_label=[0, -1, 1, -1]), - dict(gt_label=[0, 1, 0, -1]), - dict(gt_label=[0, 1, 0, -1]), - ] - fake_results = np.array([[0.9, 0.8, 0.3, 0.2], [0.1, 0.2, 0.2, 0.1], - [0.7, 0.5, 0.9, 0.3], [0.8, 0.1, 0.1, 0.2], - [0.8, 0.1, 0.1, 0.2]]) - - # the metric must be valid - with pytest.raises(ValueError): - metric = 'coverage' - dataset.evaluate(fake_results, metric=metric) - # only one metric - metric = 'mAP' - eval_results = dataset.evaluate(fake_results, metric=metric) - assert 'mAP' in eval_results.keys() - assert 'CP' not in eval_results.keys() - - # multiple metrics - metric = ['mAP', 'CR', 'OF1'] - eval_results = dataset.evaluate(fake_results, metric=metric) - assert 'mAP' in eval_results.keys() - assert 'CR' in eval_results.keys() - assert 'OF1' in eval_results.keys() - assert 'CF1' not in eval_results.keys() - - -@patch.multiple(BaseDataset, __abstractmethods__=set()) -def test_dataset_wrapper(): - BaseDataset.CLASSES = ('foo', 'bar') - BaseDataset.__getitem__ = MagicMock(side_effect=lambda idx: idx) - dataset_a = BaseDataset(data_prefix='', pipeline=[], test_mode=True) - len_a = 10 - cat_ids_list_a = [ - np.random.randint(0, 80, num).tolist() - for num in np.random.randint(1, 20, len_a) - ] - dataset_a.data_infos = MagicMock() - dataset_a.data_infos.__len__.return_value = len_a - dataset_a.get_cat_ids = MagicMock( - side_effect=lambda idx: cat_ids_list_a[idx]) - dataset_b = BaseDataset(data_prefix='', pipeline=[], test_mode=True) - len_b = 20 - cat_ids_list_b = [ - np.random.randint(0, 80, num).tolist() - for num in np.random.randint(1, 20, len_b) - ] - dataset_b.data_infos = MagicMock() - dataset_b.data_infos.__len__.return_value = len_b - dataset_b.get_cat_ids = MagicMock( - side_effect=lambda idx: cat_ids_list_b[idx]) - - concat_dataset = ConcatDataset([dataset_a, dataset_b]) - assert concat_dataset[5] == 5 - assert concat_dataset[25] == 15 - assert concat_dataset.get_cat_ids(5) == cat_ids_list_a[5] - assert concat_dataset.get_cat_ids(25) == cat_ids_list_b[15] - assert len(concat_dataset) == len(dataset_a) + len(dataset_b) - assert concat_dataset.CLASSES == BaseDataset.CLASSES - - repeat_dataset = RepeatDataset(dataset_a, 10) - assert repeat_dataset[5] == 5 - assert repeat_dataset[15] == 5 - assert repeat_dataset[27] == 7 - assert repeat_dataset.get_cat_ids(5) == cat_ids_list_a[5] - assert repeat_dataset.get_cat_ids(15) == cat_ids_list_a[5] - assert repeat_dataset.get_cat_ids(27) == cat_ids_list_a[7] - assert len(repeat_dataset) == 10 * len(dataset_a) - assert repeat_dataset.CLASSES == BaseDataset.CLASSES - - category_freq = defaultdict(int) - for cat_ids in cat_ids_list_a: - cat_ids = set(cat_ids) - for cat_id in cat_ids: - category_freq[cat_id] += 1 - for k, v in category_freq.items(): - category_freq[k] = v / len(cat_ids_list_a) - - mean_freq = np.mean(list(category_freq.values())) - repeat_thr = mean_freq - - category_repeat = { - cat_id: max(1.0, math.sqrt(repeat_thr / cat_freq)) - for cat_id, cat_freq in category_freq.items() - } - - repeat_factors = [] - for cat_ids in cat_ids_list_a: - cat_ids = set(cat_ids) - repeat_factor = max({category_repeat[cat_id] for cat_id in cat_ids}) - repeat_factors.append(math.ceil(repeat_factor)) - repeat_factors_cumsum = np.cumsum(repeat_factors) - repeat_factor_dataset = ClassBalancedDataset(dataset_a, repeat_thr) - assert repeat_factor_dataset.CLASSES == BaseDataset.CLASSES - assert len(repeat_factor_dataset) == repeat_factors_cumsum[-1] - for idx in np.random.randint(0, len(repeat_factor_dataset), 3): - assert repeat_factor_dataset[idx] == bisect.bisect_right( - repeat_factors_cumsum, idx) - - -def test_dataset_utils(): - # test rm_suffix - assert rm_suffix('a.jpg') == 'a' - assert rm_suffix('a.bak.jpg') == 'a.bak' - assert rm_suffix('a.bak.jpg', suffix='.jpg') == 'a.bak' - assert rm_suffix('a.bak.jpg', suffix='.bak.jpg') == 'a' - - # test check_integrity - rand_file = ''.join(random.sample(string.ascii_letters, 10)) - assert not check_integrity(rand_file, md5=None) - assert not check_integrity(rand_file, md5=2333) - tmp_file = tempfile.NamedTemporaryFile() - assert check_integrity(tmp_file.name, md5=None) - assert not check_integrity(tmp_file.name, md5=2333) diff --git a/openmmlab_test/mmclassification-speed-benchmark/tests/test_heads.py b/openmmlab_test/mmclassification-speed-benchmark/tests/test_heads.py deleted file mode 100644 index 0e7dcad1..00000000 --- a/openmmlab_test/mmclassification-speed-benchmark/tests/test_heads.py +++ /dev/null @@ -1,50 +0,0 @@ -import torch - -from mmcls.models.heads import (ClsHead, LinearClsHead, MultiLabelClsHead, - MultiLabelLinearClsHead) - - -def test_cls_head(): - - # test ClsHead with cal_acc=False - head = ClsHead() - fake_cls_score = torch.rand(4, 3) - fake_gt_label = torch.randint(0, 2, (4, )) - - losses = head.loss(fake_cls_score, fake_gt_label) - assert losses['loss'].item() > 0 - - # test ClsHead with cal_acc=True - head = ClsHead(cal_acc=True) - fake_cls_score = torch.rand(4, 3) - fake_gt_label = torch.randint(0, 2, (4, )) - - losses = head.loss(fake_cls_score, fake_gt_label) - assert losses['loss'].item() > 0 - - # test LinearClsHead - head = LinearClsHead(10, 100) - fake_cls_score = torch.rand(4, 10) - fake_gt_label = torch.randint(0, 10, (4, )) - - losses = head.loss(fake_cls_score, fake_gt_label) - assert losses['loss'].item() > 0 - - -def test_multilabel_head(): - head = MultiLabelClsHead() - fake_cls_score = torch.rand(4, 3) - fake_gt_label = torch.randint(0, 2, (4, 3)) - - losses = head.loss(fake_cls_score, fake_gt_label) - assert losses['loss'].item() > 0 - - -def test_multilabel_linear_head(): - head = MultiLabelLinearClsHead(3, 5) - fake_cls_score = torch.rand(4, 3) - fake_gt_label = torch.randint(0, 2, (4, 3)) - - head.init_weights() - losses = head.loss(fake_cls_score, fake_gt_label) - assert losses['loss'].item() > 0 diff --git a/openmmlab_test/mmclassification-speed-benchmark/tests/test_losses.py b/openmmlab_test/mmclassification-speed-benchmark/tests/test_losses.py deleted file mode 100644 index fdc7c276..00000000 --- a/openmmlab_test/mmclassification-speed-benchmark/tests/test_losses.py +++ /dev/null @@ -1,207 +0,0 @@ -import pytest -import torch - -from mmcls.models import build_loss - - -def test_asymmetric_loss(): - # test asymmetric_loss - cls_score = torch.Tensor([[5, -5, 0], [5, -5, 0]]) - label = torch.Tensor([[1, 0, 1], [0, 1, 0]]) - weight = torch.tensor([0.5, 0.5]) - - loss_cfg = dict( - type='AsymmetricLoss', - gamma_pos=1.0, - gamma_neg=4.0, - clip=0.05, - reduction='mean', - loss_weight=1.0) - loss = build_loss(loss_cfg) - assert torch.allclose(loss(cls_score, label), torch.tensor(3.80845 / 3)) - - # test asymmetric_loss with weight - assert torch.allclose( - loss(cls_score, label, weight=weight), torch.tensor(3.80845 / 6)) - - # test asymmetric_loss without clip - loss_cfg = dict( - type='AsymmetricLoss', - gamma_pos=1.0, - gamma_neg=4.0, - clip=None, - reduction='mean', - loss_weight=1.0) - loss = build_loss(loss_cfg) - assert torch.allclose(loss(cls_score, label), torch.tensor(5.1186 / 3)) - - -def test_cross_entropy_loss(): - with pytest.raises(AssertionError): - # use_sigmoid and use_soft could not be set simultaneously - loss_cfg = dict( - type='CrossEntropyLoss', use_sigmoid=True, use_soft=True) - loss = build_loss(loss_cfg) - - # test ce_loss - cls_score = torch.Tensor([[100, -100]]) - label = torch.Tensor([1]).long() - weight = torch.tensor(0.5) - - loss_cfg = dict(type='CrossEntropyLoss', reduction='mean', loss_weight=1.0) - loss = build_loss(loss_cfg) - assert torch.allclose(loss(cls_score, label), torch.tensor(200.)) - # test ce_loss with weight - assert torch.allclose( - loss(cls_score, label, weight=weight), torch.tensor(100.)) - - # test bce_loss - cls_score = torch.Tensor([[100, -100], [100, -100]]) - label = torch.Tensor([[1, 0], [0, 1]]) - weight = torch.Tensor([0.5, 0.5]) - - loss_cfg = dict( - type='CrossEntropyLoss', - use_sigmoid=True, - reduction='mean', - loss_weight=1.0) - loss = build_loss(loss_cfg) - assert torch.allclose(loss(cls_score, label), torch.tensor(50.)) - # test ce_loss with weight - assert torch.allclose( - loss(cls_score, label, weight=weight), torch.tensor(25.)) - - # test soft_ce_loss - cls_score = torch.Tensor([[100, -100]]) - label = torch.Tensor([[1, 0], [0, 1]]) - weight = torch.tensor(0.5) - - loss_cfg = dict( - type='CrossEntropyLoss', - use_soft=True, - reduction='mean', - loss_weight=1.0) - loss = build_loss(loss_cfg) - assert torch.allclose(loss(cls_score, label), torch.tensor(100.)) - # test soft_ce_loss with weight - assert torch.allclose( - loss(cls_score, label, weight=weight), torch.tensor(50.)) - - -def test_focal_loss(): - # test focal_loss - cls_score = torch.Tensor([[5, -5, 0], [5, -5, 0]]) - label = torch.Tensor([[1, 0, 1], [0, 1, 0]]) - weight = torch.tensor([0.5, 0.5]) - - loss_cfg = dict( - type='FocalLoss', - gamma=2.0, - alpha=0.25, - reduction='mean', - loss_weight=1.0) - loss = build_loss(loss_cfg) - assert torch.allclose(loss(cls_score, label), torch.tensor(0.8522)) - # test focal_loss with weight - assert torch.allclose( - loss(cls_score, label, weight=weight), torch.tensor(0.8522 / 2)) - - -def test_label_smooth_loss(): - # test label_smooth_val assertion - with pytest.raises(AssertionError): - loss_cfg = dict(type='LabelSmoothLoss', label_smooth_val=1.0) - build_loss(loss_cfg) - - with pytest.raises(AssertionError): - loss_cfg = dict(type='LabelSmoothLoss', label_smooth_val='str') - build_loss(loss_cfg) - - # test reduction assertion - with pytest.raises(AssertionError): - loss_cfg = dict( - type='LabelSmoothLoss', label_smooth_val=0.1, reduction='unknown') - build_loss(loss_cfg) - - # test mode assertion - with pytest.raises(AssertionError): - loss_cfg = dict( - type='LabelSmoothLoss', label_smooth_val=0.1, mode='unknown') - build_loss(loss_cfg) - - # test original mode label smooth loss - cls_score = torch.tensor([[1., -1.]]) - label = torch.tensor([0]) - - loss_cfg = dict( - type='LabelSmoothLoss', - label_smooth_val=0.1, - mode='original', - reduction='mean', - loss_weight=1.0) - loss = build_loss(loss_cfg) - correct = 0.2269 # from timm - assert loss(cls_score, label) - correct <= 0.0001 - - # test classy_vision mode label smooth loss - loss_cfg = dict( - type='LabelSmoothLoss', - label_smooth_val=0.1, - mode='classy_vision', - reduction='mean', - loss_weight=1.0) - loss = build_loss(loss_cfg) - correct = 0.2178 # from ClassyVision - assert loss(cls_score, label) - correct <= 0.0001 - - # test multi_label mode label smooth loss - cls_score = torch.tensor([[1., -1., 1]]) - label = torch.tensor([[1, 0, 1]]) - - loss_cfg = dict( - type='LabelSmoothLoss', - label_smooth_val=0.1, - mode='multi_label', - reduction='mean', - loss_weight=1.0) - loss = build_loss(loss_cfg) - smooth_label = torch.tensor([[0.9, 0.1, 0.9]]) - correct = torch.binary_cross_entropy_with_logits(cls_score, - smooth_label).mean() - assert torch.allclose(loss(cls_score, label), correct) - - # test label linear combination smooth loss - cls_score = torch.tensor([[1., -1., 0.]]) - label1 = torch.tensor([[1., 0., 0.]]) - label2 = torch.tensor([[0., 0., 1.]]) - label_mix = label1 * 0.6 + label2 * 0.4 - - loss_cfg = dict( - type='LabelSmoothLoss', - label_smooth_val=0.1, - mode='original', - reduction='mean', - num_classes=3, - loss_weight=1.0) - loss = build_loss(loss_cfg) - smooth_label1 = loss.original_smooth_label(label1) - smooth_label2 = loss.original_smooth_label(label2) - label_smooth_mix = smooth_label1 * 0.6 + smooth_label2 * 0.4 - correct = (-torch.log_softmax(cls_score, -1) * label_smooth_mix).sum() - - assert loss(cls_score, label_mix) - correct <= 0.0001 - - # test label smooth loss with weight - cls_score = torch.tensor([[1., -1.], [1., -1.]]) - label = torch.tensor([0, 1]) - weight = torch.tensor([0.5, 0.5]) - - loss_cfg = dict( - type='LabelSmoothLoss', - reduction='mean', - label_smooth_val=0.1, - loss_weight=1.0) - loss = build_loss(loss_cfg) - assert torch.allclose( - loss(cls_score, label, weight=weight), - loss(cls_score, label) / 2) diff --git a/openmmlab_test/mmclassification-speed-benchmark/tests/test_metrics.py b/openmmlab_test/mmclassification-speed-benchmark/tests/test_metrics.py deleted file mode 100644 index ee3b7fb3..00000000 --- a/openmmlab_test/mmclassification-speed-benchmark/tests/test_metrics.py +++ /dev/null @@ -1,56 +0,0 @@ -import pytest -import torch - -from mmcls.core import average_performance, mAP - - -def test_mAP(): - target = torch.Tensor([[1, 1, 0, -1], [1, 1, 0, -1], [0, -1, 1, -1], - [0, 1, 0, -1]]) - pred = torch.Tensor([[0.9, 0.8, 0.3, 0.2], [0.1, 0.2, 0.2, 0.1], - [0.7, 0.5, 0.9, 0.3], [0.8, 0.1, 0.1, 0.2]]) - - # target and pred should both be np.ndarray or torch.Tensor - with pytest.raises(TypeError): - target_list = target.tolist() - _ = mAP(pred, target_list) - - # target and pred should be in the same shape - with pytest.raises(AssertionError): - target_shorter = target[:-1] - _ = mAP(pred, target_shorter) - - assert mAP(pred, target) == pytest.approx(68.75, rel=1e-2) - - target_no_difficult = torch.Tensor([[1, 1, 0, 0], [0, 1, 0, 0], - [0, 0, 1, 0], [1, 0, 0, 0]]) - assert mAP(pred, target_no_difficult) == pytest.approx(70.83, rel=1e-2) - - -def test_average_performance(): - target = torch.Tensor([[1, 1, 0, -1], [1, 1, 0, -1], [0, -1, 1, -1], - [0, 1, 0, -1], [0, 1, 0, -1]]) - pred = torch.Tensor([[0.9, 0.8, 0.3, 0.2], [0.1, 0.2, 0.2, 0.1], - [0.7, 0.5, 0.9, 0.3], [0.8, 0.1, 0.1, 0.2], - [0.8, 0.1, 0.1, 0.2]]) - - # target and pred should both be np.ndarray or torch.Tensor - with pytest.raises(TypeError): - target_list = target.tolist() - _ = average_performance(pred, target_list) - - # target and pred should be in the same shape - with pytest.raises(AssertionError): - target_shorter = target[:-1] - _ = average_performance(pred, target_shorter) - - assert average_performance(pred, target) == average_performance( - pred, target, thr=0.5) - assert average_performance(pred, target, thr=0.5, k=2) \ - == average_performance(pred, target, thr=0.5) - assert average_performance( - pred, target, thr=0.3) == pytest.approx( - (31.25, 43.75, 36.46, 33.33, 42.86, 37.50), rel=1e-2) - assert average_performance( - pred, target, k=2) == pytest.approx( - (43.75, 50.00, 46.67, 40.00, 57.14, 47.06), rel=1e-2) diff --git a/openmmlab_test/mmclassification-speed-benchmark/tests/test_neck.py b/openmmlab_test/mmclassification-speed-benchmark/tests/test_neck.py deleted file mode 100644 index c3716db8..00000000 --- a/openmmlab_test/mmclassification-speed-benchmark/tests/test_neck.py +++ /dev/null @@ -1,38 +0,0 @@ -import pytest -import torch - -from mmcls.models.necks import GlobalAveragePooling - - -def test_gap_neck(): - - # test 1d gap_neck - neck = GlobalAveragePooling(dim=1) - # batch_size, num_features, feature_size - fake_input = torch.rand(1, 16, 24) - - output = neck(fake_input) - # batch_size, num_features - assert output.shape == (1, 16) - - # test 1d gap_neck - neck = GlobalAveragePooling(dim=2) - # batch_size, num_features, feature_size(2) - fake_input = torch.rand(1, 16, 24, 24) - - output = neck(fake_input) - # batch_size, num_features - assert output.shape == (1, 16) - - # test 1d gap_neck - neck = GlobalAveragePooling(dim=3) - # batch_size, num_features, feature_size(3) - fake_input = torch.rand(1, 16, 24, 24, 5) - - output = neck(fake_input) - # batch_size, num_features - assert output.shape == (1, 16) - - with pytest.raises(AssertionError): - # dim must in [1, 2, 3] - GlobalAveragePooling(dim='other') diff --git a/openmmlab_test/mmclassification-speed-benchmark/tools/benchmark_regression.py b/openmmlab_test/mmclassification-speed-benchmark/tools/benchmark_regression.py deleted file mode 100644 index 2827d3b0..00000000 --- a/openmmlab_test/mmclassification-speed-benchmark/tools/benchmark_regression.py +++ /dev/null @@ -1,166 +0,0 @@ -import argparse -import copy -import os -import os.path as osp -import time - -import mmcv -import torch -from mmcv import Config, DictAction -from mmcv.runner import get_dist_info, init_dist - -from mmcls import __version__ -from mmcls.apis import set_random_seed, train_model -from mmcls.datasets import build_dataset -from mmcls.models import build_classifier -from mmcls.utils import collect_env, get_root_logger - - -def parse_args(): - parser = argparse.ArgumentParser( - description='Benchmark Regression on mulit models') - parser.add_argument('--configs', nargs='+', help='train config files path') - parser.add_argument('--work-dir', help='the dir to save logs and models') - parser.add_argument( - '--epochs', - type=int, - default=0, - help='how many epochs to train, if 0, use config setting.') - parser.add_argument( - '--no-validate', - action='store_true', - help='whether not to evaluate the checkpoint during training') - group_gpus = parser.add_mutually_exclusive_group() - group_gpus.add_argument('--device', help='device used for training') - group_gpus.add_argument( - '--gpus', - type=int, - help='number of gpus to use ' - '(only applicable to non-distributed training)') - group_gpus.add_argument( - '--gpu-ids', - type=int, - nargs='+', - help='ids of gpus to use ' - '(only applicable to non-distributed training)') - parser.add_argument('--seed', type=int, default=None, help='random seed') - parser.add_argument( - '--deterministic', - action='store_true', - help='whether to set deterministic options for CUDNN backend.') - parser.add_argument( - '--options', nargs='+', action=DictAction, help='arguments in dict') - parser.add_argument( - '--launcher', - choices=['none', 'pytorch', 'slurm', 'mpi'], - default='none', - help='job launcher') - parser.add_argument('--local_rank', type=int, default=0) - args = parser.parse_args() - if 'LOCAL_RANK' not in os.environ: - os.environ['LOCAL_RANK'] = str(args.local_rank) - - return args - - -def main(): - args = parse_args() - dist_inited = False - - for config in args.configs: - cfg = Config.fromfile(config) - if args.options is not None: - cfg.merge_from_dict(args.options) - # set cudnn_benchmark - if cfg.get('cudnn_benchmark', False): - torch.backends.cudnn.benchmark = True - - if args.work_dir is not None: - # update configs according to CLI args if args.work_dir is not None - work_dir_root = args.work_dir - else: - # use config filename as default work_dir if cfg.work_dir is None - work_dir_root = './work_dirs/benchmark_regression' - - cfg.work_dir = osp.join(work_dir_root, - osp.splitext(osp.basename(config))[0]) - - if args.gpu_ids is not None: - cfg.gpu_ids = args.gpu_ids - else: - cfg.gpu_ids = range(1) if args.gpus is None else range(args.gpus) - - if args.epochs > 0: - cfg.runner.max_epochs = args.epochs - - # init distributed env first, since logger depends on the dist info. - if args.launcher == 'none': - distributed = False - elif not dist_inited: - distributed = True - init_dist(args.launcher, **cfg.dist_params) - _, world_size = get_dist_info() - cfg.gpu_ids = range(world_size) - dist_inited = True - - # create work_dir - mmcv.mkdir_or_exist(osp.abspath(cfg.work_dir)) - # dump config - cfg.dump(osp.join(cfg.work_dir, osp.basename(config))) - # init the logger before other steps - timestamp = time.strftime('%Y%m%d_%H%M%S', time.localtime()) - log_file = osp.join(cfg.work_dir, f'{timestamp}.log') - logger = get_root_logger(log_file=log_file, log_level=cfg.log_level) - - # init the meta dict to record some important information such as - # environment info and seed, which will be logged - meta = dict() - # log env info - env_info_dict = collect_env() - env_info = '\n'.join([(f'{k}: {v}') for k, v in env_info_dict.items()]) - dash_line = '-' * 60 + '\n' - logger.info('Environment info:\n' + dash_line + env_info + '\n' + - dash_line) - meta['env_info'] = env_info - - # log some basic info - logger.info(f'Distributed training: {distributed}') - logger.info(f'Config:\n{cfg.pretty_text}') - - # set random seeds - if args.seed is not None: - logger.info(f'Set random seed to {args.seed}, ' - f'deterministic: {args.deterministic}') - set_random_seed(args.seed, deterministic=args.deterministic) - cfg.seed = args.seed - meta['seed'] = args.seed - - model = build_classifier(cfg.model) - model.init_weights() - - datasets = [build_dataset(cfg.data.train)] - if len(cfg.workflow) == 2: - val_dataset = copy.deepcopy(cfg.data.val) - val_dataset.pipeline = cfg.data.train.pipeline - datasets.append(build_dataset(val_dataset)) - if cfg.checkpoint_config is not None: - # save mmcls version, config file content and class names in - # checkpoints as meta data - cfg.checkpoint_config.meta = dict( - mmcls_version=__version__, - config=cfg.pretty_text, - CLASSES=datasets[0].CLASSES) - # add an attribute for visualization convenience - train_model( - model, - datasets, - cfg, - distributed=distributed, - validate=(not args.no_validate), - timestamp=timestamp, - device='cpu' if args.device == 'cpu' else 'cuda', - meta=meta) - - -if __name__ == '__main__': - main() diff --git a/openmmlab_test/mmclassification-speed-benchmark/tools/deployment/test.py b/openmmlab_test/mmclassification-speed-benchmark/tools/deployment/test.py deleted file mode 100644 index b57665c6..00000000 --- a/openmmlab_test/mmclassification-speed-benchmark/tools/deployment/test.py +++ /dev/null @@ -1,115 +0,0 @@ -import argparse -import warnings - -import mmcv -import numpy as np -from mmcv import DictAction -from mmcv.parallel import MMDataParallel - -from mmcls.apis import single_gpu_test -from mmcls.core.export import ONNXRuntimeClassifier, TensorRTClassifier -from mmcls.datasets import build_dataloader, build_dataset - - -def parse_args(): - parser = argparse.ArgumentParser( - description='Test (and eval) an ONNX model using ONNXRuntime.') - parser.add_argument('config', help='model config file') - parser.add_argument('model', help='filename of the input ONNX model') - parser.add_argument( - '--backend', - help='Backend of the model.', - choices=['onnxruntime', 'tensorrt']) - parser.add_argument( - '--out', type=str, help='output result file in pickle format') - parser.add_argument( - '--cfg-options', - nargs='+', - action=DictAction, - help='override some settings in the used config, the key-value pair ' - 'in xxx=yyy format will be merged into config file.') - parser.add_argument( - '--metrics', - type=str, - nargs='+', - help='evaluation metrics, which depends on the dataset, e.g., ' - '"accuracy", "precision", "recall", "f1_score", "support" for single ' - 'label dataset, and "mAP", "CP", "CR", "CF1", "OP", "OR", "OF1" for ' - 'multi-label dataset') - parser.add_argument( - '--metric-options', - nargs='+', - action=DictAction, - default={}, - help='custom options for evaluation, the key-value pair in xxx=yyy ' - 'format will be parsed as a dict metric_options for dataset.evaluate()' - ' function.') - parser.add_argument('--show', action='store_true', help='show results') - parser.add_argument( - '--show-dir', help='directory where painted images will be saved') - args = parser.parse_args() - return args - - -def main(): - args = parse_args() - - if args.out is not None and not args.out.endswith(('.pkl', '.pickle')): - raise ValueError('The output file must be a pkl file.') - - cfg = mmcv.Config.fromfile(args.config) - if args.cfg_options is not None: - cfg.merge_from_dict(args.cfg_options) - - # build dataset and dataloader - dataset = build_dataset(cfg.data.test) - data_loader = build_dataloader( - dataset, - samples_per_gpu=cfg.data.samples_per_gpu, - workers_per_gpu=cfg.data.workers_per_gpu, - shuffle=False, - round_up=False) - - # build onnxruntime model and run inference. - if args.backend == 'onnxruntime': - model = ONNXRuntimeClassifier( - args.model, class_names=dataset.CLASSES, device_id=0) - elif args.backend == 'tensorrt': - model = TensorRTClassifier( - args.model, class_names=dataset.CLASSES, device_id=0) - else: - print('Unknown backend: {}.'.format(args.model)) - exit() - - model = MMDataParallel(model, device_ids=[0]) - model.CLASSES = dataset.CLASSES - outputs = single_gpu_test(model, data_loader, args.show, args.show_dir) - - if args.metrics: - results = dataset.evaluate(outputs, args.metrics, args.metric_options) - for k, v in results.items(): - print(f'\n{k} : {v:.2f}') - else: - warnings.warn('Evaluation metrics are not specified.') - scores = np.vstack(outputs) - pred_score = np.max(scores, axis=1) - pred_label = np.argmax(scores, axis=1) - pred_class = [dataset.CLASSES[lb] for lb in pred_label] - results = { - 'pred_score': pred_score, - 'pred_label': pred_label, - 'pred_class': pred_class - } - if not args.out: - print('\nthe predicted result for the first element is ' - f'pred_score = {pred_score[0]:.2f}, ' - f'pred_label = {pred_label[0]} ' - f'and pred_class = {pred_class[0]}. ' - 'Specify --out to save all results to files.') - if args.out: - print(f'\nwriting results to {args.out}') - mmcv.dump(results, args.out) - - -if __name__ == '__main__': - main() diff --git a/openmmlab_test/mmclassification-speed-benchmark/tools/dist_test.sh b/openmmlab_test/mmclassification-speed-benchmark/tools/dist_test.sh deleted file mode 100644 index 3c74ec6e..00000000 --- a/openmmlab_test/mmclassification-speed-benchmark/tools/dist_test.sh +++ /dev/null @@ -1,10 +0,0 @@ -#!/usr/bin/env bash - -CONFIG=$1 -CHECKPOINT=$2 -GPUS=$3 -PORT=${PORT:-29500} - -PYTHONPATH="$(dirname $0)/..":$PYTHONPATH \ -python -m torch.distributed.launch --nproc_per_node=$GPUS --master_port=$PORT \ - $(dirname "$0")/test.py $CONFIG $CHECKPOINT --launcher pytorch ${@:4} diff --git a/openmmlab_test/mmclassification-speed-benchmark/tools/dist_train.sh b/openmmlab_test/mmclassification-speed-benchmark/tools/dist_train.sh deleted file mode 100644 index 5b43fffb..00000000 --- a/openmmlab_test/mmclassification-speed-benchmark/tools/dist_train.sh +++ /dev/null @@ -1,9 +0,0 @@ -#!/usr/bin/env bash - -CONFIG=$1 -GPUS=$2 -PORT=${PORT:-29500} - -PYTHONPATH="$(dirname $0)/..":$PYTHONPATH \ -python -m torch.distributed.launch --nproc_per_node=$GPUS --master_port=$PORT \ - $(dirname "$0")/train.py $CONFIG --launcher pytorch ${@:3} diff --git a/openmmlab_test/mmclassification-speed-benchmark/tools/publish_model.py b/openmmlab_test/mmclassification-speed-benchmark/tools/publish_model.py deleted file mode 100644 index c20e7e38..00000000 --- a/openmmlab_test/mmclassification-speed-benchmark/tools/publish_model.py +++ /dev/null @@ -1,39 +0,0 @@ -import argparse -import subprocess - -import torch - - -def parse_args(): - parser = argparse.ArgumentParser( - description='Process a checkpoint to be published') - parser.add_argument('in_file', help='input checkpoint filename') - parser.add_argument('out_file', help='output checkpoint filename') - args = parser.parse_args() - return args - - -def process_checkpoint(in_file, out_file): - checkpoint = torch.load(in_file, map_location='cpu') - # remove optimizer for smaller file size - if 'optimizer' in checkpoint: - del checkpoint['optimizer'] - # if it is necessary to remove some sensitive data in checkpoint['meta'], - # add the code here. - torch.save(checkpoint, out_file) - sha = subprocess.check_output(['sha256sum', out_file]).decode() - if out_file.endswith('.pth'): - out_file_name = out_file[:-4] - else: - out_file_name = out_file - final_file = out_file_name + f'-{sha[:8]}.pth' - subprocess.Popen(['mv', out_file, final_file]) - - -def main(): - args = parse_args() - process_checkpoint(args.in_file, args.out_file) - - -if __name__ == '__main__': - main() diff --git a/openmmlab_test/mmclassification-speed-benchmark/tools/test.py b/openmmlab_test/mmclassification-speed-benchmark/tools/test.py deleted file mode 100644 index 0676ad24..00000000 --- a/openmmlab_test/mmclassification-speed-benchmark/tools/test.py +++ /dev/null @@ -1,176 +0,0 @@ -import argparse -import os -import warnings - -import mmcv -import numpy as np -import torch -from mmcv import DictAction -from mmcv.parallel import MMDataParallel, MMDistributedDataParallel -from mmcv.runner import get_dist_info, init_dist, load_checkpoint - -from mmcls.apis import multi_gpu_test, single_gpu_test -from mmcls.datasets import build_dataloader, build_dataset -from mmcls.models import build_classifier - -# TODO import `wrap_fp16_model` from mmcv and delete them from mmcls -try: - from mmcv.runner import wrap_fp16_model -except ImportError: - warnings.warn('wrap_fp16_model from mmcls will be deprecated.' - 'Please install mmcv>=1.1.4.') - from mmcls.core import wrap_fp16_model - - -def parse_args(): - parser = argparse.ArgumentParser(description='mmcls test model') - parser.add_argument('config', help='test config file path') - parser.add_argument('checkpoint', help='checkpoint file') - parser.add_argument('--out', help='output result file') - parser.add_argument( - '--metrics', - type=str, - nargs='+', - help='evaluation metrics, which depends on the dataset, e.g., ' - '"accuracy", "precision", "recall", "f1_score", "support" for single ' - 'label dataset, and "mAP", "CP", "CR", "CF1", "OP", "OR", "OF1" for ' - 'multi-label dataset') - parser.add_argument('--show', action='store_true', help='show results') - parser.add_argument( - '--show-dir', help='directory where painted images will be saved') - parser.add_argument( - '--gpu_collect', - action='store_true', - help='whether to use gpu to collect results') - parser.add_argument('--tmpdir', help='tmp dir for writing some results') - parser.add_argument( - '--options', - nargs='+', - action=DictAction, - help='override some settings in the used config, the key-value pair ' - 'in xxx=yyy format will be merged into config file.') - parser.add_argument( - '--metric-options', - nargs='+', - action=DictAction, - default={}, - help='custom options for evaluation, the key-value pair in xxx=yyy ' - 'format will be parsed as a dict metric_options for dataset.evaluate()' - ' function.') - parser.add_argument( - '--show-options', - nargs='+', - action=DictAction, - help='custom options for show_result. key-value pair in xxx=yyy.' - 'Check available options in `model.show_result`.') - parser.add_argument( - '--launcher', - choices=['none', 'pytorch', 'slurm', 'mpi'], - default='none', - help='job launcher') - parser.add_argument('--local_rank', type=int, default=0) - parser.add_argument( - '--device', - choices=['cpu', 'cuda'], - default='cuda', - help='device used for testing') - args = parser.parse_args() - if 'LOCAL_RANK' not in os.environ: - os.environ['LOCAL_RANK'] = str(args.local_rank) - return args - - -def main(): - args = parse_args() - - cfg = mmcv.Config.fromfile(args.config) - if args.options is not None: - cfg.merge_from_dict(args.options) - # set cudnn_benchmark - if cfg.get('cudnn_benchmark', False): - torch.backends.cudnn.benchmark = True - cfg.model.pretrained = None - cfg.data.test.test_mode = True - - # init distributed env first, since logger depends on the dist info. - if args.launcher == 'none': - distributed = False - else: - distributed = True - init_dist(args.launcher, **cfg.dist_params) - - # build the dataloader - dataset = build_dataset(cfg.data.test) - # the extra round_up data will be removed during gpu/cpu collect - data_loader = build_dataloader( - dataset, - samples_per_gpu=cfg.data.samples_per_gpu, - workers_per_gpu=cfg.data.workers_per_gpu, - dist=distributed, - shuffle=False, - round_up=True) - - # build the model and load checkpoint - model = build_classifier(cfg.model) - fp16_cfg = cfg.get('fp16', None) - if fp16_cfg is not None: - wrap_fp16_model(model) - checkpoint = load_checkpoint(model, args.checkpoint, map_location='cpu') - - if 'CLASSES' in checkpoint.get('meta', {}): - CLASSES = checkpoint['meta']['CLASSES'] - else: - from mmcls.datasets import ImageNet - warnings.simplefilter('once') - warnings.warn('Class names are not saved in the checkpoint\'s ' - 'meta data, use imagenet by default.') - CLASSES = ImageNet.CLASSES - - if not distributed: - if args.device == 'cpu': - model = model.cpu() - else: - model = MMDataParallel(model, device_ids=[0]) - model.CLASSES = CLASSES - show_kwargs = {} if args.show_options is None else args.show_options - outputs = single_gpu_test(model, data_loader, args.show, args.show_dir, - **show_kwargs) - else: - model = MMDistributedDataParallel( - model.cuda(), - device_ids=[torch.cuda.current_device()], - broadcast_buffers=False) - outputs = multi_gpu_test(model, data_loader, args.tmpdir, - args.gpu_collect) - - rank, _ = get_dist_info() - if rank == 0: - if args.metrics: - results = dataset.evaluate(outputs, args.metrics, - args.metric_options) - for k, v in results.items(): - print(f'\n{k} : {v:.2f}') - else: - warnings.warn('Evaluation metrics are not specified.') - scores = np.vstack(outputs) - pred_score = np.max(scores, axis=1) - pred_label = np.argmax(scores, axis=1) - pred_class = [CLASSES[lb] for lb in pred_label] - results = { - 'pred_score': pred_score, - 'pred_label': pred_label, - 'pred_class': pred_class - } - if not args.out: - print('\nthe predicted result for the first element is ' - f'pred_score = {pred_score[0]:.2f}, ' - f'pred_label = {pred_label[0]} ' - f'and pred_class = {pred_class[0]}. ' - 'Specify --out to save all results to files.') - if args.out and rank == 0: - print(f'\nwriting results to {args.out}') - mmcv.dump(results, args.out) - - -if __name__ == '__main__': - main() diff --git a/openmmlab_test/mmclassification-speed-benchmark/tools/train.py b/openmmlab_test/mmclassification-speed-benchmark/tools/train.py deleted file mode 100644 index 34fb8fdb..00000000 --- a/openmmlab_test/mmclassification-speed-benchmark/tools/train.py +++ /dev/null @@ -1,156 +0,0 @@ -import argparse -import copy -import os -import os.path as osp -import time - -import mmcv -import torch -from mmcv import Config, DictAction -from mmcv.runner import get_dist_info, init_dist - -from mmcls import __version__ -from mmcls.apis import set_random_seed, train_model -from mmcls.datasets import build_dataset -from mmcls.models import build_classifier -from mmcls.utils import collect_env, get_root_logger - - -def parse_args(): - parser = argparse.ArgumentParser(description='Train a model') - parser.add_argument('config', help='train config file path') - parser.add_argument('--work-dir', help='the dir to save logs and models') - parser.add_argument( - '--resume-from', help='the checkpoint file to resume from') - parser.add_argument( - '--no-validate', - action='store_true', - help='whether not to evaluate the checkpoint during training') - group_gpus = parser.add_mutually_exclusive_group() - group_gpus.add_argument('--device', help='device used for training') - group_gpus.add_argument( - '--gpus', - type=int, - help='number of gpus to use ' - '(only applicable to non-distributed training)') - group_gpus.add_argument( - '--gpu-ids', - type=int, - nargs='+', - help='ids of gpus to use ' - '(only applicable to non-distributed training)') - parser.add_argument('--seed', type=int, default=None, help='random seed') - parser.add_argument( - '--deterministic', - action='store_true', - help='whether to set deterministic options for CUDNN backend.') - parser.add_argument( - '--options', nargs='+', action=DictAction, help='arguments in dict') - parser.add_argument( - '--launcher', - choices=['none', 'pytorch', 'slurm', 'mpi'], - default='none', - help='job launcher') - parser.add_argument('--local_rank', type=int, default=0) - args = parser.parse_args() - if 'LOCAL_RANK' not in os.environ: - os.environ['LOCAL_RANK'] = str(args.local_rank) - - return args - - -def main(): - args = parse_args() - - cfg = Config.fromfile(args.config) - if args.options is not None: - cfg.merge_from_dict(args.options) - # set cudnn_benchmark - if cfg.get('cudnn_benchmark', False): - torch.backends.cudnn.benchmark = True - - # work_dir is determined in this priority: CLI > segment in file > filename - if args.work_dir is not None: - # update configs according to CLI args if args.work_dir is not None - cfg.work_dir = args.work_dir - elif cfg.get('work_dir', None) is None: - # use config filename as default work_dir if cfg.work_dir is None - cfg.work_dir = osp.join('./work_dirs', - osp.splitext(osp.basename(args.config))[0]) - if args.resume_from is not None: - cfg.resume_from = args.resume_from - if args.gpu_ids is not None: - cfg.gpu_ids = args.gpu_ids - else: - cfg.gpu_ids = range(1) if args.gpus is None else range(args.gpus) - - # init distributed env first, since logger depends on the dist info. - if args.launcher == 'none': - distributed = False - else: - distributed = True - init_dist(args.launcher, **cfg.dist_params) - _, world_size = get_dist_info() - cfg.gpu_ids = range(world_size) - - # create work_dir - mmcv.mkdir_or_exist(osp.abspath(cfg.work_dir)) - # dump config - cfg.dump(osp.join(cfg.work_dir, osp.basename(args.config))) - # init the logger before other steps - timestamp = time.strftime('%Y%m%d_%H%M%S', time.localtime()) - log_file = osp.join(cfg.work_dir, f'{timestamp}.log') - logger = get_root_logger(log_file=log_file, log_level=cfg.log_level) - - # init the meta dict to record some important information such as - # environment info and seed, which will be logged - meta = dict() - # log env info - env_info_dict = collect_env() - env_info = '\n'.join([(f'{k}: {v}') for k, v in env_info_dict.items()]) - dash_line = '-' * 60 + '\n' - logger.info('Environment info:\n' + dash_line + env_info + '\n' + - dash_line) - meta['env_info'] = env_info - - # log some basic info - logger.info(f'Distributed training: {distributed}') - logger.info(f'Config:\n{cfg.pretty_text}') - - # set random seeds - if args.seed is not None: - logger.info(f'Set random seed to {args.seed}, ' - f'deterministic: {args.deterministic}') - set_random_seed(args.seed, deterministic=args.deterministic) - cfg.seed = args.seed - meta['seed'] = args.seed - - model = build_classifier(cfg.model) - model.init_weights() - - datasets = [build_dataset(cfg.data.train)] - if len(cfg.workflow) == 2: - val_dataset = copy.deepcopy(cfg.data.val) - val_dataset.pipeline = cfg.data.train.pipeline - datasets.append(build_dataset(val_dataset)) - if cfg.checkpoint_config is not None: - # save mmcls version, config file content and class names in - # checkpoints as meta data - cfg.checkpoint_config.meta = dict( - mmcls_version=__version__, - config=cfg.pretty_text, - CLASSES=datasets[0].CLASSES) - # add an attribute for visualization convenience - train_model( - model, - datasets, - cfg, - distributed=distributed, - validate=(not args.no_validate), - timestamp=timestamp, - device='cpu' if args.device == 'cpu' else 'cuda', - meta=meta) - - -if __name__ == '__main__': - main() diff --git a/openmmlab_test/mmclassification-speed-benchmark/train.md b/openmmlab_test/mmclassification-speed-benchmark/train.md deleted file mode 100644 index 73c38371..00000000 --- a/openmmlab_test/mmclassification-speed-benchmark/train.md +++ /dev/null @@ -1,258 +0,0 @@ -# MMClassification算例测试 - -## 测试前准备 -### 数据集准备 -使用dummy数据集。 -### 环境部署 -```python -yum install python3 -yum install libquadmath -yum install numactl -yum install openmpi3 -yum install glog -yum install lmdb-libs -yum install opencv-core -yum install opencv -yum install openblas-serial -pip3 install --upgrade pip -pip3 install opencv-python -``` -### 安装python依赖包 -```python -pip3 install torch-1.10.0a0+gitcc7c9c7-cp36-cp36m-linux_x86_64.whl -i https://pypi.tuna.tsinghua.edu.cn/simple -pip3 install torchvision-0.10.0a0+300a8a4-cp36-cp36m-linux_x86_64.whl -i https://pypi.tuna.tsinghua.edu.cn/simple -pip3 install mmcv_full-1.3.16-cp36-cp36m-linux_x86_64.whl -i https://pypi.tuna.tsinghua.edu.cn/simple -mmcls 安装: -cd mmclassification -pip3 install -e . -``` -注:测试不同版本的dtk,需安装对应版本的库whl包,dtk22.04.1使用python3.7,dtk21.10.1使用python3.6 -## ResNet18测试 -### 单卡测试(单精度) -```python -./sing_test.sh configs/speed_test/resnet18_b32x8_imagenet.py -``` -若使用dtk22.04.1测试,需设置`export MIOPEN_FIND_MODE=1,export MIOPEN_USE_APPROXIMATE_PERFORMANCE=0`以下测试均相同. - -#### 参数说明 -configs/speed_test/datasets/imagenet_bs32.py 中batch_size=samples_per_gpu*卡数,性能计算方法:batch_size/time -![1](image/train/1659061854685.png) -#### 性能关注:time -### 多卡测试(单精度) -```python -./multi_test.sh configs/speed_test/resnet18_b32x8_imagenet.py -``` -### 单卡测试(半精度) -```python -./sing_test.sh configs/speed_test/resnet18_b32x8_fp16_imagenet.py -``` -### 多卡测试(半精度) -```python -./multi_test.sh configs/speed_test/resnet18_b32x8_fp16_imagenet.py -``` -## ResNet34测试 -### 单卡测试(单精度) -```python -./sing_test.sh configs/speed_test/resnet34_b32x8_imagenet.py -``` -#### 参数说明 -configs/speed_test/datasets/imagenet_bs32.py 中batch_size=samples_per_gpu*卡数,性能计算方法:batch_size/time -![1659064427635](image/train/1659064427635.png) -#### 性能关注:time -### 多卡测试(单精度) -```python -./multi_test.sh configs/speed_test/resnet34_b32x8_imagenet.py -``` -### 单卡测试(半精度) -```python -./sing_test.sh configs/speed_test/resnet34_b32x8_fp16_imagenet.py -``` -### 多卡测试(半精度) -```python -./multi_test.sh configs/speed_test/resnet34_b32x8_fp16_imagenet.py -``` -## ResNet50测试 -### 单卡测试(单精度) -```python -./sing_test.sh configs/speed_test/resnet50_b32x8_imagenet.py -``` -#### 参数说明 -configs/speed_test/datasets/imagenet_bs32.py 中batch_size=samples_per_gpu*卡数,性能计算方法:batch_size/time -![1659064905610](image/train/1659064905610.png) -#### 性能关注:time -### 多卡测试(单精度) -```python -./multi_test.sh configs/speed_test/resnet50_b32x8_imagenet.py -``` -### 单卡测试(半精度) -```python -./sing_test.sh configs/speed_test/resnet50_b32x8_fp16_imagenet.py -``` -### 多卡测试(半精度) -```python -./multi_test.sh configs/speed_test/resnet50_b32x8_fp16_imagenet.py -``` -## ResNet152测试 -### 单卡测试(单精度) -```python -./sing_test.sh configs/speed_test/resnet152_b32x8_imagenet.py -``` - -#### 参数说明 -configs/speed_test/datasets/imagenet_bs32.py 中batch_size=samples_per_gpu*卡数,性能计算方法:batch_size/time -![1659064905610](image/train/1659064905610.png) -#### 性能关注:time -### 多卡测试(单精度) -```python -./multi_test.sh configs/speed_test/resnet152_b32x8_imagenet.py -``` -### 单卡测试(半精度) -```python -./sing_test.sh configs/speed_test/resnet152_b32x8_fp16_imagenet.py -``` -### 多卡测试(半精度) -```python -./multi_test.sh configs/speed_test/resnet152_b32x8_fp16_imagenet.py -``` -## Vgg11测试 -### 单卡测试(单精度) -```python -./sing_test.sh configs/speed_test/vgg11_b32x8_imagenet.py -``` - -#### 参数说明 -configs/speed_test/datasets/imagenet_bs32.py 中batch_size=samples_per_gpu*卡数,性能计算方法:batch_size/time -![1659064905610](image/train/1659064905610.png) -#### 性能关注:time -### 多卡测试(单精度) -```python -./multi_test.sh configs/speed_test/vgg11_b32x8_imagenet.py -``` -### 单卡测试(半精度) -```python -./sing_test.sh configs/speed_test/vgg11_b32x8_fp16_imagenet.py -``` -### 多卡测试(半精度) -```python -./multi_test.sh configs/speed_test/vgg11_b32x8_fp16_imagenet.py -``` -## SeresNet50测试 -### 单卡测试(单精度) -```python -./sing_test.sh configs/speed_test/seresnet50_b32x8_imagenet.py -``` -#### 参数说明 -configs/speed_test/datasets/imagenet_bs32.py 中batch_size=samples_per_gpu*卡数,性能计算方法:batch_size/time -![1659064905610](image/train/1659064905610.png) -#### 性能关注:time -### 多卡测试(单精度) -```python -./multi_test.sh configs/speed_test/seresnet50_b32x8_imagenet.py -``` -### 单卡测试(半精度) -```python -./sing_test.sh configs/speed_test/seresnet50_b32x8_fp16_imagenet.py -``` -### 多卡测试(半精度) -```python -./multi_test.sh configs/speed_test/seresnet50_b32x8_fp16_imagenet.py -``` -## ResNext50测试 -### 单卡测试(单精度) -```python -./sing_test.sh configs/speed_test/resnext50_32x4d_b32x8_imagenet.py -``` - -#### 参数说明 -configs/speed_test/datasets/imagenet_bs32.py 中batch_size=samples_per_gpu*卡数,性能计算方法:batch_size/time -![1659064905610](image/train/1659064905610.png) -#### 性能关注:time -### 多卡测试(单精度) -```python -./multi_test.sh configs/speed_test/resnext50_32x4d_b32x8_imagenet.py -``` -### 单卡测试(半精度) -```python -./sing_test.sh configs/speed_test/resnext50_32x4d_b32x8_fp16_imagenet.py -``` -### 多卡测试(半精度) -```python -./multi_test.sh configs/speed_test/resnext50_32x4d_b32x8_fp16_imagenet.py -``` -## MobileNet-v2测试 -### 单卡测试(单精度) -```python -./sing_test.sh  configs/speed_test/mobilenet_v2_b32x8_imagenet.py -``` -#### 参数说明 -configs/speed_test/datasets/imagenet_bs32.py 中batch_size=samples_per_gpu*卡数,性能计算方法:batch_size/time -![1659064905610](image/train/1659064905610.png) -#### 性能关注:time -### 多卡测试(单精度) -```python -./multi_test.sh configs/speed_test/mobilenet_v2_b32x8_imagenet.py -``` -### 单卡测试(半精度) -```python -./sing_test.sh configs/speed_test/mobilenet_v2_b32x8_fp16_imagenet.py -``` -### 多卡测试(半精度) -```python -./multi_test.sh configs/speed_test/mobilenet_v2_b32x8_fp16_imagenet.py -``` -## ShuffleNet-v1测试 -### 单卡测试(单精度) -```python -./sing_test.sh  configs/speed_test/shufflenet_v1_1x_b64x16_linearlr_bn_nowd_imagenet.py -``` -#### 参数说明 -configs/speed_test/datasets/imagenet_bs64.py 中batch_size=samples_per_gpu*卡数,性能计算方法:batch_size/time -![1659064905610](image/train/1659064905610.png) -#### 性能关注:time -### 多卡测试(单精度) -```python -./multi_test.sh configs/speed_test/shufflenet_v1_1x_b64x16_linearlr_bn_nowd_imagenet.py -``` -## 单卡测试(半精度) -```python -./sing_test.sh configs/speed_test/shufflenet_v1_1x_b64x16_linearlr_bn_nowd_fp16_imagenet.py -``` -### 多卡测试(半精度) -```python -./multi_test.sh configs/speed_test/shufflenet_v1_1x_b64x16_linearlr_bn_nowd_fp16_imagenet.py -``` -## ShuffleNet-v2测试 -### 单卡测试(单精度) -```python -./sing_test.sh  configs/speed_test/shufflenet_v2_1x_b64x16_linearlr_bn_nowd_imagenet.py -``` - -#### 参数说明 -configs/speed_test/datasets/imagenet_bs64.py 中batch_size=samples_per_gpu*卡数,性能计算方法:batch_size/time -![1659064905610](image/train/1659064905610.png) -#### 性能关注:time -### 多卡测试(单精度) -```python -./multi_test.sh configs/speed_test/shufflenet_v2_1x_b64x16_linearlr_bn_nowd_imagenet.py -``` -### 单卡测试(半精度) -```python -./sing_test.sh configs/speed_test/shufflenet_v2_1x_b64x16_linearlr_bn_nowd_fp16_imagenet.py -``` -### 多卡测试(半精度) -```python -./multi_test.sh configs/speed_test/shufflenet_v2_1x_b64x16_linearlr_bn_nowd_fp16_imagenet.py -``` -## Vgg16测试 -### 单卡测试(单精度) -```python -./sing_test.sh configs/vgg/vgg16_b32x8_imagenet.py -``` -#### 参数说明 -configs/speed_test/datasets/imagenet_bs32.py 中batch_size=samples_per_gpu*卡数,性能计算方法:batch_size/time -![1659064905610](image/train/1659064905610.png) -#### 性能关注:time -### 多卡测试(单精度) -```python -./multi_test.sh configs/vgg/vgg16_b32x8_imagenet.py -``` -- GitLab

+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 literal 0 HcmV?d00001 diff --git a/openmmlab_test/mmclassification-0.24.1/docs/en/_static/image/tools/visualization/lr_schedule1.png b/openmmlab_test/mmclassification-0.24.1/docs/en/_static/image/tools/visualization/lr_schedule1.png new file mode 100644 index 0000000000000000000000000000000000000000..31fca35bb525280af6f83b755aef3f2495f07ed2 GIT binary patch literal 30065 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 JE;56U{Rxs2h5P^j literal 0 HcmV?d00001 diff --git a/openmmlab_test/mmclassification-0.24.1/docs/en/_static/js/custom.js b/openmmlab_test/mmclassification-0.24.1/docs/en/_static/js/custom.js new file mode 100644 index 00000000..44a4057d --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/docs/en/_static/js/custom.js @@ -0,0 +1 @@ +var collapsedSections = ['Model zoo']; diff --git a/openmmlab_test/mmclassification-0.24.1/docs/en/_templates/classtemplate.rst b/openmmlab_test/mmclassification-0.24.1/docs/en/_templates/classtemplate.rst new file mode 100644 index 00000000..4f748423 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/docs/en/_templates/classtemplate.rst @@ -0,0 +1,14 @@ +.. role:: hidden + :class: hidden-section +.. currentmodule:: {{ module }} + + +{{ name | underline}} + +.. autoclass:: {{ name }} + :members: + + +.. + autogenerated from source/_templates/classtemplate.rst + note it does not have :inherited-members: diff --git a/openmmlab_test/mmclassification-0.24.1/docs/en/api/apis.rst b/openmmlab_test/mmclassification-0.24.1/docs/en/api/apis.rst new file mode 100644 index 00000000..67e05b93 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/docs/en/api/apis.rst @@ -0,0 +1,45 @@ +.. role:: hidden + :class: hidden-section + +mmcls.apis +=================================== + +These are some high-level APIs for classification tasks. + +.. contents:: mmcls.apis + :depth: 2 + :local: + :backlinks: top + +.. currentmodule:: mmcls.apis + +Train +------------------ + +.. autosummary:: + :toctree: generated + :nosignatures: + + init_random_seed + set_random_seed + train_model + +Test +------------------ +.. autosummary:: + :toctree: generated + :nosignatures: + + single_gpu_test + multi_gpu_test + +Inference +------------------ + +.. autosummary:: + :toctree: generated + :nosignatures: + + init_model + inference_model + show_result_pyplot diff --git a/openmmlab_test/mmclassification-0.24.1/docs/en/api/core.rst b/openmmlab_test/mmclassification-0.24.1/docs/en/api/core.rst new file mode 100644 index 00000000..83e1dbf4 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/docs/en/api/core.rst @@ -0,0 +1,62 @@ +.. role:: hidden + :class: hidden-section + +mmcls.core +=================================== + +This package includes some runtime components. These components are useful in +classification tasks but not supported by MMCV yet. + +.. note:: + + Some components may be moved to MMCV in the future. + +.. contents:: mmcls.core + :depth: 2 + :local: + :backlinks: top + +.. currentmodule:: mmcls.core + +Evaluation +------------------ + +Evaluation metrics calculation functions + +.. autosummary:: + :toctree: generated + :nosignatures: + + precision + recall + f1_score + precision_recall_f1 + average_precision + mAP + support + average_performance + calculate_confusion_matrix + +Hook +------------------ + +.. autosummary:: + :toctree: generated + :nosignatures: + :template: classtemplate.rst + + ClassNumCheckHook + PreciseBNHook + CosineAnnealingCooldownLrUpdaterHook + MMClsWandbHook + + +Optimizers +------------------ + +.. autosummary:: + :toctree: generated + :nosignatures: + :template: classtemplate.rst + + Lamb diff --git a/openmmlab_test/mmclassification-0.24.1/docs/en/api/datasets.rst b/openmmlab_test/mmclassification-0.24.1/docs/en/api/datasets.rst new file mode 100644 index 00000000..640ce1ad --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/docs/en/api/datasets.rst @@ -0,0 +1,61 @@ +.. role:: hidden + :class: hidden-section + +mmcls.datasets +=================================== + +The ``datasets`` package contains several usual datasets for image classification tasks and some dataset wrappers. + +.. currentmodule:: mmcls.datasets + +Custom Dataset +-------------- + +.. autoclass:: CustomDataset + +ImageNet +-------- + +.. autoclass:: ImageNet + +.. autoclass:: ImageNet21k + +CIFAR +----- + +.. autoclass:: CIFAR10 + +.. autoclass:: CIFAR100 + +MNIST +----- + +.. autoclass:: MNIST + +.. autoclass:: FashionMNIST + +VOC +--- + +.. autoclass:: VOC + +StanfordCars Cars +----------------- + +.. autoclass:: StanfordCars + +Base classes +------------ + +.. autoclass:: BaseDataset + +.. autoclass:: MultiLabelDataset + +Dataset Wrappers +---------------- + +.. autoclass:: ConcatDataset + +.. autoclass:: RepeatDataset + +.. autoclass:: ClassBalancedDataset diff --git a/openmmlab_test/mmclassification-0.24.1/docs/en/api/models.rst b/openmmlab_test/mmclassification-0.24.1/docs/en/api/models.rst new file mode 100644 index 00000000..0c317916 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/docs/en/api/models.rst @@ -0,0 +1,141 @@ +.. role:: hidden + :class: hidden-section + +mmcls.models +=================================== + +The ``models`` package contains several sub-packages for addressing the different components of a model. + +- :ref:`classifiers`: The top-level module which defines the whole process of a classification model. +- :ref:`backbones`: Usually a feature extraction network, e.g., ResNet, MobileNet. +- :ref:`necks`: The component between backbones and heads, e.g., GlobalAveragePooling. +- :ref:`heads`: The component for specific tasks. In MMClassification, we provides heads for classification. +- :ref:`losses`: Loss functions. + +.. currentmodule:: mmcls.models + +.. autosummary:: + :toctree: generated + :nosignatures: + + build_classifier + build_backbone + build_neck + build_head + build_loss + +.. _classifiers: + +Classifier +------------------ + +.. autosummary:: + :toctree: generated + :nosignatures: + :template: classtemplate.rst + + BaseClassifier + ImageClassifier + +.. _backbones: + +Backbones +------------------ + +.. autosummary:: + :toctree: generated + :nosignatures: + :template: classtemplate.rst + + AlexNet + CSPDarkNet + CSPNet + CSPResNeXt + CSPResNet + Conformer + ConvMixer + ConvNeXt + DenseNet + DistilledVisionTransformer + EfficientNet + HRNet + LeNet5 + MlpMixer + MobileNetV2 + MobileNetV3 + PCPVT + PoolFormer + RegNet + RepMLPNet + RepVGG + Res2Net + ResNeSt + ResNeXt + ResNet + ResNetV1c + ResNetV1d + ResNet_CIFAR + SEResNeXt + SEResNet + SVT + ShuffleNetV1 + ShuffleNetV2 + SwinTransformer + T2T_ViT + TIMMBackbone + TNT + VAN + VGG + VisionTransformer + EfficientFormer + HorNet + +.. _necks: + +Necks +------------------ + +.. autosummary:: + :toctree: generated + :nosignatures: + :template: classtemplate.rst + + GlobalAveragePooling + GeneralizedMeanPooling + HRFuseScales + +.. _heads: + +Heads +------------------ + +.. autosummary:: + :toctree: generated + :nosignatures: + :template: classtemplate.rst + + ClsHead + LinearClsHead + StackedLinearClsHead + MultiLabelClsHead + MultiLabelLinearClsHead + VisionTransformerClsHead + DeiTClsHead + ConformerHead + +.. _losses: + +Losses +------------------ + +.. autosummary:: + :toctree: generated + :nosignatures: + :template: classtemplate.rst + + Accuracy + AsymmetricLoss + CrossEntropyLoss + LabelSmoothLoss + FocalLoss + SeesawLoss diff --git a/openmmlab_test/mmclassification-0.24.1/docs/en/api/models.utils.augment.rst b/openmmlab_test/mmclassification-0.24.1/docs/en/api/models.utils.augment.rst new file mode 100644 index 00000000..54442f71 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/docs/en/api/models.utils.augment.rst @@ -0,0 +1,35 @@ +.. role:: hidden + :class: hidden-section + +Batch Augmentation +=================================== + +Batch augmentation is the augmentation which involve multiple samples, such as Mixup and CutMix. + +In MMClassification, these batch augmentation is used as a part of :ref:`classifiers`. A typical usage is as below: + +.. code-block:: python + + model = dict( + backbone = ..., + neck = ..., + head = ..., + train_cfg=dict(augments=[ + dict(type='BatchMixup', alpha=0.8, prob=0.5, num_classes=num_classes), + dict(type='BatchCutMix', alpha=1.0, prob=0.5, num_classes=num_classes), + ])) + ) + +.. currentmodule:: mmcls.models.utils.augment + +Mixup +----- +.. autoclass:: BatchMixupLayer + +CutMix +------ +.. autoclass:: BatchCutMixLayer + +ResizeMix +--------- +.. autoclass:: BatchResizeMixLayer diff --git a/openmmlab_test/mmclassification-0.24.1/docs/en/api/models.utils.rst b/openmmlab_test/mmclassification-0.24.1/docs/en/api/models.utils.rst new file mode 100644 index 00000000..c9687a72 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/docs/en/api/models.utils.rst @@ -0,0 +1,50 @@ +.. role:: hidden + :class: hidden-section + +mmcls.models.utils +=================================== + +This package includes some helper functions and common components used in various networks. + +.. contents:: mmcls.models.utils + :depth: 2 + :local: + :backlinks: top + +.. currentmodule:: mmcls.models.utils + +Common Components +------------------ + +.. autosummary:: + :toctree: generated + :nosignatures: + :template: classtemplate.rst + + InvertedResidual + SELayer + ShiftWindowMSA + MultiheadAttention + ConditionalPositionEncoding + +Helper Functions +------------------ + +channel_shuffle +^^^^^^^^^^^^^^^ +.. autofunction:: channel_shuffle + +make_divisible +^^^^^^^^^^^^^^ +.. autofunction:: make_divisible + +to_ntuple +^^^^^^^^^^^^^^ +.. autofunction:: to_ntuple +.. autofunction:: to_2tuple +.. autofunction:: to_3tuple +.. autofunction:: to_4tuple + +is_tracing +^^^^^^^^^^^^^^ +.. autofunction:: is_tracing diff --git a/openmmlab_test/mmclassification-0.24.1/docs/en/api/transforms.rst b/openmmlab_test/mmclassification-0.24.1/docs/en/api/transforms.rst new file mode 100644 index 00000000..4a39f082 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/docs/en/api/transforms.rst @@ -0,0 +1,171 @@ +.. role:: hidden + :class: hidden-section + +Data Transformations +*********************************** + +In MMClassification, the data preparation and the dataset is decomposed. The +datasets only define how to get samples' basic information from the file +system. These basic information includes the ground-truth label and raw images +data / the paths of images. + +To prepare the inputs data, we need to do some transformations on these basic +information. These transformations includes loading, preprocessing and +formatting. And a series of data transformations makes up a data pipeline. +Therefore, you can find the a ``pipeline`` argument in the configs of dataset, +for example: + +.. code:: python + + img_norm_cfg = dict( + mean=[123.675, 116.28, 103.53], std=[58.395, 57.12, 57.375], to_rgb=True) + train_pipeline = [ + dict(type='LoadImageFromFile'), + dict(type='RandomResizedCrop', size=224), + dict(type='RandomFlip', flip_prob=0.5, direction='horizontal'), + dict(type='Normalize', **img_norm_cfg), + dict(type='ImageToTensor', keys=['img']), + dict(type='ToTensor', keys=['gt_label']), + dict(type='Collect', keys=['img', 'gt_label']) + ] + test_pipeline = [ + dict(type='LoadImageFromFile'), + dict(type='Resize', size=256), + dict(type='CenterCrop', crop_size=224), + dict(type='Normalize', **img_norm_cfg), + dict(type='ImageToTensor', keys=['img']), + dict(type='Collect', keys=['img']) + ] + + data = dict( + train=dict(..., pipeline=train_pipeline), + val=dict(..., pipeline=test_pipeline), + test=dict(..., pipeline=test_pipeline), + ) + +Every item of a pipeline list is one of the following data transformations class. And if you want to add a custom data transformation class, the tutorial :doc:`Custom Data Pipelines ` will help you. + +.. contents:: mmcls.datasets.pipelines + :depth: 2 + :local: + :backlinks: top + +.. currentmodule:: mmcls.datasets.pipelines + +Loading +======= + +LoadImageFromFile +--------------------- +.. autoclass:: LoadImageFromFile + +Preprocessing and Augmentation +============================== + +CenterCrop +--------------------- +.. autoclass:: CenterCrop + +Lighting +--------------------- +.. autoclass:: Lighting + +Normalize +--------------------- +.. autoclass:: Normalize + +Pad +--------------------- +.. autoclass:: Pad + +Resize +--------------------- +.. autoclass:: Resize + +RandomCrop +--------------------- +.. autoclass:: RandomCrop + +RandomErasing +--------------------- +.. autoclass:: RandomErasing + +RandomFlip +--------------------- +.. autoclass:: RandomFlip + +RandomGrayscale +--------------------- +.. autoclass:: RandomGrayscale + +RandomResizedCrop +--------------------- +.. autoclass:: RandomResizedCrop + +ColorJitter +--------------------- +.. autoclass:: ColorJitter + + +Composed Augmentation +--------------------- +Composed augmentation is a kind of methods which compose a series of data +augmentation transformations, such as ``AutoAugment`` and ``RandAugment``. + +.. autoclass:: AutoAugment + +.. autoclass:: RandAugment + +In composed augmentation, we need to specify several data transformations or +several groups of data transformations (The ``policies`` argument) as the +random sampling space. These data transformations are chosen from the below +table. In addition, we provide some preset policies in `this folder`_. + +.. _this folder: https://github.com/open-mmlab/mmclassification/tree/master/configs/_base_/datasets/pipelines + +.. autosummary:: + :toctree: generated + :nosignatures: + :template: classtemplate.rst + + AutoContrast + Brightness + ColorTransform + Contrast + Cutout + Equalize + Invert + Posterize + Rotate + Sharpness + Shear + Solarize + SolarizeAdd + Translate + +Formatting +========== + +Collect +--------------------- +.. autoclass:: Collect + +ImageToTensor +--------------------- +.. autoclass:: ImageToTensor + +ToNumpy +--------------------- +.. autoclass:: ToNumpy + +ToPIL +--------------------- +.. autoclass:: ToPIL + +ToTensor +--------------------- +.. autoclass:: ToTensor + +Transpose +--------------------- +.. autoclass:: Transpose diff --git a/openmmlab_test/mmclassification-0.24.1/docs/en/api/utils.rst b/openmmlab_test/mmclassification-0.24.1/docs/en/api/utils.rst new file mode 100644 index 00000000..206fc82c --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/docs/en/api/utils.rst @@ -0,0 +1,23 @@ +.. role:: hidden + :class: hidden-section + +mmcls.utils +=================================== + +These are some useful help function in the ``utils`` package. + +.. contents:: mmcls.utils + :depth: 1 + :local: + :backlinks: top + +.. currentmodule:: mmcls.utils + +.. autosummary:: + :toctree: generated + :nosignatures: + + collect_env + get_root_logger + load_json_log + setup_multi_processes diff --git a/openmmlab_test/mmclassification-0.24.1/docs/en/changelog.md b/openmmlab_test/mmclassification-0.24.1/docs/en/changelog.md new file mode 100644 index 00000000..c044f4ba --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/docs/en/changelog.md @@ -0,0 +1,718 @@ +# Changelog + +## v0.24.1(31/10/2022) + +### New Features + +- Support mmcls with NPU backend. ([#1072](https://github.com/open-mmlab/mmclassification/pull/1072)) + +### Bug Fixes + +- Fix performance issue in convnext DDP train. ([#1098](https://github.com/open-mmlab/mmclassification/pull/1098)) + +## v0.24.0(30/9/2022) + +### Highlights + +- Support HorNet, EfficientFormerm, SwinTransformer V2 and MViT backbones. +- Support Standford Cars dataset. + +### New Features + +- Support HorNet Backbone. ([#1013](https://github.com/open-mmlab/mmclassification/pull/1013)) +- Support EfficientFormer. ([#954](https://github.com/open-mmlab/mmclassification/pull/954)) +- Support Stanford Cars dataset. ([#893](https://github.com/open-mmlab/mmclassification/pull/893)) +- Support CSRA head. ([#881](https://github.com/open-mmlab/mmclassification/pull/881)) +- Support Swin Transform V2. ([#799](https://github.com/open-mmlab/mmclassification/pull/799)) +- Support MViT and add checkpoints. ([#924](https://github.com/open-mmlab/mmclassification/pull/924)) + +### Improvements + +- \[Improve\] replace loop of progressbar in api/test. ([#878](https://github.com/open-mmlab/mmclassification/pull/878)) +- \[Enhance\] RepVGG for YOLOX-PAI. ([#1025](https://github.com/open-mmlab/mmclassification/pull/1025)) +- \[Enhancement\] Update VAN. ([#1017](https://github.com/open-mmlab/mmclassification/pull/1017)) +- \[Refactor\] Re-write `get_sinusoid_encoding` from third-party implementation. ([#965](https://github.com/open-mmlab/mmclassification/pull/965)) +- \[Improve\] Upgrade onnxsim to v0.4.0. ([#915](https://github.com/open-mmlab/mmclassification/pull/915)) +- \[Improve\] Fixed typo in `RepVGG`. ([#985](https://github.com/open-mmlab/mmclassification/pull/985)) +- \[Improve\] Using `train_step` instead of `forward` in PreciseBNHook ([#964](https://github.com/open-mmlab/mmclassification/pull/964)) +- \[Improve\] Use `forward_dummy` to calculate FLOPS. ([#953](https://github.com/open-mmlab/mmclassification/pull/953)) + +### Bug Fixes + +- Fix warning with `torch.meshgrid`. ([#860](https://github.com/open-mmlab/mmclassification/pull/860)) +- Add matplotlib minimum version requriments. ([#909](https://github.com/open-mmlab/mmclassification/pull/909)) +- val loader should not drop last by default. ([#857](https://github.com/open-mmlab/mmclassification/pull/857)) +- Fix config.device bug in toturial. ([#1059](https://github.com/open-mmlab/mmclassification/pull/1059)) +- Fix attenstion clamp max params ([#1034](https://github.com/open-mmlab/mmclassification/pull/1034)) +- Fix device mismatch in Swin-v2. ([#976](https://github.com/open-mmlab/mmclassification/pull/976)) +- Fix the output position of Swin-Transformer. ([#947](https://github.com/open-mmlab/mmclassification/pull/947)) + +### Docs Update + +- Fix typo in config.md. ([#827](https://github.com/open-mmlab/mmclassification/pull/827)) +- Add version for torchvision to avoide error. ([#903](https://github.com/open-mmlab/mmclassification/pull/903)) +- Fixed typo for `--out-dir` option of analyze_results.py. ([#898](https://github.com/open-mmlab/mmclassification/pull/898)) +- Refine the docstring of RegNet ([#935](https://github.com/open-mmlab/mmclassification/pull/935)) + +## v0.23.2(28/7/2022) + +### New Features + +- Support MPS device. ([#894](https://github.com/open-mmlab/mmclassification/pull/894)) + +### Bug Fixes + +- Fix a bug in Albu which caused crashing. ([#918](https://github.com/open-mmlab/mmclassification/pull/918)) + +## v0.23.1(2/6/2022) + +### New Features + +- Dedicated MMClsWandbHook for MMClassification (Weights and Biases Integration) ([#764](https://github.com/open-mmlab/mmclassification/pull/764)) + +### Improvements + +- Use mdformat instead of markdownlint to format markdown. ([#844](https://github.com/open-mmlab/mmclassification/pull/844)) + +### Bug Fixes + +- Fix wrong `--local_rank`. + +### Docs Update + +- Update install tutorials. ([#854](https://github.com/open-mmlab/mmclassification/pull/854)) +- Fix wrong link in README. ([#835](https://github.com/open-mmlab/mmclassification/pull/835)) + +## v0.23.0(1/5/2022) + +### New Features + +- Support DenseNet. ([#750](https://github.com/open-mmlab/mmclassification/pull/750)) +- Support VAN. ([#739](https://github.com/open-mmlab/mmclassification/pull/739)) + +### Improvements + +- Support training on IPU and add fine-tuning configs of ViT. ([#723](https://github.com/open-mmlab/mmclassification/pull/723)) + +### Docs Update + +- New style API reference, and easier to use! Welcome [view it](https://mmclassification.readthedocs.io/en/master/api/models.html). ([#774](https://github.com/open-mmlab/mmclassification/pull/774)) + +## v0.22.1(15/4/2022) + +### New Features + +- \[Feature\] Support resize relative position embedding in `SwinTransformer`. ([#749](https://github.com/open-mmlab/mmclassification/pull/749)) +- \[Feature\] Add PoolFormer backbone and checkpoints. ([#746](https://github.com/open-mmlab/mmclassification/pull/746)) + +### Improvements + +- \[Enhance\] Improve CPE performance by reduce memory copy. ([#762](https://github.com/open-mmlab/mmclassification/pull/762)) +- \[Enhance\] Add extra dataloader settings in configs. ([#752](https://github.com/open-mmlab/mmclassification/pull/752)) + +## v0.22.0(30/3/2022) + +### Highlights + +- Support a series of CSP Network, such as CSP-ResNet, CSP-ResNeXt and CSP-DarkNet. +- A new `CustomDataset` class to help you build dataset of yourself! +- Support ConvMixer, RepMLP and new dataset - CUB dataset. + +### New Features + +- \[Feature\] Add CSPNet and backbone and checkpoints ([#735](https://github.com/open-mmlab/mmclassification/pull/735)) +- \[Feature\] Add `CustomDataset`. ([#738](https://github.com/open-mmlab/mmclassification/pull/738)) +- \[Feature\] Add diff seeds to diff ranks. ([#744](https://github.com/open-mmlab/mmclassification/pull/744)) +- \[Feature\] Support ConvMixer. ([#716](https://github.com/open-mmlab/mmclassification/pull/716)) +- \[Feature\] Our `dist_train` & `dist_test` tools support distributed training on multiple machines. ([#734](https://github.com/open-mmlab/mmclassification/pull/734)) +- \[Feature\] Add RepMLP backbone and checkpoints. ([#709](https://github.com/open-mmlab/mmclassification/pull/709)) +- \[Feature\] Support CUB dataset. ([#703](https://github.com/open-mmlab/mmclassification/pull/703)) +- \[Feature\] Support ResizeMix. ([#676](https://github.com/open-mmlab/mmclassification/pull/676)) + +### Improvements + +- \[Enhance\] Use `--a-b` instead of `--a_b` in arguments. ([#754](https://github.com/open-mmlab/mmclassification/pull/754)) +- \[Enhance\] Add `get_cat_ids` and `get_gt_labels` to KFoldDataset. ([#721](https://github.com/open-mmlab/mmclassification/pull/721)) +- \[Enhance\] Set torch seed in `worker_init_fn`. ([#733](https://github.com/open-mmlab/mmclassification/pull/733)) + +### Bug Fixes + +- \[Fix\] Fix the discontiguous output feature map of ConvNeXt. ([#743](https://github.com/open-mmlab/mmclassification/pull/743)) + +### Docs Update + +- \[Docs\] Add brief installation steps in README for copy&paste. ([#755](https://github.com/open-mmlab/mmclassification/pull/755)) +- \[Docs\] fix logo url link from mmocr to mmcls. ([#732](https://github.com/open-mmlab/mmclassification/pull/732)) + +## v0.21.0(04/03/2022) + +### Highlights + +- Support ResNetV1c and Wide-ResNet, and provide pre-trained models. +- Support dynamic input shape for ViT-based algorithms. Now our ViT, DeiT, Swin-Transformer and T2T-ViT support forwarding with any input shape. +- Reproduce training results of DeiT. And our DeiT-T and DeiT-S have higher accuracy comparing with the official weights. + +### New Features + +- Add ResNetV1c. ([#692](https://github.com/open-mmlab/mmclassification/pull/692)) +- Support Wide-ResNet. ([#715](https://github.com/open-mmlab/mmclassification/pull/715)) +- Support gem pooling ([#677](https://github.com/open-mmlab/mmclassification/pull/677)) + +### Improvements + +- Reproduce training results of DeiT. ([#711](https://github.com/open-mmlab/mmclassification/pull/711)) +- Add ConvNeXt pretrain models on ImageNet-1k. ([#707](https://github.com/open-mmlab/mmclassification/pull/707)) +- Support dynamic input shape for ViT-based algorithms. ([#706](https://github.com/open-mmlab/mmclassification/pull/706)) +- Add `evaluate` function for ConcatDataset. ([#650](https://github.com/open-mmlab/mmclassification/pull/650)) +- Enhance vis-pipeline tool. ([#604](https://github.com/open-mmlab/mmclassification/pull/604)) +- Return code 1 if scripts runs failed. ([#694](https://github.com/open-mmlab/mmclassification/pull/694)) +- Use PyTorch official `one_hot` to implement `convert_to_one_hot`. ([#696](https://github.com/open-mmlab/mmclassification/pull/696)) +- Add a new pre-commit-hook to automatically add a copyright. ([#710](https://github.com/open-mmlab/mmclassification/pull/710)) +- Add deprecation message for deploy tools. ([#697](https://github.com/open-mmlab/mmclassification/pull/697)) +- Upgrade isort pre-commit hooks. ([#687](https://github.com/open-mmlab/mmclassification/pull/687)) +- Use `--gpu-id` instead of `--gpu-ids` in non-distributed multi-gpu training/testing. ([#688](https://github.com/open-mmlab/mmclassification/pull/688)) +- Remove deprecation. ([#633](https://github.com/open-mmlab/mmclassification/pull/633)) + +### Bug Fixes + +- Fix Conformer forward with irregular input size. ([#686](https://github.com/open-mmlab/mmclassification/pull/686)) +- Add `dist.barrier` to fix a bug in directory checking. ([#666](https://github.com/open-mmlab/mmclassification/pull/666)) + +## v0.20.1(07/02/2022) + +### Bug Fixes + +- Fix the MMCV dependency version. + +## v0.20.0(30/01/2022) + +### Highlights + +- Support K-fold cross-validation. The tutorial will be released later. +- Support HRNet, ConvNeXt, Twins and EfficientNet. +- Support model conversion from PyTorch to Core-ML by a tool. + +### New Features + +- Support K-fold cross-validation. ([#563](https://github.com/open-mmlab/mmclassification/pull/563)) +- Support HRNet and add pre-trained models. ([#660](https://github.com/open-mmlab/mmclassification/pull/660)) +- Support ConvNeXt and add pre-trained models. ([#670](https://github.com/open-mmlab/mmclassification/pull/670)) +- Support Twins and add pre-trained models. ([#642](https://github.com/open-mmlab/mmclassification/pull/642)) +- Support EfficientNet and add pre-trained models.([#649](https://github.com/open-mmlab/mmclassification/pull/649)) +- Support `features_only` option in `TIMMBackbone`. ([#668](https://github.com/open-mmlab/mmclassification/pull/668)) +- Add conversion script from pytorch to Core-ML model. ([#597](https://github.com/open-mmlab/mmclassification/pull/597)) + +### Improvements + +- New-style CPU training and inference. ([#674](https://github.com/open-mmlab/mmclassification/pull/674)) +- Add setup multi-processing both in train and test. ([#671](https://github.com/open-mmlab/mmclassification/pull/671)) +- Rewrite channel split operation in ShufflenetV2. ([#632](https://github.com/open-mmlab/mmclassification/pull/632)) +- Deprecate the support for "python setup.py test". ([#646](https://github.com/open-mmlab/mmclassification/pull/646)) +- Support single-label, softmax, custom eps by asymmetric loss. ([#609](https://github.com/open-mmlab/mmclassification/pull/609)) +- Save class names in best checkpoint created by evaluation hook. ([#641](https://github.com/open-mmlab/mmclassification/pull/641)) + +### Bug Fixes + +- Fix potential unexcepted behaviors if `metric_options` is not specified in multi-label evaluation. ([#647](https://github.com/open-mmlab/mmclassification/pull/647)) +- Fix API changes in `pytorch-grad-cam>=1.3.7`. ([#656](https://github.com/open-mmlab/mmclassification/pull/656)) +- Fix bug which breaks `cal_train_time` in `analyze_logs.py`. ([#662](https://github.com/open-mmlab/mmclassification/pull/662)) + +### Docs Update + +- Update README in configs according to OpenMMLab standard. ([#672](https://github.com/open-mmlab/mmclassification/pull/672)) +- Update installation guide and README. ([#624](https://github.com/open-mmlab/mmclassification/pull/624)) + +## v0.19.0(31/12/2021) + +### Highlights + +- The feature extraction function has been enhanced. See [#593](https://github.com/open-mmlab/mmclassification/pull/593) for more details. +- Provide the high-acc ResNet-50 training settings from [*ResNet strikes back*](https://arxiv.org/abs/2110.00476). +- Reproduce the training accuracy of T2T-ViT & RegNetX, and provide self-training checkpoints. +- Support DeiT & Conformer backbone and checkpoints. +- Provide a CAM visualization tool based on [pytorch-grad-cam](https://github.com/jacobgil/pytorch-grad-cam), and detailed [user guide](https://mmclassification.readthedocs.io/en/latest/tools/visualization.html#class-activation-map-visualization)! + +### New Features + +- Support Precise BN. ([#401](https://github.com/open-mmlab/mmclassification/pull/401)) +- Add CAM visualization tool. ([#577](https://github.com/open-mmlab/mmclassification/pull/577)) +- Repeated Aug and Sampler Registry. ([#588](https://github.com/open-mmlab/mmclassification/pull/588)) +- Add DeiT backbone and checkpoints. ([#576](https://github.com/open-mmlab/mmclassification/pull/576)) +- Support LAMB optimizer. ([#591](https://github.com/open-mmlab/mmclassification/pull/591)) +- Implement the conformer backbone. ([#494](https://github.com/open-mmlab/mmclassification/pull/494)) +- Add the frozen function for Swin Transformer model. ([#574](https://github.com/open-mmlab/mmclassification/pull/574)) +- Support using checkpoint in Swin Transformer to save memory. ([#557](https://github.com/open-mmlab/mmclassification/pull/557)) + +### Improvements + +- \[Reproduction\] Reproduce RegNetX training accuracy. ([#587](https://github.com/open-mmlab/mmclassification/pull/587)) +- \[Reproduction\] Reproduce training results of T2T-ViT. ([#610](https://github.com/open-mmlab/mmclassification/pull/610)) +- \[Enhance\] Provide high-acc training settings of ResNet. ([#572](https://github.com/open-mmlab/mmclassification/pull/572)) +- \[Enhance\] Set a random seed when the user does not set a seed. ([#554](https://github.com/open-mmlab/mmclassification/pull/554)) +- \[Enhance\] Added `NumClassCheckHook` and unit tests. ([#559](https://github.com/open-mmlab/mmclassification/pull/559)) +- \[Enhance\] Enhance feature extraction function. ([#593](https://github.com/open-mmlab/mmclassification/pull/593)) +- \[Enhance\] Improve efficiency of precision, recall, f1_score and support. ([#595](https://github.com/open-mmlab/mmclassification/pull/595)) +- \[Enhance\] Improve accuracy calculation performance. ([#592](https://github.com/open-mmlab/mmclassification/pull/592)) +- \[Refactor\] Refactor `analysis_log.py`. ([#529](https://github.com/open-mmlab/mmclassification/pull/529)) +- \[Refactor\] Use new API of matplotlib to handle blocking input in visualization. ([#568](https://github.com/open-mmlab/mmclassification/pull/568)) +- \[CI\] Cancel previous runs that are not completed. ([#583](https://github.com/open-mmlab/mmclassification/pull/583)) +- \[CI\] Skip build CI if only configs or docs modification. ([#575](https://github.com/open-mmlab/mmclassification/pull/575)) + +### Bug Fixes + +- Fix test sampler bug. ([#611](https://github.com/open-mmlab/mmclassification/pull/611)) +- Try to create a symbolic link, otherwise copy. ([#580](https://github.com/open-mmlab/mmclassification/pull/580)) +- Fix a bug for multiple output in swin transformer. ([#571](https://github.com/open-mmlab/mmclassification/pull/571)) + +### Docs Update + +- Update mmcv, torch, cuda version in Dockerfile and docs. ([#594](https://github.com/open-mmlab/mmclassification/pull/594)) +- Add analysis&misc docs. ([#525](https://github.com/open-mmlab/mmclassification/pull/525)) +- Fix docs build dependency. ([#584](https://github.com/open-mmlab/mmclassification/pull/584)) + +## v0.18.0(30/11/2021) + +### Highlights + +- Support MLP-Mixer backbone and provide pre-trained checkpoints. +- Add a tool to visualize the learning rate curve of the training phase. Welcome to use with the [tutorial](https://mmclassification.readthedocs.io/en/latest/tools/visualization.html#learning-rate-schedule-visualization)! + +### New Features + +- Add MLP Mixer Backbone. ([#528](https://github.com/open-mmlab/mmclassification/pull/528), [#539](https://github.com/open-mmlab/mmclassification/pull/539)) +- Support positive weights in BCE. ([#516](https://github.com/open-mmlab/mmclassification/pull/516)) +- Add a tool to visualize learning rate in each iterations. ([#498](https://github.com/open-mmlab/mmclassification/pull/498)) + +### Improvements + +- Use CircleCI to do unit tests. ([#567](https://github.com/open-mmlab/mmclassification/pull/567)) +- Focal loss for single label tasks. ([#548](https://github.com/open-mmlab/mmclassification/pull/548)) +- Remove useless `import_modules_from_string`. ([#544](https://github.com/open-mmlab/mmclassification/pull/544)) +- Rename config files according to the config name standard. ([#508](https://github.com/open-mmlab/mmclassification/pull/508)) +- Use `reset_classifier` to remove head of timm backbones. ([#534](https://github.com/open-mmlab/mmclassification/pull/534)) +- Support passing arguments to loss from head. ([#523](https://github.com/open-mmlab/mmclassification/pull/523)) +- Refactor `Resize` transform and add `Pad` transform. ([#506](https://github.com/open-mmlab/mmclassification/pull/506)) +- Update mmcv dependency version. ([#509](https://github.com/open-mmlab/mmclassification/pull/509)) + +### Bug Fixes + +- Fix bug when using `ClassBalancedDataset`. ([#555](https://github.com/open-mmlab/mmclassification/pull/555)) +- Fix a bug when using iter-based runner with 'val' workflow. ([#542](https://github.com/open-mmlab/mmclassification/pull/542)) +- Fix interpolation method checking in `Resize`. ([#547](https://github.com/open-mmlab/mmclassification/pull/547)) +- Fix a bug when load checkpoints in mulit-GPUs environment. ([#527](https://github.com/open-mmlab/mmclassification/pull/527)) +- Fix an error on indexing scalar metrics in `analyze_result.py`. ([#518](https://github.com/open-mmlab/mmclassification/pull/518)) +- Fix wrong condition judgment in `analyze_logs.py` and prevent empty curve. ([#510](https://github.com/open-mmlab/mmclassification/pull/510)) + +### Docs Update + +- Fix vit config and model broken links. ([#564](https://github.com/open-mmlab/mmclassification/pull/564)) +- Add abstract and image for every paper. ([#546](https://github.com/open-mmlab/mmclassification/pull/546)) +- Add mmflow and mim in banner and readme. ([#543](https://github.com/open-mmlab/mmclassification/pull/543)) +- Add schedule and runtime tutorial docs. ([#499](https://github.com/open-mmlab/mmclassification/pull/499)) +- Add the top-5 acc in ResNet-CIFAR README. ([#531](https://github.com/open-mmlab/mmclassification/pull/531)) +- Fix TOC of `visualization.md` and add example images. ([#513](https://github.com/open-mmlab/mmclassification/pull/513)) +- Use docs link of other projects and add MMCV docs. ([#511](https://github.com/open-mmlab/mmclassification/pull/511)) + +## v0.17.0(29/10/2021) + +### Highlights + +- Support Tokens-to-Token ViT backbone and Res2Net backbone. Welcome to use! +- Support ImageNet21k dataset. +- Add a pipeline visualization tool. Try it with the [tutorials](https://mmclassification.readthedocs.io/en/latest/tools/visualization.html#pipeline-visualization)! + +### New Features + +- Add Tokens-to-Token ViT backbone and converted checkpoints. ([#467](https://github.com/open-mmlab/mmclassification/pull/467)) +- Add Res2Net backbone and converted weights. ([#465](https://github.com/open-mmlab/mmclassification/pull/465)) +- Support ImageNet21k dataset. ([#461](https://github.com/open-mmlab/mmclassification/pull/461)) +- Support seesaw loss. ([#500](https://github.com/open-mmlab/mmclassification/pull/500)) +- Add a pipeline visualization tool. ([#406](https://github.com/open-mmlab/mmclassification/pull/406)) +- Add a tool to find broken files. ([#482](https://github.com/open-mmlab/mmclassification/pull/482)) +- Add a tool to test TorchServe. ([#468](https://github.com/open-mmlab/mmclassification/pull/468)) + +### Improvements + +- Refator Vision Transformer. ([#395](https://github.com/open-mmlab/mmclassification/pull/395)) +- Use context manager to reuse matplotlib figures. ([#432](https://github.com/open-mmlab/mmclassification/pull/432)) + +### Bug Fixes + +- Remove `DistSamplerSeedHook` if use `IterBasedRunner`. ([#501](https://github.com/open-mmlab/mmclassification/pull/501)) +- Set the priority of `EvalHook` to "LOW" to avoid a bug when using `IterBasedRunner`. ([#488](https://github.com/open-mmlab/mmclassification/pull/488)) +- Fix a wrong parameter of `get_root_logger` in `apis/train.py`. ([#486](https://github.com/open-mmlab/mmclassification/pull/486)) +- Fix version check in dataset builder. ([#474](https://github.com/open-mmlab/mmclassification/pull/474)) + +### Docs Update + +- Add English Colab tutorials and update Chinese Colab tutorials. ([#483](https://github.com/open-mmlab/mmclassification/pull/483), [#497](https://github.com/open-mmlab/mmclassification/pull/497)) +- Add tutuorial for config files. ([#487](https://github.com/open-mmlab/mmclassification/pull/487)) +- Add model-pages in Model Zoo. ([#480](https://github.com/open-mmlab/mmclassification/pull/480)) +- Add code-spell pre-commit hook and fix a large mount of typos. ([#470](https://github.com/open-mmlab/mmclassification/pull/470)) + +## v0.16.0(30/9/2021) + +### Highlights + +- We have improved compatibility with downstream repositories like MMDetection and MMSegmentation. We will add some examples about how to use our backbones in MMDetection. +- Add RepVGG backbone and checkpoints. Welcome to use it! +- Add timm backbones wrapper, now you can simply use backbones of pytorch-image-models in MMClassification! + +### New Features + +- Add RepVGG backbone and checkpoints. ([#414](https://github.com/open-mmlab/mmclassification/pull/414)) +- Add timm backbones wrapper. ([#427](https://github.com/open-mmlab/mmclassification/pull/427)) + +### Improvements + +- Fix TnT compatibility and verbose warning. ([#436](https://github.com/open-mmlab/mmclassification/pull/436)) +- Support setting `--out-items` in `tools/test.py`. ([#437](https://github.com/open-mmlab/mmclassification/pull/437)) +- Add datetime info and saving model using torch\<1.6 format. ([#439](https://github.com/open-mmlab/mmclassification/pull/439)) +- Improve downstream repositories compatibility. ([#421](https://github.com/open-mmlab/mmclassification/pull/421)) +- Rename the option `--options` to `--cfg-options` in some tools. ([#425](https://github.com/open-mmlab/mmclassification/pull/425)) +- Add PyTorch 1.9 and Python 3.9 build workflow, and remove some CI. ([#422](https://github.com/open-mmlab/mmclassification/pull/422)) + +### Bug Fixes + +- Fix format error in `test.py` when metric returns `np.ndarray`. ([#441](https://github.com/open-mmlab/mmclassification/pull/441)) +- Fix `publish_model` bug if no parent of `out_file`. ([#463](https://github.com/open-mmlab/mmclassification/pull/463)) +- Fix num_classes bug in pytorch2onnx.py. ([#458](https://github.com/open-mmlab/mmclassification/pull/458)) +- Fix missing runtime requirement `packaging`. ([#459](https://github.com/open-mmlab/mmclassification/pull/459)) +- Fix saving simplified model bug in ONNX export tool. ([#438](https://github.com/open-mmlab/mmclassification/pull/438)) + +### Docs Update + +- Update `getting_started.md` and `install.md`. And rewrite `finetune.md`. ([#466](https://github.com/open-mmlab/mmclassification/pull/466)) +- Use PyTorch style docs theme. ([#457](https://github.com/open-mmlab/mmclassification/pull/457)) +- Update metafile and Readme. ([#435](https://github.com/open-mmlab/mmclassification/pull/435)) +- Add `CITATION.cff`. ([#428](https://github.com/open-mmlab/mmclassification/pull/428)) + +## v0.15.0(31/8/2021) + +### Highlights + +- Support `hparams` argument in `AutoAugment` and `RandAugment` to provide hyperparameters for sub-policies. +- Support custom squeeze channels in `SELayer`. +- Support classwise weight in losses. + +### New Features + +- Add `hparams` argument in `AutoAugment` and `RandAugment` and some other improvement. ([#398](https://github.com/open-mmlab/mmclassification/pull/398)) +- Support classwise weight in losses. ([#388](https://github.com/open-mmlab/mmclassification/pull/388)) +- Enhance `SELayer` to support custom squeeze channels. ([#417](https://github.com/open-mmlab/mmclassification/pull/417)) + +### Code Refactor + +- Better result visualization. ([#419](https://github.com/open-mmlab/mmclassification/pull/419)) +- Use `post_process` function to handle pred result processing. ([#390](https://github.com/open-mmlab/mmclassification/pull/390)) +- Update `digit_version` function. ([#402](https://github.com/open-mmlab/mmclassification/pull/402)) +- Avoid albumentations to install both opencv and opencv-headless. ([#397](https://github.com/open-mmlab/mmclassification/pull/397)) +- Avoid unnecessary listdir when building ImageNet. ([#396](https://github.com/open-mmlab/mmclassification/pull/396)) +- Use dynamic mmcv download link in TorchServe dockerfile. ([#387](https://github.com/open-mmlab/mmclassification/pull/387)) + +### Docs Improvement + +- Add readme of some algorithms and update meta yml. ([#418](https://github.com/open-mmlab/mmclassification/pull/418)) +- Add Copyright information. ([#413](https://github.com/open-mmlab/mmclassification/pull/413)) +- Fix typo 'metirc'. ([#411](https://github.com/open-mmlab/mmclassification/pull/411)) +- Update QQ group QR code. ([#393](https://github.com/open-mmlab/mmclassification/pull/393)) +- Add PR template and modify issue template. ([#380](https://github.com/open-mmlab/mmclassification/pull/380)) + +## v0.14.0(4/8/2021) + +### Highlights + +- Add transformer-in-transformer backbone and pretrain checkpoints, refers to [the paper](https://arxiv.org/abs/2103.00112). +- Add Chinese colab tutorial. +- Provide dockerfile to build mmcls dev docker image. + +### New Features + +- Add transformer in transformer backbone and pretrain checkpoints. ([#339](https://github.com/open-mmlab/mmclassification/pull/339)) +- Support mim, welcome to use mim to manage your mmcls project. ([#376](https://github.com/open-mmlab/mmclassification/pull/376)) +- Add Dockerfile. ([#365](https://github.com/open-mmlab/mmclassification/pull/365)) +- Add ResNeSt configs. ([#332](https://github.com/open-mmlab/mmclassification/pull/332)) + +### Improvements + +- Use the `presistent_works` option if available, to accelerate training. ([#349](https://github.com/open-mmlab/mmclassification/pull/349)) +- Add Chinese ipynb tutorial. ([#306](https://github.com/open-mmlab/mmclassification/pull/306)) +- Refactor unit tests. ([#321](https://github.com/open-mmlab/mmclassification/pull/321)) +- Support to test mmdet inference with mmcls backbone. ([#343](https://github.com/open-mmlab/mmclassification/pull/343)) +- Use zero as default value of `thrs` in metrics. ([#341](https://github.com/open-mmlab/mmclassification/pull/341)) + +### Bug Fixes + +- Fix ImageNet dataset annotation file parse bug. ([#370](https://github.com/open-mmlab/mmclassification/pull/370)) +- Fix docstring typo and init bug in ShuffleNetV1. ([#374](https://github.com/open-mmlab/mmclassification/pull/374)) +- Use local ATTENTION registry to avoid conflict with other repositories. ([#376](https://github.com/open-mmlab/mmclassification/pull/375)) +- Fix swin transformer config bug. ([#355](https://github.com/open-mmlab/mmclassification/pull/355)) +- Fix `patch_cfg` argument bug in SwinTransformer. ([#368](https://github.com/open-mmlab/mmclassification/pull/368)) +- Fix duplicate `init_weights` call in ViT init function. ([#373](https://github.com/open-mmlab/mmclassification/pull/373)) +- Fix broken `_base_` link in a resnet config. ([#361](https://github.com/open-mmlab/mmclassification/pull/361)) +- Fix vgg-19 model link missing. ([#363](https://github.com/open-mmlab/mmclassification/pull/363)) + +## v0.13.0(3/7/2021) + +- Support Swin-Transformer backbone and add training configs for Swin-Transformer on ImageNet. + +### New Features + +- Support Swin-Transformer backbone and add training configs for Swin-Transformer on ImageNet. (#271) +- Add pretained model of RegNetX. (#269) +- Support adding custom hooks in config file. (#305) +- Improve and add Chinese translation of `CONTRIBUTING.md` and all tools tutorials. (#320) +- Dump config before training. (#282) +- Add torchscript and torchserve deployment tools. (#279, #284) + +### Improvements + +- Improve test tools and add some new tools. (#322) +- Correct MobilenetV3 backbone structure and add pretained models. (#291) +- Refactor `PatchEmbed` and `HybridEmbed` as independent components. (#330) +- Refactor mixup and cutmix as `Augments` to support more functions. (#278) +- Refactor weights initialization method. (#270, #318, #319) +- Refactor `LabelSmoothLoss` to support multiple calculation formulas. (#285) + +### Bug Fixes + +- Fix bug for CPU training. (#286) +- Fix missing test data when `num_imgs` can not be evenly divided by `num_gpus`. (#299) +- Fix build compatible with pytorch v1.3-1.5. (#301) +- Fix `magnitude_std` bug in `RandAugment`. (#309) +- Fix bug when `samples_per_gpu` is 1. (#311) + +## v0.12.0(3/6/2021) + +- Finish adding Chinese tutorials and build Chinese documentation on readthedocs. +- Update ResNeXt checkpoints and ResNet checkpoints on CIFAR. + +### New Features + +- Improve and add Chinese translation of `data_pipeline.md` and `new_modules.md`. (#265) +- Build Chinese translation on readthedocs. (#267) +- Add an argument efficientnet_style to `RandomResizedCrop` and `CenterCrop`. (#268) + +### Improvements + +- Only allow directory operation when rank==0 when testing. (#258) +- Fix typo in `base_head`. (#274) +- Update ResNeXt checkpoints. (#283) + +### Bug Fixes + +- Add attribute `data.test` in MNIST configs. (#264) +- Download CIFAR/MNIST dataset only on rank 0. (#273) +- Fix MMCV version compatibility. (#276) +- Fix CIFAR color channels bug and update checkpoints in model zoo. (#280) + +## v0.11.1(21/5/2021) + +- Refine `new_dataset.md` and add Chinese translation of `finture.md`, `new_dataset.md`. + +### New Features + +- Add `dim` argument for `GlobalAveragePooling`. (#236) +- Add random noise to `RandAugment` magnitude. (#240) +- Refine `new_dataset.md` and add Chinese translation of `finture.md`, `new_dataset.md`. (#243) + +### Improvements + +- Refactor arguments passing for Heads. (#239) +- Allow more flexible `magnitude_range` in `RandAugment`. (#249) +- Inherits MMCV registry so that in the future OpenMMLab repos like MMDet and MMSeg could directly use the backbones supported in MMCls. (#252) + +### Bug Fixes + +- Fix typo in `analyze_results.py`. (#237) +- Fix typo in unittests. (#238) +- Check if specified tmpdir exists when testing to avoid deleting existing data. (#242 & #258) +- Add missing config files in `MANIFEST.in`. (#250 & #255) +- Use temporary directory under shared directory to collect results to avoid unavailability of temporary directory for multi-node testing. (#251) + +## v0.11.0(1/5/2021) + +- Support cutmix trick. +- Support random augmentation. +- Add `tools/deployment/test.py` as a ONNX runtime test tool. +- Support ViT backbone and add training configs for ViT on ImageNet. +- Add Chinese `README.md` and some Chinese tutorials. + +### New Features + +- Support cutmix trick. (#198) +- Add `simplify` option in `pytorch2onnx.py`. (#200) +- Support random augmentation. (#201) +- Add config and checkpoint for training ResNet on CIFAR-100. (#208) +- Add `tools/deployment/test.py` as a ONNX runtime test tool. (#212) +- Support ViT backbone and add training configs for ViT on ImageNet. (#214) +- Add finetuning configs for ViT on ImageNet. (#217) +- Add `device` option to support training on CPU. (#219) +- Add Chinese `README.md` and some Chinese tutorials. (#221) +- Add `metafile.yml` in configs to support interaction with paper with code(PWC) and MMCLI. (#225) +- Upload configs and converted checkpoints for ViT fintuning on ImageNet. (#230) + +### Improvements + +- Fix `LabelSmoothLoss` so that label smoothing and mixup could be enabled at the same time. (#203) +- Add `cal_acc` option in `ClsHead`. (#206) +- Check `CLASSES` in checkpoint to avoid unexpected key error. (#207) +- Check mmcv version when importing mmcls to ensure compatibility. (#209) +- Update `CONTRIBUTING.md` to align with that in MMCV. (#210) +- Change tags to html comments in configs README.md. (#226) +- Clean codes in ViT backbone. (#227) +- Reformat `pytorch2onnx.md` tutorial. (#229) +- Update `setup.py` to support MMCLI. (#232) + +### Bug Fixes + +- Fix missing `cutmix_prob` in ViT configs. (#220) +- Fix backend for resize in ResNeXt configs. (#222) + +## v0.10.0(1/4/2021) + +- Support AutoAugmentation +- Add tutorials for installation and usage. + +### New Features + +- Add `Rotate` pipeline for data augmentation. (#167) +- Add `Invert` pipeline for data augmentation. (#168) +- Add `Color` pipeline for data augmentation. (#171) +- Add `Solarize` and `Posterize` pipeline for data augmentation. (#172) +- Support fp16 training. (#178) +- Add tutorials for installation and basic usage of MMClassification.(#176) +- Support `AutoAugmentation`, `AutoContrast`, `Equalize`, `Contrast`, `Brightness` and `Sharpness` pipelines for data augmentation. (#179) + +### Improvements + +- Support dynamic shape export to onnx. (#175) +- Release training configs and update model zoo for fp16 (#184) +- Use MMCV's EvalHook in MMClassification (#182) + +### Bug Fixes + +- Fix wrong naming in vgg config (#181) + +## v0.9.0(1/3/2021) + +- Implement mixup trick. +- Add a new tool to create TensorRT engine from ONNX, run inference and verify outputs in Python. + +### New Features + +- Implement mixup and provide configs of training ResNet50 using mixup. (#160) +- Add `Shear` pipeline for data augmentation. (#163) +- Add `Translate` pipeline for data augmentation. (#165) +- Add `tools/onnx2tensorrt.py` as a tool to create TensorRT engine from ONNX, run inference and verify outputs in Python. (#153) + +### Improvements + +- Add `--eval-options` in `tools/test.py` to support eval options override, matching the behavior of other open-mmlab projects. (#158) +- Support showing and saving painted results in `mmcls.apis.test` and `tools/test.py`, matching the behavior of other open-mmlab projects. (#162) + +### Bug Fixes + +- Fix configs for VGG, replace checkpoints converted from other repos with the ones trained by ourselves and upload the missing logs in the model zoo. (#161) + +## v0.8.0(31/1/2021) + +- Support multi-label task. +- Support more flexible metrics settings. +- Fix bugs. + +### New Features + +- Add evaluation metrics: mAP, CP, CR, CF1, OP, OR, OF1 for multi-label task. (#123) +- Add BCE loss for multi-label task. (#130) +- Add focal loss for multi-label task. (#131) +- Support PASCAL VOC 2007 dataset for multi-label task. (#134) +- Add asymmetric loss for multi-label task. (#132) +- Add analyze_results.py to select images for success/fail demonstration. (#142) +- Support new metric that calculates the total number of occurrences of each label. (#143) +- Support class-wise evaluation results. (#143) +- Add thresholds in eval_metrics. (#146) +- Add heads and a baseline config for multilabel task. (#145) + +### Improvements + +- Remove the models with 0 checkpoint and ignore the repeated papers when counting papers to gain more accurate model statistics. (#135) +- Add tags in README.md. (#137) +- Fix optional issues in docstring. (#138) +- Update stat.py to classify papers. (#139) +- Fix mismatched columns in README.md. (#150) +- Fix test.py to support more evaluation metrics. (#155) + +### Bug Fixes + +- Fix bug in VGG weight_init. (#140) +- Fix bug in 2 ResNet configs in which outdated heads were used. (#147) +- Fix bug of misordered height and width in `RandomCrop` and `RandomResizedCrop`. (#151) +- Fix missing `meta_keys` in `Collect`. (#149 & #152) + +## v0.7.0(31/12/2020) + +- Add more evaluation metrics. +- Fix bugs. + +### New Features + +- Remove installation of MMCV from requirements. (#90) +- Add 3 evaluation metrics: precision, recall and F-1 score. (#93) +- Allow config override during testing and inference with `--options`. (#91 & #96) + +### Improvements + +- Use `build_runner` to make runners more flexible. (#54) +- Support to get category ids in `BaseDataset`. (#72) +- Allow `CLASSES` override during `BaseDateset` initialization. (#85) +- Allow input image as ndarray during inference. (#87) +- Optimize MNIST config. (#98) +- Add config links in model zoo documentation. (#99) +- Use functions from MMCV to collect environment. (#103) +- Refactor config files so that they are now categorized by methods. (#116) +- Add README in config directory. (#117) +- Add model statistics. (#119) +- Refactor documentation in consistency with other MM repositories. (#126) + +### Bug Fixes + +- Add missing `CLASSES` argument to dataset wrappers. (#66) +- Fix slurm evaluation error during training. (#69) +- Resolve error caused by shape in `Accuracy`. (#104) +- Fix bug caused by extremely insufficient data in distributed sampler.(#108) +- Fix bug in `gpu_ids` in distributed training. (#107) +- Fix bug caused by extremely insufficient data in collect results during testing (#114) + +## v0.6.0(11/10/2020) + +- Support new method: ResNeSt and VGG. +- Support new dataset: CIFAR10. +- Provide new tools to do model inference, model conversion from pytorch to onnx. + +### New Features + +- Add model inference. (#16) +- Add pytorch2onnx. (#20) +- Add PIL backend for transform `Resize`. (#21) +- Add ResNeSt. (#25) +- Add VGG and its pretained models. (#27) +- Add CIFAR10 configs and models. (#38) +- Add albumentations transforms. (#45) +- Visualize results on image demo. (#58) + +### Improvements + +- Replace urlretrieve with urlopen in dataset.utils. (#13) +- Resize image according to its short edge. (#22) +- Update ShuffleNet config. (#31) +- Update pre-trained models for shufflenet_v2, shufflenet_v1, se-resnet50, se-resnet101. (#33) + +### Bug Fixes + +- Fix init_weights in `shufflenet_v2.py`. (#29) +- Fix the parameter `size` in test_pipeline. (#30) +- Fix the parameter in cosine lr schedule. (#32) +- Fix the convert tools for mobilenet_v2. (#34) +- Fix crash in CenterCrop transform when image is greyscale (#40) +- Fix outdated configs. (#53) diff --git a/openmmlab_test/mmclassification-0.24.1/docs/en/compatibility.md b/openmmlab_test/mmclassification-0.24.1/docs/en/compatibility.md new file mode 100644 index 00000000..1affb8e7 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/docs/en/compatibility.md @@ -0,0 +1,8 @@ +# Compatibility of MMClassification 0.x + +## MMClassification 0.20.1 + +### MMCV compatibility + +In Twins backbone, we use the `PatchEmbed` module of MMCV, and this module is added after MMCV 1.4.2. +Therefore, we need to update the mmcv version to 1.4.2. diff --git a/openmmlab_test/mmclassification-0.24.1/docs/en/conf.py b/openmmlab_test/mmclassification-0.24.1/docs/en/conf.py new file mode 100644 index 00000000..301696b3 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/docs/en/conf.py @@ -0,0 +1,238 @@ +# Configuration file for the Sphinx documentation builder. +# +# This file only contains a selection of the most common options. For a full +# list see the documentation: +# https://www.sphinx-doc.org/en/master/usage/configuration.html + +# -- Path setup -------------------------------------------------------------- + +# If extensions (or modules to document with autodoc) are in another directory, +# add these directories to sys.path here. If the directory is relative to the +# documentation root, use os.path.abspath to make it absolute, like shown here. +# +import os +import subprocess +import sys + +import pytorch_sphinx_theme +from sphinx.builders.html import StandaloneHTMLBuilder + +sys.path.insert(0, os.path.abspath('../../')) + +# -- Project information ----------------------------------------------------- + +project = 'MMClassification' +copyright = '2020, OpenMMLab' +author = 'MMClassification Authors' + +# The full version, including alpha/beta/rc tags +version_file = '../../mmcls/version.py' + + +def get_version(): + with open(version_file, 'r') as f: + exec(compile(f.read(), version_file, 'exec')) + return locals()['__version__'] + + +release = get_version() + +# -- General configuration --------------------------------------------------- + +# Add any Sphinx extension module names here, as strings. They can be +# extensions coming with Sphinx (named 'sphinx.ext.*') or your custom +# ones. +extensions = [ + 'sphinx.ext.autodoc', + 'sphinx.ext.autosummary', + 'sphinx.ext.intersphinx', + 'sphinx.ext.napoleon', + 'sphinx.ext.viewcode', + 'myst_parser', + 'sphinx_copybutton', +] + +autodoc_mock_imports = ['mmcv._ext', 'matplotlib'] + +# Add any paths that contain templates here, relative to this directory. +templates_path = ['_templates'] + +# The suffix(es) of source filenames. +# You can specify multiple suffix as a list of string: +# +source_suffix = { + '.rst': 'restructuredtext', + '.md': 'markdown', +} + +language = 'en' + +# The master toctree document. +master_doc = 'index' + +# List of patterns, relative to source directory, that match files and +# directories to ignore when looking for source files. +# This pattern also affects html_static_path and html_extra_path. +exclude_patterns = ['_build', 'Thumbs.db', '.DS_Store'] + +# -- Options for HTML output ------------------------------------------------- + +# The theme to use for HTML and HTML Help pages. See the documentation for +# a list of builtin themes. +# +html_theme = 'pytorch_sphinx_theme' +html_theme_path = [pytorch_sphinx_theme.get_html_theme_path()] + +# Theme options are theme-specific and customize the look and feel of a theme +# further. For a list of options available for each theme, see the +# documentation. +# +html_theme_options = { + 'logo_url': + 'https://mmclassification.readthedocs.io/en/latest/', + 'menu': [ + { + 'name': 'GitHub', + 'url': 'https://github.com/open-mmlab/mmclassification' + }, + { + 'name': + 'Colab Tutorials', + 'children': [ + { + 'name': + 'Train and inference with shell commands', + 'url': + 'https://colab.research.google.com/github/' + 'open-mmlab/mmclassification/blob/master/docs/en/' + 'tutorials/MMClassification_tools.ipynb', + }, + { + 'name': + 'Train and inference with Python APIs', + 'url': + 'https://colab.research.google.com/github/' + 'open-mmlab/mmclassification/blob/master/docs/en/' + 'tutorials/MMClassification_python.ipynb', + }, + ] + }, + ], + # Specify the language of shared menu + 'menu_lang': + 'en' +} + +# Add any paths that contain custom static files (such as style sheets) here, +# relative to this directory. They are copied after the builtin static files, +# so a file named "default.css" will overwrite the builtin "default.css". +html_static_path = ['_static'] +html_css_files = ['css/readthedocs.css'] +html_js_files = ['js/custom.js'] + +# -- Options for HTMLHelp output --------------------------------------------- + +# Output file base name for HTML help builder. +htmlhelp_basename = 'mmclsdoc' + +# -- Options for LaTeX output ------------------------------------------------ + +latex_elements = { + # The paper size ('letterpaper' or 'a4paper'). + # + # 'papersize': 'letterpaper', + + # The font size ('10pt', '11pt' or '12pt'). + # + # 'pointsize': '10pt', + + # Additional stuff for the LaTeX preamble. + # + # 'preamble': '', + 'preamble': + r''' +\hypersetup{unicode=true} +\usepackage{CJKutf8} +\DeclareUnicodeCharacter{00A0}{\nobreakspace} +\DeclareUnicodeCharacter{2203}{\ensuremath{\exists}} +\DeclareUnicodeCharacter{2200}{\ensuremath{\forall}} +\DeclareUnicodeCharacter{2286}{\ensuremath{\subseteq}} +\DeclareUnicodeCharacter{2713}{x} +\DeclareUnicodeCharacter{27FA}{\ensuremath{\Longleftrightarrow}} +\DeclareUnicodeCharacter{221A}{\ensuremath{\sqrt{}}} +\DeclareUnicodeCharacter{221B}{\ensuremath{\sqrt[3]{}}} +\DeclareUnicodeCharacter{2295}{\ensuremath{\oplus}} +\DeclareUnicodeCharacter{2297}{\ensuremath{\otimes}} +\begin{CJK}{UTF8}{gbsn} +\AtEndDocument{\end{CJK}} +''', +} + +# Grouping the document tree into LaTeX files. List of tuples +# (source start file, target name, title, +# author, documentclass [howto, manual, or own class]). +latex_documents = [ + (master_doc, 'mmcls.tex', 'MMClassification Documentation', author, + 'manual'), +] + +# -- Options for manual page output ------------------------------------------ + +# One entry per manual page. List of tuples +# (source start file, name, description, authors, manual section). +man_pages = [(master_doc, 'mmcls', 'MMClassification Documentation', [author], + 1)] + +# -- Options for Texinfo output ---------------------------------------------- + +# Grouping the document tree into Texinfo files. List of tuples +# (source start file, target name, title, author, +# dir menu entry, description, category) +texinfo_documents = [ + (master_doc, 'mmcls', 'MMClassification Documentation', author, 'mmcls', + 'OpenMMLab image classification toolbox and benchmark.', 'Miscellaneous'), +] + +# -- Options for Epub output ------------------------------------------------- + +# Bibliographic Dublin Core info. +epub_title = project + +# The unique identifier of the text. This can be a ISBN number +# or the project homepage. +# +# epub_identifier = '' + +# A unique identification for the text. +# +# epub_uid = '' + +# A list of files that should not be packed into the epub file. +epub_exclude_files = ['search.html'] + +# set priority when building html +StandaloneHTMLBuilder.supported_image_types = [ + 'image/svg+xml', 'image/gif', 'image/png', 'image/jpeg' +] + +# -- Extension configuration ------------------------------------------------- +# Ignore >>> when copying code +copybutton_prompt_text = r'>>> |\.\.\. ' +copybutton_prompt_is_regexp = True +# Auto-generated header anchors +myst_heading_anchors = 3 +# Configuration for intersphinx +intersphinx_mapping = { + 'python': ('https://docs.python.org/3', None), + 'numpy': ('https://numpy.org/doc/stable', None), + 'torch': ('https://pytorch.org/docs/stable/', None), + 'mmcv': ('https://mmcv.readthedocs.io/en/master/', None), +} + + +def builder_inited_handler(app): + subprocess.run(['./stat.py']) + + +def setup(app): + app.connect('builder-inited', builder_inited_handler) diff --git a/openmmlab_test/mmclassification-0.24.1/docs/en/device/npu.md b/openmmlab_test/mmclassification-0.24.1/docs/en/device/npu.md new file mode 100644 index 00000000..281c8f41 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/docs/en/device/npu.md @@ -0,0 +1,34 @@ +# NPU (HUAWEI Ascend) + +## Usage + +Please install MMCV with NPU device support according to {external+mmcv:doc}`the tutorial `. + +Here we use 8 NPUs on your computer to train the model with the following command: + +```shell +bash tools/dist_train.sh configs/cspnet/resnet50_8xb32_in1k.py 8 --device npu +``` + +Also, you can use only one NPU to trian the model with the following command: + +```shell +python tools/train.py configs/cspnet/resnet50_8xb32_in1k.py --device npu +``` + +## Verified Models + +| Model | Top-1 (%) | Top-5 (%) | Config | Download | +| :--------------------------------------------------------: | :-------: | :-------: | :-----------------------------------------------------------: | :-------------------------------------------------------------: | +| [CSPResNeXt50](../papers/cspnet.md) | 77.10 | 93.55 | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/cspnet/cspresnext50_8xb32_in1k.py) | [model](<>) \| [log](https://download.openmmlab.com/mmclassification/v0/device/npu/cspresnext50_8xb32_in1k.log.json) | +| [DenseNet121](../papers/densenet.md) | 72.62 | 91.04 | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/densenet/densenet121_4xb256_in1k.py) | [model](<>) \| [log](https://download.openmmlab.com/mmclassification/v0/device/npu/densenet121_4xb256_in1k.log.json) | +| [EfficientNet-B4(AA + AdvProp)](../papers/efficientnet.md) | 75.55 | 92.86 | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/efficientnet/efficientnet-b4_8xb32-01norm_in1k.py) | [model](<>) \| [log](https://download.openmmlab.com/mmclassification/v0/device/npu/efficientnet-b4_8xb32-01norm_in1k.log.json) | +| [HRNet-W18](../papers/hrnet.md) | 77.01 | 93.46 | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/hrnet/hrnet-w18_4xb32_in1k.py) | [model](<>) \| [log](https://download.openmmlab.com/mmclassification/v0/device/npu/hrnet-w18_4xb32_in1k.log.json) | +| [ResNetV1D-152](../papers/resnet.md) | 77.11 | 94.54 | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/resnet/resnetv1d152_8xb32_in1k.py) | [model](<>) \| [log](<>) | +| [ResNet-50](../papers/resnet.md) | 76.40 | - | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/resnet/resnet50_8xb32_in1k.py) | [model](<>) \| [log](<>) | +| [ResNetXt-32x4d-50](../papers/resnext.md) | 77.55 | 93.75 | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/resnext/resnext50-32x4d_8xb32_in1k.py) | [model](<>) \| [log](https://download.openmmlab.com/mmclassification/v0/device/npu/resnext50-32x4d_8xb32_in1k.log.json) | +| [SE-ResNet-50](../papers/seresnet.md) | 77.64 | 93.76 | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/seresnet/seresnet50_8xb32_in1k.py) | [model](<>) \| [log](https://download.openmmlab.com/mmclassification/v0/device/npu/seresnet50_8xb32_in1k.log.json) | +| [VGG-11](../papers/vgg.md) | 68.92 | 88.83 | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/vgg/vgg11_8xb32_in1k.py) | [model](<>) \| [log](https://download.openmmlab.com/mmclassification/v0/device/npu/vgg11_8xb32_in1k.log.json) | +| [ShuffleNetV2 1.0x](../papers/shufflenet_v2.md) | 69.53 | 88.82 | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/shufflenet_v2/shufflenet-v2-1x_16xb64_in1k.py) | [model](<>) \| [log](https://download.openmmlab.com/mmclassification/v0/device/npu/shufflenet-v2-1x_16xb64_in1k.json) | + +**All above models are provided by Huawei Ascend group.** diff --git a/openmmlab_test/mmclassification-0.24.1/docs/en/docutils.conf b/openmmlab_test/mmclassification-0.24.1/docs/en/docutils.conf new file mode 100644 index 00000000..0c00c846 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/docs/en/docutils.conf @@ -0,0 +1,2 @@ +[html writers] +table_style: colwidths-auto diff --git a/openmmlab_test/mmclassification-0.24.1/docs/en/faq.md b/openmmlab_test/mmclassification-0.24.1/docs/en/faq.md new file mode 100644 index 00000000..81f32c5f --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/docs/en/faq.md @@ -0,0 +1,83 @@ +# Frequently Asked Questions + +We list some common troubles faced by many users and their corresponding +solutions here. Feel free to enrich the list if you find any frequent issues +and have ways to help others to solve them. If the contents here do not cover +your issue, please create an issue using the +[provided templates](https://github.com/open-mmlab/mmclassification/issues/new/choose) +and make sure you fill in all required information in the template. + +## Installation + +- Compatibility issue between MMCV and MMClassification; "AssertionError: + MMCV==xxx is used but incompatible. Please install mmcv>=xxx, \<=xxx." + + Compatible MMClassification and MMCV versions are shown as below. Please + choose the correct version of MMCV to avoid installation issues. + + | MMClassification version | MMCV version | + | :----------------------: | :--------------------: | + | dev | mmcv>=1.7.0, \<1.9.0 | + | 0.24.1 (master) | mmcv>=1.4.2, \<1.9.0 | + | 0.23.2 | mmcv>=1.4.2, \<1.7.0 | + | 0.22.1 | mmcv>=1.4.2, \<1.6.0 | + | 0.21.0 | mmcv>=1.4.2, \<=1.5.0 | + | 0.20.1 | mmcv>=1.4.2, \<=1.5.0 | + | 0.19.0 | mmcv>=1.3.16, \<=1.5.0 | + | 0.18.0 | mmcv>=1.3.16, \<=1.5.0 | + | 0.17.0 | mmcv>=1.3.8, \<=1.5.0 | + | 0.16.0 | mmcv>=1.3.8, \<=1.5.0 | + | 0.15.0 | mmcv>=1.3.8, \<=1.5.0 | + | 0.15.0 | mmcv>=1.3.8, \<=1.5.0 | + | 0.14.0 | mmcv>=1.3.8, \<=1.5.0 | + | 0.13.0 | mmcv>=1.3.8, \<=1.5.0 | + | 0.12.0 | mmcv>=1.3.1, \<=1.5.0 | + | 0.11.1 | mmcv>=1.3.1, \<=1.5.0 | + | 0.11.0 | mmcv>=1.3.0 | + | 0.10.0 | mmcv>=1.3.0 | + | 0.9.0 | mmcv>=1.1.4 | + | 0.8.0 | mmcv>=1.1.4 | + | 0.7.0 | mmcv>=1.1.4 | + | 0.6.0 | mmcv>=1.1.4 | + + ```{note} + Since the `dev` branch is under frequent development, the MMCV + version dependency may be inaccurate. If you encounter problems when using + the `dev` branch, please try to update MMCV to the latest version. + ``` + +- Using Albumentations + + If you would like to use `albumentations`, we suggest using `pip install -r requirements/albu.txt` or + `pip install -U albumentations --no-binary qudida,albumentations`. + + If you simply use `pip install albumentations>=0.3.2`, it will install `opencv-python-headless` simultaneously + (even though you have already installed `opencv-python`). Please refer to the + [official documentation](https://albumentations.ai/docs/getting_started/installation/#note-on-opencv-dependencies) + for details. + +## Coding + +- Do I need to reinstall mmcls after some code modifications? + + If you follow [the best practice](install.md) and install mmcls from source, + any local modifications made to the code will take effect without + reinstallation. + +- How to develop with multiple MMClassification versions? + + Generally speaking, we recommend to use different virtual environments to + manage MMClassification in different working directories. However, you + can also use the same environment to develop MMClassification in different + folders, like mmcls-0.21, mmcls-0.23. When you run the train or test shell script, + it will adopt the mmcls package in the current folder. And when you run other Python + script, you can also add `` PYTHONPATH=`pwd` `` at the beginning of your command + to use the package in the current folder. + + Conversely, to use the default MMClassification installed in the environment + rather than the one you are working with, you can remove the following line + in those shell scripts: + + ```shell + PYTHONPATH="$(dirname $0)/..":$PYTHONPATH + ``` diff --git a/openmmlab_test/mmclassification-0.24.1/docs/en/getting_started.md b/openmmlab_test/mmclassification-0.24.1/docs/en/getting_started.md new file mode 100644 index 00000000..4e8a9fcc --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/docs/en/getting_started.md @@ -0,0 +1,275 @@ +# Getting Started + +This page provides basic tutorials about the usage of MMClassification. + +## Prepare datasets + +It is recommended to symlink the dataset root to `$MMCLASSIFICATION/data`. +If your folder structure is different, you may need to change the corresponding paths in config files. + +``` +mmclassification +├── mmcls +├── tools +├── configs +├── docs +├── data +│ ├── imagenet +│ │ ├── meta +│ │ ├── train +│ │ ├── val +│ ├── cifar +│ │ ├── cifar-10-batches-py +│ ├── mnist +│ │ ├── train-images-idx3-ubyte +│ │ ├── train-labels-idx1-ubyte +│ │ ├── t10k-images-idx3-ubyte +│ │ ├── t10k-labels-idx1-ubyte + +``` + +For ImageNet, it has multiple versions, but the most commonly used one is [ILSVRC 2012](http://www.image-net.org/challenges/LSVRC/2012/). It can be accessed with the following steps. + +1. Register an account and login to the [download page](http://www.image-net.org/download-images). +2. Find download links for ILSVRC2012 and download the following two files + - ILSVRC2012_img_train.tar (~138GB) + - ILSVRC2012_img_val.tar (~6.3GB) +3. Untar the downloaded files +4. Download meta data using this [script](https://github.com/BVLC/caffe/blob/master/data/ilsvrc12/get_ilsvrc_aux.sh) + +For MNIST, CIFAR10 and CIFAR100, the datasets will be downloaded and unzipped automatically if they are not found. + +For using custom datasets, please refer to [Tutorial 3: Customize Dataset](tutorials/new_dataset.md). + +## Inference with pretrained models + +We provide scripts to inference a single image, inference a dataset and test a dataset (e.g., ImageNet). + +### Inference a single image + +```shell +python demo/image_demo.py ${IMAGE_FILE} ${CONFIG_FILE} ${CHECKPOINT_FILE} + +# Example +python demo/image_demo.py demo/demo.JPEG configs/resnet/resnet50_8xb32_in1k.py \ + https://download.openmmlab.com/mmclassification/v0/resnet/resnet50_8xb32_in1k_20210831-ea4938fc.pth +``` + +### Inference and test a dataset + +- single GPU +- CPU +- single node multiple GPU +- multiple node + +You can use the following commands to infer a dataset. + +```shell +# single-gpu +python tools/test.py ${CONFIG_FILE} ${CHECKPOINT_FILE} [--metrics ${METRICS}] [--out ${RESULT_FILE}] + +# CPU: disable GPUs and run single-gpu testing script +export CUDA_VISIBLE_DEVICES=-1 +python tools/test.py ${CONFIG_FILE} ${CHECKPOINT_FILE} [--metrics ${METRICS}] [--out ${RESULT_FILE}] + +# multi-gpu +./tools/dist_test.sh ${CONFIG_FILE} ${CHECKPOINT_FILE} ${GPU_NUM} [--metrics ${METRICS}] [--out ${RESULT_FILE}] + +# multi-node in slurm environment +python tools/test.py ${CONFIG_FILE} ${CHECKPOINT_FILE} [--metrics ${METRICS}] [--out ${RESULT_FILE}] --launcher slurm +``` + +Optional arguments: + +- `RESULT_FILE`: Filename of the output results. If not specified, the results will not be saved to a file. Support formats include json, yaml and pickle. +- `METRICS`:Items to be evaluated on the results, like accuracy, precision, recall, etc. + +Examples: + +Infer ResNet-50 on ImageNet validation set to get predicted labels and their corresponding predicted scores. + +```shell +python tools/test.py configs/resnet/resnet50_8xb16_cifar10.py \ + https://download.openmmlab.com/mmclassification/v0/resnet/resnet50_b16x8_cifar10_20210528-f54bfad9.pth \ + --out result.pkl +``` + +## Train a model + +MMClassification implements distributed training and non-distributed training, +which uses `MMDistributedDataParallel` and `MMDataParallel` respectively. + +All outputs (log files and checkpoints) will be saved to the working directory, +which is specified by `work_dir` in the config file. + +By default we evaluate the model on the validation set after each epoch, you can change the evaluation interval by adding the interval argument in the training config. + +```python +evaluation = dict(interval=12) # Evaluate the model per 12 epochs. +``` + +### Train with a single GPU + +```shell +python tools/train.py ${CONFIG_FILE} [optional arguments] +``` + +If you want to specify the working directory in the command, you can add an argument `--work_dir ${YOUR_WORK_DIR}`. + +### Train with CPU + +The process of training on the CPU is consistent with single GPU training. We just need to disable GPUs before the training process. + +```shell +export CUDA_VISIBLE_DEVICES=-1 +``` + +And then run the script [above](#train-with-a-single-gpu). + +```{warning} +The process of training on the CPU is consistent with single GPU training. We just need to disable GPUs before the training process. +``` + +### Train with multiple GPUs in single machine + +```shell +./tools/dist_train.sh ${CONFIG_FILE} ${GPU_NUM} [optional arguments] +``` + +Optional arguments are: + +- `--no-validate` (**not suggested**): By default, the codebase will perform evaluation at every k (default value is 1) epochs during the training. To disable this behavior, use `--no-validate`. +- `--work-dir ${WORK_DIR}`: Override the working directory specified in the config file. +- `--resume-from ${CHECKPOINT_FILE}`: Resume from a previous checkpoint file. + +Difference between `resume-from` and `load-from`: +`resume-from` loads both the model weights and optimizer status, and the epoch is also inherited from the specified checkpoint. It is usually used for resuming the training process that is interrupted accidentally. +`load-from` only loads the model weights and the training epoch starts from 0. It is usually used for finetuning. + +### Train with multiple machines + +If you launch with multiple machines simply connected with ethernet, you can simply run following commands: + +On the first machine: + +```shell +NNODES=2 NODE_RANK=0 PORT=$MASTER_PORT MASTER_ADDR=$MASTER_ADDR sh tools/dist_train.sh $CONFIG $GPUS +``` + +On the second machine: + +```shell +NNODES=2 NODE_RANK=1 PORT=$MASTER_PORT MASTER_ADDR=$MASTER_ADDR sh tools/dist_train.sh $CONFIG $GPUS +``` + +Usually it is slow if you do not have high speed networking like InfiniBand. + +If you run MMClassification on a cluster managed with [slurm](https://slurm.schedmd.com/), you can use the script `slurm_train.sh`. (This script also supports single machine training.) + +```shell +[GPUS=${GPUS}] ./tools/slurm_train.sh ${PARTITION} ${JOB_NAME} ${CONFIG_FILE} ${WORK_DIR} +``` + +You can check [slurm_train.sh](https://github.com/open-mmlab/mmclassification/blob/master/tools/slurm_train.sh) for full arguments and environment variables. + +If you have just multiple machines connected with ethernet, you can refer to +PyTorch [launch utility](https://pytorch.org/docs/stable/distributed_deprecated.html#launch-utility). +Usually it is slow if you do not have high speed networking like InfiniBand. + +### Launch multiple jobs on a single machine + +If you launch multiple jobs on a single machine, e.g., 2 jobs of 4-GPU training on a machine with 8 GPUs, +you need to specify different ports (29500 by default) for each job to avoid communication conflict. + +If you use `dist_train.sh` to launch training jobs, you can set the port in commands. + +```shell +CUDA_VISIBLE_DEVICES=0,1,2,3 PORT=29500 ./tools/dist_train.sh ${CONFIG_FILE} 4 +CUDA_VISIBLE_DEVICES=4,5,6,7 PORT=29501 ./tools/dist_train.sh ${CONFIG_FILE} 4 +``` + +If you use launch training jobs with Slurm, you need to modify the config files (usually the 6th line from the bottom in config files) to set different communication ports. + +In `config1.py`, + +```python +dist_params = dict(backend='nccl', port=29500) +``` + +In `config2.py`, + +```python +dist_params = dict(backend='nccl', port=29501) +``` + +Then you can launch two jobs with `config1.py` ang `config2.py`. + +```shell +CUDA_VISIBLE_DEVICES=0,1,2,3 GPUS=4 ./tools/slurm_train.sh ${PARTITION} ${JOB_NAME} config1.py ${WORK_DIR} +CUDA_VISIBLE_DEVICES=4,5,6,7 GPUS=4 ./tools/slurm_train.sh ${PARTITION} ${JOB_NAME} config2.py ${WORK_DIR} +``` + +### Train with IPU + +The process of training on the IPU is consistent with single GPU training. We just need to have IPU machine and environment +and add an extra argument `--ipu-replicas ${IPU_NUM}` + +## Useful tools + +We provide lots of useful tools under `tools/` directory. + +### Get the FLOPs and params (experimental) + +We provide a script adapted from [flops-counter.pytorch](https://github.com/sovrasov/flops-counter.pytorch) to compute the FLOPs and params of a given model. + +```shell +python tools/analysis_tools/get_flops.py ${CONFIG_FILE} [--shape ${INPUT_SHAPE}] +``` + +You will get the result like this. + +``` +============================== +Input shape: (3, 224, 224) +Flops: 4.12 GFLOPs +Params: 25.56 M +============================== +``` + +```{warning} +This tool is still experimental and we do not guarantee that the number is correct. You may well use the result for simple comparisons, but double check it before you adopt it in technical reports or papers. +- FLOPs are related to the input shape while parameters are not. The default input shape is (1, 3, 224, 224). +- Some operators are not counted into FLOPs like GN and custom operators. Refer to [`mmcv.cnn.get_model_complexity_info()`](https://github.com/open-mmlab/mmcv/blob/master/mmcv/cnn/utils/flops_counter.py) for details. +``` + +### Publish a model + +Before you publish a model, you may want to + +1. Convert model weights to CPU tensors. +2. Delete the optimizer states. +3. Compute the hash of the checkpoint file and append the hash id to the filename. + +```shell +python tools/convert_models/publish_model.py ${INPUT_FILENAME} ${OUTPUT_FILENAME} +``` + +E.g., + +```shell +python tools/convert_models/publish_model.py work_dirs/resnet50/latest.pth imagenet_resnet50.pth +``` + +The final output filename will be `imagenet_resnet50_{date}-{hash id}.pth`. + +## Tutorials + +Currently, we provide five tutorials for users. + +- [learn about config](tutorials/config.md) +- [finetune models](tutorials/finetune.md) +- [add new dataset](tutorials/new_dataset.md) +- [design data pipeline](tutorials/data_pipeline.md) +- [add new modules](tutorials/new_modules.md) +- [customize schedule](tutorials/schedule.md) +- [customize runtime settings](tutorials/runtime.md). diff --git a/openmmlab_test/mmclassification-0.24.1/docs/en/index.rst b/openmmlab_test/mmclassification-0.24.1/docs/en/index.rst new file mode 100644 index 00000000..d0a15b1d --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/docs/en/index.rst @@ -0,0 +1,99 @@ +Welcome to MMClassification's documentation! +============================================ + +You can switch between Chinese and English documentation in the lower-left corner of the layout. + +您可以在页面左下角切换中英文文档。 + +.. toctree:: + :maxdepth: 1 + :caption: Get Started + + install.md + getting_started.md + + +.. toctree:: + :maxdepth: 1 + :caption: Tutorials + + tutorials/config.md + tutorials/finetune.md + tutorials/new_dataset.md + tutorials/data_pipeline.md + tutorials/new_modules.md + tutorials/schedule.md + tutorials/runtime.md + + +.. toctree:: + :maxdepth: 1 + :caption: Model zoo + :glob: + + modelzoo_statistics.md + model_zoo.md + papers/* + + +.. toctree:: + :maxdepth: 1 + :caption: Useful Tools and Scripts + + tools/pytorch2onnx.md + tools/onnx2tensorrt.md + tools/pytorch2torchscript.md + tools/model_serving.md + tools/visualization.md + tools/analysis.md + tools/miscellaneous.md + + +.. toctree:: + :maxdepth: 1 + :caption: Community + + community/CONTRIBUTING.md + + +.. toctree:: + :maxdepth: 1 + :caption: API Reference + + mmcls.apis + mmcls.core + mmcls.models + mmcls.models.utils + mmcls.datasets + Data Transformations + Batch Augmentation + mmcls.utils + + +.. toctree:: + :maxdepth: 1 + :caption: Notes + + changelog.md + compatibility.md + faq.md + + +.. toctree:: + :maxdepth: 1 + :caption: Device Support + + device/npu.md + +.. toctree:: + :caption: Language Switch + + English + 简体中文 + + +Indices and tables +================== + +* :ref:`genindex` +* :ref:`search` diff --git a/openmmlab_test/mmclassification-0.24.1/docs/en/install.md b/openmmlab_test/mmclassification-0.24.1/docs/en/install.md new file mode 100644 index 00000000..bde1a815 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/docs/en/install.md @@ -0,0 +1,219 @@ +# Prerequisites + +In this section we demonstrate how to prepare an environment with PyTorch. + +MMClassification works on Linux, Windows and macOS. It requires Python 3.6+, CUDA 9.2+ and PyTorch 1.5+. + +```{note} +If you are experienced with PyTorch and have already installed it, just skip this part and jump to the [next section](#installation). Otherwise, you can follow these steps for the preparation. +``` + +**Step 1.** Download and install Miniconda from the [official website](https://docs.conda.io/en/latest/miniconda.html). + +**Step 2.** Create a conda environment and activate it. + +```shell +conda create --name openmmlab python=3.8 -y +conda activate openmmlab +``` + +**Step 3.** Install PyTorch following [official instructions](https://pytorch.org/get-started/locally/), e.g. + +On GPU platforms: + +```shell +conda install pytorch torchvision -c pytorch +``` + +```{warning} +This command will automatically install the latest version PyTorch and cudatoolkit, please check whether they matches your environment. +``` + +On CPU platforms: + +```shell +conda install pytorch torchvision cpuonly -c pytorch +``` + +# Installation + +We recommend that users follow our best practices to install MMClassification. However, the whole process is highly customizable. See [Customize Installation](#customize-installation) section for more information. + +## Best Practices + +**Step 0.** Install [MMCV](https://github.com/open-mmlab/mmcv) using [MIM](https://github.com/open-mmlab/mim). + +```shell +pip install -U openmim +mim install mmcv-full +``` + +**Step 1.** Install MMClassification. + +According to your needs, we support two install modes: + +- [Install from source (Recommended)](#install-from-source): You want to develop your own image classification task or new features based on MMClassification framework. For example, you want to add new dataset or new models. And you can use all tools we provided. +- [Install as a Python package](#install-as-a-python-package): You just want to call MMClassification's APIs or import MMClassification's modules in your project. + +### Install from source + +In this case, install mmcls from source: + +```shell +git clone https://github.com/open-mmlab/mmclassification.git +cd mmclassification +pip install -v -e . +# "-v" means verbose, or more output +# "-e" means installing a project in editable mode, +# thus any local modifications made to the code will take effect without reinstallation. +``` + +Optionally, if you want to contribute to MMClassification or experience experimental functions, please checkout to the dev branch: + +```shell +git checkout dev +``` + +### Install as a Python package + +Just install with pip. + +```shell +pip install mmcls +``` + +## Verify the installation + +To verify whether MMClassification is installed correctly, we provide some sample codes to run an inference demo. + +**Step 1.** We need to download config and checkpoint files. + +```shell +mim download mmcls --config resnet50_8xb32_in1k --dest . +``` + +**Step 2.** Verify the inference demo. + +Option (a). If you install mmcls from source, just run the following command: + +```shell +python demo/image_demo.py demo/demo.JPEG resnet50_8xb32_in1k.py resnet50_8xb32_in1k_20210831-ea4938fc.pth --device cpu +``` + +You will see the output result dict including `pred_label`, `pred_score` and `pred_class` in your terminal. +And if you have graphical interface (instead of remote terminal etc.), you can enable `--show` option to show +the demo image with these predictions in a window. + +Option (b). If you install mmcls as a python package, open you python interpreter and copy&paste the following codes. + +```python +from mmcls.apis import init_model, inference_model + +config_file = 'resnet50_8xb32_in1k.py' +checkpoint_file = 'resnet50_8xb32_in1k_20210831-ea4938fc.pth' +model = init_model(config_file, checkpoint_file, device='cpu') # or device='cuda:0' +inference_model(model, 'demo/demo.JPEG') +``` + +You will see a dict printed, including the predicted label, score and category name. + +## Customize Installation + +### CUDA versions + +When installing PyTorch, you need to specify the version of CUDA. If you are +not clear on which to choose, follow our recommendations: + +- For Ampere-based NVIDIA GPUs, such as GeForce 30 series and NVIDIA A100, CUDA 11 is a must. +- For older NVIDIA GPUs, CUDA 11 is backward compatible, but CUDA 10.2 offers better compatibility and is more lightweight. + +Please make sure the GPU driver satisfies the minimum version requirements. See [this table](https://docs.nvidia.com/cuda/cuda-toolkit-release-notes/index.html#cuda-major-component-versions__table-cuda-toolkit-driver-versions) for more information. + +```{note} +Installing CUDA runtime libraries is enough if you follow our best practices, +because no CUDA code will be compiled locally. However if you hope to compile +MMCV from source or develop other CUDA operators, you need to install the +complete CUDA toolkit from NVIDIA's [website](https://developer.nvidia.com/cuda-downloads), +and its version should match the CUDA version of PyTorch. i.e., the specified +version of cudatoolkit in `conda install` command. +``` + +### Install MMCV without MIM + +MMCV contains C++ and CUDA extensions, thus depending on PyTorch in a complex +way. MIM solves such dependencies automatically and makes the installation +easier. However, it is not a must. + +To install MMCV with pip instead of MIM, please follow +[MMCV installation guides](https://mmcv.readthedocs.io/en/latest/get_started/installation.html). +This requires manually specifying a find-url based on PyTorch version and its CUDA version. + +For example, the following command install mmcv-full built for PyTorch 1.10.x and CUDA 11.3. + +```shell +pip install mmcv-full -f https://download.openmmlab.com/mmcv/dist/cu113/torch1.10/index.html +``` + +### Install on CPU-only platforms + +MMClassification can be built for CPU only environment. In CPU mode you can +train (requires MMCV version >= 1.4.4), test or inference a model. + +Some functionalities are gone in this mode, usually GPU-compiled ops. But don't +worry, almost all models in MMClassification don't depends on these ops. + +### Install on Google Colab + +[Google Colab](https://research.google.com/) usually has PyTorch installed, +thus we only need to install MMCV and MMClassification with the following +commands. + +**Step 1.** Install [MMCV](https://github.com/open-mmlab/mmcv) using [MIM](https://github.com/open-mmlab/mim). + +```shell +!pip3 install openmim +!mim install mmcv-full +``` + +**Step 2.** Install MMClassification from the source. + +```shell +!git clone https://github.com/open-mmlab/mmclassification.git +%cd mmclassification +!pip install -e . +``` + +**Step 3.** Verification. + +```python +import mmcls +print(mmcls.__version__) +# Example output: 0.23.0 or newer +``` + +```{note} +Within Jupyter, the exclamation mark `!` is used to call external executables and `%cd` is a [magic command](https://ipython.readthedocs.io/en/stable/interactive/magics.html#magic-cd) to change the current working directory of Python. +``` + +### Using MMClassification with Docker + +We provide a [Dockerfile](https://github.com/open-mmlab/mmclassification/blob/master/docker/Dockerfile) +to build an image. Ensure that your [docker version](https://docs.docker.com/engine/install/) >=19.03. + +```shell +# build an image with PyTorch 1.8.1, CUDA 10.2 +# If you prefer other versions, just modified the Dockerfile +docker build -t mmclassification docker/ +``` + +Run it with + +```shell +docker run --gpus all --shm-size=8g -it -v {DATA_DIR}:/mmclassification/data mmclassification +``` + +## Trouble shooting + +If you have some issues during the installation, please first view the [FAQ](faq.md) page. +You may [open an issue](https://github.com/open-mmlab/mmclassification/issues/new/choose) +on GitHub if no solution is found. diff --git a/openmmlab_test/mmclassification-0.24.1/docs/en/model_zoo.md b/openmmlab_test/mmclassification-0.24.1/docs/en/model_zoo.md new file mode 100644 index 00000000..46b42a97 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/docs/en/model_zoo.md @@ -0,0 +1,162 @@ +# Model Zoo + +## ImageNet + +ImageNet has multiple versions, but the most commonly used one is [ILSVRC 2012](http://www.image-net.org/challenges/LSVRC/2012/). +The ResNet family models below are trained by standard data augmentations, i.e., RandomResizedCrop, RandomHorizontalFlip and Normalize. + +| Model | Params(M) | Flops(G) | Top-1 (%) | Top-5 (%) | Config | Download | +| :--------------------------------: | :-------------------------------: | :-----------------------------: | :-------: | :-------: | :---------------------------------------: | :-----------------------------------------: | +| VGG-11 | 132.86 | 7.63 | 68.75 | 88.87 | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/vgg/vgg11_8xb32_in1k.py) | [model](https://download.openmmlab.com/mmclassification/v0/vgg/vgg11_batch256_imagenet_20210208-4271cd6c.pth) \| [log](https://download.openmmlab.com/mmclassification/v0/vgg/vgg11_batch256_imagenet_20210208-4271cd6c.log.json) | +| VGG-13 | 133.05 | 11.34 | 70.02 | 89.46 | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/vgg/vgg13_8xb32_in1k.py) | [model](https://download.openmmlab.com/mmclassification/v0/vgg/vgg13_batch256_imagenet_20210208-4d1d6080.pth) \| [log](https://download.openmmlab.com/mmclassification/v0/vgg/vgg13_batch256_imagenet_20210208-4d1d6080.log.json) | +| VGG-16 | 138.36 | 15.5 | 71.62 | 90.49 | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/vgg/vgg16_8xb32_in1k.py) | [model](https://download.openmmlab.com/mmclassification/v0/vgg/vgg16_batch256_imagenet_20210208-db26f1a5.pth) \| [log](https://download.openmmlab.com/mmclassification/v0/vgg/vgg16_batch256_imagenet_20210208-db26f1a5.log.json) | +| VGG-19 | 143.67 | 19.67 | 72.41 | 90.80 | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/vgg/vgg19_8xb32_in1k.py) | [model](https://download.openmmlab.com/mmclassification/v0/vgg/vgg19_batch256_imagenet_20210208-e6920e4a.pth) \| [log](https://download.openmmlab.com/mmclassification/v0/vgg/vgg19_batch256_imagenet_20210208-e6920e4a.log.json) | +| VGG-11-BN | 132.87 | 7.64 | 70.75 | 90.12 | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/vgg/vgg11bn_8xb32_in1k.py) | [model](https://download.openmmlab.com/mmclassification/v0/vgg/vgg11_bn_batch256_imagenet_20210207-f244902c.pth) \| [log](https://download.openmmlab.com/mmclassification/v0/vgg/vgg11_bn_batch256_imagenet_20210207-f244902c.log.json) | +| VGG-13-BN | 133.05 | 11.36 | 72.15 | 90.71 | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/vgg/vgg13bn_8xb32_in1k.py) | [model](https://download.openmmlab.com/mmclassification/v0/vgg/vgg13_bn_batch256_imagenet_20210207-1a8b7864.pth) \| [log](https://download.openmmlab.com/mmclassification/v0/vgg/vgg13_bn_batch256_imagenet_20210207-1a8b7864.log.json) | +| VGG-16-BN | 138.37 | 15.53 | 73.72 | 91.68 | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/vgg/vgg16_8xb32_in1k.py) | [model](https://download.openmmlab.com/mmclassification/v0/vgg/vgg16_bn_batch256_imagenet_20210208-7e55cd29.pth) \| [log](https://download.openmmlab.com/mmclassification/v0/vgg/vgg16_bn_batch256_imagenet_20210208-7e55cd29.log.json) | +| VGG-19-BN | 143.68 | 19.7 | 74.70 | 92.24 | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/vgg/vgg19bn_8xb32_in1k.py) | [model](https://download.openmmlab.com/mmclassification/v0/vgg/vgg19_bn_batch256_imagenet_20210208-da620c4f.pth) \| [log](https://download.openmmlab.com/mmclassification/v0/vgg/vgg19_bn_batch256_imagenet_20210208-da620c4f.log.json) | +| RepVGG-A0\* | 9.11(train) \| 8.31 (deploy) | 1.52 (train) \| 1.36 (deploy) | 72.41 | 90.50 | [config (train)](https://github.com/open-mmlab/mmclassification/blob/master/configs/repvgg/repvgg-A0_4xb64-coslr-120e_in1k.py) \| [config (deploy)](https://github.com/open-mmlab/mmclassification/blob/master/configs/repvgg/deploy/repvgg-A0_deploy_4xb64-coslr-120e_in1k.py) | [model](https://download.openmmlab.com/mmclassification/v0/repvgg/repvgg-A0_3rdparty_4xb64-coslr-120e_in1k_20210909-883ab98c.pth) | +| RepVGG-A1\* | 14.09 (train) \| 12.79 (deploy) | 2.64 (train) \| 2.37 (deploy) | 74.47 | 91.85 | [config (train)](https://github.com/open-mmlab/mmclassification/blob/master/configs/repvgg/repvgg-A1_4xb64-coslr-120e_in1k.py) \| [config (deploy)](https://github.com/open-mmlab/mmclassification/blob/master/configs/repvgg/deploy/repvgg-A1_deploy_4xb64-coslr-120e_in1k.py) | [model](https://download.openmmlab.com/mmclassification/v0/repvgg/repvgg-A1_3rdparty_4xb64-coslr-120e_in1k_20210909-24003a24.pth) | +| RepVGG-A2\* | 28.21 (train) \| 25.5 (deploy) | 5.7 (train) \| 5.12 (deploy) | 76.48 | 93.01 | [config (train)](https://github.com/open-mmlab/mmclassification/blob/master/configs/repvgg/repvgg-A2_4xb64-coslr-120e_in1k.py) \| [config (deploy)](https://github.com/open-mmlab/mmclassification/blob/master/configs/repvgg/deploy/repvgg-A2_deploy_4xb64-coslr-120e_in1k.py) | [model](https://download.openmmlab.com/mmclassification/v0/repvgg/repvgg-A2_3rdparty_4xb64-coslr-120e_in1k_20210909-97d7695a.pth) | +| RepVGG-B0\* | 15.82 (train) \| 14.34 (deploy) | 3.42 (train) \| 3.06 (deploy) | 75.14 | 92.42 | [config (train)](https://github.com/open-mmlab/mmclassification/blob/master/configs/repvgg/repvgg-B0_4xb64-coslr-120e_in1k.py) \| [config (deploy)](https://github.com/open-mmlab/mmclassification/blob/master/configs/repvgg/deploy/repvgg-B0_deploy_4xb64-coslr-120e_in1k.py) | [model](https://download.openmmlab.com/mmclassification/v0/repvgg/repvgg-B0_3rdparty_4xb64-coslr-120e_in1k_20210909-446375f4.pth) | +| RepVGG-B1\* | 57.42 (train) \| 51.83 (deploy) | 13.16 (train) \| 11.82 (deploy) | 78.37 | 94.11 | [config (train)](https://github.com/open-mmlab/mmclassification/blob/master/configs/repvgg/repvgg-B1_4xb64-coslr-120e_in1k.py) \| [config (deploy)](https://github.com/open-mmlab/mmclassification/blob/master/configs/repvgg/deploy/repvgg-B1_deploy_4xb64-coslr-120e_in1k.py) | [model](https://download.openmmlab.com/mmclassification/v0/repvgg/repvgg-B1_3rdparty_4xb64-coslr-120e_in1k_20210909-750cdf67.pth) | +| RepVGG-B1g2\* | 45.78 (train) \| 41.36 (deploy) | 9.82 (train) \| 8.82 (deploy) | 77.79 | 93.88 | [config (train)](https://github.com/open-mmlab/mmclassification/blob/master/configs/repvgg/repvgg-B1g2_4xb64-coslr-120e_in1k.py) \| [config (deploy)](https://github.com/open-mmlab/mmclassification/blob/master/configs/repvgg/deploy/repvgg-B1g2_deploy_4xb64-coslr-120e_in1k.py) | [model](https://download.openmmlab.com/mmclassification/v0/repvgg/repvgg-B1g2_3rdparty_4xb64-coslr-120e_in1k_20210909-344f6422.pth) | +| RepVGG-B1g4\* | 39.97 (train) \| 36.13 (deploy) | 8.15 (train) \| 7.32 (deploy) | 77.58 | 93.84 | [config (train)](https://github.com/open-mmlab/mmclassification/blob/master/configs/repvgg/repvgg-B1g4_4xb64-coslr-120e_in1k.py) \| [config (deploy)](https://github.com/open-mmlab/mmclassification/blob/master/configs/repvgg/deploy/repvgg-B1g4_deploy_4xb64-coslr-120e_in1k.py) | [model](https://download.openmmlab.com/mmclassification/v0/repvgg/repvgg-B1g4_3rdparty_4xb64-coslr-120e_in1k_20210909-d4c1a642.pth) | +| RepVGG-B2\* | 89.02 (train) \| 80.32 (deploy) | 20.46 (train) \| 18.39 (deploy) | 78.78 | 94.42 | [config (train)](https://github.com/open-mmlab/mmclassification/blob/master/configs/repvgg/repvgg-B2_4xb64-coslr-120e_in1k.py) \| [config (deploy)](https://github.com/open-mmlab/mmclassification/blob/master/configs/repvgg/deploy/repvgg-B2_deploy_4xb64-coslr-120e_in1k.py) | [model](https://download.openmmlab.com/mmclassification/v0/repvgg/repvgg-B2_3rdparty_4xb64-coslr-120e_in1k_20210909-bd6b937c.pth) | +| RepVGG-B2g4\* | 61.76 (train) \| 55.78 (deploy) | 12.63 (train) \| 11.34 (deploy) | 79.38 | 94.68 | [config (train)](https://github.com/open-mmlab/mmclassification/blob/master/configs/repvgg/repvgg-B2g4_4xb64-autoaug-lbs-mixup-coslr-200e_in1k.py) \| [config (deploy)](https://github.com/open-mmlab/mmclassification/blob/master/configs/repvgg/deploy/repvgg-B2g4_deploy_4xb64-autoaug-lbs-mixup-coslr-200e_in1k.py) | [model](https://download.openmmlab.com/mmclassification/v0/repvgg/repvgg-B2g4_3rdparty_4xb64-autoaug-lbs-mixup-coslr-200e_in1k_20210909-7b7955f0.pth) | +| RepVGG-B3\* | 123.09 (train) \| 110.96 (deploy) | 29.17 (train) \| 26.22 (deploy) | 80.52 | 95.26 | [config (train)](https://github.com/open-mmlab/mmclassification/blob/master/configs/repvgg/repvgg-B3_4xb64-autoaug-lbs-mixup-coslr-200e_in1k.py) \| [config (deploy)](https://github.com/open-mmlab/mmclassification/blob/master/configs/repvgg/deploy/repvgg-B3_deploy_4xb64-autoaug-lbs-mixup-coslr-200e_in1k.py) | [model](https://download.openmmlab.com/mmclassification/v0/repvgg/repvgg-B3_3rdparty_4xb64-autoaug-lbs-mixup-coslr-200e_in1k_20210909-dda968bf.pth) | +| RepVGG-B3g4\* | 83.83 (train) \| 75.63 (deploy) | 17.9 (train) \| 16.08 (deploy) | 80.22 | 95.10 | [config (train)](https://github.com/open-mmlab/mmclassification/blob/master/configs/repvgg/repvgg-B3g4_4xb64-autoaug-lbs-mixup-coslr-200e_in1k.py) \| [config (deploy)](https://github.com/open-mmlab/mmclassification/blob/master/configs/repvgg/deploy/repvgg-B3g4_deploy_4xb64-autoaug-lbs-mixup-coslr-200e_in1k.py) | [model](https://download.openmmlab.com/mmclassification/v0/repvgg/repvgg-B3g4_3rdparty_4xb64-autoaug-lbs-mixup-coslr-200e_in1k_20210909-4e54846a.pth) | +| RepVGG-D2se\* | 133.33 (train) \| 120.39 (deploy) | 36.56 (train) \| 32.85 (deploy) | 81.81 | 95.94 | [config (train)](https://github.com/open-mmlab/mmclassification/blob/master/configs/repvgg/repvgg-D2se_4xb64-autoaug-lbs-mixup-coslr-200e_in1k.py) \| [config (deploy)](https://github.com/open-mmlab/mmclassification/blob/master/configs/repvgg/deploy/repvgg-D2se_deploy_4xb64-autoaug-lbs-mixup-coslr-200e_in1k.py) | [model](https://download.openmmlab.com/mmclassification/v0/repvgg/repvgg-D2se_3rdparty_4xb64-autoaug-lbs-mixup-coslr-200e_in1k_20210909-cf3139b7.pth) | +| ResNet-18 | 11.69 | 1.82 | 70.07 | 89.44 | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/resnet/resnet18_8xb32_in1k.py) | [model](https://download.openmmlab.com/mmclassification/v0/resnet/resnet18_batch256_imagenet_20200708-34ab8f90.pth) \| [log](https://download.openmmlab.com/mmclassification/v0/resnet/resnet18_batch256_imagenet_20200708-34ab8f90.log.json) | +| ResNet-34 | 21.8 | 3.68 | 73.85 | 91.53 | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/resnet/resnet34_8xb32_in1k.py) | [model](https://download.openmmlab.com/mmclassification/v0/resnet/resnet34_batch256_imagenet_20200708-32ffb4f7.pth) \| [log](https://download.openmmlab.com/mmclassification/v0/resnet/resnet34_batch256_imagenet_20200708-32ffb4f7.log.json) | +| ResNet-50 (rsb-a1) | 25.56 | 4.12 | 80.12 | 94.78 | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/resnet/resnet50_8xb256-rsb-a1-600e_in1k.py) | [model](https://download.openmmlab.com/mmclassification/v0/resnet/resnet50_8xb256-rsb-a1-600e_in1k_20211228-20e21305.pth) \| [log](https://download.openmmlab.com/mmclassification/v0/resnet/resnet50_8xb256-rsb-a1-600e_in1k_20211228-20e21305.log.json) | +| ResNet-101 | 44.55 | 7.85 | 78.18 | 94.03 | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/resnet/resnet101_8xb32_in1k.py) | [model](https://download.openmmlab.com/mmclassification/v0/resnet/resnet101_batch256_imagenet_20200708-753f3608.pth) \| [log](https://download.openmmlab.com/mmclassification/v0/resnet/resnet101_batch256_imagenet_20200708-753f3608.log.json) | +| ResNet-152 | 60.19 | 11.58 | 78.63 | 94.16 | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/resnet/resnet152_8xb32_in1k.py) | [model](https://download.openmmlab.com/mmclassification/v0/resnet/resnet152_batch256_imagenet_20200708-ec25b1f9.pth) \| [log](https://download.openmmlab.com/mmclassification/v0/resnet/resnet152_batch256_imagenet_20200708-ec25b1f9.log.json) | +| Res2Net-50-14w-8s\* | 25.06 | 4.22 | 78.14 | 93.85 | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/res2net/res2net50-w14-s8_8xb32_in1k.py) | [model](https://download.openmmlab.com/mmclassification/v0/res2net/res2net50-w14-s8_3rdparty_8xb32_in1k_20210927-bc967bf1.pth) | +| Res2Net-50-26w-8s\* | 48.40 | 8.39 | 79.20 | 94.36 | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/res2net/res2net50-w26-s8_8xb32_in1k.py) | [model](https://download.openmmlab.com/mmclassification/v0/res2net/res2net50-w26-s8_3rdparty_8xb32_in1k_20210927-f547a94b.pth) | +| Res2Net-101-26w-4s\* | 45.21 | 8.12 | 79.19 | 94.44 | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/res2net/res2net101-w26-s4_8xb32_in1k.py) | [model](https://download.openmmlab.com/mmclassification/v0/res2net/res2net101-w26-s4_3rdparty_8xb32_in1k_20210927-870b6c36.pth) | +| ResNeSt-50\* | 27.48 | 5.41 | 81.13 | 95.59 | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/resnest/resnest50_32xb64_in1k.py) | [model](https://download.openmmlab.com/mmclassification/v0/resnest/resnest50_imagenet_converted-1ebf0afe.pth) | +| ResNeSt-101\* | 48.28 | 10.27 | 82.32 | 96.24 | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/resnest/resnest101_32xb64_in1k.py) | [model](https://download.openmmlab.com/mmclassification/v0/resnest/resnest101_imagenet_converted-032caa52.pth) | +| ResNeSt-200\* | 70.2 | 17.53 | 82.41 | 96.22 | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/resnest/resnest200_64xb32_in1k.py) | [model](https://download.openmmlab.com/mmclassification/v0/resnest/resnest200_imagenet_converted-581a60f2.pth) | +| ResNeSt-269\* | 110.93 | 22.58 | 82.70 | 96.28 | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/resnest/resnest269_64xb32_in1k.py) | [model](https://download.openmmlab.com/mmclassification/v0/resnest/resnest269_imagenet_converted-59930960.pth) | +| ResNetV1D-50 | 25.58 | 4.36 | 77.54 | 93.57 | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/resnet/resnetv1d50_8xb32_in1k.py) | [model](https://download.openmmlab.com/mmclassification/v0/resnet/resnetv1d50_b32x8_imagenet_20210531-db14775a.pth) \| [log](https://download.openmmlab.com/mmclassification/v0/resnet/resnetv1d50_b32x8_imagenet_20210531-db14775a.log.json) | +| ResNetV1D-101 | 44.57 | 8.09 | 78.93 | 94.48 | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/resnet/resnetv1d101_8xb32_in1k.py) | [model](https://download.openmmlab.com/mmclassification/v0/resnet/resnetv1d101_b32x8_imagenet_20210531-6e13bcd3.pth) \| [log](https://download.openmmlab.com/mmclassification/v0/resnet/resnetv1d101_b32x8_imagenet_20210531-6e13bcd3.log.json) | +| ResNetV1D-152 | 60.21 | 11.82 | 79.41 | 94.7 | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/resnet/resnetv1d152_8xb32_in1k.py) | [model](https://download.openmmlab.com/mmclassification/v0/resnet/resnetv1d152_b32x8_imagenet_20210531-278cf22a.pth) \| [log](https://download.openmmlab.com/mmclassification/v0/resnet/resnetv1d152_b32x8_imagenet_20210531-278cf22a.log.json) | +| ResNeXt-32x4d-50 | 25.03 | 4.27 | 77.90 | 93.66 | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/resnext/resnext50-32x4d_8xb32_in1k.py) | [model](https://download.openmmlab.com/mmclassification/v0/resnext/resnext50_32x4d_b32x8_imagenet_20210429-56066e27.pth) \| [log](https://download.openmmlab.com/mmclassification/v0/resnext/resnext50_32x4d_b32x8_imagenet_20210429-56066e27.log.json) | +| ResNeXt-32x4d-101 | 44.18 | 8.03 | 78.71 | 94.12 | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/resnext/resnext101-32x4d_8xb32_in1k.py) | [model](https://download.openmmlab.com/mmclassification/v0/resnext/resnext101_32x4d_b32x8_imagenet_20210506-e0fa3dd5.pth) \| [log](https://download.openmmlab.com/mmclassification/v0/resnext/resnext101_32x4d_b32x8_imagenet_20210506-e0fa3dd5.log.json) | +| ResNeXt-32x8d-101 | 88.79 | 16.5 | 79.23 | 94.58 | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/resnext/resnext101-32x8d_8xb32_in1k.py) | [model](https://download.openmmlab.com/mmclassification/v0/resnext/resnext101_32x8d_b32x8_imagenet_20210506-23a247d5.pth) \| [log](https://download.openmmlab.com/mmclassification/v0/resnext/resnext101_32x8d_b32x8_imagenet_20210506-23a247d5.log.json) | +| ResNeXt-32x4d-152 | 59.95 | 11.8 | 78.93 | 94.41 | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/resnext/resnext152-32x4d_8xb32_in1k.py) | [model](https://download.openmmlab.com/mmclassification/v0/resnext/resnext152_32x4d_b32x8_imagenet_20210524-927787be.pth) \| [log](https://download.openmmlab.com/mmclassification/v0/resnext/resnext152_32x4d_b32x8_imagenet_20210524-927787be.log.json) | +| SE-ResNet-50 | 28.09 | 4.13 | 77.74 | 93.84 | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/seresnet/seresnet50_8xb32_in1k.py) | [model](https://download.openmmlab.com/mmclassification/v0/se-resnet/se-resnet50_batch256_imagenet_20200804-ae206104.pth) \| [log](https://download.openmmlab.com/mmclassification/v0/se-resnet/se-resnet50_batch256_imagenet_20200708-657b3c36.log.json) | +| SE-ResNet-101 | 49.33 | 7.86 | 78.26 | 94.07 | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/seresnet/seresnet101_8xb32_in1k.py) | [model](https://download.openmmlab.com/mmclassification/v0/se-resnet/se-resnet101_batch256_imagenet_20200804-ba5b51d4.pth) \| [log](https://download.openmmlab.com/mmclassification/v0/se-resnet/se-resnet101_batch256_imagenet_20200708-038a4d04.log.json) | +| RegNetX-400MF | 5.16 | 0.41 | 72.56 | 90.78 | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/regnet/regnetx-400mf_8xb128_in1k.py) | [model](https://download.openmmlab.com/mmclassification/v0/regnet/regnetx-400mf_8xb128_in1k_20211213-89bfc226.pth) \| [log](https://download.openmmlab.com/mmclassification/v0/regnet/regnetx-400mf_8xb128_in1k_20211208_143316.log.json) | +| RegNetX-800MF | 7.26 | 0.81 | 74.76 | 92.32 | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/regnet/regnetx-800mf_8xb128_in1k.py) | [model](https://download.openmmlab.com/mmclassification/v0/regnet/regnetx-800mf_8xb128_in1k_20211213-222b0f11.pth) \| [log](https://download.openmmlab.com/mmclassification/v0/regnet/regnetx-800mf_8xb128_in1k_20211207_143037.log.json) | +| RegNetX-1.6GF | 9.19 | 1.63 | 76.84 | 93.31 | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/regnet/regnetx-1.6gf_8xb128_in1k.py) | [model](https://download.openmmlab.com/mmclassification/v0/regnet/regnetx-1.6gf_8xb128_in1k_20211213-d1b89758.pth) \| [log](https://download.openmmlab.com/mmclassification/v0/regnet/regnetx-1.6gf_8xb128_in1k_20211208_143018.log.json) | +| RegNetX-3.2GF | 15.3 | 3.21 | 78.09 | 94.08 | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/regnet/regnetx-3.2gf_8xb64_in1k.py) | [model](https://download.openmmlab.com/mmclassification/v0/regnet/regnetx-3.2gf_8xb64_in1k_20211213-1fdd82ae.pth) \| [log](https://download.openmmlab.com/mmclassification/v0/regnet/regnetx-3.2gf_8xb64_in1k_20211208_142720.log.json) | +| RegNetX-4.0GF | 22.12 | 4.0 | 78.60 | 94.17 | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/regnet/regnetx-4.0gf_8xb64_in1k.py) | [model](https://download.openmmlab.com/mmclassification/v0/regnet/regnetx-4.0gf_8xb64_in1k_20211213-efed675c.pth) \| [log](https://download.openmmlab.com/mmclassification/v0/regnet/regnetx-4.0gf_8xb64_in1k_20211207_150431.log.json) | +| RegNetX-6.4GF | 26.21 | 6.51 | 79.38 | 94.65 | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/regnet/regnetx-6.4gf_8xb64_in1k.py) | [model](https://download.openmmlab.com/mmclassification/v0/regnet/regnetx-6.4gf_8xb64_in1k_20211215-5c6089da.pth) \| [log](https://download.openmmlab.com/mmclassification/v0/regnet/regnetx-6.4gf_8xb64_in1k_20211213_172748.log.json) | +| RegNetX-8.0GF | 39.57 | 8.03 | 79.12 | 94.51 | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/regnet/regnetx-8.0gf_8xb64_in1k.py) | [model](https://download.openmmlab.com/mmclassification/v0/regnet/regnetx-8.0gf_8xb64_in1k_20211213-9a9fcc76.pth) \| [log](https://download.openmmlab.com/mmclassification/v0/regnet/regnetx-8.0gf_8xb64_in1k_20211208_103250.log.json) | +| RegNetX-12GF | 46.11 | 12.15 | 79.67 | 95.03 | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/regnet/regnetx-12gf_8xb64_in1k.py) | [model](https://download.openmmlab.com/mmclassification/v0/regnet/regnetx-12gf_8xb64_in1k_20211213-5df8c2f8.pth) \| [log](https://download.openmmlab.com/mmclassification/v0/regnet/regnetx-12gf_8xb64_in1k_20211208_143713.log.json) | +| ShuffleNetV1 1.0x (group=3) | 1.87 | 0.146 | 68.13 | 87.81 | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/shufflenet_v1/shufflenet-v1-1x_16xb64_in1k.py) | [model](https://download.openmmlab.com/mmclassification/v0/shufflenet_v1/shufflenet_v1_batch1024_imagenet_20200804-5d6cec73.pth) \| [log](https://download.openmmlab.com/mmclassification/v0/shufflenet_v1/shufflenet_v1_batch1024_imagenet_20200804-5d6cec73.log.json) | +| ShuffleNetV2 1.0x | 2.28 | 0.149 | 69.55 | 88.92 | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/shufflenet_v2/shufflenet-v2-1x_16xb64_in1k.py) | [model](https://download.openmmlab.com/mmclassification/v0/shufflenet_v2/shufflenet_v2_batch1024_imagenet_20200812-5bf4721e.pth) \| [log](https://download.openmmlab.com/mmclassification/v0/shufflenet_v2/shufflenet_v2_batch1024_imagenet_20200804-8860eec9.log.json) | +| MobileNet V2 | 3.5 | 0.319 | 71.86 | 90.42 | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/mobilenet_v2/mobilenet-v2_8xb32_in1k.py) | [model](https://download.openmmlab.com/mmclassification/v0/mobilenet_v2/mobilenet_v2_batch256_imagenet_20200708-3b2dc3af.pth) \| [log](https://download.openmmlab.com/mmclassification/v0/mobilenet_v2/mobilenet_v2_batch256_imagenet_20200708-3b2dc3af.log.json) | +| ViT-B/16\* | 86.86 | 33.03 | 85.43 | 97.77 | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/vision_transformer/vit-base-p16_ft-64xb64_in1k-384.py) | [model](https://download.openmmlab.com/mmclassification/v0/vit/finetune/vit-base-p16_in21k-pre-3rdparty_ft-64xb64_in1k-384_20210928-98e8652b.pth) | +| ViT-B/32\* | 88.3 | 8.56 | 84.01 | 97.08 | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/vision_transformer/vit-base-p32_ft-64xb64_in1k-384.py) | [model](https://download.openmmlab.com/mmclassification/v0/vit/finetune/vit-base-p32_in21k-pre-3rdparty_ft-64xb64_in1k-384_20210928-9cea8599.pth) | +| ViT-L/16\* | 304.72 | 116.68 | 85.63 | 97.63 | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/vision_transformer/vit-large-p16_ft-64xb64_in1k-384.py) | [model](https://download.openmmlab.com/mmclassification/v0/vit/finetune/vit-large-p16_in21k-pre-3rdparty_ft-64xb64_in1k-384_20210928-b20ba619.pth) | +| Swin-Transformer tiny | 28.29 | 4.36 | 81.18 | 95.61 | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/swin_transformer/swin-tiny_16xb64_in1k.py) | [model](https://download.openmmlab.com/mmclassification/v0/swin-transformer/swin_tiny_224_b16x64_300e_imagenet_20210616_090925-66df6be6.pth) \| [log](https://download.openmmlab.com/mmclassification/v0/swin-transformer/swin_tiny_224_b16x64_300e_imagenet_20210616_090925.log.json) | +| Swin-Transformer small | 49.61 | 8.52 | 83.02 | 96.29 | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/swin_transformer/swin-small_16xb64_in1k.py) | [model](https://download.openmmlab.com/mmclassification/v0/swin-transformer/swin_small_224_b16x64_300e_imagenet_20210615_110219-7f9d988b.pth) \| [log](https://download.openmmlab.com/mmclassification/v0/swin-transformer/swin_small_224_b16x64_300e_imagenet_20210615_110219.log.json) | +| Swin-Transformer base | 87.77 | 15.14 | 83.36 | 96.44 | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/swin_transformer/swin_base_224_b16x64_300e_imagenet.py) | [model](https://download.openmmlab.com/mmclassification/v0/swin-transformer/swin_base_224_b16x64_300e_imagenet_20210616_190742-93230b0d.pth) \| [log](https://download.openmmlab.com/mmclassification/v0/swin-transformer/swin_base_224_b16x64_300e_imagenet_20210616_190742.log.json) | +| Transformer in Transformer small\* | 23.76 | 3.36 | 81.52 | 95.73 | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/tnt/tnt-s-p16_16xb64_in1k.py) | [model](https://download.openmmlab.com/mmclassification/v0/tnt/tnt-small-p16_3rdparty_in1k_20210903-c56ee7df.pth) | +| T2T-ViT_t-14 | 21.47 | 4.34 | 81.83 | 95.84 | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/t2t_vit/t2t-vit-t-14_8xb64_in1k.py) | [model](https://download.openmmlab.com/mmclassification/v0/t2t-vit/t2t-vit-t-14_8xb64_in1k_20211220-f7378dd5.pth) \| [log](https://download.openmmlab.com/mmclassification/v0/t2t-vit/t2t-vit-t-14_8xb64_in1k_20211220-f7378dd5.log.json) | +| T2T-ViT_t-19 | 39.08 | 7.80 | 82.63 | 96.18 | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/t2t_vit/t2t-vit-t-19_8xb64_in1k.py) | [model](https://download.openmmlab.com/mmclassification/v0/t2t-vit/t2t-vit-t-19_8xb64_in1k_20211214-7f5e3aaf.pth) \| [log](https://download.openmmlab.com/mmclassification/v0/t2t-vit/t2t-vit-t-19_8xb64_in1k_20211214-7f5e3aaf.log.json) | +| T2T-ViT_t-24 | 64.00 | 12.69 | 82.71 | 96.09 | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/t2t_vit/t2t-vit-t-24_8xb64_in1k.py) | [model](https://download.openmmlab.com/mmclassification/v0/t2t-vit/t2t-vit-t-24_8xb64_in1k_20211214-b2a68ae3.pth) \| [log](https://download.openmmlab.com/mmclassification/v0/t2t-vit/t2t-vit-t-24_8xb64_in1k_20211214-b2a68ae3.log.json) | +| Mixer-B/16\* | 59.88 | 12.61 | 76.68 | 92.25 | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/mlp_mixer/mlp-mixer-base-p16_64xb64_in1k.py) | [model](https://download.openmmlab.com/mmclassification/v0/mlp-mixer/mixer-base-p16_3rdparty_64xb64_in1k_20211124-1377e3e0.pth) | +| Mixer-L/16\* | 208.2 | 44.57 | 72.34 | 88.02 | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/mlp_mixer/mlp-mixer-large-p16_64xb64_in1k.py) | [model](https://download.openmmlab.com/mmclassification/v0/mlp-mixer/mixer-large-p16_3rdparty_64xb64_in1k_20211124-5a2519d2.pth) | +| DeiT-tiny | 5.72 | 1.08 | 74.50 | 92.24 | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/deit/deit-tiny_pt-4xb256_in1k.py) | [model](https://download.openmmlab.com/mmclassification/v0/deit/deit-tiny_pt-4xb256_in1k_20220218-13b382a0.pth) \| [log](https://download.openmmlab.com/mmclassification/v0/deit/deit-tiny_pt-4xb256_in1k_20220218-13b382a0.log.json) | +| DeiT-tiny distilled\* | 5.72 | 1.08 | 74.51 | 91.90 | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/deit/deit-tiny-distilled_pt-4xb256_in1k.py) | [model](https://download.openmmlab.com/mmclassification/v0/deit/deit-tiny-distilled_3rdparty_pt-4xb256_in1k_20211216-c429839a.pth) | +| DeiT-small | 22.05 | 4.24 | 80.69 | 95.06 | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/deit/deit-small_pt-4xb256_in1k.py) | [model](https://download.openmmlab.com/mmclassification/v0/deit/deit-small_pt-4xb256_in1k_20220218-9425b9bb.pth) \| [log](https://download.openmmlab.com/mmclassification/v0/deit/deit-small_pt-4xb256_in1k_20220218-9425b9bb.log.json) | +| DeiT-small distilled\* | 22.05 | 4.24 | 81.17 | 95.40 | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/deit/deit-small-distilled_pt-4xb256_in1k.py) | [model](https://download.openmmlab.com/mmclassification/v0/deit/deit-small-distilled_3rdparty_pt-4xb256_in1k_20211216-4de1d725.pth) | +| DeiT-base | 86.57 | 16.86 | 81.76 | 95.81 | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/deit/deit-base_pt-16xb64_in1k.py) | [model](https://download.openmmlab.com/mmclassification/v0/deit/deit-base_pt-16xb64_in1k_20220216-db63c16c.pth) \| [log](https://download.openmmlab.com/mmclassification/v0/deit/deit-base_pt-16xb64_in1k_20220216-db63c16c.log.json) | +| DeiT-base distilled\* | 86.57 | 16.86 | 83.33 | 96.49 | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/deit/deit-base-distilled_pt-16xb64_in1k.py) | [model](https://download.openmmlab.com/mmclassification/v0/deit/deit-base-distilled_3rdparty_pt-16xb64_in1k_20211216-42891296.pth) | +| DeiT-base 384px\* | 86.86 | 49.37 | 83.04 | 96.31 | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/deit/deit-base_ft-16xb32_in1k-384px.py) | [model](https://download.openmmlab.com/mmclassification/v0/deit/deit-base_3rdparty_ft-16xb32_in1k-384px_20211124-822d02f2.pth) | +| DeiT-base distilled 384px\* | 86.86 | 49.37 | 85.55 | 97.35 | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/deit/deit-base-distilled_ft-16xb32_in1k-384px.py) | [model](https://download.openmmlab.com/mmclassification/v0/deit/deit-base-distilled_3rdparty_ft-16xb32_in1k-384px_20211216-e48d6000.pth) | +| Conformer-tiny-p16\* | 23.52 | 4.90 | 81.31 | 95.60 | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/conformer/conformer-tiny-p16_8xb128_in1k.py) | [model](https://download.openmmlab.com/mmclassification/v0/conformer/conformer-tiny-p16_3rdparty_8xb128_in1k_20211206-f6860372.pth) | +| Conformer-small-p32\* | 38.85 | 7.09 | 81.96 | 96.02 | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/conformer/conformer-small-p32_8xb128_in1k.py) | [model](https://download.openmmlab.com/mmclassification/v0/conformer/conformer-small-p32_8xb128_in1k_20211206-947a0816.pth) | +| Conformer-small-p16\* | 37.67 | 10.31 | 83.32 | 96.46 | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/conformer/conformer-small-p16_8xb128_in1k.py) | [model](https://download.openmmlab.com/mmclassification/v0/conformer/conformer-small-p16_3rdparty_8xb128_in1k_20211206-3065dcf5.pth) | +| Conformer-base-p16\* | 83.29 | 22.89 | 83.82 | 96.59 | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/conformer/conformer-base-p16_8xb128_in1k.py) | [model](https://download.openmmlab.com/mmclassification/v0/conformer/conformer-base-p16_3rdparty_8xb128_in1k_20211206-bfdf8637.pth) | +| PCPVT-small\* | 24.11 | 3.67 | 81.14 | 95.69 | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/twins/twins-pcpvt-small_8xb128_in1k.py) | [model](https://download.openmmlab.com/mmclassification/v0/twins/twins-pcpvt-small_3rdparty_8xb128_in1k_20220126-ef23c132.pth) | +| PCPVT-base\* | 43.83 | 6.45 | 82.66 | 96.26 | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/twins/twins-pcpvt-base_8xb128_in1k.py) | [model](https://download.openmmlab.com/mmclassification/v0/twins/twins-pcpvt-base_3rdparty_8xb128_in1k_20220126-f8c4b0d5.pth) | +| PCPVT-large\* | 60.99 | 9.51 | 83.09 | 96.59 | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/twins/twins-pcpvt-large_16xb64_in1k.py) | [model](https://download.openmmlab.com/mmclassification/v0/twins/twins-pcpvt-large_3rdparty_16xb64_in1k_20220126-c1ef8d80.pth) | +| SVT-small\* | 24.06 | 2.82 | 81.77 | 95.57 | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/twins/twins-svt-small_8xb128_in1k.py) | [model](https://download.openmmlab.com/mmclassification/v0/twins/twins-svt-small_3rdparty_8xb128_in1k_20220126-8fe5205b.pth) | +| SVT-base\* | 56.07 | 8.35 | 83.13 | 96.29 | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/twins/twins-svt-base_8xb128_in1k.py) | [model](https://download.openmmlab.com/mmclassification/v0/twins/twins-svt-base_3rdparty_8xb128_in1k_20220126-e31cc8e9.pth) | +| SVT-large\* | 99.27 | 14.82 | 83.60 | 96.50 | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/twins/twins-svt-large_16xb64_in1k.py) | [model](https://download.openmmlab.com/mmclassification/v0/twins/twins-svt-large_3rdparty_16xb64_in1k_20220126-4817645f.pth) | +| EfficientNet-B0\* | 5.29 | 0.02 | 76.74 | 93.17 | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/efficientnet/efficientnet-b0_8xb32_in1k.py) | [model](https://download.openmmlab.com/mmclassification/v0/efficientnet/efficientnet-b0_3rdparty_8xb32_in1k_20220119-a7e2a0b1.pth) | +| EfficientNet-B0 (AA)\* | 5.29 | 0.02 | 77.26 | 93.41 | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/efficientnet/efficientnet-b0_8xb32_in1k.py) | [model](https://download.openmmlab.com/mmclassification/v0/efficientnet/efficientnet-b0_3rdparty_8xb32-aa_in1k_20220119-8d939117.pth) | +| EfficientNet-B0 (AA + AdvProp)\* | 5.29 | 0.02 | 77.53 | 93.61 | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/efficientnet/efficientnet-b0_8xb32-01norm_in1k.py) | [model](https://download.openmmlab.com/mmclassification/v0/efficientnet/efficientnet-b0_3rdparty_8xb32-aa-advprop_in1k_20220119-26434485.pth) | +| EfficientNet-B1\* | 7.79 | 0.03 | 78.68 | 94.28 | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/efficientnet/efficientnet-b1_8xb32_in1k.py) | [model](https://download.openmmlab.com/mmclassification/v0/efficientnet/efficientnet-b1_3rdparty_8xb32_in1k_20220119-002556d9.pth) | +| EfficientNet-B1 (AA)\* | 7.79 | 0.03 | 79.20 | 94.42 | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/efficientnet/efficientnet-b1_8xb32_in1k.py) | [model](https://download.openmmlab.com/mmclassification/v0/efficientnet/efficientnet-b1_3rdparty_8xb32-aa_in1k_20220119-619d8ae3.pth) | +| EfficientNet-B1 (AA + AdvProp)\* | 7.79 | 0.03 | 79.52 | 94.43 | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/efficientnet/efficientnet-b1_8xb32-01norm_in1k.py) | [model](https://download.openmmlab.com/mmclassification/v0/efficientnet/efficientnet-b1_3rdparty_8xb32-aa-advprop_in1k_20220119-5715267d.pth) | +| EfficientNet-B2\* | 9.11 | 0.03 | 79.64 | 94.80 | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/efficientnet/efficientnet-b2_8xb32_in1k.py) | [model](https://download.openmmlab.com/mmclassification/v0/efficientnet/efficientnet-b2_3rdparty_8xb32_in1k_20220119-ea374a30.pth) | +| EfficientNet-B2 (AA)\* | 9.11 | 0.03 | 80.21 | 94.96 | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/efficientnet/efficientnet-b2_8xb32_in1k.py) | [model](https://download.openmmlab.com/mmclassification/v0/efficientnet/efficientnet-b2_3rdparty_8xb32-aa_in1k_20220119-dd61e80b.pth) | +| EfficientNet-B2 (AA + AdvProp)\* | 9.11 | 0.03 | 80.45 | 95.07 | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/efficientnet/efficientnet-b2_8xb32-01norm_in1k.py) | [model](https://download.openmmlab.com/mmclassification/v0/efficientnet/efficientnet-b2_3rdparty_8xb32-aa-advprop_in1k_20220119-1655338a.pth) | +| EfficientNet-B3\* | 12.23 | 0.06 | 81.01 | 95.34 | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/efficientnet/efficientnet-b3_8xb32_in1k.py) | [model](https://download.openmmlab.com/mmclassification/v0/efficientnet/efficientnet-b3_3rdparty_8xb32_in1k_20220119-4b4d7487.pth) | +| EfficientNet-B3 (AA)\* | 12.23 | 0.06 | 81.58 | 95.67 | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/efficientnet/efficientnet-b3_8xb32_in1k.py) | [model](https://download.openmmlab.com/mmclassification/v0/efficientnet/efficientnet-b3_3rdparty_8xb32-aa_in1k_20220119-5b4887a0.pth) | +| EfficientNet-B3 (AA + AdvProp)\* | 12.23 | 0.06 | 81.81 | 95.69 | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/efficientnet/efficientnet-b3_8xb32-01norm_in1k.py) | [model](https://download.openmmlab.com/mmclassification/v0/efficientnet/efficientnet-b3_3rdparty_8xb32-aa-advprop_in1k_20220119-53b41118.pth) | +| EfficientNet-B4\* | 19.34 | 0.12 | 82.57 | 96.09 | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/efficientnet/efficientnet-b4_8xb32_in1k.py) | [model](https://download.openmmlab.com/mmclassification/v0/efficientnet/efficientnet-b4_3rdparty_8xb32_in1k_20220119-81fd4077.pth) | +| EfficientNet-B4 (AA)\* | 19.34 | 0.12 | 82.95 | 96.26 | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/efficientnet/efficientnet-b4_8xb32_in1k.py) | [model](https://download.openmmlab.com/mmclassification/v0/efficientnet/efficientnet-b4_3rdparty_8xb32-aa_in1k_20220119-45b8bd2b.pth) | +| EfficientNet-B4 (AA + AdvProp)\* | 19.34 | 0.12 | 83.25 | 96.44 | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/efficientnet/efficientnet-b4_8xb32-01norm_in1k.py) | [model](https://download.openmmlab.com/mmclassification/v0/efficientnet/efficientnet-b4_3rdparty_8xb32-aa-advprop_in1k_20220119-38c2238c.pth) | +| EfficientNet-B5\* | 30.39 | 0.24 | 83.18 | 96.47 | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/efficientnet/efficientnet-b5_8xb32_in1k.py) | [model](https://download.openmmlab.com/mmclassification/v0/efficientnet/efficientnet-b5_3rdparty_8xb32_in1k_20220119-e9814430.pth) | +| EfficientNet-B5 (AA)\* | 30.39 | 0.24 | 83.82 | 96.76 | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/efficientnet/efficientnet-b5_8xb32_in1k.py) | [model](https://download.openmmlab.com/mmclassification/v0/efficientnet/efficientnet-b5_3rdparty_8xb32-aa_in1k_20220119-2cab8b78.pth) | +| EfficientNet-B5 (AA + AdvProp)\* | 30.39 | 0.24 | 84.21 | 96.98 | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/efficientnet/efficientnet-b5_8xb32-01norm_in1k.py) | [model](https://download.openmmlab.com/mmclassification/v0/efficientnet/efficientnet-b5_3rdparty_8xb32-aa-advprop_in1k_20220119-f57a895a.pth) | +| EfficientNet-B6 (AA)\* | 43.04 | 0.41 | 84.05 | 96.82 | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/efficientnet/efficientnet-b6_8xb32_in1k.py) | [model](https://download.openmmlab.com/mmclassification/v0/efficientnet/efficientnet-b6_3rdparty_8xb32-aa_in1k_20220119-45b03310.pth) | +| EfficientNet-B6 (AA + AdvProp)\* | 43.04 | 0.41 | 84.74 | 97.14 | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/efficientnet/efficientnet-b6_8xb32-01norm_in1k.py) | [model](https://download.openmmlab.com/mmclassification/v0/efficientnet/efficientnet-b6_3rdparty_8xb32-aa-advprop_in1k_20220119-bfe3485e.pth) | +| EfficientNet-B7 (AA)\* | 66.35 | 0.72 | 84.38 | 96.88 | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/efficientnet/efficientnet-b7_8xb32_in1k.py) | [model](https://download.openmmlab.com/mmclassification/v0/efficientnet/efficientnet-b7_3rdparty_8xb32-aa_in1k_20220119-bf03951c.pth) | +| EfficientNet-B7 (AA + AdvProp)\* | 66.35 | 0.72 | 85.14 | 97.23 | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/efficientnet/efficientnet-b7_8xb32-01norm_in1k.py) | [model](https://download.openmmlab.com/mmclassification/v0/efficientnet/efficientnet-b7_3rdparty_8xb32-aa-advprop_in1k_20220119-c6dbff10.pth) | +| EfficientNet-B8 (AA + AdvProp)\* | 87.41 | 1.09 | 85.38 | 97.28 | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/efficientnet/efficientnet-b8_8xb32-01norm_in1k.py) | [model](https://download.openmmlab.com/mmclassification/v0/efficientnet/efficientnet-b8_3rdparty_8xb32-aa-advprop_in1k_20220119-297ce1b7.pth) | +| ConvNeXt-T\* | 28.59 | 4.46 | 82.05 | 95.86 | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/convnext/convnext-tiny_32xb128_in1k.py) | [model](https://download.openmmlab.com/mmclassification/v0/convnext/convnext-tiny_3rdparty_32xb128_in1k_20220124-18abde00.pth) | +| ConvNeXt-S\* | 50.22 | 8.69 | 83.13 | 96.44 | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/convnext/convnext-small_32xb128_in1k.py) | [model](https://download.openmmlab.com/mmclassification/v0/convnext/convnext-small_3rdparty_32xb128_in1k_20220124-d39b5192.pth) | +| ConvNeXt-B\* | 88.59 | 15.36 | 83.85 | 96.74 | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/convnext/convnext-base_32xb128_in1k.py) | [model](https://download.openmmlab.com/mmclassification/v0/convnext/convnext-base_3rdparty_32xb128_in1k_20220124-d0915162.pth) | +| ConvNeXt-B\* | 88.59 | 15.36 | 85.81 | 97.86 | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/convnext/convnext-base_32xb128_in1k.py) | [model](https://download.openmmlab.com/mmclassification/v0/convnext/convnext-base_in21k-pre-3rdparty_32xb128_in1k_20220124-eb2d6ada.pth) | +| ConvNeXt-L\* | 197.77 | 34.37 | 84.30 | 96.89 | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/convnext/convnext-large_64xb64_in1k.py) | [model](https://download.openmmlab.com/mmclassification/v0/convnext/convnext-large_3rdparty_64xb64_in1k_20220124-f8a0ded0.pth) | +| ConvNeXt-L\* | 197.77 | 34.37 | 86.61 | 98.04 | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/convnext/convnext-large_64xb64_in1k.py) | [model](https://download.openmmlab.com/mmclassification/v0/convnext/convnext-large_in21k-pre-3rdparty_64xb64_in1k_20220124-2412403d.pth) | +| ConvNeXt-XL\* | 350.20 | 60.93 | 86.97 | 98.20 | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/convnext/convnext-xlarge_64xb64_in1k.py) | [model](https://download.openmmlab.com/mmclassification/v0/convnext/convnext-xlarge_in21k-pre-3rdparty_64xb64_in1k_20220124-76b6863d.pth) | +| HRNet-W18\* | 21.30 | 4.33 | 76.75 | 93.44 | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/hrnet/hrnet-w18_4xb32_in1k.py) | [model](https://download.openmmlab.com/mmclassification/v0/hrnet/hrnet-w18_3rdparty_8xb32_in1k_20220120-0c10b180.pth) | +| HRNet-W30\* | 37.71 | 8.17 | 78.19 | 94.22 | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/hrnet/hrnet-w30_4xb32_in1k.py) | [model](https://download.openmmlab.com/mmclassification/v0/hrnet/hrnet-w30_3rdparty_8xb32_in1k_20220120-8aa3832f.pth) | +| HRNet-W32\* | 41.23 | 8.99 | 78.44 | 94.19 | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/hrnet/hrnet-w32_4xb32_in1k.py) | [model](https://download.openmmlab.com/mmclassification/v0/hrnet/hrnet-w32_3rdparty_8xb32_in1k_20220120-c394f1ab.pth) | +| HRNet-W40\* | 57.55 | 12.77 | 78.94 | 94.47 | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/hrnet/hrnet-w40_4xb32_in1k.py) | [model](https://download.openmmlab.com/mmclassification/v0/hrnet/hrnet-w40_3rdparty_8xb32_in1k_20220120-9a2dbfc5.pth) | +| HRNet-W44\* | 67.06 | 14.96 | 78.88 | 94.37 | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/hrnet/hrnet-w44_4xb32_in1k.py) | [model](https://download.openmmlab.com/mmclassification/v0/hrnet/hrnet-w44_3rdparty_8xb32_in1k_20220120-35d07f73.pth) | +| HRNet-W48\* | 77.47 | 17.36 | 79.32 | 94.52 | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/hrnet/hrnet-w48_4xb32_in1k.py) | [model](https://download.openmmlab.com/mmclassification/v0/hrnet/hrnet-w48_3rdparty_8xb32_in1k_20220120-e555ef50.pth) | +| HRNet-W64\* | 128.06 | 29.00 | 79.46 | 94.65 | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/hrnet/hrnet-w64_4xb32_in1k.py) | [model](https://download.openmmlab.com/mmclassification/v0/hrnet/hrnet-w64_3rdparty_8xb32_in1k_20220120-19126642.pth) | +| HRNet-W18 (ssld)\* | 21.30 | 4.33 | 81.06 | 95.70 | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/hrnet/hrnet-w18_4xb32_in1k.py) | [model](https://download.openmmlab.com/mmclassification/v0/hrnet/hrnet-w18_3rdparty_8xb32-ssld_in1k_20220120-455f69ea.pth) | +| HRNet-W48 (ssld)\* | 77.47 | 17.36 | 83.63 | 96.79 | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/hrnet/hrnet-w48_4xb32_in1k.py) | [model](https://download.openmmlab.com/mmclassification/v0/hrnet/hrnet-w48_3rdparty_8xb32-ssld_in1k_20220120-d0459c38.pth) | +| WRN-50\* | 68.88 | 11.44 | 81.45 | 95.53 | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/wrn/wide-resnet50_timm_8xb32_in1k.py) | [model](https://download.openmmlab.com/mmclassification/v0/wrn/wide-resnet50_3rdparty-timm_8xb32_in1k_20220304-83ae4399.pth) | +| WRN-101\* | 126.89 | 22.81 | 78.84 | 94.28 | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/wrn/wide-resnet101_8xb32_in1k.py) | [model](https://download.openmmlab.com/mmclassification/v0/wrn/wide-resnet101_3rdparty_8xb32_in1k_20220304-8d5f9d61.pth) | +| CSPDarkNet50\* | 27.64 | 5.04 | 80.05 | 95.07 | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/cspnet/cspdarknet50_8xb32_in1k.py) | [model](https://download.openmmlab.com/mmclassification/v0/cspnet/cspdarknet50_3rdparty_8xb32_in1k_20220329-bd275287.pth) | +| CSPResNet50\* | 21.62 | 3.48 | 79.55 | 94.68 | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/cspnet/cspresnet50_8xb32_in1k.py) | [model](https://download.openmmlab.com/mmclassification/v0/cspnet/cspresnet50_3rdparty_8xb32_in1k_20220329-dd6dddfb.pth) | +| CSPResNeXt50\* | 20.57 | 3.11 | 79.96 | 94.96 | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/cspnet/cspresnext50_8xb32_in1k.py) | [model](https://download.openmmlab.com/mmclassification/v0/cspnet/cspresnext50_3rdparty_8xb32_in1k_20220329-2cc84d21.pth) | +| DenseNet121\* | 7.98 | 2.88 | 74.96 | 92.21 | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/densenet/densenet121_4xb256_in1k.py) | [model](https://download.openmmlab.com/mmclassification/v0/densenet/densenet121_4xb256_in1k_20220426-07450f99.pth) | +| DenseNet169\* | 14.15 | 3.42 | 76.08 | 93.11 | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/densenet/densenet169_4xb256_in1k.py) | [model](https://download.openmmlab.com/mmclassification/v0/densenet/densenet169_4xb256_in1k_20220426-a2889902.pth) | +| DenseNet201\* | 20.01 | 4.37 | 77.32 | 93.64 | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/densenet/densenet201_4xb256_in1k.py) | [model](https://download.openmmlab.com/mmclassification/v0/densenet/densenet201_4xb256_in1k_20220426-05cae4ef.pth) | +| DenseNet161\* | 28.68 | 7.82 | 77.61 | 93.83 | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/densenet/densenet161_4xb256_in1k.py) | [model](https://download.openmmlab.com/mmclassification/v0/densenet/densenet161_4xb256_in1k_20220426-ee6a80a9.pth) | +| VAN-T\* | 4.11 | 0.88 | 75.41 | 93.02 | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/van/van-tiny_8xb128_in1k.py) | [model](https://download.openmmlab.com/mmclassification/v0/van/van-tiny_8xb128_in1k_20220501-385941af.pth) | +| VAN-S\* | 13.86 | 2.52 | 81.01 | 95.63 | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/van/van-small_8xb128_in1k.py) | [model](https://download.openmmlab.com/mmclassification/v0/van/van-small_8xb128_in1k_20220501-17bc91aa.pth) | +| VAN-B\* | 26.58 | 5.03 | 82.80 | 96.21 | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/van/van-base_8xb128_in1k.py) | [model](https://download.openmmlab.com/mmclassification/v0/van/van-base_8xb128_in1k_20220501-6a4cc31b.pth) | +| VAN-L\* | 44.77 | 8.99 | 83.86 | 96.73 | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/van/van-large_8xb128_in1k.py) | [model](https://download.openmmlab.com/mmclassification/v0/van/van-large_8xb128_in1k_20220501-f212ba21.pth) | +| MViTv2-tiny\* | 24.17 | 4.70 | 82.33 | 96.15 | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/mvit/mvitv2-tiny_8xb256_in1k.py) | [model](https://download.openmmlab.com/mmclassification/v0/mvit/mvitv2-tiny_3rdparty_in1k_20220722-db7beeef.pth) | +| MViTv2-small\* | 34.87 | 7.00 | 83.63 | 96.51 | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/mvit/mvitv2-small_8xb256_in1k.py) | [model](https://download.openmmlab.com/mmclassification/v0/mvit/mvitv2-small_3rdparty_in1k_20220722-986bd741.pth) | +| MViTv2-base\* | 51.47 | 10.20 | 84.34 | 96.86 | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/mvit/mvitv2-base_8xb256_in1k.py) | [model](https://download.openmmlab.com/mmclassification/v0/mvit/mvitv2-base_3rdparty_in1k_20220722-9c4f0a17.pth) | +| MViTv2-large\* | 217.99 | 42.10 | 85.25 | 97.14 | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/mvit/mvitv2-large_8xb256_in1k.py) | [model](https://download.openmmlab.com/mmclassification/v0/mvit/mvitv2-large_3rdparty_in1k_20220722-2b57b983.pth) | +| EfficientFormer-l1\* | 12.19 | 1.30 | 80.46 | 94.99 | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/efficientformer/efficientformer-l1_8xb128_in1k.py) | [model](https://download.openmmlab.com/mmclassification/v0/efficientformer/efficientformer-l1_3rdparty_in1k_20220803-d66e61df.pth) | +| EfficientFormer-l3\* | 31.41 | 3.93 | 82.45 | 96.18 | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/efficientformer/efficientformer-l3_8xb128_in1k.py) | [model](https://download.openmmlab.com/mmclassification/v0/efficientformer/efficientformer-l3_3rdparty_in1k_20220803-dde1c8c5.pth) | +| EfficientFormer-l7\* | 82.23 | 10.16 | 83.40 | 96.60 | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/efficientformer/efficientformer-l7_8xb128_in1k.py) | [model](https://download.openmmlab.com/mmclassification/v0/efficientformer/efficientformer-l7_3rdparty_in1k_20220803-41a552bb.pth) | + +*Models with * are converted from other repos, others are trained by ourselves.* + +## CIFAR10 + +| Model | Params(M) | Flops(G) | Top-1 (%) | Config | Download | +| :--------------: | :-------: | :------: | :-------: | :----: | :------------------------------------------------------------------------------------------------------------: | +| ResNet-18-b16x8 | 11.17 | 0.56 | 94.82 | | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/resnet/resnet18_8xb16_cifar10.py) | +| ResNet-34-b16x8 | 21.28 | 1.16 | 95.34 | | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/resnet/resnet34_8xb16_cifar10.py) | +| ResNet-50-b16x8 | 23.52 | 1.31 | 95.55 | | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/resnet/resnet50_8xb16_cifar10.py) | +| ResNet-101-b16x8 | 42.51 | 2.52 | 95.58 | | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/resnet/resnet101_8xb16_cifar10.py) | +| ResNet-152-b16x8 | 58.16 | 3.74 | 95.76 | | [config](https://github.com/open-mmlab/mmclassification/blob/master/configs/resnet/resnet152_8xb16_cifar10.py) | diff --git a/openmmlab_test/mmclassification-0.24.1/docs/en/stat.py b/openmmlab_test/mmclassification-0.24.1/docs/en/stat.py new file mode 100644 index 00000000..8f1e5b2d --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/docs/en/stat.py @@ -0,0 +1,100 @@ +#!/usr/bin/env python +import functools as func +import glob +import os +import re +from pathlib import Path + +import numpy as np + +MMCLS_ROOT = Path(__file__).absolute().parents[1] +url_prefix = 'https://github.com/open-mmlab/mmclassification/blob/master/' + +papers_root = Path('papers') +papers_root.mkdir(exist_ok=True) +files = [Path(f) for f in sorted(glob.glob('../../configs/*/README.md'))] + +stats = [] +titles = [] +num_ckpts = 0 +num_configs = 0 + +for f in files: + with open(f, 'r') as content_file: + content = content_file.read() + + # Extract checkpoints + ckpts = set(x.lower().strip() + for x in re.findall(r'\[model\]\((https?.*)\)', content)) + if len(ckpts) == 0: + continue + num_ckpts += len(ckpts) + + # Extract paper title + match_res = list(re.finditer(r'> \[(.*)\]\((.*)\)', content)) + if len(match_res) > 0: + title, paperlink = match_res[0].groups() + else: + title = content.split('\n')[0].replace('# ', '').strip() + paperlink = None + titles.append(title) + + # Replace paper link to a button + if paperlink is not None: + start = match_res[0].start() + end = match_res[0].end() + # link_button = f'{title}' + link_button = f'[{title}]({paperlink})' + content = content[:start] + link_button + content[end:] + + # Extract paper type + _papertype = [x for x in re.findall(r'\[([A-Z]+)\]', content)] + assert len(_papertype) > 0 + papertype = _papertype[0] + paper = set([(papertype, title)]) + + # Write a copy of README + copy = papers_root / (f.parent.name + '.md') + if copy.exists(): + os.remove(copy) + + def replace_link(matchobj): + # Replace relative link to GitHub link. + name = matchobj.group(1) + link = matchobj.group(2) + if not link.startswith('http') and (f.parent / link).exists(): + rel_link = (f.parent / link).absolute().relative_to(MMCLS_ROOT) + link = url_prefix + str(rel_link) + return f'[{name}]({link})' + + content = re.sub(r'\[([^\]]+)\]\(([^)]+)\)', replace_link, content) + + with open(copy, 'w') as copy_file: + copy_file.write(content) + + statsmsg = f""" +\t* [{papertype}] [{title}]({copy}) ({len(ckpts)} ckpts) +""" + stats.append(dict(paper=paper, ckpts=ckpts, statsmsg=statsmsg, copy=copy)) + +allpapers = func.reduce(lambda a, b: a.union(b), + [stat['paper'] for stat in stats]) +msglist = '\n'.join(stat['statsmsg'] for stat in stats) + +papertypes, papercounts = np.unique([t for t, _ in allpapers], + return_counts=True) +countstr = '\n'.join( + [f' - {t}: {c}' for t, c in zip(papertypes, papercounts)]) + +modelzoo = f""" +# Model Zoo Summary + +* Number of papers: {len(set(titles))} +{countstr} + +* Number of checkpoints: {num_ckpts} +{msglist} +""" + +with open('modelzoo_statistics.md', 'w') as f: + f.write(modelzoo) diff --git a/openmmlab_test/mmclassification-0.24.1/docs/en/tools/analysis.md b/openmmlab_test/mmclassification-0.24.1/docs/en/tools/analysis.md new file mode 100644 index 00000000..0e583b04 --- /dev/null +++ b/openmmlab_test/mmclassification-0.24.1/docs/en/tools/analysis.md @@ -0,0 +1,211 @@ +# Analysis + + + +- [Log Analysis](#log-analysis) + - [Plot Curves](#plot-curves) + - [Calculate Training Time](#calculate-training-time) +- [Result Analysis](#result-analysis) + - [Evaluate Results](#evaluate-results) + - [View Typical Results](#view-typical-results) +- [Model Complexity](#model-complexity) +- [FAQs](#faqs) + + + +## Log Analysis + +### Plot Curves + +`tools/analysis_tools/analyze_logs.py` plots curves of given keys according to the log files. + +