用于方向梯度直方图计算的硬件加速器

文档序号:1602666 发布日期:2020-01-07 浏览:10次 >En<

阅读说明:本技术 用于方向梯度直方图计算的硬件加速器 (Hardware accelerator for histogram of oriented gradients calculation ) 是由 艾什瓦尔雅·杜贝 于 2018-04-17 设计创作,主要内容包括:在用于方向梯度直方图计算的硬件加速器(312)中,梯度计算组件(400)计算像素的梯度G&lt;Sub&gt;x&lt;/Sub&gt;和G&lt;Sub&gt;y&lt;/Sub&gt;。箱标识组件(402)基于代表性方向角G&lt;Sub&gt;x&lt;/Sub&gt;以及G&lt;Sub&gt;x&lt;/Sub&gt;和G&lt;Sub&gt;y&lt;/Sub&gt;的符号来确定所述像素的角箱的箱标识符。幅值组件(404)基于所述代表性方向角和所述箱标识符来确定所述梯度的幅值G&lt;Sub&gt;mag&lt;/Sub&gt;。(In a hardware accelerator (312) for histogram of oriented gradients calculation, a gradient calculation component (400) calculates a gradient G of a pixel x And G y . The bin identification component (402) is based on the representative direction angle G x And G x And G y To determine the bin identifier of the corner bin of the pixel. A magnitude component (404) determines a magnitude G of the gradient based on the representative azimuth angle and the bin identifier mag 。)

用于方向梯度直方图计算的硬件加速器

背景技术

对于许多嵌入式计算机视觉应用(如高级驾驶辅助系统(ADAS)中的行人识别)来说,需要快速加权梯度(角度)计算。例如,canny边缘和其它角度边缘以及特征检测算法需要计算图像像素的方向梯度以帮助确保准确的、薄的边缘。在另一个实例中,许多视觉算法将方向梯度直方图(HOG)的特征用于一般对象检测,这需要计算图像的多个窗口中的每个像素的方向梯度并计算每个窗口的方向梯度的直方图分布。

方向梯度和直方图计算在计算上是昂贵的。例如,对于HOG算法,通过以下给出x梯度和y梯度的方向角θ以及像素的梯度的幅值:

θ(x,y)=tan-1(Gy/Gx)

Figure BDA0002273880160000011

其中Gx和Gy是相应的水平梯度和竖直梯度。对图像中的多个重叠检测窗口中的每个像素的方向角θ和Gmag进行计算。在嵌入式计算机视觉应用中实时执行针对大的图像的此些计算可能消耗嵌入式装置中当前使用的处理器的大部分计算能力(如果不是全部的话)。

发明内容

所描述的实例涉及用于加速方向梯度直方图计算的方法和设备。一方面,提供了一种用于方向梯度直方图计算的硬件加速器,所述硬件加速器包含:梯度计算组件,所述梯度计算组件被配置成计算像素的梯度Gx和Gy;箱(bin)标识组件,所述箱标识组件被配置成基于多个代表性方向角Gx以及Gx和Gy的符号来确定所述像素的角箱的箱标识符;以及幅值组件,所述幅值组件被配置成基于所述多个代表性方向角和所述箱标识符来确定所述梯度的幅值Gmag

一方面,提供了一种用于硬件加速器中的方向梯度直方图计算的方法,所述方法包含:在所述硬件加速器的梯度计算组件中计算像素的梯度Gx和Gy;在所述硬件加速器的箱标识组件中确定所述像素的角箱的箱标识符,其中所述箱标识符基于多个代表性方向角Gx以及Gx和Gy的符号来确定;以及在所述硬件加速器的幅值组件中确定所述梯度的幅值Gmag,其中所述幅值基于所述多个代表性方向角和所述箱标识符确定。

