libcom 0.0.1.post10__tar.gz → 0.0.2.post1__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (259) hide show
  1. {libcom-0.0.1.post10 → libcom-0.0.2.post1}/PKG-INFO +4 -3
  2. {libcom-0.0.1.post10 → libcom-0.0.2.post1}/README.md +3 -2
  3. {libcom-0.0.1.post10 → libcom-0.0.2.post1}/libcom/__init__.py +2 -1
  4. {libcom-0.0.1.post10 → libcom-0.0.2.post1}/libcom/controllable_composition/controllable_composition.py +11 -6
  5. {libcom-0.0.1.post10 → libcom-0.0.2.post1}/libcom/controllable_composition/source/ControlCom/configs/controlcom.yaml +6 -6
  6. libcom-0.0.2.post1/libcom/controllable_composition/source/ControlCom/ldm/data/datamodule.py +128 -0
  7. libcom-0.0.2.post1/libcom/controllable_composition/source/ControlCom/ldm/models/diffusion/classifier.py +267 -0
  8. {libcom-0.0.1.post10 → libcom-0.0.2.post1}/libcom/controllable_composition/source/ControlCom/ldm/models/diffusion/ddpm.py +1 -2
  9. {libcom-0.0.1.post10 → libcom-0.0.2.post1}/libcom/controllable_composition/source/ControlCom/ldm/modules/attention.py +1 -1
  10. {libcom-0.0.1.post10 → libcom-0.0.2.post1}/libcom/controllable_composition/source/ControlCom/ldm/modules/diffusionmodules/openaimodel.py +2 -2
  11. {libcom-0.0.1.post10 → libcom-0.0.2.post1}/libcom/controllable_composition/source/ControlCom/ldm/modules/encoders/modules.py +4 -5
  12. {libcom-0.0.1.post10 → libcom-0.0.2.post1}/libcom/controllable_composition/source/ControlCom/ldm/modules/local_module.py +2 -2
  13. libcom-0.0.2.post1/libcom/controllable_composition/source/ControlCom/ldm/modules/losses/__init__.py +1 -0
  14. {libcom-0.0.1.post10 → libcom-0.0.2.post1}/libcom/controllable_composition/source/ControlCom/ldm/util.py +0 -2
  15. {libcom-0.0.1.post10 → libcom-0.0.2.post1}/libcom/fopa_heat_map/fopa_heat_map.py +3 -2
  16. {libcom-0.0.1.post10 → libcom-0.0.2.post1}/libcom/fos_score/fos_score_prediction.py +2 -2
  17. {libcom-0.0.1.post10 → libcom-0.0.2.post1}/libcom/harmony_score/harmony_score_prediction.py +2 -1
  18. {libcom-0.0.1.post10 → libcom-0.0.2.post1}/libcom/image_harmonization/image_harmonization.py +4 -3
  19. {libcom-0.0.1.post10 → libcom-0.0.2.post1}/libcom/image_harmonization/source/functions.py +1 -0
  20. {libcom-0.0.1.post10 → libcom-0.0.2.post1}/libcom/inharmonious_region_localization/inharmonious_region_localization.py +3 -2
  21. libcom-0.0.2.post1/libcom/objectstitch/__init__.py +4 -0
  22. libcom-0.0.2.post1/libcom/objectstitch/objectstitch.py +200 -0
  23. libcom-0.0.2.post1/libcom/objectstitch/source/ObjectStitch/configs/objectstitch.yaml +74 -0
  24. libcom-0.0.2.post1/libcom/objectstitch/source/ObjectStitch/ldm/data/base.py +23 -0
  25. {libcom-0.0.1.post10/libcom/controllable_composition/source/ControlCom → libcom-0.0.2.post1/libcom/objectstitch/source/ObjectStitch}/ldm/data/datamodule.py +2 -2
  26. libcom-0.0.2.post1/libcom/objectstitch/source/ObjectStitch/ldm/data/imagenet.py +394 -0
  27. libcom-0.0.2.post1/libcom/objectstitch/source/ObjectStitch/ldm/data/lsun.py +92 -0
  28. libcom-0.0.2.post1/libcom/objectstitch/source/ObjectStitch/ldm/data/open_images.py +409 -0
  29. libcom-0.0.2.post1/libcom/objectstitch/source/ObjectStitch/ldm/models/autoencoder.py +443 -0
  30. {libcom-0.0.1.post10/libcom/controllable_composition/source/ControlCom → libcom-0.0.2.post1/libcom/objectstitch/source/ObjectStitch}/ldm/models/diffusion/classifier.py +2 -2
  31. libcom-0.0.2.post1/libcom/objectstitch/source/ObjectStitch/ldm/models/diffusion/ddim.py +263 -0
  32. libcom-0.0.2.post1/libcom/objectstitch/source/ObjectStitch/ldm/models/diffusion/ddpm.py +1416 -0
  33. libcom-0.0.2.post1/libcom/objectstitch/source/ObjectStitch/ldm/models/diffusion/plms.py +252 -0
  34. libcom-0.0.2.post1/libcom/objectstitch/source/ObjectStitch/ldm/modules/attention.py +261 -0
  35. libcom-0.0.2.post1/libcom/objectstitch/source/ObjectStitch/ldm/modules/diffusionmodules/model.py +835 -0
  36. libcom-0.0.2.post1/libcom/objectstitch/source/ObjectStitch/ldm/modules/diffusionmodules/openaimodel.py +1108 -0
  37. libcom-0.0.2.post1/libcom/objectstitch/source/ObjectStitch/ldm/modules/diffusionmodules/util.py +267 -0
  38. libcom-0.0.2.post1/libcom/objectstitch/source/ObjectStitch/ldm/modules/ema.py +76 -0
  39. libcom-0.0.2.post1/libcom/objectstitch/source/ObjectStitch/ldm/modules/encoders/modules.py +189 -0
  40. libcom-0.0.2.post1/libcom/objectstitch/source/ObjectStitch/ldm/modules/encoders/xf.py +130 -0
  41. libcom-0.0.2.post1/libcom/objectstitch/source/ObjectStitch/ldm/modules/losses/__init__.py +1 -0
  42. libcom-0.0.2.post1/libcom/objectstitch/source/ObjectStitch/ldm/modules/losses/contperceptual.py +111 -0
  43. libcom-0.0.2.post1/libcom/objectstitch/source/ObjectStitch/ldm/modules/losses/vqperceptual.py +167 -0
  44. libcom-0.0.2.post1/libcom/objectstitch/source/ObjectStitch/ldm/modules/x_transformer.py +641 -0
  45. libcom-0.0.2.post1/libcom/objectstitch/source/ObjectStitch/ldm/util.py +203 -0
  46. {libcom-0.0.1.post10 → libcom-0.0.2.post1}/libcom/opa_score/opa_score_prediction.py +2 -1
  47. {libcom-0.0.1.post10 → libcom-0.0.2.post1}/libcom/painterly_image_harmonization/painterly_image_harmonization.py +6 -5
  48. libcom-0.0.2.post1/libcom/painterly_image_harmonization/source/PHDiffusion/ldm/lr_scheduler.py +98 -0
  49. {libcom-0.0.1.post10 → libcom-0.0.2.post1}/libcom/painterly_image_harmonization/source/PHDiffusion/ldm/models/diffusion/ddim.py +2 -2
  50. {libcom-0.0.1.post10 → libcom-0.0.2.post1}/libcom/painterly_image_harmonization/source/PHDiffusion/ldm/models/diffusion/ddpm.py +0 -1
  51. {libcom-0.0.1.post10 → libcom-0.0.2.post1}/libcom/painterly_image_harmonization/source/PHDiffusion/ldm/models/diffusion/dpm_solver/sampler.py +1 -1
  52. {libcom-0.0.1.post10 → libcom-0.0.2.post1}/libcom/painterly_image_harmonization/source/PHDiffusion/ldm/util.py +1 -5
  53. {libcom-0.0.1.post10 → libcom-0.0.2.post1}/libcom/painterly_image_harmonization/source/PHDiffusion/stable_diffusion.yaml +5 -5
  54. {libcom-0.0.1.post10 → libcom-0.0.2.post1}/libcom/shadow_generation/shadow_generation.py +4 -3
  55. {libcom-0.0.1.post10 → libcom-0.0.2.post1}/libcom/shadow_generation/source/cldm/ddim_hacked.py +2 -2
  56. libcom-0.0.2.post1/libcom/shadow_generation/source/ldm/models/__init__.py +0 -0
  57. libcom-0.0.2.post1/libcom/shadow_generation/source/ldm/models/diffusion/__init__.py +0 -0
  58. {libcom-0.0.1.post10 → libcom-0.0.2.post1}/libcom/shadow_generation/source/ldm/models/diffusion/ddim.py +3 -3
  59. {libcom-0.0.1.post10 → libcom-0.0.2.post1}/libcom/shadow_generation/source/ldm/models/diffusion/dpm_solver/sampler.py +1 -1
  60. {libcom-0.0.1.post10 → libcom-0.0.2.post1}/libcom/shadow_generation/source/ldm/models/diffusion/plms.py +2 -2
  61. libcom-0.0.2.post1/libcom/shadow_generation/source/ldm/models/mask_predictor/__init__.py +0 -0
  62. libcom-0.0.2.post1/libcom/shadow_generation/source/ldm/modules/__init__.py +0 -0
  63. libcom-0.0.2.post1/libcom/shadow_generation/source/ldm/modules/diffusionmodules/__init__.py +0 -0
  64. libcom-0.0.2.post1/libcom/shadow_generation/source/ldm/modules/distributions/__init__.py +0 -0
  65. libcom-0.0.2.post1/libcom/shadow_generation/source/ldm/modules/distributions/distributions.py +92 -0
  66. libcom-0.0.2.post1/libcom/shadow_generation/source/ldm/modules/encoders/__init__.py +0 -0
  67. libcom-0.0.2.post1/libcom/shadow_generation/source/ldm/modules/midas/__init__.py +0 -0
  68. libcom-0.0.2.post1/libcom/shadow_generation/source/ldm/modules/midas/midas/__init__.py +0 -0
  69. libcom-0.0.2.post1/libcom/shadow_generation/source/sampler/__init__.py +0 -0
  70. libcom-0.0.2.post1/libcom/utils/__init__.py +0 -0
  71. {libcom-0.0.1.post10 → libcom-0.0.2.post1}/libcom.egg-info/PKG-INFO +4 -3
  72. {libcom-0.0.1.post10 → libcom-0.0.2.post1}/libcom.egg-info/SOURCES.txt +38 -0
  73. {libcom-0.0.1.post10 → libcom-0.0.2.post1}/setup.py +1 -1
  74. libcom-0.0.1.post10/libcom/controllable_composition/source/ControlCom/ldm/modules/losses/__init__.py +0 -1
  75. {libcom-0.0.1.post10 → libcom-0.0.2.post1}/LICENSE +0 -0
  76. {libcom-0.0.1.post10 → libcom-0.0.2.post1}/libcom/color_transfer/__init__.py +0 -0
  77. {libcom-0.0.1.post10 → libcom-0.0.2.post1}/libcom/color_transfer/reinhard.py +0 -0
  78. {libcom-0.0.1.post10 → libcom-0.0.2.post1}/libcom/controllable_composition/__init__.py +0 -0
  79. {libcom-0.0.1.post10 → libcom-0.0.2.post1}/libcom/controllable_composition/source/ControlCom/__init__.py +0 -0
  80. {libcom-0.0.1.post10 → libcom-0.0.2.post1}/libcom/controllable_composition/source/ControlCom/configs/__init__.py +0 -0
  81. {libcom-0.0.1.post10 → libcom-0.0.2.post1}/libcom/controllable_composition/source/ControlCom/ldm/__init__.py +0 -0
  82. {libcom-0.0.1.post10 → libcom-0.0.2.post1}/libcom/controllable_composition/source/ControlCom/ldm/data/__init__.py +0 -0
  83. {libcom-0.0.1.post10 → libcom-0.0.2.post1}/libcom/controllable_composition/source/ControlCom/ldm/data/base.py +0 -0
  84. {libcom-0.0.1.post10 → libcom-0.0.2.post1}/libcom/controllable_composition/source/ControlCom/ldm/data/open_images_control.py +0 -0
  85. {libcom-0.0.1.post10 → libcom-0.0.2.post1}/libcom/controllable_composition/source/ControlCom/ldm/lr_scheduler.py +0 -0
  86. {libcom-0.0.1.post10 → libcom-0.0.2.post1}/libcom/controllable_composition/source/ControlCom/ldm/models/__init__.py +0 -0
  87. {libcom-0.0.1.post10 → libcom-0.0.2.post1}/libcom/controllable_composition/source/ControlCom/ldm/models/autoencoder.py +0 -0
  88. {libcom-0.0.1.post10 → libcom-0.0.2.post1}/libcom/controllable_composition/source/ControlCom/ldm/models/diffusion/__init__.py +0 -0
  89. {libcom-0.0.1.post10 → libcom-0.0.2.post1}/libcom/controllable_composition/source/ControlCom/ldm/models/diffusion/ddim.py +0 -0
  90. {libcom-0.0.1.post10 → libcom-0.0.2.post1}/libcom/controllable_composition/source/ControlCom/ldm/models/diffusion/plms.py +0 -0
  91. {libcom-0.0.1.post10 → libcom-0.0.2.post1}/libcom/controllable_composition/source/ControlCom/ldm/modules/__init__.py +0 -0
  92. {libcom-0.0.1.post10 → libcom-0.0.2.post1}/libcom/controllable_composition/source/ControlCom/ldm/modules/diffusionmodules/__init__.py +0 -0
  93. {libcom-0.0.1.post10 → libcom-0.0.2.post1}/libcom/controllable_composition/source/ControlCom/ldm/modules/diffusionmodules/model.py +0 -0
  94. {libcom-0.0.1.post10 → libcom-0.0.2.post1}/libcom/controllable_composition/source/ControlCom/ldm/modules/diffusionmodules/util.py +0 -0
  95. {libcom-0.0.1.post10 → libcom-0.0.2.post1}/libcom/controllable_composition/source/ControlCom/ldm/modules/distributions/__init__.py +0 -0
  96. {libcom-0.0.1.post10 → libcom-0.0.2.post1}/libcom/controllable_composition/source/ControlCom/ldm/modules/distributions/distributions.py +0 -0
  97. {libcom-0.0.1.post10 → libcom-0.0.2.post1}/libcom/controllable_composition/source/ControlCom/ldm/modules/ema.py +0 -0
  98. {libcom-0.0.1.post10 → libcom-0.0.2.post1}/libcom/controllable_composition/source/ControlCom/ldm/modules/encoders/__init__.py +0 -0
  99. {libcom-0.0.1.post10 → libcom-0.0.2.post1}/libcom/controllable_composition/source/ControlCom/ldm/modules/encoders/xf.py +0 -0
  100. {libcom-0.0.1.post10 → libcom-0.0.2.post1}/libcom/controllable_composition/source/ControlCom/ldm/modules/losses/contperceptual.py +0 -0
  101. {libcom-0.0.1.post10 → libcom-0.0.2.post1}/libcom/controllable_composition/source/ControlCom/ldm/modules/losses/vqperceptual.py +0 -0
  102. {libcom-0.0.1.post10 → libcom-0.0.2.post1}/libcom/controllable_composition/source/ControlCom/ldm/modules/x_transformer.py +0 -0
  103. {libcom-0.0.1.post10 → libcom-0.0.2.post1}/libcom/controllable_composition/source/__init__.py +0 -0
  104. {libcom-0.0.1.post10 → libcom-0.0.2.post1}/libcom/fopa_heat_map/__init__.py +0 -0
  105. {libcom-0.0.1.post10 → libcom-0.0.2.post1}/libcom/fopa_heat_map/source/__init__.py +0 -0
  106. {libcom-0.0.1.post10 → libcom-0.0.2.post1}/libcom/fopa_heat_map/source/backbone/ResNet.py +0 -0
  107. {libcom-0.0.1.post10 → libcom-0.0.2.post1}/libcom/fopa_heat_map/source/backbone/__init__.py +0 -0
  108. {libcom-0.0.1.post10 → libcom-0.0.2.post1}/libcom/fopa_heat_map/source/data/OBdataset.py +0 -0
  109. {libcom-0.0.1.post10 → libcom-0.0.2.post1}/libcom/fopa_heat_map/source/data/__init__.py +0 -0
  110. {libcom-0.0.1.post10 → libcom-0.0.2.post1}/libcom/fopa_heat_map/source/data/all_transforms.py +0 -0
  111. {libcom-0.0.1.post10 → libcom-0.0.2.post1}/libcom/fopa_heat_map/source/network/BaseBlocks.py +0 -0
  112. {libcom-0.0.1.post10 → libcom-0.0.2.post1}/libcom/fopa_heat_map/source/network/DynamicModules.py +0 -0
  113. {libcom-0.0.1.post10 → libcom-0.0.2.post1}/libcom/fopa_heat_map/source/network/ObPlaNet_simple.py +0 -0
  114. {libcom-0.0.1.post10 → libcom-0.0.2.post1}/libcom/fopa_heat_map/source/network/__init__.py +0 -0
  115. {libcom-0.0.1.post10 → libcom-0.0.2.post1}/libcom/fopa_heat_map/source/network/tensor_ops.py +0 -0
  116. {libcom-0.0.1.post10 → libcom-0.0.2.post1}/libcom/fopa_heat_map/source/prepare_multi_fg_scales.py +0 -0
  117. {libcom-0.0.1.post10 → libcom-0.0.2.post1}/libcom/fos_score/__init__.py +0 -0
  118. {libcom-0.0.1.post10 → libcom-0.0.2.post1}/libcom/fos_score/source/__init__.py +0 -0
  119. {libcom-0.0.1.post10 → libcom-0.0.2.post1}/libcom/fos_score/source/config/__init__.py +0 -0
  120. {libcom-0.0.1.post10 → libcom-0.0.2.post1}/libcom/fos_score/source/config/config.py +0 -0
  121. {libcom-0.0.1.post10 → libcom-0.0.2.post1}/libcom/fos_score/source/config/config.sfosd.yaml +0 -0
  122. {libcom-0.0.1.post10 → libcom-0.0.2.post1}/libcom/fos_score/source/config/config_rfosd.yaml +0 -0
  123. {libcom-0.0.1.post10 → libcom-0.0.2.post1}/libcom/fos_score/source/loss_function.py +0 -0
  124. {libcom-0.0.1.post10 → libcom-0.0.2.post1}/libcom/fos_score/source/networks.py +0 -0
  125. {libcom-0.0.1.post10 → libcom-0.0.2.post1}/libcom/harmony_score/__init__.py +0 -0
  126. {libcom-0.0.1.post10 → libcom-0.0.2.post1}/libcom/harmony_score/source/__init__.py +0 -0
  127. {libcom-0.0.1.post10 → libcom-0.0.2.post1}/libcom/harmony_score/source/bargainnet.py +0 -0
  128. {libcom-0.0.1.post10 → libcom-0.0.2.post1}/libcom/image_harmonization/__init__.py +0 -0
  129. {libcom-0.0.1.post10 → libcom-0.0.2.post1}/libcom/image_harmonization/source/__init__.py +0 -0
  130. {libcom-0.0.1.post10 → libcom-0.0.2.post1}/libcom/image_harmonization/source/cdt_net.py +0 -0
  131. {libcom-0.0.1.post10 → libcom-0.0.2.post1}/libcom/image_harmonization/source/pct_net.py +0 -0
  132. {libcom-0.0.1.post10 → libcom-0.0.2.post1}/libcom/inharmonious_region_localization/__init__.py +0 -0
  133. {libcom-0.0.1.post10 → libcom-0.0.2.post1}/libcom/inharmonious_region_localization/source/__init__.py +0 -0
  134. {libcom-0.0.1.post10 → libcom-0.0.2.post1}/libcom/inharmonious_region_localization/source/blocks.py +0 -0
  135. {libcom-0.0.1.post10 → libcom-0.0.2.post1}/libcom/inharmonious_region_localization/source/functions.py +0 -0
  136. {libcom-0.0.1.post10 → libcom-0.0.2.post1}/libcom/inharmonious_region_localization/source/madis_net.py +0 -0
  137. {libcom-0.0.1.post10 → libcom-0.0.2.post1}/libcom/naive_composition/__init__.py +0 -0
  138. {libcom-0.0.1.post10 → libcom-0.0.2.post1}/libcom/naive_composition/generate_composite_image.py +0 -0
  139. {libcom-0.0.1.post10/libcom/painterly_image_harmonization/source/PHDNet → libcom-0.0.2.post1/libcom/objectstitch/source/ObjectStitch}/__init__.py +0 -0
  140. {libcom-0.0.1.post10/libcom/painterly_image_harmonization/source/PHDiffusion → libcom-0.0.2.post1/libcom/objectstitch/source/ObjectStitch/configs}/__init__.py +0 -0
  141. {libcom-0.0.1.post10/libcom/painterly_image_harmonization/source/PHDiffusion → libcom-0.0.2.post1/libcom/objectstitch/source/ObjectStitch}/ldm/__init__.py +0 -0
  142. {libcom-0.0.1.post10/libcom/painterly_image_harmonization/source/PHDiffusion/ldm/models → libcom-0.0.2.post1/libcom/objectstitch/source/ObjectStitch/ldm/data}/__init__.py +0 -0
  143. {libcom-0.0.1.post10/libcom/painterly_image_harmonization/source/PHDiffusion → libcom-0.0.2.post1/libcom/objectstitch/source/ObjectStitch}/ldm/lr_scheduler.py +0 -0
  144. {libcom-0.0.1.post10/libcom/painterly_image_harmonization/source/PHDiffusion/ldm/modules → libcom-0.0.2.post1/libcom/objectstitch/source/ObjectStitch/ldm/models}/__init__.py +0 -0
  145. {libcom-0.0.1.post10/libcom/painterly_image_harmonization/source/PHDiffusion/ldm/modules/diffusionmodules → libcom-0.0.2.post1/libcom/objectstitch/source/ObjectStitch/ldm/models/diffusion}/__init__.py +0 -0
  146. {libcom-0.0.1.post10/libcom/painterly_image_harmonization/source/PHDiffusion/ldm/modules/distributions → libcom-0.0.2.post1/libcom/objectstitch/source/ObjectStitch/ldm/modules}/__init__.py +0 -0
  147. {libcom-0.0.1.post10/libcom/painterly_image_harmonization/source/PHDiffusion/ldm/modules/encoders → libcom-0.0.2.post1/libcom/objectstitch/source/ObjectStitch/ldm/modules/diffusionmodules}/__init__.py +0 -0
  148. {libcom-0.0.1.post10/libcom/painterly_image_harmonization/source/PHDiffusion/ldm/modules/extra_condition/midas → libcom-0.0.2.post1/libcom/objectstitch/source/ObjectStitch/ldm/modules/distributions}/__init__.py +0 -0
  149. {libcom-0.0.1.post10/libcom/painterly_image_harmonization/source/PHDiffusion → libcom-0.0.2.post1/libcom/objectstitch/source/ObjectStitch}/ldm/modules/distributions/distributions.py +0 -0
  150. {libcom-0.0.1.post10/libcom/painterly_image_harmonization/source/PHDiffusion/ldm/modules/extra_condition/midas/midas → libcom-0.0.2.post1/libcom/objectstitch/source/ObjectStitch/ldm/modules/encoders}/__init__.py +0 -0
  151. {libcom-0.0.1.post10/libcom/painterly_image_harmonization/source/PHDiffusion/ldm/modules/extra_condition/openpose → libcom-0.0.2.post1/libcom/objectstitch/source}/__init__.py +0 -0
  152. {libcom-0.0.1.post10 → libcom-0.0.2.post1}/libcom/opa_score/__init__.py +0 -0
  153. {libcom-0.0.1.post10 → libcom-0.0.2.post1}/libcom/opa_score/source/__init__.py +0 -0
  154. {libcom-0.0.1.post10 → libcom-0.0.2.post1}/libcom/opa_score/source/object_place_net.py +0 -0
  155. {libcom-0.0.1.post10 → libcom-0.0.2.post1}/libcom/opa_score/source/oblect_place_config.py +0 -0
  156. {libcom-0.0.1.post10 → libcom-0.0.2.post1}/libcom/opa_score/source/resnet_4ch.py +0 -0
  157. {libcom-0.0.1.post10 → libcom-0.0.2.post1}/libcom/painterly_image_harmonization/__init__.py +0 -0
  158. {libcom-0.0.1.post10/libcom/painterly_image_harmonization/source/PHDiffusion/ldm/modules/fusion → libcom-0.0.2.post1/libcom/painterly_image_harmonization/source/PHDNet}/__init__.py +0 -0
  159. {libcom-0.0.1.post10 → libcom-0.0.2.post1}/libcom/painterly_image_harmonization/source/PHDNet/networks.py +0 -0
  160. {libcom-0.0.1.post10 → libcom-0.0.2.post1}/libcom/painterly_image_harmonization/source/PHDNet/phdnet.py +0 -0
  161. {libcom-0.0.1.post10 → libcom-0.0.2.post1}/libcom/painterly_image_harmonization/source/PHDNet/phdnet_config.py +0 -0
  162. {libcom-0.0.1.post10/libcom/painterly_image_harmonization/source → libcom-0.0.2.post1/libcom/painterly_image_harmonization/source/PHDiffusion}/__init__.py +0 -0
  163. {libcom-0.0.1.post10/libcom/shadow_generation/source → libcom-0.0.2.post1/libcom/painterly_image_harmonization/source/PHDiffusion/ldm}/__init__.py +0 -0
  164. {libcom-0.0.1.post10 → libcom-0.0.2.post1}/libcom/painterly_image_harmonization/source/PHDiffusion/ldm/inference_base.py +0 -0
  165. {libcom-0.0.1.post10/libcom/shadow_generation/source/cldm → libcom-0.0.2.post1/libcom/painterly_image_harmonization/source/PHDiffusion/ldm/models}/__init__.py +0 -0
  166. {libcom-0.0.1.post10 → libcom-0.0.2.post1}/libcom/painterly_image_harmonization/source/PHDiffusion/ldm/models/autoencoder.py +0 -0
  167. {libcom-0.0.1.post10 → libcom-0.0.2.post1}/libcom/painterly_image_harmonization/source/PHDiffusion/ldm/models/diffusion/__init__.py +0 -0
  168. {libcom-0.0.1.post10 → libcom-0.0.2.post1}/libcom/painterly_image_harmonization/source/PHDiffusion/ldm/models/diffusion/dpm_solver/__init__.py +0 -0
  169. {libcom-0.0.1.post10 → libcom-0.0.2.post1}/libcom/painterly_image_harmonization/source/PHDiffusion/ldm/models/diffusion/dpm_solver/dpm_solver.py +0 -0
  170. {libcom-0.0.1.post10 → libcom-0.0.2.post1}/libcom/painterly_image_harmonization/source/PHDiffusion/ldm/models/diffusion/plms.py +0 -0
  171. {libcom-0.0.1.post10 → libcom-0.0.2.post1}/libcom/painterly_image_harmonization/source/PHDiffusion/ldm/models/diffusion/scheduling_pndm.py +0 -0
  172. {libcom-0.0.1.post10/libcom/shadow_generation/source/ldm → libcom-0.0.2.post1/libcom/painterly_image_harmonization/source/PHDiffusion/ldm/modules}/__init__.py +0 -0
  173. {libcom-0.0.1.post10 → libcom-0.0.2.post1}/libcom/painterly_image_harmonization/source/PHDiffusion/ldm/modules/attention.py +0 -0
  174. {libcom-0.0.1.post10/libcom/shadow_generation/source/ldm/data → libcom-0.0.2.post1/libcom/painterly_image_harmonization/source/PHDiffusion/ldm/modules/diffusionmodules}/__init__.py +0 -0
  175. {libcom-0.0.1.post10 → libcom-0.0.2.post1}/libcom/painterly_image_harmonization/source/PHDiffusion/ldm/modules/diffusionmodules/model.py +0 -0
  176. {libcom-0.0.1.post10 → libcom-0.0.2.post1}/libcom/painterly_image_harmonization/source/PHDiffusion/ldm/modules/diffusionmodules/openaimodel.py +0 -0
  177. {libcom-0.0.1.post10 → libcom-0.0.2.post1}/libcom/painterly_image_harmonization/source/PHDiffusion/ldm/modules/diffusionmodules/util.py +0 -0
  178. {libcom-0.0.1.post10/libcom/shadow_generation/source/ldm/models → libcom-0.0.2.post1/libcom/painterly_image_harmonization/source/PHDiffusion/ldm/modules/distributions}/__init__.py +0 -0
  179. {libcom-0.0.1.post10/libcom/shadow_generation/source → libcom-0.0.2.post1/libcom/painterly_image_harmonization/source/PHDiffusion}/ldm/modules/distributions/distributions.py +0 -0
  180. {libcom-0.0.1.post10 → libcom-0.0.2.post1}/libcom/painterly_image_harmonization/source/PHDiffusion/ldm/modules/ema.py +0 -0
  181. {libcom-0.0.1.post10/libcom/shadow_generation/source/ldm/models/diffusion → libcom-0.0.2.post1/libcom/painterly_image_harmonization/source/PHDiffusion/ldm/modules/encoders}/__init__.py +0 -0
  182. {libcom-0.0.1.post10 → libcom-0.0.2.post1}/libcom/painterly_image_harmonization/source/PHDiffusion/ldm/modules/encoders/adapter.py +0 -0
  183. {libcom-0.0.1.post10 → libcom-0.0.2.post1}/libcom/painterly_image_harmonization/source/PHDiffusion/ldm/modules/encoders/modules.py +0 -0
  184. {libcom-0.0.1.post10 → libcom-0.0.2.post1}/libcom/painterly_image_harmonization/source/PHDiffusion/ldm/modules/extra_condition/__init__.py +0 -0
  185. {libcom-0.0.1.post10 → libcom-0.0.2.post1}/libcom/painterly_image_harmonization/source/PHDiffusion/ldm/modules/extra_condition/api.py +0 -0
  186. {libcom-0.0.1.post10/libcom/shadow_generation/source/ldm/models/mask_predictor → libcom-0.0.2.post1/libcom/painterly_image_harmonization/source/PHDiffusion/ldm/modules/extra_condition/midas}/__init__.py +0 -0
  187. {libcom-0.0.1.post10 → libcom-0.0.2.post1}/libcom/painterly_image_harmonization/source/PHDiffusion/ldm/modules/extra_condition/midas/api.py +0 -0
  188. {libcom-0.0.1.post10/libcom/shadow_generation/source/ldm/modules → libcom-0.0.2.post1/libcom/painterly_image_harmonization/source/PHDiffusion/ldm/modules/extra_condition/midas/midas}/__init__.py +0 -0
  189. {libcom-0.0.1.post10 → libcom-0.0.2.post1}/libcom/painterly_image_harmonization/source/PHDiffusion/ldm/modules/extra_condition/midas/midas/base_model.py +0 -0
  190. {libcom-0.0.1.post10 → libcom-0.0.2.post1}/libcom/painterly_image_harmonization/source/PHDiffusion/ldm/modules/extra_condition/midas/midas/blocks.py +0 -0
  191. {libcom-0.0.1.post10 → libcom-0.0.2.post1}/libcom/painterly_image_harmonization/source/PHDiffusion/ldm/modules/extra_condition/midas/midas/dpt_depth.py +0 -0
  192. {libcom-0.0.1.post10 → libcom-0.0.2.post1}/libcom/painterly_image_harmonization/source/PHDiffusion/ldm/modules/extra_condition/midas/midas/midas_net.py +0 -0
  193. {libcom-0.0.1.post10 → libcom-0.0.2.post1}/libcom/painterly_image_harmonization/source/PHDiffusion/ldm/modules/extra_condition/midas/midas/midas_net_custom.py +0 -0
  194. {libcom-0.0.1.post10 → libcom-0.0.2.post1}/libcom/painterly_image_harmonization/source/PHDiffusion/ldm/modules/extra_condition/midas/midas/transforms.py +0 -0
  195. {libcom-0.0.1.post10 → libcom-0.0.2.post1}/libcom/painterly_image_harmonization/source/PHDiffusion/ldm/modules/extra_condition/midas/midas/vit.py +0 -0
  196. {libcom-0.0.1.post10 → libcom-0.0.2.post1}/libcom/painterly_image_harmonization/source/PHDiffusion/ldm/modules/extra_condition/midas/utils.py +0 -0
  197. {libcom-0.0.1.post10 → libcom-0.0.2.post1}/libcom/painterly_image_harmonization/source/PHDiffusion/ldm/modules/extra_condition/model_edge.py +0 -0
  198. {libcom-0.0.1.post10/libcom/shadow_generation/source/ldm/modules/diffusionmodules → libcom-0.0.2.post1/libcom/painterly_image_harmonization/source/PHDiffusion/ldm/modules/extra_condition/openpose}/__init__.py +0 -0
  199. {libcom-0.0.1.post10 → libcom-0.0.2.post1}/libcom/painterly_image_harmonization/source/PHDiffusion/ldm/modules/extra_condition/openpose/api.py +0 -0
  200. {libcom-0.0.1.post10 → libcom-0.0.2.post1}/libcom/painterly_image_harmonization/source/PHDiffusion/ldm/modules/extra_condition/openpose/body.py +0 -0
  201. {libcom-0.0.1.post10 → libcom-0.0.2.post1}/libcom/painterly_image_harmonization/source/PHDiffusion/ldm/modules/extra_condition/openpose/hand.py +0 -0
  202. {libcom-0.0.1.post10 → libcom-0.0.2.post1}/libcom/painterly_image_harmonization/source/PHDiffusion/ldm/modules/extra_condition/openpose/model.py +0 -0
  203. {libcom-0.0.1.post10 → libcom-0.0.2.post1}/libcom/painterly_image_harmonization/source/PHDiffusion/ldm/modules/extra_condition/openpose/util.py +0 -0
  204. {libcom-0.0.1.post10 → libcom-0.0.2.post1}/libcom/painterly_image_harmonization/source/PHDiffusion/ldm/modules/extra_condition/utils.py +0 -0
  205. {libcom-0.0.1.post10/libcom/shadow_generation/source/ldm/modules/distributions → libcom-0.0.2.post1/libcom/painterly_image_harmonization/source/PHDiffusion/ldm/modules/fusion}/__init__.py +0 -0
  206. {libcom-0.0.1.post10 → libcom-0.0.2.post1}/libcom/painterly_image_harmonization/source/PHDiffusion/ldm/modules/fusion/dual_encoder_fusion.py +0 -0
  207. {libcom-0.0.1.post10 → libcom-0.0.2.post1}/libcom/painterly_image_harmonization/source/PHDiffusion/ldm/modules/image_degradation/__init__.py +0 -0
  208. {libcom-0.0.1.post10 → libcom-0.0.2.post1}/libcom/painterly_image_harmonization/source/PHDiffusion/ldm/modules/image_degradation/bsrgan.py +0 -0
  209. {libcom-0.0.1.post10 → libcom-0.0.2.post1}/libcom/painterly_image_harmonization/source/PHDiffusion/ldm/modules/image_degradation/bsrgan_light.py +0 -0
  210. {libcom-0.0.1.post10 → libcom-0.0.2.post1}/libcom/painterly_image_harmonization/source/PHDiffusion/ldm/modules/image_degradation/utils_image.py +0 -0
  211. {libcom-0.0.1.post10/libcom/shadow_generation/source/ldm/modules/encoders → libcom-0.0.2.post1/libcom/painterly_image_harmonization/source}/__init__.py +0 -0
  212. {libcom-0.0.1.post10 → libcom-0.0.2.post1}/libcom/shadow_generation/__init__.py +0 -0
  213. {libcom-0.0.1.post10 → libcom-0.0.2.post1}/libcom/shadow_generation/source/PostProcessModel.py +0 -0
  214. {libcom-0.0.1.post10/libcom/shadow_generation/source/ldm/modules/midas → libcom-0.0.2.post1/libcom/shadow_generation/source}/__init__.py +0 -0
  215. {libcom-0.0.1.post10/libcom/shadow_generation/source/ldm/modules/midas/midas → libcom-0.0.2.post1/libcom/shadow_generation/source/cldm}/__init__.py +0 -0
  216. {libcom-0.0.1.post10 → libcom-0.0.2.post1}/libcom/shadow_generation/source/cldm/cldm.py +0 -0
  217. {libcom-0.0.1.post10 → libcom-0.0.2.post1}/libcom/shadow_generation/source/cldm/hack.py +0 -0
  218. {libcom-0.0.1.post10 → libcom-0.0.2.post1}/libcom/shadow_generation/source/cldm/logger.py +0 -0
  219. {libcom-0.0.1.post10 → libcom-0.0.2.post1}/libcom/shadow_generation/source/cldm/model.py +0 -0
  220. {libcom-0.0.1.post10 → libcom-0.0.2.post1}/libcom/shadow_generation/source/cldm_v15.yaml +0 -0
  221. {libcom-0.0.1.post10/libcom/shadow_generation/source/sampler → libcom-0.0.2.post1/libcom/shadow_generation/source/ldm}/__init__.py +0 -0
  222. {libcom-0.0.1.post10/libcom/utils → libcom-0.0.2.post1/libcom/shadow_generation/source/ldm/data}/__init__.py +0 -0
  223. {libcom-0.0.1.post10 → libcom-0.0.2.post1}/libcom/shadow_generation/source/ldm/data/util.py +0 -0
  224. {libcom-0.0.1.post10 → libcom-0.0.2.post1}/libcom/shadow_generation/source/ldm/models/autoencoder.py +0 -0
  225. {libcom-0.0.1.post10 → libcom-0.0.2.post1}/libcom/shadow_generation/source/ldm/models/diffusion/ddpm.py +0 -0
  226. {libcom-0.0.1.post10 → libcom-0.0.2.post1}/libcom/shadow_generation/source/ldm/models/diffusion/dpm_solver/__init__.py +0 -0
  227. {libcom-0.0.1.post10 → libcom-0.0.2.post1}/libcom/shadow_generation/source/ldm/models/diffusion/dpm_solver/dpm_solver.py +0 -0
  228. {libcom-0.0.1.post10 → libcom-0.0.2.post1}/libcom/shadow_generation/source/ldm/models/diffusion/sampling_util.py +0 -0
  229. {libcom-0.0.1.post10 → libcom-0.0.2.post1}/libcom/shadow_generation/source/ldm/models/mask_predictor/mask_predictor.py +0 -0
  230. {libcom-0.0.1.post10 → libcom-0.0.2.post1}/libcom/shadow_generation/source/ldm/modules/attention.py +0 -0
  231. {libcom-0.0.1.post10 → libcom-0.0.2.post1}/libcom/shadow_generation/source/ldm/modules/diffusionmodules/model.py +0 -0
  232. {libcom-0.0.1.post10 → libcom-0.0.2.post1}/libcom/shadow_generation/source/ldm/modules/diffusionmodules/openaimodel.py +0 -0
  233. {libcom-0.0.1.post10 → libcom-0.0.2.post1}/libcom/shadow_generation/source/ldm/modules/diffusionmodules/upscaling.py +0 -0
  234. {libcom-0.0.1.post10 → libcom-0.0.2.post1}/libcom/shadow_generation/source/ldm/modules/diffusionmodules/util.py +0 -0
  235. {libcom-0.0.1.post10 → libcom-0.0.2.post1}/libcom/shadow_generation/source/ldm/modules/ema.py +0 -0
  236. {libcom-0.0.1.post10 → libcom-0.0.2.post1}/libcom/shadow_generation/source/ldm/modules/encoders/modules.py +0 -0
  237. {libcom-0.0.1.post10 → libcom-0.0.2.post1}/libcom/shadow_generation/source/ldm/modules/image_degradation/__init__.py +0 -0
  238. {libcom-0.0.1.post10 → libcom-0.0.2.post1}/libcom/shadow_generation/source/ldm/modules/image_degradation/bsrgan.py +0 -0
  239. {libcom-0.0.1.post10 → libcom-0.0.2.post1}/libcom/shadow_generation/source/ldm/modules/image_degradation/bsrgan_light.py +0 -0
  240. {libcom-0.0.1.post10 → libcom-0.0.2.post1}/libcom/shadow_generation/source/ldm/modules/image_degradation/utils_image.py +0 -0
  241. {libcom-0.0.1.post10 → libcom-0.0.2.post1}/libcom/shadow_generation/source/ldm/modules/midas/api.py +0 -0
  242. {libcom-0.0.1.post10 → libcom-0.0.2.post1}/libcom/shadow_generation/source/ldm/modules/midas/midas/base_model.py +0 -0
  243. {libcom-0.0.1.post10 → libcom-0.0.2.post1}/libcom/shadow_generation/source/ldm/modules/midas/midas/blocks.py +0 -0
  244. {libcom-0.0.1.post10 → libcom-0.0.2.post1}/libcom/shadow_generation/source/ldm/modules/midas/midas/dpt_depth.py +0 -0
  245. {libcom-0.0.1.post10 → libcom-0.0.2.post1}/libcom/shadow_generation/source/ldm/modules/midas/midas/midas_net.py +0 -0
  246. {libcom-0.0.1.post10 → libcom-0.0.2.post1}/libcom/shadow_generation/source/ldm/modules/midas/midas/midas_net_custom.py +0 -0
  247. {libcom-0.0.1.post10 → libcom-0.0.2.post1}/libcom/shadow_generation/source/ldm/modules/midas/midas/transforms.py +0 -0
  248. {libcom-0.0.1.post10 → libcom-0.0.2.post1}/libcom/shadow_generation/source/ldm/modules/midas/midas/vit.py +0 -0
  249. {libcom-0.0.1.post10 → libcom-0.0.2.post1}/libcom/shadow_generation/source/ldm/modules/midas/utils.py +0 -0
  250. {libcom-0.0.1.post10 → libcom-0.0.2.post1}/libcom/shadow_generation/source/ldm/util.py +0 -0
  251. {libcom-0.0.1.post10 → libcom-0.0.2.post1}/libcom/shadow_generation/source/sampler/pndm.py +0 -0
  252. {libcom-0.0.1.post10 → libcom-0.0.2.post1}/libcom/shadow_generation/source/sampler/scheduling_pndm.py +0 -0
  253. {libcom-0.0.1.post10 → libcom-0.0.2.post1}/libcom/utils/environment.py +0 -0
  254. {libcom-0.0.1.post10 → libcom-0.0.2.post1}/libcom/utils/model_download.py +0 -0
  255. {libcom-0.0.1.post10 → libcom-0.0.2.post1}/libcom/utils/process_image.py +0 -0
  256. {libcom-0.0.1.post10 → libcom-0.0.2.post1}/libcom.egg-info/dependency_links.txt +0 -0
  257. {libcom-0.0.1.post10 → libcom-0.0.2.post1}/libcom.egg-info/requires.txt +0 -0
  258. {libcom-0.0.1.post10 → libcom-0.0.2.post1}/libcom.egg-info/top_level.txt +0 -0
  259. {libcom-0.0.1.post10 → libcom-0.0.2.post1}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: libcom
