torch-onnx-ncnn过程(yolov5)

1 篇文章 0 订阅
1 篇文章 0 订阅

安装ncnn

建议下载代码从gitee下载,速度会快很多
参考网站:https://yyingbiu.github.io/2019/08/21/linux-xia-bian-yi-an-zhuang-ncnn/
vulkansdk最好选择合适的下载

$ wget https://sdk.lunarg.com/sdk/download/1.1.92.1/linux/vulkansdk-linux-x86_64-1.1.92.1.tar.gz?Human=true -O vulkansdk-linux-x86_64-1.1.92.1.tar.gz
$ tar -xf vulkansdk-linux-x86_64-1.1.92.1.tar.gz
$ export VULKAN_SDK=`pwd`/1.1.92.1/x86_64

按cpp编译流程走

$ git clone https://github.com/Tencent/ncnn.git
$ cd 
$ mkdir -p build
$ cd build
$ cmake -DNCNN_VULKAN=OFF ..
$ make -j4

如果需要用vscode进行代码调试

在path_to_ncnn/CMakeList.txt中开头加入,后再编译

SET(CMAKE_BUILD_TYPE "Debug")
SET(CMAKE_CXX_FLAGS_DEBUG "$ENV{CXXFLAGS} -O0 -Wall -g3 -ggdb")
SET(CMAKE_CXX_FLAGS_RELEASE "$ENV{CXXFLAGS} -O3 -Wall")

vscode打开方程后,在lanch.json中的program改为yolov5的执行路径就可以用vscode调试程序
注意:yolov5需要输入image路径,arg也需要添加图片路径

torch2onnx

教程:https://blog.csdn.net/excelNo1/article/details/119246829
针对模型的输出位置做修改:https://blog.csdn.net/x_248369/article/details/116503218

下载

下载yolov5
git clone -b v5.0 https://github.com/ultralytics/yolov5
下载预训练权重
https://github.com/ultralytics/yolov5/releases/download/v5.0/yolov5s.pt
注意版本的选择(这里选择v5.0

测试

测试代码(前提把requirement.txt内的库下载)

python3 detect.py --source inference/images --weights yolov5s.pt --conf 0.25

转换onnx

python3 models/export.py --weights yolov5s.pt --img 640 --batch 1
python3 -m onnxsim yolov5s.onnx yolov5s-sim.onnx

onnx2ncnn

1.生成param和bin文件

cd path_to_ncnn/build/tools/onnx
./onnx2ncnn yolov5s-sim.onnx yolov5s.param yolov5s.bin

2.打开生成的.param文件,去除不支持的网络层。

在这里插入图片描述

3.除去split 和crop 及concat层,一共十层,换成YoloV5Focus,总层数309变成300,如图所示。

在这里插入图片描述
在这里插入图片描述

4.将Permute的前一层Reshape 中0=xxx 改成 0 = -1。修改结果如下:

在这里插入图片描述

5. 用 ncnnoptimize 过一遍模型,顺便转为 fp16 存储减小模型体积

cd path_to_ncnn/build/tools
./ncnnoptimize yolov5s.param yolov5s.bin yolov5s-opt.param yolov5s-opt.bin 65536

6.修改param和bin位置(在path_to_ncnn/example/yolov5.cpp)

请添加图片描述

7.修改相关输出层位置

这三个位置看是否和param文件下的最后Permute层的输出位置是否相同
在这里插入图片描述在这里插入图片描述在这里插入图片描述

7.测试

cd path_to_ncnn/build/example/
./yolov5 imagepath

参考:
1、https://yyingbiu.github.io/2019/08/21/linux-xia-bian-yi-an-zhuang-ncnn/
2、https://blog.csdn.net/excelNo1/article/details/119246829
3、https://blog.csdn.net/x_248369/article/details/116503218

  • 1
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 8
    评论
根据引用内容和,yolov5lite ncnn是一个基于ncnn框架实现的轻量级目标检测模型。在使用yolov5lite ncnn之前,需要将模型转化为ncnn模型。首先,需要将onnx模型转化为ncnn模型,可以使用命令"./onnx2ncnn yolov5ss-sim.onnx yolov5-lite.param yolov5-lite.bin"来进行转化。接着,可以使用命令"./ncnnoptimize yolov5-lite.param yolov5-lite.bin yolov5-lite-opt.param yolov5-lite-opt.bin 65536"对模型进行优化。然后,可以使用命令"./ncnn2table yolov5-lite-opt.param yolov5-lite-opt.bin imagelist.txt yolov5-lite.table mean=[104,117,123 norm=[0.017,0.017,0.017 shape=[640,640,3 pixel=BGR thread=8 method=kl"将模型转换为table格式。最后,可以使用命令"./ncnn2int8 yolov5-lite-opt.param yolov5-lite-opt.bin yolov5-ite-opt-int8.param yolov5-lite-opt-int8.bin yolov5-lite.table"将模型转换为int8格式。 关于yolov5lite ncnn编译和安装,可以参考引用内容中提到的在Linux环境下的教程进行操作。其中,需要进行onnx模型的提取和转换。可以使用命令"python models/export.py --weights weights/yolov5-lite.pt --img 640 --batch 1"来提取模型,并使用命令"python -m onnxsim weights/yolov5-lite.onnx weights/yolov5-lite-sim.onnx"来进行简化和优化。 总结起来,yolov5lite ncnn是一个基于ncnn框架的目标检测模型,需要将模型转化为ncnn模型,并进行优化和转换为table和int8格式。关于编译和安装,可以参考在Linux环境下的教程进行操作。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [YOLOv5-Lite:NCNN+Int8部署和量化,树莓派也可实时](https://blog.csdn.net/weixin_45829462/article/details/119787840)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值