Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

🔥Windows10 VS2019 CUDA 11.1 配置lite.ai.toolkit库 #207

Open
zhanghongyong123456 opened this issue Feb 26, 2022 · 23 comments
Open

🔥Windows10 VS2019 CUDA 11.1 配置lite.ai.toolkit库 #207

zhanghongyong123456 opened this issue Feb 26, 2022 · 23 comments
Assignees
Labels
documentation Improvements or additions to documentation GPU stale Windows

Comments

@zhanghongyong123456
Copy link

zhanghongyong123456 commented Feb 26, 2022

补充说明

首先,非常感谢 @zhanghongyong123456 同学这份详细的windows下配置lite.ai.toolkit 的教程~ 简直太热心啦~ 用windows的同学可以先看这份教程进行配置~ 以及以下相关issues的讨论。

References for Windows10 users

windows下的使用可以参考以下这几个讨论(some references for windows users)

另外,是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

image


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
image
1.4 github下载源码,自己编译MNN
按照这篇博客操作即可,,可以选debug 或者release 版本(可以在同一个文件夹编译两个版本),至于是否需要切换语言,可以先编译看看是否成功,不成功再去设置语言
https://blog.csdn.net/ouyangfushu/article/details/96476245
直接打开x64 Native Tools Command Prompt for VS 2019 编译即可,博客第一步、第二步我没有进行操作,也可以成功
image
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的安装的路径,像下图这样
image
1.5 开始配置 lite.ai.toolkit 库
1.5.1拉取项目库:
image
1.5.2 替换项目子库
image
image
opencv:
image
tnn:
image
onnxruntime:需要下载你自己对应版本的源码,
image
image
我这里使用的onnxruntime-win-x64-gpu-1.9.0,所以下载的对应的源码进行替换,
image
MNN:
源码下include下的MNN文件夹
ncnn:
自己编译的build/install/include/ncnn文件夹
M9I_`GAEVJUFF77FE6AC~9D
1.5.3 复制子库对应的lib以及dll到源文件夹:
image
这个将lite.ai.toolkit/lib文件夹下,(这里我第一次没有windows子文件夹,我忘记是我删除了还是后更新的,后面发现有子文件夹,我就在lib文件下复制了一份lib及dll库,他对应的子文件夹windows也复制了一份)
opencv:
image
image
tnn:
image
image
onnxruntime:
image
MNN:我这里拷贝的是release版本,后续也是编译的MinSizeRel版本
image
ncnn:
image
protobuf :这个也复制了(因为编译错误很多次,所以就把用到的都复制了)
image
总文件夹:
image
1.5.4 配置
修改opencv配置:
image
1.5.5 cmake:
方法一:
image
image
image

法二:
cmake GUI
image
image
image
1.5.6 打开项目,准备编译:
image
image
配置 头文件:
image
配置 lib路径:
image
配置lib文件名:
image
这是我的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解决:
image

1.5.7 生成:
image
1.5.8 结束
image
可能有不妥当地方,欢迎大佬指出:

@DefTruth
Copy link
Owner

@zhanghongyong123456 哇~ 简直太赞啦!!!太感谢这位同学详细的windows配置教程啦!!!我要把这个issue置顶!

@DefTruth DefTruth added documentation Improvements or additions to documentation Windows labels Feb 26, 2022
@DefTruth DefTruth changed the title Windows10 VS2019 CUDA 11.1 配置lite.ai.toolkit库: 🔥Windows10 VS2019 CUDA 11.1 配置lite.ai.toolkit库 Feb 26, 2022
@DefTruth DefTruth pinned this issue Feb 26, 2022
@DefTruth DefTruth added the GPU label Feb 26, 2022
@zhanghongyong123456
Copy link
Author

@zhanghongyong123456 哇~ 简直太赞啦!!!太感谢这位同学详细的windows配置教程啦!!!我要把这个issue置
希望可以有所助力,主要是想跟随大佬的脚步前行。

@Jiangjiawei2
Copy link

我按照这个教程完成了,但在RVM中生成的EXE点开后闪退。还有我在test_lite_rvm.cpp中设置了断点,可实际上程序根本没有运行到test_lite()。请问有实现成功的人帮助下吗

@DefTruth
Copy link
Owner

我按照这个教程完成了,但在RVM中生成的EXE点开后闪退。还有我在test_lite_rvm.cpp中设置了断点,可实际上程序根本没有运行到test_lite()。请问有实现成功的人帮助下吗

你要确保所有的库都能链接上,比如要拷贝到exe相同的目录,并且模型文件已经下载好放在对应的位置,具体细节请参考rvm示例工程的C++代码。

@ZachL1
Copy link

ZachL1 commented Mar 14, 2022

编译时提示

无法打开包括文件:"vulkan/vulkan.h": No such file or directory"

解决办法:将 vulkan 安装目录下 Include 文件夹中的 vulkan 文件夹整个复制到 lite.ai.toolkit 目录下(就像复制 onnxruntime 的 include 文件夹那样)。

@zhanghongyong123456
Copy link
Author

编译时提示

无法打开包括文件:"vulkan/vulkan.h": No such file or directory"

解决办法:将 vulkan 安装目录下 Include 文件夹中的 vulkan 文件夹整个复制到 lite.ai.toolkit 目录下(就像复制 onnxruntime 的 include 文件夹那样)。

这个直接在包含目录下添加vukan文件的include就可以了吧,

@Clear-3d
Copy link

编译时提示

无法打开包括文件:"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

@zhanghongyong123456
Copy link
Author

2022-03-21 10-51-45屏幕截图

在1.4 配置ncnn 参考链接里面呢,
1.4 配置 ncnn,参考这个链接
https://zhuanlan.zhihu.com/p/391609325

@hedilong
Copy link

image
VS2019 TNN YOLO系列模型推理时都会在status = instance->SetInputMat(input_mat, input_cvt_param);处会抛出异常;
可将transform中的BGR2RGB去掉就行。
image

@DefTruth
Copy link
Owner

感谢提醒,这是lite.ai.toolkit TNN版本的已知的bug,会导致在在windows下发生内存泄漏,mac和linux可以正常运行。正在修复中... 相关issue可见:

@DefTruth DefTruth mentioned this issue Mar 22, 2022
@taotaoyuhust
Copy link

一定要用vs2019吗,我用vs2017一堆的错误

@zhanghongyong123456
Copy link
Author

一定要用vs2019吗,我用vs2017一堆的错误

都是什么错误,我电脑只安装了2019,没有17所以没测试过

@taotaoyuhust
Copy link

image

@taotaoyuhust
Copy link

image

@taotaoyuhust
Copy link

重装了2019就好了。。楼主c++代码用到的语法太高级了。。
另外,onnxruntime得用1.9.0版本的,1.3.0的会报错

@Richardlyq
Copy link

image
请问这个算编译成功了嘛?结合教程,我只用了onnxruntime(下载的1.7.0版本的,没用gpu)、opencv。前面还有好多看不懂的,5555~

@l7518597
Copy link

请教一下,不调用GPU,只CPU用。只用onnxruntime应该怎么配置

@l7518597
Copy link

编译出这三个文件后 怎么用呢?

@chfeizy
Copy link

chfeizy commented Oct 30, 2022

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 这个版本怎么编译通过的

@chfeizy
Copy link

chfeizy commented Nov 5, 2022

“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运行还是报错

@DefTruth
Copy link
Owner

不支持Debug,只支持release

@terryluzhenfeng
Copy link

重装了2019就好了。。楼主c++代码用到的语法太高级了。。 另外,onnxruntime得用1.9.0版本的,1.3.0的会报错

编译成功后,怎么进行代码调试啊?大佬可有时间,解答一下

Copy link

This issue is stale because it has been open for 30 days with no activity.

@github-actions github-actions bot added the stale label May 26, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
documentation Improvements or additions to documentation GPU stale Windows
Projects
None yet
Development

No branches or pull requests