Использование ИИ и машинного обучения для нейроинтерфейса
Для тех кто работал с нейроинтефейсами или же только планирует вкатиться в эту технологию уже понятно, что основной проблемой всей этой технологии является качественный и адекватный анализ сигналов и выделение признаков. Чаще всего это реализовано через большие приложения и такие работы являются скорее научно фундаментальными, чем прикладными и инженерными. Использовать такое в реальных проектах нереалистично.
Проблема анализа данных с нейроинтефейсов довольна простая и понятная - у каждого человека свои сигналы с мозга. Плюс-минус похожие, но в частностях есть различие. И это небольшое различие не дает построить четкий алгоритм реакции. У каждого человека спектр и пространственное распределение будет свое. И под каждого человека, под каждое действие алгоритм надо "подгонять". Или же обучать. И как раз через этот путь мы можем пойти.
Одним из самых перспективных, но и самых сложных вариантов анализа данных сейчас является использование ИИ или же более точно машинного обучения. Машинное обучение — это подраздел искусственного интеллекта, который использует техники для обучения компьютерных систем выполнять задачи. То есть, мы обучаем устройство, как распознавать определенные шаблоны или вести себя определенным образом, на основе представленных данных. Технология очень обширная и имеет кучу ответвлений
В качестве алгоритма машинного обучения будет использован алгоритм случайного леса (random forest на схеме выше). Подробнее про него можно прочитать https://proglib.io/p/mashinnoe-obuchenie-dlya-nachinayushchih-algoritm-sluchaynogo-lesa-random-forest-2021-08-12 . Описывать подробно смысла нет - это чистая математика.
Какая будет стоять задача? Есть просто то есть наборы данных. Каждый набор это определенный паттерн или же признак. Мысль о чем то например или же психореакция. Эти данные мы соберем и на основе них построим матмодель, которая в свою очередь уйдет в ардуино проект. Этот ардуино проект, не так важно даже что он будет делать на выходе, будет использовать обученную на человеке модель и будет очень точен. Идеальное решение для нейроуправления каким нибудь роботом!
Разработанный алгоритм написан для нейроинтерфейса MS-04D (с встроенным гироскопом). Возможно можно адаптировать и под что то другое. Черновой пример обучался на гироскопах с MS-04D, но какие именно данные не так и важно. Важен формат и их количество. Чем больше раз проведен опыт тем точнее. Обучить на 10-20-50 значениях не получится. В примере каждый опыт давал пачку по 750 значений.
1.Собираем данные в режиме протокола N-03. Данные ms-04d идут в последовательный порт через usb. Или же в блитуз. Данные имеют формат
Низкая альфа, высокая альфа, низкая бета, высокая бета, низкая гамма, средняя гамма, дельта, тетта (4 пробела) угловые скорость по X,Y,Z (4 пробела) линейные ускорения по X,Y,Z (4 пробела) температура
Данные все идут в сыром виде. Это и плюс и минус. Их можно проанализировать как угодно.
Записать файл данные с порта просто. Для этого есть специальная программа
http://arduino-kid.ru/blog/arduino-serial-port-kak-sokhranit-fayl
По этой инструкции я и собирал данные.
2.Перемещаем в папку Data и форматируем в нужный формат
Очень важно чтобы данные были собраны и отформатированы в следующий формат
файл csv. Должен называть 1,2 или же 3. Папка с файлами должна находиться вместе с специальным питоновым скриптом
3.Прогоняем через специальный питоновый скрипт. По выходу должен получится файл model.h . Это и есть наша обученная модель поведения.
4.Обученную модель перемещаем в папку с кодом для ардуино. Где скетч туда и перемещаем модель.
5.Изменяем готовый или пишем свой код ардуино с добавлением обученной модели
Добавляем в начале строчку #include "model.h"
Пример, напомню, обучен на гироскопах от интерфейса.
6.Используем код в проекте. Важно чтобы формат данных был такой же как и при обучении.
Всё готово. Теперь у нас есть проект для ардуино с машинными обучением и возможностью обучения от нейроинтефейса. Можно хоть лампочками мигать, хоть роботом управлять.
Все необходимые файлы тут:
https://disk.yandex.ru/d/OUuQsSBxwP2gHA
Спасибо за внимание. Подписываемся и всё такое.
https://vk.com/exomech
https://pikabu.ru/community/Bionics
Наш дискорд сервер
https://discord.gg/pMZN7TM
