Comments 59
Интересная идея. Учитываете ли вы, что цвет глаз на протяжении жизни может в некоторой степени меняться, в отличие от рисунка радужной оболочки.
Какого-то большого исследования не проводили, но в принципе алгоритм робастен был к небольшому изменению спектра окружающего освещения. Это проверяли. Изменяется, кстати, в основном высокочастотная структура цвета. Средние цвета сохраняются. Да, хороший пример того что цвет не полностью стабилен — ngm.nationalgeographic.com/2002/04/afghan-girl/index-text :)
У меня мама с глазами хамелеона: они могут быть как ярко-выраженные голубые, или четко зеленые.
Это вопрос освещения. Скорее всего зелёные они на солнце, а голубые при лампах дневного света или в облачную погоду. У нас основная мощь сидит в предсказуемом спектре. Отклонения минимальны.
Да вот нет как раз…
Бывает месяцами одни глаза, месяц другие…
Не смогу вам ответить почему это бывает, но как факт.
Простите а за вами еще не прилетали? А это это прям из разряда фантастики. Я понимаю волосы у меня в зависимости от сезона (время проведенного под солнцем) выгораю и летом я почти блондин а зимой как будто мелиорированный.
Вообще странно. Попробуйте сфотографировать на одинаковый фотоаппарат с одинаковой вспышкой. Думаю всё-таки что оптический обман какой-то. Глазами цвета сложно различать.
В принципе есть термин, «иридодиагностика». Там уверяют, что по цвету глаз можно болезни определять. Но ни одного серьёзного исследования, где бы доказывалось, что оно работает, или хотя бы, что цвета глаза меняются — не было. За время работы с алгоритмами по цвету (около двух лет весь проект двигался) ни у кого из связанных с проектом людей ничего не менялось до уровня, что можно было бы заметить, или чтобы алгоритм выдал отказ.
Именно рисунок радужки не меняется с возрастом, что подтверждено многочисленными исследованиями. Немножко плывёт только цветность и общий контраст.
Мне знакомые неоднократно утверждали, что у меня меняется цвет глаз в зависимости от эмоционального состоянии — обычно серые, а в ярости зеленеют.
А у меня оттенок глаз меняется в зависимости от состояния: в трезвом виде серые, а с бодуна синие-синие. Без шуток.
Я всегда думал, что у тебя синие глаза. Так чего получается, я тебя всегда с бодуна видел?
Мне вот интересно как проводятся такие исследования. Перебором алгоритмов? Это как-то автоматизированно, или все на бумажке?
Сложный вопрос. Бывают ситуации, когда возможно построение строгой математической модели. Тогда задачу можно решить на бумажке. Но в этом случае оно было не так. Но и перебором не решить. Например алгоритм сравнения гистограмм, конечно, известен, но с самого начала мы о нем и не могли подумать. Где-то посередине оно обычно.
Вопрос не совсем по теме поста, но можно ли обмануть сканер радужки при помощи контактных линз с рисунком?
Однажды мы проверяли и пришли к удивительному выводу. Те, что продаются в обычных магазинах, не могут обмануть, если распознавание в ИК спектре. То ли качество печати на таких линзах плохое, то ли просвечивают они в ик. Уровень корреляции с глазом падает немного, но в принципе человек распознаётся.
Но вообще если ставить целью не распознаться на сканере — это не сложно. Выдать себя за другого человека — гораздо сложнее, если есть защита проверяющая обратную реакцию глаза — почти невозможно.
Меняем яркость подсветки и смотрим, как расширяется/сужается зрачок. По идее, еще и наркоманов должно отсеивать :)
Только если они совсем удолбаны:)
Какая-то реакция всё же у них есть.
Моргающая лампочка, управляемая программно. Когда она включается — зрачок сжимается. Достаточно надёжная проверка на живость. Вырванные глаза её не пройдут:)
Надо еще звук проверять. Если пациент кричит: «Что вы делаете! Как так можно, живого человека мордой в камеру тыкать!», то дверь лучше не открывать. Спасибо за очень интересную статью!
И живые глаза с МВС (миопией высокой степени) — близорукие, тоже. Особенно если близорукость огромная. Там мышца, управляющая зрачком, не функционирует правильно. Не сокращается.
Солнечные очки, особенно пластиковые, на 830 нм выглядят как прозрачные. А их раскрашенная оправа становится белой. Примерно так:
Ага. А карие глаза в близком ИК имеют на порядок более читаемую структуру, чем голубые:)
Но так как в принципе линзы в ИК видны, не понятно, что больше повлияло. То, что там печать 300dpi и между точками всё видно, то ли то, что эти точки сами по себе пропускают неплохо.
Кстати, «близкий ИК» для вас это что? Меньше 800 или меньше 1300?
Я так понял — вы сканируете только один глаз или два? Если два — как быть людям с гетерохромией?
В той работе распознавание было по двум глазам. Сканировались они независимо. Разницы никакой нет, одного они среднего цвета или разного.
На чтение, предположим, потрачено не 10 минут, а чуть больше. Но оно того стоило. Интересный пример «простого» решения сложной задачи.
А почему не по рисунку радужки? Конечно нужна хорошая фотография с оборудования. А блики как из фото с точками в зрачке использовать как ориентиры.
Я верно понял, что в итоге всё-равно получается около 6% ошибок? Ну то есть такую систему можно применить чтобы в школе шкафчики запирать\отпирать, но вот вход в домен или логин в банкомате на этом не сделаешь.
Это дополнение сверху обычного распознавания, где FAR=10^-7 при FRR 0.02%. Чистый алгоритма да, более чем для отпирания шкафчиков не годится. Но в системе, когда имеется 2 глаза он позволял задрать проценты ИК-метода так, что теоретически алгоритма хватало для стабильного распознавания всего земного шарика.
Ой, время правки истекло, а ошибку заметил. Не 0.02%, а 0.002 или 0.2%. Не то ни сё написал. Вот таблица зависимости FAR и FRR по открытой базе CASIA для чистого алгоритма:
eye-recognition.ru/table.png
А как вы обрабатываете ситуацию, когда радужка прикрыта веком? Веко как то распознается?
И еще, сравнение инвариантно к наклону головы? То есть если наклонить немного голову набок — система уже забракует?
Веко выделяется. Без этого нельзя, статистика сильно падает. Используется примерно такая область:

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

