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.
Files changed (265) hide show
  1. {libcom-0.0.1.post10 → libcom-0.1.0}/LICENSE +0 -0
  2. {libcom-0.0.1.post10 → libcom-0.1.0}/PKG-INFO +20 -15
  3. libcom-0.1.0/README.md +80 -0
  4. {libcom-0.0.1.post10 → libcom-0.1.0}/libcom/__init__.py +2 -1
  5. {libcom-0.0.1.post10 → libcom-0.1.0}/libcom/color_transfer/__init__.py +0 -0
  6. {libcom-0.0.1.post10 → libcom-0.1.0}/libcom/color_transfer/reinhard.py +0 -0
  7. {libcom-0.0.1.post10 → libcom-0.1.0}/libcom/controllable_composition/__init__.py +0 -0
  8. {libcom-0.0.1.post10 → libcom-0.1.0}/libcom/controllable_composition/controllable_composition.py +12 -7
  9. {libcom-0.0.1.post10 → libcom-0.1.0}/libcom/controllable_composition/source/ControlCom/__init__.py +0 -0
  10. {libcom-0.0.1.post10 → libcom-0.1.0}/libcom/controllable_composition/source/ControlCom/configs/__init__.py +0 -0
  11. {libcom-0.0.1.post10 → libcom-0.1.0}/libcom/controllable_composition/source/ControlCom/configs/controlcom.yaml +6 -6
  12. {libcom-0.0.1.post10 → libcom-0.1.0}/libcom/controllable_composition/source/ControlCom/ldm/__init__.py +0 -0
  13. {libcom-0.0.1.post10 → libcom-0.1.0}/libcom/controllable_composition/source/ControlCom/ldm/data/__init__.py +0 -0
  14. {libcom-0.0.1.post10 → libcom-0.1.0}/libcom/controllable_composition/source/ControlCom/ldm/data/base.py +0 -0
  15. libcom-0.1.0/libcom/controllable_composition/source/ControlCom/ldm/data/datamodule.py +128 -0
  16. {libcom-0.0.1.post10 → libcom-0.1.0}/libcom/controllable_composition/source/ControlCom/ldm/data/open_images_control.py +0 -0
  17. {libcom-0.0.1.post10 → libcom-0.1.0}/libcom/controllable_composition/source/ControlCom/ldm/lr_scheduler.py +0 -0
  18. {libcom-0.0.1.post10 → libcom-0.1.0}/libcom/controllable_composition/source/ControlCom/ldm/models/__init__.py +0 -0
  19. {libcom-0.0.1.post10 → libcom-0.1.0}/libcom/controllable_composition/source/ControlCom/ldm/models/autoencoder.py +0 -0
  20. {libcom-0.0.1.post10 → libcom-0.1.0}/libcom/controllable_composition/source/ControlCom/ldm/models/diffusion/__init__.py +0 -0
  21. libcom-0.1.0/libcom/controllable_composition/source/ControlCom/ldm/models/diffusion/classifier.py +267 -0
  22. {libcom-0.0.1.post10 → libcom-0.1.0}/libcom/controllable_composition/source/ControlCom/ldm/models/diffusion/ddim.py +0 -0
  23. {libcom-0.0.1.post10 → libcom-0.1.0}/libcom/controllable_composition/source/ControlCom/ldm/models/diffusion/ddpm.py +1 -2
  24. {libcom-0.0.1.post10 → libcom-0.1.0}/libcom/controllable_composition/source/ControlCom/ldm/models/diffusion/plms.py +0 -0
  25. {libcom-0.0.1.post10 → libcom-0.1.0}/libcom/controllable_composition/source/ControlCom/ldm/modules/__init__.py +0 -0
  26. {libcom-0.0.1.post10 → libcom-0.1.0}/libcom/controllable_composition/source/ControlCom/ldm/modules/attention.py +1 -1
  27. {libcom-0.0.1.post10 → libcom-0.1.0}/libcom/controllable_composition/source/ControlCom/ldm/modules/diffusionmodules/__init__.py +0 -0
  28. {libcom-0.0.1.post10 → libcom-0.1.0}/libcom/controllable_composition/source/ControlCom/ldm/modules/diffusionmodules/model.py +0 -0
  29. {libcom-0.0.1.post10 → libcom-0.1.0}/libcom/controllable_composition/source/ControlCom/ldm/modules/diffusionmodules/openaimodel.py +2 -2
  30. {libcom-0.0.1.post10 → libcom-0.1.0}/libcom/controllable_composition/source/ControlCom/ldm/modules/diffusionmodules/util.py +0 -0
  31. {libcom-0.0.1.post10 → libcom-0.1.0}/libcom/controllable_composition/source/ControlCom/ldm/modules/distributions/__init__.py +0 -0
  32. {libcom-0.0.1.post10 → libcom-0.1.0}/libcom/controllable_composition/source/ControlCom/ldm/modules/distributions/distributions.py +0 -0
  33. {libcom-0.0.1.post10 → libcom-0.1.0}/libcom/controllable_composition/source/ControlCom/ldm/modules/ema.py +0 -0
  34. {libcom-0.0.1.post10 → libcom-0.1.0}/libcom/controllable_composition/source/ControlCom/ldm/modules/encoders/__init__.py +0 -0
  35. {libcom-0.0.1.post10 → libcom-0.1.0}/libcom/controllable_composition/source/ControlCom/ldm/modules/encoders/modules.py +4 -5
  36. {libcom-0.0.1.post10 → libcom-0.1.0}/libcom/controllable_composition/source/ControlCom/ldm/modules/encoders/xf.py +0 -0
  37. {libcom-0.0.1.post10 → libcom-0.1.0}/libcom/controllable_composition/source/ControlCom/ldm/modules/local_module.py +2 -2
  38. libcom-0.1.0/libcom/controllable_composition/source/ControlCom/ldm/modules/losses/__init__.py +1 -0
  39. {libcom-0.0.1.post10 → libcom-0.1.0}/libcom/controllable_composition/source/ControlCom/ldm/modules/losses/contperceptual.py +0 -0
  40. {libcom-0.0.1.post10 → libcom-0.1.0}/libcom/controllable_composition/source/ControlCom/ldm/modules/losses/vqperceptual.py +0 -0
  41. {libcom-0.0.1.post10 → libcom-0.1.0}/libcom/controllable_composition/source/ControlCom/ldm/modules/x_transformer.py +0 -0
  42. {libcom-0.0.1.post10 → libcom-0.1.0}/libcom/controllable_composition/source/ControlCom/ldm/util.py +0 -2
  43. {libcom-0.0.1.post10 → libcom-0.1.0}/libcom/controllable_composition/source/__init__.py +0 -0
  44. {libcom-0.0.1.post10 → libcom-0.1.0}/libcom/fopa_heat_map/__init__.py +0 -0
  45. {libcom-0.0.1.post10 → libcom-0.1.0}/libcom/fopa_heat_map/fopa_heat_map.py +3 -2
  46. {libcom-0.0.1.post10 → libcom-0.1.0}/libcom/fopa_heat_map/source/__init__.py +0 -0
  47. {libcom-0.0.1.post10 → libcom-0.1.0}/libcom/fopa_heat_map/source/backbone/ResNet.py +0 -0
  48. {libcom-0.0.1.post10 → libcom-0.1.0}/libcom/fopa_heat_map/source/backbone/__init__.py +0 -0
  49. {libcom-0.0.1.post10 → libcom-0.1.0}/libcom/fopa_heat_map/source/data/OBdataset.py +0 -0
  50. {libcom-0.0.1.post10 → libcom-0.1.0}/libcom/fopa_heat_map/source/data/__init__.py +0 -0
  51. {libcom-0.0.1.post10 → libcom-0.1.0}/libcom/fopa_heat_map/source/data/all_transforms.py +0 -0
  52. {libcom-0.0.1.post10 → libcom-0.1.0}/libcom/fopa_heat_map/source/network/BaseBlocks.py +0 -0
  53. {libcom-0.0.1.post10 → libcom-0.1.0}/libcom/fopa_heat_map/source/network/DynamicModules.py +0 -0
  54. {libcom-0.0.1.post10 → libcom-0.1.0}/libcom/fopa_heat_map/source/network/ObPlaNet_simple.py +0 -0
  55. {libcom-0.0.1.post10 → libcom-0.1.0}/libcom/fopa_heat_map/source/network/__init__.py +0 -0
  56. {libcom-0.0.1.post10 → libcom-0.1.0}/libcom/fopa_heat_map/source/network/tensor_ops.py +0 -0
  57. {libcom-0.0.1.post10 → libcom-0.1.0}/libcom/fopa_heat_map/source/prepare_multi_fg_scales.py +0 -0
  58. {libcom-0.0.1.post10 → libcom-0.1.0}/libcom/fos_score/__init__.py +0 -0
  59. {libcom-0.0.1.post10 → libcom-0.1.0}/libcom/fos_score/fos_score_prediction.py +2 -2
  60. {libcom-0.0.1.post10 → libcom-0.1.0}/libcom/fos_score/source/__init__.py +0 -0
  61. {libcom-0.0.1.post10 → libcom-0.1.0}/libcom/fos_score/source/config/__init__.py +0 -0
  62. {libcom-0.0.1.post10 → libcom-0.1.0}/libcom/fos_score/source/config/config.py +0 -0
  63. {libcom-0.0.1.post10 → libcom-0.1.0}/libcom/fos_score/source/config/config.sfosd.yaml +0 -0
  64. {libcom-0.0.1.post10 → libcom-0.1.0}/libcom/fos_score/source/config/config_rfosd.yaml +0 -0
  65. {libcom-0.0.1.post10 → libcom-0.1.0}/libcom/fos_score/source/loss_function.py +0 -0
  66. {libcom-0.0.1.post10 → libcom-0.1.0}/libcom/fos_score/source/networks.py +0 -0
  67. {libcom-0.0.1.post10 → libcom-0.1.0}/libcom/harmony_score/__init__.py +0 -0
  68. {libcom-0.0.1.post10 → libcom-0.1.0}/libcom/harmony_score/harmony_score_prediction.py +2 -1
  69. {libcom-0.0.1.post10 → libcom-0.1.0}/libcom/harmony_score/source/__init__.py +0 -0
  70. {libcom-0.0.1.post10 → libcom-0.1.0}/libcom/harmony_score/source/bargainnet.py +0 -0
  71. {libcom-0.0.1.post10 → libcom-0.1.0}/libcom/image_harmonization/__init__.py +0 -0
  72. {libcom-0.0.1.post10 → libcom-0.1.0}/libcom/image_harmonization/image_harmonization.py +4 -3
  73. {libcom-0.0.1.post10 → libcom-0.1.0}/libcom/image_harmonization/source/__init__.py +0 -0
  74. {libcom-0.0.1.post10 → libcom-0.1.0}/libcom/image_harmonization/source/cdt_net.py +0 -0
  75. {libcom-0.0.1.post10 → libcom-0.1.0}/libcom/image_harmonization/source/functions.py +1 -0
  76. {libcom-0.0.1.post10 → libcom-0.1.0}/libcom/image_harmonization/source/pct_net.py +0 -0
  77. {libcom-0.0.1.post10 → libcom-0.1.0}/libcom/inharmonious_region_localization/__init__.py +0 -0
  78. {libcom-0.0.1.post10 → libcom-0.1.0}/libcom/inharmonious_region_localization/inharmonious_region_localization.py +3 -2
  79. {libcom-0.0.1.post10 → libcom-0.1.0}/libcom/inharmonious_region_localization/source/__init__.py +0 -0
  80. {libcom-0.0.1.post10 → libcom-0.1.0}/libcom/inharmonious_region_localization/source/blocks.py +0 -0
  81. {libcom-0.0.1.post10 → libcom-0.1.0}/libcom/inharmonious_region_localization/source/functions.py +0 -0
  82. {libcom-0.0.1.post10 → libcom-0.1.0}/libcom/inharmonious_region_localization/source/madis_net.py +0 -0
  83. {libcom-0.0.1.post10 → libcom-0.1.0}/libcom/naive_composition/__init__.py +0 -0
  84. {libcom-0.0.1.post10 → libcom-0.1.0}/libcom/naive_composition/generate_composite_image.py +0 -0
  85. libcom-0.1.0/libcom/objectstitch/__init__.py +4 -0
  86. libcom-0.1.0/libcom/objectstitch/objectstitch.py +332 -0
  87. {libcom-0.0.1.post10/libcom/painterly_image_harmonization/source/PHDNet → libcom-0.1.0/libcom/objectstitch/source/ObjectStitch}/__init__.py +0 -0
  88. {libcom-0.0.1.post10/libcom/painterly_image_harmonization/source/PHDiffusion → libcom-0.1.0/libcom/objectstitch/source/ObjectStitch/configs}/__init__.py +0 -0
  89. libcom-0.1.0/libcom/objectstitch/source/ObjectStitch/configs/objectstitch.yaml +74 -0
  90. {libcom-0.0.1.post10/libcom/painterly_image_harmonization/source/PHDiffusion → libcom-0.1.0/libcom/objectstitch/source/ObjectStitch}/ldm/__init__.py +0 -0
  91. {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
  92. libcom-0.1.0/libcom/objectstitch/source/ObjectStitch/ldm/data/base.py +23 -0
  93. {libcom-0.0.1.post10/libcom/controllable_composition/source/ControlCom → libcom-0.1.0/libcom/objectstitch/source/ObjectStitch}/ldm/data/datamodule.py +2 -2
  94. libcom-0.1.0/libcom/objectstitch/source/ObjectStitch/ldm/data/imagenet.py +394 -0
  95. libcom-0.1.0/libcom/objectstitch/source/ObjectStitch/ldm/data/lsun.py +92 -0
  96. libcom-0.1.0/libcom/objectstitch/source/ObjectStitch/ldm/data/open_images.py +409 -0
  97. {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
  98. {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
  99. libcom-0.1.0/libcom/objectstitch/source/ObjectStitch/ldm/models/autoencoder.py +443 -0
  100. {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
  101. {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
  102. libcom-0.1.0/libcom/objectstitch/source/ObjectStitch/ldm/models/diffusion/ddim.py +263 -0
  103. libcom-0.1.0/libcom/objectstitch/source/ObjectStitch/ldm/models/diffusion/ddpm.py +1416 -0
  104. libcom-0.1.0/libcom/objectstitch/source/ObjectStitch/ldm/models/diffusion/plms.py +252 -0
  105. {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
  106. libcom-0.1.0/libcom/objectstitch/source/ObjectStitch/ldm/modules/attention.py +261 -0
  107. {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
  108. libcom-0.1.0/libcom/objectstitch/source/ObjectStitch/ldm/modules/diffusionmodules/model.py +835 -0
  109. libcom-0.1.0/libcom/objectstitch/source/ObjectStitch/ldm/modules/diffusionmodules/openaimodel.py +1108 -0
  110. libcom-0.1.0/libcom/objectstitch/source/ObjectStitch/ldm/modules/diffusionmodules/util.py +267 -0
  111. {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
  112. {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
  113. libcom-0.1.0/libcom/objectstitch/source/ObjectStitch/ldm/modules/ema.py +76 -0
  114. {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
  115. libcom-0.1.0/libcom/objectstitch/source/ObjectStitch/ldm/modules/encoders/modules.py +189 -0
  116. libcom-0.1.0/libcom/objectstitch/source/ObjectStitch/ldm/modules/encoders/xf.py +130 -0
  117. libcom-0.1.0/libcom/objectstitch/source/ObjectStitch/ldm/modules/losses/__init__.py +1 -0
  118. libcom-0.1.0/libcom/objectstitch/source/ObjectStitch/ldm/modules/losses/contperceptual.py +111 -0
  119. libcom-0.1.0/libcom/objectstitch/source/ObjectStitch/ldm/modules/losses/vqperceptual.py +167 -0
  120. libcom-0.1.0/libcom/objectstitch/source/ObjectStitch/ldm/modules/x_transformer.py +641 -0
  121. libcom-0.1.0/libcom/objectstitch/source/ObjectStitch/ldm/util.py +203 -0
  122. {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
  123. {libcom-0.0.1.post10 → libcom-0.1.0}/libcom/opa_score/__init__.py +0 -0
  124. {libcom-0.0.1.post10 → libcom-0.1.0}/libcom/opa_score/opa_score_prediction.py +2 -1
  125. {libcom-0.0.1.post10 → libcom-0.1.0}/libcom/opa_score/source/__init__.py +0 -0
  126. {libcom-0.0.1.post10 → libcom-0.1.0}/libcom/opa_score/source/object_place_net.py +0 -0
  127. {libcom-0.0.1.post10 → libcom-0.1.0}/libcom/opa_score/source/oblect_place_config.py +0 -0
  128. {libcom-0.0.1.post10 → libcom-0.1.0}/libcom/opa_score/source/resnet_4ch.py +0 -0
  129. {libcom-0.0.1.post10 → libcom-0.1.0}/libcom/painterly_image_harmonization/__init__.py +0 -0
  130. {libcom-0.0.1.post10 → libcom-0.1.0}/libcom/painterly_image_harmonization/painterly_image_harmonization.py +6 -5
  131. {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
  132. {libcom-0.0.1.post10 → libcom-0.1.0}/libcom/painterly_image_harmonization/source/PHDNet/networks.py +0 -0
  133. {libcom-0.0.1.post10 → libcom-0.1.0}/libcom/painterly_image_harmonization/source/PHDNet/phdnet.py +0 -0
  134. {libcom-0.0.1.post10 → libcom-0.1.0}/libcom/painterly_image_harmonization/source/PHDNet/phdnet_config.py +0 -0
  135. {libcom-0.0.1.post10/libcom/painterly_image_harmonization/source → libcom-0.1.0/libcom/painterly_image_harmonization/source/PHDiffusion}/__init__.py +0 -0
  136. {libcom-0.0.1.post10/libcom/shadow_generation/source → libcom-0.1.0/libcom/painterly_image_harmonization/source/PHDiffusion/ldm}/__init__.py +0 -0
  137. {libcom-0.0.1.post10 → libcom-0.1.0}/libcom/painterly_image_harmonization/source/PHDiffusion/ldm/inference_base.py +0 -0
  138. libcom-0.1.0/libcom/painterly_image_harmonization/source/PHDiffusion/ldm/lr_scheduler.py +98 -0
  139. {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
  140. {libcom-0.0.1.post10 → libcom-0.1.0}/libcom/painterly_image_harmonization/source/PHDiffusion/ldm/models/autoencoder.py +0 -0
  141. {libcom-0.0.1.post10 → libcom-0.1.0}/libcom/painterly_image_harmonization/source/PHDiffusion/ldm/models/diffusion/__init__.py +0 -0
  142. {libcom-0.0.1.post10 → libcom-0.1.0}/libcom/painterly_image_harmonization/source/PHDiffusion/ldm/models/diffusion/ddim.py +2 -2
  143. {libcom-0.0.1.post10 → libcom-0.1.0}/libcom/painterly_image_harmonization/source/PHDiffusion/ldm/models/diffusion/ddpm.py +0 -1
  144. {libcom-0.0.1.post10 → libcom-0.1.0}/libcom/painterly_image_harmonization/source/PHDiffusion/ldm/models/diffusion/dpm_solver/__init__.py +0 -0
  145. {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
  146. {libcom-0.0.1.post10 → libcom-0.1.0}/libcom/painterly_image_harmonization/source/PHDiffusion/ldm/models/diffusion/dpm_solver/sampler.py +1 -1
  147. {libcom-0.0.1.post10 → libcom-0.1.0}/libcom/painterly_image_harmonization/source/PHDiffusion/ldm/models/diffusion/plms.py +0 -0
  148. {libcom-0.0.1.post10 → libcom-0.1.0}/libcom/painterly_image_harmonization/source/PHDiffusion/ldm/models/diffusion/scheduling_pndm.py +0 -0
  149. {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
  150. {libcom-0.0.1.post10 → libcom-0.1.0}/libcom/painterly_image_harmonization/source/PHDiffusion/ldm/modules/attention.py +0 -0
  151. {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
  152. {libcom-0.0.1.post10 → libcom-0.1.0}/libcom/painterly_image_harmonization/source/PHDiffusion/ldm/modules/diffusionmodules/model.py +0 -0
  153. {libcom-0.0.1.post10 → libcom-0.1.0}/libcom/painterly_image_harmonization/source/PHDiffusion/ldm/modules/diffusionmodules/openaimodel.py +0 -0
  154. {libcom-0.0.1.post10 → libcom-0.1.0}/libcom/painterly_image_harmonization/source/PHDiffusion/ldm/modules/diffusionmodules/util.py +0 -0
  155. {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
  156. {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
  157. {libcom-0.0.1.post10 → libcom-0.1.0}/libcom/painterly_image_harmonization/source/PHDiffusion/ldm/modules/ema.py +0 -0
  158. {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
  159. {libcom-0.0.1.post10 → libcom-0.1.0}/libcom/painterly_image_harmonization/source/PHDiffusion/ldm/modules/encoders/adapter.py +0 -0
  160. {libcom-0.0.1.post10 → libcom-0.1.0}/libcom/painterly_image_harmonization/source/PHDiffusion/ldm/modules/encoders/modules.py +0 -0
  161. {libcom-0.0.1.post10 → libcom-0.1.0}/libcom/painterly_image_harmonization/source/PHDiffusion/ldm/modules/extra_condition/__init__.py +0 -0
  162. {libcom-0.0.1.post10 → libcom-0.1.0}/libcom/painterly_image_harmonization/source/PHDiffusion/ldm/modules/extra_condition/api.py +0 -0
  163. {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
  164. {libcom-0.0.1.post10 → libcom-0.1.0}/libcom/painterly_image_harmonization/source/PHDiffusion/ldm/modules/extra_condition/midas/api.py +0 -0
  165. {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
  166. {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
  167. {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
  168. {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
  169. {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
  170. {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
  171. {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
  172. {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
  173. {libcom-0.0.1.post10 → libcom-0.1.0}/libcom/painterly_image_harmonization/source/PHDiffusion/ldm/modules/extra_condition/midas/utils.py +0 -0
  174. {libcom-0.0.1.post10 → libcom-0.1.0}/libcom/painterly_image_harmonization/source/PHDiffusion/ldm/modules/extra_condition/model_edge.py +0 -0
  175. {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
  176. {libcom-0.0.1.post10 → libcom-0.1.0}/libcom/painterly_image_harmonization/source/PHDiffusion/ldm/modules/extra_condition/openpose/api.py +0 -0
  177. {libcom-0.0.1.post10 → libcom-0.1.0}/libcom/painterly_image_harmonization/source/PHDiffusion/ldm/modules/extra_condition/openpose/body.py +0 -0
  178. {libcom-0.0.1.post10 → libcom-0.1.0}/libcom/painterly_image_harmonization/source/PHDiffusion/ldm/modules/extra_condition/openpose/hand.py +0 -0
  179. {libcom-0.0.1.post10 → libcom-0.1.0}/libcom/painterly_image_harmonization/source/PHDiffusion/ldm/modules/extra_condition/openpose/model.py +0 -0
  180. {libcom-0.0.1.post10 → libcom-0.1.0}/libcom/painterly_image_harmonization/source/PHDiffusion/ldm/modules/extra_condition/openpose/util.py +0 -0
  181. {libcom-0.0.1.post10 → libcom-0.1.0}/libcom/painterly_image_harmonization/source/PHDiffusion/ldm/modules/extra_condition/utils.py +0 -0
  182. {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
  183. {libcom-0.0.1.post10 → libcom-0.1.0}/libcom/painterly_image_harmonization/source/PHDiffusion/ldm/modules/fusion/dual_encoder_fusion.py +0 -0
  184. {libcom-0.0.1.post10 → libcom-0.1.0}/libcom/painterly_image_harmonization/source/PHDiffusion/ldm/modules/image_degradation/__init__.py +0 -0
  185. {libcom-0.0.1.post10 → libcom-0.1.0}/libcom/painterly_image_harmonization/source/PHDiffusion/ldm/modules/image_degradation/bsrgan.py +0 -0
  186. {libcom-0.0.1.post10 → libcom-0.1.0}/libcom/painterly_image_harmonization/source/PHDiffusion/ldm/modules/image_degradation/bsrgan_light.py +0 -0
  187. {libcom-0.0.1.post10 → libcom-0.1.0}/libcom/painterly_image_harmonization/source/PHDiffusion/ldm/modules/image_degradation/utils_image.py +0 -0
  188. {libcom-0.0.1.post10 → libcom-0.1.0}/libcom/painterly_image_harmonization/source/PHDiffusion/ldm/util.py +1 -5
  189. {libcom-0.0.1.post10 → libcom-0.1.0}/libcom/painterly_image_harmonization/source/PHDiffusion/stable_diffusion.yaml +5 -5
  190. {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
  191. {libcom-0.0.1.post10 → libcom-0.1.0}/libcom/shadow_generation/__init__.py +0 -0
  192. {libcom-0.0.1.post10 → libcom-0.1.0}/libcom/shadow_generation/shadow_generation.py +59 -29
  193. {libcom-0.0.1.post10 → libcom-0.1.0}/libcom/shadow_generation/source/PostProcessModel.py +10 -24
  194. libcom-0.1.0/libcom/shadow_generation/source/Shadow_generation.py +217 -0
  195. {libcom-0.0.1.post10/libcom/shadow_generation/source/ldm/modules/midas → libcom-0.1.0/libcom/shadow_generation/source}/__init__.py +0 -0
  196. {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
  197. libcom-0.1.0/libcom/shadow_generation/source/cldm/base_network.py +166 -0
  198. {libcom-0.0.1.post10 → libcom-0.1.0}/libcom/shadow_generation/source/cldm/cldm.py +153 -116
  199. {libcom-0.0.1.post10 → libcom-0.1.0}/libcom/shadow_generation/source/cldm/ddim_hacked.py +2 -2
  200. {libcom-0.0.1.post10 → libcom-0.1.0}/libcom/shadow_generation/source/cldm/hack.py +0 -0
  201. {libcom-0.0.1.post10 → libcom-0.1.0}/libcom/shadow_generation/source/cldm/logger.py +0 -0
  202. {libcom-0.0.1.post10 → libcom-0.1.0}/libcom/shadow_generation/source/cldm/model.py +4 -4
  203. {libcom-0.0.1.post10 → libcom-0.1.0}/libcom/shadow_generation/source/cldm_v15.yaml +1 -1
  204. {libcom-0.0.1.post10/libcom/shadow_generation/source/sampler → libcom-0.1.0/libcom/shadow_generation/source/ldm}/__init__.py +0 -0
  205. {libcom-0.0.1.post10/libcom/utils → libcom-0.1.0/libcom/shadow_generation/source/ldm/data}/__init__.py +0 -0
  206. {libcom-0.0.1.post10 → libcom-0.1.0}/libcom/shadow_generation/source/ldm/data/util.py +0 -0
  207. libcom-0.1.0/libcom/shadow_generation/source/ldm/models/__init__.py +0 -0
  208. {libcom-0.0.1.post10 → libcom-0.1.0}/libcom/shadow_generation/source/ldm/models/autoencoder.py +4 -4
  209. libcom-0.1.0/libcom/shadow_generation/source/ldm/models/diffusion/__init__.py +0 -0
  210. libcom-0.1.0/libcom/shadow_generation/source/ldm/models/diffusion/attention_processor.py +188 -0
  211. {libcom-0.0.1.post10 → libcom-0.1.0}/libcom/shadow_generation/source/ldm/models/diffusion/ddim.py +13 -9
  212. {libcom-0.0.1.post10 → libcom-0.1.0}/libcom/shadow_generation/source/ldm/models/diffusion/ddpm.py +126 -60
  213. {libcom-0.0.1.post10 → libcom-0.1.0}/libcom/shadow_generation/source/ldm/models/diffusion/dpm_solver/__init__.py +0 -0
  214. {libcom-0.0.1.post10 → libcom-0.1.0}/libcom/shadow_generation/source/ldm/models/diffusion/dpm_solver/dpm_solver.py +0 -0
  215. {libcom-0.0.1.post10 → libcom-0.1.0}/libcom/shadow_generation/source/ldm/models/diffusion/dpm_solver/sampler.py +0 -0
  216. libcom-0.1.0/libcom/shadow_generation/source/ldm/models/diffusion/ip_adapter.py +57 -0
  217. {libcom-0.0.1.post10 → libcom-0.1.0}/libcom/shadow_generation/source/ldm/models/diffusion/plms.py +2 -2
  218. {libcom-0.0.1.post10 → libcom-0.1.0}/libcom/shadow_generation/source/ldm/models/diffusion/sampling_util.py +0 -0
  219. libcom-0.1.0/libcom/shadow_generation/source/ldm/models/mask_predictor/__init__.py +0 -0
  220. {libcom-0.0.1.post10 → libcom-0.1.0}/libcom/shadow_generation/source/ldm/models/mask_predictor/mask_predictor.py +0 -0
  221. libcom-0.1.0/libcom/shadow_generation/source/ldm/modules/__init__.py +0 -0
  222. {libcom-0.0.1.post10 → libcom-0.1.0}/libcom/shadow_generation/source/ldm/modules/attention.py +1 -1
  223. libcom-0.1.0/libcom/shadow_generation/source/ldm/modules/diffusionmodules/__init__.py +0 -0
  224. {libcom-0.0.1.post10 → libcom-0.1.0}/libcom/shadow_generation/source/ldm/modules/diffusionmodules/model.py +6 -1
  225. {libcom-0.0.1.post10 → libcom-0.1.0}/libcom/shadow_generation/source/ldm/modules/diffusionmodules/openaimodel.py +33 -40
  226. {libcom-0.0.1.post10 → libcom-0.1.0}/libcom/shadow_generation/source/ldm/modules/diffusionmodules/upscaling.py +2 -2
  227. {libcom-0.0.1.post10 → libcom-0.1.0}/libcom/shadow_generation/source/ldm/modules/diffusionmodules/util.py +1 -1
  228. libcom-0.1.0/libcom/shadow_generation/source/ldm/modules/distributions/__init__.py +0 -0
  229. libcom-0.1.0/libcom/shadow_generation/source/ldm/modules/distributions/distributions.py +92 -0
  230. {libcom-0.0.1.post10 → libcom-0.1.0}/libcom/shadow_generation/source/ldm/modules/ema.py +0 -0
  231. libcom-0.1.0/libcom/shadow_generation/source/ldm/modules/encoders/__init__.py +0 -0
  232. {libcom-0.0.1.post10 → libcom-0.1.0}/libcom/shadow_generation/source/ldm/modules/encoders/modules.py +2 -1
  233. {libcom-0.0.1.post10 → libcom-0.1.0}/libcom/shadow_generation/source/ldm/modules/image_degradation/__init__.py +0 -0
  234. {libcom-0.0.1.post10 → libcom-0.1.0}/libcom/shadow_generation/source/ldm/modules/image_degradation/bsrgan.py +1 -1
  235. {libcom-0.0.1.post10 → libcom-0.1.0}/libcom/shadow_generation/source/ldm/modules/image_degradation/bsrgan_light.py +1 -1
  236. {libcom-0.0.1.post10 → libcom-0.1.0}/libcom/shadow_generation/source/ldm/modules/image_degradation/utils_image.py +0 -0
  237. libcom-0.1.0/libcom/shadow_generation/source/ldm/modules/midas/__init__.py +0 -0
  238. {libcom-0.0.1.post10 → libcom-0.1.0}/libcom/shadow_generation/source/ldm/modules/midas/api.py +4 -4
  239. libcom-0.1.0/libcom/shadow_generation/source/ldm/modules/midas/midas/__init__.py +0 -0
  240. {libcom-0.0.1.post10 → libcom-0.1.0}/libcom/shadow_generation/source/ldm/modules/midas/midas/base_model.py +0 -0
  241. {libcom-0.0.1.post10 → libcom-0.1.0}/libcom/shadow_generation/source/ldm/modules/midas/midas/blocks.py +0 -0
  242. {libcom-0.0.1.post10 → libcom-0.1.0}/libcom/shadow_generation/source/ldm/modules/midas/midas/dpt_depth.py +0 -0
  243. {libcom-0.0.1.post10 → libcom-0.1.0}/libcom/shadow_generation/source/ldm/modules/midas/midas/midas_net.py +0 -0
  244. {libcom-0.0.1.post10 → libcom-0.1.0}/libcom/shadow_generation/source/ldm/modules/midas/midas/midas_net_custom.py +0 -0
  245. {libcom-0.0.1.post10 → libcom-0.1.0}/libcom/shadow_generation/source/ldm/modules/midas/midas/transforms.py +0 -0
  246. {libcom-0.0.1.post10 → libcom-0.1.0}/libcom/shadow_generation/source/ldm/modules/midas/midas/vit.py +0 -0
  247. {libcom-0.0.1.post10 → libcom-0.1.0}/libcom/shadow_generation/source/ldm/modules/midas/utils.py +0 -0
  248. {libcom-0.0.1.post10 → libcom-0.1.0}/libcom/shadow_generation/source/ldm/util.py +2 -0
  249. libcom-0.1.0/libcom/shadow_generation/source/sampler/__init__.py +0 -0
  250. {libcom-0.0.1.post10 → libcom-0.1.0}/libcom/shadow_generation/source/sampler/pndm.py +0 -0
  251. {libcom-0.0.1.post10 → libcom-0.1.0}/libcom/shadow_generation/source/sampler/scheduling_pndm.py +0 -0
  252. libcom-0.1.0/libcom/shadow_generation/source/tool_add_control.py +49 -0
  253. libcom-0.1.0/libcom/utils/__init__.py +0 -0
  254. {libcom-0.0.1.post10 → libcom-0.1.0}/libcom/utils/environment.py +0 -0
  255. {libcom-0.0.1.post10 → libcom-0.1.0}/libcom/utils/model_download.py +0 -0
  256. {libcom-0.0.1.post10 → libcom-0.1.0}/libcom/utils/process_image.py +0 -0
  257. {libcom-0.0.1.post10 → libcom-0.1.0}/libcom.egg-info/PKG-INFO +20 -15
  258. {libcom-0.0.1.post10 → libcom-0.1.0}/libcom.egg-info/SOURCES.txt +45 -2
  259. {libcom-0.0.1.post10 → libcom-0.1.0}/libcom.egg-info/dependency_links.txt +0 -0
  260. {libcom-0.0.1.post10 → libcom-0.1.0}/libcom.egg-info/requires.txt +2 -0
  261. {libcom-0.0.1.post10 → libcom-0.1.0}/libcom.egg-info/top_level.txt +0 -0
  262. {libcom-0.0.1.post10 → libcom-0.1.0}/setup.cfg +0 -0
  263. {libcom-0.0.1.post10 → libcom-0.1.0}/setup.py +1 -1
  264. libcom-0.0.1.post10/README.md +0 -75
  265. 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.0.1.post10
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
  [![Downloads](https://static.pepy.tech/badge/libcom)](https://pepy.tech/project/libcom)
32
32
  [![Hits](https://hits.sh/github.com/bcmi/libcom.svg?label=views)](https://hits.sh/github.com/bcmi/libcom/)
33
33
  [![Static Badge](https://img.shields.io/badge/Image%20Composition%20Demo-Green)](https://bcmi.sjtu.edu.cn/home/niuli/demo_image_composition/)
34
+ [![Static Badge](https://img.shields.io/badge/Resources-Awesome-green?style=flat&label=Resources)](https://github.com/bcmi/Awesome-Image-Composition)
34
35
  [![Static Badge](https://img.shields.io/badge/survey-arxiv%3A2106.14490-red)](https://arxiv.org/pdf/2106.14490.pdf)
35
- [![GitHub](https://img.shields.io/github/license/bcmi/libcom)](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** evaluates the rationality of foreground object placement in a composite image.
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
- - **ControlComModel** is a generative image composition model, which unifies image blending and image harmonization in one diffusion model.
61
- - **ShadowGenerationModel** generates plausible shadow for the inserted object in a composite image.
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
+ [![PyPI](https://img.shields.io/pypi/v/libcom)](https://pypi.org/project/libcom)
12
+ [![Downloads](https://static.pepy.tech/badge/libcom)](https://pepy.tech/project/libcom)
13
+ [![Hits](https://hits.sh/github.com/bcmi/libcom.svg?label=views)](https://hits.sh/github.com/bcmi/libcom/)
14
+ [![Static Badge](https://img.shields.io/badge/Image%20Composition%20Demo-Green)](https://bcmi.sjtu.edu.cn/home/niuli/demo_image_composition/)
15
+ [![Static Badge](https://img.shields.io/badge/Resources-Awesome-green?style=flat&label=Resources)](https://github.com/bcmi/Awesome-Image-Composition)
16
+ [![Static Badge](https://img.shields.io/badge/survey-arxiv%3A2106.14490-red)](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
  ]
@@ -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()
@@ -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.
@@ -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
+