Automotive Radar Object Classification [P]
A model for automotive radar object classification shows improved performance as the number of radar detections per instance increases. Macro F1 score rises from 0.381 to 0.764 when detections increase from 1 to 5. The model was trained using all available detections, with validation predictions then grouped by detection count to compute Macro F1 per bucket. Future work includes implementing other spatial encoding schemas like point net and accumulating multiple scans to address sparsity and explore micro-doppler.
- Published
- Sep 7, 2026, 08:10
- Source type
- Dev community
- Tier
- Community
- Source status
- Healthy
Times shown in UTC
More details
I'm a radar signal processing engineer and i trained a 5-class classifier (car, large_vehicle, two_wheeler, pedestrian, pedestrian_group) on RadarScenes radar point clouds.
The input vector is a per-scan histogram (16 bins) and the network is a 3-layer MLP. The loss function is a class-weighted cross-entropy loss. This work is based on "Histogram-based Deep Learning for Automotive Radar" paper.
I scoped the project to be one scan only. Accumulation of multiple scans is the next step.
Aggregated Classes: two_wheeler mixes bicycles and motorized variants; large_vehicle merges trucks, buses, and trains together due to data scarcity.
Sequence Bias: Long tracks of slow-moving objects can skew a particular data split velocity distribution, causing high F1 score variance across folds.
I tried with bigger MLPs, alternative feature encodings, and different histogram binning, all moved performance less than the variation caused by changing the train/validation/test split. I measured that split sensitivity across 6 folds, keeping the same proportions.
Macro F1 rises from 0.381 to 0.764 as the naturally occurring number of radar detections per instance increases from 1 to 5. I trained the model normally using all available detections, then bucketed its existing validation predictions by each instance's detection count and computed macro F1 per bucket.
The classes car and pedestrian has the best performance and two_wheeler has the worst.
A car is often confused as large vehicle when the car was wider than usual or had a unusually high rcs (which can happen due to multipath for example).
The two_wheeler is often confused as pedestrian because their vr_compensated distributions overlap, which is the the model's single most important feature for these two classes. A stationary or idling two_wheeler is indistinguishable from a pedestrian.
I uploaded an image with ground truth vs predictions: A nearly stationary two-wheeler which contains a single point was predicted as pedestrian, because its velocity is near zero, indistinguishable from a pedestrian. A car in the same scene, also with just one point, is classified correctly, since RCS and Doppler are enough for that class.
Full writeup here: https://github.com/brunopinto900/radar-ml-autonomous-driving/blob/main/MLP_Report.md
Implement other spatial encoding schemas (point net for example) and accumulate multiple scans to tackle the challenge of sparsity and explore the concept of micro-doppler.