AICU

【超入門】Stability AI API 公式サンプルで「TextToImageの最近の文法」を総ざらい!

作成者: AICU Japan|2024/08/19 16:49:13 Z

こんにちは、AICU media編集部です。ライターのRUNO.がお送りします!

今回は、Stability AI API Guideの「超入門」!
Generate APIと「TextToImageの最近の文法」を総ざらいします。

Stability AI APIとは?

Stability AI APIは、Stability AIが提供するクラウドベースのAPIサービスです。後述のGoogle Colabでの実験環境だけでなく、Google Slidesや独自のアプリなどで、画像生成をはじめとしたパワフルな機能を利用することができます。ユーザーはGPUやサーバーといった演算環境をはじめ、何も用意する必要はありません。
そして、とても重要な特徴なのですが、Stability AIのAPIはすべて「商用利用可能な画像生成が可能」なのです。これはあまり知られていないことなのですが、後々のトラブルを防ぐためにもプロフェッショナル向けの画像生成において意識しておきたいポイントです。

APIの種類と特徴について

Stability AI公式ページでは、2024年8月現在全部で16個の画像系モデルが存在しています(coming soonと記載されたものを含めると18個)。

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

動画生成、言語、3D、オーディオを含めると23種類となります。

画像系は大きくは「Generate」「Upscale」「Edit」「Control」の4つに大別され、それぞれ次のような特徴があります。

  • 「Generate」:いわゆる「TextToImage」です
    • プロンプト(テキスト)によって画像生成を行う
    • 現在6つのモデルが提供されている
  • 「Upscale」:高解像度化
    • ベースとなる画像を入力し、そこにプロンプト(テキスト)で指示を追加し画像生成を行う
    • 現在{Creative, Conservative}という2つのモデルが提供されている(加えて、Standardがcoming soonとして予告されている)
  • 「Edit」いわゆるImageToImageです
    • ベースとなる画像を入力し、そこにプロンプト(テキスト)で指示を追加し画像再生成を行う
    • 現在{Search and Replace, Inpaint, Outpaint, Remove Background, Erase Object}5つのモデルが提供されている
  • 「Control」こちらも いわゆる ImageToImage です
    • ベースとなる画像を入力し、そこにプロンプト(テキスト)で指示を追加し画像再生成を行う
    • 現在{Sketch, Structure, Style}3つのモデルが提供されている(加えて、 Recolorがcoming soonとして予告されている)

https://platform.stability.ai

今回は最も基本的な「Generate API」について解説していきます。

Generate APIとは

新しい画像や既存の画像のバリエーションを生成するためのツールです。
TextToImage(テキストから画像を生成する)の根幹を担いますが、最高品質の画質と文字を書く能力(タイポグラフィー)、照明、色合い、構成力などに優れています。特にStable Diffusion 3世代のモデルから作られた Ultraは特筆に値します。

Stable Image Ultra
Stability AIの最も先進的な「Text to Image」画像生成サービスであるStable Image Ultraは、前例にないほど迅速な言語理解と最高品質の画像を作成します。Ultraは、タイポグラフィー、複雑な構成、ダイナミックな照明、鮮やかな色合い、そしてアート作品全体のまとまり(cohesion)と構成力に優れています。Stable Diffusion 3をはじめとする最先端のモデルから作られたUltraは、Stable Diffusionエコシステムにおける最高のサービスです。

https://platform.stability.ai/docs/api-reference#tag/Generate  より人力翻訳

Stable Diffusion 3時代のプロンプトの文法

まず、Stable Diffusionではテキストを入力することで単語をもとに画像を生成し、これを「TextToImage(t2i)」と呼びます。このAIに対する指示を行うテキストを「プロンプト」と呼びます。
モデルによって様々な言語理解が特徴としてありますが、まずはモデルと対話して、効率的なプロンプトの構造を理解することが重要です。

