Bu proje, patates yapraklarındaki hastalıkları tespit etmek için derin öğrenme kullanan bir tam yığın (full-stack) uygulamadır. Proje şu bileşenlerden oluşmaktadır:
- Frontend: Kullanıcıların patates yapraklarının görüntülerini yüklemesini ve tahmin sonuçlarını görmesini sağlayan React tabanlı bir web uygulaması.
- Backend: Yüklenen görüntüleri işleyen ve bir CNN modeliyle tahmin yapan FastAPI uygulaması.
Model, yaprağın Early Blight (Erken Yanıklık), Late Blight (Geç Yanıklık) veya Sağlıklı olup olmadığını tahmin eder.
- Frontend:
- Görüntü yükleme için kullanıcı dostu bir arayüz.
- Tahmin sonuçlarını ve güven skorlarını gösterir.
- Backend:
- Yüklenen görüntüleri işler.
- CNN modelinden tahmin sonuçlarını döner.
- Derin Öğrenme Modeli:
- PlantVillage veri seti kullanılarak eğitilmiş model.
- Yüksek doğruluk oranıyla hastalık sınıflandırması yapar.
Eğitimde kullanılan veri seti, PlantVillage veri seti üzerindeki patates yaprağı görüntüleridir. Görseller, 256x256
piksel boyutunda 3 renk kanalıyla işlenmiştir. Her görüntü şu üç sınıftan birine aittir:
- Early Blight (Erken Yanıklık)
- Late Blight (Geç Yanıklık)
- Healthy (Sağlıklı)
- Mimari: CNN (Convolutional Neural Network)
- Framework: TensorFlow/Keras
- Ön İşleme:
- Görseller
256x256
boyutuna yeniden boyutlandırıldı. - Piksel değerleri [0, 1] aralığında normalize edildi.
- Veri artırımı (döndürme, yansıtma) uygulandı.
- Görseller
- Eğitim:
- Veri seti %80 eğitim, %10 doğrulama, %10 test olarak bölündü.
- Optimizasyon: Adam
- Kayıp Fonksiyonu: Sparse Categorical Crossentropy
- Eğitim Süresi: 50 epoch
- Çıktı: 3 sınıf için softmax olasılıkları.
Eğitilmiş model, my_model.h5
dosyası olarak kaydedilmiştir.
- Framework: FastAPI
- Endpointler:
GET /ping
: Sunucunun çalışıp çalışmadığını kontrol eder.POST /predict
: Görüntü dosyasını alır, işler ve tahmin sınıfını ve güven skorunu döner.
- CORS:
http://localhost:3000
adresinden gelen taleplere izin verecek şekilde yapılandırılmıştır.
- Framework: React
- Port: 3000
- Ortam Değişkeni: Backend ile bağlantı kurmak için
REACT_APP_BACKEND_URL=http://localhost:8001
kullanılır.
- Docker
Bir dizinde “docker-compose.yml” isimli bir dosya oluşturun ve içine aşağıdakileri yapıştırın.
services:
backend:
image: sibacode/bcnnpotato
container_name: backend
ports:
- "8001:8001"
networks:
- app-network
frontend:
image: sibacode/fcnnpotato
container_name: frontend
ports:
- "3000:3000"
networks:
- app-network
environment:
- REACT_APP_BACKEND_URL=http://backend:8001
networks:
app-network:
driver: bridge
Compose dosyasının bulunduğu dizine konsol aracılığıyla erişin ve şu komutu yazın:
docker compose up -d
Bu komut:
- Backend'i http://localhost:8001 adresinde başlatır.
- Frontend'i http://localhost:3000 adresinde başlatır.
-
GET /ping
Örnek:
curl http://localhost:8001/ping
Cevap:
"Hello, I am alive"
-
POST /predict
Örnek:
curl -X POST -F "[email protected]" http://localhost:8001/predict
Cevap:
{ "class": "Early Blight", "confidence": 0.99 }