Skip to content

Repository files navigation

🦋🌸🐦 Image Processing Final Project — Multi-Species Image Classifier

Ders: YZM309 – Görüntü İşleme (Image Processing)
Öğrenci: Emir Çabalak — 230212012

Üç farklı doğa kategorisindeki 467 türü sınıflandırabilen derin öğrenme tabanlı bir görüntü sınıflandırma projesidir. Proje kapsamında sıfırdan tasarlanan CNN modelleri ile Transfer Learning yaklaşımları karşılaştırmalı olarak değerlendirilmiştir.

Örnek test görseli — Albatros


📌 Proje Özeti

Özellik Detay
Görev Çoklu sınıf görüntü sınıflandırma (Multi-class Image Classification)
Toplam Sınıf 467 tür
Kategoriler 🦋 Kelebek (100) · 🌸 Çiçek (102) · 🐦 Kuş (265)
Eğitim Ortamı Google Colab (GPU)
Test Ortamı Yerel bilgisayar (Tkinter GUI)
Framework TensorFlow / Keras

📂 Proje Yapısı

Image_Processing_Final_Project/
│
├── Custom_128 (underfit)/       # Özel CNN — 128×128, BS:64 (underfit gözlemi)
│   ├── Model_Creator.py         # Colab eğitim betiği
│   ├── Tester.py                # Yerel test betiği (Tkinter GUI)
│   ├── best_model.keras         # En iyi eğitilmiş model
│   └── ...
│
├── Custom_224_bs128 (overfit)/   # Özel CNN — 224×224, BS:64 (overfit gözlemi)
│   ├── Model_Creator.py
│   ├── Tester.py
│   ├── best_model.keras
│   └── ...
│
├── EfficientNet/                 # Transfer Learning — EfficientNetB0
│   ├── Model_Creator.py
│   ├── Tester.py
│   ├── best_model.keras
│   └── ...
│
├── MobileNetV2/                  # Transfer Learning — MobileNetV2
│   ├── Model_Creator.py
│   ├── Tester.py
│   ├── best_model_mobilenet.keras
│   └── ...
│
├── ResNet50/                     # Transfer Learning — ResNet50
│   ├── Model_Creator.py
│   ├── Tester.py
│   ├── best_model_resnet.keras
│   └── ...
│
├── datasets/                     # Veri setleri (Kaggle + TFDS)
│   ├── birds/                    # 265 kuş türü
│   ├── butterflies/              # 100 kelebek türü
│   └── tfds_data/                # Oxford Flowers 102
│
├── ornek.webp                    # Örnek test görseli (Albatros)
└── 230212012_EmirÇabalak.pdf     # Proje raporu

🧠 Kullanılan Modeller

1. Özel (Custom) CNN Modelleri

Sıfırdan tasarlanan Convolutional Neural Network mimarileri ile deneme yapılmıştır:

  • Custom_128 (underfit): 128×128 giriş boyutu, 64 batch size. Modelin kapasitesi yetersiz kaldığından underfit gözlemlenmiştir.
  • Custom_224 (overfit): 224×224 giriş boyutu, 5 bloklu derin mimari (32→64→128→256→512 filtreler), BatchNormalization ve Dropout katmanları. Daha yüksek kapasite nedeniyle overfit eğilimi gözlemlenmiştir.

Custom CNN Mimari Detayı (224×224 versiyonu)

Giriş (224×224×3)
  → [Conv2D(32) → BN → Conv2D(32) → BN → MaxPool → Dropout(0.25)]   # Blok 1
  → [Conv2D(64) → BN → Conv2D(64) → BN → MaxPool → Dropout(0.30)]   # Blok 2
  → [Conv2D(128) → BN → Conv2D(128) → BN → MaxPool → Dropout(0.40)] # Blok 3
  → [Conv2D(256) → BN → Conv2D(256) → BN → MaxPool → Dropout(0.40)] # Blok 4
  → [Conv2D(512) → BN → Conv2D(512) → BN → MaxPool → Dropout(0.40)] # Blok 5
  → Flatten → Dense(1024) → BN → Dropout(0.5)
  → Dense(467, softmax)

2. Transfer Learning Modelleri

ImageNet üzerinde önceden eğitilmiş ağırlıklar kullanılarak iki fazlı eğitim uygulanmıştır:

Model Giriş Boyutu Dropout Faz 1 (Kafa) Faz 2 (İnce Ayar) Açılan Katman
EfficientNetB0 224×224 0.3 15 epoch, lr=0.001 50 epoch, lr=1e-5 Son 30 katman
MobileNetV2 224×224 0.4 15 epoch, lr=Adam 50 epoch, lr=1e-5 Son 30 katman
ResNet50 224×224 0.5 15 epoch, lr=Adam 50 epoch, lr=1e-5 Son 40 katman

Faz 1 (Feature Extraction): Önceden eğitilmiş katmanlar dondurulur, sadece eklenen sınıflandırma kafası (Dense + Softmax) eğitilir.
Faz 2 (Fine-Tuning): Temel modelin son N katmanı açılır ve çok düşük öğrenme oranıyla tüm model birlikte eğitilir.


📊 Veri Setleri

Üç farklı kaynaktan toplanan veri setleri birleştirilerek tek bir büyük veri seti oluşturulmuştur:

Veri Seti Kaynak Sınıf Sayısı Açıklama
Kelebek Türleri Kaggle — Butterfly Images 100 100 farklı kelebek türü
Oxford Flowers 102 TensorFlow Datasets (TFDS) 102 102 farklı çiçek türü
Kuş Türleri Kaggle — 100 Bird Species 265 265 farklı kuş türü

Veri Artırma (Data Augmentation)

Eğitim sırasında aşağıdaki augmentation teknikleri uygulanmıştır:

  • RandomFlip("horizontal") – Yatay çevirme
  • RandomRotation(0.1) – Rastgele döndürme (±10%)
  • RandomZoom(0.1) – Rastgele yakınlaştırma (±10%)

🚀 Kullanım

Gereksinimler

pip install tensorflow tensorflow-datasets numpy matplotlib pillow kaggle

Eğitim (Google Colab)

Her model klasöründeki Model_Creator.py dosyası Google Colab üzerinde çalıştırılmak üzere tasarlanmıştır:

  1. Model_Creator.py dosyasını Colab'a yükleyin
  2. kaggle.json API anahtarınızı hazır bulundurun
  3. Google Drive bağlantısını onaylayın
  4. Betik otomatik olarak veri setlerini indirir, modeli eğitir ve en iyi ağırlıkları Drive'a kaydeder

⚠️ Eğitim betikleri Colab-specific komutlar (!kaggle ..., drive.mount(...)) içerdiğinden yerel ortamda doğrudan çalışmaz.

Test (Yerel Bilgisayar)

Her model klasöründeki Tester.py dosyası yerel bilgisayarda çalıştırılmak üzere tasarlanmıştır:

# Örnek: EfficientNet modelini test etme
cd EfficientNet
python Tester.py
  1. Script çalıştığında etiket haritasını oluşturmak için veri setlerini kontrol eder (eksikse otomatik indirir)
  2. Eğitilmiş modeli (best_model.keras) yükler
  3. Tkinter dosya seçici penceresi açılır — test edilecek görseli seçin
  4. Tahmin sonucu, güven oranı ve kategori (Kuş/Çiçek/Kelebek) ekrana yazdırılır ve matplotlib ile görselleştirilir

🛠️ Teknik Detaylar

  • Loss Fonksiyonu: sparse_categorical_crossentropy
  • Optimizasyon: Adam optimizer
  • Metrik: Accuracy
  • Checkpoint Sistemi: ModelCheckpoint (en iyi val_accuracy) + epoch takibi (last_epoch.json)
  • Erken Durdurma: EarlyStopping (val_loss izleme, patience: 5–15 epoch)
  • Etiket Sıralaması: Kelebek [0–99] → Çiçek [100–201] → Kuş [202–466]
  • Ön İşleme: Model tipine göre farklı (normalize /255.0, EfficientNet preprocess, ResNet caffe-mode)

📁 Dosya Açıklamaları

Dosya Açıklama
Model_Creator.py Google Colab üzerinde model eğitimi: veri indirme, augmentation, model oluşturma, eğitim ve checkpoint kaydetme
Tester.py Yerel bilgisayarda tahmin: etiket haritası oluşturma, model yükleme, Tkinter ile görsel seçme ve sınıflandırma
best_model*.keras Eğitim sırasında en yüksek val_accuracy'ye sahip kaydedilmiş model
latest_checkpoint.weights.h5 Eğitimin kaldığı yerden devam edebilmesi için son epoch ağırlıkları
last_epoch.json En son tamamlanan epoch numarası
ornek.webp Test için kullanılan örnek albatros görseli

📝 Lisans

Bu proje, YZM309 – Görüntü İşleme dersi kapsamında final projesi olarak geliştirilmiştir.

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages