yolov5编译安卓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如何修改图标和名称