Jump to content
Compvision.ru
boriso

С чего проще начать DL на лицах?

Recommended Posts

Здравствуйте!

Загорелся идеей DL. Скачал word2vec и готовые вектора - масса впечатлений. С подготовленным набором можно экспериментировать сразу же, да и со скриптами для обучения проблем нет - компилируются и запускаются.

Теперь хочу попробовать с изображениями. Представляется следующий подход:

  1. Беру большое количество изображений.
  2. Выделяю на них лица.
  3. Запускаю DL на лицах сеть для получения матрицы W с выходом на вектор длины 300-500-1000.
  4. Беру некоторую выборку изображений и сопоставляю им в качестве результата вектор длины 2-5-10. Например, будет возраст, наличие улыбки и подмигивание правым глазом.
  5. Теперь запускаю новую сеть на обучение и получаю матрицу F, преобразующую 300-500-1000 вектора в 2-5-10.
  6. Проверяю на новых изображениях, применяя последовательно W и F.

Сейчас предполагаю, что можно получить хорошую матрицу W, на основе которой будет достигаться хорошее обучение и F. Более того, матрица W вообще не зависит от целевого вектора. Например, если завтра решу добавить ещё признак открытого рта, то будет достаточно найти матрицу F' с одним выходом и 300-500-1000 входами. Думаю, что матрицу F будет проще получить, чем сразу произведение W и F. Насколько подобный подход правильный?

На чём проще всего начать обучение (аналог word2vec)? Может быть есть готовые решения / вектора (матрицы) для лиц?

Спасибо!

 

Share this post


Link to post
Share on other sites

На чистом theano может и не стоит, т.к. есть Lasagne и Blocks которые на базе theano.

А так выбрать лучше то, что легче собирается и настраивается, а так же у чего есть документация и туторы от которых можно плясать.

 

Предлагаю использовать Caffe, т.к. на этом форуме к нему сошлись вроде как.

Под ubuntu 14.04 собирается с поддержкой python без проблем.

 

  • Like 1

Share this post


Link to post
Share on other sites

Добрый день!

Спасибо за советы. Начал разбираться с caffe, установил, запустил первую пару примеров.

Работу с лицами удалось проверить на Age and Gender Classification Using CNN. Сейчас буду конвертировать код VGG-Face CNN descriptor с Matlab на Python.

Общий подход к созданию моделей понятен, на следующей неделе пойду GTX970 покупать (осталось только производителя выбрать).

Сейчас хочу вернуться к исходному вопросу использования уже готовых матриц.

Если посмотреть на prototxt-файлы из Age&Gender, то они отличаются лишь значением num_output в предпоследнем слое (2 и 8). При этом один из предыдущих слоёв возвращал 512. В VGG-Face аналогичная ситуация, только результат 2622 (количество определяемых имён), а на одном из предыдущих слоёв - 4096 выходов.

Предполагаю, что коэффициенты в моделях уже так выстроились, что "определяют" различные характеристики лица. Это было сделано довольно хорошо благодаря большому исходному объёму данных. В ходе обучения была задача вполне определённой классификации, поэтому и появилось соответствующее количество выходов.

У меня есть задача, например, определения улыбки на лицах. Вместо обучения с нуля хочу доучить готовую модель. Подготовить две папки с фотографиями (smile и nosmile), после чего воспользоваться подобранными коэффициентами и слоями (caffemodel + prototxt), но переучить самый последний слой, чтобы скорректировать переход из 512 или 4096 в 2.

Можно ли так сделать?

Есть ли готовые подобные примеры? Подскажите, пожалуйста, куда копать.

  • Like 1

Share this post


Link to post
Share on other sites

Это называется fine tuning

http://caffe.berkeleyvision.org/gathered/examples/finetune_flickr_style.html

Но проще всего взять выход 4096 как фичи и использовать его как вход для любого классификатора для регрессии или классификации.

https://github.com/coreylynch/vgg-19-feature-extractor

попытаюсь в ближайшее время сделать такой пример, хочу попробовать на для cifar или для классификации текстур.

Edited by mrgloom
  • Like 1

Share this post


Link to post
Share on other sites
On 04.12.2015, 11:02:18, mrgloom said:

Пока нет GPU попробовал на небольшом количестве фоток. Что-то не очень оказались результаты, сопоставимы с исходными. Но подход с тренировкой существующей модели в caffe оказался простым.

Решил натренировать VGG-Face на лицах для определения пола и сравнить с Age&Gender моделью. Выкачал 6к разных портретных фоток, запустил crop и resize на основе определения лица - материал для обучения и теста почти готов. Только надо провести классификацию этих 6к изображений.

Может быть подскажите удобный инструмент, чтобы классифицировать фотографии? (Вариант с drag&drop по папкам, либо ctrl+c/v мне не понравился. Идеал - мышью отщёлкал некоторое количество изображений, потом нажал на класс - они пропали, продолжил.)

Share this post


Link to post
Share on other sites
9 hours ago, boriso said:

Пока нет GPU попробовал на небольшом количестве фоток. Что-то не очень оказались результаты, сопоставимы с исходными. Но подход с тренировкой существующей модели в caffe оказался простым.

Решил натренировать VGG-Face на лицах для определения пола и сравнить с Age&Gender моделью. Выкачал 6к разных портретных фоток, запустил crop и resize на основе определения лица - материал для обучения и теста почти готов. Только надо провести классификацию этих 6к изображений.

Может быть подскажите удобный инструмент, чтобы классифицировать фотографии? (Вариант с drag&drop по папкам, либо ctrl+c/v мне не понравился. Идеал - мышью отщёлкал некоторое количество изображений, потом нажал на класс - они пропали, продолжил.)

Лично я для таких вещей обычно пишу простой скрипт opencv'шный с imshow и imwrite. Тупо подряд отображаю все картинки и делаю бинд на какие-нибудь кнопки для сохранения в нужную папку...при некоторой сноровке получается довольно бсытро сортировать базу.

  • Like 1

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now


  • Recently Browsing   0 members

    No registered users viewing this page.

×