Gerçek-zamanlı Yüz Nirengi Noktası Takibi
eNTERFACE'10'da "Vision-based Hand Puppet" isimli bir proje yürütüyoruz. Projedeki amaç kameradan el ve yüz jestlerini algılayıp sanal bir kuklayı oynatmak. Kısmen sanal gerçeklik de denebilir. Ben yüz ifadelerini algılama kısmıyla ilgileniyorum. Daha önceden yüz jestlerini algılama konusunda çalışmıştım. İlgili çalışmadaki jestler daha çok işaret dilleri özelindeydi, "hayır" anlamında kafayı sağa sola sallamak gibi global kafa hareketlerini de içeriyordu. Şimdi ise yüz ifadesi (gülme, üzülme, şaşkınlık, korku, iğrenme, kızma) tanıma hedefindeyiz. Global kafa hareketlerinin olmadığı (ya da dönmenin olmadığı) bir kurulum üstünde çalışıyoruz. İlk aşama olarak belli noktaları gerçek-zamanlı olarak takip edebilmek geliyor. Takip edilen noktalara dayanarak öznitelikler çıkarıp ifade tanımak da ikinci aşama olacak. İlk aşamaya ait örnek bir görüntü kaydettim. Web kamerasından 640x480'lik çözünürlükte bir çerçeveyi 80 ms gibi bir sürede işleyebiliyor.
5 yorum
Elinize sağlık, kod zaten beklemiyoruzda biraz daha detaylı açıklama olsa daha iyi olurdu. AAM tarzını andırıyor sanki
Çalışmalarınızda başarılar. Noktaları takip etmek için hangi algoritmayı kullanıyorsunuz?
@bluekid: Aslında anlatacaktım, ama ses gelmeden anlatmamaya karar verdim :) Merak edenler zaten sorar diye erteledim diyelim. Biraz da yoğunluk... Yüzün global hareketi olmadığı için AAM yerine ASM yeter diye düşünerek onu kullandım. AAM optimizasyonu konusunda pek bilgili değilim, o yüzden de kullanmak istemedim pek.
@AlperYaman: Noktaları takip etmek için üstte de bahsettiğim gibi "Active Shape Models" kullanıyorum. Tezdeyken MATLAB ile kodlamıştım. Gerçek zamanlı olması için c'ye geçirmek gerekiyordu. Halihazırda opencv üstüne çalışan c kütüphaneleri var:
1- Stasm: http://www.milbo.users.sonic.net/stasm/
2- asmlibrary: http://code.google.com/p/asmlibrary/
Ben 2 numarayı kendime göre eğitip ve kodu değiştirip öyle kullanıyorum. 2 numarayı kullanmak serbest ama kodları vermiyor, dll ve header veriyor. Bu biraz sıkıntılı. Aslında 1 numaranın üstüne geliştirmiş ama sonra kodu kapamış.
ASM ile ilgili teorik bilgi için tez sunumuma bakabilirsiniz: http://vimeo.com/1638601
Daha ayrıntılı teori ve araçkutuları için tezdeki veya 1 numarada Milborrow'un verdiği kaynaklara bakabilirsiniz.
"asmlibrary" görmüş indirmiştim, fakat denemek kısmet olmamıştı. fakat ilginç olan şey kaynak kodunun kapalı olması Stasm'ın lisansıda GPL olarak görünüyor. asmlibrary'nin Stasmdan çıkması fakad kodunun konmaması Lisansa uymuyor gibi...
bu arada AAM içinde kütüphaneler var
http://code.google.com/p/aam-opencv/
http://code.google.com/p/aam-library/
hatırlatayım dedim
hoş elinizdeki kütüphane sizin işinizi görmüş.
Tanıma işlemi için ne kullanırsınız bilmem ama datalarınızı yayınlarsanız ben YSA ile deneme yapmak isterim şahsen
asmlibrary'nin Stasm'dan geliştiğini Milborrow kendi sayfasında yazmış, dolayısıyla haberi var. Onu ilgilendirdiği için bir şey demedim.
AAM kodlarına baktım. Wei'nin yazdığı iyi de diğerinin demoları pek de iyi durmuyor. AAM ile ilgili Stegmann'ın kütüphanesini kullanmıştım, iyi sonuçlar almıştım. http://www2.imm.dtu.dk/~aam/
Proje sonunda tahminime göre kod ve veriler eNTERFACE'10 sayfasında açık olacak. Ama yayın yapmadan tüm veriyi paylaşmam mümkün olmayabilir. Öte yandan şu anda hazır veri var, doğrudan ifade tanıma ile ilgili olmasa da jest tanıma ile ilgili. Şu adresteki veritabanının işaretlenen kısmında deneme yapabilirsiniz. Açıklamalar ve verinin nasıl tutulduğu o sayfada anlatılıyor. Videolar burda, işaretlenmiş veri de burda. Videoların kodlaması "indeo 5" değil, xvid. Linuxta da çalışsın diye öyle yapmıştım. Umarım faydalı olur.