autogluon.multimodal 1.1.2b20241106__tar.gz → 1.1.2b20241108__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {autogluon.multimodal-1.1.2b20241106 → autogluon.multimodal-1.1.2b20241108}/PKG-INFO +1 -1
- {autogluon.multimodal-1.1.2b20241106 → autogluon.multimodal-1.1.2b20241108}/src/autogluon/multimodal/configs/pretrain/detection/dino/dino-4scale_r50_8xb2-12e_coco.py +1 -1
- {autogluon.multimodal-1.1.2b20241106 → autogluon.multimodal-1.1.2b20241108}/src/autogluon/multimodal/learners/object_detection.py +91 -36
- {autogluon.multimodal-1.1.2b20241106 → autogluon.multimodal-1.1.2b20241108}/src/autogluon/multimodal/predictor.py +8 -2
- {autogluon.multimodal-1.1.2b20241106 → autogluon.multimodal-1.1.2b20241108}/src/autogluon/multimodal/utils/__init__.py +1 -1
- {autogluon.multimodal-1.1.2b20241106 → autogluon.multimodal-1.1.2b20241108}/src/autogluon/multimodal/utils/hpo.py +14 -5
- {autogluon.multimodal-1.1.2b20241106 → autogluon.multimodal-1.1.2b20241108}/src/autogluon/multimodal/utils/object_detection.py +131 -47
- {autogluon.multimodal-1.1.2b20241106 → autogluon.multimodal-1.1.2b20241108}/src/autogluon/multimodal/version.py +1 -1
- {autogluon.multimodal-1.1.2b20241106 → autogluon.multimodal-1.1.2b20241108}/src/autogluon.multimodal.egg-info/PKG-INFO +1 -1
- {autogluon.multimodal-1.1.2b20241106 → autogluon.multimodal-1.1.2b20241108}/src/autogluon.multimodal.egg-info/requires.txt +7 -7
- {autogluon.multimodal-1.1.2b20241106 → autogluon.multimodal-1.1.2b20241108}/setup.cfg +0 -0
- {autogluon.multimodal-1.1.2b20241106 → autogluon.multimodal-1.1.2b20241108}/setup.py +0 -0
- {autogluon.multimodal-1.1.2b20241106 → autogluon.multimodal-1.1.2b20241108}/src/autogluon/multimodal/__init__.py +0 -0
- {autogluon.multimodal-1.1.2b20241106 → autogluon.multimodal-1.1.2b20241108}/src/autogluon/multimodal/cli/__init__.py +0 -0
- {autogluon.multimodal-1.1.2b20241106 → autogluon.multimodal-1.1.2b20241108}/src/autogluon/multimodal/cli/prepare_detection_dataset.py +0 -0
- {autogluon.multimodal-1.1.2b20241106 → autogluon.multimodal-1.1.2b20241108}/src/autogluon/multimodal/cli/voc2coco.py +0 -0
- {autogluon.multimodal-1.1.2b20241106 → autogluon.multimodal-1.1.2b20241108}/src/autogluon/multimodal/configs/__init__.py +0 -0
- {autogluon.multimodal-1.1.2b20241106 → autogluon.multimodal-1.1.2b20241108}/src/autogluon/multimodal/configs/pretrain/__init__.py +0 -0
- {autogluon.multimodal-1.1.2b20241106 → autogluon.multimodal-1.1.2b20241108}/src/autogluon/multimodal/configs/pretrain/detection/__init__.py +0 -0
- {autogluon.multimodal-1.1.2b20241106 → autogluon.multimodal-1.1.2b20241108}/src/autogluon/multimodal/configs/pretrain/detection/coco_detection.py +0 -0
- {autogluon.multimodal-1.1.2b20241106 → autogluon.multimodal-1.1.2b20241108}/src/autogluon/multimodal/configs/pretrain/detection/default_runtime.py +0 -0
- {autogluon.multimodal-1.1.2b20241106 → autogluon.multimodal-1.1.2b20241108}/src/autogluon/multimodal/configs/pretrain/detection/dino/dino-5scale_swin-l_8xb2-12e_coco.py +0 -0
- {autogluon.multimodal-1.1.2b20241106 → autogluon.multimodal-1.1.2b20241108}/src/autogluon/multimodal/configs/pretrain/detection/dino/dino-5scale_swin-l_8xb2-36e_coco.py +0 -0
- {autogluon.multimodal-1.1.2b20241106 → autogluon.multimodal-1.1.2b20241108}/src/autogluon/multimodal/configs/pretrain/detection/dino/dino_swinl_tta.py +0 -0
- {autogluon.multimodal-1.1.2b20241106 → autogluon.multimodal-1.1.2b20241108}/src/autogluon/multimodal/configs/pretrain/detection/dino/dino_tta.py +0 -0
- {autogluon.multimodal-1.1.2b20241106 → autogluon.multimodal-1.1.2b20241108}/src/autogluon/multimodal/configs/pretrain/detection/faster_rcnn/__init__.py +0 -0
- {autogluon.multimodal-1.1.2b20241106 → autogluon.multimodal-1.1.2b20241108}/src/autogluon/multimodal/configs/pretrain/detection/faster_rcnn/faster_rcnn_r50_fpn.py +0 -0
- {autogluon.multimodal-1.1.2b20241106 → autogluon.multimodal-1.1.2b20241108}/src/autogluon/multimodal/configs/pretrain/detection/schedule_1x.py +0 -0
- {autogluon.multimodal-1.1.2b20241106 → autogluon.multimodal-1.1.2b20241108}/src/autogluon/multimodal/configs/pretrain/detection/voc/__init__.py +0 -0
- {autogluon.multimodal-1.1.2b20241106 → autogluon.multimodal-1.1.2b20241108}/src/autogluon/multimodal/configs/pretrain/detection/voc/faster_rcnn_r50_fpn_1x_voc0712.py +0 -0
- {autogluon.multimodal-1.1.2b20241106 → autogluon.multimodal-1.1.2b20241108}/src/autogluon/multimodal/configs/pretrain/detection/voc/voc0712.py +0 -0
- {autogluon.multimodal-1.1.2b20241106 → autogluon.multimodal-1.1.2b20241108}/src/autogluon/multimodal/configs/pretrain/detection/yolox/__init__.py +0 -0
- {autogluon.multimodal-1.1.2b20241106 → autogluon.multimodal-1.1.2b20241108}/src/autogluon/multimodal/configs/pretrain/detection/yolox/yolox_l_8xb8-300e_coco.py +0 -0
- {autogluon.multimodal-1.1.2b20241106 → autogluon.multimodal-1.1.2b20241108}/src/autogluon/multimodal/configs/pretrain/detection/yolox/yolox_m_8xb8-300e_coco.py +0 -0
- {autogluon.multimodal-1.1.2b20241106 → autogluon.multimodal-1.1.2b20241108}/src/autogluon/multimodal/configs/pretrain/detection/yolox/yolox_nano_8xb8-300e_coco.py +0 -0
- {autogluon.multimodal-1.1.2b20241106 → autogluon.multimodal-1.1.2b20241108}/src/autogluon/multimodal/configs/pretrain/detection/yolox/yolox_s_8xb8-300e_coco.py +0 -0
- {autogluon.multimodal-1.1.2b20241106 → autogluon.multimodal-1.1.2b20241108}/src/autogluon/multimodal/configs/pretrain/detection/yolox/yolox_tiny_8xb8-300e_coco.py +0 -0
- {autogluon.multimodal-1.1.2b20241106 → autogluon.multimodal-1.1.2b20241108}/src/autogluon/multimodal/configs/pretrain/detection/yolox/yolox_tta.py +0 -0
- {autogluon.multimodal-1.1.2b20241106 → autogluon.multimodal-1.1.2b20241108}/src/autogluon/multimodal/configs/pretrain/detection/yolox/yolox_x_8xb8-300e_coco.py +0 -0
- {autogluon.multimodal-1.1.2b20241106 → autogluon.multimodal-1.1.2b20241108}/src/autogluon/multimodal/constants.py +0 -0
- {autogluon.multimodal-1.1.2b20241106 → autogluon.multimodal-1.1.2b20241108}/src/autogluon/multimodal/data/__init__.py +0 -0
- {autogluon.multimodal-1.1.2b20241106 → autogluon.multimodal-1.1.2b20241108}/src/autogluon/multimodal/data/collator.py +0 -0
- {autogluon.multimodal-1.1.2b20241106 → autogluon.multimodal-1.1.2b20241108}/src/autogluon/multimodal/data/datamodule.py +0 -0
- {autogluon.multimodal-1.1.2b20241106 → autogluon.multimodal-1.1.2b20241108}/src/autogluon/multimodal/data/dataset.py +0 -0
- {autogluon.multimodal-1.1.2b20241106 → autogluon.multimodal-1.1.2b20241108}/src/autogluon/multimodal/data/dataset_mmlab/__init__.py +0 -0
- {autogluon.multimodal-1.1.2b20241106 → autogluon.multimodal-1.1.2b20241108}/src/autogluon/multimodal/data/dataset_mmlab/multi_image_mix_dataset.py +0 -0
- {autogluon.multimodal-1.1.2b20241106 → autogluon.multimodal-1.1.2b20241108}/src/autogluon/multimodal/data/infer_types.py +0 -0
- {autogluon.multimodal-1.1.2b20241106 → autogluon.multimodal-1.1.2b20241108}/src/autogluon/multimodal/data/label_encoder.py +0 -0
- {autogluon.multimodal-1.1.2b20241106 → autogluon.multimodal-1.1.2b20241108}/src/autogluon/multimodal/data/mixup.py +0 -0
- {autogluon.multimodal-1.1.2b20241106 → autogluon.multimodal-1.1.2b20241108}/src/autogluon/multimodal/data/preprocess_dataframe.py +0 -0
- {autogluon.multimodal-1.1.2b20241106 → autogluon.multimodal-1.1.2b20241108}/src/autogluon/multimodal/data/process_categorical.py +0 -0
- {autogluon.multimodal-1.1.2b20241106 → autogluon.multimodal-1.1.2b20241108}/src/autogluon/multimodal/data/process_document.py +0 -0
- {autogluon.multimodal-1.1.2b20241106 → autogluon.multimodal-1.1.2b20241108}/src/autogluon/multimodal/data/process_image.py +0 -0
- {autogluon.multimodal-1.1.2b20241106 → autogluon.multimodal-1.1.2b20241108}/src/autogluon/multimodal/data/process_label.py +0 -0
- {autogluon.multimodal-1.1.2b20241106 → autogluon.multimodal-1.1.2b20241108}/src/autogluon/multimodal/data/process_mmlab/__init__.py +0 -0
- {autogluon.multimodal-1.1.2b20241106 → autogluon.multimodal-1.1.2b20241108}/src/autogluon/multimodal/data/process_mmlab/process_mmdet.py +0 -0
- {autogluon.multimodal-1.1.2b20241106 → autogluon.multimodal-1.1.2b20241108}/src/autogluon/multimodal/data/process_mmlab/process_mmlab_base.py +0 -0
- {autogluon.multimodal-1.1.2b20241106 → autogluon.multimodal-1.1.2b20241108}/src/autogluon/multimodal/data/process_mmlab/process_mmocr.py +0 -0
- {autogluon.multimodal-1.1.2b20241106 → autogluon.multimodal-1.1.2b20241108}/src/autogluon/multimodal/data/process_ner.py +0 -0
- {autogluon.multimodal-1.1.2b20241106 → autogluon.multimodal-1.1.2b20241108}/src/autogluon/multimodal/data/process_numerical.py +0 -0
- {autogluon.multimodal-1.1.2b20241106 → autogluon.multimodal-1.1.2b20241108}/src/autogluon/multimodal/data/process_semantic_seg_img.py +0 -0
- {autogluon.multimodal-1.1.2b20241106 → autogluon.multimodal-1.1.2b20241108}/src/autogluon/multimodal/data/process_text.py +0 -0
- {autogluon.multimodal-1.1.2b20241106 → autogluon.multimodal-1.1.2b20241108}/src/autogluon/multimodal/data/randaug.py +0 -0
- {autogluon.multimodal-1.1.2b20241106 → autogluon.multimodal-1.1.2b20241108}/src/autogluon/multimodal/data/template_engine.py +0 -0
- {autogluon.multimodal-1.1.2b20241106 → autogluon.multimodal-1.1.2b20241108}/src/autogluon/multimodal/data/templates.py +0 -0
- {autogluon.multimodal-1.1.2b20241106 → autogluon.multimodal-1.1.2b20241108}/src/autogluon/multimodal/data/trivial_augmenter.py +0 -0
- {autogluon.multimodal-1.1.2b20241106 → autogluon.multimodal-1.1.2b20241108}/src/autogluon/multimodal/data/utils.py +0 -0
- {autogluon.multimodal-1.1.2b20241106 → autogluon.multimodal-1.1.2b20241108}/src/autogluon/multimodal/learners/__init__.py +0 -0
- {autogluon.multimodal-1.1.2b20241106 → autogluon.multimodal-1.1.2b20241108}/src/autogluon/multimodal/learners/base.py +0 -0
- {autogluon.multimodal-1.1.2b20241106 → autogluon.multimodal-1.1.2b20241108}/src/autogluon/multimodal/learners/few_shot_svm.py +0 -0
- {autogluon.multimodal-1.1.2b20241106 → autogluon.multimodal-1.1.2b20241108}/src/autogluon/multimodal/learners/matching.py +0 -0
- {autogluon.multimodal-1.1.2b20241106 → autogluon.multimodal-1.1.2b20241108}/src/autogluon/multimodal/learners/ner.py +0 -0
- {autogluon.multimodal-1.1.2b20241106 → autogluon.multimodal-1.1.2b20241108}/src/autogluon/multimodal/learners/semantic_segmentation.py +0 -0
- {autogluon.multimodal-1.1.2b20241106 → autogluon.multimodal-1.1.2b20241108}/src/autogluon/multimodal/models/__init__.py +0 -0
- {autogluon.multimodal-1.1.2b20241106 → autogluon.multimodal-1.1.2b20241108}/src/autogluon/multimodal/models/adaptation_layers.py +0 -0
- {autogluon.multimodal-1.1.2b20241106 → autogluon.multimodal-1.1.2b20241108}/src/autogluon/multimodal/models/categorical_mlp.py +0 -0
- {autogluon.multimodal-1.1.2b20241106 → autogluon.multimodal-1.1.2b20241108}/src/autogluon/multimodal/models/clip.py +0 -0
- {autogluon.multimodal-1.1.2b20241106 → autogluon.multimodal-1.1.2b20241108}/src/autogluon/multimodal/models/custom_hf_models/modeling_sam_for_conv_lora.py +0 -0
- {autogluon.multimodal-1.1.2b20241106 → autogluon.multimodal-1.1.2b20241108}/src/autogluon/multimodal/models/custom_transformer.py +0 -0
- {autogluon.multimodal-1.1.2b20241106 → autogluon.multimodal-1.1.2b20241108}/src/autogluon/multimodal/models/document_transformer.py +0 -0
- {autogluon.multimodal-1.1.2b20241106 → autogluon.multimodal-1.1.2b20241108}/src/autogluon/multimodal/models/ft_transformer.py +0 -0
- {autogluon.multimodal-1.1.2b20241106 → autogluon.multimodal-1.1.2b20241108}/src/autogluon/multimodal/models/fusion/__init__.py +0 -0
- {autogluon.multimodal-1.1.2b20241106 → autogluon.multimodal-1.1.2b20241108}/src/autogluon/multimodal/models/fusion/base.py +0 -0
- {autogluon.multimodal-1.1.2b20241106 → autogluon.multimodal-1.1.2b20241108}/src/autogluon/multimodal/models/fusion/fusion_mlp.py +0 -0
- {autogluon.multimodal-1.1.2b20241106 → autogluon.multimodal-1.1.2b20241108}/src/autogluon/multimodal/models/fusion/fusion_ner.py +0 -0
- {autogluon.multimodal-1.1.2b20241106 → autogluon.multimodal-1.1.2b20241108}/src/autogluon/multimodal/models/fusion/fusion_transformer.py +0 -0
- {autogluon.multimodal-1.1.2b20241106 → autogluon.multimodal-1.1.2b20241108}/src/autogluon/multimodal/models/huggingface_text.py +0 -0
- {autogluon.multimodal-1.1.2b20241106 → autogluon.multimodal-1.1.2b20241108}/src/autogluon/multimodal/models/mlp.py +0 -0
- {autogluon.multimodal-1.1.2b20241106 → autogluon.multimodal-1.1.2b20241108}/src/autogluon/multimodal/models/mmdet_image.py +0 -0
- {autogluon.multimodal-1.1.2b20241106 → autogluon.multimodal-1.1.2b20241108}/src/autogluon/multimodal/models/mmocr_text_detection.py +0 -0
- {autogluon.multimodal-1.1.2b20241106 → autogluon.multimodal-1.1.2b20241108}/src/autogluon/multimodal/models/mmocr_text_recognition.py +0 -0
- {autogluon.multimodal-1.1.2b20241106 → autogluon.multimodal-1.1.2b20241108}/src/autogluon/multimodal/models/ner_text.py +0 -0
- {autogluon.multimodal-1.1.2b20241106 → autogluon.multimodal-1.1.2b20241108}/src/autogluon/multimodal/models/numerical_mlp.py +0 -0
- {autogluon.multimodal-1.1.2b20241106 → autogluon.multimodal-1.1.2b20241108}/src/autogluon/multimodal/models/sam.py +0 -0
- {autogluon.multimodal-1.1.2b20241106 → autogluon.multimodal-1.1.2b20241108}/src/autogluon/multimodal/models/t_few.py +0 -0
- {autogluon.multimodal-1.1.2b20241106 → autogluon.multimodal-1.1.2b20241108}/src/autogluon/multimodal/models/timm_image.py +0 -0
- {autogluon.multimodal-1.1.2b20241106 → autogluon.multimodal-1.1.2b20241108}/src/autogluon/multimodal/models/utils.py +0 -0
- {autogluon.multimodal-1.1.2b20241106 → autogluon.multimodal-1.1.2b20241108}/src/autogluon/multimodal/optimization/__init__.py +0 -0
- {autogluon.multimodal-1.1.2b20241106 → autogluon.multimodal-1.1.2b20241108}/src/autogluon/multimodal/optimization/deepspeed.py +0 -0
- {autogluon.multimodal-1.1.2b20241106 → autogluon.multimodal-1.1.2b20241108}/src/autogluon/multimodal/optimization/lit_distiller.py +0 -0
- {autogluon.multimodal-1.1.2b20241106 → autogluon.multimodal-1.1.2b20241108}/src/autogluon/multimodal/optimization/lit_matcher.py +0 -0
- {autogluon.multimodal-1.1.2b20241106 → autogluon.multimodal-1.1.2b20241108}/src/autogluon/multimodal/optimization/lit_mmdet.py +0 -0
- {autogluon.multimodal-1.1.2b20241106 → autogluon.multimodal-1.1.2b20241108}/src/autogluon/multimodal/optimization/lit_module.py +0 -0
- {autogluon.multimodal-1.1.2b20241106 → autogluon.multimodal-1.1.2b20241108}/src/autogluon/multimodal/optimization/lit_ner.py +0 -0
- {autogluon.multimodal-1.1.2b20241106 → autogluon.multimodal-1.1.2b20241108}/src/autogluon/multimodal/optimization/lit_semantic_seg.py +0 -0
- {autogluon.multimodal-1.1.2b20241106 → autogluon.multimodal-1.1.2b20241108}/src/autogluon/multimodal/optimization/losses.py +0 -0
- {autogluon.multimodal-1.1.2b20241106 → autogluon.multimodal-1.1.2b20241108}/src/autogluon/multimodal/optimization/lr_scheduler.py +0 -0
- {autogluon.multimodal-1.1.2b20241106 → autogluon.multimodal-1.1.2b20241108}/src/autogluon/multimodal/optimization/semantic_seg_metrics.py +0 -0
- {autogluon.multimodal-1.1.2b20241106 → autogluon.multimodal-1.1.2b20241108}/src/autogluon/multimodal/optimization/utils.py +0 -0
- {autogluon.multimodal-1.1.2b20241106 → autogluon.multimodal-1.1.2b20241108}/src/autogluon/multimodal/presets.py +0 -0
- {autogluon.multimodal-1.1.2b20241106 → autogluon.multimodal-1.1.2b20241108}/src/autogluon/multimodal/problem_types.py +0 -0
- {autogluon.multimodal-1.1.2b20241106 → autogluon.multimodal-1.1.2b20241108}/src/autogluon/multimodal/registry.py +0 -0
- {autogluon.multimodal-1.1.2b20241106 → autogluon.multimodal-1.1.2b20241108}/src/autogluon/multimodal/utils/cache.py +0 -0
- {autogluon.multimodal-1.1.2b20241106 → autogluon.multimodal-1.1.2b20241108}/src/autogluon/multimodal/utils/checkpoint.py +0 -0
- {autogluon.multimodal-1.1.2b20241106 → autogluon.multimodal-1.1.2b20241108}/src/autogluon/multimodal/utils/cloud_io.py +0 -0
- {autogluon.multimodal-1.1.2b20241106 → autogluon.multimodal-1.1.2b20241108}/src/autogluon/multimodal/utils/colormap.py +0 -0
- {autogluon.multimodal-1.1.2b20241106 → autogluon.multimodal-1.1.2b20241108}/src/autogluon/multimodal/utils/config.py +0 -0
- {autogluon.multimodal-1.1.2b20241106 → autogluon.multimodal-1.1.2b20241108}/src/autogluon/multimodal/utils/data.py +0 -0
- {autogluon.multimodal-1.1.2b20241106 → autogluon.multimodal-1.1.2b20241108}/src/autogluon/multimodal/utils/distillation.py +0 -0
- {autogluon.multimodal-1.1.2b20241106 → autogluon.multimodal-1.1.2b20241108}/src/autogluon/multimodal/utils/download.py +0 -0
- {autogluon.multimodal-1.1.2b20241106 → autogluon.multimodal-1.1.2b20241108}/src/autogluon/multimodal/utils/environment.py +0 -0
- {autogluon.multimodal-1.1.2b20241106 → autogluon.multimodal-1.1.2b20241108}/src/autogluon/multimodal/utils/export.py +0 -0
- {autogluon.multimodal-1.1.2b20241106 → autogluon.multimodal-1.1.2b20241108}/src/autogluon/multimodal/utils/inference.py +0 -0
- {autogluon.multimodal-1.1.2b20241106 → autogluon.multimodal-1.1.2b20241108}/src/autogluon/multimodal/utils/label_studio.py +0 -0
- {autogluon.multimodal-1.1.2b20241106 → autogluon.multimodal-1.1.2b20241108}/src/autogluon/multimodal/utils/load.py +0 -0
- {autogluon.multimodal-1.1.2b20241106 → autogluon.multimodal-1.1.2b20241108}/src/autogluon/multimodal/utils/log.py +0 -0
- {autogluon.multimodal-1.1.2b20241106 → autogluon.multimodal-1.1.2b20241108}/src/autogluon/multimodal/utils/matcher.py +0 -0
- {autogluon.multimodal-1.1.2b20241106 → autogluon.multimodal-1.1.2b20241108}/src/autogluon/multimodal/utils/metric.py +0 -0
- {autogluon.multimodal-1.1.2b20241106 → autogluon.multimodal-1.1.2b20241108}/src/autogluon/multimodal/utils/misc.py +0 -0
- {autogluon.multimodal-1.1.2b20241106 → autogluon.multimodal-1.1.2b20241108}/src/autogluon/multimodal/utils/mmcv.py +0 -0
- {autogluon.multimodal-1.1.2b20241106 → autogluon.multimodal-1.1.2b20241108}/src/autogluon/multimodal/utils/model.py +0 -0
- {autogluon.multimodal-1.1.2b20241106 → autogluon.multimodal-1.1.2b20241108}/src/autogluon/multimodal/utils/nlpaug.py +0 -0
- {autogluon.multimodal-1.1.2b20241106 → autogluon.multimodal-1.1.2b20241108}/src/autogluon/multimodal/utils/onnx.py +0 -0
- {autogluon.multimodal-1.1.2b20241106 → autogluon.multimodal-1.1.2b20241108}/src/autogluon/multimodal/utils/save.py +0 -0
- {autogluon.multimodal-1.1.2b20241106 → autogluon.multimodal-1.1.2b20241108}/src/autogluon/multimodal/utils/visualizer.py +0 -0
- {autogluon.multimodal-1.1.2b20241106 → autogluon.multimodal-1.1.2b20241108}/src/autogluon.multimodal.egg-info/SOURCES.txt +0 -0
- {autogluon.multimodal-1.1.2b20241106 → autogluon.multimodal-1.1.2b20241108}/src/autogluon.multimodal.egg-info/dependency_links.txt +0 -0
- {autogluon.multimodal-1.1.2b20241106 → autogluon.multimodal-1.1.2b20241108}/src/autogluon.multimodal.egg-info/namespace_packages.txt +0 -0
- {autogluon.multimodal-1.1.2b20241106 → autogluon.multimodal-1.1.2b20241108}/src/autogluon.multimodal.egg-info/top_level.txt +0 -0
- {autogluon.multimodal-1.1.2b20241106 → autogluon.multimodal-1.1.2b20241108}/src/autogluon.multimodal.egg-info/zip-safe +0 -0
@@ -84,7 +84,7 @@ model = dict(
|
|
84
84
|
# train_pipeline, NOTE the img_scale and the Pad's size_divisor is different
|
85
85
|
# from the default setting in mmdet.
|
86
86
|
train_pipeline = [
|
87
|
-
dict(type="LoadImageFromFile", backend_args={{_base_.backend_args}}),
|
87
|
+
dict(type="LoadImageFromFile", backend_args={{_base_.backend_args}}), # nosec
|
88
88
|
dict(type="LoadAnnotations", with_bbox=True),
|
89
89
|
dict(type="RandomFlip", prob=0.5),
|
90
90
|
dict(
|
@@ -15,12 +15,13 @@ from ..utils import (
|
|
15
15
|
check_if_packages_installed,
|
16
16
|
cocoeval,
|
17
17
|
convert_pred_to_xywh,
|
18
|
+
convert_result_df,
|
18
19
|
create_fusion_model,
|
19
20
|
extract_from_output,
|
20
21
|
from_coco_or_voc,
|
21
22
|
get_detection_classes,
|
22
23
|
object_detection_data_to_df,
|
23
|
-
|
24
|
+
save_result_coco_format,
|
24
25
|
setup_save_path,
|
25
26
|
split_train_tuning_data,
|
26
27
|
)
|
@@ -39,8 +40,9 @@ class ObjectDetectionLearner(BaseLearner):
|
|
39
40
|
hyperparameters: Optional[dict] = None,
|
40
41
|
path: Optional[str] = None,
|
41
42
|
verbosity: Optional[int] = 2,
|
42
|
-
num_classes: Optional[int] = None,
|
43
|
-
classes: Optional[list] = None,
|
43
|
+
num_classes: Optional[int] = None,
|
44
|
+
classes: Optional[list] = None,
|
45
|
+
category_ids: Optional[list] = None,
|
44
46
|
warn_if_exist: Optional[bool] = True,
|
45
47
|
enable_progress_bar: Optional[bool] = None,
|
46
48
|
pretrained: Optional[bool] = True,
|
@@ -74,14 +76,17 @@ class ObjectDetectionLearner(BaseLearner):
|
|
74
76
|
)
|
75
77
|
check_if_packages_installed(problem_type=self._problem_type)
|
76
78
|
|
79
|
+
self._config = self.get_config_per_run(config=self._config, hyperparameters=hyperparameters)
|
80
|
+
|
77
81
|
self._output_shape = num_classes
|
78
82
|
self._classes = classes
|
83
|
+
self._category_ids = category_ids
|
79
84
|
self._sample_data_path = sample_data_path
|
80
85
|
|
81
86
|
# TODO: merge object detection and open vocabulary object detection
|
82
87
|
self._label_column = "label"
|
83
88
|
if self._sample_data_path is not None:
|
84
|
-
self._classes = get_detection_classes(self._sample_data_path)
|
89
|
+
self._classes, self._category_ids = get_detection_classes(self._sample_data_path)
|
85
90
|
self._output_shape = len(self._classes)
|
86
91
|
|
87
92
|
# TODO: merge _detection_anno_train and detection_anno_train?
|
@@ -97,15 +102,32 @@ class ObjectDetectionLearner(BaseLearner):
|
|
97
102
|
"""
|
98
103
|
Return the classes of object detection.
|
99
104
|
"""
|
100
|
-
|
105
|
+
if self._model.model.CLASSES is not None and self._classes is not None:
|
106
|
+
assert self._classes == self._model.model.CLASSES, f"{self._classes}\n{self._model.model.CLASSES}"
|
107
|
+
return self._classes if self._classes is not None else self._model.model.CLASSES
|
108
|
+
|
109
|
+
@property
|
110
|
+
def category_ids(self):
|
111
|
+
"""
|
112
|
+
Return the classes of object detection.
|
113
|
+
"""
|
114
|
+
return self._category_ids
|
101
115
|
|
102
116
|
def setup_detection_train_tuning_data(self, max_num_tuning_data, seed, train_data, tuning_data):
|
103
117
|
if isinstance(train_data, str):
|
104
118
|
self._detection_anno_train = train_data
|
105
|
-
train_data = from_coco_or_voc(
|
119
|
+
train_data = from_coco_or_voc(
|
120
|
+
train_data,
|
121
|
+
"train",
|
122
|
+
coco_root=self._config.model.mmdet_image.coco_root,
|
123
|
+
) # TODO: Refactor to use convert_data_to_df
|
106
124
|
if tuning_data is not None:
|
107
125
|
self.detection_anno_train = tuning_data
|
108
|
-
tuning_data = from_coco_or_voc(
|
126
|
+
tuning_data = from_coco_or_voc(
|
127
|
+
tuning_data,
|
128
|
+
"val",
|
129
|
+
coco_root=self._config.model.mmdet_image.coco_root,
|
130
|
+
) # TODO: Refactor to use convert_data_to_df
|
109
131
|
if max_num_tuning_data is not None:
|
110
132
|
if len(tuning_data) > max_num_tuning_data:
|
111
133
|
tuning_data = tuning_data.sample(
|
@@ -114,10 +136,16 @@ class ObjectDetectionLearner(BaseLearner):
|
|
114
136
|
elif isinstance(train_data, pd.DataFrame):
|
115
137
|
self._detection_anno_train = None
|
116
138
|
# sanity check dataframe columns
|
117
|
-
train_data = object_detection_data_to_df(
|
139
|
+
train_data = object_detection_data_to_df(
|
140
|
+
train_data,
|
141
|
+
coco_root=self._config.model.mmdet_image.coco_root,
|
142
|
+
)
|
118
143
|
if tuning_data is not None:
|
119
144
|
self.detection_anno_train = tuning_data
|
120
|
-
tuning_data = object_detection_data_to_df(
|
145
|
+
tuning_data = object_detection_data_to_df(
|
146
|
+
tuning_data,
|
147
|
+
coco_root=self._config.model.mmdet_image.coco_root,
|
148
|
+
)
|
121
149
|
if max_num_tuning_data is not None:
|
122
150
|
if len(tuning_data) > max_num_tuning_data:
|
123
151
|
tuning_data = tuning_data.sample(
|
@@ -556,7 +584,9 @@ class ObjectDetectionLearner(BaseLearner):
|
|
556
584
|
if isinstance(anno_file_or_df, str):
|
557
585
|
anno_file = anno_file_or_df
|
558
586
|
data = from_coco_or_voc(
|
559
|
-
anno_file,
|
587
|
+
anno_file,
|
588
|
+
"test",
|
589
|
+
coco_root=self._config.model.mmdet_image.coco_root,
|
560
590
|
) # TODO: maybe remove default splits hardcoding (only used in VOC)
|
561
591
|
if os.path.isdir(anno_file):
|
562
592
|
eval_tool = "torchmetrics" # we can only use torchmetrics for VOC format evaluation.
|
@@ -636,7 +666,10 @@ class ObjectDetectionLearner(BaseLearner):
|
|
636
666
|
eval_tool=eval_tool,
|
637
667
|
)
|
638
668
|
else:
|
639
|
-
data = object_detection_data_to_df(
|
669
|
+
data = object_detection_data_to_df(
|
670
|
+
data,
|
671
|
+
coco_root=self._config.model.mmdet_image.coco_root,
|
672
|
+
)
|
640
673
|
return self.evaluate_coco(
|
641
674
|
anno_file_or_df=data,
|
642
675
|
metrics=metrics,
|
@@ -648,6 +681,7 @@ class ObjectDetectionLearner(BaseLearner):
|
|
648
681
|
self,
|
649
682
|
data: Union[pd.DataFrame, dict, list, str],
|
650
683
|
as_pandas: Optional[bool] = None,
|
684
|
+
as_coco: Optional[bool] = True,
|
651
685
|
realtime: Optional[bool] = False,
|
652
686
|
save_results: Optional[bool] = None,
|
653
687
|
**kwargs,
|
@@ -662,6 +696,8 @@ class ObjectDetectionLearner(BaseLearner):
|
|
662
696
|
follow same format (except for the `label` column).
|
663
697
|
as_pandas
|
664
698
|
Whether to return the output as a pandas DataFrame(Series) (True) or numpy array (False).
|
699
|
+
as_coco
|
700
|
+
Whether to save the output as a COCO json file (True) or pandas DataFrame (False).
|
665
701
|
realtime
|
666
702
|
Whether to do realtime inference, which is efficient for small data (default False).
|
667
703
|
If provided None, we would infer it on based on the data modalities
|
@@ -674,46 +710,65 @@ class ObjectDetectionLearner(BaseLearner):
|
|
674
710
|
Array of predictions, one corresponding to each row in given dataset.
|
675
711
|
"""
|
676
712
|
self.ensure_predict_ready()
|
713
|
+
if as_pandas is None and isinstance(data, pd.DataFrame):
|
714
|
+
as_pandas = True
|
715
|
+
|
677
716
|
ret_type = BBOX
|
717
|
+
|
718
|
+
# only supports coco/voc format for OBJECT_DETECTION
|
678
719
|
if self._problem_type == OBJECT_DETECTION:
|
679
|
-
|
680
|
-
|
720
|
+
data_path = data
|
721
|
+
data_df = object_detection_data_to_df(
|
722
|
+
data_path,
|
723
|
+
coco_root=self._config.model.mmdet_image.coco_root,
|
724
|
+
)
|
725
|
+
if self._label_column not in data_df:
|
681
726
|
self._label_column = None
|
682
727
|
|
683
728
|
outputs = self.predict_per_run(
|
684
|
-
data=
|
729
|
+
data=data_df,
|
685
730
|
realtime=realtime,
|
686
731
|
requires_label=False,
|
687
732
|
)
|
688
733
|
pred = extract_from_output(outputs=outputs, ret_type=ret_type)
|
689
|
-
if self._problem_type == OBJECT_DETECTION:
|
690
|
-
if self._model.output_bbox_format == XYWH:
|
691
|
-
pred = convert_pred_to_xywh(pred)
|
692
734
|
|
693
|
-
|
735
|
+
self._save_path = setup_save_path(
|
736
|
+
old_save_path=self._save_path,
|
737
|
+
warn_if_exist=False,
|
738
|
+
)
|
739
|
+
result_path = os.path.join(self._save_path, "result.txt")
|
740
|
+
|
741
|
+
pred_df = convert_result_df(
|
742
|
+
pred=convert_pred_to_xywh(pred) if self._model.output_bbox_format == XYWH else pred,
|
743
|
+
data=data_df,
|
744
|
+
detection_classes=self.classes,
|
745
|
+
result_path=result_path,
|
746
|
+
)
|
747
|
+
|
748
|
+
if save_results:
|
694
749
|
self._save_path = setup_save_path(
|
695
750
|
old_save_path=self._save_path,
|
696
751
|
warn_if_exist=False,
|
697
752
|
)
|
698
|
-
|
699
|
-
|
700
|
-
|
701
|
-
|
702
|
-
|
703
|
-
|
704
|
-
|
705
|
-
|
706
|
-
|
707
|
-
|
708
|
-
|
709
|
-
|
710
|
-
pred=pred,
|
711
|
-
data=data,
|
712
|
-
detection_classes=self._model.model.CLASSES,
|
713
|
-
result_path=None,
|
714
|
-
)
|
753
|
+
if as_coco:
|
754
|
+
result_path = os.path.join(self._save_path, "result.json")
|
755
|
+
save_result_coco_format(
|
756
|
+
data_path=data_path,
|
757
|
+
pred=pred,
|
758
|
+
category_ids=self.category_ids,
|
759
|
+
result_path=result_path,
|
760
|
+
coco_root=self._config.model.mmdet_image.coco_root,
|
761
|
+
)
|
762
|
+
else:
|
763
|
+
pred_df.to_csv(result_path, index=False)
|
764
|
+
logger.info(f"Saved detection results {'as coco' if as_coco else 'as dataframe'} to {result_path}")
|
715
765
|
|
716
|
-
|
766
|
+
if as_pandas:
|
767
|
+
return pred_df
|
768
|
+
else:
|
769
|
+
if self._model.output_bbox_format == XYWH:
|
770
|
+
pred = convert_pred_to_xywh(pred)
|
771
|
+
return pred
|
717
772
|
|
718
773
|
def predict_proba(
|
719
774
|
self,
|
@@ -605,6 +605,7 @@ class MultiModalPredictor:
|
|
605
605
|
as_pandas: Optional[bool] = None,
|
606
606
|
realtime: Optional[bool] = False,
|
607
607
|
save_results: Optional[bool] = None,
|
608
|
+
**kwargs,
|
608
609
|
):
|
609
610
|
"""
|
610
611
|
Predict the label column values for new data.
|
@@ -617,8 +618,8 @@ class MultiModalPredictor:
|
|
617
618
|
candidate_data
|
618
619
|
The candidate data from which to search the query data's matches.
|
619
620
|
id_mappings
|
620
|
-
|
621
|
-
|
621
|
+
Id-to-content mappings. The contents can be text, image, etc.
|
622
|
+
This is used when data contain the query/response identifiers instead of their contents.
|
622
623
|
as_pandas
|
623
624
|
Whether to return the output as a pandas DataFrame(Series) (True) or numpy array (False).
|
624
625
|
realtime
|
@@ -627,10 +628,14 @@ class MultiModalPredictor:
|
|
627
628
|
and sample number.
|
628
629
|
save_results
|
629
630
|
Whether to save the prediction results (only works for detection now)
|
631
|
+
**kwargs
|
632
|
+
Additional keyword arguments to pass to the underlying learner's predict method.
|
633
|
+
For example, `as_coco` for object detection tasks.
|
630
634
|
|
631
635
|
Returns
|
632
636
|
-------
|
633
637
|
Array of predictions, one corresponding to each row in given dataset.
|
638
|
+
Format depends on the specific learner and provided arguments.
|
634
639
|
"""
|
635
640
|
return self._learner.predict(
|
636
641
|
data=data,
|
@@ -639,6 +644,7 @@ class MultiModalPredictor:
|
|
639
644
|
realtime=realtime,
|
640
645
|
save_results=save_results,
|
641
646
|
id_mappings=id_mappings,
|
647
|
+
**kwargs,
|
642
648
|
)
|
643
649
|
|
644
650
|
def predict_proba(
|
@@ -82,6 +82,7 @@ from .object_detection import (
|
|
82
82
|
bbox_xyxy_to_xywh,
|
83
83
|
cocoeval,
|
84
84
|
convert_pred_to_xywh,
|
85
|
+
convert_result_df,
|
85
86
|
from_coco,
|
86
87
|
from_coco_or_voc,
|
87
88
|
from_dict,
|
@@ -90,7 +91,6 @@ from .object_detection import (
|
|
90
91
|
object_detection_data_to_df,
|
91
92
|
object_detection_df_to_coco,
|
92
93
|
save_result_coco_format,
|
93
|
-
save_result_df,
|
94
94
|
save_result_voc_format,
|
95
95
|
visualize_detection,
|
96
96
|
)
|
@@ -50,9 +50,9 @@ def hpo_trial(sampled_hyperparameters, learner, checkpoint_dir=None, **_fit_args
|
|
50
50
|
resources = context.get_trial_resources().required_resources
|
51
51
|
num_cpus = int(resources.get("CPU"))
|
52
52
|
|
53
|
-
|
54
|
-
|
55
|
-
|
53
|
+
# The original hyperparameters is the search space, replace it with the hyperparameters sampled
|
54
|
+
_fit_args["hyperparameters"] = sampled_hyperparameters
|
55
|
+
|
56
56
|
_fit_args["save_path"] = context.get_trial_dir() # We want to save each trial to a separate directory
|
57
57
|
logger.debug(f"hpo trial save_path: {_fit_args['save_path']}")
|
58
58
|
if checkpoint_dir is not None:
|
@@ -62,7 +62,15 @@ def hpo_trial(sampled_hyperparameters, learner, checkpoint_dir=None, **_fit_args
|
|
62
62
|
learner.fit_per_run(**_fit_args)
|
63
63
|
|
64
64
|
|
65
|
-
def build_final_learner(
|
65
|
+
def build_final_learner(
|
66
|
+
learner,
|
67
|
+
best_trial_path,
|
68
|
+
save_path,
|
69
|
+
last_ckpt_path,
|
70
|
+
is_matching,
|
71
|
+
standalone,
|
72
|
+
clean_ckpts,
|
73
|
+
):
|
66
74
|
"""
|
67
75
|
Build the final learner after HPO is finished.
|
68
76
|
|
@@ -167,12 +175,13 @@ def hyperparameter_tune(hyperparameter_tune_kwargs, resources, is_matching=False
|
|
167
175
|
mode = _fit_args.get("learner")._minmax_mode
|
168
176
|
save_path = _fit_args.get("save_path")
|
169
177
|
time_budget_s = _fit_args.get("max_time")
|
178
|
+
num_to_keep = hyperparameter_tune_kwargs.pop("num_to_keep", 3)
|
170
179
|
if time_budget_s is not None:
|
171
180
|
time_budget_s *= 0.95 # give some buffer time to ray
|
172
181
|
try:
|
173
182
|
run_config_kwargs = {
|
174
183
|
"checkpoint_config": CheckpointConfig(
|
175
|
-
num_to_keep=
|
184
|
+
num_to_keep=num_to_keep,
|
176
185
|
checkpoint_score_attribute=metric,
|
177
186
|
),
|
178
187
|
}
|