之前在做onnx部署的时候遇到一个大问题,我在成功编译了opencv的cuda版本之后,测试单张图片的检测速度,发现cpu检测的时间只需要300-400ms一张,而我3060的显卡用gpu进行推理居然还需要1900ms一张。一度有点怀疑是不是opencv的编译出现了问题,恰好最近认识了一个csdn的朋友也在搞这个东西,所以相互交流了一下,发现原来问题就出在与检测单张图片上,将代码更改为检测视频,获取逐帧检测解决,最终yolov5s.onnx在我的电脑上gpu的推理时间为10ms左右一张,在cpu上推理时间为300-400ms一张。
感谢-_Matrix_--CSDN博客这位兄弟的指点,不然我还在编译更高版本的opencv。
--------------------------------------------------------------------------------------------------------------------------
最后看看chatgpt的解释吧:
CUDA 在处理单张图片时通常会受到数据传输、CUDA 内核启动和初始化等方面的开销,而这些开销在处理多张图片时可以被分摊到多个图片上。因此,当处理多张图片时,CUDA 可以更有效地利用 GPU 的并行性,从而显著提高处理速度。
另外,单张图片的处理可能会导致 GPU 的负载不足,无法充分利用 GPU 的并行性能,而处理多张图片可以更充分地利用 GPU 的并行性能,从而提高整体处理速度。
综上所述,处理多张图片时通常会比处理单张图片速度更快,特别是在使用 CUDA 加速时。