Skip to content

💻This project involves the application of machine learning and deep learning methods 📊 to detect diabetes🩸 and diabetes-related eye 👁️diseases.

License

Notifications You must be signed in to change notification settings

havva-nur-ezginci/Diabetes-EyeDisease-Detection-ML-DL

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

40 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Diyabet ve Diyabete Bağlı Göz Hastalıkları Tespiti: Makine ve Derin Öğrenme Yöntemleri

Kaggle

Bu proje, diyabetin ve diyabete bağlı göz hastalıklarının tespitini gerçekleştirmek için makine öğrenmesi ve derin öğrenme yöntemlerinin uygulanmasını içermektedir. Çalışma iki ana başlık altında toplanmıştır: diyabet tespiti ve göz hastalığı tespiti.👁️💻📊🩺

Table of Contents

Diyabet Tespiti

Bu projede, Kaggle'dan alınan kan değerleri veri seti kullanılarak diyabet tespiti amacıyla çeşitli makine öğrenmesi modelleri uygulanmıştır. Farklı modellerin performansı karşılaştırılmış, en iyi sonucu veren model belirlenmiştir.

Kullanılan Veri Seti

  • Kaynak: Diabetes veri seti projeye eklenerek kullanılmıştır.🩸
  • Bölme: Veri seti %80 eğitim, %20 test olarak ayrılmıştır.
Learn More

Bu veri seti, 768 örnek içermektedir. Bu örneklerden 500'ü diyabet bulunmayan (0) ve 268'i diyabetli (1) olarak etiketlenmiştir. Etiketler, 0 diyabetin olmadığını, 1 ise diyabetin varlığını ifade eder. Veri seti, Ulusal Diyabet, Sindirim ve Böbrek Hastalıkları Enstitüsü'nden alınmış olup, hastaların belirli tanısal ölçümlere dayanarak diyabetli olup olmadıklarının tahmin edilmesini amaçlamaktadır. Tüm hastalar, Pima Kızılderili mirasına sahip en az 21 yaşında kadınlardır.

Veri Seti Özellikleri

  • Pregnancy: Hamile kalma sayısı
  • Glucose: Plazma glukoz konsantrasyonu
  • Blood Pressure: Diyastolik kan basıncı (mm Hg)
  • Insulin: Serum insülin seviyeleri (mu U/ml)
  • BMI: Vücut kitle indeksi (ağırlık (kg) / boy (m)^2)
  • Diabetes Pedigree Function: Diyabet soy ağacı işlevi
  • Age: Yaş (yıl)
  • Outcome: Sınıf değişkeni (0: Hasta değil, 1: Hasta)

Kullanılan Modeller

Projede aşağıdaki makine öğrenmesi modelleri kullanılmıştır:

  • Perceptron
  • MLPClassifier (Multi-layer Perceptron)
  • Karar Ağacı (Decision Tree)
  • Logistic Regression
  • KNeighborsClassifier
  • Support Vector Classification (SVC)
  • Gaussian Naive Bayes
  • Random Forest Classifier

Methods and Improvements

Yöntemler ve İyileştirmeler

  1. Veri ön işleme adımı kapsamında, model eğitiminin daha tutarlı ve dengeli olmasını sağlamak amacıyla StandardScaler kullanılarak sayısal değişkenler ölçeklendirildi. Bu işlem, her bir değişkenin ortalamasını 0, standart sapmasını 1 yaparak, farklı büyüklüklerdeki verilerin model üzerinde eşit etkiye sahip olmasını sağladı.
  2. Karar Ağacı: Aşırı öğrenmeyi önlemek için max_depth parametresi kullanılarak erken budama ile sınırlama yapılmıştır(max_depth=5). Karar ağacının özellikler için vermiş olduğu önem değerleri incelenmiştir. Her özellik için 0 ile 1 arasında bir sayıdır; 0=>"hiç kullanılmamış" ve 1 => "hedefi mükemmel şekilde tahmin ediyor" anlamına gelir. Alınan sonuçlar için matplotlib.pyplot kullanarak grafik çizdirilmiş ve değerler Tablo 1 de görselleştirilmiştir:

Tablo 1: Karar Ağacı Sonucunda Alınan Özellik Önem Değerleri:

