玩转OpenVINO之二:试运行mask_rcnn_demo

2024-03-15 22:48

本文主要是介绍玩转OpenVINO之二:试运行mask_rcnn_demo,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

调试open_model_zoo/mask_rcnn_demo

接前面一篇,编译好了DEMO,我们继续玩转OpenVINO,试一下open_model_zoo中的模型。

假设你要调试open_model_zoo中的某个模型(注意,下面的命令中,使用你自己想用的模型,我一般是好几个同时转换,完了随机测试的)。

先是要完成Optimizer工作,转换模型得到IR文件,

命令如下

python mo_tf.py --input_model 
E:/mask_rcnn_resnet50_atrous_coco_2018_01_28/frozen_inference_graph.pb
--tensorflow_use_custom_operations_config extensions/front/tf/mask_rcnn_support.json
--tensorflow_object_detection_api_pipeline_config E:/mask_rcnn_inception_resnet_v2_atrous_coco_2018_01_28/pipeline.config

喜欢用vscode调试的朋友可以看下面的launch.json文件,

{// Use IntelliSense to learn about possible attributes.// Hover to view descriptions of existing attributes.// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387"version": "0.2.0","configurations": [{"name": "Python: 当前文件","type": "python","request": "launch","program": "${file}","console": "integratedTerminal","justMyCode": false,"args": ["--input_model","E:\\mask_rcnn_resnet50_atrous_coco_2018_01_28\\frozen_inference_graph.pb", "--tensorflow_use_custom_operations_config","D:/devOpenVino/openvino_2020.3.194/deployment_tools/model_optimizer/extensions/front/tf/mask_rcnn_support.json","--tensorflow_object_detection_api_pipeline_config","E:/mask_rcnn_inception_resnet_v2_atrous_coco_2018_01_28/pipeline.config"]}]
}

如果你和我一样,没有指定输出文件名,转换完成后得到的都是frozen_inference_graph.bin和frozen_inference_graph.xml文件,要注意改成相应的模型文件名,否则多了就弄混了。

下面,我们开始用VS2019中的C++ Demo来测试这些模型。这些DEMO在我们上一讲《玩转OpenVINO_cpp samples的编译》中已经编译好了,现在拿来用。

添加路径一

如果你使用debug版本,那么环境变量path路径设置中添加

C:\IntelSWTools\openvino_2020.3.194\deployment_tools\inference_engine\bin\intel64\Debug

同时,把opencv_world430d.dll拷贝到该文件夹下面(不想拷贝的话,自己添加路径也行,反正就是让程序能找到这个dll文件)

如果是release版本,则添加

C:\IntelSWTools\openvino_2020.3.194\deployment_tools\inference_engine\bin\intel64\Release,

同时,把opencv_world430.dll拷贝到该文件夹下面

总的来说,这里有不少dll文件是intel ineference_engine要用到的。

添加路径二

还有一些路径也是必须添加的,

C:\IntelSWTools\openvino_2020.3.194\deployment_tools\inference_engine\external\tbb\bin

C:\IntelSWTools\openvino_2020.3.194\deployment_tools\ngraph\lib

调试运行

运行的项目名称是mask_rcnn_demo。

具体可参考:https://docs.openvinotoolkit.org/latest/_demos_mask_rcnn_demo_README.html

我把说明摘录一部分如下(注意:这里是linux下的格式,我后面说明中用到的是windows系统中的格式,在命令使用上有点小小的差异)

./mask_rcnn_demo -h
InferenceEngine:API version ............ <version>Build .................. <number>
mask_rcnn_demo [OPTION]
Options:-h                                Print a usage message.-i "<path>"                       Required. Path to a .bmp image.-m "<path>"                       Required. Path to an .xml file with a trained model.-l "<absolute_path>"            Required for CPU custom layers. Absolute path to a shared library with the kernels implementations.Or-c "<absolute_path>"            Required for GPU custom kernels. Absolute path to the .xml file with the kernels descriptions.-d "<device>"                     Optional. Specify the target device to infer on (the list of available devices is shown below). Use "-d HETERO:<comma-separated_devices_list>" format to specify HETERO plugin. The demo will look for a suitable plugin for a specified device (CPU by default)-detection_output_name "<string>" Optional. The name of detection output layer. Default value is "reshape_do_2d"-masks_name "<string>"            Optional. The name of masks layer. Default value is "masks"

