技術 約6分で読めます

LoRA素材から汗・装飾の6枚を抜いて再学習したらangryの汗が完全に消えた

いけさん目次

前回の検証記事 の最後で、ep08 angryに出ていた汗ドロップは学習素材の kanachan_nervous.png 由来だと特定して、「学習素材の掃除を優先するのが本筋」と書いて終わっていた。本筋を通しに行ったらどうなるか、を実証する記事。

学習設定は前回と完全に同一。変えたのは学習素材から6枚抜いただけ。これで汗が消えるかどうかを見る。

抜いた6枚と理由

かなちゃんカラー/ から以下を除外した。

除外ファイル理由
kanachan_nervous.png顔・首に明確な汗ドロップ。前回特定の犯人
kanachan_drunk.png開いた口から首までよだれが描き込まれている
kanachan_disgusted.png顔色が緑がかった「気持ち悪さ」エフェクト
kanachan_yandere.png目のハイライト消失+暗い影。基底モデルの典型表現と被って汚染しやすい
kanachan_solid_circle_eyes.pngキャプションは solid circle eyes だが画像は通常の目(キャプションと画像の不一致)
kanachan_suprised.pngsurprised と同じキャプションで重複(ファイル名typo)

汗・よだれ・色エフェクト・目の影は前回記事で「顔close-upに装飾が混入すると概念が紐付く」と整理した類型そのもの。solid_circle_eyes はキャプションと画像が合っていないノイズ。suprised はtypo違いで surprised と同一キャプションの重複なので学習量を稼ぐ意味もない。

53枚で再学習。output_namekanachan_v17_dim16_clean にして旧V17とファイル単位で区別したのと、sample_prompts に汗ドロップを追跡しやすいように angry プロンプト(ネガに sweat, sweat drop)と full body プロンプトを足した以外は前回と同じ。

学習ステップは 5,900 → 5,300 に減って、4090での所要時間は 51分 → 41分。コストはほぼ変わらず合計約 $1。

ep08 angryから汗が完全に消えた

比較画像は前回記事と同条件(ComfyUI、seed=42、cfg=7、steps=28、sampler=euler_a、1024×1024生成→lbpcascade_animefaceで顔サイズ揃え)。左から: 学習元 / 旧V17 ep08 / 新V17 ep08。

training source angry old V17 ep08 angry new V17 clean ep08 angry

旧V17 ep08で額・こめかみ・首・髪に出ていた汗ドロップが、新V17 ep08では一滴も出ていない。「nervous経由でkanachan+汗の概念紐付けが起きていた」仮説は実証された形。

新V17もベースモデル側の anime angry 典型に引っ張られて歯見せ絶叫寄りになるのは旧と同じ傾向。ただし装飾的な「汗」は素材にない時点で混ざる経路が消えるので、表情の強度解釈と装飾の出現は別軸の問題だとわかる。前回の記事では両方混ざった結果を見ていたので切り分けができていなかった。

angryをエポック進行で見る

旧V17では ep05/06 はほぼ汗なし、ep07 でこめかみに小さく出始め、ep08 で首・髪まで増えるという経緯だった(前回記事で確認済み)。新V17 clean では同じ流れがどう変わったか。左から ep05 / ep06 / ep07 / ep08。

ep05 angry ep06 angry ep07 angry ep08 angry

ep05 から ep08 までどのエポックでも汗が出ない。「LoRA の効きが強くなるほど周辺概念を引き込む」という前回観察の周辺概念側に汗がない以上、効きが強くなっても引き込めない、という素直な結果。

ep06で「口閉じ抑え怒り」が出た(おまけ)

前回記事で「どのエポックも素材の口閉じ・抑えめ怒りは再現できてない。59枚の訓練量ではキャラ固有の感情抑制スタイルは拾えず、ベースモデルの anime 怒り典型が勝つ」と書いた。これが新V17のep06で覆った。

new V17 clean ep06 angry

口を閉じて眉根を寄せた抑えめの不機嫌顔。ep06 単独で出ただけで ep07・ep08 では再び歯見せに戻るので「常に出る」わけではないが、旧V17では10エポック通して一度も観測できなかった表情が出てきたのは大きい。

汗・色エフェクト・目の影といった装飾要素を素材から抜いたことで、angry プロンプトに対して引き込まれる隣接概念が減った可能性が高い。装飾が混入しているとLoRAは「kanachan + 怒り + 汗 + 強い色 + 大口」の塊で学習してしまい、エポックが進むほど塊全体が濃くなる。塊の構成要素が少なければ、エポック途中でベースモデル寄りでも素材寄りでもない中間状態に落ち着く瞬間が出やすい、ということかもしれない。

smile portraitは顔忠実度を維持

汗対策で素材を6枚減らしたぶん、キャラ造形に影響が出ていないかを確認しておく。

training source smile old V17 ep08 smile new V17 clean ep08 smile

顔忠実度は旧V17と同等。除外した6枚は感情寄りの表情が中心で、smile・wink・closed_eyes など中立寄りの表情は残しているので、顔造形のコアになるサンプルは温存されている形。

smileをエポック進行で見る

キャラ造形の安定性チェック用。左から ep01 / ep02 / ep03 / ep04、次の行に ep05 / ep06 / ep07 / ep08、最後に ep09 / 最終(ep10)。

ep01 smile ep02 smile ep03 smile ep04 smile ep05 smile ep06 smile ep07 smile ep08 smile ep09 smile final smile

ep01 の時点ですでにキャラ造形はほぼ寄っている(前回と同じ傾向)。ep02 でサイドテール+青いシュシュが定着、ep03〜ep04 で全体がキャラに寄り切る。ep05 以降は微差で、感覚的なピーク選定は ep06〜ep08 から好みで選べる範囲。

full body school uniform

sample_promptsfull body, school uniform のプロンプトを足したので、毎エポックの全身バランスも追えるようになった。

new V17 clean ep08 full body

ブレザー+赤ネクタイ+プリーツスカート+ハイソックスの典型構成が安定して出る。全身ポーズ画像は前回記事でも「装飾があっても干渉しにくい」と書いた通り、6枚除外の影響を受けない領域。

ちなみにこの生成では本来左寄り(viewer側右)にあるはずのサイドテールが反対側に出ている。これはこの新V17 clean固有の問題ではなく、SDXL系LoRAで時々起きる左右反転の典型例で、別シードを引けばすぐ正しい側に戻る。素材掃除と関係ない通常運転の挙動なので、記事内では補正せずそのまま載せた。

「ガビ」感はLoRAではなく生成設定の差

ここまで載せた新V17 clean側の画像は全部 sd-scripts が学習中に自動で吐くサンプルで、髪のキワや塗りに「ガビっぽい」ザラつきが残っている。LoRAの仕上がりが悪いと誤解されかねないので、ComfyUI で実運用設定を組んで生成し直してみる。

使った設定は次の通り。

項目
CheckpointWAI-Illustrious v17 + 新LoRA kanachan_v17_dim16_clean.safetensors(最終エポック)
LoRA strengthmodel 1.0 / clip 0.8
steps / cfg30 / 6
sampler / schedulereuler_a / karras
denoise1.0
解像度832×1216(縦長)
ポジティブ要点kanachan, left side ponytail, medium hair, double parted bangs, ahoge, pure white collared shirt, red necktie, navy skirt, sheer pantyhose, ...masterpiece, best quality, amazing quality, absurdres
ネガティブ要点通常の品質ネガに加えて right side ponytail / twin tails / high ponytail / two side up などキャラと違うヘアスタイルを除外、(text:1.5) / signature / watermark 等のテキスト系も明示除外

バストアップ smile(本文上部の sd-scripts smile と比較)。

ComfyUI proper smile

バストアップ angry(本文上部の sd-scripts angry と比較)。

ComfyUI proper angry

フルボディ。

ComfyUI proper full body

学習中サンプルにあった髪・制服のザラつきが消え、パンスト越しの肌の透け、ローファーの艶、リボンタイの陰影まで素直に出る。ガビっぽさは LoRA の問題ではなく、sd-scripts 内蔵サンプラー(軽量パス)+シンプルすぎるプロンプト+スケジューラなしの組み合わせで作られていただけだった。