воскресенье, 30 октября 2011 г.

Потенциалы по вызову или P300

Статья товарища по оружию из Индии(спасибо Михаилу Г. за ссылку) вдохновила меня серьёзно взяться за тему вызванных потенциалов. Что это такое? Ну это очень просто :)
Каждый раз когда мозгу предъявляют какой-нибудь новый стимул(изображение, звук и.т.п.), он развивает бурную деятельность по его анализу и распознаванию.
Эту активность можно обнаружить в ЭЭГ, измеренном с помощью Emotiv EPOC.

К сожалению, амплитуда таких колебаний редко выше 5 мкВ, при общем уровне "шумов" около 50 мкВ. Но есть способы, которые позволяют обнаружить сигнал и в таких случаях.

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

И все было бы классно и мы бы на верно строили города на Марсе, если бы не две вещи:
1) Шум был бы действительно распределен нормально. Что в нашем мире источников электронных помех скорее исключение чем правило. В нашем случае под шумом мы в том числе подразумеваем сигналы от других отделов мозга, которые не смотря на наши исследования, занимаются своими делами.
2) Зверь по имени - ДЖИТТЕР, у нас его еще иногда называют фазовый шум.

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

Как бороться с электромагнитным шумом в принципе понятно. Отключить все электрические приборы(включая компьютер) и спрятаться в клетку Фарадея.

А вот источников джиттера, в нашем случае много.
1) Наш мозг - не реагирует он всегда с одинаковой скоростью.
2) USB-интерфейс - передача данных идет быстро, но не равномерно.
3) Операционная система. Иногда она может призадуматься над вечным.

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



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

Решил и Я попробовать повторить подвиг :). Пакет OpenVibe в одном из своих примеров предоставляет нам опробовать возможности встроенного детектора P300. Кстати на своем сайте они хвалятся что их детектор лучший в своем классе. Проверим.

Кстати почему эти потенциалы называют P300, на самом деле так называется только часть отклика мозга на стимул, максимум амплитуды которого возникает примерно через 300 мс после подачи стимула. Причем знак амплитуды при этом отрицательный.

Итак запускаем OpenVibe Designer. К счастью через 3 дня с момента описания моих мучений по компиляции OpenVibe с драйвером Emotiv. INRIA выпустили свежую версию OpenVibe 0.12.0 которая уже имеет встроенную поддержку Emotiv EPOC, без плясок с бубном. Качайте и устанавливайте без всяких проблем.

Лезем в папку share/openvibe-scenarios/bci/p300-speller-xDAWN и открываем файл
p300-speller-0-signal-monitoring.xml
Это файл проверки настройки нашего оборудования, если Вы все правильно сделали ( А именно запустили openvibe acquision server и настроили его на сбор данных с Emotiv EPOC) то нажав кнопочку Play в появившемся окне Вы увидите бегущие линии, сигналов ЭЭГ. Создатели советуют поморгать и показать компьютеру язык, для проверки :) Если все ОК. Жмем кнопочку Stop и переходим к следующему файлу.

p300-speller-1-acquisition.xml
В данном файле Вам предлагается записать ЭЭГ с помощью которого которого OpenVibe будет тренировать детектор P300. Просто жмем Play и когда появится окно с матрицей из букв жмем кнопку 'A' на клавиатуре. Буква на которой надо будет сфокусировать взгляд, будет подсвечиваться синим цветом. Будет предложено ввести 10 букв повторенных 12 раз. На всю запись у меня ушло не более 5 минут. Закончили - жмем Stop и едем дальше.

p300-speller-2-train-xDAWN.xml
Собственно на этом и этапе и начинается первая стадия тренировки. К счастью, авторы программы избавили нас от длительного ожидания и повторного гипнотизирования матрицы 6х6 просто два раза щелкаем в квадратик "Generic stream reader" и выбираем файл записанный на предыдущем этапе. Он располагается в папке /share/openvibe-scenarios/signals/ и будет называться p300-speller-xdawn-1-[ваша дата и время].ov И еще один приятный сюрприз, нам не надо ждать 5 минут. Достаточно нажать кнопку Fast и данные будут прокручены программой на максимально возможной для вашего компьютера скорости. По завершению тренировки программа сама приостановит воспроизведение. - Удобно, чёрт возьми :) В окошке консоли (или окне с отладочной информацией) вылезет надпись.
xDAWN Spatial filter trained successfully.
Значит мы все сделали правильно :) Жмем Stop и переходим к следующему этапу.
Отступление для продвинутых мозгонавтов :) На этом этапе программа просчитывает весовые коэффициенты для каждого из 14-ти каналов EPOC-а. Определяя какой канал оказывает наибольший вклад в вызванный потенциал, а какой только мешает. В итоге из 14-каналов OpenVibe получает 3 , значение которых дальше передает на вход классификатора.По идее большим весом должны в нашем случае обладать каналы расположенные в визуальной и речевой зоне человека. Подробнее о методе расчета весовых потенциалов в OpenVibe можно прочитать тут.
p300-speller-3-train-classifier.xml
Второй этап тренировки направлен на обучение системы различению строк и столбцов. Что касается наших действий , то он ничем не отличается от предыдущего этапа. Единственное тут надо следить и по окончанию обучения нажать кнопку Stop. Если вы хотите чтобы происходила самостоятельная остановка скопируйте из предыдущего файла блок Player Control и подключите его снизу к блоку Classifier Trainer. OpenVibe призадумается и выдаст в консоль - портянку которая будет заканчиваться строкой.
Classifier performance on whole set is 72.5694% (sigma = 5.0053%)
Если у Вас это число получилось меньше 70% то распознавать можно и не пытаться, повторяйте этап 1. Лучше чем на 73% обучить классификатор у меня пока не получилось.

p300-speller-4-online.xml
Итак Вы сделали ЭТО - осилили этап обучения :) Поздравляю компьютер готов читать Ваши мысли ;) Поехали. Собственно Вам опять предлагается фиксировать взгляд на буквах и цифрах, распознанные буквы будут появляться во второй строчке внизу. Если программа угадала символ, он будет подсвечен в строке зеленым, если угадала строку или столбец, то оранжевым, не угадала - черным. Конечно не обязательно это делать на тех же буквах, что подсвечиваются в матрице синим фоном, просто если Вы будете выбирать эти буквы, то записанный в ходе работы файл можно попробовать опять использовать для обучения, если Вас не удовлетворит первый результат :) А что это будет так - к гадалке не ходи :)

Зачем нужен файл p300-speller-5-replay.xml Я думаю Вы догадались. Проигрывать повторно результаты для проверки качества обучения детектора.

Вот и все. Лучший результат который у меня получился это из 10 букв:
6 - угадано правильно,
2 - угадан столбец или строка,
2 - мимо.

Если разочаровал, кого-то кто хотел написать свой супер-детектор (а таких судя по форумам - почти каждый 2-ой), не спешите топиться :)
Работы еще вагон и маленькая тележка :)

1) Для начала хорошо было бы перевести матрицу на русский язык - возможно результаты улучшаться :) и появится реальная польза для русскоязычных пользователей.
2) Попробовать сократить время набора слов, хотя бы подключив к системе банальную авто-подстановку букв :)
Фирма IntendiX в своем рекламном ролике говорит что поставили мировой рекорд - 0,8 сек на символ.

Это очень круто :) Фактически ребята ловят букву с первой попытки. :)
Хотя на CEBIT 2011 доброволец добился печати 3-х букв в минуту.
К примеру у OpenVibe уходит на один символ 30 секунд.
3) Ну и надо снижать влияние на алгоритм перечисленных в начале поста факторов. Возможно производить фильтрацию сигнала с помощью вейвлет-преобразования.

P.S. Специальное пы.сы. для журналистов и неофитов. Ребята пожалуйста не вводите в заблуждение фразами "компьютер читает мысли человека", это конечно очень "горячий материал", но описанный метод ввода почти ничего общего с чтением мыслей не имеет. До реального чтения - технологии еще надо пилить и пилить. Даже после длительной тренировки человек не будет печатать таким способом быстрее чем 1 символ в секунду (таков предел).

