YOLO — You Only Look Once

Elif Beyza Ozkan
4 min readSep 12, 2022

--

Açılımı “You Only Look Once” olan YOLO, evrişimsel sinir ağlarını (CNN- convents) kullanarak nesne tespitini hızlı ve doğruluğu yüksek bir şekilde yapan regresyona dayalı bir algoritmadır.

YOLO algoritması, adından da anlaşılacağı gibi çalışmaya başladığında görüntülerdeki veya videolardaki nesneleri ve bu nesnelerin koordinatlarını tek seferde tespit etmesi özelliğiyle ön plana çıkmaktadır.

YOLO Algoritması Nasıl Çalışmaktadır?

Görselin ızgaralara (grids) bölünmesi

YOLO algoritması ilk olarak görüntüyü N x N boyutuna sahip ızgaralara (grids) bölmektedir. Her ızgara kendi içerisinde nesne olup olmadığını algılamaktadır. Ardından içerisinde nesne olan ızgaralar nesnenin merkez noktasının ızgara içerisinde bulunup bulunmadığını tespit etmekte ve böylelikle merkez noktaya sahip ızgara belirlenmektedir.

Kaynak: https://www.section.io/engineering-education/introduction-to-yolo-algorithm-for-object-detection/

Bounding box çizilmesi

Daha sonra belirlenen ızgaradan yararlanılarak nesneleri çevreleyen bounding box olarak adlandırılan kutular çizilmektedir. Görüntüdeki her bounding box aşağıdaki dört tanımlayıcıdan oluşmaktadır:

  • Bounding box merkezi (bx,by),
  • Genişlik (bw),
  • Yükseklik (bh),
  • Bir nesnenin sınıfına karşılık gelen c değeri
Kaynak: https://www.section.io/engineering-education/introduction-to-yolo-algorithm-for-object-detection/

Pc , IoU ve güven skoru değerlerinin hesaplanması

Ek olarak, bounding box içerisinde bir nesne olma olasılığı olan bir Pc (probility of class) değeri hesaplanmaktadır. “1 ” nesne olma olasılığını ifade ederken, “0” nesne olmama olasılığını temsil etmektedir.

Ayrıca her bir bounding box içerisinde bulunan nesnenin yüzde kaç olasılıkla tahmin edilen nesne olduğunu söyleyen güven skorunu hesaplamaktadır.

  • Güven skoru = Pc * IoU

Pc kavramından önceki paragrafta bahsetmiştik. IoU (intersection over union) ise gerçekte nesnenin bulunduğu kutu ile tahmin edilen kutunun kesişim değeridir. Nesneleri mükemmel bir şekilde çevreleyen bir çıkış kutusu elde edilmesini sağlamaktadır. Öngörülen kutu gerçek kutuyla aynıysa, IoU 1'e eşittir. Aksi takdirde, 0'a eşittir.

Non-maximum suppression uygulanması

Birinci ve ikinci adımda merkez noktaya sahip ızgara belirlenmesinden ve belirlenen ızgaradan yararlanılarak bounding box çizilmesinden bahsettik. Ancak bazen birden fazla ızgara (grid) nesnenin kendi içinde olduğunu düşünebilmekte ve bunun sonucunda görsel üzerinde gereğinden fazla bounding box çizilebilmektedir.

Non-maximum suppression algoritması görüntü üzerinde tespit edilen nesneler için çizilen bounding boxlardan güven değeri en yüksek olanın ekrana çizilmesini sağlamaktadır.

YOLO’nun çalışma adımlarından bahsettik. Son olarak, YOLO versiyonlarından bahsederek yazımızı sonlandıralım.

YOLOv1

YOLO’nun ile sürümü olan YOLOv1, 2016 yılında Joseph Redmon ve arkadaşları tarafından geliştirilmiştir. Kısa süre içerisinde, ilk tek aşamalı nesne algılama algoritması olması, dönemin nesne algılama uygulamalarına göre yüksek hıza ve doğruluğa sahip olması sebebiyle en popüler algoritma haline gelmiştir.

YOLOv1, görüntüleri gerçek zamanlı olarak saniyede 45 kare hızında işlerken, daha küçük bir sürüm olan Fast YOLO, saniyede 155 kareye ulaştı ve yine de diğer gerçek zamanlı dedektörlerin iki kat haritasını elde etti.

YOLOv2

2017 yılında YOLOv1 sürümünün Joseph Redmon ve Ali Farhadi tarafından geliştirilmesiyle elde edilmiş ve YOLO9000 adıyla tanıtılmıştır.

Darknet-19'un temel model olarak kullanılması, toplu normalleştirme, yüksek çözünürlüklü bir sınıflandırıcı kullanımı ve bounding boxları tahmin etmek için bağlantı kutularının (anchor boxes) kullanımı ve daha fazlası dahil olmak üzere YOLOv1'i çeşitli şekillerde geliştirir.

YOLOv3

2018 yılında Joseph Redmon ve Ali Farhadi tarafından YOLOv2 geliştirilerek yayınlanmıştır. YOLOv3'te softmax aktivasyon fonksiyonu, bağımsız lojistik sınıflandırıcılarla değiştirilmiş ve darknet-19 mimarisi geliştirilerek elde edilen darknet-53 mimarisine dayanan bir sürüm elde edilmiştir. Bunun yanı sıra daha küçük nesnelerde performansı artırmak için üç ayrı ayrıntı düzeyinde tahminler yapılmıştır.

YOLOv4

Nisan 2020 tarihindeAlexey Bochkovskiy, Chien-Yao Wang ve Hong-Yuan Mark Liao tarafından piyasaya sürülen bu sürüm, SPDarknet53 mimarisine dayanmaktadır.

YOLOv4, YOLOv3'e kıyasla %10 daha yüksek ortalama hassasiyet (AP) ve %12 daha iyi FPS elde etmektedir.

YOLOv5

Haziran 2020 tarihinde Glenn Jocher tarafından GitHub’da yayınlanmıştır. En iyi yanı, PyTorch’ta yerel olarak uygulanması ve darknet çerçevesinin sınırlamalarını ortadan kaldırmasıdır. YOLO v5'in YOLO v4'ten son derece hızlı ve hafif olduğu söylenirken, doğruluğunun YOLO v4'ten farkı olmadığı gözlemlenmiştir.

YOLOv5 başlıca iyileştirmeleri, mozaik veri artırma ve otomatik öğrenme sınırlayıcı kutu bağlantılarını içermektedir.

Kaynaklar

--

--

Elif Beyza Ozkan

I’m an Electrical Electronics Engineering Student at Osmangazi University. You can reach me on linkedin.com/in/elifbeyzaozkan and elifbeyzaozkan57@gmail.com