libcom 0.1.7__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.
- libcom-0.1.8/MANIFEST.in +2 -0
- {libcom-0.1.7 → libcom-0.1.8}/PKG-INFO +24 -20
- {libcom-0.1.7 → libcom-0.1.8}/README.md +16 -9
- libcom-0.1.8/libcom/image_harmonization/source/src/lbm/config.py +141 -0
- libcom-0.1.8/libcom/image_harmonization/source/src/lbm/data/__init__.py +62 -0
- libcom-0.1.8/libcom/image_harmonization/source/src/lbm/data/datasets/__init__.py +9 -0
- libcom-0.1.8/libcom/image_harmonization/source/src/lbm/data/datasets/collation_fn.py +41 -0
- libcom-0.1.8/libcom/image_harmonization/source/src/lbm/data/datasets/dataset.py +243 -0
- libcom-0.1.8/libcom/image_harmonization/source/src/lbm/data/datasets/datasets_config.py +42 -0
- libcom-0.1.8/libcom/image_harmonization/source/src/lbm/data/filters/__init__.py +12 -0
- libcom-0.1.8/libcom/image_harmonization/source/src/lbm/data/filters/base.py +21 -0
- libcom-0.1.8/libcom/image_harmonization/source/src/lbm/data/filters/filter_wrapper.py +36 -0
- libcom-0.1.8/libcom/image_harmonization/source/src/lbm/data/filters/filters.py +33 -0
- libcom-0.1.8/libcom/image_harmonization/source/src/lbm/data/filters/filters_config.py +32 -0
- libcom-0.1.8/libcom/image_harmonization/source/src/lbm/data/mappers/__init__.py +19 -0
- libcom-0.1.8/libcom/image_harmonization/source/src/lbm/data/mappers/base.py +26 -0
- libcom-0.1.8/libcom/image_harmonization/source/src/lbm/data/mappers/mappers.py +135 -0
- libcom-0.1.8/libcom/image_harmonization/source/src/lbm/data/mappers/mappers_config.py +109 -0
- libcom-0.1.8/libcom/image_harmonization/source/src/lbm/data/mappers/mappers_wrapper.py +31 -0
- libcom-0.1.8/libcom/image_harmonization/source/src/lbm/inference/__init__.py +4 -0
- libcom-0.1.8/libcom/image_harmonization/source/src/lbm/inference/inference.py +70 -0
- libcom-0.1.8/libcom/image_harmonization/source/src/lbm/inference/utils.py +222 -0
- libcom-0.1.8/libcom/image_harmonization/source/src/lbm/models/base/__init__.py +4 -0
- libcom-0.1.8/libcom/image_harmonization/source/src/lbm/models/base/base_model.py +66 -0
- libcom-0.1.8/libcom/image_harmonization/source/src/lbm/models/base/model_config.py +8 -0
- libcom-0.1.8/libcom/image_harmonization/source/src/lbm/models/embedders/__init__.py +4 -0
- libcom-0.1.8/libcom/image_harmonization/source/src/lbm/models/embedders/base/__init__.py +4 -0
- libcom-0.1.8/libcom/image_harmonization/source/src/lbm/models/embedders/base/base_conditioner.py +60 -0
- libcom-0.1.8/libcom/image_harmonization/source/src/lbm/models/embedders/base/base_conditioner_config.py +27 -0
- libcom-0.1.8/libcom/image_harmonization/source/src/lbm/models/embedders/conditioners_wrapper.py +114 -0
- libcom-0.1.8/libcom/image_harmonization/source/src/lbm/models/embedders/latents_concat/__init__.py +4 -0
- libcom-0.1.8/libcom/image_harmonization/source/src/lbm/models/embedders/latents_concat/latents_concat_embedder_config.py +31 -0
- libcom-0.1.8/libcom/image_harmonization/source/src/lbm/models/embedders/latents_concat/latents_concat_embedder_model.py +80 -0
- libcom-0.1.8/libcom/image_harmonization/source/src/lbm/models/lbm/__init__.py +4 -0
- libcom-0.1.8/libcom/image_harmonization/source/src/lbm/models/lbm/lbm_config.py +101 -0
- libcom-0.1.8/libcom/image_harmonization/source/src/lbm/models/lbm/lbm_model.py +359 -0
- libcom-0.1.8/libcom/image_harmonization/source/src/lbm/models/unets/__init__.py +14 -0
- libcom-0.1.8/libcom/image_harmonization/source/src/lbm/models/unets/unet.py +148 -0
- libcom-0.1.8/libcom/image_harmonization/source/src/lbm/models/utils.py +377 -0
- libcom-0.1.8/libcom/image_harmonization/source/src/lbm/models/vae/__init__.py +4 -0
- libcom-0.1.8/libcom/image_harmonization/source/src/lbm/models/vae/autoencoderKL.py +136 -0
- libcom-0.1.8/libcom/image_harmonization/source/src/lbm/models/vae/autoencoderKL_config.py +27 -0
- libcom-0.1.8/libcom/image_harmonization/source/src/lbm/trainer/__init__.py +85 -0
- libcom-0.1.8/libcom/image_harmonization/source/src/lbm/trainer/loggers.py +324 -0
- libcom-0.1.8/libcom/image_harmonization/source/src/lbm/trainer/trainer.py +199 -0
- libcom-0.1.8/libcom/image_harmonization/source/src/lbm/trainer/training_config.py +82 -0
- libcom-0.1.8/libcom/image_harmonization/source/src/lbm/trainer/utils.py +193 -0
- libcom-0.1.8/libcom/os_insert/source/ldm/data/base.py +23 -0
- libcom-0.1.8/libcom/os_insert/source/ldm/data/datamodule.py +128 -0
- libcom-0.1.8/libcom/os_insert/source/ldm/data/imagenet.py +394 -0
- libcom-0.1.8/libcom/os_insert/source/ldm/data/lsun.py +92 -0
- libcom-0.1.8/libcom/os_insert/source/ldm/data/open_images.py +728 -0
- libcom-0.1.8/libcom/os_insert/source/ldm/models/autoencoder.py +443 -0
- libcom-0.1.8/libcom/os_insert/source/ldm/models/diffusion/classifier.py +267 -0
- libcom-0.1.8/libcom/os_insert/source/ldm/models/diffusion/ddim.py +263 -0
- libcom-0.1.8/libcom/os_insert/source/ldm/models/diffusion/ddpm.py +1417 -0
- libcom-0.1.8/libcom/os_insert/source/ldm/models/diffusion/plms.py +252 -0
- libcom-0.1.8/libcom/os_insert/source/ldm/modules/attention.py +261 -0
- libcom-0.1.8/libcom/os_insert/source/ldm/modules/diffusionmodules/model.py +835 -0
- libcom-0.1.8/libcom/os_insert/source/ldm/modules/diffusionmodules/openaimodel.py +1108 -0
- libcom-0.1.8/libcom/os_insert/source/ldm/modules/diffusionmodules/util.py +267 -0
- libcom-0.1.8/libcom/os_insert/source/ldm/modules/ema.py +76 -0
- libcom-0.1.8/libcom/os_insert/source/ldm/modules/encoders/modules.py +190 -0
- libcom-0.1.8/libcom/os_insert/source/ldm/modules/encoders/xf.py +130 -0
- libcom-0.1.8/libcom/os_insert/source/ldm/modules/losses/__init__.py +1 -0
- libcom-0.1.8/libcom/os_insert/source/ldm/modules/losses/contperceptual.py +111 -0
- libcom-0.1.8/libcom/os_insert/source/ldm/modules/losses/vqperceptual.py +167 -0
- libcom-0.1.8/libcom/os_insert/source/ldm/modules/x_transformer.py +641 -0
- libcom-0.1.8/libcom/os_insert/source/ldm/util.py +203 -0
- libcom-0.1.8/libcom/painterly_image_harmonization/source/PHDiffusion/ldm/lr_scheduler.py +98 -0
- libcom-0.1.8/libcom/painterly_image_harmonization/source/PHDiffusion/ldm/modules/distributions/distributions.py +92 -0
- libcom-0.1.8/libcom/shadow_generation/source/cldm/__init__.py +0 -0
- libcom-0.1.8/libcom/shadow_generation/source/ldm/__init__.py +0 -0
- libcom-0.1.8/libcom/shadow_generation/source/ldm/models/__init__.py +0 -0
- libcom-0.1.8/libcom/shadow_generation/source/ldm/models/diffusion/__init__.py +0 -0
- libcom-0.1.8/libcom/shadow_generation/source/ldm/modules/__init__.py +0 -0
- libcom-0.1.8/libcom/shadow_generation/source/ldm/modules/diffusionmodules/__init__.py +0 -0
- libcom-0.1.8/libcom/shadow_generation/source/ldm/modules/distributions/__init__.py +0 -0
- libcom-0.1.8/libcom/shadow_generation/source/ldm/modules/encoders/__init__.py +0 -0
- libcom-0.1.8/libcom/shadow_generation/source/ldm/modules/midas/__init__.py +0 -0
- libcom-0.1.8/libcom/shadow_generation/source/ldm/modules/midas/midas/__init__.py +0 -0
- libcom-0.1.8/libcom/utils/__init__.py +0 -0
- {libcom-0.1.7 → libcom-0.1.8}/libcom.egg-info/PKG-INFO +24 -20
- {libcom-0.1.7 → libcom-0.1.8}/libcom.egg-info/SOURCES.txt +81 -1
- {libcom-0.1.7 → libcom-0.1.8}/libcom.egg-info/requires.txt +7 -10
- libcom-0.1.8/requirements.txt +26 -0
- {libcom-0.1.7 → libcom-0.1.8}/setup.py +1 -1
- libcom-0.1.7/libcom/os_insert/source/refine.py +0 -528
- {libcom-0.1.7 → libcom-0.1.8}/LICENSE +0 -0
- {libcom-0.1.7 → libcom-0.1.8}/libcom/__init__.py +0 -0
- {libcom-0.1.7 → libcom-0.1.8}/libcom/color_transfer/__init__.py +0 -0
- {libcom-0.1.7 → libcom-0.1.8}/libcom/color_transfer/reinhard.py +0 -0
- {libcom-0.1.7 → libcom-0.1.8}/libcom/fopa_heat_map/__init__.py +0 -0
- {libcom-0.1.7 → libcom-0.1.8}/libcom/fopa_heat_map/fopa_heat_map.py +0 -0
- {libcom-0.1.7 → libcom-0.1.8}/libcom/fopa_heat_map/source/__init__.py +0 -0
- {libcom-0.1.7 → libcom-0.1.8}/libcom/fopa_heat_map/source/backbone/ResNet.py +0 -0
- {libcom-0.1.7 → libcom-0.1.8}/libcom/fopa_heat_map/source/backbone/__init__.py +0 -0
- {libcom-0.1.7 → libcom-0.1.8}/libcom/fopa_heat_map/source/data/OBdataset.py +0 -0
- {libcom-0.1.7 → libcom-0.1.8}/libcom/fopa_heat_map/source/data/__init__.py +0 -0
- {libcom-0.1.7 → libcom-0.1.8}/libcom/fopa_heat_map/source/data/all_transforms.py +0 -0
- {libcom-0.1.7 → libcom-0.1.8}/libcom/fopa_heat_map/source/network/BaseBlocks.py +0 -0
- {libcom-0.1.7 → libcom-0.1.8}/libcom/fopa_heat_map/source/network/DynamicModules.py +0 -0
- {libcom-0.1.7 → libcom-0.1.8}/libcom/fopa_heat_map/source/network/ObPlaNet_simple.py +0 -0
- {libcom-0.1.7 → libcom-0.1.8}/libcom/fopa_heat_map/source/network/__init__.py +0 -0
- {libcom-0.1.7 → libcom-0.1.8}/libcom/fopa_heat_map/source/network/tensor_ops.py +0 -0
- {libcom-0.1.7 → libcom-0.1.8}/libcom/fopa_heat_map/source/prepare_multi_fg_scales.py +0 -0
- {libcom-0.1.7 → libcom-0.1.8}/libcom/fos_score/__init__.py +0 -0
- {libcom-0.1.7 → libcom-0.1.8}/libcom/fos_score/fos_score_prediction.py +0 -0
- {libcom-0.1.7 → libcom-0.1.8}/libcom/fos_score/source/__init__.py +0 -0
- {libcom-0.1.7 → libcom-0.1.8}/libcom/fos_score/source/config/__init__.py +0 -0
- {libcom-0.1.7 → libcom-0.1.8}/libcom/fos_score/source/config/config.py +0 -0
- {libcom-0.1.7 → libcom-0.1.8}/libcom/fos_score/source/config/config.sfosd.yaml +0 -0
- {libcom-0.1.7 → libcom-0.1.8}/libcom/fos_score/source/config/config_rfosd.yaml +0 -0
- {libcom-0.1.7 → libcom-0.1.8}/libcom/fos_score/source/loss_function.py +0 -0
- {libcom-0.1.7 → libcom-0.1.8}/libcom/fos_score/source/networks.py +0 -0
- {libcom-0.1.7 → libcom-0.1.8}/libcom/harmony_score/__init__.py +0 -0
- {libcom-0.1.7 → libcom-0.1.8}/libcom/harmony_score/harmony_score_prediction.py +0 -0
- {libcom-0.1.7 → libcom-0.1.8}/libcom/harmony_score/source/__init__.py +0 -0
- {libcom-0.1.7 → libcom-0.1.8}/libcom/harmony_score/source/bargainnet.py +0 -0
- {libcom-0.1.7 → libcom-0.1.8}/libcom/image_harmonization/__init__.py +0 -0
- {libcom-0.1.7 → libcom-0.1.8}/libcom/image_harmonization/image_harmonization.py +0 -0
- {libcom-0.1.7 → libcom-0.1.8}/libcom/image_harmonization/source/__init__.py +0 -0
- {libcom-0.1.7 → libcom-0.1.8}/libcom/image_harmonization/source/functions.py +0 -0
- {libcom-0.1.7 → libcom-0.1.8}/libcom/image_harmonization/source/pct_net.py +0 -0
- {libcom-0.1.7/libcom/inharmonious_region_localization/source → libcom-0.1.8/libcom/image_harmonization/source/src}/__init__.py +0 -0
- {libcom-0.1.7/libcom/kontext_blending_harmonization/source → libcom-0.1.8/libcom/image_harmonization/source/src/lbm}/__init__.py +0 -0
- {libcom-0.1.7/libcom/painterly_image_harmonization/source/PHDNet → libcom-0.1.8/libcom/image_harmonization/source/src/lbm/models}/__init__.py +0 -0
- {libcom-0.1.7 → libcom-0.1.8}/libcom/inharmonious_region_localization/__init__.py +0 -0
- {libcom-0.1.7 → libcom-0.1.8}/libcom/inharmonious_region_localization/inharmonious_region_localization.py +0 -0
- {libcom-0.1.7/libcom/painterly_image_harmonization/source/PHDiffusion → libcom-0.1.8/libcom/inharmonious_region_localization/source}/__init__.py +0 -0
- {libcom-0.1.7 → libcom-0.1.8}/libcom/inharmonious_region_localization/source/blocks.py +0 -0
- {libcom-0.1.7 → libcom-0.1.8}/libcom/inharmonious_region_localization/source/functions.py +0 -0
- {libcom-0.1.7 → libcom-0.1.8}/libcom/inharmonious_region_localization/source/madis_net.py +0 -0
- {libcom-0.1.7 → libcom-0.1.8}/libcom/kontext_blending_harmonization/__init__.py +0 -0
- {libcom-0.1.7 → libcom-0.1.8}/libcom/kontext_blending_harmonization/kontext_blending_harmonization.py +0 -0
- {libcom-0.1.7/libcom/painterly_image_harmonization/source/PHDiffusion/ldm → libcom-0.1.8/libcom/kontext_blending_harmonization/source}/__init__.py +0 -0
- {libcom-0.1.7 → libcom-0.1.8}/libcom/kontext_blending_harmonization/source/pipeline.py +0 -0
- {libcom-0.1.7 → libcom-0.1.8}/libcom/naive_composition/__init__.py +0 -0
- {libcom-0.1.7 → libcom-0.1.8}/libcom/naive_composition/generate_composite_image.py +0 -0
- {libcom-0.1.7 → libcom-0.1.8}/libcom/opa_score/__init__.py +0 -0
- {libcom-0.1.7 → libcom-0.1.8}/libcom/opa_score/opa_score_prediction.py +0 -0
- {libcom-0.1.7 → libcom-0.1.8}/libcom/opa_score/source/__init__.py +0 -0
- {libcom-0.1.7 → libcom-0.1.8}/libcom/opa_score/source/object_place_net.py +0 -0
- {libcom-0.1.7 → libcom-0.1.8}/libcom/opa_score/source/oblect_place_config.py +0 -0
- {libcom-0.1.7 → libcom-0.1.8}/libcom/opa_score/source/resnet_4ch.py +0 -0
- {libcom-0.1.7 → libcom-0.1.8}/libcom/os_insert/__init__.py +0 -0
- {libcom-0.1.7 → libcom-0.1.8}/libcom/os_insert/diffusers_osinsert/__init__.py +0 -0
- {libcom-0.1.7 → libcom-0.1.8}/libcom/os_insert/diffusers_osinsert/_patched_pipeline_flux_fill.py +0 -0
- {libcom-0.1.7 → libcom-0.1.8}/libcom/os_insert/os_insert.py +0 -0
- {libcom-0.1.7 → libcom-0.1.8}/libcom/os_insert/source/__init__.py +0 -0
- {libcom-0.1.7 → libcom-0.1.8}/libcom/os_insert/source/ia_utils.py +0 -0
- {libcom-0.1.7 → libcom-0.1.8}/libcom/os_insert/source/insertanything_infer.py +0 -0
- {libcom-0.1.7/libcom/painterly_image_harmonization/source/PHDiffusion/ldm/models → libcom-0.1.8/libcom/os_insert/source/ldm}/__init__.py +0 -0
- {libcom-0.1.7/libcom/painterly_image_harmonization/source/PHDiffusion/ldm/modules → libcom-0.1.8/libcom/os_insert/source/ldm/data}/__init__.py +0 -0
- {libcom-0.1.7/libcom/painterly_image_harmonization/source/PHDiffusion → libcom-0.1.8/libcom/os_insert/source}/ldm/lr_scheduler.py +0 -0
- {libcom-0.1.7/libcom/painterly_image_harmonization/source/PHDiffusion/ldm/modules/diffusionmodules → libcom-0.1.8/libcom/os_insert/source/ldm/models}/__init__.py +0 -0
- {libcom-0.1.7/libcom/painterly_image_harmonization/source/PHDiffusion/ldm/modules/distributions → libcom-0.1.8/libcom/os_insert/source/ldm/models/diffusion}/__init__.py +0 -0
- {libcom-0.1.7/libcom/painterly_image_harmonization/source/PHDiffusion/ldm/modules/encoders → libcom-0.1.8/libcom/os_insert/source/ldm/modules}/__init__.py +0 -0
- {libcom-0.1.7/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
- {libcom-0.1.7/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
- {libcom-0.1.7/libcom/painterly_image_harmonization/source/PHDiffusion → libcom-0.1.8/libcom/os_insert/source}/ldm/modules/distributions/distributions.py +0 -0
- {libcom-0.1.7/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
- {libcom-0.1.7 → libcom-0.1.8}/libcom/os_insert/source/objectstitch_data.py +0 -0
- {libcom-0.1.7 → libcom-0.1.8}/libcom/os_insert/source/objectstitch_infer.py +0 -0
- {libcom-0.1.7 → libcom-0.1.8}/libcom/os_insert/source/sam_on_objectstitch.py +0 -0
- {libcom-0.1.7 → libcom-0.1.8}/libcom/os_insert/source/utils.py +0 -0
- {libcom-0.1.7 → libcom-0.1.8}/libcom/os_insert/source/v1.yaml +0 -0
- {libcom-0.1.7 → libcom-0.1.8}/libcom/painterly_image_harmonization/__init__.py +0 -0
- {libcom-0.1.7 → libcom-0.1.8}/libcom/painterly_image_harmonization/painterly_image_harmonization.py +0 -0
- {libcom-0.1.7/libcom/painterly_image_harmonization/source/PHDiffusion/ldm/modules/fusion → libcom-0.1.8/libcom/painterly_image_harmonization/source/PHDNet}/__init__.py +0 -0
- {libcom-0.1.7 → libcom-0.1.8}/libcom/painterly_image_harmonization/source/PHDNet/networks.py +0 -0
- {libcom-0.1.7 → libcom-0.1.8}/libcom/painterly_image_harmonization/source/PHDNet/phdnet.py +0 -0
- {libcom-0.1.7 → libcom-0.1.8}/libcom/painterly_image_harmonization/source/PHDNet/phdnet_config.py +0 -0
- {libcom-0.1.7/libcom/painterly_image_harmonization/source → libcom-0.1.8/libcom/painterly_image_harmonization/source/PHDiffusion}/__init__.py +0 -0
- {libcom-0.1.7/libcom/reflection_generation/source → libcom-0.1.8/libcom/painterly_image_harmonization/source/PHDiffusion/ldm}/__init__.py +0 -0
- {libcom-0.1.7 → libcom-0.1.8}/libcom/painterly_image_harmonization/source/PHDiffusion/ldm/inference_base.py +0 -0
- {libcom-0.1.7/libcom/reflection_generation/source/cldm → libcom-0.1.8/libcom/painterly_image_harmonization/source/PHDiffusion/ldm/models}/__init__.py +0 -0
- {libcom-0.1.7 → libcom-0.1.8}/libcom/painterly_image_harmonization/source/PHDiffusion/ldm/models/autoencoder.py +0 -0
- {libcom-0.1.7 → libcom-0.1.8}/libcom/painterly_image_harmonization/source/PHDiffusion/ldm/models/diffusion/__init__.py +0 -0
- {libcom-0.1.7 → libcom-0.1.8}/libcom/painterly_image_harmonization/source/PHDiffusion/ldm/models/diffusion/ddim.py +0 -0
- {libcom-0.1.7 → libcom-0.1.8}/libcom/painterly_image_harmonization/source/PHDiffusion/ldm/models/diffusion/ddpm.py +0 -0
- {libcom-0.1.7 → libcom-0.1.8}/libcom/painterly_image_harmonization/source/PHDiffusion/ldm/models/diffusion/dpm_solver/__init__.py +0 -0
- {libcom-0.1.7 → libcom-0.1.8}/libcom/painterly_image_harmonization/source/PHDiffusion/ldm/models/diffusion/dpm_solver/dpm_solver.py +0 -0
- {libcom-0.1.7 → libcom-0.1.8}/libcom/painterly_image_harmonization/source/PHDiffusion/ldm/models/diffusion/dpm_solver/sampler.py +0 -0
- {libcom-0.1.7 → libcom-0.1.8}/libcom/painterly_image_harmonization/source/PHDiffusion/ldm/models/diffusion/plms.py +0 -0
- {libcom-0.1.7 → libcom-0.1.8}/libcom/painterly_image_harmonization/source/PHDiffusion/ldm/models/diffusion/scheduling_pndm.py +0 -0
- {libcom-0.1.7/libcom/reflection_generation/source/ldm → libcom-0.1.8/libcom/painterly_image_harmonization/source/PHDiffusion/ldm/modules}/__init__.py +0 -0
- {libcom-0.1.7 → libcom-0.1.8}/libcom/painterly_image_harmonization/source/PHDiffusion/ldm/modules/attention.py +0 -0
- {libcom-0.1.7/libcom/reflection_generation/source/ldm/models → libcom-0.1.8/libcom/painterly_image_harmonization/source/PHDiffusion/ldm/modules/diffusionmodules}/__init__.py +0 -0
- {libcom-0.1.7 → libcom-0.1.8}/libcom/painterly_image_harmonization/source/PHDiffusion/ldm/modules/diffusionmodules/model.py +0 -0
- {libcom-0.1.7 → libcom-0.1.8}/libcom/painterly_image_harmonization/source/PHDiffusion/ldm/modules/diffusionmodules/openaimodel.py +0 -0
- {libcom-0.1.7 → libcom-0.1.8}/libcom/painterly_image_harmonization/source/PHDiffusion/ldm/modules/diffusionmodules/util.py +0 -0
- {libcom-0.1.7/libcom/reflection_generation/source/ldm/models/diffusion → libcom-0.1.8/libcom/painterly_image_harmonization/source/PHDiffusion/ldm/modules/distributions}/__init__.py +0 -0
- {libcom-0.1.7 → libcom-0.1.8}/libcom/painterly_image_harmonization/source/PHDiffusion/ldm/modules/ema.py +0 -0
- {libcom-0.1.7/libcom/reflection_generation/source/ldm/modules → libcom-0.1.8/libcom/painterly_image_harmonization/source/PHDiffusion/ldm/modules/encoders}/__init__.py +0 -0
- {libcom-0.1.7 → libcom-0.1.8}/libcom/painterly_image_harmonization/source/PHDiffusion/ldm/modules/encoders/adapter.py +0 -0
- {libcom-0.1.7 → libcom-0.1.8}/libcom/painterly_image_harmonization/source/PHDiffusion/ldm/modules/encoders/modules.py +0 -0
- {libcom-0.1.7 → libcom-0.1.8}/libcom/painterly_image_harmonization/source/PHDiffusion/ldm/modules/extra_condition/__init__.py +0 -0
- {libcom-0.1.7 → libcom-0.1.8}/libcom/painterly_image_harmonization/source/PHDiffusion/ldm/modules/extra_condition/api.py +0 -0
- {libcom-0.1.7/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
- {libcom-0.1.7 → libcom-0.1.8}/libcom/painterly_image_harmonization/source/PHDiffusion/ldm/modules/extra_condition/midas/api.py +0 -0
- {libcom-0.1.7/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
- {libcom-0.1.7 → libcom-0.1.8}/libcom/painterly_image_harmonization/source/PHDiffusion/ldm/modules/extra_condition/midas/midas/base_model.py +0 -0
- {libcom-0.1.7 → libcom-0.1.8}/libcom/painterly_image_harmonization/source/PHDiffusion/ldm/modules/extra_condition/midas/midas/blocks.py +0 -0
- {libcom-0.1.7 → libcom-0.1.8}/libcom/painterly_image_harmonization/source/PHDiffusion/ldm/modules/extra_condition/midas/midas/dpt_depth.py +0 -0
- {libcom-0.1.7 → libcom-0.1.8}/libcom/painterly_image_harmonization/source/PHDiffusion/ldm/modules/extra_condition/midas/midas/midas_net.py +0 -0
- {libcom-0.1.7 → libcom-0.1.8}/libcom/painterly_image_harmonization/source/PHDiffusion/ldm/modules/extra_condition/midas/midas/midas_net_custom.py +0 -0
- {libcom-0.1.7 → libcom-0.1.8}/libcom/painterly_image_harmonization/source/PHDiffusion/ldm/modules/extra_condition/midas/midas/transforms.py +0 -0
- {libcom-0.1.7 → libcom-0.1.8}/libcom/painterly_image_harmonization/source/PHDiffusion/ldm/modules/extra_condition/midas/midas/vit.py +0 -0
- {libcom-0.1.7 → libcom-0.1.8}/libcom/painterly_image_harmonization/source/PHDiffusion/ldm/modules/extra_condition/midas/utils.py +0 -0
- {libcom-0.1.7 → libcom-0.1.8}/libcom/painterly_image_harmonization/source/PHDiffusion/ldm/modules/extra_condition/model_edge.py +0 -0
- {libcom-0.1.7/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
- {libcom-0.1.7 → libcom-0.1.8}/libcom/painterly_image_harmonization/source/PHDiffusion/ldm/modules/extra_condition/openpose/api.py +0 -0
- {libcom-0.1.7 → libcom-0.1.8}/libcom/painterly_image_harmonization/source/PHDiffusion/ldm/modules/extra_condition/openpose/body.py +0 -0
- {libcom-0.1.7 → libcom-0.1.8}/libcom/painterly_image_harmonization/source/PHDiffusion/ldm/modules/extra_condition/openpose/hand.py +0 -0
- {libcom-0.1.7 → libcom-0.1.8}/libcom/painterly_image_harmonization/source/PHDiffusion/ldm/modules/extra_condition/openpose/model.py +0 -0
- {libcom-0.1.7 → libcom-0.1.8}/libcom/painterly_image_harmonization/source/PHDiffusion/ldm/modules/extra_condition/openpose/util.py +0 -0
- {libcom-0.1.7 → libcom-0.1.8}/libcom/painterly_image_harmonization/source/PHDiffusion/ldm/modules/extra_condition/utils.py +0 -0
- {libcom-0.1.7/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
- {libcom-0.1.7 → libcom-0.1.8}/libcom/painterly_image_harmonization/source/PHDiffusion/ldm/modules/fusion/dual_encoder_fusion.py +0 -0
- {libcom-0.1.7 → libcom-0.1.8}/libcom/painterly_image_harmonization/source/PHDiffusion/ldm/modules/image_degradation/__init__.py +0 -0
- {libcom-0.1.7 → libcom-0.1.8}/libcom/painterly_image_harmonization/source/PHDiffusion/ldm/modules/image_degradation/bsrgan.py +0 -0
- {libcom-0.1.7 → libcom-0.1.8}/libcom/painterly_image_harmonization/source/PHDiffusion/ldm/modules/image_degradation/bsrgan_light.py +0 -0
- {libcom-0.1.7 → libcom-0.1.8}/libcom/painterly_image_harmonization/source/PHDiffusion/ldm/modules/image_degradation/utils_image.py +0 -0
- {libcom-0.1.7 → libcom-0.1.8}/libcom/painterly_image_harmonization/source/PHDiffusion/ldm/util.py +0 -0
- {libcom-0.1.7 → libcom-0.1.8}/libcom/painterly_image_harmonization/source/PHDiffusion/stable_diffusion.yaml +0 -0
- {libcom-0.1.7/libcom/shadow_generation → libcom-0.1.8/libcom/painterly_image_harmonization}/source/__init__.py +0 -0
- {libcom-0.1.7 → libcom-0.1.8}/libcom/reflection_generation/__init__.py +0 -0
- {libcom-0.1.7 → libcom-0.1.8}/libcom/reflection_generation/reflection_generation.py +0 -0
- {libcom-0.1.7 → libcom-0.1.8}/libcom/reflection_generation/source/PostProcessModel.py +0 -0
- {libcom-0.1.7/libcom/shadow_generation/source/cldm → libcom-0.1.8/libcom/reflection_generation/source}/__init__.py +0 -0
- {libcom-0.1.7/libcom/shadow_generation/source/ldm → libcom-0.1.8/libcom/reflection_generation/source/cldm}/__init__.py +0 -0
- {libcom-0.1.7 → libcom-0.1.8}/libcom/reflection_generation/source/cldm/base_network.py +0 -0
- {libcom-0.1.7 → libcom-0.1.8}/libcom/reflection_generation/source/cldm/cldm.py +0 -0
- {libcom-0.1.7 → libcom-0.1.8}/libcom/reflection_generation/source/cldm/ddim_hacked.py +0 -0
- {libcom-0.1.7 → libcom-0.1.8}/libcom/reflection_generation/source/cldm/hack.py +0 -0
- {libcom-0.1.7 → libcom-0.1.8}/libcom/reflection_generation/source/cldm/logger.py +0 -0
- {libcom-0.1.7 → libcom-0.1.8}/libcom/reflection_generation/source/cldm/model.py +0 -0
- {libcom-0.1.7 → libcom-0.1.8}/libcom/reflection_generation/source/cldm_v15.yaml +0 -0
- {libcom-0.1.7 → libcom-0.1.8}/libcom/reflection_generation/source/cluster_feature.py +0 -0
- {libcom-0.1.7/libcom/shadow_generation/source/ldm/models → libcom-0.1.8/libcom/reflection_generation/source/ldm}/__init__.py +0 -0
- {libcom-0.1.7/libcom/shadow_generation/source/ldm/models/diffusion → libcom-0.1.8/libcom/reflection_generation/source/ldm/models}/__init__.py +0 -0
- {libcom-0.1.7 → libcom-0.1.8}/libcom/reflection_generation/source/ldm/models/autoencoder.py +0 -0
- {libcom-0.1.7/libcom/shadow_generation/source/ldm/modules → libcom-0.1.8/libcom/reflection_generation/source/ldm/models/diffusion}/__init__.py +0 -0
- {libcom-0.1.7 → libcom-0.1.8}/libcom/reflection_generation/source/ldm/models/diffusion/attention_processor.py +0 -0
- {libcom-0.1.7 → libcom-0.1.8}/libcom/reflection_generation/source/ldm/models/diffusion/ddim.py +0 -0
- {libcom-0.1.7 → libcom-0.1.8}/libcom/reflection_generation/source/ldm/models/diffusion/ddpm.py +0 -0
- {libcom-0.1.7 → libcom-0.1.8}/libcom/reflection_generation/source/ldm/models/diffusion/dpm_solver/__init__.py +0 -0
- {libcom-0.1.7 → libcom-0.1.8}/libcom/reflection_generation/source/ldm/models/diffusion/dpm_solver/dpm_solver.py +0 -0
- {libcom-0.1.7 → libcom-0.1.8}/libcom/reflection_generation/source/ldm/models/diffusion/dpm_solver/sampler.py +0 -0
- {libcom-0.1.7 → libcom-0.1.8}/libcom/reflection_generation/source/ldm/models/diffusion/ip_adapter.py +0 -0
- {libcom-0.1.7 → libcom-0.1.8}/libcom/reflection_generation/source/ldm/models/diffusion/plms.py +0 -0
- {libcom-0.1.7 → libcom-0.1.8}/libcom/reflection_generation/source/ldm/models/diffusion/sampling_util.py +0 -0
- {libcom-0.1.7/libcom/shadow_generation/source/ldm/modules/diffusionmodules → libcom-0.1.8/libcom/reflection_generation/source/ldm/modules}/__init__.py +0 -0
- {libcom-0.1.7 → libcom-0.1.8}/libcom/reflection_generation/source/ldm/modules/attention.py +0 -0
- {libcom-0.1.7/libcom/shadow_generation/source/ldm/modules/distributions → libcom-0.1.8/libcom/reflection_generation/source/ldm/modules/diffusionmodules}/__init__.py +0 -0
- {libcom-0.1.7 → libcom-0.1.8}/libcom/reflection_generation/source/ldm/modules/diffusionmodules/model.py +0 -0
- {libcom-0.1.7 → libcom-0.1.8}/libcom/reflection_generation/source/ldm/modules/diffusionmodules/openaimodel.py +0 -0
- {libcom-0.1.7 → libcom-0.1.8}/libcom/reflection_generation/source/ldm/modules/diffusionmodules/upscaling.py +0 -0
- {libcom-0.1.7 → libcom-0.1.8}/libcom/reflection_generation/source/ldm/modules/diffusionmodules/util.py +0 -0
- {libcom-0.1.7/libcom/shadow_generation/source/ldm/modules/encoders → libcom-0.1.8/libcom/reflection_generation/source/ldm/modules/distributions}/__init__.py +0 -0
- {libcom-0.1.7 → libcom-0.1.8}/libcom/reflection_generation/source/ldm/modules/distributions/distributions.py +0 -0
- {libcom-0.1.7 → libcom-0.1.8}/libcom/reflection_generation/source/ldm/modules/ema.py +0 -0
- {libcom-0.1.7/libcom/shadow_generation/source/ldm/modules/midas → libcom-0.1.8/libcom/reflection_generation/source/ldm/modules/encoders}/__init__.py +0 -0
- {libcom-0.1.7 → libcom-0.1.8}/libcom/reflection_generation/source/ldm/modules/encoders/modules.py +0 -0
- {libcom-0.1.7/libcom/shadow_generation/source/ldm/modules/midas/midas → libcom-0.1.8/libcom/reflection_generation/source/ldm/modules/image_degradation}/__init__.py +0 -0
- {libcom-0.1.7 → libcom-0.1.8}/libcom/reflection_generation/source/ldm/modules/image_degradation/bsrgan.py +0 -0
- {libcom-0.1.7 → libcom-0.1.8}/libcom/reflection_generation/source/ldm/modules/image_degradation/bsrgan_light.py +0 -0
- {libcom-0.1.7 → libcom-0.1.8}/libcom/reflection_generation/source/ldm/modules/image_degradation/utils_image.py +0 -0
- {libcom-0.1.7 → libcom-0.1.8}/libcom/reflection_generation/source/ldm/util.py +0 -0
- {libcom-0.1.7 → libcom-0.1.8}/libcom/reflection_generation/source/local_clip.py +0 -0
- {libcom-0.1.7 → libcom-0.1.8}/libcom/reflection_generation/source/tool_add_control.py +0 -0
- {libcom-0.1.7 → libcom-0.1.8}/libcom/shadow_generation/__init__.py +0 -0
- {libcom-0.1.7 → libcom-0.1.8}/libcom/shadow_generation/shadow_generation.py +0 -0
- {libcom-0.1.7 → libcom-0.1.8}/libcom/shadow_generation/source/PostProcessModel.py +0 -0
- {libcom-0.1.7/libcom/utils → libcom-0.1.8/libcom/shadow_generation/source}/__init__.py +0 -0
- {libcom-0.1.7 → libcom-0.1.8}/libcom/shadow_generation/source/attention_processor.py +0 -0
- {libcom-0.1.7 → libcom-0.1.8}/libcom/shadow_generation/source/cldm/base_network.py +0 -0
- {libcom-0.1.7 → libcom-0.1.8}/libcom/shadow_generation/source/cldm/cldm.py +0 -0
- {libcom-0.1.7 → libcom-0.1.8}/libcom/shadow_generation/source/cldm/model.py +0 -0
- {libcom-0.1.7 → libcom-0.1.8}/libcom/shadow_generation/source/ldm/models/autoencoder.py +0 -0
- {libcom-0.1.7 → libcom-0.1.8}/libcom/shadow_generation/source/ldm/models/diffusion/attention_processor.py +0 -0
- {libcom-0.1.7 → libcom-0.1.8}/libcom/shadow_generation/source/ldm/models/diffusion/ddim.py +0 -0
- {libcom-0.1.7 → libcom-0.1.8}/libcom/shadow_generation/source/ldm/models/diffusion/ddpm.py +0 -0
- {libcom-0.1.7 → libcom-0.1.8}/libcom/shadow_generation/source/ldm/models/diffusion/dpm_solver/__init__.py +0 -0
- {libcom-0.1.7 → libcom-0.1.8}/libcom/shadow_generation/source/ldm/models/diffusion/dpm_solver/dpm_solver.py +0 -0
- {libcom-0.1.7 → libcom-0.1.8}/libcom/shadow_generation/source/ldm/models/diffusion/dpm_solver/sampler.py +0 -0
- {libcom-0.1.7 → libcom-0.1.8}/libcom/shadow_generation/source/ldm/models/diffusion/ip_adapter.py +0 -0
- {libcom-0.1.7 → libcom-0.1.8}/libcom/shadow_generation/source/ldm/models/diffusion/plms.py +0 -0
- {libcom-0.1.7 → libcom-0.1.8}/libcom/shadow_generation/source/ldm/models/diffusion/sampling_util.py +0 -0
- {libcom-0.1.7 → libcom-0.1.8}/libcom/shadow_generation/source/ldm/modules/attention.py +0 -0
- {libcom-0.1.7 → libcom-0.1.8}/libcom/shadow_generation/source/ldm/modules/diffusionmodules/model.py +0 -0
- {libcom-0.1.7 → libcom-0.1.8}/libcom/shadow_generation/source/ldm/modules/diffusionmodules/openaimodel.py +0 -0
- {libcom-0.1.7 → libcom-0.1.8}/libcom/shadow_generation/source/ldm/modules/diffusionmodules/upscaling.py +0 -0
- {libcom-0.1.7 → libcom-0.1.8}/libcom/shadow_generation/source/ldm/modules/diffusionmodules/util.py +0 -0
- {libcom-0.1.7 → libcom-0.1.8}/libcom/shadow_generation/source/ldm/modules/distributions/distributions.py +0 -0
- {libcom-0.1.7 → libcom-0.1.8}/libcom/shadow_generation/source/ldm/modules/ema.py +0 -0
- {libcom-0.1.7 → libcom-0.1.8}/libcom/shadow_generation/source/ldm/modules/encoders/modules.py +0 -0
- {libcom-0.1.7 → libcom-0.1.8}/libcom/shadow_generation/source/ldm/modules/image_degradation/__init__.py +0 -0
- {libcom-0.1.7 → libcom-0.1.8}/libcom/shadow_generation/source/ldm/modules/image_degradation/bsrgan.py +0 -0
- {libcom-0.1.7 → libcom-0.1.8}/libcom/shadow_generation/source/ldm/modules/image_degradation/bsrgan_light.py +0 -0
- {libcom-0.1.7 → libcom-0.1.8}/libcom/shadow_generation/source/ldm/modules/image_degradation/utils_image.py +0 -0
- {libcom-0.1.7 → libcom-0.1.8}/libcom/shadow_generation/source/ldm/modules/midas/api.py +0 -0
- {libcom-0.1.7 → libcom-0.1.8}/libcom/shadow_generation/source/ldm/modules/midas/midas/base_model.py +0 -0
- {libcom-0.1.7 → libcom-0.1.8}/libcom/shadow_generation/source/ldm/modules/midas/midas/blocks.py +0 -0
- {libcom-0.1.7 → libcom-0.1.8}/libcom/shadow_generation/source/ldm/modules/midas/midas/dpt_depth.py +0 -0
- {libcom-0.1.7 → libcom-0.1.8}/libcom/shadow_generation/source/ldm/modules/midas/midas/midas_net.py +0 -0
- {libcom-0.1.7 → libcom-0.1.8}/libcom/shadow_generation/source/ldm/modules/midas/midas/midas_net_custom.py +0 -0
- {libcom-0.1.7 → libcom-0.1.8}/libcom/shadow_generation/source/ldm/modules/midas/midas/transforms.py +0 -0
- {libcom-0.1.7 → libcom-0.1.8}/libcom/shadow_generation/source/ldm/modules/midas/midas/vit.py +0 -0
- {libcom-0.1.7 → libcom-0.1.8}/libcom/shadow_generation/source/ldm/modules/midas/utils.py +0 -0
- {libcom-0.1.7 → libcom-0.1.8}/libcom/shadow_generation/source/ldm/util.py +0 -0
- {libcom-0.1.7 → libcom-0.1.8}/libcom/utils/environment.py +0 -0
- {libcom-0.1.7 → libcom-0.1.8}/libcom/utils/model_download.py +0 -0
- {libcom-0.1.7 → libcom-0.1.8}/libcom/utils/process_image.py +0 -0
- {libcom-0.1.7 → libcom-0.1.8}/libcom.egg-info/dependency_links.txt +0 -0
- {libcom-0.1.7 → libcom-0.1.8}/libcom.egg-info/top_level.txt +0 -0
- {libcom-0.1.7 → libcom-0.1.8}/setup.cfg +0 -0
- {libcom-0.1.7 → libcom-0.1.8}/tests/test_color_transfer.py +0 -0
- {libcom-0.1.7 → libcom-0.1.8}/tests/test_composite_generation.py +0 -0
- {libcom-0.1.7 → libcom-0.1.8}/tests/test_flux_kontext.py +0 -0
- {libcom-0.1.7 → libcom-0.1.8}/tests/test_fopa_heat_map.py +0 -0
- {libcom-0.1.7 → libcom-0.1.8}/tests/test_fos_score.py +0 -0
- {libcom-0.1.7 → libcom-0.1.8}/tests/test_harmony_score.py +0 -0
- {libcom-0.1.7 → libcom-0.1.8}/tests/test_image_harmonization.py +0 -0
- {libcom-0.1.7 → libcom-0.1.8}/tests/test_inharmonious_region_localization.py +0 -0
- {libcom-0.1.7 → libcom-0.1.8}/tests/test_opa_score.py +0 -0
- {libcom-0.1.7 → libcom-0.1.8}/tests/test_os_insert.py +0 -0
- {libcom-0.1.7 → libcom-0.1.8}/tests/test_painterly_image_harmonization.py +0 -0
- {libcom-0.1.7 → libcom-0.1.8}/tests/test_reflection_generation.py +0 -0
- {libcom-0.1.7 → libcom-0.1.8}/tests/test_shadow_generation.py +0 -0
libcom-0.1.8/MANIFEST.in
ADDED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: libcom
|
|
3
|
-
Version: 0.1.
|
|
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:
|
|
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
|
[](https://pypi.org/project/libcom)
|
|
64
61
|
[](https://pepy.tech/project/libcom)
|
|
65
|
-
|
|
62
|
+

|
|
66
63
|
[](https://libcom.ustcnewly.com/)
|
|
67
|
-
[](https://github.com/bcmi/Awesome-
|
|
64
|
+
[](https://github.com/bcmi/Awesome-Image-Composition)
|
|
68
65
|
[](https://arxiv.org/pdf/2106.14490.pdf)
|
|
69
66
|
[](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
|
-
|
|
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,
|
|
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
|
[](https://pypi.org/project/libcom)
|
|
12
12
|
[](https://pepy.tech/project/libcom)
|
|
13
|
-
|
|
13
|
+

|
|
14
14
|
[](https://libcom.ustcnewly.com/)
|
|
15
|
-
[](https://github.com/bcmi/Awesome-
|
|
15
|
+
[](https://github.com/bcmi/Awesome-Image-Composition)
|
|
16
16
|
[](https://arxiv.org/pdf/2106.14490.pdf)
|
|
17
17
|
[](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
|
-
|
|
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,
|
|
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
|
|
|
@@ -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
|