ComfyUI와 LoRA 미세 조정을 통한 AIGC 이미지 생성 실전 가이드

1. ComfyUI 개요 및 응용

1.1 ComfyUI란?

ComfyUI는 노드 기반 그래픽 사용자 인터페이스(GUI)로, 이미지 생성 과정을 모듈화하여 각 단계를 노드로 표현합니다. 사용자는 이 노드들을 연결해 맞춤형 워크플로우를 구성할 수 있어, Stable Diffusion 기반 이미지 생성 작업을 직관적이고 유연하게 관리할 수 있습니다.

1.2 핵심 구성 모듈

ComfyUI의 주요 모듈은 다음과 같습니다:

  • 모델 로더: Load Checkpoint를 통해 Model, CLIP, VAE 세 부분을 포함한 기본 모델 파일을 불러옵니다.
  • CLIP 모듈: 텍스트 입력을 잠재 공간 임베딩(latent space embedding)으로 변환하여 모델 입력으로 사용합니다.
  • VAE 디코더: 잠재 공간의 임베딩을 픽셀 수준의 이미지로 디코딩합니다.
  • 샘플러: 이미지 생성을 제어하며, 샘플링 방식에 따라 출력 품질과 다양성이 달라집니다. KSampler에서 주요 파라미터를 설정합니다:
    • seed: 노이즈 생성을 위한 난수 시드
    • control_after_generate: 시드 변경 방식
    • steps: 노이즈 제거 반복 횟수 (높을수록 정밀도 향상)
    • cfg: 프롬프트 영향력 조절 (classifier free guidance)
    • denoise: 노이즈 적용 비율
    • sampler_name, scheduler: 노이즈 제거 파라미터

1.3 ComfyUI의 장점

  • 모듈성 및 유연성: 드래그 앤 드롭으로 복잡한 워크플로우 구축 가능
  • 시각적 인터페이스: 비전문가도 AI 모델과 데이터 흐름을 쉽게 이해하고 조작
  • 다중 모델 지원: 여러 생성 모델을 통합 및 전환하여 사용
  • 디버깅 및 최적화: 데이터 흐름 추적을 통한 문제 해결 및 결과 최적화
  • 오픈소스 및 확장성: 새로운 모듈이나 플러그인 개발 가능
  • 사용자 친화성: 복잡한 작업도 간단하게 처리 가능

2. ComfyUI 설치 및 워크플로우 실행

2.1 설치 방법

본 가이드에서는 모델스코프(Modelscope)의 노트북과 무료 GPU를 활용합니다.

git lfs install
git clone https://www.modelscope.cn/datasets/maochase/kolors_test_comfyui.git
mv kolors_test_comfyui/* ./
rm -rf kolors_test_comfyui/
mkdir -p /mnt/workspace/models/lightning_logs/version_0/checkpoints/
mv epoch=0-step=500.ckpt /mnt/workspace/models/lightning_logs/version_0/checkpoints/

파일 터미널을 열고 위 코드를 실행합니다. 설치 완료 후 제공된 URL을 브라우저에서 열면 ComfyUI 인터페이스에 접속할 수 있습니다. (일시적 오류 시 잠시 후 재시도)

2.2 워크플로우 예시

LoRA 없는 워크플로우

  1. kolors_example.json 파일을 다운로드
  2. ComfyUI에서 "Load" 버튼으로 해당 파일 로드
  3. 이미지 생성 실행 (첫 실행 시 리소스 로드 시간 소요)

LoRA 포함 워크플로우

  1. kolors_with_lora_example.json 파일을 다운로드
  2. ComfyUI에서 "Load" 버튼으로 해당 파일 로드
  3. LoRA 파일 경로를 이전에 미세 조정한 체크포인트로 설정 (예: /mnt/workspace/models/lightning_logs/version_0/checkpoints/epoch=0-step=500.ckpt)
  4. 이미지 생성 실행

3. LoRA 미세 조정

3.1 LoRA 개요

LoRA(Low-Rank Adaptation)는 사전 학습된 모델의 핵심 레이어에 저차원 행렬을 추가하여, 전체 모델 가중치를 변경하지 않고 특정 작업에 효율적으로 적응시키는 기술입니다. 이는 적은 데이터와 자원으로도 모델을 개인화할 수 있게 합니다.

3.2 LoRA 미세 조정 코드 분석

import os
cmd = """
python DiffSynth-Studio/examples/train/kolors/train_kolors_lora.py \
  --pretrained_unet_path models/kolors/Kolors/unet/diffusion_pytorch_model.safetensors \
  --pretrained_text_encoder_path models/kolors/Kolors/text_encoder \
  --pretrained_fp16_vae_path models/sdxl-vae-fp16-fix/diffusion_pytorch_model.safetensors \
  --lora_rank 16 \
  --lora_alpha 4.0 \
  --dataset_path data/lora_dataset_processed \
  --output_path ./models \
  --max_epochs 1 \
  --center_crop \
  --use_gradient_checkpointing \
  --precision "16-mixed"
""".strip()
os.system(cmd)

3.3 주요 파라미터 설명

파라미터설명
pretrained_unet_pathmodels/kolors/Kolors/unet/diffusion_pytorch_model.safetensors사전 학습된 UNet 모델 경로
pretrained_text_encoder_pathmodels/kolors/Kolors/text_encoder사전 학습된 텍스트 인코더 경로
pretrained_fp16_vae_pathmodels/sdxl-vae-fp16-fix/diffusion_pytorch_model.safetensors사전 학습된 VAE 모델 경로
lora_rank16LoRA의 랭크로, 모델 복잡도와 성능에 영향
lora_alpha4.0미세 조정 강도 제어
dataset_pathdata/lora_dataset_processed훈련 데이터셋 경로
output_path./models모델 저장 경로
max_epochs1최대 훈련 에폭 수
center_crop활성화중앙 크롭을 통한 이미지 전처리
use_gradient_checkpointing활성화그래디언트 체크포인트를 통한 메모리 절약
precision"16-mixed"혼합 16비트 정밀도로 훈련 속도 향상

3.4 UNet, VAE, 텍스트 인코더의 협력 관계

  • UNet: 노이즈와 텍스트 조건을 입력받아 이미지 생성 과정에서 노이즈를 제거
  • VAE: 입력 데이터를 잠재 공간으로 매핑하고, UNet 출력을 디코딩하여 최종 이미지 생성
  • 텍스트 인코더: 텍스트 프롬프트를 벡터로 변환하여 UNet에 전달, 이미지 생성을 안내

4. 고품질 데이터셋 준비

4.1 목표 설정

  • 응용 시나리오: 예술 스타일 변환, 제품 이미지 생성, 의료 영상 합성 등
  • 데이터 유형: 실제 사진 또는 합성 이미지, 컬러 또는 흑백, 해상도 요구사항
  • 데이터 양: 훈련 및 검증에 필요한 충분한 이미지 수

4.2 데이터셋 획득 방법

방법설명
공개 데이터 플랫폼모델스코프, ImageNet, Open Images, CelebA, LSUN 등 활용
API 또는 크롤러Unsplash, Pexels 등에서 API를 통해 이미지 수집 (저작권 주의)
데이터 합성Unity, Unreal Engine 등으로 합성 데이터 생성
데이터 증강회전, 뒤집기, 크기 조정, 색상 변환 등으로 데이터 확장
구매 또는 커스터마이징의료 영상, 위성 이미지 등 특수 분야는 신뢰할 수 있는 채널에서 구매

태그: ComfyUI LoRA Stable Diffusion UNet VAE

6월 27일 17:23에 게시됨