使用NCNN在华为M5部署Yolov5

使用NCNN在华为M5平板部署Yolov5

  • 一、NCNN
  • 二、下载解压NCNN
  • 三、下载ncnn-android-yolov5工程
  • 四、下载Android Studio[前提已经配置了jdk版本]
    • 1、安装NDK、Cmske,这个必须要安装,
    • 2、安装Android
  • 五、构建工程
  • 六、修改源码
  • 七、重新ysnc project
  • 八、安装APP到终端
  • 九、把模型生成APK
  • 十、APK位置

一、NCNN

NCNN是一个腾讯开源的优化到极致的高性能神经网络前向计算框架,可以把电脑端生成在深度学习模型移植到手机端,支持的模型非常多 NCNN官方的定义:NCNN是腾讯公司开源的一个专为手机端极致优化的高性能神经网络前向计算框架。NCNN从设计之初,就深刻考虑手机端的部署和使用,无需第三方依赖,跨平台,手机端CPU的速度快于目前所有已知的开源框架。基于NCNN,开发者能够将深度学习算法轻松移植到手机端高效执行,开发出人工智能APP,将AI带到你的指尖。 目前NCNN已经支持大部分的CNN网络,包括本文中用到的YOLOv5,

二、下载解压NCNN

我们接下来主要以带加速的ncnn-android-vulkan.zip展开
在这里插入图片描述

三、下载ncnn-android-yolov5工程

The YOLOv5 object detection android example
在这里插入图片描述

接下来,
把ncnn-20231027-android-vulkan里面的文件复制一份到ncnn-android-yolov5-master的\app\src\main\jni目录下:
在这里插入图片描述

四、下载Android Studio[前提已经配置了jdk版本]

这中间有个注意是想,我们在安装的时候jdk的时候,千万不要安装最新版本的,由于这个项目是三年前的,如果按照最新的jdk一定会和工程各种的不兼容。至于到底该按照哪个版本的jdk,可以参考下图,
在这里插入图片描述
为了确定gradle的版本,我们可以打开工程中的一个文件,如图所示:
在这里插入图片描述
文件默认的gradle是5.4.0版本,安装java12版本就好了,我图中之所以注释掉,是因为,我安装AS之前安装的是最新的JDK版本,结果出现不兼容问题,当时要不省级gradle版本,要不降低JDK版本,我选择了前者所以是7.5.0,所以大家可以在是先对应gradle版本安装JDK,后期会省去很多麻烦。当前如果你之前确实已经按照了最新的JDK怎么办,按照下图选择对应版本的JDK依然可以,亲测有效。

在这里插入图片描述

1、安装NDK、Cmske,这个必须要安装,

记得点击右下方的ShowPackage Details按钮,要不NDK和Cmake不会展开。这两个的版本建议安装红框中的版本,至于为什么,可以明显的看到不同版本的NDK明显在toolchains中是不同的,确实了前两个文件,后期会报错。至于为什么是20不是23,大家可以想想这个工程上面说了是三年前的,所以工程肯定和当年的NDK版本兼容最好。选中两个文件,然后点击Apply,就会自动下载了。
在这里插入图片描述
在这里插入图片描述

2、安装Android

至于Android选择是什么版本,根据自己的手机系统确定,然后点击Apply就会下载了。
在这里插入图片描述
剩下的就是漫长的等待安装了。
由于这篇博文,是安装之后写的,所以有坑的地方我都提前说了,如果大家遇到报错,可以看看我往前的博客。

五、构建工程

用Android studio 打开(二)中下载的ncnn-android-yolov5-master项目的build.gradle文件,耐心等待构建完成。
在这里插入图片描述

注意有两个build.gradle,一个是工程的,一个是模块的,不要点错了
剩下的也是漫长的等待了…,会安装一系列东西,之后Android studio会帮我们构建整个工程,耐心等待他走完。

六、修改源码

打开ncnn-android-yolov5-master\app\src\main\jni\CMakeLists.txt
在这里插入图片描述
将第五行的路径改为自己的路径

set(ncnn_DIR ${CMAKE_SOURCE_DIR}/ncnn-20201218-android-vulkan/${ANDROID_ABI}/lib/cmake/ncnn)

改为:

set(ncnn_DIR ${CMAKE_SOURCE_DIR}/${ANDROID_ABI}/lib/cmake/ncnn)
  • 简单说明一下:ANDROID_ABI对应的是不同架构下的文件夹名称

