ResAdapter는 이름 그대로 해상도(Resolution)를 적절한 값으로 적용(Adapter)해주는 역할을 합니다. 본문에서는 ComfyUI에서 SD1.5 체크포인트 모델을 이용해 SDXL 해상도의 이미지를 생성해보고, 적용 전의 이미지와 비교해보겠습니다.
ResAdapter의 필요성
1024×1024 해상도 기반의 SDXL 모델이 처음 등장하기 전까지 512×512 해상도 기반의 SD1.5 파인튜닝 모델이 전세계적으로 활발하게 학습되고 공유되면서, 모델 자체의 디테일과 표현력이 굉장한 수준으로 상승했습니다. SDXL은 기본적으로 SD1.5보다 높은 해상도의 이미지를 학습한 모델이기 때문에, 이론상 훨씬 디테일이 좋을 수 밖에 없고, 실제로 현재 SDXL 또한 출시된 후 시간이 꽤 흘러 상당한 퀄리티를 자랑하는 파인튜닝 모델들이 등장했지만, SDXL을 원활히 활용하기 위해 필요한 높은 요구사항 때문에 여전히 SD1.5 기반으로 작업을 하는 분들이 많습니다.
더불어 특정 기능의 경우 SDXL을 아직 지원하지 않는 경우도 많습니다. 예를 들어 IC-Light는 여전히 SD1.5 모델에서만 동작하며, 얼마전까지만해도 SDXL 모델을 지원하는 컨트롤넷 타일 모델도 존재하지 않았습니다. 따라서 스테이블 디퓨전의 다양한 기술을 자유롭게 활용하기 위해 아직까지는 SDXL 기반의 작업을 하더라도, 중간중간 SD1.5를 거쳐야할 수 밖에 없습니다.
문제는 SD1.5 모델은 학습 해상도가 512×512 기반이므로, 이 이상의 해상도를 바로 생성하도록 하면, 위의 예시 이미지와 같이 해상도에 따라 입력받은 프롬프트를 반영한 그림을 2번, 3번 또는 4번 등 반복해서 겹쳐 그리게 됩니다. 이때문에 종종 기괴한 이미지가 생성되거나, 피사체가 2개 3개 복제되어 나타나는 등의 문제가 발생하곤 합니다. ResAdapter를 이용하면 SD1.5 체크포인트로 SDXL 해상도(1024×1024)에 해당하는 이미지를 그리더라도 이렇게 이미지가 복제되거나 연결이 자연스럽지 못한 부분을 방지하고 정상적인 이미지를 생성할 수 있습니다.
ResAdapter 설치 및 모델 다운로드
먼저 본 글에서는 ResAdapter를 ComfyUI에서 활용할 계획입니다. 따라서 ResAdapter 커스텀 노드를 먼저 설치해주셔야합니다. ComfyUI Manager에서 검색하거나 또는 아래 주소를 참고해 깃 레포를 깃클론하여 수동으로 직접 설치해주시기 바랍니다.
Git Repo : https://github.com/jiaxiangc/ComfyUI-ResAdapter.git
ComfyUI Manager 및 커스텀 노드 설치 방법에 대해 익숙하지 않은 분들은 아래 글을 참고하여 진행하시기 바랍니다.
ResAdapter 이미지 생성
ComfyUI에서 ResAdapter를 사용하는 방법은 매우 간단합니다. 먼저 아래와 같이 노드를 추가한 뒤, 체크포인트 모델 로더의 출력단에서 model과 clip을 전달해주기만 하면 됩니다.
예시에서는 상단은 기본 워크플로우를, 하단은 ResAdapter를 적용한 워크플로우를 보여주고 있습니다. Empty Latent Image의 해상도를 1024×1024로 입력한 뒤 기본 프롬프트로 이미지를 생성해보면, ResAdapter 노드의 적용 유무에 따른 결과이미지의 차이가 확연히 드러납니다.
기본 워크플로우의 경우 512해상도 이상의 빈 잠재이미지가 주어졌기 때문에, 별다른 가이드가 없다면, SD1.5모델은 1024 x 1024 내에서 512 x 512 크기의 4개 영역을 그리지만 프롬프트를 참고해 서로 연속성을 가지고 그려야한다고 생각하고 이미지를 생성합니다. 이에 따라 2개의 병이 생성되고 말았습니다.
반면 ResAdapter를 이용하면, 처음부터 단 하나의 1024 x 1024 영역을 프롬프트를 반영한 1개 그림을 그려야한다고 인지하기 때문에, 그 형태나 모습이 완벽하지는 않지만, 그래도 1개의 병을 잘 그려내고 있습니다.
ControlNet
이번에는 컨트롤넷에서 ResAdapter를 한 번 활용해보겠습니다. 마찬가지로 워크플로우 구성은 아래와 같이 체크포인트 모델 로더 뒷단에 추가해주는 것으로 충분합니다.
예시와 같이 Canny를 구성하고, ResAdapter 노드를 Bypass 기능으로 On/Off하여 그 결과를 비교하면 다음과 같습니다. 원본 이미지의 해상도를 768×1024로 만든 뒤, 해당 이미지를 기준으로 Canny를 진행했습니다.
결과 이미지에서 보듯 기본 워크플로우(ResAdapter 노드를 Bypass 했을 때)로 진행한 결과에서는 좌측에 2장의 이미지가 합쳐진듯 경계가 보이고, 좌하단에는 의도치않은 작은 앵무새가 한 마리 더 그려진 모습입니다. 반면 노드를 ON한 상태에서 진행한 결과 이미지에서는 이런 경계선이나 의도찮은 두번째 앵무새가 나타나지 않고, 원본이미지의 형상을 잘 유지한 상태로 새로운 앵무새가 그려진 모습을 확인할 수 있습니다.
ResAdapater는 컨트롤넷뿐만 아니라 IP-Adapter 등에서도 활용이 가능합니다. 그 외 앞서 필요성에 대해 소개드린 것처럼 IC-Light와 같이 SD1.5 모델에서만 사용가능한 기술에 해상도를 더욱 키워 워크플로우를 구성해야한다면, ResAdapter를 한 번 사용해보시기를 권장드립니다.