-
Notifications
You must be signed in to change notification settings - Fork 266
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Incorporate BEVFusion's BEV Pooling operation into BEVDet #39
Comments
@Divadi Both acceleration modification in BEVDet(https://github.com/HuangJunJie2017/BEVDet#estimate-the-inference-speed-of-bevdet) and BEVFusion should be conducted during testing only. The explanation can be found in technical reports. |
Thank you for your prompt response! I believe I found the relevant section in BEVDet: However, it seems like from the technical report in BEVFusion and their codebase, the "interval reduction" cuda operation can be performed during training. Their code https://github.com/mit-han-lab/bevfusion/tree/main/mmdet3d/ops/bev_pool has backward cuda operations defined as well. Again, I apologize if I missed some details |
@Divadi I misunderstanding the theory of the acceleration in BEVFusion. And it was confirmed by one of the BEVFusion authors that the acceleration in BEVFusion can be used in training. I will check and support this if it can accelerate the training process. |
@HuangJunJie2017 I understand; I will look into it as well. |
@Divadi |
Hi, it's so cool that BEVDET could also support bevpool! I wonder have you already checked the results? Will the bevpool operation degrade the performance? Thanks a lot! |
@ruolinsss hi, I have checked the consistency in testing, and there is no performance degeneration. The training consistency is under checking. |
@HuangJunJie2017 Thank you for the integration! I had found that there is no inference result change, and training is sped up 2.2 Days -> 1.5 days on 4 GPUs. Have you experimented with mixed precision to speed up training? I find that just adding fp16 = dict(loss_scale='dynamic') can reduce another .5 days, but have not completed the training (since I think it would require putting @force_fp32 in some places). |
@Divadi I start trying mixed-precision today. Just a few hours ago.... Where to put @force_fp32 is a good problem. I will refer to other algorithms for some suggestions. |
Hello, I have been trying to replace BEVDet's QuickCumSum operation with BEVFusion's BEV Pooling operation.
https://github.com/mit-han-lab/bevfusion/tree/main/mmdet3d/ops/bev_pool
To do so, I simply have replaced
BEVDet/mmdet3d/models/necks/view_transformer.py
Lines 164 to 169 in e2f4b40
with
Where
bev_pool
is BEVFusion's bev_pool cuda operation.However, I find that although there is significant speed up, the loss is not decreasing as expected (around 14 at end of epoch 5, while it should be around 9.5).
Looking at the papers, they seem to be equivalent pooling operations, but I was hoping for some guidance in case I missed something.
Thank you!
The text was updated successfully, but these errors were encountered: