代码原地址: https://github.com/nihui/ncnn-android-yolov5
我在这里只是替换了模型信息,其余的内容基本没有修改。
原工程并没有写如何进行模型转换,模型转换可以参考这篇文章:https://blog.csdn.net/flyfish1986/article/details/116604907里面写的比较详细了。
这里简单的做个备份,不想跳转的可以直接参考下面的内容:
bash
python models/export.py --weights yolov5s.pt --img 320 --batch 1
bash
python -m onnxsim yolov5s.onnx yolov5s-sim.onnx
bash
./onnx2ncnn yolov5s-sim.onnx yolov5s.param yolov5s.bin
转换为:
编辑yolov5s.param文件,处理步骤如下:
a. 红框内4行到13行删除
b. 一共删除了10层,第二行的173更改为164,计算方法173-(10-1)=164
c. 增加自定义层
bash
YoloV5Focus focus 1 1 images 159
159来自下图,找到删除的第13行
Foucs更改之后的结果是
2). 支持动态尺寸输入
将reshape中的960,240,60更改为-1,或者其他 0=后面的数
bash
./ncnnoptimize yolov5s.param yolov5s.bin yolov5s-opt.param yolov5s-opt.bin 1
代码更改依据以781,801 为例
我们自己的C++代码可以依据onnx文件更改三个输出.也可以根据ncnn的Permute的每一个output,分别是output,395,415
2) 代码中anchor
a. 可以依据模型在训练时的输出
b. 也可以依据yolov5/models/中的配置文件,以yolov5s.yaml为例
这两种方式我没看明白是怎么得到stride中的那几个数字的,谁知道怎么算的还望不吝赐教。
编译: bash
ncnn-20210507/build$ make install
编译运行:
bash
ncnn-20210507/build/examples$ ./yolov5 1.jpg
step1 https://github.com/Tencent/ncnn/releases download ncnn-android-vulkan.zip or build ncnn for android yourself step2 extract ncnn-android-vulkan.zip into app/src/main/jni or change >the ncnn_DIR path to yours in app/src/main/jni/CMakeLists.txt step3 open this project with Android Studio, build it and enjoy!
实际效果:
在单类识别中没有3个输出函数,如下图所示:
于是3个stride 分别以不同的permute节点数值填写,实际的探测效果不忍直视,谁知道什么问题导致的还望不吝赐教。
github链接:https://github.com/obaby/skip_ads_android_ncnn_project.git
参考链接:
https://github.com/cmdbug/YOLOv5_NCNN.git
https://blog.csdn.net/flyfish1986/article/details/116604907
https://zhuanlan.zhihu.com/p/266130778
https://zhuanlan.zhihu.com/p/350278710
☆文章版权声明☆
* 网站名称:obaby@mars
* 网址:https://h4ck.org.cn/
* 本文标题: 《安卓广告跳过 yolov5 ncnn方式集成》
* 转载文章请标明文章来源,原文标题以及原文链接。请遵从 《署名-非商业性使用-相同方式共享 2.5 中国大陆 (CC BY-NC-SA 2.5 CN) 》许可协议。
分享文章: