libcom 0.1.6__tar.gz → 0.1.8__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 (330) hide show
  1. libcom-0.1.8/MANIFEST.in +2 -0
  2. {libcom-0.1.6 → libcom-0.1.8}/PKG-INFO +24 -20
  3. {libcom-0.1.6 → libcom-0.1.8}/README.md +16 -9
  4. {libcom-0.1.6 → libcom-0.1.8}/libcom/__init__.py +1 -1
  5. {libcom-0.1.6 → libcom-0.1.8}/libcom/image_harmonization/image_harmonization.py +0 -2
  6. libcom-0.1.8/libcom/image_harmonization/source/src/lbm/config.py +141 -0
  7. libcom-0.1.8/libcom/image_harmonization/source/src/lbm/data/__init__.py +62 -0
  8. libcom-0.1.8/libcom/image_harmonization/source/src/lbm/data/datasets/__init__.py +9 -0
  9. libcom-0.1.8/libcom/image_harmonization/source/src/lbm/data/datasets/collation_fn.py +41 -0
  10. libcom-0.1.8/libcom/image_harmonization/source/src/lbm/data/datasets/dataset.py +243 -0
  11. libcom-0.1.8/libcom/image_harmonization/source/src/lbm/data/datasets/datasets_config.py +42 -0
  12. libcom-0.1.8/libcom/image_harmonization/source/src/lbm/data/filters/__init__.py +12 -0
  13. libcom-0.1.8/libcom/image_harmonization/source/src/lbm/data/filters/base.py +21 -0
  14. libcom-0.1.8/libcom/image_harmonization/source/src/lbm/data/filters/filter_wrapper.py +36 -0
  15. libcom-0.1.8/libcom/image_harmonization/source/src/lbm/data/filters/filters.py +33 -0
  16. libcom-0.1.8/libcom/image_harmonization/source/src/lbm/data/filters/filters_config.py +32 -0
  17. libcom-0.1.8/libcom/image_harmonization/source/src/lbm/data/mappers/__init__.py +19 -0
  18. libcom-0.1.8/libcom/image_harmonization/source/src/lbm/data/mappers/base.py +26 -0
  19. libcom-0.1.8/libcom/image_harmonization/source/src/lbm/data/mappers/mappers.py +135 -0
  20. libcom-0.1.8/libcom/image_harmonization/source/src/lbm/data/mappers/mappers_config.py +109 -0
  21. libcom-0.1.8/libcom/image_harmonization/source/src/lbm/data/mappers/mappers_wrapper.py +31 -0
  22. libcom-0.1.8/libcom/image_harmonization/source/src/lbm/inference/__init__.py +4 -0
  23. libcom-0.1.8/libcom/image_harmonization/source/src/lbm/inference/inference.py +70 -0
  24. libcom-0.1.8/libcom/image_harmonization/source/src/lbm/inference/utils.py +222 -0
  25. libcom-0.1.8/libcom/image_harmonization/source/src/lbm/models/base/__init__.py +4 -0
  26. libcom-0.1.8/libcom/image_harmonization/source/src/lbm/models/base/base_model.py +66 -0
  27. libcom-0.1.8/libcom/image_harmonization/source/src/lbm/models/base/model_config.py +8 -0
  28. libcom-0.1.8/libcom/image_harmonization/source/src/lbm/models/embedders/__init__.py +4 -0
  29. libcom-0.1.8/libcom/image_harmonization/source/src/lbm/models/embedders/base/__init__.py +4 -0
  30. libcom-0.1.8/libcom/image_harmonization/source/src/lbm/models/embedders/base/base_conditioner.py +60 -0
  31. libcom-0.1.8/libcom/image_harmonization/source/src/lbm/models/embedders/base/base_conditioner_config.py +27 -0
  32. libcom-0.1.8/libcom/image_harmonization/source/src/lbm/models/embedders/conditioners_wrapper.py +114 -0
  33. libcom-0.1.8/libcom/image_harmonization/source/src/lbm/models/embedders/latents_concat/__init__.py +4 -0
  34. libcom-0.1.8/libcom/image_harmonization/source/src/lbm/models/embedders/latents_concat/latents_concat_embedder_config.py +31 -0
  35. libcom-0.1.8/libcom/image_harmonization/source/src/lbm/models/embedders/latents_concat/latents_concat_embedder_model.py +80 -0
  36. libcom-0.1.8/libcom/image_harmonization/source/src/lbm/models/lbm/__init__.py +4 -0
  37. libcom-0.1.8/libcom/image_harmonization/source/src/lbm/models/lbm/lbm_config.py +101 -0
  38. libcom-0.1.8/libcom/image_harmonization/source/src/lbm/models/lbm/lbm_model.py +359 -0
  39. libcom-0.1.8/libcom/image_harmonization/source/src/lbm/models/unets/__init__.py +14 -0
  40. libcom-0.1.8/libcom/image_harmonization/source/src/lbm/models/unets/unet.py +148 -0
  41. libcom-0.1.8/libcom/image_harmonization/source/src/lbm/models/utils.py +377 -0
  42. libcom-0.1.8/libcom/image_harmonization/source/src/lbm/models/vae/__init__.py +4 -0
  43. libcom-0.1.8/libcom/image_harmonization/source/src/lbm/models/vae/autoencoderKL.py +136 -0
  44. libcom-0.1.8/libcom/image_harmonization/source/src/lbm/models/vae/autoencoderKL_config.py +27 -0
  45. libcom-0.1.8/libcom/image_harmonization/source/src/lbm/trainer/__init__.py +85 -0
  46. libcom-0.1.8/libcom/image_harmonization/source/src/lbm/trainer/loggers.py +324 -0
  47. libcom-0.1.8/libcom/image_harmonization/source/src/lbm/trainer/trainer.py +199 -0
  48. libcom-0.1.8/libcom/image_harmonization/source/src/lbm/trainer/training_config.py +82 -0
  49. libcom-0.1.8/libcom/image_harmonization/source/src/lbm/trainer/utils.py +193 -0
  50. libcom-0.1.8/libcom/os_insert/diffusers_osinsert/__init__.py +78 -0
  51. libcom-0.1.8/libcom/os_insert/diffusers_osinsert/_patched_pipeline_flux_fill.py +878 -0
  52. {libcom-0.1.6 → libcom-0.1.8}/libcom/os_insert/os_insert.py +6 -1
  53. {libcom-0.1.6 → libcom-0.1.8}/libcom/os_insert/source/insertanything_infer.py +16 -11
  54. libcom-0.1.8/libcom/os_insert/source/ldm/data/base.py +23 -0
  55. libcom-0.1.8/libcom/os_insert/source/ldm/data/datamodule.py +128 -0
  56. libcom-0.1.8/libcom/os_insert/source/ldm/data/imagenet.py +394 -0
  57. libcom-0.1.8/libcom/os_insert/source/ldm/data/lsun.py +92 -0
  58. libcom-0.1.8/libcom/os_insert/source/ldm/data/open_images.py +728 -0
  59. libcom-0.1.8/libcom/os_insert/source/ldm/models/autoencoder.py +443 -0
  60. libcom-0.1.8/libcom/os_insert/source/ldm/models/diffusion/classifier.py +267 -0
  61. libcom-0.1.8/libcom/os_insert/source/ldm/models/diffusion/ddim.py +263 -0
  62. libcom-0.1.8/libcom/os_insert/source/ldm/models/diffusion/ddpm.py +1417 -0
  63. libcom-0.1.8/libcom/os_insert/source/ldm/models/diffusion/plms.py +252 -0
  64. libcom-0.1.8/libcom/os_insert/source/ldm/modules/attention.py +261 -0
  65. libcom-0.1.8/libcom/os_insert/source/ldm/modules/diffusionmodules/model.py +835 -0
  66. libcom-0.1.8/libcom/os_insert/source/ldm/modules/diffusionmodules/openaimodel.py +1108 -0
  67. libcom-0.1.8/libcom/os_insert/source/ldm/modules/diffusionmodules/util.py +267 -0
  68. libcom-0.1.8/libcom/os_insert/source/ldm/modules/ema.py +76 -0
  69. libcom-0.1.8/libcom/os_insert/source/ldm/modules/encoders/modules.py +190 -0
  70. libcom-0.1.8/libcom/os_insert/source/ldm/modules/encoders/xf.py +130 -0
  71. libcom-0.1.8/libcom/os_insert/source/ldm/modules/losses/__init__.py +1 -0
  72. libcom-0.1.8/libcom/os_insert/source/ldm/modules/losses/contperceptual.py +111 -0
  73. libcom-0.1.8/libcom/os_insert/source/ldm/modules/losses/vqperceptual.py +167 -0
  74. libcom-0.1.8/libcom/os_insert/source/ldm/modules/x_transformer.py +641 -0
  75. libcom-0.1.8/libcom/os_insert/source/ldm/util.py +203 -0
  76. libcom-0.1.8/libcom/painterly_image_harmonization/source/PHDiffusion/ldm/lr_scheduler.py +98 -0
  77. libcom-0.1.8/libcom/painterly_image_harmonization/source/PHDiffusion/ldm/modules/distributions/distributions.py +92 -0
  78. libcom-0.1.8/libcom/shadow_generation/source/cldm/__init__.py +0 -0
  79. libcom-0.1.8/libcom/shadow_generation/source/ldm/__init__.py +0 -0
  80. libcom-0.1.8/libcom/shadow_generation/source/ldm/models/__init__.py +0 -0
  81. libcom-0.1.8/libcom/shadow_generation/source/ldm/models/diffusion/__init__.py +0 -0
  82. libcom-0.1.8/libcom/shadow_generation/source/ldm/modules/__init__.py +0 -0
  83. libcom-0.1.8/libcom/shadow_generation/source/ldm/modules/diffusionmodules/__init__.py +0 -0
  84. libcom-0.1.8/libcom/shadow_generation/source/ldm/modules/distributions/__init__.py +0 -0
  85. libcom-0.1.8/libcom/shadow_generation/source/ldm/modules/encoders/__init__.py +0 -0
  86. libcom-0.1.8/libcom/shadow_generation/source/ldm/modules/midas/__init__.py +0 -0
  87. libcom-0.1.8/libcom/shadow_generation/source/ldm/modules/midas/midas/__init__.py +0 -0
  88. libcom-0.1.8/libcom/utils/__init__.py +0 -0
  89. {libcom-0.1.6 → libcom-0.1.8}/libcom.egg-info/PKG-INFO +24 -20
  90. {libcom-0.1.6 → libcom-0.1.8}/libcom.egg-info/SOURCES.txt +83 -0
  91. {libcom-0.1.6 → libcom-0.1.8}/libcom.egg-info/requires.txt +7 -10
  92. libcom-0.1.8/requirements.txt +26 -0
  93. {libcom-0.1.6 → libcom-0.1.8}/setup.py +2 -14
  94. {libcom-0.1.6 → libcom-0.1.8}/tests/test_os_insert.py +7 -3
  95. {libcom-0.1.6 → libcom-0.1.8}/LICENSE +0 -0
  96. {libcom-0.1.6 → libcom-0.1.8}/libcom/color_transfer/__init__.py +0 -0
  97. {libcom-0.1.6 → libcom-0.1.8}/libcom/color_transfer/reinhard.py +0 -0
  98. {libcom-0.1.6 → libcom-0.1.8}/libcom/fopa_heat_map/__init__.py +0 -0
  99. {libcom-0.1.6 → libcom-0.1.8}/libcom/fopa_heat_map/fopa_heat_map.py +0 -0
  100. {libcom-0.1.6 → libcom-0.1.8}/libcom/fopa_heat_map/source/__init__.py +0 -0
  101. {libcom-0.1.6 → libcom-0.1.8}/libcom/fopa_heat_map/source/backbone/ResNet.py +0 -0
  102. {libcom-0.1.6 → libcom-0.1.8}/libcom/fopa_heat_map/source/backbone/__init__.py +0 -0
  103. {libcom-0.1.6 → libcom-0.1.8}/libcom/fopa_heat_map/source/data/OBdataset.py +0 -0
  104. {libcom-0.1.6 → libcom-0.1.8}/libcom/fopa_heat_map/source/data/__init__.py +0 -0
  105. {libcom-0.1.6 → libcom-0.1.8}/libcom/fopa_heat_map/source/data/all_transforms.py +0 -0
  106. {libcom-0.1.6 → libcom-0.1.8}/libcom/fopa_heat_map/source/network/BaseBlocks.py +0 -0
  107. {libcom-0.1.6 → libcom-0.1.8}/libcom/fopa_heat_map/source/network/DynamicModules.py +0 -0
  108. {libcom-0.1.6 → libcom-0.1.8}/libcom/fopa_heat_map/source/network/ObPlaNet_simple.py +0 -0
  109. {libcom-0.1.6 → libcom-0.1.8}/libcom/fopa_heat_map/source/network/__init__.py +0 -0
  110. {libcom-0.1.6 → libcom-0.1.8}/libcom/fopa_heat_map/source/network/tensor_ops.py +0 -0
  111. {libcom-0.1.6 → libcom-0.1.8}/libcom/fopa_heat_map/source/prepare_multi_fg_scales.py +0 -0
  112. {libcom-0.1.6 → libcom-0.1.8}/libcom/fos_score/__init__.py +0 -0
  113. {libcom-0.1.6 → libcom-0.1.8}/libcom/fos_score/fos_score_prediction.py +0 -0
  114. {libcom-0.1.6 → libcom-0.1.8}/libcom/fos_score/source/__init__.py +0 -0
  115. {libcom-0.1.6 → libcom-0.1.8}/libcom/fos_score/source/config/__init__.py +0 -0
  116. {libcom-0.1.6 → libcom-0.1.8}/libcom/fos_score/source/config/config.py +0 -0
  117. {libcom-0.1.6 → libcom-0.1.8}/libcom/fos_score/source/config/config.sfosd.yaml +0 -0
  118. {libcom-0.1.6 → libcom-0.1.8}/libcom/fos_score/source/config/config_rfosd.yaml +0 -0
  119. {libcom-0.1.6 → libcom-0.1.8}/libcom/fos_score/source/loss_function.py +0 -0
  120. {libcom-0.1.6 → libcom-0.1.8}/libcom/fos_score/source/networks.py +0 -0
  121. {libcom-0.1.6 → libcom-0.1.8}/libcom/harmony_score/__init__.py +0 -0
  122. {libcom-0.1.6 → libcom-0.1.8}/libcom/harmony_score/harmony_score_prediction.py +0 -0
  123. {libcom-0.1.6 → libcom-0.1.8}/libcom/harmony_score/source/__init__.py +0 -0
  124. {libcom-0.1.6 → libcom-0.1.8}/libcom/harmony_score/source/bargainnet.py +0 -0
  125. {libcom-0.1.6 → libcom-0.1.8}/libcom/image_harmonization/__init__.py +0 -0
  126. {libcom-0.1.6 → libcom-0.1.8}/libcom/image_harmonization/source/__init__.py +0 -0
  127. {libcom-0.1.6 → libcom-0.1.8}/libcom/image_harmonization/source/functions.py +0 -0
  128. {libcom-0.1.6 → libcom-0.1.8}/libcom/image_harmonization/source/pct_net.py +0 -0
  129. {libcom-0.1.6/libcom/inharmonious_region_localization/source → libcom-0.1.8/libcom/image_harmonization/source/src}/__init__.py +0 -0
  130. {libcom-0.1.6/libcom/kontext_blending_harmonization/source → libcom-0.1.8/libcom/image_harmonization/source/src/lbm}/__init__.py +0 -0
  131. {libcom-0.1.6/libcom/painterly_image_harmonization/source/PHDNet → libcom-0.1.8/libcom/image_harmonization/source/src/lbm/models}/__init__.py +0 -0
  132. {libcom-0.1.6 → libcom-0.1.8}/libcom/inharmonious_region_localization/__init__.py +0 -0
  133. {libcom-0.1.6 → libcom-0.1.8}/libcom/inharmonious_region_localization/inharmonious_region_localization.py +0 -0
  134. {libcom-0.1.6/libcom/painterly_image_harmonization/source/PHDiffusion → libcom-0.1.8/libcom/inharmonious_region_localization/source}/__init__.py +0 -0
  135. {libcom-0.1.6 → libcom-0.1.8}/libcom/inharmonious_region_localization/source/blocks.py +0 -0
  136. {libcom-0.1.6 → libcom-0.1.8}/libcom/inharmonious_region_localization/source/functions.py +0 -0
  137. {libcom-0.1.6 → libcom-0.1.8}/libcom/inharmonious_region_localization/source/madis_net.py +0 -0
  138. {libcom-0.1.6 → libcom-0.1.8}/libcom/kontext_blending_harmonization/__init__.py +0 -0
  139. {libcom-0.1.6 → libcom-0.1.8}/libcom/kontext_blending_harmonization/kontext_blending_harmonization.py +0 -0
  140. {libcom-0.1.6/libcom/painterly_image_harmonization/source/PHDiffusion/ldm → libcom-0.1.8/libcom/kontext_blending_harmonization/source}/__init__.py +0 -0
  141. {libcom-0.1.6 → libcom-0.1.8}/libcom/kontext_blending_harmonization/source/pipeline.py +0 -0
  142. {libcom-0.1.6 → libcom-0.1.8}/libcom/naive_composition/__init__.py +0 -0
  143. {libcom-0.1.6 → libcom-0.1.8}/libcom/naive_composition/generate_composite_image.py +0 -0
  144. {libcom-0.1.6 → libcom-0.1.8}/libcom/opa_score/__init__.py +0 -0
  145. {libcom-0.1.6 → libcom-0.1.8}/libcom/opa_score/opa_score_prediction.py +0 -0
  146. {libcom-0.1.6 → libcom-0.1.8}/libcom/opa_score/source/__init__.py +0 -0
  147. {libcom-0.1.6 → libcom-0.1.8}/libcom/opa_score/source/object_place_net.py +0 -0
  148. {libcom-0.1.6 → libcom-0.1.8}/libcom/opa_score/source/oblect_place_config.py +0 -0
  149. {libcom-0.1.6 → libcom-0.1.8}/libcom/opa_score/source/resnet_4ch.py +0 -0
  150. {libcom-0.1.6 → libcom-0.1.8}/libcom/os_insert/__init__.py +0 -0
  151. {libcom-0.1.6 → libcom-0.1.8}/libcom/os_insert/source/__init__.py +0 -0
  152. {libcom-0.1.6 → libcom-0.1.8}/libcom/os_insert/source/ia_utils.py +0 -0
  153. {libcom-0.1.6/libcom/painterly_image_harmonization/source/PHDiffusion/ldm/models → libcom-0.1.8/libcom/os_insert/source/ldm}/__init__.py +0 -0
  154. {libcom-0.1.6/libcom/painterly_image_harmonization/source/PHDiffusion/ldm/modules → libcom-0.1.8/libcom/os_insert/source/ldm/data}/__init__.py +0 -0
  155. {libcom-0.1.6/libcom/painterly_image_harmonization/source/PHDiffusion → libcom-0.1.8/libcom/os_insert/source}/ldm/lr_scheduler.py +0 -0
  156. {libcom-0.1.6/libcom/painterly_image_harmonization/source/PHDiffusion/ldm/modules/diffusionmodules → libcom-0.1.8/libcom/os_insert/source/ldm/models}/__init__.py +0 -0
  157. {libcom-0.1.6/libcom/painterly_image_harmonization/source/PHDiffusion/ldm/modules/distributions → libcom-0.1.8/libcom/os_insert/source/ldm/models/diffusion}/__init__.py +0 -0
  158. {libcom-0.1.6/libcom/painterly_image_harmonization/source/PHDiffusion/ldm/modules/encoders → libcom-0.1.8/libcom/os_insert/source/ldm/modules}/__init__.py +0 -0
  159. {libcom-0.1.6/libcom/painterly_image_harmonization/source/PHDiffusion/ldm/modules/extra_condition/midas → libcom-0.1.8/libcom/os_insert/source/ldm/modules/diffusionmodules}/__init__.py +0 -0
  160. {libcom-0.1.6/libcom/painterly_image_harmonization/source/PHDiffusion/ldm/modules/extra_condition/midas/midas → libcom-0.1.8/libcom/os_insert/source/ldm/modules/distributions}/__init__.py +0 -0
  161. {libcom-0.1.6/libcom/painterly_image_harmonization/source/PHDiffusion → libcom-0.1.8/libcom/os_insert/source}/ldm/modules/distributions/distributions.py +0 -0
  162. {libcom-0.1.6/libcom/painterly_image_harmonization/source/PHDiffusion/ldm/modules/extra_condition/openpose → libcom-0.1.8/libcom/os_insert/source/ldm/modules/encoders}/__init__.py +0 -0
  163. {libcom-0.1.6 → libcom-0.1.8}/libcom/os_insert/source/objectstitch_data.py +0 -0
  164. {libcom-0.1.6 → libcom-0.1.8}/libcom/os_insert/source/objectstitch_infer.py +0 -0
  165. {libcom-0.1.6 → libcom-0.1.8}/libcom/os_insert/source/sam_on_objectstitch.py +0 -0
  166. {libcom-0.1.6 → libcom-0.1.8}/libcom/os_insert/source/utils.py +0 -0
  167. {libcom-0.1.6 → libcom-0.1.8}/libcom/os_insert/source/v1.yaml +0 -0
  168. {libcom-0.1.6 → libcom-0.1.8}/libcom/painterly_image_harmonization/__init__.py +0 -0
  169. {libcom-0.1.6 → libcom-0.1.8}/libcom/painterly_image_harmonization/painterly_image_harmonization.py +0 -0
  170. {libcom-0.1.6/libcom/painterly_image_harmonization/source/PHDiffusion/ldm/modules/fusion → libcom-0.1.8/libcom/painterly_image_harmonization/source/PHDNet}/__init__.py +0 -0
  171. {libcom-0.1.6 → libcom-0.1.8}/libcom/painterly_image_harmonization/source/PHDNet/networks.py +0 -0
  172. {libcom-0.1.6 → libcom-0.1.8}/libcom/painterly_image_harmonization/source/PHDNet/phdnet.py +0 -0
  173. {libcom-0.1.6 → libcom-0.1.8}/libcom/painterly_image_harmonization/source/PHDNet/phdnet_config.py +0 -0
  174. {libcom-0.1.6/libcom/painterly_image_harmonization/source → libcom-0.1.8/libcom/painterly_image_harmonization/source/PHDiffusion}/__init__.py +0 -0
  175. {libcom-0.1.6/libcom/reflection_generation/source → libcom-0.1.8/libcom/painterly_image_harmonization/source/PHDiffusion/ldm}/__init__.py +0 -0
  176. {libcom-0.1.6 → libcom-0.1.8}/libcom/painterly_image_harmonization/source/PHDiffusion/ldm/inference_base.py +0 -0
  177. {libcom-0.1.6/libcom/reflection_generation/source/cldm → libcom-0.1.8/libcom/painterly_image_harmonization/source/PHDiffusion/ldm/models}/__init__.py +0 -0
  178. {libcom-0.1.6 → libcom-0.1.8}/libcom/painterly_image_harmonization/source/PHDiffusion/ldm/models/autoencoder.py +0 -0
  179. {libcom-0.1.6 → libcom-0.1.8}/libcom/painterly_image_harmonization/source/PHDiffusion/ldm/models/diffusion/__init__.py +0 -0
  180. {libcom-0.1.6 → libcom-0.1.8}/libcom/painterly_image_harmonization/source/PHDiffusion/ldm/models/diffusion/ddim.py +0 -0
  181. {libcom-0.1.6 → libcom-0.1.8}/libcom/painterly_image_harmonization/source/PHDiffusion/ldm/models/diffusion/ddpm.py +0 -0
  182. {libcom-0.1.6 → libcom-0.1.8}/libcom/painterly_image_harmonization/source/PHDiffusion/ldm/models/diffusion/dpm_solver/__init__.py +0 -0
  183. {libcom-0.1.6 → libcom-0.1.8}/libcom/painterly_image_harmonization/source/PHDiffusion/ldm/models/diffusion/dpm_solver/dpm_solver.py +0 -0
  184. {libcom-0.1.6 → libcom-0.1.8}/libcom/painterly_image_harmonization/source/PHDiffusion/ldm/models/diffusion/dpm_solver/sampler.py +0 -0
  185. {libcom-0.1.6 → libcom-0.1.8}/libcom/painterly_image_harmonization/source/PHDiffusion/ldm/models/diffusion/plms.py +0 -0
  186. {libcom-0.1.6 → libcom-0.1.8}/libcom/painterly_image_harmonization/source/PHDiffusion/ldm/models/diffusion/scheduling_pndm.py +0 -0
  187. {libcom-0.1.6/libcom/reflection_generation/source/ldm → libcom-0.1.8/libcom/painterly_image_harmonization/source/PHDiffusion/ldm/modules}/__init__.py +0 -0
  188. {libcom-0.1.6 → libcom-0.1.8}/libcom/painterly_image_harmonization/source/PHDiffusion/ldm/modules/attention.py +0 -0
  189. {libcom-0.1.6/libcom/reflection_generation/source/ldm/models → libcom-0.1.8/libcom/painterly_image_harmonization/source/PHDiffusion/ldm/modules/diffusionmodules}/__init__.py +0 -0
  190. {libcom-0.1.6 → libcom-0.1.8}/libcom/painterly_image_harmonization/source/PHDiffusion/ldm/modules/diffusionmodules/model.py +0 -0
  191. {libcom-0.1.6 → libcom-0.1.8}/libcom/painterly_image_harmonization/source/PHDiffusion/ldm/modules/diffusionmodules/openaimodel.py +0 -0
  192. {libcom-0.1.6 → libcom-0.1.8}/libcom/painterly_image_harmonization/source/PHDiffusion/ldm/modules/diffusionmodules/util.py +0 -0
  193. {libcom-0.1.6/libcom/reflection_generation/source/ldm/models/diffusion → libcom-0.1.8/libcom/painterly_image_harmonization/source/PHDiffusion/ldm/modules/distributions}/__init__.py +0 -0
  194. {libcom-0.1.6 → libcom-0.1.8}/libcom/painterly_image_harmonization/source/PHDiffusion/ldm/modules/ema.py +0 -0
  195. {libcom-0.1.6/libcom/reflection_generation/source/ldm/modules → libcom-0.1.8/libcom/painterly_image_harmonization/source/PHDiffusion/ldm/modules/encoders}/__init__.py +0 -0
  196. {libcom-0.1.6 → libcom-0.1.8}/libcom/painterly_image_harmonization/source/PHDiffusion/ldm/modules/encoders/adapter.py +0 -0
  197. {libcom-0.1.6 → libcom-0.1.8}/libcom/painterly_image_harmonization/source/PHDiffusion/ldm/modules/encoders/modules.py +0 -0
  198. {libcom-0.1.6 → libcom-0.1.8}/libcom/painterly_image_harmonization/source/PHDiffusion/ldm/modules/extra_condition/__init__.py +0 -0
  199. {libcom-0.1.6 → libcom-0.1.8}/libcom/painterly_image_harmonization/source/PHDiffusion/ldm/modules/extra_condition/api.py +0 -0
  200. {libcom-0.1.6/libcom/reflection_generation/source/ldm/modules/diffusionmodules → libcom-0.1.8/libcom/painterly_image_harmonization/source/PHDiffusion/ldm/modules/extra_condition/midas}/__init__.py +0 -0
  201. {libcom-0.1.6 → libcom-0.1.8}/libcom/painterly_image_harmonization/source/PHDiffusion/ldm/modules/extra_condition/midas/api.py +0 -0
  202. {libcom-0.1.6/libcom/reflection_generation/source/ldm/modules/distributions → libcom-0.1.8/libcom/painterly_image_harmonization/source/PHDiffusion/ldm/modules/extra_condition/midas/midas}/__init__.py +0 -0
  203. {libcom-0.1.6 → libcom-0.1.8}/libcom/painterly_image_harmonization/source/PHDiffusion/ldm/modules/extra_condition/midas/midas/base_model.py +0 -0
  204. {libcom-0.1.6 → libcom-0.1.8}/libcom/painterly_image_harmonization/source/PHDiffusion/ldm/modules/extra_condition/midas/midas/blocks.py +0 -0
  205. {libcom-0.1.6 → libcom-0.1.8}/libcom/painterly_image_harmonization/source/PHDiffusion/ldm/modules/extra_condition/midas/midas/dpt_depth.py +0 -0
  206. {libcom-0.1.6 → libcom-0.1.8}/libcom/painterly_image_harmonization/source/PHDiffusion/ldm/modules/extra_condition/midas/midas/midas_net.py +0 -0
  207. {libcom-0.1.6 → libcom-0.1.8}/libcom/painterly_image_harmonization/source/PHDiffusion/ldm/modules/extra_condition/midas/midas/midas_net_custom.py +0 -0
  208. {libcom-0.1.6 → libcom-0.1.8}/libcom/painterly_image_harmonization/source/PHDiffusion/ldm/modules/extra_condition/midas/midas/transforms.py +0 -0
  209. {libcom-0.1.6 → libcom-0.1.8}/libcom/painterly_image_harmonization/source/PHDiffusion/ldm/modules/extra_condition/midas/midas/vit.py +0 -0
  210. {libcom-0.1.6 → libcom-0.1.8}/libcom/painterly_image_harmonization/source/PHDiffusion/ldm/modules/extra_condition/midas/utils.py +0 -0
  211. {libcom-0.1.6 → libcom-0.1.8}/libcom/painterly_image_harmonization/source/PHDiffusion/ldm/modules/extra_condition/model_edge.py +0 -0
  212. {libcom-0.1.6/libcom/reflection_generation/source/ldm/modules/encoders → libcom-0.1.8/libcom/painterly_image_harmonization/source/PHDiffusion/ldm/modules/extra_condition/openpose}/__init__.py +0 -0
  213. {libcom-0.1.6 → libcom-0.1.8}/libcom/painterly_image_harmonization/source/PHDiffusion/ldm/modules/extra_condition/openpose/api.py +0 -0
  214. {libcom-0.1.6 → libcom-0.1.8}/libcom/painterly_image_harmonization/source/PHDiffusion/ldm/modules/extra_condition/openpose/body.py +0 -0
  215. {libcom-0.1.6 → libcom-0.1.8}/libcom/painterly_image_harmonization/source/PHDiffusion/ldm/modules/extra_condition/openpose/hand.py +0 -0
  216. {libcom-0.1.6 → libcom-0.1.8}/libcom/painterly_image_harmonization/source/PHDiffusion/ldm/modules/extra_condition/openpose/model.py +0 -0
  217. {libcom-0.1.6 → libcom-0.1.8}/libcom/painterly_image_harmonization/source/PHDiffusion/ldm/modules/extra_condition/openpose/util.py +0 -0
  218. {libcom-0.1.6 → libcom-0.1.8}/libcom/painterly_image_harmonization/source/PHDiffusion/ldm/modules/extra_condition/utils.py +0 -0
  219. {libcom-0.1.6/libcom/reflection_generation/source/ldm/modules/image_degradation → libcom-0.1.8/libcom/painterly_image_harmonization/source/PHDiffusion/ldm/modules/fusion}/__init__.py +0 -0
  220. {libcom-0.1.6 → libcom-0.1.8}/libcom/painterly_image_harmonization/source/PHDiffusion/ldm/modules/fusion/dual_encoder_fusion.py +0 -0
  221. {libcom-0.1.6 → libcom-0.1.8}/libcom/painterly_image_harmonization/source/PHDiffusion/ldm/modules/image_degradation/__init__.py +0 -0
  222. {libcom-0.1.6 → libcom-0.1.8}/libcom/painterly_image_harmonization/source/PHDiffusion/ldm/modules/image_degradation/bsrgan.py +0 -0
  223. {libcom-0.1.6 → libcom-0.1.8}/libcom/painterly_image_harmonization/source/PHDiffusion/ldm/modules/image_degradation/bsrgan_light.py +0 -0
  224. {libcom-0.1.6 → libcom-0.1.8}/libcom/painterly_image_harmonization/source/PHDiffusion/ldm/modules/image_degradation/utils_image.py +0 -0
  225. {libcom-0.1.6 → libcom-0.1.8}/libcom/painterly_image_harmonization/source/PHDiffusion/ldm/util.py +0 -0
  226. {libcom-0.1.6 → libcom-0.1.8}/libcom/painterly_image_harmonization/source/PHDiffusion/stable_diffusion.yaml +0 -0
  227. {libcom-0.1.6/libcom/shadow_generation → libcom-0.1.8/libcom/painterly_image_harmonization}/source/__init__.py +0 -0
  228. {libcom-0.1.6 → libcom-0.1.8}/libcom/reflection_generation/__init__.py +0 -0
  229. {libcom-0.1.6 → libcom-0.1.8}/libcom/reflection_generation/reflection_generation.py +0 -0
  230. {libcom-0.1.6 → libcom-0.1.8}/libcom/reflection_generation/source/PostProcessModel.py +0 -0
  231. {libcom-0.1.6/libcom/shadow_generation/source/cldm → libcom-0.1.8/libcom/reflection_generation/source}/__init__.py +0 -0
  232. {libcom-0.1.6/libcom/shadow_generation/source/ldm → libcom-0.1.8/libcom/reflection_generation/source/cldm}/__init__.py +0 -0
  233. {libcom-0.1.6 → libcom-0.1.8}/libcom/reflection_generation/source/cldm/base_network.py +0 -0
  234. {libcom-0.1.6 → libcom-0.1.8}/libcom/reflection_generation/source/cldm/cldm.py +0 -0
  235. {libcom-0.1.6 → libcom-0.1.8}/libcom/reflection_generation/source/cldm/ddim_hacked.py +0 -0
  236. {libcom-0.1.6 → libcom-0.1.8}/libcom/reflection_generation/source/cldm/hack.py +0 -0
  237. {libcom-0.1.6 → libcom-0.1.8}/libcom/reflection_generation/source/cldm/logger.py +0 -0
  238. {libcom-0.1.6 → libcom-0.1.8}/libcom/reflection_generation/source/cldm/model.py +0 -0
  239. {libcom-0.1.6 → libcom-0.1.8}/libcom/reflection_generation/source/cldm_v15.yaml +0 -0
  240. {libcom-0.1.6 → libcom-0.1.8}/libcom/reflection_generation/source/cluster_feature.py +0 -0
  241. {libcom-0.1.6/libcom/shadow_generation/source/ldm/models → libcom-0.1.8/libcom/reflection_generation/source/ldm}/__init__.py +0 -0
  242. {libcom-0.1.6/libcom/shadow_generation/source/ldm/models/diffusion → libcom-0.1.8/libcom/reflection_generation/source/ldm/models}/__init__.py +0 -0
  243. {libcom-0.1.6 → libcom-0.1.8}/libcom/reflection_generation/source/ldm/models/autoencoder.py +0 -0
  244. {libcom-0.1.6/libcom/shadow_generation/source/ldm/modules → libcom-0.1.8/libcom/reflection_generation/source/ldm/models/diffusion}/__init__.py +0 -0
  245. {libcom-0.1.6 → libcom-0.1.8}/libcom/reflection_generation/source/ldm/models/diffusion/attention_processor.py +0 -0
  246. {libcom-0.1.6 → libcom-0.1.8}/libcom/reflection_generation/source/ldm/models/diffusion/ddim.py +0 -0
  247. {libcom-0.1.6 → libcom-0.1.8}/libcom/reflection_generation/source/ldm/models/diffusion/ddpm.py +0 -0
  248. {libcom-0.1.6 → libcom-0.1.8}/libcom/reflection_generation/source/ldm/models/diffusion/dpm_solver/__init__.py +0 -0
  249. {libcom-0.1.6 → libcom-0.1.8}/libcom/reflection_generation/source/ldm/models/diffusion/dpm_solver/dpm_solver.py +0 -0
  250. {libcom-0.1.6 → libcom-0.1.8}/libcom/reflection_generation/source/ldm/models/diffusion/dpm_solver/sampler.py +0 -0
  251. {libcom-0.1.6 → libcom-0.1.8}/libcom/reflection_generation/source/ldm/models/diffusion/ip_adapter.py +0 -0
  252. {libcom-0.1.6 → libcom-0.1.8}/libcom/reflection_generation/source/ldm/models/diffusion/plms.py +0 -0
  253. {libcom-0.1.6 → libcom-0.1.8}/libcom/reflection_generation/source/ldm/models/diffusion/sampling_util.py +0 -0
  254. {libcom-0.1.6/libcom/shadow_generation/source/ldm/modules/diffusionmodules → libcom-0.1.8/libcom/reflection_generation/source/ldm/modules}/__init__.py +0 -0
  255. {libcom-0.1.6 → libcom-0.1.8}/libcom/reflection_generation/source/ldm/modules/attention.py +0 -0
  256. {libcom-0.1.6/libcom/shadow_generation/source/ldm/modules/distributions → libcom-0.1.8/libcom/reflection_generation/source/ldm/modules/diffusionmodules}/__init__.py +0 -0
  257. {libcom-0.1.6 → libcom-0.1.8}/libcom/reflection_generation/source/ldm/modules/diffusionmodules/model.py +0 -0
  258. {libcom-0.1.6 → libcom-0.1.8}/libcom/reflection_generation/source/ldm/modules/diffusionmodules/openaimodel.py +0 -0
  259. {libcom-0.1.6 → libcom-0.1.8}/libcom/reflection_generation/source/ldm/modules/diffusionmodules/upscaling.py +0 -0
  260. {libcom-0.1.6 → libcom-0.1.8}/libcom/reflection_generation/source/ldm/modules/diffusionmodules/util.py +0 -0
  261. {libcom-0.1.6/libcom/shadow_generation/source/ldm/modules/encoders → libcom-0.1.8/libcom/reflection_generation/source/ldm/modules/distributions}/__init__.py +0 -0
  262. {libcom-0.1.6 → libcom-0.1.8}/libcom/reflection_generation/source/ldm/modules/distributions/distributions.py +0 -0
  263. {libcom-0.1.6 → libcom-0.1.8}/libcom/reflection_generation/source/ldm/modules/ema.py +0 -0
  264. {libcom-0.1.6/libcom/shadow_generation/source/ldm/modules/midas → libcom-0.1.8/libcom/reflection_generation/source/ldm/modules/encoders}/__init__.py +0 -0
  265. {libcom-0.1.6 → libcom-0.1.8}/libcom/reflection_generation/source/ldm/modules/encoders/modules.py +0 -0
  266. {libcom-0.1.6/libcom/shadow_generation/source/ldm/modules/midas/midas → libcom-0.1.8/libcom/reflection_generation/source/ldm/modules/image_degradation}/__init__.py +0 -0
  267. {libcom-0.1.6 → libcom-0.1.8}/libcom/reflection_generation/source/ldm/modules/image_degradation/bsrgan.py +0 -0
  268. {libcom-0.1.6 → libcom-0.1.8}/libcom/reflection_generation/source/ldm/modules/image_degradation/bsrgan_light.py +0 -0
  269. {libcom-0.1.6 → libcom-0.1.8}/libcom/reflection_generation/source/ldm/modules/image_degradation/utils_image.py +0 -0
  270. {libcom-0.1.6 → libcom-0.1.8}/libcom/reflection_generation/source/ldm/util.py +0 -0
  271. {libcom-0.1.6 → libcom-0.1.8}/libcom/reflection_generation/source/local_clip.py +0 -0
  272. {libcom-0.1.6 → libcom-0.1.8}/libcom/reflection_generation/source/tool_add_control.py +0 -0
  273. {libcom-0.1.6 → libcom-0.1.8}/libcom/shadow_generation/__init__.py +0 -0
  274. {libcom-0.1.6 → libcom-0.1.8}/libcom/shadow_generation/shadow_generation.py +0 -0
  275. {libcom-0.1.6 → libcom-0.1.8}/libcom/shadow_generation/source/PostProcessModel.py +0 -0
  276. {libcom-0.1.6/libcom/utils → libcom-0.1.8/libcom/shadow_generation/source}/__init__.py +0 -0
  277. {libcom-0.1.6 → libcom-0.1.8}/libcom/shadow_generation/source/attention_processor.py +0 -0
  278. {libcom-0.1.6 → libcom-0.1.8}/libcom/shadow_generation/source/cldm/base_network.py +0 -0
  279. {libcom-0.1.6 → libcom-0.1.8}/libcom/shadow_generation/source/cldm/cldm.py +0 -0
  280. {libcom-0.1.6 → libcom-0.1.8}/libcom/shadow_generation/source/cldm/model.py +0 -0
  281. {libcom-0.1.6 → libcom-0.1.8}/libcom/shadow_generation/source/ldm/models/autoencoder.py +0 -0
  282. {libcom-0.1.6 → libcom-0.1.8}/libcom/shadow_generation/source/ldm/models/diffusion/attention_processor.py +0 -0
  283. {libcom-0.1.6 → libcom-0.1.8}/libcom/shadow_generation/source/ldm/models/diffusion/ddim.py +0 -0
  284. {libcom-0.1.6 → libcom-0.1.8}/libcom/shadow_generation/source/ldm/models/diffusion/ddpm.py +0 -0
  285. {libcom-0.1.6 → libcom-0.1.8}/libcom/shadow_generation/source/ldm/models/diffusion/dpm_solver/__init__.py +0 -0
  286. {libcom-0.1.6 → libcom-0.1.8}/libcom/shadow_generation/source/ldm/models/diffusion/dpm_solver/dpm_solver.py +0 -0
  287. {libcom-0.1.6 → libcom-0.1.8}/libcom/shadow_generation/source/ldm/models/diffusion/dpm_solver/sampler.py +0 -0
  288. {libcom-0.1.6 → libcom-0.1.8}/libcom/shadow_generation/source/ldm/models/diffusion/ip_adapter.py +0 -0
  289. {libcom-0.1.6 → libcom-0.1.8}/libcom/shadow_generation/source/ldm/models/diffusion/plms.py +0 -0
  290. {libcom-0.1.6 → libcom-0.1.8}/libcom/shadow_generation/source/ldm/models/diffusion/sampling_util.py +0 -0
  291. {libcom-0.1.6 → libcom-0.1.8}/libcom/shadow_generation/source/ldm/modules/attention.py +0 -0
  292. {libcom-0.1.6 → libcom-0.1.8}/libcom/shadow_generation/source/ldm/modules/diffusionmodules/model.py +0 -0
  293. {libcom-0.1.6 → libcom-0.1.8}/libcom/shadow_generation/source/ldm/modules/diffusionmodules/openaimodel.py +0 -0
  294. {libcom-0.1.6 → libcom-0.1.8}/libcom/shadow_generation/source/ldm/modules/diffusionmodules/upscaling.py +0 -0
  295. {libcom-0.1.6 → libcom-0.1.8}/libcom/shadow_generation/source/ldm/modules/diffusionmodules/util.py +0 -0
  296. {libcom-0.1.6 → libcom-0.1.8}/libcom/shadow_generation/source/ldm/modules/distributions/distributions.py +0 -0
  297. {libcom-0.1.6 → libcom-0.1.8}/libcom/shadow_generation/source/ldm/modules/ema.py +0 -0
  298. {libcom-0.1.6 → libcom-0.1.8}/libcom/shadow_generation/source/ldm/modules/encoders/modules.py +0 -0
  299. {libcom-0.1.6 → libcom-0.1.8}/libcom/shadow_generation/source/ldm/modules/image_degradation/__init__.py +0 -0
  300. {libcom-0.1.6 → libcom-0.1.8}/libcom/shadow_generation/source/ldm/modules/image_degradation/bsrgan.py +0 -0
  301. {libcom-0.1.6 → libcom-0.1.8}/libcom/shadow_generation/source/ldm/modules/image_degradation/bsrgan_light.py +0 -0
  302. {libcom-0.1.6 → libcom-0.1.8}/libcom/shadow_generation/source/ldm/modules/image_degradation/utils_image.py +0 -0
  303. {libcom-0.1.6 → libcom-0.1.8}/libcom/shadow_generation/source/ldm/modules/midas/api.py +0 -0
  304. {libcom-0.1.6 → libcom-0.1.8}/libcom/shadow_generation/source/ldm/modules/midas/midas/base_model.py +0 -0
  305. {libcom-0.1.6 → libcom-0.1.8}/libcom/shadow_generation/source/ldm/modules/midas/midas/blocks.py +0 -0
  306. {libcom-0.1.6 → libcom-0.1.8}/libcom/shadow_generation/source/ldm/modules/midas/midas/dpt_depth.py +0 -0
  307. {libcom-0.1.6 → libcom-0.1.8}/libcom/shadow_generation/source/ldm/modules/midas/midas/midas_net.py +0 -0
  308. {libcom-0.1.6 → libcom-0.1.8}/libcom/shadow_generation/source/ldm/modules/midas/midas/midas_net_custom.py +0 -0
  309. {libcom-0.1.6 → libcom-0.1.8}/libcom/shadow_generation/source/ldm/modules/midas/midas/transforms.py +0 -0
  310. {libcom-0.1.6 → libcom-0.1.8}/libcom/shadow_generation/source/ldm/modules/midas/midas/vit.py +0 -0
  311. {libcom-0.1.6 → libcom-0.1.8}/libcom/shadow_generation/source/ldm/modules/midas/utils.py +0 -0
  312. {libcom-0.1.6 → libcom-0.1.8}/libcom/shadow_generation/source/ldm/util.py +0 -0
  313. {libcom-0.1.6 → libcom-0.1.8}/libcom/utils/environment.py +0 -0
  314. {libcom-0.1.6 → libcom-0.1.8}/libcom/utils/model_download.py +0 -0
  315. {libcom-0.1.6 → libcom-0.1.8}/libcom/utils/process_image.py +0 -0
  316. {libcom-0.1.6 → libcom-0.1.8}/libcom.egg-info/dependency_links.txt +0 -0
  317. {libcom-0.1.6 → libcom-0.1.8}/libcom.egg-info/top_level.txt +0 -0
  318. {libcom-0.1.6 → libcom-0.1.8}/setup.cfg +0 -0
  319. {libcom-0.1.6 → libcom-0.1.8}/tests/test_color_transfer.py +0 -0
  320. {libcom-0.1.6 → libcom-0.1.8}/tests/test_composite_generation.py +0 -0
  321. {libcom-0.1.6 → libcom-0.1.8}/tests/test_flux_kontext.py +0 -0
  322. {libcom-0.1.6 → libcom-0.1.8}/tests/test_fopa_heat_map.py +0 -0
  323. {libcom-0.1.6 → libcom-0.1.8}/tests/test_fos_score.py +0 -0
  324. {libcom-0.1.6 → libcom-0.1.8}/tests/test_harmony_score.py +0 -0
  325. {libcom-0.1.6 → libcom-0.1.8}/tests/test_image_harmonization.py +0 -0
  326. {libcom-0.1.6 → libcom-0.1.8}/tests/test_inharmonious_region_localization.py +0 -0
  327. {libcom-0.1.6 → libcom-0.1.8}/tests/test_opa_score.py +0 -0
  328. {libcom-0.1.6 → libcom-0.1.8}/tests/test_painterly_image_harmonization.py +0 -0
  329. {libcom-0.1.6 → libcom-0.1.8}/tests/test_reflection_generation.py +0 -0
  330. {libcom-0.1.6 → libcom-0.1.8}/tests/test_shadow_generation.py +0 -0
