lite.ai.toolkit
lite.ai.toolkit copied to clipboard
🔥Windows10 VS2019 CUDA 11.1 配置lite.ai.toolkit库
补充说明
首先,非常感谢 @zhanghongyong123456 同学这份详细的windows下配置lite.ai.toolkit 的教程~ 简直太热心啦~ 用windows的同学可以先看这份教程进行配置~ 以及以下相关issues的讨论。
References for Windows10 users
windows下的使用可以参考以下这几个讨论(some references for windows users)
- 👉 #6
- 👉 #10
- 👉 #32
- 👉 #48
- 👉 #39
- 👉 #77
- 👉 #242
另外,是win32和system32,目前lite.ai.toolkit没有考虑32位的系统。还有就是在windows下编译完之后,需要手动把依赖库都拷贝到build/lite.ai.toolkit/lib和build/lite.ai.toolkit/bin,并且检查修改下模型文件的路径,比如说路径的反斜杠之类的。(Also, for win32 and system32, currently, lite.ai.toolkit does not consider 32-bit systems. Also, after compiling under Windows, you need to manually copy the dependent libraries to build/lite.ai.toolkit/lib and build/lite.ai.toolkit/bin, and check and modify the path of the model file, for example, The backslash of the path.)
Search issues about windows
Windows10 VS2019 CUDA 11.1 配置 lite.ai.toolkit库
作者: @zhanghongyong123456
以下是配置教程原文。
第一步:相关依赖库的配置:
配置:
1.1 Opencv:
按照这篇博客,下载官方编译好的库解压安装,添加环境变量;我是用 opencv 4.5.5
https://blog.csdn.net/xgocn/article/details/104170088
1.2 配置 Onnxruntime:
按照这篇博客就行操作即可:
https://blog.csdn.net/qq_44747572/article/details/121340735?spm=1001.2014.3001.5501
这里注意自己CUDA的版本号,我采用的 onnxruntime-win-x64-gpu-1.9.0官方编译版本
1.3 配置TNN
直接下载安装包解压即可 github下载即可 :
https://github.com/Tencent/TNN/releases/tag/v0.3.0
https://github.com/Tencent/TNN/releases/download/v0.3.0/tnn-v0.3.0-windows.zip
1.4 github下载源码,自己编译MNN
按照这篇博客操作即可,,可以选debug 或者release 版本(可以在同一个文件夹编译两个版本),至于是否需要切换语言,可以先编译看看是否成功,不成功再去设置语言
https://blog.csdn.net/ouyangfushu/article/details/96476245
直接打开x64 Native Tools Command Prompt for VS 2019 编译即可,博客第一步、第二步我没有进行操作,也可以成功
cmake -G "NMake Makefiles" -DCMAKE_BUILD_TYPE=Release .. 只需要设置 Debug 或者Release 即可。后续采用release 版本
1.4 配置 ncnn,参考这个链接
https://zhuanlan.zhihu.com/p/391609325
特别注意:在配置Protobuf时候,我在一个源文件夹下先后进行Debug以及 Release编译,即使这里不出问题,后续在编译的时候也会报错,所以如果想要配置release以及debug版本,个人强烈建议在两个源文件夹下进行分别编译;同样的在后续下载NCNN源码进行debug和release版本编译时候,也要创建两个源文件分别进行分别编译。
在编译Vulkan时候,需要配置环境变量,否则后续在编译ncnn时候需要设置 set VULKAN_SDK=C:/VulkanSDK/1.3.204.0 后面跟你VulkanSDK的安装的路径,像下图这样
1.5 开始配置 lite.ai.toolkit 库
1.5.1拉取项目库:
1.5.2 替换项目子库
opencv:
tnn:
onnxruntime:需要下载你自己对应版本的源码,
我这里使用的onnxruntime-win-x64-gpu-1.9.0,所以下载的对应的源码进行替换,
MNN:
源码下include下的MNN文件夹
ncnn:
自己编译的build/install/include/ncnn文件夹
1.5.3 复制子库对应的lib以及dll到源文件夹:
这个将lite.ai.toolkit/lib文件夹下,(这里我第一次没有windows子文件夹,我忘记是我删除了还是后更新的,后面发现有子文件夹,我就在lib文件下复制了一份lib及dll库,他对应的子文件夹windows也复制了一份)
opencv:
tnn:
onnxruntime:
MNN:我这里拷贝的是release版本,后续也是编译的MinSizeRel版本
ncnn:
protobuf :这个也复制了(因为编译错误很多次,所以就把用到的都复制了)
总文件夹:
1.5.4 配置
修改opencv配置:
1.5.5 cmake:
方法一:
法二:
cmake GUI
1.5.6 打开项目,准备编译:
配置 头文件:
配置 lib路径:
配置lib文件名:
这是我的lib名:
opencv_world455.lib
onnxruntime.lib
MNN.lib
ncnn.lib
TNN.lib
kernel32.lib
user32.lib
gdi32.lib
winspool.lib
shell32.lib
ole32.lib
oleaut32.lib
uuid.lib
comdlg32.lib
advapi32.lib
libprotobuf.lib
vulkan-1.lib
glslang.lib
SPIRV.lib
OGLCompiler.lib
OSDependent.lib
MachineIndependent.lib
GenericCodeGen.lib
添加error解决:
1.5.7 生成:
1.5.8 结束
可能有不妥当地方,欢迎大佬指出:
@zhanghongyong123456 哇~ 简直太赞啦!!!太感谢这位同学详细的windows配置教程啦!!!我要把这个issue置顶!
@zhanghongyong123456 哇~ 简直太赞啦!!!太感谢这位同学详细的windows配置教程啦!!!我要把这个issue置 希望可以有所助力,主要是想跟随大佬的脚步前行。
我按照这个教程完成了,但在RVM中生成的EXE点开后闪退。还有我在test_lite_rvm.cpp中设置了断点,可实际上程序根本没有运行到test_lite()。请问有实现成功的人帮助下吗
我按照这个教程完成了,但在RVM中生成的EXE点开后闪退。还有我在test_lite_rvm.cpp中设置了断点,可实际上程序根本没有运行到test_lite()。请问有实现成功的人帮助下吗
你要确保所有的库都能链接上,比如要拷贝到exe相同的目录,并且模型文件已经下载好放在对应的位置,具体细节请参考rvm示例工程的C++代码。
编译时提示
无法打开包括文件:"vulkan/vulkan.h": No such file or directory"
解决办法:将 vulkan 安装目录下 Include 文件夹中的 vulkan 文件夹整个复制到 lite.ai.toolkit 目录下(就像复制 onnxruntime 的 include 文件夹那样)。
编译时提示
无法打开包括文件:"vulkan/vulkan.h": No such file or directory"
解决办法:将 vulkan 安装目录下 Include 文件夹中的 vulkan 文件夹整个复制到 lite.ai.toolkit 目录下(就像复制 onnxruntime 的 include 文件夹那样)。
这个直接在包含目录下添加vukan文件的include就可以了吧,
编译时提示
无法打开包括文件:"vulkan/vulkan.h": No such file or directory"
解决办法:将 vulkan 安装目录下 Include 文件夹中的 vulkan 文件夹整个复制到 lite.ai.toolkit 目录下(就像复制 onnxruntime 的 include 文件夹那样)。
这个直接在包含目录下添加vukan文件的include就可以了吧,
求助!!!!请问一下,这个Valkan在教程中哪里有要求下载呀?如果我只用onnx的模型,其他都不用的话,我最后应该只需要配opencv和onnx吧?生成lite.ai.toolkit的时候报错了TT
在1.4 配置ncnn 参考链接里面呢, 1.4 配置 ncnn,参考这个链接 https://zhuanlan.zhihu.com/p/391609325
VS2019 TNN YOLO系列模型推理时都会在status = instance->SetInputMat(input_mat, input_cvt_param);处会抛出异常;
可将transform中的BGR2RGB去掉就行。
感谢提醒,这是lite.ai.toolkit TNN版本的已知的bug,会导致在在windows下发生内存泄漏,mac和linux可以正常运行。正在修复中... 相关issue可见:
- #240
一定要用vs2019吗,我用vs2017一堆的错误
一定要用vs2019吗,我用vs2017一堆的错误
都是什么错误,我电脑只安装了2019,没有17所以没测试过
重装了2019就好了。。楼主c++代码用到的语法太高级了。。 另外,onnxruntime得用1.9.0版本的,1.3.0的会报错
请问这个算编译成功了嘛?结合教程,我只用了onnxruntime(下载的1.7.0版本的,没用gpu)、opencv。前面还有好多看不懂的,5555~
请教一下,不调用GPU,只CPU用。只用onnxruntime应该怎么配置
编译出这三个文件后 怎么用呢?
onnxruntime 1.8.1 1.8.2 1.11.0 以上都有cuda/cpu_provider_factory.h 但是1.9.0 1.9.1 1.10.0这三个版本是没有的 1.9.0 这个版本怎么编译通过的
“lite_rvm.exe”(Win32): 已加载“C:\lite.ai.toolkit-main\build\lite.ai.toolkit\bin\Debug\lite_rvm.exe”。已加载符号。 “lite_rvm.exe”(Win32): 已加载“C:\Windows\System32\ntdll.dll”。 “lite_rvm.exe”(Win32): 已加载“C:\Windows\System32\kernel32.dll”。 “lite_rvm.exe”(Win32): 已加载“C:\Windows\System32\KernelBase.dll”。 “lite_rvm.exe”(Win32): 已加载“C:\lite.ai.toolkit-main\build\lite.ai.toolkit\bin\Debug\lite.ai.toolkit.dll”。已加载符号。 “lite_rvm.exe”(Win32): 已加载“C:\www\opencv_build\install\x64\vc16\bin\opencv_core455.dll”。已加载符号。 “lite_rvm.exe”(Win32): 已加载“C:\Windows\System32\ucrtbase.dll”。 “lite_rvm.exe”(Win32): 已加载“C:\www\opencv_build\install\x64\vc16\bin\opencv_highgui455.dll”。已加载符号。 “lite_rvm.exe”(Win32): 已加载“C:\Windows\System32\gdi32.dll”。 “lite_rvm.exe”(Win32): 已加载“C:\Windows\System32\win32u.dll”。 “lite_rvm.exe”(Win32): 已加载“C:\Windows\System32\gdi32full.dll”。 “lite_rvm.exe”(Win32): 已加载“C:\Windows\System32\msvcp_win.dll”。 “lite_rvm.exe”(Win32): 已加载“C:\Windows\System32\user32.dll”。 “lite_rvm.exe”(Win32): 已加载“C:\Windows\System32\comdlg32.dll”。 “lite_rvm.exe”(Win32): 已加载“C:\Windows\System32\msvcrt.dll”。 “lite_rvm.exe”(Win32): 已加载“C:\Windows\System32\combase.dll”。 “lite_rvm.exe”(Win32): 已加载“C:\Windows\System32\rpcrt4.dll”。 “lite_rvm.exe”(Win32): 已加载“C:\Windows\System32\SHCore.dll”。 “lite_rvm.exe”(Win32): 已加载“C:\Windows\System32\shlwapi.dll”。 “lite_rvm.exe”(Win32): 已加载“C:\Windows\System32\shell32.dll”。 “lite_rvm.exe”(Win32): 已加载“C:\Windows\System32\advapi32.dll”。 “lite_rvm.exe”(Win32): 已加载“C:\Windows\System32\sechost.dll”。 “lite_rvm.exe”(Win32): 已加载“C:\www\opencv_build\install\x64\vc16\bin\opencv_highgui455d.dll”。已加载符号。 “lite_rvm.exe”(Win32): 已加载“C:\www\opencv_build\install\x64\vc16\bin\opencv_imgcodecs455.dll”。已加载符号。 “lite_rvm.exe”(Win32): 已加载“C:\www\opencv_build\install\x64\vc16\bin\opencv_videoio455.dll”。已加载符号。 “lite_rvm.exe”(Win32): 已加载“C:\Windows\System32\ole32.dll”。 “lite_rvm.exe”(Win32): 已加载“C:\Windows\System32\oleaut32.dll”。 “lite_rvm.exe”(Win32): 已加载“C:\Windows\System32\onnxruntime.dll”。 “lite_rvm.exe”(Win32): 已加载“C:\Windows\System32\msvcp140d.dll”。 “lite_rvm.exe”(Win32): 已加载“C:\Windows\System32\vcruntime140d.dll”。 “lite_rvm.exe”(Win32): 已加载“C:\Windows\System32\vcruntime140_1d.dll”。 “lite_rvm.exe”(Win32): 已加载“C:\Windows\System32\ucrtbased.dll”。 “lite_rvm.exe”(Win32): 已加载“C:\www\opencv_build\install\x64\vc16\bin\opencv_core455d.dll”。已加载符号。 “lite_rvm.exe”(Win32): 已加载“C:\www\opencv_build\install\x64\vc16\bin\opencv_imgproc455.dll”。已加载符号。 “lite_rvm.exe”(Win32): 已加载“C:\www\opencv_build\install\x64\vc16\bin\opencv_imgproc455d.dll”。已加载符号。 “lite_rvm.exe”(Win32): 已加载“C:\www\opencv_build\install\x64\vc16\bin\opencv_videoio455d.dll”。已加载符号。 “lite_rvm.exe”(Win32): 已加载“C:\Windows\System32\msvcp140.dll”。 “lite_rvm.exe”(Win32): 已加载“C:\Windows\System32\concrt140.dll”。 “lite_rvm.exe”(Win32): 已加载“C:\Windows\System32\vcruntime140.dll”。 “lite_rvm.exe”(Win32): 已加载“C:\Windows\System32\vcruntime140_1.dll”。 “lite_rvm.exe”(Win32): 已加载“C:\Windows\WinSxS\amd64_microsoft.windows.common-controls_6595b64144ccf1df_5.82.19041.1110_none_792d1c772443f647\comctl32.dll”。 “lite_rvm.exe”(Win32): 已加载“C:\www\opencv_build\install\x64\vc16\bin\opencv_imgcodecs455d.dll”。已加载符号。 “lite_rvm.exe”(Win32): 已加载“C:\Windows\System32\mfplat.dll”。 “lite_rvm.exe”(Win32): 已加载“C:\Windows\System32\cfgmgr32.dll”。 “lite_rvm.exe”(Win32): 已加载“C:\Windows\System32\mf.dll”。 “lite_rvm.exe”(Win32): 已加载“C:\Windows\System32\mfreadwrite.dll”。 “lite_rvm.exe”(Win32): 已加载“C:\Windows\System32\dxgi.dll”。 “lite_rvm.exe”(Win32): 已加载“C:\Windows\System32\d3d11.dll”。 线程 0x526c 已退出,返回值为 -1073741701 (0xc000007b)。 线程 0x29a4 已退出,返回值为 -1073741701 (0xc000007b)。 程序“[7240] lite_rvm.exe”已退出,返回值为 -1073741701 (0xc000007b)。
编译好了也复制过去了gpu运行还是报错
不支持Debug,只支持release