feat(BEVFusion): release BEVFusion 2.6.x#201
Merged
KSeangTan merged 48 commits intotier4:mainfrom Apr 21, 2026
Merged
Conversation
Contributor
There was a problem hiding this comment.
Pull request overview
Releases BEVFusion-LiDAR 2.6.x as a new baseline in the repository by updating training/evaluation configs for 8-GPU runs, adding T4MetricV2 experiment variants, and publishing updated benchmark documentation and deployment config tweaks.
Changes:
- Update BEVFusion training configs/schedulers/pipelines for 8×GPU training (including LR scaling + SyncBN config knobs).
- Add T4MetricV2 evaluator experiment configs for BEVFusion-LiDAR variants.
- Update BEVFusion-LiDAR v2 documentation and adjust a few runtime/deploy/setup details.
Reviewed changes
Copilot reviewed 28 out of 28 changed files in this pull request and generated 3 comments.
Show a summary per file
| File | Description |
|---|---|
| tools/detection3d/train.py | Adds model structure logging before training. |
| projects/BEVFusion/setup.py | Updates BEVFusion extension install dependency (spconv CUDA variant/version). |
| projects/BEVFusion/docs/BEVFusion-L/v2/j6gen2.md | Large update to J6Gen2_base v2.6.1 benchmark/results documentation. |
| projects/BEVFusion/docs/BEVFusion-L/v2/base.md | Large update to base v2.6.0 benchmark/results documentation. |
| projects/BEVFusion/configs/t4dataset/default/schedulers/default_50e_8xb8_adamw_cosine.py | Adjusts LR for larger batch + sets train_gpu_size=8 + adds sync_bn config. |
| projects/BEVFusion/configs/t4dataset/default/schedulers/default_30e_8xb8_adamw_linear_cosine.py | Sets train_gpu_size=8 + adds sync_bn config. |
| projects/BEVFusion/configs/t4dataset/default/schedulers/default_30e_8xb8_adamw_cosine.py | Adjusts LR for larger batch + sets train_gpu_size=8 + adds sync_bn config. |
| projects/BEVFusion/configs/t4dataset/default/schedulers/default_20e_8xb8_adamw_linear_cosine.py | Sets train_gpu_size=8 + adds sync_bn config. |
| projects/BEVFusion/configs/t4dataset/default/pipelines/default_lidar_intensity_120m.py | Narrows filtered classes, removes min-points filters, adds city/vehicle_type meta keys. |
| projects/BEVFusion/configs/t4dataset/default/pipelines/default_lidar_120m.py | Reduces num_workers, narrows filtered classes, removes min-points filters, adds city/vehicle_type meta keys. |
| projects/BEVFusion/configs/t4dataset/default/pipelines/default_camera_lidar_intensity_120m.py | Removes min-points filters for camera+lidar intensity pipeline. |
| projects/BEVFusion/configs/t4dataset/BEVFusion-L/bevfusion_lidar_voxel_second_secfpn_50e_8xb8_base_120m_t4metric_v2.py | Adds a T4MetricV2 evaluator variant config for the base 50e run. |
| projects/BEVFusion/configs/t4dataset/BEVFusion-L/bevfusion_lidar_voxel_second_secfpn_50e_8xb8_base_120m.py | Switches scheduler to 8×GPU variant and updates experiment naming. |
| projects/BEVFusion/configs/t4dataset/BEVFusion-L/bevfusion_lidar_voxel_second_secfpn_30e_8xb8_jpntaxi_base_120m_t4metric_v2.py | Adds a T4MetricV2 evaluator variant config for JPNTaxi_base 30e run. |
| projects/BEVFusion/configs/t4dataset/BEVFusion-L/bevfusion_lidar_voxel_second_secfpn_30e_8xb8_jpntaxi_base_120m.py | Switches dataset/scheduler to JPNTaxi_base + 8×GPU naming; adds load_from placeholder line. |
| projects/BEVFusion/configs/t4dataset/BEVFusion-L/bevfusion_lidar_voxel_second_secfpn_30e_8xb8_j6gen2_base_120m_t4metric_v2.py | Adds a T4MetricV2 evaluator variant config for J6Gen2_base 30e run. |
| projects/BEVFusion/configs/t4dataset/BEVFusion-L/bevfusion_lidar_voxel_second_secfpn_30e_8xb8_j6gen2_base_120m.py | Switches scheduler to 8×GPU naming; adds load_from placeholder line. |
| projects/BEVFusion/configs/t4dataset/BEVFusion-L-offline/bevfusion_offline_lidar_voxel_second_secfpn_50e_8xb8_base_120m.py | Updates offline base config to 8×GPU scheduler + experiment naming. |
| projects/BEVFusion/configs/t4dataset/BEVFusion-L-offline/bevfusion_offline_lidar_voxel_second_secfpn_30e_8xb8_jpntaxi_gen2_base_120m.py | Updates offline JPNTaxi_gen2_base config to 8×GPU scheduler + experiment naming. |
| projects/BEVFusion/configs/t4dataset/BEVFusion-L-offline/bevfusion_offline_lidar_voxel_second_secfpn_30e_8xb8_j6gen2_base_120m.py | Updates offline J6Gen2_base config to 8×GPU scheduler + experiment naming. |
| projects/BEVFusion/configs/t4dataset/BEVFusion-CL/bevfusion_camera_lidar_voxel_second_secfpn_20e_8xb8_jpntaxi_base_120m.py | Switches camera+lidar intensity config to JPNTaxi_base and 8×GPU scheduler/naming. |
| projects/BEVFusion/configs/t4dataset/BEVFusion-CL/bevfusion_camera_lidar_voxel_second_secfpn_20e_8xb8_j6gen2_base_120m.py | Updates camera+lidar intensity config to 8×GPU scheduler/naming. |
| projects/BEVFusion/configs/t4dataset/BEVFusion-C/bevfusion_camera_swin_fpn_30e_8xb8_j6gen2_base_120m.py | Updates camera-only config to 8×GPU scheduler/naming. |
| projects/BEVFusion/configs/deploy/bevfusion_main_body_lidar_only_intensity_tensorrt_dynamic.py | Renames exported ONNX filename for lidar+intensity deployment. |
| projects/BEVFusion/bevfusion/bevfusion_head.py | Passes filter=False to bbox coder decode in target generation. |
| projects/BEVFusion/bevfusion/init.py | Exposes TransFusionBBoxCoder from the BEVFusion package. |
| autoware_ml/configs/detection3d/dataset/t4dataset/jpntaxi_base.py | Alters jpntaxi_base test groups (now points to gen2 test info). |
| autoware_ml/configs/detection3d/dataset/t4dataset/base.py | Removes jpntaxi_base from base dataset test groups. |
Comments suppressed due to low confidence (2)
projects/BEVFusion/configs/t4dataset/BEVFusion-L/bevfusion_lidar_voxel_second_secfpn_30e_8xb8_j6gen2_base_120m.py:147
load_from "<best_checkpoint>"is invalid Python/MMEngine config syntax and will raise a syntax error when the config is loaded. If you want to document a placeholder, make it a comment; if you want to actually set it, useload_from = "..."(or remove it and rely on--resume/--load-from).
projects/BEVFusion/configs/t4dataset/BEVFusion-L/bevfusion_lidar_voxel_second_secfpn_30e_8xb8_jpntaxi_base_120m.py:147load_from "<best_checkpoint>"is invalid Python/MMEngine config syntax and will raise a syntax error when the config is loaded. If you want to document a placeholder, make it a comment; if you want to actually set it, useload_from = "..."(or remove it and rely on--resume/--load-from).
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
jacoblambert
approved these changes
Apr 21, 2026
Collaborator
jacoblambert
left a comment
There was a problem hiding this comment.
Great improvement! LGTM
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
This PR officially releases the first version (
2.6.x) of BEVFusion-LiDAR as the baseline for benchmarking performance of BEVFusion-LiDAR across versions. Note thatJPNTaxi_basewill be released in2.7.xinstead. This PR also fixes several bugs and update the training configs for the internal envinroment.Major Changes
Update the filename from
4xB8to8xb8for 8 GPUs training. [1], [2], [3], [4], [5], [6], [7], [8], [9], [10]Add
T4MetricV2metric configs to experiments. [[11] (https://github.com/KSeangTan/AWML/blob/d2b3a528d1e8023a550296b1cfb5c2f35dbde0f0/projects/BEVFusion/configs/t4dataset/BEVFusion-L/bevfusion_lidar_voxel_second_secfpn_30e_8xb8_j6gen2_base_120m_t4metric_v2.py), [12], [13]Update learning rate from
1e-4to1.4141e-4since batch_size is double in this config. [14], [15]Add
SyncBatchNormto fix batchnorm in DDP. [16], [17]Add detailed results about
BEvFusion-LiDAR 2.6.x. [18], [19]Minor Changes
Remove
jpntaxi_basefrom evaluation. [20], [21]Update the spconv version to
2.3.8withcuda-12.6. [22]Performance
Summary
2.6.1consistently outperforms2.6.0.1.4to2.0.LargeBus
0.7669to0.8036(+3.67), suggesting the2.6.1is much better at isolating smaller features in environments where large buses might otherwise cause occlusion or scale confusion.J6Gen2 & J6Gen2_Base:
0.7129to0.7409. This is a critical gain for heavy-vehicle safety.v2.6.0andv2.6.1here confirms that the model improvements are statistically significant and not just "noise" from a small sample.JPNTaxi_Gen2: The "Bus" Outlier
0.5446, which is drastically lower than the ~0.85 seen in other datasets.JPNTaxi_Gen2data even more forbus.LargeBus
Eval Range: 0.0 - 121.0m
(28,895)
(2,806)
(539)
(1,288)
(9,934)
J6Gen2
Eval Range: 0.0 - 121.0m
(114,558)
(12,414)
(4,190)
(1,004)
(22,564)
JPNTaxi_Gen2
Eval Range: 0.0 - 121.0m
(94,831)
(54,396)
(8,596)
(4,652)
(99,485)
J6Gen2_Base
Eval Range: 0.0 - 121.0m
(143,453)
(15,220)
(4,729)
(2,292)
(32,498)
Base
Eval Range: 0.0 - 121.0m
(238,284)
(69,616)
(13,325)
(6,944)
(131,983)