七、重新ysnc project

在这里插入图片描述
在这里插入图片描述

八、安装APP到终端

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
可以看到,平板上已经有一个APP了。

九、把模型生成APK

按照图上的操作顺序,最下角提示APK生成成功。
在这里插入图片描述

十、APK位置

我开始使用新的Android Studio,却无法在IDE的实际位置中找到该应用程序的APK?
在这里插入图片描述
我们在成功生成APK之后,会看到提示信息,当我我们点击locate,就会打开APK的安装位置。
因此Android Studio中的apk是在应用模块的build文件夹内生成的。

正确的apk路径为\app\build\outputs\apk。我正在使用Android Studio版本1.4.1。因此,可以根据所使用的Android Studio版本在app/build/apk/\app\build\outputs\apk处找到apk。
您可以在以下位置找到APK:

YourProject\\app\\build\\outputs\\apk
我的:ncnn-android-yolov5-master\app\build\outputs\apk

在这里插入图片描述
*apk类型有:debug 和 release;debug版本较大,至于用哪个取决于手机性能了。
在这里插入图片描述
我把debug版本的APK传送手机上,并进行安装。效果如下:

在这里插入图片描述

至此yolov5的模型部署到安卓端侧终于完结!!!

在部署的时候,也看了不少的博客,在此致谢。
华为P30部署yolov5

安卓端使用ncnn部署yolov5(v6.0)

OLOv5使用NCNN将模型部署到Android端教程(1)部署自己的训练模型到Android实现静态图片检测

记录历经三天将自己的yolov5模型部署到Android安卓手机

YOLOv5使用NCNN将模型部署到Android端教程(1)部署自己的训练模型到Android实现静态图片检测

新Android Studio中的Apk位置

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/210922.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

MySQL深入——8

Order by语句是如何工作的? 首先我们来创建一个表 CREATE TABLE t (id int(11) NOT NULL,city varchar(16) NOT NULL,name varchar(16) NOT NULL,age int(11) NOT NULL,addr varchar(128) DEFAULT NULL,PRIMARY KEY (id),KEY city (city) ) ENGINEInnoDB; 全字段…

SQL命令---删除数据表

介绍 使用sql语句实现删除数据表。 命令 drop table 表名;

Python实战演练之python实现神经网络模型算法

python实现神经网络模型算法 今天,厾罗和大家分享用Python实现神经网络模型算法,仅用于技术学习交流。 实现技巧 1.导入依赖库 主要是安装相关的依赖库。本文实现的环境为:python 3.7。 from __future__ import division import math …

C语言联合体

联合体 联合体联合体基本概念联合体特点联合体内存结构图 联合体 联合体基本概念 联合体概念: 结构体(struct)是一种结构体类型或者复杂类型,它可以包含多个类型不同的成员另外一种和结构体非常类似的类型,叫做联合…

GPT-4 变懒了?官方回复

你是否注意到,最近使用 ChatGPT 的时候,当你向它提出一些问题,却得到的回应似乎变得简短而敷衍了?对于这一现象,ChatGPT 官方给出了回应。 译文:我们听到了你们所有关于 GPT4 变得更懒的反馈!我…

在HTML中插入音频和视频(详解)

Hi i,m JinXiang ⭐ 前言 ⭐ 本篇文章主要介绍在HTML中插入音频和视频以及部分理论知识 🍉欢迎点赞 👍 收藏 ⭐留言评论 📝私信必回哟😁 🍉博主收将持续更新学习记录获,友友们有任何问题可以在评论区留言 …

外汇交易中的MT4软件优势:解析软件对交易的影响!

近年来,随着金融科技的不断发展,MT4软件作为外汇交易领域的领先平台,备受交易者青睐。本文将探讨MT4软件在外汇交易中的优势以及对交易的影响,帮助读者深入了解这一交易利器。 ### 1. MT4软件概述 MetaTrader 4(简称MT4)是一款由M…

深度学习 时间序列回归学习笔记

目录 常用的深度学习时间序列回归模型: ARIMA模型 ETS模型 效果评估

低多边形3D建模动画风格纹理贴图

在线工具推荐: 3D数字孪生场景编辑器 - GLTF/GLB材质纹理编辑器 - 3D模型在线转换 - Three.js AI自动纹理开发包 - YOLO 虚幻合成数据生成器 - 三维模型预览图生成器 - 3D模型语义搜索引擎 当谈到游戏角色的3D模型风格时,有几种不同的风格&#xf…

