赞
踩
在把模型部署到安卓项目之前我运行了很多pytorch的模型
(对python不熟悉)踩了很多坑。可以说是做了很多无用功。
写这个可以说是从头开始了。
**
首先,先运行官方的模型再去找自己的模型
前提安装好好Android studio以及配好环境
**
https://github.com/nihui/ncnn-android-squeezenet
里面都是英文,不懂的可以右键页面转中文下载
下载好的样子
我这是运行好的界面,当然你打开肯定不是这样的
从 https://github.com/Tencent/ncnn/releases 下载NCNN压缩包
注意了,我在这里卡了很久,下错你就 卡两天
一定要下载这个,这个才是与项目匹配的环境
否则你就会出现如下等各种各样的问题。
error: no member named ‘create_gpu_instance’ in namespace ‘ncnn’
然后提取压缩包内容到app/src/main/jni, 然后修改app/src/main/jni/CMakeLists.txt中的ncnn_DIR路径。
这里千万别弄错了哦 比如我的地址
文件夹里的样子
ncnn里面
CMakeLists.txt中的代码
project(squeezencnn)
cmake_minimum_required(VERSION 3.10)
set(ncnn_DIR ${CMAKE_SOURCE_DIR}/ncnn-20240410-android-vulkan/${ANDROID_ABI}/lib/cmake/ncnn)
find_package(ncnn REQUIRED)
add_library(squeezencnn SHARED squeezencnn_jni.cpp)
target_link_libraries(squeezencnn ncnn)
include_directories(${ncnn_INCLUDE_DIRS})
上面放的一样这里就可以直接复制粘贴的,逐行解析一下
看看就好啦
project(squeezencnn) cmake_minimum_required(VERSION 3.10) //CMake 最小版本声明,这一行指定了需要的最低 CMake 版本。在这种情况下,要求使用版本为 3.10 或更高版本的 CMake。 set(ncnn_DIR ${CMAKE_SOURCE_DIR}/ncnn-20240410-android-vulkan/${ANDROID_ABI}/lib/cmake/ncnn) //这里设置了变量 ncnn_DIR,指定了 ncnn 库的 CMake 配置文件路径。${CMAKE_SOURCE_DIR} 是 CMake 内置变量,表示当前项目根目录的路径。${ANDROID_ABI} 是 Android NDK 提供的变量,表示当前 Android 平台的 ABI(Application Binary Interface)类型,比如 armeabi-v7a、arm64-v8a 等。 find_package(ncnn REQUIRED) //这一行使用 find_package 命令来查找 ncnn 库。REQUIRED 参数表示 ncnn 库是必需的,如果找不到将导致 CMake 构建失败。 add_library(squeezencnn SHARED squeezencnn_jni.cpp) //这行代码定义了一个名为 squeezencnn 的共享库(Shared Library),并且将 squeezencnn_jni.cpp 文件作为源文件进行编译。 target_link_libraries(squeezencnn ncnn) //这行代码指定了 squeezencnn 库需要链接 ncnn 库。这样,在编译 squeezencnn 库时,会自动链接并使用 ncnn 提供的功能。 include_directories(${ncnn_INCLUDE_DIRS}) //这行代码将 ncnn 头文件目录添加到项目中。${ncnn_INCLUDE_DIRS} 是 ncnn 库在 CMake 中预定义的变量,它包含了 ncnn 库的头文件路径。这样,你的项目可以访问 ncnn 提供的头文件,以便使用 ncnn 的功能和类。
自带虚拟机运行
**
可以build成APK或者外接安卓手机
**
我选了个老虎,这时候他就识别成功啦!
后续我会尝试部署自己的模型进去
以及本官方代码的逐行解析做笔记
小编能力有限,欢迎探讨!
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。