basecls.utils#

class basecls.utils.Registry(name)[源代码]#

基类:object

The registry that provides name -> object mapping, to support third-party users’ custom modules.

To create a registry (e.g. a backbone registry):

OPTIMIZER = Registry('optimizer')

To register an object:

@OPTIMIZER.register()
class MyOptimizer():
    ...

Or:

OPTIMIZER.register(MyOptimizer)

Or:

@OPTIMIZER.register("Name for Registry")
class MyOptimizer():
    ...
register(obj=None, name=None)[源代码]#

Register the given object under the the name obj.__name__. Can be used as either a decorator or not. See docstring of this class for usage.

返回类型

Optional[object]

get(name)[源代码]#
返回类型

object

items()[源代码]#
keys()[源代码]#
values()[源代码]#
basecls.utils.set_nccl_env()[源代码]#

Set NCCL environments, which is essential to multi-node training.

basecls.utils.set_num_threads(num=1)[源代码]#

Set number of threads in OpenMP, OpenCV, MKL, OPENBLAS, VECLIB, NUMEXPR, etc.

参数

num (int) – number of threads. Default: 1

basecls.utils.default_logging(cfg, model)[源代码]#
basecls.utils.setup_logger(log_path, log_file, to_loguru=False)[源代码]#
class basecls.utils.registers[源代码]#

基类:object

All registried module could be found here.

