当前位置: 首页 > news >正文

yolov5编译安卓APP:解决图像上全是检测框

yolov5编译安卓APP:解决图像上全是检测框

  • 前言
  • 一、第一个YOLOv5 APP
    • 1.参考链接
    • 2.详细说明
    • 3.APP检测时图像上全是框的解决方法
  • 二、第二个YOLOv5 APP
    • 1.参考链接
    • 2.详细说明
    • 3.APP检测时图像上全是框的解决方法
  • 三、其他
    • 1.APK打包
    • 2.修改APP图标与名字

前言

YOLOv5编译安卓APP有不少参考博客及视频,但是参考编译的APP存在问题:APP运行时,检测框覆盖整个图像,满屏都是检测框。本文即解决该问题 ,并编译两种YOLOv5 APP

编译onnx环境:
ubuntu18.04,pytorch1.7.1,python3.7,yolov5 3.0版本
编译APK环境:Windows 10

一、第一个YOLOv5 APP

1.参考链接

B站视频:在Android上运行YOLOv5目标检测
视频对应博客
知乎nihui-提供APP全是框解决方法

2.详细说明

1.先看视频,再看博客。视频详细讲解了Android Studio编译APP过程,对小白友好。博客详细介绍了如何制作自己数据的YOLOv5 APP。
2.编译protobuf库时,会有error提示,但是只要protoc --version能显示protobuf的版本号即可。Ubuntu下protobuf的安装、编译及注意事项 https://blog.csdn.net/old__captain/article/details/80472388
3.编译ncnn库,如果编译报错git相关,git init

3.APP检测时图像上全是框的解决方法

1.修改转换后的yolov5s.param
把yolov5s.param中reshape的0=6400/1600/400改成0=-1,共三处
在这里插入图片描述

2.修改yolov5ncnn_jni.cpp
Android Studio编译APP时,根据自己模型修改三个output节点ID
在这里插入图片描述
效果图
在这里插入图片描述

二、第二个YOLOv5 APP

1.参考链接

1.yolov5>onnx>ncnn>apk
2.YOLOv5利用ncnn部署系列(二)
3.NCNN Yolov5 Android apk开发记录

2.详细说明

1.根据链接1和链接2完成best.pt转化为yolov5.param,每步转化过程结果如图所示。链接3和链接1/2的修改部分略有不同,我是按照链接1/2进行。
在这里插入图片描述
注意:

  • export.py转化时,会生成三个文件!如果最后报错“CoreML export failure: unexpected number of inputs for node x.2 (_convolution): 13”
    根据https://github.com/ultralytics/yolov5/issues/1667,pip install --upgrade coremltools升级包即可
  • ./onnx2ncnn转化yolov5.param时用的是python -m onnxsim生成的简化后文件

3.APP检测时图像上全是框的解决方法

1.根据链接3改三个output节点ID
2.如果还全是检测框,三处reshape的0=6400/1600/400改成0=-1
效果图:
在这里插入图片描述

三、其他

1.APK打包

参考教程:Android Studio打包生成APK教程
注意:
第一次打包,必须创建password秘钥文件
第二次打包时删除上次生成的release文件夹,如果用上次生成的passward.jks报错"Cause: failed to decrypt safe contents entry: java.io.IOException: getSecretKey failed: Password is not ASCII",把passward.jks删除重新生成秘钥文件

2.修改APP图标与名字

修改APP图标与名字:Android Studio开发的app如何修改图标和名称

http://www.lryc.cn/news/8194.html

相关文章:

  • 为什么我们需要地图?
  • 攻防世界1.新手练习区
  • Python进阶篇(二)-- Django 深入模型
  • ABAP SALV实现弹出ALV选择
  • git check-pick,git patch 与 git stash 详解
  • OA漏洞-到处搜集整理
  • web端接收读卡器卡片信息
  • BUUCTF-练习场-WEB-第一部分(8道)
  • Java Reflection 实战- Class类
  • 背包问题理解思路(01背包、完全背包、分组背包)
  • Mr. Cappuccino的第39杯咖啡——Kubernetes之深入理解Pod
  • SqlSession 和 SqlSessionTemplate 简单使用及注意事项
  • 1. QSaveFile和QFile的简单使用
  • 工业4.0是如何优化垃圾处理行业的
  • vue 动画(transition)
  • Python 爬虫工程师面试经验分享,金三银四
  • MySQL实战篇-MySQL 降配导致的实例宕机
  • 时隔多年,这次我终于把动态代理的源码翻了个地儿朝天
  • 数据分析-深度学习 Tensorflow Day6
  • leaflet 设置多个marker,导出为一个geojson文件(066)
  • 企业与第三方供应商合作时,会存在哪些安全风险?
  • 技术源自洛克希德·马丁,光场XR眼镜FYR解析
  • 剑指 Offer 10- II. 青蛙跳台阶问题(LeetCode 70. 爬楼梯)(动态规划打表)
  • webpack(高级)--文件的压缩Terser(js/css/html) Tree Shaking
  • 做软文发布需要注意哪些细节?
  • 【Python】一篇文章读懂yield基本用法
  • Docker getting started
  • 【Uniapp使用遇到问题合集】
  • 宝塔面板破解最新教程
  • 基于zookeeper的Hadoop集群搭建详细步骤