Batch-Inferenz mit OpenVINO™ Toolkit
Inferenz für zwei Eingabe-Images in OpenVINO™ Toolkit kann nicht ausgeführt werden.
Lesen Sie dazu Forminferenz verwenden und beachten Sie die Einschränkungen bei der Verwendung von Batches.
Die Open Model Zoo smart_classroom_demo zeigt dynamisches Batching, wenn mehrere zuvor erkannten Gesichter verarbeitet werden. Sehen Sie sich die Funktion CnnDLSDKBase::InferBatch in der Demo an, die sich an smart_classroom_demo/cpp/src/cnn.cpp, Zeile 51, befindet.
- Wenn der Batch im Modell aktiviert ist, wird dem Speicherpuffer des Eingabe-Blobs Platz für alle Batches von Bildern zugewiesen, und die Daten im Eingabe-Blob müssen für jedes Image gefüllt werden.
- In der Schleife über num_imgsfüllt eine Hilfsfunktion matU8ToBlob den Eingabe-Blob mit Daten für current_batch_size von Bildern und legt dann die Batchgröße für die Inferenzanforderung und die Ausführungsinferenz fest.
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();