Nodes/FM_nodes/ConvIR DeSnow
ComfyUI Node

ConvIR DeSnow

Winter footage got snowed on? ConvIR DeSnow cleans the flakes off

By FuouM·Created 2 years ago·Updated about a year ago· 9
ConvIR DeSnow
  • src_img
  • res_img
model_namesnow100k
model_sizebase

Falling snow is the one weather effect that's genuinely miserable to remove after the fact. Rain streaks are semi-transparent and directional; snowflakes are big, opaque, and close to the lens, so they cover up more of the scene than you'd think. ConvIR DeSnow is the node you'd have sold your soul for the winter your dashcam or doorbell footage came back looking like a static storm. It's part of the ConvIR restoration family in FM_nodes, and like the rest of the family it's a single deterministic pass - no diffusion, no redraws.

How it works

Same backbone as the whole ConvIR line: a U-shaped convolutional encoder-decoder with redundant-feature pruning and multi-scale feature aggregation, from the Revitalizing Convolutional Network for Image Restoration paper. Trained on snow-heavy image datasets, it learns to separate the scene from the flakes and output a clean same-size frame. Feed it a video as a batch of IMAGE frames and it works down the stack with a progress bar.

The inputs that matter

  • src_img - the snowed-on IMAGE. Batch-friendly, so a video's frames work (with the usual per-frame speed caveat).
  • model_name - snow100k (default), csd, or srrs. The distinction here is real: snow100k is the big synthetic snow dataset (thousands of composited snow scenes), csd is the Chinese Snow Dataset, and srrs is trained on real snow scenes. If your footage is actual winter weather rather than a render, srrs tends to hold up better; snow100k is the safe general default.
  • model_size - small or base. No large option on this node. base is the sensible default; small if you're testing on video and don't want to wait.

The res_img output is your de-snowed IMAGE, same resolution, ready to save or hand to an upscaler.

Installing it

Same pack, same routine - ComfyUI Manager (search FM_nodes) or:

cd ComfyUI/custom_nodes
git clone https://github.com/FuouM/FM_nodes

then restart. Requirements are just torch and einops, no API keys. The models come from the ConvIR Google Drive and are not auto-downloaded: drop snow100k-base.pkl (and friends) into custom_nodes/FM_nodes/models/convir/desnow/. The code builds the path as desnow/<model_name>-<size>.pkl, so if you get a file-not-found on queue, that's the folder to check first.

Where people get burned

The main trap is mild snow. If the scene just has a faint dusting or a few large flakes drifting past, a snow-removal model can smear those regions into soft blobs - the model assumes anything white and small is weather. Heavy, dense snow is where this shines. And like the rest of the family, it's a per-frame loop on video, so a long clip through the base model takes a while; preview on a single frame before committing to the whole render. For the actual blizzard footage, though, it's hard to beat for the price of one node and one downloaded model.

CategoryFM_nodes/ConvIR

Inputs (3)

NameTypeDefaultDescription
src_imgIMAGE
model_nameCOMBOsnow100k3 options: csd, snow100k, srrs
model_sizeCOMBObase2 options: small, base

Outputs (1)

NameTypeDescription
res_imgIMAGE