基于FPGA的加速Haar人脸检测的多处理体系架构外文翻译资料

 2022-06-12 08:06

英语原文共 5 页,剩余内容已隐藏,支付完成后下载完整资料


基于FPGA的加速Haar人脸检测的多处理体系架构

印度北阿坎德邦,印度理工学院

电子与通信工程系

Chanchal Kumar, Md Shadab Azam

摘要

实时人脸检测系统的实现是进行人机交互的第一步。本文提出了一种可在FPGA上实现的架构,通过利用算法中固有的并行性,使用多个专用处理单元来加速基于Haar的人脸检测算法。该体系结构被设计为可扩展的,并且已经在处理单元之间分配面部检测负载,以减少空闲时间。 该设计已针对Xilinx Virtex-5电路板进行了综合。在Intel i5, 2.4 GHz处理器上,使用单个处理单元可以使人脸检测帧率提高5.45倍。通过将体系结构扩展为包括并行运行的四个处理单元,帧速率进一步提高了一倍。

引言

人脸检测在实际应用中有很多用途,例如:重新编码,监视,视频会议,以及相机的自动对焦。在开发可以实时操作的鲁棒人脸检测算法方面,人们已经在计算机视觉领域做了大量工作。 Viola和Jones [1]提出了一种基于机器学习的方法,可以在保持准确性的同时实现相对较高的帧速率。然而,该算法在传统处理器(特别是嵌入式平台上)上运行速度太慢,需要专用协处理器来实现实时操作[2],[3],[4],[5],[6 ],[7],[8]。

Viola-Jones算法可以分为3部分-预处理阶段,haar检测阶段和后处理阶段。预处理阶段涉及生成多尺度图像金字塔以及为整个图像生成合计区域表(称为积分图像)。一般而言,这个阶段是在haar检测阶段完成之前完成的,但[6]和[9]已经表明,当前检测窗口的积分图像可以在haar检测阶段本身动态生成,从而减少预处理阶段。 haar检测阶段适用于各种形式的并行化,其中一些在以前的工作中已利用。 [6] [7]和[8]表明,可以从算法中提取的并行性主要受FPGA上可用资源数量的限制。本文提出了一种新颖的架构,可以利用Viola-Jones算法的固有并行性来显著加速人脸检测过程。对单个人脸进行多次检测,这些重复检测可以在后处理阶段进行分组。

本文首先简要回顾了Viola-Jones人脸检测算法,然后讨论了一些相关的前期工作,试图通过利用不同形式的并行处理来加速该算法。 然后详细解释所提出的体系结构,对所获得的结果进行讨论并与相应的软件实现进行比较。

背景

基于haar的人脸检测算法

在高层次上,人脸检测算法使用正方形检测窗口(例如20x20)扫描整个图像,以查找人脸特征,如图1所示。如果在特定位置的窗口中找到足够的特征,就认为该窗口包含一张脸。为了检测不同尺寸的人脸,在扫描整个图像之后,窗口会放大并重复该过程,如图2所示。然而,这种方法具有高度计算性,不适用于嵌入式系统。另外,对于嵌入式应用程序,图像将按比例缩小,同时将检测窗口保持为20x20的大小,如图3所示。不需要在内存中保存完整的多级图像金字塔。相反,最近邻节点缩减方案可以流水线方式动态实现,硬件复杂度非常低,以便在需要时从原始图像生成所需比例的帧。虽然检测精度取决于所使用的缩放算法,[7]表明最邻近的方案保持了与软件系统相媲美的人脸检测精度。

图1.检测窗口滑过整个图像寻找人脸

  1. Haar特征和级联分类器:当图像被扫描一个检测窗口时,在每个位置,窗口必须通过一个分类器。

图2.检测窗口以几种比例扫描图像以检测不同大小的人脸

图3.图像可以缩小以检测不同尺寸的人脸

几种haar特征。 这些haar特征是由2或3个矩形组成的简单结构,如图4所示。这一小组特征可以在检测窗口内以不同比例和位置以及不同纵横比等等使用,以产生数千个如图5所示的haar特征。这些Haar特征可用于检测。

图4.haar特征的例子 图5.不同的haar特征由相同的基本形状构造而成

面部特征。 例如,我们知道眼睛区域比鼻梁和脸颊更暗。 因此,如果我们使用如图6所示的两个特征,则我们知道黑色矩形下面的像素值的总和应该小于白色矩形下面的像素值的总和。 所以,如果一个窗口通过这个规则,我们知道这个窗口可能包含一张脸。 如果没有遵守规则,我们立即知道该窗口不包含脸部并被拒绝。

上面的讨论表明,通过仅使用2个特征,我们可以示意眼睛的存在。 要将检测窗口分类为包含人脸,需要计算数千个这样的haar特征。 Viola-Jones将6000多种haar特征分为38个独立的阶段,只有当一个窗口通过所有阶段时,它才被分类为一张脸。 与早期阶段相比,后期阶段具有更大的复杂性和准确性。 非面部窗口尽早被拒绝,如图7所示。该算法的更多细节可以在[1]中找到。

图6.用于检测眼睛的两个特征的组合 图7.haar分类器被分成独立的阶段,并且越来

越复杂,以尽快拒绝非面部窗口

  1. 积分图像:计算haar特征的每个矩形内的像素总和的运算量很大。 Viola-Jones建议生成一个积分图像(也称为总和区域表)作为预处理阶段。 这有助于在恒定时间内计算每个特征和。 积分图像是与图像具有相同大小的二维矩阵,使得积分图像的坐标(x,y)包含原始图像中的坐标(x,y)及其左边的像素值之和,如图8和(1)所示。

使用积分图像,可以使用(2)计算在恒定时间内的矩形内的像素值之和,如图9所示。

Sum(Shaded)=C-B-D A (2)

  1. 照明校正:机器学习算法中使用的训练数据库是方差归一化的。这样,传入的检测窗口也需要标准化处理。这使得该算法对不同的照明条件具有鲁棒性。(3)可以用来计算电流的方差。

图8.4x4图像与对应的积分图 图9.使用积分图像计算阴影矩形检测窗口中

像素值的总和

这里,表示检测窗口的平方像素值的总和,n是检测窗口中的像素的数量,并且是检测窗口中的平均像素值,其可以从对应的整体图像窗口容易地计算。如果我们在预处理阶段为像素值的平方(平方积分图像)和积分图像生成总计面积表,则可以高效地计算。

合适的并行性和前期工作

由Viola-Jones提出的用于人脸检测的多级分类器如图7所示,适用于各种类型的并行处理,其中一些已经被以前的作品所利用。分类器由几个独立的阶段组成。每个阶段由几个Haar特征组成,如图6所示。所有帧的检测窗口都需要通过这个分类器运行。

已经提出了几种实施方式,其将硬件和软件部分之间的操作分开或者使用诸如皮肤检测或连续帧之间的相关性的不同技术来加速面部检测。然而,有三种架构侧重于利用基于haar的人脸检测算法的并行性和硬件实现整个系统。 [6]通过在特定阶段并行处理几个Haar特征来加速人脸检测。 [8]提出了一种架构,其中分类器在多个不同的检测窗口上并行运行。 [7]提出了一种混合解决方案,其初始阶段高度并行化,而后期阶段则按顺序执行。

体系结构

本文提出了一种架构,它通过并行处理多个分类器阶段来利用基于haar的人脸检测算法的并行性。 本文详细描述了haar检测阶段和预处理阶段,包括帧缓冲器,帧定标器和地址生成器以及积分图像生成器,可以在[9]中找到。 完整人脸检测架构的顶层模块如图10所示。不同的子系统在下面进行解释。

图10.所提出架构的顶层模块的各个单模块

帧缓冲区

帧缓冲区存储算法要工作的帧。将图像存储为二维阵列会在FPGA上使用大量的BRAM。相反,图像已经被存储为一维矢量,其中像素(x,y)的地址被计算为(y*宽度 x)。从帧缓冲器读取的像素值被发送到积分图像生成器模块,在该模块中计算帧的积分图像。

帧定标器与地址生成器

该模块通过以光栅方式扫描帧来生成要从帧缓冲区读取的像素值的地址。由于帧需要按比例缩小以运行不同大小的检测窗口,如图3所示,该模块还负责根据最近邻减小算法对帧进行缩放。使用低复杂度的流水线实现,如[9]中所述,每个时钟周期可以实现1个地址的吞吐量,并将其发送到帧缓冲区以检索所需的像素值。

积分图像发生器

该模块生成当前帧的积分图像并存储在当前操作尺度。为了实现本文中概述的并行性,需要为随后的haar分类器阶段提供高带宽。如此,电流检测窗口的积分图像被存储在寄存器中,使得可以同时读取多个值,如图11所示。

积分图像生成有几种方法; 例如,可以计算整个帧的积分图像并将其存储在BRAM中作为预处理阶段。但是,由于我们在寄存器中需要当前的积分图像窗口,因此必须在haar分类器阶段运行之前将所需信息传输到寄存器。 如[6]和[9]中提出的另一种方法是在哈尔检测阶段本身直接在寄存器中动态生成当前积分图像窗口。所提出的体系结构已与[9]中讨论的用于动态积分图像生成的系统结合以合成完整的人脸检测系统。第二种方法具有额外的优点,如减少时间和空间的复杂性。

图11.多个同时读取形成积分图像模块

平方积分图像发生器

该模块与积分图像模块相似,因为它可生成并保持帧的平方像素值的积分图像。方差归一化因子(3)的计算是必需的。

照明校正

