Захват сигнала мышечной активности в систему машинного обучения

в 17:19, , рубрики: android, machine learning, TensorFlow, wearable, машинное обучение, Носимая электроника

Около года назад ко мне пришла идея создания открытого фреймворка для нейроинтерфейсов.


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

Сырой сигнал с датчика через Bluetooth поступает в Android/Android Things приложение.

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

Пример архитектуры сети на Keras:

model = Sequential()
# 8 каналов ЭМГ записаны по 8 раз каждый
model.add(Dense(36, activation='relu', input_dim=64))
model.add(Dense(20, activation='relu'))
model.add(Dropout(0.2))
model.add(Dense(16, activation='relu'))
# 5 записанных жестов
model.add(Dense(5, activation='softmax'))

sgd = SGD(lr=0.01, decay=1e-6, momentum=0.9, nesterov=True)
model.compile(loss='categorical_crossentropy', optimizer=sgd, metrics=['accuracy'])

https://www.kaggle.com/kyr7plus/naive-classifier

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

Использовать полученные классификаторы можно при помощи TFLite либо TF Serving

Код системы находится тут

В дальнейших планах:

  • Cоздание опен сорс многоканального датчика ЭМГ, работающего по USB
  • Эксперименты с машинным обучением для повышения надежности управления

Автор: kirillskiy

Источник

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