20 января 2020

Хакинг мозга. Обработка сигналов мыслительной активности с интерфейсом OpenBCI

Пишу, перевожу и иллюстрирую IT-статьи. На proglib написал 140 материалов. Увлекаюсь Python, вебом и Data Science. Открыт к диалогу – ссылки на соцсети и мессенджеры: https://matyushkin.github.io/links/ Если понравился стиль изложения, упорядоченный список публикаций — https://github.com/matyushkin/lessons
Если вы любите программировать и интересуетесь нейробиологией, эти стремления можно объединить. Рассказываем об open source разработке для снятия электроэнцефалограмм и примерах анализа реальных данных.
Хакинг мозга. Обработка сигналов мыслительной активности с интерфейсом OpenBCI

Электроэнцефалография

Для начала немного разберёмся в наиболее популярном неинвазивном методе регистрации активности мозга, называемом электроэнцефалографией (ЭЭГ). Прибором электроэнцефалографом записываются временны́е зависимости электрических потенциалов, снимаемых с электродов, закреплённых на различных участках поверхности головы.

Пример электроэнцефалограммы человека в состоянии покоя с открытыми глазами
Пример электроэнцефалограммы человека в состоянии покоя с открытыми глазами

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

Длительное время электроэнцефалографы были доступны лишь медикам и нейробиологам. Развитие 3D-печати, удешевления прототипирования и производства электронных плат, стремительный рост интернет-сообществ сделали возможным появление не только доступных средств для считывания ЭЭГ, но и целых платформ для создания нейроинтерфейсов.

Интерфейс мозг-компьютер (нейроинтерфейс)

OpenBCI – это платформа интерфейса мозг-компьютер (англ. brain-computer interface, BCI) с открытым исходным кодом. Платформа создана Джоэлем Мёрфи и Конором Руссоманно после успешной кампании на Kickstarter в конце 2013 г. Платы OpenBCI могут использоваться для измерения и регистрации электрической активности, создаваемой мозгом (ЭЭГ), мышцами (ЭМГ) и сердцем (ЭКГ), и совместимы со стандартными электродами ЭЭГ. Обработать сигналы можно с помощью сопровождающих open source программ, либо используя собственные решения.

Окно OpenBCI GUI в процессе работы
Окно OpenBCI GUI в процессе работы

На видео ниже Джоэл Мерфи из OpenBCI рассказывает о компании и последствиях демократизации в области интерфейсов мозг-компьютер (BCI). На Джоэле гарнитура OpenBCI Ultracortex, которая считывает его ЭЭГ и ЭМГ, позволяя ему контролировать презентацию посредством мыслей, без рук. В презентации Джоэл демонстрирует примеры приложений, созданных членами сообщества и рассказывает о потенциальных приложениях BCI в играх. Добровольцы из зала участвуют в живой демонстрации, используя интерфейс для управления роботизированной рукой.

OpenBCI предоставляет как отдельные компоненты (чипы от 4 до 16 каналов, шлемы, электроды), так и полные комплекты для снятия ЭЭГ.

Программное обеспечение. На GitHub-странице OpenBCI закреплено несколько репозиториев:

  • OpenBCI_GUI – кроссплатформенное приложение с графическим интерфейсом для Cyton и Ganglion. Протестировано на Mac, Windows и Ubuntu/Mint Linux.
  • brainflow – библиотека, предназначенная для получения, анализа и анализа ЭЭГ, ЭМГ, ЭКГ и других данных от биосенсоров.
  • OpenBCI_Python – программная библиотека Python, предназначенная для работы с оборудованием OpenBCI.
  • pyOpenBCI – драйвер Python для всех биосенсоров OpenBCI.

Зачем нужны BC-интерфейсы

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

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

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

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

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

Видеоигры. Контролировать можно не только устройства, но и объекты внутри игр. Считывание мозговой активности в составе VR-шлемов выглядит крайне интересной сферой для геймдева. Ведь управлять действиями персонажа виртуальной реальности тогда можно без использования дополнительных устройств. Это давало бы дополнительную степень свободы в разработке программного обеспечения.

Обзор sentdex о сборке устройства и обработке данных

Создатель популярных образовательных роликов о Python Харрисон Кинсли (sentdex) посвятил подробный ролик анбоксингу набора оборудования от OpenBCI для снятия ЭЭГ, сборке, а также процессу обработки данных.

