Разработка интеллектуальной системы нейроинтерфейса на базе детского технопарка «Кванториум» г. Орла | Статья в журнале «Молодой ученый»

Отправьте статью сегодня! Несмотря на коронавирус, электронный вариант журнала выйдет 13 июня.

Опубликовать статью в журнале

Авторы: ,

Рубрика: Технические науки

Опубликовано в Молодой учёный №12 (302) март 2020 г.

Дата публикации: 19.03.2020

Статья просмотрена: 101 раз

Библиографическое описание:

Кашуро, Л. А. Разработка интеллектуальной системы нейроинтерфейса на базе детского технопарка «Кванториум» г. Орла / Л. А. Кашуро, С. А. Походных. — Текст : непосредственный // Молодой ученый. — 2020. — № 12 (302). — С. 25-32. — URL: https://moluch.ru/archive/302/68222/ (дата обращения: 30.05.2020).



С развитием рынка Kit-наборов по электронике стало достаточно просто изготовить силами подростковой проектной группы нейроинтерфейс для управления какой-либо моделью (например, моделью игрушечного вертолета, квадрокоптера и т. д.).

Нейроинтерфейс [4] или «интерфейс мозг — компьютер» (ИМК, англ. BCI) — это устройство, распознающее сигналы мозга и передающие их специализированным компьютерным программам.

Изготовить одноканальный ИМК можно на основе– модуля TGAM1, модуля Bluetooth BT04-A (он же SPP-C) и 3.3В DC-DC преобразователя к элементу питания 1.5В (рис. 1) или же обойтись и без преобразователя –двумя элементами питания по 1.5В. Добавим к этому батарейный отсек для двух элементов питания и три «сухих» электрода. Экранированный референтный электрод и неэкранированный GND электрод разместим на ушных клипсах; а основной экранированный для снятия энцефалографических сигналов с поверхности головы вместе с остальными составными частями собираемого устройства — на креплении от лицевого защитного щитка.

Готовое устройство (рис.2) представляет собой одноканальный электроэнцефалограф и анализ процесса снятия энцефалограммы и документации к TGAM1 приводит нас к следующему выводу. Электрод воспринимает микротоки от популяций нейронов вместе с шумами и артефактами. По экранированному проводу эти микротоки поступают на аппаратную фильтрацию в микрочип TGAT1 на используемом модуле TGAM1 и затем раскладываются согласно дискретному преобразованию Фурье на составляющие гармоники указанных в таблице 1 частот. Далее радиоволнами передаются на процессор ПК.

Таблица 1

ЭЭГ-ритмы

Название ритма

Диапазон частот на выходе ASICTGAT1, Гц

Стандартный диапазон частот, Гц

Дельта (Delta)

0,5–2,75

0,5–3

Тета (Theta)

3,5–6,75

3–7

Альфа-низкий(Alpha 1)

7,5–9,25

7–10

Альфа–высокий (Alpha 2)

10–11,75

10–13

Бета-низкий (Beta 1)

13–16,75

13–17

Бета-высокий(Beta 2)

18–29,75

17–30

Гамма-низкий (Gamma 1)

31–39,75

31–40

Гамма-высокий (Gamma 2)

41–49,75

40–50

Для гармоники каждой отдельной частоты на экране монитора становится в какой-либо из бесплатных программных приложений к модулю TGAM1 NeuroSky (мы выбрали программу NeuroExperementer) доступно к наблюдению изменение амплитуды гармоники (альфа, бета, гамма, дельта) со временем (рис.5). Поскольку мозг, микрочип (т. к. нам неизвестна его конструкция), помехи и артефакты являются источниками случайности, то ни один из ээг-ритмов пользователя (альфа, бета и т. д.) не может быть выбран на роль управляющего параметра, поскольку все они являются, по сути, случайными функциями вида Ai(t), где А — амплитуда i-того ээг-ритма [1].

Значения этой случайной функции фиксируются 1 раз в секунду и доступны в каком-либо формате. В нашем случае это Rdate.txt (рисунок 6)

Рис. 1. Структурная схема одноканального ИМК

https://sun9-67.userapi.com/c857536/v857536648/1a1c84/22gqrr2z3jQ.jpg

Рис. 2. ИМК в сборе и включен, о чем сигнализирует синий светодиод-индикатор на модуле блютуз BT04-A

Производителем TGAM1 рекомендуются на роль управляющих параметры, характеризующие так называемые «состояния расслабления» и «состояния концентрации» пользователя eSenseMeditation и еSenseAttention хороши как формирующие задающее воздействие на управляемую модель, но не воздействие управляющее [2].

