当前位置: 首页 > news >正文

OpenVINO2022.1+open_model_zoo例程的编译与使用

(一)OpenVINO

项目地址

GitHub - openvinotoolkit/openvino: OpenVINO™ Toolkit repository

最新版OpenVINO-2022.1的下载地址,

https://github.com/openvinotoolkit/openvino/archive/refs/tags/2022.1.0.dev20220316.tar.gz

下载后解压,比如我的解压目录是

D:/OpenVINO_dev20220316/

后面我都会基于这个目录进行讲解。

编译OpenVINO的samples

OpenCV_DIR和OpenVINO_DIR的地址如下图所示,其中OpenCV455是我编译的地址,可以参考

Windows10中OpenCV-4.3.0的快速编译与安装_高精度计算机视觉的博客-CSDN博客

方法大同小异,不过这里的版本是4.5.5, 

(二)open_model_zoo

编译open_model_zoo的demos

配置如下图所示,细节就不再解释了,这里假设你已经熟练使用cmake-gui,

 下载models

在这里有一个下载脚本,

D:\open_model_zoo\tools\model_tools\downloader.py

你可以通过运行这个脚本下载模型文件,

例如,

python  downloader.py --all

其中这个"--all"这个参数可以用下面的参数代替,比如

"--print_all", "--all", "--name" or "--list", etc.

当然,通常我们并不需要把这些模型全部下载下来,那太占空间了,通常你可以在--list之后或到下面的目录

D:\open_model_zoo\models (要下载的模型的信息在这里可以找)

找到你想要的模型,然后通过下面的指令下载,比如我要下载OCR的模型,

python  downloader.py --name text-recognition--0016

具体的使用方法你可以参考官网,

https://docs.openvino.ai/2021.3/omz_tools_downloader.html

有人翻译成了中文,原文在这里,

OpenVINO——2. OpenVINO Model Downloader_吨吨不打野的博客-CSDN博客

其他的说明都可以类似地在官网上找到,不再说明。

下面我摘录这些主要工具的用法。

模型下载(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

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

模型转换(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

模型量化器(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的配置文件,以便您可以检查它。有关脚本接受的其他选项的信息,请参阅“共享选项”部分。

模型信息转储器(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

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

相关文章:

  • OpenCV cv::plugin::impl::DynamicLib::libraryLoad load ..opencv_core_parallel_tbb45 =>FAILED
  • OpenVINO之text_detection_demo
  • Paddle在windows10+vs2019上的源码编译(失败)
  • Tesseract-OCR试运行
  • Tesseract-OCR在Windows10(VS2019+vcpkg)平台上的编译与使用
  • Tesseract-OCR:在Windows10(VS2019+SW)平台上的编译与使用
  • Tesseract-OCR在Ubuntu20.04平台上使用
  • ROS2 Error: Could not find a package configuration file provided by “turtlebot3_msgs“
  • ROS2 + colcon build 常见的一些报错
  • ROS2进阶:安装与初体验(附choco介绍)
  • ROS2进阶:colcon的初步使用--‘colcon‘ is not recognized
  • ROS2进阶:基本指令与RVIZ2介绍
  • Windows控制台cmd默认代码页修改的办法【GBK、UTF-8】
  • ROS2 ERROR: qt.qpa.plugin: Could not find the Qt platform plugin “windows“ in
  • ROS2 Warning: RosPluginProvider._parse_plugin_xml() plugin file rqt_gui_cpp/plugin.xml not found
  • 2019年如何成为全栈工程师?
  • android 一些 utils
  • CSS 三角实现
  • exports和module.exports
  • Git学习与使用心得(1)—— 初始化
  • JavaScript HTML DOM
  • Lsb图片隐写
  • Octave 入门
  • SpiderData 2019年2月25日 DApp数据排行榜
  • Web Storage相关
  • 来,膜拜下android roadmap,强大的执行力
  • 如何设计一个比特币钱包服务
  • 这几个编码小技巧将令你 PHP 代码更加简洁
  • Oracle Portal 11g Diagnostics using Remote Diagnostic Agent (RDA) [ID 1059805.
  • python最赚钱的4个方向,你最心动的是哪个?
  • ​​​​​​​sokit v1.3抓手机应用socket数据包: Socket是传输控制层协议,WebSocket是应用层协议。
  • ​人工智能书单(数学基础篇)
  • #NOIP 2014#Day.2 T3 解方程
  • #QT(一种朴素的计算器实现方法)
  • #Z2294. 打印树的直径
  • (16)UiBot:智能化软件机器人(以头歌抓取课程数据为例)
  • (2015)JS ES6 必知的十个 特性
  • (Matlab)遗传算法优化的BP神经网络实现回归预测
  • (附源码)springboot 房产中介系统 毕业设计 312341
  • (理论篇)httpmoudle和httphandler一览
  • (推荐)叮当——中文语音对话机器人
  • (转) Android中ViewStub组件使用
  • .NET 4.0中的泛型协变和反变
  • .net core 源码_ASP.NET Core之Identity源码学习
  • .net中生成excel后调整宽度
  • ::什么意思
  • @staticmethod和@classmethod的作用与区别
  • [C#C++]类CLASS
  • [EFI]Dell Inspiron 15 5567 电脑 Hackintosh 黑苹果efi引导文件
  • [EMWIN]FRAMEWIN 与 WINDOW 的使用注意
  • [HackMyVM]靶场Boxing
  • [Interview]Java 面试宝典系列之 Java 多线程
  • [JDBC-1] JDBC Base Template
  • [Matlab有限元分析] 2.杆单元有限元分析
  • [python] logging输出到控制台(标准输出)