AsyncInferQueue 这个类如何使用
时间: 2024-05-09 12:20:12 浏览: 16
AsyncInferQueue是一个异步推理队列类,用于在推理过程中异步处理输入数据。
使用AsyncInferQueue需要以下步骤:
1. 创建一个AsyncInferQueue对象:
```cpp
InferenceEngine::AsyncInferQueue async_infer_queue(plugin, 1, true, nullptr);
```
其中,plugin是Inference Engine插件对象,1是推理的异步请求队列的最大数量,true表示异步推理队列应该是无限的,nullptr表示没有回调函数。
2. 加载模型并分配输入和输出:
```cpp
InferenceEngine::CNNNetwork network = ie.ReadNetwork(model_xml, model_bin);
network.setBatchSize(batch_size);
InferenceEngine::ExecutableNetwork executable_network = plugin.LoadNetwork(network, device);
InferenceEngine::InferRequest infer_request = executable_network.CreateInferRequest();
```
其中,model_xml和model_bin是模型文件的路径,batch_size是批处理大小,device是推理设备。
3. 将输入数据添加到异步推理队列中:
```cpp
async_infer_queue.StartAsync();
infer_request.SetBlob(input_blob_name, input_blob);
async_infer_queue.Enqueue(infer_request);
```
其中,input_blob_name是输入blob的名称,input_blob是输入blob的数据。
4. 获取异步推理结果:
```cpp
async_infer_queue.Wait();
InferenceEngine::BlobMap output_blobs = infer_request.GetBlobOutputs();
```
其中,Wait()等待队列中的所有推理请求完成,GetBlobOutputs()获取推理结果的输出blob。
完整的使用示例可以参考Inference Engine的官方示例:https://github.com/openvinotoolkit/openvino/blob/master/inference-engine/samples/cpp_async_infer/main.cpp