🔴 DR: s0_intro v2 品質崩壊 根本原因分析・v3修正案

waiIllustriousSDXL_v160 / rena白金髪色飛び / misako水彩化 / NEG過負荷
2026-05-26 評価AI: Grok grok-4.3 目標スコア: 90点 対象: s0_intro v2 v3修正コード付き

🔴 v2スクリプト 自己採点(Grok grok-4.3 超厳しめ評価)

技術的正確性(CLIP/CFG/VAE理解)
8/25
問題解決有効性
5/25
実装品質(コード完成度・再利用性)
12/25
再発防止性
6/25
v2合計: 31 / 100 点 — 技術的破綻・即修正必須

「動かせるが品質が崩壊しやすいレベル。v3でようやく実用圏に入る」— Grok評

🎯 第1章: 結論サマリー(読み飛ばし禁止)
根本原因2点:
1. キャラの明度特性を無視した静的背景設計 → rena白金髪 + clean背景 = 色飛び崩壊
2. 性格タグによるスタイル汚染 → misakoの seductive/sultry が水彩調を引き寄せる
問題キャラ症状真因深刻度
問題1 rena(白金髪) 色飛び・目のみ青発光・肌灰色・人外化 高明度キャラ × clean背景 × warm soft lightingのハレーション 致命的
問題2 misako(栗茶髪) 水彩風・油絵風・ぼかし仕上がり seductive/sultryタグがセミリアル/絵画調を引き寄せる 重大
解決策: build_cs v3 に「キャラ別背景動的対応」+「スタイル固定タグ」+「NEG SFW専用最小化」の3点を実装。第9章に完全コードあり。
🔬 第2章: 問題1根本原因 — rena白金髪色飛び

a) CLIP Embeddingレベルの相互作用

platinum blonde(高明度ベクトル)× clean background(低情報・高明度ベクトル)× warm soft lighting(輝度強化)の3者が embedding空間で「背景と髪の境界が曖昧な領域」へ収束する。 Illustriousはこれを「髪が背景に溶け込む」方向に解釈し、色分離に失敗する。


b) Illustrious v160の学習データ傾向

白金髪+クール系キャラ(elegant / aloof beauty / cool gaze)は学習データ上で 「暗めの背景 or 高コントラスト照明」と強く共起している。 明るい中立背景との組み合わせは学習データが希薄であり、 モデルが「人外・発光体」として補完生成する。


c) CFG=6.0の作用

CFG中程度(6.0)でも、背景が低コントラストだと正方向プロンプトの明度が 過剰に強調される。結果として肌の明度が暴走し灰色化する。 CFG=5.0以下に下げても根本解決にはならない(コントラスト不足の背景が問題の核心)。


d) ice blue eyes の発光現象

cool gaze× aloof beauty× ice blue eyesの3タグが組み合わさると、 目が「光源」として機能するベクトルに収束する傾向がある。 背景が明るいと目だけが相対的に高コントラストになり、発光現象が発生する。


e) sdxl_vae_fp16fix の関与

VAEも寄与している。 sdxl_vae_fp16fix は高輝度領域でfp16の丸め誤差が大きく、肌の微細な階調(明度グラデーション)が失われやすい。 これが「灰色の肌」を助長している。標準sdxl_vae.safetensorsよりマシだが、根本解決にはならない。

BG_NEUTRAL設計ミスの確定: "clean background" はIllustrious v160においてほぼ白または極薄グレーに収束する傾向が強い。 黒髪キャラ(akari)は光を吸収するためこの現象が起きにくく、白金髪キャラ(rena)で直撃する。 「キャラの明度を考慮しない静的背景」は根本的設計ミス。
🖌️ 第3章: 問題2根本原因 — misako水彩/油絵化

a) 性格タグのスタイル汚染

seductive sultry alluring onee-san はIllustrious v160においてセミリアリスティック・絵画調にバイアスをかけるタグ群である。 アニメ調イラストを指示する他のプロンプトと衝突し、水彩・油絵スタイルを引き寄せる。


b) ボディタグの影響

voluptuous body hourglass figure curvy の組み合わせもモデルが「油絵・水彩寄りのボディ表現」を呼びやすい。 詳細なボディ描写を求めるほど、Illustriousは絵画的表現に傾く。


c) ADULT_CUTEとの衝突

ADULT_CUTEの curvy_bodymedium_breasts と misakoのbody定義 voluptuous body:1.35hourglass figure:1.3curvy:1.25重複・衝突してスタイルが不安定化する。 akariやhinataはこのbody定義が軽いため衝突が少ない。


d) NEG_SFW過負荷の影響

確定的な悪影響: chibi防止タグ15個以上 + nsfw系10個以上 + NEG_FULL(R18量産向け大量タグ)の3重積み。 SFW画像のスタイルコヒーレンスを著しく低下させる。 特にchibi防止タグ(deformed character / q-style in image / super deformed等)が アニメ調のデフォルメ表現を過剰に抑制し、モデルをリアル系・絵画系に押し込む。
⚙️ 第4章: VAE影響評価 — sdxl_vae_fp16fix

