YOLOV5部署Android Studio安卓平台NCNN

news2024/11/30 0:46:21

坑非常多,兄弟们,我已经踩了三天的坑了,我这里部署了官方的yolov5s和我自己训练的yolov5n的模型

下载Android Studio,配置安卓开发环境,这个过程比较漫长。

安装cmake,注意安装的是cmake3.10版本。

根据手机安卓版本选择相应的安卓版本,我的是红米K30Pro,安卓12。

使用腾讯开源的ncnn,这是一个为手机端极致优化的高性能神经网络前向计算框架,能够将深度学习算法轻松移植到手机端高效执行。

下载解压ncnn-android-yolov5-master和ncnn-20231027-android-vulkan。

nihui/ncnn-android-yolov5: The YOLOv5 object detection android example (github.com)

https://github.com/Tencent/ncnn/releases/download/20231027/ncnn-20231027-android-vulkan.zip

把ncnn-20231027-android-vulkan里面的文件复制一份到ncnn-android-yolov5-master的\app\src\main\jni目录下。

用Android studio 打开这个ncnn-android-yolov5-master项目的build.gradle文件。

然后等待Android Studio构建工程,这个过程比较漫长。

完事之后打开ncnn-android-yolov5-master\app\src\main\jni\CMakeLists.txt将原根目录ncnn-20201218-android-vulkan/删了

修改依赖的gradle插件版本为7.3.0,为什么呢,因为这个版本亲测没有问题,其他会出现各种各样的问题。

然后是修改使用的gradle版本为7.4-all版本,亲测其他版本不匹配。

重新sync项目,如果此时你还一切顺利,那么恭喜你,你已经成功了一大半,如果你开始出现各种各样的报错,那也正常,绝大部分是版本的问题,我在到达此处前卡了一天,你可能需要处理gradle下载慢之类的问题,报错的话复制百度

连接手机,打开手机的开发者模式,打开USB调试,打开USB安装,等Android Studio检测到我的红米K30Pro,然后点击运行,这时app就可以安装到手机上了,可以正常识别。

我们刚刚部署的是yolov5s的官方模型,现在我们要部署我们的模型。

首先将我们实验三优化的onnx格式模型转换为ncnn所需的格式。

大概有三种方法:

第一种是最快的,用这个在线转换网站一键转换 Caffe, ONNX, TensorFlow 到 NCNN, MNN, Tengine (convertmodel.com) 

第二种也是我们下面用的这种,直接下载ncnn编译好的可执行文件转换

第三种就是编译ncnn,这个比较复杂,我没用 

下载解压ncnn-20231027-windows-vs2022-shared,使用x64/bin下的onnx2ncnn程序将onnx模型转换为ncnn所需的模型和参数文件。

将我们的onnx文件复制一份到x64/bin文件夹下。

Windows使用以下命令行完成模型转换。

得到ncnn需要的模型和参数文件。

然后用我们的参数文件替换asset中的yolov5s.param和yolov5s.bin,为了方便,名字也要改成yolov5s,需要将yolov5ncnn_jni.cpp中的stride16和stride32中的ex.extract改为参数文件最后两个permute的输出名称,你也可以用Netron来看参数模型找到最后两个permute的输出名称。

这里根据不同的yolov5版本可能需要进行对参数文件的修改,我先不修改跑跑看,可以看到app也成功安装到手机上了,打开并选一张照片进行识别,可以看到框比较多。

根据网上的解决办法,是将参数文件中Reshape后面对应的0=6400、0=1600、0=400均修改为0=-1。

这样可以解决多个框的问题,确实解决了,但是一个框都没有了。

于是我把参数改回去,并增加多一层注意力机制。

然后把nms阈值调成0。

最后变成这样了,不知道有没有大佬可以帮忙解决一下。

参考资料

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

【精选】记录历经三天将自己的yolov5模型部署到Android安卓手机_yolov5部署到手机-CSDN博客

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

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

相关文章

世界上最便宜好用的服务器低至 $9.99 / 年

世界上最便宜好用的服务器低至 $9.99 / 年 是一个非常爱搞促销的商家,目前只有一个洛杉矶 DC 机房,每次促销给的流量很足,下面总结的促销套餐,经过测试竟然完美超过甲骨文 1 核 6G 的机器,不仅仅 io 完胜,而…

svg图标最简单的使用方式

svg图标最简单的使用方式 使用svg图标1. 复制图标的svg代码2. 新建个存放svg图标的目录&#xff0c;新建.vue文件3. 在<template>标签内粘贴svg的代码4. 在代码中也可以调整颜色和大小5. 在组件中引用6. svg做的图标要独占一行,使用布局将它安排到合适的地方 使用svg图标…

【JavaEE初阶】 HTML基础详解

文章目录 &#x1f38b;什么是HTML&#xff1f;&#x1f340;HTML 结构&#x1f6a9;认识标签&#x1f6a9;HTML 文件基本结构&#x1f6a9;快速生成代码框架 &#x1f384;HTML 常见标签&#x1f6a9;注释标签&#x1f6a9;标题标签: h1-h6&#x1f6a9;段落标签: p&#x1f6…

NFG数字藏品:潮流文化与科技的完美结合

​小编介绍&#xff1a;10年专注商业模式设计及软件开发&#xff0c;擅长企业生态商业模式&#xff0c;商业零售会员增长裂变模式策划、商业闭环模式设计及方案落地&#xff1b;扶持10余个电商平台做到营收过千万&#xff0c;数百个平台达到百万会员&#xff0c;欢迎咨询。 数…

[Python学习笔记]Python 性能分析

在上一章节 [Python学习笔记]Requests性能优化之Session 中&#xff0c;通过在 Resquests 中使用 session&#xff0c;将 Python 脚本的运行效率提升了 3 倍。但当时对问题的排查主要是基于程序实现逻辑的推断&#xff0c;并没有实质性的证据。 本次使用 Python 的性能分析工具…

