ロリコン春の階層マージ祭り

はじめに

 昨年12月にサイト構築作業が完了し、本年よりようやく本格的に活動を再開できるようになりました。とはいえ1、2月は忙しくてまともに活動できず最初の投稿が3月にずれ込んでしまいましたが……まず新年最初の作業として、変化した環境に合わせて学習モデル(checkpoint:以下ckpt)のブレンドレシピを見直しました。

 ”変化した環境”とは去年の不幸に関係しています。昨年10月にフォロワー約10,000人のPixivアカウントが凍結されこちらの個人サイトを急ぎ構築して逃げてきたわけですが、やむを得ぬ逃避行だったとはいえ不利益ばかりだったわけではありません。”Pixiv利用規約”という呪縛がなくなりました。これまではPixivの利用規約に配慮してあまりリアルな画風をAIに出力させないよう我慢しなければならなかったのですが、追い出された以上は最早そのような制約はありません。今後は遠慮なくフォトリアリスティックな女児妊婦をシコシコ生成&射精できます。怪我の功名ですね。
 画風をフォトリアルに寄せるにあたり、ckptのブレンドレシピを新規に作成します。またこれまでは単純マージしか使ったことがなかったのでこの機会に階層マージのやり方を学習しつつ実践してみます。

使用するもの

Checkpoints

 使用するckptはCivitAIで探索してイイ感じのものを3つ選定しました。これらを階層マージして求める表現意図を詰めていきます。

 CivitAI : https://civitai.com

 作業工程としてはRealMoonをベースにBeautifulRealisticAsiansAgainMixを階層マージして、日本人の全裸女子小学生を可愛く生成できるフォトリアル向け3次元ckptを作成します。ちなみにAgainMixの最新版はver1.9ですが、この記事を書いている最中に更新がありましたので実際に使用したのは1つ前のver1.8です。

SuperMerger

 階層マージとU-Net階層ごとのウェイト調整にはAutomatic1111の拡張機能であるSuperMergerを使います。

 sd-webui-supermerger : https://github.com/hako-mikan/sd-webui-supermerger

 拡張機能導入のやり方については特に説明も要らないと思うので省略します。また階層マージは拘りだすと底無し沼にハマってしまうので、今回は基本的な使い方に留めて作業します。
 SuperMergerの最も優れた点は、RAMに一時保存したマージモデルでtxt2imgを試行できる点にあります。いちいちSSDにマージ後モデルを書き込むことなく画像生成を実地で試せるためSSDの寿命延長に役立ちます。ちなみに私がStableDiffusionを使い始めたのは2022年8月からですが、これまでの1年数か月の間にSSD書き込み寿命の30%を消費してしまいました。また単純な時間効率も大きく改善されます。個人的な体感では単純マージと比べて10分の1くらいの作業工程になるでしょうか。2022年8~9月にWaifuDiffusion 1.2をベースに単純マージをシコシコ繰り返していた頃と比べると隔世の感があります。

 単純マージと階層マージの違いは、U-Netへの干渉具合にあります。U-Netとは深層学習の分野で頻繁に使われる畳み込みニューラルネットワーク(CNN)の一種らしいです。全然わかんねぇ。

U-Netの構造図

 StableDiffusionにおいてU-Netはノイズ拡散モデルとして使用されます。ご存知の通りStableDiffusionでの画像生成はノイズ除去のStepを繰り返すことで為されますが、このノイズ制御の中核となるのがこのU-Netなのだそうです。普段”ckpt(checkpoint)”だの”学習モデル”だの勝手に呼んでいたものは、より厳密にはU-Netモデルと呼称すべきものだったのでしょうか。そんなこと知らなかったよU-Netちゃん。ところでU-Netの構造図ってクリトリスみたいでかわいいね。
 StableDiffusionでのU-Netは入力側12階層・出力側12階層・中間1階層の25階層に分かれています。これに加えてBase-alphaの1階層を加えた26階層の重み付けをそれぞれ個別に設定して複数のモデルを1つにマージするのが階層マージです。一方の単純マージはBase-alphaのみを設定するものです。Base-alphaだけをいじる単純マージでもひぃひぃアヘアヘ言っていたのに更に25個ものパラメータを調整するんだって、大変だね。しかもU-Netのそれぞれの階層は相互に干渉し合い、最終的に生成される画像のどの部分にどの階層がどのような影響を及ぼすのかは判然としません。

