【博文连载】什么是图像加速引擎

我们做的Sobel、Canny边缘检测、中值、均值、高斯滤波,腐蚀膨胀连通运算,以及帧间加减乘除运算等,其实他的合集就是OpenCV玩过OpenCV 小朋友对这些应该非常熟悉,Lib已经帮你封装好了这些功能,你可以直接调用。。OpenCV用于实现基本的计算机视觉,如上图所示,这就是最基本的应用(深度学习我们另说,这个本文说不清楚)。

那么继续发散一下思维,如何设计一个图像加速引擎呢?这部分内容超出了本教程,但是个人觉得还是得简单的讲一讲。对于终端产品(比如IPC相机)而言,采用CPU实现一系列实时的OpenCV算子非常吃力,毕竟ARM不是让你进行图像处理的,但是如果有一个图像处理引擎,计算只需要调用接口读取结果进行流水线操作,那么日子就好过多了,而这个引擎及就实现了很多个图像运算模块——算子,其功能可以用FPGA实现,或者ASIC中RTL实现。典型的海康集成FPGA的相机,或者采用Hisilicon的IPC IC的芯片,就是这样的结构:CPU只负责调用,硬件负责加速运算。

首先我们身边,监控无处不在,我们无时不刻暴漏在网络中,没有隐私的同时当然安全系数提高了一些,那么监控芯片除了Sensor最重要的SOC,就是IPC芯片了。这类芯片曾经的安霸已经被海思干趴下,现在还有君正,升迈,Mstar等,大家都是ARM+图像加速引擎+其他模块的结构。那么我们简单介绍一下海思3516的CV算子——IVE,IPC的只能加速引擎,如下所示:

该引擎主要的算子如下所示,惊奇的发现,几乎所有的算子我竟然都已经玩过一遍了,虽然我到后面才知道这已经不是什么新鲜的事,但至少被大家认可的硬件加速方式,是值得推说的。

事实证明设计一个OpenCV加速引擎并不是什么很难得事情,这只是一个合集,做的好一点可以实现多个算子的Pipeline运算(据说某对手做了)。但有一个完备的功能和优秀的性能,就不是一朝一夕的事,并且最重要的是有能服务客户的强大生态,以及准确的上层应用,比如家用监控中的遮挡检测,入侵检测,以及人脸检测灯等,就对性能有一定的要求。

然后某些熟悉Xilinx Revison观众要High起来了,是不是好熟悉的问题,因为Vivadp的Revision,竟然也集成了这些很多相似但又更多的算子,如下所示。看来采用FPGA或ASIC进行图像计算的加速,是一个大家公认的架构,并且这样的结构已经成熟应用于目前99.9%的IPC相机,机器视觉产品等。

https://www.xilinx.com/products/design-tools/embedded-vision-zone.html#computer

其实本人也在公司设计过IPC芯片,其中的CV算子就是我负责而设计的,当时非常的high,因为90%的算子我在研究生时代就对着冈萨雷斯的《数字图像处理(Matlab版)》实现过了,因此玩的飞起,最终产品遮挡检测、移动侦测、人脸检测就是基于这个CV引擎,用弱鸡的ARM调用实现的。如下所示,一个简单又够玩基本应用的图像加速引擎,Made By CrazyBingo(由于已经在IEEE Paper发表,因此拿出来说没毛病)。

OK,我们继续往大的说,继续往大的说,传统的CV引擎和我们的现在炙手可热的深度学习加速有什么关联呢?其实关系大而去 。传统检测就是个分类,而卷积神经网络也是个分配匹配的问题,只是一个是正向的检测,另一个是通过学习训练来收敛权重,最后通过打分得到结果。下图是经典的lenet字符识别网络,采用一系列卷积运算得到最终的打分结果。

采用FPGA实现深度学习功能这几年玩的很火,通用的架构无非两:PC+FPGA或ARM+FPGA,而在FPGA只做一个工作,那就是乘加运算,通常说的算力也就是频率*乘加数量。。相应的HLS和OPENCL也火起来了,虽然这两个东东在实现性能上还不能跟人工对比,但是可以快速采用高级语言给你综合出RTL,用于验证算法的可行性。

整体思路和我们设计传统CV引擎是类似的,也就是怎么将浮点定点话,然后流水线/并行的思维实现整个网络的运算。想了解更多FPGA深度学习加速引擎的小伙伴,可以看本人《FPGA设计技巧与案例开发详解(第三版)》的FPGA深度学习相关的内容,再此为了销量,不做展开了。

最后,赶紧清醒清醒,下面的章节我们将回归整体,介绍基于CrazyBingo设计的VIP Mini视频图像算法开发板(如下图所示),实现的FPGA图像处理硬件加速功能,加油加油,最后一次更新了!

 

