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(): ...
- 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
- 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'> │ ╘════════════╧═════════════════════════════════════════════╛#