Ultimate SD Upscale 사용법 및 업스케일 모델 다운로드

본 글에서는 ComfyUI에서 Ultimate SD Upscale 사용법과 대표적인 업스케일 모델 다운로드 방법을 알아보도록 하겠습니다.

Ultimate SD Upscale ComfyUI 버전 설치

본래 Ultimate SD Upscale은 제작자 Coyote-A가 Webui용으로 배포한 버전이며, 제작자 ssitu의 이름으로 ComfyUI에서도 사용 가능한 버전이 배포되고 있습니다. 따라서 우리는 ComfyUI에서 아래의 ssitu 제작자 버전을 찾아 커스텀 노드를 설치해줘야 합니다.

깃허브 주소 : https://github.com/ssitu/ComfyUI_UltimateSDUpscale

Ultimate SD Upscale 깃허브 페이지

Ultimate SD Upscale 사용법

Ultimate SD Upscale 사용법을 살펴보기 앞서 그 작동 원리를 먼저 이해하면, 각각의 설정값이 어떤 의미를 갖는지 조금더 직관적으로 파악할 수 있습니다. 아래에서는 작동 원리와 설정값에 대해 먼저 살펴본 뒤, 업스케일을 진행하는 각각의 경우에 대해 자세히 알아보겠습니다.

Upscale 작동 원리

기본적으로 Ultimate SD Upscale 노드는 사용자가 입력한 업스케일러 모델을 이용해 이미의 크기를 확대한 다음, 확대된 이미지를 다시 작은 타일로 분할하고, 이 분할된 타일 이미지들을 다시 인페인트하여 합하는 방식으로 업스케일이 진행됩니다. 또한 만약 노드 설정값 중 Seams fix mode를 활성화한 경우, 각각의 작은 타일들간의 연결부위를 따라 다시 한 번 인페인트를 진행하여 자연스러운 이미지를 만들도록 동작합니다.

📌Ultimate SD Uplscale 동작 순서

1.업스케일 모델로 원본 이미지를 확대

2.확대된 이미지를 타일로 쪼갠 뒤 각각의 타일을 인페인트

3.타일과 타일 사이 경계를 다시 한 번 더 인페인트

노드 설정값 분석

기본적인 Ultimate SD Upscale 사용법은 위와 같이 해당 노드를 새로 생성해 잠깐만 살펴보면 쉽게 파악할 수 있습니다. 먼저 노드의 입력단을 살펴보면 다음과 같습니다.

Ultimate SD Upscale 노드 클로즈업
  • image : 업스케일을 진행할 픽셀 이미지 입력 노드
  • model : 스테이블 디퓨전 체크포인트 모델
  • positive : 긍정 프롬프트
  • negative : 부정 프롬프트
  • vae : vae
  • upscale_model : 업스케일을 진행할 모델

출력단에는 이미지(image) 하나만 존재하며, 이는 업스케일이 완료된 이미지를 출력하기 때문입니다. 노드 하단의 설정값들을 순서대로 살펴보겠습니다.

  • upscale_by: 업스케일 배율
  • seed: 인페인트 진행을 위한 시드값
  • control_after_generate: 각 업스케일 진행 이후 시드값 변화 제어
  • steps: 인페인트 스텝
  • cfg: cfg
  • sampler_name : 인페인트 진행을 위한 샘플러
  • scheduler : 인페인트 진행을 위한 스케쥴러
  • denoise : 인페인트 디노이즈 강도
  • mode_type : 타일 이미지 처리 방식(아래에서 자세히)
  • tile_width : 타일 조각 너비(2k 기준 512px 권장)
  • tile_height : 타일 조각 너비(2k 기준 512px 권장)
  • mask_blur : 타일 마스킹 블러값
  • tile_padding : 인접타일간 서로의 영향을 고려할 픽셀값
  • seam_fix_mode : 경계 수정 진행 모드(아래에서 자세히)
  • seam_fix_denoise : 경계 수정 디노이즈 강도
  • seam_fix_width : 경계 수정 인페인트 너비
  • seam_fix_mask_blur : 경계 수정 마스크 블러값
  • seam_fix_padding : 경계 수정 인접타일 영향 고려 픽셀값