BASEINMIDOUT
BASEIN00
IN01
IN02
IN03
IN04
IN05
IN06
IN07
IN08
IN09
IN10
IN11
MIDOUT00
OUT01
OUT02
OUT03
OUT04
OUT05
OUT06
OUT07
OUT08
OUT09
OUT10
OUT11
StableDiffusionにおけるU-Netの階層。25+1階層。

 上記の26個ものパラメータを細かく数値設定してその影響度合いを測るなんて正気の沙汰ではありません。ですので予め用意されているプリセットを使用して階層マージを行うことにします。

 SuperMergerで用意されている階層マージのプリセットは以下の42種です。

プリセット名各層のウェイト数値
GRAD_V0,1,0.9166666667,0.8333333333,0.75,0.6666666667,0.5833333333,0.5,0.4166666667,0.3333333333,0.25,0.1666666667,0.0833333333,0,0.0833333333,0.1666666667,0.25,0.3333333333,0.4166666667,0.5,0.5833333333,0.6666666667,0.75,0.8333333333,0.9166666667,1.0
GRAD_A0,0,0.0833333333,0.1666666667,0.25,0.3333333333,0.4166666667,0.5,0.5833333333,0.6666666667,0.75,0.8333333333,0.9166666667,1.0,0.9166666667,0.8333333333,0.75,0.6666666667,0.5833333333,0.5,0.4166666667,0.3333333333,0.25,0.1666666667,0.0833333333,0
FLAT_250,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25
FLAT_500,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5
FLAT_750,0.75,0.75,0.75,0.75,0.75,0.75,0.75,0.75,0.75,0.75,0.75,0.75,0.75,0.75,0.75,0.75,0.75,0.75,0.75,0.75,0.75,0.75,0.75,0.75,0.75
WRAP080,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1
WRAP120,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1
WRAP140,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1
WRAP160,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1
MID12_500,0,0,0,0,0,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0,0,0,0,0,0
OUT070,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1
OUT120,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1
OUT12_50,0,0,0,0,0,0,0,0,0,0,0,0,0.5,1,1,1,1,1,1,1,1,1,1,1,1
RING08_SOFT0,0,0,0,0,0,0.5,1,1,1,0.5,0,0,0,0,0,0.5,1,1,1,0.5,0,0,0,0,0
RING08_50,0,0,0,0,0,0,1,1,1,1,0,0,0,0,0,1,1,1,1,0,0,0,0,0,0
RING10_50,0,0,0,0,0,1,1,1,1,1,0,0,0,0,0,1,1,1,1,1,0,0,0,0,0
RING10_30,0,0,0,0,0,0,1,1,1,1,1,0,0,0,1,1,1,1,1,0,0,0,0,0,0
SMOOTHSTEP0,0,0.00506365740740741,0.0196759259259259,0.04296875,0.0740740740740741,0.112123842592593,0.15625,0.205584490740741,0.259259259259259,0.31640625,0.376157407407407,0.437644675925926,0.5,0.562355324074074,0.623842592592592,0.68359375,0.740740740740741,0.794415509259259,0.84375,0.887876157407408,0.925925925925926,0.95703125,0.980324074074074,0.994936342592593,1
REVERSE-SMOOTHSTEP0,1,0.994936342592593,0.980324074074074,0.95703125,0.925925925925926,0.887876157407407,0.84375,0.794415509259259,0.740740740740741,0.68359375,0.623842592592593,0.562355324074074,0.5,0.437644675925926,0.376157407407408,0.31640625,0.259259259259259,0.205584490740741,0.15625,0.112123842592592,0.0740740740740742,0.0429687499999996,0.0196759259259258,0.00506365740740744,0
SMOOTHSTEP*20,0,0.0101273148148148,0.0393518518518519,0.0859375,0.148148148148148,0.224247685185185,0.3125,0.411168981481482,0.518518518518519,0.6328125,0.752314814814815,0.875289351851852,1.,0.875289351851852,0.752314814814815,0.6328125,0.518518518518519,0.411168981481481,0.3125,0.224247685185184,0.148148148148148,0.0859375,0.0393518518518512,0.0101273148148153,0
R_SMOOTHSTEP*20,1,0.989872685185185,0.960648148148148,0.9140625,0.851851851851852,0.775752314814815,0.6875,0.588831018518519,0.481481481481481,0.3671875,0.247685185185185,0.124710648148148,0.,0.124710648148148,0.247685185185185,0.3671875,0.481481481481481,0.588831018518519,0.6875,0.775752314814816,0.851851851851852,0.9140625,0.960648148148149,0.989872685185185,1
SMOOTHSTEP*30,0,0.0151909722222222,0.0590277777777778,0.12890625,0.222222222222222,0.336371527777778,0.46875,0.616753472222222,0.777777777777778,0.94921875,0.871527777777778,0.687065972222222,0.5,0.312934027777778,0.128472222222222,0.0507812500000004,0.222222222222222,0.383246527777778,0.53125,0.663628472222223,0.777777777777778,0.87109375,0.940972222222222,0.984809027777777,1
R_SMOOTHSTEP*30,1,0.984809027777778,0.940972222222222,0.87109375,0.777777777777778,0.663628472222222,0.53125,0.383246527777778,0.222222222222222,0.05078125,0.128472222222222,0.312934027777778,0.5,0.687065972222222,0.871527777777778,0.94921875,0.777777777777778,0.616753472222222,0.46875,0.336371527777777,0.222222222222222,0.12890625,0.0590277777777777,0.0151909722222232,0
SMOOTHSTEP*40,0,0.0202546296296296,0.0787037037037037,0.171875,0.296296296296296,0.44849537037037,0.625,0.822337962962963,0.962962962962963,0.734375,0.49537037037037,0.249421296296296,0.,0.249421296296296,0.495370370370371,0.734375000000001,0.962962962962963,0.822337962962962,0.625,0.448495370370369,0.296296296296297,0.171875,0.0787037037037024,0.0202546296296307,0
R_SMOOTHSTEP*40,1,0.97974537037037,0.921296296296296,0.828125,0.703703703703704,0.55150462962963,0.375,0.177662037037037,0.0370370370370372,0.265625,0.50462962962963,0.750578703703704,1.,0.750578703703704,0.504629629629629,0.265624999999999,0.0370370370370372,0.177662037037038,0.375,0.551504629629631,0.703703703703703,0.828125,0.921296296296298,0.979745370370369,1
SMOOTHSTEP/20,0,0.0196759259259259,0.0740740740740741,0.15625,0.259259259259259,0.376157407407407,0.5,0.623842592592593,0.740740740740741,0.84375,0.925925925925926,0.980324074074074,1.,0.980324074074074,0.925925925925926,0.84375,0.740740740740741,0.623842592592593,0.5,0.376157407407407,0.259259259259259,0.15625,0.0740740740740741,0.0196759259259259,0
R_SMOOTHSTEP/20,1,0.980324074074074,0.925925925925926,0.84375,0.740740740740741,0.623842592592593,0.5,0.376157407407407,0.259259259259259,0.15625,0.0740740740740742,0.0196759259259256,0.,0.0196759259259256,0.0740740740740742,0.15625,0.259259259259259,0.376157407407407,0.5,0.623842592592593,0.740740740740741,0.84375,0.925925925925926,0.980324074074074,1
SMOOTHSTEP/30,0,0.04296875,0.15625,0.31640625,0.5,0.68359375,0.84375,0.95703125,1.,0.95703125,0.84375,0.68359375,0.5,0.31640625,0.15625,0.04296875,0.,0.04296875,0.15625,0.31640625,0.5,0.68359375,0.84375,0.95703125,1
R_SMOOTHSTEP/30,1,0.95703125,0.84375,0.68359375,0.5,0.31640625,0.15625,0.04296875,0.,0.04296875,0.15625,0.31640625,0.5,0.68359375,0.84375,0.95703125,1.,0.95703125,0.84375,0.68359375,0.5,0.31640625,0.15625,0.04296875,0
SMOOTHSTEP/40,0,0.0740740740740741,0.259259259259259,0.5,0.740740740740741,0.925925925925926,1.,0.925925925925926,0.740740740740741,0.5,0.259259259259259,0.0740740740740741,0.,0.0740740740740741,0.259259259259259,0.5,0.740740740740741,0.925925925925926,1.,0.925925925925926,0.740740740740741,0.5,0.259259259259259,0.0740740740740741,0
R_SMOOTHSTEP/40,1,0.925925925925926,0.740740740740741,0.5,0.259259259259259,0.0740740740740742,0.,0.0740740740740742,0.259259259259259,0.5,0.740740740740741,0.925925925925926,1.,0.925925925925926,0.740740740740741,0.5,0.259259259259259,0.0740740740740742,0.,0.0740740740740742,0.259259259259259,0.5,0.740740740740741,0.925925925925926,1
COSINE0,1,0.995722430686905,0.982962913144534,0.961939766255643,0.933012701892219,0.896676670145617,0.853553390593274,0.80438071450436,0.75,0.691341716182545,0.62940952255126,0.565263096110026,0.5,0.434736903889974,0.37059047744874,0.308658283817455,0.25,0.195619285495639,0.146446609406726,0.103323329854382,0.0669872981077805,0.0380602337443566,0.0170370868554658,0.00427756931309475,0
REVERSE_COSINE0,0,0.00427756931309475,0.0170370868554659,0.0380602337443566,0.0669872981077808,0.103323329854383,0.146446609406726,0.19561928549564,0.25,0.308658283817455,0.37059047744874,0.434736903889974,0.5,0.565263096110026,0.62940952255126,0.691341716182545,0.75,0.804380714504361,0.853553390593274,0.896676670145618,0.933012701892219,0.961939766255643,0.982962913144534,0.995722430686905,1
TRUE_CUBIC_HERMITE0,0,0.199031876929012,0.325761959876543,0.424641927083333,0.498456790123457,0.549991560570988,0.58203125,0.597360869984568,0.598765432098765,0.589029947916667,0.570939429012346,0.547278886959876,0.520833333333333,0.49438777970679,0.470727237654321,0.45263671875,0.442901234567901,0.444305796682099,0.459635416666667,0.491675106095678,0.543209876543211,0.617024739583333,0.715904706790124,0.842634789737655,1
TRUE_REVERSE_CUBIC_HERMITE0,1,0.800968123070988,0.674238040123457,0.575358072916667,0.501543209876543,0.450008439429012,0.41796875,0.402639130015432,0.401234567901235,0.410970052083333,0.429060570987654,0.452721113040124,0.479166666666667,0.50561222029321,0.529272762345679,0.54736328125,0.557098765432099,0.555694203317901,0.540364583333333,0.508324893904322,0.456790123456789,0.382975260416667,0.284095293209876,0.157365210262345,0
FAKE_CUBIC_HERMITE0,0,0.157576195987654,0.28491512345679,0.384765625,0.459876543209877,0.512996720679012,0.546875,0.564260223765432,0.567901234567901,0.560546875,0.544945987654321,0.523847415123457,0.5,0.476152584876543,0.455054012345679,0.439453125,0.432098765432099,0.435739776234568,0.453125,0.487003279320987,0.540123456790124,0.615234375,0.71508487654321,0.842423804012347,1
FAKE_REVERSE_CUBIC_HERMITE0,1,0.842423804012346,0.71508487654321,0.615234375,0.540123456790123,0.487003279320988,0.453125,0.435739776234568,0.432098765432099,0.439453125,0.455054012345679,0.476152584876543,0.5,0.523847415123457,0.544945987654321,0.560546875,0.567901234567901,0.564260223765432,0.546875,0.512996720679013,0.459876543209876,0.384765625,0.28491512345679,0.157576195987653,0
ALL_A0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
ALL_B1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
ALL_RR,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R
ALL_UU,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U
ALL_XX,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X

 上記プリセットのうちALL_A・ALL_B・ALL_R・ALL_U・ALL_Xはエラーを吐いて動かなかったので、これら5種を省いた37種を一時マージしてtxt2imgを試行しました。

