本文主要是介绍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
发布模型所依据的许可的URLprecisions
模型可以转为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的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!