当前位置:   article > 正文

PyTorch模型安卓部署流程(NCNN)全流程实战(1)_pytorch android

pytorch android

在把模型部署到安卓项目之前我运行了很多pytorch的模型
(对python不熟悉)踩了很多坑。可以说是做了很多无用功。
写这个可以说是从头开始了。

**

首先,先运行官方的模型再去找自己的模型
前提安装好好Android studio以及配好环境

**

1.下载的项目:

https://github.com/nihui/ncnn-android-squeezenet
界面
里面都是英文,不懂的可以右键页面转中文下载
压缩包
下载好的样子

2.解压并且在Android studio中打开

我这是运行好的界面
我这是运行好的界面,当然你打开肯定不是这样的

3.搭建ncnn环境之文件位置

从 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里面
在这里插入图片描述

4.搭建ncnn环境之Android studio中CMakeLists.txt配置

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})
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

上面放的一样这里就可以直接复制粘贴的,逐行解析一下
看看就好啦

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 的功能和类。
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20

5.运行成功

成功
自带虚拟机运行在这里插入图片描述

**

6.模拟器或安装到手机上

可以build成APK或者外接安卓手机
**
运行
我选了个老虎,这时候他就识别成功啦!

后续我会尝试部署自己的模型进去
以及本官方代码的逐行解析做笔记
小编能力有限,欢迎探讨!

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/天景科技苑/article/detail/894115?site
推荐阅读
相关标签
  

闽ICP备14008679号