Panduan belajar berdasarkan slide "Segmentasi Pendekatan Deep Learning" (Agus Harjoko). Setiap bagian berisi penjelasan sederhana, contoh hitungan, dan catatan kritis (hal yang perlu kamu waspadai, atau yang di slide dijelaskan terlalu singkat).
Segmentasi berarti memberi label pada setiap piksel. Bedanya ada pada dua pertanyaan: "apa kategorinya?" dan "individu yang mana?"
Dua istilah kunci: things = objek yang bisa dihitung dan punya bentuk jelas (orang, mobil, hewan); stuff = area luas tanpa bentuk tertentu yang tidak dihitung (langit, jalan, rumput, gedung).
Fitur
Semantic
Instance
Panoptic
Membedakan individu?
Tidak
Ya
Ya (untuk things)
Segmentasi latar (stuff)?
Ya
Tidak
Ya
Piksel tercakup
Semua
Hanya piksel things
Semua
Contoh output
"Piksel ini mobil"
"Piksel ini Mobil #2"
"Piksel ini Mobil #2 di atas Jalan"
Ilustrasi sintetis: 3 orang (merah) di atas trotoar (biru) dengan gedung (hijau). Semantic: 3 orang satu warna. Instance: 3 warna berbeda, latar hitam. Panoptic: semuanya terisi.
Ingat: Instance = deteksi objek + semantic. Panoptic = semantic + instance, tanpa piksel yang terlewat dan setiap piksel punya tepat satu label (tidak boleh tumpang tindih).
Kritis: (1) Pada panoptic, stuff tidak punya identitas individu; "dua area rumput" tetap satu segmen rumput. (2) Pembagian things/stuff tidak selalu tegas dan ditentukan oleh dataset: "kerumunan orang" bisa dianggap stuff. (3) Gambar CNN di slide 2 hanyalah ilustrasi klasifikasi angka (MNIST), bukan model segmentasi; jangan bingung dengannya.
2. Metrik evaluasi
Segmentasi dinilai dengan membandingkan prediksi dengan ground truth (label benar) per piksel:
TP: piksel objek yang ditebak benar sebagai objek.
FP: piksel latar yang salah ditebak sebagai objek (kelebihan).
FN: piksel objek yang terlewat (kekurangan).
IoU (Jaccard) dan mIoU
IoU = |A ∩ B| / |A ∪ B| = TP / (TP + FP + FN)
Nilai 0 (tidak beririsan) sampai 1 (sempurna). mIoU = rata-rata IoU semua kelas.
Ground truth = persegi 10×10 (100 piksel). Prediksi = persegi 10×10 yang bergeser 4 piksel. Irisan = 6×10 = 60.
TP = 60, FN = 40, FP = 40
IoU = 60/(60+40+40) = 0,43. Dice = 120/(120+40+40) = 0,60. Hubungannya: Dice = 2·IoU/(1+IoU), sehingga Dice selalu ≥ IoU (sama hanya di 0 dan 1).
Pixel Accuracy (PA)
Persentase piksel yang benar dibanding total piksel. Contoh: objek hanya 5% gambar, model menebak semua latar. PA = 95% (tampak bagus), tetapi IoU objek = 0.
Kritis: PA menyesatkan saat latar mendominasi. Jangan pernah melaporkan PA saja. Slide menyebut Dice "sangat sensitif terhadap class imbalance"; maksudnya Dice peka pada objek kecil sehingga lebih jujur. Jangan salah baca sebagai kelemahan.
AP / mAP (instance)
Menilai deteksi dan mask tiap instance pada ambang IoU tertentu. mAP₅₀ memakai ambang IoU 0,5; mAP₅₀:₉₅ merata-rata ambang 0,50 sampai 0,95 (lebih ketat, menilai kerapian tepi mask).
RQ (Recognition Quality): seperti F1 → seberapa banyak segmen yang ditemukan dengan benar.
Pasangan prediksi-GT dianggap TP jika IoU > 0,5. Karena tidak boleh tumpang tindih, pencocokan ini dijamin unik.
Kritis: PQ bisa dilaporkan terpisah untuk things (PQTh) dan stuff (PQSt) agar kelemahan model terlihat. Ambang 0,5 membuat segmen yang "lumayan meleset" tetap dihitung benar, dan segmen yang IoU-nya 0,49 dihitung salah total (FP + FN sekaligus).
3. Loss function
Loss mengukur selisih peta prediksi dengan mask ground truth. Masalah utamanya adalah class imbalance: objek kecil di latar luas.
A. Pixel-wise: BCE
L = −(1/N) Σ [ yᵢ log pᵢ + (1−yᵢ) log(1−pᵢ) ]
Menilai tiap piksel sendiri-sendiri. Stabil dan cepat pada data seimbang. Pada data timpang, model "curang": menebak semua latar saja sudah menghasilkan loss kecil, karena 95% piksel benar.
B. Focal Loss
L = −αₜ (1−pₜ)^γ log pₜ
Faktor (1−pₜ)^γ mengecilkan loss piksel yang sudah mudah (pₜ besar) sehingga model fokus pada piksel sulit (biasanya tepi objek).
Semakin besar γ, semakin kecil kontribusi piksel mudah. γ = 0 sama dengan BCE.
Kritis: γ dan α adalah hyperparameter yang perlu dituning (umumnya γ = 2). Focal Loss menekan piksel mudah, tetapi juga bisa memperbesar pengaruh label yang salah/noisy karena label noisy tampak "sulit".
Keduanya versi "lunak" (memakai probabilitas, bukan 0/1) dari metrik Dice dan IoU. ε mencegah pembagian nol. Latar yang luas tidak ikut menggelembungkan nilai, jadi lebih tahan imbalance.
Kritis: Slide menyebut Dice "kebal" imbalance; ini terlalu kuat. Dice tetap bermasalah bila mask kosong (tidak ada objek) dan gradiennya kasar pada objek sangat kecil, jadi pelatihan awal bisa tidak stabil.
D. Hybrid
BCE + Dice: BCE menstabilkan gradien, Dice menjaga bentuk. Standar untuk U-Net.
Focal + Dice (Combo): untuk imbalance ekstrem (medis, satelit).
Skenario
Pilihan
Seimbang
BCE / Cross-Entropy
Objek kecil / imbalance
Focal, Dice, atau Tversky
Medis (MRI, CT)
BCE + Dice
Multikelas
Categorical CE + Dice
Tversky Loss (disebut tanpa penjelasan di slide) adalah generalisasi Dice dengan bobot terpisah untuk FP dan FN: menaikkan bobot FN membuat model lebih "takut" melewatkan objek, penting pada deteksi lesi.
4. Arsitektur semantic segmentation
Belajar berurutan, karena tiap model memperbaiki kelemahan sebelumnya.
FCN (Fully Convolutional Network)
Ide: ganti fully connected layer pada model klasifikasi dengan layer konvolusi, lalu upsampling (deconvolution) agar output berukuran sama dengan citra asli. Karena tanpa FC layer, input boleh berukuran bebas.
Kritis: Pada FCN asli, hasil upsampling kasar (tepi kabur) karena detail hilang saat pooling. Masalah inilah yang dijawab U-Net.
U-Net
Encoder: mengecilkan resolusi, mengambil konteks ("apa").
Decoder: memperbesar kembali resolusi ("di mana").
Skip connections: fitur encoder disambung langsung ke decoder agar detail tepi tidak hilang.
Cocok untuk citra medis dan satelit, juga dengan data terbatas (ditunjang augmentasi). Analogi: encoder adalah melihat peta dari jauh untuk paham wilayah; skip connection adalah membawa foto detail dari dekat.
SegNet
Mirip U-Net, tetapi decoder hanya memakai indeks max-pooling (posisi nilai maksimum) dari encoder, bukan menyalin seluruh fitur. Hasilnya lebih hemat memori. Dipakai untuk adegan jalan (mobil otonom) dan robot.
Kritis: Hemat memori biasanya dibayar dengan detail yang kurang kaya dibanding U-Net; di praktik modern U-Net dan DeepLab lebih sering dipakai.
DeepLab (v1, v2, v3, v3+)
Atrous (dilated) convolution: filter diberi "celah" sehingga jangkauan pandang (field of view) membesar tanpa menambah parameter.
ASPP: beberapa atrous convolution dengan laju (rate) berbeda dijalankan bersamaan, menangkap objek kecil sampai besar sekaligus.
v3+ menambahkan decoder sederhana untuk menajamkan tepi.
5. Instance segmentation: Mask R-CNN
Pengembangan dari Faster R-CNN (deteksi objek). Alurnya: (1) backbone mengekstrak fitur; (2) RPN mengusulkan kotak kandidat; (3) RoIAlign memotong fitur tiap kotak; (4) cabang paralel memprediksi kelas, bounding box, dan binary mask per objek.
RoIAlign vs RoIPool: RoIPool membulatkan koordinat sehingga mask bergeser beberapa piksel; RoIAlign memakai interpolasi bilinear tanpa pembulatan, sehingga presisi piksel terjaga.
Kritis: Mask R-CNN dua tahap sehingga relatif lambat; mask dibatasi resolusi kecil (sekitar 28×28) lalu diperbesar, sehingga tepi objek bisa kurang tajam. Ia juga tidak menangani stuff.
6. Transformer dan model berbasis attention
Masalah konvolusi: kernel hanya melihat area lokal. Self-attention membuat setiap bagian citra bisa "melihat" semua bagian lain (global context).
SETR: citra dipotong menjadi patch, diubah jadi urutan token, diproses transformer (sequence-to-sequence), lalu decoder membuat peta segmentasi.
Swin Transformer: attention dihitung dalam window lokal, window digeser antar layer agar informasi antar-window saling terhubung. Hierarkis (multi-skala) dan kompleksitas linear terhadap ukuran citra; cocok sebagai backbone.
Mask2Former: kerangka tunggal untuk semantic, instance, dan panoptic. Memakai masked attention: tiap query hanya memperhatikan area mask prediksinya.
SAM (Meta): promptable (titik, kotak, atau teks), dilatih pada 11 juta gambar dan 1,1 miliar mask (SAM 1); SAM 2 menambah video dengan memory bank.
Kritis: (1) Transformer murni butuh data besar; pada dataset kecil, U-Net sering lebih baik. (2) SAM menghasilkan mask, bukan nama kelas; ia bukan model semantic segmentation penuh. (3) Klaim "tanpa fine-tuning" pada slide 32 tidak berlaku merata: pada citra medis dan domain khusus, SAM zero-shot sering kurang akurat. (4) Slide menyebut input teks; pada SAM 1 prompt teks hanya eksperimental, jadi cek versi yang dipakai.
7. Panoptic segmentation
Model harus menangani stuff dan things sekaligus. Ada tiga pendekatan:
7.1 Top-down (Panoptic FPN)
Satu backbone (ResNet + FPN), dua cabang: instance (gaya Mask R-CNN) untuk things dan semantic (gaya FCN) untuk stuff. Lalu panoptic fusion menggabungkan; bila mask tumpang tindih, prediksi dengan skor kepercayaan tertinggi menang.
7.2 Bottom-up (Panoptic-DeepLab)
Tanpa kotak proposal. Cabang semantik (DeepLabv3+) memprediksi kelas piksel; cabang instance memprediksi pusat objek (heatmap) dan offset tiap piksel menuju pusatnya. Piksel dikelompokkan ke pusat terdekat. Cepat, cocok real-time.
Pixel decoder membuat fitur beresolusi tinggi; transformer decoder memakai object queries yang masing-masing memprediksi satu binary mask dan satu kelas (instance mobil atau area rumput, diperlakukan sama). Tanpa fusion rumit.
Model
Pendekatan
Kelebihan
Kelemahan
Panoptic FPN
Top-down
Akurat pada instance mask, arsitektur teruji
Lambat (fusion + proposal)
Panoptic-DeepLab
Bottom-up
Cepat, fleksibel real-time
Kurang presisi pada objek kecil yang berhimpitan
Mask2Former
Transformer
Akurasi state-of-the-art, satu arsitektur untuk semua
Butuh komputasi/memori GPU besar
Kritis: Kata "state-of-the-art" selalu bergantung waktu dan dataset (mis. COCO, Cityscapes); cek leaderboard terbaru. Bottom-up kesulitan ketika dua objek sejenis berhimpitan karena pusatnya berdekatan. Slide 36 menulis "Panoptic Deeplite", kemungkinan salah ketik dari Panoptic-DeepLab. Slide 38 (SwinFPNMTL) menampilkan multi-task learning (segmentasi + depth) tanpa penjelasan; artinya satu backbone Swin + FPN dilatih untuk dua tugas sekaligus.
8. Ringkasan pemilihan dan kuis
Kebutuhan
Pilihan awal
Citra medis/biomedis/geospasial, data sedikit
U-Net + BCE/Dice
Pemandangan umum/perkotaan, objek beragam ukuran
DeepLabv3+
Menghitung/melacak individu
Mask R-CNN
Segmentasi cepat tanpa melatih ulang
SAM (cek akurasi di domainmu)
Panoptic, akurasi terbaik / real-time
Mask2Former / Panoptic-DeepLab
Alur tes sederhana: perlu bedakan individu? Tidak → semantic (U-Net/DeepLab). Ya, hanya objek → instance (Mask R-CNN). Ya, dan seluruh scene → panoptic.
Kuis cepat (klik untuk jawaban)
1. Foto 3 mobil: semantic dan instance beda di mana?Semantic: 3 mobil satu label "mobil". Instance: mobil 1, 2, 3 punya label unik.2. Mengapa PA 95% bisa tetap model yang buruk?Latar mendominasi; menebak semua latar sudah 95% benar sementara objek tidak terdeteksi (IoU objek 0).3. Prediksi TP=30, FP=10, FN=20. Hitung IoU dan Dice.IoU = 30/60 = 0,5. Dice = 60/(60+10+20) = 0,67.4. Apa gunanya skip connection pada U-Net?Membawa detail spasial/tepi dari encoder ke decoder yang hilang saat pooling.5. Mengapa atrous convolution berguna?Memperluas field of view tanpa menambah parameter atau menurunkan resolusi.6. Beda RoIAlign dan RoIPool?RoIAlign tidak membulatkan koordinat (interpolasi bilinear) sehingga mask lebih presisi.7. Apa SQ dan RQ pada PQ?SQ: rata-rata IoU segmen cocok (kerapian bentuk). RQ: seperti F1 (ketepatan menemukan segmen). PQ = SQ × RQ.8. Mengapa Swin memakai shifted window?Agar window yang terpisah saling bertukar informasi, dengan kompleksitas tetap linear.
Saran praktik
Latih U-Net kecil dengan BCE+Dice pada dataset Oxford-IIIT Pet, bandingkan dengan BCE saja (lihat mIoU dan Dice-nya), lalu coba Mask R-CNN dan SAM pre-trained (torchvision / segment-anything) pada fotomu sendiri.