YOLO推理中GPU性能劣于CPU的问题求助
YOLO模型GPU性能劣于CPU的问题
我正在使用YoloDotNet NuGet包测试YOLO模型的性能,该测试用于我的学位论文。但我遇到了GPU性能显著劣于CPU性能的问题。
问题在于前50-60次推理的性能表现很好(约20ms),之后性能开始下降,最终稳定在每张图片70-75ms左右。我无法理解性能为何会出现这种变化。
环境配置
- YoloDotNet版本:v2.0
- CPU:AMD Ryzen 7 7800X3D
- GPU:RTX 4070 Super
- CUDA/cuDNN版本:CUDA 11.8和cuDNN 8.9.7
- .NET版本:8
复现步骤
以下是用于检测耗时的代码:
var sw = new Stopwatch(); for (var i = 0; i < 500; i++) { var file = $@"C:\Users\Utente\Documents\assets\images\input\frame_{i}.jpg"; using var image = SKImage.FromEncodedData(file); sw.Restart(); var results = yolo.RunObjectDetection(image, confidence: 0.25, iou: 0.7); sw.Stop(); image.Draw(results); image.Save(file.Replace("input", $"output_{yolo_version}{version}_{target}").Replace(".jpg", $"_detect_{yolo_version}{version}_{target}.jpg"), SKEncodedImageFormat.Jpeg); times.Add(sw.Elapsed.TotalMilliseconds); Console.WriteLine($"Time taken for image {i}: {sw.Elapsed.TotalMilliseconds:F2} ms"); }
GPU模型加载配置
yolo = new Yolo(new YoloOptions { OnnxModel = @$"C:\Users\Utente\Documents\assets\model\yolov{yolo_version}{version}_{target}.onnx", ModelType = ModelType.ObjectDetection, // Model type Cuda = true, // Use CPU or CUDA for GPU accelerated inference. Default = true GpuId = 0, // Select Gpu by id. Default = 0 PrimeGpu = true, // Pre-allocate GPU before first. Default = false }); Console.WriteLine(yolo.OnnxModel.ModelType); Console.WriteLine($"Using GPU for version {yolo_version}{version}");
性能测试结果(YOLOv8 m尺寸模型)
CPU Inference Time: Total time taken for version m: 25693 ms Average time per image for version m: 51.25 ms GPU Inference Time: Total time taken for version m: 34459.73 ms Average time per image for version m: 69.74 ms
我本想发布耗时图表,但没有足够的权限。不同尺寸的模型均存在该问题,为便于展示,仅列出了m尺寸的测试数据。预期行为是GPU推理速度应快于CPU,但使用GPU并未带来性能提升。
内容的提问来源于stack exchange,提问作者Eduard Brhas
相关产品推荐
相关产品推荐

