IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 移动开发 -> yolov5-5.0转换ncnn在安卓平台的应用 -> 正文阅读

[移动开发]yolov5-5.0转换ncnn在安卓平台的应用


本文的编译应用环境及用到的编译工具为Win10、pycharm、VS2015、Android Studio.

1、NCNN编译

腾讯官方的介绍:ncnn 是一个为手机端极致优化的高性能神经网络前向计算框架。ncnn 从设计之初深刻考虑手机端的部署和使用。无第三方依赖,跨平台,手机端 cpu 的速度快于目前所有已知的开源框架。基于 ncnn,开发者能够将深度学习算法轻松移植到手机端高效执行,开发出人工智能 APP,将 AI 带到你的指尖。ncnn 目前已在腾讯多款应用中使用,如 QQ,Qzone,微信,天天P图等。

1、protobuf编译
下载protobuf :https://github.com/google/protobuf/archive/v3.4.0.zip
下载完后解压,然后打开VS2015 X64本机工具命令提示符:
进入protobuf文件夹,建立build文件夹

cd build

cmake -G"NMake Makefiles" -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=%cd%/install ^
-Dprotobuf_BUILD_TESTS=OFF ^
-Dprotobuf_MSVC_STATIC_RUNTIME=OFF ../cmake

nmake 
nmake install 

2、编译ncnn
下载ncnn源码:https://github.com/Tencent/ncnn/releases
在cmake-gui中编译
在这里插入图片描述
将编译好的protobuf 库路径添加到“Protobuf_SRC_ROOT_FOLDER”
打开VS 编译ALL BUILD
在这里插入图片描述
生成的应用如下:
在这里插入图片描述
至此,NCNN编译成功。

2、pt转onnx

提前训练好Yolov5-5.0的模型,我选用yolov5s训练自己的监测模型。利用自带的export.py导出onnx文件。

python .\models\export.py --weights .\runs\train\exp\weights\best.pt  

生成best.onnx文件,再利用onnxsim简化模型文件。

python -m onnxsim .\runs\train\exp\weights\best.onnx .\runs\train\exp\weights\best-sim.onnx

3、onnx转ncnn

利用编译生成的ncnn工具onnx2ncnn.exe转换.param和.bin文件

onnx2ncnn.exe best-sim.onnx

但是报异常。
在这里插入图片描述
这是由于focus模块转换的报错。
在这里插入图片描述
参考nihui大神的解决方式 详细记录u版YOLOv5目标检测ncnn实现
继续修改,也就是三个permute上紧挨着的reshape行红色矩形框要改为-1,这样就支持动态尺寸推理了。
在这里插入图片描述

在使用ncnnoptimize.exe进行优化,

ncnnoptimize.exe ncnn.param ncnn.bin ncnn-opt.param ncnn-opt.bin 1

其中0 表示fp32,1表示fp16,转换fp16后bin文件减小一半。

至此,ncnn文件已经转换完成。

4、安卓端部署

1)下载ncnn-yolov5-android源码
下载地址:ncnn-android-yolov5
(2)下载ncnn-android-vulkan包
下载地址: ncnn-releasesncnn-randroid-vulkan.
选择ncnn-xxx-android-vulkan.zip下载,xxx为对应的ncnn版本日期。

将ncnn-xxx-android-vulkan.zip解压到ncnn-yolov5-android的app\src\main\jni路径下
在AS中打开,配置好NDK版本后,编译运行。
在这里插入图片描述
很幸运也很顺利。
在这里插入图片描述
速度也是杠杠的。

部署成功!!!

5、问题及解决

1、yolov5-6.0的模型转换,pt转onnx时,参数中加入 --train 去掉后处理阶段。
2、如果不修改.param文件中的三个reshape 红框的值为-1,将会出现很多很多目标检测框!
3、修改yolov5ncnn_jni.cpp中多尺度检测结果提取网络的层数与.param文件中的permute对应的层数。
在这里插入图片描述
4、开启GPU后,加载bin文件慢。将opt.use_vulkan_compute置为false,即可解决。

写在最后,多参考知乎nihui大神的杰作,绝对有帮助!https://www.zhihu.com/people/nihui-2

  移动开发 最新文章
Vue3装载axios和element-ui
android adb cmd
【xcode】Xcode常用快捷键与技巧
Android开发中的线程池使用
Java 和 Android 的 Base64
Android 测试文字编码格式
微信小程序支付
安卓权限记录
知乎之自动养号
【Android Jetpack】DataStore
上一篇文章      下一篇文章      查看所有文章
加:2022-03-21 21:02:21  更:2022-03-21 21:06:52 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 19:37:57-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码