一种并行非极大值抑制运算装置

文档序号:26233933发布日期:2021-08-10 16:35阅读:100来源:国知局
一种并行非极大值抑制运算装置

本发明属于图像处理和集成电路设计技术领域,尤其涉及一种并行非极大值抑制运算装置。



背景技术:

非极大值抑制(nms,non-maximumsuppression)作为一种图像处理领域的常用算法,被广泛应用于边缘检测、人脸检测、目标检测等计算机视觉任务中。非极大值抑制运算常在一些目标检测模型之后,对目标检测模型产生的一系列目标候选框进行相互比较,对其中与其他候选框重叠度较大且置信度较低的候选框进行抑制,以得到具有较高代表性的候选框。

现有的方法通常采用cpu或gpu进行非极大值抑制运算,然而由于这些装置并非专门针对该运算设计,消耗资源多且计算效率低。此外,也有一些方法采用专用集成电路(asic)来执行非极大值抑制运算,但由于计算过程较为复杂,需要较多的乘除法等复杂运算单元,占用大量的硬件资源;同时由于算法较难并行,即使采用asic方式,计算速度也比较慢。

为解决nms计算问题,现有技术提出了一种全硬件实现的nms计算装置。但是该方案需要使用较多的硬件计算资源(包含了大量乘法加法器等),会增加成本和功耗。另外该方案虽然有提及可以通过多个装置来并行计算提高速度,但并没有具体的实现方法。



技术实现要素:

为了解决如何在占用较少硬件资源的情况下,高效快速地完成非极大值抑制计算的问题,本发明提出一种低成本的并行非极大值抑制运算装置,具体技术方案如下:

一种并行非极大值抑制运算装置,包括:初级筛选模块、分发模块、至少一个目标处理模块和结果输出模块,其中,

所述初级筛选模块用于根据第一预设阈值t1筛选外部输入的目标候选框a,目标候选框a的置信度为ca,如果ca>t1,则将a发送给分发模块;如果ca≤t1,则将a丢弃;

所述分发模块与所述初级筛选模块相连,根据目标候选框的类别将其发送给对应的所述目标处理模块,实现不同类别目标候选框之间的并行运算;

所述目标处理模块与所述分发模块相连,用于非极大值抑制运算,所述目标处理模块从1开始顺序编号;

所述结果输出模块接收所述目标处理模块未被抑制的目标候选框,并输出到装置外,当仅有一个所述目标处理模块要输出目标候选框时,直接将其输出;当有多于一个所述目标处理模块同时要输出目标候选框时,按序逐个接收目标处理模块的目标候选框并输出,以防止数据输出时出现总线冲突。

进一步地,所述分发模块包括散列单元,采用预设散列函数对目标候选框的类别进行散列运算,将目标候选框根据散列运算结果发送到对应的所述目标处理模块。

进一步地,所述目标处理模块包括目标暂存单元和非极大值抑制单元,其中,所述目标暂存单元保存从所述分发模块输出的目标候选框,向所述非极大值抑制单元提供用于非极大值抑制运算的目标候选框信息,所述非极大值抑制单元进行非极大值抑制运算并将运算结果反馈给所述目标暂存单元。

进一步地,所述目标暂存单元内部包含缓存队列,缓存队列中的缓存项包含目标候选框及抑制标记,所述目标暂存单元的处理过程为:

step1:所述目标暂存单元接收所述分发模块发来的目标候选框,依次存入缓存队列并将对应的抑制标记设置为0;

step2:选择缓存队列队首的目标候选框作为第一目标候选框,选择缓存队列中抑制标记为0且尚未与第一目标候选框进行非极大值抑制运算的目标候选框作为第二目标候选框;将所述第一目标候选框和所述第二目标候选框发送给所述非极大值抑制单元,并等待所述非极大值抑制单元反馈运算结果;

step3:所述目标暂存单元接收到所述非极大值抑制单元的运算结果时,如果有目标候选框需要被抑制,将对应的抑制标记设置为1;

step4:更新缓存队列队首的缓存项:如果缓存队列队首的抑制标记为1,则将其从队首移除;当缓存队列队首的抑制标记为0,且对应的目标候选框已经与缓存队列中其他所有抑制标记为0的目标候选框进行了非极大值抑制运算时,则确认该目标候选框不会被抑制,将其从队首移除并发送给所述结果输出模块输出;重复执行该步骤直至队首的缓存项不再需要被移除;

step5:重复执行step2-step4,直至缓存队列为空。

进一步地,所述非极大值抑制单元包括:比较器,分别为第一比较器,第二比较器,第三比较器,第四比较器,第五比较器和第六比较器;第一乘法器,第一加减法器和第二加减法器,设第一目标候选框的类别为ta,坐标为(xa1,ya1),(xa2,ya2),置信度为ca,设第二目标候选框的类别为tb,坐标为(xb1,yb1),(xb2,yb2),置信度为cb,所述非极大值抑制单元包括以下运算步骤:

s1:对第一目标候选框和第二目标候选框进行类别比较;

使用第一比较器比较ta和tb,当ta=tb时,执行步骤s2;当ta≠tb时,所述第一目标候选框和所述第二目标候选框均不会被抑制,将结果发送给所述目标暂存单元,并等待所述目标暂存单元发送待运算的目标候选框;

s2:根据所述第一目标候选框和所述第二目标候选框的坐标判断两者是否相交,并计算交集面积;

s2-1:通过第一比较器得到xa1和xb1中的较大值x1,使用第二比较器得到xa2和xb2中的较小值x2,使用第三比较器得到ya1和yb1中的较大值y1,使用第四比较器得到ya2和yb2中的较小值y2;

s2-2:通过第五比较器得到x1与x2的大小关系,使用第六比较器得到y1和y2的大小关系;

如果x1≥x2或y1≥y2,则所述第一目标候选框和所述第二目标候选框没有交集,所述第一目标候选框和所述第二目标候选框均不会被抑制,将结果发送给所述目标暂存单元,并等待所述目标暂存单元发送新的目标候选框;

如果x1<x2且y1<y2,则所述第一目标候选框和所述第二目标候选框存在交集,通过第一加减法器计算δx=x2-x1,通过第二加减法器计算δy=y2-y1,通过第一乘法器计算得到候选框的交集面积s∩=δx×δy;

s3:根据所述第一目标候选框的坐标计算其面积;

通过第一加减法器计算δxa=xa2-xa1,通过第二加减法器计算δya=ya2-ya1,然后通过第一乘法器计算得到第一目标候选框的面积sa=δxa×δya;

s4:根据第二目标候选框的坐标信息计算其面积;

通过第一加减法器计算δxb=xb2-xb1,通过第二加减法器计算δyb=yb2-yb1,再通过第一乘法器计算得到第二目标候选框的面积sb=δxb×δyb;

s5:根据坐标和第二预设阈值计算两目标候选框的并集面积和交集面积阈值;

通过第一加减法器和第二加减法器计算并集面积s∪=sa+sb-s∩,再通过第一乘法器计算得到交集面积比较阈值t∩=t2*s∪,其中,t2是第二预设阈值;

s6:根据交集面积和交集面积比较阈值对所述第一目标候选框和所述第二目标候选框进行非极大值抑制;

通过第一比较器计算t∩和s∩的大小关系;如果t∩≤s∩,则通过第二比较器计算所述第一目标候选框的置信度ca和所述第二目标候选框的置信度cb的大小关系,对置信度较小的目标候选框进行抑制;

如果t∩>s∩,则说明所述第一目标候选框和所述第二目标候选框交集过小,两目标候选框均不被抑制;

将结果发送给所述目标暂存单元,并等待所述目标暂存单元发送新的目标候选框。

进一步地,所述散列单元内部预设散列函数f(x)=(x%n)+1,其中,x为所述散列单元的输入的目标候选框的类别编号,n为所述目标处理模块的数量,所述散列单元输入的类别编号为x的目标候选框将被发送到第f(x)个所述目标处理模块。

本发明的有益效果在于:

1.本发明避免了除法器等较复杂的运算单元,仅使用一个乘法器和少量比较器、加法器等较少的硬件资源即可完成非极大值抑制运算;

2.本发明针对多类别非极大值抑制运算,可以将运算发送给不同计算单元并行执行,加快运算速度;

3.本发明具有占用硬件资源少、功耗低、运算速度快的特点。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,通过参考附图会更加清楚的理解本发明的特征和优点,附图是示意性的而不应理解为对本发明进行任何限制,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,可以根据这些附图获得其他的附图。其中:

图1为本发明非极大值抑制运算装置的整体结构示意图;

图2为目标处理模块结构示意图;

图3为非极大值抑制单元计算流程图;

图4和图5分别为两个目标候选框的关系示意图。

图6为本发明的典型应用场景示意图。

具体实施方式

为了能够更清楚地理解本发明的上述目的、特征和优点,下面结合附图和具体实施方式对本发明进行进一步的详细描述。需要说明的是,在不冲突的情况下,本发明的实施例及实施例中的特征可以相互组合。

在下面的描述中阐述了很多具体细节以便于充分理解本发明,但是,本发明还可以采用其他不同于在此描述的其他方式来实施,因此,本发明的保护范围并不受下面公开的具体实施例的限制。

如图1-3所示,一种并行非极大值抑制运算装置,包括:初级筛选模块、分发模块、至少一个目标处理模块和结果输出模块,其中,

初级筛选模块用于根据第一预设阈值t1筛选外部输入的目标候选框a,目标候选框a的置信度为ca,如果ca>t1,则将a发送给分发模块;如果ca≤t1,则将a丢弃;

分发模块与初级筛选模块相连,根据目标候选框的类别将其发送给对应的目标处理模块,实现不同类别目标候选框之间的并行运算;

目标处理模块与分发模块相连,用于非极大值抑制运算,目标处理模块从1开始顺序编号;

结果输出模块接收目标处理模块未被抑制的目标候选框,并输出到装置外,当仅有一个目标处理模块要输出目标候选框时,直接将其输出;当有多于一个目标处理模块同时要输出目标候选框时,按序逐个接收目标处理模块的目标候选框并输出,以防止数据输出时出现总线冲突。

在一些实施方式中,分发模块包括散列单元,采用预设散列函数对目标候选框的类别进行散列运算,将目标候选框根据散列运算结果发送到对应的目标处理模块。

如图2所示,在一些实施方式中,目标处理模块包括目标暂存单元和非极大值抑制单元,其中,目标暂存单元保存从分发模块输出的目标候选框,向非极大值抑制单元提供用于非极大值抑制运算的目标候选框信息,非极大值抑制单元进行非极大值抑制运算并将运算结果反馈给目标暂存单元。

较佳地,目标暂存单元内部包含缓存队列,缓存队列中的缓存项包含目标候选框及抑制标记,目标暂存单元的处理过程为:

step1:目标暂存单元接收分发模块发来的目标候选框,依次存入缓存队列并将对应的抑制标记设置为0;

step2:选择缓存队列队首的目标候选框作为第一目标候选框,选择缓存队列中抑制标记为0且尚未与第一目标候选框进行非极大值抑制运算的目标候选框作为第二目标候选框;将第一目标候选框和第二目标候选框发送给非极大值抑制单元,并等待非极大值抑制单元反馈运算结果;

step3:目标暂存单元接收到非极大值抑制单元的运算结果时,如果有目标候选框需要被抑制,将对应的抑制标记设置为1;

step4:更新缓存队列队首的缓存项:如果缓存队列队首的抑制标记为1,则将其从队首移除;当缓存队列队首的抑制标记为0,且对应的目标候选框已经与缓存队列中其他所有抑制标记为0的目标候选框进行了非极大值抑制运算时,则确认该目标候选框不会被抑制,将其从队首移除并发送给结果输出模块输出;重复执行该步骤直至队首的缓存项不再需要被移除;

step5:重复执行step2-step4,直至缓存队列为空。

表1为一个目标暂存单元接收候选框、选择候选框、缓存队列更新和候选框输出过程中缓存队列中缓存项的变化,表1省略了目标候选框的信息,仅记录了抑制标记的变化。

首先从分发模块接收到一系列目标候选框,存入缓存队列中,并将抑制标记设置为0。

