Pull to refresh

Comments 76

круто) даже не знал, что такие технологии настолько доступны :)
НУ как бы не очень сложное оно, у меня одногруппник на 3ем курсе писал такое.
написать-то можно, только замаешься потом калибровать: там жеж не только нормализация, но ещё и тренировка алгоритма

В примере есть строчка «cv.cascade(»haarcascade_frontalface_default.xml");" — это как раз и есть загрузка предварительно сгенерированного каскада (они идут в комплекте вместе с OpenCV)
я тоже не знал, что можно вот так просто :) потому и делюсь.
Очень полезная штука, спасибо!
Есть пара вопросов:
— Как у этого модуля с производительностью? Какие-нибудь тесты делали?
— Какой минимальный размер лица в пикселях распознаётся?
Тестов не делал, но с производительностью должно быть всё хорошо: OpenCV используется для захвата лиц из потокового real-time видео с уличных камер. Ну и до кучи все эти «Moution Eye» от сони тоже, в принципе, используют эту открытую библиотеку. С точки зрения же джавы там тоненькая прокси прослойка над апи нативной либы.

Минимальный размер пикселей задаётся каскадом. Какой каскад будет — такой и минимальный размер :)

насчет производительности… а какое железо и размеры кадра? =))
я гибрид этого метода и интенсивности карт разгонял для поиска лиц на живом видео в реалььном времени.

НО у каскадов openCV система обучена искать на видео очень хорошего(!) качества, не приемлемого для камер наблюдения к примеру =(
на телефонных камерах та же проблема =)
решал её наверно с полгода =)
распознавал для диплома аватарки из контакта, 15-20 пиксельное лицо довольно хорошо находит, при этом «ложных срабатываний» в разы меньше, чем «нераспознанных лиц»
лица расположенные на изображение под углом не распознает, но это можно доработать добавив поворот на pi/2 и pi
производительность для изображений ~200х200 около 200мс на изображение (это вместе с чтением/записью в файл с рамочкой), но зависит от параметров
Это на каком железе?
Фотки предварительно отбирали как-то для теста?
AMD64 4400+
фотки не отбирал, там хорошая выборка лиц / не лиц получается
также наглядно видно в каких местах алгоритм не справляется
Вах, давно хотел подобное поюзать. А то, что это кросплатформенно и есть ява биндинг ещё больше усилило стремление попользовать. Спасибо за ценный топик.
Круть!
Еще бы умел OpenCV «снимать» параметрические показатели лица — ваще цены бы ей небыло!
Параметрические показания можно и самому сделать, благо алгориты нормализации пространства доступны из того же OpenCV.
Жуть как интересно :)
Это ж можно распознавание лиц сделать.
И вместо того, чтоб носить с собой на работу «электронную бирочку» для входа в офис — просто поглядел в объектив видеокамеры, нажал кнопочку «открыть дверь», система подумала, серверок пошуршал у себя, сравнил данные с видеокамеры с данными сотрудников. И открыл || не открыл дверь.
Круть! Уже хочу!
к распознаванию — это сюда: faint.sourceforge.net/ :) Ребята забацали «The Face Annotation Interface» на основе всё того же OpenCV. Для определения лиц используют алгоритм «EigenFace»
Спасибо за ссылочку!
Попробуем, чего у ребят получилось
Особо следует пробовать летом и зимой, с бородой и без =)
Насчет зимой/летом — не знаю, но вот уверен чтоб уменьшить возможность подтасовки и прочих хаков (например фотки босса, как предложил Quadrix), нужно будет обязательно сделать «тесты» объекта.
Подходишь к небольшому терминальчуку, смотришь туда, система выдает, а теперь покажи язык :) А теперь скорчи рожу, а покажи как ты сердишься, а представь теперь, что ты удивлен :)))
Смотрим на реакцию лица, сравниваем с эталонами сотрудника — если ок:
— ты наш чувак, проходи!
Фух… уж лучше приложить ключ-таблетку.
Ключ-таблетка — это просто и неинтересно :)
А тут такое веселье перед началом рабочего дня.
Ага. Помнится, захакали такую систему довольно просто — показывали видеокамере распечатанную фотографию «нужной» персоны :)
Компьютерное зрение, говорите? Так вот чем надо капчи распознавать.
UFO landed and left these words here
Почему? По-моему, как раз то самое: распознавание форм, поиск контуров и т.п. — разве нет?
Я никогда не пользовался OpenCV, да и другими библиотеками компьютерного зрения, так что поправьте меня если я неправ.
Насколько я понимаю, распознавание символов не есть задача систем компьютерного зрения. Вернее это более частный случай для которого существует целый класс OCR систем, и на java в том числе.
после соответствующей настройки OpenCV будет обводить буквы кружочками =)
Да, и будет говорить: «это каптча!» или — «нееет, это совсем не каптча».
UFO landed and left these words here
Такое, по мойму, лучше написать как серверное приложение и просто юзать из php.
к сожалению андер уйндоус не нашел а так спасибо огромное
есть… побаловался даже =)

