2013-09-05 2 views
7

В настоящее время я работаю над проектом, где мне нужно извлечь выражение лица пользователя (только одного пользователя за раз с веб-камеры), как грустное или счастливое.классификация выражения лица в реальном времени с использованием SVM

Мой метод для классификации выражений лица является:

  • Использование OpenCV для обнаружения лица на изображении
  • Используйте ASM и stasm получить Лицевой характерная точка

facial landmarks

и теперь я пытаюсь сделать классификацию лиц с выражением лица

SVM хороший вариант? и если это так, то я могу начать с SVM:

как я собираюсь тренировать svm для каждой эмоции, используя эти ориентиры?

+1

Deep нейронной сети всегда лучше, чем SVM. – usamec

+0

из-за времени я должен работать с SVM, любая помощь !! – TIBOU

+4

@usamec, ваше утверждение не всегда верно. Зависит от определения «лучше» для начала. – Bull

ответ

7

Да, было показано, что SVMs показали, что они хорошо выполняют эту задачу. Там были десятки (если не hundreads) бумаг, описывающих такие процедуры.

Например:

Некоторые основные источники SVMs сами могут быть получены на http://www.support-vector-machines.org/ (например, книги названия, программное обеспечение ссылки и т. д.)

И если вы просто заинтересованы в их использовании, а затем понимание вы можете получить один из основных библиотек:

+0

Я хочу тренировать svm, чтобы классифицировать выражение лица (счастливое, сердитое, отвращение, ...), используя позицию landmarkss, как я могу это сделать? – TIBOU

+1

http://stackoverflow.com/questions/18647405/train-svm-to-do-facial-expression-classification – TIBOU

+0

если вы не возражаете, я спрашиваю: «Я буду звучать как нуб здесь», зачем использовать SVM над логистикой регрессия? Разве это не одна и та же концепция? – Nour

3

, если вы уже используете OpenCV, Я предлагаю вам использовать встроенную реализацию svm, обучение/сохранение/загрузка в python. C++ имеет соответствующий api, чтобы сделать то же самое примерно в том же количестве кода. он также имеет «train_auto», чтобы найти лучшие параметры

import numpy as np 
import cv2 

samples = np.array(np.random.random((4,5)), dtype = np.float32) 
labels = np.array(np.random.randint(0,2,4), dtype = np.float32) 

svm = cv2.SVM() 
svmparams = dict(kernel_type = cv2.SVM_LINEAR, 
         svm_type = cv2.SVM_C_SVC, 
         C = 1) 

svm.train(samples, labels, params = svmparams) 

testresult = np.float32([svm.predict(s) for s in samples]) 

print samples 
print labels 
print testresult 

svm.save('model.xml') 
loaded=svm.load('model.xml') 

и выходные

#print samples 
[[ 0.24686454 0.07454421 0.90043277 0.37529686 0.34437731] 
[ 0.41088378 0.79261768 0.46119651 0.50203663 0.64999193] 
[ 0.11879266 0.6869216 0.4808321 0.6477254 0.16334397] 
[ 0.02145131 0.51843268 0.74307418 0.90667248 0.07163303]] 
#print labels 
[ 0. 1. 1. 0.] 
#print testresult 
[ 0. 1. 1. 0.]  

так вы обеспечиваете п сплющенные модели формы в качестве образцов и п меток, и вы хорошо идти. вам, вероятно, даже не нужна часть asm, просто примените некоторые фильтры, чувствительные к ориентации, такие как sobel или gabor, и соедините матрицы и сгладьте их, а затем передайте их непосредственно в svm. вы, вероятно, можете получить точность 70-90%.

как кто-то сказал cnn - альтернатива svms.here есть некоторые ссылки, которые реализуют lenet5. до сих пор я нахожу svms намного проще, чтобы начать.

https://github.com/lisa-lab/DeepLearningTutorials/

http://www.codeproject.com/Articles/16650/Neural-Network-for-Recognition-of-Handwritten-Digi

-edit-

достопримечательности просто п (х, у) векторов не так ли? так почему бы вам не попробовать поместить их в массив размером 2n и просто передать их прямо в код выше?

, например, 3 учебные образцы 4 земельных марок (0,0),(10,10),(50,50),(70,70)

samples = [[0,0,10,10,50,50,70,70], 
[0,0,10,10,50,50,70,70], 
[0,0,10,10,50,50,70,70]] 

labels=[0.,1.,2.] 

0 = счастливый

1 = сердится

2 = брезгливость

+0

Я хочу тренировать svm, чтобы классифицировать выражение лица (счастливое, сердитое, отвращение, ...), используя позицию landmarkss, как я могу это сделать? – TIBOU

+0

http://stackoverflow.com/questions/18647405/train-svm-to-do-facial-expression-classification – TIBOU

+0

в обучении у меня есть много изображений для каждой эмоции, как я могу тренировать svm тогда !! для каждой эмоции, извините, я не получу ее – TIBOU

0

Вы можете проверить this код, чтобы получить как это можно сделать с помощью SVM.

Вы можете найти алгоритм объяснил here

Смежные вопросы