MarkdownとBullet Journal

いわゆるプログラマーのつぶやき

Progressive distillation:リアルタイム画像生成の実現

30枚の画像を1秒で生成

Emad氏が、Stable Diffusion2.1で秒間30コマの驚異的速度での画像生成を発表した。これはプロンプトに変更を加える度に即座にリアルタイムで絵が変化するという、今までとは全く異なる使用感が得られる次世代の画像生成を意味しており、ゲームチェンジャーと言えよう。

これまで:2022年8月:5.6秒で1枚生成

→まもなく:1秒で30枚生成に進化

www.reddit.com

これは従来20~50ステップ数が必要だったAI画像生成を、わずか1~4ステップで生成出来る、「Progressive distillation」というデノイズ処理(ノイズ削減処理)を大幅に高速化する生成手法(サンプラー)を用いるものだ。

AppleのM2 Macだと1秒以内での画像生成が可能とアナウンスしている。

the-decoder.com

高速化の歴史

Stable Diffusionは「拡散」の名前通り、学習と推論にノイズ画像と拡散を利用する。

学習時には原画像にノイズを付与(拡散)するプロセスを行い、推論時にはノイズ画像からノイズを除去するプロセスを行うが、これらの処理はU-Netが担当する。

U-Netも最初は、①生成画像と同サイズのノイズ画像への拡散、②ノイズ画像から1,000ステップものデノイズ処理を行う推論(DDPM)、に相当な時間がかかっていた(一枚生成するのに1時間以上)。

そこでU-Net処理を高速化すべく、まず画像サイズを縮小して行うLatent Diffusion Models(潜在=Latent空間で学習を行う拡散モデル)の採用で処理時間が1/48程度まで短縮された。

次にステップ数(デノイズの推論回数)を減らす改善が色々と行われてきた。このステップ数(デノイズ推論回数)をへらすための様々な工夫を加えたデノイズ手法をツールではサンプラー(サンプル手法)と称している。現在20から50ステップ程度までステップ数が削減されている(1/50程度まで短縮)。

結果として、Latent Diffusion Modelsの採用で1/50、サンプル手法の改善で1/50、合わせて1/2,500もの速度改善が行われた結果、現在の数秒~数分での画像生成が実現した。

下は現在のAUTOMATIC1111の18種類のサンプラーの一覧。オイラー法(Euler)、ホイン法(Heun)は処理に用いる常微分方程式の数値解法の考案者名から来ている。速い収束を見せるDDIMやPLMSに続き、現在はルンゲ・クッタ法をベースとするDPM-Solverが高速で人気が高い(12個もバリエーションがある。20ステップ程度で収束)。

AUTOMATIC1111のサンプラー 18種類

なお各サンプラーの具体的な実装の違いなどはとても面白く、SONYYoutubeサイトで詳細を学ぶことができる。

www.youtube.com

新たに登場した最速サンプラー

上記の動画の中で「最も高速」と紹介されているのが、今回Stable Diffusionの著しい高速化を実現しようとしているProgressive distillationだ。

高速化のための様々な手法:SONYYoutube画面より

高速化のための様々な手法:SONYYoutube画面より

間もなくサンプラーに「Progressive distillation」が追加され、わずか1~4ステップでの高速生成を楽しめることになるだろう。下の写真を見る限り、1または4という非常に少ないステップ数でも256ステップ数と差がない。NVIDIAMacも瞬時に画像が生成出来る様になる。

256ステップ、4ステップ、1ステップの生成画像の比較

論文はこちら

 

なお新しい高速化手法としては「Denoising Diffusion GANs」もあり、こちらもいずれサンプラーに追加されるかもしれない。

nvlabs.github.io

 

サンプラーの種類による生成差

サンプラーが変わると生成される絵も変化する(あまり変化しないものもある)。参考としてネットにあった、現行AUTOMATIC1111の18種類のサンプラーとCFGスケールの違いによるピエロの生成例画像を示す。

18種類のサンプラーとCFGスケールの違いによる生成例

今後登場するProgressive distillation、Denoising Diffusion GANsによる生成も同様に絵は変化する。

 

Stable diffusion2.1〜、Waifu Diffusion1.4〜、Unstable Diffusion、Clean Diffusion

明確な意思の基に作られる大規模モデル

