nyurka: (Default)
[personal profile] nyurka
Название статьи в газете "Правда"
"Русские генетически лучше американцев"
Ухохоталась.

offtopic

on 2006-02-11 07:59 am (UTC)
Posted by [identity profile] egorfine.livejournal.com
Здравствуйте!:) Увидел вас в [livejournal.com profile] useless_faq, обрадовался, и решил задать вопрос. Не знаете ли вы о наработках в таких областях как определение лица на фотографии и координат его основных параметров, и определение положения глаз?

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

Вопрос второй более размыт. Вот есть изображение лица, качественное, видеопоток или фреймы, неважно. Задача - отследить движение глаз и их направление. Реализаций алгоритма не видел и не слышал. Может, вы знаете о наработках в этой области?

Буду благодарен за подсказки и заранее спасибо! :)

Re: offtopic

on 2006-02-11 08:32 am (UTC)
Posted by [identity profile] nyurka.livejournal.com
Знаю:)))))
Поскольку именно этим и занимаюсь :)))
Лицо определяется, как правило, по признакам лица ( то бишь 2 глаза между ними прямая линия носа и ниже носа между позициями глаз рот).
У меня свои алгоритмы нахождения лица, поскольку у конторы задачи несколько нестандартные, но 80% занимающихся распознаванием лиц используют для этого OpenCV - это бесплатная хорошо зарекомендовавшая себя библиотека, работает на той же основе нейронных сетей - то бишь обучение "что такое лицо", "что такое не лицо", и использование результатов:).
Есть куча багов, но при определенных проверках все решаемо.
Глаза определяются либо по той же схеме как и лицо, либо по каким-либо отдельным признакам глаз. Я в данном случае не могу вдаваться в детали, контракт-с :))), но можно посмотреть в интернете, есть тысячи вариантов алгоритмов, половина из них с открытыми исходниками, как правило после нахождения лица, в определенных геометрических областях ищется подобие глаз-носа-рта, ну а дальше стандартный edge detection и какая-либо проверка "оно-не оно"
вот ссылки из тех, что у меня сейчас есть
http://www.cs.princeton.edu/~jlawrenc/morph/
http://library.graphicon.ru/catalog/62
http://www.informatik.uni-trier.de/~ley/db/conf/fgr/fg1996.html
По второму вопросу все тоже самое, за исключением, что все-таки лучше использовать нейронные сети из-за скорости обработки картинки.
Один из ресурсов, вполне уважаемых, пользуется,например все той же OpenCV, у меня сейчас нет линка, дойду до конторы скину сюда же.

Re: offtopic

on 2006-02-11 09:30 pm (UTC)
Posted by [identity profile] egorfine.livejournal.com
Ну что вам сказать... скачал на свой powerbook opencv, собрал с ffmpeg и погонял все семплы пару часиков. Под сильным впечатлением! Я понял, что делать мне нечего там, все уже сделали до меня, эх :)

Большое вам спасибо за ваш ответ. Он суперполезен для меня. Если дадите примеры прикладного использования opencv - буду благодарен:)

Re: offtopic

on 2006-02-12 02:26 pm (UTC)
Posted by [identity profile] nyurka.livejournal.com
обещанный пример отслеживания движения глаз

http://wwwradig.in.tum.de/people/wimmerm/se/project.eyefinder/index_e.html

Re: offtopic

on 2006-02-12 08:11 pm (UTC)
Posted by [identity profile] egorfine.livejournal.com
Обалдеть, спасибо!

Позволю себе наглость задать следующий вопрос. Имея высококачественное изображение человека, найдя в нем глаза, определить положение зрачков и движение зрачков в режиме реального времени - это сложно? Или это можно сделать на основе той же eyefinder затем motion tracking?

Я поясню, к чему я. Речь идет о позиционировании, скажем, курсора мышки - глазами. Если на компьютере есть одна или две веб-камеры и этот алгоритм.

Re: offtopic

on 2006-02-13 08:27 am (UTC)
Posted by [identity profile] nyurka.livejournal.com
Проблема в том, что на видеоизображнениях даже на самых лучших как правило недостаточно информации, чтобы с более-менее приличной точностью получить положение зрачка.

