... 이 워크플로우를 뜯어서 뭐가 뭔지 하나씩 알아보는 시간이다.

맨 밑에 두 그룹은 프레임 합성이라서 설명 안할거임 ㅎㅎㅎ



시작하기에 앞서서... 먼저 워크플로우를 전부 날것 그대로인 상태로 풀어헤치기로 했다.

공유용은 웬만해서는 깔끔하게 보이려고 정렬해놓은 거고... 설명을 위해서는 단계별로 뜯어야 편하니까.


1. 온갖 기본 사항 불러오기.

생성의 기본이 되는 불러오기 단이다.

모델, 클립세트, VAE, 컨트롤넷은 어차피 한번 불러오면 계속 쓰기 때문에 전부 Anything Everywhere 노드로 처리했다.


1-1 Anything Everywhere가 뭐임?

중복해서 여기저기 사용해야 하는 연결을 간편하게 해주는 노드임.

예를 들어, 모델을 연결해놓으면 모델이 필요한 모든 노드에 굳이 연결 안해도 알아서 모델을 넣어줌. ComfyUI는 입력 속성이 있기 때문에 해당 입력 속성에 전부 꽂아준다고 생각하면 됨.



2. 프롬프트 입력 및 샘플러 노드

처음보면 이게 뭐냐 싶을 정도로 복잡해보이는 노드 뭉치인데...

사실 하나씩 뜯어보면 진짜 별거 없음.

회색 노드는 바로 옆 노드의 원본 노드임. 이름 바꿔서 혹시나 모를까 싶어 보여주려고 넣음.


SDXL Prompt Styler Advanced 노드는 긍정프롬 2개하고 부정프롬 1개를 입력할 수 있게 만든 노드임. 추가로 원하는 스타일 프리셋 프롬을 추가하는 기능이 있음.


이거 자체로 바로 Conditioning이 되는건 아니고, Text to Conditioning 노드를 사용해서 샘플러에 먹여줘야함.


내가 만든 워크플로우는 이 과정에서 다른데서 따온 프롬을 합쳐서 Conditioning을 진행하고, 아래와 같은 프롬을 합침.

ㄱ. text positive g

ㄴ. 작가 프롬.

ㄷ. text positive l

ㄹ. WD14 태거에서 추출한 프롬

ㅁ. 배경 프롬.

이 순서로 텍스트를 콤마로 구분해서 합침.

노드가 복잡해보이는 이유는, 생성과 보정(리파인)에 작가를 다르게 넣기 때문임.

하나만 있어도 문제 없지만, 자세를 잘살리는 작가로 생성하고 디테일이 좋은 작가로 보정한다...고 보면 될듯. 물론 마음대로 되는 건 아니다만.


2-1 Pack SDXL Tuple

내가 쓰는 샘플러 노드하고 한세트인 패키징 노드임.

생성과 보정에 필요한 기본 세트를 한번에 묶어서 샘플러로 보내주는 역할.


2-2 Ksampler SDXL (Eff.)

생성과 보정을 동시에 할 수 있는 샘플러 노드.

패키징 노드 아니었으면 안썼을거 같음.

디노이즈 값을 설정하는게 안된다....

바꿀 수 있으면 패키징 노드하고 같이 다른걸로 바꿔서 쓰는걸 추천.


2-3 Seed Everywhere

시드를 생성해서 시드를 받는 위치에 보내주는 노드다.

인풋이 Seed로 설정되어있으면 연결 안해도 간다.

기왕이면 그림 하나를 동일한 시드로 맞추고 싶어서 넣은거임.


3. i2i 및 컨트롤넷

별로 어려울거 없는 부분.

이미지를 불러온다.


3-1 WD14 태거로 프롬프트 추출.

추출후 2번의 ㄹ항목으로 텍스트를 보냄.


3-2 이미지 리사이즈.

그냥 넣으면 가끔 사이즈도 안맞고 하니, 원하는 사이즈로 변경하는 노드.


3-3 VAE Encode

크기를 바꾼 이미지를 인코딩해서 Latent로 바꿔주는 노드.

1번 항목의 아래쪽 t2i, i2i 스위치로 연결되어있다.