查看帮助文档: mask_rcnn_demo --h

C:\IntelSWTools\openvino_2020.3.194\deployment_tools\open_model_zoo\demos\dev\intel64\Debug>mask_rcnn_demo --h
InferenceEngine: 00007FFCC7C49BC8mask_rcnn_demo [OPTION]
Options:-h                                Print a usage message.-i "<path>"                       Required. Path to a .bmp image.-m "<path>"                       Required. Path to an .xml file with a trained model.-l "<absolute_path>"            Required for CPU custom layers. Absolute path to a shared library with the kernels implementations.Or-c "<absolute_path>"            Required for GPU custom kernels. Absolute path to the .xml file with the kernels descriptions.-d "<device>"                     Optional. Specify the target device to infer on (the list of available devices is shown below). Use "-d HETERO:<comma-separated_devices_list>" format to specify HETERO plugin. The demo will look for a suitable plugin for a specified device (CPU by default)-detection_output_name "<string>" Optional. The name of detection output layer. Default value is "reshape_do_2d"-masks_name "<string>"            Optional. The name of masks layer. Default value is "masks"Available target devices:  CPU  GNA

这里图片必须是bmp格式。

如何输入图片地址呢?官方给出的命令如下,

./mask_rcnn_demo -i <path_to_image>/inputImage.bmp -m <path_to_model>/mask_rcnn_inception_resnet_v2_atrous_coco.xml

事实上,用命令行输入的方式, OpenVINO中由一个叫args_helper.hpp的文件来处理,其中一段的代码如下,

/**
* @brief This function find -i/--images key in input args
*        It's necessary to process multiple values for single key
* @return files updated vector of verified input files
*/
inline void parseInputFilesArguments(std::vector<std::string> &files) {std::vector<std::string> args = gflags::GetArgvs();bool readArguments = false;for (size_t i = 0; i < args.size(); i++) {if (args.at(i) == "-i" || args.at(i) == "--images") {readArguments = true;continue;}if (!readArguments) {continue;}if (args.at(i).c_str()[0] == '-') {break;}readInputFilesArguments(files, args.at(i));}
}

就是说,输入图片的格式为以下两者都可以,

-i  xyz.bmp  或者  --images <没仔细研究,这里是要文件夹吧还是xyz.bmp>

在VS2019中调试运行的话,直接把项目的调试参数设置为上述格式即可,例如,

-i J:\BigData\default.bmp -m E:\mask_rcnn_resnet50_atrous_coco_2018_01_28\frozen_inference_graph.xml

我用纯CPU试了一下这个DEBUG模式,超级慢啊!在Release模式下,随便找了一张图,大约也花了好几秒,感觉不出来哪里加快了。

当然,要琢磨的地方还很多,这里暂不涉及这些细节了,先玩起来吧。

 

 

这篇关于玩转OpenVINO之二:试运行mask_rcnn_demo的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

如何编写Linux PCIe设备驱动器 之二

如何编写Linux PCIe设备驱动器 之二 功能(capability)集功能(capability)APIs通过pci_bus_read_config完成功能存取功能APIs参数pos常量值PCI功能结构 PCI功能IDMSI功能电源功率管理功能 功能(capability)集 功能(capability)APIs int pcie_capability_read_wo

秒变高手:玩转CentOS 7软件更换的方法大全

在 CentOS 7 中更换软件源可以通过以下步骤完成。更换源可以加快软件包的下载速度,特别是当默认源速度较慢时。以下是详细步骤: 前言 为了帮助您解决在使用CentOS 7安装不了软件速度慢的问题,我们推出了这份由浪浪云赞助的教程——“CentOS7如何更换软件源加快下载速度”。 浪浪云,以他们卓越的弹性计算、云存储和网络服务受到广泛好评,他们的支持和帮助使得我们可以将最前沿的技术知识分

