こんにちは、AICU media編集部です。ライターのRUNO.がお送りします!
今回は、Stability AI API Guideの「超入門」!
Generate APIと「TextToImageの最近の文法」を総ざらいします。
Stability AI APIは、Stability AIが提供するクラウドベースのAPIサービスです。後述のGoogle Colabでの実験環境だけでなく、Google Slidesや独自のアプリなどで、画像生成をはじめとしたパワフルな機能を利用することができます。ユーザーはGPUやサーバーといった演算環境をはじめ、何も用意する必要はありません。
そして、とても重要な特徴なのですが、Stability AIのAPIはすべて「商用利用可能な画像生成が可能」なのです。これはあまり知られていないことなのですが、後々のトラブルを防ぐためにもプロフェッショナル向けの画像生成において意識しておきたいポイントです。
Stability AI公式ページでは、2024年8月現在全部で16個の画像系モデルが存在しています(coming soonと記載されたものを含めると18個)。
https://note.com/aicu/n/n4eda1d7ffcdf
動画生成、言語、3D、オーディオを含めると23種類となります。
画像系は大きくは「Generate」「Upscale」「Edit」「Control」の4つに大別され、それぞれ次のような特徴があります。
今回は最も基本的な「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ではテキストを入力することで単語をもとに画像を生成し、これを「TextToImage(t2i)」と呼びます。このAIに対する指示を行うテキストを「プロンプト」と呼びます。
モデルによって様々な言語理解が特徴としてありますが、まずはモデルと対話して、効率的なプロンプトの構造を理解することが重要です。
モデルが多様にあるため「これが完璧」という方法を一様に宣言することは難しいです。想像や噂がネット上にたくさんあるのですが、最近のモデルはプロンプトを短くすることに努力が割かれていますし、一方では簡単なキーワードで美麗な結果が出すぎるモデルは「過学習」とも言えるかもしれません。画像生成の使い手にとって重要なのは品質や速度、簡単さに加えて「意のままに操れること」つまり「制御性」が重要になります。いくつかのポイントをおさえてモデルと対話すると、その特徴を理解して制御が可能になってきます。
Stability AI 公式のサンプルに散りばめられたサンプルプロンプトを読んでいると、最新のStable Diffusion 3時代の文法や表現力を引き出すコツが見えてきます。ポイントを整理して、実際に手を動かしながら理解を深めてみたいと思います。
例として「遠くに小さな小屋の前で、少女が青い小鳥と仲良く遊んでいる」といったイメージがあったとします。これを細部を深めつつ分解して考えてみましょう。
ビジュアルを構成する要素を大きく分けると「主題」と「背景」、そしてアニメ風やファンタジーイラスト、フォトリアルなどの「画風」、さらに構図、表情、雰囲気といった演出の要素になります。
例:ルール通りにプロンプトを書く
これまで画像生成界隈で言及されてきたプロンプトの常識として「クオリティプロンプト」がありました。例えば、傑作(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では日々、このような制御構文は研究を進めており、詳しくは別の機会に実験方法とともに解説したいと思います。
人物画などを生成したいときは、ポーズを指定してみましょう。
ポーズを指定しても、思ったような絵が出ない場合は、構図を指定すると効果的です。構図を後から変えると絵全体が変わることがあるので、初めからある程度決めておくのがおすすめです。
それでは実際に、公式で提供されているGoogle Colabサンプルを用いて、
画像生成してみましょう!
APIリファレンスから参照する場合はこちらから
https://platform.stability.ai/docs/api-reference
APIリファレンスを開くと、公式Colabが次のように提供されています。
実際のリンクはこちらになります。
クリックしてColabに飛ぶと、このような画面になります。
画像生成を始める準備として、上から3つの操作を順番に実行する必要があります。
警告が表示されますが、今回は公式が提供しているColabになるので、
「このまま実行」をクリックします。
これが完了したら、次にConnect to the Stability APIを実行します。
実行すると、このようにAPIキーの入力を求められます。
APIキーは、Stability AIにアクセスし、右上のアカウントアイコンをクリックすることで取得することが可能です。
https://platform.stability.ai/account/keys
「sk-… 」で始まる文字列がAPIキーです。
これを先ほどのColabの枠内に入力し、Enterを押しましょう。
完了したら、最後にDefine functionsを実行しましょう。
ここまで完了したら、それより下に続くモデルをどれでも利用可能な状態になります。
今回は、Stable Image Ultraを使って、画像生成をしてみましょう!
サンプルでは、はじめからこのようなプロンプト例と実行例が表示されています。
既に入力されているプロンプトを削除し、生成したい画像を示すプロンプトを「prompt」箇所に入力します。
今回は、上で例にとった「遠くに小さな小屋の前で、少女が青い小鳥と仲良く遊んでいる」を生成してみます。
実際はプロンプトは一行で書きますが、見やすいように要素ごとに分けて記載します。
prompt:
次に、ネガティブプロンプトを入力します。
ネガティブプロンプトとは、写って欲しくないものを入力し、出力画像のクオリティを上げるために指定します。
たとえば、
今回はシンプルに
negative prompt: normal quality, ugly
とします。
ちなみに、ネガティブプロンプトは細かく入れすぎると逆効果の場合もあります。できるだけシンプルに入れることで無駄な制約を減らすことができます。
aspect_ratioは出力画像のサイズを指定します。
seedは画像の種類に番号が振られているようなイメージで、同じseedかつ同じプロンプトでは毎回同じ出力が得られます。絵柄を固定したい時などに便利です。
今回はaspect_ratio: 3:2, seed: 39とします。
それぞれの設定が入力できたら、実行ボタンを押下します。
実行が完了すると、画像が表示されます。
まるでアニメのオープニングのような美しい画像が得られました!
皆様はイメージ通りの画像が得られましたでしょうか?
この段階で表示された画像を保存したいときは、表示されている画像を右クリックすることで「名前をつけて保存」で保存できます。
もう一つの方法はGoogle Colabの左側にあるフォルダタブ📁をクリックして「generated_…」という名前のPNG画像を保存することです。
どちらも1216×832ピクセルの同じ画像です。
これをGoogle Driveに直接保存する方法がありますが、こちらは公式サンプルをほんの少し修正する必要がありますので別の機会に紹介します。
左上から「ドライブにコピー」を押すと、ログインしているGoogleアカウントのGoogle driveにColabノートブックをコピーすることができます。
オリジナルのpythonコードを追加して、生成した画像を自動でGoogle drive上のフォルダにアップロードするなど、
コードを追加すれば様々な処理が可能になります。
ちなみに、自分のドライブにコピーをしないままコードを追加しようとするとこのようなエラーが出てしまい、実行することができません。
Upscalerとは、画像を入力として与え、そこにテキストで追加指示を送ると、高画質に変換してくれるAPIです。
現在公式が提供しているColab上では「Creative Upscaler」と「Conservative Upscaler」の2つを利用することができます。
先ほどUltraで生成したColabの画面を下にスクロールすると、Upscaler機能を利用できます。
先ほどUltraで出力した画像をこの2つのモデルにかけてみましょう。
まずは、画面左側の「ファイルマーク」をクリックします。
下に示す画像に従って、順番にクリックしていきましょう。
そして、先ほどUltraで生成した画像を選んで、アップロードします。
少し待つと、この三角マークを押して表示される「content」フォルダの中にアップロードした画像の名前が表示されます。
これで、Upscalerを利用する準備ができました!
「image」には今コピーしたファイルのパスをペーストします。
「prompt」には、どのように加工を施すか入力します。
「negative prompt」には写したくないものや雰囲気を、
「creativity」には新たに施す加工をどの程度強くするかを設定します。
今回は
prompt: photorealistic, emotional
negative prompt: normal quality, ugly
seed: 39
creativity: 0.30
としました。
さあ、実行してみましょう。
比べてみると、高画質化もされているのがわかります。
「Conservative」とは「保守的な」という意味です。
「Creative」に対して、もとの画風を維持します。
promptには、元画像を生成した時のプロンプトを入れます。
その他の設定はCreative Upscalerと同じです。
実行すると、次のような画像が得られました。
拡大して比較してみると、確かに高解像度化されているのがわかります。
Upscale前の元画像がこちらになります。
Upscale後の画像がこちらです。今回はConservative Upscalerを使用しました。この状態で見比べても、画質が良くなっていることがわかりますね!
拡大して比較すると、明確に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アニメーション風に…
完成です!
ここまで読んでいただき、ありがとうございました!
この記事の続きはこちらから https://note.com/aicu/n/n8981d463ee89
Originally published at https://note.com on Aug 14, 2024.