Files
CavinHuang-comfyui-nodes-docs/docs/SeargeGenerationParameters.md
2024-05-26 20:35:16 +08:00

5.8 KiB

Documentation

此类节点封装了通过搜索方法生成图像所需的参数。它通过允许用户指定关键属性,如种子、图像尺寸和采样预设,简化了配置过程,这些属性共同影响生成图像的质量和特征。

Input types

Required

  • seed
    • 种子参数对于初始化随机数生成器至关重要,确保图像生成过程可复现。它决定了算法随机元素的起始点,因此在确定生成图像的独特性和一致性方面发挥着关键作用。
    • Comfy dtype: INT
    • Python dtype: int
  • image_size_preset
    • 图像尺寸预设参数允许用户为生成的图像选择预定义的分辨率。这个选择直接影响图像的细节程度和图像生成所需的计算资源,更高分辨率需要更多的处理能力。
    • Comfy dtype: COMBO
    • Python dtype: str
  • image_width
    • 图像宽度参数指定了生成图像的水平尺寸。它是确定图像的宽高比和整体外观的关键因素,并且与图像高度参数共同作用以确定最终尺寸。
    • Comfy dtype: INT
    • Python dtype: int
  • image_height
    • 图像高度参数定义了生成图像的垂直尺寸。它与图像宽度一起,为图像生成过程设置了画布大小,影响了内容的规模和布局。
    • Comfy dtype: INT
    • Python dtype: int
  • steps
    • 步骤参数指的是生成过程将经历的迭代次数。更多的步骤通常会产生更精细和详细的图像,但也会增加生成所需的计算成本和时间。
    • Comfy dtype: INT
    • Python dtype: int
  • cfg
    • 配置参数,通常表示为'cfg',是一个浮点值,用于调整图像质量与生成速度之间的平衡。较低的值可能会更快地生成图像,但细节较少,而较高的值可以在处理时间的代价下增强细节。
    • Comfy dtype: FLOAT
    • Python dtype: float
  • sampler_preset
    • 采样器预设参数使用户能够从一组预定义的采样策略中选择。每个预设都旨在为特定类型的内容或期望的结果优化生成过程,影响生成图像的多样性和一致性。
    • Comfy dtype: COMBO
    • Python dtype: str
  • sampler_name
    • 采样器名称参数对于选择用于图像生成的特定算法至关重要。不同的采样器提供不同的图像精炼方法,影响最终输出的视觉风格和质量。
    • Comfy dtype: COMBO
    • Python dtype: str
  • scheduler
    • 调度器参数决定了图像生成过程中采用的优化策略。它调节探索和利用之间的平衡,从而影响生成图像的收敛速度和质量。
    • Comfy dtype: COMBO
    • Python dtype: str
  • base_vs_refiner_ratio
    • 基础与精炼者比例参数调整图像生成的基础和精炼阶段之间的平衡。它影响计算资源在图像初始创建和随后增强图像细节之间的分配。
    • Comfy dtype: FLOAT
    • Python dtype: float

Output types

  • data
    • 此节点的数据输出代表了包含生成参数的结构化信息流。它是图像生成过程的蓝图,封装了所有用户定义的设置,指导算法生成所需的图像。
    • Comfy dtype: SRG_DATA_STREAM
    • Python dtype: SRG_DATA_STREAM

Usage tips

  • Infra type: CPU

Source code

class SeargeGenerationParameters:

    @classmethod
    def INPUT_TYPES(cls):
        return {'required': {'seed': ('INT', {'default': 0, 'min': 0, 'max': 18446744073709551600}), 'image_size_preset': (UI.RESOLUTION_PRESETS,), 'image_width': ('INT', {'default': 1024, 'min': 0, 'max': UI.MAX_RESOLUTION, 'step': 8}), 'image_height': ('INT', {'default': 1024, 'min': 0, 'max': UI.MAX_RESOLUTION, 'step': 8}), 'steps': ('INT', {'default': 20, 'min': 1, 'max': 200}), 'cfg': ('FLOAT', {'default': 7.0, 'min': 0.5, 'max': 30.0, 'step': 0.5}), 'sampler_preset': (UI.SAMPLER_PRESETS,), 'sampler_name': (UI.SAMPLERS, {'default': 'dpmpp_2m'}), 'scheduler': (UI.SCHEDULERS, {'default': 'karras'}), 'base_vs_refiner_ratio': ('FLOAT', {'default': 0.8, 'min': 0.0, 'max': 1.0, 'step': 0.05})}, 'optional': {'data': ('SRG_DATA_STREAM',)}}
    RETURN_TYPES = ('SRG_DATA_STREAM',)
    RETURN_NAMES = ('data',)
    FUNCTION = 'get'
    CATEGORY = UI.CATEGORY_UI_INPUTS

    @staticmethod
    def create_dict(seed, image_size_preset, image_width, image_height, steps, cfg, sampler_preset, sampler_name, scheduler, base_vs_refiner_ratio):
        if sampler_preset == UI.SAMPLER_PRESET_DPMPP_2M_KARRAS:
            (sampler_name, scheduler) = ('dpmpp_2m', 'karras')
        elif sampler_preset == UI.SAMPLER_PRESET_EULER_A:
            (sampler_name, scheduler) = ('euler_ancestral', 'normal')
        elif sampler_preset == UI.SAMPLER_PRESET_DPMPP_2M_SDE_KARRAS:
            (sampler_name, scheduler) = ('dpmpp_2m_sde', 'karras')
        elif sampler_preset == UI.SAMPLER_PRESET_DPMPP_3M_SDE_EXPONENTIAL:
            (sampler_name, scheduler) = ('dpmpp_3m_sde', 'exponential')
        elif sampler_preset == UI.SAMPLER_PRESET_DDIM_UNIFORM:
            (sampler_name, scheduler) = ('ddim', 'ddim_uniform')
        return {UI.F_SEED: seed, UI.F_IMAGE_SIZE_PRESET: image_size_preset, UI.F_IMAGE_WIDTH: image_width, UI.F_IMAGE_HEIGHT: image_height, UI.F_STEPS: steps, UI.F_CFG: round(cfg, 3), UI.F_SAMPLER_PRESET: sampler_preset, UI.F_SAMPLER_NAME: sampler_name, UI.F_SCHEDULER: scheduler, UI.F_BASE_VS_REFINER_RATIO: round(base_vs_refiner_ratio, 3)}

    def get(self, seed, image_size_preset, image_width, image_height, steps, cfg, sampler_preset, sampler_name, scheduler, base_vs_refiner_ratio, data=None):
        if data is None:
            data = {}
        data[UI.S_GENERATION_PARAMETERS] = self.create_dict(seed, image_size_preset, image_width, image_height, steps, cfg, sampler_preset, sampler_name, scheduler, base_vs_refiner_ratio)
        return (data,)