안녕하세요,
이번 포스팅에서는 Flux 모델을 활용한 이미지 확장 기술인 Outpainting에 대해 소개해 드리려고 합니다. Outpainting은 기존 이미지를 경계 너머로 확장하여 새로운 시각적 경험을 창출하는 기술입니다. 특히, 한정된 프레임의 사진이나 예술 작품을 더 넓은 영역으로 확장함으로써 더 풍부하고 창의적인 이미지를 만들어낼 수 있습니다. 이번 글에서는 Flux 모델과 SDXL모델을 사용해 Outpainting 하여 이미지를 생성하는 방법에 대해 자세히 알아보겠습니다.
이미지 Outpainting
Outpainting(아웃페인팅)은 이미지 생성 모델을 활용하여 기존 이미지를 확장하는 기술입니다. 주어진 이미지의 경계를 넘어 새로운 픽셀을 추가함으로써 자연스럽게 이미지를 확장할 수 있습니다. 이 기술을 통해 좁은 프레임의 사진을 넓은 풍경으로 확장하거나 예술 작품의 캔버스를 더 넓혀 큰 영역을 담을 수 있습니다.
아웃페인팅은 이미지의 문맥을 이해하는 데 기반합니다. 이미지 생성 모델은 주어진 이미지의 스타일과 패턴을 학습하고, 이를 바탕으로 주변에 새로운 요소를 자연스럽게 추가합니다. 이 과정에서 이미지의 색상, 질감, 패턴 등을 분석하여 원래 이미지와 매끄럽게 이어지는 부분을 생성해냅니다.
아웃페인팅은 기본적으로 이미지의 "연속성"을 보장해야 하므로, 모델이 주어진 이미지의 패턴과 내용을 잘 이해하고 이를 바탕으로 확장해야 합니다. 이를 통해 제한된 이미지가 더 풍부해지고, 창의적인 확장이 가능해지며, 사용자가 이미지를 재해석하거나 새로운 콘텐츠를 창출하는 데 점점 더 많이 활용되고 있습니다.
사전 준비 사항
이 포스팅은 ComfyUI에서 Flux 모델을 활용하는 방법에 대한 내용입니다. 따라서 본문을 읽기 전에 ComfyUI와 ComfyUI-Manager, Flux 모델을 미리 설치해 주시기 바랍니다.
- ComfyUI 설치 방법 : [Macus' Story] - [이미지 생성 AI] [로컬 환경] ComfyUI 이용하여 이미지 생성하기 1탄
- ComfyUI-Manager 설치 방법 : [Marcus' Story] - [이미지 생성 AI] [로컬 환경] ComfyUI 이용하여 이미지 생성하기 2탄 : ComfyUI-Manager
목차
1. 실행 환경
2. ComfyUI 사용 노드
3. 모델 다운로드 및 위치 설정
4. Outpainting 노드 구성
5. 이미지 생성
1. 실행 환경
- 운영체제 : Windows 11
- ComfyUI : 0.2.7
- ComfyUI-Manager : V2.51.9
- Python : 3.10.0
- torch : 2.3.1 + cu121
- GPU : NVIDIA GeForce RTX 4060 Ti
2. ComfyUI 사용 노드
아래는 이번 포스팅에서 사용된 ComfyUI 커스텀 노드입니다. 모델 실행에 필수적인 노드를 "필수"로 표기하였으며, 사용에 필수적이지 않은 노드는 "선택사항"으로 표기하였습니다.
- ComfyUI Layer Style : ComfyUI에서 레이어와 마스크를 합성하여 포토샵과 유사한 기능을 구현하는 커스텀 노드 세트로, 워크플로우를 중앙 집중화하고 소프트웨어 전환 빈도를 줄이는 것을 목표로 합니다. (필수)
- comfyui-mixlab-nodes : ComfyUI에서 워크플로우를 웹 애플리케이션으로 변환하고, 화면 공유 및 부동 비디오, GPT 및 3D 통합, 음성 인식 및 텍스트 음성 변환 등의 기능을 제공하는 커스텀 노드 세트로, 사용자 경험을 향상시키고 다양한 작업을 효율적으로 수행할 수 있습니다. (필수)
- rgthree's ComfyUI Nodes : 이미지 생성과 편집 작업을 유연하게 수행할 수 있도록 지원하는 노드 세트로, 이미지 비교와 LoRA 모델 로드 등에 사용되었습니다. (선택사항)
3. 모델 다운로드 및 위치 설정
Outpainting으로 이미지 생성을 위해서는 Checkpoint 모델과 ControlNet 모델을 다운받아야합니다.
1) Checkpoint 모델 다운로드
civitai 사이트에서 커스텀 SDXL 모델을 다운로드합니다.
- Juggernaut XL 모델 : https://civitai.com/models/133005/juggernaut-xl
모델 파일 다운로드가 완료되면 해당 모델 파일을 checkpoints 폴더로 이동시켜줍니다.
(ComfyUI 폴더) → (models 폴더) → (checkpoints 폴더)
2) ControlNet 모델 다운로드
ControlNet 모델은 아래 허깅페이스에서 다운로드합니다.
모델 파일 다운로드가 완료되면 해당 모델 파일을 controlnet 폴더로 이동시켜줍니다.
(ComfyUI 폴더) → (models 폴더) → (controlnet 폴더)
4. Outpainting 노드 구성
Outpainting 노드 구성은 아래와 같이 구성했습니다.
SDXL 모델과 Flux 모델의 협업을 통해 고해상도의 세밀한 이미지를 생성하고, 추가적인 제약 조건으로 스타일과 구성을 정밀하게 제어합니다.
'Load Checkpoint' 노드는 SDXL 모델을 로드하여 이미지 생성의 기반을 제공합니다. 이 모델은 고해상도의 세밀한 이미지를 생성하는 데 핵심 역할을 합니다. 'Load LoRA'는 추가적인 세부 정보를 보강하여 스타일과 디테일을 더욱 강화합니다. 'CLIP Text Encode'는 SDXL 모델이 생성할 이미지의 조건과 특징을 설정하는 긍정 및 부정 프롬프트를 인코딩합니다. 이후 'Apply ControlNet' 노드는 Flux 모델을 활용하여 포즈와 스타일 같은 세부 제약 조건을 추가하며, SDXL 모델의 결과물에 정확성과 일관성을 더합니다. 특히 Flux 모델은 세부적인 이미지 제어를 통해 스타일과 구성을 정밀하게 조정하는 데 중심적인 역할을 합니다. 'KSampler'는 SDXL 모델과 Flux 모델의 융합 결과를 샘플링하여 최종 이미지를 생성하며, 'VAE Decode'는 이를 디코딩하여 최종 결과물로 저장합니다. 이 과정에서 SDXL 모델은 고품질 이미지 생성을 주도하고, Flux 모델은 이미지의 세부적 제어와 조정에 기여하여 전반적인 결과물의 품질을 극대화합니다.
Outpainting 노드 구성 파일
5. 이미지 생성
이렇게 구성한 ComfyUI를 통해 작은 이미지를 통해 확장된 이미지를 생성할 수 있습니다. 아래 이미지는 Outpainting을 통해 확장한 이미지 입니다. 생성할때 사용한 프롬프트는 단순히 퀄리티에 영향을 주는 프롬프트만 사용하였습니다.
- 긍정 프롬프트 : masterpiece, best quality, ultra-detailed, high resolution, intricate details, photorealistic, vibrant colors, sharp focus, cinematic lighting, professional rendering, 8k resolution, hyper-realistic textures
- 부정 프롬프트 : low quality, blurry, bad anatomy, disfigured, pixelated, oversaturated, low resolution, unrealistic, grainy, poorly drawn, flat colors, out of focus, distorted, watermark, text, logo
Outpainting을 활용해 이미지를 확장한 결과는 전반적으로 기대 이상으로 만족스러웠습니다. 특히 구성된 노드를 활용하여 원본 이미지의 위치와 배치를 자유롭게 조정할 수 있었고, 이를 통해 원하는 구도와 분위기를 정밀하게 반영한 이미지를 생성할 수 있었습니다.
다만, 인물 이미지를 확장할 때는 퀄리티가 다소 떨어지는 경향이 관찰되었습니다. 이는 사용한 모델의 특성이나 Outpainting 과정에서 어떠한 이유가 있지 않을까 추측해봅니다. 이에 대한 원인을 조금 더 깊이 연구해볼 필요가 있을 것 같습니다.
감사합니다. 😊
'ComfyUI > 이미지 수정' 카테고리의 다른 글
[이미지 생성 AI] [로컬 환경] ComfyUI 이용하여 이미지 수정하기 2탄 : Flux Inpainting (1) | 2024.10.23 |
---|---|
[이미지 생성 AI] [로컬 환경] ComfyUI 이용하여 이미지 수정하기 1탄 : Flux-Upscaler (1) | 2024.10.10 |