From 83a9c954eb602f98aa91d40ec4b802e0124e30d0 Mon Sep 17 00:00:00 2001 From: wehub-resource-sync Date: Mon, 13 Jul 2026 12:20:16 +0800 Subject: [PATCH] chore: import upstream snapshot with attribution --- .github/FUNDING.yml | 3 + .github/ISSUE_TEMPLATE/config.yml | 4 + .github/ISSUE_TEMPLATE/🐛-bug-report.md | 23 + .github/ISSUE_TEMPLATE/🚀-feature-request.md | 17 + .gitignore | 12 + LICENSE | 201 + README.md | 138 + README.wehub.md | 7 + assets/dog.jpg | Bin 0 -> 44809 bytes assets/fox.jpg | Bin 0 -> 44488 bytes assets/manga.png | Bin 0 -> 836150 bytes assets/manga_clean.png | Bin 0 -> 865422 bytes assets/old_photo.jpg | Bin 0 -> 29435 bytes assets/old_photo_clean.jpg | Bin 0 -> 54578 bytes assets/unwant_object.jpg | Bin 0 -> 168836 bytes assets/unwant_object_clean.jpg | Bin 0 -> 165463 bytes assets/unwant_person.jpg | Bin 0 -> 115418 bytes assets/unwant_person_clean.jpg | Bin 0 -> 111243 bytes assets/unwant_text.jpg | Bin 0 -> 62919 bytes assets/unwant_text_clean.jpg | Bin 0 -> 55169 bytes assets/watermark.jpg | Bin 0 -> 298899 bytes assets/watermark_cleanup.jpg | Bin 0 -> 709531 bytes build_docker.sh | 33 + docker/CPUDockerfile | 19 + docker/GPUDockerfile | 19 + iopaint/__init__.py | 56 + iopaint/__main__.py | 4 + iopaint/api.py | 411 + iopaint/batch_processing.py | 128 + iopaint/benchmark.py | 109 + iopaint/cli.py | 240 + iopaint/const.py | 136 + iopaint/download.py | 314 + iopaint/file_manager/__init__.py | 1 + iopaint/file_manager/file_manager.py | 220 + iopaint/file_manager/storage_backends.py | 46 + iopaint/file_manager/utils.py | 65 + iopaint/helper.py | 410 + iopaint/installer.py | 11 + iopaint/model/__init__.py | 38 + iopaint/model/anytext/__init__.py | 0 iopaint/model/anytext/anytext_model.py | 73 + iopaint/model/anytext/anytext_pipeline.py | 403 + iopaint/model/anytext/anytext_sd15.yaml | 99 + iopaint/model/anytext/cldm/__init__.py | 0 iopaint/model/anytext/cldm/cldm.py | 630 ++ iopaint/model/anytext/cldm/ddim_hacked.py | 486 ++ .../model/anytext/cldm/embedding_manager.py | 165 + iopaint/model/anytext/cldm/hack.py | 111 + iopaint/model/anytext/cldm/model.py | 40 + iopaint/model/anytext/cldm/recognizer.py | 300 + iopaint/model/anytext/ldm/__init__.py | 0 iopaint/model/anytext/ldm/models/__init__.py | 0 .../model/anytext/ldm/models/autoencoder.py | 218 + .../anytext/ldm/models/diffusion/__init__.py | 0 .../anytext/ldm/models/diffusion/ddim.py | 354 + .../anytext/ldm/models/diffusion/ddpm.py | 2380 ++++++ .../models/diffusion/dpm_solver/__init__.py | 1 + .../models/diffusion/dpm_solver/dpm_solver.py | 1154 +++ .../models/diffusion/dpm_solver/sampler.py | 87 + .../anytext/ldm/models/diffusion/plms.py | 244 + .../ldm/models/diffusion/sampling_util.py | 22 + iopaint/model/anytext/ldm/modules/__init__.py | 0 .../model/anytext/ldm/modules/attention.py | 360 + .../ldm/modules/diffusionmodules/__init__.py | 0 .../ldm/modules/diffusionmodules/model.py | 973 +++ .../modules/diffusionmodules/openaimodel.py | 786 ++ .../ldm/modules/diffusionmodules/upscaling.py | 81 + .../ldm/modules/diffusionmodules/util.py | 271 + .../ldm/modules/distributions/__init__.py | 0 .../modules/distributions/distributions.py | 92 + iopaint/model/anytext/ldm/modules/ema.py | 80 + .../anytext/ldm/modules/encoders/__init__.py | 0 .../anytext/ldm/modules/encoders/modules.py | 411 + iopaint/model/anytext/ldm/util.py | 197 + iopaint/model/anytext/main.py | 45 + iopaint/model/anytext/ocr_recog/RNN.py | 210 + iopaint/model/anytext/ocr_recog/RecCTCHead.py | 48 + iopaint/model/anytext/ocr_recog/RecModel.py | 45 + .../model/anytext/ocr_recog/RecMv1_enhance.py | 232 + iopaint/model/anytext/ocr_recog/RecSVTR.py | 591 ++ iopaint/model/anytext/ocr_recog/__init__.py | 0 iopaint/model/anytext/ocr_recog/common.py | 74 + iopaint/model/anytext/ocr_recog/en_dict.txt | 95 + .../model/anytext/ocr_recog/ppocr_keys_v1.txt | 6623 +++++++++++++++++ iopaint/model/anytext/utils.py | 151 + iopaint/model/base.py | 405 + iopaint/model/brushnet/__init__.py | 0 iopaint/model/brushnet/brushnet.py | 931 +++ .../model/brushnet/brushnet_unet_forward.py | 381 + iopaint/model/brushnet/brushnet_wrapper.py | 175 + iopaint/model/brushnet/brushnet_xl_wrapper.py | 179 + iopaint/model/brushnet/pipeline_brushnet.py | 1279 ++++ .../model/brushnet/pipeline_brushnet_sd_xl.py | 1535 ++++ iopaint/model/brushnet/unet_2d_blocks.py | 388 + iopaint/model/controlnet.py | 194 + iopaint/model/ddim_sampler.py | 193 + iopaint/model/fcf.py | 1737 +++++ iopaint/model/helper/__init__.py | 0 iopaint/model/helper/controlnet_preprocess.py | 68 + iopaint/model/helper/cpu_text_encoder.py | 41 + iopaint/model/helper/g_diffuser_bot.py | 62 + iopaint/model/instruct_pix2pix.py | 64 + iopaint/model/kandinsky.py | 65 + iopaint/model/lama.py | 82 + iopaint/model/ldm.py | 336 + iopaint/model/manga.py | 97 + iopaint/model/mat.py | 1945 +++++ iopaint/model/mi_gan.py | 110 + iopaint/model/opencv2.py | 29 + iopaint/model/original_sd_configs/__init__.py | 19 + .../model/original_sd_configs/sd_xl_base.yaml | 93 + .../original_sd_configs/sd_xl_refiner.yaml | 86 + .../original_sd_configs/v1-inference.yaml | 70 + .../original_sd_configs/v2-inference-v.yaml | 68 + iopaint/model/paint_by_example.py | 68 + iopaint/model/plms_sampler.py | 225 + iopaint/model/power_paint/__init__.py | 0 .../model/power_paint/pipeline_powerpaint.py | 1243 ++++ iopaint/model/power_paint/power_paint.py | 101 + iopaint/model/power_paint/power_paint_v2.py | 186 + .../model/power_paint/powerpaint_tokenizer.py | 254 + iopaint/model/power_paint/v2/BrushNet_CA.py | 1094 +++ iopaint/model/power_paint/v2/__init__.py | 0 .../v2/pipeline_PowerPaint_Brushnet_CA.py | 1690 +++++ .../model/power_paint/v2/unet_2d_blocks.py | 342 + .../model/power_paint/v2/unet_2d_condition.py | 402 + iopaint/model/sd.py | 129 + iopaint/model/sdxl.py | 110 + iopaint/model/utils.py | 1033 +++ iopaint/model/zits.py | 476 ++ iopaint/model_manager.py | 268 + iopaint/plugins/__init__.py | 75 + iopaint/plugins/anime_seg.py | 462 ++ iopaint/plugins/base_plugin.py | 30 + iopaint/plugins/basicsr/LICENSE | 201 + iopaint/plugins/basicsr/__init__.py | 22 + iopaint/plugins/basicsr/arch_util.py | 80 + iopaint/plugins/basicsr/img_util.py | 172 + iopaint/plugins/basicsr/rrdbnet_arch.py | 133 + iopaint/plugins/briarmbg.py | 513 ++ iopaint/plugins/briarmbg2.py | 2956 ++++++++ iopaint/plugins/facexlib/.gitignore | 135 + iopaint/plugins/facexlib/__init__.py | 3 + .../plugins/facexlib/detection/__init__.py | 31 + .../plugins/facexlib/detection/align_trans.py | 219 + .../facexlib/detection/matlab_cp2tform.py | 317 + .../plugins/facexlib/detection/retinaface.py | 419 ++ .../facexlib/detection/retinaface_net.py | 196 + .../facexlib/detection/retinaface_utils.py | 421 ++ iopaint/plugins/facexlib/parsing/__init__.py | 24 + iopaint/plugins/facexlib/parsing/bisenet.py | 140 + iopaint/plugins/facexlib/parsing/parsenet.py | 194 + iopaint/plugins/facexlib/parsing/resnet.py | 69 + iopaint/plugins/facexlib/utils/__init__.py | 7 + .../facexlib/utils/face_restoration_helper.py | 473 ++ iopaint/plugins/facexlib/utils/face_utils.py | 208 + iopaint/plugins/facexlib/utils/misc.py | 118 + iopaint/plugins/gfpgan/__init__.py | 0 iopaint/plugins/gfpgan/archs/__init__.py | 0 .../gfpgan/archs/gfpganv1_clean_arch.py | 322 + .../gfpgan/archs/restoreformer_arch.py | 759 ++ .../gfpgan/archs/stylegan2_clean_arch.py | 434 ++ iopaint/plugins/gfpgan_plugin.py | 61 + iopaint/plugins/gfpganer.py | 156 + iopaint/plugins/interactive_seg.py | 146 + iopaint/plugins/realesrgan.py | 468 ++ iopaint/plugins/remove_bg.py | 111 + iopaint/plugins/restoreformer.py | 44 + iopaint/plugins/segment_anything/__init__.py | 16 + iopaint/plugins/segment_anything/build_sam.py | 269 + .../segment_anything/modeling/__init__.py | 11 + .../segment_anything/modeling/common.py | 43 + .../modeling/image_encoder.py | 395 + .../modeling/image_encoder_hq.py | 422 ++ .../segment_anything/modeling/mask_decoder.py | 410 + .../modeling/prompt_encoder.py | 214 + .../plugins/segment_anything/modeling/sam.py | 174 + .../segment_anything/modeling/sam_hq.py | 177 + .../segment_anything/modeling/tiny_vit_sam.py | 822 ++ .../segment_anything/modeling/transformer.py | 240 + iopaint/plugins/segment_anything/predictor.py | 285 + .../plugins/segment_anything/predictor_hq.py | 292 + .../segment_anything/utils/__init__.py | 5 + .../segment_anything/utils/transforms.py | 112 + iopaint/plugins/segment_anything2/__init__.py | 5 + .../plugins/segment_anything2/build_sam.py | 342 + .../segment_anything2/modeling/__init__.py | 5 + .../modeling/backbones/__init__.py | 5 + .../modeling/backbones/hieradet.py | 315 + .../modeling/backbones/image_encoder.py | 133 + .../modeling/backbones/utils.py | 95 + .../modeling/memory_attention.py | 169 + .../modeling/memory_encoder.py | 181 + .../modeling/position_encoding.py | 221 + .../modeling/sam/__init__.py | 5 + .../modeling/sam/mask_decoder.py | 295 + .../modeling/sam/prompt_encoder.py | 182 + .../modeling/sam/transformer.py | 327 + .../segment_anything2/modeling/sam2_base.py | 910 +++ .../segment_anything2/modeling/sam2_utils.py | 323 + .../segment_anything2/sam2_image_predictor.py | 445 ++ .../segment_anything2/utils/__init__.py | 5 + .../plugins/segment_anything2/utils/misc.py | 90 + .../segment_anything2/utils/transforms.py | 77 + iopaint/runtime.py | 87 + iopaint/schema.py | 511 ++ iopaint/tests/.gitignore | 2 + iopaint/tests/__init__.py | 0 iopaint/tests/anime_test.png | Bin 0 -> 491736 bytes iopaint/tests/anytext_mask.jpg | Bin 0 -> 6860 bytes iopaint/tests/anytext_ref.jpg | Bin 0 -> 105967 bytes iopaint/tests/bunny.jpeg | Bin 0 -> 52557 bytes iopaint/tests/cat.png | Bin 0 -> 492745 bytes iopaint/tests/icc_profile_test.jpg | Bin 0 -> 219998 bytes iopaint/tests/icc_profile_test.png | Bin 0 -> 311946 bytes iopaint/tests/image.png | Bin 0 -> 132172 bytes iopaint/tests/mask.png | Bin 0 -> 7916 bytes .../tests/overture-creations-5sI6fQgYIuo.png | Bin 0 -> 404753 bytes .../overture-creations-5sI6fQgYIuo_mask.png | Bin 0 -> 12106 bytes ...erture-creations-5sI6fQgYIuo_mask_blur.png | Bin 0 -> 39225 bytes iopaint/tests/png_parameter_test.png | Bin 0 -> 70526 bytes iopaint/tests/test_adjust_mask.py | 17 + iopaint/tests/test_anytext.py | 45 + iopaint/tests/test_brushnet.py | 110 + iopaint/tests/test_controlnet.py | 118 + iopaint/tests/test_instruct_pix2pix.py | 40 + iopaint/tests/test_load_img.py | 19 + iopaint/tests/test_low_mem.py | 102 + iopaint/tests/test_match_histograms.py | 36 + iopaint/tests/test_model.py | 160 + iopaint/tests/test_model_md5.py | 16 + iopaint/tests/test_model_switch.py | 70 + iopaint/tests/test_outpainting.py | 137 + iopaint/tests/test_paint_by_example.py | 58 + iopaint/tests/test_plugins.py | 130 + iopaint/tests/test_save_exif.py | 59 + iopaint/tests/test_save_quality.py | 71 + iopaint/tests/test_sd_model.py | 240 + iopaint/tests/test_sdxl.py | 118 + iopaint/tests/utils.py | 77 + iopaint/web_config.py | 328 + main.py | 4 + publish.sh | 12 + requirements-dev.txt | 3 + requirements.txt | 25 + scripts/.gitignore | 2 + scripts/README.md | 3 + scripts/convert_vae_pt_to_diffusers.py | 231 + scripts/environment.yaml | 11 + scripts/pack.bat | 30 + scripts/pack.sh | 38 + scripts/tool.py | 361 + scripts/user_scripts/win_config.bat | 9 + scripts/user_scripts/win_setup.bat | 13 + scripts/user_scripts/win_setup_cn.bat | 14 + scripts/user_scripts/win_start.bat | 9 + scripts/user_scripts/win_start_cn.bat | 10 + scripts/user_scripts/win_update.bat | 9 + setup.py | 53 + web_app/.eslintrc.cjs | 18 + web_app/.gitignore | 24 + web_app/README.md | 30 + web_app/components.json | 16 + web_app/index.html | 13 + web_app/package-lock.json | 6465 ++++++++++++++++ web_app/package.json | 83 + web_app/postcss.config.js | 6 + web_app/public/favicon.ico | Bin 0 -> 159214 bytes web_app/src/App.tsx | 167 + web_app/src/assets/kofi_button_black.png | Bin 0 -> 207929 bytes web_app/src/components/Coffee.tsx | 35 + web_app/src/components/Cropper.tsx | 400 + web_app/src/components/DiffusionProgress.tsx | 63 + web_app/src/components/Editor.tsx | 1016 +++ web_app/src/components/Extender.tsx | 414 ++ web_app/src/components/FileManager.tsx | 345 + web_app/src/components/FileSelect.tsx | 71 + web_app/src/components/Header.tsx | 204 + web_app/src/components/ImageSize.tsx | 20 + web_app/src/components/InteractiveSeg.tsx | 130 + web_app/src/components/Plugins.tsx | 202 + web_app/src/components/PromptInput.tsx | 94 + web_app/src/components/Settings.tsx | 766 ++ web_app/src/components/Shortcuts.tsx | 86 + .../src/components/SidePanel/CV2Options.tsx | 77 + .../components/SidePanel/DiffusionOptions.tsx | 924 +++ .../src/components/SidePanel/LDMOptions.tsx | 77 + .../src/components/SidePanel/LabelTitle.tsx | 56 + web_app/src/components/SidePanel/index.tsx | 96 + web_app/src/components/Workspace.tsx | 39 + web_app/src/components/ui/accordion.tsx | 55 + web_app/src/components/ui/alert-dialog.tsx | 139 + web_app/src/components/ui/button.tsx | 128 + web_app/src/components/ui/context-menu.tsx | 202 + web_app/src/components/ui/dialog.tsx | 122 + web_app/src/components/ui/dropdown-menu.tsx | 204 + web_app/src/components/ui/form.tsx | 176 + web_app/src/components/ui/input.tsx | 93 + web_app/src/components/ui/label.tsx | 34 + web_app/src/components/ui/popover.tsx | 30 + web_app/src/components/ui/progress.tsx | 26 + web_app/src/components/ui/radio-group.tsx | 42 + web_app/src/components/ui/scroll-area.tsx | 47 + web_app/src/components/ui/select.tsx | 164 + web_app/src/components/ui/separator.tsx | 29 + web_app/src/components/ui/sheet.tsx | 133 + web_app/src/components/ui/slider.tsx | 30 + web_app/src/components/ui/switch.tsx | 28 + web_app/src/components/ui/tabs.tsx | 56 + web_app/src/components/ui/textarea.tsx | 39 + web_app/src/components/ui/toast.tsx | 133 + web_app/src/components/ui/toaster.tsx | 33 + web_app/src/components/ui/toggle.tsx | 43 + web_app/src/components/ui/tooltip.tsx | 28 + web_app/src/components/ui/use-toast.ts | 192 + web_app/src/globals.css | 111 + web_app/src/hooks/useAsyncMemo.tsx | 33 + web_app/src/hooks/useHotkey.tsx | 11 + web_app/src/hooks/useImage.tsx | 24 + web_app/src/hooks/useInputImage.tsx | 41 + web_app/src/hooks/useResolution.tsx | 31 + web_app/src/lib/api.ts | 251 + web_app/src/lib/const.ts | 25 + web_app/src/lib/states.ts | 1158 +++ web_app/src/lib/types.ts | 132 + web_app/src/lib/utils.ts | 256 + web_app/src/main.tsx | 22 + web_app/src/vite-env.d.ts | 1 + web_app/tailwind.config.js | 76 + web_app/tsconfig.json | 32 + web_app/tsconfig.node.json | 10 + web_app/vite.config.ts | 12 + 333 files changed, 76943 insertions(+) create mode 100644 .github/FUNDING.yml create mode 100644 .github/ISSUE_TEMPLATE/config.yml create mode 100644 .github/ISSUE_TEMPLATE/🐛-bug-report.md create mode 100644 .github/ISSUE_TEMPLATE/🚀-feature-request.md create mode 100644 .gitignore create mode 100644 LICENSE create mode 100644 README.md create mode 100644 README.wehub.md create mode 100644 assets/dog.jpg create mode 100644 assets/fox.jpg create mode 100644 assets/manga.png create mode 100644 assets/manga_clean.png create mode 100644 assets/old_photo.jpg create mode 100644 assets/old_photo_clean.jpg create mode 100644 assets/unwant_object.jpg create mode 100644 assets/unwant_object_clean.jpg create mode 100644 assets/unwant_person.jpg create mode 100644 assets/unwant_person_clean.jpg create mode 100644 assets/unwant_text.jpg create mode 100644 assets/unwant_text_clean.jpg create mode 100644 assets/watermark.jpg create mode 100644 assets/watermark_cleanup.jpg create mode 100644 build_docker.sh create mode 100644 docker/CPUDockerfile create mode 100644 docker/GPUDockerfile create mode 100644 iopaint/__init__.py create mode 100644 iopaint/__main__.py create mode 100644 iopaint/api.py create mode 100644 iopaint/batch_processing.py create mode 100644 iopaint/benchmark.py create mode 100644 iopaint/cli.py create mode 100644 iopaint/const.py create mode 100644 iopaint/download.py create mode 100644 iopaint/file_manager/__init__.py create mode 100644 iopaint/file_manager/file_manager.py create mode 100644 iopaint/file_manager/storage_backends.py create mode 100644 iopaint/file_manager/utils.py create mode 100644 iopaint/helper.py create mode 100644 iopaint/installer.py create mode 100644 iopaint/model/__init__.py create mode 100644 iopaint/model/anytext/__init__.py create mode 100644 iopaint/model/anytext/anytext_model.py create mode 100644 iopaint/model/anytext/anytext_pipeline.py create mode 100644 iopaint/model/anytext/anytext_sd15.yaml create mode 100644 iopaint/model/anytext/cldm/__init__.py create mode 100644 iopaint/model/anytext/cldm/cldm.py create mode 100644 iopaint/model/anytext/cldm/ddim_hacked.py create mode 100644 iopaint/model/anytext/cldm/embedding_manager.py create mode 100644 iopaint/model/anytext/cldm/hack.py create mode 100644 iopaint/model/anytext/cldm/model.py create mode 100755 iopaint/model/anytext/cldm/recognizer.py create mode 100644 iopaint/model/anytext/ldm/__init__.py create mode 100644 iopaint/model/anytext/ldm/models/__init__.py create mode 100644 iopaint/model/anytext/ldm/models/autoencoder.py create mode 100644 iopaint/model/anytext/ldm/models/diffusion/__init__.py create mode 100644 iopaint/model/anytext/ldm/models/diffusion/ddim.py create mode 100644 iopaint/model/anytext/ldm/models/diffusion/ddpm.py create mode 100644 iopaint/model/anytext/ldm/models/diffusion/dpm_solver/__init__.py create mode 100644 iopaint/model/anytext/ldm/models/diffusion/dpm_solver/dpm_solver.py create mode 100644 iopaint/model/anytext/ldm/models/diffusion/dpm_solver/sampler.py create mode 100644 iopaint/model/anytext/ldm/models/diffusion/plms.py create mode 100644 iopaint/model/anytext/ldm/models/diffusion/sampling_util.py create mode 100644 iopaint/model/anytext/ldm/modules/__init__.py create mode 100644 iopaint/model/anytext/ldm/modules/attention.py create mode 100644 iopaint/model/anytext/ldm/modules/diffusionmodules/__init__.py create mode 100644 iopaint/model/anytext/ldm/modules/diffusionmodules/model.py create mode 100644 iopaint/model/anytext/ldm/modules/diffusionmodules/openaimodel.py create mode 100644 iopaint/model/anytext/ldm/modules/diffusionmodules/upscaling.py create mode 100644 iopaint/model/anytext/ldm/modules/diffusionmodules/util.py create mode 100644 iopaint/model/anytext/ldm/modules/distributions/__init__.py create mode 100644 iopaint/model/anytext/ldm/modules/distributions/distributions.py create mode 100644 iopaint/model/anytext/ldm/modules/ema.py create mode 100644 iopaint/model/anytext/ldm/modules/encoders/__init__.py create mode 100644 iopaint/model/anytext/ldm/modules/encoders/modules.py create mode 100644 iopaint/model/anytext/ldm/util.py create mode 100644 iopaint/model/anytext/main.py create mode 100755 iopaint/model/anytext/ocr_recog/RNN.py create mode 100755 iopaint/model/anytext/ocr_recog/RecCTCHead.py create mode 100755 iopaint/model/anytext/ocr_recog/RecModel.py create mode 100644 iopaint/model/anytext/ocr_recog/RecMv1_enhance.py create mode 100644 iopaint/model/anytext/ocr_recog/RecSVTR.py create mode 100644 iopaint/model/anytext/ocr_recog/__init__.py create mode 100644 iopaint/model/anytext/ocr_recog/common.py create mode 100644 iopaint/model/anytext/ocr_recog/en_dict.txt create mode 100644 iopaint/model/anytext/ocr_recog/ppocr_keys_v1.txt create mode 100644 iopaint/model/anytext/utils.py create mode 100644 iopaint/model/base.py create mode 100644 iopaint/model/brushnet/__init__.py create mode 100644 iopaint/model/brushnet/brushnet.py create mode 100644 iopaint/model/brushnet/brushnet_unet_forward.py create mode 100644 iopaint/model/brushnet/brushnet_wrapper.py create mode 100644 iopaint/model/brushnet/brushnet_xl_wrapper.py create mode 100644 iopaint/model/brushnet/pipeline_brushnet.py create mode 100644 iopaint/model/brushnet/pipeline_brushnet_sd_xl.py create mode 100644 iopaint/model/brushnet/unet_2d_blocks.py create mode 100644 iopaint/model/controlnet.py create mode 100644 iopaint/model/ddim_sampler.py create mode 100644 iopaint/model/fcf.py create mode 100644 iopaint/model/helper/__init__.py create mode 100644 iopaint/model/helper/controlnet_preprocess.py create mode 100644 iopaint/model/helper/cpu_text_encoder.py create mode 100644 iopaint/model/helper/g_diffuser_bot.py create mode 100644 iopaint/model/instruct_pix2pix.py create mode 100644 iopaint/model/kandinsky.py create mode 100644 iopaint/model/lama.py create mode 100644 iopaint/model/ldm.py create mode 100644 iopaint/model/manga.py create mode 100644 iopaint/model/mat.py create mode 100644 iopaint/model/mi_gan.py create mode 100644 iopaint/model/opencv2.py create mode 100644 iopaint/model/original_sd_configs/__init__.py create mode 100644 iopaint/model/original_sd_configs/sd_xl_base.yaml create mode 100644 iopaint/model/original_sd_configs/sd_xl_refiner.yaml create mode 100644 iopaint/model/original_sd_configs/v1-inference.yaml create mode 100644 iopaint/model/original_sd_configs/v2-inference-v.yaml create mode 100644 iopaint/model/paint_by_example.py create mode 100644 iopaint/model/plms_sampler.py create mode 100644 iopaint/model/power_paint/__init__.py create mode 100644 iopaint/model/power_paint/pipeline_powerpaint.py create mode 100644 iopaint/model/power_paint/power_paint.py create mode 100644 iopaint/model/power_paint/power_paint_v2.py create mode 100644 iopaint/model/power_paint/powerpaint_tokenizer.py create mode 100644 iopaint/model/power_paint/v2/BrushNet_CA.py create mode 100644 iopaint/model/power_paint/v2/__init__.py create mode 100644 iopaint/model/power_paint/v2/pipeline_PowerPaint_Brushnet_CA.py create mode 100644 iopaint/model/power_paint/v2/unet_2d_blocks.py create mode 100644 iopaint/model/power_paint/v2/unet_2d_condition.py create mode 100644 iopaint/model/sd.py create mode 100644 iopaint/model/sdxl.py create mode 100644 iopaint/model/utils.py create mode 100644 iopaint/model/zits.py create mode 100644 iopaint/model_manager.py create mode 100644 iopaint/plugins/__init__.py create mode 100644 iopaint/plugins/anime_seg.py create mode 100644 iopaint/plugins/base_plugin.py create mode 100644 iopaint/plugins/basicsr/LICENSE create mode 100644 iopaint/plugins/basicsr/__init__.py create mode 100644 iopaint/plugins/basicsr/arch_util.py create mode 100644 iopaint/plugins/basicsr/img_util.py create mode 100644 iopaint/plugins/basicsr/rrdbnet_arch.py create mode 100644 iopaint/plugins/briarmbg.py create mode 100644 iopaint/plugins/briarmbg2.py create mode 100644 iopaint/plugins/facexlib/.gitignore create mode 100644 iopaint/plugins/facexlib/__init__.py create mode 100644 iopaint/plugins/facexlib/detection/__init__.py create mode 100644 iopaint/plugins/facexlib/detection/align_trans.py create mode 100644 iopaint/plugins/facexlib/detection/matlab_cp2tform.py create mode 100644 iopaint/plugins/facexlib/detection/retinaface.py create mode 100644 iopaint/plugins/facexlib/detection/retinaface_net.py create mode 100644 iopaint/plugins/facexlib/detection/retinaface_utils.py create mode 100644 iopaint/plugins/facexlib/parsing/__init__.py create mode 100644 iopaint/plugins/facexlib/parsing/bisenet.py create mode 100644 iopaint/plugins/facexlib/parsing/parsenet.py create mode 100644 iopaint/plugins/facexlib/parsing/resnet.py create mode 100644 iopaint/plugins/facexlib/utils/__init__.py create mode 100644 iopaint/plugins/facexlib/utils/face_restoration_helper.py create mode 100644 iopaint/plugins/facexlib/utils/face_utils.py create mode 100644 iopaint/plugins/facexlib/utils/misc.py create mode 100644 iopaint/plugins/gfpgan/__init__.py create mode 100644 iopaint/plugins/gfpgan/archs/__init__.py create mode 100644 iopaint/plugins/gfpgan/archs/gfpganv1_clean_arch.py create mode 100644 iopaint/plugins/gfpgan/archs/restoreformer_arch.py create mode 100644 iopaint/plugins/gfpgan/archs/stylegan2_clean_arch.py create mode 100644 iopaint/plugins/gfpgan_plugin.py create mode 100644 iopaint/plugins/gfpganer.py create mode 100644 iopaint/plugins/interactive_seg.py create mode 100644 iopaint/plugins/realesrgan.py create mode 100644 iopaint/plugins/remove_bg.py create mode 100644 iopaint/plugins/restoreformer.py create mode 100644 iopaint/plugins/segment_anything/__init__.py create mode 100644 iopaint/plugins/segment_anything/build_sam.py create mode 100644 iopaint/plugins/segment_anything/modeling/__init__.py create mode 100644 iopaint/plugins/segment_anything/modeling/common.py create mode 100644 iopaint/plugins/segment_anything/modeling/image_encoder.py create mode 100644 iopaint/plugins/segment_anything/modeling/image_encoder_hq.py create mode 100644 iopaint/plugins/segment_anything/modeling/mask_decoder.py create mode 100644 iopaint/plugins/segment_anything/modeling/prompt_encoder.py create mode 100644 iopaint/plugins/segment_anything/modeling/sam.py create mode 100644 iopaint/plugins/segment_anything/modeling/sam_hq.py create mode 100644 iopaint/plugins/segment_anything/modeling/tiny_vit_sam.py create mode 100644 iopaint/plugins/segment_anything/modeling/transformer.py create mode 100644 iopaint/plugins/segment_anything/predictor.py create mode 100644 iopaint/plugins/segment_anything/predictor_hq.py create mode 100644 iopaint/plugins/segment_anything/utils/__init__.py create mode 100644 iopaint/plugins/segment_anything/utils/transforms.py create mode 100644 iopaint/plugins/segment_anything2/__init__.py create mode 100644 iopaint/plugins/segment_anything2/build_sam.py create mode 100644 iopaint/plugins/segment_anything2/modeling/__init__.py create mode 100644 iopaint/plugins/segment_anything2/modeling/backbones/__init__.py create mode 100644 iopaint/plugins/segment_anything2/modeling/backbones/hieradet.py create mode 100644 iopaint/plugins/segment_anything2/modeling/backbones/image_encoder.py create mode 100644 iopaint/plugins/segment_anything2/modeling/backbones/utils.py create mode 100644 iopaint/plugins/segment_anything2/modeling/memory_attention.py create mode 100644 iopaint/plugins/segment_anything2/modeling/memory_encoder.py create mode 100644 iopaint/plugins/segment_anything2/modeling/position_encoding.py create mode 100644 iopaint/plugins/segment_anything2/modeling/sam/__init__.py create mode 100644 iopaint/plugins/segment_anything2/modeling/sam/mask_decoder.py create mode 100644 iopaint/plugins/segment_anything2/modeling/sam/prompt_encoder.py create mode 100644 iopaint/plugins/segment_anything2/modeling/sam/transformer.py create mode 100644 iopaint/plugins/segment_anything2/modeling/sam2_base.py create mode 100644 iopaint/plugins/segment_anything2/modeling/sam2_utils.py create mode 100644 iopaint/plugins/segment_anything2/sam2_image_predictor.py create mode 100644 iopaint/plugins/segment_anything2/utils/__init__.py create mode 100644 iopaint/plugins/segment_anything2/utils/misc.py create mode 100644 iopaint/plugins/segment_anything2/utils/transforms.py create mode 100644 iopaint/runtime.py create mode 100644 iopaint/schema.py create mode 100644 iopaint/tests/.gitignore create mode 100644 iopaint/tests/__init__.py create mode 100644 iopaint/tests/anime_test.png create mode 100644 iopaint/tests/anytext_mask.jpg create mode 100644 iopaint/tests/anytext_ref.jpg create mode 100644 iopaint/tests/bunny.jpeg create mode 100644 iopaint/tests/cat.png create mode 100644 iopaint/tests/icc_profile_test.jpg create mode 100644 iopaint/tests/icc_profile_test.png create mode 100644 iopaint/tests/image.png create mode 100644 iopaint/tests/mask.png create mode 100644 iopaint/tests/overture-creations-5sI6fQgYIuo.png create mode 100644 iopaint/tests/overture-creations-5sI6fQgYIuo_mask.png create mode 100644 iopaint/tests/overture-creations-5sI6fQgYIuo_mask_blur.png create mode 100644 iopaint/tests/png_parameter_test.png create mode 100644 iopaint/tests/test_adjust_mask.py create mode 100644 iopaint/tests/test_anytext.py create mode 100644 iopaint/tests/test_brushnet.py create mode 100644 iopaint/tests/test_controlnet.py create mode 100644 iopaint/tests/test_instruct_pix2pix.py create mode 100644 iopaint/tests/test_load_img.py create mode 100644 iopaint/tests/test_low_mem.py create mode 100644 iopaint/tests/test_match_histograms.py create mode 100644 iopaint/tests/test_model.py create mode 100644 iopaint/tests/test_model_md5.py create mode 100644 iopaint/tests/test_model_switch.py create mode 100644 iopaint/tests/test_outpainting.py create mode 100644 iopaint/tests/test_paint_by_example.py create mode 100644 iopaint/tests/test_plugins.py create mode 100644 iopaint/tests/test_save_exif.py create mode 100644 iopaint/tests/test_save_quality.py create mode 100644 iopaint/tests/test_sd_model.py create mode 100644 iopaint/tests/test_sdxl.py create mode 100644 iopaint/tests/utils.py create mode 100644 iopaint/web_config.py create mode 100644 main.py create mode 100644 publish.sh create mode 100644 requirements-dev.txt create mode 100644 requirements.txt create mode 100644 scripts/.gitignore create mode 100644 scripts/README.md create mode 100644 scripts/convert_vae_pt_to_diffusers.py create mode 100644 scripts/environment.yaml create mode 100644 scripts/pack.bat create mode 100755 scripts/pack.sh create mode 100644 scripts/tool.py create mode 100644 scripts/user_scripts/win_config.bat create mode 100644 scripts/user_scripts/win_setup.bat create mode 100644 scripts/user_scripts/win_setup_cn.bat create mode 100644 scripts/user_scripts/win_start.bat create mode 100644 scripts/user_scripts/win_start_cn.bat create mode 100644 scripts/user_scripts/win_update.bat create mode 100644 setup.py create mode 100644 web_app/.eslintrc.cjs create mode 100644 web_app/.gitignore create mode 100644 web_app/README.md create mode 100644 web_app/components.json create mode 100644 web_app/index.html create mode 100644 web_app/package-lock.json create mode 100644 web_app/package.json create mode 100644 web_app/postcss.config.js create mode 100644 web_app/public/favicon.ico create mode 100644 web_app/src/App.tsx create mode 100644 web_app/src/assets/kofi_button_black.png create mode 100644 web_app/src/components/Coffee.tsx create mode 100644 web_app/src/components/Cropper.tsx create mode 100644 web_app/src/components/DiffusionProgress.tsx create mode 100644 web_app/src/components/Editor.tsx create mode 100644 web_app/src/components/Extender.tsx create mode 100644 web_app/src/components/FileManager.tsx create mode 100644 web_app/src/components/FileSelect.tsx create mode 100644 web_app/src/components/Header.tsx create mode 100644 web_app/src/components/ImageSize.tsx create mode 100644 web_app/src/components/InteractiveSeg.tsx create mode 100644 web_app/src/components/Plugins.tsx create mode 100644 web_app/src/components/PromptInput.tsx create mode 100644 web_app/src/components/Settings.tsx create mode 100644 web_app/src/components/Shortcuts.tsx create mode 100644 web_app/src/components/SidePanel/CV2Options.tsx create mode 100644 web_app/src/components/SidePanel/DiffusionOptions.tsx create mode 100644 web_app/src/components/SidePanel/LDMOptions.tsx create mode 100644 web_app/src/components/SidePanel/LabelTitle.tsx create mode 100644 web_app/src/components/SidePanel/index.tsx create mode 100644 web_app/src/components/Workspace.tsx create mode 100644 web_app/src/components/ui/accordion.tsx create mode 100644 web_app/src/components/ui/alert-dialog.tsx create mode 100644 web_app/src/components/ui/button.tsx create mode 100644 web_app/src/components/ui/context-menu.tsx create mode 100644 web_app/src/components/ui/dialog.tsx create mode 100644 web_app/src/components/ui/dropdown-menu.tsx create mode 100644 web_app/src/components/ui/form.tsx create mode 100644 web_app/src/components/ui/input.tsx create mode 100644 web_app/src/components/ui/label.tsx create mode 100644 web_app/src/components/ui/popover.tsx create mode 100644 web_app/src/components/ui/progress.tsx create mode 100644 web_app/src/components/ui/radio-group.tsx create mode 100644 web_app/src/components/ui/scroll-area.tsx create mode 100644 web_app/src/components/ui/select.tsx create mode 100644 web_app/src/components/ui/separator.tsx create mode 100644 web_app/src/components/ui/sheet.tsx create mode 100644 web_app/src/components/ui/slider.tsx create mode 100644 web_app/src/components/ui/switch.tsx create mode 100644 web_app/src/components/ui/tabs.tsx create mode 100644 web_app/src/components/ui/textarea.tsx create mode 100644 web_app/src/components/ui/toast.tsx create mode 100644 web_app/src/components/ui/toaster.tsx create mode 100644 web_app/src/components/ui/toggle.tsx create mode 100644 web_app/src/components/ui/tooltip.tsx create mode 100644 web_app/src/components/ui/use-toast.ts create mode 100644 web_app/src/globals.css create mode 100644 web_app/src/hooks/useAsyncMemo.tsx create mode 100644 web_app/src/hooks/useHotkey.tsx create mode 100644 web_app/src/hooks/useImage.tsx create mode 100644 web_app/src/hooks/useInputImage.tsx create mode 100644 web_app/src/hooks/useResolution.tsx create mode 100644 web_app/src/lib/api.ts create mode 100644 web_app/src/lib/const.ts create mode 100644 web_app/src/lib/states.ts create mode 100644 web_app/src/lib/types.ts create mode 100644 web_app/src/lib/utils.ts create mode 100644 web_app/src/main.tsx create mode 100644 web_app/src/vite-env.d.ts create mode 100644 web_app/tailwind.config.js create mode 100644 web_app/tsconfig.json create mode 100644 web_app/tsconfig.node.json create mode 100644 web_app/vite.config.ts diff --git a/.github/FUNDING.yml b/.github/FUNDING.yml new file mode 100644 index 0000000..ced623d --- /dev/null +++ b/.github/FUNDING.yml @@ -0,0 +1,3 @@ +# These are supported funding model platforms + +ko_fi: Z8Z1CZJGY diff --git a/.github/ISSUE_TEMPLATE/config.yml b/.github/ISSUE_TEMPLATE/config.yml new file mode 100644 index 0000000..0ac2347 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/config.yml @@ -0,0 +1,4 @@ +contact_links: + - name: Blank issue + url: https://github.com/Sanster/lama-cleaner/issues/new + about: Other diff --git a/.github/ISSUE_TEMPLATE/🐛-bug-report.md b/.github/ISSUE_TEMPLATE/🐛-bug-report.md new file mode 100644 index 0000000..0e766d6 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/🐛-bug-report.md @@ -0,0 +1,23 @@ +--- +name: "\U0001F41B Bug Report" +about: Create a report to help us improve +title: "[BUG]" +labels: bug +assignees: '' + +--- + +**Model** +Which model are you using? + +**Describe the bug** +A clear and concise description of what the bug is. + +**Screenshots** +If applicable, add screenshots to help explain your problem. + +**System Info** +Software version used +- iopaint: +- pytorch: +- CUDA: diff --git a/.github/ISSUE_TEMPLATE/🚀-feature-request.md b/.github/ISSUE_TEMPLATE/🚀-feature-request.md new file mode 100644 index 0000000..31a82c6 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/🚀-feature-request.md @@ -0,0 +1,17 @@ +--- +name: "\U0001F680 Feature request" +about: Suggest an idea for this project +title: "[Feature Request]" +labels: '' +assignees: '' + +--- + +**Is your feature request related to a problem? Please describe.** +A clear and concise description of what the problem is. Ex. I'm always frustrated when [...] + +**Describe the solution you'd like** +A clear and concise description of what you want to happen. + +**Additional context** +Add any other context or screenshots about the feature request here. diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..e165890 --- /dev/null +++ b/.gitignore @@ -0,0 +1,12 @@ +.DS_Store +**/__pycache__ +examples/ +.idea/ +.vscode/ +build +!iopaint/app/build +dist/ +IOPaint.egg-info/ +venv/ +tmp/ +iopaint/web_app/ diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..261eeb9 --- /dev/null +++ b/LICENSE @@ -0,0 +1,201 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/README.md b/README.md new file mode 100644 index 0000000..a0f6010 --- /dev/null +++ b/README.md @@ -0,0 +1,138 @@ +

IOPaint

+

A free and open-source inpainting & outpainting tool powered by SOTA AI model.

+ +

+ + total download + + + version + + + python version + + + HuggingFace Spaces + + + Open in Colab + +

+ +|Erase([LaMa](https://www.iopaint.com/models/erase/lama))|Replace Object([PowerPaint](https://www.iopaint.com/models/diffusion/powerpaint))| +|-----|----| +|