CN111340790B - 包围盒的确定方法、装置、计算机设备和存储介质 - Google Patents
包围盒的确定方法、装置、计算机设备和存储介质 Download PDFInfo
- Publication number
- CN111340790B CN111340790B CN202010135898.9A CN202010135898A CN111340790B CN 111340790 B CN111340790 B CN 111340790B CN 202010135898 A CN202010135898 A CN 202010135898A CN 111340790 B CN111340790 B CN 111340790B
- Authority
- CN
- China
- Prior art keywords
- thread
- bitmap
- target
- bounding box
- bit
- 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.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T7/00—Image analysis
- G06T7/0002—Inspection of images, e.g. flaw detection
-
- Y—GENERAL 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
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE 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/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Quality & Reliability (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Image Analysis (AREA)
- Image Processing (AREA)
Abstract
本申请涉及一种包围盒的确定方法、装置、计算机设备和存储介质。所述方法包括:获取线程组所包含的线程中的位图;其中,任意线程的位图对应有独立的至少一个初始包围盒,初始包围盒为对目标物体进行图像目标检测得到的检测框;并行运行线程组中的各个线程,以使第一剩余线程中的位图和第一目标线程中的位图进行第一位与运算;其中,第一目标线程从线程组中选择得到,第一剩余线程为线程组中除去第一目标线程的线程;根据第一位与运算的结果,得到线程组各个线程所对应的初始包围盒之间的重叠信息;根据重叠信息从线程组各个线程所对应的初始包围盒中确定独立的包围盒,作为目标物体的目标包围盒。整个包围盒的确定过程可以快速完成。
Description
技术领域
本申请涉及包围盒的确定技术领域,特别是涉及一种包围盒的确定方法、装置、计算机设备和存储介质。
背景技术
非极大值抑制在人工智能物体检测后处理中有广泛应用。神经网络计算出到大量物体的包围盒以及每个包围盒对应的一个分数。用非极大值抑制方法(Non MaxImumsuppression,NMS)可以去除大部分重复的包围盒并选取其中分数最高的点作为被检测物体最合适的包围盒,从而达到检测物体类型、位置和大小的目的。非极大值抑制算法本身可以考虑并行计算来提高速度,那么如何在并行算法下达到效率和能耗的最佳搭配,即采用更少的GPU(图形处理器,Graphics Processing Unit)硬件资源能做到更多更快的NMS检测,就是一个非常重要的问题。
传统技术中,通过映射-化简(map-reduce)操作之后从初始的包围盒中选择出最适合的目标包围盒。但是,发明人发现传统技术中对包围盒信息进行存储占用的线程多,导致一次线程运行所针对的包围盒数量少,使得包围盒的确定效率较低。
需要说明的是,在上述背景技术部分公开的信息仅用于加强对本发明的背景的理解,因此可以包括不构成对本领域普通技术人员已知的现有技术的信息。
发明内容
基于此,有必要针对上述技术问题,提供一种能够快速确定目标包围盒的包围盒的确定方法、装置、计算机设备和存储介质。
一种包围盒的确定方法,所述方法包括:
获取线程组所包含的线程中的位图;其中,任意线程的所述位图对应有独立的至少一个初始包围盒,所述初始包围盒为对目标物体进行图像目标检测得到的检测框;
并行运行所述线程组中的各个线程,以使第一剩余线程中的位图和第一目标线程中的位图进行第一位与运算;其中,所述第一目标线程从所述线程组中选择得到,所述第一剩余线程为所述线程组中除去所述第一目标线程的线程;
根据所述第一位与运算的结果,得到所述线程组各个线程所对应的初始包围盒之间的重叠信息;
根据所述重叠信息从所述线程组各个线程所对应的初始包围盒中确定独立的包围盒,作为所述目标物体的目标包围盒。
一种包围盒的确定装置,所述装置包括:
位图获取模块,用于获取线程组所包含的线程中的位图;其中,任意线程的所述位图对应有独立的至少一个初始包围盒,所述初始包围盒为对目标物体进行图像目标检测得到的检测框;
位图运算模块,用于并行运行所述线程组中的各个线程,以使第一剩余线程中的位图和第一目标线程中的位图进行第一位与运算;其中,所述第一目标线程从所述线程组中选择得到,所述第一剩余线程为所述线程组中除去所述第一目标线程的线程;
重叠信息确定模块,用于根据所述第一位与运算的结果,得到所述线程组各个线程所对应的初始包围盒之间的重叠信息;
包围盒确定模块,用于根据所述重叠信息从所述线程组各个线程所对应的初始包围盒中确定独立的包围盒,作为所述目标物体的目标包围盒。
一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现以下步骤:
获取线程组所包含的线程中的位图;其中,任意线程的所述位图对应有独立的至少一个初始包围盒,所述初始包围盒为对目标物体进行图像目标检测得到的检测框;
并行运行所述线程组中的各个线程,以使第一剩余线程中的位图和第一目标线程中的位图进行第一位与运算;其中,所述第一目标线程从所述线程组中选择得到,所述第一剩余线程为所述线程组中除去所述第一目标线程的线程;
根据所述第一位与运算的结果,得到所述线程组各个线程所对应的初始包围盒之间的重叠信息;
根据所述重叠信息从所述线程组各个线程所对应的初始包围盒中确定独立的包围盒,作为所述目标物体的目标包围盒。
一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现以下步骤:
获取线程组所包含的线程中的位图;其中,任意线程的所述位图对应有独立的至少一个初始包围盒,所述初始包围盒为对目标物体进行图像目标检测得到的检测框;
并行运行所述线程组中的各个线程,以使第一剩余线程中的位图和第一目标线程中的位图进行第一位与运算;其中,所述第一目标线程从所述线程组中选择得到,所述第一剩余线程为所述线程组中除去所述第一目标线程的线程;
根据所述第一位与运算的结果,得到所述线程组各个线程所对应的初始包围盒之间的重叠信息;
根据所述重叠信息从所述线程组各个线程所对应的初始包围盒中确定独立的包围盒,作为所述目标物体的目标包围盒。
上述包围盒的确定方法、装置、计算机设备和存储介质,通过线程中的位图来记录初始包围盒的信息,且同一线程中的初始包围盒为独立的包围盒,即同一线程所对应的初始包围盒之间是不重叠的,通过并行运行线程组中的线程的方式快速确定线程组各个线程所对应的初始包围盒之间的重叠信息,进而从初始包围盒中确定出相互独立的目标包围盒,整个包围盒的确定过程可以快速完成。
附图说明
图1为一个实施例中包围盒的确定方法的应用环境图;
图2为一个实施例中包围盒的确定方法的流程示意图;
图3为一个实施例中从初始包围盒到目标包围盒的过程示意图;
图4为一个实施例中线程组内线程的结构示意图;
图5为一个实施例中对线程中的位进行更新的流程示意图;
图6为一个实施例中内核函数的结构框图;
图7为一个实施例中流式多处理器的结构示意图;
图8为一个实施例中位图进行位与运算的过程示意图;
图9为一个实施例中线程逐步化简的过程示意图;
图10为一个实施例中一级化简的结构示意图;
图11为一个实施例中原子操作化简的结构示意图;
图12为一个实施例中二级化简的结构示意图;
图13为一个实施例中包围盒的确定装置的结构示意图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
本申请提供的包围盒的确定方法,可以应用于如图1所示的计算机设备中,该计算机设备可以是终端,其内部结构图可以如图1所示。该计算机设备包括通过***总线连接的处理器、存储器、通信接口、显示屏和输入装置。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作***和计算机程序。该内存储器为非易失性存储介质中的操作***和计算机程序的运行提供环境。该计算机设备的通信接口用于与外部的终端进行有线或无线方式的通信,无线方式可通过WIFI、运营商网络、NFC(近场通信)或其他技术实现。该计算机程序被处理器执行时以实现一种包围盒的确定方法。该计算机设备的显示屏可以是液晶显示屏或者电子墨水显示屏,该计算机设备的输入装置可以是显示屏上覆盖的触摸层,也可以是计算机设备外壳上设置的按键、轨迹球或触控板,还可以是外接的键盘、触控板或鼠标等。
本领域技术人员可以理解,图1中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
在一个实施例中,如图2所示,提供了一种包围盒的确定方法,本实施例以该方法应用于计算机设备(该计算机设备中可以配置有NVIDIA英伟达GPU)进行举例说明,可以理解的是,该方法也可以应用于服务器,还可以应用于包括计算机设备和服务器的***,并通过计算机设备和服务器的交互实现。本实施例中,该方法包括以下步骤:
S201、获取线程组所包含的线程中的位图;其中,任意线程的所述位图对应有独立的至少一个初始包围盒,所述初始包围盒为对目标物体进行图像目标检测得到的检测框。
其中,目标物体可以指图像或视频(可以将视频拆分为多个图像帧)中的物体,可以是图像中某个或某些物体,例如,自动驾驶领域中,可以将红绿灯图像中三个灯可以分别作为目标物体。进一步的,可以通过Fast R-CNN、Faster R-CNN、FPN、YOLO、SSD和RetinaNet等算法来进行目标物体的检测,这些算法对图像中的特征进行分析,将可能是目标物体的区域通过检测框(可以是矩形框等)的方式在图像中形成包围盒,同时,这些包围盒还可以对应有分数(这个分数可以是包围盒与目标物体在尺寸上的匹配度,也在一定程度上反映了包围盒属于最匹配的包围盒的概率)。本步骤将算法检测出的所有包围盒确定为初始包围盒,如图3左侧所示,通过算法确定出三个灯的包围盒,为便于进行后续的图像处理过程,一个目标物体往往只需要一个最为准确的目标包围盒,因此,需要从这些初始包围盒中进行选择,保证通过最少的包围盒选中图像中的所有目标物体(如图3右侧所示)。
进一步的,各线程中的位图在位数上可以一致,例如,都为8位、16位、32位等,另外,位图可以是二值位图等。
各个初始包围盒分别对应线程组某一线程中位图的某一个位,根据同一线程中各个初始包围盒之间的位置重叠信息确定出该线程所对应的初始包围盒,并据此向该线程中位图的各个位上填充相应的位值。在进行两两相交的包围盒判断之中,多位位图的使用,和传统算法中整形存储方式对比,对内存使用率和GPU运算资源使用率都有大量提高,使得在单个线程组内大量包围盒处理变成可能。对于低功耗GPU来说,计算资源非常宝贵,位图的使用让寄存器,内存带宽等主要资源的使用得到大幅减少,另外单个线程块的使用也避免了大量的内存和缓存的同步。
进一步的,当位图为二值位图时,每一位可以填充0或1,当确定某个初始包围盒不独立时,可以将其对应的位值确定为0,当确定某个初始包围盒独立时,可以将其对应的位值确定为1。具体的,如果初始包围盒A独立于同一线程所对应的其他初始包围盒(即不重叠或者重叠区域小于设定阈值),则认为该初始包围盒A是独立的包围盒,则其对应的位值可以确定为1,相反的,如果初始包围盒B与同一线程所对应的其他初始包围盒相重叠(或者重叠区域大于设定阈值),则认为该初始包围盒B不是独立的包围盒,则其对应的位值可以确定为0。
一个线程组中的线程所包含的位图的示意图可以如图4所示。该线程组包含有m个线程(m的大小可以由计算机设备的硬件参数确定,例如为32),每个线程中包含有n个位图(n的大小也可以由计算机设备的硬件参数确定,例如为2014),而每个位图中由32位,其中,每一位对应一个初始包围盒(可以对初始包围盒进行编号,按照编号大小的顺序将线程中的各个位与初始包围盒建立对应关系,例如,图3中从左到右从上到下的位图分别对应编号逐步变大的初始包围盒),以第0个线程的第1个位图为例,该位图中填充有“0”和“1”的位值,其中,“1”表示对应的初始包围盒与同一线程中其他的初始包围盒不重叠。
在一些实施例中,线程组的个数可以不止一个,线程组的个数也可以根据计算机设备的硬件参数确定。
S202、并行运行所述线程组中的各个线程,以使第一剩余线程中的位图和第一目标线程中的位图进行第一位与运算(and);其中,所述第一目标线程从所述线程组中选择得到,所述第一剩余线程为所述线程组中除去所述第一目标线程的线程。
其中,第一目标线程可以从线程组的各个线程中随机选择,也可以是定向选择。以图4中的线程组为例,可以将第0个线程确定为第一目标线程,进一步的,将第1~(m-1)的线程确定为第一剩余线程,进一步的,将1~(m-1)线程逐步与第0线程进行位与运算,即可以得到线程组中各个线程的位与运算结果。
在进行位与运算之前,可以包括分析第一剩余线程所对应的初始包围盒与第一目标线程所对应的初始包围盒的重叠关系以及根据该重叠关系重新确定各个线程中各个位图的位值的过程。为便于理解,对位图进行颜色填充,以第0线程与第1线程进行位与运算为例,如图5所示(图5中的各个线程中的位图简化为一个位图且该位图为8位),图5上半部分中黑色的方框即表示第0线程和第1线程中独立的包围盒,从中可以看出,有6个独立的包围盒,在进行位与运算后,可以从这6个包围盒中确定出独立的包围盒(确定过程与前述方法一致),如图5下半部分所示,从中确定出4个独立包围盒,因此,将独立包围盒的位值确定为1,非独立包围盒确定为0(灰色方框501),而其他包围盒的位值确定为1,此时进行位与运算即可以从中确定出独立的目标包围盒。
在一个实施例中,所述并行运行所述线程组中的各个线程,以使第一剩余线程中的位图和第一目标线程中的位图进行第一位与运算的步骤,包括:并行运行所述线程组中的各个线程,以使第一剩余线程中位图的位值分别与第一目标线程中位图的位值进行第一位与运算。
S203、根据所述第一位与运算的结果,得到所述线程组各个线程所对应的初始包围盒之间的重叠信息。
根据S202的描述可知,根据第一位与运算的结果可以确定出第一剩余线程所对应的初始包围盒相对于第一目标线程所对应的初始包围盒的独立包围盒。进一步的,可以确定这些独立的包围盒之间的重叠信息,根据该重叠信息对线程中的位图进行调整,并重新进行位与运算,以从这些独立的包围盒中确定出目标包围盒(即S204实现的步骤)。
S204、根据所述重叠信息从所述线程组各个线程所对应的初始包围盒中确定独立的包围盒,作为所述目标物体的目标包围盒。
所确定的目标包围盒为能够独立表征图像中的目标物体的包围盒,据此可以进行后续对目标物体进行分析的过程(例如:追踪目标车辆在下一帧的位置、确定红绿灯在后续的哪一帧颜色会发生变化等)。
上述包围盒的确定方法中,通过线程中的位图来记录初始包围盒的信息,一个位图可以记录多个初始包围盒的信息,且同一线程中的初始包围盒为独立的包围盒,即同一线程所对应的初始包围盒之间是不重叠的,通过并行运行线程组中的线程的方式快速确定线程组各个线程所对应的初始包围盒之间的重叠信息,进而从初始包围盒中确定出相互独立的目标包围盒,整个包围盒的确定过程可以快速完成。在软件方案的情况下,仍然可以做到充分发挥硬件性能。在极少占用资源的情况下完成大量包围盒的非极大值抑制处理,做到在传统方法下无法完成的任务。另外,在高功耗平台不考虑占有率的情况下,速度还可以进一步提高。
在一个实施例中,所述获取线程组所包含的线程中的位图的步骤之前,还包括:从目标线程所对应的目标初始包围盒中确定第一包围盒以及第二包围盒;所述目标线程为所述线程组中的任意线程;所述第一包围盒逐步遍历所述目标初始包围盒,所述第二包围盒为所述目标初始包围盒中除去所述第一包围盒的包围盒;确定所述第一包围盒和所述第二包围盒之间的位置重叠度;分别获取所述第一包围盒以及所述第二包围盒与所述目标物体在尺寸上的匹配值,得到第一匹配值和第二匹配值;若所述位置重叠度高于预设阈值(threshold,其大小可以根据实际情况确定,例如为0.8等),且所述第二匹配值高于所述第一匹配值,则将所述第一包围盒在目标位图上对应的位值确定为0,得到所述目标位图中各个位的位值;所述目标位图为所述目标线程所对应的位图。
其中,位置重叠度可以通过包围盒相交部分的面积大小来表征。
进一步的,在一个实施例中,所述将所述第一包围盒在目标位图上对应的位值确定为0,得到所述目标位图中各个位的位值的步骤,包括:确定所述第一包围盒的编号;所述编号对应所述目标位图中的某一位;按照所述编号将0作为位值填充到所述目标位图的对应位上;若所述第一包围盒已遍历所有所述目标初始包围盒,则向剩余位中填充1,得到所述目标位图中各个位的位值;所述剩余位为所述目标位图中未填充0的位。
本实施例根据初始包围盒的信息填充位图的过程可以理解为映射过程。以图4为例,本实施例的映射过程可以如下:
1、将第0个线程确定为目标线程,将目标线程中的每个32位图初始化为0xFFFFFFFF。对于此32×n内存位图的每一位进行填充,其填充逻辑如下:
1.1、将序号为1的位(bit)对应的包围盒确定为第一包围盒C11,确定第一包围盒与其他1~(32×n-1)序列号下的第二包围盒之间相交的程度,如果第一包围盒C11与某一第二包围盒C12的相交面积大于一定阈值,并且该第二包围盒C12的匹配度分数比第一包围盒C11分数更高,那么该序号为1的bit被设置为0,否则,如果该第一包围盒C11与所有第二包围盒比较完之后都不满足上述条件,则表示该第一包围盒C11并未被其他包围盒所覆盖,因此将其在位图中的位保持不变(仍旧保持为1)。
1.2、将序号为2的位对应的包围盒确定为第一包围盒C21,确定第一包围盒C21与其他2~(32×n-1)序列号下的第二包围盒之间相交的程度,按照与1.1同样的方式确定出C21在位图中的位值。
1.3、按照上述方法逐步遍历第0个线程中所对应的各个初始包围盒,完成第0线程中位图的映射过程。
2、将第1个线程确定为目标线程,将目标线程中的每个32位图初始化为0xFFFFFFFF。对于此32×n内存位图的每一位进行填充,其填充逻辑参照第0个线程。
3、按照上述方法逐步遍历线程组中的其他线程,完成线程组中各个线程位图的映射过程。
其中,对于一个线程的映射可以认为一次(one pass)计算,可以进行32x n个包围盒的映射。
通过上述映射过程可以使得同一线程中位图的各个位所对应的初始包围盒是相互独立的,此时可以理解为已从初始包围盒中进行了粗略筛选,将同一个线程中被重叠的初始包围盒去除,通过这样的方式能有效减少后续线程间运算的运算量,提高包围盒的确定效率。
在一个实施例中,所述获取线程组所包含的线程中的位图的步骤,包括:通过目标内核函数,获取线程组所包含的线程中的位图;所述并行运行所述线程组中的各个线程,以使第一剩余线程中的位图和第一目标线程中的位图进行第一位与运算的步骤,包括:通过所述目标内核函数,并行运行所述线程组中的各个线程,以使第一剩余线程中的位图和第一目标线程中的位图进行第一位与运算。
其中,将初始包围盒的信息填充到位图的各个位上的过程可以理解为映射过程,而对位图进行运算以从数量众多的初始包围盒中确定目标包围盒的过程可以理解为化简过程。本实施例的映射过程可以通过内核函数中的映射模块实现,即映射模块负责统计包围盒之间两两相交的情况;化简过程可以通过内核函数中的化简模块实现,即化简模块负责统计满足条件的包围盒。内核函数中的映射模块和化简模块可以如图6所示。
本实施例中的映射过程和化简过程在同一个内核函数内完成,因此,如图7所示,此方法只需要占用GPU上8个流式多处理器(Streaming Multiprocessors,SM)中的一个内核函数(此内核)。因此,本实施例节省了内存和缓存的同步(在进行化简过程时,不需要从缓存中读取映射过程得到的结果,有效缩减了处理时间),而对于CPU则,有效缩减了GPU提交任务以及分配任务的时间。
在一个实施例中,所述线程组中的各个线程包含有预设数量横向排布的位图;所述预设数量根据硬件参数确定;所述并行运行所述线程组中的各个线程,以使第一剩余线程中的位图和第一目标线程中的位图进行第一位与运算的步骤,包括:并行运行所述线程组中的各个线程,以使所述第一剩余线程中的位图由横向变为纵向,并将纵向的所述第一剩余线程中的位图与横向的所述第一目标线程的位图进行第一位与运算,得到纵向的第一位与运算的结果。
其中,横向排布的位图可以如图4所示,m即为前述预设数量。硬件参数可以指计算机设备中GPU的线程数,以英伟达系列图形显卡为例,该预设数量可以为32。
将纵向的所述第一剩余线程中的位图与横向的所述第一目标线程的位图进行第一位与运算,得到纵向的第一位与运算的结果可以如图8所示,分别将图8中横向的各个位值与纵向的各个位值进行与运算,则可以得到右侧纵向的结果。如图8所示,两个方向的位图进行位与运算后变成了只有一个方向的位图,即进行一次运算循环(所有第一剩余线程与第一目标线程均完成位与运算认为是一次运算循环)后可将现有当前参与化简的线程内的结果化简到的前一半线程当中。进一步的,上述第一位与运算可以不止一次,而是进行多次,直到一个线程组内的所有位图集中到一个线程中(可以选择第0个线程)。如图9所示,假设一个线程组内包含有32个线程(32b),则该线程组内的线程完成一次位与运算后,变为16个线程,基于这16个线程继续进行位与运算,则变为8个线程,以此类推,直到所有位图集中到一个线程中。传统方法中通过int来存储初始包围盒的信息,一个int存储一个初始包围盒,在进行位与运算时,需要逐个将线程中的位图进行运算,一次循环只能进行n个位与运算;而本发明实施例通过位图中的位来存储初始包围盒的信息,以32位位图为例,一次循环可以进行n×32个位与运算,这样的处理方式有效提高了运算速度,提高了包围盒的确定效率。基于此,经过log(m)次操作即可完成传统方法下m次操作的内容,速度提高率m/log(m)。其中,对于英伟达GPU来说,m=32。
本发明实施例中,由于通过位图中的各个位分别与初始包围盒进行映射,因此,进行一级位与运算,还未实现确定所有初始包围盒两两之间的重叠情况进而去除重叠包围盒的目的,因此,还可以进行第二级的位与运算。如果进行第二级位与运算,则第一级位与运算可以理解为一级化简(一级化简的示意图可以如图10所示),第二级位与运算可以理解为二级化简。在一些实施例中,也可以不进行第二级的位与运算,还是通过其他的方法从一级位与运算的结果中确定出目标包围盒,例如,根据一级位与运算的结果所剩下的初始包围盒,将其中匹配值高于预设阈值的初始包围盒确定为目标包围盒。
在一个实施例中,所述根据所述第一位与运算的结果,得到所述线程组各个线程所对应的初始包围盒之间的重叠信息的步骤,包括:获取与任意线程中的位图在尺寸上相匹配的共享内存空间;将所述第一位与运算的结果通过原子与(AtomicAnd)的方式写入所述共享内存空间;将所述共享内存空间中的位图由纵向变为横向,将横向的位图分别填充到所述线程组的线程中;并行运行所述线程组中的各个线程,以使第二剩余线程中的位图对第二目标线程中的位图进行第二位与运算;其中,所述第二目标线程从所述线程组中选择得到,所述第二剩余线程为所述线程组中除去所述第二目标线程的线程;根据所述第二位与运算的结果,得到所述线程组各个线程所对应的初始包围盒之间的重叠信息。
进一步的,在一个实施例中,所述根据所述第二位与运算的结果,得到所述线程组各个线程所对应的初始包围盒之间的重叠信息的步骤,包括:将第二位与运算的结果为1的两个初始包围盒确定为相互独立的包围盒,将第二位与运算的结果为0的两个初始包围盒确定为相互重叠的包围盒,得到所述重叠信息。因此,确定第二位与运算结果中为1的初始包围盒,即得到对应的目标包围盒。
其中,对于一个计算机设备而言,各个线程中所包含位图的尺寸是一样的本实施例获取与线程的位图在尺寸上相匹配的共享内存空间。进一步,共享内存空间的大小可以为32bit×n(n可以取值为1024)的共享内存空间,每个32bit初始化为0xFFFFFFFF,此共享内存为线程组内所有线程共享。
经过一级化简后,各个线程组中的位图都集中到其中一个线程中,如图11所示,第一个线程组的位图集中在第0线程中,第二个线程组的位图集中在第32线程(m)中,第三个线程组的位图集中在第64线程(2m)中以此类推(图11中包含有n个线程组,需要有n/m次原子与操作来写一个32位位图共享内存)。由于线程组之间不能直接进行位与运算,因此通过共享内存空间来将这些线程组中的位图集中到一个线程组中。具体的,通过原子与的方式将这些线程组中的位图集中到共享内存空间中(其中,原子与是将某一线程中的位图填充到共享内存空间的对应位置上),通过某一线程组中的线程来对共享内存空间中位图进行位与运算。进一步的,对共享内存空间中的位图进行位与运算即可以理解为二级化简,其实现过程可以如图12所示。
进一步的,在进行完二级化简后,每个线程对自己所在32位位图共享内存中查找位被设为1的位置,该位置包围盒即为最终保留的目标包围盒。
上述实施例提供的包围盒的确定方法,具有以下有益效果:通过GPU实现非极大值抑制,进一步从,通过GPU结构中线程组-线程块的二级化简,以及标志位内存-位图的二维化简,最大化提高了程序的并行度,实现了并行高性能运算,最大化利用了GPU中各级存储单元的带宽,大大提高速度并降低占有率,采用更少的GPU硬件资源能做到了更多更快的NMS检测。
进一步的,对于自动驾驶平台的红绿灯识别场景。在低功耗英伟达平台上(50瓦左右),只占用一个流式多处理器的情况下(1/8总资源),只需要几百微秒(us)即可实现几千个包围盒的非极大值抑制处理。这样做到了几乎零占用的情况下满足场景需求。
进一步的,在确定目标包围盒之后,计算机设备可以在界面中突出显示目标包围盒,以提醒用户目标物体所在的位置。
应该理解的是,虽然图2的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,图2中的至少一部分步骤可以包括多个步骤或者多个阶段,这些步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤中的步骤或者阶段的至少一部分轮流或者交替地执行。
基于与上述实施例中的包围盒的确定方法相同的思想,本发明还提供包围盒的确定装置,该装置可用于执行上述包围盒的确定方法。为了便于说明,包围盒的确定装置实施例的结构示意图中,仅仅示出了与本发明实施例相关的部分,本领域技术人员可以理解,图示结构并不构成对装置的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
在一个实施例中,如图13所示,提供了一种包围盒的确定装置1300,该装置可以采用软件模块或硬件模块,或者是二者的结合成为计算机设备的一部分,该装置具体包括:位图获取模块1301、位图运算模块1302、重叠信息确定模块1303和包围盒确定模块1304,其中:
位图获取模块1301,用于获取线程组所包含的线程中的位图;其中,任意线程的所述位图对应有独立的至少一个初始包围盒,所述初始包围盒为对目标物体进行图像目标检测得到的检测框。
位图运算模块1302,用于并行运行所述线程组中的各个线程,以使第一剩余线程中的位图和第一目标线程中的位图进行第一位与运算;其中,所述第一目标线程从所述线程组中选择得到,所述第一剩余线程为所述线程组中除去所述第一目标线程的线程。
重叠信息确定模块1303,用于根据所述第一位与运算的结果,得到所述线程组各个线程所对应的初始包围盒之间的重叠信息。
包围盒确定模块1304,用于根据所述重叠信息从所述线程组各个线程所对应的初始包围盒中确定独立的包围盒,作为所述目标物体的目标包围盒。
上述包围盒的确定装置中,通过线程中的位图来记录初始包围盒的信息,一个位图可以记录多个初始包围盒的信息,且同一线程中的初始包围盒为独立的包围盒,即同一线程所对应的初始包围盒之间是不重叠的,通过并行运行线程组中的线程的方式快速确定线程组各个线程所对应的初始包围盒之间的重叠信息,进而从初始包围盒中确定出相互独立的目标包围盒,整个包围盒的确定过程可以快速完成。
在一个实施例中,包围盒的确定装置1300,还包括:包围盒选择模块,用于从目标线程所对应的目标初始包围盒中确定第一包围盒以及第二包围盒;所述目标线程为所述线程组中的任意线程;所述第一包围盒逐步遍历所述目标初始包围盒,所述第二包围盒为所述目标初始包围盒中除去所述第一包围盒的包围盒;重叠度确定模块,用于确定所述第一包围盒和所述第二包围盒之间的位置重叠度;匹配值确定模块,用于分别获取所述第一包围盒以及所述第二包围盒与所述目标物体在尺寸上的匹配值,得到第一匹配值和第二匹配值;位值确定模块,用于若所述位置重叠度高于预设阈值,且所述第二匹配值高于所述第一匹配值,则将所述第一包围盒在目标位图上对应的位值确定为0,得到所述目标位图中各个位的位值;所述目标位图为所述目标线程所对应的位图。
在一个实施例中,位值确定模块,包括:编号确定子模块,用于确定所述第一包围盒的编号;所述编号对应所述目标位图中的某一位;第一位值填充子模块,用于按照所述编号将0作为位值填充到所述目标位图的对应位上;第二位值填充子模块,用于若所述第一包围盒已遍历所有所述目标初始包围盒,则向剩余位中填充1,得到所述目标位图中各个位的位值;所述剩余位为所述目标位图中未填充0的位。
在一个实施例中,位图获取模块1301,还用于通过目标内核函数,获取线程组所包含的线程中的位图;位图运算模块1302,还用于通过所述目标内核函数,并行运行所述线程组中的各个线程,以使第一剩余线程中的位图和第一目标线程中的位图进行第一位与运算。
在一个实施例中,所述线程组中的各个线程包含有预设数量横向排布的位图;所述预设数量根据硬件参数确定;位图运算模块1302,还用于并行运行所述线程组中的各个线程,以使所述第一剩余线程中的位图由横向变为纵向,并将纵向的所述第一剩余线程中的位图与横向的所述第一目标线程的位图进行第一位与运算,得到纵向的第一位与运算的结果。
在一个实施例中,重叠信息确定模块1303,包括:内存空间获取子模块,用于获取与任意线程中的位图在尺寸上相匹配的共享内存空间;内存空间写入子模块,用于将所述第一位与运算的结果通过原子与的方式写入所述共享内存空间;线程填充子模块,用于将所述共享内存空间中的位图由纵向变为横向,将横向的位图分别填充到所述线程组的线程中;位图运算子模块,用于并行运行所述线程组中的各个线程,以使第二剩余线程中的位图对第二目标线程中的位图进行第二位与运算;其中,所述第二目标线程从所述线程组中选择得到,所述第二剩余线程为所述线程组中除去所述第二目标线程的线程;重叠信息确定子模块,用于根据所述第二位与运算的结果,得到所述线程组各个线程所对应的初始包围盒之间的重叠信息。
在一个实施例中,重叠信息确定子模块,还用于将第二位与运算的结果为1的两个初始包围盒确定为相互独立的包围盒,将第二位与运算的结果为0的两个初始包围盒确定为相互重叠的包围盒,得到所述重叠信息。
关于包围盒的确定装置的具体限定可以参见上文中对于包围盒的确定方法的限定,在此不再赘述。上述包围盒的确定装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
在一个实施例中,还提供了一种计算机设备,包括存储器和处理器,存储器中存储有计算机程序,该处理器执行计算机程序时实现上述各方法实施例中的步骤。
在一个实施例中,提供了一种计算机可读存储介质,存储有计算机程序,该计算机程序被处理器执行时实现上述各方法实施例中的步骤。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和易失性存储器中的至少一种。非易失性存储器可包括只读存储器(Read-Only Memory,ROM)、磁带、软盘、闪存或光存储器等。易失性存储器可包括随机存取存储器(Random Access Memory,RAM)或外部高速缓冲存储器。作为说明而非局限,RAM可以是多种形式,比如静态随机存取存储器(Static Random Access Memory,SRAM)或动态随机存取存储器(Dynamic Random Access Memory,DRAM)等。
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。
Claims (10)
1.一种包围盒的确定方法,所述方法包括:
获取线程组所包含的线程中的位图;其中,任意线程的所述位图对应有独立的至少一个初始包围盒,所述初始包围盒为对目标物体进行图像目标检测得到的检测框;
并行运行所述线程组中的各个线程,以使第一剩余线程中的位图和第一目标线程中的位图进行第一位与运算;其中,所述第一目标线程从所述线程组中选择得到,所述第一剩余线程为所述线程组中除去所述第一目标线程的线程;
根据所述第一位与运算的结果,得到所述线程组各个线程所对应的初始包围盒之间的重叠信息;
根据所述重叠信息从所述线程组各个线程所对应的初始包围盒中确定独立的包围盒,作为所述目标物体的目标包围盒。
2.根据权利要求1所述的方法,其特征在于,所述获取线程组所包含的线程中的位图的步骤之前,还包括:
从目标线程所对应的目标初始包围盒中确定第一包围盒以及第二包围盒;所述目标线程为所述线程组中的任意线程;所述第一包围盒逐步遍历所述目标初始包围盒,所述第二包围盒为所述目标初始包围盒中除去所述第一包围盒的包围盒;
确定所述第一包围盒和所述第二包围盒之间的位置重叠度;
分别获取所述第一包围盒以及所述第二包围盒与所述目标物体在尺寸上的匹配值,得到第一匹配值和第二匹配值;
若所述位置重叠度高于预设阈值,且所述第二匹配值高于所述第一匹配值,则将所述第一包围盒在目标位图上对应的位值确定为0,得到所述目标位图中各个位的位值;所述目标位图为所述目标线程所对应的位图。
3.根据权利要求2所述的方法,其特征在于,所述将所述第一包围盒在目标位图上对应的位值确定为0,得到所述目标位图中各个位的位值的步骤,包括:
确定所述第一包围盒的编号;所述编号对应所述目标位图中的某一位;
按照所述编号将0作为位值填充到所述目标位图的对应位上;
若所述第一包围盒已遍历所有所述目标初始包围盒,则向剩余位中填充1,得到所述目标位图中各个位的位值;所述剩余位为所述目标位图中未填充0的位。
4.根据权利要求1所述的方法,其特征在于,所述获取线程组所包含的线程中的位图的步骤,包括:
通过目标内核函数,获取线程组所包含的线程中的位图;
所述并行运行所述线程组中的各个线程,以使第一剩余线程中的位图和第一目标线程中的位图进行第一位与运算的步骤,包括:
通过所述目标内核函数,并行运行所述线程组中的各个线程,以使第一剩余线程中的位图和第一目标线程中的位图进行第一位与运算。
5.根据权利要求1所述的方法,其特征在于,所述线程组中的各个线程包含有预设数量横向排布的位图;所述预设数量根据硬件参数确定;
所述并行运行所述线程组中的各个线程,以使第一剩余线程中的位图和第一目标线程中的位图进行第一位与运算的步骤,包括:
并行运行所述线程组中的各个线程,以使所述第一剩余线程中的位图由横向变为纵向,并将纵向的所述第一剩余线程中的位图与横向的所述第一目标线程的位图进行第一位与运算,得到纵向的第一位与运算的结果。
6.根据权利要求5所述的方法,其特征在于,所述根据所述第一位与运算的结果,得到所述线程组各个线程所对应的初始包围盒之间的重叠信息的步骤,包括:
获取与任意线程中的位图在尺寸上相匹配的共享内存空间;
将所述第一位与运算的结果通过原子与的方式写入所述共享内存空间;
将所述共享内存空间中的位图由纵向变为横向,将横向的位图分别填充到所述线程组的线程中;
并行运行所述线程组中的各个线程,以使第二剩余线程中的位图对第二目标线程中的位图进行第二位与运算;其中,所述第二目标线程从所述线程组中选择得到,所述第二剩余线程为所述线程组中除去所述第二目标线程的线程;
根据所述第二位与运算的结果,得到所述线程组各个线程所对应的初始包围盒之间的重叠信息。
7.根据权利要求6所述的方法,其特征在于,所述根据所述第二位与运算的结果,得到所述线程组各个线程所对应的初始包围盒之间的重叠信息的步骤,包括:
将第二位与运算的结果为1的两个初始包围盒确定为相互独立的包围盒,将第二位与运算的结果为0的两个初始包围盒确定为相互重叠的包围盒,得到所述重叠信息。
8.一种包围盒的确定装置,其特征在于,所述装置包括:
位图获取模块,用于获取线程组所包含的线程中的位图;其中,任意线程的所述位图对应有独立的至少一个初始包围盒,所述初始包围盒为对目标物体进行图像目标检测得到的检测框;
位图运算模块,用于并行运行所述线程组中的各个线程,以使第一剩余线程中的位图和第一目标线程中的位图进行第一位与运算;其中,所述第一目标线程从所述线程组中选择得到,所述第一剩余线程为所述线程组中除去所述第一目标线程的线程;
重叠信息确定模块,用于根据所述第一位与运算的结果,得到所述线程组各个线程所对应的初始包围盒之间的重叠信息;
包围盒确定模块,用于根据所述重叠信息从所述线程组各个线程所对应的初始包围盒中确定独立的包围盒,作为所述目标物体的目标包围盒。
9.一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至7中任一项所述方法的步骤。
10.一种计算机可读存储介质,存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至7中任一项所述的方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010135898.9A CN111340790B (zh) | 2020-03-02 | 2020-03-02 | 包围盒的确定方法、装置、计算机设备和存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010135898.9A CN111340790B (zh) | 2020-03-02 | 2020-03-02 | 包围盒的确定方法、装置、计算机设备和存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111340790A CN111340790A (zh) | 2020-06-26 |
CN111340790B true CN111340790B (zh) | 2023-06-20 |
Family
ID=71184108
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010135898.9A Active CN111340790B (zh) | 2020-03-02 | 2020-03-02 | 包围盒的确定方法、装置、计算机设备和存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111340790B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE112021007439T5 (de) * | 2021-03-31 | 2024-01-25 | Nvidia Corporation | Erzeugung von begrenzungsrahmen |
CN114595070B (zh) * | 2022-05-10 | 2022-08-12 | 上海登临科技有限公司 | 一种处理器、多线程合并方法及电子设备 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109377552A (zh) * | 2018-10-19 | 2019-02-22 | 珠海金山网络游戏科技有限公司 | 图像遮挡计算方法、装置、计算设备及存储介质 |
CN110276317A (zh) * | 2019-06-26 | 2019-09-24 | Oppo广东移动通信有限公司 | 一种物体尺寸检测方法、物体尺寸检测装置及移动终端 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10692270B2 (en) * | 2017-08-18 | 2020-06-23 | Microsoft Technology Licensing, Llc | Non-divergent parallel traversal of a bounding volume hierarchy |
-
2020
- 2020-03-02 CN CN202010135898.9A patent/CN111340790B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109377552A (zh) * | 2018-10-19 | 2019-02-22 | 珠海金山网络游戏科技有限公司 | 图像遮挡计算方法、装置、计算设备及存储介质 |
CN110276317A (zh) * | 2019-06-26 | 2019-09-24 | Oppo广东移动通信有限公司 | 一种物体尺寸检测方法、物体尺寸检测装置及移动终端 |
Non-Patent Citations (1)
Title |
---|
张正昌 ; 何发智 ; 周毅 ; .基于动态任务调度的层次包围盒构建算法.计算机辅助设计与图形学学报.2018,(03),全文. * |
Also Published As
Publication number | Publication date |
---|---|
CN111340790A (zh) | 2020-06-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20220129752A1 (en) | Memory bandwidth reduction techniques for low power convolutional neural network inference applications | |
CN110546611B (zh) | 通过跳过处理操作来减少神经网络处理器中的功耗 | |
US20210398287A1 (en) | Image processing method and image processing device | |
CN110990516B (zh) | 地图数据的处理方法、装置和服务器 | |
US20190266747A1 (en) | Object detection method, device, system and storage medium | |
US9747527B2 (en) | Performing object detection operations via random forest classifier | |
US20190205629A1 (en) | Behavior predicton method, behavior predicton system, and non-transitory recording medium | |
CN103336758B (zh) | 一种采用带有局部信息的压缩稀疏行的稀疏矩阵存储方法及基于该方法的SpMV实现方法 | |
US10176627B2 (en) | Tree-based graphics primitive rendering | |
US20200257902A1 (en) | Extraction of spatial-temporal feature representation | |
CN111340790B (zh) | 包围盒的确定方法、装置、计算机设备和存储介质 | |
CN111796917B (zh) | 算子运算调度方法和装置 | |
CN111985597B (zh) | 模型压缩方法及装置 | |
JP2014106736A (ja) | 情報処理装置及びその制御方法 | |
Fan et al. | Faster-than-real-time linear lane detection implementation using soc dsp tms320c6678 | |
KR102502569B1 (ko) | 시스템 리소스 관리를 위한 방법 및 장치 | |
CN106709503A (zh) | 一种基于密度的大型空间数据聚类算法k‑dbscan | |
CN110580506A (zh) | 基于密度的聚类计算方法、装置、设备和存储介质 | |
CN107292002B (zh) | 一种数字岩心重构的方法及装置 | |
CN110399760A (zh) | 一种批量二维码定位方法、装置、电子设备及存储介质 | |
CN109661671B (zh) | 使用边界位图对图像分类的改善 | |
CN105760484A (zh) | 一种人群踩踏预警方法、***、及具有该***的服务器 | |
US20130322761A1 (en) | System and Method to Determine Feature Candidate Pixels of an Image | |
CN112245932B (zh) | 游戏资源的处理方法、装置以及服务端设备 | |
WO2020257517A1 (en) | Optimizing machine learning model performance |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |