fooocusの使い方・インストール、SDXLのモデル追加

Fooocusの特徴

Fooocusの使い方

StableDiffusionの新モデルSDXL用のwebui、Fooocusについて覚書してみたい。

なんでわざわざコレ使うの?

ほかにもStableDiffusionのユーザインタフェースっていくつかある。慣れという意味だと、今まで散々使ってた、Automati1111があるではないか。

実は、私がFooocusを使おうと思った最大の理由がコレ。

SDXLモデルが動かなかったので、Fooocusを使った。

実は、私のPCスペックではSDXLモデルが、Fooocusを使わないと動かないのだ。

そんなことある?タダのユーザインタフェースでしょ?見た目だけでしょ?

いや、そうではない。Fooocusの開発者はあのControlnetの制作者であり、アプリとしてのメモリ管理を上手にやっている関係で、低スペPCでもSDXLモデルが動くのだ。

(低スペといいながら、私の環境はグラボ Nvidia RX-3070 8G、実メモリ16Gの環境は、個人的にはけっこうな良いマシンじゃないの?と思ってる)

で?そのSDXLモデルって、そんな無理して使わないといけないの?

無理するだけのクォリティを出すモデルだから困る。

StableDiffusionに登場した新モデルSDXLは、出力がメッチャきれい。従来のStableDiffusion2.0までが512×512画像を学習していたのに対し、SDXLは倍の1024×1024画像を対象に学習したので、キレイな画像が出力できるそうだ。

生成する画像のクォリティが爆上がりする。

これが、SDXLで出力した画像。

ああ、きれい。でも1.5系と比べて全然違うかというと?。最初はピンとこなかったけど、しばらくSDXL使ってから、1.5系使ったら、全然違った。もう戻れない。

空気感が違うというのかな…いや、1.5系でも全然悪くはないんだけど。

きれいな反面、メモリをめっちゃ食い、私が愛用するAutomatic1111では、メモリ16G、グラボのメモリ8Gの環境では動かない。

問題だったのは、グラボのメモリ(8G)じゃなく、パソコン本体のメモリ16Gのほう。とにかく、Out of memoryで、パソコンのメモリ足りませんよが連発する。メモリは32Gくらい搭載すればよかったか。

SD1.5系モデルが3.6Gバイトくらいなのに対して、SDXLは6.5Gバイトくらいあるのだ。で、モデルはまるごとメモリ上にロードしないと動かないらしい。したがって、パソコンのメモリ容量の大きさが重要になってくるのだ。

もうこれ、パソコンにメモリ増設するしかないんか…と思っていた。しかし、

SDXL専用のwebui、fooocus使えばメモリ少なくても動くっぽいぞ!」という情報を得た私は、早速試してみたのだ。

そして、あっさり動いた。いろんな情報を紐解かなくても、「コレダウンロードして、実行して」というその通りにしたらローカルでサクッと動いたのだ。

今回は、自分のパソコン上で動かすやり方と、ColabというGoogleの無料の研究目的ワークスペース上で動かすやり方をまとめた。

Colab使えば、パソコンのスペックがなんだろうと動くので、パソコンパワーはイマイチだけど試したい、という人はやってみよう。

SDXL専用webui、Fooocusをインストール

SDXL専用webui、Fooocusをインストール

以下はパソコンにFooocusをインストールする手順だ。

自分のパソコンのスペックがいまいちで動かなさそう…という場合は、Colabで動かす方法を見てほしい。

まず、githubのfooocusのページを開く。

GitHub – lllyasviel/Fooocus: Focus on prompting and generating

で、DownloadのとこにあるWindows→Click here to downloadのリンクをクリック

※Mac版はないみたい。

インストールしたい場所に、ファイルを保存する。(適当なフォルダを作って入れたほうがいいかも)

私は、d:\stablediffusion\fooocusというフォルダを作って、その下に解凍した。

7-zipという形式で圧縮されているので、解凍。デフォだと、ファイルのある場所にそのまま解凍になる。

7-zipがパソコンに入ってないという人は、こちらから。

圧縮・解凍ソフト 7-Zip

解凍したら、run.batというファイルがあるのでダブクリで実行。

なお、run_anime.batとrun_realstic.batがあるが、これはrun_anime.batだとイラスト調の画像を生成、run_realstic.batだと実写系の画像を生成するようになる。(内部的には、使用モデルを変えてるだけっぽい?)

モデルのダウンロードも自動的におこなう。6G超のファイルを2つダウンロードするので、ハードディスクにそれなりの空き容量は必要。(30Gくらいは必要っぽい)

あとは待っていれば、勝手にブラウザが立ち上がって使えるようになる。