설정값을 쭉 살펴보면 크게 설정이 3개 영역으로 나뉜다는 것을 눈치챌 수 있습니다. 첫 번째 영역은 업스케일 모델을 설정을 해주는 부분(upsclae_by), 두 번째 영역은 샘플러 설정 및 타일 인페인트 설정(seed~ tile_padding) 부분, 그리고 마지막 영역은 경계 수정 설정(seam_fix_mode ~ seam_fix_padding) 부분입니다. 각 영역별 구체적인 설정은 아래의 업스케일 경우에 따라 살펴보겠습니다.

Image to Image

가장 먼저 이미 이미지가 존재하고 해당 이미지를 단순 업스케일 진행하는 경우입니다. 이 때는 이미지를 다시 그릴 필요(인페인트)가 없기 때문에, 동작 원리 상으로는 원본 이미지와 업스케일 모델만 할당해주면 원본 이미지를 업스케일 하는 것이 가능합니다. 하지만, Ultimate SD Upscale 노드의 입력값이 할당되지 않으면 오류가 발생하기 때문에, 모든 입력값을 할당해준 뒤, 아래와 같이 mode_type을 None으로 설정하고 업스케일을 진행하면 됩니다.

mode_type 설정

물론 seam_fix_mode 또한 진행하지 않으므로, 아래와 같이 None으로 설정해주신 뒤 Queue Prompt를 눌러 업스케일을 진행하시면 됩니다. 체크포인트 모델, 프롬프트, vae등은 사실상 의마가 없으므로, 연결만 해주셔도 무방합니다.

Ultimate SD Upscale 사용법 - 원본 이미지를 업스케일하는 워크플로우

업스케일 모델 다운로드

아래에서는 스테이블 디퓨전에서 자주 사용되는 업스케일 모델을 다운받을 수 있습니다.

Text to Image

두번째로는 T2I로 생성한 이미지를 곧바로 Ultimate SD Upscale로 업스케일하는 경우입니다. 이 때는 2단계, 즉 먼저 업스케일 모델로 이미지를 업스케일한 뒤, 업스케일 된 이미지를 타일로 나눠 각 타일을 인페인트 진행한 뒤 다시 합하는 작업이 수행됩니다. 따라서 mode_type을 Linear 또는 Chess로 설정해주셔야 합니다.

두 모드의 차이점이라면, Linear는 인접한 각 타일을 순서대로 하나하나 인페인트 진행하는 방식이고, Chess는 체스판처럼 하나 진행 후 인접부위가 없는 대각선 타일을 인페인트 진행하는 방식입니다. 체스판 형식으로 인페인트를 진행하는 것이 타일간 경계에 발생 가능한 부자연스러움을 줄이는 방식이라고 안내되어 있지만, 경험상 두 방식에 큰 차이는 없으므로, 대부분의 경우 Linear 모드로 진행하셔도 무방합니다.

Ultimate SD Upscale 사용법 - T2I 이미지를 업스케일하는 워크플로우

기타 샘플러 설정은 T2I를 진행할 때 사용한 설정을 동일하게 적용해줍니다. 같은 샘플러, 스케쥴러, 시드번호 등을 설정하여 일관성을 유지하고, 디노이즈 값은 원본과 변화 없이 해상도만 올릴 경우 0.15 ~ 0.2 사이 값을, 원본을 유지하면서 이미지에 디테일을 조금 추가하고 싶은 경우 0.35 정도를 권장하고 있습니다. 예시에서는 이미지를 그대로 업스케일 할 예정이므로 0.2를 입력했습니다. 아래는 원본 이미지와 본문에서 소개드린 Ultimate SD Upscale 사용법에 따라 업스케일 진행이 완료된 이미지를 비교하는 영상입니다.

Ultimate SD Upscale Result Comparison Video

먼저 위 설정으로 업스케일을 진행한 뒤 경계면에 얼룩이 심하거나, 육안으로 타일의 경계가 보여 추가적인 보정이 필요한 경우라면 Seam_fix_mode도 설정해줍니다. Seam_fix_mode는 3가지 선택지가 있으며, 각 모드별로 이미지를 처리하는 방식이나 순서에 조금의 차이가 있습니다. 컬러, 구도, 등 원본 이미지에 따라 경계 적합한 처리방식이 다를 수 있으므로, 이 때는 직접 세가지 모드를 모두 시도해보고, 가장 얼룩이 덜 지고 자연스러운 방식을 사용해야 합니다.