请参阅 使用形状推理 并了解使用批量的限度。
Open Model Zoo
smart_classroom_demo在处理多个先前检测到的面孔时显示动态批处理。
请参阅演示中的函数CnnDLSDKBase::InferBatch(位于第
51 行smart_classroom_demo/cpp/src/cnn.cpp)。
- 当模型中启用批量时,输入 blob 的内存缓冲区将分配为所有批量图像留出余地,并且需要填充每张图像的输入 blob 中的数据。
- 在 num_imgs上的循环中,辅助功能 matU8ToBlob 填充输入的blob 中包含用于图像 current_batch_size 的数据,然后为推理请求和运行推理设定批量。
for (size_t batch_i = 0; batch_i < num_imgs; batch_i += batch_size) {
const size_t current_batch_size = std::min(batch_size, num_imgs - batch_i);
for (size_t b = 0; b < current_batch_size; b++) {
matU8ToBlob(frames[batch_i + b], input, b);
}
if (config_.max_batch_size != 1)
infer_request_.SetBatch(current_batch_size); infer_request_.Infer();
请参阅 使用形状推理 并了解使用批量的限度。
Open Model Zoo
smart_classroom_demo在处理多个先前检测到的面孔时显示动态批处理。
请参阅演示中的函数CnnDLSDKBase::InferBatch(位于第
51 行smart_classroom_demo/cpp/src/cnn.cpp)。
- 当模型中启用批量时,输入 blob 的内存缓冲区将分配为所有批量图像留出余地,并且需要填充每张图像的输入 blob 中的数据。
- 在 num_imgs上的循环中,辅助功能 matU8ToBlob 填充输入的blob 中包含用于图像 current_batch_size 的数据,然后为推理请求和运行推理设定批量。
for (size_t batch_i = 0; batch_i < num_imgs; batch_i += batch_size) {
const size_t current_batch_size = std::min(batch_size, num_imgs - batch_i);
for (size_t b = 0; b < current_batch_size; b++) {
matU8ToBlob(frames[batch_i + b], input, b);
}
if (config_.max_batch_size != 1)
infer_request_.SetBatch(current_batch_size); infer_request_.Infer();
举报