AI 이미지/Flux AI

Flux1 dev GUFF 모델에서 ControlNet 사용하기

하늘이푸른오늘 2025. 2. 2. 01:19

Xlabs AI에서 ComfyUI에서 사용할 수 있는 Flux용 ControlNet 모델과 관련 커스톰 노드(x-flux-comfyui)를 개발했습니다. 이 글은 이 것들을 사용하는 방법에 관한 글입니다.

소프트웨어

이 글에서는 스테이블 디퓨전용 GUI중에서도 요즘 가장 널리 사용되고 있는 ComfyUI를 사용합니다. ComfyUI가 처음이시라면, 설치 및 기본 사용방법초보가이드를 확인하시기 바랍니다.

따라하기

1단계: 모델 다운로드

참고로, 3070에서 이 워크플로를 돌리려고 하니, F16은 메모리 부족 에러를 일으켰습니다. 그래서 Q3_K_S 모델로 바꿨더니 겨우겨우 돌아가네요. ㅠㅠ

GGUF unet 모델

저는 Flux dev GGUF 모델을 사용합니다(참고 Schnell 모델). 링크에 들어가면 아래와 같이 여러개의 파일이 보이는데, 원하는 것만 골라서 다운로드 받으시면 됩니다. 저는 3070을 사용하는데, 이중에서 F16, Q8_0, Q3_K_S 등 세가지를 받았습니다. F16도 잘 돌아갑니다. 다운로드 받은 파일은 ComfyUI\models\unet 속에 넣어주시면 됩니다.

CLIP 모델

다음은 CLIP 모델입니다. 먼저 여기에 들어가서 t5 clip encoder GGUF 파일을 다운로드 받아, ComfyUI\models\clip 에 넣어줍니다.  마찬가지로 아래와 같이 많은 파일이 보이는데, 저는 여기도 마찬가지로 같은 버전으로 받았습니다. 

다음으로 일반적인 클립인 clip-l 모델을 다운로드 받아서 동일한 폴더에 넣어줍니다.

아래가 제가 다운로드 받은 결과입니다.

vae 모델

마지막으로 vae 모델이 필요합니다. 여기에 들어가서 다운로드 받은뒤, ComfyUI\models\vae 폴더에 넣어주시면 됩니다. 원하시면 구분하기 쉽도록 파일명을 flux-dev-gguf.safetensors 로 변경해주시면 좋습니다.

2단계: 워크플로 불러오기

아래의 JSON 파일을 다운로드 받은 후, ComfyUI 좌측 위 메뉴 Workflow->Open을 사용해 불러옵니다.

flux-GGUF-controlnet-canny.json
0.02MB

이 워크플로를 불러오면 대부분 오류가 발생할 것입니다. 그러한 경우, 다음과 같은 작업이 필요합니다.

3단계: Canny ControlNet 모델 다운로드

flux용 Canny ControlNet  모델 flux-canny-controlnet-v3.safetensors 를 다운로드 받아, ComfyUI\models\xlabs\controlnets 폴더에 넣어줍니다.

4단계: 참조 이미지 불러오기

참조 이미지를 맨 좌측의 [Load Image]노드에 넣어줍니다. 아래 이미지를 사용하셔도 됩니다.

17038-41188503-full-body-woman.png
0.28MB

5 단계: 이미지 생성

이제 [Generate] 버튼을 누르면 이미지가 생성됩니다. 1장 출력하는데 2분 44초 정도 소요되네요.

아래는 결과입니다. 오!!! 아주 잘되네요. 멋집니다!!

참고사항

[Apply Flux ControlNet] 노드의 strength 값을 너무 높이면 결함이 발생할 수 있습니다. 너무 높이지 않도록 조심하세요.

또한 [Canny Endge] 노드에서 low_threshold 와 high_threshold 를 조절하면 참조 이미지로부터 세부적인 내용을 가져오는 정도를 조절할 수 있습니다. 배경을 그대로 옮기고 싶다면 low_threshold 를 낮추고 high_threshold 를 올리면 됩니다.

ControlNet을 사용할 때,  참조 이미지와 생성될 이미지는 종횡비가 동일할 때 가장 좋은 결과를 얻을 수 있습니다. 그래서 이 워크플로에서는 참조 이미지로 부터 [Get Image Size]노드를 이용해 이미지 크기를 알아내고, 적당한 계산을 거쳐서 [Empty Latent Image]에 width와 height 값을 넣어주는 방식을 취했습니다(계산 공식 설명은 생략합니다). 즉, 그냥 이미지 크기는 신경 안쓰셔도 됩니다.

다른 ControlNet

위에서는 Canny ControlNet만 설명했지만, 다른 콘트롤넷도 쉽게 사용할 수 있습니다.

Depth ContolNet for flux

Depth ControlNet은 참조 이미지의 깊이 정보를 복제하여 사용합니다. 3차원 물체 배치를 그대로 따라하고 싶을 때 유용합니다.

Depth 모델 flux-depth-controlnet-v3.safetensors는 다운로드 받아 ComfyUI\models\xlabs\controlnets 폴더에 넣어줍니다.

HED ContolNet for flux

HED Contolent 은 참조이미지에서 대략적인 외곽선을 추출합니다. 세밀한 디테일은 제거하고, 전체적인 형태를 복제하고 싶을 때 유용합니다. 

HED 모델 flux-depth-controlnet-v3.safetensors는 다운로드 받아 ComfyUI\models\xlabs\controlnets 폴더에 넣어줍니다.

사용방법

아래 워크플로는 위에 올려둔 Canny용 워크플로에 Depth, HED 콘트롤넷을 추가한 것입니다. 필요시에 바꿔서 사용하면 됩니다.

flux-controlnet-ALL-fp8.json
0.02MB

아래는 HED 콘트롤넷으로 연결한 모습입니다. 연결 방법은 아래와 같습니다.

[Load Flux ControlNet] 노드의 ControlNet 출력 ----- [Apply Flux ContolNet]노드의 controlnet 입력
[Canny/HED/MiDAS] 노드의 Image 출력 ---- [Apply Flux ContolNet]노드의 image 입력

그런데... HED 를 사용했더니 너무 수행 속도가 많이 느리네요. 기본 Flux-GGUF로 이미지를 생성할 때 1:15 정도 걸렸는데, 25분 이상 걸린다니... 정말 말이 안됩니다. Canny 로 돌렸을 때는 2:30초 정도 걸렸는데(이것도 속도가 반으로 줄었네요), HED만 속도가 늦어진다니 아주 이상합니다. ㅠㅠ

이상입니다~

민, 푸른하늘

이 글은 stable-diffusion-art.com의 글을 참고하여 GGUF 용으로 변경하는 등 편집하여 작성한 글입니다.