モデルが多様にあるため「これが完璧」という方法を一様に宣言することは難しいです。想像や噂がネット上にたくさんあるのですが、最近のモデルはプロンプトを短くすることに努力が割かれていますし、一方では簡単なキーワードで美麗な結果が出すぎるモデルは「過学習」とも言えるかもしれません。画像生成の使い手にとって重要なのは品質や速度、簡単さに加えて「意のままに操れること」つまり「制御性」が重要になります。いくつかのポイントをおさえてモデルと対話すると、その特徴を理解して制御が可能になってきます。
Stability AI 公式のサンプルに散りばめられたサンプルプロンプトを読んでいると、最新のStable Diffusion 3時代の文法や表現力を引き出すコツが見えてきます。ポイントを整理して、実際に手を動かしながら理解を深めてみたいと思います。

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

例として「遠くに小さな小屋の前で、少女が青い小鳥と仲良く遊んでいる」といったイメージがあったとします。これを細部を深めつつ分解して考えてみましょう。

  • 主題:少女、赤いワンピース、赤い靴、三つ編み、青い小鳥…
  • 背景:小屋・青空・草原・森・木々・差し込む光
  • その他:ファンタジー・落ち着いた雰囲気・昼間・晴れている

ビジュアルを構成する要素を大きく分けると「主題」と「背景」、そしてアニメ風やファンタジーイラスト、フォトリアルなどの「画風」、さらに構図、表情、雰囲気といった演出の要素になります。

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

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

例:ルール通りにプロンプトを書く

  • 主題:1girl, red one-piece dress, red shoes, braided hair, a bluebird
  • 背景:a cottage, blue sky, meadow, forest, trees, rays of sunlight
  • その他:fantasy, calm atmosphere, daytime, sunny

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

これまで画像生成界隈で言及されてきたプロンプトの常識として「クオリティプロンプト」がありました。例えば、傑作(masterpiece)、高クオリティ(high quality, best quality)、非常に詳細(ultra detailed)、高解像度(8k)といった「定型句」を入れるとグッと画質が上がるというものです。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

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

なお最近のモデルでは既にこのような常識も学習済みであったり、モデルや出力する画風によっては逆効果になる場合もあります。
Stability AI API の公式情報によると、

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

という指摘があります。AICUでは日々、このような制御構文は研究を進めており、詳しくは別の機会に実験方法とともに解説したいと思います。

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

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

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

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

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

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

【実践:基礎】 Google Colabサンプルの動かし方

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

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

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

ステップ1:公式Colabにアクセスする

APIリファレンスを開くと、公式Colabが次のように提供されています。

ピンクの枠部分をクリックすると、公式が提供しているColabに飛ぶことができます

実際のリンクはこちらになります。

https://colab.research.google.com/github/stability-ai/stability-sdk/blob/main/nbs/Stable_Image_API_Public.ipynb#scrollTo=yXhs626oZdr1

ステップ2:画像生成を始めるための準備

クリックしてColabに飛ぶと、このような画面になります。

画像生成を始める準備として、上から3つの操作を順番に実行する必要があります。

まずはInstall requirementsを実行しましょう

警告が表示されますが、今回は公式が提供しているColabになるので、
「このまま実行」をクリックします。

青い字で書かれた「このまま実行」をクリックします

これが完了したら、次にConnect to the Stability APIを実行します。

このピンクの枠部分がConnect to the Stability APIの実行ボタンです

実行すると、このようにAPIキーの入力を求められます。

APIキーは、Stability AIにアクセスし、右上のアカウントアイコンをクリックすることで取得することが可能です。

右上のアカウントアイコンをクリックしましょう こちらの API key のリンクからでも取得可能です

https://platform.stability.ai/account/keys

ピンクの枠内にAPIキーが表示されています(※マスキングしております)

「sk-… 」で始まる文字列がAPIキーです。

これを先ほどのColabの枠内に入力し、Enterを押しましょう。

完了したら、最後にDefine functionsを実行しましょう。

ピンクの枠に示すボタンをクリックし、Define functionsを実行します

ここまで完了したら、それより下に続くモデルをどれでも利用可能な状態になります。

