ブログ
これまでに経験してきたプロジェクトで気になる技術の情報を紹介していきます。
生成AI素人のプログラマが、生成AIを使ってHPのTOPページを作ってみた ④
◆画像生成AI(StableDiffusion)を使っての画像生成
前回では画像生成AI(以降 StableDiffusion)に機能を追加するところまでを行いました。
今回からは、いよいよ StableDiffusion を使って画像の生成をしていきます。
◆StableDiffusion の画像生成の手順について
まずは StableDiffusion を使った、基本的な画像生成の手順を説明します。
大まかな流れとしては下記のようなステップとなるので、これから順を追って説明します。
1.作りたい画像のイメージ決め
2.出力したい絵柄(主にモデル)の選択
3.出力したい内容(主に Prompt )の設定
4.画像生成を実行
1. 作りたい画像のイメージ決め
作りたい画像のイメージを決めます。
なんとなく頭の中で、こんな画像を作りたいなーとイメージするだけでも良いです。
具体的なイメージが決まっている場合は、元となる参考画像を用意して Prompt を練る方が良いと思います。
2. 出力したい絵柄(主にモデル)の選択
生成したい画像の絵柄の元となるモデル(以降 Checkpoint)を選択します。
選択できる(取得した) Checkpoint は Stable Duffision の「txt2img」タブ内の「Checkpoints」タブを選択すると一覧表示されます。
※Checkpoint の取得については前回を参照
後は、一覧の中から作りたい画像のイメージに近い絵柄の Checkpoint をクリックするだけです。
無事に選択が出来たら、左上の Checkpoint リストに、選択した Checkpoint が表示されます。
※良く使う Checkpoint なら、Checkpoint リストから直接選択しても構いません。
3.出力したい内容(主に Prompt )の設定
出力したい画像の内容となる Prompt を設定します。
Prompt には Prompt と Negative Prompt の2種類があります。
Prompt は出力したいタグ、Negative Prompt には出力したくないタグとなります。
「txt2img」タブにある上側のテキストには Prompt を、下側のテキストには Negative Prompt を設定します。
具体的には下記のようなタグを設定すると良いと思います。
- 対象物
- 構図・アングル
- 明るさ・絵柄
- 表情
- 服装
- 背景(場所)
また、タグには基本的にそれらしい英単語を設定していますが、きちんと有効なタグを調べるには、下記のDanbooru というサイトがオススメです。
Danbooru
4.画像生成を実行
画面右側にある「Generate」ボタンを押下すると画像生成が開始されます。
暫くすれば、ボタン下の枠に生成された画像が表示されます。
基本的な画像生成の手順は以上となります。
◆画像生成の実行例
実例として、ITエンジニアの上司像をイメージして画像生成を行ってみます。
なお Negative Prompt の設定は、画質の低下や、奇怪な人間(6本指の手や、おかしな関節になります)の生成を抑制する内容となっています。
これらを設定しても画質の低下や奇怪な人間の生成を完全に抑制する事はできませんが、生成確率を下げる効果は見込めます。
例1
画像生成するために設定した Prompt と Negative Prompt は下記となります。
※設定したタグの内容については筆者がなんとなくイメージした内容です。
◆Prompt
solo, man, 55-year-old, drudging, middle-aged man, short bob cut, black hair, slender, tired, cowboy shot, sunbeam, sumi-e, drunk, glasses, collar shirt, jeans, office
【各タグの内容】
設定項目 | タグ内容 | Tag |
---|---|---|
対象 | 1人 | solo |
対象 | 男性 | man |
対象 | 55歳 | 55-year-old |
対象 | 中年 | middle-aged man |
対象 | 短髪 | short bob cut |
対象 | 黒髪 | black hair |
対象 | 細身 | slender |
対象 | 疲れた | tired |
構図・アングル | 太ももから上 | cowboy shot |
明るさ | 太陽光線 | sunbeam |
絵柄 | 墨絵 | sumi-e |
表情 | 酔っ払い | drunk |
服装 | 眼鏡 | glasses |
服装 | 襟シャツ | collar shirt |
服装 | ジーンズ | jeans |
背景 | オフィス | office |
◆Negative Prompt
worst quality, low quality, bad anatomy, bad hands, missing fingers, extra digit, fewer digits, beard, hat
【各タグの内容】
タグ内容 | Tag |
---|---|
最低品質 | worst quality |
低品質 | low quality |
変な人体構造 | bad anatomy |
変な手 | bad hands |
指の欠損 | missing fingers |
追加の指 | extra digit |
少ない指 | fewer digits |
髭 | beard |
帽子 | hat |
・生成された画像
下が上記のタグ設定で4枚程生成してしてみた結果となります。
※ちなみに一回で4枚生成する場合は、「Generation」タブにある「Batch count」を4に設定して実行します。
気づいた人もいるかもしれませんが、右上の画像を見ると、特に指定もしていないのに帽子(hat)を被った男性が生成されています。
これは Prompt で指定した「構図・アングル」の「太ももから上(cowboy shot)」の影響を受けたものと思われます。
この cowboy shot のタグを指定すると、本来目的とした構図以外に、カウボーイ帽子を被った画像を生成する確率が上がります。
それを抑えるために Negative Prompt に「帽子(hat)」を入れていますが、低確率でこのように意図せぬ画像が生成されてしまいます。
また左下の画像の髭も同様で「中年男性(middle-aged man)」を生成しようとすると高確率で生成されるモノです。
髭を出したくないので Negative Prompt に「髭(beard)」入れていますが、こちらも同様に低確率で生成されてしまいます。
このように AI での画像生成はランダム性が高く、タグで設定したモノは参考にしますが、必ず守ってくれるという訳ではありません。
そのため理想的な画像を生成するまでに、ある程度の試行回数を繰り返す必要が出てきます。
例2
ではここで例1で当たり前のように Negative Prompt に設定している、低品質や、奇怪な人体構造系のタグを指定しなければどうなるのか?
下が Prompt は例1のまま Negative Prompt を空にして生成してみた結果となります。
パッと見でも分かると思いますが、指が6本になっていたり、変形していたりと、特に手回りがおかしくなっています。
実際の手回りはイラストでもよくディフォルメされたりする影響か、上手く表現できないケースが多々発生します。
例1ではこういった現象を少しでも防ぐために Negative Prompt に「変な人体構造(bad anatomy)」等を指定していました。
ただ、このようなAIが苦手な表現を、細かく Negative Prompt に指定していると面倒臭いです。
そこでこういった世間一般で指定した方が良い Negative Prompt を先人達が纏めたものがあります。
それが1つ前の記事で取り上げた「EasyNegative」です。
これを使う事で、こういった世間一般で指定した方が良い Negative Prompt を省略する事が出来ます。
なので以降は Negative Prompt に「EasyNegativeV2(SDXL 1.0系モデルは negativeXL_D)」と入力し、こういった指定を省略していきます。
以上で StableDiffusion の基本的な画像生成の手順については終了となります。
次回からは、ようやくHP「もし、株式会社あすかが「アニメ制作会社」だったら」に使用する画像の生成に入ります。
引き続き、よろしくお願いします。
初回:生成AI素人のプログラマが、生成AIを使ってHPのTOPページを作ってみた ①
前回:生成AI素人のプログラマが、生成AIを使ってHPのTOPページを作ってみた ③
次回:生成AI素人のプログラマが、生成AIを使ってHPのTOPページを作ってみた ⑤
コメントはありません。