Voriacare · Edge Cardiac-CT

Thí nghiệm STU-Net — transfer learning

Thử "kiểu training khác": model pretrain trên TotalSegmentator → fine-tune cho pericardium ROI, so với nnU-Net baseline.
📅 2026-07-11 🖥 DGX Spark GB10 · arm64 🧠 STU-Net-S (14.6M) · fork nnU-Net 2.2

Trạng thái trực tiếp (tự cập nhật 30s): xong

Phase
setup→preprocess→finetune
Epoch
/40 (validate)
EMA pseudo Dice
held-out (val-split)
Epoch time
GB10

Cập nhật (auto): . Nguồn: training_log của STU-Net trong nnunet_stunet/results/….

1Kết quả STU-Net (held-out 200 ca)

Held-out Dice
0.9585
vs silver · 200 ca
Params
14.6M
STU-Net-S
Epochs
40
fine-tune (validate)
Epoch time
~106s
GB10
So sánh head-to-head với nnU-Net (bảng từng ca · 3D side-by-side · Wilcoxon) → xem tab So sánh →. Trang này chỉ mô tả quá trình STU-Net.

2Setup & gotchas đã xử lý Xong

Hạng mụcChi tiết
Khả thi GB10/arm64fork nnU-Net 2.2 cài trên torch 2.13/CUDA 13.3 · STUNetTrainer_small_ft import OK · torch giữ CUDA
Imagevoriacare-stunet:eat (nền voriacare-dgx:eat + fork 2.2 -e --no-deps, giữ deps sẵn có)
Weightssmall_ep4k.model (117MB, pretrain 4000ep trên TotalSegmentator, tải qua gdown)
PreprocessRe-preprocess Dataset500 bằng bản 2.2 (format .npz, dir riêng — không đụng baseline 2.8.1 .b2nd)
Gotcha 1fork setup.py rỗng → không có console_scripts → gọi entry bằng python -c / chạy script trực tiếp
Gotcha 2gdown 6.1.0 bỏ --fuzzy → dùng file-id trực tiếp
Gotcha 3chữ ký build_network_architecture kiểu 2.2 ≠ 2.8 → buộc dùng fork 2.2
Gotcha 4 (torch drift)PolyLRScheduler truyền tham số verbose mà torch 2.13 đã bỏ → patch bỏ arg
Gotcha 5 (torch drift)torch.load torch 2.6+ mặc định weights_only=True → checkpoint 2023 (numpy scalar) lỗi → patch weights_only=False (nguồn tin cậy)
Trung thực: STU-Net vẫn học lại nhãn silver hull (over-inclusive ~1.6×). Kỳ vọng của transfer là hội tụ nhanh / Dice-vs-hull tương đương hoặc nhỉnh với ít param hơnKHÔNG phải EAT lâm sàng tốt hơn (cái đó vẫn cần gold label).