見出し画像

【AIグラビア写真集を作ろう】同じ顔で固定して差分画像を生成する方法【ControlNet reference_only】

この記事では、Stable Diffusion Web UI の「ControlNet(reference-only)」と「inpain」を使って顔を維持したまま、差分画像を生成する方法を解説します。

今回は簡単なプロンプトでも美女が生成できるモデル「braBeautifulRealistic_brav5」を使用しています。

この方法を使えば、気に入ったイラスト・美少女の顔を固定して多種多様な服装・髪型・ポーズをとらせることが可能です。

例えば、以下のオリジナル画像に対し、顔をある程度固定したまま金髪にしたりツインテールにしたりポニーテールにすることが可能です。

オリジナル
smile,blonde hair,twintail
smiling,distressed jeans,off-the-shoulder top,

Inpaint機能を使えば変えたいところだけを変えることができます。



TikTok×AIがめっちゃ熱い!

TikTokは新たに再生回数によって収益化できるプログラムを発表しました。
そによりバズ動画を作って投稿するだけで収益化できるようになりました。

私もトリビア系や英語系などの動画で実際に収益化しています。
今後AIの規制が厳しくなる前の今がチャンス

Kさんが出されている情報ですが、様々なジャンルに対応しているのでかなりおすすめです。


Reference-only ControlNetとは?

Reference-onlyとは、ControlNet1.153以降から新たに追加されたPreprocessorです。これを使うことで、お気に入りの顔・画風などのキャラクター要素を継承したまま画像を生成できます。

近いもので追加学習のLoRAがありますが、LoRA学習をさせなくても顔・画風を保ったまま差分画像を量産することが可能です。

LoRA学習に使う素材画像が少ない・・。そんな時に役立ちます。

ControlNetの導入

ControlNetがすでに導入済みの方

ControlNetバージョン確認をしてください。
ver1.1.153以下であれば、以下の手順でアップデートしてください。

ControlNetにチェックを入れて「check for updates」でアップデートしましょう。

ControlNetが未導入の方

WebUIから拡張機能の追加をします。

https://github.com/Mikubill/sd-webui-controlnet.git

1.Extensionsタブに移動し、install from URLタブに移動します。
2.URLに上記URLを貼り付けinstallをクリックします

restartと表示されればインストール完了です

installedタブに移動し、「Apply and restart UI」を押すとWeb UIが再起動し、Taggerタブが表示されればOKです。

ControlNetモデルの追加

以下ページから必要なモデルをダウンロードします。すべてダウンロードしてもいいですし、よく使われる「canny」「openpose」「Tile」だけでもいいです。
※この記事で使用するのは「TIle」のみです。

ダウンロードしたモデルファイルを以下フォルダに入れます
stable-diffusion-webui\models\ControlNet

SageMakerの場合

Notebookの中にControlNetのコードが含まれています。

#とスペースを取り除くと有効になります。
モデルデータは容量が大きいので、使用するモデルだけを有効にしましょう。

モデルの確認

以下手順でControlNetのモデルを確認します
モデルが入っていればOKです。
もし入っていない場合は②のボタンを押して更新してみてください。

モデルの追加(Beautiful Realistic Asians(Brav5))

今回使用するモデルは「Beautiful Realistic Asians(Brav5)」というモデルです。

とてもリアルな美女が簡単なプロンプトでも生成できるとても素晴らしいモデルです。

BRAv5はcreativeml-openrail-mに準する範囲で商用利用の利用がOKのようです。
※本の出版などの著作権に関しては、当方では責任はとれませんのでご注意ください。

モデルをダウンロードし、モデルフォルダに入れましょう。

reference-onlyの使い方

  1. Enableにチェックを入れるとControlNetが有効になります。

  2. Preprocessor:reference_onlyを選びます

  3. Coltrol Weight:数値を大きくするほどControlNetの機能が強くなります。逆に弱くすると機能が薄くなっていきます。

  4. Style Fidelity:0.5が推奨されています。大きくても0.7ぐらい。

  5. ControlMode:「My prompt is …」はプロンプトを重視する。「ControlNet is …」はControlNetを重視する。という意味で、通常はBalancedでOKです。

