【问题标题】:Can I use gpu::Stream for CascadeClassifier_GPU on OpenCV and how?我可以在 OpenCV 中为 CascadeClassifier GPU 使用 gpu::Stream 吗?如何使用?
【发布时间】:2015-02-16 07:54:23
【问题描述】:

我使用Opencv 2.4.10(当前稳定版本)。我使用gpu::CascadeClassifier_GPU::detectMultiScale 来检测人脸。我想将它 async 与我在单独的 cudaStream_t 中启动的 CUDA 内核代码一起使用。但默认情况下,CascadeClassifier_GPU 在默认的 zero-stream 中启动,这使得在 GPU 上无法启动任何与此异步的东西。

我在这里看到没有办法将gpu::Stream 用于CascadeClassifier_GPUOpenCV DOC link

  • 我可以将gpu::Stream 用于CascadeClassifier_GPU 吗?如何使用?
  • 如果不是,那么我可以在哪个版本的 OpenCV 中执行此操作?

更新:到目前为止,我发现的唯一方法是使用单独的 CPU 线程来执行 gpu::CascadeClassifier_GPU::detectMultiScale 的功能并在单独的 GPU 上执行。但为此至少我需要 2 个 GPU。

【问题讨论】:

    标签: opencv cuda gpgpu nvidia opencv3.0


    【解决方案1】:

    CascadeClassifier_GPU 使用混合 GPU/CPU 实现并在内部执行额外的同步,这就是它不支持带有 gpu::Stream 参数的异步模式的原因。为了与您的代码异步启动它,您需要为其使用单独的 CPU 线程。

    【讨论】:

    • 好的,我知道这一点,但即使我使用单独的 CPU 线程,我的自定义 CUDA 内核函数或 cudaMemcpy 仍然无法同时执行异步,因为 @987654323 中的所有 CUDA 内核@ 在 默认零流 中启动,这使得 不可能 在 GPU 上执行任何 async-simultaneously 的操作。到目前为止,我发现的唯一方法 - 使用单独的 CPU 线程来执行 gpu::CascadeClassifier_GPU::detectMultiScale 的功能并在单独的 GPU 上执行它。但为此至少我需要 2 个 GPU。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-27
    • 1970-01-01
    • 2020-10-03
    • 2013-07-14
    • 2019-05-26
    • 2021-05-15
    相关资源
    最近更新 更多