YOLOv7安卓部署 ncnn


前言

本文将讲述如何利用ncnn在安卓手机端部署YOLOv7,这里以YOLOv7-tiny为例进行讲解,YOLOv7按照步骤依次进行即可,同时对于Android Studio的安装不在本次教程之内


1、YOLOv7-tiny模型部署

标准YOLOv7-tiny部署指的是没有更改YOLOv7-tiny的网络模型架构,直接利用训练好的模型权重进行部署,下面分几步进行讲述:

1.1 获得所需模型文件

首先是将训练获得的权重文件.pt转为.onnx

python export.py --weights '你的权重文件' \
--iou-thres 这个自己设置 --conf-thres 自己设置 \
--device 0

这个导出有GPU就GPU到,然后–fp16和–int8看自己情况来吧,导出之后会在你的权重保存路径下生成.onnx的文件,保存这个文件。
将导出的文件传到此网站:convertmodel

在这里插入图片描述
保存这两个文件,后续要用到

1.2 克隆所需要的代码

首先是下载ncnn-android-yolov7代码,其次是ncnn,之后便是opencv-mobile

ncnn-android-yolov7代码下载:
ncnn-android-yolov7

ncnn代码下载:
在这里插入图片描述
在这里插入图片描述

opencv-mobile下载:
在这里插入图片描述

下载之后便得到了三个压缩包,将其解压到同一目录下,最好目录不要有中文,避免报错,如下:
在这里插入图片描述

然后将红箭头所指文件夹复制到ncnn-android-yolov7的这个目录下:D:\xx\ncnn-android-yolov7-master\app\src\main\jni
在这里插入图片描述
在这里插入图片描述

之后用Android Studio打开ncnn-android-yolov7项目,打开箭头所指文件,然后将我画红线位置改成你所复制的文件夹名字:

在这里插入图片描述

将第1节得到的.param.bin文件复制到asserts文件夹下

到这里,准备工作就全部做好了,下一步就开始改代码了。

1.3 修改代码

请用netron打开刚刚转换模型得到的.param文件

在这里插入图片描述

这里的images填入到的ex.input("xx", yy);中的xx,请注意,images只是我的.param文件下的名字,如果你的和我的不一样,请填你模型的。

找到第一个检测头的这个卷积,
在这里插入图片描述
在这里插入图片描述
将画框的output填到stride8,这里的名字是onnx::Reshape_588,当然,你们的名字肯定和我的不一样,这个没关系,填你们自己的名字即可。依葫芦画瓢,找到第二个检测头上面一个卷积,然后将名字填到stride16,之后填stride32
在这里插入图片描述
在这里插入图片描述

对于yolo.cpp,请转到Yolo::detect函数,然后将得到的名字,按照相应位置填进去,对我画框部分进行修改,还有啊,anchor是你自己训练时配置文件中所用的anchor,所以也记得要进行修改。

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

继续在yolo.cpp文件中,转到Yolo::draw,改成你自己的类别名称:

在这里插入图片描述
到此为止yolo.cpp修改完毕


转到yoloncnn.cpp,按框所示,改成你自己的.param文件的名字:

在这里插入图片描述


转到下面箭头所指文件,app_name是做成app后显示的名字,然后model_array下面的item要填你的.param文件的名字

在这里插入图片描述


到此为止,代码上的改动已经全部结束,之后还需要对.param文件进行修改,打开它,然后像箭头一样修改即可


到此为止,真的就全部修改完了。

2、连接手机进行部署

首先打开开发者模式,这里不进行赘述,另外,如果你是小米手机,那么请在开发者选项中关闭MIUI优化,不然会出错
第一步:
在这里插入图片描述

第二步:
在这里插入图片描述

第三步:
在这里插入图片描述
静等一会儿,应用就会自动安装到手机,然后进行检测,到此为止,YOLOv7-tiny的部署就此完成。

总结

这里的图片和步骤有点多,请大家按照步骤一步一步进行,我也是看了一些资料才搞定的,应该算是保姆级教学了,原创,给个免费的赞谢谢!有问题可以在评论区交流哦!

参考

https://github.com/xiang-wuu/ncnn-android-yolov7
https://github.com/nihui/opencv-mobile
https://github.com/Tencent/ncnn

### 回答1: 您可以使用Android Studio将YOLOv5模型部署Android设备上。首先,您需要将YOLOv5模型转换为TensorFlow Lite格式,然后将其添加到Android Studio项目中。接下来,您可以使用Java或Kotlin编写代码来加载模型并在Android设备上运行YOLOv5目标检测。具体的步骤和代码实现可以参考相关的教程和文档。 ### 回答2: 要将YOLOv5部署Android设备上,可以按照以下步骤进行: 1. 安装Android开发环境:确保已安装Java开发工具包(JDK)和Android Studio。这样可以使用Android Studio进行开发和构建。 2. 创建一个新的Android项目:在Android Studio中创建一个新的项目,并选择合适的项目名称和存储位置。 3. 添加YOLOv5模型:将YOLOv5的模型文件(如.weights或.pt文件)添加到Android项目的"assets"文件夹中。 4. 配置项目依赖项:在项目的build.gradle文件中,通过添加相应的依赖项,引入OpenCV和PyTorch库。 5. 配置JNI接口:创建一个JNI(Java Native Interface)接口文件,将其与YOLOv5模型集成。JNI接口可以通过调用本地C/C++代码来连接Java代码和模型。 6. 编写Java代码:编写适当的Java代码以加载YOLOv5模型并进行目标检测。这包括从相机捕获图像,调用JNI接口加载模型并获取检测结果。 7. 构建和打包项目:使用Android Studio进行构建,以生成一个或多个APK文件。确保配置AndroidManifest.xml文件以获取所需的权限和功能。 8. 安装和运行应用程序:将生成的APK文件发送到Android设备,并安装和运行应用程序。确保设备具有足够的性能和存储空间来运行YOLOv5模型。 通过以上步骤,您就可以将YOLOv5成功部署Android设备上,并使用相机进行实时目标检测。请注意,这个过程可能需要一些开发经验,并且可能需要在不同的环境中进行一些调整和修改,以适应您的具体需求和设备。 ### 回答3: 要将YOLOv5部署Android设备上,可以按照以下步骤进行操作: 首先,需要将YOLOv5模型转换为适用于Android设备的格式。可以使用ONNX或TFLite等工具将模型从PyTorch转换为可在Android上运行的格式。 接下来,创建一个Android项目,并将转换后的模型文件添加到项目中。 在Android项目中,需要使用相关的深度学习推理库,如TensorFlow Lite或NCNN。这些库支持在Android设备上运行深度学习模型。可以根据自己的需求选择合适的库,并将其集成到Android项目中。 然后,在Android项目中编写代码,加载转换后的模型,并使用深度学习推理库进行目标检测。可以使用相机API或视频流作为输入,对每一帧进行目标检测,并将检测结果显示在屏幕上。 为了提高目标检测的性能,可以使用一些优化技术。例如,可以使用图像预处理技术对输入图像进行调整和裁剪,以提高模型的准确性和速度。此外,还可以使用硬件加速技术,如GPU或NEON指令集,来加速推理过程。 最后,将整个Android项目构建为一个APK文件,并安装Android设备上进行测试。可以在实际场景中测试模型的性能和准确性,并根据需要进行调整和优化。 总的来说,将YOLOv5部署Android设备上需要进行模型转换、库集成、代码编写和优化等步骤。这些步骤确保了将YOLOv5成功部署Android设备上,并实现在移动设备上进行实时目标检测的功能。
评论 25
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值