Search

2-2. Flux에서 이미지 생성하기

2-2-1. Flux에 대해서

Black Forest Labs에서 개발한 FLUX는 텍스트를 기반으로 이미지를 생성하는 최첨단 모델입니다. 이 모델은 자연어 설명을 입력 받아 해당하는 이미지를 생성하는 능력을 갖추고 있습니다. Flux가 공개된 이후로 Stable Diffusion보다 Flux를 더 많이 사용하고 있습니다. Stable Diffusion은 오픈소스 AI 생성 모델로 강력한 커뮤니티와 확장성을 가지고 있지만, 속도, 품질, 모델 최적화 측면에서 Flux가 더 뛰어난 성능을 제공하고 있기 때문입니다. 하지만 AI 이미지 생성 기술이 급격하게 발전하면서 AI 영상 작업에 대한 요구가 늘어나고 있어서 사용빈도는 생성 AI 비디오 모델을 더 많이 사용하고 있습니다. 하지만 AI 영상을 만들기 위해서는 이미지 프롬프팅이 가장 효과적이고 빠르게 작업하 때는 Midjourney를 사용하고 있지만 디테일한 커스터마이징이 필요하거나 개발이 필요한 작업은 Flux를 여전히 사용하고 있습니다.
FLUX 모델은 다양한 버전으로 제공되며, 각 버전은 다음과 같은 특징을 가지고 있습니다:
FLUX.1 [pro]: 최고 수준의 성능을 제공하며, 우수한 프롬프트 추종 능력, 시각적 품질, 이미지 디테일 및 출력 다양성을 갖추고 있습니다. 이 버전은 API를 통해 접근할 수 있으며, Freepik, Together.ai, Fal.ai, Replicate 등의 파트너를 통해서도 이용 가능합니다.
FLUX.1 [dev]: FLUX.1 [pro]에서 직접 증류된 오픈 웨이트 모델로, 비상업적 용도로 사용됩니다. 유사한 품질과 프롬프트 추종 능력을 가지며, 동일한 크기의 표준 모델보다 효율적입니다. 이 버전의 웨이트는 Hugging Face에서 제공되며, Replicate, Fal.ai, Mystic, Deepinfra, TensorOpera, Hyperbolic 등을 통해 직접 사용해볼 수 있습니다.
FLUX.1 [schnell]: 가장 빠른 모델로, 로컬 개발 및 개인 사용을 위해 최적화되었습니다. Apache 2.0 라이선스 하에 공개되어 있으며, Hugging Face에서 웨이트를 제공하고 GitHub에서 추론 코드를 찾을 수 있습니다. Replicate, Fal.ai, Mystic, Deepinfra, TensorOpera, Together.ai 등을 통해서도 이용 가능합니다.
또한, FLUX.1 Tools라는 도구 모음이 제공되어, 기본 텍스트-이미지 모델인 FLUX.1에 제어 및 조정 기능을 추가합니다. 이 도구에는 다음과 같은 기능이 포함됩니다:
FLUX.1 Fill: 텍스트 설명과 이진 마스크를 사용하여 실제 및 생성된 이미지를 편집하고 확장할 수 있는 최첨단 인페인팅 및 아웃페인팅 모델입니다.
FLUX.1 Depth: 입력 이미지에서 추출한 깊이 맵과 텍스트 프롬프트를 기반으로 구조적 지도를 가능하게 하는 모델입니다.
FLUX.1 Canny: 입력 이미지에서 추출한 캐니 에지와 텍스트 프롬프트를 기반으로 구조적 지도를 가능하게 하는 모델입니다.
FLUX.1 Redux: 입력 이미지와 텍스트 프롬프트를 혼합하여 새로운 버전을 생성할 수 있는 어댑터입니다.
이러한 도구들은 FLUX.1 [dev] 모델 시리즈의 오픈 액세스 모델로 제공되며, BFL API를 통해 FLUX.1 [pro]와 함께 사용할 수 있습니다.
BFL APIBlack Forest Labs에서 제공하는 개발자용 인터페이스로, 최첨단 이미지 생성 모델인 FLUX의 기능을 애플리케이션이나 서비스에 통합할 수 있도록 지원합니다.
FLUX 모델은 다양한 플랫폼(Replicate, Fal.ai, Freepik 등)에서 사용할 수 있으며, GitHub의 공식 저장소에서 추론 코드를 제공하고 있습니다.

2-2-2. ComfyUI에서 FLUX 모델을 실행