Özellik Önem Değeri
Pregnancy 0.01147274
Glucose 0.37701637
Blood Pressure 0.07524925
SkinThickness 0.06196233
Insulin 0.06910943
BMI 0.19682277
Diabetes Pedigree 0.05909082
Age 0.1492763
3-Karar Ağacı özellik önem grafiği
  1. K-Fold Cross Validation: Modellerin doğruluğunu artırmak için K-fold çapraz doğrulama yöntemi kullanılmıştır. 5, 10, 15, 20, 25 ve 30 fold değerleri ile çapraz doğrulama yapılmış, her bir modelin maksimum, minimum ve ortalama doğruluk oranları incelenmiştir.
  2. Model Başarımlarının İncelenmesi: Logistic Regression, Perceptron, MLPClassifier, Decision Tree, KNeighborsClassifier, SVC, GaussianNB, Random Forest modelleri kullanılarak doğruluk değerleri analiz edilmiştir.

Eğitim ve Test Sonuçları

Tablo2 : Diyabet testpiti için farklı modellerin 80:20 ayrılan veri seti eğitim ve test sonuçlarını göstermektedir:

Model Eğitim Sonuçları Test Sonuçları
Perceptron 0.72 0.79
MLP 0.82 0.77
Karar Ağacı 0.85 0.78
Logistic Regression 0.76 0.81
K-Nearest Neighbors (KNN) 0.78 0.80
Support Vector Classifier (SVC) 0.76 0.79
Gaussian Naive Bayes 0.74 0.78
Random Forest Classifier 0.98 0.79

Test setinde en yüksek doğruluk oranı %81 ile Logistic Regression modelinden elde edilmiştir.

Files and Code

Diyabet Tespiti dosyasında projeye ait tüm kod ve analizler yer almaktadır.

Göz Hastalığı Tespiti

Diyabet (şeker hastalığı), obezite, hareketsiz yaşam, dengesiz beslenme, yaş ve stres gibi faktörlerle artış göstermekte ve birçok önemli hastalığa zemin hazırlamaktadır. Erken tespit edilmediğinde, diyabet görme kaybı ve ileri aşamalarda körlüğe yol açabilir. Diyabetik retinopati, katarakt ve glokom hastalıklarının tespitinde göz fundus görüntülerinden sıkça yararlanılır. Bu projede diyabetin sebep olduğu göz hastalıklarından bazıları diyabetik retinopati, katarakt ve glokom hastalıklarının tespiti hedeflenmiştir.

Veri Seti

Kaggle

Çalışmada Kaggle'dan alınan Ocular Disease Intelligent Recognition (ODIR) veri seti kullanılmıştır. 👁️

Learn More

ODIR veri seti, 2019 yılında Shanggong Medical Technology Co., Ltd. tarafından Çin'deki hastanelerden/tıp merkezlerinden toplanmıştır. 5.000 hastanın fundus fotoğraflarını içeren bu veri seti, sekiz farklı göz hastalığını kapsar: Normal (N), Diyabet (D), Glokom (G), Katarakt (C), Yaşa Bağlı Makula Dejenerasyonu (A), Hipertansif Retinopati (H), Miyopi (M) ve diğer hastalıklar (O).

Bu çalışmada Diyabetik Retinopati, Katarakt, Glokom ve Normal sınıfları kullanılmıştır.

Tespit Edilen Sınıflar:

  • Normal: Sağlıklı göz
  • Diyabetik Retinopati: Diyabetin neden olduğu retina hasarı
  • Katarakt: Göz merceğinin bulanıklaşması
  • Glokom: Göz içi basıncının artmasıyla meydana gelen optik sinir hasarı

Veri setinden alınmış örnek fundus fotoğrafları: Örnek fundus fotoğrafı

Kullanılan Yöntemler:

1. Veri Ön İşleme

  • Göz fundus görüntüleri, başlangıçta cv2'nin varsayılan ayarları ile mavi renk tonu (RGB yerine BGR) olarak okunmuştur. Bunu düzeltmek için cv2.cvtColor(img, cv2.COLOR_BGR2RGB) kullanılarak başarılı sonuçlar elde edilmiştir.
  • Görüntüler, numpy.array kullanılarak sayısal değerlere dönüştürülmüş ve sklearn.model_selection.train_test_split ile eğitim (%80) ve test (%20) verileri olarak ayrılmıştır.
  • Görüntüler, model giriş boyutlarına uygun olarak yeniden boyutlandırılmış (2224x224x3) ve normalize edilmiştir.
  • Eğitim sırasında aşırı öğrenmenin önüne geçmek için, sağlıklı veri sayısının fazlalığından kaynaklanan dengesizlikler giderildi. İlk olarak, sağlıklı veri sınıfından rastgele fundus fotoğrafı seçilerek veri sayısı azaltıldı. Ancak veri seti hala dengesiz olduğundan, SMOTE ve ADASYN gibi veri artırma yöntemleri kullanılarak dengeli veri setleri oluşturuldu.