一方面,提供了一种片上系统(SOC),所述SOC包含:用于方向梯度直方图(HOG)计算的硬件加速器,所述硬件加速器能够配置成生成图像中的每个像素的箱标识符和梯度幅值;存储器,所述存储器耦接到所述硬件加速器以存储所述箱标识符和所述梯度幅值;HOG生成器,所述HOG生成器耦接到所述存储器,其中所述HOG生成器能够配置成使用由所述硬件加速器生成的所述箱标识符和所述梯度幅值生成HOG描述子;以及处理器,所述处理器耦接到所述存储器和所述硬件加速器,所述处理器能够操作以执行视觉处理应用,所述视觉处理应用被编程成对多个对象进行检测,所述视觉处理应用包括软件指令,所述软件指令将所述硬件加速器配置成生成所述箱标识符和所述梯度幅值并且将所述HOG生成器配置成使用所述箱标识符和所述梯度幅值生成所述多个对象中的每个对象的HOG描述子。

一方面,提供了一种用于使用硬件加速器进行方向梯度直方图(HOG)计算的方法,所述方法包含:通过所述硬件加速器确定图像中的每个像素的箱标识符和梯度幅值;以及使用所述箱标识符和所述梯度幅值计算用于对多种类型的对象进行分类的HOG描述子。

附图说明

图1是用于计算方向梯度直方图(HOG)的方法的流程图。

图2是用于行人识别的HOG计算的实例。

图3是实例多处理器片上系统(SOC)的高级框图。

图4是图3的SOC的实例HOG加速器的高级框图。

图5是用于确定像素的箱标识符和幅值的方法的流程图。

图6是用于生成HOG描述子的方法的流程图。

具体实施方式

在附图中,为了一致,类似的元件由类似的附图标记指示。

图1是用于计算方向梯度直方图的方法的流程图。参考图2的实例对所述方法进行解释,所述实例表示针对行人识别执行的HOG计算。其它对象识别算法针对不同的窗口大小执行类似的HOG计算。通常,HOG被用作对象识别任务的特征集。基本思想是通过局部强度梯度的分布或边缘方向表征局部对象的外观和形状,而无需精确地知道对应的梯度或边缘位置。

在图2的实例中,为了确定初始行人位置,使用了滑动窗口方法,其中检测窗口200在图像上移位。对于每个检测窗口,HOG特征集从窗口中的像素中生成并且针对行人的存在进行评估。在此实例中,假定检测窗口200的像素为64×128。

现在参照图1,对检测窗口200中的每个像素的梯度Gx和Gy连同幅值Gmag进行计算100。像素的梯度(也称为梯度向量或图像梯度)是像素值在像素周围沿着x方向和y方向变化的度量。通常,通过对以像素为中心的滤波器与被滤波器覆盖的图像中的像素求卷积来计算像素梯度。滤波器的大小和配置可以变化。根据以下计算幅值Gmag

Figure BDA0002273880160000031

还对针对每个像素的梯度的方向角θ进行计算102。根据以下计算像素的方向角θ:

θ=tan-1(Gy/Gx)

然后,使用所述方向角来确定每个像素的角箱104。为了确定所述箱,将检测窗口200分成被称为单元的局部空间区域。在图2的实例中,单元202的像素为8×8。根据其方向角,将每个单元中的64个像素离散化为角箱。将角箱均匀地遍布于0度到180度或0度到360度,这取决于梯度有符号还是无符号。例如,对于有符号的梯度,9个角箱可以均匀地遍布于0到180度。像素的方向角θ确定了像素的特定箱。

然后,基于单元中的像素的箱和幅值对检测窗口200中的每个单元的方向梯度直方图进行计算106。分配给箱的像素的梯度幅值确定了直方图中的对应于箱的条的高度。也就是说,直方图中的条的高度是分配给对应的箱的像素的梯度幅值的函数。例如,高度可以是像素的幅值的和或加权和。

由于如阴影、局部照明变化和前景/背景对比等因素,梯度强度在宽的范围内变化。因此,需要局部对比度归一化。出于此目的,将相邻单元的组视为被称为区间的空间区域。在图2的实例中,区间204是2×2相邻单元的组。每个区间由对应的四个单元直方图的连结表示,所述连结如使用L2范数被归一化。检测窗口200的最终HOG描述子由归一化的区间响应的连结表示。

