libcom 0.1.8__py3-none-any.whl

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 (310) hide show
  1. libcom/__init__.py +23 -0
  2. libcom/color_transfer/__init__.py +3 -0
  3. libcom/color_transfer/reinhard.py +57 -0
  4. libcom/fopa_heat_map/__init__.py +4 -0
  5. libcom/fopa_heat_map/fopa_heat_map.py +212 -0
  6. libcom/fopa_heat_map/source/__init__.py +0 -0
  7. libcom/fopa_heat_map/source/backbone/ResNet.py +229 -0
  8. libcom/fopa_heat_map/source/backbone/__init__.py +0 -0
  9. libcom/fopa_heat_map/source/data/OBdataset.py +292 -0
  10. libcom/fopa_heat_map/source/data/__init__.py +0 -0
  11. libcom/fopa_heat_map/source/data/all_transforms.py +25 -0
  12. libcom/fopa_heat_map/source/network/BaseBlocks.py +26 -0
  13. libcom/fopa_heat_map/source/network/DynamicModules.py +43 -0
  14. libcom/fopa_heat_map/source/network/ObPlaNet_simple.py +112 -0
  15. libcom/fopa_heat_map/source/network/__init__.py +1 -0
  16. libcom/fopa_heat_map/source/network/tensor_ops.py +37 -0
  17. libcom/fopa_heat_map/source/prepare_multi_fg_scales.py +85 -0
  18. libcom/fos_score/__init__.py +4 -0
  19. libcom/fos_score/fos_score_prediction.py +218 -0
  20. libcom/fos_score/source/__init__.py +0 -0
  21. libcom/fos_score/source/config/__init__.py +1 -0
  22. libcom/fos_score/source/config/config.py +68 -0
  23. libcom/fos_score/source/config/config.sfosd.yaml +43 -0
  24. libcom/fos_score/source/config/config_rfosd.yaml +43 -0
  25. libcom/fos_score/source/loss_function.py +118 -0
  26. libcom/fos_score/source/networks.py +355 -0
  27. libcom/harmony_score/__init__.py +3 -0
  28. libcom/harmony_score/harmony_score_prediction.py +119 -0
  29. libcom/harmony_score/source/__init__.py +0 -0
  30. libcom/harmony_score/source/bargainnet.py +226 -0
  31. libcom/image_harmonization/__init__.py +4 -0
  32. libcom/image_harmonization/image_harmonization.py +193 -0
  33. libcom/image_harmonization/source/__init__.py +0 -0
  34. libcom/image_harmonization/source/functions.py +747 -0
  35. libcom/image_harmonization/source/pct_net.py +85 -0
  36. libcom/image_harmonization/source/src/__init__.py +0 -0
  37. libcom/image_harmonization/source/src/lbm/__init__.py +0 -0
  38. libcom/image_harmonization/source/src/lbm/config.py +141 -0
  39. libcom/image_harmonization/source/src/lbm/data/__init__.py +62 -0
  40. libcom/image_harmonization/source/src/lbm/data/datasets/__init__.py +9 -0
  41. libcom/image_harmonization/source/src/lbm/data/datasets/collation_fn.py +41 -0
  42. libcom/image_harmonization/source/src/lbm/data/datasets/dataset.py +243 -0
  43. libcom/image_harmonization/source/src/lbm/data/datasets/datasets_config.py +42 -0
  44. libcom/image_harmonization/source/src/lbm/data/filters/__init__.py +12 -0
  45. libcom/image_harmonization/source/src/lbm/data/filters/base.py +21 -0
  46. libcom/image_harmonization/source/src/lbm/data/filters/filter_wrapper.py +36 -0
  47. libcom/image_harmonization/source/src/lbm/data/filters/filters.py +33 -0
  48. libcom/image_harmonization/source/src/lbm/data/filters/filters_config.py +32 -0
  49. libcom/image_harmonization/source/src/lbm/data/mappers/__init__.py +19 -0
  50. libcom/image_harmonization/source/src/lbm/data/mappers/base.py +26 -0
  51. libcom/image_harmonization/source/src/lbm/data/mappers/mappers.py +135 -0
  52. libcom/image_harmonization/source/src/lbm/data/mappers/mappers_config.py +109 -0
  53. libcom/image_harmonization/source/src/lbm/data/mappers/mappers_wrapper.py +31 -0
  54. libcom/image_harmonization/source/src/lbm/inference/__init__.py +4 -0
  55. libcom/image_harmonization/source/src/lbm/inference/inference.py +70 -0
  56. libcom/image_harmonization/source/src/lbm/inference/utils.py +222 -0
  57. libcom/image_harmonization/source/src/lbm/models/__init__.py +0 -0
  58. libcom/image_harmonization/source/src/lbm/models/base/__init__.py +4 -0
  59. libcom/image_harmonization/source/src/lbm/models/base/base_model.py +66 -0
  60. libcom/image_harmonization/source/src/lbm/models/base/model_config.py +8 -0
  61. libcom/image_harmonization/source/src/lbm/models/embedders/__init__.py +4 -0
  62. libcom/image_harmonization/source/src/lbm/models/embedders/base/__init__.py +4 -0
  63. libcom/image_harmonization/source/src/lbm/models/embedders/base/base_conditioner.py +60 -0
  64. libcom/image_harmonization/source/src/lbm/models/embedders/base/base_conditioner_config.py +27 -0
  65. libcom/image_harmonization/source/src/lbm/models/embedders/conditioners_wrapper.py +114 -0
  66. libcom/image_harmonization/source/src/lbm/models/embedders/latents_concat/__init__.py +4 -0
  67. libcom/image_harmonization/source/src/lbm/models/embedders/latents_concat/latents_concat_embedder_config.py +31 -0
  68. libcom/image_harmonization/source/src/lbm/models/embedders/latents_concat/latents_concat_embedder_model.py +80 -0
  69. libcom/image_harmonization/source/src/lbm/models/lbm/__init__.py +4 -0
  70. libcom/image_harmonization/source/src/lbm/models/lbm/lbm_config.py +101 -0
  71. libcom/image_harmonization/source/src/lbm/models/lbm/lbm_model.py +359 -0
  72. libcom/image_harmonization/source/src/lbm/models/unets/__init__.py +14 -0
  73. libcom/image_harmonization/source/src/lbm/models/unets/unet.py +148 -0
  74. libcom/image_harmonization/source/src/lbm/models/utils.py +377 -0
  75. libcom/image_harmonization/source/src/lbm/models/vae/__init__.py +4 -0
  76. libcom/image_harmonization/source/src/lbm/models/vae/autoencoderKL.py +136 -0
  77. libcom/image_harmonization/source/src/lbm/models/vae/autoencoderKL_config.py +27 -0
  78. libcom/image_harmonization/source/src/lbm/trainer/__init__.py +85 -0
  79. libcom/image_harmonization/source/src/lbm/trainer/loggers.py +324 -0
  80. libcom/image_harmonization/source/src/lbm/trainer/trainer.py +199 -0
  81. libcom/image_harmonization/source/src/lbm/trainer/training_config.py +82 -0
  82. libcom/image_harmonization/source/src/lbm/trainer/utils.py +193 -0
  83. libcom/inharmonious_region_localization/__init__.py +4 -0
  84. libcom/inharmonious_region_localization/inharmonious_region_localization.py +97 -0
  85. libcom/inharmonious_region_localization/source/__init__.py +0 -0
  86. libcom/inharmonious_region_localization/source/blocks.py +368 -0
  87. libcom/inharmonious_region_localization/source/functions.py +679 -0
  88. libcom/inharmonious_region_localization/source/madis_net.py +79 -0
  89. libcom/kontext_blending_harmonization/__init__.py +3 -0
  90. libcom/kontext_blending_harmonization/kontext_blending_harmonization.py +148 -0
  91. libcom/kontext_blending_harmonization/source/__init__.py +0 -0
  92. libcom/kontext_blending_harmonization/source/pipeline.py +1135 -0
  93. libcom/naive_composition/__init__.py +3 -0
  94. libcom/naive_composition/generate_composite_image.py +116 -0
  95. libcom/opa_score/__init__.py +3 -0
  96. libcom/opa_score/opa_score_prediction.py +101 -0
  97. libcom/opa_score/source/__init__.py +3 -0
  98. libcom/opa_score/source/object_place_net.py +55 -0
  99. libcom/opa_score/source/oblect_place_config.py +66 -0
  100. libcom/opa_score/source/resnet_4ch.py +213 -0
  101. libcom/os_insert/__init__.py +3 -0
  102. libcom/os_insert/diffusers_osinsert/__init__.py +78 -0
  103. libcom/os_insert/diffusers_osinsert/_patched_pipeline_flux_fill.py +878 -0
  104. libcom/os_insert/os_insert.py +534 -0
  105. libcom/os_insert/source/__init__.py +1 -0
  106. libcom/os_insert/source/ia_utils.py +183 -0
  107. libcom/os_insert/source/insertanything_infer.py +529 -0
  108. libcom/os_insert/source/ldm/__init__.py +0 -0
  109. libcom/os_insert/source/ldm/data/__init__.py +0 -0
  110. libcom/os_insert/source/ldm/data/base.py +23 -0
  111. libcom/os_insert/source/ldm/data/datamodule.py +128 -0
  112. libcom/os_insert/source/ldm/data/imagenet.py +394 -0
  113. libcom/os_insert/source/ldm/data/lsun.py +92 -0
  114. libcom/os_insert/source/ldm/data/open_images.py +728 -0
  115. libcom/os_insert/source/ldm/lr_scheduler.py +98 -0
  116. libcom/os_insert/source/ldm/models/__init__.py +0 -0
  117. libcom/os_insert/source/ldm/models/autoencoder.py +443 -0
  118. libcom/os_insert/source/ldm/models/diffusion/__init__.py +0 -0
  119. libcom/os_insert/source/ldm/models/diffusion/classifier.py +267 -0
  120. libcom/os_insert/source/ldm/models/diffusion/ddim.py +263 -0
  121. libcom/os_insert/source/ldm/models/diffusion/ddpm.py +1417 -0
  122. libcom/os_insert/source/ldm/models/diffusion/plms.py +252 -0
  123. libcom/os_insert/source/ldm/modules/__init__.py +0 -0
  124. libcom/os_insert/source/ldm/modules/attention.py +261 -0
  125. libcom/os_insert/source/ldm/modules/diffusionmodules/__init__.py +0 -0
  126. libcom/os_insert/source/ldm/modules/diffusionmodules/model.py +835 -0
  127. libcom/os_insert/source/ldm/modules/diffusionmodules/openaimodel.py +1108 -0
  128. libcom/os_insert/source/ldm/modules/diffusionmodules/util.py +267 -0
  129. libcom/os_insert/source/ldm/modules/distributions/__init__.py +0 -0
  130. libcom/os_insert/source/ldm/modules/distributions/distributions.py +92 -0
  131. libcom/os_insert/source/ldm/modules/ema.py +76 -0
  132. libcom/os_insert/source/ldm/modules/encoders/__init__.py +0 -0
  133. libcom/os_insert/source/ldm/modules/encoders/modules.py +190 -0
  134. libcom/os_insert/source/ldm/modules/encoders/xf.py +130 -0
  135. libcom/os_insert/source/ldm/modules/losses/__init__.py +1 -0
  136. libcom/os_insert/source/ldm/modules/losses/contperceptual.py +111 -0
  137. libcom/os_insert/source/ldm/modules/losses/vqperceptual.py +167 -0
  138. libcom/os_insert/source/ldm/modules/x_transformer.py +641 -0
  139. libcom/os_insert/source/ldm/util.py +203 -0
  140. libcom/os_insert/source/objectstitch_data.py +66 -0
  141. libcom/os_insert/source/objectstitch_infer.py +618 -0
  142. libcom/os_insert/source/sam_on_objectstitch.py +253 -0
  143. libcom/os_insert/source/utils.py +41 -0
  144. libcom/os_insert/source/v1.yaml +108 -0
  145. libcom/painterly_image_harmonization/__init__.py +4 -0
  146. libcom/painterly_image_harmonization/painterly_image_harmonization.py +215 -0
  147. libcom/painterly_image_harmonization/source/PHDNet/__init__.py +0 -0
  148. libcom/painterly_image_harmonization/source/PHDNet/networks.py +202 -0
  149. libcom/painterly_image_harmonization/source/PHDNet/phdnet.py +47 -0
  150. libcom/painterly_image_harmonization/source/PHDNet/phdnet_config.py +18 -0
  151. libcom/painterly_image_harmonization/source/PHDiffusion/__init__.py +0 -0
  152. libcom/painterly_image_harmonization/source/PHDiffusion/ldm/__init__.py +0 -0
  153. libcom/painterly_image_harmonization/source/PHDiffusion/ldm/inference_base.py +300 -0
  154. libcom/painterly_image_harmonization/source/PHDiffusion/ldm/lr_scheduler.py +98 -0
  155. libcom/painterly_image_harmonization/source/PHDiffusion/ldm/models/__init__.py +0 -0
  156. libcom/painterly_image_harmonization/source/PHDiffusion/ldm/models/autoencoder.py +211 -0
  157. libcom/painterly_image_harmonization/source/PHDiffusion/ldm/models/diffusion/__init__.py +3 -0
  158. libcom/painterly_image_harmonization/source/PHDiffusion/ldm/models/diffusion/ddim.py +336 -0
  159. libcom/painterly_image_harmonization/source/PHDiffusion/ldm/models/diffusion/ddpm.py +1400 -0
  160. libcom/painterly_image_harmonization/source/PHDiffusion/ldm/models/diffusion/dpm_solver/__init__.py +1 -0
  161. libcom/painterly_image_harmonization/source/PHDiffusion/ldm/models/diffusion/dpm_solver/dpm_solver.py +1217 -0
  162. libcom/painterly_image_harmonization/source/PHDiffusion/ldm/models/diffusion/dpm_solver/sampler.py +87 -0
  163. libcom/painterly_image_harmonization/source/PHDiffusion/ldm/models/diffusion/plms.py +243 -0
  164. libcom/painterly_image_harmonization/source/PHDiffusion/ldm/models/diffusion/scheduling_pndm.py +518 -0
  165. libcom/painterly_image_harmonization/source/PHDiffusion/ldm/modules/__init__.py +0 -0
  166. libcom/painterly_image_harmonization/source/PHDiffusion/ldm/modules/attention.py +378 -0
  167. libcom/painterly_image_harmonization/source/PHDiffusion/ldm/modules/diffusionmodules/__init__.py +0 -0
  168. libcom/painterly_image_harmonization/source/PHDiffusion/ldm/modules/diffusionmodules/model.py +857 -0
  169. libcom/painterly_image_harmonization/source/PHDiffusion/ldm/modules/diffusionmodules/openaimodel.py +823 -0
  170. libcom/painterly_image_harmonization/source/PHDiffusion/ldm/modules/diffusionmodules/util.py +270 -0
  171. libcom/painterly_image_harmonization/source/PHDiffusion/ldm/modules/distributions/__init__.py +0 -0
  172. libcom/painterly_image_harmonization/source/PHDiffusion/ldm/modules/distributions/distributions.py +92 -0
  173. libcom/painterly_image_harmonization/source/PHDiffusion/ldm/modules/ema.py +80 -0
  174. libcom/painterly_image_harmonization/source/PHDiffusion/ldm/modules/encoders/__init__.py +0 -0
  175. libcom/painterly_image_harmonization/source/PHDiffusion/ldm/modules/encoders/adapter.py +213 -0
  176. libcom/painterly_image_harmonization/source/PHDiffusion/ldm/modules/encoders/modules.py +82 -0
  177. libcom/painterly_image_harmonization/source/PHDiffusion/ldm/modules/extra_condition/__init__.py +1 -0
  178. libcom/painterly_image_harmonization/source/PHDiffusion/ldm/modules/extra_condition/api.py +269 -0
  179. libcom/painterly_image_harmonization/source/PHDiffusion/ldm/modules/extra_condition/midas/__init__.py +0 -0
  180. libcom/painterly_image_harmonization/source/PHDiffusion/ldm/modules/extra_condition/midas/api.py +175 -0
  181. libcom/painterly_image_harmonization/source/PHDiffusion/ldm/modules/extra_condition/midas/midas/__init__.py +0 -0
  182. libcom/painterly_image_harmonization/source/PHDiffusion/ldm/modules/extra_condition/midas/midas/base_model.py +16 -0
  183. libcom/painterly_image_harmonization/source/PHDiffusion/ldm/modules/extra_condition/midas/midas/blocks.py +342 -0
  184. libcom/painterly_image_harmonization/source/PHDiffusion/ldm/modules/extra_condition/midas/midas/dpt_depth.py +109 -0
  185. libcom/painterly_image_harmonization/source/PHDiffusion/ldm/modules/extra_condition/midas/midas/midas_net.py +76 -0
  186. libcom/painterly_image_harmonization/source/PHDiffusion/ldm/modules/extra_condition/midas/midas/midas_net_custom.py +128 -0
  187. libcom/painterly_image_harmonization/source/PHDiffusion/ldm/modules/extra_condition/midas/midas/transforms.py +234 -0
  188. libcom/painterly_image_harmonization/source/PHDiffusion/ldm/modules/extra_condition/midas/midas/vit.py +491 -0
  189. libcom/painterly_image_harmonization/source/PHDiffusion/ldm/modules/extra_condition/midas/utils.py +189 -0
  190. libcom/painterly_image_harmonization/source/PHDiffusion/ldm/modules/extra_condition/model_edge.py +653 -0
  191. libcom/painterly_image_harmonization/source/PHDiffusion/ldm/modules/extra_condition/openpose/__init__.py +0 -0
  192. libcom/painterly_image_harmonization/source/PHDiffusion/ldm/modules/extra_condition/openpose/api.py +35 -0
  193. libcom/painterly_image_harmonization/source/PHDiffusion/ldm/modules/extra_condition/openpose/body.py +209 -0
  194. libcom/painterly_image_harmonization/source/PHDiffusion/ldm/modules/extra_condition/openpose/hand.py +75 -0
  195. libcom/painterly_image_harmonization/source/PHDiffusion/ldm/modules/extra_condition/openpose/model.py +178 -0
  196. libcom/painterly_image_harmonization/source/PHDiffusion/ldm/modules/extra_condition/openpose/util.py +203 -0
  197. libcom/painterly_image_harmonization/source/PHDiffusion/ldm/modules/extra_condition/utils.py +72 -0
  198. libcom/painterly_image_harmonization/source/PHDiffusion/ldm/modules/fusion/__init__.py +0 -0
  199. libcom/painterly_image_harmonization/source/PHDiffusion/ldm/modules/fusion/dual_encoder_fusion.py +93 -0
  200. libcom/painterly_image_harmonization/source/PHDiffusion/ldm/modules/image_degradation/__init__.py +2 -0
  201. libcom/painterly_image_harmonization/source/PHDiffusion/ldm/modules/image_degradation/bsrgan.py +730 -0
  202. libcom/painterly_image_harmonization/source/PHDiffusion/ldm/modules/image_degradation/bsrgan_light.py +651 -0
  203. libcom/painterly_image_harmonization/source/PHDiffusion/ldm/modules/image_degradation/utils_image.py +916 -0
  204. libcom/painterly_image_harmonization/source/PHDiffusion/ldm/util.py +200 -0
  205. libcom/painterly_image_harmonization/source/PHDiffusion/stable_diffusion.yaml +75 -0
  206. libcom/painterly_image_harmonization/source/__init__.py +0 -0
  207. libcom/reflection_generation/__init__.py +3 -0
  208. libcom/reflection_generation/reflection_generation.py +174 -0
  209. libcom/reflection_generation/source/PostProcessModel.py +513 -0
  210. libcom/reflection_generation/source/__init__.py +0 -0
  211. libcom/reflection_generation/source/cldm/__init__.py +0 -0
  212. libcom/reflection_generation/source/cldm/base_network.py +166 -0
  213. libcom/reflection_generation/source/cldm/cldm.py +509 -0
  214. libcom/reflection_generation/source/cldm/ddim_hacked.py +317 -0
  215. libcom/reflection_generation/source/cldm/hack.py +111 -0
  216. libcom/reflection_generation/source/cldm/logger.py +127 -0
  217. libcom/reflection_generation/source/cldm/model.py +26 -0
  218. libcom/reflection_generation/source/cldm_v15.yaml +81 -0
  219. libcom/reflection_generation/source/cluster_feature.py +109 -0
  220. libcom/reflection_generation/source/ldm/__init__.py +0 -0
  221. libcom/reflection_generation/source/ldm/models/__init__.py +0 -0
  222. libcom/reflection_generation/source/ldm/models/autoencoder.py +219 -0
  223. libcom/reflection_generation/source/ldm/models/diffusion/__init__.py +0 -0
  224. libcom/reflection_generation/source/ldm/models/diffusion/attention_processor.py +188 -0
  225. libcom/reflection_generation/source/ldm/models/diffusion/ddim.py +340 -0
  226. libcom/reflection_generation/source/ldm/models/diffusion/ddpm.py +1892 -0
  227. libcom/reflection_generation/source/ldm/models/diffusion/dpm_solver/__init__.py +1 -0
  228. libcom/reflection_generation/source/ldm/models/diffusion/dpm_solver/dpm_solver.py +1154 -0
  229. libcom/reflection_generation/source/ldm/models/diffusion/dpm_solver/sampler.py +87 -0
  230. libcom/reflection_generation/source/ldm/models/diffusion/ip_adapter.py +57 -0
  231. libcom/reflection_generation/source/ldm/models/diffusion/plms.py +244 -0
  232. libcom/reflection_generation/source/ldm/models/diffusion/sampling_util.py +22 -0
  233. libcom/reflection_generation/source/ldm/modules/__init__.py +0 -0
  234. libcom/reflection_generation/source/ldm/modules/attention.py +341 -0
  235. libcom/reflection_generation/source/ldm/modules/diffusionmodules/__init__.py +0 -0
  236. libcom/reflection_generation/source/ldm/modules/diffusionmodules/model.py +852 -0
  237. libcom/reflection_generation/source/ldm/modules/diffusionmodules/openaimodel.py +786 -0
  238. libcom/reflection_generation/source/ldm/modules/diffusionmodules/upscaling.py +81 -0
  239. libcom/reflection_generation/source/ldm/modules/diffusionmodules/util.py +280 -0
  240. libcom/reflection_generation/source/ldm/modules/distributions/__init__.py +0 -0
  241. libcom/reflection_generation/source/ldm/modules/distributions/distributions.py +92 -0
  242. libcom/reflection_generation/source/ldm/modules/ema.py +80 -0
  243. libcom/reflection_generation/source/ldm/modules/encoders/__init__.py +0 -0
  244. libcom/reflection_generation/source/ldm/modules/encoders/modules.py +214 -0
  245. libcom/reflection_generation/source/ldm/modules/image_degradation/__init__.py +0 -0
  246. libcom/reflection_generation/source/ldm/modules/image_degradation/bsrgan.py +730 -0
  247. libcom/reflection_generation/source/ldm/modules/image_degradation/bsrgan_light.py +651 -0
  248. libcom/reflection_generation/source/ldm/modules/image_degradation/utils_image.py +916 -0
  249. libcom/reflection_generation/source/ldm/util.py +198 -0
  250. libcom/reflection_generation/source/local_clip.py +749 -0
  251. libcom/reflection_generation/source/tool_add_control.py +49 -0
  252. libcom/shadow_generation/__init__.py +3 -0
  253. libcom/shadow_generation/shadow_generation.py +754 -0
  254. libcom/shadow_generation/source/PostProcessModel.py +511 -0
  255. libcom/shadow_generation/source/__init__.py +0 -0
  256. libcom/shadow_generation/source/attention_processor.py +234 -0
  257. libcom/shadow_generation/source/cldm/__init__.py +0 -0
  258. libcom/shadow_generation/source/cldm/base_network.py +166 -0
  259. libcom/shadow_generation/source/cldm/cldm.py +524 -0
  260. libcom/shadow_generation/source/cldm/model.py +28 -0
  261. libcom/shadow_generation/source/ldm/__init__.py +0 -0
  262. libcom/shadow_generation/source/ldm/models/__init__.py +0 -0
  263. libcom/shadow_generation/source/ldm/models/autoencoder.py +219 -0
  264. libcom/shadow_generation/source/ldm/models/diffusion/__init__.py +0 -0
  265. libcom/shadow_generation/source/ldm/models/diffusion/attention_processor.py +188 -0
  266. libcom/shadow_generation/source/ldm/models/diffusion/ddim.py +340 -0
  267. libcom/shadow_generation/source/ldm/models/diffusion/ddpm.py +1893 -0
  268. libcom/shadow_generation/source/ldm/models/diffusion/dpm_solver/__init__.py +1 -0
  269. libcom/shadow_generation/source/ldm/models/diffusion/dpm_solver/dpm_solver.py +1154 -0
  270. libcom/shadow_generation/source/ldm/models/diffusion/dpm_solver/sampler.py +87 -0
  271. libcom/shadow_generation/source/ldm/models/diffusion/ip_adapter.py +57 -0
  272. libcom/shadow_generation/source/ldm/models/diffusion/plms.py +244 -0
  273. libcom/shadow_generation/source/ldm/models/diffusion/sampling_util.py +22 -0
  274. libcom/shadow_generation/source/ldm/modules/__init__.py +0 -0
  275. libcom/shadow_generation/source/ldm/modules/attention.py +341 -0
  276. libcom/shadow_generation/source/ldm/modules/diffusionmodules/__init__.py +0 -0
  277. libcom/shadow_generation/source/ldm/modules/diffusionmodules/model.py +852 -0
  278. libcom/shadow_generation/source/ldm/modules/diffusionmodules/openaimodel.py +786 -0
  279. libcom/shadow_generation/source/ldm/modules/diffusionmodules/upscaling.py +81 -0
  280. libcom/shadow_generation/source/ldm/modules/diffusionmodules/util.py +270 -0
  281. libcom/shadow_generation/source/ldm/modules/distributions/__init__.py +0 -0
  282. libcom/shadow_generation/source/ldm/modules/distributions/distributions.py +92 -0
  283. libcom/shadow_generation/source/ldm/modules/ema.py +80 -0
  284. libcom/shadow_generation/source/ldm/modules/encoders/__init__.py +0 -0
  285. libcom/shadow_generation/source/ldm/modules/encoders/modules.py +214 -0
  286. libcom/shadow_generation/source/ldm/modules/image_degradation/__init__.py +2 -0
  287. libcom/shadow_generation/source/ldm/modules/image_degradation/bsrgan.py +730 -0
  288. libcom/shadow_generation/source/ldm/modules/image_degradation/bsrgan_light.py +651 -0
  289. libcom/shadow_generation/source/ldm/modules/image_degradation/utils_image.py +916 -0
  290. libcom/shadow_generation/source/ldm/modules/midas/__init__.py +0 -0
  291. libcom/shadow_generation/source/ldm/modules/midas/api.py +170 -0
  292. libcom/shadow_generation/source/ldm/modules/midas/midas/__init__.py +0 -0
  293. libcom/shadow_generation/source/ldm/modules/midas/midas/base_model.py +16 -0
  294. libcom/shadow_generation/source/ldm/modules/midas/midas/blocks.py +342 -0
  295. libcom/shadow_generation/source/ldm/modules/midas/midas/dpt_depth.py +109 -0
  296. libcom/shadow_generation/source/ldm/modules/midas/midas/midas_net.py +76 -0
  297. libcom/shadow_generation/source/ldm/modules/midas/midas/midas_net_custom.py +128 -0
  298. libcom/shadow_generation/source/ldm/modules/midas/midas/transforms.py +234 -0
  299. libcom/shadow_generation/source/ldm/modules/midas/midas/vit.py +491 -0
  300. libcom/shadow_generation/source/ldm/modules/midas/utils.py +189 -0
  301. libcom/shadow_generation/source/ldm/util.py +199 -0
  302. libcom/utils/__init__.py +0 -0
  303. libcom/utils/environment.py +12 -0
  304. libcom/utils/model_download.py +67 -0
  305. libcom/utils/process_image.py +108 -0
  306. libcom-0.1.8.dist-info/METADATA +157 -0
  307. libcom-0.1.8.dist-info/RECORD +310 -0
  308. libcom-0.1.8.dist-info/WHEEL +5 -0
  309. libcom-0.1.8.dist-info/licenses/LICENSE +201 -0
  310. libcom-0.1.8.dist-info/top_level.txt +1 -0
