UNeedCryDear/yolov5-opencv-dnn-cpp

请教一下,请问那个分割输出的数据怎么理解?我想写个nodejs的版本。

winktool opened this issue · 2 comments

这个是没有seg的模型的输出的。

  const output0 = results[session.outputNames[0]];
  const boxes = [];

  for (let r = 0; r < output0.data.length; r += output0.dims[2]) {
    const data = output0.data.slice(r, r + output0.dims[2]); // get rows
    console.log("data", data);
    const scores = data.slice(5); // classes probability scores
    const confidence = data[4]; // detection confidence
    const classId = scores.indexOf(Math.max(...scores)); // class id of maximum probability scores
    const maxClassProb = scores[classId]; // maximum probability scores
    if (confidence >= confidenceThreshold && maxClassProb >= classThreshold) {
      const [x, y, w, h] = data.slice(0, 4);
      boxes.push({
        name: labels[classId],
        score: (maxClassProb * 100).toFixed(1),
        classId: classId,
        probability: maxClassProb,
        confidence: confidence,
        bounding: [x - 0.5 * w, y - 0.5 * h, w, h],
      });
    }
  }

我想获取多边形的坐标集,应该从第几个数组下标开始截取,并转换成坐标呢?

详细请看https://github.com/UNeedCryDear/yolov5-seg-opencv-onnxruntime-cpp。
我没接触过nodejs,所以有些操作我也看不懂啊,只能你自己从cpp去修改了。至于分割数据什么含义,你可以看下yolact这篇论文,讲的就是预测分支和掩码以及特征矩阵的作用