linux 内核提权总结(demo+exp分析) -- 任意读写(四)

hijack_modprobe_path篇 本文转自网络文章,内容均为非盈利,版权归原作者所有。 转载此文章仅为个人收藏,分享知识,如有侵权,马上删除。 原文作者:jmpcall 专栏地址:https://zhuanlan.kanxue.com/user-815036.htm     原理同hijack_prctl, 当用户执行错误格式的elf文件时内核调用call_usermod

linux 内核提权总结(demo+exp分析) -- 任意读写(三)

hijack_prctl篇 本文转自网络文章,内容均为非盈利,版权归原作者所有。 转载此文章仅为个人收藏,分享知识,如有侵权,马上删除。 原文作者:jmpcall 专栏地址:https://zhuanlan.kanxue.com/user-815036.htm   prctl函数: 用户态函数,可用于定制进程参数,非常适合和内核进行交互 用户态执行prctl函数后触发prctl系统

linux 内核提权总结(demo+exp分析) -- 任意读写(二)

hijack_vdso篇 本文转自网络文章,内容均为非盈利,版权归原作者所有。 转载此文章仅为个人收藏,分享知识,如有侵权,马上删除。 原文作者:jmpcall 专栏地址:https://zhuanlan.kanxue.com/user-815036.htm     vdso: 内核实现的一个动态库,存在于内核,然后映射到用户态空间,可由用户态直接调用 内核中的vdso如果被修改

linux 内核提权总结(demo+exp分析) -- 任意读写(一)

cred篇 本文转自网络文章,内容均为非盈利,版权归原作者所有。 转载此文章仅为个人收藏,分享知识,如有侵权,马上删除。 原文作者:jmpcall 专栏地址:https://zhuanlan.kanxue.com/user-815036.htm   每个线程在内核中都对应一个线程结构块thread_infothread_info中存在task_struct类型结构体 struct t

linux 内核提权总结(demo+exp分析) -- ROP(二)

ret2usr CR4篇 本文转自网络文章,内容均为非盈利,版权归原作者所有。 转载此文章仅为个人收藏,分享知识,如有侵权,马上删除。 原文作者:jmpcall 专栏地址:https://zhuanlan.kanxue.com/user-815036.htm   smep: smep是内核的一种保护措施, 使得内核不可执行用户态代码 内核通过CR4寄存器的第20位来控制smep,

linux 内核提权总结(demo+exp分析) -- ROP(一)

基础ROP篇(linux 5.0.21) 本文转自网络文章,内容均为非盈利,版权归原作者所有。 转载此文章仅为个人收藏,分享知识,如有侵权,马上删除。 原文作者:jmpcall 专栏地址:https://zhuanlan.kanxue.com/user-815036.htm   内核提权与用户态攻击的区别 攻击流程 用户态攻击: 执行 system("/bin/sh") 获得shel

实例demo理解面向接口思想

浅显的理解面向接口编程 Android开发的语言是java,至少目前是,所以理解面向接口的思想是有必要的。下面通过一个简单的例子来理解。具体的概括我也不知道怎么说。 例子: 现在我们要开发一个应用,模拟移动存储设备的读写,即计算机与U盘、MP3、移动硬盘等设备进行数据交换。已知要实现U盘、MP3播放器、移动硬盘三种移动存储设备,要求计算机能同这三种设备进行数据交换,并且以后可能会有新的第三方的

Pr 入门系列之二:导入与管理素材(下)

◆  ◆  ◆ 管理素材 导入素材后,项目面板中每一个媒体都只是原始素材的“链接”。 所以,视频编辑过程中一般情况下都不会破坏原始素材。 1、在不同视图模式下组织素材 项目面板提供了三大视图 View供选用:列表视图、图标视图以及自由格式视图。 A. 锁定 B. 列表视图 C. 图标视图 D. 自由格式视图 E. 缩放滑块 F. 排序图标 G. 自动匹配序列 H. 查找 I. 新建素材箱 J.