# Pytanie 39: Segmentacja obrazu ## Pytanie **"ScharakteryzowaΔ‡ problem segmentacji obrazu. PrzedstawiΔ‡ podstawowe strategie i algorytmy segmentacji przy uΕΌyciu metod klasycznych oraz sieci neuronowych."** Przedmiot: TWM (Techniki Wizji Maszynowej) --- ## πŸ“š OdpowiedΕΊ gΕ‚Γ³wna ### 1. Definicja problemu segmentacji ``` β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚ SEGMENTACJA OBRAZU β”‚ β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€ β”‚ β”‚ β”‚ Obraz wejΕ›ciowy: Maska segmentacji: β”‚ β”‚ β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚ β”‚ β”‚ β–‘β–‘β–ˆβ–ˆβ–ˆβ–ˆβ–‘β–‘β–‘β–‘β–‘β–‘ β”‚ β”‚ β–‘β–‘1111β–‘β–‘β–‘β–‘β–‘β–‘ β”‚ β”‚ β”‚ β”‚ β–‘β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–‘β–‘β–‘ β”‚ β†’ β”‚ β–‘11111111β–‘β–‘β–‘ β”‚ β”‚ β”‚ β”‚ β–‘β–‘β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–‘β–‘ β”‚ β”‚ β–‘β–‘11111111β–‘β–‘ β”‚ β”‚ β”‚ β”‚ β–‘β–‘β–‘β–‘β–ˆβ–ˆβ–ˆβ–ˆβ–‘β–‘β–‘β–‘ β”‚ β”‚ β–‘β–‘β–‘β–‘1111β–‘β–‘β–‘β–‘ β”‚ β”‚ β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β”‚ β”‚ β”‚ β”‚ Cel: PrzypisaΔ‡ kaΕΌdemu pikselowi etykietΔ™ klasy/regionu β”‚ β”‚ β”‚ β”‚ Typy segmentacji: β”‚ β”‚ β€’ Semantic: klasa dla kaΕΌdego piksela (person, car, sky) β”‚ β”‚ β€’ Instance: rozrΓ³ΕΌnia instancje tej samej klasy β”‚ β”‚ β€’ Panoptic: semantic + instance (unified) β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ ``` --- ### 2. Metody klasyczne #### 2.1 Thresholding (progowanie) ``` Globalne: pixel_out = 255 if pixel_in > T else 0 Otsu (automatyczny prΓ³g): - Maksymalizuje wariancjΔ™ miΔ™dzy klasami - σ²_between = wβ‚€w₁(ΞΌβ‚€ - μ₁)Β² Adaptacyjne: - Lokalny prΓ³g dla kaΕΌdego regionu - T(x,y) = mean(neighborhood) - C β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” Threshold β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚β–‘β–’β–“β–ˆβ–‘β–’β–“β–ˆβ–‘β–’β–“β–ˆβ–‘β–’β–“β–ˆ β”‚ ────────────→ β”‚β–‘β–‘β–ˆβ–ˆβ–‘β–‘β–ˆβ–ˆβ–‘β–‘β–ˆβ–ˆβ–‘β–‘β–ˆβ–ˆ β”‚ β”‚β–’β–“β–ˆβ–‘β–’β–“β–ˆβ–‘β–’β–“β–ˆβ–‘β–’β–“β–ˆβ–‘ β”‚ T β”‚β–‘β–ˆβ–ˆβ–ˆβ–‘β–ˆβ–ˆβ–ˆβ–‘β–ˆβ–ˆβ–ˆβ–‘β–ˆβ–ˆβ–ˆβ–‘ β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ ``` #### 2.2 Region Growing ``` Algorytm: 1. Wybierz punkt startowy (seed) 2. Badaj sΔ…siadΓ³w 3. JeΕ›li podobny (|I(neighbor) - I(region)| < threshold) β†’ dodaj do regionu 4. Powtarzaj aΕΌ brak nowych pikseli Seed Krok 1 Krok 2 Wynik ● ●● ●●● ●●●● ● ●●● ●●●● ●● ●●●● ``` #### 2.3 Watershed ``` Obraz jako topografia: - IntensywnoΕ›Δ‡ = wysokoΕ›Δ‡ - "Zalewanie" od minimΓ³w lokalnych - Granice gdzie woda z rΓ³ΕΌnych ΕΊrΓ³deΕ‚ siΔ™ spotyka β•±β•² β•±β•² β•± β•² β•± β•² β•± β•²__β•± β•² β•± ↑ β•² ↑ granica ↑ min1 (watershed) min2 ``` #### 2.4 Mean Shift ``` Iteracyjne przesuwanie okna do maksimum gΔ™stoΕ›ci: 1. Dla kaΕΌdego piksela: m(x) = Ξ£ K(x - xα΅’) Γ— xα΅’ / Ξ£ K(x - xα΅’) 2. x ← m(x) (shift) 3. Powtarzaj do zbieΕΌnoΕ›ci 4. Piksele zbiegajΔ…ce do tego samego punktu β†’ jeden segment ``` #### 2.5 Graph-based (Normalized Cuts) ``` Obraz jako graf: - WierzchoΕ‚ki = piksele - KrawΔ™dzie = podobieΕ„stwo miΔ™dzy pikselami - w(i,j) = exp(-||I(i) - I(j)||Β² / σ²) Normalized Cut: Ncut(A,B) = cut(A,B)/assoc(A,V) + cut(A,B)/assoc(B,V) Minimalizacja Ncut β†’ eigendecomposition Laplacianu ``` --- ### 3. PorΓ³wnanie metod klasycznych | Metoda | Zalety | Wady | |--------|--------|------| | **Thresholding** | Szybki, prosty | Tylko 2 klasy, wraΕΌliwy na oΕ›wietlenie | | **Region Growing** | Intuicyjny | Wymaga seedΓ³w, over-segmentation | | **Watershed** | Dobre krawΔ™dzie | Over-segmentation | | **Mean Shift** | Brak k | Wolny, parametr bandwidth | | **Graph Cut** | Globalnie optymalne | O(nΒ³), wymaga unary terms | --- ### 4. Metody deep learning #### 4.1 FCN (Fully Convolutional Network) ``` β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚ FCN - pierwsza architektura deep dla segmentacji (2015) β”‚ β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€ β”‚ β”‚ β”‚ Input Encoder (VGG) Decoder Output β”‚ β”‚ HΓ—WΓ—3 β†’ Conv+PoolΓ—5 β†’ Upsampling (deconv) β†’ HΓ—WΓ—C β”‚ β”‚ β”‚ β”‚ β”Œβ”€β”€β”€β”€β” β”Œβ”€β”€β” β”Œβ”€β”€β” β”Œβ”€β”€β”€β”€β” β”‚ β”‚ β”‚ β”‚ β†’ β”‚ β”‚ β†’ β”‚ β”‚ β†’ Β·Β·Β· β†’ upsample β†’ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ Γ—32 β”‚ β”‚ β”‚ β”‚ β””β”€β”€β”€β”€β”˜ β””β”€β”€β”˜ β””β”€β”€β”˜ β””β”€β”€β”€β”€β”˜ β”‚ β”‚ input conv conv output β”‚ β”‚ β”‚ β”‚ Skip connections: FCN-32s, FCN-16s, FCN-8s β”‚ β”‚ Coarser + finer features β†’ sharper boundaries β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ ``` #### 4.2 U-Net ``` β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚ U-NET - encoder-decoder ze skip connections (2015) β”‚ β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€ β”‚ β”‚ β”‚ Encoder Decoder β”‚ β”‚ β”‚ ↑ β”‚ β”‚ β”Œβ”€β”€β”΄β”€β”€β” ─ copy ─→ β”Œβ”€β”€β”΄β”€β”€β” β”‚ β”‚ β”‚64Γ—64β”‚ β”‚64Γ—64β”‚ β”‚ β”‚ β””β”€β”€β”¬β”€β”€β”˜ β””β”€β”€β”¬β”€β”€β”˜ β”‚ β”‚ ↓ ↑ β”‚ β”‚ β”Œβ”€β”€β”΄β”€β”€β” ─ copy ─→ β”Œβ”€β”€β”΄β”€β”€β” β”‚ β”‚ β”‚32Γ—32β”‚ β”‚32Γ—32β”‚ β”‚ β”‚ β””β”€β”€β”¬β”€β”€β”˜ β””β”€β”€β”¬β”€β”€β”˜ β”‚ β”‚ ↓ ↑ β”‚ β”‚ β”Œβ”€β”€β”΄β”€β”€β” ─ copy ─→ β”Œβ”€β”€β”΄β”€β”€β” β”‚ β”‚ β”‚16Γ—16β”‚ β”‚16Γ—16β”‚ β”‚ β”‚ β””β”€β”€β”¬β”€β”€β”˜ β””β”€β”€β”¬β”€β”€β”˜ β”‚ β”‚ ↓ ↑ β”‚ β”‚ └───── bottleneck β”€β”€β”€β”˜ β”‚ β”‚ β”‚ β”‚ Concat skip connections (nie add jak w ResNet) β”‚ β”‚ Popularne w medycynie (maΕ‚e datasety) β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ ``` #### 4.3 DeepLab (v1-v3+) ``` β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚ DEEPLAB - Atrous/Dilated Convolutions + CRF β”‚ β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€ β”‚ β”‚ β”‚ Atrous Convolution (dilated): β”‚ β”‚ β”‚ β”‚ Standard 3Γ—3: Atrous 3Γ—3, rate=2: β”‚ β”‚ ● ● ● ● ● ● β”‚ β”‚ ● ● ● (wiΔ™ksze receptive field β”‚ β”‚ ● ● ● ● ● ● bez wiΔ™cej parametrΓ³w) β”‚ β”‚ β”‚ β”‚ ● ● ● β”‚ β”‚ β”‚ β”‚ ASPP (Atrous Spatial Pyramid Pooling): β”‚ β”‚ Parallel atrous conv z rΓ³ΕΌnymi rates (6, 12, 18) β”‚ β”‚ β†’ multi-scale context β”‚ β”‚ β”‚ β”‚ DeepLabv3+: β”‚ β”‚ Encoder-decoder + ASPP + depthwise separable conv β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ ``` #### 4.4 Transformer-based (SegFormer, Mask2Former) ``` β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚ SEGFORMER (2021) β”‚ β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€ β”‚ β”‚ β”‚ Mix-Transformer encoder: β”‚ β”‚ β€’ Hierarchical features (1/4, 1/8, 1/16, 1/32) β”‚ β”‚ β€’ Efficient self-attention β”‚ β”‚ β€’ No positional encoding β”‚ β”‚ β”‚ β”‚ MLP decoder: β”‚ β”‚ β€’ Simple MLP combines multi-scale features β”‚ β”‚ β€’ Lightweight β”‚ β”‚ β”‚ β”‚ MASK2FORMER (2022): β”‚ β”‚ β€’ Universal: semantic, instance, panoptic β”‚ β”‚ β€’ Masked attention (per-segment) β”‚ β”‚ β€’ Deformable attention β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ ``` --- ### 5. PorΓ³wnanie architektur DL | Architektura | mIoU (ADE20K) | Parametry | Cechy | |--------------|---------------|-----------|-------| | **FCN** | ~30% | ~135M | Pierwsze DL dla segmentacji | | **U-Net** | - | ~31M | Medical, skip connections | | **DeepLabv3+** | ~45% | ~60M | ASPP, dilated conv | | **SegFormer-B5** | ~51% | ~85M | Transformer, efficient | | **Mask2Former** | ~57% | ~200M | Universal, SOTA | --- ### 6. Loss functions ``` Cross-Entropy Loss: L = -Ξ£α΅’ Ξ£c yα΅’c log(pα΅’c) Problem: class imbalance (duΕΌo tΕ‚a, maΕ‚o obiektΓ³w) Dice Loss: L = 1 - 2|X ∩ Y| / (|X| + |Y|) BezpoΕ›rednio optymalizuje IoU-like metric Focal Loss: L = -Ξ±β‚œ(1 - pβ‚œ)^Ξ³ log(pβ‚œ) Ξ³ > 0 β†’ hard examples waΕΌniejsze Combined: L = λ₁ Β· CE + Ξ»β‚‚ Β· Dice ``` --- ### 7. Metryki | Metryka | FormuΕ‚a | Opis | |---------|---------|------| | **Pixel Accuracy** | TP / (TP+FP+FN+TN) | % poprawnych pikseli | | **IoU (Jaccard)** | TP / (TP+FP+FN) | Intersection over Union | | **mIoU** | mean IoU per class | Standard dla segmentacji | | **Dice** | 2TP / (2TP+FP+FN) | F1 dla segmentacji | --- ## 🧠 Mnemoniki ### "U-Net = U-shaped skip": KsztaΕ‚t U z skip connections ### "ASPP = Atrous at Multiple Scales": DeepLab's Atrous Spatial Pyramid Pooling ### "IoU = Intersection / Union": Podstawowa metryka segmentacji --- ## ❓ Pytania dodatkowe ### Q1: "Jak radziΔ‡ sobie z class imbalance?" **OdpowiedΕΊ:** Weighted cross-entropy, Focal Loss, oversampling maΕ‚ych klas, Dice Loss (ignoruje dominacjΔ™ duΕΌych klas), OHEM (Online Hard Example Mining). ### Q2: "U-Net vs DeepLab?" **OdpowiedΕΊ:** U-Net: encoder-decoder z concat skip, dobre dla maΕ‚ych datasetΓ³w (medical). DeepLab: dilated conv zachowuje resolution, ASPP dla multi-scale, lepsze dla duΕΌych datasetΓ³w. ### Q3: "Co to jest panoptic segmentation?" **OdpowiedΕΊ:** Unified semantic + instance. Dzieli na "stuff" (nieczΔ™Ε›ciowe: sky, road) i "things" (policzalne: person, car). KaΕΌdy piksel ma class ID + instance ID. --- ## 🎯 Kluczowe punkty 1. **Klasyczne:** Thresholding, Region Growing, Watershed, Graph Cut 2. **FCN:** Pierwszy fully convolutional dla segmentacji 3. **U-Net:** Encoder-decoder + skip connections 4. **DeepLab:** Dilated/Atrous conv, ASPP 5. **Metryka:** mIoU (mean Intersection over Union) --- ## πŸ“– ΕΉrΓ³dΕ‚a 1. Long et al. - "Fully Convolutional Networks" (2015) 2. Ronneberger et al. - "U-Net" (2015) 3. Chen et al. - "DeepLab" series (2014-2018) 4. Xie et al. - "SegFormer" (2021)