Kişi Tespit Aşamaları ve Proje Yaşam Döngüsü

Anlık alınan görüntülerde tespit ettiğim kişi ve nesnelerin başarı oranlarını kıyaslayarak elde edilen sonuçlara bakalım. Öncelikle yukarıda yer alan görüntü de Meyra kişisinin tespit oranı 93.38% . Bu orandan yola çıkarak farklı konum ve farklı ışıkta farklı görüntüleri ele alıp tespit oranının başarılı olup olmadığına bakalım.

Yukarıda görüldüğü gibi Meyra kişisinin tespit oranı 81.23%. Nesnelerin farklı konumlarda ve farklı ışıklarda tespit oranları da farklılık gösterebilir. Bunun sebebi de train işlemi sırasında train işlemine tabi tutulan her görüntü farklı ışık ve konumlarda çekilip eğitilmiş olmasıdır. Tüm bu sonuçlardan yola çıkarak artık tespit işlemlerinin başarılı bir şekilde gerçekleştiği söylenebilir.

Tüm bu başarılı sonuçlar sonrasında serimin son yazısını projemin yaşam döngüsünden bahsederek sonlandırmak istiyorum. Yaşamımızın boyunca önceden planlar yapıp, planımızın gerçekleşeceği gün planımızdan bambaşka olaylar ile karşılaşabiliyoruz. Benim de projemin tüm aşamalarında planlı hareket edip sonraki yapılacak adımları önceden düşünsem bile süreç içerisinde değişikliğe gittiğim zamanlarım oldu.

Eye For You (I4U) projem kapsamında Darknet framework’ünün Windows işletim sistemi ile kurulumuna karar vermiştim fakat Windows işletim sistemi darknet framework’ünü kurma aşamasında bir çok problem ile karşılaşıp kaynakları taramış olsam bile yeterli kaynak elde edemediğim için Windows işletim sistemi kullanmaktan vazgeçtim. Windows işletim sistemi yerine Linux işletim sistemi ile kurulum aşamalarına kolaylıkla devam ettim.

Benzer şekil de Darknet framework’ünün kurulumu aşamasında başta düşük seviyedeki donanımlarda da çalışmasını planlamıştım. Bunun için ise yapılan işlemler sırasında bilgisayarın ekran kartı gücü olan GPU yerine CPU kullanılması gerekiyordu. GPU ile anlık olarak gelen video yayınında ve daha önceden kaydedilmiş video dosyalarında yaptığım nesne tespit işlemlerinde yaklaşık 3 FPS gibi çok düşük FPS değerleri aldım. FPS değerini yükseltmek için tekrardan araştırma sürecine girdim. Tavsiyeler üzerine Thread ve Multi-Proccesing işlemlerini kullanarak FPS değerini yükseltmeye çalıştım. Thread ve Multi-Proccessing işlemlerim sonucunda elde ettiğim FPS değerlerinde herhangi bir değişiklik olmadı bu yüzden Thread ve Multi-Proccesing işlemlerini yapmaktan vazgeçtim.
Train aşamasında ise YoloV3 algoritması ile train işlemi yapmaya karar vermiştim. Bu sürece başladığımda bilgisayarımda train işlemi günlerce devam etti. Fazladan hem zaman kaybettim hem de avg değerleri çok uzun sürede bir düşüyordu. Sonuç olarak bilgisayarımın sistem kaynaklarının yetersiz kaldığını fark ettim. Çözüm olarak ise Google’ın imkanlarını sunduğu Google Colab platformu ile Google Colab’ın sağladığı GPU ile train işlemi yapmaya karar verdim.
Sorunsuz bir şekilde ilerleyen Colab ve YoloV3 ile train işlemi ile avg değeri 0.02 lere kadar düşüyor ama bir türlü sonlanmıyordu. Bu yüzden başka bir alternatifler düşünüp uygulamaya başladım. Yolov3 dışında başka bir kullanabileceğimiz algoritma olan Yolov3-tiny kullandım. Yolov3-tiny kullanmamın temel sebeplerinden biri model dosyası ile daha hızlı veriyi eğitebildiği ve daha hızlı nesne tespit işlemini gerçekleştirebilmesiydi. Yolov3-tiny ile model dosyasının üzerine kendimiz eğittiğimiz dosyaları da eklenerek tekrar bir train işlemi başlattım. Yapılan tüm değişikler sonucunda 44.000 (22 * 2000) iterasyon sonrasında train işlemi kendi otomatik olarak sonlandırdı. Tüm bu train işlemi sonrasında resimde ve webcam de Meyra nesnesi algılanıp “Person” demek yerine “Meyra” diyerek ekranda gösterildi.
Görüldüğü gibi oluşturulmuş olan modelin, mAP ve IoO oranları hesaplandığında yukarıda yer alan değerler karşımıza çıkıyor. mAP değerimiz 84.34 % olarak hesaplanıyor. Projem de IoU değeri ise 67.33% olarak karşımıza çıkıyor.
Son olarak projemdeki temel amacım hakkında bilgi vermek istiyorum. Projemin temel amacı kişi ve nesne tespit yapmak. İşleyişi ise; Öncelikle eğitilen modelde yer alan kişilerin tespit işlemi gerçekleştiriliyor eğer alınan görüntü karesinde herhangi bir kişi yok fakat insan yer alıyor ise bu kişiyi “Person” etiketi veriliyor sonrasında, eğitilen model ve yapay sinir ağları kullanılarak yapılan nesne ve kişi tespit yöntemine göre daha farklı bir tespit yöntemi olan “Template matching” işlemine tabi tutuluyor yani eğer bu kişinin daha önce sisteme görüntüsü bulunduysa, daha önceden verilen ID değeri ile tespit ediliyor, eğer daha önce bu kişi sistemde yer almadıysa yeni bir ID değeri veriliyor ve sisteme kaydediliyor. Kendi görsel verilerim ile model eğitimi gerçekleştirmeden önce örneğin Meyra kişisine “Person” etiketi veriyordu. Artık “Meyra” kişisi dışında başka insanların görüntü tespitine tabi tutulduğunda “Template matching” yöntemi devreye giriyor ve tespit işlemi başarıyla gerçekleştirilmiş oluyor.