Akıllı Müze Rehberi - Uçtan Uca Sanat Eseri Tanıma Projesi
Python (TensorFlow/FastAPI) ve Flutter kullanılarak geliştirilmiş, bir sanat eseri fotoğrafından sanatçısını, sanat akımını ve eser hakkındaki detaylı bilgileri tanıyan uçtan uca bir mobil uygulama projesi.
Bu proje, "ince detaylı sınıflandırma" (fine-grained classification) ve "çok görevli/çok etiketli" (multi-task/multi-label) öğrenme tekniklerini kullanarak karmaşık bir yapay zeka modelini bir mobil API aracılığıyla sunar.
🏛️ Proje Mimarisi
Sistem 3 ana bileşenden oluşur:
AI Modeli (Python/TensorFlow): EfficientNetB3 mimarisi kullanılarak, 50 farklı sanatçı ve 24 farklı sanat akımını aynı anda tahmin etmek üzere eğitilmiş bir "Multi-Task" (Çok Görevli) ve "Multi-Label" (Çok Etiketli) model.
Backend (Python/FastAPI): Eğitilmiş .keras modelini sarmalayan ve /predict adında bir endpoint üzerinden sunan bir web sunucusu. Gelen resmi işler, tahmini yapar ve artists.csv dosyasından biyografik bilgileri çekerek zengin bir JSON yanıtı döndürür.
Frontend (Flutter/Dart): Kullanıcının kamerasını veya galerisini kullanarak fotoğraf çekmesini/seçmesini sağlayan, bu fotoğrafı FastAPI sunucusuna gönderen ve gelen JSON yanıtını kullanıcı dostu bir sonuç kartı olarak gösteren bir mobil uygulama.
💻 Kullanılan Teknolojiler
Backend (Yapay Zeka & API):
Python 3.11
TensorFlow (Keras 3)
Pandas & Scikit-learn (Veri İşleme)
FastAPI & Uvicorn (Web Sunucusu)
Frontend (Mobil Uygulama):
Flutter
Dart
http (API iletişimi)
image_picker (Kamera/Galeri erişimi)
🚀 Nasıl Çalıştırılır
Bu proje, bir "monorepo" yapısındadır. backend ve frontend klasörleri ayrı ayrı çalıştırılmalıdır.
- Backend (FastAPI Sunucusu)
Proje ana dizininden backend klasörüne gidin:
cd backend
ÖNEMLİ: Model Dosyası Eğitilmiş model dosyası (art_identifier_model.keras) 136MB+ boyutu nedeniyle bu repository'ye dahil edilmemiştir. API'nin çalışması için orijinal Kaggle veri setini indirip modeli yeniden eğitmeniz gerekmektedir.
Gerekli kütüphaneleri kurun (Yeni bir Conda ortamı önerilir):
Modeli eğitmek ve art_identifier_model.keras dosyasını oluşturmak için (~2 saat süren işlem):
python train_model.py
Eğitim bittikten sonra API sunucusunu başlatın:
python -m uvicorn app:app --reload
Sunucu artık http://127.0.0.1:8000 adresinde çalışıyor olacaktır.
- Frontend (Flutter Uygulaması)
VS Code veya Android Studio'da frontend klasörünü açın.
Paketleri yükleyin:
flutter pub get
API Adresini Kontrol Edin: lib/main.dart dosyasındaki _apiUrl değişkeninin, API sunucunuzla eşleştiğinden emin olun.
Android Emülatör için: http://10.0.2.2:8000/predict (Varsayılan)
Fiziksel Cihaz için: http://[BILGISAYARINIZIN_IP_ADRESI]:8000/predict
Uygulamayı çalıştırın:
flutter run