TensorRT context.enqueue дает неверный результат для всех кадров, кроме первого - PullRequest
0 голосов
/ 17 октября 2018

Я пытаюсь выполнить вывод для нескольких изображений, используя 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 вектор ?.Спасибо!

...