模型部署:(二)安卓端部署Yolov5-v6.0目标检测项目全流程记录
- 1、下载NCNN项目
- 2、下载基于安卓的yolov5项目
- 3、修改相应的配置文件
- 4、将项目打包成apk包
- 5、部署自己训练的yolov5模型
- 6、相关资料下载:
1、下载NCNN项目
# 链接地址
https://github.com/Tencent/ncnn/releases?page=2
android ios macos linux windows webassembly 预编译库 20220420 7600270
2、下载基于安卓的yolov5项目
https://github.com/nihui/ncnn-android-yolov5
将目录ncnn-20220420-android-vulkan下的所有的文件
复制到目录ncnn-android-yolov5-master下的ncnn-android-yolov5-master\app\src\main\jni路径下
报错1:
Android Studio处理异常报错:Cause connect timed out
解决方案则是:
在gradle-wrapper.properties中更改distributionUrl地址如下:
distributionUrl=https://mirrors.cloud.tencent.com/gradle/gradle-5.4.1-all.zip
报错2:
NDK not configured. Download it with SDK manager.
3、修改相应的配置文件
进入到如下目录中
将CMakeLists.txt文件中的相关路径修改成如上所示(由于已经实现将相关的文件复制到到了对应的目录内)
经过上述操作后,点击如下,进行项目重构
修改镜像源:
将build.gradle文件修改成如下内容:
// Top-level build file where you can add configuration options common to all sub-projects/modules.
buildscript {repositories {// 阿里云镜像maven { url 'https://maven.aliyun.com/repository/google' }maven { url 'https://maven.aliyun.com/repository/gradle-plugin' }maven { url 'https://maven.aliyun.com/repository/public' }maven { url 'https://maven.aliyun.com/repository/central' }// 清华镜像(备用)maven { url 'https://mirrors.tuna.tsinghua.edu.cn/maven/google' }maven { url 'https://mirrors.tuna.tsinghua.edu.cn/maven/central' }mavenCentral()}dependencies {classpath 'com.android.tools.build:gradle:4.2.2'}
}allprojects {repositories {// 阿里云镜像maven { url 'https://maven.aliyun.com/repository/google' }maven { url 'https://maven.aliyun.com/repository/public' }maven { url 'https://maven.aliyun.com/repository/central' }// 清华镜像(备用)maven { url 'https://mirrors.tuna.tsinghua.edu.cn/maven/google' }maven { url 'https://mirrors.tuna.tsinghua.edu.cn/maven/central' }mavenCentral()}
}
4、将项目打包成apk包
按照链接https://guoqingru.blog.csdn.net/article/details/151359111的流程打包成apk并安装,检测效果如下图所示
5、部署自己训练的yolov5模型
我是采用的yolov5-6.0版本,我使用pytorch1.8版本,刚开始采用的pytorch版本是1.13,结果由于版本太高出现异常报错问题
首先需要将训练的.pt文件转换成.onnx格式
采用如下指令:
python export.py --weights yolov5s.pt --include onnx
onnx去冗余
.pt模型导出的.onnx模型包含许多冗余的维度,这是ncnn不支持的,所以需要去掉冗余的维度。一定要去冗余!!!!要不后面转换容易报错
前置:onnx(pytorch自带了,不用单独安装)、onnx-simplifier (需要安装)
安装onnx-simplifier的指令:
pip install onnx-simplifier
去冗余指令:
python -m onnxsim yolov5s.onnx yolov5s-sim.onnx
如下所示,转换完毕:
再将得到的.onnx文件转换成.ncnn格式文件:
转换工具下载地址:
https://download.csdn.net/download/guoqingru0311/91903993
将转换后的瘦身后的模型下载到Windows系统本地,采用如下所示的转换工具将yolov5s-sim.onnx文件转换成.ncnn格式的文件(注意:必须要将.onnx文件进行瘦身去除掉冗余,否则接下来的ncnn文件转换会报错)
转换后的生成文件如下所示:
参数配置修改:
将转换得到的yolov5s.bin与yolov5s.param文件拷贝至项目F:\ncnn-android-yolov5-master\app\src\main\assets目录下进行如下修改:
原始文件:
修改后:
注意:必须将下图中的红色标注区域改成对应的375与400
修改对应的检测物体类别标签:
修改完上述文件中红、绿标注的位置后,重构项目,安装程序!!!
6、相关资料下载:
安卓端部署Yolov5-v6.0目标检测项目全流程记录-相关代码资料
https://download.csdn.net/download/guoqingru0311/91906099
安卓端部署Yolov5-v6.0目标检测项目全流程记录-讲解资料
https://download.csdn.net/download/guoqingru0311/91906112