Tencent / ncnn

ncnn is a high-performance neural network inference framework optimized for the mobile platform
Other
20.24k stars 4.15k forks source link

没有yolov8.cpp #5487

Closed WangShuai771216 closed 1 month ago

WangShuai771216 commented 4 months ago

ncnn量化后的yolov8模型模型文件,example目录下没有推理代码yolov8.cpp

cillayue commented 4 months ago

wait for

whyb commented 3 months ago

I just submitted a pull request for yolov8 example https://github.com/Tencent/ncnn/pull/5506 I hope it can be helpful to you.

Deephome commented 3 months ago

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

Hi, I tested the yolov8.cpp example in your PR, but the results are unreasonable. Specifically, I got yolov8n.bin and yolov8n.param following your guide in yolov8.cpp, and your yolov8n example returns many detections with same confidence of 0.5. The result: image

whyb commented 3 months ago

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

Hi, I tested the yolov8.cpp example in your PR, but the results are unreasonable. Specifically, I got yolov8n.bin and yolov8n.param following your guide in yolov8.cpp, and your yolov8n example returns many detections with same confidence of 0.5. The result: image

我知道这个问题,这个原因不是因为我这边的原因,而是您导出的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输入的模型,期待您的好消息~🤣

Deephome commented 3 months ago

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

Hi, I tested the yolov8.cpp example in your PR, but the results are unreasonable. Specifically, I got yolov8n.bin and yolov8n.param following your guide in yolov8.cpp, and your yolov8n example returns many detections with same confidence of 0.5. The result: image

我知道这个问题,这个原因不是因为我这边的原因,而是您导出的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输入的模型,期待您的好消息~🤣

Well, I find out that the problem originates from a bug in your yolov8.cpp the following lines:

    int wpad = (w + MAX_STRIDE - 1) / MAX_STRIDE * MAX_STRIDE - w;
    int hpad = (h + MAX_STRIDE - 1) / MAX_STRIDE * MAX_STRIDE - h;

should be modified as:

    int wpad = (target_size + MAX_STRIDE - 1) / MAX_STRIDE * MAX_STRIDE - w;
    int hpad = (target_size + MAX_STRIDE - 1) / MAX_STRIDE * MAX_STRIDE - h;
nihui commented 1 month ago

close for https://github.com/Tencent/ncnn/pull/5506