見出し画像

controlnet使ってAIイラストにアブストラクト味を追加する話

はじめに(後から突っ込まれた時の予防線のようなもの)

普段自分がよく使っているcontorlnetの使い方を書いてみます。
もちろん自分自身の備忘的な意味もありますし、誰かにちょっとでも刺さって欲しいという欲望もあります。
もともとは、AIイラストで輪郭線を超えた塗りを発生させるにはどうすればいいか?みたいなところから出発してるのですが、いまとなってはまぁなんのことやらと言った感じです。

いつも通り技術的なことは何も書かない上に、だいぶいろいろ端折って書いてあるので、わかりにくくてすいません。それと「こうすればみんなも同じ画像ができるよ」という記事ではなく、「こんなことしてるから、プロンプトで再現とか無理なんすよ」という言い訳の記事でもあるので、その辺をご理解ください。

メインとなるイラストを用意する

まずはメインとなるイラストを用意する。
最近のお気に入りのやり方として、cotronetのtile_resampleで画像を細かくしておいて、i2iで少しならすみたいなことをやってることが多いです。
↓メインになるイラスト

1girl,Silver-haired woman, fox ears, detailed eyes, relaxed atmosphere, face close-up,flowers, flower united with hair,Detailed hair flow Negative prompt: EasyNegativeV2,(blush,eye shadow,make-up:1.5) Steps: 30, Sampler: DPM++ SDE Karras, CFG scale: 7, Seed: 3648930146, Size: 1563x1024, Model hash: 0b792b696a, Model: defmixV30_v30, Denoising strength: 0.45, Clip skip: 2

どちらかというといつも運任せなのでプロンプト少な目です。
メインイラストを別に用意して、後で合成する理由として、自分は油絵っぽいインクの乗ったイラストが好きで、どうしてもプロンプトに「oil paint」とか入れなくてはいけなくて、でもそうすると、AIさんが張り切って「油絵を描いている女の子」を書き出してしまうのですよ。それを避けるため、まずはプロンプトの代わりにイラストを用意しているという感じです。

合成用のアブストラクトな画像を用意する

アブストラクトといってもそもそもの意味が「抽象的」みたいな意味であり、それぞれがそれぞれにアブストラクトを思い浮かべてしまうと、話が進まないので、とりあえず僕のイメージするアブストラクトな画像とは、ゲルハルト・リヒターとか、マーク・ロスコとかが描いたような絵として話を進めます。もちろんそれ以外の現代美術家の名前とかは知りません。
作るのに以前は本家のSDを使っていたけど、midjourneyの方が圧倒的にイメージ通りのものが仕上がるので、現在はほとんどこっちを使っている。

midjourneyで出力
プロンプト:The abstract abstract painting, the use of white, the use of colors with a sad atmosphere, and the dynamic brushwork give sharpness

midjourneyはこういう現代抽象画の模倣みたいなのを作るのがめっちゃうまいです。
この画像と自分の生成したイラストを元にしてcontorlnetで使う用のアブストラクトな画像を作っていきます。

合成用に引っ張ってきた過去作
pnginfo:1girl,solo,Female in her 20s, detailed eyes, dark eyes, dark hair, short messy hair, frilly blouse, miniskirt, dynamic angle,small breasts, Big difference in color tone,detailed description,indoor, Lyrical abstraction,traditional media,oil painting ,dynamic action painting Negative prompt: (worst quality:1.5), (low quality:1.5),(blush,eye shadow,make-up:1.5),normal quality, text, watermark,vfx, a hologram, dau-al-set, key art, computer graphics, sots art,(mask;1.5),(bokeh:1.5),(picture frame:1.5) Steps: 28, Sampler: DPM++ SDE Karras, CFG scale: 7, Seed: 3160961201, Size: 512x512, Model hash: 0b792b696a, Model: defmixV30_v30, Denoising strength: 0.5, Clip skip: 2, Hires upscale: 2, Hires steps: 14, Hires upscaler: Latent

PNGinfoで開いた過去作をそのままi2iに送って、縦横を512x512にDenoising strengthを0.7に設定。
controlnet shuffleに用意したアブストラクト画像を設定。pixcel perfectだけチェックあとはそのまま
scriptからSD upscalerを選ぶ(設定はそのまま)
この設定で生成すると下のような画像が完成する

