Giter VIP home page Giter VIP logo

Comments (3)

whyb avatar whyb commented on July 28, 2024

I just submitted a pull request for yolov8 example #5506
I hope it can be helpful to you.

from ncnn.

zjkhahah avatar zjkhahah commented on July 28, 2024

Thanks for the reply. I seem to have a problem running the code.
fbe2c79f74a48a0d08244e51cf9aff0

I tried to print the highest confidence level for the value of out, but the output did not seem to be correct. These confidence levels felt too high.Below is the result and code I printed

ncnn::Mat out;
ex.extract("out0", out);
cv::Mat a(out.h, out.w, CV_32FC1);
memcpy((uchar*)a.data, out.data, out.w * out.h * sizeof(float));
for (int col = 0; col < a.cols; ++col) {
float maxVal = std::numeric_limits::lowest(); // 初始化为可能的最小浮点数
for (int row = 4; row < 84; ++row) { // 从第 4 行到第 83 行(索引从 0 开始)
float value = a.at(row, col);
if (value > maxVal) {
maxVal = value; // 更新最大值
}
}
std::cout << "Column " << col << " max value from row 4 to 84 is: " << maxVal << std::endl;
}

aed0ff9ba1dc19a003a991696c95244

from ncnn.

whyb avatar whyb commented on July 28, 2024

Thanks for the reply. I seem to have a problem running the code. fbe2c79f74a48a0d08244e51cf9aff0

I tried to print the highest confidence level for the value of out, but the output did not seem to be correct. These confidence levels felt too high.Below is the result and code I printed

ncnn::Mat out; ex.extract("out0", out); cv::Mat a(out.h, out.w, CV_32FC1); memcpy((uchar*)a.data, out.data, out.w * out.h * sizeof(float)); for (int col = 0; col < a.cols; ++col) { float maxVal = std::numeric_limits::lowest(); // 初始化为可能的最小浮点数 for (int row = 4; row < 84; ++row) { // 从第 4 行到第 83 行(索引从 0 开始) float value = a.at(row, col); if (value > maxVal) { maxVal = value; // 更新最大值 } } std::cout << "Column " << col << " max value from row 4 to 84 is: " << maxVal << std::endl; }
aed0ff9ba1dc19a003a991696c95244

我知道这个问题,这个原因不是因为我这边的原因,而是您导出的yolov8.ncnn.* 模型是仅固定支持[1,3,640,640]的模型,并不支持动态shape输入造成的。

这个错误的模型会导致输入进去的数据为了保持图像原比例缩放,并不符合模型要求的[1,3,640,640],实际上有可能是[1,3,640,540],所以模型内部会错位读取图像,对结果造成严重偏差。

只是要尝试效果的话,您可以直接把输入的图片用画图工具或者cv::resize() 修改成640x640的尺寸。

pnnx本身是支持动态shape输入的,您可以去参考 https://github.com/pnnx/pnnx?tab=readme-ov-file#------detailed-options

导出正确的支持动态shape输入的模型,期待您的好消息~🤣

from ncnn.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.