该模块的内部结构如图12所示。当前检测窗口的平方像素值的平均值通过将平方像素值的总和(从平方积分图像获得)与该区域的倒数相乘来计算 的检测窗口。类似地,当前检测窗口的像素值的平均值也可以从积分图像窗口获得。差异通过CORDIC IP内核传递,以执行平方根操作以获得标准化因子。

分类器数据

包含在[10]中的基于树桩的分类器级联被分成若干部分,并以划分的方式存储到单独的BRAM中以增加面部检测处理器的带宽。一组BRAM将单个矩形的位置细节存储在haar特征中。另一组BRAM存储每个haar特征的阈值。左值和右值存储在另一组BRAM中。由于其体积小,阶段阈值存储在寄存器中。

正如本节开头所提及的那样,下一节将详细讨论,所提出的体系结构具有多个(即N个)处理单元。由于haar分类器中的各个阶段是相互独立的,因此可以将它们分成N个可以并行处理的集合。例如,如果阶段的总数是22并且PU(处理单元)的数量是4,则可以给出6个阶段用于处理至第一PU,并且另外6个阶段可以给予第二PU,而剩余的10个阶段可以在其他2个PU之间分配。每个阶段中的特征数量是不同的,并且应当在PU之间进行阶段划分以获得相等的负载分布和最小的空闲时间。

人脸检测引擎

人脸检测引擎与分类数据进行通信以检索已知的haar特征的阈值和位置值,并遵循由Viola-Jones在[1]中指定的算法,通过从积分图像模块接收数据。基于该算法的结果,它确定当前检测窗口是否包含脸部。包含如图13所示的4个处理单元的人脸检测引擎的内部架构。该架构可以放缩以包括更多处理单元,从而实现更高的面部检测帧速率的加速。下面介绍不同的子模块。

图13.人脸检测单元的内部架构.PU与分类器数据和积分图像模块进行通信(图中未示出)

  1. 处理单元:每个PU处理来自分类器数据的一组阶段,并且如果检测窗口通过分配给该特定PU的所有阶段,则生成通过信号。如果窗口在任一阶段失效,则立即生成一个跳转信号。 PU的内部结构如图14所示。它通过从分类器发送其位置到积分图像模块,从积分图像模块接收特征矩形数据值。矩形特征的加权和与特征阈值进行比较,根据比较结果选择左边或右边的值。选定的值通过阶段进行累加并与阶段阈值进行比较。如果累计值大于阈值,则窗口通过该特定阶段。如果窗口在任一阶段失效,则会生成一个跳转信号,并且检测窗口会滑动到下一个位置。否则,如果分配的一组阶段的最后阶段通过,则生成通过信号。由于不同的PU具有不同的阶段集合,所以跳转和通过信号需要在它们之间同步。

图14.单个处理单元的内部架构

2) 通过同步模块:该模块由四个触发器组成,当检测窗口通过指定集合的所有阶段时,即当相应的PU产生通过信号时,每个触发器由相应的PU设置。如果所有触发器都已设置,那意味着分类器的所有阶段都已通过,并判定检测窗口包含人脸。在新的检测窗口上运行分类器之前清除触发器。

3) 跳转同步模块:如果检测窗口在任一PU中的阶段失效,相应的PU立即生成跳转信号,通知面部检测引擎该窗口已经失效,并且应该加载下一个检测窗口。 但是,在分类器运行下一个检测窗口之前,应该刷新处理单元的当前管线,或者关闭管线长度的跳转生成机制。

4.结果

所提出的体系结构使用Xilinx ISE设计套件在Virtex-5(XC5VLX330T)板上实现。最大时钟频率为171 MHz,通过扩展流水线和使用定点运算代替浮点运算获得。通过所提出的架构获得的针对QVGA分辨率的利用四个处理单元以及通过仅利用单个处理单元获得的每秒帧数(FPS)速率与在英特尔i5,2.4GHz处理器上运行的OpenCV软件实现进行比较,数据[8]报道的移动平台。表1总结了性能改进。

将具有单个处理单元的面部检测引擎的FPGA设备利用率与表II中具有四个处理单元的面部检测引擎的利用率进行比较。

5.结论

本文提出了一种可扩展的体系结构,该体系结构通过将不同集合中的独立分类器级划分为用于在人脸检测引擎的多个处理单元上并行执行的基于haar的人脸检测算法来利用固有的并行性。 整个算法的设计针对Xili

全文共7471字,剩余内容已隐藏,支付完成后下载完整资料


资料编号:[11132],资料为PDF文档或Word文档,PDF文档可免费转换为Word

原文和译文剩余内容已隐藏,您需要先支付 30元 才能查看原文和译文全部内容!立即支付

以上是毕业论文外文翻译,课题毕业论文、任务书、文献综述、开题报告、程序设计、图纸设计等资料可联系客服协助查找。