3-4 DWPose Estimator

이미지를 컨트롤넷 오픈포즈용 뼈대로 만들어주는 노드.

나는 몸하고 손을 설정했다.

얼굴은 하나 안하나 다를게 없어서 그냥 안함.


3-5 Apply Controlnet

생성한 뼈대를 conditioning 데이터에 합쳐주는 노드.

ControlNet 모델은 연결 안해도 1번에서 불러온거 그대로 씀.


4. 손 보정하기. (효과 별로 없음, 해골물 노드)

원래는 페이스 디테일러인데, 인식 모델만 손으로 교체한거다.

어차피 이걸로 쓰면 융화가 영 별로라 다시 샘플링 해야함.


4-1 Hand P/N Prompt

다 아는 긍정/부정 프롬 입력부.

손만 취급하는 부분이라 간단하게 손 관련 프롬만 있음.


4-2 ToBasicPipe

패키징 노드다.

모델, 클립세트, VAE, 긍정/부정 프롬을 모아서 디테일러까지 보내는 노드.


4-3 UltralyticsDetectorProvider

디텍터 모델을 불러오는 노드.

빨간 X가 있는 부분은 불러온 모델에 해당하는 연결이 아니라는 뜻임.

나는 bbox 모델을 불러왔으니, bbox 연결만 해주면 됌.

반대로 segm 모델을 불러왔으면 segm만 연결하면 되는 것.


4-4 SAM Loader

사실 뭔지 모름.

있어야 한다고 해서 넣었음.

없으면 작동을 안하겠지...? 아마도?


4-5 BasicPipe -> DetailerPipe

이것도 패키징 노드임.

베이직 파이프에서 받은거에 더해 디텍터, sam모델까지 합쳐서 디테일러 노드로 보내는 역할.


4-6 HandDetailer (pipe)

음... 손을 보정해주는 노드임.

대충 설명하자면...

이미지에서 손을 탐색하고 그 부분만 잘라내서 해상도를 올려 다시 그리고 원래 사이즈로 되돌려서 그림에 덮어씌운다.

큰 효과는 없는듯.


5. 배경 생성 및 합성

원래 만들었다가 지웠다가 다시 만들어본 노드임.

여기는 생성 노드와 크게 다르지 않아서 대충 설명할거임.


ㄱ. 손 보정까지 거친 이미지에서 배경을 제거하고

ㄴ. 새로 생성한 배경에 얹어준다.

ㄷ. 배경에 얹어서 이상해진 그림을 다시 샘플링한다.

ㄹ. 중간에 컨트롤넷이나 마스크가 들어가지만 신경쓰지 말자.


5-1 Image Overlay

두 종류의 이미지를 겹치게 하는 노드.

마스크를 이용하면 필요한 부분에만 겹치게 할 수 있다.


6. 얼굴 보정

4번의 손 보정과 같은 과정임.

디텍터 모델이 얼굴이냐 손이냐 차이만 있음.

Upscale 부분은 원래 저장에 들어가야 하는데, 자리좀 깔끔하게 맞춘다고 여기 들어가 있었다...


7. WD14 Tagger

솔직히 말하자면 없어도 됌.

그냥 생성한 이미지를 WD14 Tagger 한번 돌려서 EXIF 저장할때 같이 넣어보려고 만든 부분임.

지워도 된다.


8. 저장

음... 말 그대로 저장하는 부분임.

날짜별로 구분하기 편하게 날짜에 맞춰서 폴더를 생성하고, 분단위로 숫자를 생성해서 파일 이름으로 쓴다.

그냥 딱 그정도 용도임.

원래는 webp도 썼는데, 읽어올때마다 PC가 아주 난리나서 그냥 PNG로 저장하기로 함.


중간에 포토프레임 들어가 있는건, 원래 프레임 넣은 그림도 구분해서 저장하려고 하다가... 깜빡잊고 안지운거임.

그냥 무시해도 됌.


대충 내가 만든 워크플로우를 한번 뜯어보았다.


궁금한거 있으면 댓글 달아놓으시고, 즐겁게 ComfyUI 워크플로우를 만들자