## Context 当前系统使用 Stable Diffusion WebUI API 生成图片,通过 `sd_service.py` 中的 `SD_MODEL_PROFILES` 静态配置各模型的参数预设(快速/标准/精细三档)和 prompt 增强词。图片生成后经 `anti_detect_postprocess()` 做反 AI 检测后处理。`llm_service.py` 的 `get_sd_prompt_guide()` 向 LLM 提供绘图 Prompt 写作指南。 **现状痛点:** - 各模型的"精细"档步数(35-40步)和分辨率偏低,SDXL 模型未充分利用 Hires Fix 提升细节 - `prompt_prefix` 中的中国人面孔特征词偏弱或措辞泛化(如 `asian girl` 无权重),欧美面孔偏向风险未完全规避 - `anti_detect_postprocess` 将噪声扰动与美化处理混在一起,无法独立调节美化强度 - LLM Prompt 指南缺少针对人物真实感/中国审美的专项指导词模板 **约束:** - 不引入新的外部 Python 依赖 - Hires Fix 仅对 SDXL 模型启用(SD 1.5 显存不足) - 现有 `txt2img` API 接口签名不做 breaking change,新参数均使用默认值向后兼容 ## Goals / Non-Goals **Goals:** - 为各模型新增"高画质"预设档,SDXL 启用 Hires Fix 参数 - 系统性强化各模型 `prompt_prefix` 中的中国人审美特征词(精致五官、白皙透亮、杏眼、减龄感、中式气质) - 将 `anti_detect_postprocess` 拆分为独立的 `beauty_enhance()` + `anti_detect_postprocess()` 两段,支持通过 `enhance_level` 参数控制美化强度 - 扩充 LLM Prompt 指南中的人物真实感描述规则,加入中国审美专项指导词模板 - 在 UI 绘图参数面板新增"美化强度"控件,通过 `services/content.py` 传递至后处理管线 **Non-Goals:** - 不新增 SD 模型支持(不修改模型识别逻辑) - 不做图片超分(Real-ESRGAN 等外部工具) - 不修改 ReActor 换脸逻辑 - 不改变发布流程或队列逻辑 ## Decisions ### 决策 1:Hires Fix 仅对 SDXL 模型启用 **选择:** 在 `txt2img` payload 中,当模型 `arch == "sdxl"` 且 `quality_mode` 为高画质档时注入 Hires Fix 参数(`enable_hr: true`, `hr_scale: 1.5`, `hr_upscaler: "4x-UltraSharp"`, `denoising_strength: 0.4`)。 **理由:** SD 1.5 模型显存通常不足以做 Hires Fix,SDXL 的 832×1216 基础分辨率放大 1.5x 可达 1248×1824,大幅提升皮肤/五官细节,代价是生成时间增加约 50%。 **替代方案:** 后处理做 PIL 超分 → 效果差、无 AI 重绘细节;全模型启用 → 触发 SD 1.5 OOM 风险。 --- ### 决策 2:beauty_enhance 作为独立函数,enhance_level 控制强度 **选择:** 将原 `anti_detect_postprocess` 中的美化逻辑(锐化、色彩增强)抽取为 `beauty_enhance(img, level: float = 1.0) -> Image`,`level=0` 跳过,`level=1` 为默认,`level=2` 为强化。`anti_detect_postprocess` 保持仅做扰动逻辑,调用顺序:`beauty_enhance → anti_detect_postprocess`。 **理由:** 当前两者混在同一函数中,美化参数硬编码无法从 UI 调节;分离后可独立测试,且 UI 控件可直接映射到 `enhance_level`。 **替代方案:** 在 `anti_detect_postprocess` 中增加 flag 参数 → 函数职责混乱,不符合单一职责原则。 --- ### 决策 3:中国审美词以"权重词组"方式注入 prompt_prefix **选择:** 在各模型 `prompt_prefix` 中为中国人面孔特征词加入权重括号,如 `(almond eyes:1.2)`, `(delicate nose:1.1)`, `(porcelain skin:1.2)`, `(youthful appearance:1.1)`, `(chinese beauty:1.2)`,同时在 `negative_prompt` 中补充 `deep-set eyes, strong jawline, prominent brow ridge` 等欧美特征排除词。 **理由:** SD 权重词是最直接有效的方式;不引入新依赖;各模型独立配置可针对其风格微调权重值。 --- ### 决策 4:LLM Prompt 指南新增中国审美人物描述模板 **选择:** 在 `get_sd_prompt_guide()` 中新增"人物描述词库"段落,按五官/肤色/气质/发型四个维度分别给出推荐词,并加一条规则:描述人物时优先从该词库选词,禁用 `beautiful girl` 等无导向泛化词。 **理由:** LLM 倾向于使用泛化美感词,不加约束时易生成欧美审美偏向的描述,规则化词库可强制对齐目标审美。 ## Risks / Trade-offs - **[风险] Hires Fix 生成时间大幅增加** → 缓解:仅在新增"极致 (约5分钟)"档才默认开启,其他档保持原速;UI 标注预计用时 - **[风险] 中国审美词过强导致所有图片千人一面** → 缓解:权重控制在 1.1-1.2 之间,不超过 1.3;`PERSONA_SD_PROFILES` 各人设保留差异化风格词 - **[风险] beauty_enhance 引入 numpy 依赖(实际已存在)** → 无风险,现有代码已 `import numpy` - **[Trade-off] enhance_level UI 控件增加 UI 复杂度** → 接受:放在"高级设置"面板折叠区,不影响主流程 ## Migration Plan 1. 修改 `sd_service.py`:更新各模型 `prompt_prefix`/`negative_prompt`,新增高画质预设,拆分 `beauty_enhance` 2. 修改 `llm_service.py`:更新 `get_sd_prompt_guide()` 指南内容 3. 修改 `services/content.py`:`generate_images` 新增 `enhance_level` 参数(默认 `1.0`,向后兼容) 4. 修改 `ui/tab_create.py`:在"高级设置"中新增"美化强度"滑块,范围 0.0-2.0,默认 1.0 无数据库迁移,无配置文件格式变更。回滚:git revert 即可。 ## Open Questions - Hires Fix 的 `hr_upscaler` 在用户环境中是否普遍可用(需确认 "4x-UltraSharp" 模型是否已下载);若不存在应降级为 "Latent" 作为 fallback - `beauty_enhance` 的最优参数值(锐化半径、色彩增益系数)需在实际出图中调试确认