ComfyUI는 Stable Diffusion 기반의 AI 이미지 생성 워크플로우를 노드 그래프 방식으로 구성할 수 있는 사용자 인터페이스입니다. Stable Diffusion 및 다양한 확장 모델(LoRA, ControlNet 등)을 지원하며, 직관적인 노드 기반 시스템을 통해 이미지 생성 과정을 세밀하게 조정할 수 있습니다.
ComfyUI의 가장 큰 장점은 로컬에서 AI 모델을 직접 실행할 수 있습니다. 클라우드 기반 플랫폼과 솔루션은 간편하지만, 인터랙티브한 콘텐츠 개발이나 데이터를 신중하게 다뤄야 하는 프로젝트에서는 로컬 환경이 필수적입니다. 로컬 실행을 통해 즉각적인 피드백을 제공할 수 있어 AI 아트, 연구 개발 등 반복적인 실험이 필요한 작업에 유용합니다. 또한, 외부 API를 사용하면 비용이 지속적으로 발생하지만, ComfyUI는 GPU만 있다면 무제한으로 생성할 수 있어 경제적입니다. 그리고 사용자 맞춤형 설정도 큰 장점입니다. 다양한 모델과 LoRA, ControlNet 등을 자유롭게 조합하여 완전히 유연한 워크플로우를 구축할 수 있습니다. 또한 오픈소스 프로젝트 특성상 커뮤니티의 발전과 함께 지속적으로 개선되고 있어, 최신 AI 모델과 기술을 유연하게 적용할 수 있는 장점도 갖추고 있습니다.
1.
ComfyUI 설치 및 설정:
ComfyUI를 설치합니다. 설치 방법은 ComfyUI 설치 가이드에서 확인하실 수 있습니다.
설치 후, ComfyUI 폴더 내의 run_nvidia_gpu.bat 파일을 실행하여 ComfyUI를 시작합니다.
2.
필요한 모델 파일 다운로드:
UNet 모델:
flux1-dev.safetensors 또는 flux1-schnell.safetensors 파일을 다운로드하여 ComfyUI/models/unet/ 디렉토리에 저장합니다.
CLIP 모델:
t5xxl_fp16.safetensors 또는 메모리가 제한적인 경우 t5xxl_fp8_e4m3fn.safetensors 파일을 다운로드하여 ComfyUI/models/clip/ 디렉토리에 저장합니다.
또한, clip_l.safetensors 파일도 동일한 디렉토리에 저장합니다.
VAE 모델:
ae.safetensors 파일을 다운로드하여 ComfyUI/models/vae/ 디렉토리에 저장합니다.
3.
ComfyUI에서 모델 로드 및 설정:
Load Diffusion Model 노드:
flux1-dev.safetensors 또는 flux1-schnell.safetensors 파일을 선택합니다.
weight_dtype 옵션을 fp16 또는 메모리 절약을 위해 fp8로 설정합니다.
DualCLIPLoader 노드:
clip_name1t5xxl_fp16.safetensors 또는 t5xxl_fp8_e4m3fn.safetensors를 선택합니다.
clip_name2clip_l.safetensors를 선택합니다.
Load VAE 노드:
ae.safetensors 파일을 선택합니다.
4.
워크플로우 설정:
필요에 따라 ComfyUI에서 제공하는 FLUX 전용 워크플로우를 활용할 수 있습니다. 예를 들어, ComfyUI FLUX 워크플로우를 참고하여 설정할 수 있습니다.
5.
이미지 생성 실행:
모든 설정이 완료되면, 프롬프트를 입력하고 'Queue Prompt' 버튼을 눌러 이미지 생성을 시작합니다.
아래의 이미지는 ComfyUI가 설치되었을 때 확인할 수 있는 UI 입니다. A vast, dense evergreen forest covered in thick fog, creating a mystical and serene atmosphere. The towering pine trees fade into the distance as the fog gradually obscures the landscape. The color palette consists of deep greens, soft blues, and misty whites, evoking a tranquil and cinematic mood. The composition is symmetrical, with layers of trees adding depth and perspective. The mist appears soft and ethereal, gently drifting across the treetops. Ultra photorealistic, 8K UHD, cinematic landscape, volumetric fog, atmospheric depth, moody lighting, soft light diffusion, high dynamic range (HDR).

2-2-3. Flux에서의 이미지 생성 예시

ComfyUI에서 Flux모델을 이용해 아래와 같은 동양인 여성의 이미지를 생성하도록 하겠습니다
ComfyUI에서의 Flux 모델을 위한 Text-to-Image의 전체 워크플로우는 아래와 같습니다.

주요 노드 및 연결

