4

Python kullanarak bir yüz tanıma algoritması uygulamaya çalışıyorum. Kısa mesafelerin aynı kişiye ait görüntülere karşılık gelmesi gerektiğinde, görüntülerin bir dizinini alabilmek ve bunlar arasındaki çift-uzaklık mesafelerini hesaplayabilmek istiyorum. Nihai amaç, görüntüleri kümelendirmek ve bazı temel yüz tanımlama görevlerini (denetimsiz öğrenme) gerçekleştirmektir. Çünkü denetimsiz ayarYerel Tanımlayıcılarla Yüz Tanıma Uygulaması (Denetlenmeyen Öğrenme)

probleme olan bir yaklaşım iki yüzü ait olan bir ölçüm (bazı int d R^d bir vektör), bir "yüz imza" hesaplar ve daha sonra anlamaya etmektir aynı kişi gerçekten aralarında kısa bir mesafe olacak.

Yüzü algılayan, görüntüyü kırpıp bazı temel ön işlemleri gerçekleştiren bir yüz algılama algoritmam var, bu nedenle algoritmaya beslediğim görüntüler gri ve eşitleniyor (aşağıya bakın). "Yüz imza" bölümü için

, ben birkaç yayında okumuştum iki yaklaşımı denedim:

  1. bütün şeklinde LBP (Yerel İkili Desen) ait histogram alarak (işlenmiş) Görüntüyü harici bir uygulama kullanarak tanımladığım 7 yüz nokta noktasında (ağız, ağzı sol, vb.), SIFT hesaplamaları. İmza, tanımlayıcıların karekökünün birleşimidir (bu, çok daha yüksek bir boyutta sonuçlanır, ancak şu an için performans bir sorun değildir).
  2. , birkaç farklı mesafe ölçümleri (Ki Kare, Öklid, vs) deneyerek, OpenCV en compareHist fonksiyonunu ( here bakınız) kullanıyorum iki imzanın karşılaştırılması için

    enter image description here

.

Yüz tanıma işleminin zor bir görev olduğunu biliyorum, herhangi bir eğitim almadan izin vermeden, mükemmel sonuçlar beklemiyorum. Ama şimdiye kadar ulaştığım her şey tamamen rastgele görünüyor. Örneğin, resmin en sağındaki görüntünün mesafesini görüntünün geri kalanına göre hesaplarken, 4 Bill Clintons'a (...!) En çok benziyorum.

processed image with chosen facial landmarks

ben önemli ölçüde sonuçlarını iyileştirmek gereken bir test kümesi üzerinde bir "metrik öğrenme" prosedürünü yürütmek için popüler this büyük bir sunumda okudum. Ancak sunumda ve diğer yerlerde "düzenli" mesafe ölçümlerinin de OK sonuçları alması gerektiği söylenir, bu yüzden bunu denemeden önce neden yaptığım şeyin bana hiçbir şey kazandırmadığını anlamak istiyorum.

ben yardımcı her türlü almak isteriz Sonuç sorularıma, içinde

: Ben gerçi sadece gerçek yüzünü bel ağrısı gerçekleştirmek olacaktır

  1. Bir iyileştirme değil, köşeleri ve imzaya gürültü ekleyebilecek her şey. LBP'yi hesaplamadan önce yüz olmayan kısımları nasıl gizleyebilirim? Bu bölüm için de OpenCV kullanıyorum.

  2. Bilgisayar görüşüne oldukça yeniyim; İşlerin yanlış gittiğini anlamak için algoritmamı "hata ayıklama" ya nasıl giderim? Mümkün mü? Denetlenmeyen ortamda, kümelenme yüzleri görevi için çalışabilecek başka bir yaklaşım (yerel tanımlayıcılar + hesaplama mesafeleri değil) var mıdır?

  3. OpenCV modülünde başka bir şey var mıdır, belki bunun yararlı olabileceğini düşünmedim? Buradaki tüm algoritmalar eğitim gerektiriyor ve benim durumumda kullanışlı değil gibi görünüyor - algoritmanın tamamen yeni olan görüntüler üzerinde çalışması gerekiyor.

Şimdiden teşekkürler.

cevap

3

Aradığın şey denetlenmeyen özellik çıkarımıdır - etiketsiz birkaç resim çekin ve bu görüntüleri tanımlayan en önemli özellikleri bulun.

Denetimsiz özellik çıkarma için en gelişmiş yöntemlerin tümü (konvolüsyonel) sinir ağlarına dayanır. Otomatik kodlayıcılara (http://ufldl.stanford.edu/wiki/index.php/Autoencoders_and_Sparsity) veya Kısıtlı Bolzmann Makinelerine (RBM'ler) bakın.

Ayrıca katmanlar bulunur ve arada grup benzer yüzleri, bu arasındaki mesafeyi kullanmak tek almakta, bu DeepFace (https://www.cs.toronto.edu/~ranzato/publications/taigman_cvpr14.pdf) olarak varolan bir yüz detektörü sürebilir.

Korkarım ki OpenCV bu görev için uygun değil, Caffe, Theano, TensorFlow veya Keras'ı kontrol etmek isteyebilirsiniz.

+0

Cevabınız için teşekkür ederiz. Aslında kullanabileceğim bir Caffe çerçevem ​​var. Önceden işlenmiş yüzlerden oluşan büyük bir eğitim seti geliştirmenizi ve her bir görüntünün daha iyi gösterimini elde etmek için CNN'den çalıştırmayı ve ardından görüntüler arasındaki mesafeleri hesaplamayı mı önerirsiniz? Yeterince iyi bir temsil ile basit bir Öklid mesafesinin yeterince iyi olduğunu düşünüyor musunuz? – galoosh33

+0

Evet, tam olarak aklımda olan şey buydu. Eğer CNN'nin özellikleri iyi ise, basit bir öklid mesafesi yeterli olacaktır. –