OpenVINO C++ 异步推理
时间: 2023-10-27 08:02:18 浏览: 73
OpenVINO C++异步推理
OpenVINO是Intel推出的工具箱,用于加速深度学习模型的推理。其中,C++是OpenVINO中使用最广泛的编程语言之一。异步推理是OpenVINO中的一个重要功能,它可以提高模型推理的效率。
异步推理的实现步骤如下:
1.创建推理引擎
首先,需要创建一个推理引擎。推理引擎是OpenVINO中的一个重要组件,用于加载模型和执行推理任务。
```cpp
InferenceEngine::Core ie; // 创建推理引擎
```
2.加载模型
接着,需要加载模型。可以使用推理引擎中的`ReadNetwork`方法来加载模型。
```cpp
InferenceEngine::CNNNetwork network = ie.ReadNetwork(model_xml_path, model_bin_path); // 加载模型
```
3.为推理任务创建异步请求
创建异步请求是异步推理的核心。可以使用推理引擎中的`CreateInferRequest`方法来创建异步请求。
```cpp
InferenceEngine::InferRequest::Ptr request = ie.CreateInferRequestPtr(); // 创建异步请求
```
4.将输入数据传递给异步请求
接着,需要将输入数据传递给异步请求。可以使用异步请求中的`SetBlob`方法来设置输入数据。
```cpp
request->SetBlob(input_blob_name, input_blob); // 设置输入数据
```
5.执行推理任务
执行推理任务是异步推理的最后一步。可以使用异步请求中的`StartAsync`方法来执行推理任务。
```cpp
request->StartAsync(); // 执行推理任务
```
6.等待推理任务完成
异步推理的最后一步是等待推理任务完成。可以使用异步请求中的`Wait`方法来等待推理任务完成。
```cpp
request->Wait(InferenceEngine::IInferRequest::WaitMode::RESULT_READY); // 等待推理任务完成
```
完整的异步推理示例代码如下:
```cpp
#include <iostream>
#include <string>
#include <chrono>
#include <inference_engine.hpp>
using namespace std;
int main() {
// 1.创建推理引擎
InferenceEngine::Core ie;
// 2.加载模型
string model_xml_path = "path/to/model.xml";
string model_bin_path = "path/to/model.bin";
InferenceEngine::CNNNetwork network = ie.ReadNetwork(model_xml_path, model_bin_path);
// 3.为推理任务创建异步请求
InferenceEngine::InferRequest::Ptr request = ie.CreateInferRequestPtr();
// 4.将输入数据传递给异步请求
string input_blob_name = "input";
InferenceEngine::Blob::Ptr input_blob = request->GetBlob(input_blob_name);
float* input_data = input_blob->buffer().as<float*>();
// TODO: 将输入数据填充到 input_data 中
// 5.执行推理任务
request->StartAsync();
// 6.等待推理任务完成
request->Wait(InferenceEngine::IInferRequest::WaitMode::RESULT_READY);
// 7.获取输出数据
string output_blob_name = "output";
InferenceEngine::Blob::Ptr output_blob = request->GetBlob(output_blob_name);
float* output_data = output_blob->buffer().as<float*>();
// TODO: 处理输出数据
return 0;
}
```
相关推荐
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)