进行第1次非极大值抑制运算时,选择缓存队列中队首的目标候选框、即编号1缓存项内的目标候选框为第一目标候选框,选择缓存队列中抑制标记为0且尚未与第一目标候选框进行非极大值抑制运算的目标候选框、即编号2缓存项内的目标候选框作为第二目标候选框,将其发送给非极大值抑制单元;非极大值抑制单元进行计算将非极大值抑制结果返回,目标暂存单元根据计算结果,将缓存队列中编号1缓存项的抑制标记设置为1;由于其处于缓存队列头部,需要将其从队列中移出。

经过n次非极大值抑制运算以后,编号为2的缓存项与其他所有抑制标记为0的缓存项均完成了非极大值抑制运算,且其抑制标记仍为0,则可以确认该缓存项内的目标候选框不会被抑制,将该缓存项从队列中移出,并发送给结果输出模块。

对缓存队列中剩余的缓存项进行上述操作,直至m次运算后,缓存队列为空。

表1目标暂存单元缓存队列缓存项的变化

为了叙述方便,上述接收候选框、选择候选框、缓存队列更新和候选框输出过程被描述为顺序执行,实际中,上述过程可以并行执行,以提高处理速度。

非极大值抑制单元包括:比较器,分别为第一比较器,第二比较器,第三比较器,第四比较器,第五比较器和第六比较器;第一乘法器,第一加减法器和第二加减法器,非极大值抑制单元的运算包括:对第一目标候选框和第二目标候选框进行类别比较;根据第一目标候选框和第二目标候选框的坐标判断两候选框是否相交,并计算交集面积;根据第一目标候选框的坐标计算第一目标候选框的面积;根据第二目标候选框的坐标计算第二目标候选框的面积;根据第一目标候选框、第二目标候选框的坐标和第二预设阈值计算两目标候选框并集面积和交集面积阈值;根据交集面积和交集面积阈值对第一目标候选框和第二目标候选框进行非极大值抑制。

具体地,如图4和图5所示,设第一目标候选框的类别为ta,坐标为(xa1,ya1),(xa2,ya2),置信度为ca,设第二目标候选框的类别为tb,坐标为(xb1,yb1),(xb2,yb2),置信度为cb,非极大值抑制单元包括以下运算步骤:

s1:对第一目标候选框和第二目标候选框进行类别比较;

使用第一比较器比较ta和tb,当ta=tb时,执行步骤s2;当ta≠tb时,第一目标候选框和第二目标候选框均不会被抑制,将结果发送给目标暂存单元,并等待目标暂存单元发送待运算的目标候选框;

s2:根据第一目标候选框和第二目标候选框的坐标判断两者是否相交,并计算交集面积;

s2-1:通过第一比较器得到xa1和xb1中的较大值x1,使用第二比较器得到xa2和xb2中的较小值x2,使用第三比较器得到ya1和yb1中的较大值y1,使用第四比较器得到ya2和yb2中的较小值y2;

s2-2:通过第五比较器得到x1与x2的大小关系,使用第六比较器得到y1和y2的大小关系;

如果x1≥x2或y1≥y2,则第一目标候选框和第二目标候选框没有交集,如图5所示,第一目标候选框和第二目标候选框均不会被抑制,将结果发送给目标暂存单元,并等待目标暂存单元发送新的目标候选框;

如果x1<x2且y1<y2,则第一目标候选框和第二目标候选框存在交集,如图4所示,通过第一加减法器计算δx=x2-x1,通过第二加减法器计算δy=y2-y1,通过第一乘法器计算得到候选框的交集面积s∩=δx×δy;

s3:根据第一目标候选框的坐标计算其面积;

通过第一加减法器计算δxa=xa2-xa1,通过第二加减法器计算δya=ya2-ya1,然后通过第一乘法器计算得到第一目标候选框的面积sa=δxa×δya;

s4:根据第二目标候选框的坐标信息计算其面积;

通过第一加减法器计算δxb=xb2-xb1,通过第二加减法器计算δyb=yb2-yb1,再通过第一乘法器计算得到第二目标候选框的面积sb=δxb×δyb;

s5:根据坐标和第二预设阈值计算两目标候选框的并集面积和交集面积阈值;

通过第一加减法器和第二加减法器计算并集面积s∪=sa+sb-s∩,再通过第一乘法器计算得到交集面积比较阈值t∩=t2*s∪,其中,t2是第二预设阈值;

