libcom 0.0.1.post10__tar.gz → 0.1.0__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.0.1.post10 → libcom-0.1.0}/LICENSE +0 -0
- {libcom-0.0.1.post10 → libcom-0.1.0}/PKG-INFO +20 -15
- libcom-0.1.0/README.md +80 -0
- {libcom-0.0.1.post10 → libcom-0.1.0}/libcom/__init__.py +2 -1
- {libcom-0.0.1.post10 → libcom-0.1.0}/libcom/color_transfer/__init__.py +0 -0
- {libcom-0.0.1.post10 → libcom-0.1.0}/libcom/color_transfer/reinhard.py +0 -0
- {libcom-0.0.1.post10 → libcom-0.1.0}/libcom/controllable_composition/__init__.py +0 -0
- {libcom-0.0.1.post10 → libcom-0.1.0}/libcom/controllable_composition/controllable_composition.py +12 -7
- {libcom-0.0.1.post10 → libcom-0.1.0}/libcom/controllable_composition/source/ControlCom/__init__.py +0 -0
- {libcom-0.0.1.post10 → libcom-0.1.0}/libcom/controllable_composition/source/ControlCom/configs/__init__.py +0 -0
- {libcom-0.0.1.post10 → libcom-0.1.0}/libcom/controllable_composition/source/ControlCom/configs/controlcom.yaml +6 -6
- {libcom-0.0.1.post10 → libcom-0.1.0}/libcom/controllable_composition/source/ControlCom/ldm/__init__.py +0 -0
- {libcom-0.0.1.post10 → libcom-0.1.0}/libcom/controllable_composition/source/ControlCom/ldm/data/__init__.py +0 -0
- {libcom-0.0.1.post10 → libcom-0.1.0}/libcom/controllable_composition/source/ControlCom/ldm/data/base.py +0 -0
- libcom-0.1.0/libcom/controllable_composition/source/ControlCom/ldm/data/datamodule.py +128 -0
- {libcom-0.0.1.post10 → libcom-0.1.0}/libcom/controllable_composition/source/ControlCom/ldm/data/open_images_control.py +0 -0
- {libcom-0.0.1.post10 → libcom-0.1.0}/libcom/controllable_composition/source/ControlCom/ldm/lr_scheduler.py +0 -0
- {libcom-0.0.1.post10 → libcom-0.1.0}/libcom/controllable_composition/source/ControlCom/ldm/models/__init__.py +0 -0
- {libcom-0.0.1.post10 → libcom-0.1.0}/libcom/controllable_composition/source/ControlCom/ldm/models/autoencoder.py +0 -0
- {libcom-0.0.1.post10 → libcom-0.1.0}/libcom/controllable_composition/source/ControlCom/ldm/models/diffusion/__init__.py +0 -0
- libcom-0.1.0/libcom/controllable_composition/source/ControlCom/ldm/models/diffusion/classifier.py +267 -0
- {libcom-0.0.1.post10 → libcom-0.1.0}/libcom/controllable_composition/source/ControlCom/ldm/models/diffusion/ddim.py +0 -0
- {libcom-0.0.1.post10 → libcom-0.1.0}/libcom/controllable_composition/source/ControlCom/ldm/models/diffusion/ddpm.py +1 -2
- {libcom-0.0.1.post10 → libcom-0.1.0}/libcom/controllable_composition/source/ControlCom/ldm/models/diffusion/plms.py +0 -0
- {libcom-0.0.1.post10 → libcom-0.1.0}/libcom/controllable_composition/source/ControlCom/ldm/modules/__init__.py +0 -0
- {libcom-0.0.1.post10 → libcom-0.1.0}/libcom/controllable_composition/source/ControlCom/ldm/modules/attention.py +1 -1
- {libcom-0.0.1.post10 → libcom-0.1.0}/libcom/controllable_composition/source/ControlCom/ldm/modules/diffusionmodules/__init__.py +0 -0
- {libcom-0.0.1.post10 → libcom-0.1.0}/libcom/controllable_composition/source/ControlCom/ldm/modules/diffusionmodules/model.py +0 -0
- {libcom-0.0.1.post10 → libcom-0.1.0}/libcom/controllable_composition/source/ControlCom/ldm/modules/diffusionmodules/openaimodel.py +2 -2
- {libcom-0.0.1.post10 → libcom-0.1.0}/libcom/controllable_composition/source/ControlCom/ldm/modules/diffusionmodules/util.py +0 -0
- {libcom-0.0.1.post10 → libcom-0.1.0}/libcom/controllable_composition/source/ControlCom/ldm/modules/distributions/__init__.py +0 -0
- {libcom-0.0.1.post10 → libcom-0.1.0}/libcom/controllable_composition/source/ControlCom/ldm/modules/distributions/distributions.py +0 -0
- {libcom-0.0.1.post10 → libcom-0.1.0}/libcom/controllable_composition/source/ControlCom/ldm/modules/ema.py +0 -0
- {libcom-0.0.1.post10 → libcom-0.1.0}/libcom/controllable_composition/source/ControlCom/ldm/modules/encoders/__init__.py +0 -0
- {libcom-0.0.1.post10 → libcom-0.1.0}/libcom/controllable_composition/source/ControlCom/ldm/modules/encoders/modules.py +4 -5
- {libcom-0.0.1.post10 → libcom-0.1.0}/libcom/controllable_composition/source/ControlCom/ldm/modules/encoders/xf.py +0 -0
- {libcom-0.0.1.post10 → libcom-0.1.0}/libcom/controllable_composition/source/ControlCom/ldm/modules/local_module.py +2 -2
- libcom-0.1.0/libcom/controllable_composition/source/ControlCom/ldm/modules/losses/__init__.py +1 -0
- {libcom-0.0.1.post10 → libcom-0.1.0}/libcom/controllable_composition/source/ControlCom/ldm/modules/losses/contperceptual.py +0 -0
- {libcom-0.0.1.post10 → libcom-0.1.0}/libcom/controllable_composition/source/ControlCom/ldm/modules/losses/vqperceptual.py +0 -0
- {libcom-0.0.1.post10 → libcom-0.1.0}/libcom/controllable_composition/source/ControlCom/ldm/modules/x_transformer.py +0 -0
- {libcom-0.0.1.post10 → libcom-0.1.0}/libcom/controllable_composition/source/ControlCom/ldm/util.py +0 -2
- {libcom-0.0.1.post10 → libcom-0.1.0}/libcom/controllable_composition/source/__init__.py +0 -0
- {libcom-0.0.1.post10 → libcom-0.1.0}/libcom/fopa_heat_map/__init__.py +0 -0
- {libcom-0.0.1.post10 → libcom-0.1.0}/libcom/fopa_heat_map/fopa_heat_map.py +3 -2
- {libcom-0.0.1.post10 → libcom-0.1.0}/libcom/fopa_heat_map/source/__init__.py +0 -0
- {libcom-0.0.1.post10 → libcom-0.1.0}/libcom/fopa_heat_map/source/backbone/ResNet.py +0 -0
- {libcom-0.0.1.post10 → libcom-0.1.0}/libcom/fopa_heat_map/source/backbone/__init__.py +0 -0
- {libcom-0.0.1.post10 → libcom-0.1.0}/libcom/fopa_heat_map/source/data/OBdataset.py +0 -0
- {libcom-0.0.1.post10 → libcom-0.1.0}/libcom/fopa_heat_map/source/data/__init__.py +0 -0
- {libcom-0.0.1.post10 → libcom-0.1.0}/libcom/fopa_heat_map/source/data/all_transforms.py +0 -0
- {libcom-0.0.1.post10 → libcom-0.1.0}/libcom/fopa_heat_map/source/network/BaseBlocks.py +0 -0
- {libcom-0.0.1.post10 → libcom-0.1.0}/libcom/fopa_heat_map/source/network/DynamicModules.py +0 -0
- {libcom-0.0.1.post10 → libcom-0.1.0}/libcom/fopa_heat_map/source/network/ObPlaNet_simple.py +0 -0
- {libcom-0.0.1.post10 → libcom-0.1.0}/libcom/fopa_heat_map/source/network/__init__.py +0 -0
- {libcom-0.0.1.post10 → libcom-0.1.0}/libcom/fopa_heat_map/source/network/tensor_ops.py +0 -0
- {libcom-0.0.1.post10 → libcom-0.1.0}/libcom/fopa_heat_map/source/prepare_multi_fg_scales.py +0 -0
- {libcom-0.0.1.post10 → libcom-0.1.0}/libcom/fos_score/__init__.py +0 -0
- {libcom-0.0.1.post10 → libcom-0.1.0}/libcom/fos_score/fos_score_prediction.py +2 -2
- {libcom-0.0.1.post10 → libcom-0.1.0}/libcom/fos_score/source/__init__.py +0 -0
- {libcom-0.0.1.post10 → libcom-0.1.0}/libcom/fos_score/source/config/__init__.py +0 -0
- {libcom-0.0.1.post10 → libcom-0.1.0}/libcom/fos_score/source/config/config.py +0 -0
- {libcom-0.0.1.post10 → libcom-0.1.0}/libcom/fos_score/source/config/config.sfosd.yaml +0 -0
- {libcom-0.0.1.post10 → libcom-0.1.0}/libcom/fos_score/source/config/config_rfosd.yaml +0 -0
- {libcom-0.0.1.post10 → libcom-0.1.0}/libcom/fos_score/source/loss_function.py +0 -0
- {libcom-0.0.1.post10 → libcom-0.1.0}/libcom/fos_score/source/networks.py +0 -0
- {libcom-0.0.1.post10 → libcom-0.1.0}/libcom/harmony_score/__init__.py +0 -0
- {libcom-0.0.1.post10 → libcom-0.1.0}/libcom/harmony_score/harmony_score_prediction.py +2 -1
- {libcom-0.0.1.post10 → libcom-0.1.0}/libcom/harmony_score/source/__init__.py +0 -0
- {libcom-0.0.1.post10 → libcom-0.1.0}/libcom/harmony_score/source/bargainnet.py +0 -0
- {libcom-0.0.1.post10 → libcom-0.1.0}/libcom/image_harmonization/__init__.py +0 -0
- {libcom-0.0.1.post10 → libcom-0.1.0}/libcom/image_harmonization/image_harmonization.py +4 -3
- {libcom-0.0.1.post10 → libcom-0.1.0}/libcom/image_harmonization/source/__init__.py +0 -0
- {libcom-0.0.1.post10 → libcom-0.1.0}/libcom/image_harmonization/source/cdt_net.py +0 -0
- {libcom-0.0.1.post10 → libcom-0.1.0}/libcom/image_harmonization/source/functions.py +1 -0
- {libcom-0.0.1.post10 → libcom-0.1.0}/libcom/image_harmonization/source/pct_net.py +0 -0
- {libcom-0.0.1.post10 → libcom-0.1.0}/libcom/inharmonious_region_localization/__init__.py +0 -0
- {libcom-0.0.1.post10 → libcom-0.1.0}/libcom/inharmonious_region_localization/inharmonious_region_localization.py +3 -2
- {libcom-0.0.1.post10 → libcom-0.1.0}/libcom/inharmonious_region_localization/source/__init__.py +0 -0
- {libcom-0.0.1.post10 → libcom-0.1.0}/libcom/inharmonious_region_localization/source/blocks.py +0 -0
- {libcom-0.0.1.post10 → libcom-0.1.0}/libcom/inharmonious_region_localization/source/functions.py +0 -0
- {libcom-0.0.1.post10 → libcom-0.1.0}/libcom/inharmonious_region_localization/source/madis_net.py +0 -0
- {libcom-0.0.1.post10 → libcom-0.1.0}/libcom/naive_composition/__init__.py +0 -0
- {libcom-0.0.1.post10 → libcom-0.1.0}/libcom/naive_composition/generate_composite_image.py +0 -0
- libcom-0.1.0/libcom/objectstitch/__init__.py +4 -0
- libcom-0.1.0/libcom/objectstitch/objectstitch.py +332 -0
- {libcom-0.0.1.post10/libcom/painterly_image_harmonization/source/PHDNet → libcom-0.1.0/libcom/objectstitch/source/ObjectStitch}/__init__.py +0 -0
- {libcom-0.0.1.post10/libcom/painterly_image_harmonization/source/PHDiffusion → libcom-0.1.0/libcom/objectstitch/source/ObjectStitch/configs}/__init__.py +0 -0
- libcom-0.1.0/libcom/objectstitch/source/ObjectStitch/configs/objectstitch.yaml +74 -0
- {libcom-0.0.1.post10/libcom/painterly_image_harmonization/source/PHDiffusion → libcom-0.1.0/libcom/objectstitch/source/ObjectStitch}/ldm/__init__.py +0 -0
- {libcom-0.0.1.post10/libcom/painterly_image_harmonization/source/PHDiffusion/ldm/models → libcom-0.1.0/libcom/objectstitch/source/ObjectStitch/ldm/data}/__init__.py +0 -0
- libcom-0.1.0/libcom/objectstitch/source/ObjectStitch/ldm/data/base.py +23 -0
- {libcom-0.0.1.post10/libcom/controllable_composition/source/ControlCom → libcom-0.1.0/libcom/objectstitch/source/ObjectStitch}/ldm/data/datamodule.py +2 -2
- libcom-0.1.0/libcom/objectstitch/source/ObjectStitch/ldm/data/imagenet.py +394 -0
- libcom-0.1.0/libcom/objectstitch/source/ObjectStitch/ldm/data/lsun.py +92 -0
- libcom-0.1.0/libcom/objectstitch/source/ObjectStitch/ldm/data/open_images.py +409 -0
- {libcom-0.0.1.post10/libcom/painterly_image_harmonization/source/PHDiffusion → libcom-0.1.0/libcom/objectstitch/source/ObjectStitch}/ldm/lr_scheduler.py +0 -0
- {libcom-0.0.1.post10/libcom/painterly_image_harmonization/source/PHDiffusion/ldm/modules → libcom-0.1.0/libcom/objectstitch/source/ObjectStitch/ldm/models}/__init__.py +0 -0
- libcom-0.1.0/libcom/objectstitch/source/ObjectStitch/ldm/models/autoencoder.py +443 -0
- {libcom-0.0.1.post10/libcom/painterly_image_harmonization/source/PHDiffusion/ldm/modules/diffusionmodules → libcom-0.1.0/libcom/objectstitch/source/ObjectStitch/ldm/models/diffusion}/__init__.py +0 -0
- {libcom-0.0.1.post10/libcom/controllable_composition/source/ControlCom → libcom-0.1.0/libcom/objectstitch/source/ObjectStitch}/ldm/models/diffusion/classifier.py +2 -2
- libcom-0.1.0/libcom/objectstitch/source/ObjectStitch/ldm/models/diffusion/ddim.py +263 -0
- libcom-0.1.0/libcom/objectstitch/source/ObjectStitch/ldm/models/diffusion/ddpm.py +1416 -0
- libcom-0.1.0/libcom/objectstitch/source/ObjectStitch/ldm/models/diffusion/plms.py +252 -0
- {libcom-0.0.1.post10/libcom/painterly_image_harmonization/source/PHDiffusion/ldm/modules/distributions → libcom-0.1.0/libcom/objectstitch/source/ObjectStitch/ldm/modules}/__init__.py +0 -0
- libcom-0.1.0/libcom/objectstitch/source/ObjectStitch/ldm/modules/attention.py +261 -0
- {libcom-0.0.1.post10/libcom/painterly_image_harmonization/source/PHDiffusion/ldm/modules/encoders → libcom-0.1.0/libcom/objectstitch/source/ObjectStitch/ldm/modules/diffusionmodules}/__init__.py +0 -0
- libcom-0.1.0/libcom/objectstitch/source/ObjectStitch/ldm/modules/diffusionmodules/model.py +835 -0
- libcom-0.1.0/libcom/objectstitch/source/ObjectStitch/ldm/modules/diffusionmodules/openaimodel.py +1108 -0
- libcom-0.1.0/libcom/objectstitch/source/ObjectStitch/ldm/modules/diffusionmodules/util.py +267 -0
- {libcom-0.0.1.post10/libcom/painterly_image_harmonization/source/PHDiffusion/ldm/modules/extra_condition/midas → libcom-0.1.0/libcom/objectstitch/source/ObjectStitch/ldm/modules/distributions}/__init__.py +0 -0
- {libcom-0.0.1.post10/libcom/painterly_image_harmonization/source/PHDiffusion → libcom-0.1.0/libcom/objectstitch/source/ObjectStitch}/ldm/modules/distributions/distributions.py +0 -0
- libcom-0.1.0/libcom/objectstitch/source/ObjectStitch/ldm/modules/ema.py +76 -0
- {libcom-0.0.1.post10/libcom/painterly_image_harmonization/source/PHDiffusion/ldm/modules/extra_condition/midas/midas → libcom-0.1.0/libcom/objectstitch/source/ObjectStitch/ldm/modules/encoders}/__init__.py +0 -0
- libcom-0.1.0/libcom/objectstitch/source/ObjectStitch/ldm/modules/encoders/modules.py +189 -0
- libcom-0.1.0/libcom/objectstitch/source/ObjectStitch/ldm/modules/encoders/xf.py +130 -0
- libcom-0.1.0/libcom/objectstitch/source/ObjectStitch/ldm/modules/losses/__init__.py +1 -0
- libcom-0.1.0/libcom/objectstitch/source/ObjectStitch/ldm/modules/losses/contperceptual.py +111 -0
- libcom-0.1.0/libcom/objectstitch/source/ObjectStitch/ldm/modules/losses/vqperceptual.py +167 -0
- libcom-0.1.0/libcom/objectstitch/source/ObjectStitch/ldm/modules/x_transformer.py +641 -0
- libcom-0.1.0/libcom/objectstitch/source/ObjectStitch/ldm/util.py +203 -0
- {libcom-0.0.1.post10/libcom/painterly_image_harmonization/source/PHDiffusion/ldm/modules/extra_condition/openpose → libcom-0.1.0/libcom/objectstitch/source}/__init__.py +0 -0
- {libcom-0.0.1.post10 → libcom-0.1.0}/libcom/opa_score/__init__.py +0 -0
- {libcom-0.0.1.post10 → libcom-0.1.0}/libcom/opa_score/opa_score_prediction.py +2 -1
- {libcom-0.0.1.post10 → libcom-0.1.0}/libcom/opa_score/source/__init__.py +0 -0
- {libcom-0.0.1.post10 → libcom-0.1.0}/libcom/opa_score/source/object_place_net.py +0 -0
- {libcom-0.0.1.post10 → libcom-0.1.0}/libcom/opa_score/source/oblect_place_config.py +0 -0
- {libcom-0.0.1.post10 → libcom-0.1.0}/libcom/opa_score/source/resnet_4ch.py +0 -0
- {libcom-0.0.1.post10 → libcom-0.1.0}/libcom/painterly_image_harmonization/__init__.py +0 -0
- {libcom-0.0.1.post10 → libcom-0.1.0}/libcom/painterly_image_harmonization/painterly_image_harmonization.py +6 -5
- {libcom-0.0.1.post10/libcom/painterly_image_harmonization/source/PHDiffusion/ldm/modules/fusion → libcom-0.1.0/libcom/painterly_image_harmonization/source/PHDNet}/__init__.py +0 -0
- {libcom-0.0.1.post10 → libcom-0.1.0}/libcom/painterly_image_harmonization/source/PHDNet/networks.py +0 -0
- {libcom-0.0.1.post10 → libcom-0.1.0}/libcom/painterly_image_harmonization/source/PHDNet/phdnet.py +0 -0
- {libcom-0.0.1.post10 → libcom-0.1.0}/libcom/painterly_image_harmonization/source/PHDNet/phdnet_config.py +0 -0
- {libcom-0.0.1.post10/libcom/painterly_image_harmonization/source → libcom-0.1.0/libcom/painterly_image_harmonization/source/PHDiffusion}/__init__.py +0 -0
- {libcom-0.0.1.post10/libcom/shadow_generation/source → libcom-0.1.0/libcom/painterly_image_harmonization/source/PHDiffusion/ldm}/__init__.py +0 -0
- {libcom-0.0.1.post10 → libcom-0.1.0}/libcom/painterly_image_harmonization/source/PHDiffusion/ldm/inference_base.py +0 -0
- libcom-0.1.0/libcom/painterly_image_harmonization/source/PHDiffusion/ldm/lr_scheduler.py +98 -0
- {libcom-0.0.1.post10/libcom/shadow_generation/source/cldm → libcom-0.1.0/libcom/painterly_image_harmonization/source/PHDiffusion/ldm/models}/__init__.py +0 -0
- {libcom-0.0.1.post10 → libcom-0.1.0}/libcom/painterly_image_harmonization/source/PHDiffusion/ldm/models/autoencoder.py +0 -0
- {libcom-0.0.1.post10 → libcom-0.1.0}/libcom/painterly_image_harmonization/source/PHDiffusion/ldm/models/diffusion/__init__.py +0 -0
- {libcom-0.0.1.post10 → libcom-0.1.0}/libcom/painterly_image_harmonization/source/PHDiffusion/ldm/models/diffusion/ddim.py +2 -2
- {libcom-0.0.1.post10 → libcom-0.1.0}/libcom/painterly_image_harmonization/source/PHDiffusion/ldm/models/diffusion/ddpm.py +0 -1
- {libcom-0.0.1.post10 → libcom-0.1.0}/libcom/painterly_image_harmonization/source/PHDiffusion/ldm/models/diffusion/dpm_solver/__init__.py +0 -0
- {libcom-0.0.1.post10 → libcom-0.1.0}/libcom/painterly_image_harmonization/source/PHDiffusion/ldm/models/diffusion/dpm_solver/dpm_solver.py +0 -0
- {libcom-0.0.1.post10 → libcom-0.1.0}/libcom/painterly_image_harmonization/source/PHDiffusion/ldm/models/diffusion/dpm_solver/sampler.py +1 -1
- {libcom-0.0.1.post10 → libcom-0.1.0}/libcom/painterly_image_harmonization/source/PHDiffusion/ldm/models/diffusion/plms.py +0 -0
- {libcom-0.0.1.post10 → libcom-0.1.0}/libcom/painterly_image_harmonization/source/PHDiffusion/ldm/models/diffusion/scheduling_pndm.py +0 -0
- {libcom-0.0.1.post10/libcom/shadow_generation/source/ldm → libcom-0.1.0/libcom/painterly_image_harmonization/source/PHDiffusion/ldm/modules}/__init__.py +0 -0
- {libcom-0.0.1.post10 → libcom-0.1.0}/libcom/painterly_image_harmonization/source/PHDiffusion/ldm/modules/attention.py +0 -0
- {libcom-0.0.1.post10/libcom/shadow_generation/source/ldm/data → libcom-0.1.0/libcom/painterly_image_harmonization/source/PHDiffusion/ldm/modules/diffusionmodules}/__init__.py +0 -0
- {libcom-0.0.1.post10 → libcom-0.1.0}/libcom/painterly_image_harmonization/source/PHDiffusion/ldm/modules/diffusionmodules/model.py +0 -0
- {libcom-0.0.1.post10 → libcom-0.1.0}/libcom/painterly_image_harmonization/source/PHDiffusion/ldm/modules/diffusionmodules/openaimodel.py +0 -0
- {libcom-0.0.1.post10 → libcom-0.1.0}/libcom/painterly_image_harmonization/source/PHDiffusion/ldm/modules/diffusionmodules/util.py +0 -0
- {libcom-0.0.1.post10/libcom/shadow_generation/source/ldm/models → libcom-0.1.0/libcom/painterly_image_harmonization/source/PHDiffusion/ldm/modules/distributions}/__init__.py +0 -0
- {libcom-0.0.1.post10/libcom/shadow_generation/source → libcom-0.1.0/libcom/painterly_image_harmonization/source/PHDiffusion}/ldm/modules/distributions/distributions.py +0 -0
- {libcom-0.0.1.post10 → libcom-0.1.0}/libcom/painterly_image_harmonization/source/PHDiffusion/ldm/modules/ema.py +0 -0
- {libcom-0.0.1.post10/libcom/shadow_generation/source/ldm/models/diffusion → libcom-0.1.0/libcom/painterly_image_harmonization/source/PHDiffusion/ldm/modules/encoders}/__init__.py +0 -0
- {libcom-0.0.1.post10 → libcom-0.1.0}/libcom/painterly_image_harmonization/source/PHDiffusion/ldm/modules/encoders/adapter.py +0 -0
- {libcom-0.0.1.post10 → libcom-0.1.0}/libcom/painterly_image_harmonization/source/PHDiffusion/ldm/modules/encoders/modules.py +0 -0
- {libcom-0.0.1.post10 → libcom-0.1.0}/libcom/painterly_image_harmonization/source/PHDiffusion/ldm/modules/extra_condition/__init__.py +0 -0
- {libcom-0.0.1.post10 → libcom-0.1.0}/libcom/painterly_image_harmonization/source/PHDiffusion/ldm/modules/extra_condition/api.py +0 -0
- {libcom-0.0.1.post10/libcom/shadow_generation/source/ldm/models/mask_predictor → libcom-0.1.0/libcom/painterly_image_harmonization/source/PHDiffusion/ldm/modules/extra_condition/midas}/__init__.py +0 -0
- {libcom-0.0.1.post10 → libcom-0.1.0}/libcom/painterly_image_harmonization/source/PHDiffusion/ldm/modules/extra_condition/midas/api.py +0 -0
- {libcom-0.0.1.post10/libcom/shadow_generation/source/ldm/modules → libcom-0.1.0/libcom/painterly_image_harmonization/source/PHDiffusion/ldm/modules/extra_condition/midas/midas}/__init__.py +0 -0
- {libcom-0.0.1.post10 → libcom-0.1.0}/libcom/painterly_image_harmonization/source/PHDiffusion/ldm/modules/extra_condition/midas/midas/base_model.py +0 -0
- {libcom-0.0.1.post10 → libcom-0.1.0}/libcom/painterly_image_harmonization/source/PHDiffusion/ldm/modules/extra_condition/midas/midas/blocks.py +0 -0
- {libcom-0.0.1.post10 → libcom-0.1.0}/libcom/painterly_image_harmonization/source/PHDiffusion/ldm/modules/extra_condition/midas/midas/dpt_depth.py +0 -0
- {libcom-0.0.1.post10 → libcom-0.1.0}/libcom/painterly_image_harmonization/source/PHDiffusion/ldm/modules/extra_condition/midas/midas/midas_net.py +0 -0
- {libcom-0.0.1.post10 → libcom-0.1.0}/libcom/painterly_image_harmonization/source/PHDiffusion/ldm/modules/extra_condition/midas/midas/midas_net_custom.py +0 -0
- {libcom-0.0.1.post10 → libcom-0.1.0}/libcom/painterly_image_harmonization/source/PHDiffusion/ldm/modules/extra_condition/midas/midas/transforms.py +0 -0
- {libcom-0.0.1.post10 → libcom-0.1.0}/libcom/painterly_image_harmonization/source/PHDiffusion/ldm/modules/extra_condition/midas/midas/vit.py +0 -0
- {libcom-0.0.1.post10 → libcom-0.1.0}/libcom/painterly_image_harmonization/source/PHDiffusion/ldm/modules/extra_condition/midas/utils.py +0 -0
- {libcom-0.0.1.post10 → libcom-0.1.0}/libcom/painterly_image_harmonization/source/PHDiffusion/ldm/modules/extra_condition/model_edge.py +0 -0
- {libcom-0.0.1.post10/libcom/shadow_generation/source/ldm/modules/diffusionmodules → libcom-0.1.0/libcom/painterly_image_harmonization/source/PHDiffusion/ldm/modules/extra_condition/openpose}/__init__.py +0 -0
- {libcom-0.0.1.post10 → libcom-0.1.0}/libcom/painterly_image_harmonization/source/PHDiffusion/ldm/modules/extra_condition/openpose/api.py +0 -0
- {libcom-0.0.1.post10 → libcom-0.1.0}/libcom/painterly_image_harmonization/source/PHDiffusion/ldm/modules/extra_condition/openpose/body.py +0 -0
- {libcom-0.0.1.post10 → libcom-0.1.0}/libcom/painterly_image_harmonization/source/PHDiffusion/ldm/modules/extra_condition/openpose/hand.py +0 -0
- {libcom-0.0.1.post10 → libcom-0.1.0}/libcom/painterly_image_harmonization/source/PHDiffusion/ldm/modules/extra_condition/openpose/model.py +0 -0
- {libcom-0.0.1.post10 → libcom-0.1.0}/libcom/painterly_image_harmonization/source/PHDiffusion/ldm/modules/extra_condition/openpose/util.py +0 -0
- {libcom-0.0.1.post10 → libcom-0.1.0}/libcom/painterly_image_harmonization/source/PHDiffusion/ldm/modules/extra_condition/utils.py +0 -0
- {libcom-0.0.1.post10/libcom/shadow_generation/source/ldm/modules/distributions → libcom-0.1.0/libcom/painterly_image_harmonization/source/PHDiffusion/ldm/modules/fusion}/__init__.py +0 -0
- {libcom-0.0.1.post10 → libcom-0.1.0}/libcom/painterly_image_harmonization/source/PHDiffusion/ldm/modules/fusion/dual_encoder_fusion.py +0 -0
- {libcom-0.0.1.post10 → libcom-0.1.0}/libcom/painterly_image_harmonization/source/PHDiffusion/ldm/modules/image_degradation/__init__.py +0 -0
- {libcom-0.0.1.post10 → libcom-0.1.0}/libcom/painterly_image_harmonization/source/PHDiffusion/ldm/modules/image_degradation/bsrgan.py +0 -0
- {libcom-0.0.1.post10 → libcom-0.1.0}/libcom/painterly_image_harmonization/source/PHDiffusion/ldm/modules/image_degradation/bsrgan_light.py +0 -0
- {libcom-0.0.1.post10 → libcom-0.1.0}/libcom/painterly_image_harmonization/source/PHDiffusion/ldm/modules/image_degradation/utils_image.py +0 -0
- {libcom-0.0.1.post10 → libcom-0.1.0}/libcom/painterly_image_harmonization/source/PHDiffusion/ldm/util.py +1 -5
- {libcom-0.0.1.post10 → libcom-0.1.0}/libcom/painterly_image_harmonization/source/PHDiffusion/stable_diffusion.yaml +5 -5
- {libcom-0.0.1.post10/libcom/shadow_generation/source/ldm/modules/encoders → libcom-0.1.0/libcom/painterly_image_harmonization/source}/__init__.py +0 -0
- {libcom-0.0.1.post10 → libcom-0.1.0}/libcom/shadow_generation/__init__.py +0 -0
- {libcom-0.0.1.post10 → libcom-0.1.0}/libcom/shadow_generation/shadow_generation.py +59 -29
- {libcom-0.0.1.post10 → libcom-0.1.0}/libcom/shadow_generation/source/PostProcessModel.py +10 -24
- libcom-0.1.0/libcom/shadow_generation/source/Shadow_generation.py +217 -0
- {libcom-0.0.1.post10/libcom/shadow_generation/source/ldm/modules/midas → libcom-0.1.0/libcom/shadow_generation/source}/__init__.py +0 -0
- {libcom-0.0.1.post10/libcom/shadow_generation/source/ldm/modules/midas/midas → libcom-0.1.0/libcom/shadow_generation/source/cldm}/__init__.py +0 -0
- libcom-0.1.0/libcom/shadow_generation/source/cldm/base_network.py +166 -0
- {libcom-0.0.1.post10 → libcom-0.1.0}/libcom/shadow_generation/source/cldm/cldm.py +153 -116
- {libcom-0.0.1.post10 → libcom-0.1.0}/libcom/shadow_generation/source/cldm/ddim_hacked.py +2 -2
- {libcom-0.0.1.post10 → libcom-0.1.0}/libcom/shadow_generation/source/cldm/hack.py +0 -0
- {libcom-0.0.1.post10 → libcom-0.1.0}/libcom/shadow_generation/source/cldm/logger.py +0 -0
- {libcom-0.0.1.post10 → libcom-0.1.0}/libcom/shadow_generation/source/cldm/model.py +4 -4
- {libcom-0.0.1.post10 → libcom-0.1.0}/libcom/shadow_generation/source/cldm_v15.yaml +1 -1
- {libcom-0.0.1.post10/libcom/shadow_generation/source/sampler → libcom-0.1.0/libcom/shadow_generation/source/ldm}/__init__.py +0 -0
- {libcom-0.0.1.post10/libcom/utils → libcom-0.1.0/libcom/shadow_generation/source/ldm/data}/__init__.py +0 -0
- {libcom-0.0.1.post10 → libcom-0.1.0}/libcom/shadow_generation/source/ldm/data/util.py +0 -0
- libcom-0.1.0/libcom/shadow_generation/source/ldm/models/__init__.py +0 -0
- {libcom-0.0.1.post10 → libcom-0.1.0}/libcom/shadow_generation/source/ldm/models/autoencoder.py +4 -4
- libcom-0.1.0/libcom/shadow_generation/source/ldm/models/diffusion/__init__.py +0 -0
- libcom-0.1.0/libcom/shadow_generation/source/ldm/models/diffusion/attention_processor.py +188 -0
- {libcom-0.0.1.post10 → libcom-0.1.0}/libcom/shadow_generation/source/ldm/models/diffusion/ddim.py +13 -9
- {libcom-0.0.1.post10 → libcom-0.1.0}/libcom/shadow_generation/source/ldm/models/diffusion/ddpm.py +126 -60
- {libcom-0.0.1.post10 → libcom-0.1.0}/libcom/shadow_generation/source/ldm/models/diffusion/dpm_solver/__init__.py +0 -0
- {libcom-0.0.1.post10 → libcom-0.1.0}/libcom/shadow_generation/source/ldm/models/diffusion/dpm_solver/dpm_solver.py +0 -0
- {libcom-0.0.1.post10 → libcom-0.1.0}/libcom/shadow_generation/source/ldm/models/diffusion/dpm_solver/sampler.py +0 -0
- libcom-0.1.0/libcom/shadow_generation/source/ldm/models/diffusion/ip_adapter.py +57 -0
- {libcom-0.0.1.post10 → libcom-0.1.0}/libcom/shadow_generation/source/ldm/models/diffusion/plms.py +2 -2
- {libcom-0.0.1.post10 → libcom-0.1.0}/libcom/shadow_generation/source/ldm/models/diffusion/sampling_util.py +0 -0
- libcom-0.1.0/libcom/shadow_generation/source/ldm/models/mask_predictor/__init__.py +0 -0
- {libcom-0.0.1.post10 → libcom-0.1.0}/libcom/shadow_generation/source/ldm/models/mask_predictor/mask_predictor.py +0 -0
- libcom-0.1.0/libcom/shadow_generation/source/ldm/modules/__init__.py +0 -0
- {libcom-0.0.1.post10 → libcom-0.1.0}/libcom/shadow_generation/source/ldm/modules/attention.py +1 -1
- libcom-0.1.0/libcom/shadow_generation/source/ldm/modules/diffusionmodules/__init__.py +0 -0
- {libcom-0.0.1.post10 → libcom-0.1.0}/libcom/shadow_generation/source/ldm/modules/diffusionmodules/model.py +6 -1
- {libcom-0.0.1.post10 → libcom-0.1.0}/libcom/shadow_generation/source/ldm/modules/diffusionmodules/openaimodel.py +33 -40
- {libcom-0.0.1.post10 → libcom-0.1.0}/libcom/shadow_generation/source/ldm/modules/diffusionmodules/upscaling.py +2 -2
- {libcom-0.0.1.post10 → libcom-0.1.0}/libcom/shadow_generation/source/ldm/modules/diffusionmodules/util.py +1 -1
- libcom-0.1.0/libcom/shadow_generation/source/ldm/modules/distributions/__init__.py +0 -0
- libcom-0.1.0/libcom/shadow_generation/source/ldm/modules/distributions/distributions.py +92 -0
- {libcom-0.0.1.post10 → libcom-0.1.0}/libcom/shadow_generation/source/ldm/modules/ema.py +0 -0
- libcom-0.1.0/libcom/shadow_generation/source/ldm/modules/encoders/__init__.py +0 -0
- {libcom-0.0.1.post10 → libcom-0.1.0}/libcom/shadow_generation/source/ldm/modules/encoders/modules.py +2 -1
- {libcom-0.0.1.post10 → libcom-0.1.0}/libcom/shadow_generation/source/ldm/modules/image_degradation/__init__.py +0 -0
- {libcom-0.0.1.post10 → libcom-0.1.0}/libcom/shadow_generation/source/ldm/modules/image_degradation/bsrgan.py +1 -1
- {libcom-0.0.1.post10 → libcom-0.1.0}/libcom/shadow_generation/source/ldm/modules/image_degradation/bsrgan_light.py +1 -1
- {libcom-0.0.1.post10 → libcom-0.1.0}/libcom/shadow_generation/source/ldm/modules/image_degradation/utils_image.py +0 -0
- libcom-0.1.0/libcom/shadow_generation/source/ldm/modules/midas/__init__.py +0 -0
- {libcom-0.0.1.post10 → libcom-0.1.0}/libcom/shadow_generation/source/ldm/modules/midas/api.py +4 -4
- libcom-0.1.0/libcom/shadow_generation/source/ldm/modules/midas/midas/__init__.py +0 -0
- {libcom-0.0.1.post10 → libcom-0.1.0}/libcom/shadow_generation/source/ldm/modules/midas/midas/base_model.py +0 -0
- {libcom-0.0.1.post10 → libcom-0.1.0}/libcom/shadow_generation/source/ldm/modules/midas/midas/blocks.py +0 -0
- {libcom-0.0.1.post10 → libcom-0.1.0}/libcom/shadow_generation/source/ldm/modules/midas/midas/dpt_depth.py +0 -0
- {libcom-0.0.1.post10 → libcom-0.1.0}/libcom/shadow_generation/source/ldm/modules/midas/midas/midas_net.py +0 -0
- {libcom-0.0.1.post10 → libcom-0.1.0}/libcom/shadow_generation/source/ldm/modules/midas/midas/midas_net_custom.py +0 -0
- {libcom-0.0.1.post10 → libcom-0.1.0}/libcom/shadow_generation/source/ldm/modules/midas/midas/transforms.py +0 -0
- {libcom-0.0.1.post10 → libcom-0.1.0}/libcom/shadow_generation/source/ldm/modules/midas/midas/vit.py +0 -0
- {libcom-0.0.1.post10 → libcom-0.1.0}/libcom/shadow_generation/source/ldm/modules/midas/utils.py +0 -0
- {libcom-0.0.1.post10 → libcom-0.1.0}/libcom/shadow_generation/source/ldm/util.py +2 -0
- libcom-0.1.0/libcom/shadow_generation/source/sampler/__init__.py +0 -0
- {libcom-0.0.1.post10 → libcom-0.1.0}/libcom/shadow_generation/source/sampler/pndm.py +0 -0
- {libcom-0.0.1.post10 → libcom-0.1.0}/libcom/shadow_generation/source/sampler/scheduling_pndm.py +0 -0
- libcom-0.1.0/libcom/shadow_generation/source/tool_add_control.py +49 -0
- libcom-0.1.0/libcom/utils/__init__.py +0 -0
- {libcom-0.0.1.post10 → libcom-0.1.0}/libcom/utils/environment.py +0 -0
- {libcom-0.0.1.post10 → libcom-0.1.0}/libcom/utils/model_download.py +0 -0
- {libcom-0.0.1.post10 → libcom-0.1.0}/libcom/utils/process_image.py +0 -0
- {libcom-0.0.1.post10 → libcom-0.1.0}/libcom.egg-info/PKG-INFO +20 -15
- {libcom-0.0.1.post10 → libcom-0.1.0}/libcom.egg-info/SOURCES.txt +45 -2
- {libcom-0.0.1.post10 → libcom-0.1.0}/libcom.egg-info/dependency_links.txt +0 -0
- {libcom-0.0.1.post10 → libcom-0.1.0}/libcom.egg-info/requires.txt +2 -0
- {libcom-0.0.1.post10 → libcom-0.1.0}/libcom.egg-info/top_level.txt +0 -0
- {libcom-0.0.1.post10 → libcom-0.1.0}/setup.cfg +0 -0
- {libcom-0.0.1.post10 → libcom-0.1.0}/setup.py +1 -1
- libcom-0.0.1.post10/README.md +0 -75
- libcom-0.0.1.post10/libcom/controllable_composition/source/ControlCom/ldm/modules/losses/__init__.py +0 -1
|
File without changes
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: libcom
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.1.0
|
|
4
4
|
Summary: Image Composition Toolbox
|
|
5
5
|
Home-page: https://github.com/bcmi/libcom
|
|
6
6
|
Author: BCMI Lab
|
|
@@ -31,12 +31,15 @@ License-File: LICENSE
|
|
|
31
31
|
[](https://pepy.tech/project/libcom)
|
|
32
32
|
[](https://hits.sh/github.com/bcmi/libcom/)
|
|
33
33
|
[](https://bcmi.sjtu.edu.cn/home/niuli/demo_image_composition/)
|
|
34
|
+
[](https://github.com/bcmi/Awesome-Image-Composition)
|
|
34
35
|
[](https://arxiv.org/pdf/2106.14490.pdf)
|
|
35
|
-
[](https://github.com/bcmi/libcom/blob/main/LICENSE)
|
|
36
36
|
|
|
37
|
+
**We co-founded a startup company [miguo.ai](https://miguocomics.com/), dedicated to accelerating the production of comics and animations using AIGC technology. If you are seeking internship or full-time positions, please feel free to send your resume to hr@miguocomics.com.**
|
|
38
|
+
|
|
39
|
+
---
|
|
37
40
|
|
|
38
41
|
## Introduction
|
|
39
|
-
**_libcom_ (the library of image composition) is an image composition toolbox.** The goal of image composition 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.
|
|
42
|
+
**_libcom_ (the library of image composition) is an image composition toolbox.** The goal of image composition (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.
|
|
40
43
|
<div align="center">
|
|
41
44
|
</br>
|
|
42
45
|
<img src="https://raw.githubusercontent.com/bcmi/libcom/main/resources/image_composition_task.gif" width="600" />
|
|
@@ -49,18 +52,20 @@ License-File: LICENSE
|
|
|
49
52
|
### Main Functions
|
|
50
53
|
|
|
51
54
|
- **get_composite_image** generates composite images using naive copy-and-paste followed by image blending.
|
|
52
|
-
- **OPAScoreModel**
|
|
53
|
-
- **FOPAHeatMapModel** can predict the rationality scores for all locations/scales given a background-foreground pair, and output the composite image with optimal location/scale.
|
|
55
|
+
- **OPAScoreModel** [[OPA]](https://github.com/bcmi/Object-Placement-Assessment-Dataset-OPA) evaluates the rationality of foreground object placement in a composite image.
|
|
56
|
+
- **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.
|
|
54
57
|
- **color_transfer** adjusts the foreground color to match the background using traditional color transfer method.
|
|
55
|
-
- **ImageHarmonizationModel** adjusts the foreground illumination to be compatible the background given photorealistic background and photorealistic foreground.
|
|
56
|
-
- **PainterlyHarmonizationModel** adjusts the foreground style to be compatible with the background given artistic background and photorealistic foreground.
|
|
57
|
-
- **HarmonyScoreModel** evaluates the harmony level between foreground and background in a composite image.
|
|
58
|
-
- **InharmoniousLocalizationModel** localizes the inharmonious region in a synthetic image.
|
|
59
|
-
- **FOSScoreModel** evaluates the compatibility between foreground and background in a composite image in terms of geometry and semantics.
|
|
60
|
-
- **
|
|
61
|
-
- **
|
|
58
|
+
- **ImageHarmonizationModel** [[CDTNet]](https://github.com/bcmi/CDTNet-High-Resolution-Image-Harmonization) [[PCTNet]](https://github.com/rakutentech/PCT-Net-Image-Harmonization) adjusts the foreground illumination to be compatible the background given photorealistic background and photorealistic foreground.
|
|
59
|
+
- **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.
|
|
60
|
+
- **HarmonyScoreModel** [[BargainNet]](https://github.com/bcmi/BargainNet-Image-Harmonization) evaluates the harmony level between foreground and background in a composite image.
|
|
61
|
+
- **InharmoniousLocalizationModel** [[MadisNet]](https://github.com/bcmi/MadisNet-Inharmonious-Region-Localization) localizes the inharmonious region in a synthetic image.
|
|
62
|
+
- **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
|
+
- **ShadowGenerationModel** [[GPSDiffusion]](https://github.com/bcmi/GPSDiffusion-Object-Shadow-Generation) generates plausible shadow for the inserted object in a composite image. This model is unstable and you can pick the most satisfactory one from multiple generated results.
|
|
64
|
+
- **ControlComModel** [[ControlCom]](https://github.com/bcmi/ControlCom-Image-Composition) is a generative image composition model which unifies image blending and image harmonization. The pose and view of foreground stay unchanged.
|
|
65
|
+
- **MureObjectStitchModel** [[MureObjectStitch]](https://github.com/bcmi/MureObjectStitch-Image-Composition) is another generative image composition model which can adjust the pose and view of foreground. It supports multiple reference images of one foreground object. If you have a few images containing the foreground object, we suggest finetuning MureObjectStitch using these images for better detail preservation.
|
|
66
|
+
|
|
62
67
|
|
|
63
|
-
**For the detailed method descriptions, code examples, visualization results, and performance comments, please refer to our [[documents]](https://libcom.readthedocs.io/en/latest/).**
|
|
68
|
+
**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.
|
|
64
69
|
|
|
65
70
|
## Requirements
|
|
66
71
|
|
|
@@ -72,9 +77,9 @@ Please refer to [[Installation]](https://github.com/bcmi/libcom/blob/main/docs/g
|
|
|
72
77
|
## Contributors
|
|
73
78
|
- Institution: [Brain-like Computing and Machine Intelligence (BCMI) Lab](https://bcmi.sjtu.edu.cn/).
|
|
74
79
|
- Project Initiator & Team Manager: [Li Niu](https://www.ustcnewly.com/index.html).
|
|
75
|
-
- Architect & Lead Developer: [Bo Zhang](https://bo-zhang-cs.github.io/).
|
|
80
|
+
- Architect & Lead Developer: [Bo Zhang](https://bo-zhang-cs.github.io/), [Yujie Zhou](https://github.com/YujieOuO).
|
|
76
81
|
- Documentation Manager: [Jiacheng Sui](https://github.com/charlessjc).
|
|
77
|
-
- Module Developers: [Jiacheng Sui](https://github.com/charlessjc), [Binjie Gao](https://github.com/WhynotHAHA), [Lingxiao Lu](https://github.com/pokaaa), [Xinhao Tao](https://github.com/taoxinhao13), [Junyan Cao](https://github.com/cjy-4), [Junqi You](https://github.com/dhmbb2).
|
|
82
|
+
- Module Developers: [Jiacheng Sui](https://github.com/charlessjc), [Binjie Gao](https://github.com/WhynotHAHA), [Lingxiao Lu](https://github.com/pokaaa), [Xinhao Tao](https://github.com/taoxinhao13), [Junyan Cao](https://github.com/cjy-4), [Haonan Zhao](https://github.com/nononononno), [Jiaxuan Chen](https://github.com/csdahunzi), [Junqi You](https://github.com/dhmbb2).
|
|
78
83
|
|
|
79
84
|
## License
|
|
80
85
|
|
libcom-0.1.0/README.md
ADDED
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
<div align="center">
|
|
2
|
+
</br>
|
|
3
|
+
<img src="https://raw.githubusercontent.com/bcmi/libcom/main/resources/LOGO.png" width="200" />
|
|
4
|
+
|
|
5
|
+
</div>
|
|
6
|
+
|
|
7
|
+
<h1 align="center">libcom: everything about image composition</h1>
|
|
8
|
+
|
|
9
|
+
</br>
|
|
10
|
+
|
|
11
|
+
[](https://pypi.org/project/libcom)
|
|
12
|
+
[](https://pepy.tech/project/libcom)
|
|
13
|
+
[](https://hits.sh/github.com/bcmi/libcom/)
|
|
14
|
+
[](https://bcmi.sjtu.edu.cn/home/niuli/demo_image_composition/)
|
|
15
|
+
[](https://github.com/bcmi/Awesome-Image-Composition)
|
|
16
|
+
[](https://arxiv.org/pdf/2106.14490.pdf)
|
|
17
|
+
|
|
18
|
+
**We co-founded a startup company [miguo.ai](https://miguocomics.com/), dedicated to accelerating the production of comics and animations using AIGC technology. If you are seeking internship or full-time positions, please feel free to send your resume to hr@miguocomics.com.**
|
|
19
|
+
|
|
20
|
+
---
|
|
21
|
+
|
|
22
|
+
## Introduction
|
|
23
|
+
**_libcom_ (the library of image composition) is an image composition toolbox.** The goal of image composition (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.
|
|
24
|
+
<div align="center">
|
|
25
|
+
</br>
|
|
26
|
+
<img src="https://raw.githubusercontent.com/bcmi/libcom/main/resources/image_composition_task.gif" width="600" />
|
|
27
|
+
</div>
|
|
28
|
+
|
|
29
|
+
**_libcom_ covers a diversity of related tasks in the field of image composition**, including image blending, standard/painterly image harmonization, shadow generation, object placement, generative composition, quality evaluation, *etc*. For each task, we integrate one or two selected methods considering both efficiency and effectiveness. The selected methods will be continuously updated upon the emergence of better methods.
|
|
30
|
+
|
|
31
|
+
**The ultimate goal of this library is solving all the problems related to image composition with simple `import libcom`.**
|
|
32
|
+
|
|
33
|
+
### Main Functions
|
|
34
|
+
|
|
35
|
+
- **get_composite_image** generates composite images using naive copy-and-paste followed by image blending.
|
|
36
|
+
- **OPAScoreModel** [[OPA]](https://github.com/bcmi/Object-Placement-Assessment-Dataset-OPA) evaluates the rationality of foreground object placement in a composite image.
|
|
37
|
+
- **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.
|
|
38
|
+
- **color_transfer** adjusts the foreground color to match the background using traditional color transfer method.
|
|
39
|
+
- **ImageHarmonizationModel** [[CDTNet]](https://github.com/bcmi/CDTNet-High-Resolution-Image-Harmonization) [[PCTNet]](https://github.com/rakutentech/PCT-Net-Image-Harmonization) adjusts the foreground illumination to be compatible the background given photorealistic background and photorealistic foreground.
|
|
40
|
+
- **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.
|
|
41
|
+
- **HarmonyScoreModel** [[BargainNet]](https://github.com/bcmi/BargainNet-Image-Harmonization) evaluates the harmony level between foreground and background in a composite image.
|
|
42
|
+
- **InharmoniousLocalizationModel** [[MadisNet]](https://github.com/bcmi/MadisNet-Inharmonious-Region-Localization) localizes the inharmonious region in a synthetic image.
|
|
43
|
+
- **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.
|
|
44
|
+
- **ShadowGenerationModel** [[GPSDiffusion]](https://github.com/bcmi/GPSDiffusion-Object-Shadow-Generation) generates plausible shadow for the inserted object in a composite image. This model is unstable and you can pick the most satisfactory one from multiple generated results.
|
|
45
|
+
- **ControlComModel** [[ControlCom]](https://github.com/bcmi/ControlCom-Image-Composition) is a generative image composition model which unifies image blending and image harmonization. The pose and view of foreground stay unchanged.
|
|
46
|
+
- **MureObjectStitchModel** [[MureObjectStitch]](https://github.com/bcmi/MureObjectStitch-Image-Composition) is another generative image composition model which can adjust the pose and view of foreground. It supports multiple reference images of one foreground object. If you have a few images containing the foreground object, we suggest finetuning MureObjectStitch using these images for better detail preservation.
|
|
47
|
+
|
|
48
|
+
|
|
49
|
+
**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.
|
|
50
|
+
|
|
51
|
+
## Requirements
|
|
52
|
+
|
|
53
|
+
The main branch is built on the Linux system with **Python 3.8** and **PyTorch>=1.10.1**. For other dependencies, please refer to [[conda_env]](https://github.com/bcmi/libcom/blob/main/requirements/libcom.yaml) and [[runtime_dependencies]](https://github.com/bcmi/libcom/blob/main/requirements/runtime.txt).
|
|
54
|
+
|
|
55
|
+
## Get Started
|
|
56
|
+
Please refer to [[Installation]](https://github.com/bcmi/libcom/blob/main/docs/get_started.md) for installation instructions and [[documents]](https://libcom.readthedocs.io/en/latest/) for user guidance.
|
|
57
|
+
|
|
58
|
+
## Contributors
|
|
59
|
+
- Institution: [Brain-like Computing and Machine Intelligence (BCMI) Lab](https://bcmi.sjtu.edu.cn/).
|
|
60
|
+
- Project Initiator & Team Manager: [Li Niu](https://www.ustcnewly.com/index.html).
|
|
61
|
+
- Architect & Lead Developer: [Bo Zhang](https://bo-zhang-cs.github.io/), [Yujie Zhou](https://github.com/YujieOuO).
|
|
62
|
+
- Documentation Manager: [Jiacheng Sui](https://github.com/charlessjc).
|
|
63
|
+
- Module Developers: [Jiacheng Sui](https://github.com/charlessjc), [Binjie Gao](https://github.com/WhynotHAHA), [Lingxiao Lu](https://github.com/pokaaa), [Xinhao Tao](https://github.com/taoxinhao13), [Junyan Cao](https://github.com/cjy-4), [Haonan Zhao](https://github.com/nononononno), [Jiaxuan Chen](https://github.com/csdahunzi), [Junqi You](https://github.com/dhmbb2).
|
|
64
|
+
|
|
65
|
+
## License
|
|
66
|
+
|
|
67
|
+
This project is released under the [Apache 2.0 license](https://github.com/bcmi/libcom/blob/main/LICENSE).
|
|
68
|
+
|
|
69
|
+
## Bibtex
|
|
70
|
+
|
|
71
|
+
If you use our toolbox, please cite our survey paper using the following BibTeX [[arxiv](https://arxiv.org/pdf/2106.14490.pdf)]:
|
|
72
|
+
|
|
73
|
+
```
|
|
74
|
+
@article{niu2021making,
|
|
75
|
+
title={Making images real again: A comprehensive survey on deep image composition},
|
|
76
|
+
author={Niu, Li and Cong, Wenyan and Liu, Liu and Hong, Yan and Zhang, Bo and Liang, Jing and Zhang, Liqing},
|
|
77
|
+
journal={arXiv preprint arXiv:2106.14490},
|
|
78
|
+
year={2021}
|
|
79
|
+
}
|
|
80
|
+
```
|
|
@@ -9,11 +9,12 @@ from .fopa_heat_map import *
|
|
|
9
9
|
from .fos_score import *
|
|
10
10
|
from .controllable_composition import *
|
|
11
11
|
from .shadow_generation import *
|
|
12
|
+
from .objectstitch import *
|
|
12
13
|
|
|
13
14
|
__all__ = [
|
|
14
15
|
'color_transfer', 'get_composite_image', 'OPAScoreModel',
|
|
15
16
|
'HarmonyScoreModel', 'InharmoniousLocalizationModel',
|
|
16
17
|
'ImageHarmonizationModel', 'PainterlyHarmonizationModel',
|
|
17
18
|
'FOPAHeatMapModel', 'FOSScoreModel', 'ControlComModel',
|
|
18
|
-
'ShadowGenerationModel'
|
|
19
|
+
'ShadowGenerationModel', 'Mure_ObjectStitchModel'
|
|
19
20
|
]
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{libcom-0.0.1.post10 → libcom-0.1.0}/libcom/controllable_composition/controllable_composition.py
RENAMED
|
@@ -29,8 +29,9 @@ from .source.ControlCom.ldm.models.diffusion.plms import PLMSSampler
|
|
|
29
29
|
from .source.ControlCom.ldm.data.open_images_control import get_tensor, get_tensor_clip, get_bbox_tensor, bbox2mask, tensor2numpy
|
|
30
30
|
|
|
31
31
|
cur_dir = os.path.dirname(os.path.abspath(__file__))
|
|
32
|
-
|
|
33
|
-
|
|
32
|
+
model_dir = os.environ.get('LIBCOM_MODEL_DIR',cur_dir)
|
|
33
|
+
model_set = ['ControlCom', 'ControlCom_blend_harm', 'ControlCom_view_comp']
|
|
34
|
+
task_set = ['blending', 'harmonization', 'viewsynthesis', 'composition']
|
|
34
35
|
|
|
35
36
|
class ControlComModel:
|
|
36
37
|
"""
|
|
@@ -38,7 +39,7 @@ class ControlComModel:
|
|
|
38
39
|
|
|
39
40
|
Args:
|
|
40
41
|
device (str | torch.device): gpu id
|
|
41
|
-
model_type (str): predefined model type
|
|
42
|
+
model_type (str): predefined model type. "ControlCom" refers to the version trained on all four tasks comprehensively, covering a wide range of domains or objectives. "ControlCom_blend_harm" fine-tunes the "full" version specifically for image blending and harmonization tasks. "ControlCom_view_comp" fine-tunes the "full" version to excel in view synthesis and generative composition tasks.
|
|
42
43
|
kwargs (dict): sampler='ddim' (default) or 'plms', other parameters for building model
|
|
43
44
|
|
|
44
45
|
Examples:
|
|
@@ -53,7 +54,7 @@ class ControlComModel:
|
|
|
53
54
|
>>> fg_img = test_dir + 'foreground/' + img_names[i]
|
|
54
55
|
>>> bbox = bboxes[i]
|
|
55
56
|
>>> mask = test_dir + 'foreground_mask/' + img_names[i]
|
|
56
|
-
>>> net = ControlComModel(device=0)
|
|
57
|
+
>>> net = ControlComModel(device=0, model_type="ControlCom")
|
|
57
58
|
>>> comp = net(bg_img, fg_img, bbox, mask, task=['blending', 'harmonization'])
|
|
58
59
|
>>> bg_img = draw_bbox_on_image(bg_img, bbox)
|
|
59
60
|
>>> grid_img = make_image_grid([bg_img, fg_img, comp[0], comp[1]])
|
|
@@ -73,7 +74,7 @@ class ControlComModel:
|
|
|
73
74
|
self.model_type = model_type
|
|
74
75
|
self.option = kwargs
|
|
75
76
|
|
|
76
|
-
weight_path = os.path.join(cur_dir, 'pretrained_models', '
|
|
77
|
+
weight_path = os.path.join(cur_dir, 'pretrained_models', f'{self.model_type}.pth')
|
|
77
78
|
download_pretrained_model(weight_path)
|
|
78
79
|
|
|
79
80
|
self.device = check_gpu_device(device)
|
|
@@ -84,7 +85,7 @@ class ControlComModel:
|
|
|
84
85
|
pl_sd = torch.load(weight_path, map_location="cpu")
|
|
85
86
|
sd = pl_sd["state_dict"]
|
|
86
87
|
config = OmegaConf.load(os.path.join(cur_dir, 'source/ControlCom/configs/controlcom.yaml'))
|
|
87
|
-
clip_path = os.path.join(
|
|
88
|
+
clip_path = os.path.join(model_dir, '../shared_pretrained_models', 'openai-clip-vit-large-patch14')
|
|
88
89
|
download_entire_folder(clip_path)
|
|
89
90
|
config.model.params.cond_stage_config.params.version = clip_path
|
|
90
91
|
model = instantiate_from_config(config.model)
|
|
@@ -181,6 +182,10 @@ class ControlComModel:
|
|
|
181
182
|
indicator.append([0,0])
|
|
182
183
|
elif t == 'harmonization':
|
|
183
184
|
indicator.append([1,0])
|
|
185
|
+
elif t == 'viewsynthesis':
|
|
186
|
+
indicator.append([0,1])
|
|
187
|
+
else:
|
|
188
|
+
indicator.append([1,1])
|
|
184
189
|
return indicator
|
|
185
190
|
|
|
186
191
|
@torch.no_grad()
|
|
@@ -195,7 +200,7 @@ class ControlComModel:
|
|
|
195
200
|
foreground_image (str | numpy.ndarray): The path to foreground image or the background image in ndarray form.
|
|
196
201
|
bbox (list): The bounding box which indicates the foreground's location in the background. [x1, y1, x2, y2].
|
|
197
202
|
foreground_mask (None | str | numpy.ndarray): Mask of foreground image which indicates the foreground object region in the foreground image. default: None.
|
|
198
|
-
task (str | list of str): 'blending', 'harmonization', ['blending', 'harmonization']: Task types, including image blending, image harmonization. default: 'blending'.
|
|
203
|
+
task (str | list of str): 'blending', 'harmonization', 'viewsynthesis', 'composition' | ['blending', 'harmonization']: Task types, including image blending, image harmonization, view synthesis, generative composition. default: 'blending'.
|
|
199
204
|
num_samples (int): Number of images to be generated for each task. default: 1.
|
|
200
205
|
sample_steps (int): Number of denoising steps. The recommended setting is 25 for PLMS sampler and 50 for DDIM sampler. default: 50.
|
|
201
206
|
guidance_scale (int): Scale in classifier-free guidance (minimum: 1; maximum: 20). default: 5.
|
{libcom-0.0.1.post10 → libcom-0.1.0}/libcom/controllable_composition/source/ControlCom/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
model:
|
|
2
2
|
base_learning_rate: 1.0e-05
|
|
3
|
-
target: ldm.models.diffusion.ddpm.LatentDiffusion
|
|
3
|
+
target: libcom.controllable_composition.source.ControlCom.ldm.models.diffusion.ddpm.LatentDiffusion
|
|
4
4
|
params:
|
|
5
5
|
linear_start: 0.00085
|
|
6
6
|
linear_end: 0.012
|
|
@@ -41,7 +41,7 @@ model:
|
|
|
41
41
|
use_guidance: true
|
|
42
42
|
local_uncond: same
|
|
43
43
|
scheduler_config:
|
|
44
|
-
target: ldm.lr_scheduler.LambdaLinearScheduler
|
|
44
|
+
target: libcom.controllable_composition.source.ControlCom.ldm.lr_scheduler.LambdaLinearScheduler
|
|
45
45
|
params:
|
|
46
46
|
warm_up_steps:
|
|
47
47
|
- 1000
|
|
@@ -54,7 +54,7 @@ model:
|
|
|
54
54
|
f_min:
|
|
55
55
|
- 1.0
|
|
56
56
|
unet_config:
|
|
57
|
-
target: ldm.modules.diffusionmodules.openaimodel.UNetModel
|
|
57
|
+
target: libcom.controllable_composition.source.ControlCom.ldm.modules.diffusionmodules.openaimodel.UNetModel
|
|
58
58
|
params:
|
|
59
59
|
image_size: 32
|
|
60
60
|
in_channels: 11
|
|
@@ -78,7 +78,7 @@ model:
|
|
|
78
78
|
legacy: false
|
|
79
79
|
add_conv_in_front_of_unet: false
|
|
80
80
|
local_encoder_config:
|
|
81
|
-
conditioning_key: ldm.modules.local_module.LocalRefineBlock
|
|
81
|
+
conditioning_key: libcom.controllable_composition.source.ControlCom.ldm.modules.local_module.LocalRefineBlock
|
|
82
82
|
add_position_emb: false
|
|
83
83
|
roi_size: 16
|
|
84
84
|
context_dim: 1024
|
|
@@ -89,7 +89,7 @@ model:
|
|
|
89
89
|
add_in_decoder: true
|
|
90
90
|
add_before_crossattn: false
|
|
91
91
|
first_stage_config:
|
|
92
|
-
target: ldm.models.autoencoder.AutoencoderKL
|
|
92
|
+
target: libcom.controllable_composition.source.ControlCom.ldm.models.autoencoder.AutoencoderKL
|
|
93
93
|
params:
|
|
94
94
|
embed_dim: 4
|
|
95
95
|
monitor: val/rec_loss
|
|
@@ -111,7 +111,7 @@ model:
|
|
|
111
111
|
lossconfig:
|
|
112
112
|
target: torch.nn.Identity
|
|
113
113
|
cond_stage_config:
|
|
114
|
-
target: ldm.modules.encoders.modules.FrozenCLIPImageEmbedder
|
|
114
|
+
target: libcom.controllable_composition.source.ControlCom.ldm.modules.encoders.modules.FrozenCLIPImageEmbedder
|
|
115
115
|
params:
|
|
116
116
|
version: openai-clip-vit-large-patch14
|
|
117
117
|
local_hidden_index: 12
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
import argparse, os, sys, datetime, glob, importlib, csv
|
|
2
|
+
import numpy as np
|
|
3
|
+
import time
|
|
4
|
+
import torch
|
|
5
|
+
import torchvision
|
|
6
|
+
import pytorch_lightning as pl
|
|
7
|
+
|
|
8
|
+
from packaging import version
|
|
9
|
+
from omegaconf import OmegaConf
|
|
10
|
+
from torch.utils.data import random_split, DataLoader, Dataset, Subset
|
|
11
|
+
from functools import partial
|
|
12
|
+
from PIL import Image
|
|
13
|
+
|
|
14
|
+
from pytorch_lightning import seed_everything
|
|
15
|
+
from pytorch_lightning.trainer import Trainer
|
|
16
|
+
from pytorch_lightning.callbacks import ModelCheckpoint, Callback, LearningRateMonitor
|
|
17
|
+
from pytorch_lightning.utilities.rank_zero import rank_zero_only
|
|
18
|
+
from pytorch_lightning.utilities import rank_zero_info
|
|
19
|
+
|
|
20
|
+
from libcom.controllable_composition.source.ControlCom.ldm.data.base import Txt2ImgIterableBaseDataset
|
|
21
|
+
from libcom.controllable_composition.source.ControlCom.ldm.util import instantiate_from_config
|
|
22
|
+
import socket
|
|
23
|
+
from pytorch_lightning.plugins.environments import ClusterEnvironment,SLURMEnvironment
|
|
24
|
+
|
|
25
|
+
class WrappedDataset(Dataset):
|
|
26
|
+
"""Wraps an arbitrary object with __len__ and __getitem__ into a pytorch dataset"""
|
|
27
|
+
|
|
28
|
+
def __init__(self, dataset):
|
|
29
|
+
self.data = dataset
|
|
30
|
+
|
|
31
|
+
def __len__(self):
|
|
32
|
+
return len(self.data)
|
|
33
|
+
|
|
34
|
+
def __getitem__(self, idx):
|
|
35
|
+
return self.data[idx]
|
|
36
|
+
|
|
37
|
+
def worker_init_fn(_):
|
|
38
|
+
worker_info = torch.utils.data.get_worker_info()
|
|
39
|
+
|
|
40
|
+
dataset = worker_info.dataset
|
|
41
|
+
worker_id = worker_info.id
|
|
42
|
+
|
|
43
|
+
if isinstance(dataset, Txt2ImgIterableBaseDataset):
|
|
44
|
+
split_size = dataset.num_records // worker_info.num_workers
|
|
45
|
+
# reset num_records to the true number to retain reliable length information
|
|
46
|
+
dataset.sample_ids = dataset.valid_ids[worker_id * split_size:(worker_id + 1) * split_size]
|
|
47
|
+
current_id = np.random.choice(len(np.random.get_state()[1]), 1)
|
|
48
|
+
return np.random.seed(np.random.get_state()[1][current_id] + worker_id)
|
|
49
|
+
else:
|
|
50
|
+
return np.random.seed(np.random.get_state()[1][0] + worker_id)
|
|
51
|
+
|
|
52
|
+
class DataModuleFromConfig(pl.LightningDataModule):
|
|
53
|
+
def __init__(self, batch_size, num_workers=None, train=None, validation=None, test=None, predict=None,
|
|
54
|
+
wrap=False, shuffle_test_loader=False, use_worker_init_fn=False,
|
|
55
|
+
shuffle_val_dataloader=False):
|
|
56
|
+
super().__init__()
|
|
57
|
+
self.batch_size = batch_size
|
|
58
|
+
self.dataset_configs = dict()
|
|
59
|
+
self.num_workers = num_workers if num_workers is not None else batch_size
|
|
60
|
+
self.use_worker_init_fn = use_worker_init_fn
|
|
61
|
+
if train is not None:
|
|
62
|
+
self.dataset_configs["train"] = train
|
|
63
|
+
self.train_dataloader = self._train_dataloader
|
|
64
|
+
if validation is not None:
|
|
65
|
+
self.dataset_configs["validation"] = validation
|
|
66
|
+
self.val_dataloader = partial(self._val_dataloader, shuffle=shuffle_val_dataloader)
|
|
67
|
+
if test is not None:
|
|
68
|
+
self.dataset_configs["test"] = test
|
|
69
|
+
self.test_dataloader = partial(self._test_dataloader, shuffle=shuffle_test_loader)
|
|
70
|
+
if predict is not None:
|
|
71
|
+
self.dataset_configs["predict"] = predict
|
|
72
|
+
self.predict_dataloader = self._predict_dataloader
|
|
73
|
+
self.wrap = wrap
|
|
74
|
+
|
|
75
|
+
def prepare_data(self):
|
|
76
|
+
for data_cfg in self.dataset_configs.values():
|
|
77
|
+
instantiate_from_config(data_cfg)
|
|
78
|
+
|
|
79
|
+
def setup(self, stage=None):
|
|
80
|
+
self.datasets = dict(
|
|
81
|
+
(k, instantiate_from_config(self.dataset_configs[k]))
|
|
82
|
+
for k in self.dataset_configs)
|
|
83
|
+
if self.wrap:
|
|
84
|
+
for k in self.datasets:
|
|
85
|
+
self.datasets[k] = WrappedDataset(self.datasets[k])
|
|
86
|
+
|
|
87
|
+
def _train_dataloader(self):
|
|
88
|
+
is_iterable_dataset = isinstance(self.datasets['train'], Txt2ImgIterableBaseDataset)
|
|
89
|
+
if is_iterable_dataset or self.use_worker_init_fn:
|
|
90
|
+
init_fn = worker_init_fn
|
|
91
|
+
else:
|
|
92
|
+
init_fn = None
|
|
93
|
+
return DataLoader(self.datasets["train"], batch_size=self.batch_size,
|
|
94
|
+
num_workers=self.num_workers, shuffle=False if is_iterable_dataset else True,
|
|
95
|
+
worker_init_fn=init_fn)
|
|
96
|
+
|
|
97
|
+
def _val_dataloader(self, shuffle=False):
|
|
98
|
+
if isinstance(self.datasets['validation'], Txt2ImgIterableBaseDataset) or self.use_worker_init_fn:
|
|
99
|
+
init_fn = worker_init_fn
|
|
100
|
+
else:
|
|
101
|
+
init_fn = None
|
|
102
|
+
return DataLoader(self.datasets["validation"],
|
|
103
|
+
batch_size=self.batch_size,
|
|
104
|
+
num_workers=self.num_workers,
|
|
105
|
+
worker_init_fn=init_fn,
|
|
106
|
+
shuffle=shuffle)
|
|
107
|
+
|
|
108
|
+
def _test_dataloader(self, shuffle=False):
|
|
109
|
+
is_iterable_dataset = isinstance(self.datasets['train'], Txt2ImgIterableBaseDataset)
|
|
110
|
+
if is_iterable_dataset or self.use_worker_init_fn:
|
|
111
|
+
init_fn = worker_init_fn
|
|
112
|
+
else:
|
|
113
|
+
init_fn = None
|
|
114
|
+
|
|
115
|
+
# do not shuffle dataloader for iterable dataset
|
|
116
|
+
shuffle = shuffle and (not is_iterable_dataset)
|
|
117
|
+
|
|
118
|
+
return DataLoader(self.datasets["test"], batch_size=self.batch_size,
|
|
119
|
+
num_workers=self.num_workers, worker_init_fn=init_fn, shuffle=shuffle)
|
|
120
|
+
|
|
121
|
+
def _predict_dataloader(self, shuffle=False):
|
|
122
|
+
if isinstance(self.datasets['predict'], Txt2ImgIterableBaseDataset) or self.use_worker_init_fn:
|
|
123
|
+
init_fn = worker_init_fn
|
|
124
|
+
else:
|
|
125
|
+
init_fn = None
|
|
126
|
+
return DataLoader(self.datasets["predict"], batch_size=self.batch_size,
|
|
127
|
+
num_workers=self.num_workers, worker_init_fn=init_fn)
|
|
128
|
+
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|