Re: offtopic

on 2006-02-13 09:03 am (UTC)
Posted by [identity profile] egorfine.livejournal.com
А, скажем, получить направление перемещения зрачка? мол, смотрел налево, теперь переместил взгляд на столько-то примерно процентов правее?

Re: offtopic

on 2006-02-15 07:51 am (UTC)
Posted by [identity profile] nyurka.livejournal.com
Извиняюсь, не было раньше времени на ответ.
Все зависит от качества картинки, видео как правило идет в сильно сжатом состоянии, при восстановлении не получается достоточно информации для определения позиции зрачка, но можно попробовать сделать что-то типа такого - проверить отношение позиций белок глаза - тень от ресниц - ориентировочный зрачок.
Только учти, что очень тяжело диференциировать тень от ресниц со зрачком, если, конечно, у человека глаза не на выкате и он вообще с ресницами :))))
Другое дело не сжатые картинки или сжатые практически без потерь - там можно найти все, что хочешь, вплоть до отдельной реснички:)))

Re: offtopic

on 2006-02-15 09:25 am (UTC)
Posted by [identity profile] egorfine.livejournal.com
Ну такое видео с вебкамеры не получить. :( Выходит, пока мечту о позиционированни мышки глазами - следует отложить?..

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

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

Re: offtopic

on 2006-02-17 06:39 pm (UTC)
Posted by [identity profile] nyurka.livejournal.com
Ну если не нужна точность вплоть до 1 пикселя, можно сделать такую вещь - определить позицию глаза, максимально уменьшить площадь, к примеру, вычислить контур глаза и взять только внутреннюю часть, вычислить наиболее темный кусок и считать , что центр этого куска и есть зрачок :). Это будет очень грубо, но более-менее верно.
Если камера будет возле глаз, во-первых будет проблема с нахождением этого самого глаза, а во-вторых, глаз крупным планом это такой ужас с позиции обработки изображений:))))))))

Я не против отвечать на вопросы, но как правило у меня есть время только в пятницу-субботу :)))))
если готов ждать - спрашивай :)))

Re: offtopic

on 2006-02-18 11:09 pm (UTC)
Posted by [identity profile] egorfine.livejournal.com
ждать готов очень даже.:)

а такая задача как позиционирование курсора "мышки" одними только глазами, без самой, собственно, мышки - это теоретически реально на сегодня?

я просто не очень представляю что для этого нужно. motion detect? наврядли. курсор отъедет от точки, куда смотришь, и потом фиг его поймаешь. position detect? тогда надо точность допиксельная. задача, в общем, лежит в области юзабилити такого устройства.

как считаете?

Re: offtopic

on 2006-02-19 08:12 am (UTC)
Posted by [identity profile] nyurka.livejournal.com
А почему она должна быть нереальна?
SetCursorPos никто пока не отменил, если вам есть куда его "сет", то бишь если у тебя есть точка позиции зрачка, разумеется ты можешь просчитать передвижение этого самого зрачка с последней вычисленной точки и проекцию на экран.
Весь вопрос в скорости обработки видео для получения той самой точки.
Самое сложное здесь другое, какую позицию зрачка ты будешь считать, если положим, человек поворачивает голову, а зрачок с точки позиции лица остается на месте, предположим человек смотрит прямо, вертит головой, но продолжает смотреть прямо.
На сегодняшний день нет ни одной системы, которая может определить градус поворота головы с точностью до 1 градуса даже с допуском 20% ошибок :)))
Для моей системы, например хорошая точность - 3-5 градусов, но это недостаточно, для позиционирования мыши, в проекции на экран это до 20-50 пикселей.
Если ты готов разработать такой алгоритм с высокой точностью, есть куча контор, весьма именитых, готовых за него заплатить бешеные деньги :))))))))))))))))

Re: offtopic

