Aynı görüntü sınıflandırma modelini PyTorch, ONNX Runtime ve
LiteRT / TensorFlow Lite ortamlarında karşılaştıran; Flutter tabanlı mobil uygulamada tamamen çevrimdışı çalışan bir bilgisayarlı görü projesi.
English · Türkçe
SmartWaste Vision, tek bir fotoğraftaki baskın atık nesnesini altı sınıftan birine ayırır:
- Plastik
- Cam
- Metal
- Kâğıt / karton
- Organik
- Genel atık
Projenin ana amacı yalnızca yüksek doğruluk elde etmek değil; aynı eğitilmiş modelin farklı çalışma ortamlarındaki doğruluk, Macro F1, model boyutu ve gecikme değişimlerini ölçmek ve bu modeli gerçek bir mobil kullanıcı akışına dönüştürmektir.
Mobil uygulama tahmin için internete ihtiyaç duymaz. Fotoğraflar cihazdan dışarı gönderilmez.
| Ana ekran | Tahmin sonucu |
|---|---|
![]() |
![]() |
Uygulama:
- Kamera ve galeriden görüntü alır
- Tahmini cihaz üzerinde çalıştırır
- Sınıf, güven skoru ve en yüksek üç olasılığı gösterir
- Sonucu Türkiye Sıfır Atık kutu renkleriyle eşleştirir
- Güven skoru
0.51altında olduğunda kesin tahmin vermek yerine kullanıcıyı uyarır - Uçak modunda ve ağ bağlantısı olmadan çalışabilir
SmartWaste Vision mobil demo videosunu izle
Değerlendirme, sabitlenmiş 598 görüntülük test bölümü üzerinde gerçekleştirilmiştir.
| Runtime | Accuracy | Macro F1 | Model boyutu | Ortalama / p95 CPU |
|---|---|---|---|---|
| PyTorch FP32 | %90,80 | 0,9093 | 5,95 MiB | 5,24 / 6,17 ms |
| ONNX Runtime FP32 | %90,80 | 0,9093 | 6,08 MiB | 1,35 / 1,79 ms |
| LiteRT FP16 | %90,64 | 0,9074 | 3,07 MiB | 6,80 / 8,11 ms |
| LiteRT INT8 weight-only | %89,80 | 0,8989 | 1,75 MiB | 0,67 / 0,95 ms |
CPU benchmarkları Intel i5-11400H üzerinde WSL2, batch size 1 ve dört thread ile; görüntü decode ve ön işleme süreleri hariç ölçülmüştür.
Flutter uygulamasında gerçek Dart ön işleme zinciriyle kullanılan FP16 model:
- Accuracy: %90,47
- Macro F1: 0,9056
Full INT8 dönüşümleri kalite eşiğini geçmediği için mobil dağıtıma alınmamıştır. INT8 weight-only model yalnızca ağırlıkları küçültür; tam tamsayı çıkarımı olarak sunulmamaktadır.
Ayrıntılı benchmark protokolü ve ölçüm koşulları için:
CPU Benchmark Raporu
flowchart LR
A[Atık Görüntüsü] --> B[PyTorch ile Eğitim]
B --> C[MobileNetV3-Small]
C --> D[PyTorch FP32]
C --> E[ONNX FP32]
C --> F[LiteRT FP16]
C --> G[LiteRT INT8 Weight-only]
F --> H[Flutter Mobil Uygulama]
D --> I[FastAPI Referans Servisi]
I --> J[Docker]
H --> K[Çevrimdışı Tahmin]
K --> L[Sınıf + Güven + Kutu Rengi]
- ImageNet ön eğitimli
MobileNetV3-Small - PyTorch ile transfer learning
- PyTorch, ONNX Runtime ve LiteRT karşılaştırması
- FP16 ve INT8 model küçültme deneyleri
- Aynı checkpoint için masaüstü, sunucu ve Android dağıtımı
- Pillow ile uyumlu Dart ön işleme doğrulaması
- Flutter üzerinde tamamen çevrimdışı çıkarım
- Düşük güven durumları için abstention akışı
- Docker içinde çalışan PyTorch / FastAPI referans servisi
- Model Card, Dataset Card ve karar kayıtları
- Tekrarlanabilir benchmark ve export doğrulama süreci
- Python
- PyTorch
- Torchvision
- ONNX Runtime
- TensorFlow Lite / LiteRT
- NumPy
- scikit-learn
- Flutter
- Dart
- Kamera / galeri entegrasyonu
- Cihaz içi LiteRT çıkarımı
- FastAPI
- Docker
- Multipart image upload
- Health-check ve inference endpointleri
cd apps/mobile
flutter pub get
flutter test
cd ../..
.\scripts\build_android.ps1 -Configuration Debug
.\scripts\build_android.ps1 -Configuration ReleaseRelease-mode test APK şu konuma yazılır:
artifacts/mobile/smartwaste-vision-release.apk
Bu APK test amacıyla debug anahtarıyla imzalanır; Play Store dağıtım paketi değildir.
docker build -t smartwaste-vision-api .
docker run --rm -p 8000:8000 smartwaste-vision-api
curl -F "file=@waste.jpg;type=image/jpeg" http://localhost:8000/v1/classifyMobil uygulama tahmin için API kullanmaz. FastAPI servisi, aynı FP32 checkpoint'in sunucu tarafındaki referans dağıtımını göstermek için ayrı tutulmuştur.
SmartWaste-Vision/
├── api/ # FastAPI referans servisi
├── apps/mobile/ # Flutter mobil uygulaması
├── docs/ # Model, veri, benchmark ve karar belgeleri
├── scripts/ # Eğitim, export, değerlendirme ve build betikleri
├── artifacts/ # Test ve build çıktıları
├── PROJECT_PLAN.md
├── README.md
└── README.en.md
- Model Card — Türkçe
- Model Card — English
- Dataset Card — Türkçe
- Dataset Card — English
- Baseline ve export sonuçları
- CPU benchmark raporu
- Flutter MVP ve ön işleme doğrulaması
- INT8 dağıtım kararı
- FastAPI servisi
- Uygulama planı
SmartWaste Vision:
- Tek fotoğraftaki tek baskın nesneyi sınıflandırmak için tasarlanmıştır
- Nesne tespiti, segmentasyon veya çoklu atık ayrımı yapmaz
- Tehlikeli, tıbbi veya elektronik atıklar için profesyonel karar sistemi değildir
- Belediye bazlı kesin bertaraf talimatı vermez
- Eğitim verisi tek bir Avustralya tesisinden gelmektedir
- Plastik sınıfı diğer sınıflara göre daha zayıf performans göstermektedir
- Bağımsız telefon fotoğraflarıyla saha değerlendirmesi hâlâ gereklidir
- Fiziksel Android cihaz üzerinde gecikme ve RAM ölçümü tamamlanması gereken son doğrulama adımıdır
RealWaste lisans kayıtları birbiriyle çelişmektedir. UCI metadata sayfası CC BY 4.0 belirtirken indirilen veri ve proje sahibi README dosyaları CC BY-NC-SA 4.0 bilgisini içermektedir.
Bu proje ihtiyatlı olarak daha kısıtlayıcı lisans koşullarını esas alır. Model ağırlıklarının kamusal veya ticari dağıtımı ayrıca incelenmelidir.
Ayrıntılar için: Dataset Card
Bu çalışma, bir görüntü sınıflandırma modelinin yalnızca notebook ortamında bırakılmadığı; eğitimden export sürecine, benchmarklardan mobil entegrasyona ve referans API dağıtımına kadar tamamlanan bir uçtan uca Edge AI ürünü sunmayı amaçlamaktadır.

