ComfyUI Extension: comfyui-cns_sampler_patch
Run ComfyUI workflows without the setup
No installs, no CUDA version roulette, no GPU sitting idle on your bill. Bring a workflow and run it in the browser.
Wavelet-based frequency-aware noise coloring for ComfyUI samplers; adapts noise injection across frequency bands during generation to improve image detail and quality. (Description by CC)
README
CNS Sampler Patch
ComfyUI용 웨이블렛 기반 주파수 인식 노이즈 컬러링
논문: Colored Noise Diffusion Sampling — Davidson et al., arXiv:2605.30332v1 (2026)
https://hadardavidson.github.io/CNS/
무엇을 하는 노드인가
일반적인 ancestral 샘플러(euler_ancestral 등)는 매 스텝마다 균일한 백색 노이즈를 주입합니다. 주파수 대역에 상관없이 똑같은 에너지를 넣는 방식입니다.
그런데 디퓨전 모델은 생성 순서에 뚜렷한 편향이 있습니다. 초반에는 전체적인 구도와 색감 같은 저주파 구조가 먼저 잡히고, 후반에 가서야 텍스처나 윤곽선 같은 고주파 세부 정보가 채워집니다.
CNS Sampler Patch는 이 과정을 노이즈 주입 단계에서 반영합니다.
- 저주파 대역 (LL) — 이미 구조가 잡혔으면 → 노이즈를 줄임
- 고주파 대역 (HH) — 아직 세부 정보가 채워지지 않았으면 → 노이즈를 높임
- 총 주입 에너지는 스텝마다 동일하게 보존 (CNS 논문 Appendix A.2의 분산 보존 조건)
결과적으로 생성된 이미지의 주파수 분포가 실제 이미지의 분포에 더 가까워지며, 세부 묘사가 개선됩니다.
γ 프록시 동작 방식
CNS 논문 원본은 별도의 ODE 경로를 사전 계산해서 γ(f,t) 행렬을 만듭니다.
이 구현은 현재 x_t의 Haar DWT 서브밴드 에너지로부터 실시간으로 γ를 근사합니다. 사전 계산 없이 동작합니다.
| x_t 상태 | LL 에너지 | HH 에너지 | 효과 | |----------|-----------|-----------|------| | 초반 (순수 노이즈) | ≈ 균일 | ≈ 균일 | β ≈ 1 → 백색 노이즈 | | 중반 | LL 증가 | HH 낮음 | LL 노이즈 억제, HH 부스트 | | 후반 (완성에 가까움) | LL >> HH | 매우 낮음 | LL 강하게 억제, HH 강하게 부스트 |
설치
ComfyUI/custom_nodes/
└── cns_sampler_patch/
├── __init__.py
├── cns_sampler_patch.py
└── README.md
추가 의존성 없음. PyTorch만 있으면 됩니다 (ComfyUI에 이미 포함).
사용법
기본 연결 (SamplerCustomAdvanced)
[KSamplerSelect: euler_ancestral_cfg_pp]
│ SAMPLER
▼
[CNS Sampler Patch]
│ SAMPLER
▼
[SamplerCustomAdvanced] ←── MODEL
파라미터
strength (기본값: 1.0)
CNS 효과의 전체 강도입니다. 0.0이면 일반 백색 노이즈, 1.0이면 완전한 CNS 노이즈입니다.
기본값 1.0에서 시작하세요. 아티팩트가 발생할 경우에만 낮추면 됩니다.
gamma_power (기본값: 0.5)
주파수 라우팅의 날카로움을 결정합니다.
CNS는 각 주파수 대역이 얼마나 "미완성" 상태인지(deficit)를 계산하고, 그 값을 지수로 변환해서 노이즈 가중치를 만듭니다. gamma_power는 그 지수입니다.
쉽게 말하면:
- 값이 낮을수록 (0.1~0.4) — 대역 간 노이즈 차이가 작아집니다. 모든 대역에 비슷한 양의 노이즈가 들어가므로 백색 노이즈에 가까워집니다. 효과가 부드럽고 보수적입니다.
- 값이 높을수록 (0.75~2.0) — 미완성 대역과 완성된 대역 사이의 노이즈 차이가 극단적으로 커집니다. 고주파에 노이즈가 집중되므로 세부 묘사가 강해지지만, 과하면 고주파 아티팩트가 생길 수 있습니다.
논문 기본값은 0.5(√ 변환)입니다.
gamma_scale (기본값: 2.0)
초반 스텝에서 CNS가 얼마나 일찍 개입하는지를 결정합니다.
생성 초반에는 LL과 HH의 에너지 차이가 아직 작습니다. 이 작은 차이를 그대로 쓰면 CNS가 과민 반응해서 구조가 잡히기도 전에 노이즈 분배를 왜곡합니다. gamma_scale은 γ 값을 이 수치로 나눠서 초반 과잉 반응을 억제합니다.
쉽게 말하면:
- 값이 낮을수록 (1.0~1.5) — CNS가 초반부터 적극적으로 개입합니다. 에너지 차이가 조금만 생겨도 바로 노이즈를 재분배하므로, 구도가 불안정해지거나 초반 스텝에서 뭉개지는 현상이 생길 수 있습니다.
- 값이 높을수록 (5.0~25.0) — CNS가 에너지 차이가 충분히 커진 다음에야 반응합니다. 초반에는 거의 백색 노이즈처럼 동작하다가 후반으로 갈수록 점진적으로 컬러링이 강해집니다. 안정적이지만 효과가 늦게 나타납니다.
초반 스텝에서 구조가 뭉개지거나 흐릿하게 나온다면 이 값을 올리세요.
권장 시작값
| 모델 / 샘플러 | strength | gamma_power | gamma_scale | |---|---|---|---| | 대부분의 모델 + euler_ancestral | 1.0 | 0.5 | 2.0 | | Flux / Anima + euler_ancestral_cfg_pp | 1.0 | 0.5 | 3.0 | | 효과 약하게 | 0.7 | 0.3 | 5.0 | | 효과 강하게 | 1.0 | 0.75 | 2.0 |
호환 샘플러
| 샘플러 | CNS 동작 |
|--------|---------|
| euler_ancestral | ✅ |
| euler_ancestral_cfg_pp | ✅ |
| dpm_2_ancestral | ✅ |
| dpmpp_2s_ancestral | ✅ |
| dpmpp_sde | ✅ |
| euler (결정론적) | ⬜ 비활성 — noise_sampler 미호출 |
| dpmpp_2m (결정론적) | ⬜ 비활성 — noise_sampler 미호출 |
| ddim | ⬜ 비활성 — noise_sampler 미호출 |
결정론적(ODE) 샘플러에서는 noise_sampler 자체가 호출되지 않으므로 CNS는 자동으로 비활성 상태가 됩니다. 에러 없이 그냥 통과합니다.
기술 노트
분산 보존
β 가중치의 RMS 정규화로 mean(β²) = 1을 보장해 스텝당 총 주입 에너지를 보존합니다. 최종적으로 std 매칭을 통해 홀수 해상도나 극단적인 β 값 등의 엣지 케이스를 추가로 방어합니다. CNS 논문 Appendix A.2의 에너지 예산 조건을 만족합니다.
Haar DWT vs FFT 방사형 빈
CNS 논문은 FFT + 32개 방사형 주파수 빈 + 사전 계산된 γ(f,t) 행렬을 사용합니다. 이 구현은 Haar DWT(4개 서브밴드) + 실시간 에너지 프록시를 사용합니다. 정밀도는 낮지만 ODE 사전 계산이 필요 없고, 모델 구조와 무관하게 동작합니다.
γ proxy 근사 한계
이 구현의 γ proxy(e_f / Σe)는 현재 스텝 x_t의 서브밴드 에너지 비율이 논문의 γ(f,t) ODE 경로와 단조적으로 일치한다는 가정에 의존합니다. 실제 확산 과정 중반부에는 x_t가 노이즈와 클린 이미지의 혼합이므로 LL 에너지가 반드시 "저주파 복원도"를 정확히 반영하지는 않습니다. 논문의 사전 계산된 γ 행렬 대신 실시간 에너지 기반 근사를 채택한 것으로, 모델 독립성과 단순성을 위한 트레이드오프입니다.
참고 논문
- Davidson et al. (2026). Colored Noise Diffusion Sampling. arXiv:2605.30332
- Yu et al. (2026). Elucidating the SNR-t Bias of Diffusion Probabilistic Models. arXiv:2604.16044
- Wang & Vastola (2023). Diffusion models generate images like painters. arXiv:2303.02490
Run ComfyUI workflows without the setup
No installs, no CUDA version roulette, no GPU sitting idle on your bill. Bring a workflow and run it in the browser.