ブログ
これまでに経験してきたプロジェクトで気になる技術の情報を紹介していきます。
生成AI素人のプログラマが、生成AIを使ってHPのTOPページを作ってみた ⑦
◆HPで使用する画像の生成 その③
前回では HPで使用する画像の3、4枚目を生成しました。
今回は5、6、7枚目を生成していきます。
◆(5枚目)格闘をイメージしたアニメ
5枚目は格闘ゲームの構図を元にしたアニメ画像の生成を試みようと思います。
1. 作りたい画像のイメージ決め
最初に作りたい構図の画像を決めます。
具体的には下の構図を元にしたアニメ画像の生成を試みます。
引用元:https://www.ea.com/ja-jp/games/ufc/ufc-4
2. Checkpoint の設定
格闘アニメに合いそうな絵柄で・・・という事で手持ちより「westernAnimation_v1(SD 1.5)」を選択しました。
3. Prompt の設定
◆Prompt
best quality, masterpiece, 1 youth, 1 zombie, over the city, anime, anime screencap, <lora:ClearHand-V2:1>
【各タグの内容】
設定項目 | タグ内容 | Tag |
---|---|---|
品質 | 最高品質 | best quality |
品質 | 傑作 | masterpiece |
対象 | 若者 | 1 youth |
対象 | ゾンビ | 1 zombie |
背景 | 都市上空 | over the city |
絵柄 | アニメ | anime |
絵柄 | アニメ塗り | anime screencap |
Lora | 綺麗な手 | <lora:ClearHand-V2:1> |
※Prompt の「<」と「>」は本来は半角です。ここのブログでは化けるので、しぶしぶ全角で記載しています。
今回、構図は画像から参照するので、それ以外の対象と背景を定義する形となります。
イメージとしては都市の上空で殴り合う二人・・・みたいな感じにしたいなと。
◆Negative Prompt
EasyNegativeV2, negative_hand-neg
【各タグの内容】
タグ内容 | Tag |
---|---|
品質低下防止(SD 1.5) | EasyNegativeV2 |
変な手防止(SD 1.5) | negative_hand-neg |
こちらはいつもの 品質低下防止と変な手防止のテキスト反転モデルのみとなります。
4. 拡張機能(ControlNet)の設定
入力した画像の構図を元に画像を生成するのに Stable Diffusion の拡張機能(以降ControlNet)を使用します。
今回は画像に移っている人間を棒人間に変換して構図を参照する OpenPose の機能を使用します。
具体的な使い方は下記の手順となります。
1.「Txt2img」タブ内の「Generation」タブ内にある「ControlNet Integrated」タブを開きます。
2.「ControlNet Unit」と「Enable」のチェックボックスにチェックを入れ、「OpenPose」のラジオボタンにチェックします。
3.「Single Image」に参考にしたい画像をドラッグ&ドロップします。
4.「Preprocessor」に「dw_openpose_full」を選択しましす。
5.「Model」に「control_v11p_sd15_openpose 」を選択します。
6.「Preprocessor」の横にあるボタンを押下します。
以上で下のように「Single Image」に棒人間の解析画像が表示されれば設定完了となります。
ちなみに、元画像の上に棒人間を合わせると下のようになります。
パッと見ですが、OpenPoase がどのように人体の構成を解析しているかが解ります。
5. 画像の生成
下が生成した画像となります。
westernAnimation_v1(SD 1.5)
なかなか良い感じの1シーンになったのではないでしょうか。
この機能を使えば、作りたい構図の写真を撮れば、その写真の構図から画像を生成できるようになります。
理論上はこれで構図回りについては、ほぼ思い通りに作れるのではないかと思います。
ただやってみると解りますが、現状では結構な確率で人体構造の解釈に失敗して奇形人体が生成されてしまいます。
この辺りの問題は今後のバージョンアップに期待したいです。
今回は2枚目の爺二人より、若者と爺がペアで写ってる1枚目の方が良い感じなので1枚目を採用といたします。
続いて6枚目の画像の生成していきます。
◆(6枚目)飯アニメ(ラーメン)をイメージしたアニメ
6枚目は飯をイメージしたアニメ画像の生成を試みようと思います。
今回は飯アニメの鉄板とも言えるラーメンで行ってみます。
1. 作りたい画像のイメージ決め
最初に作りたい構図の画像を決めます。
具体的には下のような食事風景のアニメ画像の生成を試みます。
※画像は女性ですが、今回は筆者の思い込みで、ラーメン食ってるのってやっぱ小太りのおっさんだろ!という偏見で男性に変更して生成いたします。
引用元:http://joetsu-shinbun.com/ramen-girls/10.html
2. Checkpoint の設定
手持ちよりアニメに強い「animaPencilXL_v400(SDXL 1.0)」を選択しました。
この Checkpoint を選んだ理由は、単に数点試した中で結果が良い感じだったからです。
3. Prompt の設定
◆Prompt
masterpiece, best quality, solo, chubby man, softly smile, ramen, ramen bowl, eating noodles, eat with chopsticks, open mouth, looking down, table, ramen shop, indoors, anime screencap, <lora:Hyper-SDXL-8steps-lora:1>
【各タグの内容】
設定項目 | タグ内容 | Tag |
---|---|---|
品質 | 傑作 | masterpiece |
品質 | 最高品質 | best quality |
対象 | 一人 | solo |
対象 | 小太りな男性 | chubby man |
表情 | 微笑 | softly smile |
対象 | ラーメン | ramen |
対象 | ラーメン丼 | ramen bowl |
動作 | 麺を啜る | eating noodles |
動作 | 箸で食べる | eat with chopsticks |
動作 | 口を開ける | open mouth |
構図 | 下を見る | looking down |
背景 | テーブル | table |
背景 | ラーメン店 | ramen shop |
背景 | 室内 | indoors |
絵柄 | アニメ塗り | anime screencap |
Lora | Hyper-SDXL-8step-lora | <lora:Hyper-SDXL-8steps-lora:1> |
※Prompt の「<」と「>」は本来は半角です。ここのブログでは化けるので、しぶしぶ全角で記載しています。
今回は実験的に特殊な「Hyper-SDXL-8steps-lora」という Lora を使用しています。
これは画像生成における「サンプリング数(Sampling steps)」を大幅に減らす事を目的とした Lora です。
具体的には通常は20回程度行うサンプリング数を8回に減らす事ができます。
これにより速度の向上が見込めるため、筆者のような低スペックマシンで生成している状況では有難い技術となります。
ただ、実際に使うと解りますが、画風が若干変わってしまうというデメリットがあるので注意が必要です。
具体的には「Hyper-SDXL-8steps-lora」のあるなしで、下のように画風が変わります。
◆Negative Prompt
bald head, nsfw, negativeXL_D
【各タグの内容】
タグ内容 | Tag |
---|---|
禿げ頭 | bald head |
18禁 | nsfw |
品質低下防止(SDXL 1.0) | negativeXL_D |
こちらはいつもの 品質低下防止と変な手防止のテキスト反転モデルに、「bald head」と「nsfw」を追加した形となります。
これは Prompt に「chubby man」を入れたせいか、禿げた危ないおっさんが生成されるケースがあったためです(汗)
4. Stable Diffusion の設定
今回は特殊な Lora をしている事もあり、Stable Diffusion の設定を一部変更しています。
具体的には下の2つとなります。
Sampling steps:8(デフォルト20)
この設定は「ノイズを除去する回数」となります。
この値が大きい程処理負荷が増えますが、高品質な画像が生成されます。
今回は「Hyper-SDXL-8steps-lora」を使用するため8で設定しています。
CFG Scale:1.1(デフォルト7)
この設定は「入力したプロンプトに対しての忠実度」となります。
この値が大きい程、プロンプトに忠実な画像が生成されます。
逆に言えば値いが小さい程 AI が自由に画像を生成します。
「Hyper-SDXL-8steps-lora」を使用する場合、AIの自由度を強めにした方が安定するらしく、強めの 1.1 で設定しました。
(ホントはこの値を1にしたかったのですが、1にすると仕様上 Negative Prompt が効かなくなるので、1.1にしました)
一般的に「Hyper-SDXL-8steps-lora」を使用する場合は 2.5 程度にするのが推奨されているそうです。
5. 画像の生成
下が生成した画像となります。
animaPencilXL_v400(SDXL 1.0)
今回は箸を使った食事風景の生成がなかなか上手く行かず、手こずる結果となりました。
それでも速度が改善して試行回数が多めに出来たので、少しはマシな画像が出来たかなと思っています。
今回はどれも似た感じなので、なんとなくラーメンが良く見える2枚目を採用といたします。
続いて7枚目の画像の生成していきます。
◆(7枚目)宇宙戦艦をイメージしたアニメ
7枚目は宇宙戦争をイメージしたアニメ画像の生成を試みようと思います。
ぶっちゃけ、これは完全に筆者の趣味です(笑)
1. 作りたい画像のイメージ決め
最初に作りたい構図の画像を決めます。
具体的には下のような宇宙戦争のアニメ画像の生成を試みます。
引用元:https://yamato2199.net
2. Checkpoint の設定
今回は少し事情があって、実写向けの Checkpoint 「realDream_sdxl1(SDXL 1.0)」を選択しました。
3. Prompt の設定
◆Prompt
best quality, masterpiece, great space war, anime, anime screencap
【各タグの内容】
設定項目 | タグ内容 | Tag |
---|---|---|
品質 | 最高品質 | best quality |
品質 | 傑作 | masterpiece |
対象 | 宇宙大戦 | great space war |
絵柄 | アニメ | anime |
絵柄 | アニメ塗り | anime screencap |
実写に強い Checkpoint でアニメ画像を生成するというい実験的な面もあるので、極力シンプルなタグで設定しました。
◆Negative Prompt
negativeXL_D
【各タグの内容】
タグ内容 | Tag |
---|---|
品質低下防止(SDXL 1.0) | negativeXL_D |
こちらも最低限で品質低下防止のテキスト反転モデルのみです。
4. 画像の生成
下が生成した画像となります。
realDream_sdxl1(SDXL 1.0)
ここで敢えて実写向けの Checkpoint を選択した理由について説明します。
なんとなくですが、戦艦のような構造物をメインにする場合、実写系に強い Checkpoint でアニメ化した方が良い感じになる気がしたためです。
一応アニメに強い Checkpoint でも幾つか生成してみたのですが、なんというか・・・ちゃちい画像が出来上がる結果となりました。
尤も、この辺りも探せば戦艦に強い Checkpoint とかロボモノに強い Checkpoint だとかも在りそうですが、その辺りは流石に割愛いたします。
ぶっちゃけると、この辺りはノウハウ的なモノになってくるのかなと。
画像生成も慣れてクオリティが上がってきたら、出力したい画像のために手変え品替えしていく必要が出てきます。
やって見て本当に奥深い世界だなと思います。
今回はどれも似た感じなので、なんとなくで3枚目を採用といたします。
以上で HP「もし、株式会社あすかが「アニメ制作会社」だったら」に使用する画像の5、6、7枚目の画像生成は終了となります。
これにて画像の生成は一旦終了となり、以降はこれらの生成した画像を使ってのHTML生成となります。
引き続き、よろしくお願いします。
初回:生成AI素人のプログラマが、生成AIを使ってHPのTOPページを作ってみた ①
前回:生成AI素人のプログラマが、生成AIを使ってHPのTOPページを作ってみた ⑥
次回:生成AI素人のプログラマが、生成AIを使ってHPのTOPページを作ってみた ⑧
コメントはありません。