具体的に言うと、

http://127.0.0.1:7861/

といったURLで立ち上がる。(:の後ろの数字は上記の通りではないことがある)。パソコンのバックグラウンドでウェブサーバが起動する感じだ。そのウェブサーバにアクセスするために、上記のURLを使うのだ。

終了は、起動したDoS窓の右上のバツをクリックして閉じる。

Google Colaboratory でFooocusを起動する方法

colabで動かす

ColabでFooocusを起動する方法

はーん、Colab(Google Colaboratory)?で動かすと何が嬉しいん?

パソコンのスペックが低くて動かせない、という場合もこの方法ならほぼ100%動かせる。

Google Colabサービス上でFooocusを使う方法である。

いわゆるGoogleの提供するクラウド環境で、お金をかけずにある程度の時間使える。ネットの向こう側にハイスペコンピュータがあって、間借りできるイメージだ。ある程度無料なのは、研究目的でどうぞ!という意味合いかな…。

手持ちのパソコンのスペックが高くないけど、SDXLで画像生成したいというときに有効だ。

なお、無料で使用する場合、1日あたりGoogle Colabは連続2時間のみ使用可能という制限がある。

ちなみに、Google Colabを使うには、Googleアカウントを作ってログインしておく必要がある。それだけであっさり使えてしまう。

そしたら、以下の手順でFooocusをさっそく試そう。

まず、Fooocusの公式ページを開く。

GitHub – lllyasviel/Fooocus: Focus on prompting and generating

コードがわらわらと書かれた画面が出てくるので、再生ボタンっぽいアイコンをクリック。

メッセージがダーッと出てきて、Colab環境に自動的に環境が構築される。

ぼへーっと見ていると、App started successfull…という行が出てくるので、そこの行の、https://なんたらかんたん.gradio.liveというリンクをCtrlを押しながらクリック。

※Cntlを押すのは、別タブで開くため。

そしたら、あっさりとFooocusの画面が出てきて、そこから2時間使い放題である。

すげぇなColab!

なお、メモリもたっぷり使えるようで、デフォルト状態でプロンプトにgirlとか入れて動かすと、60秒くらいで1枚が生成される。(私のパソコンのローカル上で動かした場合は、デフォルトだとメモリへのモデル載せ替えとかが発生して3分くらいかかった)

生成した画像は、colabの画面に戻って、「フォルダっぽいアイコン」をクリックするとエクスプローラー風のファイル選択画面が出てくるので、outputs>日付>ファイル名上で右クリック>ダウンロードでローカルに画像を取得できる。

1つづつしかダウンロードできない上に、ダウンロード前に画像をプレビューする手段がないのでまあ不便。一括でガッとダウンロードする方法もあるのかな…。

止めたいときは再生ボタンのとこがグルグルしてるのをもう一度クリックで止められる。まあ、2時間放置しても勝手に止まる。

Fooocusの使い方

Fooocusの使い方をまたイチから覚えるの面倒くさいでしょ?

まあ、そうなのだが、徹底してシンプルな使い心地になっている。複雑な機能を使いたいときは「Advanced」などの欄にチェックを入れると、上級者用オプションが開放されるようになってる。

Automatic1111が熟練者用の複雑の権化なら、Fooocusはバカでも使えるシンプルインタフェース。

fooocusのコンセプトは、「プロンプト以外はウラで全部やっときます」というもので、デフォだとプロンプト欄と生成ボタンしかない。

Advancedにチェック入れると、右側にオプションが表示される。

input imageにチェック入れるとimg2imgが使えるっぽいけど、まだ試してない。

で、japanese girlとか入れて生成ボタンをクリックするとメッチャ時間かかるけど画像が生成される。デフォで2画像生成されるようになってて、5分とかかかる。

※今は、モデルも改良されて、画像生成ごとに5分かかるとかはない。モデルの読み込みに5分かかって、あとは1画像1分くらいで出てくる。(グラボのパワーによる)

あと、japanese girlだとほぼ着物姿になるので、「girl,tokyo」とかの指定がよさそう。

fooocusでリファイナーを使わない設定

リファイナーって何?

リファイナーは、画像生成の仕上げの微調整に使う別モデルだ。だが、最近のSDXLモデルは、リファイナーという仕上げ用のモデル不要のタイプが多くなってきている。やっぱ、面倒くさいからな…。

※2023年12月現在、fooocusのデフォルトモデルは、juggernautXLになってて、リファイナーはオフになってるので、以下を考える必要はあまりないかも。

もともと、SDXLの画像生成は2段階になってて、まず画像を作るプロセスがあり、その後Refinerという仕上げプロセスが起動するという構成だった。が、最近はリファイナーナシで動くモデルが主流で、SDXL出た当時のRefiner使用は非推奨、みたいな扱いになってた。

なお、古いバージョンなどでリファイナーを使わないようにするには、こうする。

Advancedにチェックをいれたあと、画面右に出現するAdvancedタブをクリックして、SDXL RefinerをNoneにすればOKだ。

※LoRAsのとこにあるモデルもNoneしたけど、ここはデフォルトのままのほうが生成画像の出力品質があがるっぽい。

Fooocusでモデルをインストール

Fooocusって、どのモデルをダウンロードすればいいの?

Fooocusの場合、勝手にダウンロードしてくれるので、何も気にしなくていい。

AI画像生成で迷うのは、どのモデルをどこからダウンロードするかだ。先駆者の「やってみたブログ」などを参考に、試行錯誤しなければならないと思うとイヤになる。

しかし、Fooocusはデフォルトのモデルが決まっており、ダウンロードしてダブクリで実行すると、勝手にデフォのモデルをダウンロードして適切なところに置いてくれるのだ。

まさに、バカでも使えるFooocus。

なお、別のモデルを使いたいようという場合は、以下のようにする。

civitaiなどでダウンロードしたモデルを、以下のフォルダに入れる。ファイルがでかい(5ギガとか6ギガとかある)ので、ダウンロード時の保存先を以下のフォルダに指定するのがいいかも。

<インストールフォルダ>\Fooocus\models\checkpoints

プロンプト欄の下の「Advanced」にチェックを入れる。

設定画面が現れる。

  • Modelタブをクリック
  • Refresh All Filesをクリック(Fooocus起動中にダウンロードしたモデルをプルダウンに表示させるための手順)
  • Base Model(SDXL only)のプルダウンメニューからダウンロードしたモデルを選択

あとは、プロンプトに文字列を入れてGenerateをクリックすると指定したモデルで画像が生成される。

なお、モデル切り替えには、数分かかると考えておこう。(5ギガ以上のファイルを読み込むので)

 

Fooocusで画像生成 スタイルを変える

画像生成スタイルって、プロンプトにstyle ofとか入れて指定すんだよね?

実は、Fooocusでは、別画面にスタイル指定専用の設定画面があり、プロンプト内でスタイル指定は不要。

スタイル名にチェックを入れるだけで画風が変わる。

▲「Misc Manga」にカーソルをあてたとこ。漫画風の猫のサンプルが表示された。

しかも、Fooocus V2にチェックを入れておくと、複数のスタイルをいい感じにブレンドしてくれるのだ。

まさにバカでも使える以下略。

右のStyleにチェックを入れると、内部的にプロンプトが追加されて、作風が変わる。

2024年1月時点のアップデートでは、スタイル名にカーソルを当てると、サンプル画像が表示されるようになり、「これってどういうスタイル?」というのが描画前にわかるようになった。便利。

ブラウザ上で右クリック→日本語に翻訳しても動いたので、そのほうがいいかも。

ただ、モデル指定(とかRefiner指定)のときは、「日本語に翻訳」を解除しないと動かなかった。

↓キュビズム

↓ポップアート

↓色鉛筆アート

↓アナログ写真

ためしてわかったのは、実写系以外はいまいちかも…という点。厳密に実写系じゃなくても、色鉛筆アートなどはきれいに出てた。SDXLの学習対象として実写系が圧倒的に多いか、もしくはアニメ・イラスト系の学習は難しいか…どちらにして、イラスト系は苦手っぽい。

これは、最初にリリースされたモデルのクセ。

まあでも、「なんでも得意」なモデルを探すよりは、実写系が得意、アニメ系が得意なモデルを使ったほうが、いい感じの画像が生成できると思う。

ちなみに、Fooocusは、起動時に実行するスクリプトによって「実写もアニメも」「実写特化」「アニメ特化」のモデルを手動で選ぶことも可能。


引用:[2.1.864] New model list · lllyasviel/Fooocus · Discussion #2067 · GitHub

run.batを実行すれば、いろんな画風に対応したモデルが、run_realstic.batなら実写得意なモデル、run_anime.batならアニメ・漫画・イラストが得意なモデルが読み込まれる。

複数Styleをいい感じにブレンドしてくれる機能

複数のStyleにチェック入れるときは「Fooocus V2」にもチェック入れておくと、「スタイルをいい感じにブレンド」してくれる。

逆にチェック入れないと、意図しない出力結果になるみたいだけど、正直効いてるのか効いてないんだかわからなかったな…。

シード固定して比較した例。Styleの組み合わせによっては、もっと劇的に効果でるのかも。

※シード固定は、Advanced→SettingでRandomのチェック外す

Fooocusのイメージプロンプト

イメージプロンプトって何よ?

テキストではなく、画像ファイルを渡して生成を指示する機能である。

Automatic1111で言うところのcontrolnetである。(ちなみに、Fooocusの作者はcontrolnetの開発者だ)

Fooocusには、イメージプロンプト機能が大きく4種類ある。(今後増えるかも)プロンプトの下にある「Input Image」にチェックを入れると、使えるようになる。

Upscale or Variation(画像デカくする or バリエーション作る)

細部のディティールを描かせつつ画像を大きくしたい場合や、チョッとだけAIに画像全体を補正したい場合に使う。

バリエーションは画像全体に適用されるので小回りが効かない。「ざっくりやっちゃって!」っていう場合にいいのかも。

この中の「Vary (Subtle)」という奴を私は多用する。適当な手書き画像を放り込むと、細かいところをいい感じに書き足してくれるのだ。

↑クリスタで素材などを使って適当に描いた線画

関連)クリスタの素材

Image Prompt

画像を渡して、「こんな感じの絵でお願い」っていうざっくりした指示が出せる。4種類の指示方法が選べる。

  • ImagePrompt 画像からなんとなく読み取って似た感じに仕上げてくれ
  • PyraCanny 画像の輪郭を抽出して、絵を作ってくれ
  • CPDS 画像の輪郭をざっくり目に抽出して絵を作ってくれ
  • FaceSwap 顔をこの画像に差し替えてくれ

ImagePromptは、例えばピカソの絵を指定するとピカソっぽい画像をガンガン生成してくれるようになる…イメージなのだが、実際はそうはならず、画像からAIさんが気まぐれで適当に特徴をチョイスして、似たような画像を生成するという感じになってる。いずれパワーアップしていくのか。

あとは、Controlnetのcannyっぽい簡易の輪郭抽出が2種と、画像の顔を入れ替えるFaceSwap。FaceSwapは、そっくりさんかな?というレベルに顔を似せてくれる感じ。

DAZStudioのレンダリング画像をImagePromptとFaceSwapとPyraCannyに同時に与えると、いい感じにAI補正してくれる。

関連)DAZ STUDIOの使い方

Inpaint or Outpaint(指定箇所を再生成)

顔など、AIで再生成したいところを塗りつぶして、部分的に再生成する。

絵の内部を再生成するImpaintと、画面外を生成して見える範囲を広げるOutpaintがある。

Inpaintは塗りつぶした箇所のみ再生成する機能。生成画像の手がおかしかった場合に手だけ再生成するのに使ったり、写真などの目をパッチリ目にAIで修正するとかいうときに使える。

Outpaintは、画像の周りにAIが想像する画像の続きをでっちあげる機能である。Outpaintは最近までベータ版で、徐々に精度が上がってきている。

Describe

画像を与えると、画像からプロンプトを逆生成してくれるやつ。

InputImageにチェック入れてから、Describeタブを選択して、画像をドラッグアンドドロップする。Photograph(実写系)か、Art/Anime(イラスト系)を選んで、「Describe this image into Prompt」(この画像の詳細をプロンプトへ)をクリックで、テキストがプロンプト欄に生成される。

今回、「girl, tokyo」で生成した画像を指定したところ、asian woman posing for the camera on the street(アジア女性が通りでカメラにポーズをとっている)というプロンプトが生成された。うむ、まあその通り。

この機能はありがたい。

FooocusのFreeU

FooocusのFreeUって何?

FreeUというのは、指定すると画像の品質がお手軽に上がるというものらしい。

私はコレ、体感的には良いのか悪いのかわからない。使わなくてもいいんじゃない?くらいに思える。

FreeUとは 推論中に二つのスケール関数を追加することで、容易に、出力を上げることができるメソッド

とか言われても、何のこっちゃ私にはよくわからなかった。

以下は、FreeUを無効、有効にした画像を比較したものだ。プロンプト「girl,tokyo」でシード値を固定して生成した。これを見ても結局何がいいのかわからん。パラメータを詰めれば違いがわかるのかも知れないな。

Seed固定してGenerateしたので、同じ画像が生成されるはずだが、女性がクローズアップされて生成されたかな、という程度の違いしかわからない。背景はだいたい同じものが生成されてるっぽい。

まあ、そのうち良い使い方が発見されたときのために、FreeUの使い方をメモっておこう。

Fooocusで、FreeUを使うには、debug optionを有効にする。

まず、プロンプトの下の「Advanced」にチェックを入れておく。すると画面右に各種設定パネルが出現。

画面右に現れるパネルにて「Advancedタブをクリック」、その下で「FreeUタブをクリック」する。

Enabledにチェックを入れてからGenerateすると、FreeUが有効になる。

FooocusのLORAの使い方

FooocusでLORAを使うときは、以下のフォルダにLORA用のモデルを置く。

<インストールフォルダ>\Fooocus\models\loras

 

  1. Advancedにチェックをつけて、設定画面を出す
  2. 設定画面で「Model」タブをクリック
  3. Refresh All Files(Fooocus起動中にLoRaのファイルを置いても認識しないので、ここをクリックする必要あり)
  4. LoRA2~5のプルダウンメニューから、対象のLoRAを選ぶ

LoRAの種類によっては、トリガーワードが設定されていることがあり、指定のトリガーワードをプロンプトに含めることでLoRAが有効になるのだ。

FooocusのPreset機能

2024年の3月下旬ごろに追加された機能。

Advancedにチェックを入れると、Settingタブに現れる。1クリックで、スタイルとモデル、LoRaなどが切り替わる。初回のみダウンロードなどが発生するため、長めの待ち時間が発生する。

presetには、以下の項目を設定できるっぽい。(これ以外もできるかも?)

  • default_model
  • default_refiner
  • default_refiner_switch
  • default_loras
  • default_cfg_scale
  • default_sample_sharpness
  • default_sampler
  • default_scheduler
  • default_performance
  • default_prompt
  • default_prompt_negative
  • default_styles
  • default_aspect_ratio
  • checkpoint_downloads
  • embeddings_downloads
  • lora_downloads
  • previous_default_models

presetは、FooocusインストールフォルダのFooocus/presetsフォルダにjson形式でファイルを置いておけば増やせるっぽい。もともとあるjsonファイルをコピーして書き換えるのが楽そう。

内容はこんな感じ。まあ、なんとなくフィーリングで書き換えられそう。プロンプトやネガティブプロンプトのデフォルトも設定できるんだな。

プロンプトを複数登録する用に使えるかも。将来もうちょっとブラッシュアップされて、ファイルいじらなくてもプロンプト登録できるようにしてほしい。スタイル切り替え(複数のスタイルをセットにして切り替える)機能としてもいけるか。

今は、日常的に複数のモデルを使う場合には便利かも、という機能。

Fooocus-MRE かゆいところに手が届くフォーク版

Fooocusはシンプル操作がゆえに、細かいパラメータを指定したりすることができなかったりする。そこで、「パラメータいじれる版」として、Fooocus-MREが誕生したのだ。

フォーク版という、開発途中のソースから分岐したバージョンで、本家FooocusがアップデートしたらMREにも新機能などが反映されていくという方針だった。

けど、あまりにも本家のアップデートが激しいためついていけなくなって、Fooocus-MREは更新が止まったのだった…。というわけで、MREは2023年9月ごろが最終版で更新は終了した。

GitHub – MoonRide303/Fooocus-MRE: Focus on prompting and generating(Fooocus-MREのソース)

 

まあ、そんな感じ。作者によると、Automatic1111でSDXLモデルが動かないのは、モデルの読み込みのメモリ効率が悪いせいとのこと。fooocusの仕組みの一部をAutomatic1111側で取り込む予定らしい。なんていうか、太っ腹というか。

関連)Stable DiffusionのWEBUI Automatic1111の使い方

※2024年1月、試してみたら以前はできなかったのにSDXLがAutomatic1111で動くようになってた。メモリ周りが最適化されたのか。パソコン16Gメモリ、ビデオカート8Gメモリで動作を確認。

生成AI

StableDiffusionを学習させる LoRaの教師画像、正則化

LoRAとは?/StableDiffusionの学習方法 LoRaとは、「Low-Rank Adaptation」の略語で、既存のモデルに新たな被写体を学習させる、追加学習の手法の一種。 ごく狭い範囲で追加学習させるというもので、高品質な結...
生成AI

ControlNetの使い方と設定 モデルの種類と導入

ContorolNetは、StableDiffusionでのAI生成イラストを、指示画像を与えることでポーズや輪郭、奥行き情報などを指定できるテクノロジーだ。 ControlNetの使い方 具体的に、どんな画像を渡したらどう生成される? 左...
生成AI

AIイラスト自動生成 NovelAIとDAZ STUDIO

NovelAI Diffusionは、AIでイラストを自動生成するサービス NovelAI DiffusionというAI画像生成サービスがある。 > テキストを入力すると、AIが画像として出力してくれるというものだ。 「female」(女性...