YOLO

Burak Özdemir
4 min readMay 2, 2021

--

Nedir? Nasıl çalışır? Versiyonlarının özellikleri?

YOLO, evrişimsel sinir ağlarını (CNN) kullanarak nesne tespiti yapmamız için geliştirilmiş bir algoritmadır. Açılımı “You Look Only Once ” |“ Yalnızca Bir Kez Bak” tır. Güzel bir çalışma gerçekleştirilirse gerçektende tek görüşte oldukça hızlı bir şekilde nesne tespiti yapabilir. Bu kadar hızlı çalışmasının asıl nedeni ise görüntünün tek seferde nöral bir ağdan geçiriliyor olmasıdır.

|

YOLO’ nun çalışma mantığına geçecek olursak;

YOLO mimarisinin temelinde CNN mantığı yatar. Görüntü ilk olarak evrişim katmanından geçerek filtreleme işlemleri uygulanır. Yani görüntünün özniteliklerini çıkararak nesneleri sınıflandırır. CNN hakkında daha detaylı bilgi almak için linkteki medium yazıma göz atabilirsiniz…

[1]

YOLO algoritması ilk olarak görüntüyü kare(5x5, 13x13) ızgaralara böler. Her bir ızgara ayrı ayrı tanınarak içerisinde nesne olup olmadığına karar verilir. Eğer ızgara içerisinde nesne mevcut ise nesnenin merkez noktasının kendi içerisinde olup olmadığına bakılır ve merkez noktaya sahip olan ızgara belirlenir.

Daha sonra belirlenen ızgaradan yararlanılarak bounding box (nesnenin etrafında çizilecek dikdörtgen) çizdirilir. Bounding box, belirlenen ızgaradan aşağıdaki parametreler alınarak çizilir.

1- Nesnenin sınıfı

2- Merkez noktasının (x,y) koordinatları

3- Nesnenin genişliği

4- Nesnenin yüksekliği

Birden fazla ızgara kendi içerinde merkez noktaya sahip olduğunu düşünebilir ve bu durumda görsel üzerinde çok fazla dikdörtgen çizdirilme hatasına maruz kalınabilir.

Geliştiriciler bu hatanın önüne geçebilmek için Non-Maximum Suppression algoritmasını geliştirmişlerdir.

Non-Maximum Suppression

Algoritmaya geçmeden önce ilk olarak güven skorundan bahsedelim. Az önce bahsettiğim parametreler içerindeki nesnenin sınıfını veren parametre bize 1 ve 0 arasında değerler döndürür. Bu değer nesnenin ızgara içinde bulunma olasılığıdır. Bu değer ile gerçekte nesnenin bulunduğu kutunun kesişim değeri çarpılarak o çerçevenin güven skoru bulunur.

Non-Maximum Suppression algoritması ise elde edilen bu güven skoru değerlerini karşılaştırarak en yüksek olan çerçeveyi bounding box olarak belirler ve o onu çizer.

Bounding boxın çizdirilmesi sonucu nesne tespit işlemi tamamlanmış olur.

YOLO ile çizdirdiğim bir çalışma örneği;

Bilindiği üzere YOLO bir çok farklı versiyona sahip. Şimdide bunların farkları nedir, birbirinden üstün ve zayıf özellikleri nelerdir onlara bakalım.

YOLO v1

YOLO mimarisini ilk versiyonu olan YOLO v1 2015 yılında Joseph Redmon ve ekibi tarafından geliştirilmiştir. Daha önceden geliştirilmiş olan nesne algılama algoritmalarından en büyük avantajı tek bir CNN modeli kullanarak tüm işlemleri gerçekleştirebilmesidir. YOLO’ dan önceki modeller gerçek zamanlı bir algılama hızına sahip değildi, YOLO v1 ile bu sorunda çözülmüş oldu. Örneğin Fast R-CNN, yalnızca 0.5FPS hızına sahipken YOLO v1 45 FPS hız ile tam olarak 90 kat daha hızlı bir sergiler.

YOLO v2

Bu sürüm 2017 yılında YOLO v1'in üst sürümü olarak piyasaya sürülmüştür. Geliştirilen özellikleri sıralayacak olursak;

  • Hızı 45 fps’ten 67 fps’e çıkarıldı.
  • Eğitim sırasında görüntünün giriş boyutu 224*224 yerine 448*448 olarak değiştirildi ve daha yüksek çözünürlükte çalışılması sağlandı.
  • YOLO v2, yukarıda bahsettiğimiz ızgaradan alınan 5 parametreyi tahmin eder ve 0 ile 1 arasında kalan değerinin sınırlandırır. Bu konumlandırma sayesinde haritanın boyutu %5 arttırılır.

YOLO v3

Bu model 2018 yılında geliştirilerek piyasaya sürülmüştür.

  • YOLO v3' te bir önceki sürümde kullanılan darknet-19'un aksine 53 evirişim katmanına sahip darknet-53 ağı kullanılır.
  • Bu versiyon, sadece modelin boyutunu değiştirerek yeniden eğitim gerekmeden hız ve doğruluk arasında kolayca değiş tokuş yapılabilir.
  • v3; R-CNN’ den 1000, Fast R-CNN’ den ise 100 kat daha hızlı çalışır.

YOLO v4

Bu model 2 yıllık bir aranın ardından 2020 yılında piyasaya sürdürülmüştür. YOLO v4'teki büyük gelişmeler ise şu şekildedir;

  • Çıktı süresi arttırılmadan detektörün doğruluğu arttırıldı.
  • Çıktı süresini çok küçük bir miktar arttırarak nesne algılama doğruluğu çok büyük bir derece arttırıldı.
  • YOLO v3'e göre FPS hızı ise %12 arttırılmıştır.

YOLO v5

v4 sürümünden sadece iki ay sonra piyasaya sürülmüştür. Bu versiyon Joseph Redmon tarafından geliştirilmemiştir. Daha önceleri YOLO v3'ün PyTorch uygulamasını geliştirmesiyle tanınan Glenn Jocher tarafından geliştirilmiştir.

  • Diğer tüm önceki sürümlerden farklıdır çünkü darknet ağı yerine bir PyTorch uygulaması olarak geliştirilmiştir.
  • En önemli gelişmeler; mozaik veri büyütme ve otomatik öğrenme sınırlayıcısının geliştirilmesidir.

Kaynaklar

--

--