34ºc, Sunny
Tuesday, 18th June, 2019
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!
İ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.
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.
.zip
dosyasını indirin.project/
│
├── train/
│ ├── images/
│ └── labels/
│
├── valid/
│ ├── images/
│ └── labels/
│
└── data.yaml
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.
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()
İ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
Eğitim sonrası klasör: runs/detect/trainX/
results.png
: Eğitim grafiğiconfusion_matrix.png
: Karışıklık matrisi (eğer test verinizde etiket varsa)"WARNING ⚠️ no labels found"
gibi hatalar genelde etiket eksikliğinden kaynaklanır. .txt
dosyalarını kontrol edin.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
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