CN116703695A - 非极大值抑制的硬件加速方法及系统 - Google Patents

非极大值抑制的硬件加速方法及系统 Download PDF

Info

Publication number
CN116703695A
CN116703695A CN202310644565.2A CN202310644565A CN116703695A CN 116703695 A CN116703695 A CN 116703695A CN 202310644565 A CN202310644565 A CN 202310644565A CN 116703695 A CN116703695 A CN 116703695A
Authority
CN
China
Prior art keywords
data
maximum suppression
sram
ddr
preset value
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202310644565.2A
Other languages
English (en)
Inventor
汪凯旋
沈沙
马斌
欧阳东宇
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hefei Kuxin Microelectronics Co ltd
Original Assignee
Hefei Kuxin Microelectronics Co ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Hefei Kuxin Microelectronics Co ltd filed Critical Hefei Kuxin Microelectronics Co ltd
Priority to CN202310644565.2A priority Critical patent/CN116703695A/zh
Publication of CN116703695A publication Critical patent/CN116703695A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/20Processor architectures; Processor configuration, e.g. pipelining
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/5044Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering hardware capabilities
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Abstract

本发明提供了一种非极大值抑制的硬件加速方法及系统,包括如下步骤:信息获取步骤:从DDR中获取信息;处理步骤:获取的信息进行排序和/或非极大值抑制操作。本发明通过采用兼容目标检测和角点检测的双模式,解决了适用范围窄的问题,增加了模块的可用性。

Description

