OpenVINO——配置与道路分割案例

前言

最近看到了一个深度学习库OpenVINO,专门用于Intel硬件上部署深度学习模型,其内置了非常非常多使用的预训练模型,比如道路分割、人脸提取、3D姿态估计等等。但是配置和调用有点小恶心,这里以道路分割为例,展示如何配置OpenVINO的环境,以及模型下载和调用

国际惯例,参考博客:

OpenVINO提供的所有预训练模型列表

OpenVINO的物体分割文档

OpenVino (二) Win10 python配置

配置

需要注册一个账号下载OpenVINO,按照官网给出的win10安装方法 一直各种下一步。因为我的python是用Anaconda安装的3.7.6版本,不知道为什么在最后一步的时候检测不到python,这里就是坑的开始。

各种下一步顺利,运行测试案例能成功,但是直接在jupyter中运行

from openvino.inference_engine import IECore,IENetwork

会报错:

---------------------------------------------------------------------------
ImportError                               Traceback (most recent call last)
<ipython-input-3-cebd727a66b4> in <module>
----> 1 from openvino.inference_engine import IECore,IENetworkC:\ProgramData\Anaconda3\lib\site-packages\openvino\inference_engine\__init__.py in <module>
----> 1 from .ie_api import *2 __all__ = ['IENetwork', "TensorDesc", "IECore", "Blob", "get_version"]3 __version__ = get_version()4 ImportError: DLL load failed: 找不到指定的模块。

但是如果你在终端,先执行官方文档说的:

cd C:\Program Files (x86)\IntelSWTools\openvino\bin\
setupvars.bat

再在这个终端启动python执行import就可以

python
from openvino.inference_engine import IECore,IENetwork

每次都要这样操作一遍,这明显就是环境变量只对当前终端生效了,整个电脑的环境并未改变,所以有两种方案解决:一是找到所有缺失的dll添加到PATH中,二是利用python在执行脚本之前加入环境变量,所幸第二个方案在github中有人提到过,issue在此,所以只需要在脚本最开头,加入

import os
os.environ['Path']+= 'C:\\Program Files (x86)\\IntelSWTools\\openvino_2020.4.287\\deployment_tools\\ngraph\\lib;' \'C:\\Program Files (x86)\\IntelSWTools\\openvino_2020.4.287\\deployment_tools\\inference_engine\\external\\tbb\\bin;'\'C:\\Program Files (x86)\\IntelSWTools\\openvino_2020.4.287\\deployment_tools\\inference_engine\\bin\\intel64\\Debug;'\'C:\\Program Files (x86)\\IntelSWTools\\openvino_2020.4.287\\deployment_tools\\inference_engine\\bin\\intel64\\Release;'\'C:\\Program Files (x86)\\IntelSWTools\\openvino_2020.4.287\\deployment_tools\\inference_engine\\external\\hddl\\bin;' \'C:\\Program Files (x86)\\IntelSWTools\\openvino_2020.4.287\\deployment_tools\\model_optimizer;'

然后

from openvino.inference_engine import IECore,IENetwork

就成功啦。

道路分割案例执行

模型获取

首先从官方文档上:

net = IENetwork(model=path_to_xml_file, weights=path_to_bin_file)

或者官方提供的案例,在安装路径

\IntelSWTools\openvino\deployment_tools\open_model_zoo\demos\python_demos\3d_segmentation_demo

中可以看到,OpenVINO的模型推断需要一个xmlbin,分别定义模型和权重,获取方法也在文档中写出来了:

You can download the pre-trained models using the OpenVINO Model Downloader or from https://download.01.org/opencv/.

这个Model Downloader的位置在安装路径

\IntelSWTools\openvino_2020.4.287\deployment_tools\tools\model_downloader

下可以找到,调用方法是

python downloader.py --name road-segmentation-adas-0001

后面这个模型名字可以从这个路径找到

\IntelSWTools\openvino_2020.4.287\deployment_tools\open_model_zoo\intel_models

其实就是OpenVINO官方modelzoo提供的预训练模型名字,直接把名字copy过来就会自动下载,下载目录就是downloader.py的所在目录。因为案例是道路分割的,所以取下载road-segmentation-adas-0001模型

模型调用

这一步就简单了,直接仿照官方例子去执行。

\IntelSWTools\openvino\deployment_tools\open_model_zoo\demos\python_demos\3d_segmentation_demo

这里就不写官方那么复杂了,就写一下必要步骤,首先是初始化模型:

model_xml = './OpenVINO_model/road-segmentation-adas-0001.xml'
model_bin = './OpenVINO_model/road-segmentation-adas-0001.bin'ie=IECore()
net = ie.read_network(model=model_xml,weights=model_bin)
exec_net = ie.load_network(network=net, device_name='CPU')

然后使用opencv读取图片做推断,但是要注意先获取一下输入输出

