【DiffusionBee】Mac で stable diffusion を手軽に使う

2022年12月30日

DiffusionBee

stable diffusion がリリースされて以来、画像生成 AI が凄いことになってるらしい。中身の進化もさることながら、使い勝手もどんどん良くなっていって、とうとう Mac でも、普通のアプリケーションみたいに stable diffusion を使えるようになってきた。

DiffusionBee

DiffusionBee アプリアイコン

DiffusionBee – Stable Diffusion App for AI Art

動作環境は M1、M2、インテルの CPU でも使える。メモリは 8 GB でも動くようだ。OS は、macOS 12.5.1 以上となっている。
 公式によると M1 MacBook Air、メモリ 8 GB でも、30 秒ほどで画像を生成できるらしい。
 あとモデルのデータが 8 GB ほどダウンロードされるので、ストレージの空きとダウンロードにかかる時間が必要となる。

モデルのデータは初回起動時におこなわれる。データの保存先は ~/.diffusionbee/ だと思われる。

モデルのダウンロード

2022 年 12 月現在のインターフェイスはこんな感じ。非常にシンプルだ。

DiffusionBee のインターフェイス

いまのところ、「Text To Image」、「Image To Image」、「In-painting」「Out-painting」という機能が使える。

Text To Image

Text To Image はいわずと知れた、テキストで指示した画像を生成する機能だ。いまのところ英語でしか指示(プロンプト)を受けつけない。

英語は難しいので、Lexica とかで、作りたい感じの絵のプロンプトを借用させていただく。その英文を、DeepL翻訳:高精度な翻訳ツール など使って自分好みに編集した。

japanese girl illustration, black eyes, long hair, very beautiful face, bushy eyelashes, wearing elegant kimono, art by takato yamamoto,suehiro maruo, smooth, sharp focus, highly detailed, concept art

プロンプトについては、いろんなテクニックが追求されており、ググれば書きかたのコツが出てくると思う。
 とにかくこいつで生成してみたところ、筆者の環境(M2 MacBook Air、16GB)だと、40 秒くらいで出来上がった。steps という値が、普通は 50 なんだけど、DiffusionBee ではデフォルトで 25 になっている。それが早さの秘訣のような気がする。
 他のアプリケーションを終了してメモリを空ければ、もっと早くなるかもしれない。

なお、いわゆる NSFW とかいう 18 禁フィルタは設定されてないので、ローカルな環境で存分に欲望を解放できる。

生成された絵

なかなかいい。
 いいんだけど、手と指のあたりがあやしい。AI の画像生成は手が苦手なのである。
 これを In-painting で修正してみる。

In-painting

左上のメニューボタンをクリックすると、生成した画像を「Send to Inpaint」で In-painting へ送れる。

In-painting へ送る

In-painting を表示するには Inpainting タブをクリックする。
 マウスカーソルが十字になっており、修正したい箇所を半透明のピンク色で塗りつぶせられるようになっている。今回は手と、目もちょっと修正してみた。
 プロンプトには、Text To Image で使用した文言をそのまま入力した。

修正箇所にマスクをかける

これも 40 秒か、もっと早く処理が終わる。

修正後

いい感じに修正された。
 ただ、頭部が切れてるのもちょっと気になる。これを Out-painting で継ぎ足してみたい。
 修正された画像を、「Save Image」でローカルに保存する。

Out-painting

Outpainting タブはこんな感じ。

Out-painting の様子

 Add Image をクリックして、先ほど保存した画像を選択する。
 プロンプトには、In-Painting の時と同じく Text To Image で使った文章をそっくりそのままコピペした。
 マウスカーソルで青い四角を動かして、切れた頭を描き足してくれるくらいの高さを追加する。

Out-painting 修正前

Generate ボタンを押してしばらく待つと、

Out-painting 修正後

なんかそれっぽいのが生成された。
 同じように下のほうも継ぎ足してみる。
 コツとしては、プロンプトの文意に沿う位置に青い四角を配置する。この場合だと japanese girl とわかるものが青い四角内にないと、新しい japanese girl を生成してしまうのだ。UNDO ボタンもあるので、このあたりはいろいろやってみるのが良いだろう。

拡張した後

こんな感じになった。

Out-Painting は風景なんかで特に力を発揮する、ような気がする。
 Lexica で見つけた以下のプロンプトを実行してみた。

enchanted izakaya in the night. this oil painting by the award - winning mangaka has a beautiful composition, great sense of depth, dramatic lighting and intricate details. 

 こんなのが出来た。

居酒屋風景

これを Out-Painting で広げてみると、

拡張後

こんな感じになる。
 こういう手順で作った背景に、先ほど作成した japanese girl を組み合わせたい。
 と、思ったんだけどあまりうまくいかなかったので、また一から japanese girl と背景を作り直して挑戦した。
 幸い、macOS Ventura になってから、プレビュー.app に「背景を削除」という便利な機能が搭載された。
 japanese girl のほうは、簡単に人物だけ切り抜ける。

完成後

こんな感じ。
 背景のタッチと手前の人物のタッチが違いすぎるけど、まぁひとつ、作品が完成したわけだ。これを自分の絵といい張ることは出来ないかも、だが。

Image To Image

Image To Image も試してみた。
 自分で描いた絵なんかを左ペインに追加し、プロンプトを入力して、Generate をクリックする。

image to image

こんな感じに出来る。
 プロンプトは、

A beautiful elf girl holding a bow, painting. seductive eyes and face, busty, perfect boobs, full body portrait, art by artgerm and greg rutkowski and alphonse mucha, smooth, sharp focus, highly detailed, concept art

とかなんとか適当に、いろんなプロンプトのやつを組み合わせた。
 Generate ボタンの左にある、Options を押すと、Input Strength を変更できる。この数値が高ければ高いほど、参考として上げた画像に忠実となり、低ければ AI が奔放に振る舞い、参考画像を無視するようになる。

History

生成した画像の履歴は、History でたどれる。
 絵の左上の隅にある、三本線のメニューから、対象の絵を In-painting に戻したり出来る。

DiffusionBee History

delete ボタンで履歴から失敗作を消せるのだが、絵は削除されるわけではないらしい。open ~/.diffusionbee/images などとターミナルで実行すると、delete したはずの、これまでの失敗作が見られる。

めっちゃおもろい

調子こいて画像生成していると、すぐに MacBook Air が熱くなってしまうのが難だが、それにしても面白い。つぎつぎと作りたくなってしまう。
 ただ思うのは、これって作ってる方が面白いだけで、見るほうはそれほどでもないよね、ということ。「AI で頑張って作りました!」っていわれても「ふぅん」としか思わないと思う。NovelAI の美麗なえっちぃ絵だって、「こんなのに欲情させられてたまるか」みたいな抑制が働くのか、あまり興奮しない。AI すげーな、という感動はあるのに。
 考えてみると不条理で、なんで肉筆だからって絵の女の子に欲情してんだろう。わいは 40 年近く、なにを見てなにをしてきたんだろう。人間が描いた絵と、AI の絵の違いはなんだ。ぬくもりか。わいはエロ絵を描いているおっさんに、ぬくもりを感じながらスケベなことしてたのか?
 思索はふかまる一方なのである。

続いては invokeAI というものに、Anything-V3 というモデルを入れて、NovelAI っぽい画像を生成してみたいと思う。