如上文所描述的,在嵌入式计算机视觉应用中实时计算针对大的图像的方向梯度直方图可能消耗嵌入式装置中当前使用的处理器的大部分计算能力(如果不是全部的话)。实例实施例提供了用于HOG计算的硬件加速器。更具体地说,硬件加速器的实例加速了对计算方向梯度直方图所需的像素的箱标识符和梯度幅值的确定。

图3是实例多处理器片上系统(SOC)300的高级框图,所述实例多处理器SOC被配置成支持计算机视觉处理。SOC 300包含经由高速互连件322耦接的双通用处理器(GPP)302、双数字信号处理器(DSP)304、视觉处理器306、HOG生成器314和HOG加速器312。

视觉处理器306是向量处理器,所述向量处理器被调谐用于各种计算机视觉和其它信号处理任务,如来自加速测试(FAST)特征计算、深度神经卷积网络计算等的特征。GPP302托管操作系统并且对SOC 300的操作提供全面控制,包含对由HOG加速器312执行的处理进行调度。DSP 304为计算机视觉处理提供如对象检测和分类等支持,所述支持可以使用HOG生成器314的输出。

SOC 300进一步包含经由互连件322全部耦接到处理器、HOG加速器312和HOG生成器314的直接存储器存取(DMA)组件308、耦接到外部相机324的相机捕获组件310、显示管理组件316、片上随机存取(RAM)存储器318(例如,计算机可读媒体)和各种输入/输出(I/O)***设备320。相机324可以经由模拟连接、以太网电缆、低压差分信号(LVDS)电缆或其它适合的有线连接或无线连接耦接到SOC 300。

如参考图4更详细地描述的,HOG加速器312包含用于确定由相机324捕获的图像中的像素的箱标识符和梯度幅值的功能。对DSP 304执行计算机视觉应用将HOG加速器312配置成根据由所述应用指定的参数生成图像中的像素的箱标识符和梯度幅值。例如,所述应用可以配置HOG加速器312的参数,如单元直方图中箱的数量和每个箱的代表性方向角。参考图4描述了HOG加速器312的代表性方向角和配置。HOG加速器312根据经过配置的参数确定图像中的每个像素的箱标识符和梯度幅值并且将这种数据存储在RAM 318中以供HOG生成器314使用。

HOG生成器314包含用于使用由HOG加速器312生成的箱标识符和梯度幅值生成检测窗口的HOG描述子的功能。更具体地说,HOG生成器314可被配置成使用由HOG加速器312生成的数据根据计算机视觉应用在图像中寻找哪种类型的对象来生成HOG描述子。例如,对于行人检测,所述应用可以配置HOG生成器314的参数,如检测窗口大小、用于生成HOG描述子的图像的部分(所述部分可以是图像的子集或整个图像)、单元大小和区间大小。对于车辆检测,所述应用可以以不同的方式配置参数。

HOG生成器314使用所存储的数据以根据指定的检测窗口大小、单元大小和区间大小在指定的图像部分中生成针对检测窗口的HOG描述子。更具体地说,HOG生成器314实施滑动窗口方法,在所述滑动窗口方法中,指定大小的检测窗口通过由HOG加速器312生成的对应于图像的指定部分的数据移位。对于每个检测窗口,HOG生成器312生成HOG描述子。如上文所描述的,生成针对检测窗口的HOG描述子包含生成针对单元的HOG、归一化单元的区间的HOG并且连结所产生的归一化HOG以形成针对检测窗口的HOG描述子。注意,图像的箱标识符和幅值可以由HOG加速器312一次生成并且由HOG生成器314多次使用以生成HOG描述子,以便检测如由视觉处理应用配置的不同的对象类型。

图4是实例HOG加速器312的框图。HOG加速器312的架构基于以下观察。如上文所描述的,可以根据以下计算像素的梯度幅值Gmag

