【超入門 Stability AI API】「モデルとの対話」実習編。Stable Diffusion 3 時代に知っておきたいプロンプトの新常識

こんにちは、AICU代表の しらいはかせ です。
本日は重大ニュースがありますので、最後までしっかりお読みください。

前回、Stability AI API Guideの「超入門」としてライターのRUNO.さんに基本となるGenerate APIと「TextToImageの最近の文法」を総ざらいしていただきました。

Google Colabを使って、基本的な操作に慣れたところだと思います。

この記事ではこの先の画像生成の時代に長く役に立つ「モデルとの対話テクニック」とStable Diffusion 3時代に知っておきたいプロンプトの新常識についてお伝えします。

    「Stable Diffusion 3」の時代に知っておきたいプロンプトの新常識

    モデル、TextToImage、プロンプト、CLIP…

    画像生成AI「Stable Diffusion」の最大の特徴は、テキストを入力することで単語をもとに画像を生成できる機能です。これを「TextToImage(t2i)」、AIに対する指示を行うテキストを「プロンプト」と呼びます。その後も多様な画像生成AIが登場していますが、多くはCLIPという画像と言語の対を学習したモデルが内部に使われており、現在も様々な言語理解を特徴として有したモデルが提案・開発されています。新しい画像生成AIサービスやモデルに出会った時に、まずはモデルと対話して、効率的なプロンプトの構造を理解することが重要です。またモデルや、それを利用したネットワーク、学習方法が多様にあり、多くはそのモデルを調教した側のノウハウにもなるため公開はされていません。想像や噂がネット上にたくさんあるのですが「これが完璧」という方法を一様に宣言することは難しいです。最近のモデルはプロンプトを短くすることに努力が割かれていますし、一方では簡単なキーワードで美麗な結果が出すぎるモデルは「過学習」と言えるかもしれません。

    重要なのは「制御性」と仮説検証テクニック

    画像生成の使い手にとって重要なのは品質や速度、簡単さに加えて「意のままに操れること」つまり「制御性」が重要になります。いくつかのポイントをおさえて仮説検証を行いながらモデルと対話すると、短時間でその特徴を理解して制御することが可能になってきます。

    「モデルとの対話」と実用的で再現可能な実験手法

    また公式情報として提供されているStability AI 公式のAPIガイド、そしてサンプルに散りばめられたプロンプトテクニックを読むことも重要なヒントになります。さらにコミュニティの開発者や探求者による情報も重要なヒントがあります。大事なポイントは、噂や推測でなく、自分で手を動かして、それを検証しなが「モデルと対話」していくことです。実用的で再現可能な実験手法です。ここでは、いくつかの実践的な例や実験手法を通して、最新のStable Diffusion 3時代の文法や表現力を引き出すコツをお伝えします。

    例:ネガティブプロンプトの位置づけの変化

    たとえばこちらに、海外で書かれたStable Diffusion 3 Medium (SD3M)に関する検証記事があります。
    How to get the best results from Stable Diffusion 3
    Posted June 18, 2024 by @fofr
    https://replicate.com/blog/get-the-best-from-stable-diffusion-3

    コミュニティのDELLさんが日本翻訳を公開してくれています。
    ■あなたはStable diffusion 3 の真の性能を発揮できていない

    https://qiita.com/nqdior/items/bd980e2664966871272e

    従来のStable Diffusionと SD3Mが異なる要素として、

    1. プロンプトの長さの制限が大幅に緩和され、より詳細な指示が可能になったこと
    2. 3つのテキストエンコーダーが採用され、表現力とメモリ効率のバランスを取れるようになったこと
    3. ネガティブプロンプトが効果を持たなくなり、詳細なポジティブプロンプトと適切な設定が重要になったこと

    などが挙げられています。SD3Mはオープンモデルなので実際にComfyUI等を使ってより詳細に対話することができます。ネガティブプロンプトはノイズを与える程度の意味しかなくなっています。さらにポジティブプロンプトはより具体性が求められ、従来あったCLIP テキストエンコーダーの77トークンの制限を気にする必要はなく、プロンプトは10,000文字、または1,500語以上といった、従来のプロンプトの常識とは異なるモデルになっています。

    前回の復習「プロンプトの文法:モデルとの対話ポイント」

    Stability AI API で提供されている各種モデル(Ultra, Core, SD3Large等)は、上記のSD3Mと同じではなく、上位のSD3を使ってより使いやすくトレーニングされたモデルになっています。
    前回のポイントを復習しながら、実際に手を動かしながら理解を深めてみたいと思います。同じプロンプト、同じシードを設定すると同様の結果画像が出力されますので、是非お手元で試してみてください。

    画像

    それでは実際に、公式で提供されているGoogle Colabサンプルを用いて、
    画像生成してみましょう!

    Stability AI 提供の公式サンプルへのショートカット
    https://j.aicu.ai/SAIci

    APIリファレンスから参照する場合はこちらから
    https://platform.stability.ai/docs/api-reference

    気になるAPI費用も最高画質のUltraでも1枚10円前後ですから文房具代感覚で使っていくと良いと思います。
    加えて、今回の復習でSD3時代の新常識を身につけると、効率よく画像生成ができるので「GPUやそれを運用する電気代より安い…」という感覚がでてくると思います。

    ポイント①:「生成したい画像のイメージを的確にする」

    画像のイメージ、とはなかなか難しいのですが、「主題・背景・その他」と整理しました。わかりやすく表現すれば単に「女の子」ではなく「女の子、どこで?何着ている?どんな画風で?どんなポーズで?どんな表情をしているの?」といった、主題に続く場面、画風、演出を具体的に意識しましょう。
    逆にモデルと対話したい場合は1語「girl」とだけ打ってみて、Seedや画面の縦横比を変えてみると良いです。具体的な指示がなかったときに何が起きるかを把握できるからです。

    ▼「girl」(seed:39, aspect ratio 1:1)Ultraにて生成

    画像

    ▼「girl」(seed:40, aspect ratio 1:1)Ultraにて生成

    画像

    ▼「girl」(seed:39, aspect ratio 16:9)Ultraにて生成

    画像

    どれも美麗な出力結果ですが、具体的に「どこで、どんな画風で、何を着ているの…?」といった対話するための「画像のイメージ」を持つことが大切です。

    ポイント②:「知っておくべきルール」

    • 英語で書く
    • 単語もしくは 文の区切りにカンマ(,)を入れる

    このあたりは基本として変わらないようです。こういうときも「日本語で書いてみると反応するかも?」という視点で試しておくと良いでしょう。

    ▼「日本人」(seed:39, aspect ratio 16:9)Ultraにて生成

    画像

    ▼「日本人」(seed:40, aspect ratio 16:9)Ultraにて生成

    画像

    日本語をある程度解釈していることがわかります。
    フランス語で「フランス人(les Français)」も試してみましょう。

    ▼「les Français」(seed:38, aspect ratio 16:9)Ultraにて生成

    画像

    ▼「les Français」(seed:39, aspect ratio 16:9)Ultraにて生成

    画像

    想像したような画像が出力されておりますでしょうか?
    フランスの法律によれば、「フランス人」は『すべて個人的にフランス国籍を享受する人々であり、また集団として主権領土として、自由な国民または国家としてフランスを享受する人々』ですが、なかなか「人々」を描いてくれません。日本語の学習と他の言語の学習を比較すると一様ではないということでもあります。

    具体的に英語で「人々(people)」を表現してみましょう。

    ▼「French people」(seed:39, aspect ratio 16:9)Ultraにて生成

    画像

    ▼「Japanese people」(seed:39, aspect ratio 16:9)Ultraにて生成

    画像

    ステレオタイプを強化する意図はないですが、「具体的に、英語で指示する」ことが重要なポイントであることが検証できました。

    カンマや順番についても実験しておきます。

    ▼「Japanese, people」(seed:39, aspect ratio 16:9)Ultraにて生成

    画像

    ▼「people, Japanese」(seed:39, aspect ratio 16:9)Ultraにて生成

    画像

    カンマで区切ったり、順番を入れ替えたりすることで、同シード・同じアスペクト比でも全く異なる画像が出る可能性があることがわかりました。

    ロケ地が近いことはなんとなく想像できるのですが、やはり「プロンプトの具体性がないと、画像として美しい絵はしっかり出るけれども、制御が難しい」という「ルール」が体感できたようであればまずは十分です。

    ポイント③:「クオリティプロンプトを使用する」

    過去、Stable Diffusion 1.x時代、Stable Diffusion XL (SDXL)時代に画像生成界隈で言及されてきたプロンプトの常識として「クオリティプロンプト」がありました。例えば、傑作(masterpiece)、高クオリティ(high quality, best quality)、非常に詳細(ultra detailed)、高解像度(8k)といった「定型句」を入れるとグッと画質が上がるというものです。これは内部で使われているCLIPやモデル全体の学習に使われた学習元による「集合知(collective knowledge/wisdom of crowds/collective knowledge)」なのですが、「それがなぜ画質を向上させるのか?」を説明することは難しい要素でもあります。
    Stability AI APIでも上記のクオリティプロンプトは効果があり、意識して使ったほうが良いことは確かですが、過去と同じ使い方ではありません。
    実験的に解説してみます。

    ultra detailed, hires,8k, girl, witch, black robe, hat, long silver hair, sitting, smile, looking at viewer, full body, flower garden, blue sky, castle, fantasy, vivid color, noon, sunny

    #SD黄色本」からの引用です

    上記のプロンプトをクオリティプロンプトとしての「ultra detailed, hires, 8k,」を変更して、同じシード(seed:39)を使って Stability AI Generate Ultraによる比較をしてみました。

    ▼(seed:39), Stability AI Generate Ultraによる比較

    「girl, witch, black robe, hat, long silver hair, sitting, smile, looking at viewer, full body, flower garden, blue sky, castle, fantasy, vivid color, noon, sunny」

    実は合成魔法なの…!? 過去と異なるクオリティプロンプト

    最近のモデルの言語理解力は「単語単位ではない」ようです。例えば今回の実験で与えた{hires, 8k, ultra detailed}をそれぞれバラバラに与えた場合、ほんの少し画像への影響はありますが、どれも同程度の変化です。

    しかし、「ultra detailed, hires, 8k」という形で3ワード同時に与えた場合は大きく画風が変わります。

    またベースになっているプロンプトにおいても、どこにも『アニメ絵で描いて』という指定は入っていません。{fantasy, witch} といったワードを外しても、プロンプト全体の雰囲気でファンタジーイラストを生成します。

    ▼「girl, black robe, hat, long silver hair, sitting, smile, looking at viewer, full body, flower garden, blue sky, castle, vivid color, noon, sunny」(seed:39) Stability AI Generate Ultraによる生成

    画像

    ▼「girl, black robe, hat, long silver hair, sitting, smile, looking at viewer, full body, flower garden, blue sky, castle, vivid color, noon, sunny」(seed:40) Stability AI Generate Ultraによる生成

    画像

    ここで公式のAPIガイドを確認しておきましょう。

    What you wish to see in the output image. A strong, descriptive prompt that clearly defines elements, colors, and subjects will lead to better results.
    To control the weight of a given word use the format (word:weight), where word is the word you’d like to control the weight of and weight is a value between 0 and 1. For example: The sky was a crisp (blue:0.3) and (green:0.8) would convey a sky that was blue and green, but more green than blue.

    出力画像で表示させたいもの。 要素、色、主題を明確に定義するわかりやすい説明的なプロンプトを使用すると、より良い結果が得られます。
    特定の単語の重みを制御するには、(単語:重み)という形式を使用します。単語は重みを制御したい単語、重みは0から1の間の値です。例えば、「空は晴れやかだった(青:0.3), (緑:0.8)」は、青と緑の空を表現しますが、青よりも緑が強調されます。

    という1文があります。
    要素、色、主題、そしてカッコを使った重み構文についての実験と検証もしてみましょう。

    vivid color,を外して、代わりに「(photoreal:1.0)」を入れてみます。

    ▼(photoreal:0.5), girl, black robe, hat, long silver hair, sitting, smile, looking at viewer, full body, flower garden, blue sky, castle, noon, sunny (seed:40)

    画像

    この構文の数値は「0-1の間をとる」とのことですので、増減させることで、フォトリアル度を制御できます。この数字を減らすことで、アニメ絵に寄せることができるなら便利です。

    (photoreal:0.5), girl, black robe, hat, long silver hair, sitting, smile, looking at viewer, full body, flower garden, blue sky, castle, noon, sunny (seed:40)

    画像

    (photoreal:0.1), girl, black robe, hat, long silver hair, sitting, smile, looking at viewer, full body, flower garden, blue sky, castle, noon, sunny (seed:40)

    画像

    上手くフォトリアル-アニメ度を制御できました。

    逆に、1を超えて大きな値をいれるとどうなるでしょうか。

    (photoreal:2), girl, black robe, hat, long silver hair, sitting, smile, looking at viewer, full body, flower garden, blue sky, castle, noon, sunny (seed:40)

    画像

    うまくリアル度が上がっていきます。
    「さらに大きな値を…」と欲張ってみましたが、ここから先は絵が破綻します。あまりにお見苦しいので興味があるひとはご自身で試してみてください。
    仕様から読み取ることができる使い方としては、複数のワード間の重み付けに使えるので、バランスを取ったり、色指定や表情の指定に使うと良さそうです。

    ▼(photoreal:1) a 10 years old child looks (girl:0.5) (boy:0.5), black robe, hat, long silver hair, sitting, smile, looking at viewer, flower garden, blue sky, castle, noon, sunny (seed:40)

    画像

    男児か女児か微妙な「10歳の子供」が見事に表現できました。

    ポイント④:「ポーズを指定しよう」

    人物画などを生成したいときは、ポーズを指定してみましょう。

    • sitting (座る)
    • raise hands (手を上げる)
    • looking back (振り返る)
    • jumping (ジャンプ)

    こちらも、より深い言語理解を想定して、きちんと人物に係る場所に入れるのが大事です。さらに複数語に渡るワードの強調構文も有効で(AICUの独自実験によると)スペースでもハイフンも認識されるようです。

    (photoreal:1), a10 years old child looks (girl:0.5) (boy:0.5), (hands-on-own-cheeks:1), black robe, hat, long silver hair, sitting, smile, looking at viewer, full body, flower garden, blue sky, castle, noon, sunny (seed:39)

    画像

    (photoreal:1), a10 years old child looks (girl:0.5) (boy:0.5), (hands on own cheeks:1), black robe, hat, long silver hair, sitting, smile, looking at viewer, full body, flower garden, blue sky, castle, noon, sunny (seed:39)

    画像

    男児か女児かわからない10歳ぐらいの子供が、「頬に手を当てこっちをみている」が表現できました。

    ポイント⑤:「構図を指定しよう」

    ポーズを指定しても、思ったような絵が出ない場合は、構図を指定すると効果的です。構図を後から変えると絵全体が変わることがあるので、初めからある程度決めておくのがおすすめです。

    • from above (上から)
    • from below (下から)
    • face focus (顔のアップ)
    • from side (横顔)

    さきほどのプロンプトから「looking at viewer, full body」を外して「(from side:1)」を入れてみます。

    ▼(photoreal:1), a10 years old child looks (girl:0.5) (boy:0.5), (hands on own cheeks:1), black robe, hat, long silver hair, sitting, smile, (from side:1) ,flower garden, blue sky, castle, noon, sunny (seed:39)

    画像

    ▼(photoreal:1), a10 years old child looks (girl:0.5) (boy:0.5), (hands on own cheeks:1), black robe, hat, long silver hair, sitting, smile, (from side:1), (face focus:1) ,flower garden, blue sky, castle, noon, sunny (seed:39)

    画像

    いい感じに顔に注目が当たりました。さらに目線をがんばってみたい。

    ▼(photoreal:1), a10 years old child looks (girl:0.5) (boy:0.5), (hands on own cheeks:1), black robe, hat, long silver hair, sitting, smile, (from side:1), (eyes focus:1) ,flower garden, blue sky, castle, noon, sunny (seed:39)

    画像

    顔や目だけでなく、指にも気遣いたいのでバランスを取っていきます。

    ▼(photoreal:1) (from side:1), a10 years old child looks (girl:0.5) (boy:0.5), (hands on own cheeks:1), black robe, hat, long silver hair, sitting, smile, (finger focus:0.5), (eyes focus:0.5) ,flower garden, blue sky, castle, noon, sunny (seed:39)

    画像

    良いプロンプトができました。
    念のため、シードも複数で試しておきますね。

    ▼(photoreal:1) (from side:1), a10 years old child looks (girl:0.5) (boy:0.5), (hands on own cheeks:1), black robe, hat, long silver hair, sitting, smile, (finger focus:0.5), (eyes focus:0.5) ,flower garden, blue sky, castle, noon, sunny Seed:40

    画像
    指もいいかんじですね

    ▼(photoreal:1) (from side:1), a10 years old child looks (girl:0.5) (boy:0.5), (hands on own cheeks:1), black robe, hat, long silver hair, sitting, smile, (finger focus:0.5), (eyes focus:0.5) ,flower garden, blue sky, castle, noon, sunny Seed:41

    画像
    画像
    Seed 42
    画像
    Seed 43

    「中性的な魅力を持った子供っぽい魔法使い」を制御性高く表現できるようになりました。

    まとめ

    Stable Diffusion 3時代に知っておきたいプロンプトの新常識と、その検証方法を整理しました。ファンタジーイラストからフォトリアルまで、完璧に制御できるプロンプトの文法、さらに画風や性別なども数字で表現できるテクニック、シードを使った制御方法やその確認など、今までのTextToImageよりもさらに深い世界が広がっていることを感じていただけたようであれば幸いです。
    これらのテクニックやモデルとの対話方法により、従来のホビー向けイラスト表現や「一発出し」のフリー画像素材的な使い道を超えて、商業広告やグラフィックデザイン、動画制作のようなプロフェッショナル用途に使用できる可能性が大きく拡がっています。しかもライセンス的にもすべて商用利用可能です。

    AICUもさまざまなAI時代のクリエイターとともに、AI時代の商業映像開発、パイプライン開発、教育マテリアル開発などを行っています。

    Stability AI APIは手軽に使えて高機能で、こんなに美麗なグラフィックスが作れるのに、使いこなしのための情報が少ない!
    AICU media編集部ではこれからも Stability AIさんやクリエイティブAIコミュニティのみなさんと協力して、各種読み物メディアで日々APIガイドの日本語情報を発信していきます。

    記事はこちらに集約されています
    マガジン「Stability AI Fan!」
    ▶Stability AI APIガイド(インデックスページはこちら

    https://note.com/aicu/n/n4eda1d7ffcdf

    そして品質の高い技術を開発していただいている、Stability AIさんありがとうございます!

    https://corp.aicu.ai/ja/stability-ai

    そして「ワタシはこんな風に使いこなしてる!」という方、ぜひAICUでクリエイターとして活躍しませんか?ライターや案件など X@AICUai のDMやメンバーシップ、コミュニティDiscordにて随時お話お聞きしております。

    重大ニュース!「Coloso」とのコラボ講座
    超入門: Stable Diffusionではじめる画像生成AI」開講!!

    さて、誰もが簡単に出せるt2iから、プロフェッショナル向け、商業向けレベルの生成AIクリエイティブの新時代もやってきています。
    これはCGの歴史を振り返ってみても確実な流れです。
    ここで重大ニュースの発表です。

    画像
    https://coloso.global/

    世界中のトップクラスのコンテンツばかりを集めたオンライン講座の国際企業「Coloso」(コロッソ)とAICUが一緒に企画した、初めてのクリエイティブAIに関する専門講座「超入門: Stable Diffusionではじめる画像生成AI」が7日後(2024年8月23日)に公開されます!

    画像
    このシリーズ「超入門 Stability AI API」と同じなのでは…?いえいえ違います!

    講座内容はAICU mediaで人気の日々お送りしている生成AIクリエイティブの情報、画像生成AIの歴史や文化、GPU不要・Macでも安心な環境構築、Google Slidesを使ったオリジナルツール、そして「超入門 Stability AI API」でもお送りしている「Stability AI API」を使って基礎の基礎から丁寧に学ぶ「基礎編」、さらに美麗なファッションデザインを自分で制作する「応用編」、広告業界やクリエイティブ業界にとって気になる「広告バリエーション」を生成AIだけで制作する「活用編」、そして画像生成AIにおける倫理など広範になる予定です。

    画像
    受講者はオリジナルファッションブランドのルックブックを作りあげることができます

    全20講座超え、総プログラム時間10時間を超える豊富なカリキュラムで構成されています。
    (AICUクリエイターの夏休みのすべてが凝縮されています!!)

    【代表からのメッセージ】
    世界の動画ラーニングプラットフォームのトップブランド「Coloso」で、AICUから今回の講座を発表できることを嬉しく思います。
    今回、準備しながら感じたこととして。日々の読み物メディアで発信をしつつ、企業向けコンサルティング大企業向けワークショップで数多くのトップクリエーターさん向けにレクチャーを提供させていただいているAICUですが、今回はさらに広い方々向けに動画メディアで短期集中で実用的なテクニックを確実に学べる講座を企画いたしました。このような企画が短時間で実現できたのは、画像生成AI分野を長年研究し「つくる人をつくる」をビジョンに活動するデジタルハリウッド大学発の国際スタートアップ企業「AICU Inc.」と、国際ラーニングメディア「Coloso」とのコラボならでは!と感じています。
    世界を舞台に日々進化する画像生成AIの分野。長期に活用できるようなテクニックを、従来の画像生成の常識を揺さぶりながら、最新のテクニックを短い時間で丁寧に、楽しく集中して学べる良質コンテンツになっておりますので、「これからはじめてみたい」という方々も、画像生成に詳しい方々も、「最先端の使いこなしを知りたい」「社内教育に使いたい」といった方々にもご活用いただければ幸いです。

    講座のカリキュラムが確認できる詳細ページは、7日後
    8月23日に公開される予定ですのでもう少しお待ちください!

    実は今、Colosoで講座の事前通知申請を申請すると
    6,000円の割引クーポンがもらえるので、お得な特典をお見逃しなく!
    ▶事前通知を申請する>> https://bit.ly/3YGSNda

    以上、AICU media編集部・および代表のしらいはかせがお送りしました。
    🙇今後とも皆さんの応援をよろしくお願いいたします🙇

    最後まで読んでいただきありがとうございました!

    Originally published at https://note.com on Aug 16, 2024.