OpenVINO——2. OpenVINO Model Downloader

2023-10-20 20:50
文章标签 model openvino downloader

本文主要是介绍OpenVINO——2. OpenVINO Model Downloader,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

文章目录

  • 1 安装和介绍
    • 1.1 模型下载(downloader)器用法
    • 1.2 模型转换(converter)用法
    • 1.3 模型量化器(quantizer)用法
    • 1.4 模型信息转储器(dumper)
    • 1.5 Shared options 共享选项

1 安装和介绍

说明文档:https://github.com/openvinotoolkit/open_model_zoo/blob/master/tools/downloader/README.md
文件位置及目录详情:
在这里插入图片描述

该目录包含脚本,这些脚本根据模型目录中的配置文件自动执行某些与模型相关的任务。

downloader.py(模型下载器)从在线资源下载模型文件,并在必要时对其进行修补,以使它们在Model Optimizer中更可用;

converter.py(模型转换器)使用模型优化器将非推理引擎IR格式的模型转换为该格式。

Quantizer.py(模型量化器)使用训练后优化工具包Post-Training Optimization Toolkit()将IR格式的全精度模型量化为低精度版本。

info_dumper.py(模型信息转储器)以稳定的机器可读格式打印有关模型的信息。

请使用这些工具,而不是尝试直接解析配置文件。 它们的格式未记录,在将来的版本中可能会以不兼容的方式被修改。

根据OpenVINO 模型测试-模型从下载到转换到推理,其实一般只需要执行模型下载和模型转换两个步骤,模型量化和信息转储这两个步骤不是很常用。

要求

  • Python3.5.2+
  • 使用以下命令安装model downloader tools的依赖
python3 -mpip install --user -r ./requirements.in
注意:
在我的windows环境下,python3是无法识别的命令,要换成
python -mpip install --user -r ./requirements.in

一般上面的安装步骤正确的话,这里需要的包应该都是已经安装过的,requirement already satisfied。

注意:考虑到模型转换,也是需要安装用于模型优化器的OpenVINO toolkit工具以及相关的依赖库。参考Openvino toolkit document

如果使用来自Pytorch或者Caffe2框架的模型,那么也需要使用中间转换变为ONNX格式。可以安装额外的依赖来使用自动转换,如下

pytorch
python3 -mpip install --user -r ./requirements-pytorch.in
caffe
python3 -mpip install --user -r ./requirements-caffe2.in

如果在macos的python3.5.x环境上使用模型下载器,可能会报以下错误:
python3 -mpip install --user -r ./requirements-caffe2.in
这个问题可以通过执行以下命令解决:(或者直接升级到python3.6及以后)

python3 -mpip install --user 'requests[security]'

1.1 模型下载(downloader)器用法

  • --all基本使用:(--all参数表示直接下载所有的模型,如果只想下载所有模型的子集,可以去看 Shared options这部分)
./downloader.py --all
  • -o/--output_dir:(默认情况下,下载的模型会放到当前目录下,可以使用这个参数放到别的目录)
./downloader.py --all --output_dir my/download/directory
  • --precisions 可以使用这个参数明确下载模型的权重文件的数据精度(小数点后几位)
./downloader.py --name face-detection-retail-0004 --precisions FP16,FP16-INT8
  • --num_attempts默认情况下,脚本只会尝试下载每个文件一次,如果想要改变尝试下载的次数来增加脚本的鲁棒性可以使用这个参数去修改尝试下载的次数。
./downloader.py --all --num_attempts 5 # attempt each download five times
  • --cache-dir可以使用这个参数来明确规定脚本所使用的缓存目录,会把每个下载文件的一个副本放在缓存文件中,这样如果文件已经下载过,存在于缓存中,就会从缓存中读取而不是重新下载。(cache文件的格式和Open Model Zoo以后的版本都是兼容的,所以可以使用一个确定的缓存目录,避免以后重新下载)
./downloader.py --all --cache_dir my/cache/directory
  • --progress_format默认情况下,脚本输出信息是非结构化的,如果想要让脚本输出的程序信息看起来更清晰,可以使用这个参数
./downloader.py --all --progress_format=json