Figure BDA0002273880160000051

其中Gx和Gy分别为像素在x方向的梯度和像素在y方向的梯度。可以根据以下可替代地计算梯度幅值Gmag

Gmag=Gx*sec(θ)

其中sec(θ)=l/cos(θ),并且θ为梯度的方向角。因此,用于计算梯度幅值和tan-1(Gy/Gx)的两个基本方程可以表示为

Gmag=Gx*sec(θ)

Gy=Gx*tan(θ)。

同样,如表1所阐述的,可以基于梯度Gx和Gy的符号确定方向角θ的象限。因此,不需要计算所有象限的tan-1(Gy/Gx)。相反,可以执行一个象限(例如,0度到90度)的方向角计算,并且可以使用符号位来确定方向角θ的实际象限。

表1

G<sub>x</sub>的符号 G<sub>y</sub>的符号 角象限(度)
+(0到128) +(0到128) 0-90
-(-128到0) +(0到128) 90-180
-(-128到0) -(-128到0) 180-270
+(0到128) -(-128到0) 270-360

HOG加速器312包含梯度计算组件400、箱标识组件402和梯度幅值计算组件404。梯度计算组件400计算像素的x梯度和y梯度,即Gx和Gy。可以使用用于计算梯度的任何适合的技术。在一些实例中,根据以下计算梯度:

Gx=[1 0 -1]*I

Gy=[1 0 -1]T*I

其中I为含有像素的图像,并且*为卷积。梯度计算组件400的输出包含Gx、Gy和梯度的符号。

箱标识组件402从梯度计算组件400接收经过计算的梯度Gx和Gy以及梯度的符号位并且使用这些输入来标识像素的角箱。为了标识像素的角箱,箱标识组件402确定哪些需要介于0度与90度之间的代表性方向角最接近梯度的实际方向角并且然后使用这种信息和所述符号位来标识像素的角箱。如上文所描述的,视觉处理应用可以指定直方图中箱的数量和第一象限(即,介于0度与90度之间的象限)中的箱的代表性方向角。

箱标识组件402包含Gy估计组件406、比较器组件408和箱确定组件410。Gy估计组件406被配置成计算针对多个代表性方向角的Gy的估计值。也就是说,Gy估计组件406被配置成针对每个指定的代表性方向角计算

Gy=Gx*tan(θ)

以并行的方式执行所述计算,并且可以指定的代表性方向角的数量取决于实施方案。应用可以指定由Gy估计组件406支持的任何数量的角到最大数量的角的值。在一些实例中,存在用于支持对最多45个角进行并行计算的电路系统。如上文所描述的,每个指定的角度值对应于第一象限中的箱。Gy估计组件406的输出为指定的代表性方向角的Gy的估计值。

比较器组件408被配置成将由Gy估计组件406输出的估计的Gy值中的每一个值与由梯度计算组件400输出的实际的Gy值进行比较并且输出针对每个估计的Gy值的0位或1位,这指示实际的Gy值是否大于估计的Gy值。

箱确定组件410包含用于使用比较器组件408的输出和来自梯度计算组件400的符号位来确定在360度中的像素的箱标识符的功能。在一些实例中,箱确定组件410使用查询表(如表2的查询表)来确定第一象限中的箱标识符。表2假定比较器组件的输出为1指示Gy的实际值大于对应的估计的Gy值。表格中最后为0的行的位置确定了箱标识符。如果全部输出均为1,则实际Gy大于全部估计的Gy值,并且箱标识符为1。

箱确定组件410然后使用符号位以根据表1确定实际象限,并且如果实际象限不在第一象限内,则箱确定象限410确定实际象限中的箱标识符。因为切线是对称函数,所以对于第一象限中的每个箱,在其它三个象限中的每个象限中存在对称箱。例如,如果第一象限中的箱标识符为n,则其它象限中的对称箱标识符为n的确定性函数。箱确定组件402的输出为像素的箱标识符。通过使用在400中生成的符号位连同比较器408在0度到90度之间的仅仅一个象限中的输出,箱确定410可以准确地标识完整的360度空间中的实际像素箱。

