Coder Social home page Coder Social logo

argoverse-api's Introduction

Python 3.7 Python 3.8 License: MIT Linux CI

Argoverse 2 API has been released! Check out our NeurIPS 2021 Datasets and Benchmarks publication to learn more about the datasets.


Argoverse API

Official GitHub repository for Argoverse dataset


Table of Contents

If you have any questions, feel free to open a GitHub issue describing the problem.


Installation

  • Linux
  • MacOS

1) Clone

  • Clone this repo to your local machine using: git clone https://github.com/argoai/argoverse-api.git

2) Download HD map data

  • Download hd_maps.tar.gz from our website and extract into the root directory of the repo. Your directory structure should look something like this:
argodataset
└── argoverse
    └── data_loading
    └── evaluation
    └── map_representation
    └── utils
    └── visualization
└── map_files
└── license
...

3) Download Argoverse-Tracking and Argoverse-Forecasting

We provide both the full dataset and the sample version of the dataset for testing purposes. Head to our website to see the download option.

  • Argoverse-Tracking provides track annotations, egovehicle poses, and undistorted, raw data from camera (@30hz) and lidar sensors (@10hz) as well as two stereo cameras (@5hz). We've released a total 113 scenes/logs, separated into 65 logs for training, 24 logs for validating, and 24 logs for testing. We've separated training data into smaller files to make it easier to download, but you should extract them all into one folder. We also provide sample data (1 log) in tracking_sample.tar.gz.

  • Argoverse-Forecasting contains 327790 sequences of interesting scenarios. Each sequence follows the trajectory of the main agent for 5 seconds, while keeping track of all other actors (e.g car, pedestrian). We've separated them into 208272 training sequences, 40127 validation sequences, and 79391 test sequences. We also provide sample data (5 sequences) in forecasting_sample.tar.gz.

Note that you need to download HD map data (and extract them into project root folder) for the API to function properly. You can selectively download either Argoverse-Tracking or Argoverse-Forecasting or both, depending on what type of data you need. The data can be extracted to any location in your local machine.

4) Install argoverse package

  • argoverse can be installed as a python package using

      pip install -e /path_to_root_directory_of_the_repo/
    

Make sure that you can run python -c "import argoverse" in python, and you are good to go!

(optional) Install mayavi

  • Some visualizations may require mayavi. See instructions on how to install Mayavi here.

(optional) Install ffmpeg

  • Some visualizations may require ffmpeg. See instructions on how to install ffmpeg here.

(optional) Stereo tutorial dependencies

  • You will need to install three dependencies to run the stereo tutorial:

    • Open3D: See instructions on how to install here.
    • OpenCV contrib: See instructions on how to install here.
    • Plotly: See instructions on how to install here.

(optional) Remake the object-oriented label folders

  • The track_labels_amodal folders contains object-oriented labels (in contrast to per-frame labels in per_sweep_annotations_amodal folders. Run following script to remake track_labels_amodal folders and fix existing issues:

      python3 argoverse/utils/make_track_label_folders.py argoverse-tracking/train/
    
      python3 argoverse/utils/make_track_label_folders.py argoverse-tracking/val/
    

Usage

The Argoverse API provides useful functionality to interact with the 3 main components of our dataset: the HD Map, the Argoverse Tracking Dataset and the Argoverse Forecasting Dataset.

from argoverse.map_representation.map_api import ArgoverseMap
from argoverse.data_loading.argoverse_tracking_loader import ArgoverseTrackingLoader
from argoverse.data_loading.argoverse_forecasting_loader import ArgoverseForecastingLoader
avm = ArgoverseMap()
argoverse_tracker_loader = ArgoverseTrackingLoader('argoverse-tracking/')    #simply change to your local path of the data
argoverse_forecasting_loader = ArgoverseForecastingLoader('argoverse-forecasting/') #simply change to your local path of the data

API documentation is available here. We recommend you get started by working through the demo tutorials below.


Demo

To make it easier to use our API, we provide demo tutorials in the form of Jupyter Notebooks.

To run them, you'll need to first install Jupyter Notebook pip install jupyter. Then navigate to the repo directory and open a server with jupyter notebook. When you run the command, it will open your browser automatically. If you lose the page, you can click on the link in your terminal to re-open the Jupyter notebook.

Once it's running, just navigate to the demo_usage folder and open any tutorial! Note that to use the tracking and forecasting tutorials, you'll need to download the tracking and forecasting sample data from our website and extract the folders into the root of the repo.

Argoverse Map Tutorial

Argoverse-Tracking Tutorial

Argoverse-Forecasting Tutorial

Rendering birds-eye-view

Run the following script to render cuboids from a birds-eye-view on the map.

$ python visualize_30hz_benchmark_data_on_map.py --dataset_dir <path/to/logs> --log_id <id of the specific log> --experiment_prefix <prefix of the output directory>

For example, the path to the logs might be argoverse-tracking/train4 and the log id might be 2bc6a872-9979-3493-82eb-fb55407473c9. This script will write to <experiment prefix>_per_log_viz/<log id> in the current working directory with images that look like the following:

It will also generate a video visualization at <experiment prefix>_per_log_viz/<log id>_lidar_roi_nonground.mp4

Rendering cuboids on images

Run the following script to render cuboids on images.

$ python cuboids_to_bboxes.py --dataset-dir <path/to/logs> --log-ids <id of specific log> --experiment-prefix <prefix for output directory>

This script can process multiple logs if desired. They can be passed as a comma separated list to --log-ids. Images will be written to <experiment prefix>_<log id> in the working directory that look like the following:

It will also generate video visualizations for each camera in <experiment prefix>_amodal_labels/

Rendering ground lidar points on images

Run the following script to render lidar points corresponding to the ground surface onto images.

$ python visualize_ground_lidar_points.py --dataset-dir <path/to/logs> --log-ids <comma separated list of logs>  --experiment-prefix <prefix for output directory>

This will produce images and videos will be in the directory <experiment prefix>_ground_viz/<log id>. Here is an example image:

Calibration and Stereo

For all log segments, accurate calibration between LiDAR and cameras enables sensor fusion approaches. In version 1.1 of Argoverse, we improved the stereo calibration significantly, as well.


A Note Regarding Coordinate Transforms

We provide a number of SE(3) and SE(2) coordinate transforms in the raw Argoverse data. The main notation we use is:

p_dst = dst_SE3_src * p_src or p_dst = dst_SE2_src * p_src. We'll describe the 6-dof transforms in more detail below:

  • Map pose: represents the location and orientation of the ego-vehicle inside the city (i.e. map) reference frame, city_SE3_egovehicle. We provide map pose for each log in poses/city_SE3_egovehicle_{nanosec_timestamp}.json. This transform brings a point in the egovehicle's reference frame into the city's reference frame.
  • Camera extrinsics: for each camera sensor, a variable named egovehicle_SE3_camera can be found in our log calibration files vehicle_calibration_info.json. When we form the extrinsics matrix in our API, we use its inverse, camera_SE3_egovehicle, i.e. to bring points into the camera coordinate frame before perspective projection.
  • Object labels: an egovehicle_SE3_object transformation is provided for each annotated cuboid, that takes points from the labeled object's reference frame (located at the object centroid), to the egovehicle's reference frame. This data is provided per LiDAR sweep at per_sweep_annotations_amodal/tracked_object_labels_{nanosec_timestamp}.json.

Note that for convenience, the LiDAR point cloud sweep data is provided directly in the ego-vehicle's coordinate frame, rather than in either of the LiDAR sensor frames. The ego-vehicle's reference frame is placed at the center of the rear axle (see Figure 3 of our paper, with "x" pointing forward, "z" pointing up, and "y" pointing to the left).

A simple example for understanding the object labels -- imagine the ego-vehicle is stopped at a 4-way intersection at a red light, and an object is going straight through the intersection with a green light, moving from left to right in front of us. If that labeled object is instantaneously 4 meters ahead of the egovehicle (+4 m along the x-axis), then the annotation would include the rotation to align the labeled object with the egovehicle's x-axis. Since we use the right-hand rule, we need a 90 degree rotation about the "z"-axis to align the object's x-axis with the egovehicle's x-axis. If (0,0,0) is the origin of the labeled object, to move itself into the egovehicle frame, you would need to add 4 to its x coordinate, thus adding the translation vector (4,0,0).

What about tracks in the forecasting dataset? These are provided directly in the city reference frame (i.e. the map coordinate system).


Baselines

We have also released the baseline codes for both 3D tracking and motion forecasting tasks. 3D Tracking code can be found at https://github.com/alliecc/argoverse_baselinetracker and Motion Forecasting code at https://github.com/jagjeet-singh/argoverse-forecasting


Contributing

Contributions are always welcome! Please be aware of our contribution guidelines for this project.


Disclaimer

Argoverse APIs are created by John Lambert, Patsorn Sangkloy, Ming-Fang Chang, and Jagjeet Singh to support "Chang, M.F. et al. (2019) Argoverse: 3D Tracking and Forecasting with Rich Maps, paper presented at The IEEE Conference on Computer Vision and Pattern Recognition (CVPR) (pp. 8748-8757). Long Beach, CA: Computer Vision Foundation." THIS SOFTWARE CODE IS INTENDED FOR RESEARCH PURPOSES ONLY AND IS NOT DESIGNATED FOR USE IN TRANSPORTATION OR FOR ANY OTHER DANGEROUS APPLICATION IN WHICH THE FAILURE OF SOFTWARE COULD CREATE A SITUATION WHERE PERSONAL INJURY OR DEATH MAY OCCUR.


License

We release our API under the MIT license. We retain the Apache 2.0 license on certain files. See LICENSE

Open-Source Libraries Using Argoverse

argoverse-api's People

Contributors

alliecc avatar benjaminrwilson avatar jagjeet-singh avatar james-hays avatar janesjanes avatar jhonykaesemodel avatar johnwlambert avatar jsinghargo avatar mgilson-argo avatar mriley-argo avatar mseg-dataset avatar pskugit avatar rnortman-argo avatar rockokw avatar schmidt-ju avatar seanremy avatar slowki avatar sohaibiftikhar avatar tagarwal-argoai avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

argoverse-api's Issues

Missing stereo baseline in the code

Thanks for your dataset. I have just found the last column of K is zero Link, so self.bx = K[0,3] / (-self.fu) = 0 / (-self.fu) = 0. Would it be possible to fix it?

argoverse module installation problem

when I run pip install -e /path_to_root_directory_of_the_repo/, it seems to git clone pyntcloud from github. But due to some reason, I cann't git clone from github, so is there another way to install argoverse module? Thank you very much.

Argoverse-tracking demo error: self._log_list: invalid syntax

Hi,

I've installed the API and all the dependencies per the documentation. When I'm trying to run the Argoverse-tracking demo, I'm getting the following error in the 1st cell:

argoverse-api/argoverse/data_loading/argoverse_tracking_loader.py", line 42
self._log_list: Optional[List[str]] = None
^
SyntaxError: invalid syntax

Am I missing something?

Thanks in advance

Object types in Forecasting dataset

I was working with argoverse dataset for vehicle trajectory model. I hope you can help me.

I need to extract trajectory of individual vehicles. Does Track ID define individual object.

And I need trajectories of vehicles.

On the website it says that dataset includes 15 types of objects. But I have seen only 3 object types:

  1. Agent
  2. AV
  3. OTHERS

Which one is vehicle?

Thank you in advance. Appreciate dataset.

Argoverse under Windows

Hi, thanks a lot for the dataset. Is there any particular reason, why the code wont work under Windows, or is it just that no one tried yet? I am planning to give it a try, so just wondering if it wont be a waste of effort...
Thanks a lot.

Synchronization issue while instantiating ArgoverseTrackingLoader

Hello,
I receive the following error message while instantiating ArgoverseTrackingLoader using the entire dataset.

##ArgoverseTrackingLoader
import argoverse
from argoverse.data_loading.argoverse_tracking_loader import ArgoverseTrackingLoader

##set root_dir to the correct path to your dataset folder
root_dir = '../../argoverse-tracking/test/'

argoverse_loader = ArgoverseTrackingLoader(root_dir)

print('Total number of logs:',len(argoverse_loader))
argoverse_loader.print_all()

ERROR:argoverse.data_loading.synchronization_database:No corresponding image: 120.935344 > 100.0 ms
ERROR:argoverse.data_loading.synchronization_database:No corresponding image: 120.9344 > 100.0 ms
ERROR:argoverse.data_loading.synchronization_database:No corresponding image: 100.002096 > 100.0 ms
ERROR:argoverse.data_loading.synchronization_database:No corresponding image: 117.39392 > 100.0 ms
ERROR:argoverse.data_loading.synchronization_database:No corresponding image: 117.396904 > 100.0 ms
ERROR:argoverse.data_loading.synchronization_database:No corresponding image: 118.257336 > 100.0 ms
ERROR:argoverse.data_loading.synchronization_database:No corresponding image: 118.252632 > 100.0 ms

Forecasting: missing AV's first TIMESTAMP

First of all, thank you for sharing this dataset, which will be really useful for the research community.

I noticed that, in the forecasting dataset, the first TIMESTAMP contains the Agent's and Others' locations, but none for the AV. I guess there should be good reason for that...

Thank's!

How to remove annotations on non-driveable area in "per_sweep_annotations_amodal" json files?

Hi,
We used "leave_only_roi_region" which Return points that are on driveable area, and non-ground points.

But when we are using annotations data in "per_sweep_annotations_amodal" json files, how to remove annotations on non-driveable area. Is there is any API to preprocessing way to remove redundant annotation data after removing non-driveable area from pointcloud.

Kindly help

question on lidar geometry

There is two roof-mounted LiDAR sensors in Argo's vehicle, but the data set is only giving one Lidar data set. I would like to know which Lidar's data is published.
Also, just want to confirm that the lidar point cloud is in ego's coordinate frame, right?

Coordinates for labels clarification

Greetings.

As I am working with the data, I could not find the coordinates for which labels are used. I noticed that you did a transformation to get them into the ego-vehicle frame, so I assume the labels are in LIDAR frame? Which LIDAR?

self.get_lane_ids_in_xy_bbox() function?

why the self.get_lane_ids_in_xy_bbox() function returns a list that means the lane id? I think the lane segment should have an unique id? For example, in the get_lane_segment_predecessor_ids() function, the input args lane_segment_id is a int type. THX.

whats the margin of error of localization?

Thanks for the dataset!
I did some visualization on the dataset and found that sometimes the velocity of the agent can change very fast between the continuous frames. It seems like the margin of error of localization is [-0.5m, 0.5m] by mine rough estimation. Is there any description for margin of error of localization?

Problematic "render_bev_labels_mpl" function

First of all, thank you very much for providing this amazing dataset api! It makes autonomous driving research much easier.
However, I noticed several potential problems with the following function: render_bev_labels_mpl inside argoverse-api/demo_usage/visualize_30hz_benchmark_data_on_map.py:

  1. It seems like by passing "city axis" in the argument, the function gives me "ego coordinates". Passing "ego axis" gives me city coordinates. This can be illustrated by leaving only the lidar bev plotting part of the code and comment everything out:
    Plotting Lidar in ego axis:
    lidar_ego0

Plotting Lidar in city axis:
lidar_city0
Visually, the 2nd one looks more like in ego coord.

  1. Whenever I plot driveable area (da) and lane polygons in "ego axis", all the da and polygon disappear, leaving me a blank plot. This can be illustrated by leaving only the da and polygon part of the code and comment everything else:

Plotting da and polygon in ego axis:
lane_ego0
Plotting da and polygon in city axis (This seems to work. But again this looks more like in ego coord):

lane_city0

  1. In the current implementation, lidar bev is always bundled with "ego axis" so that you have to plot lidar in "ego axis". In "city axis", you do not have the option to even plot lidar. I think it would be great to give user the choice to choose whether or not to include lidar bev in the plot.

For my research, I try to generate driveable area and lane line on the map in ego coordinates for every frame in every log. I spent 2 days try to debug but could not figure it out. If you can take a look, it would be very helpful! I really appreciate it!

Does the map data have curvature information of the road?

I have gone through some of the code for loading the map data. It does a good job of explaining what is being done. But I want to understand whether it contains curvature information of the road, can you please provide info on this?

Supplemental Material of paper?

Hi, I don't see the Supplemental Material in the end of the paper, can you tell me where I can get these supplemental materal?

About the motion forecasting dataset

First of all, thank you for sharing this dataset.
I have a problem, whether we have the video of forecasting dataset.
Maybe it will be released? Our group are very interested in it.
Thank you~

Filtering out instances with stop signs

I'm looking at a particular problem where I need to filter out instances for forecasting where actors/AV paused at a stop sign and then continued motion. I was trying to go through the map API to get annotated labels of lanes, etc. but couldn't find anything. Any guidance on what's the best way to extract such data?

Traffic signs in HD map

Does the HD map also contain the traffic signs in the intersections? They don't seem to be part of the tracking.

Details on forecasting baselines...

Hi,

I would like to get a few more details on the forecasting baselines.

  1. Is there a function in the API which converts back the trajectory from lane coordinate system back to city coordinates? (nt to xy)
  2. What are the map features m? Are those lane attributes like "is_intersection", "turn_direction", etc.?
  3. For NN+map only the trajectory coordinates that are converted to lane coordinates for a different hypothesis of lane centerlines are given as input to NN model? While for LSTM+map baseline the lane coordinates + some attributes are given as input?
  4. Are those map attributes given as input same over time for a particular trajectory?

installation error

Hello! I try to install the package and failed with the following messages:

error in argoverse setup command: 'install_requires' must be a string or list of strings containing valid project/version requirement specifiers; Expected version spec in pyntcloud @ git+https://github.com/daavoo/pyntcloud#egg=pyntcloud-0.1.0 at @ git+https://github.com/daavoo/pyntcloud#egg=pyntcloud-0.1.0

python: 3.6.1
pip: 19.2.3
setuptools: 41.2.0

Annotations Quality Problems

I find some bad annotations. If these bad annotations are corrected, it would be benefical to training improvment.
example 1 : truck lidar points are out of cuboid. log 00c561b9-2057-358d-82c6-5b06d76cebcf ,
frame index 298
example 2 : Vehicles with incorrect annotations in the background
example 3 : two cars boxes are completely overlaping

Frequency about LiDAR point cloud data

Hi,

I found 13,395 pcs in training set, 4,816 pcs in val set and 4,189 pcs in test set. However, I did not find the frequency information about these pc records. What is the time interval between two successive pcs?

Trouble with result submission for forecasting on evalAI

I am getting the error "You have 0 submissions that are being processed. Please wait for them to finish and then try again" when submitting my results on [https://evalai.cloudcv.org/web/challenges/challenge-page/454/submission]. I used the upload file option and the size of the submission was 26 MB.
image

Filtering trajectories values (x,y locations, signal processing)

Hi again,

I think it makes sense to pre-process the trajectories: for instance, agent's heading computation is very sensitive to noisy data.

What I'm doing, from a batch processing approach (off-line processing) is a parametric curve fitting: I fit separately x and y locations with two polynomials with degree=3, using a parameter t from 0 to 1. After that, using this polynomials evaluated in t I get quite well filtered x and y locations, and for even complex trajectories this low order polys work well. My concerns are:

  1. Any suggestion for a better filtering technique? I tried golay filtering, but it does not smooth too much...
  2. For a real time processing approach: Klaman (EKF,UKF) or particle filtering would work well?

wrong labeled object

Hi, I'm using argo dataset, I find some wrong label for car when checking the dataset, for example, in sequence 75756160_7575_7575_7575_675757273088, for object whose tracking id is 64, start from PC_315980055919835000, is wrong labeled for about 10 frames,
image
the red one.

what's more, in the sequence,PC_315980061220240000, one object is not labeled:

image

I think maybe you should carefully check the quality of label.

Baselines for forecasting: Validatation or Test Dataset

Are the results of the baselines mentioned in the paper on the validation dataset or the test dataset?
Also, what are the OTHERS object_type mentioned in the csv files? Are they just cars or can they be bicyclist/ pedestrian as well? Is it possible to get more information on them?

Labels for the forecasting dataset?

Finally there is a dataset for trajectory prediction! Thank you for all the hard work sifting through the driving data just to extract the interesting data for prediction. I was wondering whether there are labels for the observed vehicles in terms of what they did in the data segments, such as lane change, turn left, etc. These are very useful for intention and trajectory prediction tasks.

Visualizing 2 stereo images

I see there is a make_grid_ring_camera function to generate images with bounding boxes in argoverse/visualization/visualization_utils.py.

Is there a similar function call for stereo images?

Access to only one lidar pointcloud

Is it possible to access to only the upper or the lower lidar pointclouds?
I have managed to calculate it, (the code is here), but maybe there is an easier way...

Questions on coordinate transform

Hi, thanks for this amazing dataset api! While using the API, I have a few coordinate transform related questions:

  1. I am very confused on which of the following raw data are in city coord and which are in ego coord: lidar pointcloud, ground truth 2D/3D bboxes, driveable area and lane polygons.
  2. Which function should I use to convert driveable area and lane polygons to city coord? And which function to use to convert them to ego coord?
  3. What is SE3 transform? It is for city->ego transform or ego->city?

If you can take a look, it would be awesome. Thanks!

Map Features over Prediction Interval

4. The map features also should change over time.

Originally posted by @jagjeet-singh in #47 (comment)

Question regarding map features -- if the map features change over time - do you mean that when we are using models like NN + map -- we are also predicting the map features over time ??

For example, at an intersection - the lane information can change (when the car goes left / right) - but the fact that the map is that of an intersection does not change. So how do you handle these scenarios in the prediction?

Forecasting API extremely slow...

The forecasting API is extremely slow when working with the train data set... I don't know if this issue is only happening to me... When working on the sample data set, everything works well

"No nearby lanes found"

afl = ArgoverseForecastingLoader(root_dir)
avm = ArgoverseMap()
seq_paths=glob.glob(f"{root_dir}/*.csv")
for seq_path in seq_paths:
    agent_obs_traj = afl.get(seq_path).agent_traj[:obs_len]
    candidate_centerlines = avm.get_candidate_centerlines_for_traj(agent_obs_traj, afl[1].city,viz=False)

I am getting "No nearby lanes found" for almost fifty percent of the trajectory sequences. However, I checked a few visualizations and the trajectories are near lanes.

Is the vehicle action information included in the Motion Forecasting datasets ?

This dataset is great, and it is very helpful for some related research. I have two qustions for you as described below.

  1. Is the vehicle action information included in the Motion Forecasting datasets ? vehicle action maybe classified into sevral classes: lane keeping, left lane change, right lane change, turn right, turn left, U turn ?
  2. Can we acess to velocity and orientation of vehicle in the Motion Forecasting datasets ?

Usefulness of the dataset for vulnerable road user is limited by the blurred pedestrian faces

Hello,
Thank you for the dataset. I am a master student at TU Delft in the faculty of cognitive robotics working on motion forecasting for Vulnerable Road Users. My work requires the extraction of important contextual cues from the image along with the position to predict the future trajectory of pedestrian/cyclist.
And as such, it would be super helpful if the dataset contained naturalistic driving scenarios without the pedestrian's faces being blurred, as any work with a blurred face in the dataset would induce an artificial bias.
So, is there a possibility of getting the dataset without the faces being blurred?

Code for forecasting task?

Publishing the code for baseline models for forecasting task would be much appreciated. Baseline results look really interesting and would push the state-of-the-art for map based prediction if the baseline models are available, especially the LSTM models.

Coordinate transform problem

I have some question about coordinate transform.

First, what is the explicit definition of 2-d curvilinear coordinate system with axes tangential and perpendicular to the lane centerline(as explained in the argoverse paper in CVPR, Argoverse: 3D Tracking and Forecasting with Rich Maps: we define a 2-d curvilinear coordinate system with axes tangential and perpendicular to the lane centerline.), it is easy to understand when the lane is straight, but it is confused to me when the center line of the reference lane is a curve.

Second, how can I transform the city coodinate to some lane coordinate.

Thirdly, is there some demo or document about often used coordinate transform?

Question on projecting image with depth to camera coordinate

While using this API, we found the following code confusing:
The input for this function is (u, v, depth), with u and v in the unit of pixel number, while the output for this function is (x,y,z), with x and y in the unit of meter. Is it proper to passthrough the input to output directly?

def project_image_to_cam(self, uv_depth: np.array) -> np.ndarray:
        """ Project 2D image with depth to camera coordinate.

        Args:
            uv_depth: nx3 first two channels are uv, 3rd channel
               is depth in camera coord.

        Returns:
            nx3 points in camera coord.
        """

        return uv_depth

Here is the path for the affected file:
Argoverse/utils/calibration.py

Pls refer to the utils for KITTI dataset as a reference: https://github.com/MengshiLi/pseudo_lidar/blob/psmnet_train/preprocessing/kitti_util.py

Also here is another piece of code that shares the same issue:

def project_image_to_ego(self, uv_depth: np.array) -> np.ndarray:
        """ Project 2D image with depth to egovehicle coordinate.

        Args:
            uv_depth: nx3 first two channels are uv, 3rd channel
               is depth in camera coord. So basically in image coordinate.

        Returns:
            nx3 points in ego coord.
        """

        return np.linalg.inv(self.extrinsic).dot(self.cart2hom(uv_depth).transpose()).transpose()[:, 0:3]

Misalignment of the 3D bounding box on the image

Hi,

Great thanks for your great work.
I am curious about the labeling process. Do you label the 3D bounding box purely on the point cloud or also cross-validate on the image?
I observe some misalignment issues when projecting the 3D bounding box on the image, especially for the further objects. I wonder it is due to the label accuracy or calibration accuracy?

p3
p2
p1

Any answer will be appreciated.

Normalization in forecasting dataset

Hey thanks a lot for the dataset. Looking forward for your baseline codes. I would like to clarify on how you had normalized the trajectories for training. The paper mentions that the trajectory starts at origin for all the AGENTS and goes in the positive x direction. I would like to know how you had aligned these trajectories? Also, how is y at T_obs = 0? Kindly clarify. Thank you once again!

Windows unsupported should be bold

Hi,

I was excited to try this out and overlooked the statement that it's only supported on linux mac, and then only realized this after setting up a project and trying to pip-install. Any issue if we make this more salient on the readme?

Requires Linux/MacOS, git, and Python 3.6+

vs (in bold)

Requires Linux/MacOS, git, and Python 3.6+.  **Windows not supported.**

Also, why is Windows not supported? Is this something we could work on for you?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.