2. Veri Seti Artırma

Veriler, ilk hali dışında SMOTE ve ADASYN sentetik veri artırma yöntemleri kullanılarak dengeli veri setlerine dönüştürülmüştür.

2.1 SMOTE (Synthetic Minority Over-Sampling Technique)

  • SMOTE, sentetik veri üretilmesini sağlayan bir aşırı örnekleme sürecidir. Veri bilimi projelerinde en sık kullanılan yöntemlerden biridir.
  • Yöntemin ana fikri, azınlık sınıfının örnekleri arasında belirli işlemler yaparak yeni azınlık sınıfı örnekleri yaratmaktır.

Sentetik örneklerin oluşturulma süreci:

  1. İncelenen öznitelik vektörü (𝐸𝑖) ile en yakın komşusu arasındaki farkı alınır.
  2. Bu fark, 0 ile 1 arasında rastgele bir sayı (𝛿) ile çarpılır.
  3. Çıkan sonuç, incelenen öznitelik vektörüne eklenir ve yeni bir örnek oluşur.
  • Gereken aşırı örnekleme miktarına bağlı olarak, en yakın k komşudan komşular rastgele seçilir. Bu işlem, aşırı öğrenme sorununun önüne geçer ve iyi bir sınıflandırma performansı sağlar.

Veri Bilimi Okulu - Dengesiz Veri Setlerinde Modelleme

2.2 Adaptive Synthetic Sampling Method (ADASYN)

  • SMOTE yönteminin geliştirilmiş bir versiyonudur. ADASYN hangi sayıda sentetik veri üreteceğine olasılık dağılım fonksiyonu kullanarak karar verir. AYDIN, 2021 Öğrenilmesi zor olan sınıflar için daha fazla sentetik veri üretilir. Böylece dengesiz sınıf dağılımdan dolayı oluşan eğilim azaltılmış olur. Çürükoğlu, 2019

Eğitim (train) için kullanılan veri setleri (D.Retinopati, Katarakt, Glokom, Sağlıklı veri seti):

Veri Seti Normal (Sağlıklı) Katarakt Diyabetik Retinopati Glokom
Veri Seti 1 1076 460 132 467
Veri Seti 2 640 640 640 640
Veri Seti 3 1076 467 1117 467

Veri Seti 1: Sağlıklı veri sınıfı random olarak azalttığımız ve diyabetik retinopati, katarakt, glokom sınıflarının orijinal hallerinden oluşan veri setidir.
Veri Seti 2: Sağlıklı sınıftan rastgele seçilen görüntüler ile diyabetik retinopati, katarakt ve glokom sınıfları birleştirilmiş, SMOTE yöntemiyle dengelenmiş veri setidir.
Veri Seti 3: Veri Seti 1'den faydalanılarak ADASYN yöntemiyle oluşturulmuş dengeli veri setidir.

3. Model Seçimi ve Eğitim

  • Oluşturulan veri setleri, state-of-the-art olarak bilinen VGG16, VGG19, ResNet50 ve AlexNet bu modellerle eğitim gerçekleştirilmiştir.
  • Transfer Öğrenme yöntemi kullanılarak VGG16, VGG19 ve ResNet50 modelleri eğitilmiştir. Modellerin önceden eğitilmiş ağırlıkları imagenet veri setinden alınmıştır ve include_top=False kullanılarak kendi özel giriş ve çıkış katmanlarımız eklenmiştir. Ayrıca, layer.trainable=False parametresi ile modelin ağırlıklarının yeniden öğrenilmesi engellenmiş ve sadece eklenen katmanlar eğitilmiştir. Modeller, tensorflow.keras.applications kütüphanesinden alınarak kullanılmıştır.
  • Her modelin derlenmesinde loss='categorical_crossentropy', başarı metrics=['accuracy']) kullanılmış ve eğitim sırasında; batch_size=32, epochs= 20, validation_split=0.2 verilmiş olup optimizer da değişiklik yapılarak model eğitimi gerçekleştirilmiştir;
    • VGG16: Flatten ve dense çıkış katmanı eklendi ve çıkış katmanında sigmoid aktivasyon fonksiyonu kullanılmıştır.
    • VGG19: Flatten ve dense çıkış katmanı eklendi ve çıkış katmanında sigmoid aktivasyon fonksiyonu kullanılmıştır.
    • ResNet50: Flatten ve dense çıkış katmanı eklendi ve çıkış katmanında softmax aktivasyon fonksiyonu kullanılmıştır.
    • AlexNet: Çıkış katmanında softmax aktivasyon fonksiyonu kullanılarak eğitim yapılmıştır.

