带有 EmguCV 的 CUDA 中的 SEHException
SEHException in CUDA with EmguCV
我尝试在 EmguCV(OpenCV 的包装器)中使用 CUDA 构建项目。我安装了 CUDA 版本 10.0,NuGet 包 Emgu.CV.runtime.windows 版本 4.3.0.3890,Emgu.CV.runtime.windows.cuda 版本 4.3.0.3890。当我用命令 CudaInvoke.HasCuda
测试它时,它是真的。当我这样做时,一切正常:
Net net = DnnInvoke.ReadNetFromTensorflow(_modelFile, _configFile);
net.SetInput(DnnInvoke.BlobFromImage(image.Mat, 1, new System.Drawing.Size(300, 300), default(MCvScalar), false, false));
Mat mat = net.Forward();
但是当我添加 CUDA 背景和目标时:
Net net = DnnInvoke.ReadNetFromTensorflow(_modelFile, _configFile);
net.SetPreferableBackend(Emgu.CV.Dnn.Backend.Cuda);
net.SetPreferableTarget(Emgu.CV.Dnn.Target.Cuda);
net.SetInput(DnnInvoke.BlobFromImage(image.Mat, 1, new System.Drawing.Size(300, 300), default(MCvScalar), false, false));
Mat mat = net.Forward();
没用。它失败并显示“System.Runtime.InteropServices.SEHException”。
字符串出现异常Mat mat = net.Forward();
我的 GPU 是 NVIDIA GeForce 940MX (Maxwell 1.0)。
有人可以帮忙解决这个问题吗?
现在我找到了解决办法。
首先,您不能将量化模型 (UINT8) 与 CUDA 一起使用。您需要为此检测器使用 Caffe Model。您必须为您的 GPU 选择必要的 CUDA 和 cuDNN。之后你会再次遇到这个问题。但它来自您的硬件。很长一段时间我都不明白我是怎么了。但是我的代码在其他机器上成功运行。所以我认为问题出在我的硬件上。如果您遇到同样的问题,请随时与我联系。
我尝试在 EmguCV(OpenCV 的包装器)中使用 CUDA 构建项目。我安装了 CUDA 版本 10.0,NuGet 包 Emgu.CV.runtime.windows 版本 4.3.0.3890,Emgu.CV.runtime.windows.cuda 版本 4.3.0.3890。当我用命令 CudaInvoke.HasCuda
测试它时,它是真的。当我这样做时,一切正常:
Net net = DnnInvoke.ReadNetFromTensorflow(_modelFile, _configFile);
net.SetInput(DnnInvoke.BlobFromImage(image.Mat, 1, new System.Drawing.Size(300, 300), default(MCvScalar), false, false));
Mat mat = net.Forward();
但是当我添加 CUDA 背景和目标时:
Net net = DnnInvoke.ReadNetFromTensorflow(_modelFile, _configFile);
net.SetPreferableBackend(Emgu.CV.Dnn.Backend.Cuda);
net.SetPreferableTarget(Emgu.CV.Dnn.Target.Cuda);
net.SetInput(DnnInvoke.BlobFromImage(image.Mat, 1, new System.Drawing.Size(300, 300), default(MCvScalar), false, false));
Mat mat = net.Forward();
没用。它失败并显示“System.Runtime.InteropServices.SEHException”。
字符串出现异常Mat mat = net.Forward();
我的 GPU 是 NVIDIA GeForce 940MX (Maxwell 1.0)。
有人可以帮忙解决这个问题吗?
现在我找到了解决办法。 首先,您不能将量化模型 (UINT8) 与 CUDA 一起使用。您需要为此检测器使用 Caffe Model。您必须为您的 GPU 选择必要的 CUDA 和 cuDNN。之后你会再次遇到这个问题。但它来自您的硬件。很长一段时间我都不明白我是怎么了。但是我的代码在其他机器上成功运行。所以我认为问题出在我的硬件上。如果您遇到同样的问题,请随时与我联系。