LINUX.ORG.RU

Обнаружение лиц на фотографии по методу Виолы-Джонса (Viola-Jones)

 , , , , , ,


0

3

На основе исходного кода трех Open Source-проектов, восстановлен алгоритм распознавания лиц (метод Виолы-Джонса, Viola-Jones). Алгоритм использует стандартный каскад Хаара из OpenCV, и реализован на языке Си++. Скорость работы программной реализации, на изображениях 512x512 пикс – порядка 3 кадров/сек. Предназначен для обнаружения лиц «в фас» на любых фотографиях.

Реализация метода Виолы-Джонса в оригинальных работах авторов не описана, поэтому моя работа представляет значительную ценность для тех, кому надо разобраться в методе Виолы-Джонса, либо – реализовать обнаружение лиц в своем проекте/программе.

Сайт проекта: http://sqface.ru/
Исходный код (под AGPLv3+): http://sqface.ru/download/sqface-first.tgz

>>> Подробности

★★★★★

Проверено: timur_dav ()

Ответ на: комментарий от firsttimeuser

чтобы в паре с плагином в пакетном режиме фиксить красные глаза

93-94% срабатываний

Но, в принципе, можно ... (в пакетном)

pacify ★★★★★ ()
Ответ на: комментарий от pacify

Беда OpenCV в том, что у неё - куча ложных срабатываний.

Магия какая-то. Каскад общий, и там и там виоладжонс, а ложные срабатывания отличаются :)

Vit ★★★★★ ()
Ответ на: комментарий от pacify

Не надо жлобиться. Кому надо сервис сделать - прикрутит opencv и не будет заморачиваться над вашей одаренностью.

А например если я выкладываю код под MIT, то это веская причина не использовать ваш.

Vit ★★★★★ ()
Ответ на: комментарий от Vit

Не надо жлобиться. Кому надо сервис сделать - прикрутит opencv

Одно другому не мешает, верно?
1. Я - «жлоб»
2. Кто-то прикручивает сервис

Магия какая-то. Каскад общий, и там и там виоладжонс, а ложные срабатывания отличаются

Могу подсказать, почему.
У меня не устраняется множественность срабатываний.
Что можно использовать для снижения числа ложных срабатываний, что и делается в OpenCV.

Посмотрите видеоролики - станет более ясно.

https://github.com/wesbos/HTML5-Face-Detection

Больше велосипедов - хороших и разных.

Но я всё-таки за описание алгоритмов на русском языке ...

pacify ★★★★★ ()
Ответ на: комментарий от Chitatel-I-Pisatel

Было бы интересно какие то моменты обсудить, например совместное сотрудничество.

Пиши на Jabber: lubyagin@jabber.ru

pacify ★★★★★ ()
Ответ на: комментарий от pacify

Не полный аналог.

немного подробнее про эту лицензию плиз (AGPLv3+)

Полный аналог GPLv3, только применим и для embedded.

Никак не полный аналог. Суть GPL в чём — передаёшь программу (с железом или без, не важно) - передай и исходники; AGPL — передаёшь программу или результат её работы - передай и исходники (программы, но не тем оформления, содержимого баз данных...). То есть если выпустить под GPL вебовое приложение, то можно будет организовать на его основе какой-то сервис (возможно платный), дорабатывать это приложение, но доработками ни с кем не делиться, потому что пользователям отдаётся не программа, но только результат её работы. А если приложение лицензировано под AGPL, то всякий пользователь сможет попросить исходники, таким образом доработки становятся доступны всем пользователям.

Camel ★★★★★ ()
Ответ на: комментарий от anonymous

сиськи!

не, не, не. это он распознал сиськи как ЛИЦО. значит у баб не сильно отличается лицо от сисек ))) (ну, по математическому мнению)

Ptomaine ()
Ответ на: комментарий от pacify

Я работаю только по тем проектам, где есть гарантированная оплата.

Твоя же история с неоплатой работодателем 12 страничного отчета с описанием алгоритма по сабжу как бы намекает.

BigAlex ★★★ ()
Ответ на: комментарий от BigAlex

Твоя же история с неоплатой работодателем 12 страничного отчета с описанием алгоритма по сабжу как бы намекает.

Дык, оплату ж гарантировал. На словах.

Сейчас исправляю результат работы этого проекта под другого работодателя.

А по бесплатным проектам я обычно не работаю. Исключение - если результат работы нужен мне лично.

pacify ★★★★★ ()
Ответ на: комментарий от anonymous

полезный и нужный алгоритм. только пулемёт добавить.

с микрофоном. и в чечню.

только фильтр на сиськи добавить.