@@ -0,0 +1,36 @@
1
+ from typing import Any, Dict, List, Union
2
+
3
+ from .base import BaseFilter
4
+
5
+
6
+ class FilterWrapper:
7
+ """
8
+ Wrapper for multiple filters. This class allows to apply multiple filters to a batch of data.
9
+ The filters are applied in the order they are passed to the wrapper.
10
+
11
+ Args:
12
+
13
+ filters (List[BaseFilter]):
14
+ List of filters to apply to the batch of data
15
+ """
16
+
17
+ def __init__(
18
+ self,
19
+ filters: Union[List[BaseFilter], None] = None,
20
+ ):
21
+ self.filters = filters
22
+
23
+ def __call__(self, batch: Dict[str, Any]) -> None:
24
+ """
25
+ Forward pass through all filters
26
+
27
+ Args:
28
+
29
+ batch: batch of data
30
+ """
31
+ filter_output = True
32
+ for filter in self.filters:
33
+ filter_output = filter(batch)
34
+ if not filter_output:
35
+ return False
36
+ return True
@@ -0,0 +1,33 @@
1
+ import logging
2
+
3
+ from .base import BaseFilter
4
+ from .filters_config import KeyFilterConfig
5
+
6
+ logging.basicConfig(level=logging.INFO)
7
+
8
+
9
+ class KeyFilter(BaseFilter):
10
+ """
11
+ This filter checks if ALL the given keys are present in the sample
12
+
13
+ Args:
14
+
15
+ config (KeyFilterConfig): configuration for the filter
16
+ """
17
+
18
+ def __init__(self, config: KeyFilterConfig):
19
+ super().__init__(config)
20
+ keys = config.keys
21
+ if isinstance(keys, str):
22
+ keys = [keys]
23
+
24
+ self.keys = set(keys)
25
+
26
+ def __call__(self, batch: dict) -> bool:
27
+ try:
28
+ res = self.keys.issubset(set(batch.keys()))
29
+ return res
30
+ except Exception as e:
31
+ if self.verbose:
32
+ logging.error(f"Error in KeyFilter: {e}")
33
+ return False
@@ -0,0 +1,32 @@
1
+ from typing import List, Union
2
+
3
+ from pydantic.dataclasses import dataclass
4
+
5
+ from ...config import BaseConfig
6
+
7
+
8
+ @dataclass
9
+ class BaseFilterConfig(BaseConfig):
10
+ """
11
+ Base configuration for filters
12
+
13
+ Args:
14
+
15
+ verbose (bool):
16
+ If True, print debug information. Defaults to False"""
17
+
18
+ verbose: bool = False
19
+
20
+
21
+ @dataclass
22
+ class KeyFilterConfig(BaseFilterConfig):
23
+ """
24
+ This filter checks if the keys are present in a sample.
25
+
26
+ Args:
27
+
28
+ keys (Union[str, List[str]]):
29
+ Key or list of keys to check. Defaults to "txt"
30
+ """
31
+
32
+ keys: Union[str, List[str]] = "txt"
@@ -0,0 +1,19 @@
1
+ from .base import BaseMapper
2
+ from .mappers import KeyRenameMapper, RescaleMapper, TorchvisionMapper
3
+ from .mappers_config import (
4
+ KeyRenameMapperConfig,
5
+ RescaleMapperConfig,
6
+ TorchvisionMapperConfig,
7
+ )
8
+ from .mappers_wrapper import MapperWrapper
9
+
10
+ __all__ = [
11
+ "BaseMapper",
12
+ "KeyRenameMapper",
13
+ "RescaleMapper",
14
+ "TorchvisionMapper",
15
+ "KeyRenameMapperConfig",
16
+ "RescaleMapperConfig",
17
+ "TorchvisionMapperConfig",
18
+ "MapperWrapper",
19
+ ]
@@ -0,0 +1,26 @@
1
+ from typing import Any, Dict
2
+
3
+ from .mappers_config import BaseMapperConfig
4
+
5
+
6
+ class BaseMapper:
7
+ """
8
+ Base class for the mappers used to modify the samples in the data pipeline.
9
+
10
+ Args:
11
+
12
+ config (BaseMapperConfig):
13
+ Configuration for the mapper.
14
+ """
15
+
16
+ def __init__(self, config: BaseMapperConfig):
17
+ self.config = config
18
+ self.key = config.key
19
+
20
+ if config.output_key is None:
21
+ self.output_key = config.key
22
+ else:
23
+ self.output_key = config.output_key
24
+
25
+ def map(self, batch: Dict[str, Any], *args, **kwargs) -> Dict[str, Any]:
26
+ raise NotImplementedError
@@ -0,0 +1,135 @@
1
+ from typing import Any, Dict
2
+
3
+ from torchvision import transforms
4
+
5
+ from .base import BaseMapper
6
+ from .mappers_config import (
7
+ KeyRenameMapperConfig,
8
+ RescaleMapperConfig,
9
+ TorchvisionMapperConfig,
10
+ )
11
+
12
+
13
+ class KeyRenameMapper(BaseMapper):
14
+ """
15
+ Rename keys in a sample according to a key map
16
+
17
+ Args:
18
+
19
+ config (KeyRenameMapperConfig): Configuration for the mapper
20
+
21
+ Examples
22
+ ########
23
+
24
+ 1. Rename keys in a sample according to a key map
25
+
26
+ .. code-block:: python
27
+
28
+ from cr.data.mappers import KeyRenameMapper, KeyRenameMapperConfig
29
+
30
+ config = KeyRenameMapperConfig(
31
+ key_map={"old_key": "new_key"}
32
+ )
33
+
34
+ mapper = KeyRenameMapper(config)
35
+
36
+ sample = {"old_key": 1}
37
+ new_sample = mapper(sample)
38
+ print(new_sample) # {"new_key": 1}
39
+
40
+ 2. Rename keys in a sample according to a key map and a condition key
41
+
42
+ .. code-block:: python
43
+
44
+ from cr.data.mappers import KeyRenameMapper, KeyRenameMapperConfig
45
+
46
+ config = KeyRenameMapperConfig(
47
+ key_map={"old_key": "new_key"},
48
+ condition_key="condition",
49
+ condition_fn=lambda x: x == 1
50
+ )
51
+
52
+ mapper = KeyRenameMapper(config)
53
+
54
+ sample = {"old_key": 1, "condition": 1}
55
+ new_sample = mapper(sample)
56
+ print(new_sample) # {"new_key": 1}
57
+
58
+ sample = {"old_key": 1, "condition": 0}
59
+ new_sample = mapper(sample)
60
+ print(new_sample) # {"old_key": 1}
61
+
62
+ ```
63
+ """
64
+
65
+ def __init__(self, config: KeyRenameMapperConfig):
66
+ super().__init__(config)
67
+ self.key_map = config.key_map
68
+ self.condition_key = config.condition_key
69
+ self.condition_fn = config.condition_fn
70
+ self.else_key_map = config.else_key_map
71
+
72
+ def __call__(self, batch: Dict[str, Any], *args, **kwrags):
73
+ if self.condition_key is not None:
74
+ condition_key = batch[self.condition_key]
75
+ if self.condition_fn(condition_key):
76
+ for old_key, new_key in self.key_map.items():
77
+ if old_key in batch:
78
+ batch[new_key] = batch.pop(old_key)
79
+
80
+ elif self.else_key_map is not None:
81
+ for old_key, new_key in self.else_key_map.items():
82
+ if old_key in batch:
83
+ batch[new_key] = batch.pop(old_key)
84
+
85
+ else:
86
+ for old_key, new_key in self.key_map.items():
87
+ if old_key in batch:
88
+ batch[new_key] = batch.pop(old_key)
89
+ return batch
90
+
91
+
92
+ class TorchvisionMapper(BaseMapper):
93
+ """
94
+ Apply torchvision transforms to a sample
95
+
96
+ Args:
97
+
98
+ config (TorchvisionMapperConfig): Configuration for the mapper
99
+ """
100
+
101
+ def __init__(self, config: TorchvisionMapperConfig):
102
+ super().__init__(config)
103
+ chained_transforms = []
104
+ for transform, kwargs in zip(config.transforms, config.transforms_kwargs):
105
+ transform = getattr(transforms, transform)
106
+ chained_transforms.append(transform(**kwargs))
107
+ self.transforms = transforms.Compose(chained_transforms)
108
+
109
+ def __call__(self, batch: Dict[str, Any], *args, **kwrags) -> Dict[str, Any]:
110
+ if self.key in batch:
111
+ batch[self.output_key] = self.transforms(batch[self.key])
112
+ return batch
113
+
114
+
115
+ class RescaleMapper(BaseMapper):
116
+ """
117
+ Rescale a sample from [0, 1] to [-1, 1]
118
+
119
+ Args:
120
+
121
+ config (RescaleMapperConfig): Configuration for the mapper
122
+ """
123
+
124
+ def __init__(self, config: RescaleMapperConfig):
125
+ super().__init__(config)
126
+
127
+ def __call__(self, batch: Dict[str, Any], *args, **kwrags) -> Dict[str, Any]:
128
+ if isinstance(batch[self.key], list):
129
+ tmp = []
130
+ for i, image in enumerate(batch[self.key]):
131
+ tmp.append(2 * image - 1)
132
+ batch[self.output_key] = tmp
133
+ else:
134
+ batch[self.output_key] = 2 * batch[self.key] - 1
135
+ return batch
@@ -0,0 +1,109 @@
1
+ from typing import Any, Callable, Dict, List, Optional
2
+
3
+ from pydantic.dataclasses import dataclass
4
+
5
+ from ...config import BaseConfig
6
+
7
+
8
+ @dataclass
9
+ class BaseMapperConfig(BaseConfig):
10
+ """
11
+ Base configuration for mappers.
12
+
13
+ Args:
14
+
15
+ verbose (bool):
16
+ If True, print debug information. Defaults to False
17
+
18
+ key (Optional[str]):
19
+ Key to apply the mapper to. Defaults to None
20
+
21
+ output_key (Optional[str]):
22
+ Key to store the output of the mapper. Defaults to None
23
+ """
24
+
25
+ verbose: bool = False
26
+ key: Optional[str] = None
27
+ output_key: Optional[str] = None
28
+
29
+
30
+ @dataclass
31
+ class KeyRenameMapperConfig(BaseMapperConfig):
32
+ """
33
+ Rename keys in a sample according to a key map
34
+
35
+ Args:
36
+
37
+ key_map (Dict[str, str]): Dictionary with the old keys as keys and the new keys as values
38
+ condition_key (Optional[str]): Key to use for the condition. Defaults to None
39
+ condition_fn (Optional[Callable[[Any], bool]]): Function to use for the condition to be met so
40
+ the key map is applied. Defaults to None.
41
+ else_key_map (Optional[Dict[str, str]]): Dictionary with the old keys as keys and the new keys as values
42
+ if the condition is not met. Defaults to None *i.e.* the original key will be used.
43
+ """
44
+
45
+ key_map: Dict[str, str] = None
46
+ condition_key: Optional[str] = None
47
+ condition_fn: Optional[Callable[[Any], bool]] = None
48
+ else_key_map: Optional[Dict[str, str]] = None
49
+
50
+ def __post_init__(self):
51
+ super().__post_init__()
52
+ assert self.key_map is not None, "key_map should be provided"
53
+ assert all(
54
+ isinstance(old_key, str) and isinstance(new_key, str)
55
+ for old_key, new_key in self.key_map.items()
56
+ ), "key_map should be a dictionary with string keys and values"
57
+ if self.condition_key is not None:
58
+ assert self.condition_fn is not None, "condition_fn should be provided"
59
+ assert callable(self.condition_fn), "condition_fn should be callable"
60
+ if self.condition_fn is not None:
61
+ assert self.condition_key is not None, "condition_key should be provided"
62
+ assert isinstance(
63
+ self.condition_key, str
64
+ ), "condition_key should be a string"
65
+ if self.else_key_map is not None:
66
+ assert all(
67
+ isinstance(old_key, str) and isinstance(new_key, str)
68
+ for old_key, new_key in self.else_key_map.items()
69
+ ), "else_key_map should be a dictionary with string keys and values"
70
+
71
+
72
+ @dataclass
73
+ class TorchvisionMapperConfig(BaseMapperConfig):
74
+ """
75
+ Apply torchvision transforms to a sample
76
+
77
+ Args:
78
+
79
+ key (str): Key to apply the transforms to
80
+ transforms (torchvision.transforms): List of torchvision transforms to apply
81
+ transforms_kwargs (Dict[str, Any]): List of kwargs for the transforms
82
+ """
83
+
84
+ key: str = "image"
85
+ transforms: List[str] = None
86
+ transforms_kwargs: List[Dict[str, Any]] = None
87
+
88
+ def __post_init__(self):
89
+ super().__post_init__()
90
+ if self.transforms is None:
91
+ self.transforms = []
92
+ if self.transforms_kwargs is None:
93
+ self.transforms_kwargs = []
94
+ assert len(self.transforms) == len(
95
+ self.transforms_kwargs
96
+ ), "Number of transforms and kwargs should be same"
97
+
98
+
99
+ @dataclass
100
+ class RescaleMapperConfig(BaseMapperConfig):
101
+ """
102
+ Rescale a sample from [0, 1] to [-1, 1]
103
+
104
+ Args:
105
+
106
+ key (str): Key to rescale
107
+ """
108
+
109
+ key: str = "image"
@@ -0,0 +1,31 @@
1
+ from typing import Any, Dict, List, Union
2
+
3
+ from .base import BaseMapper
4
+
5
+
6
+ class MapperWrapper:
7
+ """
8
+ Wrapper for the mappers to allow iterating over several mappers in one go.
9
+
10
+ Args:
11
+
12
+ mappers (Union[List[BaseMapper], None]): List of mappers to apply to the batch
13
+ """
14
+
15
+ def __init__(
16
+ self,
17
+ mappers: Union[List[BaseMapper], None] = None,
18
+ ):
19
+ self.mappers = mappers
20
+
21
+ def __call__(self, batch: Dict[str, Any]) -> Dict[str, Any]:
22
+ """
23
+ Forward pass through all mappers
24
+
25
+ Args:
26
+
27
+ batch (Dict[str, Any]): batch of data
28
+ """
29
+ for mapper in self.mappers:
30
+ batch = mapper(batch)
31
+ return batch
@@ -0,0 +1,4 @@
1
+ from .inference import evaluate
2
+ from .utils import get_model
3
+
4
+ __all__ = ["evaluate", "get_model"]
@@ -0,0 +1,70 @@
1
+ import logging
2
+
3
+ import PIL
4
+ import torch
5
+ from torchvision.transforms import ToPILImage, ToTensor
6
+
7
+ from lbm.models.lbm import LBMModel
8
+
9
+ logging.basicConfig(level=logging.INFO)
10
+ logger = logging.getLogger(__name__)
11
+
12
+ ASPECT_RATIOS = {
13
+ str(512 / 2048): (512, 2048),
14
+ str(1024 / 1024): (1024, 1024),
15
+ str(2048 / 512): (2048, 512),
16
+ str(896 / 1152): (896, 1152),
17
+ str(1152 / 896): (1152, 896),
18
+ str(512 / 1920): (512, 1920),
19
+ str(640 / 1536): (640, 1536),
20
+ str(768 / 1280): (768, 1280),
21
+ str(1280 / 768): (1280, 768),
22
+ str(1536 / 640): (1536, 640),
23
+ str(1920 / 512): (1920, 512),
24
+ }
25
+
26
+
27
+ @torch.no_grad()
28
+ def evaluate(
29
+ model: LBMModel,
30
+ source_image: PIL.Image.Image,
31
+ num_sampling_steps: int = 1,
32
+ ):
33
+ """
34
+ Evaluate the model on an image coming from the source distribution and generate a new image from the target distribution.
35
+
36
+ Args:
37
+ model (LBMModel): The model to evaluate.
38
+ source_image (PIL.Image.Image): The source image to evaluate the model on.
39
+ num_sampling_steps (int): The number of sampling steps to use for the model.
40
+
41
+ Returns:
42
+ PIL.Image.Image: The generated image.
43
+ """
44
+
45
+ ori_h_bg, ori_w_bg = source_image.size
46
+ ar_bg = ori_h_bg / ori_w_bg
47
+ closest_ar_bg = min(ASPECT_RATIOS, key=lambda x: abs(float(x) - ar_bg))
48
+ source_dimensions = ASPECT_RATIOS[closest_ar_bg]
49
+
50
+ source_image = source_image.resize(source_dimensions)
51
+
52
+ img_pasted_tensor = ToTensor()(source_image).unsqueeze(0) * 2 - 1
53
+ batch = {
54
+ "source_image": img_pasted_tensor.cuda().to(torch.bfloat16),
55
+ }
56
+
57
+ z_source = model.vae.encode(batch[model.source_key])
58
+
59
+ output_image = model.sample(
60
+ z=z_source,
61
+ num_steps=num_sampling_steps,
62
+ conditioner_inputs=batch,
63
+ max_samples=1,
64
+ ).clamp(-1, 1)
65
+
66
+ output_image = (output_image[0].float().cpu() + 1) / 2
67
+ output_image = ToPILImage()(output_image)
68
+ output_image.resize((ori_h_bg, ori_w_bg))
69
+
70
+ return output_image