【超入門】Stability AI API 公式サンプルで「TextToImageの最近の文法」を総ざらい!
こんにちは、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個)。
動画生成、言語、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として予告されている)
今回は最も基本的な「Generate API」について解説していきます。
Generate APIとは
新しい画像や既存の画像のバリエーションを生成するためのツールです。
TextToImage(テキストから画像を生成する)の根幹を担いますが、最高品質の画質と文字を書く能力(タイポグラフィー)、照明、色合い、構成力などに優れています。特にStable Diffusion 3世代のモデルから作られた Ultraは特筆に値します。
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,」を変更して、同じシード(seed:39)を使って Stability AI Generate Ultraによる比較をしてみました。
なお最近のモデルでは既にこのような常識も学習済みであったり、モデルや出力する画風によっては逆効果になる場合もあります。
Stability AI API の公式情報によると、
という指摘があります。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が次のように提供されています。
実際のリンクはこちらになります。
ステップ2:画像生成を始めるための準備
クリックしてColabに飛ぶと、このような画面になります。
画像生成を始める準備として、上から3つの操作を順番に実行する必要があります。
警告が表示されますが、今回は公式が提供しているColabになるので、
「このまま実行」をクリックします。
これが完了したら、次にConnect to the Stability APIを実行します。
実行すると、このようにAPIキーの入力を求められます。
APIキーは、Stability AIにアクセスし、右上のアカウントアイコンをクリックすることで取得することが可能です。
https://platform.stability.ai/account/keys
「sk-… 」で始まる文字列がAPIキーです。
これを先ほどのColabの枠内に入力し、Enterを押しましょう。
完了したら、最後に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画像を保存することです。
どちらも1216x832ピクセルの同じ画像です。
これをGoogle Driveに直接保存する方法がありますが、こちらは公式サンプルをほんの少し修正する必要がありますので別の機会に紹介します。
補足2:Colabをドライブにコピーし、オリジナルのコードを追加する
左上から「ドライブにコピー」を押すと、ログインしているGoogleアカウントのGoogle driveにColabノートブックをコピーすることができます。
オリジナルのpythonコードを追加して、生成した画像を自動でGoogle drive上のフォルダにアップロードするなど、
コードを追加すれば様々な処理が可能になります。
ちなみに、自分のドライブにコピーをしないままコードを追加しようとするとこのようなエラーが出てしまい、実行することができません。
【実践:応用】 Upscaler機能紹介とデモ
Upscalerとは、画像を入力として与え、そこにテキストで追加指示を送ると、高画質に変換してくれるAPIです。
現在公式が提供しているColab上では「Creative Upscaler」と「Conservative Upscaler」の2つを利用することができます。
先ほどUltraで生成したColabの画面を下にスクロールすると、Upscaler機能を利用できます。
「Creative Upscaler」と「Conservative Upscaler」の違い
Creative Upscalerは、与えた画像にさらにクリエイティブな加工を施すとともに、高画質化して出力します。
Conservative Upscalerは、与えた画像を高画質化して出力します。
先ほどUltraで出力した画像をこの2つのモデルにかけてみましょう。
Upscalerを始めるための準備
まずは、画面左側の「ファイルマーク」をクリックします。
下に示す画像に従って、順番にクリックしていきましょう。
そして、先ほどUltraで生成した画像を選んで、アップロードします。
少し待つと、この三角マークを押して表示される「content」フォルダの中にアップロードした画像の名前が表示されます。
これで、Upscalerを利用する準備ができました!
Creative Upscalerを使ってみよう!
「image」には今コピーしたファイルのパスをペーストします。
「prompt」には、どのように加工を施すか入力します。
「negative prompt」には写したくないものや雰囲気を、
「creativity」には新たに施す加工をどの程度強くするかを設定します。
今回は
prompt: photorealistic, emotional
negative prompt: normal quality, ugly
seed: 39
creativity: 0.30
としました。
さあ、実行してみましょう。
比べてみると、高画質化もされているのがわかります。
Conservative Upscalerを使ってみよう!
「Conservative」とは「保守的な」という意味です。
「Creative」に対して、もとの画風を維持します。
promptには、元画像を生成した時のプロンプトを入れます。
その他の設定はCreative Upscalerと同じです。
実行すると、次のような画像が得られました。
拡大して比較してみると、確かに高解像度化されているのがわかります。
[体験談] ライターのnoteアイコンを実際にUpscaleしてみた
Upscale前の元画像がこちらになります。
Upscale後の画像がこちらです。今回はConservative Upscalerを使用しました。この状態で見比べても、画質が良くなっていることがわかりますね!
拡大して比較すると、明確にUpscaleされていることがわかります。
元画像はDALL-Eを活用して生成しました。
このように、他サービスで生成した画像をStability AI APIと掛け合わせて使うこともできるのですね。
好みや用途に合わせて使うことで、より創作の幅が広がりますね。
皆様もぜひ、気に入った画像を高画質化してみてくださいね!
さいごに
公式Colabには今回紹介した以外にも多くのAPIが公開されており、
自由に触ることができます。
様々なAPIを試し、ぜひ色々なタイプの画像生成にチャレンジしてみてくださいね!
冒頭でも紹介したStability AI API Guideは随時更新していきます!
最後に Stability AI APIの Stable Image Ultra で生成したカバーアートの探求を共有します。
AICUのAIキャラクター「全力肯定彼氏くんLuC4」です
3D化して
実写化してみました
そのまま学位帽をかぶせて3Dアニメーション風に…
完成です!
ここまで読んでいただき、ありがとうございました!
応援してくださる皆様へ!💖 いただいたサポートは、より良いコンテンツ制作、ライターさんの謝礼に役立てさせていただきます!