Lewati ke konten
Semua proyek
iden

04Penelitian · 2024

Klasifikasi Lesi Kanker Kulit

Pipeline klasik computer vision untuk membedakan lesi jinak dan ganas dari 10.605 citra, tanpa deep learning, supaya setiap fitur bisa dijelaskan.

GitHub
Akurasi pada 1.000 citra ujisumbu 70–85%
  • SVM linear79,5%
  • SVM polynomial76,9%
  • SVM RBF81,2%
  • RBF + GridSearchCV83,0%

Hanya untuk pembelajaran. Hasil model bukan diagnosis medis.

Ringkasan

Proyek machine learning untuk mengklasifikasikan citra lesi kulit menjadi jinak (benign) atau ganas (malignant). Saya sengaja memakai pengolahan citra klasik, bukan deep learning, supaya setiap langkah dan setiap fitur bisa dijelaskan.

Datasetnya Melanoma Skin Cancer Dataset of 10,605 Images dari Kaggle (Hasnain Javed), dan tidak disertakan di repository. Notebook-nya dibuat di Google Colab dan bisa dijalankan lokal.

citra dataset
10.605
akurasi akhir
83,0%

Teknologi utama

  • Python
  • OpenCV
  • Sscikit-image
  • scikit-learn
  • Jupyter

Pipeline

  • Citra diubah ke 128 × 128 piksel dan dikonversi ke RGB.
  • Segmentasi lesi dengan K-Means (k=2); cluster dengan warna rata-rata paling gelap dianggap area lesi.
  • Objek kecil di mask dibersihkan dengan operasi morfologi.
  • 4 fitur tekstur GLCM (contrast, correlation, energy, homogeneity) dan 2 fitur bentuk (area, perimeter), dinormalisasi dengan StandardScaler.
  • SVM kernel linear, polynomial, dan RBF dibandingkan, lalu di-tuning dengan GridSearchCV 10-fold.

Hasil pada 1.000 citra uji

  • Akurasi SVM linear 79,5%, polynomial 76,9%, dan RBF 81,2%.
  • RBF setelah tuning (C=100, gamma=1): akurasi 83,0%, dengan precision, recall, dan F1 macro 0,83.
  • Per kelas: recall benign 0,84 dan malignant 0,82, masing-masing 500 citra.
  • 90 citra ganas terprediksi jinak (false negative). Jenis kesalahan inilah yang paling perlu diperhatikan dalam konteks medis.

Yang akan saya perbaiki

  • Cek segmentasi secara visual, karena lesi tidak selalu menjadi cluster paling gelap, misalnya pada citra bertepi gelap.
  • Pastikan StandardScaler dan tuning hanya memakai data latih agar tidak terjadi kebocoran data.
  • Tambah ROC-AUC dan analisis false negative.
  • Coba fitur warna dan bentuk tambahan (asimetri, kebulatan), atau CNN sebagai pembanding.

Tangkapan layar

Citra asli, mask lesi, dan hasil segmentasi berdampinganBuka gambar ukuran penuh
Segmentasi: citra asli, mask K-Means dan morfologi, area lesi
Confusion matrix SVM RBF setelah tuningBuka gambar ukuran penuh
Confusion matrix SVM RBF setelah tuning

Dibuat untuk pembelajaran dan portofolio. Hasil model bukan diagnosis medis dan bukan pengganti pemeriksaan tenaga medis.

Proyek sebelumnyaKoperasi POSProyek berikutnyaMonday Notch
© 2026 Ryan Muhammad HildanKontak