CoolFace
Modelpublic

ilMassy/semseg-convnext-segformer-voc2012

sourceHugging Faceotherupdated 7d agoView on Hugging Face
0likes
Model Card

Segmentazione Semantica Comparata: ConvNeXt-UNet vs SegFormer (PASCAL VOC 2012)

Checkpoint dei due modelli addestrati per il progetto universitario di confronto tra un'architettura encoder-decoder convoluzionale moderna (ConvNeXt-UNet) e un'architettura transformer-based nativa per la segmentazione (SegFormer), sul dataset PASCAL VOC 2012 (Segmentation).

Codice sorgente, dataset, script di training/valutazione/interpretabilità e report completo: 👉 github.com/ilMassy/semseg-showdown-convnext-segformer

File disponibili

FileModelloParametrimIoU (val)Dice/F1 (val)
convnext_unet_best.ptConvNeXt-UNet (encoder tu-convnext_tiny, decoder U-Net)31.93M0.75940.8549
segformer_best.ptSegFormer-B0 (fine-tuned da nvidia/segformer-b0-finetuned-ade-512-512)3.72M0.65430.7803

Entrambi addestrati per 50 epoche, img_size=512, loss Dice+Focal, augmentation (Albumentations) attiva.

Checkpoint dell'ablation study (solo ConvNeXt-UNet)

FileConfigurazionemIoU (val)Dice/F1 (val)
ablation/loss_ce/convnext_unet_best.ptLoss Cross-Entropy pura (invece di Dice+Focal)0.75310.8489
ablation/no_augmentation/convnext_unet_best.ptAugmentation disattivata0.70760.8193
ablation/resolution_384/convnext_unet_best.ptRisoluzione input 384px (invece di 512px)0.75990.8546

Ogni configurazione varia un solo parametro rispetto al baseline (convnext_unet_best.pt sopra); tutte le altre impostazioni restano invariate. Dettagli e interpretazione dei risultati nel report del progetto (repository GitHub).

Come usarli

I checkpoint sono dizionari PyTorch con questa struttura:

python
{
    "model_state_dict": ...,   # pesi del modello
    "epoch": ...,               # epoca del salvataggio (miglior mIoU)
    "val_miou": ...,
    "val_dice": ...,
    "args": ...,                 # configurazione di training usata
}

Per caricarli, serve il codice di definizione modello dal repository GitHub (src/models.py, funzione build_model):

python
import torch
from models import build_model

checkpoint = torch.load("convnext_unet_best.pt", map_location="cpu")
model = build_model("convnext_unet", num_classes=21)
model.load_state_dict(checkpoint["model_state_dict"])
model.eval()

Stessa procedura per segformer_best.pt, sostituendo "convnext_unet" con "segformer".

Dataset

Addestrati e valutati su PASCAL VOC 2012 (Segmentation): 1464 immagini di training, 1449 di validazione, 21 classi (20 oggetto + background).

Licenza

Questo repository contiene checkpoint con provenienza diversa:

  • —`convnext_unet_best.pt`: fine-tuned a partire da un encoder ConvNeXt pretrained su ImageNet (via timm, licenza Apache-2.0) più un decoder U-Net da segmentation-models-pytorch (licenza MIT).
  • —`segformer_best.pt`: fine-tuned a partire da nvidia/segformer-b0-finetuned-ade-512-512, licenza "Other" (NVIDIA, custom) — consultare la licenza originale per i termini d'uso.

Rilasciato per scopi accademici nell'ambito del corso Sistemi Intelligenti per Internet (Università Roma Tre).