Почему же это происходит? eSenseMeditation наиболее контролируем пользователем при закрытых глазах. В случае eSenseAttention — при очень сфокусированном взгляде. Понятно, что управлять моделью, когда вы не видите ни ее ни окружающего почти невозможно. Если же взгляд сфокусирован, то тогда вы можете хорошо видеть модель, но окружающее будет «выпадать» из поля зрения.

Кроме того, у некоторых пользователей частоты «навязанных ритмов» смещены, то есть, при случайном попадании в глаза световых вспышек на частоте, например, 6 Гц в энцефалограмме пользователя может резко измениться амплитуда не той же частоты, а 10 Гц, что не является паталогией и достаточно широко распространено [3]. Однако ритм в диапазоне Alpha2, для данного модуля TGAM1 включающий все ритмы из полосы 10–11,75 Гц — это уже основная составляющая параметра eSenseMeditation — и поэтому происходит его сбой. Управление моделью теряется, если оно «связано» с параметром eSenseMeditation. Аналогичное происходит с параметром eSenseAttention.

Какое же решение в данном случае мы предлагаем для стабилизации управления? Один из вариантов — изменить алгоритмы для eSenseMeditation и/или eSenseAttention, что невозможно, так как эти алгоритмы являются торговыми марками NeuroSky и составляют коммерческую тайну, хотя результаты их выполнения передаются в другие приложения.

Проблему предлагается решить следующим образом. В выбранной нами программе NeEx мы можем получать данные не только о восьми ээг-ритмах, регистрируемых модулем TGAM1 и двух параметрах eSenseTM, но и также (раз в секунду) значения некой простейшей комбинации ритмов, например, среднего арифметического (возможно также принять к рассмотрению любое другое среднее) ритмов гамма1 и гамма2. Для модуля TGAM1 гамма1 занимает полосу частот 31–39,75Гц, а гамма2–41–49,75Гц. Имеется также возможность получить с ИМК запись сеанса в формате Rdata (рис.3), причем такую, что первая половина ее будет характеризовать этот новый сконструированный из нескольких случайных функций Аi(t) параметр для обычного состояния пользователя, когда он ходит, ест, ведет себя естественно с одетым на голову устройством; вторая же часть записи, столь же обширная по объему, будет производиться сразу после первой, по условному знаку, и будет характеризовать то состояние пользователя, когда он пытается осознанно «удерживать» сконструированный новый параметр вблизи некоторого уровня (рис. 4)

Рис. 3. Пример файла, полученного с ИМК в формате. Rdata

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

Рис. 4. Шестиминутная запись с ИМК, когда пользователь пытается осознанно «удерживать» сконструированный новый параметр вида (Gamma1+Gamma2)/2 вблизи уровня Y=0.3

То есть мы получим ИМК как информационно-измерительную подсистему ЭЭГ-сигналов и подсистему искусственного интеллекта [4], который будет действовать как некий оценивающий «тренер». Пользователь через визуализацию будет тренировать свое умение поддерживать новый параметр вблизи некоторого уровня, а «тренер» будет делать выводы о том, подходит ли новая комбинация ритмов на роль управляющего параметра или нет. В целом получаем интеллектуальную систему сбора, преобразования (информационно-измерительная подсистема), обработки и анализа (подсистема искусственного интеллекта) энцефалографических сигналов (рис.5)

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

Рис. 5. Упрощенная схема ИМК (BCI)

Здесь отметим особо R-пакет knitr. Благодаря ему в одном документе поддерживаются разные языки программирования, а еще объединяются команды анализа данных и содержательные блоки будущего отчета, то есть ребята из квантума смогут, обучаясь, расширить проект, сами его дополнить чанками из разных языков, более красочно дооформить визуализацию [5]

Код для первого алгоритма может быть следующим

require (“knitr”) #передаем заранее установленный пакет knitr в рабочее пространство.