1girl,solo,Female in her 20s, detailed eyes, dark eyes, dark hair, short messy hair, frilly blouse, miniskirt, dynamic angle,small breasts, Big difference in color tone,detailed description,indoor, Lyrical abstraction,traditional media,oil painting ,dynamic action painting Negative prompt: (worst quality:1.5), (low quality:1.5),(blush,eye shadow,make-up:1.5),normal quality, text, watermark,vfx, a hologram, dau-al-set, key art, computer graphics, sots art,(mask;1.5),(bokeh:1.5),(picture frame:1.5) Steps: 28, Sampler: DPM++ SDE Karras, CFG scale: 7, Seed: 3160961201, Size: 512x512, Model hash: 0b792b696a, Model: defmixV30_v30, Denoising strength: 0.7, Clip skip: 2, SD upscale overlap: 64, SD upscale upscaler: None, ControlNet 0: "preprocessor: shuffle, model: control_v11e_sd15_shuffle [526bfdae], weight: 1, starting/ending: (0, 1), resize mode: Crop and Resize, pixel perfect: False, control mode: Balanced, preprocessor params: (512, 64, 64)"

アブストラクトな雰囲気に適度にイラストっぽい顔が合成された画像が完成する。どうしてこうなるのかはあくまで自分の見解だけれど、SD upsclerは画像を小さなタイルに分割して、それをそれぞれ拡大、その後一枚にまた戻すという機能を持っているんですよ。shuffleを使うと、切り取ったタイル一枚ごとにshuffleをかけていて、Denoising strengthを高めに設定しておくと、それぞれが関連を無視した度合いまでタイルを変えてしまうので、上記のような画像になるのだと。多分これは合ってる。Denoising strengthを低めに設定するとわかります。

実はこの工程を経る必要があるかどうかは自分ではよくわからないんです。普通にmidjourneyで出した画像をそのまま使っても多分、そんなに変わらない気がします。(実際そうすることも多い)でも、なんとなくこの適度にイラストが描かれてる画像の方が、いい結果を残すような気がして、半分おまじないのように画像を作っています。

controlnetを使った画像の後加工

これでcontrolnetを使った画像合成の素材が出そろいました。
t2iで作業します。
Hires. fixにチェックを入れて、step数はSampling stepsの半分Denoising strengthは0.5(これがベストだと思う)
controlnetを2つ同時使います。unit0は最初に用意したメインイラストを読み込んでcannyで抽出させます。unit1はアブストラクト画像を読み込ませてshuffleを設定します。
ともにpixcel perfectにチェックを入れます。
shuffleの方は、やってみればわかるんですが、Control Weightが1ではアブストラクト要素が強く出すぎて、わけのわからん画像になるので1以下で最適な数値を探る必要があります。
あと、Ending Control Stepを0.5くらいに設定してもアブストラクトな要素を除外できることがある。この辺はお好みで調整が必要。
プロンプトは基本メインとなるイラストから持ってくる。その都度強度の調整とかしたりする。
で、出来上がった画像が↓

あえて大きい画像で
1girl,Silver-haired woman, fox ears, detailed eyes, relaxed atmosphere, face close-up,flowers, flower united with hair,Detailed hair flow,big ribbon on head, Lyrical abstraction,traditional media,oil painting ,dynamic action painting
Negative prompt: (worst quality:1.5), (low quality:1.5),(blush,eye shadow,make-up:1.5),normal quality, text, watermark,vfx, a hologram, dau-al-set, key art, computer graphics, sots art,(mask;1.5),(bokeh:1.5)
Steps: 30, Sampler: DPM++ SDE Karras, CFG scale: 7, Seed: 140486586, Size: 768x512, Model hash: 0b792b696a, Model: defmixV30_v30, Denoising strength: 0.5, Clip skip: 2, ControlNet 0: "preprocessor: canny, model: control_v11p_sd15_canny [d14c016b], weight: 1, starting/ending: (0, 1), resize mode: Crop and Resize, pixel perfect: True, control mode: Balanced, preprocessor params: (512, 100, 200)", ControlNet 1: "preprocessor: shuffle, model: control_v11e_sd15_shuffle [526bfdae], weight: 0.5, starting/ending: (0, 1), resize mode: Crop and Resize, pixel perfect: True, control mode: Balanced, preprocessor params: (512, 64, 64)", Hires upscale: 2, Hires steps: 15, Hires upscaler: Latent

プロンプトのbig ribbonとかどこいったよw
割と自分の信条が「パっと見でなんかすごそうに見せる」なので、細かいことは気にしない。これで完成。

最後に

というわけで、自分が普段どんなことをやっているかの紹介でした。
呪文生成というよりは、画像編集の方がやってるイメージに近い。
プロンプトできっちり作りたいものを突き詰めるというより、偶発性にすべてをゆだねてる感が強いです。
それでも、自分はこの方法で出てくるイラストの雰囲気が好きなので、お気に入りの手法です。

この記事が気に入ったらサポートをしてみませんか?