78 lines
3.6 KiB
Markdown
78 lines
3.6 KiB
Markdown
# Documentation
|
|
- Class name: Demofusion
|
|
- Category: tests
|
|
- Output node: False
|
|
- Repo Ref: https://github.com/deroberon/demofusion-comfyui
|
|
|
|
该节点使用预训练的扩散模型执行图像生成,结合文本提示引导创作过程,并生成高分辨率输出。
|
|
|
|
# Input types
|
|
## Required
|
|
- ckpt_name
|
|
- 检查点名称对于选择用于图像生成的预训练模型至关重要。它指导节点访问指定的模型架构和权重。
|
|
- Comfy dtype: STRING
|
|
- Python dtype: str
|
|
- positive
|
|
- 正面提示作为指导文本,增强生成图像中期望的特征,将输出引向特定的视觉元素。
|
|
- Comfy dtype: STRING
|
|
- Python dtype: str
|
|
- negative
|
|
- 负面提示有助于从生成的图像中排除不需要的元素,使输出更加符合预期的创作愿景。
|
|
- Comfy dtype: STRING
|
|
- Python dtype: str
|
|
- width
|
|
- 宽度决定了生成图像的水平分辨率,影响输出的整体细节和质量。
|
|
- Comfy dtype: INT
|
|
- Python dtype: int
|
|
- height
|
|
- 高度决定了生成图像的垂直分辨率,影响最终产品的规模和宽高比。
|
|
- Comfy dtype: INT
|
|
- Python dtype: int
|
|
- inference_steps
|
|
- 推理步骤定义了模型执行以完善图像的迭代次数,直接影响最终结果的细节和清晰度水平。
|
|
- Comfy dtype: INT
|
|
- Python dtype: int
|
|
- cfg
|
|
- 配置参数(或cfg)调整模型的指导比例,控制文本提示对图像生成的影响强度。
|
|
- Comfy dtype: FLOAT
|
|
- Python dtype: float
|
|
- seed
|
|
- 种子为随机数生成提供值,确保在不同运行中使用相同的种子时结果的可复现性。
|
|
- Comfy dtype: INT
|
|
- Python dtype: int
|
|
|
|
# Output types
|
|
- IMAGE
|
|
- 输出是一张高分辨率的图像,包含了文本提示所提供的创作方向,代表了扩散模型生成能力的顶峰。
|
|
- Comfy dtype: IMAGE
|
|
- Python dtype: PIL.Image
|
|
|
|
# Usage tips
|
|
- Infra type: GPU
|
|
|
|
# Source code
|
|
```
|
|
class Demofusion:
|
|
|
|
def __init__(self):
|
|
pass
|
|
|
|
@classmethod
|
|
def INPUT_TYPES(s):
|
|
return {'required': {'ckpt_name': ('STRING', {'multiline': False, 'default': 'stabilityai/stable-diffusion-xl-base-1.0'}), 'positive': ('STRING', {'multiline': True, 'default': ''}), 'negative': ('STRING', {'multiline': True, 'default': ''}), 'width': ('INT', {'default': 2048, 'min': 2048, 'max': 4096, 'step': 64, 'display': 'number'}), 'height': ('INT', {'default': 2048, 'min': 2048, 'max': 4096, 'step': 64, 'display': 'number'}), 'inference_steps': ('INT', {'default': 40, 'min': 1, 'max': 100, 'step': 1, 'display': 'number'}), 'cfg': ('FLOAT', {'default': 7.5, 'min': 1.0, 'max': 20.0, 'step': 0.5, 'round': 0.001, 'display': 'number'}), 'seed': ('INT', {'default': 522, 'display': 'number'})}}
|
|
RETURN_TYPES = ('IMAGE',)
|
|
FUNCTION = 'execute'
|
|
CATEGORY = 'tests'
|
|
|
|
def execute(self, ckpt_name, positive, negative, width, height, inference_steps, cfg, seed):
|
|
pipe = DemoFusionSDXLStableDiffusionPipeline.from_pretrained(ckpt_name, torch_dtype=torch.float16)
|
|
pipe = pipe.to('cuda')
|
|
generator = torch.Generator(device='cuda')
|
|
generator = generator.manual_seed(seed)
|
|
images = pipe(str(positive), negative_prompt=str(negative), height=height, width=width, view_batch_size=4, stride=64, num_inference_steps=inference_steps, guidance_scale=cfg, cosine_scale_1=3, cosine_scale_2=1, cosine_scale_3=1, sigma=0.8, multi_decoder=True, show_image=False)
|
|
image = images[len(images) - 1]
|
|
image = image.convert('RGB')
|
|
image = np.array(image).astype(np.float32) / 255.0
|
|
image = torch.from_numpy(image)[None,]
|
|
return (image,)
|
|
``` |