当被设置为json格式时,脚本的标准输出就变为一个机器可读的进度报告,这一个格式的具体说明在json progress report format部分,这个选项不会影响错误和警告信息,错误和警告信息仍然会以人类可读的格式打印到标准错误流中。
也可以设置为text格式显式的表明使用默认的文本格式

  • -j/--jobs:这个参数可以让脚本同时下载多个模型
./downloader.py --all -j8 # download up to 8 models at a time

其余还有一些是共享选项,这几个文件都有的,参考共享选项部分

1.2 模型转换(converter)用法

  • --all:会把所有模型转换为推理引擎可识别的IR模式。原始格式的模型会被忽略,Pytorch和Caffe2格式的模型将会被首先转换为ONNX格式。如果只需要转换一部分模型,可以使用其他过滤参数替换--all
./converter.py --all
  • -d/--download_dir如果想要改变下载目录,用这个参数(默认情况下:要确保当前目录是模型下载器下载模型文件所在的根目录)
./converter.py --all --download_dir my/download/directory
  • -o/--output_dir 默认情况下,转换后的模型会放在下载目录,可以使用这个参数放到别的目录去
./converter.py --all --output_dir my/output/directory

中间格式的模型也会被放在这个目录

  • --precisions默认情况下,脚本会产生所有转换支持的精度的模型,如果只想生成特定精度的一种模型,使用这个参数
./converter.py --all --precisions=FP16

如果某个模型不支持这个特定的精度,那么这个模型就会被忽略

  • --mo脚本会尝试根据OpenVINO toolkit的setupvars.sh/setupvars.bat脚本中设置的环境变量去寻找模型优化器,可以使用这个参数来修改模型优化器的搜索位置
./converter.py --all --mo my/openvino/path/model_optimizer/mo.py
  • --add_mo_arg使用这个参数,可以为模型配置的特定模型添加额外的模型优化器参数,这个选项可以重复使用多次来添加不同的参数
./converter.py --name=caffenet --add_mo_arg=--reverse_input_channels --add_mo_arg=--silent
  • -p/--python默认情况下,脚本使用运行这个脚本本身的python执行器来运行模型优化器,如果想使用不同的python执行器,使用这个选项。
./converter.py --all --python my/python
  • -j/--jobs 脚本可以同时执行多个转换命令,使用这个选项。
./converter.py --all -j8 # run up to 8 commands at a time

这里这个选项的参数要么是 同时执行命令的最大数量,要么是 auto,如果是auto,则就是系统CPUs的个数。默认情况下,所有的命令都是顺序执行的

  • --dry_run脚本可以在不进行运行的情况下打印出转换命令
./converter.py --all --dry_run

1.3 模型量化器(quantizer)用法

在运行模型量化器之前,必须准备一个量化过程中需要使用的数据集文件夹。在下面的内容中,这个文件夹/目录表示为 <DATASET_DIR>,可以在 Dataset Preparation Guide这个页面找到关于如何准备数据的详细说明信息。

这个脚本的基础用法如下

  • --all 这个选项会量化所有支持的模型,不支持的就会被忽略
./quantizer.py --all --dataset_dir <DATASET_DIR>

也可以使用其他选项来只量化一部分模型,参考 共享选项 部分

  • --model_dir脚本执行的当前目录必须是模型转换器创建的模型文件的根目录,想要改变,就用这个选项
./quantizer.py --all --dataset_dir <DATASET_DIR> --model_dir my/model/directory
  • -o/--output_dir 默认情况下,量化过的模型会被存储在相同的模型目录下,可以使用这个选项修改保存位置
./quantizer.py --all --dataset_dir <DATASET_DIR> --output_dir my/output/directory
  • --precisions默认情况下,脚本会产生模型所支持的所有精度的量化结果,如果只想生成特定精度的模型,可以使用这个选项
./quantizer.py --all --dataset_dir <DATASET_DIR> --precisions=FP16-INT8
  • --pot脚本会尝试根据OpenVINO toolkit的setupvars.sh/setupvars.bat脚本中设置的环境变量去寻找Post-Training Optimization Toolkit,可以使用这个参数来修改搜索位置
