OpenVINO——2. OpenVINO Model Downloader

OpenVINO 同时被 2 个专栏收录
3 篇文章 0 订阅
30 篇文章 2 订阅

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至少要有一项。

  • 2
    点赞
  • 0
    评论
  • 7
    收藏
  • 打赏
    打赏
  • 扫一扫,分享海报

©️2021 CSDN 皮肤主题: 技术黑板 设计师:CSDN官方博客 返回首页

打赏作者

吨吨不打野

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

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

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

打赏作者

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

抵扣说明:

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

余额充值