openvino最简单的部署

本文介绍如何使用OpenVINO进行目标检测,包括环境搭建、代码实现等步骤,并分享了一些实际操作的经验。

1.前言

  • openvino可以看成一个驱动,你只要找到合适的头文件和库,就可以使用相应的设备,如CPU、GPU、计算棒等等。
  • 当然,你必须先有一个安装了openvino的设备,参考这里
  • 直通车,下载越早,花费越少

2.头文件和库

  • 头文件
    • /opt/intel/openvino/deployment_tools/inference_engine/include
    • /opt/intel/openvino/deployment_tools/ngraph/include
    • /opt/intel/openvino/deployment_tools/inference_engine/samples/cpp/common/samples
    • /opt/intel/openvino/deployment_tools/inference_engine/lib/intel64
    • /opt/intel/openvino/deployment_tools/inference_engine/external/tbb/lib
    • /opt/intel/openvino/deployment_tools/ngraph/lib
    • 后面两个我只复制了libtbb.so.2和libngraph.so

3.C++代码

#include<string> 
#include<inference_engine.hpp> 
#include<samples/ocv_common.hpp>//matU8ToBlob
#include <ngraph/ngraph.hpp>
#include<time.h>
#include <sys/time.h>
#include <iostream>

using namespace InferenceEngine;

//将OpenCV Mat对象中的图像数据传给为InferenceEngine Blob对象
void frameToBlob(const cv::Mat& frame, InferRequest::Ptr& inferRequest, const std::string& inputName) {
   
   
	/* 从OpenCV Mat对象中拷贝图像数据到InferenceEngine 输入Blob对象 */
	Blob::Ptr frameBlob = inferRequest->GetBlob(inputName);
	matU8ToBlob<uint8_t>(frame, frameBlob);
}
//配置推理计算设备,IR文件路径,图片路径,阈值
std::string DEVICE = "MYRIAD";
std::string IR_FileNameNoExt = "/home/lwd/openvino/models/32/mobilenet-ssd";
std::string imageFile = "/home/lwd/openvino/mmgg.jpg";
float confidence_threshold = 0.07; 

int main(void) {
   
   
	// --------------------------- 1. 载入硬件插件(Plugin) --------------------------------------
	Core ie;
	std::cout << "1.Load Plugin..." << std::endl;     
	std::cout << ie.GetVersions(DEVICE) << std::endl; //输出插件版本信息

	// ------------------- 2. 读取IR文件 (.xml and .bin files) --------------------------
	std::cout << "2.Read IR File..." << std::endl;
	CNNNetwork network = ie.ReadNetwork(IR_FileNameNoExt+".xml");

	// -------------------- 3. 配置网络输入输出 -----------------------------------------
	std::cout << "3.Prepare Input and Output..." << std::endl;
	/** 获得神经网络的输入信息 **/
	InputsDataMap inputsInfo(network.getInputsInfo()
### OpenVINO 模型 GPU 部署教程 #### 准备工作 为了成功在GPU上部署OpenVINO模型,需确认已安装支持GPU的OpenVINO版本。对于特定版本兼容性问题,在某些情况下新旧版本间的API变化可能导致不兼容情况发生[^1]。 #### 安装依赖项 确保环境中已经正确设置了Intel® Distribution of OpenVINO toolkit,并且该环境能够访问到所需的CUDA和cuDNN库文件。这通常意味着需要先完成NVIDIA驱动程序以及对应版本CUDA Toolkit的安装。此外,还需验证系统中的Python解释器路径已被加入PATH变量以便后续操作顺利进行[^3]。 #### 转换并优化模型 利用Model Optimizer将原始框架下的预训练模型转换成Intermediate Representation (IR),这是OpenVINO特有的中间表示形式。通过命令行工具`mo.py`来执行此过程时可指定目标设备参数为GPU从而让生成后的网络结构更适合于图形处理器运行: ```bash python mo.py --input_model yolov5.onnx --data_type FP16 --output_dir ./ir_models/FP16 --model_name yolo_v5 --framework onnx --reverse_input_channels ``` 上述命令假设输入的是ONNX格式的YOLOv5模型文件,并将其保存至当前目录下名为`ir_models/FP16`的新建子文件夹内,同时指定了浮点精度为半精度浮点数(FP16)。 #### 编写推理代码 编写一段简单的Python脚本来加载刚刚创建好的IR文件并在选定的目标硬件(这里即为GPU)上执行预测任务。下面给出了一段基于官方文档修改而来的示范代码片段用于说明这一流程: ```python from openvino.runtime import Core, AsyncInferQueue import numpy as np import cv2 ie_core = Core() net = ie_core.read_model(model="path/to/yolov5.xml") # 加载XML定义的神经网路拓扑结构描述符 compiled_model = ie_core.compile_model(net, "GPU") image = cv2.imread('test.jpg') resized_image = cv2.resize(image, (640, 640)) input_tensor = np.expand_dims(resized_image.transpose(2, 0, 1), axis=0).astype(np.float32) infer_request = compiled_model.create_infer_request() result = infer_request.infer([input_tensor]) print(result) ``` 这段代码展示了如何读取图像数据、调整大小以匹配预期输入尺寸、准备张量作为输入传递给编译过的模型对象,最后调用`infer()`方法启动异步推理请求获取检测结果。
评论 5
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

刀么克瑟拉莫

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值