码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 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博客

  • 相关阅读:
    shell脚本中语法
    腾讯课堂批量下载视频
    安全检测风险
    Flink SQL-连接器
    深入理解指针:【探索指针的高级概念和应用二】
    Linux 之 Ubuntu 代码开发工具 Visual Studio Code(VSCode) 的安装与一些常用插件配置的简单整理
    Python Day9 字符串进阶【零基础】
    【JavaGuide学习笔记】Day.3
    docker 部署 RabbitMQ
    赞不绝口!仅靠阿里P9分享的 Redis 工作手册,拿到60W年薪Offer
  • 原文地址:https://blog.csdn.net/weixin_62264287/article/details/134420555
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号