Framework ve Model Belirleme Aşamaları

meyraaslihan
Oct 6, 2020 · 4 min read
Image for post
Image for post

Proje belirleme aşamalarını ve gereksinimleri ile ilgili yazımın hemen devamında başlığından da anlayacağınız üzere Eye For You (I4U) adlı projemi oluştururken hangi framework’ü ve hangi algoritma modelini kullandığımdan bahsedeceğim. İlk olarak darknet framework’ü ile başlayalım.

Darknet

Darknet, C ve CUDA ile yazılmış açık kaynaklı bir yapay sinir ağı içeren frameworktür. Hızlı ve kurulumu kolaydır. CPU ve GPU hesaplamasını destekler. Birbiri üzerinden geliştirilen birçok Darknet frameworkü yer almaktadır ve bu kaynağı Github’da kolayca ulaşabilirsiniz.

Eye For You (I4U) adlı projemi Darknet framework’ünü ve kendi eğittiğim YOLOV3 algoritmasına sahip modelimi kullanarak geliştirdim. Peki neden Yolov3 algoritmasını tercih ettin? YOLO dışında başka algoritmalar var mı? Var ise neden o algoritmaları kullanılmadın gibi sorularınızı duyar gibiyim. Bu sorularınıza cevap verebilmek için Yolov3 ve diğer algoritmalardan kısaca bahsetmek istiyorum.

İlk olarak araştırmaya başladığınızda karşılaşacağınız yapay sinir ağı algoritmaları R-CNN, Fast R-CNN ve Faster R-CNN, Yolo algoritmalarıdır. Bu algoritmalara birlikte göz atalım.

1. R-CNN Algoritması:

Image for post
Image for post

R-CNN Algoritması görüldüğü gibi iki aşamadan oluşmaktadır ilk aşamada bölge bazlı nesne tespit algoritmaları nesne bulunması muhtemel alanları tespit edilmektedir. Ardından ikinci aşamasında ise oralarda ayrı ayrı CNN (Convolutional Neural Network, Evrişimsel Sinir Ağları) sınıflandırıcıları yürütülür.

R-CNN yöntemi sonunda her ne kadar iyi sonuçlar verse de bir resim iki ayrı işleme tabi tutulduğu için resim üzerindeki işlem sayısı artıyor ve işlem süresi uzuyordu bu sebeple de düşük bir FPS (Frames per second, saniye başına kare) alınmasına sebep oluyordu. Bu yüzden yapay sinir ağı algoritmalarından R-CNN algoritmasını kullanmaktan vazgeçtim.

2. Fast R-CNN ve Faster R-CNN Algoritması

Image for post
Image for post

Fast R-CNN ve Faster R-CNN, görüldüğü gibi R-CNN’nin gelişmiş bir versiyonlarıdır. Ayrı ayrı segmentasyon ile belirlenmiş bölgeler yerine tüm resmi tek seferde CNN yapısından geçirip ardından önceden yazılmış Region Proposal Network’e göndererek çalışmaktadır, Faster R-CNN algoritması gerçek zamanda ortalama 7 FPS ile çalışır. Fps değeri ile hala daha fazla verim alamadığım için Faster R-CNN algoritmasını kullanmaktan vazgeçtim.

3. YOLOV3 Algoritması

Son yıllarda popüler olan YOLO (You Only Look Once) algoritması, Darknet frameworkü ile birlikte kullanılabilen bir modeldir. Darknet YOLO platformunu Python ile kullanılmaya uygundur bu da doğal olarak tercih sebebi haline gelmektedir.

YOLO ile nesnelerin sınıflandırılması ve konumlandırılması için iki aşamalı bir yöntem kullanılmak yerine nesnenin hem sınıflandırılması hem de konumlandırılması için tek bir CNN uygulanır.

Aynı zamanda YOLO görüntüleri yüksek FPS ile nesne tespit işlemini gerçekleştirebilir. Özellikle gerçek zamanlı uygulamalar için nesnenin tespit hızı uygulamanın verimliliği açısından oldukça önemlidir. YOLO mimariyi son derece hızlı yapar. R-CNN ile karşılaştırıldığında, R-CNN’den 1000 kat daha hızlıdır. YOLO modeli ise çalışma sırasında nesneyi sadece 1 kez görmesi verimli sonuç elde etmesi açısından yeterlidir.

Bu durum YOLO’nun diğer algoritmalara göre en hızlı nesne tespit platformu olduğunun göstergesidir. YOLO’nun bu kadar hızlı çalışması ile nesneleri gerçek zamanlı olarak algılamayı sorunsuz bir şekilde gerçekleştirir aynı zamanda iyi eğitilmiş bir model ile doğru sonuçlar vermektedir

Image for post
Image for post

Yukarıda görüldüğü üzere YOLOv3 ve diğer algoritmaların COCO veri setinde 0.5 IoU (mAP-50) ile karşılaştırması yer almaktadır. Buradaki mAP değeri yani model de yer alan bütün sınıfların AP değerlerinin ortalamasının alınıp hesaplandığı değerdir. Buna karşılık IoU değeri ise Ground Truth (yani test veri kümesinde yer alan, olması gereken, hedeflenen değerlere) ve Bouding Box yer aldığı iki dikdörtgenin kesiştikleri alanın bu iki dikdörtgenin bileşimi sonucu ortaya çıkan alana bölümü ile hesaplanır.

Grafikten de yer aldığı üzere YOLO diğer nesne tespiti algoritmalarına göre süre ve doğruluk açısından çok iyi durumdadır. Ayrıca isteğe bağlı olarak nesne tespiti sırasında isteğe göre yüksek doğruluk, daha düşük hız veya ve yüksek hız, daha düşük doğruluk arasında rahatlıkla değişiklik yapılabilmektedir.

Yukarıda görüldüğü gibi YOLOv3 algoritmasının kullanılmamın sebebi yolodan önceki algoritmaların genel ortalama kesinlik (mAP) değerleri yeterli olmadığı için. Peki bu projede neden YOLOv2 değil de YOLOv3 algoritması kullanmadın? sorusunu yöneltebilirisiniz. Bu sorunun yanıtı en güzel şu şekilde cevap verilebilirim; YOLOv2 nesne tespiti için 11 kat daha desteklenmiş aynı zamanda orijinal 19 kat yapay sinir ağına sahip olan özel bir algoritmadır. 30 katmanlı bir mimariye sahip olan YOLO v2 algoritması genellikle küçük boyutta nesne algılamak için kullanılır. YOLOv3 ise ilk olarak Imagenet’te eğitilmiş 53 katmanlı bir ağa sahip bir Darknet çeşidi olarak kullanılmaktadır.

Algılama görevi için, üzerine 53 katman daha yığılır ve bu da YOLOv3 için 106 kat tamamen erişimli bir mimari sağlar. Bu karşılaştırma sonucun da YOLOv2’nin YOLOv3’e göre neden daha yavaş çalıştığını ve neden YOLOv2’yi değil de YOLOv3’ü seçmeliyiz sorusuna güzel bir yanıt olduğunu düşünüyorum.

Kodcular

Bu yayın yazılım üzerine üretilen blogların bir araya…

Medium is an open platform where 170 million readers come to find insightful and dynamic thinking. Here, expert and undiscovered voices alike dive into the heart of any topic and bring new ideas to the surface. Learn more

Follow the writers, publications, and topics that matter to you, and you’ll see them on your homepage and in your inbox. Explore

If you have a story to tell, knowledge to share, or a perspective to offer — welcome home. It’s easy and free to post your thinking on any topic. Write on Medium

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store