PJLab-ADG / 3DTrans

An open-source codebase for exploring autonomous driving pre-training
https://bobrown.github.io/Team_3DTrans.github.io/
Apache License 2.0
585 stars 72 forks source link

cover_feat in PV-RCNN++ #10

Closed darrenjkt closed 1 year ago

darrenjkt commented 1 year ago

Hi, thanks for your work with this repo.

For PV-RCNN when we only use xyz features, I'm aware that the xyz_features become None. Some solutions I've seen remove the 'raw_points' from FEATURES_SOURCE below so that it can work with xyz data only. https://github.com/PJLab-ADG/3DTrans/blob/0082e4a1176adc27ad64d8984b6a38baaf36cff8/tools/cfgs/kitti_models/pv_rcnn_plus_feat_3_car.yaml#L96

You wrote that cover feat uses the z points as the 4th feature, essentially making the point cloud [x,y,z,z]. What's the idea behind this, and do you know if it works better than excluding 'raw_points'? https://github.com/PJLab-ADG/3DTrans/blob/0082e4a1176adc27ad64d8984b6a38baaf36cff8/pcdet/models/backbones_3d/pfe/voxel_set_abstraction.py#L309

BOBrown commented 1 year ago

Hello, thanks for your attention to our work

For PV-RCNN++ baseline model, using the feat_3 (point cloud [x,y,z]) as the raw input seems to be a bug during the domain adaptation process. Therefore, we use the z-points as the 4th feature is to avoid this error. Besides, using the z-points as the 4th feature makes the PV-RCNN++ cross-domain transfer possible (such as Waymo->KITTI using PV-RCNN++, yaml)

For the single-domain training such as only Waymo dataset, it is recommended to use the PV-RCNN++ with all features yaml

BOBrown commented 1 year ago

By the way, PV-RCNN++ seems to have poor performance on the KITTI dataset.

darrenjkt commented 1 year ago

I see, that makes sense. Do you have an idea of why PV-RCNN++ has poor performance on the KITTI dataset?

BOBrown commented 1 year ago

Maybe due to that PV-RCNN++ uses the CenterHead? I guess that PV-RCNN++ with AnchorHeadSingle using the KITTI-ANCHOR_GENERATOR_CONFIG may achieve a better result on KITTI dataset

darrenjkt commented 1 year ago

Hm that's interesting cause I thought Centerhead generally has a better performance. The Waymo model zoo on OpenPCDet's repo shows that PV-RCNN anchorhead L2/APH is 66.80, 53.95, 61.82 whereas PV-RCNN centerhead L2/APH is 67.54, 61.62, 66.57.

I've observed that KITTI labels are not as high quality as nuScenes/Waymo. Certain far away cars with few points would not be labelled for example. I wonder if this difference in labelling could also contribute to the lower performance - i.e. incorrectly penalizing PV-RCNN++ maybe?