Skip to content

Fix scene flow ground truth generation in Argoverse 2#5

Merged
Kin-Zhang merged 5 commits intomainfrom
fix/flowgt
Mar 10, 2025
Merged

Fix scene flow ground truth generation in Argoverse 2#5
Kin-Zhang merged 5 commits intomainfrom
fix/flowgt

Conversation

@Kin-Zhang
Copy link
Copy Markdown
Member

@Kin-Zhang Kin-Zhang commented Mar 10, 2025

As HiMo: High-Speed Objects Motion Compensation in Point Cloud highlights: LiDAR point clouds often contain motion-induced distortions, degrading the accuracy of object appearances in the captured data.

📺 Check this 40s video clip for a visual explanation:
https://youtube.com/clip/UgkxXpEk6ef0nFTTDF7ikTtwae3dMfT0ycyl?si=xqWrntJiP4bThsd4

🛠️ What's Improved?

Previously, Argoverse 2 generated scene flow ground truth by expanding bounding boxes with a fixed 20cm value. However, following HiMo, we now expand bounding boxes based on object relative velocity, leading to more accurate motion compensation.

🔍 Before & After Visualization

Below is a comparison showing the improved bounding box expansion using HiMo:

image

Visualization from demo/val, scene id: 25e5c600-36fe-3245-9cc0-40ef91620c22

@Kin-Zhang Kin-Zhang self-assigned this Mar 10, 2025
…distortion in data.

check more detail on pull request description.
@Kin-Zhang
Copy link
Copy Markdown
Member Author

Kin-Zhang commented Mar 10, 2025

📊 Impact on Evaluation Metrics

A key issue with the previous ground truth processing was inflated scores due to inaccurate bounding box annotation. Since the bounding box expansion was fixed rather than velocity-based, static and dynamic objects were not correctly distinguished, resulting in artificially lower error rates (better scores) before the fix.

The updated table below demonstrates the effect of HiMo correction. Notice how all methods show higher error values after the fix, indicating that the previous ground truth underestimated real-world motion errors (all these three pre-trained weights can be downloaded from huggingface/here:
image

The raw terminal result screenshot:

image

🔬 Summary

  • More accurate motion compensation: Bounding box expansion now accounts for object velocity instead of a fixed offset.
  • Improved accurate score on metrics: More reliable scene flow ground truth for dynamic objects. Fixing score inflation from previous ground truth processing.

@Kin-Zhang Kin-Zhang added the question Further information is requested label Mar 10, 2025
* tested successfully on docker things also.
@Kin-Zhang Kin-Zhang merged commit e089267 into main Mar 10, 2025
@Kin-Zhang Kin-Zhang deleted the fix/flowgt branch March 10, 2025 10:00
@Kin-Zhang
Copy link
Copy Markdown
Member Author

Kin-Zhang commented Mar 10, 2025

@ikhatri @kylevedder I think you may interested as we discussed before during ECCV'24. Maybe it could be also updated in the leaderboard gt results. (Although it's mainly on high-speed objects.)

@Kin-Zhang
Copy link
Copy Markdown
Member Author

Kin-Zhang commented Mar 31, 2026

A further evaluation fix on some evaluation masks provided by the official mask zip file includes ground points (AV2 dataset only).
So, in #36, we perform double-mask validation to exclude ground points as well.

                if 'eval_mask' in f[key]:
-                    data_dict['eval_mask'] = f[key]['eval_mask'][:]
-                    raw_eval = f[key]['eval_mask'][:]
+                    raw_ground = f[key]['ground_mask'][:]
+                    # NOTE(Qingwen): performance might be changed for av2 since some eval_mask provided by av2 didn't remove ground points.
+                    data_dict['eval_mask'] = (raw_eval.reshape(-1).astype(bool) & (~raw_ground.reshape(-1).astype(bool)))

Detailed discussion and visulization can be found as follows:


Hanqiu found it when we evaluated and reproduced Floxels in the Argoverse 2 validation set locally.

# for local and online eval mask from official repo
s5cmd --no-sign-request cp "s3://argoverse/tasks/3d_scene_flow/zips/*" .

The provided eval_mask at the first 5-10 frames in each scene will include ground points as evaluation and some flow annotation actually on the ground points.

image

Some discussions and images:
image

image

Maybe that's another reason why local validation sets have lower performance than test set (leaderboard-v2 changed eval_mask and eval frames, so it didn't use the v1 one here). But it should be fair for all methods, since we set all ground points' relative flow=0 for all methods in opensf code. 😅

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

question Further information is requested

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant