• 34ºc, Sunny
  • Tuesday, 18th June, 2019

a


🎯 Giriş

Yapay zeka destekli çöplerin ayrıştırılması konusu, hem çevre hem de teknoloji açısından oldukça önemli bir alan. Bu yazımda, hiç derin teknik bilgiye sahip olmadan, YOLOv8 modeliyle Python kullanarak bir atık ayırma projesi nasıl yapılır, adım adım anlatacağım.

Kendi tecrübelerime dayanarak karşılaştığım hataları, ipuçlarını ve en doğru yolu da paylaşacağım. Hadi başlayalım!


🔧 1. Gerekli Kurulumlar

İlk adımda bilgisayarımızda bazı temel kütüphaneleri kurmamız gerekiyor:

pip install ultralytics opencv-python

Ayrıca Python 3.10+ sürümünü kullandığımdan emin olun.


🧠 2. YOLOv8 Nedir? Neden V8?

YOLOv8, Ultralytics tarafından geliştirilen en güncel ve optimize versiyondur.

Neden YOLOv8?

✅ Modern ve Python uyumlu

✅ Eğitim ve test çok daha kolay

from ultralytics import YOLO kadar basit!

📌 Roboflow üzerinden dataset export ederken “YOLOv8” seçmek, doğrudan Ultralytics ile uyumlu format sağlar.


📁 3. Dataset Hazırlığı (Roboflow)

  1. Roboflow’a girin ve projenizi oluşturun.
  2. Resimleri ve etiketleri yükleyin.
  3. “YOLOv8” formatında export edip .zip dosyasını indirin.
  4. ZIP’i çıkarınca şu yapıyı elde etmeniz gerekir:
project/
│
├── train/
│   ├── images/
│   └── labels/
│
├── valid/
│   ├── images/
│   └── labels/
│
└── data.yaml


🧪 4. Modeli Eğitme

from ultralytics import YOLO
model = YOLO("yolov8n.pt")  # YOLOv8 nano modeli
model.train(data="data.yaml", epochs=50, imgsz=640)

Burada data.yaml dosyası Roboflow tarafından otomatik oluşturulur.

Bu dosyada sınıf isimleri (names), sınıf sayısı (nc) ve dataset yolları bulunur.


🎥 5. Kameradan Gerçek Zamanlı Tespit

import cv2
from ultralytics import YOLO
model = YOLO("runs/detect/train/weights/best.pt")  # Eğitilmiş model
cap = cv2.VideoCapture(0)
while True:
    ret, frame = cap.read()
    if not ret:
        break
    results = model(frame)
    annotated_frame = results[0].plot()
    cv2.imshow("Detection", annotated_frame)
    if cv2.waitKey(1) == ord("q"):
        break
cap.release()
cv2.destroyAllWindows()


🧹 6. Negatif Veriler (Etiketsiz Görseller)

İnsan yüzü, hayvanlar gibi istemediğiniz nesneleri algılamaması için etiketsiz (boş .txt) resimler kullanabilirsiniz.

import os
image_folder = "train/images"
label_folder = "train/labels"
for filename in os.listdir(image_folder):
    name, _ = os.path.splitext(filename)
    txt_path = os.path.join(label_folder, f"{name}.txt")
    if not os.path.exists(txt_path):
        with open(txt_path, "w") as f:
            pass  # boş txt dosyası oluştur


📊 7. Model Sonuçları ve Sorunlar

Eğitim sonrası klasör: runs/detect/trainX/

  1. results.png: Eğitim grafiği
  2. confusion_matrix.png: Karışıklık matrisi (eğer test verinizde etiket varsa)
  3. ⚠️ "WARNING ⚠️ no labels found" gibi hatalar genelde etiket eksikliğinden kaynaklanır. .txt dosyalarını kontrol edin.


🧩 Ek Bilgiler

SoruCevapYOLOv5 mi, YOLOv8 mi?✅ YOLOv8 önerilir (daha yeni)PyTorch seçmek zorunlu mu?YOLOv8 zaten PyTorch tabanlıTest oranı grafik verir mi?Evet, eğer test/labels varsa


✨ Sonuç

Bu projeyle, Python bilgisi olmasa bile YOLOv8 kullanarak basit ve güçlü bir atık ayırma sistemi kurabiliyorsunuz.

Gelecekte bu sistemi donanıma entegre ederek daha büyük projelere evriltebilirsiniz.

admin

Sosyal Medyalarımız