Эксперименты с нейроинтерфейсами на JavaScript

в 9:00, , рубрики: javascript, Блог компании RUVDS.com, мозг, нейроинтерфейс, разработка, Разработка веб-сайтов

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

Эксперименты с нейроинтерфейсами на JavaScript - 1

Предыстория

У меня нет базового компьютерного образования (я училась рекламе и маркетингу). Программирование я осваивала на курсах в General Assembly.

Когда я искала первую работу, я начала экспериментировать с JavaScript и с разными устройствами. В частности, первым моим проектом была организация управления роботизированным мячом Sphero посредством движения руки с помощью Leap Motion.

Эксперименты с нейроинтерфейсами на JavaScript - 2

Мяч Sphero, управляемый движениями руки с помощью технологии Leap Motion

Это был мой первый опыт использования JavaScript для управления чем-либо, находящимся за пределами браузера. Меня это сразу же, что называется, «зацепило».

С тех пор я потратила массу времени на работу над интерактивными проектами. Каждый раз, берясь за новый проект, я пыталась находить для себя всё более сложные задачи. Так я постоянно развивалась и узнавала что-то новое.

После экспериментов с различными устройствами, в поисках очередной интересной задачи, я наткнулась на датчики мозговой активности от компании NeuroSky.

Первые эксперименты с нейрогарнитурой

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

Эксперименты с нейроинтерфейсами на JavaScript - 3

Нейрогарнитура NeuroSky

Я тогда не знала, хватит ли моей квалификации для того, чтобы хоть что-то для подобного устройства написать (я в тот момент только окончила курсы по программированию), потому решила выбрать что-нибудь подешевле, чтобы, в том случае, если задача окажется для меня непомерно сложной, не тратить впустую слишком много денег. К счастью, для работы с гарнитурой уже был создан JavaScript-фреймворк, поэтому приступить к экспериментам оказалось довольно просто. В частности, я использовала оценку уровня моего внимания для управления мячом Sphero и квадрокоптером Parrot AR.Drone.

В ходе экспериментов я быстро поняла, что эта нейрогарнитура не особенно точна. У неё всего три датчика, поэтому она позволяет получать довольно-таки приблизительные данные о мозговой активности. Устройство даёт доступ к необработанным данным от каждого сенсора, что позволяет, например, визуализировать эти данные. Но то, что у гарнитуры всего три электрода, не позволяет сделать на основе получаемых с неё данных какие-то серьёзные выводы о том, что происходит в человеческом мозге.

Когда я решила поискать другие устройства для считывания показателей активности мозга, я нашла нейрогарнитуру Emotiv Epoc. У меня возникло такое ощущение, что эта штука обладает более серьёзными возможностями в сравнении с гарнитурой от NeuroSky, поэтому я решила её купить чтобы продолжить свои эксперименты.

Прежде чем я расскажу о том, как работает Emotiv Epoc, предлагаю в двух словах поговорить о том, как устроен человеческий мозг.

Как работает мозг

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

Эксперименты с нейроинтерфейсами на JavaScript - 4

Различные части мозга (источник — macmillan.org.uk)

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

Эксперименты с нейроинтерфейсами на JavaScript - 5

Анатомия нейрона

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

Для наблюдения за активностью мозга могут быть использованы и другие технологии, но их применение подразумевает хирургическое вмешательство. В частности, речь идёт об электрокортикографии — при таком подходе электроды накладываются непосредственно на кору головного мозга.

Теперь, когда мы выяснили, что мозг, в ходе работы, генерирует электрические сигналы, которые можно считывать, поговорим о гарнитуре Emotiv Epoc.

Как работает нейрогарнитура

Компания Emotiv производит несколько видов нейрогарнитур:

  • Emotiv Insight
  • Emotiv Epoc Flex Kit
  • Emotiv Epoc

У гарнитуры Epoc имеется 14 датчиков (их ещё называют «каналами»), расположенных в разных местах головы.

На следующем рисунке, слева, показана схема размещения электродов 10-20, рекомендованная Международной федерацией электроэнцефалографии и клинической нейрофизиологии. Каждому электроду соответствует определённый участок мозга. Применение системы 10-20 позволяет следовать определённому стандарту при создании различных устройств и при выполнении научных исследований мозга.
На рисунке справа показана схема размещения электродов гарнитуры Emotiv Epoc. Для сравнения её с системой 10-20 используется выделение зелёным и оранжевым цветом.

Эксперименты с нейроинтерфейсами на JavaScript - 6

Сравнение международной системы размещения электродов 10-20 и гарнитуры Emotiv Epoc

14 каналов Epoc — это не так уж и много, но электроды размещены по коже головы достаточно равномерно. Это позволяет надеяться на то, что с помощью Epoc можно получать достаточно точные сведения об активности мозга.

Гарнитура снимает показания датчиков с частотой 2048 образцов в секунду (SPS). При этом пользователю доступна частота дискретизации сигнала в 128 или 256 SPS. Устройство способно улавливать мозговые волны частотой от 0.16 до 43 Гц. Существуют различные ритмы головного мозга, их краткая характеристика приведена на следующем рисунке.

Эксперименты с нейроинтерфейсами на JavaScript - 7

Типы мозговых волн

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

