Найти в Дзене

Распознаём шаги в VR. Нейросети в UE4. Часть 2 – отладка и исправление ошибок.

Первая часть статьи - тут Не знаю, чего именно я ожидал. Возможно, я ожидал, что на экране компьютера появится огромное окно с сообщением – «Ну и идиот же ты! Закрой эту программу немедленно и больше никогда не запускай!». Но никакого сообщения не появилось. Вместо него я увидел, как нейросеть обучается. Несколько минут (ведь нейросеть была очень простой) и, я понял – идея работает! #Нейросеть действительно может распознать сделал ли пользователь шаг или нет! Воодушевлённый успехом, я сразу же попытался продублировать полученную в Membrain нейросеть в виде Блупринт-скрипта в UE4. Данные обучения (эти странные цифры в параметрах отдельных нейронов и связях между ними) я переносил в Unreal Engine просто копируя их через клипбоард. После того, как я продублировал сеть в Unreal Engine, я прицепил к событию «Шаг» проигрывание звука шагов. По графику в Membrain было видно, что нейросеть на выходе не выдаёт точные значения 0 и 1, а лишь приближённые к ним. Эту особенность я учёл в соответств
Оглавление

Первая часть статьи - тут

Не знаю, чего именно я ожидал. Возможно, я ожидал, что на экране компьютера появится огромное окно с сообщением – «Ну и идиот же ты! Закрой эту программу немедленно и больше никогда не запускай!». Но никакого сообщения не появилось. Вместо него я увидел, как нейросеть обучается. Несколько минут (ведь нейросеть была очень простой) и, я понял – идея работает! #Нейросеть действительно может распознать сделал ли пользователь шаг или нет!

Обучение нейросети, размер средней ошибки
Обучение нейросети, размер средней ошибки

Воодушевлённый успехом, я сразу же попытался продублировать полученную в Membrain нейросеть в виде Блупринт-скрипта в UE4. Данные обучения (эти странные цифры в параметрах отдельных нейронов и связях между ними) я переносил в Unreal Engine просто копируя их через клипбоард.

Параметры отдельного нейрона, которые необходимо перенести в Unreal Engine. Обратите внимание на параметры Activation, Activation Threshold и тип Activation Function
Параметры отдельного нейрона, которые необходимо перенести в Unreal Engine. Обратите внимание на параметры Activation, Activation Threshold и тип Activation Function

После того, как я продублировал сеть в Unreal Engine, я прицепил к событию «Шаг» проигрывание звука шагов. По графику в Membrain было видно, что нейросеть на выходе не выдаёт точные значения 0 и 1, а лишь приближённые к ним. Эту особенность я учёл в соответствующем месте Блупринт-скрипта.

Итак, я собрал проект в UE, запустил его в #VR и…понял, что ничего не работает. Нейросеть выдавала на выходе какие-то данные, но это был просто шум.

Оказывается, я недостаточно хорошо понял базовую математику нейросети. Пришлось еще немного почитать как устроена нейросеть и провести несколько тестов на простейших нейронах. В процессе этих тестов я подавал одни и те же данные на вход нейросети в Membrain и на вход нейросети UE и сравнивал сигнал на выходе. Так я смог точно воспроизвести нужную мне математику нейрона в UE.

Простейший нейрон в UE4
Простейший нейрон в UE4
Логарифмическая передаточная функция в UE4
Логарифмическая передаточная функция в UE4

В итоге, после нескольких часов экспериментов я составил в #UnrealEngine новую нейросеть. Собрал VR проект, запустил его…и понял, что нейросеть работает. Я шагал – и слышал свои шаги в виртуальном пространстве! Это был незабываемый момент!

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

Я понял, что требуется доработка.

О том, что в результате получилось - читайте в третьей, финальной части статьи.

А если же вы увлекаетесь Unreal Engine, в перерыве между чтением можете заценить мои товары на площадке UE Marketplace.