明らかな方向性を持つ大規模モデルが複数作られつつある。

  • 仕事で安心して使える様にSFW(safe for work)を徹底したStable Diffusion2.0
  • その生成画像がつまらないという批判を受けて改善を重ねるStable Diffusion2.1以降
  • 膨大なアニメデータを取り込むことで生成品質を上げようとするWaif Diffusion1.4
  • 芸術への制約を許さず自由な画像生成を実現しようとするUnstable Diffusion
  • 著作権フリーのクリーンなモデルで安全利用を図るClean Diffusion

画像生成を利用する側から見ると、それぞれのニーズに合致するモデルが登場することで2023年以降の制作範囲がより広がりそうだ。以下順に説明。

 

StalbeDiffusion2.1〜

SFWなモデル

Stability AIは、Stable Diffusion 2.0を11月24日に公開した。学習モデルは、LAIONが開発した新たなテキストエンコーダ「OpenCLIP」を使用して学習させたものになり、解像度は512×512、768×768を標準で生成する。超解像で2,048×2,048やそれ以上の解像度の画像生成も可能。また新たにDepth2imgモデルが追加されテキストと深度情報の両方を使った画像を生成できる。

しかし最も大きな特徴はより安全なモデルとしてNSFWや著名人の顔情報を削除した点にある。おそらくAppleなど様々な顧客との調整でSFWなモデルの提供が求められたことにより決断と思われる。しかしこれに反発するUnstable Diffusionなどの動きが出てきた(後述)。

 

Waifu Diffusion1.4〜

膨大なアニメデータを含むモデル作り

Waifu DIffusionは当初からアニメなど二次元データを得意とするモデルだったが、NovelAIDiffusionやNIJIJourneyの登場により劣勢に立たされており、それを挽回すべく膨大な画像データを学習させたモデルを登場させようとしているる。モデルはStable Diffusion1.5ベース(まもなく登場予定)、Stable Diffusion2.1ベース(クリスマス頃登場)の二つを用意する模様。

 

Unstable Diffusion

制約のない自由なモデル作り

NSFWや著名人の画像データを意図的に削除したStable Diffusionの進め方に明確に反旗を翻して、NSFWなどの大規模データを学習させるUnstable Diffusion。以下彼らのサイトより。

最近、オープンソースのAI画像モデルをリリースした最後の会社が投資家の圧力に屈し、以前のモデルの大幅に去勢されたバージョンをリリースしました(Stable Diffusion2.0のこと)。

AIのトレーニングから人間とアーティストが大幅に削除されたことで、モデルがそれ以前のバージョンよりも悪いと普遍的に考えられており、その知識を取り戻すためにモデルを微調整しようとすると、数百または数千の画像では意味がありません。画像モデルに享受し期待する機能を取り戻すには、何百万もの画像が必要です。これは高価です。元のモデルの作成には数十万ドルの費用がかかり、ほとんどのモデル作成グループは月に1000ドルも費やすことができません。

主要なオープンソースモデルであるStable Diffusion 1.5(SD1.5)の以前のイテレーションは、強固な基盤として機能し、多くの知識を焼き付けて構築されているため、わずか5ドルで必要なアートスタイルを作成するために微調整できました。現在のモデルは著しく悪化したモデルであり、根本的な問題を解決するために桁違いに多くのコストがかかり、カスタムAIモデルの繁栄しているコミュニティエコシステムを破壊します。

 

Clean Diffusion

クリーンで著作権フリーなモデル作り

著作権の切れたパブリックドメインの画像データだけを用いた学習モデルを新たに作ることで、誰でも安心して使用できるクリーンなモデルを提供しようとされている。以下は開発元のあるふさんのサイトより。

  • 画像生成AIの流行でクリエイターの社会が混乱
  • 画像生成AIは他人の著作物を一方的に学習して真似をできてしまう
  • 著作権者の利益を不当に害することに繋がりかねない
  • mimicや CLIP STUDIO PAINTへの画像生成AI搭載が見送られるなどの支障が出ている
  • そこで学習しても問題ないパブリックドメイン (CC-0) の著作物だけを用いたモデルを作ることで問題を解決したい

alfredplpl.hatenablog.com

最新の話題にも回答するAIチャット: Perplexity.ai

OpenAIに刺激されて登場

Perplexity.aiがOpenAI ChatGPTに刺激されて?動作可能なデモを出した。

