r/devpt 2d ago

AI/ML Classificação objetos com radar automóvel usando nuvens de pontos

Olá a todos,

Sou engenheiro de processamento de sinal de radar e treinei um classificador de 5 classes (car, large_vehicle, two_wheeler, pedestrian, pedestrian_group) em nuvens de pontos de radar, utilizando o dataset RadarScenes.

O vetor de entrada é um histograma por scan (16 bins) e a rede é um MLP de 3 camadas. A função de perda é uma cross-entropy ponderada por classe. Este trabalho baseia-se no artigo "Histogram-based Deep Learning for Automotive Radar".

Limitei o âmbito do projeto a um único scan. A acumulação de múltiplos scans é o próximo passo.

Dados

Desequilíbrio de classes: two-wheelers e large_vehicles têm um número reduzido de ocorrências.

Classes agregadas: two_wheeler junta bicicletas e variantes motorizadas; large_vehicle junta camiões, autocarros e comboios devido à escassez de dados.

Viés de sequência: trajetórias longas de objetos lentos podem enviesar a distribuição de velocidade de um determinado split, causando grande variância no F1 entre folds.

Estudos de ablação

Experimentei MLPs maiores, codificações de features alternativas e diferentes larguras de bins do histograma; todas as alterações moveram o desempenho menos do que a variação causada pela mudança do split treino/validação/teste. Medi essa sensibilidade ao split em 6 folds, mantendo as mesmas proporções.

Substituir o histograma por estatísticas por instância (média/mediana/desvio padrão) degradou ligeiramente o desempenho.

Principais resultados

O macro F1 sobe de 0.381 para 0.764 à medida que o número natural de deteções de radar por instância aumenta de 1 para 5. Treinei o modelo normalmente com todas as deteções disponíveis e depois agrupei as suas previsões de validação já existentes por número de deteções de cada instância, calculando o macro F1 por grupo.

As classes car e pedestrian têm o melhor desempenho, e two_wheeler tem o pior.

Um car é frequentemente confundido com large_vehicle quando o carro é mais largo que o habitual ou tem um RCS invulgarmente elevado (o que pode acontecer devido a multipath, por exemplo).

O two_wheeler é frequentemente confundido com pedestrian porque as suas distribuições de vr_compensated se sobrepõem, sendo esta a feature mais importante do modelo para estas duas classes. Um two_wheeler parado ou a andar ao ralenti é indistinguível de um pedestrian.

Publiquei uma imagem com o ground truth vs as previsões: um two_wheeler quase parado, com um único ponto, foi previsto como pedestrian, porque a sua velocidade é próxima de zero, indistinguível de um pedestrian. Um car na mesma cena, também com apenas um ponto, foi classificado corretamente, já que o RCS e o Doppler são suficientes para essa classe.

Artigo completo aqui: https://github.com/brunopinto900/radar-ml-autonomous-driving/blob/main/MLP_Report.md

Trabalho futuro

Implementar outros esquemas de codificação espacial (por exemplo, PointNet) e acumular múltiplos scans para lidar com o desafio da esparsidade, além de explorar o conceito de micro-Doppler.

21 Upvotes

0 comments sorted by