YOLOV5部署Android Studio安卓平台NCNN

坑非常多,兄弟们,我已经踩了三天的坑了,我这里部署了官方的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博客

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

著名的《NP问题》是个啥概念?

一、说明 关于复杂问题,始终是计算机科学挡在路前的一块巨石。所谓一个问题有解,但需要秒完成,这相当于说,此类问题无解。还有一类问题是说不清楚到底有没有一个具体解法,该解法能在多项式时间复杂函数上完成&#xff…

智慧城市怎么实时监测内涝积水的发生及解决办法?

随着城市化进程步伐不断加快,城市内涝问题越来越受到人们的关注。内涝不仅不便于人们的生活,还可能危害城市之中的基础设施比如路面等。因此实时监测内涝积水的发生并采取有效的解决办法是市政府的紧急任务,同时解决城市内涝也利于城市生命线…

通过阿里云宕机这件事,来看国内程序员的畸形职场文化

1、阿里云宕机始末 阿里在变更这块有三板斧,可监控、可灰度,可回滚。另外他们内部非常喜欢用这类简短的语句传递意图。 听起来非常简单,就目前大多数互联网公司基础设施都会支持这3项,只是支持的程度不太一样,普通的监…

蓝桥杯 vector

vector的定义和特性 注意&#xff1a;vector需要开C11标准 vector的常用函数 push_back():将元素添加到vector末尾 pop_back():删除vector末尾的元素 begin()和end():返回指向vector第一个元素和最后一个元素之后一个位置的迭代器。 示例 vector<int> vec{10,20,30};f…

准「AI 时代」下,如何衡量程序员的工作效率和生产力?

近 20 家科技、金融和制药公司实施了新的研发效能管理方法&#xff0c;并取得了令人鼓舞的初步结果。 客户报告的产品缺陷减少 20%-30%&#xff1b;员工体验分数提高 20%&#xff1b;客户满意度评分提高 60 个百分点。 大模型和 AIGC 技术催生了软件研发的新范式&#xff0c;也…

mybatis、mysql 创建时间(create_time)异常自动更新为当前时间

目录标题 一、问题二、原因三、解决 一、问题 bug: mybatis更新代码没有修改时间&#xff0c;但是时间会自动更新为当前时间。 。。。 被坑了挺久 二、原因 可能是创建表的时候&#xff0c; Navicat Premium 等可视化工具给你整活了。。。 三、解决 取消勾选。 注意&…

相对强弱指标 RSI

SMA&#xff08;A,B,1)MA AA ,一天前的收盘价&#xff1b; BB&#xff0c;如果时涨的&#xff0c;把涨幅返回&#xff1b; CC,12天的涨幅占12天全部涨跌幅的多少&#xff1b; 画一条50 的线条。

ssd202d-logo-cmd_bootlogo分析

cmd_bootlogo.c运行过程 common/autoboot.c:593: disp_logo(0); sprintf(cmd_str, "bootlogo %d 1 0 0 0", logo_id); do_display函数 获取对应结构体,里面有各种参数

悬浮波导SiO2薄膜的应力和折射率控制

引言 悬浮二氧化硅结构对于许多光学和光子集成电路(PIC)应用是重要的&#xff0c;例如宽光谱频率梳&#xff0c;低传播损耗波导&#xff0c;以及紫外-可见光滤光器等。除了这些应用&#xff0c;悬浮波导还可以应用于紫外吸收光谱和一类新兴的基于氮化镓(GaN)纳米线的光子器件&…

百面深度学习-图神经网络

百面深度学习-图神经网络部分 什么是图神经网络&#xff1f; 图神经网络&#xff08;Graph Neural Networks&#xff0c;GNNs&#xff09;是深度学习模型的一个类别&#xff0c;专门设计来处理图结构数据。在图结构数据中&#xff0c;实体以节点&#xff08;vertex&#xff0…

window.open 打开后全屏

window.open(url,newwindow,scrollbarsyes,resizable1,modalfalse,alwaysRaisedyes,fullscreenyes,_blank)

搭建知识付费系统的最佳实践是什么

在数字化时代&#xff0c;搭建一个高效且用户友好的知识付费系统是许多创业者和内容创作者追求的目标。本文将介绍一些搭建知识付费系统的最佳实践&#xff0c;同时提供一些基本的技术代码示例&#xff0c;以帮助你快速入门。 1. 选择合适的技术栈&#xff1a; 搭建知识付费…

Ubuntu20.04安装搜狗输入法

目录 1. sogoupinyin安装1.1 安装 fcitx1.2 下载搜狗官方安装包1.3 安装依赖&#xff08;这步很关键&#xff0c;否则安装完成后&#xff0c;无法输入中文&#xff09;1.4 安装刚才下载的搜狗输入法1.5 切换 fcitx1.6 重启电脑1.7 右上角点击Configure&#xff0c;(因为我安装好…

svg图标最简单的使用方式

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

SecureCRT 9.4.2最新终端SSH工具

SecureCRT是一款终端SSH工具&#xff0c;它提供了类似于Telnet和SSH等协议的远程访问功能。SecureCRT软件特色包括&#xff1a; 支持SSH&#xff08;SSH1和SSH2&#xff09;的终端仿真程序&#xff0c;能在Windows下登录UNIX或Linux服务器主机。SecureCRT支持SSH&#xff0c;同…

基于SSM的员工信息管理系统设计与实现

末尾获取源码 开发语言&#xff1a;Java Java开发工具&#xff1a;JDK1.8 后端框架&#xff1a;SSM 前端&#xff1a;采用JSP技术开发 数据库&#xff1a;MySQL5.7和Navicat管理工具结合 服务器&#xff1a;Tomcat8.5 开发软件&#xff1a;IDEA / Eclipse 是否Maven项目&#x…

基于opencv+tensorflow+神经网络的智能银行卡卡号识别系统——深度学习算法应用(含python、模型源码)+数据集(三)

目录 前言总体设计系统整体结构图系统流程图 运行环境模块实现1. 训练集图片处理2. 测试图片处理3. 模型训练及保存1&#xff09;定义模型结构2&#xff09;优化损失函数3&#xff09;模型训练4&#xff09;模型保存 4. 模型测试 系统测试1. 成功案例2. 失败案例 相关其它博客工…

Ubuntu 20.04 LTS ffmpeg gif mp4 互转 许编译安装ffmpeg ;解决gif转mp4转换后无法播放问题

安装ffmpeg apt install ffmpeg -y gif转mp4 ffmpeg -f gif -i ldh.gif ldh.mp4 故障&#xff1a;生成没报错&#xff0c;但mp4无法播放&#xff0c;体积也不正常 尝试编译安装最新版 sudo apt install -y yasm axel -n 100 https://ffmpeg.org/releases/ffmpeg-6.0.1.tar.x…

基于Element-Plus动态配置Menu 菜单栏

文章目录 前言先看效果可兼容多级菜单栏&#xff08;顺便配置多少级&#xff09; 一、新建组件二、使用步骤总结如有启发&#xff0c;可点赞收藏哟~ 前言 菜单栏配置化 图标配置化参考vite动态配置svg图标及其他方式集合 先看效果 可兼容多级菜单栏&#xff08;顺便配置多少级…

代码随想录算法训练营|五十三天

判断子序列 392. 判断子序列 - 力扣&#xff08;LeetCode&#xff09; 过程&#xff1a; public class Solution {public bool IsSubsequence(string s, string t) {int[,] dp new int[s.Length 1, t.Length 1];for (int i 1; i < s.Length; i) {for (int j 1; j <…