모델 로딩 관련 노드
Load Diffusion Model
flux1-dev-fp8.safetensors 모델을 로드하여 Flux 모델을 사용합니다.
fp8_e6m3fn을 weight_dtype으로 설정하여 8-bit 양자화 모델을 사용하고 있습니다.
DualCLIPLoader
두 개의 CLIP 모델을 불러와 텍스트 조건을 더욱 정밀하게 조정합니다.
l5x0d_fp16.safetensorsclip_1.safetensors를 사용.
Load LoRA
Fluxflux_Chiase_v1.0.safetensors LoRA 파일을 로드하여 추가적인 스타일을 적용합니다.
strength_model을 0.5로 설정하여 원본 모델과 LoRA의 조화를 맞춥니다.

프롬프트 및 인코딩 관련 노드

CLIPTextEncodeFlux
텍스트 프롬프트를 인코딩하여 Flux 모델의 컨디셔닝 입력으로 제공합니다.
Guidance 값 3.5로 설정하여 프롬프트의 영향을 적절히 반영 했습니다.
프롬프트 내용:
A young woman with delicate Asian facial features, large expressive eyes, soft lips, and natural black hair, standing in a minimalistic room. She is illuminated by warm natural light streaming through a window, casting dramatic shadows on her face and background. Her expression is calm and serene, with a hint of curiosity. She wears a simple black long-sleeve shirt, contrasting with the softly lit, neutral-toned background. The composition is cinematic, with a shallow depth of field, making her the focal point. High detail, photorealistic, cinematic lighting, ultra high resolution, soft skin texture.
Plain Text
복사

샘플링 및 노이즈 관련 노드

RandomNoise
control_after_generate 옵션이 randomize로 설정되어 있습니다.
BasicScheduler
schedulernormal로 설정되어 있습니다.
steps=20, denoise=1.0으로 설정되어 샘플링 진행 됩니다.
BasicGuider
이미지 생성 시 가이드를 적용하는 역할.

샘플링 및 이미지 생성 관련 노드

KSamplerSelect
euler 샘플러 사용하고 있습니다.
Empty Latent Image
1024x1024 해상도의 초기 잠재 공간이 생성됩니다.
SamplerCustomAdvanced
샘플링을 수행하여 노이즈를 줄이고 최종 이미지로 변환됩니다.
Load VAE
flux_VAE.safetensors 파일을 로드하여 VAE 디코딩을 수행합니다.
VAE Decode
최종적인 디코딩을 수행하여 이미지를 출력합니다.

출력 및 저장 관련 노드

Preview Image
최종 생성된 이미지를 UI에서 프리뷰 할 수 있습니다.
Save Image
최종 결과물을 저장할 수 있도록 했습니다.

2-2-3. Flux에서의 LoRA의 사용 유무

LoRA는 Black Forest Labs에서 개발한 Flux 모델에 LoRA(Low-Rank Adaptation) 기술을 적용하여, 특정 스타일이나 인물의 특징을 모델에 효율적으로 학습시키는 방법입니다. 이를 통해 모델의 전체 파라미터를 재학습하지 않고도 원하는 특성을 반영한 이미지 생성을 가능하게 합니다.
위의 예시에서는 좀 더 이미지를 잘 조형 하기 위해서 CivitAI 같은 AI 모델 공유 및 커뮤니티에 공개된 LoRA를 사용했었습니다. LoRA를 사용하지 않고 Flux로 생성된 인물의 이미지에는 Flux 공유의 특징이 나타나는 부분이 있습니다. 아래의 워크플로우와 프롬프트는 앞전의 예시와 Load LoRA 노드와 RandomNoise의 noise_seed값을 제외하고 완전히 동일 합니다.
Flux 모델은 기본적으로 매우 사실적인 이미지 생성을 제공하지만, 특정 인물 표현에서 공통적인 특징이 나타나는 경향이 있습니다. 예를 들어, Flux의 기본 모델을 사용하면 눈과 눈 사이가 멀어지고, 코가 늘어나는 형태로 표현되거나, 입술이 도톰하고 하관이 발달한 얼굴 구조가 자주 생성됩니다. 이러한 특징은 Flux 모델의 학습 데이터와 스타일에 기인한 것으로, 특정한 느낌의 인물을 원할 때는 추가적인 조정이 필요합니다.
이를 해결하기 위해 LoRA(Low-Rank Adaptation)를 활용하면, 모델의 전체적인 구조를 변경하지 않으면서도 특정 스타일이나 인물의 특징을 보다 정교하게 조정할 수 있습니다. 앞의 예시에서는 CivitAI와 같은 AI 모델 공유 플랫폼에서 제공된 LoRA를 적용하여 Flux의 기본 생성 결과에서 더 호감 가는 인물 표현을 만들도록 했었습니다.