Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Evaluate performance of object detection pipeline #565

Closed
6 tasks done
mitsudome-r opened this issue Mar 22, 2022 · 12 comments · Fixed by autowarefoundation/perception_benchmark_tool#1
Closed
6 tasks done
Assignees
Labels
component:perception Advanced sensor data processing and environment understanding. (auto-assigned) priority:high High urgency and importance.

Comments

@mitsudome-r
Copy link
Member

mitsudome-r commented Mar 22, 2022

Checklist

  • I've read the contribution guidelines.
  • I've searched other issues and no duplicate issues were found.
  • I've agreed with the maintainers that I can plan this task.

Description

Evaluate performance of perception pipeline.

Purpose

Evaluate performance of perception pipeline to confirm if current perception has enough capability for BGus

Possible approaches

Find available open datasets for evaluation and do benchmark testing.
Possible datasets:

Definition of done

  • plan data conversion for open datasets to feed into Autoware perception pipeline
  • Develop benchmark tools to test perception pipeline
  • Run tests on datasets and make results available in public. (e.g. in documentation)
@mitsudome-r mitsudome-r changed the title Evaluate performance of perception pipeline Evaluate performance of object detection pipeline Mar 22, 2022
TakumiKozaka-T4 pushed a commit to TakumiKozaka-T4/autoware.universe that referenced this issue Mar 23, 2022
* Ros2 v0.8.0 topic state monitor (autowarefoundation#283)

* Add node_name_suffix to topic_state_monitor.launch (autowarefoundation#1157) (autowarefoundation#370)

Signed-off-by: Kenji Miyake <kenji.miyake@tier4.jp>

* fix launch file (autowarefoundation#411)

* add transient local option to topic state monitor (autowarefoundation#410)

* add transient local option to topic state monitor

* sort parameters

* sort parameter

* [topic_state_monitor]: Add best effort option (autowarefoundation#430)

Signed-off-by: autoware <autoware@example.com>

Co-authored-by: autoware <autoware@example.com>

* add use_sim-time option (autowarefoundation#454)

* Fix for rolling (autowarefoundation#1226)

* Replace doc by description

Signed-off-by: Kenji Miyake <kenji.miyake@tier4.jp>

* Replace ns by push-ros-namespace

Signed-off-by: Kenji Miyake <kenji.miyake@tier4.jp>

* change to composable node (autowarefoundation#1233)

* Unify Apache-2.0 license name (autowarefoundation#1242)

* Remove use_sim_time for set_parameter (autowarefoundation#1260)

Signed-off-by: wep21 <border_goldenmarket@yahoo.co.jp>

* Fix lint errors (autowarefoundation#1378)

* Fix lint errors

Signed-off-by: Kenji Miyake <kenji.miyake@tier4.jp>

* Fix variable names

Signed-off-by: Kenji Miyake <kenji.miyake@tier4.jp>

* Use integrated generic subscription (autowarefoundation#1342)

Signed-off-by: wep21 <border_goldenmarket@yahoo.co.jp>

* suppress warnings for declare parameters (autowarefoundation#1724)

* fix for lanelet2_extension

* fix for traffic light ssd fine detector

* fix for topic_state_monitor

* fix for dummy diag publisher

* fix for remote cmd converter

* fix for vehicle_info_util

* fix for multi object tracker

* fix for freespace planner

* fix for autoware_error_monitor

* add Werror for multi object tracker

* fix for multi object tracker

* add Werror for liraffic light ssd fine detector

* add Werror for topic state monitor

* add Werror

* add Werror

* add Werror

* add Werror

* fix style

* Fix -Wunused-parameter (autowarefoundation#1836)

* Fix -Wunused-parameter

Signed-off-by: Kenji Miyake <kenji.miyake@tier4.jp>

* Fix mistake

Signed-off-by: Kenji Miyake <kenji.miyake@tier4.jp>

* fix spell

* Fix lint issues

Signed-off-by: Kenji Miyake <kenji.miyake@tier4.jp>

* Ignore flake8 warnings

Signed-off-by: Kenji Miyake <kenji.miyake@tier4.jp>

Co-authored-by: Hiroki OTA <hiroki.ota@tier4.jp>

* Change formatter to clang-format and black (autowarefoundation#2332)

* Revert "Temporarily comment out pre-commit hooks"

This reverts commit 748e9cdb145ce12f8b520bcbd97f5ff899fc28a3.

* Replace ament_lint_common with autoware_lint_common

Signed-off-by: Kenji Miyake <kenji.miyake@tier4.jp>

* Remove ament_cmake_uncrustify and ament_clang_format

Signed-off-by: Kenji Miyake <kenji.miyake@tier4.jp>

* Apply Black

Signed-off-by: Kenji Miyake <kenji.miyake@tier4.jp>

* Apply clang-format

Signed-off-by: Kenji Miyake <kenji.miyake@tier4.jp>

* Fix build errors

Signed-off-by: Kenji Miyake <kenji.miyake@tier4.jp>

* Fix for cpplint

* Fix include double quotes to angle brackets

Signed-off-by: Kenji Miyake <kenji.miyake@tier4.jp>

* Apply clang-format

Signed-off-by: Kenji Miyake <kenji.miyake@tier4.jp>

* Fix build errors

Signed-off-by: Kenji Miyake <kenji.miyake@tier4.jp>

* Add COLCON_IGNORE (autowarefoundation#500)

Signed-off-by: Kenji Miyake <kenji.miyake@tier4.jp>

* remove COLCON_IGNORE in system_packages and map_tf_generator (autowarefoundation#532)

* [topic_state_monitor]add readme (autowarefoundation#565)

* add readme

* Update system/topic_state_monitor/Readme.md

Co-authored-by: Kazuki Miyahara <kmiya@outlook.com>

* Update system/topic_state_monitor/Readme.md

Co-authored-by: Kazuki Miyahara <kmiya@outlook.com>

* Update system/topic_state_monitor/Readme.md

Co-authored-by: Kazuki Miyahara <kmiya@outlook.com>

* Update system/topic_state_monitor/Readme.md

Co-authored-by: Kazuki Miyahara <kmiya@outlook.com>

* Update system/topic_state_monitor/Readme.md

Co-authored-by: Kazuki Miyahara <kmiya@outlook.com>

Co-authored-by: Kazuki Miyahara <kmiya@outlook.com>

Co-authored-by: Daisuke Nishimatsu <42202095+wep21@users.noreply.github.com>
Co-authored-by: Ryohsuke Mitsudome <43976834+mitsudome-r@users.noreply.github.com>
Co-authored-by: autoware <autoware@example.com>
Co-authored-by: Kenji Miyake <31987104+kenji-miyake@users.noreply.github.com>
Co-authored-by: Taichi Higashide <taichi.higashide@tier4.jp>
Co-authored-by: Kazuki Miyahara <kmiya@outlook.com>
Co-authored-by: Hiroki OTA <hiroki.ota@tier4.jp>
Co-authored-by: Takeshi Miura <57553950+1222-takeshi@users.noreply.github.com>
Co-authored-by: taikitanaka3 <65527974+taikitanaka3@users.noreply.github.com>
@BonoloAWF BonoloAWF added this to the Bus ODD Jul Milestone milestone Mar 23, 2022
@BonoloAWF BonoloAWF added the priority:high High urgency and importance. label Mar 23, 2022
@kaancolak
Copy link
Contributor

In the Autoware.Auto, we have 2D and 3D detection benchmark tools for the KITTI dataset. We can test our 2D/3D detections by integrating these tools into Autoware.Universe.

In addition, I think, we need to evaluate the entire perception stack of Autoware.Universe from sensor output(Point Cloud/Camera Frame) to object tracking output, because all perception modules work together. Such as; deterministic and deep learning-based 3D bounding boxes are based merged or tracking results are merged with detected objects. For object tracking, the KITTI dataset has only 2D bounding box-based evaluation. For this reason, we are planning to implement Waymo dataset for 3D detection & tracking evaluation.

@kaancolak
Copy link
Contributor

kaancolak commented Apr 11, 2022

waymo

I shared high-level architecture for the planned perception benchmark pipeline. If you have any comments feel free to share them with us.

Limitations when benchmarking with the Waymo dataset:

  • We don't have PCD/Vector Map information from the Waymo dataset. The current perception pipeline can run with/or without PCD Map.
  • In our codebase, a cylindrical prism is used when assigning shapes to pedestrians, we need 3D bounding boxes for pedestrians when evaluating with the Waymo dataset.

Current situation:

  • I created a ROS interface that contains data conversion functionalities for the Waymo dataset.
  • I fed the data from the Waymo dataset to the lidar-only Autoware.Universe pipeline.

Img alt text

There is small jittering I think caused by localization, base_link - global frame transformation.

@aohsato aohsato added the component:perception Advanced sensor data processing and environment understanding. (auto-assigned) label Apr 14, 2022
@kaancolak
Copy link
Contributor

I shared the initial 3D tracking benchmark results in the README file of the PR. It contains only the results of the lidar-only pipeline.

For vehicles, everything works fine, but for pedestrians, we are giving a constant length and width size to the pedestrian bounding boxes in Autoware.Universe, it's equal to 1 meter. But, Waymo Dataset has so strict IoU scores for matching tracked ground truth objects and predictions. When we give a fixed size to pedestrians, it falls below the cutoff score. (Vehicle: 0.7 , Pedestrian and Cyclist: 0.5)

I will write a detailed explanation under the PR. If you have any suggestions or advice please share them.

@WJaworskiRobotec
Copy link
Contributor

@kaancolak I'm wondering if using Waymo Open Dataset Toolkit for evaluation is a good idea. I understand that the best solution would be to make it possible to use the same metric calculation software for Waymo, Kitti ( + other open datasets), as well as with synthetic data generated in the simulators. In this case, as Autoware is based on ROS2, it would be perfect to have metric calculation based on ROS topics directly, optionally on rosbags (like we develop in this issue) What is your opinion ? I'm not really familiar with Waymo Open Dataset toolkit, so I might misunderstand something.

@kaancolak
Copy link
Contributor

kaancolak commented May 25, 2022

@WJaworskiRobotec Thanks for your feedback.

Current benchmarking tool scripts subscribe to ROS2 topics and convert the tracked objects to the proto format desired by the Waymo dataset. If we want to compare our tracking result with other tracking submissions in the Waymo 3D Tracking Challenge, I think Waymo Open Dataset Toolkit is the best way for doing it, it contains a lot of special configurations for metric calculation. I chose the Waymo Dataset for the 3D tracking benchmark because most of the popular dataset doesn't contain a 3D tracking benchmark, like KITTI, Berkeley DeepDrive, and Lyft.

If we want to evaluate our 2D, and 3D detection results with other open datasets and the synthetic data generated in the simulators, real-time evaluation directly over the ROS2 topic could be very useful, just need to implement proper metrics. I can easily extend the functionality of this tool.

@WJaworskiRobotec
Copy link
Contributor

Thanks a lot for the explanation. Pipeline that you created is perfect for comparing Autoware results with others, as well as it will be very easy to just connect metric calculation node that is created in the task I mentioned directly to the same topics that you connect the "data converter" converting to the Waymo format. Look perfect to me and once we have proper metrics we will connect it with your code.

@kaancolak
Copy link
Contributor

@WJaworskiRobotec Instead of working on the different benchmarking pipelines, I think we can extend the metric calculation node. It's a more generic evaluator that contains the entire stack(evaluator, planning, control, detection, etc.) that makes sense. I would like to implement the perception(2D/3D perception) part on your metric calculation nodes, base algorithm will be very similar to this tool but must be in the same code format as your nodes.

@WJaworskiRobotec
Copy link
Contributor

@kaancolak Sounds great. @djargot is currently working on the last node that we wanted to create as an example and it is related to perception (segmentation algorithm evaluation). Once it's done we will assign you as a reviewer, and you can continue with adding your nodes for 2D/3D Object Detection.

@kaancolak
Copy link
Contributor

This PR waiting for review.

@xmfcx
Copy link
Contributor

xmfcx commented Sep 20, 2022

@kaancolak can you update the current status of this issue?

@kaancolak
Copy link
Contributor

I have made some updates on the code base. Currently, it's waiting for review.

@mitsudome-r mitsudome-r reopened this Oct 25, 2022
soblin pushed a commit to soblin/autoware.universe that referenced this issue Jun 11, 2023
…undation#565)

* refactor(pull_out): consolidate similar function (autowarefoundation#3803)

* consolidate planWithPriority function

Signed-off-by: kyoichi-sugahara <kyoichi.sugahara@tier4.jp>

* add comments

Signed-off-by: kyoichi-sugahara <kyoichi.sugahara@tier4.jp>

* fix

Signed-off-by: kyoichi-sugahara <kyoichi.sugahara@tier4.jp>

* refactoring

Signed-off-by: kyoichi-sugahara <kyoichi.sugahara@tier4.jp>

* refactoring

Signed-off-by: kyoichi-sugahara <kyoichi.sugahara@tier4.jp>

* change arg type

Signed-off-by: kyoichi-sugahara <kyoichi.sugahara@tier4.jp>

* Update planning/behavior_path_planner/src/scene_module/pull_out/pull_out_module.cpp

* Update planning/behavior_path_planner/include/behavior_path_planner/scene_module/pull_out/pull_out_module.hpp

---------

Signed-off-by: kyoichi-sugahara <kyoichi.sugahara@tier4.jp>
Co-authored-by: Kosuke Takeuchi <kosuke.tnp@gmail.com>

* refactor(start_planner): rename pull out to start planner (autowarefoundation#3908)

Signed-off-by: kosuke55 <kosuke.tnp@gmail.com>

---------

Signed-off-by: kyoichi-sugahara <kyoichi.sugahara@tier4.jp>
Signed-off-by: kosuke55 <kosuke.tnp@gmail.com>
Co-authored-by: Kyoichi Sugahara <kyoichi.sugahara@tier4.jp>
kyoichi-sugahara pushed a commit that referenced this issue Sep 16, 2023
* chore: sync files

Signed-off-by: GitHub <noreply@github.com>

* pre-commit fixes

Signed-off-by: GitHub <noreply@github.com>
Co-authored-by: kenji-miyake <kenji-miyake@users.noreply.github.com>
Co-authored-by: github-actions <github-actions@github.com>
@epris
Copy link

epris commented May 24, 2024

Does the perception benchmark tool still work? It seems that there are some problems with the python version

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
component:perception Advanced sensor data processing and environment understanding. (auto-assigned) priority:high High urgency and importance.
Projects
No open projects
Status: Done
7 participants