OpenCV之DNN模块,实现深度学习网络的推理加速

本文介绍了OpenCV的DNN模块,它支持多种深度学习框架的推理功能,提供CPU和GPU加速。文章详细讲解了深度学习的关键概念、OpenCV DNN模块的架构、内存复用和层融合的优化技术,以及团队在OpenCL加速和Vulkan后端开发上的工作。此外,还展示了如何利用DNN模块进行对象检测的应用实例。
摘要由CSDN通过智能技术生成

OpenCV是计算机视觉领域使用最为广泛的开源库,以功能全面使用方便著称。自3.3版本开始,OpenCV加入了对深度神经网络(DNN)推理运算的支持。在LiveVideoStack线上交流分享中英特尔亚太研发有限公司开源技术中心软件工程师 吴至文详细介绍了OpenCV DNN模块的现状,架构,以及加速技术。

直播回放

https://www2.tutormeetplus.com/v2/render/playback?mode=playback&token=846e0ba66b954f43834086dec24ae492

注:文中的ppt是作者在Embedded Linux Conference 2018上的演讲“Deep Learning in OpenCV”的ppt

大家好,我是吴至文,目前就职于英特尔开源技术中心,主要从事图形、图像深度学习算法方面的开发和优化工作。很高兴有机会和大家分享一下关于OpenCV深度学习模块的内容,同时,也会介绍一下我们团队在OpenCV深度学习方面所做的一些工作。

本次分享的主要内容包含以下几个方面:

首先,我会介绍一下OpenCV和深度学习的背景知识;然后,介绍今天的主题——OpenCV深度学习模块;接下来,会简单介绍我们团队在OpenCL加速方面所做的工作,以及开发的一个Vulkan后端;最后,会以一个例子的形式来展示如何使用DNN模块开发深度神经网络的应用。

一, OpenCV背景介绍

首先,什么是OpenCV呢?我相信做过图形图像、计算机视觉应用开发的同学可能对OpenCV都不会陌生。OpenCV是一个包含了2500多个经过优化的计算机视觉和机器学习算法的开源计算机视觉库。换句话说,目前主流的、比较知名的计算机视觉算法和论文在OpenVC里都能找到相应的实现。OpenCV不仅仅是一个很好用的开发工具集,它同时对有志于学习计算机视觉开发的学生也是一个宝库。OpenVC支持C、C++和Python语言,但是从OpenCV 4.0开始,C语言的API就逐渐被清除出去了,现在比较常用的API是C++和Python语言的。此外,OpenCV也是一个很活跃的开源项目,到目前为止它在Github上有两万多个Forks。

2018年11月份,OpenCV发布了4.0的版本。在这个版本有了比较大的变化,大概有以下这几点:首先,它使用了C++11标准编译器,并且移除了大多数的C 语言的API接口;另外,它不再对之前的版本有二进制的兼容,同时它使用了大量AVX2的指令集优化,从而大大提高了一些算法在CPU上的运行效率;再者就是,它具有更小的内存占用以及支持OpenVINO作为DNN模块的后端。OpenVINO对于有的同学可能比较陌生,它是英特尔发布的一个针对深度学习视觉应用的SDK。OpenVINO支持各种设备上的加速,包括CPU、GPU和VPU上面的加速,我们在后面还会提及这个内容。

二, 深度神经网络的关键概念

接下来,我将介绍一些深度神经网络的关键概念。

深度神经网络最基本的组成单元是神经元,我们在文献中一般称作Node、 Neuron或Perceptron。一个神经元会对多个输入进行加权和的运算,然后经过一个激活函数,最后输出一个响应结果。多个神经元就组成了网络的层,我们将神经网络的第一层称为输入层,一般用来加载输入数据,如一幅图像。我们将神经网络的最后一层称为输出层,根据具体网络结构的不同,输出层的含义也会不同。以分类网络为例,输出层的每个节点表示属于某个类别的概率大小。我们将在输入层和输出

  • 4
    点赞
  • 32
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值