Производительность графического процессора хуже, чем производительность процессора по выводам YOLOC#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 Производительность графического процессора хуже, чем производительность процессора по выводам YOLO

Сообщение Anonymous »

Я использую пакет YoloDotNet NuGet для проверки производительности моделей YOLO. Я провожу это тестирование для своей дипломной работы. Однако я столкнулся с проблемой, когда производительность графического процессора значительно хуже, чем производительность процессора.

Проблема в том, что производительность для первых выводов 50/60 действительно хороши (например, 20 мс), а затем начинают ухудшаться, пока время не стабилизируется около 70/75 мс на изображение. Я не понимаю, почему производительность при этом ухудшается.

Окружающая среда:
  • Версия YoloDotNet: v2.0
  • ЦП: AMD ryzen 7 7800X3D
  • Графический процессор: 4070 super
    < li>Версия 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}");
Показатели производительности с использованием yolov8:

Код: Выделить всё

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.
Ожидаемое поведение заключается в том, что вывод с использованием графического процессора должен быть быстрее, чем вывод с использованием ЦП.
Но производительность не так велика. улучшение использования графического процессора.

Подробнее здесь: https://stackoverflow.com/questions/788 ... inferences
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C#»