input_blob = next(iter(net.input_info))
out_blob = next(iter(net.outputs))
n,c,h,w = net.input_info[input_blob].input_data.shape

然后把图片resize一下,丢到网络推断

image = cv2.imread('./OpenVINO_model/img1.jpg')
image = cv2.resize(image,(w,h))
image = image.transpose((2,0,1)) # HWC to CHW
image = image[np.newaxis,...]
image.shape
#(1, 3, 512, 896)
res = exec_net.infer(inputs={input_blob:image})

最后获取输出以及可视化

res = res[out_blob]

从官方文档可以发现输出的维度分别代表什么意思

The output is a blob with the shape [B, C=4, H=512, W=896]. It can be treated as a four-channel feature map, where each channel is a probability of one of the classes: BG, road, curb, mark.

那么获取道路就是维度1。

import matplotlib.pyplot as plt
plt.imshow(image[0].transpose(1,2,0)/255.0)
plt.imshow(res[0,1,...], 'jet', interpolation='none', alpha=0.7)
plt.figure(figsize=(16,16))
plt.subplot(121)
plt.imshow(image[0].transpose(1,2,0)/255.0)
plt.axis('off')
plt.subplot(122)
plt.imshow(image[0].transpose(1,2,0)/255.0)
plt.imshow(res[0,1,...], 'jet', interpolation='none', alpha=0.7)
plt.axis('off')

在这里插入图片描述

后记

这里核心点就是:环境配置、模型下载、模型载入推断

官方有很多模型,建议多看文档就能玩很多有意思的demo。

完整的python脚本实现放在微信公众号的简介中描述的github中,有兴趣可以去找找,同时文章也同步到微信公众号中,有疑问或者兴趣欢迎公众号私信。

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/246570.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

图像颜色迁移《color transfer between images》

前言 前段时间&#xff0c;在深度学习领域不是有个比较火的方向叫风格迁移的嘛&#xff0c;对于我这种不喜欢深度学习那种不稳定结果的人来说&#xff0c;还是想看看传统图像处理领域有什么类似的技术&#xff0c;发现了一个颜色迁移的算法&#xff0c;很久前的论文了。 国际…

ColorSpace颜色空间简介

前言 如果看过之前的介绍的图像颜色迁移《color transfer between images》和颜色协调模型Color Harmoniztion就会发现&#xff0c;大部分图像处理算法虽然输入输出是RGB像素值&#xff0c;但是中间进行算法处理时很少直接更改RGB值&#xff0c;而是转换到其它空间&#xff0c…

Ogre共享骨骼与两种骨骼驱动方法

前言 最近业务中用到Ogre做基于3D关键点虚拟角色骨骼驱动&#xff0c;但是遇到两个问题&#xff1a; 身体、头、眼睛、衣服等mesh的骨骼是分开的&#xff0c;但是骨骼结构都是一样的&#xff0c;需要设置共享骨骼驱动的时候可以直接修改骨骼旋转量&#xff0c;或者将旋转量存…

仿射变换和透视变换

前言 在前面做换脸的博客中提到了使用仿射变换和透视变换将两张不同的人脸基于关键点进行对齐&#xff0c;保证一张人脸贴到另一张人脸时&#xff0c;大小完全一致&#xff1b;所以有必要理解一下这两个概念的区别&#xff0c;由于以实用性为目的&#xff0c;所以所有的图像算…

obj格式解析

前言 最近处理一些网格渲染的时候&#xff0c;需要解析Obj文件&#xff0c;从Free3D上随便找了个免费的人体obj模型解析测试一波 国际惯例&#xff0c;参考博客&#xff1a; 本文所使用的从Free3D下载的模型 .obj文件格式与.mtl文件格式 详解3D中的obj文件格式 3D中OBJ文…

Flask服务部署与简单内网穿透

前言 最近学习部署的时候&#xff0c;想到深度学习里面通常用的部署方法是flask做服务端&#xff0c;然后使用nginx做负载均衡&#xff0c;貌似也能做内网穿透。不过我不太懂负载均衡&#xff0c;只想利用本地电脑搭建一个简单的服务器&#xff0c;实现外部调用API服务的功能。…

OpenCV学习——轮廓检测

前言 轮廓检测是传统视觉中非常常用的功能&#xff0c;这里简单记录一下opencv中的轮廓检测算法使用方法&#xff0c;至于理论&#xff0c;后续有机会再去细品。 国际惯例&#xff1a; OpenCV官方的轮廓检测教程python版 OpenCV中的二值化方法教程 OpenCV轮廓层级官方文档…

RBF神经网络理论与实现

前言 最近发现有挺多人喜欢径向基函数(Radial Basis Function,RBF)神经网络&#xff0c;其实它就是将RBF作为神经网络层间的一种连接方式而已。这里做一个简单的描述和找了个代码解读。 之前也写过一篇&#xff0c;不过排版不好看&#xff0c;可以戳这里跳转 国际惯例&#x…

基于python和unity交互的卡通角色肢体和表情驱动(深度学习)

前言 最近看到了好多卡通角色的肢体驱动的东东&#xff0c;感觉是时候发挥一下读研时候学的东西了&#xff0c;而且虽然现在不炼丹了&#xff0c;但是还是得保持吃丹的技能。这个项目找了很多很多代码进行测试&#xff0c;最终集成了一个3D姿态估计和人脸关键点提取的代码。 …

OpenCV学习——形态学

前言 继续学习图像里面的形态学知识——结构元、腐蚀、膨胀、开运算、闭运算、击中/不击中变换。以及部分基本形态学算法&#xff0c;包括边界提取、空洞填充、连通分量的提取、凸壳、细化、粗化、骨架、裁剪、形态学重建。 其实就是对冈萨雷斯的《数字图像处理》中第9章节《…

径向基函数RBF三维网格变形

前言 之前写过径向基函数(RBF)神经网络做分类或者拟合。然后挖了个坑说在《Phase-Functioned Neural Networks for Character Control》里面提到了用于做地形编辑&#xff0c;所以这篇博客就是解析一下如何用RBF做网格编辑系统。 参考博客&#xff1a; Noe’s tutorial on d…

OBJ可视化——UV还原(修正)

前言 前面写过一篇obj格式解析的博客&#xff0c;但是这篇文章中可视化的工作是参考PRNet的源码进行的&#xff0c;后来细细思考了一下&#xff0c;有点问题&#xff0c;具体看下面。 问题来源 在PRNet源码的render.py中有个函数render_texture&#xff0c;是作者用于将uv展…

Unity中BVH骨骼动画驱动的可视化理论与实现

前言 找了很久使用BVH到unity中驱动骨骼动画的代码&#xff0c;但是都不是特别好用&#xff0c;自己以前写过&#xff0c;原理很简单&#xff0c;这里记录一下。 理论 初始姿态 在BVH或者其它骨骼动画中&#xff0c;一般涉及到三种姿势&#xff1a;A-pose&#xff0c;T-pos…

卡通驱动项目ThreeDPoseTracker——模型驱动解析

前言 之前解析过ThreeDPoseTracker这个项目中的深度学习模型&#xff0c;公众号有兄弟私信一些问题&#xff0c;我刚好对这个项目实现有兴趣&#xff0c;就分析一波源码&#xff0c;顺便把问题解答一下。 这个源码其实包括很多内容&#xff1a;3D姿态估计&#xff0c;坐标平滑…

卡通驱动项目ThreeDPoseTracker——关键点平滑方案解析

前言 之前对ThreeDPoseTracker的深度学习模型和unity中的驱动方法进行过解析&#xff0c;还有一个比较重要的就是从深度学习模型出来的3D关键点数据会有抖动&#xff0c;在ThreeDPoseTracker源码中有做两次平滑&#xff0c;一部分是卡尔曼滤波&#xff0c;还有一部分是低通滤波…

卡通角色表情驱动系列一

前言 分析完ThreeDPoseTracker来做卡通角色的身体驱动&#xff0c;接下来在卡通驱动领域还有一个是表情驱动。对这个真的是一窍不通啊&#xff0c;只能慢慢看论文了。 国际惯例&#xff0c;参考博客/论文&#xff1a; 《Landmark-guided deformation transfer of template f…

opencv相机标定和人头姿态估计案例

前言 头部驱动除了之前关注的表情驱动外&#xff0c;还有眼球驱动和头部方向驱动。本博客基于opencv官方文档和部分开源代码来研究如何基于人脸关键点获取头部的朝向。 国际惯例&#xff0c;参考博客&#xff1a; opencv:Camera Calibration and 3D Reconstruction opencv:…

卡通角色表情驱动系列二

前言 之前介绍了使用传统算法求解BS系数的表情驱动方法&#xff0c;其中提到过的三种方法之一是基于网格形变迁移做的&#xff0c;那么这篇文章就是对《Deformation Transfer for Triangle Meshes》做表情驱动的解析。 国际惯例&#xff0c;参考博客&#xff1a; 论文原文《…

UE自带重定向原理

UE自带重定向方法验证 核心源码在VS的解决方案中的位置&#xff1a; UE4\Source\Developer\AssetTools\Private\AssetTypeActions\AnimSequence.cpp中第3237行RemapTracksToNewSkeleton函数 跳转方法 AssetTypeActions_AnimationAsset.cpp的RetargetNonSkeletonAnimationHa…

【caffe-Windows】caffe+VS2013+Windows无GPU快速配置教程

前言 首先来一波地址&#xff1a; happynear大神的第三方caffe&#xff1a;http://blog.csdn.net/happynear/article/details/45372231 Neil Z大神的第三方caffe&#xff1a;https://initialneil.wordpress.com/2015/01/11/build-caffe-in-windows-with-visual-studio-2013-…