これはOpenAI WebGPTに触発されたデモであり、商品ではありません。このエンジンは大規模な言語モデル(OpenAI API)を使用して検索します。精度は検索結果とAIによって制限されます。個人情報を入力しないでください。攻撃的または危険なコンテンツ生成する可能性があります 。Perplexityは生成されたコンテンツに責任を負いません。。

優れたポイント

  • 同様に日本語で利用できる(回答が英文になる場合はブラウザの自動翻訳をON)
  • スマホなどの場合、質問文章を音声入力できる
  • ChatGPTの場合2021年までのデータに基づく回答しか出来ず、最新の時事情勢などに回答出来ないが、Perplexity.aiでは最新の話題にも回答できる

下は数日前のワールドカップに関して質問したものへの回答例。OpenAIに無い情報はwebから情報を収集して回答する様だ。またその場合、収集した各webサイトの情報も併せて併記される。

最新の話題にも回答

InvokeAI2.2

InvokeAI2.2

Stable Diffusionの実装環境の一つであるInvokeAIが2.2にバージョンアップした。

キャンバスを自由に拡張できる OutpaintingおよびInpainting、img2imgをカバー、Mac M1/M2,Windows, Linuxに1クリックインストールを実現している。

www.youtube.com

www.reddit.com

導入は、Mac版がAppleの「Core ML」の最適化版ベースになるのを待ってから行う予定。

programmingforever.hatenablog.com

Google colab版

CUIだが対応したノートはある。但しエラーで先に進めなかった。しばらくは様子見。

Others - Stable Diffusion Toolkit Docs

Google Colab

colab:AUTOMATIC1111で高速にモデルを切り替える

GoogleDrive上で実行

この記事は前にまとめたGoogleDrive上にAUTOMATIC1111のcloneを実装する運用に、比較実証などで高速にモデルを切り替える方法を加えたもの。AUTOMATIC1111はロードした5つ程のモデルを動的に切り替えて運用出来るが、モデルを高速にセットしたい、あるいはもっと多数のモデルを切り替えたいなどのニーズに応えるべくモデルを高速かつ簡単に入れ替える方法を説明する。ここまで来ると自分のPCで運用しているレベルの便利さを感じられるだろう。

この記事を実行する上での注意点

  • おそらく有料のcolab proのハイメモリの設定にしないとメモリーオーバーで停止すると思われる

では順に従って実際に行ってみよう。

①colabの実行ノートを用意:

GoogleDrive上にAUTOMATIC1111のcloneを実装した上で、AUTOMATIC1111を実行するコードは以下のわずか5行だけで動作する(コメント行を除く)。

# ①GoogleDriveマウント
from google.colab import drive
drive.mount('/content/drive')
# ②GoogleDrive上のAUTOMATIC cloneに移動、更新の差分取込
%cd /content/drive/MyDrive/stable-diffusion-webui
!git pull https://github.com/AUTOMATIC1111/stable-diffusion-webui
# ③実行
!COMMANDLINE_ARGS="--share --gradio-debug --gradio-auth me:qwerty" REQS_FILE="requirements.txt" python launch.py

※GoogleDrive上にAUTOMATIC1111をクローンする方法は下の記事で説明している。

programmingforever.hatenablog.com

②GoogleDriveアプリをPCにインストール

GoogleDriveアプリをPCにインストールすると、WindowsMacでGoogleDriveのフォルダやファイルをあたかも自分のPCのフォルダの様に扱える。

ここでGoogleDriveアプリをインストールする理由は、素早くモデルを移動させるため。

今からの作業では、GoogleDriveに保存した多数のモデルの中から、利用したいものだけをGoogleDrive上のAUTOMATIC1111のcloneの中のモデルを格納するフォルダに入れる必要がある。しかしモデルはいずれも数GB以上あるためコピーの場合は相当に時間がかかってしまう。また大容量なので二重にモデルがあるのも勿体無い。

そこでGoogleDriveアプリを使って、一つの窓に表示したモデル格納フォルダから、もう一つの窓に表示したAUTOMATIC1111のcloneの中のモデルを格納するフォルダへ、モデルをドラッグ&ドロップするとコピーではなく移動になるので一瞬でモデルが移動する。

