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

[Help]: Use DeployCGDet Error Expression: vector subscript out of range #56

Open
SuperJinggg opened this issue Nov 13, 2024 · 9 comments
Assignees
Labels
help wanted Extra attention is needed

Comments

@SuperJinggg
Copy link

我使用MD方式编译将代码打成deploy.dll动态库。然后在mfc的demo中调用。
使用DeployDet时完全正常,但是使用DeployCGDet(model = std::make_shareddeploy::DeployCGDet(enginePath, is_obb);)报错
`Program: E:\yolov8Testv1\Yolov8Detect\x64\Debug\deploy.dll
File: C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\VC\Tools\MSVC\14.16.27023\include\vector
Line: 1733

Expression: vector subscript out of range

For information on how your program can cause an assertion
failure, see the Visual C++ documentation on asserts.`
报错信息太少了,我无法定位错误。请问大佬对这个错误了解吗?

@laugh12321
Copy link
Owner

@SuperJinggg 使用 DeployCGDet 必须要求是静态模型,也就是Batch确定的,并且输入输入要与Batch一样, DeployDet 没有这个限制 (因为 DeployCGDet 使用了 cuda graph)。

image

假设 Batch 是 4, 那么predict传递的vector 长度也必须为4。怀疑是batch与输入大小不匹配。

@laugh12321 laugh12321 self-assigned this Nov 13, 2024
@laugh12321 laugh12321 added the help wanted Extra attention is needed label Nov 13, 2024
@laugh12321 laugh12321 changed the title 创建DeployCGDet时报错“Expression: vector subscript out of range” [Help]: Use DeployCGDet Error Expression: vector subscript out of range Nov 13, 2024
@SuperJinggg
Copy link
Author

但错误是在创建model时报的错,这时候并没有进行predict,即没有输入。

@laugh12321
Copy link
Owner

但错误是在创建model时报的错,这时候并没有进行predict,即没有输入。

如果是在创建时出现问题,那只可能是你的模型节点个数与期望不符,发我你的ONNX在netron可视化的截图,看看输入和输出。

@SuperJinggg
Copy link
Author

应该不是模型的问题,如果按照您的教程运行是完全成功的,只是我在打包成动态库后出现的问题。

@laugh12321
Copy link
Owner

应该不是模型的问题,如果按照您的教程运行是完全成功的,只是我在打包成动态库后出现的问题。

@SuperJinggg 那就只能是你打包或者是调用代码写的问题,不可能是源码的问题。源码中报错vector subscript out of range只能是模型中的输入输出与源码不匹配,而且Demo中的例子本身就是以动态库的方式运行。

@SuperJinggg
Copy link
Author

好吧,感谢大佬解惑,我只是将demo中的代码写进一个简单的mfc框架。我再仔细去康康

@laugh12321
Copy link
Owner

好吧,感谢大佬解惑,我只是将demo中的代码写进一个简单的mfc框架。我再仔细去康康

你可以发我下你的MFC调用部分的代码,我帮你看看。

@SuperJinggg
Copy link
Author

大佬,这个有点复杂,目前我在考虑直接把您的源代码嵌入进去,我想请问一下plugin这个我需要吗?

@laugh12321
Copy link
Owner

Plugin文件夹的代码不需要,这个是编译插件的。只需要include和source文件夹的代码。source中的pybind下的代码也不需要,这个是用来映射到Python的。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
help wanted Extra attention is needed
Projects
None yet
Development

No branches or pull requests

2 participants