@@ -0,0 +1,2 @@
1
+ include requirements.txt
2
+ include README.md
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: libcom
3
- Version: 0.1.6
3
+ Version: 0.1.8
4
4
  Summary: Image Composition Toolbox
5
5
  Home-page: https://github.com/bcmi/libcom
6
6
  Author: BCMI Lab
@@ -14,24 +14,21 @@ Classifier: Programming Language :: Python :: 3.8
14
14
  Description-Content-Type: text/markdown
15
15
  License-File: LICENSE
16
16
  Requires-Dist: einops
17
- Requires-Dist: huggingface_hub
17
+ Requires-Dist: huggingface_hub==0.35.1
18
18
  Requires-Dist: imageio
19
19
  Requires-Dist: torch==2.6.0
20
20
  Requires-Dist: torchvision==0.21.0
21
21
  Requires-Dist: diffusers==0.34.0
22
- Requires-Dist: mmdet==3.2.0
23
- Requires-Dist: mmpose==1.2.0
24
- Requires-Dist: peft
22
+ Requires-Dist: peft==0.17.1
25
23
  Requires-Dist: sentencepiece
26
- Requires-Dist: protobuf
27
- Requires-Dist: modelscope
28
- Requires-Dist: omegaconf
29
- Requires-Dist: opencv_python
24
+ Requires-Dist: protobuf==6.32.1
25
+ Requires-Dist: modelscope==1.30.0
26
+ Requires-Dist: omegaconf==2.3.0
30
27
  Requires-Dist: opencv_python_headless