表2

Figure BDA0002273880160000071

幅值组件404从箱标识组件402中接收箱标识符并且从梯度计算组件400中接收梯度Gx和符号位,并且使用这些输入来确定像素的梯度的幅值。为了确定像素的幅值,幅值组件404计算指定的代表性方向角中的每个指定的代表性方向角的幅值并且使用符号位和箱标识符来选择对应于用于确定箱标识符的方向角的经过计算的幅值。

幅值组件404包含幅值计算组件412、幅值选择器组件416和多路复用器414。幅值计算组件412被配置成计算对应于多个代表性方向角的幅值。也就是说,幅值计算组件412被配置成使用每个指定的代表性方向角来计算

Gmag=Gx*sec(θ)

以并行的方式执行计算,并且代表性方向角与由Gy估计组件406使用的那些方向角相同。幅值计算组件的输出是对应于指定的代表性方向角的经过计算的幅值。

多路复用器414被配置成使用由幅值选择器组件416确定的选择器来选择幅值计算组件412的输出中的一个输出作为像素的幅值。

幅值选择器组件416被配置成使用来自箱标识组件402的箱标识符和来自梯度计算组件400的梯度的符号位来确定多路复用器414的选择器值。因为箱标识符可以处于四个象限中的任何象限中,而代表性方向角被限定于单个象限中,所以箱标识符可以大于幅值计算组件412的输出的数量。幅值选择器组件416包含用于根据对称的切线图量化箱标识符(即,使得箱标识符的多个值映射为单个选择器值)的功能。多达四个箱标识符值可以映射到同一选择器。幅值选择器组件416使用符号位连同象限中的箱的数量来执行这种映射。

例如,如果HOG加速器312被配置成用于40个箱的直方图,则每个象限中存在10个箱。假定箱确定组件410确定像素的箱标识符为12,则所述箱标识符落入第二象限中。此箱标识符的幅值Gmag与箱标识符2、22和32的幅值相同。为了确保正确地解析Gmag,幅值选择器组件416将箱标识符2、12、22和32映射为同一选择器值。

HOG加速器312进一步包含用于存储通过视觉处理应用设置的各种控制和配置参数的存储器映射寄存器(未具体示出)。参数包含第一象限中的代表性方向角的值和箱的数量。视觉处理应用为每个箱指定一个代表性方向角值。

如上文所描述的,Gy估计组件406针对每个代表性方向角计算

Gy=Gx*tan(θ)

并且幅值计算组件412针对每个代表性方位计算

Gmag=Gx*sec(θ)

任何适合的技术可以用于这些组件中以计算Gx*tan(θ)和Gx*sec(θ)。例如,对于tan(θ)和sec(θ),所述计算可以基于查询表。

在一些实例中,所述计算基于坐标旋转数字计算机(CORDIC)算法实施。CORDIC使用简单的移位加运算来计算如正切和正割等三角函数。也就是说,tan(θ)和sec(θ)可以表示为iΣ(-l)m X(2)-1→CORDIC实施方案,其中i为-8到+8之间的整数,并且m为1或2。例如,在CORDIC实施方案中,Gx*tan(20)~Gx*0.36可以被计算为Gx*(0.25+0.125-0.015625)→将Gx向左移2+,将Gx向左移4-,将Gx向左移6,并且Gx*sec(20)~Gx*1.00625可以被计算为Gx*sec(20)→Gx+将Gx向右移4。在一些此些实例中,并不实施完全的CORDIC引擎,而是实施有限范围的CORDIC引擎,其中所述有限范围由加速器设计支持的箱/方向角的最大数量确定。例如,可以实施有限范围的CORDIC引擎以支持最大32个箱/方向角的计算。

图5是用于确定像素的箱标识符和幅值的方法的流程图,所述方法可以由硬件加速器(如HOG加速器312)执行。初始地,对像素的梯度Gx和Gy进行计算500。可以使用任何适合的算法来计算所述梯度。

