Jump to content
Compvision.ru
Sign in to follow this  
Frimen

Распознавание лиц

Recommended Posts

Есть ли способ распознать лицо (recognition) не используя каскады?

Если да, быстрее ли он.

Спасибо

Share this post


Link to post
Share on other sites

Я бы не сказал, что каскады Хаара работают медленно. Имеется в виду стандартный пример из OpenCV? Его можно ускорить в несколько раз. Не находить соседей, например. А ложные сработки отсеивать временным фильтром.

Share this post


Link to post
Share on other sites
Я бы не сказал, что каскады Хаара работают медленно. Имеется в виду стандартный пример из OpenCV? Его можно ускорить в несколько раз. Не находить соседей, например. А ложные сработки отсеивать временным фильтром.

Платформа мобильная - каждая секунда дорога.

Время исполнения cvHaarDetectObjects приблизительно : 0.3 - 0.4с.

CvSeq* faces = cvHaarDetectObjects(small_img, cascade_, storage_, 1.6, 2, 

CV_HAAR_DO_CANNY_PRUNING,

cvSize( small_img->width/4, small_img->height/4 ));

Рассматриваю любые варианты для повышения производительности.

Share this post


Link to post
Share on other sites

Попробуйте установить флаги так:

CV_HAAR_DO_CANNY_PRUNING | CV_HAAR_FIND_BIGGEST_OBJECT

будет искать только один, самый большой объект, производительность возрастает заметно.

Share this post


Link to post
Share on other sites
Попробуйте установить флаги так:

CV_HAAR_DO_CANNY_PRUNING | CV_HAAR_FIND_BIGGEST_OBJECT

будет искать только один, самый большой объект, производительность возрастает заметно.

Производительность взросла раза в 2а. Время 0.17 - 0.2с.

Спасибо.

Share this post


Link to post
Share on other sites

А я как-то раз из любопытства залазил внутрь функции cvHaarDetectObjects. Выкинул всё лишнее, временные объекты внутри создавал только один раз (у меня видео анализировалось, не было необходимости на каждом кадре всё заново создавать), искал только одно лицо на кадре и т.д. и т.п. Короче переписал функцию под свои частные нужды. Получилось раз в 10 быстрее. Исходники, правда, выложить не могу.

Share this post


Link to post
Share on other sites
А я как-то раз из любопытства залазил внутрь функции cvHaarDetectObjects. Выкинул всё лишнее, временные объекты внутри создавал только один раз (у меня видео анализировалось, не было необходимости на каждом кадре всё заново создавать), искал только одно лицо на кадре и т.д. и т.п. Короче переписал функцию под свои частные нужды. Получилось раз в 10 быстрее. Исходники, правда, выложить не могу.

Спасибо за идею! Покопаюсь...

Share this post


Link to post
Share on other sites

Добрый вечер, совсем недавно заинтересовался CV поэтому опыта и знаний маловато в этой области

ситуация следующая есть web-камера на ноуте:

1. как получить информацию о кадре - тоесть непосредственно его содержимое?

2. как с помощью FaceDetect удерживать лицо - тоесть мы можем получать кадры за кадром - но как определить что на этом кадре, тот же человек, что и на прошлом?

Share this post


Link to post
Share on other sites

1. Что значит "содержимое"? Люди, дорога, здания, деревья?

2. Тут на форуме пробовали найти одно лицо, а дальше его сопровождать: здесь

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

Share this post


Link to post
Share on other sites

если еще надо то вот очень хорошое поэтопное создание приложения по распознанию лица, в подзадачу которого входит нахождение лицав кадре

кляк

Share this post


Link to post
Share on other sites

Добрый день.

Какие есть еще варианты распознания лиц на фото? Если не сложно, опишите общую процедуру с примерами функций opencv :)

Я немного ознакомился с Sobel mask, но не понял как вытянуть границы(скажем лица) после обработки.