31
- Requires-Dist: pytorch_lightning
28
+ Requires-Dist: pytorch_lightning==2.5.5
32
29
  Requires-Dist: transformers==4.44.2
33
30
  Requires-Dist: tqdm
34
- Requires-Dist: open_clip_torch
31
+ Requires-Dist: open_clip_torch==3.2.0
35
32
  Requires-Dist: taming-transformers-rom1504
36
33
  Requires-Dist: scikit-learn
37
34
  Requires-Dist: segment_anything
@@ -62,14 +59,19 @@ Dynamic: summary
62
59
 
63
60
  [![PyPI](https://img.shields.io/pypi/v/libcom)](https://pypi.org/project/libcom)
64
61
  [![Downloads](https://static.pepy.tech/badge/libcom)](https://pepy.tech/project/libcom)
65
- [![Hits](https://hits.sh/github.com/bcmi/libcom.svg?label=views)](https://hits.sh/github.com/bcmi/libcom/)
62
+ ![visitors](https://visitor-badge.laobi.icu/badge?page_id=bcmi.libcom&left_color=2ea44f&right_color=green&left_text=visitors)
66
63
  [![Static Badge](https://img.shields.io/badge/Online_Workbench-yellow)](https://libcom.ustcnewly.com/)
67
- [![Static Badge](https://img.shields.io/badge/Dataset&Code_Resources-green)](https://github.com/bcmi/Awesome-Object-Insertion)
64
+ [![Static Badge](https://img.shields.io/badge/Dataset&Code_Resources-green)](https://github.com/bcmi/Awesome-Image-Composition)
68
65
  [![Static Badge](https://img.shields.io/badge/survey-arxiv%3A2106.14490-red)](https://arxiv.org/pdf/2106.14490.pdf)
69
66
  [![Static Badge](https://img.shields.io/github/stars/bcmi/libcom.svg?style=social)](https://github.com/bcmi/libcom/stargazers)
70
67
 
71
68
  ---
72
69
 
70
+ Welcome to scan the WeChat QR code to join the discussion group on image composition/compositing, object insertion/addition.
71
+ <p align="center">
72
+ <img width="150" height="150" alt="Image" src="https://github.com/user-attachments/assets/8572a7c4-0f62-4a5f-bc06-9a1d9fcb14e3" />
73
+ </p>
74
+
73
75
  ## Introduction
74
76
  **_libcom_ (the library of image composition) is an image composition toolbox.** The goal of [image composition](https://github.com/bcmi/Awesome-Image-Composition) ([object insertion](https://github.com/bcmi/Awesome-Object-Insertion)) is inserting one foreground into a background image to get a realistic composite image, by addressing the inconsistencies (appearance, geometry, and semantic inconsistency) between foreground and background. Generally speaking, image composition could be used to combine the visual elements from different images.
75
77
  <div align="center">
@@ -82,7 +84,9 @@ Dynamic: summary
82
84
  **The ultimate goal of this library is solving all the problems related to image composition with simple `import libcom`.**
83
85
  Welcome to follow WeChat public account ["Newly AIGCer"](https://www.ustcnewly.com/blog.html) or Zhihu Column ["Newly CVer"](https://www.zhihu.com/column/c_1333918224900206592) to get the latest information about image composition!
84
86
 
85
- We compare the performance of Libcom and Banana Pro across various image composition tasks and write a brief summary in [English](https://zhuanlan.zhihu.com/p/1992987450860118091)/[Chinese](https://zhuanlan.zhihu.com/p/1976625829741082597).
87
+ **Welcome to recommend your self-developed models or models you have tested by opening an issue. If a model delivers outstanding and stable performance, we will consider integrating it into libcom.**
88
+
89
+ **If you specialize in model inference acceleration, we welcome both voluntary and paid collaborations. Please contact us at ustcnewly@sjtu.edu.cn.**
86
90
 
87
91
  ## Online Workbench
88
92
 
@@ -97,19 +101,19 @@ We have built the [image composition workbench](https://libcom.ustcnewly.com/) b
97
101
 
98
102
  ## Main Functions
99
103
 
100
- - **get_composite_image** generates composite images using naive copy-and-paste followed by image blending.
101
- - **OPAScoreModel** [[OPA]](https://github.com/bcmi/Object-Placement-Assessment-Dataset-OPA) evaluates the rationality of foreground object placement in a composite image.
102
- - **FOPAHeatMapModel** [[FOPA]](https://github.com/bcmi/FOPA-Fast-Object-Placement-Assessment) can predict the rationality scores for all locations/scales given a background-foreground pair, and output the composite image with optimal location/scale.
104
+ - **get_composite_image** generates composite images using naive copy-and-paste followed by image blending (alpha blending or Poisson blending).
105
+ - **OPAScoreModel** [[OPA]](https://github.com/bcmi/Object-Placement-Assessment-Dataset-OPA) evaluates the rationality of foreground object placement (location, scale) in a composite image.
106
+ - **FOPAHeatMapModel** [[FOPA]](https://github.com/bcmi/FOPA-Fast-Object-Placement-Assessment) can predict the rationality scores for all locations/scales given a background-foreground pair, when placing the foreground with certain scale at certain location in the background. Based on the predicted rationality score map, the model can output the composite image with optimal location/scale.
103
107
  - **color_transfer** adjusts the foreground color to match the background using traditional color transfer method.
104
108
  - **ImageHarmonizationModel** [[PCTNet]](https://github.com/rakutentech/PCT-Net-Image-Harmonization) [[LBM]](https://github.com/gojasper/LBM) adjusts the foreground illumination to be compatible the background given photorealistic background and photorealistic foreground.
105
109
  - **PainterlyHarmonizationModel** [[PHDNet]](https://github.com/bcmi/PHDNet-Painterly-Image-Harmonization) [[PHDiffusion]](https://github.com/bcmi/PHDiffusion-Painterly-Image-Harmonization) adjusts the foreground style to be compatible with the background given artistic background and photorealistic foreground.
106
- - **HarmonyScoreModel** [[BargainNet]](https://github.com/bcmi/BargainNet-Image-Harmonization) evaluates the harmony level between foreground and background in a composite image.
110
+ - **HarmonyScoreModel** [[BargainNet]](https://github.com/bcmi/BargainNet-Image-Harmonization) evaluates the harmony level between foreground and background in a composite image, that is, whether the illumination of foreground is harmonious with that of background.
107
111
  - **InharmoniousLocalizationModel** [[MadisNet]](https://github.com/bcmi/MadisNet-Inharmonious-Region-Localization) localizes the inharmonious region in a synthetic image.
108
- - **FOSScoreModel** [[DiscoFOS]](https://github.com/bcmi/Foreground-Object-Search-Dataset-FOSD) evaluates the compatibility between foreground and background in a composite image in terms of geometry and semantics.
112
+ - **FOSScoreModel** [[DiscoFOS]](https://github.com/bcmi/Foreground-Object-Search-Dataset-FOSD) evaluates the compatibility between foreground and background in a composite image in terms of geometry and semantics, that is, whether the geometric perspective of foreground matches that of background, and whether the semantic context of foreground in the background is reasonable.
109
113
  - **ShadowGenerationModel** [[GPSDiffusion]](https://github.com/bcmi/GPSDiffusion-Object-Shadow-Generation) generates plausible shadow for the inserted object in a composite image.
110
114
  - **ReflectionGenerationModel** [[RGDiffusion]](https://github.com/bcmi/Object-Reflection-Generation-Dataset-DEROBA) generates plausible reflection for the inserted object in a composite image.
111
115
  - **KontextBlendingHarmonizationModel** [[FluxKontext]](https://github.com/black-forest-labs/flux) is a generative image composition model which inserts foreground into the specified bounding box in the background. The pose and view of foreground stay unchanged. The "blending" mode does not adjust the foreground illumination, while the "harmonization" mode adjusts the foreground illumination to make the composite image harmonious.
112
- - **OSInsertModel** [[OSInsert]](https://github.com/bcmi/OSInsert-Image-Composition) is a generative image composition model which inserts foreground into the specified bounding box in the background. The "conservative" mode has weak ability to adjust the pose and view of foreground according to the background. The "aggressive" mode has stronger ability to adjust the pose and view of foreground according to the background.
116
+ - **OSInsertModel** [[OSInsert]](https://github.com/bcmi/OSInsert-Image-Composition) is a generative image composition model which inserts foreground into the specified bounding box in the background. The "conservative" mode has weak ability to adjust the pose and view of foreground according to the background. The "aggressive" mode has stronger ability to adjust the pose and view of foreground according to the background. You can also use foreground shape mask for controllable composition.
113
117
 
114
118
  **For the detailed method descriptions, code examples, visualization results, and performance comments, please refer to our [[documents]](https://libcom.readthedocs.io/en/latest/).** If the model performance is not satisfactory, you can finetune the pretrained model on your own dataset using the source repository and replace the original model.
115
119
 
@@ -10,14 +10,19 @@
10
10
 
11
11
  [![PyPI](https://img.shields.io/pypi/v/libcom)](https://pypi.org/project/libcom)
12
12
  [![Downloads](https://static.pepy.tech/badge/libcom)](https://pepy.tech/project/libcom)
13
- [![Hits](https://hits.sh/github.com/bcmi/libcom.svg?label=views)](https://hits.sh/github.com/bcmi/libcom/)
13
+ ![visitors](https://visitor-badge.laobi.icu/badge?page_id=bcmi.libcom&left_color=2ea44f&right_color=green&left_text=visitors)
14
14
  [![Static Badge](https://img.shields.io/badge/Online_Workbench-yellow)](https://libcom.ustcnewly.com/)
15
- [![Static Badge](https://img.shields.io/badge/Dataset&Code_Resources-green)](https://github.com/bcmi/Awesome-Object-Insertion)
15
+ [![Static Badge](https://img.shields.io/badge/Dataset&Code_Resources-green)](https://github.com/bcmi/Awesome-Image-Composition)
16
16
  [![Static Badge](https://img.shields.io/badge/survey-arxiv%3A2106.14490-red)](https://arxiv.org/pdf/2106.14490.pdf)
17
17
  [![Static Badge](https://img.shields.io/github/stars/bcmi/libcom.svg?style=social)](https://github.com/bcmi/libcom/stargazers)
18
18
 
19
19
  ---
20
20
 
21
+ Welcome to scan the WeChat QR code to join the discussion group on image composition/compositing, object insertion/addition.
22
+ <p align="center">
23
+ <img width="150" height="150" alt="Image" src="https://github.com/user-attachments/assets/8572a7c4-0f62-4a5f-bc06-9a1d9fcb14e3" />
24
+ </p>
25
+
21
26
  ## Introduction
22
27
  **_libcom_ (the library of image composition) is an image composition toolbox.** The goal of [image composition](https://github.com/bcmi/Awesome-Image-Composition) ([object insertion](https://github.com/bcmi/Awesome-Object-Insertion)) is inserting one foreground into a background image to get a realistic composite image, by addressing the inconsistencies (appearance, geometry, and semantic inconsistency) between foreground and background. Generally speaking, image composition could be used to combine the visual elements from different images.
23
28
  <div align="center">
@@ -30,7 +35,9 @@
30
35
  **The ultimate goal of this library is solving all the problems related to image composition with simple `import libcom`.**
31
36
  Welcome to follow WeChat public account ["Newly AIGCer"](https://www.ustcnewly.com/blog.html) or Zhihu Column ["Newly CVer"](https://www.zhihu.com/column/c_1333918224900206592) to get the latest information about image composition!
32
37
 
33
- We compare the performance of Libcom and Banana Pro across various image composition tasks and write a brief summary in [English](https://zhuanlan.zhihu.com/p/1992987450860118091)/[Chinese](https://zhuanlan.zhihu.com/p/1976625829741082597).
38
+ **Welcome to recommend your self-developed models or models you have tested by opening an issue. If a model delivers outstanding and stable performance, we will consider integrating it into libcom.**
39
+
40
+ **If you specialize in model inference acceleration, we welcome both voluntary and paid collaborations. Please contact us at ustcnewly@sjtu.edu.cn.**
34
41
 
35
42
  ## Online Workbench
36
43
 
@@ -45,19 +52,19 @@ We have built the [image composition workbench](https://libcom.ustcnewly.com/) b
45
52
 
46
53
  ## Main Functions
47
54
 
48
- - **get_composite_image** generates composite images using naive copy-and-paste followed by image blending.
49
- - **OPAScoreModel** [[OPA]](https://github.com/bcmi/Object-Placement-Assessment-Dataset-OPA) evaluates the rationality of foreground object placement in a composite image.
50
- - **FOPAHeatMapModel** [[FOPA]](https://github.com/bcmi/FOPA-Fast-Object-Placement-Assessment) can predict the rationality scores for all locations/scales given a background-foreground pair, and output the composite image with optimal location/scale.
55
+ - **get_composite_image** generates composite images using naive copy-and-paste followed by image blending (alpha blending or Poisson blending).
56
+ - **OPAScoreModel** [[OPA]](https://github.com/bcmi/Object-Placement-Assessment-Dataset-OPA) evaluates the rationality of foreground object placement (location, scale) in a composite image.
57
+ - **FOPAHeatMapModel** [[FOPA]](https://github.com/bcmi/FOPA-Fast-Object-Placement-Assessment) can predict the rationality scores for all locations/scales given a background-foreground pair, when placing the foreground with certain scale at certain location in the background. Based on the predicted rationality score map, the model can output the composite image with optimal location/scale.
51
58
  - **color_transfer** adjusts the foreground color to match the background using traditional color transfer method.
52
59
  - **ImageHarmonizationModel** [[PCTNet]](https://github.com/rakutentech/PCT-Net-Image-Harmonization) [[LBM]](https://github.com/gojasper/LBM) adjusts the foreground illumination to be compatible the background given photorealistic background and photorealistic foreground.
53
60
  - **PainterlyHarmonizationModel** [[PHDNet]](https://github.com/bcmi/PHDNet-Painterly-Image-Harmonization) [[PHDiffusion]](https://github.com/bcmi/PHDiffusion-Painterly-Image-Harmonization) adjusts the foreground style to be compatible with the background given artistic background and photorealistic foreground.
54
- - **HarmonyScoreModel** [[BargainNet]](https://github.com/bcmi/BargainNet-Image-Harmonization) evaluates the harmony level between foreground and background in a composite image.
61
+ - **HarmonyScoreModel** [[BargainNet]](https://github.com/bcmi/BargainNet-Image-Harmonization) evaluates the harmony level between foreground and background in a composite image, that is, whether the illumination of foreground is harmonious with that of background.
55
62
  - **InharmoniousLocalizationModel** [[MadisNet]](https://github.com/bcmi/MadisNet-Inharmonious-Region-Localization) localizes the inharmonious region in a synthetic image.
56
- - **FOSScoreModel** [[DiscoFOS]](https://github.com/bcmi/Foreground-Object-Search-Dataset-FOSD) evaluates the compatibility between foreground and background in a composite image in terms of geometry and semantics.
63
+ - **FOSScoreModel** [[DiscoFOS]](https://github.com/bcmi/Foreground-Object-Search-Dataset-FOSD) evaluates the compatibility between foreground and background in a composite image in terms of geometry and semantics, that is, whether the geometric perspective of foreground matches that of background, and whether the semantic context of foreground in the background is reasonable.
57
64
  - **ShadowGenerationModel** [[GPSDiffusion]](https://github.com/bcmi/GPSDiffusion-Object-Shadow-Generation) generates plausible shadow for the inserted object in a composite image.
58
65
  - **ReflectionGenerationModel** [[RGDiffusion]](https://github.com/bcmi/Object-Reflection-Generation-Dataset-DEROBA) generates plausible reflection for the inserted object in a composite image.
59
66
  - **KontextBlendingHarmonizationModel** [[FluxKontext]](https://github.com/black-forest-labs/flux) is a generative image composition model which inserts foreground into the specified bounding box in the background. The pose and view of foreground stay unchanged. The "blending" mode does not adjust the foreground illumination, while the "harmonization" mode adjusts the foreground illumination to make the composite image harmonious.
60
- - **OSInsertModel** [[OSInsert]](https://github.com/bcmi/OSInsert-Image-Composition) is a generative image composition model which inserts foreground into the specified bounding box in the background. The "conservative" mode has weak ability to adjust the pose and view of foreground according to the background. The "aggressive" mode has stronger ability to adjust the pose and view of foreground according to the background.
67
+ - **OSInsertModel** [[OSInsert]](https://github.com/bcmi/OSInsert-Image-Composition) is a generative image composition model which inserts foreground into the specified bounding box in the background. The "conservative" mode has weak ability to adjust the pose and view of foreground according to the background. The "aggressive" mode has stronger ability to adjust the pose and view of foreground according to the background. You can also use foreground shape mask for controllable composition.
61
68
 
62
69
  **For the detailed method descriptions, code examples, visualization results, and performance comments, please refer to our [[documents]](https://libcom.readthedocs.io/en/latest/).** If the model performance is not satisfactory, you can finetune the pretrained model on your own dataset using the source repository and replace the original model.
63
70
 
@@ -3,7 +3,7 @@ from .naive_composition import *
3
3
  from .opa_score import *
4
4
  from .harmony_score import *
5
5
  from .inharmonious_region_localization import *
6
- from .image_harmonization_old import *
6
+ from .image_harmonization import *
7
7
  from .painterly_image_harmonization import *
8
8
  from .fopa_heat_map import *
9
9
  from .fos_score import *
@@ -18,8 +18,6 @@ if src_dir not in sys.path:
18
18
  sys.path.insert(0, src_dir)
19
19
 
20
20
  from libcom.image_harmonization.source.pct_net import *
21
- from libcom.image_harmonization.source.cdt_net import *
22
-
23
21
 
24
22
  from libcom.image_harmonization.source.src.lbm.inference import get_model
25
23
  from diffusers import FlowMatchEulerDiscreteScheduler
@@ -0,0 +1,141 @@
1
+ import json
2
+ import os
3
+ import warnings
4
+ from dataclasses import asdict, field
5
+ from typing import Any, Dict, Union
6
+
7
+ import yaml
8
+ from pydantic import ValidationError
9
+ from pydantic.dataclasses import dataclass
10
+ from yaml import safe_load
11
+
12
+
13
+ @dataclass
14
+ class BaseConfig:
15
+ """This is the BaseConfig class which defines all the useful loading and saving methods
16
+ of the configs"""
17
+
18
+ name: str = field(init=False)
19
+
20
+ def __post_init__(self):
21
+ self.name = self.__class__.__name__
22
+
23
+ @classmethod
24
+ def from_dict(cls, config_dict: Dict[str, Any]) -> "BaseConfig":
25
+ """Creates a BaseConfig instance from a dictionnary
26
+
27
+ Args:
28
+ config_dict (dict): The Python dictionnary containing all the parameters
29
+
30
+ Returns:
31
+ :class:`BaseConfig`: The created instance
32
+ """
33
+ try:
34
+ config = cls(**config_dict)
35
+ except (ValidationError, TypeError) as e:
36
+ raise e
37
+ return config
38
+
39
+ @classmethod
40
+ def _dict_from_json(cls, json_path: Union[str, os.PathLike]) -> Dict[str, Any]:
41
+ try:
42
+ with open(json_path) as f:
43
+ try:
44
+ config_dict = json.load(f)
45
+ return config_dict
46
+
47
+ except (TypeError, json.JSONDecodeError) as e:
48
+ raise TypeError(
49
+ f"File {json_path} not loadable. Maybe not json ? \n"
50
+ f"Catch Exception {type(e)} with message: " + str(e)
51
+ ) from e
52
+
53
+ except FileNotFoundError:
54
+ raise FileNotFoundError(
55
+ f"Config file not found. Please check path '{json_path}'"
56
+ )
57
+
58
+ @classmethod
59
+ def from_json(cls, json_path: str) -> "BaseConfig":
60
+ """Creates a BaseConfig instance from a JSON config file
61
+
62
+ Args:
63
+ json_path (str): The path to the json file containing all the parameters
64
+
65
+ Returns:
66
+ :class:`BaseConfig`: The created instance
67
+ """
68
+ config_dict = cls._dict_from_json(json_path)
69
+
70
+ config_name = config_dict.pop("name")
71
+
72
+ if cls.__name__ != config_name:
73
+ warnings.warn(
74
+ f"You are trying to load a "
75
+ f"`{ cls.__name__}` while a "
76
+ f"`{config_name}` is given."
77
+ )
78
+
79
+ return cls.from_dict(config_dict)
80
+
81
+ def to_dict(self) -> dict:
82
+ """Transforms object into a Python dictionnary
83
+
84
+ Returns:
85
+ (dict): The dictionnary containing all the parameters"""
86
+ return asdict(self)
87
+
88
+ def to_json_string(self):
89
+ """Transforms object into a JSON string
90
+
91
+ Returns:
92
+ (str): The JSON str containing all the parameters"""
93
+ return json.dumps(self.to_dict())
94
+
95
+ def save_json(self, file_path: str):
96
+ """Saves a ``.json`` file from the dataclass
97
+
98
+ Args:
99
+ file_path (str): path to the file
100
+ """
101
+ with open(os.path.join(file_path), "w", encoding="utf-8") as fp:
102
+ fp.write(self.to_json_string())
103
+
104
+ def save_yaml(self, file_path: str):
105
+ """Saves a ``.yaml`` file from the dataclass
106
+
107
+ Args:
108
+ file_path (str): path to the file
109
+ """
110
+ with open(os.path.join(file_path), "w", encoding="utf-8") as fp:
111
+ yaml.dump(self.to_dict(), fp)
112
+
113
+ @classmethod
114
+ def from_yaml(cls, yaml_path: str) -> "BaseConfig":
115
+ """Creates a BaseConfig instance from a YAML config file
116
+
117
+ Args:
118
+ yaml_path (str): The path to the yaml file containing all the parameters
119
+
120
+ Returns:
121
+ :class:`BaseConfig`: The created instance
122
+ """
123
+ with open(yaml_path, "r") as f:
124
+ try:
125
+ config_dict = safe_load(f)
126
+ except yaml.YAMLError as e:
127
+ raise yaml.YAMLError(
128
+ f"File {yaml_path} not loadable. Maybe not yaml ? \n"
129
+ f"Catch Exception {type(e)} with message: " + str(e)
130
+ ) from e
131
+
132
+ config_name = config_dict.pop("name")
133
+
134
+ if cls.__name__ != config_name:
135
+ warnings.warn(
136
+ f"You are trying to load a "
137
+ f"`{ cls.__name__}` while a "
138
+ f"`{config_name}` is given."
139
+ )
140
+
141
+ return cls.from_dict(config_dict)
@@ -0,0 +1,62 @@
1
+ """
2
+ This module contains a collection of data related classes and functions to train the :mod:`cr.models`.
3
+ In a training loop a batch of data is struvtued as a dictionnary on which the modules :mod:`cr.data.datasets`
4
+ and :mod:`cr.data.filters` allow to perform several operations.
5
+
6
+
7
+ Examples
8
+ ########
9
+
10
+ Create a DataModule to train a model
11
+
12
+ .. code-block::python
13
+
14
+ from cr.data import DataModule, DataModuleConfig
15
+ from cr.data.filters import KeyFilter, KeyFilterConfig
16
+ from cr.data.mappers import KeyRenameMapper, KeyRenameMapperConfig
17
+
18
+ # Create the filters and mappers
19
+ filters_mappers = [
20
+ KeyFilter(KeyFilterConfig(keys=["image", "txt"])),
21
+ KeyRenameMapper(
22
+ KeyRenameMapperConfig(key_map={"jpg": "image", "txt": "text"})
23
+ )
24
+ ]
25
+
26
+ # Create the DataModule
27
+ data_module = DataModule(
28
+ train_config=DataModuleConfig(
29
+ shards_path_or_urls="your urls or paths",
30
+ decoder="pil",
31
+ shuffle_buffer_size=100,
32
+ per_worker_batch_size=32,
33
+ num_workers=4,
34
+ ),
35
+ train_filters_mappers=filters_mappers,
36
+ eval_config=DataModuleConfig(
37
+ shards_path_or_urls="your urls or paths",
38
+ decoder="pil",
39
+ shuffle_buffer_size=100,
40
+ per_worker_batch_size=32,
41
+ num_workers=4,
42
+ ),
43
+ eval_filters_mappers=filters_mappers,
44
+ )
45
+
46
+ # This can then be passed to a :mod:`pytorch_lightning.Trainer` to train a model
47
+
48
+
49
+
50
+
51
+
52
+ The :mod:`cr.data` includes the following submodules:
53
+
54
+ - :mod:`cr.data.datasets`: a collection of :mod:`pytorch_lightning.LightningDataModule` used to train the models. In particular,
55
+ they can used to create the dataloaders and setup the data pipelines.
56
+ - :mod:`cr.data.filters`: a collection of filters used apply filters on a training batch of data/
57
+
58
+ """
59
+
60
+ from .datasets import DataModule
61
+
62
+ __all__ = ["DataModule"]
@@ -0,0 +1,9 @@
1
+ """
2
+ A collection of :mod:`pytorch_lightning.LightningDataModule` used to train the models. In particular,
3
+ they can be used to create the dataloaders and setup the data pipelines.
4
+ """
5
+
6
+ from .dataset import DataModule
7
+ from .datasets_config import DataModuleConfig
8
+
9
+ __all__ = ["DataModule", "DataModuleConfig"]
@@ -0,0 +1,41 @@
1
+ from typing import Dict, List, Union
2
+
3
+ import numpy as np
4
+ import torch
5
+
6
+
7
+ def custom_collation_fn(
8
+ samples: List[Dict[str, Union[int, float, np.ndarray, torch.Tensor]]],
9
+ combine_tensors: bool = True,
10
+ combine_scalars: bool = True,
11
+ ) -> dict:
12
+ """
13
+ Collate function for PyTorch DataLoader.
14
+
15
+ Args:
16
+ samples(List[Dict[str, Union[int, float, np.ndarray, torch.Tensor]]]): List of samples.
17
+ combine_tensors (bool): Whether to turn lists of tensors into a single tensor.
18
+ combine_scalars (bool): Whether to turn lists of scalars into a single ndarray.
19
+ """
20
+ keys = set.intersection(*[set(sample.keys()) for sample in samples])
21
+ batched = {key: [] for key in keys}
22
+ for s in samples:
23
+ [batched[key].append(s[key]) for key in batched]
24
+
25
+ result = {}
26
+ for key in batched:
27
+ if isinstance(batched[key][0], (int, float)):
28
+ if combine_scalars:
29
+ result[key] = np.array(list(batched[key]))
30
+ elif isinstance(batched[key][0], torch.Tensor):
31
+ if combine_tensors:
32
+ result[key] = torch.stack(list(batched[key]))
33
+ elif isinstance(batched[key][0], np.ndarray):
34
+ if combine_tensors:
35
+ result[key] = np.array(list(batched[key]))
36
+ else:
37
+ result[key] = list(batched[key])
38
+
39
+ del samples
40
+ del batched
41
+ return result