├── sd-vae.json ├── samples ├── ProjectorzGen_Sample.png ├── ProjectorzInpaint_Sample.png ├── ProjectorzInpaint_Sample.json └── ProjectorzGen_Sample.json ├── __init__.py ├── upscalers.json ├── sd-models.json ├── pyproject.toml ├── sd-vae_sample.json ├── .github └── workflows │ └── publish.yml ├── ws.py ├── controlnet_model_list.json ├── README.md ├── controlnet_module_list.json ├── upscalers_sample.json ├── ws_manager.py ├── .gitignore ├── web └── StableProjectorzBridge.js ├── nodes.py ├── samplers.json ├── samplers_sample.json ├── apis.py ├── options.json ├── sysinfo.json └── sd-models_sample.json /sd-vae.json: -------------------------------------------------------------------------------- 1 | [{"model_name": "Configure In ComfyUI", "filename": "Dummy File Name"}] -------------------------------------------------------------------------------- /samples/ProjectorzGen_Sample.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/IgorAherne/ComfyUI-StableProjectorzBridge/HEAD/samples/ProjectorzGen_Sample.png -------------------------------------------------------------------------------- /samples/ProjectorzInpaint_Sample.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/IgorAherne/ComfyUI-StableProjectorzBridge/HEAD/samples/ProjectorzInpaint_Sample.png -------------------------------------------------------------------------------- /__init__.py: -------------------------------------------------------------------------------- 1 | from . import apis 2 | from . import ws 3 | from .nodes import NODE_CLASS_MAPPINGS, NODE_DISPLAY_NAME_MAPPINGS 4 | WEB_DIRECTORY = 'web' 5 | __all__ = ['NODE_CLASS_MAPPINGS', 'NODE_DISPLAY_NAME_MAPPINGS', 'WEB_DIRECTORY'] 6 | -------------------------------------------------------------------------------- /upscalers.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "name": "Configure In ComfyUI", 4 | "model_name": "Configure In ComfyUI", 5 | "model_path": "Dummy Model Path", 6 | "model_url": null, 7 | "scale": 4 8 | } 9 | ] -------------------------------------------------------------------------------- /sd-models.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "title": "Dummy Title", 4 | "model_name": "Configure In ComfyUI", 5 | "hash": null, 6 | "sha256": null, 7 | "filename": "Dummy File Name", 8 | "config": "Dummy Config" 9 | } 10 | ] -------------------------------------------------------------------------------- /pyproject.toml: -------------------------------------------------------------------------------- 1 | [project] 2 | name = "comfyui-stableprojectorzbridge" 3 | description = "This custom nodes enables Stable Projectorz to work with ComfyUI Directly." 4 | version = "1.0.5" 5 | license = "LICENSE" 6 | 7 | [project.urls] 8 | Repository = "https://github.com/tianlang0704/ComfyUI-StableProjectorzBridge" 9 | # Used by Comfy Registry https://comfyregistry.org 10 | 11 | [tool.comfy] 12 | PublisherId = "tianlang0704" 13 | DisplayName = "ComfyUI-StableProjectorzBridge" 14 | Icon = "" 15 | -------------------------------------------------------------------------------- /sd-vae_sample.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "model_name": "Anything-V3.0.vae.pt", 4 | "filename": "D:\\Projects\\AI\\0_Models\\2_Graphic\\VAE\\Anything-V3.0.vae.pt" 5 | }, 6 | { 7 | "model_name": "blessed-fix.vae.pt", 8 | "filename": "D:\\Projects\\AI\\0_Models\\2_Graphic\\VAE\\blessed-fix.vae.pt" 9 | }, 10 | { 11 | "model_name": "blessed2.vae.pt", 12 | "filename": "D:\\Projects\\AI\\0_Models\\2_Graphic\\VAE\\blessed2.vae.pt" 13 | }, 14 | { 15 | "model_name": "orangemix.vae.pt", 16 | "filename": "D:\\Projects\\AI\\0_Models\\2_Graphic\\VAE\\orangemix.vae.pt" 17 | } 18 | ] -------------------------------------------------------------------------------- /.github/workflows/publish.yml: -------------------------------------------------------------------------------- 1 | name: Publish to Comfy registry 2 | on: 3 | workflow_dispatch: 4 | push: 5 | branches: 6 | - main 7 | - master 8 | paths: 9 | - "pyproject.toml" 10 | 11 | jobs: 12 | publish-node: 13 | name: Publish Custom Node to registry 14 | runs-on: ubuntu-latest 15 | steps: 16 | - name: Check out code 17 | uses: actions/checkout@v4 18 | - name: Publish Custom Node 19 | uses: Comfy-Org/publish-node-action@main 20 | with: 21 | ## Add your own personal access token to your Github Repository secrets and reference it here. 22 | personal_access_token: ${{ secrets.REGISTRY_ACCESS_TOKEN }} 23 | -------------------------------------------------------------------------------- /ws.py: -------------------------------------------------------------------------------- 1 | import asyncio 2 | import json 3 | from server import PromptServer 4 | from aiohttp import WSMsgType, web 5 | from .ws_manager import WSCallsManager 6 | 7 | ws_list = [] 8 | 9 | @PromptServer.instance.routes.get('/A1111/v1/init_client') 10 | async def init_client_handler(request): 11 | ws = WSCallsManager() 12 | await ws.prepare_request(request) 13 | ws_list.append(ws) 14 | await ws.message_loop() 15 | ws_list.remove(ws) 16 | return web.Response() 17 | 18 | async def run_prompt(random_id, json_data): 19 | if len(ws_list) <= 0: 20 | return 21 | for ws in ws_list: 22 | await ws.call("run_prompt", {'random_id': random_id, 'json_data': json_data}, timeout = 600) 23 | queue = PromptServer.instance.prompt_queue 24 | if not queue: 25 | return 26 | count = queue.get_tasks_remaining() 27 | while count > 0: 28 | await asyncio.sleep(1) 29 | count = queue.get_tasks_remaining() 30 | 31 | 32 | 33 | -------------------------------------------------------------------------------- /controlnet_model_list.json: -------------------------------------------------------------------------------- 1 | { 2 | "model_list": [ 3 | "None", 4 | "control_canny-fp16 [e3fe7712]", 5 | "control_depth-fp16 [400750f6]", 6 | "control_hed-fp16 [13fee50b]", 7 | "control_lora_rank128_v11f1e_sd15_tile_fp16 [d258993f]", 8 | "control_mediapipe_face_sd15_v2 [9c7784a9]", 9 | "control_mlsd-fp16 [e3705cfa]", 10 | "control_normal-fp16 [63f96f7c]", 11 | "control_openpose-fp16 [9ca67cc5]", 12 | "control_scribble-fp16 [c508311e]", 13 | "control_seg-fp16 [b9c1cc12]", 14 | "control_v11p_sd15_inpaint_fp16 [be8bc0ed]", 15 | "control_v2p_sd15_mediapipe_face [9c7784a9]", 16 | "controlnet11Models_animeline [c58f338b]", 17 | "controlnet11Models_canny [b18e0966]", 18 | "controlnet11Models_depth [4b72d323]", 19 | "controlnet11Models_inpaint [be8bc0ed]", 20 | "controlnet11Models_lineart [5c23b17d]", 21 | "controlnet11Models_mlsd [77b5ad24]", 22 | "controlnet11Models_normal [592a19d8]", 23 | "controlnet11Models_openpose [73c2b67d]", 24 | "controlnet11Models_pix2pix [fabb3f7d]", 25 | "controlnet11Models_scribble [4e6af23e]", 26 | "controlnet11Models_seg [ab613144]", 27 | "controlnet11Models_shuffle [04a71f87]", 28 | "controlnet11Models_softedge [f616a34f]", 29 | "controlnet11Models_tile [39a89b25]", 30 | "diffusers_xl_depth_full [2f51180b]", 31 | "t2iadapter_color-fp16 [743b5c62]" 32 | ] 33 | } -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Install 2 | The easiest way is to use ComfyUI Manager to install, otherwise just clone into ComfyUI's custom node folder. 3 | 4 | # Use 5 | 1. Create a workflow with Projector Controlnet Input as input, and Projectorz Output as output 6 | 2. Click Gen Art in Stable Projectorz 7 | 3. Done 8 | 9 | # Info 10 | These custom nodes enable Stable Projectorz to work with ComfyUI Directly. 11 | 12 | StableProjectorz sends controlnet images/masks and inpaint images/masks to ComfyUI nodes, and then ComfyUI process them and sends them back to StableProjectorz. 13 | 14 | All settings in Stable Projectorz are accessable through ProjectorzParameter node and ProjectorzControlnetParameter node. 15 | 16 | Enjoy! 17 | 18 | # Sample Workflows 19 |
20 | Sample workflow for Generating with Controlnet(the default way with Projectorz) 21 |
22 | 23 |
24 | Sample workflow for inpainting(Projectorz brush fill) 25 |
26 | 27 |
28 |
29 |
30 | 31 | # Basic settings 32 |
33 | 34 |
35 | 36 |
37 | 38 |
39 | 40 |
41 | 42 | -------------------------------------------------------------------------------- /controlnet_module_list.json: -------------------------------------------------------------------------------- 1 | { 2 | "module_list": [ 3 | "None", 4 | "softedge_pidinet", 5 | "shuffle", 6 | "seg_ofade20k", 7 | "scribble_pidinet", 8 | "reference_only", 9 | "openpose_full", 10 | "normalbae", 11 | "mlsd", 12 | "lineart_standard (from white bg & black line)", 13 | "depth_midas", 14 | "depth_marigold", 15 | "canny", 16 | "invert (from white bg & black line)", 17 | "InsightFace+CLIP-H (IPAdapter)", 18 | "ClipVision (Photomaker)", 19 | "CLIP-ViT-bigG (IPAdapter)", 20 | "CLIP-ViT-H (IPAdapter)", 21 | "InsightFace (InstantID)", 22 | "CLIP-G (Revision)", 23 | "CLIP-G (Revision ignore prompt)", 24 | "tile_resample", 25 | "tile_colorfix+sharp", 26 | "tile_colorfix", 27 | "threshold", 28 | "t2ia_sketch_pidi", 29 | "t2ia_color_grid", 30 | "softedge_teed", 31 | "softedge_pidisafe", 32 | "softedge_hedsafe", 33 | "softedge_hed", 34 | "seg_ufade20k", 35 | "seg_ofcoco", 36 | "seg_anime_face", 37 | "scribble_xdog", 38 | "scribble_hed", 39 | "reference_adain+attn", 40 | "reference_adain", 41 | "recolor_luminance", 42 | "recolor_intensity", 43 | "openpose_hand", 44 | "openpose_faceonly", 45 | "openpose_face", 46 | "openpose", 47 | "normal_midas", 48 | "mediapipe_face", 49 | "lineart_realistic", 50 | "lineart_coarse", 51 | "lineart_anime_denoise", 52 | "lineart_anime", 53 | "instant_id_face_keypoints", 54 | "inpaint_only+lama", 55 | "inpaint_only", 56 | "inpaint_global_harmonious", 57 | "dw_openpose_full", 58 | "depth_zoe", 59 | "depth_leres++", 60 | "depth_leres", 61 | "depth_hand_refiner", 62 | "depth_anything", 63 | "densepose_parula (black bg & blue torso)", 64 | "densepose (pruple bg & purple torso)", 65 | "blur_gaussian", 66 | "animal_openpose" 67 | ] 68 | } -------------------------------------------------------------------------------- /upscalers_sample.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "name": "None", 4 | "model_name": null, 5 | "model_path": null, 6 | "model_url": null, 7 | "scale": 4.0 8 | }, 9 | { 10 | "name": "Lanczos", 11 | "model_name": null, 12 | "model_path": null, 13 | "model_url": null, 14 | "scale": 4.0 15 | }, 16 | { 17 | "name": "Nearest", 18 | "model_name": null, 19 | "model_path": null, 20 | "model_url": null, 21 | "scale": 4.0 22 | }, 23 | { 24 | "name": "DAT x2", 25 | "model_name": null, 26 | "model_path": "https://github.com/n0kovo/dat_upscaler_models/raw/main/DAT/DAT_x2.pth", 27 | "model_url": null, 28 | "scale": 2.0 29 | }, 30 | { 31 | "name": "DAT x3", 32 | "model_name": null, 33 | "model_path": "https://github.com/n0kovo/dat_upscaler_models/raw/main/DAT/DAT_x3.pth", 34 | "model_url": null, 35 | "scale": 3.0 36 | }, 37 | { 38 | "name": "DAT x4", 39 | "model_name": null, 40 | "model_path": "https://github.com/n0kovo/dat_upscaler_models/raw/main/DAT/DAT_x4.pth", 41 | "model_url": null, 42 | "scale": 4.0 43 | }, 44 | { 45 | "name": "ESRGAN_4x", 46 | "model_name": "ESRGAN_4x", 47 | "model_path": "D:\\Projects\\AI\\2_Graphic\\stable-diffusion-webui-forge\\models\\ESRGAN\\ESRGAN_4x.pth", 48 | "model_url": null, 49 | "scale": 4.0 50 | }, 51 | { 52 | "name": "LDSR", 53 | "model_name": null, 54 | "model_path": null, 55 | "model_url": null, 56 | "scale": 4.0 57 | }, 58 | { 59 | "name": "R-ESRGAN 4x+", 60 | "model_name": null, 61 | "model_path": "https://github.com/xinntao/Real-ESRGAN/releases/download/v0.1.0/RealESRGAN_x4plus.pth", 62 | "model_url": null, 63 | "scale": 4.0 64 | }, 65 | { 66 | "name": "R-ESRGAN 4x+ Anime6B", 67 | "model_name": null, 68 | "model_path": "https://github.com/xinntao/Real-ESRGAN/releases/download/v0.2.2.4/RealESRGAN_x4plus_anime_6B.pth", 69 | "model_url": null, 70 | "scale": 4.0 71 | }, 72 | { 73 | "name": "ScuNET GAN", 74 | "model_name": "ScuNET GAN", 75 | "model_path": "https://github.com/cszn/KAIR/releases/download/v1.0/scunet_color_real_gan.pth", 76 | "model_url": null, 77 | "scale": 4.0 78 | }, 79 | { 80 | "name": "ScuNET PSNR", 81 | "model_name": "ScuNET GAN", 82 | "model_path": "https://github.com/cszn/KAIR/releases/download/v1.0/scunet_color_real_psnr.pth", 83 | "model_url": null, 84 | "scale": 4.0 85 | }, 86 | { 87 | "name": "SwinIR 4x", 88 | "model_name": "SwinIR 4x", 89 | "model_path": "https://github.com/JingyunLiang/SwinIR/releases/download/v0.0/003_realSR_BSRGAN_DFOWMFC_s64w8_SwinIR-L_x4_GAN.pth", 90 | "model_url": null, 91 | "scale": 4.0 92 | } 93 | ] -------------------------------------------------------------------------------- /ws_manager.py: -------------------------------------------------------------------------------- 1 | import asyncio 2 | import json 3 | from aiohttp import web, WSMsgType 4 | 5 | 6 | class WSCallsManager: 7 | ws = None 8 | def __init__(self, message_handler=None): 9 | self.calls = dict() 10 | self.call_id = 0 11 | self.message_handler = message_handler 12 | self.destroyed = False 13 | 14 | async def prepare_request(self, request): 15 | ws = web.WebSocketResponse() 16 | await ws.prepare(request) 17 | self.ws = ws 18 | 19 | async def call(self, action, params, timeout=30): 20 | self.call_id += 1 21 | payload = { 22 | 'call_id': self.call_id, 23 | 'action': action, 24 | 'params': params 25 | } 26 | loop = asyncio.get_event_loop() 27 | call = loop.create_future() 28 | self.calls[self.call_id] = (loop, call) 29 | 30 | await self.ws.send_str(json.dumps(payload)) 31 | await asyncio.wait_for(call, timeout) 32 | return call.result() 33 | 34 | def handle_call(self, call_id, result=None, error=None): 35 | loop, call = self._get_call_and_remove(call_id) 36 | if (call.cancelled()): 37 | return 38 | if (error is not None): 39 | loop.call_soon_threadsafe(call.set_exception, ValueError(error)) 40 | else: 41 | loop.call_soon_threadsafe(call.set_result, result) 42 | 43 | def _get_call_and_remove(self, call_id): 44 | (loop, call) = self.calls.get(call_id, None) 45 | if call is not None: 46 | self.calls.pop(call_id) 47 | else: 48 | raise ValueError(f'call {call_id} not found') 49 | return loop, call 50 | 51 | async def message_loop(self): 52 | async for msg in self.ws: 53 | if self.destroyed: break 54 | if self.message_handler is not None and await self.message_handler(msg): 55 | continue 56 | if msg.type == WSMsgType.TEXT: 57 | payload = json.loads(msg.data) 58 | if 'call_id' in payload: 59 | call_id = payload['call_id'] 60 | if 'error' not in payload and 'result' not in payload: 61 | await self.ws.send_str(json.dumps({ call_id: call_id, 'error': 'result not found in payload'})) 62 | else: 63 | self.handle_call(call_id, result=payload.get("result", None), error=payload.get("error", None)) 64 | else: 65 | if 'error' in payload: 66 | print('Remote error', payload['error']) 67 | await self.ws.send_str(json.dumps({ 'error': 'call_id not found in payload'})) 68 | elif msg.type == WSMsgType.ERROR: 69 | print('ws connection closed with exception %s' % self.ws.exception()) 70 | else: 71 | await self.ws.send_str('invalid msg type') 72 | await self.destroy() 73 | 74 | async def destroy(self): 75 | if self.destroyed: 76 | return 77 | self.destroyed = True 78 | await self.ws.close() 79 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Byte-compiled / optimized / DLL files 2 | __pycache__/ 3 | *.py[cod] 4 | *$py.class 5 | 6 | # C extensions 7 | *.so 8 | 9 | # Distribution / packaging 10 | .Python 11 | build/ 12 | develop-eggs/ 13 | dist/ 14 | downloads/ 15 | eggs/ 16 | .eggs/ 17 | lib/ 18 | lib64/ 19 | parts/ 20 | sdist/ 21 | var/ 22 | wheels/ 23 | share/python-wheels/ 24 | *.egg-info/ 25 | .installed.cfg 26 | *.egg 27 | MANIFEST 28 | 29 | # PyInstaller 30 | # Usually these files are written by a python script from a template 31 | # before PyInstaller builds the exe, so as to inject date/other infos into it. 32 | *.manifest 33 | *.spec 34 | 35 | # Installer logs 36 | pip-log.txt 37 | pip-delete-this-directory.txt 38 | 39 | # Unit test / coverage reports 40 | htmlcov/ 41 | .tox/ 42 | .nox/ 43 | .coverage 44 | .coverage.* 45 | .cache 46 | nosetests.xml 47 | coverage.xml 48 | *.cover 49 | *.py,cover 50 | .hypothesis/ 51 | .pytest_cache/ 52 | cover/ 53 | 54 | # Translations 55 | *.mo 56 | *.pot 57 | 58 | # Django stuff: 59 | *.log 60 | local_settings.py 61 | db.sqlite3 62 | db.sqlite3-journal 63 | 64 | # Flask stuff: 65 | instance/ 66 | .webassets-cache 67 | 68 | # Scrapy stuff: 69 | .scrapy 70 | 71 | # Sphinx documentation 72 | docs/_build/ 73 | 74 | # PyBuilder 75 | .pybuilder/ 76 | target/ 77 | 78 | # Jupyter Notebook 79 | .ipynb_checkpoints 80 | 81 | # IPython 82 | profile_default/ 83 | ipython_config.py 84 | 85 | # pyenv 86 | # For a library or package, you might want to ignore these files since the code is 87 | # intended to run in multiple environments; otherwise, check them in: 88 | # .python-version 89 | 90 | # pipenv 91 | # According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control. 92 | # However, in case of collaboration, if having platform-specific dependencies or dependencies 93 | # having no cross-platform support, pipenv may install dependencies that don't work, or not 94 | # install all needed dependencies. 95 | #Pipfile.lock 96 | 97 | # poetry 98 | # Similar to Pipfile.lock, it is generally recommended to include poetry.lock in version control. 99 | # This is especially recommended for binary packages to ensure reproducibility, and is more 100 | # commonly ignored for libraries. 101 | # https://python-poetry.org/docs/basic-usage/#commit-your-poetrylock-file-to-version-control 102 | #poetry.lock 103 | 104 | # pdm 105 | # Similar to Pipfile.lock, it is generally recommended to include pdm.lock in version control. 106 | #pdm.lock 107 | # pdm stores project-wide configurations in .pdm.toml, but it is recommended to not include it 108 | # in version control. 109 | # https://pdm.fming.dev/latest/usage/project/#working-with-version-control 110 | .pdm.toml 111 | .pdm-python 112 | .pdm-build/ 113 | 114 | # PEP 582; used by e.g. github.com/David-OConnor/pyflow and github.com/pdm-project/pdm 115 | __pypackages__/ 116 | 117 | # Celery stuff 118 | celerybeat-schedule 119 | celerybeat.pid 120 | 121 | # SageMath parsed files 122 | *.sage.py 123 | 124 | # Environments 125 | .env 126 | .venv 127 | env/ 128 | venv/ 129 | ENV/ 130 | env.bak/ 131 | venv.bak/ 132 | 133 | # Spyder project settings 134 | .spyderproject 135 | .spyproject 136 | 137 | # Rope project settings 138 | .ropeproject 139 | 140 | # mkdocs documentation 141 | /site 142 | 143 | # mypy 144 | .mypy_cache/ 145 | .dmypy.json 146 | dmypy.json 147 | 148 | # Pyre type checker 149 | .pyre/ 150 | 151 | # pytype static type analyzer 152 | .pytype/ 153 | 154 | # Cython debug symbols 155 | cython_debug/ 156 | 157 | # PyCharm 158 | # JetBrains specific template is maintained in a separate JetBrains.gitignore that can 159 | # be found at https://github.com/github/gitignore/blob/main/Global/JetBrains.gitignore 160 | # and can be added to the global gitignore or merged into this file. For a more nuclear 161 | # option (not recommended) you can uncomment the following to ignore the entire idea folder. 162 | #.idea/ 163 | -------------------------------------------------------------------------------- /web/StableProjectorzBridge.js: -------------------------------------------------------------------------------- 1 | import { app } from "../../../scripts/app.js"; 2 | import { api } from "../../../scripts/api.js" 3 | 4 | console.log("[StableProjectorzBridge]", "Loading js extension"); 5 | const FILENAME_FORMAT_INIT_PREFIX = 'ProjectorInitBlob_{0}_' 6 | const FILENAME_FORMAT_CONTROLNET_PREFIX = 'ProjectorControlnetBlob_{0}_' 7 | const FILENAME_FORMAT_OUTPUT_PREFIX = 'ProjectorOutputBlob_{0}_' 8 | const FILENAME_FORMAT_INIT_PREFIX_DEFAULT = FILENAME_FORMAT_INIT_PREFIX.replace("{0}", "0") 9 | const FILENAME_FORMAT_CONTROLNET_PREFIX_DEFAULT = FILENAME_FORMAT_CONTROLNET_PREFIX.replace("{0}", "0") 10 | const FILENAME_FORMAT_OUTPUT_PREFIX_DEFAULT = FILENAME_FORMAT_OUTPUT_PREFIX.replace("{0}", "0") 11 | const DEFAUL_VALUE_TEXT = "!!!Autofill when executed!!!"; 12 | let input_init_prefix = FILENAME_FORMAT_INIT_PREFIX_DEFAULT; 13 | let input_controlnet_prefix = FILENAME_FORMAT_CONTROLNET_PREFIX_DEFAULT; 14 | let output_prefix = FILENAME_FORMAT_OUTPUT_PREFIX_DEFAULT; 15 | let data = {}; 16 | let socket; 17 | app.registerExtension({ 18 | name: "Comfy.StableProjectorzBridge", 19 | init() { 20 | }, 21 | async setup() { 22 | setInterval(() => { 23 | if (!socket) { 24 | createSocket(); 25 | } 26 | }, 1000); 27 | }, 28 | async beforeRegisterNodeDef(nodeType, nodeData, app) { 29 | if (nodeType.comfyClass === 'ProjectorzInitInput') { 30 | const this_handler = function() { 31 | const prefix_widget = this.widgets[1]; 32 | prefix_widget.value = input_init_prefix; 33 | } 34 | const onSerialize = nodeType.prototype.onSerialize; 35 | nodeType.prototype.onSerialize = async function(...args) { 36 | if(onSerialize) await onSerialize.call(this, ...args); 37 | this_handler.call(this); 38 | } 39 | } 40 | else if (nodeType.comfyClass === 'ProjectorzControlnetInput') { 41 | const this_handler = function() { 42 | const prefix_widget = this.widgets[1]; 43 | prefix_widget.value = input_controlnet_prefix; 44 | } 45 | const onSerialize = nodeType.prototype.onSerialize; 46 | nodeType.prototype.onSerialize = async function(...args) { 47 | if(onSerialize) await onSerialize.call(this, ...args); 48 | this_handler.call(this); 49 | } 50 | } 51 | else if (nodeType.comfyClass === 'ProjectorzOutput') { 52 | const this_handler = function() { 53 | const prefix_widget = this.widgets[0]; 54 | prefix_widget.value = output_prefix; 55 | } 56 | const onSerialize = nodeType.prototype.onSerialize; 57 | nodeType.prototype.onSerialize = async function(...args) { 58 | if(onSerialize) await onSerialize.call(this, ...args); 59 | this_handler.call(this); 60 | } 61 | } 62 | else if (nodeType.comfyClass === 'ProjectorzParameter') { 63 | const this_handler = function() { 64 | const name = this.widgets[0]; 65 | const value = this.widgets[1]; 66 | if (data[name.value] == undefined) { 67 | value.value = DEFAUL_VALUE_TEXT; 68 | return; 69 | } 70 | value.value = data[name.value]; 71 | } 72 | const onSerialize = nodeType.prototype.onSerialize; 73 | nodeType.prototype.onSerialize = async function(...args) { 74 | if(onSerialize) await onSerialize.call(this, ...args); 75 | this_handler.call(this); 76 | } 77 | } 78 | else if (nodeType.comfyClass === 'ProjectorzControlnetParameter') { 79 | const this_handler = function() { 80 | const index = this.widgets[0]; 81 | const name = this.widgets[1]; 82 | const value = this.widgets[2]; 83 | const parameter = data.alwayson_scripts?.controlnet?.args?.[index.value]?.[name.value]; 84 | if (parameter == undefined) { 85 | value.value = DEFAUL_VALUE_TEXT; 86 | return; 87 | } 88 | value.value = parameter; 89 | } 90 | const onSerialize = nodeType.prototype.onSerialize; 91 | nodeType.prototype.onSerialize = async function(...args) { 92 | if(onSerialize) await onSerialize.call(this, ...args); 93 | this_handler.call(this); 94 | } 95 | } 96 | } 97 | }); 98 | 99 | function createSocket(){ 100 | socket = new WebSocket( 101 | `ws${window.location.protocol === "https:" ? "s" : ""}://${api.api_host}/A1111/v1/init_client` 102 | ); 103 | socket.addEventListener("open", () => { 104 | }); 105 | socket.addEventListener("error", () => { 106 | if (socket) socket.close(); 107 | }); 108 | socket.addEventListener("close", () => { 109 | setTimeout(() => { 110 | socket = null; 111 | }, 300); 112 | }); 113 | socket.addEventListener("message", (event) => { 114 | try { 115 | const msg = JSON.parse(event.data); 116 | switch (msg.action) { 117 | case "run_prompt": 118 | run_prompt(msg.call_id, msg.params); 119 | break; 120 | default: 121 | console.warn("Unhandled message:", event.data); 122 | break; 123 | } 124 | } catch (error) { 125 | console.warn("Unhandled message:", event.data, error); 126 | } 127 | }); 128 | } 129 | 130 | async function respond(callId, result) { 131 | socket.send(JSON.stringify({ 132 | call_id: callId, 133 | result: result, 134 | })); 135 | } 136 | 137 | async function run_prompt(callId, params) { 138 | const randomId = params.random_id ?? "0"; 139 | data = params.json_data ?? "{}"; 140 | input_init_prefix = FILENAME_FORMAT_INIT_PREFIX.replace("{0}", randomId); 141 | input_controlnet_prefix = FILENAME_FORMAT_CONTROLNET_PREFIX.replace("{0}", randomId); 142 | output_prefix = FILENAME_FORMAT_OUTPUT_PREFIX.replace("{0}", randomId); 143 | const n_iter = data.n_iter ?? 1; 144 | await app.queuePrompt(0, n_iter) 145 | respond(callId, "done"); 146 | } -------------------------------------------------------------------------------- /nodes.py: -------------------------------------------------------------------------------- 1 | import json 2 | import os 3 | from PIL import Image 4 | from PIL.PngImagePlugin import PngInfo 5 | import numpy as np 6 | import torch 7 | import folder_paths 8 | from nodes import LoadImage 9 | from . import apis 10 | 11 | DEFAUL_VALUE_TEXT = "!!!Autofill when executed!!!"; 12 | 13 | def get_empty_image(): 14 | r = torch.full([1, 512, 512, 1], ((0xFF >> 16) & 0xFF) / 0xFF) 15 | g = torch.full([1, 512, 512, 1], ((0xFF >> 8) & 0xFF) / 0xFF) 16 | b = torch.full([1, 512, 512, 1], ((0xFF) & 0xFF) / 0xFF) 17 | return torch.cat((r, g, b), dim=-1) 18 | 19 | def load_image(image_name): 20 | try: 21 | loadImage = LoadImage() 22 | (output_image, output_mask) = loadImage.load_image(image_name) 23 | except: 24 | output_image = get_empty_image() 25 | output_mask = torch.full([512, 512], 0) 26 | return (output_image, output_mask) 27 | 28 | class ProjectorzInitInput: 29 | channel_list = ["red", "green", "blue", "alpha"] 30 | @classmethod 31 | def INPUT_TYPES(cls): 32 | return { 33 | "required": { 34 | "index": ("INT", {"default": 0}), 35 | "name_prefix": ("STRING", {"default": apis.FILENAME_FORMAT_INIT_PREFIX_DEFAULT}), 36 | "mask_channel": (ProjectorzInitInput.channel_list,), 37 | } 38 | } 39 | 40 | RETURN_TYPES = ("IMAGE", "MASK") 41 | FUNCTION = "run" 42 | CATEGORY = "Projectorz" 43 | 44 | def run(self, index, name_prefix, mask_channel): 45 | image_name = name_prefix + str(index) + ".png" 46 | (output_image, output_mask) = load_image(image_name) 47 | image_mask_name = name_prefix + str(index) + "_mask.png" 48 | (output_image_mask, output_mask_mask) = load_image(image_mask_name) 49 | mask_channel_index = ProjectorzInitInput.channel_list.index(mask_channel) 50 | mask = output_image_mask[:, :, :, mask_channel_index] if mask_channel_index < 3 else output_mask_mask 51 | return (output_image, mask) 52 | 53 | class ProjectorzControlnetInput: 54 | @classmethod 55 | def INPUT_TYPES(cls): 56 | return { 57 | "required": { 58 | "index": ("INT", {"default": 0}), 59 | "name_prefix": ("STRING", {"default": apis.FILENAME_FORMAT_CONTROLNET_PREFIX_DEFAULT}), 60 | } 61 | } 62 | 63 | RETURN_TYPES = ("IMAGE", "MASK") 64 | FUNCTION = "run" 65 | CATEGORY = "Projectorz" 66 | 67 | def run(self, index, name_prefix): 68 | image_name = name_prefix + str(index) + ".png" 69 | (output_image, output_mask) = load_image(image_name) 70 | image_mask_name = name_prefix + str(index) + "_mask.png" 71 | (output_image_mask, output_mask_mask) = load_image(image_mask_name) 72 | return (output_image, output_mask_mask) 73 | 74 | class ProjectorzOutput: 75 | @classmethod 76 | def INPUT_TYPES(cls): 77 | return { 78 | "required": { 79 | "images": ("IMAGE",), 80 | "name_prefix": ("STRING", {"default": apis.FILENAME_FORMAT_OUTPUT_PREFIX_DEFAULT}), 81 | }, 82 | "hidden": {"prompt": "PROMPT", "extra_pnginfo": "EXTRA_PNGINFO"}, 83 | } 84 | 85 | RETURN_TYPES = () 86 | FUNCTION = "run" 87 | CATEGORY = "Projectorz" 88 | OUTPUT_NODE = True 89 | 90 | def run(self, images, name_prefix, prompt=None, extra_pnginfo=None): 91 | output_dir = folder_paths.get_output_directory() 92 | dup_count = 0 93 | for (batch_number, image) in enumerate(images): 94 | i = 255. * image.cpu().numpy() 95 | img = Image.fromarray(np.clip(i, 0, 255).astype(np.uint8)) 96 | metadata = PngInfo() 97 | if prompt is not None: 98 | metadata.add_text("prompt", json.dumps(prompt)) 99 | if extra_pnginfo is not None: 100 | for x in extra_pnginfo: 101 | metadata.add_text(x, json.dumps(extra_pnginfo[x])) 102 | output_filename = f"{name_prefix}_{batch_number}_{dup_count}.png" 103 | while os.path.exists(os.path.join(output_dir, output_filename)): 104 | dup_count += 1 105 | output_filename = f"{name_prefix}_{batch_number}_{dup_count}.png" 106 | img.save(os.path.join(output_dir, output_filename), pnginfo=metadata) 107 | return (None,) 108 | 109 | PROJECTORZ_PARAMETERS = [ 110 | 'prompt', 111 | 'negative_prompt', 112 | 'sampler_name', 113 | 'batch_size', 114 | 'n_iter', 115 | 'steps', 116 | 'cfg_scale', 117 | 'width', 118 | 'height', 119 | 'seed', 120 | 'refiner_checkpoint', 121 | 'refiner_switch_at', 122 | 'tiling', 123 | 'enable_hr', 124 | 'hr_upscaler', 125 | 'hr_sampler_name', 126 | 'hr_scale', 127 | 'denoising_strength', 128 | 'hr_second_pass_steps', 129 | ] 130 | class ProjectorzParameter: 131 | @classmethod 132 | def INPUT_TYPES(cls): 133 | return { 134 | "required": { 135 | "name": (PROJECTORZ_PARAMETERS, {"default": PROJECTORZ_PARAMETERS[0]}), 136 | "value": ("STRING", {"default": DEFAUL_VALUE_TEXT}), 137 | } 138 | } 139 | 140 | RETURN_TYPES = ("STRING", ) 141 | FUNCTION = "run" 142 | CATEGORY = "Projectorz" 143 | 144 | def run(self, name, value): 145 | return (str(value),) 146 | 147 | PROJECTORZ_CONTROLNET_PARAMETERS = [ 148 | 'enabled', 149 | 'resize_mode', 150 | 'module', 151 | 'model', 152 | 'weight', 153 | 'low_vram', 154 | 'processor_res', 155 | 'threshold_a', 156 | 'threshold_b', 157 | 'guidance_start', 158 | 'guidance_end', 159 | 'control_mode', 160 | 'pixel_perfect', 161 | ] 162 | class ProjectorzControlnetParameter: 163 | @classmethod 164 | def INPUT_TYPES(cls): 165 | return { 166 | "required": { 167 | "index": ("INT", {"default": 0}), 168 | "name": (PROJECTORZ_CONTROLNET_PARAMETERS, {"default": PROJECTORZ_CONTROLNET_PARAMETERS[0]}), 169 | "value": ("STRING", {"default": DEFAUL_VALUE_TEXT}), 170 | } 171 | } 172 | 173 | RETURN_TYPES = ("STRING", ) 174 | FUNCTION = "run" 175 | CATEGORY = "Projectorz" 176 | 177 | def run(self, index, name, value): 178 | return (str(value),) 179 | 180 | class ProjectorzStringToInt: 181 | @classmethod 182 | def INPUT_TYPES(cls): 183 | return { 184 | "required": { 185 | "string": ("STRING", {"default": ""}), 186 | } 187 | } 188 | 189 | RETURN_TYPES = ("INT", ) 190 | FUNCTION = "run" 191 | CATEGORY = "Projectorz" 192 | 193 | def run(self, string): 194 | return (int(string),) 195 | 196 | class ProjectorzStringToFloat: 197 | @classmethod 198 | def INPUT_TYPES(cls): 199 | return { 200 | "required": { 201 | "string": ("STRING", {"default": ""}), 202 | } 203 | } 204 | 205 | RETURN_TYPES = ("FLOAT", ) 206 | FUNCTION = "run" 207 | CATEGORY = "Projectorz" 208 | 209 | def run(self, string): 210 | return (float(string),) 211 | 212 | NODE_CLASS_MAPPINGS = { 213 | "ProjectorzInitInput": ProjectorzInitInput, 214 | "ProjectorzControlnetInput": ProjectorzControlnetInput, 215 | "ProjectorzOutput": ProjectorzOutput, 216 | "ProjectorzParameter": ProjectorzParameter, 217 | "ProjectorzControlnetParameter": ProjectorzControlnetParameter, 218 | "ProjectorzStringToInt": ProjectorzStringToInt, 219 | "ProjectorzStringToFloat": ProjectorzStringToFloat, 220 | } 221 | 222 | NODE_DISPLAY_NAME_MAPPINGS = { 223 | "ProjectorzInitInput": "Projectorz Init Input", 224 | "ProjectorzControlnetInput": "Projectorz Controlnet Input", 225 | "ProjectorzOutput": "Projectorz Output", 226 | "ProjectorzParameter": "Projectorz Parameter", 227 | "ProjectorzControlnetParameter": "Projectorz Controlnet Parameter", 228 | "ProjectorzStringToInt": "Projectorz String To Int", 229 | "ProjectorzStringToFloat": "Projectorz String To Float", 230 | } -------------------------------------------------------------------------------- /samplers.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "name": "DPM++ 2M Karras", 4 | "aliases": [ 5 | "k_dpmpp_2m_ka" 6 | ], 7 | "options": { 8 | "scheduler": "karras" 9 | } 10 | }, 11 | { 12 | "name": "DPM++ SDE Karras", 13 | "aliases": [ 14 | "k_dpmpp_sde_ka" 15 | ], 16 | "options": { 17 | "scheduler": "karras", 18 | "second_order": "True", 19 | "brownian_noise": "True" 20 | } 21 | }, 22 | { 23 | "name": "DPM++ 2M SDE Exponential", 24 | "aliases": [ 25 | "k_dpmpp_2m_sde_exp" 26 | ], 27 | "options": { 28 | "scheduler": "exponential", 29 | "brownian_noise": "True" 30 | } 31 | }, 32 | { 33 | "name": "DPM++ 2M SDE Karras", 34 | "aliases": [ 35 | "k_dpmpp_2m_sde_ka" 36 | ], 37 | "options": { 38 | "scheduler": "karras", 39 | "brownian_noise": "True" 40 | } 41 | }, 42 | { 43 | "name": "Euler a", 44 | "aliases": [ 45 | "k_euler_a", 46 | "k_euler_ancestral" 47 | ], 48 | "options": { 49 | "uses_ensd": "True" 50 | } 51 | }, 52 | { 53 | "name": "Euler", 54 | "aliases": [ 55 | "k_euler" 56 | ], 57 | "options": {} 58 | }, 59 | { 60 | "name": "LMS", 61 | "aliases": [ 62 | "k_lms" 63 | ], 64 | "options": {} 65 | }, 66 | { 67 | "name": "Heun", 68 | "aliases": [ 69 | "k_heun" 70 | ], 71 | "options": { 72 | "second_order": "True" 73 | } 74 | }, 75 | { 76 | "name": "DPM2", 77 | "aliases": [ 78 | "k_dpm_2" 79 | ], 80 | "options": { 81 | "discard_next_to_last_sigma": "True", 82 | "second_order": "True" 83 | } 84 | }, 85 | { 86 | "name": "DPM2 a", 87 | "aliases": [ 88 | "k_dpm_2_a" 89 | ], 90 | "options": { 91 | "discard_next_to_last_sigma": "True", 92 | "uses_ensd": "True", 93 | "second_order": "True" 94 | } 95 | }, 96 | { 97 | "name": "DPM++ 2S a", 98 | "aliases": [ 99 | "k_dpmpp_2s_a" 100 | ], 101 | "options": { 102 | "uses_ensd": "True", 103 | "second_order": "True" 104 | } 105 | }, 106 | { 107 | "name": "DPM++ 2M", 108 | "aliases": [ 109 | "k_dpmpp_2m" 110 | ], 111 | "options": {} 112 | }, 113 | { 114 | "name": "DPM++ SDE", 115 | "aliases": [ 116 | "k_dpmpp_sde" 117 | ], 118 | "options": { 119 | "second_order": "True", 120 | "brownian_noise": "True" 121 | } 122 | }, 123 | { 124 | "name": "DPM++ 2M SDE", 125 | "aliases": [ 126 | "k_dpmpp_2m_sde_ka" 127 | ], 128 | "options": { 129 | "brownian_noise": "True" 130 | } 131 | }, 132 | { 133 | "name": "DPM++ 2M SDE Heun", 134 | "aliases": [ 135 | "k_dpmpp_2m_sde_heun" 136 | ], 137 | "options": { 138 | "brownian_noise": "True", 139 | "solver_type": "heun" 140 | } 141 | }, 142 | { 143 | "name": "DPM++ 2M SDE Heun Karras", 144 | "aliases": [ 145 | "k_dpmpp_2m_sde_heun_ka" 146 | ], 147 | "options": { 148 | "scheduler": "karras", 149 | "brownian_noise": "True", 150 | "solver_type": "heun" 151 | } 152 | }, 153 | { 154 | "name": "DPM++ 2M SDE Heun Exponential", 155 | "aliases": [ 156 | "k_dpmpp_2m_sde_heun_exp" 157 | ], 158 | "options": { 159 | "scheduler": "exponential", 160 | "brownian_noise": "True", 161 | "solver_type": "heun" 162 | } 163 | }, 164 | { 165 | "name": "DPM++ 3M SDE", 166 | "aliases": [ 167 | "k_dpmpp_3m_sde" 168 | ], 169 | "options": { 170 | "discard_next_to_last_sigma": "True", 171 | "brownian_noise": "True" 172 | } 173 | }, 174 | { 175 | "name": "DPM++ 3M SDE Karras", 176 | "aliases": [ 177 | "k_dpmpp_3m_sde_ka" 178 | ], 179 | "options": { 180 | "scheduler": "karras", 181 | "discard_next_to_last_sigma": "True", 182 | "brownian_noise": "True" 183 | } 184 | }, 185 | { 186 | "name": "DPM++ 3M SDE Exponential", 187 | "aliases": [ 188 | "k_dpmpp_3m_sde_exp" 189 | ], 190 | "options": { 191 | "scheduler": "exponential", 192 | "discard_next_to_last_sigma": "True", 193 | "brownian_noise": "True" 194 | } 195 | }, 196 | { 197 | "name": "DPM fast", 198 | "aliases": [ 199 | "k_dpm_fast" 200 | ], 201 | "options": { 202 | "uses_ensd": "True" 203 | } 204 | }, 205 | { 206 | "name": "DPM adaptive", 207 | "aliases": [ 208 | "k_dpm_ad" 209 | ], 210 | "options": { 211 | "uses_ensd": "True" 212 | } 213 | }, 214 | { 215 | "name": "LMS Karras", 216 | "aliases": [ 217 | "k_lms_ka" 218 | ], 219 | "options": { 220 | "scheduler": "karras" 221 | } 222 | }, 223 | { 224 | "name": "DPM2 Karras", 225 | "aliases": [ 226 | "k_dpm_2_ka" 227 | ], 228 | "options": { 229 | "scheduler": "karras", 230 | "discard_next_to_last_sigma": "True", 231 | "uses_ensd": "True", 232 | "second_order": "True" 233 | } 234 | }, 235 | { 236 | "name": "DPM2 a Karras", 237 | "aliases": [ 238 | "k_dpm_2_a_ka" 239 | ], 240 | "options": { 241 | "scheduler": "karras", 242 | "discard_next_to_last_sigma": "True", 243 | "uses_ensd": "True", 244 | "second_order": "True" 245 | } 246 | }, 247 | { 248 | "name": "DPM++ 2S a Karras", 249 | "aliases": [ 250 | "k_dpmpp_2s_a_ka" 251 | ], 252 | "options": { 253 | "scheduler": "karras", 254 | "uses_ensd": "True", 255 | "second_order": "True" 256 | } 257 | }, 258 | { 259 | "name": "Restart", 260 | "aliases": [ 261 | "restart" 262 | ], 263 | "options": { 264 | "scheduler": "karras", 265 | "second_order": "True" 266 | } 267 | }, 268 | { 269 | "name": "DDIM", 270 | "aliases": [ 271 | "ddim" 272 | ], 273 | "options": {} 274 | }, 275 | { 276 | "name": "PLMS", 277 | "aliases": [ 278 | "plms" 279 | ], 280 | "options": {} 281 | }, 282 | { 283 | "name": "UniPC", 284 | "aliases": [ 285 | "unipc" 286 | ], 287 | "options": {} 288 | }, 289 | { 290 | "name": "LCM", 291 | "aliases": [ 292 | "k_lcm" 293 | ], 294 | "options": {} 295 | }, 296 | { 297 | "name": "DDPM", 298 | "aliases": [ 299 | "ddpm" 300 | ], 301 | "options": {} 302 | }, 303 | { 304 | "name": "DDPM Karras", 305 | "aliases": [ 306 | "ddpm_karras" 307 | ], 308 | "options": {} 309 | }, 310 | { 311 | "name": "Euler A Turbo", 312 | "aliases": [ 313 | "euler_ancestral_turbo" 314 | ], 315 | "options": {} 316 | }, 317 | { 318 | "name": "DPM++ 2M Turbo", 319 | "aliases": [ 320 | "dpmpp_2m_turbo" 321 | ], 322 | "options": {} 323 | }, 324 | { 325 | "name": "DPM++ 2M SDE Turbo", 326 | "aliases": [ 327 | "dpmpp_2m_sde_turbo" 328 | ], 329 | "options": {} 330 | }, 331 | { 332 | "name": "LCM Karras", 333 | "aliases": [ 334 | "lcm_karras" 335 | ], 336 | "options": {} 337 | }, 338 | { 339 | "name": "Euler SGMUniform", 340 | "aliases": [ 341 | "euler_sgm_uniform" 342 | ], 343 | "options": {} 344 | }, 345 | { 346 | "name": "Euler A SGMUniform", 347 | "aliases": [ 348 | "euler_ancestral_sgm_uniform" 349 | ], 350 | "options": {} 351 | }, 352 | { 353 | "name": "DPM++ 2M SGMUniform", 354 | "aliases": [ 355 | "dpmpp_2m_sgm_uniform" 356 | ], 357 | "options": {} 358 | }, 359 | { 360 | "name": "DPM++ 2M SDE SGMUniform", 361 | "aliases": [ 362 | "dpmpp_2m_sde_sgm_uniform" 363 | ], 364 | "options": {} 365 | } 366 | ] -------------------------------------------------------------------------------- /samplers_sample.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "name": "DPM++ 2M Karras", 4 | "aliases": [ 5 | "k_dpmpp_2m_ka" 6 | ], 7 | "options": { 8 | "scheduler": "karras" 9 | } 10 | }, 11 | { 12 | "name": "DPM++ SDE Karras", 13 | "aliases": [ 14 | "k_dpmpp_sde_ka" 15 | ], 16 | "options": { 17 | "scheduler": "karras", 18 | "second_order": "True", 19 | "brownian_noise": "True" 20 | } 21 | }, 22 | { 23 | "name": "DPM++ 2M SDE Exponential", 24 | "aliases": [ 25 | "k_dpmpp_2m_sde_exp" 26 | ], 27 | "options": { 28 | "scheduler": "exponential", 29 | "brownian_noise": "True" 30 | } 31 | }, 32 | { 33 | "name": "DPM++ 2M SDE Karras", 34 | "aliases": [ 35 | "k_dpmpp_2m_sde_ka" 36 | ], 37 | "options": { 38 | "scheduler": "karras", 39 | "brownian_noise": "True" 40 | } 41 | }, 42 | { 43 | "name": "Euler a", 44 | "aliases": [ 45 | "k_euler_a", 46 | "k_euler_ancestral" 47 | ], 48 | "options": { 49 | "uses_ensd": "True" 50 | } 51 | }, 52 | { 53 | "name": "Euler", 54 | "aliases": [ 55 | "k_euler" 56 | ], 57 | "options": {} 58 | }, 59 | { 60 | "name": "LMS", 61 | "aliases": [ 62 | "k_lms" 63 | ], 64 | "options": {} 65 | }, 66 | { 67 | "name": "Heun", 68 | "aliases": [ 69 | "k_heun" 70 | ], 71 | "options": { 72 | "second_order": "True" 73 | } 74 | }, 75 | { 76 | "name": "DPM2", 77 | "aliases": [ 78 | "k_dpm_2" 79 | ], 80 | "options": { 81 | "discard_next_to_last_sigma": "True", 82 | "second_order": "True" 83 | } 84 | }, 85 | { 86 | "name": "DPM2 a", 87 | "aliases": [ 88 | "k_dpm_2_a" 89 | ], 90 | "options": { 91 | "discard_next_to_last_sigma": "True", 92 | "uses_ensd": "True", 93 | "second_order": "True" 94 | } 95 | }, 96 | { 97 | "name": "DPM++ 2S a", 98 | "aliases": [ 99 | "k_dpmpp_2s_a" 100 | ], 101 | "options": { 102 | "uses_ensd": "True", 103 | "second_order": "True" 104 | } 105 | }, 106 | { 107 | "name": "DPM++ 2M", 108 | "aliases": [ 109 | "k_dpmpp_2m" 110 | ], 111 | "options": {} 112 | }, 113 | { 114 | "name": "DPM++ SDE", 115 | "aliases": [ 116 | "k_dpmpp_sde" 117 | ], 118 | "options": { 119 | "second_order": "True", 120 | "brownian_noise": "True" 121 | } 122 | }, 123 | { 124 | "name": "DPM++ 2M SDE", 125 | "aliases": [ 126 | "k_dpmpp_2m_sde_ka" 127 | ], 128 | "options": { 129 | "brownian_noise": "True" 130 | } 131 | }, 132 | { 133 | "name": "DPM++ 2M SDE Heun", 134 | "aliases": [ 135 | "k_dpmpp_2m_sde_heun" 136 | ], 137 | "options": { 138 | "brownian_noise": "True", 139 | "solver_type": "heun" 140 | } 141 | }, 142 | { 143 | "name": "DPM++ 2M SDE Heun Karras", 144 | "aliases": [ 145 | "k_dpmpp_2m_sde_heun_ka" 146 | ], 147 | "options": { 148 | "scheduler": "karras", 149 | "brownian_noise": "True", 150 | "solver_type": "heun" 151 | } 152 | }, 153 | { 154 | "name": "DPM++ 2M SDE Heun Exponential", 155 | "aliases": [ 156 | "k_dpmpp_2m_sde_heun_exp" 157 | ], 158 | "options": { 159 | "scheduler": "exponential", 160 | "brownian_noise": "True", 161 | "solver_type": "heun" 162 | } 163 | }, 164 | { 165 | "name": "DPM++ 3M SDE", 166 | "aliases": [ 167 | "k_dpmpp_3m_sde" 168 | ], 169 | "options": { 170 | "discard_next_to_last_sigma": "True", 171 | "brownian_noise": "True" 172 | } 173 | }, 174 | { 175 | "name": "DPM++ 3M SDE Karras", 176 | "aliases": [ 177 | "k_dpmpp_3m_sde_ka" 178 | ], 179 | "options": { 180 | "scheduler": "karras", 181 | "discard_next_to_last_sigma": "True", 182 | "brownian_noise": "True" 183 | } 184 | }, 185 | { 186 | "name": "DPM++ 3M SDE Exponential", 187 | "aliases": [ 188 | "k_dpmpp_3m_sde_exp" 189 | ], 190 | "options": { 191 | "scheduler": "exponential", 192 | "discard_next_to_last_sigma": "True", 193 | "brownian_noise": "True" 194 | } 195 | }, 196 | { 197 | "name": "DPM fast", 198 | "aliases": [ 199 | "k_dpm_fast" 200 | ], 201 | "options": { 202 | "uses_ensd": "True" 203 | } 204 | }, 205 | { 206 | "name": "DPM adaptive", 207 | "aliases": [ 208 | "k_dpm_ad" 209 | ], 210 | "options": { 211 | "uses_ensd": "True" 212 | } 213 | }, 214 | { 215 | "name": "LMS Karras", 216 | "aliases": [ 217 | "k_lms_ka" 218 | ], 219 | "options": { 220 | "scheduler": "karras" 221 | } 222 | }, 223 | { 224 | "name": "DPM2 Karras", 225 | "aliases": [ 226 | "k_dpm_2_ka" 227 | ], 228 | "options": { 229 | "scheduler": "karras", 230 | "discard_next_to_last_sigma": "True", 231 | "uses_ensd": "True", 232 | "second_order": "True" 233 | } 234 | }, 235 | { 236 | "name": "DPM2 a Karras", 237 | "aliases": [ 238 | "k_dpm_2_a_ka" 239 | ], 240 | "options": { 241 | "scheduler": "karras", 242 | "discard_next_to_last_sigma": "True", 243 | "uses_ensd": "True", 244 | "second_order": "True" 245 | } 246 | }, 247 | { 248 | "name": "DPM++ 2S a Karras", 249 | "aliases": [ 250 | "k_dpmpp_2s_a_ka" 251 | ], 252 | "options": { 253 | "scheduler": "karras", 254 | "uses_ensd": "True", 255 | "second_order": "True" 256 | } 257 | }, 258 | { 259 | "name": "Restart", 260 | "aliases": [ 261 | "restart" 262 | ], 263 | "options": { 264 | "scheduler": "karras", 265 | "second_order": "True" 266 | } 267 | }, 268 | { 269 | "name": "DDIM", 270 | "aliases": [ 271 | "ddim" 272 | ], 273 | "options": {} 274 | }, 275 | { 276 | "name": "PLMS", 277 | "aliases": [ 278 | "plms" 279 | ], 280 | "options": {} 281 | }, 282 | { 283 | "name": "UniPC", 284 | "aliases": [ 285 | "unipc" 286 | ], 287 | "options": {} 288 | }, 289 | { 290 | "name": "LCM", 291 | "aliases": [ 292 | "k_lcm" 293 | ], 294 | "options": {} 295 | }, 296 | { 297 | "name": "DDPM", 298 | "aliases": [ 299 | "ddpm" 300 | ], 301 | "options": {} 302 | }, 303 | { 304 | "name": "DDPM Karras", 305 | "aliases": [ 306 | "ddpm_karras" 307 | ], 308 | "options": {} 309 | }, 310 | { 311 | "name": "Euler A Turbo", 312 | "aliases": [ 313 | "euler_ancestral_turbo" 314 | ], 315 | "options": {} 316 | }, 317 | { 318 | "name": "DPM++ 2M Turbo", 319 | "aliases": [ 320 | "dpmpp_2m_turbo" 321 | ], 322 | "options": {} 323 | }, 324 | { 325 | "name": "DPM++ 2M SDE Turbo", 326 | "aliases": [ 327 | "dpmpp_2m_sde_turbo" 328 | ], 329 | "options": {} 330 | }, 331 | { 332 | "name": "LCM Karras", 333 | "aliases": [ 334 | "lcm_karras" 335 | ], 336 | "options": {} 337 | }, 338 | { 339 | "name": "Euler SGMUniform", 340 | "aliases": [ 341 | "euler_sgm_uniform" 342 | ], 343 | "options": {} 344 | }, 345 | { 346 | "name": "Euler A SGMUniform", 347 | "aliases": [ 348 | "euler_ancestral_sgm_uniform" 349 | ], 350 | "options": {} 351 | }, 352 | { 353 | "name": "DPM++ 2M SGMUniform", 354 | "aliases": [ 355 | "dpmpp_2m_sgm_uniform" 356 | ], 357 | "options": {} 358 | }, 359 | { 360 | "name": "DPM++ 2M SDE SGMUniform", 361 | "aliases": [ 362 | "dpmpp_2m_sde_sgm_uniform" 363 | ], 364 | "options": {} 365 | } 366 | ] -------------------------------------------------------------------------------- /apis.py: -------------------------------------------------------------------------------- 1 | import base64 2 | import io 3 | import json 4 | import os 5 | import random 6 | import string 7 | from PIL import PngImagePlugin, Image 8 | import aiohttp 9 | import numpy as np 10 | from server import PromptServer 11 | import folder_paths 12 | from aiohttp import web 13 | from . import ws 14 | import nodes 15 | 16 | FILENAME_FORMAT_INIT_PREFIX = 'ProjectorInitBlob_' 17 | FILENAME_FORMAT_CONTROLNET_PREFIX = 'ProjectorControlnetBlob_' 18 | FILENAME_FORMAT_OUTPUT_PREFIX = 'ProjectorOutputBlob_' 19 | FILENAME_FORMAT_INIT_PREFIX_DEFAULT = FILENAME_FORMAT_INIT_PREFIX.format("0") 20 | FILENAME_FORMAT_CONTROLNET_PREFIX_DEFAULT = FILENAME_FORMAT_CONTROLNET_PREFIX.format("0") 21 | FILENAME_FORMAT_OUTPUT_PREFIX_DEFAULT = FILENAME_FORMAT_OUTPUT_PREFIX.format("0") 22 | 23 | CURRENT_PATH = os.path.dirname(os.path.realpath(__file__)) 24 | 25 | json_cache = {} 26 | def get_json_response(file_name): 27 | data = None 28 | if file_name in json_cache: 29 | data = json_cache[file_name] 30 | else: 31 | with open(os.path.join(CURRENT_PATH, file_name)) as f: 32 | data = json.load(f) 33 | json_cache[file_name] = data 34 | return web.Response(body=json.dumps(data), content_type='application/json') 35 | 36 | @PromptServer.instance.internal_routes.routes.get('/sysinfo') 37 | async def sysinfo_handler(request): 38 | return get_json_response('sysinfo.json') 39 | 40 | @PromptServer.instance.internal_routes.routes.get('/ping') 41 | async def ping_handler(request): 42 | return web.Response() 43 | 44 | @PromptServer.instance.routes.post('/sdapi/v1/interrupt') 45 | async def interrupt_handler(request): 46 | nodes.interrupt_processing() 47 | return web.Response() 48 | 49 | @PromptServer.instance.routes.get('/sdapi/v1/options') 50 | async def options_handler(request): 51 | return get_json_response('options.json') 52 | 53 | @PromptServer.instance.routes.post('/sdapi/v1/options') 54 | async def options_post_handler(request): 55 | if json_cache.get('options.json', None) is None: 56 | return web.Response() 57 | new_data = await request.json() 58 | json_cache['options.json'].update(new_data) 59 | return web.Response() 60 | 61 | @PromptServer.instance.routes.get('/sdapi/v1/samplers') 62 | async def samplers_handler(request): 63 | return get_json_response('samplers.json') 64 | 65 | @PromptServer.instance.routes.get('/sdapi/v1/sd-models') 66 | async def sd_models_handler(request): 67 | return get_json_response('sd-models.json') 68 | 69 | @PromptServer.instance.routes.get('/sdapi/v1/upscalers') 70 | async def upscalers_handler(request): 71 | return get_json_response('upscalers.json') 72 | 73 | @PromptServer.instance.routes.get('/sdapi/v1/sd-vae') 74 | async def sd_vae_handler(request): 75 | return get_json_response('sd-vae.json') 76 | 77 | @PromptServer.instance.routes.get('/controlnet/model_list') 78 | async def controlnet_model_list_handler(request): 79 | return get_json_response('controlnet_model_list.json') 80 | 81 | @PromptServer.instance.routes.get('/controlnet/module_list') 82 | async def controlnet_module_list_handler(request): 83 | return get_json_response('controlnet_module_list.json') 84 | 85 | @PromptServer.instance.routes.post('/sdapi/v1/txt2img') 86 | async def txt2img_handler(request): 87 | json_data = await request.json() 88 | random_id = "".join(random.choice(string.ascii_letters) for i in range(10)) 89 | image_bytes_list, image_mask_bytes_list = get_controlnet_image_list(json_data) 90 | await upload_image_list(image_bytes_list, FILENAME_FORMAT_CONTROLNET_PREFIX, random_id, ".png") 91 | await upload_image_list(image_mask_bytes_list, FILENAME_FORMAT_CONTROLNET_PREFIX, random_id, "_mask.png") 92 | await ws.run_prompt(random_id, json_data) 93 | images = await find_output_image_to_b64(FILENAME_FORMAT_OUTPUT_PREFIX + f"{random_id}_") 94 | return web.Response(body=json.dumps({'images': images}), content_type='application/json') 95 | 96 | @PromptServer.instance.routes.post('/sdapi/v1/img2img') 97 | async def img2img_handler(request): 98 | json_data = await request.json() 99 | random_id = "".join(random.choice(string.ascii_letters) for i in range(10)) 100 | init_image_list = get_init_image_list(json_data) 101 | await upload_image_list(init_image_list, FILENAME_FORMAT_INIT_PREFIX, random_id, ".png") 102 | init_mask_list = get_init_image_mask_list(json_data) 103 | await upload_image_list(init_mask_list, FILENAME_FORMAT_INIT_PREFIX, random_id, "_mask.png") 104 | image_bytes_list, image_mask_bytes_list = get_controlnet_image_list(json_data) 105 | await upload_image_list(image_bytes_list, FILENAME_FORMAT_CONTROLNET_PREFIX, random_id, ".png") 106 | await upload_image_list(image_mask_bytes_list, FILENAME_FORMAT_CONTROLNET_PREFIX, random_id, "_mask.png") 107 | await ws.run_prompt(random_id, json_data) 108 | images = await find_output_image_to_b64(FILENAME_FORMAT_OUTPUT_PREFIX + f"{random_id}_") 109 | return web.Response(body=json.dumps({'images': images}), content_type='application/json') 110 | 111 | @PromptServer.instance.routes.get('/sdapi/v1/progress') 112 | async def progress_handler(request): 113 | # json_data = await request.json() 114 | return web.Response() 115 | 116 | async def upload_image_list(image_bytes_list, prefix, random_id, postfix): 117 | if not image_bytes_list: 118 | print(f"No images to upload for {postfix}. Continuing without it.") 119 | return 120 | if isinstance(image_bytes_list, str): 121 | image_bytes_list = [image_bytes_list] 122 | # Filter out None values 123 | image_bytes_list = [image for image in image_bytes_list if image is not None] 124 | if not image_bytes_list: 125 | print(f"No valid images to upload for {postfix}. Continuing without it.") 126 | return 127 | prefix_random_id = prefix + f"{random_id}_" 128 | input_dir = folder_paths.get_input_directory() 129 | input_files = [f for f in os.listdir(input_dir) if f.startswith(prefix)] 130 | try: 131 | for input_file in input_files: 132 | if input_file.startswith(prefix_random_id): 133 | continue 134 | os.remove(os.path.join(input_dir, input_file)) 135 | except: 136 | pass 137 | for index in range(len(image_bytes_list)): 138 | image_bytes = image_bytes_list[index] 139 | def get_form_data(): 140 | form = aiohttp.FormData() 141 | filename = prefix_random_id + f"{index}" + f"{postfix}" 142 | form.add_field('image', image_bytes, filename=filename, content_type='image/png') 143 | form.add_field('overwrite', 'true') 144 | return form 145 | async with aiohttp.ClientSession() as session: 146 | try: #try local host first because ipv6 compatible 147 | await session.post(f'http://localhost:{PromptServer.instance.port}/upload/image', data = get_form_data()) 148 | # manually throw error to test 149 | # print("Test error") 150 | # raise Exception("Test error") 151 | except: 152 | await session.post(f'http://127.0.0.1:{PromptServer.instance.port}/upload/image', data = get_form_data()) 153 | 154 | async def find_output_image_to_b64(output_prefix): 155 | images = [] 156 | output_dir = folder_paths.get_output_directory() 157 | output_files = [f for f in os.listdir(output_dir) if f.startswith(output_prefix)] 158 | output_files.sort() 159 | if len(output_files) <= 0: 160 | image = Image.new('RGB', (1, 1), (255, 255, 255)) 161 | images.append(encode_pil_to_base64(image)) 162 | return images 163 | for output_file in output_files: 164 | with open(os.path.join(output_dir, output_file), 'rb') as f: 165 | output_bytes = f.read() 166 | image = Image.open(io.BytesIO(output_bytes)) 167 | images.append(encode_pil_to_base64(image)) 168 | return images 169 | 170 | def get_init_image_mask_list(json_data): 171 | mask_bytes_list = [] 172 | init_mask = json_data.get('mask', None) 173 | if init_mask is None: 174 | return mask_bytes_list 175 | mask_bytes = base64.b64decode(init_mask) 176 | mask_bytes_list.append(mask_bytes) 177 | return mask_bytes_list 178 | 179 | def get_init_image_list(json_data): 180 | image_bytes_list = [] 181 | init_images = json_data.get('init_images', None) 182 | if init_images is None: 183 | return image_bytes_list 184 | for image in init_images: 185 | image_bytes = base64.b64decode(image) 186 | image_bytes_list.append(image_bytes) 187 | return image_bytes_list 188 | 189 | def get_controlnet_mask_list(json_data): 190 | alwayson_scripts = json_data.get('alwayson_scripts', None) 191 | if alwayson_scripts is None: 192 | return [] 193 | controlnet = alwayson_scripts.get('controlnet', None) 194 | if controlnet is None: 195 | return [] 196 | args = controlnet.get('args', None) 197 | if args is None: 198 | return [] 199 | if len(args) <= 0: 200 | return [] 201 | mask_bytes_list = [] 202 | for arg in args: 203 | mask_b64 = arg.get('image_mask', None) 204 | if mask_b64 is None: 205 | mask_bytes_list.append(None) 206 | continue 207 | mask_bytes = base64.b64decode(mask_b64) 208 | mask_bytes_list.append(mask_bytes) 209 | return mask_bytes_list 210 | 211 | def get_controlnet_image_list(json_data): 212 | alwayson_scripts = json_data.get('alwayson_scripts', None) 213 | if alwayson_scripts is None: 214 | return [] 215 | controlnet = alwayson_scripts.get('controlnet', None) 216 | if controlnet is None: 217 | return [] 218 | args = controlnet.get('args', None) 219 | if args is None: 220 | return [] 221 | if len(args) <= 0: 222 | return [] 223 | image_bytes_list = [] 224 | for arg in args: 225 | image_b64 = arg.get('image', None) 226 | if image_b64 is None: 227 | image_bytes_list.append(None) 228 | continue 229 | image_bytes = base64.b64decode(image_b64) 230 | image_bytes_list.append(image_bytes) 231 | image_mask_bytes_list = [] 232 | for arg in args: 233 | image_mask_b64 = arg.get('image_mask', None) 234 | if image_mask_b64 is None: 235 | image_mask_bytes_list.append(None) 236 | continue 237 | image_mask_bytes = base64.b64decode(image_mask_b64) 238 | image_mask_bytes_list.append(image_mask_bytes) 239 | return image_bytes_list, image_mask_bytes_list 240 | 241 | def encode_pil_to_base64(image): 242 | with io.BytesIO() as output_bytes: 243 | if isinstance(image, str): 244 | return image 245 | if isinstance(image, np.ndarray): 246 | image = Image.fromarray(image) 247 | use_metadata = False 248 | metadata = PngImagePlugin.PngInfo() 249 | for key, value in image.info.items(): 250 | if isinstance(key, str) and isinstance(value, str): 251 | metadata.add_text(key, value) 252 | use_metadata = True 253 | image.save(output_bytes, format="PNG", pnginfo=(metadata if use_metadata else None), quality=100) 254 | bytes_data = output_bytes.getvalue() 255 | return base64.b64encode(bytes_data).decode('ascii') 256 | -------------------------------------------------------------------------------- /samples/ProjectorzInpaint_Sample.json: -------------------------------------------------------------------------------- 1 | { 2 | "last_node_id": 29, 3 | "last_link_id": 35, 4 | "nodes": [ 5 | { 6 | "id": 11, 7 | "type": "KSampler", 8 | "pos": [ 9 | 1250, 10 | 450 11 | ], 12 | "size": { 13 | "0": 315, 14 | "1": 474 15 | }, 16 | "flags": {}, 17 | "order": 7, 18 | "mode": 0, 19 | "inputs": [ 20 | { 21 | "name": "model", 22 | "type": "MODEL", 23 | "link": 11 24 | }, 25 | { 26 | "name": "positive", 27 | "type": "CONDITIONING", 28 | "link": 31, 29 | "slot_index": 1 30 | }, 31 | { 32 | "name": "negative", 33 | "type": "CONDITIONING", 34 | "link": 13, 35 | "slot_index": 2 36 | }, 37 | { 38 | "name": "latent_image", 39 | "type": "LATENT", 40 | "link": 35 41 | } 42 | ], 43 | "outputs": [ 44 | { 45 | "name": "LATENT", 46 | "type": "LATENT", 47 | "links": [ 48 | 23 49 | ], 50 | "shape": 3, 51 | "slot_index": 0 52 | } 53 | ], 54 | "properties": { 55 | "Node name for S&R": "KSampler" 56 | }, 57 | "widgets_values": [ 58 | 0, 59 | "fixed", 60 | 15, 61 | 8, 62 | "dpmpp_2m", 63 | "karras", 64 | 1 65 | ] 66 | }, 67 | { 68 | "id": 13, 69 | "type": "CLIPTextEncode", 70 | "pos": [ 71 | 250, 72 | 700 73 | ], 74 | "size": { 75 | "0": 400, 76 | "1": 200 77 | }, 78 | "flags": {}, 79 | "order": 5, 80 | "mode": 0, 81 | "inputs": [ 82 | { 83 | "name": "clip", 84 | "type": "CLIP", 85 | "link": 17 86 | }, 87 | { 88 | "name": "text", 89 | "type": "STRING", 90 | "link": 18, 91 | "widget": { 92 | "name": "text" 93 | } 94 | } 95 | ], 96 | "outputs": [ 97 | { 98 | "name": "CONDITIONING", 99 | "type": "CONDITIONING", 100 | "links": [ 101 | 13 102 | ], 103 | "shape": 3 104 | } 105 | ], 106 | "properties": { 107 | "Node name for S&R": "CLIPTextEncode" 108 | }, 109 | "widgets_values": [ 110 | "bad art" 111 | ] 112 | }, 113 | { 114 | "id": 20, 115 | "type": "VAEDecode", 116 | "pos": [ 117 | 1600, 118 | 450 119 | ], 120 | "size": { 121 | "0": 210, 122 | "1": 46 123 | }, 124 | "flags": {}, 125 | "order": 8, 126 | "mode": 0, 127 | "inputs": [ 128 | { 129 | "name": "samples", 130 | "type": "LATENT", 131 | "link": 23 132 | }, 133 | { 134 | "name": "vae", 135 | "type": "VAE", 136 | "link": 24 137 | } 138 | ], 139 | "outputs": [ 140 | { 141 | "name": "IMAGE", 142 | "type": "IMAGE", 143 | "links": [ 144 | 28, 145 | 29 146 | ], 147 | "shape": 3, 148 | "slot_index": 0 149 | } 150 | ], 151 | "properties": { 152 | "Node name for S&R": "VAEDecode" 153 | } 154 | }, 155 | { 156 | "id": 23, 157 | "type": "ProjectorzOutput", 158 | "pos": [ 159 | 1850, 160 | 450 161 | ], 162 | "size": { 163 | "0": 315, 164 | "1": 58 165 | }, 166 | "flags": {}, 167 | "order": 9, 168 | "mode": 0, 169 | "inputs": [ 170 | { 171 | "name": "images", 172 | "type": "IMAGE", 173 | "link": 28 174 | } 175 | ], 176 | "properties": { 177 | "Node name for S&R": "ProjectorzOutput" 178 | }, 179 | "widgets_values": [ 180 | "ProjectorOutputBlob_KlYMuxgpch_" 181 | ] 182 | }, 183 | { 184 | "id": 24, 185 | "type": "SaveImage", 186 | "pos": [ 187 | 1850, 188 | 550 189 | ], 190 | "size": { 191 | "0": 315, 192 | "1": 270 193 | }, 194 | "flags": {}, 195 | "order": 10, 196 | "mode": 0, 197 | "inputs": [ 198 | { 199 | "name": "images", 200 | "type": "IMAGE", 201 | "link": 29 202 | } 203 | ], 204 | "properties": {}, 205 | "widgets_values": [ 206 | "ComfyUI" 207 | ] 208 | }, 209 | { 210 | "id": 26, 211 | "type": "ProjectorzParameter", 212 | "pos": [ 213 | -150, 214 | 450 215 | ], 216 | "size": { 217 | "0": 315, 218 | "1": 82 219 | }, 220 | "flags": {}, 221 | "order": 0, 222 | "mode": 0, 223 | "outputs": [ 224 | { 225 | "name": "STRING", 226 | "type": "STRING", 227 | "links": [ 228 | 16 229 | ], 230 | "shape": 3, 231 | "slot_index": 0 232 | } 233 | ], 234 | "properties": { 235 | "Node name for S&R": "ProjectorzParameter" 236 | }, 237 | "widgets_values": [ 238 | "prompt", 239 | "wood_door" 240 | ] 241 | }, 242 | { 243 | "id": 27, 244 | "type": "ProjectorzParameter", 245 | "pos": [ 246 | -150, 247 | 700 248 | ], 249 | "size": { 250 | "0": 315, 251 | "1": 82 252 | }, 253 | "flags": {}, 254 | "order": 1, 255 | "mode": 0, 256 | "outputs": [ 257 | { 258 | "name": "STRING", 259 | "type": "STRING", 260 | "links": [ 261 | 18 262 | ], 263 | "shape": 3, 264 | "slot_index": 0 265 | } 266 | ], 267 | "properties": { 268 | "Node name for S&R": "ProjectorzParameter" 269 | }, 270 | "widgets_values": [ 271 | "negative_prompt", 272 | "bad art" 273 | ] 274 | }, 275 | { 276 | "id": 12, 277 | "type": "CLIPTextEncode", 278 | "pos": [ 279 | 250, 280 | 450 281 | ], 282 | "size": { 283 | "0": 400, 284 | "1": 200 285 | }, 286 | "flags": {}, 287 | "order": 4, 288 | "mode": 0, 289 | "inputs": [ 290 | { 291 | "name": "clip", 292 | "type": "CLIP", 293 | "link": 15 294 | }, 295 | { 296 | "name": "text", 297 | "type": "STRING", 298 | "link": 16, 299 | "widget": { 300 | "name": "text" 301 | } 302 | } 303 | ], 304 | "outputs": [ 305 | { 306 | "name": "CONDITIONING", 307 | "type": "CONDITIONING", 308 | "links": [ 309 | 31 310 | ], 311 | "shape": 3, 312 | "slot_index": 0 313 | } 314 | ], 315 | "properties": { 316 | "Node name for S&R": "CLIPTextEncode" 317 | }, 318 | "widgets_values": [ 319 | "wood door" 320 | ] 321 | }, 322 | { 323 | "id": 19, 324 | "type": "CheckpointLoaderSimple", 325 | "pos": [ 326 | -150, 327 | 300 328 | ], 329 | "size": { 330 | "0": 315, 331 | "1": 98 332 | }, 333 | "flags": {}, 334 | "order": 2, 335 | "mode": 0, 336 | "outputs": [ 337 | { 338 | "name": "MODEL", 339 | "type": "MODEL", 340 | "links": [ 341 | 11 342 | ], 343 | "shape": 3, 344 | "slot_index": 0 345 | }, 346 | { 347 | "name": "CLIP", 348 | "type": "CLIP", 349 | "links": [ 350 | 15, 351 | 17 352 | ], 353 | "shape": 3, 354 | "slot_index": 1 355 | }, 356 | { 357 | "name": "VAE", 358 | "type": "VAE", 359 | "links": [ 360 | 24, 361 | 33 362 | ], 363 | "shape": 3, 364 | "slot_index": 2 365 | } 366 | ], 367 | "properties": { 368 | "Node name for S&R": "CheckpointLoaderSimple" 369 | }, 370 | "widgets_values": [ 371 | "AOM3.safetensors" 372 | ] 373 | }, 374 | { 375 | "id": 28, 376 | "type": "ProjectorzInitInput", 377 | "pos": [ 378 | 250, 379 | 950 380 | ], 381 | "size": { 382 | "0": 315, 383 | "1": 102 384 | }, 385 | "flags": {}, 386 | "order": 3, 387 | "mode": 0, 388 | "outputs": [ 389 | { 390 | "name": "IMAGE", 391 | "type": "IMAGE", 392 | "links": [ 393 | 32 394 | ], 395 | "shape": 3, 396 | "slot_index": 0 397 | }, 398 | { 399 | "name": "MASK", 400 | "type": "MASK", 401 | "links": [ 402 | 34 403 | ], 404 | "shape": 3, 405 | "slot_index": 1 406 | } 407 | ], 408 | "properties": { 409 | "Node name for S&R": "ProjectorzInitInput" 410 | }, 411 | "widgets_values": [ 412 | 0, 413 | "ProjectorInitBlob_KlYMuxgpch_" 414 | ] 415 | }, 416 | { 417 | "id": 29, 418 | "type": "VAEEncodeForInpaint", 419 | "pos": [ 420 | 700, 421 | 950 422 | ], 423 | "size": { 424 | "0": 315, 425 | "1": 98 426 | }, 427 | "flags": {}, 428 | "order": 6, 429 | "mode": 0, 430 | "inputs": [ 431 | { 432 | "name": "pixels", 433 | "type": "IMAGE", 434 | "link": 32 435 | }, 436 | { 437 | "name": "vae", 438 | "type": "VAE", 439 | "link": 33 440 | }, 441 | { 442 | "name": "mask", 443 | "type": "MASK", 444 | "link": 34 445 | } 446 | ], 447 | "outputs": [ 448 | { 449 | "name": "LATENT", 450 | "type": "LATENT", 451 | "links": [ 452 | 35 453 | ], 454 | "shape": 3, 455 | "slot_index": 0 456 | } 457 | ], 458 | "properties": { 459 | "Node name for S&R": "VAEEncodeForInpaint" 460 | }, 461 | "widgets_values": [ 462 | 0 463 | ] 464 | } 465 | ], 466 | "links": [ 467 | [ 468 | 11, 469 | 19, 470 | 0, 471 | 11, 472 | 0, 473 | "MODEL" 474 | ], 475 | [ 476 | 13, 477 | 13, 478 | 0, 479 | 11, 480 | 2, 481 | "CONDITIONING" 482 | ], 483 | [ 484 | 15, 485 | 19, 486 | 1, 487 | 12, 488 | 0, 489 | "CLIP" 490 | ], 491 | [ 492 | 16, 493 | 26, 494 | 0, 495 | 12, 496 | 1, 497 | "STRING" 498 | ], 499 | [ 500 | 17, 501 | 19, 502 | 1, 503 | 13, 504 | 0, 505 | "CLIP" 506 | ], 507 | [ 508 | 18, 509 | 27, 510 | 0, 511 | 13, 512 | 1, 513 | "STRING" 514 | ], 515 | [ 516 | 23, 517 | 11, 518 | 0, 519 | 20, 520 | 0, 521 | "LATENT" 522 | ], 523 | [ 524 | 24, 525 | 19, 526 | 2, 527 | 20, 528 | 1, 529 | "VAE" 530 | ], 531 | [ 532 | 28, 533 | 20, 534 | 0, 535 | 23, 536 | 0, 537 | "IMAGE" 538 | ], 539 | [ 540 | 29, 541 | 20, 542 | 0, 543 | 24, 544 | 0, 545 | "IMAGE" 546 | ], 547 | [ 548 | 31, 549 | 12, 550 | 0, 551 | 11, 552 | 1, 553 | "CONDITIONING" 554 | ], 555 | [ 556 | 32, 557 | 28, 558 | 0, 559 | 29, 560 | 0, 561 | "IMAGE" 562 | ], 563 | [ 564 | 33, 565 | 19, 566 | 2, 567 | 29, 568 | 1, 569 | "VAE" 570 | ], 571 | [ 572 | 34, 573 | 28, 574 | 1, 575 | 29, 576 | 2, 577 | "MASK" 578 | ], 579 | [ 580 | 35, 581 | 29, 582 | 0, 583 | 11, 584 | 3, 585 | "LATENT" 586 | ] 587 | ], 588 | "groups": [], 589 | "config": {}, 590 | "extra": { 591 | "workspace_info": { 592 | "id": "YqwUc-glSs6ONzElPy_N4" 593 | } 594 | }, 595 | "version": 0.4 596 | } -------------------------------------------------------------------------------- /options.json: -------------------------------------------------------------------------------- 1 | { 2 | "samples_save": true, 3 | "samples_format": "png", 4 | "samples_filename_pattern": "", 5 | "save_images_add_number": true, 6 | "save_images_replace_action": "Replace", 7 | "grid_save": true, 8 | "grid_format": "png", 9 | "grid_extended_filename": false, 10 | "grid_only_if_multiple": true, 11 | "grid_prevent_empty_spots": false, 12 | "grid_zip_filename_pattern": "", 13 | "n_rows": -1.0, 14 | "font": "", 15 | "grid_text_active_color": "#000000", 16 | "grid_text_inactive_color": "#999999", 17 | "grid_background_color": "#ffffff", 18 | "save_images_before_face_restoration": false, 19 | "save_images_before_highres_fix": false, 20 | "save_images_before_color_correction": false, 21 | "save_mask": false, 22 | "save_mask_composite": false, 23 | "jpeg_quality": 80.0, 24 | "webp_lossless": false, 25 | "export_for_4chan": true, 26 | "img_downscale_threshold": 4.0, 27 | "target_side_length": 4000.0, 28 | "img_max_size_mp": 200.0, 29 | "use_original_name_batch": true, 30 | "use_upscaler_name_as_suffix": false, 31 | "save_selected_only": true, 32 | "save_init_img": false, 33 | "temp_dir": "", 34 | "clean_temp_dir_at_start": false, 35 | "save_incomplete_images": false, 36 | "notification_audio": true, 37 | "notification_volume": 100.0, 38 | "outdir_samples": "", 39 | "outdir_txt2img_samples": "output\\txt2img-images", 40 | "outdir_img2img_samples": "output\\img2img-images", 41 | "outdir_extras_samples": "output\\extras-images", 42 | "outdir_grids": "", 43 | "outdir_txt2img_grids": "output\\txt2img-grids", 44 | "outdir_img2img_grids": "output\\img2img-grids", 45 | "outdir_save": "log\\images", 46 | "outdir_init_images": "output\\init-images", 47 | "save_to_dirs": true, 48 | "grid_save_to_dirs": true, 49 | "use_save_to_dirs_for_ui": false, 50 | "directories_filename_pattern": "[date]", 51 | "directories_max_prompt_words": 8.0, 52 | "ESRGAN_tile": 192.0, 53 | "ESRGAN_tile_overlap": 8.0, 54 | "realesrgan_enabled_models": [ 55 | "R-ESRGAN 4x+", 56 | "R-ESRGAN 4x+ Anime6B" 57 | ], 58 | "dat_enabled_models": [ 59 | "DAT x2", 60 | "DAT x3", 61 | "DAT x4" 62 | ], 63 | "DAT_tile": 192.0, 64 | "DAT_tile_overlap": 8.0, 65 | "upscaler_for_img2img": "R-ESRGAN 4x+", 66 | "face_restoration": false, 67 | "face_restoration_model": "CodeFormer", 68 | "code_former_weight": 0.5, 69 | "face_restoration_unload": false, 70 | "auto_launch_browser": "Local", 71 | "enable_console_prompts": false, 72 | "show_warnings": false, 73 | "show_gradio_deprecation_warnings": true, 74 | "memmon_poll_rate": 8.0, 75 | "samples_log_stdout": false, 76 | "multiple_tqdm": true, 77 | "enable_upscale_progressbar": true, 78 | "print_hypernet_extra": false, 79 | "list_hidden_files": true, 80 | "disable_mmap_load_safetensors": false, 81 | "hide_ldm_prints": true, 82 | "dump_stacks_on_signal": false, 83 | "api_enable_requests": true, 84 | "api_forbid_local_requests": true, 85 | "api_useragent": "", 86 | "unload_models_when_training": false, 87 | "pin_memory": false, 88 | "save_optimizer_state": false, 89 | "save_training_settings_to_txt": true, 90 | "dataset_filename_word_regex": "", 91 | "dataset_filename_join_string": " ", 92 | "training_image_repeats_per_epoch": 1.0, 93 | "training_write_csv_every": 500.0, 94 | "training_xattention_optimizations": false, 95 | "training_enable_tensorboard": false, 96 | "training_tensorboard_save_images": false, 97 | "training_tensorboard_flush_every": 120.0, 98 | "sd_model_checkpoint": "Configure In ComfyUI", 99 | "sd_checkpoints_limit": 1.0, 100 | "sd_checkpoints_keep_in_cpu": true, 101 | "sd_checkpoint_cache": 0, 102 | "sd_unet": "Automatic", 103 | "enable_quantization": false, 104 | "emphasis": "Original", 105 | "enable_batch_seeds": true, 106 | "comma_padding_backtrack": 20.0, 107 | "CLIP_stop_at_last_layers": 1.0, 108 | "upcast_attn": false, 109 | "randn_source": "GPU", 110 | "tiling": false, 111 | "hires_fix_refiner_pass": "first pass", 112 | "sdxl_crop_top": 0.0, 113 | "sdxl_crop_left": 0.0, 114 | "sdxl_refiner_low_aesthetic_score": 2.5, 115 | "sdxl_refiner_high_aesthetic_score": 6.0, 116 | "sd_vae_explanation": "VAE is a neural network that transforms a standard RGB\nimage into latent space representation and back. Latent space representation is what stable diffusion is working on during sampling\n(i.e. when the progress bar is between empty and full). For txt2img, VAE is used to create a resulting image after the sampling is finished.\nFor img2img, VAE is used to process user's input image before the sampling, and to create an image after sampling.", 117 | "sd_vae_checkpoint_cache": 0, 118 | "sd_vae": "None", 119 | "sd_vae_overrides_per_model_preferences": true, 120 | "auto_vae_precision_bfloat16": false, 121 | "auto_vae_precision": true, 122 | "sd_vae_encode_method": "Full", 123 | "sd_vae_decode_method": "Full", 124 | "inpainting_mask_weight": 1.0, 125 | "initial_noise_multiplier": 1.0, 126 | "img2img_extra_noise": 0, 127 | "img2img_color_correction": false, 128 | "img2img_fix_steps": false, 129 | "img2img_background_color": "#ffffff", 130 | "img2img_editor_height": 720.0, 131 | "img2img_sketch_default_brush_color": "#ffffff", 132 | "img2img_inpaint_mask_brush_color": "#ffffff", 133 | "img2img_inpaint_sketch_default_brush_color": "#ffffff", 134 | "return_mask": false, 135 | "return_mask_composite": false, 136 | "img2img_batch_show_results_limit": 32.0, 137 | "overlay_inpaint": true, 138 | "cross_attention_optimization": "Automatic", 139 | "s_min_uncond": 0, 140 | "token_merging_ratio": 0, 141 | "token_merging_ratio_img2img": 0, 142 | "token_merging_ratio_hr": 0, 143 | "pad_cond_uncond": false, 144 | "pad_cond_uncond_v0": false, 145 | "persistent_cond_cache": true, 146 | "batch_cond_uncond": true, 147 | "fp8_storage": "Disable", 148 | "cache_fp16_weight": false, 149 | "auto_backcompat": true, 150 | "use_old_emphasis_implementation": false, 151 | "use_old_karras_scheduler_sigmas": false, 152 | "no_dpmpp_sde_batch_determinism": false, 153 | "use_old_hires_fix_width_height": false, 154 | "dont_fix_second_order_samplers_schedule": false, 155 | "hires_fix_use_firstpass_conds": false, 156 | "use_old_scheduling": false, 157 | "use_downcasted_alpha_bar": false, 158 | "interrogate_keep_models_in_memory": false, 159 | "interrogate_return_ranks": false, 160 | "interrogate_clip_num_beams": 1.0, 161 | "interrogate_clip_min_length": 24.0, 162 | "interrogate_clip_max_length": 48.0, 163 | "interrogate_clip_dict_limit": 1500.0, 164 | "interrogate_clip_skip_categories": [], 165 | "interrogate_deepbooru_score_threshold": 0.5, 166 | "deepbooru_sort_alpha": true, 167 | "deepbooru_use_spaces": true, 168 | "deepbooru_escape": true, 169 | "deepbooru_filter_tags": "", 170 | "extra_networks_show_hidden_directories": true, 171 | "extra_networks_dir_button_function": false, 172 | "extra_networks_hidden_models": "When searched", 173 | "extra_networks_default_multiplier": 1.0, 174 | "extra_networks_card_width": 0.0, 175 | "extra_networks_card_height": 0.0, 176 | "extra_networks_card_text_scale": 1.0, 177 | "extra_networks_card_show_desc": true, 178 | "extra_networks_card_description_is_html": false, 179 | "extra_networks_card_order_field": "Path", 180 | "extra_networks_card_order": "Ascending", 181 | "extra_networks_tree_view_default_enabled": false, 182 | "extra_networks_add_text_separator": " ", 183 | "ui_extra_networks_tab_reorder": "", 184 | "textual_inversion_print_at_load": false, 185 | "textual_inversion_add_hashes_to_infotext": true, 186 | "sd_hypernetwork": "None", 187 | "keyedit_precision_attention": 0.1, 188 | "keyedit_precision_extra": 0.05, 189 | "keyedit_delimiters": ".,\/!?%^*;:{}=`~() ", 190 | "keyedit_delimiters_whitespace": [ 191 | "Tab", 192 | "Carriage Return", 193 | "Line Feed" 194 | ], 195 | "keyedit_move": true, 196 | "disable_token_counters": false, 197 | "include_styles_into_token_counters": true, 198 | "return_grid": true, 199 | "do_not_show_images": false, 200 | "js_modal_lightbox": true, 201 | "js_modal_lightbox_initially_zoomed": true, 202 | "js_modal_lightbox_gamepad": false, 203 | "js_modal_lightbox_gamepad_repeat": 250.0, 204 | "sd_webui_modal_lightbox_icon_opacity": 1.0, 205 | "sd_webui_modal_lightbox_toolbar_opacity": 0.9, 206 | "gallery_height": "", 207 | "open_dir_button_choice": "Subdirectory", 208 | "compact_prompt_box": false, 209 | "samplers_in_dropdown": true, 210 | "dimensions_and_batch_together": true, 211 | "sd_checkpoint_dropdown_use_short": false, 212 | "hires_fix_show_sampler": false, 213 | "hires_fix_show_prompts": false, 214 | "txt2img_settings_accordion": false, 215 | "img2img_settings_accordion": false, 216 | "interrupt_after_current": true, 217 | "localization": "None", 218 | "quicksettings_list": [ 219 | "sd_model_checkpoint", 220 | "sd_vae", 221 | "CLIP_stop_at_last_layers" 222 | ], 223 | "ui_tab_order": [], 224 | "hidden_tabs": [], 225 | "ui_reorder_list": [], 226 | "gradio_theme": "Default", 227 | "gradio_themes_cache": true, 228 | "show_progress_in_title": true, 229 | "send_seed": true, 230 | "send_size": true, 231 | "infotext_explanation": "Infotext is what this software calls the text that contains generation parameters and can be used to generate the same picture again.\nIt is displayed in UI below the image. To use infotext, paste it into the prompt and click the ↙ paste button.", 232 | "enable_pnginfo": true, 233 | "save_txt": false, 234 | "add_model_name_to_info": true, 235 | "add_model_hash_to_info": true, 236 | "add_vae_name_to_info": true, 237 | "add_vae_hash_to_info": true, 238 | "add_user_name_to_info": false, 239 | "add_version_to_infotext": true, 240 | "disable_weights_auto_swap": true, 241 | "infotext_skip_pasting": [], 242 | "infotext_styles": "Apply if any", 243 | "show_progressbar": true, 244 | "live_previews_enable": true, 245 | "live_previews_image_format": "png", 246 | "show_progress_grid": true, 247 | "show_progress_every_n_steps": 10.0, 248 | "show_progress_type": "Approx NN", 249 | "live_preview_allow_lowvram_full": false, 250 | "live_preview_content": "Prompt", 251 | "live_preview_refresh_period": 1000.0, 252 | "live_preview_fast_interrupt": false, 253 | "js_live_preview_in_modal_lightbox": false, 254 | "hide_samplers": [], 255 | "eta_ddim": 0, 256 | "eta_ancestral": 1.0, 257 | "ddim_discretize": "uniform", 258 | "s_churn": 0, 259 | "s_tmin": 0, 260 | "s_tmax": 0, 261 | "s_noise": 1.0, 262 | "k_sched_type": "Automatic", 263 | "sigma_min": 0.0, 264 | "sigma_max": 0.0, 265 | "rho": 0.0, 266 | "eta_noise_seed_delta": 0, 267 | "always_discard_next_to_last_sigma": false, 268 | "sgm_noise_multiplier": false, 269 | "uni_pc_variant": "bh1", 270 | "uni_pc_skip_type": "time_uniform", 271 | "uni_pc_order": 3.0, 272 | "uni_pc_lower_order_final": true, 273 | "sd_noise_schedule": "Default", 274 | "postprocessing_enable_in_main_ui": [], 275 | "postprocessing_operation_order": [], 276 | "upscaling_max_images_in_cache": 5.0, 277 | "postprocessing_existing_caption_action": "Ignore", 278 | "disabled_extensions": [], 279 | "disable_all_extensions": "none", 280 | "restore_config_state_file": "", 281 | "sd_checkpoint_hash": "d124fc18f0232d7f0a2a70358cdb1288af9e1ee8596200f50f0936be59514f6d", 282 | "sd_lora": "None", 283 | "lora_preferred_name": "Alias from file", 284 | "lora_add_hashes_to_infotext": true, 285 | "lora_show_all": false, 286 | "lora_hide_unknown_for_versions": [], 287 | "lora_in_memory_limit": 0, 288 | "lora_not_found_warning_console": false, 289 | "lora_not_found_gradio_warning": false, 290 | "lora_functional": false, 291 | "canvas_hotkey_zoom": "Alt", 292 | "canvas_hotkey_adjust": "Ctrl", 293 | "canvas_hotkey_shrink_brush": "Q", 294 | "canvas_hotkey_grow_brush": "W", 295 | "canvas_hotkey_move": "F", 296 | "canvas_hotkey_fullscreen": "S", 297 | "canvas_hotkey_reset": "R", 298 | "canvas_hotkey_overlap": "O", 299 | "canvas_show_tooltip": true, 300 | "canvas_auto_expand": true, 301 | "canvas_blur_prompt": false, 302 | "canvas_disabled_functions": [ 303 | "Overlap" 304 | ], 305 | "settings_in_ui": "This page allows you to add some settings to the main interface of txt2img and img2img tabs.", 306 | "extra_options_txt2img": [], 307 | "extra_options_img2img": [], 308 | "extra_options_cols": 1.0, 309 | "extra_options_accordion": false 310 | } -------------------------------------------------------------------------------- /samples/ProjectorzGen_Sample.json: -------------------------------------------------------------------------------- 1 | { 2 | "last_node_id": 47, 3 | "last_link_id": 52, 4 | "nodes": [ 5 | { 6 | "id": 35, 7 | "type": "ProjectorzParameter", 8 | "pos": [ 9 | -150, 10 | 1350 11 | ], 12 | "size": { 13 | "0": 315, 14 | "1": 82 15 | }, 16 | "flags": {}, 17 | "order": 0, 18 | "mode": 0, 19 | "outputs": [ 20 | { 21 | "name": "STRING", 22 | "type": "STRING", 23 | "links": [ 24 | 35 25 | ], 26 | "shape": 3, 27 | "slot_index": 0 28 | } 29 | ], 30 | "properties": { 31 | "Node name for S&R": "ProjectorzParameter" 32 | }, 33 | "widgets_values": [ 34 | "width", 35 | 512 36 | ] 37 | }, 38 | { 39 | "id": 36, 40 | "type": "ProjectorzParameter", 41 | "pos": [ 42 | -150, 43 | 1500 44 | ], 45 | "size": { 46 | "0": 315, 47 | "1": 82 48 | }, 49 | "flags": {}, 50 | "order": 1, 51 | "mode": 0, 52 | "outputs": [ 53 | { 54 | "name": "STRING", 55 | "type": "STRING", 56 | "links": [ 57 | 36 58 | ], 59 | "shape": 3, 60 | "slot_index": 0 61 | } 62 | ], 63 | "properties": { 64 | "Node name for S&R": "ProjectorzParameter" 65 | }, 66 | "widgets_values": [ 67 | "height", 68 | 512 69 | ] 70 | }, 71 | { 72 | "id": 37, 73 | "type": "ProjectorzStringToInt", 74 | "pos": [ 75 | 200, 76 | 1350 77 | ], 78 | "size": { 79 | "0": 315, 80 | "1": 58 81 | }, 82 | "flags": {}, 83 | "order": 7, 84 | "mode": 0, 85 | "inputs": [ 86 | { 87 | "name": "string", 88 | "type": "STRING", 89 | "link": 35, 90 | "widget": { 91 | "name": "string" 92 | } 93 | } 94 | ], 95 | "outputs": [ 96 | { 97 | "name": "INT", 98 | "type": "INT", 99 | "links": [ 100 | 33 101 | ], 102 | "shape": 3, 103 | "slot_index": 0 104 | } 105 | ], 106 | "properties": { 107 | "Node name for S&R": "ProjectorzStringToInt" 108 | }, 109 | "widgets_values": [ 110 | "" 111 | ] 112 | }, 113 | { 114 | "id": 38, 115 | "type": "ProjectorzStringToInt", 116 | "pos": [ 117 | 200, 118 | 1500 119 | ], 120 | "size": { 121 | "0": 315, 122 | "1": 58 123 | }, 124 | "flags": {}, 125 | "order": 8, 126 | "mode": 0, 127 | "inputs": [ 128 | { 129 | "name": "string", 130 | "type": "STRING", 131 | "link": 36, 132 | "widget": { 133 | "name": "string" 134 | } 135 | } 136 | ], 137 | "outputs": [ 138 | { 139 | "name": "INT", 140 | "type": "INT", 141 | "links": [ 142 | 34 143 | ], 144 | "shape": 3, 145 | "slot_index": 0 146 | } 147 | ], 148 | "properties": { 149 | "Node name for S&R": "ProjectorzStringToInt" 150 | }, 151 | "widgets_values": [ 152 | "" 153 | ] 154 | }, 155 | { 156 | "id": 34, 157 | "type": "EmptyLatentImage", 158 | "pos": [ 159 | 550, 160 | 1350 161 | ], 162 | "size": { 163 | "0": 315, 164 | "1": 106 165 | }, 166 | "flags": {}, 167 | "order": 12, 168 | "mode": 0, 169 | "inputs": [ 170 | { 171 | "name": "width", 172 | "type": "INT", 173 | "link": 33, 174 | "widget": { 175 | "name": "width" 176 | } 177 | }, 178 | { 179 | "name": "height", 180 | "type": "INT", 181 | "link": 34, 182 | "widget": { 183 | "name": "height" 184 | } 185 | } 186 | ], 187 | "outputs": [ 188 | { 189 | "name": "LATENT", 190 | "type": "LATENT", 191 | "links": [ 192 | 37 193 | ], 194 | "shape": 3, 195 | "slot_index": 0 196 | } 197 | ], 198 | "properties": { 199 | "Node name for S&R": "EmptyLatentImage" 200 | }, 201 | "widgets_values": [ 202 | 2048, 203 | 2048, 204 | 1 205 | ] 206 | }, 207 | { 208 | "id": 31, 209 | "type": "KSampler", 210 | "pos": [ 211 | 900, 212 | 850 213 | ], 214 | "size": [ 215 | 315, 216 | 474 217 | ], 218 | "flags": {}, 219 | "order": 14, 220 | "mode": 0, 221 | "inputs": [ 222 | { 223 | "name": "model", 224 | "type": "MODEL", 225 | "link": 38 226 | }, 227 | { 228 | "name": "positive", 229 | "type": "CONDITIONING", 230 | "link": 50, 231 | "slot_index": 1 232 | }, 233 | { 234 | "name": "negative", 235 | "type": "CONDITIONING", 236 | "link": 32, 237 | "slot_index": 2 238 | }, 239 | { 240 | "name": "latent_image", 241 | "type": "LATENT", 242 | "link": 37 243 | } 244 | ], 245 | "outputs": [ 246 | { 247 | "name": "LATENT", 248 | "type": "LATENT", 249 | "links": [ 250 | 41 251 | ], 252 | "shape": 3, 253 | "slot_index": 0 254 | } 255 | ], 256 | "properties": { 257 | "Node name for S&R": "KSampler" 258 | }, 259 | "widgets_values": [ 260 | 0, 261 | "fixed", 262 | 15, 263 | 8, 264 | "dpmpp_2m", 265 | "karras", 266 | 1 267 | ] 268 | }, 269 | { 270 | "id": 33, 271 | "type": "CLIPTextEncode", 272 | "pos": [ 273 | -100, 274 | 1100 275 | ], 276 | "size": [ 277 | 400, 278 | 200 279 | ], 280 | "flags": {}, 281 | "order": 11, 282 | "mode": 0, 283 | "inputs": [ 284 | { 285 | "name": "clip", 286 | "type": "CLIP", 287 | "link": 40 288 | }, 289 | { 290 | "name": "text", 291 | "type": "STRING", 292 | "link": 52, 293 | "widget": { 294 | "name": "text" 295 | } 296 | } 297 | ], 298 | "outputs": [ 299 | { 300 | "name": "CONDITIONING", 301 | "type": "CONDITIONING", 302 | "links": [ 303 | 32 304 | ], 305 | "shape": 3 306 | } 307 | ], 308 | "properties": { 309 | "Node name for S&R": "CLIPTextEncode" 310 | }, 311 | "widgets_values": [ 312 | "bad art" 313 | ] 314 | }, 315 | { 316 | "id": 42, 317 | "type": "ControlNetLoader", 318 | "pos": [ 319 | 350, 320 | 750 321 | ], 322 | "size": { 323 | "0": 315, 324 | "1": 58 325 | }, 326 | "flags": {}, 327 | "order": 2, 328 | "mode": 0, 329 | "outputs": [ 330 | { 331 | "name": "CONTROL_NET", 332 | "type": "CONTROL_NET", 333 | "links": [ 334 | 45 335 | ], 336 | "shape": 3, 337 | "slot_index": 0 338 | } 339 | ], 340 | "properties": { 341 | "Node name for S&R": "ControlNetLoader" 342 | }, 343 | "widgets_values": [ 344 | "controlnet11Models_depth.safetensors" 345 | ] 346 | }, 347 | { 348 | "id": 28, 349 | "type": "PreviewImage", 350 | "pos": [ 351 | 350, 352 | 450 353 | ], 354 | "size": { 355 | "0": 210, 356 | "1": 246 357 | }, 358 | "flags": {}, 359 | "order": 9, 360 | "mode": 0, 361 | "inputs": [ 362 | { 363 | "name": "images", 364 | "type": "IMAGE", 365 | "link": 48 366 | } 367 | ], 368 | "properties": { 369 | "Node name for S&R": "PreviewImage" 370 | } 371 | }, 372 | { 373 | "id": 43, 374 | "type": "ProjectorzOutput", 375 | "pos": [ 376 | 1500, 377 | 850 378 | ], 379 | "size": { 380 | "0": 315, 381 | "1": 58 382 | }, 383 | "flags": {}, 384 | "order": 16, 385 | "mode": 0, 386 | "inputs": [ 387 | { 388 | "name": "images", 389 | "type": "IMAGE", 390 | "link": 46 391 | } 392 | ], 393 | "properties": { 394 | "Node name for S&R": "ProjectorzOutput" 395 | }, 396 | "widgets_values": [ 397 | "ProjectorOutputBlob_euYjCUMZbQ_" 398 | ] 399 | }, 400 | { 401 | "id": 40, 402 | "type": "VAEDecode", 403 | "pos": [ 404 | 1250, 405 | 850 406 | ], 407 | "size": { 408 | "0": 210, 409 | "1": 46 410 | }, 411 | "flags": {}, 412 | "order": 15, 413 | "mode": 0, 414 | "inputs": [ 415 | { 416 | "name": "samples", 417 | "type": "LATENT", 418 | "link": 41 419 | }, 420 | { 421 | "name": "vae", 422 | "type": "VAE", 423 | "link": 42 424 | } 425 | ], 426 | "outputs": [ 427 | { 428 | "name": "IMAGE", 429 | "type": "IMAGE", 430 | "links": [ 431 | 46, 432 | 47 433 | ], 434 | "shape": 3, 435 | "slot_index": 0 436 | } 437 | ], 438 | "properties": { 439 | "Node name for S&R": "VAEDecode" 440 | } 441 | }, 442 | { 443 | "id": 44, 444 | "type": "SaveImage", 445 | "pos": [ 446 | 1500, 447 | 950 448 | ], 449 | "size": [ 450 | 315, 451 | 270 452 | ], 453 | "flags": {}, 454 | "order": 17, 455 | "mode": 0, 456 | "inputs": [ 457 | { 458 | "name": "images", 459 | "type": "IMAGE", 460 | "link": 47 461 | } 462 | ], 463 | "properties": {}, 464 | "widgets_values": [ 465 | "ComfyUI" 466 | ] 467 | }, 468 | { 469 | "id": 45, 470 | "type": "ProjectorzControlnetInput", 471 | "pos": [ 472 | -50, 473 | 700 474 | ], 475 | "size": { 476 | "0": 315, 477 | "1": 102 478 | }, 479 | "flags": {}, 480 | "order": 3, 481 | "mode": 0, 482 | "outputs": [ 483 | { 484 | "name": "IMAGE", 485 | "type": "IMAGE", 486 | "links": [ 487 | 48, 488 | 49 489 | ], 490 | "shape": 3, 491 | "slot_index": 0 492 | }, 493 | { 494 | "name": "MASK", 495 | "type": "MASK", 496 | "links": null, 497 | "shape": 3 498 | } 499 | ], 500 | "properties": { 501 | "Node name for S&R": "ProjectorzControlnetInput" 502 | }, 503 | "widgets_values": [ 504 | 0, 505 | "ProjectorControlnetBlob_euYjCUMZbQ_" 506 | ] 507 | }, 508 | { 509 | "id": 41, 510 | "type": "ControlNetApply", 511 | "pos": [ 512 | 350, 513 | 850 514 | ], 515 | "size": { 516 | "0": 317.4000244140625, 517 | "1": 98 518 | }, 519 | "flags": {}, 520 | "order": 13, 521 | "mode": 0, 522 | "inputs": [ 523 | { 524 | "name": "conditioning", 525 | "type": "CONDITIONING", 526 | "link": 43 527 | }, 528 | { 529 | "name": "control_net", 530 | "type": "CONTROL_NET", 531 | "link": 45 532 | }, 533 | { 534 | "name": "image", 535 | "type": "IMAGE", 536 | "link": 49 537 | } 538 | ], 539 | "outputs": [ 540 | { 541 | "name": "CONDITIONING", 542 | "type": "CONDITIONING", 543 | "links": [ 544 | 50 545 | ], 546 | "shape": 3, 547 | "slot_index": 0 548 | } 549 | ], 550 | "properties": { 551 | "Node name for S&R": "ControlNetApply" 552 | }, 553 | "widgets_values": [ 554 | 1 555 | ] 556 | }, 557 | { 558 | "id": 32, 559 | "type": "CLIPTextEncode", 560 | "pos": [ 561 | -100, 562 | 850 563 | ], 564 | "size": [ 565 | 400, 566 | 200 567 | ], 568 | "flags": {}, 569 | "order": 10, 570 | "mode": 0, 571 | "inputs": [ 572 | { 573 | "name": "clip", 574 | "type": "CLIP", 575 | "link": 39 576 | }, 577 | { 578 | "name": "text", 579 | "type": "STRING", 580 | "link": 51, 581 | "widget": { 582 | "name": "text" 583 | } 584 | } 585 | ], 586 | "outputs": [ 587 | { 588 | "name": "CONDITIONING", 589 | "type": "CONDITIONING", 590 | "links": [ 591 | 43 592 | ], 593 | "shape": 3, 594 | "slot_index": 0 595 | } 596 | ], 597 | "properties": { 598 | "Node name for S&R": "CLIPTextEncode" 599 | }, 600 | "widgets_values": [ 601 | "wood door" 602 | ] 603 | }, 604 | { 605 | "id": 39, 606 | "type": "CheckpointLoaderSimple", 607 | "pos": [ 608 | -500, 609 | 700 610 | ], 611 | "size": { 612 | "0": 315, 613 | "1": 98 614 | }, 615 | "flags": {}, 616 | "order": 4, 617 | "mode": 0, 618 | "outputs": [ 619 | { 620 | "name": "MODEL", 621 | "type": "MODEL", 622 | "links": [ 623 | 38 624 | ], 625 | "shape": 3, 626 | "slot_index": 0 627 | }, 628 | { 629 | "name": "CLIP", 630 | "type": "CLIP", 631 | "links": [ 632 | 39, 633 | 40 634 | ], 635 | "shape": 3, 636 | "slot_index": 1 637 | }, 638 | { 639 | "name": "VAE", 640 | "type": "VAE", 641 | "links": [ 642 | 42 643 | ], 644 | "shape": 3, 645 | "slot_index": 2 646 | } 647 | ], 648 | "properties": { 649 | "Node name for S&R": "CheckpointLoaderSimple" 650 | }, 651 | "widgets_values": [ 652 | "AOM3.safetensors" 653 | ] 654 | }, 655 | { 656 | "id": 46, 657 | "type": "ProjectorzParameter", 658 | "pos": [ 659 | -500, 660 | 850 661 | ], 662 | "size": { 663 | "0": 315, 664 | "1": 82 665 | }, 666 | "flags": {}, 667 | "order": 5, 668 | "mode": 0, 669 | "outputs": [ 670 | { 671 | "name": "STRING", 672 | "type": "STRING", 673 | "links": [ 674 | 51 675 | ], 676 | "shape": 3, 677 | "slot_index": 0 678 | } 679 | ], 680 | "properties": { 681 | "Node name for S&R": "ProjectorzParameter" 682 | }, 683 | "widgets_values": [ 684 | "prompt", 685 | "wood_door" 686 | ] 687 | }, 688 | { 689 | "id": 47, 690 | "type": "ProjectorzParameter", 691 | "pos": [ 692 | -500, 693 | 1100 694 | ], 695 | "size": { 696 | "0": 315, 697 | "1": 82 698 | }, 699 | "flags": {}, 700 | "order": 6, 701 | "mode": 0, 702 | "outputs": [ 703 | { 704 | "name": "STRING", 705 | "type": "STRING", 706 | "links": [ 707 | 52 708 | ], 709 | "shape": 3, 710 | "slot_index": 0 711 | } 712 | ], 713 | "properties": { 714 | "Node name for S&R": "ProjectorzParameter" 715 | }, 716 | "widgets_values": [ 717 | "negative_prompt", 718 | "bad art" 719 | ] 720 | } 721 | ], 722 | "links": [ 723 | [ 724 | 32, 725 | 33, 726 | 0, 727 | 31, 728 | 2, 729 | "CONDITIONING" 730 | ], 731 | [ 732 | 33, 733 | 37, 734 | 0, 735 | 34, 736 | 0, 737 | "INT" 738 | ], 739 | [ 740 | 34, 741 | 38, 742 | 0, 743 | 34, 744 | 1, 745 | "INT" 746 | ], 747 | [ 748 | 35, 749 | 35, 750 | 0, 751 | 37, 752 | 0, 753 | "STRING" 754 | ], 755 | [ 756 | 36, 757 | 36, 758 | 0, 759 | 38, 760 | 0, 761 | "STRING" 762 | ], 763 | [ 764 | 37, 765 | 34, 766 | 0, 767 | 31, 768 | 3, 769 | "LATENT" 770 | ], 771 | [ 772 | 38, 773 | 39, 774 | 0, 775 | 31, 776 | 0, 777 | "MODEL" 778 | ], 779 | [ 780 | 39, 781 | 39, 782 | 1, 783 | 32, 784 | 0, 785 | "CLIP" 786 | ], 787 | [ 788 | 40, 789 | 39, 790 | 1, 791 | 33, 792 | 0, 793 | "CLIP" 794 | ], 795 | [ 796 | 41, 797 | 31, 798 | 0, 799 | 40, 800 | 0, 801 | "LATENT" 802 | ], 803 | [ 804 | 42, 805 | 39, 806 | 2, 807 | 40, 808 | 1, 809 | "VAE" 810 | ], 811 | [ 812 | 43, 813 | 32, 814 | 0, 815 | 41, 816 | 0, 817 | "CONDITIONING" 818 | ], 819 | [ 820 | 45, 821 | 42, 822 | 0, 823 | 41, 824 | 1, 825 | "CONTROL_NET" 826 | ], 827 | [ 828 | 46, 829 | 40, 830 | 0, 831 | 43, 832 | 0, 833 | "IMAGE" 834 | ], 835 | [ 836 | 47, 837 | 40, 838 | 0, 839 | 44, 840 | 0, 841 | "IMAGE" 842 | ], 843 | [ 844 | 48, 845 | 45, 846 | 0, 847 | 28, 848 | 0, 849 | "IMAGE" 850 | ], 851 | [ 852 | 49, 853 | 45, 854 | 0, 855 | 41, 856 | 2, 857 | "IMAGE" 858 | ], 859 | [ 860 | 50, 861 | 41, 862 | 0, 863 | 31, 864 | 1, 865 | "CONDITIONING" 866 | ], 867 | [ 868 | 51, 869 | 46, 870 | 0, 871 | 32, 872 | 1, 873 | "STRING" 874 | ], 875 | [ 876 | 52, 877 | 47, 878 | 0, 879 | 33, 880 | 1, 881 | "STRING" 882 | ] 883 | ], 884 | "groups": [], 885 | "config": {}, 886 | "extra": { 887 | "workspace_info": { 888 | "id": "2-ETy_XTyj5xfIrk71V1D" 889 | } 890 | }, 891 | "version": 0.4 892 | } -------------------------------------------------------------------------------- /sysinfo.json: -------------------------------------------------------------------------------- 1 | { 2 | "Platform": "Windows-10-10.0.22000-SP0", 3 | "Python": "3.10.5", 4 | "Version": "f0.0.17v1.8.0rc-latest-276-g29be1da7", 5 | "Commit": "29be1da7cf2b5dccfc70fbdd33eb35c56a31ffb7", 6 | "Script path": "D:\\stable-diffusion-webui-forge", 7 | "Data path": "D:\\stable-diffusion-webui-forge", 8 | "Extensions dir": "D:\\extensions", 9 | "Checksum": "6197c67c0d911565cf99656ae78a25541de17c2a8d5216f9bb72bbbfc575c6a8", 10 | "Commandline": [ 11 | "launch.py", 12 | "--xformers", 13 | "--listen", 14 | "--autolaunch", 15 | "--enable-insecure-extension-access", 16 | "--pin-shared-memory", 17 | "--cuda-malloc", 18 | "--cuda-stream", 19 | "--api", 20 | "--api-log", 21 | "--loglevel", 22 | "DEBUG" 23 | ], 24 | "Torch env info": { 25 | "torch_version": "2.1.2+cu121", 26 | "is_debug_build": "False", 27 | "cuda_compiled_version": "12.1", 28 | "gcc_version": null, 29 | "clang_version": null, 30 | "cmake_version": "version 3.29.3", 31 | "os": "Microsoft Windows 11 ???", 32 | "libc_version": "N/A", 33 | "python_version": "3.10.5 (tags/v3.10.5:f377153, Jun 6 2022, 16:14:13) [MSC v.1929 64 bit (AMD64)] (64-bit runtime)", 34 | "python_platform": "Windows-10-10.0.22000-SP0", 35 | "is_cuda_available": "True", 36 | "cuda_runtime_version": "12.4.131\r", 37 | "cuda_module_loading": "LAZY", 38 | "nvidia_driver_version": "552.22", 39 | "nvidia_gpu_models": "GPU 0: NVIDIA GeForce RTX 2080 Ti", 40 | "cudnn_version": null, 41 | "pip_version": "pip3", 42 | "pip_packages": [ 43 | "numpy==1.26.2", 44 | "open-clip-torch==2.20.0", 45 | "pytorch-lightning==1.9.4", 46 | "torch==2.1.2+cu121", 47 | "torchdiffeq==0.2.3", 48 | "torchmetrics==1.4.0", 49 | "torchsde==0.2.6", 50 | "torchvision==0.16.2+cu121" 51 | ], 52 | "conda_packages": "", 53 | "hip_compiled_version": "N/A", 54 | "hip_runtime_version": "N/A", 55 | "miopen_runtime_version": "N/A", 56 | "caching_allocator_config": "backend:cudaMallocAsync", 57 | "is_xnnpack_available": "True", 58 | "cpu_info": [ 59 | "Architecture=9", 60 | "CurrentClockSpeed=3500", 61 | "DeviceID=CPU0", 62 | "Family=205", 63 | "L2CacheSize=16384", 64 | "L2CacheSpeed=", 65 | "Manufacturer=GenuineIntel", 66 | "MaxClockSpeed=3500", 67 | "Name=13th Gen Intel(R) Core(TM) i5-13600KF", 68 | "ProcessorType=3", 69 | "Revision=" 70 | ] 71 | }, 72 | "Exceptions": [], 73 | "CPU": { 74 | "model": "Intel64 Family 6 Model 183 Stepping 1, GenuineIntel", 75 | "count logical": 20, 76 | "count physical": 14 77 | }, 78 | "RAM": { 79 | "total": "64GB", 80 | "used": "43GB", 81 | "free": "21GB" 82 | }, 83 | "Extensions": [], 84 | "Inactive extensions": [], 85 | "Environment": { 86 | "GRADIO_ANALYTICS_ENABLED": "False" 87 | }, 88 | "Config": { 89 | "ldsr_steps": 100, 90 | "ldsr_cached": false, 91 | "SCUNET_tile": 256, 92 | "SCUNET_tile_overlap": 8, 93 | "SWIN_tile": 192, 94 | "SWIN_tile_overlap": 8, 95 | "SWIN_torch_compile": false, 96 | "control_net_detectedmap_dir": "detected_maps", 97 | "control_net_models_path": "D:\\ControlNet", 98 | "control_net_modules_path": "", 99 | "control_net_unit_count": 3, 100 | "control_net_model_cache_size": 5, 101 | "control_net_no_detectmap": false, 102 | "control_net_detectmap_autosaving": false, 103 | "control_net_allow_script_control": false, 104 | "control_net_sync_field_args": true, 105 | "controlnet_show_batch_images_in_ui": false, 106 | "controlnet_increment_seed_during_batch": false, 107 | "controlnet_disable_openpose_edit": false, 108 | "controlnet_disable_photopea_edit": false, 109 | "controlnet_photopea_warning": true, 110 | "controlnet_input_thumbnail": true, 111 | "sd_model_checkpoint": "Configure In ComfyUI", 112 | "sd_vae": "None", 113 | "sd_checkpoint_hash": "eb4099ba9cd5e69ab526fca22a2e967f286f8512d9509b735c892fa6468767cf", 114 | "outdir_samples": "", 115 | "outdir_txt2img_samples": "output\\txt2img-images", 116 | "outdir_img2img_samples": "output\\img2img-images", 117 | "outdir_extras_samples": "output\\extras-images", 118 | "outdir_grids": "", 119 | "outdir_txt2img_grids": "output\\txt2img-grids", 120 | "outdir_img2img_grids": "output\\img2img-grids", 121 | "outdir_save": "log\\images", 122 | "outdir_init_images": "output\\init-images", 123 | "samples_save": true, 124 | "samples_format": "png", 125 | "samples_filename_pattern": "", 126 | "save_images_add_number": true, 127 | "save_images_replace_action": "Replace", 128 | "grid_save": true, 129 | "grid_format": "png", 130 | "grid_extended_filename": false, 131 | "grid_only_if_multiple": true, 132 | "grid_prevent_empty_spots": false, 133 | "grid_zip_filename_pattern": "", 134 | "n_rows": -1, 135 | "font": "", 136 | "grid_text_active_color": "#000000", 137 | "grid_text_inactive_color": "#999999", 138 | "grid_background_color": "#ffffff", 139 | "save_images_before_face_restoration": false, 140 | "save_images_before_highres_fix": false, 141 | "save_images_before_color_correction": false, 142 | "save_mask": false, 143 | "save_mask_composite": false, 144 | "jpeg_quality": 80, 145 | "webp_lossless": false, 146 | "export_for_4chan": true, 147 | "img_downscale_threshold": 4.0, 148 | "target_side_length": 4000.0, 149 | "img_max_size_mp": 200.0, 150 | "use_original_name_batch": true, 151 | "use_upscaler_name_as_suffix": false, 152 | "save_selected_only": true, 153 | "save_init_img": false, 154 | "temp_dir": "", 155 | "clean_temp_dir_at_start": false, 156 | "save_incomplete_images": false, 157 | "notification_audio": true, 158 | "notification_volume": 100, 159 | "save_to_dirs": true, 160 | "grid_save_to_dirs": true, 161 | "use_save_to_dirs_for_ui": false, 162 | "directories_filename_pattern": "[date]", 163 | "directories_max_prompt_words": 8, 164 | "auto_backcompat": true, 165 | "use_old_emphasis_implementation": false, 166 | "use_old_karras_scheduler_sigmas": false, 167 | "no_dpmpp_sde_batch_determinism": false, 168 | "use_old_hires_fix_width_height": false, 169 | "dont_fix_second_order_samplers_schedule": false, 170 | "hires_fix_use_firstpass_conds": false, 171 | "use_old_scheduling": false, 172 | "use_downcasted_alpha_bar": false, 173 | "lora_functional": false, 174 | "extra_networks_show_hidden_directories": true, 175 | "extra_networks_dir_button_function": false, 176 | "extra_networks_hidden_models": "When searched", 177 | "extra_networks_default_multiplier": 1, 178 | "extra_networks_card_width": 0.0, 179 | "extra_networks_card_height": 0.0, 180 | "extra_networks_card_text_scale": 1, 181 | "extra_networks_card_show_desc": true, 182 | "extra_networks_card_description_is_html": false, 183 | "extra_networks_card_order_field": "Path", 184 | "extra_networks_card_order": "Ascending", 185 | "extra_networks_tree_view_default_enabled": false, 186 | "extra_networks_add_text_separator": " ", 187 | "ui_extra_networks_tab_reorder": "", 188 | "textual_inversion_print_at_load": false, 189 | "textual_inversion_add_hashes_to_infotext": true, 190 | "sd_hypernetwork": "None", 191 | "sd_lora": "None", 192 | "lora_preferred_name": "Alias from file", 193 | "lora_add_hashes_to_infotext": true, 194 | "lora_show_all": false, 195 | "lora_hide_unknown_for_versions": [], 196 | "lora_in_memory_limit": 0, 197 | "lora_not_found_warning_console": false, 198 | "lora_not_found_gradio_warning": false, 199 | "cross_attention_optimization": "Automatic", 200 | "s_min_uncond": 0, 201 | "token_merging_ratio": 0, 202 | "token_merging_ratio_img2img": 0, 203 | "token_merging_ratio_hr": 0, 204 | "pad_cond_uncond": false, 205 | "pad_cond_uncond_v0": false, 206 | "persistent_cond_cache": true, 207 | "batch_cond_uncond": true, 208 | "fp8_storage": "Disable", 209 | "cache_fp16_weight": false, 210 | "hide_samplers": [], 211 | "eta_ddim": 0, 212 | "eta_ancestral": 1, 213 | "ddim_discretize": "uniform", 214 | "s_churn": 0, 215 | "s_tmin": 0, 216 | "s_tmax": 0, 217 | "s_noise": 1, 218 | "k_sched_type": "Automatic", 219 | "sigma_min": 0.0, 220 | "sigma_max": 0.0, 221 | "rho": 0.0, 222 | "eta_noise_seed_delta": 0, 223 | "always_discard_next_to_last_sigma": false, 224 | "sgm_noise_multiplier": false, 225 | "uni_pc_variant": "bh1", 226 | "uni_pc_skip_type": "time_uniform", 227 | "uni_pc_order": 3, 228 | "uni_pc_lower_order_final": true, 229 | "sd_noise_schedule": "Default", 230 | "sd_checkpoints_limit": 1, 231 | "sd_checkpoints_keep_in_cpu": true, 232 | "sd_checkpoint_cache": 0, 233 | "sd_unet": "Automatic", 234 | "enable_quantization": false, 235 | "emphasis": "Original", 236 | "enable_batch_seeds": true, 237 | "comma_padding_backtrack": 20, 238 | "upcast_attn": false, 239 | "randn_source": "GPU", 240 | "tiling": false, 241 | "hires_fix_refiner_pass": "first pass", 242 | "enable_prompt_comments": true, 243 | "sdxl_crop_top": 0.0, 244 | "sdxl_crop_left": 0.0, 245 | "sdxl_refiner_low_aesthetic_score": 2.5, 246 | "sdxl_refiner_high_aesthetic_score": 6.0, 247 | "sd_vae_checkpoint_cache": 0, 248 | "sd_vae_overrides_per_model_preferences": true, 249 | "auto_vae_precision_bfloat16": false, 250 | "auto_vae_precision": true, 251 | "sd_vae_encode_method": "Full", 252 | "sd_vae_decode_method": "Full", 253 | "inpainting_mask_weight": 1, 254 | "initial_noise_multiplier": 1, 255 | "img2img_extra_noise": 0, 256 | "img2img_color_correction": false, 257 | "img2img_fix_steps": false, 258 | "img2img_background_color": "#ffffff", 259 | "img2img_editor_height": 720, 260 | "img2img_sketch_default_brush_color": "#ffffff", 261 | "img2img_inpaint_mask_brush_color": "#ffffff", 262 | "img2img_inpaint_sketch_default_brush_color": "#ffffff", 263 | "return_mask": false, 264 | "return_mask_composite": false, 265 | "img2img_batch_show_results_limit": 32, 266 | "overlay_inpaint": true, 267 | "return_grid": true, 268 | "do_not_show_images": false, 269 | "js_modal_lightbox": true, 270 | "js_modal_lightbox_initially_zoomed": true, 271 | "js_modal_lightbox_gamepad": false, 272 | "js_modal_lightbox_gamepad_repeat": 250.0, 273 | "sd_webui_modal_lightbox_icon_opacity": 1, 274 | "sd_webui_modal_lightbox_toolbar_opacity": 0.9, 275 | "gallery_height": "", 276 | "open_dir_button_choice": "Subdirectory", 277 | "enable_pnginfo": true, 278 | "save_txt": false, 279 | "add_model_name_to_info": true, 280 | "add_model_hash_to_info": true, 281 | "add_vae_name_to_info": true, 282 | "add_vae_hash_to_info": true, 283 | "add_user_name_to_info": false, 284 | "add_version_to_infotext": true, 285 | "disable_weights_auto_swap": true, 286 | "infotext_skip_pasting": [], 287 | "infotext_styles": "Apply if any", 288 | "show_progressbar": true, 289 | "live_previews_enable": true, 290 | "live_previews_image_format": "png", 291 | "show_progress_grid": true, 292 | "show_progress_every_n_steps": 10, 293 | "show_progress_type": "Approx NN", 294 | "live_preview_allow_lowvram_full": false, 295 | "live_preview_content": "Prompt", 296 | "live_preview_refresh_period": 1000.0, 297 | "live_preview_fast_interrupt": false, 298 | "js_live_preview_in_modal_lightbox": false, 299 | "keyedit_precision_attention": 0.1, 300 | "keyedit_precision_extra": 0.05, 301 | "keyedit_delimiters": ".,\\/!?%^*;:{}=`~() ", 302 | "keyedit_delimiters_whitespace": [ 303 | "Tab", 304 | "Carriage Return", 305 | "Line Feed" 306 | ], 307 | "keyedit_move": true, 308 | "disable_token_counters": false, 309 | "include_styles_into_token_counters": true, 310 | "extra_options_txt2img": [], 311 | "extra_options_img2img": [], 312 | "extra_options_cols": 1, 313 | "extra_options_accordion": false, 314 | "compact_prompt_box": false, 315 | "samplers_in_dropdown": true, 316 | "dimensions_and_batch_together": true, 317 | "sd_checkpoint_dropdown_use_short": false, 318 | "hires_fix_show_sampler": false, 319 | "hires_fix_show_prompts": false, 320 | "txt2img_settings_accordion": false, 321 | "img2img_settings_accordion": false, 322 | "interrupt_after_current": true, 323 | "localization": "None", 324 | "quicksettings_list": [ 325 | "sd_model_checkpoint", 326 | "sd_vae", 327 | "CLIP_stop_at_last_layers" 328 | ], 329 | "ui_tab_order": [], 330 | "hidden_tabs": [], 331 | "ui_reorder_list": [], 332 | "gradio_theme": "Default", 333 | "gradio_themes_cache": true, 334 | "show_progress_in_title": true, 335 | "send_seed": true, 336 | "send_size": true, 337 | "api_enable_requests": true, 338 | "api_forbid_local_requests": true, 339 | "api_useragent": "", 340 | "auto_launch_browser": "Local", 341 | "enable_console_prompts": false, 342 | "show_warnings": false, 343 | "show_gradio_deprecation_warnings": true, 344 | "memmon_poll_rate": 8, 345 | "samples_log_stdout": false, 346 | "multiple_tqdm": true, 347 | "enable_upscale_progressbar": true, 348 | "print_hypernet_extra": false, 349 | "list_hidden_files": true, 350 | "disable_mmap_load_safetensors": false, 351 | "hide_ldm_prints": true, 352 | "dump_stacks_on_signal": false, 353 | "face_restoration": false, 354 | "face_restoration_model": "CodeFormer", 355 | "code_former_weight": 0.5, 356 | "face_restoration_unload": false, 357 | "postprocessing_enable_in_main_ui": [], 358 | "postprocessing_operation_order": [], 359 | "upscaling_max_images_in_cache": 5, 360 | "postprocessing_existing_caption_action": "Ignore", 361 | "ESRGAN_tile": 192, 362 | "ESRGAN_tile_overlap": 8, 363 | "realesrgan_enabled_models": [ 364 | "R-ESRGAN 4x+", 365 | "R-ESRGAN 4x+ Anime6B" 366 | ], 367 | "dat_enabled_models": [ 368 | "DAT x2", 369 | "DAT x3", 370 | "DAT x4" 371 | ], 372 | "DAT_tile": 192, 373 | "DAT_tile_overlap": 8, 374 | "unload_models_when_training": false, 375 | "pin_memory": false, 376 | "save_optimizer_state": false, 377 | "save_training_settings_to_txt": true, 378 | "dataset_filename_word_regex": "", 379 | "dataset_filename_join_string": " ", 380 | "training_image_repeats_per_epoch": 1, 381 | "training_write_csv_every": 500.0, 382 | "training_xattention_optimizations": false, 383 | "training_enable_tensorboard": false, 384 | "training_tensorboard_save_images": false, 385 | "training_tensorboard_flush_every": 120.0, 386 | "canvas_hotkey_zoom": "Alt", 387 | "canvas_hotkey_adjust": "Ctrl", 388 | "canvas_hotkey_shrink_brush": "Q", 389 | "canvas_hotkey_grow_brush": "W", 390 | "canvas_hotkey_move": "F", 391 | "canvas_hotkey_fullscreen": "S", 392 | "canvas_hotkey_reset": "R", 393 | "canvas_hotkey_overlap": "O", 394 | "canvas_show_tooltip": true, 395 | "canvas_auto_expand": true, 396 | "canvas_blur_prompt": false, 397 | "canvas_disabled_functions": [ 398 | "Overlap" 399 | ], 400 | "interrogate_keep_models_in_memory": false, 401 | "interrogate_return_ranks": false, 402 | "interrogate_clip_num_beams": 1, 403 | "interrogate_clip_min_length": 24, 404 | "interrogate_clip_max_length": 48, 405 | "interrogate_clip_dict_limit": 1500.0, 406 | "interrogate_clip_skip_categories": [], 407 | "interrogate_deepbooru_score_threshold": 0.5, 408 | "deepbooru_sort_alpha": true, 409 | "deepbooru_use_spaces": true, 410 | "deepbooru_escape": true, 411 | "deepbooru_filter_tags": "", 412 | "CLIP_stop_at_last_layers": 1, 413 | "upscaler_for_img2img": "R-ESRGAN 4x+" 414 | }, 415 | "Startup": { 416 | "total": 35.82890605926514, 417 | "records": { 418 | "initial startup": 0.02299785614013672, 419 | "prepare environment/checks": 0.0010006427764892578, 420 | "prepare environment/git version info": 0.11066532135009766, 421 | "prepare environment/torch GPU test": 3.5702154636383057, 422 | "prepare environment/clone repositores": 0.2807614803314209, 423 | "prepare environment/run extensions installers": 0.00201416015625, 424 | "prepare environment/run extensions_builtin installers/canvas-zoom-and-pan": 0.001005411148071289, 425 | "prepare environment/run extensions_builtin installers/extra-options-section": 0.0, 426 | "prepare environment/run extensions_builtin installers/forge_legacy_preprocessors": 0.29414939880371094, 427 | "prepare environment/run extensions_builtin installers/forge_preprocessor_inpaint": 0.0005478858947753906, 428 | "prepare environment/run extensions_builtin installers/forge_preprocessor_marigold": 0.0, 429 | "prepare environment/run extensions_builtin installers/forge_preprocessor_normalbae": 0.0005502700805664062, 430 | "prepare environment/run extensions_builtin installers/forge_preprocessor_recolor": 0.0, 431 | "prepare environment/run extensions_builtin installers/forge_preprocessor_reference": 0.0005352497100830078, 432 | "prepare environment/run extensions_builtin installers/forge_preprocessor_revision": 0.0, 433 | "prepare environment/run extensions_builtin installers/forge_preprocessor_tile": 0.0005211830139160156, 434 | "prepare environment/run extensions_builtin installers/LDSR": 0.0, 435 | "prepare environment/run extensions_builtin installers/Lora": 0.0005223751068115234, 436 | "prepare environment/run extensions_builtin installers/mobile": 0.0, 437 | "prepare environment/run extensions_builtin installers/prompt-bracket-checker": 0.0005383491516113281, 438 | "prepare environment/run extensions_builtin installers/ScuNET": 0.0, 439 | "prepare environment/run extensions_builtin installers/sd_forge_controlllite": 0.0005309581756591797, 440 | "prepare environment/run extensions_builtin installers/sd_forge_controlnet": 0.2839622497558594, 441 | "prepare environment/run extensions_builtin installers/sd_forge_controlnet_example": 0.0010018348693847656, 442 | "prepare environment/run extensions_builtin installers/sd_forge_dynamic_thresholding": 0.0, 443 | "prepare environment/run extensions_builtin installers/sd_forge_fooocus_inpaint": 0.0, 444 | "prepare environment/run extensions_builtin installers/sd_forge_freeu": 0.0, 445 | "prepare environment/run extensions_builtin installers/sd_forge_hypertile": 0.0009992122650146484, 446 | "prepare environment/run extensions_builtin installers/sd_forge_ipadapter": 0.0, 447 | "prepare environment/run extensions_builtin installers/sd_forge_kohya_hrfix": 0.0, 448 | "prepare environment/run extensions_builtin installers/sd_forge_latent_modifier": 0.0, 449 | "prepare environment/run extensions_builtin installers/sd_forge_multidiffusion": 0.0, 450 | "prepare environment/run extensions_builtin installers/sd_forge_neveroom": 0.0009984970092773438, 451 | "prepare environment/run extensions_builtin installers/sd_forge_photomaker": 0.0, 452 | "prepare environment/run extensions_builtin installers/sd_forge_sag": 0.0, 453 | "prepare environment/run extensions_builtin installers/sd_forge_stylealign": 0.0, 454 | "prepare environment/run extensions_builtin installers/sd_forge_svd": 0.0, 455 | "prepare environment/run extensions_builtin installers/sd_forge_z123": 0.0009999275207519531, 456 | "prepare environment/run extensions_builtin installers/soft-inpainting": 0.0, 457 | "prepare environment/run extensions_builtin installers/SwinIR": 0.0, 458 | "prepare environment/run extensions_builtin installers": 0.5868628025054932, 459 | "prepare environment": 4.59986424446106, 460 | "launcher": 0.0018799304962158203, 461 | "import torch": 10.41801142692566, 462 | "import gradio": 1.6211001873016357, 463 | "setup paths": 1.3021881580352783, 464 | "import ldm": 0.008752822875976562, 465 | "import sgm": 0.0, 466 | "initialize shared": 0.1870555877685547, 467 | "other imports": 0.9376115798950195, 468 | "opts onchange": 0.0010030269622802734, 469 | "setup SD model": 0.0010073184967041016, 470 | "setup codeformer": 0.0019979476928710938, 471 | "setup gfpgan": 0.01517629623413086, 472 | "set samplers": 0.0010097026824951172, 473 | "list extensions": 0.0050165653228759766, 474 | "restore config state file": 0.0, 475 | "list SD models": 0.08486628532409668, 476 | "list localizations": 0.0, 477 | "load scripts/custom_code.py": 0.011597394943237305, 478 | "load scripts/img2imgalt.py": 0.0009996891021728516, 479 | "load scripts/loopback.py": 0.0010037422180175781, 480 | "load scripts/outpainting_mk_2.py": 0.0, 481 | "load scripts/poor_mans_outpainting.py": 0.0007176399230957031, 482 | "load scripts/postprocessing_caption.py": 0.0, 483 | "load scripts/postprocessing_codeformer.py": 0.0010783672332763672, 484 | "load scripts/postprocessing_create_flipped_copies.py": 0.0010144710540771484, 485 | "load scripts/postprocessing_focal_crop.py": 0.020041704177856445, 486 | "load scripts/postprocessing_gfpgan.py": 0.0010006427764892578, 487 | "load scripts/postprocessing_split_oversized.py": 0.0010001659393310547, 488 | "load scripts/postprocessing_upscale.py": 0.0020003318786621094, 489 | "load scripts/processing_autosized_crop.py": 0.0009996891021728516, 490 | "load scripts/prompt_matrix.py": 0.001001596450805664, 491 | "load scripts/prompts_from_file.py": 0.0020494461059570312, 492 | "load scripts/sd_upscale.py": 0.0, 493 | "load scripts/xyz_grid.py": 0.011040210723876953, 494 | "load scripts/ldsr_model.py": 0.894047737121582, 495 | "load scripts/lora_script.py": 1.4116573333740234, 496 | "load scripts/scunet_model.py": 0.2327895164489746, 497 | "load scripts/swinir_model.py": 0.266101598739624, 498 | "load scripts/hotkey_config.py": 0.0, 499 | "load scripts/extra_options_section.py": 0.0010042190551757812, 500 | "load scripts/legacy_preprocessors.py": 0.01180577278137207, 501 | "load scripts/preprocessor_inpaint.py": 0.0205838680267334, 502 | "load scripts/preprocessor_marigold.py": 0.18079137802124023, 503 | "load scripts/preprocessor_normalbae.py": 0.005088090896606445, 504 | "load scripts/preprocessor_recolor.py": 0.0, 505 | "load scripts/forge_reference.py": 0.0, 506 | "load scripts/preprocessor_revision.py": 0.0009686946868896484, 507 | "load scripts/preprocessor_tile.py": 0.0, 508 | "load scripts/forge_controllllite.py": 0.00885462760925293, 509 | "load scripts/controlnet.py": 1.9831736087799072, 510 | "load scripts/xyz_grid_support.py": 0.0010135173797607422, 511 | "load scripts/sd_forge_controlnet_example.py": 0.0, 512 | "load scripts/forge_dynamic_thresholding.py": 0.005999565124511719, 513 | "load scripts/forge_fooocus_inpaint.py": 0.0, 514 | "load scripts/forge_freeu.py": 0.004259824752807617, 515 | "load scripts/forge_hypertile.py": 0.002860546112060547, 516 | "load scripts/forge_ipadapter.py": 0.006012439727783203, 517 | "load scripts/kohya_hrfix.py": 0.0028705596923828125, 518 | "load scripts/forge_latent_modifier.py": 0.004008054733276367, 519 | "load scripts/forge_multidiffusion.py": 0.007009744644165039, 520 | "load scripts/forge_never_oom.py": 0.0015723705291748047, 521 | "load scripts/forge_photomaker.py": 0.0030133724212646484, 522 | "load scripts/forge_sag.py": 0.004004716873168945, 523 | "load scripts/forge_stylealign.py": 0.0, 524 | "load scripts/forge_svd.py": 0.24135804176330566, 525 | "load scripts/forge_z123.py": 0.24125385284423828, 526 | "load scripts/soft_inpainting.py": 0.0010006427764892578, 527 | "load scripts/comments.py": 0.2156963348388672, 528 | "load scripts/refiner.py": 0.0, 529 | "load scripts/seed.py": 0.0010056495666503906, 530 | "load scripts": 5.815350770950317, 531 | "load upscalers": 0.006025552749633789, 532 | "refresh VAE": 0.04941391944885254, 533 | "refresh textual inversion templates": 0.0, 534 | "scripts list_optimizers": 0.15437746047973633, 535 | "scripts list_unets": 0.0, 536 | "reload hypernetworks": 0.0, 537 | "initialize extra networks": 0.003013134002685547, 538 | "scripts before_ui_callback": 0.0029997825622558594, 539 | "create ui": 2.5327906608581543, 540 | "gradio launch": 5.397334337234497, 541 | "add APIs": 2.704474925994873, 542 | "app_started_callback/lora_script.py": 0.0009434223175048828, 543 | "app_started_callback/controlnet.py": 0.001994609832763672, 544 | "app_started_callback": 0.0029380321502685547 545 | } 546 | }, 547 | "Packages": [ 548 | "absl-py==2.1.0", 549 | "accelerate==0.21.0", 550 | "addict==2.4.0", 551 | "aenum==3.1.15", 552 | "aiofiles==23.2.1", 553 | "aiohttp==3.9.5", 554 | "aiosignal==1.3.1", 555 | "albumentations==1.4.6", 556 | "altair==5.3.0", 557 | "annotated-types==0.6.0", 558 | "antlr4-python3-runtime==4.9.3", 559 | "anyio==3.7.1", 560 | "async-timeout==4.0.3", 561 | "attrs==23.2.0", 562 | "basicsr==1.4.2", 563 | "blendmodes==2022", 564 | "certifi==2024.2.2", 565 | "cffi==1.16.0", 566 | "chardet==5.2.0", 567 | "charset-normalizer==3.3.2", 568 | "clean-fid==0.1.35", 569 | "click==8.1.7", 570 | "clip==1.0", 571 | "colorama==0.4.6", 572 | "coloredlogs==15.0.1", 573 | "colorlog==6.8.2", 574 | "contourpy==1.2.1", 575 | "cssselect2==0.7.0", 576 | "cycler==0.12.1", 577 | "cython==3.0.10", 578 | "deprecation==2.1.0", 579 | "depth-anything==2024.1.22.0", 580 | "diffusers==0.25.0", 581 | "dnspython==2.6.1", 582 | "easydict==1.13", 583 | "einops==0.4.1", 584 | "email-validator==2.1.1", 585 | "embreex==2.17.7.post4", 586 | "exceptiongroup==1.2.1", 587 | "facexlib==0.3.0", 588 | "fastapi-cli==0.0.3", 589 | "fastapi==0.94.0", 590 | "ffmpy==0.3.2", 591 | "filelock==3.14.0", 592 | "filterpy==1.4.5", 593 | "flatbuffers==24.3.25", 594 | "fonttools==4.51.0", 595 | "frozenlist==1.4.1", 596 | "fsspec==2024.3.1", 597 | "ftfy==6.2.0", 598 | "future==1.0.0", 599 | "fvcore==0.1.5.post20221221", 600 | "gitdb==4.0.11", 601 | "gitpython==3.1.32", 602 | "gradio-client==0.5.0", 603 | "gradio==3.41.2", 604 | "grpcio==1.63.0", 605 | "h11==0.12.0", 606 | "handrefinerportable==2024.2.12.0", 607 | "httpcore==0.15.0", 608 | "httptools==0.6.1", 609 | "httpx==0.24.1", 610 | "huggingface-hub==0.23.0", 611 | "humanfriendly==10.0", 612 | "idna==3.7", 613 | "imageio==2.34.1", 614 | "importlib-metadata==7.1.0", 615 | "importlib-resources==6.4.0", 616 | "inflection==0.5.1", 617 | "insightface==0.7.3", 618 | "iopath==0.1.9", 619 | "jax==0.4.28", 620 | "jaxlib==0.4.28", 621 | "jinja2==3.1.4", 622 | "joblib==1.4.2", 623 | "jsonmerge==1.8.0", 624 | "jsonschema-specifications==2023.12.1", 625 | "jsonschema==4.22.0", 626 | "kiwisolver==1.4.5", 627 | "kornia==0.6.7", 628 | "lark==1.1.2", 629 | "lazy-loader==0.4", 630 | "lightning-utilities==0.11.2", 631 | "llvmlite==0.42.0", 632 | "lmdb==1.4.1", 633 | "lxml==5.2.1", 634 | "mapbox-earcut==1.0.1", 635 | "markdown-it-py==3.0.0", 636 | "markdown==3.6", 637 | "markupsafe==2.1.5", 638 | "matplotlib==3.8.4", 639 | "mdurl==0.1.2", 640 | "mediapipe==0.10.14", 641 | "ml-dtypes==0.4.0", 642 | "mpmath==1.3.0", 643 | "multidict==6.0.5", 644 | "networkx==3.3", 645 | "numba==0.59.1", 646 | "numpy==1.26.2", 647 | "omegaconf==2.2.3", 648 | "onnx==1.16.0", 649 | "onnxruntime==1.17.3", 650 | "open-clip-torch==2.20.0", 651 | "opencv-contrib-python==4.9.0.80", 652 | "opencv-python-headless==4.9.0.80", 653 | "opencv-python==4.9.0.80", 654 | "opt-einsum==3.3.0", 655 | "orjson==3.10.3", 656 | "packaging==24.0", 657 | "pandas==2.2.2", 658 | "piexif==1.1.3", 659 | "pillow==9.5.0", 660 | "pip==22.0.4", 661 | "platformdirs==4.2.1", 662 | "portalocker==2.8.2", 663 | "pretty-errors==1.2.25", 664 | "prettytable==3.10.0", 665 | "protobuf==3.20.3", 666 | "psutil==5.9.5", 667 | "pycollada==0.8", 668 | "pycparser==2.22", 669 | "pydantic-core==2.18.2", 670 | "pydantic==1.10.15", 671 | "pydub==0.25.1", 672 | "pygments==2.18.0", 673 | "pyparsing==3.1.2", 674 | "pyreadline3==3.4.1", 675 | "python-dateutil==2.9.0.post0", 676 | "python-dotenv==1.0.1", 677 | "python-multipart==0.0.9", 678 | "pytorch-lightning==1.9.4", 679 | "pytz==2024.1", 680 | "pywavelets==1.6.0", 681 | "pywin32==306", 682 | "pyyaml==6.0.1", 683 | "referencing==0.35.1", 684 | "regex==2024.5.10", 685 | "reportlab==4.2.0", 686 | "requests==2.31.0", 687 | "resize-right==0.0.2", 688 | "rich==13.7.1", 689 | "rpds-py==0.18.1", 690 | "rtree==1.2.0", 691 | "safetensors==0.4.2", 692 | "scikit-image==0.21.0", 693 | "scikit-learn==1.4.2", 694 | "scipy==1.13.0", 695 | "semantic-version==2.10.0", 696 | "sentencepiece==0.2.0", 697 | "setuptools==58.1.0", 698 | "shapely==2.0.4", 699 | "shellingham==1.5.4", 700 | "six==1.16.0", 701 | "smmap==5.0.1", 702 | "sniffio==1.3.1", 703 | "sounddevice==0.4.6", 704 | "spandrel==0.1.6", 705 | "starlette==0.26.1", 706 | "svg.path==6.3", 707 | "svglib==1.5.1", 708 | "sympy==1.12", 709 | "tabulate==0.9.0", 710 | "tb-nightly==2.17.0a20240512", 711 | "tensorboard-data-server==0.7.2", 712 | "termcolor==2.4.0", 713 | "threadpoolctl==3.5.0", 714 | "tifffile==2024.5.10", 715 | "timm==0.9.16", 716 | "tinycss2==1.3.0", 717 | "tokenizers==0.13.3", 718 | "tomesd==0.1.3", 719 | "tomli==2.0.1", 720 | "toolz==0.12.1", 721 | "torch==2.1.2+cu121", 722 | "torchdiffeq==0.2.3", 723 | "torchmetrics==1.4.0", 724 | "torchsde==0.2.6", 725 | "torchvision==0.16.2+cu121", 726 | "tqdm==4.66.4", 727 | "trampoline==0.1.2", 728 | "transformers==4.30.2", 729 | "trimesh==4.3.2", 730 | "typer==0.12.3", 731 | "typing-extensions==4.11.0", 732 | "tzdata==2024.1", 733 | "ujson==5.9.0", 734 | "urllib3==2.2.1", 735 | "uvicorn==0.29.0", 736 | "vhacdx==0.0.6", 737 | "watchfiles==0.21.0", 738 | "wcwidth==0.2.13", 739 | "webencodings==0.5.1", 740 | "websockets==11.0.3", 741 | "werkzeug==3.0.3", 742 | "xatlas==0.0.9", 743 | "xformers==0.0.23.post1", 744 | "xxhash==3.4.1", 745 | "yacs==0.1.8", 746 | "yapf==0.40.2", 747 | "yarl==1.9.4", 748 | "zipp==3.18.1" 749 | ] 750 | } -------------------------------------------------------------------------------- /sd-models_sample.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "title": ".cache\\invoke\\ldm\\stable-diffusion-v1\\vae-ft-mse-840000-ema-pruned.ckpt [c6a580b13a]", 4 | "model_name": ".cache_invoke_ldm_stable-diffusion-v1_vae-ft-mse-840000-ema-pruned", 5 | "hash": "c6a580b13a", 6 | "sha256": "c6a580b13a5bc05a5e16e4dbb80608ff2ec251a162311590c1f34c013d7f3dab", 7 | "filename": "D:\\Projects\\AI\\0_Models\\2_Graphic\\.cache\\invoke\\ldm\\stable-diffusion-v1\\vae-ft-mse-840000-ema-pruned.ckpt", 8 | "config": null 9 | }, 10 | { 11 | "title": "ControlNet\\control_canny-fp16.safetensors", 12 | "model_name": "ControlNet_control_canny-fp16", 13 | "hash": null, 14 | "sha256": null, 15 | "filename": "D:\\Projects\\AI\\0_Models\\2_Graphic\\ControlNet\\control_canny-fp16.safetensors", 16 | "config": null 17 | }, 18 | { 19 | "title": "ControlNet\\control_depth-fp16.safetensors", 20 | "model_name": "ControlNet_control_depth-fp16", 21 | "hash": "400750F6", 22 | "sha256": "400750F6", 23 | "filename": "D:\\Projects\\AI\\0_Models\\2_Graphic\\ControlNet\\control_depth-fp16.safetensors", 24 | "config": null 25 | }, 26 | { 27 | "title": "ControlNet\\control_hed-fp16.safetensors", 28 | "model_name": "ControlNet_control_hed-fp16", 29 | "hash": null, 30 | "sha256": null, 31 | "filename": "D:\\Projects\\AI\\0_Models\\2_Graphic\\ControlNet\\control_hed-fp16.safetensors", 32 | "config": null 33 | }, 34 | { 35 | "title": "ControlNet\\control_lora_rank128_v11f1e_sd15_tile_fp16.safetensors", 36 | "model_name": "ControlNet_control_lora_rank128_v11f1e_sd15_tile_fp16", 37 | "hash": null, 38 | "sha256": null, 39 | "filename": "D:\\Projects\\AI\\0_Models\\2_Graphic\\ControlNet\\control_lora_rank128_v11f1e_sd15_tile_fp16.safetensors", 40 | "config": null 41 | }, 42 | { 43 | "title": "ControlNet\\control_mediapipe_face_sd15_v2.safetensors", 44 | "model_name": "ControlNet_control_mediapipe_face_sd15_v2", 45 | "hash": null, 46 | "sha256": null, 47 | "filename": "D:\\Projects\\AI\\0_Models\\2_Graphic\\ControlNet\\control_mediapipe_face_sd15_v2.safetensors", 48 | "config": null 49 | }, 50 | { 51 | "title": "ControlNet\\control_mlsd-fp16.safetensors", 52 | "model_name": "ControlNet_control_mlsd-fp16", 53 | "hash": null, 54 | "sha256": null, 55 | "filename": "D:\\Projects\\AI\\0_Models\\2_Graphic\\ControlNet\\control_mlsd-fp16.safetensors", 56 | "config": null 57 | }, 58 | { 59 | "title": "ControlNet\\control_normal-fp16.safetensors", 60 | "model_name": "ControlNet_control_normal-fp16", 61 | "hash": null, 62 | "sha256": null, 63 | "filename": "D:\\Projects\\AI\\0_Models\\2_Graphic\\ControlNet\\control_normal-fp16.safetensors", 64 | "config": null 65 | }, 66 | { 67 | "title": "ControlNet\\control_openpose-fp16.safetensors", 68 | "model_name": "ControlNet_control_openpose-fp16", 69 | "hash": null, 70 | "sha256": null, 71 | "filename": "D:\\Projects\\AI\\0_Models\\2_Graphic\\ControlNet\\control_openpose-fp16.safetensors", 72 | "config": null 73 | }, 74 | { 75 | "title": "ControlNet\\control_scribble-fp16.safetensors", 76 | "model_name": "ControlNet_control_scribble-fp16", 77 | "hash": null, 78 | "sha256": null, 79 | "filename": "D:\\Projects\\AI\\0_Models\\2_Graphic\\ControlNet\\control_scribble-fp16.safetensors", 80 | "config": null 81 | }, 82 | { 83 | "title": "ControlNet\\control_seg-fp16.safetensors", 84 | "model_name": "ControlNet_control_seg-fp16", 85 | "hash": null, 86 | "sha256": null, 87 | "filename": "D:\\Projects\\AI\\0_Models\\2_Graphic\\ControlNet\\control_seg-fp16.safetensors", 88 | "config": null 89 | }, 90 | { 91 | "title": "ControlNet\\control_v2p_sd15_mediapipe_face.safetensors", 92 | "model_name": "ControlNet_control_v2p_sd15_mediapipe_face", 93 | "hash": null, 94 | "sha256": null, 95 | "filename": "D:\\Projects\\AI\\0_Models\\2_Graphic\\ControlNet\\control_v2p_sd15_mediapipe_face.safetensors", 96 | "config": null 97 | }, 98 | { 99 | "title": "ControlNet\\control_v11p_sd15_inpaint_fp16.safetensors", 100 | "model_name": "ControlNet_control_v11p_sd15_inpaint_fp16", 101 | "hash": null, 102 | "sha256": null, 103 | "filename": "D:\\Projects\\AI\\0_Models\\2_Graphic\\ControlNet\\control_v11p_sd15_inpaint_fp16.safetensors", 104 | "config": null 105 | }, 106 | { 107 | "title": "ControlNet\\controlnet11Models_animeline.safetensors", 108 | "model_name": "ControlNet_controlnet11Models_animeline", 109 | "hash": null, 110 | "sha256": null, 111 | "filename": "D:\\Projects\\AI\\0_Models\\2_Graphic\\ControlNet\\controlnet11Models_animeline.safetensors", 112 | "config": null 113 | }, 114 | { 115 | "title": "ControlNet\\controlnet11Models_canny.safetensors", 116 | "model_name": "ControlNet_controlnet11Models_canny", 117 | "hash": null, 118 | "sha256": null, 119 | "filename": "D:\\Projects\\AI\\0_Models\\2_Graphic\\ControlNet\\controlnet11Models_canny.safetensors", 120 | "config": null 121 | }, 122 | { 123 | "title": "ControlNet\\controlnet11Models_depth.safetensors", 124 | "model_name": "ControlNet_controlnet11Models_depth", 125 | "hash": null, 126 | "sha256": null, 127 | "filename": "D:\\Projects\\AI\\0_Models\\2_Graphic\\ControlNet\\controlnet11Models_depth.safetensors", 128 | "config": null 129 | }, 130 | { 131 | "title": "ControlNet\\controlnet11Models_inpaint.safetensors", 132 | "model_name": "ControlNet_controlnet11Models_inpaint", 133 | "hash": null, 134 | "sha256": null, 135 | "filename": "D:\\Projects\\AI\\0_Models\\2_Graphic\\ControlNet\\controlnet11Models_inpaint.safetensors", 136 | "config": null 137 | }, 138 | { 139 | "title": "ControlNet\\controlnet11Models_lineart.safetensors", 140 | "model_name": "ControlNet_controlnet11Models_lineart", 141 | "hash": null, 142 | "sha256": null, 143 | "filename": "D:\\Projects\\AI\\0_Models\\2_Graphic\\ControlNet\\controlnet11Models_lineart.safetensors", 144 | "config": null 145 | }, 146 | { 147 | "title": "ControlNet\\controlnet11Models_mlsd.safetensors", 148 | "model_name": "ControlNet_controlnet11Models_mlsd", 149 | "hash": null, 150 | "sha256": null, 151 | "filename": "D:\\Projects\\AI\\0_Models\\2_Graphic\\ControlNet\\controlnet11Models_mlsd.safetensors", 152 | "config": null 153 | }, 154 | { 155 | "title": "ControlNet\\controlnet11Models_normal.safetensors", 156 | "model_name": "ControlNet_controlnet11Models_normal", 157 | "hash": null, 158 | "sha256": null, 159 | "filename": "D:\\Projects\\AI\\0_Models\\2_Graphic\\ControlNet\\controlnet11Models_normal.safetensors", 160 | "config": null 161 | }, 162 | { 163 | "title": "ControlNet\\controlnet11Models_openpose.safetensors", 164 | "model_name": "ControlNet_controlnet11Models_openpose", 165 | "hash": null, 166 | "sha256": null, 167 | "filename": "D:\\Projects\\AI\\0_Models\\2_Graphic\\ControlNet\\controlnet11Models_openpose.safetensors", 168 | "config": null 169 | }, 170 | { 171 | "title": "ControlNet\\controlnet11Models_pix2pix.safetensors", 172 | "model_name": "ControlNet_controlnet11Models_pix2pix", 173 | "hash": null, 174 | "sha256": null, 175 | "filename": "D:\\Projects\\AI\\0_Models\\2_Graphic\\ControlNet\\controlnet11Models_pix2pix.safetensors", 176 | "config": null 177 | }, 178 | { 179 | "title": "ControlNet\\controlnet11Models_scribble.safetensors", 180 | "model_name": "ControlNet_controlnet11Models_scribble", 181 | "hash": null, 182 | "sha256": null, 183 | "filename": "D:\\Projects\\AI\\0_Models\\2_Graphic\\ControlNet\\controlnet11Models_scribble.safetensors", 184 | "config": null 185 | }, 186 | { 187 | "title": "ControlNet\\controlnet11Models_seg.safetensors", 188 | "model_name": "ControlNet_controlnet11Models_seg", 189 | "hash": null, 190 | "sha256": null, 191 | "filename": "D:\\Projects\\AI\\0_Models\\2_Graphic\\ControlNet\\controlnet11Models_seg.safetensors", 192 | "config": null 193 | }, 194 | { 195 | "title": "ControlNet\\controlnet11Models_shuffle.safetensors", 196 | "model_name": "ControlNet_controlnet11Models_shuffle", 197 | "hash": null, 198 | "sha256": null, 199 | "filename": "D:\\Projects\\AI\\0_Models\\2_Graphic\\ControlNet\\controlnet11Models_shuffle.safetensors", 200 | "config": null 201 | }, 202 | { 203 | "title": "ControlNet\\controlnet11Models_softedge.safetensors", 204 | "model_name": "ControlNet_controlnet11Models_softedge", 205 | "hash": null, 206 | "sha256": null, 207 | "filename": "D:\\Projects\\AI\\0_Models\\2_Graphic\\ControlNet\\controlnet11Models_softedge.safetensors", 208 | "config": null 209 | }, 210 | { 211 | "title": "ControlNet\\controlnet11Models_tile.safetensors", 212 | "model_name": "ControlNet_controlnet11Models_tile", 213 | "hash": null, 214 | "sha256": null, 215 | "filename": "D:\\Projects\\AI\\0_Models\\2_Graphic\\ControlNet\\controlnet11Models_tile.safetensors", 216 | "config": null 217 | }, 218 | { 219 | "title": "ControlNet\\diffusers_xl_depth_full.safetensors", 220 | "model_name": "ControlNet_diffusers_xl_depth_full", 221 | "hash": null, 222 | "sha256": null, 223 | "filename": "D:\\Projects\\AI\\0_Models\\2_Graphic\\ControlNet\\diffusers_xl_depth_full.safetensors", 224 | "config": null 225 | }, 226 | { 227 | "title": "ControlNet\\t2iadapter_color-fp16.safetensors", 228 | "model_name": "ControlNet_t2iadapter_color-fp16", 229 | "hash": null, 230 | "sha256": null, 231 | "filename": "D:\\Projects\\AI\\0_Models\\2_Graphic\\ControlNet\\t2iadapter_color-fp16.safetensors", 232 | "config": null 233 | }, 234 | { 235 | "title": "embeddings\\EasyNegative.safetensors", 236 | "model_name": "embeddings_EasyNegative", 237 | "hash": null, 238 | "sha256": null, 239 | "filename": "D:\\Projects\\AI\\0_Models\\2_Graphic\\embeddings\\EasyNegative.safetensors", 240 | "config": null 241 | }, 242 | { 243 | "title": "LDSR\\model.ckpt", 244 | "model_name": "LDSR_model", 245 | "hash": null, 246 | "sha256": null, 247 | "filename": "D:\\Projects\\AI\\0_Models\\2_Graphic\\LDSR\\model.ckpt", 248 | "config": null 249 | }, 250 | { 251 | "title": "Lora\\64x3-05.safetensors", 252 | "model_name": "Lora_64x3-05", 253 | "hash": null, 254 | "sha256": null, 255 | "filename": "D:\\Projects\\AI\\0_Models\\2_Graphic\\Lora\\64x3-05.safetensors", 256 | "config": null 257 | }, 258 | { 259 | "title": "Lora\\0220 nude tattoo_v2.safetensors", 260 | "model_name": "Lora_0220 nude tattoo_v2", 261 | "hash": null, 262 | "sha256": null, 263 | "filename": "D:\\Projects\\AI\\0_Models\\2_Graphic\\Lora\\0220 nude tattoo_v2.safetensors", 264 | "config": null 265 | }, 266 | { 267 | "title": "Lora\\add_detail.safetensors", 268 | "model_name": "Lora_add_detail", 269 | "hash": null, 270 | "sha256": null, 271 | "filename": "D:\\Projects\\AI\\0_Models\\2_Graphic\\Lora\\add_detail.safetensors", 272 | "config": null 273 | }, 274 | { 275 | "title": "Lora\\demoTaeyeon_teayeonsnsdV1.safetensors", 276 | "model_name": "Lora_demoTaeyeon_teayeonsnsdV1", 277 | "hash": null, 278 | "sha256": null, 279 | "filename": "D:\\Projects\\AI\\0_Models\\2_Graphic\\Lora\\demoTaeyeon_teayeonsnsdV1.safetensors", 280 | "config": null 281 | }, 282 | { 283 | "title": "Lora\\ExperimentalMakeup_v10.safetensors", 284 | "model_name": "Lora_ExperimentalMakeup_v10", 285 | "hash": null, 286 | "sha256": null, 287 | "filename": "D:\\Projects\\AI\\0_Models\\2_Graphic\\Lora\\ExperimentalMakeup_v10.safetensors", 288 | "config": null 289 | }, 290 | { 291 | "title": "Lora\\fashionGirl_v53.safetensors", 292 | "model_name": "Lora_fashionGirl_v53", 293 | "hash": null, 294 | "sha256": null, 295 | "filename": "D:\\Projects\\AI\\0_Models\\2_Graphic\\Lora\\fashionGirl_v53.safetensors", 296 | "config": null 297 | }, 298 | { 299 | "title": "Lora\\gachaSplashLORA_v40.safetensors", 300 | "model_name": "Lora_gachaSplashLORA_v40", 301 | "hash": null, 302 | "sha256": null, 303 | "filename": "D:\\Projects\\AI\\0_Models\\2_Graphic\\Lora\\gachaSplashLORA_v40.safetensors", 304 | "config": null 305 | }, 306 | { 307 | "title": "Lora\\GJY_LoCon.safetensors", 308 | "model_name": "Lora_GJY_LoCon", 309 | "hash": null, 310 | "sha256": null, 311 | "filename": "D:\\Projects\\AI\\0_Models\\2_Graphic\\Lora\\GJY_LoCon.safetensors", 312 | "config": null 313 | }, 314 | { 315 | "title": "Lora\\GJY_LoHA.safetensors", 316 | "model_name": "Lora_GJY_LoHA", 317 | "hash": null, 318 | "sha256": null, 319 | "filename": "D:\\Projects\\AI\\0_Models\\2_Graphic\\Lora\\GJY_LoHA.safetensors", 320 | "config": null 321 | }, 322 | { 323 | "title": "Lora\\GJY_LoRA.safetensors", 324 | "model_name": "Lora_GJY_LoRA", 325 | "hash": null, 326 | "sha256": null, 327 | "filename": "D:\\Projects\\AI\\0_Models\\2_Graphic\\Lora\\GJY_LoRA.safetensors", 328 | "config": null 329 | }, 330 | { 331 | "title": "Lora\\Goth_girl-v2.safetensors", 332 | "model_name": "Lora_Goth_girl-v2", 333 | "hash": null, 334 | "sha256": null, 335 | "filename": "D:\\Projects\\AI\\0_Models\\2_Graphic\\Lora\\Goth_girl-v2.safetensors", 336 | "config": null 337 | }, 338 | { 339 | "title": "Lora\\hyperrefiner_v090.safetensors", 340 | "model_name": "Lora_hyperrefiner_v090", 341 | "hash": null, 342 | "sha256": null, 343 | "filename": "D:\\Projects\\AI\\0_Models\\2_Graphic\\Lora\\hyperrefiner_v090.safetensors", 344 | "config": null 345 | }, 346 | { 347 | "title": "Lora\\japaneseDollLikeness_v10.safetensors", 348 | "model_name": "Lora_japaneseDollLikeness_v10", 349 | "hash": null, 350 | "sha256": null, 351 | "filename": "D:\\Projects\\AI\\0_Models\\2_Graphic\\Lora\\japaneseDollLikeness_v10.safetensors", 352 | "config": null 353 | }, 354 | { 355 | "title": "Lora\\koreanDollLikeness_v15.safetensors", 356 | "model_name": "Lora_koreanDollLikeness_v15", 357 | "hash": null, 358 | "sha256": null, 359 | "filename": "D:\\Projects\\AI\\0_Models\\2_Graphic\\Lora\\koreanDollLikeness_v15.safetensors", 360 | "config": null 361 | }, 362 | { 363 | "title": "Lora\\lcm-lora-sdv1-5.safetensors.safetensors", 364 | "model_name": "Lora_lcm-lora-sdv1-5.safetensors", 365 | "hash": null, 366 | "sha256": null, 367 | "filename": "D:\\Projects\\AI\\0_Models\\2_Graphic\\Lora\\lcm-lora-sdv1-5.safetensors.safetensors", 368 | "config": null 369 | }, 370 | { 371 | "title": "Lora\\lcm-lora-sdxl.safetensors", 372 | "model_name": "Lora_lcm-lora-sdxl", 373 | "hash": null, 374 | "sha256": null, 375 | "filename": "D:\\Projects\\AI\\0_Models\\2_Graphic\\Lora\\lcm-lora-sdxl.safetensors", 376 | "config": null 377 | }, 378 | { 379 | "title": "Lora\\LohaWhiteDewStyle_lohaV10.safetensors", 380 | "model_name": "Lora_LohaWhiteDewStyle_lohaV10", 381 | "hash": null, 382 | "sha256": null, 383 | "filename": "D:\\Projects\\AI\\0_Models\\2_Graphic\\Lora\\LohaWhiteDewStyle_lohaV10.safetensors", 384 | "config": null 385 | }, 386 | { 387 | "title": "Lora\\lucyCyberpunk_35Epochs.safetensors", 388 | "model_name": "Lora_lucyCyberpunk_35Epochs", 389 | "hash": null, 390 | "sha256": null, 391 | "filename": "D:\\Projects\\AI\\0_Models\\2_Graphic\\Lora\\lucyCyberpunk_35Epochs.safetensors", 392 | "config": null 393 | }, 394 | { 395 | "title": "Lora\\lucyCyberpunk_42Epochs.safetensors", 396 | "model_name": "Lora_lucyCyberpunk_42Epochs", 397 | "hash": null, 398 | "sha256": null, 399 | "filename": "D:\\Projects\\AI\\0_Models\\2_Graphic\\Lora\\lucyCyberpunk_42Epochs.safetensors", 400 | "config": null 401 | }, 402 | { 403 | "title": "Lora\\megu-lokr.safetensors", 404 | "model_name": "Lora_megu-lokr", 405 | "hash": null, 406 | "sha256": null, 407 | "filename": "D:\\Projects\\AI\\0_Models\\2_Graphic\\Lora\\megu-lokr.safetensors", 408 | "config": null 409 | }, 410 | { 411 | "title": "Lora\\mikapikazo.safetensors", 412 | "model_name": "Lora_mikapikazo", 413 | "hash": null, 414 | "sha256": null, 415 | "filename": "D:\\Projects\\AI\\0_Models\\2_Graphic\\Lora\\mikapikazo.safetensors", 416 | "config": null 417 | }, 418 | { 419 | "title": "Lora\\natsumi_ikitottanka_ware_v002_animagine.safetensors", 420 | "model_name": "Lora_natsumi_ikitottanka_ware_v002_animagine", 421 | "hash": null, 422 | "sha256": null, 423 | "filename": "D:\\Projects\\AI\\0_Models\\2_Graphic\\Lora\\natsumi_ikitottanka_ware_v002_animagine.safetensors", 424 | "config": null 425 | }, 426 | { 427 | "title": "Lora\\phoenixdressV.2-0000010.safetensors", 428 | "model_name": "Lora_phoenixdressV.2-0000010", 429 | "hash": null, 430 | "sha256": null, 431 | "filename": "D:\\Projects\\AI\\0_Models\\2_Graphic\\Lora\\phoenixdressV.2-0000010.safetensors", 432 | "config": null 433 | }, 434 | { 435 | "title": "Lora\\rebuildOfEvangelionStyle_4LoconLycoris.safetensors", 436 | "model_name": "Lora_rebuildOfEvangelionStyle_4LoconLycoris", 437 | "hash": null, 438 | "sha256": null, 439 | "filename": "D:\\Projects\\AI\\0_Models\\2_Graphic\\Lora\\rebuildOfEvangelionStyle_4LoconLycoris.safetensors", 440 | "config": null 441 | }, 442 | { 443 | "title": "Lora\\taiwanDollLikeness_v10.safetensors", 444 | "model_name": "Lora_taiwanDollLikeness_v10", 445 | "hash": null, 446 | "sha256": null, 447 | "filename": "D:\\Projects\\AI\\0_Models\\2_Graphic\\Lora\\taiwanDollLikeness_v10.safetensors", 448 | "config": null 449 | }, 450 | { 451 | "title": "Lora\\Ukiyo-e.safetensors", 452 | "model_name": "Lora_Ukiyo-e", 453 | "hash": null, 454 | "sha256": null, 455 | "filename": "D:\\Projects\\AI\\0_Models\\2_Graphic\\Lora\\Ukiyo-e.safetensors", 456 | "config": null 457 | }, 458 | { 459 | "title": "StableDiffusion\\16-bit-landscape_PublicPrompts.ckpt", 460 | "model_name": "StableDiffusion_16-bit-landscape_PublicPrompts", 461 | "hash": null, 462 | "sha256": null, 463 | "filename": "D:\\Projects\\AI\\0_Models\\2_Graphic\\StableDiffusion\\16-bit-landscape_PublicPrompts.ckpt", 464 | "config": null 465 | }, 466 | { 467 | "title": "StableDiffusion\\allInOnePixelModel_v1.ckpt", 468 | "model_name": "StableDiffusion_allInOnePixelModel_v1", 469 | "hash": null, 470 | "sha256": null, 471 | "filename": "D:\\Projects\\AI\\0_Models\\2_Graphic\\StableDiffusion\\allInOnePixelModel_v1.ckpt", 472 | "config": null 473 | }, 474 | { 475 | "title": "StableDiffusion\\Anything-V3.0-pruned-fp16.ckpt", 476 | "model_name": "StableDiffusion_Anything-V3.0-pruned-fp16", 477 | "hash": null, 478 | "sha256": null, 479 | "filename": "D:\\Projects\\AI\\0_Models\\2_Graphic\\StableDiffusion\\Anything-V3.0-pruned-fp16.ckpt", 480 | "config": null 481 | }, 482 | { 483 | "title": "StableDiffusion\\AnythingGape.ckpt", 484 | "model_name": "StableDiffusion_AnythingGape", 485 | "hash": null, 486 | "sha256": null, 487 | "filename": "D:\\Projects\\AI\\0_Models\\2_Graphic\\StableDiffusion\\AnythingGape.ckpt", 488 | "config": null 489 | }, 490 | { 491 | "title": "StableDiffusion\\AOM2-NSFW-inpainting.safetensors", 492 | "model_name": "StableDiffusion_AOM2-NSFW-inpainting", 493 | "hash": null, 494 | "sha256": null, 495 | "filename": "D:\\Projects\\AI\\0_Models\\2_Graphic\\StableDiffusion\\AOM2-NSFW-inpainting.safetensors", 496 | "config": null 497 | }, 498 | { 499 | "title": "StableDiffusion\\AOM2-NSFW.safetensors", 500 | "model_name": "StableDiffusion_AOM2-NSFW", 501 | "hash": null, 502 | "sha256": null, 503 | "filename": "D:\\Projects\\AI\\0_Models\\2_Graphic\\StableDiffusion\\AOM2-NSFW.safetensors", 504 | "config": null 505 | }, 506 | { 507 | "title": "StableDiffusion\\AOM2-SFW-inpainting.safetensors", 508 | "model_name": "StableDiffusion_AOM2-SFW-inpainting", 509 | "hash": null, 510 | "sha256": null, 511 | "filename": "D:\\Projects\\AI\\0_Models\\2_Graphic\\StableDiffusion\\AOM2-SFW-inpainting.safetensors", 512 | "config": null 513 | }, 514 | { 515 | "title": "StableDiffusion\\AOM2-SFW.safetensors", 516 | "model_name": "StableDiffusion_AOM2-SFW", 517 | "hash": null, 518 | "sha256": null, 519 | "filename": "D:\\Projects\\AI\\0_Models\\2_Graphic\\StableDiffusion\\AOM2-SFW.safetensors", 520 | "config": null 521 | }, 522 | { 523 | "title": "StableDiffusion\\AOM3.safetensors [d124fc18f0]", 524 | "model_name": "StableDiffusion_AOM3", 525 | "hash": "d124fc18f0", 526 | "sha256": "d124fc18f0232d7f0a2a70358cdb1288af9e1ee8596200f50f0936be59514f6d", 527 | "filename": "D:\\Projects\\AI\\0_Models\\2_Graphic\\StableDiffusion\\AOM3.safetensors", 528 | "config": null 529 | }, 530 | { 531 | "title": "StableDiffusion\\AOM3A1.safetensors [f303d10812]", 532 | "model_name": "StableDiffusion_AOM3A1", 533 | "hash": "f303d10812", 534 | "sha256": "f303d108122ddd43a34c160bd46dbb08cb0e088e979acda0bf168a7a1f5820e0", 535 | "filename": "D:\\Projects\\AI\\0_Models\\2_Graphic\\StableDiffusion\\AOM3A1.safetensors", 536 | "config": null 537 | }, 538 | { 539 | "title": "StableDiffusion\\AOM3A2.safetensors", 540 | "model_name": "StableDiffusion_AOM3A2", 541 | "hash": null, 542 | "sha256": null, 543 | "filename": "D:\\Projects\\AI\\0_Models\\2_Graphic\\StableDiffusion\\AOM3A2.safetensors", 544 | "config": null 545 | }, 546 | { 547 | "title": "StableDiffusion\\AOM3A3.safetensors [eb4099ba9c]", 548 | "model_name": "StableDiffusion_AOM3A3", 549 | "hash": "eb4099ba9c", 550 | "sha256": "eb4099ba9cd5e69ab526fca22a2e967f286f8512d9509b735c892fa6468767cf", 551 | "filename": "D:\\Projects\\AI\\0_Models\\2_Graphic\\StableDiffusion\\AOM3A3.safetensors", 552 | "config": null 553 | }, 554 | { 555 | "title": "StableDiffusion\\appIconsGenerator_v1.ckpt", 556 | "model_name": "StableDiffusion_appIconsGenerator_v1", 557 | "hash": null, 558 | "sha256": null, 559 | "filename": "D:\\Projects\\AI\\0_Models\\2_Graphic\\StableDiffusion\\appIconsGenerator_v1.ckpt", 560 | "config": null 561 | }, 562 | { 563 | "title": "StableDiffusion\\arcane-diffusion-v3.ckpt", 564 | "model_name": "StableDiffusion_arcane-diffusion-v3", 565 | "hash": null, 566 | "sha256": null, 567 | "filename": "D:\\Projects\\AI\\0_Models\\2_Graphic\\StableDiffusion\\arcane-diffusion-v3.ckpt", 568 | "config": null 569 | }, 570 | { 571 | "title": "StableDiffusion\\astranime_V6.safetensors", 572 | "model_name": "StableDiffusion_astranime_V6", 573 | "hash": null, 574 | "sha256": null, 575 | "filename": "D:\\Projects\\AI\\0_Models\\2_Graphic\\StableDiffusion\\astranime_V6.safetensors", 576 | "config": null 577 | }, 578 | { 579 | "title": "StableDiffusion\\berry_mix.ckpt", 580 | "model_name": "StableDiffusion_berry_mix", 581 | "hash": null, 582 | "sha256": null, 583 | "filename": "D:\\Projects\\AI\\0_Models\\2_Graphic\\StableDiffusion\\berry_mix.ckpt", 584 | "config": null 585 | }, 586 | { 587 | "title": "StableDiffusion\\ChromaV5 (2.0).ckpt", 588 | "model_name": "StableDiffusion_ChromaV5 (2.0)", 589 | "hash": null, 590 | "sha256": null, 591 | "filename": "D:\\Projects\\AI\\0_Models\\2_Graphic\\StableDiffusion\\ChromaV5 (2.0).ckpt", 592 | "config": null 593 | }, 594 | { 595 | "title": "StableDiffusion\\classicAnim-v1.ckpt", 596 | "model_name": "StableDiffusion_classicAnim-v1", 597 | "hash": null, 598 | "sha256": null, 599 | "filename": "D:\\Projects\\AI\\0_Models\\2_Graphic\\StableDiffusion\\classicAnim-v1.ckpt", 600 | "config": null 601 | }, 602 | { 603 | "title": "StableDiffusion\\comicDiffusion_v2.ckpt", 604 | "model_name": "StableDiffusion_comicDiffusion_v2", 605 | "hash": null, 606 | "sha256": null, 607 | "filename": "D:\\Projects\\AI\\0_Models\\2_Graphic\\StableDiffusion\\comicDiffusion_v2.ckpt", 608 | "config": null 609 | }, 610 | { 611 | "title": "StableDiffusion\\complexLineart_v1.ckpt", 612 | "model_name": "StableDiffusion_complexLineart_v1", 613 | "hash": null, 614 | "sha256": null, 615 | "filename": "D:\\Projects\\AI\\0_Models\\2_Graphic\\StableDiffusion\\complexLineart_v1.ckpt", 616 | "config": null 617 | }, 618 | { 619 | "title": "StableDiffusion\\Counterfeit-V2.5.safetensors", 620 | "model_name": "StableDiffusion_Counterfeit-V2.5", 621 | "hash": null, 622 | "sha256": null, 623 | "filename": "D:\\Projects\\AI\\0_Models\\2_Graphic\\StableDiffusion\\Counterfeit-V2.5.safetensors", 624 | "config": null 625 | }, 626 | { 627 | "title": "StableDiffusion\\dalcefo_v3_painting.safetensors", 628 | "model_name": "StableDiffusion_dalcefo_v3_painting", 629 | "hash": null, 630 | "sha256": null, 631 | "filename": "D:\\Projects\\AI\\0_Models\\2_Graphic\\StableDiffusion\\dalcefo_v3_painting.safetensors", 632 | "config": null 633 | }, 634 | { 635 | "title": "StableDiffusion\\darkSushiMixMix_colorful.safetensors", 636 | "model_name": "StableDiffusion_darkSushiMixMix_colorful", 637 | "hash": null, 638 | "sha256": null, 639 | "filename": "D:\\Projects\\AI\\0_Models\\2_Graphic\\StableDiffusion\\darkSushiMixMix_colorful.safetensors", 640 | "config": null 641 | }, 642 | { 643 | "title": "StableDiffusion\\dbmai.ckpt", 644 | "model_name": "StableDiffusion_dbmai", 645 | "hash": null, 646 | "sha256": null, 647 | "filename": "D:\\Projects\\AI\\0_Models\\2_Graphic\\StableDiffusion\\dbmai.ckpt", 648 | "config": null 649 | }, 650 | { 651 | "title": "StableDiffusion\\dewdrop_v15.ckpt", 652 | "model_name": "StableDiffusion_dewdrop_v15", 653 | "hash": null, 654 | "sha256": null, 655 | "filename": "D:\\Projects\\AI\\0_Models\\2_Graphic\\StableDiffusion\\dewdrop_v15.ckpt", 656 | "config": null 657 | }, 658 | { 659 | "title": "StableDiffusion\\DosMix.safetensors", 660 | "model_name": "StableDiffusion_DosMix", 661 | "hash": null, 662 | "sha256": null, 663 | "filename": "D:\\Projects\\AI\\0_Models\\2_Graphic\\StableDiffusion\\DosMix.safetensors", 664 | "config": null 665 | }, 666 | { 667 | "title": "StableDiffusion\\DreamShaper.safetensors", 668 | "model_name": "StableDiffusion_DreamShaper", 669 | "hash": null, 670 | "sha256": null, 671 | "filename": "D:\\Projects\\AI\\0_Models\\2_Graphic\\StableDiffusion\\DreamShaper.safetensors", 672 | "config": null 673 | }, 674 | { 675 | "title": "StableDiffusion\\DreamShaper_8_pruned.safetensors", 676 | "model_name": "StableDiffusion_DreamShaper_8_pruned", 677 | "hash": null, 678 | "sha256": null, 679 | "filename": "D:\\Projects\\AI\\0_Models\\2_Graphic\\StableDiffusion\\DreamShaper_8_pruned.safetensors", 680 | "config": null 681 | }, 682 | { 683 | "title": "StableDiffusion\\eldenRingStyle_v3.ckpt", 684 | "model_name": "StableDiffusion_eldenRingStyle_v3", 685 | "hash": null, 686 | "sha256": null, 687 | "filename": "D:\\Projects\\AI\\0_Models\\2_Graphic\\StableDiffusion\\eldenRingStyle_v3.ckpt", 688 | "config": null 689 | }, 690 | { 691 | "title": "StableDiffusion\\f222.ckpt", 692 | "model_name": "StableDiffusion_f222", 693 | "hash": null, 694 | "sha256": null, 695 | "filename": "D:\\Projects\\AI\\0_Models\\2_Graphic\\StableDiffusion\\f222.ckpt", 696 | "config": null 697 | }, 698 | { 699 | "title": "StableDiffusion\\gapingLargeInsertion_60.ckpt", 700 | "model_name": "StableDiffusion_gapingLargeInsertion_60", 701 | "hash": null, 702 | "sha256": null, 703 | "filename": "D:\\Projects\\AI\\0_Models\\2_Graphic\\StableDiffusion\\gapingLargeInsertion_60.ckpt", 704 | "config": null 705 | }, 706 | { 707 | "title": "StableDiffusion\\ghibliDiffusion_v1.ckpt", 708 | "model_name": "StableDiffusion_ghibliDiffusion_v1", 709 | "hash": null, 710 | "sha256": null, 711 | "filename": "D:\\Projects\\AI\\0_Models\\2_Graphic\\StableDiffusion\\ghibliDiffusion_v1.ckpt", 712 | "config": null 713 | }, 714 | { 715 | "title": "StableDiffusion\\ghostmix.safetensors", 716 | "model_name": "StableDiffusion_ghostmix", 717 | "hash": null, 718 | "sha256": null, 719 | "filename": "D:\\Projects\\AI\\0_Models\\2_Graphic\\StableDiffusion\\ghostmix.safetensors", 720 | "config": null 721 | }, 722 | { 723 | "title": "StableDiffusion\\GJYDBTest_0.safetensors", 724 | "model_name": "StableDiffusion_GJYDBTest_0", 725 | "hash": null, 726 | "sha256": null, 727 | "filename": "D:\\Projects\\AI\\0_Models\\2_Graphic\\StableDiffusion\\GJYDBTest_0.safetensors", 728 | "config": "D:\\Projects\\AI\\0_Models\\2_Graphic\\StableDiffusion\\GJYDBTest_0.yaml" 729 | }, 730 | { 731 | "title": "StableDiffusion\\GrapefruitV4-inpainting.safetensors", 732 | "model_name": "StableDiffusion_GrapefruitV4-inpainting", 733 | "hash": null, 734 | "sha256": null, 735 | "filename": "D:\\Projects\\AI\\0_Models\\2_Graphic\\StableDiffusion\\GrapefruitV4-inpainting.safetensors", 736 | "config": null 737 | }, 738 | { 739 | "title": "StableDiffusion\\GrapefruitV4.safetensors", 740 | "model_name": "StableDiffusion_GrapefruitV4", 741 | "hash": null, 742 | "sha256": null, 743 | "filename": "D:\\Projects\\AI\\0_Models\\2_Graphic\\StableDiffusion\\GrapefruitV4.safetensors", 744 | "config": null 745 | }, 746 | { 747 | "title": "StableDiffusion\\hassanBlend14.ckpt", 748 | "model_name": "StableDiffusion_hassanBlend14", 749 | "hash": null, 750 | "sha256": null, 751 | "filename": "D:\\Projects\\AI\\0_Models\\2_Graphic\\StableDiffusion\\hassanBlend14.ckpt", 752 | "config": null 753 | }, 754 | { 755 | "title": "StableDiffusion\\HD-17.ckpt", 756 | "model_name": "StableDiffusion_HD-17", 757 | "hash": null, 758 | "sha256": null, 759 | "filename": "D:\\Projects\\AI\\0_Models\\2_Graphic\\StableDiffusion\\HD-17.ckpt", 760 | "config": null 761 | }, 762 | { 763 | "title": "StableDiffusion\\iCoMix-V04.safetensors", 764 | "model_name": "StableDiffusion_iCoMix-V04", 765 | "hash": null, 766 | "sha256": null, 767 | "filename": "D:\\Projects\\AI\\0_Models\\2_Graphic\\StableDiffusion\\iCoMix-V04.safetensors", 768 | "config": null 769 | }, 770 | { 771 | "title": "StableDiffusion\\inkpunkDiffusion_v2.ckpt", 772 | "model_name": "StableDiffusion_inkpunkDiffusion_v2", 773 | "hash": null, 774 | "sha256": null, 775 | "filename": "D:\\Projects\\AI\\0_Models\\2_Graphic\\StableDiffusion\\inkpunkDiffusion_v2.ckpt", 776 | "config": null 777 | }, 778 | { 779 | "title": "StableDiffusion\\isometricCities_v1.ckpt", 780 | "model_name": "StableDiffusion_isometricCities_v1", 781 | "hash": null, 782 | "sha256": null, 783 | "filename": "D:\\Projects\\AI\\0_Models\\2_Graphic\\StableDiffusion\\isometricCities_v1.ckpt", 784 | "config": null 785 | }, 786 | { 787 | "title": "StableDiffusion\\jaksCreepyCritter..._v1.ckpt", 788 | "model_name": "StableDiffusion_jaksCreepyCritter..._v1", 789 | "hash": null, 790 | "sha256": null, 791 | "filename": "D:\\Projects\\AI\\0_Models\\2_Graphic\\StableDiffusion\\jaksCreepyCritter..._v1.ckpt", 792 | "config": null 793 | }, 794 | { 795 | "title": "StableDiffusion\\jakSVoxelIshImage_v12.ckpt", 796 | "model_name": "StableDiffusion_jakSVoxelIshImage_v12", 797 | "hash": null, 798 | "sha256": null, 799 | "filename": "D:\\Projects\\AI\\0_Models\\2_Graphic\\StableDiffusion\\jakSVoxelIshImage_v12.ckpt", 800 | "config": null 801 | }, 802 | { 803 | "title": "StableDiffusion\\jakSWoolitizeImag_woolitizeForSd15.ckpt", 804 | "model_name": "StableDiffusion_jakSWoolitizeImag_woolitizeForSd15", 805 | "hash": null, 806 | "sha256": null, 807 | "filename": "D:\\Projects\\AI\\0_Models\\2_Graphic\\StableDiffusion\\jakSWoolitizeImag_woolitizeForSd15.ckpt", 808 | "config": null 809 | }, 810 | { 811 | "title": "StableDiffusion\\jhSSamdoesarts_v5.ckpt", 812 | "model_name": "StableDiffusion_jhSSamdoesarts_v5", 813 | "hash": null, 814 | "sha256": null, 815 | "filename": "D:\\Projects\\AI\\0_Models\\2_Graphic\\StableDiffusion\\jhSSamdoesarts_v5.ckpt", 816 | "config": null 817 | }, 818 | { 819 | "title": "StableDiffusion\\JWST-Deep-Space.ckpt", 820 | "model_name": "StableDiffusion_JWST-Deep-Space", 821 | "hash": null, 822 | "sha256": null, 823 | "filename": "D:\\Projects\\AI\\0_Models\\2_Graphic\\StableDiffusion\\JWST-Deep-Space.ckpt", 824 | "config": null 825 | }, 826 | { 827 | "title": "StableDiffusion\\Lyriel.safetensors", 828 | "model_name": "StableDiffusion_Lyriel", 829 | "hash": null, 830 | "sha256": null, 831 | "filename": "D:\\Projects\\AI\\0_Models\\2_Graphic\\StableDiffusion\\Lyriel.safetensors", 832 | "config": null 833 | }, 834 | { 835 | "title": "StableDiffusion\\mdjrny-v4.ckpt", 836 | "model_name": "StableDiffusion_mdjrny-v4", 837 | "hash": null, 838 | "sha256": null, 839 | "filename": "D:\\Projects\\AI\\0_Models\\2_Graphic\\StableDiffusion\\mdjrny-v4.ckpt", 840 | "config": null 841 | }, 842 | { 843 | "title": "StableDiffusion\\Meina.safetensors", 844 | "model_name": "StableDiffusion_Meina", 845 | "hash": null, 846 | "sha256": null, 847 | "filename": "D:\\Projects\\AI\\0_Models\\2_Graphic\\StableDiffusion\\Meina.safetensors", 848 | "config": null 849 | }, 850 | { 851 | "title": "StableDiffusion\\microWorlds_v1.ckpt", 852 | "model_name": "StableDiffusion_microWorlds_v1", 853 | "hash": null, 854 | "sha256": null, 855 | "filename": "D:\\Projects\\AI\\0_Models\\2_Graphic\\StableDiffusion\\microWorlds_v1.ckpt", 856 | "config": null 857 | }, 858 | { 859 | "title": "StableDiffusion\\midjourneyPapercut_v1.ckpt", 860 | "model_name": "StableDiffusion_midjourneyPapercut_v1", 861 | "hash": null, 862 | "sha256": null, 863 | "filename": "D:\\Projects\\AI\\0_Models\\2_Graphic\\StableDiffusion\\midjourneyPapercut_v1.ckpt", 864 | "config": null 865 | }, 866 | { 867 | "title": "StableDiffusion\\MMD V1-18 MODEL MERGE (TONED DOWN) ALPHA.ckpt", 868 | "model_name": "StableDiffusion_MMD V1-18 MODEL MERGE (TONED DOWN) ALPHA", 869 | "hash": null, 870 | "sha256": null, 871 | "filename": "D:\\Projects\\AI\\0_Models\\2_Graphic\\StableDiffusion\\MMD V1-18 MODEL MERGE (TONED DOWN) ALPHA.ckpt", 872 | "config": null 873 | }, 874 | { 875 | "title": "StableDiffusion\\model_Anything-V3.0-pruned-fp16_GJY_300.ckpt", 876 | "model_name": "StableDiffusion_model_Anything-V3.0-pruned-fp16_GJY_300", 877 | "hash": null, 878 | "sha256": null, 879 | "filename": "D:\\Projects\\AI\\0_Models\\2_Graphic\\StableDiffusion\\model_Anything-V3.0-pruned-fp16_GJY_300.ckpt", 880 | "config": null 881 | }, 882 | { 883 | "title": "StableDiffusion\\model_Anything-V3.0-pruned-fp16_GJY_600.ckpt", 884 | "model_name": "StableDiffusion_model_Anything-V3.0-pruned-fp16_GJY_600", 885 | "hash": null, 886 | "sha256": null, 887 | "filename": "D:\\Projects\\AI\\0_Models\\2_Graphic\\StableDiffusion\\model_Anything-V3.0-pruned-fp16_GJY_600.ckpt", 888 | "config": null 889 | }, 890 | { 891 | "title": "StableDiffusion\\model_Anything-V3.0-pruned-fp16_GJY_900.ckpt", 892 | "model_name": "StableDiffusion_model_Anything-V3.0-pruned-fp16_GJY_900", 893 | "hash": null, 894 | "sha256": null, 895 | "filename": "D:\\Projects\\AI\\0_Models\\2_Graphic\\StableDiffusion\\model_Anything-V3.0-pruned-fp16_GJY_900.ckpt", 896 | "config": null 897 | }, 898 | { 899 | "title": "StableDiffusion\\model_Anything-V3.0-pruned-fp16_GJY_1100.ckpt", 900 | "model_name": "StableDiffusion_model_Anything-V3.0-pruned-fp16_GJY_1100", 901 | "hash": null, 902 | "sha256": null, 903 | "filename": "D:\\Projects\\AI\\0_Models\\2_Graphic\\StableDiffusion\\model_Anything-V3.0-pruned-fp16_GJY_1100.ckpt", 904 | "config": null 905 | }, 906 | { 907 | "title": "StableDiffusion\\model_v1-5-pruned-emaonly_GJY_400.ckpt", 908 | "model_name": "StableDiffusion_model_v1-5-pruned-emaonly_GJY_400", 909 | "hash": null, 910 | "sha256": null, 911 | "filename": "D:\\Projects\\AI\\0_Models\\2_Graphic\\StableDiffusion\\model_v1-5-pruned-emaonly_GJY_400.ckpt", 912 | "config": null 913 | }, 914 | { 915 | "title": "StableDiffusion\\model_v1-5-pruned-emaonly_GJY_800.ckpt", 916 | "model_name": "StableDiffusion_model_v1-5-pruned-emaonly_GJY_800", 917 | "hash": null, 918 | "sha256": null, 919 | "filename": "D:\\Projects\\AI\\0_Models\\2_Graphic\\StableDiffusion\\model_v1-5-pruned-emaonly_GJY_800.ckpt", 920 | "config": null 921 | }, 922 | { 923 | "title": "StableDiffusion\\model_v1-5-pruned-emaonly_GJY_1200.ckpt", 924 | "model_name": "StableDiffusion_model_v1-5-pruned-emaonly_GJY_1200", 925 | "hash": null, 926 | "sha256": null, 927 | "filename": "D:\\Projects\\AI\\0_Models\\2_Graphic\\StableDiffusion\\model_v1-5-pruned-emaonly_GJY_1200.ckpt", 928 | "config": null 929 | }, 930 | { 931 | "title": "StableDiffusion\\modernDisney_v1.ckpt", 932 | "model_name": "StableDiffusion_modernDisney_v1", 933 | "hash": null, 934 | "sha256": null, 935 | "filename": "D:\\Projects\\AI\\0_Models\\2_Graphic\\StableDiffusion\\modernDisney_v1.ckpt", 936 | "config": null 937 | }, 938 | { 939 | "title": "StableDiffusion\\OldFish_2348V12_clipfix.safetensors", 940 | "model_name": "StableDiffusion_OldFish_2348V12_clipfix", 941 | "hash": null, 942 | "sha256": null, 943 | "filename": "D:\\Projects\\AI\\0_Models\\2_Graphic\\StableDiffusion\\OldFish_2348V12_clipfix.safetensors", 944 | "config": null 945 | }, 946 | { 947 | "title": "StableDiffusion\\OldFish_v10.safetensors", 948 | "model_name": "StableDiffusion_OldFish_v10", 949 | "hash": null, 950 | "sha256": null, 951 | "filename": "D:\\Projects\\AI\\0_Models\\2_Graphic\\StableDiffusion\\OldFish_v10.safetensors", 952 | "config": null 953 | }, 954 | { 955 | "title": "StableDiffusion\\papercut_v1.ckpt", 956 | "model_name": "StableDiffusion_papercut_v1", 957 | "hash": null, 958 | "sha256": null, 959 | "filename": "D:\\Projects\\AI\\0_Models\\2_Graphic\\StableDiffusion\\papercut_v1.ckpt", 960 | "config": null 961 | }, 962 | { 963 | "title": "StableDiffusion\\Pastel-Mix.safetensors", 964 | "model_name": "StableDiffusion_Pastel-Mix", 965 | "hash": null, 966 | "sha256": null, 967 | "filename": "D:\\Projects\\AI\\0_Models\\2_Graphic\\StableDiffusion\\Pastel-Mix.safetensors", 968 | "config": null 969 | }, 970 | { 971 | "title": "StableDiffusion\\PerfectWorld.safetensors", 972 | "model_name": "StableDiffusion_PerfectWorld", 973 | "hash": null, 974 | "sha256": null, 975 | "filename": "D:\\Projects\\AI\\0_Models\\2_Graphic\\StableDiffusion\\PerfectWorld.safetensors", 976 | "config": null 977 | }, 978 | { 979 | "title": "StableDiffusion\\PerfectWorldV2.safetensors", 980 | "model_name": "StableDiffusion_PerfectWorldV2", 981 | "hash": null, 982 | "sha256": null, 983 | "filename": "D:\\Projects\\AI\\0_Models\\2_Graphic\\StableDiffusion\\PerfectWorldV2.safetensors", 984 | "config": null 985 | }, 986 | { 987 | "title": "StableDiffusion\\pixelArtSpriteDiffusion_v1.ckpt", 988 | "model_name": "StableDiffusion_pixelArtSpriteDiffusion_v1", 989 | "hash": null, 990 | "sha256": null, 991 | "filename": "D:\\Projects\\AI\\0_Models\\2_Graphic\\StableDiffusion\\pixelArtSpriteDiffusion_v1.ckpt", 992 | "config": null 993 | }, 994 | { 995 | "title": "StableDiffusion\\pyros-bj-v1-0.ckpt", 996 | "model_name": "StableDiffusion_pyros-bj-v1-0", 997 | "hash": null, 998 | "sha256": null, 999 | "filename": "D:\\Projects\\AI\\0_Models\\2_Graphic\\StableDiffusion\\pyros-bj-v1-0.ckpt", 1000 | "config": null 1001 | }, 1002 | { 1003 | "title": "StableDiffusion\\redshift-diffusion-v1.ckpt", 1004 | "model_name": "StableDiffusion_redshift-diffusion-v1", 1005 | "hash": null, 1006 | "sha256": null, 1007 | "filename": "D:\\Projects\\AI\\0_Models\\2_Graphic\\StableDiffusion\\redshift-diffusion-v1.ckpt", 1008 | "config": null 1009 | }, 1010 | { 1011 | "title": "StableDiffusion\\RevAnimatedv11.safetensors", 1012 | "model_name": "StableDiffusion_RevAnimatedv11", 1013 | "hash": null, 1014 | "sha256": null, 1015 | "filename": "D:\\Projects\\AI\\0_Models\\2_Graphic\\StableDiffusion\\RevAnimatedv11.safetensors", 1016 | "config": null 1017 | }, 1018 | { 1019 | "title": "StableDiffusion\\samdoesartsHomage_v1.ckpt", 1020 | "model_name": "StableDiffusion_samdoesartsHomage_v1", 1021 | "hash": null, 1022 | "sha256": null, 1023 | "filename": "D:\\Projects\\AI\\0_Models\\2_Graphic\\StableDiffusion\\samdoesartsHomage_v1.ckpt", 1024 | "config": null 1025 | }, 1026 | { 1027 | "title": "StableDiffusion\\samdoesartsUltmerge_v1.ckpt", 1028 | "model_name": "StableDiffusion_samdoesartsUltmerge_v1", 1029 | "hash": null, 1030 | "sha256": null, 1031 | "filename": "D:\\Projects\\AI\\0_Models\\2_Graphic\\StableDiffusion\\samdoesartsUltmerge_v1.ckpt", 1032 | "config": null 1033 | }, 1034 | { 1035 | "title": "StableDiffusion\\samdoesartsV2_v2.ckpt", 1036 | "model_name": "StableDiffusion_samdoesartsV2_v2", 1037 | "hash": null, 1038 | "sha256": null, 1039 | "filename": "D:\\Projects\\AI\\0_Models\\2_Graphic\\StableDiffusion\\samdoesartsV2_v2.ckpt", 1040 | "config": null 1041 | }, 1042 | { 1043 | "title": "StableDiffusion\\sd-v1-4.ckpt", 1044 | "model_name": "StableDiffusion_sd-v1-4", 1045 | "hash": null, 1046 | "sha256": null, 1047 | "filename": "D:\\Projects\\AI\\0_Models\\2_Graphic\\StableDiffusion\\sd-v1-4.ckpt", 1048 | "config": null 1049 | }, 1050 | { 1051 | "title": "StableDiffusion\\sd-v1-5-inpainting.ckpt", 1052 | "model_name": "StableDiffusion_sd-v1-5-inpainting", 1053 | "hash": null, 1054 | "sha256": null, 1055 | "filename": "D:\\Projects\\AI\\0_Models\\2_Graphic\\StableDiffusion\\sd-v1-5-inpainting.ckpt", 1056 | "config": null 1057 | }, 1058 | { 1059 | "title": "StableDiffusion\\seraphm_v1.ckpt", 1060 | "model_name": "StableDiffusion_seraphm_v1", 1061 | "hash": null, 1062 | "sha256": null, 1063 | "filename": "D:\\Projects\\AI\\0_Models\\2_Graphic\\StableDiffusion\\seraphm_v1.ckpt", 1064 | "config": null 1065 | }, 1066 | { 1067 | "title": "StableDiffusion\\SF_EB_1.1_ema_vae.ckpt", 1068 | "model_name": "StableDiffusion_SF_EB_1.1_ema_vae", 1069 | "hash": null, 1070 | "sha256": null, 1071 | "filename": "D:\\Projects\\AI\\0_Models\\2_Graphic\\StableDiffusion\\SF_EB_1.1_ema_vae.ckpt", 1072 | "config": null 1073 | }, 1074 | { 1075 | "title": "StableDiffusion\\superheroDiffusion_v1.ckpt", 1076 | "model_name": "StableDiffusion_superheroDiffusion_v1", 1077 | "hash": null, 1078 | "sha256": null, 1079 | "filename": "D:\\Projects\\AI\\0_Models\\2_Graphic\\StableDiffusion\\superheroDiffusion_v1.ckpt", 1080 | "config": null 1081 | }, 1082 | { 1083 | "title": "StableDiffusion\\synthwave_v1.ckpt", 1084 | "model_name": "StableDiffusion_synthwave_v1", 1085 | "hash": null, 1086 | "sha256": null, 1087 | "filename": "D:\\Projects\\AI\\0_Models\\2_Graphic\\StableDiffusion\\synthwave_v1.ckpt", 1088 | "config": null 1089 | }, 1090 | { 1091 | "title": "StableDiffusion\\synthwavePunk_v2.ckpt", 1092 | "model_name": "StableDiffusion_synthwavePunk_v2", 1093 | "hash": null, 1094 | "sha256": null, 1095 | "filename": "D:\\Projects\\AI\\0_Models\\2_Graphic\\StableDiffusion\\synthwavePunk_v2.ckpt", 1096 | "config": null 1097 | }, 1098 | { 1099 | "title": "StableDiffusion\\TestGJY.ckpt", 1100 | "model_name": "StableDiffusion_TestGJY", 1101 | "hash": null, 1102 | "sha256": null, 1103 | "filename": "D:\\Projects\\AI\\0_Models\\2_Graphic\\StableDiffusion\\TestGJY.ckpt", 1104 | "config": null 1105 | }, 1106 | { 1107 | "title": "StableDiffusion\\v1-5-pruned-emaonly.ckpt", 1108 | "model_name": "StableDiffusion_v1-5-pruned-emaonly", 1109 | "hash": null, 1110 | "sha256": null, 1111 | "filename": "D:\\Projects\\AI\\0_Models\\2_Graphic\\StableDiffusion\\v1-5-pruned-emaonly.ckpt", 1112 | "config": null 1113 | }, 1114 | { 1115 | "title": "StableDiffusion\\v1-5-pruned.ckpt", 1116 | "model_name": "StableDiffusion_v1-5-pruned", 1117 | "hash": null, 1118 | "sha256": null, 1119 | "filename": "D:\\Projects\\AI\\0_Models\\2_Graphic\\StableDiffusion\\v1-5-pruned.ckpt", 1120 | "config": null 1121 | }, 1122 | { 1123 | "title": "StableDiffusion\\wd-v1-3-float16.ckpt", 1124 | "model_name": "StableDiffusion_wd-v1-3-float16", 1125 | "hash": null, 1126 | "sha256": null, 1127 | "filename": "D:\\Projects\\AI\\0_Models\\2_Graphic\\StableDiffusion\\wd-v1-3-float16.ckpt", 1128 | "config": null 1129 | }, 1130 | { 1131 | "title": "StableDiffusion\\wd-v1-3-float32.ckpt", 1132 | "model_name": "StableDiffusion_wd-v1-3-float32", 1133 | "hash": null, 1134 | "sha256": null, 1135 | "filename": "D:\\Projects\\AI\\0_Models\\2_Graphic\\StableDiffusion\\wd-v1-3-float32.ckpt", 1136 | "config": null 1137 | }, 1138 | { 1139 | "title": "StableDiffusion\\YesMix.safetensors", 1140 | "model_name": "StableDiffusion_YesMix", 1141 | "hash": null, 1142 | "sha256": null, 1143 | "filename": "D:\\Projects\\AI\\0_Models\\2_Graphic\\StableDiffusion\\YesMix.safetensors", 1144 | "config": null 1145 | }, 1146 | { 1147 | "title": "StableDiffusionAux\\stable_zero123.ckpt", 1148 | "model_name": "StableDiffusionAux_stable_zero123", 1149 | "hash": null, 1150 | "sha256": null, 1151 | "filename": "D:\\Projects\\AI\\0_Models\\2_Graphic\\StableDiffusionAux\\stable_zero123.ckpt", 1152 | "config": null 1153 | }, 1154 | { 1155 | "title": "StableDiffusionAux\\svd_xt.safetensors", 1156 | "model_name": "StableDiffusionAux_svd_xt", 1157 | "hash": null, 1158 | "sha256": null, 1159 | "filename": "D:\\Projects\\AI\\0_Models\\2_Graphic\\StableDiffusionAux\\svd_xt.safetensors", 1160 | "config": null 1161 | }, 1162 | { 1163 | "title": "StableDiffusionAux\\wd-1-5-beta2-aesthetic-unclip-h-fp16.safetensors", 1164 | "model_name": "StableDiffusionAux_wd-1-5-beta2-aesthetic-unclip-h-fp16", 1165 | "hash": null, 1166 | "sha256": null, 1167 | "filename": "D:\\Projects\\AI\\0_Models\\2_Graphic\\StableDiffusionAux\\wd-1-5-beta2-aesthetic-unclip-h-fp16.safetensors", 1168 | "config": null 1169 | }, 1170 | { 1171 | "title": "StableDiffusionTurbo\\grogmixTURBO_v10.safetensors", 1172 | "model_name": "StableDiffusionTurbo_grogmixTURBO_v10", 1173 | "hash": null, 1174 | "sha256": null, 1175 | "filename": "D:\\Projects\\AI\\0_Models\\2_Graphic\\StableDiffusionTurbo\\grogmixTURBO_v10.safetensors", 1176 | "config": null 1177 | }, 1178 | { 1179 | "title": "StableDiffusionTurbo\\sd_xl_turbo_1.0_fp16.safetensors", 1180 | "model_name": "StableDiffusionTurbo_sd_xl_turbo_1.0_fp16", 1181 | "hash": null, 1182 | "sha256": null, 1183 | "filename": "D:\\Projects\\AI\\0_Models\\2_Graphic\\StableDiffusionTurbo\\sd_xl_turbo_1.0_fp16.safetensors", 1184 | "config": null 1185 | }, 1186 | { 1187 | "title": "StableDiffusionTurbo\\vxpXLTURBO_vxpXLV15.safetensors", 1188 | "model_name": "StableDiffusionTurbo_vxpXLTURBO_vxpXLV15", 1189 | "hash": null, 1190 | "sha256": null, 1191 | "filename": "D:\\Projects\\AI\\0_Models\\2_Graphic\\StableDiffusionTurbo\\vxpXLTURBO_vxpXLV15.safetensors", 1192 | "config": null 1193 | }, 1194 | { 1195 | "title": "StableDiffusionXL\\aamXLAnimeMix_v10.safetensors [d48c2391e0]", 1196 | "model_name": "StableDiffusionXL_aamXLAnimeMix_v10", 1197 | "hash": "d48c2391e0", 1198 | "sha256": "d48c2391e04f7dbc83d8538b71be8a30991f3e4e2ff1a8a757b849381f769a8b", 1199 | "filename": "D:\\Projects\\AI\\0_Models\\2_Graphic\\StableDiffusionXL\\aamXLAnimeMix_v10.safetensors", 1200 | "config": null 1201 | }, 1202 | { 1203 | "title": "StableDiffusionXL\\animagineXLV3_v30.safetensors [1449e5b0b9]", 1204 | "model_name": "StableDiffusionXL_animagineXLV3_v30", 1205 | "hash": "1449e5b0b9", 1206 | "sha256": "1449e5b0b9de87b0f414c5f29cb11ce3b3dc61fa2b320e784c9441720bf7b766", 1207 | "filename": "D:\\Projects\\AI\\0_Models\\2_Graphic\\StableDiffusionXL\\animagineXLV3_v30.safetensors", 1208 | "config": null 1209 | }, 1210 | { 1211 | "title": "StableDiffusionXL\\animeIllustDiffusion_v071.safetensors", 1212 | "model_name": "StableDiffusionXL_animeIllustDiffusion_v071", 1213 | "hash": null, 1214 | "sha256": null, 1215 | "filename": "D:\\Projects\\AI\\0_Models\\2_Graphic\\StableDiffusionXL\\animeIllustDiffusion_v071.safetensors", 1216 | "config": null 1217 | }, 1218 | { 1219 | "title": "StableDiffusionXL\\cosxlHK097EDITPix2pix_v097CosxlEDIT.safetensors", 1220 | "model_name": "StableDiffusionXL_cosxlHK097EDITPix2pix_v097CosxlEDIT", 1221 | "hash": null, 1222 | "sha256": null, 1223 | "filename": "D:\\Projects\\AI\\0_Models\\2_Graphic\\StableDiffusionXL\\cosxlHK097EDITPix2pix_v097CosxlEDIT.safetensors", 1224 | "config": null 1225 | }, 1226 | { 1227 | "title": "StableDiffusionXL\\fantasyland_v10SDXLTurbo.ckpt [c6025e7e4b]", 1228 | "model_name": "StableDiffusionXL_fantasyland_v10SDXLTurbo", 1229 | "hash": "c6025e7e4b", 1230 | "sha256": "c6025e7e4b91cecfc444aa3e9047abc9a00791bc81e6b813ed385dc201adfcd5", 1231 | "filename": "D:\\Projects\\AI\\0_Models\\2_Graphic\\StableDiffusionXL\\fantasyland_v10SDXLTurbo.ckpt", 1232 | "config": null 1233 | }, 1234 | { 1235 | "title": "StableDiffusionXL\\inkDyeingAnimeXL_v20.safetensors", 1236 | "model_name": "StableDiffusionXL_inkDyeingAnimeXL_v20", 1237 | "hash": null, 1238 | "sha256": null, 1239 | "filename": "D:\\Projects\\AI\\0_Models\\2_Graphic\\StableDiffusionXL\\inkDyeingAnimeXL_v20.safetensors", 1240 | "config": null 1241 | }, 1242 | { 1243 | "title": "StableDiffusionXL\\juggernautXL_juggernautX.safetensors [d91d35736d]", 1244 | "model_name": "StableDiffusionXL_juggernautXL_juggernautX", 1245 | "hash": "d91d35736d", 1246 | "sha256": "d91d35736d8f2be038f760a9b0009a771ecf0a417e9b38c244a84ea4cb9c0c45", 1247 | "filename": "D:\\Projects\\AI\\0_Models\\2_Graphic\\StableDiffusionXL\\juggernautXL_juggernautX.safetensors", 1248 | "config": null 1249 | }, 1250 | { 1251 | "title": "StableDiffusionXL\\ponyDiffusionV6XL_v6.safetensors", 1252 | "model_name": "StableDiffusionXL_ponyDiffusionV6XL_v6", 1253 | "hash": null, 1254 | "sha256": null, 1255 | "filename": "D:\\Projects\\AI\\0_Models\\2_Graphic\\StableDiffusionXL\\ponyDiffusionV6XL_v6.safetensors", 1256 | "config": null 1257 | }, 1258 | { 1259 | "title": "StableDiffusionXL\\protovisionXLHighFidelity3D_releaseV660Bakedvae.safetensors", 1260 | "model_name": "StableDiffusionXL_protovisionXLHighFidelity3D_releaseV660Bakedvae", 1261 | "hash": null, 1262 | "sha256": null, 1263 | "filename": "D:\\Projects\\AI\\0_Models\\2_Graphic\\StableDiffusionXL\\protovisionXLHighFidelity3D_releaseV660Bakedvae.safetensors", 1264 | "config": null 1265 | }, 1266 | { 1267 | "title": "StableDiffusionXL\\PVCStyleModelMovable_beta26.safetensors", 1268 | "model_name": "StableDiffusionXL_PVCStyleModelMovable_beta26", 1269 | "hash": null, 1270 | "sha256": null, 1271 | "filename": "D:\\Projects\\AI\\0_Models\\2_Graphic\\StableDiffusionXL\\PVCStyleModelMovable_beta26.safetensors", 1272 | "config": null 1273 | }, 1274 | { 1275 | "title": "StableDiffusionXL\\robmixCosxlEdit_cosxlEdit10.safetensors", 1276 | "model_name": "StableDiffusionXL_robmixCosxlEdit_cosxlEdit10", 1277 | "hash": null, 1278 | "sha256": null, 1279 | "filename": "D:\\Projects\\AI\\0_Models\\2_Graphic\\StableDiffusionXL\\robmixCosxlEdit_cosxlEdit10.safetensors", 1280 | "config": null 1281 | }, 1282 | { 1283 | "title": "StableDiffusionXL\\sd_xl_base_1.0_vaefix.safetensors", 1284 | "model_name": "StableDiffusionXL_sd_xl_base_1.0_vaefix", 1285 | "hash": null, 1286 | "sha256": null, 1287 | "filename": "D:\\Projects\\AI\\0_Models\\2_Graphic\\StableDiffusionXL\\sd_xl_base_1.0_vaefix.safetensors", 1288 | "config": null 1289 | }, 1290 | { 1291 | "title": "StableDiffusionXL\\sd_xl_refiner_1.0_vaefix.safetensors", 1292 | "model_name": "StableDiffusionXL_sd_xl_refiner_1.0_vaefix", 1293 | "hash": null, 1294 | "sha256": null, 1295 | "filename": "D:\\Projects\\AI\\0_Models\\2_Graphic\\StableDiffusionXL\\sd_xl_refiner_1.0_vaefix.safetensors", 1296 | "config": null 1297 | }, 1298 | { 1299 | "title": "TripoSR\\triposr.ckpt", 1300 | "model_name": "TripoSR_triposr", 1301 | "hash": null, 1302 | "sha256": null, 1303 | "filename": "D:\\Projects\\AI\\0_Models\\2_Graphic\\TripoSR\\triposr.ckpt", 1304 | "config": null 1305 | }, 1306 | { 1307 | "title": "VAE\\kl-f8-anime2.ckpt", 1308 | "model_name": "VAE_kl-f8-anime2", 1309 | "hash": null, 1310 | "sha256": null, 1311 | "filename": "D:\\Projects\\AI\\0_Models\\2_Graphic\\VAE\\kl-f8-anime2.ckpt", 1312 | "config": null 1313 | }, 1314 | { 1315 | "title": "VAE\\vae-ft-mse-840000-ema-pruned.ckpt", 1316 | "model_name": "VAE_vae-ft-mse-840000-ema-pruned", 1317 | "hash": null, 1318 | "sha256": null, 1319 | "filename": "D:\\Projects\\AI\\0_Models\\2_Graphic\\VAE\\vae-ft-mse-840000-ema-pruned.ckpt", 1320 | "config": null 1321 | } 1322 | ] --------------------------------------------------------------------------------