环境:ubuntu20.04

(1)yolo转ncnn:

         ①说明:

             ncnn项目中yolov11.cpp上方有完整步骤,要用ncnn中的运行代码,一定要按照他的步骤转换,一定不能用yolo官方转ncnn的方法。

         ②项目clone:
         ·项目地址:   

             https://github.com/Tencent/ncnn

         ·编译步骤:

             下面这篇文章的x86 linux 机器上(ubuntu18.04)这一段

         https://blog.csdn.net/qq_38342510/article/details/146715586

         ③装包:

             在虚拟环境中用pip3安装。ultralytics、pnnx和ncnn

         ④转torchscript

             使用官方代码将.pt转. torchscript

         https://docs.ultralytics.com/zh/integrations/torchscript/#usage

         ⑤转pnnx:

             使用pnnx工具,终端输入“pnnx yolo11n.torchscript”。成功后会在当前目录生成“_pnnx.py”文件

         ⑥修改“_pnnx.py”文件:
         ·查找6400:

             ·将v_235-237中6400、1600、400分别改成-1,并在后面分别加“.transpose(1, 2)”。

             ·将v_238后面的“dim=2”改成1,并删掉或注释掉后面的,直接返回v_238

         ·搜索:self.model_10_m_0_attn_qkv_conv(v_94):

             ·将v_96后面的400改成1;

             ·将v_106、107换成这两句:

                  v_106 = v_105.view(1, 128, v_95.size(2), v_95.size(3))

                  v_107 = v_99.reshape(1, 128, v_95.size(2), v_95.size(3))

         ⑦重新生成.pt:

             终端执行下面这句。其中“best_pnnx”是自己的文件名。执行完后会生成“best_pnnx.py.pt”文件

             python3 -c "import best_pnnx; best_pnnx.export_torchscript()"

         ⑧pt转ncnn:

             终端执行下面这句。其中“best_pnnx”是自己的文件名。执行完后会生成

             best_pnnx.py.ncnn.param、best_pnnx.py.ncnn.bin这两个文件。这两个文件就是最终的ncnn文件。可以直接用yolo11.cpp执行的

    pnnx best_pnnx.py.pt inputshape=[1,3,640,640] inputshape2=[1,3,320,320]

    (2)执行ncnn:

         ①修改yolov11.cpp:
         ·标签名称

                class_names是设置标签名称的,顺序要和训练yolo时yaml配置文件对应

         ·模型加载路径:

         ·关掉GPU:

        

         ·优化 – 将模型放到main加载:

             将模型放到main中加载,然后传给识别函数。并将识别函数中加载模型语句注释掉

         ②执行:

         ·编译项目:make -j4

         ·./examples/yolo11 图片路径

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