Open linfengca opened 1 year ago
yolov8 官方导出:yolo export model=runs\segment\train10\weights\best.pt format=ncnn ncnn模型图如下:
补充异常时的内存数据值
使用官方自己的yolov8s-seg.pt导出ncnn模型,yolov8 官方导出:yolo export model=yolov8s-seg.pt format=ncnn 再使用上述代码,同样异常。
对比之后,发现作者自己的yolov8s-seg.bin ncnn模型 ex.extract("output", out); 取出的out,w=176, h=5040 而官方导出的ncnn模型,ex.extract("out0", out); 取出的out,w=8400, h=116(4+80+32), 而const float scores = pred.row(i) + 4 reg_max_1; 中, row(i)的实现为 w 乘以 y,w太大了: NCNN_FORCEINLINE const float Mat::row(int y) const { return (const float)((unsigned char)data + (size_t)w y * elemsize); }
下图是作者的ncnn模型输出:
下图是yolov8官方导出的ncnn模型输出:
使用 yolo predict task=segment model=runs\segment\train10\weights\best_ncnn_model imgsz=640 source=... 测试是没有问题的。
@linfengca 你好,我也遇到和你相同的问题,你解决了吗
@linfengca 你好,我也遇到和你相同的问题,你解决了吗
没有,换了个推理框架,openvino可以
输入的图片大小in_pad之后w是640,h是512, out0取出的w是8400,h是37,导致后面generate_proposals中const float scores = pred.row(i) + 4 reg_max_1; 取值越界, mask_proto取出的貌似没有问题,是w160,h280
请教一下是什么原因?