Все работает довольно хорошо, но я бы хотел ускорить вывод на стороне 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
Мобильная версия