Full Code of waterdisappear/SARATR-X for AI

main e1eb57f28815 cached
2432 files
66.9 MB
2.9M tokens
4344 symbols
1 requests
Copy disabled (too large) Download .txt
Showing preview only (11,514K chars total). Download the full file to get everything.
Repository: waterdisappear/SARATR-X
Branch: main
Commit: e1eb57f28815
Files: 2432
Total size: 66.9 MB

Directory structure:
gitextract_xcoybjj8/

├── LICENSE
├── README.md
├── classification/
│   ├── .gitignore
│   ├── .idea/
│   │   ├── .gitignore
│   │   ├── CoOp.iml
│   │   ├── deployment.xml
│   │   ├── inspectionProfiles/
│   │   │   ├── Project_Default.xml
│   │   │   └── profiles_settings.xml
│   │   ├── misc.xml
│   │   ├── modules.xml
│   │   └── vcs.xml
│   ├── COCOOP.md
│   ├── COOP.md
│   ├── DATASETS.md
│   ├── MIM_linear.sh
│   ├── clip/
│   │   ├── __init__.py
│   │   ├── clip.py
│   │   ├── model.py
│   │   └── simple_tokenizer.py
│   ├── configs/
│   │   ├── datasets/
│   │   │   ├── MSTAR_EOC1.yaml
│   │   │   ├── MSTAR_EOC2C.yaml
│   │   │   ├── MSTAR_EOC2V.yaml
│   │   │   ├── MSTAR_SOC.yaml
│   │   │   ├── MyDataset.yaml
│   │   │   ├── New_FUSAR.yaml
│   │   │   ├── SAR_ACD.yaml
│   │   │   ├── caltech101.yaml
│   │   │   ├── dtd.yaml
│   │   │   ├── eurosat.yaml
│   │   │   ├── fgvc_aircraft.yaml
│   │   │   ├── food101.yaml
│   │   │   ├── imagenet.yaml
│   │   │   ├── imagenet_a.yaml
│   │   │   ├── imagenet_r.yaml
│   │   │   ├── imagenet_sketch.yaml
│   │   │   ├── imagenetv2.yaml
│   │   │   ├── oxford_flowers.yaml
│   │   │   ├── oxford_pets.yaml
│   │   │   ├── stanford_cars.yaml
│   │   │   ├── sun397.yaml
│   │   │   └── ucf101.yaml
│   │   └── trainers/
│   │       ├── CNN/
│   │       │   └── vit_b16.yaml
│   │       ├── CoCoOp/
│   │       │   ├── vit_b16_c16_ep10_batch1.yaml
│   │       │   ├── vit_b16_c4_ep10_batch1.yaml
│   │       │   ├── vit_b16_c4_ep10_batch1_ctxv1.yaml
│   │       │   └── vit_b16_c8_ep10_batch1.yaml
│   │       ├── CoOp/
│   │       │   ├── rn101.yaml
│   │       │   ├── rn101_ep50.yaml
│   │       │   ├── rn50.yaml
│   │       │   ├── rn50_ctxv1.yaml
│   │       │   ├── rn50_ep100.yaml
│   │       │   ├── rn50_ep50.yaml
│   │       │   ├── rn50_ep50_ctxv1.yaml
│   │       │   ├── rn50_val.yaml
│   │       │   ├── vit_b16.yaml
│   │       │   ├── vit_b16_ctxv1.yaml
│   │       │   ├── vit_b16_ep100.yaml
│   │       │   ├── vit_b16_ep100_ctxv1.yaml
│   │       │   ├── vit_b16_ep50.yaml
│   │       │   ├── vit_b16_ep50_ctxv1.yaml
│   │       │   ├── vit_b32.yaml
│   │       │   └── vit_b32_ep50.yaml
│   │       ├── MIM_linear/
│   │       │   └── vit_b16.yaml
│   │       ├── OneHot/
│   │       │   └── vit_b16.yaml
│   │       ├── RingMo/
│   │       │   └── vit_b16.yaml
│   │       ├── clip/
│   │       │   └── vit_b16.yaml
│   │       └── clip_adapter/
│   │           ├── rn101.yaml
│   │           ├── rn101_ep50.yaml
│   │           ├── rn50.yaml
│   │           ├── rn50_ctxv1.yaml
│   │           ├── rn50_ep100.yaml
│   │           ├── rn50_ep50.yaml
│   │           ├── rn50_ep50_ctxv1.yaml
│   │           ├── rn50_val.yaml
│   │           ├── vit_b16.yaml
│   │           ├── vit_b16_ctxv1.yaml
│   │           ├── vit_b16_ep100.yaml
│   │           ├── vit_b16_ep100_ctxv1.yaml
│   │           ├── vit_b16_ep50.yaml
│   │           ├── vit_b16_ep50_ctxv1.yaml
│   │           ├── vit_b32.yaml
│   │           └── vit_b32_ep50.yaml
│   ├── datasets/
│   │   ├── MSTAR_EOC1.py
│   │   ├── MSTAR_EOC2C.py
│   │   ├── MSTAR_EOC2V.py
│   │   ├── MSTAR_SOC.py
│   │   ├── MyDataset.py
│   │   ├── New_FUSAR.py
│   │   ├── SAR_ACD.py
│   │   ├── __init__.py
│   │   ├── caltech101.py
│   │   ├── dtd.py
│   │   ├── eurosat.py
│   │   ├── fgvc_aircraft.py
│   │   ├── food101.py
│   │   ├── imagenet.py
│   │   ├── imagenet_a.py
│   │   ├── imagenet_r.py
│   │   ├── imagenet_sketch.py
│   │   ├── imagenetv2.py
│   │   ├── oxford_flowers.py
│   │   ├── oxford_pets.py
│   │   ├── stanford_cars.py
│   │   ├── sun397.py
│   │   └── ucf101.py
│   ├── demo.py
│   ├── draw_curves.py
│   ├── interpret_prompt.py
│   ├── lpclip/
│   │   ├── README.md
│   │   ├── feat_extractor.py
│   │   ├── feat_extractor.sh
│   │   ├── linear_probe.py
│   │   └── linear_probe.sh
│   ├── model/
│   │   ├── Model.py
│   │   ├── cmt.py
│   │   ├── conformer.py
│   │   ├── cotnet.py
│   │   ├── cotnet_hybrid.py
│   │   ├── features.py
│   │   ├── helpers.py
│   │   ├── hivit.py
│   │   ├── inception_transformer.py
│   │   ├── layers/
│   │   │   ├── __init__.py
│   │   │   ├── activations.py
│   │   │   ├── activations_jit.py
│   │   │   ├── activations_me.py
│   │   │   ├── adaptive_avgmax_pool.py
│   │   │   ├── aggregation_zeropad.py
│   │   │   ├── anti_aliasing.py
│   │   │   ├── blur_pool.py
│   │   │   ├── cbam.py
│   │   │   ├── classifier.py
│   │   │   ├── cond_conv2d.py
│   │   │   ├── config.py
│   │   │   ├── conv2d_same.py
│   │   │   ├── conv_bn_act.py
│   │   │   ├── create_act.py
│   │   │   ├── create_attn.py
│   │   │   ├── create_conv2d.py
│   │   │   ├── create_norm_act.py
│   │   │   ├── drop.py
│   │   │   ├── eca.py
│   │   │   ├── evo_norm.py
│   │   │   ├── helpers.py
│   │   │   ├── inplace_abn.py
│   │   │   ├── kerv2d.py
│   │   │   ├── median_pool.py
│   │   │   ├── mixed_conv2d.py
│   │   │   ├── mlp.py
│   │   │   ├── norm_act.py
│   │   │   ├── padding.py
│   │   │   ├── patch_embed.py
│   │   │   ├── pool2d_same.py
│   │   │   ├── se.py
│   │   │   ├── selective_kernel.py
│   │   │   ├── separable_conv.py
│   │   │   ├── shiftlution.py
│   │   │   ├── space_to_depth.py
│   │   │   ├── split_attn.py
│   │   │   ├── split_batchnorm.py
│   │   │   ├── std_conv.py
│   │   │   ├── tbconv.py
│   │   │   ├── test_time_pool.py
│   │   │   ├── utils.py
│   │   │   └── weight_init.py
│   │   ├── nextvit.py
│   │   ├── registry.py
│   │   ├── res2net.py
│   │   ├── resnet.py
│   │   ├── utils.py
│   │   └── vgg.py
│   ├── parse_test_res.py
│   ├── scripts/
│   │   ├── CNN/
│   │   │   ├── README.md
│   │   │   ├── eval.sh
│   │   │   ├── main.sh
│   │   │   └── zeroshot.sh
│   │   ├── MIM_finetune/
│   │   │   ├── README.md
│   │   │   ├── eval.sh
│   │   │   ├── main.sh
│   │   │   └── zeroshot.sh
│   │   └── MIM_linear/
│   │       ├── README.md
│   │       ├── eval.sh
│   │       ├── main.sh
│   │       └── zeroshot.sh
│   ├── train.py
│   └── trainers/
│       ├── MIM_linear.py
│       ├── __init__.py
│       └── imagenet_templates.py
├── detection/
│   ├── CITATION.cff
│   ├── LICENSE
│   ├── MANIFEST.in
│   ├── MMDET_README.md
│   ├── README_zh-CN.md
│   ├── configs/
│   │   ├── _base_/
│   │   │   ├── datasets/
│   │   │   │   ├── cityscapes_detection.py
│   │   │   │   ├── cityscapes_instance.py
│   │   │   │   ├── coco_detection.py
│   │   │   │   ├── coco_instance.py
│   │   │   │   ├── coco_instance_semantic.py
│   │   │   │   ├── coco_panoptic.py
│   │   │   │   ├── deepfashion.py
│   │   │   │   ├── lvis_v0.5_instance.py
│   │   │   │   ├── lvis_v1_instance.py
│   │   │   │   ├── openimages_detection.py
│   │   │   │   ├── voc0712.py
│   │   │   │   └── wider_face.py
│   │   │   ├── default_runtime.py
│   │   │   ├── models/
│   │   │   │   ├── cascade_mask_rcnn_r50_fpn.py
│   │   │   │   ├── cascade_rcnn_r50_fpn.py
│   │   │   │   ├── fast_rcnn_r50_fpn.py
│   │   │   │   ├── faster_rcnn_r50_caffe_c4.py
│   │   │   │   ├── faster_rcnn_r50_caffe_dc5.py
│   │   │   │   ├── faster_rcnn_r50_fpn.py
│   │   │   │   ├── mask_rcnn_r50_caffe_c4.py
│   │   │   │   ├── mask_rcnn_r50_fpn.py
│   │   │   │   ├── retinanet_r50_fpn.py
│   │   │   │   ├── rpn_r50_caffe_c4.py
│   │   │   │   ├── rpn_r50_fpn.py
│   │   │   │   └── ssd300.py
│   │   │   └── schedules/
│   │   │       ├── schedule_1x.py
│   │   │       ├── schedule_20e.py
│   │   │       └── schedule_2x.py
│   │   ├── _hivit_/
│   │   │   ├── hivit_base_OGSOD.py
│   │   │   ├── hivit_base_SARAircraft.py
│   │   │   ├── hivit_base_SARDet.py
│   │   │   └── hivit_base_SSDD.py
│   │   ├── albu_example/
│   │   │   ├── README.md
│   │   │   └── mask_rcnn_r50_fpn_albu_1x_coco.py
│   │   ├── atss/
│   │   │   ├── README.md
│   │   │   ├── atss_r101_fpn_1x_coco.py
│   │   │   ├── atss_r50_fpn_1x_coco.py
│   │   │   └── metafile.yml
│   │   ├── autoassign/
│   │   │   ├── README.md
│   │   │   ├── autoassign_r50_fpn_8x2_1x_coco.py
│   │   │   └── metafile.yml
│   │   ├── carafe/
│   │   │   ├── README.md
│   │   │   ├── faster_rcnn_r50_fpn_carafe_1x_coco.py
│   │   │   ├── mask_rcnn_r50_fpn_carafe_1x_coco.py
│   │   │   └── metafile.yml
│   │   ├── cascade_rcnn/
│   │   │   ├── README.md
│   │   │   ├── cascade_mask_rcnn_r101_caffe_fpn_1x_coco.py
│   │   │   ├── cascade_mask_rcnn_r101_caffe_fpn_mstrain_3x_coco.py
│   │   │   ├── cascade_mask_rcnn_r101_fpn_1x_coco.py
│   │   │   ├── cascade_mask_rcnn_r101_fpn_20e_coco.py
│   │   │   ├── cascade_mask_rcnn_r101_fpn_mstrain_3x_coco.py
│   │   │   ├── cascade_mask_rcnn_r50_caffe_fpn_1x_coco.py
│   │   │   ├── cascade_mask_rcnn_r50_caffe_fpn_mstrain_3x_coco.py
│   │   │   ├── cascade_mask_rcnn_r50_fpn_1x_coco.py
│   │   │   ├── cascade_mask_rcnn_r50_fpn_20e_coco.py
│   │   │   ├── cascade_mask_rcnn_r50_fpn_mstrain_3x_coco.py
│   │   │   ├── cascade_mask_rcnn_x101_32x4d_fpn_1x_coco.py
│   │   │   ├── cascade_mask_rcnn_x101_32x4d_fpn_20e_coco.py
│   │   │   ├── cascade_mask_rcnn_x101_32x4d_fpn_mstrain_3x_coco.py
│   │   │   ├── cascade_mask_rcnn_x101_32x8d_fpn_mstrain_3x_coco.py
│   │   │   ├── cascade_mask_rcnn_x101_64x4d_fpn_1x_coco.py
│   │   │   ├── cascade_mask_rcnn_x101_64x4d_fpn_20e_coco.py
│   │   │   ├── cascade_mask_rcnn_x101_64x4d_fpn_mstrain_3x_coco.py
│   │   │   ├── cascade_rcnn_r101_caffe_fpn_1x_coco.py
│   │   │   ├── cascade_rcnn_r101_fpn_1x_coco.py
│   │   │   ├── cascade_rcnn_r101_fpn_20e_coco.py
│   │   │   ├── cascade_rcnn_r50_caffe_fpn_1x_coco.py
│   │   │   ├── cascade_rcnn_r50_fpn_1x_coco.py
│   │   │   ├── cascade_rcnn_r50_fpn_20e_coco.py
│   │   │   ├── cascade_rcnn_x101_32x4d_fpn_1x_coco.py
│   │   │   ├── cascade_rcnn_x101_32x4d_fpn_20e_coco.py
│   │   │   ├── cascade_rcnn_x101_64x4d_fpn_1x_coco.py
│   │   │   ├── cascade_rcnn_x101_64x4d_fpn_20e_coco.py
│   │   │   └── metafile.yml
│   │   ├── cascade_rpn/
│   │   │   ├── README.md
│   │   │   ├── crpn_fast_rcnn_r50_caffe_fpn_1x_coco.py
│   │   │   ├── crpn_faster_rcnn_r50_caffe_fpn_1x_coco.py
│   │   │   ├── crpn_r50_caffe_fpn_1x_coco.py
│   │   │   └── metafile.yml
│   │   ├── centernet/
│   │   │   ├── README.md
│   │   │   ├── centernet_resnet18_140e_coco.py
│   │   │   ├── centernet_resnet18_dcnv2_140e_coco.py
│   │   │   └── metafile.yml
│   │   ├── centripetalnet/
│   │   │   ├── README.md
│   │   │   ├── centripetalnet_hourglass104_mstest_16x6_210e_coco.py
│   │   │   └── metafile.yml
│   │   ├── cityscapes/
│   │   │   ├── README.md
│   │   │   ├── faster_rcnn_r50_fpn_1x_cityscapes.py
│   │   │   └── mask_rcnn_r50_fpn_1x_cityscapes.py
│   │   ├── common/
│   │   │   ├── lsj_100e_coco_instance.py
│   │   │   ├── mstrain-poly_3x_coco_instance.py
│   │   │   ├── mstrain_3x_coco.py
│   │   │   ├── mstrain_3x_coco_instance.py
│   │   │   ├── ssj_270k_coco_instance.py
│   │   │   └── ssj_scp_270k_coco_instance.py
│   │   ├── cornernet/
│   │   │   ├── README.md
│   │   │   ├── cornernet_hourglass104_mstest_10x5_210e_coco.py
│   │   │   ├── cornernet_hourglass104_mstest_32x3_210e_coco.py
│   │   │   ├── cornernet_hourglass104_mstest_8x6_210e_coco.py
│   │   │   └── metafile.yml
│   │   ├── dcn/
│   │   │   ├── README.md
│   │   │   ├── cascade_mask_rcnn_r101_fpn_dconv_c3-c5_1x_coco.py
│   │   │   ├── cascade_mask_rcnn_r50_fpn_dconv_c3-c5_1x_coco.py
│   │   │   ├── cascade_mask_rcnn_x101_32x4d_fpn_dconv_c3-c5_1x_coco.py
│   │   │   ├── cascade_rcnn_r101_fpn_dconv_c3-c5_1x_coco.py
│   │   │   ├── cascade_rcnn_r50_fpn_dconv_c3-c5_1x_coco.py
│   │   │   ├── faster_rcnn_r101_fpn_dconv_c3-c5_1x_coco.py
│   │   │   ├── faster_rcnn_r50_fpn_dconv_c3-c5_1x_coco.py
│   │   │   ├── faster_rcnn_r50_fpn_dpool_1x_coco.py
│   │   │   ├── faster_rcnn_x101_32x4d_fpn_dconv_c3-c5_1x_coco.py
│   │   │   ├── mask_rcnn_r101_fpn_dconv_c3-c5_1x_coco.py
│   │   │   ├── mask_rcnn_r50_fpn_dconv_c3-c5_1x_coco.py
│   │   │   ├── mask_rcnn_r50_fpn_fp16_dconv_c3-c5_1x_coco.py
│   │   │   └── metafile.yml
│   │   ├── dcnv2/
│   │   │   ├── README.md
│   │   │   ├── faster_rcnn_r50_fpn_mdconv_c3-c5_1x_coco.py
│   │   │   ├── faster_rcnn_r50_fpn_mdconv_c3-c5_group4_1x_coco.py
│   │   │   ├── faster_rcnn_r50_fpn_mdpool_1x_coco.py
│   │   │   ├── mask_rcnn_r50_fpn_fp16_mdconv_c3-c5_1x_coco.py
│   │   │   ├── mask_rcnn_r50_fpn_mdconv_c3-c5_1x_coco.py
│   │   │   └── metafile.yml
│   │   ├── deepfashion/
│   │   │   ├── README.md
│   │   │   └── mask_rcnn_r50_fpn_15e_deepfashion.py
│   │   ├── deformable_detr/
│   │   │   ├── README.md
│   │   │   ├── deformable_detr_r50_16x2_50e_coco.py
│   │   │   ├── deformable_detr_refine_r50_16x2_50e_coco.py
│   │   │   ├── deformable_detr_twostage_refine_r50_16x2_50e_coco.py
│   │   │   └── metafile.yml
│   │   ├── detectors/
│   │   │   ├── README.md
│   │   │   ├── cascade_rcnn_r50_rfp_1x_coco.py
│   │   │   ├── cascade_rcnn_r50_sac_1x_coco.py
│   │   │   ├── detectors_cascade_rcnn_r50_1x_coco.py
│   │   │   ├── detectors_htc_r101_20e_coco.py
│   │   │   ├── detectors_htc_r50_1x_coco.py
│   │   │   ├── htc_r50_rfp_1x_coco.py
│   │   │   ├── htc_r50_sac_1x_coco.py
│   │   │   └── metafile.yml
│   │   ├── detr/
│   │   │   ├── README.md
│   │   │   ├── detr_r50_8x2_150e_coco.py
│   │   │   └── metafile.yml
│   │   ├── double_heads/
│   │   │   ├── README.md
│   │   │   ├── dh_faster_rcnn_r50_fpn_1x_coco.py
│   │   │   └── metafile.yml
│   │   ├── dyhead/
│   │   │   ├── README.md
│   │   │   ├── atss_r50_caffe_fpn_dyhead_1x_coco.py
│   │   │   ├── atss_r50_fpn_dyhead_1x_coco.py
│   │   │   └── metafile.yml
│   │   ├── dynamic_rcnn/
│   │   │   ├── README.md
│   │   │   ├── dynamic_rcnn_r50_fpn_1x_coco.py
│   │   │   └── metafile.yml
│   │   ├── efficientnet/
│   │   │   ├── README.md
│   │   │   ├── metafile.yml
│   │   │   └── retinanet_effb3_fpn_crop896_8x4_1x_coco.py
│   │   ├── empirical_attention/
│   │   │   ├── README.md
│   │   │   ├── faster_rcnn_r50_fpn_attention_0010_1x_coco.py
│   │   │   ├── faster_rcnn_r50_fpn_attention_0010_dcn_1x_coco.py
│   │   │   ├── faster_rcnn_r50_fpn_attention_1111_1x_coco.py
│   │   │   ├── faster_rcnn_r50_fpn_attention_1111_dcn_1x_coco.py
│   │   │   └── metafile.yml
│   │   ├── fast_rcnn/
│   │   │   ├── README.md
│   │   │   ├── fast_rcnn_r101_caffe_fpn_1x_coco.py
│   │   │   ├── fast_rcnn_r101_fpn_1x_coco.py
│   │   │   ├── fast_rcnn_r101_fpn_2x_coco.py
│   │   │   ├── fast_rcnn_r50_caffe_fpn_1x_coco.py
│   │   │   ├── fast_rcnn_r50_fpn_1x_coco.py
│   │   │   └── fast_rcnn_r50_fpn_2x_coco.py
│   │   ├── faster_rcnn/
│   │   │   ├── README.md
│   │   │   ├── faster_rcnn_r101_caffe_fpn_1x_coco.py
│   │   │   ├── faster_rcnn_r101_caffe_fpn_mstrain_3x_coco.py
│   │   │   ├── faster_rcnn_r101_fpn_1x_coco.py
│   │   │   ├── faster_rcnn_r101_fpn_2x_coco.py
│   │   │   ├── faster_rcnn_r101_fpn_mstrain_3x_coco.py
│   │   │   ├── faster_rcnn_r50_caffe_c4_1x_coco.py
│   │   │   ├── faster_rcnn_r50_caffe_c4_mstrain_1x_coco.py
│   │   │   ├── faster_rcnn_r50_caffe_dc5_1x_coco.py
│   │   │   ├── faster_rcnn_r50_caffe_dc5_mstrain_1x_coco.py
│   │   │   ├── faster_rcnn_r50_caffe_dc5_mstrain_3x_coco.py
│   │   │   ├── faster_rcnn_r50_caffe_fpn_1x_coco.py
│   │   │   ├── faster_rcnn_r50_caffe_fpn_90k_coco.py
│   │   │   ├── faster_rcnn_r50_caffe_fpn_mstrain_1x_coco-person-bicycle-car.py
│   │   │   ├── faster_rcnn_r50_caffe_fpn_mstrain_1x_coco-person.py
│   │   │   ├── faster_rcnn_r50_caffe_fpn_mstrain_1x_coco.py
│   │   │   ├── faster_rcnn_r50_caffe_fpn_mstrain_2x_coco.py
│   │   │   ├── faster_rcnn_r50_caffe_fpn_mstrain_3x_coco.py
│   │   │   ├── faster_rcnn_r50_caffe_fpn_mstrain_90k_coco.py
│   │   │   ├── faster_rcnn_r50_fpn_1x_coco.py
│   │   │   ├── faster_rcnn_r50_fpn_2x_coco.py
│   │   │   ├── faster_rcnn_r50_fpn_bounded_iou_1x_coco.py
│   │   │   ├── faster_rcnn_r50_fpn_ciou_1x_coco.py
│   │   │   ├── faster_rcnn_r50_fpn_fp16_1x_coco.py
│   │   │   ├── faster_rcnn_r50_fpn_giou_1x_coco.py
│   │   │   ├── faster_rcnn_r50_fpn_iou_1x_coco.py
│   │   │   ├── faster_rcnn_r50_fpn_mstrain_3x_coco.py
│   │   │   ├── faster_rcnn_r50_fpn_ohem_1x_coco.py
│   │   │   ├── faster_rcnn_r50_fpn_soft_nms_1x_coco.py
│   │   │   ├── faster_rcnn_r50_fpn_tnr-pretrain_1x_coco.py
│   │   │   ├── faster_rcnn_x101_32x4d_fpn_1x_coco.py
│   │   │   ├── faster_rcnn_x101_32x4d_fpn_2x_coco.py
│   │   │   ├── faster_rcnn_x101_32x4d_fpn_mstrain_3x_coco.py
│   │   │   ├── faster_rcnn_x101_32x8d_fpn_mstrain_3x_coco.py
│   │   │   ├── faster_rcnn_x101_64x4d_fpn_1x_coco.py
│   │   │   ├── faster_rcnn_x101_64x4d_fpn_2x_coco.py
│   │   │   ├── faster_rcnn_x101_64x4d_fpn_mstrain_3x_coco.py
│   │   │   └── metafile.yml
│   │   ├── fcos/
│   │   │   ├── README.md
│   │   │   ├── fcos_center-normbbox-centeronreg-giou_r50_caffe_fpn_gn-head_1x_coco.py
│   │   │   ├── fcos_center-normbbox-centeronreg-giou_r50_caffe_fpn_gn-head_dcn_1x_coco.py
│   │   │   ├── fcos_center_r50_caffe_fpn_gn-head_1x_coco.py
│   │   │   ├── fcos_r101_caffe_fpn_gn-head_1x_coco.py
│   │   │   ├── fcos_r101_caffe_fpn_gn-head_mstrain_640-800_2x_coco.py
│   │   │   ├── fcos_r50_caffe_fpn_gn-head_1x_coco.py
│   │   │   ├── fcos_r50_caffe_fpn_gn-head_4x4_1x_coco.py
│   │   │   ├── fcos_r50_caffe_fpn_gn-head_mstrain_640-800_2x_coco.py
│   │   │   ├── fcos_x101_64x4d_fpn_gn-head_mstrain_640-800_2x_coco.py
│   │   │   └── metafile.yml
│   │   ├── foveabox/
│   │   │   ├── README.md
│   │   │   ├── fovea_align_r101_fpn_gn-head_4x4_2x_coco.py
│   │   │   ├── fovea_align_r101_fpn_gn-head_mstrain_640-800_4x4_2x_coco.py
│   │   │   ├── fovea_align_r50_fpn_gn-head_4x4_2x_coco.py
│   │   │   ├── fovea_align_r50_fpn_gn-head_mstrain_640-800_4x4_2x_coco.py
│   │   │   ├── fovea_r101_fpn_4x4_1x_coco.py
│   │   │   ├── fovea_r101_fpn_4x4_2x_coco.py
│   │   │   ├── fovea_r50_fpn_4x4_1x_coco.py
│   │   │   ├── fovea_r50_fpn_4x4_2x_coco.py
│   │   │   └── metafile.yml
│   │   ├── fpg/
│   │   │   ├── README.md
│   │   │   ├── faster_rcnn_r50_fpg-chn128_crop640_50e_coco.py
│   │   │   ├── faster_rcnn_r50_fpg_crop640_50e_coco.py
│   │   │   ├── faster_rcnn_r50_fpn_crop640_50e_coco.py
│   │   │   ├── mask_rcnn_r50_fpg-chn128_crop640_50e_coco.py
│   │   │   ├── mask_rcnn_r50_fpg_crop640_50e_coco.py
│   │   │   ├── mask_rcnn_r50_fpn_crop640_50e_coco.py
│   │   │   ├── metafile.yml
│   │   │   ├── retinanet_r50_fpg-chn128_crop640_50e_coco.py
│   │   │   └── retinanet_r50_fpg_crop640_50e_coco.py
│   │   ├── free_anchor/
│   │   │   ├── README.md
│   │   │   ├── metafile.yml
│   │   │   ├── retinanet_free_anchor_r101_fpn_1x_coco.py
│   │   │   ├── retinanet_free_anchor_r50_fpn_1x_coco.py
│   │   │   └── retinanet_free_anchor_x101_32x4d_fpn_1x_coco.py
│   │   ├── fsaf/
│   │   │   ├── README.md
│   │   │   ├── fsaf_r101_fpn_1x_coco.py
│   │   │   ├── fsaf_r50_fpn_1x_coco.py
│   │   │   ├── fsaf_x101_64x4d_fpn_1x_coco.py
│   │   │   └── metafile.yml
│   │   ├── gcnet/
│   │   │   ├── README.md
│   │   │   ├── cascade_mask_rcnn_x101_32x4d_fpn_syncbn-backbone_1x_coco.py
│   │   │   ├── cascade_mask_rcnn_x101_32x4d_fpn_syncbn-backbone_dconv_c3-c5_1x_coco.py
│   │   │   ├── cascade_mask_rcnn_x101_32x4d_fpn_syncbn-backbone_dconv_c3-c5_r16_gcb_c3-c5_1x_coco.py
│   │   │   ├── cascade_mask_rcnn_x101_32x4d_fpn_syncbn-backbone_dconv_c3-c5_r4_gcb_c3-c5_1x_coco.py
│   │   │   ├── cascade_mask_rcnn_x101_32x4d_fpn_syncbn-backbone_r16_gcb_c3-c5_1x_coco.py
│   │   │   ├── cascade_mask_rcnn_x101_32x4d_fpn_syncbn-backbone_r4_gcb_c3-c5_1x_coco.py
│   │   │   ├── mask_rcnn_r101_fpn_r16_gcb_c3-c5_1x_coco.py
│   │   │   ├── mask_rcnn_r101_fpn_r4_gcb_c3-c5_1x_coco.py
│   │   │   ├── mask_rcnn_r101_fpn_syncbn-backbone_1x_coco.py
│   │   │   ├── mask_rcnn_r101_fpn_syncbn-backbone_r16_gcb_c3-c5_1x_coco.py
│   │   │   ├── mask_rcnn_r101_fpn_syncbn-backbone_r4_gcb_c3-c5_1x_coco.py
│   │   │   ├── mask_rcnn_r50_fpn_r16_gcb_c3-c5_1x_coco.py
│   │   │   ├── mask_rcnn_r50_fpn_r4_gcb_c3-c5_1x_coco.py
│   │   │   ├── mask_rcnn_r50_fpn_syncbn-backbone_1x_coco.py
│   │   │   ├── mask_rcnn_r50_fpn_syncbn-backbone_r16_gcb_c3-c5_1x_coco.py
│   │   │   ├── mask_rcnn_r50_fpn_syncbn-backbone_r4_gcb_c3-c5_1x_coco.py
│   │   │   ├── mask_rcnn_x101_32x4d_fpn_syncbn-backbone_1x_coco.py
│   │   │   ├── mask_rcnn_x101_32x4d_fpn_syncbn-backbone_r16_gcb_c3-c5_1x_coco.py
│   │   │   ├── mask_rcnn_x101_32x4d_fpn_syncbn-backbone_r4_gcb_c3-c5_1x_coco.py
│   │   │   └── metafile.yml
│   │   ├── gfl/
│   │   │   ├── README.md
│   │   │   ├── gfl_r101_fpn_dconv_c3-c5_mstrain_2x_coco.py
│   │   │   ├── gfl_r101_fpn_mstrain_2x_coco.py
│   │   │   ├── gfl_r50_fpn_1x_coco.py
│   │   │   ├── gfl_r50_fpn_mstrain_2x_coco.py
│   │   │   ├── gfl_x101_32x4d_fpn_dconv_c4-c5_mstrain_2x_coco.py
│   │   │   ├── gfl_x101_32x4d_fpn_mstrain_2x_coco.py
│   │   │   └── metafile.yml
│   │   ├── ghm/
│   │   │   ├── README.md
│   │   │   ├── metafile.yml
│   │   │   ├── retinanet_ghm_r101_fpn_1x_coco.py
│   │   │   ├── retinanet_ghm_r50_fpn_1x_coco.py
│   │   │   ├── retinanet_ghm_x101_32x4d_fpn_1x_coco.py
│   │   │   └── retinanet_ghm_x101_64x4d_fpn_1x_coco.py
│   │   ├── gn/
│   │   │   ├── README.md
│   │   │   ├── mask_rcnn_r101_fpn_gn-all_2x_coco.py
│   │   │   ├── mask_rcnn_r101_fpn_gn-all_3x_coco.py
│   │   │   ├── mask_rcnn_r50_fpn_gn-all_2x_coco.py
│   │   │   ├── mask_rcnn_r50_fpn_gn-all_3x_coco.py
│   │   │   ├── mask_rcnn_r50_fpn_gn-all_contrib_2x_coco.py
│   │   │   ├── mask_rcnn_r50_fpn_gn-all_contrib_3x_coco.py
│   │   │   └── metafile.yml
│   │   ├── gn+ws/
│   │   │   ├── README.md
│   │   │   ├── faster_rcnn_r101_fpn_gn_ws-all_1x_coco.py
│   │   │   ├── faster_rcnn_r50_fpn_gn_ws-all_1x_coco.py
│   │   │   ├── faster_rcnn_x101_32x4d_fpn_gn_ws-all_1x_coco.py
│   │   │   ├── faster_rcnn_x50_32x4d_fpn_gn_ws-all_1x_coco.py
│   │   │   ├── mask_rcnn_r101_fpn_gn_ws-all_20_23_24e_coco.py
│   │   │   ├── mask_rcnn_r101_fpn_gn_ws-all_2x_coco.py
│   │   │   ├── mask_rcnn_r50_fpn_gn_ws-all_20_23_24e_coco.py
│   │   │   ├── mask_rcnn_r50_fpn_gn_ws-all_2x_coco.py
│   │   │   ├── mask_rcnn_x101_32x4d_fpn_gn_ws-all_20_23_24e_coco.py
│   │   │   ├── mask_rcnn_x101_32x4d_fpn_gn_ws-all_2x_coco.py
│   │   │   ├── mask_rcnn_x50_32x4d_fpn_gn_ws-all_20_23_24e_coco.py
│   │   │   ├── mask_rcnn_x50_32x4d_fpn_gn_ws-all_2x_coco.py
│   │   │   └── metafile.yml
│   │   ├── grid_rcnn/
│   │   │   ├── README.md
│   │   │   ├── grid_rcnn_r101_fpn_gn-head_2x_coco.py
│   │   │   ├── grid_rcnn_r50_fpn_gn-head_1x_coco.py
│   │   │   ├── grid_rcnn_r50_fpn_gn-head_2x_coco.py
│   │   │   ├── grid_rcnn_x101_32x4d_fpn_gn-head_2x_coco.py
│   │   │   ├── grid_rcnn_x101_64x4d_fpn_gn-head_2x_coco.py
│   │   │   └── metafile.yml
│   │   ├── groie/
│   │   │   ├── README.md
│   │   │   ├── faster_rcnn_r50_fpn_groie_1x_coco.py
│   │   │   ├── grid_rcnn_r50_fpn_gn-head_groie_1x_coco.py
│   │   │   ├── mask_rcnn_r101_fpn_syncbn-backbone_r4_gcb_c3-c5_groie_1x_coco.py
│   │   │   ├── mask_rcnn_r50_fpn_groie_1x_coco.py
│   │   │   ├── mask_rcnn_r50_fpn_syncbn-backbone_r4_gcb_c3-c5_groie_1x_coco.py
│   │   │   └── metafile.yml
│   │   ├── guided_anchoring/
│   │   │   ├── README.md
│   │   │   ├── ga_fast_r50_caffe_fpn_1x_coco.py
│   │   │   ├── ga_faster_r101_caffe_fpn_1x_coco.py
│   │   │   ├── ga_faster_r50_caffe_fpn_1x_coco.py
│   │   │   ├── ga_faster_r50_fpn_1x_coco.py
│   │   │   ├── ga_faster_x101_32x4d_fpn_1x_coco.py
│   │   │   ├── ga_faster_x101_64x4d_fpn_1x_coco.py
│   │   │   ├── ga_retinanet_r101_caffe_fpn_1x_coco.py
│   │   │   ├── ga_retinanet_r101_caffe_fpn_mstrain_2x.py
│   │   │   ├── ga_retinanet_r50_caffe_fpn_1x_coco.py
│   │   │   ├── ga_retinanet_r50_fpn_1x_coco.py
│   │   │   ├── ga_retinanet_x101_32x4d_fpn_1x_coco.py
│   │   │   ├── ga_retinanet_x101_64x4d_fpn_1x_coco.py
│   │   │   ├── ga_rpn_r101_caffe_fpn_1x_coco.py
│   │   │   ├── ga_rpn_r50_caffe_fpn_1x_coco.py
│   │   │   ├── ga_rpn_r50_fpn_1x_coco.py
│   │   │   ├── ga_rpn_x101_32x4d_fpn_1x_coco.py
│   │   │   ├── ga_rpn_x101_64x4d_fpn_1x_coco.py
│   │   │   └── metafile.yml
│   │   ├── hrnet/
│   │   │   ├── README.md
│   │   │   ├── cascade_mask_rcnn_hrnetv2p_w18_20e_coco.py
│   │   │   ├── cascade_mask_rcnn_hrnetv2p_w32_20e_coco.py
│   │   │   ├── cascade_mask_rcnn_hrnetv2p_w40_20e_coco.py
│   │   │   ├── cascade_rcnn_hrnetv2p_w18_20e_coco.py
│   │   │   ├── cascade_rcnn_hrnetv2p_w32_20e_coco.py
│   │   │   ├── cascade_rcnn_hrnetv2p_w40_20e_coco.py
│   │   │   ├── faster_rcnn_hrnetv2p_w18_1x_coco.py
│   │   │   ├── faster_rcnn_hrnetv2p_w18_2x_coco.py
│   │   │   ├── faster_rcnn_hrnetv2p_w32_1x_coco.py
│   │   │   ├── faster_rcnn_hrnetv2p_w32_2x_coco.py
│   │   │   ├── faster_rcnn_hrnetv2p_w40_1x_coco.py
│   │   │   ├── faster_rcnn_hrnetv2p_w40_2x_coco.py
│   │   │   ├── fcos_hrnetv2p_w18_gn-head_4x4_1x_coco.py
│   │   │   ├── fcos_hrnetv2p_w18_gn-head_4x4_2x_coco.py
│   │   │   ├── fcos_hrnetv2p_w18_gn-head_mstrain_640-800_4x4_2x_coco.py
│   │   │   ├── fcos_hrnetv2p_w32_gn-head_4x4_1x_coco.py
│   │   │   ├── fcos_hrnetv2p_w32_gn-head_4x4_2x_coco.py
│   │   │   ├── fcos_hrnetv2p_w32_gn-head_mstrain_640-800_4x4_2x_coco.py
│   │   │   ├── fcos_hrnetv2p_w40_gn-head_mstrain_640-800_4x4_2x_coco.py
│   │   │   ├── htc_hrnetv2p_w18_20e_coco.py
│   │   │   ├── htc_hrnetv2p_w32_20e_coco.py
│   │   │   ├── htc_hrnetv2p_w40_20e_coco.py
│   │   │   ├── htc_hrnetv2p_w40_28e_coco.py
│   │   │   ├── htc_x101_64x4d_fpn_16x1_28e_coco.py
│   │   │   ├── mask_rcnn_hrnetv2p_w18_1x_coco.py
│   │   │   ├── mask_rcnn_hrnetv2p_w18_2x_coco.py
│   │   │   ├── mask_rcnn_hrnetv2p_w32_1x_coco.py
│   │   │   ├── mask_rcnn_hrnetv2p_w32_2x_coco.py
│   │   │   ├── mask_rcnn_hrnetv2p_w40_1x_coco.py
│   │   │   ├── mask_rcnn_hrnetv2p_w40_2x_coco.py
│   │   │   └── metafile.yml
│   │   ├── htc/
│   │   │   ├── README.md
│   │   │   ├── htc_r101_fpn_20e_coco.py
│   │   │   ├── htc_r50_fpn_1x_coco.py
│   │   │   ├── htc_r50_fpn_20e_coco.py
│   │   │   ├── htc_without_semantic_r50_fpn_1x_coco.py
│   │   │   ├── htc_x101_32x4d_fpn_16x1_20e_coco.py
│   │   │   ├── htc_x101_64x4d_fpn_16x1_20e_coco.py
│   │   │   ├── htc_x101_64x4d_fpn_dconv_c3-c5_mstrain_400_1400_16x1_20e_coco.py
│   │   │   └── metafile.yml
│   │   ├── instaboost/
│   │   │   ├── README.md
│   │   │   ├── cascade_mask_rcnn_r101_fpn_instaboost_4x_coco.py
│   │   │   ├── cascade_mask_rcnn_r50_fpn_instaboost_4x_coco.py
│   │   │   ├── cascade_mask_rcnn_x101_64x4d_fpn_instaboost_4x_coco.py
│   │   │   ├── mask_rcnn_r101_fpn_instaboost_4x_coco.py
│   │   │   ├── mask_rcnn_r50_fpn_instaboost_4x_coco.py
│   │   │   ├── mask_rcnn_x101_64x4d_fpn_instaboost_4x_coco.py
│   │   │   └── metafile.yml
│   │   ├── lad/
│   │   │   ├── README.md
│   │   │   ├── lad_r101_paa_r50_fpn_coco_1x.py
│   │   │   ├── lad_r50_paa_r101_fpn_coco_1x.py
│   │   │   └── metafile.yml
│   │   ├── ld/
│   │   │   ├── README.md
│   │   │   ├── ld_r101_gflv1_r101dcn_fpn_coco_2x.py
│   │   │   ├── ld_r18_gflv1_r101_fpn_coco_1x.py
│   │   │   ├── ld_r34_gflv1_r101_fpn_coco_1x.py
│   │   │   ├── ld_r50_gflv1_r101_fpn_coco_1x.py
│   │   │   └── metafile.yml
│   │   ├── legacy_1.x/
│   │   │   ├── README.md
│   │   │   ├── cascade_mask_rcnn_r50_fpn_1x_coco_v1.py
│   │   │   ├── faster_rcnn_r50_fpn_1x_coco_v1.py
│   │   │   ├── mask_rcnn_r50_fpn_1x_coco_v1.py
│   │   │   ├── retinanet_r50_caffe_fpn_1x_coco_v1.py
│   │   │   ├── retinanet_r50_fpn_1x_coco_v1.py
│   │   │   └── ssd300_coco_v1.py
│   │   ├── libra_rcnn/
│   │   │   ├── README.md
│   │   │   ├── libra_fast_rcnn_r50_fpn_1x_coco.py
│   │   │   ├── libra_faster_rcnn_r101_fpn_1x_coco.py
│   │   │   ├── libra_faster_rcnn_r50_fpn_1x_coco.py
│   │   │   ├── libra_faster_rcnn_x101_64x4d_fpn_1x_coco.py
│   │   │   ├── libra_retinanet_r50_fpn_1x_coco.py
│   │   │   └── metafile.yml
│   │   ├── lvis/
│   │   │   ├── README.md
│   │   │   ├── mask_rcnn_r101_fpn_sample1e-3_mstrain_1x_lvis_v1.py
│   │   │   ├── mask_rcnn_r101_fpn_sample1e-3_mstrain_2x_lvis_v0.5.py
│   │   │   ├── mask_rcnn_r50_fpn_sample1e-3_mstrain_1x_lvis_v1.py
│   │   │   ├── mask_rcnn_r50_fpn_sample1e-3_mstrain_2x_lvis_v0.5.py
│   │   │   ├── mask_rcnn_x101_32x4d_fpn_sample1e-3_mstrain_1x_lvis_v1.py
│   │   │   ├── mask_rcnn_x101_32x4d_fpn_sample1e-3_mstrain_2x_lvis_v0.5.py
│   │   │   ├── mask_rcnn_x101_64x4d_fpn_sample1e-3_mstrain_1x_lvis_v1.py
│   │   │   └── mask_rcnn_x101_64x4d_fpn_sample1e-3_mstrain_2x_lvis_v0.5.py
│   │   ├── mask2former/
│   │   │   ├── README.md
│   │   │   ├── mask2former_r101_lsj_8x2_50e_coco.py
│   │   │   ├── mask2former_r50_lsj_8x2_50e_coco.py
│   │   │   ├── mask2former_swin-b-p4-w12-384-in21k_lsj_8x2_50e_coco.py
│   │   │   ├── mask2former_swin-b-p4-w12-384_lsj_8x2_50e_coco.py
│   │   │   ├── mask2former_swin-l-p4-w12-384-in21k_lsj_16x1_100e_coco.py
│   │   │   ├── mask2former_swin-s-p4-w7-224_lsj_8x2_50e_coco.py
│   │   │   ├── mask2former_swin-t-p4-w7-224_lsj_8x2_50e_coco.py
│   │   │   └── metafile.yml
│   │   ├── mask_rcnn/
│   │   │   ├── README.md
│   │   │   ├── mask_rcnn_r101_caffe_fpn_1x_coco.py
│   │   │   ├── mask_rcnn_r101_caffe_fpn_mstrain-poly_3x_coco.py
│   │   │   ├── mask_rcnn_r101_fpn_1x_coco.py
│   │   │   ├── mask_rcnn_r101_fpn_2x_coco.py
│   │   │   ├── mask_rcnn_r101_fpn_mstrain-poly_3x_coco.py
│   │   │   ├── mask_rcnn_r50_caffe_c4_1x_coco.py
│   │   │   ├── mask_rcnn_r50_caffe_fpn_1x_coco.py
│   │   │   ├── mask_rcnn_r50_caffe_fpn_mstrain-poly_1x_coco.py
│   │   │   ├── mask_rcnn_r50_caffe_fpn_mstrain-poly_2x_coco.py
│   │   │   ├── mask_rcnn_r50_caffe_fpn_mstrain-poly_3x_coco.py
│   │   │   ├── mask_rcnn_r50_caffe_fpn_mstrain_1x_coco.py
│   │   │   ├── mask_rcnn_r50_caffe_fpn_poly_1x_coco_v1.py
│   │   │   ├── mask_rcnn_r50_fpn_1x_coco.py
│   │   │   ├── mask_rcnn_r50_fpn_2x_coco.py
│   │   │   ├── mask_rcnn_r50_fpn_fp16_1x_coco.py
│   │   │   ├── mask_rcnn_r50_fpn_mstrain-poly_3x_coco.py
│   │   │   ├── mask_rcnn_r50_fpn_poly_1x_coco.py
│   │   │   ├── mask_rcnn_x101_32x4d_fpn_1x_coco.py
│   │   │   ├── mask_rcnn_x101_32x4d_fpn_2x_coco.py
│   │   │   ├── mask_rcnn_x101_32x4d_fpn_mstrain-poly_3x_coco.py
│   │   │   ├── mask_rcnn_x101_32x8d_fpn_1x_coco.py
│   │   │   ├── mask_rcnn_x101_32x8d_fpn_mstrain-poly_1x_coco.py
│   │   │   ├── mask_rcnn_x101_32x8d_fpn_mstrain-poly_3x_coco.py
│   │   │   ├── mask_rcnn_x101_64x4d_fpn_1x_coco.py
│   │   │   ├── mask_rcnn_x101_64x4d_fpn_2x_coco.py
│   │   │   ├── mask_rcnn_x101_64x4d_fpn_mstrain-poly_3x_coco.py
│   │   │   └── metafile.yml
│   │   ├── maskformer/
│   │   │   ├── README.md
│   │   │   ├── maskformer_r50_mstrain_16x1_75e_coco.py
│   │   │   ├── maskformer_swin-l-p4-w12_mstrain_64x1_300e_coco.py
│   │   │   └── metafile.yml
│   │   ├── ms_rcnn/
│   │   │   ├── README.md
│   │   │   ├── metafile.yml
│   │   │   ├── ms_rcnn_r101_caffe_fpn_1x_coco.py
│   │   │   ├── ms_rcnn_r101_caffe_fpn_2x_coco.py
│   │   │   ├── ms_rcnn_r50_caffe_fpn_1x_coco.py
│   │   │   ├── ms_rcnn_r50_caffe_fpn_2x_coco.py
│   │   │   ├── ms_rcnn_r50_fpn_1x_coco.py
│   │   │   ├── ms_rcnn_x101_32x4d_fpn_1x_coco.py
│   │   │   ├── ms_rcnn_x101_64x4d_fpn_1x_coco.py
│   │   │   └── ms_rcnn_x101_64x4d_fpn_2x_coco.py
│   │   ├── nas_fcos/
│   │   │   ├── README.md
│   │   │   ├── metafile.yml
│   │   │   ├── nas_fcos_fcoshead_r50_caffe_fpn_gn-head_4x4_1x_coco.py
│   │   │   └── nas_fcos_nashead_r50_caffe_fpn_gn-head_4x4_1x_coco.py
│   │   ├── nas_fpn/
│   │   │   ├── README.md
│   │   │   ├── metafile.yml
│   │   │   ├── retinanet_r50_fpn_crop640_50e_coco.py
│   │   │   └── retinanet_r50_nasfpn_crop640_50e_coco.py
│   │   ├── openimages/
│   │   │   ├── README.md
│   │   │   ├── faster_rcnn_r50_fpn_32x2_1x_openimages.py
│   │   │   ├── faster_rcnn_r50_fpn_32x2_1x_openimages_challenge.py
│   │   │   ├── faster_rcnn_r50_fpn_32x2_cas_1x_openimages.py
│   │   │   ├── faster_rcnn_r50_fpn_32x2_cas_1x_openimages_challenge.py
│   │   │   ├── metafile.yml
│   │   │   ├── retinanet_r50_fpn_32x2_1x_openimages.py
│   │   │   └── ssd300_32x8_36e_openimages.py
│   │   ├── paa/
│   │   │   ├── README.md
│   │   │   ├── metafile.yml
│   │   │   ├── paa_r101_fpn_1x_coco.py
│   │   │   ├── paa_r101_fpn_2x_coco.py
│   │   │   ├── paa_r101_fpn_mstrain_3x_coco.py
│   │   │   ├── paa_r50_fpn_1.5x_coco.py
│   │   │   ├── paa_r50_fpn_1x_coco.py
│   │   │   ├── paa_r50_fpn_2x_coco.py
│   │   │   └── paa_r50_fpn_mstrain_3x_coco.py
│   │   ├── pafpn/
│   │   │   ├── README.md
│   │   │   ├── faster_rcnn_r50_pafpn_1x_coco.py
│   │   │   └── metafile.yml
│   │   ├── panoptic_fpn/
│   │   │   ├── README.md
│   │   │   ├── metafile.yml
│   │   │   ├── panoptic_fpn_r101_fpn_1x_coco.py
│   │   │   ├── panoptic_fpn_r101_fpn_mstrain_3x_coco.py
│   │   │   ├── panoptic_fpn_r50_fpn_1x_coco.py
│   │   │   └── panoptic_fpn_r50_fpn_mstrain_3x_coco.py
│   │   ├── pascal_voc/
│   │   │   ├── README.md
│   │   │   ├── faster_rcnn_r50_caffe_c4_mstrain_18k_voc0712.py
│   │   │   ├── faster_rcnn_r50_fpn_1x_voc0712.py
│   │   │   ├── faster_rcnn_r50_fpn_1x_voc0712_cocofmt.py
│   │   │   ├── retinanet_r50_fpn_1x_voc0712.py
│   │   │   ├── ssd300_voc0712.py
│   │   │   └── ssd512_voc0712.py
│   │   ├── pisa/
│   │   │   ├── README.md
│   │   │   ├── metafile.yml
│   │   │   ├── pisa_faster_rcnn_r50_fpn_1x_coco.py
│   │   │   ├── pisa_faster_rcnn_x101_32x4d_fpn_1x_coco.py
│   │   │   ├── pisa_mask_rcnn_r50_fpn_1x_coco.py
│   │   │   ├── pisa_mask_rcnn_x101_32x4d_fpn_1x_coco.py
│   │   │   ├── pisa_retinanet_r50_fpn_1x_coco.py
│   │   │   ├── pisa_retinanet_x101_32x4d_fpn_1x_coco.py
│   │   │   ├── pisa_ssd300_coco.py
│   │   │   └── pisa_ssd512_coco.py
│   │   ├── point_rend/
│   │   │   ├── README.md
│   │   │   ├── metafile.yml
│   │   │   ├── point_rend_r50_caffe_fpn_mstrain_1x_coco.py
│   │   │   └── point_rend_r50_caffe_fpn_mstrain_3x_coco.py
│   │   ├── pvt/
│   │   │   ├── README.md
│   │   │   ├── metafile.yml
│   │   │   ├── retinanet_pvt-l_fpn_1x_coco.py
│   │   │   ├── retinanet_pvt-m_fpn_1x_coco.py
│   │   │   ├── retinanet_pvt-s_fpn_1x_coco.py
│   │   │   ├── retinanet_pvt-t_fpn_1x_coco.py
│   │   │   ├── retinanet_pvtv2-b0_fpn_1x_coco.py
│   │   │   ├── retinanet_pvtv2-b1_fpn_1x_coco.py
│   │   │   ├── retinanet_pvtv2-b2_fpn_1x_coco.py
│   │   │   ├── retinanet_pvtv2-b3_fpn_1x_coco.py
│   │   │   ├── retinanet_pvtv2-b4_fpn_1x_coco.py
│   │   │   └── retinanet_pvtv2-b5_fpn_1x_coco.py
│   │   ├── queryinst/
│   │   │   ├── README.md
│   │   │   ├── metafile.yml
│   │   │   ├── queryinst_r101_fpn_300_proposals_crop_mstrain_480-800_3x_coco.py
│   │   │   ├── queryinst_r101_fpn_mstrain_480-800_3x_coco.py
│   │   │   ├── queryinst_r50_fpn_1x_coco.py
│   │   │   ├── queryinst_r50_fpn_300_proposals_crop_mstrain_480-800_3x_coco.py
│   │   │   └── queryinst_r50_fpn_mstrain_480-800_3x_coco.py
│   │   ├── regnet/
│   │   │   ├── README.md
│   │   │   ├── cascade_mask_rcnn_regnetx-1.6GF_fpn_mstrain_3x_coco.py
│   │   │   ├── cascade_mask_rcnn_regnetx-3.2GF_fpn_mstrain_3x_coco.py
│   │   │   ├── cascade_mask_rcnn_regnetx-400MF_fpn_mstrain_3x_coco.py
│   │   │   ├── cascade_mask_rcnn_regnetx-4GF_fpn_mstrain_3x_coco.py
│   │   │   ├── cascade_mask_rcnn_regnetx-800MF_fpn_mstrain_3x_coco.py
│   │   │   ├── faster_rcnn_regnetx-1.6GF_fpn_mstrain_3x_coco.py
│   │   │   ├── faster_rcnn_regnetx-3.2GF_fpn_1x_coco.py
│   │   │   ├── faster_rcnn_regnetx-3.2GF_fpn_2x_coco.py
│   │   │   ├── faster_rcnn_regnetx-3.2GF_fpn_mstrain_3x_coco.py
│   │   │   ├── faster_rcnn_regnetx-400MF_fpn_mstrain_3x_coco.py
│   │   │   ├── faster_rcnn_regnetx-4GF_fpn_mstrain_3x_coco.py
│   │   │   ├── faster_rcnn_regnetx-800MF_fpn_mstrain_3x_coco.py
│   │   │   ├── mask_rcnn_regnetx-1.6GF_fpn_mstrain-poly_3x_coco.py
│   │   │   ├── mask_rcnn_regnetx-12GF_fpn_1x_coco.py
│   │   │   ├── mask_rcnn_regnetx-3.2GF_fpn_1x_coco.py
│   │   │   ├── mask_rcnn_regnetx-3.2GF_fpn_mdconv_c3-c5_1x_coco.py
│   │   │   ├── mask_rcnn_regnetx-3.2GF_fpn_mstrain_3x_coco.py
│   │   │   ├── mask_rcnn_regnetx-400MF_fpn_mstrain-poly_3x_coco.py
│   │   │   ├── mask_rcnn_regnetx-4GF_fpn_1x_coco.py
│   │   │   ├── mask_rcnn_regnetx-4GF_fpn_mstrain-poly_3x_coco.py
│   │   │   ├── mask_rcnn_regnetx-6.4GF_fpn_1x_coco.py
│   │   │   ├── mask_rcnn_regnetx-800MF_fpn_mstrain-poly_3x_coco.py
│   │   │   ├── mask_rcnn_regnetx-8GF_fpn_1x_coco.py
│   │   │   ├── metafile.yml
│   │   │   ├── retinanet_regnetx-1.6GF_fpn_1x_coco.py
│   │   │   ├── retinanet_regnetx-3.2GF_fpn_1x_coco.py
│   │   │   └── retinanet_regnetx-800MF_fpn_1x_coco.py
│   │   ├── reppoints/
│   │   │   ├── README.md
│   │   │   ├── bbox_r50_grid_center_fpn_gn-neck+head_1x_coco.py
│   │   │   ├── bbox_r50_grid_fpn_gn-neck+head_1x_coco.py
│   │   │   ├── metafile.yml
│   │   │   ├── reppoints_minmax_r50_fpn_gn-neck+head_1x_coco.py
│   │   │   ├── reppoints_moment_r101_fpn_dconv_c3-c5_gn-neck+head_2x_coco.py
│   │   │   ├── reppoints_moment_r101_fpn_gn-neck+head_2x_coco.py
│   │   │   ├── reppoints_moment_r50_fpn_1x_coco.py
│   │   │   ├── reppoints_moment_r50_fpn_gn-neck+head_1x_coco.py
│   │   │   ├── reppoints_moment_r50_fpn_gn-neck+head_2x_coco.py
│   │   │   ├── reppoints_moment_x101_fpn_dconv_c3-c5_gn-neck+head_2x_coco.py
│   │   │   └── reppoints_partial_minmax_r50_fpn_gn-neck+head_1x_coco.py
│   │   ├── res2net/
│   │   │   ├── README.md
│   │   │   ├── cascade_mask_rcnn_r2_101_fpn_20e_coco.py
│   │   │   ├── cascade_rcnn_r2_101_fpn_20e_coco.py
│   │   │   ├── faster_rcnn_r2_101_fpn_2x_coco.py
│   │   │   ├── htc_r2_101_fpn_20e_coco.py
│   │   │   ├── mask_rcnn_r2_101_fpn_2x_coco.py
│   │   │   └── metafile.yml
│   │   ├── resnest/
│   │   │   ├── README.md
│   │   │   ├── cascade_mask_rcnn_s101_fpn_syncbn-backbone+head_mstrain_1x_coco.py
│   │   │   ├── cascade_mask_rcnn_s50_fpn_syncbn-backbone+head_mstrain_1x_coco.py
│   │   │   ├── cascade_rcnn_s101_fpn_syncbn-backbone+head_mstrain-range_1x_coco.py
│   │   │   ├── cascade_rcnn_s50_fpn_syncbn-backbone+head_mstrain-range_1x_coco.py
│   │   │   ├── faster_rcnn_s101_fpn_syncbn-backbone+head_mstrain-range_1x_coco.py
│   │   │   ├── faster_rcnn_s50_fpn_syncbn-backbone+head_mstrain-range_1x_coco.py
│   │   │   ├── mask_rcnn_s101_fpn_syncbn-backbone+head_mstrain_1x_coco.py
│   │   │   ├── mask_rcnn_s50_fpn_syncbn-backbone+head_mstrain_1x_coco.py
│   │   │   └── metafile.yml
│   │   ├── resnet_strikes_back/
│   │   │   ├── README.md
│   │   │   ├── cascade_mask_rcnn_r50_fpn_rsb-pretrain_1x_coco.py
│   │   │   ├── faster_rcnn_r50_fpn_rsb-pretrain_1x_coco.py
│   │   │   ├── mask_rcnn_r50_fpn_rsb-pretrain_1x_coco.py
│   │   │   ├── metafile.yml
│   │   │   └── retinanet_r50_fpn_rsb-pretrain_1x_coco.py
│   │   ├── retinanet/
│   │   │   ├── README.md
│   │   │   ├── metafile.yml
│   │   │   ├── retinanet_r101_caffe_fpn_1x_coco.py
│   │   │   ├── retinanet_r101_caffe_fpn_mstrain_3x_coco.py
│   │   │   ├── retinanet_r101_fpn_1x_coco.py
│   │   │   ├── retinanet_r101_fpn_2x_coco.py
│   │   │   ├── retinanet_r101_fpn_mstrain_640-800_3x_coco.py
│   │   │   ├── retinanet_r18_fpn_1x8_1x_coco.py
│   │   │   ├── retinanet_r18_fpn_1x_coco.py
│   │   │   ├── retinanet_r50_caffe_fpn_1x_coco.py
│   │   │   ├── retinanet_r50_caffe_fpn_mstrain_1x_coco.py
│   │   │   ├── retinanet_r50_caffe_fpn_mstrain_2x_coco.py
│   │   │   ├── retinanet_r50_caffe_fpn_mstrain_3x_coco.py
│   │   │   ├── retinanet_r50_fpn_1x_coco.py
│   │   │   ├── retinanet_r50_fpn_2x_coco.py
│   │   │   ├── retinanet_r50_fpn_90k_coco.py
│   │   │   ├── retinanet_r50_fpn_fp16_1x_coco.py
│   │   │   ├── retinanet_r50_fpn_mstrain_640-800_3x_coco.py
│   │   │   ├── retinanet_x101_32x4d_fpn_1x_coco.py
│   │   │   ├── retinanet_x101_32x4d_fpn_2x_coco.py
│   │   │   ├── retinanet_x101_64x4d_fpn_1x_coco.py
│   │   │   ├── retinanet_x101_64x4d_fpn_2x_coco.py
│   │   │   └── retinanet_x101_64x4d_fpn_mstrain_640-800_3x_coco.py
│   │   ├── rpn/
│   │   │   ├── README.md
│   │   │   ├── rpn_r101_caffe_fpn_1x_coco.py
│   │   │   ├── rpn_r101_fpn_1x_coco.py
│   │   │   ├── rpn_r101_fpn_2x_coco.py
│   │   │   ├── rpn_r50_caffe_c4_1x_coco.py
│   │   │   ├── rpn_r50_caffe_fpn_1x_coco.py
│   │   │   ├── rpn_r50_fpn_1x_coco.py
│   │   │   ├── rpn_r50_fpn_2x_coco.py
│   │   │   ├── rpn_x101_32x4d_fpn_1x_coco.py
│   │   │   ├── rpn_x101_32x4d_fpn_2x_coco.py
│   │   │   ├── rpn_x101_64x4d_fpn_1x_coco.py
│   │   │   └── rpn_x101_64x4d_fpn_2x_coco.py
│   │   ├── sabl/
│   │   │   ├── README.md
│   │   │   ├── metafile.yml
│   │   │   ├── sabl_cascade_rcnn_r101_fpn_1x_coco.py
│   │   │   ├── sabl_cascade_rcnn_r50_fpn_1x_coco.py
│   │   │   ├── sabl_faster_rcnn_r101_fpn_1x_coco.py
│   │   │   ├── sabl_faster_rcnn_r50_fpn_1x_coco.py
│   │   │   ├── sabl_retinanet_r101_fpn_1x_coco.py
│   │   │   ├── sabl_retinanet_r101_fpn_gn_1x_coco.py
│   │   │   ├── sabl_retinanet_r101_fpn_gn_2x_ms_480_960_coco.py
│   │   │   ├── sabl_retinanet_r101_fpn_gn_2x_ms_640_800_coco.py
│   │   │   ├── sabl_retinanet_r50_fpn_1x_coco.py
│   │   │   └── sabl_retinanet_r50_fpn_gn_1x_coco.py
│   │   ├── scnet/
│   │   │   ├── README.md
│   │   │   ├── metafile.yml
│   │   │   ├── scnet_r101_fpn_20e_coco.py
│   │   │   ├── scnet_r50_fpn_1x_coco.py
│   │   │   ├── scnet_r50_fpn_20e_coco.py
│   │   │   ├── scnet_x101_64x4d_fpn_20e_coco.py
│   │   │   └── scnet_x101_64x4d_fpn_8x1_20e_coco.py
│   │   ├── scratch/
│   │   │   ├── README.md
│   │   │   ├── faster_rcnn_r50_fpn_gn-all_scratch_6x_coco.py
│   │   │   ├── mask_rcnn_r50_fpn_gn-all_scratch_6x_coco.py
│   │   │   └── metafile.yml
│   │   ├── seesaw_loss/
│   │   │   ├── README.md
│   │   │   ├── cascade_mask_rcnn_r101_fpn_random_seesaw_loss_mstrain_2x_lvis_v1.py
│   │   │   ├── cascade_mask_rcnn_r101_fpn_random_seesaw_loss_normed_mask_mstrain_2x_lvis_v1.py
│   │   │   ├── cascade_mask_rcnn_r101_fpn_sample1e-3_seesaw_loss_mstrain_2x_lvis_v1.py
│   │   │   ├── cascade_mask_rcnn_r101_fpn_sample1e-3_seesaw_loss_normed_mask_mstrain_2x_lvis_v1.py
│   │   │   ├── mask_rcnn_r101_fpn_random_seesaw_loss_mstrain_2x_lvis_v1.py
│   │   │   ├── mask_rcnn_r101_fpn_random_seesaw_loss_normed_mask_mstrain_2x_lvis_v1.py
│   │   │   ├── mask_rcnn_r101_fpn_sample1e-3_seesaw_loss_mstrain_2x_lvis_v1.py
│   │   │   ├── mask_rcnn_r101_fpn_sample1e-3_seesaw_loss_normed_mask_mstrain_2x_lvis_v1.py
│   │   │   ├── mask_rcnn_r50_fpn_random_seesaw_loss_mstrain_2x_lvis_v1.py
│   │   │   ├── mask_rcnn_r50_fpn_random_seesaw_loss_normed_mask_mstrain_2x_lvis_v1.py
│   │   │   ├── mask_rcnn_r50_fpn_sample1e-3_seesaw_loss_mstrain_2x_lvis_v1.py
│   │   │   ├── mask_rcnn_r50_fpn_sample1e-3_seesaw_loss_normed_mask_mstrain_2x_lvis_v1.py
│   │   │   └── metafile.yml
│   │   ├── selfsup_pretrain/
│   │   │   ├── README.md
│   │   │   ├── mask_rcnn_r50_fpn_mocov2-pretrain_1x_coco.py
│   │   │   ├── mask_rcnn_r50_fpn_mocov2-pretrain_ms-2x_coco.py
│   │   │   ├── mask_rcnn_r50_fpn_swav-pretrain_1x_coco.py
│   │   │   └── mask_rcnn_r50_fpn_swav-pretrain_ms-2x_coco.py
│   │   ├── simple_copy_paste/
│   │   │   ├── README.md
│   │   │   ├── mask_rcnn_r50_fpn_syncbn-all_rpn-2conv_ssj_32x2_270k_coco.py
│   │   │   ├── mask_rcnn_r50_fpn_syncbn-all_rpn-2conv_ssj_32x2_90k_coco.py
│   │   │   ├── mask_rcnn_r50_fpn_syncbn-all_rpn-2conv_ssj_scp_32x2_270k_coco.py
│   │   │   └── mask_rcnn_r50_fpn_syncbn-all_rpn-2conv_ssj_scp_32x2_90k_coco.py
│   │   ├── solo/
│   │   │   ├── README.md
│   │   │   ├── decoupled_solo_light_r50_fpn_3x_coco.py
│   │   │   ├── decoupled_solo_r50_fpn_1x_coco.py
│   │   │   ├── decoupled_solo_r50_fpn_3x_coco.py
│   │   │   ├── metafile.yml
│   │   │   ├── solo_r50_fpn_1x_coco.py
│   │   │   └── solo_r50_fpn_3x_coco.py
│   │   ├── sparse_rcnn/
│   │   │   ├── README.md
│   │   │   ├── metafile.yml
│   │   │   ├── sparse_rcnn_r101_fpn_300_proposals_crop_mstrain_480-800_3x_coco.py
│   │   │   ├── sparse_rcnn_r101_fpn_mstrain_480-800_3x_coco.py
│   │   │   ├── sparse_rcnn_r50_fpn_1x_coco.py
│   │   │   ├── sparse_rcnn_r50_fpn_300_proposals_crop_mstrain_480-800_3x_coco.py
│   │   │   └── sparse_rcnn_r50_fpn_mstrain_480-800_3x_coco.py
│   │   ├── ssd/
│   │   │   ├── README.md
│   │   │   ├── metafile.yml
│   │   │   ├── ssd300_coco.py
│   │   │   ├── ssd512_coco.py
│   │   │   └── ssdlite_mobilenetv2_scratch_600e_coco.py
│   │   ├── strong_baselines/
│   │   │   ├── README.md
│   │   │   ├── mask_rcnn_r50_caffe_fpn_syncbn-all_rpn-2conv_lsj_100e_coco.py
│   │   │   ├── mask_rcnn_r50_caffe_fpn_syncbn-all_rpn-2conv_lsj_100e_fp16_coco.py
│   │   │   ├── mask_rcnn_r50_caffe_fpn_syncbn-all_rpn-2conv_lsj_400e_coco.py
│   │   │   ├── mask_rcnn_r50_fpn_syncbn-all_rpn-2conv_lsj_100e_coco.py
│   │   │   ├── mask_rcnn_r50_fpn_syncbn-all_rpn-2conv_lsj_100e_fp16_coco.py
│   │   │   └── mask_rcnn_r50_fpn_syncbn-all_rpn-2conv_lsj_50e_coco.py
│   │   ├── swin/
│   │   │   ├── README.md
│   │   │   ├── mask_rcnn_swin-s-p4-w7_fpn_fp16_ms-crop-3x_coco.py
│   │   │   ├── mask_rcnn_swin-t-p4-w7_fpn_1x_coco.py
│   │   │   ├── mask_rcnn_swin-t-p4-w7_fpn_fp16_ms-crop-3x_coco.py
│   │   │   ├── mask_rcnn_swin-t-p4-w7_fpn_ms-crop-3x_coco.py
│   │   │   ├── metafile.yml
│   │   │   └── retinanet_swin-t-p4-w7_fpn_1x_coco.py
│   │   ├── timm_example/
│   │   │   ├── README.md
│   │   │   ├── retinanet_timm_efficientnet_b1_fpn_1x_coco.py
│   │   │   └── retinanet_timm_tv_resnet50_fpn_1x_coco.py
│   │   ├── tood/
│   │   │   ├── README.md
│   │   │   ├── metafile.yml
│   │   │   ├── tood_r101_fpn_dconv_c3-c5_mstrain_2x_coco.py
│   │   │   ├── tood_r101_fpn_mstrain_2x_coco.py
│   │   │   ├── tood_r50_fpn_1x_coco.py
│   │   │   ├── tood_r50_fpn_anchor_based_1x_coco.py
│   │   │   ├── tood_r50_fpn_mstrain_2x_coco.py
│   │   │   ├── tood_x101_64x4d_fpn_dconv_c4-c5_mstrain_2x_coco.py
│   │   │   └── tood_x101_64x4d_fpn_mstrain_2x_coco.py
│   │   ├── tridentnet/
│   │   │   ├── README.md
│   │   │   ├── metafile.yml
│   │   │   ├── tridentnet_r50_caffe_1x_coco.py
│   │   │   ├── tridentnet_r50_caffe_mstrain_1x_coco.py
│   │   │   └── tridentnet_r50_caffe_mstrain_3x_coco.py
│   │   ├── vfnet/
│   │   │   ├── README.md
│   │   │   ├── metafile.yml
│   │   │   ├── vfnet_r101_fpn_1x_coco.py
│   │   │   ├── vfnet_r101_fpn_2x_coco.py
│   │   │   ├── vfnet_r101_fpn_mdconv_c3-c5_mstrain_2x_coco.py
│   │   │   ├── vfnet_r101_fpn_mstrain_2x_coco.py
│   │   │   ├── vfnet_r2_101_fpn_mdconv_c3-c5_mstrain_2x_coco.py
│   │   │   ├── vfnet_r2_101_fpn_mstrain_2x_coco.py
│   │   │   ├── vfnet_r50_fpn_1x_coco.py
│   │   │   ├── vfnet_r50_fpn_mdconv_c3-c5_mstrain_2x_coco.py
│   │   │   ├── vfnet_r50_fpn_mstrain_2x_coco.py
│   │   │   ├── vfnet_x101_32x4d_fpn_mdconv_c3-c5_mstrain_2x_coco.py
│   │   │   ├── vfnet_x101_32x4d_fpn_mstrain_2x_coco.py
│   │   │   ├── vfnet_x101_64x4d_fpn_mdconv_c3-c5_mstrain_2x_coco.py
│   │   │   └── vfnet_x101_64x4d_fpn_mstrain_2x_coco.py
│   │   ├── wider_face/
│   │   │   ├── README.md
│   │   │   └── ssd300_wider_face.py
│   │   ├── yolact/
│   │   │   ├── README.md
│   │   │   ├── metafile.yml
│   │   │   ├── yolact_r101_1x8_coco.py
│   │   │   ├── yolact_r50_1x8_coco.py
│   │   │   └── yolact_r50_8x8_coco.py
│   │   ├── yolo/
│   │   │   ├── README.md
│   │   │   ├── metafile.yml
│   │   │   ├── yolov3_d53_320_273e_coco.py
│   │   │   ├── yolov3_d53_fp16_mstrain-608_273e_coco.py
│   │   │   ├── yolov3_d53_mstrain-416_273e_coco.py
│   │   │   ├── yolov3_d53_mstrain-608_273e_coco.py
│   │   │   ├── yolov3_mobilenetv2_320_300e_coco.py
│   │   │   └── yolov3_mobilenetv2_mstrain-416_300e_coco.py
│   │   ├── yolof/
│   │   │   ├── README.md
│   │   │   ├── metafile.yml
│   │   │   ├── yolof_r50_c5_8x8_1x_coco.py
│   │   │   └── yolof_r50_c5_8x8_iter-1x_coco.py
│   │   └── yolox/
│   │       ├── README.md
│   │       ├── metafile.yml
│   │       ├── yolox_l_8x8_300e_coco.py
│   │       ├── yolox_m_8x8_300e_coco.py
│   │       ├── yolox_nano_8x8_300e_coco.py
│   │       ├── yolox_s_8x8_300e_coco.py
│   │       ├── yolox_tiny_8x8_300e_coco.py
│   │       └── yolox_x_8x8_300e_coco.py
│   ├── demo/
│   │   ├── MMDet_InstanceSeg_Tutorial.ipynb
│   │   ├── MMDet_Tutorial.ipynb
│   │   ├── create_result_gif.py
│   │   ├── image_demo.py
│   │   ├── inference_demo.ipynb
│   │   ├── video_demo.py
│   │   └── webcam_demo.py
│   ├── docker/
│   │   ├── Dockerfile
│   │   └── serve/
│   │       ├── Dockerfile
│   │       ├── config.properties
│   │       └── entrypoint.sh
│   ├── docs/
│   │   ├── en/
│   │   │   ├── 1_exist_data_model.md
│   │   │   ├── 2_new_data_model.md
│   │   │   ├── 3_exist_data_new_model.md
│   │   │   ├── Makefile
│   │   │   ├── _static/
│   │   │   │   └── css/
│   │   │   │       └── readthedocs.css
│   │   │   ├── api.rst
│   │   │   ├── changelog.md
│   │   │   ├── compatibility.md
│   │   │   ├── conf.py
│   │   │   ├── conventions.md
│   │   │   ├── faq.md
│   │   │   ├── get_started.md
│   │   │   ├── index.rst
│   │   │   ├── make.bat
│   │   │   ├── model_zoo.md
│   │   │   ├── projects.md
│   │   │   ├── robustness_benchmarking.md
│   │   │   ├── stat.py
│   │   │   ├── switch_language.md
│   │   │   ├── tutorials/
│   │   │   │   ├── config.md
│   │   │   │   ├── customize_dataset.md
│   │   │   │   ├── customize_losses.md
│   │   │   │   ├── customize_models.md
│   │   │   │   ├── customize_runtime.md
│   │   │   │   ├── data_pipeline.md
│   │   │   │   ├── finetune.md
│   │   │   │   ├── how_to.md
│   │   │   │   ├── index.rst
│   │   │   │   ├── init_cfg.md
│   │   │   │   ├── onnx2tensorrt.md
│   │   │   │   ├── pytorch2onnx.md
│   │   │   │   └── test_results_submission.md
│   │   │   └── useful_tools.md
│   │   └── zh_cn/
│   │       ├── 1_exist_data_model.md
│   │       ├── 2_new_data_model.md
│   │       ├── 3_exist_data_new_model.md
│   │       ├── Makefile
│   │       ├── _static/
│   │       │   └── css/
│   │       │       └── readthedocs.css
│   │       ├── api.rst
│   │       ├── article.md
│   │       ├── compatibility.md
│   │       ├── conf.py
│   │       ├── conventions.md
│   │       ├── faq.md
│   │       ├── get_started.md
│   │       ├── index.rst
│   │       ├── make.bat
│   │       ├── model_zoo.md
│   │       ├── projects.md
│   │       ├── robustness_benchmarking.md
│   │       ├── stat.py
│   │       ├── switch_language.md
│   │       ├── tutorials/
│   │       │   ├── config.md
│   │       │   ├── customize_dataset.md
│   │       │   ├── customize_losses.md
│   │       │   ├── customize_models.md
│   │       │   ├── customize_runtime.md
│   │       │   ├── data_pipeline.md
│   │       │   ├── finetune.md
│   │       │   ├── how_to.md
│   │       │   ├── index.rst
│   │       │   ├── init_cfg.md
│   │       │   ├── onnx2tensorrt.md
│   │       │   └── pytorch2onnx.md
│   │       └── useful_tools.md
│   ├── huge_image_infer.py
│   ├── install_apex.sh
│   ├── mmcv_custom/
│   │   ├── __init__.py
│   │   ├── checkpoint.py
│   │   ├── hivit_layer_decay_optimizer_constructor.py
│   │   ├── layer_decay_optimizer_constructor.py
│   │   └── runner/
│   │       ├── __init__.py
│   │       ├── checkpoint.py
│   │       └── epoch_based_runner.py
│   ├── mmdet/
│   │   ├── .mim/
│   │   │   ├── configs/
│   │   │   │   ├── _base_/
│   │   │   │   │   ├── datasets/
│   │   │   │   │   │   ├── cityscapes_detection.py
│   │   │   │   │   │   ├── cityscapes_instance.py
│   │   │   │   │   │   ├── coco_detection.py
│   │   │   │   │   │   ├── coco_instance.py
│   │   │   │   │   │   ├── coco_instance_semantic.py
│   │   │   │   │   │   ├── coco_panoptic.py
│   │   │   │   │   │   ├── deepfashion.py
│   │   │   │   │   │   ├── lvis_v0.5_instance.py
│   │   │   │   │   │   ├── lvis_v1_instance.py
│   │   │   │   │   │   ├── openimages_detection.py
│   │   │   │   │   │   ├── voc0712.py
│   │   │   │   │   │   └── wider_face.py
│   │   │   │   │   ├── default_runtime.py
│   │   │   │   │   ├── models/
│   │   │   │   │   │   ├── cascade_mask_rcnn_r50_fpn.py
│   │   │   │   │   │   ├── cascade_rcnn_r50_fpn.py
│   │   │   │   │   │   ├── fast_rcnn_r50_fpn.py
│   │   │   │   │   │   ├── faster_rcnn_r50_caffe_c4.py
│   │   │   │   │   │   ├── faster_rcnn_r50_caffe_dc5.py
│   │   │   │   │   │   ├── faster_rcnn_r50_fpn.py
│   │   │   │   │   │   ├── mask_rcnn_r50_caffe_c4.py
│   │   │   │   │   │   ├── mask_rcnn_r50_fpn.py
│   │   │   │   │   │   ├── retinanet_r50_fpn.py
│   │   │   │   │   │   ├── rpn_r50_caffe_c4.py
│   │   │   │   │   │   ├── rpn_r50_fpn.py
│   │   │   │   │   │   └── ssd300.py
│   │   │   │   │   └── schedules/
│   │   │   │   │       ├── schedule_1x.py
│   │   │   │   │       ├── schedule_20e.py
│   │   │   │   │       └── schedule_2x.py
│   │   │   │   ├── _hivit_/
│   │   │   │   │   ├── fasterrcnn.py
│   │   │   │   │   ├── hivit_SAR_AIRcraft.py
│   │   │   │   │   ├── hivit_SSDD.py
│   │   │   │   │   ├── hivit_base_AIRShip.py
│   │   │   │   │   ├── hivit_base_HRSID.py
│   │   │   │   │   ├── hivit_base_MSAR.py
│   │   │   │   │   ├── hivit_base_OGSOD.py
│   │   │   │   │   ├── hivit_base_SADD.py
│   │   │   │   │   ├── hivit_base_SARAircraft.py
│   │   │   │   │   ├── hivit_base_SARDet.py
│   │   │   │   │   ├── hivit_base_SIVED.py
│   │   │   │   │   ├── hivit_base_SSDD.py
│   │   │   │   │   ├── hivit_base_Shipdataset.py
│   │   │   │   │   └── hivit_base_mask_rcnn_fpn_3x_coco.py
│   │   │   │   ├── albu_example/
│   │   │   │   │   ├── README.md
│   │   │   │   │   └── mask_rcnn_r50_fpn_albu_1x_coco.py
│   │   │   │   ├── atss/
│   │   │   │   │   ├── README.md
│   │   │   │   │   ├── atss_r101_fpn_1x_coco.py
│   │   │   │   │   ├── atss_r50_fpn_1x_coco.py
│   │   │   │   │   └── metafile.yml
│   │   │   │   ├── autoassign/
│   │   │   │   │   ├── README.md
│   │   │   │   │   ├── autoassign_r50_fpn_8x2_1x_coco.py
│   │   │   │   │   └── metafile.yml
│   │   │   │   ├── carafe/
│   │   │   │   │   ├── README.md
│   │   │   │   │   ├── faster_rcnn_r50_fpn_carafe_1x_coco.py
│   │   │   │   │   ├── mask_rcnn_r50_fpn_carafe_1x_coco.py
│   │   │   │   │   └── metafile.yml
│   │   │   │   ├── cascade_rcnn/
│   │   │   │   │   ├── README.md
│   │   │   │   │   ├── cascade_mask_rcnn_r101_caffe_fpn_1x_coco.py
│   │   │   │   │   ├── cascade_mask_rcnn_r101_caffe_fpn_mstrain_3x_coco.py
│   │   │   │   │   ├── cascade_mask_rcnn_r101_fpn_1x_coco.py
│   │   │   │   │   ├── cascade_mask_rcnn_r101_fpn_20e_coco.py
│   │   │   │   │   ├── cascade_mask_rcnn_r101_fpn_mstrain_3x_coco.py
│   │   │   │   │   ├── cascade_mask_rcnn_r50_caffe_fpn_1x_coco.py
│   │   │   │   │   ├── cascade_mask_rcnn_r50_caffe_fpn_mstrain_3x_coco.py
│   │   │   │   │   ├── cascade_mask_rcnn_r50_fpn_1x_coco.py
│   │   │   │   │   ├── cascade_mask_rcnn_r50_fpn_20e_coco.py
│   │   │   │   │   ├── cascade_mask_rcnn_r50_fpn_mstrain_3x_coco.py
│   │   │   │   │   ├── cascade_mask_rcnn_x101_32x4d_fpn_1x_coco.py
│   │   │   │   │   ├── cascade_mask_rcnn_x101_32x4d_fpn_20e_coco.py
│   │   │   │   │   ├── cascade_mask_rcnn_x101_32x4d_fpn_mstrain_3x_coco.py
│   │   │   │   │   ├── cascade_mask_rcnn_x101_32x8d_fpn_mstrain_3x_coco.py
│   │   │   │   │   ├── cascade_mask_rcnn_x101_64x4d_fpn_1x_coco.py
│   │   │   │   │   ├── cascade_mask_rcnn_x101_64x4d_fpn_20e_coco.py
│   │   │   │   │   ├── cascade_mask_rcnn_x101_64x4d_fpn_mstrain_3x_coco.py
│   │   │   │   │   ├── cascade_rcnn_r101_caffe_fpn_1x_coco.py
│   │   │   │   │   ├── cascade_rcnn_r101_fpn_1x_coco.py
│   │   │   │   │   ├── cascade_rcnn_r101_fpn_20e_coco.py
│   │   │   │   │   ├── cascade_rcnn_r50_caffe_fpn_1x_coco.py
│   │   │   │   │   ├── cascade_rcnn_r50_fpn_1x_coco.py
│   │   │   │   │   ├── cascade_rcnn_r50_fpn_20e_coco.py
│   │   │   │   │   ├── cascade_rcnn_x101_32x4d_fpn_1x_coco.py
│   │   │   │   │   ├── cascade_rcnn_x101_32x4d_fpn_20e_coco.py
│   │   │   │   │   ├── cascade_rcnn_x101_64x4d_fpn_1x_coco.py
│   │   │   │   │   ├── cascade_rcnn_x101_64x4d_fpn_20e_coco.py
│   │   │   │   │   └── metafile.yml
│   │   │   │   ├── cascade_rpn/
│   │   │   │   │   ├── README.md
│   │   │   │   │   ├── crpn_fast_rcnn_r50_caffe_fpn_1x_coco.py
│   │   │   │   │   ├── crpn_faster_rcnn_r50_caffe_fpn_1x_coco.py
│   │   │   │   │   ├── crpn_r50_caffe_fpn_1x_coco.py
│   │   │   │   │   └── metafile.yml
│   │   │   │   ├── centernet/
│   │   │   │   │   ├── README.md
│   │   │   │   │   ├── centernet_resnet18_140e_coco.py
│   │   │   │   │   ├── centernet_resnet18_dcnv2_140e_coco.py
│   │   │   │   │   └── metafile.yml
│   │   │   │   ├── centripetalnet/
│   │   │   │   │   ├── README.md
│   │   │   │   │   ├── centripetalnet_hourglass104_mstest_16x6_210e_coco.py
│   │   │   │   │   └── metafile.yml
│   │   │   │   ├── cityscapes/
│   │   │   │   │   ├── README.md
│   │   │   │   │   ├── faster_rcnn_r50_fpn_1x_cityscapes.py
│   │   │   │   │   └── mask_rcnn_r50_fpn_1x_cityscapes.py
│   │   │   │   ├── common/
│   │   │   │   │   ├── lsj_100e_coco_instance.py
│   │   │   │   │   ├── mstrain-poly_3x_coco_instance.py
│   │   │   │   │   ├── mstrain_3x_coco.py
│   │   │   │   │   ├── mstrain_3x_coco_instance.py
│   │   │   │   │   ├── ssj_270k_coco_instance.py
│   │   │   │   │   └── ssj_scp_270k_coco_instance.py
│   │   │   │   ├── cornernet/
│   │   │   │   │   ├── README.md
│   │   │   │   │   ├── cornernet_hourglass104_mstest_10x5_210e_coco.py
│   │   │   │   │   ├── cornernet_hourglass104_mstest_32x3_210e_coco.py
│   │   │   │   │   ├── cornernet_hourglass104_mstest_8x6_210e_coco.py
│   │   │   │   │   └── metafile.yml
│   │   │   │   ├── dcn/
│   │   │   │   │   ├── README.md
│   │   │   │   │   ├── cascade_mask_rcnn_r101_fpn_dconv_c3-c5_1x_coco.py
│   │   │   │   │   ├── cascade_mask_rcnn_r50_fpn_dconv_c3-c5_1x_coco.py
│   │   │   │   │   ├── cascade_mask_rcnn_x101_32x4d_fpn_dconv_c3-c5_1x_coco.py
│   │   │   │   │   ├── cascade_rcnn_r101_fpn_dconv_c3-c5_1x_coco.py
│   │   │   │   │   ├── cascade_rcnn_r50_fpn_dconv_c3-c5_1x_coco.py
│   │   │   │   │   ├── faster_rcnn_r101_fpn_dconv_c3-c5_1x_coco.py
│   │   │   │   │   ├── faster_rcnn_r50_fpn_dconv_c3-c5_1x_coco.py
│   │   │   │   │   ├── faster_rcnn_r50_fpn_dpool_1x_coco.py
│   │   │   │   │   ├── faster_rcnn_x101_32x4d_fpn_dconv_c3-c5_1x_coco.py
│   │   │   │   │   ├── mask_rcnn_r101_fpn_dconv_c3-c5_1x_coco.py
│   │   │   │   │   ├── mask_rcnn_r50_fpn_dconv_c3-c5_1x_coco.py
│   │   │   │   │   ├── mask_rcnn_r50_fpn_fp16_dconv_c3-c5_1x_coco.py
│   │   │   │   │   └── metafile.yml
│   │   │   │   ├── dcnv2/
│   │   │   │   │   ├── README.md
│   │   │   │   │   ├── faster_rcnn_r50_fpn_mdconv_c3-c5_1x_coco.py
│   │   │   │   │   ├── faster_rcnn_r50_fpn_mdconv_c3-c5_group4_1x_coco.py
│   │   │   │   │   ├── faster_rcnn_r50_fpn_mdpool_1x_coco.py
│   │   │   │   │   ├── mask_rcnn_r50_fpn_fp16_mdconv_c3-c5_1x_coco.py
│   │   │   │   │   ├── mask_rcnn_r50_fpn_mdconv_c3-c5_1x_coco.py
│   │   │   │   │   └── metafile.yml
│   │   │   │   ├── deepfashion/
│   │   │   │   │   ├── README.md
│   │   │   │   │   └── mask_rcnn_r50_fpn_15e_deepfashion.py
│   │   │   │   ├── deformable_detr/
│   │   │   │   │   ├── README.md
│   │   │   │   │   ├── deformable_detr_r50_16x2_50e_coco.py
│   │   │   │   │   ├── deformable_detr_refine_r50_16x2_50e_coco.py
│   │   │   │   │   ├── deformable_detr_twostage_refine_r50_16x2_50e_coco.py
│   │   │   │   │   └── metafile.yml
│   │   │   │   ├── detectors/
│   │   │   │   │   ├── README.md
│   │   │   │   │   ├── cascade_rcnn_r50_rfp_1x_coco.py
│   │   │   │   │   ├── cascade_rcnn_r50_sac_1x_coco.py
│   │   │   │   │   ├── detectors_cascade_rcnn_r50_1x_coco.py
│   │   │   │   │   ├── detectors_htc_r101_20e_coco.py
│   │   │   │   │   ├── detectors_htc_r50_1x_coco.py
│   │   │   │   │   ├── htc_r50_rfp_1x_coco.py
│   │   │   │   │   ├── htc_r50_sac_1x_coco.py
│   │   │   │   │   └── metafile.yml
│   │   │   │   ├── detr/
│   │   │   │   │   ├── README.md
│   │   │   │   │   ├── detr_r50_8x2_150e_coco.py
│   │   │   │   │   └── metafile.yml
│   │   │   │   ├── double_heads/
│   │   │   │   │   ├── README.md
│   │   │   │   │   ├── dh_faster_rcnn_r50_fpn_1x_coco.py
│   │   │   │   │   └── metafile.yml
│   │   │   │   ├── dyhead/
│   │   │   │   │   ├── README.md
│   │   │   │   │   ├── atss_r50_caffe_fpn_dyhead_1x_coco.py
│   │   │   │   │   ├── atss_r50_fpn_dyhead_1x_coco.py
│   │   │   │   │   └── metafile.yml
│   │   │   │   ├── dynamic_rcnn/
│   │   │   │   │   ├── README.md
│   │   │   │   │   ├── dynamic_rcnn_r50_fpn_1x_coco.py
│   │   │   │   │   └── metafile.yml
│   │   │   │   ├── efficientnet/
│   │   │   │   │   ├── README.md
│   │   │   │   │   ├── metafile.yml
│   │   │   │   │   └── retinanet_effb3_fpn_crop896_8x4_1x_coco.py
│   │   │   │   ├── empirical_attention/
│   │   │   │   │   ├── README.md
│   │   │   │   │   ├── faster_rcnn_r50_fpn_attention_0010_1x_coco.py
│   │   │   │   │   ├── faster_rcnn_r50_fpn_attention_0010_dcn_1x_coco.py
│   │   │   │   │   ├── faster_rcnn_r50_fpn_attention_1111_1x_coco.py
│   │   │   │   │   ├── faster_rcnn_r50_fpn_attention_1111_dcn_1x_coco.py
│   │   │   │   │   └── metafile.yml
│   │   │   │   ├── fast_rcnn/
│   │   │   │   │   ├── README.md
│   │   │   │   │   ├── fast_rcnn_r101_caffe_fpn_1x_coco.py
│   │   │   │   │   ├── fast_rcnn_r101_fpn_1x_coco.py
│   │   │   │   │   ├── fast_rcnn_r101_fpn_2x_coco.py
│   │   │   │   │   ├── fast_rcnn_r50_caffe_fpn_1x_coco.py
│   │   │   │   │   ├── fast_rcnn_r50_fpn_1x_coco.py
│   │   │   │   │   └── fast_rcnn_r50_fpn_2x_coco.py
│   │   │   │   ├── faster_rcnn/
│   │   │   │   │   ├── README.md
│   │   │   │   │   ├── faster_rcnn_r101_caffe_fpn_1x_coco.py
│   │   │   │   │   ├── faster_rcnn_r101_caffe_fpn_mstrain_3x_coco.py
│   │   │   │   │   ├── faster_rcnn_r101_fpn_1x_coco.py
│   │   │   │   │   ├── faster_rcnn_r101_fpn_2x_coco.py
│   │   │   │   │   ├── faster_rcnn_r101_fpn_mstrain_3x_coco.py
│   │   │   │   │   ├── faster_rcnn_r50_caffe_c4_1x_coco.py
│   │   │   │   │   ├── faster_rcnn_r50_caffe_c4_mstrain_1x_coco.py
│   │   │   │   │   ├── faster_rcnn_r50_caffe_dc5_1x_coco.py
│   │   │   │   │   ├── faster_rcnn_r50_caffe_dc5_mstrain_1x_coco.py
│   │   │   │   │   ├── faster_rcnn_r50_caffe_dc5_mstrain_3x_coco.py
│   │   │   │   │   ├── faster_rcnn_r50_caffe_fpn_1x_coco.py
│   │   │   │   │   ├── faster_rcnn_r50_caffe_fpn_90k_coco.py
│   │   │   │   │   ├── faster_rcnn_r50_caffe_fpn_mstrain_1x_coco-person-bicycle-car.py
│   │   │   │   │   ├── faster_rcnn_r50_caffe_fpn_mstrain_1x_coco-person.py
│   │   │   │   │   ├── faster_rcnn_r50_caffe_fpn_mstrain_1x_coco.py
│   │   │   │   │   ├── faster_rcnn_r50_caffe_fpn_mstrain_2x_coco.py
│   │   │   │   │   ├── faster_rcnn_r50_caffe_fpn_mstrain_3x_coco.py
│   │   │   │   │   ├── faster_rcnn_r50_caffe_fpn_mstrain_90k_coco.py
│   │   │   │   │   ├── faster_rcnn_r50_fpn_1x_coco.py
│   │   │   │   │   ├── faster_rcnn_r50_fpn_2x_coco.py
│   │   │   │   │   ├── faster_rcnn_r50_fpn_bounded_iou_1x_coco.py
│   │   │   │   │   ├── faster_rcnn_r50_fpn_ciou_1x_coco.py
│   │   │   │   │   ├── faster_rcnn_r50_fpn_fp16_1x_coco.py
│   │   │   │   │   ├── faster_rcnn_r50_fpn_giou_1x_coco.py
│   │   │   │   │   ├── faster_rcnn_r50_fpn_iou_1x_coco.py
│   │   │   │   │   ├── faster_rcnn_r50_fpn_mstrain_3x_coco.py
│   │   │   │   │   ├── faster_rcnn_r50_fpn_ohem_1x_coco.py
│   │   │   │   │   ├── faster_rcnn_r50_fpn_soft_nms_1x_coco.py
│   │   │   │   │   ├── faster_rcnn_r50_fpn_tnr-pretrain_1x_coco.py
│   │   │   │   │   ├── faster_rcnn_x101_32x4d_fpn_1x_coco.py
│   │   │   │   │   ├── faster_rcnn_x101_32x4d_fpn_2x_coco.py
│   │   │   │   │   ├── faster_rcnn_x101_32x4d_fpn_mstrain_3x_coco.py
│   │   │   │   │   ├── faster_rcnn_x101_32x8d_fpn_mstrain_3x_coco.py
│   │   │   │   │   ├── faster_rcnn_x101_64x4d_fpn_1x_coco.py
│   │   │   │   │   ├── faster_rcnn_x101_64x4d_fpn_2x_coco.py
│   │   │   │   │   ├── faster_rcnn_x101_64x4d_fpn_mstrain_3x_coco.py
│   │   │   │   │   └── metafile.yml
│   │   │   │   ├── fcos/
│   │   │   │   │   ├── README.md
│   │   │   │   │   ├── fcos_center-normbbox-centeronreg-giou_r50_caffe_fpn_gn-head_1x_coco.py
│   │   │   │   │   ├── fcos_center-normbbox-centeronreg-giou_r50_caffe_fpn_gn-head_dcn_1x_coco.py
│   │   │   │   │   ├── fcos_center_r50_caffe_fpn_gn-head_1x_coco.py
│   │   │   │   │   ├── fcos_r101_caffe_fpn_gn-head_1x_coco.py
│   │   │   │   │   ├── fcos_r101_caffe_fpn_gn-head_mstrain_640-800_2x_coco.py
│   │   │   │   │   ├── fcos_r50_caffe_fpn_gn-head_1x_coco.py
│   │   │   │   │   ├── fcos_r50_caffe_fpn_gn-head_4x4_1x_coco.py
│   │   │   │   │   ├── fcos_r50_caffe_fpn_gn-head_mstrain_640-800_2x_coco.py
│   │   │   │   │   ├── fcos_x101_64x4d_fpn_gn-head_mstrain_640-800_2x_coco.py
│   │   │   │   │   └── metafile.yml
│   │   │   │   ├── foveabox/
│   │   │   │   │   ├── README.md
│   │   │   │   │   ├── fovea_align_r101_fpn_gn-head_4x4_2x_coco.py
│   │   │   │   │   ├── fovea_align_r101_fpn_gn-head_mstrain_640-800_4x4_2x_coco.py
│   │   │   │   │   ├── fovea_align_r50_fpn_gn-head_4x4_2x_coco.py
│   │   │   │   │   ├── fovea_align_r50_fpn_gn-head_mstrain_640-800_4x4_2x_coco.py
│   │   │   │   │   ├── fovea_r101_fpn_4x4_1x_coco.py
│   │   │   │   │   ├── fovea_r101_fpn_4x4_2x_coco.py
│   │   │   │   │   ├── fovea_r50_fpn_4x4_1x_coco.py
│   │   │   │   │   ├── fovea_r50_fpn_4x4_2x_coco.py
│   │   │   │   │   └── metafile.yml
│   │   │   │   ├── fpg/
│   │   │   │   │   ├── README.md
│   │   │   │   │   ├── faster_rcnn_r50_fpg-chn128_crop640_50e_coco.py
│   │   │   │   │   ├── faster_rcnn_r50_fpg_crop640_50e_coco.py
│   │   │   │   │   ├── faster_rcnn_r50_fpn_crop640_50e_coco.py
│   │   │   │   │   ├── mask_rcnn_r50_fpg-chn128_crop640_50e_coco.py
│   │   │   │   │   ├── mask_rcnn_r50_fpg_crop640_50e_coco.py
│   │   │   │   │   ├── mask_rcnn_r50_fpn_crop640_50e_coco.py
│   │   │   │   │   ├── metafile.yml
│   │   │   │   │   ├── retinanet_r50_fpg-chn128_crop640_50e_coco.py
│   │   │   │   │   └── retinanet_r50_fpg_crop640_50e_coco.py
│   │   │   │   ├── free_anchor/
│   │   │   │   │   ├── README.md
│   │   │   │   │   ├── metafile.yml
│   │   │   │   │   ├── retinanet_free_anchor_r101_fpn_1x_coco.py
│   │   │   │   │   ├── retinanet_free_anchor_r50_fpn_1x_coco.py
│   │   │   │   │   └── retinanet_free_anchor_x101_32x4d_fpn_1x_coco.py
│   │   │   │   ├── fsaf/
│   │   │   │   │   ├── README.md
│   │   │   │   │   ├── fsaf_r101_fpn_1x_coco.py
│   │   │   │   │   ├── fsaf_r50_fpn_1x_coco.py
│   │   │   │   │   ├── fsaf_x101_64x4d_fpn_1x_coco.py
│   │   │   │   │   └── metafile.yml
│   │   │   │   ├── gcnet/
│   │   │   │   │   ├── README.md
│   │   │   │   │   ├── cascade_mask_rcnn_x101_32x4d_fpn_syncbn-backbone_1x_coco.py
│   │   │   │   │   ├── cascade_mask_rcnn_x101_32x4d_fpn_syncbn-backbone_dconv_c3-c5_1x_coco.py
│   │   │   │   │   ├── cascade_mask_rcnn_x101_32x4d_fpn_syncbn-backbone_dconv_c3-c5_r16_gcb_c3-c5_1x_coco.py
│   │   │   │   │   ├── cascade_mask_rcnn_x101_32x4d_fpn_syncbn-backbone_dconv_c3-c5_r4_gcb_c3-c5_1x_coco.py
│   │   │   │   │   ├── cascade_mask_rcnn_x101_32x4d_fpn_syncbn-backbone_r16_gcb_c3-c5_1x_coco.py
│   │   │   │   │   ├── cascade_mask_rcnn_x101_32x4d_fpn_syncbn-backbone_r4_gcb_c3-c5_1x_coco.py
│   │   │   │   │   ├── mask_rcnn_r101_fpn_r16_gcb_c3-c5_1x_coco.py
│   │   │   │   │   ├── mask_rcnn_r101_fpn_r4_gcb_c3-c5_1x_coco.py
│   │   │   │   │   ├── mask_rcnn_r101_fpn_syncbn-backbone_1x_coco.py
│   │   │   │   │   ├── mask_rcnn_r101_fpn_syncbn-backbone_r16_gcb_c3-c5_1x_coco.py
│   │   │   │   │   ├── mask_rcnn_r101_fpn_syncbn-backbone_r4_gcb_c3-c5_1x_coco.py
│   │   │   │   │   ├── mask_rcnn_r50_fpn_r16_gcb_c3-c5_1x_coco.py
│   │   │   │   │   ├── mask_rcnn_r50_fpn_r4_gcb_c3-c5_1x_coco.py
│   │   │   │   │   ├── mask_rcnn_r50_fpn_syncbn-backbone_1x_coco.py
│   │   │   │   │   ├── mask_rcnn_r50_fpn_syncbn-backbone_r16_gcb_c3-c5_1x_coco.py
│   │   │   │   │   ├── mask_rcnn_r50_fpn_syncbn-backbone_r4_gcb_c3-c5_1x_coco.py
│   │   │   │   │   ├── mask_rcnn_x101_32x4d_fpn_syncbn-backbone_1x_coco.py
│   │   │   │   │   ├── mask_rcnn_x101_32x4d_fpn_syncbn-backbone_r16_gcb_c3-c5_1x_coco.py
│   │   │   │   │   ├── mask_rcnn_x101_32x4d_fpn_syncbn-backbone_r4_gcb_c3-c5_1x_coco.py
│   │   │   │   │   └── metafile.yml
│   │   │   │   ├── gfl/
│   │   │   │   │   ├── README.md
│   │   │   │   │   ├── gfl_r101_fpn_dconv_c3-c5_mstrain_2x_coco.py
│   │   │   │   │   ├── gfl_r101_fpn_mstrain_2x_coco.py
│   │   │   │   │   ├── gfl_r50_fpn_1x_coco.py
│   │   │   │   │   ├── gfl_r50_fpn_mstrain_2x_coco.py
│   │   │   │   │   ├── gfl_x101_32x4d_fpn_dconv_c4-c5_mstrain_2x_coco.py
│   │   │   │   │   ├── gfl_x101_32x4d_fpn_mstrain_2x_coco.py
│   │   │   │   │   └── metafile.yml
│   │   │   │   ├── ghm/
│   │   │   │   │   ├── README.md
│   │   │   │   │   ├── metafile.yml
│   │   │   │   │   ├── retinanet_ghm_r101_fpn_1x_coco.py
│   │   │   │   │   ├── retinanet_ghm_r50_fpn_1x_coco.py
│   │   │   │   │   ├── retinanet_ghm_x101_32x4d_fpn_1x_coco.py
│   │   │   │   │   └── retinanet_ghm_x101_64x4d_fpn_1x_coco.py
│   │   │   │   ├── gn/
│   │   │   │   │   ├── README.md
│   │   │   │   │   ├── mask_rcnn_r101_fpn_gn-all_2x_coco.py
│   │   │   │   │   ├── mask_rcnn_r101_fpn_gn-all_3x_coco.py
│   │   │   │   │   ├── mask_rcnn_r50_fpn_gn-all_2x_coco.py
│   │   │   │   │   ├── mask_rcnn_r50_fpn_gn-all_3x_coco.py
│   │   │   │   │   ├── mask_rcnn_r50_fpn_gn-all_contrib_2x_coco.py
│   │   │   │   │   ├── mask_rcnn_r50_fpn_gn-all_contrib_3x_coco.py
│   │   │   │   │   └── metafile.yml
│   │   │   │   ├── gn+ws/
│   │   │   │   │   ├── README.md
│   │   │   │   │   ├── faster_rcnn_r101_fpn_gn_ws-all_1x_coco.py
│   │   │   │   │   ├── faster_rcnn_r50_fpn_gn_ws-all_1x_coco.py
│   │   │   │   │   ├── faster_rcnn_x101_32x4d_fpn_gn_ws-all_1x_coco.py
│   │   │   │   │   ├── faster_rcnn_x50_32x4d_fpn_gn_ws-all_1x_coco.py
│   │   │   │   │   ├── mask_rcnn_r101_fpn_gn_ws-all_20_23_24e_coco.py
│   │   │   │   │   ├── mask_rcnn_r101_fpn_gn_ws-all_2x_coco.py
│   │   │   │   │   ├── mask_rcnn_r50_fpn_gn_ws-all_20_23_24e_coco.py
│   │   │   │   │   ├── mask_rcnn_r50_fpn_gn_ws-all_2x_coco.py
│   │   │   │   │   ├── mask_rcnn_x101_32x4d_fpn_gn_ws-all_20_23_24e_coco.py
│   │   │   │   │   ├── mask_rcnn_x101_32x4d_fpn_gn_ws-all_2x_coco.py
│   │   │   │   │   ├── mask_rcnn_x50_32x4d_fpn_gn_ws-all_20_23_24e_coco.py
│   │   │   │   │   ├── mask_rcnn_x50_32x4d_fpn_gn_ws-all_2x_coco.py
│   │   │   │   │   └── metafile.yml
│   │   │   │   ├── grid_rcnn/
│   │   │   │   │   ├── README.md
│   │   │   │   │   ├── grid_rcnn_r101_fpn_gn-head_2x_coco.py
│   │   │   │   │   ├── grid_rcnn_r50_fpn_gn-head_1x_coco.py
│   │   │   │   │   ├── grid_rcnn_r50_fpn_gn-head_2x_coco.py
│   │   │   │   │   ├── grid_rcnn_x101_32x4d_fpn_gn-head_2x_coco.py
│   │   │   │   │   ├── grid_rcnn_x101_64x4d_fpn_gn-head_2x_coco.py
│   │   │   │   │   └── metafile.yml
│   │   │   │   ├── groie/
│   │   │   │   │   ├── README.md
│   │   │   │   │   ├── faster_rcnn_r50_fpn_groie_1x_coco.py
│   │   │   │   │   ├── grid_rcnn_r50_fpn_gn-head_groie_1x_coco.py
│   │   │   │   │   ├── mask_rcnn_r101_fpn_syncbn-backbone_r4_gcb_c3-c5_groie_1x_coco.py
│   │   │   │   │   ├── mask_rcnn_r50_fpn_groie_1x_coco.py
│   │   │   │   │   ├── mask_rcnn_r50_fpn_syncbn-backbone_r4_gcb_c3-c5_groie_1x_coco.py
│   │   │   │   │   └── metafile.yml
│   │   │   │   ├── guided_anchoring/
│   │   │   │   │   ├── README.md
│   │   │   │   │   ├── ga_fast_r50_caffe_fpn_1x_coco.py
│   │   │   │   │   ├── ga_faster_r101_caffe_fpn_1x_coco.py
│   │   │   │   │   ├── ga_faster_r50_caffe_fpn_1x_coco.py
│   │   │   │   │   ├── ga_faster_r50_fpn_1x_coco.py
│   │   │   │   │   ├── ga_faster_x101_32x4d_fpn_1x_coco.py
│   │   │   │   │   ├── ga_faster_x101_64x4d_fpn_1x_coco.py
│   │   │   │   │   ├── ga_retinanet_r101_caffe_fpn_1x_coco.py
│   │   │   │   │   ├── ga_retinanet_r101_caffe_fpn_mstrain_2x.py
│   │   │   │   │   ├── ga_retinanet_r50_caffe_fpn_1x_coco.py
│   │   │   │   │   ├── ga_retinanet_r50_fpn_1x_coco.py
│   │   │   │   │   ├── ga_retinanet_x101_32x4d_fpn_1x_coco.py
│   │   │   │   │   ├── ga_retinanet_x101_64x4d_fpn_1x_coco.py
│   │   │   │   │   ├── ga_rpn_r101_caffe_fpn_1x_coco.py
│   │   │   │   │   ├── ga_rpn_r50_caffe_fpn_1x_coco.py
│   │   │   │   │   ├── ga_rpn_r50_fpn_1x_coco.py
│   │   │   │   │   ├── ga_rpn_x101_32x4d_fpn_1x_coco.py
│   │   │   │   │   ├── ga_rpn_x101_64x4d_fpn_1x_coco.py
│   │   │   │   │   └── metafile.yml
│   │   │   │   ├── hrnet/
│   │   │   │   │   ├── README.md
│   │   │   │   │   ├── cascade_mask_rcnn_hrnetv2p_w18_20e_coco.py
│   │   │   │   │   ├── cascade_mask_rcnn_hrnetv2p_w32_20e_coco.py
│   │   │   │   │   ├── cascade_mask_rcnn_hrnetv2p_w40_20e_coco.py
│   │   │   │   │   ├── cascade_rcnn_hrnetv2p_w18_20e_coco.py
│   │   │   │   │   ├── cascade_rcnn_hrnetv2p_w32_20e_coco.py
│   │   │   │   │   ├── cascade_rcnn_hrnetv2p_w40_20e_coco.py
│   │   │   │   │   ├── faster_rcnn_hrnetv2p_w18_1x_coco.py
│   │   │   │   │   ├── faster_rcnn_hrnetv2p_w18_2x_coco.py
│   │   │   │   │   ├── faster_rcnn_hrnetv2p_w32_1x_coco.py
│   │   │   │   │   ├── faster_rcnn_hrnetv2p_w32_2x_coco.py
│   │   │   │   │   ├── faster_rcnn_hrnetv2p_w40_1x_coco.py
│   │   │   │   │   ├── faster_rcnn_hrnetv2p_w40_2x_coco.py
│   │   │   │   │   ├── fcos_hrnetv2p_w18_gn-head_4x4_1x_coco.py
│   │   │   │   │   ├── fcos_hrnetv2p_w18_gn-head_4x4_2x_coco.py
│   │   │   │   │   ├── fcos_hrnetv2p_w18_gn-head_mstrain_640-800_4x4_2x_coco.py
│   │   │   │   │   ├── fcos_hrnetv2p_w32_gn-head_4x4_1x_coco.py
│   │   │   │   │   ├── fcos_hrnetv2p_w32_gn-head_4x4_2x_coco.py
│   │   │   │   │   ├── fcos_hrnetv2p_w32_gn-head_mstrain_640-800_4x4_2x_coco.py
│   │   │   │   │   ├── fcos_hrnetv2p_w40_gn-head_mstrain_640-800_4x4_2x_coco.py
│   │   │   │   │   ├── htc_hrnetv2p_w18_20e_coco.py
│   │   │   │   │   ├── htc_hrnetv2p_w32_20e_coco.py
│   │   │   │   │   ├── htc_hrnetv2p_w40_20e_coco.py
│   │   │   │   │   ├── htc_hrnetv2p_w40_28e_coco.py
│   │   │   │   │   ├── htc_x101_64x4d_fpn_16x1_28e_coco.py
│   │   │   │   │   ├── mask_rcnn_hrnetv2p_w18_1x_coco.py
│   │   │   │   │   ├── mask_rcnn_hrnetv2p_w18_2x_coco.py
│   │   │   │   │   ├── mask_rcnn_hrnetv2p_w32_1x_coco.py
│   │   │   │   │   ├── mask_rcnn_hrnetv2p_w32_2x_coco.py
│   │   │   │   │   ├── mask_rcnn_hrnetv2p_w40_1x_coco.py
│   │   │   │   │   ├── mask_rcnn_hrnetv2p_w40_2x_coco.py
│   │   │   │   │   └── metafile.yml
│   │   │   │   ├── htc/
│   │   │   │   │   ├── README.md
│   │   │   │   │   ├── htc_r101_fpn_20e_coco.py
│   │   │   │   │   ├── htc_r50_fpn_1x_coco.py
│   │   │   │   │   ├── htc_r50_fpn_20e_coco.py
│   │   │   │   │   ├── htc_without_semantic_r50_fpn_1x_coco.py
│   │   │   │   │   ├── htc_x101_32x4d_fpn_16x1_20e_coco.py
│   │   │   │   │   ├── htc_x101_64x4d_fpn_16x1_20e_coco.py
│   │   │   │   │   ├── htc_x101_64x4d_fpn_dconv_c3-c5_mstrain_400_1400_16x1_20e_coco.py
│   │   │   │   │   └── metafile.yml
│   │   │   │   ├── instaboost/
│   │   │   │   │   ├── README.md
│   │   │   │   │   ├── cascade_mask_rcnn_r101_fpn_instaboost_4x_coco.py
│   │   │   │   │   ├── cascade_mask_rcnn_r50_fpn_instaboost_4x_coco.py
│   │   │   │   │   ├── cascade_mask_rcnn_x101_64x4d_fpn_instaboost_4x_coco.py
│   │   │   │   │   ├── mask_rcnn_r101_fpn_instaboost_4x_coco.py
│   │   │   │   │   ├── mask_rcnn_r50_fpn_instaboost_4x_coco.py
│   │   │   │   │   ├── mask_rcnn_x101_64x4d_fpn_instaboost_4x_coco.py
│   │   │   │   │   └── metafile.yml
│   │   │   │   ├── lad/
│   │   │   │   │   ├── README.md
│   │   │   │   │   ├── lad_r101_paa_r50_fpn_coco_1x.py
│   │   │   │   │   ├── lad_r50_paa_r101_fpn_coco_1x.py
│   │   │   │   │   └── metafile.yml
│   │   │   │   ├── ld/
│   │   │   │   │   ├── README.md
│   │   │   │   │   ├── ld_r101_gflv1_r101dcn_fpn_coco_2x.py
│   │   │   │   │   ├── ld_r18_gflv1_r101_fpn_coco_1x.py
│   │   │   │   │   ├── ld_r34_gflv1_r101_fpn_coco_1x.py
│   │   │   │   │   ├── ld_r50_gflv1_r101_fpn_coco_1x.py
│   │   │   │   │   └── metafile.yml
│   │   │   │   ├── legacy_1.x/
│   │   │   │   │   ├── README.md
│   │   │   │   │   ├── cascade_mask_rcnn_r50_fpn_1x_coco_v1.py
│   │   │   │   │   ├── faster_rcnn_r50_fpn_1x_coco_v1.py
│   │   │   │   │   ├── mask_rcnn_r50_fpn_1x_coco_v1.py
│   │   │   │   │   ├── retinanet_r50_caffe_fpn_1x_coco_v1.py
│   │   │   │   │   ├── retinanet_r50_fpn_1x_coco_v1.py
│   │   │   │   │   └── ssd300_coco_v1.py
│   │   │   │   ├── libra_rcnn/
│   │   │   │   │   ├── README.md
│   │   │   │   │   ├── libra_fast_rcnn_r50_fpn_1x_coco.py
│   │   │   │   │   ├── libra_faster_rcnn_r101_fpn_1x_coco.py
│   │   │   │   │   ├── libra_faster_rcnn_r50_fpn_1x_coco.py
│   │   │   │   │   ├── libra_faster_rcnn_x101_64x4d_fpn_1x_coco.py
│   │   │   │   │   ├── libra_retinanet_r50_fpn_1x_coco.py
│   │   │   │   │   └── metafile.yml
│   │   │   │   ├── lvis/
│   │   │   │   │   ├── README.md
│   │   │   │   │   ├── mask_rcnn_r101_fpn_sample1e-3_mstrain_1x_lvis_v1.py
│   │   │   │   │   ├── mask_rcnn_r101_fpn_sample1e-3_mstrain_2x_lvis_v0.5.py
│   │   │   │   │   ├── mask_rcnn_r50_fpn_sample1e-3_mstrain_1x_lvis_v1.py
│   │   │   │   │   ├── mask_rcnn_r50_fpn_sample1e-3_mstrain_2x_lvis_v0.5.py
│   │   │   │   │   ├── mask_rcnn_x101_32x4d_fpn_sample1e-3_mstrain_1x_lvis_v1.py
│   │   │   │   │   ├── mask_rcnn_x101_32x4d_fpn_sample1e-3_mstrain_2x_lvis_v0.5.py
│   │   │   │   │   ├── mask_rcnn_x101_64x4d_fpn_sample1e-3_mstrain_1x_lvis_v1.py
│   │   │   │   │   └── mask_rcnn_x101_64x4d_fpn_sample1e-3_mstrain_2x_lvis_v0.5.py
│   │   │   │   ├── mask2former/
│   │   │   │   │   ├── README.md
│   │   │   │   │   ├── mask2former_r101_lsj_8x2_50e_coco.py
│   │   │   │   │   ├── mask2former_r50_lsj_8x2_50e_coco.py
│   │   │   │   │   ├── mask2former_swin-b-p4-w12-384-in21k_lsj_8x2_50e_coco.py
│   │   │   │   │   ├── mask2former_swin-b-p4-w12-384_lsj_8x2_50e_coco.py
│   │   │   │   │   ├── mask2former_swin-l-p4-w12-384-in21k_lsj_16x1_100e_coco.py
│   │   │   │   │   ├── mask2former_swin-s-p4-w7-224_lsj_8x2_50e_coco.py
│   │   │   │   │   ├── mask2former_swin-t-p4-w7-224_lsj_8x2_50e_coco.py
│   │   │   │   │   └── metafile.yml
│   │   │   │   ├── mask_rcnn/
│   │   │   │   │   ├── README.md
│   │   │   │   │   ├── mask_rcnn_r101_caffe_fpn_1x_coco.py
│   │   │   │   │   ├── mask_rcnn_r101_caffe_fpn_mstrain-poly_3x_coco.py
│   │   │   │   │   ├── mask_rcnn_r101_fpn_1x_coco.py
│   │   │   │   │   ├── mask_rcnn_r101_fpn_2x_coco.py
│   │   │   │   │   ├── mask_rcnn_r101_fpn_mstrain-poly_3x_coco.py
│   │   │   │   │   ├── mask_rcnn_r50_caffe_c4_1x_coco.py
│   │   │   │   │   ├── mask_rcnn_r50_caffe_fpn_1x_coco.py
│   │   │   │   │   ├── mask_rcnn_r50_caffe_fpn_mstrain-poly_1x_coco.py
│   │   │   │   │   ├── mask_rcnn_r50_caffe_fpn_mstrain-poly_2x_coco.py
│   │   │   │   │   ├── mask_rcnn_r50_caffe_fpn_mstrain-poly_3x_coco.py
│   │   │   │   │   ├── mask_rcnn_r50_caffe_fpn_mstrain_1x_coco.py
│   │   │   │   │   ├── mask_rcnn_r50_caffe_fpn_poly_1x_coco_v1.py
│   │   │   │   │   ├── mask_rcnn_r50_fpn_1x_coco.py
│   │   │   │   │   ├── mask_rcnn_r50_fpn_2x_coco.py
│   │   │   │   │   ├── mask_rcnn_r50_fpn_fp16_1x_coco.py
│   │   │   │   │   ├── mask_rcnn_r50_fpn_mstrain-poly_3x_coco.py
│   │   │   │   │   ├── mask_rcnn_r50_fpn_poly_1x_coco.py
│   │   │   │   │   ├── mask_rcnn_x101_32x4d_fpn_1x_coco.py
│   │   │   │   │   ├── mask_rcnn_x101_32x4d_fpn_2x_coco.py
│   │   │   │   │   ├── mask_rcnn_x101_32x4d_fpn_mstrain-poly_3x_coco.py
│   │   │   │   │   ├── mask_rcnn_x101_32x8d_fpn_1x_coco.py
│   │   │   │   │   ├── mask_rcnn_x101_32x8d_fpn_mstrain-poly_1x_coco.py
│   │   │   │   │   ├── mask_rcnn_x101_32x8d_fpn_mstrain-poly_3x_coco.py
│   │   │   │   │   ├── mask_rcnn_x101_64x4d_fpn_1x_coco.py
│   │   │   │   │   ├── mask_rcnn_x101_64x4d_fpn_2x_coco.py
│   │   │   │   │   ├── mask_rcnn_x101_64x4d_fpn_mstrain-poly_3x_coco.py
│   │   │   │   │   └── metafile.yml
│   │   │   │   ├── maskformer/
│   │   │   │   │   ├── README.md
│   │   │   │   │   ├── maskformer_r50_mstrain_16x1_75e_coco.py
│   │   │   │   │   ├── maskformer_swin-l-p4-w12_mstrain_64x1_300e_coco.py
│   │   │   │   │   └── metafile.yml
│   │   │   │   ├── ms_rcnn/
│   │   │   │   │   ├── README.md
│   │   │   │   │   ├── metafile.yml
│   │   │   │   │   ├── ms_rcnn_r101_caffe_fpn_1x_coco.py
│   │   │   │   │   ├── ms_rcnn_r101_caffe_fpn_2x_coco.py
│   │   │   │   │   ├── ms_rcnn_r50_caffe_fpn_1x_coco.py
│   │   │   │   │   ├── ms_rcnn_r50_caffe_fpn_2x_coco.py
│   │   │   │   │   ├── ms_rcnn_r50_fpn_1x_coco.py
│   │   │   │   │   ├── ms_rcnn_x101_32x4d_fpn_1x_coco.py
│   │   │   │   │   ├── ms_rcnn_x101_64x4d_fpn_1x_coco.py
│   │   │   │   │   └── ms_rcnn_x101_64x4d_fpn_2x_coco.py
│   │   │   │   ├── nas_fcos/
│   │   │   │   │   ├── README.md
│   │   │   │   │   ├── metafile.yml
│   │   │   │   │   ├── nas_fcos_fcoshead_r50_caffe_fpn_gn-head_4x4_1x_coco.py
│   │   │   │   │   └── nas_fcos_nashead_r50_caffe_fpn_gn-head_4x4_1x_coco.py
│   │   │   │   ├── nas_fpn/
│   │   │   │   │   ├── README.md
│   │   │   │   │   ├── metafile.yml
│   │   │   │   │   ├── retinanet_r50_fpn_crop640_50e_coco.py
│   │   │   │   │   └── retinanet_r50_nasfpn_crop640_50e_coco.py
│   │   │   │   ├── openimages/
│   │   │   │   │   ├── README.md
│   │   │   │   │   ├── faster_rcnn_r50_fpn_32x2_1x_openimages.py
│   │   │   │   │   ├── faster_rcnn_r50_fpn_32x2_1x_openimages_challenge.py
│   │   │   │   │   ├── faster_rcnn_r50_fpn_32x2_cas_1x_openimages.py
│   │   │   │   │   ├── faster_rcnn_r50_fpn_32x2_cas_1x_openimages_challenge.py
│   │   │   │   │   ├── metafile.yml
│   │   │   │   │   ├── retinanet_r50_fpn_32x2_1x_openimages.py
│   │   │   │   │   └── ssd300_32x8_36e_openimages.py
│   │   │   │   ├── paa/
│   │   │   │   │   ├── README.md
│   │   │   │   │   ├── metafile.yml
│   │   │   │   │   ├── paa_r101_fpn_1x_coco.py
│   │   │   │   │   ├── paa_r101_fpn_2x_coco.py
│   │   │   │   │   ├── paa_r101_fpn_mstrain_3x_coco.py
│   │   │   │   │   ├── paa_r50_fpn_1.5x_coco.py
│   │   │   │   │   ├── paa_r50_fpn_1x_coco.py
│   │   │   │   │   ├── paa_r50_fpn_2x_coco.py
│   │   │   │   │   └── paa_r50_fpn_mstrain_3x_coco.py
│   │   │   │   ├── pafpn/
│   │   │   │   │   ├── README.md
│   │   │   │   │   ├── faster_rcnn_r50_pafpn_1x_coco.py
│   │   │   │   │   └── metafile.yml
│   │   │   │   ├── panoptic_fpn/
│   │   │   │   │   ├── README.md
│   │   │   │   │   ├── metafile.yml
│   │   │   │   │   ├── panoptic_fpn_r101_fpn_1x_coco.py
│   │   │   │   │   ├── panoptic_fpn_r101_fpn_mstrain_3x_coco.py
│   │   │   │   │   ├── panoptic_fpn_r50_fpn_1x_coco.py
│   │   │   │   │   └── panoptic_fpn_r50_fpn_mstrain_3x_coco.py
│   │   │   │   ├── pascal_voc/
│   │   │   │   │   ├── README.md
│   │   │   │   │   ├── faster_rcnn_r50_caffe_c4_mstrain_18k_voc0712.py
│   │   │   │   │   ├── faster_rcnn_r50_fpn_1x_voc0712.py
│   │   │   │   │   ├── faster_rcnn_r50_fpn_1x_voc0712_cocofmt.py
│   │   │   │   │   ├── retinanet_r50_fpn_1x_voc0712.py
│   │   │   │   │   ├── ssd300_voc0712.py
│   │   │   │   │   └── ssd512_voc0712.py
│   │   │   │   ├── pisa/
│   │   │   │   │   ├── README.md
│   │   │   │   │   ├── metafile.yml
│   │   │   │   │   ├── pisa_faster_rcnn_r50_fpn_1x_coco.py
│   │   │   │   │   ├── pisa_faster_rcnn_x101_32x4d_fpn_1x_coco.py
│   │   │   │   │   ├── pisa_mask_rcnn_r50_fpn_1x_coco.py
│   │   │   │   │   ├── pisa_mask_rcnn_x101_32x4d_fpn_1x_coco.py
│   │   │   │   │   ├── pisa_retinanet_r50_fpn_1x_coco.py
│   │   │   │   │   ├── pisa_retinanet_x101_32x4d_fpn_1x_coco.py
│   │   │   │   │   ├── pisa_ssd300_coco.py
│   │   │   │   │   └── pisa_ssd512_coco.py
│   │   │   │   ├── point_rend/
│   │   │   │   │   ├── README.md
│   │   │   │   │   ├── metafile.yml
│   │   │   │   │   ├── point_rend_r50_caffe_fpn_mstrain_1x_coco.py
│   │   │   │   │   └── point_rend_r50_caffe_fpn_mstrain_3x_coco.py
│   │   │   │   ├── pvt/
│   │   │   │   │   ├── README.md
│   │   │   │   │   ├── metafile.yml
│   │   │   │   │   ├── retinanet_pvt-l_fpn_1x_coco.py
│   │   │   │   │   ├── retinanet_pvt-m_fpn_1x_coco.py
│   │   │   │   │   ├── retinanet_pvt-s_fpn_1x_coco.py
│   │   │   │   │   ├── retinanet_pvt-t_fpn_1x_coco.py
│   │   │   │   │   ├── retinanet_pvtv2-b0_fpn_1x_coco.py
│   │   │   │   │   ├── retinanet_pvtv2-b1_fpn_1x_coco.py
│   │   │   │   │   ├── retinanet_pvtv2-b2_fpn_1x_coco.py
│   │   │   │   │   ├── retinanet_pvtv2-b3_fpn_1x_coco.py
│   │   │   │   │   ├── retinanet_pvtv2-b4_fpn_1x_coco.py
│   │   │   │   │   └── retinanet_pvtv2-b5_fpn_1x_coco.py
│   │   │   │   ├── queryinst/
│   │   │   │   │   ├── README.md
│   │   │   │   │   ├── metafile.yml
│   │   │   │   │   ├── queryinst_r101_fpn_300_proposals_crop_mstrain_480-800_3x_coco.py
│   │   │   │   │   ├── queryinst_r101_fpn_mstrain_480-800_3x_coco.py
│   │   │   │   │   ├── queryinst_r50_fpn_1x_coco.py
│   │   │   │   │   ├── queryinst_r50_fpn_300_proposals_crop_mstrain_480-800_3x_coco.py
│   │   │   │   │   └── queryinst_r50_fpn_mstrain_480-800_3x_coco.py
│   │   │   │   ├── regnet/
│   │   │   │   │   ├── README.md
│   │   │   │   │   ├── cascade_mask_rcnn_regnetx-1.6GF_fpn_mstrain_3x_coco.py
│   │   │   │   │   ├── cascade_mask_rcnn_regnetx-3.2GF_fpn_mstrain_3x_coco.py
│   │   │   │   │   ├── cascade_mask_rcnn_regnetx-400MF_fpn_mstrain_3x_coco.py
│   │   │   │   │   ├── cascade_mask_rcnn_regnetx-4GF_fpn_mstrain_3x_coco.py
│   │   │   │   │   ├── cascade_mask_rcnn_regnetx-800MF_fpn_mstrain_3x_coco.py
│   │   │   │   │   ├── faster_rcnn_regnetx-1.6GF_fpn_mstrain_3x_coco.py
│   │   │   │   │   ├── faster_rcnn_regnetx-3.2GF_fpn_1x_coco.py
│   │   │   │   │   ├── faster_rcnn_regnetx-3.2GF_fpn_2x_coco.py
│   │   │   │   │   ├── faster_rcnn_regnetx-3.2GF_fpn_mstrain_3x_coco.py
│   │   │   │   │   ├── faster_rcnn_regnetx-400MF_fpn_mstrain_3x_coco.py
│   │   │   │   │   ├── faster_rcnn_regnetx-4GF_fpn_mstrain_3x_coco.py
│   │   │   │   │   ├── faster_rcnn_regnetx-800MF_fpn_mstrain_3x_coco.py
│   │   │   │   │   ├── mask_rcnn_regnetx-1.6GF_fpn_mstrain-poly_3x_coco.py
│   │   │   │   │   ├── mask_rcnn_regnetx-12GF_fpn_1x_coco.py
│   │   │   │   │   ├── mask_rcnn_regnetx-3.2GF_fpn_1x_coco.py
│   │   │   │   │   ├── mask_rcnn_regnetx-3.2GF_fpn_mdconv_c3-c5_1x_coco.py
│   │   │   │   │   ├── mask_rcnn_regnetx-3.2GF_fpn_mstrain_3x_coco.py
│   │   │   │   │   ├── mask_rcnn_regnetx-400MF_fpn_mstrain-poly_3x_coco.py
│   │   │   │   │   ├── mask_rcnn_regnetx-4GF_fpn_1x_coco.py
│   │   │   │   │   ├── mask_rcnn_regnetx-4GF_fpn_mstrain-poly_3x_coco.py
│   │   │   │   │   ├── mask_rcnn_regnetx-6.4GF_fpn_1x_coco.py
│   │   │   │   │   ├── mask_rcnn_regnetx-800MF_fpn_mstrain-poly_3x_coco.py
│   │   │   │   │   ├── mask_rcnn_regnetx-8GF_fpn_1x_coco.py
│   │   │   │   │   ├── metafile.yml
│   │   │   │   │   ├── retinanet_regnetx-1.6GF_fpn_1x_coco.py
│   │   │   │   │   ├── retinanet_regnetx-3.2GF_fpn_1x_coco.py
│   │   │   │   │   └── retinanet_regnetx-800MF_fpn_1x_coco.py
│   │   │   │   ├── reppoints/
│   │   │   │   │   ├── README.md
│   │   │   │   │   ├── bbox_r50_grid_center_fpn_gn-neck+head_1x_coco.py
│   │   │   │   │   ├── bbox_r50_grid_fpn_gn-neck+head_1x_coco.py
│   │   │   │   │   ├── metafile.yml
│   │   │   │   │   ├── reppoints_minmax_r50_fpn_gn-neck+head_1x_coco.py
│   │   │   │   │   ├── reppoints_moment_r101_fpn_dconv_c3-c5_gn-neck+head_2x_coco.py
│   │   │   │   │   ├── reppoints_moment_r101_fpn_gn-neck+head_2x_coco.py
│   │   │   │   │   ├── reppoints_moment_r50_fpn_1x_coco.py
│   │   │   │   │   ├── reppoints_moment_r50_fpn_gn-neck+head_1x_coco.py
│   │   │   │   │   ├── reppoints_moment_r50_fpn_gn-neck+head_2x_coco.py
│   │   │   │   │   ├── reppoints_moment_x101_fpn_dconv_c3-c5_gn-neck+head_2x_coco.py
│   │   │   │   │   └── reppoints_partial_minmax_r50_fpn_gn-neck+head_1x_coco.py
│   │   │   │   ├── res2net/
│   │   │   │   │   ├── README.md
│   │   │   │   │   ├── cascade_mask_rcnn_r2_101_fpn_20e_coco.py
│   │   │   │   │   ├── cascade_rcnn_r2_101_fpn_20e_coco.py
│   │   │   │   │   ├── faster_rcnn_r2_101_fpn_2x_coco.py
│   │   │   │   │   ├── htc_r2_101_fpn_20e_coco.py
│   │   │   │   │   ├── mask_rcnn_r2_101_fpn_2x_coco.py
│   │   │   │   │   └── metafile.yml
│   │   │   │   ├── resnest/
│   │   │   │   │   ├── README.md
│   │   │   │   │   ├── cascade_mask_rcnn_s101_fpn_syncbn-backbone+head_mstrain_1x_coco.py
│   │   │   │   │   ├── cascade_mask_rcnn_s50_fpn_syncbn-backbone+head_mstrain_1x_coco.py
│   │   │   │   │   ├── cascade_rcnn_s101_fpn_syncbn-backbone+head_mstrain-range_1x_coco.py
│   │   │   │   │   ├── cascade_rcnn_s50_fpn_syncbn-backbone+head_mstrain-range_1x_coco.py
│   │   │   │   │   ├── faster_rcnn_s101_fpn_syncbn-backbone+head_mstrain-range_1x_coco.py
│   │   │   │   │   ├── faster_rcnn_s50_fpn_syncbn-backbone+head_mstrain-range_1x_coco.py
│   │   │   │   │   ├── mask_rcnn_s101_fpn_syncbn-backbone+head_mstrain_1x_coco.py
│   │   │   │   │   ├── mask_rcnn_s50_fpn_syncbn-backbone+head_mstrain_1x_coco.py
│   │   │   │   │   └── metafile.yml
│   │   │   │   ├── resnet_strikes_back/
│   │   │   │   │   ├── README.md
│   │   │   │   │   ├── cascade_mask_rcnn_r50_fpn_rsb-pretrain_1x_coco.py
│   │   │   │   │   ├── faster_rcnn_r50_fpn_rsb-pretrain_1x_coco.py
│   │   │   │   │   ├── mask_rcnn_r50_fpn_rsb-pretrain_1x_coco.py
│   │   │   │   │   ├── metafile.yml
│   │   │   │   │   └── retinanet_r50_fpn_rsb-pretrain_1x_coco.py
│   │   │   │   ├── retinanet/
│   │   │   │   │   ├── README.md
│   │   │   │   │   ├── metafile.yml
│   │   │   │   │   ├── retinanet_r101_caffe_fpn_1x_coco.py
│   │   │   │   │   ├── retinanet_r101_caffe_fpn_mstrain_3x_coco.py
│   │   │   │   │   ├── retinanet_r101_fpn_1x_coco.py
│   │   │   │   │   ├── retinanet_r101_fpn_2x_coco.py
│   │   │   │   │   ├── retinanet_r101_fpn_mstrain_640-800_3x_coco.py
│   │   │   │   │   ├── retinanet_r18_fpn_1x8_1x_coco.py
│   │   │   │   │   ├── retinanet_r18_fpn_1x_coco.py
│   │   │   │   │   ├── retinanet_r50_caffe_fpn_1x_coco.py
│   │   │   │   │   ├── retinanet_r50_caffe_fpn_mstrain_1x_coco.py
│   │   │   │   │   ├── retinanet_r50_caffe_fpn_mstrain_2x_coco.py
│   │   │   │   │   ├── retinanet_r50_caffe_fpn_mstrain_3x_coco.py
│   │   │   │   │   ├── retinanet_r50_fpn_1x_coco.py
│   │   │   │   │   ├── retinanet_r50_fpn_2x_coco.py
│   │   │   │   │   ├── retinanet_r50_fpn_90k_coco.py
│   │   │   │   │   ├── retinanet_r50_fpn_fp16_1x_coco.py
│   │   │   │   │   ├── retinanet_r50_fpn_mstrain_640-800_3x_coco.py
│   │   │   │   │   ├── retinanet_x101_32x4d_fpn_1x_coco.py
│   │   │   │   │   ├── retinanet_x101_32x4d_fpn_2x_coco.py
│   │   │   │   │   ├── retinanet_x101_64x4d_fpn_1x_coco.py
│   │   │   │   │   ├── retinanet_x101_64x4d_fpn_2x_coco.py
│   │   │   │   │   └── retinanet_x101_64x4d_fpn_mstrain_640-800_3x_coco.py
│   │   │   │   ├── rpn/
│   │   │   │   │   ├── README.md
│   │   │   │   │   ├── rpn_r101_caffe_fpn_1x_coco.py
│   │   │   │   │   ├── rpn_r101_fpn_1x_coco.py
│   │   │   │   │   ├── rpn_r101_fpn_2x_coco.py
│   │   │   │   │   ├── rpn_r50_caffe_c4_1x_coco.py
│   │   │   │   │   ├── rpn_r50_caffe_fpn_1x_coco.py
│   │   │   │   │   ├── rpn_r50_fpn_1x_coco.py
│   │   │   │   │   ├── rpn_r50_fpn_2x_coco.py
│   │   │   │   │   ├── rpn_x101_32x4d_fpn_1x_coco.py
│   │   │   │   │   ├── rpn_x101_32x4d_fpn_2x_coco.py
│   │   │   │   │   ├── rpn_x101_64x4d_fpn_1x_coco.py
│   │   │   │   │   └── rpn_x101_64x4d_fpn_2x_coco.py
│   │   │   │   ├── sabl/
│   │   │   │   │   ├── README.md
│   │   │   │   │   ├── metafile.yml
│   │   │   │   │   ├── sabl_cascade_rcnn_r101_fpn_1x_coco.py
│   │   │   │   │   ├── sabl_cascade_rcnn_r50_fpn_1x_coco.py
│   │   │   │   │   ├── sabl_faster_rcnn_r101_fpn_1x_coco.py
│   │   │   │   │   ├── sabl_faster_rcnn_r50_fpn_1x_coco.py
│   │   │   │   │   ├── sabl_retinanet_r101_fpn_1x_coco.py
│   │   │   │   │   ├── sabl_retinanet_r101_fpn_gn_1x_coco.py
│   │   │   │   │   ├── sabl_retinanet_r101_fpn_gn_2x_ms_480_960_coco.py
│   │   │   │   │   ├── sabl_retinanet_r101_fpn_gn_2x_ms_640_800_coco.py
│   │   │   │   │   ├── sabl_retinanet_r50_fpn_1x_coco.py
│   │   │   │   │   └── sabl_retinanet_r50_fpn_gn_1x_coco.py
│   │   │   │   ├── scnet/
│   │   │   │   │   ├── README.md
│   │   │   │   │   ├── metafile.yml
│   │   │   │   │   ├── scnet_r101_fpn_20e_coco.py
│   │   │   │   │   ├── scnet_r50_fpn_1x_coco.py
│   │   │   │   │   ├── scnet_r50_fpn_20e_coco.py
│   │   │   │   │   ├── scnet_x101_64x4d_fpn_20e_coco.py
│   │   │   │   │   └── scnet_x101_64x4d_fpn_8x1_20e_coco.py
│   │   │   │   ├── scratch/
│   │   │   │   │   ├── README.md
│   │   │   │   │   ├── faster_rcnn_r50_fpn_gn-all_scratch_6x_coco.py
│   │   │   │   │   ├── mask_rcnn_r50_fpn_gn-all_scratch_6x_coco.py
│   │   │   │   │   └── metafile.yml
│   │   │   │   ├── seesaw_loss/
│   │   │   │   │   ├── README.md
│   │   │   │   │   ├── cascade_mask_rcnn_r101_fpn_random_seesaw_loss_mstrain_2x_lvis_v1.py
│   │   │   │   │   ├── cascade_mask_rcnn_r101_fpn_random_seesaw_loss_normed_mask_mstrain_2x_lvis_v1.py
│   │   │   │   │   ├── cascade_mask_rcnn_r101_fpn_sample1e-3_seesaw_loss_mstrain_2x_lvis_v1.py
│   │   │   │   │   ├── cascade_mask_rcnn_r101_fpn_sample1e-3_seesaw_loss_normed_mask_mstrain_2x_lvis_v1.py
│   │   │   │   │   ├── mask_rcnn_r101_fpn_random_seesaw_loss_mstrain_2x_lvis_v1.py
│   │   │   │   │   ├── mask_rcnn_r101_fpn_random_seesaw_loss_normed_mask_mstrain_2x_lvis_v1.py
│   │   │   │   │   ├── mask_rcnn_r101_fpn_sample1e-3_seesaw_loss_mstrain_2x_lvis_v1.py
│   │   │   │   │   ├── mask_rcnn_r101_fpn_sample1e-3_seesaw_loss_normed_mask_mstrain_2x_lvis_v1.py
│   │   │   │   │   ├── mask_rcnn_r50_fpn_random_seesaw_loss_mstrain_2x_lvis_v1.py
│   │   │   │   │   ├── mask_rcnn_r50_fpn_random_seesaw_loss_normed_mask_mstrain_2x_lvis_v1.py
│   │   │   │   │   ├── mask_rcnn_r50_fpn_sample1e-3_seesaw_loss_mstrain_2x_lvis_v1.py
│   │   │   │   │   ├── mask_rcnn_r50_fpn_sample1e-3_seesaw_loss_normed_mask_mstrain_2x_lvis_v1.py
│   │   │   │   │   └── metafile.yml
│   │   │   │   ├── selfsup_pretrain/
│   │   │   │   │   ├── README.md
│   │   │   │   │   ├── mask_rcnn_r50_fpn_mocov2-pretrain_1x_coco.py
│   │   │   │   │   ├── mask_rcnn_r50_fpn_mocov2-pretrain_ms-2x_coco.py
│   │   │   │   │   ├── mask_rcnn_r50_fpn_swav-pretrain_1x_coco.py
│   │   │   │   │   └── mask_rcnn_r50_fpn_swav-pretrain_ms-2x_coco.py
│   │   │   │   ├── simple_copy_paste/
│   │   │   │   │   ├── README.md
│   │   │   │   │   ├── mask_rcnn_r50_fpn_syncbn-all_rpn-2conv_ssj_32x2_270k_coco.py
│   │   │   │   │   ├── mask_rcnn_r50_fpn_syncbn-all_rpn-2conv_ssj_32x2_90k_coco.py
│   │   │   │   │   ├── mask_rcnn_r50_fpn_syncbn-all_rpn-2conv_ssj_scp_32x2_270k_coco.py
│   │   │   │   │   └── mask_rcnn_r50_fpn_syncbn-all_rpn-2conv_ssj_scp_32x2_90k_coco.py
│   │   │   │   ├── solo/
│   │   │   │   │   ├── README.md
│   │   │   │   │   ├── decoupled_solo_light_r50_fpn_3x_coco.py
│   │   │   │   │   ├── decoupled_solo_r50_fpn_1x_coco.py
│   │   │   │   │   ├── decoupled_solo_r50_fpn_3x_coco.py
│   │   │   │   │   ├── metafile.yml
│   │   │   │   │   ├── solo_r50_fpn_1x_coco.py
│   │   │   │   │   └── solo_r50_fpn_3x_coco.py
│   │   │   │   ├── sparse_rcnn/
│   │   │   │   │   ├── README.md
│   │   │   │   │   ├── metafile.yml
│   │   │   │   │   ├── sparse_rcnn_r101_fpn_300_proposals_crop_mstrain_480-800_3x_coco.py
│   │   │   │   │   ├── sparse_rcnn_r101_fpn_mstrain_480-800_3x_coco.py
│   │   │   │   │   ├── sparse_rcnn_r50_fpn_1x_coco.py
│   │   │   │   │   ├── sparse_rcnn_r50_fpn_300_proposals_crop_mstrain_480-800_3x_coco.py
│   │   │   │   │   └── sparse_rcnn_r50_fpn_mstrain_480-800_3x_coco.py
│   │   │   │   ├── ssd/
│   │   │   │   │   ├── README.md
│   │   │   │   │   ├── metafile.yml
│   │   │   │   │   ├── ssd300_coco.py
│   │   │   │   │   ├── ssd512_coco.py
│   │   │   │   │   └── ssdlite_mobilenetv2_scratch_600e_coco.py
│   │   │   │   ├── strong_baselines/
│   │   │   │   │   ├── README.md
│   │   │   │   │   ├── mask_rcnn_r50_caffe_fpn_syncbn-all_rpn-2conv_lsj_100e_coco.py
│   │   │   │   │   ├── mask_rcnn_r50_caffe_fpn_syncbn-all_rpn-2conv_lsj_100e_fp16_coco.py
│   │   │   │   │   ├── mask_rcnn_r50_caffe_fpn_syncbn-all_rpn-2conv_lsj_400e_coco.py
│   │   │   │   │   ├── mask_rcnn_r50_fpn_syncbn-all_rpn-2conv_lsj_100e_coco.py
│   │   │   │   │   ├── mask_rcnn_r50_fpn_syncbn-all_rpn-2conv_lsj_100e_fp16_coco.py
│   │   │   │   │   └── mask_rcnn_r50_fpn_syncbn-all_rpn-2conv_lsj_50e_coco.py
│   │   │   │   ├── swin/
│   │   │   │   │   ├── README.md
│   │   │   │   │   ├── mask_rcnn_swin-s-p4-w7_fpn_fp16_ms-crop-3x_coco.py
│   │   │   │   │   ├── mask_rcnn_swin-t-p4-w7_fpn_1x_coco.py
│   │   │   │   │   ├── mask_rcnn_swin-t-p4-w7_fpn_fp16_ms-crop-3x_coco.py
│   │   │   │   │   ├── mask_rcnn_swin-t-p4-w7_fpn_ms-crop-3x_coco.py
│   │   │   │   │   ├── metafile.yml
│   │   │   │   │   └── retinanet_swin-t-p4-w7_fpn_1x_coco.py
│   │   │   │   ├── timm_example/
│   │   │   │   │   ├── README.md
│   │   │   │   │   ├── retinanet_timm_efficientnet_b1_fpn_1x_coco.py
│   │   │   │   │   └── retinanet_timm_tv_resnet50_fpn_1x_coco.py
│   │   │   │   ├── tood/
│   │   │   │   │   ├── README.md
│   │   │   │   │   ├── metafile.yml
│   │   │   │   │   ├── tood_r101_fpn_dconv_c3-c5_mstrain_2x_coco.py
│   │   │   │   │   ├── tood_r101_fpn_mstrain_2x_coco.py
│   │   │   │   │   ├── tood_r50_fpn_1x_coco.py
│   │   │   │   │   ├── tood_r50_fpn_anchor_based_1x_coco.py
│   │   │   │   │   ├── tood_r50_fpn_mstrain_2x_coco.py
│   │   │   │   │   ├── tood_x101_64x4d_fpn_dconv_c4-c5_mstrain_2x_coco.py
│   │   │   │   │   └── tood_x101_64x4d_fpn_mstrain_2x_coco.py
│   │   │   │   ├── tridentnet/
│   │   │   │   │   ├── README.md
│   │   │   │   │   ├── metafile.yml
│   │   │   │   │   ├── tridentnet_r50_caffe_1x_coco.py
│   │   │   │   │   ├── tridentnet_r50_caffe_mstrain_1x_coco.py
│   │   │   │   │   └── tridentnet_r50_caffe_mstrain_3x_coco.py
│   │   │   │   ├── vfnet/
│   │   │   │   │   ├── README.md
│   │   │   │   │   ├── metafile.yml
│   │   │   │   │   ├── vfnet_r101_fpn_1x_coco.py
│   │   │   │   │   ├── vfnet_r101_fpn_2x_coco.py
│   │   │   │   │   ├── vfnet_r101_fpn_mdconv_c3-c5_mstrain_2x_coco.py
│   │   │   │   │   ├── vfnet_r101_fpn_mstrain_2x_coco.py
│   │   │   │   │   ├── vfnet_r2_101_fpn_mdconv_c3-c5_mstrain_2x_coco.py
│   │   │   │   │   ├── vfnet_r2_101_fpn_mstrain_2x_coco.py
│   │   │   │   │   ├── vfnet_r50_fpn_1x_coco.py
│   │   │   │   │   ├── vfnet_r50_fpn_mdconv_c3-c5_mstrain_2x_coco.py
│   │   │   │   │   ├── vfnet_r50_fpn_mstrain_2x_coco.py
│   │   │   │   │   ├── vfnet_x101_32x4d_fpn_mdconv_c3-c5_mstrain_2x_coco.py
│   │   │   │   │   ├── vfnet_x101_32x4d_fpn_mstrain_2x_coco.py
│   │   │   │   │   ├── vfnet_x101_64x4d_fpn_mdconv_c3-c5_mstrain_2x_coco.py
│   │   │   │   │   └── vfnet_x101_64x4d_fpn_mstrain_2x_coco.py
│   │   │   │   ├── wider_face/
│   │   │   │   │   ├── README.md
│   │   │   │   │   └── ssd300_wider_face.py
│   │   │   │   ├── yolact/
│   │   │   │   │   ├── README.md
│   │   │   │   │   ├── metafile.yml
│   │   │   │   │   ├── yolact_r101_1x8_coco.py
│   │   │   │   │   ├── yolact_r50_1x8_coco.py
│   │   │   │   │   └── yolact_r50_8x8_coco.py
│   │   │   │   ├── yolo/
│   │   │   │   │   ├── README.md
│   │   │   │   │   ├── metafile.yml
│   │   │   │   │   ├── yolov3_d53_320_273e_coco.py
│   │   │   │   │   ├── yolov3_d53_fp16_mstrain-608_273e_coco.py
│   │   │   │   │   ├── yolov3_d53_mstrain-416_273e_coco.py
│   │   │   │   │   ├── yolov3_d53_mstrain-608_273e_coco.py
│   │   │   │   │   ├── yolov3_mobilenetv2_320_300e_coco.py
│   │   │   │   │   └── yolov3_mobilenetv2_mstrain-416_300e_coco.py
│   │   │   │   ├── yolof/
│   │   │   │   │   ├── README.md
│   │   │   │   │   ├── metafile.yml
│   │   │   │   │   ├── yolof_r50_c5_8x8_1x_coco.py
│   │   │   │   │   └── yolof_r50_c5_8x8_iter-1x_coco.py
│   │   │   │   └── yolox/
│   │   │   │       ├── README.md
│   │   │   │       ├── metafile.yml
│   │   │   │       ├── yolox_l_8x8_300e_coco.py
│   │   │   │       ├── yolox_m_8x8_300e_coco.py
│   │   │   │       ├── yolox_nano_8x8_300e_coco.py
│   │   │   │       ├── yolox_s_8x8_300e_coco.py
│   │   │   │       ├── yolox_tiny_8x8_300e_coco.py
│   │   │   │       └── yolox_x_8x8_300e_coco.py
│   │   │   ├── demo/
│   │   │   │   ├── MMDet_InstanceSeg_Tutorial.ipynb
│   │   │   │   ├── MMDet_Tutorial.ipynb
│   │   │   │   ├── create_result_gif.py
│   │   │   │   ├── image_demo.py
│   │   │   │   ├── inference_demo.ipynb
│   │   │   │   ├── video_demo.py
│   │   │   │   └── webcam_demo.py
│   │   │   ├── model-index.yml
│   │   │   └── tools/
│   │   │       ├── .dist_train.sh.swp
│   │   │       ├── analysis_tools/
│   │   │       │   ├── analyze_logs.py
│   │   │       │   ├── analyze_results.py
│   │   │       │   ├── benchmark.py
│   │   │       │   ├── coco_error_analysis.py
│   │   │       │   ├── confusion_matrix.py
│   │   │       │   ├── eval_metric.py
│   │   │       │   ├── get_flops.py
│   │   │       │   ├── optimize_anchors.py
│   │   │       │   ├── robustness_eval.py
│   │   │       │   └── test_robustness.py
│   │   │       ├── dataset_converters/
│   │   │       │   ├── cityscapes.py
│   │   │       │   ├── images2coco.py
│   │   │       │   └── pascal_voc.py
│   │   │       ├── deployment/
│   │   │       │   ├── mmdet2torchserve.py
│   │   │       │   ├── mmdet_handler.py
│   │   │       │   ├── onnx2tensorrt.py
│   │   │       │   ├── pytorch2onnx.py
│   │   │       │   ├── test.py
│   │   │       │   └── test_torchserver.py
│   │   │       ├── dist_test.sh
│   │   │       ├── dist_train.sh
│   │   │       ├── misc/
│   │   │       │   ├── browse_dataset.py
│   │   │       │   ├── download_dataset.py
│   │   │       │   ├── gen_coco_panoptic_test_info.py
│   │   │       │   ├── get_image_metas.py
│   │   │       │   ├── print_config.py
│   │   │       │   └── split_coco.py
│   │   │       ├── model_converters/
│   │   │       │   ├── detectron2pytorch.py
│   │   │       │   ├── publish_model.py
│   │   │       │   ├── regnet2mmdet.py
│   │   │       │   ├── selfsup2mmdet.py
│   │   │       │   ├── upgrade_model_version.py
│   │   │       │   └── upgrade_ssd_version.py
│   │   │       ├── slurm_test.sh
│   │   │       ├── slurm_train.sh
│   │   │       ├── test.py
│   │   │       └── train.py
│   │   ├── __init__.py
│   │   ├── apis/
│   │   │   ├── __init__.py
│   │   │   ├── inference.py
│   │   │   ├── test.py
│   │   │   └── train.py
│   │   ├── core/
│   │   │   ├── __init__.py
│   │   │   ├── anchor/
│   │   │   │   ├── __init__.py
│   │   │   │   ├── anchor_generator.py
│   │   │   │   ├── builder.py
│   │   │   │   ├── point_generator.py
│   │   │   │   └── utils.py
│   │   │   ├── bbox/
│   │   │   │   ├── __init__.py
│   │   │   │   ├── assigners/
│   │   │   │   │   ├── __init__.py
│   │   │   │   │   ├── approx_max_iou_assigner.py
│   │   │   │   │   ├── assign_result.py
│   │   │   │   │   ├── atss_assigner.py
│   │   │   │   │   ├── base_assigner.py
│   │   │   │   │   ├── center_region_assigner.py
│   │   │   │   │   ├── grid_assigner.py
│   │   │   │   │   ├── hungarian_assigner.py
│   │   │   │   │   ├── mask_hungarian_assigner.py
│   │   │   │   │   ├── max_iou_assigner.py
│   │   │   │   │   ├── point_assigner.py
│   │   │   │   │   ├── region_assigner.py
│   │   │   │   │   ├── sim_ota_assigner.py
│   │   │   │   │   ├── task_aligned_assigner.py
│   │   │   │   │   └── uniform_assigner.py
│   │   │   │   ├── builder.py
│   │   │   │   ├── coder/
│   │   │   │   │   ├── __init__.py
│   │   │   │   │   ├── base_bbox_coder.py
│   │   │   │   │   ├── bucketing_bbox_coder.py
│   │   │   │   │   ├── delta_xywh_bbox_coder.py
│   │   │   │   │   ├── distance_point_bbox_coder.py
│   │   │   │   │   ├── legacy_delta_xywh_bbox_coder.py
│   │   │   │   │   ├── pseudo_bbox_coder.py
│   │   │   │   │   ├── tblr_bbox_coder.py
│   │   │   │   │   └── yolo_bbox_coder.py
│   │   │   │   ├── demodata.py
│   │   │   │   ├── iou_calculators/
│   │   │   │   │   ├── __init__.py
│   │   │   │   │   ├── builder.py
│   │   │   │   │   └── iou2d_calculator.py
│   │   │   │   ├── match_costs/
│   │   │   │   │   ├── __init__.py
│   │   │   │   │   ├── builder.py
│   │   │   │   │   └── match_cost.py
│   │   │   │   ├── samplers/
│   │   │   │   │   ├── __init__.py
│   │   │   │   │   ├── base_sampler.py
│   │   │   │   │   ├── combined_sampler.py
│   │   │   │   │   ├── instance_balanced_pos_sampler.py
│   │   │   │   │   ├── iou_balanced_neg_sampler.py
│   │   │   │   │   ├── mask_pseudo_sampler.py
│   │   │   │   │   ├── mask_sampling_result.py
│   │   │   │   │   ├── ohem_sampler.py
│   │   │   │   │   ├── pseudo_sampler.py
│   │   │   │   │   ├── random_sampler.py
│   │   │   │   │   ├── sampling_result.py
│   │   │   │   │   └── score_hlr_sampler.py
│   │   │   │   └── transforms.py
│   │   │   ├── data_structures/
│   │   │   │   ├── __init__.py
│   │   │   │   ├── general_data.py
│   │   │   │   └── instance_data.py
│   │   │   ├── evaluation/
│   │   │   │   ├── __init__.py
│   │   │   │   ├── bbox_overlaps.py
│   │   │   │   ├── class_names.py
│   │   │   │   ├── eval_hooks.py
│   │   │   │   ├── mean_ap.py
│   │   │   │   ├── panoptic_utils.py
│   │   │   │   └── recall.py
│   │   │   ├── export/
│   │   │   │   ├── __init__.py
│   │   │   │   ├── model_wrappers.py
│   │   │   │   ├── onnx_helper.py
│   │   │   │   └── pytorch2onnx.py
│   │   │   ├── hook/
│   │   │   │   ├── __init__.py
│   │   │   │   ├── checkloss_hook.py
│   │   │   │   ├── ema.py
│   │   │   │   ├── memory_profiler_hook.py
│   │   │   │   ├── set_epoch_info_hook.py
│   │   │   │   ├── sync_norm_hook.py
│   │   │   │   ├── sync_random_size_hook.py
│   │   │   │   ├── yolox_lrupdater_hook.py
│   │   │   │   └── yolox_mode_switch_hook.py
│   │   │   ├── mask/
│   │   │   │   ├── __init__.py
│   │   │   │   ├── mask_target.py
│   │   │   │   ├── structures.py
│   │   │   │   └── utils.py
│   │   │   ├── post_processing/
│   │   │   │   ├── __init__.py
│   │   │   │   ├── bbox_nms.py
│   │   │   │   ├── matrix_nms.py
│   │   │   │   └── merge_augs.py
│   │   │   ├── utils/
│   │   │   │   ├── __init__.py
│   │   │   │   ├── dist_utils.py
│   │   │   │   └── misc.py
│   │   │   └── visualization/
│   │   │       ├── __init__.py
│   │   │       ├── image.py
│   │   │       └── palette.py
│   │   ├── datasets/
│   │   │   ├── __init__.py
│   │   │   ├── api_wrappers/
│   │   │   │   ├── __init__.py
│   │   │   │   ├── coco_api.py
│   │   │   │   └── panoptic_evaluation.py
│   │   │   ├── builder.py
│   │   │   ├── cityscapes.py
│   │   │   ├── coco.py
│   │   │   ├── coco_panoptic.py
│   │   │   ├── custom.py
│   │   │   ├── dataset_wrappers.py
│   │   │   ├── deepfashion.py
│   │   │   ├── lvis.py
│   │   │   ├── openimages.py
│   │   │   ├── pipelines/
│   │   │   │   ├── __init__.py
│   │   │   │   ├── auto_augment.py
│   │   │   │   ├── compose.py
│   │   │   │   ├── formating.py
│   │   │   │   ├── formatting.py
│   │   │   │   ├── instaboost.py
│   │   │   │   ├── loading.py
│   │   │   │   ├── test_time_aug.py
│   │   │   │   └── transforms.py
│   │   │   ├── samplers/
│   │   │   │   ├── __init__.py
│   │   │   │   ├── class_aware_sampler.py
│   │   │   │   ├── distributed_sampler.py
│   │   │   │   ├── group_sampler.py
│   │   │   │   └── infinite_sampler.py
│   │   │   ├── utils.py
│   │   │   ├── voc.py
│   │   │   ├── wider_face.py
│   │   │   └── xml_style.py
│   │   ├── models/
│   │   │   ├── __init__.py
│   │   │   ├── backbones/
│   │   │   │   ├── __init__.py
│   │   │   │   ├── csp_darknet.py
│   │   │   │   ├── darknet.py
│   │   │   │   ├── detectors_resnet.py
│   │   │   │   ├── detectors_resnext.py
│   │   │   │   ├── efficientnet.py
│   │   │   │   ├── hivit.py
│   │   │   │   ├── hourglass.py
│   │   │   │   ├── hrnet.py
│   │   │   │   ├── mobilenet_v2.py
│   │   │   │   ├── pvt.py
│   │   │   │   ├── regnet.py
│   │   │   │   ├── res2net.py
│   │   │   │   ├── resnest.py
│   │   │   │   ├── resnet.py
│   │   │   │   ├── resnext.py
│   │   │   │   ├── ssd_vgg.py
│   │   │   │   ├── swin.py
│   │   │   │   ├── trident_resnet.py
│   │   │   │   └── vit.py
│   │   │   ├── builder.py
│   │   │   ├── dense_heads/
│   │   │   │   ├── __init__.py
│   │   │   │   ├── anchor_free_head.py
│   │   │   │   ├── anchor_head.py
│   │   │   │   ├── atss_head.py
│   │   │   │   ├── autoassign_head.py
│   │   │   │   ├── base_dense_head.py
│   │   │   │   ├── base_mask_head.py
│   │   │   │   ├── cascade_rpn_head.py
│   │   │   │   ├── centernet_head.py
│   │   │   │   ├── centripetal_head.py
│   │   │   │   ├── corner_head.py
│   │   │   │   ├── deformable_detr_head.py
│   │   │   │   ├── dense_test_mixins.py
│   │   │   │   ├── detr_head.py
│   │   │   │   ├── embedding_rpn_head.py
│   │   │   │   ├── fcos_head.py
│   │   │   │   ├── fovea_head.py
│   │   │   │   ├── free_anchor_retina_head.py
│   │   │   │   ├── fsaf_head.py
│   │   │   │   ├── ga_retina_head.py
│   │   │   │   ├── ga_rpn_head.py
│   │   │   │   ├── gfl_head.py
│   │   │   │   ├── guided_anchor_head.py
│   │   │   │   ├── lad_head.py
│   │   │   │   ├── ld_head.py
│   │   │   │   ├── mask2former_head.py
│   │   │   │   ├── maskformer_head.py
│   │   │   │   ├── nasfcos_head.py
│   │   │   │   ├── paa_head.py
│   │   │   │   ├── pisa_retinanet_head.py
│   │   │   │   ├── pisa_ssd_head.py
│   │   │   │   ├── reppoints_head.py
│   │   │   │   ├── retina_head.py
│   │   │   │   ├── retina_sepbn_head.py
│   │   │   │   ├── rpn_head.py
│   │   │   │   ├── sabl_retina_head.py
│   │   │   │   ├── solo_head.py
│   │   │   │   ├── ssd_head.py
│   │   │   │   ├── tood_head.py
│   │   │   │   ├── vfnet_head.py
│   │   │   │   ├── yolact_head.py
│   │   │   │   ├── yolo_head.py
│   │   │   │   ├── yolof_head.py
│   │   │   │   └── yolox_head.py
│   │   │   ├── detectors/
│   │   │   │   ├── __init__.py
│   │   │   │   ├── atss.py
│   │   │   │   ├── autoassign.py
│   │   │   │   ├── base.py
│   │   │   │   ├── cascade_rcnn.py
│   │   │   │   ├── centernet.py
│   │   │   │   ├── cornernet.py
│   │   │   │   ├── deformable_detr.py
│   │   │   │   ├── detr.py
│   │   │   │   ├── fast_rcnn.py
│   │   │   │   ├── faster_rcnn.py
│   │   │   │   ├── fcos.py
│   │   │   │   ├── fovea.py
│   │   │   │   ├── fsaf.py
│   │   │   │   ├── gfl.py
│   │   │   │   ├── grid_rcnn.py
│   │   │   │   ├── htc.py
│   │   │   │   ├── kd_one_stage.py
│   │   │   │   ├── lad.py
│   │   │   │   ├── mask2former.py
│   │   │   │   ├── mask_rcnn.py
│   │   │   │   ├── mask_scoring_rcnn.py
│   │   │   │   ├── maskformer.py
│   │   │   │   ├── nasfcos.py
│   │   │   │   ├── paa.py
│   │   │   │   ├── panoptic_fpn.py
│   │   │   │   ├── panoptic_two_stage_segmentor.py
│   │   │   │   ├── point_rend.py
│   │   │   │   ├── queryinst.py
│   │   │   │   ├── reppoints_detector.py
│   │   │   │   ├── retinanet.py
│   │   │   │   ├── rpn.py
│   │   │   │   ├── scnet.py
│   │   │   │   ├── single_stage.py
│   │   │   │   ├── single_stage_instance_seg.py
│   │   │   │   ├── solo.py
│   │   │   │   ├── sparse_rcnn.py
│   │   │   │   ├── tood.py
│   │   │   │   ├── trident_faster_rcnn.py
│   │   │   │   ├── two_stage.py
│   │   │   │   ├── vfnet.py
│   │   │   │   ├── yolact.py
│   │   │   │   ├── yolo.py
│   │   │   │   ├── yolof.py
│   │   │   │   └── yolox.py
│   │   │   ├── losses/
│   │   │   │   ├── __init__.py
│   │   │   │   ├── accuracy.py
│   │   │   │   ├── ae_loss.py
│   │   │   │   ├── balanced_l1_loss.py
│   │   │   │   ├── cross_entropy_loss.py
│   │   │   │   ├── dice_loss.py
│   │   │   │   ├── focal_loss.py
│   │   │   │   ├── gaussian_focal_loss.py
│   │   │   │   ├── gfocal_loss.py
│   │   │   │   ├── ghm_loss.py
│   │   │   │   ├── iou_loss.py
│   │   │   │   ├── kd_loss.py
│   │   │   │   ├── mse_loss.py
│   │   │   │   ├── pisa_loss.py
│   │   │   │   ├── seesaw_loss.py
│   │   │   │   ├── smooth_l1_loss.py
│   │   │   │   ├── utils.py
│   │   │   │   └── varifocal_loss.py
│   │   │   ├── necks/
│   │   │   │   ├── __init__.py
│   │   │   │   ├── bfp.py
│   │   │   │   ├── channel_mapper.py
│   │   │   │   ├── ct_resnet_neck.py
│   │   │   │   ├── dilated_encoder.py
│   │   │   │   ├── dyhead.py
│   │   │   │   ├── fpg.py
│   │   │   │   ├── fpn.py
│   │   │   │   ├── fpn_carafe.py
│   │   │   │   ├── hrfpn.py
│   │   │   │   ├── nas_fpn.py
│   │   │   │   ├── nasfcos_fpn.py
│   │   │   │   ├── pafpn.py
│   │   │   │   ├── rfp.py
│   │   │   │   ├── ssd_neck.py
│   │   │   │   ├── yolo_neck.py
│   │   │   │   └── yolox_pafpn.py
│   │   │   ├── plugins/
│   │   │   │   ├── __init__.py
│   │   │   │   ├── dropblock.py
│   │   │   │   ├── msdeformattn_pixel_decoder.py
│   │   │   │   └── pixel_decoder.py
│   │   │   ├── roi_heads/
│   │   │   │   ├── __init__.py
│   │   │   │   ├── base_roi_head.py
│   │   │   │   ├── bbox_heads/
│   │   │   │   │   ├── __init__.py
│   │   │   │   │   ├── bbox_head.py
│   │   │   │   │   ├── convfc_bbox_head.py
│   │   │   │   │   ├── dii_head.py
│   │   │   │   │   ├── double_bbox_head.py
│   │   │   │   │   ├── sabl_head.py
│   │   │   │   │   └── scnet_bbox_head.py
│   │   │   │   ├── cascade_roi_head.py
│   │   │   │   ├── double_roi_head.py
│   │   │   │   ├── dynamic_roi_head.py
│   │   │   │   ├── grid_roi_head.py
│   │   │   │   ├── htc_roi_head.py
│   │   │   │   ├── mask_heads/
│   │   │   │   │   ├── __init__.py
│   │   │   │   │   ├── coarse_mask_head.py
│   │   │   │   │   ├── dynamic_mask_head.py
│   │   │   │   │   ├── fcn_mask_head.py
│   │   │   │   │   ├── feature_relay_head.py
│   │   │   │   │   ├── fused_semantic_head.py
│   │   │   │   │   ├── global_context_head.py
│   │   │   │   │   ├── grid_head.py
│   │   │   │   │   ├── htc_mask_head.py
│   │   │   │   │   ├── mask_point_head.py
│   │   │   │   │   ├── maskiou_head.py
│   │   │   │   │   ├── scnet_mask_head.py
│   │   │   │   │   └── scnet_semantic_head.py
│   │   │   │   ├── mask_scoring_roi_head.py
│   │   │   │   ├── pisa_roi_head.py
│   │   │   │   ├── point_rend_roi_head.py
│   │   │   │   ├── roi_extractors/
│   │   │   │   │   ├── __init__.py
│   │   │   │   │   ├── base_roi_extractor.py
│   │   │   │   │   ├── generic_roi_extractor.py
│   │   │   │   │   └── single_level_roi_extractor.py
│   │   │   │   ├── scnet_roi_head.py
│   │   │   │   ├── shared_heads/
│   │   │   │   │   ├── __init__.py
│   │   │   │   │   └── res_layer.py
│   │   │   │   ├── sparse_roi_head.py
│   │   │   │   ├── standard_roi_head.py
│   │   │   │   ├── test_mixins.py
│   │   │   │   └── trident_roi_head.py
│   │   │   ├── seg_heads/
│   │   │   │   ├── __init__.py
│   │   │   │   ├── base_semantic_head.py
│   │   │   │   ├── panoptic_fpn_head.py
│   │   │   │   └── panoptic_fusion_heads/
│   │   │   │       ├── __init__.py
│   │   │   │       ├── base_panoptic_fusion_head.py
│   │   │   │       ├── heuristic_fusion_head.py
│   │   │   │       └── maskformer_fusion_head.py
│   │   │   └── utils/
│   │   │       ├── __init__.py
│   │   │       ├── brick_wrappers.py
│   │   │       ├── builder.py
│   │   │       ├── ckpt_convert.py
│   │   │       ├── conv_upsample.py
│   │   │       ├── csp_layer.py
│   │   │       ├── gaussian_target.py
│   │   │       ├── inverted_residual.py
│   │   │       ├── make_divisible.py
│   │   │       ├── misc.py
│   │   │       ├── normed_predictor.py
│   │   │       ├── panoptic_gt_processing.py
│   │   │       ├── point_sample.py
│   │   │       ├── positional_encoding.py
│   │   │       ├── res_layer.py
│   │   │       ├── se_layer.py
│   │   │       └── transformer.py
│   │   ├── utils/
│   │   │   ├── __init__.py
│   │   │   ├── collect_env.py
│   │   │   ├── compat_config.py
│   │   │   ├── contextmanagers.py
│   │   │   ├── logger.py
│   │   │   ├── misc.py
│   │   │   ├── optimizer.py
│   │   │   ├── profiling.py
│   │   │   ├── setup_env.py
│   │   │   ├── split_batch.py
│   │   │   ├── util_distribution.py
│   │   │   ├── util_mixins.py
│   │   │   └── util_random.py
│   │   └── version.py
│   ├── mmdet.egg-info/
│   │   ├── PKG-INFO
│   │   ├── SOURCES.txt
│   │   ├── dependency_links.txt
│   │   ├── not-zip-safe
│   │   ├── requires.txt
│   │   └── top_level.txt
│   ├── model-index.yml
│   ├── models/
│   │   ├── __init__.py
│   │   ├── models_hivit.py
│   │   └── models_vit.py
│   ├── pytest.ini
│   ├── requirements/
│   │   ├── albu.txt
│   │   ├── build.txt
│   │   ├── docs.txt
│   │   ├── mminstall.txt
│   │   ├── optional.txt
│   │   ├── readthedocs.txt
│   │   ├── runtime.txt
│   │   └── tests.txt
│   ├── requirements.txt
│   ├── setup.cfg
│   ├── setup.py
│   ├── tests/
│   │   ├── test_data/
│   │   │   ├── test_datasets/
│   │   │   │   ├── test_coco_dataset.py
│   │   │   │   ├── test_common.py
│   │   │   │   ├── test_custom_dataset.py
│   │   │   │   ├── test_dataset_wrapper.py
│   │   │   │   ├── test_openimages_dataset.py
│   │   │   │   ├── test_panoptic_dataset.py
│   │   │   │   └── test_xml_dataset.py
│   │   │   ├── test_pipelines/
│   │   │   │   ├── test_formatting.py
│   │   │   │   ├── test_loading.py
│   │   │   │   ├── test_sampler.py
│   │   │   │   └── test_transform/
│   │   │   │       ├── __init__.py
│   │   │   │       ├── test_img_augment.py
│   │   │   │       ├── test_models_aug_test.py
│   │   │   │       ├── test_rotate.py
│   │   │   │       ├── test_shear.py
│   │   │   │       ├── test_transform.py
│   │   │   │       ├── test_translate.py
│   │   │   │       └── utils.py
│   │   │   └── test_utils.py
│   │   ├── test_downstream/
│   │   │   └── test_mmtrack.py
│   │   ├── test_metrics/
│   │   │   ├── test_box_overlap.py
│   │   │   ├── test_losses.py
│   │   │   ├── test_mean_ap.py
│   │   │   └── test_recall.py
│   │   ├── test_models/
│   │   │   ├── test_backbones/
│   │   │   │   ├── __init__.py
│   │   │   │   ├── test_csp_darknet.py
│   │   │   │   ├── test_detectors_resnet.py
│   │   │   │   ├── test_efficientnet.py
│   │   │   │   ├── test_hourglass.py
│   │   │   │   ├── test_hrnet.py
│   │   │   │   ├── test_mobilenet_v2.py
│   │   │   │   ├── test_pvt.py
│   │   │   │   ├── test_regnet.py
│   │   │   │   ├── test_renext.py
│   │   │   │   ├── test_res2net.py
│   │   │   │   ├── test_resnest.py
│   │   │   │   ├── test_resnet.py
│   │   │   │   ├── test_swin.py
│   │   │   │   ├── test_trident_resnet.py
│   │   │   │   └── utils.py
│   │   │   ├── test_dense_heads/
│   │   │   │   ├── test_anchor_head.py
│   │   │   │   ├── test_atss_head.py
│   │   │   │   ├── test_autoassign_head.py
│   │   │   │   ├── test_centernet_head.py
│   │   │   │   ├── test_corner_head.py
│   │   │   │   ├── test_dense_heads_attr.py
│   │   │   │   ├── test_detr_head.py
│   │   │   │   ├── test_fcos_head.py
│   │   │   │   ├── test_fsaf_head.py
│   │   │   │   ├── test_ga_anchor_head.py
│   │   │   │   ├── test_gfl_head.py
│   │   │   │   ├── test_lad_head.py
│   │   │   │   ├── test_ld_head.py
│   │   │   │   ├── test_mask2former_head.py
│   │   │   │   ├── test_maskformer_head.py
│   │   │   │   ├── test_paa_head.py
│   │   │   │   ├── test_pisa_head.py
│   │   │   │   ├── test_sabl_retina_head.py
│   │   │   │   ├── test_solo_head.py
│   │   │   │   ├── test_tood_head.py
│   │   │   │   ├── test_vfnet_head.py
│   │   │   │   ├── test_yolact_head.py
│   │   │   │   ├── test_yolof_head.py
│   │   │   │   └── test_yolox_head.py
│   │   │   ├── test_forward.py
│   │   │   ├── test_loss.py
│   │   │   ├── test_loss_compatibility.py
│   │   │   ├── test_necks.py
│   │   │   ├── test_plugins.py
│   │   │   ├── test_roi_heads/
│   │   │   │   ├── __init__.py
│   │   │   │   ├── test_bbox_head.py
│   │   │   │   ├── test_mask_head.py
│   │   │   │   ├── test_roi_extractor.py
│   │   │   │   ├── test_sabl_bbox_head.py
│   │   │   │   └── utils.py
│   │   │   ├── test_seg_heads/
│   │   │   │   └── test_maskformer_fusion_head.py
│   │   │   └── test_utils/
│   │   │       ├── test_brick_wrappers.py
│   │   │       ├── test_conv_upsample.py
│   │   │       ├── test_inverted_residual.py
│   │   │       ├── test_model_misc.py
│   │   │       ├── test_position_encoding.py
│   │   │       ├── test_se_layer.py
│   │   │       └── test_transformer.py
│   │   ├── test_onnx/
│   │   │   ├── __init__.py
│   │   │   ├── test_head.py
│   │   │   ├── test_neck.py
│   │   │   └── utils.py
│   │   ├── test_runtime/
│   │   │   ├── async_benchmark.py
│   │   │   ├── test_apis.py
│   │   │   ├── test_async.py
│   │   │   ├── test_config.py
│   │   │   ├── test_eval_hook.py
│   │   │   └── test_fp16.py
│   │   └── test_utils/
│   │       ├── test_anchor.py
│   │       ├── test_assigner.py
│   │       ├── test_coder.py
│   │       ├── test_compat_config.py
│   │       ├── test_general_data.py
│   │       ├── test_hook.py
│   │       ├── test_logger.py
│   │       ├── test_masks.py
│   │       ├── test_misc.py
│   │       ├── test_nms.py
│   │       ├── test_setup_env.py
│   │       ├── test_split_batch.py
│   │       ├── test_version.py
│   │       └── test_visualization.py
│   └── tools/
│       ├── .dist_train.sh.swp
│       ├── analysis_tools/
│       │   ├── analyze_logs.py
│       │   ├── analyze_results.py
│       │   ├── benchmark.py
│       │   ├── coco_error_analysis.py
│       │   ├── confusion_matrix.py
│       │   ├── eval_metric.py
│       │   ├── get_flops.py
│       │   ├── optimize_anchors.py
│       │   ├── robustness_eval.py
│       │   └── test_robustness.py
│       ├── dataset_converters/
│       │   ├── cityscapes.py
│       │   ├── images2coco.py
│       │   └── pascal_voc.py
│       ├── deployment/
│       │   ├── mmdet2torchserve.py
│       │   ├── mmdet_handler.py
│       │   ├── onnx2tensorrt.py
│       │   ├── pytorch2onnx.py
│       │   ├── test.py
│       │   └── test_torchserver.py
│       ├── dist_test.sh
│       ├── dist_train.sh
│       ├── misc/
│       │   ├── browse_dataset.py
│       │   ├── download_dataset.py
│       │   ├── gen_coco_panoptic_test_info.py
│       │   ├── get_image_metas.py
│       │   ├── print_config.py
│       │   └── split_coco.py
│       ├── model_converters/
│       │   ├── detectron2pytorch.py
│       │   ├── publish_model.py
│       │   ├── regnet2mmdet.py
│       │   ├── selfsup2mmdet.py
│       │   ├── upgrade_model_version.py
│       │   └── upgrade_ssd_version.py
│       ├── slurm_test.sh
│       ├── slurm_train.sh
│       ├── test.py
│       └── train.py
├── pre-training/
│   ├── engine_finetune.py
│   ├── engine_pretrain.py
│   ├── main_finetune.py
│   ├── main_pretrain.py
│   ├── models/
│   │   ├── __init__.py
│   │   ├── masked_autoencoder.py
│   │   ├── models_hivit.py
│   │   ├── models_hivit_mae.py
│   │   ├── models_vit.py
│   │   └── models_vit_mae.py
│   └── util/
│       ├── crop.py
│       ├── datasets.py
│       ├── lars.py
│       ├── lr_decay.py
│       ├── lr_sched.py
│       ├── misc.py
│       └── pos_embed.py
├── requirements_detection.txt
└── requirements_pretrain.txt

================================================
FILE CONTENTS
================================================

================================================
FILE: LICENSE
================================================
## creative commons

# Attribution-NonCommercial 4.0 International

Creative Commons Corporation (“Creative Commons”) is not a law firm and does not provide legal services or legal advice. Distribution of Creative Commons public licenses does not create a lawyer-client or other relationship. Creative Commons makes its licenses and related information available on an “as-is” basis. Creative Commons gives no warranties regarding its licenses, any material licensed under their terms and conditions, or any related information. Creative Commons disclaims all liability for damages resulting from their use to the fullest extent possible.

### Using Creative Commons Public Licenses

Creative Commons public licenses provide a standard set of terms and conditions that creators and other rights holders may use to share original works of authorship and other material subject to copyright and certain other rights specified in the public license below. The following considerations are for informational purposes only, are not exhaustive, and do not form part of our licenses.

* __Considerations for licensors:__ Our public licenses are intended for use by those authorized to give the public permission to use material in ways otherwise restricted by copyright and certain other rights. Our licenses are irrevocable. Licensors should read and understand the terms and conditions of the license they choose before applying it. Licensors should also secure all rights necessary before applying our licenses so that the public can reuse the material as expected. Licensors should clearly mark any material not subject to the license. This includes other CC-licensed material, or material used under an exception or limitation to copyright. [More considerations for licensors](http://wiki.creativecommons.org/Considerations_for_licensors_and_licensees#Considerations_for_licensors).

* __Considerations for the public:__ By using one of our public licenses, a licensor grants the public permission to use the licensed material under specified terms and conditions. If the licensor’s permission is not necessary for any reason–for example, because of any applicable exception or limitation to copyright–then that use is not regulated by the license. Our licenses grant only permissions under copyright and certain other rights that a licensor has authority to grant. Use of the licensed material may still be restricted for other reasons, including because others have copyright or other rights in the material. A licensor may make special requests, such as asking that all changes be marked or described. Although not required by our licenses, you are encouraged to respect those requests where reasonable. [More considerations for the public](http://wiki.creativecommons.org/Considerations_for_licensors_and_licensees#Considerations_for_licensees).

## Creative Commons Attribution-NonCommercial 4.0 International Public License

By exercising the Licensed Rights (defined below), You accept and agree to be bound by the terms and conditions of this Creative Commons Attribution-NonCommercial 4.0 International Public License ("Public License"). To the extent this Public License may be interpreted as a contract, You are granted the Licensed Rights in consideration of Your acceptance of these terms and conditions, and the Licensor grants You such rights in consideration of benefits the Licensor receives from making the Licensed Material available under these terms and conditions.

### Section 1 – Definitions.

a. __Adapted Material__ means material subject to Copyright and Similar Rights that is derived from or based upon the Licensed Material and in which the Licensed Material is translated, altered, arranged, transformed, or otherwise modified in a manner requiring permission under the Copyright and Similar Rights held by the Licensor. For purposes of this Public License, where the Licensed Material is a musical work, performance, or sound recording, Adapted Material is always produced where the Licensed Material is synched in timed relation with a moving image.

b. __Adapter's License__ means the license You apply to Your Copyright and Similar Rights in Your contributions to Adapted Material in accordance with the terms and conditions of this Public License.

c. __Copyright and Similar Rights__ means copyright and/or similar rights closely related to copyright including, without limitation, performance, broadcast, sound recording, and Sui Generis Database Rights, without regard to how the rights are labeled or categorized. For purposes of this Public License, the rights specified in Section 2(b)(1)-(2) are not Copyright and Similar Rights.

d. __Effective Technological Measures__ means those measures that, in the absence of proper authority, may not be circumvented under laws fulfilling obligations under Article 11 of the WIPO Copyright Treaty adopted on December 20, 1996, and/or similar international agreements.

e. __Exceptions and Limitations__ means fair use, fair dealing, and/or any other exception or limitation to Copyright and Similar Rights that applies to Your use of the Licensed Material.

f. __Licensed Material__ means the artistic or literary work, database, or other material to which the Licensor applied this Public License.

g. __Licensed Rights__ means the rights granted to You subject to the terms and conditions of this Public License, which are limited to all Copyright and Similar Rights that apply to Your use of the Licensed Material and that the Licensor has authority to license.

h. __Licensor__ means the individual(s) or entity(ies) granting rights under this Public License.

i. __NonCommercial__ means not primarily intended for or directed towards commercial advantage or monetary compensation. For purposes of this Public License, the exchange of the Licensed Material for other material subject to Copyright and Similar Rights by digital file-sharing or similar means is NonCommercial provided there is no payment of monetary compensation in connection with the exchange.

j. __Share__ means to provide material to the public by any means or process that requires permission under the Licensed Rights, such as reproduction, public display, public performance, distribution, dissemination, communication, or importation, and to make material available to the public including in ways that members of the public may access the material from a place and at a time individually chosen by them.

k. __Sui Generis Database Rights__ means rights other than copyright resulting from Directive 96/9/EC of the European Parliament and of the Council of 11 March 1996 on the legal protection of databases, as amended and/or succeeded, as well as other essentially equivalent rights anywhere in the world.

l. __You__ means the individual or entity exercising the Licensed Rights under this Public License. Your has a corresponding meaning.

### Section 2 – Scope.

a. ___License grant.___

   1. Subject to the terms and conditions of this Public License, the Licensor hereby grants You a worldwide, royalty-free, non-sublicensable, non-exclusive, irrevocable license to exercise the Licensed Rights in the Licensed Material to:

       A. reproduce and Share the Licensed Material, in whole or in part, for NonCommercial purposes only; and

       B. produce, reproduce, and Share Adapted Material for NonCommercial purposes only.

   2. __Exceptions and Limitations.__ For the avoidance of doubt, where Exceptions and Limitations apply to Your use, this Public License does not apply, and You do not need to comply with its terms and conditions.

   3. __Term.__ The term of this Public License is specified in Section 6(a).

   4. __Media and formats; technical modifications allowed.__ The Licensor authorizes You to exercise the Licensed Rights in all media and formats whether now known or hereafter created, and to make technical modifications necessary to do so. The Licensor waives and/or agrees not to assert any right or authority to forbid You from making technical modifications necessary to exercise the Licensed Rights, including technical modifications necessary to circumvent Effective Technological Measures. For purposes of this Public License, simply making modifications authorized by this Section 2(a)(4) never produces Adapted Material.

   5. __Downstream recipients.__

        A. __Offer from the Licensor – Licensed Material.__ Every recipient of the Licensed Material automatically receives an offer from the Licensor to exercise the Licensed Rights under the terms and conditions of this Public License.

        B. __No downstream restrictions.__ You may not offer or impose any additional or different terms or conditions on, or apply any Effective Technological Measures to, the Licensed Material if doing so restricts exercise of the Licensed Rights by any recipient of the Licensed Material.

   6. __No endorsement.__ Nothing in this Public License constitutes or may be construed as permission to assert or imply that You are, or that Your use of the Licensed Material is, connected with, or sponsored, endorsed, or granted official status by, the Licensor or others designated to receive attribution as provided in Section 3(a)(1)(A)(i).

b. ___Other rights.___

   1. Moral rights, such as the right of integrity, are not licensed under this Public License, nor are publicity, privacy, and/or other similar personality rights; however, to the extent possible, the Licensor waives and/or agrees not to assert any such rights held by the Licensor to the limited extent necessary to allow You to exercise the Licensed Rights, but not otherwise.

   2. Patent and trademark rights are not licensed under this Public License.

   3. To the extent possible, the Licensor waives any right to collect royalties from You for the exercise of the Licensed Rights, whether directly or through a collecting society under any voluntary or waivable statutory or compulsory licensing scheme. In all other cases the Licensor expressly reserves any right to collect such royalties, including when the Licensed Material is used other than for NonCommercial purposes.

### Section 3 – License Conditions.

Your exercise of the Licensed Rights is expressly made subject to the following conditions.

a. ___Attribution.___

   1. If You Share the Licensed Material (including in modified form), You must:

       A. retain the following if it is supplied by the Licensor with the Licensed Material:

         i. identification of the creator(s) of the Licensed Material and any others designated to receive attribution, in any reasonable manner requested by the Licensor (including by pseudonym if designated);

         ii. a copyright notice;

         iii. a notice that refers to this Public License;

         iv. a notice that refers to the disclaimer of warranties;

         v. a URI or hyperlink to the Licensed Material to the extent reasonably practicable;

       B. indicate if You modified the Licensed Material and retain an indication of any previous modifications; and

       C. indicate the Licensed Material is licensed under this Public License, and include the text of, or the URI or hyperlink to, this Public License.

   2. You may satisfy the conditions in Section 3(a)(1) in any reasonable manner based on the medium, means, and context in which You Share the Licensed Material. For example, it may be reasonable to satisfy the conditions by providing a URI or hyperlink to a resource that includes the required information.

   3. If requested by the Licensor, You must remove any of the information required by Section 3(a)(1)(A) to the extent reasonably practicable.

   4. If You Share Adapted Material You produce, the Adapter's License You apply must not prevent recipients of the Adapted Material from complying with this Public License.

### Section 4 – Sui Generis Database Rights.

Where the Licensed Rights include Sui Generis Database Rights that apply to Your use of the Licensed Material:

a. for the avoidance of doubt, Section 2(a)(1) grants You the right to extract, reuse, reproduce, and Share all or a substantial portion of the contents of the database for NonCommercial purposes only;

b. if You include all or a substantial portion of the database contents in a database in which You have Sui Generis Database Rights, then the database in which You have Sui Generis Database Rights (but not its individual contents) is Adapted Material; and

c. You must comply with the conditions in Section 3(a) if You Share all or a substantial portion of the contents of the database.

For the avoidance of doubt, this Section 4 supplements and does not replace Your obligations under this Public License where the Licensed Rights include other Copyright and Similar Rights.

### Section 5 – Disclaimer of Warranties and Limitation of Liability.

a. __Unless otherwise separately undertaken by the Licensor, to the extent possible, the Licensor offers the Licensed Material as-is and as-available, and makes no representations or warranties of any kind concerning the Licensed Material, whether express, implied, statutory, or other. This includes, without limitation, warranties of title, merchantability, fitness for a particular purpose, non-infringement, absence of latent or other defects, accuracy, or the presence or absence of errors, whether or not known or discoverable. Where disclaimers of warranties are not allowed in full or in part, this disclaimer may not apply to You.__

b. __To the extent possible, in no event will the Licensor be liable to You on any legal theory (including, without limitation, negligence) or otherwise for any direct, special, indirect, incidental, consequential, punitive, exemplary, or other losses, costs, expenses, or damages arising out of this Public License or use of the Licensed Material, even if the Licensor has been advised of the possibility of such losses, costs, expenses, or damages. Where a limitation of liability is not allowed in full or in part, this limitation may not apply to You.__

c. The disclaimer of warranties and limitation of liability provided above shall be interpreted in a manner that, to the extent possible, most closely approximates an absolute disclaimer and waiver of all liability.

### Section 6 – Term and Termination.

a. This Public License applies for the term of the Copyright and Similar Rights licensed here. However, if You fail to comply with this Public License, then Your rights under this Public License terminate automatically.

b. Where Your right to use the Licensed Material has terminated under Section 6(a), it reinstates:

   1. automatically as of the date the violation is cured, provided it is cured within 30 days of Your discovery of the violation; or

   2. upon express reinstatement by the Licensor.

   For the avoidance of doubt, this Section 6(b) does not affect any right the Licensor may have to seek remedies for Your violations of this Public License.

c. For the avoidance of doubt, the Licensor may also offer the Licensed Material under separate terms or conditions or stop distributing the Licensed Material at any time; however, doing so will not terminate this Public License.

d. Sections 1, 5, 6, 7, and 8 survive termination of this Public License.

### Section 7 – Other Terms and Conditions.

a. The Licensor shall not be bound by any additional or different terms or conditions communicated by You unless expressly agreed.

b. Any arrangements, understandings, or agreements regarding the Licensed Material not stated herein are separate from and independent of the terms and conditions of this Public License.

### Section 8 – Interpretation.

a. For the avoidance of doubt, this Public License does not, and shall not be interpreted to, reduce, limit, restrict, or impose conditions on any use of the Licensed Material that could lawfully be made without permission under this Public License.

b. To the extent possible, if any provision of this Public License is deemed unenforceable, it shall be automatically reformed to the minimum extent necessary to make it enforceable. If the provision cannot be reformed, it shall be severed from this Public License without affecting the enforceability of the remaining terms and conditions.

c. No term or condition of this Public License will be waived and no failure to comply consented to unless expressly agreed to by the Licensor.

d. Nothing in this Public License constitutes or may be interpreted as a limitation upon, or waiver of, any privileges and immunities that apply to the Licensor or You, including from the legal processes of any jurisdiction or authority.

> Creative Commons is not a party to its public licenses. Notwithstanding, Creative Commons may elect to apply one of its public licenses to material it publishes and in those instances will be considered the “Licensor.” Except for the limited purpose of indicating that material is shared under a Creative Commons public license or as otherwise permitted by the Creative Commons policies published at [creativecommons.org/policies](http://creativecommons.org/policies), Creative Commons does not authorize the use of the trademark “Creative Commons” or any other trademark or logo of Creative Commons without its prior written consent including, without limitation, in connection with any unauthorized modifications to any of its public licenses or any other arrangements, understandings, or agreements concerning use of licensed material. For the avoidance of doubt, this paragraph does not form part of the public licenses.
>
> Creative Commons may be contacted at creativecommons.org

Copyright (c) 2022 MCG-NKU


================================================
FILE: README.md
================================================

<h1 align="center"> SARATR-X: Towards Building A Foundation Model for SAR Target Recognition </h1>

<h5 align="center"><em> Weijie Li (李玮杰), Wei Yang (杨威), Yuenan Hou (侯跃南), Li Liu (刘丽), Yongxiang Liu (刘永祥), and Xiang Li (黎湘) </em></h5>

<p align="center">
  <a href="#Introduction">📖 Introduction</a> |
  <a href="#Pre-training">⚙️ Pre-training</a> |
  <a href="#Classification">📊 Classification</a> |
  <a href="#Detection">🎯 Detection</a> |
  <a href="#Statement">📜 Statement</a>
</p>

<p align="center">
  <a href="https://ieeexplore.ieee.org/document/10856784"><img src="https://img.shields.io/badge/Paper-IEEE%20TIP-blue"></a>
  <a href="https://arxiv.org/abs/2405.09365"><img src="https://img.shields.io/badge/Paper-arxiv-red"></a>  
  <a href="https://pan.baidu.com/s/1EuTo0WCbb69F_bGV6Iwd8A?pwd=7b3u"><img src="https://img.shields.io/badge/Data&Checkpoint-BaiduYun-blue"></a>
  <a href="https://huggingface.co/waterdisappear/SARATR-X"><img src="https://img.shields.io/badge/Data&Checkpoint-Hugging%20face-yellow"></a>
</p>



## 📖 Introduction

This is the official repository for the paper **“SARATR-X: Towards Building A Foundation Model for SAR Target Recognition”**. If you find our work useful, please give us a star 🌟 on GitHub and cite our paper using the BibTeX format at the end.

这里是论文 **“SARATR-X: Towards Building A Foundation Model for SAR Target Recognition (SARATR-X:迈向SAR目标识别基础模型)”** 的代码库。如果您觉得我们的工作有价值,请在 GitHub 上给我们一个星星 🌟,并按页面最后的 BibTeX 格式引用我们的论文。

You can contact us to obtain these datasets and weights by email: **lwj2150508321@sina.com**.

可以通过发送邮件至 **lwj2150508321@sina.com** 获取相关数据集和权重。

<figure>
<div align="center">
<img src=example/fig_radarmap.png width="70%">
</div>
</figure>

**Abstract:**  
Despite the remarkable progress in synthetic aperture radar automatic target recognition (SAR ATR), recent efforts have concentrated on detecting and classifying a specific category, e.g., vehicles, ships, airplanes, or buildings. One of the fundamental limitations of the top‑performing SAR ATR methods is that the learning paradigm is supervised, task‑specific, limited‑category, closed‑world learning, which depends on massive amounts of accurately annotated samples that are expensively labeled by expert SAR analysts and have limited generalization capability and scalability. In this work, we make the first attempt towards building a foundation model for SAR ATR, termed **SARATR‑X**. SARATR‑X learns generalizable representations via self‑supervised learning (SSL) and provides a cornerstone for label‑efficient model adaptation to generic SAR target detection and classification tasks. Specifically, SARATR‑X is trained on **0.18 M unlabelled SAR target samples**, which are curated by combining contemporary benchmarks and constitute the largest publicly available dataset to date. Considering the characteristics of SAR images, a backbone tailored for SAR ATR is carefully designed, and a two‑step SSL method endowed with multi‑scale gradient features was applied to ensure the feature diversity and model scalability of SARATR‑X. The capabilities of SARATR‑X are evaluated on classification under few‑shot and robustness settings and detection across various categories and scenes, achieving impressive performance – often competitive with or even superior to prior fully supervised, semi‑supervised, or self‑supervised algorithms.

**摘要:**  
尽管合成孔径雷达自动目标识别(SAR ATR)取得了显著进展,但最近的工作主要集中在对特定类别(如车辆、船舶、飞机或建筑物)的检测和分类上。性能良好的 SAR ATR 方法的一个基本局限是,其学习范式是有监督的、特定任务的、有限类别的、封闭世界的学习,依赖于大量由 SAR 专家高成本标注的准确样本,泛化能力和可扩展性有限。在这项工作中,我们首次尝试为 SAR ATR 建立一个基础模型,称为 **SARATR‑X**。SARATR‑X 通过自监督学习(SSL)学习可泛化的表征,为标签高效模型适应通用 SAR 目标检测和分类任务提供了基石。具体来说,SARATR‑X 在 **0.18 M** 个未标记的 SAR 目标样本上进行预训练,这些样本结合了当代基准数据集,构成了迄今为止最大的公开可用预训练数据集。考虑到 SAR 图像的特点,我们精心设计了专用于 SAR ATR 的主干网络,并采用了具有多尺度梯度特征的两步 SSL 方法,以确保 SARATR‑X 的特征多样性和模型可扩展性。我们对 SARATR‑X 的能力进行了评估,包括少样本和鲁棒性设置下的分类以及跨类别、跨场景的检测,其性能令人印象深刻,通常可与之前的全监督、半监督或自监督算法相媲美,甚至更胜一筹。

---

## ⚙️ Pre-training

Our code is based on [SAR‑JEPA](https://github.com/waterdisappear/SAR-JEPA) and [HiViT](https://github.com/zhangxiaosong18/hivit).

### Requirements

- Python 3
- CUDA 11.1
- PyTorch 1.8+ with CUDA support
- timm 0.5.4
- tensorboard

### Step‑by‑step installation (new version for H800 / MM3.0 – not compatible with the current GitHub version in the paper; please see `saratrx_mmdet3.0.7z` in BaiduYun and Hugging Face)

```bash
# Pre‑training environment
conda create -n saratrx python=3.10 -y
conda activate saratrx
pip install torch==2.1.1 torchvision==0.16.1 torchaudio==2.1.1 --index-url https://download.pytorch.org/whl/cu121
pip install timm==0.5.4 tensorboard
pip install opencv-python opencv-python-headless
pip install numpy==1.26.4

# Detection environment
cd detection
pip install "setuptools<80.9"
pip install -U openmim
mim install mmengine
pip install mmcv==2.1.0 -f https://download.openmmlab.com/mmcv/dist/cu118/torch2.1/index.html
pip install -v -e .
pip install pycocotools==2.0.7

# Classification environment
cd classification
cd Dassl.pytorch
pip install -r requirements.txt
python setup.py develop
```

### Step‑by‑step installation (old version for 3090)

```bash
conda create -n saratrx python=3.9 -y
conda activate saratrx
cd pre-training

pip install torch==1.8.2 torchvision==0.9.2 torchaudio==0.8.2 --extra-index-url https://download.pytorch.org/whl/lts/1.8/cu111
pip install timm==0.5.4 tensorboard
pip install -r requirements_pretrain.txt
```

### Pre‑training dataset

| **Dataset**                          | **Year** | **Task** | **#Imgs.** | **Img. Size** | **#Targets** | **#Scenes** | **Res. (m)** | **Band** | **Pol.**   | **Target description**                              |
|--------------------------------------|----------|----------|------------|---------------|--------------|-------------|--------------|----------|------------|-----------------------------------------------------|
| [MSTAR](https://www.sdms.afrl.af.mil/index.php?collection=mstar) | 1995     | Cls.     | 14,577     | 128–193       | 10           | 1           | 0.3          | X        | Single     | Fine‑grained vehicle dataset                        |
| [Sandia MiniSAR](https://www.sandia.gov/radar/complex-data/index.html) | 2006 | Det. | 3,927 | 224 | ≥1 | ≥7 | 0.1 | Ku | Single | Terrestrial targets in urban, deserts, and others |
| [SARSim](https://ieeexplore.ieee.org/abstract/document/7968358) | 2017 | Cls. | 21,168 | 139 | 14 | 3 | 0.3 | X | Single | Simulation vehicle dataset                          |
| [SAMPLE](https://github.com/benjaminlewis-afrl/SAMPLE_dataset_public) | 2019 | Cls. | 5,380 | 128 | 10 | 2 | 0.3 | X | Single | Simulation and measured vehicle dataset             |
| [SIVED](https://github.com/CAESAR-Radi/SIVED) | 2023 | Det. | 1,044 | 512 | ≥1 | ≥4 | 0.1–0.3 | X/Ku/Ka | Single | Synthetic vehicle dataset                           |
| [OpenSARShip](https://opensar.sjtu.edu.cn/) | 2017 | Cls. | 26,679 | 9–445 | 14 | 10 | 2.3–17.4 | C | Double | Fine‑grained ship slices                            |
| [SAR‑Ship](https://github.com/CAESAR-Radi/SAR-Ship-Dataset) | 2019 | Det. | 39,729 | 256 | ≥1 | ≥4 | 3–25 | C | Quad | Ship dataset in complex scenes                      |
| [AIR‑SARShip](https://radars.ac.cn/en/article/doi/10.12000/JR19097) | 2019 | Det. | 801 | 512–1000 | ≥1 | ≥3 | 1–3 | C | Single | Ship dataset in complex scenes                      |
| [HRSID](https://github.com/chaozhong2010/HRSID) | 2020 | Det. | 5,604 | 800 | ≥1 | ≥2 | 0.5–3 | C/X | Quad | Instance‑level ship dataset                         |
| [SSDD](https://github.com/TianwenZhang0825/Official-SSDD) | 2021 | Det. | 1,160 | 214–668 | ≥1 | ≥2 | 1–15 | C/X | Quad | Ship dataset                                        |
| [SADD](https://github.com/hust-rslab/SAR-aircraft-data) | 2022 | Det. | 883 | 224 | ≥1 | ≥2 | 0.5–3 | X | Single | Aircraft dataset                                    |
| [SAR‑AIRcraft](https://radars.ac.cn/cn/article/doi/10.12000/JR23043) | 2023 | Det. | 18,818 | 512 | ≥7 | ≥3 | 1 | C | Single | Aircraft dataset                                    |
| [MSAR](https://radars.ac.cn/web/data/getData?dataType=MSAR) | 2022 | Det. | 28,499 | 256–2048 | ≥4 | ≥6 | 1 | C | Quad | Terrestrial and maritime targets                    |
| [OGSOD](https://github.com/mmic-lcl/Datasets-and-benchmark-code) | 2023 | Det. | 18,331 | 256 | ≥3 | ≥2 | 3 | C | Double | Targets include bridges, oil tanks, and harbours    |

### Start pre‑training with SAR images

We consider that constructing self‑supervised signals for SAR images, which suffer from many disturbances in imaging quality, requires a combination of noise suppression and feature compression. The initial weight is from [`mae_hivit_base_1600ep.pth`](https://github.com/zhangxiaosong18/hivit).

```bash
python -m torch.distributed.launch --nproc_per_node 8 --master_port 12345 --use_env main_pretrain.py \
    --data_path <imagenet-path> --output_dir <pretraining-output-path> \
    --model mae_hivit_base_dec512d6b --mask_ratio 0.75 \
    --batch_size 100 --accum_iter 1 --blr 1.5e-4 --weight_decay 0.05 --epochs 800 --warmup_epochs 5
```

**Q1: How do I use my dataset?**  
A1: Change `--data_path` and modify the data loading code if needed in [`main_pretrain.py`](https://github.com/waterdisappear/SARATR-X/blob/main/pre-training/main_pretrain.py) and [`datasets.py`](https://github.com/waterdisappear/SARATR-X/blob/main/pre-training/util/datasets.py).

```python
# Dataset parameters
parser.add_argument('--data_path', default='D:\\2023_SARatrX_1\Pre-Train Data\\186K_notest\\', type=str,
                    help='dataset path')

from util.datasets import load_data
# dataset_train = datasets.ImageFolder(os.path.join(args.data_path), transform=transform_train)
dataset_train = load_data(os.path.join(args.data_path), transform=transform_train)
print(len(dataset_train))
```

**Q2: How do we make improvements?**  
A2: You can add more high‑quality data and try more data augmentation methods. Besides, we suggest improvements to HiViT’s attention mechanism in [`models_hivit.py`](https://github.com/waterdisappear/SARATR-X/blob/main/pre-training/models/models_hivit.py) and our proposed SAR target features in [`models_hivit_mae.py`](https://github.com/waterdisappear/SARATR-X/blob/main/pre-training/models/models_hivit_mae.py).

```python
# Simple augmentation
transform_train = transforms.Compose([
    transforms.RandomResizedCrop(args.input_size, scale=(0.2, 1.0), interpolation=3),  # 3 = bicubic
    transforms.RandomHorizontalFlip(),
    transforms.ColorJitter(contrast=0.5),
    transforms.ToTensor(),
    # transforms.Normalize(mean=[0.485, 0.456, 0.406], std=[0.229, 0.224, 0.225])
])

# SAR feature
self.sarfeature1 = GF(nbins=self.nbins, pool=self.cell_sz, kensize=9,
                      img_size=self.img_size, patch_size=self.patch_size)
self.sarfeature2 = GF(nbins=self.nbins, pool=self.cell_sz, kensize=13,
                      img_size=self.img_size, patch_size=self.patch_size)
self.sarfeature3 = GF(nbins=self.nbins, pool=self.cell_sz, kensize=17,
                      img_size=self.img_size, patch_size=self.patch_size)
target = torch.cat([self.patchify(self.sarfeature1(imgs)),
                    self.patchify(self.sarfeature2(imgs)),
                    self.patchify(self.sarfeature3(imgs))], dim=-1)
```

**Q3: How to load ImageNet pre‑training weights?**  
A3: See [`main_pretrain.py`](https://github.com/waterdisappear/SARATR-X/blob/main/pre-training/main_pretrain.py).

```python
# Define the model
model = models.__dict__[args.model](norm_pix_loss=args.norm_pix_loss)
checkpoint = torch.load('./mae_hivit_base_1600ep.pth', map_location='cpu')
# Load pre‑trained model
msg = model.load_state_dict(checkpoint, strict=False)
print(msg)
```

---

## 📊 Classification

Our few‑shot learning is based on [Dassl](https://github.com/KaiyangZhou/Dassl.pytorch). You need to install it and use our modified `Dassl.pytorch\dassl\utils\tools.py` and `Dassl.pytorch\dassl\data\transforms\transforms.py` from our modified [zip](https://github.com/waterdisappear/SARATR-X/blob/main/classification/Dassl.pytorch.zip) for SAR single‑channel amplitude images. Then you can run our [MIM_linear.sh](https://github.com/waterdisappear/SARATR-X/blob/main/classification/finetune/MIM_linear.sh) for evaluations.

### Linear probing with SAR‑VSA

Three open‑source target datasets (MSTAR, FUSARShip, and SAR‑ACD) were used to construct a fine‑grained classification dataset, **SAR‑VSA**, with 25 categories to evaluate the effectiveness of the proposed improvements.

| **Fine‑grained category**            | **#Train** | **#Test** |
|--------------------------------------|------------|-----------|
| anti‑aircraft (ZSU234)               | 299        | 274       |
| bulldozer (D7)                       | 299        | 274       |
| howitzer (2S1)                       | 299        | 274       |
| infantry vehicle (BMP2)              | 698        | 587       |
| main battle tank (T62)               | 299        | 273       |
| main battle tank (T72)               | 691        | 582       |
| patrol car (BRDM2)                   | 298        | 274       |
| personnel carrier (BTR60)            | 256        | 195       |
| personnel carrier (BTR70)            | 233        | 196       |
| truck (ZIL131)                       | 299        | 274       |
| bridge                               | 1,023      | 438       |
| coastal land                         | 707        | 303       |
| land patch                           | 1,137      | 487       |
| sea clutter wave                     | 1,378      | 590       |
| sea patch                            | 1,250      | 535       |
| ship (cargo)                         | 366        | 156       |
| ship (fishing)                       | 248        | 106       |
| ship (tanker)                        | 150        | 64        |
| ship (others)                        | 312        | 133       |
| strong false alarms                  | 299        | 128       |
| aircraft (Airbus A220)               | 91         | 373       |
| aircraft (Airbus A330)               | 97         | 415       |
| aircraft (Comac ARJ21)               | 103        | 411       |
| aircraft (Boeing 737)                | 100        | 428       |
| aircraft (Boeing 787)                | 113        | 391       |

### MSTAR’s SOC and EOC

**Modification on Dassl.** We perform center cropping for different slice sizes of the MSTAR dataset to prevent correlation between target categories and image sizes during resizing.

```python
# Dassl.pytorch.zip\Dassl.pytorch\dassl\data\transforms\transforms.py

def _build_transform_test(cfg, choices, target_size, normalize):
    if cfg.OUTPUT_DIR.split('/')[-4].split('_')[0] == 'MSTAR':
        tfm_test += [CenterCrop([128, 128])]
```

---

## 🎯 Detection

We use **MMDetection**. For large‑image inference, see `SARATR-X/detection/huge_image_infer.py`.

### Requirements

- Python 3
- CUDA 11.1
- PyTorch 1.8+ with CUDA support
- timm 0.5.4
- mmcv‑full 1.6.0
- opencv‑python
- apex

### Step‑by‑step installation (old version for 3090)

```bash
pip install torch==1.8.2 torchvision==0.9.2 torchaudio==0.8.2 --extra-index-url https://download.pytorch.org/whl/lts/1.8/cu111
pip install mmcv-full==1.6.0 -f https://download.openmmlab.com/mmcv/dist/cu111/torch1.8/index.html
pip install opencv-python timm==0.5.4
sh ../install_apex.sh

pip install -e .
pip install -r requirements_detection.txt
```

### Fine‑tuning

```bash
chmod -R +x tools
./tools/dist_train.sh configs/_hivit_/hivit_base_SARDet.py 8 --work-dir ./work_dirs/SARDet
```

---

## 📜 Statement

- This project is released under the [CC BY‑NC 4.0](LICENSE) license.  
  本项目采用 [CC BY‑NC 4.0](LICENSE) 协议发布。

- If you have any questions or need additional data, code, or weight files, please contact us at **lwj2150508321@sina.com**.  
  如有任何问题或者需要其他数据、代码和权重文件,请通过 **lwj2150508321@sina.com** 联系我们。

- If you find our work useful, please give us a star 🌟 on GitHub and cite our paper using the following BibTeX entries:  
  如果您觉得我们的工作有价值,请在 GitHub 上给我们一颗星星 🌟,并按以下 BibTeX 格式引用我们的论文:

```bibtex
@ARTICLE{li2025saratr,
  author={Li, Weijie and Yang, Wei and Hou, Yuenan and Liu, Li and Liu, Yongxiang and Li, Xiang},
  journal={IEEE Transactions on Image Processing}, 
  title={SARATR-X: Toward Building a Foundation Model for SAR Target Recognition}, 
  year={2025},
  volume={34},
  number={},
  pages={869-884},
  doi={10.1109/TIP.2025.3531988}
}

@ARTICLE{li2024predicting,
  title = {Predicting gradient is better: Exploring self-supervised learning for SAR ATR with a joint-embedding predictive architecture},
  journal = {ISPRS Journal of Photogrammetry and Remote Sensing},
  volume = {218},
  pages = {326-338},
  year = {2024},
  issn = {0924-2716},
  doi = {https://doi.org/10.1016/j.isprsjprs.2024.09.013},
  url = {https://www.sciencedirect.com/science/article/pii/S0924271624003514},
  author = {Li, Weijie and Yang, Wei and Liu, Tianpeng and Hou, Yuenan and Li, Yuxuan and Liu, Zhen and Liu, Yongxiang and Liu, Li}
}



================================================
FILE: classification/.gitignore
================================================
# Byte-compiled / optimized / DLL files
__pycache__/
*.py[cod]
*$py.class

# C extensions
*.so

# Distribution / packaging
.Python
build/
develop-eggs/
dist/
downloads/
eggs/
.eggs/
lib/
lib64/
parts/
sdist/
var/
wheels/
pip-wheel-metadata/
share/python-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/
.nox/
.coverage
.coverage.*
.cache
nosetests.xml
coverage.xml
*.cover
*.py,cover
.hypothesis/
.pytest_cache/

# Translations
*.mo
*.pot

# Django stuff:
*.log
local_settings.py
db.sqlite3
db.sqlite3-journal

# Flask stuff:
instance/
.webassets-cache

# Scrapy stuff:
.scrapy

# Sphinx documentation
docs/_build/

# PyBuilder
target/

# Jupyter Notebook
.ipynb_checkpoints

# IPython
profile_default/
ipython_config.py

# pyenv
.python-version

# pipenv
#   According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control.
#   However, in case of collaboration, if having platform-specific dependencies or dependencies
#   having no cross-platform support, pipenv may install dependencies that don't work, or not
#   install all needed dependencies.
#Pipfile.lock

# PEP 582; used by e.g. github.com/David-OConnor/pyflow
__pypackages__/

# Celery stuff
celerybeat-schedule
celerybeat.pid

# 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/
.dmypy.json
dmypy.json

# Pyre type checker
.pyre/

# Custom
output/
debug.sh


================================================
FILE: classification/.idea/.gitignore
================================================
# Default ignored files
/shelf/
/workspace.xml
# Editor-based HTTP Client requests
/httpRequests/
# Datasource local storage ignored files
/dataSources/
/dataSources.local.xml


================================================
FILE: classification/.idea/CoOp.iml
================================================
<?xml version="1.0" encoding="UTF-8"?>
<module type="PYTHON_MODULE" version="4">
  <component name="NewModuleRootManager">
    <content url="file://$MODULE_DIR$" />
    <orderEntry type="jdk" jdkName="Python 3.8 (pytorch)" jdkType="Python SDK" />
    <orderEntry type="sourceFolder" forTests="false" />
  </component>
</module>

================================================
FILE: classification/.idea/deployment.xml
================================================
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
  <component name="PublishConfigData" remoteFilesAllowedToDisappearOnAutoupload="false">
    <serverData>
      <paths name="root@192.168.0.222:8100">
        <serverdata>
          <mappings>
            <mapping local="$PROJECT_DIR$" web="/" />
          </mappings>
        </serverdata>
      </paths>
    </serverData>
  </component>
</project>

================================================
FILE: classification/.idea/inspectionProfiles/Project_Default.xml
================================================
<component name="InspectionProjectProfileManager">
  <profile version="1.0">
    <option name="myName" value="Project Default" />
    <inspection_tool class="PyPackageRequirementsInspection" enabled="true" level="WARNING" enabled_by_default="true">
      <option name="ignoredPackages">
        <value>
          <list size="1">
            <item index="0" class="java.lang.String" itemvalue="faiss_gpu" />
          </list>
        </value>
      </option>
    </inspection_tool>
  </profile>
</component>

================================================
FILE: classification/.idea/inspectionProfiles/profiles_settings.xml
================================================
<component name="InspectionProjectProfileManager">
  <settings>
    <option name="USE_PROJECT_PROFILE" value="false" />
    <version value="1.0" />
  </settings>
</component>

================================================
FILE: classification/.idea/misc.xml
================================================
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
  <component name="ProjectRootManager" version="2" project-jdk-name="Python 3.8 (pytorch)" project-jdk-type="Python SDK" />
</project>

================================================
FILE: classification/.idea/modules.xml
================================================
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
  <component name="ProjectModuleManager">
    <modules>
      <module fileurl="file://$PROJECT_DIR$/.idea/CoOp.iml" filepath="$PROJECT_DIR$/.idea/CoOp.iml" />
    </modules>
  </component>
</project>

================================================
FILE: classification/.idea/vcs.xml
================================================
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
  <component name="VcsDirectoryMappings">
    <mapping directory="$PROJECT_DIR$" vcs="Git" />
  </component>
</project>

================================================
FILE: classification/COCOOP.md
================================================
## How to Run

The running scripts are provided in `scripts/cocoop/`, which allow you to reproduce the results on the CVPR'22 paper.

Make sure you change the path in `DATA` and run the commands under the main directory `CoOp/`.

### Generalization From Base to New Classes

This corresponds to the experiments in Section 4.1, i.e., Table 1.

You will need both `scripts/cocoop/base2new_train.sh` and `scripts/cocoop/base2new_test.sh`. The former trains a model on bash classes while the latter evaluates the trained model on new classes. Both scripts have two input arguments, i.e., `DATASET` and `SEED`.

`DATASET` takes as input a dataset name, like `imagenet` or `caltech101`. The valid names are the files' names in `CoOp/configs/datasets/`.

Below we provide an example on how to evaluate the model on ImageNet.

```bash
# seed=1
bash scripts/cocoop/base2new_train.sh imagenet 1
bash scripts/cocoop/base2new_test.sh imagenet 1

# seed=2
bash scripts/cocoop/base2new_train.sh imagenet 2
bash scripts/cocoop/base2new_test.sh imagenet 2

# seed=3
bash scripts/cocoop/base2new_train.sh imagenet 3
bash scripts/cocoop/base2new_test.sh imagenet 3
```

When the evaluation is done, you can use `parse_test_res.py` to automatically calculate the average results. For instance, after you finish the evaluation (including `base2new_train.sh` and `base2new_test.sh`) on ImageNet using the aforementioned commands, you would get

```
output
|–– base2new/
|   |–– test_new/
|   |   |–– imagenet/
|   |   |   |–– shots_16/
|   |   |   |   |–– CoCoOp/
|   |   |   |   |   |–– vit_b16_c4_ep10_batch1_ctxv1/
|   |   |   |   |   |   |–– seed1/
|   |   |   |   |   |   |–– seed2/
|   |   |   |   |   |   |–– seed3/
|   |–– train_base/
|   |   |–– imagenet/
|   |   |   |–– shots_16/
|   |   |   |   |–– CoCoOp/
|   |   |   |   |   |–– vit_b16_c4_ep10_batch1_ctxv1/
|   |   |   |   |   |   |–– seed1/
|   |   |   |   |   |   |–– seed2/
|   |   |   |   |   |   |–– seed3/
```

Then, to get the average performance on the base classes, run

```bash
python parse_test_res.py output/base2new/train_base/imagenet/shots_16/CoCoOp/vit_b16_c4_ep10_batch1_ctxv1
```

To get the average performance on the new classes, run

```bash
python parse_test_res.py output/base2new/test_new/imagenet/shots_16/CoCoOp/vit_b16_c4_ep10_batch1_ctxv1 --test-log
```

### Cross-Dataset Transfer

This corresponds to the experiments in Section 4.2, i.e., Table 2.

The relevant scripts are `scripts/cocoop/xd_train.sh` and `scripts/cocoop/xd_test.sh` where the `DATASET` variable is set to the default, namely `imagenet`. To train the model, run

```bash
# seed=1
bash scripts/cocoop/xd_train.sh 1

# seed=2
bash scripts/cocoop/xd_train.sh 2

# seed=3
bash scripts/cocoop/xd_train.sh 3
```

Then, you evaluate the model on other datasets, e.g.,

```bash
for SEED in 1 2 3
do
    bash scripts/cocoop/xd_test.sh caltech101 ${SEED}
    bash scripts/cocoop/xd_test.sh oxford_pets ${SEED}
    bash scripts/cocoop/xd_test.sh stanford_cars ${SEED}
done
```

### Domain Generalization

This corresponds to the experiments in Section 4.3, i.e., Table 3.

The steps are similar to those discussed in "Cross-Dataset Transfer" except you evaluate the model on the variants of ImageNet, i.e., `imagenetv2`, `imagenet_sketch`, `imagenet_a` and `imagenet_r`.

================================================
FILE: classification/COOP.md
================================================
## How to Run

We provide the running scripts in `scripts/coop`, which allow you to reproduce the results on the IJCV'22 paper.

Make sure you change the path in `DATA` and run the commands under the main directory `CoOp/`.

### Few-Shot Learning

All you need is `CoOp/scripts/coop/main.sh`, which contains six input arguments.

`DATASET` takes as input a dataset name, like `imagenet` or `caltech101`. The valid names are the files' names in `CoOp/configs/datasets/`.

`CFG` means which config file to use, such as `rn50`, `rn101` or `vit_b32` (see `CoOp/configs/trainers/CoOp/`). Note that for ImageNet, we use `CoOp/configs/trainers/CoOp/*_ep50.yaml` for all settings (please follow the implementation details shown in the paper).

Below we provide examples on how to run CoOp on Caltech101.

**CLIP + CoOp (M=16, end)**:
- 1 shot: `bash scripts/coop/main.sh caltech101 rn50_ep50 end 16 1 False`
- 2 shots: `bash scripts/coop/main.sh caltech101 rn50_ep100 end 16 2 False`
- 4 shots: `bash scripts/coop/main.sh caltech101 rn50_ep100 end 16 4 False`
- 8 shots: `bash scripts/coop/main.sh caltech101 rn50 end 16 8 False`
- 16 shots: `bash scripts/coop/main.sh caltech101 rn50 end 16 16 False`

**CLIP + CoOp (M=16, mid)**:
- 1 shot: `bash scripts/coop/main.sh caltech101 rn50_ep50 middle 16 1 False`
- 2 shots: `bash scripts/coop/main.sh caltech101 rn50_ep100 middle 16 2 False`
- 4 shots: `bash scripts/coop/main.sh caltech101 rn50_ep100 middle 16 4 False`
- 8 shots: `bash scripts/coop/main.sh caltech101 rn50 middle 16 8 False`
- 16 shots: `bash scripts/coop/main.sh caltech101 rn50 middle 16 16 False`

**CLIP + CoOp (M=16, end, CSC)**:
- 1 shot: `bash scripts/coop/main.sh caltech101 rn50_ep50 end 16 1 True`
- 2 shots: `bash scripts/coop/main.sh caltech101 rn50_ep100 end 16 2 True`
- 4 shots: `bash scripts/coop/main.sh caltech101 rn50_ep100 end 16 4 True`
- 8 shots: `bash scripts/coop/main.sh caltech101 rn50 end 16 8 True`
- 16 shots: `bash scripts/coop/main.sh caltech101 rn50 end 16 16 True`

**CLIP + CoOp (M=16, mid, CSC)**:
- 1 shot: `bash scripts/coop/main.sh caltech101 rn50_ep50 middle 16 1 True`
- 2 shots: `bash scripts/coop/main.sh caltech101 rn50_ep100 middle 16 2 True`
- 4 shots: `bash scripts/coop/main.sh caltech101 rn50_ep100 middle 16 4 True`
- 8 shots: `bash scripts/coop/main.sh caltech101 rn50 middle 16 8 True`
- 16 shots: `bash scripts/coop/main.sh caltech101 rn50 middle 16 16 True`

After the experiments are finished, you can use `parse_test_res.py` to calculate the average results instead of manually looking into the log files. Say the structure of `output/` is

```
output
|–– caltech101/
|   |–– CoOp/
|   |   |–– rn50_16shots/
|   |   |   |–– nctx16_cscFalse_ctpend/
|   |   |   |   |–– seed1/
|   |   |   |   |–– seed2/
|   |   |   |   |–– seed3/
|   |   |–– rn50_8shots/
|   |   |   |–– nctx16_cscFalse_ctpend/
|   |   |   |   |–– seed1/
|   |   |   |   |–– seed2/
|   |   |   |   |–– seed3/
```

To calculate the average results for the folder `rn50_16shots/nctx16_cscFalse_ctpend/`, you can run

```bash
python parse_test_res.py output/caltech101/CoOp/rn50_16shots/nctx16_cscFalse_ctpend
```

Then, you will see something like this in your terminal

```bash
Parsing files in output/caltech101/CoOp/rn50_16shots/nctx16_cscFalse_ctpend
file: output/caltech101/CoOp/rn50_16shots/nctx16_cscFalse_ctpend/seed1/log.txt. accuracy: 91.81%. error: 8.19%.
file: output/caltech101/CoOp/rn50_16shots/nctx16_cscFalse_ctpend/seed2/log.txt. accuracy: 92.01%. error: 7.99%.
file: output/caltech101/CoOp/rn50_16shots/nctx16_cscFalse_ctpend/seed3/log.txt. accuracy: 92.17%. error: 7.83%.
===
Summary of directory: output/caltech101/CoOp/rn50_16shots/nctx16_cscFalse_ctpend
* accuracy: 92.00% +- 0.15%
* error: 8.00% +- 0.15%
===
```

**How to initialize the context tokens with pre-trained word vectors?** Specify the words for the parameter `TRAINER.COOP.CTX_INIT` in your config file. In our paper, we use `configs/trainers/rn50_ctxv1.yaml` (give this file to `--config-file`, see `scripts/coop/main.sh`), which uses "a photo of a" as the initialization words.

**How to visualize nearest words for the learned context tokens?** All you need is `interpret_prompt.py`. Say the learned tokens are saved in `a/b/c/prompt_learner/model.pth.tar` and you would like to see the top-3 nearest words for each token. In this case, run `python interpret_prompt.py a/b/c/prompt_learner/model.pth.tar 3`

### Robustness to Distribution Shift
To reproduce the robustness experiments, you can simply load the models learned on ImageNet and evaluate them on the following datasets: `imagenetv2`, `imagenet-sketch`, `imagenet-a` and `imagenet-r`.

The command is provided in `CoOp/scripts/coop/eval.sh`. The key arguments are `--model-dir`, `--load-epoch` and `--eval-only`. `--model-dir` indicates the directory where the models are saved (i.e. the entire folder containing `log.txt`, the tensorboard file and `prompt_learner/`). `--load-epoch` tells the code to load the model saved at a specific epoch, like `--load-epoch 50` for ImageNet (see the [source code](https://github.com/KaiyangZhou/Dassl.pytorch/blob/master/dassl/engine/trainer.py#L169) for more details).

For example, to evaluate `CLIP + CoOp (M=16, end)` on ImageNetV2, you can do

```bash
# Don't need to use rn5_ep50 here as no training is performed
bash scripts/coop/eval.sh imagenetv2 rn50
```

The default setting is `SHOTS=16`. Feel free to modify the script.

Again, you can use `parse_test_res.py` to automate the calculation of average performance. This time you should append `--test-log`, e.g., `python parse_test_res.py directory --test-log`.

### Zero-Shot CLIP

See `CoOp/scripts/coop/zeroshot.sh`.

### Linear Probe CLIP

Please move to [lpclip/](lpclip/).

================================================
FILE: classification/DATASETS.md
================================================
# How to install datasets

We suggest putting all datasets under the same folder (say `$DATA`) to ease management and following the instructions below to organize datasets to avoid modifying the source code. The file structure looks like

```
$DATA/
|–– imagenet/
|–– caltech-101/
|–– oxford_pets/
|–– stanford_cars/
```

If you have some datasets already installed somewhere else, you can create symbolic links in `$DATA/dataset_name` that point to the original data to avoid duplicate download.

Datasets list:
- [ImageNet](#imagenet)
- [Caltech101](#caltech101)
- [OxfordPets](#oxfordpets)
- [StanfordCars](#stanfordcars)
- [Flowers102](#flowers102)
- [Food101](#food101)
- [FGVCAircraft](#fgvcaircraft)
- [SUN397](#sun397)
- [DTD](#dtd)
- [EuroSAT](#eurosat)
- [UCF101](#ucf101)
- [ImageNetV2](#imagenetv2)
- [ImageNet-Sketch](#imagenet-sketch)
- [ImageNet-A](#imagenet-a)
- [ImageNet-R](#imagenet-r)

The instructions to prepare each dataset are detailed below. To ensure reproducibility and fair comparison for future work, we provide fixed train/val/test splits for all datasets except ImageNet where the validation set is used as test set. The fixed splits are either from the original datasets (if available) or created by us.

### ImageNet
- Create a folder named `imagenet/` under `$DATA`.
- Create `images/` under `imagenet/`.
- Download the dataset from the [official website](https://image-net.org/index.php) and extract the training and validation sets to `$DATA/imagenet/images`. The directory structure should look like
```
imagenet/
|–– images/
|   |–– train/ # contains 1,000 folders like n01440764, n01443537, etc.
|   |–– val/
```
- If you had downloaded the ImageNet dataset before, you can create symbolic links to map the training and validation sets to `$DATA/imagenet/images`.
- Download the `classnames.txt` to `$DATA/imagenet/` from this [link](https://drive.google.com/file/d/1-61f_ol79pViBFDG_IDlUQSwoLcn2XXF/view?usp=sharing). The class names are copied from [CLIP](https://github.com/openai/CLIP/blob/main/notebooks/Prompt_Engineering_for_ImageNet.ipynb).

### Caltech101
- Create a folder named `caltech-101/` under `$DATA`.
- Download `101_ObjectCategories.tar.gz` from http://www.vision.caltech.edu/Image_Datasets/Caltech101/101_ObjectCategories.tar.gz and extract the file under `$DATA/caltech-101`.
- Download `split_zhou_Caltech101.json` from this [link](https://drive.google.com/file/d/1hyarUivQE36mY6jSomru6Fjd-JzwcCzN/view?usp=sharing) and put it under `$DATA/caltech-101`. 

The directory structure should look like
```
caltech-101/
|–– 101_ObjectCategories/
|–– split_zhou_Caltech101.json
```

### OxfordPets
- Create a folder named `oxford_pets/` under `$DATA`.
- Download the images from https://www.robots.ox.ac.uk/~vgg/data/pets/data/images.tar.gz.
- Download the annotations from https://www.robots.ox.ac.uk/~vgg/data/pets/data/annotations.tar.gz.
- Download `split_zhou_OxfordPets.json` from this [link](https://drive.google.com/file/d/1501r8Ber4nNKvmlFVQZ8SeUHTcdTTEqs/view?usp=sharing). 

The directory structure should look like
```
oxford_pets/
|–– images/
|–– annotations/
|–– split_zhou_OxfordPets.json
```

### StanfordCars
- Create a folder named `stanford_cars/` under `$DATA`.
- Download the train images http://ai.stanford.edu/~jkrause/car196/cars_train.tgz.
- Download the test images http://ai.stanford.edu/~jkrause/car196/cars_test.tgz.
- Download the train labels https://ai.stanford.edu/~jkrause/cars/car_devkit.tgz.
- Download the test labels http://ai.stanford.edu/~jkrause/car196/cars_test_annos_withlabels.mat.
- Download `split_zhou_StanfordCars.json` from this [link](https://drive.google.com/file/d/1ObCFbaAgVu0I-k_Au-gIUcefirdAuizT/view?usp=sharing).

The directory structure should look like
```
stanford_cars/
|–– cars_test\
|–– cars_test_annos_withlabels.mat
|–– cars_train\
|–– devkit\
|–– split_zhou_StanfordCars.json
```

### Flowers102
- Create a folder named `oxford_flowers/` under `$DATA`.
- Download the images and labels from https://www.robots.ox.ac.uk/~vgg/data/flowers/102/102flowers.tgz and https://www.robots.ox.ac.uk/~vgg/data/flowers/102/imagelabels.mat respectively.
- Download `cat_to_name.json` from [here](https://drive.google.com/file/d/1AkcxCXeK_RCGCEC_GvmWxjcjaNhu-at0/view?usp=sharing). 
- Download `split_zhou_OxfordFlowers.json` from [here](https://drive.google.com/file/d/1Pp0sRXzZFZq15zVOzKjKBu4A9i01nozT/view?usp=sharing).

The directory structure should look like
```
oxford_flowers/
|–– cat_to_name.json
|–– imagelabels.mat
|–– jpg/
|–– split_zhou_OxfordFlowers.json
```

### Food101
- Download the dataset from https://data.vision.ee.ethz.ch/cvl/datasets_extra/food-101/ and extract the file `food-101.tar.gz` under `$DATA`, resulting in a folder named `$DATA/food-101/`.
- Download `split_zhou_Food101.json` from [here](https://drive.google.com/file/d/1QK0tGi096I0Ba6kggatX1ee6dJFIcEJl/view?usp=sharing).

The directory structure should look like
```
food-101/
|–– images/
|–– license_agreement.txt
|–– meta/
|–– README.txt
|–– split_zhou_Food101.json
```

### FGVCAircraft
- Download the data from https://www.robots.ox.ac.uk/~vgg/data/fgvc-aircraft/archives/fgvc-aircraft-2013b.tar.gz.
- Extract `fgvc-aircraft-2013b.tar.gz` and keep only `data/`.
- Move `data/` to `$DATA` and rename the folder to `fgvc_aircraft/`.

The directory structure should look like
```
fgvc_aircraft/
|–– images/
|–– ... # a bunch of .txt files
```

### SUN397
- Create a folder named  `sun397/` under `$DATA`.
- Download the images http://vision.princeton.edu/projects/2010/SUN/SUN397.tar.gz.
- Download the partitions https://vision.princeton.edu/projects/2010/SUN/download/Partitions.zip.
- Extract these files under `$DATA/sun397/`.
- Download `split_zhou_SUN397.json` from this [link](https://drive.google.com/file/d/1y2RD81BYuiyvebdN-JymPfyWYcd8_MUq/view?usp=sharing).

The directory structure should look like
```
sun397/
|–– SUN397/
|–– split_zhou_SUN397.json
|–– ... # a bunch of .txt files
```

### DTD
- Download the dataset from https://www.robots.ox.ac.uk/~vgg/data/dtd/download/dtd-r1.0.1.tar.gz and extract it to `$DATA`. This should lead to `$DATA/dtd/`.
- Download `split_zhou_DescribableTextures.json` from this [link](https://drive.google.com/file/d/1u3_QfB467jqHgNXC00UIzbLZRQCg2S7x/view?usp=sharing).

The directory structure should look like
```
dtd/
|–– images/
|–– imdb/
|–– labels/
|–– split_zhou_DescribableTextures.json
```

### EuroSAT
- Create a folder named `eurosat/` under `$DATA`.
- Download the dataset from http://madm.dfki.de/files/sentinel/EuroSAT.zip and extract it to `$DATA/eurosat/`.
- Download `split_zhou_EuroSAT.json` from [here](https://drive.google.com/file/d/1Ip7yaCWFi0eaOFUGga0lUdVi_DDQth1o/view?usp=sharing).

The directory structure should look like
```
eurosat/
|–– 2750/
|–– split_zhou_EuroSAT.json
```

### UCF101
- Create a folder named `ucf101/` under `$DATA`.
- Download the zip file `UCF-101-midframes.zip` from [here](https://drive.google.com/file/d/10Jqome3vtUA2keJkNanAiFpgbyC9Hc2O/view?usp=sharing) and extract it to `$DATA/ucf101/`. This zip file contains the extracted middle video frames.
- Download `split_zhou_UCF101.json` from this [link](https://drive.google.com/file/d/1I0S0q91hJfsV9Gf4xDIjgDq4AqBNJb1y/view?usp=sharing).

The directory structure should look like
```
ucf101/
|–– UCF-101-midframes/
|–– split_zhou_UCF101.json
```

### ImageNetV2
- Create a folder named `imagenetv2/` under `$DATA`.
- Go to this github repo https://github.com/modestyachts/ImageNetV2.
- Download the matched-frequency dataset from https://s3-us-west-2.amazonaws.com/imagenetv2public/imagenetv2-matched-frequency.tar.gz and extract it to `$DATA/imagenetv2/`.
- Copy `$DATA/imagenet/classnames.txt` to `$DATA/imagenetv2/`.

The directory structure should look like
```
imagenetv2/
|–– imagenetv2-matched-frequency-format-val/
|–– classnames.txt
```

### ImageNet-Sketch
- Download the dataset from https://github.com/HaohanWang/ImageNet-Sketch.
- Extract the dataset to `$DATA/imagenet-sketch`.
- Copy `$DATA/imagenet/classnames.txt` to `$DATA/imagenet-sketch/`.

The directory structure should look like
```
imagenet-sketch/
|–– images/ # contains 1,000 folders whose names have the format of n*
|–– classnames.txt
```

### ImageNet-A
- Create a folder named `imagenet-adversarial/` under `$DATA`.
- Download the dataset from https://github.com/hendrycks/natural-adv-examples and extract it to `$DATA/imagenet-adversarial/`.
- Copy `$DATA/imagenet/classnames.txt` to `$DATA/imagenet-adversarial/`.

The directory structure should look like
```
imagenet-adversarial/
|–– imagenet-a/ # contains 200 folders whose names have the format of n*
|–– classnames.txt
```

### ImageNet-R
- Create a folder named `imagenet-rendition/` under `$DATA`.
- Download the dataset from https://github.com/hendrycks/imagenet-r and extract it to `$DATA/imagenet-rendition/`.
- Copy `$DATA/imagenet/classnames.txt` to `$DATA/imagenet-rendition/`.

The directory structure should look like
```
imagenet-rendition/
|–– imagenet-r/ # contains 200 folders whose names have the format of n*
|–– classnames.txt
```

================================================
FILE: classification/MIM_linear.sh
================================================
#bash scripts/MIM_linear/main.sh MSTAR_SOC vit_b16 5
#bash scripts/MIM_linear/main.sh MSTAR_SOC vit_b16 10
#bash scripts/MIM_linear/main.sh MSTAR_SOC vit_b16 20
##
#
#bash scripts/MIM_linear/main.sh New_FUSAR vit_b16 5
#bash scripts/MIM_linear/main.sh New_FUSAR vit_b16 10
#bash scripts/MIM_linear/main.sh New_FUSAR vit_b16 20
##
#bash scripts/MIM_linear/main.sh SAR_ACD vit_b16 5
#bash scripts/MIM_linear/main.sh SAR_ACD vit_b16 10
#bash scripts/MIM_linear/main.sh SAR_ACD vit_b16 20


bash scripts/MIM_linear/main.sh MyDataset vit_b16 5
bash scripts/MIM_linear/main.sh MyDataset vit_b16 10
bash scripts/MIM_linear/main.sh MyDataset vit_b16 20


#bash scripts/MIM_linear/main.sh MSTAR_SOC vit_b16 1
#bash scripts/MIM_linear/main.sh MSTAR_SOC vit_b16 2
#bash scripts/MIM_linear/main.sh MSTAR_SOC vit_b16 3
#bash scripts/MIM_linear/main.sh MSTAR_SOC vit_b16 4
#
#bash scripts/MIM_linear/main.sh MSTAR_SOC vit_b16 5
#bash scripts/MIM_linear/main.sh MSTAR_SOC vit_b16 10
#bash scripts/MIM_linear/main.sh MSTAR_SOC vit_b16 20
#bash scripts/MIM_linear/main.sh MSTAR_SOC vit_b16 25
#
#bash scripts/MIM_linear/main.sh MSTAR_EOC1 vit_b16 1
#bash scripts/MIM_linear/main.sh MSTAR_EOC1 vit_b16 2
#bash scripts/MIM_linear/main.sh MSTAR_EOC1 vit_b16 3
#bash scripts/MIM_linear/main.sh MSTAR_EOC1 vit_b16 4
#bash scripts/MIM_linear/main.sh MSTAR_EOC1 vit_b16 5
#bash scripts/MIM_linear/main.sh MSTAR_EOC1 vit_b16 10
#bash scripts/MIM_linear/main.sh MSTAR_EOC1 vit_b16 20
#bash scripts/MIM_linear/main.sh MSTAR_EOC1 vit_b16 25

#bash scripts/MIM_linear/main.sh MSTAR_EOC2C vit_b16 1
#bash scripts/MIM_linear/main.sh MSTAR_EOC2C vit_b16 2
#bash scripts/MIM_linear/main.sh MSTAR_EOC2C vit_b16 3
#bash scripts/MIM_linear/main.sh MSTAR_EOC2C vit_b16 4
#bash scripts/MIM_linear/main.sh MSTAR_EOC2C vit_b16 5
#bash scripts/MIM_linear/main.sh MSTAR_EOC2C vit_b16 10
#bash scripts/MIM_linear/main.sh MSTAR_EOC2C vit_b16 20
#bash scripts/MIM_linear/main.sh MSTAR_EOC2C vit_b16 25
#
#bash scripts/MIM_linear/main.sh MSTAR_EOC2V vit_b16 1
#bash scripts/MIM_linear/main.sh MSTAR_EOC2V vit_b16 2
#bash scripts/MIM_linear/main.sh MSTAR_EOC2V vit_b16 3
#bash scripts/MIM_linear/main.sh MSTAR_EOC2V vit_b16 4
#bash scripts/MIM_linear/main.sh MSTAR_EOC2V vit_b16 5
#bash scripts/MIM_linear/main.sh MSTAR_EOC2V vit_b16 10
#bash scripts/MIM_linear/main.sh MSTAR_EOC2V vit_b16 20
#bash scripts/MIM_linear/main.sh MSTAR_EOC2V vit_b16 25

================================================
FILE: classification/clip/__init__.py
================================================
from .clip import *


================================================
FILE: classification/clip/clip.py
================================================
import hashlib
import os
import urllib
import warnings
from typing import Union, List

import torch
from PIL import Image
from torchvision.transforms import Compose, Resize, CenterCrop, ToTensor, Normalize
from tqdm import tqdm

from .model import build_model
from .simple_tokenizer import SimpleTokenizer as _Tokenizer

try:
    from torchvision.transforms import InterpolationMode
    BICUBIC = InterpolationMode.BICUBIC
except ImportError:
    BICUBIC = Image.BICUBIC


# if torch.__version__.split(".") < ["1", "7", "1"]:
#     warnings.warn("PyTorch version 1.7.1 or higher is recommended")


__all__ = ["available_models", "load", "tokenize"]
_tokenizer = _Tokenizer()

_MODELS = {
    "RN50": "https://openaipublic.azureedge.net/clip/models/afeb0e10f9e5a86da6080e35cf09123aca3b358a0c3e3b6c78a7b63bc04b6762/RN50.pt",
    "RN101": "https://openaipublic.azureedge.net/clip/models/8fa8567bab74a42d41c5915025a8e4538c3bdbe8804a470a72f30b0d94fab599/RN101.pt",
    "RN50x4": "https://openaipublic.azureedge.net/clip/models/7e526bd135e493cef0776de27d5f42653e6b4c8bf9e0f653bb11773263205fdd/RN50x4.pt",
    "RN50x16": "https://openaipublic.azureedge.net/clip/models/52378b407f34354e150460fe41077663dd5b39c54cd0bfd2b27167a4a06ec9aa/RN50x16.pt",
    "ViT-B/32": "https://openaipublic.azureedge.net/clip/models/40d365715913c9da98579312b702a82c18be219cc2a73407c4526f58eba950af/ViT-B-32.pt",
    "ViT-B/16": "https://openaipublic.azureedge.net/clip/models/5806e77cd80f8b59890b7e101eabd078d9fb84e6937f9e85e4ecb61988df416f/ViT-B-16.pt",
}


def _download(url: str, root: str = os.path.expanduser("~/.cache/clip")):
    os.makedirs(root, exist_ok=True)
    filename = os.path.basename(url)

    expected_sha256 = url.split("/")[-2]
    download_target = os.path.join(root, filename)

    if os.path.exists(download_target) and not os.path.isfile(download_target):
        raise RuntimeError(f"{download_target} exists and is not a regular file")

    if os.path.isfile(download_target):
        if hashlib.sha256(open(download_target, "rb").read()).hexdigest() == expected_sha256:
            return download_target
        else:
            warnings.warn(f"{download_target} exists, but the SHA256 checksum does not match; re-downloading the file")

    with urllib.request.urlopen(url) as source, open(download_target, "wb") as output:
        with tqdm(total=int(source.info().get("Content-Length")), ncols=80, unit='iB', unit_scale=True) as loop:
            while True:
                buffer = source.read(8192)
                if not buffer:
                    break

                output.write(buffer)
                loop.update(len(buffer))

    if hashlib.sha256(open(download_target, "rb").read()).hexdigest() != expected_sha256:
        raise RuntimeError(f"Model has been downloaded but the SHA256 checksum does not not match")

    return download_target


def _transform(n_px):
    return Compose([
        Resize(n_px, interpolation=BICUBIC),
        CenterCrop(n_px),
        lambda image: image.convert("RGB"),
        ToTensor(),
        Normalize((0.48145466, 0.4578275, 0.40821073), (0.26862954, 0.26130258, 0.27577711)),
    ])


def available_models() -> List[str]:
    """Returns the names of available CLIP models"""
    return list(_MODELS.keys())


def load(name: str, device: Union[str, torch.device] = "cuda" if torch.cuda.is_available() else "cpu", jit=False):
    """Load a CLIP model

    Parameters
    ----------
    name : str
        A model name listed by `clip.available_models()`, or the path to a model checkpoint containing the state_dict

    device : Union[str, torch.device]
        The device to put the loaded model

    jit : bool
        Whether to load the optimized JIT model or more hackable non-JIT model (default).

    Returns
    -------
    model : torch.nn.Module
        The CLIP model

    preprocess : Callable[[PIL.Image], torch.Tensor]
        A torchvision transform that converts a PIL image into a tensor that the returned model can take as its input
    """
    if name in _MODELS:
        model_path = _download(_MODELS[name])
    elif os.path.isfile(name):
        model_path = name
    else:
        raise RuntimeError(f"Model {name} not found; available models = {available_models()}")

    try:
        # loading JIT archive
        model = torch.jit.load(model_path, map_location=device if jit else "cpu").eval()
        state_dict = None
    except RuntimeError:
        # loading saved state dict
        if jit:
            warnings.warn(f"File {model_path} is not a JIT archive. Loading as a state dict instead")
            jit = False
        state_dict = torch.load(model_path, map_location="cpu")

    if not jit:
        model = build_model(state_dict or model.state_dict()).to(device)
        if str(device) == "cpu":
            model.float()
        return model, _transform(model.visual.input_resolution)

    # patch the device names
    device_holder = torch.jit.trace(lambda: torch.ones([]).to(torch.device(device)), example_inputs=[])
    device_node = [n for n in device_holder.graph.findAllNodes("prim::Constant") if "Device" in repr(n)][-1]

    def patch_device(module):
        try:
            graphs = [module.graph] if hasattr(module, "graph") else []
        except RuntimeError:
            graphs = []

        if hasattr(module, "forward1"):
            graphs.append(module.forward1.graph)

        for graph in graphs:
            for node in graph.findAllNodes("prim::Constant"):
                if "value" in node.attributeNames() and str(node["value"]).startswith("cuda"):
                    node.copyAttributes(device_node)

    model.apply(patch_device)
    patch_device(model.encode_image)
    patch_device(model.encode_text)

    # patch dtype to float32 on CPU
    if str(device) == "cpu":
        float_holder = torch.jit.trace(lambda: torch.ones([]).float(), example_inputs=[])
        float_input = list(float_holder.graph.findNode("aten::to").inputs())[1]
        float_node = float_input.node()

        def patch_float(module):
            try:
                graphs = [module.graph] if hasattr(module, "graph") else []
            except RuntimeError:
                graphs = []

            if hasattr(module, "forward1"):
                graphs.append(module.forward1.graph)

            for graph in graphs:
                for node in graph.findAllNodes("aten::to"):
                    inputs = list(node.inputs())
                    for i in [1, 2]:  # dtype can be the second or third argument to aten::to()
                        if inputs[i].node()["value"] == 5:
                            inputs[i].node().copyAttributes(float_node)

        model.apply(patch_float)
        patch_float(model.encode_image)
        patch_float(model.encode_text)

        model.float()

    return model, _transform(model.input_resolution.item())


def tokenize(texts: Union[str, List[str]], context_length: int = 77, truncate: bool = False) -> torch.LongTensor:
    """
    Returns the tokenized representation of given input string(s)

    Parameters
    ----------
    texts : Union[str, List[str]]
        An input string or a list of input strings to tokenize

    context_length : int
        The context length to use; all CLIP models use 77 as the context length

    truncate: bool
        Whether to truncate the text in case its encoding is longer than the context length

    Returns
    -------
    A two-dimensional tensor containing the resulting tokens, shape = [number of input strings, context_length]
    """
    if isinstance(texts, str):
        texts = [texts]

    sot_token = _tokenizer.encoder["<|startoftext|>"]
    eot_token = _tokenizer.encoder["<|endoftext|>"]
    all_tokens = [[sot_token] + _tokenizer.encode(text) + [eot_token] for text in texts]
    result = torch.zeros(len(all_tokens), context_length, dtype=torch.long)

    for i, tokens in enumerate(all_tokens):
        if len(tokens) > context_length:
            if truncate:
                tokens = tokens[:context_length]
                tokens[-1] = eot_token
            else:
                raise RuntimeError(f"Input {texts[i]} is too long for context length {context_length}")
        result[i, :len(tokens)] = torch.tensor(tokens)

    return result


================================================
FILE: classification/clip/model.py
================================================
from collections import OrderedDict
from typing import Tuple, Union

import numpy as np
import torch
import torch.nn.functional as F
from torch import nn


class Bottleneck(nn.Module):
    expansion = 4

    def __init__(self, inplanes, planes, stride=1):
        super().__init__()

        # all conv layers have stride 1. an avgpool is performed after the second convolution when stride > 1
        self.conv1 = nn.Conv2d(inplanes, planes, 1, bias=False)
        self.bn1 = nn.BatchNorm2d(planes)

        self.conv2 = nn.Conv2d(planes, planes, 3, padding=1, bias=False)
        self.bn2 = nn.BatchNorm2d(planes)

        self.avgpool = nn.AvgPool2d(stride) if stride > 1 else nn.Identity()

        self.conv3 = nn.Conv2d(planes, planes * self.expansion, 1, bias=False)
        self.bn3 = nn.BatchNorm2d(planes * self.expansion)

        self.relu = nn.ReLU(inplace=True)
        self.downsample = None
        self.stride = stride

        if stride > 1 or inplanes != planes * Bottleneck.expansion:
            # downsampling layer is prepended with an avgpool, and the subsequent convolution has stride 1
            self.downsample = nn.Sequential(OrderedDict([
                ("-1", nn.AvgPool2d(stride)),
                ("0", nn.Conv2d(inplanes, planes * self.expansion, 1, stride=1, bias=False)),
                ("1", nn.BatchNorm2d(planes * self.expansion))
            ]))

    def forward(self, x: torch.Tensor):
        identity = x

        out = self.relu(self.bn1(self.conv1(x)))
        out = self.relu(self.bn2(self.conv2(out)))
        out = self.avgpool(out)
        out = self.bn3(self.conv3(out))

        if self.downsample is not None:
            identity = self.downsample(x)

        out += identity
        out = self.relu(out)
        return out


class AttentionPool2d(nn.Module):
    def __init__(self, spacial_dim: int, embed_dim: int, num_heads: int, output_dim: int = None):
        super().__init__()
        self.positional_embedding = nn.Parameter(torch.randn(spacial_dim ** 2 + 1, embed_dim) / embed_dim ** 0.5)
        self.k_proj = nn.Linear(embed_dim, embed_dim)
        self.q_proj = nn.Linear(embed_dim, embed_dim)
        self.v_proj = nn.Linear(embed_dim, embed_dim)
        self.c_proj = nn.Linear(embed_dim, output_dim or embed_dim)
        self.num_heads = num_heads

    def forward(self, x):
        x = x.reshape(x.shape[0], x.shape[1], x.shape[2] * x.shape[3]).permute(2, 0, 1)  # NCHW -> (HW)NC
        x = torch.cat([x.mean(dim=0, keepdim=True), x], dim=0)  # (HW+1)NC
        x = x + self.positional_embedding[:, None, :].to(x.dtype)  # (HW+1)NC
        x, _ = F.multi_head_attention_forward(
            query=x, key=x, value=x,
            embed_dim_to_check=x.shape[-1],
            num_heads=self.num_heads,
            q_proj_weight=self.q_proj.weight,
            k_proj_weight=self.k_proj.weight,
            v_proj_weight=self.v_proj.weight,
            in_proj_weight=None,
            in_proj_bias=torch.cat([self.q_proj.bias, self.k_proj.bias, self.v_proj.bias]),
            bias_k=None,
            bias_v=None,
            add_zero_attn=False,
            dropout_p=0,
            out_proj_weight=self.c_proj.weight,
            out_proj_bias=self.c_proj.bias,
            use_separate_proj_weight=True,
            training=self.training,
            need_weights=False
        )

        return x[0]


class ModifiedResNet(nn.Module):
    """
    A ResNet class that is similar to torchvision's but contains the following changes:
    - There are now 3 "stem" convolutions as opposed to 1, with an average pool instead of a max pool.
    - Performs anti-aliasing strided convolutions, where an avgpool is prepended to convolutions with stride > 1
    - The final pooling layer is a QKV attention instead of an average pool
    """

    def __init__(self, layers, output_dim, heads, input_resolution=224, width=64):
        super().__init__()
        self.output_dim = output_dim
        self.input_resolution = input_resolution

        # the 3-layer stem
        self.conv1 = nn.Conv2d(3, width // 2, kernel_size=3, stride=2, padding=1, bias=False)
        self.bn1 = nn.BatchNorm2d(width // 2)
        self.conv2 = nn.Conv2d(width // 2, width // 2, kernel_size=3, padding=1, bias=False)
        self.bn2 = nn.BatchNorm2d(width // 2)
        self.conv3 = nn.Conv2d(width // 2, width, kernel_size=3, padding=1, bias=False)
        self.bn3 = nn.BatchNorm2d(width)
        self.avgpool = nn.AvgPool2d(2)
        self.relu = nn.ReLU(inplace=True)

        # residual layers
        self._inplanes = width  # this is a *mutable* variable used during construction
        self.layer1 = self._make_layer(width, layers[0])
        self.layer2 = self._make_layer(width * 2, layers[1], stride=2)
        self.layer3 = self._make_layer(width * 4, layers[2], stride=2)
        self.layer4 = self._make_layer(width * 8, layers[3], stride=2)

        embed_dim = width * 32  # the ResNet feature dimension
        self.attnpool = AttentionPool2d(input_resolution // 32, embed_dim, heads, output_dim)

    def _make_layer(self, planes, blocks, stride=1):
        layers = [Bottleneck(self._inplanes, planes, stride)]

        self._inplanes = planes * Bottleneck.expansion
        for _ in range(1, blocks):
            layers.append(Bottleneck(self._inplanes, planes))

        return nn.Sequential(*layers)

    def forward(self, x):
        def stem(x):
            for conv, bn in [(self.conv1, self.bn1), (self.conv2, self.bn2), (self.conv3, self.bn3)]:
                x = self.relu(bn(conv(x)))
            x = self.avgpool(x)
            return x

        x = x.type(self.conv1.weight.dtype)
        x = stem(x)
        x = self.layer1(x)
        x = self.layer2(x)
        x = self.layer3(x)
        x = self.layer4(x)
        x = self.attnpool(x)

        return x


class LayerNorm(nn.LayerNorm):
    """Subclass torch's LayerNorm to handle fp16."""

    def forward(self, x: torch.Tensor):
        orig_type = x.dtype
        ret = super().forward(x.type(torch.float32))
        return ret.type(orig_type)


class QuickGELU(nn.Module):
    def forward(self, x: torch.Tensor):
        return x * torch.sigmoid(1.702 * x)


class ResidualAttentionBlock(nn.Module):
    def __init__(self, d_model: int, n_head: int, attn_mask: torch.Tensor = None):
        super().__init__()

        self.attn = nn.MultiheadAttention(d_model, n_head)
        self.ln_1 = LayerNorm(d_model)
        self.mlp = nn.Sequential(OrderedDict([
            ("c_fc", nn.Linear(d_model, d_model * 4)),
            ("gelu", QuickGELU()),
            ("c_proj", nn.Linear(d_model * 4, d_model))
        ]))
        self.ln_2 = LayerNorm(d_model)
        self.attn_mask = attn_mask

    def attention(self, x: torch.Tensor):
        self.attn_mask = self.attn_mask.to(dtype=x.dtype, device=x.device) if self.attn_mask is not None else None
        return self.attn(x, x, x, need_weights=False, attn_mask=self.attn_mask)[0]

    def forward(self, x: torch.Tensor):
        x = x + self.attention(self.ln_1(x))
        x = x + self.mlp(self.ln_2(x))
        return x


class Transformer(nn.Module):
    def __init__(self, width: int, layers: int, heads: int, attn_mask: torch.Tensor = None):
        super().__init__()
        self.width = width
        self.layers = layers
        self.resblocks = nn.Sequential(*[ResidualAttentionBlock(width, heads, attn_mask) for _ in range(layers)])

    def forward(self, x: torch.Tensor):
        return self.resblocks(x)


class VisionTransformer(nn.Module):
    def __init__(self, input_resolution: int, patch_size: int, width: int, layers: int, heads: int, output_dim: int):
        super().__init__()
        self.input_resolution = input_resolution
        self.output_dim = output_dim
        self.conv1 = nn.Conv2d(in_channels=3, out_channels=width, kernel_size=patch_size, stride=patch_size, bias=False)

        scale = width ** -0.5
        self.class_embedding = nn.Parameter(scale * torch.randn(width))
        self.positional_embedding = nn.Parameter(scale * torch.randn((input_resolution // patch_size) ** 2 + 1, width))
        self.ln_pre = LayerNorm(width)

        self.transformer = Transformer(width, layers, heads)

        self.ln_post = LayerNorm(width)
        self.proj = nn.Parameter(scale * torch.randn(width, output_dim))

    def forward(self, x: torch.Tensor):
        x = self.conv1(x)  # shape = [*, width, grid, grid]
        x = x.reshape(x.shape[0], x.shape[1], -1)  # shape = [*, width, grid ** 2]
        x = x.permute(0, 2, 1)  # shape = [*, grid ** 2, width]
        x = torch.cat([self.class_embedding.to(x.dtype) + torch.zeros(x.shape[0], 1, x.shape[-1], dtype=x.dtype, device=x.device), x], dim=1)  # shape = [*, grid ** 2 + 1, width]
        x = x + self.positional_embedding.to(x.dtype)
        x = self.ln_pre(x)

        x = x.permute(1, 0, 2)  # NLD -> LND
        x = self.transformer(x)
        x = x.permute(1, 0, 2)  # LND -> NLD

        x = self.ln_post(x[:, 0, :])

        if self.proj is not None:
            x = x @ self.proj

        return x


class CLIP(nn.Module):
    def __init__(self,
                 embed_dim: int,
                 # vision
                 image_resolution: int,
                 vision_layers: Union[Tuple[int, int, int, int], int],
                 vision_width: int,
                 vision_patch_size: int,
                 # text
                 context_length: int,
                 vocab_size: int,
                 transformer_width: int,
                 transformer_heads: int,
                 transformer_layers: int
                 ):
        super().__init__()

        self.context_length = context_length

        if isinstance(vision_layers, (tuple, list)):
            vision_heads = vision_width * 32 // 64
            self.visual = ModifiedResNet(
                layers=vision_layers,
                output_dim=embed_dim,
                heads=vision_heads,
                input_resolution=image_resolution,
                width=vision_width
            )
        else:
            vision_heads = vision_width // 64
            self.visual = VisionTransformer(
                input_resolution=image_resolution,
                patch_size=vision_patch_size,
                width=vision_width,
                layers=vision_layers,
                heads=vision_heads,
                output_dim=embed_dim
            )

        self.transformer = Transformer(
            width=transformer_width,
            layers=transformer_layers,
            heads=transformer_heads,
            attn_mask=self.build_attention_mask()
        )

        self.vocab_size = vocab_size
        self.token_embedding = nn.Embedding(vocab_size, transformer_width)
        self.positional_embedding = nn.Parameter(torch.empty(self.context_length, transformer_width))
        self.ln_final = LayerNorm(transformer_width)

        self.text_projection = nn.Parameter(torch.empty(transformer_width, embed_dim))
        self.logit_scale = nn.Parameter(torch.ones([]) * np.log(1 / 0.07))

        self.initialize_parameters()

    def initialize_parameters(self):
        nn.init.normal_(self.token_embedding.weight, std=0.02)
        nn.init.normal_(self.positional_embedding, std=0.01)

        if isinstance(self.visual, ModifiedResNet):
            if self.visual.attnpool is not None:
                std = self.visual.attnpool.c_proj.in_features ** -0.5
                nn.init.normal_(self.visual.attnpool.q_proj.weight, std=std)
                nn.init.normal_(self.visual.attnpool.k_proj.weight, std=std)
                nn.init.normal_(self.visual.attnpool.v_proj.weight, std=std)
                nn.init.normal_(self.visual.attnpool.c_proj.weight, std=std)

            for resnet_block in [self.visual.layer1, self.visual.layer2, self.visual.layer3, self.visual.layer4]:
                for name, param in resnet_block.named_parameters():
                    if name.endswith("bn3.weight"):
                        nn.init.zeros_(param)

        proj_std = (self.transformer.width ** -0.5) * ((2 * self.transformer.layers) ** -0.5)
        attn_std = self.transformer.width ** -0.5
        fc_std = (2 * self.transformer.width) ** -0.5
        for block in self.transformer.resblocks:
            nn.init.normal_(block.attn.in_proj_weight, std=attn_std)
            nn.init.normal_(block.attn.out_proj.weight, std=proj_std)
            nn.init.normal_(block.mlp.c_fc.weight, std=fc_std)
            nn.init.normal_(block.mlp.c_proj.weight, std=proj_std)

        if self.text_projection is not None:
            nn.init.normal_(self.text_projection, std=self.transformer.width ** -0.5)

    def build_attention_mask(self):
        # lazily create causal attention mask, with full attention between the vision tokens
        # pytorch uses additive attention mask; fill with -inf
        mask = torch.empty(self.context_length, self.context_length)
        mask.fill_(float("-inf"))
        mask.triu_(1)  # zero out the lower diagonal
        return mask

    @property
    def dtype(self):
        return self.visual.conv1.weight.dtype

    def encode_image(self, image):
        return self.visual(image.type(self.dtype))

    def encode_text(self, text):
        x = self.token_embedding(text).type(self.dtype)  # [batch_size, n_ctx, d_model]

        x = x + self.positional_embedding.type(self.dtype)
        x = x.permute(1, 0, 2)  # NLD -> LND
        x = self.transformer(x)
        x = x.permute(1, 0, 2)  # LND -> NLD
        x = self.ln_final(x).type(self.dtype)

        # x.shape = [batch_size, n_ctx, transformer.width]
        # take features from the eot embedding (eot_token is the highest number in each sequence)
        x = x[torch.arange(x.shape[0]), text.argmax(dim=-1)] @ self.text_projection

        return x

    def forward(self, image, text):
        image_features = self.encode_image(image)
        text_features = self.encode_text(text)

        # normalized features
        image_features = image_features / image_features.norm(dim=-1, keepdim=True)
        text_features = text_features / text_features.norm(dim=-1, keepdim=True)

        # cosine similarity as logits
        logit_scale = self.logit_scale.exp()
        logits_per_image = logit_scale * image_features @ text_features.t()
        logits_per_text = logit_scale * text_features @ image_features.t()

        # shape = [global_batch_size, global_batch_size]
        return logits_per_image, logits_per_text


def convert_weights(model: nn.Module):
    """Convert applicable model parameters to fp16"""

    def _convert_weights_to_fp16(l):
        if isinstance(l, (nn.Conv1d, nn.Conv2d, nn.Linear)):
            l.weight.data = l.weight.data.half()
            if l.bias is not None:
                l.bias.data = l.bias.data.half()

        if isinstance(l, nn.MultiheadAttention):
            for attr in [*[f"{s}_proj_weight" for s in ["in", "q", "k", "v"]], "in_proj_bias", "bias_k", "bias_v"]:
                tensor = getattr(l, attr)
                if tensor is not None:
                    tensor.data = tensor.data.half()

        for name in ["text_projection", "proj"]:
            if hasattr(l, name):
                attr = getattr(l, name)
                if attr is not None:
                    attr.data = attr.data.half()

    model.apply(_convert_weights_to_fp16)


def build_model(state_dict: dict):
    vit = "visual.proj" in state_dict

    if vit:
        vision_width = state_dict["visual.conv1.weight"].shape[0]
        vision_layers = len([k for k in state_dict.keys() if k.startswith("visual.") and k.endswith(".attn.in_proj_weight")])
        vision_patch_size = state_dict["visual.conv1.weight"].shape[-1]
        grid_size = round((state_dict["visual.positional_embedding"].shape[0] - 1) ** 0.5)
        image_resolution = vision_patch_size * grid_size
    else:
        counts: list = [len(set(k.split(".")[2] for k in state_dict if k.startswith(f"visual.layer{b}"))) for b in [1, 2, 3, 4]]
        vision_layers = tuple(counts)
        vision_width = state_dict["visual.layer1.0.conv1.weight"].shape[0]
        output_width = round((state_dict["visual.attnpool.positional_embedding"].shape[0] - 1) ** 0.5)
        vision_patch_size = None
        assert output_width ** 2 + 1 == state_dict["visual.attnpool.positional_embedding"].shape[0]
        image_resolution = output_width * 32

    embed_dim = state_dict["text_projection"].shape[1]
    context_length = state_dict["positional_embedding"].shape[0]
    vocab_size = state_dict["token_embedding.weight"].shape[0]
    transformer_width = state_dict["ln_final.weight"].shape[0]
    transformer_heads = transformer_width // 64
    transformer_layers = len(set(k.split(".")[2] for k in state_dict if k.startswith(f"transformer.resblocks")))

    model = CLIP(
        embed_dim,
        image_resolution, vision_layers, vision_width, vision_patch_size,
        context_length, vocab_size, transformer_width, transformer_heads, transformer_layers
    )

    for key in ["input_resolution", "context_length", "vocab_size"]:
        if key in state_dict:
            del state_dict[key]

    convert_weights(model)
    model.load_state_dict(state_dict)
    return model.eval()


================================================
FILE: classification/clip/simple_tokenizer.py
================================================
import gzip
import html
import os
from functools import lru_cache

import ftfy
import regex as re


@lru_cache()
def default_bpe():
    return os.path.join(os.path.dirname(os.path.abspath(__file__)), "bpe_simple_vocab_16e6.txt.gz")


@lru_cache()
def bytes_to_unicode():
    """
    Returns list of utf-8 byte and a corresponding list of unicode strings.
    The reversible bpe codes work on unicode strings.
    This means you need a large # of unicode characters in your vocab if you want to avoid UNKs.
    When you're at something like a 10B token dataset you end up needing around 5K for decent coverage.
    This is a signficant percentage of your normal, say, 32K bpe vocab.
    To avoid that, we want lookup tables between utf-8 bytes and unicode strings.
    And avoids mapping to whitespace/control characters the bpe code barfs on.
    """
    bs = list(range(ord("!"), ord("~")+1))+list(range(ord("¡"), ord("¬")+1))+list(range(ord("®"), ord("ÿ")+1))
    cs = bs[:]
    n = 0
    for b in range(2**8):
        if b not in bs:
            bs.append(b)
            cs.append(2**8+n)
            n += 1
    cs = [chr(n) for n in cs]
    return dict(zip(bs, cs))


def get_pairs(word):
    """Return set of symbol pairs in a word.
    Word is represented as tuple of symbols (symbols being variable-length strings).
    """
    pairs = set()
    prev_char = word[0]
    for char in word[1:]:
        pairs.add((prev_char, char))
        prev_char = char
    return pairs


def basic_clean(text):
    text = ftfy.fix_text(text)
    text = html.unescape(html.unescape(text))
    return text.strip()


def whitespace_clean(text):
    text = re.sub(r'\s+', ' ', text)
    text = text.strip()
    return text


class SimpleTokenizer(object):
    def __init__(self, bpe_path: str = default_bpe()):
        self.byte_encoder = bytes_to_unicode()
        self.byte_decoder = {v: k for k, v in self.byte_encoder.items()}
        merges = gzip.open(bpe_path).read().decode("utf-8").split('\n')
        merges = merges[1:49152-256-2+1]
        merges = [tuple(merge.split()) for merge in merges]
        vocab = list(bytes_to_unicode().values())
        vocab = vocab + [v+'</w>' for v in vocab]
        for merge in merges:
            vocab.append(''.join(merge))
        vocab.extend(['<|startoftext|>', '<|endoftext|>'])
        self.encoder = dict(zip(vocab, range(len(vocab))))
        self.decoder = {v: k for k, v in self.encoder.items()}
        self.bpe_ranks = dict(zip(merges, range(len(merges))))
        self.cache = {'<|startoftext|>': '<|startoftext|>', '<|endoftext|>': '<|endoftext|>'}
        self.pat = re.compile(r"""<\|startoftext\|>|<\|endoftext\|>|'s|'t|'re|'ve|'m|'ll|'d|[\p{L}]+|[\p{N}]|[^\s\p{L}\p{N}]+""", re.IGNORECASE)

    def bpe(self, token):
        if token in self.cache:
            return self.cache[token]
        word = tuple(token[:-1]) + ( token[-1] + '</w>',)
        pairs = get_pairs(word)

        if not pairs:
            return token+'</w>'

        while True:
            bigram = min(pairs, key = lambda pair: self.bpe_ranks.get(pair, float('inf')))
            if bigram not in self.bpe_ranks:
                break
            first, second = bigram
            new_word = []
            i = 0
            while i < len(word):
                try:
                    j = word.index(first, i)
                    new_word.extend(word[i:j])
                    i = j
                except:
                    new_word.extend(word[i:])
                    break

                if word[i] == first and i < len(word)-1 and word[i+1] == second:
                    new_word.append(first+second)
                    i += 2
                else:
                    new_word.append(word[i])
                    i += 1
            new_word = tuple(new_word)
            word = new_word
            if len(word) == 1:
                break
            else:
                pairs = get_pairs(word)
        word = ' '.join(word)
        self.cache[token] = word
        return word

    def encode(self, text):
        bpe_tokens = []
        text = whitespace_clean(basic_clean(text)).lower()
        for token in re.findall(self.pat, text):
            token = ''.join(self.byte_encoder[b] for b in token.encode('utf-8'))
            bpe_tokens.extend(self.encoder[bpe_token] for bpe_token in self.bpe(token).split(' '))
        return bpe_tokens

    def decode(self, tokens):
        text = ''.join([self.decoder[token] for token in tokens])
        text = bytearray([self.byte_decoder[c] for c in text]).decode('utf-8', errors="replace").replace('</w>', ' ')
        return text


================================================
FILE: classification/configs/datasets/MSTAR_EOC1.yaml
================================================
DATASET:
  NAME: "MSTAR_EOC1"


================================================
FILE: classification/configs/datasets/MSTAR_EOC2C.yaml
================================================
DATASET:
  NAME: "MSTAR_EOC2C"


================================================
FILE: classification/configs/datasets/MSTAR_EOC2V.yaml
================================================
DATASET:
  NAME: "MSTAR_EOC2V"


================================================
FILE: classification/configs/datasets/MSTAR_SOC.yaml
================================================
DATASET:
  NAME: "MSTAR_SOC"


================================================
FILE: classification/configs/datasets/MyDataset.yaml
================================================
DATASET:
  NAME: "MyDataset"


================================================
FILE: classification/configs/datasets/New_FUSAR.yaml
================================================
DATASET:
  NAME: "New_FUSAR"


================================================
FILE: classification/configs/datasets/SAR_ACD.yaml
================================================
DATASET:
  NAME: "SAR_ACD"


================================================
FILE: classification/configs/datasets/caltech101.yaml
================================================
DATASET:
  NAME: "Caltech101"


================================================
FILE: classification/configs/datasets/dtd.yaml
================================================
DATASET:
  NAME: "DescribableTextures"


================================================
FILE: classification/configs/datasets/eurosat.yaml
================================================
DATASET:
  NAME: "EuroSAT"


================================================
FILE: classification/configs/datasets/fgvc_aircraft.yaml
================================================
DATASET:
  NAME: "FGVCAircraft"


================================================
FILE: classification/configs/datasets/food101.yaml
================================================
DATASET:
  NAME: "Food101"


================================================
FILE: classification/configs/datasets/imagenet.yaml
================================================
DATASET:
  NAME: "ImageNet"


================================================
FILE: classification/configs/datasets/imagenet_a.yaml
================================================
DATASET:
  NAME: "ImageNetA"


================================================
FILE: classification/configs/datasets/imagenet_r.yaml
================================================
DATASET:
  NAME: "ImageNetR"


================================================
FILE: classification/configs/datasets/imagenet_sketch.yaml
================================================
DATASET:
  NAME: "ImageNetSketch"


================================================
FILE: classification/configs/datasets/imagenetv2.yaml
================================================
DATASET:
  NAME: "ImageNetV2"


================================================
FILE: classification/configs/datasets/oxford_flowers.yaml
================================================
DATASET:
  NAME: "OxfordFlowers"

================================================
FILE: classification/configs/datasets/oxford_pets.yaml
================================================
DATASET:
  NAME: "OxfordPets"

================================================
FILE: classification/configs/datasets/stanford_cars.yaml
================================================
DATASET:
  NAME: "StanfordCars"


================================================
FILE: classification/configs/datasets/sun397.yaml
================================================
DATASET:
  NAME: "SUN397"


================================================
FILE: classification/configs/datasets/ucf101.yaml
================================================
DATASET:
  NAME: "UCF101"


================================================
FILE: classification/configs/trainers/CNN/vit_b16.yaml
================================================
#DATALOADER:
#  TRAIN_X:
#    BATCH_SIZE: 32
#  TEST:
#    BATCH_SIZE: 128
#  NUM_WORKERS: 8
#
#INPUT:
#  SIZE: (224, 224)
#  INTERPOLATION: "bicubic"
#  PIXEL_MEAN: [0.48145466, 0.4578275, 0.40821073]
#  PIXEL_STD: [0.26862954, 0.26130258, 0.27577711]
#  TRANSFORMS: ["random_resized_crop", "random_flip", "normalize"]
#
#OPTIM:
#  NAME: "sgd"
#  LR: 0.002
#  MAX_EPOCH: 200
#  LR_SCHEDULER: "cosine"
#  WARMUP_EPOCH: 1
#  WARMUP_TYPE: "constant"
#  WARMUP_CONS_LR: 1e-5
#
#TRAIN:
#  PRINT_FREQ: 5
#
#MODEL:
#  BACKBONE:
#    NAME: "ViT-B/16"

DATALOADER:
  TRAIN_X:
    BATCH_SIZE: 32
  TEST:
    BATCH_SIZE: 128
  NUM_WORKERS: 0

INPUT:
  SIZE: (224, 224)
  INTERPOLATION: "bicubic"
  TRANSFORMS: []

OPTIM:
  NAME: "adamw"
  LR: 1e-3
#  MAX_EPOCH: 300
  MAX_EPOCH: 200
  WEIGHT_DECAY: 1e-3
  ADAM_BETA1: 0.9
  ADAM_BETA2: 0.95
  LR_SCHEDULER: "cosine"
  WARMUP_EPOCH: 20
  WARMUP_TYPE: "constant"
  WARMUP_CONS_LR: 1e-5


TRAIN:
  PRINT_FREQ: 5

#MODEL:
#  BACKBONE:
#    NAME: "ViT-B/16"
#    NAME: "RN50"

================================================
FILE: classification/configs/trainers/CoCoOp/vit_b16_c16_ep10_batch1.yaml
================================================
DATALOADER:
  TRAIN_X:
    BATCH_SIZE: 1
  TEST:
    BATCH_SIZE: 100
  NUM_WORKERS: 8

INPUT:
  SIZE: (224, 224)
  INTERPOLATION: "bicubic"
  PIXEL_MEAN: [0.48145466, 0.4578275, 0.40821073]
  PIXEL_STD: [0.26862954, 0.26130258, 0.27577711]
  TRANSFORMS: ["random_resized_crop", "random_flip", "normalize"]

OPTIM:
  NAME: "sgd"
  LR: 0.002
  MAX_EPOCH: 10
  LR_SCHEDULER: "cosine"
  WARMUP_EPOCH: 1
  WARMUP_TYPE: "constant"
  WARMUP_CONS_LR: 1e-5

TRAIN:
  PRINT_FREQ: 20

MODEL:
  BACKBONE:
    NAME: "ViT-B/16"

TRAINER:
  COCOOP:
    N_CTX: 16
    CTX_INIT: ""
    PREC: "fp16"

================================================
FILE: classification/configs/trainers/CoCoOp/vit_b16_c4_ep10_batch1.yaml
================================================
DATALOADER:
  TRAIN_X:
    BATCH_SIZE: 1
  TEST:
    BATCH_SIZE: 100
  NUM_WORKERS: 8

INPUT:
  SIZE: (224, 224)
  INTERPOLATION: "bicubic"
  PIXEL_MEAN: [0.48145466, 0.4578275, 0.40821073]
  PIXEL_STD: [0.26862954, 0.26130258, 0.27577711]
  TRANSFORMS: ["random_resized_crop", "random_flip", "normalize"]

OPTIM:
  NAME: "sgd"
  LR: 0.002
  MAX_EPOCH: 10
  LR_SCHEDULER: "cosine"
  WARMUP_EPOCH: 1
  WARMUP_TYPE: "constant"
  WARMUP_CONS_LR: 1e-5

TRAIN:
  PRINT_FREQ: 20

MODEL:
  BACKBONE:
    NAME: "ViT-B/16"

TRAINER:
  COCOOP:
    N_CTX: 4
    CTX_INIT: ""
    PREC: "fp16"

================================================
FILE: classification/configs/trainers/CoCoOp/vit_b16_c4_ep10_batch1_ctxv1.yaml
================================================
DATALOADER:
  TRAIN_X:
    BATCH_SIZE: 1
  TEST:
    BATCH_SIZE: 100
  NUM_WORKERS: 8

INPUT:
  SIZE: (224, 224)
  INTERPOLATION: "bicubic"
  PIXEL_MEAN: [0.48145466, 0.4578275, 0.40821073]
  PIXEL_STD: [0.26862954, 0.26130258, 0.27577711]
  TRANSFORMS: ["random_resized_crop", "random_flip", "normalize"]

OPTIM:
  NAME: "sgd"
  LR: 0.002
  MAX_EPOCH: 10
  LR_SCHEDULER: "cosine"
  WARMUP_EPOCH: 1
  WARMUP_TYPE: "constant"
  WARMUP_CONS_LR: 1e-5

TRAIN:
  PRINT_FREQ: 20

MODEL:
  BACKBONE:
    NAME: "ViT-B/16"

TRAINER:
  COCOOP:
    N_CTX: 4
    CTX_INIT: "a photo of a"
    PREC: "fp16"

================================================
FILE: classification/configs/trainers/CoCoOp/vit_b16_c8_ep10_batch1.yaml
================================================
DATALOADER:
  TRAIN_X:
    BATCH_SIZE: 1
  TEST:
    BATCH_SIZE: 100
  NUM_WORKERS: 8

INPUT:
  SIZE: (224, 224)
  INTERPOLATION: "bicubic"
  PIXEL_MEAN: [0.48145466, 0.4578275, 0.40821073]
  PIXEL_STD: [0.26862954, 0.26130258, 0.27577711]
  TRANSFORMS: ["random_resized_crop", "random_flip", "normalize"]

OPTIM:
  NAME: "sgd"
  LR: 0.002
  MAX_EPOCH: 10
  LR_SCHEDULER: "cosine"
  WARMUP_EPOCH: 1
  WARMUP_TYPE: "constant"
  WARMUP_CONS_LR: 1e-5

TRAIN:
  PRINT_FREQ: 20

MODEL:
  BACKBONE:
    NAME: "ViT-B/16"

TRAINER:
  COCOOP:
    N_CTX: 8
    CTX_INIT: ""
    PREC: "fp16"

================================================
FILE: classification/configs/trainers/CoOp/rn101.yaml
================================================
DATALOADER:
  TRAIN_X:
    BATCH_SIZE: 32
  TEST:
    BATCH_SIZE: 100
  NUM_WORKERS: 8

INPUT:
  SIZE: (224, 224)
  INTERPOLATION: "bicubic"
  PIXEL_MEAN: [0.48145466, 0.4578275, 0.40821073]
  PIXEL_STD: [0.26862954, 0.26130258, 0.27577711]
  TRANSFORMS: ["random_resized_crop", "random_flip", "normalize"]

OPTIM:
  NAME: "sgd"
  LR: 0.002
  MAX_EPOCH: 200
  LR_SCHEDULER: "cosine"
  WARMUP_EPOCH: 1
  WARMUP_TYPE: "constant"
  WARMUP_CONS_LR: 1e-5

TRAIN:
  PRINT_FREQ: 5

MODEL:
  BACKBONE:
    NAME: "RN101"

================================================
FILE: classification/configs/trainers/CoOp/rn101_ep50.yaml
================================================
DATALOADER:
  TRAIN_X:
    BATCH_SIZE: 32
  TEST:
    BATCH_SIZE: 100
  NUM_WORKERS: 8

INPUT:
  SIZE: (224, 224)
  INTERPOLATION: "bicubic"
  PIXEL_MEAN: [0.48145466, 0.4578275, 0.40821073]
  PIXEL_STD: [0.26862954, 0.26130258, 0.27577711]
  TRANSFORMS: ["random_resized_crop", "random_flip", "normalize"]

OPTIM:
  NAME: "sgd"
  LR: 0.002
  MAX_EPOCH: 50
  LR_SCHEDULER: "cosine"
  WARMUP_EPOCH: 1
  WARMUP_TYPE: "constant"
  WARMUP_CONS_LR: 1e-5

TRAIN:
  PRINT_FREQ: 5

MODEL:
  BACKBONE:
    NAME: "RN101"

================================================
FILE: classification/configs/trainers/CoOp/rn50.yaml
================================================
DATALOADER:
  TRAIN_X:
    BATCH_SIZE: 32
  TEST:
    BATCH_SIZE: 100
  NUM_WORKERS: 8

INPUT:
  SIZE: (224, 224)
  INTERPOLATION: "bicubic"
  PIXEL_MEAN: [0.5, 0.5, 0.5]
  PIXEL_STD: [0.5, 0.5, 0.5]
  TRANSFORMS: ["random_resized_crop", "random_flip", "normalize"]

OPTIM:
  NAME: "sgd"
  LR: 0.002
  MAX_EPOCH: 200
  LR_SCHEDULER: "cosine"
  WARMUP_EPOCH: 1
  WARMUP_TYPE: "constant"
  WARMUP_CONS_LR: 1e-5

TRAIN:
  PRINT_FREQ: 5

MODEL:
  BACKBONE:
    NAME: "RN50"

================================================
FILE: classification/configs/trainers/CoOp/rn50_ctxv1.yaml
================================================
DATALOADER:
  TRAIN_X:
    BATCH_SIZE: 32
  TEST:
    BATCH_SIZE: 100
  NUM_WORKERS: 8

INPUT:
  SIZE: (224, 224)
  INTERPOLATION: "bicubic"
  PIXEL_MEAN: [0.48145466, 0.4578275, 0.40821073]
  PIXEL_STD: [0.26862954, 0.26130258, 0.27577711]
  TRANSFORMS: ["random_resized_crop", "random_flip", "normalize"]

OPTIM:
  NAME: "sgd"
  LR: 0.002
  MAX_EPOCH: 200
  LR_SCHEDULER: "cosine"
  WARMUP_EPOCH: 1
  WARMUP_TYPE: "constant"
  WARMUP_CONS_LR: 1e-5

TRAIN:
  PRINT_FREQ: 5

MODEL:
  BACKBONE:
    NAME: "RN50"

TRAINER:
  COOP:
    CTX_INIT: "a photo of a"


================================================
FILE: classification/configs/trainers/CoOp/rn50_ep100.yaml
================================================
DATALOADER:
  TRAIN_X:
    BATCH_SIZE: 32
  TEST:
    BATCH_SIZE: 100
  NUM_WORKERS: 8

INPUT:
  SIZE: (224, 224)
  INTERPOLATION: "bicubic"
  PIXEL_MEAN: [0.48145466, 0.4578275, 0.40821073]
  PIXEL_STD: [0.26862954, 0.26130258, 0.27577711]
  TRANSFORMS: ["random_resized_crop", "random_flip", "normalize"]

OPTIM:
  NAME: "sgd"
  LR: 0.002
  MAX_EPOCH: 100
  LR_SCHEDULER: "cosine"
  WARMUP_EPOCH: 1
  WARMUP_TYPE: "constant"
  WARMUP_CONS_LR: 1e-5

TRAIN:
  PRINT_FREQ: 5

MODEL:
  BACKBONE:
    NAME: "RN50"


================================================
FILE: classification/configs/trainers/CoOp/rn50_ep50.yaml
================================================
DATALOADER:
  TRAIN_X:
    BATCH_SIZE: 32
  TEST:
    BATCH_SIZE: 100
  NUM_WORKERS: 8

INPUT:
  SIZE: (224, 224)
  INTERPOLATION: "bicubic"
  PIXEL_MEAN: [0.48145466, 0.4578275, 0.40821073]
  PIXEL_STD: [0.26862954, 0.26130258, 0.27577711]
  TRANSFORMS: ["random_resized_crop", "random_flip", "normalize"]

OPTIM:
  NAME: "sgd"
  LR: 0.002
  MAX_EPOCH: 50
  LR_SCHEDULER: "cosine"
  WARMUP_EPOCH: 1
  WARMUP_TYPE: "constant"
  WARMUP_CONS_LR: 1e-5

TRAIN:
  PRINT_FREQ: 5

MODEL:
  BACKBONE:
    NAME: "RN50"

================================================
FILE: classification/configs/trainers/CoOp/rn50_ep50_ctxv1.yaml
================================================
DATALOADER:
  TRAIN_X:
    BATCH_SIZE: 32
  TEST:
    BATCH_SIZE: 100
  NUM_WORKERS: 8

INPUT:
  SIZE: (224, 224)
  INTERPOLATION: "bicubic"
  PIXEL_MEAN: [0.48145466, 0.4578275, 0.40821073]
  PIXEL_STD: [0.26862954, 0.26130258, 0.27577711]
  TRANSFORMS: ["random_resized_crop", "random_flip", "normalize"]

OPTIM:
  NAME: "sgd"
  LR: 0.002
  MAX_EPOCH: 50
  LR_SCHEDULER: "cosine"
  WARMUP_EPOCH: 1
  WARMUP_TYPE: "constant"
  WARMUP_CONS_LR: 1e-5

TRAIN:
  PRINT_FREQ: 5

MODEL:
  BACKBONE:
    NAME: "RN50"

TRAINER:
  COOP:
    CTX_INIT: "a photo of a"

================================================
FILE: classification/configs/trainers/CoOp/rn50_val.yaml
================================================
DATALOADER:
  TRAIN_X:
    BATCH_SIZE: 200
  TEST:
    BATCH_SIZE: 200
  NUM_WORKERS: 8

INPUT:
  SIZE: (224, 224)
  INTERPOLATION: "bicubic"
  PIXEL_MEAN: [0.48145466, 0.4578275, 0.40821073]
  PIXEL_STD: [0.26862954, 0.26130258, 0.27577711]
  TRANSFORMS: ["random_resized_crop", "random_flip", "normalize"]

MODEL:
  BACKBONE:
    NAME: "RN50"

================================================
FILE: classification/configs/trainers/CoOp/vit_b16.yaml
================================================
#DATALOADER:
#  TRAIN_X:
#    BATCH_SIZE: 32
#  TEST:
#    BATCH_SIZE: 100
#  NUM_WORKERS: 8
#
#INPUT:
#  SIZE: (224, 224)
#  INTERPOLATION: "bicubic"
#  PIXEL_MEAN: [0.48145466, 0.4578275, 0.40821073]
#  PIXEL_STD: [0.26862954, 0.26130258, 0.27577711]
#  TRANSFORMS: ["random_resized_crop", "random_flip", "normalize"]
#
#OPTIM:
#  NAME: "sgd"
#  LR: 0.002
#  MAX_EPOCH: 200
#  LR_SCHEDULER: "cosine"
#  WARMUP_EPOCH: 1
#  WARMUP_TYPE: "constant"
#  WARMUP_CONS_LR: 1e-5
#
#TRAIN:
#  PRINT_FREQ: 5
#
#MODEL:
#  BACKBONE:
#    NAME: "ViT-B/16"

DATALOADER:
  TRAIN_X:
    BATCH_SIZE: 32
  TEST:
    BATCH_SIZE: 100
  NUM_WORKERS: 8

INPUT:
  SIZE: (224, 224)
  INTERPOLATION: "bicubic"
  PIXEL_MEAN: [0.14694904, 0.14694904, 0.14694904]
  PIXEL_STD: [0.13213828, 0.13213828, 0.13213828]
#  TRANSFORMS: ["random_resized_crop", "random_flip", "normalize"]
  RANDAUGMENT_N: 3
  RANDAUGMENT_M: 10
#  TRANSFORMS: ["randaugment_fixmatch", "normalize"]
#  TRANSFORMS: ["random_flip", "normalize"]
  TRANSFORMS: ["randaugment"]

OPTIM:
  NAME: "sgd"
  LR: 0.002
  MAX_EPOCH: 300
  LR_SCHEDULER: "cosine"
  WARMUP_EPOCH: 1
  WARMUP_TYPE: "constant"
  WARMUP_CONS_LR: 1e-5

TRAIN:
  PRINT_FREQ: 5

MODEL:
  BACKBONE:
    NAME: "ViT-B/16"

================================================
FILE: classification/configs/trainers/CoOp/vit_b16_ctxv1.yaml
================================================
DATALOADER:
  TRAIN_X:
    BATCH_SIZE: 32
  TEST:
    BATCH_SIZE: 100
  NUM_WORKERS: 8

INPUT:
  SIZE: (224, 224)
  INTERPOLATION: "bicubic"
  PIXEL_MEAN: [0.48145466, 0.4578275, 0.40821073]
  PIXEL_STD: [0.26862954, 0.26130258, 0.27577711]
  TRANSFORMS: ["random_resized_crop", "random_flip", "normalize"]

OPTIM:
  NAME: "sgd"
  LR: 0.002
  MAX_EPOCH: 200
  LR_SCHEDULER: "cosine"
  WARMUP_EPOCH: 1
  WARMUP_TYPE: "constant"
  WARMUP_CONS_LR: 1e-5

TRAIN:
  PRINT_FREQ: 5

MODEL:
  BACKBONE:
    NAME: "ViT-B/16"

TRAINER:
  COOP:
    CTX_INIT: "a photo of a"


================================================
FILE: classification/configs/trainers/CoOp/vit_b16_ep100.yaml
================================================
DATALOADER:
  TRAIN_X:
    BATCH_SIZE: 32
  TEST:
    BATCH_SIZE: 100
  NUM_WORKERS: 8

INPUT:
  SIZE: (224, 224)
  INTERPOLATION: "bicubic"
  PIXEL_MEAN: [0.48145466, 0.4578275, 0.40821073]
  PIXEL_STD: [0.26862954, 0.26130258, 0.27577711]
  TRANSFORMS: ["random_resized_crop", "random_flip", "normalize"]

OPTIM:
  NAME: "sgd"
  LR: 0.002
  MAX_EPOCH: 100
  LR_SCHEDULER: "cosine"
  WARMUP_EPOCH: 1
  WARMUP_TYPE: "constant"
  WARMUP_CONS_LR: 1e-5

TRAIN:
  PRINT_FREQ: 5

MODEL:
  BACKBONE:
    NAME: "ViT-B/16"

================================================
FILE: classification/configs/trainers/CoOp/vit_b16_ep100_ctxv1.yaml
================================================
DATALOADER:
  TRAIN_X:
    BATCH_SIZE: 32
  TEST:
    BATCH_SIZE: 100
  NUM_WORKERS: 8

INPUT:
  SIZE: (224, 224)
  INTERPOLATION: "bicubic"
  PIXEL_MEAN: [0.48145466, 0.4578275, 0.40821073]
  PIXEL_STD: [0.26862954, 0.26130258, 0.27577711]
  TRANSFORMS: ["random_resized_crop", "random_flip", "normalize"]

OPTIM:
  NAME: "sgd"
  LR: 0.002
  MAX_EPOCH: 100
  LR_SCHEDULER: "cosine"
  WARMUP_EPOCH: 1
  WARMUP_TYPE: "constant"
  WARMUP_CONS_LR: 1e-5

TRAIN:
  PRINT_FREQ: 5

MODEL:
  BACKBONE:
    NAME: "ViT-B/16"

TRAINER:
  COOP:
    CTX_INIT: "a photo of a"


================================================
FILE: classification/configs/trainers/CoOp/vit_b16_ep50.yaml
================================================
DATALOADER:
  TRAIN_X:
    BATCH_SIZE: 32
  TEST:
    BATCH_SIZE: 100
  NUM_WORKERS: 8

INPUT:
  SIZE: (224, 224)
  INTERPOLATION: "bicubic"
  PIXEL_MEAN: [0.48145466, 0.4578275, 0.40821073]
  PIXEL_STD: [0.26862954, 0.26130258, 0.27577711]
  TRANSFORMS: ["random_resized_crop", "random_flip", "normalize"]

OPTIM:
  NAME: "sgd"
  LR: 0.002
  MAX_EPOCH: 50
  LR_SCHEDULER: "cosine"
  WARMUP_EPOCH: 1
  WARMUP_TYPE: "constant"
  WARMUP_CONS_LR: 1e-5

TRAIN:
  PRINT_FREQ: 5

MODEL:
  BACKBONE:
    NAME: "ViT-B/16"

================================================
FILE: classification/configs/trainers/CoOp/vit_b16_ep50_ctxv1.yaml
================================================
DATALOADER:
  TRAIN_X:
    BATCH_SIZE: 32
  TEST:
    BATCH_SIZE: 100
  NUM_WORKERS: 8

INPUT:
  SIZE: (224, 224)
  INTERPOLATION: "bicubic"
  PIXEL_MEAN: [0.48145466, 0.4578275, 0.40821073]
  PIXEL_STD: [0.26862954, 0.26130258, 0.27577711]
  TRANSFORMS: ["random_resized_crop", "random_flip", "normalize"]

OPTIM:
  NAME: "sgd"
  LR: 0.002
  MAX_EPOCH: 50
  LR_SCHEDULER: "cosine"
  WARMUP_EPOCH: 1
  WARMUP_TYPE: "constant"
  WARMUP_CONS_LR: 1e-5

TRAIN:
  PRINT_FREQ: 5

MODEL:
  BACKBONE:
    NAME: "ViT-B/16"

TRAINER:
  COOP:
    CTX_INIT: "a photo of a"


================================================
FILE: classification/configs/trainers/CoOp/vit_b32.yaml
================================================
DATALOADER:
  TRAIN_X:
    BATCH_SIZE: 32
  TEST:
    BATCH_SIZE: 100
  NUM_WORKERS: 8

INPUT:
  SIZE: (224, 224)
  INTERPOLATION: "bicubic"
  PIXEL_MEAN: [0.48145466, 0.4578275, 0.40821073]
  PIXEL_STD: [0.26862954, 0.26130258, 0.27577711]
  TRANSFORMS: ["random_resized_crop", "random_flip", "normalize"]

OPTIM:
  NAME: "sgd"
  LR: 0.002
  MAX_EPOCH: 200
  LR_SCHEDULER: "cosine"
  WARMUP_EPOCH: 1
  WARMUP_TYPE: "constant"
  WARMUP_CONS_LR: 1e-5

TRAIN:
  PRINT_FREQ: 5

MODEL:
  BACKBONE:
    NAME: "ViT-B/32"

================================================
FILE: classification/configs/trainers/CoOp/vit_b32_ep50.yaml
================================================
DATALOADER:
  TRAIN_X:
    BATCH_SIZE: 32
  TEST:
    BATCH_SIZE: 100
  NUM_WORKERS: 8

INPUT:
  SIZE: (224, 224)
  INTERPOLATION: "bicubic"
  PIXEL_MEAN: [0.48145466, 0.4578275, 0.40821073]
  PIXEL_STD: [0.26862954, 0.26130258, 0.27577711]
  TRANSFORMS: ["random_resized_crop", "random_flip", "normalize"]

OPTIM:
  NAME: "sgd"
  LR: 0.002
  MAX_EPOCH: 50
  LR_SCHEDULER: "cosine"
  WARMUP_EPOCH: 1
  WARMUP_TYPE: "constant"
  WARMUP_CONS_LR: 1e-5

TRAIN:
  PRINT_FREQ: 5

MODEL:
  BACKBONE:
    NAME: "ViT-B/32"

================================================
FILE: classification/configs/trainers/MIM_linear/vit_b16.yaml
================================================
#DATALOADER:
#  TRAIN_X:
#    BATCH_SIZE: 32
#  TEST:
#    BATCH_SIZE: 128
#  NUM_WORKERS: 8
#
#INPUT:
#  SIZE: (224, 224)
#  INTERPOLATION: "bicubic"
#  PIXEL_MEAN: [0.48145466, 0.4578275, 0.40821073]
#  PIXEL_STD: [0.26862954, 0.26130258, 0.27577711]
#  TRANSFORMS: ["random_resized_crop", "random_flip", "normalize"]
#
#OPTIM:
#  NAME: "sgd"
#  LR: 0.002
#  MAX_EPOCH: 200
#  LR_SCHEDULER: "cosine"
#  WARMUP_EPOCH: 1
#  WARMUP_TYPE: "constant"
#  WARMUP_CONS_LR: 1e-5
#
#TRAIN:
#  PRINT_FREQ: 5
#
#MODEL:
#  BACKBONE:
#    NAME: "ViT-B/16"

DATALOADER:
  TRAIN_X:
    BATCH_SIZE: 25
  TEST:
    BATCH_SIZE: 50
  NUM_WORKERS: 0

INPUT:
  SIZE: (224, 224)
  INTERPOLATION: "bicubic"
#  PIXEL_MEAN: [ 0.5, 0.5, 0.5 ]
#  PIXEL_STD: [ 0.5, 0.5, 0.5 ]
  TRANSFORMS: []
#  TRANSFORMS: ["random_flip","randaugment2"]
OPTIM:
  NAME: "adamw"
  LR: 1e-3
#  MAX_EPOCH: 300
  MAX_EPOCH: 30
  WEIGHT_DECAY: 1e-4
  ADAM_BETA1: 0.9
  ADAM_BETA2: 0.95
  LR_SCHEDULER: "cosine"
  WARMUP_EPOCH: 1
  WARMUP_TYPE: "constant"
  WARMUP_CONS_LR: 1e-5


TRAIN:
  PRINT_FREQ: 5

#MODEL:
#  BACKBONE:
#    NAME: "ViT-B/16"
#    NAME: "RN50"

================================================
FILE: classification/configs/trainers/OneHot/vit_b16.yaml
================================================
#DATALOADER:
#  TRAIN_X:
#    BATCH_SIZE: 32
#  TEST:
#    BATCH_SIZE: 100
#  NUM_WORKERS: 8
#
#INPUT:
#  SIZE: (224, 224)
#  INTERPOLATION: "bicubic"
#  PIXEL_MEAN: [0.48145466, 0.4578275, 0.40821073]
#  PIXEL_STD: [0.26862954, 0.26130258, 0.27577711]
#  TRANSFORMS: ["random_resized_crop", "random_flip", "normalize"]
#
#OPTIM:
#  NAME: "sgd"
#  LR: 0.002
#  MAX_EPOCH: 200
#  LR_SCHEDULER: "cosine"
#  WARMUP_EPOCH: 1
#  WARMUP_TYPE: "constant"
#  WARMUP_CONS_LR: 1e-5
#
#TRAIN:
#  PRINT_FREQ: 5
#
#MODEL:
#  BACKBONE:
#    NAME: "ViT-B/16"

DATALOADER:
  TRAIN_X:
    BATCH_SIZE: 32
  TEST:
    BATCH_SIZE: 100
  NUM_WORKERS: 8

INPUT:
  SIZE: (224, 224)
  INTERPOLATION: "bicubic"
  PIXEL_MEAN: [0.14694904, 0.14694904, 0.14694904]
  PIXEL_STD: [0.13213828, 0.13213828, 0.13213828]
#  TRANSFORMS: ["random_resized_crop", "random_flip", "normalize"]
  RANDAUGMENT_N: 3
  RANDAUGMENT_M: 10
#  TRANSFORMS: ["randaugment_fixmatch", "normalize"]
#  TRANSFORMS: ["random_flip", "normalize"]
  TRANSFORMS: ["randaugment"]

OPTIM:
  NAME: "sgd"
  LR: 0.002
  MAX_EPOCH: 300
  LR_SCHEDULER: "cosine"
  WARMUP_EPOCH: 1
  WARMUP_TYPE: "constant"
  WARMUP_CONS_LR: 1e-5

TRAIN:
  PRINT_FREQ: 5

MODEL:
  BACKBONE:
    NAME: "ViT-B/16"

================================================
FILE: classification/configs/trainers/RingMo/vit_b16.yaml
================================================
#DATALOADER:
#  TRAIN_X:
#    BATCH_SIZE: 32
#  TEST:
#    BATCH_SIZE: 100
#  NUM_WORKERS: 8
#
#INPUT:
#  SIZE: (224, 224)
#  INTERPOLATION: "bicubic"
#  PIXEL_MEAN: [0.48145466, 0.4578275, 0.40821073]
#  PIXEL_STD: [0.26862954, 0.26130258, 0.27577711]
#  TRANSFORMS: ["random_resized_crop", "random_flip", "normalize"]
#
#OPTIM:
#  NAME: "sgd"
#  LR: 0.002
#  MAX_EPOCH: 200
#  LR_SCHEDULER: "cosine"
#  WARMUP_EPOCH: 1
#  WARMUP_TYPE: "constant"
#  WARMUP_CONS_LR: 1e-5
#
#TRAIN:
#  PRINT_FREQ: 5
#
#MODEL:
#  BACKBONE:
#    NAME: "ViT-B/16"

DATALOADER:
  TRAIN_X:
    BATCH_SIZE: 32
  TEST:
    BATCH_SIZE: 100
  NUM_WORKERS: 8

INPUT:
  SIZE: (224, 224)
  INTERPOLATION: "bicubic"
#  PIXEL_MEAN: [0.14694904, 0.14694904, 0.14694904]
#  PIXEL_STD: [0.13213828, 0.13213828, 0.13213828]
#  TRANSFORMS: ["random_resized_crop", "random_flip", "normalize"]

#  TRANSFORMS: ["randaugment_fixmatch", "normalize"]
#  TRANSFORMS: ["random_flip", "normalize"]
#  RANDAUGMENT_N: 2
#  RANDAUGMENT_M: 4
#  TRANSFORMS: [ "randaugment" ]
  RANDAUGMENT_N: 2
  TRANSFORMS: ["randaugment2"]
#  RANDAUGMENT_N: 2
#  GN_MEAN: 0.0
#  GN_STD: 0.15
#  TRANSFORMS: ["random_flip", 'gaussian_noise']
OPTIM:
  NAME: "adamw"
  LR: 0.002
#  MAX_EPOCH: 200
  MAX_EPOCH: 200
  LR_SCHEDULER: "cosine"
  WARMUP_EPOCH: 1
  WARMUP_TYPE: "constant"
  WARMUP_CONS_LR: 1e-5

TRAIN:
  PRINT_FREQ: 5

MODEL:
  BACKBONE:
    NAME: "RN50"

================================================
FILE: classification/configs/trainers/clip/vit_b16.yaml
================================================
#DATALOADER:
#  TRAIN_X:
#    BATCH_SIZE: 32
#  TEST:
#    BATCH_SIZE: 100
#  NUM_WORKERS: 8
#
#INPUT:
#  SIZE: (224, 224)
#  INTERPOLATION: "bicubic"
#  PIXEL_MEAN: [0.48145466, 0.4578275, 0.40821073]
#  PIXEL_STD: [0.26862954, 0.26130258, 0.27577711]
#  TRANSFORMS: ["random_resized_crop", "random_flip", "normalize"]
#
#OPTIM:
#  NAME: "sgd"
#  LR: 0.002
#  MAX_EPOCH: 200
#  LR_SCHEDULER: "cosine"
#  WARMUP_EPOCH: 1
#  WARMUP_TYPE: "constant"
#  WARMUP_CONS_LR: 1e-5
#
#TRAIN:
#  PRINT_FREQ: 5
#
#MODEL:
#  BACKBONE:
#    NAME: "ViT-B/16"

DATALOADER:
  TRAIN_X:
    BATCH_SIZE: 32
  TEST:
    BATCH_SIZE: 100
  NUM_WORKERS: 8

INPUT:
  SIZE: (224, 224)
  INTERPOLATION: "bicubic"
  PIXEL_MEAN: [0.14694904, 0.14694904, 0.14694904]
  PIXEL_STD: [0.13213828, 0.13213828, 0.13213828]
#  TRANSFORMS: ["random_resized_crop", "random_flip", "normalize"]
  RANDAUGMENT_N: 3
  RANDAUGMENT_M: 10
#  TRANSFORMS: ["randaugment_fixmatch", "normalize"]
#  TRANSFORMS: ["random_flip", "normalize"]
  TRANSFORMS: ["randaugment"]

OPTIM:
  NAME: "sgd"
  LR: 0.002
  MAX_EPOCH: 300
  LR_SCHEDULER: "cosine"
  WARMUP_EPOCH: 1
  WARMUP_TYPE: "constant"
  WARMUP_CONS_LR: 1e-5

TRAIN:
  PRINT_FREQ: 5

MODEL:
  BACKBONE:
    NAME: "ViT-B/16"

================================================
FILE: classification/configs/trainers/clip_adapter/rn101.yaml
================================================
DATALOADER:
  TRAIN_X:
    BATCH_SIZE: 32
  TEST:
    BATCH_SIZE: 100
  NUM_WORKERS: 8

INPUT:
  SIZE: (224, 224)
  INTERPOLATION: "bicubic"
  PIXEL_MEAN: [0.48145466, 0.4578275, 0.40821073]
  PIXEL_STD: [0.26862954, 0.26130258, 0.27577711]
  TRANSFORMS: ["random_resized_crop", "random_flip", "normalize"]

OPTIM:
  NAME: "sgd"
  LR: 0.002
  MAX_EPOCH: 200
  LR_SCHEDULER: "cosine"
  WARMUP_EPOCH: 1
  WARMUP_TYPE: "constant"
  WARMUP_CONS_LR: 1e-5

TRAIN:
  PRINT_FREQ: 5

MODEL:
  BACKBONE:
    NAME: "RN101"

================================================
FILE: classification/configs/trainers/clip_adapter/rn101_ep50.yaml
================================================
DATALOADER:
  TRAIN_X:
    BATCH_SIZE: 32
  TEST:
    BATCH_SIZE: 100
  NUM_WORKERS: 8

INPUT:
  SIZE: (224, 224)
  INTERPOLATION: "bicubic"
  PIXEL_MEAN: [0.48145466, 0.4578275, 0.40821073]
  PIXEL_STD: [0.26862954, 0.26130258, 0.27577711]
  TRANSFORMS: ["random_resized_crop", "random_flip", "normalize"]

OPTIM:
  NAME: "sgd"
  LR: 0.002
  MAX_EPOCH: 50
  LR_SCHEDULER: "cosine"
  WARMUP_EPOCH: 1
  WARMUP_TYPE: "constant"
  WARMUP_CONS_LR: 1e-5

TRAIN:
  PRINT_FREQ: 5

MODEL:
  BACKBONE:
    NAME: "RN101"

================================================
FILE: classification/configs/trainers/clip_adapter/rn50.yaml
================================================
DATALOADER:
  TRAIN_X:
    BATCH_SIZE: 32
  TEST:
    BATCH_SIZE: 100
  NUM_WORKERS: 8

INPUT:
  SIZE: (224, 224)
  INTERPOLATION: "bicubic"
  PIXEL_MEAN: [0.14694904, 0.14694904, 0.14694904]
  PIXEL_STD: [0.13213828, 0.13213828, 0.13213828]
#  TRANSFORMS: ["random_resized_crop", "random_flip", "normalize"]
#  RANDAUGMENT_N: 3
  TRANSFORMS: ["random_flip", "normalize"]

OPTIM:
  NAME: "adam"
  LR: 1e-3
  MAX_EPOCH: 300
  LR_SCHEDULER: "cosine"
  WARMUP_EPOCH: 5
  WARMUP_TYPE: "constant"
  WARMUP_CONS_LR: 1e-5

TRAIN:
  PRINT_FREQ: 5

MODEL:
  BACKBONE:
    NAME: "RN50"

================================================
FILE: classification/configs/trainers/clip_adapter/rn50_ctxv1.yaml
================================================
DATALOADER:
  TRAIN_X:
    BATCH_SIZE: 32
  TEST:
    BATCH_SIZE: 100
  NUM_WORKERS: 8

INPUT:
  SIZE: (224, 224)
  INTERPOLATION: "bicubic"
  PIXEL_MEAN: [0.48145466, 0.4578275, 0.40821073]
  PIXEL_STD: [0.26862954, 0.26130258, 0.27577711]
  TRANSFORMS: ["random_resized_crop", "random_flip", "normalize"]

OPTIM:
  NAME: "sgd"
  LR: 0.002
  MAX_EPOCH: 200
  LR_SCHEDULER: "cosine"
  WARMUP_EPOCH: 1
  WARMUP_TYPE: "constant"
  WARMUP_CONS_LR: 1e-5

TRAIN:
  PRINT_FREQ: 5

MODEL:
  BACKBONE:
    NAME: "RN50"

TRAINER:
  COOP:
    CTX_INIT: "a photo of a"


================================================
FILE: classification/configs/trainers/clip_adapter/rn50_ep100.yaml
================================================
DATALOADER:
  TRAIN_X:
    BATCH_SIZE: 32
  TEST:
    BATCH_SIZE: 100
  NUM_WORKERS: 8

INPUT:
  SIZE: (224, 224)
  INTERPOLATION: "bicubic"
  PIXEL_MEAN: [0.48145466, 0.4578275, 0.40821073]
  PIXEL_STD: [0.26862954, 0.26130258, 0.27577711]
  TRANSFORMS: ["random_resized_crop", "random_flip", "normalize"]

OPTIM:
  NAME: "sgd"
  LR: 0.002
  MAX_EPOCH: 100
  LR_SCHEDULER: "cosine"
  WARMUP_EPOCH: 1
  WARMUP_TYPE: "constant"
  WARMUP_CONS_LR: 1e-5

TRAIN:
  PRINT_FREQ: 5

MODEL:
  BACKBONE:
    NAME: "RN50"


================================================
FILE: classification/configs/trainers/clip_adapter/rn50_ep50.yaml
================================================
DATALOADER:
  TRAIN_X:
    BATCH_SIZE: 32
  TEST:
    BATCH_SIZE: 100
  NUM_WORKERS: 8

INPUT:
  SIZE: (224, 224)
  INTERPOLATION: "bicubic"
  PIXEL_MEAN: [0.48145466, 0.4578275, 0.40821073]
  PIXEL_STD: [0.26862954, 0.26130258, 0.27577711]
  TRANSFORMS: ["random_resized_crop", "random_flip", "normalize"]

OPTIM:
  NAME: "sgd"
  LR: 0.002
  MAX_EPOCH: 50
  LR_SCHEDULER: "cosine"
  WARMUP_EPOCH: 1
  WARMUP_TYPE: "constant"
  WARMUP_CONS_LR: 1e-5

TRAIN:
  PRINT_FREQ: 5

MODEL:
  BACKBONE:
    NAME: "RN50"

================================================
FILE: classification/configs/trainers/clip_adapter/rn50_ep50_ctxv1.yaml
================================================
DATALOADER:
  TRAIN_X:
    BATCH_SIZE: 32
  TEST:
    BATCH_SIZE: 100
  NUM_WORKERS: 8

INPUT:
  SIZE: (224, 224)
  INTERPOLATION: "bicubic"
  PIXEL_MEAN: [0.48145466, 0.4578275, 0.40821073]
  PIXEL_STD: [0.26862954, 0.26130258, 0.27577711]
  TRANSFORMS: ["random_resized_crop", "random_flip", "normalize"]

OPTIM:
  NAME: "sgd"
  LR: 0.002
  MAX_EPOCH: 50
  LR_SCHEDULER: "cosine"
  WARMUP_EPOCH: 1
  WARMUP_TYPE: "constant"
  WARMUP_CONS_LR: 1e-5

TRAIN:
  PRINT_FREQ: 5

MODEL:
  BACKBONE:
    NAME: "RN50"

TRAINER:
  COOP:
    CTX_INIT: "a photo of a"

================================================
FILE: classification/configs/trainers/clip_adapter/rn50_val.yaml
================================================
DATALOADER:
  TRAIN_X:
    BATCH_SIZE: 200
  TEST:
    BATCH_SIZE: 200
  NUM_WORKERS: 8

INPUT:
  SIZE: (224, 224)
  INTERPOLATION: "bicubic"
  PIXEL_MEAN: [0.48145466, 0.4578275, 0.40821073]
  PIXEL_STD: [0.26862954, 0.26130258, 0.27577711]
  TRANSFORMS: ["random_resized_crop", "random_flip", "normalize"]

MODEL:
  BACKBONE:
    NAME: "RN50"

================================================
FILE: classification/configs/trainers/clip_adapter/vit_b16.yaml
================================================
#DATALOADER:
#  TRAIN_X:
#    BATCH_SIZE: 32
#  TEST:
#    BATCH_SIZE: 100
#  NUM_WORKERS: 8
#
#INPUT:
#  SIZE: (224, 224)
#  INTERPOLATION: "bicubic"
#  PIXEL_MEAN: [0.48145466, 0.4578275, 0.40821073]
#  PIXEL_STD: [0.26862954, 0.26130258, 0.27577711]
#  TRANSFORMS: ["random_resized_crop", "random_flip", "normalize"]
#
#OPTIM:
#  NAME: "sgd"
#  LR: 0.002
#  MAX_EPOCH: 200
#  LR_SCHEDULER: "cosine"
#  WARMUP_EPOCH: 1
#  WARMUP_TYPE: "constant"
#  WARMUP_CONS_LR: 1e-5
#
#TRAIN:
#  PRINT_FREQ: 5
#
#MODEL:
#  BACKBONE:
#    NAME: "ViT-B/16"

DATALOADER:
  TRAIN_X:
    BATCH_SIZE: 32
  TEST:
    BATCH_SIZE: 100
  NUM_WORKERS: 8

INPUT:
  SIZE: (224, 224)
  INTERPOLATION: "bicubic"
  PIXEL_MEAN: [0.14694904, 0.14694904, 0.14694904]
  PIXEL_STD: [0.13213828, 0.13213828, 0.13213828]
#  TRANSFORMS: ["random_resized_crop", "random_flip", "normalize"]
  RANDAUGMENT_N: 2
  RANDAUGMENT_M: 5
  TRANSFORMS: ["randaugment"]
#  RANDAUGMENT_N: 2
#  GN_MEAN: 0.0
#  GN_STD: 0.15
#  TRANSFORMS: ["random_flip", 'gaussian_noise']
OPTIM:
  NAME: "adamw"
  LR: 0.002
  MAX_EPOCH: 200
  LR_SCHEDULER: "cosine"
  WARMUP_EPOCH: 1
  WARMUP_TYPE: "constant"
  WARMUP_CONS_LR: 1e-5

TRAIN:
  PRINT_FREQ: 5

MODEL:
  BACKBONE:
    NAME: "ViT-B/16"

================================================
FILE: classification/configs/trainers/clip_adapter/vit_b16_ctxv1.yaml
================================================
DATALOADER:
  TRAIN_X:
    BATCH_SIZE: 32
  TEST:
    BATCH_SIZE: 100
  NUM_WORKERS: 8

INPUT:
  SIZE: (224, 224)
  INTERPOLATION: "bicubic"
  PIXEL_MEAN: [0.48145466, 0.4578275, 0.40821073]
  PIXEL_STD: [0.26862954, 0.26130258, 0.27577711]
  TRANSFORMS: ["random_resized_crop", "random_flip", "normalize"]

OPTIM:
  NAME: "sgd"
  LR: 0.002
  MAX_EPOCH: 200
  LR_SCHEDULER: "cosine"
  WARMUP_EPOCH: 1
  WARMUP_TYPE: "constant"
  WARMUP_CONS_LR: 1e-5

TRAIN:
  PRINT_FREQ: 5

MODEL:
  BACKBONE:
    NAME: "ViT-B/16"

TRAINER:
  COOP:
    CTX_INIT: "a photo of a"


================================================
FILE: classification/configs/trainers/clip_adapter/vit_b16_ep100.yaml
================================================
DATALOADER:
  TRAIN_X:
    BATCH_SIZE: 32
  TEST:
    BATCH_SIZE: 100
  NUM_WORKERS: 8

INPUT:
  SIZE: (224, 224)
  INTERPOLATION: "bicubic"
  PIXEL_MEAN: [0.48145466, 0.4578275, 0.40821073]
  PIXEL_STD: [0.26862954, 0.26130258, 0.27577711]
  TRANSFORMS: ["random_resized_crop", "random_flip", "normalize"]

OPTIM:
  NAME: "sgd"
  LR: 0.002
  MAX_EPOCH: 100
  LR_SCHEDULER: "cosine"
  WARMUP_EPOCH: 1
  WARMUP_TYPE: "constant"
  WARMUP_CONS_LR: 1e-5

TRAIN:
  PRINT_FREQ: 5

MODEL:
  BACKBONE:
    NAME: "ViT-B/16"

================================================
FILE: classification/configs/trainers/clip_adapter/vit_b16_ep100_ctxv1.yaml
================================================
DATALOADER:
  TRAIN_X:
    BATCH_SIZE: 32
  TEST:
    BATCH_SIZE: 100
  NUM_WORKERS: 8

INPUT:
  SIZE: (224, 224)
  INTERPOLATION: "bicubic"
  PIXEL_MEAN: [0.48145466, 0.4578275, 0.40821073]
  PIXEL_STD: [0.26862954, 0.26130258, 0.27577711]
  TRANSFORMS: ["random_resized_crop", "random_flip", "normalize"]

OPTIM:
  NAME: "sgd"
  LR: 0.002
  MAX_EPOCH: 100
  LR_SCHEDULER: "cosine"
  WARMUP_EPOCH: 1
  WARMUP_TYPE: "constant"
  WARMUP_CONS_LR: 1e-5

TRAIN:
  PRINT_FREQ: 5

MODEL:
  BACKBONE:
    NAME: "ViT-B/16"

TRAINER:
  COOP:
    CTX_INIT: "a photo of a"


================================================
FILE: classification/configs/trainers/clip_adapter/vit_b16_ep50.yaml
================================================
DATALOADER:
  TRAIN_X:
    BATCH_SIZE: 32
  TEST:
    BATCH_SIZE: 100
  NUM_WORKERS: 8

INPUT:
  SIZE: (224, 224)
  INTERPOLATION: "bicubic"
  PIXEL_MEAN: [0.48145466, 0.4578275, 0.40821073]
  PIXEL_STD: [0.26862954, 0.26130258, 0.27577711]
  TRANSFORMS: ["random_resized_crop", "random_flip", "normalize"]

OPTIM:
  NAME: "sgd"
  LR: 0.002
  MAX_EPOCH: 50
  LR_SCHEDULER: "cosine"
  WARMUP_EPOCH: 1
  WARMUP_TYPE: "constant"
  WARMUP_CONS_LR: 1e-5

TRAIN:
  PRINT_FREQ: 5

MODEL:
  BACKBONE:
    NAME: "ViT-B/16"

================================================
FILE: classification/configs/trainers/clip_adapter/vit_b16_ep50_ctxv1.yaml
================================================
DATALOADER:
  TRAIN_X:
    BATCH_SIZE: 32
  TEST:
    BATCH_SIZE: 100
  NUM_WORKERS: 8

INPUT:
  SIZE: (224, 224)
  INTERPOLATION: "bicubic"
  PIXEL_MEAN: [0.48145466, 0.4578275, 0.40821073]
  PIXEL_STD: [0.26862954, 0.26130258, 0.27577711]
  TRANSFORMS: ["random_resized_crop", "random_flip", "normalize"]

OPTIM:
  NAME: "sgd"
  LR: 0.002
  MAX_EPOCH: 50
  LR_SCHEDULER: "cosine"
  WARMUP_EPOCH: 1
  WARMUP_TYPE: "constant"
  WARMUP_CONS_LR: 1e-5

TRAIN:
  PRINT_FREQ: 5

MODEL:
  BACKBONE:
    NAME: "ViT-B/16"

TRAINER:
  COOP:
    CTX_INIT: "a photo of a"


================================================
FILE: classification/configs/trainers/clip_adapter/vit_b32.yaml
================================================
DATALOADER:
  TRAIN_X:
    BATCH_SIZE: 32
  TEST:
    BATCH_SIZE: 100
  NUM_WORKERS: 8

INPUT:
  SIZE: (224, 224)
  INTERPOLATION: "bicubic"
  PIXEL_MEAN: [0.48145466, 0.4578275, 0.40821073]
  PIXEL_STD: [0.26862954, 0.26130258, 0.27577711]
  TRANSFORMS: ["random_resized_crop", "random_flip", "normalize"]

OPTIM:
  NAME: "sgd"
  LR: 0.002
  MAX_EPOCH: 200
  LR_SCHEDULER: "cosine"
  WARMUP_EPOCH: 1
  WARMUP_TYPE: "constant"
  WARMUP_CONS_LR: 1e-5

TRAIN:
  PRINT_FREQ: 5

MODEL:
  BACKBONE:
    NAME: "ViT-B/32"

================================================
FILE: classification/configs/trainers/clip_adapter/vit_b32_ep50.yaml
================================================
DATALOADER:
  TRAIN_X:
    BATCH_SIZE: 32
  TEST:
    BATCH_SIZE: 100
  NUM_WORKERS: 8

INPUT:
  SIZE: (224, 224)
  INTERPOLATION: "bicubic"
  PIXEL_MEAN: [0.48145466, 0.4578275, 0.40821073]
  PIXEL_STD: [0.26862954, 0.26130258, 0.27577711]
  TRANSFORMS: ["random_resized_crop", "random_flip", "normalize"]

OPTIM:
  NAME: "sgd"
  LR: 0.002
  MAX_EPOCH: 50
  LR_SCHEDULER: "cosine"
  WARMUP_EPOCH: 1
  WARMUP_TYPE: "constant"
  WARMUP_CONS_LR: 1e-5

TRAIN:
  PRINT_FREQ: 5

MODEL:
  BACKBONE:
    NAME: "ViT-B/32"

================================================
FILE: classification/datasets/MSTAR_EOC1.py
================================================
import os
import pickle
from scipy.io import loadmat
import re
from dassl.data.datasets import DATASET_REGISTRY, Datum, DatasetBase
from dassl.utils import mkdir_if_missing

from .oxford_pets import OxfordPets


@DATASET_REGISTRY.register()
class MSTAR_EOC1(DatasetBase):

    dataset_dir = "MSTAR_EOC1"

    def __init__(self, cfg):
        root = os.path.abspath(os.path.expanduser(cfg.DATASET.ROOT))
        self.dataset_dir = os.path.join(root, self.dataset_dir)
        self.split_path = os.path.join(self.dataset_dir, "split_Li_MSTAR_EOC1.json")
        self.split_fewshot_dir = os.path.join(self.dataset_dir, "split_fewshot")
        mkdir_if_missing(self.split_fewshot_dir)

        if os.path.exists(self.split_path):
            train, val, test = OxfordPets.read_split(self.split_path, self.dataset_dir)
        else:
            trainval_file = os.path.join(self.dataset_dir, "TRAIN")
            test_file = os.path.join(self.dataset_dir, "TEST")
            trainval = self.read_data(trainval_file)
            test = self.read_data(test_file)
            train, val = OxfordPets.split_trainval(trainval)
            # OxfordPets.save_split(train, val, test, self.split_path, self.dataset_dir)

        num_shots = cfg.DATASET.NUM_SHOTS
        if num_shots >= 1:
            seed = cfg.SEED
            preprocessed = os.path.join(self.split_fewshot_dir, f"shot_{num_shots}-seed_{seed}.pkl")
            
            if os.path.exists(preprocessed):
                print(f"Loading preprocessed few-shot data from {preprocessed}")
                with open(preprocessed, "rb") as file:
                    data = pickle.load(file)
                    train, val = data["train"], data["val"]
            else:
                train = self.generate_fewshot_dataset(train, num_shots=num_shots)
                val = self.generate_fewshot_dataset(val, num_shots=min(num_shots*1, 10))
                data = {"train": train, "val": val}
                print(f"Saving preprocessed few-shot data to {preprocessed}")
                with open(preprocessed, "wb") as file:
                    pickle.dump(data, file, protocol=pickle.HIGHEST_PROTOCOL)

        subsample = cfg.DATASET.SUBSAMPLE_CLASSES
        train, val, test = OxfordPets.subsample_classes(train, val, test, subsample=subsample)

        super().__init__(train_x=train, val=val, test=test)

    def read_data(self, image_dir):
        label_int = {'2S1': 0, 'BRDM2': 1, 'T72': 2, 'ZSU234': 3}

        label_name = {'2S1': '2S1, a type of Self-propelled Artillery',
                      'BRDM2': 'BRDM2, a type of Amphibious Armored Scout Car',
                      'T72': 'T72, a type of Tank',
                      'ZSU234': 'ZSU234, a type of Self-propelled Anti-aircraft Gun'}
        #
        # label_name = {'2S1': '2S1, a self-propelled artillery is laying in the middle of a field',
        #               'BRDM2': 'BRDM2, a military scout car is in the middle of a field of mud and dirt',
        #               'T72': 'T72, a heavy tank is sitting in a field',
        #               'ZSU234': 'ZSU234, a Self-propelled Anti-aircraft Gun with a satellite dish on top of it in a field of dirt and grass'}


        items = []

        for root, dirs, files in os.walk(image_dir):
            files = sorted(files)
            for file in files:
                if os.path.splitext(file)[1] == '.jpeg':
                    impath = os.path.join(root, file)
                    idx = re.split('[/\\\]', impath).index('MSTAR_EOC1')
                    label = label_int[re.split('[/\\\]', impath)[idx+2]]
                    classname = label_name[re.split('[/\\\]', impath)[idx+2]]
                    item = Datum(impath=impath, label=label, classname=classname)
                    items.append(item)
        return items


================================================
FILE: classification/datasets/MSTAR_EOC2C.py
================================================
import os
import pickle
from scipy.io import loadmat
import re
from dassl.data.datasets import DATASET_REGISTRY, Datum, DatasetBase
from dassl.utils import mkdir_if_missing

from .oxford_pets import OxfordPets


@DATASET_REGISTRY.register()
class MSTAR_EOC2C(DatasetBase):

    dataset_dir = "MSTAR_EOC2C"

    def __init__(self, cfg):
        root = os.path.abspath(os.path.expanduser(cfg.DATASET.ROOT))
        self.dataset_dir = os.path.join(root, self.dataset_dir)
        self.split_path = os.path.join(self.dataset_dir, "split_Li_MSTAR_EOC2C.json")
        self.split_fewshot_dir = os.path.join(self.dataset_dir, "split_fewshot")
        mkdir_if_missing(self.split_fewshot_dir)

        if os.path.exists(self.split_path):
            train, val, test = OxfordPets.read_split(self.split_path, self.dataset_dir)
        else:
            trainval_file = os.path.join(self.dataset_dir, "TRAIN")
            test_file = os.path.join(self.dataset_dir, "TEST")
            trainval = self.read_data(trainval_file)
            test = self.read_data(test_file)
            train, val = OxfordPets.split_trainval(trainval)
            # OxfordPets.save_split(train, val, test, self.split_path, self.dataset_dir)

        num_shots = cfg.DATASET.NUM_SHOTS
        if num_shots >= 1:
            seed = cfg.SEED
            preprocessed = os.path.join(self.split_fewshot_dir, f"shot_{num_shots}-seed_{seed}.pkl")
            
            if os.path.exists(preprocessed):
                print(f"Loading preprocessed few-shot data from {preprocessed}")
                with open(preprocessed, "rb") as file:
                    data = pickle.load(file)
                    train, val = data["train"], data["val"]
            else:
                train = self.generate_fewshot_dataset(train, num_shots=num_shots)
                val = self.generate_fewshot_dataset(val, num_shots=min(num_shots*1, 10))
                data = {"train": train, "val": val}
                print(f"Saving preprocessed few-shot data to {preprocessed}")
                with open(preprocessed, "wb") as file:
                    pickle.dump(data, file, protocol=pickle.HIGHEST_PROTOCOL)

        subsample = cfg.DATASET.SUBSAMPLE_CLASSES
        train, val, test = OxfordPets.subsample_classes(train, val, test, subsample=subsample)

        super().__init__(train_x=train, val=val, test=test)

    def read_data(self, image_dir):
        label_int = {'BMP2': 0, 'BRDM2': 1, 'BTR70':2, 'T72': 3}

        label_name = {'BMP2': 'BMP2, a type of Infantry Fighting Vehicle',
                      'BTR70': 'BTR70, a type of Armored Personnel Carrier',
                      'T72': 'T72, a type of Tank',
                      'BRDM2': 'BRDM2, a type of Amphibious Armored Scout Car'}

        # label_name = {'BMP2': 'BMP2, a type of Infantry Fighting Vehicle',
        #               'BRDM2': 'BRDM2, a military scout car is in the middle of a field of mud and dirt',
        #               'BTR70': 'BTR70, a type of Armored Personnel Carrier',
        #               'T72': 'T72, a heavy tank is sitting in a field'}


        items = []

        for root, dirs, files in os.walk(image_dir):
            files = sorted(files)
            for file in files:
                if os.path.splitext(file)[1] == '.jpeg':
                    impath = os.path.join(root, file)
                    idx = re.split('[/\\\]', impath).index('MSTAR_EOC2C')
                    label = label_int[re.split('[/\\\]', impath)[idx+2]]
                    classname = label_name[re.split('[/\\\]', impath)[idx+2]]
                    item = Datum(impath=impath, label=label, classname=classname)
                    items.append(item)
        return items


================================================
FILE: classification/datasets/MSTAR_EOC2V.py
================================================
import os
import pickle
from scipy.io import loadmat
import re
from dassl.data.datasets import DATASET_REGISTRY, Datum, DatasetBase
from dassl.utils import mkdir_if_missing

from .oxford_pets import OxfordPets


@DATASET_REGISTRY.register()
class MSTAR_EOC2V(DatasetBase):

    dataset_dir = "MSTAR_EOC2V"

    def __init__(self, cfg):
        root = os.path.abspath(os.path.expanduser(cfg.DATASET.ROOT))
        self.dataset_dir = os.path.join(root, self.dataset_dir)
        self.split_path = os.path.join(self.dataset_dir, "split_Li_MSTAR_EOC2V.json")
        self.split_fewshot_dir = os.path.join(self.dataset_dir, "split_fewshot")
        mkdir_if_missing(self.split_fewshot_dir)

        if os.path.exists(self.split_path):
            train, val, test = OxfordPets.read_split(self.split_path, self.dataset_dir)
        else:
            trainval_file = os.path.join(self.dataset_dir, "TRAIN")
            test_file = os.path.join(self.dataset_dir, "TEST")
            trainval = self.read_data(trainval_file)
            test = self.read_data(test_file)
            train, val = OxfordPets.split_trainval(trainval)
            # OxfordPets.save_split(train, val, test, self.split_path, self.dataset_dir)

        num_shots = cfg.DATASET.NUM_SHOTS
        if num_shots >= 1:
            seed = cfg.SEED
            preprocessed = os.path.join(self.split_fewshot_dir, f"shot_{num_shots}-seed_{seed}.pkl")
            
            if os.path.exists(preprocessed):
                print(f"Loading preprocessed few-shot data from {preprocessed}")
                with open(preprocessed, "rb") as file:
                    data = pickle.load(file)
                    train, val = data["train"], data["val"]
            else:
                train = self.generate_fewshot_dataset(train, num_shots=num_shots)
                val = self.generate_fewshot_dataset(val, num_shots=min(num_shots*1, 10))
                data = {"train": train, "val": val}
                print(f"Saving preprocessed few-shot data to {preprocessed}")
                with open(preprocessed, "wb") as file:
                    pickle.dump(data, file, protocol=pickle.HIGHEST_PROTOCOL)

        subsample = cfg.DATASET.SUBSAMPLE_CLASSES
        train, val, test = OxfordPets.subsample_classes(train, val, test, subsample=subsample)

        super().__init__(train_x=train, val=val, test=test)

    def read_data(self, image_dir):
        label_int = {'BMP2': 0, 'BRDM2': 1, 'BTR70':2, 'T72': 3}

        label_name = {'BMP2': 'BMP2, a type of Infantry Fighting Vehicle',
                      'BTR70': 'BTR70, a type of Armored Personnel Carrier',
                      'T72': 'T72, a type of Tank',
                      'BRDM2': 'BRDM2, a type of Amphibious Armored Scout Car'}
        #
        # label_name = {'BMP2': 'BMP2, a type of Infantry Fighting Vehicle',
        #               'BRDM2': 'BRDM2, a military scout car is in the middle of a field of mud and dirt',
        #               'BTR70': 'BTR70, a type of Armored Personnel Carrier',
        #               'T72': 'T72, a heavy tank is sitting in a field'}


        items = []

        for root, dirs, files in os.walk(image_dir):
            files = sorted(files)
            for file in files:
                if os.path.splitext(file)[1] == '.jpeg':
                    impath = os.path.join(root, file)
                    idx = re.split('[/\\\]', impath).index('MSTAR_EOC2V')
                    label = label_int[re.split('[/\\\]', impath)[idx+2]]
                    classname = label_name[re.split('[/\\\]', impath)[idx+2]]
                    item = Datum(impath=impath, label=label, classname=classname)
                    items.append(item)
        return items


================================================
FILE: classification/datasets/MSTAR_SOC.py
================================================
import os
import pickle
from scipy.io import loadmat
import re
from dassl.data.datasets import DATASET_REGISTRY, Datum, DatasetBase
from dassl.utils import mkdir_if_missing

from .oxford_pets import OxfordPets


@DATASET_REGISTRY.register()
class MSTAR_SOC(DatasetBase):

    dataset_dir = "MSTAR_SOC"

    def __init__(self, cfg):
        root = os.path.abspath(os.path.expanduser(cfg.DATASET.ROOT))
        self.dataset_dir = os.path.join(root, self.dataset_dir)
        self.split_path = os.path.join(self.dataset_dir, "split_Li_MSTAR_SOC.json")
        self.split_fewshot_dir = os.path.join(self.dataset_dir, "split_fewshot")
        mkdir_if_missing(self.split_fewshot_dir)

        if os.path.exists(self.split_path):
            train, val, test = OxfordPets.read_split(self.split_path, self.dataset_dir)
        else:
            trainval_file = os.path.join(self.dataset_dir, "TRAIN")
            test_file = os.path.join(self.dataset_dir, "TEST")
            trainval = self.read_data(trainval_file)
            test = self.read_data(test_file)
            train, val = OxfordPets.split_trainval(trainval)
            # OxfordPets.save_split(train, val, test, self.split_path, self.dataset_dir)

        num_shots = cfg.DATASET.NUM_SHOTS
        if num_shots >= 1:
            seed = cfg.SEED
            preprocessed = os.path.join(self.split_fewshot_dir, f"shot_{num_shots}-seed_{seed}.pkl")
            
            if os.path.exists(preprocessed):
                print(f"Loading preprocessed few-shot data from {preprocessed}")
                with open(preprocessed, "rb") as file:
                    data = pickle.load(file)
                    train, val = data["train"], data["val"]
            else:
                train = self.generate_fewshot_dataset(train, num_shots=num_shots)
                val = self.generate_fewshot_dataset(val, num_shots=min(num_shots*1, 10))
                data = {"train": train, "val": val}
                print(f"Saving preprocessed few-shot data to {preprocessed}")
                with open(preprocessed, "wb") as file:
                    pickle.dump(data, file, protocol=pickle.HIGHEST_PROTOCOL)

        subsample = cfg.DATASET.SUBSAMPLE_CLASSES
        train, val, test = OxfordPets.subsample_classes(train, val, test, subsample=subsample)

        super().__init__(train_x=train, val=val, test=test)

    def read_data(self, image_dir):
        label_int = {'BMP2': 0, 'BTR70': 1, 'T72': 2, 'BTR60': 3, '2S1': 4, 'BRDM2': 5, 'D7': 6, 'T62': 7, 'ZIL131': 8, 'ZSU234': 9}

        label_name = {'BMP2': 'BMP2, a type of Infantry Fighting Vehicle',
                      'BTR70': 'BTR70, a type of Armored Personnel Carrier',
                      'T72': 'T72, a type of Tank',
                      'BTR60': 'BTR60, a type of Armored Personnel Carrier',
                      '2S1': '2S1, a type of Self-propelled Artillery',
                      'BRDM2': 'BRDM2, a type of Amphibious Armored Scout Car',
                      'D7': 'D7, a type of Bulldozer',
                      'T62': 'T62, a type of Tank',
                      'ZIL131': 'ZIL131, a type of Truck',
                      'ZSU234': 'ZSU234, a type of Self-propelled Anti-aircraft Gun'}

        items = []

        for root, dirs, files in os.walk(image_dir):
            files = sorted(files)
            for file in files:
                if os.path.splitext(file)[1] == '.jpeg':
                    impath = os.path.join(root, file)
                    idx = re.split('[/\\\]', impath).index('MSTAR_SOC')
                    label = label_int[re.split('[/\\\]', impath)[idx+2]]
                    classname = label_name[re.split('[/\\\]', impath)[idx+2]]
                    item = Datum(impath=impath, label=label, classname=classname)
                    items.append(item)
        return items


================================================
FILE: classification/datasets/MyDataset.py
================================================
import os
import pickle
from scipy.io import loadmat
import re
from dassl.data.datasets import DATASET_REGISTRY, Datum, DatasetBase
from dassl.utils import mkdir_if_missing

from .oxford_pets import OxfordPets


@DATASET_REGISTRY.register()
class MyDataset(DatasetBase):

    dataset_dir = "MyDataset"

    def __init__(self, cfg):
        root = os.path.abspath(os.path.expanduser(cfg.DATASET.ROOT))
        self.dataset_dir = os.path.join(root, self.dataset_dir)
        self.split_path = os.path.join(self.dataset_dir, "split_Li_MSTAR_SOC.json")
        self.split_fewshot_dir = os.path.join(self.dataset_dir, "split_fewshot")
        mkdir_if_missing(self.split_fewshot_dir)

        if os.path.exists(self.split_path):
            train, val, test = OxfordPets.read_split(self.split_path, self.dataset_dir)
        else:
            trainval_file = os.path.join(self.dataset_dir, "TRAIN")
            test_file = os.path.join(self.dataset_dir, "TEST")
            trainval = self.read_data(trainval_file)
            test = self.read_data(test_file)
            train, val = OxfordPets.split_trainval(trainval)
            # OxfordPets.save_split(train, val, test, self.split_path, self.dataset_dir)

        num_shots = cfg.DATASET.NUM_SHOTS
        if num_shots >= 1:
            seed = cfg.SEED
            preprocessed = os.path.join(self.split_fewshot_dir, f"shot_{num_shots}-seed_{seed}.pkl")
            
            if os.path.exists(preprocessed):
                print(f"Loading preprocessed few-shot data from {preprocessed}")
                with open(preprocessed, "rb") as file:
                    data = pickle.load(file)
                    train, val = data["train"], data["val"]
            else:
                train = self.generate_fewshot_dataset(train, num_shots=num_shots)
                val = self.generate_fewshot_dataset(val, num_shots=min(num_shots*1, 10))
                data = {"train": train, "val": val}
                print(f"Saving preprocessed few-shot data to {preprocessed}")
                with open(preprocessed, "wb") as file:
                    pickle.dump(data, file, protocol=pickle.HIGHEST_PROTOCOL)

        subsample = cfg.DATASET.SUBSAMPLE_CLASSES
        train, val, test = OxfordPets.subsample_classes(train, val, test, subsample=subsample)

        super().__init__(train_x=train, val=val, test=test)

    def read_data(self, image_dir):
        label_int = {'BMP2': 0, 'BTR70': 1, 'T72': 2, 'BTR60': 3, '2S1': 4, 'BRDM2': 5, 'D7': 6, 'T62': 7, 'ZIL131': 8, 'ZSU234': 9,
                     'Bridges': 10, 'Cargo': 11, 'CoastalLands_island': 12, 'Fishing': 13, 'LandPatches': 14, 'OtherShip': 15,
                     'SeaClutterWaves': 16, 'SeaPatches': 17, 'StrongFalseAlarms': 18, 'Tanker': 19,
                     'A220': 20, 'A330': 21, 'ARJ21': 22, 'Boeing737': 23, 'Boeing787': 24
                     }

        label_name = {'BMP2': 'BMP2, a type of Infantry Fighting Vehicle',
                      'BTR70': 'BTR70, a type of Armored Personnel Carrier',
                      'T72': 'T72, a type of Tank',
                      'BTR60': 'BTR60, a type of Armored Personnel Carrier',
                      '2S1': '2S1, a type of Self-propelled Artillery',
                      'BRDM2': 'BRDM2, a type of Amphibious Armored Scout Car',
                      'D7': 'D7, a type of Bulldozer',
                      'T62': 'T62, a type of Tank',
                      'ZIL131': 'ZIL131, a type of Truck',
                      'ZSU234': 'ZSU234, a type of Self-propelled Anti-aircraft Gun',
                      'Bridges': 'Bridges', 'Cargo': 'Cargo', 'CoastalLands_island': 'CoastalLands_island',
                      'Fishing': 'Fishing', 'LandPatches': 'LandPatches', 'OtherShip': 'OtherShip',
                      'SeaClutterWaves': 'SeaClutterWaves', 'SeaPatches': 'SeaPatches',
                      'StrongFalseAlarms': 'StrongFalseAlarms', 'Tanker': 'Tanker','A220': 'A220', 'A330': 'A330', 'ARJ21': 'ARJ21', 'Boeing737': 'Boeing737',
                      'Boeing787': 'Boeing787'
                      }

        items = []

        for root, dirs, files in os.walk(image_dir):
            files = sorted(files)
            for file in files:
                if os.path.splitext(file)[1] == '.png':
                    impath = os.path.join(root, file)
                    idx = re.split('[/\\\]', impath).index('MyDataset')
                    label = label_int[re.split('[/\\\]', impath)[idx+2]]
                    classname = label_name[re.split('[/\\\]', impath)[idx+2]]
                    item = Datum(impath=impath, label=label, classname=classname)
                    items.append(item)
        return items


================================================
FILE: classification/datasets/New_FUSAR.py
================================================
import os
import pickle
from scipy.io import loadmat
import re
from dassl.data.datasets import DATASET_REGISTRY, Datum, DatasetBase
from dassl.utils import mkdir_if_missing

from .oxford_pets import OxfordPets


@DATASET_REGISTRY.register()
class New_FUSAR(DatasetBase):

    dataset_dir = "New_FUSAR"

    def __init__(self, cfg):
        root = os.path.abspath(os.path.expanduser(cfg.DATASET.ROOT))
        self.dataset_dir = os.path.join(root, self.dataset_dir)
        self.split_path = os.path.join(self.dataset_dir, "split_Li_SAR_ACD.json")
        self.split_fewshot_dir = os.path.join(self.dataset_dir, "split_fewshot")
        mkdir_if_missing(self.split_fewshot_dir)

        if os.path.exists(self.split_path):
            train, val, test = OxfordPets.read_split(self.split_path, self.dataset_dir)
        else:
            trainval_file = os.path.join(self.dataset_dir, 'Train')
            test_file = os.path.join(self.dataset_dir, 'Val')
            trainval = self.read_data(trainval_file)
            test = self.read_data(test_file)
            train, val = OxfordPets.split_trainval(trainval)
            # OxfordPets.save_split(train, val, test, self.split_path, self.dataset_dir)

        num_shots = cfg.DATASET.NUM_SHOTS
        if num_shots >= 1:
            seed = cfg.SEED
            preprocessed = os.path.join(self.split_fewshot_dir, f"shot_{num_shots}-seed_{seed}.pkl")
            
            if os.path.exists(preprocessed):
                print(f"Loading preprocessed few-shot data from {preprocessed}")
                with open(preprocessed, "rb") as file:
                    data = pickle.load(file)
                    train, val = data["train"], data["val"]
            else:
                train = self.generate_fewshot_dataset(train, num_shots=num_shots)
                val = self.generate_fewshot_dataset(val, num_shots=min(num_shots*1, 10))
                data = {"train": train, "val": val}
                print(f"Saving preprocessed few-shot data to {preprocessed}")
                with open(preprocessed, "wb") as file:
                    pickle.dump(data, file, protocol=pickle.HIGHEST_PROTOCOL)

        subsample = cfg.DATASET.SUBSAMPLE_CLASSES
        train, val, test = OxfordPets.subsample_classes(train, val, test, subsample=subsample)

        super().__init__(train_x=train, val=val, test=test)

    def read_data(self, image_dir):
        label_int = {'Bridges': 0, 'Cargo': 1, 'CoastalLands_island': 2, 'Fishing': 3, 'LandPatches': 4, 'OtherShip': 5,
                     'SeaClutterWaves': 6, 'SeaPatches': 7, 'StrongFalseAlarms': 8, 'Tanker': 9}

        # label_name = {'BMP2': 'BMP2',
        #               'BTR70': 'BTR70',
        #               'T72': 'T72',
        #               'BTR60': 'BTR60',
        #               '2S1': '2S1',
        #               'BRDM2': 'BRDM2',
        #               'D7': 'D7',
        #               'T62': 'T62',
        #               'ZIL131': 'ZIL131',
        #               'ZSU234': 'ZSU234'}

        label_name = {'Bridges': 'Bridges', 'Cargo': 'Cargo', 'CoastalLands_island': 'CoastalLands_island',
                      'Fishing': 'Fishing', 'LandPatches': 'LandPatches', 'OtherShip': 'OtherShip',
                      'SeaClutterWaves': 'SeaClutterWaves', 'SeaPatches': 'SeaPatches',
                      'StrongFalseAlarms': 'StrongFalseAlarms', 'Tanker': 'Tanker'}

        # label_name = {'BMP2': 'BMP2, a type of Infantry Fighting Vehicle',
        #               'BTR70': 'BTR70, a type of Armored Personnel Carrier',
        #               'T72': 'T72, a heavy tank is sitting in a field',
        #               'BTR60': 'BTR60, a military personnel carrier is seen from above in a field of grass and dirt',
        #               '2S1': '2S1, a self-propelled artillery is laying in the middle of a field',
        #               'BRDM2': 'BRDM2, a military scout car is in the middle of a field of mud and dirt',
        #               'D7': 'D7, a bulldozer is sitting in a field with a bulldozer blade',
        #               'T62': 'T62, a tank is sitting in a field',
        #               'ZIL131': 'ZIL131, a military truck parked in a field',
        #               'ZSU234': 'ZSU234, a Self-propelled Anti-aircraft Gun with a satellite dish on top of it in a field of dirt and grass'}

        # turet, amour,barrels, auxiliary machine guns, hatches, tracks, periscopes, amphibious, the number of wheels/track, and whether they have two side doors
        # label_name = {
        #     'BMP2': 'BMP2, a type of armored amphibious infantry fighting vehicle (a two-man turret, an auxiliary machine gun, a missile launcher, track vehicle, 14.3 tonnes, 6.85m length, 3.08 width, 2.07m height)',
        #     'BRDM2': 'BRDM2, a type of amphibious armored patrol car (a heavy machine gun and a general-purpose machine gun, boat-like bow, 4 wheels, side doors, 7.7 tonnes, 5.75m length, 2.37m width, 2.31 height)',
        #     'BTR60': 'BTR60, a type of eight-wheeled armored personnel carrier (a hevay machine gun and a machine gun, amphibious, two side doors, 10.3 tonnes, 7.56 length, 2.83m width, 2.31m height )',
        #     'BTR70': 'BTR70, a type of eight-wheeled armored personnel carrier (a hevay machine gun and a machine gun, two-piece escape, amphibious, side troop doors, 11.5 tonnes, 7.53 length, 2.80m width, 2.32m height )',
        #     'T62': 'T62, a type of medium main battle Tank (a 115mm smoothbore gun, armored, two machine guns, 6 periscope viewports, track vehicle, 10 wheels, 40 tonnes, 9.34m length, 3.30m width, 2.40 height)',
        #     'T72': 'T72, a type of heavy main battle tank (a 125mm smoothbore gun, armored, two machine guns, small periscope viewports, track vehicle, 41.5 tonnes, 9.53m length, 3.59m width, 2.23 height)',
        #     '2S1': '2S1, a type of self-propelled howitzer (a howitzer, armored, amphibious, track vehicle, 14 wheels, 16 tonnes, 7.26m length, 2.85m width, 2.73 height)',
        #     'D7': 'D7, a type of medium bulldozer (a blade, 1.4 tonnes, 4.1m length, 2.5m width, 2.4 height)',
        #     'ZIL131': 'ZIL131, a type of army truck (4 wheels, 3.5 tons, 7.04m length, 2.49m width, 2.4 height)',
        #     'ZSU234': 'ZSU234, a type of self-propelled anti-aircraft weapon system (low rectangular turret with side bulges, lightly armored, 4 cannon, 6 wheels, 20.5 tons, 6.54m length, 2.95m width, 2.25 height)'}

        items = []

        for root, dirs, files in os.walk(image_dir):
            files = sorted(files)
            for file in files:
                if os.path.splitext(file)[1] == '.jpg' or os.path.splitext(file)[1] == '.png':
                    impath = os.path.join(root, file)
                    idx = re.split('[/\\\]', impath).index('New_FUSAR')
                    label = label_int[re.split('[/\\\]', impath)[idx+2]]
                    classname = label_name[re.split('[/\\\]', impath)[idx+2]]
                    item = Datum(impath=impath, label=label, classname=classname)
                    items.append(item)
        return items


================================================
FILE: classification/datasets/SAR_ACD.py
================================================
import os
import pickle
from scipy.io import loadmat
import re
from dassl.data.datasets import DATASET_REGISTRY, Datum, DatasetBase
from dassl.utils import mkdir_if_missing

from .oxford_pets import OxfordPets


@DATASET_REGISTRY.register()
class SAR_ACD(DatasetBase):
    dataset_dir = "SAR_ACD"

    def __init__(self, cfg):
        root = os.path.abspath(os.path.expanduser(cfg.DATASET.ROOT))
        self.dataset_dir = os.path.join(root, self.dataset_dir)
        self.split_path = os.path.join(self.dataset_dir, "split_Li_SAR_ACD.json")
        self.split_fewshot_dir = os.path.join(self.dataset_dir, "split_fewshot")
        mkdir_if_missing(self.split_fewshot_dir)

        if os.path.exists(self.split_path):
            train, val, test = OxfordPets.read_split(self.split_path, self.dataset_dir)
        else:
            trainval_file = os.path.join(self.dataset_dir, 'images')
            # test_file = os.path.join(self.dataset_dir, 'images')
            trainval = self.read_data(trainval_file)
            # test = self.read_data(test_file)
            train, test_val = OxfordPets.split_trainval(trainval, p_val=0.9)
            # OxfordPets.save_split(train, val, test, self.split_path, self.dataset_dir)

        num_shots = cfg.DATASET.NUM_SHOTS
        if num_shots >= 1:
            seed = cfg.SEED
            preprocessed = os.path.join(self.split_fewshot_dir, f"shot_{num_shots}-seed_{seed}.pkl")

            if os.path.exists(preprocessed):
                print(f"Loading preprocessed few-shot data from {preprocessed}")
                with open(preprocessed, "rb") as file:
                    data = pickle.load(file)
                    train, val = data["train"], data["val"]
            else:
                train = self.generate_fewshot_dataset(train, num_shots=num_shots)
                val = self.generate_fewshot_dataset(test_val, num_shots=min(num_shots * 1, 10))
                data = {"train": train, "val": val}
                print(f"Saving preprocessed few-shot data to {preprocessed}")
                with open(preprocessed, "wb") as file:
                    pickle.dump(data, file, protocol=pickle.HIGHEST_PROTOCOL)

        subsample = cfg.DATASET.SUBSAMPLE_CLASSES
        train, val, test = OxfordPets.subsample_classes(train, val, test_val, subsample=subsample)

        super().__init__(train_x=train, val=val, test=test)

    def read_data(self, image_dir):
        label_int = {'A220': 0, 'A330': 1, 'ARJ21': 2, 'Boeing737': 3, 'Boeing787': 4}

        # label_name = {'BMP2': 'BMP2',
        #               'BTR70': 'BTR70',
        #               'T72': 'T72',
        #               'BTR60': 'BTR60',
        #               '2S1': '2S1',
        #               'BRDM2': 'BRDM2',
        #               'D7': 'D7',
        #               'T62': 'T62',
        #               'ZIL131': 'ZIL131',
        #               'ZSU234': 'ZSU234'}

        label_name = {'A220': 'A220', 'A330': 'A330', 'ARJ21': 'ARJ21', 'Boeing737': 'Boeing737',
                      'Boeing787': 'Boeing787'}

        items = []

        for root, dirs, files in os.walk(image_dir):
            files = sorted(files)
            for file in files:
                if os.path.splitext(file)[1] == '.jpg':
                    impath = os.path.join(root, file)
                    idx = re.split('[/\\\]', impath).index('SAR_ACD')
                    label = label_int[re.split('[/\\\]', impath)[idx + 2]]
                    classname = label_name[re.split('[/\\\]', impath)[idx + 2]]
                    item = Datum(impath=impath, label=label, classname=classname)
                    items.append(item)
        return items


================================================
FILE: classification/datasets/__init__.py
================================================


================================================
FILE: classification/datasets/caltech101.py
================================================
import os
import pickle

from dassl.data.datasets import DATASET_REGISTRY, Datum, DatasetBase
from dassl.utils import mkdir_if_missing

from .oxford_pets import OxfordPets
from .dtd import DescribableTextures as DTD

IGNORED = ["BACKGROUND_Google", "Faces_easy"]
NEW_CNAMES = {
    "airplanes": "airplane",
    "Faces": "face",
    "Leopards": "leopard",
    "Motorbikes": "motorbike",
}


@DATASET_REGISTRY.register()
class Caltech101(DatasetBase):

    dataset_dir = "caltech-101"

    def __init__(self, cfg):
        root = os.path.abspath(os.path.expanduser(cfg.DATASET.ROOT))
        self.dataset_dir = os.path.join(root, self.dataset_dir)
        self.image_dir = os.path.join(self.dataset_dir, "101_ObjectCategories")
        self.split_path = os.path.join(self.dataset_dir, "split_zhou_Caltech101.json")
        self.split_fewshot_dir = os.path.join(self.dataset_dir, "split_fewshot")
        mkdir_if_missing(self.split_fewshot_dir)

        if os.path.exists(self.split_path):
            train, val, test = OxfordPets.read_split(self.split_path, self.image_dir)
        else:
            train, val, test = DTD.read_and_split_data(self.image_dir, ignored=IGNORED, new_cnames=NEW_CNAMES)
            OxfordPets.save_split(train, val, test, self.split_path, self.image_dir)

        num_shots = cfg.DATASET.NUM_SHOTS
        if num_shots >= 1:
            seed = cfg.SEED
            preprocessed = os.path.join(self.split_fewshot_dir, f"shot_{num_shots}-seed_{seed}.pkl")
            
            if os.path.exists(preprocessed):
                print(f"Loading preprocessed few-shot data from {preprocessed}")
                with open(preprocessed, "rb") as file:
                    data = pickle.load(file)
                    train, val = data["train"], data["val"]
            else:
                train = self.generate_fewshot_dataset(train, num_shots=num_shots)
                val = self.generate_fewshot_dataset(val, num_shots=min(num_shots, 4))
                data = {"train": train, "val": val}
                print(f"Saving preprocessed few-shot data to {preprocessed}")
                with open(preprocessed, "wb") as file:
                    pickle.dump(data, file, protocol=pickle.HIGHEST_PROTOCOL)

        subsample = cfg.DATASET.SUBSAMPLE_CLASSES
        train, val, test = OxfordPets.subsample_classes(train, val, test, subsample=subsample)

        super().__init__(train_x=train, val=val, test=test)


================================================
FILE: classification/datasets/dtd.py
================================================
import os
import pickle
import random

from dassl.data.datasets import DATASET_REGISTRY, Datum, DatasetBase
from dassl.utils import listdir_nohidden, mkdir_if_missing

from .oxford_pets import OxfordPets


@DATASET_REGISTRY.register()
class DescribableTextures(DatasetBase):

    dataset_dir = "dtd"

    def __init__(self, cfg):
        root = os.path.abspath(os.path.expanduser(cfg.DATASET.ROOT))
        self.dataset_dir = os.path.join(root, self.dataset_dir)
        self.image_dir = os.path.join(self.dataset_dir, "images")
        self.split_path = os.path.join(self.dataset_dir, "split_zhou_DescribableTextures.json")
        self.split_fewshot_dir = os.path.join(self.dataset_dir, "split_fewshot")
        mkdir_if_missing(self.split_fewshot_dir)

        if os.path.exists(self.split_path):
            train, val, test = OxfordPets.read_split(self.split_path, self.image_dir)
        else:
            train, val, test = self.read_and_split_data(self.image_dir)
            OxfordPets.save_split(train, val, test, self.split_path, self.image_dir)

        num_shots = cfg.DATASET.NUM_SHOTS
        if num_shots >= 1:
            seed = cfg.SEED
            preprocessed = os.path.join(self.split_fewshot_dir, f"shot_{num_shots}-seed_{seed}.pkl")
            
            if os.path.exists(preprocessed):
                print(f"Loading preprocessed few-shot data from {preprocessed}")
                with open(preprocessed, "rb") as file:
                    data = pickle.load(file)
                    train, val = data["train"], data["val"]
            else:
                train = self.generate_fewshot_dataset(train, num_shots=num_shots)
                val = self.generate_fewshot_dataset(val, num_shots=min(num_shots, 4))
                data = {"train": train, "val": val}
                print(f"Saving preprocessed few-shot data to {preprocessed}")
                with open(preprocessed, "wb") as file:
                    pickle.dump(data, file, protocol=pickle.HIGHEST_PROTOCOL)

        subsample = cfg.DATASET.SUBSAMPLE_CLASSES
        train, val, test = OxfordPets.subsample_classes(train, val, test, subsample=subsample)

        super().__init__(train_x=train, val=val, test=test)

    @staticmethod
    def read_and_split_data(image_dir, p_trn=0.5, p_val=0.2, ignored=[], new_cnames=None):
        # The data are supposed to be organized into the following structure
        # =============
        # images/
        #     dog/
        #     cat/
        #     horse/
        # =============
        categories = listdir_nohidden(image_dir)
        categories = [c for c in categories if c not in ignored]
        categories.sort()

        p_tst = 1 - p_trn - p_val
        print(f"Splitting into {p_trn:.0%} train, {p_val:.0%} val, and {p_tst:.0%} test")

        def _collate(ims, y, c):
            items = []
            for im in ims:
                item = Datum(impath=im, label=y, classname=c)  # is already 0-based
                items.append(item)
            return items

        train, val, test = [], [], []
        for label, category in enumerate(categories):
            category_dir = os.path.join(image_dir, category)
            images = listdir_nohidden(category_dir)
            images = [os.path.join(category_dir, im) for im in images]
            random.shuffle(images)
            n_total = len(images)
            n_train = round(n_total * p_trn)
            n_val = round(n_total * p_val)
            n_test = n_total - n_train - n_val
            assert n_train > 0 and n_val > 0 and n_test > 0

            if new_cnames is not None and category in new_cnames:
                category = new_cnames[category]

            train.extend(_collate(images[:n_train], label, category))
            val.extend(_collate(images[n_train : n_train + n_val], label, category))
            test.extend(_collate(images[n_train + n_val :], label, category))

        return train, val, test


================================================
FILE: classification/datasets/eurosat.py
================================================
import os
import pickle

from dassl.data.datasets import DATASET_REGISTRY, Datum, DatasetBase
from dassl.utils import mkdir_if_missing

from .oxford_pets import OxfordPets
from .dtd import DescribableTextures as DTD

NEW_CNAMES = {
    "AnnualCrop": "Annual Crop Land",
    "Forest": "Forest",
    "HerbaceousVegetation": "Herbaceous Vegetation Land",
    "Highway": "Highway or Road",
    "Industrial": "Industrial Buildings",
    "Pasture": "Pasture Land",
    "PermanentCrop": "Permanent Crop Land",
    "Residential": "Residential Buildings",
    "River": "River",
    "SeaLake": "Sea or Lake",
}


@DATASET_REGISTRY.register()
class EuroSAT(DatasetBase):

    dataset_dir = "eurosat"

    def __init__(self, cfg):
        root = os.path.abspath(os.path.expanduser(cfg.DATASET.ROOT))
        self.dataset_dir = os.path.join(root, self.dataset_dir)
        self.image_dir = os.path.join(self.dataset_dir, "2750")
        self.split_path = os.path.join(self.dataset_dir, "split_zhou_EuroSAT.json")
        self.split_fewshot_dir = os.path.join(self.dataset_dir, "split_fewshot")
        mkdir_if_missing(self.split_fewshot_dir)

        if os.path.exists(self.split_path):
            train, val, test = OxfordPets.read_split(self.split_path, self.image_dir)
        else:
            train, val, test = DTD.read_and_split_data(self.image_dir, new_cnames=NEW_CNAMES)
            OxfordPets.save_split(train, val, test, self.split_path, self.image_dir)

        num_shots = cfg.DATASET.NUM_SHOTS
        if num_shots >= 1:
            seed = cfg.SEED
            preprocessed = os.path.join(self.split_fewshot_dir, f"shot_{num_shots}-seed_{seed}.pkl")
            
            if os.path.exists(preprocessed):
                print(f"Loading preprocessed few-shot data from {preprocessed}")
                with open(preprocessed, "rb") as file:
                    data = pickle.load(file)
                    train, val = data["train"], data["val"]
            else:
                train = self.generate_fewshot_dataset(train, num_shots=num_shots)
                val = self.generate_fewshot_dataset(val, num_shots=min(num_shots, 4))
                data = {"train": train, "val": val}
                print(f"Saving preprocessed few-shot data to {preprocessed}")
                with open(preprocessed, "wb") as file:
                    pickle.dump(data, file, protocol=pickle.HIGHEST_PROTOCOL)

        subsample = cfg.DATASET.SUBSAMPLE_CLASSES
        train, val, test = OxfordPets.subsample_classes(train, val, test, subsample=subsample)

        super().__init__(train_x=train, val=val, test=test)

    def update_classname(self, dataset_old):
        dataset_new = []
        for item_old in dataset_old:
            cname_old = item_old.classname
            cname_new = NEW_CLASSNAMES[cname_old]
            item_new = Datum(impath=item_old.impath, label=item_old.label, classname=cname_new)
            dataset_new.append(item_new)
        return dataset_new


================================================
FILE: classification/datasets/fgvc_aircraft.py
================================================
import os
import pickle

from dassl.data.datasets import DATASET_REGISTRY, Datum, DatasetBase
from dassl.utils import mkdir_if_missing

from .oxford_pets import OxfordPets


@DATASET_REGISTRY.register()
class FGVCAircraft(DatasetBase):

    dataset_dir = "fgvc_aircraft"

    def __init__(self, cfg):
        root = os.path.abspath(os.path.expanduser(cfg.DATASET.ROOT))
        self.dataset_dir = os.path.join(root, self.dataset_dir)
        self.image_dir = os.path.join(self.dataset_dir, "images")
        self.split_fewshot_dir = os.path.join(self.dataset_dir, "split_fewshot")
        mkdir_if_missing(self.split_fewshot_dir)

        classnames = []
        with open(os.path.join(self.dataset_dir, "variants.txt"), "r") as f:
            lines = f.readlines()
            for line in lines:
                classnames.append(line.strip())
        cname2lab = {c: i for i, c in enumerate(classnames)}

        train = self.read_data(cname2lab, "images_variant_train.txt")
        val = self.read_data(cname2lab, "images_variant_val.txt")
        test = self.read_data(cname2lab, "images_variant_test.txt")

        num_shots = cfg.DATASET.NUM_SHOTS
        if num_shots >= 1:
            seed = cfg.SEED
            preprocessed = os.path.join(self.split_fewshot_dir, f"shot_{num_shots}-seed_{seed}.pkl")
            
            if os.path.exists(preprocessed):
                print(f"Loading preprocessed few-shot data from {preprocessed}")
                with open(preprocessed, "rb") as file:
                    data = pickle.load(file)
                    train, val = data["train"], data["val"]
            else:
                train = self.generate_fewshot_dataset(train, num_shots=num_shots)
                val = self.generate_fewshot_dataset(val, num_shots=min(num_shots, 4))
                data = {"train": train, "val": val}
                print(f"Saving preprocessed few-shot data to {preprocessed}")
                with open(preprocessed, "wb") as file:
                    pickle.dump(data, file, protocol=pickle.HIGHEST_PROTOCOL)

        subsample = cfg.DATASET.SUBSAMPLE_CLASSES
        train, val, test = OxfordPets.subsample_classes(train, val, test, subsample=subsample)

        super().__init__(train_x=train, val=val, test=test)

    def read_data(self, cname2lab, split_file):
        filepath = os.path.join(self.dataset_dir, split_file)
        items = []

        with open(filepath, "r") as f:
            lines = f.readlines()
            for line in lines:
                line = line.strip().split(" ")
                imname = line[0] + ".jpg"
                classname = " ".join(line[1:])
                impath = os.path.join(self.image_dir, imname)
                label = cname2lab[classname]
                item = Datum(impath=impath, label=label, classname=classname)
                items.append(item)

        return items


================================================
FILE: classification/datasets/food101.py
================================================
import os
import pickle

from dassl.data.datasets import DATASET_REGISTRY, Datum, DatasetBase
from dassl.utils import mkdir_if_missing

from .oxford_pets import OxfordPets
from .dtd import DescribableTextures as DTD


@DATASET_REGISTRY.register()
class Food101(DatasetBase):

    dataset_dir = "food-101"

    def __init__(self, cfg):
        root = os.path.abspath(os.path.expanduser(cfg.DATASET.ROOT))
        self.dataset_dir = os.path.join(root, self.dataset_dir)
        self.image_dir = os.path.join(self.dataset_dir, "images")
        self.split_path = os.path.join(self.dataset_dir, "split_zhou_Food101.json")
        self.split_fewshot_dir = os.path.join(self.dataset_dir, "split_fewshot")
        mkdir_if_missing(self.split_fewshot_dir)

        if os.path.exists(self.split_path):
            train, val, test = OxfordPets.read_split(self.split_path, self.image_dir)
        else:
            train, val, test = DTD.read_and_split_data(self.image_dir)
            OxfordPets.save_split(train, val, test, self.split_path, self.image_dir)

        num_shots = cfg.DATASET.NUM_SHOTS
        if num_shots >= 1:
            seed = cfg.SEED
            preprocessed = os.path.join(self.split_fewshot_dir, f"shot_{num_shots}-seed_{seed}.pkl")
            
            if os.path.exists(preprocessed):
                print(f"Loading preprocessed few-shot data from {preprocessed}")
                with open(preprocessed, "rb") as file:
                    data = pickle.load(file)
                    train, val = data["train"], data["val"]
            else:
                train = self.generate_fewshot_dataset(train, num_shots=num_shots)
                val = self.generate_fewshot_dataset(val, num_shots=min(num_shots, 4))
                data = {"train": train, "val": val}
                print(f"Saving preprocessed few-shot data to {preprocessed}")
                with open(preprocessed, "wb") as file:
                    pickle.dump(data, file, protocol=pickle.HIGHEST_PROTOCOL)

        subsample = cfg.DATASET.SUBSAMPLE_CLASSES
        train, val, test = OxfordPets.subsample_classes(train, val, test, subsample=subsample)

        super().__init__(train_x=train, val=val, test=test)


================================================
FILE: classification/datasets/imagenet.py
================================================
import os
import pickle
from collections import OrderedDict

from dassl.data.datasets import DATASET_REGISTRY, Datum, DatasetBase
from dassl.utils import listdir_nohidden, mkdir_if_missing

from .oxford_pets import OxfordPets


@DATASET_REGISTRY.register()
class ImageNet(DatasetBase):

    dataset_dir = "imagenet"

    def __init__(self, cfg):
        root = os.path.abspath(os.path.expanduser(cfg.DATASET.ROOT))
        self.dataset_dir = os.path.join(root, self.dataset_dir)
        self.image_dir = os.path.join(self.dataset_dir, "images")
        self.preprocessed = os.path.join(self.dataset_dir, "preprocessed.pkl")
        self.split_fewshot_dir = os.path.join(self.dataset_dir, "split_fewshot")
        mkdir_if_missing(self.split_fewshot_dir)

        if os.path.exists(self.preprocessed):
            with open(self.preprocessed, "rb") as f:
                preprocessed = pickle.load(f)
                train = preprocessed["train"]
                test = preprocessed["test"]
        else:
            text_file = os.path.join(self.dataset_dir, "classnames.txt")
            classnames = self.read_classnames(text_file)
            train = self.read_data(classnames, "train")
            # Follow standard practice to perform evaluation on the val set
            # Also used as the val set (so evaluate the last-step model)
            test = self.read_data(classnames, "val")

            preprocessed = {"train": train, "test": test}
            with open(self.preprocessed, "wb") as f:
                pickle.dump(preprocessed, f, protocol=pickle.HIGHEST_PROTOCOL)

        num_shots = cfg.DATASET.NUM_SHOTS
        if num_shots >= 1:
            seed = cfg.SEED
            preprocessed = os.path.join(self.split_fewshot_dir, f"shot_{num_shots}-seed_{seed}.pkl")
            
            if os.path.exists(preprocessed):
                print(f"Loading preprocessed few-shot data from {preprocessed}")
                with open(preprocessed, "rb") as file:
                    data = pickle.load(file)
                    train = data["train"]
            else:
                train = self.generate_fewshot_dataset(train, num_shots=num_shots)
                data = {"train": train}
                print(f"Saving preprocessed few-shot data to {preprocessed}")
                with open(preprocessed, "wb") as file:
                    pickle.dump(data, file, protocol=pickle.HIGHEST_PROTOCOL)

        subsample = cfg.DATASET.SUBSAMPLE_CLASSES
        train, test = OxfordPets.subsample_classes(train, test, subsample=subsample)

        super().__init__(train_x=train, val=test, test=test)

    @staticmethod
    def read_classnames(text_file):
        """Return a dictionary containing
        key-value pairs of <folder name>: <class name>.
        """
        classnames = OrderedDict()
        with open(text_file, "r") as f:
            lines = f.readlines()
            for line in lines:
                line = line.strip().split(" ")
                folder = line[0]
                classname = " ".join(line[1:])
                classnames[folder] = classname
        return classnames

    def read_data(self, classnames, split_dir):
        split_dir = os.path.join(self.image_dir, split_dir)
        folders = sorted(f.name for f in os.scandir(split_dir) if f.is_dir())
        items = []

        for label, folder in enumerate(folders):
            imnames = listdir_nohidden(os.path.join(split_dir, folder))
            classname = classnames[folder]
            for imname in imnames:
                impath = os.path.join(split_dir, folder, imname)
                item = Datum(impath=impath, label=label, classname=classname)
                items.append(item)

        return items


================================================
FILE: classification/datasets/imagenet_a.py
================================================
import os

from dassl.data.datasets import DATASET_REGISTRY, Datum, DatasetBase
from dassl.utils import listdir_nohidden

from .imagenet import ImageNet

TO_BE_IGNORED = ["README.txt"]


@DATASET_REGISTRY.register()
class ImageNetA(DatasetBase):
    """ImageNet-A(dversarial).

    This dataset is used for testing only.
    """

    dataset_dir = "imagenet-adversarial"

    def __init__(self, cfg):
        root = os.path.abspath(os.path.expanduser(cfg.DATASET.ROOT))
        self.dataset_dir = os.path.join(root, self.dataset_dir)
        self.image_dir = os.path.join(self.dataset_dir, "imagenet-a")

        text_file = os.path.join(self.dataset_dir, "classnames.txt")
        classnames = ImageNet.read_classnames(text_file)

        data = self.read_data(classnames)

        super().__init__(train_x=data, test=data)

    def read_data(self, classnames):
        image_dir = self.image_dir
        folders = listdir_nohidden(image_dir, sort=True)
        folders = [f for f in folders if f not in TO_BE_IGNORED]
        items = []

        for label, folder in enumerate(folders):
            imnames = listdir_nohidden(os.path.join(image_dir, folder))
            classname = classnames[folder]
            for imname in imnames:
                impath = os.path.join(image_dir, folder, imname)
                item = Datum(impath=impath, label=label, classname=classname)
                items.append(item)

        return items


================================================
FILE: classification/datasets/imagenet_r.py
================================================
import os

from dassl.data.datasets import DATASET_REGISTRY, Datum, DatasetBase
from dassl.utils import listdir_nohidden

from .imagenet import ImageNet

TO_BE_IGNORED = ["README.txt"]


@DATASET_REGISTRY.register()
class ImageNetR(DatasetBase):
    """ImageNet-R(endition).

    This dataset is used for testing only.
    """

    dataset_dir = "imagenet-rendition"

    def __init__(self, cfg):
        root = os.path.abspath(os.path.expanduser(cfg.DATASET.ROOT))
        self.dataset_dir = os.path.join(root, self.dataset_dir)
        self.image_dir = os.path.join(self.dataset_dir, "imagenet-r")

        text_file = os.path.join(self.dataset_dir, "classnames.txt")
        classnames = ImageNet.read_classnames(text_file)

        data = self.read_data(classnames)

        super().__init__(train_x=data, test=data)

    def read_data(self, classnames):
        image_dir = self.image_dir
        folders = listdir_nohidden(image_dir, sort=True)
        folders = [f for f in folders if f not in TO_BE_IGNORED]
        items = []

        for label, folder in enumerate(folders):
            imnames = listdir_nohidden(os.path.join(image_dir, folder))
            classname = classnames[folder]
            for imname in imnames:
                impath = os.path.join(image_dir, folder, imname)
                item = Datum(impath=impath, label=label, classname=classname)
                items.append(item)

        return items


================================================
FILE: classification/datasets/imagenet_sketch.py
================================================
import os

from dassl.data.datasets import DATASET_REGISTRY, Datum, DatasetBase
from dassl.utils import listdir_nohidden

from .imagenet import ImageNet


@DATASET_REGISTRY.register()
class ImageNetSketch(DatasetBase):
    """ImageNet-Sketch.

    This dataset is used for testing only.
    """

    dataset_dir = "imagenet-sketch"

    def __init__(self, cfg):
        root = os.path.abspath(os.path.expanduser(cfg.DATASET.ROOT))
        self.dataset_dir = os.path.join(root, self.dataset_dir)
        self.image_dir = os.path.join(self.dataset_dir, "images")

        text_file = os.path.join(self.dataset_dir, "classnames.txt")
        classnames = ImageNet.read_classnames(text_file)

        data = self.read_data(classnames)

        super().__init__(train_x=data, test=data)

    def read_data(self, classnames):
        image_dir = self.image_dir
        folders = listdir_nohidden(image_dir, sort=True)
        items = []

        for label, folder in enumerate(folders):
            imnames = listdir_nohidden(os.path.join(image_dir, folder))
            classname = classnames[folder]
            for imname in imnames:
                impath = os.path.join(image_dir, folder, imname)
                item = Datum(impath=impath, label=label, classname=classname)
                items.append(item)

        return items


================================================
FILE: classification/datasets/imagenetv2.py
================================================
import os

from dassl.data.datasets import DATASET_REGISTRY, Datum, DatasetBase
from dassl.utils import listdir_nohidden

from .imagenet import ImageNet


@DATASET_REGISTRY.register()
class ImageNetV2(DatasetBase):
    """ImageNetV2.

    This dataset is used for testing only.
    """

    dataset_dir = "imagenetv2"

    def __init__(self, cfg):
        root = os.path.abspath(os.path.expanduser(cfg.DATASET.ROOT))
        self.dataset_dir = os.path.join(root, self.dataset_dir)
        image_dir = "imagenetv2-matched-frequency-format-val"
        self.image_dir = os.path.join(self.dataset_dir, image_dir)

        text_file = os.path.join(self.dataset_dir, "classnames.txt")
        classnames = ImageNet.read_classnames(text_file)

        data = self.read_data(classnames)

        super().__init__(train_x=data, test=data)

    def read_data(self, classnames):
        image_dir = self.image_dir
        folders = list(classnames.keys())
        items = []

        for label in range(1000):
            class_dir = os.path.join(image_dir, str(label))
            imnames = listdir_nohidden(class_dir)
            folder = folders[label]
            classname = classnames[folder]
            for imname in imnames:
                impath = os.path.join(class_dir, imname)
                item = Datum(impath=impath, label=label, classname=classname)
                items.append(item)

        return items


================================================
FILE: classification/datasets/oxford_flowers.py
================================================
import os
import pickle
import random
from scipy.io import loadmat
from collections import defaultdict

from dassl.data.datasets import DATASET_REGISTRY, Datum, DatasetBase
from dassl.utils import read_json, mkdir_if_missing

from .oxford_pets import OxfordPets


@DATASET_REGISTRY.register()
class OxfordFlowers(DatasetBase):

    dataset_dir = "oxford_flowers"

    def __init__(self, cfg):
        root = os.path.abspath(os.path.expanduser(cfg.DATASET.ROOT))
        self.dataset_dir = os.path.join(root, self.dataset_dir)
        self.image_dir = os.path.join(self.dataset_dir, "jpg")
        self.label_file = os.path.join(self.dataset_dir, "imagelabels.mat")
        self.lab2cname_file = os.path.join(self.dataset_dir, "cat_to_name.json")
        self.split_path = os.path.join(self.dataset_dir, "split_zhou_OxfordFlowers.json")
        self.split_fewshot_dir = os.path.join(self.dataset_dir, "split_fewshot")
        mkdir_if_missing(self.split_fewshot_dir)

        if os.path.exists(self.split_path):
            train, val, test = OxfordPets.read_split(self.split_path, self.image_dir)
        else:
            train, val, test = self.read_data()
            OxfordPets.save_split(train, val, test, self.split_path, self.image_dir)

        num_shots = cfg.DATASET.NUM_SHOTS
        if num_shots >= 1:
            seed = cfg.SEED
            preprocessed = os.path.join(self.split_fewshot_dir, f"shot_{num_shots}-seed_{seed}.pkl")
            
            if os.path.exists(preprocessed):
                print(f"Loading preprocessed few-shot data from {preprocessed}")
                with open(preprocessed, "rb") as file:
                    data = pickle.load(file)
                    train, val = data["train"], data["val"]
            else:
                train = self.generate_fewshot_dataset(train, num_shots=num_shots)
                val = self.generate_fewshot_dataset(val, num_shots=min(num_shots, 4))
                data = {"train": train, "val": val}
                print(f"Saving preprocessed few-shot data to {preprocessed}")
                with open(preprocessed, "wb") as file:
                    pickle.dump(data, file, protocol=pickle.HIGHEST_PROTOCOL)

        subsample = cfg.DATASET.SUBSAMPLE_CLASSES
        train, val, test = OxfordPets.subsample_classes(train, val, test, subsample=subsample)

        super().__init__(train_x=train, val=val, test=test)

    def read_data(self):
        tracker = defaultdict(list)
        label_file = loadmat(self.label_file)["labels"][0]
        for i, label in enumerate(label_file):
            imname = f"image_{str(i + 1).zfill(5)}.jpg"
            impath = os.path.join(self.image_dir, imname)
            label = int(label)
            tracker[label].append(impath)

        print("Splitting data into 50% train, 20% val, and 30% test")

        def _collate(ims, y, c):
            items = []
            for im in ims:
                item = Datum(impath=im, label=y - 1, classname=c)  # convert to 0-based label
                items.append(item)
            return items

        lab2cname = read_json(self.lab2cname_file)
        train, val, test = [], [], []
        for label, impaths in tracker.items():
            random.shuffle(impaths)
            n_total = len(impaths)
            n_train = round(n_total * 0.5)
            n_val = round(n_total * 0.2)
            n_test = n_total - n_train - n_val
            assert n_train > 0 and n_val > 0 and n_test > 0
            cname = lab2cname[str(label)]
            train.extend(_collate(impaths[:n_train], label, cname))
            val.extend(_collate(impaths[n_train : n_train + n_val], label, cname))
            test.extend(_collate(impaths[n_train + n_val :], label, cname))

        return train, val, test


================================================
FILE: classification/datasets/oxford_pets.py
================================================
import os
import pickle
import math
import random
from collections import defaultdict

from dassl.data.datasets import DATASET_REGISTRY, Datum, DatasetBase
from dassl.utils import read_json, write_json, mkdir_if_missing


@DATASET_REGISTRY.register()
class OxfordPets(DatasetBase):

    dataset_dir = "oxford_pets"

    def __init__(self, cfg):
        root = os.path.abspath(os.path.expanduser(cfg.DATASET.ROOT))
        self.dataset_dir = os.path.join(root, self.dataset_dir)
        self.image_dir = os.path.join(self.dataset_dir, "images")
        self.anno_dir = os.path.join(self.dataset_dir, "annotations")
        self.split_path = os.path.join(self.dataset_dir, "split_zhou_OxfordPets.json")
        self.split_fewshot_dir = os.path.join(self.dataset_dir, "split_fewshot")
        mkdir_if_missing(self.split_fewshot_dir)

        if os.path.exists(self.split_path):
            train, val, test = self.read_split(self.split_path, self.image_dir)
        else:
            trainval = self.read_data(split_file="trainval.txt")
            test = self.read_data(split_file="test.txt")
            train, val = self.split_trainval(trainval)
            self.save_split(train, val, test, self.split_path, self.image_dir)

        num_shots = cfg.DATASET.NUM_SHOTS
        if num_shots >= 1:
            seed = cfg.SEED
            preprocessed = os.path.join(self.split_fewshot_dir, f"shot_{num_shots}-seed_{seed}.pkl")
            
            if os.path.exists(preprocessed):
                print(f"Loading preprocessed few-shot data from {preprocessed}")
                with open(preprocessed, "rb") as file:
                    data = pickle.load(file)
                    train, val = data["train"], data["val"]
            else:
                train = self.generate_fewshot_dataset(train, num_shots=num_shots)
                val = self.generate_fewshot_dataset(val, num_shots=min(num_shots, 4))
                data = {"train": train, "val": val}
                print(f"Saving preprocessed few-shot data to {preprocessed}")
                with open(preprocessed, "wb") as file:
                    pickle.dump(data, file, protocol=pickle.HIGHEST_PROTOCOL)

        subsample = cfg.DATASET.SUBSAMPLE_CLASSES
        train, val, test = self.subsample_classes(train, val, test, subsample=subsample)

        super().__init__(train_x=train, val=val, test=test)

    def read_data(self, split_file):
        filepath = os.path.join(self.anno_dir, split_file)
        items = []

        with open(filepath, "r") as f:
            lines = f.readlines()
            for line in lines:
                line = line.strip()
                imname, label, species, _ = line.split(" ")
                breed = imname.split("_")[:-1]
                breed = "_".join(breed)
                breed = breed.lower()
                imname += ".jpg"
                impath = os.path.join(self.image_dir, imname)
                label = int(label) - 1  # convert to 0-based index
                item = Datum(impath=impath, label=label, classname=breed)
                items.append(item)

        return items

    @staticmethod
    def split_trainval(trainval, p_val=0.2):
        p_trn = 1 - p_val
        print(f"Splitting trainval into {p_trn:.0%} train and {p_val:.0%} val")
        tracker = defaultdict(list)
        for idx, item in enumerate(trainval):
            label = item.label
            tracker[label].append(idx)

        train, val = [], []
        for label, idxs in tracker.items():
            n_val = round(len(idxs) * p_val)
            assert n_val > 0
            random.shuffle(idxs)
            for n, idx in enumerate(idxs):
                item = trainval[idx]
                if n < n_val:
                    val.append(item)
                else:
                    train.append(item)

        return train, val

    @staticmethod
    def save_split(train, val, test, filepath, path_prefix):
        def _extract(items):
            out = []
            for item in items:
                impath = item.impath
                label = item.label
                classname = item.classname
                impath = impath.replace(path_prefix, "")
                if impath.startswith("/"):
                    impath = impath[1:]
                out.append((impath, label, classname))
            return out

        train = _extract(train)
        val = _extract(val)
        test = _extract(test)

        split = {"train": train, "val": val, "test": test}

        write_json(split, filepath)
        print(f"Saved split to {filepath}")

    @staticmethod
    def read_split(filepath, path_prefix):
        def _convert(items):
            out = []
            for impath, label, classname in items:
                impath = os.path.join(path_prefix, impath)
                item = Datum(impath=impath, label=int(label), classname=classname)
                out.append(item)
            return out

        print(f"Reading split from {filepath}")
        split = read_json(filepath)
        train = _convert(split["train"])
        val = _convert(split["val"])
        test = _convert(split["test"])

        return train, val, test
    
    @staticmethod
    def subsample_classes(*args, subsample="all"):
        """Divide classes into two groups. The first group
        represents base classes while the second group represents
        new classes.

        Args:
            args: a list of datasets, e.g. train, val and test.
            subsample (str): what classes to subsample.
        """
        assert subsample in ["all", "base", "new"]

        if subsample == "all":
            return args
        
        dataset = args[0]
        labels = set()
        for item in dataset:
            labels.add(item.label)
        labels = list(labels)
        labels.sort()
        n = len(labels)
        # Divide classes into two halves
        m = math.ceil(n / 2)

        print(f"SUBSAMPLE {subsample.upper()} CLASSES!")
        if subsample == "base":
            selected = labels[:m]  # take the first half
        else:
            selected = labels[m:]  # take the second half
        relabeler = {y: y_new for y_new, y in enumerate(selected)}
        
        output = []
        for dataset in args:
            dataset_new = []
            for item in dataset:
                if item.label not in selected:
                    continue
                item_new = Datum(
                    impath=item.impath,
                    label=relabeler[item.label],
                    classname=item.classname
                )
                dataset_new.append(item_new)
            output.append(dataset_new)
        
        return output


================================================
FILE: classification/datasets/stanford_cars.py
================================================
import os
import pickle
from scipy.io import loadmat

from dassl.data.datasets import DATASET_REGISTRY, Datum, DatasetBase
from dassl.utils import mkdir_if_missing

from .oxford_pets import OxfordPets


@DATASET_REGISTRY.register()
class StanfordCars(DatasetBase):

    dataset_dir = "stanford_cars"

    def __init__(self, cfg):
        root = os.path.abspath(os.path.expanduser(cfg.DATASET.ROOT))
        self.dataset_dir = os.path.join(root, self.dataset_dir)
        self.split_path = os.path.join(self.dataset_dir, "split_zhou_StanfordCars.json")
        self.split_fewshot_dir = os.path.join(self.dataset_dir, "split_fewshot")
        mkdir_if_missing(self.split_fewshot_dir)

        if os.path.exists(self.split_path):
            train, val, test = OxfordPets.read_split(self.split_path, self.dataset_dir)
        else:
            trainval_file = os.path.join(self.dataset_dir, "devkit", "cars_train_annos.mat")
            test_file = os.path.join(self.dataset_dir, "cars_test_annos_withlabels.mat")
            meta_file = os.path.join(self.dataset_dir, "devkit", "cars_meta.mat")
            trainval = self.read_data("cars_train", trainval_file, meta_file)
            test = self.read_data("cars_test", test_file, meta_file)
            train, val = OxfordPets.split_trainval(trainval)
            OxfordPets.save_split(train, val, test, self.split_path, self.dataset_dir)

        num_shots = cfg.DATASET.NUM_SHOTS
        if num_shots >= 1:
            seed = cfg.SEED
            preprocessed = os.path.join(self.split_fewshot_dir, f"shot_{num_shots}-seed_{seed}.pkl")
            
            if os.path.exists(preprocessed):
                print(f"Loading preprocessed few-shot data from {preprocessed}")
                with open(preprocessed, "rb") as file:
                    data = pickle.load(file)
                    train, val = data["train"], data["val"]
            else:
                train = self.generate_fewshot_dataset(train, num_shots=num_shots)
                val = self.generate_fewshot_dataset(val, num_shots=min(num_shots, 4))
                data = {"train": train, "val": val}
                print(f"Saving preprocessed few-shot data to {preprocessed}")
                with open(preprocessed, "wb") as file:
                    pickle.dump(data, file, protocol=pickle.HIGHEST_PROTOCOL)

        subsample = cfg.DATASET.SUBSAMPLE_CLASSES
        train, val, test = OxfordPets.subsample_classes(train, val, test, subsample=subsample)

        super().__init__(train_x=train, val=val, test=test)

    def read_data(self, image_dir, anno_file, meta_file):
        anno_file = loadmat(anno_file)["annotations"][0]
        meta_file = loadmat(meta_file)["class_names"][0]
        items = []

        for i in range(len(anno_file)):
            imname = anno_file[i]["fname"][0]
            impath = os.path.join(self.dataset_dir, image_dir, imname)
            label = anno_file[i]["class"][0, 0]
            label = int(label) - 1  # convert to 0-based index
            classname = met
Download .txt
gitextract_xcoybjj8/

├── LICENSE
├── README.md
├── classification/
│   ├── .gitignore
│   ├── .idea/
│   │   ├── .gitignore
│   │   ├── CoOp.iml
│   │   ├── deployment.xml
│   │   ├── inspectionProfiles/
│   │   │   ├── Project_Default.xml
│   │   │   └── profiles_settings.xml
│   │   ├── misc.xml
│   │   ├── modules.xml
│   │   └── vcs.xml
│   ├── COCOOP.md
│   ├── COOP.md
│   ├── DATASETS.md
│   ├── MIM_linear.sh
│   ├── clip/
│   │   ├── __init__.py
│   │   ├── clip.py
│   │   ├── model.py
│   │   └── simple_tokenizer.py
│   ├── configs/
│   │   ├── datasets/
│   │   │   ├── MSTAR_EOC1.yaml
│   │   │   ├── MSTAR_EOC2C.yaml
│   │   │   ├── MSTAR_EOC2V.yaml
│   │   │   ├── MSTAR_SOC.yaml
│   │   │   ├── MyDataset.yaml
│   │   │   ├── New_FUSAR.yaml
│   │   │   ├── SAR_ACD.yaml
│   │   │   ├── caltech101.yaml
│   │   │   ├── dtd.yaml
│   │   │   ├── eurosat.yaml
│   │   │   ├── fgvc_aircraft.yaml
│   │   │   ├── food101.yaml
│   │   │   ├── imagenet.yaml
│   │   │   ├── imagenet_a.yaml
│   │   │   ├── imagenet_r.yaml
│   │   │   ├── imagenet_sketch.yaml
│   │   │   ├── imagenetv2.yaml
│   │   │   ├── oxford_flowers.yaml
│   │   │   ├── oxford_pets.yaml
│   │   │   ├── stanford_cars.yaml
│   │   │   ├── sun397.yaml
│   │   │   └── ucf101.yaml
│   │   └── trainers/
│   │       ├── CNN/
│   │       │   └── vit_b16.yaml
│   │       ├── CoCoOp/
│   │       │   ├── vit_b16_c16_ep10_batch1.yaml
│   │       │   ├── vit_b16_c4_ep10_batch1.yaml
│   │       │   ├── vit_b16_c4_ep10_batch1_ctxv1.yaml
│   │       │   └── vit_b16_c8_ep10_batch1.yaml
│   │       ├── CoOp/
│   │       │   ├── rn101.yaml
│   │       │   ├── rn101_ep50.yaml
│   │       │   ├── rn50.yaml
│   │       │   ├── rn50_ctxv1.yaml
│   │       │   ├── rn50_ep100.yaml
│   │       │   ├── rn50_ep50.yaml
│   │       │   ├── rn50_ep50_ctxv1.yaml
│   │       │   ├── rn50_val.yaml
│   │       │   ├── vit_b16.yaml
│   │       │   ├── vit_b16_ctxv1.yaml
│   │       │   ├── vit_b16_ep100.yaml
│   │       │   ├── vit_b16_ep100_ctxv1.yaml
│   │       │   ├── vit_b16_ep50.yaml
│   │       │   ├── vit_b16_ep50_ctxv1.yaml
│   │       │   ├── vit_b32.yaml
│   │       │   └── vit_b32_ep50.yaml
│   │       ├── MIM_linear/
│   │       │   └── vit_b16.yaml
│   │       ├── OneHot/
│   │       │   └── vit_b16.yaml
│   │       ├── RingMo/
│   │       │   └── vit_b16.yaml
│   │       ├── clip/
│   │       │   └── vit_b16.yaml
│   │       └── clip_adapter/
│   │           ├── rn101.yaml
│   │           ├── rn101_ep50.yaml
│   │           ├── rn50.yaml
│   │           ├── rn50_ctxv1.yaml
│   │           ├── rn50_ep100.yaml
│   │           ├── rn50_ep50.yaml
│   │           ├── rn50_ep50_ctxv1.yaml
│   │           ├── rn50_val.yaml
│   │           ├── vit_b16.yaml
│   │           ├── vit_b16_ctxv1.yaml
│   │           ├── vit_b16_ep100.yaml
│   │           ├── vit_b16_ep100_ctxv1.yaml
│   │           ├── vit_b16_ep50.yaml
│   │           ├── vit_b16_ep50_ctxv1.yaml
│   │           ├── vit_b32.yaml
│   │           └── vit_b32_ep50.yaml
│   ├── datasets/
│   │   ├── MSTAR_EOC1.py
│   │   ├── MSTAR_EOC2C.py
│   │   ├── MSTAR_EOC2V.py
│   │   ├── MSTAR_SOC.py
│   │   ├── MyDataset.py
│   │   ├── New_FUSAR.py
│   │   ├── SAR_ACD.py
│   │   ├── __init__.py
│   │   ├── caltech101.py
│   │   ├── dtd.py
│   │   ├── eurosat.py
│   │   ├── fgvc_aircraft.py
│   │   ├── food101.py
│   │   ├── imagenet.py
│   │   ├── imagenet_a.py
│   │   ├── imagenet_r.py
│   │   ├── imagenet_sketch.py
│   │   ├── imagenetv2.py
│   │   ├── oxford_flowers.py
│   │   ├── oxford_pets.py
│   │   ├── stanford_cars.py
│   │   ├── sun397.py
│   │   └── ucf101.py
│   ├── demo.py
│   ├── draw_curves.py
│   ├── interpret_prompt.py
│   ├── lpclip/
│   │   ├── README.md
│   │   ├── feat_extractor.py
│   │   ├── feat_extractor.sh
│   │   ├── linear_probe.py
│   │   └── linear_probe.sh
│   ├── model/
│   │   ├── Model.py
│   │   ├── cmt.py
│   │   ├── conformer.py
│   │   ├── cotnet.py
│   │   ├── cotnet_hybrid.py
│   │   ├── features.py
│   │   ├── helpers.py
│   │   ├── hivit.py
│   │   ├── inception_transformer.py
│   │   ├── layers/
│   │   │   ├── __init__.py
│   │   │   ├── activations.py
│   │   │   ├── activations_jit.py
│   │   │   ├── activations_me.py
│   │   │   ├── adaptive_avgmax_pool.py
│   │   │   ├── aggregation_zeropad.py
│   │   │   ├── anti_aliasing.py
│   │   │   ├── blur_pool.py
│   │   │   ├── cbam.py
│   │   │   ├── classifier.py
│   │   │   ├── cond_conv2d.py
│   │   │   ├── config.py
│   │   │   ├── conv2d_same.py
│   │   │   ├── conv_bn_act.py
│   │   │   ├── create_act.py
│   │   │   ├── create_attn.py
│   │   │   ├── create_conv2d.py
│   │   │   ├── create_norm_act.py
│   │   │   ├── drop.py
│   │   │   ├── eca.py
│   │   │   ├── evo_norm.py
│   │   │   ├── helpers.py
│   │   │   ├── inplace_abn.py
│   │   │   ├── kerv2d.py
│   │   │   ├── median_pool.py
│   │   │   ├── mixed_conv2d.py
│   │   │   ├── mlp.py
│   │   │   ├── norm_act.py
│   │   │   ├── padding.py
│   │   │   ├── patch_embed.py
│   │   │   ├── pool2d_same.py
│   │   │   ├── se.py
│   │   │   ├── selective_kernel.py
│   │   │   ├── separable_conv.py
│   │   │   ├── shiftlution.py
│   │   │   ├── space_to_depth.py
│   │   │   ├── split_attn.py
│   │   │   ├── split_batchnorm.py
│   │   │   ├── std_conv.py
│   │   │   ├── tbconv.py
│   │   │   ├── test_time_pool.py
│   │   │   ├── utils.py
│   │   │   └── weight_init.py
│   │   ├── nextvit.py
│   │   ├── registry.py
│   │   ├── res2net.py
│   │   ├── resnet.py
│   │   ├── utils.py
│   │   └── vgg.py
│   ├── parse_test_res.py
│   ├── scripts/
│   │   ├── CNN/
│   │   │   ├── README.md
│   │   │   ├── eval.sh
│   │   │   ├── main.sh
│   │   │   └── zeroshot.sh
│   │   ├── MIM_finetune/
│   │   │   ├── README.md
│   │   │   ├── eval.sh
│   │   │   ├── main.sh
│   │   │   └── zeroshot.sh
│   │   └── MIM_linear/
│   │       ├── README.md
│   │       ├── eval.sh
│   │       ├── main.sh
│   │       └── zeroshot.sh
│   ├── train.py
│   └── trainers/
│       ├── MIM_linear.py
│       ├── __init__.py
│       └── imagenet_templates.py
├── detection/
│   ├── CITATION.cff
│   ├── LICENSE
│   ├── MANIFEST.in
│   ├── MMDET_README.md
│   ├── README_zh-CN.md
│   ├── configs/
│   │   ├── _base_/
│   │   │   ├── datasets/
│   │   │   │   ├── cityscapes_detection.py
│   │   │   │   ├── cityscapes_instance.py
│   │   │   │   ├── coco_detection.py
│   │   │   │   ├── coco_instance.py
│   │   │   │   ├── coco_instance_semantic.py
│   │   │   │   ├── coco_panoptic.py
│   │   │   │   ├── deepfashion.py
│   │   │   │   ├── lvis_v0.5_instance.py
│   │   │   │   ├── lvis_v1_instance.py
│   │   │   │   ├── openimages_detection.py
│   │   │   │   ├── voc0712.py
│   │   │   │   └── wider_face.py
│   │   │   ├── default_runtime.py
│   │   │   ├── models/
│   │   │   │   ├── cascade_mask_rcnn_r50_fpn.py
│   │   │   │   ├── cascade_rcnn_r50_fpn.py
│   │   │   │   ├── fast_rcnn_r50_fpn.py
│   │   │   │   ├── faster_rcnn_r50_caffe_c4.py
│   │   │   │   ├── faster_rcnn_r50_caffe_dc5.py
│   │   │   │   ├── faster_rcnn_r50_fpn.py
│   │   │   │   ├── mask_rcnn_r50_caffe_c4.py
│   │   │   │   ├── mask_rcnn_r50_fpn.py
│   │   │   │   ├── retinanet_r50_fpn.py
│   │   │   │   ├── rpn_r50_caffe_c4.py
│   │   │   │   ├── rpn_r50_fpn.py
│   │   │   │   └── ssd300.py
│   │   │   └── schedules/
│   │   │       ├── schedule_1x.py
│   │   │       ├── schedule_20e.py
│   │   │       └── schedule_2x.py
│   │   ├── _hivit_/
│   │   │   ├── hivit_base_OGSOD.py
│   │   │   ├── hivit_base_SARAircraft.py
│   │   │   ├── hivit_base_SARDet.py
│   │   │   └── hivit_base_SSDD.py
│   │   ├── albu_example/
│   │   │   ├── README.md
│   │   │   └── mask_rcnn_r50_fpn_albu_1x_coco.py
│   │   ├── atss/
│   │   │   ├── README.md
│   │   │   ├── atss_r101_fpn_1x_coco.py
│   │   │   ├── atss_r50_fpn_1x_coco.py
│   │   │   └── metafile.yml
│   │   ├── autoassign/
│   │   │   ├── README.md
│   │   │   ├── autoassign_r50_fpn_8x2_1x_coco.py
│   │   │   └── metafile.yml
│   │   ├── carafe/
│   │   │   ├── README.md
│   │   │   ├── faster_rcnn_r50_fpn_carafe_1x_coco.py
│   │   │   ├── mask_rcnn_r50_fpn_carafe_1x_coco.py
│   │   │   └── metafile.yml
│   │   ├── cascade_rcnn/
│   │   │   ├── README.md
│   │   │   ├── cascade_mask_rcnn_r101_caffe_fpn_1x_coco.py
│   │   │   ├── cascade_mask_rcnn_r101_caffe_fpn_mstrain_3x_coco.py
│   │   │   ├── cascade_mask_rcnn_r101_fpn_1x_coco.py
│   │   │   ├── cascade_mask_rcnn_r101_fpn_20e_coco.py
│   │   │   ├── cascade_mask_rcnn_r101_fpn_mstrain_3x_coco.py
│   │   │   ├── cascade_mask_rcnn_r50_caffe_fpn_1x_coco.py
│   │   │   ├── cascade_mask_rcnn_r50_caffe_fpn_mstrain_3x_coco.py
│   │   │   ├── cascade_mask_rcnn_r50_fpn_1x_coco.py
│   │   │   ├── cascade_mask_rcnn_r50_fpn_20e_coco.py
│   │   │   ├── cascade_mask_rcnn_r50_fpn_mstrain_3x_coco.py
│   │   │   ├── cascade_mask_rcnn_x101_32x4d_fpn_1x_coco.py
│   │   │   ├── cascade_mask_rcnn_x101_32x4d_fpn_20e_coco.py
│   │   │   ├── cascade_mask_rcnn_x101_32x4d_fpn_mstrain_3x_coco.py
│   │   │   ├── cascade_mask_rcnn_x101_32x8d_fpn_mstrain_3x_coco.py
│   │   │   ├── cascade_mask_rcnn_x101_64x4d_fpn_1x_coco.py
│   │   │   ├── cascade_mask_rcnn_x101_64x4d_fpn_20e_coco.py
│   │   │   ├── cascade_mask_rcnn_x101_64x4d_fpn_mstrain_3x_coco.py
│   │   │   ├── cascade_rcnn_r101_caffe_fpn_1x_coco.py
│   │   │   ├── cascade_rcnn_r101_fpn_1x_coco.py
│   │   │   ├── cascade_rcnn_r101_fpn_20e_coco.py
│   │   │   ├── cascade_rcnn_r50_caffe_fpn_1x_coco.py
│   │   │   ├── cascade_rcnn_r50_fpn_1x_coco.py
│   │   │   ├── cascade_rcnn_r50_fpn_20e_coco.py
│   │   │   ├── cascade_rcnn_x101_32x4d_fpn_1x_coco.py
│   │   │   ├── cascade_rcnn_x101_32x4d_fpn_20e_coco.py
│   │   │   ├── cascade_rcnn_x101_64x4d_fpn_1x_coco.py
│   │   │   ├── cascade_rcnn_x101_64x4d_fpn_20e_coco.py
│   │   │   └── metafile.yml
│   │   ├── cascade_rpn/
│   │   │   ├── README.md
│   │   │   ├── crpn_fast_rcnn_r50_caffe_fpn_1x_coco.py
│   │   │   ├── crpn_faster_rcnn_r50_caffe_fpn_1x_coco.py
│   │   │   ├── crpn_r50_caffe_fpn_1x_coco.py
│   │   │   └── metafile.yml
│   │   ├── centernet/
│   │   │   ├── README.md
│   │   │   ├── centernet_resnet18_140e_coco.py
│   │   │   ├── centernet_resnet18_dcnv2_140e_coco.py
│   │   │   └── metafile.yml
│   │   ├── centripetalnet/
│   │   │   ├── README.md
│   │   │   ├── centripetalnet_hourglass104_mstest_16x6_210e_coco.py
│   │   │   └── metafile.yml
│   │   ├── cityscapes/
│   │   │   ├── README.md
│   │   │   ├── faster_rcnn_r50_fpn_1x_cityscapes.py
│   │   │   └── mask_rcnn_r50_fpn_1x_cityscapes.py
│   │   ├── common/
│   │   │   ├── lsj_100e_coco_instance.py
│   │   │   ├── mstrain-poly_3x_coco_instance.py
│   │   │   ├── mstrain_3x_coco.py
│   │   │   ├── mstrain_3x_coco_instance.py
│   │   │   ├── ssj_270k_coco_instance.py
│   │   │   └── ssj_scp_270k_coco_instance.py
│   │   ├── cornernet/
│   │   │   ├── README.md
│   │   │   ├── cornernet_hourglass104_mstest_10x5_210e_coco.py
│   │   │   ├── cornernet_hourglass104_mstest_32x3_210e_coco.py
│   │   │   ├── cornernet_hourglass104_mstest_8x6_210e_coco.py
│   │   │   └── metafile.yml
│   │   ├── dcn/
│   │   │   ├── README.md
│   │   │   ├── cascade_mask_rcnn_r101_fpn_dconv_c3-c5_1x_coco.py
│   │   │   ├── cascade_mask_rcnn_r50_fpn_dconv_c3-c5_1x_coco.py
│   │   │   ├── cascade_mask_rcnn_x101_32x4d_fpn_dconv_c3-c5_1x_coco.py
│   │   │   ├── cascade_rcnn_r101_fpn_dconv_c3-c5_1x_coco.py
│   │   │   ├── cascade_rcnn_r50_fpn_dconv_c3-c5_1x_coco.py
│   │   │   ├── faster_rcnn_r101_fpn_dconv_c3-c5_1x_coco.py
│   │   │   ├── faster_rcnn_r50_fpn_dconv_c3-c5_1x_coco.py
│   │   │   ├── faster_rcnn_r50_fpn_dpool_1x_coco.py
│   │   │   ├── faster_rcnn_x101_32x4d_fpn_dconv_c3-c5_1x_coco.py
│   │   │   ├── mask_rcnn_r101_fpn_dconv_c3-c5_1x_coco.py
│   │   │   ├── mask_rcnn_r50_fpn_dconv_c3-c5_1x_coco.py
│   │   │   ├── mask_rcnn_r50_fpn_fp16_dconv_c3-c5_1x_coco.py
│   │   │   └── metafile.yml
│   │   ├── dcnv2/
│   │   │   ├── README.md
│   │   │   ├── faster_rcnn_r50_fpn_mdconv_c3-c5_1x_coco.py
│   │   │   ├── faster_rcnn_r50_fpn_mdconv_c3-c5_group4_1x_coco.py
│   │   │   ├── faster_rcnn_r50_fpn_mdpool_1x_coco.py
│   │   │   ├── mask_rcnn_r50_fpn_fp16_mdconv_c3-c5_1x_coco.py
│   │   │   ├── mask_rcnn_r50_fpn_mdconv_c3-c5_1x_coco.py
│   │   │   └── metafile.yml
│   │   ├── deepfashion/
│   │   │   ├── README.md
│   │   │   └── mask_rcnn_r50_fpn_15e_deepfashion.py
│   │   ├── deformable_detr/
│   │   │   ├── README.md
│   │   │   ├── deformable_detr_r50_16x2_50e_coco.py
│   │   │   ├── deformable_detr_refine_r50_16x2_50e_coco.py
│   │   │   ├── deformable_detr_twostage_refine_r50_16x2_50e_coco.py
│   │   │   └── metafile.yml
│   │   ├── detectors/
│   │   │   ├── README.md
│   │   │   ├── cascade_rcnn_r50_rfp_1x_coco.py
│   │   │   ├── cascade_rcnn_r50_sac_1x_coco.py
│   │   │   ├── detectors_cascade_rcnn_r50_1x_coco.py
│   │   │   ├── detectors_htc_r101_20e_coco.py
│   │   │   ├── detectors_htc_r50_1x_coco.py
│   │   │   ├── htc_r50_rfp_1x_coco.py
│   │   │   ├── htc_r50_sac_1x_coco.py
│   │   │   └── metafile.yml
│   │   ├── detr/
│   │   │   ├── README.md
│   │   │   ├── detr_r50_8x2_150e_coco.py
│   │   │   └── metafile.yml
│   │   ├── double_heads/
│   │   │   ├── README.md
│   │   │   ├── dh_faster_rcnn_r50_fpn_1x_coco.py
│   │   │   └── metafile.yml
│   │   ├── dyhead/
│   │   │   ├── README.md
│   │   │   ├── atss_r50_caffe_fpn_dyhead_1x_coco.py
│   │   │   ├── atss_r50_fpn_dyhead_1x_coco.py
│   │   │   └── metafile.yml
│   │   ├── dynamic_rcnn/
│   │   │   ├── README.md
│   │   │   ├── dynamic_rcnn_r50_fpn_1x_coco.py
│   │   │   └── metafile.yml
│   │   ├── efficientnet/
│   │   │   ├── README.md
│   │   │   ├── metafile.yml
│   │   │   └── retinanet_effb3_fpn_crop896_8x4_1x_coco.py
│   │   ├── empirical_attention/
│   │   │   ├── README.md
│   │   │   ├── faster_rcnn_r50_fpn_attention_0010_1x_coco.py
│   │   │   ├── faster_rcnn_r50_fpn_attention_0010_dcn_1x_coco.py
│   │   │   ├── faster_rcnn_r50_fpn_attention_1111_1x_coco.py
│   │   │   ├── faster_rcnn_r50_fpn_attention_1111_dcn_1x_coco.py
│   │   │   └── metafile.yml
│   │   ├── fast_rcnn/
│   │   │   ├── README.md
│   │   │   ├── fast_rcnn_r101_caffe_fpn_1x_coco.py
│   │   │   ├── fast_rcnn_r101_fpn_1x_coco.py
│   │   │   ├── fast_rcnn_r101_fpn_2x_coco.py
│   │   │   ├── fast_rcnn_r50_caffe_fpn_1x_coco.py
│   │   │   ├── fast_rcnn_r50_fpn_1x_coco.py
│   │   │   └── fast_rcnn_r50_fpn_2x_coco.py
│   │   ├── faster_rcnn/
│   │   │   ├── README.md
│   │   │   ├── faster_rcnn_r101_caffe_fpn_1x_coco.py
│   │   │   ├── faster_rcnn_r101_caffe_fpn_mstrain_3x_coco.py
│   │   │   ├── faster_rcnn_r101_fpn_1x_coco.py
│   │   │   ├── faster_rcnn_r101_fpn_2x_coco.py
│   │   │   ├── faster_rcnn_r101_fpn_mstrain_3x_coco.py
│   │   │   ├── faster_rcnn_r50_caffe_c4_1x_coco.py
│   │   │   ├── faster_rcnn_r50_caffe_c4_mstrain_1x_coco.py
│   │   │   ├── faster_rcnn_r50_caffe_dc5_1x_coco.py
│   │   │   ├── faster_rcnn_r50_caffe_dc5_mstrain_1x_coco.py
│   │   │   ├── faster_rcnn_r50_caffe_dc5_mstrain_3x_coco.py
│   │   │   ├── faster_rcnn_r50_caffe_fpn_1x_coco.py
│   │   │   ├── faster_rcnn_r50_caffe_fpn_90k_coco.py
│   │   │   ├── faster_rcnn_r50_caffe_fpn_mstrain_1x_coco-person-bicycle-car.py
│   │   │   ├── faster_rcnn_r50_caffe_fpn_mstrain_1x_coco-person.py
│   │   │   ├── faster_rcnn_r50_caffe_fpn_mstrain_1x_coco.py
│   │   │   ├── faster_rcnn_r50_caffe_fpn_mstrain_2x_coco.py
│   │   │   ├── faster_rcnn_r50_caffe_fpn_mstrain_3x_coco.py
│   │   │   ├── faster_rcnn_r50_caffe_fpn_mstrain_90k_coco.py
│   │   │   ├── faster_rcnn_r50_fpn_1x_coco.py
│   │   │   ├── faster_rcnn_r50_fpn_2x_coco.py
│   │   │   ├── faster_rcnn_r50_fpn_bounded_iou_1x_coco.py
│   │   │   ├── faster_rcnn_r50_fpn_ciou_1x_coco.py
│   │   │   ├── faster_rcnn_r50_fpn_fp16_1x_coco.py
│   │   │   ├── faster_rcnn_r50_fpn_giou_1x_coco.py
│   │   │   ├── faster_rcnn_r50_fpn_iou_1x_coco.py
│   │   │   ├── faster_rcnn_r50_fpn_mstrain_3x_coco.py
│   │   │   ├── faster_rcnn_r50_fpn_ohem_1x_coco.py
│   │   │   ├── faster_rcnn_r50_fpn_soft_nms_1x_coco.py
│   │   │   ├── faster_rcnn_r50_fpn_tnr-pretrain_1x_coco.py
│   │   │   ├── faster_rcnn_x101_32x4d_fpn_1x_coco.py
│   │   │   ├── faster_rcnn_x101_32x4d_fpn_2x_coco.py
│   │   │   ├── faster_rcnn_x101_32x4d_fpn_mstrain_3x_coco.py
│   │   │   ├── faster_rcnn_x101_32x8d_fpn_mstrain_3x_coco.py
│   │   │   ├── faster_rcnn_x101_64x4d_fpn_1x_coco.py
│   │   │   ├── faster_rcnn_x101_64x4d_fpn_2x_coco.py
│   │   │   ├── faster_rcnn_x101_64x4d_fpn_mstrain_3x_coco.py
│   │   │   └── metafile.yml
│   │   ├── fcos/
│   │   │   ├── README.md
│   │   │   ├── fcos_center-normbbox-centeronreg-giou_r50_caffe_fpn_gn-head_1x_coco.py
│   │   │   ├── fcos_center-normbbox-centeronreg-giou_r50_caffe_fpn_gn-head_dcn_1x_coco.py
│   │   │   ├── fcos_center_r50_caffe_fpn_gn-head_1x_coco.py
│   │   │   ├── fcos_r101_caffe_fpn_gn-head_1x_coco.py
│   │   │   ├── fcos_r101_caffe_fpn_gn-head_mstrain_640-800_2x_coco.py
│   │   │   ├── fcos_r50_caffe_fpn_gn-head_1x_coco.py
│   │   │   ├── fcos_r50_caffe_fpn_gn-head_4x4_1x_coco.py
│   │   │   ├── fcos_r50_caffe_fpn_gn-head_mstrain_640-800_2x_coco.py
│   │   │   ├── fcos_x101_64x4d_fpn_gn-head_mstrain_640-800_2x_coco.py
│   │   │   └── metafile.yml
│   │   ├── foveabox/
│   │   │   ├── README.md
│   │   │   ├── fovea_align_r101_fpn_gn-head_4x4_2x_coco.py
│   │   │   ├── fovea_align_r101_fpn_gn-head_mstrain_640-800_4x4_2x_coco.py
│   │   │   ├── fovea_align_r50_fpn_gn-head_4x4_2x_coco.py
│   │   │   ├── fovea_align_r50_fpn_gn-head_mstrain_640-800_4x4_2x_coco.py
│   │   │   ├── fovea_r101_fpn_4x4_1x_coco.py
│   │   │   ├── fovea_r101_fpn_4x4_2x_coco.py
│   │   │   ├── fovea_r50_fpn_4x4_1x_coco.py
│   │   │   ├── fovea_r50_fpn_4x4_2x_coco.py
│   │   │   └── metafile.yml
│   │   ├── fpg/
│   │   │   ├── README.md
│   │   │   ├── faster_rcnn_r50_fpg-chn128_crop640_50e_coco.py
│   │   │   ├── faster_rcnn_r50_fpg_crop640_50e_coco.py
│   │   │   ├── faster_rcnn_r50_fpn_crop640_50e_coco.py
│   │   │   ├── mask_rcnn_r50_fpg-chn128_crop640_50e_coco.py
│   │   │   ├── mask_rcnn_r50_fpg_crop640_50e_coco.py
│   │   │   ├── mask_rcnn_r50_fpn_crop640_50e_coco.py
│   │   │   ├── metafile.yml
│   │   │   ├── retinanet_r50_fpg-chn128_crop640_50e_coco.py
│   │   │   └── retinanet_r50_fpg_crop640_50e_coco.py
│   │   ├── free_anchor/
│   │   │   ├── README.md
│   │   │   ├── metafile.yml
│   │   │   ├── retinanet_free_anchor_r101_fpn_1x_coco.py
│   │   │   ├── retinanet_free_anchor_r50_fpn_1x_coco.py
│   │   │   └── retinanet_free_anchor_x101_32x4d_fpn_1x_coco.py
│   │   ├── fsaf/
│   │   │   ├── README.md
│   │   │   ├── fsaf_r101_fpn_1x_coco.py
│   │   │   ├── fsaf_r50_fpn_1x_coco.py
│   │   │   ├── fsaf_x101_64x4d_fpn_1x_coco.py
│   │   │   └── metafile.yml
│   │   ├── gcnet/
│   │   │   ├── README.md
│   │   │   ├── cascade_mask_rcnn_x101_32x4d_fpn_syncbn-backbone_1x_coco.py
│   │   │   ├── cascade_mask_rcnn_x101_32x4d_fpn_syncbn-backbone_dconv_c3-c5_1x_coco.py
│   │   │   ├── cascade_mask_rcnn_x101_32x4d_fpn_syncbn-backbone_dconv_c3-c5_r16_gcb_c3-c5_1x_coco.py
│   │   │   ├── cascade_mask_rcnn_x101_32x4d_fpn_syncbn-backbone_dconv_c3-c5_r4_gcb_c3-c5_1x_coco.py
│   │   │   ├── cascade_mask_rcnn_x101_32x4d_fpn_syncbn-backbone_r16_gcb_c3-c5_1x_coco.py
│   │   │   ├── cascade_mask_rcnn_x101_32x4d_fpn_syncbn-backbone_r4_gcb_c3-c5_1x_coco.py
│   │   │   ├── mask_rcnn_r101_fpn_r16_gcb_c3-c5_1x_coco.py
│   │   │   ├── mask_rcnn_r101_fpn_r4_gcb_c3-c5_1x_coco.py
│   │   │   ├── mask_rcnn_r101_fpn_syncbn-backbone_1x_coco.py
│   │   │   ├── mask_rcnn_r101_fpn_syncbn-backbone_r16_gcb_c3-c5_1x_coco.py
│   │   │   ├── mask_rcnn_r101_fpn_syncbn-backbone_r4_gcb_c3-c5_1x_coco.py
│   │   │   ├── mask_rcnn_r50_fpn_r16_gcb_c3-c5_1x_coco.py
│   │   │   ├── mask_rcnn_r50_fpn_r4_gcb_c3-c5_1x_coco.py
│   │   │   ├── mask_rcnn_r50_fpn_syncbn-backbone_1x_coco.py
│   │   │   ├── mask_rcnn_r50_fpn_syncbn-backbone_r16_gcb_c3-c5_1x_coco.py
│   │   │   ├── mask_rcnn_r50_fpn_syncbn-backbone_r4_gcb_c3-c5_1x_coco.py
│   │   │   ├── mask_rcnn_x101_32x4d_fpn_syncbn-backbone_1x_coco.py
│   │   │   ├── mask_rcnn_x101_32x4d_fpn_syncbn-backbone_r16_gcb_c3-c5_1x_coco.py
│   │   │   ├── mask_rcnn_x101_32x4d_fpn_syncbn-backbone_r4_gcb_c3-c5_1x_coco.py
│   │   │   └── metafile.yml
│   │   ├── gfl/
│   │   │   ├── README.md
│   │   │   ├── gfl_r101_fpn_dconv_c3-c5_mstrain_2x_coco.py
│   │   │   ├── gfl_r101_fpn_mstrain_2x_coco.py
│   │   │   ├── gfl_r50_fpn_1x_coco.py
│   │   │   ├── gfl_r50_fpn_mstrain_2x_coco.py
│   │   │   ├── gfl_x101_32x4d_fpn_dconv_c4-c5_mstrain_2x_coco.py
│   │   │   ├── gfl_x101_32x4d_fpn_mstrain_2x_coco.py
│   │   │   └── metafile.yml
│   │   ├── ghm/
│   │   │   ├── README.md
│   │   │   ├── metafile.yml
│   │   │   ├── retinanet_ghm_r101_fpn_1x_coco.py
│   │   │   ├── retinanet_ghm_r50_fpn_1x_coco.py
│   │   │   ├── retinanet_ghm_x101_32x4d_fpn_1x_coco.py
│   │   │   └── retinanet_ghm_x101_64x4d_fpn_1x_coco.py
│   │   ├── gn/
│   │   │   ├── README.md
│   │   │   ├── mask_rcnn_r101_fpn_gn-all_2x_coco.py
│   │   │   ├── mask_rcnn_r101_fpn_gn-all_3x_coco.py
│   │   │   ├── mask_rcnn_r50_fpn_gn-all_2x_coco.py
│   │   │   ├── mask_rcnn_r50_fpn_gn-all_3x_coco.py
│   │   │   ├── mask_rcnn_r50_fpn_gn-all_contrib_2x_coco.py
│   │   │   ├── mask_rcnn_r50_fpn_gn-all_contrib_3x_coco.py
│   │   │   └── metafile.yml
│   │   ├── gn+ws/
│   │   │   ├── README.md
│   │   │   ├── faster_rcnn_r101_fpn_gn_ws-all_1x_coco.py
│   │   │   ├── faster_rcnn_r50_fpn_gn_ws-all_1x_coco.py
│   │   │   ├── faster_rcnn_x101_32x4d_fpn_gn_ws-all_1x_coco.py
│   │   │   ├── faster_rcnn_x50_32x4d_fpn_gn_ws-all_1x_coco.py
│   │   │   ├── mask_rcnn_r101_fpn_gn_ws-all_20_23_24e_coco.py
│   │   │   ├── mask_rcnn_r101_fpn_gn_ws-all_2x_coco.py
│   │   │   ├── mask_rcnn_r50_fpn_gn_ws-all_20_23_24e_coco.py
│   │   │   ├── mask_rcnn_r50_fpn_gn_ws-all_2x_coco.py
│   │   │   ├── mask_rcnn_x101_32x4d_fpn_gn_ws-all_20_23_24e_coco.py
│   │   │   ├── mask_rcnn_x101_32x4d_fpn_gn_ws-all_2x_coco.py
│   │   │   ├── mask_rcnn_x50_32x4d_fpn_gn_ws-all_20_23_24e_coco.py
│   │   │   ├── mask_rcnn_x50_32x4d_fpn_gn_ws-all_2x_coco.py
│   │   │   └── metafile.yml
│   │   ├── grid_rcnn/
│   │   │   ├── README.md
│   │   │   ├── grid_rcnn_r101_fpn_gn-head_2x_coco.py
│   │   │   ├── grid_rcnn_r50_fpn_gn-head_1x_coco.py
│   │   │   ├── grid_rcnn_r50_fpn_gn-head_2x_coco.py
│   │   │   ├── grid_rcnn_x101_32x4d_fpn_gn-head_2x_coco.py
│   │   │   ├── grid_rcnn_x101_64x4d_fpn_gn-head_2x_coco.py
│   │   │   └── metafile.yml
│   │   ├── groie/
│   │   │   ├── README.md
│   │   │   ├── faster_rcnn_r50_fpn_groie_1x_coco.py
│   │   │   ├── grid_rcnn_r50_fpn_gn-head_groie_1x_coco.py
│   │   │   ├── mask_rcnn_r101_fpn_syncbn-backbone_r4_gcb_c3-c5_groie_1x_coco.py
│   │   │   ├── mask_rcnn_r50_fpn_groie_1x_coco.py
│   │   │   ├── mask_rcnn_r50_fpn_syncbn-backbone_r4_gcb_c3-c5_groie_1x_coco.py
│   │   │   └── metafile.yml
│   │   ├── guided_anchoring/
│   │   │   ├── README.md
│   │   │   ├── ga_fast_r50_caffe_fpn_1x_coco.py
│   │   │   ├── ga_faster_r101_caffe_fpn_1x_coco.py
│   │   │   ├── ga_faster_r50_caffe_fpn_1x_coco.py
│   │   │   ├── ga_faster_r50_fpn_1x_coco.py
│   │   │   ├── ga_faster_x101_32x4d_fpn_1x_coco.py
│   │   │   ├── ga_faster_x101_64x4d_fpn_1x_coco.py
│   │   │   ├── ga_retinanet_r101_caffe_fpn_1x_coco.py
│   │   │   ├── ga_retinanet_r101_caffe_fpn_mstrain_2x.py
│   │   │   ├── ga_retinanet_r50_caffe_fpn_1x_coco.py
│   │   │   ├── ga_retinanet_r50_fpn_1x_coco.py
│   │   │   ├── ga_retinanet_x101_32x4d_fpn_1x_coco.py
│   │   │   ├── ga_retinanet_x101_64x4d_fpn_1x_coco.py
│   │   │   ├── ga_rpn_r101_caffe_fpn_1x_coco.py
│   │   │   ├── ga_rpn_r50_caffe_fpn_1x_coco.py
│   │   │   ├── ga_rpn_r50_fpn_1x_coco.py
│   │   │   ├── ga_rpn_x101_32x4d_fpn_1x_coco.py
│   │   │   ├── ga_rpn_x101_64x4d_fpn_1x_coco.py
│   │   │   └── metafile.yml
│   │   ├── hrnet/
│   │   │   ├── README.md
│   │   │   ├── cascade_mask_rcnn_hrnetv2p_w18_20e_coco.py
│   │   │   ├── cascade_mask_rcnn_hrnetv2p_w32_20e_coco.py
│   │   │   ├── cascade_mask_rcnn_hrnetv2p_w40_20e_coco.py
│   │   │   ├── cascade_rcnn_hrnetv2p_w18_20e_coco.py
│   │   │   ├── cascade_rcnn_hrnetv2p_w32_20e_coco.py
│   │   │   ├── cascade_rcnn_hrnetv2p_w40_20e_coco.py
│   │   │   ├── faster_rcnn_hrnetv2p_w18_1x_coco.py
│   │   │   ├── faster_rcnn_hrnetv2p_w18_2x_coco.py
│   │   │   ├── faster_rcnn_hrnetv2p_w32_1x_coco.py
│   │   │   ├── faster_rcnn_hrnetv2p_w32_2x_coco.py
│   │   │   ├── faster_rcnn_hrnetv2p_w40_1x_coco.py
│   │   │   ├── faster_rcnn_hrnetv2p_w40_2x_coco.py
│   │   │   ├── fcos_hrnetv2p_w18_gn-head_4x4_1x_coco.py
│   │   │   ├── fcos_hrnetv2p_w18_gn-head_4x4_2x_coco.py
│   │   │   ├── fcos_hrnetv2p_w18_gn-head_mstrain_640-800_4x4_2x_coco.py
│   │   │   ├── fcos_hrnetv2p_w32_gn-head_4x4_1x_coco.py
│   │   │   ├── fcos_hrnetv2p_w32_gn-head_4x4_2x_coco.py
│   │   │   ├── fcos_hrnetv2p_w32_gn-head_mstrain_640-800_4x4_2x_coco.py
│   │   │   ├── fcos_hrnetv2p_w40_gn-head_mstrain_640-800_4x4_2x_coco.py
│   │   │   ├── htc_hrnetv2p_w18_20e_coco.py
│   │   │   ├── htc_hrnetv2p_w32_20e_coco.py
│   │   │   ├── htc_hrnetv2p_w40_20e_coco.py
│   │   │   ├── htc_hrnetv2p_w40_28e_coco.py
│   │   │   ├── htc_x101_64x4d_fpn_16x1_28e_coco.py
│   │   │   ├── mask_rcnn_hrnetv2p_w18_1x_coco.py
│   │   │   ├── mask_rcnn_hrnetv2p_w18_2x_coco.py
│   │   │   ├── mask_rcnn_hrnetv2p_w32_1x_coco.py
│   │   │   ├── mask_rcnn_hrnetv2p_w32_2x_coco.py
│   │   │   ├── mask_rcnn_hrnetv2p_w40_1x_coco.py
│   │   │   ├── mask_rcnn_hrnetv2p_w40_2x_coco.py
│   │   │   └── metafile.yml
│   │   ├── htc/
│   │   │   ├── README.md
│   │   │   ├── htc_r101_fpn_20e_coco.py
│   │   │   ├── htc_r50_fpn_1x_coco.py
│   │   │   ├── htc_r50_fpn_20e_coco.py
│   │   │   ├── htc_without_semantic_r50_fpn_1x_coco.py
│   │   │   ├── htc_x101_32x4d_fpn_16x1_20e_coco.py
│   │   │   ├── htc_x101_64x4d_fpn_16x1_20e_coco.py
│   │   │   ├── htc_x101_64x4d_fpn_dconv_c3-c5_mstrain_400_1400_16x1_20e_coco.py
│   │   │   └── metafile.yml
│   │   ├── instaboost/
│   │   │   ├── README.md
│   │   │   ├── cascade_mask_rcnn_r101_fpn_instaboost_4x_coco.py
│   │   │   ├── cascade_mask_rcnn_r50_fpn_instaboost_4x_coco.py
│   │   │   ├── cascade_mask_rcnn_x101_64x4d_fpn_instaboost_4x_coco.py
│   │   │   ├── mask_rcnn_r101_fpn_instaboost_4x_coco.py
│   │   │   ├── mask_rcnn_r50_fpn_instaboost_4x_coco.py
│   │   │   ├── mask_rcnn_x101_64x4d_fpn_instaboost_4x_coco.py
│   │   │   └── metafile.yml
│   │   ├── lad/
│   │   │   ├── README.md
│   │   │   ├── lad_r101_paa_r50_fpn_coco_1x.py
│   │   │   ├── lad_r50_paa_r101_fpn_coco_1x.py
│   │   │   └── metafile.yml
│   │   ├── ld/
│   │   │   ├── README.md
│   │   │   ├── ld_r101_gflv1_r101dcn_fpn_coco_2x.py
│   │   │   ├── ld_r18_gflv1_r101_fpn_coco_1x.py
│   │   │   ├── ld_r34_gflv1_r101_fpn_coco_1x.py
│   │   │   ├── ld_r50_gflv1_r101_fpn_coco_1x.py
│   │   │   └── metafile.yml
│   │   ├── legacy_1.x/
│   │   │   ├── README.md
│   │   │   ├── cascade_mask_rcnn_r50_fpn_1x_coco_v1.py
│   │   │   ├── faster_rcnn_r50_fpn_1x_coco_v1.py
│   │   │   ├── mask_rcnn_r50_fpn_1x_coco_v1.py
│   │   │   ├── retinanet_r50_caffe_fpn_1x_coco_v1.py
│   │   │   ├── retinanet_r50_fpn_1x_coco_v1.py
│   │   │   └── ssd300_coco_v1.py
│   │   ├── libra_rcnn/
│   │   │   ├── README.md
│   │   │   ├── libra_fast_rcnn_r50_fpn_1x_coco.py
│   │   │   ├── libra_faster_rcnn_r101_fpn_1x_coco.py
│   │   │   ├── libra_faster_rcnn_r50_fpn_1x_coco.py
│   │   │   ├── libra_faster_rcnn_x101_64x4d_fpn_1x_coco.py
│   │   │   ├── libra_retinanet_r50_fpn_1x_coco.py
│   │   │   └── metafile.yml
│   │   ├── lvis/
│   │   │   ├── README.md
│   │   │   ├── mask_rcnn_r101_fpn_sample1e-3_mstrain_1x_lvis_v1.py
│   │   │   ├── mask_rcnn_r101_fpn_sample1e-3_mstrain_2x_lvis_v0.5.py
│   │   │   ├── mask_rcnn_r50_fpn_sample1e-3_mstrain_1x_lvis_v1.py
│   │   │   ├── mask_rcnn_r50_fpn_sample1e-3_mstrain_2x_lvis_v0.5.py
│   │   │   ├── mask_rcnn_x101_32x4d_fpn_sample1e-3_mstrain_1x_lvis_v1.py
│   │   │   ├── mask_rcnn_x101_32x4d_fpn_sample1e-3_mstrain_2x_lvis_v0.5.py
│   │   │   ├── mask_rcnn_x101_64x4d_fpn_sample1e-3_mstrain_1x_lvis_v1.py
│   │   │   └── mask_rcnn_x101_64x4d_fpn_sample1e-3_mstrain_2x_lvis_v0.5.py
│   │   ├── mask2former/
│   │   │   ├── README.md
│   │   │   ├── mask2former_r101_lsj_8x2_50e_coco.py
│   │   │   ├── mask2former_r50_lsj_8x2_50e_coco.py
│   │   │   ├── mask2former_swin-b-p4-w12-384-in21k_lsj_8x2_50e_coco.py
│   │   │   ├── mask2former_swin-b-p4-w12-384_lsj_8x2_50e_coco.py
│   │   │   ├── mask2former_swin-l-p4-w12-384-in21k_lsj_16x1_100e_coco.py
│   │   │   ├── mask2former_swin-s-p4-w7-224_lsj_8x2_50e_coco.py
│   │   │   ├── mask2former_swin-t-p4-w7-224_lsj_8x2_50e_coco.py
│   │   │   └── metafile.yml
│   │   ├── mask_rcnn/
│   │   │   ├── README.md
│   │   │   ├── mask_rcnn_r101_caffe_fpn_1x_coco.py
│   │   │   ├── mask_rcnn_r101_caffe_fpn_mstrain-poly_3x_coco.py
│   │   │   ├── mask_rcnn_r101_fpn_1x_coco.py
│   │   │   ├── mask_rcnn_r101_fpn_2x_coco.py
│   │   │   ├── mask_rcnn_r101_fpn_mstrain-poly_3x_coco.py
│   │   │   ├── mask_rcnn_r50_caffe_c4_1x_coco.py
│   │   │   ├── mask_rcnn_r50_caffe_fpn_1x_coco.py
│   │   │   ├── mask_rcnn_r50_caffe_fpn_mstrain-poly_1x_coco.py
│   │   │   ├── mask_rcnn_r50_caffe_fpn_mstrain-poly_2x_coco.py
│   │   │   ├── mask_rcnn_r50_caffe_fpn_mstrain-poly_3x_coco.py
│   │   │   ├── mask_rcnn_r50_caffe_fpn_mstrain_1x_coco.py
│   │   │   ├── mask_rcnn_r50_caffe_fpn_poly_1x_coco_v1.py
│   │   │   ├── mask_rcnn_r50_fpn_1x_coco.py
│   │   │   ├── mask_rcnn_r50_fpn_2x_coco.py
│   │   │   ├── mask_rcnn_r50_fpn_fp16_1x_coco.py
│   │   │   ├── mask_rcnn_r50_fpn_mstrain-poly_3x_coco.py
│   │   │   ├── mask_rcnn_r50_fpn_poly_1x_coco.py
│   │   │   ├── mask_rcnn_x101_32x4d_fpn_1x_coco.py
│   │   │   ├── mask_rcnn_x101_32x4d_fpn_2x_coco.py
│   │   │   ├── mask_rcnn_x101_32x4d_fpn_mstrain-poly_3x_coco.py
│   │   │   ├── mask_rcnn_x101_32x8d_fpn_1x_coco.py
│   │   │   ├── mask_rcnn_x101_32x8d_fpn_mstrain-poly_1x_coco.py
│   │   │   ├── mask_rcnn_x101_32x8d_fpn_mstrain-poly_3x_coco.py
│   │   │   ├── mask_rcnn_x101_64x4d_fpn_1x_coco.py
│   │   │   ├── mask_rcnn_x101_64x4d_fpn_2x_coco.py
│   │   │   ├── mask_rcnn_x101_64x4d_fpn_mstrain-poly_3x_coco.py
│   │   │   └── metafile.yml
│   │   ├── maskformer/
│   │   │   ├── README.md
│   │   │   ├── maskformer_r50_mstrain_16x1_75e_coco.py
│   │   │   ├── maskformer_swin-l-p4-w12_mstrain_64x1_300e_coco.py
│   │   │   └── metafile.yml
│   │   ├── ms_rcnn/
│   │   │   ├── README.md
│   │   │   ├── metafile.yml
│   │   │   ├── ms_rcnn_r101_caffe_fpn_1x_coco.py
│   │   │   ├── ms_rcnn_r101_caffe_fpn_2x_coco.py
│   │   │   ├── ms_rcnn_r50_caffe_fpn_1x_coco.py
│   │   │   ├── ms_rcnn_r50_caffe_fpn_2x_coco.py
│   │   │   ├── ms_rcnn_r50_fpn_1x_coco.py
│   │   │   ├── ms_rcnn_x101_32x4d_fpn_1x_coco.py
│   │   │   ├── ms_rcnn_x101_64x4d_fpn_1x_coco.py
│   │   │   └── ms_rcnn_x101_64x4d_fpn_2x_coco.py
│   │   ├── nas_fcos/
│   │   │   ├── README.md
│   │   │   ├── metafile.yml
│   │   │   ├── nas_fcos_fcoshead_r50_caffe_fpn_gn-head_4x4_1x_coco.py
│   │   │   └── nas_fcos_nashead_r50_caffe_fpn_gn-head_4x4_1x_coco.py
│   │   ├── nas_fpn/
│   │   │   ├── README.md
│   │   │   ├── metafile.yml
│   │   │   ├── retinanet_r50_fpn_crop640_50e_coco.py
│   │   │   └── retinanet_r50_nasfpn_crop640_50e_coco.py
│   │   ├── openimages/
│   │   │   ├── README.md
│   │   │   ├── faster_rcnn_r50_fpn_32x2_1x_openimages.py
│   │   │   ├── faster_rcnn_r50_fpn_32x2_1x_openimages_challenge.py
│   │   │   ├── faster_rcnn_r50_fpn_32x2_cas_1x_openimages.py
│   │   │   ├── faster_rcnn_r50_fpn_32x2_cas_1x_openimages_challenge.py
│   │   │   ├── metafile.yml
│   │   │   ├── retinanet_r50_fpn_32x2_1x_openimages.py
│   │   │   └── ssd300_32x8_36e_openimages.py
│   │   ├── paa/
│   │   │   ├── README.md
│   │   │   ├── metafile.yml
│   │   │   ├── paa_r101_fpn_1x_coco.py
│   │   │   ├── paa_r101_fpn_2x_coco.py
│   │   │   ├── paa_r101_fpn_mstrain_3x_coco.py
│   │   │   ├── paa_r50_fpn_1.5x_coco.py
│   │   │   ├── paa_r50_fpn_1x_coco.py
│   │   │   ├── paa_r50_fpn_2x_coco.py
│   │   │   └── paa_r50_fpn_mstrain_3x_coco.py
│   │   ├── pafpn/
│   │   │   ├── README.md
│   │   │   ├── faster_rcnn_r50_pafpn_1x_coco.py
│   │   │   └── metafile.yml
│   │   ├── panoptic_fpn/
│   │   │   ├── README.md
│   │   │   ├── metafile.yml
│   │   │   ├── panoptic_fpn_r101_fpn_1x_coco.py
│   │   │   ├── panoptic_fpn_r101_fpn_mstrain_3x_coco.py
│   │   │   ├── panoptic_fpn_r50_fpn_1x_coco.py
│   │   │   └── panoptic_fpn_r50_fpn_mstrain_3x_coco.py
│   │   ├── pascal_voc/
│   │   │   ├── README.md
│   │   │   ├── faster_rcnn_r50_caffe_c4_mstrain_18k_voc0712.py
│   │   │   ├── faster_rcnn_r50_fpn_1x_voc0712.py
│   │   │   ├── faster_rcnn_r50_fpn_1x_voc0712_cocofmt.py
│   │   │   ├── retinanet_r50_fpn_1x_voc0712.py
│   │   │   ├── ssd300_voc0712.py
│   │   │   └── ssd512_voc0712.py
│   │   ├── pisa/
│   │   │   ├── README.md
│   │   │   ├── metafile.yml
│   │   │   ├── pisa_faster_rcnn_r50_fpn_1x_coco.py
│   │   │   ├── pisa_faster_rcnn_x101_32x4d_fpn_1x_coco.py
│   │   │   ├── pisa_mask_rcnn_r50_fpn_1x_coco.py
│   │   │   ├── pisa_mask_rcnn_x101_32x4d_fpn_1x_coco.py
│   │   │   ├── pisa_retinanet_r50_fpn_1x_coco.py
│   │   │   ├── pisa_retinanet_x101_32x4d_fpn_1x_coco.py
│   │   │   ├── pisa_ssd300_coco.py
│   │   │   └── pisa_ssd512_coco.py
│   │   ├── point_rend/
│   │   │   ├── README.md
│   │   │   ├── metafile.yml
│   │   │   ├── point_rend_r50_caffe_fpn_mstrain_1x_coco.py
│   │   │   └── point_rend_r50_caffe_fpn_mstrain_3x_coco.py
│   │   ├── pvt/
│   │   │   ├── README.md
│   │   │   ├── metafile.yml
│   │   │   ├── retinanet_pvt-l_fpn_1x_coco.py
│   │   │   ├── retinanet_pvt-m_fpn_1x_coco.py
│   │   │   ├── retinanet_pvt-s_fpn_1x_coco.py
│   │   │   ├── retinanet_pvt-t_fpn_1x_coco.py
│   │   │   ├── retinanet_pvtv2-b0_fpn_1x_coco.py
│   │   │   ├── retinanet_pvtv2-b1_fpn_1x_coco.py
│   │   │   ├── retinanet_pvtv2-b2_fpn_1x_coco.py
│   │   │   ├── retinanet_pvtv2-b3_fpn_1x_coco.py
│   │   │   ├── retinanet_pvtv2-b4_fpn_1x_coco.py
│   │   │   └── retinanet_pvtv2-b5_fpn_1x_coco.py
│   │   ├── queryinst/
│   │   │   ├── README.md
│   │   │   ├── metafile.yml
│   │   │   ├── queryinst_r101_fpn_300_proposals_crop_mstrain_480-800_3x_coco.py
│   │   │   ├── queryinst_r101_fpn_mstrain_480-800_3x_coco.py
│   │   │   ├── queryinst_r50_fpn_1x_coco.py
│   │   │   ├── queryinst_r50_fpn_300_proposals_crop_mstrain_480-800_3x_coco.py
│   │   │   └── queryinst_r50_fpn_mstrain_480-800_3x_coco.py
│   │   ├── regnet/
│   │   │   ├── README.md
│   │   │   ├── cascade_mask_rcnn_regnetx-1.6GF_fpn_mstrain_3x_coco.py
│   │   │   ├── cascade_mask_rcnn_regnetx-3.2GF_fpn_mstrain_3x_coco.py
│   │   │   ├── cascade_mask_rcnn_regnetx-400MF_fpn_mstrain_3x_coco.py
│   │   │   ├── cascade_mask_rcnn_regnetx-4GF_fpn_mstrain_3x_coco.py
│   │   │   ├── cascade_mask_rcnn_regnetx-800MF_fpn_mstrain_3x_coco.py
│   │   │   ├── faster_rcnn_regnetx-1.6GF_fpn_mstrain_3x_coco.py
│   │   │   ├── faster_rcnn_regnetx-3.2GF_fpn_1x_coco.py
│   │   │   ├── faster_rcnn_regnetx-3.2GF_fpn_2x_coco.py
│   │   │   ├── faster_rcnn_regnetx-3.2GF_fpn_mstrain_3x_coco.py
│   │   │   ├── faster_rcnn_regnetx-400MF_fpn_mstrain_3x_coco.py
│   │   │   ├── faster_rcnn_regnetx-4GF_fpn_mstrain_3x_coco.py
│   │   │   ├── faster_rcnn_regnetx-800MF_fpn_mstrain_3x_coco.py
│   │   │   ├── mask_rcnn_regnetx-1.6GF_fpn_mstrain-poly_3x_coco.py
│   │   │   ├── mask_rcnn_regnetx-12GF_fpn_1x_coco.py
│   │   │   ├── mask_rcnn_regnetx-3.2GF_fpn_1x_coco.py
│   │   │   ├── mask_rcnn_regnetx-3.2GF_fpn_mdconv_c3-c5_1x_coco.py
│   │   │   ├── mask_rcnn_regnetx-3.2GF_fpn_mstrain_3x_coco.py
│   │   │   ├── mask_rcnn_regnetx-400MF_fpn_mstrain-poly_3x_coco.py
│   │   │   ├── mask_rcnn_regnetx-4GF_fpn_1x_coco.py
│   │   │   ├── mask_rcnn_regnetx-4GF_fpn_mstrain-poly_3x_coco.py
│   │   │   ├── mask_rcnn_regnetx-6.4GF_fpn_1x_coco.py
│   │   │   ├── mask_rcnn_regnetx-800MF_fpn_mstrain-poly_3x_coco.py
│   │   │   ├── mask_rcnn_regnetx-8GF_fpn_1x_coco.py
│   │   │   ├── metafile.yml
│   │   │   ├── retinanet_regnetx-1.6GF_fpn_1x_coco.py
│   │   │   ├── retinanet_regnetx-3.2GF_fpn_1x_coco.py
│   │   │   └── retinanet_regnetx-800MF_fpn_1x_coco.py
│   │   ├── reppoints/
│   │   │   ├── README.md
│   │   │   ├── bbox_r50_grid_center_fpn_gn-neck+head_1x_coco.py
│   │   │   ├── bbox_r50_grid_fpn_gn-neck+head_1x_coco.py
│   │   │   ├── metafile.yml
│   │   │   ├── reppoints_minmax_r50_fpn_gn-neck+head_1x_coco.py
│   │   │   ├── reppoints_moment_r101_fpn_dconv_c3-c5_gn-neck+head_2x_coco.py
│   │   │   ├── reppoints_moment_r101_fpn_gn-neck+head_2x_coco.py
│   │   │   ├── reppoints_moment_r50_fpn_1x_coco.py
│   │   │   ├── reppoints_moment_r50_fpn_gn-neck+head_1x_coco.py
│   │   │   ├── reppoints_moment_r50_fpn_gn-neck+head_2x_coco.py
│   │   │   ├── reppoints_moment_x101_fpn_dconv_c3-c5_gn-neck+head_2x_coco.py
│   │   │   └── reppoints_partial_minmax_r50_fpn_gn-neck+head_1x_coco.py
│   │   ├── res2net/
│   │   │   ├── README.md
│   │   │   ├── cascade_mask_rcnn_r2_101_fpn_20e_coco.py
│   │   │   ├── cascade_rcnn_r2_101_fpn_20e_coco.py
│   │   │   ├── faster_rcnn_r2_101_fpn_2x_coco.py
│   │   │   ├── htc_r2_101_fpn_20e_coco.py
│   │   │   ├── mask_rcnn_r2_101_fpn_2x_coco.py
│   │   │   └── metafile.yml
│   │   ├── resnest/
│   │   │   ├── README.md
│   │   │   ├── cascade_mask_rcnn_s101_fpn_syncbn-backbone+head_mstrain_1x_coco.py
│   │   │   ├── cascade_mask_rcnn_s50_fpn_syncbn-backbone+head_mstrain_1x_coco.py
│   │   │   ├── cascade_rcnn_s101_fpn_syncbn-backbone+head_mstrain-range_1x_coco.py
│   │   │   ├── cascade_rcnn_s50_fpn_syncbn-backbone+head_mstrain-range_1x_coco.py
│   │   │   ├── faster_rcnn_s101_fpn_syncbn-backbone+head_mstrain-range_1x_coco.py
│   │   │   ├── faster_rcnn_s50_fpn_syncbn-backbone+head_mstrain-range_1x_coco.py
│   │   │   ├── mask_rcnn_s101_fpn_syncbn-backbone+head_mstrain_1x_coco.py
│   │   │   ├── mask_rcnn_s50_fpn_syncbn-backbone+head_mstrain_1x_coco.py
│   │   │   └── metafile.yml
│   │   ├── resnet_strikes_back/
│   │   │   ├── README.md
│   │   │   ├── cascade_mask_rcnn_r50_fpn_rsb-pretrain_1x_coco.py
│   │   │   ├── faster_rcnn_r50_fpn_rsb-pretrain_1x_coco.py
│   │   │   ├── mask_rcnn_r50_fpn_rsb-pretrain_1x_coco.py
│   │   │   ├── metafile.yml
│   │   │   └── retinanet_r50_fpn_rsb-pretrain_1x_coco.py
│   │   ├── retinanet/
│   │   │   ├── README.md
│   │   │   ├── metafile.yml
│   │   │   ├── retinanet_r101_caffe_fpn_1x_coco.py
│   │   │   ├── retinanet_r101_caffe_fpn_mstrain_3x_coco.py
│   │   │   ├── retinanet_r101_fpn_1x_coco.py
│   │   │   ├── retinanet_r101_fpn_2x_coco.py
│   │   │   ├── retinanet_r101_fpn_mstrain_640-800_3x_coco.py
│   │   │   ├── retinanet_r18_fpn_1x8_1x_coco.py
│   │   │   ├── retinanet_r18_fpn_1x_coco.py
│   │   │   ├── retinanet_r50_caffe_fpn_1x_coco.py
│   │   │   ├── retinanet_r50_caffe_fpn_mstrain_1x_coco.py
│   │   │   ├── retinanet_r50_caffe_fpn_mstrain_2x_coco.py
│   │   │   ├── retinanet_r50_caffe_fpn_mstrain_3x_coco.py
│   │   │   ├── retinanet_r50_fpn_1x_coco.py
│   │   │   ├── retinanet_r50_fpn_2x_coco.py
│   │   │   ├── retinanet_r50_fpn_90k_coco.py
│   │   │   ├── retinanet_r50_fpn_fp16_1x_coco.py
│   │   │   ├── retinanet_r50_fpn_mstrain_640-800_3x_coco.py
│   │   │   ├── retinanet_x101_32x4d_fpn_1x_coco.py
│   │   │   ├── retinanet_x101_32x4d_fpn_2x_coco.py
│   │   │   ├── retinanet_x101_64x4d_fpn_1x_coco.py
│   │   │   ├── retinanet_x101_64x4d_fpn_2x_coco.py
│   │   │   └── retinanet_x101_64x4d_fpn_mstrain_640-800_3x_coco.py
│   │   ├── rpn/
│   │   │   ├── README.md
│   │   │   ├── rpn_r101_caffe_fpn_1x_coco.py
│   │   │   ├── rpn_r101_fpn_1x_coco.py
│   │   │   ├── rpn_r101_fpn_2x_coco.py
│   │   │   ├── rpn_r50_caffe_c4_1x_coco.py
│   │   │   ├── rpn_r50_caffe_fpn_1x_coco.py
│   │   │   ├── rpn_r50_fpn_1x_coco.py
│   │   │   ├── rpn_r50_fpn_2x_coco.py
│   │   │   ├── rpn_x101_32x4d_fpn_1x_coco.py
│   │   │   ├── rpn_x101_32x4d_fpn_2x_coco.py
│   │   │   ├── rpn_x101_64x4d_fpn_1x_coco.py
│   │   │   └── rpn_x101_64x4d_fpn_2x_coco.py
│   │   ├── sabl/
│   │   │   ├── README.md
│   │   │   ├── metafile.yml
│   │   │   ├── sabl_cascade_rcnn_r101_fpn_1x_coco.py
│   │   │   ├── sabl_cascade_rcnn_r50_fpn_1x_coco.py
│   │   │   ├── sabl_faster_rcnn_r101_fpn_1x_coco.py
│   │   │   ├── sabl_faster_rcnn_r50_fpn_1x_coco.py
│   │   │   ├── sabl_retinanet_r101_fpn_1x_coco.py
│   │   │   ├── sabl_retinanet_r101_fpn_gn_1x_coco.py
│   │   │   ├── sabl_retinanet_r101_fpn_gn_2x_ms_480_960_coco.py
│   │   │   ├── sabl_retinanet_r101_fpn_gn_2x_ms_640_800_coco.py
│   │   │   ├── sabl_retinanet_r50_fpn_1x_coco.py
│   │   │   └── sabl_retinanet_r50_fpn_gn_1x_coco.py
│   │   ├── scnet/
│   │   │   ├── README.md
│   │   │   ├── metafile.yml
│   │   │   ├── scnet_r101_fpn_20e_coco.py
│   │   │   ├── scnet_r50_fpn_1x_coco.py
│   │   │   ├── scnet_r50_fpn_20e_coco.py
│   │   │   ├── scnet_x101_64x4d_fpn_20e_coco.py
│   │   │   └── scnet_x101_64x4d_fpn_8x1_20e_coco.py
│   │   ├── scratch/
│   │   │   ├── README.md
│   │   │   ├── faster_rcnn_r50_fpn_gn-all_scratch_6x_coco.py
│   │   │   ├── mask_rcnn_r50_fpn_gn-all_scratch_6x_coco.py
│   │   │   └── metafile.yml
│   │   ├── seesaw_loss/
│   │   │   ├── README.md
│   │   │   ├── cascade_mask_rcnn_r101_fpn_random_seesaw_loss_mstrain_2x_lvis_v1.py
│   │   │   ├── cascade_mask_rcnn_r101_fpn_random_seesaw_loss_normed_mask_mstrain_2x_lvis_v1.py
│   │   │   ├── cascade_mask_rcnn_r101_fpn_sample1e-3_seesaw_loss_mstrain_2x_lvis_v1.py
│   │   │   ├── cascade_mask_rcnn_r101_fpn_sample1e-3_seesaw_loss_normed_mask_mstrain_2x_lvis_v1.py
│   │   │   ├── mask_rcnn_r101_fpn_random_seesaw_loss_mstrain_2x_lvis_v1.py
│   │   │   ├── mask_rcnn_r101_fpn_random_seesaw_loss_normed_mask_mstrain_2x_lvis_v1.py
│   │   │   ├── mask_rcnn_r101_fpn_sample1e-3_seesaw_loss_mstrain_2x_lvis_v1.py
│   │   │   ├── mask_rcnn_r101_fpn_sample1e-3_seesaw_loss_normed_mask_mstrain_2x_lvis_v1.py
│   │   │   ├── mask_rcnn_r50_fpn_random_seesaw_loss_mstrain_2x_lvis_v1.py
│   │   │   ├── mask_rcnn_r50_fpn_random_seesaw_loss_normed_mask_mstrain_2x_lvis_v1.py
│   │   │   ├── mask_rcnn_r50_fpn_sample1e-3_seesaw_loss_mstrain_2x_lvis_v1.py
│   │   │   ├── mask_rcnn_r50_fpn_sample1e-3_seesaw_loss_normed_mask_mstrain_2x_lvis_v1.py
│   │   │   └── metafile.yml
│   │   ├── selfsup_pretrain/
│   │   │   ├── README.md
│   │   │   ├── mask_rcnn_r50_fpn_mocov2-pretrain_1x_coco.py
│   │   │   ├── mask_rcnn_r50_fpn_mocov2-pretrain_ms-2x_coco.py
│   │   │   ├── mask_rcnn_r50_fpn_swav-pretrain_1x_coco.py
│   │   │   └── mask_rcnn_r50_fpn_swav-pretrain_ms-2x_coco.py
│   │   ├── simple_copy_paste/
│   │   │   ├── README.md
│   │   │   ├── mask_rcnn_r50_fpn_syncbn-all_rpn-2conv_ssj_32x2_270k_coco.py
│   │   │   ├── mask_rcnn_r50_fpn_syncbn-all_rpn-2conv_ssj_32x2_90k_coco.py
│   │   │   ├── mask_rcnn_r50_fpn_syncbn-all_rpn-2conv_ssj_scp_32x2_270k_coco.py
│   │   │   └── mask_rcnn_r50_fpn_syncbn-all_rpn-2conv_ssj_scp_32x2_90k_coco.py
│   │   ├── solo/
│   │   │   ├── README.md
│   │   │   ├── decoupled_solo_light_r50_fpn_3x_coco.py
│   │   │   ├── decoupled_solo_r50_fpn_1x_coco.py
│   │   │   ├── decoupled_solo_r50_fpn_3x_coco.py
│   │   │   ├── metafile.yml
│   │   │   ├── solo_r50_fpn_1x_coco.py
│   │   │   └── solo_r50_fpn_3x_coco.py
│   │   ├── sparse_rcnn/
│   │   │   ├── README.md
│   │   │   ├── metafile.yml
│   │   │   ├── sparse_rcnn_r101_fpn_300_proposals_crop_mstrain_480-800_3x_coco.py
│   │   │   ├── sparse_rcnn_r101_fpn_mstrain_480-800_3x_coco.py
│   │   │   ├── sparse_rcnn_r50_fpn_1x_coco.py
│   │   │   ├── sparse_rcnn_r50_fpn_300_proposals_crop_mstrain_480-800_3x_coco.py
│   │   │   └── sparse_rcnn_r50_fpn_mstrain_480-800_3x_coco.py
│   │   ├── ssd/
│   │   │   ├── README.md
│   │   │   ├── metafile.yml
│   │   │   ├── ssd300_coco.py
│   │   │   ├── ssd512_coco.py
│   │   │   └── ssdlite_mobilenetv2_scratch_600e_coco.py
│   │   ├── strong_baselines/
│   │   │   ├── README.md
│   │   │   ├── mask_rcnn_r50_caffe_fpn_syncbn-all_rpn-2conv_lsj_100e_coco.py
│   │   │   ├── mask_rcnn_r50_caffe_fpn_syncbn-all_rpn-2conv_lsj_100e_fp16_coco.py
│   │   │   ├── mask_rcnn_r50_caffe_fpn_syncbn-all_rpn-2conv_lsj_400e_coco.py
│   │   │   ├── mask_rcnn_r50_fpn_syncbn-all_rpn-2conv_lsj_100e_coco.py
│   │   │   ├── mask_rcnn_r50_fpn_syncbn-all_rpn-2conv_lsj_100e_fp16_coco.py
│   │   │   └── mask_rcnn_r50_fpn_syncbn-all_rpn-2conv_lsj_50e_coco.py
│   │   ├── swin/
│   │   │   ├── README.md
│   │   │   ├── mask_rcnn_swin-s-p4-w7_fpn_fp16_ms-crop-3x_coco.py
│   │   │   ├── mask_rcnn_swin-t-p4-w7_fpn_1x_coco.py
│   │   │   ├── mask_rcnn_swin-t-p4-w7_fpn_fp16_ms-crop-3x_coco.py
│   │   │   ├── mask_rcnn_swin-t-p4-w7_fpn_ms-crop-3x_coco.py
│   │   │   ├── metafile.yml
│   │   │   └── retinanet_swin-t-p4-w7_fpn_1x_coco.py
│   │   ├── timm_example/
│   │   │   ├── README.md
│   │   │   ├── retinanet_timm_efficientnet_b1_fpn_1x_coco.py
│   │   │   └── retinanet_timm_tv_resnet50_fpn_1x_coco.py
│   │   ├── tood/
│   │   │   ├── README.md
│   │   │   ├── metafile.yml
│   │   │   ├── tood_r101_fpn_dconv_c3-c5_mstrain_2x_coco.py
│   │   │   ├── tood_r101_fpn_mstrain_2x_coco.py
│   │   │   ├── tood_r50_fpn_1x_coco.py
│   │   │   ├── tood_r50_fpn_anchor_based_1x_coco.py
│   │   │   ├── tood_r50_fpn_mstrain_2x_coco.py
│   │   │   ├── tood_x101_64x4d_fpn_dconv_c4-c5_mstrain_2x_coco.py
│   │   │   └── tood_x101_64x4d_fpn_mstrain_2x_coco.py
│   │   ├── tridentnet/
│   │   │   ├── README.md
│   │   │   ├── metafile.yml
│   │   │   ├── tridentnet_r50_caffe_1x_coco.py
│   │   │   ├── tridentnet_r50_caffe_mstrain_1x_coco.py
│   │   │   └── tridentnet_r50_caffe_mstrain_3x_coco.py
│   │   ├── vfnet/
│   │   │   ├── README.md
│   │   │   ├── metafile.yml
│   │   │   ├── vfnet_r101_fpn_1x_coco.py
│   │   │   ├── vfnet_r101_fpn_2x_coco.py
│   │   │   ├── vfnet_r101_fpn_mdconv_c3-c5_mstrain_2x_coco.py
│   │   │   ├── vfnet_r101_fpn_mstrain_2x_coco.py
│   │   │   ├── vfnet_r2_101_fpn_mdconv_c3-c5_mstrain_2x_coco.py
│   │   │   ├── vfnet_r2_101_fpn_mstrain_2x_coco.py
│   │   │   ├── vfnet_r50_fpn_1x_coco.py
│   │   │   ├── vfnet_r50_fpn_mdconv_c3-c5_mstrain_2x_coco.py
│   │   │   ├── vfnet_r50_fpn_mstrain_2x_coco.py
│   │   │   ├── vfnet_x101_32x4d_fpn_mdconv_c3-c5_mstrain_2x_coco.py
│   │   │   ├── vfnet_x101_32x4d_fpn_mstrain_2x_coco.py
│   │   │   ├── vfnet_x101_64x4d_fpn_mdconv_c3-c5_mstrain_2x_coco.py
│   │   │   └── vfnet_x101_64x4d_fpn_mstrain_2x_coco.py
│   │   ├── wider_face/
│   │   │   ├── README.md
│   │   │   └── ssd300_wider_face.py
│   │   ├── yolact/
│   │   │   ├── README.md
│   │   │   ├── metafile.yml
│   │   │   ├── yolact_r101_1x8_coco.py
│   │   │   ├── yolact_r50_1x8_coco.py
│   │   │   └── yolact_r50_8x8_coco.py
│   │   ├── yolo/
│   │   │   ├── README.md
│   │   │   ├── metafile.yml
│   │   │   ├── yolov3_d53_320_273e_coco.py
│   │   │   ├── yolov3_d53_fp16_mstrain-608_273e_coco.py
│   │   │   ├── yolov3_d53_mstrain-416_273e_coco.py
│   │   │   ├── yolov3_d53_mstrain-608_273e_coco.py
│   │   │   ├── yolov3_mobilenetv2_320_300e_coco.py
│   │   │   └── yolov3_mobilenetv2_mstrain-416_300e_coco.py
│   │   ├── yolof/
│   │   │   ├── README.md
│   │   │   ├── metafile.yml
│   │   │   ├── yolof_r50_c5_8x8_1x_coco.py
│   │   │   └── yolof_r50_c5_8x8_iter-1x_coco.py
│   │   └── yolox/
│   │       ├── README.md
│   │       ├── metafile.yml
│   │       ├── yolox_l_8x8_300e_coco.py
│   │       ├── yolox_m_8x8_300e_coco.py
│   │       ├── yolox_nano_8x8_300e_coco.py
│   │       ├── yolox_s_8x8_300e_coco.py
│   │       ├── yolox_tiny_8x8_300e_coco.py
│   │       └── yolox_x_8x8_300e_coco.py
│   ├── demo/
│   │   ├── MMDet_InstanceSeg_Tutorial.ipynb
│   │   ├── MMDet_Tutorial.ipynb
│   │   ├── create_result_gif.py
│   │   ├── image_demo.py
│   │   ├── inference_demo.ipynb
│   │   ├── video_demo.py
│   │   └── webcam_demo.py
│   ├── docker/
│   │   ├── Dockerfile
│   │   └── serve/
│   │       ├── Dockerfile
│   │       ├── config.properties
│   │       └── entrypoint.sh
│   ├── docs/
│   │   ├── en/
│   │   │   ├── 1_exist_data_model.md
│   │   │   ├── 2_new_data_model.md
│   │   │   ├── 3_exist_data_new_model.md
│   │   │   ├── Makefile
│   │   │   ├── _static/
│   │   │   │   └── css/
│   │   │   │       └── readthedocs.css
│   │   │   ├── api.rst
│   │   │   ├── changelog.md
│   │   │   ├── compatibility.md
│   │   │   ├── conf.py
│   │   │   ├── conventions.md
│   │   │   ├── faq.md
│   │   │   ├── get_started.md
│   │   │   ├── index.rst
│   │   │   ├── make.bat
│   │   │   ├── model_zoo.md
│   │   │   ├── projects.md
│   │   │   ├── robustness_benchmarking.md
│   │   │   ├── stat.py
│   │   │   ├── switch_language.md
│   │   │   ├── tutorials/
│   │   │   │   ├── config.md
│   │   │   │   ├── customize_dataset.md
│   │   │   │   ├── customize_losses.md
│   │   │   │   ├── customize_models.md
│   │   │   │   ├── customize_runtime.md
│   │   │   │   ├── data_pipeline.md
│   │   │   │   ├── finetune.md
│   │   │   │   ├── how_to.md
│   │   │   │   ├── index.rst
│   │   │   │   ├── init_cfg.md
│   │   │   │   ├── onnx2tensorrt.md
│   │   │   │   ├── pytorch2onnx.md
│   │   │   │   └── test_results_submission.md
│   │   │   └── useful_tools.md
│   │   └── zh_cn/
│   │       ├── 1_exist_data_model.md
│   │       ├── 2_new_data_model.md
│   │       ├── 3_exist_data_new_model.md
│   │       ├── Makefile
│   │       ├── _static/
│   │       │   └── css/
│   │       │       └── readthedocs.css
│   │       ├── api.rst
│   │       ├── article.md
│   │       ├── compatibility.md
│   │       ├── conf.py
│   │       ├── conventions.md
│   │       ├── faq.md
│   │       ├── get_started.md
│   │       ├── index.rst
│   │       ├── make.bat
│   │       ├── model_zoo.md
│   │       ├── projects.md
│   │       ├── robustness_benchmarking.md
│   │       ├── stat.py
│   │       ├── switch_language.md
│   │       ├── tutorials/
│   │       │   ├── config.md
│   │       │   ├── customize_dataset.md
│   │       │   ├── customize_losses.md
│   │       │   ├── customize_models.md
│   │       │   ├── customize_runtime.md
│   │       │   ├── data_pipeline.md
│   │       │   ├── finetune.md
│   │       │   ├── how_to.md
│   │       │   ├── index.rst
│   │       │   ├── init_cfg.md
│   │       │   ├── onnx2tensorrt.md
│   │       │   └── pytorch2onnx.md
│   │       └── useful_tools.md
│   ├── huge_image_infer.py
│   ├── install_apex.sh
│   ├── mmcv_custom/
│   │   ├── __init__.py
│   │   ├── checkpoint.py
│   │   ├── hivit_layer_decay_optimizer_constructor.py
│   │   ├── layer_decay_optimizer_constructor.py
│   │   └── runner/
│   │       ├── __init__.py
│   │       ├── checkpoint.py
│   │       └── epoch_based_runner.py
│   ├── mmdet/
│   │   ├── .mim/
│   │   │   ├── configs/
│   │   │   │   ├── _base_/
│   │   │   │   │   ├── datasets/
│   │   │   │   │   │   ├── cityscapes_detection.py
│   │   │   │   │   │   ├── cityscapes_instance.py
│   │   │   │   │   │   ├── coco_detection.py
│   │   │   │   │   │   ├── coco_instance.py
│   │   │   │   │   │   ├── coco_instance_semantic.py
│   │   │   │   │   │   ├── coco_panoptic.py
│   │   │   │   │   │   ├── deepfashion.py
│   │   │   │   │   │   ├── lvis_v0.5_instance.py
│   │   │   │   │   │   ├── lvis_v1_instance.py
│   │   │   │   │   │   ├── openimages_detection.py
│   │   │   │   │   │   ├── voc0712.py
│   │   │   │   │   │   └── wider_face.py
│   │   │   │   │   ├── default_runtime.py
│   │   │   │   │   ├── models/
│   │   │   │   │   │   ├── cascade_mask_rcnn_r50_fpn.py
│   │   │   │   │   │   ├── cascade_rcnn_r50_fpn.py
│   │   │   │   │   │   ├── fast_rcnn_r50_fpn.py
│   │   │   │   │   │   ├── faster_rcnn_r50_caffe_c4.py
│   │   │   │   │   │   ├── faster_rcnn_r50_caffe_dc5.py
│   │   │   │   │   │   ├── faster_rcnn_r50_fpn.py
│   │   │   │   │   │   ├── mask_rcnn_r50_caffe_c4.py
│   │   │   │   │   │   ├── mask_rcnn_r50_fpn.py
│   │   │   │   │   │   ├── retinanet_r50_fpn.py
│   │   │   │   │   │   ├── rpn_r50_caffe_c4.py
│   │   │   │   │   │   ├── rpn_r50_fpn.py
│   │   │   │   │   │   └── ssd300.py
│   │   │   │   │   └── schedules/
│   │   │   │   │       ├── schedule_1x.py
│   │   │   │   │       ├── schedule_20e.py
│   │   │   │   │       └── schedule_2x.py
│   │   │   │   ├── _hivit_/
│   │   │   │   │   ├── fasterrcnn.py
│   │   │   │   │   ├── hivit_SAR_AIRcraft.py
│   │   │   │   │   ├── hivit_SSDD.py
│   │   │   │   │   ├── hivit_base_AIRShip.py
│   │   │   │   │   ├── hivit_base_HRSID.py
│   │   │   │   │   ├── hivit_base_MSAR.py
│   │   │   │   │   ├── hivit_base_OGSOD.py
│   │   │   │   │   ├── hivit_base_SADD.py
│   │   │   │   │   ├── hivit_base_SARAircraft.py
│   │   │   │   │   ├── hivit_base_SARDet.py
│   │   │   │   │   ├── hivit_base_SIVED.py
│   │   │   │   │   ├── hivit_base_SSDD.py
│   │   │   │   │   ├── hivit_base_Shipdataset.py
│   │   │   │   │   └── hivit_base_mask_rcnn_fpn_3x_coco.py
│   │   │   │   ├── albu_example/
│   │   │   │   │   ├── README.md
│   │   │   │   │   └── mask_rcnn_r50_fpn_albu_1x_coco.py
│   │   │   │   ├── atss/
│   │   │   │   │   ├── README.md
│   │   │   │   │   ├── atss_r101_fpn_1x_coco.py
│   │   │   │   │   ├── atss_r50_fpn_1x_coco.py
│   │   │   │   │   └── metafile.yml
│   │   │   │   ├── autoassign/
│   │   │   │   │   ├── README.md
│   │   │   │   │   ├── autoassign_r50_fpn_8x2_1x_coco.py
│   │   │   │   │   └── metafile.yml
│   │   │   │   ├── carafe/
│   │   │   │   │   ├── README.md
│   │   │   │   │   ├── faster_rcnn_r50_fpn_carafe_1x_coco.py
│   │   │   │   │   ├── mask_rcnn_r50_fpn_carafe_1x_coco.py
│   │   │   │   │   └── metafile.yml
│   │   │   │   ├── cascade_rcnn/
│   │   │   │   │   ├── README.md
│   │   │   │   │   ├── cascade_mask_rcnn_r101_caffe_fpn_1x_coco.py
│   │   │   │   │   ├── cascade_mask_rcnn_r101_caffe_fpn_mstrain_3x_coco.py
│   │   │   │   │   ├── cascade_mask_rcnn_r101_fpn_1x_coco.py
│   │   │   │   │   ├── cascade_mask_rcnn_r101_fpn_20e_coco.py
│   │   │   │   │   ├── cascade_mask_rcnn_r101_fpn_mstrain_3x_coco.py
│   │   │   │   │   ├── cascade_mask_rcnn_r50_caffe_fpn_1x_coco.py
│   │   │   │   │   ├── cascade_mask_rcnn_r50_caffe_fpn_mstrain_3x_coco.py
│   │   │   │   │   ├── cascade_mask_rcnn_r50_fpn_1x_coco.py
│   │   │   │   │   ├── cascade_mask_rcnn_r50_fpn_20e_coco.py
│   │   │   │   │   ├── cascade_mask_rcnn_r50_fpn_mstrain_3x_coco.py
│   │   │   │   │   ├── cascade_mask_rcnn_x101_32x4d_fpn_1x_coco.py
│   │   │   │   │   ├── cascade_mask_rcnn_x101_32x4d_fpn_20e_coco.py
│   │   │   │   │   ├── cascade_mask_rcnn_x101_32x4d_fpn_mstrain_3x_coco.py
│   │   │   │   │   ├── cascade_mask_rcnn_x101_32x8d_fpn_mstrain_3x_coco.py
│   │   │   │   │   ├── cascade_mask_rcnn_x101_64x4d_fpn_1x_coco.py
│   │   │   │   │   ├── cascade_mask_rcnn_x101_64x4d_fpn_20e_coco.py
│   │   │   │   │   ├── cascade_mask_rcnn_x101_64x4d_fpn_mstrain_3x_coco.py
│   │   │   │   │   ├── cascade_rcnn_r101_caffe_fpn_1x_coco.py
│   │   │   │   │   ├── cascade_rcnn_r101_fpn_1x_coco.py
│   │   │   │   │   ├── cascade_rcnn_r101_fpn_20e_coco.py
│   │   │   │   │   ├── cascade_rcnn_r50_caffe_fpn_1x_coco.py
│   │   │   │   │   ├── cascade_rcnn_r50_fpn_1x_coco.py
│   │   │   │   │   ├── cascade_rcnn_r50_fpn_20e_coco.py
│   │   │   │   │   ├── cascade_rcnn_x101_32x4d_fpn_1x_coco.py
│   │   │   │   │   ├── cascade_rcnn_x101_32x4d_fpn_20e_coco.py
│   │   │   │   │   ├── cascade_rcnn_x101_64x4d_fpn_1x_coco.py
│   │   │   │   │   ├── cascade_rcnn_x101_64x4d_fpn_20e_coco.py
│   │   │   │   │   └── metafile.yml
│   │   │   │   ├── cascade_rpn/
│   │   │   │   │   ├── README.md
│   │   │   │   │   ├── crpn_fast_rcnn_r50_caffe_fpn_1x_coco.py
│   │   │   │   │   ├── crpn_faster_rcnn_r50_caffe_fpn_1x_coco.py
│   │   │   │   │   ├── crpn_r50_caffe_fpn_1x_coco.py
│   │   │   │   │   └── metafile.yml
│   │   │   │   ├── centernet/
│   │   │   │   │   ├── README.md
│   │   │   │   │   ├── centernet_resnet18_140e_coco.py
│   │   │   │   │   ├── centernet_resnet18_dcnv2_140e_coco.py
│   │   │   │   │   └── metafile.yml
│   │   │   │   ├── centripetalnet/
│   │   │   │   │   ├── README.md
│   │   │   │   │   ├── centripetalnet_hourglass104_mstest_16x6_210e_coco.py
│   │   │   │   │   └── metafile.yml
│   │   │   │   ├── cityscapes/
│   │   │   │   │   ├── README.md
│   │   │   │   │   ├── faster_rcnn_r50_fpn_1x_cityscapes.py
│   │   │   │   │   └── mask_rcnn_r50_fpn_1x_cityscapes.py
│   │   │   │   ├── common/
│   │   │   │   │   ├── lsj_100e_coco_instance.py
│   │   │   │   │   ├── mstrain-poly_3x_coco_instance.py
│   │   │   │   │   ├── mstrain_3x_coco.py
│   │   │   │   │   ├── mstrain_3x_coco_instance.py
│   │   │   │   │   ├── ssj_270k_coco_instance.py
│   │   │   │   │   └── ssj_scp_270k_coco_instance.py
│   │   │   │   ├── cornernet/
│   │   │   │   │   ├── README.md
│   │   │   │   │   ├── cornernet_hourglass104_mstest_10x5_210e_coco.py
│   │   │   │   │   ├── cornernet_hourglass104_mstest_32x3_210e_coco.py
│   │   │   │   │   ├── cornernet_hourglass104_mstest_8x6_210e_coco.py
│   │   │   │   │   └── metafile.yml
│   │   │   │   ├── dcn/
│   │   │   │   │   ├── README.md
│   │   │   │   │   ├── cascade_mask_rcnn_r101_fpn_dconv_c3-c5_1x_coco.py
│   │   │   │   │   ├── cascade_mask_rcnn_r50_fpn_dconv_c3-c5_1x_coco.py
│   │   │   │   │   ├── cascade_mask_rcnn_x101_32x4d_fpn_dconv_c3-c5_1x_coco.py
│   │   │   │   │   ├── cascade_rcnn_r101_fpn_dconv_c3-c5_1x_coco.py
│   │   │   │   │   ├── cascade_rcnn_r50_fpn_dconv_c3-c5_1x_coco.py
│   │   │   │   │   ├── faster_rcnn_r101_fpn_dconv_c3-c5_1x_coco.py
│   │   │   │   │   ├── faster_rcnn_r50_fpn_dconv_c3-c5_1x_coco.py
│   │   │   │   │   ├── faster_rcnn_r50_fpn_dpool_1x_coco.py
│   │   │   │   │   ├── faster_rcnn_x101_32x4d_fpn_dconv_c3-c5_1x_coco.py
│   │   │   │   │   ├── mask_rcnn_r101_fpn_dconv_c3-c5_1x_coco.py
│   │   │   │   │   ├── mask_rcnn_r50_fpn_dconv_c3-c5_1x_coco.py
│   │   │   │   │   ├── mask_rcnn_r50_fpn_fp16_dconv_c3-c5_1x_coco.py
│   │   │   │   │   └── metafile.yml
│   │   │   │   ├── dcnv2/
│   │   │   │   │   ├── README.md
│   │   │   │   │   ├── faster_rcnn_r50_fpn_mdconv_c3-c5_1x_coco.py
│   │   │   │   │   ├── faster_rcnn_r50_fpn_mdconv_c3-c5_group4_1x_coco.py
│   │   │   │   │   ├── faster_rcnn_r50_fpn_mdpool_1x_coco.py
│   │   │   │   │   ├── mask_rcnn_r50_fpn_fp16_mdconv_c3-c5_1x_coco.py
│   │   │   │   │   ├── mask_rcnn_r50_fpn_mdconv_c3-c5_1x_coco.py
│   │   │   │   │   └── metafile.yml
│   │   │   │   ├── deepfashion/
│   │   │   │   │   ├── README.md
│   │   │   │   │   └── mask_rcnn_r50_fpn_15e_deepfashion.py
│   │   │   │   ├── deformable_detr/
│   │   │   │   │   ├── README.md
│   │   │   │   │   ├── deformable_detr_r50_16x2_50e_coco.py
│   │   │   │   │   ├── deformable_detr_refine_r50_16x2_50e_coco.py
│   │   │   │   │   ├── deformable_detr_twostage_refine_r50_16x2_50e_coco.py
│   │   │   │   │   └── metafile.yml
│   │   │   │   ├── detectors/
│   │   │   │   │   ├── README.md
│   │   │   │   │   ├── cascade_rcnn_r50_rfp_1x_coco.py
│   │   │   │   │   ├── cascade_rcnn_r50_sac_1x_coco.py
│   │   │   │   │   ├── detectors_cascade_rcnn_r50_1x_coco.py
│   │   │   │   │   ├── detectors_htc_r101_20e_coco.py
│   │   │   │   │   ├── detectors_htc_r50_1x_coco.py
│   │   │   │   │   ├── htc_r50_rfp_1x_coco.py
│   │   │   │   │   ├── htc_r50_sac_1x_coco.py
│   │   │   │   │   └── metafile.yml
│   │   │   │   ├── detr/
│   │   │   │   │   ├── README.md
│   │   │   │   │   ├── detr_r50_8x2_150e_coco.py
│   │   │   │   │   └── metafile.yml
│   │   │   │   ├── double_heads/
│   │   │   │   │   ├── README.md
│   │   │   │   │   ├── dh_faster_rcnn_r50_fpn_1x_coco.py
│   │   │   │   │   └── metafile.yml
│   │   │   │   ├── dyhead/
│   │   │   │   │   ├── README.md
│   │   │   │   │   ├── atss_r50_caffe_fpn_dyhead_1x_coco.py
│   │   │   │   │   ├── atss_r50_fpn_dyhead_1x_coco.py
│   │   │   │   │   └── metafile.yml
│   │   │   │   ├── dynamic_rcnn/
│   │   │   │   │   ├── README.md
│   │   │   │   │   ├── dynamic_rcnn_r50_fpn_1x_coco.py
│   │   │   │   │   └── metafile.yml
│   │   │   │   ├── efficientnet/
│   │   │   │   │   ├── README.md
│   │   │   │   │   ├── metafile.yml
│   │   │   │   │   └── retinanet_effb3_fpn_crop896_8x4_1x_coco.py
│   │   │   │   ├── empirical_attention/
│   │   │   │   │   ├── README.md
│   │   │   │   │   ├── faster_rcnn_r50_fpn_attention_0010_1x_coco.py
│   │   │   │   │   ├── faster_rcnn_r50_fpn_attention_0010_dcn_1x_coco.py
│   │   │   │   │   ├── faster_rcnn_r50_fpn_attention_1111_1x_coco.py
│   │   │   │   │   ├── faster_rcnn_r50_fpn_attention_1111_dcn_1x_coco.py
│   │   │   │   │   └── metafile.yml
│   │   │   │   ├── fast_rcnn/
│   │   │   │   │   ├── README.md
│   │   │   │   │   ├── fast_rcnn_r101_caffe_fpn_1x_coco.py
│   │   │   │   │   ├── fast_rcnn_r101_fpn_1x_coco.py
│   │   │   │   │   ├── fast_rcnn_r101_fpn_2x_coco.py
│   │   │   │   │   ├── fast_rcnn_r50_caffe_fpn_1x_coco.py
│   │   │   │   │   ├── fast_rcnn_r50_fpn_1x_coco.py
│   │   │   │   │   └── fast_rcnn_r50_fpn_2x_coco.py
│   │   │   │   ├── faster_rcnn/
│   │   │   │   │   ├── README.md
│   │   │   │   │   ├── faster_rcnn_r101_caffe_fpn_1x_coco.py
│   │   │   │   │   ├── faster_rcnn_r101_caffe_fpn_mstrain_3x_coco.py
│   │   │   │   │   ├── faster_rcnn_r101_fpn_1x_coco.py
│   │   │   │   │   ├── faster_rcnn_r101_fpn_2x_coco.py
│   │   │   │   │   ├── faster_rcnn_r101_fpn_mstrain_3x_coco.py
│   │   │   │   │   ├── faster_rcnn_r50_caffe_c4_1x_coco.py
│   │   │   │   │   ├── faster_rcnn_r50_caffe_c4_mstrain_1x_coco.py
│   │   │   │   │   ├── faster_rcnn_r50_caffe_dc5_1x_coco.py
│   │   │   │   │   ├── faster_rcnn_r50_caffe_dc5_mstrain_1x_coco.py
│   │   │   │   │   ├── faster_rcnn_r50_caffe_dc5_mstrain_3x_coco.py
│   │   │   │   │   ├── faster_rcnn_r50_caffe_fpn_1x_coco.py
│   │   │   │   │   ├── faster_rcnn_r50_caffe_fpn_90k_coco.py
│   │   │   │   │   ├── faster_rcnn_r50_caffe_fpn_mstrain_1x_coco-person-bicycle-car.py
│   │   │   │   │   ├── faster_rcnn_r50_caffe_fpn_mstrain_1x_coco-person.py
│   │   │   │   │   ├── faster_rcnn_r50_caffe_fpn_mstrain_1x_coco.py
│   │   │   │   │   ├── faster_rcnn_r50_caffe_fpn_mstrain_2x_coco.py
│   │   │   │   │   ├── faster_rcnn_r50_caffe_fpn_mstrain_3x_coco.py
│   │   │   │   │   ├── faster_rcnn_r50_caffe_fpn_mstrain_90k_coco.py
│   │   │   │   │   ├── faster_rcnn_r50_fpn_1x_coco.py
│   │   │   │   │   ├── faster_rcnn_r50_fpn_2x_coco.py
│   │   │   │   │   ├── faster_rcnn_r50_fpn_bounded_iou_1x_coco.py
│   │   │   │   │   ├── faster_rcnn_r50_fpn_ciou_1x_coco.py
│   │   │   │   │   ├── faster_rcnn_r50_fpn_fp16_1x_coco.py
│   │   │   │   │   ├── faster_rcnn_r50_fpn_giou_1x_coco.py
│   │   │   │   │   ├── faster_rcnn_r50_fpn_iou_1x_coco.py
│   │   │   │   │   ├── faster_rcnn_r50_fpn_mstrain_3x_coco.py
│   │   │   │   │   ├── faster_rcnn_r50_fpn_ohem_1x_coco.py
│   │   │   │   │   ├── faster_rcnn_r50_fpn_soft_nms_1x_coco.py
│   │   │   │   │   ├── faster_rcnn_r50_fpn_tnr-pretrain_1x_coco.py
│   │   │   │   │   ├── faster_rcnn_x101_32x4d_fpn_1x_coco.py
│   │   │   │   │   ├── faster_rcnn_x101_32x4d_fpn_2x_coco.py
│   │   │   │   │   ├── faster_rcnn_x101_32x4d_fpn_mstrain_3x_coco.py
│   │   │   │   │   ├── faster_rcnn_x101_32x8d_fpn_mstrain_3x_coco.py
│   │   │   │   │   ├── faster_rcnn_x101_64x4d_fpn_1x_coco.py
│   │   │   │   │   ├── faster_rcnn_x101_64x4d_fpn_2x_coco.py
│   │   │   │   │   ├── faster_rcnn_x101_64x4d_fpn_mstrain_3x_coco.py
│   │   │   │   │   └── metafile.yml
│   │   │   │   ├── fcos/
│   │   │   │   │   ├── README.md
│   │   │   │   │   ├── fcos_center-normbbox-centeronreg-giou_r50_caffe_fpn_gn-head_1x_coco.py
│   │   │   │   │   ├── fcos_center-normbbox-centeronreg-giou_r50_caffe_fpn_gn-head_dcn_1x_coco.py
│   │   │   │   │   ├── fcos_center_r50_caffe_fpn_gn-head_1x_coco.py
│   │   │   │   │   ├── fcos_r101_caffe_fpn_gn-head_1x_coco.py
│   │   │   │   │   ├── fcos_r101_caffe_fpn_gn-head_mstrain_640-800_2x_coco.py
│   │   │   │   │   ├── fcos_r50_caffe_fpn_gn-head_1x_coco.py
│   │   │   │   │   ├── fcos_r50_caffe_fpn_gn-head_4x4_1x_coco.py
│   │   │   │   │   ├── fcos_r50_caffe_fpn_gn-head_mstrain_640-800_2x_coco.py
│   │   │   │   │   ├── fcos_x101_64x4d_fpn_gn-head_mstrain_640-800_2x_coco.py
│   │   │   │   │   └── metafile.yml
│   │   │   │   ├── foveabox/
│   │   │   │   │   ├── README.md
│   │   │   │   │   ├── fovea_align_r101_fpn_gn-head_4x4_2x_coco.py
│   │   │   │   │   ├── fovea_align_r101_fpn_gn-head_mstrain_640-800_4x4_2x_coco.py
│   │   │   │   │   ├── fovea_align_r50_fpn_gn-head_4x4_2x_coco.py
│   │   │   │   │   ├── fovea_align_r50_fpn_gn-head_mstrain_640-800_4x4_2x_coco.py
│   │   │   │   │   ├── fovea_r101_fpn_4x4_1x_coco.py
│   │   │   │   │   ├── fovea_r101_fpn_4x4_2x_coco.py
│   │   │   │   │   ├── fovea_r50_fpn_4x4_1x_coco.py
│   │   │   │   │   ├── fovea_r50_fpn_4x4_2x_coco.py
│   │   │   │   │   └── metafile.yml
│   │   │   │   ├── fpg/
│   │   │   │   │   ├── README.md
│   │   │   │   │   ├── faster_rcnn_r50_fpg-chn128_crop640_50e_coco.py
│   │   │   │   │   ├── faster_rcnn_r50_fpg_crop640_50e_coco.py
│   │   │   │   │   ├── faster_rcnn_r50_fpn_crop640_50e_coco.py
│   │   │   │   │   ├── mask_rcnn_r50_fpg-chn128_crop640_50e_coco.py
│   │   │   │   │   ├── mask_rcnn_r50_fpg_crop640_50e_coco.py
│   │   │   │   │   ├── mask_rcnn_r50_fpn_crop640_50e_coco.py
│   │   │   │   │   ├── metafile.yml
│   │   │   │   │   ├── retinanet_r50_fpg-chn128_crop640_50e_coco.py
│   │   │   │   │   └── retinanet_r50_fpg_crop640_50e_coco.py
│   │   │   │   ├── free_anchor/
│   │   │   │   │   ├── README.md
│   │   │   │   │   ├── metafile.yml
│   │   │   │   │   ├── retinanet_free_anchor_r101_fpn_1x_coco.py
│   │   │   │   │   ├── retinanet_free_anchor_r50_fpn_1x_coco.py
│   │   │   │   │   └── retinanet_free_anchor_x101_32x4d_fpn_1x_coco.py
│   │   │   │   ├── fsaf/
│   │   │   │   │   ├── README.md
│   │   │   │   │   ├── fsaf_r101_fpn_1x_coco.py
│   │   │   │   │   ├── fsaf_r50_fpn_1x_coco.py
│   │   │   │   │   ├── fsaf_x101_64x4d_fpn_1x_coco.py
│   │   │   │   │   └── metafile.yml
│   │   │   │   ├── gcnet/
│   │   │   │   │   ├── README.md
│   │   │   │   │   ├── cascade_mask_rcnn_x101_32x4d_fpn_syncbn-backbone_1x_coco.py
│   │   │   │   │   ├── cascade_mask_rcnn_x101_32x4d_fpn_syncbn-backbone_dconv_c3-c5_1x_coco.py
│   │   │   │   │   ├── cascade_mask_rcnn_x101_32x4d_fpn_syncbn-backbone_dconv_c3-c5_r16_gcb_c3-c5_1x_coco.py
│   │   │   │   │   ├── cascade_mask_rcnn_x101_32x4d_fpn_syncbn-backbone_dconv_c3-c5_r4_gcb_c3-c5_1x_coco.py
│   │   │   │   │   ├── cascade_mask_rcnn_x101_32x4d_fpn_syncbn-backbone_r16_gcb_c3-c5_1x_coco.py
│   │   │   │   │   ├── cascade_mask_rcnn_x101_32x4d_fpn_syncbn-backbone_r4_gcb_c3-c5_1x_coco.py
│   │   │   │   │   ├── mask_rcnn_r101_fpn_r16_gcb_c3-c5_1x_coco.py
│   │   │   │   │   ├── mask_rcnn_r101_fpn_r4_gcb_c3-c5_1x_coco.py
│   │   │   │   │   ├── mask_rcnn_r101_fpn_syncbn-backbone_1x_coco.py
│   │   │   │   │   ├── mask_rcnn_r101_fpn_syncbn-backbone_r16_gcb_c3-c5_1x_coco.py
│   │   │   │   │   ├── mask_rcnn_r101_fpn_syncbn-backbone_r4_gcb_c3-c5_1x_coco.py
│   │   │   │   │   ├── mask_rcnn_r50_fpn_r16_gcb_c3-c5_1x_coco.py
│   │   │   │   │   ├── mask_rcnn_r50_fpn_r4_gcb_c3-c5_1x_coco.py
│   │   │   │   │   ├── mask_rcnn_r50_fpn_syncbn-backbone_1x_coco.py
│   │   │   │   │   ├── mask_rcnn_r50_fpn_syncbn-backbone_r16_gcb_c3-c5_1x_coco.py
│   │   │   │   │   ├── mask_rcnn_r50_fpn_syncbn-backbone_r4_gcb_c3-c5_1x_coco.py
│   │   │   │   │   ├── mask_rcnn_x101_32x4d_fpn_syncbn-backbone_1x_coco.py
│   │   │   │   │   ├── mask_rcnn_x101_32x4d_fpn_syncbn-backbone_r16_gcb_c3-c5_1x_coco.py
│   │   │   │   │   ├── mask_rcnn_x101_32x4d_fpn_syncbn-backbone_r4_gcb_c3-c5_1x_coco.py
│   │   │   │   │   └── metafile.yml
│   │   │   │   ├── gfl/
│   │   │   │   │   ├── README.md
│   │   │   │   │   ├── gfl_r101_fpn_dconv_c3-c5_mstrain_2x_coco.py
│   │   │   │   │   ├── gfl_r101_fpn_mstrain_2x_coco.py
│   │   │   │   │   ├── gfl_r50_fpn_1x_coco.py
│   │   │   │   │   ├── gfl_r50_fpn_mstrain_2x_coco.py
│   │   │   │   │   ├── gfl_x101_32x4d_fpn_dconv_c4-c5_mstrain_2x_coco.py
│   │   │   │   │   ├── gfl_x101_32x4d_fpn_mstrain_2x_coco.py
│   │   │   │   │   └── metafile.yml
│   │   │   │   ├── ghm/
│   │   │   │   │   ├── README.md
│   │   │   │   │   ├── metafile.yml
│   │   │   │   │   ├── retinanet_ghm_r101_fpn_1x_coco.py
│   │   │   │   │   ├── retinanet_ghm_r50_fpn_1x_coco.py
│   │   │   │   │   ├── retinanet_ghm_x101_32x4d_fpn_1x_coco.py
│   │   │   │   │   └── retinanet_ghm_x101_64x4d_fpn_1x_coco.py
│   │   │   │   ├── gn/
│   │   │   │   │   ├── README.md
│   │   │   │   │   ├── mask_rcnn_r101_fpn_gn-all_2x_coco.py
│   │   │   │   │   ├── mask_rcnn_r101_fpn_gn-all_3x_coco.py
│   │   │   │   │   ├── mask_rcnn_r50_fpn_gn-all_2x_coco.py
│   │   │   │   │   ├── mask_rcnn_r50_fpn_gn-all_3x_coco.py
│   │   │   │   │   ├── mask_rcnn_r50_fpn_gn-all_contrib_2x_coco.py
│   │   │   │   │   ├── mask_rcnn_r50_fpn_gn-all_contrib_3x_coco.py
│   │   │   │   │   └── metafile.yml
│   │   │   │   ├── gn+ws/
│   │   │   │   │   ├── README.md
│   │   │   │   │   ├── faster_rcnn_r101_fpn_gn_ws-all_1x_coco.py
│   │   │   │   │   ├── faster_rcnn_r50_fpn_gn_ws-all_1x_coco.py
│   │   │   │   │   ├── faster_rcnn_x101_32x4d_fpn_gn_ws-all_1x_coco.py
│   │   │   │   │   ├── faster_rcnn_x50_32x4d_fpn_gn_ws-all_1x_coco.py
│   │   │   │   │   ├── mask_rcnn_r101_fpn_gn_ws-all_20_23_24e_coco.py
│   │   │   │   │   ├── mask_rcnn_r101_fpn_gn_ws-all_2x_coco.py
│   │   │   │   │   ├── mask_rcnn_r50_fpn_gn_ws-all_20_23_24e_coco.py
│   │   │   │   │   ├── mask_rcnn_r50_fpn_gn_ws-all_2x_coco.py
│   │   │   │   │   ├── mask_rcnn_x101_32x4d_fpn_gn_ws-all_20_23_24e_coco.py
│   │   │   │   │   ├── mask_rcnn_x101_32x4d_fpn_gn_ws-all_2x_coco.py
│   │   │   │   │   ├── mask_rcnn_x50_32x4d_fpn_gn_ws-all_20_23_24e_coco.py
│   │   │   │   │   ├── mask_rcnn_x50_32x4d_fpn_gn_ws-all_2x_coco.py
│   │   │   │   │   └── metafile.yml
│   │   │   │   ├── grid_rcnn/
│   │   │   │   │   ├── README.md
│   │   │   │   │   ├── grid_rcnn_r101_fpn_gn-head_2x_coco.py
│   │   │   │   │   ├── grid_rcnn_r50_fpn_gn-head_1x_coco.py
│   │   │   │   │   ├── grid_rcnn_r50_fpn_gn-head_2x_coco.py
│   │   │   │   │   ├── grid_rcnn_x101_32x4d_fpn_gn-head_2x_coco.py
│   │   │   │   │   ├── grid_rcnn_x101_64x4d_fpn_gn-head_2x_coco.py
│   │   │   │   │   └── metafile.yml
│   │   │   │   ├── groie/
│   │   │   │   │   ├── README.md
│   │   │   │   │   ├── faster_rcnn_r50_fpn_groie_1x_coco.py
│   │   │   │   │   ├── grid_rcnn_r50_fpn_gn-head_groie_1x_coco.py
│   │   │   │   │   ├── mask_rcnn_r101_fpn_syncbn-backbone_r4_gcb_c3-c5_groie_1x_coco.py
│   │   │   │   │   ├── mask_rcnn_r50_fpn_groie_1x_coco.py
│   │   │   │   │   ├── mask_rcnn_r50_fpn_syncbn-backbone_r4_gcb_c3-c5_groie_1x_coco.py
│   │   │   │   │   └── metafile.yml
│   │   │   │   ├── guided_anchoring/
│   │   │   │   │   ├── README.md
│   │   │   │   │   ├── ga_fast_r50_caffe_fpn_1x_coco.py
│   │   │   │   │   ├── ga_faster_r101_caffe_fpn_1x_coco.py
│   │   │   │   │   ├── ga_faster_r50_caffe_fpn_1x_coco.py
│   │   │   │   │   ├── ga_faster_r50_fpn_1x_coco.py
│   │   │   │   │   ├── ga_faster_x101_32x4d_fpn_1x_coco.py
│   │   │   │   │   ├── ga_faster_x101_64x4d_fpn_1x_coco.py
│   │   │   │   │   ├── ga_retinanet_r101_caffe_fpn_1x_coco.py
│   │   │   │   │   ├── ga_retinanet_r101_caffe_fpn_mstrain_2x.py
│   │   │   │   │   ├── ga_retinanet_r50_caffe_fpn_1x_coco.py
│   │   │   │   │   ├── ga_retinanet_r50_fpn_1x_coco.py
│   │   │   │   │   ├── ga_retinanet_x101_32x4d_fpn_1x_coco.py
│   │   │   │   │   ├── ga_retinanet_x101_64x4d_fpn_1x_coco.py
│   │   │   │   │   ├── ga_rpn_r101_caffe_fpn_1x_coco.py
│   │   │   │   │   ├── ga_rpn_r50_caffe_fpn_1x_coco.py
│   │   │   │   │   ├── ga_rpn_r50_fpn_1x_coco.py
│   │   │   │   │   ├── ga_rpn_x101_32x4d_fpn_1x_coco.py
│   │   │   │   │   ├── ga_rpn_x101_64x4d_fpn_1x_coco.py
│   │   │   │   │   └── metafile.yml
│   │   │   │   ├── hrnet/
│   │   │   │   │   ├── README.md
│   │   │   │   │   ├── cascade_mask_rcnn_hrnetv2p_w18_20e_coco.py
│   │   │   │   │   ├── cascade_mask_rcnn_hrnetv2p_w32_20e_coco.py
│   │   │   │   │   ├── cascade_mask_rcnn_hrnetv2p_w40_20e_coco.py
│   │   │   │   │   ├── cascade_rcnn_hrnetv2p_w18_20e_coco.py
│   │   │   │   │   ├── cascade_rcnn_hrnetv2p_w32_20e_coco.py
│   │   │   │   │   ├── cascade_rcnn_hrnetv2p_w40_20e_coco.py
│   │   │   │   │   ├── faster_rcnn_hrnetv2p_w18_1x_coco.py
│   │   │   │   │   ├── faster_rcnn_hrnetv2p_w18_2x_coco.py
│   │   │   │   │   ├── faster_rcnn_hrnetv2p_w32_1x_coco.py
│   │   │   │   │   ├── faster_rcnn_hrnetv2p_w32_2x_coco.py
│   │   │   │   │   ├── faster_rcnn_hrnetv2p_w40_1x_coco.py
│   │   │   │   │   ├── faster_rcnn_hrnetv2p_w40_2x_coco.py
│   │   │   │   │   ├── fcos_hrnetv2p_w18_gn-head_4x4_1x_coco.py
│   │   │   │   │   ├── fcos_hrnetv2p_w18_gn-head_4x4_2x_coco.py
│   │   │   │   │   ├── fcos_hrnetv2p_w18_gn-head_mstrain_640-800_4x4_2x_coco.py
│   │   │   │   │   ├── fcos_hrnetv2p_w32_gn-head_4x4_1x_coco.py
│   │   │   │   │   ├── fcos_hrnetv2p_w32_gn-head_4x4_2x_coco.py
│   │   │   │   │   ├── fcos_hrnetv2p_w32_gn-head_mstrain_640-800_4x4_2x_coco.py
│   │   │   │   │   ├── fcos_hrnetv2p_w40_gn-head_mstrain_640-800_4x4_2x_coco.py
│   │   │   │   │   ├── htc_hrnetv2p_w18_20e_coco.py
│   │   │   │   │   ├── htc_hrnetv2p_w32_20e_coco.py
│   │   │   │   │   ├── htc_hrnetv2p_w40_20e_coco.py
│   │   │   │   │   ├── htc_hrnetv2p_w40_28e_coco.py
│   │   │   │   │   ├── htc_x101_64x4d_fpn_16x1_28e_coco.py
│   │   │   │   │   ├── mask_rcnn_hrnetv2p_w18_1x_coco.py
│   │   │   │   │   ├── mask_rcnn_hrnetv2p_w18_2x_coco.py
│   │   │   │   │   ├── mask_rcnn_hrnetv2p_w32_1x_coco.py
│   │   │   │   │   ├── mask_rcnn_hrnetv2p_w32_2x_coco.py
│   │   │   │   │   ├── mask_rcnn_hrnetv2p_w40_1x_coco.py
│   │   │   │   │   ├── mask_rcnn_hrnetv2p_w40_2x_coco.py
│   │   │   │   │   └── metafile.yml
│   │   │   │   ├── htc/
│   │   │   │   │   ├── README.md
│   │   │   │   │   ├── htc_r101_fpn_20e_coco.py
│   │   │   │   │   ├── htc_r50_fpn_1x_coco.py
│   │   │   │   │   ├── htc_r50_fpn_20e_coco.py
│   │   │   │   │   ├── htc_without_semantic_r50_fpn_1x_coco.py
│   │   │   │   │   ├── htc_x101_32x4d_fpn_16x1_20e_coco.py
│   │   │   │   │   ├── htc_x101_64x4d_fpn_16x1_20e_coco.py
│   │   │   │   │   ├── htc_x101_64x4d_fpn_dconv_c3-c5_mstrain_400_1400_16x1_20e_coco.py
│   │   │   │   │   └── metafile.yml
│   │   │   │   ├── instaboost/
│   │   │   │   │   ├── README.md
│   │   │   │   │   ├── cascade_mask_rcnn_r101_fpn_instaboost_4x_coco.py
│   │   │   │   │   ├── cascade_mask_rcnn_r50_fpn_instaboost_4x_coco.py
│   │   │   │   │   ├── cascade_mask_rcnn_x101_64x4d_fpn_instaboost_4x_coco.py
│   │   │   │   │   ├── mask_rcnn_r101_fpn_instaboost_4x_coco.py
│   │   │   │   │   ├── mask_rcnn_r50_fpn_instaboost_4x_coco.py
│   │   │   │   │   ├── mask_rcnn_x101_64x4d_fpn_instaboost_4x_coco.py
│   │   │   │   │   └── metafile.yml
│   │   │   │   ├── lad/
│   │   │   │   │   ├── README.md
│   │   │   │   │   ├── lad_r101_paa_r50_fpn_coco_1x.py
│   │   │   │   │   ├── lad_r50_paa_r101_fpn_coco_1x.py
│   │   │   │   │   └── metafile.yml
│   │   │   │   ├── ld/
│   │   │   │   │   ├── README.md
│   │   │   │   │   ├── ld_r101_gflv1_r101dcn_fpn_coco_2x.py
│   │   │   │   │   ├── ld_r18_gflv1_r101_fpn_coco_1x.py
│   │   │   │   │   ├── ld_r34_gflv1_r101_fpn_coco_1x.py
│   │   │   │   │   ├── ld_r50_gflv1_r101_fpn_coco_1x.py
│   │   │   │   │   └── metafile.yml
│   │   │   │   ├── legacy_1.x/
│   │   │   │   │   ├── README.md
│   │   │   │   │   ├── cascade_mask_rcnn_r50_fpn_1x_coco_v1.py
│   │   │   │   │   ├── faster_rcnn_r50_fpn_1x_coco_v1.py
│   │   │   │   │   ├── mask_rcnn_r50_fpn_1x_coco_v1.py
│   │   │   │   │   ├── retinanet_r50_caffe_fpn_1x_coco_v1.py
│   │   │   │   │   ├── retinanet_r50_fpn_1x_coco_v1.py
│   │   │   │   │   └── ssd300_coco_v1.py
│   │   │   │   ├── libra_rcnn/
│   │   │   │   │   ├── README.md
│   │   │   │   │   ├── libra_fast_rcnn_r50_fpn_1x_coco.py
│   │   │   │   │   ├── libra_faster_rcnn_r101_fpn_1x_coco.py
│   │   │   │   │   ├── libra_faster_rcnn_r50_fpn_1x_coco.py
│   │   │   │   │   ├── libra_faster_rcnn_x101_64x4d_fpn_1x_coco.py
│   │   │   │   │   ├── libra_retinanet_r50_fpn_1x_coco.py
│   │   │   │   │   └── metafile.yml
│   │   │   │   ├── lvis/
│   │   │   │   │   ├── README.md
│   │   │   │   │   ├── mask_rcnn_r101_fpn_sample1e-3_mstrain_1x_lvis_v1.py
│   │   │   │   │   ├── mask_rcnn_r101_fpn_sample1e-3_mstrain_2x_lvis_v0.5.py
│   │   │   │   │   ├── mask_rcnn_r50_fpn_sample1e-3_mstrain_1x_lvis_v1.py
│   │   │   │   │   ├── mask_rcnn_r50_fpn_sample1e-3_mstrain_2x_lvis_v0.5.py
│   │   │   │   │   ├── mask_rcnn_x101_32x4d_fpn_sample1e-3_mstrain_1x_lvis_v1.py
│   │   │   │   │   ├── mask_rcnn_x101_32x4d_fpn_sample1e-3_mstrain_2x_lvis_v0.5.py
│   │   │   │   │   ├── mask_rcnn_x101_64x4d_fpn_sample1e-3_mstrain_1x_lvis_v1.py
│   │   │   │   │   └── mask_rcnn_x101_64x4d_fpn_sample1e-3_mstrain_2x_lvis_v0.5.py
│   │   │   │   ├── mask2former/
│   │   │   │   │   ├── README.md
│   │   │   │   │   ├── mask2former_r101_lsj_8x2_50e_coco.py
│   │   │   │   │   ├── mask2former_r50_lsj_8x2_50e_coco.py
│   │   │   │   │   ├── mask2former_swin-b-p4-w12-384-in21k_lsj_8x2_50e_coco.py
│   │   │   │   │   ├── mask2former_swin-b-p4-w12-384_lsj_8x2_50e_coco.py
│   │   │   │   │   ├── mask2former_swin-l-p4-w12-384-in21k_lsj_16x1_100e_coco.py
│   │   │   │   │   ├── mask2former_swin-s-p4-w7-224_lsj_8x2_50e_coco.py
│   │   │   │   │   ├── mask2former_swin-t-p4-w7-224_lsj_8x2_50e_coco.py
│   │   │   │   │   └── metafile.yml
│   │   │   │   ├── mask_rcnn/
│   │   │   │   │   ├── README.md
│   │   │   │   │   ├── mask_rcnn_r101_caffe_fpn_1x_coco.py
│   │   │   │   │   ├── mask_rcnn_r101_caffe_fpn_mstrain-poly_3x_coco.py
│   │   │   │   │   ├── mask_rcnn_r101_fpn_1x_coco.py
│   │   │   │   │   ├── mask_rcnn_r101_fpn_2x_coco.py
│   │   │   │   │   ├── mask_rcnn_r101_fpn_mstrain-poly_3x_coco.py
│   │   │   │   │   ├── mask_rcnn_r50_caffe_c4_1x_coco.py
│   │   │   │   │   ├── mask_rcnn_r50_caffe_fpn_1x_coco.py
│   │   │   │   │   ├── mask_rcnn_r50_caffe_fpn_mstrain-poly_1x_coco.py
│   │   │   │   │   ├── mask_rcnn_r50_caffe_fpn_mstrain-poly_2x_coco.py
│   │   │   │   │   ├── mask_rcnn_r50_caffe_fpn_mstrain-poly_3x_coco.py
│   │   │   │   │   ├── mask_rcnn_r50_caffe_fpn_mstrain_1x_coco.py
│   │   │   │   │   ├── mask_rcnn_r50_caffe_fpn_poly_1x_coco_v1.py
│   │   │   │   │   ├── mask_rcnn_r50_fpn_1x_coco.py
│   │   │   │   │   ├── mask_rcnn_r50_fpn_2x_coco.py
│   │   │   │   │   ├── mask_rcnn_r50_fpn_fp16_1x_coco.py
│   │   │   │   │   ├── mask_rcnn_r50_fpn_mstrain-poly_3x_coco.py
│   │   │   │   │   ├── mask_rcnn_r50_fpn_poly_1x_coco.py
│   │   │   │   │   ├── mask_rcnn_x101_32x4d_fpn_1x_coco.py
│   │   │   │   │   ├── mask_rcnn_x101_32x4d_fpn_2x_coco.py
│   │   │   │   │   ├── mask_rcnn_x101_32x4d_fpn_mstrain-poly_3x_coco.py
│   │   │   │   │   ├── mask_rcnn_x101_32x8d_fpn_1x_coco.py
│   │   │   │   │   ├── mask_rcnn_x101_32x8d_fpn_mstrain-poly_1x_coco.py
│   │   │   │   │   ├── mask_rcnn_x101_32x8d_fpn_mstrain-poly_3x_coco.py
│   │   │   │   │   ├── mask_rcnn_x101_64x4d_fpn_1x_coco.py
│   │   │   │   │   ├── mask_rcnn_x101_64x4d_fpn_2x_coco.py
│   │   │   │   │   ├── mask_rcnn_x101_64x4d_fpn_mstrain-poly_3x_coco.py
│   │   │   │   │   └── metafile.yml
│   │   │   │   ├── maskformer/
│   │   │   │   │   ├── README.md
│   │   │   │   │   ├── maskformer_r50_mstrain_16x1_75e_coco.py
│   │   │   │   │   ├── maskformer_swin-l-p4-w12_mstrain_64x1_300e_coco.py
│   │   │   │   │   └── metafile.yml
│   │   │   │   ├── ms_rcnn/
│   │   │   │   │   ├── README.md
│   │   │   │   │   ├── metafile.yml
│   │   │   │   │   ├── ms_rcnn_r101_caffe_fpn_1x_coco.py
│   │   │   │   │   ├── ms_rcnn_r101_caffe_fpn_2x_coco.py
│   │   │   │   │   ├── ms_rcnn_r50_caffe_fpn_1x_coco.py
│   │   │   │   │   ├── ms_rcnn_r50_caffe_fpn_2x_coco.py
│   │   │   │   │   ├── ms_rcnn_r50_fpn_1x_coco.py
│   │   │   │   │   ├── ms_rcnn_x101_32x4d_fpn_1x_coco.py
│   │   │   │   │   ├── ms_rcnn_x101_64x4d_fpn_1x_coco.py
│   │   │   │   │   └── ms_rcnn_x101_64x4d_fpn_2x_coco.py
│   │   │   │   ├── nas_fcos/
│   │   │   │   │   ├── README.md
│   │   │   │   │   ├── metafile.yml
│   │   │   │   │   ├── nas_fcos_fcoshead_r50_caffe_fpn_gn-head_4x4_1x_coco.py
│   │   │   │   │   └── nas_fcos_nashead_r50_caffe_fpn_gn-head_4x4_1x_coco.py
│   │   │   │   ├── nas_fpn/
│   │   │   │   │   ├── README.md
│   │   │   │   │   ├── metafile.yml
│   │   │   │   │   ├── retinanet_r50_fpn_crop640_50e_coco.py
│   │   │   │   │   └── retinanet_r50_nasfpn_crop640_50e_coco.py
│   │   │   │   ├── openimages/
│   │   │   │   │   ├── README.md
│   │   │   │   │   ├── faster_rcnn_r50_fpn_32x2_1x_openimages.py
│   │   │   │   │   ├── faster_rcnn_r50_fpn_32x2_1x_openimages_challenge.py
│   │   │   │   │   ├── faster_rcnn_r50_fpn_32x2_cas_1x_openimages.py
│   │   │   │   │   ├── faster_rcnn_r50_fpn_32x2_cas_1x_openimages_challenge.py
│   │   │   │   │   ├── metafile.yml
│   │   │   │   │   ├── retinanet_r50_fpn_32x2_1x_openimages.py
│   │   │   │   │   └── ssd300_32x8_36e_openimages.py
│   │   │   │   ├── paa/
│   │   │   │   │   ├── README.md
│   │   │   │   │   ├── metafile.yml
│   │   │   │   │   ├── paa_r101_fpn_1x_coco.py
│   │   │   │   │   ├── paa_r101_fpn_2x_coco.py
│   │   │   │   │   ├── paa_r101_fpn_mstrain_3x_coco.py
│   │   │   │   │   ├── paa_r50_fpn_1.5x_coco.py
│   │   │   │   │   ├── paa_r50_fpn_1x_coco.py
│   │   │   │   │   ├── paa_r50_fpn_2x_coco.py
│   │   │   │   │   └── paa_r50_fpn_mstrain_3x_coco.py
│   │   │   │   ├── pafpn/
│   │   │   │   │   ├── README.md
│   │   │   │   │   ├── faster_rcnn_r50_pafpn_1x_coco.py
│   │   │   │   │   └── metafile.yml
│   │   │   │   ├── panoptic_fpn/
│   │   │   │   │   ├── README.md
│   │   │   │   │   ├── metafile.yml
│   │   │   │   │   ├── panoptic_fpn_r101_fpn_1x_coco.py
│   │   │   │   │   ├── panoptic_fpn_r101_fpn_mstrain_3x_coco.py
│   │   │   │   │   ├── panoptic_fpn_r50_fpn_1x_coco.py
│   │   │   │   │   └── panoptic_fpn_r50_fpn_mstrain_3x_coco.py
│   │   │   │   ├── pascal_voc/
│   │   │   │   │   ├── README.md
│   │   │   │   │   ├── faster_rcnn_r50_caffe_c4_mstrain_18k_voc0712.py
│   │   │   │   │   ├── faster_rcnn_r50_fpn_1x_voc0712.py
│   │   │   │   │   ├── faster_rcnn_r50_fpn_1x_voc0712_cocofmt.py
│   │   │   │   │   ├── retinanet_r50_fpn_1x_voc0712.py
│   │   │   │   │   ├── ssd300_voc0712.py
│   │   │   │   │   └── ssd512_voc0712.py
│   │   │   │   ├── pisa/
│   │   │   │   │   ├── README.md
│   │   │   │   │   ├── metafile.yml
│   │   │   │   │   ├── pisa_faster_rcnn_r50_fpn_1x_coco.py
│   │   │   │   │   ├── pisa_faster_rcnn_x101_32x4d_fpn_1x_coco.py
│   │   │   │   │   ├── pisa_mask_rcnn_r50_fpn_1x_coco.py
│   │   │   │   │   ├── pisa_mask_rcnn_x101_32x4d_fpn_1x_coco.py
│   │   │   │   │   ├── pisa_retinanet_r50_fpn_1x_coco.py
│   │   │   │   │   ├── pisa_retinanet_x101_32x4d_fpn_1x_coco.py
│   │   │   │   │   ├── pisa_ssd300_coco.py
│   │   │   │   │   └── pisa_ssd512_coco.py
│   │   │   │   ├── point_rend/
│   │   │   │   │   ├── README.md
│   │   │   │   │   ├── metafile.yml
│   │   │   │   │   ├── point_rend_r50_caffe_fpn_mstrain_1x_coco.py
│   │   │   │   │   └── point_rend_r50_caffe_fpn_mstrain_3x_coco.py
│   │   │   │   ├── pvt/
│   │   │   │   │   ├── README.md
│   │   │   │   │   ├── metafile.yml
│   │   │   │   │   ├── retinanet_pvt-l_fpn_1x_coco.py
│   │   │   │   │   ├── retinanet_pvt-m_fpn_1x_coco.py
│   │   │   │   │   ├── retinanet_pvt-s_fpn_1x_coco.py
│   │   │   │   │   ├── retinanet_pvt-t_fpn_1x_coco.py
│   │   │   │   │   ├── retinanet_pvtv2-b0_fpn_1x_coco.py
│   │   │   │   │   ├── retinanet_pvtv2-b1_fpn_1x_coco.py
│   │   │   │   │   ├── retinanet_pvtv2-b2_fpn_1x_coco.py
│   │   │   │   │   ├── retinanet_pvtv2-b3_fpn_1x_coco.py
│   │   │   │   │   ├── retinanet_pvtv2-b4_fpn_1x_coco.py
│   │   │   │   │   └── retinanet_pvtv2-b5_fpn_1x_coco.py
│   │   │   │   ├── queryinst/
│   │   │   │   │   ├── README.md
│   │   │   │   │   ├── metafile.yml
│   │   │   │   │   ├── queryinst_r101_fpn_300_proposals_crop_mstrain_480-800_3x_coco.py
│   │   │   │   │   ├── queryinst_r101_fpn_mstrain_480-800_3x_coco.py
│   │   │   │   │   ├── queryinst_r50_fpn_1x_coco.py
│   │   │   │   │   ├── queryinst_r50_fpn_300_proposals_crop_mstrain_480-800_3x_coco.py
│   │   │   │   │   └── queryinst_r50_fpn_mstrain_480-800_3x_coco.py
│   │   │   │   ├── regnet/
│   │   │   │   │   ├── README.md
│   │   │   │   │   ├── cascade_mask_rcnn_regnetx-1.6GF_fpn_mstrain_3x_coco.py
│   │   │   │   │   ├── cascade_mask_rcnn_regnetx-3.2GF_fpn_mstrain_3x_coco.py
│   │   │   │   │   ├── cascade_mask_rcnn_regnetx-400MF_fpn_mstrain_3x_coco.py
│   │   │   │   │   ├── cascade_mask_rcnn_regnetx-4GF_fpn_mstrain_3x_coco.py
│   │   │   │   │   ├── cascade_mask_rcnn_regnetx-800MF_fpn_mstrain_3x_coco.py
│   │   │   │   │   ├── faster_rcnn_regnetx-1.6GF_fpn_mstrain_3x_coco.py
│   │   │   │   │   ├── faster_rcnn_regnetx-3.2GF_fpn_1x_coco.py
│   │   │   │   │   ├── faster_rcnn_regnetx-3.2GF_fpn_2x_coco.py
│   │   │   │   │   ├── faster_rcnn_regnetx-3.2GF_fpn_mstrain_3x_coco.py
│   │   │   │   │   ├── faster_rcnn_regnetx-400MF_fpn_mstrain_3x_coco.py
│   │   │   │   │   ├── faster_rcnn_regnetx-4GF_fpn_mstrain_3x_coco.py
│   │   │   │   │   ├── faster_rcnn_regnetx-800MF_fpn_mstrain_3x_coco.py
│   │   │   │   │   ├── mask_rcnn_regnetx-1.6GF_fpn_mstrain-poly_3x_coco.py
│   │   │   │   │   ├── mask_rcnn_regnetx-12GF_fpn_1x_coco.py
│   │   │   │   │   ├── mask_rcnn_regnetx-3.2GF_fpn_1x_coco.py
│   │   │   │   │   ├── mask_rcnn_regnetx-3.2GF_fpn_mdconv_c3-c5_1x_coco.py
│   │   │   │   │   ├── mask_rcnn_regnetx-3.2GF_fpn_mstrain_3x_coco.py
│   │   │   │   │   ├── mask_rcnn_regnetx-400MF_fpn_mstrain-poly_3x_coco.py
│   │   │   │   │   ├── mask_rcnn_regnetx-4GF_fpn_1x_coco.py
│   │   │   │   │   ├── mask_rcnn_regnetx-4GF_fpn_mstrain-poly_3x_coco.py
│   │   │   │   │   ├── mask_rcnn_regnetx-6.4GF_fpn_1x_coco.py
│   │   │   │   │   ├── mask_rcnn_regnetx-800MF_fpn_mstrain-poly_3x_coco.py
│   │   │   │   │   ├── mask_rcnn_regnetx-8GF_fpn_1x_coco.py
│   │   │   │   │   ├── metafile.yml
│   │   │   │   │   ├── retinanet_regnetx-1.6GF_fpn_1x_coco.py
│   │   │   │   │   ├── retinanet_regnetx-3.2GF_fpn_1x_coco.py
│   │   │   │   │   └── retinanet_regnetx-800MF_fpn_1x_coco.py
│   │   │   │   ├── reppoints/
│   │   │   │   │   ├── README.md
│   │   │   │   │   ├── bbox_r50_grid_center_fpn_gn-neck+head_1x_coco.py
│   │   │   │   │   ├── bbox_r50_grid_fpn_gn-neck+head_1x_coco.py
│   │   │   │   │   ├── metafile.yml
│   │   │   │   │   ├── reppoints_minmax_r50_fpn_gn-neck+head_1x_coco.py
│   │   │   │   │   ├── reppoints_moment_r101_fpn_dconv_c3-c5_gn-neck+head_2x_coco.py
│   │   │   │   │   ├── reppoints_moment_r101_fpn_gn-neck+head_2x_coco.py
│   │   │   │   │   ├── reppoints_moment_r50_fpn_1x_coco.py
│   │   │   │   │   ├── reppoints_moment_r50_fpn_gn-neck+head_1x_coco.py
│   │   │   │   │   ├── reppoints_moment_r50_fpn_gn-neck+head_2x_coco.py
│   │   │   │   │   ├── reppoints_moment_x101_fpn_dconv_c3-c5_gn-neck+head_2x_coco.py
│   │   │   │   │   └── reppoints_partial_minmax_r50_fpn_gn-neck+head_1x_coco.py
│   │   │   │   ├── res2net/
│   │   │   │   │   ├── README.md
│   │   │   │   │   ├── cascade_mask_rcnn_r2_101_fpn_20e_coco.py
│   │   │   │   │   ├── cascade_rcnn_r2_101_fpn_20e_coco.py
│   │   │   │   │   ├── faster_rcnn_r2_101_fpn_2x_coco.py
│   │   │   │   │   ├── htc_r2_101_fpn_20e_coco.py
│   │   │   │   │   ├── mask_rcnn_r2_101_fpn_2x_coco.py
│   │   │   │   │   └── metafile.yml
│   │   │   │   ├── resnest/
│   │   │   │   │   ├── README.md
│   │   │   │   │   ├── cascade_mask_rcnn_s101_fpn_syncbn-backbone+head_mstrain_1x_coco.py
│   │   │   │   │   ├── cascade_mask_rcnn_s50_fpn_syncbn-backbone+head_mstrain_1x_coco.py
│   │   │   │   │   ├── cascade_rcnn_s101_fpn_syncbn-backbone+head_mstrain-range_1x_coco.py
│   │   │   │   │   ├── cascade_rcnn_s50_fpn_syncbn-backbone+head_mstrain-range_1x_coco.py
│   │   │   │   │   ├── faster_rcnn_s101_fpn_syncbn-backbone+head_mstrain-range_1x_coco.py
│   │   │   │   │   ├── faster_rcnn_s50_fpn_syncbn-backbone+head_mstrain-range_1x_coco.py
│   │   │   │   │   ├── mask_rcnn_s101_fpn_syncbn-backbone+head_mstrain_1x_coco.py
│   │   │   │   │   ├── mask_rcnn_s50_fpn_syncbn-backbone+head_mstrain_1x_coco.py
│   │   │   │   │   └── metafile.yml
│   │   │   │   ├── resnet_strikes_back/
│   │   │   │   │   ├── README.md
│   │   │   │   │   ├── cascade_mask_rcnn_r50_fpn_rsb-pretrain_1x_coco.py
│   │   │   │   │   ├── faster_rcnn_r50_fpn_rsb-pretrain_1x_coco.py
│   │   │   │   │   ├── mask_rcnn_r50_fpn_rsb-pretrain_1x_coco.py
│   │   │   │   │   ├── metafile.yml
│   │   │   │   │   └── retinanet_r50_fpn_rsb-pretrain_1x_coco.py
│   │   │   │   ├── retinanet/
│   │   │   │   │   ├── README.md
│   │   │   │   │   ├── metafile.yml
│   │   │   │   │   ├── retinanet_r101_caffe_fpn_1x_coco.py
│   │   │   │   │   ├── retinanet_r101_caffe_fpn_mstrain_3x_coco.py
│   │   │   │   │   ├── retinanet_r101_fpn_1x_coco.py
│   │   │   │   │   ├── retinanet_r101_fpn_2x_coco.py
│   │   │   │   │   ├── retinanet_r101_fpn_mstrain_640-800_3x_coco.py
│   │   │   │   │   ├── retinanet_r18_fpn_1x8_1x_coco.py
│   │   │   │   │   ├── retinanet_r18_fpn_1x_coco.py
│   │   │   │   │   ├── retinanet_r50_caffe_fpn_1x_coco.py
│   │   │   │   │   ├── retinanet_r50_caffe_fpn_mstrain_1x_coco.py
│   │   │   │   │   ├── retinanet_r50_caffe_fpn_mstrain_2x_coco.py
│   │   │   │   │   ├── retinanet_r50_caffe_fpn_mstrain_3x_coco.py
│   │   │   │   │   ├── retinanet_r50_fpn_1x_coco.py
│   │   │   │   │   ├── retinanet_r50_fpn_2x_coco.py
│   │   │   │   │   ├── retinanet_r50_fpn_90k_coco.py
│   │   │   │   │   ├── retinanet_r50_fpn_fp16_1x_coco.py
│   │   │   │   │   ├── retinanet_r50_fpn_mstrain_640-800_3x_coco.py
│   │   │   │   │   ├── retinanet_x101_32x4d_fpn_1x_coco.py
│   │   │   │   │   ├── retinanet_x101_32x4d_fpn_2x_coco.py
│   │   │   │   │   ├── retinanet_x101_64x4d_fpn_1x_coco.py
│   │   │   │   │   ├── retinanet_x101_64x4d_fpn_2x_coco.py
│   │   │   │   │   └── retinanet_x101_64x4d_fpn_mstrain_640-800_3x_coco.py
│   │   │   │   ├── rpn/
│   │   │   │   │   ├── README.md
│   │   │   │   │   ├── rpn_r101_caffe_fpn_1x_coco.py
│   │   │   │   │   ├── rpn_r101_fpn_1x_coco.py
│   │   │   │   │   ├── rpn_r101_fpn_2x_coco.py
│   │   │   │   │   ├── rpn_r50_caffe_c4_1x_coco.py
│   │   │   │   │   ├── rpn_r50_caffe_fpn_1x_coco.py
│   │   │   │   │   ├── rpn_r50_fpn_1x_coco.py
│   │   │   │   │   ├── rpn_r50_fpn_2x_coco.py
│   │   │   │   │   ├── rpn_x101_32x4d_fpn_1x_coco.py
│   │   │   │   │   ├── rpn_x101_32x4d_fpn_2x_coco.py
│   │   │   │   │   ├── rpn_x101_64x4d_fpn_1x_coco.py
│   │   │   │   │   └── rpn_x101_64x4d_fpn_2x_coco.py
│   │   │   │   ├── sabl/
│   │   │   │   │   ├── README.md
│   │   │   │   │   ├── metafile.yml
│   │   │   │   │   ├── sabl_cascade_rcnn_r101_fpn_1x_coco.py
│   │   │   │   │   ├── sabl_cascade_rcnn_r50_fpn_1x_coco.py
│   │   │   │   │   ├── sabl_faster_rcnn_r101_fpn_1x_coco.py
│   │   │   │   │   ├── sabl_faster_rcnn_r50_fpn_1x_coco.py
│   │   │   │   │   ├── sabl_retinanet_r101_fpn_1x_coco.py
│   │   │   │   │   ├── sabl_retinanet_r101_fpn_gn_1x_coco.py
│   │   │   │   │   ├── sabl_retinanet_r101_fpn_gn_2x_ms_480_960_coco.py
│   │   │   │   │   ├── sabl_retinanet_r101_fpn_gn_2x_ms_640_800_coco.py
│   │   │   │   │   ├── sabl_retinanet_r50_fpn_1x_coco.py
│   │   │   │   │   └── sabl_retinanet_r50_fpn_gn_1x_coco.py
│   │   │   │   ├── scnet/
│   │   │   │   │   ├── README.md
│   │   │   │   │   ├── metafile.yml
│   │   │   │   │   ├── scnet_r101_fpn_20e_coco.py
│   │   │   │   │   ├── scnet_r50_fpn_1x_coco.py
│   │   │   │   │   ├── scnet_r50_fpn_20e_coco.py
│   │   │   │   │   ├── scnet_x101_64x4d_fpn_20e_coco.py
│   │   │   │   │   └── scnet_x101_64x4d_fpn_8x1_20e_coco.py
│   │   │   │   ├── scratch/
│   │   │   │   │   ├── README.md
│   │   │   │   │   ├── faster_rcnn_r50_fpn_gn-all_scratch_6x_coco.py
│   │   │   │   │   ├── mask_rcnn_r50_fpn_gn-all_scratch_6x_coco.py
│   │   │   │   │   └── metafile.yml
│   │   │   │   ├── seesaw_loss/
│   │   │   │   │   ├── README.md
│   │   │   │   │   ├── cascade_mask_rcnn_r101_fpn_random_seesaw_loss_mstrain_2x_lvis_v1.py
│   │   │   │   │   ├── cascade_mask_rcnn_r101_fpn_random_seesaw_loss_normed_mask_mstrain_2x_lvis_v1.py
│   │   │   │   │   ├── cascade_mask_rcnn_r101_fpn_sample1e-3_seesaw_loss_mstrain_2x_lvis_v1.py
│   │   │   │   │   ├── cascade_mask_rcnn_r101_fpn_sample1e-3_seesaw_loss_normed_mask_mstrain_2x_lvis_v1.py
│   │   │   │   │   ├── mask_rcnn_r101_fpn_random_seesaw_loss_mstrain_2x_lvis_v1.py
│   │   │   │   │   ├── mask_rcnn_r101_fpn_random_seesaw_loss_normed_mask_mstrain_2x_lvis_v1.py
│   │   │   │   │   ├── mask_rcnn_r101_fpn_sample1e-3_seesaw_loss_mstrain_2x_lvis_v1.py
│   │   │   │   │   ├── mask_rcnn_r101_fpn_sample1e-3_seesaw_loss_normed_mask_mstrain_2x_lvis_v1.py
│   │   │   │   │   ├── mask_rcnn_r50_fpn_random_seesaw_loss_mstrain_2x_lvis_v1.py
│   │   │   │   │   ├── mask_rcnn_r50_fpn_random_seesaw_loss_normed_mask_mstrain_2x_lvis_v1.py
│   │   │   │   │   ├── mask_rcnn_r50_fpn_sample1e-3_seesaw_loss_mstrain_2x_lvis_v1.py
│   │   │   │   │   ├── mask_rcnn_r50_fpn_sample1e-3_seesaw_loss_normed_mask_mstrain_2x_lvis_v1.py
│   │   │   │   │   └── metafile.yml
│   │   │   │   ├── selfsup_pretrain/
│   │   │   │   │   ├── README.md
│   │   │   │   │   ├── mask_rcnn_r50_fpn_mocov2-pretrain_1x_coco.py
│   │   │   │   │   ├── mask_rcnn_r50_fpn_mocov2-pretrain_ms-2x_coco.py
│   │   │   │   │   ├── mask_rcnn_r50_fpn_swav-pretrain_1x_coco.py
│   │   │   │   │   └── mask_rcnn_r50_fpn_swav-pretrain_ms-2x_coco.py
│   │   │   │   ├── simple_copy_paste/
│   │   │   │   │   ├── README.md
│   │   │   │   │   ├── mask_rcnn_r50_fpn_syncbn-all_rpn-2conv_ssj_32x2_270k_coco.py
│   │   │   │   │   ├── mask_rcnn_r50_fpn_syncbn-all_rpn-2conv_ssj_32x2_90k_coco.py
│   │   │   │   │   ├── mask_rcnn_r50_fpn_syncbn-all_rpn-2conv_ssj_scp_32x2_270k_coco.py
│   │   │   │   │   └── mask_rcnn_r50_fpn_syncbn-all_rpn-2conv_ssj_scp_32x2_90k_coco.py
│   │   │   │   ├── solo/
│   │   │   │   │   ├── README.md
│   │   │   │   │   ├── decoupled_solo_light_r50_fpn_3x_coco.py
│   │   │   │   │   ├── decoupled_solo_r50_fpn_1x_coco.py
│   │   │   │   │   ├── decoupled_solo_r50_fpn_3x_coco.py
│   │   │   │   │   ├── metafile.yml
│   │   │   │   │   ├── solo_r50_fpn_1x_coco.py
│   │   │   │   │   └── solo_r50_fpn_3x_coco.py
│   │   │   │   ├── sparse_rcnn/
│   │   │   │   │   ├── README.md
│   │   │   │   │   ├── metafile.yml
│   │   │   │   │   ├── sparse_rcnn_r101_fpn_300_proposals_crop_mstrain_480-800_3x_coco.py
│   │   │   │   │   ├── sparse_rcnn_r101_fpn_mstrain_480-800_3x_coco.py
│   │   │   │   │   ├── sparse_rcnn_r50_fpn_1x_coco.py
│   │   │   │   │   ├── sparse_rcnn_r50_fpn_300_proposals_crop_mstrain_480-800_3x_coco.py
│   │   │   │   │   └── sparse_rcnn_r50_fpn_mstrain_480-800_3x_coco.py
│   │   │   │   ├── ssd/
│   │   │   │   │   ├── README.md
│   │   │   │   │   ├── metafile.yml
│   │   │   │   │   ├── ssd300_coco.py
│   │   │   │   │   ├── ssd512_coco.py
│   │   │   │   │   └── ssdlite_mobilenetv2_scratch_600e_coco.py
│   │   │   │   ├── strong_baselines/
│   │   │   │   │   ├── README.md
│   │   │   │   │   ├── mask_rcnn_r50_caffe_fpn_syncbn-all_rpn-2conv_lsj_100e_coco.py
│   │   │   │   │   ├── mask_rcnn_r50_caffe_fpn_syncbn-all_rpn-2conv_lsj_100e_fp16_coco.py
│   │   │   │   │   ├── mask_rcnn_r50_caffe_fpn_syncbn-all_rpn-2conv_lsj_400e_coco.py
│   │   │   │   │   ├── mask_rcnn_r50_fpn_syncbn-all_rpn-2conv_lsj_100e_coco.py
│   │   │   │   │   ├── mask_rcnn_r50_fpn_syncbn-all_rpn-2conv_lsj_100e_fp16_coco.py
│   │   │   │   │   └── mask_rcnn_r50_fpn_syncbn-all_rpn-2conv_lsj_50e_coco.py
│   │   │   │   ├── swin/
│   │   │   │   │   ├── README.md
│   │   │   │   │   ├── mask_rcnn_swin-s-p4-w7_fpn_fp16_ms-crop-3x_coco.py
│   │   │   │   │   ├── mask_rcnn_swin-t-p4-w7_fpn_1x_coco.py
│   │   │   │   │   ├── mask_rcnn_swin-t-p4-w7_fpn_fp16_ms-crop-3x_coco.py
│   │   │   │   │   ├── mask_rcnn_swin-t-p4-w7_fpn_ms-crop-3x_coco.py
│   │   │   │   │   ├── metafile.yml
│   │   │   │   │   └── retinanet_swin-t-p4-w7_fpn_1x_coco.py
│   │   │   │   ├── timm_example/
│   │   │   │   │   ├── README.md
│   │   │   │   │   ├── retinanet_timm_efficientnet_b1_fpn_1x_coco.py
│   │   │   │   │   └── retinanet_timm_tv_resnet50_fpn_1x_coco.py
│   │   │   │   ├── tood/
│   │   │   │   │   ├── README.md
│   │   │   │   │   ├── metafile.yml
│   │   │   │   │   ├── tood_r101_fpn_dconv_c3-c5_mstrain_2x_coco.py
│   │   │   │   │   ├── tood_r101_fpn_mstrain_2x_coco.py
│   │   │   │   │   ├── tood_r50_fpn_1x_coco.py
│   │   │   │   │   ├── tood_r50_fpn_anchor_based_1x_coco.py
│   │   │   │   │   ├── tood_r50_fpn_mstrain_2x_coco.py
│   │   │   │   │   ├── tood_x101_64x4d_fpn_dconv_c4-c5_mstrain_2x_coco.py
│   │   │   │   │   └── tood_x101_64x4d_fpn_mstrain_2x_coco.py
│   │   │   │   ├── tridentnet/
│   │   │   │   │   ├── README.md
│   │   │   │   │   ├── metafile.yml
│   │   │   │   │   ├── tridentnet_r50_caffe_1x_coco.py
│   │   │   │   │   ├── tridentnet_r50_caffe_mstrain_1x_coco.py
│   │   │   │   │   └── tridentnet_r50_caffe_mstrain_3x_coco.py
│   │   │   │   ├── vfnet/
│   │   │   │   │   ├── README.md
│   │   │   │   │   ├── metafile.yml
│   │   │   │   │   ├── vfnet_r101_fpn_1x_coco.py
│   │   │   │   │   ├── vfnet_r101_fpn_2x_coco.py
│   │   │   │   │   ├── vfnet_r101_fpn_mdconv_c3-c5_mstrain_2x_coco.py
│   │   │   │   │   ├── vfnet_r101_fpn_mstrain_2x_coco.py
│   │   │   │   │   ├── vfnet_r2_101_fpn_mdconv_c3-c5_mstrain_2x_coco.py
│   │   │   │   │   ├── vfnet_r2_101_fpn_mstrain_2x_coco.py
│   │   │   │   │   ├── vfnet_r50_fpn_1x_coco.py
│   │   │   │   │   ├── vfnet_r50_fpn_mdconv_c3-c5_mstrain_2x_coco.py
│   │   │   │   │   ├── vfnet_r50_fpn_mstrain_2x_coco.py
│   │   │   │   │   ├── vfnet_x101_32x4d_fpn_mdconv_c3-c5_mstrain_2x_coco.py
│   │   │   │   │   ├── vfnet_x101_32x4d_fpn_mstrain_2x_coco.py
│   │   │   │   │   ├── vfnet_x101_64x4d_fpn_mdconv_c3-c5_mstrain_2x_coco.py
│   │   │   │   │   └── vfnet_x101_64x4d_fpn_mstrain_2x_coco.py
│   │   │   │   ├── wider_face/
│   │   │   │   │   ├── README.md
│   │   │   │   │   └── ssd300_wider_face.py
│   │   │   │   ├── yolact/
│   │   │   │   │   ├── README.md
│   │   │   │   │   ├── metafile.yml
│   │   │   │   │   ├── yolact_r101_1x8_coco.py
│   │   │   │   │   ├── yolact_r50_1x8_coco.py
│   │   │   │   │   └── yolact_r50_8x8_coco.py
│   │   │   │   ├── yolo/
│   │   │   │   │   ├── README.md
│   │   │   │   │   ├── metafile.yml
│   │   │   │   │   ├── yolov3_d53_320_273e_coco.py
│   │   │   │   │   ├── yolov3_d53_fp16_mstrain-608_273e_coco.py
│   │   │   │   │   ├── yolov3_d53_mstrain-416_273e_coco.py
│   │   │   │   │   ├── yolov3_d53_mstrain-608_273e_coco.py
│   │   │   │   │   ├── yolov3_mobilenetv2_320_300e_coco.py
│   │   │   │   │   └── yolov3_mobilenetv2_mstrain-416_300e_coco.py
│   │   │   │   ├── yolof/
│   │   │   │   │   ├── README.md
│   │   │   │   │   ├── metafile.yml
│   │   │   │   │   ├── yolof_r50_c5_8x8_1x_coco.py
│   │   │   │   │   └── yolof_r50_c5_8x8_iter-1x_coco.py
│   │   │   │   └── yolox/
│   │   │   │       ├── README.md
│   │   │   │       ├── metafile.yml
│   │   │   │       ├── yolox_l_8x8_300e_coco.py
│   │   │   │       ├── yolox_m_8x8_300e_coco.py
│   │   │   │       ├── yolox_nano_8x8_300e_coco.py
│   │   │   │       ├── yolox_s_8x8_300e_coco.py
│   │   │   │       ├── yolox_tiny_8x8_300e_coco.py
│   │   │   │       └── yolox_x_8x8_300e_coco.py
│   │   │   ├── demo/
│   │   │   │   ├── MMDet_InstanceSeg_Tutorial.ipynb
│   │   │   │   ├── MMDet_Tutorial.ipynb
│   │   │   │   ├── create_result_gif.py
│   │   │   │   ├── image_demo.py
│   │   │   │   ├── inference_demo.ipynb
│   │   │   │   ├── video_demo.py
│   │   │   │   └── webcam_demo.py
│   │   │   ├── model-index.yml
│   │   │   └── tools/
│   │   │       ├── .dist_train.sh.swp
│   │   │       ├── analysis_tools/
│   │   │       │   ├── analyze_logs.py
│   │   │       │   ├── analyze_results.py
│   │   │       │   ├── benchmark.py
│   │   │       │   ├── coco_error_analysis.py
│   │   │       │   ├── confusion_matrix.py
│   │   │       │   ├── eval_metric.py
│   │   │       │   ├── get_flops.py
│   │   │       │   ├── optimize_anchors.py
│   │   │       │   ├── robustness_eval.py
│   │   │       │   └── test_robustness.py
│   │   │       ├── dataset_converters/
│   │   │       │   ├── cityscapes.py
│   │   │       │   ├── images2coco.py
│   │   │       │   └── pascal_voc.py
│   │   │       ├── deployment/
│   │   │       │   ├── mmdet2torchserve.py
│   │   │       │   ├── mmdet_handler.py
│   │   │       │   ├── onnx2tensorrt.py
│   │   │       │   ├── pytorch2onnx.py
│   │   │       │   ├── test.py
│   │   │       │   └── test_torchserver.py
│   │   │       ├── dist_test.sh
│   │   │       ├── dist_train.sh
│   │   │       ├── misc/
│   │   │       │   ├── browse_dataset.py
│   │   │       │   ├── download_dataset.py
│   │   │       │   ├── gen_coco_panoptic_test_info.py
│   │   │       │   ├── get_image_metas.py
│   │   │       │   ├── print_config.py
│   │   │       │   └── split_coco.py
│   │   │       ├── model_converters/
│   │   │       │   ├── detectron2pytorch.py
│   │   │       │   ├── publish_model.py
│   │   │       │   ├── regnet2mmdet.py
│   │   │       │   ├── selfsup2mmdet.py
│   │   │       │   ├── upgrade_model_version.py
│   │   │       │   └── upgrade_ssd_version.py
│   │   │       ├── slurm_test.sh
│   │   │       ├── slurm_train.sh
│   │   │       ├── test.py
│   │   │       └── train.py
│   │   ├── __init__.py
│   │   ├── apis/
│   │   │   ├── __init__.py
│   │   │   ├── inference.py
│   │   │   ├── test.py
│   │   │   └── train.py
│   │   ├── core/
│   │   │   ├── __init__.py
│   │   │   ├── anchor/
│   │   │   │   ├── __init__.py
│   │   │   │   ├── anchor_generator.py
│   │   │   │   ├── builder.py
│   │   │   │   ├── point_generator.py
│   │   │   │   └── utils.py
│   │   │   ├── bbox/
│   │   │   │   ├── __init__.py
│   │   │   │   ├── assigners/
│   │   │   │   │   ├── __init__.py
│   │   │   │   │   ├── approx_max_iou_assigner.py
│   │   │   │   │   ├── assign_result.py
│   │   │   │   │   ├── atss_assigner.py
│   │   │   │   │   ├── base_assigner.py
│   │   │   │   │   ├── center_region_assigner.py
│   │   │   │   │   ├── grid_assigner.py
│   │   │   │   │   ├── hungarian_assigner.py
│   │   │   │   │   ├── mask_hungarian_assigner.py
│   │   │   │   │   ├── max_iou_assigner.py
│   │   │   │   │   ├── point_assigner.py
│   │   │   │   │   ├── region_assigner.py
│   │   │   │   │   ├── sim_ota_assigner.py
│   │   │   │   │   ├── task_aligned_assigner.py
│   │   │   │   │   └── uniform_assigner.py
│   │   │   │   ├── builder.py
│   │   │   │   ├── coder/
│   │   │   │   │   ├── __init__.py
│   │   │   │   │   ├── base_bbox_coder.py
│   │   │   │   │   ├── bucketing_bbox_coder.py
│   │   │   │   │   ├── delta_xywh_bbox_coder.py
│   │   │   │   │   ├── distance_point_bbox_coder.py
│   │   │   │   │   ├── legacy_delta_xywh_bbox_coder.py
│   │   │   │   │   ├── pseudo_bbox_coder.py
│   │   │   │   │   ├── tblr_bbox_coder.py
│   │   │   │   │   └── yolo_bbox_coder.py
│   │   │   │   ├── demodata.py
│   │   │   │   ├── iou_calculators/
│   │   │   │   │   ├── __init__.py
│   │   │   │   │   ├── builder.py
│   │   │   │   │   └── iou2d_calculator.py
│   │   │   │   ├── match_costs/
│   │   │   │   │   ├── __init__.py
│   │   │   │   │   ├── builder.py
│   │   │   │   │   └── match_cost.py
│   │   │   │   ├── samplers/
│   │   │   │   │   ├── __init__.py
│   │   │   │   │   ├── base_sampler.py
│   │   │   │   │   ├── combined_sampler.py
│   │   │   │   │   ├── instance_balanced_pos_sampler.py
│   │   │   │   │   ├── iou_balanced_neg_sampler.py
│   │   │   │   │   ├── mask_pseudo_sampler.py
│   │   │   │   │   ├── mask_sampling_result.py
│   │   │   │   │   ├── ohem_sampler.py
│   │   │   │   │   ├── pseudo_sampler.py
│   │   │   │   │   ├── random_sampler.py
│   │   │   │   │   ├── sampling_result.py
│   │   │   │   │   └── score_hlr_sampler.py
│   │   │   │   └── transforms.py
│   │   │   ├── data_structures/
│   │   │   │   ├── __init__.py
│   │   │   │   ├── general_data.py
│   │   │   │   └── instance_data.py
│   │   │   ├── evaluation/
│   │   │   │   ├── __init__.py
│   │   │   │   ├── bbox_overlaps.py
│   │   │   │   ├── class_names.py
│   │   │   │   ├── eval_hooks.py
│   │   │   │   ├── mean_ap.py
│   │   │   │   ├── panoptic_utils.py
│   │   │   │   └── recall.py
│   │   │   ├── export/
│   │   │   │   ├── __init__.py
│   │   │   │   ├── model_wrappers.py
│   │   │   │   ├── onnx_helper.py
│   │   │   │   └── pytorch2onnx.py
│   │   │   ├── hook/
│   │   │   │   ├── __init__.py
│   │   │   │   ├── checkloss_hook.py
│   │   │   │   ├── ema.py
│   │   │   │   ├── memory_profiler_hook.py
│   │   │   │   ├── set_epoch_info_hook.py
│   │   │   │   ├── sync_norm_hook.py
│   │   │   │   ├── sync_random_size_hook.py
│   │   │   │   ├── yolox_lrupdater_hook.py
│   │   │   │   └── yolox_mode_switch_hook.py
│   │   │   ├── mask/
│   │   │   │   ├── __init__.py
│   │   │   │   ├── mask_target.py
│   │   │   │   ├── structures.py
│   │   │   │   └── utils.py
│   │   │   ├── post_processing/
│   │   │   │   ├── __init__.py
│   │   │   │   ├── bbox_nms.py
│   │   │   │   ├── matrix_nms.py
│   │   │   │   └── merge_augs.py
│   │   │   ├── utils/
│   │   │   │   ├── __init__.py
│   │   │   │   ├── dist_utils.py
│   │   │   │   └── misc.py
│   │   │   └── visualization/
│   │   │       ├── __init__.py
│   │   │       ├── image.py
│   │   │       └── palette.py
│   │   ├── datasets/
│   │   │   ├── __init__.py
│   │   │   ├── api_wrappers/
│   │   │   │   ├── __init__.py
│   │   │   │   ├── coco_api.py
│   │   │   │   └── panoptic_evaluation.py
│   │   │   ├── builder.py
│   │   │   ├── cityscapes.py
│   │   │   ├── coco.py
│   │   │   ├── coco_panoptic.py
│   │   │   ├── custom.py
│   │   │   ├── dataset_wrappers.py
│   │   │   ├── deepfashion.py
│   │   │   ├── lvis.py
│   │   │   ├── openimages.py
│   │   │   ├── pipelines/
│   │   │   │   ├── __init__.py
│   │   │   │   ├── auto_augment.py
│   │   │   │   ├── compose.py
│   │   │   │   ├── formating.py
│   │   │   │   ├── formatting.py
│   │   │   │   ├── instaboost.py
│   │   │   │   ├── loading.py
│   │   │   │   ├── test_time_aug.py
│   │   │   │   └── transforms.py
│   │   │   ├── samplers/
│   │   │   │   ├── __init__.py
│   │   │   │   ├── class_aware_sampler.py
│   │   │   │   ├── distributed_sampler.py
│   │   │   │   ├── group_sampler.py
│   │   │   │   └── infinite_sampler.py
│   │   │   ├── utils.py
│   │   │   ├── voc.py
│   │   │   ├── wider_face.py
│   │   │   └── xml_style.py
│   │   ├── models/
│   │   │   ├── __init__.py
│   │   │   ├── backbones/
│   │   │   │   ├── __init__.py
│   │   │   │   ├── csp_darknet.py
│   │   │   │   ├── darknet.py
│   │   │   │   ├── detectors_resnet.py
│   │   │   │   ├── detectors_resnext.py
│   │   │   │   ├── efficientnet.py
│   │   │   │   ├── hivit.py
│   │   │   │   ├── hourglass.py
│   │   │   │   ├── hrnet.py
│   │   │   │   ├── mobilenet_v2.py
│   │   │   │   ├── pvt.py
│   │   │   │   ├── regnet.py
│   │   │   │   ├── res2net.py
│   │   │   │   ├── resnest.py
│   │   │   │   ├── resnet.py
│   │   │   │   ├── resnext.py
│   │   │   │   ├── ssd_vgg.py
│   │   │   │   ├── swin.py
│   │   │   │   ├── trident_resnet.py
│   │   │   │   └── vit.py
│   │   │   ├── builder.py
│   │   │   ├── dense_heads/
│   │   │   │   ├── __init__.py
│   │   │   │   ├── anchor_free_head.py
│   │   │   │   ├── anchor_head.py
│   │   │   │   ├── atss_head.py
│   │   │   │   ├── autoassign_head.py
│   │   │   │   ├── base_dense_head.py
│   │   │   │   ├── base_mask_head.py
│   │   │   │   ├── cascade_rpn_head.py
│   │   │   │   ├── centernet_head.py
│   │   │   │   ├── centripetal_head.py
│   │   │   │   ├── corner_head.py
│   │   │   │   ├── deformable_detr_head.py
│   │   │   │   ├── dense_test_mixins.py
│   │   │   │   ├── detr_head.py
│   │   │   │   ├── embedding_rpn_head.py
│   │   │   │   ├── fcos_head.py
│   │   │   │   ├── fovea_head.py
│   │   │   │   ├── free_anchor_retina_head.py
│   │   │   │   ├── fsaf_head.py
│   │   │   │   ├── ga_retina_head.py
│   │   │   │   ├── ga_rpn_head.py
│   │   │   │   ├── gfl_head.py
│   │   │   │   ├── guided_anchor_head.py
│   │   │   │   ├── lad_head.py
│   │   │   │   ├── ld_head.py
│   │   │   │   ├── mask2former_head.py
│   │   │   │   ├── maskformer_head.py
│   │   │   │   ├── nasfcos_head.py
│   │   │   │   ├── paa_head.py
│   │   │   │   ├── pisa_retinanet_head.py
│   │   │   │   ├── pisa_ssd_head.py
│   │   │   │   ├── reppoints_head.py
│   │   │   │   ├── retina_head.py
│   │   │   │   ├── retina_sepbn_head.py
│   │   │   │   ├── rpn_head.py
│   │   │   │   ├── sabl_retina_head.py
│   │   │   │   ├── solo_head.py
│   │   │   │   ├── ssd_head.py
│   │   │   │   ├── tood_head.py
│   │   │   │   ├── vfnet_head.py
│   │   │   │   ├── yolact_head.py
│   │   │   │   ├── yolo_head.py
│   │   │   │   ├── yolof_head.py
│   │   │   │   └── yolox_head.py
│   │   │   ├── detectors/
│   │   │   │   ├── __init__.py
│   │   │   │   ├── atss.py
│   │   │   │   ├── autoassign.py
│   │   │   │   ├── base.py
│   │   │   │   ├── cascade_rcnn.py
│   │   │   │   ├── centernet.py
│   │   │   │   ├── cornernet.py
│   │   │   │   ├── deformable_detr.py
│   │   │   │   ├── detr.py
│   │   │   │   ├── fast_rcnn.py
│   │   │   │   ├── faster_rcnn.py
│   │   │   │   ├── fcos.py
│   │   │   │   ├── fovea.py
│   │   │   │   ├── fsaf.py
│   │   │   │   ├── gfl.py
│   │   │   │   ├── grid_rcnn.py
│   │   │   │   ├── htc.py
│   │   │   │   ├── kd_one_stage.py
│   │   │   │   ├── lad.py
│   │   │   │   ├── mask2former.py
│   │   │   │   ├── mask_rcnn.py
│   │   │   │   ├── mask_scoring_rcnn.py
│   │   │   │   ├── maskformer.py
│   │   │   │   ├── nasfcos.py
│   │   │   │   ├── paa.py
│   │   │   │   ├── panoptic_fpn.py
│   │   │   │   ├── panoptic_two_stage_segmentor.py
│   │   │   │   ├── point_rend.py
│   │   │   │   ├── queryinst.py
│   │   │   │   ├── reppoints_detector.py
│   │   │   │   ├── retinanet.py
│   │   │   │   ├── rpn.py
│   │   │   │   ├── scnet.py
│   │   │   │   ├── single_stage.py
│   │   │   │   ├── single_stage_instance_seg.py
│   │   │   │   ├── solo.py
│   │   │   │   ├── sparse_rcnn.py
│   │   │   │   ├── tood.py
│   │   │   │   ├── trident_faster_rcnn.py
│   │   │   │   ├── two_stage.py
│   │   │   │   ├── vfnet.py
│   │   │   │   ├── yolact.py
│   │   │   │   ├── yolo.py
│   │   │   │   ├── yolof.py
│   │   │   │   └── yolox.py
│   │   │   ├── losses/
│   │   │   │   ├── __init__.py
│   │   │   │   ├── accuracy.py
│   │   │   │   ├── ae_loss.py
│   │   │   │   ├── balanced_l1_loss.py
│   │   │   │   ├── cross_entropy_loss.py
│   │   │   │   ├── dice_loss.py
│   │   │   │   ├── focal_loss.py
│   │   │   │   ├── gaussian_focal_loss.py
│   │   │   │   ├── gfocal_loss.py
│   │   │   │   ├── ghm_loss.py
│   │   │   │   ├── iou_loss.py
│   │   │   │   ├── kd_loss.py
│   │   │   │   ├── mse_loss.py
│   │   │   │   ├── pisa_loss.py
│   │   │   │   ├── seesaw_loss.py
│   │   │   │   ├── smooth_l1_loss.py
│   │   │   │   ├── utils.py
│   │   │   │   └── varifocal_loss.py
│   │   │   ├── necks/
│   │   │   │   ├── __init__.py
│   │   │   │   ├── bfp.py
│   │   │   │   ├── channel_mapper.py
│   │   │   │   ├── ct_resnet_neck.py
│   │   │   │   ├── dilated_encoder.py
│   │   │   │   ├── dyhead.py
│   │   │   │   ├── fpg.py
│   │   │   │   ├── fpn.py
│   │   │   │   ├── fpn_carafe.py
│   │   │   │   ├── hrfpn.py
│   │   │   │   ├── nas_fpn.py
│   │   │   │   ├── nasfcos_fpn.py
│   │   │   │   ├── pafpn.py
│   │   │   │   ├── rfp.py
│   │   │   │   ├── ssd_neck.py
│   │   │   │   ├── yolo_neck.py
│   │   │   │   └── yolox_pafpn.py
│   │   │   ├── plugins/
│   │   │   │   ├── __init__.py
│   │   │   │   ├── dropblock.py
│   │   │   │   ├── msdeformattn_pixel_decoder.py
│   │   │   │   └── pixel_decoder.py
│   │   │   ├── roi_heads/
│   │   │   │   ├── __init__.py
│   │   │   │   ├── base_roi_head.py
│   │   │   │   ├── bbox_heads/
│   │   │   │   │   ├── __init__.py
│   │   │   │   │   ├── bbox_head.py
│   │   │   │   │   ├── convfc_bbox_head.py
│   │   │   │   │   ├── dii_head.py
│   │   │   │   │   ├── double_bbox_head.py
│   │   │   │   │   ├── sabl_head.py
│   │   │   │   │   └── scnet_bbox_head.py
│   │   │   │   ├── cascade_roi_head.py
│   │   │   │   ├── double_roi_head.py
│   │   │   │   ├── dynamic_roi_head.py
│   │   │   │   ├── grid_roi_head.py
│   │   │   │   ├── htc_roi_head.py
│   │   │   │   ├── mask_heads/
│   │   │   │   │   ├── __init__.py
│   │   │   │   │   ├── coarse_mask_head.py
│   │   │   │   │   ├── dynamic_mask_head.py
│   │   │   │   │   ├── fcn_mask_head.py
│   │   │   │   │   ├── feature_relay_head.py
│   │   │   │   │   ├── fused_semantic_head.py
│   │   │   │   │   ├── global_context_head.py
│   │   │   │   │   ├── grid_head.py
│   │   │   │   │   ├── htc_mask_head.py
│   │   │   │   │   ├── mask_point_head.py
│   │   │   │   │   ├── maskiou_head.py
│   │   │   │   │   ├── scnet_mask_head.py
│   │   │   │   │   └── scnet_semantic_head.py
│   │   │   │   ├── mask_scoring_roi_head.py
│   │   │   │   ├── pisa_roi_head.py
│   │   │   │   ├── point_rend_roi_head.py
│   │   │   │   ├── roi_extractors/
│   │   │   │   │   ├── __init__.py
│   │   │   │   │   ├── base_roi_extractor.py
│   │   │   │   │   ├── generic_roi_extractor.py
│   │   │   │   │   └── single_level_roi_extractor.py
│   │   │   │   ├── scnet_roi_head.py
│   │   │   │   ├── shared_heads/
│   │   │   │   │   ├── __init__.py
│   │   │   │   │   └── res_layer.py
│   │   │   │   ├── sparse_roi_head.py
│   │   │   │   ├── standard_roi_head.py
│   │   │   │   ├── test_mixins.py
│   │   │   │   └── trident_roi_head.py
│   │   │   ├── seg_heads/
│   │   │   │   ├── __init__.py
│   │   │   │   ├── base_semantic_head.py
│   │   │   │   ├── panoptic_fpn_head.py
│   │   │   │   └── panoptic_fusion_heads/
│   │   │   │       ├── __init__.py
│   │   │   │       ├── base_panoptic_fusion_head.py
│   │   │   │       ├── heuristic_fusion_head.py
│   │   │   │       └── maskformer_fusion_head.py
│   │   │   └── utils/
│   │   │       ├── __init__.py
│   │   │       ├── brick_wrappers.py
│   │   │       ├── builder.py
│   │   │       ├── ckpt_convert.py
│   │   │       ├── conv_upsample.py
│   │   │       ├── csp_layer.py
│   │   │       ├── gaussian_target.py
│   │   │       ├── inverted_residual.py
│   │   │       ├── make_divisible.py
│   │   │       ├── misc.py
│   │   │       ├── normed_predictor.py
│   │   │       ├── panoptic_gt_processing.py
│   │   │       ├── point_sample.py
│   │   │       ├── positional_encoding.py
│   │   │       ├── res_layer.py
│   │   │       ├── se_layer.py
│   │   │       └── transformer.py
│   │   ├── utils/
│   │   │   ├── __init__.py
│   │   │   ├── collect_env.py
│   │   │   ├── compat_config.py
│   │   │   ├── contextmanagers.py
│   │   │   ├── logger.py
│   │   │   ├── misc.py
│   │   │   ├── optimizer.py
│   │   │   ├── profiling.py
│   │   │   ├── setup_env.py
│   │   │   ├── split_batch.py
│   │   │   ├── util_distribution.py
│   │   │   ├── util_mixins.py
│   │   │   └── util_random.py
│   │   └── version.py
│   ├── mmdet.egg-info/
│   │   ├── PKG-INFO
│   │   ├── SOURCES.txt
│   │   ├── dependency_links.txt
│   │   ├── not-zip-safe
│   │   ├── requires.txt
│   │   └── top_level.txt
│   ├── model-index.yml
│   ├── models/
│   │   ├── __init__.py
│   │   ├── models_hivit.py
│   │   └── models_vit.py
│   ├── pytest.ini
│   ├── requirements/
│   │   ├── albu.txt
│   │   ├── build.txt
│   │   ├── docs.txt
│   │   ├── mminstall.txt
│   │   ├── optional.txt
│   │   ├── readthedocs.txt
│   │   ├── runtime.txt
│   │   └── tests.txt
│   ├── requirements.txt
│   ├── setup.cfg
│   ├── setup.py
│   ├── tests/
│   │   ├── test_data/
│   │   │   ├── test_datasets/
│   │   │   │   ├── test_coco_dataset.py
│   │   │   │   ├── test_common.py
│   │   │   │   ├── test_custom_dataset.py
│   │   │   │   ├── test_dataset_wrapper.py
│   │   │   │   ├── test_openimages_dataset.py
│   │   │   │   ├── test_panoptic_dataset.py
│   │   │   │   └── test_xml_dataset.py
│   │   │   ├── test_pipelines/
│   │   │   │   ├── test_formatting.py
│   │   │   │   ├── test_loading.py
│   │   │   │   ├── test_sampler.py
│   │   │   │   └── test_transform/
│   │   │   │       ├── __init__.py
│   │   │   │       ├── test_img_augment.py
│   │   │   │       ├── test_models_aug_test.py
│   │   │   │       ├── test_rotate.py
│   │   │   │       ├── test_shear.py
│   │   │   │       ├── test_transform.py
│   │   │   │       ├── test_translate.py
│   │   │   │       └── utils.py
│   │   │   └── test_utils.py
│   │   ├── test_downstream/
│   │   │   └── test_mmtrack.py
│   │   ├── test_metrics/
│   │   │   ├── test_box_overlap.py
│   │   │   ├── test_losses.py
│   │   │   ├── test_mean_ap.py
│   │   │   └── test_recall.py
│   │   ├── test_models/
│   │   │   ├── test_backbones/
│   │   │   │   ├── __init__.py
│   │   │   │   ├── test_csp_darknet.py
│   │   │   │   ├── test_detectors_resnet.py
│   │   │   │   ├── test_efficientnet.py
│   │   │   │   ├── test_hourglass.py
│   │   │   │   ├── test_hrnet.py
│   │   │   │   ├── test_mobilenet_v2.py
│   │   │   │   ├── test_pvt.py
│   │   │   │   ├── test_regnet.py
│   │   │   │   ├── test_renext.py
│   │   │   │   ├── test_res2net.py
│   │   │   │   ├── test_resnest.py
│   │   │   │   ├── test_resnet.py
│   │   │   │   ├── test_swin.py
│   │   │   │   ├── test_trident_resnet.py
│   │   │   │   └── utils.py
│   │   │   ├── test_dense_heads/
│   │   │   │   ├── test_anchor_head.py
│   │   │   │   ├── test_atss_head.py
│   │   │   │   ├── test_autoassign_head.py
│   │   │   │   ├── test_centernet_head.py
│   │   │   │   ├── test_corner_head.py
│   │   │   │   ├── test_dense_heads_attr.py
│   │   │   │   ├── test_detr_head.py
│   │   │   │   ├── test_fcos_head.py
│   │   │   │   ├── test_fsaf_head.py
│   │   │   │   ├── test_ga_anchor_head.py
│   │   │   │   ├── test_gfl_head.py
│   │   │   │   ├── test_lad_head.py
│   │   │   │   ├── test_ld_head.py
│   │   │   │   ├── test_mask2former_head.py
│   │   │   │   ├── test_maskformer_head.py
│   │   │   │   ├── test_paa_head.py
│   │   │   │   ├── test_pisa_head.py
│   │   │   │   ├── test_sabl_retina_head.py
│   │   │   │   ├── test_solo_head.py
│   │   │   │   ├── test_tood_head.py
│   │   │   │   ├── test_vfnet_head.py
│   │   │   │   ├── test_yolact_head.py
│   │   │   │   ├── test_yolof_head.py
│   │   │   │   └── test_yolox_head.py
│   │   │   ├── test_forward.py
│   │   │   ├── test_loss.py
│   │   │   ├── test_loss_compatibility.py
│   │   │   ├── test_necks.py
│   │   │   ├── test_plugins.py
│   │   │   ├── test_roi_heads/
│   │   │   │   ├── __init__.py
│   │   │   │   ├── test_bbox_head.py
│   │   │   │   ├── test_mask_head.py
│   │   │   │   ├── test_roi_extractor.py
│   │   │   │   ├── test_sabl_bbox_head.py
│   │   │   │   └── utils.py
│   │   │   ├── test_seg_heads/
│   │   │   │   └── test_maskformer_fusion_head.py
│   │   │   └── test_utils/
│   │   │       ├── test_brick_wrappers.py
│   │   │       ├── test_conv_upsample.py
│   │   │       ├── test_inverted_residual.py
│   │   │       ├── test_model_misc.py
│   │   │       ├── test_position_encoding.py
│   │   │       ├── test_se_layer.py
│   │   │       └── test_transformer.py
│   │   ├── test_onnx/
│   │   │   ├── __init__.py
│   │   │   ├── test_head.py
│   │   │   ├── test_neck.py
│   │   │   └── utils.py
│   │   ├── test_runtime/
│   │   │   ├── async_benchmark.py
│   │   │   ├── test_apis.py
│   │   │   ├── test_async.py
│   │   │   ├── test_config.py
│   │   │   ├── test_eval_hook.py
│   │   │   └── test_fp16.py
│   │   └── test_utils/
│   │       ├── test_anchor.py
│   │       ├── test_assigner.py
│   │       ├── test_coder.py
│   │       ├── test_compat_config.py
│   │       ├── test_general_data.py
│   │       ├── test_hook.py
│   │       ├── test_logger.py
│   │       ├── test_masks.py
│   │       ├── test_misc.py
│   │       ├── test_nms.py
│   │       ├── test_setup_env.py
│   │       ├── test_split_batch.py
│   │       ├── test_version.py
│   │       └── test_visualization.py
│   └── tools/
│       ├── .dist_train.sh.swp
│       ├── analysis_tools/
│       │   ├── analyze_logs.py
│       │   ├── analyze_results.py
│       │   ├── benchmark.py
│       │   ├── coco_error_analysis.py
│       │   ├── confusion_matrix.py
│       │   ├── eval_metric.py
│       │   ├── get_flops.py
│       │   ├── optimize_anchors.py
│       │   ├── robustness_eval.py
│       │   └── test_robustness.py
│       ├── dataset_converters/
│       │   ├── cityscapes.py
│       │   ├── images2coco.py
│       │   └── pascal_voc.py
│       ├── deployment/
│       │   ├── mmdet2torchserve.py
│       │   ├── mmdet_handler.py
│       │   ├── onnx2tensorrt.py
│       │   ├── pytorch2onnx.py
│       │   ├── test.py
│       │   └── test_torchserver.py
│       ├── dist_test.sh
│       ├── dist_train.sh
│       ├── misc/
│       │   ├── browse_dataset.py
│       │   ├── download_dataset.py
│       │   ├── gen_coco_panoptic_test_info.py
│       │   ├── get_image_metas.py
│       │   ├── print_config.py
│       │   └── split_coco.py
│       ├── model_converters/
│       │   ├── detectron2pytorch.py
│       │   ├── publish_model.py
│       │   ├── regnet2mmdet.py
│       │   ├── selfsup2mmdet.py
│       │   ├── upgrade_model_version.py
│       │   └── upgrade_ssd_version.py
│       ├── slurm_test.sh
│       ├── slurm_train.sh
│       ├── test.py
│       └── train.py
├── pre-training/
│   ├── engine_finetune.py
│   ├── engine_pretrain.py
│   ├── main_finetune.py
│   ├── main_pretrain.py
│   ├── models/
│   │   ├── __init__.py
│   │   ├── masked_autoencoder.py
│   │   ├── models_hivit.py
│   │   ├── models_hivit_mae.py
│   │   ├── models_vit.py
│   │   └── models_vit_mae.py
│   └── util/
│       ├── crop.py
│       ├── datasets.py
│       ├── lars.py
│       ├── lr_decay.py
│       ├── lr_sched.py
│       ├── misc.py
│       └── pos_embed.py
├── requirements_detection.txt
└── requirements_pretrain.txt
Download .txt
Showing preview only (345K chars total). Download the full file or copy to clipboard to get everything.
SYMBOL INDEX (4344 symbols across 607 files)

FILE: classification/clip/clip.py
  function _download (line 39) | def _download(url: str, root: str = os.path.expanduser("~/.cache/clip")):
  function _transform (line 71) | def _transform(n_px):
  function available_models (line 81) | def available_models() -> List[str]:
  function load (line 86) | def load(name: str, device: Union[str, torch.device] = "cuda" if torch.c...
  function tokenize (line 185) | def tokenize(texts: Union[str, List[str]], context_length: int = 77, tru...

FILE: classification/clip/model.py
  class Bottleneck (line 10) | class Bottleneck(nn.Module):
    method __init__ (line 13) | def __init__(self, inplanes, planes, stride=1):
    method forward (line 40) | def forward(self, x: torch.Tensor):
  class AttentionPool2d (line 56) | class AttentionPool2d(nn.Module):
    method __init__ (line 57) | def __init__(self, spacial_dim: int, embed_dim: int, num_heads: int, o...
    method forward (line 66) | def forward(self, x):
  class ModifiedResNet (line 93) | class ModifiedResNet(nn.Module):
    method __init__ (line 101) | def __init__(self, layers, output_dim, heads, input_resolution=224, wi...
    method _make_layer (line 126) | def _make_layer(self, planes, blocks, stride=1):
    method forward (line 135) | def forward(self, x):
  class LayerNorm (line 153) | class LayerNorm(nn.LayerNorm):
    method forward (line 156) | def forward(self, x: torch.Tensor):
  class QuickGELU (line 162) | class QuickGELU(nn.Module):
    method forward (line 163) | def forward(self, x: torch.Tensor):
  class ResidualAttentionBlock (line 167) | class ResidualAttentionBlock(nn.Module):
    method __init__ (line 168) | def __init__(self, d_model: int, n_head: int, attn_mask: torch.Tensor ...
    method attention (line 181) | def attention(self, x: torch.Tensor):
    method forward (line 185) | def forward(self, x: torch.Tensor):
  class Transformer (line 191) | class Transformer(nn.Module):
    method __init__ (line 192) | def __init__(self, width: int, layers: int, heads: int, attn_mask: tor...
    method forward (line 198) | def forward(self, x: torch.Tensor):
  class VisionTransformer (line 202) | class VisionTransformer(nn.Module):
    method __init__ (line 203) | def __init__(self, input_resolution: int, patch_size: int, width: int,...
    method forward (line 219) | def forward(self, x: torch.Tensor):
  class CLIP (line 239) | class CLIP(nn.Module):
    method __init__ (line 240) | def __init__(self,
    method initialize_parameters (line 295) | def initialize_parameters(self):
    method build_attention_mask (line 324) | def build_attention_mask(self):
    method dtype (line 333) | def dtype(self):
    method encode_image (line 336) | def encode_image(self, image):
    method encode_text (line 339) | def encode_text(self, text):
    method forward (line 354) | def forward(self, image, text):
  function convert_weights (line 371) | def convert_weights(model: nn.Module):
  function build_model (line 395) | def build_model(state_dict: dict):

FILE: classification/clip/simple_tokenizer.py
  function default_bpe (line 11) | def default_bpe():
  function bytes_to_unicode (line 16) | def bytes_to_unicode():
  function get_pairs (line 38) | def get_pairs(word):
  function basic_clean (line 50) | def basic_clean(text):
  function whitespace_clean (line 56) | def whitespace_clean(text):
  class SimpleTokenizer (line 62) | class SimpleTokenizer(object):
    method __init__ (line 63) | def __init__(self, bpe_path: str = default_bpe()):
    method bpe (line 80) | def bpe(self, token):
    method encode (line 121) | def encode(self, text):
    method decode (line 129) | def decode(self, tokens):

FILE: classification/datasets/MSTAR_EOC1.py
  class MSTAR_EOC1 (line 12) | class MSTAR_EOC1(DatasetBase):
    method __init__ (line 16) | def __init__(self, cfg):
    method read_data (line 56) | def read_data(self, image_dir):

FILE: classification/datasets/MSTAR_EOC2C.py
  class MSTAR_EOC2C (line 12) | class MSTAR_EOC2C(DatasetBase):
    method __init__ (line 16) | def __init__(self, cfg):
    method read_data (line 56) | def read_data(self, image_dir):

FILE: classification/datasets/MSTAR_EOC2V.py
  class MSTAR_EOC2V (line 12) | class MSTAR_EOC2V(DatasetBase):
    method __init__ (line 16) | def __init__(self, cfg):
    method read_data (line 56) | def read_data(self, image_dir):

FILE: classification/datasets/MSTAR_SOC.py
  class MSTAR_SOC (line 12) | class MSTAR_SOC(DatasetBase):
    method __init__ (line 16) | def __init__(self, cfg):
    method read_data (line 56) | def read_data(self, image_dir):

FILE: classification/datasets/MyDataset.py
  class MyDataset (line 12) | class MyDataset(DatasetBase):
    method __init__ (line 16) | def __init__(self, cfg):
    method read_data (line 56) | def read_data(self, image_dir):

FILE: classification/datasets/New_FUSAR.py
  class New_FUSAR (line 12) | class New_FUSAR(DatasetBase):
    method __init__ (line 16) | def __init__(self, cfg):
    method read_data (line 56) | def read_data(self, image_dir):

FILE: classification/datasets/SAR_ACD.py
  class SAR_ACD (line 12) | class SAR_ACD(DatasetBase):
    method __init__ (line 15) | def __init__(self, cfg):
    method read_data (line 55) | def read_data(self, image_dir):

FILE: classification/datasets/caltech101.py
  class Caltech101 (line 20) | class Caltech101(DatasetBase):
    method __init__ (line 24) | def __init__(self, cfg):

FILE: classification/datasets/dtd.py
  class DescribableTextures (line 12) | class DescribableTextures(DatasetBase):
    method __init__ (line 16) | def __init__(self, cfg):
    method read_and_split_data (line 54) | def read_and_split_data(image_dir, p_trn=0.5, p_val=0.2, ignored=[], n...

FILE: classification/datasets/eurosat.py
  class EuroSAT (line 25) | class EuroSAT(DatasetBase):
    method __init__ (line 29) | def __init__(self, cfg):
    method update_classname (line 66) | def update_classname(self, dataset_old):

FILE: classification/datasets/fgvc_aircraft.py
  class FGVCAircraft (line 11) | class FGVCAircraft(DatasetBase):
    method __init__ (line 15) | def __init__(self, cfg):
    method read_data (line 56) | def read_data(self, cname2lab, split_file):

FILE: classification/datasets/food101.py
  class Food101 (line 12) | class Food101(DatasetBase):
    method __init__ (line 16) | def __init__(self, cfg):

FILE: classification/datasets/imagenet.py
  class ImageNet (line 12) | class ImageNet(DatasetBase):
    method __init__ (line 16) | def __init__(self, cfg):
    method read_classnames (line 64) | def read_classnames(text_file):
    method read_data (line 78) | def read_data(self, classnames, split_dir):

FILE: classification/datasets/imagenet_a.py
  class ImageNetA (line 12) | class ImageNetA(DatasetBase):
    method __init__ (line 20) | def __init__(self, cfg):
    method read_data (line 32) | def read_data(self, classnames):

FILE: classification/datasets/imagenet_r.py
  class ImageNetR (line 12) | class ImageNetR(DatasetBase):
    method __init__ (line 20) | def __init__(self, cfg):
    method read_data (line 32) | def read_data(self, classnames):

FILE: classification/datasets/imagenet_sketch.py
  class ImageNetSketch (line 10) | class ImageNetSketch(DatasetBase):
    method __init__ (line 18) | def __init__(self, cfg):
    method read_data (line 30) | def read_data(self, classnames):

FILE: classification/datasets/imagenetv2.py
  class ImageNetV2 (line 10) | class ImageNetV2(DatasetBase):
    method __init__ (line 18) | def __init__(self, cfg):
    method read_data (line 31) | def read_data(self, classnames):

FILE: classification/datasets/oxford_flowers.py
  class OxfordFlowers (line 14) | class OxfordFlowers(DatasetBase):
    method __init__ (line 18) | def __init__(self, cfg):
    method read_data (line 57) | def read_data(self):

FILE: classification/datasets/oxford_pets.py
  class OxfordPets (line 12) | class OxfordPets(DatasetBase):
    method __init__ (line 16) | def __init__(self, cfg):
    method read_data (line 56) | def read_data(self, split_file):
    method split_trainval (line 77) | def split_trainval(trainval, p_val=0.2):
    method save_split (line 100) | def save_split(train, val, test, filepath, path_prefix):
    method read_split (line 123) | def read_split(filepath, path_prefix):
    method subsample_classes (line 141) | def subsample_classes(*args, subsample="all"):

FILE: classification/datasets/stanford_cars.py
  class StanfordCars (line 12) | class StanfordCars(DatasetBase):
    method __init__ (line 16) | def __init__(self, cfg):
    method read_data (line 57) | def read_data(self, image_dir, anno_file, meta_file):

FILE: classification/datasets/sun397.py
  class SUN397 (line 11) | class SUN397(DatasetBase):
    method __init__ (line 15) | def __init__(self, cfg):
    method read_data (line 61) | def read_data(self, cname2lab, text_file):

FILE: classification/datasets/ucf101.py
  class UCF101 (line 12) | class UCF101(DatasetBase):
    method __init__ (line 16) | def __init__(self, cfg):
    method read_data (line 64) | def read_data(self, cname2lab, text_file):

FILE: classification/interpret_prompt.py
  function load_clip_to_cpu (line 10) | def load_clip_to_cpu(backbone_name="RN50"):

FILE: classification/lpclip/feat_extractor.py
  function print_args (line 34) | def print_args(args, cfg):
  function reset_cfg (line 48) | def reset_cfg(cfg, args):
  function extend_cfg (line 65) | def extend_cfg(cfg):
  function setup_cfg (line 85) | def setup_cfg(args):
  function main (line 105) | def main(args):

FILE: classification/lpclip/linear_probe.py
  function binary_search (line 69) | def binary_search(c_left, c_right, seed, step, test_acc_step_list):

FILE: classification/model/Model.py
  class AlexNet (line 5) | class AlexNet(nn.Module):
    method __init__ (line 6) | def __init__(self, num_classes: int = 10, dropout: float = 0.5) -> None:
    method forward (line 35) | def forward(self, x: torch.Tensor) -> torch.Tensor:
  class A_ConvNet (line 42) | class A_ConvNet(nn.Module):
    method __init__ (line 43) | def __init__(self, in_ch=1, num_classes=10):
    method forward (line 57) | def forward(self, x):
  class A_ConvNet_BN (line 73) | class A_ConvNet_BN(nn.Module):
    method __init__ (line 74) | def __init__(self, in_ch=1, num_classes=10):
    method forward (line 88) | def forward(self, x):
  class ChannelAttention (line 104) | class ChannelAttention(nn.Module):
    method __init__ (line 105) | def __init__(self, in_planes):
    method forward (line 113) | def forward(self, x):
  class SpatialAttention (line 120) | class SpatialAttention(nn.Module):
    method __init__ (line 121) | def __init__(self, kernel_size=7):
    method forward (line 130) | def forward(self, x):
  function atten (line 138) | def atten(x, con, ca ,sa):
  class AMCNN (line 145) | class AMCNN(torch.nn.Module):
    method __init__ (line 146) | def __init__(self, num_classes=3):
    method forward (line 182) | def forward(self, x):
  class BNACNN (line 199) | class BNACNN(torch.nn.Module):
    method __init__ (line 200) | def __init__(self, num_classes=3):
    method forward (line 220) | def forward(self, x):
  class MVGGNet (line 237) | class MVGGNet(torch.nn.Module):
    method __init__ (line 238) | def __init__(self, num_classes=3):
    method forward (line 250) | def forward(self, x):
  class ResNet_18 (line 257) | class ResNet_18(torch.nn.Module):
    method __init__ (line 258) | def __init__(self, num_classes=3):
    method forward (line 266) | def forward(self, x):
  class ResNet_34 (line 272) | class ResNet_34(torch.nn.Module):
    method __init__ (line 273) | def __init__(self, num_classes=3):
    method forward (line 281) | def forward(self, x):
  class ResNet_50 (line 287) | class ResNet_50(torch.nn.Module):
    method __init__ (line 288) | def __init__(self, num_classes=3):
    method forward (line 295) | def forward(self, x):
  class convnext_1 (line 301) | class convnext_1(torch.nn.Module):
    method __init__ (line 302) | def __init__(self, num_classes=3):
    method forward (line 310) | def forward(self, x):
  class efficientnet_b0 (line 316) | class efficientnet_b0(torch.nn.Module):
    method __init__ (line 317) | def __init__(self, num_classes=3):
    method forward (line 326) | def forward(self, x):
  class efficientnet_b1 (line 332) | class efficientnet_b1(torch.nn.Module):
    method __init__ (line 333) | def __init__(self, feature_extract=True, num_classes=3):
    method forward (line 342) | def forward(self, x):
  function crop (line 358) | def crop(x1, x2):
  class BN_Conv2d (line 373) | class BN_Conv2d(nn.Module):
    method __init__ (line 378) | def __init__(self, in_channels: object, out_channels: object, kernel_s...
    method forward (line 388) | def forward(self, x):
  class DoubleConv (line 393) | class DoubleConv(nn.Module):
    method __init__ (line 394) | def __init__(self, in_ch, out_ch, padding=2, bias=False):
    method forward (line 401) | def forward(self, input):
  function squash (line 405) | def squash(x, dim=-1):
  class PrimaryCaps (line 411) | class PrimaryCaps(nn.Module):
    method __init__ (line 414) | def __init__(self, num_conv_units, in_channels, out_channels, kernel_s...
    method forward (line 425) | def forward(self, x):
  class DigitCaps (line 434) | class DigitCaps(nn.Module):
    method __init__ (line 437) | def __init__(self, in_dim, in_caps, num_caps, dim_caps, num_routing):
    method forward (line 457) | def forward(self, x):
  function MLP (line 499) | def MLP(dim, projection_size, hidden_size=64):
  function SimSiamMLP (line 507) | def SimSiamMLP(dim, projection_size, hidden_size=64):
  class Unet (line 520) | class Unet(nn.Module):
    method __init__ (line 521) | def __init__(self, in_ch=1, out_ch=1, num_classes=3):
    method forward (line 552) | def forward(self, x):

FILE: classification/model/cmt.py
  function _cfg (line 23) | def _cfg(url='', **kwargs):
  class SwishImplementation (line 35) | class SwishImplementation(torch.autograd.Function):
    method forward (line 37) | def forward(ctx, i):
    method backward (line 43) | def backward(ctx, grad_output):
  class MemoryEfficientSwish (line 49) | class MemoryEfficientSwish(nn.Module):
    method forward (line 50) | def forward(self, x):
  class Mlp (line 54) | class Mlp(nn.Module):
    method __init__ (line 55) | def __init__(self, in_features, hidden_features=None, out_features=Non...
    method forward (line 73) | def forward(self, x, H, W):
  class Attention (line 87) | class Attention(nn.Module):
    method __init__ (line 88) | def __init__(self, dim, num_heads=8, qkv_bias=False, qk_scale=None,
    method forward (line 111) | def forward(self, x, H, W, relative_pos):
  class Block (line 133) | class Block(nn.Module):
    method __init__ (line 134) | def __init__(self, dim, num_heads, mlp_ratio=4., qkv_bias=False, qk_sc...
    method forward (line 148) | def forward(self, x, H, W, relative_pos):
  class PatchEmbed (line 158) | class PatchEmbed(nn.Module):
    method __init__ (line 161) | def __init__(self, img_size=224, patch_size=16, in_chans=3, embed_dim=...
    method forward (line 177) | def forward(self, x):
  class CMT (line 189) | class CMT(nn.Module):
    method __init__ (line 190) | def __init__(self, img_size=128, in_chans=1, num_classes=10, embed_dim...
    method _init_weights (line 278) | def _init_weights(self, m):
    method update_temperature (line 294) | def update_temperature(self):
    method no_weight_decay (line 300) | def no_weight_decay(self):
    method get_classifier (line 303) | def get_classifier(self):
    method reset_classifier (line 306) | def reset_classifier(self, num_classes, global_pool=''):
    method forward_features (line 310) | def forward_features(self, x):
    method forward (line 352) | def forward(self, x):
  function resize_pos_embed (line 358) | def resize_pos_embed(posemb, posemb_new):
  function checkpoint_filter_fn (line 378) | def checkpoint_filter_fn(state_dict, model):
  function _create_cmt_model (line 396) | def _create_cmt_model(pretrained=False, distilled=False, **kwargs):
  function cmt_ti (line 421) | def cmt_ti(pretrained=False, **kwargs):
  function cmt_xs (line 430) | def cmt_xs(pretrained=False, **kwargs):
  function cmt_s (line 441) | def cmt_s(pretrained=False, **kwargs):
  function cmt_b (line 452) | def cmt_b(pretrained=False, **kwargs):

FILE: classification/model/conformer.py
  class Mlp (line 8) | class Mlp(nn.Module):
    method __init__ (line 9) | def __init__(self, in_features, hidden_features=None, out_features=Non...
    method forward (line 18) | def forward(self, x):
  class Attention (line 27) | class Attention(nn.Module):
    method __init__ (line 28) | def __init__(self, dim, num_heads=8, qkv_bias=False, qk_scale=None, at...
    method forward (line 40) | def forward(self, x):
  class Block (line 55) | class Block(nn.Module):
    method __init__ (line 57) | def __init__(self, dim, num_heads, mlp_ratio=4., qkv_bias=False, qk_sc...
    method forward (line 69) | def forward(self, x):
  class ConvBlock (line 75) | class ConvBlock(nn.Module):
    method __init__ (line 77) | def __init__(self, inplanes, outplanes, stride=1, res_conv=False, act_...
    method zero_init_last_bn (line 104) | def zero_init_last_bn(self):
    method forward (line 107) | def forward(self, x, x_t=None, return_x_2=True):
  class FCUDown (line 143) | class FCUDown(nn.Module):
    method __init__ (line 147) | def __init__(self, inplanes, outplanes, dw_stride, act_layer=nn.GELU,
    method forward (line 158) | def forward(self, x, x_t):
  class FCUUp (line 170) | class FCUUp(nn.Module):
    method __init__ (line 174) | def __init__(self, inplanes, outplanes, up_stride, act_layer=nn.ReLU,
    method forward (line 183) | def forward(self, x, H, W):
  class Med_ConvBlock (line 192) | class Med_ConvBlock(nn.Module):
    method __init__ (line 195) | def __init__(self, inplanes, act_layer=nn.ReLU, groups=1, norm_layer=p...
    method zero_init_last_bn (line 218) | def zero_init_last_bn(self):
    method forward (line 221) | def forward(self, x):
  class ConvTransBlock (line 250) | class ConvTransBlock(nn.Module):
    method __init__ (line 255) | def __init__(self, inplanes, outplanes, res_conv, stride, dw_stride, e...
    method forward (line 287) | def forward(self, x, x_t):
  class Conformer (line 306) | class Conformer(nn.Module):
    method __init__ (line 308) | def __init__(self, patch_size=16, in_chans=3, num_classes=1000, base_c...
    method _init_weights (line 396) | def _init_weights(self, m):
    method no_weight_decay (line 414) | def no_weight_decay(self):
    method forward (line 418) | def forward(self, x):

FILE: classification/model/cotnet.py
  function _cfg (line 21) | def _cfg(url='', **kwargs):
  class CotLayer (line 36) | class CotLayer(nn.Module):
    method __init__ (line 37) | def __init__(self, dim, kernel_size):
    method forward (line 79) | def forward(self, x):
  class CoXtLayer (line 106) | class CoXtLayer(nn.Module):
    method __init__ (line 107) | def __init__(self, dim, kernel_size):
    method forward (line 150) | def forward(self, x):
  class Bottleneck (line 181) | class Bottleneck(nn.Module):
    method __init__ (line 184) | def __init__(self, inplanes, planes, stride=1, downsample=None, cardin...
    method zero_init_last_bn (line 225) | def zero_init_last_bn(self):
    method forward (line 228) | def forward(self, x):
  function _create_cotnet (line 266) | def _create_cotnet(variant, pretrained=False, **kwargs):
  function cotnet50 (line 271) | def cotnet50(pretrained=False, **kwargs):
  function cotnext50_2x48d (line 276) | def cotnext50_2x48d(pretrained=False, **kwargs):
  function cotnet101 (line 281) | def cotnet101(pretrained=False, **kwargs):
  function cotnext101_2x48d (line 286) | def cotnext101_2x48d(pretrained=False, **kwargs):

FILE: classification/model/cotnet_hybrid.py
  function _cfg (line 23) | def _cfg(url='', **kwargs):
  class CoTLayer (line 48) | class CoTLayer(nn.Module):
    method __init__ (line 49) | def __init__(self, dim, kernel_size):
    method forward (line 91) | def forward(self, x):
  class CoTBottleneck (line 118) | class CoTBottleneck(nn.Module):
    method __init__ (line 121) | def __init__(self, block_idx, inplanes, planes, stride=1, downsample=N...
    method zero_init_last_bn (line 169) | def zero_init_last_bn(self):
    method forward (line 172) | def forward(self, x):
  function get_padding (line 204) | def get_padding(kernel_size, stride, dilation=1):
  function downsample_conv (line 208) | def downsample_conv(
  function downsample_avg (line 221) | def downsample_avg(
  function drop_blocks (line 237) | def drop_blocks(drop_block_rate=0.):
  function make_blocks (line 243) | def make_blocks(
  function make_blocks_arr (line 288) | def make_blocks_arr(
  class CoTHybridNet (line 338) | class CoTHybridNet(nn.Module):
    method __init__ (line 339) | def __init__(self, block, layers, num_classes=1000, in_chans=3,
    method get_classifier (line 420) | def get_classifier(self):
    method reset_classifier (line 423) | def reset_classifier(self, num_classes, global_pool='avg'):
    method forward_features (line 427) | def forward_features(self, x):
    method forward (line 439) | def forward(self, x):
  function _create_se_cotnetd (line 448) | def _create_se_cotnetd(variant, pretrained=False, **kwargs):
  function se_cotnetd_50 (line 453) | def se_cotnetd_50(pretrained=False, **kwargs):
  function se_cotnetd_101 (line 461) | def se_cotnetd_101(pretrained=False, **kwargs):
  function se_cotnetd_152 (line 469) | def se_cotnetd_152(pretrained=False, **kwargs):
  function se_cotnetd_152_L (line 477) | def se_cotnetd_152_L(pretrained=False, **kwargs):
  function se_cotnetd_200 (line 485) | def se_cotnetd_200(pretrained=False, **kwargs):
  function se_cotnetd_270 (line 493) | def se_cotnetd_270(pretrained=False, **kwargs):

FILE: classification/model/features.py
  class FeatureInfo (line 20) | class FeatureInfo:
    method __init__ (line 22) | def __init__(self, feature_info: List[Dict], out_indices: Tuple[int]):
    method from_other (line 33) | def from_other(self, out_indices: Tuple[int]):
    method get (line 36) | def get(self, key, idx=None):
    method get_dicts (line 49) | def get_dicts(self, keys=None, idx=None):
    method channels (line 62) | def channels(self, idx=None):
    method reduction (line 67) | def reduction(self, idx=None):
    method module_name (line 72) | def module_name(self, idx=None):
    method __getitem__ (line 77) | def __getitem__(self, item):
    method __len__ (line 80) | def __len__(self):
  class FeatureHooks (line 84) | class FeatureHooks:
    method __init__ (line 92) | def __init__(self, hooks, named_modules, out_map=None, default_hook_ty...
    method _collect_output_hook (line 109) | def _collect_output_hook(self, hook_id, *args):
    method get_output (line 115) | def get_output(self, device) -> Dict[str, torch.tensor]:
  function _module_list (line 121) | def _module_list(module, flatten_sequential=False):
  function _get_feature_info (line 135) | def _get_feature_info(net, out_indices):
  function _get_return_layers (line 145) | def _get_return_layers(feature_info, out_map):
  class FeatureDictNet (line 153) | class FeatureDictNet(nn.ModuleDict):
    method __init__ (line 177) | def __init__(
    method _collect (line 200) | def _collect(self, x) -> (Dict[str, torch.Tensor]):
    method forward (line 214) | def forward(self, x) -> Dict[str, torch.Tensor]:
  class FeatureListNet (line 218) | class FeatureListNet(FeatureDictNet):
    method __init__ (line 224) | def __init__(
    method forward (line 231) | def forward(self, x) -> (List[torch.Tensor]):
  class FeatureHookNet (line 235) | class FeatureHookNet(nn.ModuleDict):
    method __init__ (line 248) | def __init__(
    method forward (line 280) | def forward(self, x):

FILE: classification/model/helpers.py
  function load_state_dict (line 23) | def load_state_dict(checkpoint_path, use_ema=False):
  function load_checkpoint (line 46) | def load_checkpoint(model, checkpoint_path, use_ema=False, strict=True):
  function resume_checkpoint (line 51) | def resume_checkpoint(model, checkpoint_path, optimizer=None, loss_scale...
  function load_pretrained (line 91) | def load_pretrained(model, cfg=None, num_classes=1000, in_chans=3, filte...
  function extract_layer (line 156) | def extract_layer(model, layer):
  function set_layer (line 174) | def set_layer(model, layer, val):
  function adapt_model_from_string (line 198) | def adapt_model_from_string(parent_module, model_string):
  function adapt_model_from_file (line 248) | def adapt_model_from_file(parent_module, model_variant):
  function default_cfg_for_features (line 253) | def default_cfg_for_features(default_cfg):
  function overlay_external_default_cfg (line 261) | def overlay_external_default_cfg(default_cfg, kwargs):
  function model_parameters (line 270) | def model_parameters(model, exclude_head=False):
  function named_apply (line 277) | def named_apply(fn: Callable, module: nn.Module, name='', depth_first=Tr...
  function adapt_input_conv (line 287) | def adapt_input_conv(in_chans, conv_weight):
  function build_model_with_cfg (line 311) | def build_model_with_cfg(

FILE: classification/model/hivit.py
  class Attention (line 9) | class Attention(nn.Module):
    method __init__ (line 10) | def __init__(self, input_size, dim, num_heads, qkv_bias=True, qk_scale...
    method forward (line 43) | def forward(self, x, rpe_index=None, mask=None):
  class BlockWithRPE (line 69) | class BlockWithRPE(nn.Module):
    method __init__ (line 70) | def __init__(self, input_size, dim, num_heads=0., mlp_ratio=4., qkv_bi...
    method forward (line 91) | def forward(self, x, rpe_index=None, mask=None):
  class PatchEmbed (line 98) | class PatchEmbed(nn.Module):
    method __init__ (line 99) | def __init__(
    method forward (line 124) | def forward(self, x):
  class PatchMerge (line 138) | class PatchMerge(nn.Module):
    method __init__ (line 139) | def __init__(self, dim, norm_layer):
    method forward (line 144) | def forward(self, x, *args, **kwargs):
  class HiViT (line 167) | class HiViT(nn.Module):
    method __init__ (line 168) | def __init__(self, img_size=224, patch_size=16, inner_patches=4, in_ch...
    method _init_weights (line 242) | def _init_weights(self, m):
    method no_weight_decay (line 252) | def no_weight_decay(self):
    method no_weight_decay_keywords (line 256) | def no_weight_decay_keywords(self):
    method forward_features (line 259) | def forward_features(self, x, ids_keep=None, mask=None):
    method forward (line 297) | def forward(self, x):
  function hivit_base (line 304) | def hivit_base(**kwargs):

FILE: classification/model/inception_transformer.py
  function _cfg (line 42) | def _cfg(url='', **kwargs):
  function _no_grad_trunc_normal_ (line 72) | def _no_grad_trunc_normal_(tensor, mean, std, a, b):
  function trunc_normal_ (line 108) | def trunc_normal_(tensor, mean=0., std=1., a=-2., b=2.):
  function variance_scaling_ (line 130) | def variance_scaling_(tensor, scale=1.0, mode='fan_in', distribution='no...
  function lecun_normal_ (line 153) | def lecun_normal_(tensor):
  class PatchEmbed (line 156) | class PatchEmbed(nn.Module):
    method __init__ (line 159) | def __init__(self, img_size=224, kernel_size=16,  stride=16, padding=0...
    method forward (line 169) | def forward(self, x):
  class FirstPatchEmbed (line 176) | class FirstPatchEmbed(nn.Module):
    method __init__ (line 179) | def __init__(self, kernel_size=3,  stride=2, padding=1, in_chans=3, em...
    method forward (line 188) | def forward(self, x):
  class HighMixer (line 198) | class HighMixer(nn.Module):
    method __init__ (line 199) | def __init__(self, dim, kernel_size=3, stride=1, padding=1,
    method forward (line 217) | def forward(self, x):
  class LowMixer (line 233) | class LowMixer(nn.Module):
    method __init__ (line 234) | def __init__(self, dim, num_heads=8, qkv_bias=False, attn_drop=0., poo...
    method att_fun (line 249) | def att_fun(self, q, k, v, B, N, C):
    method forward (line 257) | def forward(self, x):
  class Mixer (line 271) | class Mixer(nn.Module):
    method __init__ (line 272) | def __init__(self, dim, num_heads=8, qkv_bias=False, attn_drop=0., pro...
    method forward (line 289) | def forward(self, x):
  class Block (line 306) | class Block(nn.Module):
    method __init__ (line 308) | def __init__(self, dim, num_heads, mlp_ratio=4., qkv_bias=False, drop=...
    method forward (line 330) | def forward(self, x):
  class InceptionTransformer (line 339) | class InceptionTransformer(nn.Module):
    method __init__ (line 340) | def __init__(self, img_size=224, patch_size=16, in_chans=3, num_classe...
    method init_weights (line 415) | def init_weights(self, mode=''):
    method _init_weights (line 423) | def _init_weights(self, m):
    method no_weight_decay (line 429) | def no_weight_decay(self):
    method get_classifier (line 432) | def get_classifier(self):
    method reset_classifier (line 438) | def reset_classifier(self, num_classes, global_pool=''):
    method _get_pos_embed (line 444) | def _get_pos_embed(self, pos_embed, num_patches_def, H, W):
    method forward_features (line 452) | def forward_features(self, x):
    method forward (line 480) | def forward(self, x):
  function _init_vit_weights (line 485) | def _init_vit_weights(module: nn.Module, name: str = '', head_bias: floa...
  function iformer_small (line 512) | def iformer_small(pretrained=False, **kwargs):
  function iformer_small_384 (line 536) | def iformer_small_384(pretrained=False, **kwargs):
  function iformer_base (line 560) | def iformer_base(pretrained=False, **kwargs):
  function iformer_base_384 (line 584) | def iformer_base_384(pretrained=False, **kwargs):
  function iformer_large (line 606) | def iformer_large(pretrained=False, **kwargs):
  function iformer_large_384 (line 630) | def iformer_large_384(pretrained=False, **kwargs):

FILE: classification/model/layers/activations.py
  function swish (line 14) | def swish(x, inplace: bool = False):
  class Swish (line 20) | class Swish(nn.Module):
    method __init__ (line 21) | def __init__(self, inplace: bool = False):
    method forward (line 25) | def forward(self, x):
  function mish (line 29) | def mish(x, inplace: bool = False):
  class Mish (line 36) | class Mish(nn.Module):
    method __init__ (line 39) | def __init__(self, inplace: bool = False):
    method forward (line 42) | def forward(self, x):
  function sigmoid (line 46) | def sigmoid(x, inplace: bool = False):
  class Sigmoid (line 51) | class Sigmoid(nn.Module):
    method __init__ (line 52) | def __init__(self, inplace: bool = False):
    method forward (line 56) | def forward(self, x):
  function tanh (line 60) | def tanh(x, inplace: bool = False):
  class Tanh (line 65) | class Tanh(nn.Module):
    method __init__ (line 66) | def __init__(self, inplace: bool = False):
    method forward (line 70) | def forward(self, x):
  function hard_swish (line 74) | def hard_swish(x, inplace: bool = False):
  class HardSwish (line 79) | class HardSwish(nn.Module):
    method __init__ (line 80) | def __init__(self, inplace: bool = False):
    method forward (line 84) | def forward(self, x):
  function hard_sigmoid (line 88) | def hard_sigmoid(x, inplace: bool = False):
  class HardSigmoid (line 95) | class HardSigmoid(nn.Module):
    method __init__ (line 96) | def __init__(self, inplace: bool = False):
    method forward (line 100) | def forward(self, x):
  function hard_mish (line 104) | def hard_mish(x, inplace: bool = False):
  class HardMish (line 115) | class HardMish(nn.Module):
    method __init__ (line 116) | def __init__(self, inplace: bool = False):
    method forward (line 120) | def forward(self, x):

FILE: classification/model/layers/activations_jit.py
  function swish_jit (line 19) | def swish_jit(x, inplace: bool = False):
  function mish_jit (line 26) | def mish_jit(x, _inplace: bool = False):
  class SwishJit (line 32) | class SwishJit(nn.Module):
    method __init__ (line 33) | def __init__(self, inplace: bool = False):
    method forward (line 36) | def forward(self, x):
  class MishJit (line 40) | class MishJit(nn.Module):
    method __init__ (line 41) | def __init__(self, inplace: bool = False):
    method forward (line 44) | def forward(self, x):
  function hard_sigmoid_jit (line 49) | def hard_sigmoid_jit(x, inplace: bool = False):
  class HardSigmoidJit (line 54) | class HardSigmoidJit(nn.Module):
    method __init__ (line 55) | def __init__(self, inplace: bool = False):
    method forward (line 58) | def forward(self, x):
  function hard_swish_jit (line 63) | def hard_swish_jit(x, inplace: bool = False):
  class HardSwishJit (line 68) | class HardSwishJit(nn.Module):
    method __init__ (line 69) | def __init__(self, inplace: bool = False):
    method forward (line 72) | def forward(self, x):
  function hard_mish_jit (line 77) | def hard_mish_jit(x, inplace: bool = False):
  class HardMishJit (line 85) | class HardMishJit(nn.Module):
    method __init__ (line 86) | def __init__(self, inplace: bool = False):
    method forward (line 89) | def forward(self, x):

FILE: classification/model/layers/activations_me.py
  function swish_jit_fwd (line 18) | def swish_jit_fwd(x):
  function swish_jit_bwd (line 23) | def swish_jit_bwd(x, grad_output):
  class SwishJitAutoFn (line 28) | class SwishJitAutoFn(torch.autograd.Function):
    method forward (line 35) | def forward(ctx, x):
    method backward (line 40) | def backward(ctx, grad_output):
  function swish_me (line 45) | def swish_me(x, inplace=False):
  class SwishMe (line 49) | class SwishMe(nn.Module):
    method __init__ (line 50) | def __init__(self, inplace: bool = False):
    method forward (line 53) | def forward(self, x):
  function mish_jit_fwd (line 58) | def mish_jit_fwd(x):
  function mish_jit_bwd (line 63) | def mish_jit_bwd(x, grad_output):
  class MishJitAutoFn (line 69) | class MishJitAutoFn(torch.autograd.Function):
    method forward (line 74) | def forward(ctx, x):
    method backward (line 79) | def backward(ctx, grad_output):
  function mish_me (line 84) | def mish_me(x, inplace=False):
  class MishMe (line 88) | class MishMe(nn.Module):
    method __init__ (line 89) | def __init__(self, inplace: bool = False):
    method forward (line 92) | def forward(self, x):
  function hard_sigmoid_jit_fwd (line 97) | def hard_sigmoid_jit_fwd(x, inplace: bool = False):
  function hard_sigmoid_jit_bwd (line 102) | def hard_sigmoid_jit_bwd(x, grad_output):
  class HardSigmoidJitAutoFn (line 107) | class HardSigmoidJitAutoFn(torch.autograd.Function):
    method forward (line 109) | def forward(ctx, x):
    method backward (line 114) | def backward(ctx, grad_output):
  function hard_sigmoid_me (line 119) | def hard_sigmoid_me(x, inplace: bool = False):
  class HardSigmoidMe (line 123) | class HardSigmoidMe(nn.Module):
    method __init__ (line 124) | def __init__(self, inplace: bool = False):
    method forward (line 127) | def forward(self, x):
  function hard_swish_jit_fwd (line 132) | def hard_swish_jit_fwd(x):
  function hard_swish_jit_bwd (line 137) | def hard_swish_jit_bwd(x, grad_output):
  class HardSwishJitAutoFn (line 143) | class HardSwishJitAutoFn(torch.autograd.Function):
    method forward (line 146) | def forward(ctx, x):
    method backward (line 151) | def backward(ctx, grad_output):
  function hard_swish_me (line 156) | def hard_swish_me(x, inplace=False):
  class HardSwishMe (line 160) | class HardSwishMe(nn.Module):
    method __init__ (line 161) | def __init__(self, inplace: bool = False):
    method forward (line 164) | def forward(self, x):
  function hard_mish_jit_fwd (line 169) | def hard_mish_jit_fwd(x):
  function hard_mish_jit_bwd (line 174) | def hard_mish_jit_bwd(x, grad_output):
  class HardMishJitAutoFn (line 180) | class HardMishJitAutoFn(torch.autograd.Function):
    method forward (line 186) | def forward(ctx, x):
    method backward (line 191) | def backward(ctx, grad_output):
  function hard_mish_me (line 196) | def hard_mish_me(x, inplace: bool = False):
  class HardMishMe (line 200) | class HardMishMe(nn.Module):
    method __init__ (line 201) | def __init__(self, inplace: bool = False):
    method forward (line 204) | def forward(self, x):

FILE: classification/model/layers/adaptive_avgmax_pool.py
  function adaptive_pool_feat_mult (line 17) | def adaptive_pool_feat_mult(pool_type='avg'):
  function adaptive_avgmax_pool2d (line 24) | def adaptive_avgmax_pool2d(x, output_size=1):
  function adaptive_catavgmax_pool2d (line 30) | def adaptive_catavgmax_pool2d(x, output_size=1):
  function select_adaptive_pool2d (line 36) | def select_adaptive_pool2d(x, pool_type='avg', output_size=1):
  class FastAdaptiveAvgPool2d (line 52) | class FastAdaptiveAvgPool2d(nn.Module):
    method __init__ (line 53) | def __init__(self, flatten=False):
    method forward (line 57) | def forward(self, x):
  class AdaptiveAvgMaxPool2d (line 61) | class AdaptiveAvgMaxPool2d(nn.Module):
    method __init__ (line 62) | def __init__(self, output_size=1):
    method forward (line 66) | def forward(self, x):
  class AdaptiveCatAvgMaxPool2d (line 70) | class AdaptiveCatAvgMaxPool2d(nn.Module):
    method __init__ (line 71) | def __init__(self, output_size=1):
    method forward (line 75) | def forward(self, x):
  class SelectAdaptivePool2d (line 79) | class SelectAdaptivePool2d(nn.Module):
    method __init__ (line 82) | def __init__(self, output_size=1, pool_type='fast', flatten=False):
    method is_identity (line 103) | def is_identity(self):
    method forward (line 106) | def forward(self, x):
    method feat_mult (line 112) | def feat_mult(self):
    method __repr__ (line 115) | def __repr__(self):

FILE: classification/model/layers/aggregation_zeropad.py
  function GET_BLOCKS (line 17) | def GET_BLOCKS(N):
  class AggregationZeropad (line 112) | class AggregationZeropad(Function):
    method forward (line 114) | def forward(ctx, input, weight, kernel_size, stride, padding, dilation):
    method backward (line 148) | def backward(ctx, grad_output):
  function aggregation_zeropad (line 188) | def aggregation_zeropad(input, weight, kernel_size=3, stride=1, padding=...
  class LocalConvolution (line 199) | class LocalConvolution(torch.nn.Module):
    method __init__ (line 200) | def __init__(
    method forward (line 219) | def forward(self, input: Tensor, weight: Tensor):
  function test_aggregation_zeropad (line 238) | def test_aggregation_zeropad():
  function test_aggregation_zeropad_ks1 (line 266) | def test_aggregation_zeropad_ks1():

FILE: classification/model/layers/anti_aliasing.py
  class AntiAliasDownsampleLayer (line 7) | class AntiAliasDownsampleLayer(nn.Module):
    method __init__ (line 8) | def __init__(self, channels: int = 0, filt_size: int = 3, stride: int ...
    method forward (line 17) | def forward(self, x):
  class DownsampleJIT (line 22) | class DownsampleJIT(object):
    method __init__ (line 23) | def __init__(self, channels: int = 0, filt_size: int = 3, stride: int ...
    method _create_filter (line 31) | def _create_filter(self, like: torch.Tensor):
    method __call__ (line 37) | def __call__(self, input: torch.Tensor):
  class Downsample (line 43) | class Downsample(nn.Module):
    method __init__ (line 44) | def __init__(self, channels=None, filt_size=3, stride=2):
    method forward (line 58) | def forward(self, input):

FILE: classification/model/layers/blur_pool.py
  class BlurPool2d (line 19) | class BlurPool2d(nn.Module):
    method __init__ (line 34) | def __init__(self, channels, filt_size=3, stride=2) -> None:
    method _create_filter (line 45) | def _create_filter(self, like: torch.Tensor):
    method _apply (line 49) | def _apply(self, fn):
    method forward (line 54) | def forward(self, input_tensor: torch.Tensor) -> torch.Tensor:

FILE: classification/model/layers/cbam.py
  class ChannelAttn (line 17) | class ChannelAttn(nn.Module):
    method __init__ (line 20) | def __init__(self, channels, reduction=16, act_layer=nn.ReLU):
    method forward (line 26) | def forward(self, x):
  class LightChannelAttn (line 35) | class LightChannelAttn(ChannelAttn):
    method __init__ (line 38) | def __init__(self, channels, reduction=16):
    method forward (line 41) | def forward(self, x):
  class SpatialAttn (line 47) | class SpatialAttn(nn.Module):
    method __init__ (line 50) | def __init__(self, kernel_size=7):
    method forward (line 54) | def forward(self, x):
  class LightSpatialAttn (line 62) | class LightSpatialAttn(nn.Module):
    method __init__ (line 65) | def __init__(self, kernel_size=7):
    method forward (line 69) | def forward(self, x):
  class CbamModule (line 77) | class CbamModule(nn.Module):
    method __init__ (line 78) | def __init__(self, channels, spatial_kernel_size=7):
    method forward (line 83) | def forward(self, x):
  class LightCbamModule (line 89) | class LightCbamModule(nn.Module):
    method __init__ (line 90) | def __init__(self, channels, spatial_kernel_size=7):
    method forward (line 95) | def forward(self, x):

FILE: classification/model/layers/classifier.py
  function create_classifier (line 11) | def create_classifier(num_features, num_classes, pool_type='avg', use_co...
  class ClassifierHead (line 28) | class ClassifierHead(nn.Module):
    method __init__ (line 31) | def __init__(self, in_chs, num_classes, pool_type='avg', drop_rate=0.):
    method forward (line 36) | def forward(self, x):

FILE: classification/model/layers/cond_conv2d.py
  function get_condconv_initializer (line 21) | def get_condconv_initializer(initializer, num_experts, expert_shape):
  class CondConv2d (line 34) | class CondConv2d(nn.Module):
    method __init__ (line 43) | def __init__(self, in_channels, out_channels, kernel_size=3,
    method reset_parameters (line 73) | def reset_parameters(self):
    method forward (line 84) | def forward(self, x, routing_weights):

FILE: classification/model/layers/config.py
  function is_no_jit (line 25) | def is_no_jit():
  class set_no_jit (line 29) | class set_no_jit:
    method __init__ (line 30) | def __init__(self, mode: bool) -> None:
    method __enter__ (line 35) | def __enter__(self) -> None:
    method __exit__ (line 38) | def __exit__(self, *args: Any) -> bool:
  function is_exportable (line 44) | def is_exportable():
  class set_exportable (line 48) | class set_exportable:
    method __init__ (line 49) | def __init__(self, mode: bool) -> None:
    method __enter__ (line 54) | def __enter__(self) -> None:
    method __exit__ (line 57) | def __exit__(self, *args: Any) -> bool:
  function is_scriptable (line 63) | def is_scriptable():
  class set_scriptable (line 67) | class set_scriptable:
    method __init__ (line 68) | def __init__(self, mode: bool) -> None:
    method __enter__ (line 73) | def __enter__(self) -> None:
    method __exit__ (line 76) | def __exit__(self, *args: Any) -> bool:
  class set_layer_config (line 82) | class set_layer_config:
    method __init__ (line 86) | def __init__(
    method __enter__ (line 106) | def __enter__(self) -> None:
    method __exit__ (line 109) | def __exit__(self, *args: Any) -> bool:

FILE: classification/model/layers/conv2d_same.py
  function conv2d_same (line 13) | def conv2d_same(
  class Conv2dSame (line 20) | class Conv2dSame(nn.Conv2d):
    method __init__ (line 24) | def __init__(self, in_channels, out_channels, kernel_size, stride=1,
    method forward (line 29) | def forward(self, x):
  function create_conv2d_pad (line 33) | def create_conv2d_pad(in_chs, out_chs, kernel_size, **kwargs):

FILE: classification/model/layers/conv_bn_act.py
  class ConvBnAct (line 11) | class ConvBnAct(nn.Module):
    method __init__ (line 12) | def __init__(self, in_channels, out_channels, kernel_size=1, stride=1,...
    method in_channels (line 28) | def in_channels(self):
    method out_channels (line 32) | def out_channels(self):
    method forward (line 35) | def forward(self, x):

FILE: classification/model/layers/create_act.py
  function get_act_fn (line 89) | def get_act_fn(name='relu'):
  function get_act_layer (line 107) | def get_act_layer(name='relu'):
  function create_act_layer (line 123) | def create_act_layer(name, inplace=False, **kwargs):

FILE: classification/model/layers/create_attn.py
  function create_attn (line 11) | def create_attn(attn_type, channels, **kwargs):

FILE: classification/model/layers/create_conv2d.py
  function create_conv2d (line 11) | def create_conv2d(in_channels, out_channels, kernel_size, **kwargs):

FILE: classification/model/layers/create_norm_act.py
  function get_norm_act_layer (line 22) | def get_norm_act_layer(layer_class):
  function create_norm_act (line 39) | def create_norm_act(layer_type, num_features, apply_act=True, jit=False,...
  function convert_norm_act_type (line 50) | def convert_norm_act_type(norm_layer, act_layer, norm_kwargs=None):

FILE: classification/model/layers/drop.py
  function drop_block_2d (line 22) | def drop_block_2d(
  function drop_block_fast_2d (line 70) | def drop_block_fast_2d(
  class DropBlock2d (line 109) | class DropBlock2d(nn.Module):
    method __init__ (line 112) | def __init__(self,
    method forward (line 129) | def forward(self, x):
  function drop_path (line 140) | def drop_path(x, drop_prob: float = 0., training: bool = False):
  class DropPath (line 160) | class DropPath(nn.Module):
    method __init__ (line 163) | def __init__(self, drop_prob=None):
    method forward (line 167) | def forward(self, x):

FILE: classification/model/layers/eca.py
  class EcaModule (line 41) | class EcaModule(nn.Module):
    method __init__ (line 52) | def __init__(self, channels=None, kernel_size=3, gamma=2, beta=1):
    method forward (line 61) | def forward(self, x):
  class CecaModule (line 68) | class CecaModule(nn.Module):
    method __init__ (line 88) | def __init__(self, channels=None, kernel_size=3, gamma=2, beta=1):
    method forward (line 101) | def forward(self, x):

FILE: classification/model/layers/evo_norm.py
  class EvoNormBatch2d (line 16) | class EvoNormBatch2d(nn.Module):
    method __init__ (line 17) | def __init__(self, num_features, apply_act=True, momentum=0.1, eps=1e-...
    method reset_parameters (line 30) | def reset_parameters(self):
    method forward (line 36) | def forward(self, x):
  class EvoNormSample2d (line 55) | class EvoNormSample2d(nn.Module):
    method __init__ (line 56) | def __init__(self, num_features, apply_act=True, groups=8, eps=1e-5, d...
    method reset_parameters (line 68) | def reset_parameters(self):
    method forward (line 74) | def forward(self, x):

FILE: classification/model/layers/helpers.py
  function _ntuple (line 10) | def _ntuple(n):

FILE: classification/model/layers/inplace_abn.py
  function inplace_abn (line 10) | def inplace_abn(x, weight, bias, running_mean, running_var,
  function inplace_abn_sync (line 15) | def inplace_abn_sync(**kwargs):
  class InplaceAbn (line 19) | class InplaceAbn(nn.Module):
    method __init__ (line 40) | def __init__(self, num_features, eps=1e-5, momentum=0.1, affine=True, ...
    method reset_parameters (line 74) | def reset_parameters(self):
    method forward (line 81) | def forward(self, x):

FILE: classification/model/layers/kerv2d.py
  class Kerv2d (line 9) | class Kerv2d(nn.Conv2d):
    method __init__ (line 10) | def __init__(
    method forward (line 35) | def forward(self, input):

FILE: classification/model/layers/median_pool.py
  class MedianPool2d (line 9) | class MedianPool2d(nn.Module):
    method __init__ (line 18) | def __init__(self, kernel_size=3, stride=1, padding=0, same=False):
    method _padding (line 25) | def _padding(self, x):
    method forward (line 45) | def forward(self, x):

FILE: classification/model/layers/mixed_conv2d.py
  function _split_channels (line 14) | def _split_channels(num_chan, num_groups):
  class MixedConv2d (line 20) | class MixedConv2d(nn.ModuleDict):
    method __init__ (line 26) | def __init__(self, in_channels, out_channels, kernel_size=3,
    method forward (line 47) | def forward(self, x):

FILE: classification/model/layers/mlp.py
  class Mlp (line 8) | class Mlp(nn.Module):
    method __init__ (line 11) | def __init__(self, in_features, hidden_features=None, out_features=Non...
    method forward (line 20) | def forward(self, x):
  class GluMlp (line 29) | class GluMlp(nn.Module):
    method __init__ (line 33) | def __init__(self, in_features, hidden_features=None, out_features=Non...
    method init_weights (line 43) | def init_weights(self):
    method forward (line 49) | def forward(self, x):
  class GatedMlp (line 59) | class GatedMlp(nn.Module):
    method __init__ (line 62) | def __init__(self, in_features, hidden_features=None, out_features=Non...
    method forward (line 78) | def forward(self, x):
  class ConvMlp (line 88) | class ConvMlp(nn.Module):
    method __init__ (line 91) | def __init__(
    method forward (line 102) | def forward(self, x):

FILE: classification/model/layers/norm_act.py
  class BatchNormAct2d (line 10) | class BatchNormAct2d(nn.BatchNorm2d):
    method __init__ (line 17) | def __init__(self, num_features, eps=1e-5, momentum=0.1, affine=True, ...
    method _forward_jit (line 29) | def _forward_jit(self, x):
    method _forward_python (line 56) | def _forward_python(self, x):
    method forward (line 59) | def forward(self, x):
  class GroupNormAct (line 70) | class GroupNormAct(nn.GroupNorm):
    method __init__ (line 72) | def __init__(self, num_groups, num_channels, eps=1e-5, affine=True,
    method forward (line 82) | def forward(self, x):

FILE: classification/model/layers/padding.py
  function get_padding (line 12) | def get_padding(kernel_size: int, stride: int = 1, dilation: int = 1, **...
  function get_same_padding (line 18) | def get_same_padding(x: int, k: int, s: int, d: int):
  function is_static_pad (line 23) | def is_static_pad(kernel_size: int, stride: int = 1, dilation: int = 1, ...
  function pad_same (line 28) | def pad_same(x, k: List[int], s: List[int], d: List[int] = (1, 1), value...
  function get_padding_value (line 36) | def get_padding_value(padding, kernel_size, **kwargs) -> Tuple[Tuple, bo...

FILE: classification/model/layers/patch_embed.py
  class PatchEmbed (line 15) | class PatchEmbed(nn.Module):
    method __init__ (line 18) | def __init__(self, img_size=224, patch_size=16, in_chans=3, embed_dim=...
    method forward (line 31) | def forward(self, x):

FILE: classification/model/layers/pool2d_same.py
  function avg_pool2d_same (line 14) | def avg_pool2d_same(x, kernel_size: List[int], stride: List[int], paddin...
  class AvgPool2dSame (line 21) | class AvgPool2dSame(nn.AvgPool2d):
    method __init__ (line 24) | def __init__(self, kernel_size: int, stride=None, padding=0, ceil_mode...
    method forward (line 29) | def forward(self, x):
  function max_pool2d_same (line 34) | def max_pool2d_same(
  class MaxPool2dSame (line 41) | class MaxPool2dSame(nn.MaxPool2d):
    method __init__ (line 44) | def __init__(self, kernel_size: int, stride=None, padding=0, dilation=...
    method forward (line 50) | def forward(self, x):
  function create_pool2d (line 54) | def create_pool2d(pool_type, kernel_size, stride=None, **kwargs):

FILE: classification/model/layers/se.py
  class SEModule (line 5) | class SEModule(nn.Module):
    method __init__ (line 7) | def __init__(self, channels, reduction=16, act_layer=nn.ReLU, min_chan...
    method forward (line 16) | def forward(self, x):
  class EffectiveSEModule (line 24) | class EffectiveSEModule(nn.Module):
    method __init__ (line 28) | def __init__(self, channels, gate_layer='hard_sigmoid'):
    method forward (line 33) | def forward(self, x):

FILE: classification/model/layers/selective_kernel.py
  function _kernel_valid (line 13) | def _kernel_valid(k):
  class SelectiveKernelAttn (line 20) | class SelectiveKernelAttn(nn.Module):
    method __init__ (line 21) | def __init__(self, channels, num_paths=2, attn_channels=32,
    method forward (line 35) | def forward(self, x):
  class SelectiveKernelConv (line 48) | class SelectiveKernelConv(nn.Module):
    method __init__ (line 50) | def __init__(self, in_channels, out_channels, kernel_size=None, stride...
    method forward (line 108) | def forward(self, x):

FILE: classification/model/layers/separable_conv.py
  class SeparableConvBnAct (line 14) | class SeparableConvBnAct(nn.Module):
    method __init__ (line 17) | def __init__(self, in_channels, out_channels, kernel_size=3, stride=1,...
    method in_channels (line 34) | def in_channels(self):
    method out_channels (line 38) | def out_channels(self):
    method forward (line 41) | def forward(self, x):
  class SeparableConv2d (line 49) | class SeparableConv2d(nn.Module):
    method __init__ (line 52) | def __init__(self, in_channels, out_channels, kernel_size=3, stride=1,...
    method in_channels (line 64) | def in_channels(self):
    method out_channels (line 68) | def out_channels(self):
    method forward (line 71) | def forward(self, x):

FILE: classification/model/layers/shiftlution.py
  class Shiftlution (line 5) | class Shiftlution(nn.Module):
    method __init__ (line 6) | def __init__(self, channels, kernel_h, kernel_w, max_height = 400, max...
    method forward (line 49) | def forward(self, x):

FILE: classification/model/layers/space_to_depth.py
  class SpaceToDepth (line 5) | class SpaceToDepth(nn.Module):
    method __init__ (line 6) | def __init__(self, block_size=4):
    method forward (line 11) | def forward(self, x):
  class SpaceToDepthJit (line 20) | class SpaceToDepthJit(object):
    method __call__ (line 21) | def __call__(self, x: torch.Tensor):
  class SpaceToDepthModule (line 30) | class SpaceToDepthModule(nn.Module):
    method __init__ (line 31) | def __init__(self, no_jit=False):
    method forward (line 38) | def forward(self, x):
  class DepthToSpace (line 42) | class DepthToSpace(nn.Module):
    method __init__ (line 44) | def __init__(self, block_size):
    method forward (line 48) | def forward(self, x):

FILE: classification/model/layers/split_attn.py
  class RadixSoftmax (line 14) | class RadixSoftmax(nn.Module):
    method __init__ (line 15) | def __init__(self, radix, cardinality):
    method forward (line 20) | def forward(self, x):
  class SplitAttnConv2d (line 31) | class SplitAttnConv2d(nn.Module):
    method __init__ (line 34) | def __init__(self, in_channels, out_channels, kernel_size, stride=1, p...
    method in_channels (line 55) | def in_channels(self):
    method out_channels (line 59) | def out_channels(self):
    method forward (line 62) | def forward(self, x):

FILE: classification/model/layers/split_batchnorm.py
  class SplitBatchNorm2d (line 18) | class SplitBatchNorm2d(torch.nn.BatchNorm2d):
    method __init__ (line 20) | def __init__(self, num_features, eps=1e-5, momentum=0.1, affine=True,
    method forward (line 28) | def forward(self, input: torch.Tensor):
  function convert_splitbn_model (line 41) | def convert_splitbn_model(module, num_splits=2):

FILE: classification/model/layers/std_conv.py
  function get_weight (line 8) | def get_weight(module):
  class StdConv2d (line 14) | class StdConv2d(nn.Conv2d):
    method __init__ (line 19) | def __init__(
    method get_weight (line 29) | def get_weight(self):
    method forward (line 34) | def forward(self, x):
  class StdConv2dSame (line 39) | class StdConv2dSame(nn.Conv2d):
    method __init__ (line 44) | def __init__(
    method get_weight (line 54) | def get_weight(self):
    method forward (line 59) | def forward(self, x):
  class ScaledStdConv2d (line 66) | class ScaledStdConv2d(nn.Conv2d):
    method __init__ (line 73) | def __init__(
    method get_weight (line 86) | def get_weight(self):
    method forward (line 94) | def forward(self, x):
  class ScaledStdConv2dSame (line 98) | class ScaledStdConv2dSame(nn.Conv2d):
    method __init__ (line 105) | def __init__(
    method get_weight (line 126) | def get_weight(self):
    method forward (line 134) | def forward(self, x):

FILE: classification/model/layers/tbconv.py
  class TBConv (line 9) | class TBConv(nn.Module):
    method __init__ (line 10) | def __init__(
    method reset_parameters (line 68) | def reset_parameters(self) -> None:
    method extra_repr (line 75) | def extra_repr(self):
    method __setstate__ (line 94) | def __setstate__(self, state):
    method forward (line 99) | def forward(self, input: Tensor, weight=None) -> Tensor:

FILE: classification/model/layers/test_time_pool.py
  class TestTimePoolHead (line 16) | class TestTimePoolHead(nn.Module):
    method __init__ (line 17) | def __init__(self, base, original_pool=7):
    method forward (line 31) | def forward(self, x):
  function apply_test_time_pool (line 39) | def apply_test_time_pool(model, config):

FILE: classification/model/layers/utils.py
  function Dtype (line 8) | def Dtype(t):
  function load_kernel (line 15) | def load_kernel(kernel_name, code, **kwargs):

FILE: classification/model/layers/weight_init.py
  function _no_grad_trunc_normal_ (line 8) | def _no_grad_trunc_normal_(tensor, mean, std, a, b):
  function trunc_normal_ (line 44) | def trunc_normal_(tensor, mean=0., std=1., a=-2., b=2.):
  function variance_scaling_ (line 65) | def variance_scaling_(tensor, scale=1.0, mode='fan_in', distribution='no...
  function lecun_normal_ (line 88) | def lecun_normal_(tensor):

FILE: classification/model/nextvit.py
  class ConvBNReLU (line 15) | class ConvBNReLU(nn.Module):
    method __init__ (line 16) | def __init__(
    method forward (line 29) | def forward(self, x):
  function _make_divisible (line 36) | def _make_divisible(v, divisor, min_value=None):
  class PatchEmbed (line 46) | class PatchEmbed(nn.Module):
    method __init__ (line 47) | def __init__(self,
    method forward (line 66) | def forward(self, x):
  class MHCA (line 70) | class MHCA(nn.Module):
    method __init__ (line 74) | def __init__(self, out_channels, head_dim):
    method forward (line 83) | def forward(self, x):
  class Mlp (line 91) | class Mlp(nn.Module):
    method __init__ (line 92) | def __init__(self, in_features, out_features=None, mlp_ratio=None, dro...
    method merge_bn (line 101) | def merge_bn(self, pre_norm):
    method forward (line 104) | def forward(self, x):
  class NCB (line 113) | class NCB(nn.Module):
    method __init__ (line 117) | def __init__(self, in_channels, out_channels, stride=1, path_dropout=0,
    method merge_bn (line 134) | def merge_bn(self):
    method forward (line 139) | def forward(self, x):
  class E_MHSA (line 150) | class E_MHSA(nn.Module):
    method __init__ (line 154) | def __init__(self, dim, out_dim=None, head_dim=32, qkv_bias=True, qk_s...
    method merge_bn (line 175) | def merge_bn(self, pre_bn):
    method forward (line 185) | def forward(self, x):
  class NTB (line 216) | class NTB(nn.Module):
    method __init__ (line 220) | def __init__(
    method merge_bn (line 249) | def merge_bn(self):
    method forward (line 255) | def forward(self, x):
  class NextViT (line 278) | class NextViT(nn.Module):
    method __init__ (line 279) | def __init__(self, stem_chs, depths, path_dropout, attn_drop=0, drop=0...
    method merge_bn (line 342) | def merge_bn(self):
    method _initialize_weights (line 348) | def _initialize_weights(self):
    method forward (line 362) | def forward(self, x):
  function nextvit_small (line 377) | def nextvit_small(pretrained=False, pretrained_cfg=None, **kwargs):
  function nextvit_base (line 383) | def nextvit_base(pretrained=False, pretrained_cfg=None, **kwargs):
  function nextvit_large (line 389) | def nextvit_large(pretrained=False, pretrained_cfg=None, **kwargs):

FILE: classification/model/registry.py
  function register_model (line 18) | def register_model(fn):
  function _natural_key (line 45) | def _natural_key(string_):
  function list_models (line 49) | def list_models(filter='', module='', pretrained=False, exclude_filters=...
  function is_model (line 80) | def is_model(model_name):
  function model_entrypoint (line 86) | def model_entrypoint(model_name):
  function list_modules (line 92) | def list_modules():
  function is_model_in_modules (line 99) | def is_model_in_modules(model_name, module_names):

FILE: classification/model/res2net.py
  class Bottle2neck (line 19) | class Bottle2neck(nn.Module):
    method __init__ (line 22) | def __init__(self, inplanes, planes, stride=1, downsample=None, baseWi...
    method forward (line 62) | def forward(self, x):
  class Res2Net (line 99) | class Res2Net(nn.Module):
    method __init__ (line 101) | def __init__(self, block, layers, baseWidth=26, scale=4, num_classes=10):
    method _make_layer (line 125) | def _make_layer(self, block, planes, blocks, stride=1):
    method forward (line 143) | def forward(self, x):
  function res2net50 (line 161) | def res2net50(pretrained=False, **kwargs):
  function res2net50_26w_4s (line 173) | def res2net50_26w_4s(pretrained=False, **kwargs):
  function res2net101_26w_4s (line 184) | def res2net101_26w_4s(pretrained=False, **kwargs):
  function res2net50_26w_6s (line 195) | def res2net50_26w_6s(pretrained=False, **kwargs):
  function res2net50_26w_8s (line 206) | def res2net50_26w_8s(pretrained=False, **kwargs):
  function res2net50_48w_2s (line 217) | def res2net50_48w_2s(pretrained=False, **kwargs):
  function res2net50_14w_8s (line 228) | def res2net50_14w_8s(pretrained=False, **kwargs):

FILE: classification/model/resnet.py
  function _cfg (line 24) | def _cfg(url='', **kwargs):
  function get_padding (line 217) | def get_padding(kernel_size, stride, dilation=1):
  class BasicBlock (line 222) | class BasicBlock(nn.Module):
    method __init__ (line 225) | def __init__(self, inplanes, planes, stride=1, downsample=None, cardin...
    method zero_init_last_bn (line 257) | def zero_init_last_bn(self):
    method forward (line 260) | def forward(self, x):
  class Bottleneck (line 290) | class Bottleneck(nn.Module):
    method __init__ (line 293) | def __init__(self, inplanes, planes, stride=1, downsample=None, cardin...
    method zero_init_last_bn (line 327) | def zero_init_last_bn(self):
    method forward (line 330) | def forward(self, x):
  function downsample_conv (line 366) | def downsample_conv(
  function downsample_avg (line 380) | def downsample_avg(
  function drop_blocks (line 397) | def drop_blocks(drop_block_rate=0.):
  function make_blocks (line 404) | def make_blocks(
  class ResNet (line 448) | class ResNet(nn.Module):
    method __init__ (line 519) | def __init__(self, block, layers, num_classes=1000, in_chans=1,
    method get_classifier (line 587) | def get_classifier(self):
    method reset_classifier (line 590) | def reset_classifier(self, num_classes, global_pool='avg'):
    method forward_features (line 594) | def forward_features(self, x):
    method forward (line 606) | def forward(self, x):
  function _create_resnet (line 615) | def _create_resnet(variant, pretrained=False, **kwargs):
  function resnet18 (line 621) | def resnet18(pretrained=False, **kwargs):
  function resnet18d (line 629) | def resnet18d(pretrained=False, **kwargs):
  function resnet34 (line 638) | def resnet34(pretrained=False, **kwargs):
  function resnet34d (line 646) | def resnet34d(pretrained=False, **kwargs):
  function resnet26 (line 655) | def resnet26(pretrained=False, **kwargs):
  function resnet26d (line 663) | def resnet26d(pretrained=False, **kwargs):
  function resnet50 (line 671) | def resnet50(pretrained=False, **kwargs):
  function resnet50d (line 679) | def resnet50d(pretrained=False, **kwargs):
  function resnet66d (line 688) | def resnet66d(pretrained=False, **kwargs):
  function resnet101 (line 696) | def resnet101(pretrained=False, **kwargs):
  function resnet101d (line 704) | def resnet101d(pretrained=False, **kwargs):
  function resnet152 (line 712) | def resnet152(pretrained=False, **kwargs):
  function resnet152d (line 720) | def resnet152d(pretrained=False, **kwargs):
  function resnet200 (line 729) | def resnet200(pretrained=False, **kwargs):
  function resnet200d (line 737) | def resnet200d(pretrained=False, **kwargs):
  function tv_resnet34 (line 746) | def tv_resnet34(pretrained=False, **kwargs):
  function tv_resnet50 (line 754) | def tv_resnet50(pretrained=False, **kwargs):
  function tv_resnet101 (line 762) | def tv_resnet101(pretrained=False, **kwargs):
  function tv_resnet152 (line 770) | def tv_resnet152(pretrained=False, **kwargs):
  function wide_resnet50_2 (line 778) | def wide_resnet50_2(pretrained=False, **kwargs):
  function wide_resnet101_2 (line 790) | def wide_resnet101_2(pretrained=False, **kwargs):
  function resnext50_32x4d (line 801) | def resnext50_32x4d(pretrained=False, **kwargs):
  function resnext26_32x4d (line 808) | def resnext26_32x4d(pretrained=False, **kwargs):
  function resnext50d_32x4d (line 815) | def resnext50d_32x4d(pretrained=False, **kwargs):
  function resnext101_32x4d (line 825) | def resnext101_32x4d(pretrained=False, **kwargs):
  function resnext101_32x8d (line 833) | def resnext101_32x8d(pretrained=False, **kwargs):
  function resnext101_64x4d (line 841) | def resnext101_64x4d(pretrained=False, **kwargs):
  function tv_resnext50_32x4d (line 849) | def tv_resnext50_32x4d(pretrained=False, **kwargs):
  function ig_resnext101_32x8d (line 857) | def ig_resnext101_32x8d(pretrained=True, **kwargs):
  function ig_resnext101_32x16d (line 868) | def ig_resnext101_32x16d(pretrained=True, **kwargs):
  function ig_resnext101_32x32d (line 879) | def ig_resnext101_32x32d(pretrained=True, **kwargs):
  function ig_resnext101_32x48d (line 890) | def ig_resnext101_32x48d(pretrained=True, **kwargs):
  function ssl_resnet18 (line 901) | def ssl_resnet18(pretrained=True, **kwargs):
  function ssl_resnet50 (line 911) | def ssl_resnet50(pretrained=True, **kwargs):
  function ssl_resnext50_32x4d (line 921) | def ssl_resnext50_32x4d(pretrained=True, **kwargs):
  function ssl_resnext101_32x4d (line 931) | def ssl_resnext101_32x4d(pretrained=True, **kwargs):
  function ssl_resnext101_32x8d (line 941) | def ssl_resnext101_32x8d(pretrained=True, **kwargs):
  function ssl_resnext101_32x16d (line 951) | def ssl_resnext101_32x16d(pretrained=True, **kwargs):
  function swsl_resnet18 (line 961) | def swsl_resnet18(pretrained=True, **kwargs):
  function swsl_resnet50 (line 972) | def swsl_resnet50(pretrained=True, **kwargs):
  function swsl_resnext50_32x4d (line 983) | def swsl_resnext50_32x4d(pretrained=True, **kwargs):
  function swsl_resnext101_32x4d (line 994) | def swsl_resnext101_32x4d(pretrained=True, **kwargs):
  function swsl_resnext101_32x8d (line 1005) | def swsl_resnext101_32x8d(pretrained=True, **kwargs):
  function swsl_resnext101_32x16d (line 1016) | def swsl_resnext101_32x16d(pretrained=True, **kwargs):
  function ecaresnet18 (line 1027) | def ecaresnet18(pretrained=False, **kwargs):
  function ecaresnet50 (line 1035) | def ecaresnet50(pretrained=False, **kwargs):
  function ecaresnet50d (line 1043) | def ecaresnet50d(pretrained=False, **kwargs):
  function ecaresnet50d_pruned (line 1053) | def ecaresnet50d_pruned(pretrained=False, **kwargs):
  function ecaresnetlight (line 1064) | def ecaresnetlight(pretrained=False, **kwargs):
  function ecaresnet101d (line 1074) | def ecaresnet101d(pretrained=False, **kwargs):
  function ecaresnet101d_pruned (line 1084) | def ecaresnet101d_pruned(pretrained=False, **kwargs):
  function ecaresnext26tn_32x4d (line 1095) | def ecaresnext26tn_32x4d(pretrained=False, **kwargs):
  function resnetblur18 (line 1108) | def resnetblur18(pretrained=False, **kwargs):
  function resnetblur50 (line 1116) | def resnetblur50(pretrained=False, **kwargs):
  function seresnet18 (line 1124) | def seresnet18(pretrained=False, **kwargs):
  function seresnet34 (line 1130) | def seresnet34(pretrained=False, **kwargs):
  function seresnet50 (line 1136) | def seresnet50(pretrained=False, **kwargs):
  function seresnet50tn (line 1142) | def seresnet50tn(pretrained=False, **kwargs):
  function seresnet101 (line 1150) | def seresnet101(pretrained=False, **kwargs):
  function seresnet152 (line 1156) | def seresnet152(pretrained=False, **kwargs):
  function seresnext26_32x4d (line 1162) | def seresnext26_32x4d(pretrained=False, **kwargs):
  function seresnext26d_32x4d (line 1170) | def seresnext26d_32x4d(pretrained=False, **kwargs):
  function seresnext26t_32x4d (line 1182) | def seresnext26t_32x4d(pretrained=False, **kwargs):
  function seresnext26tn_32x4d (line 1194) | def seresnext26tn_32x4d(pretrained=False, **kwargs):
  function seresnext50_32x4d (line 1206) | def seresnext50_32x4d(pretrained=False, **kwargs):
  function seresnext101_32x4d (line 1214) | def seresnext101_32x4d(pretrained=False, **kwargs):
  function seresnext101_32x8d (line 1222) | def seresnext101_32x8d(pretrained=False, **kwargs):
  function senet154 (line 1230) | def senet154(pretrained=False, **kwargs):

FILE: classification/model/utils.py
  class SmoothedValue (line 18) | class SmoothedValue(object):
    method __init__ (line 23) | def __init__(self, window_size=20, fmt=None):
    method update (line 31) | def update(self, value, n=1):
    method synchronize_between_processes (line 36) | def synchronize_between_processes(self):
    method median (line 50) | def median(self):
    method avg (line 55) | def avg(self):
    method global_avg (line 60) | def global_avg(self):
    method max (line 64) | def max(self):
    method value (line 68) | def value(self):
    method __str__ (line 71) | def __str__(self):
  class MetricLogger (line 80) | class MetricLogger(object):
    method __init__ (line 81) | def __init__(self, delimiter="\t"):
    method update (line 85) | def update(self, **kwargs):
    method __getattr__ (line 92) | def __getattr__(self, attr):
    method __str__ (line 100) | def __str__(self):
    method synchronize_between_processes (line 108) | def synchronize_between_processes(self):
    method add_meter (line 112) | def add_meter(self, name, meter):
    method log_every (line 115) | def log_every(self, iterable, print_freq, header=None):
  function _load_checkpoint_for_ema (line 162) | def _load_checkpoint_for_ema(model_ema, checkpoint):
  function setup_for_distributed (line 172) | def setup_for_distributed(is_master):
  function is_dist_avail_and_initialized (line 187) | def is_dist_avail_and_initialized():
  function get_world_size (line 195) | def get_world_size():
  function get_rank (line 201) | def get_rank():
  function is_main_process (line 207) | def is_main_process():
  function save_on_master (line 211) | def save_on_master(*args, **kwargs):
  function init_distributed_mode (line 216) | def init_distributed_mode(args):
  function merge_pre_bn (line 241) | def merge_pre_bn(module, pre_bn_1, pre_bn_2=None):
  function cal_flops_params_with_fvcore (line 283) | def cal_flops_params_with_fvcore(model, inputs):

FILE: classification/model/vgg.py
  class VGG (line 33) | class VGG(nn.Module):
    method __init__ (line 34) | def __init__(
    method forward (line 63) | def forward(self, x: torch.Tensor) -> torch.Tensor:
  function make_layers (line 71) | def make_layers(cfg: List[Union[str, int]], batch_norm: bool = False) ->...
  function _vgg (line 98) | def _vgg(arch: str, cfg: str, batch_norm: bool, pretrained: bool, progre...
  function vgg11 (line 108) | def vgg11(pretrained: bool = False, progress: bool = True, **kwargs: Any...
  function vgg11_bn (line 120) | def vgg11_bn(pretrained: bool = False, progress: bool = True, **kwargs: ...
  function vgg13 (line 132) | def vgg13(pretrained: bool = False, progress: bool = True, **kwargs: Any...
  function vgg13_bn (line 144) | def vgg13_bn(pretrained: bool = False, progress: bool = True, **kwargs: ...
  function vgg16 (line 156) | def vgg16(pretrained: bool = False, progress: bool = True, **kwargs: Any...
  function vgg16_bn (line 168) | def vgg16_bn(pretrained: bool = False, progress: bool = True, **kwargs: ...
  function vgg19 (line 180) | def vgg19(pretrained: bool = False, progress: bool = True, **kwargs: Any...
  function vgg19_bn (line 192) | def vgg19_bn(pretrained: bool = False, progress: bool = True, **kwargs: ...
  class MVGGNet (line 203) | class MVGGNet(torch.nn.Module):
    method __init__ (line 204) | def __init__(self, num_classes=3):
    method forward (line 215) | def forward(self, x):

FILE: classification/parse_test_res.py
  function compute_ci95 (line 60) | def compute_ci95(res):
  function parse_function (line 63) | def parse_function(*metrics, directory="", args=None, end_signal=None):
  function main (line 125) | def main(args, end_signal):

FILE: classification/train.py
  function print_args (line 37) | def print_args(args, cfg):
  function reset_cfg (line 51) | def reset_cfg(cfg, args):
  function extend_cfg (line 83) | def extend_cfg(cfg):
  function setup_cfg (line 111) | def setup_cfg(args):
  function main (line 134) | def main(args):

FILE: classification/trainers/MIM_linear.py
  function interpolate_pos_embed (line 28) | def interpolate_pos_embed(model, checkpoint_model):
  class CustomCLIP (line 51) | class CustomCLIP(nn.Module):
    method __init__ (line 53) | def __init__(self, cfg, classnames):
    method forward (line 123) | def forward(self, image):
  class MIM_linear (line 130) | class MIM_linear(TrainerX):
    method build_model (line 133) | def build_model(self):
    method forward_backward (line 164) | def forward_backward(self, batch):
    method parse_batch_train (line 182) | def parse_batch_train(self, batch):
    method load_model (line 189) | def load_model(self, directory, epoch=None):
    method test (line 231) | def test(self, split=None):
    method after_epoch (line 261) | def after_epoch(self):

FILE: detection/demo/create_result_gif.py
  function parse_args (line 17) | def parse_args():
  function _generate_batch_data (line 32) | def _generate_batch_data(sampler, batch_size):
  function create_gif (line 43) | def create_gif(frames, gif_name, duration=2):
  function create_frame_by_matplotlib (line 58) | def create_frame_by_matplotlib(image_dir,
  function main (line 156) | def main():

FILE: detection/demo/image_demo.py
  function parse_args (line 9) | def parse_args():
  function main (line 32) | def main(args):
  function async_main (line 47) | async def async_main(args):

FILE: detection/demo/video_demo.py
  function parse_args (line 10) | def parse_args():
  function main (line 30) | def main():

FILE: detection/demo/webcam_demo.py
  function parse_args (line 10) | def parse_args():
  function main (line 24) | def main():

FILE: detection/docs/en/conf.py
  function get_version (line 29) | def get_version():
  function builder_inited_handler (line 108) | def builder_inited_handler(app):
  function setup (line 112) | def setup(app):

FILE: detection/docs/zh_cn/conf.py
  function get_version (line 29) | def get_version():
  function builder_inited_handler (line 110) | def builder_inited_handler(app):
  function setup (line 114) | def setup(app):

FILE: detection/huge_image_infer.py
  class LargeImageDetector (line 10) | class LargeImageDetector:
    method __init__ (line 11) | def __init__(self, config_file, checkpoint_file, device='cuda:0'):
    method sliding_window_inference (line 24) | def sliding_window_inference(self,
    method nms (line 89) | def nms(self, detections, iou_threshold):
    method calculate_iou (line 122) | def calculate_iou(self, box1, box2):
    method visualize_results (line 158) | def visualize_results(self, image, results, output_path=None):
  function main (line 203) | def main():

FILE: detection/mmcv_custom/checkpoint.py
  function _get_mmcv_home (line 30) | def _get_mmcv_home():
  function load_state_dict (line 41) | def load_state_dict(module, state_dict, strict=False, logger=None):
  function load_url_dist (line 109) | def load_url_dist(url, model_dir=None):
  function load_pavimodel_dist (line 123) | def load_pavimodel_dist(model_path, map_location=None):
  function load_fileclient_dist (line 151) | def load_fileclient_dist(filename, backend, map_location):
  function get_torchvision_models (line 172) | def get_torchvision_models():
  function get_external_models (line 184) | def get_external_models():
  function get_mmcls_models (line 198) | def get_mmcls_models():
  function get_deprecated_model_names (line 205) | def get_deprecated_model_names():
  function _process_mmcls_checkpoint (line 214) | def _process_mmcls_checkpoint(checkpoint):
  function _load_checkpoint (line 225) | def _load_checkpoint(filename, map_location=None):
  function load_checkpoint (line 286) | def load_checkpoint(model,
  function weights_to_cpu (line 359) | def weights_to_cpu(state_dict):
  function _save_to_state_dict (line 374) | def _save_to_state_dict(module, destination, prefix, keep_vars):
  function get_state_dict (line 394) | def get_state_dict(module, destination=None, prefix='', keep_vars=False):
  function save_checkpoint (line 438) | def save_checkpoint(model, filename, optimizer=None, meta=None):

FILE: detection/mmcv_custom/hivit_layer_decay_optimizer_constructor.py
  function get_hivit_layer_id (line 19) | def get_hivit_layer_id(name, num_layers, main_block):
  class HiViTLayerDecayOptimizerConstructor (line 38) | class HiViTLayerDecayOptimizerConstructor(DefaultOptimizerConstructor):
    method _validate_cfg (line 39) | def _validate_cfg(self):
    method add_params (line 42) | def add_params(self, params, module, **kwargs):
  class HiViT2LayerDecayOptimizerConstructor (line 114) | class HiViT2LayerDecayOptimizerConstructor(DefaultOptimizerConstructor):
    method _validate_cfg (line 115) | def _validate_cfg(self):
    method add_params (line 118) | def add_params(self, params, module, **kwargs):

FILE: detection/mmcv_custom/layer_decay_optimizer_constructor.py
  function get_num_layer_for_vit (line 17) | def get_num_layer_for_vit(var_name, num_max_layer):
  class LayerDecayOptimizerConstructor (line 30) | class LayerDecayOptimizerConstructor(DefaultOptimizerConstructor):
    method _validate_cfg (line 31) | def _validate_cfg(self):
    method add_params (line 50) | def add_params(self, params, module, prefix='', is_dcn_module=None):

FILE: detection/mmcv_custom/runner/checkpoint.py
  function save_checkpoint (line 19) | def save_checkpoint(model, filename, optimizer=None, meta=None):

FILE: detection/mmcv_custom/runner/epoch_based_runner.py
  class EpochBasedRunnerAmp (line 20) | class EpochBasedRunnerAmp(EpochBasedRunner):
    method save_checkpoint (line 26) | def save_checkpoint(self,
    method resume (line 70) | def resume(self,

FILE: detection/mmdet/.mim/demo/create_result_gif.py
  function parse_args (line 17) | def parse_args():
  function _generate_batch_data (line 32) | def _generate_batch_data(sampler, batch_size):
  function create_gif (line 43) | def create_gif(frames, gif_name, duration=2):
  function create_frame_by_matplotlib (line 58) | def create_frame_by_matplotlib(image_dir,
  function main (line 156) | def main():

FILE: detection/mmdet/.mim/demo/image_demo.py
  function parse_args (line 9) | def parse_args():
  function main (line 32) | def main(args):
  function async_main (line 47) | async def async_main(args):

FILE: detection/mmdet/.mim/demo/video_demo.py
  function parse_args (line 10) | def parse_args():
  function main (line 30) | def main():

FILE: detection/mmdet/.mim/demo/webcam_demo.py
  function parse_args (line 10) | def parse_args():
  function main (line 24) | def main():

FILE: detection/mmdet/.mim/tools/analysis_tools/analyze_logs.py
  function cal_train_time (line 11) | def cal_train_time(log_dicts, args):
  function plot_curve (line 38) | def plot_curve(log_dicts, args):
  function add_plot_parser (line 106) | def add_plot_parser(subparsers):
  function add_time_parser (line 144) | def add_time_parser(subparsers):
  function parse_args (line 160) | def parse_args():
  function load_json_logs (line 170) | def load_json_logs(json_logs):
  function main (line 193) | def main():

FILE: detection/mmdet/.mim/tools/analysis_tools/analyze_results.py
  function bbox_map_eval (line 15) | def bbox_map_eval(det_result, annotation):
  class ResultVisualizer (line 50) | class ResultVisualizer:
    method __init__ (line 60) | def __init__(self, show=False, wait_time=0, score_thr=0):
    method _save_image_gts_results (line 65) | def _save_image_gts_results(self, dataset, results, mAPs, out_dir=None):
    method evaluate_and_show (line 97) | def evaluate_and_show(self,
  function parse_args (line 145) | def parse_args():
  function main (line 184) | def main():

FILE: detection/mmdet/.mim/tools/analysis_tools/benchmark.py
  function parse_args (line 19) | def parse_args():
  function measure_inference_speed (line 59) | def measure_inference_speed(cfg, checkpoint, max_iter, log_interval,
  function repeat_measure_inference_speed (line 136) | def repeat_measure_inference_speed(cfg,
  function main (line 170) | def main():

FILE: detection/mmdet/.mim/tools/analysis_tools/coco_error_analysis.py
  function makeplot (line 13) | def makeplot(rs, ps, outDir, class_name, iou_type):
  function autolabel (line 54) | def autolabel(ax, rects):
  function makebarplot (line 73) | def makebarplot(rs, ps, outDir, class_name, iou_type):
  function get_gt_area_group_numbers (line 108) | def get_gt_area_group_numbers(cocoEval):
  function make_gt_area_group_numbers_plot (line 123) | def make_gt_area_group_numbers_plot(cocoEval, outDir, verbose=True):
  function make_gt_area_histogram_plot (line 152) | def make_gt_area_histogram_plot(cocoEval, outDir):
  function analyze_individual_category (line 174) | def analyze_individual_category(k,
  function analyze_results (line 235) | def analyze_results(res_file,
  function main (line 308) | def main():

FILE: detection/mmdet/.mim/tools/analysis_tools/confusion_matrix.py
  function parse_args (line 16) | def parse_args():
  function calculate_confusion_matrix (line 60) | def calculate_confusion_matrix(dataset,
  function analyze_per_img_dets (line 96) | def analyze_per_img_dets(confusion_matrix,
  function plot_confusion_matrix (line 146) | def plot_confusion_matrix(confusion_matrix,
  function main (line 230) | def main():

FILE: detection/mmdet/.mim/tools/analysis_tools/eval_metric.py
  function parse_args (line 11) | def parse_args():
  function main (line 48) | def main():

FILE: detection/mmdet/.mim/tools/analysis_tools/get_flops.py
  function parse_args (line 16) | def parse_args():
  function main (line 45) | def main():

FILE: detection/mmdet/.mim/tools/analysis_tools/optimize_anchors.py
  function parse_args (line 35) | def parse_args():
  class BaseAnchorOptimizer (line 66) | class BaseAnchorOptimizer:
    method __init__ (line 80) | def __init__(self,
    method get_whs_and_shapes (line 97) | def get_whs_and_shapes(self):
    method get_zero_center_bbox_tensor (line 124) | def get_zero_center_bbox_tensor(self):
    method optimize (line 137) | def optimize(self):
    method save_result (line 140) | def save_result(self, anchors, path=None):
  class YOLOKMeansAnchorOptimizer (line 151) | class YOLOKMeansAnchorOptimizer(BaseAnchorOptimizer):
    method __init__ (line 160) | def __init__(self, num_anchors, iters, **kwargs):
    method optimize (line 166) | def optimize(self):
    method kmeans_anchors (line 170) | def kmeans_anchors(self):
    method kmeans_maximization (line 206) | def kmeans_maximization(self, bboxes, assignments, centers):
    method kmeans_expectation (line 215) | def kmeans_expectation(self, bboxes, assignments, centers):
  class YOLODEAnchorOptimizer (line 223) | class YOLODEAnchorOptimizer(BaseAnchorOptimizer):
    method __init__ (line 258) | def __init__(self,
    method optimize (line 278) | def optimize(self):
    method differential_evolution (line 282) | def differential_evolution(self):
    method avg_iou_cost (line 308) | def avg_iou_cost(anchor_params, bboxes):
  function main (line 322) | def main():

FILE: detection/mmdet/.mim/tools/analysis_tools/robustness_eval.py
  function print_coco_results (line 9) | def print_coco_results(results):
  function get_coco_style_results (line 35) | def get_coco_style_results(filename,
  function get_voc_style_results (line 112) | def get_voc_style_results(filename, prints='mPC', aggregate='benchmark'):
  function get_results (line 156) | def get_results(filename,
  function get_distortions_from_file (line 184) | def get_distortions_from_file(filename):
  function get_distortions_from_results (line 191) | def get_distortions_from_results(eval_output):
  function main (line 198) | def main():

FILE: detection/mmdet/.mim/tools/analysis_tools/test_robustness.py
  function coco_eval_with_return (line 24) | def coco_eval_with_return(result_files,
  function voc_eval_with_return (line 66) | def voc_eval_with_return(result_file,
  function parse_args (line 93) | def parse_args():
  function main (line 181) | def main():

FILE: detection/mmdet/.mim/tools/dataset_converters/cityscapes.py
  function collect_files (line 12) | def collect_files(img_dir, gt_dir):
  function collect_annotations (line 29) | def collect_annotations(files, nproc=1):
  function load_img_info (line 40) | def load_img_info(files):
  function cvt_annotations (line 85) | def cvt_annotations(image_infos, out_json_name):
  function parse_args (line 114) | def parse_args():
  function main (line 127) | def main():

FILE: detection/mmdet/.mim/tools/dataset_converters/images2coco.py
  function parse_args (line 9) | def parse_args():
  function collect_image_infos (line 30) | def collect_image_infos(path, exclude_extensions=None):
  function cvt_to_coco_json (line 49) | def cvt_to_coco_json(img_infos, classes):
  function main (line 80) | def main():

FILE: detection/mmdet/.mim/tools/dataset_converters/pascal_voc.py
  function parse_xml (line 14) | def parse_xml(args):
  function cvt_annotations (line 68) | def cvt_annotations(devkit_path, years, split, out_file):
  function cvt_to_coco_json (line 96) | def cvt_to_coco_json(annotations):
  function parse_args (line 183) | def parse_args():
  function main (line 197) | def main():

FILE: detection/mmdet/.mim/tools/deployment/mmdet2torchserve.py
  function mmdet2torchserve (line 15) | def mmdet2torchserve(
  function parse_args (line 70) | def parse_args():

FILE: detection/mmdet/.mim/tools/deployment/mmdet_handler.py
  class MMdetHandler (line 12) | class MMdetHandler(BaseHandler):
    method initialize (line 15) | def initialize(self, context):
    method preprocess (line 31) | def preprocess(self, data):
    method inference (line 43) | def inference(self, data, *args, **kwargs):
    method postprocess (line 47) | def postprocess(self, data):

FILE: detection/mmdet/.mim/tools/deployment/onnx2tensorrt.py
  function get_GiB (line 19) | def get_GiB(x: int):
  function onnx2tensorrt (line 24) | def onnx2tensorrt(onnx_file,
  function parse_normalize_cfg (line 106) | def parse_normalize_cfg(test_pipeline):
  function parse_args (line 119) | def parse_args():
  function parse_shape (line 208) | def parse_shape(shape):

FILE: detection/mmdet/.mim/tools/deployment/pytorch2onnx.py
  function pytorch2onnx (line 16) | def pytorch2onnx(model,
  function parse_normalize_cfg (line 210) | def parse_normalize_cfg(test_pipeline):
  function parse_args (line 223) | def parse_args():

FILE: detection/mmdet/.mim/tools/deployment/test.py
  function parse_args (line 15) | def parse_args():
  function main (line 67) | def main():

FILE: detection/mmdet/.mim/tools/deployment/test_torchserver.py
  function parse_args (line 10) | def parse_args():
  function parse_result (line 28) | def parse_result(input, model_class):
  function main (line 42) | def main(args):

FILE: detection/mmdet/.mim/tools/misc/browse_dataset.py
  function parse_args (line 17) | def parse_args():
  function retrieve_data_cfg (line 51) | def retrieve_data_cfg(config_path, skip_type, cfg_options):
  function main (line 78) | def main():

FILE: detection/mmdet/.mim/tools/misc/download_dataset.py
  function parse_args (line 11) | def parse_args():
  function download (line 35) | def download(url, dir, unzip=True, delete=False, threads=1):
  function main (line 65) | def main():

FILE: detection/mmdet/.mim/tools/misc/gen_coco_panoptic_test_info.py
  function parse_args (line 7) | def parse_args():
  function main (line 17) | def main():

FILE: detection/mmdet/.mim/tools/misc/get_image_metas.py
  function parse_args (line 19) | def parse_args():
  function get_metas_from_csv_style_ann_file (line 36) | def get_metas_from_csv_style_ann_file(ann_file):
  function get_metas_from_txt_style_ann_file (line 52) | def get_metas_from_txt_style_ann_file(ann_file):
  function get_image_metas (line 65) | def get_image_metas(data_info, img_prefix):
  function main (line 79) | def main():

FILE: detection/mmdet/.mim/tools/misc/print_config.py
  function parse_args (line 10) | def parse_args():
  function main (line 43) | def main():

FILE: detection/mmdet/.mim/tools/misc/split_coco.py
  function parse_args (line 15) | def parse_args():
  function split_coco (line 42) | def split_coco(data_root, out_dir, percent, fold):
  function multi_wrapper (line 100) | def multi_wrapper(args):

FILE: detection/mmdet/.mim/tools/model_converters/detectron2pytorch.py
  function convert_bn (line 11) | def convert_bn(blobs, state_dict, caffe_name, torch_name, converted_names):
  function convert_conv_fc (line 24) | def convert_conv_fc(blobs, state_dict, caffe_name, torch_name,
  function convert (line 35) | def convert(src, dst, depth):
  function main (line 73) | def main():

FILE: detection/mmdet/.mim/tools/model_converters/publish_model.py
  function parse_args (line 8) | def parse_args():
  function process_checkpoint (line 17) | def process_checkpoint(in_file, out_file):
  function main (line 37) | def main():

FILE: detection/mmdet/.mim/tools/model_converters/regnet2mmdet.py
  function convert_stem (line 8) | def convert_stem(model_key, model_weight, state_dict, converted_names):
  function convert_head (line 16) | def convert_head(model_key, model_weight, state_dict, converted_names):
  function convert_reslayer (line 23) | def convert_reslayer(model_key, model_weight, state_dict, converted_names):
  function convert (line 55) | def convert(src, dst):
  function main (line 81) | def main():

FILE: detection/mmdet/.mim/tools/model_converters/selfsup2mmdet.py
  function moco_convert (line 8) | def moco_convert(src, dst):
  function main (line 28) | def main():

FILE: detection/mmdet/.mim/tools/model_converters/upgrade_model_version.py
  function is_head (line 11) | def is_head(key):
  function parse_config (line 19) | def parse_config(config_strings):
  function reorder_cls_channel (line 46) | def reorder_cls_channel(val, num_classes=81):
  function truncate_cls_channel (line 68) | def truncate_cls_channel(val, num_classes=81):
  function truncate_reg_channel (line 90) | def truncate_reg_channel(val, num_classes=81):
  function convert (line 115) | def convert(in_file, out_file, num_classes):
  function main (line 196) | def main():

FILE: detection/mmdet/.mim/tools/model_converters/upgrade_ssd_version.py
  function parse_config (line 10) | def parse_config(config_strings):
  function convert (line 22) | def convert(in_file, out_file):
  function main (line 48) | def main():

FILE: detection/mmdet/.mim/tools/test.py
  function parse_args (line 23) | def parse_args():
  function main (line 120) | def main():

FILE: detection/mmdet/.mim/tools/train.py
  function parse_args (line 24) | def parse_args():
  function main (line 107) | def main():

FILE: detection/mmdet/__init__.py
  function digit_version (line 7) | def digit_version(version_str):

FILE: detection/mmdet/apis/inference.py
  function init_detector (line 18) | def init_detector(config, checkpoint=None, device='cuda:0', cfg_options=...
  class LoadImage (line 60) | class LoadImage:
    method __call__ (line 66) | def __call__(self, results):
  function inference_detector (line 93) | def inference_detector(model, imgs):
  function async_inference_detector (line 159) | async def async_inference_detector(model, imgs):
  function show_result_pyplot (line 216) | def show_result_pyplot(model,

FILE: detection/mmdet/apis/test.py
  function single_gpu_test (line 17) | def single_gpu_test(model,
  function multi_gpu_test (line 83) | def multi_gpu_test(model, data_loader, tmpdir=None, gpu_collect=False):
  function collect_results_cpu (line 138) | def collect_results_cpu(result_part, size, tmpdir=None):
  function collect_results_gpu (line 181) | def collect_results_gpu(result_part, size):

FILE: detection/mmdet/apis/train.py
  function init_random_seed (line 24) | def init_random_seed(seed=None, device='cuda'):
  function set_random_seed (line 57) | def set_random_seed(seed, deterministic=False):
  function auto_scale_lr (line 76) | def auto_scale_lr(cfg, distributed, logger):
  function train_detector (line 122) | def train_detector(model,

FILE: detection/mmdet/core/anchor/anchor_generator.py
  class AnchorGenerator (line 13) | class AnchorGenerator:
    method __init__ (line 61) | def __init__(self,
    method num_base_anchors (line 116) | def num_base_anchors(self):
    method num_base_priors (line 121) | def num_base_priors(self):
    method num_levels (line 127) | def num_levels(self):
    method gen_base_anchors (line 131) | def gen_base_anchors(self):
    method gen_single_level_base_anchors (line 151) | def gen_single_level_base_anchors(self,
    method _meshgrid (line 196) | def _meshgrid(self, x, y, row_major=True):
    method grid_priors (line 216) | def grid_priors(self, featmap_sizes, dtype=torch.float32, device='cuda'):
    method single_level_grid_priors (line 241) | def single_level_grid_priors(self,
    method sparse_priors (line 283) | def sparse_priors(self,
    method grid_anchors (line 318) | def grid_anchors(self, featmap_sizes, device='cuda'):
    method single_level_grid_anchors (line 347) | def single_level_grid_anchors(self,
    method valid_flags (line 392) | def valid_flags(self, featmap_sizes, pad_shape, device='cuda'):
    method single_level_valid_flags (line 419) | def single_level_valid_flags(self,
    method __repr__ (line 451) | def __repr__(self):
  class SSDAnchorGenerator (line 471) | class SSDAnchorGenerator(AnchorGenerator):
    method __init__ (line 492) | def __init__(self,
    method gen_base_anchors (line 571) | def gen_base_anchors(self):
    method __repr__ (line 592) | def __repr__(self):
  class LegacyAnchorGenerator (line 610) | class LegacyAnchorGenerator(AnchorGenerator):
    method gen_single_level_base_anchors (line 658) | def gen_single_level_base_anchors(self,
  class LegacySSDAnchorGenerator (line 709) | class LegacySSDAnchorGenerator(SSDAnchorGenerator, LegacyAnchorGenerator):
    method __init__ (line 716) | def __init__(self,
  class YOLOAnchorGenerator (line 734) | class YOLOAnchorGenerator(AnchorGenerator):
    method __init__ (line 744) | def __init__(self, strides, base_sizes):
    method num_levels (line 757) | def num_levels(self):
    method gen_base_anchors (line 761) | def gen_base_anchors(self):
    method gen_single_level_base_anchors (line 778) | def gen_single_level_base_anchors(self, base_sizes_per_level, center=N...
    method responsible_flags (line 806) | def responsible_flags(self, featmap_sizes, gt_bboxes, device='cuda'):
    method single_level_responsible_flags (line 831) | def single_level_responsible_flags(self,

FILE: detection/mmdet/core/anchor/builder.py
  function build_prior_generator (line 11) | def build_prior_generator(cfg, default_args=None):
  function build_anchor_generator (line 15) | def build_anchor_generator(cfg, default_args=None):

FILE: detection/mmdet/core/anchor/point_generator.py
  class PointGenerator (line 10) | class PointGenerator:
    method _meshgrid (line 12) | def _meshgrid(self, x, y, row_major=True):
    method grid_points (line 20) | def grid_points(self, featmap_size, stride=16, device='cuda'):
    method valid_flags (line 30) | def valid_flags(self, featmap_size, valid_size, device='cuda'):
  class MlvlPointGenerator (line 44) | class MlvlPointGenerator:
    method __init__ (line 55) | def __init__(self, strides, offset=0.5):
    method num_levels (line 60) | def num_levels(self):
    method num_base_priors (line 65) | def num_base_priors(self):
    method _meshgrid (line 70) | def _meshgrid(self, x, y, row_major=True):
    method grid_priors (line 80) | def grid_priors(self,
    method single_level_grid_priors (line 119) | def single_level_grid_priors(self,
    method valid_flags (line 177) | def valid_flags(self, featmap_sizes, pad_shape, device='cuda'):
    method single_level_valid_flags (line 205) | def single_level_valid_flags(self,
    method sparse_priors (line 234) | def sparse_priors(self,

FILE: detection/mmdet/core/anchor/utils.py
  function images_to_levels (line 5) | def images_to_levels(target, num_levels):
  function anchor_inside_flags (line 21) | def anchor_inside_flags(flat_anchors,
  function calc_region (line 50) | def calc_region(bbox, ratio, featmap_size=None):

FILE: detection/mmdet/core/bbox/assigners/approx_max_iou_assigner.py
  class ApproxMaxIoUAssigner (line 10) | class ApproxMaxIoUAssigner(MaxIoUAssigner):
    method __init__ (line 40) | def __init__(self,
    method assign (line 60) | def assign(self,

FILE: detection/mmdet/core/bbox/assigners/assign_result.py
  class AssignResult (line 7) | class AssignResult(util_mixins.NiceRepr):
    method __init__ (line 43) | def __init__(self, num_gts, gt_inds, max_overlaps, labels=None):
    method num_preds (line 52) | def num_preds(self):
    method set_extra_property (line 56) | def set_extra_property(self, key, value):
    method get_extra_property (line 61) | def get_extra_property(self, key):
    method info (line 66) | def info(self):
    method __nice__ (line 78) | def __nice__(self):
    method random (line 98) | def random(cls, **kwargs):
    method add_gt_ (line 192) | def add_gt_(self, gt_labels):

FILE: detection/mmdet/core/bbox/assigners/atss_assigner.py
  class ATSSAssigner (line 11) | class ATSSAssigner(BaseAssigner):
    method __init__ (line 24) | def __init__(self,
    method assign (line 34) | def assign(self,

FILE: detection/mmdet/core/bbox/assigners/base_assigner.py
  class BaseAssigner (line 5) | class BaseAssigner(metaclass=ABCMeta):
    method assign (line 9) | def assign(self, bboxes, gt_bboxes, gt_bboxes_ignore=None, gt_labels=N...

FILE: detection/mmdet/core/bbox/assigners/center_region_assigner.py
  function scale_boxes (line 10) | def scale_boxes(bboxes, scale):
  function is_located_in (line 37) | def is_located_in(points, bboxes):
  function bboxes_area (line 55) | def bboxes_area(bboxes):
  class CenterRegionAssigner (line 72) | class CenterRegionAssigner(BaseAssigner):
    method __init__ (line 94) | def __init__(self,
    method get_gt_priorities (line 108) | def get_gt_priorities(self, gt_bboxes):
    method assign (line 126) | def assign(self, bboxes, gt_bboxes, gt_bboxes_ignore=None, gt_labels=N...
    method assign_one_hot_gt_indices (line 257) | def assign_one_hot_gt_indices(self,

FILE: detection/mmdet/core/bbox/assigners/grid_assigner.py
  class GridAssigner (line 11) | class GridAssigner(BaseAssigner):
    method __init__ (line 31) | def __init__(self,
    method assign (line 43) | def assign(self, bboxes, box_responsible_flags, gt_bboxes, gt_labels=N...

FILE: detection/mmdet/core/bbox/assigners/hungarian_assigner.py
  class HungarianAssigner (line 17) | class HungarianAssigner(BaseAssigner):
    method __init__ (line 45) | def __init__(self,
    method assign (line 53) | def assign(self,

FILE: detection/mmdet/core/bbox/assigners/mask_hungarian_assigner.py
  class MaskHungarianAssigner (line 16) | class MaskHungarianAssigner(BaseAssigner):
    method __init__ (line 37) | def __init__(self,
    method assign (line 46) | def assign(self,

FILE: detection/mmdet/core/bbox/assigners/max_iou_assigner.py
  class MaxIoUAssigner (line 11) | class MaxIoUAssigner(BaseAssigner):
    method __init__ (line 46) | def __init__(self,
    method assign (line 66) | def assign(self, bboxes, gt_bboxes, gt_bboxes_ignore=None, gt_labels=N...
    method assign_wrt_overlaps (line 133) | def assign_wrt_overlaps(self, overlaps, gt_labels=None):

FILE: detection/mmdet/core/bbox/assigners/point_assigner.py
  class PointAssigner (line 10) | class PointAssigner(BaseAssigner):
    method __init__ (line 20) | def __init__(self, scale=4, pos_num=3):
    method assign (line 24) | def assign(self, points, gt_bboxes, gt_bboxes_ignore=None, gt_labels=N...

FILE: detection/mmdet/core/bbox/assigners/region_assigner.py
  function calc_region (line 10) | def calc_region(bbox, ratio, stride, featmap_size=None):
  function anchor_ctr_inside_region_flags (line 27) | def anchor_ctr_inside_region_flags(anchors, stride, region):
  class RegionAssigner (line 38) | class RegionAssigner(BaseAssigner):
    method __init__ (line 54) | def __init__(self, center_ratio=0.2, ignore_ratio=0.5):
    method assign (line 58) | def assign(self,

FILE: detection/mmdet/core/bbox/assigners/sim_ota_assigner.py
  class SimOTAAssigner (line 14) | class SimOTAAssigner(BaseAssigner):
    method __init__ (line 28) | def __init__(self,
    method assign (line 38) | def assign(self,
    method _assign (line 95) | def _assign(self,
    method get_in_gt_and_in_center_info (line 186) | def get_in_gt_and_in_center_info(self, priors, gt_bboxes):
    method dynamic_k_matching (line 230) | def dynamic_k_matching(self, cost, pairwise_ious, num_gt, valid_mask):

FILE: detection/mmdet/core/bbox/assigners/task_aligned_assigner.py
  class TaskAlignedAssigner (line 13) | class TaskAlignedAssigner(BaseAssigner):
    method __init__ (line 31) | def __init__(self, topk, iou_calculator=dict(type='BboxOverlaps2D')):
    method assign (line 36) | def assign(self,

FILE: detection/mmdet/core/bbox/assigners/uniform_assigner.py
  class UniformAssigner (line 12) | class UniformAssigner(BaseAssigner):
    method __init__ (line 25) | def __init__(self,
    method assign (line 35) | def assign(self,

FILE: detection/mmdet/core/bbox/builder.py
  function build_assigner (line 9) | def build_assigner(cfg, **default_args):
  function build_sampler (line 14) | def build_sampler(cfg, **default_args):
  function build_bbox_coder (line 19) | def build_bbox_coder(cfg, **default_args):

FILE: detection/mmdet/core/bbox/coder/base_bbox_coder.py
  class BaseBBoxCoder (line 5) | class BaseBBoxCoder(metaclass=ABCMeta):
    method __init__ (line 8) | def __init__(self, **kwargs):
    method encode (line 12) | def encode(self, bboxes, gt_bboxes):
    method decode (line 16) | def decode(self, bboxes, bboxes_pred):

FILE: detection/mmdet/core/bbox/coder/bucketing_bbox_coder.py
  class BucketingBBoxCoder (line 13) | class BucketingBBoxCoder(BaseBBoxCoder):
    method __init__ (line 35) | def __init__(self,
    method encode (line 50) | def encode(self, bboxes, gt_bboxes):
    method decode (line 72) | def decode(self, bboxes, pred_bboxes, max_shape=None):
  function generat_buckets (line 96) | def generat_buckets(proposals, num_buckets, scale_factor=1.0):
  function bbox2bucket (line 145) | def bbox2bucket(proposals,
  function bucket2bbox (line 269) | def bucket2bbox(proposals,

FILE: detection/mmdet/core/bbox/coder/delta_xywh_bbox_coder.py
  class DeltaXYWHBBoxCoder (line 13) | class DeltaXYWHBBoxCoder(BaseBBoxCoder):
    method __init__ (line 34) | def __init__(self,
    method encode (line 47) | def encode(self, bboxes, gt_bboxes):
    method decode (line 65) | def decode(self,
  function bbox2delta (line 118) | def bbox2delta(proposals, gt, means=(0., 0., 0., 0.), stds=(1., 1., 1., ...
  function delta2bbox (line 164) | def delta2bbox(rois,
  function onnx_delta2bbox (line 263) | def onnx_delta2bbox(rois,

FILE: detection/mmdet/core/bbox/coder/distance_point_bbox_coder.py
  class DistancePointBBoxCoder (line 8) | class DistancePointBBoxCoder(BaseBBoxCoder):
    method __init__ (line 19) | def __init__(self, clip_border=True):
    method encode (line 23) | def encode(self, points, gt_bboxes, max_dis=None, eps=0.1):
    method decode (line 41) | def decode(self, points, pred_bboxes, max_shape=None):

FILE: detection/mmdet/core/bbox/coder/legacy_delta_xywh_bbox_coder.py
  class LegacyDeltaXYWHBBoxCoder (line 11) | class LegacyDeltaXYWHBBoxCoder(BaseBBoxCoder):
    method __init__ (line 34) | def __init__(self,
    method encode (line 41) | def encode(self, bboxes, gt_bboxes):
    method decode (line 59) | def decode(self,
  function legacy_bbox2delta (line 85) | def legacy_bbox2delta(proposals,
  function legacy_delta2bbox (line 134) | def legacy_delta2bbox(rois,

FILE: detection/mmdet/core/bbox/coder/pseudo_bbox_coder.py
  class PseudoBBoxCoder (line 7) | class PseudoBBoxCoder(BaseBBoxCoder):
    method __init__ (line 10) | def __init__(self, **kwargs):
    method encode (line 13) | def encode(self, bboxes, gt_bboxes):
    method decode (line 17) | def decode(self, bboxes, pred_bboxes):

FILE: detection/mmdet/core/bbox/coder/tblr_bbox_coder.py
  class TBLRBBoxCoder (line 10) | class TBLRBBoxCoder(BaseBBoxCoder):
    method __init__ (line 26) | def __init__(self, normalizer=4.0, clip_border=True):
    method encode (line 31) | def encode(self, bboxes, gt_bboxes):
    method decode (line 50) | def decode(self, bboxes, pred_bboxes, max_shape=None):
  function bboxes2tblr (line 77) | def bboxes2tblr(priors, gts, normalizer=4.0, normalize_by_wh=True):
  function tblr2bboxes (line 124) | def tblr2bboxes(priors,

FILE: detection/mmdet/core/bbox/coder/yolo_bbox_coder.py
  class YOLOBBoxCoder (line 10) | class YOLOBBoxCoder(BaseBBoxCoder):
    method __init__ (line 22) | def __init__(self, eps=1e-6):
    method encode (line 27) | def encode(self, bboxes, gt_bboxes, stride):
    method decode (line 62) | def decode(self, bboxes, pred_bboxes, stride):

FILE: detection/mmdet/core/bbox/demodata.py
  function random_boxes (line 8) | def random_boxes(num=1, scale=1, rng=None):

FILE: detection/mmdet/core/bbox/iou_calculators/builder.py
  function build_iou_calculator (line 7) | def build_iou_calculator(cfg, default_args=None):

FILE: detection/mmdet/core/bbox/iou_calculators/iou2d_calculator.py
  function cast_tensor_type (line 7) | def cast_tensor_type(x, scale=1., dtype=None):
  function fp16_clamp (line 14) | def fp16_clamp(x, min=None, max=None):
  class BboxOverlaps2D (line 23) | class BboxOverlaps2D:
    method __init__ (line 26) | def __init__(self, scale=1., dtype=None):
    method __call__ (line 30) | def __call__(self, bboxes1, bboxes2, mode='iou', is_aligned=False):
    method __repr__ (line 68) | def __repr__(self):
  function bbox_overlaps (line 75) | def bbox_overlaps(bboxes1, bboxes2, mode='iou', is_aligned=False, eps=1e...

FILE: detection/mmdet/core/bbox/match_costs/builder.py
  function build_match_cost (line 7) | def build_match_cost(cfg, default_args=None):

FILE: detection/mmdet/core/bbox/match_costs/match_cost.py
  class BBoxL1Cost (line 11) | class BBoxL1Cost:
    method __init__ (line 29) | def __init__(self, weight=1., box_format='xyxy'):
    method __call__ (line 34) | def __call__(self, bbox_pred, gt_bboxes):
  class FocalLossCost (line 55) | class FocalLossCost:
    method __init__ (line 80) | def __init__(self,
    method _focal_loss_cost (line 92) | def _focal_loss_cost(self, cls_pred, gt_labels):
    method _mask_focal_loss_cost (line 111) | def _mask_focal_loss_cost(self, cls_pred, gt_labels):
    method __call__ (line 136) | def __call__(self, cls_pred, gt_labels):
  class ClassificationCost (line 153) | class ClassificationCost:
    method __init__ (line 174) | def __init__(self, weight=1.):
    method __call__ (line 177) | def __call__(self, cls_pred, gt_labels):
  class IoUCost (line 197) | class IoUCost:
    method __init__ (line 215) | def __init__(self, iou_mode='giou', weight=1.):
    method __call__ (line 219) | def __call__(self, bboxes, gt_bboxes):
  class DiceCost (line 239) | class DiceCost:
    method __init__ (line 254) | def __init__(self, weight=1., pred_act=False, eps=1e-3, naive_dice=True):
    method binary_mask_dice_loss (line 260) | def binary_mask_dice_loss(self, mask_preds, gt_masks):
    method __call__ (line 283) | def __call__(self, mask_preds, gt_masks):
  class CrossEntropyLossCost (line 299) | class CrossEntropyLossCost:
    method __init__ (line 315) | def __init__(self, weight=1., use_sigmoid=True):
    method _binary_cross_entropy (line 320) | def _binary_cross_entropy(self, cls_pred, gt_labels):
    method __call__ (line 344) | def __call__(self, cls_pred, gt_labels):

FILE: detection/mmdet/core/bbox/samplers/base_sampler.py
  class BaseSampler (line 9) | class BaseSampler(metaclass=ABCMeta):
    method __init__ (line 12) | def __init__(self,
    method _sample_pos (line 26) | def _sample_pos(self, assign_result, num_expected, **kwargs):
    method _sample_neg (line 31) | def _sample_neg(self, assign_result, num_expected, **kwargs):
    method sample (line 35) | def sample(self,

FILE: detection/mmdet/core/bbox/samplers/combined_sampler.py
  class CombinedSampler (line 7) | class CombinedSampler(BaseSampler):
    method __init__ (line 10) | def __init__(self, pos_sampler, neg_sampler, **kwargs):
    method _sample_pos (line 15) | def _sample_pos(self, **kwargs):
    method _sample_neg (line 19) | def _sample_neg(self, **kwargs):

FILE: detection/mmdet/core/bbox/samplers/instance_balanced_pos_sampler.py
  class InstanceBalancedPosSampler (line 10) | class InstanceBalancedPosSampler(RandomSampler):
    method _sample_pos (line 14) | def _sample_pos(self, assign_result, num_expected, **kwargs):

FILE: detection/mmdet/core/bbox/samplers/iou_balanced_neg_sampler.py
  class IoUBalancedNegSampler (line 10) | class IoUBalancedNegSampler(RandomSampler):
    method __init__ (line 30) | def __init__(self,
    method sample_via_interval (line 47) | def sample_via_interval(self, max_overlaps, full_set, num_expected):
    method _sample_neg (line 89) | def _sample_neg(self, assign_result, num_expected, **kwargs):

FILE: detection/mmdet/core/bbox/samplers/mask_pseudo_sampler.py
  class MaskPseudoSampler (line 13) | class MaskPseudoSampler(BaseSampler):
    method __init__ (line 16) | def __init__(self, **kwargs):
    method _sample_pos (line 19) | def _sample_pos(self, **kwargs):
    method _sample_neg (line 23) | def _sample_neg(self, **kwargs):
    method sample (line 27) | def sample(self, assign_result, masks, gt_masks, **kwargs):

FILE: detection/mmdet/core/bbox/samplers/mask_sampling_result.py
  class MaskSamplingResult (line 10) | class MaskSamplingResult(SamplingResult):
    method __init__ (line 13) | def __init__(self, pos_inds, neg_inds, masks, gt_masks, assign_result,
    method masks (line 37) | def masks(self):
    method __nice__ (line 41) | def __nice__(self):
    method info (line 50) | def info(self):

FILE: detection/mmdet/core/bbox/samplers/ohem_sampler.py
  class OHEMSampler (line 10) | class OHEMSampler(BaseSampler):
    method __init__ (line 16) | def __init__(self,
    method hard_mining (line 34) | def hard_mining(self, inds, num_expected, bboxes, labels, feats):
    method _sample_pos (line 55) | def _sample_pos(self,
    method _sample_neg (line 83) | def _sample_neg(self,

FILE: detection/mmdet/core/bbox/samplers/pseudo_sampler.py
  class PseudoSampler (line 10) | class PseudoSampler(BaseSampler):
    method __init__ (line 13) | def __init__(self, **kwargs):
    method _sample_pos (line 16) | def _sample_pos(self, **kwargs):
    method _sample_neg (line 20) | def _sample_neg(self, **kwargs):
    method sample (line 24) | def sample(self, assign_result, bboxes, gt_bboxes, *args, **kwargs):

FILE: detection/mmdet/core/bbox/samplers/random_sampler.py
  class RandomSampler (line 9) | class RandomSampler(BaseSampler):
    method __init__ (line 21) | def __init__(self,
    method random_choice (line 32) | def random_choice(self, gallery, num):
    method _sample_pos (line 64) | def _sample_pos(self, assign_result, num_expected, **kwargs):
    method _sample_neg (line 74) | def _sample_neg(self, assign_result, num_expected, **kwargs):

FILE: detection/mmdet/core/bbox/samplers/sampling_result.py
  class SamplingResult (line 7) | class SamplingResult(util_mixins.NiceRepr):
    method __init__ (line 26) | def __init__(self, pos_inds, neg_inds, bboxes, gt_bboxes, assign_result,
    method bboxes (line 53) | def bboxes(self):
    method to (line 57) | def to(self, device):
    method __nice__ (line 72) | def __nice__(self):
    method info (line 81) | def info(self):
    method random (line 94) | def random(cls, rng=None, **kwargs):

FILE: detection/mmdet/core/bbox/samplers/score_hlr_sampler.py
  class ScoreHLRSampler (line 12) | class ScoreHLRSampler(BaseSampler):
    method __init__ (line 33) | def __init__(self,
    method random_choice (line 63) | def random_choice(gallery, num):
    method _sample_pos (line 92) | def _sample_pos(self, assign_result, num_expected, **kwargs):
    method _sample_neg (line 100) | def _sample_neg(self,
    method sample (line 216) | def sample(self,

FILE: detection/mmdet/core/bbox/transforms.py
  function find_inside_bboxes (line 6) | def find_inside_bboxes(bboxes, img_h, img_w):
  function bbox_flip (line 22) | def bbox_flip(bboxes, img_shape, direction='horizontal'):
  function bbox_mapping (line 51) | def bbox_mapping(bboxes,
  function bbox_mapping_back (line 63) | def bbox_mapping_back(bboxes,
  function bbox2roi (line 75) | def bbox2roi(bbox_list):
  function roi2bbox (line 97) | def roi2bbox(rois):
  function bbox2result (line 116) | def bbox2result(bboxes, labels, num_classes):
  function distance2bbox (line 136) | def distance2bbox(points, distance, max_shape=None):
  function bbox2distance (line 189) | def bbox2distance(points, bbox, max_dis=None, eps=0.1):
  function bbox_rescale (line 213) | def bbox_rescale(bboxes, scale_factor=1.0):
  function bbox_cxcywh_to_xyxy (line 245) | def bbox_cxcywh_to_xyxy(bbox):
  function bbox_xyxy_to_cxcywh (line 259) | def bbox_xyxy_to_cxcywh(bbox):

FILE: detection/mmdet/core/data_structures/general_data.py
  class GeneralData (line 10) | class GeneralData(NiceRepr):
    method __init__ (line 87) | def __init__(self, meta_info=None, data=None):
    method set_meta_info (line 97) | def set_meta_info(self, meta_info):
    method set_data (line 129) | def set_data(self, data):
    method new (line 141) | def new(self, meta_info=None, data=None):
    method keys (line 159) | def keys(self):
    method meta_info_keys (line 166) | def meta_info_keys(self):
    method values (line 173) | def values(self):
    method meta_info_values (line 180) | def meta_info_values(self):
    method items (line 187) | def items(self):
    method meta_info_items (line 191) | def meta_info_items(self):
    method __setattr__ (line 195) | def __setattr__(self, name, val):
    method __delattr__ (line 211) | def __delattr__(self, item):
    method __getitem__ (line 228) | def __getitem__(self, name):
    method get (line 231) | def get(self, *args):
    method pop (line 235) | def pop(self, *args):
    method __contains__ (line 252) | def __contains__(self, item):
    method to (line 257) | def to(self, *args, **kwargs):
    method cpu (line 267) | def cpu(self):
    method mlu (line 277) | def mlu(self):
    method cuda (line 287) | def cuda(self):
    method detach (line 297) | def detach(self):
    method numpy (line 307) | def numpy(self):
    method __nice__ (line 316) | def __nice__(self):

FILE: detection/mmdet/core/data_structures/instance_data.py
  class InstanceData (line 10) | class InstanceData(GeneralData):
    method __setattr__ (line 66) | def __setattr__(self, name, value):
    method __getitem__ (line 90) | def __getitem__(self, item):
    method cat (line 151) | def cat(instances_list):
    method __len__ (line 183) | def __len__(self):

FILE: detection/mmdet/core/evaluation/bbox_overlaps.py
  function bbox_overlaps (line 5) | def bbox_overlaps(bboxes1,

FILE: detection/mmdet/core/evaluation/class_names.py
  function wider_face_classes (line 5) | def wider_face_classes():
  function voc_classes (line 9) | def voc_classes():
  function imagenet_det_classes (line 17) | def imagenet_det_classes():
  function imagenet_vid_classes (line 58) | def imagenet_vid_classes():
  function coco_classes (line 68) | def coco_classes():
  function cityscapes_classes (line 86) | def cityscapes_classes():
  function oid_challenge_classes (line 93) | def oid_challenge_classes():
  function oid_v6_classes (line 188) | def oid_v6_classes():
  function get_classes (line 318) | def get_classes(dataset):

FILE: detection/mmdet/core/evaluation/eval_hooks.py
  function _calc_dynamic_intervals (line 12) | def _calc_dynamic_intervals(start_interval, dynamic_interval_list):
  class EvalHook (line 24) | class EvalHook(BaseEvalHook):
    method __init__ (line 26) | def __init__(self, *args, dynamic_intervals=None, **kwargs):
    method _decide_interval (line 34) | def _decide_interval(self, runner):
    method before_train_epoch (line 41) | def before_train_epoch(self, runner):
    method before_train_iter (line 46) | def before_train_iter(self, runner):
    method _do_evaluate (line 50) | def _do_evaluate(self, runner):
  class DistEvalHook (line 68) | class DistEvalHook(BaseDistEvalHook):
    method __init__ (line 70) | def __init__(self, *args, dynamic_intervals=None, **kwargs):
    method _decide_interval (line 78) | def _decide_interval(self, runner):
    method before_train_epoch (line 85) | def before_train_epoch(self, runner):
    method before_train_iter (line 90) | def before_train_iter(self, runner):
    method _do_evaluate (line 94) | def _do_evaluate(self, runner):

FILE: detection/mmdet/core/evaluation/mean_ap.py
  function average_precision (line 13) | def average_precision(recalls, precisions, mode='area'):
  function tpfp_imagenet (line 60) | def tpfp_imagenet(det_bboxes,
  function tpfp_default (line 168) | def tpfp_default(det_bboxes,
  function tpfp_openimages (line 270) | def tpfp_openimages(det_bboxes,
  function get_cls_results (line 474) | def get_cls_results(det_results, annotations, class_id):
  function get_cls_group_ofs (line 501) | def get_cls_group_ofs(annotations, class_id):
  function eval_map (line 522) | def eval_map(det_results,
  function print_map_summary (line 688) | def print_map_summary(mean_ap,

FILE: detection/mmdet/core/evaluation/recall.py
  function _recalls (line 11) | def _recalls(all_ious, proposal_nums, thrs):
  function set_recall_param (line 44) | def set_recall_param(proposal_nums, iou_thrs):
  function eval_recalls (line 65) | def eval_recalls(gts,
  function print_recall_summary (line 117) | def print_recall_summary(recalls,
  function plot_num_recall (line 150) | def plot_num_recall(recalls, proposal_nums):
  function plot_iou_recall (line 175) | def plot_iou_recall(recalls, iou_thrs):

FILE: detection/mmdet/core/export/model_wrappers.py
  class DeployBaseDetector (line 12) | class DeployBaseDetector(BaseDetector):
    method __init__ (line 15) | def __init__(self, class_names, device_id):
    method simple_test (line 20) | def simple_test(self, img, img_metas, **kwargs):
    method aug_test (line 23) | def aug_test(self, imgs, img_metas, **kwargs):
    method extract_feat (line 26) | def extract_feat(self, imgs):
    method forward_train (line 29) | def forward_train(self, imgs, img_metas, **kwargs):
    method val_step (line 32) | def val_step(self, data, optimizer):
    method train_step (line 35) | def train_step(self, data, optimizer):
    method forward_test (line 38) | def forward_test(self, *, img, img_metas, **kwargs):
    method async_simple_test (line 41) | def async_simple_test(self, img, img_metas, **kwargs):
    method forward (line 44) | def forward(self, img, img_metas, return_loss=True, **kwargs):
  class ONNXRuntimeDetector (line 96) | class ONNXRuntimeDetector(DeployBaseDetector):
    method __init__ (line 99) | def __init__(self, onnx_file, class_names, device_id):
    method forward_test (line 130) | def forward_test(self, imgs, img_metas, **kwargs):
  class TensorRTDetector (line 152) | class TensorRTDetector(DeployBaseDetector):
    method __init__ (line 155) | def __init__(self, engine_file, class_names, device_id, output_names=N...
    method forward_test (line 177) | def forward_test(self, imgs, img_metas, **kwargs):

FILE: detection/mmdet/core/export/onnx_helper.py
  function dynamic_clip_for_onnx (line 7) | def dynamic_clip_for_onnx(x1, y1, x2, y2, max_shape):
  function get_k_for_topk (line 46) | def get_k_for_topk(k, size):
  function add_dummy_nms_for_onnx (line 82) | def add_dummy_nms_for_onnx(boxes,
  class DummyONNXNMSop (line 201) | class DummyONNXNMSop(torch.autograd.Function):
    method forward (line 208) | def forward(ctx, boxes, scores, max_output_boxes_per_class, iou_thresh...
    method symbolic (line 214) | def symbolic(g, boxes, scores, max_output_boxes_per_class, iou_threshold,

FILE: detection/mmdet/core/export/pytorch2onnx.py
  function generate_inputs_and_wrap_model (line 10) | def generate_inputs_and_wrap_model(config_path,
  function build_model_from_cfg (line 65) | def build_model_from_cfg(config_path, checkpoint_path, cfg_options=None):
  function preprocess_example_input (line 102) | def preprocess_example_input(input_config):

FILE: detection/mmdet/core/hook/checkloss_hook.py
  class CheckInvalidLossHook (line 7) | class CheckInvalidLossHook(Hook):
    method __init__ (line 18) | def __init__(self, interval=50):
    method after_train_iter (line 21) | def after_train_iter(self, runner):

FILE: detection/mmdet/core/hook/ema.py
  class BaseEMAHook (line 8) | class BaseEMAHook(Hook):
    method __init__ (line 32) | def __init__(self,
    method before_run (line 45) | def before_run(self, runner):
    method get_momentum (line 67) | def get_momentum(self, runner):
    method after_train_iter (line 71) | def after_train_iter(self, runner):
    method after_train_epoch (line 84) | def after_train_epoch(self, runner):
    method before_train_epoch (line 89) | def before_train_epoch(self, runner):
    method _swap_ema_parameters (line 94) | def _swap_ema_parameters(self):
  class ExpMomentumEMAHook (line 104) | class ExpMomentumEMAHook(BaseEMAHook):
    method __init__ (line 112) | def __init__(self, total_iter=2000, **kwargs):
  class LinearMomentumEMAHook (line 119) | class LinearMomentumEMAHook(BaseEMAHook):
    method __init__ (line 127) | def __init__(self, warm_up=100, **kwargs):

FILE: detection/mmdet/core/hook/memory_profiler_hook.py
  class MemoryProfilerHook (line 6) | class MemoryProfilerHook(Hook):
    method __init__ (line 15) | def __init__(self, interval=50):
    method after_iter (line 34) | def after_iter(self, runner):

FILE: detection/mmdet/core/hook/set_epoch_info_hook.py
  class SetEpochInfoHook (line 7) | class SetEpochInfoHook(Hook):
    method before_train_epoch (line 10) | def before_train_epoch(self, runner):

FILE: detection/mmdet/core/hook/sync_norm_hook.py
  function get_norm_states (line 11) | def get_norm_states(module):
  class SyncNormHook (line 21) | class SyncNormHook(Hook):
    method __init__ (line 30) | def __init__(self, num_last_epochs=15, interval=1):
    method before_train_epoch (line 34) | def before_train_epoch(self, runner):
    method after_train_epoch (line 40) | def after_train_epoch(self, runner):

FILE: detection/mmdet/core/hook/sync_random_size_hook.py
  class SyncRandomSizeHook (line 12) | class SyncRandomSizeHook(Hook):
    method __init__ (line 33) | def __init__(self,
    method after_train_epoch (line 52) | def after_train_epoch(self, runner):

FILE: detection/mmdet/core/hook/yolox_lrupdater_hook.py
  class YOLOXLrUpdaterHook (line 8) | class YOLOXLrUpdaterHook(CosineAnnealingLrUpdaterHook):
    method __init__ (line 23) | def __init__(self, num_last_epochs, **kwargs):
    method get_warmup_lr (line 27) | def get_warmup_lr(self, cur_iters):
    method get_lr (line 44) | def get_lr(self, runner, base_lr):

FILE: detection/mmdet/core/hook/yolox_mode_switch_hook.py
  class YOLOXModeSwitchHook (line 7) | class YOLOXModeSwitchHook(Hook):
    method __init__ (line 21) | def __init__(self,
    method before_train_epoch (line 28) | def before_train_epoch(self, runner):

FILE: detection/mmdet/core/mask/mask_target.py
  function mask_target (line 7) | def mask_target(pos_proposals_list, pos_assigned_gt_inds_list, gt_masks_...
  function mask_target_single (line 67) | def mask_target_single(pos_proposals, pos_assigned_gt_inds, gt_masks, cfg):

FILE: detection/mmdet/core/mask/structures.py
  class BaseInstanceMasks (line 12) | class BaseInstanceMasks(metaclass=ABCMeta):
    method rescale (line 16) | def rescale(self, scale, interpolation='nearest'):
    method resize (line 29) | def resize(self, out_shape, interpolation='nearest'):
    method flip (line 41) | def flip(self, flip_direction='horizontal'):
    method pad (line 52) | def pad(self, out_shape, pad_val):
    method crop (line 64) | def crop(self, bbox):
    method crop_and_resize (line 75) | def crop_and_resize(self,
    method expand (line 104) | def expand(self, expanded_h, expanded_w, top, left):
    method areas (line 109) | def areas(self):
    method to_ndarray (line 113) | def to_ndarray(self):
    method to_tensor (line 121) | def to_tensor(self, dtype, device):
    method translate (line 133) | def translate(self,
    method shear (line 153) | def shear(self,
    method rotate (line 175) | def rotate(self, out_shape, angle, center=None, scale=1.0, fill_val=0):
  class BitmapMasks (line 193) | class BitmapMasks(BaseInstanceMasks):
    method __init__ (line 222) | def __init__(self, masks, height, width):
    method __getitem__ (line 239) | def __getitem__(self, index):
    method __iter__ (line 251) | def __iter__(self):
    method __repr__ (line 254) | def __repr__(self):
    method __len__ (line 261) | def __len__(self):
    method rescale (line 265) | def rescale(self, scale, interpolation='nearest'):
    method resize (line 278) | def resize(self, out_shape, interpolation='nearest'):
    method flip (line 290) | def flip(self, flip_direction='horizontal'):
    method pad (line 303) | def pad(self, out_shape, pad_val=0):
    method crop (line 314) | def crop(self, bbox):
    method crop_and_resize (line 333) | def crop_and_resize(self,
    method expand (line 369) | def expand(self, expanded_h, expanded_w, top, left):
    method translate (line 381) | def translate(self,
    method shear (line 431) | def shear(self,
    method rotate (line 466) | def rotate(self, out_shape, angle, center=None, scale=1.0, fill_val=0):
    method areas (line 499) | def areas(self):
    method to_ndarray (line 503) | def to_ndarray(self):
    method to_tensor (line 507) | def to_tensor(self, dtype, device):
    method random (line 512) | def random(cls,
    method get_bboxes (line 532) | def get_bboxes(self):
  class PolygonMasks (line 548) | class PolygonMasks(BaseInstanceMasks):
    method __init__ (line 588) | def __init__(self, masks, height, width):
    method __getitem__ (line 598) | def __getitem__(self, index):
    method __iter__ (line 621) | def __iter__(self):
    method __repr__ (line 624) | def __repr__(self):
    method __len__ (line 631) | def __len__(self):
    method rescale (line 635) | def rescale(self, scale, interpolation=None):
    method resize (line 644) | def resize(self, out_shape, interpolation=None):
    method flip (line 663) | def flip(self, flip_direction='horizontal'):
    method crop (line 687) | def crop(self, bbox):
    method pad (line 716) | def pad(self, out_shape, pad_val=0):
    method expand (line 720) | def expand(self, *args, **kwargs):
    method crop_and_resize (line 724) | def crop_and_resize(self,
    method translate (line 765) | def translate(self,
    method shear (line 799) | def shear(self,
    method rotate (line 831) | def rotate(self, out_shape, angle, center=None, scale=1.0, fill_val=0):
    method to_bitmap (line 860) | def to_bitmap(self):
    method areas (line 866) | def areas(self):
    method _polygon_area (line 884) | def _polygon_area(self, x, y):
    method to_ndarray (line 900) | def to_ndarray(self):
    method to_tensor (line 910) | def to_tensor(self, dtype, device):
    method random (line 920) | def random(cls,
    method get_bboxes (line 1039) | def get_bboxes(self):
  function polygon_to_bitmap (line 1058) | def polygon_to_bitmap(polygons, height, width):
  function bitmap_to_polygon (line 1075) | def bitmap_to_polygon(bitmap):

FILE: detection/mmdet/core/mask/utils.py
  function split_combined_polys (line 8) | def split_combined_polys(polys, poly_lens, polys_per_mask):
  function encode_mask_results (line 38) | def encode_mask_results(mask_results):
  function mask2bbox (line 68) | def mask2bbox(masks):

FILE: detection/mmdet/core/post_processing/bbox_nms.py
  function multiclass_nms (line 8) | def multiclass_nms(multi_bboxes,
  function fast_nms (line 98) | def fast_nms(multi_bboxes,

FILE: detection/mmdet/core/post_processing/matrix_nms.py
  function mask_matrix_nms (line 5) | def mask_matrix_nms(masks,

FILE: detection/mmdet/core/post_processing/merge_augs.py
  function merge_aug_proposals (line 13) | def merge_aug_proposals(aug_proposals, img_metas, cfg):
  function merge_aug_bboxes (line 84) | def merge_aug_bboxes(aug_bboxes, aug_scores, img_metas, rcnn_test_cfg):
  function merge_aug_scores (line 113) | def merge_aug_scores(aug_scores):
  function merge_aug_masks (line 121) | def merge_aug_masks(aug_masks, img_metas, rcnn_test_cfg, weights=None):

FILE: detection/mmdet/core/utils/dist_utils.py
  function _allreduce_coalesced (line 15) | def _allreduce_coalesced(tensors, world_size, bucket_size_mb=-1):
  function allreduce_grads (line 37) | def allreduce_grads(params, coalesce=True, bucket_size_mb=-1):
  class DistOptimizerHook (line 59) | class DistOptimizerHook(OptimizerHook):
    method __init__ (line 62) | def __init__(self, *args, **kwargs):
  function reduce_mean (line 68) | def reduce_mean(tensor):
  function obj2tensor (line 77) | def obj2tensor(pyobj, device='cuda'):
  function tensor2obj (line 83) | def tensor2obj(tensor):
  function _get_global_gloo_group (line 89) | def _get_global_gloo_group():
  function all_reduce_dict (line 98) | def all_reduce_dict(py_dict, op='sum', group=None, to_float=True):
  function sync_random_seed (line 157) | def sync_random_seed(seed=None, device='cuda'):

FILE: detection/mmdet/core/utils/misc.py
  function multi_apply (line 11) | def multi_apply(func, *args, **kwargs):
  function unmap (line 33) | def unmap(data, count, inds, fill=0):
  function mask2ndarray (line 46) | def mask2ndarray(mask):
  function flip_tensor (line 65) | def flip_tensor(src_tensor, flip_direction):
  function select_single_mlvl (line 88) | def select_single_mlvl(mlvl_tensors, batch_id, detach=True):
  function filter_scores_and_topk (line 119) | def filter_scores_and_topk(scores, score_thr, topk, results=None):
  function center_of_mass (line 168) | def center_of_mass(mask, esp=1e-6):
  function generate_coordinate (line 190) | def generate_coordinate(featmap_sizes, device='cuda'):

FILE: detection/mmdet/core/visualization/image.py
  function color_val_matplotlib (line 23) | def color_val_matplotlib(color):
  function _get_adaptive_scales (line 38) | def _get_adaptive_scales(areas, min_area=800, max_area=30000):
  function _get_bias_color (line 61) | def _get_bias_color(base, max_dist=30):
  function draw_bboxes (line 79) | def draw_bboxes(ax, bboxes, color='g', alpha=0.8, thickness=2):
  function draw_labels (line 112) | def draw_labels(ax,
  function draw_masks (line 164) | def draw_masks(ax, img, masks, color=None, with_edge=True, alpha=0.8):
  function imshow_det_bboxes (line 206) | def imshow_det_bboxes(img,
  function imshow_gt_det_bboxes (line 376) | def imshow_gt_det_bboxes(img,

FILE: detection/mmdet/core/visualization/palette.py
  function palette_val (line 6) | def palette_val(palette):
  function get_palette (line 22) | def get_palette(palette, num_classes):

FILE: detection/mmdet/datasets/api_wrappers/coco_api.py
  class COCO (line 11) | class COCO(_COCO):
    method __init__ (line 18) | def __init__(self, annotation_file=None):
    method get_ann_ids (line 27) | def get_ann_ids(self, img_ids=[], cat_ids=[], area_rng=[], iscrowd=None):
    method get_cat_ids (line 30) | def get_cat_ids(self, cat_names=[], sup_names=[], cat_ids=[]):
    method get_img_ids (line 33) | def get_img_ids(self, img_ids=[], cat_ids=[]):
    method load_anns (line 36) | def load_anns(self, ids):
    method load_cats (line 39) | def load_cats(self, ids):
    method load_imgs (line 42) | def load_imgs(self, ids):

FILE: detection/mmdet/datasets/api_wrappers/panoptic_evaluation.py
  function pq_compute_single_core (line 23) | def pq_compute_single_core(proc_id,
  function pq_compute_multi_core (line 169) | def pq_compute_multi_core(matched_annotations_list,

FILE: detection/mmdet/datasets/builder.py
  function _concat_dataset (line 32) | def _concat_dataset(cfg, default_args=None):
  function build_dataset (line 59) | def build_dataset(cfg, default_args=None):
  function build_dataloader (line 87) | def build_dataloader(dataset,
  function worker_init_fn (line 209) | def worker_init_fn(worker_id, num_workers, rank, seed):

FILE: detection/mmdet/datasets/cityscapes.py
  class CityscapesDataset (line 21) | class CityscapesDataset(CocoDataset):
    method _filter_imgs (line 29) | def _filter_imgs(self, min_size=32):
    method _parse_ann_info (line 57) | def _parse_ann_info(self, img_info, ann_info):
    method results2txt (line 111) | def results2txt(self, results, outfile_prefix):
    method format_results (line 177) | def format_results(self, results, txtfile_prefix=None):
    method evaluate (line 211) | def evaluate(self,
    method _evaluate_cityscapes (line 278) | def _evaluate_cityscapes(self, results, txtfile_prefix, logger):

FILE: detection/mmdet/datasets/coco.py
  class CocoDataset (line 23) | class CocoDataset(CustomDataset):
    method load_annotations (line 74) | def load_annotations(self, ann_file):
    method get_ann_info (line 103) | def get_ann_info(self, idx):
    method get_cat_ids (line 118) | def get_cat_ids(self, idx):
    method _filter_imgs (line 133) | def _filter_imgs(self, min_size=32):
    method _parse_ann_info (line 157) | def _parse_ann_info(self, img_info, ann_info):
    method xyxy2xywh (line 216) | def xyxy2xywh(self, bbox):
    method _proposal2json (line 236) | def _proposal2json(self, results):
    method _det2json (line 251) | def _det2json(self, results):
    method _segm2json (line 268) | def _segm2json(self, results):
    method results2json (line 306) | def results2json(self, results, outfile_prefix):
    method fast_eval_recall (line 346) | def fast_eval_recall(self, results, proposal_nums, iou_thrs, logger=No...
    method format_results (line 370) | def format_results(self, results, jsonfile_prefix=None, **kwargs):
    method evaluate_det_segm (line 398) | def evaluate_det_segm(self,
    method evaluate (line 604) | def evaluate(self,

FILE: detection/mmdet/datasets/coco_panoptic.py
  class COCOPanoptic (line 28) | class COCOPanoptic(COCO):
    method __init__ (line 37) | def __init__(self, annotation_file=None):
    method createIndex (line 46) | def createIndex(self):
    method load_anns (line 89) | def load_anns(self, ids=[]):
  class CocoPanopticDataset (line 114) | class CocoPanopticDataset(CocoDataset):
    method __init__ (line 259) | def __init__(self,
    method load_annotations (line 284) | def load_annotations(self, ann_file):
    method get_ann_info (line 306) | def get_ann_info(self, idx):
    method _parse_ann_info (line 322) | def _parse_ann_info(self, img_info, ann_info):
    method _filter_imgs (line 385) | def _filter_imgs(self, min_size=32):
    method _pan2json (line 410) | def _pan2json(self, results, outfile_prefix):
    method results2json (line 452) | def results2json(self, results, outfile_prefix):
    method evaluate_pan_json (line 503) | def evaluate_pan_json(self,
    method evaluate (line 568) | def evaluate(self,
  function parse_pq_results (line 641) | def parse_pq_results(pq_results):
  function print_panoptic_table (line 656) | def print_panoptic_table(pq_results, classwise_results=None, logger=None):

FILE: detection/mmdet/datasets/custom.py
  class CustomDataset (line 18) | class CustomDataset(Dataset):
    method __init__ (line 59) | def __init__(self,
    method __len__ (line 131) | def __len__(self):
    method load_annotations (line 135) | def load_annotations(self, ann_file):
    method load_proposals (line 139) | def load_proposals(self, proposal_file):
    method get_ann_info (line 143) | def get_ann_info(self, idx):
    method get_cat_ids (line 155) | def get_cat_ids(self, idx):
    method pre_pipeline (line 167) | def pre_pipeline(self, results):
    method _filter_imgs (line 176) | def _filter_imgs(self, min_size=32):
    method _set_group_flag (line 187) | def _set_group_flag(self):
    method _rand_another (line 199) | def _rand_another(self, idx):
    method __getitem__ (line 204) | def __getitem__(self, idx):
    method prepare_train_img (line 224) | def prepare_train_img(self, idx):
    method prepare_test_img (line 243) | def prepare_test_img(self, idx):
    method get_classes (line 262) | def get_classes(cls, classes=None):
    method get_cat2imgs (line 288) | def get_cat2imgs(self):
    method format_results (line 307) | def format_results(self, results, **kwargs):
    method evaluate (line 310) | def evaluate(self,
    method __repr__ (line 369) | def __repr__(self):

FILE: detection/mmdet/datasets/dataset_wrappers.py
  class ConcatDataset (line 17) | class ConcatDataset(_ConcatDataset):
    method __init__ (line 30) | def __init__(self, datasets, separate_eval=True):
    method get_cat_ids (line 50) | def get_cat_ids(self, idx):
    method get_ann_info (line 72) | def get_ann_info(self, idx):
    method evaluate (line 94) | def evaluate(self, results, logger=None, **kwargs):
  class RepeatDataset (line 154) | class RepeatDataset:
    method __init__ (line 167) | def __init__(self, dataset, times):
    method __getitem__ (line 177) | def __getitem__(self, idx):
    method get_cat_ids (line 180) | def get_cat_ids(self, idx):
    method get_ann_info (line 192) | def get_ann_info(self, idx):
    method __len__ (line 204) | def __len__(self):
  class ClassBalancedDataset (line 211) | class ClassBalancedDataset:
    method __init__ (line 247) | def __init__(self, dataset, oversample_thr, filter_empty_gt=True):
    method _get_repeat_factors (line 267) | def _get_repeat_factors(self, dataset, repeat_thr):
    method __getitem__ (line 316) | def __getitem__(self, idx):
    method get_ann_info (line 320) | def get_ann_info(self, idx):
    method __len__ (line 332) | def __len__(self):
  class MultiImageMixDataset (line 338) | class MultiImageMixDataset:
    method __init__ (line 362) | def __init__(self,
    method __len__ (line 398) | def __len__(self):
    method __getitem__ (line 401) | def __getitem__(self, idx):
    method update_skip_type_keys (line 446) | def update_skip_type_keys(self, skip_type_keys):

FILE: detection/mmdet/datasets/deepfashion.py
  class DeepFashionDataset (line 7) | class DeepFashionDataset(CocoDataset):

FILE: detection/mmdet/datasets/lvis.py
  class LVISV05Dataset (line 18) | class LVISV05Dataset(CocoDataset):
    method load_annotations (line 272) | def load_annotations(self, ann_file):
    method evaluate (line 311) | def evaluate(self,
  class LVISV1Dataset (line 475) | class LVISV1Dataset(LVISDataset):
    method load_annotations (line 717) | def load_annotations(self, ann_file):

FILE: detection/mmdet/datasets/openimages.py
  class OpenImagesDataset (line 21) | class OpenImagesDataset(CustomDataset):
    method __init__ (line 63) | def __init__(self,
    method get_classes_from_csv (line 127) | def get_classes_from_csv(self, label_file):
    method load_annotations (line 150) | def load_annotations(self, ann_file):
    method get_ann_info (line 220) | def get_ann_info(self, idx):
    method get_meta_from_file (line 291) | def get_meta_from_file(self, meta_file=''):
    method get_meta_from_pipeline (line 308) | def get_meta_from_pipeline(self, results):
    method get_img_shape (line 319) | def get_img_shape(self, metas):
    method prepare_test_img (line 332) | def prepare_test_img(self, idx):
    method _filter_imgs (line 344) | def _filter_imgs(self, min_size=32):
    method _set_group_flag (line 352) | def _set_group_flag(self):
    method get_relation_matrix (line 357) | def get_relation_matrix(self, hierarchy_file):
    method _convert_hierarchy_tree (line 380) | def _convert_hierarchy_tree(self,
    method add_supercategory_ann (line 426) | def add_supercategory_ann(self, annotations):
    method process_results (line 457) | def process_results(self, det_results, annotations,
    method load_image_label_from_csv (line 503) | def load_image_label_from_csv(self, image_level_ann_file):
    method get_image_level_ann (line 538) | def get_image_level_ann(self, image_level_ann_file):
    method denormalize_gt_bboxes (line 591) | def denormalize_gt_bboxes(self, annotations):
    method get_cat_ids (line 604) | def get_cat_ids(self, idx):
    method evaluate (line 615) | def evaluate(self,
  class OpenImagesChallengeDataset (line 727) | class OpenImagesChallengeDataset(OpenImagesDataset):
    method __init__ (line 730) | def __init__(self, ann_file, **kwargs):
    method get_classes_from_csv (line 735) | def get_classes_from_csv(self, label_file):
    method load_annotations (line 765) | def load_annotations(self, ann_file):
    method prepare_train_img (line 805) | def prepare_train_img(self, idx):
    method prepare_test_img (line 817) | def prepare_test_img(self, idx):
    method get_relation_matrix (line 830) | def get_relation_matrix(self, hierarchy_file):
    method get_ann_info (line 844) | def get_ann_info(self, idx):
    method load_image_label_from_csv (line 857) | def load_image_label_from_csv(self, image_level_ann_file):

FILE: detection/mmdet/datasets/pipelines/auto_augment.py
  function level_to_value (line 14) | def level_to_value(level, max_value):
  function enhance_level_to_value (line 19) | def enhance_level_to_value(level, a=1.8, b=0.1):
  function random_negative (line 24) | def random_negative(value, random_negative_prob):
  function bbox2fields (line 29) | def bbox2fields():
  class AutoAugment (line 47) | class AutoAugment:
    method __init__ (line 90) | def __init__(self, policies):
    method __call__ (line 104) | def __call__(self, results):
    method __repr__ (line 108) | def __repr__(self):
  class Shear (line 113) | class Shear:
    method __init__ (line 136) | def __init__(self,
    method _shear_img (line 180) | def _shear_img(self,
    method _shear_bboxes (line 205) | def _shear_bboxes(self, results, magnitude):
    method _shear_masks (line 235) | def _shear_masks(self,
    method _shear_seg (line 251) | def _shear_seg(self,
    method _filter_invalid (line 267) | def _filter_invalid(self, results, min_bbox_size=0):
    method __call__ (line 286) | def __call__(self, results):
    method __repr__ (line 317) | def __repr__(self):
  class Rotate (line 331) | class Rotate:
    method __init__ (line 357) | def __init__(self,
    method _rotate_img (line 408) | def _rotate_img(self, results, angle, center=None, scale=1.0):
    method _rotate_bboxes (line 427) | def _rotate_bboxes(self, results, rotate_matrix):
    method _rotate_masks (line 462) | def _rotate_masks(self,
    method _rotate_seg (line 474) | def _rotate_seg(self,
    method _filter_invalid (line 487) | def _filter_invalid(self, results, min_bbox_size=0):
    method __call__ (line 506) | def __call__(self, results):
    method __repr__ (line 532) | def __repr__(self):
  class Translate (line 546) | class Translate:
    method __init__ (line 572) | def __init__(self,
    method _translate_img (line 613) | def _translate_img(self, results, offset, direction='horizontal'):
    method _translate_bboxes (line 628) | def _translate_bboxes(self, results, offset):
    method _translate_masks (line 646) | def _translate_masks(self,
    method _translate_seg (line 657) | def _translate_seg(self,
    method _filter_invalid (line 668) | def _filter_invalid(self, results, min_size=0):
    method __call__ (line 687) | def __call__(self, results):
  class ColorTransform (line 713) | class ColorTransform:
    method __init__ (line 722) | def __init__(self, level, prob=0.5):
    method _adjust_color_img (line 733) | def _adjust_color_img(self, results, factor=1.0):
    method __call__ (line 740) | def __call__(self, results):
    method __repr__ (line 754) | def __repr__(self):
  class EqualizeTransform (line 762) | class EqualizeTransform:
    method __init__ (line 770) | def __init__(self, prob=0.5):
    method _imequalize (line 775) | def _imequalize(self, results):
    method __call__ (line 781) | def __call__(self, results):
    method __repr__ (line 795) | def __repr__(self):
  class BrightnessTransform (line 801) | class BrightnessTransform:
    method __init__ (line 810) | def __init__(self, level, prob=0.5):
    method _adjust_brightness_img (line 821) | def _adjust_brightness_img(self, results, factor=1.0):
    method __call__ (line 828) | def __call__(self, results):
    method __repr__ (line 842) | def __repr__(self):
  class ContrastTransform (line 850) | class ContrastTransform:
    method __init__ (line 859) | def __init__(self, level, prob=0.5):
    method _adjust_contrast_img (line 870) | def _adjust_contrast_img(self, results, factor=1.0):
    method __call__ (line 876) | def __call__(self, results):
    method __repr__ (line 890) | def __repr__(self):

FILE: detection/mmdet/datasets/pipelines/compose.py
  class Compose (line 10) | class Compose:
    method __init__ (line 18) | def __init__(self, transforms):
    method __call__ (line 30) | def __call__(self, data):
    method __repr__ (line 46) | def __repr__(self):

FILE: detection/mmdet/datasets/pipelines/formatting.py
  function to_tensor (line 12) | def to_tensor(data):
  class ToTensor (line 38) | class ToTensor:
    method __init__ (line 45) | def __init__(self, keys):
    method __call__ (line 48) | def __call__(self, results):
    method __repr__ (line 62) | def __repr__(self):
  class ImageToTensor (line 67) | class ImageToTensor:
    method __init__ (line 78) | def __init__(self, keys):
    method __call__ (line 81) | def __call__(self, results):
    method __repr__ (line 99) | def __repr__(self):
  class Transpose (line 104) | class Transpose:
    method __init__ (line 112) | def __init__(self, keys, order):
    method __call__ (line 116) | def __call__(self, results):
    method __repr__ (line 130) | def __repr__(self):
  class ToDataContainer (line 136) | class ToDataContainer:
    method __init__ (line 147) | def __init__(self,
    method __call__ (line 152) | def __call__(self, results):
    method __repr__ (line 170) | def __repr__(self):
  class DefaultFormatBundle (line 175) | class DefaultFormatBundle:
    method __init__ (line 200) | def __init__(self,
    method __call__ (line 206) | def __call__(self, results):
    method _add_default_meta_keys (line 248) | def _add_default_meta_keys(self, results):
    method __repr__ (line 273) | def __repr__(self):
  class Collect (line 279) | class Collect:
    method __init__ (line 318) | def __init__(self,
    method __call__ (line 326) | def __call__(self, results):
    method __repr__ (line 349) | def __repr__(self):
  class WrapFieldsToLists (line 355) | class WrapFieldsToLists:
    method __call__ (line 375) | def __call__(self, results):
    method __repr__ (line 391) | def __repr__(self):

FILE: detection/mmdet/datasets/pipelines/instaboost.py
  class InstaBoost (line 8) | class InstaBoost:
    method __init__ (line 35) | def __init__(self,
    method _load_anns (line 56) | def _load_anns(self, results):
    method _parse_anns (line 78) | def _parse_anns(self, results, anns, img):
    method __call__ (line 99) | def __call__(self, results):
    method __repr__ (line 115) | def __repr__(self):

FILE: detection/mmdet/datasets/pipelines/loading.py
  class LoadImageFromFile (line 18) | class LoadImageFromFile:
    method __init__ (line 37) | def __init__(self,
    method __call__ (line 48) | def __call__(self, results):
    method __repr__ (line 81) | def __repr__(self):
  class LoadImageFromWebcam (line 91) | class LoadImageFromWebcam(LoadImageFromFile):
    method __call__ (line 98) | def __call__(self, results):
  class LoadMultiChannelImageFromFiles (line 123) | class LoadMultiChannelImageFromFiles:
    method __init__ (line 143) | def __init__(self,
    method __call__ (line 152) | def __call__(self, results):
    method __repr__ (line 197) | def __repr__(self):
  class LoadAnnotations (line 206) | class LoadAnnotations:
    method __init__ (line 228) | def __init__(self,
    method _load_bboxes (line 245) | def _load_bboxes(self, results):
    method _load_labels (line 277) | def _load_labels(self, results):
    method _poly2mask (line 290) | def _poly2mask(self, mask_ann, img_h, img_w):
    method process_polygons (line 317) | def process_polygons(self, polygons):
    method _load_masks (line 334) | def _load_masks(self, results):
    method _load_semantic_seg (line 359) | def _load_semantic_seg(self, results):
    method __call__ (line 380) | def __call__(self, results):
    method __repr__ (line 403) | def __repr__(self):
  class LoadPanopticAnnotations (line 415) | class LoadPanopticAnnotations(LoadAnnotations):
    method __init__ (line 432) | def __init__(self,
    method _load_masks_and_semantic_segs (line 453) | def _load_masks_and_semantic_segs(self, results):
    method __call__ (line 500) | def __call__(self, results):
  class LoadProposals (line 526) | class LoadProposals:
    method __init__ (line 536) | def __init__(self, num_max_proposals=None):
    method __call__ (line 539) | def __call__(self, results):
    method __repr__ (line 565) | def __repr__(self):
  class FilterAnnotations (line 571) | class FilterAnnotations:
    method __init__ (line 581) | def __init__(self, min_gt_bbox_wh, keep_empty=True):
    method __call__ (line 586) | def __call__(self, results):
    method __repr__ (line 606) | def __repr__(self):

FILE: detection/mmdet/datasets/pipelines/test_time_aug.py
  class MultiScaleFlipAug (line 11) | class MultiScaleFlipAug:
    method __init__ (line 54) | def __init__(self,
    method __call__ (line 85) | def __call__(self, results):
    method __repr__ (line 116) | def __repr__(self):

FILE: detection/mmdet/datasets/pipelines/transforms.py
  class Resize (line 31) | class Resize:
    method __init__ (line 76) | def __init__(self,
    method random_select (line 111) | def random_select(img_scales):
    method random_sample (line 129) | def random_sample(img_scales):
    method random_sample_ratio (line 156) | def random_sample_ratio(img_scale, ratio_range):
    method _random_scale (line 182) | def _random_scale(self, results):
    method _resize_img (line 215) | def _resize_img(self, results):
    method _resize_bboxes (line 248) | def _resize_bboxes(self, results):
    method _resize_masks (line 258) | def _resize_masks(self, results):
    method _resize_seg (line 268) | def _resize_seg(self, results):
    method __call__ (line 285) | def __call__(self, results):
    method __repr__ (line 322) | def __repr__(self):
  class RandomFlip (line 333) | class RandomFlip:
    method __init__ (line 370) | def __init__(self, flip_ratio=None, direction='horizontal'):
    method bbox_flip (line 396) | def bbox_flip(self, bboxes, img_shape, direction):
    method __call__ (line 430) | def __call__(self, results):
    method __repr__ (line 485) | def __repr__(self):
  class RandomShift (line 490) | class RandomShift:
    method __init__ (line 501) | def __init__(self, shift_ratio=0.5, max_shift_px=32, filter_thr_px=1):
    method __call__ (line 513) | def __call__(self, results):
    method __repr__ (line 573) | def __repr__(self):
  class Pad (line 580) | class Pad:
    method __init__ (line 596) | def __init__(self,
    method _pad_img (line 622) | def _pad_img(self, results):
    method _pad_masks (line 640) | def _pad_masks(self, results):
    method _pad_seg (line 647) | def _pad_seg(self, results):
    method __call__ (line 655) | def __call__(self, results):
    method __repr__ (line 669) | def __repr__(self):
  class Normalize (line 679) | class Normalize:
    method __init__ (line 691) | def __init__(self, mean, std, to_rgb=True):
    method __call__ (line 696) | def __call__(self, results):
    method __repr__ (line 713) | def __repr__(self):
  class RandomCrop (line 720) | class RandomCrop:
    method __init__ (line 756) | def __init__(self,
    method _crop_data (line 787) | def _crop_data(self, results, crop_size, allow_negative_crop):
    method _get_crop_size (line 854) | def _get_crop_size(self, image_size):
    method __call__ (line 884) | def __call__(self, results):
    method __repr__ (line 900) | def __repr__(self):
  class SegRescale (line 910) | class SegRescale:
    method __init__ (line 920) | def __init__(self, scale_factor=1, backend='cv2'):
    method __call__ (line 924) | def __call__(self, results):
    method __repr__ (line 943) | def __repr__(self):
  class PhotoMetricDistortion (line 948) | class PhotoMetricDistortion:
    method __init__ (line 969) | def __init__(self,
    method __call__ (line 979) | def __call__(self, results):
    method __repr__ (line 1040) | def __repr__(self):
  class Expand (line 1052) | class Expand:
    method __init__ (line 1065) | def __init__(self,
    method __call__ (line 1081) | def __call__(self, results):
    method __repr__ (line 1135) | def __repr__(self):
  class MinIoURandomCrop (line 1144) | class MinIoURandomCrop:
    method __init__ (line 1163) | def __init__(self,
    method __call__ (line 1181) | def __call__(self, results):
    method __repr__ (line 1275) | def __repr__(self):
  class Corrupt (line 1284) | class Corrupt:
    method __init__ (line 1295) | def __init__(self, corruption, severity=1):
    method __call__ (line 1299) | def __call__(self, results):
    method __repr__ (line 1320) | def __repr__(self):
  class Albu (line 1328) | class Albu:
    method __init__ (line 1370) | def __init__(self,
    method albu_builder (line 1413) | def albu_builder(self, cfg):
    method mapper (line 1448) | def mapper(d, keymap):
    method __call__ (line 1464) | def __call__(self, results):
    method __repr__ (line 1526) | def __repr__(self):
  class RandomCenterCropPad (line 1532) | class RandomCenterCropPad:
    method __init__ (line 1620) | def __init__(self,
    method _get_border (line 1666) | def _get_border(self, border, size):
    method _filter_boxes (line 1685) | def _filter_boxes(self, patch, boxes):
    method _crop_image_and_paste (line 1701) | def _crop_image_and_paste(self, image, center, size):
    method _train_aug (line 1752) | def _train_aug(self, results):
    method _test_aug (line 1820) | def _test_aug(self, results):
    method __call__ (line 1854) | def __call__(self, results):
    method __repr__ (line 1866) | def __repr__(self):
  class CutOut (line 1881) | class CutOut:
    method __init__ (line 1904) | def __init__(self,
    method __call__ (line 1925) | def __call__(self, results):
    method __repr__ (line 1945) | def __repr__(self):
  class Mosaic (line 1955) | class Mosaic:
    method __init__ (line 2008) | def __init__(self,
    method __call__ (line 2029) | def __call__(self, results):
    method get_indexes (line 2045) | def get_indexes(self, dataset):
    method _mosaic_transform (line 2058) | def _mosaic_transform(self, results):
    method _mosaic_combine (line 2155) | def _mosaic_combine(self, loc, center_position_xy, img_shape_wh):
    method _filter_box_candidates (line 2216) | def _filter_box_candidates(self, bboxes, labels):
    method __repr__ (line 2225) | def __repr__(self):
  class MixUp (line 2236) | class MixUp:
    method __init__ (line 2292) | def __init__(self,
    method __call__ (line 2316) | def __call__(self, results):
    method get_indexes (line 2329) | def get_indexes(self, dataset):
    method _mixup_transform (line 2347) | def _mixup_transform(self, results):
    method _filter_box_candidates (line 2470) | def _filter_box_candidates(self, bbox1, bbox2):
    method __repr__ (line 2485) | def __repr__(self):
  class RandomAffine (line 2500) | class RandomAffine:
    method __init__ (line 2539) | def __init__(self,
    method __call__ (line 2566) | def __call__(self, results):
    method filter_gt_bboxes (line 2649) | def filter_gt_bboxes(self, origin_bboxes, wrapped_bboxes):
    method __repr__ (line 2664) | def __repr__(self):
    method _get_rotation_matrix (line 2679) | def _get_rotation_matrix(rotate_degrees):
    method _get_scaling_matrix (line 2688) | def _get_scaling_matrix(scale_ratio):
    method _get_share_matrix (line 2695) | def _get_share_matrix(scale_ratio):
    method _get_shear_matrix (line 2702) | def _get_shear_matrix(x_shear_degrees, y_shear_degrees):
    method _get_translation_matrix (line 2711) | def _get_translation_matrix(x, y):
  class YOLOXHSVRandomAug (line 2718) | class YOLOXHSVRandomAug:
    method __init__ (line 2729) | def __init__(self, hue_delta=5, saturation_delta=30, value_delta=30):
    method __call__ (line 2734) | def __call__(self, results):
    method __repr__ (line 2753) | def __repr__(self):
  class CopyPaste (line 2762) | class CopyPaste:
    method __init__ (line 2794) | def __init__(
    method get_indexes (line 2806) | def get_indexes(self, dataset):
    method __call__ (line 2816) | def __call__(self, results):
    method _select_object (line 2835) | def _select_object(self, results):
    method _copy_paste (line 2854) | def _copy_paste(self, dst_results, src_results):
    method get_updated_masks (line 2907) | def get_updated_masks(self, masks, composed_mask):
    method __repr__ (line 2913) | def __repr__(self):

FILE: detection/mmdet/datasets/samplers/class_aware_sampler.py
  class ClassAwareSampler (line 11) | class ClassAwareSampler(Sampler):
    method __init__ (line 40) | def __init__(self,
    method __iter__ (line 85) | def __iter__(self):
    method __len__ (line 131) | def __len__(self):
    method set_epoch (line 134) | def set_epoch(self, epoch):
  class RandomCycleIter (line 138) | class RandomCycleIter:
    method __init__ (line 156) | def __init__(self, data, generator=None):
    method __iter__ (line 163) | def __iter__(self):
    method __len__ (line 166) | def __len__(self):
    method __next__ (line 169) | def __next__(self):

FILE: detection/mmdet/datasets/samplers/distributed_sampler.py
  class DistributedSampler (line 11) | class DistributedSampler(_DistributedSampler):
    method __init__ (line 13) | def __init__(self,
    method __iter__ (line 31) | def __iter__(self):

FILE: detection/mmdet/datasets/samplers/group_sampler.py
  class GroupSampler (line 10) | class GroupSampler(Sampler):
    method __init__ (line 12) | def __init__(self, dataset, samples_per_gpu=1):
    method __iter__ (line 23) | def __iter__(self):
    method __len__ (line 47) | def __len__(self):
  class DistributedGroupSampler (line 51) | class DistributedGroupSampler(Sampler):
    method __init__ (line 72) | def __init__(self,
    method __iter__ (line 101) | def __iter__(self):
    method __len__ (line 144) | def __len__(self):
    method set_epoch (line 147) | def set_epoch(self, epoch):

FILE: detection/mmdet/datasets/samplers/infinite_sampler.py
  class InfiniteGroupBatchSampler (line 12) | class InfiniteGroupBatchSampler(Sampler):
    method __init__ (line 37) | def __init__(self,
    method _infinite_indices (line 71) | def _infinite_indices(self):
    method _indices_of_rank (line 82) | def _indices_of_rank(self):
    method __iter__ (line 87) | def __iter__(self):
    method __len__ (line 97) | def __len__(self):
    method set_epoch (line 101) | def set_epoch(self, epoch):
  class InfiniteBatchSampler (line 106) | class InfiniteBatchSampler(Sampler):
    method __init__ (line 128) | def __init__(self,
    method _infinite_indices (line 155) | def _infinite_indices(self):
    method _indices_of_rank (line 166) | def _indices_of_rank(self):
    method __iter__ (line 171) | def __iter__(self):
    method __len__ (line 180) | def __len__(self):
    method set_epoch (line 184) | def set_epoch(self, epoch):

FILE: detection/mmdet/datasets/utils.py
  function replace_ImageToTensor (line 15) | def replace_ImageToTensor(pipelines):
  function get_loading_pipeline (line 75) | def get_loading_pipeline(pipeline):
  class NumClassCheckHook (line 118) | class NumClassCheckHook(Hook):
    method _check_head (line 120) | def _check_head(self, runner):
    method before_train_epoch (line 152) | def before_train_epoch(self, runner):
    method before_val_epoch (line 160) | def before_val_epoch(self, runner):

FILE: detection/mmdet/datasets/voc.py
  class VOCDataset (line 12) | class VOCDataset(XMLDataset):
    method __init__ (line 25) | def __init__(self, **kwargs):
    method evaluate (line 34) | def evaluate(self,

FILE: detection/mmdet/datasets/wider_face.py
  class WIDERFaceDataset (line 12) | class WIDERFaceDataset(XMLDataset):
    method __init__ (line 22) | def __init__(self, **kwargs):
    method load_annotations (line 25) | def load_annotations(self, ann_file):

FILE: detection/mmdet/datasets/xml_style.py
  class XMLDataset (line 14) | class XMLDataset(CustomDataset):
    method __init__ (line 25) | def __init__(self,
    method load_annotations (line 38) | def load_annotations(self, ann_file):
    method _filter_imgs (line 69) | def _filter_imgs(self, min_size=32):
    method get_ann_info (line 90) | def get_ann_info(self, idx):
    method get_cat_ids (line 156) | def get_cat_ids(self, idx):

FILE: detection/mmdet/models/backbones/csp_darknet.py
  class Focus (line 14) | class Focus(nn.Module):
    method __init__ (line 30) | def __init__(self,
    method forward (line 49) | def forward(self, x):
  class SPPBottleneck (line 67) | class SPPBottleneck(BaseModule):
    method __init__ (line 85) | def __init__(self,
    method forward (line 116) | def forward(self, x):
  class CSPDarknet (line 124) | class CSPDarknet(BaseModule):
    method __init__ (line 177) | def __init__(self,
    method _freeze_stages (line 261) | def _freeze_stages(self):
    method train (line 269) | def train(self, mode=True):
    method forward (line 277) | def forward(self, x):

FILE: detection/mmdet/models/backbones/darknet.py
  class ResBlock (line 14) | class ResBlock(BaseModule):
    method __init__ (line 33) | def __init__(self,
    method forward (line 50) | def forward(self, x):
  class Darknet (line 60) | class Darknet(BaseModule):
    method __init__ (line 101) | def __init__(self,
    method forward (line 153) | def forward(self, x):
    method _freeze_stages (line 163) | def _freeze_stages(self):
    method train (line 171) | def train(self, mode=True):
    method make_conv_res_block (line 180) | def make_conv_res_block(in_channels,

FILE: detection/mmdet/models/backbones/detectors_resnet.py
  class Bottleneck (line 16) | class Bottleneck(_Bottleneck):
    method __init__ (line 36) | def __init__(self,
    method rfp_forward (line 73) | def rfp_forward(self, x, rfp_feat):
  class ResLayer (line 120) | class ResLayer(Sequential):
    method __init__ (line 146) | def __init__(self,
  class DetectoRS_ResNet (line 212) | class DetectoRS_ResNet(ResNet):
    method __init__ (line 234) | def __init__(self,
    method init_weights (line 296) | def init_weights(self):
    method make_res_layer (line 325) | def make_res_layer(self, **kwargs):
    method forward (line 329) | def forward(self, x):
    method rfp_forward (line 336) | def rfp_forward(self, x, rfp_feats):

FILE: detection/mmdet/models/backbones/detectors_resnext.py
  class Bottleneck (line 11) | class Bottleneck(_Bottleneck):
    method __init__ (line 14) | def __init__(self,
  class DetectoRS_ResNeXt (line 99) | class DetectoRS_ResNeXt(DetectoRS_ResNet):
    method __init__ (line 113) | def __init__(self, groups=1, base_width=4, **kwargs):
    method make_res_layer (line 118) | def make_res_layer(self, **kwargs):

FILE: detection/mmdet/models/backbones/efficientnet.py
  class EdgeResidual (line 16) | class EdgeResidual(BaseModule):
    method __init__ (line 41) | def __init__(self,
    method forward (line 91) | def forward(self, x):
  function model_scaling (line 115) | def model_scaling(layer_setting, arch_setting):
  class EfficientNet (line 159) | class EfficientNet(BaseModule):
    method __init__ (line 254) | def __init__(self,
    method make_layer (line 327) | def make_layer(self):
    method forward (line 395) | def forward(self, x):
    method _freeze_stages (line 404) | def _freeze_stages(self):
    method train (line 411) | def train(self, mode=True):

FILE: detection/mmdet/models/backbones/hivit.py
  function window_partition (line 21) | def window_partition(x, window_size):
  function window_unpartition (line 45) | def window_unpartition(windows, window_size, pad_hw, hw):
  class LayerNorm2d (line 68) | class LayerNorm2d(nn.LayerNorm):
    method forward (line 69) | def forward(self, x):
  class HiViT (line 77) | class HiViT(models.HiViT):
    method __init__ (line 78) | def __init__(self,
    method init_weights (line 150) | def init_weights(self):
    method _freeze_stages (line 166) | def _freeze_stages(self):
    method interpolate_pos_encoding (line 179) | def interpolate_pos_encoding(self, x, h, w):
    method prepare_tokens (line 200) | def prepare_tokens(self, x, mask=None):
    method forward (line 225) | def forward(self, x):

FILE: detection/mmdet/models/backbones/hourglass.py
  class HourglassModule (line 12) | class HourglassModule(BaseModule):
    method __init__ (line 30) | def __init__(self,
    method forward (line 80) | def forward(self, x):
  class HourglassNet (line 97) | class HourglassNet(BaseModule):
    method __init__ (line 131) | def __init__(self,
    method init_weights (line 195) | def init_weights(self):
    method forward (line 203) | def forward(self, x):

FILE: detection/mmdet/models/backbones/hrnet.py
  class HRModule (line 13) | class HRModule(BaseModule):
    method __init__ (line 20) | def __init__(self,
    method _check_branches (line 49) | def _check_branches(self, num_branches, num_blocks, in_channels,
    method _make_one_branch (line 66) | def _make_one_branch(self,
    method _make_branches (line 112) | def _make_branches(self, num_branches, block, num_blocks, num_channels):
    method _make_fuse_layers (line 121) | def _make_fuse_layers(self):
    method forward (line 183) | def forward(self, x):
  class HRNet (line 204) | class HRNet(BaseModule):
    method __init__ (line 281) | def __init__(self,
    method norm1 (line 403) | def norm1(self):
    method norm2 (line 408) | def norm2(self):
    method _make_transition_layer (line 412) | def _make_transition_layer(self, num_channels_pre_layer,
    method _make_layer (line 458) | def _make_layer(self, block, inplanes, planes, blocks, stride=1):
    method _make_stage (line 505) | def _make_stage(self, layer_config, in_channels, multiscale_output=True):
    method forward (line 545) | def forward(self, x):
    method train (line 581) | def train(self, mode=True):

FILE: detection/mmdet/models/backbones/mobilenet_v2.py
  class MobileNetV2 (line 14) | class MobileNetV2(BaseModule):
    method __init__ (line 46) | def __init__(self,
    method make_layer (line 138) | def make_layer(self, out_channels, num_blocks, stride, expand_ratio):
    method _freeze_stages (line 167) | def _freeze_stages(self):
    method forward (line 177) | def forward(self, x):
    method train (line 188) | def train(self, mode=True):

FILE: detection/mmdet/models/backbones/pvt.py
  class MixFFN (line 23) | class MixFFN(BaseModule):
    method __init__ (line 47) | def __init__(self,
    method forward (line 93) | def forward(self, x, hw_shape, identity=None):
  class SpatialReductionAttention (line 102) | class SpatialReductionAttention(MultiheadAttention):
    method __init__ (line 129) | def __init__(self,
    method forward (line 169) | def forward(self, x, hw_shape, identity=None):
    method legacy_forward (line 200) | def legacy_forward(self, x, hw_shape, identity=None):
  class PVTEncoderLayer (line 219) | class PVTEncoderLayer(BaseModule):
    method __init__ (line 245) | def __init__(self,
    method forward (line 284) | def forward(self, x, hw_shape):
  class AbsolutePositionEmbedding (line 291) | class AbsolutePositionEmbedding(BaseModule):
    method __init__ (line 301) | def __init__(self, pos_shape, pos_dim, drop_rate=0., init_cfg=None):
    method init_weights (line 319) | def init_weights(self):
    method resize_pos_embed (line 322) | def resize_pos_embed(self, pos_embed, input_shape, mode='bilinear'):
    method forward (line 351) | def forward(self, x, hw_shape, mode='bilinear'):
  class PyramidVisionTransformer (line 357) | class PyramidVisionTransformer(BaseModule):
    method __init__ (line 410) | def __init__(self,
    method init_weights (line 523) | def init_weights(self):
    method forward (line 563) | def forward(self, x):
  class PyramidVisionTransformerV2 (line 580) | class PyramidVisionTransformerV2(PyramidVisionTransformer):
    method __init__ (line 584) | def __init__(self, **kwargs):

FILE: detection/mmdet/models/backbones/regnet.py
  class RegNet (line 14) | class RegNet(ResNet):
    method __init__ (line 90) | def __init__(self,
    method _make_stem_layer (line 238) | def _make_stem_layer(self, in_channels, base_channels):
    method generate_regnet (line 252) | def generate_regnet(self,
    method quantize_float (line 285) | def quantize_float(number, divisor):
    method adjust_width_group (line 297) | def adjust_width_group(self, widths, bottleneck_ratio, groups):
    method get_stages_from_blocks (line 322) | def get_stages_from_blocks(self, widths):
    method forward (line 344) | def forward(self, x):

FILE: detection/mmdet/models/backbones/res2net.py
  class Bottle2neck (line 15) | class Bottle2neck(_Bottleneck):
    method __init__ (line 18) | def __init__(self,
    method forward (line 106) | def forward(self, x):
  class Res2Layer (line 163) | class Res2Layer(Sequential):
    method __init__ (line 182) | def __init__(self,
  class Res2Net (line 243) | class Res2Net(ResNet):
    method __init__ (line 303) | def __init__(self,
    method make_res_layer (line 322) | def make_res_layer(self, **kwargs):

FILE: detection/mmdet/models/backbones/resnest.py
  class RSoftmax (line 17) | class RSoftmax(nn.Module):
    method __init__ (line 25) | def __init__(self, radix, groups):
    method forward (line 30) | def forward(self, x):
  class SplitAttentionConv2d (line 41) | class SplitAttentionConv2d(BaseModule):
    method __init__ (line 64) | def __init__(self,
    method norm0 (line 116) | def norm0(self):
    method norm1 (line 121) | def norm1(self):
    method forward (line 125) | def forward(self, x):
  class Bottleneck (line 154) | class Bottleneck(_Bottleneck):
    method __init__ (line 173) | def __init__(self,
    method forward (line 234) | def forward(self, x):
  class ResNeSt (line 278) | class ResNeSt(ResNetV1d):
    method __init__ (line 299) | def __init__(self,
    method make_res_layer (line 313) | def make_res_layer(self, **kwargs):

FILE: detection/mmdet/models/backbones/resnet.py
  class BasicBlock (line 14) | class BasicBlock(BaseModule):
    method __init__ (line 17) | def __init__(self,
    method norm1 (line 58) | def norm1(self):
    method norm2 (line 63) | def norm2(self):
    method forward (line 67) | def forward(self, x):
  class Bottleneck (line 97) | class Bottleneck(BaseModule):
    method __init__ (line 100) | def __init__(self,
    method make_block_plugins (line 219) | def make_block_plugins(self, in_channels, plugins):
    method forward_plugin (line 242) | def forward_plugin(self, x, plugin_names):
    method norm1 (line 249) | def norm1(self):
    method norm2 (line 254) | def norm2(self):
    method norm3 (line 259) | def norm3(self):
    method forward (line 263) | def forward(self, x):
  class ResNet (line 306) | class ResNet(BaseModule):
    method __init__ (line 369) | def __init__(self,
    method make_stage_plugins (line 494) | def make_stage_plugins(self, plugins, stage_idx):
    method make_res_layer (line 556) | def make_res_layer(self, **kwargs):
    method norm1 (line 561) | def norm1(self):
    method _make_stem_layer (line 565) | def _make_stem_layer(self, in_channels, stem_channels):
    method _freeze_stages (line 613) | def _freeze_stages(self):
    method forward (line 631) | def forward(self, x):
    method train (line 648) | def train(self, mode=True):
  class ResNetV1d (line 661) | class ResNetV1d(ResNet):
    method __init__ (line 670) | def __init__(self, **kwargs):

FILE: detection/mmdet/models/backbones/resnext.py
  class Bottleneck (line 12) | class Bottleneck(_Bottleneck):
    method __init__ (line 15) | def __init__(self,
    method _del_block_plugins (line 98) | def _del_block_plugins(self, plugin_names):
  class ResNeXt (line 110) | class ResNeXt(ResNet):
    method __init__ (line 143) | def __init__(self, groups=1, base_width=4, **kwargs):
    method make_res_layer (line 148) | def make_res_layer(self, **kwargs):

FILE: detection/mmdet/models/backbones/ssd_vgg.py
  class SSDVGG (line 13) | class SSDVGG(VGG, BaseModule):
    method __init__ (line 50) | def __init__(self,
    method init_weights (line 105) | def init_weights(self, pretrained=None):
    method forward (line 108) | def forward(self, x):
  class L2Norm (line 122) | class L2Norm(ssd_neck.L2Norm):
    method __init__ (line 124) | def __init__(self, **kwargs):

FILE: detection/mmdet/models/backbones/swin.py
  class WindowMSA (line 22) | class WindowMSA(BaseModule):
    method __init__ (line 41) | def __init__(self,
    method init_weights (line 78) | def init_weights(self):
    method forward (line 81) | def forward(self, x, mask=None):
    method double_step_seq (line 122) | def double_step_seq(step1, len1, step2, len2):
  class ShiftWindowMSA (line 128) | class ShiftWindowMSA(BaseModule):
    method __init__ (line 151) | def __init__(self,
    method forward (line 180) | def forward(self, query, hw_shape):
    method window_reverse (line 256) | def window_reverse(self, windows, H, W):
    method window_partition (line 272) | def window_partition(self, x):
  class SwinBlock (line 288) | class SwinBlock(BaseModule):
    method __init__ (line 313) | def __init__(self,
    method forward (line 358) | def forward(self, x, hw_shape):
  class SwinBlockSequence (line 381) | class SwinBlockSequence(BaseModule):
    method __init__ (line 410) | def __init__(self,
    method forward (line 455) | def forward(self, x, hw_shape):
  class SwinTransformer (line 467) | class SwinTransformer(BaseModule):
    method __init__ (line 524) | def __init__(self,
    method train (line 643) | def train(self, mode=True):
    method _freeze_stages (line 648) | def _freeze_stages(self):
    method init_weights (line 670) | def init_weights(self):
    method forward (line 745) | def forward(self, x):

FILE: detection/mmdet/models/backbones/trident_resnet.py
  class TridentConv (line 14) | class TridentConv(BaseModule):
    method __init__ (line 33) | def __init__(self,
    method extra_repr (line 61) | def extra_repr(self):
    method forward (line 73) | def forward(self, inputs):
  class TridentBottleneck (line 93) | class TridentBottleneck(Bottleneck):
    method __init__ (line 106) | def __init__(self, trident_dilations, test_branch_idx, concat_output,
    method forward (line 128) | def forward(self, x):
  function make_trident_res_layer (line 182) | def make_trident_res_layer(block,
  class TridentResNet (line 235) | class TridentResNet(ResNet):
    method __init__ (line 256) | def __init__(self, depth, num_branch, test_branch_idx, trident_dilations,

FILE: detection/mmdet/models/backbones/vit.py
  class PatchEmbed (line 19) | class PatchEmbed(nn.Module):
    method __init__ (line 22) | def __init__(self, img_size=[224, 224], patch_size=16, in_chans=3, emb...
    method forward (line 34) | def forward(self, x, mask=None):
  class VisionTransformer (line 40) | class VisionTransformer(VisionTransformer):
    method __init__ (line 41) | def __init__(self,
    method train (line 96) | def train(self, mode=True):
    method _freeze_stages (line 101) | def _freeze_stages(self):
    method init_weights (line 122) | def init_weights(self):
    method forward_encoder (line 137) | def forward_encoder(self, x):
    method forward (line 142) | def forward(self, x):

FILE: detection/mmdet/models/builder.py
  function build_backbone (line 18) | def build_backbone(cfg):
  function build_neck (line 23) | def build_neck(cfg):
  function build_roi_extractor (line 28) | def build_roi_extractor(cfg):
  function build_shared_head (line 33) | def build_shared_head(cfg):
  function build_head (line 38) | def build_head(cfg):
  function build_loss (line 43) | def build_loss(cfg):
  function build_detector (line 48) | def build_detector(cfg, train_cfg=None, test_cfg=None):

FILE: detection/mmdet/models/dense_heads/anchor_free_head.py
  class AnchorFreeHead (line 18) | class AnchorFreeHead(BaseDenseHead, BBoxTestMixin):
    method __init__ (line 46) | def __init__(self,
    method _init_layers (line 107) | def _init_layers(self):
    method _init_cls_convs (line 113) | def _init_cls_convs(self):
    method _init_reg_convs (line 133) | def _init_reg_convs(self):
    method _init_predictor (line 153) | def _init_predictor(self):
    method _load_from_state_dict (line 159) | def _load_from_state_dict(self, state_dict, prefix, local_metadata, st...
    method forward (line 197) | def forward(self, feats):
    method forward_single (line 215) | def forward_single(self, x):
    method loss (line 240) | def loss(self,
    method get_targets (line 268) | def get_targets(self, points, gt_bboxes_list, gt_labels_list):
    method _get_points_single (line 282) | def _get_points_single(self,
    method get_points (line 310) | def get_points(self, featmap_sizes, dtype, device, flatten=False):
    method aug_test (line 334) | def aug_test(self, feats, img_metas, rescale=False):

FILE: detection/mmdet/models/dense_heads/anchor_head.py
  class AnchorHead (line 17) | class AnchorHead(BaseDenseHead, BBoxTestMixin):
    method __init__ (line 39) | def __init__(self,
    method num_anchors (line 115) | def num_anchors(self):
    method anchor_generator (line 122) | def anchor_generator(self):
    method _init_layers (line 127) | def _init_layers(self):
    method forward_single (line 135) | def forward_single(self, x):
    method forward (line 152) | def forward(self, feats):
    method get_anchors (line 171) | def get_anchors(self, featmap_sizes, img_metas, device='cuda'):
    method _get_targets_single (line 201) | def _get_targets_single(self,
    method get_targets (line 299) | def get_targets(self,
    method loss_single (line 402) | def loss_single(self, cls_score, bbox_pred, anchors, labels, label_wei...
    method loss (line 453) | def loss(self,
    method aug_test (line 522) | def aug_test(self, feats, img_metas, rescale=False):

FILE: detection/mmdet/models/dense_heads/atss_head.py
  class ATSSHead (line 14) | class ATSSHead(AnchorHead):
    method __init__ (line 24) | def __init__(self,
    method _init_layers (line 65) | def _init_layers(self):
    method forward (line 109) | def forward(self, feats):
    method forward_single (line 127) | def forward_single(self, x, scale):
    method loss_single (line 156) | def loss_single(self, anchors, cls_score, bbox_pred, centerness, labels,
    method loss (line 230) | def loss(self,
    method centerness_target (line 305) | def centerness_target(self, anchors, gts):
    method get_targets (line 322) | def get_targets(self,
    method _get_target_single (line 386) | def _get_target_single(self,
    method get_num_level_anchors_inside (line 496) | def get_num_level_anchors_inside(self, num_level_anchors, inside_flags):

FILE: detection/mmdet/models/dense_heads/autoassign_head.py
  class CenterPrior (line 21) | class CenterPrior(nn.Module):
    method __init__ (line 37) | def __init__(self,
    method forward (line 49) | def forward(self, anchor_points_list, gt_bboxes, labels,
  class AutoAssignHead (line 128) | class AutoAssignHead(FCOSHead):
    method __init__ (line 148) | def __init__(self,
    method init_weights (line 167) | def init_weights(self):
    method forward_single (line 179) | def forward_single(self, x, scale, stride):
    method get_pos_loss_single (line 207) | def get_pos_loss_single(self, cls_score, objectness, reg_loss, gt_labels,
    method get_neg_loss_single (line 251) | def get_neg_loss_single(self, cls_score, objectness, gt_labels, ious,
    method loss (line 307) | def loss(self,
    method get_targets (line 439) | def get_targets(self, points, gt_bboxes_list):
    method _get_target_single (line 468) | def _get_target_single(self, gt_bboxes, points):
    method _get_points_single (line 506) | def _get_points_single(self,

FILE: detection/mmdet/models/dense_heads/base_dense_head.py
  class BaseDenseHead (line 12) | class BaseDenseHead(BaseModule, metaclass=ABCMeta):
    method __init__ (line 15) | def __init__(self, init_cfg=None):
    method init_weights (line 18) | def init_weights(self):
    method loss (line 27) | def loss(self, **kwargs):
    method get_bboxes (line 32) | def get_bboxes(self,
    method _get_bboxes_single (line 109) | def _get_bboxes_single(self,
    method _bbox_post_process (line 226) | def _bbox_post_process(self,
    method forward_train (line 303) | def forward_train(self,
    method simple_test (line 343) | def simple_test(self, feats, img_metas, rescale=False):
    method onnx_export (line 363) | def onnx_export(self,

FILE: detection/mmdet/models/dense_heads/base_mask_head.py
  class BaseMaskHead (line 7) | class BaseMaskHead(BaseModule, metaclass=ABCMeta):
    method __init__ (line 10) | def __init__(self, init_cfg):
    method loss (line 14) | def loss(self, **kwargs):
    method get_results (line 18) | def get_results(self, **kwargs):
    method forward_train (line 22) | def forward_train(self,
    method simple_test (line 73) | def simple_test(self,
    method onnx_export (line 114) | def onnx_export(self, img, img_metas):

FILE: detection/mmdet/models/dense_heads/cascade_rpn_head.py
  class AdaptiveConv (line 20) | class AdaptiveConv(BaseModule):
    method __init__ (line 42) | def __init__(self,
    method forward (line 79) | def forward(self, x, offset):
  class StageCascadeRPNHead (line 96) | class StageCascadeRPNHead(RPNHead):
    method __init__ (line 112) | def __init__(self,
    method _init_layers (line 153) | def _init_layers(self):
    method forward_single (line 164) | def forward_single(self, x, offset):
    method forward (line 174) | def forward(self, feats, offset_list=None):
    method _region_targets_single (line 180) | def _region_targets_single(self,
    method region_targets (line 236) | def region_targets(self,
    method get_targets (line 286) | def get_targets(self,
    method anchor_offset (line 328) | def anchor_offset(self, anchor_list, anchor_strides, featmap_sizes):
    method loss_single (line 406) | def loss_single(self, cls_score, bbox_pred, anchors, labels, label_wei...
    method loss (line 436) | def loss(self,
    method get_bboxes (line 505) | def get_bboxes(self,
    method _get_bboxes_single (line 547) | def _get_bboxes_single(self,
    method refine_bboxes (line 672) | def refine_bboxes(self, anchor_list, bbox_preds, img_metas):
  class CascadeRPNHead (line 690) | class CascadeRPNHead(BaseDenseHead):
    method __init__ (line 705) | def __init__(self, num_stages, stages, train_cfg, test_cfg, init_cfg=N...
    method loss (line 720) | def loss(self):
    method get_bboxes (line 724) | def get_bboxes(self):
    method forward_train (line 728) | def forward_train(self,
    method simple_test_rpn (line 773) | def simple_test_rpn(self, x, img_metas):
    method aug_test_rpn (line 798) | def aug_test_rpn(self, x, img_metas):

FILE: detection/mmdet/models/dense_heads/centernet_head.py
  class CenterNetHead (line 18) | class CenterNetHead(BaseDenseHead, BBoxTestMixin):
    method __init__ (line 38) | def __init__(self,
    method _build_head (line 64) | def _build_head(self, in_channel, feat_channel, out_channel):
    method init_weights (line 72) | def init_weights(self):
    method forward (line 81) | def forward(self, feats):
    method forward_single (line 98) | def forward_single(self, feat):
    method loss (line 116) | def loss(self,
    method get_targets (line 181) | def get_targets(self, gt_bboxes, gt_labels, feat_shape, img_shape):
    method get_bboxes (line 252) | def get_bboxes(self,
    method _get_bboxes_single (line 297) | def _get_bboxes_single(self,
    method decode_heatmap (line 351) | def decode_heatmap(self,
    method _bboxes_nms (line 402) | def _bboxes_nms(self, bboxes, labels, cfg):

FILE: detection/mmdet/models/dense_heads/centripetal_head.py
  class CentripetalHead (line 13) | class CentripetalHead(CornerHead):
    method __init__ (line 48) | def __init__(self,
    method _init_centripetal_layers (line 73) | def _init_centripetal_layers(self):
    method _init_layers (line 133) | def _init_layers(self):
    method init_weights (line 141) | def init_weights(self):
    method forward_single (line 157) | def forward_single(self, x, lvl_ind):
    method loss (line 208) | def loss(self,
    method loss_single (line 284) | def loss_single(self, tl_hmp, br_hmp, tl_off, br_off, tl_guiding_shift,
    method get_bboxes (line 367) | def get_bboxes(self,

FILE: detection/mmdet/models/dense_heads/corner_head.py
  class BiCornerPool (line 21) | class BiCornerPool(BaseModule):
    method __init__ (line 34) | def __init__(self,
    method forward (line 64) | def forward(self, x):
  class CornerHead (line 85) | class CornerHead(BaseDenseHead, BBoxTestMixin):
    method __init__ (line 118) | def __init__(self,
    method _make_layers (line 158) | def _make_layers(self, out_channels, in_channels=256, feat_channels=256):
    method _init_corner_kpt_layers (line 165) | def _init_corner_kpt_layers(self):
    method _init_corner_emb_layers (line 203) | def _init_corner_emb_layers(self):
    method _init_layers (line 221) | def _init_layers(self):
    method init_weights (line 230) | def init_weights(self):
    method forward (line 248) | def forward(self, feats):
    method forward_single (line 280) | def forward_single(self, x, lvl_ind, return_pool=False):
    method get_targets (line 325) | def get_targets(self,
    method loss (line 514) | def loss(self,
    method loss_single (line 576) | def loss_single(self, tl_hmp, br_hmp, tl_emb, br_emb, tl_off, br_off,
    method get_bboxes (line 655) | def get_bboxes(self,
    method _get_bboxes_single (line 704) | def _get_bboxes_single(self,
    method _bboxes_nms (line 777) | def _bboxes_nms(self, bboxes, labels, cfg):
    method decode_heatmap (line 795) | def decode_heatmap(self,
    method onnx_export (line 1031) | def onnx_export(self,

FILE: detection/mmdet/models/dense_heads/deformable_detr_head.py
  class DeformableDETRHead (line 17) | class DeformableDETRHead(DETRHead):
    method __init__ (line 36) | def __init__(self,
    method _init_layers (line 50) | def _init_layers(self):
    method init_weights (line 83) | def init_weights(self):
    method forward (line 97) | def forward(self, mlvl_feats, img_metas):
    method loss (line 184) | def loss(self,
    method get_bboxes (line 269) | def get_bboxes(self,

FILE: detection/mmdet/models/dense_heads/dense_test_mixins.py
  class BBoxTestMixin (line 14) | class BBoxTestMixin(object):
    method simple_test_bboxes (line 17) | def simple_test_bboxes(self, feats, img_metas, rescale=False):
    method aug_test_bboxes (line 41) | def aug_test_bboxes(self, feats, img_metas, rescale=False):
    method simple_test_rpn (line 116) | def simple_test_rpn(self, x, img_metas):
    method aug_test_rpn (line 133) | def aug_test_rpn(self, feats, img_metas):
    method async_simple_test_rpn (line 169) | async def async_simple_test_rpn(self, x, img_metas):
    method merge_aug_bboxes (line 179) | def merge_aug_bboxes(self, aug_bboxes, aug_scores, img_metas):

FILE: detection/mmdet/models/dense_heads/detr_head.py
  class DETRHead (line 18) | class DETRHead(AnchorFreeHead):
    method __init__ (line 52) | def __init__(self,
    method _init_layers (line 152) | def _init_layers(self):
    method init_weights (line 167) | def init_weights(self):
    method _load_from_state_dict (line 172) | def _load_from_state_dict(self, state_dict, prefix, local_metadata, st...
    method forward (line 202) | def forward(self, feats, img_metas):
    method forward_single (line 226) | def forward_single(self, x, img_metas):
    method loss (line 268) | def loss(self,
    method loss_single (line 334) | def loss_single(self,
    method get_targets (line 419) | def get_targets(self,
    method _get_target_single (line 476) | def _get_target_single(self,
    method forward_train (line 547) | def forward_train(self,
    method get_bboxes (line 583) | def get_bboxes(self,
    method _get_bboxes_single (line 628) | def _get_bboxes_single(self,
    method simple_test_bboxes (line 685) | def simple_test_bboxes(self, feats, img_metas, rescale=False):
    method forward_onnx (line 707) | def forward_onnx(self, feats, img_metas):
    method forward_single_onnx (line 735) | def forward_single_onnx(self, x, img_metas):
    method onnx_export (line 775) | def onnx_export(self, all_cls_scores_list, all_bbox_preds_list, img_me...

FILE: detection/mmdet/models/dense_heads/embedding_rpn_head.py
  class EmbeddingRPNHead (line 11) | class EmbeddingRPNHead(BaseModule):
    method __init__ (line 26) | def __init__(self,
    method _init_layers (line 38) | def _init_layers(self):
    method init_weights (line 44) | def init_weights(self):
    method _decode_init_proposals (line 54) | def _decode_init_proposals(self, imgs, img_metas):
    method forward_dummy (line 95) | def forward_dummy(self, img, img_metas):
    method forward_train (line 102) | def forward_train(self, img, img_metas):
    method simple_test_rpn (line 106) | def simple_test_rpn(self, img, img_metas):
    method simple_test (line 110) | def simple_test(self, img, img_metas):
    method aug_test_rpn (line 114) | def aug_test_rpn(self, feats, img_metas):

FILE: detection/mmdet/models/dense_heads/fcos_head.py
  class FCOSHead (line 17) | class FCOSHead(AnchorFreeHead):
    method __init__ (line 60) | def __init__(self,
    method _init_layers (line 106) | def _init_layers(self):
    method forward (line 112) | def forward(self, feats):
    method forward_single (line 133) | def forward_single(self, x, scale, stride):
    method loss (line 168) | def loss(self,
    method get_targets (line 270) | def get_targets(self, points, gt_bboxes_list, gt_labels_list):
    method _get_target_single (line 331) | def _get_target_single(self, gt_bboxes, gt_labels, points, regress_ran...
    method centerness_target (line 415) | def centerness_target(self, pos_bbox_targets):
    method _get_points_single (line 436) | def _get_points_single(self,

FILE: detection/mmdet/models/dense_heads/fovea_head.py
  class FeatureAlign (line 18) | class FeatureAlign(BaseModule):
    method __init__ (line 20) | def __init__(self,
    method forward (line 43) | def forward(self, x, shape):
  class FoveaHead (line 50) | class FoveaHead(AnchorFreeHead):
    method __init__ (line 55) | def __init__(self,
    method _init_layers (line 81) | def _init_layers(self):
    method forward_single (line 121) | def forward_single(self, x):
    method loss (line 134) | def loss(self,
    method get_targets (line 186) | def get_targets(self, gt_bbox_list, gt_label_list, featmap_sizes, poin...
    method _get_target_single (line 208) | def _get_target_single(self,
    method _get_bboxes_single (line 272) | def _get_bboxes_single(self,
    method _bbox_decode (line 358) | def _bbox_decode(self, priors, bbox_pred, base_len, max_shape):
    method _get_points_single (line 374) | def _get_points_single(self, *args, **kwargs):

FILE: detection/mmdet/models/dense_heads/free_anchor_retina_head.py
  class FreeAnchorRetinaHead (line 13) | class FreeAnchorRetinaHead(RetinaHead):
    method __init__ (line 34) | def __init__(self,
    method loss (line 54) | def loss(self,
    method positive_bag_loss (line 221) | def positive_bag_loss(self, matched_cls_prob, matched_box_prob):
    method negative_bag_loss (line 248) | def negative_bag_loss(self, cls_prob, box_prob):

FILE: detection/mmdet/models/dense_heads/fsaf_head.py
  class FSAFHead (line 15) | class FSAFHead(RetinaHead):
    method __init__ (line 43) | def __init__(self, *args, score_threshold=None, init_cfg=None, **kwargs):
    method forward_single (line 63) | def forward_single(self, x):
    method _get_targets_single (line 80) | def _get_targets_single(self,
    method loss (line 188) | def loss(self,
    method calculate_pos_recall (line 317) | def calculate_pos_recall(self, cls_scores, labels_list, pos_inds):
    method collect_loss_level_single (line 351) | def collect_loss_level_single(self, cls_loss, reg_loss, assigned_gt_inds,
    method reweight_loss_single (line 382) | def reweight_loss_single(self, cls_loss, reg_loss, assigned_gt_inds,

FILE: detection/mmdet/models/dense_heads/ga_retina_head.py
  class GARetinaHead (line 11) | class GARetinaHead(GuidedAnchorHead):
    method __init__ (line 14) | def __init__(self,
    method _init_layers (line 45) | def _init_layers(self):
    method forward_single (line 92) | def forward_single(self, x):

FILE: detection/mmdet/models/dense_heads/ga_rpn_head.py
  class GARPNHead (line 16) | class GARPNHead(GuidedAnchorHead):
    method __init__ (line 19) | def __init__(self,
    method _init_layers (line 34) | def _init_layers(self):
    method forward_single (line 40) | def forward_single(self, x):
    method loss (line 49) | def loss(self,
    method _get_bboxes_single (line 72) | def _get_bboxes_single(self,

FILE: detection/mmdet/models/dense_heads/gfl_head.py
  class Integral (line 16) | class Integral(nn.Module):
    method __init__ (line 29) | def __init__(self, reg_max=16):
    method forward (line 35) | def forward(self, x):
  class GFLHead (line 53) | class GFLHead(AnchorHead):
    method __init__ (line 88) | def __init__(self,
    method _init_layers (line 128) | def _init_layers(self):
    method forward (line 161) | def forward(self, feats):
    method forward_single (line 179) | def forward_single(self, x, scale):
    method anchor_center (line 205) | def anchor_center(self, anchors):
    method loss_single (line 218) | def loss_single(self, anchors, cls_score, bbox_pred, labels, label_wei...
    method loss (line 307) | def loss(self,
    method _get_bboxes_single (line 380) | def _get_bboxes_single(self,
    method get_targets (line 473) | def get_targets(self,
    method _get_target_single (line 537) | def _get_target_single(self,
    method get_num_level_anchors_inside (line 643) | def get_num_level_anchors_inside(self, num_level_anchors, inside_flags):

FILE: detection/mmdet/models/dense_heads/guided_anchor_head.py
  class FeatureAdaption (line 16) | class FeatureAdaption(BaseModule):
    method __init__ (line 31) | def __init__(self,
    method forward (line 54) | def forward(self, x, shape):
  class GuidedAnchorHead (line 61) | class GuidedAnchorHead(AnchorHead):
    method __init__ (line 97) | def __init__(
    method num_anchors (line 212) | def num_anchors(self):
    method _init_layers (line 217) | def _init_layers(self):
    method forward_single (line 233) | def forward_single(self, x):
    method forward (line 246) | def forward(self, feats):
    method get_sampled_approxs (line 249) | def get_sampled_approxs(self, featmap_sizes, img_metas, device='cuda'):
    method get_anchors (line 299) | def get_anchors(self,
    method _get_guided_anchors_single (line 350) | def _get_guided_anchors_single(self,
    method ga_loc_targets (line 384) | def ga_loc_targets(self, gt_bboxes_list, featmap_sizes):
    method _ga_shape_target_single (line 486) | def _ga_shape_target_single(self,
    method ga_shape_targets (line 549) | def ga_shape_targets(self,
    method loss_shape_single (line 615) | def loss_shape_single(self, shape_pred, bbox_anchors, bbox_gts,
    method loss_loc_single (line 639) | def loss_loc_single(self, loc_pred, loc_target, loc_weight,
    method loss (line 650) | def loss(self,
    method get_bboxes (line 756) | def get_bboxes(self,
    method _get_bboxes_single (line 800) | def _get_bboxes_single(self,

FILE: detection/mmdet/models/dense_heads/lad_head.py
  class LADHead (line 11) | class LADHead(PAAHead):
    method get_label_assignment (line 16) | def get_label_assignment(self,
    method forward_train (line 121) | def forward_train(self,
    method loss (line 160) | def loss(self,

FILE: detection/mmdet/models/dense_heads/ld_head.py
  class LDHead (line 11) | class LDHead(GFLHead):
    method __init__ (line 26) | def __init__(self,
    method loss_single (line 38) | def loss_single(self, anchors, cls_score, bbox_pred, labels, label_wei...
    method forward_train (line 142) | def forward_train(self,
    method loss (line 185) | def loss(self,

FILE: detection/mmdet/models/dense_heads/mask2former_head.py
  class Mask2FormerHead (line 21) | class Mask2FormerHead(MaskFormerHead):
    method __init__ (line 58) | def __init__(self,
    method init_weights (line 137) | def init_weights(self):
    method _get_target_single (line 148) | def _get_target_single(self, cls_score, mask_pred, gt_labels, gt_masks,
    method loss_single (line 218) | def loss_single(self, cls_scores, mask_preds, gt_labels_list,
    method forward_head (line 309) | def forward_head(self, decoder_out, mask_feature, attn_mask_target_size):
    method forward (line 351) | def forward(self, feats, img_metas):

FILE: detection/mmdet/models/dense_heads/maskformer_head.py
  class MaskFormerHead (line 17) | class MaskFormerHead(AnchorFreeHead):
    method __init__ (line 53) | def __init__(self,
    method init_weights (line 127) | def init_weights(self):
    method preprocess_gt (line 137) | def preprocess_gt(self, gt_labels_list, gt_masks_list, gt_semantic_segs):
    method get_targets (line 171) | def get_targets(self, cls_scores_list, mask_preds_list, gt_labels_list,
    method _get_target_single (line 215) | def _get_target_single(self, cls_score, mask_pred, gt_labels, gt_masks,
    method loss (line 276) | def loss(self, all_cls_scores, all_mask_preds, gt_labels_list,
    method loss_single (line 320) | def loss_single(self, cls_scores, mask_preds, gt_labels_list,
    method forward (line 412) | def forward(self, feats, img_metas):
    method forward_train (line 477) | def forward_train(self,
    method simple_test (line 524) | def simple_test(self, feats, img_metas, **kwargs):

FILE: detection/mmdet/models/dense_heads/nasfcos_head.py
  class NASFCOSHead (line 12) | class NASFCOSHead(FCOSHead):
    method __init__ (line 20) | def __init__(self, *args, init_cfg=None, **kwargs):
    method _init_layers (line 39) | def _init_layers(self):

FILE: detection/mmdet/models/dense_heads/paa_head.py
  function levels_to_images (line 18) | def levels_to_images(mlvl_tensor):
  class PAAHead (line 46) | class PAAHea
Copy disabled (too large) Download .json
Condensed preview — 2432 files, each showing path, character count, and a content snippet. Download the .json file for the full structured content (11,401K chars).
[
  {
    "path": "LICENSE",
    "chars": 17682,
    "preview": "## creative commons\n\n# Attribution-NonCommercial 4.0 International\n\nCreative Commons Corporation (“Creative Commons”) is"
  },
  {
    "path": "README.md",
    "chars": 17051,
    "preview": "\n<h1 align=\"center\"> SARATR-X: Towards Building A Foundation Model for SAR Target Recognition </h1>\n\n<h5 align=\"center\">"
  },
  {
    "path": "classification/.gitignore",
    "chars": 1826,
    "preview": "# Byte-compiled / optimized / DLL files\n__pycache__/\n*.py[cod]\n*$py.class\n\n# C extensions\n*.so\n\n# Distribution / packagi"
  },
  {
    "path": "classification/.idea/.gitignore",
    "chars": 176,
    "preview": "# Default ignored files\n/shelf/\n/workspace.xml\n# Editor-based HTTP Client requests\n/httpRequests/\n# Datasource local sto"
  },
  {
    "path": "classification/.idea/CoOp.iml",
    "chars": 327,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<module type=\"PYTHON_MODULE\" version=\"4\">\n  <component name=\"NewModuleRootManager"
  },
  {
    "path": "classification/.idea/deployment.xml",
    "chars": 410,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<project version=\"4\">\n  <component name=\"PublishConfigData\" remoteFilesAllowedToD"
  },
  {
    "path": "classification/.idea/inspectionProfiles/Project_Default.xml",
    "chars": 506,
    "preview": "<component name=\"InspectionProjectProfileManager\">\n  <profile version=\"1.0\">\n    <option name=\"myName\" value=\"Project De"
  },
  {
    "path": "classification/.idea/inspectionProfiles/profiles_settings.xml",
    "chars": 174,
    "preview": "<component name=\"InspectionProjectProfileManager\">\n  <settings>\n    <option name=\"USE_PROJECT_PROFILE\" value=\"false\" />\n"
  },
  {
    "path": "classification/.idea/misc.xml",
    "chars": 195,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<project version=\"4\">\n  <component name=\"ProjectRootManager\" version=\"2\" project-"
  },
  {
    "path": "classification/.idea/modules.xml",
    "chars": 260,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<project version=\"4\">\n  <component name=\"ProjectModuleManager\">\n    <modules>\n   "
  },
  {
    "path": "classification/.idea/vcs.xml",
    "chars": 180,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<project version=\"4\">\n  <component name=\"VcsDirectoryMappings\">\n    <mapping dire"
  },
  {
    "path": "classification/COCOOP.md",
    "chars": 3302,
    "preview": "## How to Run\n\nThe running scripts are provided in `scripts/cocoop/`, which allow you to reproduce the results on the CV"
  },
  {
    "path": "classification/COOP.md",
    "chars": 5753,
    "preview": "## How to Run\n\nWe provide the running scripts in `scripts/coop`, which allow you to reproduce the results on the IJCV'22"
  },
  {
    "path": "classification/DATASETS.md",
    "chars": 9126,
    "preview": "# How to install datasets\n\nWe suggest putting all datasets under the same folder (say `$DATA`) to ease management and fo"
  },
  {
    "path": "classification/MIM_linear.sh",
    "chars": 2401,
    "preview": "#bash scripts/MIM_linear/main.sh MSTAR_SOC vit_b16 5\n#bash scripts/MIM_linear/main.sh MSTAR_SOC vit_b16 10\n#bash scripts"
  },
  {
    "path": "classification/clip/__init__.py",
    "chars": 20,
    "preview": "from .clip import *\n"
  },
  {
    "path": "classification/clip/clip.py",
    "chars": 8260,
    "preview": "import hashlib\nimport os\nimport urllib\nimport warnings\nfrom typing import Union, List\n\nimport torch\nfrom PIL import Imag"
  },
  {
    "path": "classification/clip/model.py",
    "chars": 17242,
    "preview": "from collections import OrderedDict\nfrom typing import Tuple, Union\n\nimport numpy as np\nimport torch\nimport torch.nn.fun"
  },
  {
    "path": "classification/clip/simple_tokenizer.py",
    "chars": 4628,
    "preview": "import gzip\nimport html\nimport os\nfrom functools import lru_cache\n\nimport ftfy\nimport regex as re\n\n\n@lru_cache()\ndef def"
  },
  {
    "path": "classification/configs/datasets/MSTAR_EOC1.yaml",
    "chars": 30,
    "preview": "DATASET:\n  NAME: \"MSTAR_EOC1\"\n"
  },
  {
    "path": "classification/configs/datasets/MSTAR_EOC2C.yaml",
    "chars": 31,
    "preview": "DATASET:\n  NAME: \"MSTAR_EOC2C\"\n"
  },
  {
    "path": "classification/configs/datasets/MSTAR_EOC2V.yaml",
    "chars": 31,
    "preview": "DATASET:\n  NAME: \"MSTAR_EOC2V\"\n"
  },
  {
    "path": "classification/configs/datasets/MSTAR_SOC.yaml",
    "chars": 29,
    "preview": "DATASET:\n  NAME: \"MSTAR_SOC\"\n"
  },
  {
    "path": "classification/configs/datasets/MyDataset.yaml",
    "chars": 29,
    "preview": "DATASET:\n  NAME: \"MyDataset\"\n"
  },
  {
    "path": "classification/configs/datasets/New_FUSAR.yaml",
    "chars": 29,
    "preview": "DATASET:\n  NAME: \"New_FUSAR\"\n"
  },
  {
    "path": "classification/configs/datasets/SAR_ACD.yaml",
    "chars": 27,
    "preview": "DATASET:\n  NAME: \"SAR_ACD\"\n"
  },
  {
    "path": "classification/configs/datasets/caltech101.yaml",
    "chars": 30,
    "preview": "DATASET:\n  NAME: \"Caltech101\"\n"
  },
  {
    "path": "classification/configs/datasets/dtd.yaml",
    "chars": 39,
    "preview": "DATASET:\n  NAME: \"DescribableTextures\"\n"
  },
  {
    "path": "classification/configs/datasets/eurosat.yaml",
    "chars": 27,
    "preview": "DATASET:\n  NAME: \"EuroSAT\"\n"
  },
  {
    "path": "classification/configs/datasets/fgvc_aircraft.yaml",
    "chars": 32,
    "preview": "DATASET:\n  NAME: \"FGVCAircraft\"\n"
  },
  {
    "path": "classification/configs/datasets/food101.yaml",
    "chars": 27,
    "preview": "DATASET:\n  NAME: \"Food101\"\n"
  },
  {
    "path": "classification/configs/datasets/imagenet.yaml",
    "chars": 28,
    "preview": "DATASET:\n  NAME: \"ImageNet\"\n"
  },
  {
    "path": "classification/configs/datasets/imagenet_a.yaml",
    "chars": 29,
    "preview": "DATASET:\n  NAME: \"ImageNetA\"\n"
  },
  {
    "path": "classification/configs/datasets/imagenet_r.yaml",
    "chars": 29,
    "preview": "DATASET:\n  NAME: \"ImageNetR\"\n"
  },
  {
    "path": "classification/configs/datasets/imagenet_sketch.yaml",
    "chars": 34,
    "preview": "DATASET:\n  NAME: \"ImageNetSketch\"\n"
  },
  {
    "path": "classification/configs/datasets/imagenetv2.yaml",
    "chars": 30,
    "preview": "DATASET:\n  NAME: \"ImageNetV2\"\n"
  },
  {
    "path": "classification/configs/datasets/oxford_flowers.yaml",
    "chars": 32,
    "preview": "DATASET:\n  NAME: \"OxfordFlowers\""
  },
  {
    "path": "classification/configs/datasets/oxford_pets.yaml",
    "chars": 29,
    "preview": "DATASET:\n  NAME: \"OxfordPets\""
  },
  {
    "path": "classification/configs/datasets/stanford_cars.yaml",
    "chars": 32,
    "preview": "DATASET:\n  NAME: \"StanfordCars\"\n"
  },
  {
    "path": "classification/configs/datasets/sun397.yaml",
    "chars": 26,
    "preview": "DATASET:\n  NAME: \"SUN397\"\n"
  },
  {
    "path": "classification/configs/datasets/ucf101.yaml",
    "chars": 26,
    "preview": "DATASET:\n  NAME: \"UCF101\"\n"
  },
  {
    "path": "classification/configs/trainers/CNN/vit_b16.yaml",
    "chars": 1010,
    "preview": "#DATALOADER:\n#  TRAIN_X:\n#    BATCH_SIZE: 32\n#  TEST:\n#    BATCH_SIZE: 128\n#  NUM_WORKERS: 8\n#\n#INPUT:\n#  SIZE: (224, 22"
  },
  {
    "path": "classification/configs/trainers/CoCoOp/vit_b16_c16_ep10_batch1.yaml",
    "chars": 581,
    "preview": "DATALOADER:\n  TRAIN_X:\n    BATCH_SIZE: 1\n  TEST:\n    BATCH_SIZE: 100\n  NUM_WORKERS: 8\n\nINPUT:\n  SIZE: (224, 224)\n  INTER"
  },
  {
    "path": "classification/configs/trainers/CoCoOp/vit_b16_c4_ep10_batch1.yaml",
    "chars": 580,
    "preview": "DATALOADER:\n  TRAIN_X:\n    BATCH_SIZE: 1\n  TEST:\n    BATCH_SIZE: 100\n  NUM_WORKERS: 8\n\nINPUT:\n  SIZE: (224, 224)\n  INTER"
  },
  {
    "path": "classification/configs/trainers/CoCoOp/vit_b16_c4_ep10_batch1_ctxv1.yaml",
    "chars": 592,
    "preview": "DATALOADER:\n  TRAIN_X:\n    BATCH_SIZE: 1\n  TEST:\n    BATCH_SIZE: 100\n  NUM_WORKERS: 8\n\nINPUT:\n  SIZE: (224, 224)\n  INTER"
  },
  {
    "path": "classification/configs/trainers/CoCoOp/vit_b16_c8_ep10_batch1.yaml",
    "chars": 580,
    "preview": "DATALOADER:\n  TRAIN_X:\n    BATCH_SIZE: 1\n  TEST:\n    BATCH_SIZE: 100\n  NUM_WORKERS: 8\n\nINPUT:\n  SIZE: (224, 224)\n  INTER"
  },
  {
    "path": "classification/configs/trainers/CoOp/rn101.yaml",
    "chars": 511,
    "preview": "DATALOADER:\n  TRAIN_X:\n    BATCH_SIZE: 32\n  TEST:\n    BATCH_SIZE: 100\n  NUM_WORKERS: 8\n\nINPUT:\n  SIZE: (224, 224)\n  INTE"
  },
  {
    "path": "classification/configs/trainers/CoOp/rn101_ep50.yaml",
    "chars": 510,
    "preview": "DATALOADER:\n  TRAIN_X:\n    BATCH_SIZE: 32\n  TEST:\n    BATCH_SIZE: 100\n  NUM_WORKERS: 8\n\nINPUT:\n  SIZE: (224, 224)\n  INTE"
  },
  {
    "path": "classification/configs/trainers/CoOp/rn50.yaml",
    "chars": 469,
    "preview": "DATALOADER:\n  TRAIN_X:\n    BATCH_SIZE: 32\n  TEST:\n    BATCH_SIZE: 100\n  NUM_WORKERS: 8\n\nINPUT:\n  SIZE: (224, 224)\n  INTE"
  },
  {
    "path": "classification/configs/trainers/CoOp/rn50_ctxv1.yaml",
    "chars": 558,
    "preview": "DATALOADER:\n  TRAIN_X:\n    BATCH_SIZE: 32\n  TEST:\n    BATCH_SIZE: 100\n  NUM_WORKERS: 8\n\nINPUT:\n  SIZE: (224, 224)\n  INTE"
  },
  {
    "path": "classification/configs/trainers/CoOp/rn50_ep100.yaml",
    "chars": 511,
    "preview": "DATALOADER:\n  TRAIN_X:\n    BATCH_SIZE: 32\n  TEST:\n    BATCH_SIZE: 100\n  NUM_WORKERS: 8\n\nINPUT:\n  SIZE: (224, 224)\n  INTE"
  },
  {
    "path": "classification/configs/trainers/CoOp/rn50_ep50.yaml",
    "chars": 509,
    "preview": "DATALOADER:\n  TRAIN_X:\n    BATCH_SIZE: 32\n  TEST:\n    BATCH_SIZE: 100\n  NUM_WORKERS: 8\n\nINPUT:\n  SIZE: (224, 224)\n  INTE"
  },
  {
    "path": "classification/configs/trainers/CoOp/rn50_ep50_ctxv1.yaml",
    "chars": 556,
    "preview": "DATALOADER:\n  TRAIN_X:\n    BATCH_SIZE: 32\n  TEST:\n    BATCH_SIZE: 100\n  NUM_WORKERS: 8\n\nINPUT:\n  SIZE: (224, 224)\n  INTE"
  },
  {
    "path": "classification/configs/trainers/CoOp/rn50_val.yaml",
    "chars": 344,
    "preview": "DATALOADER:\n  TRAIN_X:\n    BATCH_SIZE: 200\n  TEST:\n    BATCH_SIZE: 200\n  NUM_WORKERS: 8\n\nINPUT:\n  SIZE: (224, 224)\n  INT"
  },
  {
    "path": "classification/configs/trainers/CoOp/vit_b16.yaml",
    "chars": 1227,
    "preview": "#DATALOADER:\n#  TRAIN_X:\n#    BATCH_SIZE: 32\n#  TEST:\n#    BATCH_SIZE: 100\n#  NUM_WORKERS: 8\n#\n#INPUT:\n#  SIZE: (224, 22"
  },
  {
    "path": "classification/configs/trainers/CoOp/vit_b16_ctxv1.yaml",
    "chars": 562,
    "preview": "DATALOADER:\n  TRAIN_X:\n    BATCH_SIZE: 32\n  TEST:\n    BATCH_SIZE: 100\n  NUM_WORKERS: 8\n\nINPUT:\n  SIZE: (224, 224)\n  INTE"
  },
  {
    "path": "classification/configs/trainers/CoOp/vit_b16_ep100.yaml",
    "chars": 514,
    "preview": "DATALOADER:\n  TRAIN_X:\n    BATCH_SIZE: 32\n  TEST:\n    BATCH_SIZE: 100\n  NUM_WORKERS: 8\n\nINPUT:\n  SIZE: (224, 224)\n  INTE"
  },
  {
    "path": "classification/configs/trainers/CoOp/vit_b16_ep100_ctxv1.yaml",
    "chars": 562,
    "preview": "DATALOADER:\n  TRAIN_X:\n    BATCH_SIZE: 32\n  TEST:\n    BATCH_SIZE: 100\n  NUM_WORKERS: 8\n\nINPUT:\n  SIZE: (224, 224)\n  INTE"
  },
  {
    "path": "classification/configs/trainers/CoOp/vit_b16_ep50.yaml",
    "chars": 513,
    "preview": "DATALOADER:\n  TRAIN_X:\n    BATCH_SIZE: 32\n  TEST:\n    BATCH_SIZE: 100\n  NUM_WORKERS: 8\n\nINPUT:\n  SIZE: (224, 224)\n  INTE"
  },
  {
    "path": "classification/configs/trainers/CoOp/vit_b16_ep50_ctxv1.yaml",
    "chars": 561,
    "preview": "DATALOADER:\n  TRAIN_X:\n    BATCH_SIZE: 32\n  TEST:\n    BATCH_SIZE: 100\n  NUM_WORKERS: 8\n\nINPUT:\n  SIZE: (224, 224)\n  INTE"
  },
  {
    "path": "classification/configs/trainers/CoOp/vit_b32.yaml",
    "chars": 514,
    "preview": "DATALOADER:\n  TRAIN_X:\n    BATCH_SIZE: 32\n  TEST:\n    BATCH_SIZE: 100\n  NUM_WORKERS: 8\n\nINPUT:\n  SIZE: (224, 224)\n  INTE"
  },
  {
    "path": "classification/configs/trainers/CoOp/vit_b32_ep50.yaml",
    "chars": 513,
    "preview": "DATALOADER:\n  TRAIN_X:\n    BATCH_SIZE: 32\n  TEST:\n    BATCH_SIZE: 100\n  NUM_WORKERS: 8\n\nINPUT:\n  SIZE: (224, 224)\n  INTE"
  },
  {
    "path": "classification/configs/trainers/MIM_linear/vit_b16.yaml",
    "chars": 1117,
    "preview": "#DATALOADER:\n#  TRAIN_X:\n#    BATCH_SIZE: 32\n#  TEST:\n#    BATCH_SIZE: 128\n#  NUM_WORKERS: 8\n#\n#INPUT:\n#  SIZE: (224, 22"
  },
  {
    "path": "classification/configs/trainers/OneHot/vit_b16.yaml",
    "chars": 1227,
    "preview": "#DATALOADER:\n#  TRAIN_X:\n#    BATCH_SIZE: 32\n#  TEST:\n#    BATCH_SIZE: 100\n#  NUM_WORKERS: 8\n#\n#INPUT:\n#  SIZE: (224, 22"
  },
  {
    "path": "classification/configs/trainers/RingMo/vit_b16.yaml",
    "chars": 1400,
    "preview": "#DATALOADER:\n#  TRAIN_X:\n#    BATCH_SIZE: 32\n#  TEST:\n#    BATCH_SIZE: 100\n#  NUM_WORKERS: 8\n#\n#INPUT:\n#  SIZE: (224, 22"
  },
  {
    "path": "classification/configs/trainers/clip/vit_b16.yaml",
    "chars": 1227,
    "preview": "#DATALOADER:\n#  TRAIN_X:\n#    BATCH_SIZE: 32\n#  TEST:\n#    BATCH_SIZE: 100\n#  NUM_WORKERS: 8\n#\n#INPUT:\n#  SIZE: (224, 22"
  },
  {
    "path": "classification/configs/trainers/clip_adapter/rn101.yaml",
    "chars": 511,
    "preview": "DATALOADER:\n  TRAIN_X:\n    BATCH_SIZE: 32\n  TEST:\n    BATCH_SIZE: 100\n  NUM_WORKERS: 8\n\nINPUT:\n  SIZE: (224, 224)\n  INTE"
  },
  {
    "path": "classification/configs/trainers/clip_adapter/rn101_ep50.yaml",
    "chars": 510,
    "preview": "DATALOADER:\n  TRAIN_X:\n    BATCH_SIZE: 32\n  TEST:\n    BATCH_SIZE: 100\n  NUM_WORKERS: 8\n\nINPUT:\n  SIZE: (224, 224)\n  INTE"
  },
  {
    "path": "classification/configs/trainers/clip_adapter/rn50.yaml",
    "chars": 575,
    "preview": "DATALOADER:\n  TRAIN_X:\n    BATCH_SIZE: 32\n  TEST:\n    BATCH_SIZE: 100\n  NUM_WORKERS: 8\n\nINPUT:\n  SIZE: (224, 224)\n  INTE"
  },
  {
    "path": "classification/configs/trainers/clip_adapter/rn50_ctxv1.yaml",
    "chars": 558,
    "preview": "DATALOADER:\n  TRAIN_X:\n    BATCH_SIZE: 32\n  TEST:\n    BATCH_SIZE: 100\n  NUM_WORKERS: 8\n\nINPUT:\n  SIZE: (224, 224)\n  INTE"
  },
  {
    "path": "classification/configs/trainers/clip_adapter/rn50_ep100.yaml",
    "chars": 511,
    "preview": "DATALOADER:\n  TRAIN_X:\n    BATCH_SIZE: 32\n  TEST:\n    BATCH_SIZE: 100\n  NUM_WORKERS: 8\n\nINPUT:\n  SIZE: (224, 224)\n  INTE"
  },
  {
    "path": "classification/configs/trainers/clip_adapter/rn50_ep50.yaml",
    "chars": 509,
    "preview": "DATALOADER:\n  TRAIN_X:\n    BATCH_SIZE: 32\n  TEST:\n    BATCH_SIZE: 100\n  NUM_WORKERS: 8\n\nINPUT:\n  SIZE: (224, 224)\n  INTE"
  },
  {
    "path": "classification/configs/trainers/clip_adapter/rn50_ep50_ctxv1.yaml",
    "chars": 556,
    "preview": "DATALOADER:\n  TRAIN_X:\n    BATCH_SIZE: 32\n  TEST:\n    BATCH_SIZE: 100\n  NUM_WORKERS: 8\n\nINPUT:\n  SIZE: (224, 224)\n  INTE"
  },
  {
    "path": "classification/configs/trainers/clip_adapter/rn50_val.yaml",
    "chars": 344,
    "preview": "DATALOADER:\n  TRAIN_X:\n    BATCH_SIZE: 200\n  TEST:\n    BATCH_SIZE: 200\n  NUM_WORKERS: 8\n\nINPUT:\n  SIZE: (224, 224)\n  INT"
  },
  {
    "path": "classification/configs/trainers/clip_adapter/vit_b16.yaml",
    "chars": 1231,
    "preview": "#DATALOADER:\n#  TRAIN_X:\n#    BATCH_SIZE: 32\n#  TEST:\n#    BATCH_SIZE: 100\n#  NUM_WORKERS: 8\n#\n#INPUT:\n#  SIZE: (224, 22"
  },
  {
    "path": "classification/configs/trainers/clip_adapter/vit_b16_ctxv1.yaml",
    "chars": 562,
    "preview": "DATALOADER:\n  TRAIN_X:\n    BATCH_SIZE: 32\n  TEST:\n    BATCH_SIZE: 100\n  NUM_WORKERS: 8\n\nINPUT:\n  SIZE: (224, 224)\n  INTE"
  },
  {
    "path": "classification/configs/trainers/clip_adapter/vit_b16_ep100.yaml",
    "chars": 514,
    "preview": "DATALOADER:\n  TRAIN_X:\n    BATCH_SIZE: 32\n  TEST:\n    BATCH_SIZE: 100\n  NUM_WORKERS: 8\n\nINPUT:\n  SIZE: (224, 224)\n  INTE"
  },
  {
    "path": "classification/configs/trainers/clip_adapter/vit_b16_ep100_ctxv1.yaml",
    "chars": 562,
    "preview": "DATALOADER:\n  TRAIN_X:\n    BATCH_SIZE: 32\n  TEST:\n    BATCH_SIZE: 100\n  NUM_WORKERS: 8\n\nINPUT:\n  SIZE: (224, 224)\n  INTE"
  },
  {
    "path": "classification/configs/trainers/clip_adapter/vit_b16_ep50.yaml",
    "chars": 513,
    "preview": "DATALOADER:\n  TRAIN_X:\n    BATCH_SIZE: 32\n  TEST:\n    BATCH_SIZE: 100\n  NUM_WORKERS: 8\n\nINPUT:\n  SIZE: (224, 224)\n  INTE"
  },
  {
    "path": "classification/configs/trainers/clip_adapter/vit_b16_ep50_ctxv1.yaml",
    "chars": 561,
    "preview": "DATALOADER:\n  TRAIN_X:\n    BATCH_SIZE: 32\n  TEST:\n    BATCH_SIZE: 100\n  NUM_WORKERS: 8\n\nINPUT:\n  SIZE: (224, 224)\n  INTE"
  },
  {
    "path": "classification/configs/trainers/clip_adapter/vit_b32.yaml",
    "chars": 514,
    "preview": "DATALOADER:\n  TRAIN_X:\n    BATCH_SIZE: 32\n  TEST:\n    BATCH_SIZE: 100\n  NUM_WORKERS: 8\n\nINPUT:\n  SIZE: (224, 224)\n  INTE"
  },
  {
    "path": "classification/configs/trainers/clip_adapter/vit_b32_ep50.yaml",
    "chars": 513,
    "preview": "DATALOADER:\n  TRAIN_X:\n    BATCH_SIZE: 32\n  TEST:\n    BATCH_SIZE: 100\n  NUM_WORKERS: 8\n\nINPUT:\n  SIZE: (224, 224)\n  INTE"
  },
  {
    "path": "classification/datasets/MSTAR_EOC1.py",
    "chars": 3813,
    "preview": "import os\nimport pickle\nfrom scipy.io import loadmat\nimport re\nfrom dassl.data.datasets import DATASET_REGISTRY, Datum, "
  },
  {
    "path": "classification/datasets/MSTAR_EOC2C.py",
    "chars": 3712,
    "preview": "import os\nimport pickle\nfrom scipy.io import loadmat\nimport re\nfrom dassl.data.datasets import DATASET_REGISTRY, Datum, "
  },
  {
    "path": "classification/datasets/MSTAR_EOC2V.py",
    "chars": 3721,
    "preview": "import os\nimport pickle\nfrom scipy.io import loadmat\nimport re\nfrom dassl.data.datasets import DATASET_REGISTRY, Datum, "
  },
  {
    "path": "classification/datasets/MSTAR_SOC.py",
    "chars": 3833,
    "preview": "import os\nimport pickle\nfrom scipy.io import loadmat\nimport re\nfrom dassl.data.datasets import DATASET_REGISTRY, Datum, "
  },
  {
    "path": "classification/datasets/MyDataset.py",
    "chars": 4700,
    "preview": "import os\nimport pickle\nfrom scipy.io import loadmat\nimport re\nfrom dassl.data.datasets import DATASET_REGISTRY, Datum, "
  },
  {
    "path": "classification/datasets/New_FUSAR.py",
    "chars": 7099,
    "preview": "import os\nimport pickle\nfrom scipy.io import loadmat\nimport re\nfrom dassl.data.datasets import DATASET_REGISTRY, Datum, "
  },
  {
    "path": "classification/datasets/SAR_ACD.py",
    "chars": 3669,
    "preview": "import os\nimport pickle\nfrom scipy.io import loadmat\nimport re\nfrom dassl.data.datasets import DATASET_REGISTRY, Datum, "
  },
  {
    "path": "classification/datasets/__init__.py",
    "chars": 0,
    "preview": ""
  },
  {
    "path": "classification/datasets/caltech101.py",
    "chars": 2438,
    "preview": "import os\nimport pickle\n\nfrom dassl.data.datasets import DATASET_REGISTRY, Datum, DatasetBase\nfrom dassl.utils import mk"
  },
  {
    "path": "classification/datasets/dtd.py",
    "chars": 3939,
    "preview": "import os\nimport pickle\nimport random\n\nfrom dassl.data.datasets import DATASET_REGISTRY, Datum, DatasetBase\nfrom dassl.u"
  },
  {
    "path": "classification/datasets/eurosat.py",
    "chars": 2973,
    "preview": "import os\nimport pickle\n\nfrom dassl.data.datasets import DATASET_REGISTRY, Datum, DatasetBase\nfrom dassl.utils import mk"
  },
  {
    "path": "classification/datasets/fgvc_aircraft.py",
    "chars": 2878,
    "preview": "import os\nimport pickle\n\nfrom dassl.data.datasets import DATASET_REGISTRY, Datum, DatasetBase\nfrom dassl.utils import mk"
  },
  {
    "path": "classification/datasets/food101.py",
    "chars": 2203,
    "preview": "import os\nimport pickle\n\nfrom dassl.data.datasets import DATASET_REGISTRY, Datum, DatasetBase\nfrom dassl.utils import mk"
  },
  {
    "path": "classification/datasets/imagenet.py",
    "chars": 3723,
    "preview": "import os\nimport pickle\nfrom collections import OrderedDict\n\nfrom dassl.data.datasets import DATASET_REGISTRY, Datum, Da"
  },
  {
    "path": "classification/datasets/imagenet_a.py",
    "chars": 1439,
    "preview": "import os\n\nfrom dassl.data.datasets import DATASET_REGISTRY, Datum, DatasetBase\nfrom dassl.utils import listdir_nohidden"
  },
  {
    "path": "classification/datasets/imagenet_r.py",
    "chars": 1435,
    "preview": "import os\n\nfrom dassl.data.datasets import DATASET_REGISTRY, Datum, DatasetBase\nfrom dassl.utils import listdir_nohidden"
  },
  {
    "path": "classification/datasets/imagenet_sketch.py",
    "chars": 1331,
    "preview": "import os\n\nfrom dassl.data.datasets import DATASET_REGISTRY, Datum, DatasetBase\nfrom dassl.utils import listdir_nohidden"
  },
  {
    "path": "classification/datasets/imagenetv2.py",
    "chars": 1416,
    "preview": "import os\n\nfrom dassl.data.datasets import DATASET_REGISTRY, Datum, DatasetBase\nfrom dassl.utils import listdir_nohidden"
  },
  {
    "path": "classification/datasets/oxford_flowers.py",
    "chars": 3763,
    "preview": "import os\nimport pickle\nimport random\nfrom scipy.io import loadmat\nfrom collections import defaultdict\n\nfrom dassl.data."
  },
  {
    "path": "classification/datasets/oxford_pets.py",
    "chars": 6693,
    "preview": "import os\nimport pickle\nimport math\nimport random\nfrom collections import defaultdict\n\nfrom dassl.data.datasets import D"
  },
  {
    "path": "classification/datasets/stanford_cars.py",
    "chars": 3322,
    "preview": "import os\nimport pickle\nfrom scipy.io import loadmat\n\nfrom dassl.data.datasets import DATASET_REGISTRY, Datum, DatasetBa"
  },
  {
    "path": "classification/datasets/sun397.py",
    "chars": 3401,
    "preview": "import os\nimport pickle\n\nfrom dassl.data.datasets import DATASET_REGISTRY, Datum, DatasetBase\nfrom dassl.utils import mk"
  },
  {
    "path": "classification/datasets/ucf101.py",
    "chars": 3549,
    "preview": "import os\nimport pickle\nimport re\n\nfrom dassl.data.datasets import DATASET_REGISTRY, Datum, DatasetBase\nfrom dassl.utils"
  },
  {
    "path": "classification/demo.py",
    "chars": 567,
    "preview": "import subprocess\n\n# res = subprocess.call(['./scripts/coop/main.sh caltech101 rn50_ep50 end 16 1 False', '-c', 'ls -al'"
  },
  {
    "path": "classification/draw_curves.py",
    "chars": 5970,
    "preview": "import os\nimport pandas as pd\nimport numpy as np\nimport matplotlib.pyplot as plt\n\n\nsave_dir = \"main_curves\"\nif not os.pa"
  },
  {
    "path": "classification/interpret_prompt.py",
    "chars": 1737,
    "preview": "import os\nimport sys\nimport argparse\nimport torch\n\nfrom clip.simple_tokenizer import SimpleTokenizer\nfrom clip import cl"
  },
  {
    "path": "classification/lpclip/README.md",
    "chars": 495,
    "preview": "# Linear Probe CLIP\n\nTo run linear probe baselines, make sure that your current working directory is `lpclip/`.\n\nStep 1:"
  },
  {
    "path": "classification/lpclip/feat_extractor.py",
    "chars": 6080,
    "preview": "import os, argparse\nimport numpy as np\nimport torch\nimport sys\n\nsys.path.append(os.path.abspath(\"..\"))\n\nfrom datasets.ox"
  },
  {
    "path": "classification/lpclip/feat_extractor.sh",
    "chars": 566,
    "preview": "# sh feat_extractor.sh\nDATA=/path/to/datasets\nOUTPUT='./clip_feat/'\nSEED=1\n\n# oxford_pets oxford_flowers fgvc_aircraft d"
  },
  {
    "path": "classification/lpclip/linear_probe.py",
    "chars": 5870,
    "preview": "import numpy as np\nimport os\nfrom sklearn.linear_model import LogisticRegression\nimport argparse\n\nparser = argparse.Argu"
  },
  {
    "path": "classification/lpclip/linear_probe.sh",
    "chars": 183,
    "preview": "feature_dir=clip_feat\n\nfor DATASET in OxfordPets\ndo\n    python linear_probe.py \\\n    --dataset ${DATASET} \\\n    --featur"
  },
  {
    "path": "classification/model/Model.py",
    "chars": 20261,
    "preview": "import torch\nfrom torch import nn\nfrom torchvision import models\n\nclass AlexNet(nn.Module):\n    def __init__(self, num_c"
  },
  {
    "path": "classification/model/cmt.py",
    "chars": 19423,
    "preview": "# 2022.06.28-Changed for building CMT\n#            Huawei Technologies Co., Ltd. <foss@huawei.com>\n# Author: Jianyuan Gu"
  },
  {
    "path": "classification/model/conformer.py",
    "chars": 16889,
    "preview": "import torch\nimport torch.nn as nn\nimport torch.nn.functional as F\nfrom functools import partial\n\nfrom timm.models.layer"
  },
  {
    "path": "classification/model/cotnet.py",
    "chars": 9979,
    "preview": "import math\nimport numpy as np\nimport torch\nfrom torch import nn as nn\n\n# from config import IMAGENET_DEFAULT_MEAN, IMAG"
  },
  {
    "path": "classification/model/cotnet_hybrid.py",
    "chars": 21316,
    "preview": "import math\nimport numpy as np\nimport torch\nfrom torch import nn as nn\n\n# from config import IMAGENET_DEFAULT_MEAN, IMAG"
  },
  {
    "path": "classification/model/features.py",
    "chars": 12155,
    "preview": "\"\"\" PyTorch Feature Extraction Helpers\n\nA collection of classes, functions, modules to help extract features from models"
  },
  {
    "path": "classification/model/helpers.py",
    "chars": 14866,
    "preview": "\"\"\" Model creation / weight loading / state_dict helpers\n\nHacked together by / Copyright 2020 Ross Wightman\n\"\"\"\nimport l"
  },
  {
    "path": "classification/model/hivit.py",
    "chars": 12271,
    "preview": "import math\nimport torch\nimport torch.nn as nn\nimport torch.nn.functional as F\nimport torch.utils.checkpoint as checkpoi"
  },
  {
    "path": "classification/model/inception_transformer.py",
    "chars": 25810,
    "preview": "# Copyright 2022 Garena Online Private Limited\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you"
  },
  {
    "path": "classification/model/layers/__init__.py",
    "chars": 1866,
    "preview": "from .activations import *\nfrom .adaptive_avgmax_pool import \\\n    adaptive_avgmax_pool2d, select_adaptive_pool2d, Adapt"
  },
  {
    "path": "classification/model/layers/activations.py",
    "chars": 3306,
    "preview": "\"\"\" Activations\n\nA collection of activations fn and modules with a common interface so that they can\neasily be swapped. "
  },
  {
    "path": "classification/model/layers/activations_jit.py",
    "chars": 2529,
    "preview": "\"\"\" Activations\n\nA collection of jit-scripted activations fn and modules with a common interface so that they can\neasily"
  },
  {
    "path": "classification/model/layers/activations_me.py",
    "chars": 5339,
    "preview": "\"\"\" Activations (memory-efficient w/ custom autograd)\n\nA collection of activations fn and modules with a common interfac"
  },
  {
    "path": "classification/model/layers/adaptive_avgmax_pool.py",
    "chars": 3903,
    "preview": "\"\"\" PyTorch selectable adaptive pooling\nAdaptive pooling with the ability to select the type of pooling from:\n    * 'avg"
  },
  {
    "path": "classification/model/layers/aggregation_zeropad.py",
    "chars": 15146,
    "preview": "import torch\nfrom torch.autograd import Function\nfrom torch.nn import functional as F\nfrom torch.nn.modules.utils import"
  },
  {
    "path": "classification/model/layers/anti_aliasing.py",
    "chars": 2293,
    "preview": "import torch\nimport torch.nn.parallel\nimport torch.nn as nn\nimport torch.nn.functional as F\n\n\nclass AntiAliasDownsampleL"
  },
  {
    "path": "classification/model/layers/blur_pool.py",
    "chars": 2180,
    "preview": "\"\"\"\nBlurPool layer inspired by\n - Kornia's Max_BlurPool2d\n - Making Convolutional Networks Shift-Invariant Again :cite:`"
  },
  {
    "path": "classification/model/layers/cbam.py",
    "chars": 3337,
    "preview": "\"\"\" CBAM (sort-of) Attention\n\nExperimental impl of CBAM: Convolutional Block Attention Module: https://arxiv.org/abs/180"
  },
  {
    "path": "classification/model/layers/classifier.py",
    "chars": 1616,
    "preview": "\"\"\" Classifier head and layer factory\n\nHacked together by / Copyright 2020 Ross Wightman\n\"\"\"\nfrom torch import nn as nn\n"
  },
  {
    "path": "classification/model/layers/cond_conv2d.py",
    "chars": 5129,
    "preview": "\"\"\" PyTorch Conditionally Parameterized Convolution (CondConv)\n\nPaper: CondConv: Conditionally Parameterized Convolution"
  },
  {
    "path": "classification/model/layers/config.py",
    "chars": 3069,
    "preview": "\"\"\" Model / Layer Config singleton state\n\"\"\"\nfrom typing import Any, Optional\n\n__all__ = [\n    'is_exportable', 'is_scri"
  },
  {
    "path": "classification/model/layers/conv2d_same.py",
    "chars": 1490,
    "preview": "\"\"\" Conv2d w/ Same Padding\n\nHacked together by / Copyright 2020 Ross Wightman\n\"\"\"\nimport torch\nimport torch.nn as nn\nimp"
  },
  {
    "path": "classification/model/layers/conv_bn_act.py",
    "chars": 1466,
    "preview": "\"\"\" Conv2d + BN + Act\n\nHacked together by / Copyright 2020 Ross Wightman\n\"\"\"\nfrom torch import nn as nn\n\nfrom .create_co"
  },
  {
    "path": "classification/model/layers/create_act.py",
    "chars": 3599,
    "preview": "\"\"\" Activation Factory\nHacked together by / Copyright 2020 Ross Wightman\n\"\"\"\nfrom .activations import *\nfrom .activation"
  },
  {
    "path": "classification/model/layers/create_attn.py",
    "chars": 1222,
    "preview": "\"\"\" Select AttentionFactory Method\n\nHacked together by / Copyright 2020 Ross Wightman\n\"\"\"\nimport torch\nfrom .se import S"
  },
  {
    "path": "classification/model/layers/create_conv2d.py",
    "chars": 1399,
    "preview": "\"\"\" Create Conv2d Factory Method\n\nHacked together by / Copyright 2020 Ross Wightman\n\"\"\"\n\nfrom .mixed_conv2d import Mixed"
  },
  {
    "path": "classification/model/layers/create_norm_act.py",
    "chars": 3327,
    "preview": "\"\"\" NormAct (Normalizaiton + Activation Layer) Factory\n\nCreate norm + act combo modules that attempt to be backwards com"
  },
  {
    "path": "classification/model/layers/drop.py",
    "chars": 6938,
    "preview": "\"\"\" DropBlock, DropPath\n\nPyTorch implementations of DropBlock and DropPath (Stochastic Depth) regularization layers.\n\nPa"
  },
  {
    "path": "classification/model/layers/eca.py",
    "chars": 4701,
    "preview": "\"\"\"\nECA module from ECAnet\n\npaper: ECA-Net: Efficient Channel Attention for Deep Convolutional Neural Networks\nhttps://a"
  },
  {
    "path": "classification/model/layers/evo_norm.py",
    "chars": 3328,
    "preview": "\"\"\"EvoNormB0 (Batched) and EvoNormS0 (Sample) in PyTorch\n\nAn attempt at getting decent performing EvoNorms running in Py"
  },
  {
    "path": "classification/model/layers/helpers.py",
    "chars": 492,
    "preview": "\"\"\" Layer/Module Helpers\n\nHacked together by / Copyright 2020 Ross Wightman\n\"\"\"\nfrom itertools import repeat\n#from torch"
  },
  {
    "path": "classification/model/layers/inplace_abn.py",
    "chars": 3353,
    "preview": "import torch\nfrom torch import nn as nn\n\ntry:\n    from inplace_abn.functions import inplace_abn, inplace_abn_sync\n    ha"
  },
  {
    "path": "classification/model/layers/kerv2d.py",
    "chars": 2092,
    "preview": "import math\nimport torch\nfrom torch import Tensor\nfrom torch import nn as nn\nfrom torch.nn import functional as F\nfrom t"
  },
  {
    "path": "classification/model/layers/median_pool.py",
    "chars": 1737,
    "preview": "\"\"\" Median Pool\nHacked together by / Copyright 2020 Ross Wightman\n\"\"\"\nimport torch.nn as nn\nimport torch.nn.functional a"
  },
  {
    "path": "classification/model/layers/mixed_conv2d.py",
    "chars": 1844,
    "preview": "\"\"\" PyTorch Mixed Convolution\n\nPaper: MixConv: Mixed Depthwise Convolutional Kernels (https://arxiv.org/abs/1907.09595)\n"
  },
  {
    "path": "classification/model/layers/mlp.py",
    "chars": 3774,
    "preview": "\"\"\" MLP module w/ dropout and configurable activation layer\n\nHacked together by / Copyright 2020 Ross Wightman\n\"\"\"\nfrom "
  },
  {
    "path": "classification/model/layers/norm_act.py",
    "chars": 3444,
    "preview": "\"\"\" Normalization + Activation Layers\n\"\"\"\nimport torch\nfrom torch import nn as nn\nfrom torch.nn import functional as F\n\n"
  },
  {
    "path": "classification/model/layers/padding.py",
    "chars": 2167,
    "preview": "\"\"\" Padding Helpers\n\nHacked together by / Copyright 2020 Ross Wightman\n\"\"\"\nimport math\nfrom typing import List, Tuple\n\ni"
  },
  {
    "path": "classification/model/layers/patch_embed.py",
    "chars": 1408,
    "preview": "\"\"\" Image to Patch Embedding using Conv2d\n\nA convolution based approach to patchifying a 2D image w/ embedding projectio"
  },
  {
    "path": "classification/model/layers/pool2d_same.py",
    "chars": 2969,
    "preview": "\"\"\" AvgPool2d w/ Same Padding\n\nHacked together by / Copyright 2020 Ross Wightman\n\"\"\"\nimport torch\nimport torch.nn as nn\n"
  },
  {
    "path": "classification/model/layers/se.py",
    "chars": 1406,
    "preview": "from torch import nn as nn\nfrom .create_act import create_act_layer\n\n\nclass SEModule(nn.Module):\n\n    def __init__(self,"
  },
  {
    "path": "classification/model/layers/selective_kernel.py",
    "chars": 5282,
    "preview": "\"\"\" Selective Kernel Convolution/Attention\n\nPaper: Selective Kernel Networks (https://arxiv.org/abs/1903.06586)\n\nHacked "
  },
  {
    "path": "classification/model/layers/separable_conv.py",
    "chars": 2641,
    "preview": "\"\"\" Depthwise Separable Conv Modules\n\nBasic DWS convs. Other variations of DWS exist with batch norm or activations betw"
  },
  {
    "path": "classification/model/layers/shiftlution.py",
    "chars": 2768,
    "preview": "import numpy as np\nimport torch\nfrom torch import nn as nn\n\nclass Shiftlution(nn.Module):\n    def __init__(self, channel"
  },
  {
    "path": "classification/model/layers/space_to_depth.py",
    "chars": 1750,
    "preview": "import torch\nimport torch.nn as nn\n\n\nclass SpaceToDepth(nn.Module):\n    def __init__(self, block_size=4):\n        super("
  },
  {
    "path": "classification/model/layers/split_attn.py",
    "chars": 3013,
    "preview": "\"\"\" Split Attention Conv2d (for ResNeSt Models)\n\nPaper: `ResNeSt: Split-Attention Networks` - /https://arxiv.org/abs/200"
  },
  {
    "path": "classification/model/layers/split_batchnorm.py",
    "chars": 3441,
    "preview": "\"\"\" Split BatchNorm\n\nA PyTorch BatchNorm layer that splits input batch into N equal parts and passes each through\na sepa"
  },
  {
    "path": "classification/model/layers/std_conv.py",
    "chars": 6517,
    "preview": "import torch\nimport torch.nn as nn\nimport torch.nn.functional as F\n\nfrom .padding import get_padding, get_padding_value,"
  },
  {
    "path": "classification/model/layers/tbconv.py",
    "chars": 4044,
    "preview": "import math\nimport torch\nfrom torch import Tensor\nfrom torch import nn as nn\nfrom torch.nn import functional as F\nfrom t"
  },
  {
    "path": "classification/model/layers/test_time_pool.py",
    "chars": 1851,
    "preview": "\"\"\" Test Time Pooling (Average-Max Pool)\n\nHacked together by / Copyright 2020 Ross Wightman\n\"\"\"\n\nimport logging\nfrom tor"
  },
  {
    "path": "classification/model/layers/utils.py",
    "chars": 516,
    "preview": "import torch\nfrom string import Template\nfrom collections import namedtuple\nimport cupy\n\nStream = namedtuple('Stream', ["
  },
  {
    "path": "classification/model/layers/weight_init.py",
    "chars": 3324,
    "preview": "import torch\nimport math\nimport warnings\n\nfrom torch.nn.init import _calculate_fan_in_and_fan_out\n\n\ndef _no_grad_trunc_n"
  },
  {
    "path": "classification/model/nextvit.py",
    "chars": 14860,
    "preview": "# Copyright (c) ByteDance Inc. All rights reserved.\nfrom functools import partial\n\nimport torch\nimport torch.utils.check"
  },
  {
    "path": "classification/model/registry.py",
    "chars": 3970,
    "preview": "\"\"\" Model Registry\nHacked together by / Copyright 2020 Ross Wightman\n\"\"\"\n\nimport sys\nimport re\nimport fnmatch\nfrom colle"
  },
  {
    "path": "classification/model/res2net.py",
    "chars": 8780,
    "preview": "import torch.nn as nn\nimport math\nimport torch.utils.model_zoo as model_zoo\nimport torch\nimport torch.nn.functional as F"
  },
  {
    "path": "classification/model/resnet.py",
    "chars": 53820,
    "preview": "\"\"\"PyTorch ResNet\n\nThis started as a copy of https://github.com/pytorch/vision 'resnet.py' (BSD-3-Clause) with\nadditiona"
  },
  {
    "path": "classification/model/utils.py",
    "chars": 9568,
    "preview": "# Copyright (c) 2015-present, Facebook, Inc.\n# All rights reserved.\n\"\"\"\nMisc functions, including distributed helpers.\n\n"
  },
  {
    "path": "classification/model/vgg.py",
    "chars": 9167,
    "preview": "from typing import Union, List, Dict, Any, cast\n\nimport torch\nimport torch.nn as nn\n\n\n\n__all__ = [\n    \"VGG\",\n    \"vgg11"
  },
  {
    "path": "classification/parse_test_res.py",
    "chars": 6230,
    "preview": "\"\"\"\nGoal\n---\n1. Read test results from log.txt files\n2. Compute mean and std across different folders (seeds)\n\nUsage\n---"
  },
  {
    "path": "classification/scripts/CNN/README.md",
    "chars": 72,
    "preview": "These scripts are only for reproducing the results on the IJCV'22 paper."
  },
  {
    "path": "classification/scripts/CNN/eval.sh",
    "chars": 739,
    "preview": "#!/bin/bash\n\n# custom config\nDATA=/path/to/datasets\nTRAINER=CoOp\nSHOTS=16\nNCTX=16\nCSC=False\nCTP=end\n\nDATASET=$1\nCFG=$2\n\n"
  },
  {
    "path": "classification/scripts/CNN/main.sh",
    "chars": 653,
    "preview": "#!/bin/bash\n\n# custom config\nDATA='./data/'\nTRAINER=CNN\n\nDATASET=$1\nCFG=$2  # config file\nSHOTS=$3  # number of shots (1"
  },
  {
    "path": "classification/scripts/CNN/zeroshot.sh",
    "chars": 354,
    "preview": "#!/bin/bash\n\n# custom config\nDATA=/path/to/datasets\nTRAINER=ZeroshotCLIP\nDATASET=$1\nCFG=$2  # rn50, rn101, vit_b32 or vi"
  },
  {
    "path": "classification/scripts/MIM_finetune/README.md",
    "chars": 72,
    "preview": "These scripts are only for reproducing the results on the IJCV'22 paper."
  },
  {
    "path": "classification/scripts/MIM_finetune/eval.sh",
    "chars": 739,
    "preview": "#!/bin/bash\n\n# custom config\nDATA=/path/to/datasets\nTRAINER=CoOp\nSHOTS=16\nNCTX=16\nCSC=False\nCTP=end\n\nDATASET=$1\nCFG=$2\n\n"
  },
  {
    "path": "classification/scripts/MIM_finetune/main.sh",
    "chars": 662,
    "preview": "#!/bin/bash\n\n# custom config\nDATA='./data/'\nTRAINER=MIM_finetune\n\nDATASET=$1\nCFG=$2  # config file\nSHOTS=$3  # number of"
  },
  {
    "path": "classification/scripts/MIM_finetune/zeroshot.sh",
    "chars": 354,
    "preview": "#!/bin/bash\n\n# custom config\nDATA=/path/to/datasets\nTRAINER=ZeroshotCLIP\nDATASET=$1\nCFG=$2  # rn50, rn101, vit_b32 or vi"
  },
  {
    "path": "classification/scripts/MIM_linear/README.md",
    "chars": 72,
    "preview": "These scripts are only for reproducing the results on the IJCV'22 paper."
  },
  {
    "path": "classification/scripts/MIM_linear/eval.sh",
    "chars": 739,
    "preview": "#!/bin/bash\n\n# custom config\nDATA=/path/to/datasets\nTRAINER=CoOp\nSHOTS=16\nNCTX=16\nCSC=False\nCTP=end\n\nDATASET=$1\nCFG=$2\n\n"
  },
  {
    "path": "classification/scripts/MIM_linear/main.sh",
    "chars": 660,
    "preview": "#!/bin/bash\n\n# custom config\nDATA='./data/'\nTRAINER=MIM_linear\n\nDATASET=$1\nCFG=$2  # config file\nSHOTS=$3  # number of s"
  },
  {
    "path": "classification/scripts/MIM_linear/zeroshot.sh",
    "chars": 354,
    "preview": "#!/bin/bash\n\n# custom config\nDATA=/path/to/datasets\nTRAINER=ZeroshotCLIP\nDATASET=$1\nCFG=$2  # rn50, rn101, vit_b32 or vi"
  },
  {
    "path": "classification/train.py",
    "chars": 5931,
    "preview": "import argparse\nimport torch\n\nfrom dassl.utils import setup_logger, set_random_seed, collect_env_info\nfrom dassl.config "
  },
  {
    "path": "classification/trainers/MIM_linear.py",
    "chars": 10678,
    "preview": "import os.path as osp\n\nimport torch\nimport torch.nn as nn\nfrom torch.nn import functional as F\n\nfrom dassl.engine import"
  },
  {
    "path": "classification/trainers/__init__.py",
    "chars": 0,
    "preview": ""
  },
  {
    "path": "classification/trainers/imagenet_templates.py",
    "chars": 2653,
    "preview": "# source: https://github.com/openai/CLIP/blob/main/notebooks/Prompt_Engineering_for_ImageNet.ipynb\n\nIMAGENET_TEMPLATES ="
  },
  {
    "path": "detection/CITATION.cff",
    "chars": 273,
    "preview": "cff-version: 1.2.0\nmessage: \"If you use this software, please cite it as below.\"\nauthors:\n  - name: \"MMDetection Contrib"
  },
  {
    "path": "detection/LICENSE",
    "chars": 11398,
    "preview": "Copyright 2018-2023 OpenMMLab. All rights reserved.\n\n                                 Apache License\n                   "
  },
  {
    "path": "detection/MANIFEST.in",
    "chars": 205,
    "preview": "include requirements/*.txt\ninclude mmdet/VERSION\ninclude mmdet/.mim/model-index.yml\ninclude mmdet/.mim/demo/*/*\nrecursiv"
  },
  {
    "path": "detection/MMDET_README.md",
    "chars": 16065,
    "preview": "<div align=\"center\">\n  <img src=\"resources/mmdet-logo.png\" width=\"600\"/>\n  <div>&nbsp;</div>\n  <div align=\"center\">\n    "
  },
  {
    "path": "detection/README_zh-CN.md",
    "chars": 14429,
    "preview": "<div align=\"center\">\n  <img src=\"resources/mmdet-logo.png\" width=\"600\"/>\n  <div>&nbsp;</div>\n  <div align=\"center\">\n    "
  },
  {
    "path": "detection/configs/_base_/datasets/cityscapes_detection.py",
    "chars": 1937,
    "preview": "# dataset settings\ndataset_type = 'CityscapesDataset'\ndata_root = 'data/cityscapes/'\nimg_norm_cfg = dict(\n    mean=[123."
  },
  {
    "path": "detection/configs/_base_/datasets/cityscapes_instance.py",
    "chars": 1963,
    "preview": "# dataset settings\ndataset_type = 'CityscapesDataset'\ndata_root = 'data/cityscapes/'\nimg_norm_cfg = dict(\n    mean=[123."
  },
  {
    "path": "detection/configs/_base_/datasets/coco_detection.py",
    "chars": 1711,
    "preview": "# dataset settings\ndataset_type = 'CocoDataset'\ndata_root = 'data/coco/'\nimg_norm_cfg = dict(\n    mean=[123.675, 116.28,"
  },
  {
    "path": "detection/configs/_base_/datasets/coco_instance.py",
    "chars": 1752,
    "preview": "# dataset settings\ndataset_type = 'CocoDataset'\ndata_root = 'data/coco/'\nimg_norm_cfg = dict(\n    mean=[123.675, 116.28,"
  },
  {
    "path": "detection/configs/_base_/datasets/coco_instance_semantic.py",
    "chars": 1922,
    "preview": "# dataset settings\ndataset_type = 'CocoDataset'\ndata_root = 'data/coco/'\nimg_norm_cfg = dict(\n    mean=[123.675, 116.28,"
  },
  {
    "path": "detection/configs/_base_/datasets/coco_panoptic.py",
    "chars": 2079,
    "preview": "# dataset settings\ndataset_type = 'CocoPanopticDataset'\ndata_root = 'data/coco/'\nimg_norm_cfg = dict(\n    mean=[123.675,"
  },
  {
    "path": "detection/configs/_base_/datasets/deepfashion.py",
    "chars": 1888,
    "preview": "# dataset settings\ndataset_type = 'DeepFashionDataset'\ndata_root = 'data/DeepFashion/In-shop/'\nimg_norm_cfg = dict(\n    "
  }
]

// ... and 2232 more files (download for full content)

About this extraction

This page contains the full source code of the waterdisappear/SARATR-X GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 2432 files (66.9 MB), approximately 2.9M tokens, and a symbol index with 4344 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.

Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.

Copied to clipboard!