Окружающая среда:
- Версия YoloDotNet: v2.0
- ЦП: AMD ryzen 7 7800X3D
- Графический процессор: 4070 супер
- 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");
Чтобы загрузить модель, я использую эту настройку в случае с графическим процессором< /p>
Код: Выделить всё
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}");
Код: Выделить всё
GPU Inference Time:
Total time taken for version m: 25693 ms
Average time per image for version m: 51.25 ms
CPU Inference Time:
Total time taken for version m: 34459.73 ms
Average time per image for version m: 69.74 ms
Проблема проявляется для разных размеров модели. Для удобства визуализации я напечатал только размер m.
Ожидаемое поведение заключается в том, что вывод с использованием графического процессора должен быть быстрее, чем вывод с использованием ЦП.
Но производительность не так высока улучшение использования графического процессора.
Подробнее здесь: https://stackoverflow.com/questions/788 ... inferences