DefTruth / lite.ai.toolkit

🛠 A lite C++ toolkit of awesome AI models, support ONNXRuntime, MNN. Contains YOLOv5, YOLOv6, YOLOX, YOLOv8, FaceDet, HeadSeg, HeadPose, Matting etc. Engine: ONNXRuntime, MNN.
https://github.com/DefTruth/lite.ai.toolkit
GNU General Public License v3.0
3.53k stars 672 forks source link

如何获取多维输出 #369

Closed dwygs closed 3 months ago

dwygs commented 1 year ago

我的模型是基于热图的姿态检测,模型输出shape是一个张量(1,3,48,64),如果通过直接用指针方式获取,会打乱数据排布后处理就麻烦一些,所以想请教一下onnxruntime能不能直接获取一个tensor,或者可以对结果进行reshape操作

DefTruth commented 1 year ago

可以关注下我们的 PaddlePaddle/FastDeploy repo,更优的部署体验请尝试FastDeploy😎

OroChippw commented 1 year ago

我的模型是基于热图的姿态检测,模型输出shape是一个张量(1,3,48,64),如果通过直接用指针方式获取,会打乱数据排布后处理就麻烦一些,所以想请教一下onnxruntime能不能直接获取一个tensor,或者可以对结果进行reshape操作

你好 遇到了同样的问题 请问您知道解决方法了吗 谢谢!

OroChippw commented 1 year ago

我的模型是基于热图的姿态检测,模型输出shape是一个张量(1,3,48,64),如果通过直接用指针方式获取,会打乱数据排布后处理就麻烦一些,所以想请教一下onnxruntime能不能直接获取一个tensor,或者可以对结果进行reshape操作

已经解决 如果获得的输出tensor为masks大小为【1,4,1080,1920】,我们想把它存在一张名为mask的mat里面,可以尝试这样做

for (unsigned int index = 0 ; index < 4; index++){
  cv::Mat mask(srcImage.rows, srcImage.cols, CV_8UC1);
  for (unsigned int i = 0; i < mask.rows; i++){
      for (unsigned int j = 0; j < mask.cols; j++){
          mask.at(i, j) = masks[i * mask.cols + j +1920 * 1080] ;
     }
  }
}
github-actions[bot] commented 3 months ago

This issue is stale because it has been open for 30 days with no activity.

github-actions[bot] commented 3 months ago

This issue was closed because it has been inactive for 7 days since being marked as stale.