a3f63e56e2
- 10_Wiki/Comfyui/: ComfyUI docs generated via /wikify - 00_Raw/_youtube/: /youtube extraction outputs - Move some 00_Raw originals into 10_Wiki/Topics_meeting; remove empty canvases and stray files Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
5.2 KiB
5.2 KiB
id, title, category, status, verification_status, canonical_id, aliases, duplicate_of, source_trust_level, confidence_score, created_at, updated_at, review_reason, merge_history, tags, raw_sources, applied_in, github_commit
| id | title | category | status | verification_status | canonical_id | aliases | duplicate_of | source_trust_level | confidence_score | created_at | updated_at | review_reason | merge_history | tags | raw_sources | applied_in | github_commit | |||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| images-latents-and-masks---comfyui | Images, Latents, and Masks - ComtyUI | 10_Wiki/Topics | draft | conceptual | B | 0.8 | 2026-05-20 | 2026-05-20 |
|
|
Images, Latents, and Masks - ComfyUI
🎯 한 줄 통찰 (One-line insight)
ComfyUI 백엔드 개발을 위한 핵심 데이터 타입인 IMAGE, MASK, LATENT의 구조적 차이와 torch.Tensor 조작법에 대한 기술 명세.
🧠 핵심 개념 (Core concepts)
- IMAGE 구조:
[B, H, W, C]형태를 가지며 $C=3$인 채널 마지막(channel last) 방식의 torch.Tensor 데이터 타입. - MASK 구조:
[B, H, W]형태를 가지며, 0 또는 1의 값을 통해 특정 연산 범위를 지정하는 데이터 타입. - LATENT 구조:
samples키에[B, C, H, W](C=4) 형태의 데이터를 담고 있는 dict 타입. - 데이터 변환: PIL.Image와 torch.Tensor 간의 포맷 전환 및 채널 순서(channel first vs last) 관리의 중요성.
🧩 추출된 패턴 (Extracted patterns)
- 차원 확장 전략: MASK 사용 시
[B, H, W, C]형태를 맞추기 위해unsqueeze(-1)(C 차원) 및unsqueeze(0)(B 차원)을 사용하는 패턴. - 데이터 정규화: LoadImage 노드에서 알파 채널을 활용하여 MASK를 생성할 때
[0, 1]범위로 정규화하고 반전시키는 프로세스. - 채널 우선순위의 상이성: LATENT는 channel first(
[B, C, H, W]) 형식을 따르지만, IMAGE는 channel last([B, H, W, C]) 형식을 따름.
📖 세부 내용 (Details)
🖼️ Images
- 데이터 구조:
torch.Tensor형태이며, shape은[B, H, W, C](C=3)입니다. - 주의 사항: 연산 효율을 위해 일부 PyTorch 연산은
[B, C, H, W](channel first) 형식을 기대할 수 있으므로 주의가 필요합니다. - 포맷 변환: 이미지를 저장하거나 불러올 때 PIL.Image 포맷으로의 변환이 필요합니다.
🖼️ Working with PIL.Image
- 이미지 로드 및 저장을 위해
from PIL import Image, ImageOps를 사용합니다.
🎭 Masks
- 데이터 구조:
torch.Tensor형태이며, shape은 $[B, H, W]$입니다. - 값의 의미:
- 이진 값(0 또는 1): 특정 픽셀이 연산 대상인지 지정.
- 0과 1 사이의 값: 투명도 조절, 필터 조정, 레이어 합성 등을 위한 마스킹 범위(extent)를 나타냄.
Masks from the Load Image Node
- 생성 원리:
LoadImage노드는 이미지의 알파 채널(RGBA의 'A')을 사용하여 MASK를 생성합니다. - 정규화 과정: 알파 채널 값을
[0, 1]범위(torch.float32)로 정규화한 후 반전시킵니다. - 예외 케이스: JPEG와 같이 알파 채널이 없는 경우,
LoadImage는[1, 64, 64]크기의 기본 마스크를 생성합니다.
Understanding Mask Shapes
- 차원 특성: numpy나 PIL과 달리, 마스크는 채널 차원이 생략된 2D 배열(
[H, W])로 표현되는 경우가 많습니다. 따라서 배치 단위의 마스크는 $[B, H, W]$의 3차원을 가집니다. - Shape 매칭 기법:
C차원 확장:unsqueeze(-1)를 사용하여[B, H, W, 1]생성.B차원 확장:unsqueeze(0)를 사용하여 배치 차원 추가.
- 권장 사항: 노드가 마스크를 입력받을 때
len(mask.shape)를 확인하는 것이 좋습니다.
🧬 Latents
- 데이터 구조:
dict형태이며,samples키에 데이터가 저장됩니다. - 형태:
[B, C, H, W](여기서C=4)의 shape을 가집니다. - 특징: LATENT는 channel first 형식을 따릅니다.
⚖️ 모동 및 업데이트 (Contradictions & updates)
- 상충 정보: IMAGE는 channel last(
[B, H, W, C])이고, LATENT는 channel first([B, C, H, W])임이 명시되어 있어 두 타입 간의 구조적 차이를 주의해야 합니다.
🛠️ 적용 사례 (Applied in summary)
- 노드 출력 구현: 노드의 출력이 단일 텐서인 경우, 반드시
(image,)형태로 반환해야 함을 명시함. - 데이터 처리: LoadImage 노드를 통한 알파 채널 기반 마스크 생성 및 정규화 프로세스.
✅ 검증 상태 및 신뢰도
- 상태: draft
- 검증 단계: conceptual
- 출처 신뢰도: B (Primary Source — 웹사이트 본문 직접 추출)
- 중복 검사 결과: 신규 생성 (New discovery)
🔗 관련 문서 링크 (Related document links)
- torch.Tensor : 모든 데이터 타입의 기초가 되는 클래스.
- PIL.Image : 이미지 로드 및 저장에 사용되는 라이mer리.
- LoadImage : 알파 채널을 통해 마스크를 생성하는 소스 노드.
- RGBA : 마스크 생성의 근거가 되는 알파 채널 포함 색상 모델.
📝 변경 이력 (Change history)
- 2026-05-20: Astra /wikify 로 https://docs.comfy.org/custom-nodes/backend/images_and_masks 본문에서 초안 생성.