Inferencia por lotes mediante el kit de herramientas OpenVINO™
No se puede ejecutar inferencia para dos imágenes de entrada en OpenVINO™ kit de herramientas.
Consulte Uso de inferencia de forma y observe las limitaciones de uso de lotes.
La smart_classroom_demo Zoo Open Model muestra el procesamiento en lotes dinámico al procesar varias caras detectadas anteriormente. Consulte la función CnnDLSDKBase::InferBatch en la demostración, que se encuentra en smart_classroom_demo/cpp/src/cnn.cpp, línea 51.
- Cuando se habilita el lote en el modelo, se asignará el búfer de memoria del blob de entrada para tener espacio para todos los lotes de imágenes, y se deben llenar los datos en el blob de entrada para cada imagen.
- En el bucle sobre num_imgs, una función auxiliar matU8ToBlob llena el blob de entrada con datos para current_batch_size de imágenes y, a continuación, establece el tamaño de lote para la solicitud de inferencia y la inferencia de ejecución.
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<uint8_t>(frames[batch_i + b], input, b);
}
if (config_.max_batch_size != 1)
infer_request_.SetBatch(current_batch_size); infer_request_.Infer();