3
- Version: 0.0.1.post10
3
+ Version: 0.0.2.post1
4
4
  Summary: Image Composition Toolbox
5
5
  Home-page: https://github.com/bcmi/libcom
6
6
  Author: BCMI Lab
@@ -36,7 +36,7 @@ License-File: LICENSE
36
36
 
37
37
 
38
38
  ## 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.
39
+ **_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
40
  <div align="center">
41
41
  </br>
42
42
  <img src="https://raw.githubusercontent.com/bcmi/libcom/main/resources/image_composition_task.gif" width="600" />
@@ -57,7 +57,8 @@ License-File: LICENSE
57
57
  - **HarmonyScoreModel** evaluates the harmony level between foreground and background in a composite image.
58
58
  - **InharmoniousLocalizationModel** localizes the inharmonious region in a synthetic image.
59
59
  - **FOSScoreModel** evaluates the compatibility between foreground and background in a composite image in terms of geometry and semantics.
60
- - **ControlComModel** is a generative image composition model, which unifies image blending and image harmonization in one diffusion model.
60
+ - **ControlComModel** is a generative image composition model, which unifies image blending, image harmonization, view synthesis, and generative composition within a diffusion model.
61
+ - **ObjectStitchModel** is another generative image composition model that aims to generate a composite image from a pair of background and foreground, with non-object pixels filled with black.
61
62
  - **ShadowGenerationModel** generates plausible shadow for the inserted object in a composite image.