ステップ3:モデルを選んで、いざ画像生成!

今回は、Stable Image Ultraを使って、画像生成をしてみましょう!

サンプルでは、はじめからこのようなプロンプト例と実行例が表示されています。

はじめはこの状態

既に入力されているプロンプトを削除し、生成したい画像を示すプロンプトを「prompt」箇所に入力します。

今回は、上で例にとった「遠くに小さな小屋の前で、少女が青い小鳥と仲良く遊んでいる」を生成してみます。

実際はプロンプトは一行で書きますが、見やすいように要素ごとに分けて記載します。

prompt:

  • best quality(クオリティプロンプト)
  • 1girl, little girl, wide angle, vertical angle, red one-piece dress, red shoes, gold braided hair(主題1)
  • a tiny bluebird, playing, chatting(主題2)
  • in front of a cottage, blue sky, meadow, forest, trees, rays of sunlight, fantasy, calm atmosphere, daytime, sunny(背景など)

次に、ネガティブプロンプトを入力します。
ネガティブプロンプトとは、写って欲しくないものを入力し、出力画像のクオリティを上げるために指定します。

たとえば、

  • 普通のクオリティ(normal quality)
  • 醜い(ugly)
  • 上手に生成されていない手(bad hands)
  • 暗い雰囲気にしたくないとき(dark)

今回はシンプルに

negative prompt:  normal quality, ugly

とします。

ちなみに、ネガティブプロンプトは細かく入れすぎると逆効果の場合もあります。できるだけシンプルに入れることで無駄な制約を減らすことができます。

aspect_ratioは出力画像のサイズを指定します。
seedは画像の種類に番号が振られているようなイメージで、同じseedかつ同じプロンプトでは毎回同じ出力が得られます。絵柄を固定したい時などに便利です。

今回はaspect_ratio: 3:2, seed: 39とします。

それぞれの設定が入力できたら、実行ボタンを押下します。

いざ、実行!

実行が完了すると、画像が表示されます。

嬉しい! かわいらしい!そして画質がいい!

まるでアニメのオープニングのような美しい画像が得られました!

皆様はイメージ通りの画像が得られましたでしょうか?

補足1:画像の保存

この段階で表示された画像を保存したいときは、表示されている画像を右クリックすることで「名前をつけて保存」で保存できます。

もう一つの方法はGoogle Colabの左側にあるフォルダタブ📁をクリックして「generated_…」という名前のPNG画像を保存することです。

どちらも1216×832ピクセルの同じ画像です。
これをGoogle Driveに直接保存する方法がありますが、こちらは公式サンプルをほんの少し修正する必要がありますので別の機会に紹介します。

補足2:Colabをドライブにコピーし、オリジナルのコードを追加する

左上から「ドライブにコピー」を押すと、ログインしているGoogleアカウントのGoogle driveにColabノートブックをコピーすることができます。

自分のドライブ上で自由に生成を楽しもう

オリジナルのpythonコードを追加して、生成した画像を自動でGoogle drive上のフォルダにアップロードするなど、
コードを追加すれば様々な処理が可能になります。

ちなみに、自分のドライブにコピーをしないままコードを追加しようとするとこのようなエラーが出てしまい、実行することができません。

コードを追加したいときは最初に自分のドライブにコピーしてから始めましょう!

【実践:応用】 Upscaler機能紹介とデモ

Upscalerとは、画像を入力として与え、そこにテキストで追加指示を送ると、高画質に変換してくれるAPIです。

現在公式が提供しているColab上では「Creative Upscaler」と「Conservative Upscaler」の2つを利用することができます。

先ほどUltraで生成したColabの画面を下にスクロールすると、Upscaler機能を利用できます。

下にスクロールするとUpscalerなど他のモデルがあります

「Creative Upscaler」と「Conservative Upscaler」の違い

  • Creative Upscalerは、与えた画像にさらにクリエイティブな加工を施すとともに、高画質化して出力します。
  • Conservative Upscalerは、与えた画像を高画質化して出力します。

先ほどUltraで出力した画像をこの2つのモデルにかけてみましょう。

Upscalerを始めるための準備

まずは、画面左側の「ファイルマーク」をクリックします。
下に示す画像に従って、順番にクリックしていきましょう。

画面左側のファイルマークをクリックします 次に、一番上のファイルマークをクリックします 「content」ファイルにカーソルを当て、右側のマークをクリックします 表示されたメニューから「アップロード」をクリックします。

そして、先ほどUltraで生成した画像を選んで、アップロードします。

少し待つと、この三角マークを押して表示される「content」フォルダの中にアップロードした画像の名前が表示されます。

contentフォルダの中身を確認しましょう アップロードした画像にカーソルを当て、メニューを開きます 「パスをコピー」をクリックします

これで、Upscalerを利用する準備ができました!

Creative Upscalerを使ってみよう!

「image」には今コピーしたファイルのパスをペーストします。
「prompt」には、どのように加工を施すか入力します。
「negative prompt」には写したくないものや雰囲気を、
「creativity」には新たに施す加工をどの程度強くするかを設定します。

今回は
  prompt: photorealistic, emotional
  negative prompt: normal quality, ugly
  seed: 39
  creativity: 0.30
としました。

入力イメージ

さあ、実行してみましょう。

フォトリアルに変わっています!

比べてみると、高画質化もされているのがわかります。

左がUpscale後の画像、右が元画像です

Conservative Upscalerを使ってみよう!

「Conservative」とは「保守的な」という意味です。
「Creative」に対して、もとの画風を維持します。

promptには、元画像を生成した時のプロンプトを入れます。
その他の設定はCreative Upscalerと同じです。

入力イメージ

実行すると、次のような画像が得られました。

ぱっと見は変化がわかりづらいかも?

拡大して比較してみると、確かに高解像度化されているのがわかります。

左が元画像、右がUpscale後の画像です

[体験談] ライターのnoteアイコンを実際にUpscaleしてみた

Upscale前の元画像がこちらになります。

Upscale前の元画像です

Upscale後の画像がこちらです。今回はConservative Upscalerを使用しました。この状態で見比べても、画質が良くなっていることがわかりますね!

Conservative Upscalerで高画質化した後の画像です

拡大して比較すると、明確にUpscaleされていることがわかります。

左が元画像、右がUpscale後の画像です!

元画像はDALL-Eを活用して生成しました。

このように、他サービスで生成した画像をStability AI APIと掛け合わせて使うこともできるのですね。

好みや用途に合わせて使うことで、より創作の幅が広がりますね。

皆様もぜひ、気に入った画像を高画質化してみてくださいね!

さいごに

公式Colabには今回紹介した以外にも多くのAPIが公開されており、
自由に触ることができます。

様々なAPIを試し、ぜひ色々なタイプの画像生成にチャレンジしてみてくださいね!

Stable Diffusionを開発・公開している Stability AI は、HuggingFaceで無償でダウンロード可能な Stable Diffusion をはじめとするオープンモデル以外に「Stability AI API」という有償のAPIも提供しています。高品質で高速、高機能なAPIであり、新しく魅力的な機能もどんどんリリースされているので 開発者向けのAPIガイド として紹介していきたいと思います。

上記「Stability AI API Guide」noteより

冒頭でも紹介したStability AI API Guideは随時更新していきます!

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

最後に Stability AI APIの Stable Image Ultra で生成したカバーアートの探求を共有します。

AICUのAIキャラクター「全力肯定彼氏くんLuC4」です

3D化して

実写化してみました

そのまま学位帽をかぶせて3Dアニメーション風に…

完成です!

best quality, photorealistic, graduation cap, mortarboard, 1boy, very cool high school boy, solo, gentle smile, gentle eyes, (streaked hair), red short hair with light highlight, hoodie, jeans, newest, colorful illuminating dust, in a mystical forest seed:39

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

この記事の続きはこちらから https://note.com/aicu/n/n8981d463ee89

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