見出し画像

VRAM 4GBではじめるStable Diffusion - ゲーム素材を作ろう3 呪文理論

 この草稿は、VRAM 4GB環境下で『Stable Diffusion』を利用して、ローカルでの画像生成をするためのものです。生成する画像はファンタジー系の同人ゲーム/インディーゲームの画像素材です。この草稿は、2023年の2月下旬~3月上旬にかけて執筆されました。

 草稿をまとめて大幅増補したものを電子書籍で出しました。VRAMがなくても、Google Colabでも大丈夫なように対応しています。『Kindle Unlimited』ユーザーの方は無料で読めます。是非読んでください。

 この草稿では『Stable Diffusion』の簡単な解説をおこない、『AUTOMATIC1111版 Stable Diffusion web UI』の導入や使い方について説明します。また「背景」「キャラクター」「アイテム」「絵地図」「UI部品」といった画像素材の作成方法を説明します。

 この草稿は、私が2022~2023年に、同人ゲーム『Little Land War SRPG』を開発した時の知見を中心にまとめたものです。こちらも購入して遊んでいただけると幸いです。

本章の概要

 本章では「PromptやNegative Promptの分類」「Promptの種類ごとの実例」「Negative Promptの種類ごとの実例」を扱います。

 呪文の単語が、どのように分類できるかに始まり、それらの分類の中に、どういった単語があるのかを解説していきます。そして最後に、それらの単語を利用して実際に呪文を組み立てて画像を生成します。

 以下、本章の目次です。

  • 学習モデルの選定

  • 呪文のルール

  • 呪文の分類

    • Prompt - 描画対象

    • Prompt - 画質向上

    • Prompt - 画風と画家

    • Prompt - 視点と光

    • Prompt - 細部操作

    • Negative Prompt - 低画質除外

    • Negative Prompt - 苦手除外

    • Negative Prompt - 不要物除外

  • 呪文の例

    • 背景画像

    • キャラクター画像


学習モデルの選定

 『Stable Diffusion』でテキストから画像を生成するには、学習モデルにどんな単語が学習されているかが重要です。どれだけ頑張って呪文を作っても、学習モデルに含まれていない単語だと出力結果をコントロールできません。また、学習モデルを変更すれば組み立てる呪文の内容が変わります。

 重要なのは、学習モデルを選定することと、そのモデルの学習元データを想像して単語を選ぶことです。

 学習モデルには、本家の学習モデルのように写真的な画像に強いものや、本家以外に見られる2次元的な画像に強いものなどがあります。

 背景画像やアイテム画像を生成するには、本家の学習モデルがよいです。汎用的なデータが入っており、入力した呪文に沿った画像を生成できます。

 アニメやマンガ風の2次元キャラクター画像を生成したい場合は、本家の学習モデルでは難易度が高いです。2次元キャラクターに特化した学習モデルを利用した方が、質の高い画像が生成されます。

 学習モデルについては「環境構築」の章を確認してください。


呪文のルール

 基本的に英語で入力します。日本語の単語が利用できる学習モデルであれば、この限りではありません。

 文章ではなく単語の羅列で入力して、各単語は半角スペースで区切ります。これらは一塊のフレーズになります。以下、例です。呪文と出力画像を掲載します。

gray cat

 フレーズは複数入力できます。フレーズの区切れ目はカンマです。以下、例です。呪文と出力画像を掲載します。

gray cat, glass garden

 『Web UI』では、改行を使って見やすく呪文を書けます。

gray cat,
glass garden

 複数のフレーズがある場合、前にあるフレーズの方が優先順位が高いです。

 また、特定の単語やフレーズを強調するための記法もあります。この記法を利用することで、単語の中で特に重要なものをマークしたり、あとの方にあるフレーズの優先順位を上げたりすることができます。「(単語:数値)」の書き方が見やすくてよいです。

  • a (word) - 1.1倍強調

  • a ((word)) - 1.1×1.1で、1.21倍強調

  • a [word] - 1.1倍抑制(1/1.1に減らす)

  • a (word:1.5) - 1.5倍強調

  • a (word:0.25) - 0.25倍強調(1/4に減らす)

  • a (word) - 「(」「)」のエスケープ(呪文として使用可能にする)

 呪文を作る場合に重要なのは、単語自体の強さと、前後の優先順位、強調による重み付けです。単語自体の強さとは、学習モデル内で、その単語が明確な画像として記録されているかどうかです。

 たとえば「cat」と入力して、猫の画像がそのまま出てくれば、その単語は明確な画像として記録されています。しかし、何か分からない画像が出てくるのならば、この単語は学習されていないか弱い力しか持っていません。そうした単語を使って上手く画像を生成することは難しいです。そうした場合は、別の単語で呪文を作るか、学習モデルを変えるかしなければなりません。


呪文の分類

 呪文には、正のベクトルを作る「Prompt」と、負のベクトルを作る「Negative prompt」があります。「Prompt」で画像の方向性を作り、そこから「Negative prompt」で出したくない部分を削ります。

 「Prompt」に入力する単語やフレーズは、大きくわけて以下の種類があります。

  • 描画対象

  • 画質向上

  • 画風と画家

  • 視点と光

  • 細部操作

 上記の単語やフレーズは、複数の種類にまたがっているものもあります。そのため以降の説明で重複して出てくることがあります。

 「Negative prompt」に入力する単語やフレーズは、大きくわけて、以下の種類があります。

  • 低画質除外

  • 苦手除外

  • 不要物除外

 以下、私がよく使っている「Negative prompt」です。固定Negativeとして使っています。

bad anatomy, bad hands, text, error, missing fingers, extra digit, fewer digits, cropped, worst quality, low quality, normal quality, jpeg artifacts, signature, watermark, username, blurry, bad hands, missing arms, long neck, Humpbacked, shadow, flat shading, flat color, grayscale, black&white, monochrome, frame,

 以下、それぞれの種類について解説していきます。


Prompt - 描画対象

 「描画対象」は、何を描きたいかです。猫を描きたいのか、人間の戦士を描きたいのか、エルフの魔法使いを描きたいのか。そうした「描画する対象」が描画対象です。

 「man fighter」のように1フレーズで書いた方がよい場合もありますし、「old man, full armor costume」のように特徴のフレーズを羅列した方がよい場合もあります。

 描画対象は学習モデル次第です。上手く生成されない場合は、フレーズを変えて生成のアプローチを変えた方がよいです。

 また、女の子を描く場合は「kawaii girl」のように「kawaii」を付けるとよいです。1人だけ出したい場合は「one」「solo」などと指定した方がよいです。各単語の前に「beautiful」「detailing」といった形容詞を付けると画質が向上します。


Prompt - 画質向上

 学習モデルは、学習元の画像と単語の組み合わせによってベクトルを持っています。また、本家の学習モデルは、Web上にある画像から学習されています。そのため「特定のWebサイトの名前」や「高画質の画像によく付けられているタグ」を呪文に含めると、それだけで画質が向上します。

 以下に、有名な画質向上のフレーズを掲載します。

 まずは、特定のWebサイト系のフレーズです。

artstation,
deviantart,
trending artstation,
trending on deviantart,
pixiv ranking 1st,

 次は、画像によく付けられるタグ系です。

masterpiece,
best quality,
concept art,
extremely detailed,
ultra-detailed,
brilliant photo,
beautiful composition,
sharp focus,
4k,
8k,
ray tracing,
cinematic lighting,
cinematic postprocessing,
realism,

 他にも、AAAクラスの有名なゲームの名前や、それらを作っている会社名、『Unity』や『Unreal Engine』といったゲームエンジンの名前を書くと、Webに大量に精細な画像があるために画質が向上します。

 ゲームの画像として想定するゲームがある場合は、その名前とそれらに近いゲームの名前を書く方法があります。そうすれば、似ているけれど少し違う雰囲気の画像を作ることができます。


Prompt - 画風と画家

 画風は、美術様式の名前を書く方法と、画家などの作者名を書く方法があります。作者名を書く方法は物議を醸したため、2系統以降ではあまり有効に働かない可能性があります。

 これらは「直接書く」方法と、「style of ○○」「○○ style」の形式で書く方法があります。たとえば背景を精細にするために、新海誠(Makoto Shinkai)の名前を使う方法は、よく見られます。

 以下に、簡単な美術様式の例と、Wikipediaの「西洋美術史」のURLを挙げます。

gothic, renaissance, baroque, rococo, chinoiserie, romanticism, realism, victorian painting, japonisme, impressionism, art nouveau, cubism, art deco, surrealism, pop art, japanese anime

