ComfyUI 인페인트·FaceDetailer 조합|의상과 얼굴 따로 보정

ComfyUI 왕초보 가이드 25 / 29장 · 기준: ComfyUI 0.34.0 / 프런트엔드 1.49.6 · Windows x64 / NVIDIA RTX Portable. 다른 버전에서는 메뉴와 노드 표시가 다를 수 있습니다.

이 장의 실습 자료 ZIP 내려받기 (8.5MB)
JSON·입력 PNG·본문 원본 이미지를 담았습니다. 압축을 푼 뒤 본문에 적힌 파일을 선택하세요. 모델과 프로그램은 포함하지 않습니다. 본문의 WebP는 가벼운 표시용 사본이며, PNG의 작업 정보·투명도와 원본 픽셀 비교에는 ZIP 안의 PNG를 사용하세요.

코트에 빨간 꽃 장식을 만든 뒤 얼굴을 다듬고, 두 단계의 denoise를 따로 조절합니다.

1. 만들 결과

22장의 인페인트와 24장의 얼굴 디테일러를 한 작업으로 연결합니다. 24장의 가상 성인 전신 사진에서 화면 오른쪽 코트깃의 단추 부근에 빨간 꽃 장식을 만든 다음, 작은 얼굴의 눈·입 표현을 다듬습니다. 아래 세 그림은 실제 실행의 원본·중간·최종 결과입니다.

① 원본 · 24장과 같은 사진. 꽃 장식이 없고, 얼굴은 보정 전입니다.
① 원본 · 24장과 같은 사진. 꽃 장식이 없고, 얼굴은 보정 전입니다. 그림을 누르면 큰 화면으로 열립니다.
② 인페인트 후 · denoise 1.00. 코트에 꽃 장식이 생겼고 얼굴은 원본 그대로입니다.
② 인페인트 후 · denoise 1.00. 코트에 꽃 장식이 생겼고 얼굴은 원본 그대로입니다. 그림을 누르면 큰 화면으로 열립니다.
③ 디테일러 후 · denoise 0.40. 꽃 장식을 유지하며 얼굴을 다듬은 최종 832×1216 결과입니다.
③ 디테일러 후 · denoise 0.40. 꽃 장식을 유지하며 얼굴을 다듬은 최종 832×1216 결과입니다. 그림을 누르면 큰 화면으로 열립니다.
코트 수정 전 · 이번 마스크에는 깃과 단추 일부가 들어갑니다.
코트 수정 전 · 이번 마스크에는 깃과 단추 일부가 들어갑니다. 그림을 누르면 큰 화면으로 열립니다.
코트 수정 후 · 붉은 꽃잎과 잎이 생겼습니다. 마스크 안 단추 모양도 장식 일부로 바뀝니다.
코트 수정 후 · 붉은 꽃잎과 잎이 생겼습니다. 마스크 안 단추 모양도 장식 일부로 바뀝니다. 그림을 누르면 큰 화면으로 열립니다.
얼굴 보정 전 · 인페인트 후에도 이 얼굴 픽셀은 같습니다.
얼굴 보정 전 · 인페인트 후에도 이 얼굴 픽셀은 같습니다. 그림을 누르면 큰 화면으로 열립니다.
얼굴 보정 후 · 눈 주변과 입술 표현을 정돈했습니다. 원래 인상이 완전히 고정되는 기능은 아닙니다.
얼굴 보정 후 · 눈 주변과 입술 표현을 정돈했습니다. 원래 인상이 완전히 고정되는 기능은 아닙니다. 그림을 누르면 큰 화면으로 열립니다.

부분 비교는 전체 결과의 같은 좌표를 잘라 확대 표시했습니다. 꽃·얼굴에 추가 보정이나 선명화를 넣지 않았습니다. 그림을 누르면 저장된 원래 크기로 볼 수 있습니다.

설명용 흐름도
원본 + 코트 마스크 → 인페인트 → 원본 위에 합성한 중간 결과 → 얼굴 검출·부분 재생성 → 최종 결과
용어쉽게 이해하기
인페인트 · inpaint마스크로 고른 부분을 다시 그리는 작업입니다. 여기서는 사람이 정한 코트 영역에 꽃 장식을 만듭니다.
마스크 · mask수정할 곳을 알려 주는 지도입니다. 처리된 마스크의 흰 부분은 수정, 검정은 보존, 회색은 경계를 섞는 부분입니다.
FaceDetailer · 얼굴 디테일러얼굴을 자동으로 찾고, 주변과 함께 잘라 확대해 다시 그린 다음 원래 위치에 합성합니다. 내부적으로도 부분 인페인트를 사용합니다.
denoise · 노이즈 제거량그 단계에서 입력 모습으로부터 벗어날 여지를 조절합니다. 낮으면 원본 영향이 크고, 높으면 새로운 형태가 더 생길 수 있습니다.
중간 결과첫 단계가 끝난 그림입니다. 이번에는 꽃 장식이 있는 사진이 두 번째 단계의 입력이 됩니다.
seed · 시드생성에 쓰는 난수의 출발값입니다. 비교할 때 두 노드 모두 fixed로 두어 임의 변경을 막습니다.

