Hires Fix나 Inpaint같은 기능을 하나의 워크플로우에 작성하고 필요할 때만 쓰도록 스위치를 만들어 보자.


WebUI의 경우는 유저 친화적 이라 필요한 기능을 체크 하는것 만으로 쉽게 켜고 끌 수 있다

ComfyUI는 이름값 못하게 전혀 유저 친화적 이지 않아서 이런 기능을 제공하지 않는다.


일단 예시를 보자

(위 이미지를 ComfyUI에서 로드하면 세팅된 워크플로우를 사용할 수 있다)


예제로 이미지 업스케일을 이용한 Hires Fix 워크플로우에 스위치를 추가했다.


스위치를 만들기 위해 사용할 노드는 Reroute다.


빈 곳을 더블클릭 하면 노드 검색 하는 창이 뜨는데 Reroute를 검색하면 나온다


이렇게 생겼다.

어떤 값이든 받아서 그대로 내보내는 라우터 역할을 하는 노드다


대충 이런 식으로 4개를 배치하자.


글로 설명하기 어려워서 움짤로 대체한다.

노드 연결은 이렇게 해주면 된다.


생성이 완료된 이미지값을 Hires Fix에 배치한 라우터에 연결하고 여기서 다시 업스케일 노드로 연결한다.

이러면 생성된 이미지가 Hires Fix쪽으로 전달된다.


그리고 다시 라우터에서 우측에 배치한 라우터중 Off라 써진곳으로 연결한다.


On이라고 써진 라우터는 Hires Fix가 완료된 이미지와 연결한다.


마지막으로 Hires Fix라고 써진 라우터는 Save Image 노드에 연결해주면 끝난다.


사용법은 간단하다


 

On, Off를 선택하여 원하는 곳을 연결 시키면 된다.


작동 순서를 보자.

Off에 연결을 하면 위와 같이 이미지가 전달된다.

생성된 이미지가 라우터를 통해 Save Image 노드까지 바로 연결되므로 Hires Fix가 작동하지 않는다.


반대로 On에 연결하면 위 처럼 Hires Fix를 진행 후 Save Image 노드로 이미지가 전달된다.



왜 Hires Fix쪽으로 이미지가 전달 되었는데 Off에 연결하면 입력을 받지 않을까?

이유는 On라우터 에서 연결이 끊어져 있는데, 샘플러 노드는 데이터의 도착 지점이 지정되지 않으면 애초에 작동을 하지 않기 때문이다.


이런 방법으로 여러 기능들을 모듈화 하여 하나의 워크플로우에 모두 집어넣고 간단히 스위치 조작으로 사용할 수 있다.


덤으로 스위치를 사용하지 않고 그냥 Hires Fix노드들을 모두 바이패스 시켜도 된다.

나중에 워크플로우에 이것저것 집어 넣다 보면 복잡해지는데 불편해서 나는 각각 스위치를 만들어서 쓰고있다.



다 작성하고 생각난 건데 Reroute 노드는 기본적으로 이름을 변경할 수 없으므로 예제 처럼 On, Off 라고 표시되지 않는다.


확장 설치로 기능이 추가된 건데 어떤 확장인지 확인되는 대로 글을 수정할 예정임


수정.

https://github.com/failfa-st/failfast-comfyui-extensions
이 확장에 해당 기능이 포함되어 있음.



(ComfyUI) 가장 기본적인 이미지 생성 워크플로우 가이드

(ComfyUI) Hires Fix 워크플로우 가이드

(ComfyUI) 로라 적용하기

(ComfyUI) img2img 워크플로우 가이드

(ComfyUI) Inpaint 워크플로우 가이드

(ComfyUI) 컨트롤넷 적용하기

(ComfyUI) 원하는 기능을 켜고 끄는 스위치 만들기