pacify ★★★★★ ()
Ответ на: комментарий от anonymous

Когда ждать в гимпе?

Какой именно плагин нужен? Для генерации области выделения,
составленной из квадратов?

pacify ★★★★★ ()

Кстати, вот интересный момент:

http://news.21.by/hi-tech/2010/04/30/28931.html

Как спрятать лицо от камер слежения

Не секрет, что любую систему распознавания лиц можно обмануть, если надеть кепку с козырьком или отрастить бороду. Но это слишком банально. Студент Нью-йоркского университета Адам Харви (Adam Harvey) нашел модный способ, как сделать человека невидимым для автоматических систем слежения. Немного математически выверенного макияжа - и система распознавания даже не поймет, что перед ней лицо.

Харви провел анализ популярной системы компьютерного зрения OpenCV, а также исследовал алгоритм Виолы-Джонса (Viola-Jones method), который в ней используется. Когда система распознавания анализирует картинку с камер наблюдения, на первом этапе она пытается выделить объекты, которые являются лицами. Это делается по характерным контрастным фрагментам изображения, где имеется большая разница между светлыми (нос и скулы) и темными (глазные впадины) участками. Как только обнаружены такие фрагменты, система делает вывод, что перед ней лицо человека, и инициирует дальнейшие действия.

Как выяснил Харви, алгоритм Виолы-Джонса можно обмануть, если на определенных участках кожи нанести черные пятна. С подобным макияжем системы слежения просто не примут вас за человека.

По мнению экспертов, аналогичного эффекта можно добиться, если просто надеть черные очки. Однако, макияж на лице не только эффективен, но и является киберпанковской демонстрацией протеста против Большого брата, то есть общества тотальной слежки. Есть вероятность, что в будущем, когда камеры слежения начнут устанавливать на каждом углу, такой макияж войдет в моду у молодежи.

pacify ★★★★★ ()
Ответ на: комментарий от pacify

Так вот зачем ихние американофутболисты себе полоски под глазами рисуют. Киберпанки. Военные солдаты многих культур вообще ископаемые киберпанки.

LMD ()
Ответ на: комментарий от segfault

Система распознавания лиц в разы сложнее системы, извлекающей лица из кадра

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

anonymous ()

Скорость работы программной реализации, на изображениях 512x512 пикс – порядка 3 кадров/сек.

Всегда поражал такой бенчмарк. Какое будет использовано железо не важно, что на 386sx, что на i7 3.2 - результат одинаков?

andreyu ★★★★★ ()
Ответ на: комментарий от anonymous

да что там, любая современная мыльница это делает.

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

Яндекс и Одноклассники этой осенью также внедрили технологии обнаружения лиц с функцией идентификации персоны на фото (сумма сделки с Face.com не оглашается).

pacify ★★★★★ ()
Ответ на: комментарий от andreyu

Всегда поражал такой бенчмарк. Какое будет использовано железо
не важно, что на 386sx, что на i7 3.2 - результат одинаков?

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

pacify ★★★★★ ()
Ответ на: комментарий от pacify

Дык, оплату ж гарантировал. На словах.

%s/гарантировал/обещал на словах/

смысл слов сохраняйте, пожалуйста, иначе «man толковый словарь»

и правильно ли я понял, что если бы ваш труд был оплачен тем «нехорошим» работодателем, то в opensource вообще бы ничего не упало? енмип, проект открыт вместе с описанием алгоритмов именно в отмеску плохому дяде.

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

BigAlex ★★★ ()
Ответ на: комментарий от AP

> Если просто написать плагин для GIMP'а - дело 1-2 дней.
А зачем он в гимпе-то? Такая фигня нужна в каталогизаторах фотографий, чтобы можно было автоматически сканировать и группировать снимки по людям.

Ну и вопрос, а как же фотограф узнает, кому красные глаза убрать?

andreyu ★★★★★ ()
Ответ на: комментарий от andreyu

Ну и вопрос, а как же фотограф узнает, кому красные глаза убрать?

Почитай лучше диссертацию Кудряшова П.П.
http://www.dissercat.com/content/algoritmy-obnaruzheniya-litsa-cheloveka-dlya...
(она есть в залах доступа к базе диссертаций РГБ)

Там отлично рассказано - _как_ именно убирать «красные глаза».

pacify ★★★★★ ()
Ответ на: комментарий от BigAlex

енмип, проект открыт вместе с описанием алгоритмов именно в отмеску плохому дяде.

Как говорится, Бог ему судья.

Я сейчас работаю уже на другого заказчика. И открытие исходных текстов мне нисколько не мешает.

pacify ★★★★★ ()
Ответ на: комментарий от pacify

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

