Skip to content

Latest commit

 

History

4 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Akıllı Çöp Ayrıştırma Sistemi

Bu proje, kamera görüntüleri üzerinden atık türlerini gerçek zamanlı olarak tespit etmeye yönelik yapay zekâ destekli bir masaüstü uygulamasıdır. Sistem; plastik, cam, kâğıt, metal ve tanımlanamayan atık türlerini YOLO tabanlı nesne tespiti modeli ile sınıflandırmayı amaçlar.

Projenin temel hedefi, atıkların doğru ayrıştırılmasını destekleyerek geri dönüşüm süreçlerinin verimliliğini artırmak, çevre kirliliğini azaltmak ve sürdürülebilir atık yönetimine katkı sağlamaktır.

Proje Kapsamı

Uygulama, Tkinter tabanlı bir arayüz üzerinden kamera görüntüsünü alır. Kullanıcı kamerayı başlattıktan sonra nesne tespiti aktif hale getirilebilir. YOLO modeli, kameradan gelen her kare üzerinde atık nesnelerini algılar ve sonuçları arayüzde işaretlenmiş görüntü olarak gösterir.

Final raporunda sistemin temel amacı; kamera görüntüleri aracılığıyla atıkların türünü belirlemek, kullanıcıya görsel çıktı sunmak ve gerçek zamanlı sınıflandırma yapmaktır. Veritabanına kayıt alma gereksinimi raporda yer alsa da proje kapsamı dışında bırakılmıştır.

Özellikler

  • Tkinter tabanlı masaüstü arayüz
  • OpenCV ile canlı kamera görüntüsü alma
  • Ultralytics YOLO modeli ile gerçek zamanlı nesne tespiti
  • Plastik, cam, kâğıt, metal ve tanımlanamayan atık sınıflarını algılama
  • Algılama sonuçlarını görüntü üzerinde bounding box ile gösterme
  • Tespiti başlatma ve durdurma
  • Kamera görüntüsünü arayüz donmadan işlemek için thread ve queue kullanımı
  • Uygulama penceresi için özel ikon desteği
  • PyInstaller ile Windows EXE oluşturma desteği
  • GitHub’a uygun, modüler ve temiz proje yapısı

Kullanılan Teknolojiler

  • Python
  • Tkinter
  • OpenCV
  • Pillow
  • Ultralytics YOLO
  • PyTorch
  • threading
  • queue
  • unittest

Algılanan Sınıflar

Model eğitim ve değerlendirme çıktılarında aşağıdaki sınıflar kullanılmıştır:

Sınıf Açıklama
glass Cam atıklar
metal Metal atıklar
paper Kâğıt atıklar
plastic Plastik atıklar
undefined Tanımlanamayan veya net sınıflandırılamayan atıklar
background Arka plan / nesne olmayan bölgeler

Proje Yapısı

akilli-cop-ayristirma/
├── README.md
├── pyproject.toml
├── .gitignore
├── models/
│   └── best.pt
├── src/
│   └── akilli_cop_ayristirma/
│       ├── __init__.py
│       ├── app.py
│       ├── main.py
│       ├── resources.py
│       └── assets/
│           └── app_icon.ico
└── tests/
    └── test_resources.py

Kurulum

Python 3.10 veya üzeri önerilir.

python -m pip install -e .

Bu komut proje bağımlılıklarını kurar ve uygulamayı komut satırından çalıştırılabilir hâle getirir.

Çalıştırma

python -m akilli_cop_ayristirma.main

veya paket kurulumundan sonra:

akilli-cop-ayristirma

Uygulama açıldıktan sonra:

  1. Kamerayı Aç butonu ile kamera başlatılır.
  2. Tespiti Başlat butonu ile YOLO tahminleri çalıştırılır.
  3. Tespiti Durdur butonu ile yalnızca canlı kamera görüntüsüne dönülür.
  4. Kapat butonu ile uygulama kapatılır.

Model Dosyası

Uygulama tahmin işlemi için aşağıdaki eğitilmiş YOLO modelini kullanır:

models/best.pt

Bu dosya uygulamayı çalıştırmak için yeterlidir. Eğitim verileri, eğitim geçmişi ve train5.zip gibi büyük eğitim çıktıları repoya eklenmemiştir. Uygulamayı kullanmak isteyen bir kişinin modeli yeniden eğitmesine gerek yoktur.

Yeniden eğitim yapılmak istenirse veri seti ayrıca hazırlanmalı ve YOLO eğitim süreci tekrar çalıştırılmalıdır.

Model Performansı

Final raporunda model performansı confusion matrix, normalize confusion matrix, F1-confidence, precision-confidence, precision-recall ve recall-confidence grafikleriyle değerlendirilmiştir.

Öne çıkan sonuçlar:

  • Ortalama F1 skoru yaklaşık 0.81 değerine, 0.332 confidence threshold seviyesinde ulaşmıştır.
  • Precision-Recall değerlendirmesinde tüm sınıflar için yaklaşık 0.851 [email protected] sonucu elde edilmiştir.
  • Glass ve paper sınıfları yüksek başarı gösterirken, undefined sınıfında daha fazla karışıklık görülmüştür.
  • Model; cam, metal, kâğıt ve plastik atıkları genel olarak başarılı şekilde ayırt edebilmiştir.

Test Senaryoları

Raporda sistem şu senaryolarla değerlendirilmiştir:

Test Senaryosu Beklenen Sistem Cevabı
Plastik atık gösterilmesi Plastik sınıfının belirlenmesi
Metal atık gösterilmesi Metal sınıfının belirlenmesi
Kâğıt atık gösterilmesi Kâğıt sınıfının belirlenmesi
Cam atık gösterilmesi Cam sınıfının belirlenmesi
Bilinmeyen atık gösterilmesi Undefined olarak işaretlenmesi
Kameranın algılanamaması Kamera hatası verilmesi

Testler

Projedeki birim testleri çalıştırmak için:

python -m unittest discover -s tests -v

Karşılaşılan Zorluklar

Proje sürecinde veri seti yetersizliği, farklı ışık ve açı koşulları, donanım kısıtlamaları, eğitim tekrarları, kamera kalitesi ve tanımlanamayan atıklar gibi zorluklarla karşılaşılmıştır. Bu sorunlara karşı veri artırma, farklı ışık/açı koşullarında örnek toplama, model optimizasyonu ve harici kamera ile test etme gibi çözümler uygulanmıştır.

Gelecek Çalışmalar

  • Daha geniş ve dengeli veri setiyle modelin yeniden eğitilmesi
  • Tanımlanamayan atıkların geri bildirim yoluyla sisteme eklenmesi
  • Veritabanı desteği ile algılama kayıtlarının saklanması
  • Gerçek zamanlı raporlama ve istatistik ekranları
  • Farklı kamera ve donanım koşulları için optimizasyon
  • Robotik veya otomatik ayrıştırma mekanizmasıyla entegrasyon
  • Belediyeler ve geri dönüşüm merkezleri için ölçeklenebilir sistem tasarımı

Hazırlayanlar

  • Emrah ŞAHİN — Yazılım geliştirici, model eğitimi
  • Talha TUNA — Dokümantasyon, test
  • Nurdan BULUT — Dokümantasyon, veri etiketleme
  • Gürel BİLGİN — Yazılım geliştirici, arayüz

About

Python, Tkinter, OpenCV ve YOLO ile geliştirilmiş; kamera görüntüsünden cam, metal, kâğıt, plastik ve tanımsız atıkları gerçek zamanlı algılayan akıllı çöp ayrıştırma sistemi.

Topics

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages