Inférence par lots à l’aide de OpenVINO™ kit d’outils
Impossible d’exécuter l’inférence de deux images d’entrée dans OpenVINO™ kit d’outils.
Reportez-vous à Using Shape Inference (Utiliser l’inférence shape ) et notez les limitations d’utilisation des lots.
Le zoo Open Model smart_classroom_demo montre un traitement dynamique des lots lors du traitement de plusieurs visages précédemment détectés. Reportez-vous à la fonction CnnDLSDKBase::InferBatch dans la démo, qui se trouve à smart_classroom_demo/cpp/src/cnn.cpp, ligne 51.
- Lorsque le lot est activé dans le modèle, la mémoire tampon du blob d’entrée est allouée pour avoir de la place pour tous les lots d’images, et les données du blob d’entrée pour chaque image doivent être remplies.
- Dans la boucle sur num_imgs, une fonction auxiliaire matU8ToBlob remplisse le blob d’entrée de données pour current_batch_size d’images, puis définit la taille du lot pour la demande d’inférence et l’inférence d’exécution.
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();