ComfyUI Extension: FUDA – Fourier Domain Adaptation
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.
FUDA: Fourier-based Unsupervised Domain Adaptation nodes for ComfyUI
Looking for a different extension?
Custom Nodes (0)
README
ComfyUI-FUDA
Fourier-based Unsupervised Domain Adaptation nodes for ComfyUI.

Implements the FUDA method from:
Boosting unsupervised domain adaptation: A Fourier approach Mengzhu Wang, Shanshan Wang, Ye Wang, Wei Wang, Tianyi Liang, Junyang Chen, Zhigang Luo Knowledge-Based Systems, 2023. https://doi.org/10.1016/j.knosys.2023.110325
How It Works
The Fourier transform decomposes an image into two components:
- Amplitude — encodes low-level statistics: colour, brightness, and style.
- Phase — encodes high-level semantics: structure, edges, and content.
FUDA exploits this property to transfer the visual style of a reference image onto a source image while keeping its content intact:
- Apply 2-D FFT to both images and shift the DC component to the centre.
- Mix the low-frequency amplitude of the reference into the source using a weighted blend controlled by
beta(region size) andalpha(blend strength). - Reconstruct via inverse FFT using the mixed amplitude and the original source phase.
An optional Fourier Transform Channel Attention (FTCA) module further recalibrates channel responses based on per-channel spectral energy, as described in the paper.
Nodes
All nodes live under the FUDA category in the ComfyUI node menu.
FUDA Image Adaptation
The core node. Transfers the low-level style of reference_image onto source_image.
| Port | Type | Description |
|---|---|---|
| source_image | IMAGE (input) | Image to be style-adapted |
| reference_image | IMAGE (input) | Target-domain reference image |
| beta | FLOAT 0.001–0.5 | Low-frequency band radius as a fraction of the shorter spatial dimension. Small values (0.01–0.1) affect global colour and tone; larger values also mix mid-frequency texture. Default: 0.09 |
| alpha | FLOAT 0–1 | Blend weight for the reference amplitude. 0 = no change, 1 = full reference style. Default: 0.5 |
| adapted_image | IMAGE (output) | Style-adapted result |
Tips:
- Start with
beta = 0.09,alpha = 0.5and adjust from there. - Increasing
betabroadens the spectral region mixed — more texture change but potentially more artefacts. alpha = 1.0reproduces the original FDA (Fourier Domain Adaptation) method.
FUDA + Channel Attention
Extends the core node with a Fourier Transform Channel Attention (FTCA) pass. After amplitude mixing, FTCA computes per-channel spectral energy weights through a small MLP and recalibrates the adapted image to sharpen discriminative features.
| Port | Type | Description |
|---|---|---|
| source_image | IMAGE (input) | Image to be style-adapted |
| reference_image | IMAGE (input) | Target-domain reference image |
| beta | FLOAT 0.001–0.5 | Low-frequency band ratio (see above) |
| alpha | FLOAT 0–1 | Reference amplitude blend weight |
| attention_strength | FLOAT 0–1 | Blend between raw adaptation (0) and FTCA-refined output (1). Default: 0.5 |
| reduction | INT 1–16 | Channel reduction ratio inside the attention MLP. Higher = fewer parameters. Default: 4 |
| adapted_image | IMAGE (output) | Attention-refined, style-adapted result |
FUDA Amplitude Visualiser
Renders the centred Fourier amplitude spectrum of an image as a greyscale heatmap. Useful for comparing domain differences before and after adaptation.
| Port | Type | Description |
|---|---|---|
| image | IMAGE (input) | Any image |
| log_scale | BOOLEAN | Apply log(1 + amplitude) compression for better dynamic range visualisation. Default: true |
| amplitude_map | IMAGE (output) | Normalised amplitude heatmap (bright = high energy) |
Installation
Option A — Clone into custom_nodes
cd /path/to/ComfyUI/custom_nodes
git clone https://github.com/your-repo/ComfyUI_FUDA
Option B — Symlink an existing clone
ln -s /Users/m1_4k/ComfyUI_FUDA /path/to/ComfyUI/custom_nodes/ComfyUI_FUDA
Restart ComfyUI. The three nodes will appear under the FUDA category.
Requirements
No additional packages are needed beyond what ComfyUI already installs.
| Dependency | Version |
|---|---|
| Python | ≥ 3.10 |
| PyTorch | ≥ 2.0 (for torch.fft) |
| NumPy | any recent |
Screenshots



Example Workflow
[Load Image] ──► source_image ─┐
├─► [FUDA Image Adaptation] ──► [Preview Image]
[Load Image] ──► reference_image ─┘ beta=0.09 alpha=0.5
To inspect the effect in the frequency domain:
[Load Image] ──► [FUDA Amplitude Visualiser] ──► [Preview Image] (before)
[adapted_image] ──► [FUDA Amplitude Visualiser] ──► [Preview Image] (after)
Parameter Guide
| Goal | Suggested settings |
|---|---|
| Subtle colour grading | beta=0.03, alpha=0.3 |
| Moderate style transfer | beta=0.09, alpha=0.5 |
| Strong style transfer | beta=0.2, alpha=0.8 |
| Maximum reference style | beta=0.3, alpha=1.0 |
| Add attention refinement | Use FUDA + Channel Attention, attention_strength=0.5 |
Background: Why Fourier?
The Fourier transform separates an image's what (phase → semantics) from its how it looks (amplitude → style). By blending only the low-frequency amplitude:
- The content and structure of the source image are fully preserved (phase is untouched).
- The colour palette, illumination, and global style shift toward the reference domain.
This is the foundation of FDA (Fourier Domain Adaptation, Yang et al., 2020), which FUDA extends by:
- Using a weighted blend instead of a hard replacement.
- Adding Fourier Transform Channel Attention to capture richer spectral feature diversity.
Citation
If you use this node in your work, please cite the original paper:
@article{wang2023fuda,
title = {Boosting unsupervised domain adaptation: A Fourier approach},
author = {Wang, Mengzhu and Wang, Shanshan and Wang, Ye and Wang, Wei
and Liang, Tianyi and Chen, Junyang and Luo, Zhigang},
journal = {Knowledge-Based Systems},
year = {2023},
doi = {10.1016/j.knosys.2023.110325}
}
License
MIT
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.