./quantizer.py --all --dataset_dir <DATASET_DIR> --pot my/openvino/path/post_training_optimization_toolkit/main.py
  • -p/--python默认情况下,脚本会使用运行这个脚本的python执行器去运行Post-Training Optimization Toolkit,如果想使用不同的python执行器,可以使用这个选项。
./quantizer.py --all --dataset_dir <DATASET_DIR> --python my/python
  • --target_device支持为Post-Training Optimization Toolkit指定要为之优化的目标设备,使用这个选项。
./quantizer.py --all --dataset_dir <DATASET_DIR> --target_device VPU

支持的设备名称是由Post-Training Optimization Toolkit配置文件中的 target_device 。如果没有明确这个选项,就会采用默认的配置

  • --dry_run这个脚本可以不经运行就打印出量化命令的信息
./quantizer.py --all --dataset_dir <DATASET_DIR> --dry_run

指定此选项后,仍将创建Post-Training Optimization Toolkit的配置文件,以便您可以检查它。有关脚本接受的其他选项的信息,请参阅“共享选项”部分。

1.4 模型信息转储器(dumper)

这个脚本的基本用法:

  • all打印出所有模型的标准输出信息( standard output information)
./info_dumper.py --all

此外,脚本接受的选项就是Share options部分的选项。
脚本的输出是一个json数组,其中每个元素都是一个描述单个模型的json对象,每个这样的对象包含以下键值:

  • name模型的标识符,从选项 --name获取
  • description模型的文本描述,段落之间由换行符分割
  • framework用来表示模型是从哪里(哪种框架)下载的字符串,当前支持的值有:dldt (Inference Engine IR), caffe, caffe2, mxnet, onnx, pytorch 以及tf (TensorFlow)。其他的值可能以后会添加。
  • license_url发布模型所依据的许可的URL
  • precisions模型可以转为IR文件所支持的精度列表。对于下载的非IR格式的模型,这些是模型可以转换为IR文件所支持的精度,目前支持的值有:
    • FP16
    • FP16-INT1
    • FP16-INT8
    • FP32
    • FP32-INT1
    • FP32-INT8
      其他的值未来可能会支持吧
  • subdirectory输出内容的子目录,下载或者转换的文件会被放到这里。
  • task_type用于定义模型所执行的任务类型的字符串,目前可能的值有:
    • action_recognition, classification, detection, face_recognition, feature_extraction, head_pose_estimation, human_pose_estimation image_inpainting, image_processing, instance_segmentation, machine_translation, monocular_depth_estimation, object_attributes, optical_character_recognition, question_answering, semantic_segmentation, sound_classification, speech_recognition, style_transfer, token_recognition

1.5 Shared options 共享选项

有些选项是所有脚本都支持的

  • -h/--help用于打印帮助信息
./TOOL.py --help

有几个互斥的过滤选项可以用于选择脚本要处理的模型

  • --all选择所有模型
./TOOL.py --all
  • --name 接受一个逗号分隔的模式列表,选择的模型至少要满足其中一个模式,模式可以包含shell风格的通配符。(可以直接写模型的名称)
./TOOL.py --name 'mtcnn-p,densenet-*'
  • --list接受一个指向包含模式列表的文件的路径,同样也是选择至少满足一个模式的模型
./TOOL.py --list my.lst

注意:这个文件必须是每行一个模式,模式语法和--name选项的相同,空行和#开头的注释会被忽略

  • all
mtcnn-p
densenet-* # get all DenseNet variants

如果想看一下可用的模型,可以使用--print_all选项,使用这个选项后,脚本会打印出配置文件中定义的所有模型名称并退出。

$ ./TOOL.py --print_all
action-recognition-0001-decoder
action-recognition-0001-encoder
age-gender-recognition-retail-0013
driver-action-recognition-adas-0002-decoder
driver-action-recognition-adas-0002-encoder
emotions-recognition-retail-0003
face-detection-adas-0001
face-detection-retail-0004
face-detection-retail-0005
[...]

上述这些互斥的过滤选项和--print_all至少要有一项。

  • OpenVINO 模型测试-模型从下载到转换到推理

这篇关于OpenVINO——2. OpenVINO Model Downloader的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/249646

相关文章

MVC(Model-View-Controller)和MVVM(Model-View-ViewModel)

1、MVC MVC(Model-View-Controller) 是一种常用的架构模式,用于分离应用程序的逻辑、数据和展示。它通过三个核心组件(模型、视图和控制器)将应用程序的业务逻辑与用户界面隔离,促进代码的可维护性、可扩展性和模块化。在 MVC 模式中,各组件可以与多种设计模式结合使用,以增强灵活性和可维护性。以下是 MVC 各组件与常见设计模式的关系和作用: 1. Model(模型)

diffusion model 合集

diffusion model 整理 DDPM: 前向一步到位,从数据集里的图片加噪声,根据随机到的 t t t 决定混合的比例,反向要慢慢迭代,DDPM是用了1000步迭代。模型的输入是带噪声图和 t,t 先生成embedding后,用通道和的方式加到每一层中间去: 训练过程是对每个样本分配一个随机的t,采样一个高斯噪声 ϵ \epsilon ϵ,然后根据 t 对图片和噪声进行混合,将加噪

Segment Anything Model(SAM)中的Adapter是什么?

在META团队发布的Segment Anything Model (SAM) 中,Adapter 是一种用于提升模型在特定任务或领域上的性能的机制。具体来说,SAM 是一个通用的分割模型,能够处理多种不同类型的图像分割任务,而 Adapter 的引入是为了更好地让模型适应不同的任务需求。 Adapter 的主要功能是: 模块化设计:Adapter 是一种小规模的、可插拔的网络模块,可以在不改

Vue学习:v-model绑定文本框、单选按钮、下拉菜单、复选框等

v-model指令可以在组件上使用以实现双向绑定,之前学习过v-model绑定文本框和下拉菜单,今天把表单的几个控件单选按钮radio、复选框checkbox、多行文本框textarea都试着绑定了一下。 一、单行文本框和多行文本框 <p>1.单行文本框</p>用户名:<input type="text" v-model="inputMessage"><p>您的用户名是:{{inputMe

Java memory model(JMM)的理解

总结:JMM 是一种规范,目的是解决由于多线程通过共享内存进行通信时,存在的本地内存数据不一致、编译器会对代码指令重排序、处理器会对代码乱序执行等带来的问题。目的是保证并发编程场景中的原子性、可见性、有序性。 总结的很精辟! 感谢Hollis总结

使用RMMapper将.plist文件转成model模型

在项目开发中, 有时我们会用到.plist, 这个时候可能会使用这个plist,拿出来用model去绑定它来对应项目MVC, 我们可以引入RMMapper,废话不多说,看代码先。 在git clone RMMapper,操作不多说了哈, 不会的可以私信我,会详细给你支招。 一、创建一个类TaskPlist基于NSObject, 代码如下: .h #import <Foundation

在Yolov8中model.export后self.export=false问题(记录)

遇到一个问题是自己创建了新的Detect检测头,但是在导出模型时,想要修改输出格式,在yolo中可以通过if self.export:来修改网络的返回值格式 当使用model.export()导出时,理论上会自动将export设置为True 但是在实际中发现export=false,于是通过调试发现在ultralytics/engine/exporter.py中 for m in model

class 5: vue.js 3 v-model和表单输入

v-model是Vue.js 3中用于实现双向绑定的重要指令,双向绑定就是对于数据的修改会映射回UI组件上,同时对于UI组件上数据的变更也会映射回底层数据当中,v-model会根据控件的类型自动选取正确的方法来更新元素v-model底层实现的原理实际上是v-bind和v-on的结合,首先使用v-bind为value属性绑定变量;然后使用v-on绑定input事件,并在事件回调中重新为value属性

强化学习实践(一):Model Based 环境准备

强化学习实践(一):Model Based 环境准备 代码项目地址 代码 这里是Model Based的环境构建,原型是赵老师课上的Grid World import numpy as npfrom typing import Tuplefrom environment.utils import Utilsfrom environment.enums import Rewa

SAM 2: The next generation of Meta Segment Anything Model for videos and images

https://ai.meta.com/blog/segment-anything-2/  https://github.com/facebookresearch/segment-anything-2  https://zhuanlan.zhihu.com/p/712068482