Bu proje, derin öğrenme ve Transfer Learning (Transferli Öğrenme) tekniklerini kullanarak meyve türlerini yüksek doğrulukla sınıflandırmayı amaçlayan uçtan uca bir yapay zeka uygulamasıdır. MobileNetV2 mimarisi üzerinde inşa edilen model, Google Colab ortamında eğitilmiş ve Streamlit kullanılarak canlı bir web uygulaması olarak yayına alınmıştır.
Uygulamayı tarayıcınızda hemen deneyin:
👉 Fruit Classification Web App
Proje kapsamında Fruits-360 veri setinden seçilen 10 farklı meyve sınıfı (Apple Granny Smith, Pineapple, Raspberry, Mandarine, Cauliflower, Pepper Yellow, Pear Williams, Cucumber, Cherry, Nut) üzerinde çalışılmıştır. Proje, sadece bir sınıflandırma modeli geliştirmeyi değil, aynı zamanda modelin gerçek dünya verilerine adaptasyonunu ve dağıtımını (deployment) kapsamaktadır.
Modelin geliştirilmesinde MobileNetV2 temel alınmış, ancak kıyaslama amacıyla ResNet50 ve VGG16 mimarileri de test edilmiştir. MobileNetV2, mobil ve uç cihazlar için optimize edilmiş yapısı (Lightweight) sayesinde tercih edilmiştir.
- Feature Extraction (Özellik Çıkarımı):
ImageNetağırlıkları ile başlatılan MobileNetV2'nin alt katmanları dondurulmuş (frozen), sadece yeni eklenen classification başlığı eğitilmiştir. - Fine-Tuning (Hassas Ayarlama): Modelin son 20 katmanının kilidi açılarak, düşük bir öğrenme oranı (
learning_rate=1e-5) ile meyve veri setinin spesifik detaylarına adapte olması sağlanmıştır. - Data Augmentation (Veri Artırımı): Modelin rotasyon, kaydırma ve zoom gibi varyasyonlara karşı dayanıklılığını artırmak için
ImageDataGeneratorkullanılarak sentetik veriler oluşturulmuştur.
Eğitim sürecinde farklı mimariler (ResNet50, VGG16 ve MobileNetV2) test edilmiş, hız ve performans dengesi nedeniyle MobileNetV2 tercih edilmiştir.
Modelin sınıflar arasındaki performansını ve hangi meyveleri birbiriyle karıştırdığını analiz etmek için kullanılan karmaşıklık matrisi:
Modelin gerçek dünya verileri (Distribution Shift) üzerindeki performansı:
| Gerçek Class | Tahmin Edilen | Confidence |
|---|---|---|
| Pineapple | Pineapple | %91.7 |
| Raspberry | Raspberry | %100.0 |
- Deep Learning Framework: TensorFlow & Keras
- Pre-trained Models: MobileNetV2, ResNet50, VGG16
- Deployment: Streamlit & GitHub Actions
- Data Handling: NumPy, Pandas, Pillow
- Visualization: Matplotlib, Seaborn
Canlı yayındaki uygulama şu yeteneklere sahiptir:
- Anlık Tahmin: Kullanıcı tarafından yüklenen resimleri saniyeler içinde analiz eder.
- Top-3 Tahmin: Sadece en yüksek tahmini değil, en olası ilk 3 sınıfı olasılık değerleriyle gösterir.
- Olasılık Dağılım Grafiği: Modelin tüm sınıflar üzerindeki güven skorlarını görselleştirir.
- Interaktif UI: Profesyonel ve kullanıcı dostu arayüz tasarımı.
Proje geliştirme sürecinde karşılaşılan ve çözüme kavuşturulan önemli teknik engeller:
- Versiyon Uyumsuzluğu: Colab (TF 2.19) ile Streamlit Cloud (TF 2.15) arasındaki serileştirme farkı, modelin bütün olarak yüklenmesi yerine mimarinin kodla tanımlanıp sadece ağırlıkların (
.h5) enjekte edilmesiyle çözülmüştür. - Input Boyutu Senkronizasyonu: Eğitimde kullanılan 224x224 boyutunun Streamlit tarafında da korunması sağlanarak tahmin doğruluğu %77 seviyesine yükseltilmiştir.
- Sınıf İndeksi Senkronizasyonu: Sayısal çıktıların (0-9) doğru meyve isimleriyle eşleşmesi için
class_indicessözlüğü manuel olarak doğrulanmıştır.
Projeyi yerelinizde çalıştırmak için:
- Depoyu klonlayın:
git clone [https://github.com/beyzahiz/Transfer-Learning-Fruit-Classification.git](https://github.com/beyzahiz/Transfer-Learning-Fruit-Classification.git)- Gerekli kütüphaneleri yükleyin:
pip install -r requirements.txt- Uygulamayı başlatın:
streamlit run app.py


