CW-BASS v2 — ADE20K (Saturation-Aware Pseudo-Label Selection)

Demo Project page Code

CW-BASS v2 model familyPascal VOC · Cityscapes · ADE20K · 🤗 Interactive demo · 🌐 Project page · 💻 Code

CW-BASS v2 on ADE20K — input (left) and predicted segmentation overlay (right)

ADE20K checkpoint for CW-BASS v2, a saturation-aware pseudo-label selection method over a DINOv2-Base encoder. CW-BASS v2 combines confidence-weighted boundary-aware self-training, a held-out calibration slice (unbiased noise estimate), and a self-adaptive confidence floor, arbitrated by a one-pass reliability gate: it measures π_kept = Pr[correct | c ≥ τ] on a held-out slice and uses strict filtering when π_kept ≥ τ, the adaptive floor otherwise. See the Pascal model and the paper for the full method.

ADE20K is the regime where adaptive filtering earns its keep. Although the teacher is saturated (most pixels are high-confidence), its confident set is confidently unreliable — π_kept ≈ 89%, well below the ≥ 95% strict filtering assumes. The gate reads this and selects the adaptive floor, which recovers accuracy a strict cutoff throws away. This checkpoint is the model that rule produces.

  • Backbone: DINOv2-Base (ViT-B/14) + DPT-lite decoder, 150 ADE20K classes.
  • This checkpoint: ADE20K 1/8 split (2,526 labeled images), single seed, EMA teacher weights.
  • Rule the gate selected here: adaptive floor.

Results (honest framing)

Split CW-BASS v2 (gate→floor) Strict τ=0.95 (our repro) UniMatch V2-B (reported)
1/8 (2,526) 50.58 49.10 49.8
  • The floor beats our compute-matched strict baseline by +1.5 mIoU and edges above UniMatch V2-B's reported 49.8 — the one dataset here where CW-BASS v2's selection changes the answer.
  • This is a single-seed result and we report it as such; the value of the paper is the gate that predicts the sign of this gap blind, demonstrated across six teachers, not this cell alone.
  • ADE20K is the 150-class long-tail: the lowest-reliability teacher of the three, exactly where the paper argues an unbiased noise estimate + adaptive floor should help — and does.

Usage

import torch
from torchvision import transforms as T
from PIL import Image
from model.semseg.dino_segmentor import DINOv2Segmentor   # from the CW-BASS v2 code
from core.inference import whole_inference

model = DINOv2Segmentor(backbone='dinov2_vitb14', nclass=150, pretrained=False).eval()
sd = torch.load('cwbassv2_ade20k_dinov2b_1over8.pth', map_location='cpu')
model.load_state_dict(sd, strict=False)          # training-only proj_head is inference-unused
norm = T.Compose([T.ToTensor(), T.Normalize((0.485, 0.456, 0.406), (0.229, 0.224, 0.225))])
img = norm(Image.open('example.jpg').convert('RGB')).unsqueeze(0)
with torch.no_grad():
    pred = whole_inference(model, img).argmax(1)  # [1, H, W], class indices 0..149 (ADE cats 1..150)

Interactive demo: psychofict/cwbass-v2-demo.

Citation

@article{tarubinga2026cwbassv2,
  title   = {CW-BASS v2: Saturation-Aware Pseudo-Label Selection for
             Semi-Supervised Segmentation under Foundation-Model Teachers},
  author  = {Tarubinga, Ebenezer},
  year    = {2026},
  note    = {Preprint; arXiv ID to be added}
}
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