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장의 가상 성인 전신 사진에서 화면 오른쪽 코트깃의 단추 부근에 빨간 꽃 장식을 만든 다음, 작은 얼굴의 눈·입 표현을 다듬습니다. 아래 세 그림은 실제 실행의 원본·중간·최종 결과입니다.







부분 비교는 전체 결과의 같은 좌표를 잘라 확대 표시했습니다. 꽃·얼굴에 추가 보정이나 선명화를 넣지 않았습니다. 그림을 누르면 저장된 원래 크기로 볼 수 있습니다.
원본 + 코트 마스크 → 인페인트 → 원본 위에 합성한 중간 결과 → 얼굴 검출·부분 재생성 → 최종 결과
| 용어 | 쉽게 이해하기 |
|---|---|
| 인페인트 · inpaint | 마스크로 고른 부분을 다시 그리는 작업입니다. 여기서는 사람이 정한 코트 영역에 꽃 장식을 만듭니다. |
| 마스크 · mask | 수정할 곳을 알려 주는 지도입니다. 처리된 마스크의 흰 부분은 수정, 검정은 보존, 회색은 경계를 섞는 부분입니다. |
| FaceDetailer · 얼굴 디테일러 | 얼굴을 자동으로 찾고, 주변과 함께 잘라 확대해 다시 그린 다음 원래 위치에 합성합니다. 내부적으로도 부분 인페인트를 사용합니다. |
| denoise · 노이즈 제거량 | 그 단계에서 입력 모습으로부터 벗어날 여지를 조절합니다. 낮으면 원본 영향이 크고, 높으면 새로운 형태가 더 생길 수 있습니다. |
| 중간 결과 | 첫 단계가 끝난 그림입니다. 이번에는 꽃 장식이 있는 사진이 두 번째 단계의 입력이 됩니다. |
| seed · 시드 | 생성에 쓰는 난수의 출발값입니다. 비교할 때 두 노드 모두 fixed로 두어 임의 변경을 막습니다. |
2. 준비물
기존 SDXL Base, Impact Pack·Impact Subpack, face_yolov8m.pt를 사용합니다. 새 모델은 필요 없습니다. 얼굴 노드가 없다면 23장 준비, 디테일러 항목의 뜻이 낯설다면 24장을 먼저 확인하세요. 이번 JSON에는 LoRA·SAM을 연결하지 않았습니다.
| 모델 | 공식 파일·다운로드 위치 | 설치 폴더 안에 넣을 곳 | 선택할 노드 | 처음 사용 |
|---|---|---|---|---|
| SDXL Base 1.0 | sd_xl_base_1.0.safetensors | ComfyUI\models\checkpoints | 체크포인트 로드 | 4장 |
| 얼굴 BBOX 검출 모델 | face_yolov8m.pt | ComfyUI\models\ultralytics/bbox | UltralyticsDetectorProvider → bbox/face_yolov8m.pt | 23장 |
| 기본 실습 파일 | 둘 곳·역할 |
|---|---|
| ch25-combined.json (ZIP) | 일반 워크플로 JSON. 실습 폴더에 보관한 뒤 ComfyUI에서 엽니다. |
| ch25-input.png (ZIP) | ComfyUI/input에 넣습니다. 24장 원본과 같은 픽셀을 가진 25장용 입력입니다. |
| ch25-brooch-mask.png (ZIP) | ComfyUI/input에 넣습니다. 코트 장식 영역을 정한 투명도 포함 PNG입니다. 크기는 입력과 같은 832×1216입니다. |
- 탐색기에서
ComfyUI/input을 먼저 열어 둡니다. 다른 창에서 위 PNG 두 개를 복사한 뒤 input 창에 붙여 넣습니다. 파일을 복사한 다음 경로 문자열을 다시 복사하지 않습니다. - ComfyUI를 이미 열어 두었다면 현재 작업을 저장한 뒤 F5로 새로고침합니다. 또는 각 이미지 로드 노드의 업로드할 파일 선택으로 해당 PNG를 지정합니다.
JSON은 노드·연결·문장·설정이 들어 있는 작업 구성입니다. 모델과 입력 PNG를 모두 포함하지 않습니다. 링크가 글자로 열리면 오른쪽 클릭 → 다른 이름으로 링크 저장으로 .json 확장자를 유지하세요.
3. 따라 하기
A. 기본 조합으로 한 장 완성하기
- Ctrl+O로
ch25-combined.json을 엽니다. 아래쪽 보기 맞춤으로 그룹 위치를 확인하고 줌 컨트롤에서 75% 정도로 확대해 값을 읽습니다. 화면에 보이지 않는 오른쪽 그룹은 아래 캔버스 모드 → 손을 선택하고 빈 작업판을 끌어 이동합니다. 이동 뒤에는 선택 모드로 돌아옵니다. - 01 원본·모델에서 공통 SDXL Base는
sd_xl_base_1.0.safetensors, 원본 · 두 단계의 출발점은ch25-input.png, 코트 장식 마스크 · MASK 출력은ch25-brooch-mask.png로 선택합니다. - 02 옷 문장·마스크의 인페인트 문장은 베이지색 코트 천에 빨간 장미 꽃 장식을 요청합니다. 05 얼굴 문장·검출의 디테일러 문장은 자연스러운 눈·차분한 표정·닫힌 입을 요청합니다. 두 단계의 문장을 섞지 말고 제공 JSON 그대로 둡니다.
- 03 인페인트 생성 → ① 인페인트 강도 · denoise의 노이즈 제거량을
1.00으로 둡니다. 숫자를 두 번 클릭해 입력하고 Enter를 누릅니다. seed2026102501, 생성 후 제어fixed를 유지합니다. - 05 얼굴 문장·검출 → 얼굴 검출 모델은
bbox/face_yolov8m.pt를 선택합니다. 06 얼굴 재생성 → ② 디테일러 강도 · denoise의 노이즈 제거량은0.40, seed는2026102502, 생성 후 제어는fixed입니다. - 상단 배치 수 1에서 실행을 한 번 누릅니다. 04 중간 결과·다음 입력 → 중간 결과 · 인페인트 후에서 꽃이 생겼는지 보고, 07 최종 결과 → 최종 결과 · 두 단계 완료에서 얼굴까지 다듬어졌는지 확인합니다. 중간 PNG를 수동으로 다시 넣을 필요는 없습니다.
| 항목 | ① 인페인트 KSampler | ② FaceDetailer |
|---|---|---|
| 기본 denoise | 1.00 | 0.40 |
| seed / 생성 후 제어 | 2026102501 / fixed | 2026102502 / fixed |
| steps / CFG | 28 / 7 | 24 / 5 |
| sampler / scheduler | dpmpp_2m / karras | dpmpp_2m / karras |
| 수정 범위 | 제공 코트 마스크 | 자동 검출한 얼굴 |
| 입력 | 원본에서 자른 코트 주변 | 인페인트 합성이 끝난 전체 사진 |


