convnext-seg โ Cystoscopy scope-ring segmentation
ConvNeXt-Tiny (timm convnext_tiny.fb_in22k_ft_in1k, features_only) + FPN decoder,
binary segmentation of the cystoscope field-of-view ring. Motivates the ring-crop
normalization used in the G benchmark preprocessing.
Metrics (validation, 49 images / 8 patients, patient-disjoint)
- Best val Dice: 0.9037 (epoch 23, checkpointed)
- Final val Dice: 0.8990, final val IoU: 0.8165
- Training: 340 imgs / 35 patients, 384px, batch 32, AdamW lr 1e-4 wd 0.01, Dice+CE loss, seed 42
Usage
import sys, torch
sys.path.insert(0, "<download_dir>")
from train_segmentation import SegModel # expects timm installed
model = SegModel(pretrained=False)
model.load_state_dict(torch.load("results/best_model.pt", map_location="cpu", weights_only=False))
model.eval()
# input: 1x3x384x384 float tensor -> logits [1,2,H,W]; argmax(1)==1 is the scope field
Paths in the code are sanitized placeholders (, ).