Интересно можно заставить это не только находить лица, но и распознавать кто на фотографии? =) Было бы удобнее вконтакте так выкладывать — выложил фотографию и уже всех друзей на ней отметило.
видимо высмеивается красный кружок в примере вместо прямоугольника
Спасибо огромное! Действительно интересная вещь и любопытно хотя бы поиграться.
То что подобные библиотеки есть open source — просто замечательно.
Мега! Мегавещь! Очень нехватает в соц.проекте! Уже сижу в консоле — ставлю пакеты под php :))
ну, если честно, то под пхп я бы с этим аккуратно — сожрёт жеж всю память и не выплюнет!
жёстко! Не проще ль тогда написать на сях простенький CGI-REST и обращаться к нему из пыха?
Да зачем выкручиваться так? Модуль уже скомпилировал, тестирую вот — работает очень быстро, результат очень хороший — показывает отлично. Процессор не грузит.
2 ядра, 2 гига, полет нормальный (20 фоток 500х600 в одном потоке, uptime не более 1.0)

на продакшин пока не пихал, как запустим проект — сделаю фишку для «фоток», там посмотрим. Памяти хватало всегда.
глубокая альфа, недели 2 еще и будет открыто. Думаю Хабр поможет положить сервер :)
Не смотрел. Но подозреваю, что там тоже есть OpenCV.
Написание детектора лиц на С++ занимает не больше 5 страниц кода с нуля. и работает не хуже чем openCV =))
Его ж ещё обучать надо… Сама имлементация да, занимает немного.
Сейчас пишу курсовую, две камеры снимают руку, и движение руки переводится в 3d-модель. Пишу на С# c использованием Aforge.NET Framework — библиотека для работы с нейронными сетями, ИИ, обработка изображений. Классная вещь вобщем… =)
прикольно! А посмотреть на результат можно где-нибудь?) Скажем, видео.
Результат работы моего приложения или библиотеки вообще? ))
Вот вобщем две ссылки:
www.youtube.com/watch?v=4fStBSob3i4 — трекинг шарика с двух камер + Lego Robotics, всё для работы с Lego уже есть в AForge.

www.youtube.com/watch?v=lKkGOUW_xas — распознавание жестов рук.

www.aforgenet.com/ — собственно сама ссылка на проект, лицензия LGPL.

p.s. если имелась ввиду моя работа, то она еще не готова, курсовая расчитана на 2 семестра, вобщем допиливать еще много))
прикольно) но о работе по завершению уж отпишитесь, а?)
Ок, обязательно)) Может еще статейку напишу про aforge.
нет проблем. Можно поставить линк на ЖЖ — ymik.livejournal.com
и ссылки поставьте, а то не понятно, что за JNI интрфейс и всё такое :)
лучше бы объяснили, хотя бы вкратце, принцип работы применяемого алгоритма, а как юзать те или иные библиотеки, думаю, никого не надо учить
В тексте я указал название алгоритма — это широко известный алгоритм Виолы-Джонса. В гугле не составит труда найти развёрнутые описания работы алгоритма. Так что описывать их тут бессмысленно, разве что перевести на русский.

Вот, например. Или вот.
А у меня вопрос из прикладной области:

скажите, как обойтись без установки библиотеки в операционной системе, а использовать внутри своего проекта на java? Прослойка между openCV и java отличная получается, но заставлять пользователя дополнительно к проекту отдельно ставить библиотеки не хочется, сами понимаете.
Известно, как обойтись без установки на с++, а что насчет Java?

Заранее спасибо.
Only those users with full accounts are able to leave comments. Log in, please.