4. Optimizer Kullanımı

  • Bir makine öğrenmesi/derin öğrenme/yapay sinir ağı modeli tasarladığımızda da amacımız hatayı minimize etmektir. AlexNet, ResNet50, VGG16 ve VGG19 modelleri için aşağıdaki optimize ediciler kullanıldı.

    • Stochastic Gradient Descent-SDG
    • RMSprop
    • Adagrad
    • Adadelta
    • Adam

5. Ortak Fonksiyonlar:

  • Tüm model eğitimleri için oluşturulan ve kullanılan fonksiyonlar;
    • Model eğitim geçmişi (acc, loss, val_loss, val_accuracy) CSV dosyası olarak kaydedilmiştir.
    • Eğitim geçmişinin her epoch'taki değerleri grafik olarak çizdirilmiştir (train ve validation için loss ve accuracy değerleri).
    • Eğitilen model .h5 formatında kaydedilmiştir ve gerektiğinde tekrar yüklenebilir.
    • Modelin performansı confusion matrix ve classification report kullanılarak değerlendirilmiştir.

Results

Farklı modellerin performansı karşılaştırılmış, en iyi sonucu veren model belirlenmiştir. Sonuç olarak elde edilen en yüksek başarı oranı ADASYN yöntemi ile artırılan veri setinin VGG16 modelini Adam optimizerı ile eğittiğimizde test verisi üzerinde %86 başarı ve %43 hata oranı elde edilmiştir. En yüksek başarı oranı gösteren modelin eğitim süreci Şekil 1 de gösterilmektedir. Test verisi için elde edilen Confusion matrix Şekil 2 de verilmiştir.

Şekil 1: Training Process: VGG16 with ADAM Optimizer on ADASYN Dataset

The following image shows the training process of the VGG16 model using the ADAM optimizer on the ADASYN-enhanced dataset.

Training Process

Şekil 2: Confusion Matrix: Test Data

Below is the confusion matrix for the test data, which shows the model's performance in predicting different classes.

Confusion Matrix

3. Test Data Class Distribution

  • Normal: 264 samples
  • Cataract: 128 samples
  • Diabetic Retinopathy: 27 samples
  • Glaucoma: 115 samples

The confusion matrix provides insight into how well the model distinguishes between these different classes in the test dataset.

Files and Codes

Below are the links to the project files for different data augmentation methods used in the study:

Each notebook demonstrates the application of different techniques in the detection of diabetic eye diseases.

Publications and Presentations

Bu projeyle ilgili sunum 9. Uluslararası Bilimsel Çalışmalar Kongresi'nde (UBCAK) gerçekleştirilmiştir: UBCAK9 pdf

Göz Fundus Görüntülerinden Diyabetin Sebep Olduğu Göz Hastalıklarının Tespiti

DEMİRCAN SEMİYE, Ezginci Havva Nur (03.08.2022-05.08.2022), Yayın Yeri: 9. Uluslararası Bilimsel Çalışmalar Kongresi (UBCAK)
Yayın Türü: Ulusal Tam Metin Bildiri (Basılı + Elektronik)

Teşekkürler 💫

Bu projeyi incelediğiniz ve zaman ayırdığınız için teşekkür ederim.🌟 Yapay zeka alanındaki bu tür çalışmalar,🏥 sağlık sektöründe önemli değişikliklere yol açabilir. 🎉 Umarım bu proje size ilham verir ve sizin için faydalı olur.

İyi kodlamalar 💻 ve harika projeler! 💪😄

License

This project is licensed under the Apache License 2.0 - see the LICENSE file for details.