本文主要是介绍【ncnn android】算法移植(三)——vs2015调试onnx2ncnn,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
说明: 上一篇已经说了,编译onnx2ncnn有两种方式。两种方式都会生成onnx2ncnn.exe。如果只是要使用直接用这个exe就行了。如果需要看源码,这里用vs2015进行debug调试
1. cmake gui编译ncnn
-
用cmake gui才能得到vs的项目。参考:https://blog.csdn.net/u011622208/article/details/106255681
-
右键onnx2ncnn,设置为“启动项”
-
然后就可以调试了。
2. onnx2ncnn
-
可参考:https://blog.csdn.net/hmzjwhmzjw/article/details/94027816⭐⭐⭐⭐
从https://github.com/hmzjwhmzjw/pytorch_onnx_ncnn_android_example得到pytorch模型和pytorch输出onnx的代码。 -
然后,修改onnx2ncnn的source code。
// const char* onnxpb = argv[1];// const char* ncnn_prototxt = argc >= 4 ? argv[2] : "ncnn.param";// const char* ncnn_modelbin = argc >= 4 ? argv[3] : "ncnn.bin";
const char* onnxpb = "mobilenetv3.onnx";
const char* ncnn_prototxt = "mobilenetv3.param";
const char* ncnn_modelbin = "mobilenetv3.bin";
- 结果。得到输出的
*.param
和*.bin
文件
3. 验证输出文件
在pc上验证上面输出的mobilenetv3.param mobilenetv3.bin
文件。
。。。。。。
4. 可能问题
-
注意项目的模式。我prototxt是编译的release模式,这里的ncnn也只能是release模式,不然会报错
-
打断点之后,调试不停止
解决参考:vs2015在release时不能命中断点问题
TO DO
- onnx转换实现细节,使用
这篇关于【ncnn android】算法移植(三)——vs2015调试onnx2ncnn的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!