¿Existen técnicas de aprendizaje automático para identificar puntos en parcelas / imágenes?


8

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.

ingrese la descripción de la imagen aquí

> 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.


¿Ha intentado identificar matemáticamente qué es lo que hace cuando clasifica manualmente las maniobras de cambio de carril? ¿Está buscando en términos generales un cambio de un período de gradiente estable cercano a cero de la función de posición de carril seguido de un gran aumento en la magnitud del gradiente, que conduce a otro período de gradiente cercano a cero o al final de los datos?
image_doctor

¿Tiene varias de las imágenes originales para que podamos experimentar?
image_doctor

El eje y las escalas son leyendas que no son particularmente consistentes en las imágenes de ejemplo, ¿hay alguna manera de estandarizar los gráficos o no tiene control sobre la creación de imágenes?
image_doctor

1
Sí, entiendo que desea identificar el final de la maniobra de cambio de carril, pero si ya tiene el carril del vehículo en cada momento, entonces no es difícil detectar esos cambios. Comenzaría definiendo cuándo deberíamos considerar que el vehículo ya no cambia de carril (por ejemplo, después de un número determinado de segundos conduciendo en el mismo carril). Puede usar una ventana para detectar segmentos en los que el vehículo mantiene el mismo carril y los puntos al comienzo y al final de dichos segmentos describen su "inicio de cambio de carril" y "final de cambio de carril", respectivamente.
Robert Smith

1
Excelente. Pensé que no tenía el carril de origen y de destino, pero si siempre los tiene, su solución debería funcionar y además utiliza los datos que ya tiene para construir una definición de cambio de carril.
Robert Smith

Respuestas:


2

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.


1

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.


Esto es realmente lo que hice en primer lugar. El problema es que el umbral de diferencia y los valores "altos" son muy subjetivos porque el viaje de cada vehículo es diferente.
umair durrani

1

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) toy = a + bx` (subiendo o bajando).


Esta es esencialmente una respuesta de solo enlace y tiende a desalentarse en SE. Tal vez puedas elaborar qué es y por qué es útil.
Sean Owen

@AlbertoD El lenguaje arcaico de la viñeta que compartió no es útil para alguien nuevo en el concepto de análisis de puntos de cambio.
umair durrani

@AlbertoD ¿Podría darnos algún ejemplo de cómo utilizó el paquete cp en su caso?
umair durrani
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.