on 2006-02-19 03:04 pm (UTC)
Posted by [identity profile] egorfine.livejournal.com
Я думаю о целях такой системы. Цель - это переставить фокус на элемент интерфейса. Здесь допиксельная точность не нужна, и не нужно постоянно отслеживать положение зрачка. Я вполне себе представляю, например, ножную педальку, только при нажатии которой происходит смена позиции мышки. Кроме того, зная, какие элементы есть на экране, можно принять решение о том, на какой элемент хотел человек переместить фокус.

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

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

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

Re: offtopic

on 2006-02-25 07:56 am (UTC)
Posted by [identity profile] nyurka.livejournal.com
В таком случае с точки зрения обработки картинок, гораздо проще отследить положение носа, если камера сбоку, то есть движение кончика носа, конечно, и прогнозируемость несовместима с определением положения зрачков.
И в общем-то логичней, ну а отследить моргает человек или нет, если есть хотя бы одно изображение его же неморгающего, это детские игрушки.

on 2007-08-30 08:12 pm (UTC)
Posted by [identity profile] ex-ashergie.livejournal.com
тебе бы украинскую правду почитать

Re: offtopic

on 2007-12-17 09:46 am (UTC)
Posted by [identity profile] potan.livejournal.com
Не подскажите, а с этой (определение направления взгляда) задачей OpenCV справится?

Re: offtopic

on 2007-12-17 10:20 am (UTC)
Posted by [identity profile] nyurka.livejournal.com
По крайней мере в моей системе направление взгляда я определяю.
Но это не OpenCV.
Вам придется искать именно положение зрачков по 2-м параметрам: положение зрачков относительно самих глаз и насколько положение зрачков симметрично отностительно носа.
Но для этого, разумеется, для начала неплохо бы найти глаза.
А вот для этого OpenCV уже вполне подходит.

Re: offtopic

on 2007-12-17 11:04 am (UTC)
Posted by [identity profile] potan.livejournal.com
Thanks!
Теперь хотя бы известно, куда копать :-).

Определение лица

on 2009-07-22 08:21 am (UTC)
Posted by (Anonymous)
Доброе время суток. ЖЖ пока не обзавелась, поэтому буду анонимить =)

До меня никак не доходит, как с помощью нейронной сети (и только) можно найти лицо, или глаза на картинке. Т.е. как нейронная сеть может вернуть координаты.
Может есть какие то особые сети?
Вопрос не с потолка, просто последние пол года, для написания проекта, я перелопатила кучу статей и книг по определению лиц, и в части из них просто загоняли картинку в сеть и все ... ну а затем на результате искали глаза, нос и т.д.

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

(речь идет о Matlab)
Спасибо, Оля

Re: Определение лица

on 2009-07-22 08:28 am (UTC)
Posted by [identity profile] nyurka.livejournal.com
**как с помощью нейронной сети (и только) можно найти лицо, или глаза на картинке**
Зависит от того как эти сети обучить :)))
Вообще это вопрос для 3-часовой лекции :)))
Посмотрите что ли исходники OpenCV функция cvHaarDetectObjects как само нахождение и сопровождающее ее обучение чтобы было понятно.

Re: Определение лица

on 2009-07-22 08:39 am (UTC)
Posted by (Anonymous)
немного не так...
нейронные сети, по крайней мере те, которые я видела, и те, которые встроены в матлаб, дают только оценку твоей картинке, в соответствии с тем, как их обучили.
Но они не возвращают координат...

От суда и вопрос, есть сети, которые да, возвращают координаты?
Понятное дело, что обучает на лицах и на не лицах ...

Re: Определение лица

on 2009-07-22 08:41 am (UTC)
Posted by [identity profile] nyurka.livejournal.com
Сорри про матлаб не увидела.
Тогда я вам не помощник, я с матлабом не работаю.

Re: Определение лица

on 2009-07-22 08:47 am (UTC)
Posted by (Anonymous)
хорошо, не в матлабе.
Есть в принципе такие сети?

Re: Определение лица

on 2009-07-22 09:08 am (UTC)
Posted by [identity profile] nyurka.livejournal.com
Все зависит от того как вы эти сети используете.
Разумеется есть.
какую собсвенно вообще проблему вы видите после того как сеть "опознала" объект вернуть координаты места где она это сделала. Что именно вас смущает?
Я работаю, например, вот с этой библиотекой
http://leenissen.dk/fann/

