У меня есть данные для бокового положения каждого транспортного средства с течением времени и номер полосы, как показано на этих 3 графиках в изображении и данных примера ниже.
> a
Frame.ID xcoord Lane
1 452 27.39400 3
2 453 27.38331 3
3 454 27.42999 3
4 455 27.46512 3
5 456 27.49066 3
Боковое положение меняется со временем, потому что водитель-человек не имеет идеального контроля над положением транспортного средства. Маневр смены полосы движения начинается, когда боковое положение резко меняется, и заканчивается, когда изменение снова становится «нормальным». Это не может быть идентифицировано из данных напрямую. Мне нужно вручную просматривать график каждого транспортного средства, чтобы определить начальную и конечную точки маневра смены полосы движения, чтобы оценить продолжительность смены полосы движения. Но у меня есть тысячи автомобилей в наборе данных. Не могли бы вы направить меня к любому подходящему алгоритму анализа изображений / машинного обучения, который можно было бы обучить для определения этих точек? Я работаю в R. Спасибо заранее.
источник
Ответы:
Первая производная, на поверхности, сделала бы это. Однако данные, которые вы показываете, содержат много шума, поэтому нам нужен способ оценить первую производную в некоторой степени без шума или, по крайней мере, в пределах частотной области, которая устраняет дрожание и сохраняет основное изменение производной.
Вейвлет-анализ может достичь этого, особенно если вы используете первую производную гауссиана в качестве материнского вейвлета. R имеет несколько приличных вейвлет-пакетов ( для начала смотрите r-project.org ). Если вы выполните вейвлет-преобразование на коротких масштабах, это определит расположение битов джиттера в рулевом управлении. Если вы делаете это в больших масштабах (т. Е. На более низкой частоте), вы, скорее всего, найдете только сдвиги полос, а не маленькие дрожания.
Если вы обучите преобразование разумному набору данных, вы сможете определить масштаб или диапазон масштабов, которые соответствуют изменениям полосы движения. Но учтите, что если вы этого не поймете, это что-то вроде O (n ^ 2), поэтому попробуйте немного сузить диапазон шкалы, чтобы сэкономить время вычислений.
источник
Похоже, вы могли бы просто посмотреть на несколько секунд выше, чем производная шума. Просто рассчитайте абсолютное значение конечной разности от каждого временного шага до последнего (или одного из первых) и дождитесь ряда высоких значений. Вот когда происходит смена полосы движения.
источник
Попробуйте пакет изменений . Я использовал это в похожем случае.
Анализ точек изменения - это статистическое название методов, которые обнаруживают изменения между двумя «режимами». Автомобиль, стоящий на полосе движения, - это линия с градиентом 0 в средней полосе полосы движения. Вы можете легко приспособить статистическую модель к автомобилям, едущим по полосам Линия смены автомобилей движется по линии с уклоном не равным 0. Модель изменилась. Анализ точек изменения и пакет точек изменений - это именно то, что вам нужно, чтобы определить точку, когда модель меняется с
y=a' (straight and level) to
y = a + bx` (вверх или вниз).источник