見出し画像

[生成UI]Stable Diffusionでアイソメイラストを生成する①txt2img


0.目的の設定

最初に、Stable Diffusionを使うための目的を簡単に話します。
私はインハウスのUIデザイナーとして働いています。
実際の仕事ではFigmaやmiroでUIをデザインするだけでなく、開発チームやクライアントとのデザイン検討やプレゼンのために資料を作ることも多いため、「仕事で使うイラストを簡単に作れるようになる」が目的です。
生成したいアイソメイラストとはこんな↓イメージ。BtoB系のサービスに使われるUIを担当するので、物流とか医療とか金融とかのイラストを出せるようになりたいです。

今はAdobe Stockを使ってやりくりしていますが、探すのが大変だったり、ダウンロードしても色や細部を直したりと時間が取られてしまいます。
実際の業務で生成AIで作った画像を使うのには権利的な問題がありますが、ひとまず試してみようと思います。

1.Stable Diffusion をインストールする

まずはPCにStable Diffusionをインストールします。

こちらのサイトを参考にしながらインストール&セットアップしました。
PCのスペックは以下の通りです。

CPU:Intel(R) Core(TM) i7-12700 
グラフィックボード:NVIDIA GeForce RTX 3070

途中、Pythonのインストール場所が間違っていたのかStable Diffusionが起動しなかったのですが、この記事で解決できました。

インストール自体がけっこう難しいのですが、ChatGPTに聞くと大体教えてくれます。

2.モデルをインストールしてみる

やっと起動できました。UIはこんな感じ。

試しにプロンプトから生成してみます。
プロンプトは英語のほうが良い精度の画像がでるので「アイソメトリックイラスト、物流倉庫、ライン、作業員、白背景」を英訳して入れてみます。
Prompt : isometric illustration, Logistics warehouse, line, worker, white background

うーん…遠目で見るとそれっぽいけど、大量のチーズと謎の白い粉を運んでいるように見える。到底使えない。
調べてみると、デフォルトで入っている”学習モデル”だといい感じの画像が生成できないようです。

学習モデル:生成の参考にする画像データを学習したファイルのこと。モデルを変えることで写実的やアニメ調など様々なテイストの画像が作れる。

とりあえず、こちらのサイトを参考に商用可能なモデルを4つインストールしてみます。

3. モデルを試してみる

では、先ほどと同じプロンプトで出してみます。

アイソメトリックイラスト、物流倉庫、ライン、作業員、白背景
isometric illustration, Logistics warehouse, line, worker, white background

結構いい感じです。特にcyberrealisticとepicrealismが線もまっすぐでよさげに見えます。
ただ、倉庫の中の様子を出したかったのですが、「アイソメ」をプロンプトにいれると問答無用で俯瞰図になってしまうようでした。

モデル別の得意不得意を把握するために、いろんなテイストの画像を生成してみます。

①サイバーパンクっぽいコンセプトアート

SF映画、サイバーパンク、ロボット、コンセプトアート
Science fiction film, robot, cyberpunk, concept art

いい感じです。やはり、シンプルな絵よりも複雑な絵のほうが向いているようですね。Epicrealismは、セクシーな女性がやたら出力されるので何回かやり直しました。こういう時に使えるのがネガティブプロンプトですが、後ほど詳しく書きます。

②ダウナー系の青年

一人の青年、アニメ調、黒髪、白いメッシュ入りの髪型、ダウナー風、白シャツ、無表情、カメラ目線、片耳にピアス
One young man, anime style, black hair, white mesh hair, downer style, white shirt, expressionless, looking at camera, piercing in one ear

これも結構いい感じ。人物は、髪型や服装やポーズを指定するのがコツみたいです。アニメ系の画像生成が得意なEnvymixやpastelMixは本領発揮しています。
ちなみに、StableDiffusionでデフォルトで入っているモデルだとこんな感じ↓

作画崩壊がすごい。なんか二人出力されてるし…


③ホラーゲームに使えそうな背景アート

一軒の日本民家、ダメージを受けた、古い、茅葺屋根、木々に囲まれた、夜、正面図、ゲーム背景風、ホラー、不気味
One Japanese house, simple, old, thatched roof, surrounded by trees, night, front view, game background style, horror, spooky

個人的にインディーゲーム制作に興味があるので、背景アートも試してみました。茅葺屋根は難しいかな?と思いましたがいい感じです。

3. Text to Imageでのプロンプトのコツ

