Existem técnicas de aprendizado de máquina para identificar pontos em gráficos / imagens?


8

Tenho dados para a posição lateral de cada veículo ao longo do tempo e o número da faixa, como mostrado nessas três parcelas na imagem e nos dados de amostra abaixo.

insira a descrição da imagem aqui

> 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

A posição lateral varia ao longo do tempo, porque um motorista humano não tem controle perfeito sobre a posição do veículo. A manobra de mudança de faixa começa quando a posição lateral muda drasticamente e termina quando a variação se torna 'normal' novamente. Isso não pode ser identificado diretamente dos dados. Eu tenho que olhar manualmente para a plotagem de cada veículo para determinar os pontos inicial e final da manobra de mudança de faixa para estimar a duração da mudança de faixa. Mas eu tenho milhares de veículos no conjunto de dados. Você poderia me indicar um algoritmo relevante de análise de imagem / aprendizado de máquina que pudesse ser treinado para identificar esses pontos? Eu trabalho na R. Agradecemos antecipadamente.


Você tentou identificar matematicamente o que você faz quando classifica manualmente as manobras de mudança de faixa? Você está procurando amplamente uma alteração de um período de gradiente próximo ao zero estável da função de posição da faixa, seguida por um grande aumento na magnitude do gradiente, levando a outro período de gradiente próximo ao zero ou no final dos dados?
Image_doctor 6/09/2015

Você tem várias imagens originais para experimentar?
Image_doctor 6/09/2015

O eixo e as escalas são legendas não particularmente consistentes nas imagens de exemplo, existe uma maneira de padronizar as plotagens ou você não tem controle sobre a criação da imagem?
Image_doctor 6/09/15

11
Sim, entendo que você deseja identificar o fim da manobra da faixa de mudança, mas se você já tem a faixa do veículo a cada momento, não é difícil detectar essas alterações. Eu começaria definindo quando deveríamos considerar que o veículo não está mais mudando de faixa (por exemplo, após um determinado número de segundos dirigindo na mesma faixa). Você pode usar uma janela para detectar segmentos nos quais o veículo mantém a mesma faixa e os pontos no início e no final de tais segmentos descrevem sua "mudança de início de faixa" e "alteração de final de faixa", respectivamente.
Robert Smith

11
Ótimo. Eu pensei que você não tinha origem e faixa de destino, mas se você sempre as tiver, sua solução deve funcionar e, além disso, usa os dados que você já tem para construir uma definição de alteração de faixa.
Robert Smith

Respostas:


2

Uma primeira derivada, na superfície, faria isso. No entanto, os dados que você mostra têm bastante ruído, portanto, precisamos de uma maneira de avaliar a primeira derivada de uma maneira um tanto silenciosa ou, pelo menos, dentro de um domínio de frequência que elimine a instabilidade e preserve a principal alteração da derivada.

A análise da wavelet pode conseguir isso para você, especialmente se você usar a primeira derivada de um gaussiano como sua wavelet de mãe. O R possui alguns pacotes decentes de wavelet (consulte r-project.org para iniciantes). Se você transformar a wavelet em escalas curtas, isso identificará os locais dos bits de tremulação na direção. Se você fizer isso em escalas maiores (ou seja, com frequência mais baixa), provavelmente poderá encontrar apenas as mudanças de faixa e não os pequenos tremores.

Se você treinar a transformação com um conjunto de dados razoável, poderá identificar uma escala ou um intervalo de escalas que corresponda às mudanças de faixa. Mas observe que, se você não descobrir isso, é algo como O (n ^ 2); portanto, tente reduzir um pouco o intervalo de escala para economizar tempo de computação.


1

Parece que você pode procurar por alguns segundos mais alto que o derivado de ruído. Apenas calcule o valor absoluto da diferença finita de cada passo no tempo até o último (ou um dos primeiros) e aguarde uma série de valores altos. É quando uma mudança de faixa ocorre.


Isso foi realmente o que eu fiz em primeiro lugar. O problema é que o limiar da diferença e os valores "altos" são muito subjetivos, porque a jornada de cada veículo é diferente.
Umair durrani

1

Experimente o pacote do ponto de mudança . Eu usei em um caso semelhante.

Análise de ponto de mudança é o nome estatístico para métodos que detectam alterações entre dois "regimes". Um carro que fica em uma faixa é uma linha com gradiente 0 no ponto médio de uma faixa. Você pode ajustar facilmente um modelo estatístico aos carros que circulam nas faixas. Uma faixa de mudança de carro está dirigindo ao longo de uma linha com um gradiente que não é 0. O modelo mudou. A análise do ponto de mudança e o pacote do ponto de mudança são exatamente o que você precisa para determinar o ponto em que um modelo muda de y=a' (straight and level) toy = a + bx` (subindo ou descendo).


Essa é essencialmente uma resposta apenas de link e tende a ser desencorajada no SE. Talvez você possa elaborar o que é e por que é útil.
Sean Owen

@AlbertoD A linguagem arcaica da vinheta que você compartilhou não é útil para alguém novo no conceito de análise de ponto de mudança.
Umair durrani

@AlbertoD Você poderia fornecer algum exemplo de como você usou o pacote cp no seu caso?
Umair durrani 22/09/2015
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.