NCNN 配置 yoloV5部署

目标:ubuntu20.04 配置NCNN 环境,将yolov5 模型通过ncnn部署实现

1 下载源码

下载 yolov5 6.2的版本 For yolov5 v6.2, download .pt from yolov5 release v6.2, git clone -b v6.2 GitHub - ultralytics/yolov5: YOLOv5 🚀 in PyTorch > ONNX > CoreML > TFLite

下载 ncnn git clone GitHub - Tencent/ncnn: ncnn is a high-performance neural network inference framework optimized for the mobile platform

安装相关依赖项

sudo apt install build-essential git cmake libprotobuf-dev protobuf-compiler libvulkan-dev vulkan-utils libopencv-dev

编译

cd ncnn/
mkdir -p build
cmake ..
make 

2 模型转换

通过yolov5 export.py 生成 onnx

python export.py --weights yolov5s.py --img 640 --batch 1
python -m onnxsim yolov5s.onnx yolov5s-smi.onnx

通过ncnn编译生成的工具onnx2ncnn 生成 .param 和 .bin

./onnx2ncnn /home/ubuntu/yolov5/yolov5s-smi.onnx /home/ubuntu/yolov5/models/yolov5s_6.2.param /home/ubuntu/yolov5/models/yolov5s_6.2.bin

这里最好以yolov5s_6.2.param 和 yolov5s_6.2.bin命名,因为官方给的examples里面的yolov5 按6.2 ,6.0做了划分,并且指定了文件名称。

可以通过Netron 打开.param 查看相应的输入输出

编译 examples 通过yolov5 测试 转换是否成功

cd ncnn/build/examples

./yolov5 [处理文件路径]

问题

Q1: 执行./yolov5 [处理文件路径] 会报以下错误 ncnn Segmentation fault

通过gdb 追查提示错误出现在program terminated with dignal SIGSEGV, segmentation fault . in ncnn::NetPrivate::do_forward_layer

A1:参考ncnn 中yolov5 前推的代码,需要在export.py 导出模型的时候加上--train,去掉分支结果合并操作

python export.py --weights yolov5s.py --img 640 --batch 1 --train

Q2: 如果推理结果布满整个图片,如下图所示,则有可能是动态输入尺寸造成的

A2: 参考详细记录u版YOLOv5目标检测ncnn实现 - 知乎 需要对输出层进行优化。

Q3:在模型转换好后,通过./yolov5 执行推理的时候,出现以下错误 find_blob_index_by_name 401 failed

打开examples,打开yolov5.cpp ,修改以下部分代码

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值