Ускорьте вывод ONNX в C#C#

Место общения программистов C#
Ответить
Anonymous
 Ускорьте вывод ONNX в C#

Сообщение Anonymous »

Я использую ONNX для экспорта модели, обученной на Python, и запуска ее на C#.
Все работает довольно хорошо, но я бы хотел ускорить вывод на стороне C#, используя задачи или потоки на процессоре. У меня нет доступного графического процессора.
При запуске кода на одном изображении общее время на моем ПК составляет около 200 мс, при запуске на 30 изображениях я получаю около 900 мс. 1000 мс.
Вот интересный код (я создал автономный репозиторий, чтобы воспроизвести проблему, он находится на моем github).

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

    private static void RunInferenceOnImages(List inputs)
{
var tasks = new List();

foreach (var image in inputs)
{
var input = new List() {
NamedOnnxValue.CreateFromTensor("float_input", image),
};
Task task = Task.Run(() => RunInference(modelPath, input));
tasks.Add(task);
}

Task.WaitAll(tasks.ToArray());

foreach (var task in tasks)
{
var output = task.Result;
}
}

static int RunInference(string modelPath, List inputs)
{
using var session = new InferenceSession(modelPath);
using var results = session.Run(inputs);
var scores = results.First().AsTensor();
return (int)scores[0];
}
Как мне сделать это быстрее?


Подробнее здесь: https://stackoverflow.com/questions/793 ... in-c-sharp
Ответить

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

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

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

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

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