文章目录
前言
这几天,想实现下在Android上部署个深度学习模型,就拿yolov5-6.0来说,正文如下:
参考链接:参考
一、准备工作
1、Android Studio
下载网址:Android studio
安装参考:安装
2、ncnn-yolov5-android源码
下载地址:ncnn_yolov5
3、ncnn-android-vulkan包
下载地址:ncnn
windows上建议下载ncnn-20210525-android-vulkan.zip
二、模型转换
这里,我就直接那官方yolov5s.pt来举例了,然后首先你得先将pt->onnx,这一步,网上很多教程,这里直接跳过了。
1.onnx->NCNN
- 简单粗暴、懒人必备(建议使用,可以省去很多烦恼):
直接通过这个网站进行转换:onnx2ncnn - 通过一.3下载的ncnn包去转换
转换成功后,会得到yolov5s.param和yolov5s.bin,如下:
三、文件摆放及修改
1、摆放:
将一、3中下载的压缩包放在一、2中的app/src/main/jni下即可(将ncnn中的子文件全都移动到这里),如下图:
然后用我们的一、1中的Android studio打开该项目即可。
2、模型替换
用二、1中转换生成的.param和.bin文件替换掉原来路径下的,路径如下图:
3、CMakeLists.txt修改
CMakeLists.txt路径如下:
将ncnn_DIR的路径修改掉(如果你是按照三、1那样摆放的话), 修改后的文件如下:
4、.param修改
修改三、2中的.param文件,仅仅修改最后三个Reshape里的参数,修改后如下:
其他参数可能会有所不同,因为跟你选择的v5版本等有关。
5、cpp修改
修改yolov5ncnn_jni.cpp文件,文件路径如下:
修改cpp文件中stride 16和stride 32的部分,修改后的文件如下:
这里修改的内容,来自于你自己的.param文件中的最后两个Permute,如下:
6、类别修改(可选)
如果你是要部署自己的模型,那么你需要在yolov5ncnn_jni.cpp中进行修改,这里我用的是官方模型,故没做修改,如下:
7、其他工具包:
在Android Studio中打开如下界面:
或者
勾选工具包如下:
这个根据自己需要进行版本选择
其中NDK建议安装的版本为:
这些勾选后,直接安装即可
四、运行
这些修改完成后,手机连到电脑上,运行即可,前提是你的手机要开启开发者模式,并且同意USB调试,拿我的手机(HUAWEI Mate40e)为例,各个手机进入开发者模式的方式不同,大家自行百度即可:
这两个选项开开即可,然后运行我们的app,即可在我们的手机上出现项目,如下,
效果图为:
四、BUG记录
1、NDK问题
首次运行时,出现了如下报错:
大概率是我们的NDK安装问题,解决方案可以参考这里:bug解决
建议使用这里面的方法二,简单有效,亲测可行。
总结
以上就是本篇的全部内容,如果通篇顺下来的话,应该不会遇到很多问题,我只遇到一个。如还有问题,欢迎评论区指正。