augments = Registry of augments: ╒═══════════════╤════════════════════════════════════════════════╕ Names         Objects                                        ╞═══════════════╪════════════════════════════════════════════════╡ SimpleAugment <class 'basecls.data.transform.SimpleAugment'> ├───────────────┼────────────────────────────────────────────────┤ ColorAugment  <class 'basecls.data.transform.ColorAugment'>  ├───────────────┼────────────────────────────────────────────────┤ AutoAugment   <class 'basecls.data.transform.AutoAugment'>   ├───────────────┼────────────────────────────────────────────────┤ RandAugment   <class 'basecls.data.transform.RandAugment'>   ╘═══════════════╧════════════════════════════════════════════════╛#
dataloaders = Registry of dataloaders: ╒══════════════╤═══════════════════════════════════════════╕ Names        Objects                                   ╞══════════════╪═══════════════════════════════════════════╡ FakeData     <class 'basecls.data.build.FakeData'>     ├──────────────┼───────────────────────────────────────────┤ FolderLoader <class 'basecls.data.build.FolderLoader'> ╘══════════════╧═══════════════════════════════════════════╛#
hooks = Registry of hooks: ╒══════════════╤═════════════════════════════════════════════╕ Names        Objects                                     ╞══════════════╪═════════════════════════════════════════════╡ DefaultHooks <class 'basecls.engine.build.DefaultHooks'> ╘══════════════╧═════════════════════════════════════════════╛#
models = Registry of models: ╒════════════════════════════════╤═════════════════════════════════════════════════════════════╕ Names                          Objects                                                     ╞════════════════════════════════╪═════════════════════════════════════════════════════════════╡ ResNet                         <class 'basecls.models.resnet.ResNet'>                      ├────────────────────────────────┼─────────────────────────────────────────────────────────────┤ resnet18                       <function resnet18>                       ├────────────────────────────────┼─────────────────────────────────────────────────────────────┤ resnet34                       <function resnet34>                       ├────────────────────────────────┼─────────────────────────────────────────────────────────────┤ resnet50                       <function resnet50>                       ├────────────────────────────────┼─────────────────────────────────────────────────────────────┤ resnet101                      <function resnet101>                      ├────────────────────────────────┼─────────────────────────────────────────────────────────────┤ resnet152                      <function resnet152>                      ├────────────────────────────────┼─────────────────────────────────────────────────────────────┤ resnet18d                      <function resnet18d>                      ├────────────────────────────────┼─────────────────────────────────────────────────────────────┤ resnet34d                      <function resnet34d>                      ├────────────────────────────────┼─────────────────────────────────────────────────────────────┤ resnet50d                      <function resnet50d>                      ├────────────────────────────────┼─────────────────────────────────────────────────────────────┤ resnet101d                     <function resnet101d>                     ├────────────────────────────────┼─────────────────────────────────────────────────────────────┤ resnet152d                     <function resnet152d>                     ├────────────────────────────────┼─────────────────────────────────────────────────────────────┤ resnext50_32x4d                <function resnext50_32x4d>                ├────────────────────────────────┼─────────────────────────────────────────────────────────────┤ resnext101_32x4d               <function resnext101_32x4d>               ├────────────────────────────────┼─────────────────────────────────────────────────────────────┤ resnext101_32x8d               <function resnext101_32x8d>               ├────────────────────────────────┼─────────────────────────────────────────────────────────────┤ resnext101_64x4d               <function resnext101_64x4d>               ├────────────────────────────────┼─────────────────────────────────────────────────────────────┤ resnext152_32x4d               <function resnext152_32x4d>               ├────────────────────────────────┼─────────────────────────────────────────────────────────────┤ resnext152_32x8d               <function resnext152_32x8d>               ├────────────────────────────────┼─────────────────────────────────────────────────────────────┤ resnext152_64x4d               <function resnext152_64x4d>               ├────────────────────────────────┼─────────────────────────────────────────────────────────────┤ se_resnet18                    <function se_resnet18>                    ├────────────────────────────────┼─────────────────────────────────────────────────────────────┤ se_resnet34                    <function se_resnet34>                    ├────────────────────────────────┼─────────────────────────────────────────────────────────────┤ se_resnet50                    <function se_resnet50>                    ├────────────────────────────────┼─────────────────────────────────────────────────────────────┤ se_resnet101                   <function se_resnet101>                   ├────────────────────────────────┼─────────────────────────────────────────────────────────────┤ se_resnet152                   <function se_resnet152>                   ├────────────────────────────────┼─────────────────────────────────────────────────────────────┤ se_resnext50_32x4d             <function se_resnext50_32x4d>             ├────────────────────────────────┼─────────────────────────────────────────────────────────────┤ se_resnext101_32x4d            <function se_resnext101_32x4d>            ├────────────────────────────────┼─────────────────────────────────────────────────────────────┤ se_resnext101_32x8d            <function se_resnext101_32x8d>            ├────────────────────────────────┼─────────────────────────────────────────────────────────────┤ se_resnext101_64x4d            <function se_resnext101_64x4d>            ├────────────────────────────────┼─────────────────────────────────────────────────────────────┤ se_resnext152_32x4d            <function se_resnext152_32x4d>            ├────────────────────────────────┼─────────────────────────────────────────────────────────────┤ se_resnext152_32x8d            <function se_resnext152_32x8d>            ├────────────────────────────────┼─────────────────────────────────────────────────────────────┤ se_resnext152_64x4d            <function se_resnext152_64x4d>            ├────────────────────────────────┼─────────────────────────────────────────────────────────────┤ wide_resnet50_2                <function wide_resnet50_2>                ├────────────────────────────────┼─────────────────────────────────────────────────────────────┤ wide_resnet101_2               <function wide_resnet101_2>               ├────────────────────────────────┼─────────────────────────────────────────────────────────────┤ MBNet                          <class 'basecls.models.mbnet.MBNet'>                        ├────────────────────────────────┼─────────────────────────────────────────────────────────────┤ mbnetv1_x025                   <function mbnetv1_x025>                   ├────────────────────────────────┼─────────────────────────────────────────────────────────────┤ mbnetv1_x050                   <function mbnetv1_x050>                   ├────────────────────────────────┼─────────────────────────────────────────────────────────────┤ mbnetv1_x075                   <function mbnetv1_x075>                   ├────────────────────────────────┼─────────────────────────────────────────────────────────────┤ mbnetv1_x100                   <function mbnetv1_x100>                   ├────────────────────────────────┼─────────────────────────────────────────────────────────────┤ mbnetv2_x035                   <function mbnetv2_x035>                   ├────────────────────────────────┼─────────────────────────────────────────────────────────────┤ mbnetv2_x050                   <function mbnetv2_x050>                   ├────────────────────────────────┼─────────────────────────────────────────────────────────────┤ mbnetv2_x075                   <function mbnetv2_x075>                   ├────────────────────────────────┼─────────────────────────────────────────────────────────────┤ mbnetv2_x100                   <function mbnetv2_x100>                   ├────────────────────────────────┼─────────────────────────────────────────────────────────────┤ mbnetv2_x140                   <function mbnetv2_x140>                   ├────────────────────────────────┼─────────────────────────────────────────────────────────────┤ mbnetv3_small_x075             <function mbnetv3_small_x075>             ├────────────────────────────────┼─────────────────────────────────────────────────────────────┤ mbnetv3_small_x100             <function mbnetv3_small_x100>             ├────────────────────────────────┼─────────────────────────────────────────────────────────────┤ mbnetv3_large_x075             <function mbnetv3_large_x075>             ├────────────────────────────────┼─────────────────────────────────────────────────────────────┤ mbnetv3_large_x100             <function mbnetv3_large_x100>             ├────────────────────────────────┼─────────────────────────────────────────────────────────────┤ EffNet                         <class 'basecls.models.effnet.EffNet'>                      ├────────────────────────────────┼─────────────────────────────────────────────────────────────┤ effnet_b0                      <function effnet_b0>                      ├────────────────────────────────┼─────────────────────────────────────────────────────────────┤ effnet_b1                      <function effnet_b1>                      ├────────────────────────────────┼─────────────────────────────────────────────────────────────┤ effnet_b2                      <function effnet_b2>                      ├────────────────────────────────┼─────────────────────────────────────────────────────────────┤ effnet_b3                      <function effnet_b3>                      ├────────────────────────────────┼─────────────────────────────────────────────────────────────┤ effnet_b4                      <function effnet_b4>                      ├────────────────────────────────┼─────────────────────────────────────────────────────────────┤ effnet_b5                      <function effnet_b5>                      ├────────────────────────────────┼─────────────────────────────────────────────────────────────┤ effnet_b6                      <function effnet_b6>                      ├────────────────────────────────┼─────────────────────────────────────────────────────────────┤ effnet_b7                      <function effnet_b7>                      ├────────────────────────────────┼─────────────────────────────────────────────────────────────┤ effnet_b8                      <function effnet_b8>                      ├────────────────────────────────┼─────────────────────────────────────────────────────────────┤ effnet_l2                      <function effnet_l2>                      ├────────────────────────────────┼─────────────────────────────────────────────────────────────┤ effnet_b0_lite                 <function effnet_b0_lite>                 ├────────────────────────────────┼─────────────────────────────────────────────────────────────┤ effnet_b1_lite                 <function effnet_b1_lite>                 ├────────────────────────────────┼─────────────────────────────────────────────────────────────┤ effnet_b2_lite                 <function effnet_b2_lite>                 ├────────────────────────────────┼─────────────────────────────────────────────────────────────┤ effnet_b3_lite                 <function effnet_b3_lite>                 ├────────────────────────────────┼─────────────────────────────────────────────────────────────┤ effnet_b4_lite                 <function effnet_b4_lite>                 ├────────────────────────────────┼─────────────────────────────────────────────────────────────┤ effnetv2_b0                    <function effnetv2_b0>                    ├────────────────────────────────┼─────────────────────────────────────────────────────────────┤ effnetv2_b1                    <function effnetv2_b1>                    ├────────────────────────────────┼─────────────────────────────────────────────────────────────┤ effnetv2_b2                    <function effnetv2_b2>                    ├────────────────────────────────┼─────────────────────────────────────────────────────────────┤ effnetv2_b3                    <function effnetv2_b3>                    ├────────────────────────────────┼─────────────────────────────────────────────────────────────┤ effnetv2_s                     <function effnetv2_s>                     ├────────────────────────────────┼─────────────────────────────────────────────────────────────┤ effnetv2_m                     <function effnetv2_m>                     ├────────────────────────────────┼─────────────────────────────────────────────────────────────┤ effnetv2_l                     <function effnetv2_l>                     ├────────────────────────────────┼─────────────────────────────────────────────────────────────┤ HRNet                          <class 'basecls.models.hrnet.HRNet'>                        ├────────────────────────────────┼─────────────────────────────────────────────────────────────┤ hrnet_w18_small_v1             <function hrnet_w18_small_v1>             ├────────────────────────────────┼─────────────────────────────────────────────────────────────┤ hrnet_w18_small_v2             <function hrnet_w18_small_v2>             ├────────────────────────────────┼─────────────────────────────────────────────────────────────┤ hrnet_w18                      <function hrnet_w18>                      ├────────────────────────────────┼─────────────────────────────────────────────────────────────┤ hrnet_w30                      <function hrnet_w30>                      ├────────────────────────────────┼─────────────────────────────────────────────────────────────┤ hrnet_w32                      <function hrnet_w32>                      ├────────────────────────────────┼─────────────────────────────────────────────────────────────┤ hrnet_w40                      <function hrnet_w40>                      ├────────────────────────────────┼─────────────────────────────────────────────────────────────┤ hrnet_w44                      <function hrnet_w44>                      ├────────────────────────────────┼─────────────────────────────────────────────────────────────┤ hrnet_w48                      <function hrnet_w48>                      ├────────────────────────────────┼─────────────────────────────────────────────────────────────┤ hrnet_w64                      <function hrnet_w64>                      ├────────────────────────────────┼─────────────────────────────────────────────────────────────┤ RegNet                         <class 'basecls.models.regnet.RegNet'>                      ├────────────────────────────────┼─────────────────────────────────────────────────────────────┤ regnetx_002                    <function regnetx_002>                    ├────────────────────────────────┼─────────────────────────────────────────────────────────────┤ regnetx_004                    <function regnetx_004>                    ├────────────────────────────────┼─────────────────────────────────────────────────────────────┤ regnetx_006                    <function regnetx_006>                    ├────────────────────────────────┼─────────────────────────────────────────────────────────────┤ regnetx_008                    <function regnetx_008>                    ├────────────────────────────────┼─────────────────────────────────────────────────────────────┤ regnetx_016                    <function regnetx_016>                    ├────────────────────────────────┼─────────────────────────────────────────────────────────────┤ regnetx_032                    <function regnetx_032>                    ├────────────────────────────────┼─────────────────────────────────────────────────────────────┤ regnetx_040                    <function regnetx_040>                    ├────────────────────────────────┼─────────────────────────────────────────────────────────────┤ regnetx_064                    <function regnetx_064>                    ├────────────────────────────────┼─────────────────────────────────────────────────────────────┤ regnetx_080                    <function regnetx_080>                    ├────────────────────────────────┼─────────────────────────────────────────────────────────────┤ regnetx_120                    <function regnetx_120>                    ├────────────────────────────────┼─────────────────────────────────────────────────────────────┤ regnetx_160                    <function regnetx_160>                    ├────────────────────────────────┼─────────────────────────────────────────────────────────────┤ regnetx_320                    <function regnetx_320>                    ├────────────────────────────────┼─────────────────────────────────────────────────────────────┤ regnety_002                    <function regnety_002>                    ├────────────────────────────────┼─────────────────────────────────────────────────────────────┤ regnety_004                    <function regnety_004>                    ├────────────────────────────────┼─────────────────────────────────────────────────────────────┤ regnety_006                    <function regnety_006>                    ├────────────────────────────────┼─────────────────────────────────────────────────────────────┤ regnety_008                    <function regnety_008>                    ├────────────────────────────────┼─────────────────────────────────────────────────────────────┤ regnety_016                    <function regnety_016>                    ├────────────────────────────────┼─────────────────────────────────────────────────────────────┤ regnety_032                    <function regnety_032>                    ├────────────────────────────────┼─────────────────────────────────────────────────────────────┤ regnety_040                    <function regnety_040>                    ├────────────────────────────────┼─────────────────────────────────────────────────────────────┤ regnety_064                    <function regnety_064>                    ├────────────────────────────────┼─────────────────────────────────────────────────────────────┤ regnety_080                    <function regnety_080>                    ├────────────────────────────────┼─────────────────────────────────────────────────────────────┤ regnety_120                    <function regnety_120>                    ├────────────────────────────────┼─────────────────────────────────────────────────────────────┤ regnety_160                    <function regnety_160>                    ├────────────────────────────────┼─────────────────────────────────────────────────────────────┤ regnety_320                    <function regnety_320>                    ├────────────────────────────────┼─────────────────────────────────────────────────────────────┤ RepVGG                         <class 'basecls.models.repvgg.RepVGG'>                      ├────────────────────────────────┼─────────────────────────────────────────────────────────────┤ repvgg_a0                      <function repvgg_a0>                      ├────────────────────────────────┼─────────────────────────────────────────────────────────────┤ repvgg_a1                      <function repvgg_a1>                      ├────────────────────────────────┼─────────────────────────────────────────────────────────────┤ repvgg_a2                      <function repvgg_a2>                      ├────────────────────────────────┼─────────────────────────────────────────────────────────────┤ repvgg_b0                      <function repvgg_b0>                      ├────────────────────────────────┼─────────────────────────────────────────────────────────────┤ repvgg_b1                      <function repvgg_b1>                      ├────────────────────────────────┼─────────────────────────────────────────────────────────────┤ repvgg_b1g2                    <function repvgg_b1g2>                    ├────────────────────────────────┼─────────────────────────────────────────────────────────────┤ repvgg_b1g4                    <function repvgg_b1g4>                    ├────────────────────────────────┼─────────────────────────────────────────────────────────────┤ repvgg_b2                      <function repvgg_b2>                      ├────────────────────────────────┼─────────────────────────────────────────────────────────────┤ repvgg_b2g2                    <function repvgg_b2g2>                    ├────────────────────────────────┼─────────────────────────────────────────────────────────────┤ repvgg_b2g4                    <function repvgg_b2g4>                    ├────────────────────────────────┼─────────────────────────────────────────────────────────────┤ repvgg_b3                      <function repvgg_b3>                      ├────────────────────────────────┼─────────────────────────────────────────────────────────────┤ repvgg_b3g2                    <function repvgg_b3g2>                    ├────────────────────────────────┼─────────────────────────────────────────────────────────────┤ repvgg_b3g4                    <function repvgg_b3g4>                    ├────────────────────────────────┼─────────────────────────────────────────────────────────────┤ repvgg_d2                      <function repvgg_d2>                      ├────────────────────────────────┼─────────────────────────────────────────────────────────────┤ ViT                            <class 'basecls.models.vit.ViT'>                            ├────────────────────────────────┼─────────────────────────────────────────────────────────────┤ vit_tiny_patch16_224           <function vit_tiny_patch16_224>           ├────────────────────────────────┼─────────────────────────────────────────────────────────────┤ vit_tiny_patch16_384           <function vit_tiny_patch16_384>           ├────────────────────────────────┼─────────────────────────────────────────────────────────────┤ vit_small_patch16_224          <function vit_small_patch16_224>          ├────────────────────────────────┼─────────────────────────────────────────────────────────────┤ vit_small_patch16_384          <function vit_small_patch16_384>          ├────────────────────────────────┼─────────────────────────────────────────────────────────────┤ vit_small_patch32_224          <function vit_small_patch32_224>          ├────────────────────────────────┼─────────────────────────────────────────────────────────────┤ vit_small_patch32_384          <function vit_small_patch32_384>          ├────────────────────────────────┼─────────────────────────────────────────────────────────────┤ vit_base_patch16_224           <function vit_base_patch16_224>           ├────────────────────────────────┼─────────────────────────────────────────────────────────────┤ vit_base_patch16_384           <function vit_base_patch16_384>           ├────────────────────────────────┼─────────────────────────────────────────────────────────────┤ vit_base_patch32_224           <function vit_base_patch32_224>           ├────────────────────────────────┼─────────────────────────────────────────────────────────────┤ vit_base_patch32_384           <function vit_base_patch32_384>           ├────────────────────────────────┼─────────────────────────────────────────────────────────────┤ ResMLP                         <class 'basecls.models.resmlp.ResMLP'>                      ├────────────────────────────────┼─────────────────────────────────────────────────────────────┤ resmlp_s12                     <function resmlp_s12>                     ├────────────────────────────────┼─────────────────────────────────────────────────────────────┤ resmlp_s24                     <function resmlp_s24>                     ├────────────────────────────────┼─────────────────────────────────────────────────────────────┤ resmlp_s36                     <function resmlp_s36>                     ├────────────────────────────────┼─────────────────────────────────────────────────────────────┤ resmlp_b24                     <function resmlp_b24>                     ├────────────────────────────────┼─────────────────────────────────────────────────────────────┤ SNetV2                         <class 'basecls.models.snet.SNetV2'>                        ├────────────────────────────────┼─────────────────────────────────────────────────────────────┤ snetv2_x050                    <function snetv2_x050>                    ├────────────────────────────────┼─────────────────────────────────────────────────────────────┤ snetv2_x100                    <function snetv2_x100>                    ├────────────────────────────────┼─────────────────────────────────────────────────────────────┤ snetv2_x150                    <function snetv2_x150>                    ├────────────────────────────────┼─────────────────────────────────────────────────────────────┤ snetv2_x200                    <function snetv2_x200>                    ├────────────────────────────────┼─────────────────────────────────────────────────────────────┤ snetv2p_x075                   <function snetv2p_x075>                   ├────────────────────────────────┼─────────────────────────────────────────────────────────────┤ snetv2p_x100                   <function snetv2p_x100>                   ├────────────────────────────────┼─────────────────────────────────────────────────────────────┤ snetv2p_x125                   <function snetv2p_x125>                   ├────────────────────────────────┼─────────────────────────────────────────────────────────────┤ SwinTransformer                <class 'basecls.models.swin.SwinTransformer'>               ├────────────────────────────────┼─────────────────────────────────────────────────────────────┤ swin_tiny_patch4_window7_224   <function swin_tiny_patch4_window7_224>   ├────────────────────────────────┼─────────────────────────────────────────────────────────────┤ swin_small_patch4_window7_224  <function swin_small_patch4_window7_224>  ├────────────────────────────────┼─────────────────────────────────────────────────────────────┤ swin_base_patch4_window7_224   <function swin_base_patch4_window7_224>   ├────────────────────────────────┼─────────────────────────────────────────────────────────────┤ swin_base_patch4_window12_384  <function swin_base_patch4_window12_384>  ├────────────────────────────────┼─────────────────────────────────────────────────────────────┤ swin_large_patch4_window7_224  <function swin_large_patch4_window7_224>  ├────────────────────────────────┼─────────────────────────────────────────────────────────────┤ swin_large_patch4_window12_384 <function swin_large_patch4_window12_384> ├────────────────────────────────┼─────────────────────────────────────────────────────────────┤ VGG                            <class 'basecls.models.vgg.VGG'>                            ├────────────────────────────────┼─────────────────────────────────────────────────────────────┤ vgg11                          <function vgg11>                          ├────────────────────────────────┼─────────────────────────────────────────────────────────────┤ vgg11_bn                       <function vgg11_bn>                       ├────────────────────────────────┼─────────────────────────────────────────────────────────────┤ vgg13                          <function vgg13>                          ├────────────────────────────────┼─────────────────────────────────────────────────────────────┤ vgg13_bn                       <function vgg13_bn>                       ├────────────────────────────────┼─────────────────────────────────────────────────────────────┤ vgg16                          <function vgg16>                          ├────────────────────────────────┼─────────────────────────────────────────────────────────────┤ vgg16_bn                       <function vgg16_bn>                       ├────────────────────────────────┼─────────────────────────────────────────────────────────────┤ vgg19                          <function vgg19>                          ├────────────────────────────────┼─────────────────────────────────────────────────────────────┤ vgg19_bn                       <function vgg19_bn>                       ╘════════════════════════════════╧═════════════════════════════════════════════════════════════╛#
solvers = Registry of solvers: ╒═══════════════╤══════════════════════════════════════════════╕ Names         Objects                                      ╞═══════════════╪══════════════════════════════════════════════╡ DefaultSolver <class 'basecls.solver.build.DefaultSolver'> ╘═══════════════╧══════════════════════════════════════════════╛#
trainers = Registry of trainers: ╒════════════╤═════════════════════════════════════════════╕ Names      Objects                                     ╞════════════╪═════════════════════════════════════════════╡ ClsTrainer <class 'basecls.engine.trainer.ClsTrainer'> ╘════════════╧═════════════════════════════════════════════╛#
basecls.utils.recursive_update(d, u)[源代码]#