s6:根据交集面积和交集面积比较阈值对第一目标候选框和第二目标候选框进行非极大值抑制;

通过第一比较器计算t∩和s∩的大小关系;如果t∩≤s∩,则通过第二比较器计算第一目标候选框的置信度ca和第二目标候选框的置信度cb的大小关系,对置信度较小的目标候选框进行抑制;

如果t∩>s∩,则说明第一目标候选框和第二目标候选框交集过小,两目标候选框均不被抑制;

将结果发送给目标暂存单元,并等待目标暂存单元发送新的目标候选框。

在一些实施方式中,散列单元内部预设散列函数f(x)=(x%n)+1,其中,x为散列单元的输入的目标候选框的类别编号,n为目标处理模块的数量,散列单元输入的类别编号为x的目标候选框将被发送到第f(x)个目标处理模块。

下面通过具体实施例说明本发明的有效性。

如图6所示,外部输入8个目标候选框,编号分别为1-8,包含车、猫、人三种类别,对应类别编号分别为0、1、2,目标候选框按图中编号顺序送入本发明的装置。本实施例中的并行非极大值抑制运算装置包含2个目标处理模块,散列单元内部预设散列函数f(x)=(x%2)+1,第一预设阈值t1为0.6,第二预设阈值t2为0.5。

初级筛选模块接收外部输入的目标候选框,检测到6号目标候选框的置信度为0.4,小于t1,将其丢弃;将其他目标候选框发送给分发模块。

分发模块内的散列单元根据散列函数和目标候选框类别对目标候选框进行分发,将类别编号为0、2的目标候选框即1、2、7、8号目标候选框发送到1号目标处理模块,将类别编号为1的目标候选框即3、4、5号目标候选框发送到2号目标处理模块。

各目标处理模块对接收到的目标候选框进行非极大值抑制运算,表2为1号目标处理模块中目标暂存单元缓存队列变化过程,表3为2号目标处理模块中目标暂存单元缓存队列变化过程。

具体地,1号目标处理模块在接收目标候选框后,缓存队列包含有4个缓存项。在第1次运算时,选择1号和2号目标候选框进行非极大值抑制运算,由于1号和2号目标候选框类别相同且交集面积过大,根据置信度大小将2号目标候选框抑制。在第2、3次运算时,选择1号目标候选框分别和7号、8号目标候选框进行非极大值抑制运算,由于类别不同,各个目标候选框均不会被抑制。在第3次运算后,1号目标候选框已经与队列中所有抑制标记为0的目标候选框进行了非极大值抑制运算,将其发送给结果输出模块。在第4次运算时,选择7、8号目标候选框进行非极大值抑制运算,8号目标候选被抑制。在第4次运算后,将7号目标候选框发送给结果输出模块,此时缓存队列为空,1号目标处理模块停止运行。

2号目标处理模块在接收目标候选框后,缓存队列包含有3个缓存项。在第1次运算时,选择3号和4号目标候选框进行非极大值抑制运算,由于3号和4号目标候选框类别相同且交集面积过大,根据置信度大小将3号目标候选框抑制。在第2次运算时,选择4号和5号目标候选框进行非极大值抑制运算,由于交集面积过小,两目标候选框均不会被抑制。在第2次运算后,4号和5号目标候选框均与队列中所有抑制标记为0的目标候选框进行了非极大值抑制运算,将其发送给结果输出模块。此时缓存队列为空,2号目标处理模块停止运行。

结果输出模块接收到1号、4号、5号、7号目标候选框,分别对应图6中的车、男孩、女孩、猫;将其发送到装置外,非极大值抑制运算结束。

表21号目标处理模块中目标暂存单元缓存队列变化

表32号目标处理模块中目标暂存单元缓存队列变化

该实施例说明本发明的并行非极大值抑制运算装置能够对不同类别的目标候选框进行并行计算,从而快速高效地执行多类别非极大值抑制运算。

在本发明中,术语“第一”、“第二”、“第三”、“第四”仅用于描述目的,不能理解为指示或暗示相对重要性。术语“多个”指两个或两个以上,除非另有明确的限定。

以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1