29.79M

Polyp_Segmentation_Defense_Rich_FONT_FIXED

1.

AUTOMATIC POLYP
SEGMENTATION
Сравнение 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 results
UNet++ и 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

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 experiments
Kvasir-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
English     Русский Правила