Polyp_Segmentation_Defense_Rich_FONT_FIXED
1.
AUTOMATIC POLYPSEGMENTATION
Сравнение YOLO11s-Seg, U-Net, UNet++ и PraNet
для сегментации полипов на колоноскопических
изображениях
Kvasir → CVC
RTX 3060
Strict CVC Dice
CVC IoU
Best CNN
0.7837
YOLO Kvasir-only
0.7161
YOLO Kvasir-only
PraNet
Precision 0.7550
512×512
Final Project Defense
Task
Data
Models
Results
Errors
Summary
2.
Задача проектане просто найти полип, а точно восстановить его маску
Что требуется от модели
Почему это интересная ML-задача
• На вход: RGB-изображение колоноскопии.
• На выход: бинарная маска полипа.
• Качество измеряется перекрытием GT и prediction.
• Главная проверка — перенос на другой датасет.
• Полипы различаются по размеру, форме и
текстуре.
• Границы часто размыты и похожи на фон.
• Датасеты отличаются камерой, качеством и
доменом.
• Validation score на одном наборе может завышать
реальную устойчивость.
Основная
метрика
Строже
Ошибка
Dice
IoU
FP/FN
Ключевой вопрос: какая модель лучше переносится
с Kvasir-SEG на независимый CVC-ClinicDB?
4 MODELS
Task
Data
Models
Results
Errors
Summary
2 DATASETS
512×512
3.
Данные и протоколстрого разделяем generalization и combined-data experiment
Kvasir-SEG
Models
CVC-ClinicDB
train + validation
YOLO / U-Net / UNet++ / PraNet
external test
→
• 1,000 image-mask pairs
• 880 train / 120 validation
• checkpoint selection
→
• same 512×512 input
• same external split
• compare Dice/IoU
• independent domain
• no retraining
• domain-shift test
STRICT EVALUATION
COMBINED YOLO
CVC не участвует в обучении: это честная проверка unseendomain generalization.
Kvasir + CVC в обучении: это отдельный эксперимент про
diversity данных.
Task
Data
Models
Results
Errors
Summary
4.
Pipeline проектаот масок к финальному сравнению моделей
01
02
EDA
изображения, маски, размеры
04
→
mask → polygon для YOLO
05
Evaluate
→
Kvasir validation
03
Prepare
→
YOLO / U-Net / UNet++ /
PraNet
06
External
→
CVC-ClinicDB test
Train
Analyze
error maps + robustness
Финальная логика: одна и та же external split CVC + общий input size 512×512 + разделение strict и combined результатов.
Task
Data
Models
Results
Errors
Summary
→
5.
Подготовка данныхразные форматы для YOLO и CNN, единая геометрия 512×512
YOLO11s-Seg
U-Net / UNet++ / PraNet
Исходная GT mask читается как binary mask.
cv2.findContours → внешний контур полипа.
Координаты нормализуются в диапазон [0,1].
Label: class_id + polygon points.
Контроль: polygon реконструируется обратно и
сверяется с GT по IoU.
MASK
→
CONTOUR
→
YOLO
Image + corresponding raster mask.
RGB conversion и resize до 512×512.
Image → float tensor, channel-first.
Mask → binary tensor (1, 512, 512).
Prediction: sigmoid → threshold 0.5 → binary mask.
Input
Target
Threshold
3×512×5
12
1×512×5
12
0.5
Зачем verification? Ошибка при mask→polygon conversion могла бы искусственно ухудшить YOLO ещё до обучения.
Task
Data
Models
Results
Errors
Summary
6.
Модели и training setupчетыре архитектуры, общий финальный размер входа 512×512
YOLO11s-Seg
U-Net
instance segmentation
512×512 • до 120 эпох • AMP
batch 2 • 80 эпох • Adam 1e-3
polygon labels • mask mAP + Dice/IoU
skip connections • BCE + Dice • scheduler • AMP
UNet++
PraNet
nested skip architecture
ResNet34 • no pretrained
Res2Net50 • no pretrained
BCE + Dice • Adam 1e-3 • scheduler • AMP
4 outputs • structure loss • Adam 1e-4 • early stop
baseline CNN
polyp-specialized CNN
Контроль справедливости: старые YOLO 640×640 runs исключены; финальный cross-model comparison использует 512×512.
Task
Data
Models
Results
Errors
Summary
7.
Метрики оценкисмотрим не только средний score, но и тип ошибки
Dice
IoU
Precision
2TP/(2TP+FP+FN)
TP/(TP+FP+FN)
TP/(TP+FP)
главная overlap-метрика
строже, чем Dice
контроль false positives
Recall
mAP50/95
wFβ / Sα / Eφ / MAE
TP/(TP+FN)
YOLO masks
extended
сколько полипа найдено
instance-segmentation quality
структурное качество маски
Правило: Dice/IoU = качество маски • Precision/Recall = характер ошибки • mAP = YOLO • MAE: ниже лучше.
Task
Data
Models
Results
Errors
Summary
8.
U-Net baselineпростая encoder-decoder модель задаёт нижнюю точку сравнения
Архитектура и обучение
External CVC result
Encoder → bottleneck → decoder + skip connections.
Input 512×512 • batch size 2 • max 80 epochs.
Adam, initial LR 1e-3.
Loss = BCEWithLogitsLoss + Dice Loss.
ReduceLROnPlateau по validation Dice.
AMP: autocast + GradScaler в training loop.
Dice
IoU
0.5360
strict CVC test
0.4220
strict CVC test
U-Net — baseline:
он нужен не как
ожидаемый
победитель, а как
понятная точка
отсчёта для более
сложных
архитектур.
Почему результат важен
• На CVC overlap заметно ниже, чем у UNet++ / PraNet / YOLO.
• Более сложные skip/refinement механизмы дают практический
выигрыш.
• Baseline помогает показать, что улучшение — не только
“красивые метрики”, а эффект архитектуры.
Task
Data
Models
Results
Errors
Summary
9.
CNN resultsUNet++ и PraNet: training history + Kvasir/CVC metrics
UNet++
Kvasir
PraNet
CVC
Dice 0.6684
Dice 0.7676
IoU 0.5834
IoU 0.6813
Precision 0.8424Precision
Recall 0.6865 0.7327
Recall 0.7023
Kvasir
CVC
Dice 0.8301
IoU 0.7476
Precision
0.8531
Recall 0.7965
Dice 0.7449
IoU 0.6572
Precision
0.7550
Recall 0.8109
Что видно из результатов• PraNet сильнее UNet++ на обоих датасетах по Dice и IoU.
• Обе модели теряют overlap и Precision при переносе на CVC.
• Recall на CVC слегка растёт → проблема не только в пропусках, но и в неточных/лишних областях.
• PraNet: лучший checkpoint — epoch 42, validation Dice 0.8301.
Extended metrics подтверждают картину: PraNet выше UNet++ по wFβ, Sα и Eφ max на Kvasir и CVC.
Task
Data
Models
Results
Errors
Summary
10.
Extended segmentation metricsдополнительная проверка качества UNet++ и PraNet
Как читать
Structural / saliency-style metrics
1
0,9
0,8
0,7
wFβ — weighted foreground quality.
Sα — structural similarity.
Eφ max — alignment prediction и GT.
MAE — абсолютная ошибка; ниже лучше.
0,6
0,5
0,4
0,3
MAE
0,2
UNet++ Kvasir 0.0687 → CVC 0.0480
PraNet Kvasir 0.0534 → CVC 0.0402
0,1
0
UNet++ K
Task
UNet++ CVC
wFβ
Data
Models
Sα
PraNet K
Eφ max
Results
PraNet CVC
Errors
PraNet выше UNet++ по wFβ, Sα и Eφ на обоих
датасетах.
Summary
11.
Главный результат: strict CVC testмодели обучены без CVC training samples
Лидер по overlap
CVC-ClinicDB: Dice / IoU
1
YOLO11s-Seg
Dice 0.7837 • IoU 0.7161
0,9
0,8
0,7
Лидер по sensitivity
0,6
Recall
0.8395
YOLO Kvasir-only
0,5
0,4
Лучшая CNN precision
0,3
PraNet
0.7550
меньше лишних FP pixels
0,2
0,1
UNet++: P 0.7327 • R 0.7023
0
U-Net
UNet++
Dice
IoU
PraNet
YOLO
PraNet: P 0.7550 • R 0.8109
YOLO: R 0.8395 • best Dice/IoU
Task
Data
Models
Results
Errors
Summary
12.
Domain shift: Kvasir → CVCпри переносе на другой датасет качество падает
In-domain vs external
1
UNet++ drop
Dice −0.0992 • IoU −0.0980
Precision −0.1097 • Recall +0.0158
0,9
0,8
0,7
0,6
0,5
PraNet drop
0,4
Dice −0.0851 • IoU −0.0903
Precision −0.0981 • Recall +0.0144
0,3
0,2
0,1
0
UNet++ K
Task
UNet++ CVC
Dice
Data
PraNet K
PraNet CVC
IoU
Models
Results
Errors
Recall слегка растёт, но overlap и precision
Интерпретация
падают: модель чаще находит полип, но
границы/лишние области становятся менее
точными.
Summary
13.
YOLO experimentsKvasir-only для generalization, Combined — для data diversity
Kvasir-only YOLO
Combined YOLO
512×512 • YOLO11s-Seg • AMP • до 120 epochs
Kvasir + CVC в обучении — не strict external ranking
Mean Dice
Mean IoU
Best epoch
mAP50
0.8707
0.8064
118
0.9650
mAP50
mAP50-95
mAP50-95
Mask Recall
0.9346
0.7292
0.7748
0.9340
Главная мысль: Combined показывает пользу разнообразия данных, но не доказывает unseen-domain generalization.
Task
Data
Models
Results
Errors
Summary
14.
Qualitative analysisпроверяем не только средний score, но и реальные ошибки
UNet++ predictions
PraNet prediction
• best / median / worst cases показывают распределение качества
• error maps отделяют TP, FP и FN пиксели
• основная сложность — границы полипа и ложноположительные области
Error maps
Task
Data
Models
Results
Errors
Summary
15.
Robustness и ограничениячто проверено дополнительно и где границы проекта
Robustness tests
Limitations
• Motion Blur
• Gaussian Blur
• Gaussian Noise
• Darkness
• Low Contrast
небольшие медицинские датасеты
нет prospective clinical validation
UNet++/PraNet без pretrained weights
Combined YOLO не является unseen-domain test
оценивалась маска, не клиническое решение
Для каждого degradation: тот же trained checkpoint →
prediction → Dice/IoU vs clean baseline. Никакого
retraining.
Честное ограничение повышает доверие к отчёту: мы не
завышаем claim сверх данных.
Task
Data
Models
Results
Errors
Summary
16.
Итоговые выводычто проект доказал
01
YOLO11s-Seg
лучший strict external Dice / IoU / Recall на CVC
02
PraNet
сильнейшая CNN-модель и лучшая external Precision
03
Domain shift
качество падает при переносе Kvasir → CVC
04
Data diversity
Combined YOLO показывает пользу более разнообразного training set
05
Full pipeline
EDA → подготовка → обучение → external test → robustness → error analysis
Strict CVC winner: YOLO Dice 0.7837 / IoU 0.7161 • Best CNN: PraNet Dice 0.7449 / Precision 0.7550
Главный вывод: external validation важнее одной красивой validation-метрики на исходном датасете.
Task
Data
Models
Results
Errors
Summary