2. 준비물

기존 SDXL Base, Impact Pack·Impact Subpack, face_yolov8m.pt를 사용합니다. 새 모델은 필요 없습니다. 얼굴 노드가 없다면 23장 준비, 디테일러 항목의 뜻이 낯설다면 24장을 먼저 확인하세요. 이번 JSON에는 LoRA·SAM을 연결하지 않았습니다.

모델공식 파일·다운로드 위치설치 폴더 안에 넣을 곳선택할 노드처음 사용
SDXL Base 1.0sd_xl_base_1.0.safetensorsComfyUI\models\checkpoints체크포인트 로드4장
얼굴 BBOX 검출 모델face_yolov8m.ptComfyUI\models\ultralytics/bboxUltralyticsDetectorProvider → bbox/face_yolov8m.pt23장
기본 실습 파일둘 곳·역할
ch25-combined.json (ZIP) 일반 워크플로 JSON. 실습 폴더에 보관한 뒤 ComfyUI에서 엽니다.
ch25-input.png (ZIP) ComfyUI/input에 넣습니다. 24장 원본과 같은 픽셀을 가진 25장용 입력입니다.
ch25-brooch-mask.png (ZIP) ComfyUI/input에 넣습니다. 코트 장식 영역을 정한 투명도 포함 PNG입니다. 크기는 입력과 같은 832×1216입니다.
  1. 탐색기에서 ComfyUI/input을 먼저 열어 둡니다. 다른 창에서 위 PNG 두 개를 복사한 뒤 input 창에 붙여 넣습니다. 파일을 복사한 다음 경로 문자열을 다시 복사하지 않습니다.
  2. ComfyUI를 이미 열어 두었다면 현재 작업을 저장한 뒤 F5로 새로고침합니다. 또는 각 이미지 로드 노드의 업로드할 파일 선택으로 해당 PNG를 지정합니다.

JSON은 노드·연결·문장·설정이 들어 있는 작업 구성입니다. 모델과 입력 PNG를 모두 포함하지 않습니다. 링크가 글자로 열리면 오른쪽 클릭 → 다른 이름으로 링크 저장으로 .json 확장자를 유지하세요.

3. 따라 하기

A. 기본 조합으로 한 장 완성하기

  1. Ctrl+O로 ch25-combined.json을 엽니다. 아래쪽 보기 맞춤으로 그룹 위치를 확인하고 줌 컨트롤에서 75% 정도로 확대해 값을 읽습니다. 화면에 보이지 않는 오른쪽 그룹은 아래 캔버스 모드 → 손을 선택하고 빈 작업판을 끌어 이동합니다. 이동 뒤에는 선택 모드로 돌아옵니다.
  2. 01 원본·모델에서 공통 SDXL Base는 sd_xl_base_1.0.safetensors, 원본 · 두 단계의 출발점은 ch25-input.png, 코트 장식 마스크 · MASK 출력은 ch25-brooch-mask.png로 선택합니다.
  3. 02 옷 문장·마스크의 인페인트 문장은 베이지색 코트 천에 빨간 장미 꽃 장식을 요청합니다. 05 얼굴 문장·검출의 디테일러 문장은 자연스러운 눈·차분한 표정·닫힌 입을 요청합니다. 두 단계의 문장을 섞지 말고 제공 JSON 그대로 둡니다.
  4. 03 인페인트 생성 → ① 인페인트 강도 · denoise의 노이즈 제거량을 1.00으로 둡니다. 숫자를 두 번 클릭해 입력하고 Enter를 누릅니다. seed 2026102501, 생성 후 제어 fixed를 유지합니다.
  5. 05 얼굴 문장·검출 → 얼굴 검출 모델은 bbox/face_yolov8m.pt를 선택합니다. 06 얼굴 재생성 → ② 디테일러 강도 · denoise의 노이즈 제거량은 0.40, seed는 2026102502, 생성 후 제어는 fixed입니다.
  6. 상단 배치 수 1에서 실행을 한 번 누릅니다. 04 중간 결과·다음 입력 → 중간 결과 · 인페인트 후에서 꽃이 생겼는지 보고, 07 최종 결과 → 최종 결과 · 두 단계 완료에서 얼굴까지 다듬어졌는지 확인합니다. 중간 PNG를 수동으로 다시 넣을 필요는 없습니다.
항목① 인페인트 KSampler② FaceDetailer
기본 denoise1.000.40
seed / 생성 후 제어2026102501 / fixed2026102502 / fixed
steps / CFG28 / 724 / 5
sampler / schedulerdpmpp_2m / karrasdpmpp_2m / karras
수정 범위제공 코트 마스크자동 검출한 얼굴
입력원본에서 자른 코트 주변인페인트 합성이 끝난 전체 사진
실제 ComfyUI 화면 · 인페인트 노이즈 제거량 1.00과 꽃 장식이 생긴 중간 결과.
실제 ComfyUI 화면 · 인페인트 노이즈 제거량 1.00과 꽃 장식이 생긴 중간 결과. 그림을 누르면 큰 화면으로 열립니다.
실제 ComfyUI 화면 · FaceDetailer 노이즈 제거량 0.40과 꽃 장식을 유지한 최종 결과.
실제 ComfyUI 화면 · FaceDetailer 노이즈 제거량 0.40과 꽃 장식을 유지한 최종 결과. 그림을 누르면 큰 화면으로 열립니다.

기본 결과는 ComfyUI/output/guide에 저장됩니다. ch25_crop-i100-d040_inpaint_…png는 중간 결과, ch25_crop-i100-d040_final_…png는 최종 결과입니다. inpaint_mask·face_mask가 붙은 흑백 파일은 범위 확인용입니다. 예시 파일명 끝의 번호는 실행할 때마다 달라집니다.

B. 두 강도가 연결되는 지점 이해하기

핵심 연결은 원본 보존 · 인페인트 합성(ImageCompositeMasked)의 IMAGE → FaceDetailer의 image입니다. 디테일러가 꽃이 생긴 그림을 받아야 합니다. 최종 저장은 FaceDetailer의 첫 image 출력(화면의 개선 이미지)에 연결합니다.

연결의미
마스크 PNG의 MASK → 범위·경계 처리마스크 파일의 색상이 아닌 투명도에서 수정 영역을 읽습니다. 이 LoadImage는 MASK = 1 − alpha이므로 투명한 원이 수정할 부분입니다.
처리한 마스크 → 생성 범위 + 원본 위 합성생성 범위를 지정하고, 생성 후에도 선택 부분만 원본 위에 얹습니다. VAE 변환만 거친 전체 그림을 최종 사진으로 쓰지 않습니다.
합성 IMAGE → FaceDetailer image꽃 장식이 있는 중간 사진이 얼굴 보정 입력입니다. 원본 LoadImage를 여기에 직접 연결하면 꽃 장식을 거치지 않습니다.
같은 SDXL 로더 → 두 단계MODEL·CLIP·VAE는 함께 사용하지만, 코트와 얼굴에 사용할 문장 조건은 각각 따로 연결합니다.
실제 처리된 인페인트 마스크 · 코트 한쪽의 작은 원형 영역입니다.
실제 처리된 인페인트 마스크 · 코트 한쪽의 작은 원형 영역입니다. 그림을 누르면 큰 화면으로 열립니다.
실제 FaceDetailer mask 출력 · 얼굴 한 곳을 찾았습니다. 최종 feather 전의 범위입니다.
실제 FaceDetailer mask 출력 · 얼굴 한 곳을 찾았습니다. 최종 feather 전의 범위입니다. 그림을 누르면 큰 화면으로 열립니다.

두 흰 영역이 서로 떨어져 있습니다. 이번 예제에서는 코트를 먼저 수정해도 얼굴은 원본과 같고, 얼굴을 수정한 뒤에도 꽃 장식이 같습니다. 디테일러의 검출 마스크는 최종 경계 흐림을 적용하기 전이므로, 검정으로 보이는 모든 픽셀이 항상 그대로라고 해석하지는 않습니다.

작은 꽃 장식을 위한 자르기·확대 설정 이해하기

크롭(crop)은 주변을 사각형으로 잘라 작업하는 것입니다. 이 예제의 작은 장식은 전체 사진 안에서 차지하는 비율이 작아, 코트 주변을 확대해서 생성합니다. 확대 작업 영역과 실제로 수정할 원형 마스크는 다릅니다. 기본 실습에서는 이 설정을 바꾸지 않습니다.