Хотя OpenBCI предоставляет отличное GUI, Харрисон показал, как самостоятельно собирать и обрабатывать данные от устройства. При рассмотрении он отталкивался от интервалов частот ЭЭГ.

Ритмы головного мозга. Сигналы ЭЭГ имеют сложную структуру распределения по частотам. Для удобства категоризации выделяют диапазоны, обозначаемые греческими буквами. Каждый диапазон соответствует определённому ритму головного мозга:

  • α, альфа (7.5-12 Гц) – расслабленное состояние бодрствования или покой, альфа-волны возникают, когда мы закрываем глаза или начинаем расслабляться
  • β, бета (12-30 Гц) – обычное бодрствующее состояние, фокусирование внимания, наблюдение за происходящим, решение текущих проблем
  • γ, гамма (30-100 Гц) – решение задач, требующих максимальной сосредоточенности

Выделяют также медленные ритмы: дельта (0.1-4 Гц) и тета (4-7.5 Гц). Они регистрируются во время сна или при глубокой медитации.

Считывание данных с помощью Python. Таким образом, при анализе мыслительной активности обычно анализируются бета- и гамма-ритмы. Для считывания сырых данных Харрисон использовал библиотеку pyOpenBCI. Простейший пример считывания сырых данных на Python, приведённый в документации:

        from pyOpenBCI import OpenBCICyton

def print_raw(sample):
    print(sample.channels_data)

board = OpenBCICyton(port='COM5', daisy=False)

board.start_stream(print_raw)
    

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

Пример исследования нейронной активности P300

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

Регистрация паттерна. При регистрации с помощью ЭЭГ P300 проявляется как положительное отклонение потенциала с задержкой между стимулом и реакцией примерно 0.25-0.5 секунды. Сигнал, как правило, измеряется электродами, покрывающими теменную долю. Наличие паттерна, величина и временны́е характеристики сигнала используются в качестве метрик когнитивной функции в процессах принятия решений. Воспроизводимость сигнала обуславливает его выбор для психологических тестов как в клинике, так и в лаборатории.

Инструменты. В эксперименте исследователь использовал устройство Ganglion с 4 каналами, электроды которых были закреплены по обе стороны затылочной и височной областей. Для разработки и проведения эксперимента использовалась библиотека PsychoPy. Для соединения с чипом применялся Node.js, для обработки данных – скрипт на Python.

Стимулы и реакция. Дизайн эксперимента выглядел следующим образом. Два изображения-стимула с разными пространственными частотами (см. рисунок ниже), показывались в течение 0.5 с, затем следовал промежуточный интервал 3 с. В качестве контроля использовался чистый фон. Условие повторялось 50 раз.

Дизайн эксперимента по исследованию активности P300
Дизайн эксперимента по исследованию активности P300

Результаты. Полученная зависимость сигнала воспроизводилась во всех экспериментах – в интервале 0.2-0.5 с после показа стимула наблюдался явный сигнал ЭЭГ, соответствующий шаблону P300.

Нейронный отклик на трёх различных изображениях. Синяя линия – среднее значение нейронного отклика при просмотре решетчатых изображений с 3 полосами. Оранжевая линия – при просмотре изображений с 12 полосами. Зелёная линия – контрольное условие, показывался фон. Затенённая область соответствует стандартному отклонению.
Нейронный отклик на трёх различных изображениях. Синяя линия – среднее значение нейронного отклика при просмотре решетчатых изображений с 3 полосами. Оранжевая линия – при просмотре изображений с 12 полосами. Зелёная линия – контрольное условие, показывался фон. Затенённая область соответствует стандартному отклонению.

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

Заключение

Измерение и анализ ЭЭГ стали доступны не только для учёных и медиков, но и DIY-исследователей: каркасные элементы можно изготовить с помощью 3D-печати, а программное обеспечение имеет открытый исходный код. Результаты работы с нейроинтерфейсами могут использоваться не только для медицинских целей, но и для видеоигр, приложений виртуальной реальности и контроля процессов развития когнитивных способностей.

В комментариях к публикации вы можете предложить собственные идеи для применения нейроинтерфейсов. Интересны ли вам публикации по данной теме на сайте Библиотеки программиста?

МЕРОПРИЯТИЯ

Комментарии

ВАКАНСИИ

Добавить вакансию
DevOps
Санкт-Петербург, от 150000 RUB до 400000 RUB
Продуктовый аналитик в поддержку
по итогам собеседования

ЛУЧШИЕ СТАТЬИ ПО ТЕМЕ