2016-09-16 4 views
1

Я работаю над проектом, связанным с распознаванием эмоций (грустный, счастливый, гнев и т. Д.) С лица. Я использую датчик наземного ориентирования из библиотеки dlib, который обнаруживает 68 процентных пунктов. Для той же эмоции эти точки интереса могут варьироваться в зависимости от ориентации лица, размера глаз, губ и т. Д. На разных лицах.Нормализация лицевых ориентиров в обработке изображений

Я хотел бы нормализовать эти точки интереса, которые делают их инвариантными относительно ориентации лица, размера глаз, губ и т. Д. Какими методами я могу это использовать. Затем я хотел бы обучить данные SVM.

ответ

1

Dlib уже имеет нормализационный код, который используется в http://dlib.net/face_landmark_detection_ex.cpp.html выбор по телефону http://dlib.net/imaging.html#extract_image_chips функция.

Вам нужно будет использовать часть своего кода, чтобы получить нормированные ориентиры - они все равно будут иметь достаточно информации, чтобы обнаружить эмоции, но лицо будет вращать и масштабировать:

... 
// 1. detect faces 
std::vector<rectangle> dets = detector(image); 
for (rectangle d : dets) 
{ 
    // 2. get landmarks 
    full_object_detection shape = sp(image, d); 
    // 3. chip details (normalization params) for normalized image with normalized size of 100 pixels 
    chip_details chip = get_face_chip_details(shape, 100); 
    // 4. get normalized landmarks 
    full_object_detection normalized = map_det_to_chip(shape, chip); 
    // now you can used normalized shape in your classifier 
} 

После того, как вы получили нормированную форму - его на вас, как обучать классификатор. Может быть, этого будет достаточно, чтобы использовать ориентиры «как есть», может быть, вам нужно будет получить самые важные точки и рассчитать расстояния между ними и поезд на дистанции данных.

+0

У вас есть оболочка python этого кода? – vinnitu