자동으로 진행되는 단계제공 JSON의 값
원본과 마스크에서 같은 주변 자르기왼쪽 위 x=316, y=156 / 너비 320, 높이 320. 좌표는 이 입력 사진에 맞춘 값입니다.
작업 크기로 확대사진은 bicubic, 마스크는 bilinear로 1024×1024. 단순 크기 변환으로, 이 단계 자체가 새로운 장식을 만들지는 않습니다.
마스크 범위·경계자르기 전 GrowMask expand=8, tapered_corners=true → ImageBlur blur_radius=9, sigma=3. 흰 영역 주변을 넓히고 경계를 부드럽게 만듭니다.
생성 후 원래 크기로VAEDecode 결과를 area 방식으로 320×320으로 줄입니다.
원본 위에 합성원래 크기 마스크로 x=316, y=156에 얹습니다. 최종 전체 사진 크기는 832×1216으로 유지됩니다.

다른 사진에 그대로 적용하면 같은 위치에 있는 엉뚱한 부분을 수정할 수 있습니다. 다른 사진으로 응용할 때는 원본과 같은 크기의 새 마스크를 만들고, 사진 자르기·마스크 자르기·합성 위치를 함께 맞추세요. 마스크의 부드러운 경계도 자르기 영역 안에 충분히 들어가야 합니다.

FaceDetailer에서 그대로 둘 값
항목설정
검출bbox_threshold 0.50 / bbox_dilation 8 / bbox_crop_factor 3.0 / drop_size 10
내부 처리 크기guide_size 512 / guide_size_for bbox / max_size 1024
합성·생성 경계feather 10 / noise_mask_feather 20
재생성noise_mask enabled / force_inpaint enabled / cycle 1
모델·추가 기능inpaint_model disabled / tiled_encode·tiled_decode disabled / wildcard 비움
SAM·segm 입력연결하지 않습니다. sam_으로 시작하는 값은 SAM이 없는 이 경로에 적용되지 않습니다.

bbox_threshold는 얼굴을 찾는 문턱값이고, denoise는 찾은 얼굴을 다시 그리는 강도입니다. 더 자세한 용어는 24장에서 확인합니다.

제공 JSON의 전체 설정·프롬프트·노드 연결
설정할 노드입력값
원본 · 두 단계의 출발점 · 입력 사진입력 파일 = ch25-input.png
공통 SDXL Base체크포인트 = sd_xl_base_1.0.safetensors
코트 장식 마스크 · MASK 출력 · RGBA 마스크입력 파일 = ch25-brooch-mask.png
마스크 범위 · 8expand = 8
tapered_corners = true
마스크 경계 · 9 / 3blur_radius = 9
sigma = 3.0
부드러운 최종 마스크channel = red
① 인페인트 강도 · denoiseseed = 2026102501
생성 후 제어 = fixed
steps = 28
CFG = 7.0
sampler = dpmpp_2m
scheduler = karras
denoise = 1.0
원본 보존 · 인페인트 합성x = 316
y = 156
resize_source = false
중간 결과 · 인페인트 후 · ch25_crop-i100-d040_inpaint파일명 접두사 = guide/ch25_crop-i100-d040_inpaint
확인용 · 인페인트 마스크 · ch25_crop-i100-d040_inpaint_mask파일명 접두사 = guide/ch25_crop-i100-d040_inpaint_mask
얼굴 검출 모델model_name = bbox/face_yolov8m.pt
② 디테일러 강도 · denoiseguide_size = 512
guide_size_for = true
max_size = 1024
seed = 2026102502
생성 후 제어 = fixed
steps = 24
cfg = 5.0
sampler_name = dpmpp_2m
scheduler = karras
denoise = 0.4
feather = 10
noise_mask = true
force_inpaint = true
bbox_threshold = 0.5
bbox_dilation = 8
bbox_crop_factor = 3.0
sam_detection_hint = center-1
sam_dilation = 0
sam_threshold = 0.93
sam_bbox_expansion = 0
sam_mask_hint_threshold = 0.7
sam_mask_hint_use_negative = False
drop_size = 10
wildcard =
cycle = 1
inpaint_model = false
noise_mask_feather = 20
tiled_encode = false
tiled_decode = false
최종 결과 · 두 단계 완료 · ch25_crop-i100-d040_final파일명 접두사 = guide/ch25_crop-i100-d040_final
확인용 · 얼굴 검출 마스크 · ch25_crop-i100-d040_face_mask파일명 접두사 = guide/ch25_crop-i100-d040_face_mask
장식 주변만 자르기너비 = 320
높이 = 320
x = 316
y = 156
작업 크기 1024upscale_method = bicubic
너비 = 1024
높이 = 1024
crop = disabled
같은 좌표의 마스크너비 = 320
높이 = 320
x = 316
y = 156
마스크도 1024upscale_method = bilinear
너비 = 1024
높이 = 1024
crop = disabled
확대 마스크channel = red
생성 부분을 320으로upscale_method = area
너비 = 320
높이 = 320
crop = disabled
합성용 · 원래 크기 마스크x = 316
y = 156
너비 = 320
높이 = 320
입력할 프롬프트 전문

인페인트 문장 · 빨간 꽃 장식

photograph, a single red rose flower brooch pinned to beige trench coat fabric, (red rose petals:1.3), small elegant fabric flower accessory, realistic textile texture, soft studio light

인페인트 · 피할 표현

text, watermark, logo, multiple flowers, bouquet, large flower, extra limbs, distorted clothing, distorted face, blurry, drawing, cartoon

디테일러 문장 · 얼굴만

photograph of an adult woman, natural eyes, dark brown hair, calm neutral expression, closed mouth, realistic skin, soft natural light

디테일러 · 피할 표현

distorted eyes, crossed eyes, asymmetrical pupils, deformed face, open mouth, teeth, heavy makeup, plastic skin, text, watermark
현재 작업의 노드·연결 목록 · 노드 30개와 연결 40개

제공 JSON에 이미 들어 있는 노드와 연결입니다. 실수로 선을 바꿨을 때 이 목록과 대조하세요. 이름이 같은 노드는 역할·파일명으로 구별합니다.

노드 역할검색할 기술 이름
원본 · 두 단계의 출발점 · 입력 사진LoadImage
공통 SDXL BaseCheckpointLoaderSimple
인페인트 문장 · 빨간 꽃 장식CLIPTextEncode
인페인트 · 피할 표현CLIPTextEncode
코트 장식 마스크 · MASK 출력 · RGBA 마스크LoadImage
원본을 잠재 이미지로VAEEncode
마스크 범위 · 8GrowMask
마스크를 그림으로MaskToImage
마스크 경계 · 9 / 3ImageBlur
부드러운 최종 마스크ImageToMask
인페인트 생성 범위SetLatentNoiseMask
① 인페인트 강도 · denoiseKSampler
생성 그림으로 변환VAEDecode
원본 보존 · 인페인트 합성ImageCompositeMasked
중간 결과 · 인페인트 후 · ch25_crop-i100-d040_inpaintSaveImage
확인용 · 인페인트 마스크 · ch25_crop-i100-d040_inpaint_maskSaveImage
얼굴 검출 모델UltralyticsDetectorProvider
디테일러 문장 · 얼굴만CLIPTextEncode
디테일러 · 피할 표현CLIPTextEncode
② 디테일러 강도 · denoiseFaceDetailer
최종 결과 · 두 단계 완료 · ch25_crop-i100-d040_finalSaveImage
검출 마스크를 그림으로MaskToImage
확인용 · 얼굴 검출 마스크 · ch25_crop-i100-d040_face_maskSaveImage
장식 주변만 자르기ImageCrop
작업 크기 1024ImageScale
같은 좌표의 마스크ImageCrop
마스크도 1024ImageScale
확대 마스크ImageToMask
생성 부분을 320으로ImageScale
합성용 · 원래 크기 마스크CropMask
순서출발 출력도착 입력
1공통 SDXL Base
CLIP →
인페인트 문장 · 빨간 꽃 장식
clip
2공통 SDXL Base
CLIP →
인페인트 · 피할 표현
clip
3작업 크기 1024
이미지 →
원본을 잠재 이미지로
이미지
4공통 SDXL Base
VAE →
원본을 잠재 이미지로
vae
5코트 장식 마스크 · MASK 출력 · RGBA 마스크
마스크 →
마스크 범위 · 8
마스크
6마스크 범위 · 8
마스크 →
마스크를 그림으로
마스크
7마스크를 그림으로
이미지 →
마스크 경계 · 9 / 3
이미지
8마스크 경계 · 9 / 3
이미지 →
부드러운 최종 마스크
이미지
9원본을 잠재 이미지로
잠재 데이터 →
인페인트 생성 범위
잠재 데이터
10확대 마스크
마스크 →
인페인트 생성 범위
마스크
11공통 SDXL Base
모델 →
① 인페인트 강도 · denoise
모델
12인페인트 문장 · 빨간 꽃 장식
조건 →
① 인페인트 강도 · denoise
긍정
13인페인트 · 피할 표현
조건 →
① 인페인트 강도 · denoise
부정
14인페인트 생성 범위
잠재 데이터 →
① 인페인트 강도 · denoise
잠재 입력
15① 인페인트 강도 · denoise
잠재 데이터 →
생성 그림으로 변환
잠재 데이터
16공통 SDXL Base
VAE →
생성 그림으로 변환
vae
17원본 · 두 단계의 출발점 · 입력 사진
이미지 →
원본 보존 · 인페인트 합성
바탕 그림(destination)
18생성 부분을 320으로
이미지 →
원본 보존 · 인페인트 합성
얹을 그림(source)
19합성용 · 원래 크기 마스크
마스크 →
원본 보존 · 인페인트 합성
마스크
20원본 보존 · 인페인트 합성
이미지 →
중간 결과 · 인페인트 후 · ch25_crop-i100-d040_inpaint
이미지
21마스크 경계 · 9 / 3
이미지 →
확인용 · 인페인트 마스크 · ch25_crop-i100-d040_inpaint_mask
이미지
22공통 SDXL Base
CLIP →
디테일러 문장 · 얼굴만
clip
23공통 SDXL Base
CLIP →
디테일러 · 피할 표현
clip
24원본 보존 · 인페인트 합성
이미지 →
② 디테일러 강도 · denoise
이미지
25공통 SDXL Base
모델 →
② 디테일러 강도 · denoise
모델
26공통 SDXL Base
CLIP →
② 디테일러 강도 · denoise
clip
27공통 SDXL Base
VAE →
② 디테일러 강도 · denoise
vae
28디테일러 문장 · 얼굴만
조건 →
② 디테일러 강도 · denoise
긍정
29디테일러 · 피할 표현
조건 →
② 디테일러 강도 · denoise
부정
30얼굴 검출 모델
BBOX_DETECTOR →
② 디테일러 강도 · denoise
bbox_detector
31② 디테일러 강도 · denoise
이미지 →
최종 결과 · 두 단계 완료 · ch25_crop-i100-d040_final
이미지
32② 디테일러 강도 · denoise
마스크 →
검출 마스크를 그림으로
마스크
33검출 마스크를 그림으로
이미지 →
확인용 · 얼굴 검출 마스크 · ch25_crop-i100-d040_face_mask
이미지
34원본 · 두 단계의 출발점 · 입력 사진
이미지 →
장식 주변만 자르기
이미지
35장식 주변만 자르기
이미지 →
작업 크기 1024
이미지
36마스크 경계 · 9 / 3
이미지 →
같은 좌표의 마스크
이미지
37같은 좌표의 마스크
이미지 →
마스크도 1024
이미지
38마스크도 1024
이미지 →
확대 마스크
이미지
39생성 그림으로 변환
이미지 →
생성 부분을 320으로
이미지
40부드러운 최종 마스크
마스크 →
합성용 · 원래 크기 마스크
마스크

C. 선택 비교 · 인페인트를 고정하고 디테일러만 조절하기

기본 결과를 만든 뒤 진행하세요. 인페인트 1.00을 유지하고 디테일러만 0.20·0.40·0.60으로 바꿉니다. 아래 세 작업의 인페인트 중간 결과는 RGB 픽셀까지 같습니다. 매번 제공 원본에서 시작하며, 보정한 결과를 다시 원본으로 넣지 않습니다.

인페인트 / 디테일러실행할 JSON이 예제의 판단
1.00 / 0.20ch25-detailer-020.json (ZIP) 원래 눈 화장과 대비가 많이 남는 보수적인 대안입니다.
1.00 / 0.40ch25-combined.json (ZIP) 기본 선택. 눈 주변·입술 표현을 정돈하면서 0.60보다 입가 변화가 적습니다.
1.00 / 0.60ch25-detailer-060.json (ZIP) 입가·볼과 얼굴 인상이 더 달라지는 대조군입니다. 높은 값이 더 좋은 보정을 뜻하지 않습니다.
디테일러 0.20 · 원래 눈 주변 대비가 더 남습니다.
디테일러 0.20 · 원래 눈 주변 대비가 더 남습니다. 그림을 누르면 큰 화면으로 열립니다.
디테일러 0.40 · 기본 선택.
디테일러 0.40 · 기본 선택. 그림을 누르면 큰 화면으로 열립니다.
디테일러 0.60 · 입가·볼의 표현도 더 달라집니다.
디테일러 0.60 · 입가·볼의 표현도 더 달라집니다. 그림을 누르면 큰 화면으로 열립니다.

실습 순서는 기본 JSON 열기 → 디테일러 노이즈 제거량만 변경 → 실행 → 얼굴 비교입니다. 파일별 제공 JSON을 열어도 됩니다. 비교용 JSON은 저장 접두사에 d020 또는 d060이 붙어 결과를 구별할 수 있습니다. 꽃 장식은 그대로인지도 함께 보세요.

