OpenVINO 是英特尔开发的一款功能强大的深度学习工具包,可实现跨多个硬件平台的优化神经网络推理。在本文中,我们讨论了 OpenVINO 的特性和优势,以及它如何与领先的计算机视觉平台 Viso Suite 集成,以构建和交付可扩展的应用程序。
🇶🇦 什么是 OpenVINO?
OpenVINO 是英特尔开发的跨平台深度学习工具包。该名称代表“开放式视觉推理和神经网络优化”。OpenVINO 专注于通过面向英特尔硬件平台的一次写入、随处部署的方法优化神经网络推理。
该工具包在 Apache License 2.0 版下免费使用,有两个版本:
● OpenVINO 工具包,由开源社区支持
● Intel Distribution of OpenVINO toolkit,由 Intel 支持。
使用 OpenVINO 工具包,软件开发人员可以通过与应用逻辑集成的高级 C++ 推理引擎 API选择模型并部署预训练的深度学习模型(YOLO v3、ResNet 50等)。
因此,OpenVINO 提供集成功能来加快应用程序和解决方案的开发,这些应用程序和解决方案使用计算机视觉、自动语音识别、自然语言处理(NLP)、推荐系统、机器学习等解决多项任务。
🚢 安装 OpenVINO
- 安装地址: https://www.intel.com/content/www/us/en/developer/tools/openvino-toolkit/download.html?VERSION=v_2022_3_1&ENVIRONMENT=RUNTIME&OP_SYSTEM=WINDOWS&DISTRIBUTION=ARCHIVE
- 这里我下载的是
2022.3.1 Runtime OpenVINO Archives
版本. - 然后拷贝到
C:\Program Files (x86)\Intel
下。 - 使用 python 安装
openvino-env
(别的根据需求来安装),详细安装步骤可参考: https://docs.openvino.ai/2023.2/openvino_docs_install_guides_installing_openvino_from_archive_windows.htmlpip install -r tools\requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple pip install -r tools\requirements_onnx.txt -i https://pypi.tuna.tsinghua.edu.cn/simple
- 使用
mo -h
来验证是否安装正确。
🚀 Export Model
- pt convert to onnx
python export.py --weights ./weights/yolov5s.pt --img 640 --batch 1 --include onnx
- onnx convert to openvino
# 这里我将归一化参数写入模型中了, 这样前处理可以不用做归一化处理了 # data_type 32: FP32 16: FP16 mo --input_model ./weights/yolov5s.onnx --output_dir ./weights --data_type FP16 --mean_values [0,0,0] --scale_values [255,255,255]
- pt convert to openvino
python export.py --weights ./weights/yolov5s.pt --img 640 --batch 1 --include openvino
🍋 Yolov5
-
获取当前支持的所有的AI硬件推理设备, 如果输出没有设备,则可尝试更新显卡驱动. https://www.intel.com/content/www/us/en/support/products/80939/graphics.html
#include <openvino/openvino.hpp> #include <iostream> #include <vector> int main() { ov::Core ie; //获取当前支持的所有的AI硬件推理设备 std::vector<std::string> devices = ie.get_available_devices(); for (int i = 0; i < devices.size(); i++) { std::cout << devices[i] << std::endl; } system("pause"); return 0; } // ----------------------- output ----------------------- CPU GNA GPU
-
推理
- 代码来自这位博主, 详细过程可参考博主博客 https://blog.csdn.net/weixin_45650500/article/details/134455535
- 如果感觉初始化时间等待过长,可尝试添加缓存,则第一次加载过后,再次初始化会很快.
core.set_property(ov::cache_dir("cache"));
#include <opencv2/dnn.hpp> #include <openvino/openvino.hpp> #include <opencv2/opencv.hpp> using namespace std; const float SCORE_THRESHOLD = 0.2; const float NMS_THRESHOLD = 0.4; const float CONFIDENCE_THRESHOLD = 0.4 struct Detection { int class_id; float confidence; cv::Rect box