Существуют ли методы машинного обучения для определения точек на графиках / изображениях?


8

У меня есть данные для бокового положения каждого транспортного средства с течением времени и номер полосы, как показано на этих 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. Спасибо заранее.


Вы пытались математически определить, что вы делаете, когда вручную классифицируете маневры смены полосы движения? Широко ли вы ищете изменение периода стабильного, близкого к нулю градиента функции положения полосы, сопровождаемого значительным увеличением величины градиента, приводящего либо к другому периоду, близкому к нулевому градиенту, либо к концу данных?
image_doctor

У вас есть несколько оригинальных изображений для экспериментов?
image_doctor

Оси и шкалы - это легенды, которые не особенно согласуются между примерами изображений, есть ли способ стандартизировать графики, или у вас нет контроля над созданием изображений?
image_doctor

1
Да, я понимаю, что вы хотите определить окончание маневра смены полосы движения, но если у вас уже есть полоса движения транспортного средства в каждый момент времени, то нетрудно обнаружить эти изменения. Я бы начал с определения, когда мы должны учитывать, что транспортное средство больше не меняет полосу движения (например, после определенного количества секунд движения по той же полосе движения). Вы можете использовать окно для обнаружения сегментов, в которых транспортное средство держит ту же полосу движения, а точки в начале и конце таких сегментов описывают ваши «начало смены полосы движения» и «конец смены полосы движения» соответственно.
Роберт Смит

1
Отлично. Я думал, что у вас нет исходной и целевой полос, но если они у вас всегда есть, ваше решение должно работать и дополнительно использовать данные, которые у вас уже есть, для построения определения смены полосы.
Роберт Смит

Ответы:


2

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

Вейвлет-анализ может достичь этого, особенно если вы используете первую производную гауссиана в качестве материнского вейвлета. R имеет несколько приличных вейвлет-пакетов ( для начала смотрите r-project.org ). Если вы выполните вейвлет-преобразование на коротких масштабах, это определит расположение битов джиттера в рулевом управлении. Если вы делаете это в больших масштабах (т. Е. На более низкой частоте), вы, скорее всего, найдете только сдвиги полос, а не маленькие дрожания.

Если вы обучите преобразование разумному набору данных, вы сможете определить масштаб или диапазон масштабов, которые соответствуют изменениям полосы движения. Но учтите, что если вы этого не поймете, это что-то вроде O (n ^ 2), поэтому попробуйте немного сузить диапазон шкалы, чтобы сэкономить время вычислений.


1

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


Это на самом деле то, что я сделал в первую очередь. Проблема в том, что порог разницы и «высокие» значения очень субъективны, потому что путешествие каждого транспортного средства отличается.
Умайр Дуррани

1

Попробуйте пакет изменений . Я использовал это в похожем случае.

Анализ точек изменения - это статистическое название методов, которые обнаруживают изменения между двумя «режимами». Автомобиль, стоящий на полосе движения, - это линия с градиентом 0 в средней полосе полосы движения. Вы можете легко приспособить статистическую модель к автомобилям, едущим по полосам Линия смены автомобилей движется по линии с уклоном не равным 0. Модель изменилась. Анализ точек изменения и пакет точек изменений - это именно то, что вам нужно, чтобы определить точку, когда модель меняется с y=a' (straight and level) toy = a + bx` (вверх или вниз).


По сути, это ответ только для ссылок, и на SE он не рекомендуется. Может быть, вы можете уточнить, что это такое и почему это полезно.
Шон Оуэн

@AlbertoD Архаичный язык виньетки, которой вы поделились, бесполезен для новичка в концепции анализа точек изменения.
Умайр Дуррани

@AlbertoD Не могли бы вы привести пример использования пакета cp в вашем случае?
Умайр Дуррани
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.