この中でも重要なのが 「Control Weight」「Style Fidelity」です。
この値とプロンプトで生成される画像がかなり変わってきます。
推奨範囲内で調整しながら画像を生成してみてください。
他の設定はいじらなくてもいいと思います。

reference-onlyを使った写真集の作り方

常に高画質で画像を生成しているとかなり時間がいくらあっても足らないので、まずは低画質で画像を生成し、次に画像で変な個所を修正し、最後にアップスケールで画像を高画質化します。

画像生成の流れ

  1. お気に入りの画像が出るまでガチャする

  2. reference_onlyでお気に入り画像を元に差分画像を生成

  3. 出来上がった画像の変な個所をinpaintで修正

1.お気に入りの画像が出るまでガチャする

オリジナル

生成に使用したプロンプト

best quality,masterpiece:1.5,1 girl,solo,looking at viewer,shit,blue necktie,short sleeves,school uniform,upper body,white shirt,bob cut,breast pocket,indoors,
EasyNegative, ((long body)), ((bad anatomy)), [:(badhandv4:1.5):20] ,(worst quality:2),(low quality:2),(normal quality:2),((monochrome)),((grayscale)), nsfw,long body, missing fingers ,skin spots ,acnes,skin blemishes, [:(bad_prompt_version2:1.2):21]

2.reference_onlyでお気に入り画像を元に差分画像を生成

reference_onlyを使えば、お気に入りの顔を維持したまま、様々なポーズをとらせたり、服を着せ変えたりすることができます。

これを使えばAIで写真集も作れます。

ネガティブプロンプトはそのままで、プロンプトのみ変更して差分画像を生成していきます。

reference_only(ControlNet )設定

今回は以下の設定で画像を生成しています。
Control Weightが1.5になっていますが、ちょっと強すぎるので1ぐらいのほうがいいと思います。

0.差分画像を生成する

プロンプトはそのままで、差分の画像を生成することもできます。

1.白い服、手を上げる

(8k,RAW photo,best quality, masterpiece:1.2),1 girl,solo,white clothes dress,bob cut,hand up,

2.後ろを振り返る、制服にセーターを着せる

(8k,RAW photo,best quality, masterpiece:1.2),1 girl,solo,winter school uniform,bob cut,looking back,looking at viewer,indoors,

3.キャップをかぶっている、黒いシャツ、笑顔

(8k,RAW photo,best quality, masterpiece:1.2),1 girl,solo,bob cut,indoor,sitting,black shirt,smile,enjoy,street fashion,she wears a cap,

4.笑顔、ダンススタジオ、ダンス

(8k,RAW photo,best quality, masterpiece:1.2),1 girl,solo,bob cut,indoor,smile,enjoy,street fashion,she dances in a dance studio,

3.出来上がった画像の変な個所をinpaintで修正

一部だけを修正したい場合はreference_onlyを使うよりもInpaintを使ったほうが綺麗に仕上がります。

気に入った画像が生成されたけど、服のひもがない、手が5本になっている、腕がないなどの場面でInpaintはとても使えます。

inpaintに画像をドロップし、修正箇所を塗りつぶします。
promptには変更する内容を入力しジェネレートすると画像が修正されます。

一回では成功しないので、何回かガチャする必要があります。

もっと詳しくInpaintが知りたい方はこちらの記事を読んでくださいね。

仕上げ

最初から高画質で画像生成するのは時間がかかってとても効率が悪いです。

一般的には気に入った画像ができるまで低画質で生成していき、気に入った画像が出来たらアップスケール(高解像度化・高画質化)します。

この画像は512×744ピクセルで生成しているので画質が悪いです。
なので、最後の仕上げとしてHiresを使ってアップスケールします。

詳しくはこちらの記事を参考にしてみてください。


まとめ

今回は、ControlNetのreference_onlyとInpaintを使って気に入った顔を維持したまま差分画像を生成する方法について解説しました。

この方法を使えばAIグラビア写真集も作れそうですよね。


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