ССЫЛКИ:
1) "Вызванные потенциалы" - WikiPedia
2) "P300 and Emotiv EPOC: Does Emotiv EPOC capture real EEG?" by Hiran Ekanayake
3) xDAWN Algorithm to Enhance Evoked Potentials: Application to Brain Computer Interface - Bertrand Rivet, Antoine Souloumiac, Virginie Attina and Guillaume Gibert
4) EEG sensor selection by sparse spatial filtering in P300 speller brain-computer interface
5) IntendiX на выставке CEBIT 2011

12 комментариев:

  1. Удалось недавно попробовать программулину от intendiX, софт действительно классный.
    Все-таки правильнее называть, P300 как один из компонентов вызванных потенциалов и амплитуда имеет положительный знак, просто принято так изображать в перевернутом виде. Или ты это и имел ввиду?
    Если интересно почитать про ВП, то советую найти книжку "Ристо Наатанен 1992. Внимание и функции мозга. Издательство Московского университета. 1998"

    ОтветитьУдалить
  2. Да с полярностью сигнала надо мне разобраться получше. Смотрю по статьям при усреднении вылазит то положительный то отрицательный пик. Почему непонятно. Спасибо за книжку попробую найти.

    ОтветитьУдалить
  3. Не знаю почему, но в западных статьях принято изображать негативные компоненты пиком вверх и позитивные вниз, в наших же наоборот.

    ОтветитьУдалить
  4. Ну так это же обычный ИМК.
    Вы вроде как зарегистрированы на форуме neuroscience.ru. Так там есть целый раздел, посвещенный этому вопросу (так же там говориться и о ИМК на волне П300, ссылку на который Вы привели). В частности, создание ИМК в России обсуждается здесь. Ну а использование Epoc'a для ИМК в российских реалиях обсуждалось, например, здесь.

    ОтветитьУдалить
  5. Забыл добавить. ИМК на волне П300 в частности исследуется в Москве здесь. Правда сейчас там что-то страница "лежит". Но можете сами погуглить по словам "Каплан", "Московский ИМК", "Шишкин" и т.д.

    ОтветитьУдалить
  6. Спасибо за ссылки. Обязательно посмотрю. Очень приятно осознавать что подобными вопросами в России кто-то еще занимается. Печально только что о результатах их деятельности можно судить только по сообщениям на форуме и газетам где "Российские ученые произвели сенсационное открытие они научили компьютер читать мысли человека. Более того компьютер не только их читает, но потом еще бежит в киоск за пивом и сигаретами". ;)

    Ну куда там OpenViBe c его открытым кодом до ... эх ладно... Кстати фотка по ссылке только у меня производит впечатление - постановочной?

    У производителя есть четкая инструкция - F7,F8 ставим на виски, AF3,AF4 - на три пальца выше бровей. Референсный контакт - четко за ухом. А тут простите как кепка все на затылок задвинуто :)
    Тем не менее движуха есть и это радует. :)

    ОтветитьУдалить
  7. Отвечу по порядку.
    Про российских ученых. Думаю, что если Вы о чем-то не в курсе, то это никоим образом не означает, что этого нет. И в области ИМК российские ученные не только пишут на форумах и в газетах, но и в нормальных журналах. Для примера, вот пару публикаций россиян о ИМК в журналах с импакт-фактором.
    Shishkin SL, Ganin IP, Basyul IA, Zhigalov AY, Kaplan AY. N1 wave in the P300 BCI is not sensitive to the physical characteristics of stimuli. J Integr Neurosci. 2009 Dec;8(4):471-85.
    Shishkin SL, Ganin IP, Kaplan AY. Event-related potentials in a moving matrix modification of the P300 brain-computer interface paradigm. Neurosci Lett. 2011 Jun 1;496(2):95-9
    Bobrov P, Frolov A, Cantor C, Fedulova I, Bakhnyan M, Zhavoronkov A. (2011) Brain-Computer Interface Based on Generation of Visual Images. PLoS ONE 6(6): e20674
    Теперь про OpenViBE. Здесь в первую очередь играет роль финансирование. Если я не ошибаясь, то INRIA под этот проект получило несколько грантов (французских и европейских). Другая система ИМК (BCI2000), находящаяся тоже в отрытом доступе, так же была разработана и до сих пор поддержвается несколькими американскими грантами. Так что как всегда весь вопрос в финансировании. Кто знает, было бы в России достойное финасирование, то и здесь бы могла появиться система ИМК открытого доступа.
    Ну и про положение электродов. Дело в том, что с тем же Epoc’ом сложно (а во многих случаях и совсем невозможно) добиться точного расположения всех электродов. Хотя бы потому, что у всех форма черепа разная. Поэтому очень сложно попасть всеми электродами в позициии, прописанные системой 10-20. Это, кстати, одно из ограничений, которое не позволяет использовать Epoc в серьезных научных исследованиях, где необходимо точное сравнение сигналов с многих испытуемых. Поэтому ему пока только светит (если вообще светит) будущее в игровом мире. Но здесь это не главное. Главное то, что положение электродов в Epoc’е не позволяет вести запись ЭЭГ со всех необходимых областей мозга. Например, тот же потенциал П300 наиболее четко выражен в Pz. Но в Epoc’e такого положения и близко нет. Понятно, что можно и, например, сердцебиение записывать с, скажем, попы. Но все-таки лучше быть ближе к источнику. Поэтому лучше сдвинуть электроды так, чтобы они попали в нужную область. Именно поэтому и «шапку» Epoc могли сдвинуть так, чтобы электроды покрыли нужный регион. Это не позволить проводит сравнение записей с различных испытуемых (из-за неточного положения электродов), но зато увеличит качество ИМК за счет более четкого сигнала.

    ОтветитьУдалить
  8. Сергей, спасибо за подробный и развернутый ответ. Конечно сил все перечитать у меня пока нет ;) Тем более что - Я в теме новичок :)

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

    Не буду защищать Emotiv касательно расположения электродов - скорее согласен с Вами. Более того считаю что шлем еще сыроват и требует доработки, в том числе и в плане выбора места электродов. Хотя насколько Я понимаю мозг у всех не одинаковы, а зоны высшей нервной деятельности могут в каком-то пределе "гулять".

    В любом случае. Еще раз спасибо за комментарий.

    ОтветитьУдалить
  9. Здравствуйте!
    У меня тоже появился интерес к обсуждаемой теме. Только из любопытсва приобрел пользовательскую версию Emotiv. Попытки соединить OpenVibe с Emotiv не увенчались успехом. Почитав коментарии и ссылки подозреваю, что это в принципе сделать не возможно. Возможны ли варианты? Моя цель - попытаться выявить ведущую причину в клинической картине того или иного психического растройства для повышения эффективности терапии.

    ОтветитьУдалить
    Ответы
    1. Пользовательскую версию не подключить, нужен пакет не ниже Research. Политика Emotiv заставить исследователей платить больше денег. Видимо считается что за удовольствие надо платить :)

      Насколько Я знаю железо одно. Советую поискать в google по словосочетанию "emotiv testbench" и опробовать найденный софт. Если заработает то можно в openvibe попробовать указать к нему путь.

      Но мне кажется для Вашей задачи лучше подойдет WinEEG(платная) или eMagine(30-дневная пробная версия). Вы пишите в Testbench EDF-файл , а затем анализируете в одной из этих программ. Эти программы гораздо лучше позволяют обнаруживать очаги эпилептической активности (если такие есть). Если нужна более подробная консультация регистрируйтесь в группе там чем сможем поможем :)

      Удалить
    2. Гуглить emokit. На гитхабе есть и модуль подключения его к OpenVIBE. В официальной поставке его, конечно, никогда не будет (и, соотвутственно, собирать придется самому), но штука рабочая.

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

      Удалить
    3. У меня OpenVIBE подключился к 299-ти долларовому через edk.dll и edk_utils.dll из дистрибутива https://www.emotiv.com/store/apps/applications/119/1446

      Удалить