Skip to content

Commit

Permalink
v2.0.0 API Rewrite (#4)
Browse files Browse the repository at this point in the history
* Bunch of stuff is still broken, but AV2 Demo 3D works for RGB + Lidar

* Fully passing tests

* Changed Item convention to Frame

* Fixed backwards frame transform issue with AV2 RGB

* Added reshape support to crop AV2's traffic cam light

* Added valid pixels mask

* Added proper tests for image crop

* Added pulls for AV2 Small to do prep for full sequence tests

* Added separate setup step

* Cleanup names in testing infra

* Added tests for loading full sequences

* Added Causal and NonCausal loader

* Stopped deleting ground points entirely

* Added proper downscaling and transpose support to AV2 dataloader

* Bump to v2.0.0

* Cleaned up demo and eval code

* Cleanup readme

* Added floor and ceil to crop resize
  • Loading branch information
kylevedder authored Mar 22, 2024
1 parent c21b82d commit 70aeae9
Show file tree
Hide file tree
Showing 43 changed files with 1,895 additions and 1,630 deletions.
10 changes: 7 additions & 3 deletions .github/workflows/python_install.yml
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
name: Python Package Install
name: Bucketed Scene Flow Eval full tests

on: [push]

jobs:
install:
run-test:
runs-on: ubuntu-latest

steps:
Expand All @@ -18,11 +18,15 @@ jobs:
with:
python-version: '3.10'

- name: Install Dependencies
- name: Pip Install
run: |
python -m pip install --upgrade pip
pip install -e .
- name: Download and Setup Data Files
run: |
./tests/setup.sh
- name: Run Tests
run: |
./tests/integration_tests.sh
8 changes: 4 additions & 4 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ This repo provides:
Currently supported datasets:

- Argoverse 2 (Human Labeled and [NSFP Pseudolabeled](https://github.com/kylevedder/BucketedSceneFlowEval/blob/master/docs/GETTING_STARTED.md#argoverse-2-nsfp-pseudolabels-new))
- Waymo Open
- Waymo Open (LiDAR only)


If you use this repository as part of a publication, please cite:
Expand Down Expand Up @@ -45,23 +45,23 @@ We provide a demo script which shows off the various features of the API.
To render the lidar and multiple camera views of an Argoverse 2 sequence in 3D, run:

```
python scripts/demo.py --dataset Argoverse2SceneFlow --root_dir /efs/argoverse2/val/
python scripts/demo_3d.py --dataset Argoverse2CausalSceneFlow --root_dir /efs/argoverse2/val/ --with_rgb --sequence_length 4
```

![Argoverse 2 MultiCam](docs/imgs/av2_multicam.png)

To render RGB frames with lidar imposed on top, run:

```
python scripts/demo_rgb.py --dataset Argoverse2SceneFlow --mode project_lidar --save_dir /efs/av2_camera_render/ --reduction_factor 16 --root_dir /efs/argoverse2/val
python scripts/demo_rgb.py --dataset Argoverse2SceneFlow --mode project_lidar --reduction_factor 16 --root_dir /efs/argoverse2/val --sequence_length 150 --save_dir /efs/av2_camera_render/
```

![Argoverse 2 LiDAR](docs/imgs/av2_lidar.gif)

To render the flow field of an Argoverse 2 sequence, run:

```
python scripts/demo_rgb.py --dataset Argoverse2SceneFlow --mode project_flow --save_dir /efs/av2_camera_render/ --reduction_factor 16 --root_dir /efs/argoverse2/val --flow_dir <path to method flow output>
python scripts/demo_rgb.py --dataset Argoverse2SceneFlow --mode project_flow --reduction_factor 16 --root_dir /efs/argoverse2/val --sequence_length 150 --save_dir /efs/av2_camera_render/ --flow_dir <path to method flow output>
```

![Argoverse 2 Flow](docs/imgs/av2_gt_flow.gif)
Expand Down
20 changes: 16 additions & 4 deletions bucketed_scene_flow_eval/datasets/__init__.py
Original file line number Diff line number Diff line change
@@ -1,11 +1,23 @@
from bucketed_scene_flow_eval.datasets.argoverse2 import Argoverse2SceneFlow
from bucketed_scene_flow_eval.datasets.waymoopen import WaymoOpenSceneFlow
from bucketed_scene_flow_eval.datasets.argoverse2 import (
Argoverse2CausalSceneFlow,
Argoverse2NonCausalSceneFlow,
)
from bucketed_scene_flow_eval.datasets.waymoopen import (
WaymoOpenCausalSceneFlow,
WaymoOpenNonCausalSceneFlow,
)
from bucketed_scene_flow_eval.interfaces import AbstractDataset

importable_classes = [Argoverse2SceneFlow, WaymoOpenSceneFlow]
importable_classes = [
Argoverse2CausalSceneFlow,
Argoverse2NonCausalSceneFlow,
WaymoOpenCausalSceneFlow,
WaymoOpenNonCausalSceneFlow,
]
name_to_class_lookup = {cls.__name__.lower(): cls for cls in importable_classes}


def construct_dataset(name: str, args: dict):
def construct_dataset(name: str, args: dict) -> AbstractDataset:
name = name.lower()
if name not in name_to_class_lookup:
raise ValueError(f"Unknown dataset name: {name}")
Expand Down
18 changes: 13 additions & 5 deletions bucketed_scene_flow_eval/datasets/argoverse2/__init__.py
Original file line number Diff line number Diff line change
@@ -1,16 +1,24 @@
from .argoverse_raw_data import ArgoverseRawSequence, ArgoverseRawSequenceLoader
from .argoverse_raw_data import (
DEFAULT_POINT_CLOUD_RANGE,
ArgoverseRawSequence,
ArgoverseRawSequenceLoader,
PointCloudRange,
)
from .argoverse_scene_flow import (
ArgoverseNoFlowSequence,
ArgoverseNoFlowSequenceLoader,
ArgoverseSceneFlowSequence,
ArgoverseSceneFlowSequenceLoader,
)
from .dataset import Argoverse2SceneFlow
from .dataset import Argoverse2CausalSceneFlow, Argoverse2NonCausalSceneFlow

__all__ = [
"Argoverse2SceneFlow",
"ArgoverseRawSequenceLoader",
"Argoverse2CausalSceneFlow",
"Argoverse2NonCausalSceneFlow",
"ArgoverseNoFlowSequence",
"ArgoverseNoFlowSequenceLoader",
"ArgoverseRawSequence",
"ArgoverseSceneFlowSequenceLoader",
"ArgoverseRawSequenceLoader",
"ArgoverseSceneFlowSequence",
"ArgoverseSceneFlowSequenceLoader",
]
Loading

0 comments on commit 70aeae9

Please sign in to comment.