전체 결과: 1.00 / 0.20 전체 PNG (ZIP) · 1.00 / 0.60 전체 PNG (ZIP) . 얼굴 변화가 마음에 들지 않으면 0.20 또는 얼굴 보정 전 중간 결과를 선택합니다.

D. 선택 비교 · 디테일러를 고정하고 인페인트만 조절하기

디테일러 0.40을 유지하고 인페인트만 0.60·0.85·1.00으로 바꿉니다. 꽃을 만드는 힘은 첫 KSampler의 denoise로 조절합니다. 얼굴 디테일러를 세게 한다고 코트의 불완전한 꽃이 완성되지는 않습니다.

인페인트 / 디테일러실행할 JSON이 예제의 판단
0.60 / 0.40ch25-inpaint-060.json (ZIP) 목표 미달인 비교 예제. 잎은 생겼지만 붉은 꽃 부분이 가는 조각처럼 남아 꽃 형태가 부족합니다.
0.85 / 0.40ch25-inpaint-085.json (ZIP) 붉은 꽃잎이 생겼지만 벌어진 가는 형태입니다. 기본 1.00과 꽃 모양을 비교합니다.
1.00 / 0.40ch25-combined.json (ZIP) 기본 선택. 붉은 꽃잎이 더 뚜렷하게 모여 장식으로 읽힙니다.
인페인트 0.60 · 꽃 형태가 충분히 만들어지지 않은 비교 결과.
인페인트 0.60 · 꽃 형태가 충분히 만들어지지 않은 비교 결과. 그림을 누르면 큰 화면으로 열립니다.
인페인트 0.85 · 붉은 꽃잎이 생겼으나 가늘게 벌어집니다.
인페인트 0.85 · 붉은 꽃잎이 생겼으나 가늘게 벌어집니다. 그림을 누르면 큰 화면으로 열립니다.
인페인트 1.00 · 이 새 꽃 장식 목표에 선택한 결과.
인페인트 1.00 · 이 새 꽃 장식 목표에 선택한 결과. 그림을 누르면 큰 화면으로 열립니다.

0.60 결과를 고치는 방법: 같은 원본·마스크·문장을 둔 채 첫 KSampler를 0.85, 이어 1.00으로 올려 비교합니다. 이 조건에서는 낮은 값이 원래 옷의 영향을 많이 남겨 새 꽃 형태가 충분히 생기지 않았습니다. 이번 기본값 1.00은 새 물체를 만들기 위해 고른 값이며, 기존 무늬·색만 조금 다듬는 작업에서는 더 낮은 값부터 비교하는 편이 좋습니다. 1.00도 목표 달성을 보장하지 않습니다.

전체 결과: 0.60 / 0.40 전체 PNG (ZIP) · 0.85 / 0.40 전체 PNG (ZIP) . 제공 JSON의 저장 이름에는 각각 i060·i085가 붙습니다. 두 단계의 seed·문장·모델·마스크·연결은 유지하고 인페인트 denoise와 저장 이름만 다릅니다.

앞 단계 결과가 달라지면 디테일러는 달라진 전체 사진에서 얼굴을 다시 찾고 주변을 잘라 봅니다. 따라서 디테일러 값을 고정했다고 얼굴 결과까지 반드시 같지는 않습니다. 비교할 때는 먼저 중간 결과의 꽃을 판단하고 그다음 최종 결과의 얼굴을 판단합니다.

E. 다음 작업에도 재사용하기

  1. 선택한 조합에서 그래프 → 내보내기로 일반 JSON을 ch25-my-combined.json으로 보관합니다. 원본 PNG와 투명도 마스크 PNG도 함께 보관합니다.
  2. 다시 열 때 Ctrl+O로 JSON을 열고 모델·원본·마스크를 선택합니다. 처음에는 배치 1, 두 seed fixed, 디테일러 cycle 1로 실행합니다. 최종 결과를 다시 입력해 보정을 누적하는 것은 이번 강도 비교와 다른 작업입니다.

4. 정상 결과 확인

보는 순서완성 기준
① 중간 결과의 코트꽃잎과 잎이 실제 장식으로 읽히는지 봅니다. 실행이 끝났어도 원래 옷만 남거나 붉은 조각만 있으면 목표 미달입니다.
② 중간 결과의 얼굴인페인트 단계에서는 얼굴을 수정하지 않았는지 원본과 비교합니다.
③ 최종 결과의 얼굴눈동자·입술 경계를 보고, 시선·표정 변화가 받아들일 만한지 판단합니다. 더 매끈해졌다는 이유만으로 무조건 선택하지 않습니다.
④ 최종 결과의 꽃·경계꽃 장식이 유지되고 주변 코트에 원형 색 띠나 잘린 꽃잎이 없는지 봅니다. 얼굴 주변에 네모 경계가 생기지 않았는지도 확인합니다.
⑤ 전체 사진원본과 같은 832×1216이며, 두 수정 영역에서 떨어진 코트·부츠·배경을 유지하는지 확인합니다.

