本文记录了yolov5迁移至android的详细过程
流程三步走:1、pytorch转换成onnx; 2、onnx转换成ncnn;3、在android部署ncnn。
在此感谢逝去的头发 o(╥﹏╥)o
一、pytorch -> onnx
1、 打开yolov5/models/export.py,修改红色框路径

转换后我们得到 best.onnx
2、去掉onnx模型的冗余维度
pip install onnx-simplifier
python -m onnxsim best.onnx best-sim.onnx
至此我们得到简化后的onnx模型文件:best-sim.onnx
二、onnx -> ncnn
1、windows下编译ncnn(血与泪的回忆)
windows下编译ncnn官方教程
①、需要安装的依赖库:
* ncnn
* vs2019
* protobuf-3.4.0
* opencv
②、选择git clone或zip download下载ncnn源码
③、在vs2019的本机工具命令提示符里编译
开始 → Visual Studio 2019→ Visual Studio Tools → x64 Native Tools Command Prompt for VS 2019
④、编译protobuf
cd protobuf-3.4.0
> mkdir build
> cd build
> cmake -G"NMake Makefiles" -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=%cd%/install -Dprotobuf_BUILD_TESTS=OFF -Dprotobuf_MSVC_STATIC_RUNTIME=OFF ../cmake
> nmake
> nmake install
⑤、编译ncnn
cd ncnn-master
> mkdir -p build
> cd build
> cmake -G"NMake Makefiles" -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=%cd%/install -DProtobuf_INCLUDE_DIR=../../protobuf-3.4.0/build/install/include -DProtobuf_LIBRARIES=../../protobuf-3.4.0/build/install/lib/libprotobuf.lib -DProtobuf_PROTOC_EXECUTABLE=../../protobuf-3.4.0/build/install/bin/protoc.exe -DNCNN_VULKAN=OFF ..
> nmake
> nmake install
✿ヽ(°▽°)ノ✿编译成功后,在ncnn-master/build/tools/onnx下有可执行文件onnx2ncnn.exe
注:
(1)ncnn的cmake步骤注意修改protobuf路径(当前路径在ncnn的build下)
(2)错误信息:
The submodules were not downloaded! Please update submodules with "git submodule update --init" and try again.
解决:官方Git里cmake语句 -DNCNN_VULKAN=ON,改成OFF
(3)错误信息:
could not find opencv
解决:在CmakeLists.txt里添加opencv路径
set(OpenCV_DIR D:/opencv/build)

本文详细记录了将YOLOv5模型从pytorch转换为onnx,再转为ncnn,并最终部署在Android的过程。涉及关键步骤包括pytorch到onnx的转换、onnx到ncnn的编译与转换,以及在Android上处理动态尺寸输入和解决真机测试卡死的问题。
最低0.47元/天 解锁文章

1万+

被折叠的 条评论
为什么被折叠?