Поворот обрабатывается. Градусов 15 туда-сюда. Корреляция проходит со сдвигом шаблона.
Если использовать два глаза, то правильную ориентацию можно вычислить. Это значительно улучшает статистику. Но проценты я все писал именно для случая, когда глаз один.
Ага, понятно. А когда идет сравнение вот этих Iris Code, то сравниваются только те области, которые не прикрыты веком в обоих развертках?
А еще такой вопрос. Ведь при сжатии зрачка — радужка расширяется. Вы просто нормируете все развертки к одинаковой высоте, что бы компенсировать это растяжение?
Ага, там сверху маска накладывается на все области, которые не надо сравнивать. К ним же блики относятся.
Да, там нормировка. При изменении размера зрачка можно считать, что радужка растягивается линейно. В принципе это не совсем так, но больших проблем при это не вылезало. Правда тестов на наркоманах мы не проводили:)
Вот так и идёшь между Сциллой и Харибдой, решая очередную задачу. И повторяться нельзя и закапываться. А что в таких случаях делаете вы?


Проблемы «использования имеющихся паттернов» у меня обычно нет. Проблема в другом — я считаю, что любая задача должна иметь простое и элегантное решение, и пытаюсь его найти. Если вижу, что задачу можно свести к какой-то другой, с меньшим числом параметров — делаю это без колебаний, забывая про потерянную информацию. И если информации в этой приведённой задаче стало вдруг не хватать, то либо выцарапываю всё, что можно, из оставшихся крошек, либо объявляю подход некорректным ищу другой. Места для гибридных подходов на этом пути нет вообще (в задаче распознавания глаз я бы мог рассмотреть, например, сравнение спектральных компонент в ДПФ или сравнение топологии каких-нибудь хребтов яркости — но ничего промежуточного искать бы не стал, скорее, при неудаче этих подходов бросился бы в совершенно третьем направлении).
Вторая проблема чем-то напоминает перфекционизм: при поиске решения (обычно, эвристического) я сразу нахожу ситуации, в которых это решение не сработает (или потребует слишком большого времени). Дальше либо начинаю искать способ соптимизировать эту часть, либо обойти её. А остальная цепочка так и остаётся недодуманной, хотя возможно, настоящая проблема и/или решение остались там.
Ну, и третья проблема — магические константы (вроде 0.32). Которые изначально имеют малообъяснимый смысл, остаются где-то в коде, умение настраивать их исчезает, и в итоге алгоритм, проработав какое-то время, рассыпается по необъяснимым причинам. И дешевле оказывается построить новую цепочку, чем починить старую (тем более, что все недостатки старого алгоритма за время эксплуатации стали видны, и понятно, что он никуда не годится).
Как-то так. Сейчас задач такого типа в очереди 4 штуки, три из которы х как-то решены (но их обязательно надо переделать), а в четвёртой ещё и конь не валялся — только общая идея, что надо изучать сферические функции.
Магические константы это да. А главное — далеко не всегда от них можно избавится. Особенно в системах принятия решений.
В этой задачке, правда, с ними всё не так плохо. По сути есть только одна серьёзная константа, которая отвечает за уровень FAR. А вот когда дело начинает касаться астрономии, то там всякие константы вылетают в каждой второй строчке.