sdxl_vae_fp16fix(現在使用中)

  • 高輝度・低コントラスト領域で量子化誤差が大きい
  • ぼかし・水彩化を誘発しやすい
  • fp16の丸め誤差が肌の微細階調を失わせる
  • → 「灰色肌」現象に直接関与

sdxl_vae.safetensors(標準)

  • 高輝度領域での精度はマシ
  • ただし根本解決にはならない
  • 背景コントラスト問題が主因
  • VAE変更は補助的対策にとどまる
結論:VAEの影響は二次的。主因は「白系背景×高明度キャラ」の設計ミス。 VAE変更より背景タグとNEGの最適化を優先せよ。
🎨 第5章: BG_NEUTRALの設計問題と最適背景タグ評価

現在のBG_NEUTRAL(問題あり)

(simple soft indoor background:1.2),(clean background:1.2),(warm soft lighting:1.2),(no complex objects:1.1)
"clean background" → Illustrious v160はほぼ白または極薄グレーに収束
"warm soft lighting" → 白系キャラにハレーション誘発
→ 白金髪キャラ(rena)・淡色系キャラ(hinata)に対して色飛び直撃

背景タグ候補 優先順位評価(Illustrious v160)

順位背景タグ適合キャラ評価
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 白背景は全白系キャラに崩壊リスク・絶対使用禁止
✅ 第6章: 修正案A — キャラ別背景動的対応(Pythonコード完全形)

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)"
        )
🛡️ 第7章: 修正案C — NEG_SFW最適化・SFW専用最小NEG
現在のNEG_SFWの問題点:
NEG_FULL(R18量産向け大量タグ)+ nsfw系×10 + chibi防止×15以上 の3重構造。 chibi防止タグ群(deformed / q-style / super deformed等)がアニメ調のデフォルメを過剰抑制し、 モデルをリアル系・水彩系に押し込む。SFW画像でNEG_FULLを使い回すのは設計ミス。

SFW専用最小NEG(推奨)

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),"
)
効果: NEG総トークン数を約60%削減。スタイルコヒーレンスが向上し、 アニメ調の安定した出力が得られる。R18スクリプトのNEG_FULLとs0_intro用NEGを完全分離すること。
🎯 第8章: 修正案B — スタイル固定タグ(水彩化・絵画化防止)

キャラ別にスタイル固定タグを追加してアニメ調を強制維持する。

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)"
💻 第9章: build_cs v3 完全形コード(即コピペ使用可)
以下のコードを _gen_intro_v2_2026-05-25.pyBG_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}"))
適用手順: 1. _gen_intro_v2_2026-05-25.py のBG_NEUTRAL定義を削除
2. build_cs 関数を build_cs_v3 に差し替え
3. NEG_SFWをNEG_SFW_INTRO_V3に変更
4. chibi用NEGをNEG_CHIBI_V3に変更
5. rena / misako の 1〜2枚でsmoke test → CC目視 → OK確認後に全量再生成
📅 第10章: 30日改善プラン
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 評価ループの定常運用
⚠️ 第11章: 撤退ライン・落とし穴

落とし穴チェックリスト

撤退ライン: v3適用後もrenaのday_standで色飛び継続する場合 → CFG を 5.0 に下げる、 またはrena専用で (dark charcoal wall:1.35),(low key lighting:1.3) に変更する。
📚 第12章: 関連DR一覧
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系モデル特性比較

脚注・参照

[1] waiIllustriousSDXL_v160 モデルカード: https://civitai.com/models/827184
[2] Illustrious XL 公式リポジトリ (OnomaAI): https://huggingface.co/OnomaAIResearch/Illustrious-xl-early-release-v0
[3] SDXL VAE fp16 fix (madebyollin): https://huggingface.co/madebyollin/sdxl-vae-fp16-fix
[4] CLIP Text Encoder の Embedding 特性 (CompVis): https://github.com/CompVis/stable-diffusion
[5] CFG Scale と明度暴走の関係 (Automatic1111 Wiki): https://github.com/AUTOMATIC1111/stable-diffusion-webui/wiki/Features
[6] DPM-Solver++ 2M Karras サンプラー技術仕様: https://arxiv.org/abs/2211.01095
[7] Prompt weight による CLIP embedding 操作 (A1111 docs): https://github.com/AUTOMATIC1111/stable-diffusion-webui/wiki/Prompt-format
[8] Negative prompt のスタイル影響に関するコミュニティ実験: https://civitai.com/articles
評価AI: Grok grok-4.3 (xAI) via grok_router.py
コスト: $0.7799 (約¥115) / 2026-05-26
DR作成: Claude Sonnet 4.6 (CC)
スコア: v2=31/100 → v3目標90/100