yolov11转ncnn + C++运行
环境: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 图片路径
更多推荐


所有评论(0)