使用docker部署nacos分布式集群

本文目的 在服务器中部署nacos集群&#xff0c;并连接外置数据库关于外置的mysql部署和单例nacos如何部署请看下面的两个链接 如何使用docker部署mysql docker部署容器化mysql5.7-CSDN博客 如何使用docker部署nacos 容器化部署Nacos&#xff1a;从环境准备到启动-CSDN博客…

ERR_PNPM_INVALID_WORKSPACE_CONFIGURATION packages field missing or empty

vue执行 pnpm install命令时&#xff0c;报 ERR_PNPM_INVALID_WORKSPACE_CONFIGURATION  packages field missing or empty错&#xff0c;在网上查询了很久&#xff0c;也没有传出来结果&#xff0c;最后发现是pnpm的版本不对引起的。 我先执行的是npm install -g pnpm&…

T13级专家被毕业?!研发大牛被裁带来的警示丨IDCF

2005年加入腾讯&#xff0c;腾讯第一位Web前端专家&#xff0c;T13职级&#xff0c;今年1月仍是腾讯前端最高专家。 在47岁的时候&#xff0c;拥有这样简历的前端大牛黄希彤被腾讯裁员。 黄希彤夫人在小红书上透露&#xff1a;&#xff08;黄希彤&#xff09;在鹅厂工作了15年…

csapp attack lab phase4

csapp attack lab phase4 每个gadget由一系列指令字节组成&#xff0c;最后一个字节为0xc3&#xff0c;编码为ret指令。 举个例子: 48 89 c7 是指令 movq %rax, %rdi&#xff0c; 对应的地址是0x400f15 0x3 也就是0x400f18, 是开始的指令位置。 例如&#xff1a; ret编码为0…

为防下架,我把虎*牙舞蹈小姐姐视频批量下载啦~

大家早好、午好、晚好吖 ❤ ~欢迎光临本文章 如果有什么疑惑/资料需要的可以点击文章末尾名片领取源码 环境使用: Python 3.10 解释器 Pycharm 编辑器 模块使用: requests >>> 数据请求 第三方模块 pip install requests <工具> win R 输入cmd 输入安装命令…

Android——gradle构建知识片-散装版

一、Gradle - Plugins插件库地址 Gradle - Plugins插件库地址https://plugins.gradle.org/ 二、将自己的代码Android Library发布到仓库Bintray、JCenter、JitPack 放弃JitPack&#xff0c;发布Android Library到Bintray、JCenter - 简书Bug&#xff1a;升级到gradle tools …

电压放大器的各项参数是什么意思

电压放大器是一种重要的电子设备&#xff0c;用于将输入信号的电压放大到更高的电压水平。在设计和使用电压放大器时&#xff0c;有一些关键参数需要考虑和了解。以下是西安电压放大器带来的各项参数及其意义的详细解释。 增益&#xff1a;增益是指输出电压与输入电压之间的比例…

Unity骚操作:2D横版探险游戏 Quad面片背景跟随正交摄像机移动而循环Shader图片为背景

来自:自研 10.2D横版探险游戏 Quad面片背景跟随正交摄像机移动而循环Shader图片为背景

如果面试时,问你职业规划怎么答?

对于面试官来说&#xff0c;他真的无心听你讲奋斗规划&#xff0c;问你职业规划&#xff0c;无法是想从你的言语中&#xff0c;分辨出你的稳定性&#xff0c;进取心。 1、稳定性 作为面试官&#xff0c;如果觉得你是人才&#xff0c;打算把你招进来&#xff0c;面试官最担心的…

TSINGSEE青犀智慧机房AI+视频智能监管方案,保障机房设备稳定运转

一、背景与需求分析 随着互联网的高速发展&#xff0c;机房数量及配套环境设备日益增多&#xff0c;其运行状况直接决定着企业组织的运营效率和服务质量。作为企业信息化的核心&#xff0c;机房的安全监测与管理&#xff0c;不仅关系到企业的稳定运转&#xff0c;同时也关系到…

中小企业怎么去挑选ERP系统?

中小企业该怎么去挑选ERP系统&#xff1f;本文将为大家总结了4点&#xff0c;如下&#xff1a; 先来说说中小企业选型ERP系统为什么这么难&#xff1f; 一是现在的厂商太卷了&#xff0c;选择太多&#xff0c;企业很难知道到底哪个是真正好用的。 简单来说&#xff0c;ERP其…

在Sprinng Boot中使用Redis充当缓存

关于我们使用EhCache可以适应很多的应用场景了&#xff0c;但是因为EhCache是进程内的缓存框架&#xff0c;在集群模式下&#xff0c;我们在我们的应用服务器或者云服务器之间的缓存都是独立的。故而在不同的服务器之间的进程会存在缓存不一致的情况&#xff0c;就算我们的EhCa…

Evil靶场

Evil 1.主机发现 使用命令探测存活主机&#xff0c;80.139是kali的地址&#xff0c;所以靶机地址就是80.134 fping -gaq 192.168.80.0/242.端口扫描 开放80&#xff0c;22端口 nmap -Pn -sV -p- -A 192.168.80.1343.信息收集 访问web界面 路径扫描 gobuster dir -u http…

只使用JS怎么给静态页面网站添加站内全局搜索功能?

&#x1f482; 个人网站:【 海拥】【神级代码资源网站】【办公神器】&#x1f91f; 基于Web端打造的&#xff1a;&#x1f449;轻量化工具创作平台&#x1f485; 想寻找共同学习交流的小伙伴&#xff0c;请点击【全栈技术交流群】 背景 静态页面通常由HTML、CSS 和 JavaScript…