batch为1时,如下:
void* buffers[2];
buffers[inputIndex] = inputbuffer;
buffers[outputIndex] = outputBuffer;
但是batch_size大于1时,inputbuffer和outputBuffer如何设置,以及如何构建引擎?
批量推理准备数据:
void parseYolov5(cv::Mat& img,ICudaEngine* engine,IExecutionContext* context,std::vector<Yolo::Detection>& batch_res)
{
// 准备数据 ---------------------------
static float data[BATCH_SIZE * 3 * INPUT_H * INPUT_W]; //输入
static float prob[BATCH_SIZE * OUTPUT_SIZE]; //输出
assert(engine->getNbBindings() == 2);
void* buffers[2];
// In order to bind the buffers, we need to know the names of the input and output tensors.
// Note that indices are guaranteed to be less than IEngine::getNbB

本文详细介绍了如何使用TensorRT C++ API进行批量推理,包括创建TensorRT网络、导入不同模型(Caffe、TensorFlow、ONNX)、构建和序列化Engine、执行推理以及内存管理和Engine调整。重点讨论了批量推理时inputbuffer和outputBuffer的设置以及引擎构建中的最大batch size和workspace size配置。
订阅专栏 解锁全文
7268





