From fa71ccb0d487d192bbb1430ddb55f20346aadfd0 Mon Sep 17 00:00:00 2001 From: tian <11429339@qq.com> Date: Sat, 14 Mar 2026 13:19:23 +0800 Subject: [PATCH] Guard shoe detector output parsing --- plugins/ai_shoe_det/ai_shoe_det_node.cpp | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/plugins/ai_shoe_det/ai_shoe_det_node.cpp b/plugins/ai_shoe_det/ai_shoe_det_node.cpp index f432db9..d6cdc4e 100644 --- a/plugins/ai_shoe_det/ai_shoe_det_node.cpp +++ b/plugins/ai_shoe_det/ai_shoe_det_node.cpp @@ -323,10 +323,17 @@ private: std::vector dets; if (outputs.empty() || !outputs[0].data) return dets; + if (outputs[0].type != RKNN_TENSOR_FLOAT32 || outputs[0].size < sizeof(float) * 5) { + LogWarn("[ai_shoe_det] unsupported output tensor type or size"); + return dets; + } + // 假设 YOLOv8 输出格式: [num_boxes, 5] = x, y, w, h, conf // 实际格式可能不同,需要根据模型调整 const float* data = reinterpret_cast(outputs[0].data); - int num_boxes = 8400; // YOLOv8 默认 + const size_t value_count = outputs[0].size / sizeof(float); + const int num_boxes = static_cast(std::min(8400, value_count / 5)); + if (num_boxes <= 0) return dets; float scale_x = static_cast(win_w) / model_w_; float scale_y = static_cast(win_h) / model_h_;