MOSS-Image SFT banding fix (layers 37–41)

The MOSS-Image SFT model often draws faint, evenly spaced vertical color stripes across smooth areas like skies, fog, backdrops and walls. This LoRA removes most of them while keeping the image very close to what SFT would have made.

Fog forest: Full SFT, Base, this fix, Kijai's fix

It's an exact weight difference: it turns the SFT model's last five transformer layers (37–41) back into the Base model's weights, and leaves the other 37 layers and everything else untouched.

Usage (ComfyUI)

  1. Load the SFT model with Load Diffusion Model: moss_image_sft_bf16.safetensors from Comfy-Org/MOSS-Image.
  2. Add LoraLoaderModelOnly with moss_image_sft_banding_fix_L37-41_bf16.safetensors at strength 1.0.
  3. Keep the rest of your workflow as it is.

No custom nodes are needed. Strength 1.0 is the tested setting; lower values remove less banding.

Don't stack it with Kijai's blocks 21–49 LoRA at βˆ’0.5. That LoRA also covers layers 37–41, so stacking pushes those layers past Base. In testing it changed the image more without reliably removing more banding.

Related: Kijai's MOSS-Image LoRAs

Kijai/MOSS-image_experimental has the SFT-difference LoRAs this work builds on, and his README has the original βˆ’0.5 banding recipe:

His fix and this one take different routes. His subtracts half of the SFT change across layers 3, 4 and 21–41; this one fully reverts only layers 37–41. Pick by eye: the grids below show both on every test image.

Results

Same prompt, seed and settings in every column. Banding is the strength of the repeating vertical color stripe (lower is better; compare within a row). SFT similarity is SSIM against the Full SFT image (higher keeps more of the SFT look).

Image Full SFT banding This fix: banding / SFT similarity Kijai 21–49 @ βˆ’0.5 Base model
Perfume bottle (768Γ—1024) 21.6 9.1 / 93.0% 16.1 / 90.7% 15.1 / 81.7%
Fjord sky (768Γ—1024) 39.5 32.7 / 90.1% 30.8 / 88.2% 5.6 / 77.7%
Goose (768Γ—1024) 122.1 16.0 / 69.4% 23.0 / 50.7% 15.8 / 45.4%
Fog forest (768Γ—1024) 76.8 14.4 / 85.5% 32.8 / 81.0% 7.4 / 59.0%
Oil still life (768Γ—1024) 54.9 17.5 / 89.5% 21.3 / 85.4% 10.4 / 60.5%
Goose (1024Γ—1024) 41.0 19.4 / 77.4% 15.9 / 62.1% 18.8 / 47.4%
Mean SFT similarity 84.2% 76.3% 62.0%

Settings: ER-SDE, 25 steps, CFG 3, Temporal Score Rescaling and skip-layer guidance (layers 22, 24) on, int8 Qwen3.5-9B text encoder, seed 11.

All six test images

These are every image tested, not a selection. Each grid shows Full SFT (top left), Base (top right), this fix (bottom left) and Kijai's 21–49 LoRA at βˆ’0.5 (bottom right), with the banding score and SFT similarity in each label. This fix keeps more of the SFT image every time; on banding alone, Kijai's LoRA scores lower on the fjord sky and the goose at 1024.

Perfume bottle: fix 9.1 vs Kijai 16.1

Perfume bottle

Fjord sky: Kijai lower, 30.8 vs fix 32.7. Neither fixes this one; only Base is clean.

Fjord sky

Goose, 768Γ—1024: fix 16.0 vs Kijai 23.0

Goose at 768x1024

Fog forest: fix 14.4 vs Kijai 32.8

Fog forest

Oil still life: fix 17.5 vs Kijai 21.3

Oil still life

Goose, 1024Γ—1024: Kijai lower, 15.9 vs fix 19.4

Goose at 1024x1024

Color views: brightness removed and color boosted 5Γ—, where the stripes are easy to see

Perfume bottle, color view Fjord sky, color view Goose 768x1024, color view Fog forest, color view Oil still life, color view Goose 1024x1024, color view

How the layers were found

  1. Block swaps with exact weights. Copying the Base model's weights into SFT for one block range at a time showed that removing SFT's changes in layers 21–41 fixes the banding, while reverting layers 0–20 alone does not. Within that range, attention (qkv, o) and MLP (ffn_up_gate, ffn_down) weights all contribute; the norms don't.
  2. An activation probe. Running the residual stream at every layer and step through the model's own output head showed the stripe frequency. In SFT it starts in the top layers (37–41) and then builds up across sampling steps, because each step's striped output feeds the next.
  3. Bakeoff. Reverting layers 37–41 for every step was the best trade-off across five prompts. It removed more banding than a late-step-only revert and changed the image less than Kijai's LoRA.

Stripe energy by layer and sampling step

The stripe frequency inside the model, by layer (vertical) and sampling step (horizontal). In Full SFT (left) it builds up from about step 7 and spreads through every layer; it never starts with the fix or in Base.

The full write-up, with the ablation charts, probe figures, step-window tests, open questions and the tools to reproduce it all, is in ANALYSIS.md.

Limitations

  • Resolution matters. Banding is much stronger at smaller widths. At 768 px wide even this fix leaves some; in our tests SFT barely banded at 1280 px and above.
  • Some images still band. On the fjord sky, every SFT-based fix stayed around 30; only the Base model was clean. That banding comes from somewhere other than layers 37–41.
  • Small test set. Six images, mostly one seed, with the sampler settings above. Seeds swing the banding score a lot, so treat small differences in the table as noise.
  • Not pixel-identical to an exact layer swap. ComfyUI's LoRA loader rounds the merged weights slightly differently, which changes fine details the way a nearby seed would. On average it scores the same.
  • ComfyUI format. The file uses ComfyUI's full-difference (.diff) LoRA keys and has only been tested in ComfyUI.

File

File Size Contents
moss_image_sft_banding_fix_L37-41_bf16.safetensors 1.13 GB Base minus SFT weights for layers 37–41 (40 tensors, bf16, full rank)

SHA-256: 01329abd340dd9cf55677381a11558fe5307c7fd648f1988b441172fbbd86fd5

Credits

  • OpenMOSS for MOSS-Image Base and SFT (Apache-2.0), and Comfy-Org for the ComfyUI repack.
  • Kijai for the SFT-difference LoRAs, and a big thanks for pointing me in the right direction: his note that the SFT causes the banding in the later blocks, fixable with negative strength, is where this investigation started.
Downloads last month

-

Downloads are not tracked for this model. How to track
Inference Providers NEW
This model isn't deployed by any Inference Provider. πŸ™‹ Ask for provider support

Model tree for MATLOWAI/MOSS-Image-SFT-banding-experimental

Adapter
(6)
this model