PixCon β ADE20K (Clean-Positive Contrastive SSSS)
PixCon model family β Pascal VOC Β· Cityscapes Β· ADE20K Β· π€ Interactive demo Β· π Project page Β· π» Code Β· π Paper
ADE20K checkpoint for PixCon, a clean-positive pixel-contrastive framework over a DINOv2-Base encoder. PixCon adds one contrastive branch on a UniMatch V2 consistency backbone: a per-class memory bank admitting only labeled pixels the student already classifies correctly (contamination-free positive set, Ο_F = 0, by construction), with no inference-time parameters and no bank-specific threshold. See the Pascal model and the paper for the method and analysis.
- Backbone: DINOv2-Base (ViT-B/14) + DPT-lite decoder, 150 ADE20K classes.
- This checkpoint: ADE20K 1/8 split (2,526 labeled images), single seed.
Results (honest framing)
Compute-matched one-switch comparison against our DINOv2 UniMatch V2 reproduction (single seed):
| Split | PixCon | UniMatch V2 (our repro) | Published UM2-B |
|---|---|---|---|
| 1/8 | 49.23 | 49.10 | 49.8 |
PixCon ties the compute-matched baseline (+0.13, within noise) and sits below the published UniMatch V2-B figure. ADE20K is the 150-class long-tail, the lowest-precision teacher: the paper measures the pseudo-label false-positive rate Ο_F = 0.106 here (β6Γ Pascal's 0.018), yet the Ο_F = 0 guarantee still ties rather than wins, which is the paper's point: at foundation-model strength the guarantee acts as robustness, not an accuracy lever. Over the ADE20K 1/8 labeled set essentially all 150 classes accumulate clean anchors (coverage is not the bottleneck). This cell is single-seed (see the paper's ADE20K table).
Usage
import torch
from torchvision import transforms as T
from PIL import Image
from model.segmentor import PixConSegmentor # from the PixCon code
from core.inference import whole_inference
model = PixConSegmentor(backbone='dinov2_vitb14', nclass=150, pretrained=False).eval()
sd = torch.load('pixcon_ade20k_1_8.pth', map_location='cpu')
model.load_state_dict(sd, strict=False) # 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/pixcon-demo.
Citation
@article{tarubinga2026pixcon,
title = {PixCon: Clean-Positive Contrastive Learning for Foundation-Model
Semi-Supervised Segmentation},
author = {Tarubinga, Ebenezer},
journal = {arXiv preprint arXiv:2607.03068},
year = {2026}
}