1993 год, оказывается очень прогрессивный по тем временам фильм.
Именно об этом фильме я вспоминал, когда начинал заниматься темой распознавания по глазам:)
Тогда сканеры были простые, да. На живость не проверяли.
Фильм-то про будующее :) по-моему, про 2036 год или около того. Но даже такое по меркам 1993 года — фантастика.
UFO landed and left these words here
Есть промышленные системы Eye Tracking, например, iScan, Eye Link. В самых продвинутых из этих систем обеспечивается распознавание элементов глаза (радужка, зрачок) с частотой кадров около 500-1000. При этом используется компьютер для обработки изображений, но все же это намного лучше, чем тратить несколько секунд на обработку одного кадра на Core i7. Думаю, можно было бы позаимствовать из этой области методы сегментации.
У нас не несколько секунд, ибо используется ряд хитрых методов (полный кадр где-то 70мс на i7). Несколько секунд, это если использовать ломовой подход с полным перебором 3х мерного пространства Хафа. В системах Eye Tracking используется ряд хитростей. Как вариант: меньшая робастность к внешним условиям, не полная сегментация, предварительное обучение. К тому же если в одном кадре глаз уже выделен, до держать его дальше — не проблема, особенно когда такая высокая частота кадров.
чтобы не было иллюзий на счет EyeLink: www.sr-research.com/pdf/techspec.pdf

Allowable Head Movement
25x25x10 mm
(horizontal x vertical x depth)

Т.е. голова вообще-то гвоздем к потолку прибита должна быть, чтобы система работала )).

Ну а по сути — другие условия работы. Известно где искать и т.д. И еще, для того, чтобы иметь достаточный Сигнал/Шум нужно освещение, диафрагма и некоторая экспозиция. При высокочастотной схемке экспозиция резко меньше, мощность излучателей должна быть ниже максимально разрешенной (безопасной для глаз), а значит и Сигнал/Шум ни к черту будет. + диафрагму открывать придется, а значит глубина резкости меньше.
так, не заметил, там есть опция «свободная голова» и объем
22x18x20 cm
(horizontal x vertical
x depth) \
не разобрался с одним моментом, кто поймет — скажу спасибо. За счет чего они такой качественный скачок делают — там какая-то дополнительная приблуда есть, чтобы оценивать положение головы?
Я имел дело с живой системой EyeLink. Скажу сразу, что если голова не зафиксирована — то результаты определения положения зрачков плачевные. Мне не удалось держать голову на весу достаточно стабильно, чтобы сигнал трекинга был сколько-нибудь приемлемым. Метку не использовали. Однако это не значит, что сегментация не работает без фиксации головы. Просто определение положения зрачков зависит от ее положения, а цель работы системы именно в определении положения. Голову зафиксировать не так уж и сложно. Подставка для подбородка и капроновая ленточка для упора лба дают достаточную фиксацию. Такие конструкции применяются в офтальмологии при некоторых процедурах, так что они изготавливаются фабрично.
Эх… жаль в биометрических системах как-то не принято фиксировать голову на подставке.

Ну и все же, есть причины по которым при «гуляющей голове» хуже выделяется радужка (смазы, неопределенность в положении глаз и т.п.). В EyeLink решено вспышками, я так понимаю, и большой частотой кадров (трекинг глаза не теряет). вспышки — это правильно. Но все-таки аппаратная часть сильно дорожает тогда. да и трекинг ни к чему, когда радужка захватывается для распознавания. и одного кадра часто хватит.
А быстродействия достаточно для использования в качестве идентифицирующего признака, а не только аутенфицирующего? Проще говоря, может фото глаза заменить логин с паролем, а не только пароль при больших количествах пользователей?
Да, быстродействие на одном только ядре i7 для чистого алгоритма без цвета было несколько сот тысяч сравнений секунду. При использовании цвета оно значительно повышается.
А что в таких случаях делаете вы?

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

Конфликт аналитичного и креативного подхода в чистом виде. Глубокий анализ и погружение в проблему может дать только аналитичное решение, но утонув в деталях, надо дать развернуться интуиции или подсознанию — как не назови это не осознанная деятельность, а значить сознание надо отвлечь от проблемы и занять чем-нить другим, благо всегда есть чем :)

ЗЫ. Спасибо за статью. За сужающийся зрачёк вдвойне. Пишите еще
А ведь да. Проще всего это свести именно к конфликту аналитического и креативного подхода. Не думал об этом с такой стороны. Спасибо!
Only those users with full accounts are able to leave comments. Log in, please.