Spaces:
Running on Zero
Running on Zero
Download ui/guidance.py from BlueSkyXN/ImageGen-Studio: direct link, hf CLI and curl.
- Browser
- Download file 8.2 kB
-
https://huggingface.co/spaces/BlueSkyXN/ImageGen-Studio/resolve/main/ui/guidance.py
- Command line
-
hf download hf://spaces/BlueSkyXN/ImageGen-Studio/ui/guidance.py
-
curl -L -o guidance.py https://huggingface.co/spaces/BlueSkyXN/ImageGen-Studio/resolve/main/ui/guidance.py
8.2 kB
| """Chinese-first task and model guidance generated from the existing registry.""" | |
| from __future__ import annotations | |
| from core.settings import ( | |
| ARCHITECTURES_CONFIG, | |
| MODEL_DEFAULTS_CONFIG, | |
| MODEL_MAP_CHECKPOINT, | |
| MODEL_TYPE_MAP, | |
| ) | |
| from imagegen_utils.app_utils import get_model_generation_defaults | |
| from core.model_capabilities import enabled_chains_for_model | |
| TASK_HELP = { | |
| "reference": "**参考图编辑 / 融合**:一张图按指令修改,多张图整组参考;选择编辑模型,按顺序上传图片,再描述各图用途和要保留、修改的内容。", | |
| "txt2img": "**文生图**:选择模型,写清主体、动作、构图、风格和光线,再点击生成。", | |
| "img2img": "**图生图**:上传原图;重绘幅度越低越接近原图,越高改动越大。", | |
| "inpaint": "**局部重绘**:上传图片并涂抹需要修改的区域;提示词只描述希望出现的新内容。", | |
| "outpaint": "**扩图**:上传原图,设置向四周扩展的像素;提示词描述画面外应延续的内容。", | |
| "hires_fix": "**高清修复**:上传图片,先用 1.5× 和 0.35–0.55 重绘幅度试跑,避免细节漂移。", | |
| } | |
| FEATURE_NAMES = { | |
| "lora": "LoRA", | |
| "controlnet": "ControlNet", | |
| "anima_controlnet_lllite": "Anima ControlNet", | |
| "diffsynth_controlnet": "DiffSynth ControlNet", | |
| "krea2_controlnet": "Krea2 ControlNet", | |
| "ipadapter": "IP-Adapter", | |
| "flux1_ipadapter": "FLUX IP-Adapter", | |
| "sd3_ipadapter": "SD3 IP-Adapter", | |
| "style": "风格参考", | |
| "embedding": "Embedding", | |
| "conditioning": "区域提示", | |
| "reference_latent": "多图编辑", | |
| "hidream_o1_reference": "HiDream 参考图", | |
| "joyai_image": "JoyAI 参考图", | |
| "krea2_identity_edit": "Krea2 身份参考", | |
| "krea2_style_reference": "Krea2 风格参考", | |
| "qwen_image_edit": "Qwen 图片编辑", | |
| "boogu_image_edit": "Boogu 图片编辑", | |
| "reference_image": "Mage-Flow 参考图", | |
| "vae": "VAE 替换", | |
| "pid": "PiD 解码", | |
| } | |
| QUICK_PRESETS = [ | |
| ("手动选择", "__manual__"), | |
| ("快速通用 · Krea-2-Turbo", "Krea-2-Turbo"), | |
| ("中文与文字 · Qwen-Image Lightning", "lightx2v/Qwen-Image-2512-Lightning"), | |
| ("动漫角色 · Anima Turbo", "circlestone-labs/Anima-Turbo-v1.0"), | |
| ("快速编辑 · Qwen-Image-Edit Lightning", "lightx2v/Qwen-Image-Edit-2511-Lightning"), | |
| ("SDXL 动漫 · Animagine XL 4.0", "CagliostroLab/Animagine XL 4.0"), | |
| ] | |
| def task_help(task_type: str) -> str: | |
| return TASK_HELP.get(task_type, TASK_HELP["txt2img"]) | |
| def model_hint(model_name: str) -> str: | |
| info = MODEL_MAP_CHECKPOINT.get(model_name) | |
| if not info: | |
| return "请选择配置中已有的模型。" | |
| architecture = MODEL_TYPE_MAP.get(model_name, info[2]) | |
| architecture_config = ARCHITECTURES_CONFIG.get("architectures", {}).get(architecture, {}) | |
| workflow_type = architecture_config.get( | |
| "model_type", architecture.lower().replace(" ", "").replace(".", "") | |
| ) | |
| defaults = get_model_generation_defaults( | |
| model_name, workflow_type, MODEL_DEFAULTS_CONFIG | |
| ) | |
| features = enabled_chains_for_model(model_name) | |
| feature_text = "、".join(FEATURE_NAMES.get(item, item) for item in features[:6]) or "基础生成" | |
| if len(features) > 6: | |
| feature_text += f" 等 {len(features)} 项" | |
| tag_first_architectures = {"SDXL", "SD1.5", "Anima", "NewBie-Image"} | |
| if architecture in tag_first_architectures: | |
| language_tip = "更适合英文标签式 Prompt;中文意图可保留,但建议补充英文关键词。" | |
| elif architecture in {"Qwen-Image", "Z-Image", "HunyuanImage", "ERNIE-Image"}: | |
| language_tip = "可优先直接使用中文自然语言;涉及文字时把具体文字用引号写出。" | |
| else: | |
| language_tip = "可先用中文自然语言;若构图不稳定,再补充简短英文关键词。" | |
| edit_tip = "" | |
| if "edit" in model_name.lower(): | |
| edit_tip = " 这是编辑向模型,推荐选择“参考图编辑 / 融合”任务。" | |
| return ( | |
| f"**{architecture} · 推荐参数**:{defaults.get('steps', 20)} 步," | |
| f"CFG {defaults.get('cfg', 1.0)},{defaults.get('sampler_name', 'euler')} / " | |
| f"{defaults.get('scheduler', 'simple')} \n" | |
| f"**Prompt 建议**:{language_tip}{edit_tip} \n" | |
| f"**当前可用扩展**:{feature_text}" | |
| ) | |
| def recommended_params(model_name: str) -> tuple: | |
| """Return the registry defaults shown by the one-click reset control.""" | |
| info = MODEL_MAP_CHECKPOINT.get(model_name) | |
| if not info: | |
| return 20, 1.0, "euler", "simple" | |
| architecture = MODEL_TYPE_MAP.get(model_name, info[2]) | |
| architecture_config = ARCHITECTURES_CONFIG.get("architectures", {}).get( | |
| architecture, {} | |
| ) | |
| workflow_type = architecture_config.get( | |
| "model_type", architecture.lower().replace(" ", "").replace(".", "") | |
| ) | |
| defaults = get_model_generation_defaults( | |
| model_name, workflow_type, MODEL_DEFAULTS_CONFIG | |
| ) | |
| return ( | |
| defaults.get("steps", 20), | |
| defaults.get("cfg", 1.0), | |
| defaults.get("sampler_name", "euler"), | |
| defaults.get("scheduler", "simple"), | |
| ) | |
| def prompt_guidance(task_type: str, mode: str, model_name: str) -> dict: | |
| reference = task_type == "reference" or mode == "multi_reference" | |
| independent = mode in {"multi_independent", "multi_model_grid"} | |
| if reference: | |
| label = "3. 说明每张图的用途和修改要求" | |
| placeholder = "保留图1的主体,参考图2的背景;写清哪些不变、哪些修改。只有一张图时只写图1。" | |
| examples = [ | |
| ["保留图1的主体、构图和光线,将背景改成纯白色。"], | |
| ["保留 img1 的主体,参考 img2 的背景和光线,生成自然融合的新画面。"], | |
| ] | |
| help_text = "图1 = img1 = image1,对应有效图片预览顺序;编号统一成 image 1 送入模型。第二条示例需要两张图。" | |
| elif task_type == "txt2img": | |
| label, placeholder = "3. 描述你想要的画面", "主体 + 动作 + 场景 + 构图 + 风格 + 光线" | |
| if MODEL_TYPE_MAP.get(model_name) in {"Anima", "SDXL", "SD1.5", "NewBie-Image"}: | |
| examples = [["1girl, silver hair, train station, rainy night, upper body, cinematic lighting, detailed illustration"], | |
| ["cityscape, night, neon lights, wet street, reflections, low angle, depth of field"]] | |
| else: | |
| examples = [["现代东方客厅,浅木色与米白配色,午后自然光,广角室内摄影"], | |
| ["未来城市夜景,湿润街道倒影,霓虹灯,低机位,电影概念设计"]] | |
| help_text = "描述最终画面;要按图片修改或融合,请选择“参考图编辑 / 融合”。" | |
| else: | |
| label, placeholder = "3. 描述修改后的画面", "要保留的主体和构图 + 希望改变的部分;改动大小还受重绘幅度控制" | |
| example = { | |
| "img2img": "将当前图片转换为水彩插画,保留主体轮廓和构图,柔和色彩。", | |
| "inpaint": "将涂抹区域替换为一束白色鲜花,匹配周围光线与透视。", | |
| "outpaint": "向画面外延续现有背景,保持原有透视、色调与光照,衔接自然。", | |
| "hires_fix": "保留当前图片的主体、配色和构图,提升细节清晰度,避免新增元素。", | |
| }.get(task_type, "保留当前图片的主体,背景改为纯白。") | |
| examples = [[example]] | |
| help_text = "普通图生图是整体重绘,不等于精确指令编辑;低重绘幅度可能保留你想改变的内容。" | |
| if independent: | |
| help_text = "每张源图单独执行,共用同一条提示词;请写“当前图片”,不要用图1/img2跨图引用。需要两图同时参与请选参考图编辑 / 融合。" | |
| help_text += " 不自动翻译或扩写;引号/反引号内的编号当作画面文字,不解析。" | |
| return {"label": label, "placeholder": placeholder, "examples": examples, "help": help_text} | |