AI 이미지/ComfyUI

ComfyUI - Visual Area Conditioning 커스텀 노드

하늘이푸른오늘 2023. 10. 29. 13:47

이 커스텀 노드를 사용해서 인공지능 이미지를 생성하기 위해서는 먼저 ComfyUI를 설치해야 합니다. ComfyUI 설치 및 간략한 사용방법은 이 글을 참고하세요.

ComfyUI를 설치한 후에는 ComfyUI Manager 커스텀 노드를 설치하는 게 좋습니다. ComfyUI Manager 커스텀 노드 설치 방법은 이 글을 참고하세요. 

이 글에서 다루는 내용은 아래와 같습니다.

Visual Area Conditioning 커스텀 노드 설치

커스텀 노드는 Github 주소를 사용해 직접 설치하거나, ComfyUI Manager를 통해 설치할 수 있습니다. 자세한 방법은 여기를 읽어보시기 바랍니다.

Visual Area Conditioning 커스텀 노드 사용법

[MultiAreaConditioning] 커스톰 노드를 이용하면 구역분할 프롬프트(ComfyUI의 예, AUTOMATIC1111의 예)를 쉽게 적용할 수 있습니다. 아래는 가장 기본적인 구성입니다. 

MultiArea Contitioning 커스톰 노드

1. 이미지 크기 지정

가장 먼저 해야 할 일은 이미지 크기를 지정하는 것입니다. 위 그림에서 resolutionX/resolutionY를 변경하면 됩니다. 아쉬운 것은 이 위젯들을 입력 슬롯으로 바꿀 수 없어서 이미지 크기 자동지정 노드(CR SD1.5 Aspect Ratio)와 함께 사용할 수 없네요. 

2. 구역 갯수 늘리기

입력 슬롯에는 conditioning0, conditioning1 등 2개가 있습니다. 이 슬롯은 각각 [CLIP Text Encode] 노드 등의 프롬프트 입력노드와 연결해야 합니다. 구역의 갯수를 늘리려면, [MultiAreaConditioning]  노드를 우클릭하여 메뉴를 부르고, 아래와 같이 "insert input above 0" 또는 "insert input below 0" 버튼을 눌러주면 됩니다. 0이라는 번호는 현재 편집중인 슬롯입니다(아래를 보세요) - 아래에 있는 swap/remove를 사용하면 이동/삭제가 가능합니다.

프롬프트 영역 추가

3. 프롬프트 적용 영역 지정

프롬프트가 적용되는 영역은 아래쪽에 있는 입력 위젯을 사용해 편집할 수 있습니다. 먼저 해당되는 index의 좌우 삼각형을 눌러 적용할 구역을 지정합니다.아래는 index 를 1로 지정할 때의 모습입니다.  index를 바꿔주면 좌측과 같이 연결된 프롬프트가 강조되므로 쉽게 구분할 수 있습니다.

[MultiAreaConditioning] 편집1

4. 영역 지정

다음으로  x와 y 의 좌우 삼각형을 눌러서 영역의 시작점을 변경하고, width/height를 눌러 면적을 지정합니다. 눌러보면 아실겁니다. 아래는 (0,192)에서 (192, 384)의 정사각형에 (full moon)이라는 프롬프트를 지정한 것입니다.

프롬프트와 프롬프트 적용 범위 변경

이런 식으로 각각의 영역과 프롬프트를 지정하면 됩니다.

Visual Area Conditioning 워크플로

아래는 이 커스톰 노드 사이트의 예제에서 HiRes Fix 등 복잡한 부분은 삭제하고 꼭 필요한 내용만 남긴 워크플로입니다. 

Visual Area Conditioning 노드 워크플로

유의할 부분은 아래와 같이 [Empty Latent Image] 노드를 [MultiAreaContioning]노드 다음에 배해서 resolutionX/resolutionY를 width/height로 연결해줘야 한다는 점입니다. (입력 위젯을 입력 슬롯으로 바꾸려면 해당 노드를 우클릭해서 convert 하시면 됩니다)

Visual Area Conditioning 노드 워크플로 중 중요부분

 이 커스톰 노드 사이트에 들어가보면 Hires Fix 기법을 사용해 좀 더 나은 이미지를 생성하는 워크플로도 있으니 참고하세요. 그리고 이 [MultiAreaConditioning] 노드를 사용해 구역 프롬프트를 구현하는 방법은 ComfyUI - 영역 분할 프롬프트 사용 방법을 읽어보시기 바랍니다. 

Multi Latent Composite 커스톰 노드 사용법

[MultiLatentComposite] 노드는 각각 생성한 잠재 (Latent) 이미지를 합성하는 방식입니다. 즉, 각 부분별로 잠재 이미지를 생성하고, 이 이미지들을 [MultiLatentComposite] 노드를 사용해 적절한 위치에 합성하고, 이렇게 생성된 잠재 이미지를 다시 잡음 제거 샘플링하는 방식으로 이미지를 생성하는 방식입니다. 

아래는 기본적인 사용방법입니다. 맨 위는 배경이 될 이미지, 즉 전체 이미지이고, 나머지는 각각 부분을 담당하는 잠재이미지입니다. 이 그림에서는 그냥 [Empty Latent Image]를 사용했지만, 샘플링을 통해 만든 이미지 혹은 기존의 이미지를 인코딩한 것 등의 이미지를 가져옵니다. 

[MultiLatentComposite] 노드

부분 이미지들은 [MultiLatentComposite] 노드의 아래쪽에서 위치를 지정해서 (크기는 원래 잠재 이미지의 크기를 사용하므로 변경할 수 없습니다) 배치를 지정합니다.

출력은 역시 잠재 이미지가 되며, 이것을 그냥 디코딩하면 잡음 이미지만 나오게 되므로, 다시한번 [KSampler] 노드 등을 사용해 잡음을 제거하면 이미지가 생성됩니다.

그런데... 저는 구지 이렇게 해야할까... 싶네요. 그냥 위에서 설명한 [MultiAreaConditioning] 노드만으로도 동일한 효과를 거둘 수 있을 것 같아서요. 나중에 혹시 필요하면 다시 검토해보겠지만, 지금은 그냥 이 정도로 마치겠습니다.

민, 푸른하늘