然后,对介于0度与90度之间的多个代表性方向角的Gy的值进行估计502。通过视觉处理应用确定代表性方向角的数量和值,并且通过硬件设计设置最大数量。根据以下计算每个代表性方向角的Gy的估计值:

Gy=Gx*tan(θ)

将估计的Gy值与实际的Gy值进行比较以选择像素的最好的代表性方向角504。如上文所描述的,可以使用查询表来实施选择过程。使用梯度的符号和所选择的代表性方向角来确定像素的箱标识符506。如上文所描述的,使用梯度的符号来确定方向角的实际象限。

还根据以下计算对应于代表性方向角中每个代表性方向角的幅值Gmag 508

Gmag=Gx*sec(θ)

并且使用箱标识符和梯度符号位来选择对应于用于确定箱标识符的代表性方向角的经过计算的幅值510。

图6是用于生成图像的HOG描述子的方法的流程图,所述方法可以由图3的SOC 300执行。初始地,由HOG加速器312确定由相机324捕获的图像中的每个像素的箱标识符和幅值600。对DSP 304执行视觉处理应用将HOG加速器312配置成确定图像像素的箱标识符和幅值并且将所述数据存储在RAM 318中。视觉处理应用将HOG加速器312配置成根据特定类型的对象使用代表性方向角的值和多个箱,视觉处理应用被编程成对所述特定类型的对象进行检测。

然后,由HOG生成器314计算HOG描述子以使用箱标识符和幅值对多种类型的对象进行分类602。也就是说,视觉处理应用被编程成对每种类型的对象进行检测,视觉处理应用将HOG生成器314配置成使用存储于RAM 318中的箱标识符和幅值来生成针对适用于每种对象类型的检测窗口、单元和区间大小的HOG描述子。例如,如果视觉处理应用被编程成对行人、车辆和街道标志进行检测,则所述应用将HOG生成器314编程为生成用于检测行人的HOG描述子。当所述任务完成时,所述应用将HOG生成器314编程为生成针对车辆的HOG描述子。当所述任务完成时,所述应用将HOG生成器314编程为生成针对街道标志的HOG描述子。HOG生成器314将存储于RAM 318中的箱标识符和幅值重复用于这些HOG描述子生成任务中的每个HOG描述子生成任务。

其它实例

在本文描述的一些实例中,箱确定组件410使用查询表(如表2的查询表)来确定第一象限中的箱标识符并且然后应用所述符号来确定实际象限和真正的箱标识符。在其它实例中,表格包含符号。

本文描述了HOG加速器的实例,其中所述加速器一次对一个像素进行操作。在其它实例中,HOG加速器具有用于以并行的方式对多个像素进行操作的另外的功能。

在一些实例中,SOC不包含HOG生成器,并且由对SOC的处理器中的一个处理器执行的应用执行HOG生成器的功能(如使用HOG加速器的输出生成HOG描述子)。

在本文描述的一些实例中,由幅值选择器组件对可以处于任何象限中的箱标识符进行量化以生成针对幅值的选择器。在其它实例中,使用针对第一象限生成的原始箱标识符来选择幅值,并且幅值选择器组件不存在。

在一些实例中,HOG生成器和HOG加速器被组合在单个加速器中。

本文描述了可配置的HOG加速器的实例。在其它实例中,HOG加速器具有预定的角度值和预定量的箱。

在一些实例中,使用RAM中的兵乓缓存器来存储HOG加速器的输出,从而允许HOG生成器使用一个缓存器中的一个图像的数据,同时HOG加速器生成另一个图像的箱标识符和幅值并且将所述数据存储在另一个缓存器中。

在权利要求的范围内,在所描述的实施例中修改是可能的,并且其它实施例是可能的。

16页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:安全卷积神经网络(CNN)加速器

网友询问留言

已有0条留言

还没有人留言评论。精彩留言会获得点赞!

精彩留言,会给你点赞!