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による生成も同様に絵は変化する。