いろんなテーマで生成してみると、プロンプトのコツがつかめてきました。
とりあえず最初は
プロンプトの順番
②スタイル、構図などを細かく指定する
③ネガティブプロンプトを入力する

の3つを抑えると良さそう。

①プロンプトの順番
プロンプトは先に書いてあるワードの影響度が高くなるので、
・対象(人、動物、建物、乗り物など)
・スタイル(イラスト調、写実的、アニメ風など)
・構図(アングル、向き、撮影距離など)
・対象の詳細(人種や年齢、髪型や服装、表情など)
・その他(背景、雰囲気など)
の順番で区切って書くと良さそうです。

例:SF映画、サイバーパンク、ロボット、コンセプトアート

②スタイル、構図などを細かく指定する
短いプロンプトだと、予想外の絵が出て楽しいものの、目的の絵を出すのには試行回数が必要になってしまいます。
・スタイル(イラスト調、写実的、アニメ風など)
・構図(アングル、向き、撮影距離など)
などを細かく指定すると思い通りの画像に近づきます

例:一人の青年、アニメ調、黒髪、白いメッシュ入りの髪型、ダウナー風、白シャツ、無表情、カメラ目線、片耳にピアス

③ネガティブプロンプトを使う
生成AIでよくあるのが、指が6本あったりやたらセクシーな女性が出てきてしまう現象でした。
それを解決するためにネガティブプロンプトを使います。
Stable DiffusionのUIには、プロンプトとネガティブプロンプトを入れる欄があります。

ここにネガティブプロンプトを入れると、そのワードを避けた画像が出力されます。

例:(worst quality,low quality:2), (painting,sketch,flat color), monochrome, grayscale, ugly face, bad face, poor anatomy, distorted eyes, absent fingers, acne, skin flaws, nsfw, nudity, nipples

クオリティーをちゃんと上げろ、白黒はダメ、変な骨格はやめろ的な内容です。nsfwはNot Safe for Working(職場で見るのには適さない=セクシーな内容)という意味ですね。

ネガティブプロンプトはこちらのサイトなどに参考例があるので、私はそのまま使っています。

4. Chat GPTにプロンプトを書かせる

最後に、Chat GPTにプロンプトを書かせる方法があるようなので、こちらも試してみました。

出したいイメージは、「近未来で看護師ロボットが車いすの老人を世話している様子」
できたプロンプトとネガティブプロンプトがこちら

プロンプト:
A prominent white and clean nursing robot with a neutral form, pushing a wheelchair of an elderly Japanese man, the elderly man is 80 years old, wearing futuristic clothing with a white shirt, the elderly man is smiling at the robot, the robot and the elderly man are facing each other, in a futuristic hospital, advanced medical equipment, holographic displays, bright and clean environment, ultra high quality, premium resolution, 8k ultra high resolution, hyper-realistic, true-to-life photo quality, ultra-detailed skin texture, lifelike skin sheen, the nursing robot prominently pushing the wheelchair:2

ネガティブプロンプト:
(worst quality, low quality:2), (painting, sketch, flat color), monochrome, grayscale, ugly face, bad face, poor anatomy, distorted eyes, absent fingers, acne, skin flaws, nsfw, nudity, nipples

なんか長いな?と思いつつ、入力してできた画像がこちら↓

結構いい感じ!今までよりも狙った構図で出せるようになりました。ロボット看護師にはならないし、右の画像はなぜかおじいちゃんがミニスカですが…
ちなみにこの画像を出すまでも一発ではいきませんでした。ロボット単体の絵になってしまったり、車いすの老人にならなかったり…
そういう場合は、ChatGPTで指示を出しながらプロンプトの精度を上げていました。

ちなみに、同じプロンプトで出力された副産物がこちら↓

お前が座るんかい。そしてなんだその服装…おじいちゃんの目線もなんかいやらしいですね。「nsfw」をネガティブプロンプトに入れたはずなのに、全裸でなければOKなのでしょうか。看護師ロボに「asexual」とかの指定を入れたほうがよさそうです。

5. まとめ、次にトライしたいこと

色々試してみてモデルの特徴やプロンプトのコツがつかめてきました。ただ、目的の「仕事につかえそうなアイソメイラストを出す」には遠いので、まだまだ試す必要です。

今回はText to Image(プロンプトのみで画像を生成する)を試しましたが、次はImage to Image (ラフ画などから画像を生成する)を試してみたいと思います。


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