Kendi Veri Setimizi Kullanarak Yeni Nesil Nesne Tanıtma Python

Yeni Nesil Nesne Tanıma (05) | Algoritmalar 2.1

Merhaba,

Öncelikle şunu daha ilk paragrafta belirtmeliyim ki; tanıma ve tespit işlemleri bir birlerine karıştırılmamalı. Örneğin bir insan yüzünü yazdığımız program tespit edebilir. Bunu diğer nesnelerden farklı yanlarını bulup yapabilir. Bu farklı bir yöntemdir. Ancak tanıma dediğimiz konu ise biraz bundan farklıdır. Tanıma işlemi için aynı nesneyi tekrar diğer nesnelerden farklılaştırması gerekmekte. Aralarında küçük ince bir çizgi var. Şimdi bundan sonra OpenCV kütüphanesine değinelim. Yazının daha sonrasında ise; nesne tespitini nasıl gerçekleştiriyor buna bakalım.

OpenCV

OpenCV (Open Source Computer Vision) açık kaynak kodlu görüntü işleme kütüphanesidir. İntel tarafından 1999-2000 li yıllarda geliştirilmeye başlanıp sonrasında ise Google, AMD, Nvidia gibi şirketlerin ve toplulukların desteğini alıp günümüze kadar gelişerek gelmiştir.İlk piyasaya sürüldüğünde OpenCV, C programlama dili ile yazılmıştı. Ancak sonradan kendi içinde bir çok algoritması C++ ile geliştirilmiştir. Açık kaynak kodlu ve BSD lisansı ile gelmesinden dolayı bu kütüphaneyi istediğiniz proje de ücretsiz kullanabilirsiniz. Elbette OpenCV bunlarla sınırlı kalmıyor. Platform bağımsızlığı sayesinde kodu hangi işletim sisteminde yazdığınız fark etmeksizin farklı sistemlerde çalıştırılabilir.

 

OpenCV içerisinde makine öğrenmesi ve görüntü işlemeye yönelik içerisinde 2500′ e yakın algoritma bulunmaktadır. Bu algoritmalar ile; nesne tespiti, insan hareketleri tespiti, yüz tanıma, plaka tanıma, nesne sınıflandırma,optik karakter tanımlama OCR (Optical Character Recognition) gibi işlemler yapılabilir.

OpenCV 2016 yılının ortalarına doğru İntel firması tarafından satın alınmıştır. Yine topluluklar tarafından geliştirilen wrapperler aracılığı ile diğer programlama dillerinde de (Python,java, ruby, C#) kullanılabilmektedir.

Nesne Tespit Algoritmaları

  • HAAR Cascade

Video veya resimlerdeki nesneleri tespit etmek için görüntü işleme için çok kullanışlı bir sınıflandırıcıdır. Paul Viola ve Micheal Jones tarafından geliştirilen bir algoritmadır. Aynı zamanda Viola and Jones object detection framework (Viola ve Jones nesne bulma yapısı) olarak da bilinir. O halde şimdi bu algoritmayı biraz daha inceleyelim.

Bu algoritma yaklaşımında, bulunması istenilen nesneler öncelikle bilgisayara tanıtılır. Örneğin bir insan yüzü. Bu yüzün renkleri gri tonuna çekilir. Daha sonra resim frame olarak bölünür. Frame’ ler taranarak nesne bulunmaya çalışılır.

Yukarıdaki şekilleri biz referanslar olarak düşünelim. Bu şekillerin siyah bölgeleri karanlık yüzeyimizi temsil ederken beyazlar aydınlık bölgeyi temsil etsin.

Örneğin 2. bölümde ki (b) modelini aldık. bu modeli insanın yüzüne yerleştirdik. Öncelikle insanın yüzündeki karanlık ve aydınlık noktaları tespit etmemiz gerekiyor. Örneğin yukarıdaki burun yanaklara göre daha aydınlıktır. Çünkü dik açıdan bakıldığında burnun gölgesi hemen yanaklara değer. Dolayısı ile yanaklarda bir karanlık oluşturur. İşte bu referans modeli biz bu burun ve yanağa uygulayabiliriz.

Yine yukarıdaki gibi göz bölgesi daha karanlıkken gözün altında kalan bölge daha aydınlıktır. Bu sayede bu sınıflandırıcıyı belirli piksellerde gezdirip bu şekilde taramalar yapıyoruz. Örneğin ağız bölgesinde bir çok karanlık – aydınlık bölge olacaktır. Birkaç  modeli birleştirip bu model bu resimde var mı ? diye soruyoruz eğer varsa insan yüzü olduğunu tespit edebiliyor. Tespit işlemi bu algoritma ile bu şekilde yapılabiliyor. Tabi aslında ne kadar zayıf olduğunu farketmişsinizdir.

Bu işlemlerin eğitimini bilgisayar yaparken oldukça fazla yorulacaktır. Özellikle gerçek zamanlı tarama işlemlerinde çok fazla yorulacaktır. Öncelikle resimleri eş zamanlı gri tonlarına çevirecek sonra ise görüntünün integrali alınır. Böylece framelerde bulunan pikselleri tek tek toplama zahmetinden kurtulmuş olur. Ardından bu seçtiğimiz modellerin görüntü de görülüp görülmediğini tek tek pikselleri yana kaydıra kaydıra kontrol eder. Bu işlemlerde hız çok önemlidir. Ancak hıza önem verdikçe bazı yüzleri kaçırabilir. Nitekim öyle de olur.

 

Eğitim yapıldıktan sonra alınan değerler xml uzantılı olarak kaydedilir. OpenCV kütüphanesi kullanılarak istenilen proje de kullanılabilir. İşte aşağıda eğitilmiş haarcascade sınıflandırıcılarının listesi:

burada.

 

 


Bu makaleyi 3 dakikada okuyabilirsiniz.