模型部署:(二)安卓端部署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