├── .gitignore ├── AI_ETHICS.md ├── CODEOWNERS ├── CODE_OF_CONDUCT.md ├── CONTRIBUTING.md ├── LICENSE.txt ├── README.md ├── SECURITY.md ├── annotator ├── blur │ └── __init__.py ├── canny │ └── __init__.py ├── ckpts │ └── ckpts.txt ├── grayscale │ └── __init__.py ├── hed │ └── __init__.py ├── inpainting │ └── __init__.py ├── midas │ ├── LICENSE │ ├── __init__.py │ ├── api.py │ ├── midas │ │ ├── __init__.py │ │ ├── base_model.py │ │ ├── blocks.py │ │ ├── dpt_depth.py │ │ ├── midas_net.py │ │ ├── midas_net_custom.py │ │ ├── transforms.py │ │ └── vit.py │ └── utils.py ├── mlsd │ ├── LICENSE │ ├── __init__.py │ ├── models │ │ ├── mbv2_mlsd_large.py │ │ └── mbv2_mlsd_tiny.py │ └── utils.py ├── openpose │ ├── LICENSE │ ├── __init__.py │ ├── body.py │ ├── hand.py │ ├── model.py │ └── util.py ├── outpainting │ └── __init__.py ├── uniformer │ ├── LICENSE │ ├── __init__.py │ ├── __init__det.py │ ├── __init__seg.py │ ├── configs │ │ └── _base_ │ │ │ ├── datasets │ │ │ ├── ade20k.py │ │ │ ├── chase_db1.py │ │ │ ├── cityscapes.py │ │ │ ├── cityscapes_769x769.py │ │ │ ├── drive.py │ │ │ ├── hrf.py │ │ │ ├── pascal_context.py │ │ │ ├── pascal_context_59.py │ │ │ ├── pascal_voc12.py │ │ │ ├── pascal_voc12_aug.py │ │ │ └── stare.py │ │ │ ├── default_runtime.py │ │ │ ├── models │ │ │ ├── ann_r50-d8.py │ │ │ ├── apcnet_r50-d8.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 │ │ │ ├── emanet_r50-d8.py │ │ │ ├── encnet_r50-d8.py │ │ │ ├── fast_scnn.py │ │ │ ├── fcn_hr18.py │ │ │ ├── fcn_r50-d8.py │ │ │ ├── fcn_unet_s5-d16.py │ │ │ ├── fpn_r50.py │ │ │ ├── fpn_uniformer.py │ │ │ ├── gcnet_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 │ │ │ ├── upernet_r50.py │ │ │ └── upernet_uniformer.py │ │ │ └── schedules │ │ │ ├── schedule_160k.py │ │ │ ├── schedule_20k.py │ │ │ ├── schedule_40k.py │ │ │ └── schedule_80k.py │ ├── exp │ │ ├── cascade_mask_rcnn_3x_ms_hybrid_base │ │ │ ├── config.py │ │ │ └── run.sh │ │ └── upernet_global_small │ │ │ ├── config.py │ │ │ ├── run.sh │ │ │ ├── test.sh │ │ │ ├── test_config_g.py │ │ │ ├── test_config_h32.py │ │ │ └── test_config_w32.py │ ├── mmcv │ │ ├── __init__.py │ │ ├── arraymisc │ │ │ ├── __init__.py │ │ │ └── quantization.py │ │ ├── cnn │ │ │ ├── __init__.py │ │ │ ├── alexnet.py │ │ │ ├── bricks │ │ │ │ ├── __init__.py │ │ │ │ ├── activation.py │ │ │ │ ├── context_block.py │ │ │ │ ├── conv.py │ │ │ │ ├── conv2d_adaptive_padding.py │ │ │ │ ├── conv_module.py │ │ │ │ ├── conv_ws.py │ │ │ │ ├── depthwise_separable_conv_module.py │ │ │ │ ├── drop.py │ │ │ │ ├── generalized_attention.py │ │ │ │ ├── hsigmoid.py │ │ │ │ ├── hswish.py │ │ │ │ ├── non_local.py │ │ │ │ ├── norm.py │ │ │ │ ├── padding.py │ │ │ │ ├── plugin.py │ │ │ │ ├── registry.py │ │ │ │ ├── scale.py │ │ │ │ ├── swish.py │ │ │ │ ├── transformer.py │ │ │ │ ├── upsample.py │ │ │ │ └── wrappers.py │ │ │ ├── builder.py │ │ │ ├── resnet.py │ │ │ ├── utils │ │ │ │ ├── __init__.py │ │ │ │ ├── flops_counter.py │ │ │ │ ├── fuse_conv_bn.py │ │ │ │ ├── sync_bn.py │ │ │ │ └── weight_init.py │ │ │ └── vgg.py │ │ ├── engine │ │ │ ├── __init__.py │ │ │ └── test.py │ │ ├── fileio │ │ │ ├── __init__.py │ │ │ ├── file_client.py │ │ │ ├── handlers │ │ │ │ ├── __init__.py │ │ │ │ ├── base.py │ │ │ │ ├── json_handler.py │ │ │ │ ├── pickle_handler.py │ │ │ │ └── yaml_handler.py │ │ │ ├── io.py │ │ │ └── parse.py │ │ ├── image │ │ │ ├── __init__.py │ │ │ ├── colorspace.py │ │ │ ├── geometric.py │ │ │ ├── io.py │ │ │ ├── misc.py │ │ │ └── photometric.py │ │ ├── model_zoo │ │ │ ├── deprecated.json │ │ │ ├── mmcls.json │ │ │ └── open_mmlab.json │ │ ├── ops │ │ │ ├── __init__.py │ │ │ ├── assign_score_withk.py │ │ │ ├── ball_query.py │ │ │ ├── bbox.py │ │ │ ├── border_align.py │ │ │ ├── box_iou_rotated.py │ │ │ ├── carafe.py │ │ │ ├── cc_attention.py │ │ │ ├── contour_expand.py │ │ │ ├── corner_pool.py │ │ │ ├── correlation.py │ │ │ ├── deform_conv.py │ │ │ ├── deform_roi_pool.py │ │ │ ├── deprecated_wrappers.py │ │ │ ├── focal_loss.py │ │ │ ├── furthest_point_sample.py │ │ │ ├── fused_bias_leakyrelu.py │ │ │ ├── gather_points.py │ │ │ ├── group_points.py │ │ │ ├── info.py │ │ │ ├── iou3d.py │ │ │ ├── knn.py │ │ │ ├── masked_conv.py │ │ │ ├── merge_cells.py │ │ │ ├── modulated_deform_conv.py │ │ │ ├── multi_scale_deform_attn.py │ │ │ ├── nms.py │ │ │ ├── pixel_group.py │ │ │ ├── point_sample.py │ │ │ ├── points_in_boxes.py │ │ │ ├── points_sampler.py │ │ │ ├── psa_mask.py │ │ │ ├── roi_align.py │ │ │ ├── roi_align_rotated.py │ │ │ ├── roi_pool.py │ │ │ ├── roiaware_pool3d.py │ │ │ ├── roipoint_pool3d.py │ │ │ ├── saconv.py │ │ │ ├── scatter_points.py │ │ │ ├── sync_bn.py │ │ │ ├── three_interpolate.py │ │ │ ├── three_nn.py │ │ │ ├── tin_shift.py │ │ │ ├── upfirdn2d.py │ │ │ └── voxelize.py │ │ ├── parallel │ │ │ ├── __init__.py │ │ │ ├── _functions.py │ │ │ ├── collate.py │ │ │ ├── data_container.py │ │ │ ├── data_parallel.py │ │ │ ├── distributed.py │ │ │ ├── distributed_deprecated.py │ │ │ ├── registry.py │ │ │ ├── scatter_gather.py │ │ │ └── utils.py │ │ ├── runner │ │ │ ├── __init__.py │ │ │ ├── base_module.py │ │ │ ├── base_runner.py │ │ │ ├── builder.py │ │ │ ├── checkpoint.py │ │ │ ├── default_constructor.py │ │ │ ├── dist_utils.py │ │ │ ├── epoch_based_runner.py │ │ │ ├── fp16_utils.py │ │ │ ├── hooks │ │ │ │ ├── __init__.py │ │ │ │ ├── checkpoint.py │ │ │ │ ├── closure.py │ │ │ │ ├── ema.py │ │ │ │ ├── evaluation.py │ │ │ │ ├── hook.py │ │ │ │ ├── iter_timer.py │ │ │ │ ├── logger │ │ │ │ │ ├── __init__.py │ │ │ │ │ ├── base.py │ │ │ │ │ ├── dvclive.py │ │ │ │ │ ├── mlflow.py │ │ │ │ │ ├── neptune.py │ │ │ │ │ ├── pavi.py │ │ │ │ │ ├── tensorboard.py │ │ │ │ │ ├── text.py │ │ │ │ │ └── wandb.py │ │ │ │ ├── lr_updater.py │ │ │ │ ├── memory.py │ │ │ │ ├── momentum_updater.py │ │ │ │ ├── optimizer.py │ │ │ │ ├── profiler.py │ │ │ │ ├── sampler_seed.py │ │ │ │ └── sync_buffer.py │ │ │ ├── iter_based_runner.py │ │ │ ├── log_buffer.py │ │ │ ├── optimizer │ │ │ │ ├── __init__.py │ │ │ │ ├── builder.py │ │ │ │ └── default_constructor.py │ │ │ ├── priority.py │ │ │ └── utils.py │ │ ├── utils │ │ │ ├── __init__.py │ │ │ ├── config.py │ │ │ ├── env.py │ │ │ ├── ext_loader.py │ │ │ ├── logging.py │ │ │ ├── misc.py │ │ │ ├── parrots_jit.py │ │ │ ├── parrots_wrapper.py │ │ │ ├── path.py │ │ │ ├── progressbar.py │ │ │ ├── registry.py │ │ │ ├── testing.py │ │ │ ├── timer.py │ │ │ ├── trace.py │ │ │ └── version_utils.py │ │ ├── version.py │ │ ├── video │ │ │ ├── __init__.py │ │ │ ├── io.py │ │ │ ├── optflow.py │ │ │ └── processing.py │ │ └── visualization │ │ │ ├── __init__.py │ │ │ ├── color.py │ │ │ ├── image.py │ │ │ └── optflow.py │ ├── mmcv_custom │ │ ├── __init__.py │ │ └── checkpoint.py │ ├── mmdet.zip │ ├── mmdet │ │ ├── __init__.py │ │ ├── apis │ │ │ ├── __init__.py │ │ │ ├── inference.py │ │ │ ├── test.py │ │ │ └── train.py │ │ ├── core │ │ │ ├── __init__.py │ │ │ ├── anchor │ │ │ │ ├── __init__.py │ │ │ │ ├── anchor_generator.py │ │ │ │ ├── builder.py │ │ │ │ ├── point_generator.py │ │ │ │ └── utils.py │ │ │ ├── bbox │ │ │ │ ├── __init__.py │ │ │ │ ├── assigners │ │ │ │ │ ├── __init__.py │ │ │ │ │ ├── approx_max_iou_assigner.py │ │ │ │ │ ├── assign_result.py │ │ │ │ │ ├── atss_assigner.py │ │ │ │ │ ├── base_assigner.py │ │ │ │ │ ├── center_region_assigner.py │ │ │ │ │ ├── grid_assigner.py │ │ │ │ │ ├── hungarian_assigner.py │ │ │ │ │ ├── max_iou_assigner.py │ │ │ │ │ ├── point_assigner.py │ │ │ │ │ └── region_assigner.py │ │ │ │ ├── builder.py │ │ │ │ ├── coder │ │ │ │ │ ├── __init__.py │ │ │ │ │ ├── base_bbox_coder.py │ │ │ │ │ ├── bucketing_bbox_coder.py │ │ │ │ │ ├── delta_xywh_bbox_coder.py │ │ │ │ │ ├── legacy_delta_xywh_bbox_coder.py │ │ │ │ │ ├── pseudo_bbox_coder.py │ │ │ │ │ ├── tblr_bbox_coder.py │ │ │ │ │ └── yolo_bbox_coder.py │ │ │ │ ├── demodata.py │ │ │ │ ├── iou_calculators │ │ │ │ │ ├── __init__.py │ │ │ │ │ ├── builder.py │ │ │ │ │ └── iou2d_calculator.py │ │ │ │ ├── match_costs │ │ │ │ │ ├── __init__.py │ │ │ │ │ ├── builder.py │ │ │ │ │ └── match_cost.py │ │ │ │ ├── samplers │ │ │ │ │ ├── __init__.py │ │ │ │ │ ├── base_sampler.py │ │ │ │ │ ├── combined_sampler.py │ │ │ │ │ ├── instance_balanced_pos_sampler.py │ │ │ │ │ ├── iou_balanced_neg_sampler.py │ │ │ │ │ ├── ohem_sampler.py │ │ │ │ │ ├── pseudo_sampler.py │ │ │ │ │ ├── random_sampler.py │ │ │ │ │ ├── sampling_result.py │ │ │ │ │ └── score_hlr_sampler.py │ │ │ │ └── transforms.py │ │ │ ├── evaluation │ │ │ │ ├── __init__.py │ │ │ │ ├── bbox_overlaps.py │ │ │ │ ├── class_names.py │ │ │ │ ├── eval_hooks.py │ │ │ │ ├── mean_ap.py │ │ │ │ └── recall.py │ │ │ ├── export │ │ │ │ ├── __init__.py │ │ │ │ └── pytorch2onnx.py │ │ │ ├── mask │ │ │ │ ├── __init__.py │ │ │ │ ├── mask_target.py │ │ │ │ ├── structures.py │ │ │ │ └── utils.py │ │ │ ├── post_processing │ │ │ │ ├── __init__.py │ │ │ │ ├── bbox_nms.py │ │ │ │ └── merge_augs.py │ │ │ ├── utils │ │ │ │ ├── __init__.py │ │ │ │ ├── dist_utils.py │ │ │ │ └── misc.py │ │ │ └── visualization │ │ │ │ ├── __init__.py │ │ │ │ └── image.py │ │ ├── datasets │ │ │ ├── __init__.py │ │ │ ├── builder.py │ │ │ ├── cityscapes.py │ │ │ ├── coco.py │ │ │ ├── custom.py │ │ │ ├── dataset_wrappers.py │ │ │ ├── deepfashion.py │ │ │ ├── lvis.py │ │ │ ├── pipelines │ │ │ │ ├── __init__.py │ │ │ │ ├── auto_augment.py │ │ │ │ ├── compose.py │ │ │ │ ├── formating.py │ │ │ │ ├── instaboost.py │ │ │ │ ├── loading.py │ │ │ │ ├── test_time_aug.py │ │ │ │ └── transforms.py │ │ │ ├── samplers │ │ │ │ ├── __init__.py │ │ │ │ ├── distributed_sampler.py │ │ │ │ └── group_sampler.py │ │ │ ├── utils.py │ │ │ ├── voc.py │ │ │ ├── wider_face.py │ │ │ └── xml_style.py │ │ ├── models │ │ │ ├── __init__.py │ │ │ ├── backbones │ │ │ │ ├── __init__.py │ │ │ │ ├── darknet.py │ │ │ │ ├── detectors_resnet.py │ │ │ │ ├── detectors_resnext.py │ │ │ │ ├── hourglass.py │ │ │ │ ├── hrnet.py │ │ │ │ ├── regnet.py │ │ │ │ ├── res2net.py │ │ │ │ ├── resnest.py │ │ │ │ ├── resnet.py │ │ │ │ ├── resnext.py │ │ │ │ ├── ssd_vgg.py │ │ │ │ ├── swin_transformer.py │ │ │ │ ├── trident_resnet.py │ │ │ │ └── uniformer.py │ │ │ ├── builder.py │ │ │ ├── dense_heads │ │ │ │ ├── __init__.py │ │ │ │ ├── anchor_free_head.py │ │ │ │ ├── anchor_head.py │ │ │ │ ├── atss_head.py │ │ │ │ ├── base_dense_head.py │ │ │ │ ├── cascade_rpn_head.py │ │ │ │ ├── centripetal_head.py │ │ │ │ ├── corner_head.py │ │ │ │ ├── dense_test_mixins.py │ │ │ │ ├── embedding_rpn_head.py │ │ │ │ ├── fcos_head.py │ │ │ │ ├── fovea_head.py │ │ │ │ ├── free_anchor_retina_head.py │ │ │ │ ├── fsaf_head.py │ │ │ │ ├── ga_retina_head.py │ │ │ │ ├── ga_rpn_head.py │ │ │ │ ├── gfl_head.py │ │ │ │ ├── guided_anchor_head.py │ │ │ │ ├── ld_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 │ │ │ │ ├── rpn_test_mixin.py │ │ │ │ ├── sabl_retina_head.py │ │ │ │ ├── ssd_head.py │ │ │ │ ├── transformer_head.py │ │ │ │ ├── vfnet_head.py │ │ │ │ ├── yolact_head.py │ │ │ │ └── yolo_head.py │ │ │ ├── detectors │ │ │ │ ├── __init__.py │ │ │ │ ├── atss.py │ │ │ │ ├── base.py │ │ │ │ ├── cascade_rcnn.py │ │ │ │ ├── cornernet.py │ │ │ │ ├── detr.py │ │ │ │ ├── fast_rcnn.py │ │ │ │ ├── faster_rcnn.py │ │ │ │ ├── fcos.py │ │ │ │ ├── fovea.py │ │ │ │ ├── fsaf.py │ │ │ │ ├── gfl.py │ │ │ │ ├── grid_rcnn.py │ │ │ │ ├── htc.py │ │ │ │ ├── kd_one_stage.py │ │ │ │ ├── mask_rcnn.py │ │ │ │ ├── mask_scoring_rcnn.py │ │ │ │ ├── nasfcos.py │ │ │ │ ├── paa.py │ │ │ │ ├── point_rend.py │ │ │ │ ├── reppoints_detector.py │ │ │ │ ├── retinanet.py │ │ │ │ ├── rpn.py │ │ │ │ ├── scnet.py │ │ │ │ ├── single_stage.py │ │ │ │ ├── sparse_rcnn.py │ │ │ │ ├── trident_faster_rcnn.py │ │ │ │ ├── two_stage.py │ │ │ │ ├── vfnet.py │ │ │ │ ├── yolact.py │ │ │ │ └── yolo.py │ │ │ ├── losses │ │ │ │ ├── __init__.py │ │ │ │ ├── accuracy.py │ │ │ │ ├── ae_loss.py │ │ │ │ ├── balanced_l1_loss.py │ │ │ │ ├── cross_entropy_loss.py │ │ │ │ ├── focal_loss.py │ │ │ │ ├── gaussian_focal_loss.py │ │ │ │ ├── gfocal_loss.py │ │ │ │ ├── ghm_loss.py │ │ │ │ ├── iou_loss.py │ │ │ │ ├── kd_loss.py │ │ │ │ ├── mse_loss.py │ │ │ │ ├── pisa_loss.py │ │ │ │ ├── smooth_l1_loss.py │ │ │ │ ├── utils.py │ │ │ │ └── varifocal_loss.py │ │ │ ├── necks │ │ │ │ ├── __init__.py │ │ │ │ ├── bfp.py │ │ │ │ ├── channel_mapper.py │ │ │ │ ├── fpg.py │ │ │ │ ├── fpn.py │ │ │ │ ├── fpn_carafe.py │ │ │ │ ├── hrfpn.py │ │ │ │ ├── nas_fpn.py │ │ │ │ ├── nasfcos_fpn.py │ │ │ │ ├── pafpn.py │ │ │ │ ├── rfp.py │ │ │ │ └── yolo_neck.py │ │ │ ├── roi_heads │ │ │ │ ├── __init__.py │ │ │ │ ├── base_roi_head.py │ │ │ │ ├── bbox_heads │ │ │ │ │ ├── __init__.py │ │ │ │ │ ├── bbox_head.py │ │ │ │ │ ├── convfc_bbox_head.py │ │ │ │ │ ├── dii_head.py │ │ │ │ │ ├── double_bbox_head.py │ │ │ │ │ ├── sabl_head.py │ │ │ │ │ └── scnet_bbox_head.py │ │ │ │ ├── cascade_roi_head.py │ │ │ │ ├── double_roi_head.py │ │ │ │ ├── dynamic_roi_head.py │ │ │ │ ├── grid_roi_head.py │ │ │ │ ├── htc_roi_head.py │ │ │ │ ├── mask_heads │ │ │ │ │ ├── __init__.py │ │ │ │ │ ├── coarse_mask_head.py │ │ │ │ │ ├── fcn_mask_head.py │ │ │ │ │ ├── feature_relay_head.py │ │ │ │ │ ├── fused_semantic_head.py │ │ │ │ │ ├── global_context_head.py │ │ │ │ │ ├── grid_head.py │ │ │ │ │ ├── htc_mask_head.py │ │ │ │ │ ├── mask_point_head.py │ │ │ │ │ ├── maskiou_head.py │ │ │ │ │ ├── scnet_mask_head.py │ │ │ │ │ └── scnet_semantic_head.py │ │ │ │ ├── mask_scoring_roi_head.py │ │ │ │ ├── pisa_roi_head.py │ │ │ │ ├── point_rend_roi_head.py │ │ │ │ ├── roi_extractors │ │ │ │ │ ├── __init__.py │ │ │ │ │ ├── base_roi_extractor.py │ │ │ │ │ ├── generic_roi_extractor.py │ │ │ │ │ └── single_level_roi_extractor.py │ │ │ │ ├── scnet_roi_head.py │ │ │ │ ├── shared_heads │ │ │ │ │ ├── __init__.py │ │ │ │ │ └── res_layer.py │ │ │ │ ├── sparse_roi_head.py │ │ │ │ ├── standard_roi_head.py │ │ │ │ ├── test_mixins.py │ │ │ │ └── trident_roi_head.py │ │ │ └── utils │ │ │ │ ├── __init__.py │ │ │ │ ├── builder.py │ │ │ │ ├── gaussian_target.py │ │ │ │ ├── positional_encoding.py │ │ │ │ ├── res_layer.py │ │ │ │ └── transformer.py │ │ ├── utils │ │ │ ├── __init__.py │ │ │ ├── collect_env.py │ │ │ ├── contextmanagers.py │ │ │ ├── logger.py │ │ │ ├── optimizer.py │ │ │ ├── profiling.py │ │ │ ├── util_mixins.py │ │ │ └── util_random.py │ │ └── version.py │ ├── mmdet_null │ │ ├── apis │ │ │ ├── __init__.py │ │ │ ├── inference.py │ │ │ ├── test.py │ │ │ └── train.py │ │ ├── core │ │ │ ├── __init__.py │ │ │ ├── anchor │ │ │ │ ├── __init__.py │ │ │ │ ├── anchor_generator.py │ │ │ │ ├── builder.py │ │ │ │ ├── point_generator.py │ │ │ │ └── utils.py │ │ │ ├── bbox │ │ │ │ ├── __init__.py │ │ │ │ ├── assigners │ │ │ │ │ ├── __init__.py │ │ │ │ │ ├── approx_max_iou_assigner.py │ │ │ │ │ ├── assign_result.py │ │ │ │ │ ├── atss_assigner.py │ │ │ │ │ ├── base_assigner.py │ │ │ │ │ ├── center_region_assigner.py │ │ │ │ │ ├── grid_assigner.py │ │ │ │ │ ├── hungarian_assigner.py │ │ │ │ │ ├── max_iou_assigner.py │ │ │ │ │ ├── point_assigner.py │ │ │ │ │ └── region_assigner.py │ │ │ │ ├── builder.py │ │ │ │ ├── coder │ │ │ │ │ ├── __init__.py │ │ │ │ │ ├── base_bbox_coder.py │ │ │ │ │ ├── bucketing_bbox_coder.py │ │ │ │ │ ├── delta_xywh_bbox_coder.py │ │ │ │ │ ├── legacy_delta_xywh_bbox_coder.py │ │ │ │ │ ├── pseudo_bbox_coder.py │ │ │ │ │ ├── tblr_bbox_coder.py │ │ │ │ │ └── yolo_bbox_coder.py │ │ │ │ ├── demodata.py │ │ │ │ ├── iou_calculators │ │ │ │ │ ├── __init__.py │ │ │ │ │ ├── builder.py │ │ │ │ │ └── iou2d_calculator.py │ │ │ │ ├── match_costs │ │ │ │ │ ├── __init__.py │ │ │ │ │ ├── builder.py │ │ │ │ │ └── match_cost.py │ │ │ │ ├── samplers │ │ │ │ │ ├── __init__.py │ │ │ │ │ ├── base_sampler.py │ │ │ │ │ ├── combined_sampler.py │ │ │ │ │ ├── instance_balanced_pos_sampler.py │ │ │ │ │ ├── iou_balanced_neg_sampler.py │ │ │ │ │ ├── ohem_sampler.py │ │ │ │ │ ├── pseudo_sampler.py │ │ │ │ │ ├── random_sampler.py │ │ │ │ │ ├── sampling_result.py │ │ │ │ │ └── score_hlr_sampler.py │ │ │ │ └── transforms.py │ │ │ ├── evaluation │ │ │ │ ├── __init__.py │ │ │ │ ├── bbox_overlaps.py │ │ │ │ ├── class_names.py │ │ │ │ ├── eval_hooks.py │ │ │ │ ├── mean_ap.py │ │ │ │ └── recall.py │ │ │ ├── export │ │ │ │ ├── __init__.py │ │ │ │ └── pytorch2onnx.py │ │ │ ├── mask │ │ │ │ ├── __init__.py │ │ │ │ ├── mask_target.py │ │ │ │ ├── structures.py │ │ │ │ └── utils.py │ │ │ ├── post_processing │ │ │ │ ├── __init__.py │ │ │ │ ├── bbox_nms.py │ │ │ │ └── merge_augs.py │ │ │ ├── utils │ │ │ │ ├── __init__.py │ │ │ │ ├── dist_utils.py │ │ │ │ └── misc.py │ │ │ └── visualization │ │ │ │ ├── __init__.py │ │ │ │ └── image.py │ │ ├── datasets │ │ │ ├── __init__.py │ │ │ ├── builder.py │ │ │ ├── cityscapes.py │ │ │ ├── coco.py │ │ │ ├── custom.py │ │ │ ├── dataset_wrappers.py │ │ │ ├── deepfashion.py │ │ │ ├── lvis.py │ │ │ ├── pipelines │ │ │ │ ├── __init__.py │ │ │ │ ├── auto_augment.py │ │ │ │ ├── compose.py │ │ │ │ ├── formating.py │ │ │ │ ├── instaboost.py │ │ │ │ ├── loading.py │ │ │ │ ├── test_time_aug.py │ │ │ │ └── transforms.py │ │ │ ├── samplers │ │ │ │ ├── __init__.py │ │ │ │ ├── distributed_sampler.py │ │ │ │ └── group_sampler.py │ │ │ ├── utils.py │ │ │ ├── voc.py │ │ │ ├── wider_face.py │ │ │ └── xml_style.py │ │ ├── models │ │ │ ├── __init__.py │ │ │ ├── backbones │ │ │ │ ├── __init__.py │ │ │ │ ├── darknet.py │ │ │ │ ├── detectors_resnet.py │ │ │ │ ├── detectors_resnext.py │ │ │ │ ├── hourglass.py │ │ │ │ ├── hrnet.py │ │ │ │ ├── regnet.py │ │ │ │ ├── res2net.py │ │ │ │ ├── resnest.py │ │ │ │ ├── resnet.py │ │ │ │ ├── resnext.py │ │ │ │ ├── ssd_vgg.py │ │ │ │ ├── swin_transformer.py │ │ │ │ ├── trident_resnet.py │ │ │ │ └── uniformer.py │ │ │ ├── builder.py │ │ │ ├── dense_heads │ │ │ │ ├── __init__.py │ │ │ │ ├── anchor_free_head.py │ │ │ │ ├── anchor_head.py │ │ │ │ ├── atss_head.py │ │ │ │ ├── base_dense_head.py │ │ │ │ ├── cascade_rpn_head.py │ │ │ │ ├── centripetal_head.py │ │ │ │ ├── corner_head.py │ │ │ │ ├── dense_test_mixins.py │ │ │ │ ├── embedding_rpn_head.py │ │ │ │ ├── fcos_head.py │ │ │ │ ├── fovea_head.py │ │ │ │ ├── free_anchor_retina_head.py │ │ │ │ ├── fsaf_head.py │ │ │ │ ├── ga_retina_head.py │ │ │ │ ├── ga_rpn_head.py │ │ │ │ ├── gfl_head.py │ │ │ │ ├── guided_anchor_head.py │ │ │ │ ├── ld_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 │ │ │ │ ├── rpn_test_mixin.py │ │ │ │ ├── sabl_retina_head.py │ │ │ │ ├── ssd_head.py │ │ │ │ ├── transformer_head.py │ │ │ │ ├── vfnet_head.py │ │ │ │ ├── yolact_head.py │ │ │ │ └── yolo_head.py │ │ │ ├── detectors │ │ │ │ ├── __init__.py │ │ │ │ ├── atss.py │ │ │ │ ├── base.py │ │ │ │ ├── cascade_rcnn.py │ │ │ │ ├── cornernet.py │ │ │ │ ├── detr.py │ │ │ │ ├── fast_rcnn.py │ │ │ │ ├── faster_rcnn.py │ │ │ │ ├── fcos.py │ │ │ │ ├── fovea.py │ │ │ │ ├── fsaf.py │ │ │ │ ├── gfl.py │ │ │ │ ├── grid_rcnn.py │ │ │ │ ├── htc.py │ │ │ │ ├── kd_one_stage.py │ │ │ │ ├── mask_rcnn.py │ │ │ │ ├── mask_scoring_rcnn.py │ │ │ │ ├── nasfcos.py │ │ │ │ ├── paa.py │ │ │ │ ├── point_rend.py │ │ │ │ ├── reppoints_detector.py │ │ │ │ ├── retinanet.py │ │ │ │ ├── rpn.py │ │ │ │ ├── scnet.py │ │ │ │ ├── single_stage.py │ │ │ │ ├── sparse_rcnn.py │ │ │ │ ├── trident_faster_rcnn.py │ │ │ │ ├── two_stage.py │ │ │ │ ├── vfnet.py │ │ │ │ ├── yolact.py │ │ │ │ └── yolo.py │ │ │ ├── losses │ │ │ │ ├── __init__.py │ │ │ │ ├── accuracy.py │ │ │ │ ├── ae_loss.py │ │ │ │ ├── balanced_l1_loss.py │ │ │ │ ├── cross_entropy_loss.py │ │ │ │ ├── focal_loss.py │ │ │ │ ├── gaussian_focal_loss.py │ │ │ │ ├── gfocal_loss.py │ │ │ │ ├── ghm_loss.py │ │ │ │ ├── iou_loss.py │ │ │ │ ├── kd_loss.py │ │ │ │ ├── mse_loss.py │ │ │ │ ├── pisa_loss.py │ │ │ │ ├── smooth_l1_loss.py │ │ │ │ ├── utils.py │ │ │ │ └── varifocal_loss.py │ │ │ ├── necks │ │ │ │ ├── __init__.py │ │ │ │ ├── bfp.py │ │ │ │ ├── channel_mapper.py │ │ │ │ ├── fpg.py │ │ │ │ ├── fpn.py │ │ │ │ ├── fpn_carafe.py │ │ │ │ ├── hrfpn.py │ │ │ │ ├── nas_fpn.py │ │ │ │ ├── nasfcos_fpn.py │ │ │ │ ├── pafpn.py │ │ │ │ ├── rfp.py │ │ │ │ └── yolo_neck.py │ │ │ ├── roi_heads │ │ │ │ ├── __init__.py │ │ │ │ ├── base_roi_head.py │ │ │ │ ├── bbox_heads │ │ │ │ │ ├── __init__.py │ │ │ │ │ ├── bbox_head.py │ │ │ │ │ ├── convfc_bbox_head.py │ │ │ │ │ ├── dii_head.py │ │ │ │ │ ├── double_bbox_head.py │ │ │ │ │ ├── sabl_head.py │ │ │ │ │ └── scnet_bbox_head.py │ │ │ │ ├── cascade_roi_head.py │ │ │ │ ├── double_roi_head.py │ │ │ │ ├── dynamic_roi_head.py │ │ │ │ ├── grid_roi_head.py │ │ │ │ ├── htc_roi_head.py │ │ │ │ ├── mask_heads │ │ │ │ │ ├── __init__.py │ │ │ │ │ ├── coarse_mask_head.py │ │ │ │ │ ├── fcn_mask_head.py │ │ │ │ │ ├── feature_relay_head.py │ │ │ │ │ ├── fused_semantic_head.py │ │ │ │ │ ├── global_context_head.py │ │ │ │ │ ├── grid_head.py │ │ │ │ │ ├── htc_mask_head.py │ │ │ │ │ ├── mask_point_head.py │ │ │ │ │ ├── maskiou_head.py │ │ │ │ │ ├── scnet_mask_head.py │ │ │ │ │ └── scnet_semantic_head.py │ │ │ │ ├── mask_scoring_roi_head.py │ │ │ │ ├── pisa_roi_head.py │ │ │ │ ├── point_rend_roi_head.py │ │ │ │ ├── roi_extractors │ │ │ │ │ ├── __init__.py │ │ │ │ │ ├── base_roi_extractor.py │ │ │ │ │ ├── generic_roi_extractor.py │ │ │ │ │ └── single_level_roi_extractor.py │ │ │ │ ├── scnet_roi_head.py │ │ │ │ ├── shared_heads │ │ │ │ │ ├── __init__.py │ │ │ │ │ └── res_layer.py │ │ │ │ ├── sparse_roi_head.py │ │ │ │ ├── standard_roi_head.py │ │ │ │ ├── test_mixins.py │ │ │ │ └── trident_roi_head.py │ │ │ └── utils │ │ │ │ ├── __init__.py │ │ │ │ ├── builder.py │ │ │ │ ├── gaussian_target.py │ │ │ │ ├── positional_encoding.py │ │ │ │ ├── res_layer.py │ │ │ │ └── transformer.py │ │ ├── utils │ │ │ ├── __init__.py │ │ │ ├── collect_env.py │ │ │ ├── contextmanagers.py │ │ │ ├── logger.py │ │ │ ├── optimizer.py │ │ │ ├── profiling.py │ │ │ ├── util_mixins.py │ │ │ └── util_random.py │ │ └── version.py │ └── mmseg │ │ ├── apis │ │ ├── __init__.py │ │ ├── inference.py │ │ ├── test.py │ │ └── train.py │ │ ├── core │ │ ├── __init__.py │ │ ├── evaluation │ │ │ ├── __init__.py │ │ │ ├── class_names.py │ │ │ ├── eval_hooks.py │ │ │ └── metrics.py │ │ ├── seg │ │ │ ├── __init__.py │ │ │ ├── builder.py │ │ │ └── sampler │ │ │ │ ├── __init__.py │ │ │ │ ├── base_pixel_sampler.py │ │ │ │ └── ohem_pixel_sampler.py │ │ └── utils │ │ │ ├── __init__.py │ │ │ └── misc.py │ │ ├── datasets │ │ ├── __init__.py │ │ ├── ade.py │ │ ├── builder.py │ │ ├── chase_db1.py │ │ ├── cityscapes.py │ │ ├── custom.py │ │ ├── dataset_wrappers.py │ │ ├── drive.py │ │ ├── hrf.py │ │ ├── pascal_context.py │ │ ├── pipelines │ │ │ ├── __init__.py │ │ │ ├── compose.py │ │ │ ├── formating.py │ │ │ ├── loading.py │ │ │ ├── test_time_aug.py │ │ │ └── transforms.py │ │ ├── stare.py │ │ └── voc.py │ │ ├── models │ │ ├── __init__.py │ │ ├── backbones │ │ │ ├── __init__.py │ │ │ ├── cgnet.py │ │ │ ├── fast_scnn.py │ │ │ ├── hrnet.py │ │ │ ├── mobilenet_v2.py │ │ │ ├── mobilenet_v3.py │ │ │ ├── resnest.py │ │ │ ├── resnet.py │ │ │ ├── resnext.py │ │ │ ├── unet.py │ │ │ ├── uniformer.py │ │ │ └── vit.py │ │ ├── builder.py │ │ ├── decode_heads │ │ │ ├── __init__.py │ │ │ ├── ann_head.py │ │ │ ├── apc_head.py │ │ │ ├── aspp_head.py │ │ │ ├── cascade_decode_head.py │ │ │ ├── cc_head.py │ │ │ ├── da_head.py │ │ │ ├── decode_head.py │ │ │ ├── dm_head.py │ │ │ ├── dnl_head.py │ │ │ ├── ema_head.py │ │ │ ├── enc_head.py │ │ │ ├── fcn_head.py │ │ │ ├── fpn_head.py │ │ │ ├── gc_head.py │ │ │ ├── lraspp_head.py │ │ │ ├── nl_head.py │ │ │ ├── ocr_head.py │ │ │ ├── point_head.py │ │ │ ├── psa_head.py │ │ │ ├── psp_head.py │ │ │ ├── sep_aspp_head.py │ │ │ ├── sep_fcn_head.py │ │ │ └── uper_head.py │ │ ├── losses │ │ │ ├── __init__.py │ │ │ ├── accuracy.py │ │ │ ├── cross_entropy_loss.py │ │ │ ├── dice_loss.py │ │ │ ├── lovasz_loss.py │ │ │ └── utils.py │ │ ├── necks │ │ │ ├── __init__.py │ │ │ ├── fpn.py │ │ │ └── multilevel_neck.py │ │ ├── segmentors │ │ │ ├── __init__.py │ │ │ ├── base.py │ │ │ ├── cascade_encoder_decoder.py │ │ │ └── encoder_decoder.py │ │ └── utils │ │ │ ├── __init__.py │ │ │ ├── drop.py │ │ │ ├── inverted_residual.py │ │ │ ├── make_divisible.py │ │ │ ├── res_layer.py │ │ │ ├── se_layer.py │ │ │ ├── self_attention_block.py │ │ │ ├── up_conv_block.py │ │ │ └── weight_init.py │ │ ├── ops │ │ ├── __init__.py │ │ ├── encoding.py │ │ └── wrappers.py │ │ └── utils │ │ ├── __init__.py │ │ ├── collect_env.py │ │ └── logger.py ├── uniformer_base │ ├── LICENSE │ ├── __init__.py │ ├── configs │ │ └── _base_ │ │ │ ├── datasets │ │ │ ├── ade20k.py │ │ │ ├── chase_db1.py │ │ │ ├── cityscapes.py │ │ │ ├── cityscapes_769x769.py │ │ │ ├── drive.py │ │ │ ├── hrf.py │ │ │ ├── pascal_context.py │ │ │ ├── pascal_context_59.py │ │ │ ├── pascal_voc12.py │ │ │ ├── pascal_voc12_aug.py │ │ │ └── stare.py │ │ │ ├── default_runtime.py │ │ │ ├── models │ │ │ ├── ann_r50-d8.py │ │ │ ├── apcnet_r50-d8.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 │ │ │ ├── emanet_r50-d8.py │ │ │ ├── encnet_r50-d8.py │ │ │ ├── fast_scnn.py │ │ │ ├── fcn_hr18.py │ │ │ ├── fcn_r50-d8.py │ │ │ ├── fcn_unet_s5-d16.py │ │ │ ├── fpn_r50.py │ │ │ ├── fpn_uniformer.py │ │ │ ├── gcnet_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 │ │ │ ├── upernet_r50.py │ │ │ └── upernet_uniformer.py │ │ │ └── schedules │ │ │ ├── schedule_160k.py │ │ │ ├── schedule_20k.py │ │ │ ├── schedule_40k.py │ │ │ └── schedule_80k.py │ ├── exp │ │ ├── upernet_global_base │ │ │ ├── config.py │ │ │ ├── run.sh │ │ │ ├── test.sh │ │ │ ├── test_config_g.py │ │ │ ├── test_config_h32.py │ │ │ └── test_config_w32.py │ │ └── upernet_global_small │ │ │ ├── config.py │ │ │ ├── run.sh │ │ │ ├── test.sh │ │ │ ├── test_config_g.py │ │ │ ├── test_config_h32.py │ │ │ └── test_config_w32.py │ ├── mmcv │ │ ├── __init__.py │ │ ├── arraymisc │ │ │ ├── __init__.py │ │ │ └── quantization.py │ │ ├── cnn │ │ │ ├── __init__.py │ │ │ ├── alexnet.py │ │ │ ├── bricks │ │ │ │ ├── __init__.py │ │ │ │ ├── activation.py │ │ │ │ ├── context_block.py │ │ │ │ ├── conv.py │ │ │ │ ├── conv2d_adaptive_padding.py │ │ │ │ ├── conv_module.py │ │ │ │ ├── conv_ws.py │ │ │ │ ├── depthwise_separable_conv_module.py │ │ │ │ ├── drop.py │ │ │ │ ├── generalized_attention.py │ │ │ │ ├── hsigmoid.py │ │ │ │ ├── hswish.py │ │ │ │ ├── non_local.py │ │ │ │ ├── norm.py │ │ │ │ ├── padding.py │ │ │ │ ├── plugin.py │ │ │ │ ├── registry.py │ │ │ │ ├── scale.py │ │ │ │ ├── swish.py │ │ │ │ ├── transformer.py │ │ │ │ ├── upsample.py │ │ │ │ └── wrappers.py │ │ │ ├── builder.py │ │ │ ├── resnet.py │ │ │ ├── utils │ │ │ │ ├── __init__.py │ │ │ │ ├── flops_counter.py │ │ │ │ ├── fuse_conv_bn.py │ │ │ │ ├── sync_bn.py │ │ │ │ └── weight_init.py │ │ │ └── vgg.py │ │ ├── engine │ │ │ ├── __init__.py │ │ │ └── test.py │ │ ├── fileio │ │ │ ├── __init__.py │ │ │ ├── file_client.py │ │ │ ├── handlers │ │ │ │ ├── __init__.py │ │ │ │ ├── base.py │ │ │ │ ├── json_handler.py │ │ │ │ ├── pickle_handler.py │ │ │ │ └── yaml_handler.py │ │ │ ├── io.py │ │ │ └── parse.py │ │ ├── image │ │ │ ├── __init__.py │ │ │ ├── colorspace.py │ │ │ ├── geometric.py │ │ │ ├── io.py │ │ │ ├── misc.py │ │ │ └── photometric.py │ │ ├── model_zoo │ │ │ ├── deprecated.json │ │ │ ├── mmcls.json │ │ │ └── open_mmlab.json │ │ ├── ops │ │ │ ├── __init__.py │ │ │ ├── assign_score_withk.py │ │ │ ├── ball_query.py │ │ │ ├── bbox.py │ │ │ ├── border_align.py │ │ │ ├── box_iou_rotated.py │ │ │ ├── carafe.py │ │ │ ├── cc_attention.py │ │ │ ├── contour_expand.py │ │ │ ├── corner_pool.py │ │ │ ├── correlation.py │ │ │ ├── deform_conv.py │ │ │ ├── deform_roi_pool.py │ │ │ ├── deprecated_wrappers.py │ │ │ ├── focal_loss.py │ │ │ ├── furthest_point_sample.py │ │ │ ├── fused_bias_leakyrelu.py │ │ │ ├── gather_points.py │ │ │ ├── group_points.py │ │ │ ├── info.py │ │ │ ├── iou3d.py │ │ │ ├── knn.py │ │ │ ├── masked_conv.py │ │ │ ├── merge_cells.py │ │ │ ├── modulated_deform_conv.py │ │ │ ├── multi_scale_deform_attn.py │ │ │ ├── nms.py │ │ │ ├── pixel_group.py │ │ │ ├── point_sample.py │ │ │ ├── points_in_boxes.py │ │ │ ├── points_sampler.py │ │ │ ├── psa_mask.py │ │ │ ├── roi_align.py │ │ │ ├── roi_align_rotated.py │ │ │ ├── roi_pool.py │ │ │ ├── roiaware_pool3d.py │ │ │ ├── roipoint_pool3d.py │ │ │ ├── saconv.py │ │ │ ├── scatter_points.py │ │ │ ├── sync_bn.py │ │ │ ├── three_interpolate.py │ │ │ ├── three_nn.py │ │ │ ├── tin_shift.py │ │ │ ├── upfirdn2d.py │ │ │ └── voxelize.py │ │ ├── parallel │ │ │ ├── __init__.py │ │ │ ├── _functions.py │ │ │ ├── collate.py │ │ │ ├── data_container.py │ │ │ ├── data_parallel.py │ │ │ ├── distributed.py │ │ │ ├── distributed_deprecated.py │ │ │ ├── registry.py │ │ │ ├── scatter_gather.py │ │ │ └── utils.py │ │ ├── runner │ │ │ ├── __init__.py │ │ │ ├── base_module.py │ │ │ ├── base_runner.py │ │ │ ├── builder.py │ │ │ ├── checkpoint.py │ │ │ ├── default_constructor.py │ │ │ ├── dist_utils.py │ │ │ ├── epoch_based_runner.py │ │ │ ├── fp16_utils.py │ │ │ ├── hooks │ │ │ │ ├── __init__.py │ │ │ │ ├── checkpoint.py │ │ │ │ ├── closure.py │ │ │ │ ├── ema.py │ │ │ │ ├── evaluation.py │ │ │ │ ├── hook.py │ │ │ │ ├── iter_timer.py │ │ │ │ ├── logger │ │ │ │ │ ├── __init__.py │ │ │ │ │ ├── base.py │ │ │ │ │ ├── dvclive.py │ │ │ │ │ ├── mlflow.py │ │ │ │ │ ├── neptune.py │ │ │ │ │ ├── pavi.py │ │ │ │ │ ├── tensorboard.py │ │ │ │ │ ├── text.py │ │ │ │ │ └── wandb.py │ │ │ │ ├── lr_updater.py │ │ │ │ ├── memory.py │ │ │ │ ├── momentum_updater.py │ │ │ │ ├── optimizer.py │ │ │ │ ├── profiler.py │ │ │ │ ├── sampler_seed.py │ │ │ │ └── sync_buffer.py │ │ │ ├── iter_based_runner.py │ │ │ ├── log_buffer.py │ │ │ ├── optimizer │ │ │ │ ├── __init__.py │ │ │ │ ├── builder.py │ │ │ │ └── default_constructor.py │ │ │ ├── priority.py │ │ │ └── utils.py │ │ ├── utils │ │ │ ├── __init__.py │ │ │ ├── config.py │ │ │ ├── env.py │ │ │ ├── ext_loader.py │ │ │ ├── logging.py │ │ │ ├── misc.py │ │ │ ├── parrots_jit.py │ │ │ ├── parrots_wrapper.py │ │ │ ├── path.py │ │ │ ├── progressbar.py │ │ │ ├── registry.py │ │ │ ├── testing.py │ │ │ ├── timer.py │ │ │ ├── trace.py │ │ │ └── version_utils.py │ │ ├── version.py │ │ ├── video │ │ │ ├── __init__.py │ │ │ ├── io.py │ │ │ ├── optflow.py │ │ │ └── processing.py │ │ └── visualization │ │ │ ├── __init__.py │ │ │ ├── color.py │ │ │ ├── image.py │ │ │ └── optflow.py │ ├── mmcv_custom │ │ ├── __init__.py │ │ └── checkpoint.py │ └── mmseg │ │ ├── apis │ │ ├── __init__.py │ │ ├── inference.py │ │ ├── test.py │ │ └── train.py │ │ ├── core │ │ ├── __init__.py │ │ ├── evaluation │ │ │ ├── __init__.py │ │ │ ├── class_names.py │ │ │ ├── eval_hooks.py │ │ │ └── metrics.py │ │ ├── seg │ │ │ ├── __init__.py │ │ │ ├── builder.py │ │ │ └── sampler │ │ │ │ ├── __init__.py │ │ │ │ ├── base_pixel_sampler.py │ │ │ │ └── ohem_pixel_sampler.py │ │ └── utils │ │ │ ├── __init__.py │ │ │ └── misc.py │ │ ├── datasets │ │ ├── __init__.py │ │ ├── ade.py │ │ ├── builder.py │ │ ├── chase_db1.py │ │ ├── cityscapes.py │ │ ├── custom.py │ │ ├── dataset_wrappers.py │ │ ├── drive.py │ │ ├── hrf.py │ │ ├── pascal_context.py │ │ ├── pipelines │ │ │ ├── __init__.py │ │ │ ├── compose.py │ │ │ ├── formating.py │ │ │ ├── loading.py │ │ │ ├── test_time_aug.py │ │ │ └── transforms.py │ │ ├── stare.py │ │ └── voc.py │ │ ├── models │ │ ├── __init__.py │ │ ├── backbones │ │ │ ├── __init__.py │ │ │ ├── cgnet.py │ │ │ ├── fast_scnn.py │ │ │ ├── hrnet.py │ │ │ ├── mobilenet_v2.py │ │ │ ├── mobilenet_v3.py │ │ │ ├── resnest.py │ │ │ ├── resnet.py │ │ │ ├── resnext.py │ │ │ ├── unet.py │ │ │ ├── uniformer.py │ │ │ └── vit.py │ │ ├── builder.py │ │ ├── decode_heads │ │ │ ├── __init__.py │ │ │ ├── ann_head.py │ │ │ ├── apc_head.py │ │ │ ├── aspp_head.py │ │ │ ├── cascade_decode_head.py │ │ │ ├── cc_head.py │ │ │ ├── da_head.py │ │ │ ├── decode_head.py │ │ │ ├── dm_head.py │ │ │ ├── dnl_head.py │ │ │ ├── ema_head.py │ │ │ ├── enc_head.py │ │ │ ├── fcn_head.py │ │ │ ├── fpn_head.py │ │ │ ├── gc_head.py │ │ │ ├── lraspp_head.py │ │ │ ├── nl_head.py │ │ │ ├── ocr_head.py │ │ │ ├── point_head.py │ │ │ ├── psa_head.py │ │ │ ├── psp_head.py │ │ │ ├── sep_aspp_head.py │ │ │ ├── sep_fcn_head.py │ │ │ └── uper_head.py │ │ ├── losses │ │ │ ├── __init__.py │ │ │ ├── accuracy.py │ │ │ ├── cross_entropy_loss.py │ │ │ ├── dice_loss.py │ │ │ ├── lovasz_loss.py │ │ │ └── utils.py │ │ ├── necks │ │ │ ├── __init__.py │ │ │ ├── fpn.py │ │ │ └── multilevel_neck.py │ │ ├── segmentors │ │ │ ├── __init__.py │ │ │ ├── base.py │ │ │ ├── cascade_encoder_decoder.py │ │ │ └── encoder_decoder.py │ │ └── utils │ │ │ ├── __init__.py │ │ │ ├── drop.py │ │ │ ├── inverted_residual.py │ │ │ ├── make_divisible.py │ │ │ ├── res_layer.py │ │ │ ├── se_layer.py │ │ │ ├── self_attention_block.py │ │ │ ├── up_conv_block.py │ │ │ └── weight_init.py │ │ ├── ops │ │ ├── __init__.py │ │ ├── encoding.py │ │ └── wrappers.py │ │ └── utils │ │ ├── __init__.py │ │ ├── collect_env.py │ │ └── logger.py └── util.py ├── app ├── gradio_all_tasks.py ├── gradio_bbox2image.py ├── gradio_canny2image.py ├── gradio_colorization.py ├── gradio_deblur.py ├── gradio_depth2image.py ├── gradio_hed2image.py ├── gradio_hedsketch2image.py ├── gradio_inpainting.py ├── gradio_normal2image.py ├── gradio_outpainting.py ├── gradio_pose2image.py └── gradio_seg2image.py ├── ckpts └── README.md ├── cldm ├── cldm.py ├── cldm_unicontrol.py ├── cldm_unicontrol_v11.py ├── ddim_hacked.py ├── ddim_unicontrol_hacked.py ├── hack.py ├── logger.py └── model.py ├── config.py ├── data ├── bbox.json ├── bbox │ ├── control_12836.jpg │ ├── control_217.jpg │ ├── control_40175.jpg │ └── control_53860.jpg ├── blur.json ├── blur │ ├── control_1.png │ ├── control_2.png │ └── control_3.png ├── canny.json ├── canny │ ├── control_00785.jpg │ ├── control_24456.jpg │ ├── control_27182.jpg │ ├── control_50426.jpg │ ├── control_592.jpg │ └── control_87875.jpg ├── depth.json ├── depth │ ├── control_01135.jpg │ ├── control_09798.jpg │ ├── control_13403.jpg │ ├── control_223.jpg │ ├── control_68294.jpg │ ├── control_72517.jpg │ └── control_80560.jpg ├── grayscale.json ├── grayscale │ ├── control_4.png │ ├── control_5.png │ ├── control_6.png │ └── control_7.png ├── hed.json ├── hed │ ├── control_19578.jpg │ ├── control_22.jpg │ ├── control_238.jpg │ ├── control_66523.jpg │ ├── control_66524.jpg │ └── control_81859.jpg ├── hedsketch.json ├── hedsketch │ ├── control_00663.jpg │ ├── control_117.jpg │ ├── control_223.jpg │ ├── control_248.jpg │ ├── control_276.jpg │ ├── control_315.jpg │ ├── control_332.jpg │ ├── control_598.jpg │ └── control_78.jpg ├── inpainting.json ├── inpainting │ ├── control_10.png │ ├── control_8.png │ └── control_9.png ├── normal.json ├── normal │ ├── control_158.jpg │ ├── control_25062.jpg │ ├── control_276.jpg │ ├── control_457.jpg │ ├── control_482.jpg │ ├── control_64786.jpg │ ├── control_73237.jpg │ ├── control_84477.jpg │ └── control_92236.jpg ├── openpose.json ├── openpose │ ├── control_148.jpg │ ├── control_152.jpg │ ├── control_158.jpg │ ├── control_165.jpg │ ├── control_167.jpg │ ├── control_186.jpg │ ├── control_194.jpg │ ├── control_217.jpg │ └── control_47.jpg ├── outpainting.json ├── outpainting │ ├── control_147.jpg │ ├── control_177.jpg │ ├── control_235.jpg │ ├── control_246.jpg │ └── control_61.jpg ├── seg.json └── segbase │ ├── control_31269.jpg │ ├── control_386.jpg │ ├── control_66141.jpg │ ├── control_75015.jpg │ ├── control_83.jpg │ └── control_89381.jpg ├── dataset_eval.py ├── environment.yaml ├── figs ├── demo_simple.png ├── gradio_all_task_sketch.png ├── gradio_all_tasks.png ├── gradio_bbox.png ├── gradio_canny.png ├── gradio_colorization.png ├── gradio_deblur.png ├── gradio_depth.png ├── gradio_hed.png ├── gradio_hedsketch.png ├── gradio_inpainting.png ├── gradio_normal.png ├── gradio_outpainting.png ├── gradio_pose.png ├── gradio_seg.png ├── method.png ├── northeastern.png ├── salesforce.png └── stanford.png ├── font └── DejaVuSans.ttf ├── inference_demo.py ├── ldm ├── data │ ├── __init__.py │ └── util.py ├── models │ ├── autoencoder.py │ └── diffusion │ │ ├── __init__.py │ │ ├── ddim.py │ │ ├── ddim_multi.py │ │ ├── ddpm.py │ │ ├── ddpm_multi.py │ │ ├── dpm_solver │ │ ├── __init__.py │ │ ├── dpm_solver.py │ │ └── sampler.py │ │ ├── plms.py │ │ └── sampling_util.py ├── modules │ ├── attention.py │ ├── diffusionmodules │ │ ├── __init__.py │ │ ├── model.py │ │ ├── openaimodel.py │ │ ├── upscaling.py │ │ └── util.py │ ├── distributions │ │ ├── __init__.py │ │ └── distributions.py │ ├── ema.py │ ├── encoders │ │ ├── __init__.py │ │ └── modules.py │ ├── image_degradation │ │ ├── __init__.py │ │ ├── bsrgan.py │ │ ├── bsrgan_light.py │ │ ├── utils │ │ │ └── test.png │ │ └── utils_image.py │ └── midas │ │ ├── __init__.py │ │ ├── api.py │ │ ├── midas │ │ ├── __init__.py │ │ ├── base_model.py │ │ ├── blocks.py │ │ ├── dpt_depth.py │ │ ├── midas_net.py │ │ ├── midas_net_custom.py │ │ ├── transforms.py │ │ └── vit.py │ │ └── utils.py └── util.py ├── load_model └── load_safetensors_model.py ├── models ├── cldm_v15.yaml ├── cldm_v15_unicontrol.yaml ├── cldm_v15_unicontrol_v11.yaml └── cldm_v21.yaml ├── multigen20m └── README.md ├── share.py ├── test_imgs ├── Zelda-Breath-of-the-Wild.jpg ├── bag.png ├── bag_scribble.png ├── baseball-player.jpg ├── bird.png ├── boy.png ├── building.png ├── building2.png ├── cute_robot.png ├── cyber.png ├── dog.png ├── dog2.png ├── girl-brush-teeth.jpg ├── house.png ├── house_line.png ├── human.png ├── human_line.png ├── kitchen.jpg ├── man-donut.jpg ├── man-shirt-tie.jpg ├── man.png ├── mousse-cake.jpg ├── old.png ├── pose1.png ├── pose2.png ├── room.png ├── sd.png ├── shose.png ├── super-man-city.jpg ├── toy.png ├── user_1.png ├── user_3.png └── woman-hat.jpg ├── tool_add_control.py ├── tool_add_control_sd21.py ├── train_unicontrol.py ├── train_util ├── dataset.py ├── dataset_collate.py └── multi_task_scheduler.py └── utils.py /AI_ETHICS.md: -------------------------------------------------------------------------------- 1 | ## Ethics disclaimer for Salesforce AI models, data, code 2 | 3 | This release is for research purposes only in support of an academic 4 | paper. Our models, datasets, and code are not specifically designed or 5 | evaluated for all downstream purposes. We strongly recommend users 6 | evaluate and address potential concerns related to accuracy, safety, and 7 | fairness before deploying this model. We encourage users to consider the 8 | common limitations of AI, comply with applicable laws, and leverage best 9 | practices when selecting use cases, particularly for high-risk scenarios 10 | where errors or misuse could significantly impact people’s lives, rights, 11 | or safety. For further guidance on use cases, refer to our standard 12 | [AUP](https://www.salesforce.com/content/dam/web/en_us/www/documents/legal/Agreements/policies/ExternalFacing_Services_Policy.pdf) 13 | and [AI AUP](https://www.salesforce.com/content/dam/web/en_us/www/documents/legal/Agreements/policies/ai-acceptable-use-policy.pdf). 14 | -------------------------------------------------------------------------------- /CODEOWNERS: -------------------------------------------------------------------------------- 1 | # Comment line immediately above ownership line is reserved for related other information. Please be careful while editing. 2 | #ECCN:Open Source -------------------------------------------------------------------------------- /SECURITY.md: -------------------------------------------------------------------------------- 1 | ## Security 2 | 3 | Please report any security issue to [security@salesforce.com](mailto:security@salesforce.com) 4 | as soon as it is discovered. This library limits its runtime dependencies in 5 | order to reduce the total cost of ownership as much as can be, but all consumers 6 | should remain vigilant and have their security stakeholders review all third-party 7 | products (3PP) like this one and their dependencies. -------------------------------------------------------------------------------- /annotator/blur/__init__.py: -------------------------------------------------------------------------------- 1 | import cv2 2 | 3 | class Blurrer: 4 | def __call__(self, img, ksize): 5 | img_new = cv2.GaussianBlur(img, (ksize, ksize), cv2.BORDER_DEFAULT) 6 | img_new = img_new.astype('ubyte') 7 | return img_new 8 | -------------------------------------------------------------------------------- /annotator/canny/__init__.py: -------------------------------------------------------------------------------- 1 | ''' 2 | * Copyright (c) 2023 Salesforce, Inc. 3 | * All rights reserved. 4 | * SPDX-License-Identifier: Apache License 2.0 5 | * For full license text, see LICENSE.txt file in the repo root or http://www.apache.org/licenses/ 6 | * By Can Qin 7 | * Modified from ControlNet repo: https://github.com/lllyasviel/ControlNet 8 | * Copyright (c) 2023 Lvmin Zhang and Maneesh Agrawala 9 | ''' 10 | 11 | import cv2 12 | 13 | 14 | class CannyDetector: 15 | def __call__(self, img, low_threshold, high_threshold): 16 | return cv2.Canny(img, low_threshold, high_threshold) 17 | -------------------------------------------------------------------------------- /annotator/ckpts/ckpts.txt: -------------------------------------------------------------------------------- 1 | Weights here. -------------------------------------------------------------------------------- /annotator/grayscale/__init__.py: -------------------------------------------------------------------------------- 1 | from skimage import color 2 | 3 | class GrayscaleConverter: 4 | def __call__(self, img): 5 | return (color.rgb2gray(img) * 255.0).astype('ubyte') 6 | -------------------------------------------------------------------------------- /annotator/inpainting/__init__.py: -------------------------------------------------------------------------------- 1 | import numpy as np 2 | 3 | class Inpainter: 4 | def __call__(self, img, rand_h, rand_h_1, rand_w, rand_w_1): 5 | h = img.shape[0] 6 | w = img.shape[1] 7 | h_new = int(float(h) / 100.0 * float(rand_h)) 8 | w_new = int(float(w) / 100.0 * float(rand_w)) 9 | h_new_1 = int(float(h) / 100.0 * float(rand_h_1)) 10 | w_new_1 = int(float(w) / 100.0 * float(rand_w_1)) 11 | 12 | img_new = img 13 | img_new[(h-h_new)//2:(h+h_new_1)//2, (w-w_new)//2:(w+w_new_1)//2] = 0 14 | img_new = img_new.astype('ubyte') 15 | return img_new 16 | -------------------------------------------------------------------------------- /annotator/midas/midas/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/salesforce/UniControl/9f452ee2acda6bdc4c9c6b67072bdc872277a403/annotator/midas/midas/__init__.py -------------------------------------------------------------------------------- /annotator/midas/midas/base_model.py: -------------------------------------------------------------------------------- 1 | ''' 2 | * Copyright (c) 2023 Salesforce, Inc. 3 | * All rights reserved. 4 | * SPDX-License-Identifier: Apache License 2.0 5 | * For full license text, see LICENSE.txt file in the repo root or http://www.apache.org/licenses/ 6 | * By Can Qin 7 | * Modified from ControlNet repo: https://github.com/lllyasviel/ControlNet 8 | * Copyright (c) 2023 Lvmin Zhang and Maneesh Agrawala 9 | ''' 10 | 11 | import torch 12 | 13 | 14 | class BaseModel(torch.nn.Module): 15 | def load(self, path): 16 | """Load model from file. 17 | 18 | Args: 19 | path (str): file path 20 | """ 21 | parameters = torch.load(path, map_location=torch.device('cpu')) 22 | 23 | if "optimizer" in parameters: 24 | parameters = parameters["model"] 25 | 26 | self.load_state_dict(parameters) 27 | -------------------------------------------------------------------------------- /annotator/outpainting/__init__.py: -------------------------------------------------------------------------------- 1 | ''' 2 | * Copyright (c) 2023 Salesforce, Inc. 3 | * All rights reserved. 4 | * SPDX-License-Identifier: Apache License 2.0 5 | * For full license text, see LICENSE.txt file in the repo root or http://www.apache.org/licenses/ 6 | * By Ning Yu 7 | ''' 8 | 9 | import numpy as np 10 | 11 | class Outpainter: 12 | def __call__(self, img, rand_h, rand_w): 13 | h = img.shape[0] 14 | w = img.shape[1] 15 | h_new = int(float(h) / 100.0 * float(rand_h)) 16 | w_new = int(float(w) / 100.0 * float(rand_w)) 17 | img_new = np.zeros(img.shape) 18 | img_new[(h-h_new)//2:(h+h_new)//2, (w-w_new)//2:(w+w_new)//2] = img[(h-h_new)//2:(h+h_new)//2, (w-w_new)//2:(w+w_new)//2] 19 | img_new = img_new.astype('ubyte') 20 | return img_new 21 | -------------------------------------------------------------------------------- /annotator/uniformer/configs/_base_/datasets/pascal_voc12_aug.py: -------------------------------------------------------------------------------- 1 | _base_ = './pascal_voc12.py' 2 | # dataset settings 3 | data = dict( 4 | train=dict( 5 | ann_dir=['SegmentationClass', 'SegmentationClassAug'], 6 | split=[ 7 | 'ImageSets/Segmentation/train.txt', 8 | 'ImageSets/Segmentation/aug.txt' 9 | ])) 10 | -------------------------------------------------------------------------------- /annotator/uniformer/configs/_base_/default_runtime.py: -------------------------------------------------------------------------------- 1 | # yapf:disable 2 | log_config = dict( 3 | interval=50, 4 | hooks=[ 5 | dict(type='TextLoggerHook', by_epoch=False), 6 | # dict(type='TensorboardLoggerHook') 7 | ]) 8 | # yapf:enable 9 | dist_params = dict(backend='nccl') 10 | log_level = 'INFO' 11 | load_from = None 12 | resume_from = None 13 | workflow = [('train', 1)] 14 | cudnn_benchmark = True 15 | -------------------------------------------------------------------------------- /annotator/uniformer/configs/_base_/models/lraspp_m-v3-d8.py: -------------------------------------------------------------------------------- 1 | # model settings 2 | norm_cfg = dict(type='SyncBN', eps=0.001, requires_grad=True) 3 | model = dict( 4 | type='EncoderDecoder', 5 | backbone=dict( 6 | type='MobileNetV3', 7 | arch='large', 8 | out_indices=(1, 3, 16), 9 | norm_cfg=norm_cfg), 10 | decode_head=dict( 11 | type='LRASPPHead', 12 | in_channels=(16, 24, 960), 13 | in_index=(0, 1, 2), 14 | channels=128, 15 | input_transform='multiple_select', 16 | dropout_ratio=0.1, 17 | num_classes=19, 18 | norm_cfg=norm_cfg, 19 | act_cfg=dict(type='ReLU'), 20 | align_corners=False, 21 | loss_decode=dict( 22 | type='CrossEntropyLoss', use_sigmoid=False, loss_weight=1.0)), 23 | # model training and testing settings 24 | train_cfg=dict(), 25 | test_cfg=dict(mode='whole')) 26 | -------------------------------------------------------------------------------- /annotator/uniformer/configs/_base_/schedules/schedule_160k.py: -------------------------------------------------------------------------------- 1 | # optimizer 2 | optimizer = dict(type='SGD', lr=0.01, momentum=0.9, weight_decay=0.0005) 3 | optimizer_config = dict() 4 | # learning policy 5 | lr_config = dict(policy='poly', power=0.9, min_lr=1e-4, by_epoch=False) 6 | # runtime settings 7 | runner = dict(type='IterBasedRunner', max_iters=160000) 8 | checkpoint_config = dict(by_epoch=False, interval=16000) 9 | evaluation = dict(interval=16000, metric='mIoU') 10 | -------------------------------------------------------------------------------- /annotator/uniformer/configs/_base_/schedules/schedule_20k.py: -------------------------------------------------------------------------------- 1 | # optimizer 2 | optimizer = dict(type='SGD', lr=0.01, momentum=0.9, weight_decay=0.0005) 3 | optimizer_config = dict() 4 | # learning policy 5 | lr_config = dict(policy='poly', power=0.9, min_lr=1e-4, by_epoch=False) 6 | # runtime settings 7 | runner = dict(type='IterBasedRunner', max_iters=20000) 8 | checkpoint_config = dict(by_epoch=False, interval=2000) 9 | evaluation = dict(interval=2000, metric='mIoU') 10 | -------------------------------------------------------------------------------- /annotator/uniformer/configs/_base_/schedules/schedule_40k.py: -------------------------------------------------------------------------------- 1 | # optimizer 2 | optimizer = dict(type='SGD', lr=0.01, momentum=0.9, weight_decay=0.0005) 3 | optimizer_config = dict() 4 | # learning policy 5 | lr_config = dict(policy='poly', power=0.9, min_lr=1e-4, by_epoch=False) 6 | # runtime settings 7 | runner = dict(type='IterBasedRunner', max_iters=40000) 8 | checkpoint_config = dict(by_epoch=False, interval=4000) 9 | evaluation = dict(interval=4000, metric='mIoU') 10 | -------------------------------------------------------------------------------- /annotator/uniformer/configs/_base_/schedules/schedule_80k.py: -------------------------------------------------------------------------------- 1 | # optimizer 2 | optimizer = dict(type='SGD', lr=0.01, momentum=0.9, weight_decay=0.0005) 3 | optimizer_config = dict() 4 | # learning policy 5 | lr_config = dict(policy='poly', power=0.9, min_lr=1e-4, by_epoch=False) 6 | # runtime settings 7 | runner = dict(type='IterBasedRunner', max_iters=80000) 8 | checkpoint_config = dict(by_epoch=False, interval=8000) 9 | evaluation = dict(interval=8000, metric='mIoU') 10 | -------------------------------------------------------------------------------- /annotator/uniformer/exp/cascade_mask_rcnn_3x_ms_hybrid_base/run.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | work_path=$(dirname $0) 4 | PYTHONPATH="$(dirname $0)/../../":$PYTHONPATH \ 5 | python -m torch.distributed.launch --nproc_per_node=8 \ 6 | tools/train.py ${work_path}/config.py \ 7 | --launcher pytorch \ 8 | --cfg-options model.backbone.pretrained_path='your_model_path/uniformer_base_in1k.pth' \ 9 | --work-dir ${work_path}/ckpt \ 10 | 2>&1 | tee -a ${work_path}/log.txt 11 | -------------------------------------------------------------------------------- /annotator/uniformer/exp/upernet_global_small/run.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | work_path=$(dirname $0) 4 | PYTHONPATH="$(dirname $0)/../../":$PYTHONPATH \ 5 | python -m torch.distributed.launch --nproc_per_node=8 \ 6 | tools/train.py ${work_path}/config.py \ 7 | --launcher pytorch \ 8 | --options model.backbone.pretrained_path='your_model_path/uniformer_small_in1k.pth' \ 9 | --work-dir ${work_path}/ckpt \ 10 | 2>&1 | tee -a ${work_path}/log.txt 11 | -------------------------------------------------------------------------------- /annotator/uniformer/exp/upernet_global_small/test.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | work_path=$(dirname $0) 4 | PYTHONPATH="$(dirname $0)/../../":$PYTHONPATH \ 5 | python -m torch.distributed.launch --nproc_per_node=8 \ 6 | tools/test.py ${work_path}/test_config_h32.py \ 7 | ${work_path}/ckpt/latest.pth \ 8 | --launcher pytorch \ 9 | --eval mIoU \ 10 | 2>&1 | tee -a ${work_path}/log.txt 11 | -------------------------------------------------------------------------------- /annotator/uniformer/mmcv/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) OpenMMLab. All rights reserved. 2 | # flake8: noqa 3 | from .arraymisc import * 4 | from .fileio import * 5 | from .image import * 6 | from .utils import * 7 | from .version import * 8 | from .video import * 9 | from .visualization import * 10 | 11 | # The following modules are not imported to this level, so mmcv may be used 12 | # without PyTorch. 13 | # - runner 14 | # - parallel 15 | # - op 16 | -------------------------------------------------------------------------------- /annotator/uniformer/mmcv/arraymisc/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) OpenMMLab. All rights reserved. 2 | from .quantization import dequantize, quantize 3 | 4 | __all__ = ['quantize', 'dequantize'] 5 | -------------------------------------------------------------------------------- /annotator/uniformer/mmcv/cnn/bricks/hswish.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) OpenMMLab. All rights reserved. 2 | import torch.nn as nn 3 | 4 | from .registry import ACTIVATION_LAYERS 5 | 6 | 7 | @ACTIVATION_LAYERS.register_module() 8 | class HSwish(nn.Module): 9 | """Hard Swish Module. 10 | 11 | This module applies the hard swish function: 12 | 13 | .. math:: 14 | Hswish(x) = x * ReLU6(x + 3) / 6 15 | 16 | Args: 17 | inplace (bool): can optionally do the operation in-place. 18 | Default: False. 19 | 20 | Returns: 21 | Tensor: The output tensor. 22 | """ 23 | 24 | def __init__(self, inplace=False): 25 | super(HSwish, self).__init__() 26 | self.act = nn.ReLU6(inplace) 27 | 28 | def forward(self, x): 29 | return x * self.act(x + 3) / 6 30 | -------------------------------------------------------------------------------- /annotator/uniformer/mmcv/cnn/bricks/registry.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) OpenMMLab. All rights reserved. 2 | from annotator.uniformer.mmcv.utils import Registry 3 | 4 | CONV_LAYERS = Registry('conv layer') 5 | NORM_LAYERS = Registry('norm layer') 6 | ACTIVATION_LAYERS = Registry('activation layer') 7 | PADDING_LAYERS = Registry('padding layer') 8 | UPSAMPLE_LAYERS = Registry('upsample layer') 9 | PLUGIN_LAYERS = Registry('plugin layer') 10 | 11 | DROPOUT_LAYERS = Registry('drop out layers') 12 | POSITIONAL_ENCODING = Registry('position encoding') 13 | ATTENTION = Registry('attention') 14 | FEEDFORWARD_NETWORK = Registry('feed-forward Network') 15 | TRANSFORMER_LAYER = Registry('transformerLayer') 16 | TRANSFORMER_LAYER_SEQUENCE = Registry('transformer-layers sequence') 17 | -------------------------------------------------------------------------------- /annotator/uniformer/mmcv/cnn/bricks/scale.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) OpenMMLab. All rights reserved. 2 | import torch 3 | import torch.nn as nn 4 | 5 | 6 | class Scale(nn.Module): 7 | """A learnable scale parameter. 8 | 9 | This layer scales the input by a learnable factor. It multiplies a 10 | learnable scale parameter of shape (1,) with input of any shape. 11 | 12 | Args: 13 | scale (float): Initial value of scale factor. Default: 1.0 14 | """ 15 | 16 | def __init__(self, scale=1.0): 17 | super(Scale, self).__init__() 18 | self.scale = nn.Parameter(torch.tensor(scale, dtype=torch.float)) 19 | 20 | def forward(self, x): 21 | return x * self.scale 22 | -------------------------------------------------------------------------------- /annotator/uniformer/mmcv/cnn/bricks/swish.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) OpenMMLab. All rights reserved. 2 | import torch 3 | import torch.nn as nn 4 | 5 | from .registry import ACTIVATION_LAYERS 6 | 7 | 8 | @ACTIVATION_LAYERS.register_module() 9 | class Swish(nn.Module): 10 | """Swish Module. 11 | 12 | This module applies the swish function: 13 | 14 | .. math:: 15 | Swish(x) = x * Sigmoid(x) 16 | 17 | Returns: 18 | Tensor: The output tensor. 19 | """ 20 | 21 | def __init__(self): 22 | super(Swish, self).__init__() 23 | 24 | def forward(self, x): 25 | return x * torch.sigmoid(x) 26 | -------------------------------------------------------------------------------- /annotator/uniformer/mmcv/engine/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) OpenMMLab. All rights reserved. 2 | from .test import (collect_results_cpu, collect_results_gpu, multi_gpu_test, 3 | single_gpu_test) 4 | 5 | __all__ = [ 6 | 'collect_results_cpu', 'collect_results_gpu', 'multi_gpu_test', 7 | 'single_gpu_test' 8 | ] 9 | -------------------------------------------------------------------------------- /annotator/uniformer/mmcv/fileio/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) OpenMMLab. All rights reserved. 2 | from .file_client import BaseStorageBackend, FileClient 3 | from .handlers import BaseFileHandler, JsonHandler, PickleHandler, YamlHandler 4 | from .io import dump, load, register_handler 5 | from .parse import dict_from_file, list_from_file 6 | 7 | __all__ = [ 8 | 'BaseStorageBackend', 'FileClient', 'load', 'dump', 'register_handler', 9 | 'BaseFileHandler', 'JsonHandler', 'PickleHandler', 'YamlHandler', 10 | 'list_from_file', 'dict_from_file' 11 | ] 12 | -------------------------------------------------------------------------------- /annotator/uniformer/mmcv/fileio/handlers/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) OpenMMLab. All rights reserved. 2 | from .base import BaseFileHandler 3 | from .json_handler import JsonHandler 4 | from .pickle_handler import PickleHandler 5 | from .yaml_handler import YamlHandler 6 | 7 | __all__ = ['BaseFileHandler', 'JsonHandler', 'PickleHandler', 'YamlHandler'] 8 | -------------------------------------------------------------------------------- /annotator/uniformer/mmcv/fileio/handlers/pickle_handler.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) OpenMMLab. All rights reserved. 2 | import pickle 3 | 4 | from .base import BaseFileHandler 5 | 6 | 7 | class PickleHandler(BaseFileHandler): 8 | 9 | str_like = False 10 | 11 | def load_from_fileobj(self, file, **kwargs): 12 | return pickle.load(file, **kwargs) 13 | 14 | def load_from_path(self, filepath, **kwargs): 15 | return super(PickleHandler, self).load_from_path( 16 | filepath, mode='rb', **kwargs) 17 | 18 | def dump_to_str(self, obj, **kwargs): 19 | kwargs.setdefault('protocol', 2) 20 | return pickle.dumps(obj, **kwargs) 21 | 22 | def dump_to_fileobj(self, obj, file, **kwargs): 23 | kwargs.setdefault('protocol', 2) 24 | pickle.dump(obj, file, **kwargs) 25 | 26 | def dump_to_path(self, obj, filepath, **kwargs): 27 | super(PickleHandler, self).dump_to_path( 28 | obj, filepath, mode='wb', **kwargs) 29 | -------------------------------------------------------------------------------- /annotator/uniformer/mmcv/fileio/handlers/yaml_handler.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) OpenMMLab. All rights reserved. 2 | import yaml 3 | 4 | try: 5 | from yaml import CLoader as Loader, CDumper as Dumper 6 | except ImportError: 7 | from yaml import Loader, Dumper 8 | 9 | from .base import BaseFileHandler # isort:skip 10 | 11 | 12 | class YamlHandler(BaseFileHandler): 13 | 14 | def load_from_fileobj(self, file, **kwargs): 15 | kwargs.setdefault('Loader', Loader) 16 | return yaml.load(file, **kwargs) 17 | 18 | def dump_to_fileobj(self, obj, file, **kwargs): 19 | kwargs.setdefault('Dumper', Dumper) 20 | yaml.dump(obj, file, **kwargs) 21 | 22 | def dump_to_str(self, obj, **kwargs): 23 | kwargs.setdefault('Dumper', Dumper) 24 | return yaml.dump(obj, **kwargs) 25 | -------------------------------------------------------------------------------- /annotator/uniformer/mmcv/model_zoo/deprecated.json: -------------------------------------------------------------------------------- 1 | { 2 | "resnet50_caffe": "detectron/resnet50_caffe", 3 | "resnet50_caffe_bgr": "detectron2/resnet50_caffe_bgr", 4 | "resnet101_caffe": "detectron/resnet101_caffe", 5 | "resnet101_caffe_bgr": "detectron2/resnet101_caffe_bgr" 6 | } 7 | -------------------------------------------------------------------------------- /annotator/uniformer/mmcv/ops/info.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) OpenMMLab. All rights reserved. 2 | import glob 3 | import os 4 | 5 | import torch 6 | 7 | if torch.__version__ == 'parrots': 8 | import parrots 9 | 10 | def get_compiler_version(): 11 | return 'GCC ' + parrots.version.compiler 12 | 13 | def get_compiling_cuda_version(): 14 | return parrots.version.cuda 15 | else: 16 | from ..utils import ext_loader 17 | ext_module = ext_loader.load_ext( 18 | '_ext', ['get_compiler_version', 'get_compiling_cuda_version']) 19 | 20 | def get_compiler_version(): 21 | return ext_module.get_compiler_version() 22 | 23 | def get_compiling_cuda_version(): 24 | return ext_module.get_compiling_cuda_version() 25 | 26 | 27 | def get_onnxruntime_op_path(): 28 | wildcard = os.path.join( 29 | os.path.abspath(os.path.dirname(os.path.dirname(__file__))), 30 | '_ext_ort.*.so') 31 | 32 | paths = glob.glob(wildcard) 33 | if len(paths) > 0: 34 | return paths[0] 35 | else: 36 | return '' 37 | -------------------------------------------------------------------------------- /annotator/uniformer/mmcv/parallel/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) OpenMMLab. All rights reserved. 2 | from .collate import collate 3 | from .data_container import DataContainer 4 | from .data_parallel import MMDataParallel 5 | from .distributed import MMDistributedDataParallel 6 | from .registry import MODULE_WRAPPERS 7 | from .scatter_gather import scatter, scatter_kwargs 8 | from .utils import is_module_wrapper 9 | 10 | __all__ = [ 11 | 'collate', 'DataContainer', 'MMDataParallel', 'MMDistributedDataParallel', 12 | 'scatter', 'scatter_kwargs', 'is_module_wrapper', 'MODULE_WRAPPERS' 13 | ] 14 | -------------------------------------------------------------------------------- /annotator/uniformer/mmcv/parallel/registry.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) OpenMMLab. All rights reserved. 2 | from torch.nn.parallel import DataParallel, DistributedDataParallel 3 | 4 | from annotator.uniformer.mmcv.utils import Registry 5 | 6 | MODULE_WRAPPERS = Registry('module wrapper') 7 | MODULE_WRAPPERS.register_module(module=DataParallel) 8 | MODULE_WRAPPERS.register_module(module=DistributedDataParallel) 9 | -------------------------------------------------------------------------------- /annotator/uniformer/mmcv/parallel/utils.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) OpenMMLab. All rights reserved. 2 | from .registry import MODULE_WRAPPERS 3 | 4 | 5 | def is_module_wrapper(module): 6 | """Check if a module is a module wrapper. 7 | 8 | The following 3 modules in MMCV (and their subclasses) are regarded as 9 | module wrappers: DataParallel, DistributedDataParallel, 10 | MMDistributedDataParallel (the deprecated version). You may add you own 11 | module wrapper by registering it to mmcv.parallel.MODULE_WRAPPERS. 12 | 13 | Args: 14 | module (nn.Module): The module to be checked. 15 | 16 | Returns: 17 | bool: True if the input module is a module wrapper. 18 | """ 19 | module_wrappers = tuple(MODULE_WRAPPERS.module_dict.values()) 20 | return isinstance(module, module_wrappers) 21 | -------------------------------------------------------------------------------- /annotator/uniformer/mmcv/runner/builder.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) OpenMMLab. All rights reserved. 2 | import copy 3 | 4 | from ..utils import Registry 5 | 6 | RUNNERS = Registry('runner') 7 | RUNNER_BUILDERS = Registry('runner builder') 8 | 9 | 10 | def build_runner_constructor(cfg): 11 | return RUNNER_BUILDERS.build(cfg) 12 | 13 | 14 | def build_runner(cfg, default_args=None): 15 | runner_cfg = copy.deepcopy(cfg) 16 | constructor_type = runner_cfg.pop('constructor', 17 | 'DefaultRunnerConstructor') 18 | runner_constructor = build_runner_constructor( 19 | dict( 20 | type=constructor_type, 21 | runner_cfg=runner_cfg, 22 | default_args=default_args)) 23 | runner = runner_constructor() 24 | return runner 25 | -------------------------------------------------------------------------------- /annotator/uniformer/mmcv/runner/hooks/closure.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) OpenMMLab. All rights reserved. 2 | from .hook import HOOKS, Hook 3 | 4 | 5 | @HOOKS.register_module() 6 | class ClosureHook(Hook): 7 | 8 | def __init__(self, fn_name, fn): 9 | assert hasattr(self, fn_name) 10 | assert callable(fn) 11 | setattr(self, fn_name, fn) 12 | -------------------------------------------------------------------------------- /annotator/uniformer/mmcv/runner/hooks/iter_timer.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) OpenMMLab. All rights reserved. 2 | import time 3 | 4 | from .hook import HOOKS, Hook 5 | 6 | 7 | @HOOKS.register_module() 8 | class IterTimerHook(Hook): 9 | 10 | def before_epoch(self, runner): 11 | self.t = time.time() 12 | 13 | def before_iter(self, runner): 14 | runner.log_buffer.update({'data_time': time.time() - self.t}) 15 | 16 | def after_iter(self, runner): 17 | runner.log_buffer.update({'time': time.time() - self.t}) 18 | self.t = time.time() 19 | -------------------------------------------------------------------------------- /annotator/uniformer/mmcv/runner/hooks/logger/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) OpenMMLab. All rights reserved. 2 | from .base import LoggerHook 3 | from .dvclive import DvcliveLoggerHook 4 | from .mlflow import MlflowLoggerHook 5 | from .neptune import NeptuneLoggerHook 6 | from .pavi import PaviLoggerHook 7 | from .tensorboard import TensorboardLoggerHook 8 | from .text import TextLoggerHook 9 | from .wandb import WandbLoggerHook 10 | 11 | __all__ = [ 12 | 'LoggerHook', 'MlflowLoggerHook', 'PaviLoggerHook', 13 | 'TensorboardLoggerHook', 'TextLoggerHook', 'WandbLoggerHook', 14 | 'NeptuneLoggerHook', 'DvcliveLoggerHook' 15 | ] 16 | -------------------------------------------------------------------------------- /annotator/uniformer/mmcv/runner/hooks/memory.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) OpenMMLab. All rights reserved. 2 | import torch 3 | 4 | from .hook import HOOKS, Hook 5 | 6 | 7 | @HOOKS.register_module() 8 | class EmptyCacheHook(Hook): 9 | 10 | def __init__(self, before_epoch=False, after_epoch=True, after_iter=False): 11 | self._before_epoch = before_epoch 12 | self._after_epoch = after_epoch 13 | self._after_iter = after_iter 14 | 15 | def after_iter(self, runner): 16 | if self._after_iter: 17 | torch.cuda.empty_cache() 18 | 19 | def before_epoch(self, runner): 20 | if self._before_epoch: 21 | torch.cuda.empty_cache() 22 | 23 | def after_epoch(self, runner): 24 | if self._after_epoch: 25 | torch.cuda.empty_cache() 26 | -------------------------------------------------------------------------------- /annotator/uniformer/mmcv/runner/hooks/sampler_seed.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) OpenMMLab. All rights reserved. 2 | from .hook import HOOKS, Hook 3 | 4 | 5 | @HOOKS.register_module() 6 | class DistSamplerSeedHook(Hook): 7 | """Data-loading sampler for distributed training. 8 | 9 | When distributed training, it is only useful in conjunction with 10 | :obj:`EpochBasedRunner`, while :obj:`IterBasedRunner` achieves the same 11 | purpose with :obj:`IterLoader`. 12 | """ 13 | 14 | def before_epoch(self, runner): 15 | if hasattr(runner.data_loader.sampler, 'set_epoch'): 16 | # in case the data loader uses `SequentialSampler` in Pytorch 17 | runner.data_loader.sampler.set_epoch(runner.epoch) 18 | elif hasattr(runner.data_loader.batch_sampler.sampler, 'set_epoch'): 19 | # batch sampler in pytorch warps the sampler as its attributes. 20 | runner.data_loader.batch_sampler.sampler.set_epoch(runner.epoch) 21 | -------------------------------------------------------------------------------- /annotator/uniformer/mmcv/runner/hooks/sync_buffer.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) OpenMMLab. All rights reserved. 2 | from ..dist_utils import allreduce_params 3 | from .hook import HOOKS, Hook 4 | 5 | 6 | @HOOKS.register_module() 7 | class SyncBuffersHook(Hook): 8 | """Synchronize model buffers such as running_mean and running_var in BN at 9 | the end of each epoch. 10 | 11 | Args: 12 | distributed (bool): Whether distributed training is used. It is 13 | effective only for distributed training. Defaults to True. 14 | """ 15 | 16 | def __init__(self, distributed=True): 17 | self.distributed = distributed 18 | 19 | def after_epoch(self, runner): 20 | """All-reduce model buffers at the end of each epoch.""" 21 | if self.distributed: 22 | allreduce_params(runner.model.buffers()) 23 | -------------------------------------------------------------------------------- /annotator/uniformer/mmcv/runner/optimizer/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) OpenMMLab. All rights reserved. 2 | from .builder import (OPTIMIZER_BUILDERS, OPTIMIZERS, build_optimizer, 3 | build_optimizer_constructor) 4 | from .default_constructor import DefaultOptimizerConstructor 5 | 6 | __all__ = [ 7 | 'OPTIMIZER_BUILDERS', 'OPTIMIZERS', 'DefaultOptimizerConstructor', 8 | 'build_optimizer', 'build_optimizer_constructor' 9 | ] 10 | -------------------------------------------------------------------------------- /annotator/uniformer/mmcv/utils/parrots_jit.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) OpenMMLab. All rights reserved. 2 | import os 3 | 4 | from .parrots_wrapper import TORCH_VERSION 5 | 6 | parrots_jit_option = os.getenv('PARROTS_JIT_OPTION') 7 | 8 | if TORCH_VERSION == 'parrots' and parrots_jit_option == 'ON': 9 | from parrots.jit import pat as jit 10 | else: 11 | 12 | def jit(func=None, 13 | check_input=None, 14 | full_shape=True, 15 | derivate=False, 16 | coderize=False, 17 | optimize=False): 18 | 19 | def wrapper(func): 20 | 21 | def wrapper_inner(*args, **kargs): 22 | return func(*args, **kargs) 23 | 24 | return wrapper_inner 25 | 26 | if func is None: 27 | return wrapper 28 | else: 29 | return func 30 | 31 | 32 | if TORCH_VERSION == 'parrots': 33 | from parrots.utils.tester import skip_no_elena 34 | else: 35 | 36 | def skip_no_elena(func): 37 | 38 | def wrapper(*args, **kargs): 39 | return func(*args, **kargs) 40 | 41 | return wrapper 42 | -------------------------------------------------------------------------------- /annotator/uniformer/mmcv/utils/trace.py: -------------------------------------------------------------------------------- 1 | import warnings 2 | 3 | import torch 4 | 5 | from annotator.uniformer.mmcv.utils import digit_version 6 | 7 | 8 | def is_jit_tracing() -> bool: 9 | if (torch.__version__ != 'parrots' 10 | and digit_version(torch.__version__) >= digit_version('1.6.0')): 11 | on_trace = torch.jit.is_tracing() 12 | # In PyTorch 1.6, torch.jit.is_tracing has a bug. 13 | # Refers to https://github.com/pytorch/pytorch/issues/42448 14 | if isinstance(on_trace, bool): 15 | return on_trace 16 | else: 17 | return torch._C._is_tracing() 18 | else: 19 | warnings.warn( 20 | 'torch.jit.is_tracing is only supported after v1.6.0. ' 21 | 'Therefore is_tracing returns False automatically. Please ' 22 | 'set on_trace manually if you are using trace.', UserWarning) 23 | return False 24 | -------------------------------------------------------------------------------- /annotator/uniformer/mmcv/video/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) OpenMMLab. All rights reserved. 2 | from .io import Cache, VideoReader, frames2video 3 | from .optflow import (dequantize_flow, flow_from_bytes, flow_warp, flowread, 4 | flowwrite, quantize_flow, sparse_flow_from_bytes) 5 | from .processing import concat_video, convert_video, cut_video, resize_video 6 | 7 | __all__ = [ 8 | 'Cache', 'VideoReader', 'frames2video', 'convert_video', 'resize_video', 9 | 'cut_video', 'concat_video', 'flowread', 'flowwrite', 'quantize_flow', 10 | 'dequantize_flow', 'flow_warp', 'flow_from_bytes', 'sparse_flow_from_bytes' 11 | ] 12 | -------------------------------------------------------------------------------- /annotator/uniformer/mmcv/visualization/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) OpenMMLab. All rights reserved. 2 | from .color import Color, color_val 3 | from .image import imshow, imshow_bboxes, imshow_det_bboxes 4 | from .optflow import flow2rgb, flowshow, make_color_wheel 5 | 6 | __all__ = [ 7 | 'Color', 'color_val', 'imshow', 'imshow_bboxes', 'imshow_det_bboxes', 8 | 'flowshow', 'flow2rgb', 'make_color_wheel' 9 | ] 10 | -------------------------------------------------------------------------------- /annotator/uniformer/mmcv_custom/__init__.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | 3 | from .checkpoint import load_checkpoint 4 | 5 | __all__ = ['load_checkpoint'] -------------------------------------------------------------------------------- /annotator/uniformer/mmdet.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/salesforce/UniControl/9f452ee2acda6bdc4c9c6b67072bdc872277a403/annotator/uniformer/mmdet.zip -------------------------------------------------------------------------------- /annotator/uniformer/mmdet/__init__.py: -------------------------------------------------------------------------------- 1 | import mmcv 2 | 3 | from .version import __version__, short_version 4 | 5 | 6 | def digit_version(version_str): 7 | digit_version = [] 8 | for x in version_str.split('.'): 9 | if x.isdigit(): 10 | digit_version.append(int(x)) 11 | elif x.find('rc') != -1: 12 | patch_version = x.split('rc') 13 | digit_version.append(int(patch_version[0]) - 1) 14 | digit_version.append(int(patch_version[1])) 15 | return digit_version 16 | 17 | 18 | mmcv_minimum_version = '1.2.4' 19 | mmcv_maximum_version = '1.4.0' 20 | mmcv_version = digit_version(mmcv.__version__) 21 | 22 | 23 | assert (mmcv_version >= digit_version(mmcv_minimum_version) 24 | and mmcv_version <= digit_version(mmcv_maximum_version)), \ 25 | f'MMCV=={mmcv.__version__} is used but incompatible. ' \ 26 | f'Please install mmcv>={mmcv_minimum_version}, <={mmcv_maximum_version}.' 27 | 28 | __all__ = ['__version__', 'short_version'] 29 | -------------------------------------------------------------------------------- /annotator/uniformer/mmdet/apis/__init__.py: -------------------------------------------------------------------------------- 1 | from .inference import (async_inference_detector, inference_detector, 2 | init_detector, show_result_pyplot) 3 | from .test import multi_gpu_test, single_gpu_test 4 | from .train import get_root_logger, set_random_seed, train_detector 5 | 6 | __all__ = [ 7 | 'get_root_logger', 'set_random_seed', 'train_detector', 'init_detector', 8 | 'async_inference_detector', 'inference_detector', 'show_result_pyplot', 9 | 'multi_gpu_test', 'single_gpu_test' 10 | ] 11 | -------------------------------------------------------------------------------- /annotator/uniformer/mmdet/core/__init__.py: -------------------------------------------------------------------------------- 1 | from .anchor import * # noqa: F401, F403 2 | from .bbox import * # noqa: F401, F403 3 | from .evaluation import * # noqa: F401, F403 4 | from .export import * # noqa: F401, F403 5 | from .mask import * # noqa: F401, F403 6 | from .post_processing import * # noqa: F401, F403 7 | from .utils import * # noqa: F401, F403 8 | -------------------------------------------------------------------------------- /annotator/uniformer/mmdet/core/anchor/__init__.py: -------------------------------------------------------------------------------- 1 | from .anchor_generator import (AnchorGenerator, LegacyAnchorGenerator, 2 | YOLOAnchorGenerator) 3 | from .builder import ANCHOR_GENERATORS, build_anchor_generator 4 | from .point_generator import PointGenerator 5 | from .utils import anchor_inside_flags, calc_region, images_to_levels 6 | 7 | __all__ = [ 8 | 'AnchorGenerator', 'LegacyAnchorGenerator', 'anchor_inside_flags', 9 | 'PointGenerator', 'images_to_levels', 'calc_region', 10 | 'build_anchor_generator', 'ANCHOR_GENERATORS', 'YOLOAnchorGenerator' 11 | ] 12 | -------------------------------------------------------------------------------- /annotator/uniformer/mmdet/core/anchor/builder.py: -------------------------------------------------------------------------------- 1 | from mmcv.utils import Registry, build_from_cfg 2 | 3 | ANCHOR_GENERATORS = Registry('Anchor generator') 4 | 5 | 6 | def build_anchor_generator(cfg, default_args=None): 7 | return build_from_cfg(cfg, ANCHOR_GENERATORS, default_args) 8 | -------------------------------------------------------------------------------- /annotator/uniformer/mmdet/core/bbox/assigners/__init__.py: -------------------------------------------------------------------------------- 1 | from .approx_max_iou_assigner import ApproxMaxIoUAssigner 2 | from .assign_result import AssignResult 3 | from .atss_assigner import ATSSAssigner 4 | from .base_assigner import BaseAssigner 5 | from .center_region_assigner import CenterRegionAssigner 6 | from .grid_assigner import GridAssigner 7 | from .hungarian_assigner import HungarianAssigner 8 | from .max_iou_assigner import MaxIoUAssigner 9 | from .point_assigner import PointAssigner 10 | from .region_assigner import RegionAssigner 11 | 12 | __all__ = [ 13 | 'BaseAssigner', 'MaxIoUAssigner', 'ApproxMaxIoUAssigner', 'AssignResult', 14 | 'PointAssigner', 'ATSSAssigner', 'CenterRegionAssigner', 'GridAssigner', 15 | 'HungarianAssigner', 'RegionAssigner' 16 | ] 17 | -------------------------------------------------------------------------------- /annotator/uniformer/mmdet/core/bbox/assigners/base_assigner.py: -------------------------------------------------------------------------------- 1 | from abc import ABCMeta, abstractmethod 2 | 3 | 4 | class BaseAssigner(metaclass=ABCMeta): 5 | """Base assigner that assigns boxes to ground truth boxes.""" 6 | 7 | @abstractmethod 8 | def assign(self, bboxes, gt_bboxes, gt_bboxes_ignore=None, gt_labels=None): 9 | """Assign boxes to either a ground truth boxes or a negative boxes.""" 10 | -------------------------------------------------------------------------------- /annotator/uniformer/mmdet/core/bbox/builder.py: -------------------------------------------------------------------------------- 1 | from mmcv.utils import Registry, build_from_cfg 2 | 3 | BBOX_ASSIGNERS = Registry('bbox_assigner') 4 | BBOX_SAMPLERS = Registry('bbox_sampler') 5 | BBOX_CODERS = Registry('bbox_coder') 6 | 7 | 8 | def build_assigner(cfg, **default_args): 9 | """Builder of box assigner.""" 10 | return build_from_cfg(cfg, BBOX_ASSIGNERS, default_args) 11 | 12 | 13 | def build_sampler(cfg, **default_args): 14 | """Builder of box sampler.""" 15 | return build_from_cfg(cfg, BBOX_SAMPLERS, default_args) 16 | 17 | 18 | def build_bbox_coder(cfg, **default_args): 19 | """Builder of box coder.""" 20 | return build_from_cfg(cfg, BBOX_CODERS, default_args) 21 | -------------------------------------------------------------------------------- /annotator/uniformer/mmdet/core/bbox/coder/__init__.py: -------------------------------------------------------------------------------- 1 | from .base_bbox_coder import BaseBBoxCoder 2 | from .bucketing_bbox_coder import BucketingBBoxCoder 3 | from .delta_xywh_bbox_coder import DeltaXYWHBBoxCoder 4 | from .legacy_delta_xywh_bbox_coder import LegacyDeltaXYWHBBoxCoder 5 | from .pseudo_bbox_coder import PseudoBBoxCoder 6 | from .tblr_bbox_coder import TBLRBBoxCoder 7 | from .yolo_bbox_coder import YOLOBBoxCoder 8 | 9 | __all__ = [ 10 | 'BaseBBoxCoder', 'PseudoBBoxCoder', 'DeltaXYWHBBoxCoder', 11 | 'LegacyDeltaXYWHBBoxCoder', 'TBLRBBoxCoder', 'YOLOBBoxCoder', 12 | 'BucketingBBoxCoder' 13 | ] 14 | -------------------------------------------------------------------------------- /annotator/uniformer/mmdet/core/bbox/coder/base_bbox_coder.py: -------------------------------------------------------------------------------- 1 | from abc import ABCMeta, abstractmethod 2 | 3 | 4 | class BaseBBoxCoder(metaclass=ABCMeta): 5 | """Base bounding box coder.""" 6 | 7 | def __init__(self, **kwargs): 8 | pass 9 | 10 | @abstractmethod 11 | def encode(self, bboxes, gt_bboxes): 12 | """Encode deltas between bboxes and ground truth boxes.""" 13 | 14 | @abstractmethod 15 | def decode(self, bboxes, bboxes_pred): 16 | """Decode the predicted bboxes according to prediction and base 17 | boxes.""" 18 | -------------------------------------------------------------------------------- /annotator/uniformer/mmdet/core/bbox/coder/pseudo_bbox_coder.py: -------------------------------------------------------------------------------- 1 | from ..builder import BBOX_CODERS 2 | from .base_bbox_coder import BaseBBoxCoder 3 | 4 | 5 | @BBOX_CODERS.register_module() 6 | class PseudoBBoxCoder(BaseBBoxCoder): 7 | """Pseudo bounding box coder.""" 8 | 9 | def __init__(self, **kwargs): 10 | super(BaseBBoxCoder, self).__init__(**kwargs) 11 | 12 | def encode(self, bboxes, gt_bboxes): 13 | """torch.Tensor: return the given ``bboxes``""" 14 | return gt_bboxes 15 | 16 | def decode(self, bboxes, pred_bboxes): 17 | """torch.Tensor: return the given ``pred_bboxes``""" 18 | return pred_bboxes 19 | -------------------------------------------------------------------------------- /annotator/uniformer/mmdet/core/bbox/iou_calculators/__init__.py: -------------------------------------------------------------------------------- 1 | from .builder import build_iou_calculator 2 | from .iou2d_calculator import BboxOverlaps2D, bbox_overlaps 3 | 4 | __all__ = ['build_iou_calculator', 'BboxOverlaps2D', 'bbox_overlaps'] 5 | -------------------------------------------------------------------------------- /annotator/uniformer/mmdet/core/bbox/iou_calculators/builder.py: -------------------------------------------------------------------------------- 1 | from mmcv.utils import Registry, build_from_cfg 2 | 3 | IOU_CALCULATORS = Registry('IoU calculator') 4 | 5 | 6 | def build_iou_calculator(cfg, default_args=None): 7 | """Builder of IoU calculator.""" 8 | return build_from_cfg(cfg, IOU_CALCULATORS, default_args) 9 | -------------------------------------------------------------------------------- /annotator/uniformer/mmdet/core/bbox/match_costs/__init__.py: -------------------------------------------------------------------------------- 1 | from .builder import build_match_cost 2 | from .match_cost import BBoxL1Cost, ClassificationCost, FocalLossCost, IoUCost 3 | 4 | __all__ = [ 5 | 'build_match_cost', 'ClassificationCost', 'BBoxL1Cost', 'IoUCost', 6 | 'FocalLossCost' 7 | ] 8 | -------------------------------------------------------------------------------- /annotator/uniformer/mmdet/core/bbox/match_costs/builder.py: -------------------------------------------------------------------------------- 1 | from mmcv.utils import Registry, build_from_cfg 2 | 3 | MATCH_COST = Registry('Match Cost') 4 | 5 | 6 | def build_match_cost(cfg, default_args=None): 7 | """Builder of IoU calculator.""" 8 | return build_from_cfg(cfg, MATCH_COST, default_args) 9 | -------------------------------------------------------------------------------- /annotator/uniformer/mmdet/core/bbox/samplers/__init__.py: -------------------------------------------------------------------------------- 1 | from .base_sampler import BaseSampler 2 | from .combined_sampler import CombinedSampler 3 | from .instance_balanced_pos_sampler import InstanceBalancedPosSampler 4 | from .iou_balanced_neg_sampler import IoUBalancedNegSampler 5 | from .ohem_sampler import OHEMSampler 6 | from .pseudo_sampler import PseudoSampler 7 | from .random_sampler import RandomSampler 8 | from .sampling_result import SamplingResult 9 | from .score_hlr_sampler import ScoreHLRSampler 10 | 11 | __all__ = [ 12 | 'BaseSampler', 'PseudoSampler', 'RandomSampler', 13 | 'InstanceBalancedPosSampler', 'IoUBalancedNegSampler', 'CombinedSampler', 14 | 'OHEMSampler', 'SamplingResult', 'ScoreHLRSampler' 15 | ] 16 | -------------------------------------------------------------------------------- /annotator/uniformer/mmdet/core/bbox/samplers/combined_sampler.py: -------------------------------------------------------------------------------- 1 | from ..builder import BBOX_SAMPLERS, build_sampler 2 | from .base_sampler import BaseSampler 3 | 4 | 5 | @BBOX_SAMPLERS.register_module() 6 | class CombinedSampler(BaseSampler): 7 | """A sampler that combines positive sampler and negative sampler.""" 8 | 9 | def __init__(self, pos_sampler, neg_sampler, **kwargs): 10 | super(CombinedSampler, self).__init__(**kwargs) 11 | self.pos_sampler = build_sampler(pos_sampler, **kwargs) 12 | self.neg_sampler = build_sampler(neg_sampler, **kwargs) 13 | 14 | def _sample_pos(self, **kwargs): 15 | """Sample positive samples.""" 16 | raise NotImplementedError 17 | 18 | def _sample_neg(self, **kwargs): 19 | """Sample negative samples.""" 20 | raise NotImplementedError 21 | -------------------------------------------------------------------------------- /annotator/uniformer/mmdet/core/evaluation/__init__.py: -------------------------------------------------------------------------------- 1 | from .class_names import (cityscapes_classes, coco_classes, dataset_aliases, 2 | get_classes, imagenet_det_classes, 3 | imagenet_vid_classes, voc_classes) 4 | from .eval_hooks import DistEvalHook, EvalHook 5 | from .mean_ap import average_precision, eval_map, print_map_summary 6 | from .recall import (eval_recalls, plot_iou_recall, plot_num_recall, 7 | print_recall_summary) 8 | 9 | __all__ = [ 10 | 'voc_classes', 'imagenet_det_classes', 'imagenet_vid_classes', 11 | 'coco_classes', 'cityscapes_classes', 'dataset_aliases', 'get_classes', 12 | 'DistEvalHook', 'EvalHook', 'average_precision', 'eval_map', 13 | 'print_map_summary', 'eval_recalls', 'print_recall_summary', 14 | 'plot_num_recall', 'plot_iou_recall' 15 | ] 16 | -------------------------------------------------------------------------------- /annotator/uniformer/mmdet/core/export/__init__.py: -------------------------------------------------------------------------------- 1 | from .pytorch2onnx import (build_model_from_cfg, 2 | generate_inputs_and_wrap_model, 3 | preprocess_example_input) 4 | 5 | __all__ = [ 6 | 'build_model_from_cfg', 'generate_inputs_and_wrap_model', 7 | 'preprocess_example_input' 8 | ] 9 | -------------------------------------------------------------------------------- /annotator/uniformer/mmdet/core/mask/__init__.py: -------------------------------------------------------------------------------- 1 | from .mask_target import mask_target 2 | from .structures import BaseInstanceMasks, BitmapMasks, PolygonMasks 3 | from .utils import encode_mask_results, split_combined_polys 4 | 5 | __all__ = [ 6 | 'split_combined_polys', 'mask_target', 'BaseInstanceMasks', 'BitmapMasks', 7 | 'PolygonMasks', 'encode_mask_results' 8 | ] 9 | -------------------------------------------------------------------------------- /annotator/uniformer/mmdet/core/post_processing/__init__.py: -------------------------------------------------------------------------------- 1 | from .bbox_nms import fast_nms, multiclass_nms 2 | from .merge_augs import (merge_aug_bboxes, merge_aug_masks, 3 | merge_aug_proposals, merge_aug_scores) 4 | 5 | __all__ = [ 6 | 'multiclass_nms', 'merge_aug_proposals', 'merge_aug_bboxes', 7 | 'merge_aug_scores', 'merge_aug_masks', 'fast_nms' 8 | ] 9 | -------------------------------------------------------------------------------- /annotator/uniformer/mmdet/core/utils/__init__.py: -------------------------------------------------------------------------------- 1 | from .dist_utils import DistOptimizerHook, allreduce_grads, reduce_mean 2 | from .misc import mask2ndarray, multi_apply, unmap 3 | 4 | __all__ = [ 5 | 'allreduce_grads', 'DistOptimizerHook', 'reduce_mean', 'multi_apply', 6 | 'unmap', 'mask2ndarray' 7 | ] 8 | -------------------------------------------------------------------------------- /annotator/uniformer/mmdet/core/visualization/__init__.py: -------------------------------------------------------------------------------- 1 | from .image import (color_val_matplotlib, imshow_det_bboxes, 2 | imshow_gt_det_bboxes) 3 | 4 | __all__ = ['imshow_det_bboxes', 'imshow_gt_det_bboxes', 'color_val_matplotlib'] 5 | -------------------------------------------------------------------------------- /annotator/uniformer/mmdet/datasets/deepfashion.py: -------------------------------------------------------------------------------- 1 | from .builder import DATASETS 2 | from .coco import CocoDataset 3 | 4 | 5 | @DATASETS.register_module() 6 | class DeepFashionDataset(CocoDataset): 7 | 8 | CLASSES = ('top', 'skirt', 'leggings', 'dress', 'outer', 'pants', 'bag', 9 | 'neckwear', 'headwear', 'eyeglass', 'belt', 'footwear', 'hair', 10 | 'skin', 'face') 11 | -------------------------------------------------------------------------------- /annotator/uniformer/mmdet/datasets/samplers/__init__.py: -------------------------------------------------------------------------------- 1 | from .distributed_sampler import DistributedSampler 2 | from .group_sampler import DistributedGroupSampler, GroupSampler 3 | 4 | __all__ = ['DistributedSampler', 'DistributedGroupSampler', 'GroupSampler'] 5 | -------------------------------------------------------------------------------- /annotator/uniformer/mmdet/models/__init__.py: -------------------------------------------------------------------------------- 1 | from .backbones import * # noqa: F401,F403 2 | from .builder import (BACKBONES, DETECTORS, HEADS, LOSSES, NECKS, 3 | ROI_EXTRACTORS, SHARED_HEADS, build_backbone, 4 | build_detector, build_head, build_loss, build_neck, 5 | build_roi_extractor, build_shared_head) 6 | from .dense_heads import * # noqa: F401,F403 7 | from .detectors import * # noqa: F401,F403 8 | from .losses import * # noqa: F401,F403 9 | from .necks import * # noqa: F401,F403 10 | from .roi_heads import * # noqa: F401,F403 11 | 12 | __all__ = [ 13 | 'BACKBONES', 'NECKS', 'ROI_EXTRACTORS', 'SHARED_HEADS', 'HEADS', 'LOSSES', 14 | 'DETECTORS', 'build_backbone', 'build_neck', 'build_roi_extractor', 15 | 'build_shared_head', 'build_head', 'build_loss', 'build_detector' 16 | ] 17 | -------------------------------------------------------------------------------- /annotator/uniformer/mmdet/models/backbones/__init__.py: -------------------------------------------------------------------------------- 1 | from .darknet import Darknet 2 | from .detectors_resnet import DetectoRS_ResNet 3 | from .detectors_resnext import DetectoRS_ResNeXt 4 | from .hourglass import HourglassNet 5 | from .hrnet import HRNet 6 | from .regnet import RegNet 7 | from .res2net import Res2Net 8 | from .resnest import ResNeSt 9 | from .resnet import ResNet, ResNetV1d 10 | from .resnext import ResNeXt 11 | from .ssd_vgg import SSDVGG 12 | from .trident_resnet import TridentResNet 13 | from .swin_transformer import SwinTransformer 14 | from .uniformer import UniFormer 15 | 16 | __all__ = [ 17 | 'RegNet', 'ResNet', 'ResNetV1d', 'ResNeXt', 'SSDVGG', 'HRNet', 'Res2Net', 18 | 'HourglassNet', 'DetectoRS_ResNet', 'DetectoRS_ResNeXt', 'Darknet', 19 | 'ResNeSt', 'TridentResNet', 'SwinTransformer', 'UniFormer' 20 | ] 21 | -------------------------------------------------------------------------------- /annotator/uniformer/mmdet/models/detectors/atss.py: -------------------------------------------------------------------------------- 1 | from ..builder import DETECTORS 2 | from .single_stage import SingleStageDetector 3 | 4 | 5 | @DETECTORS.register_module() 6 | class ATSS(SingleStageDetector): 7 | """Implementation of `ATSS `_.""" 8 | 9 | def __init__(self, 10 | backbone, 11 | neck, 12 | bbox_head, 13 | train_cfg=None, 14 | test_cfg=None, 15 | pretrained=None): 16 | super(ATSS, self).__init__(backbone, neck, bbox_head, train_cfg, 17 | test_cfg, pretrained) 18 | -------------------------------------------------------------------------------- /annotator/uniformer/mmdet/models/detectors/faster_rcnn.py: -------------------------------------------------------------------------------- 1 | from ..builder import DETECTORS 2 | from .two_stage import TwoStageDetector 3 | 4 | 5 | @DETECTORS.register_module() 6 | class FasterRCNN(TwoStageDetector): 7 | """Implementation of `Faster R-CNN `_""" 8 | 9 | def __init__(self, 10 | backbone, 11 | rpn_head, 12 | roi_head, 13 | train_cfg, 14 | test_cfg, 15 | neck=None, 16 | pretrained=None): 17 | super(FasterRCNN, self).__init__( 18 | backbone=backbone, 19 | neck=neck, 20 | rpn_head=rpn_head, 21 | roi_head=roi_head, 22 | train_cfg=train_cfg, 23 | test_cfg=test_cfg, 24 | pretrained=pretrained) 25 | -------------------------------------------------------------------------------- /annotator/uniformer/mmdet/models/detectors/fcos.py: -------------------------------------------------------------------------------- 1 | from ..builder import DETECTORS 2 | from .single_stage import SingleStageDetector 3 | 4 | 5 | @DETECTORS.register_module() 6 | class FCOS(SingleStageDetector): 7 | """Implementation of `FCOS `_""" 8 | 9 | def __init__(self, 10 | backbone, 11 | neck, 12 | bbox_head, 13 | train_cfg=None, 14 | test_cfg=None, 15 | pretrained=None): 16 | super(FCOS, self).__init__(backbone, neck, bbox_head, train_cfg, 17 | test_cfg, pretrained) 18 | -------------------------------------------------------------------------------- /annotator/uniformer/mmdet/models/detectors/fovea.py: -------------------------------------------------------------------------------- 1 | from ..builder import DETECTORS 2 | from .single_stage import SingleStageDetector 3 | 4 | 5 | @DETECTORS.register_module() 6 | class FOVEA(SingleStageDetector): 7 | """Implementation of `FoveaBox `_""" 8 | 9 | def __init__(self, 10 | backbone, 11 | neck, 12 | bbox_head, 13 | train_cfg=None, 14 | test_cfg=None, 15 | pretrained=None): 16 | super(FOVEA, self).__init__(backbone, neck, bbox_head, train_cfg, 17 | test_cfg, pretrained) 18 | -------------------------------------------------------------------------------- /annotator/uniformer/mmdet/models/detectors/fsaf.py: -------------------------------------------------------------------------------- 1 | from ..builder import DETECTORS 2 | from .single_stage import SingleStageDetector 3 | 4 | 5 | @DETECTORS.register_module() 6 | class FSAF(SingleStageDetector): 7 | """Implementation of `FSAF `_""" 8 | 9 | def __init__(self, 10 | backbone, 11 | neck, 12 | bbox_head, 13 | train_cfg=None, 14 | test_cfg=None, 15 | pretrained=None): 16 | super(FSAF, self).__init__(backbone, neck, bbox_head, train_cfg, 17 | test_cfg, pretrained) 18 | -------------------------------------------------------------------------------- /annotator/uniformer/mmdet/models/detectors/gfl.py: -------------------------------------------------------------------------------- 1 | from ..builder import DETECTORS 2 | from .single_stage import SingleStageDetector 3 | 4 | 5 | @DETECTORS.register_module() 6 | class GFL(SingleStageDetector): 7 | 8 | def __init__(self, 9 | backbone, 10 | neck, 11 | bbox_head, 12 | train_cfg=None, 13 | test_cfg=None, 14 | pretrained=None): 15 | super(GFL, self).__init__(backbone, neck, bbox_head, train_cfg, 16 | test_cfg, pretrained) 17 | -------------------------------------------------------------------------------- /annotator/uniformer/mmdet/models/detectors/grid_rcnn.py: -------------------------------------------------------------------------------- 1 | from ..builder import DETECTORS 2 | from .two_stage import TwoStageDetector 3 | 4 | 5 | @DETECTORS.register_module() 6 | class GridRCNN(TwoStageDetector): 7 | """Grid R-CNN. 8 | 9 | This detector is the implementation of: 10 | - Grid R-CNN (https://arxiv.org/abs/1811.12030) 11 | - Grid R-CNN Plus: Faster and Better (https://arxiv.org/abs/1906.05688) 12 | """ 13 | 14 | def __init__(self, 15 | backbone, 16 | rpn_head, 17 | roi_head, 18 | train_cfg, 19 | test_cfg, 20 | neck=None, 21 | pretrained=None): 22 | super(GridRCNN, self).__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 | pretrained=pretrained) 30 | -------------------------------------------------------------------------------- /annotator/uniformer/mmdet/models/detectors/htc.py: -------------------------------------------------------------------------------- 1 | from ..builder import DETECTORS 2 | from .cascade_rcnn import CascadeRCNN 3 | 4 | 5 | @DETECTORS.register_module() 6 | class HybridTaskCascade(CascadeRCNN): 7 | """Implementation of `HTC `_""" 8 | 9 | def __init__(self, **kwargs): 10 | super(HybridTaskCascade, self).__init__(**kwargs) 11 | 12 | @property 13 | def with_semantic(self): 14 | """bool: whether the detector has a semantic head""" 15 | return self.roi_head.with_semantic 16 | -------------------------------------------------------------------------------- /annotator/uniformer/mmdet/models/detectors/mask_rcnn.py: -------------------------------------------------------------------------------- 1 | from ..builder import DETECTORS 2 | from .two_stage import TwoStageDetector 3 | 4 | 5 | @DETECTORS.register_module() 6 | class MaskRCNN(TwoStageDetector): 7 | """Implementation of `Mask R-CNN `_""" 8 | 9 | def __init__(self, 10 | backbone, 11 | rpn_head, 12 | roi_head, 13 | train_cfg, 14 | test_cfg, 15 | neck=None, 16 | pretrained=None): 17 | super(MaskRCNN, self).__init__( 18 | backbone=backbone, 19 | neck=neck, 20 | rpn_head=rpn_head, 21 | roi_head=roi_head, 22 | train_cfg=train_cfg, 23 | test_cfg=test_cfg, 24 | pretrained=pretrained) 25 | -------------------------------------------------------------------------------- /annotator/uniformer/mmdet/models/detectors/mask_scoring_rcnn.py: -------------------------------------------------------------------------------- 1 | from ..builder import DETECTORS 2 | from .two_stage import TwoStageDetector 3 | 4 | 5 | @DETECTORS.register_module() 6 | class MaskScoringRCNN(TwoStageDetector): 7 | """Mask Scoring RCNN. 8 | 9 | https://arxiv.org/abs/1903.00241 10 | """ 11 | 12 | def __init__(self, 13 | backbone, 14 | rpn_head, 15 | roi_head, 16 | train_cfg, 17 | test_cfg, 18 | neck=None, 19 | pretrained=None): 20 | super(MaskScoringRCNN, self).__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 | pretrained=pretrained) 28 | -------------------------------------------------------------------------------- /annotator/uniformer/mmdet/models/detectors/nasfcos.py: -------------------------------------------------------------------------------- 1 | from ..builder import DETECTORS 2 | from .single_stage import SingleStageDetector 3 | 4 | 5 | @DETECTORS.register_module() 6 | class NASFCOS(SingleStageDetector): 7 | """NAS-FCOS: Fast Neural Architecture Search for Object Detection. 8 | 9 | https://arxiv.org/abs/1906.0442 10 | """ 11 | 12 | def __init__(self, 13 | backbone, 14 | neck, 15 | bbox_head, 16 | train_cfg=None, 17 | test_cfg=None, 18 | pretrained=None): 19 | super(NASFCOS, self).__init__(backbone, neck, bbox_head, train_cfg, 20 | test_cfg, pretrained) 21 | -------------------------------------------------------------------------------- /annotator/uniformer/mmdet/models/detectors/paa.py: -------------------------------------------------------------------------------- 1 | from ..builder import DETECTORS 2 | from .single_stage import SingleStageDetector 3 | 4 | 5 | @DETECTORS.register_module() 6 | class PAA(SingleStageDetector): 7 | """Implementation of `PAA `_.""" 8 | 9 | def __init__(self, 10 | backbone, 11 | neck, 12 | bbox_head, 13 | train_cfg=None, 14 | test_cfg=None, 15 | pretrained=None): 16 | super(PAA, self).__init__(backbone, neck, bbox_head, train_cfg, 17 | test_cfg, pretrained) 18 | -------------------------------------------------------------------------------- /annotator/uniformer/mmdet/models/detectors/point_rend.py: -------------------------------------------------------------------------------- 1 | from ..builder import DETECTORS 2 | from .two_stage import TwoStageDetector 3 | 4 | 5 | @DETECTORS.register_module() 6 | class PointRend(TwoStageDetector): 7 | """PointRend: Image Segmentation as Rendering 8 | 9 | This detector is the implementation of 10 | `PointRend `_. 11 | 12 | """ 13 | 14 | def __init__(self, 15 | backbone, 16 | rpn_head, 17 | roi_head, 18 | train_cfg, 19 | test_cfg, 20 | neck=None, 21 | pretrained=None): 22 | super(PointRend, self).__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 | pretrained=pretrained) 30 | -------------------------------------------------------------------------------- /annotator/uniformer/mmdet/models/detectors/reppoints_detector.py: -------------------------------------------------------------------------------- 1 | from ..builder import DETECTORS 2 | from .single_stage import SingleStageDetector 3 | 4 | 5 | @DETECTORS.register_module() 6 | class RepPointsDetector(SingleStageDetector): 7 | """RepPoints: Point Set Representation for Object Detection. 8 | 9 | This detector is the implementation of: 10 | - RepPoints detector (https://arxiv.org/pdf/1904.11490) 11 | """ 12 | 13 | def __init__(self, 14 | backbone, 15 | neck, 16 | bbox_head, 17 | train_cfg=None, 18 | test_cfg=None, 19 | pretrained=None): 20 | super(RepPointsDetector, 21 | self).__init__(backbone, neck, bbox_head, train_cfg, test_cfg, 22 | pretrained) 23 | -------------------------------------------------------------------------------- /annotator/uniformer/mmdet/models/detectors/retinanet.py: -------------------------------------------------------------------------------- 1 | from ..builder import DETECTORS 2 | from .single_stage import SingleStageDetector 3 | 4 | 5 | @DETECTORS.register_module() 6 | class RetinaNet(SingleStageDetector): 7 | """Implementation of `RetinaNet `_""" 8 | 9 | def __init__(self, 10 | backbone, 11 | neck, 12 | bbox_head, 13 | train_cfg=None, 14 | test_cfg=None, 15 | pretrained=None): 16 | super(RetinaNet, self).__init__(backbone, neck, bbox_head, train_cfg, 17 | test_cfg, pretrained) 18 | -------------------------------------------------------------------------------- /annotator/uniformer/mmdet/models/detectors/scnet.py: -------------------------------------------------------------------------------- 1 | from ..builder import DETECTORS 2 | from .cascade_rcnn import CascadeRCNN 3 | 4 | 5 | @DETECTORS.register_module() 6 | class SCNet(CascadeRCNN): 7 | """Implementation of `SCNet `_""" 8 | 9 | def __init__(self, **kwargs): 10 | super(SCNet, self).__init__(**kwargs) 11 | -------------------------------------------------------------------------------- /annotator/uniformer/mmdet/models/detectors/vfnet.py: -------------------------------------------------------------------------------- 1 | from ..builder import DETECTORS 2 | from .single_stage import SingleStageDetector 3 | 4 | 5 | @DETECTORS.register_module() 6 | class VFNet(SingleStageDetector): 7 | """Implementation of `VarifocalNet 8 | (VFNet).`_""" 9 | 10 | def __init__(self, 11 | backbone, 12 | neck, 13 | bbox_head, 14 | train_cfg=None, 15 | test_cfg=None, 16 | pretrained=None): 17 | super(VFNet, self).__init__(backbone, neck, bbox_head, train_cfg, 18 | test_cfg, pretrained) 19 | -------------------------------------------------------------------------------- /annotator/uniformer/mmdet/models/detectors/yolo.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2019 Western Digital Corporation or its affiliates. 2 | 3 | from ..builder import DETECTORS 4 | from .single_stage import SingleStageDetector 5 | 6 | 7 | @DETECTORS.register_module() 8 | class YOLOV3(SingleStageDetector): 9 | 10 | def __init__(self, 11 | backbone, 12 | neck, 13 | bbox_head, 14 | train_cfg=None, 15 | test_cfg=None, 16 | pretrained=None): 17 | super(YOLOV3, self).__init__(backbone, neck, bbox_head, train_cfg, 18 | test_cfg, pretrained) 19 | -------------------------------------------------------------------------------- /annotator/uniformer/mmdet/models/necks/__init__.py: -------------------------------------------------------------------------------- 1 | from .bfp import BFP 2 | from .channel_mapper import ChannelMapper 3 | from .fpg import FPG 4 | from .fpn import FPN 5 | from .fpn_carafe import FPN_CARAFE 6 | from .hrfpn import HRFPN 7 | from .nas_fpn import NASFPN 8 | from .nasfcos_fpn import NASFCOS_FPN 9 | from .pafpn import PAFPN 10 | from .rfp import RFP 11 | from .yolo_neck import YOLOV3Neck 12 | 13 | __all__ = [ 14 | 'FPN', 'BFP', 'ChannelMapper', 'HRFPN', 'NASFPN', 'FPN_CARAFE', 'PAFPN', 15 | 'NASFCOS_FPN', 'RFP', 'YOLOV3Neck', 'FPG' 16 | ] 17 | -------------------------------------------------------------------------------- /annotator/uniformer/mmdet/models/roi_heads/bbox_heads/__init__.py: -------------------------------------------------------------------------------- 1 | from .bbox_head import BBoxHead 2 | from .convfc_bbox_head import (ConvFCBBoxHead, Shared2FCBBoxHead, 3 | Shared4Conv1FCBBoxHead) 4 | from .dii_head import DIIHead 5 | from .double_bbox_head import DoubleConvFCBBoxHead 6 | from .sabl_head import SABLHead 7 | from .scnet_bbox_head import SCNetBBoxHead 8 | 9 | __all__ = [ 10 | 'BBoxHead', 'ConvFCBBoxHead', 'Shared2FCBBoxHead', 11 | 'Shared4Conv1FCBBoxHead', 'DoubleConvFCBBoxHead', 'SABLHead', 'DIIHead', 12 | 'SCNetBBoxHead' 13 | ] 14 | -------------------------------------------------------------------------------- /annotator/uniformer/mmdet/models/roi_heads/mask_heads/__init__.py: -------------------------------------------------------------------------------- 1 | from .coarse_mask_head import CoarseMaskHead 2 | from .fcn_mask_head import FCNMaskHead 3 | from .feature_relay_head import FeatureRelayHead 4 | from .fused_semantic_head import FusedSemanticHead 5 | from .global_context_head import GlobalContextHead 6 | from .grid_head import GridHead 7 | from .htc_mask_head import HTCMaskHead 8 | from .mask_point_head import MaskPointHead 9 | from .maskiou_head import MaskIoUHead 10 | from .scnet_mask_head import SCNetMaskHead 11 | from .scnet_semantic_head import SCNetSemanticHead 12 | 13 | __all__ = [ 14 | 'FCNMaskHead', 'HTCMaskHead', 'FusedSemanticHead', 'GridHead', 15 | 'MaskIoUHead', 'CoarseMaskHead', 'MaskPointHead', 'SCNetMaskHead', 16 | 'SCNetSemanticHead', 'GlobalContextHead', 'FeatureRelayHead' 17 | ] 18 | -------------------------------------------------------------------------------- /annotator/uniformer/mmdet/models/roi_heads/mask_heads/scnet_mask_head.py: -------------------------------------------------------------------------------- 1 | from mmdet.models.builder import HEADS 2 | from mmdet.models.utils import ResLayer, SimplifiedBasicBlock 3 | from .fcn_mask_head import FCNMaskHead 4 | 5 | 6 | @HEADS.register_module() 7 | class SCNetMaskHead(FCNMaskHead): 8 | """Mask head for `SCNet `_. 9 | 10 | Args: 11 | conv_to_res (bool, optional): if True, change the conv layers to 12 | ``SimplifiedBasicBlock``. 13 | """ 14 | 15 | def __init__(self, conv_to_res=True, **kwargs): 16 | super(SCNetMaskHead, self).__init__(**kwargs) 17 | self.conv_to_res = conv_to_res 18 | if conv_to_res: 19 | assert self.conv_kernel_size == 3 20 | self.num_res_blocks = self.num_convs // 2 21 | self.convs = ResLayer( 22 | SimplifiedBasicBlock, 23 | self.in_channels, 24 | self.conv_out_channels, 25 | self.num_res_blocks, 26 | conv_cfg=self.conv_cfg, 27 | norm_cfg=self.norm_cfg) 28 | -------------------------------------------------------------------------------- /annotator/uniformer/mmdet/models/roi_heads/mask_heads/scnet_semantic_head.py: -------------------------------------------------------------------------------- 1 | from mmdet.models.builder import HEADS 2 | from mmdet.models.utils import ResLayer, SimplifiedBasicBlock 3 | from .fused_semantic_head import FusedSemanticHead 4 | 5 | 6 | @HEADS.register_module() 7 | class SCNetSemanticHead(FusedSemanticHead): 8 | """Mask head for `SCNet `_. 9 | 10 | Args: 11 | conv_to_res (bool, optional): if True, change the conv layers to 12 | ``SimplifiedBasicBlock``. 13 | """ 14 | 15 | def __init__(self, conv_to_res=True, **kwargs): 16 | super(SCNetSemanticHead, self).__init__(**kwargs) 17 | self.conv_to_res = conv_to_res 18 | if self.conv_to_res: 19 | num_res_blocks = self.num_convs // 2 20 | self.convs = ResLayer( 21 | SimplifiedBasicBlock, 22 | self.in_channels, 23 | self.conv_out_channels, 24 | num_res_blocks, 25 | conv_cfg=self.conv_cfg, 26 | norm_cfg=self.norm_cfg) 27 | self.num_convs = num_res_blocks 28 | -------------------------------------------------------------------------------- /annotator/uniformer/mmdet/models/roi_heads/roi_extractors/__init__.py: -------------------------------------------------------------------------------- 1 | from .generic_roi_extractor import GenericRoIExtractor 2 | from .single_level_roi_extractor import SingleRoIExtractor 3 | 4 | __all__ = [ 5 | 'SingleRoIExtractor', 6 | 'GenericRoIExtractor', 7 | ] 8 | -------------------------------------------------------------------------------- /annotator/uniformer/mmdet/models/roi_heads/shared_heads/__init__.py: -------------------------------------------------------------------------------- 1 | from .res_layer import ResLayer 2 | 3 | __all__ = ['ResLayer'] 4 | -------------------------------------------------------------------------------- /annotator/uniformer/mmdet/models/utils/__init__.py: -------------------------------------------------------------------------------- 1 | from .builder import build_positional_encoding, build_transformer 2 | from .gaussian_target import gaussian_radius, gen_gaussian_target 3 | from .positional_encoding import (LearnedPositionalEncoding, 4 | SinePositionalEncoding) 5 | from .res_layer import ResLayer, SimplifiedBasicBlock 6 | from .transformer import (FFN, DynamicConv, MultiheadAttention, Transformer, 7 | TransformerDecoder, TransformerDecoderLayer, 8 | TransformerEncoder, TransformerEncoderLayer) 9 | 10 | __all__ = [ 11 | 'ResLayer', 'gaussian_radius', 'gen_gaussian_target', 'MultiheadAttention', 12 | 'FFN', 'TransformerEncoderLayer', 'TransformerEncoder', 13 | 'TransformerDecoderLayer', 'TransformerDecoder', 'Transformer', 14 | 'build_transformer', 'build_positional_encoding', 'SinePositionalEncoding', 15 | 'LearnedPositionalEncoding', 'DynamicConv', 'SimplifiedBasicBlock' 16 | ] 17 | -------------------------------------------------------------------------------- /annotator/uniformer/mmdet/models/utils/builder.py: -------------------------------------------------------------------------------- 1 | from mmcv.utils import Registry, build_from_cfg 2 | 3 | TRANSFORMER = Registry('Transformer') 4 | POSITIONAL_ENCODING = Registry('Position encoding') 5 | 6 | 7 | def build_transformer(cfg, default_args=None): 8 | """Builder for Transformer.""" 9 | return build_from_cfg(cfg, TRANSFORMER, default_args) 10 | 11 | 12 | def build_positional_encoding(cfg, default_args=None): 13 | """Builder for Position Encoding.""" 14 | return build_from_cfg(cfg, POSITIONAL_ENCODING, default_args) 15 | -------------------------------------------------------------------------------- /annotator/uniformer/mmdet/utils/__init__.py: -------------------------------------------------------------------------------- 1 | from .collect_env import collect_env 2 | from .logger import get_root_logger 3 | from .optimizer import DistOptimizerHook 4 | 5 | __all__ = ['get_root_logger', 'collect_env', 'DistOptimizerHook'] 6 | -------------------------------------------------------------------------------- /annotator/uniformer/mmdet/utils/collect_env.py: -------------------------------------------------------------------------------- 1 | from mmcv.utils import collect_env as collect_base_env 2 | from mmcv.utils import get_git_hash 3 | 4 | import mmdet 5 | 6 | 7 | def collect_env(): 8 | """Collect the information of the running environments.""" 9 | env_info = collect_base_env() 10 | env_info['MMDetection'] = mmdet.__version__ + '+' + get_git_hash()[:7] 11 | return env_info 12 | 13 | 14 | if __name__ == '__main__': 15 | for name, val in collect_env().items(): 16 | print(f'{name}: {val}') 17 | -------------------------------------------------------------------------------- /annotator/uniformer/mmdet/utils/logger.py: -------------------------------------------------------------------------------- 1 | import logging 2 | 3 | from mmcv.utils import get_logger 4 | 5 | 6 | def get_root_logger(log_file=None, log_level=logging.INFO): 7 | """Get root logger. 8 | 9 | Args: 10 | log_file (str, optional): File path of log. Defaults to None. 11 | log_level (int, optional): The level of logger. 12 | Defaults to logging.INFO. 13 | 14 | Returns: 15 | :obj:`logging.Logger`: The obtained logger 16 | """ 17 | logger = get_logger(name='mmdet', log_file=log_file, log_level=log_level) 18 | 19 | return logger 20 | -------------------------------------------------------------------------------- /annotator/uniformer/mmdet/version.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) Open-MMLab. All rights reserved. 2 | 3 | __version__ = '2.11.0' 4 | short_version = __version__ 5 | 6 | 7 | def parse_version_info(version_str): 8 | version_info = [] 9 | for x in version_str.split('.'): 10 | if x.isdigit(): 11 | version_info.append(int(x)) 12 | elif x.find('rc') != -1: 13 | patch_version = x.split('rc') 14 | version_info.append(int(patch_version[0])) 15 | version_info.append(f'rc{patch_version[1]}') 16 | return tuple(version_info) 17 | 18 | 19 | version_info = parse_version_info(__version__) 20 | -------------------------------------------------------------------------------- /annotator/uniformer/mmdet_null/apis/__init__.py: -------------------------------------------------------------------------------- 1 | from .inference import (async_inference_detector, inference_detector, 2 | init_detector, show_result_pyplot) 3 | from .test import multi_gpu_test, single_gpu_test 4 | from .train import get_root_logger, set_random_seed, train_detector 5 | 6 | __all__ = [ 7 | 'get_root_logger', 'set_random_seed', 'train_detector', 'init_detector', 8 | 'async_inference_detector', 'inference_detector', 'show_result_pyplot', 9 | 'multi_gpu_test', 'single_gpu_test' 10 | ] 11 | -------------------------------------------------------------------------------- /annotator/uniformer/mmdet_null/core/__init__.py: -------------------------------------------------------------------------------- 1 | from .anchor import * # noqa: F401, F403 2 | # from .bbox import * # noqa: F401, F403 3 | from .evaluation import get_palette, get_classes # noqa: F401, F403 4 | # from .export import * # noqa: F401, F403 5 | # from .mask import * # noqa: F401, F403 6 | # from .post_processing import * # noqa: F401, F403 7 | # from .utils import * # noqa: F401, F403 8 | -------------------------------------------------------------------------------- /annotator/uniformer/mmdet_null/core/anchor/__init__.py: -------------------------------------------------------------------------------- 1 | from .anchor_generator import (AnchorGenerator, LegacyAnchorGenerator, 2 | YOLOAnchorGenerator) 3 | from .builder import ANCHOR_GENERATORS, build_anchor_generator 4 | from .point_generator import PointGenerator 5 | from .utils import anchor_inside_flags, calc_region, images_to_levels 6 | 7 | __all__ = [ 8 | 'AnchorGenerator', 'LegacyAnchorGenerator', 'anchor_inside_flags', 9 | 'PointGenerator', 'images_to_levels', 'calc_region', 10 | 'build_anchor_generator', 'ANCHOR_GENERATORS', 'YOLOAnchorGenerator' 11 | ] 12 | -------------------------------------------------------------------------------- /annotator/uniformer/mmdet_null/core/anchor/builder.py: -------------------------------------------------------------------------------- 1 | from annotator.uniformer.mmcv.utils import Registry, build_from_cfg 2 | 3 | ANCHOR_GENERATORS = Registry('Anchor generator') 4 | 5 | 6 | def build_anchor_generator(cfg, default_args=None): 7 | return build_from_cfg(cfg, ANCHOR_GENERATORS, default_args) 8 | -------------------------------------------------------------------------------- /annotator/uniformer/mmdet_null/core/bbox/assigners/__init__.py: -------------------------------------------------------------------------------- 1 | from .approx_max_iou_assigner import ApproxMaxIoUAssigner 2 | from .assign_result import AssignResult 3 | from .atss_assigner import ATSSAssigner 4 | from .base_assigner import BaseAssigner 5 | from .center_region_assigner import CenterRegionAssigner 6 | from .grid_assigner import GridAssigner 7 | from .hungarian_assigner import HungarianAssigner 8 | from .max_iou_assigner import MaxIoUAssigner 9 | from .point_assigner import PointAssigner 10 | from .region_assigner import RegionAssigner 11 | 12 | __all__ = [ 13 | 'BaseAssigner', 'MaxIoUAssigner', 'ApproxMaxIoUAssigner', 'AssignResult', 14 | 'PointAssigner', 'ATSSAssigner', 'CenterRegionAssigner', 'GridAssigner', 15 | 'HungarianAssigner', 'RegionAssigner' 16 | ] 17 | -------------------------------------------------------------------------------- /annotator/uniformer/mmdet_null/core/bbox/assigners/base_assigner.py: -------------------------------------------------------------------------------- 1 | from abc import ABCMeta, abstractmethod 2 | 3 | 4 | class BaseAssigner(metaclass=ABCMeta): 5 | """Base assigner that assigns boxes to ground truth boxes.""" 6 | 7 | @abstractmethod 8 | def assign(self, bboxes, gt_bboxes, gt_bboxes_ignore=None, gt_labels=None): 9 | """Assign boxes to either a ground truth boxes or a negative boxes.""" 10 | -------------------------------------------------------------------------------- /annotator/uniformer/mmdet_null/core/bbox/builder.py: -------------------------------------------------------------------------------- 1 | from annotator.uniformer.mmcv.utils import Registry, build_from_cfg 2 | 3 | BBOX_ASSIGNERS = Registry('bbox_assigner') 4 | BBOX_SAMPLERS = Registry('bbox_sampler') 5 | BBOX_CODERS = Registry('bbox_coder') 6 | 7 | 8 | def build_assigner(cfg, **default_args): 9 | """Builder of box assigner.""" 10 | return build_from_cfg(cfg, BBOX_ASSIGNERS, default_args) 11 | 12 | 13 | def build_sampler(cfg, **default_args): 14 | """Builder of box sampler.""" 15 | return build_from_cfg(cfg, BBOX_SAMPLERS, default_args) 16 | 17 | 18 | def build_bbox_coder(cfg, **default_args): 19 | """Builder of box coder.""" 20 | return build_from_cfg(cfg, BBOX_CODERS, default_args) 21 | -------------------------------------------------------------------------------- /annotator/uniformer/mmdet_null/core/bbox/coder/__init__.py: -------------------------------------------------------------------------------- 1 | from .base_bbox_coder import BaseBBoxCoder 2 | from .bucketing_bbox_coder import BucketingBBoxCoder 3 | from .delta_xywh_bbox_coder import DeltaXYWHBBoxCoder 4 | from .legacy_delta_xywh_bbox_coder import LegacyDeltaXYWHBBoxCoder 5 | from .pseudo_bbox_coder import PseudoBBoxCoder 6 | from .tblr_bbox_coder import TBLRBBoxCoder 7 | from .yolo_bbox_coder import YOLOBBoxCoder 8 | 9 | __all__ = [ 10 | 'BaseBBoxCoder', 'PseudoBBoxCoder', 'DeltaXYWHBBoxCoder', 11 | 'LegacyDeltaXYWHBBoxCoder', 'TBLRBBoxCoder', 'YOLOBBoxCoder', 12 | 'BucketingBBoxCoder' 13 | ] 14 | -------------------------------------------------------------------------------- /annotator/uniformer/mmdet_null/core/bbox/coder/base_bbox_coder.py: -------------------------------------------------------------------------------- 1 | from abc import ABCMeta, abstractmethod 2 | 3 | 4 | class BaseBBoxCoder(metaclass=ABCMeta): 5 | """Base bounding box coder.""" 6 | 7 | def __init__(self, **kwargs): 8 | pass 9 | 10 | @abstractmethod 11 | def encode(self, bboxes, gt_bboxes): 12 | """Encode deltas between bboxes and ground truth boxes.""" 13 | 14 | @abstractmethod 15 | def decode(self, bboxes, bboxes_pred): 16 | """Decode the predicted bboxes according to prediction and base 17 | boxes.""" 18 | -------------------------------------------------------------------------------- /annotator/uniformer/mmdet_null/core/bbox/coder/pseudo_bbox_coder.py: -------------------------------------------------------------------------------- 1 | from ..builder import BBOX_CODERS 2 | from .base_bbox_coder import BaseBBoxCoder 3 | 4 | 5 | @BBOX_CODERS.register_module() 6 | class PseudoBBoxCoder(BaseBBoxCoder): 7 | """Pseudo bounding box coder.""" 8 | 9 | def __init__(self, **kwargs): 10 | super(BaseBBoxCoder, self).__init__(**kwargs) 11 | 12 | def encode(self, bboxes, gt_bboxes): 13 | """torch.Tensor: return the given ``bboxes``""" 14 | return gt_bboxes 15 | 16 | def decode(self, bboxes, pred_bboxes): 17 | """torch.Tensor: return the given ``pred_bboxes``""" 18 | return pred_bboxes 19 | -------------------------------------------------------------------------------- /annotator/uniformer/mmdet_null/core/bbox/iou_calculators/__init__.py: -------------------------------------------------------------------------------- 1 | from .builder import build_iou_calculator 2 | from .iou2d_calculator import BboxOverlaps2D, bbox_overlaps 3 | 4 | __all__ = ['build_iou_calculator', 'BboxOverlaps2D', 'bbox_overlaps'] 5 | -------------------------------------------------------------------------------- /annotator/uniformer/mmdet_null/core/bbox/iou_calculators/builder.py: -------------------------------------------------------------------------------- 1 | from annotator.uniformer.mmcv.utils import Registry, build_from_cfg 2 | 3 | IOU_CALCULATORS = Registry('IoU calculator') 4 | 5 | 6 | def build_iou_calculator(cfg, default_args=None): 7 | """Builder of IoU calculator.""" 8 | return build_from_cfg(cfg, IOU_CALCULATORS, default_args) 9 | -------------------------------------------------------------------------------- /annotator/uniformer/mmdet_null/core/bbox/match_costs/__init__.py: -------------------------------------------------------------------------------- 1 | from .builder import build_match_cost 2 | from .match_cost import BBoxL1Cost, ClassificationCost, FocalLossCost, IoUCost 3 | 4 | __all__ = [ 5 | 'build_match_cost', 'ClassificationCost', 'BBoxL1Cost', 'IoUCost', 6 | 'FocalLossCost' 7 | ] 8 | -------------------------------------------------------------------------------- /annotator/uniformer/mmdet_null/core/bbox/match_costs/builder.py: -------------------------------------------------------------------------------- 1 | from annotator.uniformer.mmcv.utils import Registry, build_from_cfg 2 | 3 | MATCH_COST = Registry('Match Cost') 4 | 5 | 6 | def build_match_cost(cfg, default_args=None): 7 | """Builder of IoU calculator.""" 8 | return build_from_cfg(cfg, MATCH_COST, default_args) 9 | -------------------------------------------------------------------------------- /annotator/uniformer/mmdet_null/core/bbox/samplers/__init__.py: -------------------------------------------------------------------------------- 1 | from .base_sampler import BaseSampler 2 | from .combined_sampler import CombinedSampler 3 | from .instance_balanced_pos_sampler import InstanceBalancedPosSampler 4 | from .iou_balanced_neg_sampler import IoUBalancedNegSampler 5 | from .ohem_sampler import OHEMSampler 6 | from .pseudo_sampler import PseudoSampler 7 | from .random_sampler import RandomSampler 8 | from .sampling_result import SamplingResult 9 | from .score_hlr_sampler import ScoreHLRSampler 10 | 11 | __all__ = [ 12 | 'BaseSampler', 'PseudoSampler', 'RandomSampler', 13 | 'InstanceBalancedPosSampler', 'IoUBalancedNegSampler', 'CombinedSampler', 14 | 'OHEMSampler', 'SamplingResult', 'ScoreHLRSampler' 15 | ] 16 | -------------------------------------------------------------------------------- /annotator/uniformer/mmdet_null/core/bbox/samplers/combined_sampler.py: -------------------------------------------------------------------------------- 1 | from ..builder import BBOX_SAMPLERS, build_sampler 2 | from .base_sampler import BaseSampler 3 | 4 | 5 | @BBOX_SAMPLERS.register_module() 6 | class CombinedSampler(BaseSampler): 7 | """A sampler that combines positive sampler and negative sampler.""" 8 | 9 | def __init__(self, pos_sampler, neg_sampler, **kwargs): 10 | super(CombinedSampler, self).__init__(**kwargs) 11 | self.pos_sampler = build_sampler(pos_sampler, **kwargs) 12 | self.neg_sampler = build_sampler(neg_sampler, **kwargs) 13 | 14 | def _sample_pos(self, **kwargs): 15 | """Sample positive samples.""" 16 | raise NotImplementedError 17 | 18 | def _sample_neg(self, **kwargs): 19 | """Sample negative samples.""" 20 | raise NotImplementedError 21 | -------------------------------------------------------------------------------- /annotator/uniformer/mmdet_null/core/evaluation/__init__.py: -------------------------------------------------------------------------------- 1 | from .class_names import (cityscapes_classes, coco_classes, dataset_aliases, 2 | get_classes, imagenet_det_classes, 3 | imagenet_vid_classes, voc_classes, get_palette) 4 | from .eval_hooks import DistEvalHook, EvalHook 5 | from .mean_ap import average_precision, eval_map, print_map_summary 6 | from .recall import (eval_recalls, plot_iou_recall, plot_num_recall, 7 | print_recall_summary) 8 | 9 | __all__ = [ 10 | 'voc_classes', 'imagenet_det_classes', 'imagenet_vid_classes', 11 | 'coco_classes', 'cityscapes_classes', 'dataset_aliases', 'get_classes', 'get_palette', 12 | 'DistEvalHook', 'EvalHook', 'average_precision', 'eval_map', 13 | 'print_map_summary', 'eval_recalls', 'print_recall_summary', 14 | 'plot_num_recall', 'plot_iou_recall' 15 | ] 16 | -------------------------------------------------------------------------------- /annotator/uniformer/mmdet_null/core/export/__init__.py: -------------------------------------------------------------------------------- 1 | from .pytorch2onnx import (build_model_from_cfg, 2 | generate_inputs_and_wrap_model, 3 | preprocess_example_input) 4 | 5 | __all__ = [ 6 | 'build_model_from_cfg', 'generate_inputs_and_wrap_model', 7 | 'preprocess_example_input' 8 | ] 9 | -------------------------------------------------------------------------------- /annotator/uniformer/mmdet_null/core/mask/__init__.py: -------------------------------------------------------------------------------- 1 | from .mask_target import mask_target 2 | from .structures import BaseInstanceMasks, BitmapMasks, PolygonMasks 3 | from .utils import encode_mask_results, split_combined_polys 4 | 5 | __all__ = [ 6 | 'split_combined_polys', 'mask_target', 'BaseInstanceMasks', 'BitmapMasks', 7 | 'PolygonMasks', 'encode_mask_results' 8 | ] 9 | -------------------------------------------------------------------------------- /annotator/uniformer/mmdet_null/core/post_processing/__init__.py: -------------------------------------------------------------------------------- 1 | from .bbox_nms import fast_nms, multiclass_nms 2 | from .merge_augs import (merge_aug_bboxes, merge_aug_masks, 3 | merge_aug_proposals, merge_aug_scores) 4 | 5 | __all__ = [ 6 | 'multiclass_nms', 'merge_aug_proposals', 'merge_aug_bboxes', 7 | 'merge_aug_scores', 'merge_aug_masks', 'fast_nms' 8 | ] 9 | -------------------------------------------------------------------------------- /annotator/uniformer/mmdet_null/core/utils/__init__.py: -------------------------------------------------------------------------------- 1 | from .dist_utils import DistOptimizerHook, allreduce_grads, reduce_mean 2 | from .misc import mask2ndarray, multi_apply, unmap 3 | 4 | __all__ = [ 5 | 'allreduce_grads', 'DistOptimizerHook', 'reduce_mean', 'multi_apply', 6 | 'unmap', 'mask2ndarray' 7 | ] 8 | -------------------------------------------------------------------------------- /annotator/uniformer/mmdet_null/core/visualization/__init__.py: -------------------------------------------------------------------------------- 1 | from .image import (color_val_matplotlib, imshow_det_bboxes, 2 | imshow_gt_det_bboxes) 3 | 4 | __all__ = ['imshow_det_bboxes', 'imshow_gt_det_bboxes', 'color_val_matplotlib'] 5 | -------------------------------------------------------------------------------- /annotator/uniformer/mmdet_null/datasets/deepfashion.py: -------------------------------------------------------------------------------- 1 | from .builder import DATASETS 2 | from .coco import CocoDataset 3 | 4 | 5 | @DATASETS.register_module() 6 | class DeepFashionDataset(CocoDataset): 7 | 8 | CLASSES = ('top', 'skirt', 'leggings', 'dress', 'outer', 'pants', 'bag', 9 | 'neckwear', 'headwear', 'eyeglass', 'belt', 'footwear', 'hair', 10 | 'skin', 'face') 11 | -------------------------------------------------------------------------------- /annotator/uniformer/mmdet_null/datasets/samplers/__init__.py: -------------------------------------------------------------------------------- 1 | from .distributed_sampler import DistributedSampler 2 | from .group_sampler import DistributedGroupSampler, GroupSampler 3 | 4 | __all__ = ['DistributedSampler', 'DistributedGroupSampler', 'GroupSampler'] 5 | -------------------------------------------------------------------------------- /annotator/uniformer/mmdet_null/models/__init__.py: -------------------------------------------------------------------------------- 1 | from .backbones import * # noqa: F401,F403 2 | from .builder import (BACKBONES, DETECTORS, HEADS, LOSSES, NECKS, 3 | ROI_EXTRACTORS, SHARED_HEADS, build_backbone, 4 | build_detector, build_head, build_loss, build_neck, 5 | build_roi_extractor, build_shared_head) 6 | from .dense_heads import * # noqa: F401,F403 7 | from .detectors import * # noqa: F401,F403 8 | from .losses import * # noqa: F401,F403 9 | from .necks import * # noqa: F401,F403 10 | from .roi_heads import * # noqa: F401,F403 11 | 12 | __all__ = [ 13 | 'BACKBONES', 'NECKS', 'ROI_EXTRACTORS', 'SHARED_HEADS', 'HEADS', 'LOSSES', 14 | 'DETECTORS', 'build_backbone', 'build_neck', 'build_roi_extractor', 15 | 'build_shared_head', 'build_head', 'build_loss', 'build_detector' 16 | ] 17 | -------------------------------------------------------------------------------- /annotator/uniformer/mmdet_null/models/backbones/__init__.py: -------------------------------------------------------------------------------- 1 | from .darknet import Darknet 2 | from .detectors_resnet import DetectoRS_ResNet 3 | from .detectors_resnext import DetectoRS_ResNeXt 4 | from .hourglass import HourglassNet 5 | from .hrnet import HRNet 6 | from .regnet import RegNet 7 | from .res2net import Res2Net 8 | from .resnest import ResNeSt 9 | from .resnet import ResNet, ResNetV1d 10 | from .resnext import ResNeXt 11 | from .ssd_vgg import SSDVGG 12 | from .trident_resnet import TridentResNet 13 | from .swin_transformer import SwinTransformer 14 | from .uniformer import UniFormer 15 | 16 | __all__ = [ 17 | 'RegNet', 'ResNet', 'ResNetV1d', 'ResNeXt', 'SSDVGG', 'HRNet', 'Res2Net', 18 | 'HourglassNet', 'DetectoRS_ResNet', 'DetectoRS_ResNeXt', 'Darknet', 19 | 'ResNeSt', 'TridentResNet', 'SwinTransformer', 'UniFormer' 20 | ] 21 | -------------------------------------------------------------------------------- /annotator/uniformer/mmdet_null/models/detectors/atss.py: -------------------------------------------------------------------------------- 1 | from ..builder import DETECTORS 2 | from .single_stage import SingleStageDetector 3 | 4 | 5 | @DETECTORS.register_module() 6 | class ATSS(SingleStageDetector): 7 | """Implementation of `ATSS `_.""" 8 | 9 | def __init__(self, 10 | backbone, 11 | neck, 12 | bbox_head, 13 | train_cfg=None, 14 | test_cfg=None, 15 | pretrained=None): 16 | super(ATSS, self).__init__(backbone, neck, bbox_head, train_cfg, 17 | test_cfg, pretrained) 18 | -------------------------------------------------------------------------------- /annotator/uniformer/mmdet_null/models/detectors/faster_rcnn.py: -------------------------------------------------------------------------------- 1 | from ..builder import DETECTORS 2 | from .two_stage import TwoStageDetector 3 | 4 | 5 | @DETECTORS.register_module() 6 | class FasterRCNN(TwoStageDetector): 7 | """Implementation of `Faster R-CNN `_""" 8 | 9 | def __init__(self, 10 | backbone, 11 | rpn_head, 12 | roi_head, 13 | train_cfg, 14 | test_cfg, 15 | neck=None, 16 | pretrained=None): 17 | super(FasterRCNN, self).__init__( 18 | backbone=backbone, 19 | neck=neck, 20 | rpn_head=rpn_head, 21 | roi_head=roi_head, 22 | train_cfg=train_cfg, 23 | test_cfg=test_cfg, 24 | pretrained=pretrained) 25 | -------------------------------------------------------------------------------- /annotator/uniformer/mmdet_null/models/detectors/fcos.py: -------------------------------------------------------------------------------- 1 | from ..builder import DETECTORS 2 | from .single_stage import SingleStageDetector 3 | 4 | 5 | @DETECTORS.register_module() 6 | class FCOS(SingleStageDetector): 7 | """Implementation of `FCOS `_""" 8 | 9 | def __init__(self, 10 | backbone, 11 | neck, 12 | bbox_head, 13 | train_cfg=None, 14 | test_cfg=None, 15 | pretrained=None): 16 | super(FCOS, self).__init__(backbone, neck, bbox_head, train_cfg, 17 | test_cfg, pretrained) 18 | -------------------------------------------------------------------------------- /annotator/uniformer/mmdet_null/models/detectors/fovea.py: -------------------------------------------------------------------------------- 1 | from ..builder import DETECTORS 2 | from .single_stage import SingleStageDetector 3 | 4 | 5 | @DETECTORS.register_module() 6 | class FOVEA(SingleStageDetector): 7 | """Implementation of `FoveaBox `_""" 8 | 9 | def __init__(self, 10 | backbone, 11 | neck, 12 | bbox_head, 13 | train_cfg=None, 14 | test_cfg=None, 15 | pretrained=None): 16 | super(FOVEA, self).__init__(backbone, neck, bbox_head, train_cfg, 17 | test_cfg, pretrained) 18 | -------------------------------------------------------------------------------- /annotator/uniformer/mmdet_null/models/detectors/fsaf.py: -------------------------------------------------------------------------------- 1 | from ..builder import DETECTORS 2 | from .single_stage import SingleStageDetector 3 | 4 | 5 | @DETECTORS.register_module() 6 | class FSAF(SingleStageDetector): 7 | """Implementation of `FSAF `_""" 8 | 9 | def __init__(self, 10 | backbone, 11 | neck, 12 | bbox_head, 13 | train_cfg=None, 14 | test_cfg=None, 15 | pretrained=None): 16 | super(FSAF, self).__init__(backbone, neck, bbox_head, train_cfg, 17 | test_cfg, pretrained) 18 | -------------------------------------------------------------------------------- /annotator/uniformer/mmdet_null/models/detectors/gfl.py: -------------------------------------------------------------------------------- 1 | from ..builder import DETECTORS 2 | from .single_stage import SingleStageDetector 3 | 4 | 5 | @DETECTORS.register_module() 6 | class GFL(SingleStageDetector): 7 | 8 | def __init__(self, 9 | backbone, 10 | neck, 11 | bbox_head, 12 | train_cfg=None, 13 | test_cfg=None, 14 | pretrained=None): 15 | super(GFL, self).__init__(backbone, neck, bbox_head, train_cfg, 16 | test_cfg, pretrained) 17 | -------------------------------------------------------------------------------- /annotator/uniformer/mmdet_null/models/detectors/grid_rcnn.py: -------------------------------------------------------------------------------- 1 | from ..builder import DETECTORS 2 | from .two_stage import TwoStageDetector 3 | 4 | 5 | @DETECTORS.register_module() 6 | class GridRCNN(TwoStageDetector): 7 | """Grid R-CNN. 8 | 9 | This detector is the implementation of: 10 | - Grid R-CNN (https://arxiv.org/abs/1811.12030) 11 | - Grid R-CNN Plus: Faster and Better (https://arxiv.org/abs/1906.05688) 12 | """ 13 | 14 | def __init__(self, 15 | backbone, 16 | rpn_head, 17 | roi_head, 18 | train_cfg, 19 | test_cfg, 20 | neck=None, 21 | pretrained=None): 22 | super(GridRCNN, self).__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 | pretrained=pretrained) 30 | -------------------------------------------------------------------------------- /annotator/uniformer/mmdet_null/models/detectors/htc.py: -------------------------------------------------------------------------------- 1 | from ..builder import DETECTORS 2 | from .cascade_rcnn import CascadeRCNN 3 | 4 | 5 | @DETECTORS.register_module() 6 | class HybridTaskCascade(CascadeRCNN): 7 | """Implementation of `HTC `_""" 8 | 9 | def __init__(self, **kwargs): 10 | super(HybridTaskCascade, self).__init__(**kwargs) 11 | 12 | @property 13 | def with_semantic(self): 14 | """bool: whether the detector has a semantic head""" 15 | return self.roi_head.with_semantic 16 | -------------------------------------------------------------------------------- /annotator/uniformer/mmdet_null/models/detectors/mask_rcnn.py: -------------------------------------------------------------------------------- 1 | from ..builder import DETECTORS 2 | from .two_stage import TwoStageDetector 3 | 4 | 5 | @DETECTORS.register_module() 6 | class MaskRCNN(TwoStageDetector): 7 | """Implementation of `Mask R-CNN `_""" 8 | 9 | def __init__(self, 10 | backbone, 11 | rpn_head, 12 | roi_head, 13 | train_cfg, 14 | test_cfg, 15 | neck=None, 16 | pretrained=None): 17 | super(MaskRCNN, self).__init__( 18 | backbone=backbone, 19 | neck=neck, 20 | rpn_head=rpn_head, 21 | roi_head=roi_head, 22 | train_cfg=train_cfg, 23 | test_cfg=test_cfg, 24 | pretrained=pretrained) 25 | -------------------------------------------------------------------------------- /annotator/uniformer/mmdet_null/models/detectors/mask_scoring_rcnn.py: -------------------------------------------------------------------------------- 1 | from ..builder import DETECTORS 2 | from .two_stage import TwoStageDetector 3 | 4 | 5 | @DETECTORS.register_module() 6 | class MaskScoringRCNN(TwoStageDetector): 7 | """Mask Scoring RCNN. 8 | 9 | https://arxiv.org/abs/1903.00241 10 | """ 11 | 12 | def __init__(self, 13 | backbone, 14 | rpn_head, 15 | roi_head, 16 | train_cfg, 17 | test_cfg, 18 | neck=None, 19 | pretrained=None): 20 | super(MaskScoringRCNN, self).__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 | pretrained=pretrained) 28 | -------------------------------------------------------------------------------- /annotator/uniformer/mmdet_null/models/detectors/nasfcos.py: -------------------------------------------------------------------------------- 1 | from ..builder import DETECTORS 2 | from .single_stage import SingleStageDetector 3 | 4 | 5 | @DETECTORS.register_module() 6 | class NASFCOS(SingleStageDetector): 7 | """NAS-FCOS: Fast Neural Architecture Search for Object Detection. 8 | 9 | https://arxiv.org/abs/1906.0442 10 | """ 11 | 12 | def __init__(self, 13 | backbone, 14 | neck, 15 | bbox_head, 16 | train_cfg=None, 17 | test_cfg=None, 18 | pretrained=None): 19 | super(NASFCOS, self).__init__(backbone, neck, bbox_head, train_cfg, 20 | test_cfg, pretrained) 21 | -------------------------------------------------------------------------------- /annotator/uniformer/mmdet_null/models/detectors/paa.py: -------------------------------------------------------------------------------- 1 | from ..builder import DETECTORS 2 | from .single_stage import SingleStageDetector 3 | 4 | 5 | @DETECTORS.register_module() 6 | class PAA(SingleStageDetector): 7 | """Implementation of `PAA `_.""" 8 | 9 | def __init__(self, 10 | backbone, 11 | neck, 12 | bbox_head, 13 | train_cfg=None, 14 | test_cfg=None, 15 | pretrained=None): 16 | super(PAA, self).__init__(backbone, neck, bbox_head, train_cfg, 17 | test_cfg, pretrained) 18 | -------------------------------------------------------------------------------- /annotator/uniformer/mmdet_null/models/detectors/point_rend.py: -------------------------------------------------------------------------------- 1 | from ..builder import DETECTORS 2 | from .two_stage import TwoStageDetector 3 | 4 | 5 | @DETECTORS.register_module() 6 | class PointRend(TwoStageDetector): 7 | """PointRend: Image Segmentation as Rendering 8 | 9 | This detector is the implementation of 10 | `PointRend `_. 11 | 12 | """ 13 | 14 | def __init__(self, 15 | backbone, 16 | rpn_head, 17 | roi_head, 18 | train_cfg, 19 | test_cfg, 20 | neck=None, 21 | pretrained=None): 22 | super(PointRend, self).__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 | pretrained=pretrained) 30 | -------------------------------------------------------------------------------- /annotator/uniformer/mmdet_null/models/detectors/reppoints_detector.py: -------------------------------------------------------------------------------- 1 | from ..builder import DETECTORS 2 | from .single_stage import SingleStageDetector 3 | 4 | 5 | @DETECTORS.register_module() 6 | class RepPointsDetector(SingleStageDetector): 7 | """RepPoints: Point Set Representation for Object Detection. 8 | 9 | This detector is the implementation of: 10 | - RepPoints detector (https://arxiv.org/pdf/1904.11490) 11 | """ 12 | 13 | def __init__(self, 14 | backbone, 15 | neck, 16 | bbox_head, 17 | train_cfg=None, 18 | test_cfg=None, 19 | pretrained=None): 20 | super(RepPointsDetector, 21 | self).__init__(backbone, neck, bbox_head, train_cfg, test_cfg, 22 | pretrained) 23 | -------------------------------------------------------------------------------- /annotator/uniformer/mmdet_null/models/detectors/retinanet.py: -------------------------------------------------------------------------------- 1 | from ..builder import DETECTORS 2 | from .single_stage import SingleStageDetector 3 | 4 | 5 | @DETECTORS.register_module() 6 | class RetinaNet(SingleStageDetector): 7 | """Implementation of `RetinaNet `_""" 8 | 9 | def __init__(self, 10 | backbone, 11 | neck, 12 | bbox_head, 13 | train_cfg=None, 14 | test_cfg=None, 15 | pretrained=None): 16 | super(RetinaNet, self).__init__(backbone, neck, bbox_head, train_cfg, 17 | test_cfg, pretrained) 18 | -------------------------------------------------------------------------------- /annotator/uniformer/mmdet_null/models/detectors/scnet.py: -------------------------------------------------------------------------------- 1 | from ..builder import DETECTORS 2 | from .cascade_rcnn import CascadeRCNN 3 | 4 | 5 | @DETECTORS.register_module() 6 | class SCNet(CascadeRCNN): 7 | """Implementation of `SCNet `_""" 8 | 9 | def __init__(self, **kwargs): 10 | super(SCNet, self).__init__(**kwargs) 11 | -------------------------------------------------------------------------------- /annotator/uniformer/mmdet_null/models/detectors/vfnet.py: -------------------------------------------------------------------------------- 1 | from ..builder import DETECTORS 2 | from .single_stage import SingleStageDetector 3 | 4 | 5 | @DETECTORS.register_module() 6 | class VFNet(SingleStageDetector): 7 | """Implementation of `VarifocalNet 8 | (VFNet).`_""" 9 | 10 | def __init__(self, 11 | backbone, 12 | neck, 13 | bbox_head, 14 | train_cfg=None, 15 | test_cfg=None, 16 | pretrained=None): 17 | super(VFNet, self).__init__(backbone, neck, bbox_head, train_cfg, 18 | test_cfg, pretrained) 19 | -------------------------------------------------------------------------------- /annotator/uniformer/mmdet_null/models/detectors/yolo.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2019 Western Digital Corporation or its affiliates. 2 | 3 | from ..builder import DETECTORS 4 | from .single_stage import SingleStageDetector 5 | 6 | 7 | @DETECTORS.register_module() 8 | class YOLOV3(SingleStageDetector): 9 | 10 | def __init__(self, 11 | backbone, 12 | neck, 13 | bbox_head, 14 | train_cfg=None, 15 | test_cfg=None, 16 | pretrained=None): 17 | super(YOLOV3, self).__init__(backbone, neck, bbox_head, train_cfg, 18 | test_cfg, pretrained) 19 | -------------------------------------------------------------------------------- /annotator/uniformer/mmdet_null/models/necks/__init__.py: -------------------------------------------------------------------------------- 1 | from .bfp import BFP 2 | from .channel_mapper import ChannelMapper 3 | from .fpg import FPG 4 | from .fpn import FPN 5 | from .fpn_carafe import FPN_CARAFE 6 | from .hrfpn import HRFPN 7 | from .nas_fpn import NASFPN 8 | from .nasfcos_fpn import NASFCOS_FPN 9 | from .pafpn import PAFPN 10 | from .rfp import RFP 11 | from .yolo_neck import YOLOV3Neck 12 | 13 | __all__ = [ 14 | 'FPN', 'BFP', 'ChannelMapper', 'HRFPN', 'NASFPN', 'FPN_CARAFE', 'PAFPN', 15 | 'NASFCOS_FPN', 'RFP', 'YOLOV3Neck', 'FPG' 16 | ] 17 | -------------------------------------------------------------------------------- /annotator/uniformer/mmdet_null/models/roi_heads/bbox_heads/__init__.py: -------------------------------------------------------------------------------- 1 | from .bbox_head import BBoxHead 2 | from .convfc_bbox_head import (ConvFCBBoxHead, Shared2FCBBoxHead, 3 | Shared4Conv1FCBBoxHead) 4 | from .dii_head import DIIHead 5 | from .double_bbox_head import DoubleConvFCBBoxHead 6 | from .sabl_head import SABLHead 7 | from .scnet_bbox_head import SCNetBBoxHead 8 | 9 | __all__ = [ 10 | 'BBoxHead', 'ConvFCBBoxHead', 'Shared2FCBBoxHead', 11 | 'Shared4Conv1FCBBoxHead', 'DoubleConvFCBBoxHead', 'SABLHead', 'DIIHead', 12 | 'SCNetBBoxHead' 13 | ] 14 | -------------------------------------------------------------------------------- /annotator/uniformer/mmdet_null/models/roi_heads/mask_heads/__init__.py: -------------------------------------------------------------------------------- 1 | from .coarse_mask_head import CoarseMaskHead 2 | from .fcn_mask_head import FCNMaskHead 3 | from .feature_relay_head import FeatureRelayHead 4 | from .fused_semantic_head import FusedSemanticHead 5 | from .global_context_head import GlobalContextHead 6 | from .grid_head import GridHead 7 | from .htc_mask_head import HTCMaskHead 8 | from .mask_point_head import MaskPointHead 9 | from .maskiou_head import MaskIoUHead 10 | from .scnet_mask_head import SCNetMaskHead 11 | from .scnet_semantic_head import SCNetSemanticHead 12 | 13 | __all__ = [ 14 | 'FCNMaskHead', 'HTCMaskHead', 'FusedSemanticHead', 'GridHead', 15 | 'MaskIoUHead', 'CoarseMaskHead', 'MaskPointHead', 'SCNetMaskHead', 16 | 'SCNetSemanticHead', 'GlobalContextHead', 'FeatureRelayHead' 17 | ] 18 | -------------------------------------------------------------------------------- /annotator/uniformer/mmdet_null/models/roi_heads/mask_heads/scnet_mask_head.py: -------------------------------------------------------------------------------- 1 | from mmdet.models.builder import HEADS 2 | from mmdet.models.utils import ResLayer, SimplifiedBasicBlock 3 | from .fcn_mask_head import FCNMaskHead 4 | 5 | 6 | @HEADS.register_module() 7 | class SCNetMaskHead(FCNMaskHead): 8 | """Mask head for `SCNet `_. 9 | 10 | Args: 11 | conv_to_res (bool, optional): if True, change the conv layers to 12 | ``SimplifiedBasicBlock``. 13 | """ 14 | 15 | def __init__(self, conv_to_res=True, **kwargs): 16 | super(SCNetMaskHead, self).__init__(**kwargs) 17 | self.conv_to_res = conv_to_res 18 | if conv_to_res: 19 | assert self.conv_kernel_size == 3 20 | self.num_res_blocks = self.num_convs // 2 21 | self.convs = ResLayer( 22 | SimplifiedBasicBlock, 23 | self.in_channels, 24 | self.conv_out_channels, 25 | self.num_res_blocks, 26 | conv_cfg=self.conv_cfg, 27 | norm_cfg=self.norm_cfg) 28 | -------------------------------------------------------------------------------- /annotator/uniformer/mmdet_null/models/roi_heads/roi_extractors/__init__.py: -------------------------------------------------------------------------------- 1 | from .generic_roi_extractor import GenericRoIExtractor 2 | from .single_level_roi_extractor import SingleRoIExtractor 3 | 4 | __all__ = [ 5 | 'SingleRoIExtractor', 6 | 'GenericRoIExtractor', 7 | ] 8 | -------------------------------------------------------------------------------- /annotator/uniformer/mmdet_null/models/roi_heads/shared_heads/__init__.py: -------------------------------------------------------------------------------- 1 | from .res_layer import ResLayer 2 | 3 | __all__ = ['ResLayer'] 4 | -------------------------------------------------------------------------------- /annotator/uniformer/mmdet_null/models/utils/__init__.py: -------------------------------------------------------------------------------- 1 | from .builder import build_positional_encoding, build_transformer 2 | from .gaussian_target import gaussian_radius, gen_gaussian_target 3 | from .positional_encoding import (LearnedPositionalEncoding, 4 | SinePositionalEncoding) 5 | from .res_layer import ResLayer, SimplifiedBasicBlock 6 | from .transformer import (FFN, DynamicConv, MultiheadAttention, Transformer, 7 | TransformerDecoder, TransformerDecoderLayer, 8 | TransformerEncoder, TransformerEncoderLayer) 9 | 10 | __all__ = [ 11 | 'ResLayer', 'gaussian_radius', 'gen_gaussian_target', 'MultiheadAttention', 12 | 'FFN', 'TransformerEncoderLayer', 'TransformerEncoder', 13 | 'TransformerDecoderLayer', 'TransformerDecoder', 'Transformer', 14 | 'build_transformer', 'build_positional_encoding', 'SinePositionalEncoding', 15 | 'LearnedPositionalEncoding', 'DynamicConv', 'SimplifiedBasicBlock' 16 | ] 17 | -------------------------------------------------------------------------------- /annotator/uniformer/mmdet_null/models/utils/builder.py: -------------------------------------------------------------------------------- 1 | from mmcv.utils import Registry, build_from_cfg 2 | 3 | TRANSFORMER = Registry('Transformer') 4 | POSITIONAL_ENCODING = Registry('Position encoding') 5 | 6 | 7 | def build_transformer(cfg, default_args=None): 8 | """Builder for Transformer.""" 9 | return build_from_cfg(cfg, TRANSFORMER, default_args) 10 | 11 | 12 | def build_positional_encoding(cfg, default_args=None): 13 | """Builder for Position Encoding.""" 14 | return build_from_cfg(cfg, POSITIONAL_ENCODING, default_args) 15 | -------------------------------------------------------------------------------- /annotator/uniformer/mmdet_null/utils/__init__.py: -------------------------------------------------------------------------------- 1 | from .collect_env import collect_env 2 | from .logger import get_root_logger 3 | from .optimizer import DistOptimizerHook 4 | 5 | __all__ = ['get_root_logger', 'collect_env', 'DistOptimizerHook'] 6 | -------------------------------------------------------------------------------- /annotator/uniformer/mmdet_null/utils/collect_env.py: -------------------------------------------------------------------------------- 1 | from annotator.uniformer.mmcv.utils import collect_env as collect_base_env 2 | from annotator.uniformer.mmcv.utils import get_git_hash 3 | 4 | import annotator.uniformer.mmdet 5 | 6 | 7 | def collect_env(): 8 | """Collect the information of the running environments.""" 9 | env_info = collect_base_env() 10 | env_info['MMDetection'] = mmdet.__version__ + '+' + get_git_hash()[:7] 11 | return env_info 12 | 13 | 14 | if __name__ == '__main__': 15 | for name, val in collect_env().items(): 16 | print(f'{name}: {val}') 17 | -------------------------------------------------------------------------------- /annotator/uniformer/mmdet_null/utils/logger.py: -------------------------------------------------------------------------------- 1 | import logging 2 | 3 | from annotator.uniformer.mmcv.utils import get_logger 4 | 5 | 6 | def get_root_logger(log_file=None, log_level=logging.INFO): 7 | """Get root logger. 8 | 9 | Args: 10 | log_file (str, optional): File path of log. Defaults to None. 11 | log_level (int, optional): The level of logger. 12 | Defaults to logging.INFO. 13 | 14 | Returns: 15 | :obj:`logging.Logger`: The obtained logger 16 | """ 17 | logger = get_logger(name='mmdet', log_file=log_file, log_level=log_level) 18 | 19 | return logger 20 | -------------------------------------------------------------------------------- /annotator/uniformer/mmdet_null/version.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) Open-MMLab. All rights reserved. 2 | 3 | __version__ = '2.11.0' 4 | short_version = __version__ 5 | 6 | 7 | def parse_version_info(version_str): 8 | version_info = [] 9 | for x in version_str.split('.'): 10 | if x.isdigit(): 11 | version_info.append(int(x)) 12 | elif x.find('rc') != -1: 13 | patch_version = x.split('rc') 14 | version_info.append(int(patch_version[0])) 15 | version_info.append(f'rc{patch_version[1]}') 16 | return tuple(version_info) 17 | 18 | 19 | version_info = parse_version_info(__version__) 20 | -------------------------------------------------------------------------------- /annotator/uniformer/mmseg/apis/__init__.py: -------------------------------------------------------------------------------- 1 | from .inference import inference_segmentor, init_segmentor, show_result_pyplot 2 | from .test import multi_gpu_test, single_gpu_test 3 | from .train import get_root_logger, set_random_seed, train_segmentor 4 | 5 | __all__ = [ 6 | 'get_root_logger', 'set_random_seed', 'train_segmentor', 'init_segmentor', 7 | 'inference_segmentor', 'multi_gpu_test', 'single_gpu_test', 8 | 'show_result_pyplot' 9 | ] 10 | -------------------------------------------------------------------------------- /annotator/uniformer/mmseg/core/__init__.py: -------------------------------------------------------------------------------- 1 | from .evaluation import * # noqa: F401, F403 2 | from .seg import * # noqa: F401, F403 3 | from .utils import * # noqa: F401, F403 4 | -------------------------------------------------------------------------------- /annotator/uniformer/mmseg/core/evaluation/__init__.py: -------------------------------------------------------------------------------- 1 | from .class_names import get_classes, get_palette 2 | from .eval_hooks import DistEvalHook, EvalHook 3 | from .metrics import eval_metrics, mean_dice, mean_fscore, mean_iou 4 | 5 | __all__ = [ 6 | 'EvalHook', 'DistEvalHook', 'mean_dice', 'mean_iou', 'mean_fscore', 7 | 'eval_metrics', 'get_classes', 'get_palette' 8 | ] 9 | -------------------------------------------------------------------------------- /annotator/uniformer/mmseg/core/seg/__init__.py: -------------------------------------------------------------------------------- 1 | from .builder import build_pixel_sampler 2 | from .sampler import BasePixelSampler, OHEMPixelSampler 3 | 4 | __all__ = ['build_pixel_sampler', 'BasePixelSampler', 'OHEMPixelSampler'] 5 | -------------------------------------------------------------------------------- /annotator/uniformer/mmseg/core/seg/builder.py: -------------------------------------------------------------------------------- 1 | from annotator.uniformer.mmcv.utils import Registry, build_from_cfg 2 | 3 | PIXEL_SAMPLERS = Registry('pixel sampler') 4 | 5 | 6 | def build_pixel_sampler(cfg, **default_args): 7 | """Build pixel sampler for segmentation map.""" 8 | return build_from_cfg(cfg, PIXEL_SAMPLERS, default_args) 9 | -------------------------------------------------------------------------------- /annotator/uniformer/mmseg/core/seg/sampler/__init__.py: -------------------------------------------------------------------------------- 1 | from .base_pixel_sampler import BasePixelSampler 2 | from .ohem_pixel_sampler import OHEMPixelSampler 3 | 4 | __all__ = ['BasePixelSampler', 'OHEMPixelSampler'] 5 | -------------------------------------------------------------------------------- /annotator/uniformer/mmseg/core/seg/sampler/base_pixel_sampler.py: -------------------------------------------------------------------------------- 1 | from abc import ABCMeta, abstractmethod 2 | 3 | 4 | class BasePixelSampler(metaclass=ABCMeta): 5 | """Base class of pixel sampler.""" 6 | 7 | def __init__(self, **kwargs): 8 | pass 9 | 10 | @abstractmethod 11 | def sample(self, seg_logit, seg_label): 12 | """Placeholder for sample function.""" 13 | -------------------------------------------------------------------------------- /annotator/uniformer/mmseg/core/utils/__init__.py: -------------------------------------------------------------------------------- 1 | from .misc import add_prefix 2 | 3 | __all__ = ['add_prefix'] 4 | -------------------------------------------------------------------------------- /annotator/uniformer/mmseg/core/utils/misc.py: -------------------------------------------------------------------------------- 1 | def add_prefix(inputs, prefix): 2 | """Add prefix for dict. 3 | 4 | Args: 5 | inputs (dict): The input dict with str keys. 6 | prefix (str): The prefix to add. 7 | 8 | Returns: 9 | 10 | dict: The dict with keys updated with ``prefix``. 11 | """ 12 | 13 | outputs = dict() 14 | for name, value in inputs.items(): 15 | outputs[f'{prefix}.{name}'] = value 16 | 17 | return outputs 18 | -------------------------------------------------------------------------------- /annotator/uniformer/mmseg/datasets/__init__.py: -------------------------------------------------------------------------------- 1 | from .ade import ADE20KDataset 2 | from .builder import DATASETS, PIPELINES, build_dataloader, build_dataset 3 | from .chase_db1 import ChaseDB1Dataset 4 | from .cityscapes import CityscapesDataset 5 | from .custom import CustomDataset 6 | from .dataset_wrappers import ConcatDataset, RepeatDataset 7 | from .drive import DRIVEDataset 8 | from .hrf import HRFDataset 9 | from .pascal_context import PascalContextDataset, PascalContextDataset59 10 | from .stare import STAREDataset 11 | from .voc import PascalVOCDataset 12 | 13 | __all__ = [ 14 | 'CustomDataset', 'build_dataloader', 'ConcatDataset', 'RepeatDataset', 15 | 'DATASETS', 'build_dataset', 'PIPELINES', 'CityscapesDataset', 16 | 'PascalVOCDataset', 'ADE20KDataset', 'PascalContextDataset', 17 | 'PascalContextDataset59', 'ChaseDB1Dataset', 'DRIVEDataset', 'HRFDataset', 18 | 'STAREDataset' 19 | ] 20 | -------------------------------------------------------------------------------- /annotator/uniformer/mmseg/datasets/chase_db1.py: -------------------------------------------------------------------------------- 1 | import os.path as osp 2 | 3 | from .builder import DATASETS 4 | from .custom import CustomDataset 5 | 6 | 7 | @DATASETS.register_module() 8 | class ChaseDB1Dataset(CustomDataset): 9 | """Chase_db1 dataset. 10 | 11 | In segmentation map annotation for Chase_db1, 0 stands for background, 12 | which is included in 2 categories. ``reduce_zero_label`` is fixed to False. 13 | The ``img_suffix`` is fixed to '.png' and ``seg_map_suffix`` is fixed to 14 | '_1stHO.png'. 15 | """ 16 | 17 | CLASSES = ('background', 'vessel') 18 | 19 | PALETTE = [[120, 120, 120], [6, 230, 230]] 20 | 21 | def __init__(self, **kwargs): 22 | super(ChaseDB1Dataset, self).__init__( 23 | img_suffix='.png', 24 | seg_map_suffix='_1stHO.png', 25 | reduce_zero_label=False, 26 | **kwargs) 27 | assert osp.exists(self.img_dir) 28 | -------------------------------------------------------------------------------- /annotator/uniformer/mmseg/datasets/drive.py: -------------------------------------------------------------------------------- 1 | import os.path as osp 2 | 3 | from .builder import DATASETS 4 | from .custom import CustomDataset 5 | 6 | 7 | @DATASETS.register_module() 8 | class DRIVEDataset(CustomDataset): 9 | """DRIVE dataset. 10 | 11 | In segmentation map annotation for DRIVE, 0 stands for background, which is 12 | included in 2 categories. ``reduce_zero_label`` is fixed to False. The 13 | ``img_suffix`` is fixed to '.png' and ``seg_map_suffix`` is fixed to 14 | '_manual1.png'. 15 | """ 16 | 17 | CLASSES = ('background', 'vessel') 18 | 19 | PALETTE = [[120, 120, 120], [6, 230, 230]] 20 | 21 | def __init__(self, **kwargs): 22 | super(DRIVEDataset, self).__init__( 23 | img_suffix='.png', 24 | seg_map_suffix='_manual1.png', 25 | reduce_zero_label=False, 26 | **kwargs) 27 | assert osp.exists(self.img_dir) 28 | -------------------------------------------------------------------------------- /annotator/uniformer/mmseg/datasets/hrf.py: -------------------------------------------------------------------------------- 1 | import os.path as osp 2 | 3 | from .builder import DATASETS 4 | from .custom import CustomDataset 5 | 6 | 7 | @DATASETS.register_module() 8 | class HRFDataset(CustomDataset): 9 | """HRF dataset. 10 | 11 | In segmentation map annotation for HRF, 0 stands for background, which is 12 | included in 2 categories. ``reduce_zero_label`` is fixed to False. The 13 | ``img_suffix`` is fixed to '.png' and ``seg_map_suffix`` is fixed to 14 | '.png'. 15 | """ 16 | 17 | CLASSES = ('background', 'vessel') 18 | 19 | PALETTE = [[120, 120, 120], [6, 230, 230]] 20 | 21 | def __init__(self, **kwargs): 22 | super(HRFDataset, self).__init__( 23 | img_suffix='.png', 24 | seg_map_suffix='.png', 25 | reduce_zero_label=False, 26 | **kwargs) 27 | assert osp.exists(self.img_dir) 28 | -------------------------------------------------------------------------------- /annotator/uniformer/mmseg/datasets/pipelines/__init__.py: -------------------------------------------------------------------------------- 1 | from .compose import Compose 2 | from .formating import (Collect, ImageToTensor, ToDataContainer, ToTensor, 3 | Transpose, to_tensor) 4 | from .loading import LoadAnnotations, LoadImageFromFile 5 | from .test_time_aug import MultiScaleFlipAug 6 | from .transforms import (CLAHE, AdjustGamma, Normalize, Pad, 7 | PhotoMetricDistortion, RandomCrop, RandomFlip, 8 | RandomRotate, Rerange, Resize, RGB2Gray, SegRescale) 9 | 10 | __all__ = [ 11 | 'Compose', 'to_tensor', 'ToTensor', 'ImageToTensor', 'ToDataContainer', 12 | 'Transpose', 'Collect', 'LoadAnnotations', 'LoadImageFromFile', 13 | 'MultiScaleFlipAug', 'Resize', 'RandomFlip', 'Pad', 'RandomCrop', 14 | 'Normalize', 'SegRescale', 'PhotoMetricDistortion', 'RandomRotate', 15 | 'AdjustGamma', 'CLAHE', 'Rerange', 'RGB2Gray' 16 | ] 17 | -------------------------------------------------------------------------------- /annotator/uniformer/mmseg/datasets/stare.py: -------------------------------------------------------------------------------- 1 | import os.path as osp 2 | 3 | from .builder import DATASETS 4 | from .custom import CustomDataset 5 | 6 | 7 | @DATASETS.register_module() 8 | class STAREDataset(CustomDataset): 9 | """STARE dataset. 10 | 11 | In segmentation map annotation for STARE, 0 stands for background, which is 12 | included in 2 categories. ``reduce_zero_label`` is fixed to False. The 13 | ``img_suffix`` is fixed to '.png' and ``seg_map_suffix`` is fixed to 14 | '.ah.png'. 15 | """ 16 | 17 | CLASSES = ('background', 'vessel') 18 | 19 | PALETTE = [[120, 120, 120], [6, 230, 230]] 20 | 21 | def __init__(self, **kwargs): 22 | super(STAREDataset, self).__init__( 23 | img_suffix='.png', 24 | seg_map_suffix='.ah.png', 25 | reduce_zero_label=False, 26 | **kwargs) 27 | assert osp.exists(self.img_dir) 28 | -------------------------------------------------------------------------------- /annotator/uniformer/mmseg/models/__init__.py: -------------------------------------------------------------------------------- 1 | from .backbones import * # noqa: F401,F403 2 | from .builder import (BACKBONES, HEADS, LOSSES, SEGMENTORS, build_backbone, 3 | build_head, build_loss, build_segmentor) 4 | from .decode_heads import * # noqa: F401,F403 5 | from .losses import * # noqa: F401,F403 6 | from .necks import * # noqa: F401,F403 7 | from .segmentors import * # noqa: F401,F403 8 | 9 | __all__ = [ 10 | 'BACKBONES', 'HEADS', 'LOSSES', 'SEGMENTORS', 'build_backbone', 11 | 'build_head', 'build_loss', 'build_segmentor' 12 | ] 13 | -------------------------------------------------------------------------------- /annotator/uniformer/mmseg/models/backbones/__init__.py: -------------------------------------------------------------------------------- 1 | from .cgnet import CGNet 2 | # from .fast_scnn import FastSCNN 3 | from .hrnet import HRNet 4 | from .mobilenet_v2 import MobileNetV2 5 | from .mobilenet_v3 import MobileNetV3 6 | from .resnest import ResNeSt 7 | from .resnet import ResNet, ResNetV1c, ResNetV1d 8 | from .resnext import ResNeXt 9 | from .unet import UNet 10 | from .vit import VisionTransformer 11 | from .uniformer import UniFormer 12 | 13 | __all__ = [ 14 | 'ResNet', 'ResNetV1c', 'ResNetV1d', 'ResNeXt', 'HRNet', 15 | 'ResNeSt', 'MobileNetV2', 'UNet', 'CGNet', 'MobileNetV3', 16 | 'VisionTransformer', 'UniFormer' 17 | ] 18 | -------------------------------------------------------------------------------- /annotator/uniformer/mmseg/models/losses/__init__.py: -------------------------------------------------------------------------------- 1 | from .accuracy import Accuracy, accuracy 2 | from .cross_entropy_loss import (CrossEntropyLoss, binary_cross_entropy, 3 | cross_entropy, mask_cross_entropy) 4 | from .dice_loss import DiceLoss 5 | from .lovasz_loss import LovaszLoss 6 | from .utils import reduce_loss, weight_reduce_loss, weighted_loss 7 | 8 | __all__ = [ 9 | 'accuracy', 'Accuracy', 'cross_entropy', 'binary_cross_entropy', 10 | 'mask_cross_entropy', 'CrossEntropyLoss', 'reduce_loss', 11 | 'weight_reduce_loss', 'weighted_loss', 'LovaszLoss', 'DiceLoss' 12 | ] 13 | -------------------------------------------------------------------------------- /annotator/uniformer/mmseg/models/necks/__init__.py: -------------------------------------------------------------------------------- 1 | from .fpn import FPN 2 | from .multilevel_neck import MultiLevelNeck 3 | 4 | __all__ = ['FPN', 'MultiLevelNeck'] 5 | -------------------------------------------------------------------------------- /annotator/uniformer/mmseg/models/segmentors/__init__.py: -------------------------------------------------------------------------------- 1 | from .base import BaseSegmentor 2 | from .cascade_encoder_decoder import CascadeEncoderDecoder 3 | from .encoder_decoder import EncoderDecoder 4 | 5 | __all__ = ['BaseSegmentor', 'EncoderDecoder', 'CascadeEncoderDecoder'] 6 | -------------------------------------------------------------------------------- /annotator/uniformer/mmseg/models/utils/__init__.py: -------------------------------------------------------------------------------- 1 | from .drop import DropPath 2 | from .inverted_residual import InvertedResidual, InvertedResidualV3 3 | from .make_divisible import make_divisible 4 | from .res_layer import ResLayer 5 | from .se_layer import SELayer 6 | from .self_attention_block import SelfAttentionBlock 7 | from .up_conv_block import UpConvBlock 8 | from .weight_init import trunc_normal_ 9 | 10 | __all__ = [ 11 | 'ResLayer', 'SelfAttentionBlock', 'make_divisible', 'InvertedResidual', 12 | 'UpConvBlock', 'InvertedResidualV3', 'SELayer', 'DropPath', 'trunc_normal_' 13 | ] 14 | -------------------------------------------------------------------------------- /annotator/uniformer/mmseg/ops/__init__.py: -------------------------------------------------------------------------------- 1 | from .encoding import Encoding 2 | from .wrappers import Upsample, resize 3 | 4 | __all__ = ['Upsample', 'resize', 'Encoding'] 5 | -------------------------------------------------------------------------------- /annotator/uniformer/mmseg/utils/__init__.py: -------------------------------------------------------------------------------- 1 | from .collect_env import collect_env 2 | from .logger import get_root_logger 3 | 4 | __all__ = ['get_root_logger', 'collect_env'] 5 | -------------------------------------------------------------------------------- /annotator/uniformer/mmseg/utils/collect_env.py: -------------------------------------------------------------------------------- 1 | from annotator.uniformer.mmcv.utils import collect_env as collect_base_env 2 | from annotator.uniformer.mmcv.utils import get_git_hash 3 | 4 | import annotator.uniformer.mmseg as mmseg 5 | 6 | 7 | def collect_env(): 8 | """Collect the information of the running environments.""" 9 | env_info = collect_base_env() 10 | env_info['MMSegmentation'] = f'{mmseg.__version__}+{get_git_hash()[:7]}' 11 | 12 | return env_info 13 | 14 | 15 | if __name__ == '__main__': 16 | for name, val in collect_env().items(): 17 | print('{}: {}'.format(name, val)) 18 | -------------------------------------------------------------------------------- /annotator/uniformer/mmseg/utils/logger.py: -------------------------------------------------------------------------------- 1 | import logging 2 | 3 | from annotator.uniformer.mmcv.utils import get_logger 4 | 5 | 6 | def get_root_logger(log_file=None, log_level=logging.INFO): 7 | """Get the root logger. 8 | 9 | The logger will be initialized if it has not been initialized. By default a 10 | StreamHandler will be added. If `log_file` is specified, a FileHandler will 11 | also be added. The name of the root logger is the top-level package name, 12 | e.g., "mmseg". 13 | 14 | Args: 15 | log_file (str | None): The log filename. If specified, a FileHandler 16 | will be added to the root logger. 17 | log_level (int): The root logger level. Note that only the process of 18 | rank 0 is affected, while other processes will set the level to 19 | "Error" and be silent most of the time. 20 | 21 | Returns: 22 | logging.Logger: The root logger. 23 | """ 24 | 25 | logger = get_logger(name='mmseg', log_file=log_file, log_level=log_level) 26 | 27 | return logger 28 | -------------------------------------------------------------------------------- /annotator/uniformer_base/configs/_base_/datasets/pascal_voc12_aug.py: -------------------------------------------------------------------------------- 1 | _base_ = './pascal_voc12.py' 2 | # dataset settings 3 | data = dict( 4 | train=dict( 5 | ann_dir=['SegmentationClass', 'SegmentationClassAug'], 6 | split=[ 7 | 'ImageSets/Segmentation/train.txt', 8 | 'ImageSets/Segmentation/aug.txt' 9 | ])) 10 | -------------------------------------------------------------------------------- /annotator/uniformer_base/configs/_base_/default_runtime.py: -------------------------------------------------------------------------------- 1 | # yapf:disable 2 | log_config = dict( 3 | interval=50, 4 | hooks=[ 5 | dict(type='TextLoggerHook', by_epoch=False), 6 | # dict(type='TensorboardLoggerHook') 7 | ]) 8 | # yapf:enable 9 | dist_params = dict(backend='nccl') 10 | log_level = 'INFO' 11 | load_from = None 12 | resume_from = None 13 | workflow = [('train', 1)] 14 | cudnn_benchmark = True 15 | -------------------------------------------------------------------------------- /annotator/uniformer_base/configs/_base_/models/lraspp_m-v3-d8.py: -------------------------------------------------------------------------------- 1 | # model settings 2 | norm_cfg = dict(type='SyncBN', eps=0.001, requires_grad=True) 3 | model = dict( 4 | type='EncoderDecoder', 5 | backbone=dict( 6 | type='MobileNetV3', 7 | arch='large', 8 | out_indices=(1, 3, 16), 9 | norm_cfg=norm_cfg), 10 | decode_head=dict( 11 | type='LRASPPHead', 12 | in_channels=(16, 24, 960), 13 | in_index=(0, 1, 2), 14 | channels=128, 15 | input_transform='multiple_select', 16 | dropout_ratio=0.1, 17 | num_classes=19, 18 | norm_cfg=norm_cfg, 19 | act_cfg=dict(type='ReLU'), 20 | align_corners=False, 21 | loss_decode=dict( 22 | type='CrossEntropyLoss', use_sigmoid=False, loss_weight=1.0)), 23 | # model training and testing settings 24 | train_cfg=dict(), 25 | test_cfg=dict(mode='whole')) 26 | -------------------------------------------------------------------------------- /annotator/uniformer_base/configs/_base_/schedules/schedule_160k.py: -------------------------------------------------------------------------------- 1 | ''' 2 | * Copyright (c) 2023 Salesforce, Inc. 3 | * All rights reserved. 4 | * SPDX-License-Identifier: Apache License 2.0 5 | * For full license text, see LICENSE.txt file in the repo root or http://www.apache.org/licenses/ 6 | * By Can Qin 7 | * Modified from ControlNet repo: https://github.com/lllyasviel/ControlNet 8 | * Copyright (c) 2023 Lvmin Zhang and Maneesh Agrawala 9 | * Modified from UniFormer repo: From https://github.com/Sense-X/UniFormer 10 | * Apache-2.0 license 11 | ''' 12 | # optimizer 13 | optimizer = dict(type='SGD', lr=0.01, momentum=0.9, weight_decay=0.0005) 14 | optimizer_config = dict() 15 | # learning policy 16 | lr_config = dict(policy='poly', power=0.9, min_lr=1e-4, by_epoch=False) 17 | # runtime settings 18 | runner = dict(type='IterBasedRunner', max_iters=160000) 19 | checkpoint_config = dict(by_epoch=False, interval=16000) 20 | evaluation = dict(interval=16000, metric='mIoU') 21 | -------------------------------------------------------------------------------- /annotator/uniformer_base/configs/_base_/schedules/schedule_20k.py: -------------------------------------------------------------------------------- 1 | ''' 2 | * Copyright (c) 2023 Salesforce, Inc. 3 | * All rights reserved. 4 | * SPDX-License-Identifier: Apache License 2.0 5 | * For full license text, see LICENSE.txt file in the repo root or http://www.apache.org/licenses/ 6 | * By Can Qin 7 | * Modified from ControlNet repo: https://github.com/lllyasviel/ControlNet 8 | * Copyright (c) 2023 Lvmin Zhang and Maneesh Agrawala 9 | * Modified from UniFormer repo: From https://github.com/Sense-X/UniFormer 10 | * Apache-2.0 license 11 | ''' 12 | # optimizer 13 | optimizer = dict(type='SGD', lr=0.01, momentum=0.9, weight_decay=0.0005) 14 | optimizer_config = dict() 15 | # learning policy 16 | lr_config = dict(policy='poly', power=0.9, min_lr=1e-4, by_epoch=False) 17 | # runtime settings 18 | runner = dict(type='IterBasedRunner', max_iters=20000) 19 | checkpoint_config = dict(by_epoch=False, interval=2000) 20 | evaluation = dict(interval=2000, metric='mIoU') 21 | -------------------------------------------------------------------------------- /annotator/uniformer_base/configs/_base_/schedules/schedule_40k.py: -------------------------------------------------------------------------------- 1 | ''' 2 | * Copyright (c) 2023 Salesforce, Inc. 3 | * All rights reserved. 4 | * SPDX-License-Identifier: Apache License 2.0 5 | * For full license text, see LICENSE.txt file in the repo root or http://www.apache.org/licenses/ 6 | * By Can Qin 7 | * Modified from ControlNet repo: https://github.com/lllyasviel/ControlNet 8 | * Copyright (c) 2023 Lvmin Zhang and Maneesh Agrawala 9 | * Modified from UniFormer repo: From https://github.com/Sense-X/UniFormer 10 | * Apache-2.0 license 11 | ''' 12 | # optimizer 13 | optimizer = dict(type='SGD', lr=0.01, momentum=0.9, weight_decay=0.0005) 14 | optimizer_config = dict() 15 | # learning policy 16 | lr_config = dict(policy='poly', power=0.9, min_lr=1e-4, by_epoch=False) 17 | # runtime settings 18 | runner = dict(type='IterBasedRunner', max_iters=40000) 19 | checkpoint_config = dict(by_epoch=False, interval=4000) 20 | evaluation = dict(interval=4000, metric='mIoU') 21 | -------------------------------------------------------------------------------- /annotator/uniformer_base/configs/_base_/schedules/schedule_80k.py: -------------------------------------------------------------------------------- 1 | ''' 2 | * Copyright (c) 2023 Salesforce, Inc. 3 | * All rights reserved. 4 | * SPDX-License-Identifier: Apache License 2.0 5 | * For full license text, see LICENSE.txt file in the repo root or http://www.apache.org/licenses/ 6 | * By Can Qin 7 | * Modified from ControlNet repo: https://github.com/lllyasviel/ControlNet 8 | * Copyright (c) 2023 Lvmin Zhang and Maneesh Agrawala 9 | * Modified from UniFormer repo: From https://github.com/Sense-X/UniFormer 10 | * Apache-2.0 license 11 | ''' 12 | 13 | # optimizer 14 | optimizer = dict(type='SGD', lr=0.01, momentum=0.9, weight_decay=0.0005) 15 | optimizer_config = dict() 16 | # learning policy 17 | lr_config = dict(policy='poly', power=0.9, min_lr=1e-4, by_epoch=False) 18 | # runtime settings 19 | runner = dict(type='IterBasedRunner', max_iters=80000) 20 | checkpoint_config = dict(by_epoch=False, interval=8000) 21 | evaluation = dict(interval=8000, metric='mIoU') 22 | -------------------------------------------------------------------------------- /annotator/uniformer_base/exp/upernet_global_base/run.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | work_path=$(dirname $0) 4 | PYTHONPATH="$(dirname $0)/../../":$PYTHONPATH \ 5 | python -m torch.distributed.launch --nproc_per_node=8 \ 6 | tools/train.py ${work_path}/config.py \ 7 | --launcher pytorch \ 8 | --options model.backbone.pretrained_path='your_model_path/uniformer_base_in1k.pth' \ 9 | --work-dir ${work_path}/ckpt \ 10 | 2>&1 | tee -a ${work_path}/log.txt 11 | -------------------------------------------------------------------------------- /annotator/uniformer_base/exp/upernet_global_base/test.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | work_path=$(dirname $0) 4 | PYTHONPATH="$(dirname $0)/../../":$PYTHONPATH \ 5 | python -m torch.distributed.launch --nproc_per_node=8 \ 6 | tools/test.py ${work_path}/test_config_h32.py \ 7 | ${work_path}/ckpt/latest.pth \ 8 | --launcher pytorch \ 9 | --eval mIoU \ 10 | 2>&1 | tee -a ${work_path}/log.txt 11 | -------------------------------------------------------------------------------- /annotator/uniformer_base/exp/upernet_global_small/run.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | work_path=$(dirname $0) 4 | PYTHONPATH="$(dirname $0)/../../":$PYTHONPATH \ 5 | python -m torch.distributed.launch --nproc_per_node=8 \ 6 | tools/train.py ${work_path}/config.py \ 7 | --launcher pytorch \ 8 | --options model.backbone.pretrained_path='your_model_path/uniformer_small_in1k.pth' \ 9 | --work-dir ${work_path}/ckpt \ 10 | 2>&1 | tee -a ${work_path}/log.txt 11 | -------------------------------------------------------------------------------- /annotator/uniformer_base/exp/upernet_global_small/test.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | work_path=$(dirname $0) 4 | PYTHONPATH="$(dirname $0)/../../":$PYTHONPATH \ 5 | python -m torch.distributed.launch --nproc_per_node=8 \ 6 | tools/test.py ${work_path}/test_config_h32.py \ 7 | ${work_path}/ckpt/latest.pth \ 8 | --launcher pytorch \ 9 | --eval mIoU \ 10 | 2>&1 | tee -a ${work_path}/log.txt 11 | -------------------------------------------------------------------------------- /annotator/uniformer_base/mmcv/__init__.py: -------------------------------------------------------------------------------- 1 | ''' 2 | * Copyright (c) 2023 Salesforce, Inc. 3 | * All rights reserved. 4 | * SPDX-License-Identifier: Apache License 2.0 5 | * For full license text, see LICENSE.txt file in the repo root or http://www.apache.org/licenses/ 6 | * By Can Qin 7 | * Modified from ControlNet repo: https://github.com/lllyasviel/ControlNet 8 | * Copyright (c) 2023 Lvmin Zhang and Maneesh Agrawala 9 | * Modified from MMCV repo: From https://github.com/open-mmlab/mmcv 10 | * Copyright (c) OpenMMLab. All rights reserved. 11 | ''' 12 | 13 | 14 | # flake8: noqa 15 | from .arraymisc import * 16 | from .fileio import * 17 | from .image import * 18 | from .utils import * 19 | from .version import * 20 | from .video import * 21 | from .visualization import * 22 | 23 | # The following modules are not imported to this level, so mmcv may be used 24 | # without PyTorch. 25 | # - runner 26 | # - parallel 27 | # - op 28 | -------------------------------------------------------------------------------- /annotator/uniformer_base/mmcv/arraymisc/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) OpenMMLab. All rights reserved. 2 | from .quantization import dequantize, quantize 3 | 4 | __all__ = ['quantize', 'dequantize'] 5 | -------------------------------------------------------------------------------- /annotator/uniformer_base/mmcv/cnn/bricks/hswish.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) OpenMMLab. All rights reserved. 2 | import torch.nn as nn 3 | 4 | from .registry import ACTIVATION_LAYERS 5 | 6 | 7 | @ACTIVATION_LAYERS.register_module() 8 | class HSwish(nn.Module): 9 | """Hard Swish Module. 10 | 11 | This module applies the hard swish function: 12 | 13 | .. math:: 14 | Hswish(x) = x * ReLU6(x + 3) / 6 15 | 16 | Args: 17 | inplace (bool): can optionally do the operation in-place. 18 | Default: False. 19 | 20 | Returns: 21 | Tensor: The output tensor. 22 | """ 23 | 24 | def __init__(self, inplace=False): 25 | super(HSwish, self).__init__() 26 | self.act = nn.ReLU6(inplace) 27 | 28 | def forward(self, x): 29 | return x * self.act(x + 3) / 6 30 | -------------------------------------------------------------------------------- /annotator/uniformer_base/mmcv/cnn/bricks/registry.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) OpenMMLab. All rights reserved. 2 | from annotator.uniformer.mmcv.utils import Registry 3 | 4 | CONV_LAYERS = Registry('conv layer') 5 | NORM_LAYERS = Registry('norm layer') 6 | ACTIVATION_LAYERS = Registry('activation layer') 7 | PADDING_LAYERS = Registry('padding layer') 8 | UPSAMPLE_LAYERS = Registry('upsample layer') 9 | PLUGIN_LAYERS = Registry('plugin layer') 10 | 11 | DROPOUT_LAYERS = Registry('drop out layers') 12 | POSITIONAL_ENCODING = Registry('position encoding') 13 | ATTENTION = Registry('attention') 14 | FEEDFORWARD_NETWORK = Registry('feed-forward Network') 15 | TRANSFORMER_LAYER = Registry('transformerLayer') 16 | TRANSFORMER_LAYER_SEQUENCE = Registry('transformer-layers sequence') 17 | -------------------------------------------------------------------------------- /annotator/uniformer_base/mmcv/cnn/bricks/scale.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) OpenMMLab. All rights reserved. 2 | import torch 3 | import torch.nn as nn 4 | 5 | 6 | class Scale(nn.Module): 7 | """A learnable scale parameter. 8 | 9 | This layer scales the input by a learnable factor. It multiplies a 10 | learnable scale parameter of shape (1,) with input of any shape. 11 | 12 | Args: 13 | scale (float): Initial value of scale factor. Default: 1.0 14 | """ 15 | 16 | def __init__(self, scale=1.0): 17 | super(Scale, self).__init__() 18 | self.scale = nn.Parameter(torch.tensor(scale, dtype=torch.float)) 19 | 20 | def forward(self, x): 21 | return x * self.scale 22 | -------------------------------------------------------------------------------- /annotator/uniformer_base/mmcv/cnn/bricks/swish.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) OpenMMLab. All rights reserved. 2 | import torch 3 | import torch.nn as nn 4 | 5 | from .registry import ACTIVATION_LAYERS 6 | 7 | 8 | @ACTIVATION_LAYERS.register_module() 9 | class Swish(nn.Module): 10 | """Swish Module. 11 | 12 | This module applies the swish function: 13 | 14 | .. math:: 15 | Swish(x) = x * Sigmoid(x) 16 | 17 | Returns: 18 | Tensor: The output tensor. 19 | """ 20 | 21 | def __init__(self): 22 | super(Swish, self).__init__() 23 | 24 | def forward(self, x): 25 | return x * torch.sigmoid(x) 26 | -------------------------------------------------------------------------------- /annotator/uniformer_base/mmcv/engine/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) OpenMMLab. All rights reserved. 2 | from .test import (collect_results_cpu, collect_results_gpu, multi_gpu_test, 3 | single_gpu_test) 4 | 5 | __all__ = [ 6 | 'collect_results_cpu', 'collect_results_gpu', 'multi_gpu_test', 7 | 'single_gpu_test' 8 | ] 9 | -------------------------------------------------------------------------------- /annotator/uniformer_base/mmcv/fileio/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) OpenMMLab. All rights reserved. 2 | from .file_client import BaseStorageBackend, FileClient 3 | from .handlers import BaseFileHandler, JsonHandler, PickleHandler, YamlHandler 4 | from .io import dump, load, register_handler 5 | from .parse import dict_from_file, list_from_file 6 | 7 | __all__ = [ 8 | 'BaseStorageBackend', 'FileClient', 'load', 'dump', 'register_handler', 9 | 'BaseFileHandler', 'JsonHandler', 'PickleHandler', 'YamlHandler', 10 | 'list_from_file', 'dict_from_file' 11 | ] 12 | -------------------------------------------------------------------------------- /annotator/uniformer_base/mmcv/fileio/handlers/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) OpenMMLab. All rights reserved. 2 | from .base import BaseFileHandler 3 | from .json_handler import JsonHandler 4 | from .pickle_handler import PickleHandler 5 | from .yaml_handler import YamlHandler 6 | 7 | __all__ = ['BaseFileHandler', 'JsonHandler', 'PickleHandler', 'YamlHandler'] 8 | -------------------------------------------------------------------------------- /annotator/uniformer_base/mmcv/fileio/handlers/pickle_handler.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) OpenMMLab. All rights reserved. 2 | import pickle 3 | 4 | from .base import BaseFileHandler 5 | 6 | 7 | class PickleHandler(BaseFileHandler): 8 | 9 | str_like = False 10 | 11 | def load_from_fileobj(self, file, **kwargs): 12 | return pickle.load(file, **kwargs) 13 | 14 | def load_from_path(self, filepath, **kwargs): 15 | return super(PickleHandler, self).load_from_path( 16 | filepath, mode='rb', **kwargs) 17 | 18 | def dump_to_str(self, obj, **kwargs): 19 | kwargs.setdefault('protocol', 2) 20 | return pickle.dumps(obj, **kwargs) 21 | 22 | def dump_to_fileobj(self, obj, file, **kwargs): 23 | kwargs.setdefault('protocol', 2) 24 | pickle.dump(obj, file, **kwargs) 25 | 26 | def dump_to_path(self, obj, filepath, **kwargs): 27 | super(PickleHandler, self).dump_to_path( 28 | obj, filepath, mode='wb', **kwargs) 29 | -------------------------------------------------------------------------------- /annotator/uniformer_base/mmcv/fileio/handlers/yaml_handler.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) OpenMMLab. All rights reserved. 2 | import yaml 3 | 4 | try: 5 | from yaml import CLoader as Loader, CDumper as Dumper 6 | except ImportError: 7 | from yaml import Loader, Dumper 8 | 9 | from .base import BaseFileHandler # isort:skip 10 | 11 | 12 | class YamlHandler(BaseFileHandler): 13 | 14 | def load_from_fileobj(self, file, **kwargs): 15 | kwargs.setdefault('Loader', Loader) 16 | return yaml.load(file, **kwargs) 17 | 18 | def dump_to_fileobj(self, obj, file, **kwargs): 19 | kwargs.setdefault('Dumper', Dumper) 20 | yaml.dump(obj, file, **kwargs) 21 | 22 | def dump_to_str(self, obj, **kwargs): 23 | kwargs.setdefault('Dumper', Dumper) 24 | return yaml.dump(obj, **kwargs) 25 | -------------------------------------------------------------------------------- /annotator/uniformer_base/mmcv/model_zoo/deprecated.json: -------------------------------------------------------------------------------- 1 | { 2 | "resnet50_caffe": "detectron/resnet50_caffe", 3 | "resnet50_caffe_bgr": "detectron2/resnet50_caffe_bgr", 4 | "resnet101_caffe": "detectron/resnet101_caffe", 5 | "resnet101_caffe_bgr": "detectron2/resnet101_caffe_bgr" 6 | } 7 | -------------------------------------------------------------------------------- /annotator/uniformer_base/mmcv/ops/info.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) OpenMMLab. All rights reserved. 2 | import glob 3 | import os 4 | 5 | import torch 6 | 7 | if torch.__version__ == 'parrots': 8 | import parrots 9 | 10 | def get_compiler_version(): 11 | return 'GCC ' + parrots.version.compiler 12 | 13 | def get_compiling_cuda_version(): 14 | return parrots.version.cuda 15 | else: 16 | from ..utils import ext_loader 17 | ext_module = ext_loader.load_ext( 18 | '_ext', ['get_compiler_version', 'get_compiling_cuda_version']) 19 | 20 | def get_compiler_version(): 21 | return ext_module.get_compiler_version() 22 | 23 | def get_compiling_cuda_version(): 24 | return ext_module.get_compiling_cuda_version() 25 | 26 | 27 | def get_onnxruntime_op_path(): 28 | wildcard = os.path.join( 29 | os.path.abspath(os.path.dirname(os.path.dirname(__file__))), 30 | '_ext_ort.*.so') 31 | 32 | paths = glob.glob(wildcard) 33 | if len(paths) > 0: 34 | return paths[0] 35 | else: 36 | return '' 37 | -------------------------------------------------------------------------------- /annotator/uniformer_base/mmcv/parallel/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) OpenMMLab. All rights reserved. 2 | from .collate import collate 3 | from .data_container import DataContainer 4 | from .data_parallel import MMDataParallel 5 | from .distributed import MMDistributedDataParallel 6 | from .registry import MODULE_WRAPPERS 7 | from .scatter_gather import scatter, scatter_kwargs 8 | from .utils import is_module_wrapper 9 | 10 | __all__ = [ 11 | 'collate', 'DataContainer', 'MMDataParallel', 'MMDistributedDataParallel', 12 | 'scatter', 'scatter_kwargs', 'is_module_wrapper', 'MODULE_WRAPPERS' 13 | ] 14 | -------------------------------------------------------------------------------- /annotator/uniformer_base/mmcv/parallel/registry.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) OpenMMLab. All rights reserved. 2 | from torch.nn.parallel import DataParallel, DistributedDataParallel 3 | 4 | from annotator.uniformer.mmcv.utils import Registry 5 | 6 | MODULE_WRAPPERS = Registry('module wrapper') 7 | MODULE_WRAPPERS.register_module(module=DataParallel) 8 | MODULE_WRAPPERS.register_module(module=DistributedDataParallel) 9 | -------------------------------------------------------------------------------- /annotator/uniformer_base/mmcv/parallel/utils.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) OpenMMLab. All rights reserved. 2 | from .registry import MODULE_WRAPPERS 3 | 4 | 5 | def is_module_wrapper(module): 6 | """Check if a module is a module wrapper. 7 | 8 | The following 3 modules in MMCV (and their subclasses) are regarded as 9 | module wrappers: DataParallel, DistributedDataParallel, 10 | MMDistributedDataParallel (the deprecated version). You may add you own 11 | module wrapper by registering it to mmcv.parallel.MODULE_WRAPPERS. 12 | 13 | Args: 14 | module (nn.Module): The module to be checked. 15 | 16 | Returns: 17 | bool: True if the input module is a module wrapper. 18 | """ 19 | module_wrappers = tuple(MODULE_WRAPPERS.module_dict.values()) 20 | return isinstance(module, module_wrappers) 21 | -------------------------------------------------------------------------------- /annotator/uniformer_base/mmcv/runner/builder.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) OpenMMLab. All rights reserved. 2 | import copy 3 | 4 | from ..utils import Registry 5 | 6 | RUNNERS = Registry('runner') 7 | RUNNER_BUILDERS = Registry('runner builder') 8 | 9 | 10 | def build_runner_constructor(cfg): 11 | return RUNNER_BUILDERS.build(cfg) 12 | 13 | 14 | def build_runner(cfg, default_args=None): 15 | runner_cfg = copy.deepcopy(cfg) 16 | constructor_type = runner_cfg.pop('constructor', 17 | 'DefaultRunnerConstructor') 18 | runner_constructor = build_runner_constructor( 19 | dict( 20 | type=constructor_type, 21 | runner_cfg=runner_cfg, 22 | default_args=default_args)) 23 | runner = runner_constructor() 24 | return runner 25 | -------------------------------------------------------------------------------- /annotator/uniformer_base/mmcv/runner/hooks/closure.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) OpenMMLab. All rights reserved. 2 | from .hook import HOOKS, Hook 3 | 4 | 5 | @HOOKS.register_module() 6 | class ClosureHook(Hook): 7 | 8 | def __init__(self, fn_name, fn): 9 | assert hasattr(self, fn_name) 10 | assert callable(fn) 11 | setattr(self, fn_name, fn) 12 | -------------------------------------------------------------------------------- /annotator/uniformer_base/mmcv/runner/hooks/iter_timer.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) OpenMMLab. All rights reserved. 2 | import time 3 | 4 | from .hook import HOOKS, Hook 5 | 6 | 7 | @HOOKS.register_module() 8 | class IterTimerHook(Hook): 9 | 10 | def before_epoch(self, runner): 11 | self.t = time.time() 12 | 13 | def before_iter(self, runner): 14 | runner.log_buffer.update({'data_time': time.time() - self.t}) 15 | 16 | def after_iter(self, runner): 17 | runner.log_buffer.update({'time': time.time() - self.t}) 18 | self.t = time.time() 19 | -------------------------------------------------------------------------------- /annotator/uniformer_base/mmcv/runner/hooks/logger/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) OpenMMLab. All rights reserved. 2 | from .base import LoggerHook 3 | from .dvclive import DvcliveLoggerHook 4 | from .mlflow import MlflowLoggerHook 5 | from .neptune import NeptuneLoggerHook 6 | from .pavi import PaviLoggerHook 7 | from .tensorboard import TensorboardLoggerHook 8 | from .text import TextLoggerHook 9 | from .wandb import WandbLoggerHook 10 | 11 | __all__ = [ 12 | 'LoggerHook', 'MlflowLoggerHook', 'PaviLoggerHook', 13 | 'TensorboardLoggerHook', 'TextLoggerHook', 'WandbLoggerHook', 14 | 'NeptuneLoggerHook', 'DvcliveLoggerHook' 15 | ] 16 | -------------------------------------------------------------------------------- /annotator/uniformer_base/mmcv/runner/hooks/memory.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) OpenMMLab. All rights reserved. 2 | import torch 3 | 4 | from .hook import HOOKS, Hook 5 | 6 | 7 | @HOOKS.register_module() 8 | class EmptyCacheHook(Hook): 9 | 10 | def __init__(self, before_epoch=False, after_epoch=True, after_iter=False): 11 | self._before_epoch = before_epoch 12 | self._after_epoch = after_epoch 13 | self._after_iter = after_iter 14 | 15 | def after_iter(self, runner): 16 | if self._after_iter: 17 | torch.cuda.empty_cache() 18 | 19 | def before_epoch(self, runner): 20 | if self._before_epoch: 21 | torch.cuda.empty_cache() 22 | 23 | def after_epoch(self, runner): 24 | if self._after_epoch: 25 | torch.cuda.empty_cache() 26 | -------------------------------------------------------------------------------- /annotator/uniformer_base/mmcv/runner/hooks/sampler_seed.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) OpenMMLab. All rights reserved. 2 | from .hook import HOOKS, Hook 3 | 4 | 5 | @HOOKS.register_module() 6 | class DistSamplerSeedHook(Hook): 7 | """Data-loading sampler for distributed training. 8 | 9 | When distributed training, it is only useful in conjunction with 10 | :obj:`EpochBasedRunner`, while :obj:`IterBasedRunner` achieves the same 11 | purpose with :obj:`IterLoader`. 12 | """ 13 | 14 | def before_epoch(self, runner): 15 | if hasattr(runner.data_loader.sampler, 'set_epoch'): 16 | # in case the data loader uses `SequentialSampler` in Pytorch 17 | runner.data_loader.sampler.set_epoch(runner.epoch) 18 | elif hasattr(runner.data_loader.batch_sampler.sampler, 'set_epoch'): 19 | # batch sampler in pytorch warps the sampler as its attributes. 20 | runner.data_loader.batch_sampler.sampler.set_epoch(runner.epoch) 21 | -------------------------------------------------------------------------------- /annotator/uniformer_base/mmcv/runner/hooks/sync_buffer.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) OpenMMLab. All rights reserved. 2 | from ..dist_utils import allreduce_params 3 | from .hook import HOOKS, Hook 4 | 5 | 6 | @HOOKS.register_module() 7 | class SyncBuffersHook(Hook): 8 | """Synchronize model buffers such as running_mean and running_var in BN at 9 | the end of each epoch. 10 | 11 | Args: 12 | distributed (bool): Whether distributed training is used. It is 13 | effective only for distributed training. Defaults to True. 14 | """ 15 | 16 | def __init__(self, distributed=True): 17 | self.distributed = distributed 18 | 19 | def after_epoch(self, runner): 20 | """All-reduce model buffers at the end of each epoch.""" 21 | if self.distributed: 22 | allreduce_params(runner.model.buffers()) 23 | -------------------------------------------------------------------------------- /annotator/uniformer_base/mmcv/runner/optimizer/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) OpenMMLab. All rights reserved. 2 | from .builder import (OPTIMIZER_BUILDERS, OPTIMIZERS, build_optimizer, 3 | build_optimizer_constructor) 4 | from .default_constructor import DefaultOptimizerConstructor 5 | 6 | __all__ = [ 7 | 'OPTIMIZER_BUILDERS', 'OPTIMIZERS', 'DefaultOptimizerConstructor', 8 | 'build_optimizer', 'build_optimizer_constructor' 9 | ] 10 | -------------------------------------------------------------------------------- /annotator/uniformer_base/mmcv/utils/parrots_jit.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) OpenMMLab. All rights reserved. 2 | import os 3 | 4 | from .parrots_wrapper import TORCH_VERSION 5 | 6 | parrots_jit_option = os.getenv('PARROTS_JIT_OPTION') 7 | 8 | if TORCH_VERSION == 'parrots' and parrots_jit_option == 'ON': 9 | from parrots.jit import pat as jit 10 | else: 11 | 12 | def jit(func=None, 13 | check_input=None, 14 | full_shape=True, 15 | derivate=False, 16 | coderize=False, 17 | optimize=False): 18 | 19 | def wrapper(func): 20 | 21 | def wrapper_inner(*args, **kargs): 22 | return func(*args, **kargs) 23 | 24 | return wrapper_inner 25 | 26 | if func is None: 27 | return wrapper 28 | else: 29 | return func 30 | 31 | 32 | if TORCH_VERSION == 'parrots': 33 | from parrots.utils.tester import skip_no_elena 34 | else: 35 | 36 | def skip_no_elena(func): 37 | 38 | def wrapper(*args, **kargs): 39 | return func(*args, **kargs) 40 | 41 | return wrapper 42 | -------------------------------------------------------------------------------- /annotator/uniformer_base/mmcv/utils/trace.py: -------------------------------------------------------------------------------- 1 | import warnings 2 | 3 | import torch 4 | 5 | from annotator.uniformer.mmcv.utils import digit_version 6 | 7 | 8 | def is_jit_tracing() -> bool: 9 | if (torch.__version__ != 'parrots' 10 | and digit_version(torch.__version__) >= digit_version('1.6.0')): 11 | on_trace = torch.jit.is_tracing() 12 | # In PyTorch 1.6, torch.jit.is_tracing has a bug. 13 | # Refers to https://github.com/pytorch/pytorch/issues/42448 14 | if isinstance(on_trace, bool): 15 | return on_trace 16 | else: 17 | return torch._C._is_tracing() 18 | else: 19 | warnings.warn( 20 | 'torch.jit.is_tracing is only supported after v1.6.0. ' 21 | 'Therefore is_tracing returns False automatically. Please ' 22 | 'set on_trace manually if you are using trace.', UserWarning) 23 | return False 24 | -------------------------------------------------------------------------------- /annotator/uniformer_base/mmcv/video/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) OpenMMLab. All rights reserved. 2 | from .io import Cache, VideoReader, frames2video 3 | from .optflow import (dequantize_flow, flow_from_bytes, flow_warp, flowread, 4 | flowwrite, quantize_flow, sparse_flow_from_bytes) 5 | from .processing import concat_video, convert_video, cut_video, resize_video 6 | 7 | __all__ = [ 8 | 'Cache', 'VideoReader', 'frames2video', 'convert_video', 'resize_video', 9 | 'cut_video', 'concat_video', 'flowread', 'flowwrite', 'quantize_flow', 10 | 'dequantize_flow', 'flow_warp', 'flow_from_bytes', 'sparse_flow_from_bytes' 11 | ] 12 | -------------------------------------------------------------------------------- /annotator/uniformer_base/mmcv/visualization/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) OpenMMLab. All rights reserved. 2 | from .color import Color, color_val 3 | from .image import imshow, imshow_bboxes, imshow_det_bboxes 4 | from .optflow import flow2rgb, flowshow, make_color_wheel 5 | 6 | __all__ = [ 7 | 'Color', 'color_val', 'imshow', 'imshow_bboxes', 'imshow_det_bboxes', 8 | 'flowshow', 'flow2rgb', 'make_color_wheel' 9 | ] 10 | -------------------------------------------------------------------------------- /annotator/uniformer_base/mmcv_custom/__init__.py: -------------------------------------------------------------------------------- 1 | ''' 2 | * Copyright (c) 2023 Salesforce, Inc. 3 | * All rights reserved. 4 | * SPDX-License-Identifier: Apache License 2.0 5 | * For full license text, see LICENSE.txt file in the repo root or http://www.apache.org/licenses/ 6 | * By Can Qin 7 | * Modified from ControlNet repo: https://github.com/lllyasviel/ControlNet 8 | * Copyright (c) 2023 Lvmin Zhang and Maneesh Agrawala 9 | * Modified from MMCV repo: From https://github.com/open-mmlab/mmcv 10 | * Copyright (c) OpenMMLab. All rights reserved. 11 | ''' 12 | 13 | # -*- coding: utf-8 -*- 14 | 15 | from .checkpoint import load_checkpoint 16 | 17 | __all__ = ['load_checkpoint'] -------------------------------------------------------------------------------- /annotator/uniformer_base/mmseg/apis/__init__.py: -------------------------------------------------------------------------------- 1 | from .inference import inference_segmentor, init_segmentor, show_result_pyplot 2 | from .test import multi_gpu_test, single_gpu_test 3 | from .train import get_root_logger, set_random_seed, train_segmentor 4 | 5 | __all__ = [ 6 | 'get_root_logger', 'set_random_seed', 'train_segmentor', 'init_segmentor', 7 | 'inference_segmentor', 'multi_gpu_test', 'single_gpu_test', 8 | 'show_result_pyplot' 9 | ] 10 | -------------------------------------------------------------------------------- /annotator/uniformer_base/mmseg/core/__init__.py: -------------------------------------------------------------------------------- 1 | from .evaluation import * # noqa: F401, F403 2 | from .seg import * # noqa: F401, F403 3 | from .utils import * # noqa: F401, F403 4 | -------------------------------------------------------------------------------- /annotator/uniformer_base/mmseg/core/evaluation/__init__.py: -------------------------------------------------------------------------------- 1 | from .class_names import get_classes, get_palette 2 | from .eval_hooks import DistEvalHook, EvalHook 3 | from .metrics import eval_metrics, mean_dice, mean_fscore, mean_iou 4 | 5 | __all__ = [ 6 | 'EvalHook', 'DistEvalHook', 'mean_dice', 'mean_iou', 'mean_fscore', 7 | 'eval_metrics', 'get_classes', 'get_palette' 8 | ] 9 | -------------------------------------------------------------------------------- /annotator/uniformer_base/mmseg/core/seg/__init__.py: -------------------------------------------------------------------------------- 1 | from .builder import build_pixel_sampler 2 | from .sampler import BasePixelSampler, OHEMPixelSampler 3 | 4 | __all__ = ['build_pixel_sampler', 'BasePixelSampler', 'OHEMPixelSampler'] 5 | -------------------------------------------------------------------------------- /annotator/uniformer_base/mmseg/core/seg/builder.py: -------------------------------------------------------------------------------- 1 | from annotator.uniformer.mmcv.utils import Registry, build_from_cfg 2 | 3 | PIXEL_SAMPLERS = Registry('pixel sampler') 4 | 5 | 6 | def build_pixel_sampler(cfg, **default_args): 7 | """Build pixel sampler for segmentation map.""" 8 | return build_from_cfg(cfg, PIXEL_SAMPLERS, default_args) 9 | -------------------------------------------------------------------------------- /annotator/uniformer_base/mmseg/core/seg/sampler/__init__.py: -------------------------------------------------------------------------------- 1 | from .base_pixel_sampler import BasePixelSampler 2 | from .ohem_pixel_sampler import OHEMPixelSampler 3 | 4 | __all__ = ['BasePixelSampler', 'OHEMPixelSampler'] 5 | -------------------------------------------------------------------------------- /annotator/uniformer_base/mmseg/core/seg/sampler/base_pixel_sampler.py: -------------------------------------------------------------------------------- 1 | from abc import ABCMeta, abstractmethod 2 | 3 | 4 | class BasePixelSampler(metaclass=ABCMeta): 5 | """Base class of pixel sampler.""" 6 | 7 | def __init__(self, **kwargs): 8 | pass 9 | 10 | @abstractmethod 11 | def sample(self, seg_logit, seg_label): 12 | """Placeholder for sample function.""" 13 | -------------------------------------------------------------------------------- /annotator/uniformer_base/mmseg/core/utils/__init__.py: -------------------------------------------------------------------------------- 1 | from .misc import add_prefix 2 | 3 | __all__ = ['add_prefix'] 4 | -------------------------------------------------------------------------------- /annotator/uniformer_base/mmseg/core/utils/misc.py: -------------------------------------------------------------------------------- 1 | def add_prefix(inputs, prefix): 2 | """Add prefix for dict. 3 | 4 | Args: 5 | inputs (dict): The input dict with str keys. 6 | prefix (str): The prefix to add. 7 | 8 | Returns: 9 | 10 | dict: The dict with keys updated with ``prefix``. 11 | """ 12 | 13 | outputs = dict() 14 | for name, value in inputs.items(): 15 | outputs[f'{prefix}.{name}'] = value 16 | 17 | return outputs 18 | -------------------------------------------------------------------------------- /annotator/uniformer_base/mmseg/models/__init__.py: -------------------------------------------------------------------------------- 1 | from .backbones import * # noqa: F401,F403 2 | from .builder import (BACKBONES, HEADS, LOSSES, SEGMENTORS, build_backbone, 3 | build_head, build_loss, build_segmentor) 4 | from .decode_heads import * # noqa: F401,F403 5 | from .losses import * # noqa: F401,F403 6 | from .necks import * # noqa: F401,F403 7 | from .segmentors import * # noqa: F401,F403 8 | 9 | __all__ = [ 10 | 'BACKBONES', 'HEADS', 'LOSSES', 'SEGMENTORS', 'build_backbone', 11 | 'build_head', 'build_loss', 'build_segmentor' 12 | ] 13 | -------------------------------------------------------------------------------- /annotator/uniformer_base/mmseg/models/backbones/__init__.py: -------------------------------------------------------------------------------- 1 | from .cgnet import CGNet 2 | # from .fast_scnn import FastSCNN 3 | from .hrnet import HRNet 4 | from .mobilenet_v2 import MobileNetV2 5 | from .mobilenet_v3 import MobileNetV3 6 | from .resnest import ResNeSt 7 | from .resnet import ResNet, ResNetV1c, ResNetV1d 8 | from .resnext import ResNeXt 9 | from .unet import UNet 10 | from .vit import VisionTransformer 11 | from .uniformer import UniFormer 12 | 13 | __all__ = [ 14 | 'ResNet', 'ResNetV1c', 'ResNetV1d', 'ResNeXt', 'HRNet', 15 | 'ResNeSt', 'MobileNetV2', 'UNet', 'CGNet', 'MobileNetV3', 16 | 'VisionTransformer', 'UniFormer' 17 | ] 18 | -------------------------------------------------------------------------------- /annotator/uniformer_base/mmseg/models/necks/__init__.py: -------------------------------------------------------------------------------- 1 | ''' 2 | * Copyright (c) 2023 Salesforce, Inc. 3 | * All rights reserved. 4 | * SPDX-License-Identifier: Apache License 2.0 5 | * For full license text, see LICENSE.txt file in the repo root or http://www.apache.org/licenses/ 6 | * By Can Qin 7 | * Modified from ControlNet repo: https://github.com/lllyasviel/ControlNet 8 | * Copyright (c) 2023 Lvmin Zhang and Maneesh Agrawala 9 | * Modified from MMCV repo: From https://github.com/open-mmlab/mmcv 10 | * Copyright (c) OpenMMLab. All rights reserved. 11 | ''' 12 | 13 | from .fpn import FPN 14 | from .multilevel_neck import MultiLevelNeck 15 | 16 | __all__ = ['FPN', 'MultiLevelNeck'] 17 | -------------------------------------------------------------------------------- /annotator/uniformer_base/mmseg/models/segmentors/__init__.py: -------------------------------------------------------------------------------- 1 | ''' 2 | * Copyright (c) 2023 Salesforce, Inc. 3 | * All rights reserved. 4 | * SPDX-License-Identifier: Apache License 2.0 5 | * For full license text, see LICENSE.txt file in the repo root or http://www.apache.org/licenses/ 6 | * By Can Qin 7 | * Modified from ControlNet repo: https://github.com/lllyasviel/ControlNet 8 | * Copyright (c) 2023 Lvmin Zhang and Maneesh Agrawala 9 | * Modified from MMCV repo: From https://github.com/open-mmlab/mmcv 10 | * Copyright (c) OpenMMLab. All rights reserved. 11 | ''' 12 | 13 | from .base import BaseSegmentor 14 | from .cascade_encoder_decoder import CascadeEncoderDecoder 15 | from .encoder_decoder import EncoderDecoder 16 | 17 | __all__ = ['BaseSegmentor', 'EncoderDecoder', 'CascadeEncoderDecoder'] 18 | -------------------------------------------------------------------------------- /annotator/uniformer_base/mmseg/models/utils/__init__.py: -------------------------------------------------------------------------------- 1 | ''' 2 | * Copyright (c) 2023 Salesforce, Inc. 3 | * All rights reserved. 4 | * SPDX-License-Identifier: Apache License 2.0 5 | * For full license text, see LICENSE.txt file in the repo root or http://www.apache.org/licenses/ 6 | * By Can Qin 7 | * Modified from ControlNet repo: https://github.com/lllyasviel/ControlNet 8 | * Copyright (c) 2023 Lvmin Zhang and Maneesh Agrawala 9 | * Modified from MMCV repo: From https://github.com/open-mmlab/mmcv 10 | * Copyright (c) OpenMMLab. All rights reserved. 11 | ''' 12 | 13 | from .drop import DropPath 14 | from .inverted_residual import InvertedResidual, InvertedResidualV3 15 | from .make_divisible import make_divisible 16 | from .res_layer import ResLayer 17 | from .se_layer import SELayer 18 | from .self_attention_block import SelfAttentionBlock 19 | from .up_conv_block import UpConvBlock 20 | from .weight_init import trunc_normal_ 21 | 22 | __all__ = [ 23 | 'ResLayer', 'SelfAttentionBlock', 'make_divisible', 'InvertedResidual', 24 | 'UpConvBlock', 'InvertedResidualV3', 'SELayer', 'DropPath', 'trunc_normal_' 25 | ] 26 | -------------------------------------------------------------------------------- /annotator/uniformer_base/mmseg/ops/__init__.py: -------------------------------------------------------------------------------- 1 | ''' 2 | * Copyright (c) 2023 Salesforce, Inc. 3 | * All rights reserved. 4 | * SPDX-License-Identifier: Apache License 2.0 5 | * For full license text, see LICENSE.txt file in the repo root or http://www.apache.org/licenses/ 6 | * By Can Qin 7 | * Modified from ControlNet repo: https://github.com/lllyasviel/ControlNet 8 | * Copyright (c) 2023 Lvmin Zhang and Maneesh Agrawala 9 | * Modified from MMCV repo: From https://github.com/open-mmlab/mmcv 10 | * Copyright (c) OpenMMLab. All rights reserved. 11 | ''' 12 | 13 | from .encoding import Encoding 14 | from .wrappers import Upsample, resize 15 | 16 | __all__ = ['Upsample', 'resize', 'Encoding'] 17 | -------------------------------------------------------------------------------- /annotator/uniformer_base/mmseg/utils/__init__.py: -------------------------------------------------------------------------------- 1 | ''' 2 | * Copyright (c) 2023 Salesforce, Inc. 3 | * All rights reserved. 4 | * SPDX-License-Identifier: Apache License 2.0 5 | * For full license text, see LICENSE.txt file in the repo root or http://www.apache.org/licenses/ 6 | * By Can Qin 7 | * Modified from ControlNet repo: https://github.com/lllyasviel/ControlNet 8 | * Copyright (c) 2023 Lvmin Zhang and Maneesh Agrawala 9 | * Modified from MMCV repo: From https://github.com/open-mmlab/mmcv 10 | * Copyright (c) OpenMMLab. All rights reserved. 11 | ''' 12 | 13 | 14 | from .collect_env import collect_env 15 | from .logger import get_root_logger 16 | 17 | __all__ = ['get_root_logger', 'collect_env'] 18 | -------------------------------------------------------------------------------- /ckpts/README.md: -------------------------------------------------------------------------------- 1 | Weights here. -------------------------------------------------------------------------------- /config.py: -------------------------------------------------------------------------------- 1 | ''' 2 | * Copyright (c) 2023 Salesforce, Inc. 3 | * All rights reserved. 4 | * SPDX-License-Identifier: Apache License 2.0 5 | * For full license text, see LICENSE.txt file in the repo root or http://www.apache.org/licenses/ 6 | * By Can Qin 7 | * Modified from ControlNet repo: https://github.com/lllyasviel/ControlNet 8 | * Copyright (c) 2023 Lvmin Zhang and Maneesh Agrawala 9 | ''' 10 | 11 | save_memory = False 12 | -------------------------------------------------------------------------------- /data/bbox.json: -------------------------------------------------------------------------------- 1 | {"source": "./coco_sel/000000340175.jpg", "prompt": "The large room has a wooden table with chairs and a couch.", "control_bbox": "bbox/control_40175.jpg"} 2 | {"source": "./coco_sel/000000453860.jpg", "prompt": "two black bags placed standing on the ground", "control_bbox": "bbox/control_53860.jpg"} 3 | {"source": "./coco_sel/000000512836.jpg", "prompt": "A woman is walking two dogs in the snow. ", "control_bbox": "bbox/control_12836.jpg"} 4 | {"source": "./aesthetics_6_plus_6_300_512plus/source_217.jpg", "prompt": "Simone Righi frasi glasses linen suit menswear streetstyle icon fashion florence.jpg", "control_bbox": "bbox/control_217.jpg"} -------------------------------------------------------------------------------- /data/bbox/control_12836.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/salesforce/UniControl/9f452ee2acda6bdc4c9c6b67072bdc872277a403/data/bbox/control_12836.jpg -------------------------------------------------------------------------------- /data/bbox/control_217.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/salesforce/UniControl/9f452ee2acda6bdc4c9c6b67072bdc872277a403/data/bbox/control_217.jpg -------------------------------------------------------------------------------- /data/bbox/control_40175.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/salesforce/UniControl/9f452ee2acda6bdc4c9c6b67072bdc872277a403/data/bbox/control_40175.jpg -------------------------------------------------------------------------------- /data/bbox/control_53860.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/salesforce/UniControl/9f452ee2acda6bdc4c9c6b67072bdc872277a403/data/bbox/control_53860.jpg -------------------------------------------------------------------------------- /data/blur.json: -------------------------------------------------------------------------------- 1 | {"source": "", "prompt": "a woman in a costume with a dog", "control_blur": "blur/control_1.png"} 2 | {"source": "", "prompt": "a small waterfall surrounded by rocks and a cliff", "control_blur": "blur/control_2.png"} 3 | {"source": "", "prompt": "a painting of a black woman and her baby", "control_blur": "blur/control_3.png"} -------------------------------------------------------------------------------- /data/blur/control_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/salesforce/UniControl/9f452ee2acda6bdc4c9c6b67072bdc872277a403/data/blur/control_1.png -------------------------------------------------------------------------------- /data/blur/control_2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/salesforce/UniControl/9f452ee2acda6bdc4c9c6b67072bdc872277a403/data/blur/control_2.png -------------------------------------------------------------------------------- /data/blur/control_3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/salesforce/UniControl/9f452ee2acda6bdc4c9c6b67072bdc872277a403/data/blur/control_3.png -------------------------------------------------------------------------------- /data/canny.json: -------------------------------------------------------------------------------- 1 | {"source": "./coco_sel/000000087875.jpg", "prompt": "a fire hydrant near a tall bush in a field ", "control_canny": "canny/control_87875.jpg"} 2 | {"source": "./coco_sel/000000550426.jpg", "prompt": "A vase of flowers on a dining table.", "control_canny": "canny/control_50426.jpg"} 3 | {"source": "./coco_sel/000000127182.jpg", "prompt": "A KITCHEN WITH A SINK AND APPLIANCES ", "control_canny": "canny/control_27182.jpg"} 4 | {"source": "./aesthetics_6_plus_6_300_512plus/source_592.jpg", "prompt": "Breath of the Wild compressed cover art", "control_canny": "canny/control_592.jpg"} 5 | {"source": "./coco_sel/000000524456.jpg", "prompt": "two arms typing on a laptop and one hand on a mouse", "control_canny": "canny/control_24456.jpg"} 6 | {"source": "./coco_sel/000000000785.jpg", "prompt": "a person on skis makes her way through the snow", "control_canny": "canny/control_00785.jpg"} -------------------------------------------------------------------------------- /data/canny/control_00785.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/salesforce/UniControl/9f452ee2acda6bdc4c9c6b67072bdc872277a403/data/canny/control_00785.jpg -------------------------------------------------------------------------------- /data/canny/control_24456.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/salesforce/UniControl/9f452ee2acda6bdc4c9c6b67072bdc872277a403/data/canny/control_24456.jpg -------------------------------------------------------------------------------- /data/canny/control_27182.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/salesforce/UniControl/9f452ee2acda6bdc4c9c6b67072bdc872277a403/data/canny/control_27182.jpg -------------------------------------------------------------------------------- /data/canny/control_50426.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/salesforce/UniControl/9f452ee2acda6bdc4c9c6b67072bdc872277a403/data/canny/control_50426.jpg -------------------------------------------------------------------------------- /data/canny/control_592.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/salesforce/UniControl/9f452ee2acda6bdc4c9c6b67072bdc872277a403/data/canny/control_592.jpg -------------------------------------------------------------------------------- /data/canny/control_87875.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/salesforce/UniControl/9f452ee2acda6bdc4c9c6b67072bdc872277a403/data/canny/control_87875.jpg -------------------------------------------------------------------------------- /data/depth.json: -------------------------------------------------------------------------------- 1 | {"source": "./coco_sel/000000572517.jpg", "prompt": "A Polar Bear walks toward water, while a large bird lands on the opposite bank.", "control_depth": "depth/control_72517.jpg"} 2 | {"source": "./coco_sel/000000113403.jpg", "prompt": "Three stuffed animals lay in a bed cuddled together.", "control_depth": "depth/control_13403.jpg"} 3 | {"source": "./coco_sel/000000109798.jpg", "prompt": "Donuts with frosting and glazed toppings sit on table next to coffee maker", "control_depth": "depth/control_09798.jpg"} 4 | {"source": "./coco_sel/000000368294.jpg", "prompt": "A woman working with a pair of scissors as she makes cigars.", "control_depth": "depth/control_68294.jpg"} 5 | {"source": "./aesthetics_6_plus_6_300_512plus/source_223.jpg", "prompt": "Giraffes in Lake Manyara national park", "control_depth": "depth/control_223.jpg"} 6 | {"source": "./coco_sel/000000180560.jpg", "prompt": "a person holding a small cake with candles", "control_depth": "depth/control_80560.jpg"} 7 | {"source": "./coco_sel/000000301135.jpg", "prompt": "A group of women sitting on a bench near a light pole.", "control_depth": "depth/control_01135.jpg"} -------------------------------------------------------------------------------- /data/depth/control_01135.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/salesforce/UniControl/9f452ee2acda6bdc4c9c6b67072bdc872277a403/data/depth/control_01135.jpg -------------------------------------------------------------------------------- /data/depth/control_09798.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/salesforce/UniControl/9f452ee2acda6bdc4c9c6b67072bdc872277a403/data/depth/control_09798.jpg -------------------------------------------------------------------------------- /data/depth/control_13403.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/salesforce/UniControl/9f452ee2acda6bdc4c9c6b67072bdc872277a403/data/depth/control_13403.jpg -------------------------------------------------------------------------------- /data/depth/control_223.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/salesforce/UniControl/9f452ee2acda6bdc4c9c6b67072bdc872277a403/data/depth/control_223.jpg -------------------------------------------------------------------------------- /data/depth/control_68294.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/salesforce/UniControl/9f452ee2acda6bdc4c9c6b67072bdc872277a403/data/depth/control_68294.jpg -------------------------------------------------------------------------------- /data/depth/control_72517.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/salesforce/UniControl/9f452ee2acda6bdc4c9c6b67072bdc872277a403/data/depth/control_72517.jpg -------------------------------------------------------------------------------- /data/depth/control_80560.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/salesforce/UniControl/9f452ee2acda6bdc4c9c6b67072bdc872277a403/data/depth/control_80560.jpg -------------------------------------------------------------------------------- /data/grayscale.json: -------------------------------------------------------------------------------- 1 | {"source": "", "prompt": "a garden with flowers and chair and table", "control_grayscale": "grayscale/control_4.png"} 2 | {"source": "", "prompt": "a woman in a suit posing for a picture", "control_grayscale": "grayscale/control_5.png"} 3 | {"source": "", "prompt": "", "control_grayscale": "grayscale/control_6.png"} 4 | {"source": "", "prompt": "", "control_grayscale": "grayscale/control_7.png"} -------------------------------------------------------------------------------- /data/grayscale/control_4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/salesforce/UniControl/9f452ee2acda6bdc4c9c6b67072bdc872277a403/data/grayscale/control_4.png -------------------------------------------------------------------------------- /data/grayscale/control_5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/salesforce/UniControl/9f452ee2acda6bdc4c9c6b67072bdc872277a403/data/grayscale/control_5.png -------------------------------------------------------------------------------- /data/grayscale/control_6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/salesforce/UniControl/9f452ee2acda6bdc4c9c6b67072bdc872277a403/data/grayscale/control_6.png -------------------------------------------------------------------------------- /data/grayscale/control_7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/salesforce/UniControl/9f452ee2acda6bdc4c9c6b67072bdc872277a403/data/grayscale/control_7.png -------------------------------------------------------------------------------- /data/hed.json: -------------------------------------------------------------------------------- 1 | {"source": "./coco_sel/000000181859.jpg", "prompt": "A striped cat is laying on the sink and looking at the camera. ", "control_hed": "hed/control_81859.jpg"} 2 | {"source": "./aesthetics_6_plus_6_300_512plus/source_22.jpg", "prompt": "Bedroom Beach Art Bedroom Decorating Colors Ideas Art Decoration For Bedroom Bedroom Yellow Walls: Yellow Bedroom Walls Of Yellow Bedroom Ideas", "control_hed": "hed/control_22.jpg"} 3 | {"source": "./coco_sel/000000066523.jpg", "prompt": "A full size bed with mosquito netting above, all in neutral colors.", "control_hed": "hed/control_66523.jpg"} 4 | {"source": "./coco_sel/000000219578.jpg", "prompt": "A cat and a dog rest together on a hideous orange couch.", "control_hed": "hed/control_19578.jpg"} 5 | {"source": "./coco_sel/000000566524.jpg", "prompt": "Two people walking along a side walk next to a train on the tracks.", "control_hed": "hed/control_66524.jpg"} 6 | {"source": "./aesthetics_6_plus_6_300_512plus/source_238.jpg", "prompt": "full reviews for best with shape size run of uncategorized drawers drawer wayfair latitude dariell desk corner inside", "control_hed": "hed/control_238.jpg"} -------------------------------------------------------------------------------- /data/hed/control_19578.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/salesforce/UniControl/9f452ee2acda6bdc4c9c6b67072bdc872277a403/data/hed/control_19578.jpg -------------------------------------------------------------------------------- /data/hed/control_22.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/salesforce/UniControl/9f452ee2acda6bdc4c9c6b67072bdc872277a403/data/hed/control_22.jpg -------------------------------------------------------------------------------- /data/hed/control_238.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/salesforce/UniControl/9f452ee2acda6bdc4c9c6b67072bdc872277a403/data/hed/control_238.jpg -------------------------------------------------------------------------------- /data/hed/control_66523.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/salesforce/UniControl/9f452ee2acda6bdc4c9c6b67072bdc872277a403/data/hed/control_66523.jpg -------------------------------------------------------------------------------- /data/hed/control_66524.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/salesforce/UniControl/9f452ee2acda6bdc4c9c6b67072bdc872277a403/data/hed/control_66524.jpg -------------------------------------------------------------------------------- /data/hed/control_81859.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/salesforce/UniControl/9f452ee2acda6bdc4c9c6b67072bdc872277a403/data/hed/control_81859.jpg -------------------------------------------------------------------------------- /data/hedsketch/control_00663.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/salesforce/UniControl/9f452ee2acda6bdc4c9c6b67072bdc872277a403/data/hedsketch/control_00663.jpg -------------------------------------------------------------------------------- /data/hedsketch/control_117.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/salesforce/UniControl/9f452ee2acda6bdc4c9c6b67072bdc872277a403/data/hedsketch/control_117.jpg -------------------------------------------------------------------------------- /data/hedsketch/control_223.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/salesforce/UniControl/9f452ee2acda6bdc4c9c6b67072bdc872277a403/data/hedsketch/control_223.jpg -------------------------------------------------------------------------------- /data/hedsketch/control_248.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/salesforce/UniControl/9f452ee2acda6bdc4c9c6b67072bdc872277a403/data/hedsketch/control_248.jpg -------------------------------------------------------------------------------- /data/hedsketch/control_276.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/salesforce/UniControl/9f452ee2acda6bdc4c9c6b67072bdc872277a403/data/hedsketch/control_276.jpg -------------------------------------------------------------------------------- /data/hedsketch/control_315.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/salesforce/UniControl/9f452ee2acda6bdc4c9c6b67072bdc872277a403/data/hedsketch/control_315.jpg -------------------------------------------------------------------------------- /data/hedsketch/control_332.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/salesforce/UniControl/9f452ee2acda6bdc4c9c6b67072bdc872277a403/data/hedsketch/control_332.jpg -------------------------------------------------------------------------------- /data/hedsketch/control_598.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/salesforce/UniControl/9f452ee2acda6bdc4c9c6b67072bdc872277a403/data/hedsketch/control_598.jpg -------------------------------------------------------------------------------- /data/hedsketch/control_78.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/salesforce/UniControl/9f452ee2acda6bdc4c9c6b67072bdc872277a403/data/hedsketch/control_78.jpg -------------------------------------------------------------------------------- /data/inpainting.json: -------------------------------------------------------------------------------- 1 | {"source": "", "prompt": "puppy", "control_inpainting": "inpainting/control_8.png"} 2 | {"source": "", "prompt": "", "control_inpainting": "inpainting/control_9.png"} 3 | {"source": "", "prompt": "", "control_inpainting": "inpainting/control_10.png"} -------------------------------------------------------------------------------- /data/inpainting/control_10.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/salesforce/UniControl/9f452ee2acda6bdc4c9c6b67072bdc872277a403/data/inpainting/control_10.png -------------------------------------------------------------------------------- /data/inpainting/control_8.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/salesforce/UniControl/9f452ee2acda6bdc4c9c6b67072bdc872277a403/data/inpainting/control_8.png -------------------------------------------------------------------------------- /data/inpainting/control_9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/salesforce/UniControl/9f452ee2acda6bdc4c9c6b67072bdc872277a403/data/inpainting/control_9.png -------------------------------------------------------------------------------- /data/normal/control_158.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/salesforce/UniControl/9f452ee2acda6bdc4c9c6b67072bdc872277a403/data/normal/control_158.jpg -------------------------------------------------------------------------------- /data/normal/control_25062.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/salesforce/UniControl/9f452ee2acda6bdc4c9c6b67072bdc872277a403/data/normal/control_25062.jpg -------------------------------------------------------------------------------- /data/normal/control_276.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/salesforce/UniControl/9f452ee2acda6bdc4c9c6b67072bdc872277a403/data/normal/control_276.jpg -------------------------------------------------------------------------------- /data/normal/control_457.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/salesforce/UniControl/9f452ee2acda6bdc4c9c6b67072bdc872277a403/data/normal/control_457.jpg -------------------------------------------------------------------------------- /data/normal/control_482.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/salesforce/UniControl/9f452ee2acda6bdc4c9c6b67072bdc872277a403/data/normal/control_482.jpg -------------------------------------------------------------------------------- /data/normal/control_64786.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/salesforce/UniControl/9f452ee2acda6bdc4c9c6b67072bdc872277a403/data/normal/control_64786.jpg -------------------------------------------------------------------------------- /data/normal/control_73237.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/salesforce/UniControl/9f452ee2acda6bdc4c9c6b67072bdc872277a403/data/normal/control_73237.jpg -------------------------------------------------------------------------------- /data/normal/control_84477.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/salesforce/UniControl/9f452ee2acda6bdc4c9c6b67072bdc872277a403/data/normal/control_84477.jpg -------------------------------------------------------------------------------- /data/normal/control_92236.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/salesforce/UniControl/9f452ee2acda6bdc4c9c6b67072bdc872277a403/data/normal/control_92236.jpg -------------------------------------------------------------------------------- /data/openpose/control_148.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/salesforce/UniControl/9f452ee2acda6bdc4c9c6b67072bdc872277a403/data/openpose/control_148.jpg -------------------------------------------------------------------------------- /data/openpose/control_152.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/salesforce/UniControl/9f452ee2acda6bdc4c9c6b67072bdc872277a403/data/openpose/control_152.jpg -------------------------------------------------------------------------------- /data/openpose/control_158.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/salesforce/UniControl/9f452ee2acda6bdc4c9c6b67072bdc872277a403/data/openpose/control_158.jpg -------------------------------------------------------------------------------- /data/openpose/control_165.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/salesforce/UniControl/9f452ee2acda6bdc4c9c6b67072bdc872277a403/data/openpose/control_165.jpg -------------------------------------------------------------------------------- /data/openpose/control_167.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/salesforce/UniControl/9f452ee2acda6bdc4c9c6b67072bdc872277a403/data/openpose/control_167.jpg -------------------------------------------------------------------------------- /data/openpose/control_186.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/salesforce/UniControl/9f452ee2acda6bdc4c9c6b67072bdc872277a403/data/openpose/control_186.jpg -------------------------------------------------------------------------------- /data/openpose/control_194.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/salesforce/UniControl/9f452ee2acda6bdc4c9c6b67072bdc872277a403/data/openpose/control_194.jpg -------------------------------------------------------------------------------- /data/openpose/control_217.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/salesforce/UniControl/9f452ee2acda6bdc4c9c6b67072bdc872277a403/data/openpose/control_217.jpg -------------------------------------------------------------------------------- /data/openpose/control_47.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/salesforce/UniControl/9f452ee2acda6bdc4c9c6b67072bdc872277a403/data/openpose/control_47.jpg -------------------------------------------------------------------------------- /data/outpainting.json: -------------------------------------------------------------------------------- 1 | {"source": "./aesthetics_6_plus_6_300_512plus/source_147.jpg", "prompt": "St, Michaels Mount, Cornwall", "control_outpainting": "outpainting/control_147.jpg"} 2 | {"source": "./aesthetics_6_plus_6_300_512plus/source_177.jpg", "prompt": "Melbourne by teekay 72", "control_outpainting": "outpainting/control_177.jpg"} 3 | {"source": "./aesthetics_6_plus_6_300_512plus/source_246.jpg", "prompt": "Lady in Black Kimono Paint by Diamonds", "control_outpainting": "outpainting/control_246.jpg"} 4 | {"source": "./aesthetics_6_plus_6_300_512plus/source_61.jpg", "prompt": "Beautiful kitchen grand scale living pinterest for Kitchen cabinets lowes with old world metal wall art", "control_outpainting": "outpainting/control_61.jpg"} 5 | {"source": "./aesthetics_6_plus_6_300_512plus/source_235.jpg", "prompt": "primeval forest: River runs over boulders in the primeval forest Stock Photo", "control_outpainting": "outpainting/control_235.jpg"} -------------------------------------------------------------------------------- /data/outpainting/control_147.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/salesforce/UniControl/9f452ee2acda6bdc4c9c6b67072bdc872277a403/data/outpainting/control_147.jpg -------------------------------------------------------------------------------- /data/outpainting/control_177.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/salesforce/UniControl/9f452ee2acda6bdc4c9c6b67072bdc872277a403/data/outpainting/control_177.jpg -------------------------------------------------------------------------------- /data/outpainting/control_235.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/salesforce/UniControl/9f452ee2acda6bdc4c9c6b67072bdc872277a403/data/outpainting/control_235.jpg -------------------------------------------------------------------------------- /data/outpainting/control_246.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/salesforce/UniControl/9f452ee2acda6bdc4c9c6b67072bdc872277a403/data/outpainting/control_246.jpg -------------------------------------------------------------------------------- /data/outpainting/control_61.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/salesforce/UniControl/9f452ee2acda6bdc4c9c6b67072bdc872277a403/data/outpainting/control_61.jpg -------------------------------------------------------------------------------- /data/seg.json: -------------------------------------------------------------------------------- 1 | {"source": "./aesthetics_6_plus_6_300_512plus/source_83.jpg", "prompt": "Blue Hour Barley", "control_seg": "segbase/control_83.jpg"} 2 | {"source": "./aesthetics_6_plus_6_300_512plus/source_386.jpg", "prompt": "Picture of Industrial Live Edge Dining Set Azulfurnishing", "control_seg": "segbase/control_386.jpg"} 3 | {"source": "./coco_sel/000000366141.jpg", "prompt": "Cat sitting on recliner back in room facing the television", "control_seg": "segbase/control_66141.jpg"} 4 | {"source": "./coco_sel/000000389381.jpg", "prompt": "One tray of rice and a tray of fruits and veggies.", "control_seg": "segbase/control_89381.jpg"} 5 | {"source": "./coco_sel/000000031269.jpg", "prompt": "three zebras grazing in a grassy area near shrubs", "control_seg": "segbase/control_31269.jpg"} 6 | {"source": "./coco_sel/000000375015.jpg", "prompt": "A brown bear walking in its zoo enclosure", "control_seg": "segbase/control_75015.jpg"} 7 | -------------------------------------------------------------------------------- /data/segbase/control_31269.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/salesforce/UniControl/9f452ee2acda6bdc4c9c6b67072bdc872277a403/data/segbase/control_31269.jpg -------------------------------------------------------------------------------- /data/segbase/control_386.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/salesforce/UniControl/9f452ee2acda6bdc4c9c6b67072bdc872277a403/data/segbase/control_386.jpg -------------------------------------------------------------------------------- /data/segbase/control_66141.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/salesforce/UniControl/9f452ee2acda6bdc4c9c6b67072bdc872277a403/data/segbase/control_66141.jpg -------------------------------------------------------------------------------- /data/segbase/control_75015.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/salesforce/UniControl/9f452ee2acda6bdc4c9c6b67072bdc872277a403/data/segbase/control_75015.jpg -------------------------------------------------------------------------------- /data/segbase/control_83.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/salesforce/UniControl/9f452ee2acda6bdc4c9c6b67072bdc872277a403/data/segbase/control_83.jpg -------------------------------------------------------------------------------- /data/segbase/control_89381.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/salesforce/UniControl/9f452ee2acda6bdc4c9c6b67072bdc872277a403/data/segbase/control_89381.jpg -------------------------------------------------------------------------------- /environment.yaml: -------------------------------------------------------------------------------- 1 | name: unicontrol 2 | channels: 3 | - pytorch 4 | - defaults 5 | dependencies: 6 | - python=3.8.5 7 | - pip=20.3 8 | - cudatoolkit=11.3 9 | - pytorch=1.12.1 10 | - torchvision=0.13.1 11 | - numpy=1.23.1 12 | - pip: 13 | - gradio==3.16.2 14 | - albumentations==1.3.0 15 | - opencv-contrib-python==4.7.0.72 16 | - imageio==2.9.0 17 | - imageio-ffmpeg==0.4.2 18 | - pytorch-lightning==1.5.0 19 | - omegaconf==2.1.1 20 | - test-tube>=0.7.5 21 | - streamlit==1.12.1 22 | - einops==0.6.1 23 | - transformers==4.19.2 24 | - webdataset==0.2.5 25 | - kornia==0.6 26 | - open_clip_torch==2.0.2 27 | - invisible-watermark>=0.1.5 28 | - streamlit-drawable-canvas==0.8.0 29 | - torchmetrics==0.6.0 30 | - timm==0.6.12 31 | - addict==2.4.0 32 | - yapf==0.32.0 33 | - prettytable==3.6.0 34 | - safetensors==0.2.7 35 | - basicsr==1.4.2 36 | - jsonlines 37 | - diffusers==0.10.2 38 | - cvlib==0.2.7 39 | - tensorflow-cpu 40 | -------------------------------------------------------------------------------- /figs/demo_simple.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/salesforce/UniControl/9f452ee2acda6bdc4c9c6b67072bdc872277a403/figs/demo_simple.png -------------------------------------------------------------------------------- /figs/gradio_all_task_sketch.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/salesforce/UniControl/9f452ee2acda6bdc4c9c6b67072bdc872277a403/figs/gradio_all_task_sketch.png -------------------------------------------------------------------------------- /figs/gradio_all_tasks.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/salesforce/UniControl/9f452ee2acda6bdc4c9c6b67072bdc872277a403/figs/gradio_all_tasks.png -------------------------------------------------------------------------------- /figs/gradio_bbox.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/salesforce/UniControl/9f452ee2acda6bdc4c9c6b67072bdc872277a403/figs/gradio_bbox.png -------------------------------------------------------------------------------- /figs/gradio_canny.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/salesforce/UniControl/9f452ee2acda6bdc4c9c6b67072bdc872277a403/figs/gradio_canny.png -------------------------------------------------------------------------------- /figs/gradio_colorization.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/salesforce/UniControl/9f452ee2acda6bdc4c9c6b67072bdc872277a403/figs/gradio_colorization.png -------------------------------------------------------------------------------- /figs/gradio_deblur.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/salesforce/UniControl/9f452ee2acda6bdc4c9c6b67072bdc872277a403/figs/gradio_deblur.png -------------------------------------------------------------------------------- /figs/gradio_depth.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/salesforce/UniControl/9f452ee2acda6bdc4c9c6b67072bdc872277a403/figs/gradio_depth.png -------------------------------------------------------------------------------- /figs/gradio_hed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/salesforce/UniControl/9f452ee2acda6bdc4c9c6b67072bdc872277a403/figs/gradio_hed.png -------------------------------------------------------------------------------- /figs/gradio_hedsketch.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/salesforce/UniControl/9f452ee2acda6bdc4c9c6b67072bdc872277a403/figs/gradio_hedsketch.png -------------------------------------------------------------------------------- /figs/gradio_inpainting.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/salesforce/UniControl/9f452ee2acda6bdc4c9c6b67072bdc872277a403/figs/gradio_inpainting.png -------------------------------------------------------------------------------- /figs/gradio_normal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/salesforce/UniControl/9f452ee2acda6bdc4c9c6b67072bdc872277a403/figs/gradio_normal.png -------------------------------------------------------------------------------- /figs/gradio_outpainting.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/salesforce/UniControl/9f452ee2acda6bdc4c9c6b67072bdc872277a403/figs/gradio_outpainting.png -------------------------------------------------------------------------------- /figs/gradio_pose.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/salesforce/UniControl/9f452ee2acda6bdc4c9c6b67072bdc872277a403/figs/gradio_pose.png -------------------------------------------------------------------------------- /figs/gradio_seg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/salesforce/UniControl/9f452ee2acda6bdc4c9c6b67072bdc872277a403/figs/gradio_seg.png -------------------------------------------------------------------------------- /figs/method.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/salesforce/UniControl/9f452ee2acda6bdc4c9c6b67072bdc872277a403/figs/method.png -------------------------------------------------------------------------------- /figs/northeastern.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/salesforce/UniControl/9f452ee2acda6bdc4c9c6b67072bdc872277a403/figs/northeastern.png -------------------------------------------------------------------------------- /figs/salesforce.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/salesforce/UniControl/9f452ee2acda6bdc4c9c6b67072bdc872277a403/figs/salesforce.png -------------------------------------------------------------------------------- /figs/stanford.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/salesforce/UniControl/9f452ee2acda6bdc4c9c6b67072bdc872277a403/figs/stanford.png -------------------------------------------------------------------------------- /font/DejaVuSans.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/salesforce/UniControl/9f452ee2acda6bdc4c9c6b67072bdc872277a403/font/DejaVuSans.ttf -------------------------------------------------------------------------------- /ldm/data/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/salesforce/UniControl/9f452ee2acda6bdc4c9c6b67072bdc872277a403/ldm/data/__init__.py -------------------------------------------------------------------------------- /ldm/models/diffusion/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/salesforce/UniControl/9f452ee2acda6bdc4c9c6b67072bdc872277a403/ldm/models/diffusion/__init__.py -------------------------------------------------------------------------------- /ldm/models/diffusion/dpm_solver/__init__.py: -------------------------------------------------------------------------------- 1 | from .sampler import DPMSolverSampler -------------------------------------------------------------------------------- /ldm/modules/diffusionmodules/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/salesforce/UniControl/9f452ee2acda6bdc4c9c6b67072bdc872277a403/ldm/modules/diffusionmodules/__init__.py -------------------------------------------------------------------------------- /ldm/modules/distributions/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/salesforce/UniControl/9f452ee2acda6bdc4c9c6b67072bdc872277a403/ldm/modules/distributions/__init__.py -------------------------------------------------------------------------------- /ldm/modules/encoders/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/salesforce/UniControl/9f452ee2acda6bdc4c9c6b67072bdc872277a403/ldm/modules/encoders/__init__.py -------------------------------------------------------------------------------- /ldm/modules/image_degradation/__init__.py: -------------------------------------------------------------------------------- 1 | ''' 2 | * Copyright (c) 2023 Salesforce, Inc. 3 | * All rights reserved. 4 | * SPDX-License-Identifier: Apache License 2.0 5 | * For full license text, see LICENSE.txt file in the repo root or http://www.apache.org/licenses/ 6 | * By Can Qin 7 | * Modified from ControlNet repo: https://github.com/lllyasviel/ControlNet 8 | * Copyright (c) 2023 Lvmin Zhang and Maneesh Agrawala 9 | ''' 10 | 11 | from ldm.modules.image_degradation.bsrgan import degradation_bsrgan_variant as degradation_fn_bsr 12 | from ldm.modules.image_degradation.bsrgan_light import degradation_bsrgan_variant as degradation_fn_bsr_light 13 | -------------------------------------------------------------------------------- /ldm/modules/image_degradation/utils/test.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/salesforce/UniControl/9f452ee2acda6bdc4c9c6b67072bdc872277a403/ldm/modules/image_degradation/utils/test.png -------------------------------------------------------------------------------- /ldm/modules/midas/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/salesforce/UniControl/9f452ee2acda6bdc4c9c6b67072bdc872277a403/ldm/modules/midas/__init__.py -------------------------------------------------------------------------------- /ldm/modules/midas/midas/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/salesforce/UniControl/9f452ee2acda6bdc4c9c6b67072bdc872277a403/ldm/modules/midas/midas/__init__.py -------------------------------------------------------------------------------- /ldm/modules/midas/midas/base_model.py: -------------------------------------------------------------------------------- 1 | ''' 2 | * Copyright (c) 2023 Salesforce, Inc. 3 | * All rights reserved. 4 | * SPDX-License-Identifier: Apache License 2.0 5 | * For full license text, see LICENSE.txt file in the repo root or http://www.apache.org/licenses/ 6 | * By Can Qin 7 | * Modified from ControlNet repo: https://github.com/lllyasviel/ControlNet 8 | * Copyright (c) 2023 Lvmin Zhang and Maneesh Agrawala 9 | ''' 10 | 11 | import torch 12 | 13 | 14 | class BaseModel(torch.nn.Module): 15 | def load(self, path): 16 | """Load model from file. 17 | 18 | Args: 19 | path (str): file path 20 | """ 21 | parameters = torch.load(path, map_location=torch.device('cpu')) 22 | 23 | if "optimizer" in parameters: 24 | parameters = parameters["model"] 25 | 26 | self.load_state_dict(parameters) 27 | -------------------------------------------------------------------------------- /load_model/load_safetensors_model.py: -------------------------------------------------------------------------------- 1 | ''' 2 | * Copyright (c) 2023 Salesforce, Inc. 3 | * All rights reserved. 4 | * SPDX-License-Identifier: Apache License 2.0 5 | * For full license text, see LICENSE.txt file in the repo root or http://www.apache.org/licenses/ 6 | * By Can Qin and Shu Zhang 7 | ''' 8 | 9 | 10 | from safetensors.torch import load_file as stload 11 | from collections import OrderedDict 12 | from cldm.model import create_model 13 | 14 | st_path = '../ckpts/unicontrol_v1.1.st' 15 | model_dict = OrderedDict(stload(st_path, device='cpu')) 16 | 17 | model = create_model('./models/cldm_v15_unicontrol.yaml').cpu() 18 | model.load_state_dict(model_dict, strict=False) 19 | model = model.cuda() 20 | -------------------------------------------------------------------------------- /multigen20m/README.md: -------------------------------------------------------------------------------- 1 | ## Instruction 2 | please download [dataset](https://console.cloud.google.com/storage/browser/sfr-unicontrol-data-research/dataset) here. 3 | 4 | 5 | ## File Structure 6 | ``` 7 | . 8 | └── multigen20m 9 | └──dataset 10 |    ├── conditions 11 |    ├── images 12 |    └── json_files 13 | ``` 14 | -------------------------------------------------------------------------------- /share.py: -------------------------------------------------------------------------------- 1 | import config 2 | from cldm.hack import disable_verbosity, enable_sliced_attention 3 | 4 | 5 | disable_verbosity() 6 | 7 | if config.save_memory: 8 | enable_sliced_attention() 9 | -------------------------------------------------------------------------------- /test_imgs/Zelda-Breath-of-the-Wild.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/salesforce/UniControl/9f452ee2acda6bdc4c9c6b67072bdc872277a403/test_imgs/Zelda-Breath-of-the-Wild.jpg -------------------------------------------------------------------------------- /test_imgs/bag.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/salesforce/UniControl/9f452ee2acda6bdc4c9c6b67072bdc872277a403/test_imgs/bag.png -------------------------------------------------------------------------------- /test_imgs/bag_scribble.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/salesforce/UniControl/9f452ee2acda6bdc4c9c6b67072bdc872277a403/test_imgs/bag_scribble.png -------------------------------------------------------------------------------- /test_imgs/baseball-player.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/salesforce/UniControl/9f452ee2acda6bdc4c9c6b67072bdc872277a403/test_imgs/baseball-player.jpg -------------------------------------------------------------------------------- /test_imgs/bird.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/salesforce/UniControl/9f452ee2acda6bdc4c9c6b67072bdc872277a403/test_imgs/bird.png -------------------------------------------------------------------------------- /test_imgs/boy.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/salesforce/UniControl/9f452ee2acda6bdc4c9c6b67072bdc872277a403/test_imgs/boy.png -------------------------------------------------------------------------------- /test_imgs/building.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/salesforce/UniControl/9f452ee2acda6bdc4c9c6b67072bdc872277a403/test_imgs/building.png -------------------------------------------------------------------------------- /test_imgs/building2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/salesforce/UniControl/9f452ee2acda6bdc4c9c6b67072bdc872277a403/test_imgs/building2.png -------------------------------------------------------------------------------- /test_imgs/cute_robot.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/salesforce/UniControl/9f452ee2acda6bdc4c9c6b67072bdc872277a403/test_imgs/cute_robot.png -------------------------------------------------------------------------------- /test_imgs/cyber.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/salesforce/UniControl/9f452ee2acda6bdc4c9c6b67072bdc872277a403/test_imgs/cyber.png -------------------------------------------------------------------------------- /test_imgs/dog.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/salesforce/UniControl/9f452ee2acda6bdc4c9c6b67072bdc872277a403/test_imgs/dog.png -------------------------------------------------------------------------------- /test_imgs/dog2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/salesforce/UniControl/9f452ee2acda6bdc4c9c6b67072bdc872277a403/test_imgs/dog2.png -------------------------------------------------------------------------------- /test_imgs/girl-brush-teeth.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/salesforce/UniControl/9f452ee2acda6bdc4c9c6b67072bdc872277a403/test_imgs/girl-brush-teeth.jpg -------------------------------------------------------------------------------- /test_imgs/house.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/salesforce/UniControl/9f452ee2acda6bdc4c9c6b67072bdc872277a403/test_imgs/house.png -------------------------------------------------------------------------------- /test_imgs/house_line.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/salesforce/UniControl/9f452ee2acda6bdc4c9c6b67072bdc872277a403/test_imgs/house_line.png -------------------------------------------------------------------------------- /test_imgs/human.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/salesforce/UniControl/9f452ee2acda6bdc4c9c6b67072bdc872277a403/test_imgs/human.png -------------------------------------------------------------------------------- /test_imgs/human_line.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/salesforce/UniControl/9f452ee2acda6bdc4c9c6b67072bdc872277a403/test_imgs/human_line.png -------------------------------------------------------------------------------- /test_imgs/kitchen.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/salesforce/UniControl/9f452ee2acda6bdc4c9c6b67072bdc872277a403/test_imgs/kitchen.jpg -------------------------------------------------------------------------------- /test_imgs/man-donut.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/salesforce/UniControl/9f452ee2acda6bdc4c9c6b67072bdc872277a403/test_imgs/man-donut.jpg -------------------------------------------------------------------------------- /test_imgs/man-shirt-tie.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/salesforce/UniControl/9f452ee2acda6bdc4c9c6b67072bdc872277a403/test_imgs/man-shirt-tie.jpg -------------------------------------------------------------------------------- /test_imgs/man.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/salesforce/UniControl/9f452ee2acda6bdc4c9c6b67072bdc872277a403/test_imgs/man.png -------------------------------------------------------------------------------- /test_imgs/mousse-cake.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/salesforce/UniControl/9f452ee2acda6bdc4c9c6b67072bdc872277a403/test_imgs/mousse-cake.jpg -------------------------------------------------------------------------------- /test_imgs/old.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/salesforce/UniControl/9f452ee2acda6bdc4c9c6b67072bdc872277a403/test_imgs/old.png -------------------------------------------------------------------------------- /test_imgs/pose1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/salesforce/UniControl/9f452ee2acda6bdc4c9c6b67072bdc872277a403/test_imgs/pose1.png -------------------------------------------------------------------------------- /test_imgs/pose2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/salesforce/UniControl/9f452ee2acda6bdc4c9c6b67072bdc872277a403/test_imgs/pose2.png -------------------------------------------------------------------------------- /test_imgs/room.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/salesforce/UniControl/9f452ee2acda6bdc4c9c6b67072bdc872277a403/test_imgs/room.png -------------------------------------------------------------------------------- /test_imgs/sd.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/salesforce/UniControl/9f452ee2acda6bdc4c9c6b67072bdc872277a403/test_imgs/sd.png -------------------------------------------------------------------------------- /test_imgs/shose.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/salesforce/UniControl/9f452ee2acda6bdc4c9c6b67072bdc872277a403/test_imgs/shose.png -------------------------------------------------------------------------------- /test_imgs/super-man-city.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/salesforce/UniControl/9f452ee2acda6bdc4c9c6b67072bdc872277a403/test_imgs/super-man-city.jpg -------------------------------------------------------------------------------- /test_imgs/toy.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/salesforce/UniControl/9f452ee2acda6bdc4c9c6b67072bdc872277a403/test_imgs/toy.png -------------------------------------------------------------------------------- /test_imgs/user_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/salesforce/UniControl/9f452ee2acda6bdc4c9c6b67072bdc872277a403/test_imgs/user_1.png -------------------------------------------------------------------------------- /test_imgs/user_3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/salesforce/UniControl/9f452ee2acda6bdc4c9c6b67072bdc872277a403/test_imgs/user_3.png -------------------------------------------------------------------------------- /test_imgs/woman-hat.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/salesforce/UniControl/9f452ee2acda6bdc4c9c6b67072bdc872277a403/test_imgs/woman-hat.jpg --------------------------------------------------------------------------------