Package Summary
| Version | 0.53.0 |
| License | Apache License 2.0 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Description | |
| Checkout URI | https://github.com/autowarefoundation/autoware_universe.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-10-23 |
| Dev Status | UNKNOWN |
| Released | UNRELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Dan Umeda
- Manato Hirabayashi
- Kotaro Uetake
- Masato Saeki
Authors
- Daisuke Nishimatsu
autoware_tensorrt_yolox
Purpose
This package detects target objects e.g., cars, trucks, bicycles, and pedestrians and segment target objects such as cars, trucks, buses and pedestrian, building, vegetation, road, sidewalk on a image based on YOLOX model with multi-header structure.
Additionally, the package also supports traffic light detection by switching onnx file which target classes listed on respective label_file. Currently 0: unknown, 1: car_traffic_light and 2: pedestrian_traffic_light.
Inner-workings / Algorithms
Cite
Zheng Ge, Songtao Liu, Feng Wang, Zeming Li, Jian Sun, “YOLOX: Exceeding YOLO Series in 2021”, arXiv preprint arXiv:2107.08430, 2021 [ref]
Inputs / Outputs
Input
| Name | Type | Description |
|---|---|---|
in/image |
sensor_msgs/Image |
The input image |
Output
| Name | Type | Description |
|---|---|---|
out/objects |
tier4_perception_msgs/DetectedObjectsWithFeature |
The detected objects or traffic light with 2D bounding boxes |
out/image |
sensor_msgs/Image |
The image with 2D bounding boxes for visualization |
out/mask |
sensor_msgs/Image |
The semantic segmentation mask (only effective for semseg model) |
out/color_mask |
sensor_msgs/Image |
The colorized image of semantic segmentation mask for visualization (only effective for semseg model) |
Parameters
yolox_s_plus_opt
{{ json_to_markdown(“perception/autoware_tensorrt_yolox/schema/yolox_s_plus_opt.schema.json”) }}
yolox_tiny
{{ json_to_markdown(“perception/autoware_tensorrt_yolox/schema/yolox_tiny.schema.json”) }}
yolox_traffic_light_detector
{{ json_to_markdown(“perception/autoware_tensorrt_yolox/schema/yolox_traffic_light_detector.schema.json”) }}
Assumptions / Known limits
The label contained in detected 2D bounding boxes (i.e., out/objects) will be either one of the followings:
- CAR
- PEDESTRIAN (“PERSON” will also be categorized as “PEDESTRIAN”)
- BUS
- TRUCK
- BICYCLE
- MOTORCYCLE
or
- UNKNOWN
- CAR_TRAFFIC_LIGHT
- PEDESTRIAN_TRAFFIC_LIGHT
for traffic light detector onnx model.
If other labels (case insensitive) are contained in the file specified via the label_file parameter,
those are labeled as UNKNOWN, while detected rectangles are drawn in the visualization result (out/image).
The semantic segmentation mask is a gray image whose each pixel is index of one following class:
| index | semantic name |
|---|---|
| 0 | road |
| 1 | building |
| 2 | wall |
| 3 | obstacle |
| 4 | traffic_light |
| 5 | traffic_sign |
| 6 | person |
| 7 | vehicle |
| 8 | bike |
| 9 | road |
| 10 | sidewalk |
| 11 | roadPaint |
| 12 | curbstone |
| 13 | crosswalk_others |
| 14 | vegetation |
| 15 | sky |
Onnx model
A sample model (named yolox-tiny.onnx) is downloaded by ansible script on env preparation stage, if not, please, follow Manual downloading of artifacts.
To accelerate Non-maximum-suppression (NMS), which is one of the common post-process after object detection inference,
EfficientNMS_TRT module is attached after the ordinal YOLOX (tiny) network.
The EfficientNMS_TRT module contains fixed values for score_threshold and nms_threshold in it,
hence these parameters are ignored when users specify ONNX models including this module.
This package accepts both EfficientNMS_TRT attached ONNXs and models published from the official YOLOX repository (we referred to them as “plain” models).
File truncated at 100 lines see the full file
Changelog for package autoware_tensorrt_yolox
0.53.0 (2026-09-29)
-
Merge remote-tracking branch 'origin/main' into prepare-0.53.0-changelog
-
build(traffic_light_perception): split core/node CMake targets and expose public core headers (#13325)
* refactor(autoware_traffic_light_category_merger): expose core header, split core/node CMake targets Move traffic_light_category_merger.hpp into include/autoware/traffic_light_category_merger/, and split the CMake target into ${PROJECT_NAME} (core) and ${PROJECT_NAME}_node (Node adapter linking the core). The Node header stays in src/. No behavior change; colcon build + colcon test pass (7 tests, 0 failures).
* refactor(autoware_traffic_light_selector): expose core header, split core/node CMake targets Move traffic_light_selector.hpp into include/autoware/traffic_light_selector/, keeping traffic_light_selector_utils.hpp private in src/ (not part of the public API). Split the CMake target into ${PROJECT_NAME} (core: selector + utils) and ${PROJECT_NAME}_node (Node adapter linking the core). No behavior change; colcon build + colcon test pass (7 tests, 0 failures).
* refactor(autoware_traffic_light_map_based_detector): expose core header, split core/node CMake targets Move traffic_light_map_based_detector.hpp into include/autoware/traffic_light_map_based_detector/, keeping traffic_light_map_based_detector_process.hpp private in src/ (not part of the public API). Since the public header declares functions taking image_geometry::PinholeCameraModel, add that include directly to the header instead of pulling it in transitively via the private process header. Split the CMake target into ${PROJECT_NAME} (core: detector + process) and ${PROJECT_NAME}_node (Node adapter linking the core). No behavior change; colcon build + colcon test pass (7 tests, 0 failures).
* refactor(autoware_tensorrt_yolox): build TrtYoloXDetector as part of the core library tensorrt_yolox_detector.cpp implements core detection logic and was being compiled into ${PROJECT_NAME}_node (the Node adapter target) instead of ${PROJECT_NAME} (the core library). Move it to the core target so the core library does not depend on the node target for its own logic.
- refactor(autoware_traffic_light_classifier): expose TrafficLightClassifier as the sole public header
- Move traffic_light_classifier.hpp to include/autoware/traffic_light_classifier/ and forward-declare ClassifierInterface instead of including classifier/classifier_interface.hpp, so the classifier/*.hpp backends and classifier_params.hpp / traffic_light_classifier_node.hpp stay private under src/.
- Split the CMake library target into ${PROJECT_NAME} (ROS-free classification core) and ${PROJECT_NAME}_node (rclcpp::Node adapter layer), mirroring the core/node separation already present in src/.
- single_image_debug_inference_node and the node-level integration test now link against both libraries instead of recompiling every source file.
- refactor(autoware_traffic_light_multi_camera_fusion): move headers under include/, split core/node CMake targets
- refactor(autoware_traffic_light_arbiter): split core/node CMake targets
- refactor(autoware_image_transport_decompressor): move core logic header to include, node header to src
* refactor(autoware_crosswalk_traffic_light_estimator): move core logic header to include, node header to src, split core/node CMake targets ---------
-
refactor(autoware_universe): use autoware_ament_auto_package in perception DNN packages (#12277) Co-authored-by: github-actions <<github-actions@github.com>> Co-authored-by: Taekjin LEE <<taekjin.lee@tier4.jp>>
-
refactor(perception): move node design files into each package (#13104) Co-authored-by: Claude Opus 5 (1M context) <<noreply@anthropic.com>>
-
test(tensorrt_yolox): add detector test and reduce test for node (#12898)
- test(autoware_tensorrt_yolox): add unit test for TrtYoloXDetector::detect
- test(autoware_tensorrt_yolox): reduce node test to ROS plumbing smoke test
* doc(tensorrt_yolox): reduce comment ---------Co-authored-by: Takahisa.Ishikawa
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
| Name |
|---|
| libopencv-dev |
Dependant Packages
Launch files
- launch/multiple_yolox.launch.xml
-
- image_raw0 [default: /image_raw0]
- image_raw1 [default: ]
- image_raw2 [default: ]
- image_raw3 [default: ]
- image_raw4 [default: ]
- image_raw5 [default: ]
- image_raw6 [default: ]
- image_raw7 [default: ]
- image_number [default: 1]
- output_topic [default: rois]
- launch/yolox.launch.xml
-
- yolox_node_name [default: tensorrt_yolox]
- image_transport_decompressor_node_name [default: image_transport_decompressor_node]
- data_path [default: $(env HOME)/autoware_data/ml_models]
- input/image [default: /sensing/camera/camera0/image_rect_color]
- output/objects [default: /perception/object_recognition/detection/rois0]
- output/mask [default: /perception/object_recognition/detection/mask0]
- yolox_param_path [default: $(find-pkg-share autoware_tensorrt_yolox)/config/yolox_s_plus_opt.param.yaml]
- model_path [default: $(var data_path)/tensorrt_yolox/yolox-sPlus-opt-pseudoV2-T4-960x960-T4-seg16cls.onnx]
- label_path [default: $(var data_path)/tensorrt_yolox/label.txt]
- semantic_segmentation_color_map_path [default: $(var data_path)/tensorrt_yolox/semseg_color_map.csv]
- roi_remap_path [default: $(find-pkg-share autoware_tensorrt_yolox)/config/roi_label_remap.csv]
- roi_to_semantic_segmentation_remap_path [default: $(find-pkg-share autoware_tensorrt_yolox)/config/roi_to_semseg_label_remap.csv]
- use_decompress [default: true]
- build_only [default: false]
- decompress_param_path [default: $(find-pkg-share autoware_image_transport_decompressor)/config/image_transport_decompressor.param.yaml]
- launch/yolox_s_plus_opt.launch.xml
-
- yolox_node_name [default: tensorrt_yolox]
- image_transport_decompressor_node_name [default: image_transport_decompressor_node]
- data_path [default: $(env HOME)/autoware_data/ml_models]
- input/image [default: /sensing/camera/camera0/image_rect_color]
- output/objects [default: /perception/object_recognition/detection/rois0]
- output/mask [default: /perception/object_recognition/detection/mask0]
- yolox_param_path [default: $(find-pkg-share autoware_tensorrt_yolox)/config/yolox_s_plus_opt.param.yaml]
- model_path [default: $(var data_path)/tensorrt_yolox/yolox-sPlus-opt-pseudoV2-T4-960x960-T4-seg16cls.onnx]
- label_path [default: $(var data_path)/tensorrt_yolox/label.txt]
- semantic_segmentation_color_map_path [default: $(var data_path)/tensorrt_yolox/semseg_color_map.csv]
- roi_remap_path [default: $(find-pkg-share autoware_tensorrt_yolox)/config/roi_label_remap.csv]
- roi_to_semantic_segmentation_remap_path [default: $(find-pkg-share autoware_tensorrt_yolox)/config/roi_to_semseg_label_remap.csv]
- use_decompress [default: true]
- build_only [default: false]
- decompress_param_path [default: $(find-pkg-share autoware_image_transport_decompressor)/config/image_transport_decompressor.param.yaml]
- launch/yolox_tiny.launch.xml
-
- data_path [default: $(env HOME)/autoware_data/ml_models]
- input/image [default: /sensing/camera/camera0/image_rect_color]
- output/objects [default: /perception/object_recognition/detection/rois0]
- yolox_param_path [default: $(find-pkg-share autoware_tensorrt_yolox)/config/yolox_tiny.param.yaml]
- model_path [default: $(var data_path)/tensorrt_yolox/yolox-tiny.onnx]
- label_path [default: $(var data_path)/tensorrt_yolox/label.txt]
- semantic_segmentation_color_map_path [default: $(var data_path)/tensorrt_yolox/semseg_color_map.csv]
- roi_remap_path [default: $(find-pkg-share autoware_tensorrt_yolox)/config/roi_label_remap.csv]
- roi_to_semantic_segmentation_remap_path [default: $(find-pkg-share autoware_tensorrt_yolox)/config/roi_to_semseg_label_remap.csv]
- use_decompress [default: true]
- build_only [default: false]
- decompressor_param_path [default: $(find-pkg-share autoware_image_transport_decompressor)/config/image_transport_decompressor.param.yaml]
- launch/yolox_traffic_light_detector.launch.xml
-
- data_path [default: $(env HOME)/autoware_data/ml_models]
- input/image [default: /sensing/camera/camera6/image_raw]
- output/objects [default: /perception/traffic_light_recognition/camera6/detection/rois]
- yolox_param_path [default: $(find-pkg-share autoware_tensorrt_yolox)/config/yolox_traffic_light_detector.param.yaml]
- model_path [default: $(var data_path)/tensorrt_yolox/yolox_s_car_ped_tl_detector_960_960_batch_1.onnx]
- label_path [default: $(var data_path)/tensorrt_yolox/car_ped_tl_detector_labels.txt]
- semantic_segmentation_color_map_path [default: $(var data_path)/tensorrt_yolox/semseg_color_map.csv]
- roi_remap_path [default: $(find-pkg-share autoware_tensorrt_yolox)/config/traffic_light_roi_label_remap.csv]
- roi_to_semantic_segmentation_remap_path [default: ]
- use_decompress [default: true]
- build_only [default: false]
- decompressor_param_path [default: $(find-pkg-share autoware_image_transport_decompressor)/config/image_transport_decompressor.param.yaml]
Messages
Services
Plugins
Recent questions tagged autoware_tensorrt_yolox at Robotics Stack Exchange
Package Summary
| Version | 0.53.0 |
| License | Apache License 2.0 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Description | |
| Checkout URI | https://github.com/autowarefoundation/autoware_universe.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-10-23 |
| Dev Status | UNKNOWN |
| Released | UNRELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Dan Umeda
- Manato Hirabayashi
- Kotaro Uetake
- Masato Saeki
Authors
- Daisuke Nishimatsu
autoware_tensorrt_yolox
Purpose
This package detects target objects e.g., cars, trucks, bicycles, and pedestrians and segment target objects such as cars, trucks, buses and pedestrian, building, vegetation, road, sidewalk on a image based on YOLOX model with multi-header structure.
Additionally, the package also supports traffic light detection by switching onnx file which target classes listed on respective label_file. Currently 0: unknown, 1: car_traffic_light and 2: pedestrian_traffic_light.
Inner-workings / Algorithms
Cite
Zheng Ge, Songtao Liu, Feng Wang, Zeming Li, Jian Sun, “YOLOX: Exceeding YOLO Series in 2021”, arXiv preprint arXiv:2107.08430, 2021 [ref]
Inputs / Outputs
Input
| Name | Type | Description |
|---|---|---|
in/image |
sensor_msgs/Image |
The input image |
Output
| Name | Type | Description |
|---|---|---|
out/objects |
tier4_perception_msgs/DetectedObjectsWithFeature |
The detected objects or traffic light with 2D bounding boxes |
out/image |
sensor_msgs/Image |
The image with 2D bounding boxes for visualization |
out/mask |
sensor_msgs/Image |
The semantic segmentation mask (only effective for semseg model) |
out/color_mask |
sensor_msgs/Image |
The colorized image of semantic segmentation mask for visualization (only effective for semseg model) |
Parameters
yolox_s_plus_opt
{{ json_to_markdown(“perception/autoware_tensorrt_yolox/schema/yolox_s_plus_opt.schema.json”) }}
yolox_tiny
{{ json_to_markdown(“perception/autoware_tensorrt_yolox/schema/yolox_tiny.schema.json”) }}
yolox_traffic_light_detector
{{ json_to_markdown(“perception/autoware_tensorrt_yolox/schema/yolox_traffic_light_detector.schema.json”) }}
Assumptions / Known limits
The label contained in detected 2D bounding boxes (i.e., out/objects) will be either one of the followings:
- CAR
- PEDESTRIAN (“PERSON” will also be categorized as “PEDESTRIAN”)
- BUS
- TRUCK
- BICYCLE
- MOTORCYCLE
or
- UNKNOWN
- CAR_TRAFFIC_LIGHT
- PEDESTRIAN_TRAFFIC_LIGHT
for traffic light detector onnx model.
If other labels (case insensitive) are contained in the file specified via the label_file parameter,
those are labeled as UNKNOWN, while detected rectangles are drawn in the visualization result (out/image).
The semantic segmentation mask is a gray image whose each pixel is index of one following class:
| index | semantic name |
|---|---|
| 0 | road |
| 1 | building |
| 2 | wall |
| 3 | obstacle |
| 4 | traffic_light |
| 5 | traffic_sign |
| 6 | person |
| 7 | vehicle |
| 8 | bike |
| 9 | road |
| 10 | sidewalk |
| 11 | roadPaint |
| 12 | curbstone |
| 13 | crosswalk_others |
| 14 | vegetation |
| 15 | sky |
Onnx model
A sample model (named yolox-tiny.onnx) is downloaded by ansible script on env preparation stage, if not, please, follow Manual downloading of artifacts.
To accelerate Non-maximum-suppression (NMS), which is one of the common post-process after object detection inference,
EfficientNMS_TRT module is attached after the ordinal YOLOX (tiny) network.
The EfficientNMS_TRT module contains fixed values for score_threshold and nms_threshold in it,
hence these parameters are ignored when users specify ONNX models including this module.
This package accepts both EfficientNMS_TRT attached ONNXs and models published from the official YOLOX repository (we referred to them as “plain” models).
File truncated at 100 lines see the full file
Changelog for package autoware_tensorrt_yolox
0.53.0 (2026-09-29)
-
Merge remote-tracking branch 'origin/main' into prepare-0.53.0-changelog
-
build(traffic_light_perception): split core/node CMake targets and expose public core headers (#13325)
* refactor(autoware_traffic_light_category_merger): expose core header, split core/node CMake targets Move traffic_light_category_merger.hpp into include/autoware/traffic_light_category_merger/, and split the CMake target into ${PROJECT_NAME} (core) and ${PROJECT_NAME}_node (Node adapter linking the core). The Node header stays in src/. No behavior change; colcon build + colcon test pass (7 tests, 0 failures).
* refactor(autoware_traffic_light_selector): expose core header, split core/node CMake targets Move traffic_light_selector.hpp into include/autoware/traffic_light_selector/, keeping traffic_light_selector_utils.hpp private in src/ (not part of the public API). Split the CMake target into ${PROJECT_NAME} (core: selector + utils) and ${PROJECT_NAME}_node (Node adapter linking the core). No behavior change; colcon build + colcon test pass (7 tests, 0 failures).
* refactor(autoware_traffic_light_map_based_detector): expose core header, split core/node CMake targets Move traffic_light_map_based_detector.hpp into include/autoware/traffic_light_map_based_detector/, keeping traffic_light_map_based_detector_process.hpp private in src/ (not part of the public API). Since the public header declares functions taking image_geometry::PinholeCameraModel, add that include directly to the header instead of pulling it in transitively via the private process header. Split the CMake target into ${PROJECT_NAME} (core: detector + process) and ${PROJECT_NAME}_node (Node adapter linking the core). No behavior change; colcon build + colcon test pass (7 tests, 0 failures).
* refactor(autoware_tensorrt_yolox): build TrtYoloXDetector as part of the core library tensorrt_yolox_detector.cpp implements core detection logic and was being compiled into ${PROJECT_NAME}_node (the Node adapter target) instead of ${PROJECT_NAME} (the core library). Move it to the core target so the core library does not depend on the node target for its own logic.
- refactor(autoware_traffic_light_classifier): expose TrafficLightClassifier as the sole public header
- Move traffic_light_classifier.hpp to include/autoware/traffic_light_classifier/ and forward-declare ClassifierInterface instead of including classifier/classifier_interface.hpp, so the classifier/*.hpp backends and classifier_params.hpp / traffic_light_classifier_node.hpp stay private under src/.
- Split the CMake library target into ${PROJECT_NAME} (ROS-free classification core) and ${PROJECT_NAME}_node (rclcpp::Node adapter layer), mirroring the core/node separation already present in src/.
- single_image_debug_inference_node and the node-level integration test now link against both libraries instead of recompiling every source file.
- refactor(autoware_traffic_light_multi_camera_fusion): move headers under include/, split core/node CMake targets
- refactor(autoware_traffic_light_arbiter): split core/node CMake targets
- refactor(autoware_image_transport_decompressor): move core logic header to include, node header to src
* refactor(autoware_crosswalk_traffic_light_estimator): move core logic header to include, node header to src, split core/node CMake targets ---------
-
refactor(autoware_universe): use autoware_ament_auto_package in perception DNN packages (#12277) Co-authored-by: github-actions <<github-actions@github.com>> Co-authored-by: Taekjin LEE <<taekjin.lee@tier4.jp>>
-
refactor(perception): move node design files into each package (#13104) Co-authored-by: Claude Opus 5 (1M context) <<noreply@anthropic.com>>
-
test(tensorrt_yolox): add detector test and reduce test for node (#12898)
- test(autoware_tensorrt_yolox): add unit test for TrtYoloXDetector::detect
- test(autoware_tensorrt_yolox): reduce node test to ROS plumbing smoke test
* doc(tensorrt_yolox): reduce comment ---------Co-authored-by: Takahisa.Ishikawa
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
| Name |
|---|
| libopencv-dev |
Dependant Packages
Launch files
- launch/multiple_yolox.launch.xml
-
- image_raw0 [default: /image_raw0]
- image_raw1 [default: ]
- image_raw2 [default: ]
- image_raw3 [default: ]
- image_raw4 [default: ]
- image_raw5 [default: ]
- image_raw6 [default: ]
- image_raw7 [default: ]
- image_number [default: 1]
- output_topic [default: rois]
- launch/yolox.launch.xml
-
- yolox_node_name [default: tensorrt_yolox]
- image_transport_decompressor_node_name [default: image_transport_decompressor_node]
- data_path [default: $(env HOME)/autoware_data/ml_models]
- input/image [default: /sensing/camera/camera0/image_rect_color]
- output/objects [default: /perception/object_recognition/detection/rois0]
- output/mask [default: /perception/object_recognition/detection/mask0]
- yolox_param_path [default: $(find-pkg-share autoware_tensorrt_yolox)/config/yolox_s_plus_opt.param.yaml]
- model_path [default: $(var data_path)/tensorrt_yolox/yolox-sPlus-opt-pseudoV2-T4-960x960-T4-seg16cls.onnx]
- label_path [default: $(var data_path)/tensorrt_yolox/label.txt]
- semantic_segmentation_color_map_path [default: $(var data_path)/tensorrt_yolox/semseg_color_map.csv]
- roi_remap_path [default: $(find-pkg-share autoware_tensorrt_yolox)/config/roi_label_remap.csv]
- roi_to_semantic_segmentation_remap_path [default: $(find-pkg-share autoware_tensorrt_yolox)/config/roi_to_semseg_label_remap.csv]
- use_decompress [default: true]
- build_only [default: false]
- decompress_param_path [default: $(find-pkg-share autoware_image_transport_decompressor)/config/image_transport_decompressor.param.yaml]
- launch/yolox_s_plus_opt.launch.xml
-
- yolox_node_name [default: tensorrt_yolox]
- image_transport_decompressor_node_name [default: image_transport_decompressor_node]
- data_path [default: $(env HOME)/autoware_data/ml_models]
- input/image [default: /sensing/camera/camera0/image_rect_color]
- output/objects [default: /perception/object_recognition/detection/rois0]
- output/mask [default: /perception/object_recognition/detection/mask0]
- yolox_param_path [default: $(find-pkg-share autoware_tensorrt_yolox)/config/yolox_s_plus_opt.param.yaml]
- model_path [default: $(var data_path)/tensorrt_yolox/yolox-sPlus-opt-pseudoV2-T4-960x960-T4-seg16cls.onnx]
- label_path [default: $(var data_path)/tensorrt_yolox/label.txt]
- semantic_segmentation_color_map_path [default: $(var data_path)/tensorrt_yolox/semseg_color_map.csv]
- roi_remap_path [default: $(find-pkg-share autoware_tensorrt_yolox)/config/roi_label_remap.csv]
- roi_to_semantic_segmentation_remap_path [default: $(find-pkg-share autoware_tensorrt_yolox)/config/roi_to_semseg_label_remap.csv]
- use_decompress [default: true]
- build_only [default: false]
- decompress_param_path [default: $(find-pkg-share autoware_image_transport_decompressor)/config/image_transport_decompressor.param.yaml]
- launch/yolox_tiny.launch.xml
-
- data_path [default: $(env HOME)/autoware_data/ml_models]
- input/image [default: /sensing/camera/camera0/image_rect_color]
- output/objects [default: /perception/object_recognition/detection/rois0]
- yolox_param_path [default: $(find-pkg-share autoware_tensorrt_yolox)/config/yolox_tiny.param.yaml]
- model_path [default: $(var data_path)/tensorrt_yolox/yolox-tiny.onnx]
- label_path [default: $(var data_path)/tensorrt_yolox/label.txt]
- semantic_segmentation_color_map_path [default: $(var data_path)/tensorrt_yolox/semseg_color_map.csv]
- roi_remap_path [default: $(find-pkg-share autoware_tensorrt_yolox)/config/roi_label_remap.csv]
- roi_to_semantic_segmentation_remap_path [default: $(find-pkg-share autoware_tensorrt_yolox)/config/roi_to_semseg_label_remap.csv]
- use_decompress [default: true]
- build_only [default: false]
- decompressor_param_path [default: $(find-pkg-share autoware_image_transport_decompressor)/config/image_transport_decompressor.param.yaml]
- launch/yolox_traffic_light_detector.launch.xml
-
- data_path [default: $(env HOME)/autoware_data/ml_models]
- input/image [default: /sensing/camera/camera6/image_raw]
- output/objects [default: /perception/traffic_light_recognition/camera6/detection/rois]
- yolox_param_path [default: $(find-pkg-share autoware_tensorrt_yolox)/config/yolox_traffic_light_detector.param.yaml]
- model_path [default: $(var data_path)/tensorrt_yolox/yolox_s_car_ped_tl_detector_960_960_batch_1.onnx]
- label_path [default: $(var data_path)/tensorrt_yolox/car_ped_tl_detector_labels.txt]
- semantic_segmentation_color_map_path [default: $(var data_path)/tensorrt_yolox/semseg_color_map.csv]
- roi_remap_path [default: $(find-pkg-share autoware_tensorrt_yolox)/config/traffic_light_roi_label_remap.csv]
- roi_to_semantic_segmentation_remap_path [default: ]
- use_decompress [default: true]
- build_only [default: false]
- decompressor_param_path [default: $(find-pkg-share autoware_image_transport_decompressor)/config/image_transport_decompressor.param.yaml]
Messages
Services
Plugins
Recent questions tagged autoware_tensorrt_yolox at Robotics Stack Exchange
Package Summary
| Version | 0.53.0 |
| License | Apache License 2.0 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Description | |
| Checkout URI | https://github.com/autowarefoundation/autoware_universe.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-10-23 |
| Dev Status | UNKNOWN |
| Released | UNRELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Dan Umeda
- Manato Hirabayashi
- Kotaro Uetake
- Masato Saeki
Authors
- Daisuke Nishimatsu
autoware_tensorrt_yolox
Purpose
This package detects target objects e.g., cars, trucks, bicycles, and pedestrians and segment target objects such as cars, trucks, buses and pedestrian, building, vegetation, road, sidewalk on a image based on YOLOX model with multi-header structure.
Additionally, the package also supports traffic light detection by switching onnx file which target classes listed on respective label_file. Currently 0: unknown, 1: car_traffic_light and 2: pedestrian_traffic_light.
Inner-workings / Algorithms
Cite
Zheng Ge, Songtao Liu, Feng Wang, Zeming Li, Jian Sun, “YOLOX: Exceeding YOLO Series in 2021”, arXiv preprint arXiv:2107.08430, 2021 [ref]
Inputs / Outputs
Input
| Name | Type | Description |
|---|---|---|
in/image |
sensor_msgs/Image |
The input image |
Output
| Name | Type | Description |
|---|---|---|
out/objects |
tier4_perception_msgs/DetectedObjectsWithFeature |
The detected objects or traffic light with 2D bounding boxes |
out/image |
sensor_msgs/Image |
The image with 2D bounding boxes for visualization |
out/mask |
sensor_msgs/Image |
The semantic segmentation mask (only effective for semseg model) |
out/color_mask |
sensor_msgs/Image |
The colorized image of semantic segmentation mask for visualization (only effective for semseg model) |
Parameters
yolox_s_plus_opt
{{ json_to_markdown(“perception/autoware_tensorrt_yolox/schema/yolox_s_plus_opt.schema.json”) }}
yolox_tiny
{{ json_to_markdown(“perception/autoware_tensorrt_yolox/schema/yolox_tiny.schema.json”) }}
yolox_traffic_light_detector
{{ json_to_markdown(“perception/autoware_tensorrt_yolox/schema/yolox_traffic_light_detector.schema.json”) }}
Assumptions / Known limits
The label contained in detected 2D bounding boxes (i.e., out/objects) will be either one of the followings:
- CAR
- PEDESTRIAN (“PERSON” will also be categorized as “PEDESTRIAN”)
- BUS
- TRUCK
- BICYCLE
- MOTORCYCLE
or
- UNKNOWN
- CAR_TRAFFIC_LIGHT
- PEDESTRIAN_TRAFFIC_LIGHT
for traffic light detector onnx model.
If other labels (case insensitive) are contained in the file specified via the label_file parameter,
those are labeled as UNKNOWN, while detected rectangles are drawn in the visualization result (out/image).
The semantic segmentation mask is a gray image whose each pixel is index of one following class:
| index | semantic name |
|---|---|
| 0 | road |
| 1 | building |
| 2 | wall |
| 3 | obstacle |
| 4 | traffic_light |
| 5 | traffic_sign |
| 6 | person |
| 7 | vehicle |
| 8 | bike |
| 9 | road |
| 10 | sidewalk |
| 11 | roadPaint |
| 12 | curbstone |
| 13 | crosswalk_others |
| 14 | vegetation |
| 15 | sky |
Onnx model
A sample model (named yolox-tiny.onnx) is downloaded by ansible script on env preparation stage, if not, please, follow Manual downloading of artifacts.
To accelerate Non-maximum-suppression (NMS), which is one of the common post-process after object detection inference,
EfficientNMS_TRT module is attached after the ordinal YOLOX (tiny) network.
The EfficientNMS_TRT module contains fixed values for score_threshold and nms_threshold in it,
hence these parameters are ignored when users specify ONNX models including this module.
This package accepts both EfficientNMS_TRT attached ONNXs and models published from the official YOLOX repository (we referred to them as “plain” models).
File truncated at 100 lines see the full file
Changelog for package autoware_tensorrt_yolox
0.53.0 (2026-09-29)
-
Merge remote-tracking branch 'origin/main' into prepare-0.53.0-changelog
-
build(traffic_light_perception): split core/node CMake targets and expose public core headers (#13325)
* refactor(autoware_traffic_light_category_merger): expose core header, split core/node CMake targets Move traffic_light_category_merger.hpp into include/autoware/traffic_light_category_merger/, and split the CMake target into ${PROJECT_NAME} (core) and ${PROJECT_NAME}_node (Node adapter linking the core). The Node header stays in src/. No behavior change; colcon build + colcon test pass (7 tests, 0 failures).
* refactor(autoware_traffic_light_selector): expose core header, split core/node CMake targets Move traffic_light_selector.hpp into include/autoware/traffic_light_selector/, keeping traffic_light_selector_utils.hpp private in src/ (not part of the public API). Split the CMake target into ${PROJECT_NAME} (core: selector + utils) and ${PROJECT_NAME}_node (Node adapter linking the core). No behavior change; colcon build + colcon test pass (7 tests, 0 failures).
* refactor(autoware_traffic_light_map_based_detector): expose core header, split core/node CMake targets Move traffic_light_map_based_detector.hpp into include/autoware/traffic_light_map_based_detector/, keeping traffic_light_map_based_detector_process.hpp private in src/ (not part of the public API). Since the public header declares functions taking image_geometry::PinholeCameraModel, add that include directly to the header instead of pulling it in transitively via the private process header. Split the CMake target into ${PROJECT_NAME} (core: detector + process) and ${PROJECT_NAME}_node (Node adapter linking the core). No behavior change; colcon build + colcon test pass (7 tests, 0 failures).
* refactor(autoware_tensorrt_yolox): build TrtYoloXDetector as part of the core library tensorrt_yolox_detector.cpp implements core detection logic and was being compiled into ${PROJECT_NAME}_node (the Node adapter target) instead of ${PROJECT_NAME} (the core library). Move it to the core target so the core library does not depend on the node target for its own logic.
- refactor(autoware_traffic_light_classifier): expose TrafficLightClassifier as the sole public header
- Move traffic_light_classifier.hpp to include/autoware/traffic_light_classifier/ and forward-declare ClassifierInterface instead of including classifier/classifier_interface.hpp, so the classifier/*.hpp backends and classifier_params.hpp / traffic_light_classifier_node.hpp stay private under src/.
- Split the CMake library target into ${PROJECT_NAME} (ROS-free classification core) and ${PROJECT_NAME}_node (rclcpp::Node adapter layer), mirroring the core/node separation already present in src/.
- single_image_debug_inference_node and the node-level integration test now link against both libraries instead of recompiling every source file.
- refactor(autoware_traffic_light_multi_camera_fusion): move headers under include/, split core/node CMake targets
- refactor(autoware_traffic_light_arbiter): split core/node CMake targets
- refactor(autoware_image_transport_decompressor): move core logic header to include, node header to src
* refactor(autoware_crosswalk_traffic_light_estimator): move core logic header to include, node header to src, split core/node CMake targets ---------
-
refactor(autoware_universe): use autoware_ament_auto_package in perception DNN packages (#12277) Co-authored-by: github-actions <<github-actions@github.com>> Co-authored-by: Taekjin LEE <<taekjin.lee@tier4.jp>>
-
refactor(perception): move node design files into each package (#13104) Co-authored-by: Claude Opus 5 (1M context) <<noreply@anthropic.com>>
-
test(tensorrt_yolox): add detector test and reduce test for node (#12898)
- test(autoware_tensorrt_yolox): add unit test for TrtYoloXDetector::detect
- test(autoware_tensorrt_yolox): reduce node test to ROS plumbing smoke test
* doc(tensorrt_yolox): reduce comment ---------Co-authored-by: Takahisa.Ishikawa
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
| Name |
|---|
| libopencv-dev |
Dependant Packages
Launch files
- launch/multiple_yolox.launch.xml
-
- image_raw0 [default: /image_raw0]
- image_raw1 [default: ]
- image_raw2 [default: ]
- image_raw3 [default: ]
- image_raw4 [default: ]
- image_raw5 [default: ]
- image_raw6 [default: ]
- image_raw7 [default: ]
- image_number [default: 1]
- output_topic [default: rois]
- launch/yolox.launch.xml
-
- yolox_node_name [default: tensorrt_yolox]
- image_transport_decompressor_node_name [default: image_transport_decompressor_node]
- data_path [default: $(env HOME)/autoware_data/ml_models]
- input/image [default: /sensing/camera/camera0/image_rect_color]
- output/objects [default: /perception/object_recognition/detection/rois0]
- output/mask [default: /perception/object_recognition/detection/mask0]
- yolox_param_path [default: $(find-pkg-share autoware_tensorrt_yolox)/config/yolox_s_plus_opt.param.yaml]
- model_path [default: $(var data_path)/tensorrt_yolox/yolox-sPlus-opt-pseudoV2-T4-960x960-T4-seg16cls.onnx]
- label_path [default: $(var data_path)/tensorrt_yolox/label.txt]
- semantic_segmentation_color_map_path [default: $(var data_path)/tensorrt_yolox/semseg_color_map.csv]
- roi_remap_path [default: $(find-pkg-share autoware_tensorrt_yolox)/config/roi_label_remap.csv]
- roi_to_semantic_segmentation_remap_path [default: $(find-pkg-share autoware_tensorrt_yolox)/config/roi_to_semseg_label_remap.csv]
- use_decompress [default: true]
- build_only [default: false]
- decompress_param_path [default: $(find-pkg-share autoware_image_transport_decompressor)/config/image_transport_decompressor.param.yaml]
- launch/yolox_s_plus_opt.launch.xml
-
- yolox_node_name [default: tensorrt_yolox]
- image_transport_decompressor_node_name [default: image_transport_decompressor_node]
- data_path [default: $(env HOME)/autoware_data/ml_models]
- input/image [default: /sensing/camera/camera0/image_rect_color]
- output/objects [default: /perception/object_recognition/detection/rois0]
- output/mask [default: /perception/object_recognition/detection/mask0]
- yolox_param_path [default: $(find-pkg-share autoware_tensorrt_yolox)/config/yolox_s_plus_opt.param.yaml]
- model_path [default: $(var data_path)/tensorrt_yolox/yolox-sPlus-opt-pseudoV2-T4-960x960-T4-seg16cls.onnx]
- label_path [default: $(var data_path)/tensorrt_yolox/label.txt]
- semantic_segmentation_color_map_path [default: $(var data_path)/tensorrt_yolox/semseg_color_map.csv]
- roi_remap_path [default: $(find-pkg-share autoware_tensorrt_yolox)/config/roi_label_remap.csv]
- roi_to_semantic_segmentation_remap_path [default: $(find-pkg-share autoware_tensorrt_yolox)/config/roi_to_semseg_label_remap.csv]
- use_decompress [default: true]
- build_only [default: false]
- decompress_param_path [default: $(find-pkg-share autoware_image_transport_decompressor)/config/image_transport_decompressor.param.yaml]
- launch/yolox_tiny.launch.xml
-
- data_path [default: $(env HOME)/autoware_data/ml_models]
- input/image [default: /sensing/camera/camera0/image_rect_color]
- output/objects [default: /perception/object_recognition/detection/rois0]
- yolox_param_path [default: $(find-pkg-share autoware_tensorrt_yolox)/config/yolox_tiny.param.yaml]
- model_path [default: $(var data_path)/tensorrt_yolox/yolox-tiny.onnx]
- label_path [default: $(var data_path)/tensorrt_yolox/label.txt]
- semantic_segmentation_color_map_path [default: $(var data_path)/tensorrt_yolox/semseg_color_map.csv]
- roi_remap_path [default: $(find-pkg-share autoware_tensorrt_yolox)/config/roi_label_remap.csv]
- roi_to_semantic_segmentation_remap_path [default: $(find-pkg-share autoware_tensorrt_yolox)/config/roi_to_semseg_label_remap.csv]
- use_decompress [default: true]
- build_only [default: false]
- decompressor_param_path [default: $(find-pkg-share autoware_image_transport_decompressor)/config/image_transport_decompressor.param.yaml]
- launch/yolox_traffic_light_detector.launch.xml
-
- data_path [default: $(env HOME)/autoware_data/ml_models]
- input/image [default: /sensing/camera/camera6/image_raw]
- output/objects [default: /perception/traffic_light_recognition/camera6/detection/rois]
- yolox_param_path [default: $(find-pkg-share autoware_tensorrt_yolox)/config/yolox_traffic_light_detector.param.yaml]
- model_path [default: $(var data_path)/tensorrt_yolox/yolox_s_car_ped_tl_detector_960_960_batch_1.onnx]
- label_path [default: $(var data_path)/tensorrt_yolox/car_ped_tl_detector_labels.txt]
- semantic_segmentation_color_map_path [default: $(var data_path)/tensorrt_yolox/semseg_color_map.csv]
- roi_remap_path [default: $(find-pkg-share autoware_tensorrt_yolox)/config/traffic_light_roi_label_remap.csv]
- roi_to_semantic_segmentation_remap_path [default: ]
- use_decompress [default: true]
- build_only [default: false]
- decompressor_param_path [default: $(find-pkg-share autoware_image_transport_decompressor)/config/image_transport_decompressor.param.yaml]
Messages
Services
Plugins
Recent questions tagged autoware_tensorrt_yolox at Robotics Stack Exchange
Package Summary
| Version | 0.53.0 |
| License | Apache License 2.0 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Description | |
| Checkout URI | https://github.com/autowarefoundation/autoware_universe.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-10-23 |
| Dev Status | UNKNOWN |
| Released | UNRELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Dan Umeda
- Manato Hirabayashi
- Kotaro Uetake
- Masato Saeki
Authors
- Daisuke Nishimatsu
autoware_tensorrt_yolox
Purpose
This package detects target objects e.g., cars, trucks, bicycles, and pedestrians and segment target objects such as cars, trucks, buses and pedestrian, building, vegetation, road, sidewalk on a image based on YOLOX model with multi-header structure.
Additionally, the package also supports traffic light detection by switching onnx file which target classes listed on respective label_file. Currently 0: unknown, 1: car_traffic_light and 2: pedestrian_traffic_light.
Inner-workings / Algorithms
Cite
Zheng Ge, Songtao Liu, Feng Wang, Zeming Li, Jian Sun, “YOLOX: Exceeding YOLO Series in 2021”, arXiv preprint arXiv:2107.08430, 2021 [ref]
Inputs / Outputs
Input
| Name | Type | Description |
|---|---|---|
in/image |
sensor_msgs/Image |
The input image |
Output
| Name | Type | Description |
|---|---|---|
out/objects |
tier4_perception_msgs/DetectedObjectsWithFeature |
The detected objects or traffic light with 2D bounding boxes |
out/image |
sensor_msgs/Image |
The image with 2D bounding boxes for visualization |
out/mask |
sensor_msgs/Image |
The semantic segmentation mask (only effective for semseg model) |
out/color_mask |
sensor_msgs/Image |
The colorized image of semantic segmentation mask for visualization (only effective for semseg model) |
Parameters
yolox_s_plus_opt
{{ json_to_markdown(“perception/autoware_tensorrt_yolox/schema/yolox_s_plus_opt.schema.json”) }}
yolox_tiny
{{ json_to_markdown(“perception/autoware_tensorrt_yolox/schema/yolox_tiny.schema.json”) }}
yolox_traffic_light_detector
{{ json_to_markdown(“perception/autoware_tensorrt_yolox/schema/yolox_traffic_light_detector.schema.json”) }}
Assumptions / Known limits
The label contained in detected 2D bounding boxes (i.e., out/objects) will be either one of the followings:
- CAR
- PEDESTRIAN (“PERSON” will also be categorized as “PEDESTRIAN”)
- BUS
- TRUCK
- BICYCLE
- MOTORCYCLE
or
- UNKNOWN
- CAR_TRAFFIC_LIGHT
- PEDESTRIAN_TRAFFIC_LIGHT
for traffic light detector onnx model.
If other labels (case insensitive) are contained in the file specified via the label_file parameter,
those are labeled as UNKNOWN, while detected rectangles are drawn in the visualization result (out/image).
The semantic segmentation mask is a gray image whose each pixel is index of one following class:
| index | semantic name |
|---|---|
| 0 | road |
| 1 | building |
| 2 | wall |
| 3 | obstacle |
| 4 | traffic_light |
| 5 | traffic_sign |
| 6 | person |
| 7 | vehicle |
| 8 | bike |
| 9 | road |
| 10 | sidewalk |
| 11 | roadPaint |
| 12 | curbstone |
| 13 | crosswalk_others |
| 14 | vegetation |
| 15 | sky |
Onnx model
A sample model (named yolox-tiny.onnx) is downloaded by ansible script on env preparation stage, if not, please, follow Manual downloading of artifacts.
To accelerate Non-maximum-suppression (NMS), which is one of the common post-process after object detection inference,
EfficientNMS_TRT module is attached after the ordinal YOLOX (tiny) network.
The EfficientNMS_TRT module contains fixed values for score_threshold and nms_threshold in it,
hence these parameters are ignored when users specify ONNX models including this module.
This package accepts both EfficientNMS_TRT attached ONNXs and models published from the official YOLOX repository (we referred to them as “plain” models).
File truncated at 100 lines see the full file
Changelog for package autoware_tensorrt_yolox
0.53.0 (2026-09-29)
-
Merge remote-tracking branch 'origin/main' into prepare-0.53.0-changelog
-
build(traffic_light_perception): split core/node CMake targets and expose public core headers (#13325)
* refactor(autoware_traffic_light_category_merger): expose core header, split core/node CMake targets Move traffic_light_category_merger.hpp into include/autoware/traffic_light_category_merger/, and split the CMake target into ${PROJECT_NAME} (core) and ${PROJECT_NAME}_node (Node adapter linking the core). The Node header stays in src/. No behavior change; colcon build + colcon test pass (7 tests, 0 failures).
* refactor(autoware_traffic_light_selector): expose core header, split core/node CMake targets Move traffic_light_selector.hpp into include/autoware/traffic_light_selector/, keeping traffic_light_selector_utils.hpp private in src/ (not part of the public API). Split the CMake target into ${PROJECT_NAME} (core: selector + utils) and ${PROJECT_NAME}_node (Node adapter linking the core). No behavior change; colcon build + colcon test pass (7 tests, 0 failures).
* refactor(autoware_traffic_light_map_based_detector): expose core header, split core/node CMake targets Move traffic_light_map_based_detector.hpp into include/autoware/traffic_light_map_based_detector/, keeping traffic_light_map_based_detector_process.hpp private in src/ (not part of the public API). Since the public header declares functions taking image_geometry::PinholeCameraModel, add that include directly to the header instead of pulling it in transitively via the private process header. Split the CMake target into ${PROJECT_NAME} (core: detector + process) and ${PROJECT_NAME}_node (Node adapter linking the core). No behavior change; colcon build + colcon test pass (7 tests, 0 failures).
* refactor(autoware_tensorrt_yolox): build TrtYoloXDetector as part of the core library tensorrt_yolox_detector.cpp implements core detection logic and was being compiled into ${PROJECT_NAME}_node (the Node adapter target) instead of ${PROJECT_NAME} (the core library). Move it to the core target so the core library does not depend on the node target for its own logic.
- refactor(autoware_traffic_light_classifier): expose TrafficLightClassifier as the sole public header
- Move traffic_light_classifier.hpp to include/autoware/traffic_light_classifier/ and forward-declare ClassifierInterface instead of including classifier/classifier_interface.hpp, so the classifier/*.hpp backends and classifier_params.hpp / traffic_light_classifier_node.hpp stay private under src/.
- Split the CMake library target into ${PROJECT_NAME} (ROS-free classification core) and ${PROJECT_NAME}_node (rclcpp::Node adapter layer), mirroring the core/node separation already present in src/.
- single_image_debug_inference_node and the node-level integration test now link against both libraries instead of recompiling every source file.
- refactor(autoware_traffic_light_multi_camera_fusion): move headers under include/, split core/node CMake targets
- refactor(autoware_traffic_light_arbiter): split core/node CMake targets
- refactor(autoware_image_transport_decompressor): move core logic header to include, node header to src
* refactor(autoware_crosswalk_traffic_light_estimator): move core logic header to include, node header to src, split core/node CMake targets ---------
-
refactor(autoware_universe): use autoware_ament_auto_package in perception DNN packages (#12277) Co-authored-by: github-actions <<github-actions@github.com>> Co-authored-by: Taekjin LEE <<taekjin.lee@tier4.jp>>
-
refactor(perception): move node design files into each package (#13104) Co-authored-by: Claude Opus 5 (1M context) <<noreply@anthropic.com>>
-
test(tensorrt_yolox): add detector test and reduce test for node (#12898)
- test(autoware_tensorrt_yolox): add unit test for TrtYoloXDetector::detect
- test(autoware_tensorrt_yolox): reduce node test to ROS plumbing smoke test
* doc(tensorrt_yolox): reduce comment ---------Co-authored-by: Takahisa.Ishikawa
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
| Name |
|---|
| libopencv-dev |
Dependant Packages
Launch files
- launch/multiple_yolox.launch.xml
-
- image_raw0 [default: /image_raw0]
- image_raw1 [default: ]
- image_raw2 [default: ]
- image_raw3 [default: ]
- image_raw4 [default: ]
- image_raw5 [default: ]
- image_raw6 [default: ]
- image_raw7 [default: ]
- image_number [default: 1]
- output_topic [default: rois]
- launch/yolox.launch.xml
-
- yolox_node_name [default: tensorrt_yolox]
- image_transport_decompressor_node_name [default: image_transport_decompressor_node]
- data_path [default: $(env HOME)/autoware_data/ml_models]
- input/image [default: /sensing/camera/camera0/image_rect_color]
- output/objects [default: /perception/object_recognition/detection/rois0]
- output/mask [default: /perception/object_recognition/detection/mask0]
- yolox_param_path [default: $(find-pkg-share autoware_tensorrt_yolox)/config/yolox_s_plus_opt.param.yaml]
- model_path [default: $(var data_path)/tensorrt_yolox/yolox-sPlus-opt-pseudoV2-T4-960x960-T4-seg16cls.onnx]
- label_path [default: $(var data_path)/tensorrt_yolox/label.txt]
- semantic_segmentation_color_map_path [default: $(var data_path)/tensorrt_yolox/semseg_color_map.csv]
- roi_remap_path [default: $(find-pkg-share autoware_tensorrt_yolox)/config/roi_label_remap.csv]
- roi_to_semantic_segmentation_remap_path [default: $(find-pkg-share autoware_tensorrt_yolox)/config/roi_to_semseg_label_remap.csv]
- use_decompress [default: true]
- build_only [default: false]
- decompress_param_path [default: $(find-pkg-share autoware_image_transport_decompressor)/config/image_transport_decompressor.param.yaml]
- launch/yolox_s_plus_opt.launch.xml
-
- yolox_node_name [default: tensorrt_yolox]
- image_transport_decompressor_node_name [default: image_transport_decompressor_node]
- data_path [default: $(env HOME)/autoware_data/ml_models]
- input/image [default: /sensing/camera/camera0/image_rect_color]
- output/objects [default: /perception/object_recognition/detection/rois0]
- output/mask [default: /perception/object_recognition/detection/mask0]
- yolox_param_path [default: $(find-pkg-share autoware_tensorrt_yolox)/config/yolox_s_plus_opt.param.yaml]
- model_path [default: $(var data_path)/tensorrt_yolox/yolox-sPlus-opt-pseudoV2-T4-960x960-T4-seg16cls.onnx]
- label_path [default: $(var data_path)/tensorrt_yolox/label.txt]
- semantic_segmentation_color_map_path [default: $(var data_path)/tensorrt_yolox/semseg_color_map.csv]
- roi_remap_path [default: $(find-pkg-share autoware_tensorrt_yolox)/config/roi_label_remap.csv]
- roi_to_semantic_segmentation_remap_path [default: $(find-pkg-share autoware_tensorrt_yolox)/config/roi_to_semseg_label_remap.csv]
- use_decompress [default: true]
- build_only [default: false]
- decompress_param_path [default: $(find-pkg-share autoware_image_transport_decompressor)/config/image_transport_decompressor.param.yaml]
- launch/yolox_tiny.launch.xml
-
- data_path [default: $(env HOME)/autoware_data/ml_models]
- input/image [default: /sensing/camera/camera0/image_rect_color]
- output/objects [default: /perception/object_recognition/detection/rois0]
- yolox_param_path [default: $(find-pkg-share autoware_tensorrt_yolox)/config/yolox_tiny.param.yaml]
- model_path [default: $(var data_path)/tensorrt_yolox/yolox-tiny.onnx]
- label_path [default: $(var data_path)/tensorrt_yolox/label.txt]
- semantic_segmentation_color_map_path [default: $(var data_path)/tensorrt_yolox/semseg_color_map.csv]
- roi_remap_path [default: $(find-pkg-share autoware_tensorrt_yolox)/config/roi_label_remap.csv]
- roi_to_semantic_segmentation_remap_path [default: $(find-pkg-share autoware_tensorrt_yolox)/config/roi_to_semseg_label_remap.csv]
- use_decompress [default: true]
- build_only [default: false]
- decompressor_param_path [default: $(find-pkg-share autoware_image_transport_decompressor)/config/image_transport_decompressor.param.yaml]
- launch/yolox_traffic_light_detector.launch.xml
-
- data_path [default: $(env HOME)/autoware_data/ml_models]
- input/image [default: /sensing/camera/camera6/image_raw]
- output/objects [default: /perception/traffic_light_recognition/camera6/detection/rois]
- yolox_param_path [default: $(find-pkg-share autoware_tensorrt_yolox)/config/yolox_traffic_light_detector.param.yaml]
- model_path [default: $(var data_path)/tensorrt_yolox/yolox_s_car_ped_tl_detector_960_960_batch_1.onnx]
- label_path [default: $(var data_path)/tensorrt_yolox/car_ped_tl_detector_labels.txt]
- semantic_segmentation_color_map_path [default: $(var data_path)/tensorrt_yolox/semseg_color_map.csv]
- roi_remap_path [default: $(find-pkg-share autoware_tensorrt_yolox)/config/traffic_light_roi_label_remap.csv]
- roi_to_semantic_segmentation_remap_path [default: ]
- use_decompress [default: true]
- build_only [default: false]
- decompressor_param_path [default: $(find-pkg-share autoware_image_transport_decompressor)/config/image_transport_decompressor.param.yaml]
Messages
Services
Plugins
Recent questions tagged autoware_tensorrt_yolox at Robotics Stack Exchange
Package Summary
| Version | 0.53.0 |
| License | Apache License 2.0 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Description | |
| Checkout URI | https://github.com/autowarefoundation/autoware_universe.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-10-23 |
| Dev Status | UNKNOWN |
| Released | UNRELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Dan Umeda
- Manato Hirabayashi
- Kotaro Uetake
- Masato Saeki
Authors
- Daisuke Nishimatsu
autoware_tensorrt_yolox
Purpose
This package detects target objects e.g., cars, trucks, bicycles, and pedestrians and segment target objects such as cars, trucks, buses and pedestrian, building, vegetation, road, sidewalk on a image based on YOLOX model with multi-header structure.
Additionally, the package also supports traffic light detection by switching onnx file which target classes listed on respective label_file. Currently 0: unknown, 1: car_traffic_light and 2: pedestrian_traffic_light.
Inner-workings / Algorithms
Cite
Zheng Ge, Songtao Liu, Feng Wang, Zeming Li, Jian Sun, “YOLOX: Exceeding YOLO Series in 2021”, arXiv preprint arXiv:2107.08430, 2021 [ref]
Inputs / Outputs
Input
| Name | Type | Description |
|---|---|---|
in/image |
sensor_msgs/Image |
The input image |
Output
| Name | Type | Description |
|---|---|---|
out/objects |
tier4_perception_msgs/DetectedObjectsWithFeature |
The detected objects or traffic light with 2D bounding boxes |
out/image |
sensor_msgs/Image |
The image with 2D bounding boxes for visualization |
out/mask |
sensor_msgs/Image |
The semantic segmentation mask (only effective for semseg model) |
out/color_mask |
sensor_msgs/Image |
The colorized image of semantic segmentation mask for visualization (only effective for semseg model) |
Parameters
yolox_s_plus_opt
{{ json_to_markdown(“perception/autoware_tensorrt_yolox/schema/yolox_s_plus_opt.schema.json”) }}
yolox_tiny
{{ json_to_markdown(“perception/autoware_tensorrt_yolox/schema/yolox_tiny.schema.json”) }}
yolox_traffic_light_detector
{{ json_to_markdown(“perception/autoware_tensorrt_yolox/schema/yolox_traffic_light_detector.schema.json”) }}
Assumptions / Known limits
The label contained in detected 2D bounding boxes (i.e., out/objects) will be either one of the followings:
- CAR
- PEDESTRIAN (“PERSON” will also be categorized as “PEDESTRIAN”)
- BUS
- TRUCK
- BICYCLE
- MOTORCYCLE
or
- UNKNOWN
- CAR_TRAFFIC_LIGHT
- PEDESTRIAN_TRAFFIC_LIGHT
for traffic light detector onnx model.
If other labels (case insensitive) are contained in the file specified via the label_file parameter,
those are labeled as UNKNOWN, while detected rectangles are drawn in the visualization result (out/image).
The semantic segmentation mask is a gray image whose each pixel is index of one following class:
| index | semantic name |
|---|---|
| 0 | road |
| 1 | building |
| 2 | wall |
| 3 | obstacle |
| 4 | traffic_light |
| 5 | traffic_sign |
| 6 | person |
| 7 | vehicle |
| 8 | bike |
| 9 | road |
| 10 | sidewalk |
| 11 | roadPaint |
| 12 | curbstone |
| 13 | crosswalk_others |
| 14 | vegetation |
| 15 | sky |
Onnx model
A sample model (named yolox-tiny.onnx) is downloaded by ansible script on env preparation stage, if not, please, follow Manual downloading of artifacts.
To accelerate Non-maximum-suppression (NMS), which is one of the common post-process after object detection inference,
EfficientNMS_TRT module is attached after the ordinal YOLOX (tiny) network.
The EfficientNMS_TRT module contains fixed values for score_threshold and nms_threshold in it,
hence these parameters are ignored when users specify ONNX models including this module.
This package accepts both EfficientNMS_TRT attached ONNXs and models published from the official YOLOX repository (we referred to them as “plain” models).
File truncated at 100 lines see the full file
Changelog for package autoware_tensorrt_yolox
0.53.0 (2026-09-29)
-
Merge remote-tracking branch 'origin/main' into prepare-0.53.0-changelog
-
build(traffic_light_perception): split core/node CMake targets and expose public core headers (#13325)
* refactor(autoware_traffic_light_category_merger): expose core header, split core/node CMake targets Move traffic_light_category_merger.hpp into include/autoware/traffic_light_category_merger/, and split the CMake target into ${PROJECT_NAME} (core) and ${PROJECT_NAME}_node (Node adapter linking the core). The Node header stays in src/. No behavior change; colcon build + colcon test pass (7 tests, 0 failures).
* refactor(autoware_traffic_light_selector): expose core header, split core/node CMake targets Move traffic_light_selector.hpp into include/autoware/traffic_light_selector/, keeping traffic_light_selector_utils.hpp private in src/ (not part of the public API). Split the CMake target into ${PROJECT_NAME} (core: selector + utils) and ${PROJECT_NAME}_node (Node adapter linking the core). No behavior change; colcon build + colcon test pass (7 tests, 0 failures).
* refactor(autoware_traffic_light_map_based_detector): expose core header, split core/node CMake targets Move traffic_light_map_based_detector.hpp into include/autoware/traffic_light_map_based_detector/, keeping traffic_light_map_based_detector_process.hpp private in src/ (not part of the public API). Since the public header declares functions taking image_geometry::PinholeCameraModel, add that include directly to the header instead of pulling it in transitively via the private process header. Split the CMake target into ${PROJECT_NAME} (core: detector + process) and ${PROJECT_NAME}_node (Node adapter linking the core). No behavior change; colcon build + colcon test pass (7 tests, 0 failures).
* refactor(autoware_tensorrt_yolox): build TrtYoloXDetector as part of the core library tensorrt_yolox_detector.cpp implements core detection logic and was being compiled into ${PROJECT_NAME}_node (the Node adapter target) instead of ${PROJECT_NAME} (the core library). Move it to the core target so the core library does not depend on the node target for its own logic.
- refactor(autoware_traffic_light_classifier): expose TrafficLightClassifier as the sole public header
- Move traffic_light_classifier.hpp to include/autoware/traffic_light_classifier/ and forward-declare ClassifierInterface instead of including classifier/classifier_interface.hpp, so the classifier/*.hpp backends and classifier_params.hpp / traffic_light_classifier_node.hpp stay private under src/.
- Split the CMake library target into ${PROJECT_NAME} (ROS-free classification core) and ${PROJECT_NAME}_node (rclcpp::Node adapter layer), mirroring the core/node separation already present in src/.
- single_image_debug_inference_node and the node-level integration test now link against both libraries instead of recompiling every source file.
- refactor(autoware_traffic_light_multi_camera_fusion): move headers under include/, split core/node CMake targets
- refactor(autoware_traffic_light_arbiter): split core/node CMake targets
- refactor(autoware_image_transport_decompressor): move core logic header to include, node header to src
* refactor(autoware_crosswalk_traffic_light_estimator): move core logic header to include, node header to src, split core/node CMake targets ---------
-
refactor(autoware_universe): use autoware_ament_auto_package in perception DNN packages (#12277) Co-authored-by: github-actions <<github-actions@github.com>> Co-authored-by: Taekjin LEE <<taekjin.lee@tier4.jp>>
-
refactor(perception): move node design files into each package (#13104) Co-authored-by: Claude Opus 5 (1M context) <<noreply@anthropic.com>>
-
test(tensorrt_yolox): add detector test and reduce test for node (#12898)
- test(autoware_tensorrt_yolox): add unit test for TrtYoloXDetector::detect
- test(autoware_tensorrt_yolox): reduce node test to ROS plumbing smoke test
* doc(tensorrt_yolox): reduce comment ---------Co-authored-by: Takahisa.Ishikawa
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
| Name |
|---|
| libopencv-dev |
Dependant Packages
Launch files
- launch/multiple_yolox.launch.xml
-
- image_raw0 [default: /image_raw0]
- image_raw1 [default: ]
- image_raw2 [default: ]
- image_raw3 [default: ]
- image_raw4 [default: ]
- image_raw5 [default: ]
- image_raw6 [default: ]
- image_raw7 [default: ]
- image_number [default: 1]
- output_topic [default: rois]
- launch/yolox.launch.xml
-
- yolox_node_name [default: tensorrt_yolox]
- image_transport_decompressor_node_name [default: image_transport_decompressor_node]
- data_path [default: $(env HOME)/autoware_data/ml_models]
- input/image [default: /sensing/camera/camera0/image_rect_color]
- output/objects [default: /perception/object_recognition/detection/rois0]
- output/mask [default: /perception/object_recognition/detection/mask0]
- yolox_param_path [default: $(find-pkg-share autoware_tensorrt_yolox)/config/yolox_s_plus_opt.param.yaml]
- model_path [default: $(var data_path)/tensorrt_yolox/yolox-sPlus-opt-pseudoV2-T4-960x960-T4-seg16cls.onnx]
- label_path [default: $(var data_path)/tensorrt_yolox/label.txt]
- semantic_segmentation_color_map_path [default: $(var data_path)/tensorrt_yolox/semseg_color_map.csv]
- roi_remap_path [default: $(find-pkg-share autoware_tensorrt_yolox)/config/roi_label_remap.csv]
- roi_to_semantic_segmentation_remap_path [default: $(find-pkg-share autoware_tensorrt_yolox)/config/roi_to_semseg_label_remap.csv]
- use_decompress [default: true]
- build_only [default: false]
- decompress_param_path [default: $(find-pkg-share autoware_image_transport_decompressor)/config/image_transport_decompressor.param.yaml]
- launch/yolox_s_plus_opt.launch.xml
-
- yolox_node_name [default: tensorrt_yolox]
- image_transport_decompressor_node_name [default: image_transport_decompressor_node]
- data_path [default: $(env HOME)/autoware_data/ml_models]
- input/image [default: /sensing/camera/camera0/image_rect_color]
- output/objects [default: /perception/object_recognition/detection/rois0]
- output/mask [default: /perception/object_recognition/detection/mask0]
- yolox_param_path [default: $(find-pkg-share autoware_tensorrt_yolox)/config/yolox_s_plus_opt.param.yaml]
- model_path [default: $(var data_path)/tensorrt_yolox/yolox-sPlus-opt-pseudoV2-T4-960x960-T4-seg16cls.onnx]
- label_path [default: $(var data_path)/tensorrt_yolox/label.txt]
- semantic_segmentation_color_map_path [default: $(var data_path)/tensorrt_yolox/semseg_color_map.csv]
- roi_remap_path [default: $(find-pkg-share autoware_tensorrt_yolox)/config/roi_label_remap.csv]
- roi_to_semantic_segmentation_remap_path [default: $(find-pkg-share autoware_tensorrt_yolox)/config/roi_to_semseg_label_remap.csv]
- use_decompress [default: true]
- build_only [default: false]
- decompress_param_path [default: $(find-pkg-share autoware_image_transport_decompressor)/config/image_transport_decompressor.param.yaml]
- launch/yolox_tiny.launch.xml
-
- data_path [default: $(env HOME)/autoware_data/ml_models]
- input/image [default: /sensing/camera/camera0/image_rect_color]
- output/objects [default: /perception/object_recognition/detection/rois0]
- yolox_param_path [default: $(find-pkg-share autoware_tensorrt_yolox)/config/yolox_tiny.param.yaml]
- model_path [default: $(var data_path)/tensorrt_yolox/yolox-tiny.onnx]
- label_path [default: $(var data_path)/tensorrt_yolox/label.txt]
- semantic_segmentation_color_map_path [default: $(var data_path)/tensorrt_yolox/semseg_color_map.csv]
- roi_remap_path [default: $(find-pkg-share autoware_tensorrt_yolox)/config/roi_label_remap.csv]
- roi_to_semantic_segmentation_remap_path [default: $(find-pkg-share autoware_tensorrt_yolox)/config/roi_to_semseg_label_remap.csv]
- use_decompress [default: true]
- build_only [default: false]
- decompressor_param_path [default: $(find-pkg-share autoware_image_transport_decompressor)/config/image_transport_decompressor.param.yaml]
- launch/yolox_traffic_light_detector.launch.xml
-
- data_path [default: $(env HOME)/autoware_data/ml_models]
- input/image [default: /sensing/camera/camera6/image_raw]
- output/objects [default: /perception/traffic_light_recognition/camera6/detection/rois]
- yolox_param_path [default: $(find-pkg-share autoware_tensorrt_yolox)/config/yolox_traffic_light_detector.param.yaml]
- model_path [default: $(var data_path)/tensorrt_yolox/yolox_s_car_ped_tl_detector_960_960_batch_1.onnx]
- label_path [default: $(var data_path)/tensorrt_yolox/car_ped_tl_detector_labels.txt]
- semantic_segmentation_color_map_path [default: $(var data_path)/tensorrt_yolox/semseg_color_map.csv]
- roi_remap_path [default: $(find-pkg-share autoware_tensorrt_yolox)/config/traffic_light_roi_label_remap.csv]
- roi_to_semantic_segmentation_remap_path [default: ]
- use_decompress [default: true]
- build_only [default: false]
- decompressor_param_path [default: $(find-pkg-share autoware_image_transport_decompressor)/config/image_transport_decompressor.param.yaml]
Messages
Services
Plugins
Recent questions tagged autoware_tensorrt_yolox at Robotics Stack Exchange
Package Summary
| Version | 0.53.0 |
| License | Apache License 2.0 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Description | |
| Checkout URI | https://github.com/autowarefoundation/autoware_universe.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-10-23 |
| Dev Status | UNKNOWN |
| Released | UNRELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Dan Umeda
- Manato Hirabayashi
- Kotaro Uetake
- Masato Saeki
Authors
- Daisuke Nishimatsu
autoware_tensorrt_yolox
Purpose
This package detects target objects e.g., cars, trucks, bicycles, and pedestrians and segment target objects such as cars, trucks, buses and pedestrian, building, vegetation, road, sidewalk on a image based on YOLOX model with multi-header structure.
Additionally, the package also supports traffic light detection by switching onnx file which target classes listed on respective label_file. Currently 0: unknown, 1: car_traffic_light and 2: pedestrian_traffic_light.
Inner-workings / Algorithms
Cite
Zheng Ge, Songtao Liu, Feng Wang, Zeming Li, Jian Sun, “YOLOX: Exceeding YOLO Series in 2021”, arXiv preprint arXiv:2107.08430, 2021 [ref]
Inputs / Outputs
Input
| Name | Type | Description |
|---|---|---|
in/image |
sensor_msgs/Image |
The input image |
Output
| Name | Type | Description |
|---|---|---|
out/objects |
tier4_perception_msgs/DetectedObjectsWithFeature |
The detected objects or traffic light with 2D bounding boxes |
out/image |
sensor_msgs/Image |
The image with 2D bounding boxes for visualization |
out/mask |
sensor_msgs/Image |
The semantic segmentation mask (only effective for semseg model) |
out/color_mask |
sensor_msgs/Image |
The colorized image of semantic segmentation mask for visualization (only effective for semseg model) |
Parameters
yolox_s_plus_opt
{{ json_to_markdown(“perception/autoware_tensorrt_yolox/schema/yolox_s_plus_opt.schema.json”) }}
yolox_tiny
{{ json_to_markdown(“perception/autoware_tensorrt_yolox/schema/yolox_tiny.schema.json”) }}
yolox_traffic_light_detector
{{ json_to_markdown(“perception/autoware_tensorrt_yolox/schema/yolox_traffic_light_detector.schema.json”) }}
Assumptions / Known limits
The label contained in detected 2D bounding boxes (i.e., out/objects) will be either one of the followings:
- CAR
- PEDESTRIAN (“PERSON” will also be categorized as “PEDESTRIAN”)
- BUS
- TRUCK
- BICYCLE
- MOTORCYCLE
or
- UNKNOWN
- CAR_TRAFFIC_LIGHT
- PEDESTRIAN_TRAFFIC_LIGHT
for traffic light detector onnx model.
If other labels (case insensitive) are contained in the file specified via the label_file parameter,
those are labeled as UNKNOWN, while detected rectangles are drawn in the visualization result (out/image).
The semantic segmentation mask is a gray image whose each pixel is index of one following class:
| index | semantic name |
|---|---|
| 0 | road |
| 1 | building |
| 2 | wall |
| 3 | obstacle |
| 4 | traffic_light |
| 5 | traffic_sign |
| 6 | person |
| 7 | vehicle |
| 8 | bike |
| 9 | road |
| 10 | sidewalk |
| 11 | roadPaint |
| 12 | curbstone |
| 13 | crosswalk_others |
| 14 | vegetation |
| 15 | sky |
Onnx model
A sample model (named yolox-tiny.onnx) is downloaded by ansible script on env preparation stage, if not, please, follow Manual downloading of artifacts.
To accelerate Non-maximum-suppression (NMS), which is one of the common post-process after object detection inference,
EfficientNMS_TRT module is attached after the ordinal YOLOX (tiny) network.
The EfficientNMS_TRT module contains fixed values for score_threshold and nms_threshold in it,
hence these parameters are ignored when users specify ONNX models including this module.
This package accepts both EfficientNMS_TRT attached ONNXs and models published from the official YOLOX repository (we referred to them as “plain” models).
File truncated at 100 lines see the full file
Changelog for package autoware_tensorrt_yolox
0.53.0 (2026-09-29)
-
Merge remote-tracking branch 'origin/main' into prepare-0.53.0-changelog
-
build(traffic_light_perception): split core/node CMake targets and expose public core headers (#13325)
* refactor(autoware_traffic_light_category_merger): expose core header, split core/node CMake targets Move traffic_light_category_merger.hpp into include/autoware/traffic_light_category_merger/, and split the CMake target into ${PROJECT_NAME} (core) and ${PROJECT_NAME}_node (Node adapter linking the core). The Node header stays in src/. No behavior change; colcon build + colcon test pass (7 tests, 0 failures).
* refactor(autoware_traffic_light_selector): expose core header, split core/node CMake targets Move traffic_light_selector.hpp into include/autoware/traffic_light_selector/, keeping traffic_light_selector_utils.hpp private in src/ (not part of the public API). Split the CMake target into ${PROJECT_NAME} (core: selector + utils) and ${PROJECT_NAME}_node (Node adapter linking the core). No behavior change; colcon build + colcon test pass (7 tests, 0 failures).
* refactor(autoware_traffic_light_map_based_detector): expose core header, split core/node CMake targets Move traffic_light_map_based_detector.hpp into include/autoware/traffic_light_map_based_detector/, keeping traffic_light_map_based_detector_process.hpp private in src/ (not part of the public API). Since the public header declares functions taking image_geometry::PinholeCameraModel, add that include directly to the header instead of pulling it in transitively via the private process header. Split the CMake target into ${PROJECT_NAME} (core: detector + process) and ${PROJECT_NAME}_node (Node adapter linking the core). No behavior change; colcon build + colcon test pass (7 tests, 0 failures).
* refactor(autoware_tensorrt_yolox): build TrtYoloXDetector as part of the core library tensorrt_yolox_detector.cpp implements core detection logic and was being compiled into ${PROJECT_NAME}_node (the Node adapter target) instead of ${PROJECT_NAME} (the core library). Move it to the core target so the core library does not depend on the node target for its own logic.
- refactor(autoware_traffic_light_classifier): expose TrafficLightClassifier as the sole public header
- Move traffic_light_classifier.hpp to include/autoware/traffic_light_classifier/ and forward-declare ClassifierInterface instead of including classifier/classifier_interface.hpp, so the classifier/*.hpp backends and classifier_params.hpp / traffic_light_classifier_node.hpp stay private under src/.
- Split the CMake library target into ${PROJECT_NAME} (ROS-free classification core) and ${PROJECT_NAME}_node (rclcpp::Node adapter layer), mirroring the core/node separation already present in src/.
- single_image_debug_inference_node and the node-level integration test now link against both libraries instead of recompiling every source file.
- refactor(autoware_traffic_light_multi_camera_fusion): move headers under include/, split core/node CMake targets
- refactor(autoware_traffic_light_arbiter): split core/node CMake targets
- refactor(autoware_image_transport_decompressor): move core logic header to include, node header to src
* refactor(autoware_crosswalk_traffic_light_estimator): move core logic header to include, node header to src, split core/node CMake targets ---------
-
refactor(autoware_universe): use autoware_ament_auto_package in perception DNN packages (#12277) Co-authored-by: github-actions <<github-actions@github.com>> Co-authored-by: Taekjin LEE <<taekjin.lee@tier4.jp>>
-
refactor(perception): move node design files into each package (#13104) Co-authored-by: Claude Opus 5 (1M context) <<noreply@anthropic.com>>
-
test(tensorrt_yolox): add detector test and reduce test for node (#12898)
- test(autoware_tensorrt_yolox): add unit test for TrtYoloXDetector::detect
- test(autoware_tensorrt_yolox): reduce node test to ROS plumbing smoke test
* doc(tensorrt_yolox): reduce comment ---------Co-authored-by: Takahisa.Ishikawa
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
| Name |
|---|
| libopencv-dev |
Dependant Packages
Launch files
- launch/multiple_yolox.launch.xml
-
- image_raw0 [default: /image_raw0]
- image_raw1 [default: ]
- image_raw2 [default: ]
- image_raw3 [default: ]
- image_raw4 [default: ]
- image_raw5 [default: ]
- image_raw6 [default: ]
- image_raw7 [default: ]
- image_number [default: 1]
- output_topic [default: rois]
- launch/yolox.launch.xml
-
- yolox_node_name [default: tensorrt_yolox]
- image_transport_decompressor_node_name [default: image_transport_decompressor_node]
- data_path [default: $(env HOME)/autoware_data/ml_models]
- input/image [default: /sensing/camera/camera0/image_rect_color]
- output/objects [default: /perception/object_recognition/detection/rois0]
- output/mask [default: /perception/object_recognition/detection/mask0]
- yolox_param_path [default: $(find-pkg-share autoware_tensorrt_yolox)/config/yolox_s_plus_opt.param.yaml]
- model_path [default: $(var data_path)/tensorrt_yolox/yolox-sPlus-opt-pseudoV2-T4-960x960-T4-seg16cls.onnx]
- label_path [default: $(var data_path)/tensorrt_yolox/label.txt]
- semantic_segmentation_color_map_path [default: $(var data_path)/tensorrt_yolox/semseg_color_map.csv]
- roi_remap_path [default: $(find-pkg-share autoware_tensorrt_yolox)/config/roi_label_remap.csv]
- roi_to_semantic_segmentation_remap_path [default: $(find-pkg-share autoware_tensorrt_yolox)/config/roi_to_semseg_label_remap.csv]
- use_decompress [default: true]
- build_only [default: false]
- decompress_param_path [default: $(find-pkg-share autoware_image_transport_decompressor)/config/image_transport_decompressor.param.yaml]
- launch/yolox_s_plus_opt.launch.xml
-
- yolox_node_name [default: tensorrt_yolox]
- image_transport_decompressor_node_name [default: image_transport_decompressor_node]
- data_path [default: $(env HOME)/autoware_data/ml_models]
- input/image [default: /sensing/camera/camera0/image_rect_color]
- output/objects [default: /perception/object_recognition/detection/rois0]
- output/mask [default: /perception/object_recognition/detection/mask0]
- yolox_param_path [default: $(find-pkg-share autoware_tensorrt_yolox)/config/yolox_s_plus_opt.param.yaml]
- model_path [default: $(var data_path)/tensorrt_yolox/yolox-sPlus-opt-pseudoV2-T4-960x960-T4-seg16cls.onnx]
- label_path [default: $(var data_path)/tensorrt_yolox/label.txt]
- semantic_segmentation_color_map_path [default: $(var data_path)/tensorrt_yolox/semseg_color_map.csv]
- roi_remap_path [default: $(find-pkg-share autoware_tensorrt_yolox)/config/roi_label_remap.csv]
- roi_to_semantic_segmentation_remap_path [default: $(find-pkg-share autoware_tensorrt_yolox)/config/roi_to_semseg_label_remap.csv]
- use_decompress [default: true]
- build_only [default: false]
- decompress_param_path [default: $(find-pkg-share autoware_image_transport_decompressor)/config/image_transport_decompressor.param.yaml]
- launch/yolox_tiny.launch.xml
-
- data_path [default: $(env HOME)/autoware_data/ml_models]
- input/image [default: /sensing/camera/camera0/image_rect_color]
- output/objects [default: /perception/object_recognition/detection/rois0]
- yolox_param_path [default: $(find-pkg-share autoware_tensorrt_yolox)/config/yolox_tiny.param.yaml]
- model_path [default: $(var data_path)/tensorrt_yolox/yolox-tiny.onnx]
- label_path [default: $(var data_path)/tensorrt_yolox/label.txt]
- semantic_segmentation_color_map_path [default: $(var data_path)/tensorrt_yolox/semseg_color_map.csv]
- roi_remap_path [default: $(find-pkg-share autoware_tensorrt_yolox)/config/roi_label_remap.csv]
- roi_to_semantic_segmentation_remap_path [default: $(find-pkg-share autoware_tensorrt_yolox)/config/roi_to_semseg_label_remap.csv]
- use_decompress [default: true]
- build_only [default: false]
- decompressor_param_path [default: $(find-pkg-share autoware_image_transport_decompressor)/config/image_transport_decompressor.param.yaml]
- launch/yolox_traffic_light_detector.launch.xml
-
- data_path [default: $(env HOME)/autoware_data/ml_models]
- input/image [default: /sensing/camera/camera6/image_raw]
- output/objects [default: /perception/traffic_light_recognition/camera6/detection/rois]
- yolox_param_path [default: $(find-pkg-share autoware_tensorrt_yolox)/config/yolox_traffic_light_detector.param.yaml]
- model_path [default: $(var data_path)/tensorrt_yolox/yolox_s_car_ped_tl_detector_960_960_batch_1.onnx]
- label_path [default: $(var data_path)/tensorrt_yolox/car_ped_tl_detector_labels.txt]
- semantic_segmentation_color_map_path [default: $(var data_path)/tensorrt_yolox/semseg_color_map.csv]
- roi_remap_path [default: $(find-pkg-share autoware_tensorrt_yolox)/config/traffic_light_roi_label_remap.csv]
- roi_to_semantic_segmentation_remap_path [default: ]
- use_decompress [default: true]
- build_only [default: false]
- decompressor_param_path [default: $(find-pkg-share autoware_image_transport_decompressor)/config/image_transport_decompressor.param.yaml]
Messages
Services
Plugins
Recent questions tagged autoware_tensorrt_yolox at Robotics Stack Exchange
Package Summary
| Version | 0.53.0 |
| License | Apache License 2.0 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Description | |
| Checkout URI | https://github.com/autowarefoundation/autoware_universe.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-10-23 |
| Dev Status | UNKNOWN |
| Released | UNRELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Dan Umeda
- Manato Hirabayashi
- Kotaro Uetake
- Masato Saeki
Authors
- Daisuke Nishimatsu
autoware_tensorrt_yolox
Purpose
This package detects target objects e.g., cars, trucks, bicycles, and pedestrians and segment target objects such as cars, trucks, buses and pedestrian, building, vegetation, road, sidewalk on a image based on YOLOX model with multi-header structure.
Additionally, the package also supports traffic light detection by switching onnx file which target classes listed on respective label_file. Currently 0: unknown, 1: car_traffic_light and 2: pedestrian_traffic_light.
Inner-workings / Algorithms
Cite
Zheng Ge, Songtao Liu, Feng Wang, Zeming Li, Jian Sun, “YOLOX: Exceeding YOLO Series in 2021”, arXiv preprint arXiv:2107.08430, 2021 [ref]
Inputs / Outputs
Input
| Name | Type | Description |
|---|---|---|
in/image |
sensor_msgs/Image |
The input image |
Output
| Name | Type | Description |
|---|---|---|
out/objects |
tier4_perception_msgs/DetectedObjectsWithFeature |
The detected objects or traffic light with 2D bounding boxes |
out/image |
sensor_msgs/Image |
The image with 2D bounding boxes for visualization |
out/mask |
sensor_msgs/Image |
The semantic segmentation mask (only effective for semseg model) |
out/color_mask |
sensor_msgs/Image |
The colorized image of semantic segmentation mask for visualization (only effective for semseg model) |
Parameters
yolox_s_plus_opt
{{ json_to_markdown(“perception/autoware_tensorrt_yolox/schema/yolox_s_plus_opt.schema.json”) }}
yolox_tiny
{{ json_to_markdown(“perception/autoware_tensorrt_yolox/schema/yolox_tiny.schema.json”) }}
yolox_traffic_light_detector
{{ json_to_markdown(“perception/autoware_tensorrt_yolox/schema/yolox_traffic_light_detector.schema.json”) }}
Assumptions / Known limits
The label contained in detected 2D bounding boxes (i.e., out/objects) will be either one of the followings:
- CAR
- PEDESTRIAN (“PERSON” will also be categorized as “PEDESTRIAN”)
- BUS
- TRUCK
- BICYCLE
- MOTORCYCLE
or
- UNKNOWN
- CAR_TRAFFIC_LIGHT
- PEDESTRIAN_TRAFFIC_LIGHT
for traffic light detector onnx model.
If other labels (case insensitive) are contained in the file specified via the label_file parameter,
those are labeled as UNKNOWN, while detected rectangles are drawn in the visualization result (out/image).
The semantic segmentation mask is a gray image whose each pixel is index of one following class:
| index | semantic name |
|---|---|
| 0 | road |
| 1 | building |
| 2 | wall |
| 3 | obstacle |
| 4 | traffic_light |
| 5 | traffic_sign |
| 6 | person |
| 7 | vehicle |
| 8 | bike |
| 9 | road |
| 10 | sidewalk |
| 11 | roadPaint |
| 12 | curbstone |
| 13 | crosswalk_others |
| 14 | vegetation |
| 15 | sky |
Onnx model
A sample model (named yolox-tiny.onnx) is downloaded by ansible script on env preparation stage, if not, please, follow Manual downloading of artifacts.
To accelerate Non-maximum-suppression (NMS), which is one of the common post-process after object detection inference,
EfficientNMS_TRT module is attached after the ordinal YOLOX (tiny) network.
The EfficientNMS_TRT module contains fixed values for score_threshold and nms_threshold in it,
hence these parameters are ignored when users specify ONNX models including this module.
This package accepts both EfficientNMS_TRT attached ONNXs and models published from the official YOLOX repository (we referred to them as “plain” models).
File truncated at 100 lines see the full file
Changelog for package autoware_tensorrt_yolox
0.53.0 (2026-09-29)
-
Merge remote-tracking branch 'origin/main' into prepare-0.53.0-changelog
-
build(traffic_light_perception): split core/node CMake targets and expose public core headers (#13325)
* refactor(autoware_traffic_light_category_merger): expose core header, split core/node CMake targets Move traffic_light_category_merger.hpp into include/autoware/traffic_light_category_merger/, and split the CMake target into ${PROJECT_NAME} (core) and ${PROJECT_NAME}_node (Node adapter linking the core). The Node header stays in src/. No behavior change; colcon build + colcon test pass (7 tests, 0 failures).
* refactor(autoware_traffic_light_selector): expose core header, split core/node CMake targets Move traffic_light_selector.hpp into include/autoware/traffic_light_selector/, keeping traffic_light_selector_utils.hpp private in src/ (not part of the public API). Split the CMake target into ${PROJECT_NAME} (core: selector + utils) and ${PROJECT_NAME}_node (Node adapter linking the core). No behavior change; colcon build + colcon test pass (7 tests, 0 failures).
* refactor(autoware_traffic_light_map_based_detector): expose core header, split core/node CMake targets Move traffic_light_map_based_detector.hpp into include/autoware/traffic_light_map_based_detector/, keeping traffic_light_map_based_detector_process.hpp private in src/ (not part of the public API). Since the public header declares functions taking image_geometry::PinholeCameraModel, add that include directly to the header instead of pulling it in transitively via the private process header. Split the CMake target into ${PROJECT_NAME} (core: detector + process) and ${PROJECT_NAME}_node (Node adapter linking the core). No behavior change; colcon build + colcon test pass (7 tests, 0 failures).
* refactor(autoware_tensorrt_yolox): build TrtYoloXDetector as part of the core library tensorrt_yolox_detector.cpp implements core detection logic and was being compiled into ${PROJECT_NAME}_node (the Node adapter target) instead of ${PROJECT_NAME} (the core library). Move it to the core target so the core library does not depend on the node target for its own logic.
- refactor(autoware_traffic_light_classifier): expose TrafficLightClassifier as the sole public header
- Move traffic_light_classifier.hpp to include/autoware/traffic_light_classifier/ and forward-declare ClassifierInterface instead of including classifier/classifier_interface.hpp, so the classifier/*.hpp backends and classifier_params.hpp / traffic_light_classifier_node.hpp stay private under src/.
- Split the CMake library target into ${PROJECT_NAME} (ROS-free classification core) and ${PROJECT_NAME}_node (rclcpp::Node adapter layer), mirroring the core/node separation already present in src/.
- single_image_debug_inference_node and the node-level integration test now link against both libraries instead of recompiling every source file.
- refactor(autoware_traffic_light_multi_camera_fusion): move headers under include/, split core/node CMake targets
- refactor(autoware_traffic_light_arbiter): split core/node CMake targets
- refactor(autoware_image_transport_decompressor): move core logic header to include, node header to src
* refactor(autoware_crosswalk_traffic_light_estimator): move core logic header to include, node header to src, split core/node CMake targets ---------
-
refactor(autoware_universe): use autoware_ament_auto_package in perception DNN packages (#12277) Co-authored-by: github-actions <<github-actions@github.com>> Co-authored-by: Taekjin LEE <<taekjin.lee@tier4.jp>>
-
refactor(perception): move node design files into each package (#13104) Co-authored-by: Claude Opus 5 (1M context) <<noreply@anthropic.com>>
-
test(tensorrt_yolox): add detector test and reduce test for node (#12898)
- test(autoware_tensorrt_yolox): add unit test for TrtYoloXDetector::detect
- test(autoware_tensorrt_yolox): reduce node test to ROS plumbing smoke test
* doc(tensorrt_yolox): reduce comment ---------Co-authored-by: Takahisa.Ishikawa
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
| Name |
|---|
| libopencv-dev |
Dependant Packages
Launch files
- launch/multiple_yolox.launch.xml
-
- image_raw0 [default: /image_raw0]
- image_raw1 [default: ]
- image_raw2 [default: ]
- image_raw3 [default: ]
- image_raw4 [default: ]
- image_raw5 [default: ]
- image_raw6 [default: ]
- image_raw7 [default: ]
- image_number [default: 1]
- output_topic [default: rois]
- launch/yolox.launch.xml
-
- yolox_node_name [default: tensorrt_yolox]
- image_transport_decompressor_node_name [default: image_transport_decompressor_node]
- data_path [default: $(env HOME)/autoware_data/ml_models]
- input/image [default: /sensing/camera/camera0/image_rect_color]
- output/objects [default: /perception/object_recognition/detection/rois0]
- output/mask [default: /perception/object_recognition/detection/mask0]
- yolox_param_path [default: $(find-pkg-share autoware_tensorrt_yolox)/config/yolox_s_plus_opt.param.yaml]
- model_path [default: $(var data_path)/tensorrt_yolox/yolox-sPlus-opt-pseudoV2-T4-960x960-T4-seg16cls.onnx]
- label_path [default: $(var data_path)/tensorrt_yolox/label.txt]
- semantic_segmentation_color_map_path [default: $(var data_path)/tensorrt_yolox/semseg_color_map.csv]
- roi_remap_path [default: $(find-pkg-share autoware_tensorrt_yolox)/config/roi_label_remap.csv]
- roi_to_semantic_segmentation_remap_path [default: $(find-pkg-share autoware_tensorrt_yolox)/config/roi_to_semseg_label_remap.csv]
- use_decompress [default: true]
- build_only [default: false]
- decompress_param_path [default: $(find-pkg-share autoware_image_transport_decompressor)/config/image_transport_decompressor.param.yaml]
- launch/yolox_s_plus_opt.launch.xml
-
- yolox_node_name [default: tensorrt_yolox]
- image_transport_decompressor_node_name [default: image_transport_decompressor_node]
- data_path [default: $(env HOME)/autoware_data/ml_models]
- input/image [default: /sensing/camera/camera0/image_rect_color]
- output/objects [default: /perception/object_recognition/detection/rois0]
- output/mask [default: /perception/object_recognition/detection/mask0]
- yolox_param_path [default: $(find-pkg-share autoware_tensorrt_yolox)/config/yolox_s_plus_opt.param.yaml]
- model_path [default: $(var data_path)/tensorrt_yolox/yolox-sPlus-opt-pseudoV2-T4-960x960-T4-seg16cls.onnx]
- label_path [default: $(var data_path)/tensorrt_yolox/label.txt]
- semantic_segmentation_color_map_path [default: $(var data_path)/tensorrt_yolox/semseg_color_map.csv]
- roi_remap_path [default: $(find-pkg-share autoware_tensorrt_yolox)/config/roi_label_remap.csv]
- roi_to_semantic_segmentation_remap_path [default: $(find-pkg-share autoware_tensorrt_yolox)/config/roi_to_semseg_label_remap.csv]
- use_decompress [default: true]
- build_only [default: false]
- decompress_param_path [default: $(find-pkg-share autoware_image_transport_decompressor)/config/image_transport_decompressor.param.yaml]
- launch/yolox_tiny.launch.xml
-
- data_path [default: $(env HOME)/autoware_data/ml_models]
- input/image [default: /sensing/camera/camera0/image_rect_color]
- output/objects [default: /perception/object_recognition/detection/rois0]
- yolox_param_path [default: $(find-pkg-share autoware_tensorrt_yolox)/config/yolox_tiny.param.yaml]
- model_path [default: $(var data_path)/tensorrt_yolox/yolox-tiny.onnx]
- label_path [default: $(var data_path)/tensorrt_yolox/label.txt]
- semantic_segmentation_color_map_path [default: $(var data_path)/tensorrt_yolox/semseg_color_map.csv]
- roi_remap_path [default: $(find-pkg-share autoware_tensorrt_yolox)/config/roi_label_remap.csv]
- roi_to_semantic_segmentation_remap_path [default: $(find-pkg-share autoware_tensorrt_yolox)/config/roi_to_semseg_label_remap.csv]
- use_decompress [default: true]
- build_only [default: false]
- decompressor_param_path [default: $(find-pkg-share autoware_image_transport_decompressor)/config/image_transport_decompressor.param.yaml]
- launch/yolox_traffic_light_detector.launch.xml
-
- data_path [default: $(env HOME)/autoware_data/ml_models]
- input/image [default: /sensing/camera/camera6/image_raw]
- output/objects [default: /perception/traffic_light_recognition/camera6/detection/rois]
- yolox_param_path [default: $(find-pkg-share autoware_tensorrt_yolox)/config/yolox_traffic_light_detector.param.yaml]
- model_path [default: $(var data_path)/tensorrt_yolox/yolox_s_car_ped_tl_detector_960_960_batch_1.onnx]
- label_path [default: $(var data_path)/tensorrt_yolox/car_ped_tl_detector_labels.txt]
- semantic_segmentation_color_map_path [default: $(var data_path)/tensorrt_yolox/semseg_color_map.csv]
- roi_remap_path [default: $(find-pkg-share autoware_tensorrt_yolox)/config/traffic_light_roi_label_remap.csv]
- roi_to_semantic_segmentation_remap_path [default: ]
- use_decompress [default: true]
- build_only [default: false]
- decompressor_param_path [default: $(find-pkg-share autoware_image_transport_decompressor)/config/image_transport_decompressor.param.yaml]
Messages
Services
Plugins
Recent questions tagged autoware_tensorrt_yolox at Robotics Stack Exchange
Package Summary
| Version | 0.53.0 |
| License | Apache License 2.0 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Description | |
| Checkout URI | https://github.com/autowarefoundation/autoware_universe.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-10-23 |
| Dev Status | UNKNOWN |
| Released | UNRELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Dan Umeda
- Manato Hirabayashi
- Kotaro Uetake
- Masato Saeki
Authors
- Daisuke Nishimatsu
autoware_tensorrt_yolox
Purpose
This package detects target objects e.g., cars, trucks, bicycles, and pedestrians and segment target objects such as cars, trucks, buses and pedestrian, building, vegetation, road, sidewalk on a image based on YOLOX model with multi-header structure.
Additionally, the package also supports traffic light detection by switching onnx file which target classes listed on respective label_file. Currently 0: unknown, 1: car_traffic_light and 2: pedestrian_traffic_light.
Inner-workings / Algorithms
Cite
Zheng Ge, Songtao Liu, Feng Wang, Zeming Li, Jian Sun, “YOLOX: Exceeding YOLO Series in 2021”, arXiv preprint arXiv:2107.08430, 2021 [ref]
Inputs / Outputs
Input
| Name | Type | Description |
|---|---|---|
in/image |
sensor_msgs/Image |
The input image |
Output
| Name | Type | Description |
|---|---|---|
out/objects |
tier4_perception_msgs/DetectedObjectsWithFeature |
The detected objects or traffic light with 2D bounding boxes |
out/image |
sensor_msgs/Image |
The image with 2D bounding boxes for visualization |
out/mask |
sensor_msgs/Image |
The semantic segmentation mask (only effective for semseg model) |
out/color_mask |
sensor_msgs/Image |
The colorized image of semantic segmentation mask for visualization (only effective for semseg model) |
Parameters
yolox_s_plus_opt
{{ json_to_markdown(“perception/autoware_tensorrt_yolox/schema/yolox_s_plus_opt.schema.json”) }}
yolox_tiny
{{ json_to_markdown(“perception/autoware_tensorrt_yolox/schema/yolox_tiny.schema.json”) }}
yolox_traffic_light_detector
{{ json_to_markdown(“perception/autoware_tensorrt_yolox/schema/yolox_traffic_light_detector.schema.json”) }}
Assumptions / Known limits
The label contained in detected 2D bounding boxes (i.e., out/objects) will be either one of the followings:
- CAR
- PEDESTRIAN (“PERSON” will also be categorized as “PEDESTRIAN”)
- BUS
- TRUCK
- BICYCLE
- MOTORCYCLE
or
- UNKNOWN
- CAR_TRAFFIC_LIGHT
- PEDESTRIAN_TRAFFIC_LIGHT
for traffic light detector onnx model.
If other labels (case insensitive) are contained in the file specified via the label_file parameter,
those are labeled as UNKNOWN, while detected rectangles are drawn in the visualization result (out/image).
The semantic segmentation mask is a gray image whose each pixel is index of one following class:
| index | semantic name |
|---|---|
| 0 | road |
| 1 | building |
| 2 | wall |
| 3 | obstacle |
| 4 | traffic_light |
| 5 | traffic_sign |
| 6 | person |
| 7 | vehicle |
| 8 | bike |
| 9 | road |
| 10 | sidewalk |
| 11 | roadPaint |
| 12 | curbstone |
| 13 | crosswalk_others |
| 14 | vegetation |
| 15 | sky |
Onnx model
A sample model (named yolox-tiny.onnx) is downloaded by ansible script on env preparation stage, if not, please, follow Manual downloading of artifacts.
To accelerate Non-maximum-suppression (NMS), which is one of the common post-process after object detection inference,
EfficientNMS_TRT module is attached after the ordinal YOLOX (tiny) network.
The EfficientNMS_TRT module contains fixed values for score_threshold and nms_threshold in it,
hence these parameters are ignored when users specify ONNX models including this module.
This package accepts both EfficientNMS_TRT attached ONNXs and models published from the official YOLOX repository (we referred to them as “plain” models).
File truncated at 100 lines see the full file
Changelog for package autoware_tensorrt_yolox
0.53.0 (2026-09-29)
-
Merge remote-tracking branch 'origin/main' into prepare-0.53.0-changelog
-
build(traffic_light_perception): split core/node CMake targets and expose public core headers (#13325)
* refactor(autoware_traffic_light_category_merger): expose core header, split core/node CMake targets Move traffic_light_category_merger.hpp into include/autoware/traffic_light_category_merger/, and split the CMake target into ${PROJECT_NAME} (core) and ${PROJECT_NAME}_node (Node adapter linking the core). The Node header stays in src/. No behavior change; colcon build + colcon test pass (7 tests, 0 failures).
* refactor(autoware_traffic_light_selector): expose core header, split core/node CMake targets Move traffic_light_selector.hpp into include/autoware/traffic_light_selector/, keeping traffic_light_selector_utils.hpp private in src/ (not part of the public API). Split the CMake target into ${PROJECT_NAME} (core: selector + utils) and ${PROJECT_NAME}_node (Node adapter linking the core). No behavior change; colcon build + colcon test pass (7 tests, 0 failures).
* refactor(autoware_traffic_light_map_based_detector): expose core header, split core/node CMake targets Move traffic_light_map_based_detector.hpp into include/autoware/traffic_light_map_based_detector/, keeping traffic_light_map_based_detector_process.hpp private in src/ (not part of the public API). Since the public header declares functions taking image_geometry::PinholeCameraModel, add that include directly to the header instead of pulling it in transitively via the private process header. Split the CMake target into ${PROJECT_NAME} (core: detector + process) and ${PROJECT_NAME}_node (Node adapter linking the core). No behavior change; colcon build + colcon test pass (7 tests, 0 failures).
* refactor(autoware_tensorrt_yolox): build TrtYoloXDetector as part of the core library tensorrt_yolox_detector.cpp implements core detection logic and was being compiled into ${PROJECT_NAME}_node (the Node adapter target) instead of ${PROJECT_NAME} (the core library). Move it to the core target so the core library does not depend on the node target for its own logic.
- refactor(autoware_traffic_light_classifier): expose TrafficLightClassifier as the sole public header
- Move traffic_light_classifier.hpp to include/autoware/traffic_light_classifier/ and forward-declare ClassifierInterface instead of including classifier/classifier_interface.hpp, so the classifier/*.hpp backends and classifier_params.hpp / traffic_light_classifier_node.hpp stay private under src/.
- Split the CMake library target into ${PROJECT_NAME} (ROS-free classification core) and ${PROJECT_NAME}_node (rclcpp::Node adapter layer), mirroring the core/node separation already present in src/.
- single_image_debug_inference_node and the node-level integration test now link against both libraries instead of recompiling every source file.
- refactor(autoware_traffic_light_multi_camera_fusion): move headers under include/, split core/node CMake targets
- refactor(autoware_traffic_light_arbiter): split core/node CMake targets
- refactor(autoware_image_transport_decompressor): move core logic header to include, node header to src
* refactor(autoware_crosswalk_traffic_light_estimator): move core logic header to include, node header to src, split core/node CMake targets ---------
-
refactor(autoware_universe): use autoware_ament_auto_package in perception DNN packages (#12277) Co-authored-by: github-actions <<github-actions@github.com>> Co-authored-by: Taekjin LEE <<taekjin.lee@tier4.jp>>
-
refactor(perception): move node design files into each package (#13104) Co-authored-by: Claude Opus 5 (1M context) <<noreply@anthropic.com>>
-
test(tensorrt_yolox): add detector test and reduce test for node (#12898)
- test(autoware_tensorrt_yolox): add unit test for TrtYoloXDetector::detect
- test(autoware_tensorrt_yolox): reduce node test to ROS plumbing smoke test
* doc(tensorrt_yolox): reduce comment ---------Co-authored-by: Takahisa.Ishikawa
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
| Name |
|---|
| libopencv-dev |
Dependant Packages
Launch files
- launch/multiple_yolox.launch.xml
-
- image_raw0 [default: /image_raw0]
- image_raw1 [default: ]
- image_raw2 [default: ]
- image_raw3 [default: ]
- image_raw4 [default: ]
- image_raw5 [default: ]
- image_raw6 [default: ]
- image_raw7 [default: ]
- image_number [default: 1]
- output_topic [default: rois]
- launch/yolox.launch.xml
-
- yolox_node_name [default: tensorrt_yolox]
- image_transport_decompressor_node_name [default: image_transport_decompressor_node]
- data_path [default: $(env HOME)/autoware_data/ml_models]
- input/image [default: /sensing/camera/camera0/image_rect_color]
- output/objects [default: /perception/object_recognition/detection/rois0]
- output/mask [default: /perception/object_recognition/detection/mask0]
- yolox_param_path [default: $(find-pkg-share autoware_tensorrt_yolox)/config/yolox_s_plus_opt.param.yaml]
- model_path [default: $(var data_path)/tensorrt_yolox/yolox-sPlus-opt-pseudoV2-T4-960x960-T4-seg16cls.onnx]
- label_path [default: $(var data_path)/tensorrt_yolox/label.txt]
- semantic_segmentation_color_map_path [default: $(var data_path)/tensorrt_yolox/semseg_color_map.csv]
- roi_remap_path [default: $(find-pkg-share autoware_tensorrt_yolox)/config/roi_label_remap.csv]
- roi_to_semantic_segmentation_remap_path [default: $(find-pkg-share autoware_tensorrt_yolox)/config/roi_to_semseg_label_remap.csv]
- use_decompress [default: true]
- build_only [default: false]
- decompress_param_path [default: $(find-pkg-share autoware_image_transport_decompressor)/config/image_transport_decompressor.param.yaml]
- launch/yolox_s_plus_opt.launch.xml
-
- yolox_node_name [default: tensorrt_yolox]
- image_transport_decompressor_node_name [default: image_transport_decompressor_node]
- data_path [default: $(env HOME)/autoware_data/ml_models]
- input/image [default: /sensing/camera/camera0/image_rect_color]
- output/objects [default: /perception/object_recognition/detection/rois0]
- output/mask [default: /perception/object_recognition/detection/mask0]
- yolox_param_path [default: $(find-pkg-share autoware_tensorrt_yolox)/config/yolox_s_plus_opt.param.yaml]
- model_path [default: $(var data_path)/tensorrt_yolox/yolox-sPlus-opt-pseudoV2-T4-960x960-T4-seg16cls.onnx]
- label_path [default: $(var data_path)/tensorrt_yolox/label.txt]
- semantic_segmentation_color_map_path [default: $(var data_path)/tensorrt_yolox/semseg_color_map.csv]
- roi_remap_path [default: $(find-pkg-share autoware_tensorrt_yolox)/config/roi_label_remap.csv]
- roi_to_semantic_segmentation_remap_path [default: $(find-pkg-share autoware_tensorrt_yolox)/config/roi_to_semseg_label_remap.csv]
- use_decompress [default: true]
- build_only [default: false]
- decompress_param_path [default: $(find-pkg-share autoware_image_transport_decompressor)/config/image_transport_decompressor.param.yaml]
- launch/yolox_tiny.launch.xml
-
- data_path [default: $(env HOME)/autoware_data/ml_models]
- input/image [default: /sensing/camera/camera0/image_rect_color]
- output/objects [default: /perception/object_recognition/detection/rois0]
- yolox_param_path [default: $(find-pkg-share autoware_tensorrt_yolox)/config/yolox_tiny.param.yaml]
- model_path [default: $(var data_path)/tensorrt_yolox/yolox-tiny.onnx]
- label_path [default: $(var data_path)/tensorrt_yolox/label.txt]
- semantic_segmentation_color_map_path [default: $(var data_path)/tensorrt_yolox/semseg_color_map.csv]
- roi_remap_path [default: $(find-pkg-share autoware_tensorrt_yolox)/config/roi_label_remap.csv]
- roi_to_semantic_segmentation_remap_path [default: $(find-pkg-share autoware_tensorrt_yolox)/config/roi_to_semseg_label_remap.csv]
- use_decompress [default: true]
- build_only [default: false]
- decompressor_param_path [default: $(find-pkg-share autoware_image_transport_decompressor)/config/image_transport_decompressor.param.yaml]
- launch/yolox_traffic_light_detector.launch.xml
-
- data_path [default: $(env HOME)/autoware_data/ml_models]
- input/image [default: /sensing/camera/camera6/image_raw]
- output/objects [default: /perception/traffic_light_recognition/camera6/detection/rois]
- yolox_param_path [default: $(find-pkg-share autoware_tensorrt_yolox)/config/yolox_traffic_light_detector.param.yaml]
- model_path [default: $(var data_path)/tensorrt_yolox/yolox_s_car_ped_tl_detector_960_960_batch_1.onnx]
- label_path [default: $(var data_path)/tensorrt_yolox/car_ped_tl_detector_labels.txt]
- semantic_segmentation_color_map_path [default: $(var data_path)/tensorrt_yolox/semseg_color_map.csv]
- roi_remap_path [default: $(find-pkg-share autoware_tensorrt_yolox)/config/traffic_light_roi_label_remap.csv]
- roi_to_semantic_segmentation_remap_path [default: ]
- use_decompress [default: true]
- build_only [default: false]
- decompressor_param_path [default: $(find-pkg-share autoware_image_transport_decompressor)/config/image_transport_decompressor.param.yaml]
Messages
Services
Plugins
Recent questions tagged autoware_tensorrt_yolox at Robotics Stack Exchange
Package Summary
| Version | 0.53.0 |
| License | Apache License 2.0 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Description | |
| Checkout URI | https://github.com/autowarefoundation/autoware_universe.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-10-23 |
| Dev Status | UNKNOWN |
| Released | UNRELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Dan Umeda
- Manato Hirabayashi
- Kotaro Uetake
- Masato Saeki
Authors
- Daisuke Nishimatsu
autoware_tensorrt_yolox
Purpose
This package detects target objects e.g., cars, trucks, bicycles, and pedestrians and segment target objects such as cars, trucks, buses and pedestrian, building, vegetation, road, sidewalk on a image based on YOLOX model with multi-header structure.
Additionally, the package also supports traffic light detection by switching onnx file which target classes listed on respective label_file. Currently 0: unknown, 1: car_traffic_light and 2: pedestrian_traffic_light.
Inner-workings / Algorithms
Cite
Zheng Ge, Songtao Liu, Feng Wang, Zeming Li, Jian Sun, “YOLOX: Exceeding YOLO Series in 2021”, arXiv preprint arXiv:2107.08430, 2021 [ref]
Inputs / Outputs
Input
| Name | Type | Description |
|---|---|---|
in/image |
sensor_msgs/Image |
The input image |
Output
| Name | Type | Description |
|---|---|---|
out/objects |
tier4_perception_msgs/DetectedObjectsWithFeature |
The detected objects or traffic light with 2D bounding boxes |
out/image |
sensor_msgs/Image |
The image with 2D bounding boxes for visualization |
out/mask |
sensor_msgs/Image |
The semantic segmentation mask (only effective for semseg model) |
out/color_mask |
sensor_msgs/Image |
The colorized image of semantic segmentation mask for visualization (only effective for semseg model) |
Parameters
yolox_s_plus_opt
{{ json_to_markdown(“perception/autoware_tensorrt_yolox/schema/yolox_s_plus_opt.schema.json”) }}
yolox_tiny
{{ json_to_markdown(“perception/autoware_tensorrt_yolox/schema/yolox_tiny.schema.json”) }}
yolox_traffic_light_detector
{{ json_to_markdown(“perception/autoware_tensorrt_yolox/schema/yolox_traffic_light_detector.schema.json”) }}
Assumptions / Known limits
The label contained in detected 2D bounding boxes (i.e., out/objects) will be either one of the followings:
- CAR
- PEDESTRIAN (“PERSON” will also be categorized as “PEDESTRIAN”)
- BUS
- TRUCK
- BICYCLE
- MOTORCYCLE
or
- UNKNOWN
- CAR_TRAFFIC_LIGHT
- PEDESTRIAN_TRAFFIC_LIGHT
for traffic light detector onnx model.
If other labels (case insensitive) are contained in the file specified via the label_file parameter,
those are labeled as UNKNOWN, while detected rectangles are drawn in the visualization result (out/image).
The semantic segmentation mask is a gray image whose each pixel is index of one following class:
| index | semantic name |
|---|---|
| 0 | road |
| 1 | building |
| 2 | wall |
| 3 | obstacle |
| 4 | traffic_light |
| 5 | traffic_sign |
| 6 | person |
| 7 | vehicle |
| 8 | bike |
| 9 | road |
| 10 | sidewalk |
| 11 | roadPaint |
| 12 | curbstone |
| 13 | crosswalk_others |
| 14 | vegetation |
| 15 | sky |
Onnx model
A sample model (named yolox-tiny.onnx) is downloaded by ansible script on env preparation stage, if not, please, follow Manual downloading of artifacts.
To accelerate Non-maximum-suppression (NMS), which is one of the common post-process after object detection inference,
EfficientNMS_TRT module is attached after the ordinal YOLOX (tiny) network.
The EfficientNMS_TRT module contains fixed values for score_threshold and nms_threshold in it,
hence these parameters are ignored when users specify ONNX models including this module.
This package accepts both EfficientNMS_TRT attached ONNXs and models published from the official YOLOX repository (we referred to them as “plain” models).
File truncated at 100 lines see the full file
Changelog for package autoware_tensorrt_yolox
0.53.0 (2026-09-29)
-
Merge remote-tracking branch 'origin/main' into prepare-0.53.0-changelog
-
build(traffic_light_perception): split core/node CMake targets and expose public core headers (#13325)
* refactor(autoware_traffic_light_category_merger): expose core header, split core/node CMake targets Move traffic_light_category_merger.hpp into include/autoware/traffic_light_category_merger/, and split the CMake target into ${PROJECT_NAME} (core) and ${PROJECT_NAME}_node (Node adapter linking the core). The Node header stays in src/. No behavior change; colcon build + colcon test pass (7 tests, 0 failures).
* refactor(autoware_traffic_light_selector): expose core header, split core/node CMake targets Move traffic_light_selector.hpp into include/autoware/traffic_light_selector/, keeping traffic_light_selector_utils.hpp private in src/ (not part of the public API). Split the CMake target into ${PROJECT_NAME} (core: selector + utils) and ${PROJECT_NAME}_node (Node adapter linking the core). No behavior change; colcon build + colcon test pass (7 tests, 0 failures).
* refactor(autoware_traffic_light_map_based_detector): expose core header, split core/node CMake targets Move traffic_light_map_based_detector.hpp into include/autoware/traffic_light_map_based_detector/, keeping traffic_light_map_based_detector_process.hpp private in src/ (not part of the public API). Since the public header declares functions taking image_geometry::PinholeCameraModel, add that include directly to the header instead of pulling it in transitively via the private process header. Split the CMake target into ${PROJECT_NAME} (core: detector + process) and ${PROJECT_NAME}_node (Node adapter linking the core). No behavior change; colcon build + colcon test pass (7 tests, 0 failures).
* refactor(autoware_tensorrt_yolox): build TrtYoloXDetector as part of the core library tensorrt_yolox_detector.cpp implements core detection logic and was being compiled into ${PROJECT_NAME}_node (the Node adapter target) instead of ${PROJECT_NAME} (the core library). Move it to the core target so the core library does not depend on the node target for its own logic.
- refactor(autoware_traffic_light_classifier): expose TrafficLightClassifier as the sole public header
- Move traffic_light_classifier.hpp to include/autoware/traffic_light_classifier/ and forward-declare ClassifierInterface instead of including classifier/classifier_interface.hpp, so the classifier/*.hpp backends and classifier_params.hpp / traffic_light_classifier_node.hpp stay private under src/.
- Split the CMake library target into ${PROJECT_NAME} (ROS-free classification core) and ${PROJECT_NAME}_node (rclcpp::Node adapter layer), mirroring the core/node separation already present in src/.
- single_image_debug_inference_node and the node-level integration test now link against both libraries instead of recompiling every source file.
- refactor(autoware_traffic_light_multi_camera_fusion): move headers under include/, split core/node CMake targets
- refactor(autoware_traffic_light_arbiter): split core/node CMake targets
- refactor(autoware_image_transport_decompressor): move core logic header to include, node header to src
* refactor(autoware_crosswalk_traffic_light_estimator): move core logic header to include, node header to src, split core/node CMake targets ---------
-
refactor(autoware_universe): use autoware_ament_auto_package in perception DNN packages (#12277) Co-authored-by: github-actions <<github-actions@github.com>> Co-authored-by: Taekjin LEE <<taekjin.lee@tier4.jp>>
-
refactor(perception): move node design files into each package (#13104) Co-authored-by: Claude Opus 5 (1M context) <<noreply@anthropic.com>>
-
test(tensorrt_yolox): add detector test and reduce test for node (#12898)
- test(autoware_tensorrt_yolox): add unit test for TrtYoloXDetector::detect
- test(autoware_tensorrt_yolox): reduce node test to ROS plumbing smoke test
* doc(tensorrt_yolox): reduce comment ---------Co-authored-by: Takahisa.Ishikawa
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
| Name |
|---|
| libopencv-dev |
Dependant Packages
Launch files
- launch/multiple_yolox.launch.xml
-
- image_raw0 [default: /image_raw0]
- image_raw1 [default: ]
- image_raw2 [default: ]
- image_raw3 [default: ]
- image_raw4 [default: ]
- image_raw5 [default: ]
- image_raw6 [default: ]
- image_raw7 [default: ]
- image_number [default: 1]
- output_topic [default: rois]
- launch/yolox.launch.xml
-
- yolox_node_name [default: tensorrt_yolox]
- image_transport_decompressor_node_name [default: image_transport_decompressor_node]
- data_path [default: $(env HOME)/autoware_data/ml_models]
- input/image [default: /sensing/camera/camera0/image_rect_color]
- output/objects [default: /perception/object_recognition/detection/rois0]
- output/mask [default: /perception/object_recognition/detection/mask0]
- yolox_param_path [default: $(find-pkg-share autoware_tensorrt_yolox)/config/yolox_s_plus_opt.param.yaml]
- model_path [default: $(var data_path)/tensorrt_yolox/yolox-sPlus-opt-pseudoV2-T4-960x960-T4-seg16cls.onnx]
- label_path [default: $(var data_path)/tensorrt_yolox/label.txt]
- semantic_segmentation_color_map_path [default: $(var data_path)/tensorrt_yolox/semseg_color_map.csv]
- roi_remap_path [default: $(find-pkg-share autoware_tensorrt_yolox)/config/roi_label_remap.csv]
- roi_to_semantic_segmentation_remap_path [default: $(find-pkg-share autoware_tensorrt_yolox)/config/roi_to_semseg_label_remap.csv]
- use_decompress [default: true]
- build_only [default: false]
- decompress_param_path [default: $(find-pkg-share autoware_image_transport_decompressor)/config/image_transport_decompressor.param.yaml]
- launch/yolox_s_plus_opt.launch.xml
-
- yolox_node_name [default: tensorrt_yolox]
- image_transport_decompressor_node_name [default: image_transport_decompressor_node]
- data_path [default: $(env HOME)/autoware_data/ml_models]
- input/image [default: /sensing/camera/camera0/image_rect_color]
- output/objects [default: /perception/object_recognition/detection/rois0]
- output/mask [default: /perception/object_recognition/detection/mask0]
- yolox_param_path [default: $(find-pkg-share autoware_tensorrt_yolox)/config/yolox_s_plus_opt.param.yaml]
- model_path [default: $(var data_path)/tensorrt_yolox/yolox-sPlus-opt-pseudoV2-T4-960x960-T4-seg16cls.onnx]
- label_path [default: $(var data_path)/tensorrt_yolox/label.txt]
- semantic_segmentation_color_map_path [default: $(var data_path)/tensorrt_yolox/semseg_color_map.csv]
- roi_remap_path [default: $(find-pkg-share autoware_tensorrt_yolox)/config/roi_label_remap.csv]
- roi_to_semantic_segmentation_remap_path [default: $(find-pkg-share autoware_tensorrt_yolox)/config/roi_to_semseg_label_remap.csv]
- use_decompress [default: true]
- build_only [default: false]
- decompress_param_path [default: $(find-pkg-share autoware_image_transport_decompressor)/config/image_transport_decompressor.param.yaml]
- launch/yolox_tiny.launch.xml
-
- data_path [default: $(env HOME)/autoware_data/ml_models]
- input/image [default: /sensing/camera/camera0/image_rect_color]
- output/objects [default: /perception/object_recognition/detection/rois0]
- yolox_param_path [default: $(find-pkg-share autoware_tensorrt_yolox)/config/yolox_tiny.param.yaml]
- model_path [default: $(var data_path)/tensorrt_yolox/yolox-tiny.onnx]
- label_path [default: $(var data_path)/tensorrt_yolox/label.txt]
- semantic_segmentation_color_map_path [default: $(var data_path)/tensorrt_yolox/semseg_color_map.csv]
- roi_remap_path [default: $(find-pkg-share autoware_tensorrt_yolox)/config/roi_label_remap.csv]
- roi_to_semantic_segmentation_remap_path [default: $(find-pkg-share autoware_tensorrt_yolox)/config/roi_to_semseg_label_remap.csv]
- use_decompress [default: true]
- build_only [default: false]
- decompressor_param_path [default: $(find-pkg-share autoware_image_transport_decompressor)/config/image_transport_decompressor.param.yaml]
- launch/yolox_traffic_light_detector.launch.xml
-
- data_path [default: $(env HOME)/autoware_data/ml_models]
- input/image [default: /sensing/camera/camera6/image_raw]
- output/objects [default: /perception/traffic_light_recognition/camera6/detection/rois]
- yolox_param_path [default: $(find-pkg-share autoware_tensorrt_yolox)/config/yolox_traffic_light_detector.param.yaml]
- model_path [default: $(var data_path)/tensorrt_yolox/yolox_s_car_ped_tl_detector_960_960_batch_1.onnx]
- label_path [default: $(var data_path)/tensorrt_yolox/car_ped_tl_detector_labels.txt]
- semantic_segmentation_color_map_path [default: $(var data_path)/tensorrt_yolox/semseg_color_map.csv]
- roi_remap_path [default: $(find-pkg-share autoware_tensorrt_yolox)/config/traffic_light_roi_label_remap.csv]
- roi_to_semantic_segmentation_remap_path [default: ]
- use_decompress [default: true]
- build_only [default: false]
- decompressor_param_path [default: $(find-pkg-share autoware_image_transport_decompressor)/config/image_transport_decompressor.param.yaml]
Messages
Services
Plugins
Recent questions tagged autoware_tensorrt_yolox at Robotics Stack Exchange
Package Summary
| Version | 0.53.0 |
| License | Apache License 2.0 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Description | |
| Checkout URI | https://github.com/autowarefoundation/autoware_universe.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-10-23 |
| Dev Status | UNKNOWN |
| Released | UNRELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Dan Umeda
- Manato Hirabayashi
- Kotaro Uetake
- Masato Saeki
Authors
- Daisuke Nishimatsu
autoware_tensorrt_yolox
Purpose
This package detects target objects e.g., cars, trucks, bicycles, and pedestrians and segment target objects such as cars, trucks, buses and pedestrian, building, vegetation, road, sidewalk on a image based on YOLOX model with multi-header structure.
Additionally, the package also supports traffic light detection by switching onnx file which target classes listed on respective label_file. Currently 0: unknown, 1: car_traffic_light and 2: pedestrian_traffic_light.
Inner-workings / Algorithms
Cite
Zheng Ge, Songtao Liu, Feng Wang, Zeming Li, Jian Sun, “YOLOX: Exceeding YOLO Series in 2021”, arXiv preprint arXiv:2107.08430, 2021 [ref]
Inputs / Outputs
Input
| Name | Type | Description |
|---|---|---|
in/image |
sensor_msgs/Image |
The input image |
Output
| Name | Type | Description |
|---|---|---|
out/objects |
tier4_perception_msgs/DetectedObjectsWithFeature |
The detected objects or traffic light with 2D bounding boxes |
out/image |
sensor_msgs/Image |
The image with 2D bounding boxes for visualization |
out/mask |
sensor_msgs/Image |
The semantic segmentation mask (only effective for semseg model) |
out/color_mask |
sensor_msgs/Image |
The colorized image of semantic segmentation mask for visualization (only effective for semseg model) |
Parameters
yolox_s_plus_opt
{{ json_to_markdown(“perception/autoware_tensorrt_yolox/schema/yolox_s_plus_opt.schema.json”) }}
yolox_tiny
{{ json_to_markdown(“perception/autoware_tensorrt_yolox/schema/yolox_tiny.schema.json”) }}
yolox_traffic_light_detector
{{ json_to_markdown(“perception/autoware_tensorrt_yolox/schema/yolox_traffic_light_detector.schema.json”) }}
Assumptions / Known limits
The label contained in detected 2D bounding boxes (i.e., out/objects) will be either one of the followings:
- CAR
- PEDESTRIAN (“PERSON” will also be categorized as “PEDESTRIAN”)
- BUS
- TRUCK
- BICYCLE
- MOTORCYCLE
or
- UNKNOWN
- CAR_TRAFFIC_LIGHT
- PEDESTRIAN_TRAFFIC_LIGHT
for traffic light detector onnx model.
If other labels (case insensitive) are contained in the file specified via the label_file parameter,
those are labeled as UNKNOWN, while detected rectangles are drawn in the visualization result (out/image).
The semantic segmentation mask is a gray image whose each pixel is index of one following class:
| index | semantic name |
|---|---|
| 0 | road |
| 1 | building |
| 2 | wall |
| 3 | obstacle |
| 4 | traffic_light |
| 5 | traffic_sign |
| 6 | person |
| 7 | vehicle |
| 8 | bike |
| 9 | road |
| 10 | sidewalk |
| 11 | roadPaint |
| 12 | curbstone |
| 13 | crosswalk_others |
| 14 | vegetation |
| 15 | sky |
Onnx model
A sample model (named yolox-tiny.onnx) is downloaded by ansible script on env preparation stage, if not, please, follow Manual downloading of artifacts.
To accelerate Non-maximum-suppression (NMS), which is one of the common post-process after object detection inference,
EfficientNMS_TRT module is attached after the ordinal YOLOX (tiny) network.
The EfficientNMS_TRT module contains fixed values for score_threshold and nms_threshold in it,
hence these parameters are ignored when users specify ONNX models including this module.
This package accepts both EfficientNMS_TRT attached ONNXs and models published from the official YOLOX repository (we referred to them as “plain” models).
File truncated at 100 lines see the full file
Changelog for package autoware_tensorrt_yolox
0.53.0 (2026-09-29)
-
Merge remote-tracking branch 'origin/main' into prepare-0.53.0-changelog
-
build(traffic_light_perception): split core/node CMake targets and expose public core headers (#13325)
* refactor(autoware_traffic_light_category_merger): expose core header, split core/node CMake targets Move traffic_light_category_merger.hpp into include/autoware/traffic_light_category_merger/, and split the CMake target into ${PROJECT_NAME} (core) and ${PROJECT_NAME}_node (Node adapter linking the core). The Node header stays in src/. No behavior change; colcon build + colcon test pass (7 tests, 0 failures).
* refactor(autoware_traffic_light_selector): expose core header, split core/node CMake targets Move traffic_light_selector.hpp into include/autoware/traffic_light_selector/, keeping traffic_light_selector_utils.hpp private in src/ (not part of the public API). Split the CMake target into ${PROJECT_NAME} (core: selector + utils) and ${PROJECT_NAME}_node (Node adapter linking the core). No behavior change; colcon build + colcon test pass (7 tests, 0 failures).
* refactor(autoware_traffic_light_map_based_detector): expose core header, split core/node CMake targets Move traffic_light_map_based_detector.hpp into include/autoware/traffic_light_map_based_detector/, keeping traffic_light_map_based_detector_process.hpp private in src/ (not part of the public API). Since the public header declares functions taking image_geometry::PinholeCameraModel, add that include directly to the header instead of pulling it in transitively via the private process header. Split the CMake target into ${PROJECT_NAME} (core: detector + process) and ${PROJECT_NAME}_node (Node adapter linking the core). No behavior change; colcon build + colcon test pass (7 tests, 0 failures).
* refactor(autoware_tensorrt_yolox): build TrtYoloXDetector as part of the core library tensorrt_yolox_detector.cpp implements core detection logic and was being compiled into ${PROJECT_NAME}_node (the Node adapter target) instead of ${PROJECT_NAME} (the core library). Move it to the core target so the core library does not depend on the node target for its own logic.
- refactor(autoware_traffic_light_classifier): expose TrafficLightClassifier as the sole public header
- Move traffic_light_classifier.hpp to include/autoware/traffic_light_classifier/ and forward-declare ClassifierInterface instead of including classifier/classifier_interface.hpp, so the classifier/*.hpp backends and classifier_params.hpp / traffic_light_classifier_node.hpp stay private under src/.
- Split the CMake library target into ${PROJECT_NAME} (ROS-free classification core) and ${PROJECT_NAME}_node (rclcpp::Node adapter layer), mirroring the core/node separation already present in src/.
- single_image_debug_inference_node and the node-level integration test now link against both libraries instead of recompiling every source file.
- refactor(autoware_traffic_light_multi_camera_fusion): move headers under include/, split core/node CMake targets
- refactor(autoware_traffic_light_arbiter): split core/node CMake targets
- refactor(autoware_image_transport_decompressor): move core logic header to include, node header to src
* refactor(autoware_crosswalk_traffic_light_estimator): move core logic header to include, node header to src, split core/node CMake targets ---------
-
refactor(autoware_universe): use autoware_ament_auto_package in perception DNN packages (#12277) Co-authored-by: github-actions <<github-actions@github.com>> Co-authored-by: Taekjin LEE <<taekjin.lee@tier4.jp>>
-
refactor(perception): move node design files into each package (#13104) Co-authored-by: Claude Opus 5 (1M context) <<noreply@anthropic.com>>
-
test(tensorrt_yolox): add detector test and reduce test for node (#12898)
- test(autoware_tensorrt_yolox): add unit test for TrtYoloXDetector::detect
- test(autoware_tensorrt_yolox): reduce node test to ROS plumbing smoke test
* doc(tensorrt_yolox): reduce comment ---------Co-authored-by: Takahisa.Ishikawa
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
| Name |
|---|
| libopencv-dev |
Dependant Packages
Launch files
- launch/multiple_yolox.launch.xml
-
- image_raw0 [default: /image_raw0]
- image_raw1 [default: ]
- image_raw2 [default: ]
- image_raw3 [default: ]
- image_raw4 [default: ]
- image_raw5 [default: ]
- image_raw6 [default: ]
- image_raw7 [default: ]
- image_number [default: 1]
- output_topic [default: rois]
- launch/yolox.launch.xml
-
- yolox_node_name [default: tensorrt_yolox]
- image_transport_decompressor_node_name [default: image_transport_decompressor_node]
- data_path [default: $(env HOME)/autoware_data/ml_models]
- input/image [default: /sensing/camera/camera0/image_rect_color]
- output/objects [default: /perception/object_recognition/detection/rois0]
- output/mask [default: /perception/object_recognition/detection/mask0]
- yolox_param_path [default: $(find-pkg-share autoware_tensorrt_yolox)/config/yolox_s_plus_opt.param.yaml]
- model_path [default: $(var data_path)/tensorrt_yolox/yolox-sPlus-opt-pseudoV2-T4-960x960-T4-seg16cls.onnx]
- label_path [default: $(var data_path)/tensorrt_yolox/label.txt]
- semantic_segmentation_color_map_path [default: $(var data_path)/tensorrt_yolox/semseg_color_map.csv]
- roi_remap_path [default: $(find-pkg-share autoware_tensorrt_yolox)/config/roi_label_remap.csv]
- roi_to_semantic_segmentation_remap_path [default: $(find-pkg-share autoware_tensorrt_yolox)/config/roi_to_semseg_label_remap.csv]
- use_decompress [default: true]
- build_only [default: false]
- decompress_param_path [default: $(find-pkg-share autoware_image_transport_decompressor)/config/image_transport_decompressor.param.yaml]
- launch/yolox_s_plus_opt.launch.xml
-
- yolox_node_name [default: tensorrt_yolox]
- image_transport_decompressor_node_name [default: image_transport_decompressor_node]
- data_path [default: $(env HOME)/autoware_data/ml_models]
- input/image [default: /sensing/camera/camera0/image_rect_color]
- output/objects [default: /perception/object_recognition/detection/rois0]
- output/mask [default: /perception/object_recognition/detection/mask0]
- yolox_param_path [default: $(find-pkg-share autoware_tensorrt_yolox)/config/yolox_s_plus_opt.param.yaml]
- model_path [default: $(var data_path)/tensorrt_yolox/yolox-sPlus-opt-pseudoV2-T4-960x960-T4-seg16cls.onnx]
- label_path [default: $(var data_path)/tensorrt_yolox/label.txt]
- semantic_segmentation_color_map_path [default: $(var data_path)/tensorrt_yolox/semseg_color_map.csv]
- roi_remap_path [default: $(find-pkg-share autoware_tensorrt_yolox)/config/roi_label_remap.csv]
- roi_to_semantic_segmentation_remap_path [default: $(find-pkg-share autoware_tensorrt_yolox)/config/roi_to_semseg_label_remap.csv]
- use_decompress [default: true]
- build_only [default: false]
- decompress_param_path [default: $(find-pkg-share autoware_image_transport_decompressor)/config/image_transport_decompressor.param.yaml]
- launch/yolox_tiny.launch.xml
-
- data_path [default: $(env HOME)/autoware_data/ml_models]
- input/image [default: /sensing/camera/camera0/image_rect_color]
- output/objects [default: /perception/object_recognition/detection/rois0]
- yolox_param_path [default: $(find-pkg-share autoware_tensorrt_yolox)/config/yolox_tiny.param.yaml]
- model_path [default: $(var data_path)/tensorrt_yolox/yolox-tiny.onnx]
- label_path [default: $(var data_path)/tensorrt_yolox/label.txt]
- semantic_segmentation_color_map_path [default: $(var data_path)/tensorrt_yolox/semseg_color_map.csv]
- roi_remap_path [default: $(find-pkg-share autoware_tensorrt_yolox)/config/roi_label_remap.csv]
- roi_to_semantic_segmentation_remap_path [default: $(find-pkg-share autoware_tensorrt_yolox)/config/roi_to_semseg_label_remap.csv]
- use_decompress [default: true]
- build_only [default: false]
- decompressor_param_path [default: $(find-pkg-share autoware_image_transport_decompressor)/config/image_transport_decompressor.param.yaml]
- launch/yolox_traffic_light_detector.launch.xml
-
- data_path [default: $(env HOME)/autoware_data/ml_models]
- input/image [default: /sensing/camera/camera6/image_raw]
- output/objects [default: /perception/traffic_light_recognition/camera6/detection/rois]
- yolox_param_path [default: $(find-pkg-share autoware_tensorrt_yolox)/config/yolox_traffic_light_detector.param.yaml]
- model_path [default: $(var data_path)/tensorrt_yolox/yolox_s_car_ped_tl_detector_960_960_batch_1.onnx]
- label_path [default: $(var data_path)/tensorrt_yolox/car_ped_tl_detector_labels.txt]
- semantic_segmentation_color_map_path [default: $(var data_path)/tensorrt_yolox/semseg_color_map.csv]
- roi_remap_path [default: $(find-pkg-share autoware_tensorrt_yolox)/config/traffic_light_roi_label_remap.csv]
- roi_to_semantic_segmentation_remap_path [default: ]
- use_decompress [default: true]
- build_only [default: false]
- decompressor_param_path [default: $(find-pkg-share autoware_image_transport_decompressor)/config/image_transport_decompressor.param.yaml]