MNN
MNN copied to clipboard
2.x版本截止2.0.3都在win10上编译失败
平台(如果交叉编译请再附上交叉编译目标平台):
Platform(Include target platform as well if cross-compiling):
win10
Github版本:
Github Version:
2.0.3
直接下载ZIP包请提供下载日期以及压缩包注释里的git版本(可通过7z l zip包路径
命令并在输出信息中搜索Comment
获得,形如Comment = bc80b11110cd440aacdabbf59658d630527a7f2b
)。 git clone请提供 git commit
第一行的commit id
Provide date (or better yet, git revision from the comment section of the zip. Obtainable using 7z l PATH/TO/ZIP
and search for Comment
in the output) if downloading source as zip,otherwise provide the first commit id from the output of git commit
编译方式:
Compiling Method
Cmake+vs2022
请在这里粘贴cmake参数或使用的cmake脚本路径以及完整输出
Paste cmake arguments or path of the build script used here as well as the full log of the cmake proess here or pastebin
默认配置 并启用MNN_BUILD_CONVERTER
编译日志:
Build Log:
14> 正在创建库 E:/SoftWare/AI/Deploy/MNN/MNN-2.0.3/build/tools/converter/Release/MNNConvertDeps.lib 和对象 E:/SoftWare/AI/Deploy/MNN/MNN-2.0.3/build/tools/converter/Release/MNNConvertDeps.exp 14>TorchTranspose.obj : error LNK2001: 无法解析的外部符号 "private: static void (__cdeclconst * const MNN::CV::Matrix::gMapPtsProcs)(class MNN::CV::Matrix const &,struct MNN::CV::Point * const,struct MNN::CV::Point const * const,int)" (?gMapPtsProcs@Matrix@CV@MNN@@0QBQ6AXAEBV123@QEAUPoint@23@QEBU423@H@ZB) 14>TorchZeros.obj : error LNK2001: 无法解析的外部符号 "private: static void (__cdeclconst * const MNN::CV::Matrix::gMapPtsProcs)(class MNN::CV::Matrix const &,struct MNN::CV::Point * const,struct MNN::CV::Point const * const,int)" (?gMapPtsProcs@Matrix@CV@MNN@@0QBQ6AXAEBV123@QEAUPoint@23@QEBU423@H@ZB) 14>TorchSilu.obj : error LNK2001: 无法解析的外部符号 "private: static void (__cdeclconst * const MNN::CV::Matrix::gMapPtsProcs)(class MNN::CV::Matrix const &,struct MNN::CV::Point * const,struct MNN::CV::Point const * const,int)" (?gMapPtsProcs@Matrix@CV@MNN@@0QBQ6AXAEBV123@QEAUPoint@23@QEBU423@H@ZB) 14>TorchSize.obj : error LNK2001: 无法解析的外部符号 "private: static void (__cdeclconst * const MNN::CV::Matrix::gMapPtsProcs)(class MNN::CV::Matrix const &,struct MNN::CV::Point * const,struct MNN::CV::Point const * const,int)" (?gMapPtsProcs@Matrix@CV@MNN@@0QBQ6AXAEBV123@QEAUPoint@23@QEBU423@H@ZB) 14>TorchSlice.obj : error LNK2001: 无法解析的外部符号 "private: static void (__cdecl*const * const MNN::CV::Matrix::gMapPtsProcs)(class MNN::CV::Matrix const &,struct MNN::CV::Point * const,struct MNN::CV::Point const * const,int)" (?gMapPtsProcs@Matrix@CV@MNN@@0QBQ6AXAEBV123@QEAUPoint@23@QEBU423@H@ZB)
粘贴在这里
Paste log here or pastebin
我发现libprotobuf 和 libprotobuf-lite的运行库错误设置为MT应该为MD 另外BUILDING_MNN_DLL宏设置错误 导致了很多的链接问题实际就是这个宏导致了有些函数实现代码 没有被编译 我解决了一些 但是有些还是不能解决
这边编译都是可以的。 打开命令行,运行 .\package_scripts\win\build_tools.ps1 -path MNN-CPU/tools/x64 试下?
vs版本是 Found assembler: D:/Microsoft Visual Studio/2019/Community/VC/Tools/MSVC/14.29.30133/bin/Hostx64/x64/cl.exe 会出现这个错误,2.x的各个版本都会完美复现: E:\projects\inference\MNN\MNN-2.0.0\package_scripts\win\build_tools.ps1 : 不能对 Null 值表达式调用方法。 所在位置 行:1 字符: 1
- .\package_scripts\win\build_tools.ps1 -path MNN-CPU/tools/x64
-
+ CategoryInfo : InvalidOperation: (:) [build_tools.ps1],RuntimeException + FullyQualifiedErrorId : InvokeMethodOnNull,build_tools.ps1
这边编译都是可以的。 打开命令行,运行 .\package_scripts\win\build_tools.ps1 -path MNN-CPU/tools/x64 试下?
可以说一下编译环境和过程么?在win上编译支持torchscript 的converter实在是太难了
https://www.yuque.com/mnn/cn/cvrt_windows
按这里编 converter 就行,"无法解析的外部符号" 可以通过 -DMNN_BUILD_SHARED_LIBS=OFF 解决
至于支持 torchscript ,这个 windows 上暂不好支持,可以安装 linux 虚拟器去编译
https://www.yuque.com/mnn/cn/cvrt_windows
按这里编 converter 就行,"无法解析的外部符号" 可以通过 -DMNN_BUILD_SHARED_LIBS=OFF 解决
至于支持 torchscript ,这个 windows 上暂不好支持,可以安装 linux 虚拟器去编译
不带torchscript的还是蛮好编译的,我搞个wsl试试,谢谢
我编译出来的converter ,转换不出来模型!!
我编译出来的converter ,转换不出来模型!!
这个在新版本很少见了,是有啥不支持的算子么?可以贴出来让大佬们看看
很
算子倒是都支持,我调试了一下源码,就是中间会有一个输入tener 是空指针,导致转换模型失败。 刚把pytorch的模型删了一个reshape发现 MNNConvert.exe -f ONNX --modelFile model.onnx --MNNModel model.mnn --bizCode MNN --saveStaticModel true --keepInputFormat true --batch 1 这样是导不出来的, MNNConvert.exe -f ONNX --modelFile model.onnx --MNNModel model.mnn --bizCode MNN --saveStaticModel true这样可以导出
弄明白了,pytorch模型 里有torch.nn.functional.max_pool2d 这个导出的onnx就不能运行,也不能正确的转成mnn模型。
解决torch.nn.functional.max_pool2d这个问题了,我输入的是[b,h,w]三维度数据,在pytorch下没问题,但是转onnx报维度问题,给输入的tenser增加一个维度就可以正确导出onnx然后成功导出mnn,我是看这个帖子尝试的 https://github.com/microsoft/onnxruntime/issues/11635。希望对大家有帮助
我编译出来的converter ,转换不出来模型!!
这个在新版本很少见了,是有啥不支持的算子么?可以贴出来让大佬们看看
/home/mnn/MNN-master/tools/converter/source/common/writeFb.cpp:91: These Op Not Support: ONNX::GatherElements 这个是算子不支持,很奇怪,我看里面是有的呀