AESFA
The fast Aesthetic Feature-Aware style transfer node (and its vertical lines)
- src_img
- style_img
- out_img
AESFA is the newest node in the ComfyUI-StyleTransferPlus pack - a 2024 paper ("An Aesthetic Feature-Aware Arbitrary Neural Style Transfer") that's also one of the fastest. Unlike IP-Adapter or a style LoRA, this isn't diffusion at all: you hand it a content image and a style image, it runs a small feed-forward network once, and out comes a stylized copy. No prompt, no checkpoint, no sampling, no seed. If you've ever wanted "paint my photo like this reference" without fighting CFG, this is that.
You'd reach for it when you want the strongest possible stylization speed and you can live with a square output. The whole pack's advice applies: stylize one or two keyframes with AESFA, then propagate to the rest of your video with ComfyUI-EbSynth - batching is technically supported but not recommended.
How it works
Most style transfer methods match feature statistics (mean/std). AesFA gets fancier: it splits the style image into a low-frequency channel (color, tone, layout) and a high-frequency channel (texture, brush strokes), then predicts "aesthetic feature-aware" kernels and biases from the style and convolves the content features with them. You get the painterly texture and the palette, in a single forward pass - which is why it's fast.
Two things to know up front:
- It only works with square images. Inputs get resized to
size×size. Turndo_cropon if you'd rather it resize the height and then center-crop to a square instead of squishing everything. - The authors admit to a failure mode: vertical line-shape artifacts can appear alongside the image, blamed on convolving content features with the predicted kernels plus upsampling. It's a real thing people hit; lower
sizetends to make it less visible.
Inputs and outputs
Only four inputs, and two matter:
src_img/style_img- content and style images. Any IMAGE tensor, so a Load Image or anything upstream.size- the square edge length the inputs get resized to (default 512). Higher = more detail, more VRAM. Fast enough that 512 is a fine starting point.do_crop- resize-then-center-crop to square instead of plain resize.
Output is a single out_img (IMAGE) - straight into a Preview Image or Save Image node. Done.
Install
This is a manual-model node, and that's the part that trips everyone up. The node itself:
cd ComfyUI/custom_nodes
git clone https://github.com/FuouM/ComfyUI-StyleTransferPlus
or search ComfyUI-StyleTransferPlus in ComfyUI Manager and hit install, then restart. Dependencies are just torch, torchvision, scikit-image, einops - nothing exotic.
Then grab main.pth from the AesFA "Getting Started" section and drop it inside the custom node folder, not your usual ComfyUI/models:
ComfyUI/custom_nodes/ComfyUI-StyleTransferPlus/models/aesfa/main.pth
Common issues
- "No such file or directory" / empty output - the model file isn't at
models/aesfa/main.pthinside the pack folder. Double-check the path; the node reads it relative to itself. - Vertical streaks - the known AesFA artifact. Try a smaller
size, or switch styles. - Output is square no matter what - that's by design. Feed square-ish content or use
do_crop.
The model loads on first run and the whole thing executes under torch.no_grad(), so it's lightweight on VRAM. If you need a second style image blended in - color from one, texture from another - that's the sibling AesFA Styles Blending node, same model.
Inputs (4)
| Name | Type | Default | Description |
|---|---|---|---|
| src_img | IMAGE | — | |
| style_img | IMAGE | — | |
| do_crop | BOOLEAN | false | — |
| size | INT | 512 | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| out_img | IMAGE | — |