├── .idea ├── MobileMamba.iml ├── deployment.xml ├── inspectionProfiles │ └── profiles_settings.xml ├── misc.xml ├── vcs.xml └── workspace.xml ├── LICENSE ├── README.md ├── assets ├── comparewithmamba.png ├── logo_512.png ├── mobilemamba.png ├── mobilemamba_logo.png └── motivation.png ├── configs ├── .DS_Store ├── __init__.py ├── cls_big_21k.py └── mobilemamba │ ├── mobilemamba_b1.py │ ├── mobilemamba_b1s.py │ ├── mobilemamba_b2.py │ ├── mobilemamba_b2s.py │ ├── mobilemamba_b4.py │ ├── mobilemamba_b4s.py │ ├── mobilemamba_s6.py │ ├── mobilemamba_s6s.py │ ├── mobilemamba_t2.py │ ├── mobilemamba_t2s.py │ ├── mobilemamba_t4.py │ └── mobilemamba_t4s.py ├── data ├── .DS_Store ├── CLS_dataset.py ├── __init__.py ├── lmdb_dataset.py ├── map22kto1k.txt ├── prepare_dataset.py ├── transforms.py └── utils.py ├── downstream ├── __init__.py ├── det │ ├── .DS_Store │ ├── __init__.py │ ├── backbones │ │ ├── __init__.py │ │ ├── basic_modules.py │ │ ├── efficientvit_fpn.py │ │ ├── lib_mamba │ │ │ ├── __init__.py │ │ │ ├── csm_triton.py │ │ │ ├── csm_tritonk2.py │ │ │ ├── csms6s.py │ │ │ ├── kernels │ │ │ │ └── selective_scan │ │ │ │ │ ├── README.md │ │ │ │ │ ├── csrc │ │ │ │ │ └── selective_scan │ │ │ │ │ │ ├── cub_extra.cuh │ │ │ │ │ │ ├── cus │ │ │ │ │ │ ├── selective_scan.cpp │ │ │ │ │ │ ├── selective_scan_bwd_kernel.cuh │ │ │ │ │ │ ├── selective_scan_core_bwd.cu │ │ │ │ │ │ ├── selective_scan_core_fwd.cu │ │ │ │ │ │ └── selective_scan_fwd_kernel.cuh │ │ │ │ │ │ ├── cusndstate │ │ │ │ │ │ ├── selective_scan_bwd_kernel_ndstate.cuh │ │ │ │ │ │ ├── selective_scan_core_bwd.cu │ │ │ │ │ │ ├── selective_scan_core_fwd.cu │ │ │ │ │ │ ├── selective_scan_fwd_kernel_ndstate.cuh │ │ │ │ │ │ ├── selective_scan_ndstate.cpp │ │ │ │ │ │ └── selective_scan_ndstate.h │ │ │ │ │ │ ├── cusnrow │ │ │ │ │ │ ├── selective_scan_bwd_kernel_nrow.cuh │ │ │ │ │ │ ├── selective_scan_core_bwd.cu │ │ │ │ │ │ ├── selective_scan_core_bwd2.cu │ │ │ │ │ │ ├── selective_scan_core_bwd3.cu │ │ │ │ │ │ ├── selective_scan_core_bwd4.cu │ │ │ │ │ │ ├── selective_scan_core_fwd.cu │ │ │ │ │ │ ├── selective_scan_core_fwd2.cu │ │ │ │ │ │ ├── selective_scan_core_fwd3.cu │ │ │ │ │ │ ├── selective_scan_core_fwd4.cu │ │ │ │ │ │ ├── selective_scan_fwd_kernel_nrow.cuh │ │ │ │ │ │ └── selective_scan_nrow.cpp │ │ │ │ │ │ ├── cusoflex │ │ │ │ │ │ ├── selective_scan_bwd_kernel_oflex.cuh │ │ │ │ │ │ ├── selective_scan_core_bwd.cu │ │ │ │ │ │ ├── selective_scan_core_fwd.cu │ │ │ │ │ │ ├── selective_scan_fwd_kernel_oflex.cuh │ │ │ │ │ │ └── selective_scan_oflex.cpp │ │ │ │ │ │ ├── reverse_scan.cuh │ │ │ │ │ │ ├── selective_scan.h │ │ │ │ │ │ ├── selective_scan_common.h │ │ │ │ │ │ ├── static_switch.h │ │ │ │ │ │ └── uninitialized_copy.cuh │ │ │ │ │ ├── setup.py │ │ │ │ │ ├── test_selective_scan.py │ │ │ │ │ ├── test_selective_scan_easy.py │ │ │ │ │ └── test_selective_scan_speed.py │ │ │ ├── vmamba.py │ │ │ └── vmambanew.py │ │ └── mobilemamba.py │ ├── configs │ │ ├── .DS_Store │ │ ├── __init__.py │ │ ├── _base_ │ │ │ ├── __init__.py │ │ │ ├── datasets │ │ │ │ ├── __init__.py │ │ │ │ ├── ade20k_instance.py │ │ │ │ ├── ade20k_panoptic.py │ │ │ │ ├── ade20k_semantic.py │ │ │ │ ├── cityscapes_detection.py │ │ │ │ ├── cityscapes_instance.py │ │ │ │ ├── coco_caption.py │ │ │ │ ├── coco_detection.py │ │ │ │ ├── coco_instance.py │ │ │ │ ├── coco_instance_semantic.py │ │ │ │ ├── coco_panoptic.py │ │ │ │ ├── coco_semantic.py │ │ │ │ ├── deepfashion.py │ │ │ │ ├── dsdl.py │ │ │ │ ├── isaid_instance.py │ │ │ │ ├── lvis_v0.5_instance.py │ │ │ │ ├── lvis_v1_instance.py │ │ │ │ ├── mot_challenge.py │ │ │ │ ├── mot_challenge_det.py │ │ │ │ ├── mot_challenge_reid.py │ │ │ │ ├── objects365v1_detection.py │ │ │ │ ├── objects365v2_detection.py │ │ │ │ ├── openimages_detection.py │ │ │ │ ├── refcoco+.py │ │ │ │ ├── refcoco.py │ │ │ │ ├── refcocog.py │ │ │ │ ├── semi_coco_detection.py │ │ │ │ ├── v3det.py │ │ │ │ ├── voc0712.py │ │ │ │ ├── wider_face.py │ │ │ │ └── youtube_vis.py │ │ │ ├── default_runtime.py │ │ │ ├── models │ │ │ │ ├── __init__.py │ │ │ │ ├── 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 │ │ │ │ ├── mask_rcnn_efficientvit_fpn.py │ │ │ │ ├── retinanet_efficientvit_fpn.py │ │ │ │ ├── retinanet_r50_fpn.py │ │ │ │ ├── rpn_r50-caffe-c4.py │ │ │ │ ├── rpn_r50_fpn.py │ │ │ │ └── ssd300.py │ │ │ └── schedules │ │ │ │ ├── __init__.py │ │ │ │ ├── schedule_1x.py │ │ │ │ ├── schedule_20e.py │ │ │ │ └── schedule_2x.py │ │ ├── mask_rcnn │ │ │ ├── __init__.py │ │ │ └── mask-rcnn_mobilemamba_b1_fpn_1x_coco.py │ │ ├── retinanet │ │ │ ├── __init__.py │ │ │ ├── retinanet_mobilemamba_b1_fpn_1x_coco.py │ │ │ └── retinanet_tta.py │ │ └── ssd │ │ │ ├── __init__.py │ │ │ ├── ssdlite_mobilemamba_b1_8gpu_2lr_512_coco.py │ │ │ └── ssdlite_mobilemamba_b1_8gpu_2lr_coco.py │ ├── mmdet │ │ ├── __init__.py │ │ ├── apis │ │ │ ├── __init__.py │ │ │ ├── det_inferencer.py │ │ │ └── inference.py │ │ ├── configs │ │ │ ├── __init__.py │ │ │ ├── _base_ │ │ │ │ ├── __init__.py │ │ │ │ ├── datasets │ │ │ │ │ ├── __init__.py │ │ │ │ │ ├── coco_detection.py │ │ │ │ │ ├── coco_instance.py │ │ │ │ │ ├── coco_instance_semantic.py │ │ │ │ │ ├── coco_panoptic.py │ │ │ │ │ └── mot_challenge.py │ │ │ │ ├── default_runtime.py │ │ │ │ ├── models │ │ │ │ │ ├── __init__.py │ │ │ │ │ ├── cascade_mask_rcnn_r50_fpn.py │ │ │ │ │ ├── cascade_rcnn_r50_fpn.py │ │ │ │ │ ├── faster_rcnn_r50_fpn.py │ │ │ │ │ ├── mask_rcnn_r50_caffe_c4.py │ │ │ │ │ ├── mask_rcnn_r50_fpn.py │ │ │ │ │ └── retinanet_r50_fpn.py │ │ │ │ └── schedules │ │ │ │ │ ├── __init__.py │ │ │ │ │ ├── schedule_1x.py │ │ │ │ │ └── schedule_2x.py │ │ │ ├── cascade_rcnn │ │ │ │ ├── __init__.py │ │ │ │ ├── cascade_mask_rcnn_r50_fpn_1x_coco.py │ │ │ │ └── cascade_rcnn_r50_fpn_1x_coco.py │ │ │ ├── common │ │ │ │ ├── __init__.py │ │ │ │ ├── lsj_100e_coco_detection.py │ │ │ │ ├── lsj_100e_coco_instance.py │ │ │ │ ├── lsj_200e_coco_detection.py │ │ │ │ ├── lsj_200e_coco_instance.py │ │ │ │ ├── ms_3x_coco.py │ │ │ │ ├── ms_3x_coco_instance.py │ │ │ │ ├── ms_90k_coco.py │ │ │ │ ├── ms_poly_3x_coco_instance.py │ │ │ │ ├── ms_poly_90k_coco_instance.py │ │ │ │ ├── ssj_270_coco_instance.py │ │ │ │ └── ssj_scp_270k_coco_instance.py │ │ │ ├── deformable_detr │ │ │ │ ├── __init__.py │ │ │ │ ├── deformable_detr_r50_16xb2_50e_coco.py │ │ │ │ ├── deformable_detr_refine_r50_16xb2_50e_coco.py │ │ │ │ └── deformable_detr_refine_twostage_r50_16xb2_50e_coco.py │ │ │ ├── detr │ │ │ │ ├── __init__.py │ │ │ │ ├── detr_r101_8xb2_500e_coco.py │ │ │ │ ├── detr_r18_8xb2_500e_coco.py │ │ │ │ ├── detr_r50_8xb2_150e_coco.py │ │ │ │ └── detr_r50_8xb2_500e_coco.py │ │ │ ├── dino │ │ │ │ ├── __init__.py │ │ │ │ ├── dino_4scale_r50_8xb2_12e_coco.py │ │ │ │ ├── dino_4scale_r50_8xb2_24e_coco.py │ │ │ │ ├── dino_4scale_r50_8xb2_36e_coco.py │ │ │ │ ├── dino_4scale_r50_improved_8xb2_12e_coco.py │ │ │ │ ├── dino_5scale_swin_l_8xb2_12e_coco.py │ │ │ │ └── dino_5scale_swin_l_8xb2_36e_coco.py │ │ │ ├── faster_rcnn │ │ │ │ ├── __init__.py │ │ │ │ └── faster_rcnn_r50_fpn_1x_coco.py │ │ │ ├── mask_rcnn │ │ │ │ ├── __init__.py │ │ │ │ ├── mask_rcnn_r101_caffe_fpn_1x_coco.py │ │ │ │ ├── mask_rcnn_r101_caffe_fpn_ms_poly_3x_coco.py │ │ │ │ ├── mask_rcnn_r101_fpn_1x_coco.py │ │ │ │ ├── mask_rcnn_r101_fpn_2x_coco.py │ │ │ │ ├── mask_rcnn_r101_fpn_8xb8_amp_lsj_200e_coco.py │ │ │ │ ├── mask_rcnn_r101_fpn_ms_poly_3x_coco.py │ │ │ │ ├── mask_rcnn_r18_fpn_8xb8_amp_lsj_200e_coco.py │ │ │ │ ├── mask_rcnn_r50_caffe_c4_1x_coco.py │ │ │ │ ├── mask_rcnn_r50_caffe_fpn_1x_coco.py │ │ │ │ ├── mask_rcnn_r50_caffe_fpn_ms_1x_coco.py │ │ │ │ ├── mask_rcnn_r50_caffe_fpn_ms_poly_1x_coco.py │ │ │ │ ├── mask_rcnn_r50_caffe_fpn_ms_poly_2x_coco.py │ │ │ │ ├── mask_rcnn_r50_caffe_fpn_ms_poly_3x_coco.py │ │ │ │ ├── mask_rcnn_r50_caffe_fpn_poly_1x_coco_v1.py │ │ │ │ ├── mask_rcnn_r50_fpn_1x_coco.py │ │ │ │ ├── mask_rcnn_r50_fpn_1x_wandb_coco.py │ │ │ │ ├── mask_rcnn_r50_fpn_2x_coco.py │ │ │ │ ├── mask_rcnn_r50_fpn_8xb8_amp_lsj_200e_coco.py │ │ │ │ ├── mask_rcnn_r50_fpn_amp_1x_coco.py │ │ │ │ ├── mask_rcnn_r50_fpn_ms_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_ms_poly_3x_coco.py │ │ │ │ ├── mask_rcnn_x101_32x8d_fpn_1x_coco.py │ │ │ │ ├── mask_rcnn_x101_32x8d_fpn_ms_poly_1x_coco.py │ │ │ │ ├── mask_rcnn_x101_32x8d_fpn_ms_poly_3x_coco.py │ │ │ │ ├── mask_rcnn_x101_64_4d_fpn_1x_coco.py │ │ │ │ ├── mask_rcnn_x101_64x4d_fpn_2x_coco.py │ │ │ │ └── mask_rcnn_x101_64x4d_fpn_ms_poly_3x_coco.py │ │ │ ├── maskformer │ │ │ │ ├── __init__.py │ │ │ │ ├── maskformer_r50_ms_16xb1_75e_coco.py │ │ │ │ └── maskformer_swin_l_p4_w12_64xb1_ms_300e_coco.py │ │ │ ├── panoptic_fpn │ │ │ │ ├── __init__.py │ │ │ │ ├── panoptic_fpn_r101_fpn_1x_coco.py │ │ │ │ ├── panoptic_fpn_r101_fpn_ms_3x_coco.py │ │ │ │ ├── panoptic_fpn_r50_fpn_1x_coco.py │ │ │ │ └── panoptic_fpn_r50_fpn_ms_3x_coco.py │ │ │ ├── qdtrack │ │ │ │ ├── __init__.py │ │ │ │ ├── qdtrack_faster_rcnn_r50_fpn_4e_base.py │ │ │ │ └── qdtrack_faster_rcnn_r50_fpn_8xb2-4e_mot17halftrain_test-mot17halfval.py │ │ │ ├── retinanet │ │ │ │ ├── __init__.py │ │ │ │ ├── retinanet_r50_fpn_1x_coco.py │ │ │ │ └── retinanet_tta.py │ │ │ └── rtmdet │ │ │ │ ├── __init__.py │ │ │ │ ├── rtmdet_ins_l_8xb32_300e_coco.py │ │ │ │ ├── rtmdet_ins_m_8xb32_300e_coco.py │ │ │ │ ├── rtmdet_ins_s_8xb32_300e_coco.py │ │ │ │ ├── rtmdet_ins_tiny_8xb32_300e_coco.py │ │ │ │ ├── rtmdet_ins_x_8xb16_300e_coco.py │ │ │ │ ├── rtmdet_l_8xb32_300e_coco.py │ │ │ │ ├── rtmdet_m_8xb32_300e_coco.py │ │ │ │ ├── rtmdet_s_8xb32_300e_coco.py │ │ │ │ ├── rtmdet_tiny_8xb32_300e_coco.py │ │ │ │ ├── rtmdet_tta.py │ │ │ │ └── rtmdet_x_8xb32_300e_coco.py │ │ ├── datasets │ │ │ ├── __init__.py │ │ │ ├── ade20k.py │ │ │ ├── api_wrappers │ │ │ │ ├── __init__.py │ │ │ │ ├── coco_api.py │ │ │ │ └── cocoeval_mp.py │ │ │ ├── base_det_dataset.py │ │ │ ├── base_semseg_dataset.py │ │ │ ├── base_video_dataset.py │ │ │ ├── cityscapes.py │ │ │ ├── coco.py │ │ │ ├── coco_caption.py │ │ │ ├── coco_panoptic.py │ │ │ ├── coco_semantic.py │ │ │ ├── crowdhuman.py │ │ │ ├── dataset_wrappers.py │ │ │ ├── deepfashion.py │ │ │ ├── dod.py │ │ │ ├── dsdl.py │ │ │ ├── flickr30k.py │ │ │ ├── isaid.py │ │ │ ├── lvis.py │ │ │ ├── mdetr_style_refcoco.py │ │ │ ├── mot_challenge_dataset.py │ │ │ ├── objects365.py │ │ │ ├── odvg.py │ │ │ ├── openimages.py │ │ │ ├── refcoco.py │ │ │ ├── reid_dataset.py │ │ │ ├── samplers │ │ │ │ ├── __init__.py │ │ │ │ ├── batch_sampler.py │ │ │ │ ├── class_aware_sampler.py │ │ │ │ ├── custom_sample_size_sampler.py │ │ │ │ ├── multi_data_sampler.py │ │ │ │ ├── multi_source_sampler.py │ │ │ │ └── track_img_sampler.py │ │ │ ├── transforms │ │ │ │ ├── __init__.py │ │ │ │ ├── augment_wrappers.py │ │ │ │ ├── colorspace.py │ │ │ │ ├── formatting.py │ │ │ │ ├── frame_sampling.py │ │ │ │ ├── geometric.py │ │ │ │ ├── instaboost.py │ │ │ │ ├── loading.py │ │ │ │ ├── text_transformers.py │ │ │ │ ├── transformers_glip.py │ │ │ │ ├── transforms.py │ │ │ │ └── wrappers.py │ │ │ ├── utils.py │ │ │ ├── v3det.py │ │ │ ├── voc.py │ │ │ ├── wider_face.py │ │ │ ├── xml_style.py │ │ │ └── youtube_vis_dataset.py │ │ ├── engine │ │ │ ├── __init__.py │ │ │ ├── hooks │ │ │ │ ├── __init__.py │ │ │ │ ├── checkloss_hook.py │ │ │ │ ├── mean_teacher_hook.py │ │ │ │ ├── memory_profiler_hook.py │ │ │ │ ├── num_class_check_hook.py │ │ │ │ ├── pipeline_switch_hook.py │ │ │ │ ├── set_epoch_info_hook.py │ │ │ │ ├── sync_norm_hook.py │ │ │ │ ├── utils.py │ │ │ │ ├── visualization_hook.py │ │ │ │ └── yolox_mode_switch_hook.py │ │ │ ├── optimizers │ │ │ │ ├── __init__.py │ │ │ │ └── layer_decay_optimizer_constructor.py │ │ │ ├── runner │ │ │ │ ├── __init__.py │ │ │ │ └── loops.py │ │ │ └── schedulers │ │ │ │ ├── __init__.py │ │ │ │ └── quadratic_warmup.py │ │ ├── evaluation │ │ │ ├── __init__.py │ │ │ ├── evaluator │ │ │ │ ├── __init__.py │ │ │ │ └── multi_datasets_evaluator.py │ │ │ ├── functional │ │ │ │ ├── __init__.py │ │ │ │ ├── bbox_overlaps.py │ │ │ │ ├── cityscapes_utils.py │ │ │ │ ├── class_names.py │ │ │ │ ├── mean_ap.py │ │ │ │ ├── panoptic_utils.py │ │ │ │ ├── recall.py │ │ │ │ ├── ytvis.py │ │ │ │ └── ytviseval.py │ │ │ └── metrics │ │ │ │ ├── __init__.py │ │ │ │ ├── base_video_metric.py │ │ │ │ ├── cityscapes_metric.py │ │ │ │ ├── coco_caption_metric.py │ │ │ │ ├── coco_metric.py │ │ │ │ ├── coco_occluded_metric.py │ │ │ │ ├── coco_panoptic_metric.py │ │ │ │ ├── coco_video_metric.py │ │ │ │ ├── crowdhuman_metric.py │ │ │ │ ├── dod_metric.py │ │ │ │ ├── dump_det_results.py │ │ │ │ ├── dump_odvg_results.py │ │ │ │ ├── dump_proposals_metric.py │ │ │ │ ├── flickr30k_metric.py │ │ │ │ ├── grefcoco_metric.py │ │ │ │ ├── lvis_metric.py │ │ │ │ ├── mot_challenge_metric.py │ │ │ │ ├── openimages_metric.py │ │ │ │ ├── ov_coco_metric.py │ │ │ │ ├── refexp_metric.py │ │ │ │ ├── refseg_metric.py │ │ │ │ ├── reid_metric.py │ │ │ │ ├── semseg_metric.py │ │ │ │ ├── voc_metric.py │ │ │ │ └── youtube_vis_metric.py │ │ ├── models │ │ │ ├── __init__.py │ │ │ ├── backbones │ │ │ │ ├── __init__.py │ │ │ │ ├── csp_darknet.py │ │ │ │ ├── cspnext.py │ │ │ │ ├── darknet.py │ │ │ │ ├── detectors_resnet.py │ │ │ │ ├── detectors_resnext.py │ │ │ │ ├── efficientnet.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 │ │ │ ├── data_preprocessors │ │ │ │ ├── __init__.py │ │ │ │ ├── data_preprocessor.py │ │ │ │ ├── reid_data_preprocessor.py │ │ │ │ └── track_data_preprocessor.py │ │ │ ├── dense_heads │ │ │ │ ├── __init__.py │ │ │ │ ├── anchor_free_head.py │ │ │ │ ├── anchor_head.py │ │ │ │ ├── atss_head.py │ │ │ │ ├── atss_vlfusion_head.py │ │ │ │ ├── autoassign_head.py │ │ │ │ ├── base_dense_head.py │ │ │ │ ├── base_mask_head.py │ │ │ │ ├── boxinst_head.py │ │ │ │ ├── cascade_rpn_head.py │ │ │ │ ├── centernet_head.py │ │ │ │ ├── centernet_update_head.py │ │ │ │ ├── centripetal_head.py │ │ │ │ ├── condinst_head.py │ │ │ │ ├── conditional_detr_head.py │ │ │ │ ├── corner_head.py │ │ │ │ ├── dab_detr_head.py │ │ │ │ ├── ddod_head.py │ │ │ │ ├── ddq_detr_head.py │ │ │ │ ├── deformable_detr_head.py │ │ │ │ ├── dense_test_mixins.py │ │ │ │ ├── detr_head.py │ │ │ │ ├── dino_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 │ │ │ │ ├── grounding_dino_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 │ │ │ │ ├── rtmdet_head.py │ │ │ │ ├── rtmdet_ins_head.py │ │ │ │ ├── sabl_retina_head.py │ │ │ │ ├── solo_head.py │ │ │ │ ├── solov2_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 │ │ │ │ ├── base_detr.py │ │ │ │ ├── boxinst.py │ │ │ │ ├── cascade_rcnn.py │ │ │ │ ├── centernet.py │ │ │ │ ├── condinst.py │ │ │ │ ├── conditional_detr.py │ │ │ │ ├── cornernet.py │ │ │ │ ├── crowddet.py │ │ │ │ ├── d2_wrapper.py │ │ │ │ ├── dab_detr.py │ │ │ │ ├── ddod.py │ │ │ │ ├── ddq_detr.py │ │ │ │ ├── deformable_detr.py │ │ │ │ ├── detr.py │ │ │ │ ├── dino.py │ │ │ │ ├── fast_rcnn.py │ │ │ │ ├── faster_rcnn.py │ │ │ │ ├── fcos.py │ │ │ │ ├── fovea.py │ │ │ │ ├── fsaf.py │ │ │ │ ├── gfl.py │ │ │ │ ├── glip.py │ │ │ │ ├── grid_rcnn.py │ │ │ │ ├── grounding_dino.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 │ │ │ │ ├── rtmdet.py │ │ │ │ ├── scnet.py │ │ │ │ ├── semi_base.py │ │ │ │ ├── single_stage.py │ │ │ │ ├── single_stage_instance_seg.py │ │ │ │ ├── soft_teacher.py │ │ │ │ ├── solo.py │ │ │ │ ├── solov2.py │ │ │ │ ├── sparse_rcnn.py │ │ │ │ ├── tood.py │ │ │ │ ├── trident_faster_rcnn.py │ │ │ │ ├── two_stage.py │ │ │ │ ├── vfnet.py │ │ │ │ ├── yolact.py │ │ │ │ ├── yolo.py │ │ │ │ ├── yolof.py │ │ │ │ └── yolox.py │ │ │ ├── language_models │ │ │ │ ├── __init__.py │ │ │ │ └── bert.py │ │ │ ├── layers │ │ │ │ ├── __init__.py │ │ │ │ ├── activations.py │ │ │ │ ├── bbox_nms.py │ │ │ │ ├── brick_wrappers.py │ │ │ │ ├── conv_upsample.py │ │ │ │ ├── csp_layer.py │ │ │ │ ├── dropblock.py │ │ │ │ ├── ema.py │ │ │ │ ├── inverted_residual.py │ │ │ │ ├── matrix_nms.py │ │ │ │ ├── msdeformattn_pixel_decoder.py │ │ │ │ ├── normed_predictor.py │ │ │ │ ├── pixel_decoder.py │ │ │ │ ├── positional_encoding.py │ │ │ │ ├── res_layer.py │ │ │ │ ├── se_layer.py │ │ │ │ └── transformer │ │ │ │ │ ├── __init__.py │ │ │ │ │ ├── conditional_detr_layers.py │ │ │ │ │ ├── dab_detr_layers.py │ │ │ │ │ ├── ddq_detr_layers.py │ │ │ │ │ ├── deformable_detr_layers.py │ │ │ │ │ ├── detr_layers.py │ │ │ │ │ ├── dino_layers.py │ │ │ │ │ ├── grounding_dino_layers.py │ │ │ │ │ ├── mask2former_layers.py │ │ │ │ │ └── utils.py │ │ │ ├── losses │ │ │ │ ├── __init__.py │ │ │ │ ├── accuracy.py │ │ │ │ ├── ae_loss.py │ │ │ │ ├── balanced_l1_loss.py │ │ │ │ ├── cross_entropy_loss.py │ │ │ │ ├── ddq_detr_aux_loss.py │ │ │ │ ├── dice_loss.py │ │ │ │ ├── eqlv2_loss.py │ │ │ │ ├── focal_loss.py │ │ │ │ ├── gaussian_focal_loss.py │ │ │ │ ├── gfocal_loss.py │ │ │ │ ├── ghm_loss.py │ │ │ │ ├── iou_loss.py │ │ │ │ ├── kd_loss.py │ │ │ │ ├── l2_loss.py │ │ │ │ ├── margin_loss.py │ │ │ │ ├── mse_loss.py │ │ │ │ ├── multipos_cross_entropy_loss.py │ │ │ │ ├── pisa_loss.py │ │ │ │ ├── seesaw_loss.py │ │ │ │ ├── smooth_l1_loss.py │ │ │ │ ├── triplet_loss.py │ │ │ │ ├── utils.py │ │ │ │ └── varifocal_loss.py │ │ │ ├── mot │ │ │ │ ├── __init__.py │ │ │ │ ├── base.py │ │ │ │ ├── bytetrack.py │ │ │ │ ├── deep_sort.py │ │ │ │ ├── ocsort.py │ │ │ │ ├── qdtrack.py │ │ │ │ └── strongsort.py │ │ │ ├── necks │ │ │ │ ├── __init__.py │ │ │ │ ├── bfp.py │ │ │ │ ├── channel_mapper.py │ │ │ │ ├── cspnext_pafpn.py │ │ │ │ ├── ct_resnet_neck.py │ │ │ │ ├── dilated_encoder.py │ │ │ │ ├── dyhead.py │ │ │ │ ├── fpg.py │ │ │ │ ├── fpn.py │ │ │ │ ├── fpn_carafe.py │ │ │ │ ├── fpn_dropblock.py │ │ │ │ ├── hrfpn.py │ │ │ │ ├── nas_fpn.py │ │ │ │ ├── nasfcos_fpn.py │ │ │ │ ├── pafpn.py │ │ │ │ ├── rfp.py │ │ │ │ ├── ssd_neck.py │ │ │ │ ├── ssh.py │ │ │ │ ├── yolo_neck.py │ │ │ │ └── yolox_pafpn.py │ │ │ ├── reid │ │ │ │ ├── __init__.py │ │ │ │ ├── base_reid.py │ │ │ │ ├── fc_module.py │ │ │ │ ├── gap.py │ │ │ │ └── linear_reid_head.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 │ │ │ │ │ ├── multi_instance_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 │ │ │ │ ├── multi_instance_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 │ │ │ ├── task_modules │ │ │ │ ├── __init__.py │ │ │ │ ├── assigners │ │ │ │ │ ├── __init__.py │ │ │ │ │ ├── approx_max_iou_assigner.py │ │ │ │ │ ├── assign_result.py │ │ │ │ │ ├── atss_assigner.py │ │ │ │ │ ├── base_assigner.py │ │ │ │ │ ├── center_region_assigner.py │ │ │ │ │ ├── dynamic_soft_label_assigner.py │ │ │ │ │ ├── grid_assigner.py │ │ │ │ │ ├── hungarian_assigner.py │ │ │ │ │ ├── iou2d_calculator.py │ │ │ │ │ ├── match_cost.py │ │ │ │ │ ├── max_iou_assigner.py │ │ │ │ │ ├── multi_instance_assigner.py │ │ │ │ │ ├── point_assigner.py │ │ │ │ │ ├── region_assigner.py │ │ │ │ │ ├── sim_ota_assigner.py │ │ │ │ │ ├── task_aligned_assigner.py │ │ │ │ │ ├── topk_hungarian_assigner.py │ │ │ │ │ └── uniform_assigner.py │ │ │ │ ├── builder.py │ │ │ │ ├── coders │ │ │ │ │ ├── __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 │ │ │ │ ├── prior_generators │ │ │ │ │ ├── __init__.py │ │ │ │ │ ├── anchor_generator.py │ │ │ │ │ ├── point_generator.py │ │ │ │ │ └── utils.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 │ │ │ │ │ ├── multi_instance_random_sampler.py │ │ │ │ │ ├── multi_instance_sampling_result.py │ │ │ │ │ ├── ohem_sampler.py │ │ │ │ │ ├── pseudo_sampler.py │ │ │ │ │ ├── random_sampler.py │ │ │ │ │ ├── sampling_result.py │ │ │ │ │ └── score_hlr_sampler.py │ │ │ │ └── tracking │ │ │ │ │ ├── __init__.py │ │ │ │ │ ├── aflink.py │ │ │ │ │ ├── camera_motion_compensation.py │ │ │ │ │ ├── interpolation.py │ │ │ │ │ ├── kalman_filter.py │ │ │ │ │ └── similarity.py │ │ │ ├── test_time_augs │ │ │ │ ├── __init__.py │ │ │ │ ├── det_tta.py │ │ │ │ └── merge_augs.py │ │ │ ├── trackers │ │ │ │ ├── __init__.py │ │ │ │ ├── base_tracker.py │ │ │ │ ├── byte_tracker.py │ │ │ │ ├── masktrack_rcnn_tracker.py │ │ │ │ ├── ocsort_tracker.py │ │ │ │ ├── quasi_dense_tracker.py │ │ │ │ ├── sort_tracker.py │ │ │ │ └── strongsort_tracker.py │ │ │ ├── tracking_heads │ │ │ │ ├── __init__.py │ │ │ │ ├── mask2former_track_head.py │ │ │ │ ├── quasi_dense_embed_head.py │ │ │ │ ├── quasi_dense_track_head.py │ │ │ │ ├── roi_embed_head.py │ │ │ │ └── roi_track_head.py │ │ │ ├── utils │ │ │ │ ├── __init__.py │ │ │ │ ├── gaussian_target.py │ │ │ │ ├── image.py │ │ │ │ ├── make_divisible.py │ │ │ │ ├── misc.py │ │ │ │ ├── panoptic_gt_processing.py │ │ │ │ ├── point_sample.py │ │ │ │ ├── vlfuse_helper.py │ │ │ │ └── wbf.py │ │ │ └── vis │ │ │ │ ├── __init__.py │ │ │ │ ├── mask2former_vis.py │ │ │ │ └── masktrack_rcnn.py │ │ ├── registry.py │ │ ├── structures │ │ │ ├── __init__.py │ │ │ ├── bbox │ │ │ │ ├── __init__.py │ │ │ │ ├── base_boxes.py │ │ │ │ ├── bbox_overlaps.py │ │ │ │ ├── box_type.py │ │ │ │ ├── horizontal_boxes.py │ │ │ │ └── transforms.py │ │ │ ├── det_data_sample.py │ │ │ ├── mask │ │ │ │ ├── __init__.py │ │ │ │ ├── mask_target.py │ │ │ │ ├── structures.py │ │ │ │ └── utils.py │ │ │ ├── reid_data_sample.py │ │ │ └── track_data_sample.py │ │ ├── testing │ │ │ ├── __init__.py │ │ │ ├── _fast_stop_training_hook.py │ │ │ └── _utils.py │ │ ├── utils │ │ │ ├── __init__.py │ │ │ ├── benchmark.py │ │ │ ├── collect_env.py │ │ │ ├── compat_config.py │ │ │ ├── contextmanagers.py │ │ │ ├── dist_utils.py │ │ │ ├── large_image.py │ │ │ ├── logger.py │ │ │ ├── memory.py │ │ │ ├── misc.py │ │ │ ├── mot_error_visualize.py │ │ │ ├── profiling.py │ │ │ ├── replace_cfg_vals.py │ │ │ ├── setup_env.py │ │ │ ├── split_batch.py │ │ │ ├── typing_utils.py │ │ │ ├── util_mixins.py │ │ │ └── util_random.py │ │ ├── version.py │ │ └── visualization │ │ │ ├── __init__.py │ │ │ ├── local_visualizer.py │ │ │ └── palette.py │ └── tools │ │ ├── __init__.py │ │ ├── analysis_tools │ │ ├── __init__.py │ │ ├── analyze_logs.py │ │ ├── analyze_results.py │ │ ├── benchmark.py │ │ ├── browse_dataset.py │ │ ├── browse_grounding_dataset.py │ │ ├── browse_grounding_raw.py │ │ ├── coco_error_analysis.py │ │ ├── coco_occluded_separated_recall.py │ │ ├── confusion_matrix.py │ │ ├── eval_metric.py │ │ ├── fuse_results.py │ │ ├── get_flops.py │ │ ├── mot │ │ │ ├── __init__.py │ │ │ ├── browse_dataset.py │ │ │ ├── dist_mot_search.sh │ │ │ ├── mot_error_visualize.py │ │ │ ├── mot_param_search.py │ │ │ └── slurm_mot_search.sh │ │ ├── optimize_anchors.py │ │ ├── robustness_eval.py │ │ └── test_robustness.py │ │ ├── dataset_converters │ │ ├── __init__.py │ │ ├── ade20k2coco.py │ │ ├── cityscapes.py │ │ ├── coco2odvg.py │ │ ├── coco2ovd.py │ │ ├── coco_stuff164k.py │ │ ├── crowdhuman2coco.py │ │ ├── extract_coco_from_mixed.py │ │ ├── fix_o365_names.py │ │ ├── goldg2odvg.py │ │ ├── grit2odvg.py │ │ ├── grit_processing.py │ │ ├── images2coco.py │ │ ├── lvis2odvg.py │ │ ├── lvis2ovd.py │ │ ├── mot2coco.py │ │ ├── mot2reid.py │ │ ├── openimages2odvg.py │ │ ├── pascal_voc.py │ │ ├── prepare_coco_semantic_annos_from_panoptic_annos.py │ │ ├── refcoco2odvg.py │ │ ├── remove_cocotrain2017_from_refcoco.py │ │ ├── scripts │ │ │ ├── preprocess_coco2017.sh │ │ │ ├── preprocess_voc2007.sh │ │ │ └── preprocess_voc2012.sh │ │ ├── youtubevis2coco.py │ │ └── zhiyuan_objv2_train_names_fix.csv │ │ ├── deployment │ │ ├── __init__.py │ │ ├── mmdet2torchserve.py │ │ ├── mmdet_handler.py │ │ └── test_torchserver.py │ │ ├── dist_test.sh │ │ ├── dist_test_tracking.sh │ │ ├── dist_train.sh │ │ ├── get_flops.py │ │ ├── misc │ │ ├── __init__.py │ │ ├── download_dataset.py │ │ ├── gen_coco_panoptic_test_info.py │ │ ├── get_crowdhuman_id_hw.py │ │ ├── get_image_metas.py │ │ ├── print_config.py │ │ ├── split_coco.py │ │ └── split_odvg.py │ │ ├── model_converters │ │ ├── __init__.py │ │ ├── detectron2_to_mmdet.py │ │ ├── detectron2pytorch.py │ │ ├── detic_to_mmdet.py │ │ ├── glip_to_mmdet.py │ │ ├── groundingdino_to_mmdet.py │ │ ├── publish_model.py │ │ ├── regnet2mmdet.py │ │ ├── selfsup2mmdet.py │ │ ├── swinv1_to_mmdet.py │ │ ├── upgrade_model_version.py │ │ └── upgrade_ssd_version.py │ │ ├── slurm_test.sh │ │ ├── slurm_test_tracking.sh │ │ ├── slurm_train.sh │ │ ├── test.py │ │ ├── test_tracking.py │ │ └── train.py └── seg │ ├── .DS_Store │ ├── backbones │ ├── __init__.py │ ├── basic_modules.py │ ├── lib_mamba │ │ ├── __init__.py │ │ ├── csm_triton.py │ │ ├── csm_tritonk2.py │ │ ├── csms6s.py │ │ ├── kernels │ │ │ └── selective_scan │ │ │ │ ├── README.md │ │ │ │ ├── csrc │ │ │ │ └── selective_scan │ │ │ │ │ ├── cub_extra.cuh │ │ │ │ │ ├── cus │ │ │ │ │ ├── selective_scan.cpp │ │ │ │ │ ├── selective_scan_bwd_kernel.cuh │ │ │ │ │ ├── selective_scan_core_bwd.cu │ │ │ │ │ ├── selective_scan_core_fwd.cu │ │ │ │ │ └── selective_scan_fwd_kernel.cuh │ │ │ │ │ ├── cusndstate │ │ │ │ │ ├── selective_scan_bwd_kernel_ndstate.cuh │ │ │ │ │ ├── selective_scan_core_bwd.cu │ │ │ │ │ ├── selective_scan_core_fwd.cu │ │ │ │ │ ├── selective_scan_fwd_kernel_ndstate.cuh │ │ │ │ │ ├── selective_scan_ndstate.cpp │ │ │ │ │ └── selective_scan_ndstate.h │ │ │ │ │ ├── cusnrow │ │ │ │ │ ├── selective_scan_bwd_kernel_nrow.cuh │ │ │ │ │ ├── selective_scan_core_bwd.cu │ │ │ │ │ ├── selective_scan_core_bwd2.cu │ │ │ │ │ ├── selective_scan_core_bwd3.cu │ │ │ │ │ ├── selective_scan_core_bwd4.cu │ │ │ │ │ ├── selective_scan_core_fwd.cu │ │ │ │ │ ├── selective_scan_core_fwd2.cu │ │ │ │ │ ├── selective_scan_core_fwd3.cu │ │ │ │ │ ├── selective_scan_core_fwd4.cu │ │ │ │ │ ├── selective_scan_fwd_kernel_nrow.cuh │ │ │ │ │ └── selective_scan_nrow.cpp │ │ │ │ │ ├── cusoflex │ │ │ │ │ ├── selective_scan_bwd_kernel_oflex.cuh │ │ │ │ │ ├── selective_scan_core_bwd.cu │ │ │ │ │ ├── selective_scan_core_fwd.cu │ │ │ │ │ ├── selective_scan_fwd_kernel_oflex.cuh │ │ │ │ │ └── selective_scan_oflex.cpp │ │ │ │ │ ├── reverse_scan.cuh │ │ │ │ │ ├── selective_scan.h │ │ │ │ │ ├── selective_scan_common.h │ │ │ │ │ ├── static_switch.h │ │ │ │ │ └── uninitialized_copy.cuh │ │ │ │ ├── setup.py │ │ │ │ ├── test_selective_scan.py │ │ │ │ ├── test_selective_scan_easy.py │ │ │ │ └── test_selective_scan_speed.py │ │ ├── vmamba.py │ │ └── vmambanew.py │ └── mobilemamba.py │ ├── configs │ ├── .DS_Store │ ├── _base_ │ │ ├── datasets │ │ │ ├── ade20k.py │ │ │ ├── ade20k_640x640.py │ │ │ ├── bdd100k.py │ │ │ ├── chase_db1.py │ │ │ ├── cityscapes.py │ │ │ ├── cityscapes_1024x1024.py │ │ │ ├── cityscapes_768x768.py │ │ │ ├── cityscapes_769x769.py │ │ │ ├── cityscapes_832x832.py │ │ │ ├── coco-stuff10k.py │ │ │ ├── coco-stuff164k.py │ │ │ ├── drive.py │ │ │ ├── hrf.py │ │ │ ├── hsi_drive.py │ │ │ ├── isaid.py │ │ │ ├── levir_256x256.py │ │ │ ├── loveda.py │ │ │ ├── mapillary_v1.py │ │ │ ├── mapillary_v1_65.py │ │ │ ├── mapillary_v2.py │ │ │ ├── nyu.py │ │ │ ├── nyu_512x512.py │ │ │ ├── pascal_context.py │ │ │ ├── pascal_context_59.py │ │ │ ├── pascal_voc12.py │ │ │ ├── pascal_voc12_aug.py │ │ │ ├── potsdam.py │ │ │ ├── refuge.py │ │ │ ├── stare.py │ │ │ ├── synapse.py │ │ │ └── vaihingen.py │ │ ├── default_runtime.py │ │ ├── models │ │ │ ├── ann_r50-d8.py │ │ │ ├── apcnet_r50-d8.py │ │ │ ├── bisenetv1_r18-d32.py │ │ │ ├── bisenetv2.py │ │ │ ├── ccnet_r50-d8.py │ │ │ ├── cgnet.py │ │ │ ├── danet_r50-d8.py │ │ │ ├── deeplabv3_r50-d8.py │ │ │ ├── deeplabv3_unet_s5-d16.py │ │ │ ├── deeplabv3plus_r50-d8.py │ │ │ ├── dmnet_r50-d8.py │ │ │ ├── dnl_r50-d8.py │ │ │ ├── dpt_vit-b16.py │ │ │ ├── emanet_r50-d8.py │ │ │ ├── encnet_r50-d8.py │ │ │ ├── erfnet_fcn.py │ │ │ ├── fast_scnn.py │ │ │ ├── fastfcn_r50-d32_jpu_psp.py │ │ │ ├── fcn_hr18.py │ │ │ ├── fcn_r50-d8.py │ │ │ ├── fcn_unet_s5-d16.py │ │ │ ├── fpn_poolformer_s12.py │ │ │ ├── fpn_r50.py │ │ │ ├── gcnet_r50-d8.py │ │ │ ├── icnet_r50-d8.py │ │ │ ├── isanet_r50-d8.py │ │ │ ├── lraspp_m-v3-d8.py │ │ │ ├── nonlocal_r50-d8.py │ │ │ ├── ocrnet_hr18.py │ │ │ ├── ocrnet_r50-d8.py │ │ │ ├── pointrend_r50.py │ │ │ ├── psanet_r50-d8.py │ │ │ ├── pspnet_r50-d8.py │ │ │ ├── pspnet_unet_s5-d16.py │ │ │ ├── san_vit-b16.py │ │ │ ├── segformer_mit-b0.py │ │ │ ├── segmenter_vit-b16_mask.py │ │ │ ├── setr_mla.py │ │ │ ├── setr_naive.py │ │ │ ├── setr_pup.py │ │ │ ├── stdc.py │ │ │ ├── twins_pcpvt-s_fpn.py │ │ │ ├── twins_pcpvt-s_upernet.py │ │ │ ├── upernet_beit.py │ │ │ ├── upernet_convnext.py │ │ │ ├── upernet_mae.py │ │ │ ├── upernet_r50.py │ │ │ ├── upernet_swin.py │ │ │ ├── upernet_vit-b16_ln_mln.py │ │ │ └── vpd_sd.py │ │ └── schedules │ │ │ ├── schedule_160k.py │ │ │ ├── schedule_20k.py │ │ │ ├── schedule_240k.py │ │ │ ├── schedule_25k.py │ │ │ ├── schedule_320k.py │ │ │ ├── schedule_40k.py │ │ │ └── schedule_80k.py │ ├── deeplabv3 │ │ └── deeplabv3_mobilemamba_b4-80k_ade20k-512x512.py │ ├── pspnet │ │ └── pspnet_mobilemamba_b4-80k_ade20k-512x512.py │ └── sem_fpn │ │ └── fpn_mobilemamba_b4-160k_ade20k-512x512.py │ └── tools │ ├── .DS_Store │ ├── analysis_tools │ ├── analyze_logs.py │ ├── benchmark.py │ ├── browse_dataset.py │ ├── confusion_matrix.py │ ├── get_flops.py │ └── visualization_cam.py │ ├── dataset_converters │ ├── chase_db1.py │ ├── cityscapes.py │ ├── coco_stuff10k.py │ ├── coco_stuff164k.py │ ├── drive.py │ ├── hrf.py │ ├── isaid.py │ ├── levircd.py │ ├── loveda.py │ ├── nyu.py │ ├── pascal_context.py │ ├── potsdam.py │ ├── refuge.py │ ├── stare.py │ ├── synapse.py │ ├── vaihingen.py │ └── voc_aug.py │ ├── deployment │ └── pytorch2torchscript.py │ ├── dist_test.sh │ ├── dist_train.sh │ ├── misc │ ├── browse_dataset.py │ ├── print_config.py │ └── publish_model.py │ ├── model_converters │ ├── beit2mmseg.py │ ├── clip2mmseg.py │ ├── mit2mmseg.py │ ├── san2mmseg.py │ ├── stdc2mmseg.py │ ├── swin2mmseg.py │ ├── twins2mmseg.py │ ├── vit2mmseg.py │ └── vitjax2mmseg.py │ ├── slurm_test.sh │ ├── slurm_train.sh │ ├── test.py │ ├── torchserve │ ├── mmseg2torchserve.py │ ├── mmseg_handler.py │ └── test_torchserve.py │ └── train.py ├── loss ├── __init__.py ├── base_loss.py ├── cls_loss.py └── gan_loss.py ├── model ├── .DS_Store ├── __init__.py ├── cls_factory.py ├── lib_mamba │ ├── __init__.py │ ├── csm_triton.py │ ├── csm_tritonk2.py │ ├── csms6s.py │ ├── kernels │ │ └── selective_scan │ │ │ ├── README.md │ │ │ ├── csrc │ │ │ └── selective_scan │ │ │ │ ├── cub_extra.cuh │ │ │ │ ├── cus │ │ │ │ ├── selective_scan.cpp │ │ │ │ ├── selective_scan_bwd_kernel.cuh │ │ │ │ ├── selective_scan_core_bwd.cu │ │ │ │ ├── selective_scan_core_fwd.cu │ │ │ │ └── selective_scan_fwd_kernel.cuh │ │ │ │ ├── cusndstate │ │ │ │ ├── selective_scan_bwd_kernel_ndstate.cuh │ │ │ │ ├── selective_scan_core_bwd.cu │ │ │ │ ├── selective_scan_core_fwd.cu │ │ │ │ ├── selective_scan_fwd_kernel_ndstate.cuh │ │ │ │ ├── selective_scan_ndstate.cpp │ │ │ │ └── selective_scan_ndstate.h │ │ │ │ ├── cusnrow │ │ │ │ ├── selective_scan_bwd_kernel_nrow.cuh │ │ │ │ ├── selective_scan_core_bwd.cu │ │ │ │ ├── selective_scan_core_bwd2.cu │ │ │ │ ├── selective_scan_core_bwd3.cu │ │ │ │ ├── selective_scan_core_bwd4.cu │ │ │ │ ├── selective_scan_core_fwd.cu │ │ │ │ ├── selective_scan_core_fwd2.cu │ │ │ │ ├── selective_scan_core_fwd3.cu │ │ │ │ ├── selective_scan_core_fwd4.cu │ │ │ │ ├── selective_scan_fwd_kernel_nrow.cuh │ │ │ │ └── selective_scan_nrow.cpp │ │ │ │ ├── cusoflex │ │ │ │ ├── selective_scan_bwd_kernel_oflex.cuh │ │ │ │ ├── selective_scan_core_bwd.cu │ │ │ │ ├── selective_scan_core_fwd.cu │ │ │ │ ├── selective_scan_fwd_kernel_oflex.cuh │ │ │ │ └── selective_scan_oflex.cpp │ │ │ │ ├── reverse_scan.cuh │ │ │ │ ├── selective_scan.h │ │ │ │ ├── selective_scan_common.h │ │ │ │ ├── static_switch.h │ │ │ │ └── uninitialized_copy.cuh │ │ │ ├── setup.py │ │ │ ├── test_selective_scan.py │ │ │ ├── test_selective_scan_easy.py │ │ │ └── test_selective_scan_speed.py │ ├── vmamba.py │ └── vmambanew.py ├── lib_teacher │ ├── __init__.py │ └── tresnet_v2.py └── mobilemamba │ ├── basic_modules.py │ └── mobilemamba.py ├── optim ├── __init__.py └── scheduler.py ├── run.py ├── trainer ├── __init__.py ├── _base_trainer.py └── cls.py ├── util ├── __init__.py ├── data.py ├── net.py ├── registry.py └── util.py └── weights ├── MobileMamba_B1 └── mobilemamba_b1.txt ├── MobileMamba_B1s └── mobilemamba_b1s.txt ├── MobileMamba_B2 └── mobilemamba_b2.txt ├── MobileMamba_B2s └── mobilemamba_b2s.txt ├── MobileMamba_B4 └── mobilemamba_b4.txt ├── MobileMamba_B4s └── mobilemamba_b4s.txt ├── MobileMamba_S6 └── mobilemamba_s6.txt ├── MobileMamba_S6s └── mobilemamba_s6s.txt ├── MobileMamba_T2 └── mobilemamba_t2.txt ├── MobileMamba_T2s └── mobilemamba_t2s.txt ├── MobileMamba_T4 └── mobilemamba_t4.txt ├── MobileMamba_T4s └── mobilemamba_t4s.txt └── downstream ├── det ├── maskrcnn.log ├── retinanet.log ├── ssdlite.log └── ssdlite_512.log └── seg ├── deeplabv3.log ├── fpn.log └── pspnet.log /.idea/MobileMamba.iml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 7 | 8 | 10 | -------------------------------------------------------------------------------- /.idea/inspectionProfiles/profiles_settings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 6 | -------------------------------------------------------------------------------- /.idea/misc.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /.idea/vcs.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2024 lewandofskee 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /assets/comparewithmamba.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lewandofskee/MobileMamba/0980f48a23d232e0f2e86e740eccab038c8fd760/assets/comparewithmamba.png -------------------------------------------------------------------------------- /assets/logo_512.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lewandofskee/MobileMamba/0980f48a23d232e0f2e86e740eccab038c8fd760/assets/logo_512.png -------------------------------------------------------------------------------- /assets/mobilemamba.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lewandofskee/MobileMamba/0980f48a23d232e0f2e86e740eccab038c8fd760/assets/mobilemamba.png -------------------------------------------------------------------------------- /assets/mobilemamba_logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lewandofskee/MobileMamba/0980f48a23d232e0f2e86e740eccab038c8fd760/assets/mobilemamba_logo.png -------------------------------------------------------------------------------- /assets/motivation.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lewandofskee/MobileMamba/0980f48a23d232e0f2e86e740eccab038c8fd760/assets/motivation.png -------------------------------------------------------------------------------- /configs/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lewandofskee/MobileMamba/0980f48a23d232e0f2e86e740eccab038c8fd760/configs/.DS_Store -------------------------------------------------------------------------------- /configs/cls_big_21k.py: -------------------------------------------------------------------------------- 1 | from argparse import Namespace as _Namespace 2 | 3 | # =========> dataset <================================= 4 | data = _Namespace() 5 | data.nb_classes = 10450 6 | 7 | # =========> trainer <================================= 8 | trainer = _Namespace() 9 | trainer.epoch_full = 90 10 | trainer.test_start_epoch = 80 11 | trainer.test_per_epoch = 5 12 | -------------------------------------------------------------------------------- /data/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lewandofskee/MobileMamba/0980f48a23d232e0f2e86e740eccab038c8fd760/data/.DS_Store -------------------------------------------------------------------------------- /downstream/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lewandofskee/MobileMamba/0980f48a23d232e0f2e86e740eccab038c8fd760/downstream/__init__.py -------------------------------------------------------------------------------- /downstream/det/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lewandofskee/MobileMamba/0980f48a23d232e0f2e86e740eccab038c8fd760/downstream/det/.DS_Store -------------------------------------------------------------------------------- /downstream/det/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lewandofskee/MobileMamba/0980f48a23d232e0f2e86e740eccab038c8fd760/downstream/det/__init__.py -------------------------------------------------------------------------------- /downstream/det/backbones/__init__.py: -------------------------------------------------------------------------------- 1 | from .mobilemamba import MobileMamba 2 | from .efficientvit_fpn import EfficientViTFPN -------------------------------------------------------------------------------- /downstream/det/backbones/lib_mamba/kernels/selective_scan/csrc/selective_scan/cus/selective_scan_core_bwd.cu: -------------------------------------------------------------------------------- 1 | /****************************************************************************** 2 | * Copyright (c) 2023, Tri Dao. 3 | ******************************************************************************/ 4 | #include "selective_scan_bwd_kernel.cuh" 5 | 6 | template void selective_scan_bwd_cuda<1, float, float>(SSMParamsBwd ¶ms, cudaStream_t stream); 7 | template void selective_scan_bwd_cuda<1, at::Half, float>(SSMParamsBwd ¶ms, cudaStream_t stream); 8 | template void selective_scan_bwd_cuda<1, at::BFloat16, float>(SSMParamsBwd ¶ms, cudaStream_t stream); 9 | 10 | -------------------------------------------------------------------------------- /downstream/det/backbones/lib_mamba/kernels/selective_scan/csrc/selective_scan/cus/selective_scan_core_fwd.cu: -------------------------------------------------------------------------------- 1 | /****************************************************************************** 2 | * Copyright (c) 2023, Tri Dao. 3 | ******************************************************************************/ 4 | #include "selective_scan_fwd_kernel.cuh" 5 | 6 | template void selective_scan_fwd_cuda<1, float, float>(SSMParamsBase ¶ms, cudaStream_t stream); 7 | template void selective_scan_fwd_cuda<1, at::Half, float>(SSMParamsBase ¶ms, cudaStream_t stream); 8 | template void selective_scan_fwd_cuda<1, at::BFloat16, float>(SSMParamsBase ¶ms, cudaStream_t stream); 9 | 10 | -------------------------------------------------------------------------------- /downstream/det/backbones/lib_mamba/kernels/selective_scan/csrc/selective_scan/cusndstate/selective_scan_core_bwd.cu: -------------------------------------------------------------------------------- 1 | /****************************************************************************** 2 | * Copyright (c) 2023, Tri Dao. 3 | ******************************************************************************/ 4 | #include "selective_scan_bwd_kernel_ndstate.cuh" 5 | 6 | template void selective_scan_bwd_cuda<1, float, float>(SSMParamsBwd ¶ms, cudaStream_t stream); 7 | template void selective_scan_bwd_cuda<1, at::Half, float>(SSMParamsBwd ¶ms, cudaStream_t stream); 8 | template void selective_scan_bwd_cuda<1, at::BFloat16, float>(SSMParamsBwd ¶ms, cudaStream_t stream); 9 | 10 | -------------------------------------------------------------------------------- /downstream/det/backbones/lib_mamba/kernels/selective_scan/csrc/selective_scan/cusndstate/selective_scan_core_fwd.cu: -------------------------------------------------------------------------------- 1 | /****************************************************************************** 2 | * Copyright (c) 2023, Tri Dao. 3 | ******************************************************************************/ 4 | #include "selective_scan_fwd_kernel_ndstate.cuh" 5 | 6 | template void selective_scan_fwd_cuda<1, float, float>(SSMParamsBase ¶ms, cudaStream_t stream); 7 | template void selective_scan_fwd_cuda<1, at::Half, float>(SSMParamsBase ¶ms, cudaStream_t stream); 8 | template void selective_scan_fwd_cuda<1, at::BFloat16, float>(SSMParamsBase ¶ms, cudaStream_t stream); 9 | 10 | -------------------------------------------------------------------------------- /downstream/det/backbones/lib_mamba/kernels/selective_scan/csrc/selective_scan/cusnrow/selective_scan_core_bwd.cu: -------------------------------------------------------------------------------- 1 | /****************************************************************************** 2 | * Copyright (c) 2023, Tri Dao. 3 | ******************************************************************************/ 4 | #include "selective_scan_bwd_kernel_nrow.cuh" 5 | 6 | template void selective_scan_bwd_cuda<1, float, float>(SSMParamsBwd ¶ms, cudaStream_t stream); 7 | template void selective_scan_bwd_cuda<1, at::Half, float>(SSMParamsBwd ¶ms, cudaStream_t stream); 8 | template void selective_scan_bwd_cuda<1, at::BFloat16, float>(SSMParamsBwd ¶ms, cudaStream_t stream); 9 | 10 | -------------------------------------------------------------------------------- /downstream/det/backbones/lib_mamba/kernels/selective_scan/csrc/selective_scan/cusnrow/selective_scan_core_bwd2.cu: -------------------------------------------------------------------------------- 1 | /****************************************************************************** 2 | * Copyright (c) 2023, Tri Dao. 3 | ******************************************************************************/ 4 | #include "selective_scan_bwd_kernel_nrow.cuh" 5 | 6 | template void selective_scan_bwd_cuda<2, float, float>(SSMParamsBwd ¶ms, cudaStream_t stream); 7 | template void selective_scan_bwd_cuda<2, at::Half, float>(SSMParamsBwd ¶ms, cudaStream_t stream); 8 | template void selective_scan_bwd_cuda<2, at::BFloat16, float>(SSMParamsBwd ¶ms, cudaStream_t stream); 9 | 10 | -------------------------------------------------------------------------------- /downstream/det/backbones/lib_mamba/kernels/selective_scan/csrc/selective_scan/cusnrow/selective_scan_core_bwd3.cu: -------------------------------------------------------------------------------- 1 | /****************************************************************************** 2 | * Copyright (c) 2023, Tri Dao. 3 | ******************************************************************************/ 4 | #include "selective_scan_bwd_kernel_nrow.cuh" 5 | 6 | template void selective_scan_bwd_cuda<3, float, float>(SSMParamsBwd ¶ms, cudaStream_t stream); 7 | template void selective_scan_bwd_cuda<3, at::Half, float>(SSMParamsBwd ¶ms, cudaStream_t stream); 8 | template void selective_scan_bwd_cuda<3, at::BFloat16, float>(SSMParamsBwd ¶ms, cudaStream_t stream); 9 | -------------------------------------------------------------------------------- /downstream/det/backbones/lib_mamba/kernels/selective_scan/csrc/selective_scan/cusnrow/selective_scan_core_bwd4.cu: -------------------------------------------------------------------------------- 1 | /****************************************************************************** 2 | * Copyright (c) 2023, Tri Dao. 3 | ******************************************************************************/ 4 | #include "selective_scan_bwd_kernel_nrow.cuh" 5 | 6 | template void selective_scan_bwd_cuda<4, float, float>(SSMParamsBwd ¶ms, cudaStream_t stream); 7 | template void selective_scan_bwd_cuda<4, at::Half, float>(SSMParamsBwd ¶ms, cudaStream_t stream); 8 | template void selective_scan_bwd_cuda<4, at::BFloat16, float>(SSMParamsBwd ¶ms, cudaStream_t stream); 9 | -------------------------------------------------------------------------------- /downstream/det/backbones/lib_mamba/kernels/selective_scan/csrc/selective_scan/cusnrow/selective_scan_core_fwd.cu: -------------------------------------------------------------------------------- 1 | /****************************************************************************** 2 | * Copyright (c) 2023, Tri Dao. 3 | ******************************************************************************/ 4 | #include "selective_scan_fwd_kernel_nrow.cuh" 5 | 6 | template void selective_scan_fwd_cuda<1, float, float>(SSMParamsBase ¶ms, cudaStream_t stream); 7 | template void selective_scan_fwd_cuda<1, at::Half, float>(SSMParamsBase ¶ms, cudaStream_t stream); 8 | template void selective_scan_fwd_cuda<1, at::BFloat16, float>(SSMParamsBase ¶ms, cudaStream_t stream); 9 | 10 | -------------------------------------------------------------------------------- /downstream/det/backbones/lib_mamba/kernels/selective_scan/csrc/selective_scan/cusnrow/selective_scan_core_fwd2.cu: -------------------------------------------------------------------------------- 1 | /****************************************************************************** 2 | * Copyright (c) 2023, Tri Dao. 3 | ******************************************************************************/ 4 | #include "selective_scan_fwd_kernel_nrow.cuh" 5 | 6 | template void selective_scan_fwd_cuda<2, float, float>(SSMParamsBase ¶ms, cudaStream_t stream); 7 | template void selective_scan_fwd_cuda<2, at::Half, float>(SSMParamsBase ¶ms, cudaStream_t stream); 8 | template void selective_scan_fwd_cuda<2, at::BFloat16, float>(SSMParamsBase ¶ms, cudaStream_t stream); 9 | 10 | -------------------------------------------------------------------------------- /downstream/det/backbones/lib_mamba/kernels/selective_scan/csrc/selective_scan/cusnrow/selective_scan_core_fwd3.cu: -------------------------------------------------------------------------------- 1 | /****************************************************************************** 2 | * Copyright (c) 2023, Tri Dao. 3 | ******************************************************************************/ 4 | #include "selective_scan_fwd_kernel_nrow.cuh" 5 | 6 | template void selective_scan_fwd_cuda<3, float, float>(SSMParamsBase ¶ms, cudaStream_t stream); 7 | template void selective_scan_fwd_cuda<3, at::Half, float>(SSMParamsBase ¶ms, cudaStream_t stream); 8 | template void selective_scan_fwd_cuda<3, at::BFloat16, float>(SSMParamsBase ¶ms, cudaStream_t stream); 9 | 10 | -------------------------------------------------------------------------------- /downstream/det/backbones/lib_mamba/kernels/selective_scan/csrc/selective_scan/cusnrow/selective_scan_core_fwd4.cu: -------------------------------------------------------------------------------- 1 | /****************************************************************************** 2 | * Copyright (c) 2023, Tri Dao. 3 | ******************************************************************************/ 4 | #include "selective_scan_fwd_kernel_nrow.cuh" 5 | 6 | template void selective_scan_fwd_cuda<4, float, float>(SSMParamsBase ¶ms, cudaStream_t stream); 7 | template void selective_scan_fwd_cuda<4, at::Half, float>(SSMParamsBase ¶ms, cudaStream_t stream); 8 | template void selective_scan_fwd_cuda<4, at::BFloat16, float>(SSMParamsBase ¶ms, cudaStream_t stream); 9 | 10 | -------------------------------------------------------------------------------- /downstream/det/backbones/lib_mamba/kernels/selective_scan/csrc/selective_scan/cusoflex/selective_scan_core_bwd.cu: -------------------------------------------------------------------------------- 1 | /****************************************************************************** 2 | * Copyright (c) 2023, Tri Dao. 3 | ******************************************************************************/ 4 | #include "selective_scan_bwd_kernel_oflex.cuh" 5 | 6 | template void selective_scan_bwd_cuda<1, float, float, float>(SSMParamsBwd ¶ms, cudaStream_t stream); 7 | template void selective_scan_bwd_cuda<1, at::Half, float, float>(SSMParamsBwd ¶ms, cudaStream_t stream); 8 | template void selective_scan_bwd_cuda<1, at::BFloat16, float, float>(SSMParamsBwd ¶ms, cudaStream_t stream); 9 | template void selective_scan_bwd_cuda<1, at::Half, float, at::Half>(SSMParamsBwd ¶ms, cudaStream_t stream); 10 | template void selective_scan_bwd_cuda<1, at::BFloat16, float, at::BFloat16>(SSMParamsBwd ¶ms, cudaStream_t stream); 11 | 12 | -------------------------------------------------------------------------------- /downstream/det/backbones/lib_mamba/kernels/selective_scan/csrc/selective_scan/cusoflex/selective_scan_core_fwd.cu: -------------------------------------------------------------------------------- 1 | /****************************************************************************** 2 | * Copyright (c) 2023, Tri Dao. 3 | ******************************************************************************/ 4 | #include "selective_scan_fwd_kernel_oflex.cuh" 5 | 6 | template void selective_scan_fwd_cuda<1, float, float, float>(SSMParamsBase ¶ms, cudaStream_t stream); 7 | template void selective_scan_fwd_cuda<1, at::Half, float, float>(SSMParamsBase ¶ms, cudaStream_t stream); 8 | template void selective_scan_fwd_cuda<1, at::BFloat16, float, float>(SSMParamsBase ¶ms, cudaStream_t stream); 9 | template void selective_scan_fwd_cuda<1, at::Half, float, at::Half>(SSMParamsBase ¶ms, cudaStream_t stream); 10 | template void selective_scan_fwd_cuda<1, at::BFloat16, float, at::BFloat16>(SSMParamsBase ¶ms, cudaStream_t stream); 11 | 12 | -------------------------------------------------------------------------------- /downstream/det/backbones/lib_mamba/kernels/selective_scan/csrc/selective_scan/static_switch.h: -------------------------------------------------------------------------------- 1 | // Inspired by https://github.com/NVIDIA/DALI/blob/main/include/dali/core/static_switch.h 2 | // and https://github.com/pytorch/pytorch/blob/master/aten/src/ATen/Dispatch.h 3 | 4 | #pragma once 5 | 6 | /// @param COND - a boolean expression to switch by 7 | /// @param CONST_NAME - a name given for the constexpr bool variable. 8 | /// @param ... - code to execute for true and false 9 | /// 10 | /// Usage: 11 | /// ``` 12 | /// BOOL_SWITCH(flag, BoolConst, [&] { 13 | /// some_function(...); 14 | /// }); 15 | /// ``` 16 | #define BOOL_SWITCH(COND, CONST_NAME, ...) \ 17 | [&] { \ 18 | if (COND) { \ 19 | constexpr bool CONST_NAME = true; \ 20 | return __VA_ARGS__(); \ 21 | } else { \ 22 | constexpr bool CONST_NAME = false; \ 23 | return __VA_ARGS__(); \ 24 | } \ 25 | }() 26 | -------------------------------------------------------------------------------- /downstream/det/configs/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lewandofskee/MobileMamba/0980f48a23d232e0f2e86e740eccab038c8fd760/downstream/det/configs/.DS_Store -------------------------------------------------------------------------------- /downstream/det/configs/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lewandofskee/MobileMamba/0980f48a23d232e0f2e86e740eccab038c8fd760/downstream/det/configs/__init__.py -------------------------------------------------------------------------------- /downstream/det/configs/_base_/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lewandofskee/MobileMamba/0980f48a23d232e0f2e86e740eccab038c8fd760/downstream/det/configs/_base_/__init__.py -------------------------------------------------------------------------------- /downstream/det/configs/_base_/datasets/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lewandofskee/MobileMamba/0980f48a23d232e0f2e86e740eccab038c8fd760/downstream/det/configs/_base_/datasets/__init__.py -------------------------------------------------------------------------------- /downstream/det/configs/_base_/datasets/ade20k_panoptic.py: -------------------------------------------------------------------------------- 1 | # dataset settings 2 | dataset_type = 'ADE20KPanopticDataset' 3 | data_root = 'data/ADEChallengeData2016/' 4 | 5 | backend_args = None 6 | 7 | test_pipeline = [ 8 | dict(type='LoadImageFromFile', backend_args=backend_args), 9 | dict(type='Resize', scale=(2560, 640), keep_ratio=True), 10 | dict(type='LoadPanopticAnnotations', backend_args=backend_args), 11 | dict( 12 | type='PackDetInputs', 13 | meta_keys=('img_id', 'img_path', 'ori_shape', 'img_shape', 14 | 'scale_factor')) 15 | ] 16 | 17 | val_dataloader = dict( 18 | batch_size=1, 19 | num_workers=0, 20 | persistent_workers=False, 21 | drop_last=False, 22 | sampler=dict(type='DefaultSampler', shuffle=False), 23 | dataset=dict( 24 | type=dataset_type, 25 | data_root=data_root, 26 | ann_file='ade20k_panoptic_val.json', 27 | data_prefix=dict(img='images/validation/', seg='ade20k_panoptic_val/'), 28 | test_mode=True, 29 | pipeline=test_pipeline, 30 | backend_args=backend_args)) 31 | test_dataloader = val_dataloader 32 | 33 | val_evaluator = dict( 34 | type='CocoPanopticMetric', 35 | ann_file=data_root + 'ade20k_panoptic_val.json', 36 | seg_prefix=data_root + 'ade20k_panoptic_val/', 37 | backend_args=backend_args) 38 | test_evaluator = val_evaluator 39 | -------------------------------------------------------------------------------- /downstream/det/configs/_base_/datasets/lvis_v1_instance.py: -------------------------------------------------------------------------------- 1 | # dataset settings 2 | _base_ = 'lvis_v0.5_instance.py' 3 | dataset_type = 'LVISV1Dataset' 4 | data_root = 'data/lvis_v1/' 5 | 6 | train_dataloader = dict( 7 | dataset=dict( 8 | dataset=dict( 9 | type=dataset_type, 10 | data_root=data_root, 11 | ann_file='annotations/lvis_v1_train.json', 12 | data_prefix=dict(img='')))) 13 | val_dataloader = dict( 14 | dataset=dict( 15 | type=dataset_type, 16 | data_root=data_root, 17 | ann_file='annotations/lvis_v1_val.json', 18 | data_prefix=dict(img=''))) 19 | test_dataloader = val_dataloader 20 | 21 | val_evaluator = dict(ann_file=data_root + 'annotations/lvis_v1_val.json') 22 | test_evaluator = val_evaluator 23 | -------------------------------------------------------------------------------- /downstream/det/configs/_base_/default_runtime.py: -------------------------------------------------------------------------------- 1 | default_scope = 'mmdet' 2 | 3 | default_hooks = dict( 4 | timer=dict(type='IterTimerHook'), 5 | logger=dict(type='LoggerHook', interval=50), 6 | param_scheduler=dict(type='ParamSchedulerHook'), 7 | checkpoint=dict(type='CheckpointHook', interval=1), 8 | sampler_seed=dict(type='DistSamplerSeedHook'), 9 | visualization=dict(type='DetVisualizationHook')) 10 | 11 | env_cfg = dict( 12 | cudnn_benchmark=False, 13 | mp_cfg=dict(mp_start_method='fork', opencv_num_threads=0), 14 | dist_cfg=dict(backend='nccl'), 15 | ) 16 | 17 | vis_backends = [dict(type='LocalVisBackend')] 18 | visualizer = dict( 19 | type='DetLocalVisualizer', vis_backends=vis_backends, name='visualizer') 20 | log_processor = dict(type='LogProcessor', window_size=50, by_epoch=True) 21 | 22 | log_level = 'INFO' 23 | load_from = None 24 | resume = False 25 | -------------------------------------------------------------------------------- /downstream/det/configs/_base_/models/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lewandofskee/MobileMamba/0980f48a23d232e0f2e86e740eccab038c8fd760/downstream/det/configs/_base_/models/__init__.py -------------------------------------------------------------------------------- /downstream/det/configs/_base_/schedules/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lewandofskee/MobileMamba/0980f48a23d232e0f2e86e740eccab038c8fd760/downstream/det/configs/_base_/schedules/__init__.py -------------------------------------------------------------------------------- /downstream/det/configs/_base_/schedules/schedule_1x.py: -------------------------------------------------------------------------------- 1 | # training schedule for 1x 2 | train_cfg = dict(type='EpochBasedTrainLoop', max_epochs=12, val_interval=1) 3 | val_cfg = dict(type='ValLoop') 4 | test_cfg = dict(type='TestLoop') 5 | 6 | # learning rate 7 | param_scheduler = [ 8 | dict( 9 | type='LinearLR', start_factor=0.001, by_epoch=False, begin=0, end=500), 10 | dict( 11 | type='MultiStepLR', 12 | begin=0, 13 | end=12, 14 | by_epoch=True, 15 | milestones=[8, 11], 16 | gamma=0.1) 17 | ] 18 | 19 | # optimizer 20 | optim_wrapper = dict( 21 | type='OptimWrapper', 22 | optimizer=dict(type='SGD', lr=0.02, momentum=0.9, weight_decay=0.0001)) 23 | 24 | # Default setting for scaling LR automatically 25 | # - `enable` means enable scaling LR automatically 26 | # or not by default. 27 | # - `base_batch_size` = (8 GPUs) x (2 samples per GPU). 28 | auto_scale_lr = dict(enable=False, base_batch_size=16) 29 | -------------------------------------------------------------------------------- /downstream/det/configs/_base_/schedules/schedule_20e.py: -------------------------------------------------------------------------------- 1 | # training schedule for 20e 2 | train_cfg = dict(type='EpochBasedTrainLoop', max_epochs=20, val_interval=1) 3 | val_cfg = dict(type='ValLoop') 4 | test_cfg = dict(type='TestLoop') 5 | 6 | # learning rate 7 | param_scheduler = [ 8 | dict( 9 | type='LinearLR', start_factor=0.001, by_epoch=False, begin=0, end=500), 10 | dict( 11 | type='MultiStepLR', 12 | begin=0, 13 | end=20, 14 | by_epoch=True, 15 | milestones=[16, 19], 16 | gamma=0.1) 17 | ] 18 | 19 | # optimizer 20 | optim_wrapper = dict( 21 | type='OptimWrapper', 22 | optimizer=dict(type='SGD', lr=0.02, momentum=0.9, weight_decay=0.0001)) 23 | 24 | # Default setting for scaling LR automatically 25 | # - `enable` means enable scaling LR automatically 26 | # or not by default. 27 | # - `base_batch_size` = (8 GPUs) x (2 samples per GPU). 28 | auto_scale_lr = dict(enable=False, base_batch_size=16) 29 | -------------------------------------------------------------------------------- /downstream/det/configs/_base_/schedules/schedule_2x.py: -------------------------------------------------------------------------------- 1 | # training schedule for 2x 2 | train_cfg = dict(type='EpochBasedTrainLoop', max_epochs=24, val_interval=1) 3 | val_cfg = dict(type='ValLoop') 4 | test_cfg = dict(type='TestLoop') 5 | 6 | # learning rate 7 | param_scheduler = [ 8 | dict( 9 | type='LinearLR', start_factor=0.001, by_epoch=False, begin=0, end=500), 10 | dict( 11 | type='MultiStepLR', 12 | begin=0, 13 | end=24, 14 | by_epoch=True, 15 | milestones=[16, 22], 16 | gamma=0.1) 17 | ] 18 | 19 | # optimizer 20 | optim_wrapper = dict( 21 | type='OptimWrapper', 22 | optimizer=dict(type='SGD', lr=0.02, momentum=0.9, weight_decay=0.0001)) 23 | 24 | # Default setting for scaling LR automatically 25 | # - `enable` means enable scaling LR automatically 26 | # or not by default. 27 | # - `base_batch_size` = (8 GPUs) x (2 samples per GPU). 28 | auto_scale_lr = dict(enable=False, base_batch_size=16) 29 | -------------------------------------------------------------------------------- /downstream/det/configs/mask_rcnn/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lewandofskee/MobileMamba/0980f48a23d232e0f2e86e740eccab038c8fd760/downstream/det/configs/mask_rcnn/__init__.py -------------------------------------------------------------------------------- /downstream/det/configs/retinanet/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lewandofskee/MobileMamba/0980f48a23d232e0f2e86e740eccab038c8fd760/downstream/det/configs/retinanet/__init__.py -------------------------------------------------------------------------------- /downstream/det/configs/retinanet/retinanet_tta.py: -------------------------------------------------------------------------------- 1 | tta_model = dict( 2 | type='DetTTAModel', 3 | tta_cfg=dict(nms=dict(type='nms', iou_threshold=0.5), max_per_img=100)) 4 | 5 | img_scales = [(1333, 800), (666, 400), (2000, 1200)] 6 | tta_pipeline = [ 7 | dict(type='LoadImageFromFile', backend_args=None), 8 | dict( 9 | type='TestTimeAug', 10 | transforms=[[ 11 | dict(type='Resize', scale=s, keep_ratio=True) for s in img_scales 12 | ], [ 13 | dict(type='RandomFlip', prob=1.), 14 | dict(type='RandomFlip', prob=0.) 15 | ], [dict(type='LoadAnnotations', with_bbox=True)], 16 | [ 17 | dict( 18 | type='PackDetInputs', 19 | meta_keys=('img_id', 'img_path', 'ori_shape', 20 | 'img_shape', 'scale_factor', 'flip', 21 | 'flip_direction')) 22 | ]]) 23 | ] 24 | -------------------------------------------------------------------------------- /downstream/det/configs/ssd/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lewandofskee/MobileMamba/0980f48a23d232e0f2e86e740eccab038c8fd760/downstream/det/configs/ssd/__init__.py -------------------------------------------------------------------------------- /downstream/det/mmdet/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) OpenMMLab. All rights reserved. 2 | import mmcv 3 | import mmengine 4 | from mmengine.utils import digit_version 5 | 6 | from .version import __version__, version_info 7 | 8 | mmcv_minimum_version = '2.0.0rc4' 9 | mmcv_maximum_version = '2.2.0' 10 | mmcv_version = digit_version(mmcv.__version__) 11 | 12 | mmengine_minimum_version = '0.7.1' 13 | mmengine_maximum_version = '1.0.0' 14 | mmengine_version = digit_version(mmengine.__version__) 15 | 16 | assert (mmcv_version >= digit_version(mmcv_minimum_version) 17 | and mmcv_version < digit_version(mmcv_maximum_version)), \ 18 | f'MMCV=={mmcv.__version__} is used but incompatible. ' \ 19 | f'Please install mmcv>={mmcv_minimum_version}, <{mmcv_maximum_version}.' 20 | 21 | assert (mmengine_version >= digit_version(mmengine_minimum_version) 22 | and mmengine_version < digit_version(mmengine_maximum_version)), \ 23 | f'MMEngine=={mmengine.__version__} is used but incompatible. ' \ 24 | f'Please install mmengine>={mmengine_minimum_version}, ' \ 25 | f'<{mmengine_maximum_version}.' 26 | 27 | __all__ = ['__version__', 'version_info', 'digit_version'] 28 | -------------------------------------------------------------------------------- /downstream/det/mmdet/apis/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) OpenMMLab. All rights reserved. 2 | from .det_inferencer import DetInferencer 3 | from .inference import (async_inference_detector, inference_detector, 4 | inference_mot, init_detector, init_track_model) 5 | 6 | __all__ = [ 7 | 'init_detector', 'async_inference_detector', 'inference_detector', 8 | 'DetInferencer', 'inference_mot', 'init_track_model' 9 | ] 10 | -------------------------------------------------------------------------------- /downstream/det/mmdet/configs/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lewandofskee/MobileMamba/0980f48a23d232e0f2e86e740eccab038c8fd760/downstream/det/mmdet/configs/__init__.py -------------------------------------------------------------------------------- /downstream/det/mmdet/configs/_base_/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lewandofskee/MobileMamba/0980f48a23d232e0f2e86e740eccab038c8fd760/downstream/det/mmdet/configs/_base_/__init__.py -------------------------------------------------------------------------------- /downstream/det/mmdet/configs/_base_/datasets/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lewandofskee/MobileMamba/0980f48a23d232e0f2e86e740eccab038c8fd760/downstream/det/mmdet/configs/_base_/datasets/__init__.py -------------------------------------------------------------------------------- /downstream/det/mmdet/configs/_base_/default_runtime.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) OpenMMLab. All rights reserved. 2 | from mmengine.hooks import (CheckpointHook, DistSamplerSeedHook, IterTimerHook, 3 | LoggerHook, ParamSchedulerHook) 4 | from mmengine.runner import LogProcessor 5 | from mmengine.visualization import LocalVisBackend 6 | 7 | from mmdet.engine.hooks import DetVisualizationHook 8 | from mmdet.visualization import DetLocalVisualizer 9 | 10 | default_scope = None 11 | 12 | default_hooks = dict( 13 | timer=dict(type=IterTimerHook), 14 | logger=dict(type=LoggerHook, interval=50), 15 | param_scheduler=dict(type=ParamSchedulerHook), 16 | checkpoint=dict(type=CheckpointHook, interval=1), 17 | sampler_seed=dict(type=DistSamplerSeedHook), 18 | visualization=dict(type=DetVisualizationHook)) 19 | 20 | env_cfg = dict( 21 | cudnn_benchmark=False, 22 | mp_cfg=dict(mp_start_method='fork', opencv_num_threads=0), 23 | dist_cfg=dict(backend='nccl'), 24 | ) 25 | 26 | vis_backends = [dict(type=LocalVisBackend)] 27 | visualizer = dict( 28 | type=DetLocalVisualizer, vis_backends=vis_backends, name='visualizer') 29 | log_processor = dict(type=LogProcessor, window_size=50, by_epoch=True) 30 | 31 | log_level = 'INFO' 32 | load_from = None 33 | resume = False 34 | -------------------------------------------------------------------------------- /downstream/det/mmdet/configs/_base_/models/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lewandofskee/MobileMamba/0980f48a23d232e0f2e86e740eccab038c8fd760/downstream/det/mmdet/configs/_base_/models/__init__.py -------------------------------------------------------------------------------- /downstream/det/mmdet/configs/_base_/schedules/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lewandofskee/MobileMamba/0980f48a23d232e0f2e86e740eccab038c8fd760/downstream/det/mmdet/configs/_base_/schedules/__init__.py -------------------------------------------------------------------------------- /downstream/det/mmdet/configs/_base_/schedules/schedule_1x.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) OpenMMLab. All rights reserved. 2 | from mmengine.optim.optimizer.optimizer_wrapper import OptimWrapper 3 | from mmengine.optim.scheduler.lr_scheduler import LinearLR, MultiStepLR 4 | from mmengine.runner.loops import EpochBasedTrainLoop, TestLoop, ValLoop 5 | from torch.optim.sgd import SGD 6 | 7 | # training schedule for 1x 8 | train_cfg = dict(type=EpochBasedTrainLoop, max_epochs=12, val_interval=1) 9 | val_cfg = dict(type=ValLoop) 10 | test_cfg = dict(type=TestLoop) 11 | 12 | # learning rate 13 | param_scheduler = [ 14 | dict(type=LinearLR, start_factor=0.001, by_epoch=False, begin=0, end=500), 15 | dict( 16 | type=MultiStepLR, 17 | begin=0, 18 | end=12, 19 | by_epoch=True, 20 | milestones=[8, 11], 21 | gamma=0.1) 22 | ] 23 | 24 | # optimizer 25 | optim_wrapper = dict( 26 | type=OptimWrapper, 27 | optimizer=dict(type=SGD, lr=0.02, momentum=0.9, weight_decay=0.0001)) 28 | 29 | # Default setting for scaling LR automatically 30 | # - `enable` means enable scaling LR automatically 31 | # or not by default. 32 | # - `base_batch_size` = (8 GPUs) x (2 samples per GPU). 33 | auto_scale_lr = dict(enable=False, base_batch_size=16) 34 | -------------------------------------------------------------------------------- /downstream/det/mmdet/configs/_base_/schedules/schedule_2x.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) OpenMMLab. All rights reserved. 2 | from mmengine.optim.optimizer.optimizer_wrapper import OptimWrapper 3 | from mmengine.optim.scheduler.lr_scheduler import LinearLR, MultiStepLR 4 | from mmengine.runner.loops import EpochBasedTrainLoop, TestLoop, ValLoop 5 | from torch.optim.sgd import SGD 6 | 7 | # training schedule for 1x 8 | train_cfg = dict(type=EpochBasedTrainLoop, max_epochs=24, val_interval=1) 9 | val_cfg = dict(type=ValLoop) 10 | test_cfg = dict(type=TestLoop) 11 | 12 | # learning rate 13 | param_scheduler = [ 14 | dict(type=LinearLR, start_factor=0.001, by_epoch=False, begin=0, end=500), 15 | dict( 16 | type=MultiStepLR, 17 | begin=0, 18 | end=24, 19 | by_epoch=True, 20 | milestones=[16, 22], 21 | gamma=0.1) 22 | ] 23 | 24 | # optimizer 25 | optim_wrapper = dict( 26 | type=OptimWrapper, 27 | optimizer=dict(type=SGD, lr=0.02, momentum=0.9, weight_decay=0.0001)) 28 | 29 | # Default setting for scaling LR automatically 30 | # - `enable` means enable scaling LR automatically 31 | # or not by default. 32 | # - `base_batch_size` = (8 GPUs) x (2 samples per GPU). 33 | auto_scale_lr = dict(enable=False, base_batch_size=16) 34 | -------------------------------------------------------------------------------- /downstream/det/mmdet/configs/cascade_rcnn/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lewandofskee/MobileMamba/0980f48a23d232e0f2e86e740eccab038c8fd760/downstream/det/mmdet/configs/cascade_rcnn/__init__.py -------------------------------------------------------------------------------- /downstream/det/mmdet/configs/cascade_rcnn/cascade_mask_rcnn_r50_fpn_1x_coco.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) OpenMMLab. All rights reserved. 2 | 3 | # Please refer to https://mmengine.readthedocs.io/en/latest/advanced_tutorials/config.html#a-pure-python-style-configuration-file-beta for more details. # noqa 4 | # mmcv >= 2.0.1 5 | # mmengine >= 0.8.0 6 | 7 | from mmengine.config import read_base 8 | 9 | with read_base(): 10 | from .._base_.datasets.coco_instance import * 11 | from .._base_.default_runtime import * 12 | from .._base_.models.cascade_mask_rcnn_r50_fpn import * 13 | from .._base_.schedules.schedule_1x import * 14 | -------------------------------------------------------------------------------- /downstream/det/mmdet/configs/cascade_rcnn/cascade_rcnn_r50_fpn_1x_coco.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) OpenMMLab. All rights reserved. 2 | 3 | # Please refer to https://mmengine.readthedocs.io/en/latest/advanced_tutorials/config.html#a-pure-python-style-configuration-file-beta for more details. # noqa 4 | # mmcv >= 2.0.1 5 | # mmengine >= 0.8.0 6 | 7 | from mmengine.config import read_base 8 | 9 | with read_base(): 10 | from .._base_.datasets.coco_detection import * 11 | from .._base_.default_runtime import * 12 | from .._base_.models.cascade_rcnn_r50_fpn import * 13 | from .._base_.schedules.schedule_1x import * 14 | -------------------------------------------------------------------------------- /downstream/det/mmdet/configs/common/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lewandofskee/MobileMamba/0980f48a23d232e0f2e86e740eccab038c8fd760/downstream/det/mmdet/configs/common/__init__.py -------------------------------------------------------------------------------- /downstream/det/mmdet/configs/common/lsj_200e_coco_detection.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) OpenMMLab. All rights reserved. 2 | 3 | # Please refer to https://mmengine.readthedocs.io/en/latest/advanced_tutorials/config.html#a-pure-python-style-configuration-file-beta for more details. # noqa 4 | # mmcv >= 2.0.1 5 | # mmengine >= 0.8.0 6 | 7 | from mmengine.config import read_base 8 | 9 | with read_base(): 10 | from .lsj_100e_coco_detection import * 11 | 12 | # 8x25=200e 13 | train_dataloader.update(dict(dataset=dict(times=8))) 14 | 15 | # learning rate 16 | param_scheduler = [ 17 | dict(type=LinearLR, start_factor=0.067, by_epoch=False, begin=0, end=1000), 18 | dict( 19 | type=MultiStepLR, 20 | begin=0, 21 | end=25, 22 | by_epoch=True, 23 | milestones=[22, 24], 24 | gamma=0.1) 25 | ] 26 | -------------------------------------------------------------------------------- /downstream/det/mmdet/configs/common/lsj_200e_coco_instance.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) OpenMMLab. All rights reserved. 2 | 3 | # Please refer to https://mmengine.readthedocs.io/en/latest/advanced_tutorials/config.html#a-pure-python-style-configuration-file-beta for more details. # noqa 4 | # mmcv >= 2.0.1 5 | # mmengine >= 0.8.0 6 | 7 | from mmengine.config import read_base 8 | 9 | with read_base(): 10 | from .lsj_100e_coco_instance import * 11 | 12 | # 8x25=200e 13 | train_dataloader.update(dict(dataset=dict(times=8))) 14 | 15 | # learning rate 16 | param_scheduler = [ 17 | dict(type=LinearLR, start_factor=0.067, by_epoch=False, begin=0, end=1000), 18 | dict( 19 | type=MultiStepLR, 20 | begin=0, 21 | end=25, 22 | by_epoch=True, 23 | milestones=[22, 24], 24 | gamma=0.1) 25 | ] 26 | -------------------------------------------------------------------------------- /downstream/det/mmdet/configs/deformable_detr/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lewandofskee/MobileMamba/0980f48a23d232e0f2e86e740eccab038c8fd760/downstream/det/mmdet/configs/deformable_detr/__init__.py -------------------------------------------------------------------------------- /downstream/det/mmdet/configs/deformable_detr/deformable_detr_refine_r50_16xb2_50e_coco.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) OpenMMLab. All rights reserved. 2 | 3 | # Please refer to https://mmengine.readthedocs.io/en/latest/advanced_tutorials/config.html#a-pure-python-style-configuration-file-beta for more details. # noqa 4 | # mmcv >= 2.0.1 5 | # mmengine >= 0.8.0 6 | 7 | from mmengine.config import read_base 8 | 9 | with read_base(): 10 | from .deformable_detr_r50_16xb2_50e_coco import * 11 | 12 | model.update(dict(with_box_refine=True)) 13 | -------------------------------------------------------------------------------- /downstream/det/mmdet/configs/deformable_detr/deformable_detr_refine_twostage_r50_16xb2_50e_coco.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) OpenMMLab. All rights reserved. 2 | 3 | # Please refer to https://mmengine.readthedocs.io/en/latest/advanced_tutorials/config.html#a-pure-python-style-configuration-file-beta for more details. # noqa 4 | # mmcv >= 2.0.1 5 | # mmengine >= 0.8.0 6 | 7 | from mmengine.config import read_base 8 | 9 | with read_base(): 10 | from .deformable_detr_refine_r50_16xb2_50e_coco import * 11 | 12 | model.update(dict(as_two_stage=True)) 13 | -------------------------------------------------------------------------------- /downstream/det/mmdet/configs/detr/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lewandofskee/MobileMamba/0980f48a23d232e0f2e86e740eccab038c8fd760/downstream/det/mmdet/configs/detr/__init__.py -------------------------------------------------------------------------------- /downstream/det/mmdet/configs/detr/detr_r101_8xb2_500e_coco.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) OpenMMLab. All rights reserved. 2 | from mmengine.config import read_base 3 | from mmengine.model.weight_init import PretrainedInit 4 | 5 | with read_base(): 6 | from .detr_r50_8xb2_500e_coco import * 7 | 8 | model.update( 9 | dict( 10 | backbone=dict( 11 | depth=101, 12 | init_cfg=dict( 13 | type=PretrainedInit, checkpoint='torchvision://resnet101')))) 14 | -------------------------------------------------------------------------------- /downstream/det/mmdet/configs/detr/detr_r18_8xb2_500e_coco.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) OpenMMLab. All rights reserved. 2 | from mmengine.config import read_base 3 | from mmengine.model.weight_init import PretrainedInit 4 | 5 | with read_base(): 6 | from .detr_r50_8xb2_500e_coco import * 7 | 8 | model.update( 9 | dict( 10 | backbone=dict( 11 | depth=18, 12 | init_cfg=dict( 13 | type=PretrainedInit, checkpoint='torchvision://resnet18')), 14 | neck=dict(in_channels=[512]))) 15 | -------------------------------------------------------------------------------- /downstream/det/mmdet/configs/detr/detr_r50_8xb2_500e_coco.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) OpenMMLab. All rights reserved. 2 | from mmengine.config import read_base 3 | from mmengine.optim.scheduler.lr_scheduler import MultiStepLR 4 | from mmengine.runner.loops import EpochBasedTrainLoop 5 | 6 | with read_base(): 7 | from .detr_r50_8xb2_150e_coco import * 8 | 9 | # learning policy 10 | max_epochs = 500 11 | train_cfg.update( 12 | type=EpochBasedTrainLoop, max_epochs=max_epochs, val_interval=10) 13 | 14 | param_scheduler = [ 15 | dict( 16 | type=MultiStepLR, 17 | begin=0, 18 | end=max_epochs, 19 | by_epoch=True, 20 | milestones=[334], 21 | gamma=0.1) 22 | ] 23 | 24 | # only keep latest 2 checkpoints 25 | default_hooks.update(checkpoint=dict(max_keep_ckpts=2)) 26 | -------------------------------------------------------------------------------- /downstream/det/mmdet/configs/dino/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lewandofskee/MobileMamba/0980f48a23d232e0f2e86e740eccab038c8fd760/downstream/det/mmdet/configs/dino/__init__.py -------------------------------------------------------------------------------- /downstream/det/mmdet/configs/dino/dino_4scale_r50_8xb2_24e_coco.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) OpenMMLab. All rights reserved. 2 | from mmengine.config import read_base 3 | from mmengine.runner.loops import EpochBasedTrainLoop 4 | 5 | with read_base(): 6 | from .dino_4scale_r50_8xb2_12e_coco import * 7 | 8 | max_epochs = 24 9 | train_cfg.update( 10 | dict(type=EpochBasedTrainLoop, max_epochs=max_epochs, val_interval=1)) 11 | 12 | param_scheduler[0].update(dict(milestones=[20])) 13 | -------------------------------------------------------------------------------- /downstream/det/mmdet/configs/dino/dino_4scale_r50_8xb2_36e_coco.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) OpenMMLab. All rights reserved. 2 | from mmengine.config import read_base 3 | from mmengine.runner.loops import EpochBasedTrainLoop 4 | 5 | with read_base(): 6 | from .dino_4scale_r50_8xb2_12e_coco import * 7 | 8 | max_epochs = 36 9 | train_cfg.update( 10 | dict(type=EpochBasedTrainLoop, max_epochs=max_epochs, val_interval=1)) 11 | 12 | param_scheduler[0].update(dict(milestones=[30])) 13 | -------------------------------------------------------------------------------- /downstream/det/mmdet/configs/dino/dino_4scale_r50_improved_8xb2_12e_coco.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) OpenMMLab. All rights reserved. 2 | from mmengine.config import read_base 3 | 4 | with read_base(): 5 | from .dino_4scale_r50_8xb2_12e_coco import * 6 | 7 | # from deformable detr hyper 8 | model.update( 9 | dict( 10 | backbone=dict(frozen_stages=-1), 11 | bbox_head=dict(loss_cls=dict(loss_weight=2.0)), 12 | positional_encoding=dict(offset=-0.5, temperature=10000), 13 | dn_cfg=dict(group_cfg=dict(num_dn_queries=300)))) 14 | 15 | # optimizer 16 | optim_wrapper.update( 17 | dict( 18 | optimizer=dict(lr=0.0002), 19 | paramwise_cfg=dict( 20 | custom_keys={ 21 | 'backbone': dict(lr_mult=0.1), 22 | 'sampling_offsets': dict(lr_mult=0.1), 23 | 'reference_points': dict(lr_mult=0.1) 24 | }))) 25 | -------------------------------------------------------------------------------- /downstream/det/mmdet/configs/dino/dino_5scale_swin_l_8xb2_36e_coco.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) OpenMMLab. All rights reserved. 2 | from mmengine.config import read_base 3 | from mmengine.runner.loops import EpochBasedTrainLoop 4 | 5 | with read_base(): 6 | from .dino_5scale_swin_l_8xb2_12e_coco import * 7 | 8 | max_epochs = 36 9 | train_cfg.update( 10 | dict(type=EpochBasedTrainLoop, max_epochs=max_epochs, val_interval=1)) 11 | 12 | param_scheduler[0].update(dict(milestones=[27, 33])) 13 | -------------------------------------------------------------------------------- /downstream/det/mmdet/configs/faster_rcnn/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lewandofskee/MobileMamba/0980f48a23d232e0f2e86e740eccab038c8fd760/downstream/det/mmdet/configs/faster_rcnn/__init__.py -------------------------------------------------------------------------------- /downstream/det/mmdet/configs/faster_rcnn/faster_rcnn_r50_fpn_1x_coco.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) OpenMMLab. All rights reserved. 2 | 3 | # Please refer to https://mmengine.readthedocs.io/en/latest/advanced_tutorials/config.html#a-pure-python-style-configuration-file-beta for more details. # noqa 4 | # mmcv >= 2.0.1 5 | # mmengine >= 0.8.0 6 | 7 | from mmengine.config import read_base 8 | 9 | with read_base(): 10 | from .._base_.datasets.coco_detection import * 11 | from .._base_.default_runtime import * 12 | from .._base_.models.faster_rcnn_r50_fpn import * 13 | from .._base_.schedules.schedule_1x import * 14 | -------------------------------------------------------------------------------- /downstream/det/mmdet/configs/mask_rcnn/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lewandofskee/MobileMamba/0980f48a23d232e0f2e86e740eccab038c8fd760/downstream/det/mmdet/configs/mask_rcnn/__init__.py -------------------------------------------------------------------------------- /downstream/det/mmdet/configs/mask_rcnn/mask_rcnn_r101_caffe_fpn_1x_coco.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) OpenMMLab. All rights reserved. 2 | 3 | # Please refer to https://mmengine.readthedocs.io/en/latest/advanced_tutorials/config.html#a-pure-python-style-configuration-file-beta for more details. # noqa 4 | # mmcv >= 2.0.1 5 | # mmengine >= 0.8.0 6 | 7 | from mmengine.config import read_base 8 | 9 | with read_base(): 10 | from .mask_rcnn_r50_fpn_poly_1x_coco import * 11 | 12 | from mmengine.model.weight_init import PretrainedInit 13 | 14 | model = dict( 15 | backbone=dict( 16 | depth=101, 17 | init_cfg=dict( 18 | type=PretrainedInit, 19 | checkpoint='open-mmlab://detectron2/resnet101_caffe'))) 20 | -------------------------------------------------------------------------------- /downstream/det/mmdet/configs/mask_rcnn/mask_rcnn_r101_caffe_fpn_ms_poly_3x_coco.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) OpenMMLab. All rights reserved. 2 | 3 | # Please refer to https://mmengine.readthedocs.io/en/latest/advanced_tutorials/config.html#a-pure-python-style-configuration-file-beta for more details. # noqa 4 | # mmcv >= 2.0.1 5 | # mmengine >= 0.8.0 6 | 7 | from mmengine.config import read_base 8 | 9 | with read_base(): 10 | from ..common.ms_poly_3x_coco_instance import * 11 | from .._base_.models.mask_rcnn_r50_fpn import * 12 | 13 | from mmengine.model.weight_init import PretrainedInit 14 | 15 | model = dict( 16 | # use caffe img_norm 17 | data_preprocessor=dict( 18 | mean=[103.530, 116.280, 123.675], 19 | std=[1.0, 1.0, 1.0], 20 | bgr_to_rgb=False), 21 | backbone=dict( 22 | depth=101, 23 | norm_cfg=dict(requires_grad=False), 24 | norm_eval=True, 25 | style='caffe', 26 | init_cfg=dict( 27 | type=PretrainedInit, 28 | checkpoint='open-mmlab://detectron2/resnet101_caffe'))) 29 | -------------------------------------------------------------------------------- /downstream/det/mmdet/configs/mask_rcnn/mask_rcnn_r101_fpn_1x_coco.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) OpenMMLab. All rights reserved. 2 | 3 | # Please refer to https://mmengine.readthedocs.io/en/latest/advanced_tutorials/config.html#a-pure-python-style-configuration-file-beta for more details. # noqa 4 | # mmcv >= 2.0.1 5 | # mmengine >= 0.8.0 6 | 7 | from mmengine.config import read_base 8 | 9 | with read_base(): 10 | from .._base_.models.mask_rcnn_r50_fpn import * 11 | 12 | from mmengine.model.weight_init import PretrainedInit 13 | 14 | model = dict( 15 | backbone=dict( 16 | depth=101, 17 | init_cfg=dict( 18 | type=PretrainedInit, checkpoint='torchvision://resnet101'))) 19 | -------------------------------------------------------------------------------- /downstream/det/mmdet/configs/mask_rcnn/mask_rcnn_r101_fpn_2x_coco.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) OpenMMLab. All rights reserved. 2 | 3 | # Please refer to https://mmengine.readthedocs.io/en/latest/advanced_tutorials/config.html#a-pure-python-style-configuration-file-beta for more details. # noqa 4 | # mmcv >= 2.0.1 5 | # mmengine >= 0.8.0 6 | 7 | from mmengine.config import read_base 8 | 9 | with read_base(): 10 | from .mask_rcnn_r50_fpn_2x_coco import * 11 | 12 | from mmengine.model.weight_init import PretrainedInit 13 | 14 | model = dict( 15 | backbone=dict( 16 | depth=101, 17 | init_cfg=dict( 18 | type=PretrainedInit, checkpoint='torchvision://resnet101'))) 19 | -------------------------------------------------------------------------------- /downstream/det/mmdet/configs/mask_rcnn/mask_rcnn_r101_fpn_8xb8_amp_lsj_200e_coco.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) OpenMMLab. All rights reserved. 2 | 3 | # Please refer to https://mmengine.readthedocs.io/en/latest/advanced_tutorials/config.html#a-pure-python-style-configuration-file-beta for more details. # noqa 4 | # mmcv >= 2.0.1 5 | # mmengine >= 0.8.0 6 | 7 | from mmengine.config import read_base 8 | 9 | with read_base(): 10 | from .mask_rcnn_r18_fpn_8xb8_amp_lsj_200e_coco import * 11 | 12 | from mmengine.model.weight_init import PretrainedInit 13 | 14 | model = dict( 15 | backbone=dict( 16 | depth=101, 17 | init_cfg=dict( 18 | type=PretrainedInit, checkpoint='torchvision://resnet101'))) 19 | -------------------------------------------------------------------------------- /downstream/det/mmdet/configs/mask_rcnn/mask_rcnn_r101_fpn_ms_poly_3x_coco.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) OpenMMLab. All rights reserved. 2 | 3 | # Please refer to https://mmengine.readthedocs.io/en/latest/advanced_tutorials/config.html#a-pure-python-style-configuration-file-beta for more details. # noqa 4 | # mmcv >= 2.0.1 5 | # mmengine >= 0.8.0 6 | 7 | from mmengine.config import read_base 8 | 9 | with read_base(): 10 | from ..common.ms_poly_3x_coco_instance import * 11 | from .._base_.models.mask_rcnn_r50_fpn import * 12 | 13 | from mmengine.model.weight_init import PretrainedInit 14 | 15 | model = dict( 16 | backbone=dict( 17 | depth=101, 18 | init_cfg=dict( 19 | type=PretrainedInit, checkpoint='torchvision://resnet101'))) 20 | -------------------------------------------------------------------------------- /downstream/det/mmdet/configs/mask_rcnn/mask_rcnn_r18_fpn_8xb8_amp_lsj_200e_coco.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) OpenMMLab. All rights reserved. 2 | 3 | # Please refer to https://mmengine.readthedocs.io/en/latest/advanced_tutorials/config.html#a-pure-python-style-configuration-file-beta for more details. # noqa 4 | # mmcv >= 2.0.1 5 | # mmengine >= 0.8.0 6 | 7 | from mmengine.config import read_base 8 | 9 | with read_base(): 10 | from .mask_rcnn_r50_fpn_8xb8_amp_lsj_200e_coco import * 11 | 12 | from mmengine.model.weight_init import PretrainedInit 13 | 14 | model = dict( 15 | backbone=dict( 16 | depth=18, 17 | init_cfg=dict( 18 | type=PretrainedInit, checkpoint='torchvision://resnet18')), 19 | neck=dict(in_channels=[64, 128, 256, 512])) 20 | -------------------------------------------------------------------------------- /downstream/det/mmdet/configs/mask_rcnn/mask_rcnn_r50_caffe_c4_1x_coco.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) OpenMMLab. All rights reserved. 2 | 3 | # Please refer to https://mmengine.readthedocs.io/en/latest/advanced_tutorials/config.html#a-pure-python-style-configuration-file-beta for more details. # noqa 4 | # mmcv >= 2.0.1 5 | # mmengine >= 0.8.0 6 | 7 | from mmengine.config import read_base 8 | 9 | with read_base(): 10 | from .._base_.datasets.coco_instance import * 11 | from .._base_.default_runtime import * 12 | from .._base_.models.mask_rcnn_r50_caffe_c4 import * 13 | from .._base_.schedules.schedule_1x import * 14 | -------------------------------------------------------------------------------- /downstream/det/mmdet/configs/mask_rcnn/mask_rcnn_r50_caffe_fpn_1x_coco.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) OpenMMLab. All rights reserved. 2 | 3 | # Please refer to https://mmengine.readthedocs.io/en/latest/advanced_tutorials/config.html#a-pure-python-style-configuration-file-beta for more details. # noqa 4 | # mmcv >= 2.0.1 5 | # mmengine >= 0.8.0 6 | 7 | from mmengine.config import read_base 8 | 9 | with read_base(): 10 | from .mask_rcnn_r50_fpn_1x_coco import * 11 | 12 | from mmengine.model.weight_init import PretrainedInit 13 | 14 | model = dict( 15 | # use caffe img_norm 16 | data_preprocessor=dict( 17 | mean=[103.530, 116.280, 123.675], 18 | std=[1.0, 1.0, 1.0], 19 | bgr_to_rgb=False), 20 | backbone=dict( 21 | norm_cfg=dict(requires_grad=False), 22 | style='caffe', 23 | init_cfg=dict( 24 | type=PretrainedInit, 25 | checkpoint='open-mmlab://detectron2/resnet50_caffe'))) 26 | -------------------------------------------------------------------------------- /downstream/det/mmdet/configs/mask_rcnn/mask_rcnn_r50_caffe_fpn_ms_poly_2x_coco.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) OpenMMLab. All rights reserved. 2 | 3 | # Please refer to https://mmengine.readthedocs.io/en/latest/advanced_tutorials/config.html#a-pure-python-style-configuration-file-beta for more details. # noqa 4 | # mmcv >= 2.0.1 5 | # mmengine >= 0.8.0 6 | 7 | from mmengine.config import read_base 8 | 9 | with read_base(): 10 | from .mask_rcnn_r50_caffe_fpn_ms_poly_1x_coco import * 11 | 12 | train_cfg = dict(max_epochs=24) 13 | # learning rate 14 | param_scheduler = [ 15 | dict(type=LinearLR, start_factor=0.001, by_epoch=False, begin=0, end=500), 16 | dict( 17 | type=MultiStepLR, 18 | begin=0, 19 | end=24, 20 | by_epoch=True, 21 | milestones=[16, 22], 22 | gamma=0.1) 23 | ] 24 | -------------------------------------------------------------------------------- /downstream/det/mmdet/configs/mask_rcnn/mask_rcnn_r50_caffe_fpn_ms_poly_3x_coco.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) OpenMMLab. All rights reserved. 2 | 3 | # Please refer to https://mmengine.readthedocs.io/en/latest/advanced_tutorials/config.html#a-pure-python-style-configuration-file-beta for more details. # noqa 4 | # mmcv >= 2.0.1 5 | # mmengine >= 0.8.0 6 | 7 | from mmengine.config import read_base 8 | 9 | with read_base(): 10 | from .mask_rcnn_r50_caffe_fpn_ms_poly_1x_coco import * 11 | 12 | train_cfg = dict(max_epochs=36) 13 | # learning rate 14 | param_scheduler = [ 15 | dict(type=LinearLR, start_factor=0.001, by_epoch=False, begin=0, end=500), 16 | dict( 17 | type=MultiStepLR, 18 | begin=0, 19 | end=24, 20 | by_epoch=True, 21 | milestones=[28, 34], 22 | gamma=0.1) 23 | ] 24 | -------------------------------------------------------------------------------- /downstream/det/mmdet/configs/mask_rcnn/mask_rcnn_r50_fpn_1x_coco.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) OpenMMLab. All rights reserved. 2 | 3 | # Please refer to https://mmengine.readthedocs.io/en/latest/advanced_tutorials/config.html#a-pure-python-style-configuration-file-beta for more details. # noqa 4 | # mmcv >= 2.0.1 5 | # mmengine >= 0.8.0 6 | 7 | from mmengine.config import read_base 8 | 9 | with read_base(): 10 | from .._base_.datasets.coco_instance import * 11 | from .._base_.default_runtime import * 12 | from .._base_.models.mask_rcnn_r50_fpn import * 13 | from .._base_.schedules.schedule_1x import * 14 | -------------------------------------------------------------------------------- /downstream/det/mmdet/configs/mask_rcnn/mask_rcnn_r50_fpn_1x_wandb_coco.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) OpenMMLab. All rights reserved. 2 | 3 | # Please refer to https://mmengine.readthedocs.io/en/latest/advanced_tutorials/config.html#a-pure-python-style-configuration-file-beta for more details. # noqa 4 | # mmcv >= 2.0.1 5 | # mmengine >= 0.8.0 6 | 7 | from mmengine.config import read_base 8 | 9 | with read_base(): 10 | from .._base_.datasets.coco_instance import * 11 | from .._base_.default_runtime import * 12 | from .._base_.models.mask_rcnn_r50_fpn import * 13 | from .._base_.schedules.schedule_1x import * 14 | 15 | from mmengine.visualization import LocalVisBackend, WandbVisBackend 16 | 17 | vis_backends.update(dict(type=WandbVisBackend)) 18 | vis_backends.update(dict(type=LocalVisBackend)) 19 | visualizer.update(dict(vis_backends=vis_backends)) 20 | 21 | # MMEngine support the following two ways, users can choose 22 | # according to convenience 23 | # Copyright (c) OpenMMLab. All rights reserved. 24 | 25 | # Please refer to https://mmengine.readthedocs.io/en/latest/advanced_tutorials/config.html#a-pure-python-style-configuration-file-beta for more details. # noqa 26 | # mmcv >= 2.0.1 27 | # mmengine >= 0.8.0 28 | 29 | default_hooks.update(dict(checkpoint=dict(interval=4))) 30 | 31 | train_cfg.update(dict(val_interval=2)) 32 | -------------------------------------------------------------------------------- /downstream/det/mmdet/configs/mask_rcnn/mask_rcnn_r50_fpn_2x_coco.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) OpenMMLab. All rights reserved. 2 | 3 | # Please refer to https://mmengine.readthedocs.io/en/latest/advanced_tutorials/config.html#a-pure-python-style-configuration-file-beta for more details. # noqa 4 | # mmcv >= 2.0.1 5 | # mmengine >= 0.8.0 6 | 7 | from mmengine.config import read_base 8 | 9 | with read_base(): 10 | from .._base_.datasets.coco_instance import * 11 | from .._base_.default_runtime import * 12 | from .._base_.models.mask_rcnn_r50_fpn import * 13 | from .._base_.schedules.schedule_2x import * 14 | -------------------------------------------------------------------------------- /downstream/det/mmdet/configs/mask_rcnn/mask_rcnn_r50_fpn_8xb8_amp_lsj_200e_coco.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) OpenMMLab. All rights reserved. 2 | -------------------------------------------------------------------------------- /downstream/det/mmdet/configs/mask_rcnn/mask_rcnn_r50_fpn_amp_1x_coco.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) OpenMMLab. All rights reserved. 2 | 3 | # Please refer to https://mmengine.readthedocs.io/en/latest/advanced_tutorials/config.html#a-pure-python-style-configuration-file-beta for more details. # noqa 4 | # mmcv >= 2.0.1 5 | # mmengine >= 0.8.0 6 | 7 | from mmengine.config import read_base 8 | 9 | with read_base(): 10 | from .mask_rcnn_r50_fpn_1x_coco import * 11 | 12 | from mmengine.optim.optimizer.amp_optimizer_wrapper import AmpOptimWrapper 13 | 14 | optim_wrapper.update(dict(type=AmpOptimWrapper)) 15 | -------------------------------------------------------------------------------- /downstream/det/mmdet/configs/mask_rcnn/mask_rcnn_r50_fpn_ms_poly_-3x_coco.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) OpenMMLab. All rights reserved. 2 | 3 | # Please refer to https://mmengine.readthedocs.io/en/latest/advanced_tutorials/config.html#a-pure-python-style-configuration-file-beta for more details. # noqa 4 | # mmcv >= 2.0.1 5 | # mmengine >= 0.8.0 6 | 7 | from mmengine.config import read_base 8 | 9 | with read_base(): 10 | from .._base_.models.mask_rcnn_r50_fpn import * 11 | from ..common.ms_poly_3x_coco_instance import * 12 | -------------------------------------------------------------------------------- /downstream/det/mmdet/configs/mask_rcnn/mask_rcnn_r50_fpn_poly_1x_coco.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) OpenMMLab. All rights reserved. 2 | 3 | # Please refer to https://mmengine.readthedocs.io/en/latest/advanced_tutorials/config.html#a-pure-python-style-configuration-file-beta for more details. # noqa 4 | # mmcv >= 2.0.1 5 | # mmengine >= 0.8.0 6 | 7 | from mmengine.config import read_base 8 | 9 | with read_base(): 10 | from .._base_.datasets.coco_instance import * 11 | from .._base_.default_runtime import * 12 | from .._base_.models.mask_rcnn_r50_fpn import * 13 | from .._base_.schedules.schedule_1x import * 14 | 15 | train_pipeline = [ 16 | dict(type=LoadImageFromFile, backend_args=backend_args), 17 | dict( 18 | type=LoadAnnotations, with_bbox=True, with_mask=True, poly2mask=False), 19 | dict(type=Resize, scale=(1333, 800), keep_ratio=True), 20 | dict(type=RandomFlip, prob=0.5), 21 | dict(type=PackDetInputs), 22 | ] 23 | train_dataloader.update(dict(dataset=dict(pipeline=train_pipeline))) 24 | -------------------------------------------------------------------------------- /downstream/det/mmdet/configs/mask_rcnn/mask_rcnn_x101_32x4d_fpn_1x_coco.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) OpenMMLab. All rights reserved. 2 | 3 | # Please refer to https://mmengine.readthedocs.io/en/latest/advanced_tutorials/config.html#a-pure-python-style-configuration-file-beta for more details. # noqa 4 | # mmcv >= 2.0.1 5 | # mmengine >= 0.8.0 6 | 7 | from mmengine.config import read_base 8 | 9 | with read_base(): 10 | from .mask_rcnn_r101_fpn_1x_coco import * 11 | 12 | from mmengine.model.weight_init import PretrainedInit 13 | 14 | from mmdet.models.backbones.resnext import ResNeXt 15 | 16 | model = dict( 17 | backbone=dict( 18 | type=ResNeXt, 19 | depth=101, 20 | groups=32, 21 | base_width=4, 22 | num_stages=4, 23 | out_indices=(0, 1, 2, 3), 24 | frozen_stages=1, 25 | norm_cfg=dict(type=BatchNorm2d, requires_grad=True), 26 | style='pytorch', 27 | init_cfg=dict( 28 | type=PretrainedInit, checkpoint='open-mmlab://resnext101_32x4d'))) 29 | -------------------------------------------------------------------------------- /downstream/det/mmdet/configs/mask_rcnn/mask_rcnn_x101_32x4d_fpn_2x_coco.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) OpenMMLab. All rights reserved. 2 | 3 | # Please refer to https://mmengine.readthedocs.io/en/latest/advanced_tutorials/config.html#a-pure-python-style-configuration-file-beta for more details. # noqa 4 | # mmcv >= 2.0.1 5 | # mmengine >= 0.8.0 6 | 7 | from mmengine.config import read_base 8 | 9 | with read_base(): 10 | from .mask_rcnn_r50_fpn_2x_coco import * 11 | 12 | from mmengine.model.weight_init import PretrainedInit 13 | 14 | from mmdet.models import ResNeXt 15 | 16 | model = dict( 17 | backbone=dict( 18 | type=ResNeXt, 19 | depth=101, 20 | groups=32, 21 | base_width=4, 22 | num_stages=4, 23 | out_indices=(0, 1, 2, 3), 24 | frozen_stages=1, 25 | norm_cfg=dict(type=BatchNorm2d, requires_grad=True), 26 | style='pytorch', 27 | init_cfg=dict( 28 | type=PretrainedInit, checkpoint='open-mmlab://resnext101_32x4d'))) 29 | -------------------------------------------------------------------------------- /downstream/det/mmdet/configs/mask_rcnn/mask_rcnn_x101_32x4d_fpn_ms_poly_3x_coco.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) OpenMMLab. All rights reserved. 2 | 3 | # Please refer to https://mmengine.readthedocs.io/en/latest/advanced_tutorials/config.html#a-pure-python-style-configuration-file-beta for more details. # noqa 4 | # mmcv >= 2.0.1 5 | # mmengine >= 0.8.0 6 | 7 | from mmengine.config import read_base 8 | 9 | with read_base(): 10 | from ..common.ms_poly_3x_coco_instance import * 11 | from .._base_.models.mask_rcnn_r50_fpn import * 12 | 13 | from mmengine.model.weight_init import PretrainedInit 14 | 15 | from mmdet.models.backbones import ResNeXt 16 | 17 | model = dict( 18 | backbone=dict( 19 | type=ResNeXt, 20 | depth=101, 21 | groups=32, 22 | base_width=4, 23 | num_stages=4, 24 | out_indices=(0, 1, 2, 3), 25 | frozen_stages=1, 26 | norm_cfg=dict(type=BatchNorm2d, requires_grad=True), 27 | style='pytorch', 28 | init_cfg=dict( 29 | type=PretrainedInit, checkpoint='open-mmlab://resnext101_32x4d'))) 30 | -------------------------------------------------------------------------------- /downstream/det/mmdet/configs/mask_rcnn/mask_rcnn_x101_32x8d_fpn_1x_coco.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) OpenMMLab. All rights reserved. 2 | 3 | # Please refer to https://mmengine.readthedocs.io/en/latest/advanced_tutorials/config.html#a-pure-python-style-configuration-file-beta for more details. # noqa 4 | # mmcv >= 2.0.1 5 | # mmengine >= 0.8.0 6 | 7 | from mmengine.config import read_base 8 | 9 | with read_base(): 10 | from .mask_rcnn_x101_32x4d_fpn_1x_coco import * 11 | 12 | model = dict( 13 | # ResNeXt-101-32x8d model trained with Caffe2 at FB, 14 | # so the mean and std need to be changed. 15 | data_preprocessor=dict( 16 | mean=[103.530, 116.280, 123.675], 17 | std=[57.375, 57.120, 58.395], 18 | bgr_to_rgb=False), 19 | backbone=dict( 20 | type=ResNeXt, 21 | depth=101, 22 | groups=32, 23 | base_width=8, 24 | num_stages=4, 25 | out_indices=(0, 1, 2, 3), 26 | frozen_stages=1, 27 | norm_cfg=dict(type=BatchNorm2d, requires_grad=False), 28 | style='pytorch', 29 | init_cfg=dict( 30 | type=PretrainedInit, 31 | checkpoint='open-mmlab://detectron2/resnext101_32x8d'))) 32 | -------------------------------------------------------------------------------- /downstream/det/mmdet/configs/mask_rcnn/mask_rcnn_x101_32x8d_fpn_ms_poly_3x_coco.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) OpenMMLab. All rights reserved. 2 | 3 | # Please refer to https://mmengine.readthedocs.io/en/latest/advanced_tutorials/config.html#a-pure-python-style-configuration-file-beta for more details. # noqa 4 | # mmcv >= 2.0.1 5 | # mmengine >= 0.8.0 6 | 7 | from mmengine.config import read_base 8 | 9 | with read_base(): 10 | from ..common.ms_poly_3x_coco_instance import * 11 | from .._base_.models.mask_rcnn_r50_fpn import * 12 | 13 | from mmdet.models.backbones import ResNeXt 14 | 15 | model = dict( 16 | # ResNeXt-101-32x8d model trained with Caffe2 at FB, 17 | # so the mean and std need to be changed. 18 | data_preprocessor=dict( 19 | mean=[103.530, 116.280, 123.675], 20 | std=[57.375, 57.120, 58.395], 21 | bgr_to_rgb=False), 22 | backbone=dict( 23 | type=ResNeXt, 24 | depth=101, 25 | groups=32, 26 | base_width=8, 27 | num_stages=4, 28 | out_indices=(0, 1, 2, 3), 29 | frozen_stages=1, 30 | norm_cfg=dict(type=BatchNorm2d, requires_grad=False), 31 | style='pytorch', 32 | init_cfg=dict( 33 | type=PretrainedInit, 34 | checkpoint='open-mmlab://detectron2/resnext101_32x8d'))) 35 | -------------------------------------------------------------------------------- /downstream/det/mmdet/configs/mask_rcnn/mask_rcnn_x101_64_4d_fpn_1x_coco.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) OpenMMLab. All rights reserved. 2 | 3 | # Please refer to https://mmengine.readthedocs.io/en/latest/advanced_tutorials/config.html#a-pure-python-style-configuration-file-beta for more details. # noqa 4 | # mmcv >= 2.0.1 5 | # mmengine >= 0.8.0 6 | 7 | from mmengine.config import read_base 8 | 9 | with read_base(): 10 | from .mask_rcnn_x101_32x4d_fpn_1x_coco import * 11 | 12 | model = dict( 13 | backbone=dict( 14 | type=ResNeXt, 15 | depth=101, 16 | groups=64, 17 | base_width=4, 18 | num_stages=4, 19 | out_indices=(0, 1, 2, 3), 20 | frozen_stages=1, 21 | norm_cfg=dict(type=BatchNorm2d, requires_grad=True), 22 | style='pytorch', 23 | init_cfg=dict( 24 | type=PretrainedInit, checkpoint='open-mmlab://resnext101_64x4d'))) 25 | -------------------------------------------------------------------------------- /downstream/det/mmdet/configs/mask_rcnn/mask_rcnn_x101_64x4d_fpn_2x_coco.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) OpenMMLab. All rights reserved. 2 | 3 | # Please refer to https://mmengine.readthedocs.io/en/latest/advanced_tutorials/config.html#a-pure-python-style-configuration-file-beta for more details. # noqa 4 | # mmcv >= 2.0.1 5 | # mmengine >= 0.8.0 6 | 7 | from mmengine.config import read_base 8 | 9 | with read_base(): 10 | from .mask_rcnn_x101_32x4d_fpn_2x_coco import * 11 | 12 | model = dict( 13 | backbone=dict( 14 | type=ResNeXt, 15 | depth=101, 16 | groups=64, 17 | base_width=4, 18 | num_stages=4, 19 | out_indices=(0, 1, 2, 3), 20 | frozen_stages=1, 21 | norm_cfg=dict(type=BatchNorm2d, requires_grad=True), 22 | style='pytorch', 23 | init_cfg=dict( 24 | type=PretrainedInit, checkpoint='open-mmlab://resnext101_64x4d'))) 25 | -------------------------------------------------------------------------------- /downstream/det/mmdet/configs/mask_rcnn/mask_rcnn_x101_64x4d_fpn_ms_poly_3x_coco.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) OpenMMLab. All rights reserved. 2 | 3 | # Please refer to https://mmengine.readthedocs.io/en/latest/advanced_tutorials/config.html#a-pure-python-style-configuration-file-beta for more details. # noqa 4 | # mmcv >= 2.0.1 5 | # mmengine >= 0.8.0 6 | 7 | from mmengine.config import read_base 8 | 9 | with read_base(): 10 | from ..common.ms_poly_3x_coco_instance import * 11 | from .._base_.models.mask_rcnn_r50_fpn import * 12 | 13 | from mmdet.models.backbones import ResNeXt 14 | 15 | model = dict( 16 | backbone=dict( 17 | type=ResNeXt, 18 | depth=101, 19 | groups=64, 20 | base_width=4, 21 | num_stages=4, 22 | out_indices=(0, 1, 2, 3), 23 | frozen_stages=1, 24 | norm_cfg=dict(type=BatchNorm2d, requires_grad=True), 25 | style='pytorch', 26 | init_cfg=dict( 27 | type=PretrainedInit, checkpoint='open-mmlab://resnext101_64x4d'))) 28 | -------------------------------------------------------------------------------- /downstream/det/mmdet/configs/maskformer/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lewandofskee/MobileMamba/0980f48a23d232e0f2e86e740eccab038c8fd760/downstream/det/mmdet/configs/maskformer/__init__.py -------------------------------------------------------------------------------- /downstream/det/mmdet/configs/panoptic_fpn/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lewandofskee/MobileMamba/0980f48a23d232e0f2e86e740eccab038c8fd760/downstream/det/mmdet/configs/panoptic_fpn/__init__.py -------------------------------------------------------------------------------- /downstream/det/mmdet/configs/panoptic_fpn/panoptic_fpn_r101_fpn_1x_coco.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) OpenMMLab. All rights reserved. 2 | from mmengine.config import read_base 3 | from mmengine.model.weight_init import PretrainedInit 4 | 5 | with read_base(): 6 | from .panoptic_fpn_r50_fpn_1x_coco import * 7 | 8 | model.update( 9 | dict( 10 | backbone=dict( 11 | depth=101, 12 | init_cfg=dict( 13 | type=PretrainedInit, checkpoint='torchvision://resnet101')))) 14 | -------------------------------------------------------------------------------- /downstream/det/mmdet/configs/panoptic_fpn/panoptic_fpn_r101_fpn_ms_3x_coco.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) OpenMMLab. All rights reserved. 2 | from mmengine.config import read_base 3 | from mmengine.model.weight_init import PretrainedInit 4 | 5 | with read_base(): 6 | from .panoptic_fpn_r50_fpn_ms_3x_coco import * 7 | 8 | model.update( 9 | dict( 10 | backbone=dict( 11 | depth=101, 12 | init_cfg=dict( 13 | type=PretrainedInit, checkpoint='torchvision://resnet101')))) 14 | -------------------------------------------------------------------------------- /downstream/det/mmdet/configs/qdtrack/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lewandofskee/MobileMamba/0980f48a23d232e0f2e86e740eccab038c8fd760/downstream/det/mmdet/configs/qdtrack/__init__.py -------------------------------------------------------------------------------- /downstream/det/mmdet/configs/qdtrack/qdtrack_faster_rcnn_r50_fpn_8xb2-4e_mot17halftrain_test-mot17halfval.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) OpenMMLab. All rights reserved. 2 | from mmengine.config import read_base 3 | 4 | with read_base(): 5 | from .._base_.datasets.mot_challenge import * 6 | from .qdtrack_faster_rcnn_r50_fpn_4e_base import * 7 | 8 | from mmdet.evaluation import CocoVideoMetric, MOTChallengeMetric 9 | 10 | # evaluator 11 | val_evaluator = [ 12 | dict(type=CocoVideoMetric, metric=['bbox'], classwise=True), 13 | dict(type=MOTChallengeMetric, metric=['HOTA', 'CLEAR', 'Identity']) 14 | ] 15 | -------------------------------------------------------------------------------- /downstream/det/mmdet/configs/retinanet/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lewandofskee/MobileMamba/0980f48a23d232e0f2e86e740eccab038c8fd760/downstream/det/mmdet/configs/retinanet/__init__.py -------------------------------------------------------------------------------- /downstream/det/mmdet/configs/retinanet/retinanet_r50_fpn_1x_coco.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) OpenMMLab. All rights reserved. 2 | 3 | # Please refer to https://mmengine.readthedocs.io/en/latest/advanced_tutorials/config.html#a-pure-python-style-configuration-file-beta for more details. # noqa 4 | # mmcv >= 2.0.1 5 | # mmengine >= 0.8.0 6 | 7 | from mmengine.config import read_base 8 | 9 | with read_base(): 10 | from .._base_.models.retinanet_r50_fpn import * 11 | from .._base_.datasets.coco_detection import * 12 | from .._base_.schedules.schedule_1x import * 13 | from .._base_.default_runtime import * 14 | from .retinanet_tta import * 15 | 16 | from torch.optim.sgd import SGD 17 | 18 | # optimizer 19 | optim_wrapper.update( 20 | dict(optimizer=dict(type=SGD, lr=0.01, momentum=0.9, weight_decay=0.0001))) 21 | -------------------------------------------------------------------------------- /downstream/det/mmdet/configs/retinanet/retinanet_tta.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) OpenMMLab. All rights reserved. 2 | from mmcv.transforms.loading import LoadImageFromFile 3 | from mmcv.transforms.processing import TestTimeAug 4 | 5 | from mmdet.datasets.transforms.formatting import PackDetInputs 6 | from mmdet.datasets.transforms.loading import LoadAnnotations 7 | from mmdet.datasets.transforms.transforms import RandomFlip, Resize 8 | from mmdet.models.test_time_augs.det_tta import DetTTAModel 9 | 10 | tta_model = dict( 11 | type=DetTTAModel, 12 | tta_cfg=dict(nms=dict(type='nms', iou_threshold=0.5), max_per_img=100)) 13 | 14 | img_scales = [(1333, 800), (666, 400), (2000, 1200)] 15 | tta_pipeline = [ 16 | dict(type=LoadImageFromFile, backend_args=None), 17 | dict( 18 | type=TestTimeAug, 19 | transforms=[ 20 | [dict(type=Resize, scale=s, keep_ratio=True) for s in img_scales], 21 | [dict(type=RandomFlip, prob=1.), 22 | dict(type=RandomFlip, prob=0.)], 23 | [dict(type=LoadAnnotations, with_bbox=True)], 24 | [ 25 | dict( 26 | type=PackDetInputs, 27 | meta_keys=('img_id', 'img_path', 'ori_shape', 'img_shape', 28 | 'scale_factor', 'flip', 'flip_direction')) 29 | ] 30 | ]) 31 | ] 32 | -------------------------------------------------------------------------------- /downstream/det/mmdet/configs/rtmdet/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lewandofskee/MobileMamba/0980f48a23d232e0f2e86e740eccab038c8fd760/downstream/det/mmdet/configs/rtmdet/__init__.py -------------------------------------------------------------------------------- /downstream/det/mmdet/configs/rtmdet/rtmdet_ins_m_8xb32_300e_coco.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) OpenMMLab. All rights reserved. 2 | 3 | # Please refer to https://mmengine.readthedocs.io/en/latest/advanced_tutorials/config.html#a-pure-python-style-configuration-file-beta for more details. # noqa 4 | # mmcv >= 2.0.1 5 | # mmengine >= 0.8.0 6 | 7 | from mmengine.config import read_base 8 | 9 | with read_base(): 10 | from .rtmdet_ins_l_8xb32_300e_coco import * 11 | 12 | model.update( 13 | dict( 14 | backbone=dict(deepen_factor=0.67, widen_factor=0.75), 15 | neck=dict( 16 | in_channels=[192, 384, 768], out_channels=192, num_csp_blocks=2), 17 | bbox_head=dict(in_channels=192, feat_channels=192))) 18 | -------------------------------------------------------------------------------- /downstream/det/mmdet/configs/rtmdet/rtmdet_ins_x_8xb16_300e_coco.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) OpenMMLab. All rights reserved. 2 | 3 | # Please refer to https://mmengine.readthedocs.io/en/latest/advanced_tutorials/config.html#a-pure-python-style-configuration-file-beta for more details. # noqa 4 | # mmcv >= 2.0.1 5 | # mmengine >= 0.8.0 6 | 7 | from mmengine.config import read_base 8 | 9 | with read_base(): 10 | from .rtmdet_ins_l_8xb32_300e_coco import * 11 | from mmengine.optim.scheduler.lr_scheduler import CosineAnnealingLR, LinearLR 12 | 13 | model.update( 14 | dict( 15 | backbone=dict(deepen_factor=1.33, widen_factor=1.25), 16 | neck=dict( 17 | in_channels=[320, 640, 1280], out_channels=320, num_csp_blocks=4), 18 | bbox_head=dict(in_channels=320, feat_channels=320))) 19 | 20 | base_lr = 0.002 21 | 22 | # optimizer 23 | optim_wrapper.update(dict(optimizer=dict(lr=base_lr))) 24 | 25 | # learning rate 26 | param_scheduler = [ 27 | dict( 28 | type=LinearLR, start_factor=1.0e-5, by_epoch=False, begin=0, end=1000), 29 | dict( 30 | # use cosine lr from 150 to 300 epoch 31 | type=CosineAnnealingLR, 32 | eta_min=base_lr * 0.05, 33 | begin=max_epochs // 2, 34 | end=max_epochs, 35 | T_max=max_epochs // 2, 36 | by_epoch=True, 37 | convert_to_iter_based=True), 38 | ] 39 | -------------------------------------------------------------------------------- /downstream/det/mmdet/configs/rtmdet/rtmdet_m_8xb32_300e_coco.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) OpenMMLab. All rights reserved. 2 | 3 | # Please refer to https://mmengine.readthedocs.io/en/latest/advanced_tutorials/config.html#a-pure-python-style-configuration-file-beta for more details. # noqa 4 | # mmcv >= 2.0.1 5 | # mmengine >= 0.8.0 6 | 7 | from mmengine.config import read_base 8 | 9 | with read_base(): 10 | from .rtmdet_l_8xb32_300e_coco import * 11 | 12 | model.update( 13 | dict( 14 | backbone=dict(deepen_factor=0.67, widen_factor=0.75), 15 | neck=dict( 16 | in_channels=[192, 384, 768], out_channels=192, num_csp_blocks=2), 17 | bbox_head=dict(in_channels=192, feat_channels=192))) 18 | -------------------------------------------------------------------------------- /downstream/det/mmdet/configs/rtmdet/rtmdet_x_8xb32_300e_coco.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) OpenMMLab. All rights reserved. 2 | 3 | # Please refer to https://mmengine.readthedocs.io/en/latest/advanced_tutorials/config.html#a-pure-python-style-configuration-file-beta for more details. # noqa 4 | # mmcv >= 2.0.1 5 | # mmengine >= 0.8.0 6 | 7 | from mmengine.config import read_base 8 | 9 | with read_base(): 10 | from .rtmdet_l_8xb32_300e_coco import * 11 | 12 | model.update( 13 | dict( 14 | backbone=dict(deepen_factor=1.33, widen_factor=1.25), 15 | neck=dict( 16 | in_channels=[320, 640, 1280], out_channels=320, num_csp_blocks=4), 17 | bbox_head=dict(in_channels=320, feat_channels=320))) 18 | -------------------------------------------------------------------------------- /downstream/det/mmdet/datasets/api_wrappers/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) OpenMMLab. All rights reserved. 2 | from .coco_api import COCO, COCOeval, COCOPanoptic 3 | from .cocoeval_mp import COCOevalMP 4 | 5 | __all__ = ['COCO', 'COCOeval', 'COCOPanoptic', 'COCOevalMP'] 6 | -------------------------------------------------------------------------------- /downstream/det/mmdet/datasets/coco_caption.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) OpenMMLab. All rights reserved. 2 | from pathlib import Path 3 | from typing import List 4 | 5 | import mmengine 6 | from mmengine.dataset import BaseDataset 7 | from mmengine.fileio import get_file_backend 8 | 9 | from mmdet.registry import DATASETS 10 | 11 | 12 | @DATASETS.register_module() 13 | class CocoCaptionDataset(BaseDataset): 14 | """COCO2014 Caption dataset.""" 15 | 16 | def load_data_list(self) -> List[dict]: 17 | """Load data list.""" 18 | img_prefix = self.data_prefix['img_path'] 19 | annotations = mmengine.load(self.ann_file) 20 | file_backend = get_file_backend(img_prefix) 21 | 22 | data_list = [] 23 | for ann in annotations: 24 | data_info = { 25 | 'img_id': Path(ann['image']).stem.split('_')[-1], 26 | 'img_path': file_backend.join_path(img_prefix, ann['image']), 27 | 'gt_caption': ann['caption'], 28 | } 29 | 30 | data_list.append(data_info) 31 | 32 | return data_list 33 | -------------------------------------------------------------------------------- /downstream/det/mmdet/datasets/deepfashion.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) OpenMMLab. All rights reserved. 2 | from mmdet.registry import DATASETS 3 | from .coco import CocoDataset 4 | 5 | 6 | @DATASETS.register_module() 7 | class DeepFashionDataset(CocoDataset): 8 | """Dataset for DeepFashion.""" 9 | 10 | METAINFO = { 11 | 'classes': ('top', 'skirt', 'leggings', 'dress', 'outer', 'pants', 12 | 'bag', 'neckwear', 'headwear', 'eyeglass', 'belt', 13 | 'footwear', 'hair', 'skin', 'face'), 14 | # palette is a list of color tuples, which is used for visualization. 15 | 'palette': [(0, 192, 64), (0, 64, 96), (128, 192, 192), (0, 64, 64), 16 | (0, 192, 224), (0, 192, 192), (128, 192, 64), (0, 192, 96), 17 | (128, 32, 192), (0, 0, 224), (0, 0, 64), (0, 160, 192), 18 | (128, 0, 96), (128, 0, 192), (0, 32, 192)] 19 | } 20 | -------------------------------------------------------------------------------- /downstream/det/mmdet/datasets/isaid.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) OpenMMLab. All rights reserved. 2 | from mmdet.registry import DATASETS 3 | from .coco import CocoDataset 4 | 5 | 6 | @DATASETS.register_module() 7 | class iSAIDDataset(CocoDataset): 8 | """Dataset for iSAID instance segmentation. 9 | 10 | iSAID: A Large-scale Dataset for Instance Segmentation 11 | in Aerial Images. 12 | 13 | For more detail, please refer to "projects/iSAID/README.md" 14 | """ 15 | 16 | METAINFO = dict( 17 | classes=('background', 'ship', 'store_tank', 'baseball_diamond', 18 | 'tennis_court', 'basketball_court', 'Ground_Track_Field', 19 | 'Bridge', 'Large_Vehicle', 'Small_Vehicle', 'Helicopter', 20 | 'Swimming_pool', 'Roundabout', 'Soccer_ball_field', 'plane', 21 | 'Harbor'), 22 | palette=[(0, 0, 0), (0, 0, 63), (0, 63, 63), (0, 63, 0), (0, 63, 127), 23 | (0, 63, 191), (0, 63, 255), (0, 127, 63), (0, 127, 127), 24 | (0, 0, 127), (0, 0, 191), (0, 0, 255), (0, 191, 127), 25 | (0, 127, 191), (0, 127, 255), (0, 100, 155)]) 26 | -------------------------------------------------------------------------------- /downstream/det/mmdet/datasets/samplers/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) OpenMMLab. All rights reserved. 2 | from .batch_sampler import (AspectRatioBatchSampler, 3 | MultiDataAspectRatioBatchSampler, 4 | TrackAspectRatioBatchSampler) 5 | from .class_aware_sampler import ClassAwareSampler 6 | from .custom_sample_size_sampler import CustomSampleSizeSampler 7 | from .multi_data_sampler import MultiDataSampler 8 | from .multi_source_sampler import GroupMultiSourceSampler, MultiSourceSampler 9 | from .track_img_sampler import TrackImgSampler 10 | 11 | __all__ = [ 12 | 'ClassAwareSampler', 'AspectRatioBatchSampler', 'MultiSourceSampler', 13 | 'GroupMultiSourceSampler', 'TrackImgSampler', 14 | 'TrackAspectRatioBatchSampler', 'MultiDataSampler', 15 | 'MultiDataAspectRatioBatchSampler', 'CustomSampleSizeSampler' 16 | ] 17 | -------------------------------------------------------------------------------- /downstream/det/mmdet/datasets/v3det.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) OpenMMLab. All rights reserved. 2 | import os.path 3 | from typing import Optional 4 | 5 | import mmengine 6 | 7 | from mmdet.registry import DATASETS 8 | from .coco import CocoDataset 9 | 10 | 11 | @DATASETS.register_module() 12 | class V3DetDataset(CocoDataset): 13 | """Dataset for V3Det.""" 14 | 15 | METAINFO = { 16 | 'classes': None, 17 | 'palette': None, 18 | } 19 | 20 | def __init__( 21 | self, 22 | *args, 23 | metainfo: Optional[dict] = None, 24 | data_root: str = '', 25 | label_file='annotations/category_name_13204_v3det_2023_v1.txt', # noqa 26 | **kwargs) -> None: 27 | class_names = tuple( 28 | mmengine.list_from_file(os.path.join(data_root, label_file))) 29 | if metainfo is None: 30 | metainfo = {'classes': class_names} 31 | super().__init__( 32 | *args, data_root=data_root, metainfo=metainfo, **kwargs) 33 | -------------------------------------------------------------------------------- /downstream/det/mmdet/engine/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) OpenMMLab. All rights reserved. 2 | from .hooks import * # noqa: F401, F403 3 | from .optimizers import * # noqa: F401, F403 4 | from .runner import * # noqa: F401, F403 5 | from .schedulers import * # noqa: F401, F403 6 | -------------------------------------------------------------------------------- /downstream/det/mmdet/engine/hooks/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) OpenMMLab. All rights reserved. 2 | from .checkloss_hook import CheckInvalidLossHook 3 | from .mean_teacher_hook import MeanTeacherHook 4 | from .memory_profiler_hook import MemoryProfilerHook 5 | from .num_class_check_hook import NumClassCheckHook 6 | from .pipeline_switch_hook import PipelineSwitchHook 7 | from .set_epoch_info_hook import SetEpochInfoHook 8 | from .sync_norm_hook import SyncNormHook 9 | from .utils import trigger_visualization_hook 10 | from .visualization_hook import (DetVisualizationHook, 11 | GroundingVisualizationHook, 12 | TrackVisualizationHook) 13 | from .yolox_mode_switch_hook import YOLOXModeSwitchHook 14 | 15 | __all__ = [ 16 | 'YOLOXModeSwitchHook', 'SyncNormHook', 'CheckInvalidLossHook', 17 | 'SetEpochInfoHook', 'MemoryProfilerHook', 'DetVisualizationHook', 18 | 'NumClassCheckHook', 'MeanTeacherHook', 'trigger_visualization_hook', 19 | 'PipelineSwitchHook', 'TrackVisualizationHook', 20 | 'GroundingVisualizationHook' 21 | ] 22 | -------------------------------------------------------------------------------- /downstream/det/mmdet/engine/hooks/set_epoch_info_hook.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) OpenMMLab. All rights reserved. 2 | from mmengine.hooks import Hook 3 | from mmengine.model.wrappers import is_model_wrapper 4 | 5 | from mmdet.registry import HOOKS 6 | 7 | 8 | @HOOKS.register_module() 9 | class SetEpochInfoHook(Hook): 10 | """Set runner's epoch information to the model.""" 11 | 12 | def before_train_epoch(self, runner): 13 | epoch = runner.epoch 14 | model = runner.model 15 | if is_model_wrapper(model): 16 | model = model.module 17 | model.set_epoch(epoch) 18 | -------------------------------------------------------------------------------- /downstream/det/mmdet/engine/hooks/sync_norm_hook.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) OpenMMLab. All rights reserved. 2 | from collections import OrderedDict 3 | 4 | from mmengine.dist import get_dist_info 5 | from mmengine.hooks import Hook 6 | from torch import nn 7 | 8 | from mmdet.registry import HOOKS 9 | from mmdet.utils import all_reduce_dict 10 | 11 | 12 | def get_norm_states(module: nn.Module) -> OrderedDict: 13 | """Get the state_dict of batch norms in the module.""" 14 | async_norm_states = OrderedDict() 15 | for name, child in module.named_modules(): 16 | if isinstance(child, nn.modules.batchnorm._NormBase): 17 | for k, v in child.state_dict().items(): 18 | async_norm_states['.'.join([name, k])] = v 19 | return async_norm_states 20 | 21 | 22 | @HOOKS.register_module() 23 | class SyncNormHook(Hook): 24 | """Synchronize Norm states before validation, currently used in YOLOX.""" 25 | 26 | def before_val_epoch(self, runner): 27 | """Synchronizing norm.""" 28 | module = runner.model 29 | _, world_size = get_dist_info() 30 | if world_size == 1: 31 | return 32 | norm_states = get_norm_states(module) 33 | if len(norm_states) == 0: 34 | return 35 | # TODO: use `all_reduce_dict` in mmengine 36 | norm_states = all_reduce_dict(norm_states, op='mean') 37 | module.load_state_dict(norm_states, strict=False) 38 | -------------------------------------------------------------------------------- /downstream/det/mmdet/engine/hooks/utils.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) OpenMMLab. All rights reserved. 2 | def trigger_visualization_hook(cfg, args): 3 | default_hooks = cfg.default_hooks 4 | if 'visualization' in default_hooks: 5 | visualization_hook = default_hooks['visualization'] 6 | # Turn on visualization 7 | visualization_hook['draw'] = True 8 | if args.show: 9 | visualization_hook['show'] = True 10 | visualization_hook['wait_time'] = args.wait_time 11 | if args.show_dir: 12 | visualization_hook['test_out_dir'] = args.show_dir 13 | else: 14 | raise RuntimeError( 15 | 'VisualizationHook must be included in default_hooks.' 16 | 'refer to usage ' 17 | '"visualization=dict(type=\'VisualizationHook\')"') 18 | 19 | return cfg 20 | -------------------------------------------------------------------------------- /downstream/det/mmdet/engine/optimizers/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) OpenMMLab. All rights reserved. 2 | from .layer_decay_optimizer_constructor import \ 3 | LearningRateDecayOptimizerConstructor 4 | 5 | __all__ = ['LearningRateDecayOptimizerConstructor'] 6 | -------------------------------------------------------------------------------- /downstream/det/mmdet/engine/runner/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) OpenMMLab. All rights reserved. 2 | from .loops import TeacherStudentValLoop 3 | 4 | __all__ = ['TeacherStudentValLoop'] 5 | -------------------------------------------------------------------------------- /downstream/det/mmdet/engine/schedulers/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) OpenMMLab. All rights reserved. 2 | from .quadratic_warmup import (QuadraticWarmupLR, QuadraticWarmupMomentum, 3 | QuadraticWarmupParamScheduler) 4 | 5 | __all__ = [ 6 | 'QuadraticWarmupParamScheduler', 'QuadraticWarmupMomentum', 7 | 'QuadraticWarmupLR' 8 | ] 9 | -------------------------------------------------------------------------------- /downstream/det/mmdet/evaluation/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) OpenMMLab. All rights reserved. 2 | from .evaluator import * # noqa: F401,F403 3 | from .functional import * # noqa: F401,F403 4 | from .metrics import * # noqa: F401,F403 5 | -------------------------------------------------------------------------------- /downstream/det/mmdet/evaluation/evaluator/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) OpenMMLab. All rights reserved. 2 | from .multi_datasets_evaluator import MultiDatasetsEvaluator 3 | 4 | __all__ = ['MultiDatasetsEvaluator'] 5 | -------------------------------------------------------------------------------- /downstream/det/mmdet/models/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) OpenMMLab. All rights reserved. 2 | from .backbones import * # noqa: F401,F403 3 | from .data_preprocessors import * # noqa: F401,F403 4 | from .dense_heads import * # noqa: F401,F403 5 | from .detectors import * # noqa: F401,F403 6 | from .language_models import * # noqa: F401,F403 7 | from .layers import * # noqa: F401,F403 8 | from .losses import * # noqa: F401,F403 9 | from .mot import * # noqa: F401,F403 10 | from .necks import * # noqa: F401,F403 11 | from .reid import * # noqa: F401,F403 12 | from .roi_heads import * # noqa: F401,F403 13 | from .seg_heads import * # noqa: F401,F403 14 | from .task_modules import * # noqa: F401,F403 15 | from .test_time_augs import * # noqa: F401,F403 16 | from .trackers import * # noqa: F401,F403 17 | from .tracking_heads import * # noqa: F401,F403 18 | from .vis import * # noqa: F401,F403 19 | -------------------------------------------------------------------------------- /downstream/det/mmdet/models/backbones/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) OpenMMLab. All rights reserved. 2 | from .csp_darknet import CSPDarknet 3 | from .cspnext import CSPNeXt 4 | from .darknet import Darknet 5 | from .detectors_resnet import DetectoRS_ResNet 6 | from .detectors_resnext import DetectoRS_ResNeXt 7 | from .efficientnet import EfficientNet 8 | from .hourglass import HourglassNet 9 | from .hrnet import HRNet 10 | from .mobilenet_v2 import MobileNetV2 11 | from .pvt import PyramidVisionTransformer, PyramidVisionTransformerV2 12 | from .regnet import RegNet 13 | from .res2net import Res2Net 14 | from .resnest import ResNeSt 15 | from .resnet import ResNet, ResNetV1d 16 | from .resnext import ResNeXt 17 | from .ssd_vgg import SSDVGG 18 | from .swin import SwinTransformer 19 | from .trident_resnet import TridentResNet 20 | 21 | __all__ = [ 22 | 'RegNet', 'ResNet', 'ResNetV1d', 'ResNeXt', 'SSDVGG', 'HRNet', 23 | 'MobileNetV2', 'Res2Net', 'HourglassNet', 'DetectoRS_ResNet', 24 | 'DetectoRS_ResNeXt', 'Darknet', 'ResNeSt', 'TridentResNet', 'CSPDarknet', 25 | 'SwinTransformer', 'PyramidVisionTransformer', 26 | 'PyramidVisionTransformerV2', 'EfficientNet', 'CSPNeXt' 27 | ] 28 | -------------------------------------------------------------------------------- /downstream/det/mmdet/models/data_preprocessors/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) OpenMMLab. All rights reserved. 2 | from .data_preprocessor import (BatchFixedSizePad, BatchResize, 3 | BatchSyncRandomResize, BoxInstDataPreprocessor, 4 | DetDataPreprocessor, 5 | MultiBranchDataPreprocessor) 6 | from .reid_data_preprocessor import ReIDDataPreprocessor 7 | from .track_data_preprocessor import TrackDataPreprocessor 8 | 9 | __all__ = [ 10 | 'DetDataPreprocessor', 'BatchSyncRandomResize', 'BatchFixedSizePad', 11 | 'MultiBranchDataPreprocessor', 'BatchResize', 'BoxInstDataPreprocessor', 12 | 'TrackDataPreprocessor', 'ReIDDataPreprocessor' 13 | ] 14 | -------------------------------------------------------------------------------- /downstream/det/mmdet/models/detectors/boxinst.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) OpenMMLab. All rights reserved. 2 | from mmdet.registry import MODELS 3 | from mmdet.utils import ConfigType, OptConfigType, OptMultiConfig 4 | from .single_stage_instance_seg import SingleStageInstanceSegmentor 5 | 6 | 7 | @MODELS.register_module() 8 | class BoxInst(SingleStageInstanceSegmentor): 9 | """Implementation of `BoxInst `_""" 10 | 11 | def __init__(self, 12 | backbone: ConfigType, 13 | neck: ConfigType, 14 | bbox_head: ConfigType, 15 | mask_head: ConfigType, 16 | train_cfg: OptConfigType = None, 17 | test_cfg: OptConfigType = None, 18 | data_preprocessor: OptConfigType = None, 19 | init_cfg: OptMultiConfig = None) -> None: 20 | super().__init__( 21 | backbone=backbone, 22 | neck=neck, 23 | bbox_head=bbox_head, 24 | mask_head=mask_head, 25 | train_cfg=train_cfg, 26 | test_cfg=test_cfg, 27 | data_preprocessor=data_preprocessor, 28 | init_cfg=init_cfg) 29 | -------------------------------------------------------------------------------- /downstream/det/mmdet/models/detectors/cascade_rcnn.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) OpenMMLab. All rights reserved. 2 | from mmdet.registry import MODELS 3 | from mmdet.utils import ConfigType, OptConfigType, OptMultiConfig 4 | from .two_stage import TwoStageDetector 5 | 6 | 7 | @MODELS.register_module() 8 | class CascadeRCNN(TwoStageDetector): 9 | r"""Implementation of `Cascade R-CNN: Delving into High Quality Object 10 | Detection `_""" 11 | 12 | def __init__(self, 13 | backbone: ConfigType, 14 | neck: OptConfigType = None, 15 | rpn_head: OptConfigType = None, 16 | roi_head: OptConfigType = None, 17 | train_cfg: OptConfigType = None, 18 | test_cfg: OptConfigType = None, 19 | data_preprocessor: OptConfigType = None, 20 | init_cfg: OptMultiConfig = None) -> None: 21 | super().__init__( 22 | backbone=backbone, 23 | neck=neck, 24 | rpn_head=rpn_head, 25 | roi_head=roi_head, 26 | train_cfg=train_cfg, 27 | test_cfg=test_cfg, 28 | data_preprocessor=data_preprocessor, 29 | init_cfg=init_cfg) 30 | -------------------------------------------------------------------------------- /downstream/det/mmdet/models/detectors/centernet.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) OpenMMLab. All rights reserved. 2 | from mmdet.registry import MODELS 3 | from mmdet.utils import ConfigType, OptConfigType, OptMultiConfig 4 | from .single_stage import SingleStageDetector 5 | 6 | 7 | @MODELS.register_module() 8 | class CenterNet(SingleStageDetector): 9 | """Implementation of CenterNet(Objects as Points) 10 | 11 | . 12 | """ 13 | 14 | def __init__(self, 15 | backbone: ConfigType, 16 | neck: ConfigType, 17 | bbox_head: ConfigType, 18 | train_cfg: OptConfigType = None, 19 | test_cfg: OptConfigType = None, 20 | data_preprocessor: OptConfigType = None, 21 | init_cfg: OptMultiConfig = None) -> None: 22 | super().__init__( 23 | backbone=backbone, 24 | neck=neck, 25 | bbox_head=bbox_head, 26 | train_cfg=train_cfg, 27 | test_cfg=test_cfg, 28 | data_preprocessor=data_preprocessor, 29 | init_cfg=init_cfg) 30 | -------------------------------------------------------------------------------- /downstream/det/mmdet/models/detectors/condinst.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) OpenMMLab. All rights reserved. 2 | from mmdet.registry import MODELS 3 | from mmdet.utils import ConfigType, OptConfigType, OptMultiConfig 4 | from .single_stage_instance_seg import SingleStageInstanceSegmentor 5 | 6 | 7 | @MODELS.register_module() 8 | class CondInst(SingleStageInstanceSegmentor): 9 | """Implementation of `CondInst `_""" 10 | 11 | def __init__(self, 12 | backbone: ConfigType, 13 | neck: ConfigType, 14 | bbox_head: ConfigType, 15 | mask_head: ConfigType, 16 | train_cfg: OptConfigType = None, 17 | test_cfg: OptConfigType = None, 18 | data_preprocessor: OptConfigType = None, 19 | init_cfg: OptMultiConfig = None) -> None: 20 | super().__init__( 21 | backbone=backbone, 22 | neck=neck, 23 | bbox_head=bbox_head, 24 | mask_head=mask_head, 25 | train_cfg=train_cfg, 26 | test_cfg=test_cfg, 27 | data_preprocessor=data_preprocessor, 28 | init_cfg=init_cfg) 29 | -------------------------------------------------------------------------------- /downstream/det/mmdet/models/detectors/cornernet.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) OpenMMLab. All rights reserved. 2 | from mmdet.registry import MODELS 3 | from mmdet.utils import ConfigType, OptConfigType, OptMultiConfig 4 | from .single_stage import SingleStageDetector 5 | 6 | 7 | @MODELS.register_module() 8 | class CornerNet(SingleStageDetector): 9 | """CornerNet. 10 | 11 | This detector is the implementation of the paper `CornerNet: Detecting 12 | Objects as Paired Keypoints `_ . 13 | """ 14 | 15 | def __init__(self, 16 | backbone: ConfigType, 17 | neck: ConfigType, 18 | bbox_head: ConfigType, 19 | train_cfg: OptConfigType = None, 20 | test_cfg: OptConfigType = None, 21 | data_preprocessor: OptConfigType = None, 22 | init_cfg: OptMultiConfig = None) -> None: 23 | super().__init__( 24 | backbone=backbone, 25 | neck=neck, 26 | bbox_head=bbox_head, 27 | train_cfg=train_cfg, 28 | test_cfg=test_cfg, 29 | data_preprocessor=data_preprocessor, 30 | init_cfg=init_cfg) 31 | -------------------------------------------------------------------------------- /downstream/det/mmdet/models/detectors/fast_rcnn.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) OpenMMLab. All rights reserved. 2 | from mmdet.registry import MODELS 3 | from mmdet.utils import ConfigType, OptConfigType, OptMultiConfig 4 | from .two_stage import TwoStageDetector 5 | 6 | 7 | @MODELS.register_module() 8 | class FastRCNN(TwoStageDetector): 9 | """Implementation of `Fast R-CNN `_""" 10 | 11 | def __init__(self, 12 | backbone: ConfigType, 13 | roi_head: ConfigType, 14 | train_cfg: ConfigType, 15 | test_cfg: ConfigType, 16 | neck: OptConfigType = None, 17 | data_preprocessor: OptConfigType = None, 18 | init_cfg: OptMultiConfig = None) -> None: 19 | super().__init__( 20 | backbone=backbone, 21 | neck=neck, 22 | roi_head=roi_head, 23 | train_cfg=train_cfg, 24 | test_cfg=test_cfg, 25 | init_cfg=init_cfg, 26 | data_preprocessor=data_preprocessor) 27 | -------------------------------------------------------------------------------- /downstream/det/mmdet/models/detectors/faster_rcnn.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) OpenMMLab. All rights reserved. 2 | from mmdet.registry import MODELS 3 | from mmdet.utils import ConfigType, OptConfigType, OptMultiConfig 4 | from .two_stage import TwoStageDetector 5 | 6 | 7 | @MODELS.register_module() 8 | class FasterRCNN(TwoStageDetector): 9 | """Implementation of `Faster R-CNN `_""" 10 | 11 | def __init__(self, 12 | backbone: ConfigType, 13 | rpn_head: ConfigType, 14 | roi_head: ConfigType, 15 | train_cfg: ConfigType, 16 | test_cfg: ConfigType, 17 | neck: OptConfigType = None, 18 | data_preprocessor: OptConfigType = None, 19 | init_cfg: OptMultiConfig = None) -> None: 20 | super().__init__( 21 | backbone=backbone, 22 | neck=neck, 23 | rpn_head=rpn_head, 24 | roi_head=roi_head, 25 | train_cfg=train_cfg, 26 | test_cfg=test_cfg, 27 | init_cfg=init_cfg, 28 | data_preprocessor=data_preprocessor) 29 | -------------------------------------------------------------------------------- /downstream/det/mmdet/models/detectors/fsaf.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) OpenMMLab. All rights reserved. 2 | from mmdet.registry import MODELS 3 | from mmdet.utils import ConfigType, OptConfigType, OptMultiConfig 4 | from .single_stage import SingleStageDetector 5 | 6 | 7 | @MODELS.register_module() 8 | class FSAF(SingleStageDetector): 9 | """Implementation of `FSAF `_""" 10 | 11 | def __init__(self, 12 | backbone: ConfigType, 13 | neck: ConfigType, 14 | bbox_head: ConfigType, 15 | train_cfg: OptConfigType = None, 16 | test_cfg: OptConfigType = None, 17 | data_preprocessor: OptConfigType = None, 18 | init_cfg: OptMultiConfig = None): 19 | super().__init__( 20 | backbone=backbone, 21 | neck=neck, 22 | bbox_head=bbox_head, 23 | train_cfg=train_cfg, 24 | test_cfg=test_cfg, 25 | data_preprocessor=data_preprocessor, 26 | init_cfg=init_cfg) 27 | -------------------------------------------------------------------------------- /downstream/det/mmdet/models/detectors/grid_rcnn.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) OpenMMLab. All rights reserved. 2 | from mmdet.registry import MODELS 3 | from mmdet.utils import ConfigType, OptConfigType, OptMultiConfig 4 | from .two_stage import TwoStageDetector 5 | 6 | 7 | @MODELS.register_module() 8 | class GridRCNN(TwoStageDetector): 9 | """Grid R-CNN. 10 | 11 | This detector is the implementation of: 12 | - Grid R-CNN (https://arxiv.org/abs/1811.12030) 13 | - Grid R-CNN Plus: Faster and Better (https://arxiv.org/abs/1906.05688) 14 | """ 15 | 16 | def __init__(self, 17 | backbone: ConfigType, 18 | rpn_head: ConfigType, 19 | roi_head: ConfigType, 20 | train_cfg: ConfigType, 21 | test_cfg: ConfigType, 22 | neck: OptConfigType = None, 23 | data_preprocessor: OptConfigType = None, 24 | init_cfg: OptMultiConfig = None) -> None: 25 | super().__init__( 26 | backbone=backbone, 27 | neck=neck, 28 | rpn_head=rpn_head, 29 | roi_head=roi_head, 30 | train_cfg=train_cfg, 31 | test_cfg=test_cfg, 32 | data_preprocessor=data_preprocessor, 33 | init_cfg=init_cfg) 34 | -------------------------------------------------------------------------------- /downstream/det/mmdet/models/detectors/htc.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) OpenMMLab. All rights reserved. 2 | from mmdet.registry import MODELS 3 | from .cascade_rcnn import CascadeRCNN 4 | 5 | 6 | @MODELS.register_module() 7 | class HybridTaskCascade(CascadeRCNN): 8 | """Implementation of `HTC `_""" 9 | 10 | def __init__(self, **kwargs) -> None: 11 | super().__init__(**kwargs) 12 | 13 | @property 14 | def with_semantic(self) -> bool: 15 | """bool: whether the detector has a semantic head""" 16 | return self.roi_head.with_semantic 17 | -------------------------------------------------------------------------------- /downstream/det/mmdet/models/detectors/mask2former.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) OpenMMLab. All rights reserved. 2 | from mmdet.registry import MODELS 3 | from mmdet.utils import ConfigType, OptConfigType, OptMultiConfig 4 | from .maskformer import MaskFormer 5 | 6 | 7 | @MODELS.register_module() 8 | class Mask2Former(MaskFormer): 9 | r"""Implementation of `Masked-attention Mask 10 | Transformer for Universal Image Segmentation 11 | `_.""" 12 | 13 | def __init__(self, 14 | backbone: ConfigType, 15 | neck: OptConfigType = None, 16 | panoptic_head: OptConfigType = None, 17 | panoptic_fusion_head: OptConfigType = None, 18 | train_cfg: OptConfigType = None, 19 | test_cfg: OptConfigType = None, 20 | data_preprocessor: OptConfigType = None, 21 | init_cfg: OptMultiConfig = None): 22 | super().__init__( 23 | backbone=backbone, 24 | neck=neck, 25 | panoptic_head=panoptic_head, 26 | panoptic_fusion_head=panoptic_fusion_head, 27 | train_cfg=train_cfg, 28 | test_cfg=test_cfg, 29 | data_preprocessor=data_preprocessor, 30 | init_cfg=init_cfg) 31 | -------------------------------------------------------------------------------- /downstream/det/mmdet/models/detectors/mask_rcnn.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) OpenMMLab. All rights reserved. 2 | from mmengine.config import ConfigDict 3 | 4 | from mmdet.registry import MODELS 5 | from mmdet.utils import OptConfigType, OptMultiConfig 6 | from .two_stage import TwoStageDetector 7 | 8 | 9 | @MODELS.register_module() 10 | class MaskRCNN(TwoStageDetector): 11 | """Implementation of `Mask R-CNN `_""" 12 | 13 | def __init__(self, 14 | backbone: ConfigDict, 15 | rpn_head: ConfigDict, 16 | roi_head: ConfigDict, 17 | train_cfg: ConfigDict, 18 | test_cfg: ConfigDict, 19 | neck: OptConfigType = None, 20 | data_preprocessor: OptConfigType = None, 21 | init_cfg: OptMultiConfig = None) -> None: 22 | super().__init__( 23 | backbone=backbone, 24 | neck=neck, 25 | rpn_head=rpn_head, 26 | roi_head=roi_head, 27 | train_cfg=train_cfg, 28 | test_cfg=test_cfg, 29 | init_cfg=init_cfg, 30 | data_preprocessor=data_preprocessor) 31 | -------------------------------------------------------------------------------- /downstream/det/mmdet/models/detectors/mask_scoring_rcnn.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) OpenMMLab. All rights reserved. 2 | from mmdet.registry import MODELS 3 | from mmdet.utils import ConfigType, OptConfigType, OptMultiConfig 4 | from .two_stage import TwoStageDetector 5 | 6 | 7 | @MODELS.register_module() 8 | class MaskScoringRCNN(TwoStageDetector): 9 | """Mask Scoring RCNN. 10 | 11 | https://arxiv.org/abs/1903.00241 12 | """ 13 | 14 | def __init__(self, 15 | backbone: ConfigType, 16 | rpn_head: ConfigType, 17 | roi_head: ConfigType, 18 | train_cfg: ConfigType, 19 | test_cfg: ConfigType, 20 | neck: OptConfigType = None, 21 | data_preprocessor: OptConfigType = None, 22 | init_cfg: OptMultiConfig = None) -> None: 23 | super().__init__( 24 | backbone=backbone, 25 | neck=neck, 26 | rpn_head=rpn_head, 27 | roi_head=roi_head, 28 | train_cfg=train_cfg, 29 | test_cfg=test_cfg, 30 | data_preprocessor=data_preprocessor, 31 | init_cfg=init_cfg) 32 | -------------------------------------------------------------------------------- /downstream/det/mmdet/models/detectors/point_rend.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) OpenMMLab. All rights reserved. 2 | from mmengine.config import ConfigDict 3 | 4 | from mmdet.registry import MODELS 5 | from mmdet.utils import OptConfigType, OptMultiConfig 6 | from .two_stage import TwoStageDetector 7 | 8 | 9 | @MODELS.register_module() 10 | class PointRend(TwoStageDetector): 11 | """PointRend: Image Segmentation as Rendering 12 | 13 | This detector is the implementation of 14 | `PointRend `_. 15 | 16 | """ 17 | 18 | def __init__(self, 19 | backbone: ConfigDict, 20 | rpn_head: ConfigDict, 21 | roi_head: ConfigDict, 22 | train_cfg: ConfigDict, 23 | test_cfg: ConfigDict, 24 | neck: OptConfigType = None, 25 | data_preprocessor: OptConfigType = None, 26 | init_cfg: OptMultiConfig = None) -> None: 27 | super().__init__( 28 | backbone=backbone, 29 | neck=neck, 30 | rpn_head=rpn_head, 31 | roi_head=roi_head, 32 | train_cfg=train_cfg, 33 | test_cfg=test_cfg, 34 | init_cfg=init_cfg, 35 | data_preprocessor=data_preprocessor) 36 | -------------------------------------------------------------------------------- /downstream/det/mmdet/models/detectors/queryinst.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) OpenMMLab. All rights reserved. 2 | from mmdet.registry import MODELS 3 | from mmdet.utils import ConfigType, OptConfigType, OptMultiConfig 4 | from .sparse_rcnn import SparseRCNN 5 | 6 | 7 | @MODELS.register_module() 8 | class QueryInst(SparseRCNN): 9 | r"""Implementation of 10 | `Instances as Queries `_""" 11 | 12 | def __init__(self, 13 | backbone: ConfigType, 14 | rpn_head: ConfigType, 15 | roi_head: ConfigType, 16 | train_cfg: ConfigType, 17 | test_cfg: ConfigType, 18 | neck: OptConfigType = None, 19 | data_preprocessor: OptConfigType = None, 20 | init_cfg: OptMultiConfig = None) -> None: 21 | super().__init__( 22 | backbone=backbone, 23 | neck=neck, 24 | rpn_head=rpn_head, 25 | roi_head=roi_head, 26 | train_cfg=train_cfg, 27 | test_cfg=test_cfg, 28 | data_preprocessor=data_preprocessor, 29 | init_cfg=init_cfg) 30 | -------------------------------------------------------------------------------- /downstream/det/mmdet/models/detectors/reppoints_detector.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) OpenMMLab. All rights reserved. 2 | from mmdet.registry import MODELS 3 | from mmdet.utils import ConfigType, OptConfigType, OptMultiConfig 4 | from .single_stage import SingleStageDetector 5 | 6 | 7 | @MODELS.register_module() 8 | class RepPointsDetector(SingleStageDetector): 9 | """RepPoints: Point Set Representation for Object Detection. 10 | 11 | This detector is the implementation of: 12 | - RepPoints detector (https://arxiv.org/pdf/1904.11490) 13 | """ 14 | 15 | def __init__(self, 16 | backbone: ConfigType, 17 | neck: ConfigType, 18 | bbox_head: ConfigType, 19 | train_cfg: OptConfigType = None, 20 | test_cfg: OptConfigType = None, 21 | data_preprocessor: OptConfigType = None, 22 | init_cfg: OptMultiConfig = None): 23 | super().__init__( 24 | backbone=backbone, 25 | neck=neck, 26 | bbox_head=bbox_head, 27 | train_cfg=train_cfg, 28 | test_cfg=test_cfg, 29 | data_preprocessor=data_preprocessor, 30 | init_cfg=init_cfg) 31 | -------------------------------------------------------------------------------- /downstream/det/mmdet/models/detectors/retinanet.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) OpenMMLab. All rights reserved. 2 | from mmdet.registry import MODELS 3 | from mmdet.utils import ConfigType, OptConfigType, OptMultiConfig 4 | from .single_stage import SingleStageDetector 5 | 6 | 7 | @MODELS.register_module() 8 | class RetinaNet(SingleStageDetector): 9 | """Implementation of `RetinaNet `_""" 10 | 11 | def __init__(self, 12 | backbone: ConfigType, 13 | neck: ConfigType, 14 | bbox_head: ConfigType, 15 | train_cfg: OptConfigType = None, 16 | test_cfg: OptConfigType = None, 17 | data_preprocessor: OptConfigType = None, 18 | init_cfg: OptMultiConfig = None) -> None: 19 | super().__init__( 20 | backbone=backbone, 21 | neck=neck, 22 | bbox_head=bbox_head, 23 | train_cfg=train_cfg, 24 | test_cfg=test_cfg, 25 | data_preprocessor=data_preprocessor, 26 | init_cfg=init_cfg) 27 | -------------------------------------------------------------------------------- /downstream/det/mmdet/models/detectors/scnet.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) OpenMMLab. All rights reserved. 2 | from mmdet.registry import MODELS 3 | from .cascade_rcnn import CascadeRCNN 4 | 5 | 6 | @MODELS.register_module() 7 | class SCNet(CascadeRCNN): 8 | """Implementation of `SCNet `_""" 9 | 10 | def __init__(self, **kwargs) -> None: 11 | super().__init__(**kwargs) 12 | -------------------------------------------------------------------------------- /downstream/det/mmdet/models/detectors/solo.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) OpenMMLab. All rights reserved. 2 | from mmdet.registry import MODELS 3 | from mmdet.utils import ConfigType, OptConfigType, OptMultiConfig 4 | from .single_stage_instance_seg import SingleStageInstanceSegmentor 5 | 6 | 7 | @MODELS.register_module() 8 | class SOLO(SingleStageInstanceSegmentor): 9 | """`SOLO: Segmenting Objects by Locations 10 | `_ 11 | 12 | """ 13 | 14 | def __init__(self, 15 | backbone: ConfigType, 16 | neck: OptConfigType = None, 17 | bbox_head: OptConfigType = None, 18 | mask_head: OptConfigType = None, 19 | train_cfg: OptConfigType = None, 20 | test_cfg: OptConfigType = None, 21 | data_preprocessor: OptConfigType = None, 22 | init_cfg: OptMultiConfig = None): 23 | super().__init__( 24 | backbone=backbone, 25 | neck=neck, 26 | bbox_head=bbox_head, 27 | mask_head=mask_head, 28 | train_cfg=train_cfg, 29 | test_cfg=test_cfg, 30 | data_preprocessor=data_preprocessor, 31 | init_cfg=init_cfg) 32 | -------------------------------------------------------------------------------- /downstream/det/mmdet/models/detectors/solov2.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) OpenMMLab. All rights reserved. 2 | from mmdet.registry import MODELS 3 | from mmdet.utils import ConfigType, OptConfigType, OptMultiConfig 4 | from .single_stage_instance_seg import SingleStageInstanceSegmentor 5 | 6 | 7 | @MODELS.register_module() 8 | class SOLOv2(SingleStageInstanceSegmentor): 9 | """`SOLOv2: Dynamic and Fast Instance Segmentation 10 | `_ 11 | 12 | """ 13 | 14 | def __init__(self, 15 | backbone: ConfigType, 16 | neck: OptConfigType = None, 17 | bbox_head: OptConfigType = None, 18 | mask_head: OptConfigType = None, 19 | train_cfg: OptConfigType = None, 20 | test_cfg: OptConfigType = None, 21 | data_preprocessor: OptConfigType = None, 22 | init_cfg: OptMultiConfig = None): 23 | super().__init__( 24 | backbone=backbone, 25 | neck=neck, 26 | bbox_head=bbox_head, 27 | mask_head=mask_head, 28 | train_cfg=train_cfg, 29 | test_cfg=test_cfg, 30 | data_preprocessor=data_preprocessor, 31 | init_cfg=init_cfg) 32 | -------------------------------------------------------------------------------- /downstream/det/mmdet/models/detectors/sparse_rcnn.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) OpenMMLab. All rights reserved. 2 | from mmdet.registry import MODELS 3 | from mmdet.utils import ConfigType, OptConfigType, OptMultiConfig 4 | from .two_stage import TwoStageDetector 5 | 6 | 7 | @MODELS.register_module() 8 | class SparseRCNN(TwoStageDetector): 9 | r"""Implementation of `Sparse R-CNN: End-to-End Object Detection with 10 | Learnable Proposals `_""" 11 | 12 | def __init__(self, 13 | backbone: ConfigType, 14 | neck: OptConfigType = None, 15 | rpn_head: OptConfigType = None, 16 | roi_head: OptConfigType = None, 17 | train_cfg: OptConfigType = None, 18 | test_cfg: OptConfigType = None, 19 | data_preprocessor: OptConfigType = None, 20 | init_cfg: OptMultiConfig = None) -> None: 21 | super().__init__( 22 | backbone=backbone, 23 | neck=neck, 24 | rpn_head=rpn_head, 25 | roi_head=roi_head, 26 | train_cfg=train_cfg, 27 | test_cfg=test_cfg, 28 | data_preprocessor=data_preprocessor, 29 | init_cfg=init_cfg) 30 | assert self.with_rpn, 'Sparse R-CNN and QueryInst ' \ 31 | 'do not support external proposals' 32 | -------------------------------------------------------------------------------- /downstream/det/mmdet/models/detectors/yolact.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) OpenMMLab. All rights reserved. 2 | from mmdet.registry import MODELS 3 | from mmdet.utils import ConfigType, OptConfigType, OptMultiConfig 4 | from .single_stage_instance_seg import SingleStageInstanceSegmentor 5 | 6 | 7 | @MODELS.register_module() 8 | class YOLACT(SingleStageInstanceSegmentor): 9 | """Implementation of `YOLACT `_""" 10 | 11 | def __init__(self, 12 | backbone: ConfigType, 13 | neck: ConfigType, 14 | bbox_head: ConfigType, 15 | mask_head: ConfigType, 16 | train_cfg: OptConfigType = None, 17 | test_cfg: OptConfigType = None, 18 | data_preprocessor: OptConfigType = None, 19 | init_cfg: OptMultiConfig = None) -> None: 20 | super().__init__( 21 | backbone=backbone, 22 | neck=neck, 23 | bbox_head=bbox_head, 24 | mask_head=mask_head, 25 | train_cfg=train_cfg, 26 | test_cfg=test_cfg, 27 | data_preprocessor=data_preprocessor, 28 | init_cfg=init_cfg) 29 | -------------------------------------------------------------------------------- /downstream/det/mmdet/models/language_models/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) OpenMMLab. All rights reserved. 2 | from .bert import BertModel 3 | 4 | __all__ = ['BertModel'] 5 | -------------------------------------------------------------------------------- /downstream/det/mmdet/models/layers/activations.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) OpenMMLab. All rights reserved. 2 | import torch 3 | import torch.nn as nn 4 | from mmengine.utils import digit_version 5 | 6 | from mmdet.registry import MODELS 7 | 8 | if digit_version(torch.__version__) >= digit_version('1.7.0'): 9 | from torch.nn import SiLU 10 | else: 11 | 12 | class SiLU(nn.Module): 13 | """Sigmoid Weighted Liner Unit.""" 14 | 15 | def __init__(self, inplace=True): 16 | super().__init__() 17 | 18 | def forward(self, inputs) -> torch.Tensor: 19 | return inputs * torch.sigmoid(inputs) 20 | 21 | 22 | MODELS.register_module(module=SiLU, name='SiLU') 23 | -------------------------------------------------------------------------------- /downstream/det/mmdet/models/mot/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) OpenMMLab. All rights reserved. 2 | from .base import BaseMOTModel 3 | from .bytetrack import ByteTrack 4 | from .deep_sort import DeepSORT 5 | from .ocsort import OCSORT 6 | from .qdtrack import QDTrack 7 | from .strongsort import StrongSORT 8 | 9 | __all__ = [ 10 | 'BaseMOTModel', 'ByteTrack', 'QDTrack', 'DeepSORT', 'StrongSORT', 'OCSORT' 11 | ] 12 | -------------------------------------------------------------------------------- /downstream/det/mmdet/models/necks/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) OpenMMLab. All rights reserved. 2 | from .bfp import BFP 3 | from .channel_mapper import ChannelMapper 4 | from .cspnext_pafpn import CSPNeXtPAFPN 5 | from .ct_resnet_neck import CTResNetNeck 6 | from .dilated_encoder import DilatedEncoder 7 | from .dyhead import DyHead 8 | from .fpg import FPG 9 | from .fpn import FPN 10 | from .fpn_carafe import FPN_CARAFE 11 | from .fpn_dropblock import FPN_DropBlock 12 | from .hrfpn import HRFPN 13 | from .nas_fpn import NASFPN 14 | from .nasfcos_fpn import NASFCOS_FPN 15 | from .pafpn import PAFPN 16 | from .rfp import RFP 17 | from .ssd_neck import SSDNeck 18 | from .ssh import SSH 19 | from .yolo_neck import YOLOV3Neck 20 | from .yolox_pafpn import YOLOXPAFPN 21 | 22 | __all__ = [ 23 | 'FPN', 'BFP', 'ChannelMapper', 'HRFPN', 'NASFPN', 'FPN_CARAFE', 'PAFPN', 24 | 'NASFCOS_FPN', 'RFP', 'YOLOV3Neck', 'FPG', 'DilatedEncoder', 25 | 'CTResNetNeck', 'SSDNeck', 'YOLOXPAFPN', 'DyHead', 'CSPNeXtPAFPN', 'SSH', 26 | 'FPN_DropBlock' 27 | ] 28 | -------------------------------------------------------------------------------- /downstream/det/mmdet/models/reid/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) OpenMMLab. All rights reserved. 2 | from .base_reid import BaseReID 3 | from .fc_module import FcModule 4 | from .gap import GlobalAveragePooling 5 | from .linear_reid_head import LinearReIDHead 6 | 7 | __all__ = ['BaseReID', 'GlobalAveragePooling', 'LinearReIDHead', 'FcModule'] 8 | -------------------------------------------------------------------------------- /downstream/det/mmdet/models/roi_heads/bbox_heads/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) OpenMMLab. All rights reserved. 2 | from .bbox_head import BBoxHead 3 | from .convfc_bbox_head import (ConvFCBBoxHead, Shared2FCBBoxHead, 4 | Shared4Conv1FCBBoxHead) 5 | from .dii_head import DIIHead 6 | from .double_bbox_head import DoubleConvFCBBoxHead 7 | from .multi_instance_bbox_head import MultiInstanceBBoxHead 8 | from .sabl_head import SABLHead 9 | from .scnet_bbox_head import SCNetBBoxHead 10 | 11 | __all__ = [ 12 | 'BBoxHead', 'ConvFCBBoxHead', 'Shared2FCBBoxHead', 13 | 'Shared4Conv1FCBBoxHead', 'DoubleConvFCBBoxHead', 'SABLHead', 'DIIHead', 14 | 'SCNetBBoxHead', 'MultiInstanceBBoxHead' 15 | ] 16 | -------------------------------------------------------------------------------- /downstream/det/mmdet/models/roi_heads/mask_heads/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) OpenMMLab. All rights reserved. 2 | from .coarse_mask_head import CoarseMaskHead 3 | from .dynamic_mask_head import DynamicMaskHead 4 | from .fcn_mask_head import FCNMaskHead 5 | from .feature_relay_head import FeatureRelayHead 6 | from .fused_semantic_head import FusedSemanticHead 7 | from .global_context_head import GlobalContextHead 8 | from .grid_head import GridHead 9 | from .htc_mask_head import HTCMaskHead 10 | from .mask_point_head import MaskPointHead 11 | from .maskiou_head import MaskIoUHead 12 | from .scnet_mask_head import SCNetMaskHead 13 | from .scnet_semantic_head import SCNetSemanticHead 14 | 15 | __all__ = [ 16 | 'FCNMaskHead', 'HTCMaskHead', 'FusedSemanticHead', 'GridHead', 17 | 'MaskIoUHead', 'CoarseMaskHead', 'MaskPointHead', 'SCNetMaskHead', 18 | 'SCNetSemanticHead', 'GlobalContextHead', 'FeatureRelayHead', 19 | 'DynamicMaskHead' 20 | ] 21 | -------------------------------------------------------------------------------- /downstream/det/mmdet/models/roi_heads/mask_heads/scnet_mask_head.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) OpenMMLab. All rights reserved. 2 | from mmdet.models.layers import ResLayer, SimplifiedBasicBlock 3 | from mmdet.registry import MODELS 4 | from .fcn_mask_head import FCNMaskHead 5 | 6 | 7 | @MODELS.register_module() 8 | class SCNetMaskHead(FCNMaskHead): 9 | """Mask head for `SCNet `_. 10 | 11 | Args: 12 | conv_to_res (bool, optional): if True, change the conv layers to 13 | ``SimplifiedBasicBlock``. 14 | """ 15 | 16 | def __init__(self, conv_to_res: bool = True, **kwargs) -> None: 17 | super().__init__(**kwargs) 18 | self.conv_to_res = conv_to_res 19 | if conv_to_res: 20 | assert self.conv_kernel_size == 3 21 | self.num_res_blocks = self.num_convs // 2 22 | self.convs = ResLayer( 23 | SimplifiedBasicBlock, 24 | self.in_channels, 25 | self.conv_out_channels, 26 | self.num_res_blocks, 27 | conv_cfg=self.conv_cfg, 28 | norm_cfg=self.norm_cfg) 29 | -------------------------------------------------------------------------------- /downstream/det/mmdet/models/roi_heads/mask_heads/scnet_semantic_head.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) OpenMMLab. All rights reserved. 2 | from mmdet.models.layers import ResLayer, SimplifiedBasicBlock 3 | from mmdet.registry import MODELS 4 | from .fused_semantic_head import FusedSemanticHead 5 | 6 | 7 | @MODELS.register_module() 8 | class SCNetSemanticHead(FusedSemanticHead): 9 | """Mask head for `SCNet `_. 10 | 11 | Args: 12 | conv_to_res (bool, optional): if True, change the conv layers to 13 | ``SimplifiedBasicBlock``. 14 | """ 15 | 16 | def __init__(self, conv_to_res: bool = True, **kwargs) -> None: 17 | super().__init__(**kwargs) 18 | self.conv_to_res = conv_to_res 19 | if self.conv_to_res: 20 | num_res_blocks = self.num_convs // 2 21 | self.convs = ResLayer( 22 | SimplifiedBasicBlock, 23 | self.in_channels, 24 | self.conv_out_channels, 25 | num_res_blocks, 26 | conv_cfg=self.conv_cfg, 27 | norm_cfg=self.norm_cfg) 28 | self.num_convs = num_res_blocks 29 | -------------------------------------------------------------------------------- /downstream/det/mmdet/models/roi_heads/roi_extractors/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) OpenMMLab. All rights reserved. 2 | from .base_roi_extractor import BaseRoIExtractor 3 | from .generic_roi_extractor import GenericRoIExtractor 4 | from .single_level_roi_extractor import SingleRoIExtractor 5 | 6 | __all__ = ['BaseRoIExtractor', 'SingleRoIExtractor', 'GenericRoIExtractor'] 7 | -------------------------------------------------------------------------------- /downstream/det/mmdet/models/roi_heads/shared_heads/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) OpenMMLab. All rights reserved. 2 | from .res_layer import ResLayer 3 | 4 | __all__ = ['ResLayer'] 5 | -------------------------------------------------------------------------------- /downstream/det/mmdet/models/seg_heads/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) OpenMMLab. All rights reserved. 2 | from .panoptic_fpn_head import PanopticFPNHead # noqa: F401,F403 3 | from .panoptic_fusion_heads import * # noqa: F401,F403 4 | -------------------------------------------------------------------------------- /downstream/det/mmdet/models/seg_heads/panoptic_fusion_heads/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) OpenMMLab. All rights reserved. 2 | from .base_panoptic_fusion_head import \ 3 | BasePanopticFusionHead # noqa: F401,F403 4 | from .heuristic_fusion_head import HeuristicFusionHead # noqa: F401,F403 5 | from .maskformer_fusion_head import MaskFormerFusionHead # noqa: F401,F403 6 | -------------------------------------------------------------------------------- /downstream/det/mmdet/models/task_modules/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) OpenMMLab. All rights reserved. 2 | from .assigners import * # noqa: F401,F403 3 | from .builder import (ANCHOR_GENERATORS, BBOX_ASSIGNERS, BBOX_CODERS, 4 | BBOX_SAMPLERS, IOU_CALCULATORS, MATCH_COSTS, 5 | PRIOR_GENERATORS, build_anchor_generator, build_assigner, 6 | build_bbox_coder, build_iou_calculator, build_match_cost, 7 | build_prior_generator, build_sampler) 8 | from .coders import * # noqa: F401,F403 9 | from .prior_generators import * # noqa: F401,F403 10 | from .samplers import * # noqa: F401,F403 11 | from .tracking import * # noqa: F401,F403 12 | 13 | __all__ = [ 14 | 'ANCHOR_GENERATORS', 'PRIOR_GENERATORS', 'BBOX_ASSIGNERS', 'BBOX_SAMPLERS', 15 | 'MATCH_COSTS', 'BBOX_CODERS', 'IOU_CALCULATORS', 'build_anchor_generator', 16 | 'build_prior_generator', 'build_assigner', 'build_sampler', 17 | 'build_iou_calculator', 'build_match_cost', 'build_bbox_coder' 18 | ] 19 | -------------------------------------------------------------------------------- /downstream/det/mmdet/models/task_modules/assigners/base_assigner.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) OpenMMLab. All rights reserved. 2 | from abc import ABCMeta, abstractmethod 3 | from typing import Optional 4 | 5 | from mmengine.structures import InstanceData 6 | 7 | 8 | class BaseAssigner(metaclass=ABCMeta): 9 | """Base assigner that assigns boxes to ground truth boxes.""" 10 | 11 | @abstractmethod 12 | def assign(self, 13 | pred_instances: InstanceData, 14 | gt_instances: InstanceData, 15 | gt_instances_ignore: Optional[InstanceData] = None, 16 | **kwargs): 17 | """Assign boxes to either a ground truth boxes or a negative boxes.""" 18 | -------------------------------------------------------------------------------- /downstream/det/mmdet/models/task_modules/coders/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) OpenMMLab. All rights reserved. 2 | from .base_bbox_coder import BaseBBoxCoder 3 | from .bucketing_bbox_coder import BucketingBBoxCoder 4 | from .delta_xywh_bbox_coder import (DeltaXYWHBBoxCoder, 5 | DeltaXYWHBBoxCoderForGLIP) 6 | from .distance_point_bbox_coder import DistancePointBBoxCoder 7 | from .legacy_delta_xywh_bbox_coder import LegacyDeltaXYWHBBoxCoder 8 | from .pseudo_bbox_coder import PseudoBBoxCoder 9 | from .tblr_bbox_coder import TBLRBBoxCoder 10 | from .yolo_bbox_coder import YOLOBBoxCoder 11 | 12 | __all__ = [ 13 | 'BaseBBoxCoder', 'PseudoBBoxCoder', 'DeltaXYWHBBoxCoder', 14 | 'LegacyDeltaXYWHBBoxCoder', 'TBLRBBoxCoder', 'YOLOBBoxCoder', 15 | 'BucketingBBoxCoder', 'DistancePointBBoxCoder', 'DeltaXYWHBBoxCoderForGLIP' 16 | ] 17 | -------------------------------------------------------------------------------- /downstream/det/mmdet/models/task_modules/coders/base_bbox_coder.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) OpenMMLab. All rights reserved. 2 | from abc import ABCMeta, abstractmethod 3 | 4 | 5 | class BaseBBoxCoder(metaclass=ABCMeta): 6 | """Base bounding box coder. 7 | 8 | Args: 9 | use_box_type (bool): Whether to warp decoded boxes with the 10 | box type data structure. Defaults to False. 11 | """ 12 | 13 | # The size of the last of dimension of the encoded tensor. 14 | encode_size = 4 15 | 16 | def __init__(self, use_box_type: bool = False, **kwargs): 17 | self.use_box_type = use_box_type 18 | 19 | @abstractmethod 20 | def encode(self, bboxes, gt_bboxes): 21 | """Encode deltas between bboxes and ground truth boxes.""" 22 | 23 | @abstractmethod 24 | def decode(self, bboxes, bboxes_pred): 25 | """Decode the predicted bboxes according to prediction and base 26 | boxes.""" 27 | -------------------------------------------------------------------------------- /downstream/det/mmdet/models/task_modules/coders/pseudo_bbox_coder.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) OpenMMLab. All rights reserved. 2 | from typing import Union 3 | 4 | from torch import Tensor 5 | 6 | from mmdet.registry import TASK_UTILS 7 | from mmdet.structures.bbox import BaseBoxes, HorizontalBoxes, get_box_tensor 8 | from .base_bbox_coder import BaseBBoxCoder 9 | 10 | 11 | @TASK_UTILS.register_module() 12 | class PseudoBBoxCoder(BaseBBoxCoder): 13 | """Pseudo bounding box coder.""" 14 | 15 | def __init__(self, **kwargs): 16 | super().__init__(**kwargs) 17 | 18 | def encode(self, bboxes: Tensor, gt_bboxes: Union[Tensor, 19 | BaseBoxes]) -> Tensor: 20 | """torch.Tensor: return the given ``bboxes``""" 21 | gt_bboxes = get_box_tensor(gt_bboxes) 22 | return gt_bboxes 23 | 24 | def decode(self, bboxes: Tensor, pred_bboxes: Union[Tensor, 25 | BaseBoxes]) -> Tensor: 26 | """torch.Tensor: return the given ``pred_bboxes``""" 27 | if self.use_box_type: 28 | pred_bboxes = HorizontalBoxes(pred_bboxes) 29 | return pred_bboxes 30 | -------------------------------------------------------------------------------- /downstream/det/mmdet/models/task_modules/prior_generators/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) OpenMMLab. All rights reserved. 2 | from .anchor_generator import (AnchorGenerator, LegacyAnchorGenerator, 3 | SSDAnchorGenerator, YOLOAnchorGenerator) 4 | from .point_generator import MlvlPointGenerator, PointGenerator 5 | from .utils import anchor_inside_flags, calc_region 6 | 7 | __all__ = [ 8 | 'AnchorGenerator', 'LegacyAnchorGenerator', 'anchor_inside_flags', 9 | 'PointGenerator', 'calc_region', 'YOLOAnchorGenerator', 10 | 'MlvlPointGenerator', 'SSDAnchorGenerator' 11 | ] 12 | -------------------------------------------------------------------------------- /downstream/det/mmdet/models/task_modules/samplers/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) OpenMMLab. All rights reserved. 2 | from .base_sampler import BaseSampler 3 | from .combined_sampler import CombinedSampler 4 | from .instance_balanced_pos_sampler import InstanceBalancedPosSampler 5 | from .iou_balanced_neg_sampler import IoUBalancedNegSampler 6 | from .mask_pseudo_sampler import MaskPseudoSampler 7 | from .mask_sampling_result import MaskSamplingResult 8 | from .multi_instance_random_sampler import MultiInsRandomSampler 9 | from .multi_instance_sampling_result import MultiInstanceSamplingResult 10 | from .ohem_sampler import OHEMSampler 11 | from .pseudo_sampler import PseudoSampler 12 | from .random_sampler import RandomSampler 13 | from .sampling_result import SamplingResult 14 | from .score_hlr_sampler import ScoreHLRSampler 15 | 16 | __all__ = [ 17 | 'BaseSampler', 'PseudoSampler', 'RandomSampler', 18 | 'InstanceBalancedPosSampler', 'IoUBalancedNegSampler', 'CombinedSampler', 19 | 'OHEMSampler', 'SamplingResult', 'ScoreHLRSampler', 'MaskPseudoSampler', 20 | 'MaskSamplingResult', 'MultiInstanceSamplingResult', 21 | 'MultiInsRandomSampler' 22 | ] 23 | -------------------------------------------------------------------------------- /downstream/det/mmdet/models/task_modules/samplers/combined_sampler.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) OpenMMLab. All rights reserved. 2 | from mmdet.registry import TASK_UTILS 3 | from .base_sampler import BaseSampler 4 | 5 | 6 | @TASK_UTILS.register_module() 7 | class CombinedSampler(BaseSampler): 8 | """A sampler that combines positive sampler and negative sampler.""" 9 | 10 | def __init__(self, pos_sampler, neg_sampler, **kwargs): 11 | super(CombinedSampler, self).__init__(**kwargs) 12 | self.pos_sampler = TASK_UTILS.build(pos_sampler, default_args=kwargs) 13 | self.neg_sampler = TASK_UTILS.build(neg_sampler, default_args=kwargs) 14 | 15 | def _sample_pos(self, **kwargs): 16 | """Sample positive samples.""" 17 | raise NotImplementedError 18 | 19 | def _sample_neg(self, **kwargs): 20 | """Sample negative samples.""" 21 | raise NotImplementedError 22 | -------------------------------------------------------------------------------- /downstream/det/mmdet/models/task_modules/tracking/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) OpenMMLab. All rights reserved. 2 | from .aflink import AppearanceFreeLink 3 | from .camera_motion_compensation import CameraMotionCompensation 4 | from .interpolation import InterpolateTracklets 5 | from .kalman_filter import KalmanFilter 6 | from .similarity import embed_similarity 7 | 8 | __all__ = [ 9 | 'KalmanFilter', 'InterpolateTracklets', 'embed_similarity', 10 | 'AppearanceFreeLink', 'CameraMotionCompensation' 11 | ] 12 | -------------------------------------------------------------------------------- /downstream/det/mmdet/models/task_modules/tracking/similarity.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) OpenMMLab. All rights reserved. 2 | import torch 3 | import torch.nn.functional as F 4 | from torch import Tensor 5 | 6 | 7 | def embed_similarity(key_embeds: Tensor, 8 | ref_embeds: Tensor, 9 | method: str = 'dot_product', 10 | temperature: int = -1) -> Tensor: 11 | """Calculate feature similarity from embeddings. 12 | 13 | Args: 14 | key_embeds (Tensor): Shape (N1, C). 15 | ref_embeds (Tensor): Shape (N2, C). 16 | method (str, optional): Method to calculate the similarity, 17 | options are 'dot_product' and 'cosine'. Defaults to 18 | 'dot_product'. 19 | temperature (int, optional): Softmax temperature. Defaults to -1. 20 | 21 | Returns: 22 | Tensor: Similarity matrix of shape (N1, N2). 23 | """ 24 | assert method in ['dot_product', 'cosine'] 25 | 26 | if method == 'cosine': 27 | key_embeds = F.normalize(key_embeds, p=2, dim=1) 28 | ref_embeds = F.normalize(ref_embeds, p=2, dim=1) 29 | 30 | similarity = torch.mm(key_embeds, ref_embeds.T) 31 | 32 | if temperature > 0: 33 | similarity /= float(temperature) 34 | return similarity 35 | -------------------------------------------------------------------------------- /downstream/det/mmdet/models/test_time_augs/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) OpenMMLab. All rights reserved. 2 | from .det_tta import DetTTAModel 3 | from .merge_augs import (merge_aug_bboxes, merge_aug_masks, 4 | merge_aug_proposals, merge_aug_results, 5 | merge_aug_scores) 6 | 7 | __all__ = [ 8 | 'merge_aug_bboxes', 'merge_aug_masks', 'merge_aug_proposals', 9 | 'merge_aug_scores', 'merge_aug_results', 'DetTTAModel' 10 | ] 11 | -------------------------------------------------------------------------------- /downstream/det/mmdet/models/trackers/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) OpenMMLab. All rights reserved. 2 | from .base_tracker import BaseTracker 3 | from .byte_tracker import ByteTracker 4 | from .masktrack_rcnn_tracker import MaskTrackRCNNTracker 5 | from .ocsort_tracker import OCSORTTracker 6 | from .quasi_dense_tracker import QuasiDenseTracker 7 | from .sort_tracker import SORTTracker 8 | from .strongsort_tracker import StrongSORTTracker 9 | 10 | __all__ = [ 11 | 'BaseTracker', 'ByteTracker', 'QuasiDenseTracker', 'SORTTracker', 12 | 'StrongSORTTracker', 'OCSORTTracker', 'MaskTrackRCNNTracker' 13 | ] 14 | -------------------------------------------------------------------------------- /downstream/det/mmdet/models/tracking_heads/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) OpenMMLab. All rights reserved. 2 | from .mask2former_track_head import Mask2FormerTrackHead 3 | from .quasi_dense_embed_head import QuasiDenseEmbedHead 4 | from .quasi_dense_track_head import QuasiDenseTrackHead 5 | from .roi_embed_head import RoIEmbedHead 6 | from .roi_track_head import RoITrackHead 7 | 8 | __all__ = [ 9 | 'QuasiDenseEmbedHead', 'QuasiDenseTrackHead', 'Mask2FormerTrackHead', 10 | 'RoIEmbedHead', 'RoITrackHead' 11 | ] 12 | -------------------------------------------------------------------------------- /downstream/det/mmdet/models/utils/make_divisible.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) OpenMMLab. All rights reserved. 2 | def make_divisible(value, divisor, min_value=None, min_ratio=0.9): 3 | """Make divisible function. 4 | 5 | This function rounds the channel number to the nearest value that can be 6 | divisible by the divisor. It is taken from the original tf repo. It ensures 7 | that all layers have a channel number that is divisible by divisor. It can 8 | be seen here: https://github.com/tensorflow/models/blob/master/research/slim/nets/mobilenet/mobilenet.py # noqa 9 | 10 | Args: 11 | value (int): The original channel number. 12 | divisor (int): The divisor to fully divide the channel number. 13 | min_value (int): The minimum value of the output channel. 14 | Default: None, means that the minimum value equal to the divisor. 15 | min_ratio (float): The minimum ratio of the rounded channel number to 16 | the original channel number. Default: 0.9. 17 | 18 | Returns: 19 | int: The modified output channel number. 20 | """ 21 | 22 | if min_value is None: 23 | min_value = divisor 24 | new_value = max(min_value, int(value + divisor / 2) // divisor * divisor) 25 | # Make sure that round down does not go down by more than (1-min_ratio). 26 | if new_value < min_ratio * value: 27 | new_value += divisor 28 | return new_value 29 | -------------------------------------------------------------------------------- /downstream/det/mmdet/models/vis/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) OpenMMLab. All rights reserved. 2 | from .mask2former_vis import Mask2FormerVideo 3 | from .masktrack_rcnn import MaskTrackRCNN 4 | 5 | __all__ = ['Mask2FormerVideo', 'MaskTrackRCNN'] 6 | -------------------------------------------------------------------------------- /downstream/det/mmdet/structures/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) OpenMMLab. All rights reserved. 2 | from .det_data_sample import DetDataSample, OptSampleList, SampleList 3 | from .reid_data_sample import ReIDDataSample 4 | from .track_data_sample import (OptTrackSampleList, TrackDataSample, 5 | TrackSampleList) 6 | 7 | __all__ = [ 8 | 'DetDataSample', 'SampleList', 'OptSampleList', 'TrackDataSample', 9 | 'TrackSampleList', 'OptTrackSampleList', 'ReIDDataSample' 10 | ] 11 | -------------------------------------------------------------------------------- /downstream/det/mmdet/structures/mask/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) OpenMMLab. All rights reserved. 2 | from .mask_target import mask_target 3 | from .structures import (BaseInstanceMasks, BitmapMasks, PolygonMasks, 4 | bitmap_to_polygon, polygon_to_bitmap) 5 | from .utils import encode_mask_results, mask2bbox, split_combined_polys 6 | 7 | __all__ = [ 8 | 'split_combined_polys', 'mask_target', 'BaseInstanceMasks', 'BitmapMasks', 9 | 'PolygonMasks', 'encode_mask_results', 'mask2bbox', 'polygon_to_bitmap', 10 | 'bitmap_to_polygon' 11 | ] 12 | -------------------------------------------------------------------------------- /downstream/det/mmdet/testing/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) OpenMMLab. All rights reserved. 2 | from ._fast_stop_training_hook import FastStopTrainingHook # noqa: F401,F403 3 | from ._utils import (demo_mm_inputs, demo_mm_proposals, 4 | demo_mm_sampling_results, demo_track_inputs, 5 | get_detector_cfg, get_roi_head_cfg, random_boxes, 6 | replace_to_ceph) 7 | 8 | __all__ = [ 9 | 'demo_mm_inputs', 'get_detector_cfg', 'get_roi_head_cfg', 10 | 'demo_mm_proposals', 'demo_mm_sampling_results', 'replace_to_ceph', 11 | 'demo_track_inputs', 'VideoDataSampleFeeder', 'random_boxes' 12 | ] 13 | -------------------------------------------------------------------------------- /downstream/det/mmdet/testing/_fast_stop_training_hook.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) OpenMMLab. All rights reserved. 2 | from mmengine.hooks import Hook 3 | 4 | from mmdet.registry import HOOKS 5 | 6 | 7 | @HOOKS.register_module() 8 | class FastStopTrainingHook(Hook): 9 | """Set runner's epoch information to the model.""" 10 | 11 | def __init__(self, by_epoch, save_ckpt=False, stop_iter_or_epoch=5): 12 | self.by_epoch = by_epoch 13 | self.save_ckpt = save_ckpt 14 | self.stop_iter_or_epoch = stop_iter_or_epoch 15 | 16 | def after_train_iter(self, runner, batch_idx: int, data_batch: None, 17 | outputs: None) -> None: 18 | if self.save_ckpt and self.by_epoch: 19 | # If it is epoch-based and want to save weights, 20 | # we must run at least 1 epoch. 21 | return 22 | if runner.iter >= self.stop_iter_or_epoch: 23 | raise RuntimeError('quick exit') 24 | 25 | def after_train_epoch(self, runner) -> None: 26 | if runner.epoch >= self.stop_iter_or_epoch - 1: 27 | raise RuntimeError('quick exit') 28 | -------------------------------------------------------------------------------- /downstream/det/mmdet/utils/collect_env.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) OpenMMLab. All rights reserved. 2 | from mmengine.utils import get_git_hash 3 | from mmengine.utils.dl_utils import collect_env as collect_base_env 4 | 5 | import mmdet 6 | 7 | 8 | def collect_env(): 9 | """Collect the information of the running environments.""" 10 | env_info = collect_base_env() 11 | env_info['MMDetection'] = mmdet.__version__ + '+' + get_git_hash()[:7] 12 | return env_info 13 | 14 | 15 | if __name__ == '__main__': 16 | for name, val in collect_env().items(): 17 | print(f'{name}: {val}') 18 | -------------------------------------------------------------------------------- /downstream/det/mmdet/utils/typing_utils.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) OpenMMLab. All rights reserved. 2 | """Collecting some commonly used type hint in mmdetection.""" 3 | from typing import List, Optional, Sequence, Tuple, Union 4 | 5 | from mmengine.config import ConfigDict 6 | from mmengine.structures import InstanceData, PixelData 7 | 8 | # TODO: Need to avoid circular import with assigner and sampler 9 | # Type hint of config data 10 | ConfigType = Union[ConfigDict, dict] 11 | OptConfigType = Optional[ConfigType] 12 | # Type hint of one or more config data 13 | MultiConfig = Union[ConfigType, List[ConfigType]] 14 | OptMultiConfig = Optional[MultiConfig] 15 | 16 | InstanceList = List[InstanceData] 17 | OptInstanceList = Optional[InstanceList] 18 | 19 | PixelList = List[PixelData] 20 | OptPixelList = Optional[PixelList] 21 | 22 | RangeType = Sequence[Tuple[int, int]] 23 | -------------------------------------------------------------------------------- /downstream/det/mmdet/utils/util_random.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) OpenMMLab. All rights reserved. 2 | """Helpers for random number generators.""" 3 | import numpy as np 4 | 5 | 6 | def ensure_rng(rng=None): 7 | """Coerces input into a random number generator. 8 | 9 | If the input is None, then a global random state is returned. 10 | 11 | If the input is a numeric value, then that is used as a seed to construct a 12 | random state. Otherwise the input is returned as-is. 13 | 14 | Adapted from [1]_. 15 | 16 | Args: 17 | rng (int | numpy.random.RandomState | None): 18 | if None, then defaults to the global rng. Otherwise this can be an 19 | integer or a RandomState class 20 | Returns: 21 | (numpy.random.RandomState) : rng - 22 | a numpy random number generator 23 | 24 | References: 25 | .. [1] https://gitlab.kitware.com/computer-vision/kwarray/blob/master/kwarray/util_random.py#L270 # noqa: E501 26 | """ 27 | 28 | if rng is None: 29 | rng = np.random.mtrand._rand 30 | elif isinstance(rng, int): 31 | rng = np.random.RandomState(rng) 32 | else: 33 | rng = rng 34 | return rng 35 | -------------------------------------------------------------------------------- /downstream/det/mmdet/version.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) OpenMMLab. All rights reserved. 2 | 3 | __version__ = '3.3.0' 4 | short_version = __version__ 5 | 6 | 7 | def parse_version_info(version_str): 8 | """Parse a version string into a tuple. 9 | 10 | Args: 11 | version_str (str): The version string. 12 | Returns: 13 | tuple[int | str]: The version info, e.g., "1.3.0" is parsed into 14 | (1, 3, 0), and "2.0.0rc1" is parsed into (2, 0, 0, 'rc1'). 15 | """ 16 | version_info = [] 17 | for x in version_str.split('.'): 18 | if x.isdigit(): 19 | version_info.append(int(x)) 20 | elif x.find('rc') != -1: 21 | patch_version = x.split('rc') 22 | version_info.append(int(patch_version[0])) 23 | version_info.append(f'rc{patch_version[1]}') 24 | return tuple(version_info) 25 | 26 | 27 | version_info = parse_version_info(__version__) 28 | -------------------------------------------------------------------------------- /downstream/det/mmdet/visualization/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) OpenMMLab. All rights reserved. 2 | from .local_visualizer import DetLocalVisualizer, TrackLocalVisualizer 3 | from .palette import get_palette, jitter_color, palette_val 4 | 5 | __all__ = [ 6 | 'palette_val', 'get_palette', 'DetLocalVisualizer', 'jitter_color', 7 | 'TrackLocalVisualizer' 8 | ] 9 | -------------------------------------------------------------------------------- /downstream/det/tools/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lewandofskee/MobileMamba/0980f48a23d232e0f2e86e740eccab038c8fd760/downstream/det/tools/__init__.py -------------------------------------------------------------------------------- /downstream/det/tools/analysis_tools/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lewandofskee/MobileMamba/0980f48a23d232e0f2e86e740eccab038c8fd760/downstream/det/tools/analysis_tools/__init__.py -------------------------------------------------------------------------------- /downstream/det/tools/analysis_tools/mot/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lewandofskee/MobileMamba/0980f48a23d232e0f2e86e740eccab038c8fd760/downstream/det/tools/analysis_tools/mot/__init__.py -------------------------------------------------------------------------------- /downstream/det/tools/analysis_tools/mot/dist_mot_search.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | CONFIG=$1 4 | GPUS=$2 5 | PORT=${PORT:-29500} 6 | 7 | PYTHONPATH="$(dirname $0)/..":$PYTHONPATH \ 8 | python -m torch.distributed.launch --nproc_per_node=$GPUS --master_port=$PORT \ 9 | $(dirname "$0")/mot_param_search.py $CONFIG --launcher pytorch ${@:3} 10 | -------------------------------------------------------------------------------- /downstream/det/tools/analysis_tools/mot/slurm_mot_search.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | set -x 4 | 5 | PARTITION=$1 6 | JOB_NAME=$2 7 | CONFIG=$3 8 | GPUS=$4 9 | GPUS_PER_NODE=${GPUS_PER_NODE:-8} 10 | CPUS_PER_TASK=${CPUS_PER_TASK:-2} 11 | PY_ARGS=${@:5} 12 | SRUN_ARGS=${SRUN_ARGS:-""} 13 | 14 | PYTHONPATH="$(dirname $0)/..":$PYTHONPATH \ 15 | srun -p ${PARTITION} \ 16 | --job-name=${JOB_NAME} \ 17 | --gres=gpu:${GPUS_PER_NODE} \ 18 | --ntasks=${GPUS} \ 19 | --ntasks-per-node=${GPUS_PER_NODE} \ 20 | --cpus-per-task=${CPUS_PER_TASK} \ 21 | --kill-on-bad-exit=1 \ 22 | ${SRUN_ARGS} \ 23 | python -u $(dirname "$0")/mot_param_search.py ${CONFIG} --launcher="slurm" ${PY_ARGS} 24 | -------------------------------------------------------------------------------- /downstream/det/tools/dataset_converters/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lewandofskee/MobileMamba/0980f48a23d232e0f2e86e740eccab038c8fd760/downstream/det/tools/dataset_converters/__init__.py -------------------------------------------------------------------------------- /downstream/det/tools/dataset_converters/fix_o365_names.py: -------------------------------------------------------------------------------- 1 | # Reference: https://github.com/shenyunhang/APE/blob/main/datasets/tools/objects3652coco/fix_o365_names.py # noqa 2 | import argparse 3 | import copy 4 | import json 5 | 6 | if __name__ == '__main__': 7 | parser = argparse.ArgumentParser() 8 | parser.add_argument( 9 | '--ann', 10 | default='data/objects365v2/annotations/zhiyuan_objv2_train.json') 11 | parser.add_argument( 12 | '--fix_name_map', 13 | default='tools/dataset_converters/zhiyuan_objv2_train_names_fix.csv') 14 | args = parser.parse_args() 15 | 16 | new_names = {} 17 | old_names = {} 18 | with open(args.fix_name_map, 'r') as f: 19 | for line in f: 20 | tmp = line.strip().split(',') 21 | old_names[int(tmp[0])] = tmp[1] 22 | new_names[int(tmp[0])] = tmp[2] 23 | data = json.load(open(args.ann, 'r')) 24 | 25 | cat_info = copy.deepcopy(data['categories']) 26 | 27 | for x in cat_info: 28 | if old_names[x['id']] != new_names[x['id']]: 29 | print('Renaming', x['id'], x['name'], new_names[x['id']]) 30 | x['name'] = new_names[x['id']] 31 | 32 | data['categories'] = cat_info 33 | out_name = args.ann[:-5] + '_fixname.json' 34 | print('Saving to', out_name) 35 | json.dump(data, open(out_name, 'w')) 36 | -------------------------------------------------------------------------------- /downstream/det/tools/dataset_converters/scripts/preprocess_coco2017.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | DOWNLOAD_DIR=$1 4 | DATA_ROOT=$2 5 | 6 | unzip $DOWNLOAD_DIR/OpenDataLab___COCO_2017/raw/Images/val2017.zip -d $DATA_ROOT 7 | unzip $DOWNLOAD_DIR/OpenDataLab___COCO_2017/raw/Images/train2017.zip -d $DATA_ROOT 8 | unzip $DOWNLOAD_DIR/OpenDataLab___COCO_2017/raw/Images/test2017.zip -d $DATA_ROOT/ 9 | unzip $DOWNLOAD_DIR/OpenDataLab___COCO_2017/raw/Images/unlabeled2017.zip -d $DATA_ROOT 10 | unzip $DOWNLOAD_DIR/OpenDataLab___COCO_2017/raw/Annotations/stuff_annotations_trainval2017.zip -d $DATA_ROOT/ 11 | unzip $DOWNLOAD_DIR/OpenDataLab___COCO_2017/raw/Annotations/panoptic_annotations_trainval2017.zip -d $DATA_ROOT/ 12 | unzip $DOWNLOAD_DIR/OpenDataLab___COCO_2017/raw/Annotations/image_info_unlabeled2017.zip -d $DATA_ROOT/ 13 | unzip $DOWNLOAD_DIR/OpenDataLab___COCO_2017/raw/Annotations/image_info_test2017.zip -d $DATA_ROOT/ 14 | unzip $DOWNLOAD_DIR/OpenDataLab___COCO_2017/raw/Annotations/annotations_trainval2017.zip -d $DATA_ROOT 15 | rm -rf $DOWNLOAD_DIR/OpenDataLab___COCO_2017 16 | -------------------------------------------------------------------------------- /downstream/det/tools/dataset_converters/scripts/preprocess_voc2007.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | DOWNLOAD_DIR=$1 4 | DATA_ROOT=$2 5 | 6 | tar -xvf $DOWNLOAD_DIR/OpenDataLab___PASCAL_VOC2007/raw/VOCtrainval_06-Nov-2007.tar -C $DATA_ROOT 7 | tar -xvf $DOWNLOAD_DIR/OpenDataLab___PASCAL_VOC2007/raw/VOCtestnoimgs_06-Nov-2007.tar -C $DATA_ROOT 8 | rm -rf $DOWNLOAD_DIR/OpenDataLab___PASCAL_VOC2007 9 | -------------------------------------------------------------------------------- /downstream/det/tools/dataset_converters/scripts/preprocess_voc2012.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | DOWNLOAD_DIR=$1 4 | DATA_ROOT=$2 5 | 6 | tar -xvf $DOWNLOAD_DIR/OpenDataLab___PASCAL_VOC2012/raw/VOCtrainval_11-May-2012.tar -C $DATA_ROOT 7 | tar -xvf $DOWNLOAD_DIR/OpenDataLab___PASCAL_VOC2012/raw/VOC2012test.tar -C $DATA_ROOT 8 | rm -rf $DOWNLOAD_DIR/OpenDataLab___PASCAL_VOC2012 9 | -------------------------------------------------------------------------------- /downstream/det/tools/deployment/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lewandofskee/MobileMamba/0980f48a23d232e0f2e86e740eccab038c8fd760/downstream/det/tools/deployment/__init__.py -------------------------------------------------------------------------------- /downstream/det/tools/dist_test.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | CONFIG=$1 4 | CHECKPOINT=$2 5 | GPUS=$3 6 | NNODES=${NNODES:-1} 7 | NODE_RANK=${NODE_RANK:-0} 8 | PORT=${PORT:-29500} 9 | MASTER_ADDR=${MASTER_ADDR:-"127.0.0.1"} 10 | 11 | PYTHONPATH="$(dirname $0)/..":$PYTHONPATH \ 12 | python -m torch.distributed.launch \ 13 | --nnodes=$NNODES \ 14 | --node_rank=$NODE_RANK \ 15 | --master_addr=$MASTER_ADDR \ 16 | --nproc_per_node=$GPUS \ 17 | --master_port=$PORT \ 18 | $(dirname "$0")/test.py \ 19 | $CONFIG \ 20 | $CHECKPOINT \ 21 | --launcher pytorch \ 22 | ${@:4} 23 | -------------------------------------------------------------------------------- /downstream/det/tools/dist_test_tracking.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | CONFIG=$1 4 | GPUS=$2 5 | NNODES=${NNODES:-1} 6 | NODE_RANK=${NODE_RANK:-0} 7 | PORT=${PORT:-29500} 8 | MASTER_ADDR=${MASTER_ADDR:-"127.0.0.1"} 9 | 10 | PYTHONPATH="$(dirname $0)/..":$PYTHONPATH \ 11 | python -m torch.distributed.launch \ 12 | --nnodes=$NNODES \ 13 | --node_rank=$NODE_RANK \ 14 | --master_addr=$MASTER_ADDR \ 15 | --nproc_per_node=$GPUS \ 16 | --master_port=$PORT \ 17 | $(dirname "$0")/test_tracking.py \ 18 | $CONFIG \ 19 | --launcher pytorch \ 20 | ${@:3} 21 | -------------------------------------------------------------------------------- /downstream/det/tools/dist_train.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | CONFIG=$1 4 | GPUS=$2 5 | NNODES=${NNODES:-1} 6 | NODE_RANK=${NODE_RANK:-0} 7 | PORT=${PORT:-29500} 8 | MASTER_ADDR=${MASTER_ADDR:-"127.0.0.1"} 9 | 10 | PYTHONPATH="$(dirname $0)/..":$PYTHONPATH \ 11 | python -m torch.distributed.launch \ 12 | --nnodes=$NNODES \ 13 | --node_rank=$NODE_RANK \ 14 | --master_addr=$MASTER_ADDR \ 15 | --nproc_per_node=$GPUS \ 16 | --master_port=$PORT \ 17 | $(dirname "$0")/train.py \ 18 | $CONFIG \ 19 | --launcher pytorch ${@:3} 20 | -------------------------------------------------------------------------------- /downstream/det/tools/misc/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lewandofskee/MobileMamba/0980f48a23d232e0f2e86e740eccab038c8fd760/downstream/det/tools/misc/__init__.py -------------------------------------------------------------------------------- /downstream/det/tools/misc/gen_coco_panoptic_test_info.py: -------------------------------------------------------------------------------- 1 | import argparse 2 | import os.path as osp 3 | 4 | from mmengine.fileio import dump, load 5 | 6 | 7 | def parse_args(): 8 | parser = argparse.ArgumentParser( 9 | description='Generate COCO test image information ' 10 | 'for COCO panoptic segmentation.') 11 | parser.add_argument('data_root', help='Path to COCO annotation directory.') 12 | args = parser.parse_args() 13 | 14 | return args 15 | 16 | 17 | def main(): 18 | args = parse_args() 19 | data_root = args.data_root 20 | val_info = load(osp.join(data_root, 'panoptic_val2017.json')) 21 | test_old_info = load(osp.join(data_root, 'image_info_test-dev2017.json')) 22 | 23 | # replace categories from image_info_test-dev2017.json 24 | # with categories from panoptic_val2017.json which 25 | # has attribute `isthing`. 26 | test_info = test_old_info 27 | test_info.update({'categories': val_info['categories']}) 28 | dump(test_info, osp.join(data_root, 29 | 'panoptic_image_info_test-dev2017.json')) 30 | 31 | 32 | if __name__ == '__main__': 33 | main() 34 | -------------------------------------------------------------------------------- /downstream/det/tools/model_converters/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lewandofskee/MobileMamba/0980f48a23d232e0f2e86e740eccab038c8fd760/downstream/det/tools/model_converters/__init__.py -------------------------------------------------------------------------------- /downstream/det/tools/slurm_test.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | set -x 4 | 5 | PARTITION=$1 6 | JOB_NAME=$2 7 | CONFIG=$3 8 | CHECKPOINT=$4 9 | GPUS=${GPUS:-8} 10 | GPUS_PER_NODE=${GPUS_PER_NODE:-8} 11 | CPUS_PER_TASK=${CPUS_PER_TASK:-5} 12 | PY_ARGS=${@:5} 13 | SRUN_ARGS=${SRUN_ARGS:-""} 14 | 15 | PYTHONPATH="$(dirname $0)/..":$PYTHONPATH \ 16 | srun -p ${PARTITION} \ 17 | --job-name=${JOB_NAME} \ 18 | --gres=gpu:${GPUS_PER_NODE} \ 19 | --ntasks=${GPUS} \ 20 | --ntasks-per-node=${GPUS_PER_NODE} \ 21 | --cpus-per-task=${CPUS_PER_TASK} \ 22 | --kill-on-bad-exit=1 \ 23 | ${SRUN_ARGS} \ 24 | python -u tools/test.py ${CONFIG} ${CHECKPOINT} --launcher="slurm" ${PY_ARGS} 25 | -------------------------------------------------------------------------------- /downstream/det/tools/slurm_test_tracking.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | set -x 4 | 5 | PARTITION=$1 6 | JOB_NAME=$2 7 | CONFIG=$3 8 | GPUS=${GPUS:-8} 9 | GPUS_PER_NODE=${GPUS_PER_NODE:-8} 10 | CPUS_PER_TASK=${CPUS_PER_TASK:-5} 11 | PY_ARGS=${@:4} 12 | SRUN_ARGS=${SRUN_ARGS:-""} 13 | 14 | PYTHONPATH="$(dirname $0)/..":$PYTHONPATH \ 15 | srun -p ${PARTITION} \ 16 | --job-name=${JOB_NAME} \ 17 | --gres=gpu:${GPUS_PER_NODE} \ 18 | --ntasks=${GPUS} \ 19 | --ntasks-per-node=${GPUS_PER_NODE} \ 20 | --cpus-per-task=${CPUS_PER_TASK} \ 21 | --kill-on-bad-exit=1 \ 22 | ${SRUN_ARGS} \ 23 | python -u tools/test_tracking.py ${CONFIG} --launcher="slurm" ${PY_ARGS} 24 | -------------------------------------------------------------------------------- /downstream/det/tools/slurm_train.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | set -x 4 | 5 | PARTITION=$1 6 | JOB_NAME=$2 7 | CONFIG=$3 8 | WORK_DIR=$4 9 | GPUS=${GPUS:-8} 10 | GPUS_PER_NODE=${GPUS_PER_NODE:-8} 11 | CPUS_PER_TASK=${CPUS_PER_TASK:-5} 12 | SRUN_ARGS=${SRUN_ARGS:-""} 13 | PY_ARGS=${@:5} 14 | 15 | PYTHONPATH="$(dirname $0)/..":$PYTHONPATH \ 16 | srun -p ${PARTITION} \ 17 | --job-name=${JOB_NAME} \ 18 | --gres=gpu:${GPUS_PER_NODE} \ 19 | --ntasks=${GPUS} \ 20 | --ntasks-per-node=${GPUS_PER_NODE} \ 21 | --cpus-per-task=${CPUS_PER_TASK} \ 22 | --kill-on-bad-exit=1 \ 23 | ${SRUN_ARGS} \ 24 | python -u tools/train.py ${CONFIG} --work-dir=${WORK_DIR} --launcher="slurm" ${PY_ARGS} 25 | -------------------------------------------------------------------------------- /downstream/seg/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lewandofskee/MobileMamba/0980f48a23d232e0f2e86e740eccab038c8fd760/downstream/seg/.DS_Store -------------------------------------------------------------------------------- /downstream/seg/backbones/__init__.py: -------------------------------------------------------------------------------- 1 | from .mobilemamba import MobileMamba -------------------------------------------------------------------------------- /downstream/seg/backbones/lib_mamba/kernels/selective_scan/csrc/selective_scan/cus/selective_scan_core_bwd.cu: -------------------------------------------------------------------------------- 1 | /****************************************************************************** 2 | * Copyright (c) 2023, Tri Dao. 3 | ******************************************************************************/ 4 | #include "selective_scan_bwd_kernel.cuh" 5 | 6 | template void selective_scan_bwd_cuda<1, float, float>(SSMParamsBwd ¶ms, cudaStream_t stream); 7 | template void selective_scan_bwd_cuda<1, at::Half, float>(SSMParamsBwd ¶ms, cudaStream_t stream); 8 | template void selective_scan_bwd_cuda<1, at::BFloat16, float>(SSMParamsBwd ¶ms, cudaStream_t stream); 9 | 10 | -------------------------------------------------------------------------------- /downstream/seg/backbones/lib_mamba/kernels/selective_scan/csrc/selective_scan/cus/selective_scan_core_fwd.cu: -------------------------------------------------------------------------------- 1 | /****************************************************************************** 2 | * Copyright (c) 2023, Tri Dao. 3 | ******************************************************************************/ 4 | #include "selective_scan_fwd_kernel.cuh" 5 | 6 | template void selective_scan_fwd_cuda<1, float, float>(SSMParamsBase ¶ms, cudaStream_t stream); 7 | template void selective_scan_fwd_cuda<1, at::Half, float>(SSMParamsBase ¶ms, cudaStream_t stream); 8 | template void selective_scan_fwd_cuda<1, at::BFloat16, float>(SSMParamsBase ¶ms, cudaStream_t stream); 9 | 10 | -------------------------------------------------------------------------------- /downstream/seg/backbones/lib_mamba/kernels/selective_scan/csrc/selective_scan/cusndstate/selective_scan_core_bwd.cu: -------------------------------------------------------------------------------- 1 | /****************************************************************************** 2 | * Copyright (c) 2023, Tri Dao. 3 | ******************************************************************************/ 4 | #include "selective_scan_bwd_kernel_ndstate.cuh" 5 | 6 | template void selective_scan_bwd_cuda<1, float, float>(SSMParamsBwd ¶ms, cudaStream_t stream); 7 | template void selective_scan_bwd_cuda<1, at::Half, float>(SSMParamsBwd ¶ms, cudaStream_t stream); 8 | template void selective_scan_bwd_cuda<1, at::BFloat16, float>(SSMParamsBwd ¶ms, cudaStream_t stream); 9 | 10 | -------------------------------------------------------------------------------- /downstream/seg/backbones/lib_mamba/kernels/selective_scan/csrc/selective_scan/cusndstate/selective_scan_core_fwd.cu: -------------------------------------------------------------------------------- 1 | /****************************************************************************** 2 | * Copyright (c) 2023, Tri Dao. 3 | ******************************************************************************/ 4 | #include "selective_scan_fwd_kernel_ndstate.cuh" 5 | 6 | template void selective_scan_fwd_cuda<1, float, float>(SSMParamsBase ¶ms, cudaStream_t stream); 7 | template void selective_scan_fwd_cuda<1, at::Half, float>(SSMParamsBase ¶ms, cudaStream_t stream); 8 | template void selective_scan_fwd_cuda<1, at::BFloat16, float>(SSMParamsBase ¶ms, cudaStream_t stream); 9 | 10 | -------------------------------------------------------------------------------- /downstream/seg/backbones/lib_mamba/kernels/selective_scan/csrc/selective_scan/cusnrow/selective_scan_core_bwd.cu: -------------------------------------------------------------------------------- 1 | /****************************************************************************** 2 | * Copyright (c) 2023, Tri Dao. 3 | ******************************************************************************/ 4 | #include "selective_scan_bwd_kernel_nrow.cuh" 5 | 6 | template void selective_scan_bwd_cuda<1, float, float>(SSMParamsBwd ¶ms, cudaStream_t stream); 7 | template void selective_scan_bwd_cuda<1, at::Half, float>(SSMParamsBwd ¶ms, cudaStream_t stream); 8 | template void selective_scan_bwd_cuda<1, at::BFloat16, float>(SSMParamsBwd ¶ms, cudaStream_t stream); 9 | 10 | -------------------------------------------------------------------------------- /downstream/seg/backbones/lib_mamba/kernels/selective_scan/csrc/selective_scan/cusnrow/selective_scan_core_bwd2.cu: -------------------------------------------------------------------------------- 1 | /****************************************************************************** 2 | * Copyright (c) 2023, Tri Dao. 3 | ******************************************************************************/ 4 | #include "selective_scan_bwd_kernel_nrow.cuh" 5 | 6 | template void selective_scan_bwd_cuda<2, float, float>(SSMParamsBwd ¶ms, cudaStream_t stream); 7 | template void selective_scan_bwd_cuda<2, at::Half, float>(SSMParamsBwd ¶ms, cudaStream_t stream); 8 | template void selective_scan_bwd_cuda<2, at::BFloat16, float>(SSMParamsBwd ¶ms, cudaStream_t stream); 9 | 10 | -------------------------------------------------------------------------------- /downstream/seg/backbones/lib_mamba/kernels/selective_scan/csrc/selective_scan/cusnrow/selective_scan_core_bwd3.cu: -------------------------------------------------------------------------------- 1 | /****************************************************************************** 2 | * Copyright (c) 2023, Tri Dao. 3 | ******************************************************************************/ 4 | #include "selective_scan_bwd_kernel_nrow.cuh" 5 | 6 | template void selective_scan_bwd_cuda<3, float, float>(SSMParamsBwd ¶ms, cudaStream_t stream); 7 | template void selective_scan_bwd_cuda<3, at::Half, float>(SSMParamsBwd ¶ms, cudaStream_t stream); 8 | template void selective_scan_bwd_cuda<3, at::BFloat16, float>(SSMParamsBwd ¶ms, cudaStream_t stream); 9 | -------------------------------------------------------------------------------- /downstream/seg/backbones/lib_mamba/kernels/selective_scan/csrc/selective_scan/cusnrow/selective_scan_core_bwd4.cu: -------------------------------------------------------------------------------- 1 | /****************************************************************************** 2 | * Copyright (c) 2023, Tri Dao. 3 | ******************************************************************************/ 4 | #include "selective_scan_bwd_kernel_nrow.cuh" 5 | 6 | template void selective_scan_bwd_cuda<4, float, float>(SSMParamsBwd ¶ms, cudaStream_t stream); 7 | template void selective_scan_bwd_cuda<4, at::Half, float>(SSMParamsBwd ¶ms, cudaStream_t stream); 8 | template void selective_scan_bwd_cuda<4, at::BFloat16, float>(SSMParamsBwd ¶ms, cudaStream_t stream); 9 | -------------------------------------------------------------------------------- /downstream/seg/backbones/lib_mamba/kernels/selective_scan/csrc/selective_scan/cusnrow/selective_scan_core_fwd.cu: -------------------------------------------------------------------------------- 1 | /****************************************************************************** 2 | * Copyright (c) 2023, Tri Dao. 3 | ******************************************************************************/ 4 | #include "selective_scan_fwd_kernel_nrow.cuh" 5 | 6 | template void selective_scan_fwd_cuda<1, float, float>(SSMParamsBase ¶ms, cudaStream_t stream); 7 | template void selective_scan_fwd_cuda<1, at::Half, float>(SSMParamsBase ¶ms, cudaStream_t stream); 8 | template void selective_scan_fwd_cuda<1, at::BFloat16, float>(SSMParamsBase ¶ms, cudaStream_t stream); 9 | 10 | -------------------------------------------------------------------------------- /downstream/seg/backbones/lib_mamba/kernels/selective_scan/csrc/selective_scan/cusnrow/selective_scan_core_fwd2.cu: -------------------------------------------------------------------------------- 1 | /****************************************************************************** 2 | * Copyright (c) 2023, Tri Dao. 3 | ******************************************************************************/ 4 | #include "selective_scan_fwd_kernel_nrow.cuh" 5 | 6 | template void selective_scan_fwd_cuda<2, float, float>(SSMParamsBase ¶ms, cudaStream_t stream); 7 | template void selective_scan_fwd_cuda<2, at::Half, float>(SSMParamsBase ¶ms, cudaStream_t stream); 8 | template void selective_scan_fwd_cuda<2, at::BFloat16, float>(SSMParamsBase ¶ms, cudaStream_t stream); 9 | 10 | -------------------------------------------------------------------------------- /downstream/seg/backbones/lib_mamba/kernels/selective_scan/csrc/selective_scan/cusnrow/selective_scan_core_fwd3.cu: -------------------------------------------------------------------------------- 1 | /****************************************************************************** 2 | * Copyright (c) 2023, Tri Dao. 3 | ******************************************************************************/ 4 | #include "selective_scan_fwd_kernel_nrow.cuh" 5 | 6 | template void selective_scan_fwd_cuda<3, float, float>(SSMParamsBase ¶ms, cudaStream_t stream); 7 | template void selective_scan_fwd_cuda<3, at::Half, float>(SSMParamsBase ¶ms, cudaStream_t stream); 8 | template void selective_scan_fwd_cuda<3, at::BFloat16, float>(SSMParamsBase ¶ms, cudaStream_t stream); 9 | 10 | -------------------------------------------------------------------------------- /downstream/seg/backbones/lib_mamba/kernels/selective_scan/csrc/selective_scan/cusnrow/selective_scan_core_fwd4.cu: -------------------------------------------------------------------------------- 1 | /****************************************************************************** 2 | * Copyright (c) 2023, Tri Dao. 3 | ******************************************************************************/ 4 | #include "selective_scan_fwd_kernel_nrow.cuh" 5 | 6 | template void selective_scan_fwd_cuda<4, float, float>(SSMParamsBase ¶ms, cudaStream_t stream); 7 | template void selective_scan_fwd_cuda<4, at::Half, float>(SSMParamsBase ¶ms, cudaStream_t stream); 8 | template void selective_scan_fwd_cuda<4, at::BFloat16, float>(SSMParamsBase ¶ms, cudaStream_t stream); 9 | 10 | -------------------------------------------------------------------------------- /downstream/seg/backbones/lib_mamba/kernels/selective_scan/csrc/selective_scan/cusoflex/selective_scan_core_bwd.cu: -------------------------------------------------------------------------------- 1 | /****************************************************************************** 2 | * Copyright (c) 2023, Tri Dao. 3 | ******************************************************************************/ 4 | #include "selective_scan_bwd_kernel_oflex.cuh" 5 | 6 | template void selective_scan_bwd_cuda<1, float, float, float>(SSMParamsBwd ¶ms, cudaStream_t stream); 7 | template void selective_scan_bwd_cuda<1, at::Half, float, float>(SSMParamsBwd ¶ms, cudaStream_t stream); 8 | template void selective_scan_bwd_cuda<1, at::BFloat16, float, float>(SSMParamsBwd ¶ms, cudaStream_t stream); 9 | template void selective_scan_bwd_cuda<1, at::Half, float, at::Half>(SSMParamsBwd ¶ms, cudaStream_t stream); 10 | template void selective_scan_bwd_cuda<1, at::BFloat16, float, at::BFloat16>(SSMParamsBwd ¶ms, cudaStream_t stream); 11 | 12 | -------------------------------------------------------------------------------- /downstream/seg/backbones/lib_mamba/kernels/selective_scan/csrc/selective_scan/cusoflex/selective_scan_core_fwd.cu: -------------------------------------------------------------------------------- 1 | /****************************************************************************** 2 | * Copyright (c) 2023, Tri Dao. 3 | ******************************************************************************/ 4 | #include "selective_scan_fwd_kernel_oflex.cuh" 5 | 6 | template void selective_scan_fwd_cuda<1, float, float, float>(SSMParamsBase ¶ms, cudaStream_t stream); 7 | template void selective_scan_fwd_cuda<1, at::Half, float, float>(SSMParamsBase ¶ms, cudaStream_t stream); 8 | template void selective_scan_fwd_cuda<1, at::BFloat16, float, float>(SSMParamsBase ¶ms, cudaStream_t stream); 9 | template void selective_scan_fwd_cuda<1, at::Half, float, at::Half>(SSMParamsBase ¶ms, cudaStream_t stream); 10 | template void selective_scan_fwd_cuda<1, at::BFloat16, float, at::BFloat16>(SSMParamsBase ¶ms, cudaStream_t stream); 11 | 12 | -------------------------------------------------------------------------------- /downstream/seg/configs/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lewandofskee/MobileMamba/0980f48a23d232e0f2e86e740eccab038c8fd760/downstream/seg/configs/.DS_Store -------------------------------------------------------------------------------- /downstream/seg/configs/_base_/datasets/cityscapes_1024x1024.py: -------------------------------------------------------------------------------- 1 | _base_ = './cityscapes.py' 2 | crop_size = (1024, 1024) 3 | train_pipeline = [ 4 | dict(type='LoadImageFromFile'), 5 | dict(type='LoadAnnotations'), 6 | dict( 7 | type='RandomResize', 8 | scale=(2048, 1024), 9 | ratio_range=(0.5, 2.0), 10 | keep_ratio=True), 11 | dict(type='RandomCrop', crop_size=crop_size, cat_max_ratio=0.75), 12 | dict(type='RandomFlip', prob=0.5), 13 | dict(type='PhotoMetricDistortion'), 14 | dict(type='PackSegInputs') 15 | ] 16 | test_pipeline = [ 17 | dict(type='LoadImageFromFile'), 18 | dict(type='Resize', scale=(2048, 1024), keep_ratio=True), 19 | # add loading annotation after ``Resize`` because ground truth 20 | # does not need to do resize data transform 21 | dict(type='LoadAnnotations'), 22 | dict(type='PackSegInputs') 23 | ] 24 | train_dataloader = dict(dataset=dict(pipeline=train_pipeline)) 25 | val_dataloader = dict(dataset=dict(pipeline=test_pipeline)) 26 | test_dataloader = val_dataloader 27 | 28 | val_evaluator = dict(type='IoUMetric', iou_metrics=['mIoU']) 29 | test_evaluator = val_evaluator 30 | -------------------------------------------------------------------------------- /downstream/seg/configs/_base_/datasets/cityscapes_768x768.py: -------------------------------------------------------------------------------- 1 | _base_ = './cityscapes.py' 2 | crop_size = (768, 768) 3 | train_pipeline = [ 4 | dict(type='LoadImageFromFile'), 5 | dict(type='LoadAnnotations'), 6 | dict( 7 | type='RandomResize', 8 | scale=(2049, 1025), 9 | ratio_range=(0.5, 2.0), 10 | keep_ratio=True), 11 | dict(type='RandomCrop', crop_size=crop_size, cat_max_ratio=0.75), 12 | dict(type='RandomFlip', prob=0.5), 13 | dict(type='PhotoMetricDistortion'), 14 | dict(type='PackSegInputs') 15 | ] 16 | test_pipeline = [ 17 | dict(type='LoadImageFromFile'), 18 | dict(type='Resize', scale=(2049, 1025), keep_ratio=True), 19 | # add loading annotation after ``Resize`` because ground truth 20 | # does not need to do resize data transform 21 | dict(type='LoadAnnotations'), 22 | dict(type='PackSegInputs') 23 | ] 24 | train_dataloader = dict(dataset=dict(pipeline=train_pipeline)) 25 | val_dataloader = dict(dataset=dict(pipeline=test_pipeline)) 26 | test_dataloader = val_dataloader 27 | 28 | val_evaluator = dict(type='IoUMetric', iou_metrics=['mIoU']) 29 | test_evaluator = val_evaluator 30 | -------------------------------------------------------------------------------- /downstream/seg/configs/_base_/datasets/cityscapes_769x769.py: -------------------------------------------------------------------------------- 1 | _base_ = './cityscapes.py' 2 | crop_size = (769, 769) 3 | train_pipeline = [ 4 | dict(type='LoadImageFromFile'), 5 | dict(type='LoadAnnotations'), 6 | dict( 7 | type='RandomResize', 8 | scale=(2049, 1025), 9 | ratio_range=(0.5, 2.0), 10 | keep_ratio=True), 11 | dict(type='RandomCrop', crop_size=crop_size, cat_max_ratio=0.75), 12 | dict(type='RandomFlip', prob=0.5), 13 | dict(type='PhotoMetricDistortion'), 14 | dict(type='PackSegInputs') 15 | ] 16 | test_pipeline = [ 17 | dict(type='LoadImageFromFile'), 18 | dict(type='Resize', scale=(2049, 1025), keep_ratio=True), 19 | # add loading annotation after ``Resize`` because ground truth 20 | # does not need to do resize data transform 21 | dict(type='LoadAnnotations'), 22 | dict(type='PackSegInputs') 23 | ] 24 | train_dataloader = dict(dataset=dict(pipeline=train_pipeline)) 25 | val_dataloader = dict(dataset=dict(pipeline=test_pipeline)) 26 | test_dataloader = val_dataloader 27 | 28 | val_evaluator = dict(type='IoUMetric', iou_metrics=['mIoU']) 29 | test_evaluator = val_evaluator 30 | -------------------------------------------------------------------------------- /downstream/seg/configs/_base_/datasets/cityscapes_832x832.py: -------------------------------------------------------------------------------- 1 | _base_ = './cityscapes.py' 2 | crop_size = (832, 832) 3 | train_pipeline = [ 4 | dict(type='LoadImageFromFile'), 5 | dict(type='LoadAnnotations'), 6 | dict( 7 | type='RandomResize', 8 | scale=(2048, 1024), 9 | ratio_range=(0.5, 2.0), 10 | keep_ratio=True), 11 | dict(type='RandomCrop', crop_size=crop_size, cat_max_ratio=0.75), 12 | dict(type='RandomFlip', prob=0.5), 13 | dict(type='PhotoMetricDistortion'), 14 | dict(type='PackSegInputs') 15 | ] 16 | test_pipeline = [ 17 | dict(type='LoadImageFromFile'), 18 | dict(type='Resize', scale=(2048, 1024), keep_ratio=True), 19 | # add loading annotation after ``Resize`` because ground truth 20 | # does not need to do resize data transform 21 | dict(type='LoadAnnotations'), 22 | dict(type='PackSegInputs') 23 | ] 24 | train_dataloader = dict(dataset=dict(pipeline=train_pipeline)) 25 | val_dataloader = dict(dataset=dict(pipeline=test_pipeline)) 26 | test_dataloader = val_dataloader 27 | 28 | val_evaluator = dict(type='IoUMetric', iou_metrics=['mIoU']) 29 | test_evaluator = val_evaluator 30 | -------------------------------------------------------------------------------- /downstream/seg/configs/_base_/default_runtime.py: -------------------------------------------------------------------------------- 1 | default_scope = 'mmseg' 2 | env_cfg = dict( 3 | cudnn_benchmark=True, 4 | mp_cfg=dict(mp_start_method='fork', opencv_num_threads=0), 5 | dist_cfg=dict(backend='nccl'), 6 | ) 7 | vis_backends = [dict(type='LocalVisBackend')] 8 | visualizer = dict( 9 | type='SegLocalVisualizer', vis_backends=vis_backends, name='visualizer') 10 | log_processor = dict(by_epoch=False) 11 | log_level = 'INFO' 12 | load_from = None 13 | resume = False 14 | 15 | tta_model = dict(type='SegTTAModel') 16 | -------------------------------------------------------------------------------- /downstream/seg/configs/_base_/models/dpt_vit-b16.py: -------------------------------------------------------------------------------- 1 | norm_cfg = dict(type='SyncBN', requires_grad=True) 2 | data_preprocessor = dict( 3 | type='SegDataPreProcessor', 4 | mean=[123.675, 116.28, 103.53], 5 | std=[58.395, 57.12, 57.375], 6 | bgr_to_rgb=True, 7 | pad_val=0, 8 | seg_pad_val=255) 9 | model = dict( 10 | type='EncoderDecoder', 11 | data_preprocessor=data_preprocessor, 12 | pretrained='pretrain/vit-b16_p16_224-80ecf9dd.pth', # noqa 13 | backbone=dict( 14 | type='VisionTransformer', 15 | img_size=224, 16 | embed_dims=768, 17 | num_layers=12, 18 | num_heads=12, 19 | out_indices=(2, 5, 8, 11), 20 | final_norm=False, 21 | with_cls_token=True, 22 | output_cls_token=True), 23 | decode_head=dict( 24 | type='DPTHead', 25 | in_channels=(768, 768, 768, 768), 26 | channels=256, 27 | embed_dims=768, 28 | post_process_channels=[96, 192, 384, 768], 29 | num_classes=150, 30 | readout_type='project', 31 | input_transform='multiple_select', 32 | in_index=(0, 1, 2, 3), 33 | norm_cfg=norm_cfg, 34 | loss_decode=dict( 35 | type='CrossEntropyLoss', use_sigmoid=False, loss_weight=1.0)), 36 | auxiliary_head=None, 37 | # model training and testing settings 38 | train_cfg=dict(), 39 | test_cfg=dict(mode='whole')) # yapf: disable 40 | -------------------------------------------------------------------------------- /downstream/seg/configs/_base_/models/erfnet_fcn.py: -------------------------------------------------------------------------------- 1 | # model settings 2 | norm_cfg = dict(type='SyncBN', requires_grad=True) 3 | data_preprocessor = dict( 4 | type='SegDataPreProcessor', 5 | mean=[123.675, 116.28, 103.53], 6 | std=[58.395, 57.12, 57.375], 7 | bgr_to_rgb=True, 8 | pad_val=0, 9 | seg_pad_val=255) 10 | model = dict( 11 | type='EncoderDecoder', 12 | data_preprocessor=data_preprocessor, 13 | pretrained=None, 14 | backbone=dict( 15 | type='ERFNet', 16 | in_channels=3, 17 | enc_downsample_channels=(16, 64, 128), 18 | enc_stage_non_bottlenecks=(5, 8), 19 | enc_non_bottleneck_dilations=(2, 4, 8, 16), 20 | enc_non_bottleneck_channels=(64, 128), 21 | dec_upsample_channels=(64, 16), 22 | dec_stages_non_bottleneck=(2, 2), 23 | dec_non_bottleneck_channels=(64, 16), 24 | dropout_ratio=0.1, 25 | init_cfg=None), 26 | decode_head=dict( 27 | type='FCNHead', 28 | in_channels=16, 29 | channels=128, 30 | num_convs=1, 31 | concat_input=False, 32 | dropout_ratio=0.1, 33 | num_classes=19, 34 | norm_cfg=norm_cfg, 35 | align_corners=False, 36 | loss_decode=dict( 37 | type='CrossEntropyLoss', use_sigmoid=False, loss_weight=1.0)), 38 | # model training and testing settings 39 | train_cfg=dict(), 40 | test_cfg=dict(mode='whole')) 41 | -------------------------------------------------------------------------------- /downstream/seg/configs/_base_/models/lraspp_m-v3-d8.py: -------------------------------------------------------------------------------- 1 | # model settings 2 | norm_cfg = dict(type='SyncBN', eps=0.001, requires_grad=True) 3 | data_preprocessor = dict( 4 | type='SegDataPreProcessor', 5 | mean=[123.675, 116.28, 103.53], 6 | std=[58.395, 57.12, 57.375], 7 | bgr_to_rgb=True, 8 | pad_val=0, 9 | seg_pad_val=255) 10 | model = dict( 11 | type='EncoderDecoder', 12 | data_preprocessor=data_preprocessor, 13 | backbone=dict( 14 | type='MobileNetV3', 15 | arch='large', 16 | out_indices=(1, 3, 16), 17 | norm_cfg=norm_cfg), 18 | decode_head=dict( 19 | type='LRASPPHead', 20 | in_channels=(16, 24, 960), 21 | in_index=(0, 1, 2), 22 | channels=128, 23 | input_transform='multiple_select', 24 | dropout_ratio=0.1, 25 | num_classes=19, 26 | norm_cfg=norm_cfg, 27 | act_cfg=dict(type='ReLU'), 28 | align_corners=False, 29 | loss_decode=dict( 30 | type='CrossEntropyLoss', use_sigmoid=False, loss_weight=1.0)), 31 | # model training and testing settings 32 | train_cfg=dict(), 33 | test_cfg=dict(mode='whole')) 34 | -------------------------------------------------------------------------------- /downstream/seg/configs/_base_/models/segformer_mit-b0.py: -------------------------------------------------------------------------------- 1 | # model settings 2 | norm_cfg = dict(type='SyncBN', requires_grad=True) 3 | data_preprocessor = dict( 4 | type='SegDataPreProcessor', 5 | mean=[123.675, 116.28, 103.53], 6 | std=[58.395, 57.12, 57.375], 7 | bgr_to_rgb=True, 8 | pad_val=0, 9 | seg_pad_val=255) 10 | model = dict( 11 | type='EncoderDecoder', 12 | data_preprocessor=data_preprocessor, 13 | pretrained=None, 14 | backbone=dict( 15 | type='MixVisionTransformer', 16 | in_channels=3, 17 | embed_dims=32, 18 | num_stages=4, 19 | num_layers=[2, 2, 2, 2], 20 | num_heads=[1, 2, 5, 8], 21 | patch_sizes=[7, 3, 3, 3], 22 | sr_ratios=[8, 4, 2, 1], 23 | out_indices=(0, 1, 2, 3), 24 | mlp_ratio=4, 25 | qkv_bias=True, 26 | drop_rate=0.0, 27 | attn_drop_rate=0.0, 28 | drop_path_rate=0.1), 29 | decode_head=dict( 30 | type='SegformerHead', 31 | in_channels=[32, 64, 160, 256], 32 | in_index=[0, 1, 2, 3], 33 | channels=256, 34 | dropout_ratio=0.1, 35 | num_classes=19, 36 | norm_cfg=norm_cfg, 37 | align_corners=False, 38 | loss_decode=dict( 39 | type='CrossEntropyLoss', use_sigmoid=False, loss_weight=1.0)), 40 | # model training and testing settings 41 | train_cfg=dict(), 42 | test_cfg=dict(mode='whole')) 43 | -------------------------------------------------------------------------------- /downstream/seg/configs/_base_/schedules/schedule_160k.py: -------------------------------------------------------------------------------- 1 | # optimizer 2 | optimizer = dict(type='SGD', lr=0.01, momentum=0.9, weight_decay=0.0005) 3 | optim_wrapper = dict(type='OptimWrapper', optimizer=optimizer, clip_grad=None) 4 | # learning policy 5 | param_scheduler = [ 6 | dict( 7 | type='PolyLR', 8 | eta_min=1e-4, 9 | power=0.9, 10 | begin=0, 11 | end=160000, 12 | by_epoch=False) 13 | ] 14 | # training schedule for 160k 15 | train_cfg = dict( 16 | type='IterBasedTrainLoop', max_iters=160000, val_interval=16000) 17 | val_cfg = dict(type='ValLoop') 18 | test_cfg = dict(type='TestLoop') 19 | default_hooks = dict( 20 | timer=dict(type='IterTimerHook'), 21 | logger=dict(type='LoggerHook', interval=50, log_metric_by_epoch=False), 22 | param_scheduler=dict(type='ParamSchedulerHook'), 23 | checkpoint=dict(type='CheckpointHook', by_epoch=False, interval=16000), 24 | sampler_seed=dict(type='DistSamplerSeedHook'), 25 | visualization=dict(type='SegVisualizationHook')) 26 | -------------------------------------------------------------------------------- /downstream/seg/configs/_base_/schedules/schedule_20k.py: -------------------------------------------------------------------------------- 1 | # optimizer 2 | optimizer = dict(type='SGD', lr=0.01, momentum=0.9, weight_decay=0.0005) 3 | optim_wrapper = dict(type='OptimWrapper', optimizer=optimizer, clip_grad=None) 4 | # learning policy 5 | param_scheduler = [ 6 | dict( 7 | type='PolyLR', 8 | eta_min=1e-4, 9 | power=0.9, 10 | begin=0, 11 | end=20000, 12 | by_epoch=False) 13 | ] 14 | # training schedule for 20k 15 | train_cfg = dict(type='IterBasedTrainLoop', max_iters=20000, val_interval=2000) 16 | val_cfg = dict(type='ValLoop') 17 | test_cfg = dict(type='TestLoop') 18 | default_hooks = dict( 19 | timer=dict(type='IterTimerHook'), 20 | logger=dict(type='LoggerHook', interval=50, log_metric_by_epoch=False), 21 | param_scheduler=dict(type='ParamSchedulerHook'), 22 | checkpoint=dict(type='CheckpointHook', by_epoch=False, interval=2000), 23 | sampler_seed=dict(type='DistSamplerSeedHook'), 24 | visualization=dict(type='SegVisualizationHook')) 25 | -------------------------------------------------------------------------------- /downstream/seg/configs/_base_/schedules/schedule_240k.py: -------------------------------------------------------------------------------- 1 | # optimizer 2 | optimizer = dict(type='SGD', lr=0.01, momentum=0.9, weight_decay=0.0005) 3 | optim_wrapper = dict(type='OptimWrapper', optimizer=optimizer, clip_grad=None) 4 | # learning policy 5 | param_scheduler = [ 6 | dict( 7 | type='PolyLR', 8 | eta_min=1e-4, 9 | power=0.9, 10 | begin=0, 11 | end=240000, 12 | by_epoch=False) 13 | ] 14 | # training schedule for 240k 15 | train_cfg = dict( 16 | type='IterBasedTrainLoop', max_iters=240000, val_interval=24000) 17 | val_cfg = dict(type='ValLoop') 18 | test_cfg = dict(type='TestLoop') 19 | default_hooks = dict( 20 | timer=dict(type='IterTimerHook'), 21 | logger=dict(type='LoggerHook', interval=50, log_metric_by_epoch=False), 22 | param_scheduler=dict(type='ParamSchedulerHook'), 23 | checkpoint=dict(type='CheckpointHook', by_epoch=False, interval=24000), 24 | sampler_seed=dict(type='DistSamplerSeedHook'), 25 | visualization=dict(type='SegVisualizationHook')) 26 | -------------------------------------------------------------------------------- /downstream/seg/configs/_base_/schedules/schedule_25k.py: -------------------------------------------------------------------------------- 1 | # optimizer 2 | optimizer = dict(type='AdamW', lr=0.001, weight_decay=0.1) 3 | optim_wrapper = dict(type='OptimWrapper', optimizer=optimizer, clip_grad=None) 4 | # learning policy 5 | param_scheduler = [ 6 | dict( 7 | type='LinearLR', start_factor=3e-2, begin=0, end=12000, 8 | by_epoch=False), 9 | dict( 10 | type='PolyLRRatio', 11 | eta_min_ratio=3e-2, 12 | power=0.9, 13 | begin=12000, 14 | end=24000, 15 | by_epoch=False), 16 | dict(type='ConstantLR', by_epoch=False, factor=1, begin=24000, end=25000) 17 | ] 18 | # training schedule for 25k 19 | train_cfg = dict(type='IterBasedTrainLoop', max_iters=25000, val_interval=1000) 20 | val_cfg = dict(type='ValLoop') 21 | test_cfg = dict(type='TestLoop') 22 | default_hooks = dict( 23 | timer=dict(type='IterTimerHook'), 24 | logger=dict(type='LoggerHook', interval=50, log_metric_by_epoch=False), 25 | param_scheduler=dict(type='ParamSchedulerHook'), 26 | checkpoint=dict(type='CheckpointHook', by_epoch=False, interval=2000), 27 | sampler_seed=dict(type='DistSamplerSeedHook'), 28 | visualization=dict(type='SegVisualizationHook')) 29 | -------------------------------------------------------------------------------- /downstream/seg/configs/_base_/schedules/schedule_320k.py: -------------------------------------------------------------------------------- 1 | # optimizer 2 | optimizer = dict(type='SGD', lr=0.01, momentum=0.9, weight_decay=0.0005) 3 | optim_wrapper = dict(type='OptimWrapper', optimizer=optimizer, clip_grad=None) 4 | # learning policy 5 | param_scheduler = [ 6 | dict( 7 | type='PolyLR', 8 | eta_min=1e-4, 9 | power=0.9, 10 | begin=0, 11 | end=320000, 12 | by_epoch=False) 13 | ] 14 | # training schedule for 320k 15 | train_cfg = dict( 16 | type='IterBasedTrainLoop', max_iters=320000, val_interval=32000) 17 | val_cfg = dict(type='ValLoop') 18 | test_cfg = dict(type='TestLoop') 19 | default_hooks = dict( 20 | timer=dict(type='IterTimerHook'), 21 | logger=dict(type='LoggerHook', interval=50, log_metric_by_epoch=False), 22 | param_scheduler=dict(type='ParamSchedulerHook'), 23 | checkpoint=dict(type='CheckpointHook', by_epoch=False, interval=32000), 24 | sampler_seed=dict(type='DistSamplerSeedHook'), 25 | visualization=dict(type='SegVisualizationHook')) 26 | -------------------------------------------------------------------------------- /downstream/seg/configs/_base_/schedules/schedule_40k.py: -------------------------------------------------------------------------------- 1 | # optimizer 2 | optimizer = dict(type='SGD', lr=0.01, momentum=0.9, weight_decay=0.0005) 3 | optim_wrapper = dict(type='OptimWrapper', optimizer=optimizer, clip_grad=None) 4 | # learning policy 5 | param_scheduler = [ 6 | dict( 7 | type='PolyLR', 8 | eta_min=1e-4, 9 | power=0.9, 10 | begin=0, 11 | end=40000, 12 | by_epoch=False) 13 | ] 14 | # training schedule for 40k 15 | train_cfg = dict(type='IterBasedTrainLoop', max_iters=40000, val_interval=4000) 16 | val_cfg = dict(type='ValLoop') 17 | test_cfg = dict(type='TestLoop') 18 | default_hooks = dict( 19 | timer=dict(type='IterTimerHook'), 20 | logger=dict(type='LoggerHook', interval=50, log_metric_by_epoch=False), 21 | param_scheduler=dict(type='ParamSchedulerHook'), 22 | checkpoint=dict(type='CheckpointHook', by_epoch=False, interval=4000), 23 | sampler_seed=dict(type='DistSamplerSeedHook'), 24 | visualization=dict(type='SegVisualizationHook')) 25 | -------------------------------------------------------------------------------- /downstream/seg/configs/_base_/schedules/schedule_80k.py: -------------------------------------------------------------------------------- 1 | # optimizer 2 | optimizer = dict(type='SGD', lr=0.01, momentum=0.9, weight_decay=0.0005) 3 | optim_wrapper = dict(type='OptimWrapper', optimizer=optimizer, clip_grad=None) 4 | # learning policy 5 | param_scheduler = [ 6 | dict( 7 | type='PolyLR', 8 | eta_min=1e-4, 9 | power=0.9, 10 | begin=0, 11 | end=80000, 12 | by_epoch=False) 13 | ] 14 | # training schedule for 80k 15 | train_cfg = dict(type='IterBasedTrainLoop', max_iters=80000, val_interval=8000) 16 | val_cfg = dict(type='ValLoop') 17 | test_cfg = dict(type='TestLoop') 18 | default_hooks = dict( 19 | timer=dict(type='IterTimerHook'), 20 | logger=dict(type='LoggerHook', interval=50, log_metric_by_epoch=False), 21 | param_scheduler=dict(type='ParamSchedulerHook'), 22 | checkpoint=dict(type='CheckpointHook', by_epoch=False, interval=8000), 23 | sampler_seed=dict(type='DistSamplerSeedHook'), 24 | visualization=dict(type='SegVisualizationHook')) 25 | -------------------------------------------------------------------------------- /downstream/seg/tools/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lewandofskee/MobileMamba/0980f48a23d232e0f2e86e740eccab038c8fd760/downstream/seg/tools/.DS_Store -------------------------------------------------------------------------------- /downstream/seg/tools/dist_test.sh: -------------------------------------------------------------------------------- 1 | CONFIG=$1 2 | CHECKPOINT=$2 3 | GPUS=$3 4 | NNODES=${NNODES:-1} 5 | NODE_RANK=${NODE_RANK:-0} 6 | PORT=${PORT:-29500} 7 | MASTER_ADDR=${MASTER_ADDR:-"127.0.0.1"} 8 | 9 | PYTHONPATH="$(dirname $0)/..":$PYTHONPATH \ 10 | python -m torch.distributed.launch \ 11 | --nnodes=$NNODES \ 12 | --node_rank=$NODE_RANK \ 13 | --master_addr=$MASTER_ADDR \ 14 | --nproc_per_node=$GPUS \ 15 | --master_port=$PORT \ 16 | $(dirname "$0")/test.py \ 17 | $CONFIG \ 18 | $CHECKPOINT \ 19 | --launcher pytorch \ 20 | ${@:4} 21 | -------------------------------------------------------------------------------- /downstream/seg/tools/dist_train.sh: -------------------------------------------------------------------------------- 1 | CONFIG=$1 2 | GPUS=$2 3 | NNODES=${NNODES:-1} 4 | NODE_RANK=${NODE_RANK:-0} 5 | PORT=${PORT:-29500} 6 | MASTER_ADDR=${MASTER_ADDR:-"127.0.0.1"} 7 | 8 | PYTHONPATH="$(dirname $0)/..":$PYTHONPATH \ 9 | python -m torch.distributed.launch \ 10 | --nnodes=$NNODES \ 11 | --node_rank=$NODE_RANK \ 12 | --master_addr=$MASTER_ADDR \ 13 | --nproc_per_node=$GPUS \ 14 | --master_port=$PORT \ 15 | $(dirname "$0")/train.py \ 16 | $CONFIG \ 17 | --launcher pytorch ${@:3} 18 | -------------------------------------------------------------------------------- /downstream/seg/tools/slurm_test.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | set -x 4 | 5 | PARTITION=$1 6 | JOB_NAME=$2 7 | CONFIG=$3 8 | CHECKPOINT=$4 9 | GPUS=${GPUS:-4} 10 | GPUS_PER_NODE=${GPUS_PER_NODE:-4} 11 | CPUS_PER_TASK=${CPUS_PER_TASK:-5} 12 | PY_ARGS=${@:5} 13 | SRUN_ARGS=${SRUN_ARGS:-""} 14 | 15 | PYTHONPATH="$(dirname $0)/..":$PYTHONPATH \ 16 | srun -p ${PARTITION} \ 17 | --job-name=${JOB_NAME} \ 18 | --gres=gpu:${GPUS_PER_NODE} \ 19 | --ntasks=${GPUS} \ 20 | --ntasks-per-node=${GPUS_PER_NODE} \ 21 | --cpus-per-task=${CPUS_PER_TASK} \ 22 | --kill-on-bad-exit=1 \ 23 | ${SRUN_ARGS} \ 24 | python -u tools/test.py ${CONFIG} ${CHECKPOINT} --launcher="slurm" ${PY_ARGS} 25 | -------------------------------------------------------------------------------- /downstream/seg/tools/slurm_train.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | set -x 4 | 5 | PARTITION=$1 6 | JOB_NAME=$2 7 | CONFIG=$3 8 | GPUS=${GPUS:-4} 9 | GPUS_PER_NODE=${GPUS_PER_NODE:-4} 10 | CPUS_PER_TASK=${CPUS_PER_TASK:-5} 11 | SRUN_ARGS=${SRUN_ARGS:-""} 12 | PY_ARGS=${@:4} 13 | 14 | PYTHONPATH="$(dirname $0)/..":$PYTHONPATH \ 15 | srun -p ${PARTITION} \ 16 | --job-name=${JOB_NAME} \ 17 | --gres=gpu:${GPUS_PER_NODE} \ 18 | --ntasks=${GPUS} \ 19 | --ntasks-per-node=${GPUS_PER_NODE} \ 20 | --cpus-per-task=${CPUS_PER_TASK} \ 21 | --kill-on-bad-exit=1 \ 22 | ${SRUN_ARGS} \ 23 | python -u tools/train.py ${CONFIG} --launcher="slurm" ${PY_ARGS} 24 | -------------------------------------------------------------------------------- /loss/__init__.py: -------------------------------------------------------------------------------- 1 | import glob 2 | import importlib 3 | 4 | from util.registry import Registry 5 | LOSS = Registry('Loss') 6 | 7 | files = glob.glob('loss/[!_]*.py') 8 | for file in files: 9 | model_lib = importlib.import_module(file.split('.')[0].replace('/', '.')) 10 | 11 | 12 | def get_loss_terms(loss_terms, device='cpu'): 13 | terms = {} 14 | for t in loss_terms: 15 | t = {k: v for k, v in t.items()} 16 | t_type = t.pop('type') 17 | t_name = t.pop('name') 18 | terms[t_name] = LOSS.get_module(t_type)(**t).to(device).eval() 19 | return terms 20 | -------------------------------------------------------------------------------- /loss/base_loss.py: -------------------------------------------------------------------------------- 1 | import torch.nn as nn 2 | from . import LOSS 3 | 4 | __all__ = ['L1Loss', 'MSELoss'] 5 | 6 | 7 | @LOSS.register_module 8 | class L1Loss(nn.L1Loss): 9 | def __init__(self, lam=1): 10 | super(L1Loss, self).__init__() 11 | self.lam = lam 12 | 13 | def forward(self, input, target): 14 | return super(L1Loss, self).forward(input, target) * self.lam 15 | 16 | 17 | @LOSS.register_module 18 | class MSELoss(nn.MSELoss): 19 | def __init__(self, lam=1): 20 | super(MSELoss, self).__init__() 21 | self.lam = lam 22 | 23 | def forward(self, input, target): 24 | return super(MSELoss, self).forward(input, target) * self.lam 25 | -------------------------------------------------------------------------------- /model/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lewandofskee/MobileMamba/0980f48a23d232e0f2e86e740eccab038c8fd760/model/.DS_Store -------------------------------------------------------------------------------- /model/cls_factory.py: -------------------------------------------------------------------------------- 1 | import model.lib_teacher.tresnet_v2 2 | import model.mobilemamba.mobilemamba 3 | 4 | from timm.models._registry import _model_entrypoints 5 | from . import MODEL 6 | 7 | for timm_name, timm_fn in _model_entrypoints.items(): 8 | MODEL.register_module(timm_fn, f'timm_{timm_name}') 9 | 10 | if __name__ == '__main__': 11 | print() 12 | -------------------------------------------------------------------------------- /model/lib_mamba/kernels/selective_scan/csrc/selective_scan/cus/selective_scan_core_bwd.cu: -------------------------------------------------------------------------------- 1 | /****************************************************************************** 2 | * Copyright (c) 2023, Tri Dao. 3 | ******************************************************************************/ 4 | #include "selective_scan_bwd_kernel.cuh" 5 | 6 | template void selective_scan_bwd_cuda<1, float, float>(SSMParamsBwd ¶ms, cudaStream_t stream); 7 | template void selective_scan_bwd_cuda<1, at::Half, float>(SSMParamsBwd ¶ms, cudaStream_t stream); 8 | template void selective_scan_bwd_cuda<1, at::BFloat16, float>(SSMParamsBwd ¶ms, cudaStream_t stream); 9 | 10 | -------------------------------------------------------------------------------- /model/lib_mamba/kernels/selective_scan/csrc/selective_scan/cus/selective_scan_core_fwd.cu: -------------------------------------------------------------------------------- 1 | /****************************************************************************** 2 | * Copyright (c) 2023, Tri Dao. 3 | ******************************************************************************/ 4 | #include "selective_scan_fwd_kernel.cuh" 5 | 6 | template void selective_scan_fwd_cuda<1, float, float>(SSMParamsBase ¶ms, cudaStream_t stream); 7 | template void selective_scan_fwd_cuda<1, at::Half, float>(SSMParamsBase ¶ms, cudaStream_t stream); 8 | template void selective_scan_fwd_cuda<1, at::BFloat16, float>(SSMParamsBase ¶ms, cudaStream_t stream); 9 | 10 | -------------------------------------------------------------------------------- /model/lib_mamba/kernels/selective_scan/csrc/selective_scan/cusndstate/selective_scan_core_bwd.cu: -------------------------------------------------------------------------------- 1 | /****************************************************************************** 2 | * Copyright (c) 2023, Tri Dao. 3 | ******************************************************************************/ 4 | #include "selective_scan_bwd_kernel_ndstate.cuh" 5 | 6 | template void selective_scan_bwd_cuda<1, float, float>(SSMParamsBwd ¶ms, cudaStream_t stream); 7 | template void selective_scan_bwd_cuda<1, at::Half, float>(SSMParamsBwd ¶ms, cudaStream_t stream); 8 | template void selective_scan_bwd_cuda<1, at::BFloat16, float>(SSMParamsBwd ¶ms, cudaStream_t stream); 9 | 10 | -------------------------------------------------------------------------------- /model/lib_mamba/kernels/selective_scan/csrc/selective_scan/cusndstate/selective_scan_core_fwd.cu: -------------------------------------------------------------------------------- 1 | /****************************************************************************** 2 | * Copyright (c) 2023, Tri Dao. 3 | ******************************************************************************/ 4 | #include "selective_scan_fwd_kernel_ndstate.cuh" 5 | 6 | template void selective_scan_fwd_cuda<1, float, float>(SSMParamsBase ¶ms, cudaStream_t stream); 7 | template void selective_scan_fwd_cuda<1, at::Half, float>(SSMParamsBase ¶ms, cudaStream_t stream); 8 | template void selective_scan_fwd_cuda<1, at::BFloat16, float>(SSMParamsBase ¶ms, cudaStream_t stream); 9 | 10 | -------------------------------------------------------------------------------- /model/lib_mamba/kernels/selective_scan/csrc/selective_scan/cusnrow/selective_scan_core_bwd.cu: -------------------------------------------------------------------------------- 1 | /****************************************************************************** 2 | * Copyright (c) 2023, Tri Dao. 3 | ******************************************************************************/ 4 | #include "selective_scan_bwd_kernel_nrow.cuh" 5 | 6 | template void selective_scan_bwd_cuda<1, float, float>(SSMParamsBwd ¶ms, cudaStream_t stream); 7 | template void selective_scan_bwd_cuda<1, at::Half, float>(SSMParamsBwd ¶ms, cudaStream_t stream); 8 | template void selective_scan_bwd_cuda<1, at::BFloat16, float>(SSMParamsBwd ¶ms, cudaStream_t stream); 9 | 10 | -------------------------------------------------------------------------------- /model/lib_mamba/kernels/selective_scan/csrc/selective_scan/cusnrow/selective_scan_core_bwd2.cu: -------------------------------------------------------------------------------- 1 | /****************************************************************************** 2 | * Copyright (c) 2023, Tri Dao. 3 | ******************************************************************************/ 4 | #include "selective_scan_bwd_kernel_nrow.cuh" 5 | 6 | template void selective_scan_bwd_cuda<2, float, float>(SSMParamsBwd ¶ms, cudaStream_t stream); 7 | template void selective_scan_bwd_cuda<2, at::Half, float>(SSMParamsBwd ¶ms, cudaStream_t stream); 8 | template void selective_scan_bwd_cuda<2, at::BFloat16, float>(SSMParamsBwd ¶ms, cudaStream_t stream); 9 | 10 | -------------------------------------------------------------------------------- /model/lib_mamba/kernels/selective_scan/csrc/selective_scan/cusnrow/selective_scan_core_bwd3.cu: -------------------------------------------------------------------------------- 1 | /****************************************************************************** 2 | * Copyright (c) 2023, Tri Dao. 3 | ******************************************************************************/ 4 | #include "selective_scan_bwd_kernel_nrow.cuh" 5 | 6 | template void selective_scan_bwd_cuda<3, float, float>(SSMParamsBwd ¶ms, cudaStream_t stream); 7 | template void selective_scan_bwd_cuda<3, at::Half, float>(SSMParamsBwd ¶ms, cudaStream_t stream); 8 | template void selective_scan_bwd_cuda<3, at::BFloat16, float>(SSMParamsBwd ¶ms, cudaStream_t stream); 9 | -------------------------------------------------------------------------------- /model/lib_mamba/kernels/selective_scan/csrc/selective_scan/cusnrow/selective_scan_core_bwd4.cu: -------------------------------------------------------------------------------- 1 | /****************************************************************************** 2 | * Copyright (c) 2023, Tri Dao. 3 | ******************************************************************************/ 4 | #include "selective_scan_bwd_kernel_nrow.cuh" 5 | 6 | template void selective_scan_bwd_cuda<4, float, float>(SSMParamsBwd ¶ms, cudaStream_t stream); 7 | template void selective_scan_bwd_cuda<4, at::Half, float>(SSMParamsBwd ¶ms, cudaStream_t stream); 8 | template void selective_scan_bwd_cuda<4, at::BFloat16, float>(SSMParamsBwd ¶ms, cudaStream_t stream); 9 | -------------------------------------------------------------------------------- /model/lib_mamba/kernels/selective_scan/csrc/selective_scan/cusnrow/selective_scan_core_fwd.cu: -------------------------------------------------------------------------------- 1 | /****************************************************************************** 2 | * Copyright (c) 2023, Tri Dao. 3 | ******************************************************************************/ 4 | #include "selective_scan_fwd_kernel_nrow.cuh" 5 | 6 | template void selective_scan_fwd_cuda<1, float, float>(SSMParamsBase ¶ms, cudaStream_t stream); 7 | template void selective_scan_fwd_cuda<1, at::Half, float>(SSMParamsBase ¶ms, cudaStream_t stream); 8 | template void selective_scan_fwd_cuda<1, at::BFloat16, float>(SSMParamsBase ¶ms, cudaStream_t stream); 9 | 10 | -------------------------------------------------------------------------------- /model/lib_mamba/kernels/selective_scan/csrc/selective_scan/cusnrow/selective_scan_core_fwd2.cu: -------------------------------------------------------------------------------- 1 | /****************************************************************************** 2 | * Copyright (c) 2023, Tri Dao. 3 | ******************************************************************************/ 4 | #include "selective_scan_fwd_kernel_nrow.cuh" 5 | 6 | template void selective_scan_fwd_cuda<2, float, float>(SSMParamsBase ¶ms, cudaStream_t stream); 7 | template void selective_scan_fwd_cuda<2, at::Half, float>(SSMParamsBase ¶ms, cudaStream_t stream); 8 | template void selective_scan_fwd_cuda<2, at::BFloat16, float>(SSMParamsBase ¶ms, cudaStream_t stream); 9 | 10 | -------------------------------------------------------------------------------- /model/lib_mamba/kernels/selective_scan/csrc/selective_scan/cusnrow/selective_scan_core_fwd3.cu: -------------------------------------------------------------------------------- 1 | /****************************************************************************** 2 | * Copyright (c) 2023, Tri Dao. 3 | ******************************************************************************/ 4 | #include "selective_scan_fwd_kernel_nrow.cuh" 5 | 6 | template void selective_scan_fwd_cuda<3, float, float>(SSMParamsBase ¶ms, cudaStream_t stream); 7 | template void selective_scan_fwd_cuda<3, at::Half, float>(SSMParamsBase ¶ms, cudaStream_t stream); 8 | template void selective_scan_fwd_cuda<3, at::BFloat16, float>(SSMParamsBase ¶ms, cudaStream_t stream); 9 | 10 | -------------------------------------------------------------------------------- /model/lib_mamba/kernels/selective_scan/csrc/selective_scan/cusnrow/selective_scan_core_fwd4.cu: -------------------------------------------------------------------------------- 1 | /****************************************************************************** 2 | * Copyright (c) 2023, Tri Dao. 3 | ******************************************************************************/ 4 | #include "selective_scan_fwd_kernel_nrow.cuh" 5 | 6 | template void selective_scan_fwd_cuda<4, float, float>(SSMParamsBase ¶ms, cudaStream_t stream); 7 | template void selective_scan_fwd_cuda<4, at::Half, float>(SSMParamsBase ¶ms, cudaStream_t stream); 8 | template void selective_scan_fwd_cuda<4, at::BFloat16, float>(SSMParamsBase ¶ms, cudaStream_t stream); 9 | 10 | -------------------------------------------------------------------------------- /model/lib_mamba/kernels/selective_scan/csrc/selective_scan/cusoflex/selective_scan_core_bwd.cu: -------------------------------------------------------------------------------- 1 | /****************************************************************************** 2 | * Copyright (c) 2023, Tri Dao. 3 | ******************************************************************************/ 4 | #include "selective_scan_bwd_kernel_oflex.cuh" 5 | 6 | template void selective_scan_bwd_cuda<1, float, float, float>(SSMParamsBwd ¶ms, cudaStream_t stream); 7 | template void selective_scan_bwd_cuda<1, at::Half, float, float>(SSMParamsBwd ¶ms, cudaStream_t stream); 8 | template void selective_scan_bwd_cuda<1, at::BFloat16, float, float>(SSMParamsBwd ¶ms, cudaStream_t stream); 9 | template void selective_scan_bwd_cuda<1, at::Half, float, at::Half>(SSMParamsBwd ¶ms, cudaStream_t stream); 10 | template void selective_scan_bwd_cuda<1, at::BFloat16, float, at::BFloat16>(SSMParamsBwd ¶ms, cudaStream_t stream); 11 | 12 | -------------------------------------------------------------------------------- /model/lib_mamba/kernels/selective_scan/csrc/selective_scan/cusoflex/selective_scan_core_fwd.cu: -------------------------------------------------------------------------------- 1 | /****************************************************************************** 2 | * Copyright (c) 2023, Tri Dao. 3 | ******************************************************************************/ 4 | #include "selective_scan_fwd_kernel_oflex.cuh" 5 | 6 | template void selective_scan_fwd_cuda<1, float, float, float>(SSMParamsBase ¶ms, cudaStream_t stream); 7 | template void selective_scan_fwd_cuda<1, at::Half, float, float>(SSMParamsBase ¶ms, cudaStream_t stream); 8 | template void selective_scan_fwd_cuda<1, at::BFloat16, float, float>(SSMParamsBase ¶ms, cudaStream_t stream); 9 | template void selective_scan_fwd_cuda<1, at::Half, float, at::Half>(SSMParamsBase ¶ms, cudaStream_t stream); 10 | template void selective_scan_fwd_cuda<1, at::BFloat16, float, at::BFloat16>(SSMParamsBase ¶ms, cudaStream_t stream); 11 | 12 | -------------------------------------------------------------------------------- /model/lib_mamba/kernels/selective_scan/csrc/selective_scan/static_switch.h: -------------------------------------------------------------------------------- 1 | // Inspired by https://github.com/NVIDIA/DALI/blob/main/include/dali/core/static_switch.h 2 | // and https://github.com/pytorch/pytorch/blob/master/aten/src/ATen/Dispatch.h 3 | 4 | #pragma once 5 | 6 | /// @param COND - a boolean expression to switch by 7 | /// @param CONST_NAME - a name given for the constexpr bool variable. 8 | /// @param ... - code to execute for true and false 9 | /// 10 | /// Usage: 11 | /// ``` 12 | /// BOOL_SWITCH(flag, BoolConst, [&] { 13 | /// some_function(...); 14 | /// }); 15 | /// ``` 16 | #define BOOL_SWITCH(COND, CONST_NAME, ...) \ 17 | [&] { \ 18 | if (COND) { \ 19 | constexpr bool CONST_NAME = true; \ 20 | return __VA_ARGS__(); \ 21 | } else { \ 22 | constexpr bool CONST_NAME = false; \ 23 | return __VA_ARGS__(); \ 24 | } \ 25 | }() 26 | -------------------------------------------------------------------------------- /model/lib_teacher/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lewandofskee/MobileMamba/0980f48a23d232e0f2e86e740eccab038c8fd760/model/lib_teacher/__init__.py -------------------------------------------------------------------------------- /run.py: -------------------------------------------------------------------------------- 1 | import argparse 2 | from configs import get_cfg 3 | from util.net import init_training 4 | from util.util import run_pre, init_checkpoint 5 | from trainer import get_trainer 6 | import warnings 7 | warnings.filterwarnings("ignore") 8 | 9 | 10 | def main(): 11 | parser = argparse.ArgumentParser() 12 | parser.add_argument('-c', '--cfg_path', default='configs/mobilemamba/mobilemamba_t2.py') 13 | parser.add_argument('-m', '--mode', default='train', choices=['train', 'test', 'test_net', 'ft', 'search']) 14 | parser.add_argument('--sleep', type=int, default=-1) 15 | parser.add_argument('--memory', type=int, default=-1) 16 | parser.add_argument('--dist_url', default='env://', type=str, help='url used to set up distributed training') 17 | parser.add_argument('--logger_rank', default=0, type=int, help='GPU id to use.') 18 | parser.add_argument('opts', help='path.key=value', default=None, nargs=argparse.REMAINDER,) 19 | cfg_terminal = parser.parse_args() 20 | cfg = get_cfg(cfg_terminal) 21 | run_pre(cfg) 22 | init_training(cfg) 23 | init_checkpoint(cfg) 24 | trainer = get_trainer(cfg) 25 | trainer.run() 26 | 27 | 28 | if __name__ == '__main__': 29 | main() 30 | -------------------------------------------------------------------------------- /trainer/__init__.py: -------------------------------------------------------------------------------- 1 | import glob 2 | import importlib 3 | 4 | from util.registry import Registry 5 | TRAINER = Registry('Trainer') 6 | 7 | files = glob.glob('trainer/[!_]*.py') 8 | for file in files: 9 | model_lib = importlib.import_module(file.split('.')[0].replace('/', '.')) 10 | 11 | 12 | def get_trainer(cfg): 13 | return TRAINER.get_module(cfg.trainer.name)(cfg) 14 | -------------------------------------------------------------------------------- /util/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lewandofskee/MobileMamba/0980f48a23d232e0f2e86e740eccab038c8fd760/util/__init__.py -------------------------------------------------------------------------------- /util/registry.py: -------------------------------------------------------------------------------- 1 | 2 | class Registry: 3 | 4 | def __init__(self, name): 5 | self.name = name 6 | self.name_to_fn = dict() 7 | 8 | def register_module(self, fn, name=None): 9 | module_name = name if name else fn.__name__ 10 | self.name_to_fn[module_name] = fn 11 | return fn 12 | 13 | def __len__(self): 14 | return len(self.name_to_fn) 15 | 16 | def __contains__(self, name): 17 | return name in self.name_to_fn.keys() 18 | 19 | def get_module(self, name): 20 | if self.__contains__(name): 21 | return self.name_to_fn[name] 22 | else: 23 | raise ValueError('invalid module: {}'.format(name)) 24 | --------------------------------------------------------------------------------