• win10 OpenVINO2022版


    OpenVINO改版之后会出现opencv等插件需要自己重新下载还有就是intel文档有点小乱小多等的问题,但是大体上使用官方文档是没啥问题的

    安装

    先上官方文档

    (1)安装Dev Tools

    虽然但是我还是觉得有很多细节
    在这里插入图片描述
    不要直接就,最好是能点进去浅蓝色的install instruction按照指南安装
    其实主要就是多了下面这三句:
    ①创建并激活了一个openvino_env的虚拟环境
    ②更新了pip

    python -m venv openvino_env
    openvino_env\Scripts\activate
    python -m pip install --upgrade pip
    
    • 1
    • 2
    • 3

    (2)runtime安装

    大体步骤根据Install and Configure Intel® Distribution of OpenVINO™ toolkit for Windows 10
    在这里插入图片描述
    注意一下最好是选择Offline Installer(别问为什么,问就是pip转战过来的)

    权限问题

    安装opencv的openvino时候出现了权限问题,升级到-user也没用

    报错大概是:在此系统上禁止运行脚本…
    此时要用管理员权限修改策略
    在这里插入图片描述

    使用

    官方给出的指导文档还是很详细的。

    在python中使用

    具体的API看这篇!!!

    我的直观感觉是常规的api最好还是得熟悉

    1. 初始化
    from openvino.runtime import Core
    ie = Core()
    
    • 1
    • 2
    1. 可使用设备
    ie.get_property(device_name=device, name="FULL_DEVICE_NAME")
    
    
    • 1
    • 2
    1. 读入模型(IR和onnx分别读入后缀名的模型)
      读入的都得是和模型结构有关的:
      IR:xml文件
      onnx:onnx文件
    onnx_model_path = "model/segmentation.onnx"
    model_onnx = ie.read_model(model=onnx_model_path)
    compiled_model_onnx = ie.compile_model(model=model_onnx, device_name="CPU")
    
    
    • 1
    • 2
    • 3
    • 4

    两者在读入模型上的的区别仅在于模型后缀名

    1. 获取对于只有一个输入层或者输出层的层名称
    input_layer = next(iter(model.inputs))
    
    • 1

    从而可以获得该层的element_type,shape信息

    1. 使用模型进行推理
      维度修改:
    import numpy as np
    
    input_data = np.expand_dims(np.transpose(resized_image, (2, 0, 1)), 0).astype(np.float32)
    input_data.shape
    
    • 1
    • 2
    • 3
    • 4
    1. onnx模型转换
      模型转化的完整文档可供查询
      (1)将 PyTorch model 转换成 ONNX
      因为export运行模型,所以我们需要提供一个输入张量x。只要是正确的类型和大小,其中的值就可以是随机的。
    if not onnx_path.exists():
        dummy_input = torch.randn(1, 3, IMAGE_HEIGHT, IMAGE_WIDTH)
    
        # For the Fastseg model, setting do_constant_folding to False is required
        # for PyTorch>1.5.1
        torch.onnx.export(
            model,
            dummy_input,
            onnx_path,
            opset_version=11,
            do_constant_folding=False,
        )
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    (2)使用模型优化器将onnx模型转换成IR模型
    //todo:模型优化器的详细文档还没研究!
    step1:构建模型优化器的指令

    mo_command = f"""mo
                     --input_model "{onnx_path}"
                     --input_shape "[1,3, {IMAGE_HEIGHT}, {IMAGE_WIDTH}]"
                     --mean_values="[123.675, 116.28 , 103.53]"
                     --scale_values="[58.395, 57.12 , 57.375]"
                     --data_type FP16
                     --output_dir "{model_path.parent}"
                     """
    mo_command = " ".join(mo_command.split())
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    step2:转化

    if not ir_path.exists():
        print("Exporting ONNX model to IR... This may take a few minutes.")
        mo_result = %sx $mo_command
        print("\n".join(mo_result))
    else:
        print(f"IR model {ir_path} already exists.")
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    1. 模型推理之前的预处理操作

    其他了解应该就可以了吧哈哈哈哈哈哈哈哈哈哈!!!!
    openvino模型基准测试工具

    有一个操作是我以前没注意到的:

    # 替换目录最后一个部分的文件名并返回一个新的路径
    new_path2 = example_path.with_suffix('.txt')
    
    • 1
    • 2

    with_suffix会返回一个新的路径

  • 相关阅读:
    文字识别的
    Apipost - 自动化测试
    英语学习笔记
    如何获取论文资源?
    测试用例的书写方式以及测试模板大全
    基于JavaSwing开发企业进销存管理系统 中药材进销存管理+论文 毕业设计源码
    一文讲解ARMv8内存属性与类型(Memory types and attributes)简介
    72. 编辑距离
    【c++11】cpp实现模板函数的声明与定义分离
    【其他专题】好用的截图(包括动图gif)软件分享
  • 原文地址:https://blog.csdn.net/weixin_50862344/article/details/126423343