メインコンテンツへスキップ
見出し画像

【最新版:2万文字】 Stable Diffusion と プロンプト の科学 ~ そのプロンプトを少し変えるだけで、自分のイラストが好きになる ~ /初心者OKのプロンプトエンジニアリング解説講座❗️

     Stable Diffusion WebUIは、AIを用いて画像を生成するためのツールで、ユーザーが指定したプロンプトに基づいて、特定の特徴を持つ画像を生成します。しかし、プロンプトの書き方によっては、生成される画像の品質や特徴が大きく変わることがあります。
     そこで、この記事では、より良い画像を生成するためのプロンプトの書き方について解説します。
     また今回は、私の X(Twitter)で質問の多かった以下のサムネイルにある画像のプロンプトも紹介していきます。

    画像

     実は、この記事を通じてプロンプトについてきちんと理解ができれば、以下のようなインスタグラマーのような画像も Stable Diffusion WebUI で作成することが可能です。特に、こういったリアル系の画像で幅広い画像生成ができるのはStable Diffusion WebUI の強みでもあるので、 まずはその基本となるプロンプトに関して詳細に解説していきます。


    ● 事前準備のお願い(説明で必要な拡張機能)

     本稿では、 説明において以下の拡張機能を使用しますので、 事前にインストールをお願いいたします。

     インストールするには、以下のExtensionsのリンクから『Install from URL』を選択し、赤枠の『URL for extension's git repository』という部分に上記のURLを入力し、Install をクリックしてください。

    画像

     両方のインストールが完了したら、Stable Diffusion WebUI を再起動して拡張機能を反映させてください。

     私の案内したノートブックを使用している方は、以下のコードをノートブックから実行することでインストールすることができます。

    !git clone https://github.com/toriato/stable-diffusion-webui-wd14-tagger {EXTENSIONS_DIR}/wd14-tagger
    !git clone https://github.com/Physton/sd-webui-prompt-all-in-one {EXTENSIONS_DIR}/prompt-all-in-one


    ● 前提条件 (Stable Diffusionの使用環境)

     この記事は Stable Diffusion WebUI と SDXL が導入されている事を前提に進めていきます。
     Stable Diffusion WebUI で SDXL を使用するには『NVDIA製のグラフィックボードでかつ VRAM 16GB 以上を搭載したPC』が必要になり、そのスペックのPCを購入するには 約30万円以上の料金がかかります。

     本稿の解説でも、それと同等の使用環境があることを前提に解説を進めます。
     とはいっても、Stable Diffusion の利用にいきなり約30万円の初期投資ができる人はそういないと思いますので、私の記事では

    1. Amazon Sagemaker Studio で無料利用。

    2. Paperspace Gradient で課金し、より高性能なGPUマシンで利用。

    3. それでも物足りなくなったらハイスペックPCを購入する。

    といった優先順位での利用を推奨しております。

     そのため、そのような性能のPCを持たない方は、 私の別の記事で解説している『クラウドサービスから Stable Diffusion WebUI を使用する方法』を使用して、同等の環境で利用することができますので、まずは以下のリンクから登録・導入作業をお願いいたします。

     
    ① 【無料】 Sagemaker Studio で利用する方法

     こちらの方法は、無料で行うことができ、VRAM 15GB を搭載したGPUマシンを使用することができます。つまり、最新版モデルであるSDXLを使用することができます。
     具体的には、Amazon Sagemaker Studio で Stable Diffusion WebUI を使用する方法を詳細に解説しており、 煩わしい導入作業や起動もワンクリックで 行うことができます。

     無料であることのデメリットとしては、ベータ版であることと、1日に4時間の使用制限があることが挙げられますが、 1日の利用制限を実質ないことにする方法も解説しています。
     『 ひとまずは無料で試してみたい』『 マネタイズできてきたら有料のサービスを利用したい』といった方は、以下のリンクをクリックしてご利用ください。

     
    ② 【月額8$】
    Paperspace Gradientで利用する方法

     こちらの方法は、 月額8$ (約1180円) で行うことができ、VRAM 16GB を搭載した、 さらに高性能なGPUマシンを使用することができます。
     具体的には、Paperspace Gradient で Stable Diffusion WebUI を使用する方法を詳細に解説しており、 こちらでも煩わしい導入作業や起動もワンクリックで行うことができます。

     また、こちらの方法では 1 日の利用制限等は特になく、当然 SDXL を使用することも可能です。加えて、初月無料で利用する方法も紹介しております ので、費用を抑えることもできます。
     『もっと画像生成の時間を短縮したい』『 もう一歩踏み込んでStable Diffusion WebUI を使ってみたい』といった方は、以下のリンクをクリックしてご利用ください。


    ※ Stable Diffusion の基礎知識に関して

     本稿では、Stable Diffusion WebUI の基礎的な部分に関しての解説を省略させていただきます。

     Stable Diffusion WebUI の仕組みや基礎・画面説明 などに関しては以下で非常に詳細に解説していますので、以下のリンクをクリックして、是非本稿をお読みになる前にご一読ください。


    ⚠ 本題に移る前に、メンバーシップの説明をさせてください。


    🎈 たった一晩でプロのイラストレーターになれるメンバーシップ 『あいラボ (AI-Labo)』

     このブログでは、月980円で私が書いた有料記事が全て読み放題になるメンバーシップに加入することができます。
     有料記事では、生成AI を使った創造的なコンテンツをお届けしています。
     具体的には、以下のようなものがあります。

    • どんなPCでも、たとえスマホでも Stable Diffusion XL(SDXL)を無料 or 低額で使用する方法
       SDXL を使用するには VRAM16GB 以上のGPUを搭載したPCが必要であり、そのスペックのものを購入しようとすると最低でも30万円はします。
       これを、ある方法を利用することで無料もしくは低額で利用できますので、実質 約30万円 が丸々お得になります。
      👇 詳細は以下クリック👇(マガジンにまとめてあります。)

    • SDXL で思い通りの画像を生成して、自分の絵をもっと好きになる方法
       
      Stable Diffusion は最も画像生成の幅が広く大変機能の充実したジェネレーティブAI ですが、使いこなすにはコツがあります。
       実は、少し工夫を加えるだけで生成画像のクオリティが格段に良くなるのですが、あまり多くの人はその方法を使っていません。
       つまり、その方法を使うだけで、例え初心者であってもすぐに周りを追い越すことができます。その最短距離をお教えします。
      👇 詳細は以下クリック👇
      (マガジンにまとめてあります。)

    • SNS を自動化して、Stable Diffusion を使ったSNS運用をする方法
       
      SDXLの導入と画像生成のコツがわかったら、次はSNSなどで発信して、ポートフォリオを作り副業にしたり、社会貢献に使ったりなどなど、色々な道があると思います。
       そのため、Stable Diffusion の知識に加えて、SNSを自動化する方法も案内しています。ここでは、SNSで毎日決まった時間に画像付きの投稿をする方法などもまとめておりますので、毎日のSNS運用がぐっと楽になるはずです。そうして空いた時間を、画像生成や他の活動に回すこともできます。
      👇 詳細は以下クリック👇(マガジンにまとめてあります。)

     このように、メンバーシップではこれらの記事が全て読み放題になり、その中には通常は3000円近い有料記事も含まれていますので、今ならそれらも980円で閲覧できる事になります。
     今が最もお得な時期になりますので、是非メンバーシップに登録して生成AIの魅力を体験してみてください!
    👇 以下をクリックして、すぐに登録できます👇

     それでは、続きを解説していきたいと思います。



    ● プロンプトとは?

     
    プロンプト

     プロンプトとは AIに「どんな絵を描いてもらいたいか」を伝えるための文章のことです。基本的には英語で、以下の部分に入力します。

    画像

     こちらの記事の『● Stable Diffusionが画像を作るしくみ > Stable Diffusion の 画像生成の過程』で解説した画像のプロンプトを例に出すと、『photo of a japanese girl, light smile, sky』(空の下で笑っている日本人女性の写真)という画像を作ってもらいたい場合は、単語や文章を「,」(カンマ)でつなげた独特な書き方でその内容を文章化してAIに伝えます。
     すると、以下のように、AIが入力された プロンプトに沿って、そのイメージに近いものを生成してくれます。

    画像

     なお、SDXLの場合は自然言語処理にも特化しているため、翻訳ツールで翻訳した英文をそのまま使用する事もできます。

     
    ▫ プロンプトの仕組み

     『● Stable Diffusionが画像を作るしくみ』 で、Stable Diffusion の潜在拡散モデルについて、 AIがプロンプトから読み取った情報をもとに、ノイズを消去しながらきれいな画像にしていくと解説しました。 ここでは、どのようにプロンプトから指示を受け取っているのかどうかを解説します。

     まず、Stable Diffusionは、CLIP、U-NET、VAEという他の画像生成モデルとも関連があります。 それぞれを簡単に説明すると、以下のようになります。

    • CLIP
      画像とテキストの対応関係を学習するモデルで、画像の特徴をテキストで表現できます。Stable Diffusion においては テキストエンコーダーとしての役割を果たしています。

    • U-NET
      画像のセグメンテーション(物体がどこにあるか)を推定するモデルで、画像の構造を保持しながら画像を変換できます。Stable Diffusion においてはノイズから画像を生成する役割を果たしています。

    • VAE
      画像を潜在変数に変換し、その潜在変数から画像を生成するモデルで、画像の多様性を表現できます。Stable Diffusion においては画像の埋め込み空間を操作して画像を生成する役割を果たしています。

     つまり、Stable Diffusionでは、まず CLIPで入力されたプロンプトから『単語・文章の関係性や意図』などといったものを自然言語処理で読み取り、生成したい画像の特徴データに変換します。 そして、その情報をもとにU-NETやVAEで 画像に変換する処理を行っているというわけです。

     自然言語処理のデータセットは、英語で学習されていることがほとんどですので、 最初の単語や文章が主語して扱われやすくなります。
     つまり、Stable Diffusion でプロンプトを入力する場合、冒頭に近い単語や文章が最も生成結果に反映されやすくなります。また、関連のある単語同士が隣り合っている場合は良い生成結果になりやすいなどな、プロンプトの配置によっても 影響されます。

     
    ネガティブプロンプト

     ネガティブプロンプトとは、簡単に説明すると「画像にどんな要素を表示してして欲しくないか」を伝えるための文章のことです。以下の部分に入力します。

    画像

     例えば、ネガティブプロンプトに『worst quality, low quality』(最低品質、低品質)のように記述すると、低画質な画像が出力されにくくなります。
     これを応用して、以下のように入力するとリアル系の画像が出力されやすくなるようにすることができます。

    • プロンプト:『photo of a japanese girl』(日本人の女の子の写真)

    • ネガティブプロンプト:『paintings, sketches』(絵画、スケッチ)

     
    ▫ よくあるネガティブプロンプトの誤解

     先程、『ネガティブプロンプトは簡単に説明すると画像にどんな要素を表示してして欲しくないかを伝えるための文章』と説明しましたが、実はこれは正確な見解ではありません。
     
     Stable Diffusion において、画像生成に使用されるプロンプトの情報は、以下のように選出されます。

    最終的なプロンプト = negative + CFGスケール値 * (prompt - negative)

     つまり、CFGスケール値によって、プロンプトの影響度を制御しており、 CLIPで処理される際の最終的なプロンプトは、プロンプトからネガティブプロンプトのベクトルを引いたものとなるわけです。


    ● プロンプトの構文

     ここでは、実際に以下の画像のプロンプトを例に、プロンプトの構文について解説していきたいと思います。