(0)

相关推荐

  • 一种对空红外弱小目标检测跟踪方法研究

    0 引言 现代战争中,以小型无人机.电视侦察弹等为代表的战场侦查设备层出不穷,对地面部队和武器装备的生存能力形成较大威胁,为此,有效发现.跟踪和打击该类目标成为必然的战场军事需求.其中目标检测与跟踪技 ...

  • (2条消息) 计算机视觉

    源码:https://github.com/PacktPublishing/OpenCV3-Computer-Vision-Application-Programming-Cookbook-Third ...

  • 图像处理知多少?准大厂算法工程师30+场秋招后总结的面经问题详解

    作者丨灯会 来源丨极市平台 编辑丨极市平台 极市导读 本篇主要包含了图像滤波.边缘检测相关常考内容等相关面试经验. >>加入极市CV技术交流群,走在计算机视觉的最前沿 系列文章: 深度学习 ...

  • python+opencv图像处理(四十一)

    提前过了个万圣节,南瓜灯还蛮好看的,就是那些装鬼的有点吓人...... Scharr算子 1.Scharr算子 Scharr算子也是用于提取图像边缘的. 它是对Sobel算子差异性的增强,两者的原理和 ...

  • 基于图像处理技术的转辙机智能检测研究

    点击下面标题,了解通知详情 第九届电工技术前沿问题学术论坛征文通知 近年来,随着城市规模不断扩大和城市轨道交通的迅速发展,轨道交通已成为人们日常出行的主要交通工具之一,随之而来的是工程技术人员对轨道交 ...

  • 【从零学习OpenCV 4】Laplacian算子

     小白学视觉",选择"星标"公众号 重磅干货,第一时间送达 经过几个月的努力,小白终于完成了市面上第一本OpenCV 4入门书籍<OpenCV 4开发详解>. ...

  • 【博文连载】什么是FPGA硬件加速

    以前有篇文章,讲<让你的软件飞起来>,讲的是怎么用C语言实现RGB转YUV的方法,从浮点乘法到定点乘法,最后再到查找表等方法进行加速,整体提升了几百倍的提升. 那么FPGA进行图像加速也有 ...

  • 【博文连载】cadence indago征程(四)仿真加速indago database

    indago工具很强大,对于debug环境,非常好用.但是因为仿真过程中,会产生indago database,而database,会记录仿真的所有状态,因此必然就会造成仿真速度慢.如果环境非常复杂, ...

  • 【政策视点】三部门发布重磅文件:运营商网络投入增速增量 纤缆行业发展获加速引擎

    近日,工信部.广电总局.中央广播电台联合发布<超高清视频产业发展行动计划(2019-2020年)>(以下简称<计划>),要求按照"4K先行.兼顾8K"的总体 ...

  • 荣耀V40——强劲的GPUTurboX图形加速引擎

    GPUTurboX图形加速引擎是一种软硬件协同的图形加速技术,能够提高手机GPU的性能,图形处理效率提高60%.通过在系统底层对传统图形处理框架进行重构,大幅提升了GPU的整体运算效率,从而提升手机的 ...

  • 【博文连载】动态Sobel阀值的HDL实现

    完美是没有极限的,前面我们已经实现了固定阀值下,图像的边缘检测结果.不过如何能手动输入,或者控制阀值的大小,那其实更完美一点点. 既然我们能够在努力一点点,为何要放弃??? OK,Bingo这里打算教 ...

  • 【博文连载】Sobel边缘检测算法的HDL实现

    FPGA中针对以上矩阵进行算法移植.由于直接计算会因为负值而得到错误的结果,用补码表示比较繁琐,需要用到unsigned 以及signed类型,不适合FPGA的运算. cnblog有真oo无双的代码, ...

  • 【博文连载】Median_Filter均值滤波算法的实现

    ChinaAET<电子应用技术>出版过一篇值得参考的<基于FPGA的实时中值滤波器的硬件实现>,该文采用FPGA+SRAM实现了实时中值滤波,思维值得参考(当然Bingo认为实 ...

  • 【博文连载】边缘检测算法介绍

    所谓边缘是指其周围像素灰度急剧变化的那些象素的集合,它是图像最基本的特征.边缘存在于目标.背景和区域之间,所以,它是图像分割所依赖的最重要的依据.由于边缘是位置的标志,对灰度的变化不敏感,,因此,边缘 ...

  • 【博文连载】中值滤波算法的介绍

    言归正传,我们先挑一个相对最简单的滤波算法(其实均值滤波更简单,但是它对边缘的保持太差,那就稍微努力点用中值滤波吧).进行中值滤波不仅可以去除孤点噪声,而且可以保持图像的边缘特性,不会使图像产生显著的 ...