Imported latest IPAdapter code
This commit is contained in:
@@ -0,0 +1,4 @@
|
|||||||
|
# These are supported funding model platforms
|
||||||
|
|
||||||
|
github: cubiq
|
||||||
|
custom: ['https://www.paypal.com/paypalme/matt3o']
|
||||||
@@ -6,10 +6,11 @@ from .utils import tensor_to_size
|
|||||||
|
|
||||||
class CrossAttentionPatchImport:
|
class CrossAttentionPatchImport:
|
||||||
# forward for patching
|
# forward for patching
|
||||||
def __init__(self, ipadapter=None, number=0, weight=1.0, cond=None, uncond=None, weight_type="linear", mask=None, sigma_start=0.0, sigma_end=1.0, unfold_batch=False, embeds_scaling='V only'):
|
def __init__(self, ipadapter=None, number=0, weight=1.0, cond=None, cond_alt=None, uncond=None, weight_type="linear", mask=None, sigma_start=0.0, sigma_end=1.0, unfold_batch=False, embeds_scaling='V only'):
|
||||||
self.weights = [weight]
|
self.weights = [weight]
|
||||||
self.ipadapters = [ipadapter]
|
self.ipadapters = [ipadapter]
|
||||||
self.conds = [cond]
|
self.conds = [cond]
|
||||||
|
self.conds_alt = [cond_alt]
|
||||||
self.unconds = [uncond]
|
self.unconds = [uncond]
|
||||||
self.weight_types = [weight_type]
|
self.weight_types = [weight_type]
|
||||||
self.masks = [mask]
|
self.masks = [mask]
|
||||||
@@ -18,15 +19,16 @@ class CrossAttentionPatchImport:
|
|||||||
self.unfold_batch = [unfold_batch]
|
self.unfold_batch = [unfold_batch]
|
||||||
self.embeds_scaling = [embeds_scaling]
|
self.embeds_scaling = [embeds_scaling]
|
||||||
self.number = number
|
self.number = number
|
||||||
self.layers = 10 if '101_to_k_ip' in ipadapter.ip_layers.to_kvs else 15 # TODO: check if this is a valid condition to detect all models
|
self.layers = 11 if '101_to_k_ip' in ipadapter.ip_layers.to_kvs else 16 # TODO: check if this is a valid condition to detect all models
|
||||||
|
|
||||||
self.k_key = str(self.number*2+1) + "_to_k_ip"
|
self.k_key = str(self.number*2+1) + "_to_k_ip"
|
||||||
self.v_key = str(self.number*2+1) + "_to_v_ip"
|
self.v_key = str(self.number*2+1) + "_to_v_ip"
|
||||||
|
|
||||||
def set_new_condition(self, ipadapter=None, number=0, weight=1.0, cond=None, uncond=None, weight_type="linear", mask=None, sigma_start=0.0, sigma_end=1.0, unfold_batch=False, embeds_scaling='V only'):
|
def set_new_condition(self, ipadapter=None, number=0, weight=1.0, cond=None, cond_alt=None, uncond=None, weight_type="linear", mask=None, sigma_start=0.0, sigma_end=1.0, unfold_batch=False, embeds_scaling='V only'):
|
||||||
self.weights.append(weight)
|
self.weights.append(weight)
|
||||||
self.ipadapters.append(ipadapter)
|
self.ipadapters.append(ipadapter)
|
||||||
self.conds.append(cond)
|
self.conds.append(cond)
|
||||||
|
self.conds_alt.append(cond_alt)
|
||||||
self.unconds.append(uncond)
|
self.unconds.append(uncond)
|
||||||
self.weight_types.append(weight_type)
|
self.weight_types.append(weight_type)
|
||||||
self.masks.append(mask)
|
self.masks.append(mask)
|
||||||
@@ -52,35 +54,8 @@ class CrossAttentionPatchImport:
|
|||||||
out = optimized_attention(q, k, v, extra_options["n_heads"])
|
out = optimized_attention(q, k, v, extra_options["n_heads"])
|
||||||
_, _, oh, ow = extra_options["original_shape"]
|
_, _, oh, ow = extra_options["original_shape"]
|
||||||
|
|
||||||
for weight, cond, uncond, ipadapter, mask, weight_type, sigma_start, sigma_end, unfold_batch, embeds_scaling in zip(self.weights, self.conds, self.unconds, self.ipadapters, self.masks, self.weight_types, self.sigma_starts, self.sigma_ends, self.unfold_batch, self.embeds_scaling):
|
for weight, cond, cond_alt, uncond, ipadapter, mask, weight_type, sigma_start, sigma_end, unfold_batch, embeds_scaling in zip(self.weights, self.conds, self.conds_alt, self.unconds, self.ipadapters, self.masks, self.weight_types, self.sigma_starts, self.sigma_ends, self.unfold_batch, self.embeds_scaling):
|
||||||
if sigma <= sigma_start and sigma >= sigma_end:
|
if sigma <= sigma_start and sigma >= sigma_end:
|
||||||
if unfold_batch and cond.shape[0] > 1:
|
|
||||||
# Check AnimateDiff context window
|
|
||||||
if ad_params is not None and ad_params["sub_idxs"] is not None:
|
|
||||||
# if image length matches or exceeds full_length get sub_idx images
|
|
||||||
if cond.shape[0] >= ad_params["full_length"]:
|
|
||||||
cond = torch.Tensor(cond[ad_params["sub_idxs"]])
|
|
||||||
uncond = torch.Tensor(uncond[ad_params["sub_idxs"]])
|
|
||||||
# otherwise get sub_idxs images
|
|
||||||
else:
|
|
||||||
cond = tensor_to_size(cond, ad_params["full_length"])
|
|
||||||
uncond = tensor_to_size(uncond, ad_params["full_length"])
|
|
||||||
cond = cond[ad_params["sub_idxs"]]
|
|
||||||
uncond = uncond[ad_params["sub_idxs"]]
|
|
||||||
|
|
||||||
cond = tensor_to_size(cond, batch_prompt)
|
|
||||||
uncond = tensor_to_size(uncond, batch_prompt)
|
|
||||||
|
|
||||||
k_cond = ipadapter.ip_layers.to_kvs[self.k_key](cond)
|
|
||||||
k_uncond = ipadapter.ip_layers.to_kvs[self.k_key](uncond)
|
|
||||||
v_cond = ipadapter.ip_layers.to_kvs[self.v_key](cond)
|
|
||||||
v_uncond = ipadapter.ip_layers.to_kvs[self.v_key](uncond)
|
|
||||||
else:
|
|
||||||
k_cond = ipadapter.ip_layers.to_kvs[self.k_key](cond).repeat(batch_prompt, 1, 1)
|
|
||||||
k_uncond = ipadapter.ip_layers.to_kvs[self.k_key](uncond).repeat(batch_prompt, 1, 1)
|
|
||||||
v_cond = ipadapter.ip_layers.to_kvs[self.v_key](cond).repeat(batch_prompt, 1, 1)
|
|
||||||
v_uncond = ipadapter.ip_layers.to_kvs[self.v_key](uncond).repeat(batch_prompt, 1, 1)
|
|
||||||
|
|
||||||
if weight_type == 'ease in':
|
if weight_type == 'ease in':
|
||||||
weight = weight * (0.05 + 0.95 * (1 - t_idx / self.layers))
|
weight = weight * (0.05 + 0.95 * (1 - t_idx / self.layers))
|
||||||
elif weight_type == 'ease out':
|
elif weight_type == 'ease out':
|
||||||
@@ -97,9 +72,68 @@ class CrossAttentionPatchImport:
|
|||||||
weight = weight * 0.2
|
weight = weight * 0.2
|
||||||
elif weight_type == 'strong middle' and (block_type == 'input' or block_type == 'output'):
|
elif weight_type == 'strong middle' and (block_type == 'input' or block_type == 'output'):
|
||||||
weight = weight * 0.2
|
weight = weight * 0.2
|
||||||
elif weight_type.startswith('style transfer'):
|
elif isinstance(weight, dict):
|
||||||
if t_idx != 6:
|
if t_idx not in weight:
|
||||||
weight = 0.0
|
continue
|
||||||
|
|
||||||
|
weight = weight[t_idx]
|
||||||
|
|
||||||
|
if cond_alt is not None and t_idx in cond_alt:
|
||||||
|
cond = cond_alt[t_idx]
|
||||||
|
del cond_alt
|
||||||
|
|
||||||
|
if unfold_batch:
|
||||||
|
# Check AnimateDiff context window
|
||||||
|
if ad_params is not None and ad_params["sub_idxs"] is not None:
|
||||||
|
if isinstance(weight, torch.Tensor):
|
||||||
|
weight = tensor_to_size(weight, ad_params["full_length"])
|
||||||
|
weight = torch.Tensor(weight[ad_params["sub_idxs"]])
|
||||||
|
if torch.all(weight == 0):
|
||||||
|
continue
|
||||||
|
weight = weight.repeat(len(cond_or_uncond), 1, 1) # repeat for cond and uncond
|
||||||
|
elif weight == 0:
|
||||||
|
continue
|
||||||
|
|
||||||
|
# if image length matches or exceeds full_length get sub_idx images
|
||||||
|
if cond.shape[0] >= ad_params["full_length"]:
|
||||||
|
cond = torch.Tensor(cond[ad_params["sub_idxs"]])
|
||||||
|
uncond = torch.Tensor(uncond[ad_params["sub_idxs"]])
|
||||||
|
# otherwise get sub_idxs images
|
||||||
|
else:
|
||||||
|
cond = tensor_to_size(cond, ad_params["full_length"])
|
||||||
|
uncond = tensor_to_size(uncond, ad_params["full_length"])
|
||||||
|
cond = cond[ad_params["sub_idxs"]]
|
||||||
|
uncond = uncond[ad_params["sub_idxs"]]
|
||||||
|
else:
|
||||||
|
if isinstance(weight, torch.Tensor):
|
||||||
|
weight = tensor_to_size(weight, batch_prompt)
|
||||||
|
if torch.all(weight == 0):
|
||||||
|
continue
|
||||||
|
weight = weight.repeat(len(cond_or_uncond), 1, 1) # repeat for cond and uncond
|
||||||
|
elif weight == 0:
|
||||||
|
continue
|
||||||
|
|
||||||
|
cond = tensor_to_size(cond, batch_prompt)
|
||||||
|
uncond = tensor_to_size(uncond, batch_prompt)
|
||||||
|
|
||||||
|
k_cond = ipadapter.ip_layers.to_kvs[self.k_key](cond)
|
||||||
|
k_uncond = ipadapter.ip_layers.to_kvs[self.k_key](uncond)
|
||||||
|
v_cond = ipadapter.ip_layers.to_kvs[self.v_key](cond)
|
||||||
|
v_uncond = ipadapter.ip_layers.to_kvs[self.v_key](uncond)
|
||||||
|
else:
|
||||||
|
# TODO: should we always convert the weights to a tensor?
|
||||||
|
if isinstance(weight, torch.Tensor):
|
||||||
|
weight = tensor_to_size(weight, batch_prompt)
|
||||||
|
if torch.all(weight == 0):
|
||||||
|
continue
|
||||||
|
weight = weight.repeat(len(cond_or_uncond), 1, 1) # repeat for cond and uncond
|
||||||
|
elif weight == 0:
|
||||||
|
continue
|
||||||
|
|
||||||
|
k_cond = ipadapter.ip_layers.to_kvs[self.k_key](cond).repeat(batch_prompt, 1, 1)
|
||||||
|
k_uncond = ipadapter.ip_layers.to_kvs[self.k_key](uncond).repeat(batch_prompt, 1, 1)
|
||||||
|
v_cond = ipadapter.ip_layers.to_kvs[self.v_key](cond).repeat(batch_prompt, 1, 1)
|
||||||
|
v_uncond = ipadapter.ip_layers.to_kvs[self.v_key](uncond).repeat(batch_prompt, 1, 1)
|
||||||
|
|
||||||
ip_k = torch.cat([(k_cond, k_uncond)[i] for i in cond_or_uncond], dim=0)
|
ip_k = torch.cat([(k_cond, k_uncond)[i] for i in cond_or_uncond], dim=0)
|
||||||
ip_v = torch.cat([(v_cond, v_uncond)[i] for i in cond_or_uncond], dim=0)
|
ip_v = torch.cat([(v_cond, v_uncond)[i] for i in cond_or_uncond], dim=0)
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,54 @@
|
|||||||
|
# Nodes reference
|
||||||
|
|
||||||
|
Below I'm trying to document all the nodes. It's still very incomplete, be sure to check back later.
|
||||||
|
|
||||||
|
## Loaders
|
||||||
|
|
||||||
|
### :knot: IPAdapter Unified Loader
|
||||||
|
|
||||||
|
Loads the full stack of models needed for IPAdapter to function. The returned object will contain information regarding the **ipadapter** and **clip vision models**.
|
||||||
|
|
||||||
|
Multiple unified loaders should always be daisy chained through the `ipadapter` in/out. **Failing to do so will cause all models to be loaded twice.** For **the first** unified loader the `ipadapter` input **should never be connected**.
|
||||||
|
|
||||||
|
#### Inputs
|
||||||
|
- **model**, main ComfyUI model pipeline
|
||||||
|
|
||||||
|
#### Optional Inputs
|
||||||
|
- **ipadapter**, it's important to note that this is optional and used exclusively to daisy chain unified loaders. **The `ipadapter` input is never connected in the first `IPAdapter Unified Loader` of the chain.**
|
||||||
|
|
||||||
|
#### Outputs
|
||||||
|
- **model**, the model pipeline is used exclusively for configuration, the model comes out of this node untouched and it can be considered a reroute. Note that this is different from the Unified Loader FaceID that actually alters the model with a LoRA.
|
||||||
|
- **ipadapter**, connect this to any ipadater node. Each node will automatically detect if the `ipadapter` object contains the full stack of models or just one (like in the case [IPAdapter Model Loader](#ipadapter-model-loader)).
|
||||||
|
|
||||||
|
### :knot: IPAdapter Model Loader
|
||||||
|
|
||||||
|
Loads the IPAdapter model only. The returned object will be the IPAdapter model contrary to the [Unified loader](#ipadapter-unified-loader) that contains the full stack of models.
|
||||||
|
|
||||||
|
#### Configuration parameters
|
||||||
|
- **ipadapter_file**, the main IPAdapter model. It must be located into `ComfyUI/models/ipadapter` or in any path specified in the `extra_model_paths.yaml` configuration file.
|
||||||
|
|
||||||
|
#### Outputs
|
||||||
|
- **IPADAPTER**, contains the loaded model only. Note that `IPADAPTER` will have a different structure when loaded by the [Unified Loader](#ipadapter-unified-loader).
|
||||||
|
|
||||||
|
## Main IPAdapter Apply Nodes
|
||||||
|
|
||||||
|
### :knot: IPAdapter Advanced
|
||||||
|
|
||||||
|
This node contains all the options to fine tune the IPAdapter models. It is a drop in replacement for the old `IPAdapter Apply` that is no longer available. If you have an old workflow, delete the existing `IPadapter Apply` node, add `IPAdapter Advanced` and connect all the pipes as before.
|
||||||
|
|
||||||
|
#### Inputs
|
||||||
|
- **model**, main model pipeline.
|
||||||
|
- **ipadapter**, the IPAdapter model. It can be connected to the [IPAdapter Model Loader](#ipadapter-model-loader) or any of the Unified Loaders. If a Unified loader is used anywhere in the workflow and you don't need a different model, it's always adviced to reuse the previous `ipadapter` pipeline.
|
||||||
|
- **image**, the reference image used to generate the positive conditioning. It should be a square image, other aspect ratios are automatically cropped in the center.
|
||||||
|
|
||||||
|
#### Optional inputs
|
||||||
|
- **image_negative**, image used to generate the negative conditioning. This is optional and normally handled by the code. It is possible to send noise or actually any image to instruct the model about what we don't want to see in the composition.
|
||||||
|
- **attn_mask**, a mask that will be applied during the image generation. **The mask should have the same size or at least the same aspect ratio of the latent**. The mask will define the area of influence of the IPAdapter models on the final image. Black zones won't be affected, white zones will get maximum influence. It can be a grayscale mask.
|
||||||
|
- **clip_vision**, this is optional if using any of the Unified loaders. If using the [IPAdapter Model Loader](#knot-ipadapter-model-loader) you also have to provide the clip vision model with a `Load CLIP Vision` node.
|
||||||
|
|
||||||
|
#### Configuration parameters
|
||||||
|
- **weight**, weight of the IPAdapter model. For `linear` `weight_type` (the default), a good starting point is 0.8. If you use other weight types you can experiment with higher values.
|
||||||
|
- **weight_type**, this is how the IPAdapter is applied to the UNet block. For example `ease-in` means that the input blocks have higher weight than the output ones. `week input` means that the whole input block has lower weight. `style transfer (SDXL)` only works with SDXL and it's a very powerful tool to tranfer only the style of an image but not its content. This parameter hugely impacts how the composition reacts to the text prompting.
|
||||||
|
- **combine_embeds**, when sending more than one reference image the embeddings can be sent one after the other (`concat`) or combined in various ways. For low spec GPUs it is adviced to `average` the embeds if you send multiple images. `subtract` subtracts the embeddings of the second image to the first; in case of 3 or more images they are averaged and subtracted to the first.
|
||||||
|
- **start_at/end_at**, this is the timestepping. Defines at what percentage point of the generation to start applying the IPAdapter model. The initial steps are the most important so if you start later (eg: `start_at=0.3`) the generated image will have a very light conditioning.
|
||||||
|
- **embeds_scaling**, the way the IPAdapter models are applied to the K,V. This parameter has a small impact on how the model reacts to text prompting. `K+mean(V) w/ C penalty` grants good quality at high weights (>1.0) without burning the image.
|
||||||
@@ -1,45 +1,49 @@
|
|||||||
# ComfyUI IPAdapter plus
|
# ComfyUI IPAdapter plus
|
||||||
[ComfyUI](https://github.com/comfyanonymous/ComfyUI) reference implementation for [IPAdapter](https://github.com/tencent-ailab/IP-Adapter/) models.
|
[ComfyUI](https://github.com/comfyanonymous/ComfyUI) reference implementation for [IPAdapter](https://github.com/tencent-ailab/IP-Adapter/) models.
|
||||||
|
|
||||||
IPAdapter implementation that follows the ComfyUI way of doing things. The code is memory efficient, fast, and shouldn't break with Comfy updates.
|
The IPAdapter are very powerful models for image-to-image conditioning. The subject or even just the style of the reference image(s) can be easily transferred to a generation. Think of it as a 1-image lora.
|
||||||
|
|
||||||
# Open source for you but not free for me...
|
# Sponsorship
|
||||||
|
|
||||||
I started working on IPAdapter because I needed it for my work. As the project evolved I'm inevitably receiving feature requests, bug reports and support requests.
|
<div align="center">
|
||||||
|
|
||||||
I'm an open source advocate and I'm happy to share all my code for free but maintaining the IPAdapter, the [Essentials](https://github.com/cubiq/ComfyUI_essentials), [InstantID](https://github.com/cubiq/ComfyUI_InstantID) and [Face Analysis](https://github.com/cubiq/ComfyUI_FaceAnalysis) takes time.
|
**[:heart: Github Sponsor](https://github.com/sponsors/cubiq) | [:coin: Paypal](https://paypal.me/matt3o)**
|
||||||
|
|
||||||
**I'm not expecting donations but if you are making a profit from my projects it is only fair that you give something back.** I'm talking especially to companies here, I know the struggles of being a freelancer.
|
</div>
|
||||||
|
|
||||||
Please contact me if you are interested in a sponsorship at _matt3o@gmail_ or consider a contribution via [PayPal](https://paypal.me/matt3o) (Matteo "matt3o" Spinelli, Firenze, IT). That will help maintaining the code, adding new features and working on better documentation.
|
If you like my work and wish to see updates and new features please consider sponsoring my projects.
|
||||||
|
|
||||||
And in that regard I really need to thank [Nathan Shipley](https://www.nathanshipley.com/) for his generous donation. Go check his website, he's terribly talented.
|
- [ComfyUI IPAdapter Plus](https://github.com/cubiq/ComfyUI_IPAdapter_plus)
|
||||||
|
- [ComfyUI InstantID (Native)](https://github.com/cubiq/ComfyUI_InstantID)
|
||||||
|
- [ComfyUI Essentials](https://github.com/cubiq/ComfyUI_essentials)
|
||||||
|
- [ComfyUI FaceAnalysis](https://github.com/cubiq/ComfyUI_FaceAnalysis)
|
||||||
|
- [Comfy Dungeon](https://github.com/cubiq/Comfy_Dungeon)
|
||||||
|
|
||||||
## :warning: IPAdapter V2: complete Code rewrite warning
|
Not to mention the documentation and videos tutorials. Check my **ComfyUI Advanced Understanding** videos on YouTube for example, [part 1](https://www.youtube.com/watch?v=_C7kR2TFIX0) and [part 2](https://www.youtube.com/watch?v=ijqXnW_9gzc)
|
||||||
|
|
||||||
A code cleanup was long overdue and with the occasion I also added a few new important features. The code should be faster and should take less resources but with such an important code rewrite it's inevitable to have introduced some new bugs.
|
The only way to keep the code open and free is by sponsoring its development. The more sponsorships the more time I can dedicate to my open source projects.
|
||||||
|
|
||||||
**At the moment I'm releasing this completely undocumented!** I will post better documentation and video tutorials in the coming days. In the meantime you can check the `example` directory for most of the old and new features.
|
Please consider a [Github Sponsorship](https://github.com/sponsors/cubiq) or [PayPal donation](https://paypal.me/matt3o) (Matteo "matt3o" Spinelli). For sponsorships of $50+, let me know if you'd like to be mentioned in this readme file, you can find me on [Discord](https://latent.vision/discord) or _matt3o :snail: gmail.com_.
|
||||||
|
|
||||||
## Important updates
|
## Important updates
|
||||||
|
|
||||||
|
**2024/04/12**: Added scheduled weights. Useful for animations.
|
||||||
|
|
||||||
|
**2024/04/09**: Added experimental Style/Composition transfer for SD1.5. The results are often not as good as SDXL. Optimal weight seems to be from 0.8 to 2.0. The **Style+Composition node doesn't work for SD1.5** at the moment, you can only alter either the Style or the Composition, I need more time for testing. Old workflows will still work **but you may need to refresh the page and re-select the weight type!**
|
||||||
|
|
||||||
|
**2024/04/04**: Added Style & Composition node. It's now possible to apply both Style and Composition from the same node
|
||||||
|
|
||||||
|
**2024/04/01**: Added Composition only transfer weight type for SDXL
|
||||||
|
|
||||||
|
**2024/03/27**: Added Style transfer weight type for SDXL
|
||||||
|
|
||||||
**2024/03/23**: Complete code rewrite!. **This is a breaking update!** Your previous workflows won't work and you'll need to recreate them. You've been warned! After the update, refresh your browser, delete the old IPAdapter nodes and create the new ones.
|
**2024/03/23**: Complete code rewrite!. **This is a breaking update!** Your previous workflows won't work and you'll need to recreate them. You've been warned! After the update, refresh your browser, delete the old IPAdapter nodes and create the new ones.
|
||||||
|
|
||||||
**2024/02/02**: Added experimental [tiled IPAdapter](#tiled-ipadapter). It lets you easily handle reference images that are not square. Can be useful for upscaling.
|
*(I removed all previous updates because they were about the previous version of the extension)*
|
||||||
|
|
||||||
**2024/01/19**: Support for FaceID Portrait models.
|
## Example workflows
|
||||||
|
|
||||||
**2024/01/16**: Notably increased quality of FaceID Plus/v2 models. Check the [comparison](https://github.com/cubiq/ComfyUI_IPAdapter_plus/issues/195) of all face models.
|
The [examples directory](./examples/) has many workflows that cover all IPAdapter functionalities.
|
||||||
|
|
||||||
*(previous updates removed for better readability)*
|
|
||||||
|
|
||||||
## What is it?
|
|
||||||
|
|
||||||
The IPAdapter are very powerful models for image-to-image conditioning. Given one or more reference images you can do variations augmented by text prompt, controlnets and masks. Think of it as a 1-image lora.
|
|
||||||
|
|
||||||
## Example workflow
|
|
||||||
|
|
||||||
The [example directory](./examples/) has many workflows that cover all IPAdapter functionalities.
|
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
@@ -53,74 +57,110 @@ The [example directory](./examples/) has many workflows that cover all IPAdapter
|
|||||||
|
|
||||||
The following videos are about the previous version of IPAdapter, but they still contain valuable information.
|
The following videos are about the previous version of IPAdapter, but they still contain valuable information.
|
||||||
|
|
||||||
**:nerd_face: [Basic usage video](https://youtu.be/7m9ZZFU3HWo)**
|
**:nerd_face: [Basic usage video](https://youtu.be/7m9ZZFU3HWo)**, **:rocket: [Advanced features video](https://www.youtube.com/watch?v=mJQ62ly7jrg)**, **:japanese_goblin: [Attention Masking video](https://www.youtube.com/watch?v=vqG1VXKteQg)**, **:movie_camera: [Animation Features video](https://www.youtube.com/watch?v=ddYbhv3WgWw)**
|
||||||
|
|
||||||
**:rocket: [Advanced features video](https://www.youtube.com/watch?v=mJQ62ly7jrg)**
|
|
||||||
|
|
||||||
**:japanese_goblin: [Attention Masking video](https://www.youtube.com/watch?v=vqG1VXKteQg)**
|
|
||||||
|
|
||||||
**:movie_camera: [Animation Features video](https://www.youtube.com/watch?v=ddYbhv3WgWw)**
|
|
||||||
|
|
||||||
## Installation
|
## Installation
|
||||||
|
|
||||||
Download or git clone this repository inside `ComfyUI/custom_nodes/` directory or use the Manager. Beware that the automatic update of the manager sometimes doesn't work and you may need to upgrade manually.
|
Download or git clone this repository inside `ComfyUI/custom_nodes/` directory or use the Manager. IPAdapter always requires the latest version of ComfyUI. If something doesn't work be sure to upgrade. Beware that the automatic update of the manager sometimes doesn't work and you may need to upgrade manually.
|
||||||
|
|
||||||
IPAdapter always requires the latest version of ComfyUI. If something doesn't work be sure to upgrade!
|
There's now a *Unified Model Loader*, for it to work you need to name the files exactly as described below. The legacy loaders work with any file name but you have to select them manually. The models can be placed into sub-directories.
|
||||||
|
|
||||||
There's now an *Unified Model Loader*, for it to work you need to name the files exactly how it is described below.
|
Remember you can also use any custom location setting an `ipadapter` entry in the `extra_model_paths.yaml` file.
|
||||||
|
|
||||||
The pre-trained models are available on [huggingface](https://huggingface.co/h94/IP-Adapter), download and place them in the `ComfyUI/models/ipadapter` directory (create it if not present). You can also use any custom location setting an `ipadapter` entry in the `extra_model_paths.yaml` file.
|
- `/ComfyUI/models/clip_vision`
|
||||||
|
- [CLIP-ViT-H-14-laion2B-s32B-b79K.safetensors](https://huggingface.co/h94/IP-Adapter/resolve/main/models/image_encoder/model.safetensors), download and rename
|
||||||
|
- [CLIP-ViT-bigG-14-laion2B-39B-b160k.safetensors](https://huggingface.co/h94/IP-Adapter/resolve/main/sdxl_models/image_encoder/model.safetensors), download and rename
|
||||||
|
- `/ComfyUI/models/ipadapter`, create it if not present
|
||||||
|
- [ip-adapter_sd15.safetensors](https://huggingface.co/h94/IP-Adapter/resolve/main/models/ip-adapter_sd15.safetensors), Basic model, average strength
|
||||||
|
- [ip-adapter_sd15_light_v11.bin](https://huggingface.co/h94/IP-Adapter/resolve/main/models/ip-adapter_sd15_light_v11.bin), Light impact model
|
||||||
|
- [ip-adapter-plus_sd15.safetensors](https://huggingface.co/h94/IP-Adapter/resolve/main/models/ip-adapter-plus_sd15.safetensors), Plus model, very strong
|
||||||
|
- [ip-adapter-plus-face_sd15.safetensors](https://huggingface.co/h94/IP-Adapter/resolve/main/models/ip-adapter-plus-face_sd15.safetensors), Face model, portraits
|
||||||
|
- [ip-adapter-full-face_sd15.safetensors](https://huggingface.co/h94/IP-Adapter/resolve/main/models/ip-adapter-full-face_sd15.safetensors), Stronger face model, not necessarily better
|
||||||
|
- [ip-adapter_sd15_vit-G.safetensors](https://huggingface.co/h94/IP-Adapter/resolve/main/models/ip-adapter_sd15_vit-G.safetensors), Base model, **requires bigG clip vision encoder**
|
||||||
|
- [ip-adapter_sdxl_vit-h.safetensors](https://huggingface.co/h94/IP-Adapter/resolve/main/sdxl_models/ip-adapter_sdxl_vit-h.safetensors), SDXL model
|
||||||
|
- [ip-adapter-plus_sdxl_vit-h.safetensors](https://huggingface.co/h94/IP-Adapter/resolve/main/sdxl_models/ip-adapter-plus_sdxl_vit-h.safetensors), SDXL plus model
|
||||||
|
- [ip-adapter-plus-face_sdxl_vit-h.safetensors](https://huggingface.co/h94/IP-Adapter/resolve/main/sdxl_models/ip-adapter-plus-face_sdxl_vit-h.safetensors), SDXL face model
|
||||||
|
- [ip-adapter_sdxl.safetensors](https://huggingface.co/h94/IP-Adapter/resolve/main/sdxl_models/ip-adapter_sdxl.safetensors), vit-G SDXL model, **requires bigG clip vision encoder**
|
||||||
|
- **Deprecated** [ip-adapter_sd15_light.safetensors](https://huggingface.co/h94/IP-Adapter/resolve/main/models/ip-adapter_sd15_light.safetensors), v1.0 Light impact model
|
||||||
|
|
||||||
IPAdapter also needs the image encoders. You need the [CLIP-ViT-H-14-laion2B-s32B-b79K.safetensors](https://huggingface.co/h94/IP-Adapter/resolve/main/models/image_encoder/model.safetensors) and [CLIP-ViT-bigG-14-laion2B-39B-b160k.safetensors](https://huggingface.co/h94/IP-Adapter/resolve/main/sdxl_models/image_encoder/model.safetensors) image encoders, you may already have them. If you don't, download them but **be careful because the file name is the same for both!** Rename them and place them in the `ComfyUI/models/clip_vision/` directory.
|
**FaceID** models require `insightface`, you need to install it in your ComfyUI environment. Check [this issue](https://github.com/cubiq/ComfyUI_IPAdapter_plus/issues/162) for help. Remember that most FaceID models also need a LoRA.
|
||||||
|
|
||||||
The following table shows the combination of Checkpoint and Image encoder to use for each IPAdapter Model. Any Tensor size mismatch you may get it is likely caused by a wrong combination.
|
For the Unified Loader to work the files need to be named exactly as shown in the table below.
|
||||||
|
|
||||||
| SD v. | IPadapter | Img encoder | Notes |
|
- `/ComfyUI/models/ipadapter`
|
||||||
|---|---|---|---|
|
- [ip-adapter-faceid_sd15.bin](https://huggingface.co/h94/IP-Adapter-FaceID/resolve/main/ip-adapter-faceid_sd15.bin), base FaceID model
|
||||||
| v1.5 | [ip-adapter_sd15](https://huggingface.co/h94/IP-Adapter/resolve/main/models/ip-adapter_sd15.safetensors) | ViT-H | Basic model, average strength |
|
- [ip-adapter-faceid-plusv2_sd15.bin](https://huggingface.co/h94/IP-Adapter-FaceID/resolve/main/ip-adapter-faceid-plusv2_sd15.bin), FaceID plus v2
|
||||||
| v1.5 | [ip-adapter_sd15_light](https://huggingface.co/h94/IP-Adapter/resolve/main/models/ip-adapter_sd15_light.safetensors) | ViT-H | Light model, very light impact |
|
- [ip-adapter-faceid-portrait-v11_sd15.bin](https://huggingface.co/h94/IP-Adapter-FaceID/resolve/main/ip-adapter-faceid-portrait-v11_sd15.bin), text prompt style transfer for portraits
|
||||||
| v1.5 | [ip-adapter_sd15_light_v11](https://huggingface.co/h94/IP-Adapter/resolve/main/models/ip-adapter_sd15_light_v11.bin) | ViT-H | Updated light model |
|
- [ip-adapter-faceid_sdxl.bin](https://huggingface.co/h94/IP-Adapter-FaceID/resolve/main/ip-adapter-faceid_sdxl.bin), SDXL base FaceID
|
||||||
| v1.5 | [ip-adapter-plus_sd15](https://huggingface.co/h94/IP-Adapter/resolve/main/models/ip-adapter-plus_sd15.safetensors) | ViT-H | Plus model, very strong |
|
- [ip-adapter-faceid-plusv2_sdxl.bin](https://huggingface.co/h94/IP-Adapter-FaceID/resolve/main/ip-adapter-faceid-plusv2_sdxl.bin), SDXL plus v2
|
||||||
| v1.5 | [ip-adapter-plus-face_sd15](https://huggingface.co/h94/IP-Adapter/resolve/main/models/ip-adapter-plus-face_sd15.safetensors) | ViT-H | Face model, use only for faces |
|
- [ip-adapter-faceid-portrait_sdxl.bin](https://huggingface.co/h94/IP-Adapter-FaceID/resolve/main/ip-adapter-faceid-portrait_sdxl.bin), SDXL text prompt style transfer
|
||||||
| v1.5 | [ip-adapter-full-face_sd15](https://huggingface.co/h94/IP-Adapter/resolve/main/models/ip-adapter-full-face_sd15.safetensors) | ViT-H | Stronger face model, not necessarily better |
|
- **Deprecated** [ip-adapter-faceid-plus_sd15.bin](https://huggingface.co/h94/IP-Adapter-FaceID/resolve/main/ip-adapter-faceid-plus_sd15.bin), FaceID plus v1
|
||||||
| v1.5 | [ip-adapter_sd15_vit-G](https://huggingface.co/h94/IP-Adapter/resolve/main/models/ip-adapter_sd15_vit-G.safetensors) | ViT-bigG | Base model trained with a bigG encoder |
|
- **Deprecated** [ip-adapter-faceid-portrait_sd15.bin](https://huggingface.co/h94/IP-Adapter-FaceID/resolve/main/ip-adapter-faceid-portrait_sd15.bin), v1 of the portrait model
|
||||||
| SDXL | [ip-adapter_sdxl](https://huggingface.co/h94/IP-Adapter/resolve/main/sdxl_models/ip-adapter_sdxl.safetensors) | ViT-bigG | Base SDXL model, mostly deprecated |
|
|
||||||
| SDXL | [ip-adapter_sdxl_vit-h](https://huggingface.co/h94/IP-Adapter/resolve/main/sdxl_models/ip-adapter_sdxl_vit-h.safetensors) | ViT-H | New base SDXL model |
|
|
||||||
| SDXL | [ip-adapter-plus_sdxl_vit-h](https://huggingface.co/h94/IP-Adapter/resolve/main/sdxl_models/ip-adapter-plus_sdxl_vit-h.safetensors) | ViT-H | SDXL plus model, stronger |
|
|
||||||
| SDXL | [ip-adapter-plus-face_sdxl_vit-h](https://huggingface.co/h94/IP-Adapter/resolve/main/sdxl_models/ip-adapter-plus-face_sdxl_vit-h.safetensors) | ViT-H | SDXL face model |
|
|
||||||
|
|
||||||
**FaceID** requires `insightface`, you need to install them in your ComfyUI environment. Check [this issue](https://github.com/cubiq/ComfyUI_IPAdapter_plus/issues/162) for help.
|
Most FaceID models require a LoRA. If you use the `IPAdapter Unified Loader FaceID` it will be loaded automatically if you follow the naming convention. Otherwise you have to load them manually, be careful each FaceID model has to be paired with its own specific LoRA.
|
||||||
|
|
||||||
When the dependencies are satisfied you need:
|
- `/ComfyUI/models/loras`
|
||||||
|
- [ip-adapter-faceid_sd15_lora.safetensors](https://huggingface.co/h94/IP-Adapter-FaceID/resolve/main/ip-adapter-faceid_sd15_lora.safetensors)
|
||||||
|
- [ip-adapter-faceid-plusv2_sd15_lora.safetensors](https://huggingface.co/h94/IP-Adapter-FaceID/resolve/main/ip-adapter-faceid-plusv2_sd15_lora.safetensors)
|
||||||
|
- [ip-adapter-faceid_sdxl_lora.safetensors](https://huggingface.co/h94/IP-Adapter-FaceID/resolve/main/ip-adapter-faceid_sdxl_lora.safetensors), SDXL FaceID LoRA
|
||||||
|
- [ip-adapter-faceid-plusv2_sdxl_lora.safetensors](https://huggingface.co/h94/IP-Adapter-FaceID/resolve/main/ip-adapter-faceid-plusv2_sdxl_lora.safetensors), SDXL plus v2 LoRA
|
||||||
|
- **Deprecated** [ip-adapter-faceid-plus_sd15_lora.safetensors](https://huggingface.co/h94/IP-Adapter-FaceID/resolve/main/ip-adapter-faceid-plus_sd15_lora.safetensors), LoRA for the deprecated FaceID plus v1 model
|
||||||
|
|
||||||
| SD v. | IPadapter | Img encoder | Lora |
|
All models can be found on [huggingface](https://huggingface.co/h94).
|
||||||
|---|---|---|---|
|
|
||||||
| v1.5 | [FaceID](https://huggingface.co/h94/IP-Adapter-FaceID/resolve/main/ip-adapter-faceid_sd15.bin) | (not used¹) | [FaceID Lora](https://huggingface.co/h94/IP-Adapter-FaceID/resolve/main/ip-adapter-faceid_sd15_lora.safetensors) |
|
|
||||||
| v1.5 | [FaceID Plus](https://huggingface.co/h94/IP-Adapter-FaceID/resolve/main/ip-adapter-faceid-plus_sd15.bin) | ViT-H | [FaceID Plus Lora](https://huggingface.co/h94/IP-Adapter-FaceID/resolve/main/ip-adapter-faceid-plus_sd15_lora.safetensors) |
|
|
||||||
| v1.5 | [FaceID Plus v2](https://huggingface.co/h94/IP-Adapter-FaceID/resolve/main/ip-adapter-faceid-plusv2_sd15.bin) | ViT-H | [FaceID Plus v2 Lora](https://huggingface.co/h94/IP-Adapter-FaceID/resolve/main/ip-adapter-faceid-plusv2_sd15_lora.safetensors) |
|
|
||||||
| v1.5 | [FaceID Portrait](https://huggingface.co/h94/IP-Adapter-FaceID/resolve/main/ip-adapter-faceid-portrait_sd15.bin) | (not used¹)| not needed |
|
|
||||||
| SDXL | [FaceID](https://huggingface.co/h94/IP-Adapter-FaceID/resolve/main/ip-adapter-faceid_sdxl.bin) | (not used¹) | [FaceID SDXL Lora](https://huggingface.co/h94/IP-Adapter-FaceID/resolve/main/ip-adapter-faceid_sdxl_lora.safetensors) |
|
|
||||||
| SDXL | [FaceID Plus v2](https://huggingface.co/h94/IP-Adapter-FaceID/resolve/main/ip-adapter-faceid-plusv2_sdxl.bin) | ViT-H | [FaceID SDXL Lora](https://huggingface.co/h94/IP-Adapter-FaceID/resolve/main/ip-adapter-faceid-plusv2_sdxl_lora.safetensors) |
|
|
||||||
|
|
||||||
|
### Community's models
|
||||||
|
|
||||||
¹ The base FaceID model doesn't make use of a CLIP vision encoder. Remember to pair any FaceID model together with any other Face model to make it more effective.
|
The community has baked some interesting IPAdapter models.
|
||||||
|
|
||||||
The loras need to be placed into `ComfyUI/models/loras/` directory.
|
- `/ComfyUI/models/ipadapter`
|
||||||
|
- [ip_plus_composition_sd15.safetensors](https://huggingface.co/ostris/ip-composition-adapter/resolve/main/ip_plus_composition_sd15.safetensors), general composition ignoring style and content, more about it [here](https://huggingface.co/ostris/ip-composition-adapter)
|
||||||
|
- [ip_plus_composition_sdxl.safetensors](https://huggingface.co/ostris/ip-composition-adapter/resolve/main/ip_plus_composition_sdxl.safetensors), SDXL version
|
||||||
|
|
||||||
|
if you know of other models please let me know and I will add them to the unified loader.
|
||||||
|
|
||||||
## Generic suggestions
|
## Generic suggestions
|
||||||
|
|
||||||
There's a basic workflow included in this repo and a few examples in the [examples](./examples/) directory. Usually it's a good idea to lower the `weight` to at least `0.8` and increase the steps a little.
|
There are many workflows included in the [examples](./examples/) directory. Please check them before asking for support.
|
||||||
|
|
||||||
## Documentation soon to come...
|
Usually it's a good idea to lower the `weight` to at least `0.8` and increase the number steps. To increase adherece to the prompt you may try to change the **weight type** in the `IPAdapter Advanced` node.
|
||||||
|
|
||||||
Working on it!
|
## Nodes reference
|
||||||
|
|
||||||
|
I'm (slowly) documenting all nodes. Please check the [Nodes reference](./NODES.md).
|
||||||
|
|
||||||
## Troubleshooting
|
## Troubleshooting
|
||||||
|
|
||||||
Please check the [troubleshooting](https://github.com/cubiq/ComfyUI_IPAdapter_plus/issues/108) before posting a new issue. Alse remember to check the previous closed issues.
|
Please check the [troubleshooting](https://github.com/cubiq/ComfyUI_IPAdapter_plus/issues/108) before posting a new issue. Also remember to check the previous closed issues.
|
||||||
|
|
||||||
|
## Current sponsors
|
||||||
|
|
||||||
|
It's only thanks to generous sponsors that **the whole community** can enjoy open and free software. Please join me in thanking the following companies and individuals!
|
||||||
|
|
||||||
|
### Gold sponsors
|
||||||
|
|
||||||
|
[](https://kaiber.ai/)
|
||||||
|
|
||||||
|
### Companies supporting my projects
|
||||||
|
|
||||||
|
- [RunComfy](https://www.runcomfy.com/) (ComfyUI Cloud)
|
||||||
|
|
||||||
|
### Esteemed individuals
|
||||||
|
|
||||||
|
- [Jack Gane](https://github.com/ganeJackS)
|
||||||
|
- [Nathan Shipley](https://www.nathanshipley.com/)
|
||||||
|
|
||||||
|
### One-time Extraordinaire
|
||||||
|
|
||||||
|
- [Eric Rollei](https://github.com/EricRollei)
|
||||||
|
- [francaleu](https://github.com/francaleu)
|
||||||
|
- [Neta.art](https://github.com/talesofai)
|
||||||
|
- [Samwise Wang](https://github.com/tzwm)
|
||||||
|
- _And all private sponsors, you know who you are!_
|
||||||
|
|
||||||
## Credits
|
## Credits
|
||||||
|
|
||||||
- [IPAdapter](https://github.com/tencent-ailab/IP-Adapter/)
|
- [IPAdapter](https://github.com/tencent-ailab/IP-Adapter/)
|
||||||
|
- [InstantStyle](https://github.com/InstantStyle/InstantStyle)
|
||||||
|
- [B-Lora](https://github.com/yardenfren1996/B-LoRA/)
|
||||||
- [ComfyUI](https://github.com/comfyanonymous/ComfyUI)
|
- [ComfyUI](https://github.com/comfyanonymous/ComfyUI)
|
||||||
- [laksjdjf](https://github.com/laksjdjf/IPAdapter-ComfyUI/)
|
- [laksjdjf](https://github.com/laksjdjf/)
|
||||||
|
|||||||
@@ -57,10 +57,10 @@
|
|||||||
1770,
|
1770,
|
||||||
710
|
710
|
||||||
],
|
],
|
||||||
"size": [
|
"size": {
|
||||||
529.7760009765616,
|
"0": 529.7760009765625,
|
||||||
582.3048192804504
|
"1": 582.3048095703125
|
||||||
],
|
},
|
||||||
"flags": {},
|
"flags": {},
|
||||||
"order": 11,
|
"order": 11,
|
||||||
"mode": 0,
|
"mode": 0,
|
||||||
@@ -121,10 +121,10 @@
|
|||||||
1570,
|
1570,
|
||||||
700
|
700
|
||||||
],
|
],
|
||||||
"size": [
|
"size": {
|
||||||
140,
|
"0": 140,
|
||||||
46
|
"1": 46
|
||||||
],
|
},
|
||||||
"flags": {},
|
"flags": {},
|
||||||
"order": 10,
|
"order": 10,
|
||||||
"mode": 0,
|
"mode": 0,
|
||||||
@@ -187,218 +187,6 @@
|
|||||||
1
|
1
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"id": 16,
|
|
||||||
"type": "CLIPVisionLoader",
|
|
||||||
"pos": [
|
|
||||||
308,
|
|
||||||
161
|
|
||||||
],
|
|
||||||
"size": {
|
|
||||||
"0": 315,
|
|
||||||
"1": 58
|
|
||||||
},
|
|
||||||
"flags": {},
|
|
||||||
"order": 2,
|
|
||||||
"mode": 0,
|
|
||||||
"outputs": [
|
|
||||||
{
|
|
||||||
"name": "CLIP_VISION",
|
|
||||||
"type": "CLIP_VISION",
|
|
||||||
"links": [
|
|
||||||
24
|
|
||||||
],
|
|
||||||
"shape": 3
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"properties": {
|
|
||||||
"Node name for S&R": "CLIPVisionLoader"
|
|
||||||
},
|
|
||||||
"widgets_values": [
|
|
||||||
"IPAdapter_image_encoder_sd15.safetensors"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": 15,
|
|
||||||
"type": "IPAdapterModelLoader",
|
|
||||||
"pos": [
|
|
||||||
308,
|
|
||||||
52
|
|
||||||
],
|
|
||||||
"size": {
|
|
||||||
"0": 315,
|
|
||||||
"1": 58
|
|
||||||
},
|
|
||||||
"flags": {},
|
|
||||||
"order": 3,
|
|
||||||
"mode": 0,
|
|
||||||
"outputs": [
|
|
||||||
{
|
|
||||||
"name": "IPADAPTER",
|
|
||||||
"type": "IPADAPTER",
|
|
||||||
"links": [
|
|
||||||
21
|
|
||||||
],
|
|
||||||
"shape": 3
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"properties": {
|
|
||||||
"Node name for S&R": "IPAdapterModelLoader"
|
|
||||||
},
|
|
||||||
"widgets_values": [
|
|
||||||
"ip-adapter-plus_sd15.safetensors"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": 14,
|
|
||||||
"type": "IPAdapterAdvanced",
|
|
||||||
"pos": [
|
|
||||||
793,
|
|
||||||
304
|
|
||||||
],
|
|
||||||
"size": {
|
|
||||||
"0": 315,
|
|
||||||
"1": 254
|
|
||||||
},
|
|
||||||
"flags": {},
|
|
||||||
"order": 8,
|
|
||||||
"mode": 0,
|
|
||||||
"inputs": [
|
|
||||||
{
|
|
||||||
"name": "model",
|
|
||||||
"type": "MODEL",
|
|
||||||
"link": 20
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "ipadapter",
|
|
||||||
"type": "IPADAPTER",
|
|
||||||
"link": 21,
|
|
||||||
"slot_index": 1
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "image",
|
|
||||||
"type": "IMAGE",
|
|
||||||
"link": 26
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "image_negative",
|
|
||||||
"type": "IMAGE",
|
|
||||||
"link": null
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "attn_mask",
|
|
||||||
"type": "MASK",
|
|
||||||
"link": null
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "clip_vision",
|
|
||||||
"type": "CLIP_VISION",
|
|
||||||
"link": 24,
|
|
||||||
"slot_index": 5
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"outputs": [
|
|
||||||
{
|
|
||||||
"name": "MODEL",
|
|
||||||
"type": "MODEL",
|
|
||||||
"links": [
|
|
||||||
23
|
|
||||||
],
|
|
||||||
"shape": 3,
|
|
||||||
"slot_index": 0
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"properties": {
|
|
||||||
"Node name for S&R": "IPAdapterAdvanced"
|
|
||||||
},
|
|
||||||
"widgets_values": [
|
|
||||||
0.8,
|
|
||||||
"linear",
|
|
||||||
"concat",
|
|
||||||
0,
|
|
||||||
1
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": 17,
|
|
||||||
"type": "PrepImageForClipVision",
|
|
||||||
"pos": [
|
|
||||||
798,
|
|
||||||
145
|
|
||||||
],
|
|
||||||
"size": {
|
|
||||||
"0": 315,
|
|
||||||
"1": 106
|
|
||||||
},
|
|
||||||
"flags": {},
|
|
||||||
"order": 7,
|
|
||||||
"mode": 0,
|
|
||||||
"inputs": [
|
|
||||||
{
|
|
||||||
"name": "image",
|
|
||||||
"type": "IMAGE",
|
|
||||||
"link": 25
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"outputs": [
|
|
||||||
{
|
|
||||||
"name": "IMAGE",
|
|
||||||
"type": "IMAGE",
|
|
||||||
"links": [
|
|
||||||
26
|
|
||||||
],
|
|
||||||
"shape": 3,
|
|
||||||
"slot_index": 0
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"properties": {
|
|
||||||
"Node name for S&R": "PrepImageForClipVision"
|
|
||||||
},
|
|
||||||
"widgets_values": [
|
|
||||||
"LANCZOS",
|
|
||||||
"top",
|
|
||||||
0.15
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": 12,
|
|
||||||
"type": "LoadImage",
|
|
||||||
"pos": [
|
|
||||||
311,
|
|
||||||
270
|
|
||||||
],
|
|
||||||
"size": [
|
|
||||||
315,
|
|
||||||
314
|
|
||||||
],
|
|
||||||
"flags": {},
|
|
||||||
"order": 4,
|
|
||||||
"mode": 0,
|
|
||||||
"outputs": [
|
|
||||||
{
|
|
||||||
"name": "IMAGE",
|
|
||||||
"type": "IMAGE",
|
|
||||||
"links": [
|
|
||||||
25
|
|
||||||
],
|
|
||||||
"shape": 3,
|
|
||||||
"slot_index": 0
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "MASK",
|
|
||||||
"type": "MASK",
|
|
||||||
"links": null,
|
|
||||||
"shape": 3
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"properties": {
|
|
||||||
"Node name for S&R": "LoadImage"
|
|
||||||
},
|
|
||||||
"widgets_values": [
|
|
||||||
"girl_sitting.png",
|
|
||||||
"image"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"id": 6,
|
"id": 6,
|
||||||
"type": "CLIPTextEncode",
|
"type": "CLIPTextEncode",
|
||||||
@@ -495,6 +283,219 @@
|
|||||||
"karras",
|
"karras",
|
||||||
1
|
1
|
||||||
]
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 14,
|
||||||
|
"type": "IPAdapterAdvanced",
|
||||||
|
"pos": [
|
||||||
|
801,
|
||||||
|
256
|
||||||
|
],
|
||||||
|
"size": {
|
||||||
|
"0": 315,
|
||||||
|
"1": 278
|
||||||
|
},
|
||||||
|
"flags": {},
|
||||||
|
"order": 8,
|
||||||
|
"mode": 0,
|
||||||
|
"inputs": [
|
||||||
|
{
|
||||||
|
"name": "model",
|
||||||
|
"type": "MODEL",
|
||||||
|
"link": 20
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "ipadapter",
|
||||||
|
"type": "IPADAPTER",
|
||||||
|
"link": 21,
|
||||||
|
"slot_index": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "image",
|
||||||
|
"type": "IMAGE",
|
||||||
|
"link": 26
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "image_negative",
|
||||||
|
"type": "IMAGE",
|
||||||
|
"link": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "attn_mask",
|
||||||
|
"type": "MASK",
|
||||||
|
"link": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "clip_vision",
|
||||||
|
"type": "CLIP_VISION",
|
||||||
|
"link": 24,
|
||||||
|
"slot_index": 5
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"outputs": [
|
||||||
|
{
|
||||||
|
"name": "MODEL",
|
||||||
|
"type": "MODEL",
|
||||||
|
"links": [
|
||||||
|
23
|
||||||
|
],
|
||||||
|
"shape": 3,
|
||||||
|
"slot_index": 0
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"properties": {
|
||||||
|
"Node name for S&R": "IPAdapterAdvanced"
|
||||||
|
},
|
||||||
|
"widgets_values": [
|
||||||
|
0.8,
|
||||||
|
"linear",
|
||||||
|
"concat",
|
||||||
|
0,
|
||||||
|
1,
|
||||||
|
"V only"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 17,
|
||||||
|
"type": "PrepImageForClipVision",
|
||||||
|
"pos": [
|
||||||
|
797,
|
||||||
|
87
|
||||||
|
],
|
||||||
|
"size": {
|
||||||
|
"0": 315,
|
||||||
|
"1": 106
|
||||||
|
},
|
||||||
|
"flags": {},
|
||||||
|
"order": 7,
|
||||||
|
"mode": 0,
|
||||||
|
"inputs": [
|
||||||
|
{
|
||||||
|
"name": "image",
|
||||||
|
"type": "IMAGE",
|
||||||
|
"link": 25
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"outputs": [
|
||||||
|
{
|
||||||
|
"name": "IMAGE",
|
||||||
|
"type": "IMAGE",
|
||||||
|
"links": [
|
||||||
|
26
|
||||||
|
],
|
||||||
|
"shape": 3,
|
||||||
|
"slot_index": 0
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"properties": {
|
||||||
|
"Node name for S&R": "PrepImageForClipVision"
|
||||||
|
},
|
||||||
|
"widgets_values": [
|
||||||
|
"LANCZOS",
|
||||||
|
"top",
|
||||||
|
0.15
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 15,
|
||||||
|
"type": "IPAdapterModelLoader",
|
||||||
|
"pos": [
|
||||||
|
308,
|
||||||
|
52
|
||||||
|
],
|
||||||
|
"size": {
|
||||||
|
"0": 315,
|
||||||
|
"1": 58
|
||||||
|
},
|
||||||
|
"flags": {},
|
||||||
|
"order": 2,
|
||||||
|
"mode": 0,
|
||||||
|
"outputs": [
|
||||||
|
{
|
||||||
|
"name": "IPADAPTER",
|
||||||
|
"type": "IPADAPTER",
|
||||||
|
"links": [
|
||||||
|
21
|
||||||
|
],
|
||||||
|
"shape": 3
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"properties": {
|
||||||
|
"Node name for S&R": "IPAdapterModelLoader"
|
||||||
|
},
|
||||||
|
"widgets_values": [
|
||||||
|
"ip-adapter-plus_sd15.safetensors"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 16,
|
||||||
|
"type": "CLIPVisionLoader",
|
||||||
|
"pos": [
|
||||||
|
308,
|
||||||
|
161
|
||||||
|
],
|
||||||
|
"size": {
|
||||||
|
"0": 315,
|
||||||
|
"1": 58
|
||||||
|
},
|
||||||
|
"flags": {},
|
||||||
|
"order": 3,
|
||||||
|
"mode": 0,
|
||||||
|
"outputs": [
|
||||||
|
{
|
||||||
|
"name": "CLIP_VISION",
|
||||||
|
"type": "CLIP_VISION",
|
||||||
|
"links": [
|
||||||
|
24
|
||||||
|
],
|
||||||
|
"shape": 3
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"properties": {
|
||||||
|
"Node name for S&R": "CLIPVisionLoader"
|
||||||
|
},
|
||||||
|
"widgets_values": [
|
||||||
|
"CLIP-ViT-H-14-laion2B-s32B-b79K.safetensors"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 12,
|
||||||
|
"type": "LoadImage",
|
||||||
|
"pos": [
|
||||||
|
311,
|
||||||
|
270
|
||||||
|
],
|
||||||
|
"size": {
|
||||||
|
"0": 315,
|
||||||
|
"1": 314
|
||||||
|
},
|
||||||
|
"flags": {},
|
||||||
|
"order": 4,
|
||||||
|
"mode": 0,
|
||||||
|
"outputs": [
|
||||||
|
{
|
||||||
|
"name": "IMAGE",
|
||||||
|
"type": "IMAGE",
|
||||||
|
"links": [
|
||||||
|
25
|
||||||
|
],
|
||||||
|
"shape": 3,
|
||||||
|
"slot_index": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "MASK",
|
||||||
|
"type": "MASK",
|
||||||
|
"links": null,
|
||||||
|
"shape": 3
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"properties": {
|
||||||
|
"Node name for S&R": "LoadImage"
|
||||||
|
},
|
||||||
|
"widgets_values": [
|
||||||
|
"warrior_woman.png",
|
||||||
|
"image"
|
||||||
|
]
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"links": [
|
"links": [
|
||||||
|
|||||||
@@ -38,40 +38,6 @@
|
|||||||
1
|
1
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"id": 16,
|
|
||||||
"type": "CLIPVisionLoader",
|
|
||||||
"pos": [
|
|
||||||
650,
|
|
||||||
80
|
|
||||||
],
|
|
||||||
"size": {
|
|
||||||
"0": 315,
|
|
||||||
"1": 58
|
|
||||||
},
|
|
||||||
"flags": {},
|
|
||||||
"order": 1,
|
|
||||||
"mode": 0,
|
|
||||||
"outputs": [
|
|
||||||
{
|
|
||||||
"name": "CLIP_VISION",
|
|
||||||
"type": "CLIP_VISION",
|
|
||||||
"links": [
|
|
||||||
24,
|
|
||||||
96,
|
|
||||||
107,
|
|
||||||
118
|
|
||||||
],
|
|
||||||
"shape": 3
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"properties": {
|
|
||||||
"Node name for S&R": "CLIPVisionLoader"
|
|
||||||
},
|
|
||||||
"widgets_values": [
|
|
||||||
"IPAdapter_image_encoder_sd15.safetensors"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"id": 3,
|
"id": 3,
|
||||||
"type": "KSampler",
|
"type": "KSampler",
|
||||||
@@ -143,7 +109,7 @@
|
|||||||
"1": 98
|
"1": 98
|
||||||
},
|
},
|
||||||
"flags": {},
|
"flags": {},
|
||||||
"order": 2,
|
"order": 1,
|
||||||
"mode": 0,
|
"mode": 0,
|
||||||
"outputs": [
|
"outputs": [
|
||||||
{
|
{
|
||||||
@@ -197,7 +163,7 @@
|
|||||||
"1": 314
|
"1": 314
|
||||||
},
|
},
|
||||||
"flags": {},
|
"flags": {},
|
||||||
"order": 3,
|
"order": 2,
|
||||||
"mode": 0,
|
"mode": 0,
|
||||||
"outputs": [
|
"outputs": [
|
||||||
{
|
{
|
||||||
@@ -274,7 +240,7 @@
|
|||||||
],
|
],
|
||||||
"size": {
|
"size": {
|
||||||
"0": 315,
|
"0": 315,
|
||||||
"1": 254
|
"1": 278
|
||||||
},
|
},
|
||||||
"flags": {},
|
"flags": {},
|
||||||
"order": 9,
|
"order": 9,
|
||||||
@@ -332,7 +298,8 @@
|
|||||||
"linear",
|
"linear",
|
||||||
"concat",
|
"concat",
|
||||||
0,
|
0,
|
||||||
1
|
1,
|
||||||
|
"V only"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -499,7 +466,7 @@
|
|||||||
"1": 58
|
"1": 58
|
||||||
},
|
},
|
||||||
"flags": {},
|
"flags": {},
|
||||||
"order": 4,
|
"order": 3,
|
||||||
"mode": 0,
|
"mode": 0,
|
||||||
"outputs": [
|
"outputs": [
|
||||||
{
|
{
|
||||||
@@ -577,7 +544,7 @@
|
|||||||
"1": 314
|
"1": 314
|
||||||
},
|
},
|
||||||
"flags": {},
|
"flags": {},
|
||||||
"order": 5,
|
"order": 4,
|
||||||
"mode": 0,
|
"mode": 0,
|
||||||
"outputs": [
|
"outputs": [
|
||||||
{
|
{
|
||||||
@@ -613,7 +580,7 @@
|
|||||||
],
|
],
|
||||||
"size": {
|
"size": {
|
||||||
"0": 315,
|
"0": 315,
|
||||||
"1": 254
|
"1": 278
|
||||||
},
|
},
|
||||||
"flags": {},
|
"flags": {},
|
||||||
"order": 10,
|
"order": 10,
|
||||||
@@ -671,7 +638,8 @@
|
|||||||
"linear",
|
"linear",
|
||||||
"add",
|
"add",
|
||||||
0,
|
0,
|
||||||
1
|
1,
|
||||||
|
"V only"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -881,7 +849,7 @@
|
|||||||
],
|
],
|
||||||
"size": {
|
"size": {
|
||||||
"0": 315,
|
"0": 315,
|
||||||
"1": 254
|
"1": 278
|
||||||
},
|
},
|
||||||
"flags": {},
|
"flags": {},
|
||||||
"order": 12,
|
"order": 12,
|
||||||
@@ -939,7 +907,8 @@
|
|||||||
"linear",
|
"linear",
|
||||||
"norm average",
|
"norm average",
|
||||||
0,
|
0,
|
||||||
1
|
1,
|
||||||
|
"V only"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -951,7 +920,7 @@
|
|||||||
],
|
],
|
||||||
"size": {
|
"size": {
|
||||||
"0": 315,
|
"0": 315,
|
||||||
"1": 254
|
"1": 278
|
||||||
},
|
},
|
||||||
"flags": {},
|
"flags": {},
|
||||||
"order": 11,
|
"order": 11,
|
||||||
@@ -1009,7 +978,8 @@
|
|||||||
"linear",
|
"linear",
|
||||||
"average",
|
"average",
|
||||||
0,
|
0,
|
||||||
1
|
1,
|
||||||
|
"V only"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -1143,6 +1113,40 @@
|
|||||||
"widgets_values": [
|
"widgets_values": [
|
||||||
"IPAdapter"
|
"IPAdapter"
|
||||||
]
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 16,
|
||||||
|
"type": "CLIPVisionLoader",
|
||||||
|
"pos": [
|
||||||
|
650,
|
||||||
|
80
|
||||||
|
],
|
||||||
|
"size": {
|
||||||
|
"0": 315,
|
||||||
|
"1": 58
|
||||||
|
},
|
||||||
|
"flags": {},
|
||||||
|
"order": 5,
|
||||||
|
"mode": 0,
|
||||||
|
"outputs": [
|
||||||
|
{
|
||||||
|
"name": "CLIP_VISION",
|
||||||
|
"type": "CLIP_VISION",
|
||||||
|
"links": [
|
||||||
|
24,
|
||||||
|
96,
|
||||||
|
107,
|
||||||
|
118
|
||||||
|
],
|
||||||
|
"shape": 3
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"properties": {
|
||||||
|
"Node name for S&R": "CLIPVisionLoader"
|
||||||
|
},
|
||||||
|
"widgets_values": [
|
||||||
|
"CLIP-ViT-H-14-laion2B-s32B-b79K.safetensors"
|
||||||
|
]
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"links": [
|
"links": [
|
||||||
|
|||||||
@@ -147,37 +147,6 @@
|
|||||||
1
|
1
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"id": 16,
|
|
||||||
"type": "CLIPVisionLoader",
|
|
||||||
"pos": [
|
|
||||||
308,
|
|
||||||
161
|
|
||||||
],
|
|
||||||
"size": {
|
|
||||||
"0": 315,
|
|
||||||
"1": 58
|
|
||||||
},
|
|
||||||
"flags": {},
|
|
||||||
"order": 2,
|
|
||||||
"mode": 0,
|
|
||||||
"outputs": [
|
|
||||||
{
|
|
||||||
"name": "CLIP_VISION",
|
|
||||||
"type": "CLIP_VISION",
|
|
||||||
"links": [
|
|
||||||
24
|
|
||||||
],
|
|
||||||
"shape": 3
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"properties": {
|
|
||||||
"Node name for S&R": "CLIPVisionLoader"
|
|
||||||
},
|
|
||||||
"widgets_values": [
|
|
||||||
"IPAdapter_image_encoder_sd15.safetensors"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"id": 15,
|
"id": 15,
|
||||||
"type": "IPAdapterModelLoader",
|
"type": "IPAdapterModelLoader",
|
||||||
@@ -190,7 +159,7 @@
|
|||||||
"1": 58
|
"1": 58
|
||||||
},
|
},
|
||||||
"flags": {},
|
"flags": {},
|
||||||
"order": 3,
|
"order": 2,
|
||||||
"mode": 0,
|
"mode": 0,
|
||||||
"outputs": [
|
"outputs": [
|
||||||
{
|
{
|
||||||
@@ -259,7 +228,7 @@
|
|||||||
"1": 314
|
"1": 314
|
||||||
},
|
},
|
||||||
"flags": {},
|
"flags": {},
|
||||||
"order": 4,
|
"order": 3,
|
||||||
"mode": 0,
|
"mode": 0,
|
||||||
"outputs": [
|
"outputs": [
|
||||||
{
|
{
|
||||||
@@ -293,10 +262,10 @@
|
|||||||
728,
|
728,
|
||||||
290
|
290
|
||||||
],
|
],
|
||||||
"size": [
|
"size": {
|
||||||
210,
|
"0": 210,
|
||||||
106
|
"1": 106
|
||||||
],
|
},
|
||||||
"flags": {},
|
"flags": {},
|
||||||
"order": 7,
|
"order": 7,
|
||||||
"mode": 0,
|
"mode": 0,
|
||||||
@@ -337,7 +306,7 @@
|
|||||||
],
|
],
|
||||||
"size": {
|
"size": {
|
||||||
"0": 315,
|
"0": 315,
|
||||||
"1": 254
|
"1": 278
|
||||||
},
|
},
|
||||||
"flags": {},
|
"flags": {},
|
||||||
"order": 9,
|
"order": 9,
|
||||||
@@ -395,7 +364,8 @@
|
|||||||
"linear",
|
"linear",
|
||||||
"concat",
|
"concat",
|
||||||
0,
|
0,
|
||||||
1
|
1,
|
||||||
|
"V only"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -464,10 +434,10 @@
|
|||||||
1019,
|
1019,
|
||||||
405
|
405
|
||||||
],
|
],
|
||||||
"size": [
|
"size": {
|
||||||
210,
|
"0": 210,
|
||||||
106
|
"1": 106
|
||||||
],
|
},
|
||||||
"flags": {},
|
"flags": {},
|
||||||
"order": 8,
|
"order": 8,
|
||||||
"mode": 0,
|
"mode": 0,
|
||||||
@@ -537,6 +507,37 @@
|
|||||||
"properties": {
|
"properties": {
|
||||||
"Node name for S&R": "VAEDecode"
|
"Node name for S&R": "VAEDecode"
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 16,
|
||||||
|
"type": "CLIPVisionLoader",
|
||||||
|
"pos": [
|
||||||
|
308,
|
||||||
|
161
|
||||||
|
],
|
||||||
|
"size": {
|
||||||
|
"0": 315,
|
||||||
|
"1": 58
|
||||||
|
},
|
||||||
|
"flags": {},
|
||||||
|
"order": 4,
|
||||||
|
"mode": 0,
|
||||||
|
"outputs": [
|
||||||
|
{
|
||||||
|
"name": "CLIP_VISION",
|
||||||
|
"type": "CLIP_VISION",
|
||||||
|
"links": [
|
||||||
|
24
|
||||||
|
],
|
||||||
|
"shape": 3
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"properties": {
|
||||||
|
"Node name for S&R": "CLIPVisionLoader"
|
||||||
|
},
|
||||||
|
"widgets_values": [
|
||||||
|
"CLIP-ViT-H-14-laion2B-s32B-b79K.safetensors"
|
||||||
|
]
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"links": [
|
"links": [
|
||||||
|
|||||||
@@ -0,0 +1,567 @@
|
|||||||
|
{
|
||||||
|
"last_node_id": 20,
|
||||||
|
"last_link_id": 36,
|
||||||
|
"nodes": [
|
||||||
|
{
|
||||||
|
"id": 8,
|
||||||
|
"type": "VAEDecode",
|
||||||
|
"pos": [
|
||||||
|
1640,
|
||||||
|
710
|
||||||
|
],
|
||||||
|
"size": {
|
||||||
|
"0": 140,
|
||||||
|
"1": 46
|
||||||
|
},
|
||||||
|
"flags": {},
|
||||||
|
"order": 8,
|
||||||
|
"mode": 0,
|
||||||
|
"inputs": [
|
||||||
|
{
|
||||||
|
"name": "samples",
|
||||||
|
"type": "LATENT",
|
||||||
|
"link": 7
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "vae",
|
||||||
|
"type": "VAE",
|
||||||
|
"link": 8
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"outputs": [
|
||||||
|
{
|
||||||
|
"name": "IMAGE",
|
||||||
|
"type": "IMAGE",
|
||||||
|
"links": [
|
||||||
|
9
|
||||||
|
],
|
||||||
|
"slot_index": 0
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"properties": {
|
||||||
|
"Node name for S&R": "VAEDecode"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 3,
|
||||||
|
"type": "KSampler",
|
||||||
|
"pos": [
|
||||||
|
1280,
|
||||||
|
710
|
||||||
|
],
|
||||||
|
"size": {
|
||||||
|
"0": 315,
|
||||||
|
"1": 262
|
||||||
|
},
|
||||||
|
"flags": {},
|
||||||
|
"order": 7,
|
||||||
|
"mode": 0,
|
||||||
|
"inputs": [
|
||||||
|
{
|
||||||
|
"name": "model",
|
||||||
|
"type": "MODEL",
|
||||||
|
"link": 32
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "positive",
|
||||||
|
"type": "CONDITIONING",
|
||||||
|
"link": 4
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "negative",
|
||||||
|
"type": "CONDITIONING",
|
||||||
|
"link": 6
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "latent_image",
|
||||||
|
"type": "LATENT",
|
||||||
|
"link": 2
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"outputs": [
|
||||||
|
{
|
||||||
|
"name": "LATENT",
|
||||||
|
"type": "LATENT",
|
||||||
|
"links": [
|
||||||
|
7
|
||||||
|
],
|
||||||
|
"slot_index": 0
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"properties": {
|
||||||
|
"Node name for S&R": "KSampler"
|
||||||
|
},
|
||||||
|
"widgets_values": [
|
||||||
|
0,
|
||||||
|
"fixed",
|
||||||
|
30,
|
||||||
|
6.5,
|
||||||
|
"ddpm",
|
||||||
|
"karras",
|
||||||
|
1
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 9,
|
||||||
|
"type": "SaveImage",
|
||||||
|
"pos": [
|
||||||
|
1830,
|
||||||
|
700
|
||||||
|
],
|
||||||
|
"size": {
|
||||||
|
"0": 529.7760009765625,
|
||||||
|
"1": 582.3048095703125
|
||||||
|
},
|
||||||
|
"flags": {},
|
||||||
|
"order": 9,
|
||||||
|
"mode": 0,
|
||||||
|
"inputs": [
|
||||||
|
{
|
||||||
|
"name": "images",
|
||||||
|
"type": "IMAGE",
|
||||||
|
"link": 9
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"properties": {},
|
||||||
|
"widgets_values": [
|
||||||
|
"IPAdapter"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 20,
|
||||||
|
"type": "IPAdapterUnifiedLoaderFaceID",
|
||||||
|
"pos": [
|
||||||
|
460,
|
||||||
|
60
|
||||||
|
],
|
||||||
|
"size": {
|
||||||
|
"0": 315,
|
||||||
|
"1": 126
|
||||||
|
},
|
||||||
|
"flags": {},
|
||||||
|
"order": 3,
|
||||||
|
"mode": 0,
|
||||||
|
"inputs": [
|
||||||
|
{
|
||||||
|
"name": "model",
|
||||||
|
"type": "MODEL",
|
||||||
|
"link": 36
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "ipadapter",
|
||||||
|
"type": "IPADAPTER",
|
||||||
|
"link": null
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"outputs": [
|
||||||
|
{
|
||||||
|
"name": "MODEL",
|
||||||
|
"type": "MODEL",
|
||||||
|
"links": [
|
||||||
|
35
|
||||||
|
],
|
||||||
|
"shape": 3,
|
||||||
|
"slot_index": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "ipadapter",
|
||||||
|
"type": "IPADAPTER",
|
||||||
|
"links": [
|
||||||
|
34
|
||||||
|
],
|
||||||
|
"shape": 3
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"properties": {
|
||||||
|
"Node name for S&R": "IPAdapterUnifiedLoaderFaceID"
|
||||||
|
},
|
||||||
|
"widgets_values": [
|
||||||
|
"FACEID PORTRAIT (style transfer)",
|
||||||
|
0.6,
|
||||||
|
"CPU"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 4,
|
||||||
|
"type": "CheckpointLoaderSimple",
|
||||||
|
"pos": [
|
||||||
|
10,
|
||||||
|
680
|
||||||
|
],
|
||||||
|
"size": {
|
||||||
|
"0": 315,
|
||||||
|
"1": 98
|
||||||
|
},
|
||||||
|
"flags": {},
|
||||||
|
"order": 0,
|
||||||
|
"mode": 0,
|
||||||
|
"outputs": [
|
||||||
|
{
|
||||||
|
"name": "MODEL",
|
||||||
|
"type": "MODEL",
|
||||||
|
"links": [
|
||||||
|
36
|
||||||
|
],
|
||||||
|
"slot_index": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "CLIP",
|
||||||
|
"type": "CLIP",
|
||||||
|
"links": [
|
||||||
|
3,
|
||||||
|
5
|
||||||
|
],
|
||||||
|
"slot_index": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "VAE",
|
||||||
|
"type": "VAE",
|
||||||
|
"links": [
|
||||||
|
8
|
||||||
|
],
|
||||||
|
"slot_index": 2
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"properties": {
|
||||||
|
"Node name for S&R": "CheckpointLoaderSimple"
|
||||||
|
},
|
||||||
|
"widgets_values": [
|
||||||
|
"sdxl/juggernautXL_version8Rundiffusion.safetensors"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 5,
|
||||||
|
"type": "EmptyLatentImage",
|
||||||
|
"pos": [
|
||||||
|
870,
|
||||||
|
1100
|
||||||
|
],
|
||||||
|
"size": {
|
||||||
|
"0": 315,
|
||||||
|
"1": 106
|
||||||
|
},
|
||||||
|
"flags": {},
|
||||||
|
"order": 1,
|
||||||
|
"mode": 0,
|
||||||
|
"outputs": [
|
||||||
|
{
|
||||||
|
"name": "LATENT",
|
||||||
|
"type": "LATENT",
|
||||||
|
"links": [
|
||||||
|
2
|
||||||
|
],
|
||||||
|
"slot_index": 0
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"properties": {
|
||||||
|
"Node name for S&R": "EmptyLatentImage"
|
||||||
|
},
|
||||||
|
"widgets_values": [
|
||||||
|
1024,
|
||||||
|
1024,
|
||||||
|
1
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 12,
|
||||||
|
"type": "LoadImage",
|
||||||
|
"pos": [
|
||||||
|
450,
|
||||||
|
240
|
||||||
|
],
|
||||||
|
"size": {
|
||||||
|
"0": 315,
|
||||||
|
"1": 314
|
||||||
|
},
|
||||||
|
"flags": {},
|
||||||
|
"order": 2,
|
||||||
|
"mode": 0,
|
||||||
|
"outputs": [
|
||||||
|
{
|
||||||
|
"name": "IMAGE",
|
||||||
|
"type": "IMAGE",
|
||||||
|
"links": [
|
||||||
|
29
|
||||||
|
],
|
||||||
|
"shape": 3,
|
||||||
|
"slot_index": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "MASK",
|
||||||
|
"type": "MASK",
|
||||||
|
"links": null,
|
||||||
|
"shape": 3
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"properties": {
|
||||||
|
"Node name for S&R": "LoadImage"
|
||||||
|
},
|
||||||
|
"widgets_values": [
|
||||||
|
"face2.jpg",
|
||||||
|
"image"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 6,
|
||||||
|
"type": "CLIPTextEncode",
|
||||||
|
"pos": [
|
||||||
|
760,
|
||||||
|
620
|
||||||
|
],
|
||||||
|
"size": {
|
||||||
|
"0": 422.84503173828125,
|
||||||
|
"1": 164.31304931640625
|
||||||
|
},
|
||||||
|
"flags": {},
|
||||||
|
"order": 4,
|
||||||
|
"mode": 0,
|
||||||
|
"inputs": [
|
||||||
|
{
|
||||||
|
"name": "clip",
|
||||||
|
"type": "CLIP",
|
||||||
|
"link": 3
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"outputs": [
|
||||||
|
{
|
||||||
|
"name": "CONDITIONING",
|
||||||
|
"type": "CONDITIONING",
|
||||||
|
"links": [
|
||||||
|
4
|
||||||
|
],
|
||||||
|
"slot_index": 0
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"properties": {
|
||||||
|
"Node name for S&R": "CLIPTextEncode"
|
||||||
|
},
|
||||||
|
"widgets_values": [
|
||||||
|
"a watercolor painting of a woman on the beach\n\nhigh quality artistry"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 7,
|
||||||
|
"type": "CLIPTextEncode",
|
||||||
|
"pos": [
|
||||||
|
760,
|
||||||
|
850
|
||||||
|
],
|
||||||
|
"size": {
|
||||||
|
"0": 425.27801513671875,
|
||||||
|
"1": 180.6060791015625
|
||||||
|
},
|
||||||
|
"flags": {},
|
||||||
|
"order": 5,
|
||||||
|
"mode": 0,
|
||||||
|
"inputs": [
|
||||||
|
{
|
||||||
|
"name": "clip",
|
||||||
|
"type": "CLIP",
|
||||||
|
"link": 5
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"outputs": [
|
||||||
|
{
|
||||||
|
"name": "CONDITIONING",
|
||||||
|
"type": "CONDITIONING",
|
||||||
|
"links": [
|
||||||
|
6
|
||||||
|
],
|
||||||
|
"slot_index": 0
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"properties": {
|
||||||
|
"Node name for S&R": "CLIPTextEncode"
|
||||||
|
},
|
||||||
|
"widgets_values": [
|
||||||
|
"photo, blurry, noisy, messy, lowres, jpeg, artifacts, ill, distorted, malformed, naked"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 18,
|
||||||
|
"type": "IPAdapterFaceID",
|
||||||
|
"pos": [
|
||||||
|
850,
|
||||||
|
190
|
||||||
|
],
|
||||||
|
"size": {
|
||||||
|
"0": 315,
|
||||||
|
"1": 322
|
||||||
|
},
|
||||||
|
"flags": {},
|
||||||
|
"order": 6,
|
||||||
|
"mode": 0,
|
||||||
|
"inputs": [
|
||||||
|
{
|
||||||
|
"name": "model",
|
||||||
|
"type": "MODEL",
|
||||||
|
"link": 35
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "ipadapter",
|
||||||
|
"type": "IPADAPTER",
|
||||||
|
"link": 34,
|
||||||
|
"slot_index": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "image",
|
||||||
|
"type": "IMAGE",
|
||||||
|
"link": 29
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "image_negative",
|
||||||
|
"type": "IMAGE",
|
||||||
|
"link": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "attn_mask",
|
||||||
|
"type": "MASK",
|
||||||
|
"link": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "clip_vision",
|
||||||
|
"type": "CLIP_VISION",
|
||||||
|
"link": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "insightface",
|
||||||
|
"type": "INSIGHTFACE",
|
||||||
|
"link": null
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"outputs": [
|
||||||
|
{
|
||||||
|
"name": "MODEL",
|
||||||
|
"type": "MODEL",
|
||||||
|
"links": [
|
||||||
|
32
|
||||||
|
],
|
||||||
|
"shape": 3,
|
||||||
|
"slot_index": 0
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"properties": {
|
||||||
|
"Node name for S&R": "IPAdapterFaceID"
|
||||||
|
},
|
||||||
|
"widgets_values": [
|
||||||
|
0.65,
|
||||||
|
1,
|
||||||
|
"linear",
|
||||||
|
"concat",
|
||||||
|
0,
|
||||||
|
1,
|
||||||
|
"V only"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"links": [
|
||||||
|
[
|
||||||
|
2,
|
||||||
|
5,
|
||||||
|
0,
|
||||||
|
3,
|
||||||
|
3,
|
||||||
|
"LATENT"
|
||||||
|
],
|
||||||
|
[
|
||||||
|
3,
|
||||||
|
4,
|
||||||
|
1,
|
||||||
|
6,
|
||||||
|
0,
|
||||||
|
"CLIP"
|
||||||
|
],
|
||||||
|
[
|
||||||
|
4,
|
||||||
|
6,
|
||||||
|
0,
|
||||||
|
3,
|
||||||
|
1,
|
||||||
|
"CONDITIONING"
|
||||||
|
],
|
||||||
|
[
|
||||||
|
5,
|
||||||
|
4,
|
||||||
|
1,
|
||||||
|
7,
|
||||||
|
0,
|
||||||
|
"CLIP"
|
||||||
|
],
|
||||||
|
[
|
||||||
|
6,
|
||||||
|
7,
|
||||||
|
0,
|
||||||
|
3,
|
||||||
|
2,
|
||||||
|
"CONDITIONING"
|
||||||
|
],
|
||||||
|
[
|
||||||
|
7,
|
||||||
|
3,
|
||||||
|
0,
|
||||||
|
8,
|
||||||
|
0,
|
||||||
|
"LATENT"
|
||||||
|
],
|
||||||
|
[
|
||||||
|
8,
|
||||||
|
4,
|
||||||
|
2,
|
||||||
|
8,
|
||||||
|
1,
|
||||||
|
"VAE"
|
||||||
|
],
|
||||||
|
[
|
||||||
|
9,
|
||||||
|
8,
|
||||||
|
0,
|
||||||
|
9,
|
||||||
|
0,
|
||||||
|
"IMAGE"
|
||||||
|
],
|
||||||
|
[
|
||||||
|
29,
|
||||||
|
12,
|
||||||
|
0,
|
||||||
|
18,
|
||||||
|
2,
|
||||||
|
"IMAGE"
|
||||||
|
],
|
||||||
|
[
|
||||||
|
32,
|
||||||
|
18,
|
||||||
|
0,
|
||||||
|
3,
|
||||||
|
0,
|
||||||
|
"MODEL"
|
||||||
|
],
|
||||||
|
[
|
||||||
|
34,
|
||||||
|
20,
|
||||||
|
1,
|
||||||
|
18,
|
||||||
|
1,
|
||||||
|
"IPADAPTER"
|
||||||
|
],
|
||||||
|
[
|
||||||
|
35,
|
||||||
|
20,
|
||||||
|
0,
|
||||||
|
18,
|
||||||
|
0,
|
||||||
|
"MODEL"
|
||||||
|
],
|
||||||
|
[
|
||||||
|
36,
|
||||||
|
4,
|
||||||
|
0,
|
||||||
|
20,
|
||||||
|
0,
|
||||||
|
"MODEL"
|
||||||
|
]
|
||||||
|
],
|
||||||
|
"groups": [],
|
||||||
|
"config": {},
|
||||||
|
"extra": {},
|
||||||
|
"version": 0.4
|
||||||
|
}
|
||||||
@@ -0,0 +1,612 @@
|
|||||||
|
{
|
||||||
|
"last_node_id": 16,
|
||||||
|
"last_link_id": 25,
|
||||||
|
"nodes": [
|
||||||
|
{
|
||||||
|
"id": 7,
|
||||||
|
"type": "CLIPTextEncode",
|
||||||
|
"pos": [
|
||||||
|
690,
|
||||||
|
840
|
||||||
|
],
|
||||||
|
"size": {
|
||||||
|
"0": 425.27801513671875,
|
||||||
|
"1": 180.6060791015625
|
||||||
|
},
|
||||||
|
"flags": {},
|
||||||
|
"order": 6,
|
||||||
|
"mode": 0,
|
||||||
|
"inputs": [
|
||||||
|
{
|
||||||
|
"name": "clip",
|
||||||
|
"type": "CLIP",
|
||||||
|
"link": 5
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"outputs": [
|
||||||
|
{
|
||||||
|
"name": "CONDITIONING",
|
||||||
|
"type": "CONDITIONING",
|
||||||
|
"links": [
|
||||||
|
6
|
||||||
|
],
|
||||||
|
"slot_index": 0
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"properties": {
|
||||||
|
"Node name for S&R": "CLIPTextEncode"
|
||||||
|
},
|
||||||
|
"widgets_values": [
|
||||||
|
"blurry, noisy, messy, lowres, jpeg, artifacts, ill, distorted, malformed"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 11,
|
||||||
|
"type": "IPAdapterUnifiedLoader",
|
||||||
|
"pos": [
|
||||||
|
335,
|
||||||
|
430
|
||||||
|
],
|
||||||
|
"size": {
|
||||||
|
"0": 315,
|
||||||
|
"1": 78
|
||||||
|
},
|
||||||
|
"flags": {},
|
||||||
|
"order": 4,
|
||||||
|
"mode": 0,
|
||||||
|
"inputs": [
|
||||||
|
{
|
||||||
|
"name": "model",
|
||||||
|
"type": "MODEL",
|
||||||
|
"link": 10
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "ipadapter",
|
||||||
|
"type": "IPADAPTER",
|
||||||
|
"link": null
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"outputs": [
|
||||||
|
{
|
||||||
|
"name": "model",
|
||||||
|
"type": "MODEL",
|
||||||
|
"links": [
|
||||||
|
21
|
||||||
|
],
|
||||||
|
"shape": 3,
|
||||||
|
"slot_index": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "ipadapter",
|
||||||
|
"type": "IPADAPTER",
|
||||||
|
"links": [
|
||||||
|
22
|
||||||
|
],
|
||||||
|
"shape": 3,
|
||||||
|
"slot_index": 1
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"properties": {
|
||||||
|
"Node name for S&R": "IPAdapterUnifiedLoader"
|
||||||
|
},
|
||||||
|
"widgets_values": [
|
||||||
|
"PLUS (high strength)"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 12,
|
||||||
|
"type": "LoadImage",
|
||||||
|
"pos": [
|
||||||
|
-102,
|
||||||
|
-46
|
||||||
|
],
|
||||||
|
"size": {
|
||||||
|
"0": 315,
|
||||||
|
"1": 314
|
||||||
|
},
|
||||||
|
"flags": {},
|
||||||
|
"order": 0,
|
||||||
|
"mode": 0,
|
||||||
|
"outputs": [
|
||||||
|
{
|
||||||
|
"name": "IMAGE",
|
||||||
|
"type": "IMAGE",
|
||||||
|
"links": [
|
||||||
|
25
|
||||||
|
],
|
||||||
|
"shape": 3,
|
||||||
|
"slot_index": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "MASK",
|
||||||
|
"type": "MASK",
|
||||||
|
"links": null,
|
||||||
|
"shape": 3
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"properties": {
|
||||||
|
"Node name for S&R": "LoadImage"
|
||||||
|
},
|
||||||
|
"widgets_values": [
|
||||||
|
"black_car.jpg",
|
||||||
|
"image"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 16,
|
||||||
|
"type": "LoadImage",
|
||||||
|
"pos": [
|
||||||
|
310,
|
||||||
|
-40
|
||||||
|
],
|
||||||
|
"size": {
|
||||||
|
"0": 315,
|
||||||
|
"1": 314
|
||||||
|
},
|
||||||
|
"flags": {},
|
||||||
|
"order": 1,
|
||||||
|
"mode": 0,
|
||||||
|
"outputs": [
|
||||||
|
{
|
||||||
|
"name": "IMAGE",
|
||||||
|
"type": "IMAGE",
|
||||||
|
"links": [
|
||||||
|
24
|
||||||
|
],
|
||||||
|
"shape": 3,
|
||||||
|
"slot_index": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "MASK",
|
||||||
|
"type": "MASK",
|
||||||
|
"links": null,
|
||||||
|
"shape": 3
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"properties": {
|
||||||
|
"Node name for S&R": "LoadImage"
|
||||||
|
},
|
||||||
|
"widgets_values": [
|
||||||
|
"bw_texture_waves.jpg",
|
||||||
|
"image"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 5,
|
||||||
|
"type": "EmptyLatentImage",
|
||||||
|
"pos": [
|
||||||
|
801,
|
||||||
|
1097
|
||||||
|
],
|
||||||
|
"size": {
|
||||||
|
"0": 315,
|
||||||
|
"1": 106
|
||||||
|
},
|
||||||
|
"flags": {},
|
||||||
|
"order": 2,
|
||||||
|
"mode": 0,
|
||||||
|
"outputs": [
|
||||||
|
{
|
||||||
|
"name": "LATENT",
|
||||||
|
"type": "LATENT",
|
||||||
|
"links": [
|
||||||
|
2
|
||||||
|
],
|
||||||
|
"slot_index": 0
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"properties": {
|
||||||
|
"Node name for S&R": "EmptyLatentImage"
|
||||||
|
},
|
||||||
|
"widgets_values": [
|
||||||
|
1024,
|
||||||
|
1024,
|
||||||
|
1
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 6,
|
||||||
|
"type": "CLIPTextEncode",
|
||||||
|
"pos": [
|
||||||
|
690,
|
||||||
|
610
|
||||||
|
],
|
||||||
|
"size": {
|
||||||
|
"0": 422.84503173828125,
|
||||||
|
"1": 164.31304931640625
|
||||||
|
},
|
||||||
|
"flags": {},
|
||||||
|
"order": 5,
|
||||||
|
"mode": 0,
|
||||||
|
"inputs": [
|
||||||
|
{
|
||||||
|
"name": "clip",
|
||||||
|
"type": "CLIP",
|
||||||
|
"link": 3
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"outputs": [
|
||||||
|
{
|
||||||
|
"name": "CONDITIONING",
|
||||||
|
"type": "CONDITIONING",
|
||||||
|
"links": [
|
||||||
|
4
|
||||||
|
],
|
||||||
|
"slot_index": 0
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"properties": {
|
||||||
|
"Node name for S&R": "CLIPTextEncode"
|
||||||
|
},
|
||||||
|
"widgets_values": [
|
||||||
|
"sports car running fast on the highway\n\nhigh quality, detailed"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 15,
|
||||||
|
"type": "IPAdapterStyleComposition",
|
||||||
|
"pos": [
|
||||||
|
772,
|
||||||
|
219
|
||||||
|
],
|
||||||
|
"size": {
|
||||||
|
"0": 315,
|
||||||
|
"1": 322
|
||||||
|
},
|
||||||
|
"flags": {},
|
||||||
|
"order": 7,
|
||||||
|
"mode": 0,
|
||||||
|
"inputs": [
|
||||||
|
{
|
||||||
|
"name": "model",
|
||||||
|
"type": "MODEL",
|
||||||
|
"link": 21
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "ipadapter",
|
||||||
|
"type": "IPADAPTER",
|
||||||
|
"link": 22
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "image_style",
|
||||||
|
"type": "IMAGE",
|
||||||
|
"link": 24
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "image_composition",
|
||||||
|
"type": "IMAGE",
|
||||||
|
"link": 25
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "image_negative",
|
||||||
|
"type": "IMAGE",
|
||||||
|
"link": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "attn_mask",
|
||||||
|
"type": "MASK",
|
||||||
|
"link": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "clip_vision",
|
||||||
|
"type": "CLIP_VISION",
|
||||||
|
"link": null
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"outputs": [
|
||||||
|
{
|
||||||
|
"name": "MODEL",
|
||||||
|
"type": "MODEL",
|
||||||
|
"links": [
|
||||||
|
23
|
||||||
|
],
|
||||||
|
"shape": 3,
|
||||||
|
"slot_index": 0
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"properties": {
|
||||||
|
"Node name for S&R": "IPAdapterStyleComposition"
|
||||||
|
},
|
||||||
|
"widgets_values": [
|
||||||
|
1.2,
|
||||||
|
1,
|
||||||
|
false,
|
||||||
|
"average",
|
||||||
|
0,
|
||||||
|
1,
|
||||||
|
"V only"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 3,
|
||||||
|
"type": "KSampler",
|
||||||
|
"pos": [
|
||||||
|
1247,
|
||||||
|
586
|
||||||
|
],
|
||||||
|
"size": {
|
||||||
|
"0": 315,
|
||||||
|
"1": 262
|
||||||
|
},
|
||||||
|
"flags": {},
|
||||||
|
"order": 8,
|
||||||
|
"mode": 0,
|
||||||
|
"inputs": [
|
||||||
|
{
|
||||||
|
"name": "model",
|
||||||
|
"type": "MODEL",
|
||||||
|
"link": 23
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "positive",
|
||||||
|
"type": "CONDITIONING",
|
||||||
|
"link": 4
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "negative",
|
||||||
|
"type": "CONDITIONING",
|
||||||
|
"link": 6
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "latent_image",
|
||||||
|
"type": "LATENT",
|
||||||
|
"link": 2
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"outputs": [
|
||||||
|
{
|
||||||
|
"name": "LATENT",
|
||||||
|
"type": "LATENT",
|
||||||
|
"links": [
|
||||||
|
7
|
||||||
|
],
|
||||||
|
"slot_index": 0
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"properties": {
|
||||||
|
"Node name for S&R": "KSampler"
|
||||||
|
},
|
||||||
|
"widgets_values": [
|
||||||
|
0,
|
||||||
|
"fixed",
|
||||||
|
30,
|
||||||
|
6.5,
|
||||||
|
"dpmpp_2m",
|
||||||
|
"karras",
|
||||||
|
1
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 8,
|
||||||
|
"type": "VAEDecode",
|
||||||
|
"pos": [
|
||||||
|
1615,
|
||||||
|
586
|
||||||
|
],
|
||||||
|
"size": {
|
||||||
|
"0": 140,
|
||||||
|
"1": 46
|
||||||
|
},
|
||||||
|
"flags": {},
|
||||||
|
"order": 9,
|
||||||
|
"mode": 0,
|
||||||
|
"inputs": [
|
||||||
|
{
|
||||||
|
"name": "samples",
|
||||||
|
"type": "LATENT",
|
||||||
|
"link": 7
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "vae",
|
||||||
|
"type": "VAE",
|
||||||
|
"link": 8
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"outputs": [
|
||||||
|
{
|
||||||
|
"name": "IMAGE",
|
||||||
|
"type": "IMAGE",
|
||||||
|
"links": [
|
||||||
|
9
|
||||||
|
],
|
||||||
|
"slot_index": 0
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"properties": {
|
||||||
|
"Node name for S&R": "VAEDecode"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 9,
|
||||||
|
"type": "SaveImage",
|
||||||
|
"pos": [
|
||||||
|
1822,
|
||||||
|
588
|
||||||
|
],
|
||||||
|
"size": [
|
||||||
|
691.0159878487498,
|
||||||
|
716.6239849908982
|
||||||
|
],
|
||||||
|
"flags": {},
|
||||||
|
"order": 10,
|
||||||
|
"mode": 0,
|
||||||
|
"inputs": [
|
||||||
|
{
|
||||||
|
"name": "images",
|
||||||
|
"type": "IMAGE",
|
||||||
|
"link": 9
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"properties": {},
|
||||||
|
"widgets_values": [
|
||||||
|
"IPAdapter"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 4,
|
||||||
|
"type": "CheckpointLoaderSimple",
|
||||||
|
"pos": [
|
||||||
|
-72,
|
||||||
|
657
|
||||||
|
],
|
||||||
|
"size": {
|
||||||
|
"0": 315,
|
||||||
|
"1": 98
|
||||||
|
},
|
||||||
|
"flags": {},
|
||||||
|
"order": 3,
|
||||||
|
"mode": 0,
|
||||||
|
"outputs": [
|
||||||
|
{
|
||||||
|
"name": "MODEL",
|
||||||
|
"type": "MODEL",
|
||||||
|
"links": [
|
||||||
|
10
|
||||||
|
],
|
||||||
|
"slot_index": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "CLIP",
|
||||||
|
"type": "CLIP",
|
||||||
|
"links": [
|
||||||
|
3,
|
||||||
|
5
|
||||||
|
],
|
||||||
|
"slot_index": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "VAE",
|
||||||
|
"type": "VAE",
|
||||||
|
"links": [
|
||||||
|
8
|
||||||
|
],
|
||||||
|
"slot_index": 2
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"properties": {
|
||||||
|
"Node name for S&R": "CheckpointLoaderSimple"
|
||||||
|
},
|
||||||
|
"widgets_values": [
|
||||||
|
"sdxl/AlbedoBaseXL.safetensors"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"links": [
|
||||||
|
[
|
||||||
|
2,
|
||||||
|
5,
|
||||||
|
0,
|
||||||
|
3,
|
||||||
|
3,
|
||||||
|
"LATENT"
|
||||||
|
],
|
||||||
|
[
|
||||||
|
3,
|
||||||
|
4,
|
||||||
|
1,
|
||||||
|
6,
|
||||||
|
0,
|
||||||
|
"CLIP"
|
||||||
|
],
|
||||||
|
[
|
||||||
|
4,
|
||||||
|
6,
|
||||||
|
0,
|
||||||
|
3,
|
||||||
|
1,
|
||||||
|
"CONDITIONING"
|
||||||
|
],
|
||||||
|
[
|
||||||
|
5,
|
||||||
|
4,
|
||||||
|
1,
|
||||||
|
7,
|
||||||
|
0,
|
||||||
|
"CLIP"
|
||||||
|
],
|
||||||
|
[
|
||||||
|
6,
|
||||||
|
7,
|
||||||
|
0,
|
||||||
|
3,
|
||||||
|
2,
|
||||||
|
"CONDITIONING"
|
||||||
|
],
|
||||||
|
[
|
||||||
|
7,
|
||||||
|
3,
|
||||||
|
0,
|
||||||
|
8,
|
||||||
|
0,
|
||||||
|
"LATENT"
|
||||||
|
],
|
||||||
|
[
|
||||||
|
8,
|
||||||
|
4,
|
||||||
|
2,
|
||||||
|
8,
|
||||||
|
1,
|
||||||
|
"VAE"
|
||||||
|
],
|
||||||
|
[
|
||||||
|
9,
|
||||||
|
8,
|
||||||
|
0,
|
||||||
|
9,
|
||||||
|
0,
|
||||||
|
"IMAGE"
|
||||||
|
],
|
||||||
|
[
|
||||||
|
10,
|
||||||
|
4,
|
||||||
|
0,
|
||||||
|
11,
|
||||||
|
0,
|
||||||
|
"MODEL"
|
||||||
|
],
|
||||||
|
[
|
||||||
|
21,
|
||||||
|
11,
|
||||||
|
0,
|
||||||
|
15,
|
||||||
|
0,
|
||||||
|
"MODEL"
|
||||||
|
],
|
||||||
|
[
|
||||||
|
22,
|
||||||
|
11,
|
||||||
|
1,
|
||||||
|
15,
|
||||||
|
1,
|
||||||
|
"IPADAPTER"
|
||||||
|
],
|
||||||
|
[
|
||||||
|
23,
|
||||||
|
15,
|
||||||
|
0,
|
||||||
|
3,
|
||||||
|
0,
|
||||||
|
"MODEL"
|
||||||
|
],
|
||||||
|
[
|
||||||
|
24,
|
||||||
|
16,
|
||||||
|
0,
|
||||||
|
15,
|
||||||
|
2,
|
||||||
|
"IMAGE"
|
||||||
|
],
|
||||||
|
[
|
||||||
|
25,
|
||||||
|
12,
|
||||||
|
0,
|
||||||
|
15,
|
||||||
|
3,
|
||||||
|
"IMAGE"
|
||||||
|
]
|
||||||
|
],
|
||||||
|
"groups": [],
|
||||||
|
"config": {},
|
||||||
|
"extra": {},
|
||||||
|
"version": 0.4
|
||||||
|
}
|
||||||
@@ -205,38 +205,6 @@
|
|||||||
"in a peaceful spring morning a woman wearing a white shirt is sitting in a park on a bench\n\nhigh quality, detailed, diffuse light"
|
"in a peaceful spring morning a woman wearing a white shirt is sitting in a park on a bench\n\nhigh quality, detailed, diffuse light"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"id": 16,
|
|
||||||
"type": "CLIPVisionLoader",
|
|
||||||
"pos": [
|
|
||||||
250,
|
|
||||||
180
|
|
||||||
],
|
|
||||||
"size": {
|
|
||||||
"0": 315,
|
|
||||||
"1": 58
|
|
||||||
},
|
|
||||||
"flags": {},
|
|
||||||
"order": 2,
|
|
||||||
"mode": 0,
|
|
||||||
"outputs": [
|
|
||||||
{
|
|
||||||
"name": "CLIP_VISION",
|
|
||||||
"type": "CLIP_VISION",
|
|
||||||
"links": [
|
|
||||||
32
|
|
||||||
],
|
|
||||||
"shape": 3,
|
|
||||||
"slot_index": 0
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"properties": {
|
|
||||||
"Node name for S&R": "CLIPVisionLoader"
|
|
||||||
},
|
|
||||||
"widgets_values": [
|
|
||||||
"IPAdapter_image_encoder_sd15.safetensors"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"id": 5,
|
"id": 5,
|
||||||
"type": "EmptyLatentImage",
|
"type": "EmptyLatentImage",
|
||||||
@@ -249,7 +217,7 @@
|
|||||||
"1": 106
|
"1": 106
|
||||||
},
|
},
|
||||||
"flags": {},
|
"flags": {},
|
||||||
"order": 3,
|
"order": 2,
|
||||||
"mode": 0,
|
"mode": 0,
|
||||||
"outputs": [
|
"outputs": [
|
||||||
{
|
{
|
||||||
@@ -329,38 +297,6 @@
|
|||||||
1
|
1
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"id": 15,
|
|
||||||
"type": "IPAdapterModelLoader",
|
|
||||||
"pos": [
|
|
||||||
250,
|
|
||||||
70
|
|
||||||
],
|
|
||||||
"size": {
|
|
||||||
"0": 315,
|
|
||||||
"1": 58
|
|
||||||
},
|
|
||||||
"flags": {},
|
|
||||||
"order": 4,
|
|
||||||
"mode": 0,
|
|
||||||
"outputs": [
|
|
||||||
{
|
|
||||||
"name": "IPADAPTER",
|
|
||||||
"type": "IPADAPTER",
|
|
||||||
"links": [
|
|
||||||
31
|
|
||||||
],
|
|
||||||
"shape": 3,
|
|
||||||
"slot_index": 0
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"properties": {
|
|
||||||
"Node name for S&R": "IPAdapterModelLoader"
|
|
||||||
},
|
|
||||||
"widgets_values": [
|
|
||||||
"ip-adapter-plus_sd15.safetensors"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"id": 18,
|
"id": 18,
|
||||||
"type": "IPAdapterTiled",
|
"type": "IPAdapterTiled",
|
||||||
@@ -370,7 +306,7 @@
|
|||||||
],
|
],
|
||||||
"size": {
|
"size": {
|
||||||
"0": 315,
|
"0": 315,
|
||||||
"1": 278
|
"1": 302
|
||||||
},
|
},
|
||||||
"flags": {},
|
"flags": {},
|
||||||
"order": 7,
|
"order": 7,
|
||||||
@@ -439,7 +375,8 @@
|
|||||||
"concat",
|
"concat",
|
||||||
0,
|
0,
|
||||||
1,
|
1,
|
||||||
0
|
0,
|
||||||
|
"V only"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -467,6 +404,70 @@
|
|||||||
"widgets_values": [
|
"widgets_values": [
|
||||||
"IPAdapter"
|
"IPAdapter"
|
||||||
]
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 15,
|
||||||
|
"type": "IPAdapterModelLoader",
|
||||||
|
"pos": [
|
||||||
|
250,
|
||||||
|
70
|
||||||
|
],
|
||||||
|
"size": {
|
||||||
|
"0": 315,
|
||||||
|
"1": 58
|
||||||
|
},
|
||||||
|
"flags": {},
|
||||||
|
"order": 3,
|
||||||
|
"mode": 0,
|
||||||
|
"outputs": [
|
||||||
|
{
|
||||||
|
"name": "IPADAPTER",
|
||||||
|
"type": "IPADAPTER",
|
||||||
|
"links": [
|
||||||
|
31
|
||||||
|
],
|
||||||
|
"shape": 3,
|
||||||
|
"slot_index": 0
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"properties": {
|
||||||
|
"Node name for S&R": "IPAdapterModelLoader"
|
||||||
|
},
|
||||||
|
"widgets_values": [
|
||||||
|
"ip-adapter-plus_sd15.safetensors"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 16,
|
||||||
|
"type": "CLIPVisionLoader",
|
||||||
|
"pos": [
|
||||||
|
250,
|
||||||
|
180
|
||||||
|
],
|
||||||
|
"size": {
|
||||||
|
"0": 315,
|
||||||
|
"1": 58
|
||||||
|
},
|
||||||
|
"flags": {},
|
||||||
|
"order": 4,
|
||||||
|
"mode": 0,
|
||||||
|
"outputs": [
|
||||||
|
{
|
||||||
|
"name": "CLIP_VISION",
|
||||||
|
"type": "CLIP_VISION",
|
||||||
|
"links": [
|
||||||
|
32
|
||||||
|
],
|
||||||
|
"shape": 3,
|
||||||
|
"slot_index": 0
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"properties": {
|
||||||
|
"Node name for S&R": "CLIPVisionLoader"
|
||||||
|
},
|
||||||
|
"widgets_values": [
|
||||||
|
"CLIP-ViT-H-14-laion2B-s32B-b79K.safetensors"
|
||||||
|
]
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"links": [
|
"links": [
|
||||||
|
|||||||
@@ -137,76 +137,6 @@
|
|||||||
1
|
1
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"id": 16,
|
|
||||||
"type": "CLIPVisionLoader",
|
|
||||||
"pos": [
|
|
||||||
308,
|
|
||||||
161
|
|
||||||
],
|
|
||||||
"size": {
|
|
||||||
"0": 315,
|
|
||||||
"1": 58
|
|
||||||
},
|
|
||||||
"flags": {},
|
|
||||||
"order": 2,
|
|
||||||
"mode": 0,
|
|
||||||
"outputs": [
|
|
||||||
{
|
|
||||||
"name": "CLIP_VISION",
|
|
||||||
"type": "CLIP_VISION",
|
|
||||||
"links": [
|
|
||||||
24,
|
|
||||||
38,
|
|
||||||
49,
|
|
||||||
60,
|
|
||||||
71
|
|
||||||
],
|
|
||||||
"shape": 3
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"properties": {
|
|
||||||
"Node name for S&R": "CLIPVisionLoader"
|
|
||||||
},
|
|
||||||
"widgets_values": [
|
|
||||||
"IPAdapter_image_encoder_sd15.safetensors"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": 15,
|
|
||||||
"type": "IPAdapterModelLoader",
|
|
||||||
"pos": [
|
|
||||||
308,
|
|
||||||
52
|
|
||||||
],
|
|
||||||
"size": {
|
|
||||||
"0": 315,
|
|
||||||
"1": 58
|
|
||||||
},
|
|
||||||
"flags": {},
|
|
||||||
"order": 3,
|
|
||||||
"mode": 0,
|
|
||||||
"outputs": [
|
|
||||||
{
|
|
||||||
"name": "IPADAPTER",
|
|
||||||
"type": "IPADAPTER",
|
|
||||||
"links": [
|
|
||||||
21,
|
|
||||||
36,
|
|
||||||
47,
|
|
||||||
58,
|
|
||||||
69
|
|
||||||
],
|
|
||||||
"shape": 3
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"properties": {
|
|
||||||
"Node name for S&R": "IPAdapterModelLoader"
|
|
||||||
},
|
|
||||||
"widgets_values": [
|
|
||||||
"ip-adapter-plus_sd15.safetensors"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"id": 12,
|
"id": 12,
|
||||||
"type": "LoadImage",
|
"type": "LoadImage",
|
||||||
@@ -219,7 +149,7 @@
|
|||||||
"1": 314
|
"1": 314
|
||||||
},
|
},
|
||||||
"flags": {},
|
"flags": {},
|
||||||
"order": 4,
|
"order": 2,
|
||||||
"mode": 0,
|
"mode": 0,
|
||||||
"outputs": [
|
"outputs": [
|
||||||
{
|
{
|
||||||
@@ -509,7 +439,7 @@
|
|||||||
],
|
],
|
||||||
"size": {
|
"size": {
|
||||||
"0": 315,
|
"0": 315,
|
||||||
"1": 254
|
"1": 278
|
||||||
},
|
},
|
||||||
"flags": {},
|
"flags": {},
|
||||||
"order": 7,
|
"order": 7,
|
||||||
@@ -567,7 +497,8 @@
|
|||||||
"linear",
|
"linear",
|
||||||
"concat",
|
"concat",
|
||||||
0,
|
0,
|
||||||
1
|
1,
|
||||||
|
"V only"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -579,7 +510,7 @@
|
|||||||
],
|
],
|
||||||
"size": {
|
"size": {
|
||||||
"0": 315,
|
"0": 315,
|
||||||
"1": 254
|
"1": 278
|
||||||
},
|
},
|
||||||
"flags": {},
|
"flags": {},
|
||||||
"order": 8,
|
"order": 8,
|
||||||
@@ -637,7 +568,8 @@
|
|||||||
"ease in",
|
"ease in",
|
||||||
"concat",
|
"concat",
|
||||||
0,
|
0,
|
||||||
1
|
1,
|
||||||
|
"V only"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -748,7 +680,7 @@
|
|||||||
],
|
],
|
||||||
"size": {
|
"size": {
|
||||||
"0": 315,
|
"0": 315,
|
||||||
"1": 254
|
"1": 278
|
||||||
},
|
},
|
||||||
"flags": {},
|
"flags": {},
|
||||||
"order": 9,
|
"order": 9,
|
||||||
@@ -806,7 +738,8 @@
|
|||||||
"ease out",
|
"ease out",
|
||||||
"concat",
|
"concat",
|
||||||
0,
|
0,
|
||||||
1
|
1,
|
||||||
|
"V only"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -1094,7 +1027,7 @@
|
|||||||
],
|
],
|
||||||
"size": {
|
"size": {
|
||||||
"0": 315,
|
"0": 315,
|
||||||
"1": 254
|
"1": 278
|
||||||
},
|
},
|
||||||
"flags": {},
|
"flags": {},
|
||||||
"order": 10,
|
"order": 10,
|
||||||
@@ -1152,7 +1085,8 @@
|
|||||||
"ease in-out",
|
"ease in-out",
|
||||||
"concat",
|
"concat",
|
||||||
0,
|
0,
|
||||||
1
|
1,
|
||||||
|
"V only"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -1164,7 +1098,7 @@
|
|||||||
],
|
],
|
||||||
"size": {
|
"size": {
|
||||||
"0": 315,
|
"0": 315,
|
||||||
"1": 254
|
"1": 278
|
||||||
},
|
},
|
||||||
"flags": {},
|
"flags": {},
|
||||||
"order": 11,
|
"order": 11,
|
||||||
@@ -1222,7 +1156,8 @@
|
|||||||
"reverse in-out",
|
"reverse in-out",
|
||||||
"concat",
|
"concat",
|
||||||
0,
|
0,
|
||||||
1
|
1,
|
||||||
|
"V only"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -1266,6 +1201,76 @@
|
|||||||
"widgets_values": [
|
"widgets_values": [
|
||||||
"closeup of a fierce warrior woman wearing a full armor at the end of a battle. cherry blossoms\n\nhigh quality, detailed"
|
"closeup of a fierce warrior woman wearing a full armor at the end of a battle. cherry blossoms\n\nhigh quality, detailed"
|
||||||
]
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 15,
|
||||||
|
"type": "IPAdapterModelLoader",
|
||||||
|
"pos": [
|
||||||
|
308,
|
||||||
|
52
|
||||||
|
],
|
||||||
|
"size": {
|
||||||
|
"0": 315,
|
||||||
|
"1": 58
|
||||||
|
},
|
||||||
|
"flags": {},
|
||||||
|
"order": 3,
|
||||||
|
"mode": 0,
|
||||||
|
"outputs": [
|
||||||
|
{
|
||||||
|
"name": "IPADAPTER",
|
||||||
|
"type": "IPADAPTER",
|
||||||
|
"links": [
|
||||||
|
21,
|
||||||
|
36,
|
||||||
|
47,
|
||||||
|
58,
|
||||||
|
69
|
||||||
|
],
|
||||||
|
"shape": 3
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"properties": {
|
||||||
|
"Node name for S&R": "IPAdapterModelLoader"
|
||||||
|
},
|
||||||
|
"widgets_values": [
|
||||||
|
"ip-adapter-plus_sd15.safetensors"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 16,
|
||||||
|
"type": "CLIPVisionLoader",
|
||||||
|
"pos": [
|
||||||
|
308,
|
||||||
|
161
|
||||||
|
],
|
||||||
|
"size": {
|
||||||
|
"0": 315,
|
||||||
|
"1": 58
|
||||||
|
},
|
||||||
|
"flags": {},
|
||||||
|
"order": 4,
|
||||||
|
"mode": 0,
|
||||||
|
"outputs": [
|
||||||
|
{
|
||||||
|
"name": "CLIP_VISION",
|
||||||
|
"type": "CLIP_VISION",
|
||||||
|
"links": [
|
||||||
|
24,
|
||||||
|
38,
|
||||||
|
49,
|
||||||
|
60,
|
||||||
|
71
|
||||||
|
],
|
||||||
|
"shape": 3
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"properties": {
|
||||||
|
"Node name for S&R": "CLIPVisionLoader"
|
||||||
|
},
|
||||||
|
"widgets_values": [
|
||||||
|
"CLIP-ViT-H-14-laion2B-s32B-b79K.safetensors"
|
||||||
|
]
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"links": [
|
"links": [
|
||||||
|
|||||||
@@ -0,0 +1,733 @@
|
|||||||
|
{
|
||||||
|
"last_node_id": 21,
|
||||||
|
"last_link_id": 37,
|
||||||
|
"nodes": [
|
||||||
|
{
|
||||||
|
"id": 7,
|
||||||
|
"type": "CLIPTextEncode",
|
||||||
|
"pos": [
|
||||||
|
690,
|
||||||
|
840
|
||||||
|
],
|
||||||
|
"size": {
|
||||||
|
"0": 425.27801513671875,
|
||||||
|
"1": 180.6060791015625
|
||||||
|
},
|
||||||
|
"flags": {},
|
||||||
|
"order": 8,
|
||||||
|
"mode": 0,
|
||||||
|
"inputs": [
|
||||||
|
{
|
||||||
|
"name": "clip",
|
||||||
|
"type": "CLIP",
|
||||||
|
"link": 5
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"outputs": [
|
||||||
|
{
|
||||||
|
"name": "CONDITIONING",
|
||||||
|
"type": "CONDITIONING",
|
||||||
|
"links": [
|
||||||
|
6
|
||||||
|
],
|
||||||
|
"slot_index": 0
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"properties": {
|
||||||
|
"Node name for S&R": "CLIPTextEncode"
|
||||||
|
},
|
||||||
|
"widgets_values": [
|
||||||
|
"blurry, noisy, messy, lowres, jpeg, artifacts, ill, distorted, malformed"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 8,
|
||||||
|
"type": "VAEDecode",
|
||||||
|
"pos": [
|
||||||
|
1570,
|
||||||
|
700
|
||||||
|
],
|
||||||
|
"size": {
|
||||||
|
"0": 140,
|
||||||
|
"1": 46
|
||||||
|
},
|
||||||
|
"flags": {},
|
||||||
|
"order": 11,
|
||||||
|
"mode": 0,
|
||||||
|
"inputs": [
|
||||||
|
{
|
||||||
|
"name": "samples",
|
||||||
|
"type": "LATENT",
|
||||||
|
"link": 7
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "vae",
|
||||||
|
"type": "VAE",
|
||||||
|
"link": 8
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"outputs": [
|
||||||
|
{
|
||||||
|
"name": "IMAGE",
|
||||||
|
"type": "IMAGE",
|
||||||
|
"links": [
|
||||||
|
9
|
||||||
|
],
|
||||||
|
"slot_index": 0
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"properties": {
|
||||||
|
"Node name for S&R": "VAEDecode"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 5,
|
||||||
|
"type": "EmptyLatentImage",
|
||||||
|
"pos": [
|
||||||
|
801,
|
||||||
|
1097
|
||||||
|
],
|
||||||
|
"size": [
|
||||||
|
315,
|
||||||
|
106
|
||||||
|
],
|
||||||
|
"flags": {},
|
||||||
|
"order": 5,
|
||||||
|
"mode": 0,
|
||||||
|
"inputs": [
|
||||||
|
{
|
||||||
|
"name": "batch_size",
|
||||||
|
"type": "INT",
|
||||||
|
"link": 35,
|
||||||
|
"widget": {
|
||||||
|
"name": "batch_size"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"outputs": [
|
||||||
|
{
|
||||||
|
"name": "LATENT",
|
||||||
|
"type": "LATENT",
|
||||||
|
"links": [
|
||||||
|
2
|
||||||
|
],
|
||||||
|
"slot_index": 0
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"properties": {
|
||||||
|
"Node name for S&R": "EmptyLatentImage"
|
||||||
|
},
|
||||||
|
"widgets_values": [
|
||||||
|
512,
|
||||||
|
512,
|
||||||
|
6
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 6,
|
||||||
|
"type": "CLIPTextEncode",
|
||||||
|
"pos": [
|
||||||
|
690,
|
||||||
|
610
|
||||||
|
],
|
||||||
|
"size": {
|
||||||
|
"0": 422.84503173828125,
|
||||||
|
"1": 164.31304931640625
|
||||||
|
},
|
||||||
|
"flags": {},
|
||||||
|
"order": 7,
|
||||||
|
"mode": 0,
|
||||||
|
"inputs": [
|
||||||
|
{
|
||||||
|
"name": "clip",
|
||||||
|
"type": "CLIP",
|
||||||
|
"link": 3
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"outputs": [
|
||||||
|
{
|
||||||
|
"name": "CONDITIONING",
|
||||||
|
"type": "CONDITIONING",
|
||||||
|
"links": [
|
||||||
|
4
|
||||||
|
],
|
||||||
|
"slot_index": 0
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"properties": {
|
||||||
|
"Node name for S&R": "CLIPTextEncode"
|
||||||
|
},
|
||||||
|
"widgets_values": [
|
||||||
|
"in a peaceful spring morning a woman wearing a white shirt is sitting in a park on a bench\n\nhigh quality, detailed, diffuse light"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 3,
|
||||||
|
"type": "KSampler",
|
||||||
|
"pos": [
|
||||||
|
1210,
|
||||||
|
700
|
||||||
|
],
|
||||||
|
"size": {
|
||||||
|
"0": 315,
|
||||||
|
"1": 262
|
||||||
|
},
|
||||||
|
"flags": {},
|
||||||
|
"order": 10,
|
||||||
|
"mode": 0,
|
||||||
|
"inputs": [
|
||||||
|
{
|
||||||
|
"name": "model",
|
||||||
|
"type": "MODEL",
|
||||||
|
"link": 31
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "positive",
|
||||||
|
"type": "CONDITIONING",
|
||||||
|
"link": 4
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "negative",
|
||||||
|
"type": "CONDITIONING",
|
||||||
|
"link": 6
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "latent_image",
|
||||||
|
"type": "LATENT",
|
||||||
|
"link": 2
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"outputs": [
|
||||||
|
{
|
||||||
|
"name": "LATENT",
|
||||||
|
"type": "LATENT",
|
||||||
|
"links": [
|
||||||
|
7
|
||||||
|
],
|
||||||
|
"slot_index": 0
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"properties": {
|
||||||
|
"Node name for S&R": "KSampler"
|
||||||
|
},
|
||||||
|
"widgets_values": [
|
||||||
|
0,
|
||||||
|
"fixed",
|
||||||
|
30,
|
||||||
|
6.5,
|
||||||
|
"ddpm",
|
||||||
|
"karras",
|
||||||
|
1
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 12,
|
||||||
|
"type": "LoadImage",
|
||||||
|
"pos": [
|
||||||
|
311,
|
||||||
|
270
|
||||||
|
],
|
||||||
|
"size": {
|
||||||
|
"0": 315,
|
||||||
|
"1": 314
|
||||||
|
},
|
||||||
|
"flags": {},
|
||||||
|
"order": 0,
|
||||||
|
"mode": 0,
|
||||||
|
"outputs": [
|
||||||
|
{
|
||||||
|
"name": "IMAGE",
|
||||||
|
"type": "IMAGE",
|
||||||
|
"links": [
|
||||||
|
25
|
||||||
|
],
|
||||||
|
"shape": 3,
|
||||||
|
"slot_index": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "MASK",
|
||||||
|
"type": "MASK",
|
||||||
|
"links": null,
|
||||||
|
"shape": 3
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"properties": {
|
||||||
|
"Node name for S&R": "LoadImage"
|
||||||
|
},
|
||||||
|
"widgets_values": [
|
||||||
|
"warrior_woman.png",
|
||||||
|
"image"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 17,
|
||||||
|
"type": "PrepImageForClipVision",
|
||||||
|
"pos": [
|
||||||
|
797,
|
||||||
|
87
|
||||||
|
],
|
||||||
|
"size": {
|
||||||
|
"0": 315,
|
||||||
|
"1": 106
|
||||||
|
},
|
||||||
|
"flags": {},
|
||||||
|
"order": 3,
|
||||||
|
"mode": 0,
|
||||||
|
"inputs": [
|
||||||
|
{
|
||||||
|
"name": "image",
|
||||||
|
"type": "IMAGE",
|
||||||
|
"link": 25
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"outputs": [
|
||||||
|
{
|
||||||
|
"name": "IMAGE",
|
||||||
|
"type": "IMAGE",
|
||||||
|
"links": [
|
||||||
|
30
|
||||||
|
],
|
||||||
|
"shape": 3,
|
||||||
|
"slot_index": 0
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"properties": {
|
||||||
|
"Node name for S&R": "PrepImageForClipVision"
|
||||||
|
},
|
||||||
|
"widgets_values": [
|
||||||
|
"LANCZOS",
|
||||||
|
"top",
|
||||||
|
0.15
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 20,
|
||||||
|
"type": "IPAdapterWeights",
|
||||||
|
"pos": [
|
||||||
|
757,
|
||||||
|
318
|
||||||
|
],
|
||||||
|
"size": [
|
||||||
|
263.5047280787487,
|
||||||
|
183.75987616018006
|
||||||
|
],
|
||||||
|
"flags": {},
|
||||||
|
"order": 4,
|
||||||
|
"mode": 0,
|
||||||
|
"inputs": [
|
||||||
|
{
|
||||||
|
"name": "frames",
|
||||||
|
"type": "INT",
|
||||||
|
"link": 34,
|
||||||
|
"widget": {
|
||||||
|
"name": "frames"
|
||||||
|
},
|
||||||
|
"slot_index": 0
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"outputs": [
|
||||||
|
{
|
||||||
|
"name": "FLOAT",
|
||||||
|
"type": "FLOAT",
|
||||||
|
"links": [
|
||||||
|
32
|
||||||
|
],
|
||||||
|
"shape": 3,
|
||||||
|
"slot_index": 0
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"properties": {
|
||||||
|
"Node name for S&R": "IPAdapterWeights"
|
||||||
|
},
|
||||||
|
"widgets_values": [
|
||||||
|
"1.0,0.0",
|
||||||
|
"linear",
|
||||||
|
6,
|
||||||
|
0,
|
||||||
|
9999
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 21,
|
||||||
|
"type": "PrimitiveNode",
|
||||||
|
"pos": [
|
||||||
|
340,
|
||||||
|
1093
|
||||||
|
],
|
||||||
|
"size": {
|
||||||
|
"0": 210,
|
||||||
|
"1": 82
|
||||||
|
},
|
||||||
|
"flags": {},
|
||||||
|
"order": 1,
|
||||||
|
"mode": 0,
|
||||||
|
"outputs": [
|
||||||
|
{
|
||||||
|
"name": "INT",
|
||||||
|
"type": "INT",
|
||||||
|
"links": [
|
||||||
|
34,
|
||||||
|
35
|
||||||
|
],
|
||||||
|
"widget": {
|
||||||
|
"name": "frames"
|
||||||
|
},
|
||||||
|
"slot_index": 0
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"title": "frames",
|
||||||
|
"properties": {
|
||||||
|
"Run widget replace on values": false
|
||||||
|
},
|
||||||
|
"widgets_values": [
|
||||||
|
6,
|
||||||
|
"fixed"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 19,
|
||||||
|
"type": "IPAdapterBatch",
|
||||||
|
"pos": [
|
||||||
|
1173,
|
||||||
|
251
|
||||||
|
],
|
||||||
|
"size": [
|
||||||
|
315,
|
||||||
|
254
|
||||||
|
],
|
||||||
|
"flags": {},
|
||||||
|
"order": 9,
|
||||||
|
"mode": 0,
|
||||||
|
"inputs": [
|
||||||
|
{
|
||||||
|
"name": "model",
|
||||||
|
"type": "MODEL",
|
||||||
|
"link": 37
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "ipadapter",
|
||||||
|
"type": "IPADAPTER",
|
||||||
|
"link": 29
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "image",
|
||||||
|
"type": "IMAGE",
|
||||||
|
"link": 30
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "image_negative",
|
||||||
|
"type": "IMAGE",
|
||||||
|
"link": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "attn_mask",
|
||||||
|
"type": "MASK",
|
||||||
|
"link": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "clip_vision",
|
||||||
|
"type": "CLIP_VISION",
|
||||||
|
"link": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "weight",
|
||||||
|
"type": "FLOAT",
|
||||||
|
"link": 32,
|
||||||
|
"widget": {
|
||||||
|
"name": "weight"
|
||||||
|
},
|
||||||
|
"slot_index": 6
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"outputs": [
|
||||||
|
{
|
||||||
|
"name": "MODEL",
|
||||||
|
"type": "MODEL",
|
||||||
|
"links": [
|
||||||
|
31
|
||||||
|
],
|
||||||
|
"shape": 3,
|
||||||
|
"slot_index": 0
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"properties": {
|
||||||
|
"Node name for S&R": "IPAdapterBatch"
|
||||||
|
},
|
||||||
|
"widgets_values": [
|
||||||
|
1,
|
||||||
|
"linear",
|
||||||
|
0,
|
||||||
|
1,
|
||||||
|
"V only"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 18,
|
||||||
|
"type": "IPAdapterUnifiedLoader",
|
||||||
|
"pos": [
|
||||||
|
303,
|
||||||
|
132
|
||||||
|
],
|
||||||
|
"size": {
|
||||||
|
"0": 315,
|
||||||
|
"1": 78
|
||||||
|
},
|
||||||
|
"flags": {},
|
||||||
|
"order": 6,
|
||||||
|
"mode": 0,
|
||||||
|
"inputs": [
|
||||||
|
{
|
||||||
|
"name": "model",
|
||||||
|
"type": "MODEL",
|
||||||
|
"link": 36
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "ipadapter",
|
||||||
|
"type": "IPADAPTER",
|
||||||
|
"link": null
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"outputs": [
|
||||||
|
{
|
||||||
|
"name": "model",
|
||||||
|
"type": "MODEL",
|
||||||
|
"links": [
|
||||||
|
37
|
||||||
|
],
|
||||||
|
"shape": 3,
|
||||||
|
"slot_index": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "ipadapter",
|
||||||
|
"type": "IPADAPTER",
|
||||||
|
"links": [
|
||||||
|
29
|
||||||
|
],
|
||||||
|
"shape": 3
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"properties": {
|
||||||
|
"Node name for S&R": "IPAdapterUnifiedLoader"
|
||||||
|
},
|
||||||
|
"widgets_values": [
|
||||||
|
"PLUS (high strength)"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 4,
|
||||||
|
"type": "CheckpointLoaderSimple",
|
||||||
|
"pos": [
|
||||||
|
-79,
|
||||||
|
712
|
||||||
|
],
|
||||||
|
"size": {
|
||||||
|
"0": 315,
|
||||||
|
"1": 98
|
||||||
|
},
|
||||||
|
"flags": {},
|
||||||
|
"order": 2,
|
||||||
|
"mode": 0,
|
||||||
|
"outputs": [
|
||||||
|
{
|
||||||
|
"name": "MODEL",
|
||||||
|
"type": "MODEL",
|
||||||
|
"links": [
|
||||||
|
36
|
||||||
|
],
|
||||||
|
"slot_index": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "CLIP",
|
||||||
|
"type": "CLIP",
|
||||||
|
"links": [
|
||||||
|
3,
|
||||||
|
5
|
||||||
|
],
|
||||||
|
"slot_index": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "VAE",
|
||||||
|
"type": "VAE",
|
||||||
|
"links": [
|
||||||
|
8
|
||||||
|
],
|
||||||
|
"slot_index": 2
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"properties": {
|
||||||
|
"Node name for S&R": "CheckpointLoaderSimple"
|
||||||
|
},
|
||||||
|
"widgets_values": [
|
||||||
|
"sd15/realisticVisionV51_v51VAE.safetensors"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 9,
|
||||||
|
"type": "SaveImage",
|
||||||
|
"pos": [
|
||||||
|
1770,
|
||||||
|
710
|
||||||
|
],
|
||||||
|
"size": [
|
||||||
|
556.2374508110479,
|
||||||
|
892.1895739499892
|
||||||
|
],
|
||||||
|
"flags": {},
|
||||||
|
"order": 12,
|
||||||
|
"mode": 0,
|
||||||
|
"inputs": [
|
||||||
|
{
|
||||||
|
"name": "images",
|
||||||
|
"type": "IMAGE",
|
||||||
|
"link": 9
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"properties": {},
|
||||||
|
"widgets_values": [
|
||||||
|
"IPAdapter"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"links": [
|
||||||
|
[
|
||||||
|
2,
|
||||||
|
5,
|
||||||
|
0,
|
||||||
|
3,
|
||||||
|
3,
|
||||||
|
"LATENT"
|
||||||
|
],
|
||||||
|
[
|
||||||
|
3,
|
||||||
|
4,
|
||||||
|
1,
|
||||||
|
6,
|
||||||
|
0,
|
||||||
|
"CLIP"
|
||||||
|
],
|
||||||
|
[
|
||||||
|
4,
|
||||||
|
6,
|
||||||
|
0,
|
||||||
|
3,
|
||||||
|
1,
|
||||||
|
"CONDITIONING"
|
||||||
|
],
|
||||||
|
[
|
||||||
|
5,
|
||||||
|
4,
|
||||||
|
1,
|
||||||
|
7,
|
||||||
|
0,
|
||||||
|
"CLIP"
|
||||||
|
],
|
||||||
|
[
|
||||||
|
6,
|
||||||
|
7,
|
||||||
|
0,
|
||||||
|
3,
|
||||||
|
2,
|
||||||
|
"CONDITIONING"
|
||||||
|
],
|
||||||
|
[
|
||||||
|
7,
|
||||||
|
3,
|
||||||
|
0,
|
||||||
|
8,
|
||||||
|
0,
|
||||||
|
"LATENT"
|
||||||
|
],
|
||||||
|
[
|
||||||
|
8,
|
||||||
|
4,
|
||||||
|
2,
|
||||||
|
8,
|
||||||
|
1,
|
||||||
|
"VAE"
|
||||||
|
],
|
||||||
|
[
|
||||||
|
9,
|
||||||
|
8,
|
||||||
|
0,
|
||||||
|
9,
|
||||||
|
0,
|
||||||
|
"IMAGE"
|
||||||
|
],
|
||||||
|
[
|
||||||
|
25,
|
||||||
|
12,
|
||||||
|
0,
|
||||||
|
17,
|
||||||
|
0,
|
||||||
|
"IMAGE"
|
||||||
|
],
|
||||||
|
[
|
||||||
|
29,
|
||||||
|
18,
|
||||||
|
1,
|
||||||
|
19,
|
||||||
|
1,
|
||||||
|
"IPADAPTER"
|
||||||
|
],
|
||||||
|
[
|
||||||
|
30,
|
||||||
|
17,
|
||||||
|
0,
|
||||||
|
19,
|
||||||
|
2,
|
||||||
|
"IMAGE"
|
||||||
|
],
|
||||||
|
[
|
||||||
|
31,
|
||||||
|
19,
|
||||||
|
0,
|
||||||
|
3,
|
||||||
|
0,
|
||||||
|
"MODEL"
|
||||||
|
],
|
||||||
|
[
|
||||||
|
32,
|
||||||
|
20,
|
||||||
|
0,
|
||||||
|
19,
|
||||||
|
6,
|
||||||
|
"FLOAT"
|
||||||
|
],
|
||||||
|
[
|
||||||
|
34,
|
||||||
|
21,
|
||||||
|
0,
|
||||||
|
20,
|
||||||
|
0,
|
||||||
|
"INT"
|
||||||
|
],
|
||||||
|
[
|
||||||
|
35,
|
||||||
|
21,
|
||||||
|
0,
|
||||||
|
5,
|
||||||
|
0,
|
||||||
|
"INT"
|
||||||
|
],
|
||||||
|
[
|
||||||
|
36,
|
||||||
|
4,
|
||||||
|
0,
|
||||||
|
18,
|
||||||
|
0,
|
||||||
|
"MODEL"
|
||||||
|
],
|
||||||
|
[
|
||||||
|
37,
|
||||||
|
18,
|
||||||
|
0,
|
||||||
|
19,
|
||||||
|
0,
|
||||||
|
"MODEL"
|
||||||
|
]
|
||||||
|
],
|
||||||
|
"groups": [],
|
||||||
|
"config": {},
|
||||||
|
"extra": {},
|
||||||
|
"version": 0.4
|
||||||
|
}
|
||||||
@@ -34,7 +34,7 @@ def get_ipadapter_file(preset, is_sdxl):
|
|||||||
if is_sdxl:
|
if is_sdxl:
|
||||||
raise Exception("light model is not supported for SDXL")
|
raise Exception("light model is not supported for SDXL")
|
||||||
pattern = 'sd15.light.v11\.(safetensors|bin)$'
|
pattern = 'sd15.light.v11\.(safetensors|bin)$'
|
||||||
# if light model v11 is not found, try with the old version
|
# if v11 is not found, try with the old version
|
||||||
if not [e for e in ipadapter_list if re.search(pattern, e, re.IGNORECASE)]:
|
if not [e for e in ipadapter_list if re.search(pattern, e, re.IGNORECASE)]:
|
||||||
pattern = 'sd15.light\.(safetensors|bin)$'
|
pattern = 'sd15.light\.(safetensors|bin)$'
|
||||||
elif preset.startswith("standard"):
|
elif preset.startswith("standard"):
|
||||||
@@ -63,8 +63,12 @@ def get_ipadapter_file(preset, is_sdxl):
|
|||||||
pattern = 'full.face.sd15\.(safetensors|bin)$'
|
pattern = 'full.face.sd15\.(safetensors|bin)$'
|
||||||
elif preset.startswith("faceid portrait"):
|
elif preset.startswith("faceid portrait"):
|
||||||
if is_sdxl:
|
if is_sdxl:
|
||||||
raise Exception("portrait model is not supported for SDXL")
|
pattern = 'portrait.sdxl\.(safetensors|bin)$'
|
||||||
pattern = 'portrait.sd15\.(safetensors|bin)$'
|
else:
|
||||||
|
pattern = 'portrait.v11.sd15\.(safetensors|bin)$'
|
||||||
|
# if v11 is not found, try with the old version
|
||||||
|
if not [e for e in ipadapter_list if re.search(pattern, e, re.IGNORECASE)]:
|
||||||
|
pattern = 'portrait.sd15\.(safetensors|bin)$'
|
||||||
is_insightface = True
|
is_insightface = True
|
||||||
elif preset == "faceid":
|
elif preset == "faceid":
|
||||||
if is_sdxl:
|
if is_sdxl:
|
||||||
@@ -88,6 +92,12 @@ def get_ipadapter_file(preset, is_sdxl):
|
|||||||
pattern = 'faceid.plusv2.sd15\.(safetensors|bin)$'
|
pattern = 'faceid.plusv2.sd15\.(safetensors|bin)$'
|
||||||
lora_pattern = 'faceid.plusv2.sd15.lora\.safetensors$'
|
lora_pattern = 'faceid.plusv2.sd15.lora\.safetensors$'
|
||||||
is_insightface = True
|
is_insightface = True
|
||||||
|
# Community's models
|
||||||
|
elif preset.startswith("composition"):
|
||||||
|
if is_sdxl:
|
||||||
|
pattern = 'plus.composition.sdxl\.safetensors$'
|
||||||
|
else:
|
||||||
|
pattern = 'plus.composition.sd15\.safetensors$'
|
||||||
else:
|
else:
|
||||||
raise Exception(f"invalid type '{preset}'")
|
raise Exception(f"invalid type '{preset}'")
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user