вы только что оскорбили очень много людей, которые сделали что-то just-for-fun гораздо лучше, чем толпы индусов за деньги.

anonymous ()
Ответ на: комментарий от anonymous

вы только что оскорбили очень много людей, которые сделали что-то
just-for-fun гораздо лучше, чем толпы индусов за деньги.

Можно работать за деньги Just-for-fun.

pacify ★★★★★ ()
Ответ на: комментарий от anonymous

Готово - https://github.com/tony2001/sqface «Дока» там, конечно, не бог весть что, но для начала хватит.

И вы туда же - «Using 512x512 full color pictures this algorithm is able to process ~3 pics per second.»
Опишите тестовый стенд, автор ведь сказал уже хар-ки.

andreyu ★★★★★ ()
Ответ на: комментарий от andreyu

Опишите тестовый стенд, автор ведь сказал уже хар-ки.

Эти FPS нужны лишь для ориентировки. Я привёл эти 3 FPS для того, чтобы показать ориентировочно - на что можно рассчитывать.
OpenCV на таких же картинках выдает от 10 до 30 FPS. Я ускорял свою программу до 5-6 FPS.

Быстродействие лучше проверять на практике.
Моя программа тянет за собой лишь FreeImage, поэтому можно собрать из
исходников практически на любой системе, и проверить в течение 2-5 минут.

pacify ★★★★★ ()
Ответ на: комментарий от pacify

> Ну и вопрос, а как же фотограф узнает, кому красные глаза убрать?
Почитай лучше диссертацию Кудряшова П.П.

Вы не уловили мою шутку юмора ;)

andreyu ★★★★★ ()
Ответ на: комментарий от andreyu

Вы не уловили мою шутку юмора ;)

Шутки «ниже пояса» последние годы становятся уже слишком плоскими.
Например, про «красноглазие» и т.п.

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

P.S. Вспоминаю, как полгода назад, ночью, решил сфотографировать кошку,
и забыл отключить вспышку.

pacify ★★★★★ ()
Ответ на: комментарий от anonymous

котэ в студию

Эх ... у меня за последние два года - 13 тыс. фотографий. Не обещаю, что найду.

pacify ★★★★★ ()
Ответ на: комментарий от forth32

Кстати. А эта система кошачью морду сможет распознать, или только человевческие?

Вряд ли. Разве что - по глазам и текстуре шерсти. Поэтому для
котов/кошек лучше применять другие, эвристические, алгоритмы.

Виола-Джонс на лицах «в фас» основан на том, что у человека светлые
скулы, светлый лоб (относительно глаз), и - светлый нос. На выпуклостях,
в общем.

pacify ★★★★★ ()
Ответ на: комментарий от mrXorg

Тоесть негра не опознает?

Не пробовал. Можешь сам проверить.
Должен распознать, так как яркость используется относительная. И область глаз все-равно темнее.

В принципе, программа может также использоваться для фильтрации изображений по цвету кожи.

pacify ★★★★★ ()
Ответ на: комментарий от forth32

Кстати. А эта система кошачью морду сможет распознать, или только человевческие?

На счет котэ - не знаю, а вот собачьи морды классификаторы, тренированные на человеческих лицах иногда проскакивают. Кстати, негров распознает, при учете, что тренировался на белых. (не удивительно, ведь чем для этой распознавалки негр отличается от слабо освещенного белого?).

segfault ★★★★★ ()
Ответ на: комментарий от pacify

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

A-234 ★★★★★ ()
Ответ на: комментарий от A-234

вместо того чтобы изложить это непосредственно в новости.

Этот комментарий нужен только тем, кто хотя бы понял - что находится
в каскадах Хаара. Упомянутая «суть» имеет смысл только для
исследователей-математиков. Которые и сами поймут суть алгоритма,
прочитав текст на сайте.

pacify ★★★★★ ()
Ответ на: комментарий от anonymous

Eto vse uje davno est'... vi opozdali na let 5.

Я никуда и не торопился. То, что трекингом/идентификацией объектов с
видеокамеры люди давно занимаются - я знаю. В Интернете - куча
рекламных материалов.

pacify ★★★★★ ()
Ответ на: комментарий от pacify

Можно добавить к плагину «Фото на документы» (http://welinux.ru/post/6710/). В нём в полуавтоматическом режиме как раз требуется выделять лицо, а с этой штукой режим стал бы полностью автоматическим.

anonymous ()
Ответ на: комментарий от anonymous

В нём в полуавтоматическом режиме как раз требуется выделять лицо,

Можно попробовать. Когда время будет.

pacify ★★★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.