Tengo datos para la posición lateral de cada vehículo a lo largo del tiempo y el número de carril como se muestra en estos 3 gráficos en la imagen y los datos de muestra a continuación.
> 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
La posición lateral varía con el tiempo porque un conductor humano no tiene un control perfecto sobre la posición del vehículo. La maniobra de cambio de carril comienza cuando la posición lateral cambia drásticamente y termina cuando la variación vuelve a ser "normal". Esto no puede identificarse directamente a partir de los datos. Tengo que mirar manualmente el diagrama de cada vehículo para determinar los puntos de inicio y finalización de la maniobra de cambio de carril para estimar la duración del cambio de carril. Pero tengo miles de vehículos en el conjunto de datos. ¿Podría dirigirme a algún algoritmo relevante de análisis de imágenes / aprendizaje automático que pueda ser entrenado para identificar estos puntos? Yo trabajo en R. Gracias de antemano.
fuente
Respuestas:
Una primera derivada, en la superficie, lo haría. Sin embargo, los datos que muestra tienen una gran cantidad de ruido, por lo que necesitamos una forma de evaluar la primera derivada de una manera algo silenciosa, o al menos dentro de un dominio de frecuencia que elimine la fluctuación y conserve el cambio de derivada principal.
El análisis de wavelet podría lograr esto para usted, especialmente si utiliza la primera derivada de un gaussiano como su wavelet madre. R tiene algunos paquetes wavelet decentes (ver r-project.org para empezar). Si realiza la transformación wavelet a escalas cortas, esto identificará las ubicaciones de los bits de fluctuación en la dirección. Si lo hace a escalas más grandes (es decir, una frecuencia más baja), es probable que pueda encontrar solo los cambios de carril y no las pequeñas fluctuaciones.
Si entrena la transformación con un conjunto de datos razonable, debería poder identificar una escala o rango de escalas que corresponda a los cambios de carril. Pero tenga en cuenta que si no se da cuenta de esto, esto es algo así como O (n ^ 2), así que intente reducir el rango de escala un poco para ahorrar tiempo de cálculo.
fuente
Parece que solo podrías buscar unos segundos de mayor derivada del ruido. Simplemente calcule el valor absoluto de la diferencia finita desde cada paso de tiempo hasta el último (o uno de los primeros) y espere una serie de valores altos. Es entonces cuando ocurre un cambio de carril.
fuente
Prueba el paquete changepoint . Lo usé en un caso similar.
El análisis de punto de cambio es el nombre estadístico de los métodos que detectan cambios entre dos "regímenes". Un automóvil que permanece en un carril es una línea con gradiente 0 en el punto medio de un carril. Puede adaptar fácilmente un modelo estadístico a los automóviles que circulan por carriles. Un carro que cambia de carril está conduciendo a lo largo de una línea con un gradiente que no es 0. El modelo ha cambiado. El análisis de punto de cambio, y el paquete de punto de cambio, es exactamente lo que necesita para determinar el punto cuando un modelo cambia de
y=a' (straight and level) to
y = a + bx` (subiendo o bajando).fuente