一、下载 & 配置

1.1 下载源文件

  • 【ncnn-android-yolov5下载传送门】
  • 【Tencent/ncnn下载传送门】 下拉
  • android studio yolo android studio yolov5_ide

下载该版本是因为自带vulkan加速

  • Android studio安装【Android studio下载传送门】 建议是不要安装在c盘 正常安装完成后,customize---->Configure

接着Appearance & Behavior----->System Settings---->Android SDK (1)SDK Tools

android studio yolo android studio yolov5_android_02

(2)SDK Platforms

我个人选择的是Android 11.0

进入到license Agreement直接accept 【参考文档】Android studio安装

1.2 配置AS

Step1:解压并移动文件

解压文件夹之后,打开ncnn-xxxxx-android-vulkan-shared全选复制到ncnn-android-yolov5-master\app\src\main\jni

Step2:打开文件 并 开始构建

在 Android studio选择ncnn-android-yolov5-master\build.gradle打开该项目

报错1:cmake版本问题
CMake '3.10.2' was not found in PATH or by cmake.dir property.
- CMake '3.22.1' found in SDK did not match requested version '3.10.2'.
- CMake '3.24.1' found in PATH did not match requested version '3.10.2'.

解决办法:下载对应版本

android studio yolo android studio yolov5_android studio yolo_03

报错2:文件路径问题
By not providing "Findncnn.cmake" in CMAKE_MODULE_PATH this project has
asked CMake to find a package configuration file provided by "ncnn", but
CMake did not find one.

修改cmake中的路径

android studio yolo android studio yolov5_android studio yolo_04

报错3:应该是版本问题

android studio yolo android studio yolov5_ide_05

解决方法: 1.访问 https://services.gradle.org/distributions/,并查看最新版的gradle。 2.修改项目中”gradle/wrapper/gradle-wrapper.properties”里下面属性值

(这篇博客是11.1写的,时间比较靠近的话可以直接抄作业)

android studio yolo android studio yolov5_android_06

同时build.gradle中classpath和gradle文件夹下gradle-wrapper.properties文件里的distributionUrl配置需要匹配

android studio yolo android studio yolov5_android studio yolo_07

各个 Android Gradle 插件版本所需的 Gradle 版本

android studio yolo android studio yolov5_Android_08

最后模型就构建好了

android studio yolo android studio yolov5_android studio yolo_09

Step3:连接安卓手机

以oppo findx2为例

  1. 在设置中搜索版本号,多次点击进入开发者模式
  2. 系统设置—>开发者选项开发者选项 和 USB调试 都打开
  3. 手机连接上后会弹出 密钥之类的东西 全部确认。
  4. 选择传输文件/Android Auto

最终在Android studio右上角就会出现手机的型号

android studio yolo android studio yolov5_android studio_10

报错:INSTALL_FAILED_TEST_ONLY
Caused by: org.gradle.api.internal.provider.AbstractProperty$PropertyQueryException: Failed to calculate the value of task ':app:compileDebugJavaWithJavac' property 'options.generatedSourceOutputDirectory'.

【参考方案】编译安装App报错INSTALL_FAILED_TEST_ONLY终极解决方案 我的源文件是没有gradle.properties的,直接创建之后拖到文件夹下就可以了

android.useAndroidX=true
android.enableJetifier=true
android.injected.testOnly=false

包含着这三行就可以正常下载了,结果如下图

android studio yolo android studio yolov5_ide_11

可能是手机原因。cpu居然比gpu快

android studio yolo android studio yolov5_Android_12

二. 使用自己的权重

2.0 环境

我的环境是

android studio yolo android studio yolov5_Android_13

可以直接

pip install 名称== 版本号

2.1 导出onnx模型

在yolov5文件夹中

python export.py --weights 权重路径 --include onnx

简化onnx文件

python -m onnxsim 上一步导出的onnx文件路径 yolov5s-sim.onnx

2.2 将权重文件转化为bin文件和paras文件

建议直接参考该文档,我就不重复造轮子了

cmake -G"NMake Makefiles" -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=%cd%/install -DProtobuf_INCLUDE_DIR=G:\model_compression_quantization\protobuf-3.4.0\build_vs2019\install\include -DProtobuf_LIBRARIES=G:\model_compression_quantization\protobuf-3.4.0\build_vs2019\install\lib\libprotobuf.lib -DProtobuf_PROTOC_EXECUTABLE=G:\model_compression_quantization\protobuf-3.4.0\build_vs2019\install\bin\protoc.exe -DNCNN_VULKAN=OFF ..

【参考文档】ONNX2NCNN 路径上一定不要有中文不然会出错

2.3 AS

三.其他操作

3.1连接手机摄像头:

python detect.py --source http://admin:admin@10.xxx.xxx.xxx:xxxx

【参考文件】yolov5通过ncnn在安卓平台部署

【参考文件】Windows环境下yolov5移植到Android手机上的详细步骤