Esistono tecniche di apprendimento automatico per identificare punti su grafici / immagini?


8

Ho i dati per la posizione laterale di ciascun veicolo nel tempo e il numero di corsia, come mostrato in questi 3 grafici nell'immagine e i dati di esempio di seguito.

inserisci qui la descrizione dell'immagine

> 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 posizione laterale varia nel tempo perché un guidatore umano non ha un controllo perfetto sulla posizione del veicolo. La manovra di cambio corsia inizia quando la posizione laterale cambia drasticamente e termina quando la variazione diventa di nuovo "normale". Questo non può essere identificato direttamente dai dati. Devo esaminare manualmente la trama di ciascun veicolo per determinare i punti di inizio e fine della manovra di cambio corsia al fine di stimare la durata del cambio di corsia. Ma ho migliaia di veicoli nel set di dati. Potresti indirizzarmi verso qualsiasi algoritmo di analisi delle immagini / apprendimento automatico pertinente che possa essere addestrato per identificare questi punti? Lavoro in R. Grazie in anticipo.


Hai provato a identificare matematicamente cosa fai quando classifica manualmente le manovre di cambio corsia? Stai cercando un passaggio da un periodo di gradiente vicino allo zero stabile della funzione di posizione della corsia seguito da un grande aumento dell'ampiezza del gradiente, portando a un altro periodo di gradiente vicino allo zero o alla fine dei dati?
image_doctor,

Hai un numero di immagini originali da sperimentare?
image_doctor,

Gli assi e le scale sono leggende non particolarmente coerenti tra le immagini di esempio, esiste un modo per standardizzare i grafici o non si ha alcun controllo sulla creazione dell'immagine?
image_doctor,

1
Sì, capisco che desideri identificare la fine della manovra di cambio corsia, ma se hai già la corsia del veicolo in ogni momento, non è difficile rilevare tali cambiamenti. Vorrei iniziare definendo quando dovremmo considerare che il veicolo non cambia più corsia (ad es. Dopo un determinato numero di secondi guidando sulla stessa corsia). È possibile utilizzare una finestra per rilevare i segmenti in cui il veicolo mantiene la stessa corsia e i punti all'inizio e alla fine di tali segmenti descrivono rispettivamente "inizio cambio di corsia" e "fine cambio di corsia".
Robert Smith,

1
Grande. Pensavo che non avessi origine e corsia target ma se li hai sempre, la tua soluzione dovrebbe funzionare e utilizza inoltre i dati che hai già per costruire una definizione di cambio corsia.
Robert Smith,

Risposte:


2

Un primo derivato, in superficie, lo farebbe. Tuttavia, i dati che mostri contengono molto rumore, quindi abbiamo bisogno di un modo per valutare la prima derivata in un modo un po 'silenzioso, o almeno all'interno di un dominio di frequenza che elimini il jitter e preservi il cambiamento di derivata maggiore.

L'analisi wavelet potrebbe ottenere questo risultato per te, specialmente se usi il primo derivato di un gaussiano come wavelet madre. R ha alcuni pacchetti wavelet decenti (vedi r-project.org per i principianti). Se si esegue la trasformazione wavelet su scale brevi, questo identificherà le posizioni dei bit di jitter nello sterzo. Se lo fai su scale più grandi (ad es. Frequenza più bassa), puoi probabilmente trovare solo i cambi di corsia e non i piccoli nervosismi.

Se si allena la trasformazione con un set di dati ragionevole, si dovrebbe essere in grado di identificare una scala o un intervallo di scale che corrispondono ai cambi di corsia. Ma nota che se non lo capisci, questo è qualcosa come O (n ^ 2), quindi prova a restringere un po 'l'intervallo di scala per risparmiare tempo di calcolo.


1

Sembra che potresti solo cercare qualche secondo di derivazione del rumore superiore. Basta calcolare il valore assoluto della differenza finita da ciascun timestep all'ultimo (o uno dei primi) e attendere una serie di valori elevati. Questo è quando si verifica un cambio di corsia.


Questo è quello che ho fatto in primo luogo. Il problema è che la soglia di differenza e i valori "alti" sono molto soggettivi perché il viaggio di ogni veicolo è diverso.
Umair Durrani,

1

Prova il pacchetto changepoint . L'ho usato in un caso simile.

L'analisi del punto di cambio è il nome statistico per i metodi che rilevano i cambiamenti tra due "regimi". Un'auto che si trova in una corsia è una linea con gradiente 0 nel punto medio di una corsia. Puoi adattare facilmente un modello statistico alle auto che guidano nelle corsie. Un'auto che cambia corsia sta guidando lungo una linea con una pendenza che non è 0. Il modello è cambiato. L'analisi del punto di cambio e il pacchetto del punto di cambio sono esattamente ciò di cui hai bisogno per determinare il punto in cui un modello cambia da y=a' (straight and level) toy = a + bx` (andando su o giù).


Questa è essenzialmente una risposta solo link e tende a essere scoraggiata su SE. Forse puoi elaborare di cosa si tratta e perché è utile.
Sean Owen,

@AlbertoD Il linguaggio arcaico della vignetta che hai condiviso non è utile per qualcuno che non conosce il concetto di analisi del punto di cambio.
Umair Durrani,

@AlbertoD Potresti fornire qualche esempio di come hai usato il pacchetto cp nel tuo caso?
Umair Durrani,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.