computer vision

YOLOv5 ile Derin Öğrenme Tabanlı Nesne Tespiti: Veri Hazırlama, Eğitim ve Gerçek Zamanlı Uygulama

Bu yazıda YOLOv5 algoritmasıyla derin öğrenme tabanlı nesne tespiti süreci detaylıca ele alınmaktadır. Data.yaml dosyasının hazırlanmasından model seçimine, eğitim parametrelerinin ayarlanmasından eğitim çıktı grafiklerinin yorumlanmasına kadar adım adım rehber sunulmaktadır. Ayrıca gerçek zamanlı çıkarım süreci de örnek komutlarla açıklanmıştır.

05.30.2025
6 mins

MODEL EĞİTİMİ

Model eğitimi, kullanılacak algoritmaya göre farklılık gösterir. Hızı ve başarımıyla en çok tercih edilen YOLO algoritması için eğitim süreci şu şekilde ilerlemektedir:
Veri seti hazırlandıktan sonra, veri kümelerinin yolu, sınıf sayısı ve sınıf isimlerini içeren bir YAML (data.yaml) dosyası oluşturulmalıdır.

example data.yaml screenshot

Dataset hazır olduktan sonra model seçimi yapılmalıdır. Kullanılacak cihazın özellikleri ve gerçek zamanlı çalışma gereksinimleri göz önünde bulundurularak bir YOLOv5 modeli tercih edilmelidir.
Tüm YOLO modelleri için https://docs.ultralytics.com/ adresi ziyaret edilebilir.

YOLOv5, önceki YOLO sürümlerinin başarısını temel alır ve performansını artırmak için çeşitli geliştirmeler sunar. Hızlı ve doğru sonuçlar sağlamasının yanı sıra kullanıcı dostudur.
Transfer learning desteği ile önceden eğitilmiş modeller üzerine yeni veriyle eğitim yapılabilir. Bu sayede hem başarı artar hem de eğitim süresi kısalır.
Aşağıdaki grafik, YOLO algoritmalarının karşılaştırmasını sunmaktadır.

yolo algorithm version comparison graph

YOLOv5 modelleri arasında seçim yaparken n, s, m, l, ve x gibi varyantlar arasından tercih yapılmalıdır.
6.x sürümü ile birlikte n6, s6, m6, l6, x6 gibi daha büyük giriş boyutlarına sahip modeller de sunulmuştur.

  • YOLOv5: 640 × 640 giriş boyutu
  • YOLOv5.6: 1280 × 1280 giriş boyutu

Karmaşık ve büyük boyutlu görsellerle çalışılırken 6.x modelleri daha yüksek başarım sağlar.
Aşağıdaki tabloda bu modellerin özellikleri karşılaştırılmaktadır.

yolov5 models comparison table

Model seçiminde parametre sayısı kritik bir kriterdir.
Bu, modeldeki ağırlık ve bias sayısını ifade eder ve öğrenme kapasitesini belirler.

  • Parametre sayısı arttıkça model karmaşık ilişkileri öğrenebilir.
  • Ancak daha fazla veri ihtiyacı ve overfitting riski oluşur.
  • Eğitim süresi uzar ve güçlü donanım (GPU, TPU) gerekir.
  • Model boyutu da artar.

Gerçek zamanlı ve cihaz dostu bir uygulama için YOLOv5s modeli yeterlidir. Bu nedenle eğitim sürecine bu model ile geçiyoruz.

Veri seti ve model seçimi tamamlandıktan sonra YOLOv5 deposu indirilmelidir.
Detaylı adımlar Ultralytics sitesinde yer almaktadır, ancak temel kurulum adımları aşağıdaki gibidir:

YOLOv5 Kurulum Adımları

# YOLOv5 deposunu klonlayın
git clone https://github.com/ultralytics/yolov5

# Klasöre girin
cd yolov5

# Gerekli paketleri yükleyin
pip install -r requirements.txt

Kurulum tamamlandıktan sonra eğitim komutu çalıştırılabilir:

train.py --data ./data.yaml --epochs 300 --weights 'yolov5s.pt'  --cfg models/yolov5s.yaml --batch-size 128

Parametre açıklamaları:

  • --data: Dataset yolunu içeren data.yaml dosyası
  • --epochs: Eğitim süresince kaç dönem (epoch) yapılacağı
  • --weights: Önceden eğitilmiş model dosyasının yolu (boş bırakılırsa sıfırdan başlanır)
  • --cfg: Model yapılandırma dosyası. Sınıf sayısı ve katman yapıları burada belirtilir.
  • --batch-size: Her iterasyonda kaç görselin işleneceği (yüksek değer bellek tüketimini artırır)

Parametreler proje ve donanıma göre ayarlanarak eğitim başlatılır.

Eğitim sırasında ya da tamamlandıktan sonra runs/train/exp klasöründen grafiklere erişilebilir. Örnek bir grafik aşağıda gösterilmiştir:

yolo training example output graph

  • Box: Tahmin edilen bounding box doğruluğu. 100'e yaklaşması başarıyı gösterir.
  • Objectness: Nesne varlığını tahmin etme başarısı.
  • Classification: Doğru sınıfı tahmin etme başarısı.
  • Precision: Doğru pozitif tahminlerin toplam pozitif tahminlere oranı.
  • Recall: Doğru pozitif tahminlerin toplam gerçek pozitiflere oranı.
  • Val Box: Validation setindeki bounding box doğruluğu.
  • Val Objectness: Validation setinde nesne tespiti başarısı.
  • Val Classification: Validation setinde sınıf tahmin başarısı.
  • mAP@0.5: IoU 0.5 için ortalama doğruluk.
  • mAP@0.5:0.95: IoU 0.5-0.95 arası ortalama doğruluk.

Eğitim sonrası gerçek zamanlı test için çıkarım komutu şu şekildedir:

detect.py --weights '' --source 0

Çıkarım parametre açıklamaları:

  • --weights: Kullanılacak eğitilmiş model dosyası
  • --source: Görüntü kaynağı:
    • "0" → webcam
    • "img.jpg" → resim
    • "vid.mp4" → video
    • "path/" → klasör
    • "list.txt" → resim listesi
    • "list.streams" → stream listesi
    • 'https://www.youtube.com/@cozummakina1538' → YouTube
    • 'rtsp://example.com/media.mp4' → RTSP, RTMP, HTTP stream

#yolov5 #yolov5spt #TransferLearning #datayaml #ParametreSayısı #DerinÖğrenme #GPU #Ultralytics #weights #config #epochs #batchsize #loss #recall #mAP05 #mAP0595