非极大值抑制的硬件加速方法及系统
技术领域
本发明涉及硬件加速的技术领域,具体地,涉及一种非极大值抑制的硬件加速方法及系统。尤其是,优选的涉及一种兼容目标检测和角点检测的非极大值抑制的硬件加速方法。
背景技术
提高检测准确性的算法还有最大值抑制(Maximum Suppression,MS)、平滑L1损失算法(Smooth L1 Loss,SLL)和非极大值平均抑制(Non-Maximum Average Suppression,NMAS):
最大值抑制是NMS(非极大值抑制)的相反操作,它会保留较大的值,而不是抑制较小的值。该算法常用于选择具有最高置信度的目标。MS的缺点是无法处理重叠目标,因为它只选择具有最高置信度的目标。
平滑L1损失算法是一种目标检测算法,它用于计算预测边界框和真实边界框之间的距离。与NMS和MS不同,SLL不会抑制或选择目标,而是用于优化目标检测器的损失函数。其缺点是它可能过于依赖数据集的标注,从而导致模型在未见过的数据上表现不佳。
NMAS与NMS类似,但是它会计算预测框之间的平均值,而不是仅仅选择最大值。因此,NMAS可以在处理重叠目标时更加准确,但是它的计算复杂度比NMS更高,可能会导致较慢的处理速度。
这些算法的主要缺点是它们都需要进行复杂的计算,这可能会导致处理速度变慢。此外,它们的性能也可能受到一些因素的影响,例如预测框的数量和相互之间的重叠程度。因此,需要对这些算法进行优化,以获得更好的性能。
NMS算法的优点是能够有效地减少重复检测和降低误检率,提高目标检测的准确性和效率。此外,NMS算法实现简单,易于理解和优化。
公开号为CN114693943A的中国发明专利文献公开了一种用于目标检测的非极大值抑制加速方法、系统和设备,涉及图像识别技术领域,解决现有的非极大值抑制算法在候选边界框(候选框)数量较多的时候,算法耗时较多,影响算法整体收敛速度,其技术方案要点是:获取包含检测目标的目标图像,对目标图像进行特征提取,获得特征图,其中,特征图包括多个第一候选框;采用聚类算法对特征图的多个第一候选框的中心点进行聚类处理,获得多组第一候选框;采用非极大值抑制算法同时去除多组第一候选框中冗余的第一候选框,获得第二候选框;采用回归算法对第二候选框进行回归处理,获得检测目标的位置及类别信息。
公开号为CN115546009A的中国发明专利文献公开了一种非极大值抑制算法的优化方法、装置以及设备、存储介质。所述方法包括:基于M个第一GPU线程组中的GPU线程对全局内存中存储的N个候选框进行排序,包括:根据N和第一目标并行度确定排序轮次的数量和每个排序轮次所使用的第一GPU线程组的数量;在第i排序轮次中,所使用的各第一GPU线程组中的各GPU线程从第i-1排序轮次的排序结果中选择2i个候选框进行排序;基于K个第二GPU线程组中的GPU线程对排序后的候选框进行统计,其中,K根据N和第二目标并行度确定,根据统计结果对排序后的候选框进行分组,并根据针对每组候选框计算交并比IOU矩阵,以及根据IOU矩阵从N个候选框中确定出目标检测框。
针对上述中的相关技术,发明人认为其技术方案是使用cpu+gpu(中央处理器和图形处理器)的方式完成非极大值抑制,虽然速度较快,但是功耗和成本较高。且只能处理候选框的非极大值抑制。
发明内容
针对现有技术中的缺陷,本发明的目的是提供一种非极大值抑制的硬件加速方法及系统。
根据本发明提供的一种非极大值抑制的硬件加速方法,包括如下步骤:
信息获取步骤:从DDR中获取信息;
处理步骤:获取的信息进行排序和/或非极大值抑制操作。
优选的,在所述信息获取步骤中,获取的信息包括候选框信息或角点信息;
当候选框小于等于第一预设值或角点数量小于等于第二预设值时,从DDR中通过AXI总线取出数据;
当候选框大于第一预设值或角点数量大于第二预设值时,从DDR中把候选框以第一预设数量进行分组或者角点数量以第二预设数量进行分组,将分组数据通过AXI总线取出。
优选的,在所述处理步骤中,采用多块sram进行存放数据;一部分sram用于存放从DDR中获取的初始数据,另一部分sram用于存放排序和/或非极大值抑制操作后的数据。
优选的,在所述处理步骤中,当候选框小于等于第一预设值或角点数量小于等于第二预设值时,将取出的数据存放在一部分sram中,然后对一部分sram中的数据进行排序,将排序后的数据存回另一部分sram中。
优选的,在所述处理步骤中,从另一部分sram中读取排序后的数据,对排序后的数据进行角点检测或者目标检测的非极大值抑制操作,将非极大值抑制后的数据存回另一部分sram中,进而通过AXI总线存回DDR。
优选的,在所述处理步骤中,当候选框大于第一预设值或角点数量大于第二预设值时,将取出的分组数据通存入一部分sram中进行排序,将排序后的分组数据存回另一部分sram中;将另一部分sram中排序后的分组数据存入DDR中。
优选的,在所述处理步骤中,从DDR中通过AXI总线读取初始数据或排序后的分组数据进行非极大值抑制操作。
优选的,在所述处理步骤中,目标检测或角点检测均通过冒泡的方式排序。
根据本发明提供的一种非极大值抑制的硬件加速系统,包括如下模块:
信息获取模块:从DDR中获取信息;
处理模块:获取的信息进行排序和/或非极大值抑制操作。
优选的,在所述信息获取模块中,获取的信息包括候选框信息或角点信息;
当候选框小于等于第一预设值或角点数量小于等于第二预设值时,从DDR中通过AXI总线取出数据;
当候选框大于第一预设值或角点数量大于第二预设值时,从DDR中把候选框以第一预设数量进行分组或者角点数量以第二预设数量进行分组,将分组数据通过AXI总线取出。
与现有技术相比,本发明具有如下的有益效果:
1、本发明通过采用兼容目标检测和角点检测的双模式,解决了适用范围窄的问题,增加了模块的可用性;
2、本发明通过采用并行冒泡排序的优化结构,解决了排序耗时长的问题,提高了处理速度;
3、本发明通过采用可配模式,满足用户多种需求,大大提高了模块的灵活性。
附图说明
通过阅读参照以下附图对非限制性实施例所作的详细描述,本发明的其它特征、目的和优点将会变得更明显:
图1为非极大值抑制的整体架构图(候选框小于512或角点小于1024);
图2为非极大值抑制的整体架构图(候选框大于512或角点大于1024);
图3为128个候选框的冒泡排序图;
图4为候选框在sram中的存放格式及排序顺序图;
图5为目标检测冒泡排序优化结构图;
图6为128个角点的冒泡排序图;
图7为角点在sram中的存放格式及排序顺序图;
图8为角点检测冒泡排序优化结构图。
具体实施方式
下面结合具体实施例对本发明进行详细说明。以下实施例将有助于本领域的技术人员进一步理解本发明,但不以任何形式限制本发明。应当指出的是,对本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变化和改进。这些都属于本发明的保护范围。
本发明实施例公开了一种兼容目标检测和角点检测的非极大值抑制的硬件加速方法,兼容目标检测和角点检测的非极大值抑制模块从ddr(双倍速率同步动态随机存储器)中获取候选框或角点信息,依次进行排序、非极大值抑制操作,最终获得有效的候选框或角点。
本模块为了节省面积,使用16块128×48大小的sram(Static Random-AccessMemory,静态随机存取存储器)进行存放数据。候选框有效信息为16bit的置信度和四个16bit的坐标信息。角点数据由响应值和坐标信息组成,需48bit。
16块sram,其中8块用来存放初始数据,8块用来排序或非极大值抑制操作后存放数据。
因为该模块的整体架构分为两种情况:候选框小于等于512个或角点数量小于等于1024个;候选框大于512个或角点数量大于1024个。
a.候选框小于等于512个或角点数量小于等于1024个。
从图1可以看出,当候选框小于等于512或者角点数量小于等于1024时,该模块的一个处理流程为,使用axi总线从ddr中取出数据,将取出的数据存放在8块128x48大小的sram中,然后通过排序读写控制模块对sram中的数据进行排序,排序完成后将数据在存回另外的8块sram。然后通过nms读写控制模块读取sram中排完序的数据,对数据进行角点或者目标检测的非极大值抑制操作。操作完成后将数据通过axi读写控制模块存回ddr。nms_top表示非极大值抑制顶层模块,core_top表示核心处理模块。
b.候选框大于512个或角点数量大于1024个。
从图2可以看出,如果候选框大于512或者角点数量大于1024时,则需要把候选框以512为一组或者角点数量1024个为一组进行排序,排好序的多组数据存回ddr中,在ddr中通过axi读写控制模块读取数据进行非极大值抑制处理。
非极大值抑制分为两步完成:第一步对得到的数据进行排序,第二步对排完序后的数据进行非极大值抑制处理。接下来对操作流程进行详细介绍:
一、冒泡排序:
目标检测的冒泡排序:在进行冒泡排序时,首先进行最小片段128个框的冒泡排序,排序操作如图3所示。进行128个候选框排序时,取置信度进行比较。首先取两个候选框的信息(四个sram位置的数据)进行比较,将置信度大的写回sram中,然后向下接着取数,与留下来的数据进行比较,完成第一轮操作。第二轮操作从头开始,在第127个框的时候结束。第三轮到第126个框结束,反复如此完成127轮操作,就完成了冒泡排序。完成128个候选框的排序后,接下来进行更多数量的排序。读地址为读sram中对应地址的数,写地址为将比较后较大的数写回sram的地址中。(x1,y1)和(x2,y2)分别表示候选框坐下角点和右上角点的坐标。
从图4可以看到,一个候选框信息存在两个sram的相同位置。在对目标检测进行排序时,最大支持512个候选框排序。左边的8个sram可以存放512个框,第一步进行128个框的冒泡排序,完成排序后存放在右边的sram中。第二步进行256个框的排序,排完序存放在左边的sram。第三步进行512个候选框的排序,排完序后存放在右边的sram。最终得到排完序的数据。
图5是目标检测冒泡排序优化示例。取两个排完序的片段的最大值进行对比,将其中大的数据写回sram,然后取较大数据的下一个数与剩下的进行比较,循环比较直至完成所有数据的排序。
角点检测的冒泡排序:角点数据由响应值和坐标信息组成,需48bit。所以8块sram可以存放1024个数据。首先进行128个角点的冒泡排序,排序操作如图6所示。角点检测与目标检测在128个数量级的冒泡排序方法完全相同。其中,读0地址表示读取sram中0地址的数据,写0地址表示将数据比较后较大的值写回sram中的0地址。(x,y)表示角点的坐标。分别占16bit存在sram中。
图7是角点在sram中的存放格式及排序顺序,图8是角点检测冒泡排序的优化示例。与目标检测方法相同,不同点在于角点数量多一倍,所以需要多一轮的比较排序。
二、非极大值抑制:目标检测的非极大值抑制。
目标检测的非极大值抑制步骤为:①排完序的数据为边界框列表,选择置信度最高边界框添加到最终输出列表中,将其从边界框列表中删除;②计算所有边界框的面积;③计算置信度最高的边界框与其它候选框的IoU;④删除IoU大于阈值的边界框;⑤重复上述过程,直至边界框列表为空。
角点检测的非极大值抑制:角点检测使根据响应值进行非极大值抑制,步骤如下:①排完序的角点为初始序列,选择最大响应值放到最终输出列表中,并将其从初始序列中删除;②与其他值进行距离计算,小于阈值的去除,大于阈值的保留;③重复上述步骤,直至初始序列为空。
三、模式可选择:由于该硬件模块的排序操作和非极大值抑制操作均是从ddr或sram中取数据,操作分离开。所以支持仅进行排序,支持仅进行非极大值抑制,也支持排完序进行非极大值抑制操作。
本发明将非极大值抑制做在硬件中,大大的降低了成本和功耗,计算效率更高,同时还兼容对点的非极大值抑制功能。在有非极大值抑制需求的地方,有一定的通用性,可以做到即插即用。
本发明兼容目标检测和角点检测的非极大值抑制模块,可以做到即插即用。在排序操作时,将输入序列切分,并行进行排序,大大降低时间。该模块具有可配模式,支持仅进行排序,支持仅进行非极大值抑制,也支持排完序进行非极大值抑制操作。
本发明还提供一种非极大值抑制的硬件加速系统,所述非极大值抑制的硬件加速系统可以通过执行所述非极大值抑制的硬件加速方法的流程步骤予以实现,即本领域技术人员可以将所述非极大值抑制的硬件加速方法理解为所述非极大值抑制的硬件加速系统的优选实施方式。
该系统包括如下模块:
信息获取模块:从DDR中获取信息;获取的信息包括候选框信息或角点信息;当候选框小于等于第一预设值或角点数量小于等于第二预设值时,从DDR中通过AXI总线取出数据;当候选框大于第一预设值或角点数量大于第二预设值时,从DDR中把候选框以第一预设数量进行分组或者角点数量以第二预设数量进行分组,将分组数据通过AXI总线取出。
处理模块:获取的信息进行排序和/或非极大值抑制操作。
本领域技术人员知道,除了以纯计算机可读程序代码方式实现本发明提供的系统及其各个装置、模块、单元以外,完全可以通过将方法步骤进行逻辑编程来使得本发明提供的系统及其各个装置、模块、单元以逻辑门、开关、专用集成电路、可编程逻辑控制器以及嵌入式微控制器等的形式来实现相同功能。所以,本发明提供的系统及其各项装置、模块、单元可以被认为是一种硬件部件,而对其内包括的用于实现各种功能的装置、模块、单元也可以视为硬件部件内的结构;也可以将用于实现各种功能的装置、模块、单元视为既可以是实现方法的软件模块又可以是硬件部件内的结构。
以上对本发明的具体实施例进行了描述。需要理解的是,本发明并不局限于上述特定实施方式,本领域技术人员可以在权利要求的范围内做出各种变化或修改,这并不影响本发明的实质内容。在不冲突的情况下,本申请的实施例和实施例中的特征可以任意相互组合。

Claims (10)

1.一种非极大值抑制的硬件加速方法,其特征在于,包括如下步骤:
信息获取步骤:从DDR中获取信息;
处理步骤:获取的信息进行排序和/或非极大值抑制操作。
2.根据权利要求1所述的非极大值抑制的硬件加速方法,其特征在于,在所述信息获取步骤中,获取的信息包括候选框信息或角点信息;
当候选框小于等于第一预设值或角点数量小于等于第二预设值时,从DDR中通过AXI总线取出数据;
当候选框大于第一预设值或角点数量大于第二预设值时,从DDR中把候选框以第一预设数量进行分组或者角点数量以第二预设数量进行分组,将分组数据通过AXI总线取出。
3.根据权利要求2所述的非极大值抑制的硬件加速方法,其特征在于,在所述处理步骤中,采用多块sram进行存放数据;一部分sram用于存放从DDR中获取的初始数据,另一部分sram用于存放排序和/或非极大值抑制操作后的数据。
4.根据权利要求3所述的非极大值抑制的硬件加速方法,其特征在于,在所述处理步骤中,当候选框小于等于第一预设值或角点数量小于等于第二预设值时,将取出的数据存放在一部分sram中,然后对一部分sram中的数据进行排序,将排序后的数据存回另一部分sram中。
5.根据权利要求4所述的非极大值抑制的硬件加速方法,其特征在于,在所述处理步骤中,从另一部分sram中读取排序后的数据,对排序后的数据进行角点检测或者目标检测的非极大值抑制操作,将非极大值抑制后的数据存回另一部分sram中,进而通过AXI总线存回DDR。
6.根据权利要求3所述的非极大值抑制的硬件加速方法,其特征在于,在所述处理步骤中,当候选框大于第一预设值或角点数量大于第二预设值时,将取出的分组数据通存入一部分sram中进行排序,将排序后的分组数据存回另一部分sram中;将另一部分sram中排序后的分组数据存入DDR中。
7.根据权利要求2或6所述的非极大值抑制的硬件加速方法,其特征在于,在所述处理步骤中,从DDR中通过AXI总线读取初始数据或排序后的分组数据进行非极大值抑制操作。
8.根据权利要求1所述的非极大值抑制的硬件加速方法,其特征在于,在所述处理步骤中,目标检测或角点检测均通过冒泡的方式排序。
9.一种非极大值抑制的硬件加速系统,其特征在于,包括如下模块:
信息获取模块:从DDR中获取信息;
处理模块:获取的信息进行排序和/或非极大值抑制操作。
10.根据权利要求9所述的非极大值抑制的硬件加速系统,其特征在于,在所述信息获取模块中,获取的信息包括候选框信息或角点信息;
当候选框小于等于第一预设值或角点数量小于等于第二预设值时,从DDR中通过AXI总线取出数据;
当候选框大于第一预设值或角点数量大于第二预设值时,从DDR中把候选框以第一预设数量进行分组或者角点数量以第二预设数量进行分组,将分组数据通过AXI总线取出。
CN202310644565.2A 2023-05-31 2023-05-31 非极大值抑制的硬件加速方法及系统 Pending CN116703695A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202310644565.2A CN116703695A (zh) 2023-05-31 2023-05-31 非极大值抑制的硬件加速方法及系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202310644565.2A CN116703695A (zh) 2023-05-31 2023-05-31 非极大值抑制的硬件加速方法及系统

