2015-02-15 4 views
0

У меня есть более 2000 изображений в оттенках серого с размерами 96x96 пикселей в numpy. У меня есть координаты (x, y), такие как left_eye_center, right_eye_center, nose_center, mouth_left, mouth_right и т. Д.Как определить углы лица?

Многие из лиц в наборе данных наклонены либо влево, либо вправо или вверх или вниз. Поэтому я хотел бы узнать углы ориентации лица к камере.

Есть ли библиотека, позволяющая обнаружить это? Я заглянул в opencv, но, похоже, только для обнаружения лица, а не для ориентации.

ответ

0

Я бы разделил данные тренировки на 3 метки (слева, в центре, справа), а затем использовал его с вашим алгоритмом обучения в машине, чтобы изучить 3 класса. Если вы используете opencv, вы можете, например, используйте HaarCascadeClassifiers (у меня когда-то был проект, в котором я использовал его для классификации ориентации). Но на самом деле все работает. Вам нужно только расширить его от бинарной классификации (распознавание лиц) до классификации многоклассов (ориентация лица).

+0

Результаты моих сетевых моделей намного хуже для ориентированных граней по оси x и y. Вот почему я хочу обнаружить углы и применить тета к результатам – pbu

+0

Ну. Вы можете это сделать (это, очевидно, будет работать). Или вы можете изменить сеть, чтобы рассмотреть несколько классов. Если ваша цель * конечная * определяет лица, то ваша новая сеть даст вам лучшие результаты «да/нет», даже если вы дадите больше информации «да, а лицо смотрит влево». Это зависит от того, что вы хотите сделать. – runDOSrun

1

Cmon, это просто математика:

double eyeXdis = eye_r.x - eye_l.x; 
    double eyeYdis = eye_r.y - eye_l.y; 
    double angle = atan(eyeYdis/eyeXdis); 
    double degree = angle*180/CV_PI; 

[править:]

, кажется, что вы ищете на самом деле "голова ставят оценку" (или "постулировать")

вам понадобится (примитивная) 3D-модель головы, получите соответствующие 3D-точки для ваших ориентиров один раз, а затем для каждого изображения найдите 2d ориентиры на изображении и получите вектор вращения/перевода от solvPnP() с этим.

+1

Отлично подходит для ориентации x. как насчет оси y (лица смотрят вверх и вниз)? – pbu

+1

Хе-хе, здесь не накрывается;) (вы спросили о наклоне влево или вправо) – berak

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