YOLO (You Only Look Once) Algoritması

Tolga Ay
5 min readJul 28, 2022

Herkese merhaba, bugün size YOLO (You Only Look Once) türkçesiyle ‘Sadece bir kere bak’ olan gerçek zamanlı nesne takibi yapabilen bir algoritmadan bahsedeceğim.

Photo from: https://pjreddie.com/darknet/yolo/

Yolo, evrişimsel sinir ağları (CNN) kullanan gerçek zamanlı nesne takibi yapabilen bir derin öğrenme algoritmasıdır. İyi bir çalışma yapıldığı takdirde gerçekleştirilirse 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 algoritması:

  • Hızlıdır, nesneleri gerçek zamanlı tespit eder.
  • Doğruluk oranı yüksektir, arkaplanda yaptığı bazı işlemler -bir sonraki başlıkta bahsedeceğiz- sayesinde tahmini oldukça doğru bir şekilde yapar.
  • Öğrenme kapasitesi çok iyidir.

Bu sebeplerden dolayı Yolo oldukça sık tercih edilen bir algoritmadır, şimdi gelin mantığına bir bakalım.

YOLO Algoritmasının Mantığı

Yolo algoritması 3 tane teknikten oluşur.

  • Residual Blocks (Artık Bloklar)
  • Bounding Box Regression (Sınırlayıcı Alan Regresyonu)
  • Intersection Over Union (IOU) (Birliğin üstünde birleşme)

Olarak 3 kısıma ayrılır, şimdi teker teker bu kısımları inceleyelim.

Residual Blocks

Bu aşamada resim N x N (3x3, 5x5 vs.) ızgaralara ayrılır, ve ızgaraların her biri kendi içinde bir nesne olup olmadığını kontrol etmekle sorumludur.

Eğer ki ızgara içinde nesne var olduğunu düşünüyorsa merkez noktasının kendi alanında olup olmadığını düşünür. Resim sinir ağından geçtikten sonra çıktı olarak bir vektör meydana gelir.

Bounding Box Regression

Bu aşamada tespit edilen vektör belirli parametreler altında incelenir.

Y daha önceki aşamada çıkan vektörü temsil etmektedir, içindeki parametreler ise:

  • Pc: Sınıf olasılığıdır. Burada nesnenin yer alıp almamasına göre değerlendirme yapılır. Nesne olma olasılığı 1 ile , nesne olmama olasılığı 0 ile belli edilir. Yukarıdaki görselde araba olduğu için “1” değeri alınacaktır.
  • Bx, By: Çizdirilen alanın merkezi kordinatlarıdır.
  • Bw: Kırmızı çerçevenin enidir .
  • Bh: Kırmızı çerçevenin yüksekliğidir.
  • C: Sınıfı ifade eden parametredir, araba olduğu için 1 değerini alıcaktır, aynı zamanda bu alan içerisinde araba olmayan yerlerse 0 değerini alacaktır.

Bu vektörler sayesinde belirlenen alanda nesne tespiti yapar.

Intersection Over Union (IOU)

Bu aşamada çizdirlen alanların nasıl üst üste geldiğini açıklar, yani bir nevi algoritma doğru mu çalışmış yanlış mı onu test eder.

Her çizdirilen alan, bounding box ve bunların güven puanlarını tahmin etmekten sorumludur. Öngörülen bounding box gerçek kutuyla aynıysa, IOU 1'e eşittir. Bu mekanizma, gerçek kutuya eşit olmayan sınırlayıcı kutuları ortadan kaldırır.

Görüldüğü üzere yeşil olan kutu YOLO’nun kendi çizdirdiği alandır, mavi ise IOU ile tespit edilmesi yapılan alandır, açıkça yeşil alanın içerisinde kedi vardır ve mavi alanın içerisinde de kedi var yani sonuç 1. Bu yönteme aynı zamanda “güven skoru” da denmektedir.

Şimdi hızlıca genel bir özet geçelim, görüntü ızgara hücrelerine bölünür. Her ızgara hücresi belirli sayıda sınırlayıcı kutuları tahmin eder ve güven puanlarını sağlar. Hücreler, her nesnenin sınıfını oluşturmak için sınıf olasılıklarını tahmin eder.

Örnek olarak biz bu sayede fotoğraftaki olan nesneleri tahmin edip, sınıflandırabiliriz.

Photo from: https://pjreddie.com/darknet/yolo/

Fotoğrafta görüldüğü üzere 3 adet nesne belirlenmiş ve işaretlenmiş. Tüm tahminler, tek bir evrişimsel sinir ağı kullanılarak aynı anda yapılır.

IOU ise bounding boxları kontrol etmek için yapılır, yani tahmin edilen nesne o alanın içerisinde mi değil mi diye bakılarak nesne olabildiğince kapladığı alan kadar işaretlenmeye çalışır. Bunun sonucunda nesne tespiti yapılmış olunur.

Şimdi gelin hep beraber piyasada bulunan YOLO sürümlerine bakalım:

YOLO V1

2015 Yılında ilk sürüm olarak piyasaya sunulmuştur, gerçek zamanlı nesne takibinde döneminde çok iyi olsa da artık yeni sürümlerle pek bir geçerliliği kalmamıştır ve küçük nesnelerin tespitinde oldukça başarısızdır.

Fakat döneminin nesne takip algoritmalarına göre bir hayli kullanışlıdır.

YOLO V2

Bu sürüm 2017 yılında YOLO v1'in üst sürümü olarak piyasaya sürülmüştür. Özelliklerine bakacak olursak:

  • Tespit etme hızı 45 fps’ten 67 FPS’e çıkarıldı.
  • Eğitim sırasında görüntünün giriş boyutu 224 x 224 yerine 448 x 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

YOLO V3'te, YOLO V2'de kullanılan softmax katmanı yerine her sınıf için lojistik sınıflandırıcılar kullanır. YOLO V2'de kullanılan Darknet 19 mimarisini yerine çok daha derin ve kısayol bağlantıları olan 53 evrişimli katmana sahip özellik çıkarıcı için Darknet-53 ağı kullanılır. Darknet-53 ağı , kısayol bağlantılı 3x3 ve 1x1 filtrelerden meydana gelir.

YOLO V4

YOLO V3'ten çok fazla bir farkı bulunmayan YOLO V4, CSPDarknet53 mimarisini kullanmaktadır, bazı özelliklerini sıralayacak olursak:

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

YOLO V5

YOLO V5 algoritması diğer tüm YOLO algoritmalarından farklıdır. Diğer algoritmalar darknet mimarisi kullanırken YOLO V5 PyTorch adlı kütüphaneden yararlanır ve bu kütüphanenin mimarilerinden birini kullanır.

YOLO V5'teki önemli iyileştirmeler, mozaik veri artırma ve otomatik öğrenme sınırlayıcı kutu bağlantılarını kapsar.

YOLO V6

Tamamen yeni bir algoritma olup, yeni çıkmıştır. YOLO V6 sınıfının en iyi tespit yapabilen algoritmasıdır.

Görüldüğü üzere YOLO V6 ve YOLO V5 üzerinde bariz bir fark bulunmaktadır. IOU performansı oldukça gelişmiştir ve bu sayede tespit edilen nesnelerin doğruluk oranı bir hayli fazladır.

Bu yazımız burada sonlanıyor kendinize iyi bakın, sağlıcakla kalın!

Kaynaklar

--

--