Extensions/FUDA – Fourier Domain Adaptation
ComfyUI Extension

FUDA – Fourier Domain Adaptation

FUDA: Fourier-based Unsupervised Domain Adaptation nodes for ComfyUI

By bemoregt·Created 5 months ago·Updated 5 months ago· 1
bemoregt/ComfyUI_FUDA
Nodes3
On cloudLocal install
CategoryFUDA
Stars1
Updated5 months ago
Readme

ComfyUI-FUDA

Fourier-based Unsupervised Domain Adaptation nodes for ComfyUI.

FUDA Adaptation Example

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:

  1. Apply 2-D FFT to both images and shift the DC component to the centre.
  2. Mix the low-frequency amplitude of the reference into the source using a weighted blend controlled by beta (region size) and alpha (blend strength).
  3. 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.5 and adjust from there.
  • Increasing beta broadens the spectral region mixed — more texture change but potentially more artefacts.
  • alpha = 1.0 reproduces 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

Node graph overview

FUDA adaptation result

FUDA + Channel Attention result


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:

  1. Using a weighted blend instead of a hard replacement.
  2. 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