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.
Files changed (140) hide show
  1. {autogluon.multimodal-1.1.2b20241106 → autogluon.multimodal-1.1.2b20241108}/PKG-INFO +1 -1
  2. {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
  3. {autogluon.multimodal-1.1.2b20241106 → autogluon.multimodal-1.1.2b20241108}/src/autogluon/multimodal/learners/object_detection.py +91 -36
  4. {autogluon.multimodal-1.1.2b20241106 → autogluon.multimodal-1.1.2b20241108}/src/autogluon/multimodal/predictor.py +8 -2
  5. {autogluon.multimodal-1.1.2b20241106 → autogluon.multimodal-1.1.2b20241108}/src/autogluon/multimodal/utils/__init__.py +1 -1
  6. {autogluon.multimodal-1.1.2b20241106 → autogluon.multimodal-1.1.2b20241108}/src/autogluon/multimodal/utils/hpo.py +14 -5
  7. {autogluon.multimodal-1.1.2b20241106 → autogluon.multimodal-1.1.2b20241108}/src/autogluon/multimodal/utils/object_detection.py +131 -47
  8. {autogluon.multimodal-1.1.2b20241106 → autogluon.multimodal-1.1.2b20241108}/src/autogluon/multimodal/version.py +1 -1
  9. {autogluon.multimodal-1.1.2b20241106 → autogluon.multimodal-1.1.2b20241108}/src/autogluon.multimodal.egg-info/PKG-INFO +1 -1
  10. {autogluon.multimodal-1.1.2b20241106 → autogluon.multimodal-1.1.2b20241108}/src/autogluon.multimodal.egg-info/requires.txt +7 -7
  11. {autogluon.multimodal-1.1.2b20241106 → autogluon.multimodal-1.1.2b20241108}/setup.cfg +0 -0
  12. {autogluon.multimodal-1.1.2b20241106 → autogluon.multimodal-1.1.2b20241108}/setup.py +0 -0
  13. {autogluon.multimodal-1.1.2b20241106 → autogluon.multimodal-1.1.2b20241108}/src/autogluon/multimodal/__init__.py +0 -0
  14. {autogluon.multimodal-1.1.2b20241106 → autogluon.multimodal-1.1.2b20241108}/src/autogluon/multimodal/cli/__init__.py +0 -0
  15. {autogluon.multimodal-1.1.2b20241106 → autogluon.multimodal-1.1.2b20241108}/src/autogluon/multimodal/cli/prepare_detection_dataset.py +0 -0
  16. {autogluon.multimodal-1.1.2b20241106 → autogluon.multimodal-1.1.2b20241108}/src/autogluon/multimodal/cli/voc2coco.py +0 -0
  17. {autogluon.multimodal-1.1.2b20241106 → autogluon.multimodal-1.1.2b20241108}/src/autogluon/multimodal/configs/__init__.py +0 -0
  18. {autogluon.multimodal-1.1.2b20241106 → autogluon.multimodal-1.1.2b20241108}/src/autogluon/multimodal/configs/pretrain/__init__.py +0 -0
  19. {autogluon.multimodal-1.1.2b20241106 → autogluon.multimodal-1.1.2b20241108}/src/autogluon/multimodal/configs/pretrain/detection/__init__.py +0 -0
  20. {autogluon.multimodal-1.1.2b20241106 → autogluon.multimodal-1.1.2b20241108}/src/autogluon/multimodal/configs/pretrain/detection/coco_detection.py +0 -0
  21. {autogluon.multimodal-1.1.2b20241106 → autogluon.multimodal-1.1.2b20241108}/src/autogluon/multimodal/configs/pretrain/detection/default_runtime.py +0 -0
  22. {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
  23. {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
  24. {autogluon.multimodal-1.1.2b20241106 → autogluon.multimodal-1.1.2b20241108}/src/autogluon/multimodal/configs/pretrain/detection/dino/dino_swinl_tta.py +0 -0
  25. {autogluon.multimodal-1.1.2b20241106 → autogluon.multimodal-1.1.2b20241108}/src/autogluon/multimodal/configs/pretrain/detection/dino/dino_tta.py +0 -0
  26. {autogluon.multimodal-1.1.2b20241106 → autogluon.multimodal-1.1.2b20241108}/src/autogluon/multimodal/configs/pretrain/detection/faster_rcnn/__init__.py +0 -0
  27. {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
  28. {autogluon.multimodal-1.1.2b20241106 → autogluon.multimodal-1.1.2b20241108}/src/autogluon/multimodal/configs/pretrain/detection/schedule_1x.py +0 -0
  29. {autogluon.multimodal-1.1.2b20241106 → autogluon.multimodal-1.1.2b20241108}/src/autogluon/multimodal/configs/pretrain/detection/voc/__init__.py +0 -0
  30. {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
  31. {autogluon.multimodal-1.1.2b20241106 → autogluon.multimodal-1.1.2b20241108}/src/autogluon/multimodal/configs/pretrain/detection/voc/voc0712.py +0 -0
  32. {autogluon.multimodal-1.1.2b20241106 → autogluon.multimodal-1.1.2b20241108}/src/autogluon/multimodal/configs/pretrain/detection/yolox/__init__.py +0 -0
  33. {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
  34. {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
  35. {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
  36. {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
  37. {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
  38. {autogluon.multimodal-1.1.2b20241106 → autogluon.multimodal-1.1.2b20241108}/src/autogluon/multimodal/configs/pretrain/detection/yolox/yolox_tta.py +0 -0
  39. {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
  40. {autogluon.multimodal-1.1.2b20241106 → autogluon.multimodal-1.1.2b20241108}/src/autogluon/multimodal/constants.py +0 -0
  41. {autogluon.multimodal-1.1.2b20241106 → autogluon.multimodal-1.1.2b20241108}/src/autogluon/multimodal/data/__init__.py +0 -0
  42. {autogluon.multimodal-1.1.2b20241106 → autogluon.multimodal-1.1.2b20241108}/src/autogluon/multimodal/data/collator.py +0 -0
  43. {autogluon.multimodal-1.1.2b20241106 → autogluon.multimodal-1.1.2b20241108}/src/autogluon/multimodal/data/datamodule.py +0 -0
  44. {autogluon.multimodal-1.1.2b20241106 → autogluon.multimodal-1.1.2b20241108}/src/autogluon/multimodal/data/dataset.py +0 -0
  45. {autogluon.multimodal-1.1.2b20241106 → autogluon.multimodal-1.1.2b20241108}/src/autogluon/multimodal/data/dataset_mmlab/__init__.py +0 -0
  46. {autogluon.multimodal-1.1.2b20241106 → autogluon.multimodal-1.1.2b20241108}/src/autogluon/multimodal/data/dataset_mmlab/multi_image_mix_dataset.py +0 -0
  47. {autogluon.multimodal-1.1.2b20241106 → autogluon.multimodal-1.1.2b20241108}/src/autogluon/multimodal/data/infer_types.py +0 -0
  48. {autogluon.multimodal-1.1.2b20241106 → autogluon.multimodal-1.1.2b20241108}/src/autogluon/multimodal/data/label_encoder.py +0 -0
  49. {autogluon.multimodal-1.1.2b20241106 → autogluon.multimodal-1.1.2b20241108}/src/autogluon/multimodal/data/mixup.py +0 -0
  50. {autogluon.multimodal-1.1.2b20241106 → autogluon.multimodal-1.1.2b20241108}/src/autogluon/multimodal/data/preprocess_dataframe.py +0 -0
  51. {autogluon.multimodal-1.1.2b20241106 → autogluon.multimodal-1.1.2b20241108}/src/autogluon/multimodal/data/process_categorical.py +0 -0
  52. {autogluon.multimodal-1.1.2b20241106 → autogluon.multimodal-1.1.2b20241108}/src/autogluon/multimodal/data/process_document.py +0 -0
  53. {autogluon.multimodal-1.1.2b20241106 → autogluon.multimodal-1.1.2b20241108}/src/autogluon/multimodal/data/process_image.py +0 -0
  54. {autogluon.multimodal-1.1.2b20241106 → autogluon.multimodal-1.1.2b20241108}/src/autogluon/multimodal/data/process_label.py +0 -0
  55. {autogluon.multimodal-1.1.2b20241106 → autogluon.multimodal-1.1.2b20241108}/src/autogluon/multimodal/data/process_mmlab/__init__.py +0 -0
  56. {autogluon.multimodal-1.1.2b20241106 → autogluon.multimodal-1.1.2b20241108}/src/autogluon/multimodal/data/process_mmlab/process_mmdet.py +0 -0
  57. {autogluon.multimodal-1.1.2b20241106 → autogluon.multimodal-1.1.2b20241108}/src/autogluon/multimodal/data/process_mmlab/process_mmlab_base.py +0 -0
  58. {autogluon.multimodal-1.1.2b20241106 → autogluon.multimodal-1.1.2b20241108}/src/autogluon/multimodal/data/process_mmlab/process_mmocr.py +0 -0
  59. {autogluon.multimodal-1.1.2b20241106 → autogluon.multimodal-1.1.2b20241108}/src/autogluon/multimodal/data/process_ner.py +0 -0
  60. {autogluon.multimodal-1.1.2b20241106 → autogluon.multimodal-1.1.2b20241108}/src/autogluon/multimodal/data/process_numerical.py +0 -0
  61. {autogluon.multimodal-1.1.2b20241106 → autogluon.multimodal-1.1.2b20241108}/src/autogluon/multimodal/data/process_semantic_seg_img.py +0 -0
  62. {autogluon.multimodal-1.1.2b20241106 → autogluon.multimodal-1.1.2b20241108}/src/autogluon/multimodal/data/process_text.py +0 -0
  63. {autogluon.multimodal-1.1.2b20241106 → autogluon.multimodal-1.1.2b20241108}/src/autogluon/multimodal/data/randaug.py +0 -0
  64. {autogluon.multimodal-1.1.2b20241106 → autogluon.multimodal-1.1.2b20241108}/src/autogluon/multimodal/data/template_engine.py +0 -0
  65. {autogluon.multimodal-1.1.2b20241106 → autogluon.multimodal-1.1.2b20241108}/src/autogluon/multimodal/data/templates.py +0 -0
  66. {autogluon.multimodal-1.1.2b20241106 → autogluon.multimodal-1.1.2b20241108}/src/autogluon/multimodal/data/trivial_augmenter.py +0 -0
  67. {autogluon.multimodal-1.1.2b20241106 → autogluon.multimodal-1.1.2b20241108}/src/autogluon/multimodal/data/utils.py +0 -0
  68. {autogluon.multimodal-1.1.2b20241106 → autogluon.multimodal-1.1.2b20241108}/src/autogluon/multimodal/learners/__init__.py +0 -0
  69. {autogluon.multimodal-1.1.2b20241106 → autogluon.multimodal-1.1.2b20241108}/src/autogluon/multimodal/learners/base.py +0 -0
  70. {autogluon.multimodal-1.1.2b20241106 → autogluon.multimodal-1.1.2b20241108}/src/autogluon/multimodal/learners/few_shot_svm.py +0 -0
  71. {autogluon.multimodal-1.1.2b20241106 → autogluon.multimodal-1.1.2b20241108}/src/autogluon/multimodal/learners/matching.py +0 -0
  72. {autogluon.multimodal-1.1.2b20241106 → autogluon.multimodal-1.1.2b20241108}/src/autogluon/multimodal/learners/ner.py +0 -0
  73. {autogluon.multimodal-1.1.2b20241106 → autogluon.multimodal-1.1.2b20241108}/src/autogluon/multimodal/learners/semantic_segmentation.py +0 -0
  74. {autogluon.multimodal-1.1.2b20241106 → autogluon.multimodal-1.1.2b20241108}/src/autogluon/multimodal/models/__init__.py +0 -0
  75. {autogluon.multimodal-1.1.2b20241106 → autogluon.multimodal-1.1.2b20241108}/src/autogluon/multimodal/models/adaptation_layers.py +0 -0
  76. {autogluon.multimodal-1.1.2b20241106 → autogluon.multimodal-1.1.2b20241108}/src/autogluon/multimodal/models/categorical_mlp.py +0 -0
  77. {autogluon.multimodal-1.1.2b20241106 → autogluon.multimodal-1.1.2b20241108}/src/autogluon/multimodal/models/clip.py +0 -0
  78. {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
  79. {autogluon.multimodal-1.1.2b20241106 → autogluon.multimodal-1.1.2b20241108}/src/autogluon/multimodal/models/custom_transformer.py +0 -0
  80. {autogluon.multimodal-1.1.2b20241106 → autogluon.multimodal-1.1.2b20241108}/src/autogluon/multimodal/models/document_transformer.py +0 -0
  81. {autogluon.multimodal-1.1.2b20241106 → autogluon.multimodal-1.1.2b20241108}/src/autogluon/multimodal/models/ft_transformer.py +0 -0
  82. {autogluon.multimodal-1.1.2b20241106 → autogluon.multimodal-1.1.2b20241108}/src/autogluon/multimodal/models/fusion/__init__.py +0 -0
  83. {autogluon.multimodal-1.1.2b20241106 → autogluon.multimodal-1.1.2b20241108}/src/autogluon/multimodal/models/fusion/base.py +0 -0
  84. {autogluon.multimodal-1.1.2b20241106 → autogluon.multimodal-1.1.2b20241108}/src/autogluon/multimodal/models/fusion/fusion_mlp.py +0 -0
  85. {autogluon.multimodal-1.1.2b20241106 → autogluon.multimodal-1.1.2b20241108}/src/autogluon/multimodal/models/fusion/fusion_ner.py +0 -0
  86. {autogluon.multimodal-1.1.2b20241106 → autogluon.multimodal-1.1.2b20241108}/src/autogluon/multimodal/models/fusion/fusion_transformer.py +0 -0
  87. {autogluon.multimodal-1.1.2b20241106 → autogluon.multimodal-1.1.2b20241108}/src/autogluon/multimodal/models/huggingface_text.py +0 -0
  88. {autogluon.multimodal-1.1.2b20241106 → autogluon.multimodal-1.1.2b20241108}/src/autogluon/multimodal/models/mlp.py +0 -0
  89. {autogluon.multimodal-1.1.2b20241106 → autogluon.multimodal-1.1.2b20241108}/src/autogluon/multimodal/models/mmdet_image.py +0 -0
  90. {autogluon.multimodal-1.1.2b20241106 → autogluon.multimodal-1.1.2b20241108}/src/autogluon/multimodal/models/mmocr_text_detection.py +0 -0
  91. {autogluon.multimodal-1.1.2b20241106 → autogluon.multimodal-1.1.2b20241108}/src/autogluon/multimodal/models/mmocr_text_recognition.py +0 -0
  92. {autogluon.multimodal-1.1.2b20241106 → autogluon.multimodal-1.1.2b20241108}/src/autogluon/multimodal/models/ner_text.py +0 -0
  93. {autogluon.multimodal-1.1.2b20241106 → autogluon.multimodal-1.1.2b20241108}/src/autogluon/multimodal/models/numerical_mlp.py +0 -0
  94. {autogluon.multimodal-1.1.2b20241106 → autogluon.multimodal-1.1.2b20241108}/src/autogluon/multimodal/models/sam.py +0 -0
  95. {autogluon.multimodal-1.1.2b20241106 → autogluon.multimodal-1.1.2b20241108}/src/autogluon/multimodal/models/t_few.py +0 -0
  96. {autogluon.multimodal-1.1.2b20241106 → autogluon.multimodal-1.1.2b20241108}/src/autogluon/multimodal/models/timm_image.py +0 -0
  97. {autogluon.multimodal-1.1.2b20241106 → autogluon.multimodal-1.1.2b20241108}/src/autogluon/multimodal/models/utils.py +0 -0
  98. {autogluon.multimodal-1.1.2b20241106 → autogluon.multimodal-1.1.2b20241108}/src/autogluon/multimodal/optimization/__init__.py +0 -0
  99. {autogluon.multimodal-1.1.2b20241106 → autogluon.multimodal-1.1.2b20241108}/src/autogluon/multimodal/optimization/deepspeed.py +0 -0
  100. {autogluon.multimodal-1.1.2b20241106 → autogluon.multimodal-1.1.2b20241108}/src/autogluon/multimodal/optimization/lit_distiller.py +0 -0
  101. {autogluon.multimodal-1.1.2b20241106 → autogluon.multimodal-1.1.2b20241108}/src/autogluon/multimodal/optimization/lit_matcher.py +0 -0
  102. {autogluon.multimodal-1.1.2b20241106 → autogluon.multimodal-1.1.2b20241108}/src/autogluon/multimodal/optimization/lit_mmdet.py +0 -0
  103. {autogluon.multimodal-1.1.2b20241106 → autogluon.multimodal-1.1.2b20241108}/src/autogluon/multimodal/optimization/lit_module.py +0 -0
  104. {autogluon.multimodal-1.1.2b20241106 → autogluon.multimodal-1.1.2b20241108}/src/autogluon/multimodal/optimization/lit_ner.py +0 -0
  105. {autogluon.multimodal-1.1.2b20241106 → autogluon.multimodal-1.1.2b20241108}/src/autogluon/multimodal/optimization/lit_semantic_seg.py +0 -0
  106. {autogluon.multimodal-1.1.2b20241106 → autogluon.multimodal-1.1.2b20241108}/src/autogluon/multimodal/optimization/losses.py +0 -0
  107. {autogluon.multimodal-1.1.2b20241106 → autogluon.multimodal-1.1.2b20241108}/src/autogluon/multimodal/optimization/lr_scheduler.py +0 -0
  108. {autogluon.multimodal-1.1.2b20241106 → autogluon.multimodal-1.1.2b20241108}/src/autogluon/multimodal/optimization/semantic_seg_metrics.py +0 -0
  109. {autogluon.multimodal-1.1.2b20241106 → autogluon.multimodal-1.1.2b20241108}/src/autogluon/multimodal/optimization/utils.py +0 -0
  110. {autogluon.multimodal-1.1.2b20241106 → autogluon.multimodal-1.1.2b20241108}/src/autogluon/multimodal/presets.py +0 -0
  111. {autogluon.multimodal-1.1.2b20241106 → autogluon.multimodal-1.1.2b20241108}/src/autogluon/multimodal/problem_types.py +0 -0
  112. {autogluon.multimodal-1.1.2b20241106 → autogluon.multimodal-1.1.2b20241108}/src/autogluon/multimodal/registry.py +0 -0
  113. {autogluon.multimodal-1.1.2b20241106 → autogluon.multimodal-1.1.2b20241108}/src/autogluon/multimodal/utils/cache.py +0 -0
  114. {autogluon.multimodal-1.1.2b20241106 → autogluon.multimodal-1.1.2b20241108}/src/autogluon/multimodal/utils/checkpoint.py +0 -0
  115. {autogluon.multimodal-1.1.2b20241106 → autogluon.multimodal-1.1.2b20241108}/src/autogluon/multimodal/utils/cloud_io.py +0 -0
  116. {autogluon.multimodal-1.1.2b20241106 → autogluon.multimodal-1.1.2b20241108}/src/autogluon/multimodal/utils/colormap.py +0 -0
  117. {autogluon.multimodal-1.1.2b20241106 → autogluon.multimodal-1.1.2b20241108}/src/autogluon/multimodal/utils/config.py +0 -0
  118. {autogluon.multimodal-1.1.2b20241106 → autogluon.multimodal-1.1.2b20241108}/src/autogluon/multimodal/utils/data.py +0 -0
  119. {autogluon.multimodal-1.1.2b20241106 → autogluon.multimodal-1.1.2b20241108}/src/autogluon/multimodal/utils/distillation.py +0 -0
  120. {autogluon.multimodal-1.1.2b20241106 → autogluon.multimodal-1.1.2b20241108}/src/autogluon/multimodal/utils/download.py +0 -0
  121. {autogluon.multimodal-1.1.2b20241106 → autogluon.multimodal-1.1.2b20241108}/src/autogluon/multimodal/utils/environment.py +0 -0
  122. {autogluon.multimodal-1.1.2b20241106 → autogluon.multimodal-1.1.2b20241108}/src/autogluon/multimodal/utils/export.py +0 -0
  123. {autogluon.multimodal-1.1.2b20241106 → autogluon.multimodal-1.1.2b20241108}/src/autogluon/multimodal/utils/inference.py +0 -0
  124. {autogluon.multimodal-1.1.2b20241106 → autogluon.multimodal-1.1.2b20241108}/src/autogluon/multimodal/utils/label_studio.py +0 -0
  125. {autogluon.multimodal-1.1.2b20241106 → autogluon.multimodal-1.1.2b20241108}/src/autogluon/multimodal/utils/load.py +0 -0
  126. {autogluon.multimodal-1.1.2b20241106 → autogluon.multimodal-1.1.2b20241108}/src/autogluon/multimodal/utils/log.py +0 -0
  127. {autogluon.multimodal-1.1.2b20241106 → autogluon.multimodal-1.1.2b20241108}/src/autogluon/multimodal/utils/matcher.py +0 -0
  128. {autogluon.multimodal-1.1.2b20241106 → autogluon.multimodal-1.1.2b20241108}/src/autogluon/multimodal/utils/metric.py +0 -0
  129. {autogluon.multimodal-1.1.2b20241106 → autogluon.multimodal-1.1.2b20241108}/src/autogluon/multimodal/utils/misc.py +0 -0
  130. {autogluon.multimodal-1.1.2b20241106 → autogluon.multimodal-1.1.2b20241108}/src/autogluon/multimodal/utils/mmcv.py +0 -0
  131. {autogluon.multimodal-1.1.2b20241106 → autogluon.multimodal-1.1.2b20241108}/src/autogluon/multimodal/utils/model.py +0 -0
  132. {autogluon.multimodal-1.1.2b20241106 → autogluon.multimodal-1.1.2b20241108}/src/autogluon/multimodal/utils/nlpaug.py +0 -0
  133. {autogluon.multimodal-1.1.2b20241106 → autogluon.multimodal-1.1.2b20241108}/src/autogluon/multimodal/utils/onnx.py +0 -0
  134. {autogluon.multimodal-1.1.2b20241106 → autogluon.multimodal-1.1.2b20241108}/src/autogluon/multimodal/utils/save.py +0 -0
  135. {autogluon.multimodal-1.1.2b20241106 → autogluon.multimodal-1.1.2b20241108}/src/autogluon/multimodal/utils/visualizer.py +0 -0
  136. {autogluon.multimodal-1.1.2b20241106 → autogluon.multimodal-1.1.2b20241108}/src/autogluon.multimodal.egg-info/SOURCES.txt +0 -0
  137. {autogluon.multimodal-1.1.2b20241106 → autogluon.multimodal-1.1.2b20241108}/src/autogluon.multimodal.egg-info/dependency_links.txt +0 -0
  138. {autogluon.multimodal-1.1.2b20241106 → autogluon.multimodal-1.1.2b20241108}/src/autogluon.multimodal.egg-info/namespace_packages.txt +0 -0
  139. {autogluon.multimodal-1.1.2b20241106 → autogluon.multimodal-1.1.2b20241108}/src/autogluon.multimodal.egg-info/top_level.txt +0 -0
  140. {autogluon.multimodal-1.1.2b20241106 → autogluon.multimodal-1.1.2b20241108}/src/autogluon.multimodal.egg-info/zip-safe +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: autogluon.multimodal
3
- Version: 1.1.2b20241106
3
+ Version: 1.1.2b20241108
4
4
  Summary: Fast and Accurate ML in 3 Lines of Code
5
5
  Home-page: https://github.com/autogluon/autogluon
6
6
  Author: AutoGluon Community
@@ -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
- save_result_df,
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, # TODO: can we infer this from train/predict data?
43
- classes: Optional[list] = None, # TODO: can we infer this from train/predict data?
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
- return self._model.model.CLASSES
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(train_data, "train") # TODO: Refactor to use convert_data_to_df
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(tuning_data, "val") # TODO: Refactor to use convert_data_to_df
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(train_data)
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(tuning_data)
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, "test"
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(data)
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
- data = object_detection_data_to_df(data)
680
- if self._label_column not in data:
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=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
- if save_results and self._problem_type == OBJECT_DETECTION:
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
- save_result_df(
699
- pred=pred,
700
- data=data,
701
- detection_classes=self._model.model.CLASSES,
702
- result_path=os.path.join(self._save_path, "result.txt"),
703
- )
704
-
705
- if (as_pandas is None and isinstance(data, pd.DataFrame)) or as_pandas is True:
706
- # TODO: add prediction output in COCO format if as_pandas is False
707
- # TODO: calling save_result_df to convert data to dataframe is not a good logic
708
- # TODO: consider combining this with the above saving logic or using a different function.
709
- pred = save_result_df(
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
- return pred
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
- Id-to-content mappings. The contents can be text, image, etc.
621
- This is used when data contain the query/response identifiers instead of their contents.
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
- _fit_args["hyperparameters"] = (
54
- sampled_hyperparameters # The original hyperparameters is the search space, replace it with the hyperparameters sampled
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(learner, best_trial_path, save_path, last_ckpt_path, is_matching, standalone, clean_ckpts):
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=3,
184
+ num_to_keep=num_to_keep,
176
185
  checkpoint_score_attribute=metric,
177
186
  ),
178
187
  }