参考博客:
- https://my.oschina.net/u/3337401/blog/4708237
- https://my.oschina.net/u/3337401/blog/4708257
- https://my.oschina.net/u/3337401/blog/4708258
- https://my.oschina.net/u/3337401/blog/4708259
- https://blog.csdn.net/qq_39542170/article/details/111332215
操作过程:
7. pt->onnx
(1) 将models/export.py拷贝至yolov5根目录下。修改如下图所示:
改为自己的模型
(2) 修改common.py如下图:
(3) 导出onnx
python export.py
生成如下图所示文件:
(4) 简化模型
在.onnx文件路径下执行python -m onnxsim best.onnx best-sim.onnx,生成如下新文件:
8. onnx->ncnn
(1) 安装环境:
sudo apt-get install autoconf automake libtool curl make g++ unzip
(2) 编译protobuf
git clone https://github.com/protocolbuffers/protobuf.git
cd protobuf
git submodule update --init –recursive
./autogen.sh
./configure
Make
make check
sudo make install
sudo ldconfig
(3) 编译ncnn
git clone https://github.com/Tencent/ncnn.git
cd ncnn
mkdir -p build
cd /ncnn/build
cmake -DNCNN_VULKAN=OFF … #vulkan是针对gpu的,如果想要ncnn能调用gpu做推理,那么选项需要打开,设置为ON。
make -j4 #开始编译
(4) onnx->ncnn
将生成的best-sim.onnx拷贝至/ncnn/build/tools/onnx/路径下:
cd /ncnn/build/tools/onnx/
./onnx2ncnn best-sim.onnx model.param model.bin
9. 安卓运行ncnn
下载文件
git clone https://github.com/cmdbug/YOLOv5_NCNN.git
这里是引用
- Android Stutio
克隆源码https://github.com/cmdbug/YOLOv5_NCNN.git - 注意事项
这里这三个输出层的名称,每个人转出来都不太一样,需要自己的情况去改,这三个名字怎么找,在ncnn的官方git社区里有一个netron的可视化工具可以直接看转换后onnx模型的结构,里面可以找到这三个输出层的名称,传送门:https://netron.app。
把model.param文件放进去,就会出现结构图,然后搜索permute,就会出现三个输出层名称
以下是操作步骤
出现的结果,我们只选择output
其余修改内容参考:https://my.oschina.net/u/3337401/blog/4708237