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

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

Определение

Прежде чем мы перейдем к процессу исследования и выводам, давайте разберемся, что такое система отслеживания чтения и почему она так важна. Он определяется как система на основе ИИ и отслеживания взглядов для различных целей анализа чтения. Его можно использовать во многих сферах, а современное приложение хорошо задокументировано в образовании, медицине, HR, маркетинге и других областях.

Система позволит пользователю:

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

Система может автоматически отслеживать движения ваших глаз и сопоставлять их с текстом на экране. Это позволит обрабатывать шаблоны чтения в реальном времени и сохранять все метаданные для дальнейшего анализа.

Благодаря нейронным сетям, обученным глубокому обучению, система может с точностью до 96% определять, читает ли человек в данный момент.

Гипотеза

Первоначальная цель нашего исследования была тройной:

  • Чтобы проверить гипотезу высокой точности
  • Чтобы создать модель в реальном времени
  • Дальнейшее исследование паттернов взгляда

Наша команда из 3 человек в течение 2 месяцев проводила исследовательскую деятельность в рамках деятельности DataRoot University. Первоочередной задачей было создание программы для анализа зрительной деятельности человека по движению взгляда, которая включала бы:

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

Выполнение

В основном мы использовали библиотеки с открытым исходным кодом на основе Python:

  • Основы DS: Numpy, Scipy, Matplotlib, Seaborn, Plotly, Pandas (подготовка данных, обработка, визуализация); statsmodels (исследование временных рядов);
  • ML / DL: Scikit-learn (алгоритмы кластеризации, исследование временных рядов), Tensorflow, Keras (CNN, LSTM);
  • Компьютерное зрение: OpenCV, imutils, PIL, Tesseract (распознавание текста, движение глаз к отображению текста)

Алгоритмы, которые мы использовали:

  • Анализ временных рядов и извлечение признаков + MLP
  • CNN
  • LSTM
  • k-означает
  • сшивание панорамы
  • OCR с помощью тессеракта

Сбор данных

Для отслеживания активности человека мы использовали айтрекер GazePoint. Инструмент позволял получать координаты взгляда с угловой погрешностью 1–1,5 после калибровки. Во время каждого сеанса приложение GazePoint Analysis записывало лица и экранное видео вместе с табличными данными о движении взгляда.

Весь набор данных состоит из 2 частей: 51 временного ряда для чтения и 85 временных рядов без чтения. В рамках нашего исследования каждый участник выполнил следующие действия:

  1. прочитать 2-х минутный текст;
  2. нашел конкретную информацию и вещи на картинках
  3. посмотрел 3-х минутный ролик.

Результирующий временной ряд состоит из нескольких столбцов:

  • FPOGX, FPOGY - координаты экрана относительно разрешения экрана, алгоритм A
  • BPOGX, BPOGY - координаты экрана относительно разрешения экрана, алгоритм B
  • FPOGID - ID фиксации
  • ФПОГД - продолжительность фиксации глаз
  • БПОГВ, ФПОГВ - достоверность информации
  • BKID - мигающий ID

Предварительная обработка набора данных и выбор функций

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

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

Вот что значила фильтрация для наших исследовательских целей:

  • Фильтрация по БПОГВ, ФПОГВ
  • Фильтрация только движений взгляда на экране

Чтобы легко манипулировать набором данных и обучающими / тестовыми моделями, мы выбрали окно шириной 100 наблюдений (среднее время для чтения одной плоской линии на бумаге формата A4). Это привело к разделению всего набора данных на 24 568 временных рядов для чтения и 14 288 временных рядов без чтения при длине 100 наблюдений с учетом 90% перекрытия.

Классификация чтения / не чтения

Наша команда использовала три основных метода классификации временных рядов, подробно описанные ниже.

Исследование временных рядов и ручное извлечение признаков с помощью MLP. Мы создали три группы функций:

Обнаружение линейного тренда для FPOGX

  • MSE после линейного приближения для FPOGX. Другими словами, попытка подогнать линию к траектории оси x.
  • Вес около линейной части после линейного приближения (вес w в уравнении x = w * t + b).
  • Тест Дики-Фуллера на стационарность для обнаружения линейных трендов.

Сезонность:

  • Максимальный остаток абс. После сезонной декомпозиции (FPOGX, FPOGY)

Общие характеристики:

  • Стандартное отклонение для временных рядов FPOGX и BPOGX

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

Долговременная кратковременная память. Были использованы функции dX, dY. Базовая модель состоит из двухуровневого LSTM (1 слой многие-ко-многим и 1 слой многие-к-одному) с одним плотным слоем:

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

Сверточная нейронная сеть. Были использованы функции dX, dY. После некоторой настройки мы нашли оптимальную архитектуру со 113 006 обучаемыми параметрами:

Эта модель показала точность 96% на тестовом подмножестве и впоследствии была выбрана в качестве базовой модели для будущих исследований.

Чтение кластеризации паттернов

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

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

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

  1. Проекция развертки по горизонтальной оси
  2. Угол поворота горизонтальной оси
  3. Отличие от предыдущей саккады

Взгляните на визуализацию СЮЖЕТСЯ

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

Для решения этой проблемы активно использовались библиотеки Python Opencv и Tesseract. Дополнительно мы создали единый текстовый документ из видео.

По мере прокрутки вниз мы проведем вас через некоторые из основных этапов:

  • Выявлены статические кадры на видео (с пороговым отклонением между кадрами)
  • Извлеченные листы из рамы

  • Определена достопримечательность

Результаты и проблемы

Результатом нашего проекта стала модель машинного обучения, которая способна предсказать с точностью 97%, прочитал / не прочитал ли пользователь текст в течение 1,6 секунды записи. Некоторые из основных выводов курса исследования включают:

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

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