[Update]#StreamDiffusion v0.1.1をリリースしました!
大きな新要素として、@radamarさんがrealtime-img2imgデモを追加してくれました!
webカメラを使ってimg2imgをすることが出来、さらにpromptを変更することでリアルタイムにその効果も反映されます!
是非お試しを🥳https://t.co/U1ufvRR9cq pic.twitter.com/4VJzkeK6gS— あき先生 / Aki (@cumulo_autumn) December 30, 2023
凄そうなのでやってみたい!!と思って色々手を出してみた記録
https://ascii.jp/elem/000/004/178/4178048/
この記事を参考に進めます。
記事を書いた後に見つけたんだけど
https://note.com/jap4ai/n/nd4595aa328b4
こっちのパッケージ管理ツールを使う方がすっきりしそう。
CUDAのインストールとかが省かれている気もするので、
うまくいかなかったら事前準備の章だけやっておいても良いかもしれない
~私の実行環境~
Operating System: Windows 11 Home 64-bit (10.0, Build 22621) (22621.ni_release.220506-1250)
Language: Japanese (Regional Setting: Japanese)
System Manufacturer: To Be Filled By O.E.M.
System Model: Z790 PG Lightning
BIOS: 1.16 (type: UEFI)
Processor: 13th Gen Intel(R) Core(TM) i7-13700K (24 CPUs), ~3.4GHz
Memory: 32768MB RAM
Available OS Memory: 32512MB RAM
Page File: 20356MB used, 27004MB available
—————
Display Devices
—————
Card name: NVIDIA GeForce GTX 1080
Manufacturer: NVIDIA
Chip type: NVIDIA GeForce GTX 1080
DAC type: Integrated RAMDAC
Device Type: Full Device (POST)
dxdiagの診断結果から抜き出しました。
0.事前準備
似非エンジニアなので詳しいことは語れませんが、
インストールには、前提として開発環境がある程度必要なので
多少CUIでの操作やpythonとかgitとかのソフトウェア開発に関する知識があるとスムーズ……
というか、そういう知識が無いとなかなかとっつきづらいと思います。
最低限必要な環境として
- git
- anaconda
- VisualStudio
- Cuda,cuDNN
の環境が事前に必要そうだ。
別件で色々弄ってたので、僕の環境はgitとanacondaはインストール済みだった。
未インストールなら、
「git インストール」「anaconda インストール」と調べてインストールしておく。
VisualStudio,Cuda,cuDNNのインストールは
https://qiita.com/TrashBoxx/items/2e884998cd1193f73e2f
こちらを参考に進める。
ちなみにVisualStudioを先にインストールしないと
Cudaのインストールが正しく行われないみたい?(未確認)
フォルダ名がCUDAじゃなかったりバージョンが古かったりするけど
そのあたりは適宜読み替えが必要そう
途中のCuDNNのインストール確認のコマンドは
現在のlatestをインストールした場合は「where cudnn64_8.dll」とした方が良さそう。
1.Readmeに従ってStreamdiffusionをインストールする
https://github.com/cumulo-autumn/StreamDiffusion/blob/main/README-ja.md
StreamdiffusionのGithubのReadmeは日本語版もあるので、
ぶっちゃけ事前準備が出来ればそこまで苦労しないと思います。
適当なフォルダにエクスプローラーで移動したら
アドレスバーに「powershell」と打ち込むとコンソールが出るので
そこに指示通りにインストールを進めていけばOKです。
分岐箇所は
「anacondaを用いる場合」
「ユーザー向け」
の手順を参照すればよいと思います。
2.お試し稼働
ひとまずASCIIの記事の通り
最適化と稼働テストもかねて、optimal-performanceを実行します。
example > optimal-performance へ移動した状態でPowershellを立ち上げ
> conda activate streamdiffusion
でStreamdiffusionの環境をアクティブにします。
あとは、
> python single.py
で実行です。
インストールがうまくいっていればいろんな処理が動くのと同時に
タスクマネージャーのGPU処理のグラフが100%近くに跳ね上がると思います。
僕の環境(GTX1080/Corei7-13700K 32GB)だと5~10分くらいで
猫の画像が順次生成されるスクリプトが動きました。
だいたい4.5fps程度でした
まだAIとか流行る前のGPUで最適化もされていないヤツなので、そのあたりは仕方ないかなと思います。
その後、一応multi.pyのほうも実行しましたが
GTX1080はメモリが8GBでちょっと足りないみたいで上手く動きませんでした。
コンソール側は更新がぴたりと止まってしまうので、動いているかどうかは
タスクマネージャーのグラフでGPUが使われているかで確認するのがおススメ。
3.スクリーンキャプチャのimg2imgを試してみる
割とここが本命ですね
exampleフォルダのscreenを開いて同様にmain.pyを稼働させます。
ModuleNotFoundError: No module named ‘mss’
とかいうエラーが出てきたので、脳死で
pip install mss
を実行してmssをインストールしてみたら、エラーが出なくなりました。
というわけで、VroidStudioを立ち上げて実行してみる。
話題のStreamdiffusionの動作テスト。
VroidStudioをキャプチャしてリアルタイムでimg2imgでコンバートすると1.2fps。
型遅れのGTX1080環境だとこんなもんですね。
AI生成でがっつり遊びたいならあと10万円くらい課金する必要がありそう。 pic.twitter.com/UIww3MZXd8— さとうたくや (@n_s_lab_tokyo) January 3, 2024
結果がこれ。
だいたい1.4fpsくらいで、生成される画像もちょっと安定してない印象。
別のモデルで背景も付けてお試し。
顔を顔と認識できるサイズに拡大すると、精度が一気に上がる気がする。 pic.twitter.com/l9DmowIJJn— さとうたくや (@n_s_lab_tokyo) January 3, 2024
顔を拡大してきちんと顔と認識させると、もう少しいい結果が得られる感じ。
それでもところどころ怪しい気はするけど。
4.カスタマイズしてみる
exampleフォルダのscreenを開いてmain.pyをエディタで開きます。
def main 以降にオプションがいくつか設定されているので
これを弄ると生成対象が変わってきそう。
huggingface というサイトのモデルを使用してカスタマイズすることが出来そう。
https://huggingface.co/faizalnf1800/white-shirt-lightblue-necktie-lora-meinamix
右のほうに、
Adapter for faizalnf1800/MeinaMix-V8-Full-SD1.5
と記載されているので、これは”faizalnf1800/MeinaMix-V8-Full-SD1.5″というモデル向けのLoraだとわかる。
なので
model_id_or_path: str = “faizalnf1800/MeinaMix-V8-Full-SD1.5”,
lora_dict: Optional[Dict[str, float]] = {“faizalnf1800/white-shirt-lightblue-necktie-lora-meinamix”: 0.24},
自動で環境にモデルやLoraがロードされる……
なるべくキャプチャする題材に寄せたプロンプトを、ある程度細かく入れてあげると動作が安定しやすくなりそう。
結論
AI生成ツールでガシガシ遊びたいなら
RTX3600くらいのスペックは多分必要そう。
コスパを考えると最近出たRTX4070当たりが狙い目だろうか。
来年はGPU新装かなぁ。。。
あと、最初のツイートで紹介した
Webカメラの映像変換うんぬんは、一応サンプルフォルダに入っているんだけど
Webサーバーとして動作するOSSベースに組んであるらしくて、
Windows環境で上手に動かす術が良くわかってないのでまだ試していない。。。
機会があればチャレンジしてみたいが
うちのグラボだとおそらく最高でも2FPSくらいな気がするのでちょっとメリットが見いだせない…