西川和久の不定期コラム

初心者でもSDXLを簡単に扱える「Fooocus v2.5.0」の新機能の使い方

 しばらく大きなバージョンアップがなかった「Fooocus」が、つい先日、忘れた頃にv2.5.0となり大幅パワーアップ。この主な追加機能をご紹介しつつ、MINISFORUMのOCuLink接続のGPUドック「DEG1 外付けGPU ドッキング ステーション」を購入したのでその話を最後に少ししてみたい。

Fooocus再び!

 Fooocusは、「ControlNet」、「stable-diffusion-webui-forge」、「Omost」、「IC-Light」、そして最近では「Paints-UNDO」(イラストの描いた手順を遡って類推するAI)をリリースした鬼才、lllyasviel氏の代表作だ。いろいろ作って、興味の対象が一巡したのか(笑)? Fooocusの大幅アップデートとなった。

 インストール方法はWindows + CUDA環境なら簡単。これをダウンロードして解凍。「Fooocus_win64-2-5-0」フォルダ(その下に「_Fooocus」フォルダ、「python_embeded」フォルダ、「run.bat」、「run_anime.bat」、「run_realistic.bat」)が出てくるので、適当なフォルダへ移動。そこでrun.batを実行するだけで起動する。

 筆者のようにサーバー的に使用する場合は、run.batを編集し、 「Fooocusentry_with_update.py --listen」(--listenを追加)とすれば、PCのIPアドレス:7865で起動できる。

 ちなみに7zは最近Windows 11でサポートされた圧縮形式だが、展開が遅いので、外部ツールを使った方が良い。

 そして何よりFooocusの良いところは、checkpoint、ControlNetやInpaint/OutpaintのModelなど、使用時初回に自動的にダウンロードするため、ユーザーが一切ダウンロードする必要がないこと。run.batを使う限り更新も自動。手間要らずでSDXLを簡単に扱えるところとなる。もちろん好みのCheckpointなどは後から自由に設定も可能だ。

 最新版v2.5.0の追加/修正内容はここにあり、全部で26もある。さすがにすべては書き切れないため、個人的にうれしい更新ポイントをいくつか以下へ挙げてみた。

1)ADetailer(FaceDetailer)相当に対応

 今回の更新中でも「ADetailer(FaceDetailer)」相当に対応したのが大きい。

 たとえば832×1,216ピクセルの中に全身を出した場合、顔に割り当てられる画素数はわずかしかなく、結果的に崩れてしまう。この機能は顔の部分だけ抽出し、大きい画素数で描画、それを縮小して貼り付ける。こうすることによって、顔の崩れをなくすことができる技術だ。

 以前のFooocusでも個人的には十分だったのだが、これがないためにメイン環境とはならなかった経緯があり、待ってました! 的な対応となる。

 ただ以前問題(issue)にこの件が上がった時、ADetailerは良い解決策ではないと氏は言っており、ほかの手で来るのか!? っと思っていたが、結果ほかと変わらず。この点は残念だったりする。

 使い方は以下の通り。

FaceDetailerの設定。Advanced > Debug Toolsの方はUpscale時顔が変わり過ぎる時に0.2前後とするとあまり変わらなくなる
顔の部分だけ認識して、再描画している最中
修正前
修正後。ずいぶん違うのが分かる

 ここでのポイントは「Enhance」の「Inpaint Denoising Strength」と、「Advanced」→「Debug Tools」の「Forced Overwrite of Denoising Strength of "Upscale"」をそれぞれ0.5から0.2、-1から0.2にすること。値が大きいと書き込みが増え、その分、情報量的には増えるのだが、顔が変わってしまうので0.2程度が吉となる。

 いずれにしても、この対応によってAUTOMATIC1111などほかの生成環境と仕上がりが変わらなくなり嬉しい限り。

2) Advanced > SettingのPresetの種類が増えた

 次に(普通ならこちらが先だろうが)、「Advanced」→「Setting」の「Preset」の種類が増えたこと。項目は以下の通り。

  • initial
    checkpoint: juggernautXL_v8Rundiffusion.safetensors
  • anime*
    checkpoint: animaPencilXL_v500.safetensors
  • default*(過去バージョンとの互換性用)=initial
    checkpoint: juggernautXL_v8Rundiffusion.safetensors
  • lcm
    下のPerformanceが[Extreme Speed]に変わる
  • lightning
    下のPerformanceが[lightning]に変わる
  • playground_v2.5
    checkpoint: playground-v2.5-1024px-aesthetic.fp16.safetensors
  • pony_v6
    checkpoint: ponyDiffusionV6XL.safetensors
    styleにFooocus Ponyも追加されている
  • realistic*
    checkpoint: realisticStockPhoto_v20.safetensors
  • sai
    checkpoint: sd_xl_base_1.0_0.9vae.safetensors

 元々あったのが(確か)*の3つだったので、大幅に追加され、またそれぞれセットされるcheckpointが変わるケースもある。

 「Pony」は最近人気のSDXLの一種だ。クオリティ系のPromptが少し変わっており、Styleの「Fooocus Pony」を選んでおくと(自動セット)、Promptに「score_9, score_8_up, score_7_up,」、Negative Promptに「score_6, score_5, score_4,」が付加される。

 残念なのは「juggernautXL_v8Rundiffusion」が日本人の描写を苦手とすること。プリセットのまま使うのならrealisticの方がまだ無難だ。もしくは「tsubaki_mix」など、日本人を得意とするcheckpointをダウンロードし、models/checkpointsへ入れ使用すると良い(LoRAはmodels/loras)。

 余談になるが、初め「saiって何? 」ってと思っていたのだが、これはStability AIの略だった。分かってしまえば「なんだ……」というところ(笑)。

3) GroundingDINOとSAMを使ったイメージマスクでInpaint

 これまで手で塗ってマスクを作ればできたのだが、GroundingDINOとSAMを使ってのマスク自動生成に対応した。

 作例の1つ目はGroundingDINOで人のマスクを生成。Invert Mask When Generatingをオンにして(つまり背景を書き換える)、Park(公園)にした結果。

GroundingDINOで人のマスクを生成。Invert Mask When Generatingをオンにして(つまり背景を書き換える)、Park(公園)へ

 2つ目の作例は、SAMを使ってclothesと指定しただけだとお腹の部分が空くので、stomachも入れての領域指定で服をDressにした例となる。

SAMを使ってclothesだけだとお腹の部分が空くので、stomachも入れての領域指定で服をDressへ

 もともとFooocusはOutpaint/Inpaintともにかなり優秀だったので、マスクを自動生成できるようになると、まさに鬼に金棒だ。

 おそらくこの1)と2)だけでもAUTOMATIC1111を使い初心者だと、checkpointをダウンロード/所定のフォルダへコピー、拡張機能をダウンロード/設定……と、あっちこっち移動しやっと動き、結構な時間がかかると思われる。3)になると、もう筆者でも面倒なレベルだ(笑)。それを項目選ぶだけで後は自動できる、というのは非常にポイントが高い。

 残り個人的に欲しいのは(たまにしか使わないが)ControlNet / Depth程度だろうか。もうメインで使ってもまったく問題ない生成環境となった。

 さて、この最新版Fooocus、commitの多くはmashb1t氏が行なっている。おそらくlllyasviel氏は最終確認だけしているのだろう。

 実はFooocusにはmashb1t版と言うのがあり、そこで新機能を実装/確認、その後、本家へマージしている関係となっている。従っていち早く新機能を試したいのであれば、こちらを使うことをお勧めしたい(筆者も使用)。

mashb1t版にはTranslate Promptsがあり、日本語Promptも可能

 今回のマージで多くは本家に入ってしまったが、残っているので面白いのが、Negative Promptの下にある「Translate Prompts(Uses the internet to translate prompts to English.)」。これにチェックを入れると、いかなる言語(?)でも英語に翻訳してPromptとして使える。たとえば、

若い日本人美女、キャミソールとジーンズ姿、カフェ

Young Japan beauty, in camisole and jeans, café

となる。これがなぜ今回Fooocusにマージされなかったのかは謎だが、あればとても便利なので、次回はマージしてほしいところだ。

 以上、最新版Fooocus v2.5.0のアップデートのポイントなどを簡単にご紹介した。これなら面倒な設定も(ほぼ)なく、SDXLを即使えるようになるのがお分かりいただけただろうか? 「お! これなら」と思った方はぜひ試して欲しい。

DEG1 外付けGPU ドッキング ステーションも届いた!

 5月のWindows Update後、何をやってもUSB4接続のeGPUを認識しなくなったので、Core i9-12900搭載PCのM.2スロットへOCuLinkアダプタを付け、eGPU側もOCuLink接続にした話を書いた。

 このシステム自体は順調に動作しており、特に不満もなかったのだが、MINISFORUMの広告写真でOCuLinkベースらしきものが写っており、いつ出るのか? と気になっていた。それがつい先日発売されたので早速購入。価格は執筆時で1万3,580円と、以前購入したキットより安くOCuLinkケーブル付き。これはなかなかお買い得だ。

同社の広告。さりげなくeGPUベースが載っているが、この時点ではThunderbolt 3接続なのかOCuLink接続なのか詳細は不明。イメージだけと言う可能性もあった

 せっかく組み直すならと、二股ケーブルを使い8ピン×3にしていたGPU電源を、8ピン×3対応の電源ユニット、DEEPCOOLの「PX850G R-PX850G-FC0B-JP」へ付け替えた。

 組み立て自体は工作レベルで、電源を取り付け(2カ所ねじ止め)、GPUフレーム固定部分をねじ止め。あとは電源ケーブル類をセットするだけとなる。

DEG1 外付けGPU ドッキング ステーション
新たに購入したPX850G R-PX850G-FC0B-JP。8ピンが3つある
電源取り付け
フレーム固定部分取り付け
後ろ側。ケーブルが長いのでどうしてもこうなってしまう
動作確認中! なかなかカッコいい

 OCuLink自体は同じなので性能が向上するわけではないものの、8ピン×3対応の電源ユニットということで安心感があり、なによりカッコいい(笑)。この方法だとGPUのサイズ自体は関係なく、その気になればGeForce RTX 4090も取り付け可能。OCuLinkベースの決定版ではないだろか!?


 以上、バージョンアップしたFooocusと、MINISFORUMのDEG1をご紹介した。前者は簡単にSDXL! 後者はミニPCをeGPUでパワーアップ! といった感じで参考にして頂ければ幸いだ。