aholk's picture
Upload folder using huggingface_hub
8678d02 verified
metadata
license: mit
tags:
  - image-segmentation
  - multilabel
  - unet
  - pytorch
  - medical-imaging
library_name: transformers
pipeline_tag: image-segmentation

LN_segmentation_sweep

A unet model for multilabel image segmentation trained with sliding window approach.

Model Description

  • Architecture: unet
  • Input Channels: 3
  • Output Classes: 4
  • Base Filters: 128
  • Window Size: 128
  • Downsample Factor: 1.0

Model-Specific Parameters

Training Configuration

Parameter Value
Batch Size 8
Learning Rate 7.77451918775676e-06
Weight Decay 0.00164040349077736
Epochs 100
Patience 10
Dataset GleghornLab/Semi-Automated_LN_Segmentation_10_11_2025

Performance Metrics

Metric Mean Class 0 Class 1 Class 2 Class 3
Dice 0.7781 0.7197 0.7614 0.7271 0.9040
IoU 0.6524 0.5708 0.6199 0.5929 0.8261
F1 0.7781 0.7197 0.7614 0.7271 0.9040
MCC 0.7832 0.7308 0.7730 0.7440 0.8850
ROC AUC 0.9945 0.9945 0.9975 0.9917 0.9943
PR AUC 0.9076 0.8357 0.9108 0.9095 0.9743

Usage

import numpy as np
from model import MODEL_REGISTRY, SegmentationConfig

# Load model
config = SegmentationConfig.from_pretrained("aholk/LN_segmentation_sweep")
model = MODEL_REGISTRY["unet"].from_pretrained("aholk/LN_segmentation_sweep")
model.eval()

# Run inference on a full image with sliding window
image = np.random.rand(2048, 2048, 3).astype(np.float32)  # Your image here
probs = model.predict_full_image(
    image,
    dim=128,
    batch_size=16,
    device="cuda"  # or "cpu"
)
# probs shape: (num_classes, H, W) with values in [0, 1]

# Threshold to get binary masks
masks = (probs > 0.5).astype(np.uint8)

Citation

If you use this model, please cite:

@software{windowz_segmentation,
  title={Multilabel Image Segmentation with Sliding Window U-Net},
  author={Gleghorn Lab},
  year={2025},
  url={https://github.com/GleghornLab/ComputerVision2}
}