Makineler Görüyor 1 — Nesne Tespit Modelleri
Nesne tespit ve izleme uygulamaları son yıllarda çok kullanılan derin öğrenme alanlarından biridir. Otonom araçlar gibi popüler olan birçok uygulamanın ortaya çıkmasını sağlamış ve birçok yeni çalışmanın da önünü açmıştır. Gerçek zamanlı nesne tespitini yüksek başarı ile yapabilmek için çeşitli modeller sunulmuştur. Bu yazı boyunca bu modellerden birkaçını kısaca inceleyeceğiz.
R-CNN
Gerçek zamanlı nesne tespiti uygulamalarında sadece yüksek doğruluğa değil aynı zamanda yüksek hıza da ihtiyacımız vardır. Bu sebeple CNN üzerinde nesne tespiti uygulamalarında hızı arttıracak iyileştirmeler ve eklemeler yapılarak farklı modeller ortaya çıkarılmıştır. Bu yazı boyunca bahsedeceğim modellerden en eskisi R-CNN modelidir. R-CNN makalesi “Rich feature hierarchies for accurate object detection and semantic segmentation” ismiyle 2013 yılında tanıtılmıştır. Temel yeniliği ‘Selective Search’ isimli yeni bir metot olan bu model, resimde incelenecek bölgeleri azaltmayı hedeflemiştir. Selective Search resim üzerinde yaklaşık 2000 bölge önerisi yapar ve model bu bölgeler üzerinde çalışmaya devam eder. Bu sayede temel CNN modellerinden daha hızlı çalışır. Fakat gerçek zamanlı uygulamalar için bu hız yeterli değildir. R-CNN test zamanında her bir resim için 50 saniyeye ihtiyaç duymaktadır.
Yukarıdaki resimde görüldüğü üzere R-CNN bir resmi giriş olarak alır ve resim üzerinde yaklaşık 2 bin bölge önerisinde bulunur. Daha sonra CNN ile bu bölge önerileri üzerindeki anlamlı özellikler incelenir. Son adımda ise çıkarılan özellik vektörü bir Linear SVM’den geçer ve her bölge sınıflandırılır.
Fast R-CNN
Fast R-CNN, R-CNN modelinin sahip olduğu dezavantajları indirgemek ve hızlandırmak için farklı metotlar kullanmıştır. R-CNN modelinin temel zayıflığı her bölge önerisi için ayrı bir CNN kullanmasıydı. Bu sebeple resimleri test ederken çok fazla zaman ve hesaplama gücü gerekiyordu. Fast R-CNN farklı bir yaklaşım kullanarak tüm resmi sadece bir CNN ile besler.
CNN katmanından sonra model özellik haritası elde eder. Nesne barındırabilecek ilgi alanları bu harita üzerinden alınır ve bir fully-connected katmanına gönderilir. Son adımda nesne sınıflarını ve sınırlayıcı kutularını belirlemek için Softmax ve Bbox Regressor kullanılır.
Faster R-CNN
Ailenin bir sonraki ferdi olan Faster R-CNN, yine kendinden önceki modellerin zayıflıklarını çözmek için farklı yaklaşımlar kullanmıştır. Temel farkı ‘Selective Search’ yerine RPN (Region Proposal Network) kullanarak çok daha hızlı çalışmasıdır. Bu model, bölge önerilerinde bulunan derin bir CNN ve önerilen bölgeleri kullanan bir Fast R-CNN’den oluşur.
Model giriş olarak aldığı resmi tıpkı Fast R-CNN modelinde olduğu gibi özellik haritaları üreten tek bir CNN’den geçirir. Daha sonra RPN bu özellik haritasından nesne önerileri ve skorlarını çıkış olarak üretir. Son adımda bu öneriler yeniden şekillendirilir ve sınıflandırma yapabilmek için kullanılır.
Faster R’CNN kendinden önceki iki modele oranla çok daha iyi sonuçlar elde edebilmiştir. Her bir resim üzerinde harcadıkları test zamanını aşağıdaki şekil üzerinde görebilirsiniz.
YOLO AİLESİ
Yolo’nun ilk versiyonu 2015 yılında “You Only Look Once: Unified, Real-Time Object Detection” isimli makalede tanıtılmıştır. Her bir versiyon güncellenmesinde daha da hızlı çalışan bir model olmuştur. İsminden de anlaşılacağı üzere temel amacı tüm resme sadece bir kere bakarak nesne tespit etmeye çalışmasıdır. Yolo’nun farklı versiyonlarında farklı özellikler bulunmaktadır. Fakat bu yazımda günümüzde en sık kullanılan ve benim de üzerinde uygulama geliştirdiğim 4. Versiyonundan bahsedeceğim.
Modern bir nesne tespit mimarisi genel olarak omurga ve baş olarak isimlendirilen iki kısımdan oluşmaktadır. Omurga kısmı ImageNet üzerinde önceden eğitilmiş bir model içerirken baş kısmı ise sınıf ve sınırlayıcı kutu tespitleri için kullanılır.
Yolo4 ise omurga olarak 29 konvolusyon katmanından meydana gelen CSPDarknet53 modelini, baş kısmı için ise Yolov3 modelini kullanır.
Yolov4 eğitimi MS-COCO veri seti üzerinde gerçekleştirilmiştir. Sağladığı yüksek hız ve başarı nedeniyle diğer modellerden daha fazla tercih edilmektedir. Aşağıdaki şekil üzerinde diğer bazı modeller ile karşılaştırılmasını inceleyebilirsiniz.
Bu yazı boyunca tanıtıldıkları zaman nesne tespit uygulamalarının kalbi olmuş birkaç farklı modelden bahsettim. Fakat literatürde SSD ve RetinaNet gibi başarı göstermiş çeşitli modellerde bulunmaktadır. Daha detaylı bilgi edinmek için bu modellere de göz atabilirsiniz. Eğer bir nesne tespit uygulaması geliştirmek istiyorsanız da Yolov4 için bu Github reposunu inceleyebilirsiniz. Bir sonraki yazımda ise kendi veri setimiz ile nasıl Yolov4 eğitimi yapabileceğinizi anlattım.