西洋美術史 - Wikipedia
https://ja.wikipedia.org/wiki/西洋美術史

 特定の画風を描かせるための作者名やキーワードのリストは、ネットに多くまとまっています。「stable diffusion artist list」などのキーワードでWeb検索するとよいです。

 キーワードとサンプル画像がまとまったWebページをいくつか掲載しておきます。こうしたリストは、学習モデルが違うと、有効に働かないこともあります。本家の場合はバージョンを、その他の学習モデルの場合は、その学習モデルに沿ったリストを見つけることが大切です。

list of artists for SD v1.4
https://rentry.org/artists_sd-v1-4

Stable Diffusion Artist list - Style studies
https://stablediffusion.fr/artists

SD Artist Collection
https://sgreens.notion.site/sgreens/4ca6f4e229e24da6845b6d49e6b08ae7

 アニメ風の画像を生成する際は、アニメ会社の名前や、萌え系の大作ゲームの名前、ゲーム会社の名前を指定すると良好な結果が出ます。

cygames, shinkai makoto, kyoto animation, a-1 pictures, p.a. works, atelier-ryza, granblue fantasy, genshin impact, azur lane, love live!, final fantasy, arknights

 また、水彩や油彩、デジタルペインティングなどの画材や技法を指定するのも有効な方法です。以下に、Wikipediaの「美術の技法」のページを掲載します。

Category:美術の技法 - Wikipedia
https://ja.wikipedia.org/wiki/Category:美術の技法

 いくつかの画材や技法を掲載します。

digital painting, oil painting, watercolor, watercolor painting, ink watercolor, acrylic painting, crayon painting, pen art, ball-point pen art, drawing, pencil sketch, pencil drawing, ukiyo-e painting, etching, pointillism, pixel art, stained glass, woodcut, bold line painting,

 以下に、いくつかの技法で猫を描いた例を示します。順番に、エッチング(cat, etching)、点描技法(cat, pointillism)、ステンドグラス(cat, stained glass)、木版画(cat, woodcut)で描いたものです。同じ描画対象でも、出力画像が大きく違うのが分かります。

Prompt - 視点と光

 カメラで被写体を撮影するように、どのようなアングルで、どのような光で撮影するかを指定します。カメラのレンズ名や、シャッタースピードを指定する方法もあります。また屋外の場合は、時間帯や季節を表す単語を入れることで生成内容をコントロールできます。

 視点は、ゲームの背景画像を作る時に重要になります。また人物をフレームに入れる時も重要になります。以下に、遠景から近景の距離を表すフレーズを掲載します。一部、同じ距離を表しているものもあります。

far long shot,
long shot,
very wide shot,
wide shot,
medium shot,
west shot,
bust shot,
close up shot,
close up front shot,
close-up shot,
closeup,
head shot,
face closeup photo,

 角度についての視点を加えるには、以下のようなフレーズがあります。

below view,
overhead view,
near view,
bird view,
selfie shot angle,
wide shot angle,
shot from a birds eye camera angle,

 人物の画像の場合は、以下のようなフレーズを入れるのも手です。

portrait,
snap shot,

 風景画の場合は、以下のフレーズを入れるとよいです。

landscape,

 風景画の質を向上させたい場合は、以下のようなフレーズを入れるとよいです。

upper sunlight,
golden sun,
upper sunlight and golden sun,

 画面構成のよい画像を得たい場合は、以下のフレーズを加えます。

beautiful composition,

 鮮明(精細)な画像を得たい場合は、以下のフレーズを加えます。

sharp focus,

 色を派手にしたい場合は、以下のフレーズを加えます。

bright color contrast,

 ライティングなど、写真としての質を向上させたい場合は、以下のフレーズを加えます。

soft lighting,
cinematic lighting,
golden hour lighting,
strong rim light,
volumetric top lighting,
atmospheric lighting,
cinematic postprocessing
top light,
brilliant photo,
best shot,

 キャラクターの顔の質を高めるフレーズです。

kawaii cute girl,
cute eye,
small nose,
small mouth,
beautiful face,
brilliant face,
perfect symmetrical face,
fine detailed face,
aesthetic eyes,

 適当な背景を入れてほしい場合のフレーズです。

beautiful background,

Prompt - 細部操作

 これまでの呪文は、基本的にクオリティを上げるものが多かったです。この項では、描画対象の細部をコントロールする方法を示します。実は、これがもっとも難しいです。

 私の場合は、素体となる大きな部分を先に指示して、その細部をあとのフレーズで書くことが多いです。以下、簡単な例です。

