안녕하세요,
이번 포스팅에서는 Flux 모델을 사용해 이미지 인페인팅을 수행하는 방법을 소개하고자 합니다. Flux 모델은 텍스트 프롬프트와 이미지의 일부 정보를 활용해 사용자가 지정한 대로 이미지를 새롭게 구성할 수 있는 기능을 제공합니다. 특히, 기존의 이미지 편집 모델들이 텍스트를 이미지에 정확하게 반영하는 데 있어 어려움을 겪는 경우가 많았던 반면, Flux 모델은 이러한 부분에서도 높은 정확성을 보여주고 있습니다. 이 글에서는 Flux 모델을 사용해 인페인팅 작업에 대해 소개하겠습니다.
이미지 Inpainting
이미지 인페인팅(Inpainting)은 이미지의 손상된 부분을 복원하거나, 특정 영역을 새롭게 그리는 기술을 말합니다. 쉽게 말해, 인페인팅은 이미지에서 일부가 결손되었거나 제거되었을 때, 해당 부분을 자연스럽게 주변과 일치하도록 채우는 과정입니다. 이 기술은 손상된 사진의 복원, 물체 제거, 이미지 보정, 혹은 이미지의 특정 영역을 새롭게 생성하는 데 사용됩니다.
최근에는 딥러닝 기반 인페인팅 기술이 발전하면서 훨씬 정교하고 복잡한 인페인팅이 가능해졌습니다. 딥러닝 모델은 이미지의 더 넓은 맥락을 이해하고, 학습된 데이터셋을 바탕으로 매우 자연스러운 결과를 생성할 수 있습니다. 이러한 모델들은 전체 장면의 일관성을 고려하며, 단순히 주변의 패턴을 복사하는 것이 아니라, 해당 장면에 적합한 의미 있는 내용을 생성합니다.
이미지 생성 모델인 Flux 모델을 활용하여 인페인팅을 수행하는 방법에 대해 알아보겠습니다. Flux 모델은 텍스트 프롬프트와 이미지의 일부를 인식하여 해당 부분을 보완하거나 새로운 요소로 대체할 수 있는 강력한 기능을 갖추고 있습니다. 사용자는 마스크를 적용해 수정할 부분을 지정하고, 프롬프트를 통해 원하는 결과를 설명함으로써, Flux 모델이 이를 바탕으로 자연스럽고 일관성 있는 이미지를 생성하도록 할 수 있습니다. 이를 통해 사용자는 사진에서 불필요한 부분을 제거하거나 창의적인 방식으로 이미지를 변형할 수 있는 강력한 도구를 활용할 수 있습니다.
사전 준비 사항
이 포스팅은 ComfyUI에서 Flux 모델을 활용하는 방법에 대한 내용입니다. 따라서 본문을 읽기 전에 ComfyUI와 ComfyUI-Manager를 미리 설치해 주시기 바랍니다.
- ComfyUI 설치 방법 : [Macus' Story] - [이미지 생성 AI] [로컬 환경] ComfyUI 이용하여 이미지 생성하기 1탄
- ComfyUI-Manager 설치 방법 : [Marcus' Story] - [이미지 생성 AI] [로컬 환경] ComfyUI 이용하여 이미지 생성하기 2탄 : ComfyUI-Manager
목차
1. 실행 환경
2. ComfyUI 사용 노드
3. 모델 다운로드 및 위치 설정
3. Flux Inpainting 노드 구성
4. 이미지 Inpainting
1. 실행 환경
- 운영체제 : Windows 11
- ComfyUI : 1.0
- Python : 3.10.0
- torch : 2.3.1 + cu121
- xformers : 0.0.27
- GPU : NVIDIA GeForce RTX 4060 Ti
2. ComfyUI 사용 노드
아래는 이번 포스팅에서 사용된 ComfyUI 커스텀 노드입니다. 모델 실행에 필수적인 노드를 "필수"로 표기하였으며, 사용에 필수적이지 않은 노드는 "선택사항"으로 표기하였습니다.
- Use Everywhere (UE Nodes) : 이미지 생성 툴에서 다양한 기능을 확장해주는 플러그인입니다. 이번 포스팅에서 이 커스텀 노드의 "Anything Everywhere"를 사용하였으며, 해당 노드에 연결된 값은 선을 직접 연결하지 않아도 자동으로 연결되도록 설정됩니다. (선택사항)
- rgthree's ComfyUI Nodes : ComfyUI 인터페이스에서 이미지 생성과 편집 작업을 보다 유연하게 수행할 수 있도록 지원하는 커스텀 노드 세트입니다. 이번 포스팅에서는 이미지 비교를 위한 Image Comparer 노드와 LoRA 모델을 로드하기 위한 Power Lora Loader 노드를 사용하였습니다. (선택사항)
- ComfyUI Impact Pack : ComfyUI에서 이미지 생성 및 편집을 위한 다양한 고급 기능을 제공하는 커스텀 노드 모음입니다. 이번 포스팅에서는 이미지 마스킹 옵션을 설정하기 위해 Gaussian Blur Mask 노드를 사용하였습니다. (선택사항)
3. 모델 다운로드 및 위치 설정
아래 모델들은 Flux 모델 fp8버전 모델이고, VAE 모델과 clip 모델은 이전 포스팅에서 사용했던 모델과 모두 동일합니다. 만약 이 모델들을 이미 가지고 있다면 이 과정은 생략하시길 바랍니다.
1) flux-1-dev-fp8 모델 다운로드 및 위치 설정
아래 허깅페이스에서 해당 모델을 다운받을 수 있습니다.
- flux-1-dev-fp8 모델 허깅페이스 : https://huggingface.co/Kijai/flux-fp8/tree/main
모델 파일을 다운로드가 완료되셨으면, 해당 파일을 아래 경로에 있는 unet 폴더로 이동시켜 주세요.
(ComfyUI 폴더) → (models 폴더) → (unet 폴더)
2) VAE 모델 다운로드 및 위치 설정
아래 허깅페이스에서 해당 모델을 다운받을 수 있습니다.
- black-forest-labs 허깅페이스 : https://huggingface.co/black-forest-labs/FLUX.1-schnell/tree/main/vae
모델 파일을 다운로드가 완료되셨으면, 해당 파일을 아래 경로에 있는 vae 폴더로 이동시켜 주세요.
(ComfyUI 폴더) → (models 폴더) → (vae 폴더)
3) CLIP 모델 다운로드 및 위치 설정
아래 허깅페이스에서 해당 모델을 다운받을 수 있습니다.
- FLUX.1 clip 모델 허깅페이스 : https://huggingface.co/comfyanonymous/flux_text_encoders/tree/main
모델 파일을 다운로드가 완료되셨으면, 해당 파일을 아래 경로에 있는 clip 폴더로 이동시켜 주세요.
(ComfyUI 폴더) → (models 폴더) → (clip 폴더)
4) Hyper flux 8tep lora 모델 다운로드 및 위치 설정 (선택사항)
아래 허깅페이스에서 해당 모델을 다운받을 수 있습니다
- Hyper flux 8tep lora 모델 허깅페이스 : https://huggingface.co/ByteDance/Hyper-SD/tree/main
모델 파일을 다운로드가 완료되셨으면, 해당 파일을 아래 경로에 있는 lora 폴더로 이동시켜 주세요.
(ComfyUI 폴더) → (models 폴더) → (lora 폴더)
4. Flux Inpainting 노드 구성
Inpainting을 위한 노드 구성은 아래와 같이 구성하였습니다.
현재 ComfyUI의 노드들은 텍스트 프롬프트를 기반으로 이미지를 생성하는 과정을 단계적으로 구성하고 있습니다. Load Diffusion Model과 DualCLIPLoader 노드는 이미지 생성 모델과 텍스트 인코더를 로드하여, 입력된 텍스트 프롬프트를 숫자 벡터로 변환해 이미지 생성에 반영하는 역할을 합니다. 이후 Load VAE와 Load Image 노드를 통해 이미지의 인코딩 및 디코딩을 담당하며, 업로드한 마스크 이미지를 로드해 특정 영역을 수정할 수 있게 합니다.
CLIP Text Encode (Prompt) 노드는 텍스트 프롬프트를 인코딩하여 이미지를 생성하는데, 이 과정에서 FluxGuidance는 프롬프트의 영향력을 조절합니다. InpaintModel/Conditioning과 SamplerCustomAdvanced, RandomNoise는 노이즈를 기반으로 이미지를 생성하고 수정하는 과정을 돕습니다. 특히 KSamplerSelect와 BasicScheduler는 이미지 생성의 세부 설정을 조정해 다양한 결과를 만들어 냅니다.
마지막으로, VAE Decode는 잠재 공간에서 이미지를 복구하고, Image Comparer를 통해 원본 이미지와 생성된 이미지를 비교해 결과를 확인합니다. 이러한 노드들의 조합을 통해 텍스트와 마스크 정보를 반영한 이미지를 점진적으로 생성하는 구조를 구성하고 있습니다.
Flux Inpainting 노드 구성 파일
5. 이미지 Inpainting
위와 같이 노드를 구성하고 샘플 이미지를 사용하여 Inpainting을 진행하였습니다. 이때 사용한 프롬프트는 "red blouse, green 'Marcus' text printed, front view"입니다. 기존에 있던 옷의 색상을 빨간색 블라우스로 변경하고, 'Marcus'라는 녹색 텍스트를 전면에 인쇄하는 것을 목표로 했습니다. 이러한 프롬프트는 모델이 색상과 텍스트 배치에 대한 명확한 정보를 제공받아 이를 기반으로 이미지의 수정된 영역을 자연스럽게 생성하게 합니다.
결과적으로, Flux 모델은 텍스트와 마스크 정보를 효과적으로 반영하여 사용자가 요청한 색상과 텍스트를 적용한 이미지를 생성했습니다. Inpainting 과정에서 특히 중요한 부분은, 모델이 주변 맥락과 일치하도록 생성된 부분을 잘 융합하는 것입니다. 모델은 빨간색 블라우스와 그 위의 녹색 텍스트가 주변 환경과 조화를 이루며 자연스럽게 표현될 수 있도록 이미지의 전체적인 색상, 질감, 빛의 방향 등을 고려해 수정 작업을 수행했습니다. 이를 통해 사용자는 기존 이미지에서 불필요한 부분을 제거하고, 새로운 디자인 요소를 추가하여 더욱 창의적인 결과물을 얻을 수 있었습니다.
또한, 다른 모델들에서는 텍스트를 이미지에 정확히 반영하는 데 있어 많은 어려움이 있었으나, Flux 모델을 사용할 때는 텍스트가 정확하고 선명하게 표시되는 것을 확인할 수 있었습니다. Flux 모델을 활용한 Inpainting 작업은 텍스트의 정확성뿐만 아니라, 원하는 스타일이나 디자인 요소를 효과적으로 반영할 수 있는 강력한 도구임을 보여주었습니다. 이를 통해 이미지 생성의 복잡한 요구 사항도 보다 효율적이고 만족스럽게 해결할 수 있었으며, Inpainting 작업의 정확도와 유연성을 높이는 데 있어서 큰 이점을 제공하였습니다.
'ComfyUI > 이미지 수정' 카테고리의 다른 글
[이미지 생성 AI] [로컬 환경] ComfyUI 이용하여 이미지 수정하기 3탄 : Outpainting (Flux + SDXL) (0) | 2024.11.18 |
---|---|
[이미지 생성 AI] [로컬 환경] ComfyUI 이용하여 이미지 수정하기 1탄 : Flux-Upscaler (1) | 2024.10.10 |