2016-04-19 17 views
1

Я пытаюсь подготовить предсказатель формы Dlib, выполнив train_dlib_shape_predictor_ex.cpp по адресу helen dataset, как описано в коде, я помещаю тестовые изображения в папку лица в текущем каталоге предиктора формы. Но когда я запускаю код он бросает следующее исключение:DLib: train_shape_predictor_ex.cpp

C:\train_shape_predictor_ex\Release>train_shape_predictor_ex test 

exception thrown! 
ERROR: unable to open test/training_with_face_landmarks.xml for reading. 

как не training_with_face_landmarks.xml и testing_with_face_landmarks.xml файлов доступен в HELEN набора данных на следующей странице: link

Там будет папка с именем аннотации, который содержит один текстовый файл содержащий 194 ориентированных точек для каждого изображения в наборе данных. Как преобразовать этот файл в training_with_face_landmarks.xml.

+0

Я думаю, вы должны сами их обозначить. DLib имеет полезный инструмент для этого: https://github.com/davisking/dlib/tree/master/tools/imglab – Moreira

+0

@ Аннотации к папке Moreira содержат отдельный файл для каждого изображения. поэтому как мне сделать один «training_with_face_landmarks.xml» – Mavie

+0

У вас есть два варианта: вы игнорируете папку аннотаций и используете инструмент DLib для ручной маркировки ваших изображений (прочитайте README.txt на сайте в моих предыдущих комментариях), или вы необходимо сопоставить координаты в аннотации с координатами, необходимыми для 'training_with_face_landmarks.xml'. Однако для этого файла нужны дополнительные данные, такие как ограничивающие поля, которые я не думаю, что вы можете получить из файла аннотаций. – Moreira

ответ

1

Открыть файл 'training_with_face_landmarks.xml' и просмотреть его структуру.

Теперь спросите себя:

  1. Какие изменения между файлами? (подсказка: данные о точках)
  2. Что остается неизменным? (Подсказка: общий «котел плита» верх и хвост)

Открывают данные HELEN - спросить то же самое еще раз ...

Ваша задача теперь, чтобы разобрать данные от HELEN установить в временный data-structure/variable, а затем записать его в файл со всеми необходимыми вершинами и хвостами. Это будет kludge и, вероятно, раздражает писать с петлями внутри петель внутри петель и т. Д., Но вы доберетесь туда.

'C++ i/o streams' в качестве строки поиска поможет вам начать работу.

+0

Я не получаю никакого * training_with_face_landmarks.xml * файла в ** наборе данных helen **. – Mavie

+0

Если я даю ограничительную рамку для каждого объекта в каждом изображении, может отличаться окно обнаружения для изображений – Mavie

+0

@VIctor, я имею в виду открыть образец .xml, который у вас уже есть. То, что я говорю, это то, что вам нужно перепроектировать это. Это то, что я сделал, по крайней мере. –

7

Создано учебное_with_face_landmarks.xml для учебных образов helen (часть 1, 2, 3, & 4) из всего 2000 изображений.

Ссылка для скачивания: https://www.dropbox.com/s/jk98moqm8vopp5b/training_with_face_landmarks_2000.zip?dl=0

Шагов:

  1. Скачать Поезд изображение - часть 1, Поезд изображение - часть 2, Поезд изображение - часть 3 & Поезд изображения - часть 4 из http://www.ifp.illinois.edu/~vuongle2/helen/. (каждая часть имеет 500 изображений, поэтому всего 2000 изображений)
  2. Поместите все изображения & training_with_face_landmarks.xml в общую папку (например: имя папки «поезд»).
  3. В train_shape_predictor_ex.cpp проекта, закомментируйте эти разделы/линии

    а. Ссылка на test_with_face_landmarks.xml и его использование b. тренер set_oversampling_amount (100) c. тренер set_nu (0.05) d. тренер set_tree_depth (3)

  4. Набор аргументов командной строки, как ./train
  5. Выполнить проект
  6. Он будет генерировать sp.dat размером прибл 178 МБ (ушло 2 часа примерно в моем ноутбуке)
  7. Использование этот файл sp.dat в проекте face_landmark_detection_ex Командная строка Ex: sp.dat Example_image.jpg
  8. В face_landmark_detection_ex.cpp, a. В петле 194, вызовите функцию draw_solid_circle b. используя функцию save_png, сохраните вывод ориентира в виде файла.

Наслаждайтесь :)

С уважением гопи. J

+1

Обновлен с помощью test_with_face_landmarks.xml, а также файл с датой 194 пунктов. ссылка: https://www.dropbox.com/sh/t5h024w0xkedq0j/AABS3GprqIvb_PwqeHOn2dxNa?dl=0 –

+1

шаг 9: Код для печати знаковых чисел вместо круга: { \t Mat buff_img; \t buff_img = toMat (img); \t int k; \t для (к = 0; к <194; ++, к) \t { \t \t putText (buff_img, станд :: to_string (к), cvPoint (shape.part (к) .x(), форме. часть (k) .y()), \t \t \t FONT_HERSHEY_COMPLEX_SMALL, 0,5, cvScalar (255, 255, 0), 1, CV_AA); \t} \t save_png (img, "outImage.png"); } –

+0

возможно лучший ответ когда-либо! – eyaler