【Linux】make/Makefile --- 自动化构建项目的工具

目录 一、make/Makefile的简单使用 二、Makefile 的语法规则 三、实现的原理 3.1 make/Makefile识别文件新旧 3.2 .PHONY修饰的伪目标总是被执行 3.3 make/Makefile是具有依赖性的推导能力的 四、语法技巧 五、注意事项 Linux中自动化构建项目最简单的方式:…

python乐观锁和悲观锁

在并发编程中,锁是一种常用的机制,用于保护共享资源的访问。乐观锁和悲观锁是两种不同的锁机制。 乐观锁:不会一开始就加锁,在更新的时候,判断一下在此期间别人是否修改了数据,若修改了不执行此操作&#…

软件质量:建立信心的十大指标

. Bug 数量——可能按优先级或严重性排列 一般来说,错误的数量会在项目生命周期的中期开始增加。在截止日期之前的几天或几周(取决于项目的规模),团队将集中精力减少 bug 的数量,直到 bug 的数量达到某种渐近线。这个渐…

Nginx基础篇:Nginx搭建、Nginx反向代理、文件服务器部署配置。

Nginx Linux系统安装以及反向代理的配置 简介优点nginx 环境安装常用Nginx 命令nginx 文件服务器搭建 简介 Nginx (engine x) 是一个高性能的HTTP和反向代理web服务器,同时也提供了IMAP/POP3/SMTP服务。Nginx是由伊戈尔赛索耶夫为俄罗斯访问量第二的Rambler.ru站点…

如何把kubernetes pod中的文件拷贝到宿主机上或者把宿主机上文件拷贝到kubernetes pod中

1. 创建一个 Kubernetes Pod 首先&#xff0c;下面是一个示例Pod的定义文件&#xff08;pod.yaml&#xff09;&#xff1a; cat > nginx.yaml << EOF apiVersion: v1 kind: Pod metadata:name: my-nginx spec:containers:- name: nginximage: nginx EOF kubectl app…

LabelImg的使用及注意事项

LabelImg是一款开源的图像标注工具&#xff0c;它主要用于标注目标检测、语义分割和图像分类等深度学习中需要的数据集。通过使用LabelImg&#xff0c;用户可以快速、准确地为图片中的目标添加标注信息&#xff0c;从而建立数据集。 使用步骤&#xff1a; 下载LabelImg&#x…

java测试rtsp地址连接状态,测试RTSP连接状态是否成功,java如何测试rtsp地址连接是否成功

import java.net.Socket; import java.net.URI; import java.net.URISyntaxException;/*** ClassName: RTSPUtils* Description: 测试RTSP连接状态* Author: zhanghui* Date: 2023-12-08* Version: 1.0**/ public class RTSPUtils {private static final int TIMEOUT_MS 10000…

我的创作纪念日(2周年)

机缘 在进入大学之前&#xff0c;完全没有听说过CSDN&#xff0c;第一次使用CSDN应该是搜C语言如何学&#xff0c;或者是和C语言相关的其他内容 因为我本人是学计算机专业的&#xff0c;大一刚开学因为疫情延迟了开学时间&#xff0c;老师线上教课&#xff0c;但是我之前是完…

永磁同步电机反电动势系数怎么算?磁链强度怎么算?转矩系数怎么算?

在进行永磁同步电机simulink仿真时&#xff0c;一个关键参数就是永磁体磁链强度&#xff0c; 实际上在simulink中&#xff0c;永磁体磁链强度/反电动势系数/转矩系数这三个是放一起的&#xff0c;这是因为他们都可互相算出来。 Torque constat (Nm/A) 转矩系数 1.5 * Np *…

在浏览器中存储token的最佳实践

在浏览器中存储token的最佳实践 Web 应用程序不是静态站点&#xff0c;而是静态和动态内容的精心组合。更常见的是&#xff0c;Web 应用程序逻辑在浏览器中运行。该应用程序不是从服务器获取所有内容&#xff0c;而是在浏览器中运行 JavaScript&#xff0c;从后端 API 获取数据…

Tomcat部署开源站点JPress

前言 JPress使用Java开发&#xff0c;是我们常见的开源博客系统。JPress是一个开源的WordPress插件&#xff0c;它提供了一个简单而强大的方式来创建企业级站点。该插件包括许多特性&#xff0c;例如主题定制、页面构建器、性能优化、SEO、安全、电子商务和社交媒体整合等。使用…