秒100枚の画像生成ができるという「Stream Diffusion」を動かそうとしたらたいへんだったお話
2024年01月03日 10時00分更新
いよいよ実行だ!!!
Stream Diffusionにはすぐに試すことができるexamples(使用例)プログラムがいくつか用意されているので、READMEを読みながら試してみることにする。
optimal-performance
まずは「optimal-performance(パフォーマンス最適化)」。TensorRTで最適化されたSD-Turboモデルを用いてtxt2imgを高速で実行するものだ。
実行はターミナルからPythonファイルを実行するだけだ。
TensorRTの焼き付け作業にかなり時間がかかるため、止まっているのではないかと心配したが、なんとか数分後にウィンドウが開き無事猫の絵が高速生成された。ちなみに使用されているプロンプトは「"cat with sunglasses and a hat, photoreal, 8K"」だ。
#StreamDiffusion
— kazuhiro taguchi (@tagkaz) December 28, 2023
なんとか動かせた。33fps(RTX4070)
CUDAとTensorRTが大変だった
VSCodeもAnacondaも触ったことなかったけど頑張った pic.twitter.com/u4b0TJyjOM
おおおおお!!!あき先生のデモほど超高速ではないが、右下の表示を見ればわかるように、なんと33fps(フレーム/秒)を叩き出している。秒間30枚以上だ!!!いくら高速なSD-Turboモデルとは言えこれは異次元のスピードだ。
次に4枚同時に生成するバッチ処理を使ったプログラムを実行してみる。
Multi pic.twitter.com/76pgKF1m0q
— kazuhiro taguchi (@tagkaz) December 28, 2023
こちらではなんと58fpsを達成している。
Real-Time Txt2Img Demo
次に試したのはリアルタイムのtxt2img(テキスト→画像)だ。通常のtxt2imgではプロンプトを入力して実行してから画像が生成されるまでには数秒の時間がかかるのが当たり前だったが、なんとリアルタイム生成できる時代になってしまうのだ。
cd view
npm i
npm run build
cd ../server
python main.py
実行は上記コマンドを順番に実行していけばよい。
#StreamDiffusion
— kazuhiro taguchi (@tagkaz) December 28, 2023
たまに詰まることあった pic.twitter.com/ba1ocP87oP
プロンプトを入力すると、4x4のイメージが次々に生成されていく様子が見える。「髪の色を青く」というプロンプトを追加するとそれがリアルタイムで変更されていくのがわかるだろうか。
週刊アスキーの最新情報を購読しよう
本記事はアフィリエイトプログラムによる収益を得ている場合があります