階層マージの実践

比較用グリッド画像を作ろう

 それでは一時マージによるtxt2img試行を実践していきます。1枚1枚個別に画像を生成しただけだと比較しにくいので、AUTOMATIC1111ユーザーにはお馴染みのスクリプトXYZ Plotを使って比較用のグリッド画像を作ります。またプリセット全種を一度に試してしまうとグリッド画像が長くなりすぎて見にくいため、数回に分けてXYZ Plotを走らせます。WebUI上での実際の操作画面は以下のようになります。

 まずはRealMoonBeautifulRealisticAsiansを一時マージしてプリセットごとに比較します。実際に生成された比較用グリッド画像は以下になります。数が多い上に1枚1枚が馬鹿でかいので気を付けて。大量のマンコにモザイク掛けるのがクソほど面倒だったよ。

 お顔とお体の感じの良さ、また指や体などの破綻の少なさからMID12_50が良いんじゃないかなぁと思いました。というわけでMID12_50プリセットの数値[0,0,0,0,0,0,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0,0,0,0,0,0]でRealMoonBeautifulRealisticAsiansを階層マージします。

 階層マージしたckptに名前を付けます。正確かつ分かりやすいように[realMoon_v10+(MID12_50)beautifulRealistic_v7.safetensors]としました。長いけど仕方ないね。

 続けてAgainMixのマージ試行に移ります。先程と同じようにXYZ Plotでグリッド画像を作ってプリセット全種を比較します。やっぱり画像の数が多い上に馬鹿でかいので気を付けて。

 RealMoonには黄色人種の裸体を生成させると過剰に肌が黄色くなりすぎる特徴があります。白人が学習元の主体となっているckptなのでそれ以外の人種の形質を強調してしまっているのかも。BeautifulRealisticAsiansはアジア人に特化したckptですが、これも画面全体の画作りが黄色っぽい……というか茶色っぽくなる癖があります。一方のAgainMixはK-POPアイドルや中国人・韓国人女優を学習元の主体としているために化粧が濃く、RealMoonとは逆に黄色人種の肌(と背景)を白く塗り過ぎるキライがあります。これら3つを掛け合わせて中間程度に抑えれば、肌の色合いがちょうど良い自然な日本人女児が生成できるんじゃないかなぁと思ったのがAgainMixを採用した理由です。
 基本的な構図や人体のバランスは先程ブレンドした[realMoon_v10+(MID12_50)beautifulRealistic_v7.safetensors]で完成されています。ですのでそれらを崩さず、お顔の感じや肌の色をその辺にいる日本人の女子小学生っぽくしてくれるプリセットはどれかと考え、R_SMOOTHSTEP/2が適当だろうと結論付けました。というわけでR_SMOOTHSTEP/2のプリセット数値で階層マージを実行します。
 そしてマージ済みのckptに名前を付けるのですが……[realMoon_v10+(MID12_50)beautifulRealistic_v7+(R_SMST/2)againmix_v18.safetensors]と名付けようと思ったらエラーが出てしまいました。恐らく(R_SMST/2)の部分に含まれる/(スラッシュ)がフォルダ・ディレクトリの階層を示すコードとシステムが勘違いしてしまったんじゃないかと推測し、[realMoon_v10+(MID12_50)beautifulRealistic_v7+(R_SMSTslash2)againmix_v18.safetensors]と直したら問題なく階層マージが完了しました。私、頭が冴えてるかも。アガサ・クリスティっぽく書くと「私の灰色のロリコン脳細胞が活動を始めた」って感じ。
 さて、出来上がった階層マージモデル[realMoon_v10+(MID12_50)beautifulRealistic_v7+(R_SMSTslash2)againmix_v18.safetensors]を使って試しに女児画像を生成し、最後まで仕上げたフォトリアリスティック女児妊婦ちゃんが以下になります。

 以上、SuperMergerを用いた階層マージでフォトリアル女児妊婦向けckptをブレンドしてみました。いやぁこんなリアルな疑似児童ポルノを合法的に制作できるなんて、AIって本当に素晴らしいものですね。実在児童を傷付けずにロリコンチンポを満足させられるのですから、正に人類の英知です。今後もAIさんにはどんどん進歩してもらって、この世の特殊性癖者全員を救済してもらいたいものです。

2024年03月04日 お風呂でオシッコマン (in JP) = Pissman in a Bathtub (in EN)