Skip to content

ComfyUI에서 이미지 인페인팅(Inpainting)하는 방법

이미지 부분 재생성은 수정이 필요한 이미지의 특정 부분을 다시 생성하거나 다시 그리는 과정을 의미합니다.

ComfyUI Github 저장소의 부분 재생성 workflow 예제에서 부분 재생성의 예를 찾을 수 있습니다. 하지만, 제 사용에서는 VAE Internal Patch Encoder의 효과가 그다지 좋지 않았습니다. 이 글에서는 VAE Internal Patch EncoderLaton Noise Mask를 비교하고, 그에 따른 예제 효과를 보여줍니다.

준비 단계: 부분 재생성을 위한 전제 조건

먼저, 수정이 필요한 이미지의 영역을 표시해야 하며, 이는 마스크를 그려서 달성됩니다. 마스크의 역할은 모델에게 우리가 수정하고자 하는 특정 위치를 알려주는 것입니다.

마스크 그리기

이미지 편집의 시작 단계에서 수정이 필요한 영역을 지정해야 합니다. 마스크를 그려서 모델에게 수정 범위를 알려줍니다.

워크플로우 노드 업데이트

기존 VAE 인코더는 마스크를 지원하지 않기 때문에, 마스크를 통합할 수 있는 노드를 선택해야 합니다. 이 글에서는 VAE Internal Patch EncoderLaton Noise Mask를 사용하는 것을 추천하며, 각각의 구현에 고유한 특성이 있습니다.

구현 과정: 부분 재생성을 위한 세부 단계

1단계: 이미지 로딩 및 마스크 그리기

  • Load Image 노드에서 이미지를 가져옵니다.
  • 마스크 도구를 사용하여 특정 영역에 그린 후, 이를 후속 노드에 입력하여 재생성에 사용합니다.

2단계: ComfyUI 부분 재생성 워크플로우 구축

특정 워크플로우에 대해서는 이 글에 첨부된 워크플로우 파일을 다운로드하여 실행하세요.

  • 잠재 노드에서 이미지와 마스크를 선택하고 K Sampler에 연결합니다.
  • “cat”을 “dog”로 변경하는 등의 프롬프트 단어를 조정하고, 새로운 랜덤 시드를 설정합니다.
  • 이미지 생성을 수행하고 결과의 변화를 관찰합니다.

3단계: 부분 재생성을 위한 두 가지 ComfyUI 노드의 효과 비교

  • VAE Encode For InpaintSet Latent Noise Mask를 적용하여 부분 재생성을 수행합니다.
  • 서로 다른 디노이징 값에서 두 기술의 성능을 비교합니다.
    • VAE Encode For Inpaint는 낮은 디노이징 값에서 마스크된 영역의 내용이 왜곡될 수 있습니다.
    • Set Latent Noise Mask는 낮은 디노이징 값에서 원본 이미지와 높은 유사성을 유지할 수 있습니다.
  • 두 기술의 적용 시나리오와 장점을 논의합니다.
    • VAE Encode For Inpaint는 원본 이미지와 관련 없는 새로운 콘텐츠를 생성하는 데 적합합니다.
    • Set Latent Noise Mask는 원본 이미지의 특성을 유지하면서 지역적 조정을 하는 데 적합합니다, 예를 들어 동물의 종류를 교체하는 경우.