2016-10-10 2 views
1

left landmark markings. right detection resultsнеподходящего результат обучения dlib

я пытаюсь обучить train_shape_predictor_ex для обнаружения изображения в индийском счете. Я использую 34 разных изображения, которые были нажаты и отсканированы. модель обучается успешно с

taining error = 0 
testing error = 0.35468-6 

я попытался изменить параметр передискретизации от 300 до 12000 , но все еще те же результаты. что я делаю неправильно?

рисунок кода - от загрузки изображений на этапе рисования:

image_window win; 

    frontal_face_detector detector = get_frontal_face_detector(); 
    shape_predictor pose_model; 
    deserialize("sp.dat") >> pose_model; 

    while (!win.is_closed()) 
    { 
     cv::Mat temp; 
     cap >> temp; 


     cv_image<bgr_pixel> cimg(temp); 

     std::vector<rectangle> faces = detector(cimg); 

     std::vector<full_object_detection> shapes; 
     for (unsigned long i = 0; i < faces.size(); ++i) 
     { 
      full_object_detection shape = pose_model(cimg, faces[i]); 
      std::vector<rectangle> dets = detector(cimg); 

      shapes.push_back(pose_model(cimg, faces[i])); 

      win.clear_overlay(); 
      win.set_image(cimg); 
      win.add_overlay(dets, rgb_pixel(255, 0, 0)); 
      win.add_overlay(render_face_detections(shapes)); 
     } 
    } 
+0

, пожалуйста, улучшите свой вопрос, чтобы ответить на следующие вопросы: правильный образ образца один из набора учебных материалов? каждый образец изображения из набора учебных данных дает неверный результат? где граничная рамка справа на выборке? сколько ориентиров? каждая точка имеет одинаковое значение для каждого образца? где ухо на правильном образце? каковы параметры обучения shape_predictor? – Evgeniy

+0

Всего 14 баллов. Все изображения с набором тренировок дают такую ​​же ошибку при обнаружении. Очки отмечены правильно, я перекрестно проверил несколько раз и даже 0 ошибок обучения, возможно, означает, что точки верны.Ограничительная рамка не отображается на самом деле в некоторых точках позиции пикселя, когда я обнаруживаю через face_landmark_detection, не хватает картинки, то есть больше пикселей, тогда на самом деле есть изображение. –

+0

Ухо просто не видно на загруженном изображении. Но изображение заполняет полный отсканированный счет. Просто, чтобы оба изображения были большими, чтобы вписаться в то же время на screem, поэтому я просто отрезал его таким образом. –

ответ

1

Как теперь я вижу - вы пытаетесь обучить пользовательские shape_predictor, которые будут иметь только 14 очков при использовании render_face_detections функции Dlib, что требует форму лица Dlib, что имеет 68 баллов. render_face_detections не нарисует вашу форму правильно и должен исключить исключение.

Чтобы сделать работу прогнозирования формы, пожалуйста, убедитесь, что вы следить за этим условиям:

  1. Значение каждой точки должно быть одинаковым на каждом изображении. Не помещайте точку # 0 на ухо на первое изображение и # 0 на кончике носа на втором изображении.
  2. Запрещается рисовать объектную ограничительную рамку, если у вас есть небольшой набор данных. Если вы используете детектор лица для проверки предиктора формы, убедитесь, что ваши тренировочные/испытательные изображения ограничивают поля, определяя лицо с одним и тем же детектором лица. Да, вы можете рисовать любые ограничивающие прямоугольники, но, пожалуйста, убедитесь, что они имеют одинаковый размер и положение, как если бы они были обнаружены. Способ, которым вы помещаете коробку в набор для обучения, должен быть идентичным, как вы его получите в будущем.
  3. Нет необходимости устанавливать все точки в ограничивающей рамке лица. На самом деле он может иметь любой размер и положение, даже статическая коробка 10x10 для каждого лица на кончике носа (или полный прямоугольник) будет работать, но у вас должно быть достаточно учебных образцов. И следуйте за предыдущим условием
  4. Используйте как можно больше изображений. 34 изображений недостаточно для обучения предсказателя формы - если они просто запомнят их во внутренней памяти и не будут работать в будущем. Предиктор формы Dlib обучается около 2-3 тыс. Изображений.
  5. Вы можете создавать новые изображения, искажая оригинальные - масштаб, изменить размер, добавить шум ...
  6. Не следует использовать тестирование Dlib в и функции рисования если ваша форма предсказатель не имеет 68 точек с тем же значением как предиктор формы лица dlib. Вы можете использовать его исходный код и выполнять свои функции по мере необходимости.
+0

За исключением второго и шестого пунктов, я сделал все это. Я тоже получил sixt и попробую. –

+0

Но я не смог понять второй. Я понял, что вы хотите иметь коробку с одинаковой площадью пикселей, но с той же позицией! Я не могу это понять. Не могли бы вы рассказать о том, что –

+0

И как получилось, что коробка может иметь одинаковый размер, если изменить размер одного и того же изображения. Что я собираю из этого, так это то, что вам просто нужно иметь одну и ту же область пикселей на всех изображениях с центром в одном и том же ориентире. Не имеет значения, ограничивает ли поле другие ориентиры или нет. –

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