YOLO konvolüsyonel sinir ağları kullanarak nesne tespiti yapan bir algoritmadır. Açılımı ‘’You Only Look Once’’ demektir.Sebebi ise algoritmanın nesne tespitini oldukça hızlı bir şekilde ve tek seferde yapabiliyor olmasıdır.
YOLO algoritmasının diğer algoritmalardan daha hızlı olmasının sebebi resmin tamamını tek seferde nöral bir ağdan geçiriyor olmasıdır.
YOLO algoritması görüntüler üzerinde tespit ettiği nesnelerin çevresini bounding box ile çevreler.
YOLO kendisine girdi olarak verilen görüntüyü NxN’lik ızgaralara böler. Bu ızgaralar 5×5,9×9,17×17… olabilir.
Her ızgara kendi içerisinde nesne olup olmadığını ve nesne var olduğunu düşünüyorsa merkez noktasının kendi alanında olup olmadığını düşünür.
Nesnenin merkez noktasına sahip olduğuna karar veren ızgara o nesnenin sınıfını, yüksekliğini ve genişliğini bulup o nesnenin çevresine bounding box çizmelidir.
Birden fazla ızgara, nesnenin kendi içerisinde olduğunu düşünebilir. Bu durumda ekranda gereksiz bounding box’lar oluşur. Bütün bounding boxların güven skoru vardır. Non-max Suppression algoritması görüntü üzerinde tespit edilen nesneler için çizilen bounding boxlardan güven değeri en yüksek olanı ekrana çizer.
Aşağıdaki grafiklerde YOLO ve diğer bazı algoritmaların MS COCO data set’i için object detection performanslarını görebiliriz.
Grafiklerde de göründüğü gibi sınıflandırıcı sayısının eşit olduğu bir case düşünürsek YOLOv4 rakiplerine göre neredeyse 3 kat fark atmış durumda.
YOLO algoritmasının kullanıldığı donanım ve modüller de çok önemlidir. Performans ve fps açısından kıyaslama yaptığımız zaman örneğin: Opencv peketi ile gelen cv2.dnn.DNN_BACKEND_CUDA modülü ile kendi ekran kartımız ile build ettiğimiz darknet cuda arasın da oldukça fazla fark vardır.
Daha özgün ve hızlı modeller kullanabilmek için her zaman kendi build ettiğimiz darknet ve cudayı kullanmamız gerek.
Gelecekte çok daha iyi donanımlara sahip olunacağı ihtimalini göz önüne alırsak yolo ve benzer algoritmalar hayatımızın çoğu yerin de daha kritik öneme sahip olacaktır.