half < — read.table("./half.Rdata.txt», header=T, na.strings=«NA») # импорт данных в формате Rdata.txt в рабочую среду R,

сlean <- function(df) { # исключаем столбцы бесполезные для обработки

df$class<- NULL

df$Blink<-NULL

df$time <- NULL

df<- df [complete.cases(df),] # функция выдает логический вектор, где TRUE означает полностью заполненную строку, а FALSE — содержащую пропуски.

df } #выводим фрейм обработанных данных на экран

half <- clean(half){ #

totPower <- function(df) {df$Delta+df$Theta+df$Alpha1+df$Alpha2+df$Beta1+df$Beta2+df$Gamma1

+df$Gamma2}# назначаем нормализующей функцией сумму всех ээг-ритмов

normal<- function(df) {

foo<- df

sums<- totPower(df)

foo<- sqrt(df/sums)

foo$Meditation <- df$Meditation/100.0 # нормализация eSenseMeditation

foo$Attention<-df$Attention/100.0# нормализация eSenseAttention

data.frame(df=foo, sums=sums) # добавления в фрейм данных }

normHalf<-normal(half)

head(normHalf, 2) #показать 2 строки нормализованных данных

qqnorm(normHalf$df.Gamma1) # тест на нормальное распределение для значений Gamma1

qqnorm(normHalf$df.Gamma2)# тест на нормальное распределение для Gamma2

normHalf$class<-“base”# добавим переменную класса, чтобы отличить базовые наблюдения от наблюдений «удерживания параметра»

lastHalf<- 1055:nrow(normHalf)# начинаем отслеживать данные со строки 1055

normHalf [lastHalf,] $class <- “med”

normHalf$class <- as.factor(normHalf$class)

normHalf$funct <- (normHalf$df.Gamma1 + normHalf$df.Gamma2)/2 # устанавливаем формулу для дериватиа

base <- normHalf [1:1054,]# разбиваем данные на базовую часть

med <- normHalf [lastHalf,]# оставшаяся часть

head(base,2)#выводим 2 первые строки полученного фрейма данных

baseAvg <- apply(base [,1:10],2,mean) # получаем средние значения первых 10 столбцов базовых данных

medAvg <- apply(med [,1:10,2,med) # а также для столбцов данных медитации

medAvg/baseAvg # получаем их соотношение

mean(base$funct>=F) #получаем % пройденных базовых данных

mean(mеd$funct>=F) #получаем % пройденных данных медитации

boxplot(funct ~ class, outline=F, data = normHalf) #получаем диаграмму-коробку для иллюстрации производительности

Приведем предлагаемый код для второй части. В ней используется R-пакет caret [6] -универсальный интерфейс для доступа к десяткам алгоритмов машинного обучения

normHalf$sums<- NULL# исключаем ненужные столбцы

normHalf$functs<- NULL

normHalf$df.Attention<- NULL

normHalf$df.Meditation

library (caret) # загрузка пакета caret

inTrain <- createDataPartition(y=normHalf$class, p=0.75, list=FALSE)# делим данные на тренировочные и тестовые наборы

trainX <- normHalf [inTrain,]# тренироваться будем на trainX из normHalf.

testX <- normHalf [-inTrain,]# тестовый набор

model <- train(class ~., method=«rf», data=trainX) # обучаем модель случайного леса, необходимо загрузить пакет randomForest

print(model)# вывод модели

predicts <- predict(model$finalModel, testX) # запуск с тестовыми данными

confusionMatrix (predicts, testX$class)# вычисляем перекрестную таблицу тестовых и тренируемых классов со связанной статистикой

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

Рис. 6. Алгоритм обработки и визуализации данных

Рис. 7. Алгоритм прогнозирования управляющего параметра (дериватива)

Литература:

  1. Вентцель Е. С., Овчаров Л. А., Теория случайных процессов и ее инженерные приложения.-Учебное пособие для втузов. — 2-е изд.,стер. — М.:Высш.шк.,2000. — 383с.
  2. Основные понятия и определения теории автоматического управления // Электронный университет КГЭУ — виртуальная образовательная среда. URL: https://lms.kgeu.ru/ (дата обращения: 16.03.2020).
  3. Функциональные пробы ЭЭГ, Ритмическая фотостимуляция // Научная библиотека CMI. URL: (дата обращения: 16.03.2020).Остроух А. В. Интеллектуальные системы. — Красноярск: — Красноярск: Научно-инновационный центр, 2015. — 110
  4. Использование других языков в RStudio при помощи knitr // Биостатистика и язык R. URL: http://biostat-r.blogspot.com/2015/09/rstudio-knitr.html (дата обращения: 16.03.2020).
  5. Пакет caret — универсальный интерфейс для доступа к десяткам алгоритмов машинного обучения // «R:анализ и визуализация данных». URL: https://r-analytics.blogspot.com/2015/06/caret.html (дата обращения: 16.03.2020).
Основные термины (генерируются автоматически): BCI, искусственный интеллект, элемент питания, управляющий параметр, параметр, язык программирования, SPP-C, GND, DC-DC, алгоритм.


Похожие статьи

DC-DC преобразователь на базе MP1484EN | Статья в журнале...

Данная статья носит обзорный характер и посвящена вопросу проектирования источника питания на базе известной микросхемы импульсного DCDC преобразователя MP1484EN, применяемой в источниках питания электронных устройств разного назначения.

Цифровой импульсный понижающий преобразователь напряжения...

Если отклонение параметров системы от расчетных будет увеличиваться, или система

ПИД-регулятор понижающего преобразователя напряжения. DC-DC преобразователь на

Ключевые слова: алгоритм, операторная схема замещения, преобразователь, источник питания...

Структура программного кода и практическое использование блока...

Часть 3 стандарта описывает требования к языкам программирования, всего таких языков

Для программирования ПЛК не требуется знание всех пяти языков МЭК 61131-3, но выбор

Как правило, описание принципа реализации и алгоритма работы программных компонентов...

Роевой интеллект и его наиболее распространённые методы...

Ключевые слова: искусственный интеллект, artificial intelligence, роевой интеллект, swarm intelligence, метод роя частиц, particle

Понятие роевого интеллекта все теснее переплетается с алгоритмами обработки и оптимизации больших количеств и потоков информации.

Реализация алгоритма шифрования RSA на языке...

Описание алгоритма. На языке программирования LabVIEW алгоритм RSA должен быть реализован как минимум из трех блоков

Заключение. В статье реализовывался алгоритм криптографического шифрования RSA. На графическом языке программирования LabVIEW...

Программирование двухфазного генератора с синусоидальными...

Целью данной работы является программирование студентами на лабораторном стенде ШИМ-сигналов, сдвинутых на 90°. Программирование производится в среде CooCox CoIDE. Для реализации этой цели необходимо решить следующие задачи: ‒ Формирование...

Программирование прямого и комплементарного ШИМ-сигналов...

Программирование прямого и комплементарного ШИМ-сигналов с настройкой «мертвого времени» на микроконтроллере STM32. Емельянов Александр Александрович, доцент; Бесклеткин Виктор Викторович, ассистент; Иванин Александр Юрьевич, студент...

Цифровые импульсные преобразователя напряжения под...

DC-DC преобразователь на базе MP1484EN | Статья в журнале... Установка выходного напряжения. Выходное напряжение формируется за счет обратной связи, реализуемой как делитель напряжения, вход которого подключен к выходу.

Программирование изменения скважности импульсов ШИМ на...

Порты ввода-вывода (GPIO) - это основной элемент любого микроконтроллера. Они используются для «общения» микроконтроллера с внешним миром.

Алгоритм набора кода в программе CoIDE состоит в следующем: Запускаем среду программирования CooCox CoIDE.

Похожие статьи

DC-DC преобразователь на базе MP1484EN | Статья в журнале...

Данная статья носит обзорный характер и посвящена вопросу проектирования источника питания на базе известной микросхемы импульсного DCDC преобразователя MP1484EN, применяемой в источниках питания электронных устройств разного назначения.

Цифровой импульсный понижающий преобразователь напряжения...

Если отклонение параметров системы от расчетных будет увеличиваться, или система

ПИД-регулятор понижающего преобразователя напряжения. DC-DC преобразователь на

Ключевые слова: алгоритм, операторная схема замещения, преобразователь, источник питания...

Структура программного кода и практическое использование блока...

Часть 3 стандарта описывает требования к языкам программирования, всего таких языков

Для программирования ПЛК не требуется знание всех пяти языков МЭК 61131-3, но выбор

Как правило, описание принципа реализации и алгоритма работы программных компонентов...

Роевой интеллект и его наиболее распространённые методы...

Ключевые слова: искусственный интеллект, artificial intelligence, роевой интеллект, swarm intelligence, метод роя частиц, particle

Понятие роевого интеллекта все теснее переплетается с алгоритмами обработки и оптимизации больших количеств и потоков информации.

Реализация алгоритма шифрования RSA на языке...

Описание алгоритма. На языке программирования LabVIEW алгоритм RSA должен быть реализован как минимум из трех блоков

Заключение. В статье реализовывался алгоритм криптографического шифрования RSA. На графическом языке программирования LabVIEW...

Программирование двухфазного генератора с синусоидальными...

Целью данной работы является программирование студентами на лабораторном стенде ШИМ-сигналов, сдвинутых на 90°. Программирование производится в среде CooCox CoIDE. Для реализации этой цели необходимо решить следующие задачи: ‒ Формирование...

Программирование прямого и комплементарного ШИМ-сигналов...

Программирование прямого и комплементарного ШИМ-сигналов с настройкой «мертвого времени» на микроконтроллере STM32. Емельянов Александр Александрович, доцент; Бесклеткин Виктор Викторович, ассистент; Иванин Александр Юрьевич, студент...

Цифровые импульсные преобразователя напряжения под...

DC-DC преобразователь на базе MP1484EN | Статья в журнале... Установка выходного напряжения. Выходное напряжение формируется за счет обратной связи, реализуемой как делитель напряжения, вход которого подключен к выходу.

Программирование изменения скважности импульсов ШИМ на...

Порты ввода-вывода (GPIO) - это основной элемент любого микроконтроллера. Они используются для «общения» микроконтроллера с внешним миром.

Алгоритм набора кода в программе CoIDE состоит в следующем: Запускаем среду программирования CooCox CoIDE.

Задать вопрос