眼鏡っ娘に特化した画像生成
いい感じの出力ができるようになってきたので進捗報告のメモです。
生成した画像はここに溜めてます。↓
いつからやってるの?
2023年2月末頃から。
この記事書いてる時点で10日目くらいです。
元々「眼鏡どうぞAI」なる、イラストのキャラに似合う眼鏡を生成するAIを作ってました。なので機械学習の環境と大量の眼鏡っ娘データだけはある状態からのスタートです。(CUDA、Python、PyTorch、Xformers...必要なものはだいたいインスト済みだった)
モデルなに使ってるの?
Stable Diffusionの自前モデル(眼鏡っ娘たくさん)と以下2つをブレンドしたものです。
・Abyss Orange Mix3 A1(アニメ寄りなチューンのやつ)
・Counterfeit V2.5(背景つよつよ)
※追記:配布元のNSFWポリシーに従い今は配合が変わっています(エロい絵にも使うので)
あと、どんな構図でも眼鏡が壊れにくいようファインチューニングしてます。(そのかわり眼鏡以外がよく壊れる気はする)
破綻を防ぐ目的のネガティブプロンプトは不要で、わりと最低限の指定だけで好みの眼鏡っ娘が生まれます。
今のところモデルの公開は考えてないです。
眼鏡っ娘以外を描くなら他のモデル使った方がいいというか、プロンプトに "glasses" が入ってるかどうかで精度が段違いなので……
※追記:今はモデル公開してます
おすすめのサンプラーは?
「a」が入ってるの全般、ステップで構図が変わりやすいから避けてます。
「DPM fast」「DPM adaptive」、挙動が特殊なので使いません。
「DDIM」、仕上がった後に安定するので最適なステップ数が読めないときはこれ。
「~Karras」系全般、ステップ進めすぎるとエッジが立ってくるので手加減が大事。
で、主に使ってるのは、収束の早い「DPM++ SDE Karras」か、細かい描写に強そうな「DPM++ 2M Karras」です。
他の人たちは「DDIM」や後者の「DPM++ 2M Karras」を使ってるケースが多い印象?
まぁ、ぶっちゃけ好みの世界だとは思います。
構図指定とか
細かく指定したいときは、ControlNetとかLatentCoupleとか使ってます。
が、眼鏡の描写精度が落ちるので極力AIにお任せです。
(特にANDでプロンプト区切ったりすると必要なステップ数が跳ね上がるので)
プロンプトで指定する時は、"wide shot" で画角を広げたり、"canted angle" とか "dutch angle" とかでカメラを斜めにしたりしてます。
たぶんこの辺は他の人達の方が詳しい筈。
その他のパラメータ
Seed:
基本的にランダム。
一発勝負が多いです。
CFG Scale:
だいたい7か8固定、その日の気分次第で決めてます。
(普通は、良いシードを見つけた後、この数値を変えながら生成繰り返すらしい?)
Steps:
原寸(512x512)でサンプラーが「DPM++ SDE Karras」だと10~20ステップでわりと完成するのでそれで。
惜しい感じのが出たら、シードを固定してステップ上げてみたりします。
綺麗なのが欲しいときは、ハイレゾ化して40ステップ前後まで回しますが、変な方向に収束しそうになって途中でピックアップする事もあります。
眼鏡を破綻させないコツとか
プロンプトの一番はじめに "glasses" と書きましょう。
眼鏡の種類を指定したいときは "~ rim glasses" とか指定します。
(うちのモデルは好みの眼鏡を教え込んであるので指定しない方が精度良かったり……)
引きの構図(顔が小さく描かれる場合)の時は "detail face" とかプロンプトに足しとくと潰れにくくなります。
プロンプトは各単語のコサイン類似度で判定されてるので "glasses detail" とかセットで書いとくと眼鏡の詳細描写がされるかもしれません。
(裸眼女子の隣に実写眼鏡が生まれるという悲しい結果になるケースもあるけど)
とりあえず
うちの場合は、プロンプトで四苦八苦するよりも「眼鏡っ娘とはなんぞや」をしっかり学習させた方が楽だったのでそうした感じです。
いっそのこと "megane" で通じるようにしようかと思ったものの、ブレンドするモデルとの相性が悪くなるので断念しました。
(同じスペルだからルノー社のメガーヌとかいう車が混入してくる)
まだ試してないんですがLoRAとかどうなんですかね?
この記事が気に入ったらサポートをしてみませんか?