Bu proje, bir görüntü sınıflandırma modeli geliştirerek kullanıcının yüklediği hayvan görsellerini tanıyabilen bir yapay zekâ uygulamasıdır. Model, PyTorch ile eğitilmiş ResNet18 kullanır ve Streamlit tabanlı kullanıcı dostu bir arayüz sunar.
- Proje Tanımı
- Özellikler
- Kurulum ve Çalıştırma
- Veri Seti Temini
- Veri Seti Hakkında Notlar
- Kullanım
- Demo Video
- Teknik Detaylar
- Eğitim ve Değerlendirme
- Desteklenen Hayvan Türleri
- Dosya Yapısı
- Kaynaklar
Kullanıcılar bilgisayarlarından bir hayvan görseli yükleyebilir, model tarafından sınıflandırılan sonucu görebilir ve tahminin güven oranını öğrenebilir. Görseller normalize edilip modele uygun tensöre dönüştürülür ve en yüksek olasılıklı sınıf kullanıcıya gösterilir.
- Görüntü yükleme ve ön işleme (boyutlandırma, kırpma, normalization)
- PyTorch ResNet18 tabanlı sınıflandırma
- Streamlit tabanlı kullanıcı arayüzü
- Tahmin güven oranı gösterimi
- Kullanıcı dostu ve sade tasarım
- Eğitim metriklerinin görselleştirilmesi (Accuracy, Precision, Recall, Confusion Matrix)
# 1️⃣ Gerekli kütüphaneleri yükleyin
pip install -r requirements.txt
# 2️⃣ Modeli Eğitme (Opsiyonel)
# Not: Projede eğitilmiş model mevcuttur.
# Yeniden eğitmek isterseniz dataset klasörünü hazırlayıp şu komutu çalıştırın:
python train.py
# 3️⃣ Uygulamayı Başlatın
# Arayüzü açmak ve tahmin yapmak için:
streamlit run app.py💡 Bilgi: Eğer sadece eğitilmiş modeli kullanacaksanız (arayüzü çalıştırmak için), veri setini indirmenize gerek yoktur.
Veri seti sadece modeli yeniden eğitmek (train.py) isteyenler içindir:
- Proje dosyaları içerisinde veri seti (dataset) bulunmamaktadır. Veri setini Animals-10 Dataset (Kaggle) bağlantısından indirebilirsiniz.
- İndirdiğiniz klasörü projenin ana dizinine
dataset/adıyla yerleştirin. - Klasör yapısının şu şekilde olduğundan emin olun:
dataset/train/dataset/test/
Projenin eğitim aşamasında Animals-10 Dataset üzerinde şu güncellemeler yapılmıştır:
- Sınıf Filtreleme: Veri setinde bulunan
farfalla(kelebek) veragno(örümcek) sınıfları analiz dışı bırakılarak veri setinden çıkartılmıştır. - Veri Ayrımı: Mevcut veri setinin %80'i eğitim (train), %20'si ise test süreçleri için kullanılmıştır.
- Web arayüzünde 📤 Bir hayvan resmi yükleyin kısmından bir görsel seçin.
- 🔍 Tahmin Et butonuna tıklayın.
- Model, tahmini sınıfı ve güven oranını gösterecektir.
- %85’in altında güven oranına sahip tahminler gösterilmez.

Uygulamanın kullanımını gösteren demo videosunu aşağıdaki linkten izleyebilirsiniz:
Demo Video
- Model: ResNet18
- Framework: PyTorch
- Arayüz: Streamlit
- Girdi Görüntü Boyutu: 224x224
- Optimizasyon: Adam, lr=3e-4
- Batch Size: 32
- Epochs: 15
- Ön İşleme: Resize, CenterCrop, RandomHorizontalFlip, RandomRotation, Normalize
- Metrikler: Accuracy, Precision, Recall, Confusion Matrix
- Cihaz: CPU / GPU otomatik algılama
Eğitim sırasında kayıp, doğruluk, precision ve recall değerleri loglanır (trained_models/training_log.csv) ve görselleştirilir (metrics/ klasörü).
- Köpek (cane)
- At (cavallo)
- Fil (elefante)
- Tavuk (gallina)
- Kedi (gatto)
- İnek (mucca)
- Koyun (pecora)
- Sincap (scoiattolo)
image_classifier/
├── dataset/
│ ├── test/
│ └── train/
├── metrics/
│ ├── accuracy.png
│ ├── confusion_matrix.png
│ ├── precision.png
│ ├── recall.png
│ └── train_loss.png
├── src/
│ ├── __pycache__/
│ ├── __init__.py
│ ├── data_utils.py
│ ├── model_utils.py
│ └── translate.py
├── trained_models/
│ ├── classes.json
│ ├── model.pth
│ └── training_log.csv
├── screenshot.png
├── app.py
├── README.md
├── requirements.txt
└── train.py
- Animals-10 Dataset
- PyTorch ResNet18 Örneği / Tutorials
- PyTorch Image Preprocessing & Transforms
- Streamlit Documentation
- Ad Soyad: Gürel BİLGİN
- Öğrenci Numarası: 220502041
- GitHub Repo: https://github.com/GurelBilgin/image-classifier