Re: Определение лица

on 2009-07-22 09:28 am (UTC)
Posted by (Anonymous)
Может, просто я не достаточно знаю о сетях ...

По книжкам, сеть берет инпут, и прогоняет его по 1-му уровню сети. Где инпут превысил требуемый минимум, там и прошел на 2-й уровень сети.
Затем смотрим, до скольких выходов дошел наш инпут (или до какого именно выхода, в зависимости от сети). И из этого считается оценка нашей картинке. Или от -1 до 1, или от 0 до 1.

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

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

Re: Определение лица

on 2009-07-22 09:37 am (UTC)
Posted by [identity profile] nyurka.livejournal.com
Ну более-менее правильно, именно что определенная маска двигается по картинке и оценивается в соответствии с пониманием сети что есть искомый объект, при движении масштабируется.
Я до сих пор не понимаю что именно не нравится.

Re: Определение лица

on 2009-07-22 10:20 am (UTC)
Posted by (Anonymous)
вот именно маска и не нравится ...
Kак она встраивается в сеть?
Или просто написана оболочка для сети? Есть некая внешняя функция, которая создает маску и посылает ее в сеть а затем обрабатывает результаты? И она не находится внутри сети...
Просто для простоты использования всю эту систему объединили в одну ф-ю и назвали ее сетью.. ?

Я не понимаю, как с помощью нейронов делают эту маску, если она таки на самом деле внутри сети.
Т.е. как можно обучить сеть, создавать эти маски, и результат вырезания засовывать в эту же сеть ... ведь сеть умеет делать только одну конкретную вещь, которой ее обучили... Значит, или резать (не понимаю как, но предположим), или определять лицо это или нет.
Получается, что речь идет о 2-х разных сетях... ???

Re: Определение лица

on 2009-07-22 10:48 am (UTC)
Posted by [identity profile] nyurka.livejournal.com
Понятно :))
Если очень грубо, то это делается так
1 - сеть обучается. Цель - заложить в сеть информацию, что например круг и два круга по бокам это чебурашка.
Результат - некий сторадж, где каким-то образом описано что есть чебурашка для конкретно этой сети.
2 - в сеть с чебурашкой подкидывается некая матрица, и сеть проверяет - а насколько подходит то что ей подкинули тому определению чебурашки которой у нее уже есть.
Результат - крик "ура, чебурашка", если его нашли

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

У меня подозрение что вы в своей логике пропускаете момент "обучения", а это собственно главное для сети.

Re: Определение лица

on 2009-07-22 11:01 am (UTC)
Posted by (Anonymous)
=) Моя твоя не понимать =)

Если мы даем картинку размером с картинками, на которых проходило обучение. Бинго, сеть находит чебурашку или нет.
Но если мы даем картинку в 20 раз больше тех, на ком сеть обучалась. Тогда начинается игра с окнами ...
Если чебурашка в левом верхнем углу, его кто то должен от туда вырезать, и спросить у сети, есть он там или нет ...
В обычной ситуации, это делают ручками ... то есть, вырезают кусок, и спрашивают есть ли на нем чебурашка.

Но есть какие то мифические сети, которые сами могут вырезать картинки из первоначальной фотографии, и на них искать чебурашку.
И в результате сказать, где нужно было вырезать и сколько, что бы его найти.
В итоге, эта мифическая сеть выполняет 2 функции и вырезание всех возможных окон и проверку этих окон... Эти задачи принципиально разные.
Отсюда и непонятки.

(картинки для обучения одинакового размера)
Если вопрос все таки не понятен, то проехали =)

Re: Определение лица

on 2009-07-22 11:12 am (UTC)
Posted by [identity profile] nyurka.livejournal.com
**Тогда начинается игра с окнами **
Да нету никакой игры с окнами.
Есть игра с масштабированием.
Просто сети бывают разные и стораджи их тоже. При чем здесь размер картинки-то??
Я не знаю ни одной сети, которой можно дать имя файла и она прибежит виляя хвостиком и принесет в зубах чебурашку.
Везде надо давать нечто для сравнения "оно-не оно"
Или же давайте определимся что именно каждый из нас считает нейронной сетью :))

