TensorRT context.enqueue дает неверный результат для всех кадров, кроме первого

Я пытаюсь выполнить вывод на нескольких изображениях с помощью TensorRT API.
Фрагмент псевдокода для моего приложения

context.enqueue(batchSize, buffers, stream, nullptr);

Вот,

buffers[0] = batchSize * INPUT_C * INPUT_H * INPUT_W
buffers[1] = batchSize * outputSize

Если я запускаю с batchSize = 1, я получаю правильный вывод, но с batchSize> 1, обнаружение для изображений, отличных от первого изображения, неверно.
Кроме того, при batchSize = 1 время вывода составляет 7 мс, а при batchSize = 3 оно составляет около 16 мс. Таким образом, решение этой проблемы придаст значительный импульс моему приложению и вообще.

Может кто-то, пожалуйста, подскажите мне, что я могу попытаться решить эту проблему.
Я выделяю память «буферам» таким образом

for (int b = 0; b < engine.getNbBindings(); b++)
{
DimsCHW dims = static_cast<DimsCHW&&>(engine.getBindingDimensions(b));
size_t size = batchSize * dims.c() * dims.h() * dims.w() * sizeof(float);
std::cout << "size of buff = " << size << std::endl;
CudaCHECK(cudaMalloc(&buffers[b], size));
}

Это должен быть 1D вектор или 2D вектор?
Спасибо!

1

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]