「動かせるが品質が崩壊しやすいレベル。v3でようやく実用圏に入る」— Grok評
| 問題 | キャラ | 症状 | 真因 | 深刻度 |
|---|---|---|---|---|
| 問題1 | rena(白金髪) | 色飛び・目のみ青発光・肌灰色・人外化 | 高明度キャラ × clean背景 × warm soft lightingのハレーション | 致命的 |
| 問題2 | misako(栗茶髪) | 水彩風・油絵風・ぼかし仕上がり | seductive/sultryタグがセミリアル/絵画調を引き寄せる | 重大 |
platinum blonde(高明度ベクトル)× clean background(低情報・高明度ベクトル)× warm soft lighting(輝度強化)の3者が embedding空間で「背景と髪の境界が曖昧な領域」へ収束する。 Illustriousはこれを「髪が背景に溶け込む」方向に解釈し、色分離に失敗する。
白金髪+クール系キャラ(elegant / aloof beauty / cool gaze)は学習データ上で 「暗めの背景 or 高コントラスト照明」と強く共起している。 明るい中立背景との組み合わせは学習データが希薄であり、 モデルが「人外・発光体」として補完生成する。
CFG中程度(6.0)でも、背景が低コントラストだと正方向プロンプトの明度が 過剰に強調される。結果として肌の明度が暴走し灰色化する。 CFG=5.0以下に下げても根本解決にはならない(コントラスト不足の背景が問題の核心)。
cool gaze× aloof beauty× ice blue eyesの3タグが組み合わさると、 目が「光源」として機能するベクトルに収束する傾向がある。 背景が明るいと目だけが相対的に高コントラストになり、発光現象が発生する。
VAEも寄与している。 sdxl_vae_fp16fix は高輝度領域でfp16の丸め誤差が大きく、肌の微細な階調(明度グラデーション)が失われやすい。 これが「灰色の肌」を助長している。標準sdxl_vae.safetensorsよりマシだが、根本解決にはならない。
seductive sultry alluring onee-san はIllustrious v160においてセミリアリスティック・絵画調にバイアスをかけるタグ群である。 アニメ調イラストを指示する他のプロンプトと衝突し、水彩・油絵スタイルを引き寄せる。
voluptuous body hourglass figure curvy の組み合わせもモデルが「油絵・水彩寄りのボディ表現」を呼びやすい。 詳細なボディ描写を求めるほど、Illustriousは絵画的表現に傾く。
ADULT_CUTEの curvy_bodymedium_breasts と misakoのbody定義 voluptuous body:1.35hourglass figure:1.3curvy:1.25 が 重複・衝突してスタイルが不安定化する。 akariやhinataはこのbody定義が軽いため衝突が少ない。
(simple soft indoor background:1.2),(clean background:1.2),(warm soft lighting:1.2),(no complex objects:1.1)
| 順位 | 背景タグ | 適合キャラ | 評価 |
|---|---|---|---|
| 1位 | (soft blue-gray wall:1.3),(muted teal background:1.2) | rena専用最強 | 白金髪との最高コントラスト・クール系と整合 |
| 2位 | (warm wooden interior:1.3),(wood panel background:1.2) | misako/hinata | 有彩色で明度衝突回避・絵画化しにくい |
| 3位 | (soft beige wall:1.3),(warm cream room:1.2) | misako/akari | 暖色系・白への収束を防ぐ |
| 4位 | (light gray gradient background:1.3),(neutral gray:1.2) | 汎用 | 比較的安全だがrenaには不足 |
| 5位 | (pale pink room:1.2),(soft pink wall:1.2) | hinata/akari | かわいい系に◎・rena/misakoには不向き |
| 最下位 | (studio white wall:1.3),(photography studio background:1.2) | 全キャラNG | 白背景は全白系キャラに崩壊リスク・絶対使用禁止 |
build_cs内でキャラIDに応じて背景を動的に切り替える実装。
def get_bg_for_char(char_id: str) -> str:
"""キャラ明度特性に合わせた背景タグ動的生成
設計根拠:
rena = 白金髪/クール系 → 暗め背景必須・クールトーン背景でキャラ整合
misako = 栗茶髪/セクシー系 → 暖色ウォール・clean背景回避
hinata = 明茶ボブ/無邪気系 → ニュートラルグレー・適度コントラスト
akari = 黒髪/純朴系 → 現状のBG_NEUTRALでOK(正常動作確認済)
"""
if char_id == "rena":
# 白金髪 × クール系 → 暗め有彩色背景でコントラスト確保
return (
"(soft blue-gray wall:1.35),(muted teal background:1.25),"
"(cool tone indoor:1.2),(moderate contrast lighting:1.2),"
"(no bright white background:1.4)"
)
elif char_id == "misako":
# 栗茶髪 × セクシー系 → 暖色で水彩化抑制・clean回避
return (
"(warm beige wall:1.3),(soft warm indoor:1.25),"
"(muted warm lighting:1.2),(clean illustration background:1.15),"
"(no white background:1.3),(no cold gray:1.2)"
)
elif char_id == "hinata":
# 明茶ボブ × 無邪気系 → ニュートラルグレー・renaほど問題なし
return (
"(soft gray wall:1.25),(neutral cool gray background:1.2),"
"(moderate contrast lighting:1.2),(indoor soft light:1.1)"
)
else:
# akari(黒髪)など: 現状BG_NEUTRALでOK
return (
"(simple soft indoor background:1.15),(clean background:1.15),"
"(warm soft lighting:1.1),(no complex objects:1.1)"
)
NEG_SFW_INTRO_V3 = (
# ─── 基本品質 ───
"lowres, bad anatomy, text, error, extra digit, fewer digits, "
"cropped, worst quality, low quality, jpeg artifacts, "
"signature, watermark, username, blurry, "
# ─── スタイル劣化防止 ───
"(watercolor:1.4),(oil painting:1.4),(painterly:1.4),(sketch:1.3),"
"(overexposed:1.3),(underexposed:1.3),(gray skin:1.4),(glowing eyes:1.3),"
"(color bleed:1.3),(washed out colors:1.3),(overlit:1.3),"
# ─── 3D/実写混入防止 ───
"3d, photorealistic, realistic, photo, "
# ─── NSFW最小限(SFW用)───
"(nude:1.4),(naked:1.4),(nsfw:1.4),(explicit:1.4),"
# ─── キャラ品質 ───
"(multiple girls:1.5),(other characters:1.4),(2girls:1.4),"
"(1boy:1.4),(male:1.3),(glasses:1.3),"
# ─── chibi専用(cs/dayショット時のみ)───
"(chibi:1.4),(super deformed:1.4),(q-style in image:1.3),"
"(monitor screen:1.3),(phone screen:1.3),(picture in picture:1.4),"
)
# chibi ショット用 NEG(chibi防止タグを除外)
NEG_CHIBI_V3 = (
"lowres, bad anatomy, text, error, blurry, lowres, "
"watermark, signature, 3d, photorealistic, realistic, photo, "
"(nude:1.4),(naked:1.4),(nsfw:1.4),"
"(normal body proportions:1.5),(realistic proportions:1.5),(elongated body:1.5),"
"(multiple girls:1.4),(2girls:1.4),(1boy:1.4),(male:1.3),"
"(glasses:1.3),(wrong hair color:1.4),(different hair color:1.3),"
)
キャラ別にスタイル固定タグを追加してアニメ調を強制維持する。
def get_style_fix_for_char(char_id: str) -> str:
"""キャラ別スタイル固定タグ
rena : sharp illustration強制(クール美人の精細描写維持)
misako : clean illustrationを強調(水彩化・油絵化の明示的抑制)
hinata : 標準(問題なし)
akari : 標準(問題なし)
"""
if char_id == "rena":
# クール系 → precision重視・sharp lines
return (
"(sharp illustration:1.2),(clean anime shading:1.15),"
"(precise line art:1.1),(crisp details:1.1),"
"(no soft focus:1.2),(no glow effect:1.3)"
)
elif char_id == "misako":
# セクシー系 → 絵画化を明示的に禁止
return (
"(clean illustration:1.25),(detailed anime shading:1.2),"
"(anime style:1.2),(no painterly:1.4),(no watercolor:1.4),"
"(flat color shading:1.1)"
)
else:
return "(clean illustration:1.1),(anime style:1.1)"
_gen_intro_v2_2026-05-25.py の BG_NEUTRAL 定義と
build_cs 関数を置き換えることで即時適用可能。
# -*- coding: utf-8 -*-
# ──────────────────────────────────────────────
# build_cs v3 (2026-05-26 品質崩壊修正版)
# 変更点:
# - BG_NEUTRAL廃止 → get_bg_for_char()でキャラ別動的対応
# - get_style_fix_for_char()でスタイル固定タグ追加
# - NEG_SFWをNEG_SFW_INTRO_V3に差し替え(トークン数60%削減)
# - clean background / warm soft lighting の使用禁止(rena崩壊原因)
# ──────────────────────────────────────────────
def get_bg_for_char(char_id: str) -> str:
"""キャラ明度特性に合わせた背景タグ動的生成"""
if char_id == "rena":
return (
"(soft blue-gray wall:1.35),(muted teal background:1.25),"
"(cool tone indoor:1.2),(moderate contrast lighting:1.2),"
"(no bright white background:1.4)"
)
elif char_id == "misako":
return (
"(warm beige wall:1.3),(soft warm indoor:1.25),"
"(muted warm lighting:1.2),(clean illustration background:1.15),"
"(no white background:1.3),(no cold gray:1.2)"
)
elif char_id == "hinata":
return (
"(soft gray wall:1.25),(neutral cool gray background:1.2),"
"(moderate contrast lighting:1.2),(indoor soft light:1.1)"
)
else: # akari / 黒髪系
return (
"(simple soft indoor background:1.15),(warm ivory background:1.1),"
"(warm soft lighting:1.1),(no complex objects:1.1)"
)
def get_style_fix_for_char(char_id: str) -> str:
"""キャラ別スタイル固定タグ(水彩化・絵画化防止)"""
if char_id == "rena":
return (
"(sharp illustration:1.2),(clean anime shading:1.15),"
"(precise line art:1.1),(crisp details:1.1),"
"(no soft focus:1.2),(no glow effect:1.3)"
)
elif char_id == "misako":
return (
"(clean illustration:1.25),(detailed anime shading:1.2),"
"(anime style:1.2),(no painterly:1.4),(no watercolor:1.4),"
"(flat color shading:1.1)"
)
else:
return "(clean illustration:1.1),(anime style:1.1)"
# ─── SFW専用最小NEG(NEG_FULLとは完全分離)───────────────
NEG_SFW_INTRO_V3 = (
"lowres, bad anatomy, text, error, extra digit, fewer digits, "
"cropped, worst quality, low quality, jpeg artifacts, "
"signature, watermark, username, blurry, "
"(watercolor:1.4),(oil painting:1.4),(painterly:1.4),(sketch:1.3),"
"(overexposed:1.3),(underexposed:1.3),(gray skin:1.4),(glowing eyes:1.3),"
"(color bleed:1.3),(washed out colors:1.3),(overlit:1.3),"
"3d, photorealistic, realistic, photo, "
"(nude:1.4),(naked:1.4),(nsfw:1.4),(explicit:1.4),"
"(multiple girls:1.5),(other characters:1.4),(2girls:1.4),"
"(1boy:1.4),(male:1.3),(glasses:1.3),"
"(chibi:1.4),(super deformed:1.4),(q-style in image:1.3),"
"(monitor screen:1.3),(phone screen:1.3),(picture in picture:1.4),"
)
NEG_CHIBI_V3 = (
"lowres, bad anatomy, text, error, blurry, lowres, "
"watermark, signature, 3d, photorealistic, realistic, photo, "
"(nude:1.4),(naked:1.4),(nsfw:1.4),"
"(normal body proportions:1.5),(realistic proportions:1.5),(elongated body:1.5),"
"(multiple girls:1.4),(2girls:1.4),(1boy:1.4),(male:1.3),"
"(glasses:1.3),(wrong hair color:1.4),(different hair color:1.3),"
)
def build_cs_v3(char_id, vol_def, shot):
"""
cs/day用プロンプトビルダー v3
変更: キャラ別背景動的対応 + スタイル固定タグ + NEG分離
使用NEG: NEG_SFW_INTRO_V3(NEG_FULLを使い回さない)
"""
c = CHARS[char_id]
pers = CHARS_PERSONALITY[char_id]
bg = get_bg_for_char(char_id)
sf = get_style_fix_for_char(char_id)
return (
f"{QUALITY}, {ADULT_CUTE}, "
f"(1girl:1.6),(solo:1.7),(only one girl:1.5),(no other characters:1.4),"
f"{c['hair']},{c['eyes']},{c['face']},{c['body']},{c['age']},"
f"{pers},"
f"{vol_def['outfit']}, "
f"{bg},"
f"{shot['pose']},{shot['cam']},{shot['expr']},"
f"{sf},"
f"(natural skin tone:1.1),(clean balanced colors:1.2),"
f"anime, illustration, 2d, cute, charming"
)
# ─── run_intro関数でNEGを差し替え ───
# 旧: submit(wf(seed, pos, NEG_SFW, f"{base}/{shot['name']}_s{seed}"))
# 新: submit(wf(seed, pos, NEG_SFW_INTRO_V3, f"{base}/{shot['name']}_s{seed}"))
# chibi用: submit(wf(seed, pos, NEG_CHIBI_V3, f"{base}/{shot['name']}_s{seed}"))
_gen_intro_v2_2026-05-25.py のBG_NEUTRAL定義を削除build_cs 関数を build_cs_v3 に差し替え| Day | タスク | 担当 | 成功基準 |
|---|---|---|---|
| Day1 | v3コードをスクリプトに適用・rena/misakoのday_standを1〜2枚smokeテスト | CC実装・トフィー目視 | 色飛び・水彩化が消えている |
| Day1-2 | smoke結果をCC目視→Grok評価→必要なら背景タグ微調整 | CC+Grok | Grok採点 80点以上 |
| Day3 | 全Volのs0_intro一括再生成(--force) | CC自動 | 全11枚×全Volで品質崩壊0件 |
| Day7 | 新規Vol追加時のチャラ別背景設計チェックリスト策定 | CC | チェックリスト運用開始 |
| Day14 | s0_intro品質を既存R18改善ループに組み込み | CC | 評価ループの定常運用 |
| DR名 | 関連性 |
|---|---|
| feedback_s0_intro_v1_failure_2026-05-25.md | v1失敗(chibi混入/2人/かわいくない)→v2修正の前史 |
| feedback_lighting_visual_check_rule_2026-05-25.md | 照明・色調一貫性問題・CC目視チェックルール |
| feedback_golden_winning_pattern_2026-05-22.md | R18 GOLDEN勝ちパターン(超シンプルprompt原則) |
| feedback_eval_improvement_loop_2026-05-24.md | R18改善ループ: CC目視→grok評価→実装→smoke→再目視 |
| DR_SDXLvsPonyvIllustrious品質比較2026_2026-04-28.html | Illustrious系モデル特性比較 |