Разобравшись с принципами, лежащими в основе электроэнцефалографии, поговорим о возможностях Emotiv Epoc и соответствующего ПО.

Возможности Emotiv Epoc

Программное обеспечение компании Emotiv не является опенсорсным, для доступа к сырому сигналу датчиков требуется специальная лицензия. В обычных условиях при работе с Emotiv Epoc доступны следующие возможности:

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

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

Если вы хотите разрабатывать собственные программы для Emotiv Epoc, вы можете воспользоваться API Cortex и соответствующим SDK (его поддержка прекращена после выхода версии 3.5). Если же вы хотите использовать JavaScript — можете взглянуть на мою разработку — библиотеку Epoc.js.

Библиотека Epoc.js

Epoc.js — это фреймворк, предназначенный для организации взаимодействия с устройствами Emotiv Epoc и Insight средствами JavaScript. Этот фреймворк даёт разработчику доступ к вышеописанным возможностям систем от Emotiv и позволяет взаимодействовать с эмулятором.
Вот простейший проект, основанный на Epoc.js:

const epoc = require('epocjs')();
epoc.connectToLiveData('path/to/profile/file', function(event){
  var action = event.blink === 1 ? 'blinking' : 'not blinking';
  console.log(action);
});

В этом примере кода мы подключаем модуль Node.js epocjs и создаём экземпляр соответствующего объекта. Затем мы вызываем метод connectToLiveData этого объекта, передавая ему путь к файлу с данными пользователя, полученными после обучения системы, и функцию обратного вызова. Этой функции передаётся объект события, содержащий различные доступные для отслеживания свойства. Например, если мы хотим, чтобы программа реагировала на моргание, используется свойство event.blink.

Каждое подобное свойство может быть установлено либо в 0, либо в 1. Единица в значении свойства означает, что система зафиксировала соответствующее событие. Полный список этих свойств можно найти здесь.

Описываемая библиотека создана с использованием SDK Emotiv C++, Node.js и трёх модулей для Node.js: Node-gyp, Bindings и Nan. При её разработке применялся подход, который теперь можно считать устаревшим. Сейчас актуально использование N-API.

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

Прототипы

▍1. Клавиатура

Вот как выглядит клавиатура, которой управляют движениями глаз.

Эксперименты с нейроинтерфейсами на JavaScript - 8

Прототип клавиатуры, управляемой движениями глаз

Это был мой первый проект, созданный с использованием Emotiv Epoc. Мне интересно было узнать — можно ли с использованием нейрогарнитуры создать простой интерфейс, который позволяет человеку взаимодействовать с компьютером с помощью движений глаз. Например, при переводе взгляда вправо или влево на клавиатуре подсвечиваются соответствующие клавиши. Для того чтобы «нажать» на выделенную клавишу, нужно моргнуть. Соответствующая буква появится в поле, расположенном выше клавиатуры.

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

▍2. WebVR

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

Эксперименты с нейроинтерфейсами на JavaScript - 9

Веб-интерфейс, управляемый мыслями

Здесь, для создания простого трёхмерного окружения, я использовала библиотеку Three.js, для распознавания мысленных команд применена библиотека Epoc.js, а для отправки данных с сервера на клиент использовались веб-сокеты.

▍3. IoT

Приступая к третьему проекту, я хотела исследовать возможности по управлению реальными устройствами с помощью мысленных команд. IoT-разработкой с использованием JavaScript я интересуюсь уже довольно давно, поэтому мне интересно было узнать о том, что получится, если совместить квадрокоптер Parrot и нейрогарнитуру.

Эксперименты с нейроинтерфейсами на JavaScript - 10

Квадрокоптер

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

Ограничения нейроинтерфейсов

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

▍Необходимость в обучении

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

▍Задержки

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

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

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

▍Неинвазивные технологии и точность показателей

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

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

▍Принятие обществом

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

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

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

Возможности нейроинтерфейсов

Если принять во внимание текущее состояние технологий и подумать о том, какими они могут стать в будущем, можно найти несколько вариантов их применения.

▍Помощь людям с ограниченными возможностями

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

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

▍Ментальные практики

Ментальные практики, в частности — медитация — это та сфера применения нейрогарнитур, которая уже в наши дни привлекает к себе определённое внимание (например, гарнитура Muse помогает медитировать). Речь идёт о помощи тому, кто хочет помедитировать, сделать всё правильно.

▍Помощь в решении проблем со здоровьем

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

▍Повышение производительности труда

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

▍Искусство

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

Комбинация датчиков электрической активности мозга с другими датчиками

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

Главная проблема тут заключается в том, что всё это может привести к тому, что люди окажутся буквально обвешанными различными датчиками.

Эксперименты с нейроинтерфейсами на JavaScript - 11

Не слишком ли много тут датчиков? (источник иллюстрации — cognionics.net)

Пожалуй, никто не станет постоянно носить датчики, изображённые на предыдущем рисунке.

OpenBCI

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

Эксперименты с нейроинтерфейсами на JavaScript - 12

OpenBCI

Итоги

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

Уважаемые читатели! Планируете ли вы заняться экспериментами с нейрогарнитурами?

Эксперименты с нейроинтерфейсами на JavaScript - 13

Автор: ru_vds

Источник


* - обязательные к заполнению поля