Digital2Slave / ncnn-android-yolov8-seg

a sample yolov8 object segment android project based on ncnn and opencv.
68 stars 8 forks source link

自己训练的模型以及ultralytics yolov8-seg.pt转换ncnn后导入项目,手机运行崩溃 #4

Open wsurer opened 10 months ago

wsurer commented 10 months ago

你好,我将自己训练的模型转换为ncnn格式后导入项目,在手机运行直接闪退,而使用项目Assets目录中自带的则没问题,我使用的转换方法为Method 3

即ultralytics 8.0.129 add YOLOv8 Tencent NCNN export #3529 https://github.com/ultralytics/ultralytics/pull/3529

加载Model相关的代码已同步修改,这方面没问题,我打log跟踪了一下,是在generate_proposals方法中出现了问题,我将ultralytics assets中的yolov8-seg.pt按Method 3转换为ncnn导入项目同样也不行,暂时没找到什么明显的错误原因,但我发现我的模型以及yolov8-seg.pt按Method 3转换为ncnn后的.param与项目Assets中的.param有些不同,尾不是Reshape而是Concat,能否帮忙分析一下原因,不胜感激

Digital2Slave commented 10 months ago

@wsurer 最新版本的话,还是用Method 2可以的。不过,涉及的JNI代码,我还没同步。你可以参考Method 2

    ncnn::Extractor ex = yolov8.create_extractor();
    ex.input("images", in_pad);

    ncnn::Mat out;
    ex.extract("output0", out);

    ncnn::Mat mask_proto;
    ex.extract("output1", mask_proto);
wsurer commented 10 months ago

你好,我对比了一下Method 2pf_phone_yolov8n_seg.cpp与项目中yolo.cpp,代码基本一样,你待同步的代码和它们比,有关键改动点吗,或是我先用Method2转换我训练的模型,然后用yolo.cpp跑一下,谢谢

wsurer commented 10 months ago

你好,我按Method 2中方法试啦,我自己的和官方导出的ncnn还是运行不了,求助,感谢