Praveen P R Ответов: 0

Идентификация событий вождения по данным GPS и акселерометра


У меня есть устройство IOT, которое каждую секунду отправляет следующую информацию из автомобиля, который находится за рулем:

-Отметка времени
- GPS координаты (широта/долгота)>
- GPS-пеленг или Азимут
- Скорость автомобиля от GPS
- Показания акселерометра по осям X, Y и Z.
Из этой информации я должен определить следующие события вождения:

-Тормозной
-Ускорение
-Левый поворот
-Правый поворот

Я пытаюсь достичь этого с помощью нейронной сети из библиотеки ENCOG .net и пытаюсь найти ответы на следующие вопросы:
1. Как я могу отформатировать входные данные так, чтобы они могли быть поданы в нейронную сеть? У меня есть матрица информации с 8 столбцами и переменным количеством строк:

Например: - правый поворот может быть матрицей, как показано ниже

Timestamp  Lattitude  Longitude   Azimuth     Speed  Xacc        Yacc        Zacc
4:57:08 PM 39.937185  -74.9530667 305.3293762 0     -0.904202607 0.33408456  0.105773433
4:57:09 PM 39.93719   -74.95307   303.1105042 0     -0.89096231  0.37406743  0.091855986
4:57:10 PM 39.9372067 -74.9530783 299.4731445 9     -0.880157497 0.395575262 0.058842602

Точно так же левый поворот может быть

Timestamp  Lattitude  Longitude   Azimuth     Speed Xacc         Yacc        Zacc
4:57:26 PM 39.9377    -74.954015  257.7362976 18    -0.932709113 0.267096326 -0.024819622
4:57:27 PM 39.937715  -74.9540733 247.346344  18    -0.94067372  0.271379559 -0.054581382
4:57:28 PM 39.937715  -74.9541317 225.6322174 17    -0.923718111 0.293954308 -0.081829668
4:57:29 PM 39.937695  -74.9541917 213.6928406 20    -0.911598183 0.317324907 -0.128199049
4:57:30 PM 39.93766   -74.9542433 208.975174  24    -0.90052994  0.351010895 -0.121179532
4:57:31 PM 39.9376017 -74.9542833 205.9306641 28    -0.891561502 0.373537211 -0.078259489
4:57:32 PM 39.9375367 -74.9543267 206.532135  31    -0.891412538 0.389423688 -0.047274249

2. Какие нейросетевые паттерны и типологии могут быть применены для ее решения?

3. какой алгоритм(ы) обучения может быть использован?


Я был бы признателен, если бы кто-нибудь мог пролить свет на подход к этой проблеме.

Что я уже пробовал:

Вот как я пытаюсь решить эту проблему.

Сократите входную матрицу, чтобы она содержала только ту информацию, которая имеет отношение к идентификации событий. Таким образом, следующие столбцы отбрасываются из входных данных
-Отметка времени
-Широта
- Долгота и
-Скорость
2. уменьшенный входной сигнал будет выглядеть следующим образом

Az      Xacc        Yacc
257.736 -0.93270911 0.267096326
247.346 -0.94067372 0.271379559
225.632 -0.92371811 0.293954308
213.693 -0.91159818 0.317324907
208.975 -0.90052994 0.351010895
205.931 -0.8915615 0.373537211

3. Интерполируйте / экстраполируйте входные данные, чтобы иметь не менее 10 экземпляров (строк)

4. сгладьте 10 строк до вектора, содержащего 30 значений, как показано ниже

Az1     Xacc1       Yacc1       Az2     Xacc2       Yacc2       Az.. Xacc.. Yacc..   Az10       Xacc10      Yacc10      Target
257.736 -0.93270911 0.267096326 247.346 -0.94067372 0.271379559 ..   ..     ..       206.532    -0.89141254 0.389423688 Left

5. Используйте прямой паттерн, такой как многослойный персептрон, с

-30 входных нейронов
-2 скрытых слоев
-4 выходных нейрона
- Функция активации: гиперболический тангенс
6. тренировка с использованием упругого распространения

Пожалуйста, не стесняйтесь, дайте мне знать ваши мысли по этому решению.

Nick_3141592654

Я так понимаю, это проект Мэн или работа для крупного клиента? Вы, конечно, не ныряете в использование нейронной сети таким образом, если нет веской причины. (Желание поиграть с нейронной сетью было бы хорошей причиной, если бы у вас было несколько свободных месяцев).

Серьезно, вы рассматривали гораздо более простой подход? Данные, которые вы собираете, можно легко пропустить через набор простых рекурсивных фильтров первого порядка (Yn+1 = Yn * Alpha + Xn * Beta, где Xn - одно из ваших необработанных измерений, а Yn-отфильтрованное значение; Alpha + Beta = 1, и по мере приближения Alpha к 1.0 фильтр делает больше сглаживания).

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

например, если средняя скорость >< что-то & gt; Мы едем.

Труднее всего справиться с показаниями акселерометра, но если предположить, что ваше GPS-устройство жестко прикреплено к автомобилю, вы справитесь с этим. Такая привязанность имеет решающее значение, поскольку это гарантирует, что X, Y и Z имеют последовательные значения: Если вы использовали ручное GPS-устройство, то, конечно, X, Y, Z будут произвольно меняться по мере изменения ориентации устройства в трехмерном пространстве. Вы можете интегрировать измерения ускорения для получения скорости в направлениях X, Y, Z.

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

0 Ответов