62
63
 
63
64
  **For the detailed method descriptions, code examples, visualization results, and performance comments, please refer to our [[documents]](https://libcom.readthedocs.io/en/latest/).**
@@ -17,7 +17,7 @@
17
17
 
18
18
 
19
19
  ## Introduction
20
- **_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.
20
+ **_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.
21
21
  <div align="center">
22
22
  </br>
23
23
  <img src="https://raw.githubusercontent.com/bcmi/libcom/main/resources/image_composition_task.gif" width="600" />
@@ -38,7 +38,8 @@
38
38
  - **HarmonyScoreModel** evaluates the harmony level between foreground and background in a composite image.
39
39
  - **InharmoniousLocalizationModel** localizes the inharmonious region in a synthetic image.
40
40
  - **FOSScoreModel** evaluates the compatibility between foreground and background in a composite image in terms of geometry and semantics.
41
- - **ControlComModel** is a generative image composition model, which unifies image blending and image harmonization in one diffusion model.
41
+ - **ControlComModel** is a generative image composition model, which unifies image blending, image harmonization, view synthesis, and generative composition within a diffusion model.
42
+ - **ObjectStitchModel** is another generative image composition model that aims to generate a composite image from a pair of background and foreground, with non-object pixels filled with black.
42
43
  - **ShadowGenerationModel** generates plausible shadow for the inserted object in a composite image.
43
44
 
44
45
  **For the detailed method descriptions, code examples, visualization results, and performance comments, please refer to our [[documents]](https://libcom.readthedocs.io/en/latest/).**
@@ -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', 'ObjectStitchModel'
19
20
  ]
@@ -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
- model_set = ['ControlCom']
33
- task_set = ['blending', 'harmonization'] # 'viewsynthesis', 'composition'
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', 'ControlCom.pth')
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(cur_dir, '../shared_pretrained_models', 'openai-clip-vit-large-patch14')
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()
@@ -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
@@ -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
+
@@ -0,0 +1,267 @@
1
+ import os
2
+ import torch
3
+ import pytorch_lightning as pl
4
+ from omegaconf import OmegaConf
5
+ from torch.nn import functional as F
6
+ from torch.optim import AdamW
7
+ from torch.optim.lr_scheduler import LambdaLR
8
+ from copy import deepcopy
9
+ from einops import rearrange
10
+ from glob import glob
11
+ from natsort import natsorted
12
+
13
+ from libcom.controllable_composition.source.ControlCom.ldm.modules.diffusionmodules.openaimodel import EncoderUNetModel, UNetModel
14
+ from libcom.controllable_composition.source.ControlCom.ldm.util import log_txt_as_img, default, ismap, instantiate_from_config
15
+
16
+ __models__ = {
17
+ 'class_label': EncoderUNetModel,
18
+ 'segmentation': UNetModel
19
+ }
20
+
21
+
22
+ def disabled_train(self, mode=True):
23
+ """Overwrite model.train with this function to make sure train/eval mode
24
+ does not change anymore."""
25
+ return self
26
+
27
+
28
+ class NoisyLatentImageClassifier(pl.LightningModule):
29
+
30
+ def __init__(self,
31
+ diffusion_path,
32
+ num_classes,
33
+ ckpt_path=None,
34
+ pool='attention',
35
+ label_key=None,
36
+ diffusion_ckpt_path=None,
37
+ scheduler_config=None,
38
+ weight_decay=1.e-2,
39
+ log_steps=10,
40
+ monitor='val/loss',
41
+ *args,
42
+ **kwargs):
43
+ super().__init__(*args, **kwargs)
44
+ self.num_classes = num_classes
45
+ # get latest config of diffusion model
46
+ diffusion_config = natsorted(glob(os.path.join(diffusion_path, 'configs', '*-project.yaml')))[-1]
47
+ self.diffusion_config = OmegaConf.load(diffusion_config).model
48
+ self.diffusion_config.params.ckpt_path = diffusion_ckpt_path
49
+ self.load_diffusion()
50
+
51
+ self.monitor = monitor
52
+ self.numd = self.diffusion_model.first_stage_model.encoder.num_resolutions - 1
53
+ self.log_time_interval = self.diffusion_model.num_timesteps // log_steps
54
+ self.log_steps = log_steps
55
+
56
+ self.label_key = label_key if not hasattr(self.diffusion_model, 'cond_stage_key') \
57
+ else self.diffusion_model.cond_stage_key
58
+
59
+ assert self.label_key is not None, 'label_key neither in diffusion model nor in model.params'
60
+
61
+ if self.label_key not in __models__:
62
+ raise NotImplementedError()
63
+
64
+ self.load_classifier(ckpt_path, pool)
65
+
66
+ self.scheduler_config = scheduler_config
67
+ self.use_scheduler = self.scheduler_config is not None
68
+ self.weight_decay = weight_decay
69
+
70
+ def init_from_ckpt(self, path, ignore_keys=list(), only_model=False):
71
+ sd = torch.load(path, map_location="cpu")
72
+ if "state_dict" in list(sd.keys()):
73
+ sd = sd["state_dict"]
74
+ keys = list(sd.keys())
75
+ for k in keys:
76
+ for ik in ignore_keys:
77
+ if k.startswith(ik):
78
+ print("Deleting key {} from state_dict.".format(k))
79
+ del sd[k]
80
+ missing, unexpected = self.load_state_dict(sd, strict=False) if not only_model else self.model.load_state_dict(
81
+ sd, strict=False)
82
+ print(f"Restored from {path} with {len(missing)} missing and {len(unexpected)} unexpected keys")
83
+ if len(missing) > 0:
84
+ print(f"Missing Keys: {missing}")
85
+ if len(unexpected) > 0:
86
+ print(f"Unexpected Keys: {unexpected}")
87
+
88
+ def load_diffusion(self):
89
+ model = instantiate_from_config(self.diffusion_config)
90
+ self.diffusion_model = model.eval()
91
+ self.diffusion_model.train = disabled_train
92
+ for param in self.diffusion_model.parameters():
93
+ param.requires_grad = False
94
+
95
+ def load_classifier(self, ckpt_path, pool):
96
+ model_config = deepcopy(self.diffusion_config.params.unet_config.params)
97
+ model_config.in_channels = self.diffusion_config.params.unet_config.params.out_channels
98
+ model_config.out_channels = self.num_classes
99
+ if self.label_key == 'class_label':
100
+ model_config.pool = pool
101
+
102
+ self.model = __models__[self.label_key](**model_config)
103
+ if ckpt_path is not None:
104
+ print('#####################################################################')
105
+ print(f'load from ckpt "{ckpt_path}"')
106
+ print('#####################################################################')
107
+ self.init_from_ckpt(ckpt_path)
108
+
109
+ @torch.no_grad()
110
+ def get_x_noisy(self, x, t, noise=None):
111
+ noise = default(noise, lambda: torch.randn_like(x))
112
+ continuous_sqrt_alpha_cumprod = None
113
+ if self.diffusion_model.use_continuous_noise:
114
+ continuous_sqrt_alpha_cumprod = self.diffusion_model.sample_continuous_noise_level(x.shape[0], t + 1)
115
+ # todo: make sure t+1 is correct here
116
+
117
+ return self.diffusion_model.q_sample(x_start=x, t=t, noise=noise,
118
+ continuous_sqrt_alpha_cumprod=continuous_sqrt_alpha_cumprod)
119
+
120
+ def forward(self, x_noisy, t, *args, **kwargs):
121
+ return self.model(x_noisy, t)
122
+
123
+ @torch.no_grad()
124
+ def get_input(self, batch, k):
125
+ x = batch[k]
126
+ if len(x.shape) == 3:
127
+ x = x[..., None]
128
+ x = rearrange(x, 'b h w c -> b c h w')
129
+ x = x.to(memory_format=torch.contiguous_format).float()
130
+ return x
131
+
132
+ @torch.no_grad()
133
+ def get_conditioning(self, batch, k=None):
134
+ if k is None:
135
+ k = self.label_key
136
+ assert k is not None, 'Needs to provide label key'
137
+
138
+ targets = batch[k].to(self.device)
139
+
140
+ if self.label_key == 'segmentation':
141
+ targets = rearrange(targets, 'b h w c -> b c h w')
142
+ for down in range(self.numd):
143
+ h, w = targets.shape[-2:]
144
+ targets = F.interpolate(targets, size=(h // 2, w // 2), mode='nearest')
145
+
146
+ # targets = rearrange(targets,'b c h w -> b h w c')
147
+
148
+ return targets
149
+
150
+ def compute_top_k(self, logits, labels, k, reduction="mean"):
151
+ _, top_ks = torch.topk(logits, k, dim=1)
152
+ if reduction == "mean":
153
+ return (top_ks == labels[:, None]).float().sum(dim=-1).mean().item()
154
+ elif reduction == "none":
155
+ return (top_ks == labels[:, None]).float().sum(dim=-1)
156
+
157
+ def on_train_epoch_start(self):
158
+ # save some memory
159
+ self.diffusion_model.model.to('cpu')
160
+
161
+ @torch.no_grad()
162
+ def write_logs(self, loss, logits, targets):
163
+ log_prefix = 'train' if self.training else 'val'
164
+ log = {}
165
+ log[f"{log_prefix}/loss"] = loss.mean()
166
+ log[f"{log_prefix}/acc@1"] = self.compute_top_k(
167
+ logits, targets, k=1, reduction="mean"
168
+ )
169
+ log[f"{log_prefix}/acc@5"] = self.compute_top_k(
170
+ logits, targets, k=5, reduction="mean"
171
+ )
172
+
173
+ self.log_dict(log, prog_bar=False, logger=True, on_step=self.training, on_epoch=True)
174
+ self.log('loss', log[f"{log_prefix}/loss"], prog_bar=True, logger=False)
175
+ self.log('global_step', self.global_step, logger=False, on_epoch=False, prog_bar=True)
176
+ lr = self.optimizers().param_groups[0]['lr']
177
+ self.log('lr_abs', lr, on_step=True, logger=True, on_epoch=False, prog_bar=True)
178
+
179
+ def shared_step(self, batch, t=None):
180
+ x, *_ = self.diffusion_model.get_input(batch, k=self.diffusion_model.first_stage_key)
181
+ targets = self.get_conditioning(batch)
182
+ if targets.dim() == 4:
183
+ targets = targets.argmax(dim=1)
184
+ if t is None:
185
+ t = torch.randint(0, self.diffusion_model.num_timesteps, (x.shape[0],), device=self.device).long()
186
+ else:
187
+ t = torch.full(size=(x.shape[0],), fill_value=t, device=self.device).long()
188
+ x_noisy = self.get_x_noisy(x, t)
189
+ logits = self(x_noisy, t)
190
+
191
+ loss = F.cross_entropy(logits, targets, reduction='none')
192
+
193
+ self.write_logs(loss.detach(), logits.detach(), targets.detach())
194
+
195
+ loss = loss.mean()
196
+ return loss, logits, x_noisy, targets
197
+
198
+ def training_step(self, batch, batch_idx):
199
+ loss, *_ = self.shared_step(batch)
200
+ return loss
201
+
202
+ def reset_noise_accs(self):
203
+ self.noisy_acc = {t: {'acc@1': [], 'acc@5': []} for t in
204
+ range(0, self.diffusion_model.num_timesteps, self.diffusion_model.log_every_t)}
205
+
206
+ def on_validation_start(self):
207
+ self.reset_noise_accs()
208
+
209
+ @torch.no_grad()
210
+ def validation_step(self, batch, batch_idx):
211
+ loss, *_ = self.shared_step(batch)
212
+
213
+ for t in self.noisy_acc:
214
+ _, logits, _, targets = self.shared_step(batch, t)
215
+ self.noisy_acc[t]['acc@1'].append(self.compute_top_k(logits, targets, k=1, reduction='mean'))
216
+ self.noisy_acc[t]['acc@5'].append(self.compute_top_k(logits, targets, k=5, reduction='mean'))
217
+
218
+ return loss
219
+
220
+ def configure_optimizers(self):
221
+ optimizer = AdamW(self.model.parameters(), lr=self.learning_rate, weight_decay=self.weight_decay)
222
+
223
+ if self.use_scheduler:
224
+ scheduler = instantiate_from_config(self.scheduler_config)
225
+
226
+ print("Setting up LambdaLR scheduler...")
227
+ scheduler = [
228
+ {
229
+ 'scheduler': LambdaLR(optimizer, lr_lambda=scheduler.schedule),
230
+ 'interval': 'step',
231
+ 'frequency': 1
232
+ }]
233
+ return [optimizer], scheduler
234
+
235
+ return optimizer
236
+
237
+ @torch.no_grad()
238
+ def log_images(self, batch, N=8, *args, **kwargs):
239
+ log = dict()
240
+ x = self.get_input(batch, self.diffusion_model.first_stage_key)
241
+ log['inputs'] = x
242
+
243
+ y = self.get_conditioning(batch)
244
+
245
+ if self.label_key == 'class_label':
246
+ y = log_txt_as_img((x.shape[2], x.shape[3]), batch["human_label"])
247
+ log['labels'] = y
248
+
249
+ if ismap(y):
250
+ log['labels'] = self.diffusion_model.to_rgb(y)
251
+
252
+ for step in range(self.log_steps):
253
+ current_time = step * self.log_time_interval
254
+
255
+ _, logits, x_noisy, _ = self.shared_step(batch, t=current_time)
256
+
257
+ log[f'inputs@t{current_time}'] = x_noisy
258
+
259
+ pred = F.one_hot(logits.argmax(dim=1), num_classes=self.num_classes)
260
+ pred = rearrange(pred, 'b h w c -> b c h w')
261
+
262
+ log[f'pred@t{current_time}'] = self.diffusion_model.to_rgb(pred)
263
+
264
+ for key in log:
265
+ log[key] = log[key][:N]
266
+
267
+ return log
@@ -80,7 +80,6 @@ class DDPM(pl.LightningModule):
80
80
  super().__init__()
81
81
  assert parameterization in ["eps", "x0"], 'currently only supporting "eps" and "x0"'
82
82
  self.parameterization = parameterization
83
- # print(f"{self.__class__.__name__}: Running in {self.parameterization}-prediction mode")
84
83
  self.cond_stage_model = None
85
84
  self.clip_denoised = clip_denoised
86
85
  self.log_every_t = log_every_t
@@ -1636,7 +1635,7 @@ def log_local(save_dir,
1636
1635
 
1637
1636
  if __name__ == '__main__':
1638
1637
  from omegaconf import OmegaConf
1639
- from ldm.util import instantiate_from_config
1638
+ from libcom.controllable_composition.source.ControlCom.ldm.util import instantiate_from_config
1640
1639
  import os, torchvision
1641
1640
  from PIL import Image
1642
1641
  import shutil
@@ -8,7 +8,7 @@ from einops import rearrange, repeat
8
8
  import os, sys
9
9
  proj_dir = os.path.dirname(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
10
10
  sys.path.insert(0, proj_dir)
11
- from ldm.modules.diffusionmodules.util import checkpoint
11
+ from libcom.controllable_composition.source.ControlCom.ldm.modules.diffusionmodules.util import checkpoint
12
12
  from torchvision.ops import roi_align
13
13
 
14
14
  def exists(val):
@@ -11,7 +11,7 @@ import torch.nn.functional as F
11
11
  import os, sys
12
12
  proj_dir = os.path.dirname(os.path.dirname(os.path.dirname(os.path.dirname(os.path.abspath(__file__)))))
13
13
  sys.path.insert(0, proj_dir)
14
- from ldm.modules.diffusionmodules.util import (
14
+ from libcom.controllable_composition.source.ControlCom.ldm.modules.diffusionmodules.util import (
15
15
  checkpoint,
16
16
  conv_nd,
17
17
  linear,
@@ -1141,7 +1141,7 @@ if __name__ == '__main__':
1141
1141
  import torch
1142
1142
  device = torch.device("cuda:0")
1143
1143
  from omegaconf import OmegaConf
1144
- from ldm.util import instantiate_from_config
1144
+ from libcom.controllable_composition.source.ControlCom.ldm.util import instantiate_from_config
1145
1145
  cfg_path = os.path.join(proj_dir, 'configs/finetune_paint.yaml')
1146
1146
  configs = OmegaConf.load(cfg_path).model.params
1147
1147
  model = instantiate_from_config(configs.unet_config).to(device)
@@ -1,12 +1,11 @@
1
1
  import torch
2
2
  import torch.nn as nn
3
3
  from functools import partial
4
- from einops import rearrange, repeat
5
- from transformers import CLIPTokenizer, CLIPTextModel,CLIPVisionModel,CLIPModel,CLIPVisionModelWithProjection
4
+ from transformers import CLIPVisionModel
6
5
  import os,sys
7
6
  sys.path.insert(0, os.path.dirname(os.path.dirname(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))))
8
- from ldm.modules.x_transformer import Encoder, TransformerWrapper # TODO: can we directly rely on lucidrains code and simply add this as a reuirement? --> test
9
- from ldm.modules.encoders.xf import LayerNorm, Transformer
7
+ from libcom.controllable_composition.source.ControlCom.ldm.modules.x_transformer import Encoder, TransformerWrapper # TODO: can we directly rely on lucidrains code and simply add this as a reuirement? --> test
8
+ from libcom.controllable_composition.source.ControlCom.ldm.modules.encoders.xf import LayerNorm, Transformer
10
9
  import math
11
10
  import torch.nn.functional as F
12
11
 
@@ -217,7 +216,7 @@ class FrozenCLIPImageEmbedder(AbstractEncoder):
217
216
 
218
217
 
219
218
  if __name__ == "__main__":
220
- from ldm.util import count_params
219
+ from libcom.controllable_composition.source.ControlCom.ldm.util import count_params
221
220
  device = torch.device("cuda:0")
222
221
  model = FrozenCLIPImageEmbedder().to(device)
223
222
  count_params(model, verbose=True)
@@ -6,8 +6,8 @@ import torch.nn.functional as F
6
6
  from torch import nn, einsum
7
7
  from einops import rearrange, repeat
8
8
  import os, sys
9
- from ldm.modules.diffusionmodules.util import checkpoint
10
- from ldm.modules.attention import CrossAttention, zero_module, Normalize
9
+ from libcom.controllable_composition.source.ControlCom.ldm.modules.diffusionmodules.util import checkpoint
10
+ from libcom.controllable_composition.source.ControlCom.ldm.modules.attention import CrossAttention, zero_module, Normalize
11
11
  from torchvision.ops import roi_align
12
12
 
13
13
  class FDN(nn.Module):
@@ -0,0 +1 @@
1
+ from libcom.controllable_composition.source.ControlCom.ldm.modules.losses.contperceptual import LPIPSWithDiscriminator
@@ -90,8 +90,6 @@ def get_obj_from_str(string, reload=False):
90
90
  if reload:
91
91
  module_imp = importlib.import_module(module)
92
92
  importlib.reload(module_imp)
93
- if 'ldm' in module:
94
- module = '.source.ControlCom.' + module
95
93
  return getattr(importlib.import_module(module, package='libcom.controllable_composition'), cls)
96
94
 
97
95