Моделирование зрения. Часть шестая. Моделирование eye tracking

    1 Экскурсия в глаз2 Восприятие3 Геометрия зрения4 Eye tracking5 Как поймать взгляд6 Моделирование eye tracking

    Шестая часть, заключительная. Рассказ непосредственно о принципах моделирования eye tracking, а так же как это может быть применимо к реальной жизни. В этой части, наконец-то, пригодятся цифры и принципы, освещённые в третьем, четвёртом и пятом постах.

    Какие модели eye tracking представляют интерес?


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

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

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



    Границы применимости моделирования



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

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

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

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

    Где это может быть применимо?



    При ознакомлении с границами применимости моделей возникает логичный вопрос «А где это, с такими-то ограничениями, может быть применимо в реальной жизни?»

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

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



    Кроме анализа восприятия текстов, модели неплохо могут работать для нахождения оптимальных регионов восприятия (чтобы что-то показать — рекламный блок) или невосприятия (чтобы что-то спрятать — контактный телефон) ;)

    Ну и не нужно совсем уж исключать класс задач быстрого анализа изображений с целью юзабилити-тестирования. Доступа ко «взрослой» системе eye tracking и десятку человек из фокус-группы часто является невозможной роскошью.

    Как оно работает



    Моделирование векторов саккад на простейшем уровне (т.е. так, как оно у меня работает) заключается в решении двух задач:

    1. Вычисление некой «силы восприятия» для указанной области.
    2. Нахождение и выделение ловушек взгляда на основе информации о «весе» центра внимания.

     Классическое решение первой задачи выполняется с помощью следующей последовательности действий:

    1. Выделение необходимой области, в соответствии с углом оптического восприятия глаза;
    2. Нормализация выделенной области в соответствии с параметрами остроты зрения человека (поэтому размытие по Гауссу тут не совсем применимо);
    3. Выделение контуров с использованием частотного анализа и пороговых значений восприятия (для нас на этом этапе важны не столько сами контуры, сколько их примерные очертания, неплохо подходят фильтры Габора);
    4. Обнаружение нарушений непрерывности контуров и нормализация точек нарушения непрерывности алгоритмом Гласса (для нахождения векторов субъективных контуров и дополнения ими контуров объективных);
    5. Вычисление веса зоны на основе количества смены направления, разброса направлений векторов контуров и количества точек разрыва.


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

    Опыт же показывает, что при малых размерах радиуса (в случае 96dpi, радиус зоны острого зрения будет составлять около 18 пикселей, а изучаемый регион с учётом периферического зрения — 57), для приемлимого вычисления веса достаточно 9 радиальных хорд с шагом в 20 градусов. Уменьшение углового шага повышает точность определение порядка веса, но незначительно по стравнению с результатами, полученными по классической модели вычисления веса.

    Тот же опыт показывает, что для разных dpi и, соответственно, разных радиусов зон зрения имеет смысл использовать ту же 18-лучевую модель с предварительной нормализацией региона в виде приведения её к кругу радиусом в 30 пикселей.

    Из-за чего большая точность вычислений в любом случае не приводит к лучшему результату? А из-за того, что сама операция выделения контуров обладает определённой погрешностью и погрешность вычислений 18-лучевой модели сравнимо невелика относительно погрешности самого метода.

    Вторая задача – задача выделения ловушек для взгляда может решаться таким образом:

    1. Сканирование всей области картины с выделением зон с максимальными весами
    2. Построение графа из найденных точек с установлением веса связей между ними
    3. Решение стандартной задачи на графе

    При решении второй задачи каждой паре или триаде точек, составляющих ловушку взгляда, сопоставляется определённый вес, являющийся относительной силой композицией точек относительно соседних ловушек. Смысл этого веса – в длительности фиксации взгляда в найденной ловушке. Другим подходом является метод эластичного графа с установлением веса связей между точками.

    Вопросов генерации диаграмм по найденной информации я уж касаться не буду ;)

    1 Экскурсия в глаз2 Восприятие3 Геометрия зрения4 Eye tracking5 Как поймать взгляд6 Моделирование eye tracking

    Similar posts

    Ads
    AdBlock has stolen the banner, but banners are not teeth — they will be back

    More

    Comments 4

    • UFO just landed and posted this here
        0
        практика тут: ymik.habrahabr.ru/blog/68261/ :)

        с точки зрения кода:

        Препроцессинг:
        1. вычисление «зоны острого зрения» — круг радиусом [R] в пикселях, на основе данных по удалённости монитора и DPI этого же монитора
        2. вычисление разрешения зрения — минимальная длина отрезка [r] в пикселах, воспринимаемая глазом.

        Получение карты силы восприятия цвета:
        1. размытие по Гауссу картинки с сигмой [R]
        2. нахождение различия размытой картинки с оригиналом (некий аналог аншарпа), дифф считается на основе данных по силе восприятия цвета — ymik.habrahabr.ru/blog/60426/ ymik.habrahabr.ru/blog/60362/

        После выполнения имеем карту изменения силы восприятия цвета/яркости.

        Вычисляем карту изменения контуров:
        Считаем, что контур — это ненулевая вторая производная к каждой точки карты изменения цвета/яркости. Теперь представим, что контур состоит из отрезков длиною в [r]+1, тогда для каждой точки картинки контур представляется в виде двух чисел [alpha] и [delta], где [alpha] — угол наклона к оси абцисс, [delta] — выраженность контура

        1. считаем карту контуров в вышепредставленном формате
        2. размываем карту контуров гауссом
        3. считаем дифф «аншарпом», как в предыдущем случае, отличия складываем среднеквадратично, и получаем карту изменения контуров

        Составляем карту узнаваемых объектов
        Ищем нейронной сетью лица, глаза, губы, руки, фигуры людей, тексты: habrahabr.ru/blogs/java/60782/ Потом на основе найденых регионах составляем карту объектов: каждый найденный объект добавляет +1.

        Получение нормализованной картинки:
        Складывем карты изменения цвета/яркости, изменения контуров и карту узнааемых объектов в соответствии с их весами. Результатом имеем нормализацию силы восприятия картинки глазом. Нормализованная картинка, фактически, уже является почти готовым heatmap для eye tracking.

        Теперь необходимо составить карту вероятных сакад.

        Для этого применяются два алгоритма и второй из них — «эластичная сеть». По этому, вначале строим точки сети. Делаем гексогональную сеть (каждый узел сети соединяется с 6 другими узлами, на самом деле, количество связей не сильно важно, так было просто удобнее считать) из расчёта, что длина связи будет [R]/3. Узлы, вышедшие за пределы картинки будут фиксированными якорями. Сеть должна располагаться симметрично относительно центра картинки.

        Теперь считаем все узлы точек «роем», каждый из которых стремится соединиться с самой «сильной» точкой из нормализованной картинки. Поиск точки за один шаг осуществляется в радиусе [R]/3. Совершаем сколько-то шагов до тех пор, пока рой не успокоится и точки перестанут менять своё местоположение.

        «Склеим» рой — точки, занявшие одни и те же координаты на карте объединяем с сохранением связей до других точек, убираем дублирующиеся связи.

        На полученной сети применяем алгоритм «эластичной сети». Натяжением нити считаем сумму весов точек из карты по линии связи. Сумма векторов связей в соответствии с силой натяжения даёт «импульс» — сдвиг точки за один шаг. Делаем какое-то количество шагов до тех пор, пока не получим нулевой импульс для всех точек.

        Результатом является сеть, узлы котрой — точки фиксации, а связи — вероятными сакадами. Heatmap составляется на основе данных о плотности расположения связей и весов точек нормализованной картинки.
        • UFO just landed and posted this here
            0
            это я описал, как у меня алгоритм работает :) есть ещё два решения проблемы моделирования eye tracking, одно из них учитывает карту контуров, второе явно нет. В принципе, на не очень сложных картинках можно обойтись без контуров — они уже косвенно заданы в карте цвета/яркости. Точно так же можно обойтись без нормализации под силу восприятия цвета/яркости и использовать только плотность контуров и узнавание объектов. Проблема в том, что на больших картинках это начинает расходиться с реальной статистикой. Третий способ — обучить серию нейронных сетей на разнообразных реальных данных. Но этот способ лагает на шумных объектах.

      Only users with full accounts can post comments. Log in, please.