기본 결과는 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는 함께 사용하지만, 코트와 얼굴에 사용할 문장 조건은 각각 따로 연결합니다. |


두 흰 영역이 서로 떨어져 있습니다. 이번 예제에서는 코트를 먼저 수정해도 얼굴은 원본과 같고, 얼굴을 수정한 뒤에도 꽃 장식이 같습니다. 디테일러의 검출 마스크는 최종 경계 흐림을 적용하기 전이므로, 검정으로 보이는 모든 픽셀이 항상 그대로라고 해석하지는 않습니다.
작은 꽃 장식을 위한 자르기·확대 설정 이해하기
크롭(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 |
| 마스크 범위 · 8 | expand = 8 tapered_corners = true |
| 마스크 경계 · 9 / 3 | blur_radius = 9 sigma = 3.0 |
| 부드러운 최종 마스크 | channel = red |
| ① 인페인트 강도 · denoise | seed = 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 |
| ② 디테일러 강도 · denoise | guide_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 |
| 작업 크기 1024 | upscale_method = bicubic 너비 = 1024 높이 = 1024 crop = disabled |
| 같은 좌표의 마스크 | 너비 = 320 높이 = 320 x = 316 y = 156 |
| 마스크도 1024 | upscale_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 Base | CheckpointLoaderSimple |
| 인페인트 문장 · 빨간 꽃 장식 | CLIPTextEncode |
| 인페인트 · 피할 표현 | CLIPTextEncode |
| 코트 장식 마스크 · MASK 출력 · RGBA 마스크 | LoadImage |
| 원본을 잠재 이미지로 | VAEEncode |
| 마스크 범위 · 8 | GrowMask |
| 마스크를 그림으로 | MaskToImage |
| 마스크 경계 · 9 / 3 | ImageBlur |
| 부드러운 최종 마스크 | ImageToMask |
| 인페인트 생성 범위 | SetLatentNoiseMask |
| ① 인페인트 강도 · denoise | KSampler |
| 생성 그림으로 변환 | VAEDecode |
| 원본 보존 · 인페인트 합성 | ImageCompositeMasked |
| 중간 결과 · 인페인트 후 · ch25_crop-i100-d040_inpaint | SaveImage |
| 확인용 · 인페인트 마스크 · ch25_crop-i100-d040_inpaint_mask | SaveImage |
| 얼굴 검출 모델 | UltralyticsDetectorProvider |
| 디테일러 문장 · 얼굴만 | CLIPTextEncode |
| 디테일러 · 피할 표현 | CLIPTextEncode |
| ② 디테일러 강도 · denoise | FaceDetailer |
| 최종 결과 · 두 단계 완료 · ch25_crop-i100-d040_final | SaveImage |
| 검출 마스크를 그림으로 | MaskToImage |
| 확인용 · 얼굴 검출 마스크 · ch25_crop-i100-d040_face_mask | SaveImage |
| 장식 주변만 자르기 | ImageCrop |
| 작업 크기 1024 | ImageScale |
| 같은 좌표의 마스크 | ImageCrop |
| 마스크도 1024 | ImageScale |
| 확대 마스크 | 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.20 | ch25-detailer-020.json (ZIP) | 원래 눈 화장과 대비가 많이 남는 보수적인 대안입니다. |
| 1.00 / 0.40 | ch25-combined.json (ZIP) | 기본 선택. 눈 주변·입술 표현을 정돈하면서 0.60보다 입가 변화가 적습니다. |
| 1.00 / 0.60 | ch25-detailer-060.json (ZIP) | 입가·볼과 얼굴 인상이 더 달라지는 대조군입니다. 높은 값이 더 좋은 보정을 뜻하지 않습니다. |



실습 순서는 기본 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.40 | ch25-inpaint-060.json (ZIP) | 목표 미달인 비교 예제. 잎은 생겼지만 붉은 꽃 부분이 가는 조각처럼 남아 꽃 형태가 부족합니다. |
| 0.85 / 0.40 | ch25-inpaint-085.json (ZIP) | 붉은 꽃잎이 생겼지만 벌어진 가는 형태입니다. 기본 1.00과 꽃 모양을 비교합니다. |
| 1.00 / 0.40 | ch25-combined.json (ZIP) | 기본 선택. 붉은 꽃잎이 더 뚜렷하게 모여 장식으로 읽힙니다. |



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. 다음 작업에도 재사용하기
- 선택한 조합에서 그래프 → 내보내기로 일반 JSON을
ch25-my-combined.json으로 보관합니다. 원본 PNG와 투명도 마스크 PNG도 함께 보관합니다. - 다시 열 때 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을 보관한 뒤 다음 실습으로 넘어가면 다시 비교하기 쉽습니다.