Publications (1)

Publication Number Publication Date
CN116703695A true CN116703695A (zh) 2023-09-05

Family

ID=87842671

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202310644565.2A Pending CN116703695A (zh) 2023-05-31 2023-05-31 非极大值抑制的硬件加速方法及系统

Country Status (1)

Country Link
CN (1) CN116703695A (zh)

Similar Documents

Publication Publication Date Title
US10255547B2 (en) Indirectly accessing sample data to perform multi-convolution operations in a parallel processing system
KR102659997B1 (ko) 저전력 컨볼루션 신경망 추론 애플리케이션을 위한 메모리 대역폭 감소 기술
US10417555B2 (en) Data-optimized neural network traversal
US9971959B2 (en) Performing object detection operations via a graphics processing unit
US9305392B2 (en) Fine-grained parallel traversal for ray tracing
GB2542131B (en) Graphics processing method and system for processing sub-primitives
US11836608B2 (en) Convolution acceleration with embedded vector decompression
US20130141448A1 (en) Graphics Command Generation Device and Graphics Command Generation Method
US11455781B2 (en) Data reading/writing method and system in 3D image processing, storage medium and terminal
US20140168228A1 (en) Fine-grained parallel traversal for ray tracing
US8072454B1 (en) Parallel processing system, method, and computer program product for selecting a ray tracing entity from a group of ray tracing entities for processing
US7401177B2 (en) Data storage device, data storage control apparatus, data storage control method, and data storage control program
CN116529775A (zh) 用于光线追踪的合并函数调用的方法和装置
CN112734827A (zh) 一种目标检测方法、装置、电子设备和存储介质
CN116703695A (zh) 非极大值抑制的硬件加速方法及系统
JP7069898B2 (ja) 学習識別装置および学習識別方法
US8059123B1 (en) Parallel processing system, method, and computer program product for postponing the execution of primitive intersection
US11281935B2 (en) 3D object detection from calibrated 2D images
US8749567B2 (en) Apparatus for and method of processing vertex
CN107169313A (zh) Dna数据文件的读取方法及计算机可读存储介质
CN112905239B (zh) 一种基于fpga的点云预处理加速方法、加速器及电子设备
CN108809726B (zh) 盒覆盖节点的方法和系统
CN112068948A (zh) 数据散列方法、可读存储介质和电子设备
CN110490312A (zh) 一种池化计算方法和电路
CN114090470B (zh) 数据预加载装置及其预加载方法、存储介质和计算机设备

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination