Macローカルの Flux.1 dev + Comfyui で LoRA や IP Adapter などの ControlNet を動かしてみました #Flux #Mac

Screenshot

先日、MacBook Proローカルで、Flux.1 dev + Comfyuiを動かしてみましたが、今度はFlux.1 devに対応したLoRAやControlNetを動かしてみました。

LoRA

公開されているLoRAへの対応は比較的簡単です。huggingfaceやcivitaiなどで、Flux dev対応のLoRAを検索して、
comfy.git/app/models/loras に配置します。

次にworkflowとして、下記などをダウンロードして、Comfyuiに読み込みます。
Load LoRAが追加されているので、lora_nameのところを好きなLoRAに変更して実行します。

https://huggingface.co/alfredplpl/flux.1-dev-modern-anime-lora/blob/main/anime-workflow.json

まだあまりありませんが、ポートレート用に使えそうなLoRAを試してみました。

Asir Asian Portrait Photography Flux
https://civitai.com/models/647255/asir-asian-portrait-photography-flux

school uniformを指定しても、実写風の画像が生成できました。

Fluxではアニメ調になってしまったラーメンを食べる姿も実写風に。

japanese_saya
https://civitai.com/models/650848/japanesesaya

こちらはより日本人風に。

2人とかもしっかり表現できますね。

ControlNet

ControlNetなども絶賛対応中の模様でしたが、下記で、Canny, DepthHED, IP AdapterなどのControlNetが公開されていたので、動かしてみました。(2024-08-27のVer.でなんとか動きました)

https://github.com/XLabs-AI/x-flux-comfyui

ComfyuiのManagerから、Custom Nodes Managerをクリックします。
x-fluxを検索したら、x-flux-comfyui が出てくるのでInstallします。

Check Missingで、ComfyUI’s ControlNet Auxiliary Preprocessors が出てきたのでこれもInstall。

IP Adapter

下記から model.safetensors をダウンロードして、comfy.git/app/models/clip_vision に配置。

https://huggingface.co/openai/clip-vit-large-patch14/tree/main

下記から、flux-ip-adapter.safetensors をダウンロードして、comfy.git/app/models/xlabs/ipadapters に配置
ip_adapter_workflow.json をダウンロードして、ワークフローとして使います。

https://huggingface.co/XLabs-AI/flux-ip-adapter/tree/main

Mac用修正

これだけだとMacの場合エラーが出たので、下記を修正しました。(そのうち修正されると思いますが)

comfy.git/app/custom_nodes/x-flux-comfyui/nodes.py

        if torch.backends.mps.is_available():
            device = torch.device("mps")
        if torch.cuda.is_bf16_supported():
            dtype_model = torch.bfloat16#
        else:        
            dtype_model = torch.float16#

の部分を下記に変更

        if torch.backends.mps.is_available():
            device = torch.device("mps")
            dtype_model = torch.bfloat16#
        elif torch.cuda.is_bf16_supported():
            dtype_model = torch.bfloat16#
        else:        
            dtype_model = torch.float16#

comfy.git/app/custom_nodes/x-flux-comfyui/xflux/src/flux/math.py

    scale = torch.arange(0, dim, 2, dtype=torch.float64, device=pos.device) / dim

を下記に変更

    scale = torch.arange(0, dim, 2, dtype=torch.float32, device=pos.device) / dim

さらに、Flux 1 devのモデルが、flux1-dev.safetensors だとメモリ不足?で落ちたので、Download Modelsから Flux2 Dev gguf q4_0 をダウンロード。comfy.git/app/models/unet に flux1-dev-Q4_0.gguf がダウンロードされます。

Custom Nodes Managerで、ComfyUI-GGUFをInstallします。

workflowの Load Diffusion Model を、Unet Loader (GGUF)に差し替えて、unet_nameにflux1-dev-Q4_0.ggufを指定して実行。

これでやっと動きました。(とっても遅いし、ちゃんとプロンプト通りになってない感じがしますが)

Canny

下記から、flux-canny-controlnet-v3.safetensors をダウンロードして、 comfy.git/app/models/xlabs/controlnets に配置。
ワークフローもダウンロードして、Unet Loader (GGUF)に差し替えて実行。(上記Mac用修正が必要)

https://huggingface.co/XLabs-AI/flux-controlnet-canny-v3/tree/main

Depth

下記から、flux-depth-controlnet-v3.safetensors をダウンロードして、 comfy.git/app/models/xlabs/controlnets に配置。
ワークフローもダウンロードして、Unet Loader (GGUF)に差し替えて実行。(上記Mac用修正が必要)

https://huggingface.co/XLabs-AI/flux-controlnet-depth-v3/tree/main

HED

下記から、flux-hed-controlnet-v3.safetensors をダウンロードして、 comfy.git/app/models/xlabs/controlnets に配置。
ワークフローもダウンロードして、Unet Loader (GGUF)に差し替えて実行。(上記Mac用修正が必要)

https://huggingface.co/XLabs-AI/flux-controlnet-hed-v3/tree/main

とりあえず動作確認だけで、まだ使っていません…。

saya: