Closed TianQi-777 closed 2 years ago
Hi @TianQi-777,
You may consider using the Waymo dataset waymo_open_dataset_motion_v_1_1_0/uncompressed/scenario
. Convert the Waymo dataset to an equivalent SMARTS dataset, and then use the equivalent SMARTS dataset to train your model.
scl waymo overview
and scl waymo preview
commands.scl waymo export
command.Please note that we are unable to provide or distribute a Waymo dataset which has already been converted into an equivalent SMARTS dataset, due to Waymo dataset's terms and conditions.
A subset of Waymo dataset which have useful and interesting trajectories are provided here. This subset may be used to focus the training. The provided data conversion tool can be used to convert these datasets into an equivalent SMARTS dataset.
Please note that Track-2 is an offline learning track. Here, participants are required to submit their training code for the competition organizers to re-train a new model from scratch using hidden SMARTS dataset. The newly trained model will then be evaluated.
Once you have developed a solution for Track2, you are required to upload a Docker image of your training code to DockerHub. Do not include any pre-trained models in your uploaded Docker image. During evaluation in the competition organizer's server, your Docker image will be pulled and executed as follows.
$ docker run --rm -it \
--volume=<path>/offline_dataset:/SMARTS/competition/offline_dataset
--volume=<path>/output:/SMARTS/competition/output
<username/imagename:version>
The competition organizer will supply hidden SMARTS dataset to the container via a mapped volume at /SMARTS/competition/offline_dataset
directory. Upon executing the above command, the training code inside the container should start training a new model from scratch by using the newly supplied SMARTS dataset from the container path /SMARTS/competition/offline_dataset
. The resulting re-trained model from the container will then be copied out and evaluated in a manner identical to that of Track1.
Thank you for your reply. Does this mean that we don't have access to the dataset that the competition ultimately uses for evaluation, as you said, the final evaluation dataset is hidden.
However, we can arbitrarily download some scene datasets in Waymo Open Motion or Next Generation Simulation (NGSIM) for evaluating and testing our algorithm, then upload this code to codalab in the form of docker, and finally the organizer runs our code to evaluate the algorithm on unified hidden datasets.
In general, the participants do not have access to the dataset that is ultimately used for evaluation? In other words, we does not know the offline dataset for the final evaluation?
Hi @TianQi-777 ,
The offline training set consists of subsets of NGSIM and Waymo Motion Open dataset that is similar to the subset we specified here.
To develop your offline model, you can download the NGSIM and Waymo Motion Open dataset and extract the scenes listed in the subset using the tools mentioned above. The provided subset has useful and interesting trajectories.
We hope the above addresses your question and thus this issue is being closed. Please feel free to reopen this issue if your doubts persist or open a new issue for other questions.
Hi,
I have followed the above process to generate SMARTS dataset from the Waymo Motion Open dataset, but while generating, there are some scenarios raising the error:
INFO:ObservationRecorder:t=8.6, active_vehicles=1
INFO:ObservationRecorder:t=8.7, active_vehicles=1
INFO:ObservationRecorder:t=8.8, active_vehicles=1
INFO:ObservationRecorder:t=8.9, active_vehicles=1
INFO:ObservationRecorder:t=9.0, active_vehicles=1
INFO:ObservationRecorder:No more vehicles. Exiting...
Waiting on offline_dataset/fd4652b5ddc69783/. ...
WARNING:WaymoMap:ignoring 'entry_lane' feature=718 for feature=711 as it only has a single point in its polyline.
Process Process-1:
Traceback (most recent call last):
File "/usr/lib/python3.8/multiprocessing/process.py", line 315, in _bootstrap
self.run()
File "/usr/lib/python3.8/multiprocessing/process.py", line 108, in run
self._target(*self._args, **self._kwargs)
File "/root/workspace/rlbench/neurips22_comp/SMARTS/cli/studio.py", line 79, in _build_single_scenario_proc
build_single_scenario(clean, allow_offset_map, scenario, seed, click.echo)
File "/root/workspace/rlbench/neurips22_comp/SMARTS/smarts/sstudio/build_scenario.py", line 66, in build_single_scenario
road_map, _ = map_spec.builder_fn(map_spec)
File "/root/workspace/rlbench/neurips22_comp/SMARTS/smarts/core/default_map_builder.py", line 148, in get_road_map
road_map = map_class.from_spec(map_spec)
File "/root/workspace/rlbench/neurips22_comp/SMARTS/smarts/core/waymo_map.py", line 933, in from_spec
return cls(map_spec, waymo_scenario)
File "/root/workspace/rlbench/neurips22_comp/SMARTS/smarts/core/waymo_map.py", line 131, in __init__
self._lanepoints = LanePoints.from_waymo(
File "/root/workspace/rlbench/neurips22_comp/SMARTS/smarts/core/lanepoints.py", line 491, in from_waymo
_, new_lps = _shape_lanepoints_along_lane(
File "/root/workspace/rlbench/neurips22_comp/SMARTS/smarts/core/lanepoints.py", line 474, in _shape_lanepoints_along_lane
for out_lane in curr_lane.outgoing_lanes:
File "/opt/.venv/lib/python3.8/site-packages/cached_property.py", line 36, in __get__
value = obj.__dict__[self.func.__name__] = self.func(obj)
File "/root/workspace/rlbench/neurips22_comp/SMARTS/smarts/core/waymo_map.py", line 1185, in outgoing_lanes
return [
File "/root/workspace/rlbench/neurips22_comp/SMARTS/smarts/core/waymo_map.py", line 1186, in <listcomp>
self._map.lane_by_id(ol) for ol in self._lane_dict["outgoing_lane_ids"]
File "/root/workspace/rlbench/neurips22_comp/SMARTS/smarts/core/waymo_map.py", line 1560, in lane_by_id
assert lane, f"WaymoMap got request for unknown lane_id: '{lane_id}'"
AssertionError: WaymoMap got request for unknown lane_id: '359'
WARNING:WaymoMap:ignoring 'entry_lane' feature=718 for feature=711 as it only has a single point in its polyline.
Traceback (most recent call last):
File "examples/traffic_histories_to_observations.py", line 386, in <module>
recorder = ObservationRecorder(
File "examples/traffic_histories_to_observations.py", line 64, in __init__
self._scenario = next(scenario_iter)
File "/root/workspace/rlbench/neurips22_comp/SMARTS/smarts/core/scenario.py", line 202, in variations_for_all_scenario_roots
agent_missions = Scenario.discover_agent_missions(
File "/root/workspace/rlbench/neurips22_comp/SMARTS/smarts/core/scenario.py", line 297, in discover_agent_missions
road_map, _ = Scenario.build_map(scenario_root)
File "/root/workspace/rlbench/neurips22_comp/SMARTS/smarts/core/scenario.py", line 459, in build_map
return map_spec.builder_fn(map_spec)
File "/root/workspace/rlbench/neurips22_comp/SMARTS/smarts/core/default_map_builder.py", line 148, in get_road_map
road_map = map_class.from_spec(map_spec)
File "/root/workspace/rlbench/neurips22_comp/SMARTS/smarts/core/waymo_map.py", line 933, in from_spec
return cls(map_spec, waymo_scenario)
File "/root/workspace/rlbench/neurips22_comp/SMARTS/smarts/core/waymo_map.py", line 131, in __init__
self._lanepoints = LanePoints.from_waymo(
File "/root/workspace/rlbench/neurips22_comp/SMARTS/smarts/core/lanepoints.py", line 491, in from_waymo
_, new_lps = _shape_lanepoints_along_lane(
File "/root/workspace/rlbench/neurips22_comp/SMARTS/smarts/core/lanepoints.py", line 474, in _shape_lanepoints_along_lane
for out_lane in curr_lane.outgoing_lanes:
File "/opt/.venv/lib/python3.8/site-packages/cached_property.py", line 36, in __get__
value = obj.__dict__[self.func.__name__] = self.func(obj)
File "/root/workspace/rlbench/neurips22_comp/SMARTS/smarts/core/waymo_map.py", line 1185, in outgoing_lanes
return [
File "/root/workspace/rlbench/neurips22_comp/SMARTS/smarts/core/waymo_map.py", line 1186, in <listcomp>
self._map.lane_by_id(ol) for ol in self._lane_dict["outgoing_lane_ids"]
File "/root/workspace/rlbench/neurips22_comp/SMARTS/smarts/core/waymo_map.py", line 1560, in lane_by_id
assert lane, f"WaymoMap got request for unknown lane_id: '{lane_id}'"
AssertionError: WaymoMap got request for unknown lane_id: '359
or
INFO:ObservationRecorder:t=8.7, active_vehicles=1
INFO:ObservationRecorder:t=8.8, active_vehicles=1
INFO:ObservationRecorder:t=8.9, active_vehicles=1
INFO:ObservationRecorder:t=9.0, active_vehicles=1
INFO:ObservationRecorder:No more vehicles. Exiting...
Waiting on offline_dataset/57e0125d067b6bad/. ...
Process Process-1:
Traceback (most recent call last):
File "/usr/lib/python3.8/multiprocessing/process.py", line 315, in _bootstrap
self.run()
File "/usr/lib/python3.8/multiprocessing/process.py", line 108, in run
self._target(*self._args, **self._kwargs)
File "/root/workspace/rlbench/neurips22_comp/SMARTS/cli/studio.py", line 79, in _build_single_scenario_proc
build_single_scenario(clean, allow_offset_map, scenario, seed, click.echo)
File "/root/workspace/rlbench/neurips22_comp/SMARTS/smarts/sstudio/build_scenario.py", line 75, in build_single_scenario
road_map.to_glb(os.path.join(scenario_root, "map.glb"))
File "/root/workspace/rlbench/neurips22_comp/SMARTS/smarts/core/waymo_map.py", line 989, in to_glb
glb = self._make_glb_from_polys()
File "/root/workspace/rlbench/neurips22_comp/SMARTS/smarts/core/waymo_map.py", line 1014, in _make_glb_from_polys
lane_dividers = self._compute_traffic_dividers()
File "/root/workspace/rlbench/neurips22_comp/SMARTS/smarts/core/waymo_map.py", line 1034, in _compute_traffic_dividers
assert lane_to_left
AssertionError
WARNING:ObservationRecorder:No vehicle IDs specifed. Defaulting to ego vehicle (202)
INFO:ObservationRecorder:t=0, active_vehicles=0
Is there any problem with this converted dataset? Is this possible to use it for training?
Hi @tunglm2203. Were any of these scenarios from the selected datasets, or were they chosen by you? Unfortunately SMARTS cannot currently handle some of the Waymo scenarios due to issues with the maps (specifically, maps with single-point polylines). This applies to roughly 15% of the Waymo dataset. I would recommend using other scenarios for now.
Hi @saulfield, I extract exactly from the suggested subset. Do you experience the same problem when using that subset?
Hi @tunglm2203,
waymo_candid_list.csv
which are in question here.
High Level Description 2022 NeurIPS Driving SMARTS Competition - track 2 - Which datasets should we use to train the model?
Desired SMARTS version 0.4.12
Operating System ubuntu 20.04
Problems 2022 NeurIPS Driving SMARTS Competition - track 2 - Which datasets should we use to train the model? In the Data and Model section of README: Track-2: Offline Learning, the organizer said that the training data should use Waymo Open Motion or Next Generation Simulation (NGSIM). However, we found that the data of Waymo Open Motion is very large (>1T) and contains many scenarios. If Waymo Open Motion is used for training, which scenario dataset should be used? Also, we noticed that in the Dockerfile, DockerHub, Training, and Evaluation section (8), the organizer said New offline dataset is made available to the container via a mapped volume at /SMARTS/competition/offline_dataset directory. Does this mean that we should use the data in the container as training data, and if so, the description of Data and Model section is confusing and misleading.