masterpiece, best quality, concept art, extremely detailed,
one kawaii cute girl,
beautiful perfect symmetrical face,
fantastic long white dress with many frills,
blue long wavy hair,
bust shot, portrait,
upper sunlight and golden sun, sharp focus,
8k, ray tracing, cinematic lighting, cinematic postprocessing,

 大まかな指示を与えたあと、その細部のベクトルを調整します。上手く反映しない場合は、指示の順番を変えたり、重みを調整したりします。以下、描画対象だけを示します。

one kawaii cute girl,
(fantastic long white dress with many frills: 1.1),
(blue long wavy hair:1.3),

 さて、この細部操作ですが、細い物は失敗します。具体的に書くと、弓矢などはぐちゃぐちゃになる可能性が高いです。人体なら指が苦手です。こうしたものは「描かせない」のがよいです。

 しかし、そうしたものがほしい時もあります。たとえば弓兵を描かせたい時です。そうした場合は構図を工夫して、細いものがなるべく画面に入らないように指示を出す方がよいです。

 また、単純な単語で上手く生成してくれない場合は、特徴を羅列して生成する必要があります。たとえば「ゴブリン」で望む結果が出ない場合は「緑色の小柄な鷲鼻でなが耳の人」のように指示する必要があります。

 ゴブリンが上手く生成できなかったのは、私が実際に遭遇したケースです。その時には、以下のような指示を出しました。全体を書くと煩雑なので、「Prompt」と「Negative prompt」の描画対象と細部操作のフレーズのみを書きます。

one small man with green face,
skinny small body,
very long eagle nose,
very long ears,
green bald head,
wrinkled old face and body,
in ragged armor,
green skin,
yellow face,
brown face,

 以下、簡単なコツを書いておきます。まず、1人だけ出したい場合は「solo」や「one」などを指定しておくとよいです。

 2次元の女性キャラクターを可愛くしたい時は、「kawaii」「beautiful」などを指定するとよいです。また、「young」「child」「teenage」などを指定して年齢を下げると、2次元キャラクターとして良好な結果になることがあります。体型も「skiny」など細めに設定すると上手くいくことがあります。生成者によっては、胸を大きくするなどの指示を入れる場合もあるでしょう。

 キャラクターの細部を指示する単語は、ネット上にまとめページが多くあります。「AI 呪文自動生成」などでWeb検索すると、ドロップリストで呪文を生成できるサイトが見つかります。これらを使い、呪文の大枠を作り、そこから改造していくと楽です。

AIイラスト呪文生成器(AI画像・NovelAI・nijijourney・stable diffusion)
https://programming-school-advance.com/ai-image-generation

Magic Generator for NovelAI
https://magics.work/

 また、ネットでも有名になった『元素法典』という呪文集も参考になります。元の文書は中国語ですが、何人かの方が日本語に翻訳しています。「元素法典 日本語訳」でWeb検索してください。日本語で読むことができます。

 こうした生成器や文書は『Novel AI』向けのものが多いです。そのまま利用できないものもありますが、フレーズは大いに参考になります。

 AI画像の投稿サイトで呪文を確認するのも参考になります。AI用の投稿サイトでは呪文も一緒に表示されることが多いです。これらの呪文を確認することで、どんな呪文を利用すれば求める画像になるのかが分かります。

PixAI
https://pixai.art/

chichi-pui(ちちぷい)| AIイラスト専用の投稿サイト
https://www.chichi-pui.com/

AIピクターズ | AIイラスト投稿SNSサイト
https://www.aipictors.com/


Negative Prompt - 低画質除外

 以降は「Negative prompt」に設定する単語やフレーズです。

 以下は、低画質画像を除外する目的の呪文です。

worst quality,
low quality,
normal quality,
jpeg artifacts,
blurry,
long neck,
humpbacked,
flat shading,
flat color,
grayscale,
black&white,
monochrome,

Negative Prompt - 苦手除外

 AIが苦手な描画物を除外する目的の呪文です。主に人体の描画でおかしくなる部分を除外します。

 手についての用語が多く、指の欠損や多指などもよく指定されます。肉体的な差異や障害に用いられる単語を「Negative prompt」に設定することには後ろめたさがあります。美しい画像とは何かということを考えさせられます。

bad anatomy,
bad hands,
missing fingers,
extra digit,
fewer digits,
cropped,
bad hands,
missing arms,

Negative Prompt - 不要物除外

 不要物を除外する目的の呪文です。ウォーターマークやサインなどの文字列を指定します。モデルが学習した画像には、そうしたものが含まれます。そのため、ふとした拍子にそれらが生成画像に出てきます。こうした不要物を抑制するために、こうしたフレーズを追加します。

text,
error,
signature,
watermark,
username,
shadow,
frame,

呪文の例

 実際に呪文を組み立てて実行してみましょう。本稿は、ゲームの素材画像を生成することを目的としています。そのために、背景画像とキャラクター画像を生成してみましょう。

背景画像

 まずは、背景として使う画像です。「Width」を「896」、「Htight」を「512」にして実行します。この縦横比は、横1920、縦1080の画像とほぼ同じです。生成した画像を、画像拡大AIなどにかけて解像度を上げれば、1920×1080サイズの画面を得やすい値です。

 以下は呪文です。「Prompt」と「Negative prompt」を示します。

bright color contrast,
beautiful detailing landscape painting,
masterpiece, best quality, concept art, extremely detailed,
digital painting, oil painting, (watercolor painting:1.2),
ray tracing, beautiful composition,
(wide river:1.1),
green glassland,
blue sky of summer, daytime,
upper sunlight and bright golden sun,
style of renaissance and gothic,
(style of high fantasy:1.2),
far long shot, below view, brilliant photo,
sharp focus, atmospheric lighting, realism,
8k, ray tracing, cinematic lighting, cinematic postprocessing,
text, error, extra digit, fewer digits, worst quality, low quality, normal quality, jpeg artifacts, signature, watermark, username, blurry, shadow, flat shading, flat color, grayscale, black&white, monochrome, frame, human, body, boy, girl, man, woman, mob, 

 以下は出力した画像です。同じ呪文でも「Seed」の値が違うと、異なる画像が生成されます。

キャラクター画像

 次はキャラクター画像です。少女戦士を生成します。ここでは、「Sampling method」は「Euler」に、「CFG Scale」は「10」にします。

 以下は呪文です。「Prompt」と「Negative prompt」を示します。

(watercolor painting:1.3), (oil painting:1.2),
(style of gothic:1.3),
(style of renaissance:1.2),
(style of high fantasy:1.1),
(bust shot:1.5), (portrait:1.5),
bright color contrast,
masterpiece, best quality, concept art, extremely detailed,
(fantasy full armor costume:1.1),
one kawaii cute girl,
beautiful perfect symmetrical face,
small nose and mouth, aesthetic eyes,
long wavy hair,
teenage, little girl,
sharp focus, realism, 8k,
(style of granblue fantasy:0.7),
(style of genshin impact:0.3),
(artstation:0.3), (deviantart:0.3), (pixiv ranking 1st:0.3),
bad anatomy, bad hands, text, error, missing fingers, extra digit, fewer digits, cropped, worst quality, low quality, normal quality, jpeg artifacts, signature, watermark, username, blurry, missing fingers,  bad hands, missing arms, long neck, Humpbacked, shadow, flat shading, flat color, grayscale, black&white, monochrome, 

 出力結果も示します。32枚生成して、良好なものを3枚選びました。キャラクターは「Seed」の値による当たり外れが激しいので、狙った画像がなかなかできません。


実際のゲームでの画風の作り込み

 ゲームでは、ある程度統一感を持ったキャラクターや素材を作らなければなりません。以下、『Little Land War SRPG』でキャラクターを作った時の、初期の頃の画像から作り込んでいく過程の実例を示します。

Steam - Little Land War SRPG
https://store.steampowered.com/app/2279930/Little_Land_War_SRPG/

 実際には数百枚の過程があるのですが、特徴的な時点のものを取り出して並べていきます。実際には、行きつ戻りつしながら、ああでもない、こうでもないと画像を大量に生成していました。


全体目次

  • 第1章 環境構築

  • 第2章 基礎知識

  • ★★★第3章 呪文理論★★★【今ここ】

  • 第4章 背景画像の生成

  • 第5章 キャラクター画像の生成

  • 第6章 キャラにポーズを付ける

  • 第7章 キャラを学習させる

  • 第8章 武器や道具の生成

  • 第9章 絵地図の生成

  • 第10章 UI部品のテクスチャの生成


※ 草稿をまとめて大幅増補したものを電子書籍で出しました。VRAMがなくても、Google Colabでも大丈夫なように対応しています。『Kindle Unlimited』ユーザーの方は無料で読めます。是非読んでください。


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