이 장의 다섯 조합을 실제 실행했습니다. 두 마스크의 합성 경계 영향이 없는 바깥은 원본과 RGB가 같았고, 디테일러 강도 비교의 세 중간 결과도 같았습니다. 제공 기본 JSON을 ComfyUI 화면에서 다시 열어 실행한 중간·최종 결과 역시 본문 예제와 RGB가 같았습니다.

5. 자주 생기는 문제

증상구별할 원인·해결
빨간 꽃이 생기지 않거나 불완전함중간 결과부터 봅니다. 첫 KSampler의 denoise와 코트 문장, 마스크 위치를 확인합니다. 이 입력의 기본은 1.00입니다. 작은 장식을 위해 고정해 둔 자르기·1024 작업 크기도 유지합니다. 얼굴 denoise를 올려 해결하지 않습니다.
꽃은 있지만 얼굴이 그대로임얼굴 검출 마스크를 봅니다. 검정뿐이면 검출 실패일 수 있습니다. 검출 모델 bbox/face_yolov8m.pt, bbox_threshold 0.50을 확인합니다. 검출됐어도 낮은 denoise에서는 변화가 작을 수 있습니다.
최종 사진에서 꽃이 사라짐FaceDetailer image 입력이 원본 LoadImage가 아니라 원본 보존 · 인페인트 합성의 IMAGE에 연결됐는지 확인합니다.
코트 대신 전체 이미지가 바뀜마스크 PNG의 MASK 출력을 사용했는지 확인합니다. RGB 그림은 흰색이므로 IMAGE를 마스크로 잘못 쓰면 전체 선택이 될 수 있습니다. 원본 위에 마스크로 합성하는 마지막 연결도 확인합니다.
마스크 PNG가 흰 그림처럼 보임이 파일은 투명도로 범위를 저장합니다. JPG로 바꾸거나 배경을 채우지 마세요. 범위는 본문의 처리된 흑백 마스크 또는 실행한 inpaint_mask 출력에서 확인합니다.
얼굴 인상이 너무 달라짐첫 인페인트 값을 그대로 두고 디테일러 denoise만 낮춥니다. 원본부터 다시 실행하고 cycle은 1로 둡니다. 중간 결과의 원래 얼굴을 선택해도 됩니다.
꽃 주변에 원·색 띠가 생김마스크 경계가 너무 단단하거나 꽃이 선택 범위를 넘었을 수 있습니다. 제공 마스크·범위 넓히기 8·흐림 9/3으로 돌아가 봅니다. 마스크를 바꿨다면 자르기 영역 안에 부드러운 가장자리까지 들어가는지 확인합니다.
다른 사진에서 장식 위치가 어긋남제공 좌표는 이 입력 전용입니다. 사진·마스크의 자르기 좌표와 원본 합성 x/y를 함께 맞춰야 합니다. 모델이나 denoise만 바꿔서는 위치 문제가 해결되지 않습니다.
얼굴만 바꿨는데 첫 단계가 빨리 지나감ComfyUI가 바뀌지 않은 앞 단계의 계산을 재사용할 수 있습니다. 중간 결과가 같다면 정상입니다. 비교를 위해 seed를 무작위로 바꿀 필요는 없습니다.
입력·모델·노드 누락PNG 두 개를 input에 넣고 새로고침해 선택합니다. 빨간 누락 노드는 23장 준비를 확인합니다. 새 모델 설치 대신 기존 정확한 파일명을 먼저 선택하세요.
GPU 메모리 부족배치를 1로 하고 불필요한 동시 GPU 작업을 정리합니다. 작업 해상도나 디테일러 max_size를 줄이면 결과도 달라지므로 새 결과의 꽃·얼굴·경계를 다시 판단합니다.
공식 참고 자료

Impact Pack · 제작자의 디테일러 설정 설명. 제공 JSON은 현재 설치된 노드의 입력·출력과 실제 실행에 맞췄습니다.

준비 단계에서 PC 정보가 헷갈린다면 GPU·메모리 등 내 컴퓨터 사양 확인 방법을 함께 참고하세요. 이 장의 결과와 작업 JSON을 보관한 뒤 다음 실습으로 넘어가면 다시 비교하기 쉽습니다.