yolov5-6.0安卓部署及避坑指南(windows下)

文章详细介绍了如何在Android设备上部署yolov5深度学习模型,包括准备AndroidStudio,转换模型为NCNN格式,修改项目文件,处理CMakeLists.txt,调整cpp代码,以及解决NDK相关的问题。通过这些步骤,可以在Android手机上运行并测试模型。
摘要由CSDN通过智能技术生成


前言

这几天,想实现下在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解决
建议使用这里面的方法二,简单有效,亲测可行。


总结

以上就是本篇的全部内容,如果通篇顺下来的话,应该不会遇到很多问题,我只遇到一个。如还有问题,欢迎评论区指正。

Yolov5-6.0是一种目标检测算法,它是基于深度学习的YOLO(You Only Look Once)系列算法的最新版本。下面是对Yolov5-6.0源码的一些解析: 1. 网络结构:Yolov5-6.0采用了一种轻量级的网络结构,主要由一系列的卷积层、池化层和上采样层组成。整个网络结构可以根据输入图像的尺寸进行自适应调整,以适应不同的目标检测任务。 2. 特征提取:Yolov5-6.0使用了一种称为CSPDarknet的主干网络,它基于Darknet53网络进行了改进。CSPDarknet采用了一种跨阶段连接的结构,可以更好地保留图像的细节信息,并且减少了参数量和计算量。 3. 检测头:Yolov5-6.0使用了一种称为YOLOv5Head的检测头,它负责生成目标检测的预测结果。YOLOv5Head包括了一系列的卷积层和全连接层,用于提取特征并生成目标的类别、位置和置信度等信息。 4. 训练和推理:Yolov5-6.0提供了完整的训练和推理代码。在训练过程中,它使用了一种称为YOLOv5Loss的损失函数,用于计算目标检测的损失值,并通过反向传播算法更新网络参数。在推理过程中,Yolov5-6.0可以接受输入图像,并输出目标检测的结果,包括目标的位置、类别和置信度等信息。 总的来说,Yolov5-6.0是一种高效准确的目标检测算法,它通过设计轻量级的网络结构和使用先进的特征提取和检测头模块,实现了在目标检测任务上的优秀性能。
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值