ComfyUI 왕초보 가이드 10 / 29장 · 기준: ComfyUI 0.34.0 / 프런트엔드 1.49.6 · Windows x64 / NVIDIA RTX Portable. 다른 버전에서는 메뉴와 노드 표시가 다를 수 있습니다.
이 장의 실습 자료 ZIP 내려받기 (8.1MB)
JSON·입력 PNG·본문 원본 이미지를 담았습니다. 압축을 푼 뒤 본문에 적힌 파일을 선택하세요. 모델과 프로그램은 포함하지 않습니다. 본문의 WebP는 가벼운 표시용 사본이며, PNG의 작업 정보·투명도와 원본 픽셀 비교에는 ZIP 안의 PNG를 사용하세요.
사진을 입력으로 받아 다시 생성하고 denoise에 따른 변화를 비교합니다.
1. 만들 결과
사진을 입력으로 받아 다시 생성하고 denoise에 따른 변화를 비교합니다.
img2img(이미지 투 이미지)는 기존 이미지를 참고해 새 그림을 생성하는 방법입니다. denoise(디노이즈)를 낮추면 대체로 원본 형태를 더 많이 남기고, 높이면 더 크게 바꿀 여지가 생깁니다. 0.45는 “그림의 45%를 교체”한다는 뜻은 아닙니다.
2. 준비물
ComfyUI를 실행한 상태에서 시작합니다. 아래 모델이 이미 같은 폴더에 있으면 다시 받을 필요가 없습니다.
| 모델 | 공식 파일·다운로드 위치 | 설치 폴더 안에 넣을 곳 | 선택할 노드 | 처음 사용 |
|---|---|---|---|---|
| SDXL Base 1.0 | sd_xl_base_1.0.safetensors | ComfyUI\models\checkpoints | 체크포인트 로드 | 4장 |
| 역할 | 파일 | 정확한 이름 |
|---|---|---|
| 실습 JSON | 실습 JSON 내려받기 (ZIP) | ch10-img2img-d045.json |
| 입력 PNG | 입력 PNG 내려받기 (ZIP) | ch05_first_portrait_v2_00001_.png |
파일 링크는 이 장의 실습 자료 ZIP으로 연결됩니다. 한 번 내려받아 압축을 푼 뒤 표에 적힌 JSON·PNG 파일을 선택하세요. JSON은 Ctrl+O로 열고, 입력 PNG는 해당 LoadImage에서 업로드합니다.
이번 기본 JSON이 저장할 파일
설치 폴더의 ComfyUI/output 아래에 다음 접두사로 저장됩니다. 뒤에는 자동 번호와 .png가 붙습니다. 이미 같은 이름이 있으면 번호가 올라갑니다.
guide/ch10_img2img_d045_00001_.png
3. 따라 하기
- 입력 PNG와 실습 JSON을 받습니다. JSON을 새 작업에 엽니다.
- 이미지 로드 → 업로드할 파일 선택에서 제공된 인물 원본 PNG를 고릅니다. 결과 비교판이나 화면 캡처를 입력으로 쓰지 않습니다.
- 흐름을 확인합니다. 이미지 로드 → VAE 인코드 → KSampler → VAE 디코드 → 이미지 저장입니다. 텍스트 생성의 빈 잠재 이미지 대신 입력 사진을 인코드합니다.
- 아래 프롬프트와 생성값을 확인합니다. 첫 실습의 denoise는 0.45입니다. 실습 JSON을 별도 이름으로 저장하고 실행합니다.
기본 실습 뒤 선택 비교·추가 조작
- 선택 비교는 같은 원본에서 시작합니다. 0.25와 0.65 JSON을 각각 열어 같은 입력 PNG를 선택한 뒤 실행합니다. 입력 사진과 문장·seed를 유지합니다.
이번 실습의 설정
| 설정할 노드 | 입력값 |
|---|---|
| 이미지 로드 · 입력 사진 | 입력 파일 = ch05_first_portrait_v2_00001_.png |
| KSampler | seed = 20260909 생성 후 제어 = fixed steps = 20 CFG = 7 sampler = euler scheduler = normal denoise = 0.45 |
| 이미지 저장 · ch10_img2img_d045 | 파일명 접두사 = guide/ch10_img2img_d045 |
| 체크포인트 로드 | 체크포인트 = sd_xl_base_1.0.safetensors |
입력할 프롬프트 전문
부정 프롬프트
text, watermark, blurry, low quality, distorted face, duplicate person, mature-looking face, deep facial lines, heavy makeup, exaggerated smile, open mouth, visible teeth, hands in frame, plastic skin
긍정 프롬프트
a watercolor portrait of a 22-year-old adult woman, shoulder-length dark hair, cream-colored knit sweater, soft diffused window light, plain light gray background
직접 구성하기 · 노드 8개와 연결 11개
빈 작업판을 두 번 클릭해 아래 기술 이름으로 검색하고 노드를 추가합니다. 값 입력 뒤, 오른쪽 출력 점을 왼쪽 입력 점으로 끌어 연결하세요. 이름이 같은 노드는 역할·파일명으로 구별합니다.
| 노드 역할 | 검색할 기술 이름 |
|---|---|
| 부정 프롬프트 | CLIPTextEncode |
| VAE 디코드 | VAEDecode |
| 이미지 로드 · 입력 사진 | LoadImage |
| VAE 인코드 | VAEEncode |
| 긍정 프롬프트 | CLIPTextEncode |
| KSampler | KSampler |
| 이미지 저장 · ch10_img2img_d045 | SaveImage |
| 체크포인트 로드 | CheckpointLoaderSimple |
| 순서 | 출발 출력 | 도착 입력 |
|---|---|---|
| 1 | 체크포인트 로드 모델 → | KSampler 모델 |
| 2 | 체크포인트 로드 CLIP → | 긍정 프롬프트 clip |
| 3 | 체크포인트 로드 CLIP → | 부정 프롬프트 clip |
| 4 | 긍정 프롬프트 조건 → | KSampler 긍정 |
| 5 | 부정 프롬프트 조건 → | KSampler 부정 |
| 6 | 체크포인트 로드 VAE → | VAE 디코드 vae |
| 7 | VAE 디코드 이미지 → | 이미지 저장 · ch10_img2img_d045 이미지 |
| 8 | KSampler 잠재 데이터 → | VAE 디코드 잠재 데이터 |
| 9 | 이미지 로드 · 입력 사진 이미지 → | VAE 인코드 이미지 |
| 10 | 체크포인트 로드 VAE → | VAE 인코드 vae |
| 11 | VAE 인코드 잠재 데이터 → | KSampler 잠재 입력 |

