From 4ad77fc81863c72ad3621a8ae7acfb9380d21a77 Mon Sep 17 00:00:00 2001 From: Atanasko Boris Mitrev Date: Tue, 15 Apr 2025 14:50:39 +0200 Subject: [PATCH] Parametarize out_dim --- .../isaac_ros_yolov8/yolov8_decoder_node.hpp | 1 + isaac_ros_yolov8/src/yolov8_decoder_node.cpp | 14 +++++++------- 2 files changed, 8 insertions(+), 7 deletions(-) diff --git a/isaac_ros_yolov8/include/isaac_ros_yolov8/yolov8_decoder_node.hpp b/isaac_ros_yolov8/include/isaac_ros_yolov8/yolov8_decoder_node.hpp index 0e5c1c3..3457949 100644 --- a/isaac_ros_yolov8/include/isaac_ros_yolov8/yolov8_decoder_node.hpp +++ b/isaac_ros_yolov8/include/isaac_ros_yolov8/yolov8_decoder_node.hpp @@ -60,6 +60,7 @@ class YoloV8DecoderNode : public rclcpp::Node double confidence_threshold_{}; double nms_threshold_{}; int64_t num_classes_{}; + int64_t out_dim_{}; }; } // namespace yolov8 diff --git a/isaac_ros_yolov8/src/yolov8_decoder_node.cpp b/isaac_ros_yolov8/src/yolov8_decoder_node.cpp index 9bd85a5..64d4314 100644 --- a/isaac_ros_yolov8/src/yolov8_decoder_node.cpp +++ b/isaac_ros_yolov8/src/yolov8_decoder_node.cpp @@ -55,7 +55,8 @@ YoloV8DecoderNode::YoloV8DecoderNode(const rclcpp::NodeOptions options) tensor_name_{declare_parameter("tensor_name", "output_tensor")}, confidence_threshold_{declare_parameter("confidence_threshold", 0.25)}, nms_threshold_{declare_parameter("nms_threshold", 0.45)}, - num_classes_{declare_parameter("num_classes", 80)} + num_classes_{declare_parameter("num_classes", 80)}, + out_dim_{declare_parameter("out_dim", 8400)} {} YoloV8DecoderNode::~YoloV8DecoderNode() = default; @@ -74,14 +75,13 @@ void YoloV8DecoderNode::InputCallback(const nvidia::isaac_ros::nitros::NitrosTen std::vector classes; // Output dimensions = [1, 84, 8400] - int out_dim = 8400; float * results_data = reinterpret_cast(results_vector.data()); - for (int i = 0; i < out_dim; i++) { + for (int i = 0; i < out_dim_; i++) { float x = *(results_data + i); - float y = *(results_data + (out_dim * 1) + i); - float w = *(results_data + (out_dim * 2) + i); - float h = *(results_data + (out_dim * 3) + i); + float y = *(results_data + (out_dim_ * 1) + i); + float w = *(results_data + (out_dim_ * 2) + i); + float h = *(results_data + (out_dim_ * 3) + i); float x1 = (x - (0.5 * w)); float y1 = (y - (0.5 * h)); @@ -90,7 +90,7 @@ void YoloV8DecoderNode::InputCallback(const nvidia::isaac_ros::nitros::NitrosTen std::vector conf; for (int j = 0; j < num_classes_; j++) { - conf.push_back(*(results_data + (out_dim * (4 + j)) + i)); + conf.push_back(*(results_data + (out_dim_ * (4 + j)) + i)); } std::vector::iterator ind_max_conf;