Re: Определение лица

on 2009-07-22 11:25 am (UTC)
Posted by (Anonymous)
вот и я о том же...

утверждается в некоторых статьях, что есть чудо сеть, которая виляя хвостиком принесет чебурашку в зубах.
И меня это очень настораживало, и не давало спокойно спать =)
Потому, как такая чудо сеть, улучшает в 1000 раз время выполнения поиска ... но ни в одной книге, я на это чудо не наткнулось.

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

И ни один человек, мне не смог внятно сказать, это правда, или байки.

Re: Определение лица

on 2009-07-22 11:32 am (UTC)
Posted by [identity profile] nyurka.livejournal.com
Это не правда и не байки, это из разряда "что мы понимаем под определением"
Если считать нейронной сетью саму по себе нейронную сеть - в ее функции не входит бегать искать что либо.
Но как правило над нейронной сетью пишутся всевозможные надстройки, во многих случаях их тоже называют тем же словом.
Например есть такой известный класс EyeFinder, которого все хором зовут нейронной сетью, хотя он всего лишь навсего набор функций по по использованию.
Вполне возможно что речь идет о чем-то подобном.

Re: Определение лица

on 2009-07-22 11:49 am (UTC)
Posted by (Anonymous)
Спасибо!!!!

В продолжение темы...
Каким еще образом можно найти "подозрительные" точки (те в которых может быть лицо)?
Kроме:
1. конволюции с средне статистическим лицом и поиска цветовых пиков в результирующей картинке (где пик, там самое маленькое расстояние до лица)?

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

Искать я хочу ручками, просто, что бы научиться, а не с помощью готовой библиотеки (на уровне хобби)

Re: Определение лица

on 2009-07-22 12:27 pm (UTC)
Posted by [identity profile] nyurka.livejournal.com
1 С сетями - вы все таки посмотрите реализацию этого дела в OpenCV, однозначно сложно придумать что-то более умное.
Если без сетей - я например работаю в колор спэйс HSL, очень помогает для определения кожи и не зависит от ее цвета.

2 Я не могу делиться рабочими секретами как именно ищутся глаза, но попробуйте отойти от идеи черно-белого изображения
И - таки у меня есть 2 варианта поиска глаз - с сетью и без сети, без сети однозначно быстрее и точнее. Вне зависимости отцвета кожи.

Re: Определение лица

on 2009-07-22 12:31 pm (UTC)
Posted by (Anonymous)
Спасибо!
Обязательно посмотрю исходники!
Posted by [identity profile] olya-jhane.livejournal.com
Очень похоже на определение глаз, но полегче =)
Есть картинка с множеством кружочков и овалов. Часть из них накладывается друг на друга, а у части не четкие края. + есть блики на самих кружочках.

Нужно найти как можно больше объектов.
Я начала с коректирования цвета, затем размывка по гаусу, коррекция контрастности и гистограмы.

Результат в черно-белое изображение, и преобразование Хафа ....

В результате, нахожу только около 70% ... да и после перевода в чб режим, часть границ улетает...

Не идеально круглые объекты вообще не находятся... =(

Можешь что то подсказать?
Я игралась с матлабом. Может в openCV есть готовые решения?

Спасибо, Оля.

Posted by [identity profile] nyurka.livejournal.com
Посмотри в OpenCV пример fitellipse, там же есть его сурсы, если я правильно понимаю это как раз то что тебе надо.
И еще очень полезная функция оттуда же - cvHoughCircles
Смысл - найти окружность по ее части, то бишь то овалы она тебе найдет, но как круги, а потом уже простейшим edge detection отыщешь внутри сам овал.

Profile

nyurka: (Default)
nyurka

January 2013

S M T W T F S
   1 2345
6789101112
13141516171819
20212223242526
2728293031  

Page Summary

Style Credit

Expand Cut Tags

No cut tags
Page generated Mar. 23rd, 2026 07:35 am
Powered by Dreamwidth Studios