。今さら説明する必要は無いと思うけど念のためざっくり言うと、簡単な言葉の組合せ(プロンプト)や、ある特定の画像に基づいて、希望に沿った別の画像を自動的にうまいこと描画して出力してくれる。他のAi系の技術、チャットや音声、音楽などと同様、その実装手法と劇的と断言していい出力結果の精度と表現力によって、様々な議論が交わされているのは承知しているが、今回それは傍へ置く。以下、ワタシがこの1週間程度である程度は思い通りに画像を生成できるようになった環境構築や設定等の過程を備忘録的にメモしておく。
2023/05/19にはこんな絵面が"撮影"できるところまで来た。すきま時間にちまちまとトライアンドエラーを繰り返したので、集中して取り組めば数日あれば誰でもすぐこのレベルに到達できる。
- できるだけ新しく高性能で使えるリソースが豊富なPC
- Macだと"ターミナル"と呼ばれるアプリ上でのCUI操作(特にweb UI版を使う場合は簡単なレベルだけど必須)
- 英語(プロンプトは基本的に英語を使用するし、エラー等は英語で検索したほうが早く解決する)
- ネット検索力(何かあったらすぐ検索とにかく検索)
■環境構築
ワタシの現在のメインマシンはM1 MacBook Airなので、そちらをメモ書き。
取っ掛かりとしてはStable Diffusionをアプリ化した
DiffusionBeeを使うのがいいだろう。
こちらの記事などに書かれている通り、ダウンロードして然るべきフォルダへコピーしてダブルクリックで起動すれば準備が整うので、始める気になれば誰でもすぐ試すことができる。
ここから先へ進むために、DiffusionBeeの「Model」メニューの「Add New Model」と「Options」メニュー内の「Negative Prompt」の2つがあることを確認する。
「Model」=モデルは重要な概念で、Stable Diffusionにおける学習済みデータの集合体と呼ぶべきだろうか。既に大量のモデルがあるので、好みのものを検索して見つけ、ダウンロードして読み込ませる。モデルによって規約が異なるので、今後のことも考えて面倒だが必ず読むクセをつけておく。
それから「Negative Prompt」=ネガティブプロンプトも重要で、普通のプロンプトとは逆の「こういうのは止めろ」という命令になる。こちらも有効にして(Enableボタンをクリックして)、通常のプロンプトとネガティブプロンプトが併記できるようにする。
検索して見つけた好みのモデルの紹介ページには必ず、画像出力の作例と、その際に用いたプロンプトが書いてあるはずなので、まずはそれをコピー&ペーストして実行する。マシンパワーにもよるが、特に設定を変えていなければ数分程度で結果が出力される。変だったり気になるところがあれば、
こちらの記事などを参考にネガティブプロンプトを入力して、出力を繰り返してみよう。たったこれだけで第一段階は完了する。
DiffusionBeeは手軽に始められる割には機能が豊富でこのままでも良いんだが、現時点ではどうやら
EasyNegativeが使えないようなので、(開発されている方の名前を取って通称AUTOMATIC1111版と呼ばれているらしい)
Stable Diffusion web UIをセットアップする。
こちらの記事を全面的に参考にして、ターミナルを用いてインストールを実行する。うまくいかない場合はエラー内容を検索すればたいてい解決するが、ワタシの場合、xzが不足している旨のエラーが出たのでHomebrew関係をいったん全てアップデートしたのちpython 3系列をアンインストールして、xzを入れたのちpython 3を再インストールしたらうまくいった記憶がある。このあたり個人の環境に左右されるので、頑張ってください。
さて先の記事にあるようにインストールが完了してwebブラウザで http://127.0.0.1:7860 に無事アクセスできれば、web UI版は使えてしまう。ただこの先を考えると、ワタシは「UIの日本語化」というか「英語と日本語の併記」と、先に挙げた「EasyNegativeの導入」は先にやっておくべきだと思う。こちらは各自で記事を検索し参照してください。それとワタシが画像生成している途中で気になった紫色のスポットが描画される現象は、使用するモデルに対応したVAEファイル(?)を用いることで解消できたので、
こちらの記事などを参考にして設定を変更後にUIをリロードしてVAEを適用できるようにしておこう。なおStable Diffusionの大きな弱点である「顔や手足の描画が怪しい」問題は、
adetailerという拡張機能を導入すればかなり軽減できる。最新版では設定により顔と手を自動認識してそれぞれ修正を加えてくれるが(もちろん限界はある)、一部とはいえ再描画処理が走るのでそのぶん時間が伸びる。このあたりはプロンプトで回避できることも多いので、ケースバイケースだろう。
あとはDiffusionBeeの場合と同様に、何か思いついたらプロンプトを考えて入力して出力して、場合によっては機能拡張を追加してさらに入出力の繰り返し。他の技術も大量に使えるので、適宜それらを試してみるのもいいだろう。ただ全ての基本となるプロンプトは手当たり次第ではさすがに効率が悪いので、先人の知恵を借りる。特に
こちらの方の一連の記事にはずいぶんと助けられている。また今ならChatGPT等にプロンプトを考えさせたりすることもできるので、各自工夫してみてください。
さて、2023/05/14から1週間も経たないが、 Stable Diffusionをほぼ毎日触ってて感じるのは、「これは絵を描くというより写真を撮ってる感触に近い」ということである。プロンプトという呪文を唱えてイラスト次元に入り込んで、そこにいる誰かに細かく指示しながら異世界カメラを向けて、望む絵面が写るのを数分間念じると言えばいいだろうか。異世界カメラで念写するので必ずしも思い通りの結果は得られないし、ときどき、というかしょっちゅう得体の知れないものが映り込む。ただ、それも込みで「大量に撮りまくったカットからこれだという1枚をピックアップする」あの手応えは、カメラ趣味をたしなむ方ならば分かってもらえるかと思う。
というわけで、しばらくは自分のMacBook Airに住み始めたstable-diffusion-webui美ちゃんやイケおじのstable-diffusion-webui夫さんたちにモデルをお願いして、いそいそと"撮影"に勤しむことにします。
追伸:"撮影"をがんばるとMacBook Airが発熱して処理がどんどん重くなるので、冷却ファンつきノートPC台などで風を送って冷やしてあげるといいです。このあたりも密閉され強い光源で暑くなりがちな写真撮影スタジオを思い起こさせます