Haar не устраивает по одной причине, если например человек немного повернул лицо, то алгоритм не работает =(

Спасибо!

Share this post


Link to post
Share on other sites

Но даже лучшую, что я видел - немецкую Когнитек,...

Вот мне тоже все советуют cognitec. Подскажите, у них есть бесплатные SDK?

Share this post


Link to post
Share on other sites

Распознавание лиц как для аутентификации или просто поиск лиц на фотографии (выделить прямоугольниками все имеющиеся лица)?

Share this post


Link to post
Share on other sites

Вроде как с ними надо списываться, по результатам они могут выдать бесплатную версию на пол года, привязанную к одному компьютеру (и к Винде, и к железу одновременно).

Share this post


Link to post
Share on other sites

Для того, чтобы Хаар обнаруживал не только фронтальные лица, его надо этому обучить. А это очень непростое и долгое дело. Я бы не взялся.

Очень распространённый способ - поиск участков кожи по цвету или текстуре. У найденных областей анализируют форму и считают за лица, если соблюдаются определённые пропорции. Способ ненадёжный, но быстрый. Хотя.. Если все люди будут одной расы, то можно попробовать. Скорее всего потребуется отдельно придумывать эвристики для усатых, бородачей и очкариков.

P.S. Пример не напишу - работы явно не на полчаса, а больше свободного времени у меня сейчас нет.

Share this post


Link to post
Share on other sites

Да, обучение Haar'а судя по отзывам еще какая рулетка, не угадаешь будет ли работать. Некоторые товарищи тренировали темплейт по 6-7 дней и всё равно результат был с ошибками.

Немного пошарив по рунету нашел интерсное решение - http://blog.vidikon.com/?p=470

У меня есть видео файл. Идея - прикрутить к Haar'у мониторинг: сначала находим лица, ставим точки на лица и ищем их передвижение.

Кто пробовал подобное, есть какие впечатления (или еще примеры)? :)

Share this post


Link to post
Share on other sites

Привет. Я в данной области полный ноль.

Народ, существуют проги для портретной идентификации...

Эт как в кино про ЦРУ... Загружаешь туда фотку, и она ищет биометрические совпадения по базе данных...

вот пример

Где такую или подобную можно достать?

В дополнение...

ТУТ Лежат исходники чегото подобного... но я немогу разобраться.

За помощь буду очень благодарен.

Share this post


Link to post
Share on other sites

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

Есть задача трэкинга лица в видеопотоке и сопровождения лица, специальным маркером, нарисованным сверху лица (маркер представляет собой прямоугольник небольшой высоты). Сделано:

1) Распознавание каскадами Хоара, при нажатии на кнопку.

2) Уменьшение прямоугольника, полученного с помощью каскадов на определённый процент (scaleFactor). (Для уменьшения области, на которой будут расположены точки при помощи cvGoodFeaturesToTrack(). Это сделано для увеличения точности трэкинга.)

3) Точки отслеживаются при помощи алгоритма пирамидального Lucas-Kanade.

4) Точки обводятся прямоугольнком, помжноженным на scaleFactor (см пункт 2).

Пожалуйста, помогите разобраться со следующими пунктами:

1) Отсеивание точек трэкинга, "отвалившихся" от исходного лица. Как отсеивать такие точки? На данный момент я отсеиваю точки, находя центр скопления основных "правильных" точек трэкинга и вычисляю среднее Евклидово расстояние от центра скопления точек. Далее, перебираются все точки и те точки, у которых Евклидово расстояние от центра больше среднего отсеиваются. Думаю, надо использовать расстояние Махаланобиса. Но так и не понял как его использовать. В функции есть три параметра: два одномерных вектора и ковариационная матрица. Насколько я понял, ковариационная матрица как раз-таки задаёт "скопление" точек. Как использовать расстояние Махаланобиса для отсеива "отклеившихся" точек?

2) На данный момент необходимо вручную указывать системе, когда начинать цикличные попытки найти лицо при помощи каскадов. Как сделать автоматический "захват" лица при помощи каскадов? Всё дело в том, что каскады используют много ресурсов чтобы найти лицо в видеопотоке. Как можно избежать этого? Я думаю, надо смотреть разницу между кадрами и пытаться определять лица в разнице между кадрами. При несильном изменении каскады не будут использоваться вообще. Может быть надо использовать дополнительно цветовую идентификацию по цвету кожи к разнице?

3) Прямоугольник, обводящий отслеживаемые точки. Как правильно обводить точки прямоугольником таким образом, чтобы прямоугольник точно покрывал лицо и не выходил за его пределы?

4) Как избежать "дрожания" обводящего прямоугольника? Понимаю, что необходимо использовать какой-то фильтр.

Буду благодарен ответам на вышепоставленные вопросы и любым замечаниям по поводу данной темы.

Спасибо за внимание!

Share this post


Link to post
Share on other sites

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

заранее благодарен за любой отзыв

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

что за программы?

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

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

Sign in to follow this  

  • Recently Browsing   0 members

    No registered users viewing this page.

×