선택 실습 · 수채화 표현으로 크게 바꾸기
기본 실습의 원본 인물 PNG를 그대로 사용합니다. 새 JSON을 별도 탭에서 열어 입력을 선택하고 실행하세요. 프롬프트·seed·steps·CFG·denoise를 함께 바꾼 스타일 예제이며, denoise 하나만 바꾼 대조 실험은 아닙니다.
| 설정할 노드 | 입력값 |
|---|---|
| 체크포인트 로드 | 체크포인트 = sd_xl_base_1.0.safetensors |
| 이미지 로드 · 입력 사진 | 입력 파일 = ch05_first_portrait_v2_00001_.png |
| KSampler | seed = 20261010 생성 후 제어 = fixed steps = 30 CFG = 7.5 sampler = euler scheduler = normal denoise = 0.8 |
| 이미지 저장 · ch10_watercolor_final | 파일명 접두사 = guide/ch10_watercolor_final |
입력할 프롬프트 전문
긍정 프롬프트
(watercolor painting:1.5), loose watercolor portrait on white paper, adult woman with brown hair, cream sweater, transparent blue and ochre washes, white unpainted paper, wet on wet, soft pigment blooms, simple loose brush strokes, traditional painted illustration
부정 프롬프트
(photograph:1.3), photorealistic, 3d, realistic skin pores, glossy, digital render, hard contour, text, watermark, glasses, eyeglasses, sunglasses
직접 구성하기 · 노드 8개와 연결 11개
빈 작업판을 두 번 클릭해 아래 기술 이름으로 검색하고 노드를 추가합니다. 값 입력 뒤, 오른쪽 출력 점을 왼쪽 입력 점으로 끌어 연결하세요. 이름이 같은 노드는 역할·파일명으로 구별합니다.
| 노드 역할 | 검색할 기술 이름 |
|---|---|
| 체크포인트 로드 | CheckpointLoaderSimple |
| 이미지 로드 · 입력 사진 | LoadImage |
| 긍정 프롬프트 | CLIPTextEncode |
| 부정 프롬프트 | CLIPTextEncode |
| VAE 인코드 | VAEEncode |
| KSampler | KSampler |
| VAE 디코드 | VAEDecode |
| 이미지 저장 · ch10_watercolor_final | SaveImage |
| 순서 | 출발 출력 | 도착 입력 |
|---|---|---|
| 1 | 체크포인트 로드 CLIP → | 긍정 프롬프트 clip |
| 2 | 체크포인트 로드 CLIP → | 부정 프롬프트 clip |
| 3 | 체크포인트 로드 모델 → | KSampler 모델 |
| 4 | 긍정 프롬프트 조건 → | KSampler 긍정 |
| 5 | 부정 프롬프트 조건 → | KSampler 부정 |
| 6 | VAE 인코드 잠재 데이터 → | KSampler 잠재 입력 |
| 7 | KSampler 잠재 데이터 → | VAE 디코드 잠재 데이터 |
| 8 | 체크포인트 로드 VAE → | VAE 디코드 vae |
| 9 | VAE 디코드 이미지 → | 이미지 저장 · ch10_watercolor_final 이미지 |
| 10 | 이미지 로드 · 입력 사진 이미지 → | VAE 인코드 이미지 |
| 11 | 체크포인트 로드 VAE → | VAE 인코드 vae |

4. 정상 결과 확인
기본 0.45 결과에서는 머리카락·니트의 선과 질감이 강해집니다. 원본을 그대로 복사한 사진도, 뚜렷한 수채화 완성품도 아닙니다. 선택 수채화 결과에서는 물감 번짐·넓은 색면·종이 표현을 확인합니다.

선택 비교 · denoise별 실제 결과
비교 조건별 JSON
| 조건 | JSON |
|---|---|
| 선택 · denoise 0.25 | ch10-img2img-d025.json (ZIP) |
| 선택 · denoise 0.65 | ch10-img2img-d065.json (ZIP) |
각 JSON은 별도 탭에서 열고 입력 이미지·모델을 다시 선택하세요. 기본 실습과 선택 비교를 구별해 필요한 조건을 사용합니다.
5. 자주 생기는 문제
| 상황 | 확인할 곳 |
|---|---|
| 입력 사진이 없다고 나와요 | 이미지 로드에서 제공 PNG를 직접 업로드하고 선택합니다. JSON은 입력 파일을 포함하지 않습니다. |
| 거의 바뀌지 않거나 너무 달라져요 | denoise와 입력 사진을 확인하고 한 번에 한 값만 바꿉니다. |
| 수채화 느낌이 약해요 | 선택 수채화 실습의 별도 JSON을 사용하세요. 기본 0.45에서 숫자 하나만 바꾼 대조군은 아니며, 강한 변환은 인물의 모습도 바꿀 수 있습니다. |
공통 오류와 용어는 용어·문제 해결에서 찾을 수 있습니다.
공식 참고 자료
준비 단계에서 PC 정보가 헷갈린다면 GPU·메모리 등 내 컴퓨터 사양 확인 방법을 함께 참고하세요. 이 장의 결과와 작업 JSON을 보관한 뒤 다음 실습으로 넘어가면 다시 비교하기 쉽습니다.