下記リンクで「パソコン版ドライブをダウンロード」を選ぶとインストールできる。なお、インストール方法は標準の「ストリーミング」を選ぶとPC側にメモリを食うモデルのファイルを置かなくて済むのでおすすめ。

www.google.com

③モデルをAUTOMATIC1111 cloneのモデル格納フォルダへ移動

  • Windowsならエクスプローラー、MacならFinderで、それぞれ2つ窓を開く
  • 一つ目の窓で左側で「Google Drive」を見つけて、MyDriveをクリックする
  • 表示はリスト表示が扱いやすい
  • 一つの窓に色々とモデルを格納しているフォルダを選択
  • もう一つの窓にAUTOMATIC1111のcloneの中のモデルを格納するフォルダを選択
  • →格納フォルダ:MyDrive/stable-diffusion-webui/models/Stable-diffusion/
  • 必要なモデルをドラッグ&ドロップするとコピーではなく移動になるので一瞬でモデルが移動する

ドラッグ&ドロップしている状態

例えばNovelAI,Anything3.0,EimisAnimeDiffusion,Elysium_Anime_V2,Evt_V3_ema、以上5つのモデルをMyDrive/stable-diffusion-webui/models/sSable-diffusion/に移動させてみる。

NovelAI,Anything3.0,EimisAnimeDiffusion,Elysium_Anime_V2,Evt_V3_emaの5つのモデルを移動させた

④ノートを実行

前記①のノートを実行する。AUTOMATIC1111が起動したら一番左上の欄にある下矢印をクリックすると、5つのモデルが表示されていることがわかる。ここで好きなモデルを選べば、そのモデルを用いた生成が行える。

ロードした5つのモデルが選択可能

⑤モデルを入れ替える

AUTOMATIC1111を起動したままで、5つのモデルを総入れ替えしてみる。

  • 同様にWindowsならエクスプローラー、MacならFinderで、それぞれ2つ窓を開く
  • 一つの窓に色々とモデルを格納しているフォルダを選択
  • もう一つの窓にAUTOMATIC1111のcloneの中のモデルを格納するフォルダを選択
  • →格納フォルダ:MyDrive/stable-diffusion-webui/models/sSable-diffusion/
  • 現在選ばれている5つのモデルを元に戻す(空にする)
  • 必要なモデルをドラッグ&ドロップする(コピーではなく一瞬でモデルが移動する)

今度は852話さんが作られた8528-Diffusion,derrida_final,HD-17,trinart_step6000,wd-v-1-3-float、の5つのモデルを選ぶ

8528-Diffusion,derrida_final,HD-17,trinart_step6000,wd-v-1-3-floatの5つを選ぶ

移動が終わったら、AUTOMATIC1111の一番左上の欄の下矢印の隣にあるリロードボタンを押すと、モデルが全て入れ替わっていることがわかる。

モデルが入れ替わった

この様に高速にモデルを入れ替えることで、多数のモデルの比較実証が容易に行える様になる。

VAEなども同様

モデル以外のVAEやTIも同様に配置出来る。配置方法などを記載した記事を紹介する。

programmingforever.hatenablog.com

AppleがStable Diffusionに正式対応

正式対応で高速化を実現

AppleがM1/M2チップへの機械学習フレームワーク「Core ML」の最適化を発表し、MacBookなどM1/M2搭載機のコードを公開した。

machinelearning.apple.com

github.com

Gigazineの記事によると、M2搭載機でStable Diffusion 2.0をステップ数1~4設定で実行すると、1秒以内に画像を生成できるとのこと。

gigazine.net

AUTOMATIC1111対応待ち

使い慣れているAUTOMATIC1111がすぐ対応してもらえると思うので、対応後にインストール予定。

ヤバい。GPT-3.5のChatGPTが凄すぎる

ChatGPT

GPT-3.5のパフォーマンスを無料で試せるサイトが登場した。

chat.openai.com

正直ヤバいレベルで歴史から言語、哲学から科学など、どんな質問にもスラスラと答える。いくつか例を示す。(日本の地理はダメな模様)

C言語で#Hello,C"」と質問

すると、サンプルコード一式と解説が出てくる。

git resetの使用方法、と質問

AUTOMATIC1111のインストール方法、と質問

GPT3.5のデータ収集時はまだAUTOMATIC1111が登場していなかった様で知らないと回答された。

その他Twitterから