VC Heart — model tách tim riêng, thay thế TotalSegmentator
Mục tiêu không phải tăng độ chính xác EAT (nút thắt là màng ngoài tim, không phải tim),
mà là tự chủ: bỏ phụ thuộc TotalSegmentator lúc chạy, license sạch cho cả thương mại,
và nhanh hơn ở bước chậm nhất của quy trình.
Hai trục trặc kỹ thuật đã xử lý: (1) một số file NIfTI có
direction cosines không trực chuẩn khiến ITK báo lỗi — đọc nhãn bằng nibabel rồi gắn
geometry từ chính file CT; (2) trục mảng khác nhau (nibabel x,y,z vs SimpleITK z,y,x) — đã chuyển trục.
Kiểm chứng: mean HU trong vùng nhãn = 66–123 HU (máu/cơ tim) → nhãn khớp CT, không lệch.
DTrạng thái huấn luyện
1
Tải dataset 23.6 GB
→
2
Dựng Dataset501 827 ca
→
3
Preprocess nnU-Net
→
4
Train 3d_fullres · 250 ep
→
5
Đánh giá vs TotalSeg
Trạng thái:HOÀN TẤT
Hạng mục
Kết quả
Epoch
250 / 250 · 89 s/epoch · ~6 h 15 m
Pseudo dice (epoch cuối)
0.9665
EMA best
0.9641
Validation 166 ca hold-out
Dice 0.9484 · IoU 0.9139
Diễn biến: 0.858 (ep12) → 0.938 (ep55) → 0.956 (ep130) → 0.9665 (ep250).
Val bám sát train suốt quá trình — không overfit.
EĐánh giá đối chiếu với TotalSegmentator
Phép so đầu-đối-đầu: cùng ca, cùng máy, cùng GPU, chạy trên
hai bộ dữ liệu độc lập — và cả hai đều KHÔNG nằm trong tập train.
Chỉ số
ImageCAS 15 ca · CT tim gated
CCTA nội bộ 44 ca · lát mỏng
Dice vs TotalSegmentator
0.9697
0.9707 ± 0.0033
Dice thấp nhất
0.9656
0.9624
Chênh thể tích
−0.7%
+0.3%
Thời gian / ca — VC model
6.8 s
9.3 s
Thời gian / ca — TotalSegmentator
26.2 s
25.3 s
Tăng tốc
3.9×
2.7×
Ca chạy được
15/15
44/44 · 0 lỗi
✅ Kết luận: model tái lập TotalSegmentator ở mức Dice ~0.97 trên cả hai bộ,
chênh thể tích dưới 1%, và nhanh hơn 2.7–3.9×. Độ lệch chuẩn 0.0033 → ổn định trên mọi ca,
không ca nào hỏng. Đủ điều kiện thay TotalSegmentator ở Bước 3.
Hình 3D so sánh
🖱 Xem 3D tương tác toàn bộ 44 ca (xoay/zoom, bật-tắt từng model): mở trình xem 3D →
Chọn hiển thị các ca Dice THẤP NHẤT (không chọn ca đẹp) để thấy đúng điểm yếu.
Tổng quan 8 ca.Xanh = VC model chồng lên
cam = TotalSegmentator. Hai bề mặt gần như trùng khít ở mọi ca.CCTA-11 — ca Dice thấp nhất (0.9624).A lát axial: viền liền = VC model,
nét đứt = TotalSegmentator — gần như trùng. B/C bề mặt 3D từng model (362 vs 366 mL).
D chồng hai bề mặt. Ngay ca tệ nhất, khác biệt cũng chỉ là lớp vỏ mỏng ở rìa.CCTA-14 — ca Dice thấp thứ hai (0.9640).
🔒 Quyền riêng tư: dữ liệu CCTA là bệnh nhân thật. Toàn bộ chỉ dùng mã
CCTA-01…CCTA-44; bảng ánh xạ tên lưu ngoài repo, không commit và không đưa lên web.
Hình chỉ hiện bề mặt tim, không có thông tin định danh.
⚠️ Cách đọc Dice ở đây: TotalSegmentator là mốc tham chiếu (thứ ta đang thay thế),
không phải chân lý giải phẫu. Dice cao nghĩa là model tái lập được TS — chứ không có nghĩa cả hai đều đúng tuyệt đối.
Giới hạn đã biết: dữ liệu train là CT thường quy toàn thân, không phải
CT tim gated. Model sẽ tổng quát tốt nhưng có thể chưa sắc bằng trên CT tim chuyên dụng →
bước nâng cấp tự nhiên tiếp theo là fine-tune trên chính ImageCAS. Đây không phải thiết bị y tế.