对运行于人工智能芯片上的区域候选网络进行优化的编译方法及其相关产品与流程



1.本公开一般地涉及人工智能技术领域。更具体地,本公开涉及一种对运行于人工智能芯片上的区域候选网络进行优化的编译方法、编译器、用于执行前述方法的设备和计算机程序产品、包括前述编译器或设备的集成电路装置,以及包括该集成电路装置的板卡。


背景技术:



2.随着人工智能技术的发展,作为人工智能的核心技术之一的计算机视觉技术已被广泛应用于安防、金融、硬件、营销、驾驶、医疗等领域。目前计算机视觉技术中的目标检测任务已成为重点研究对象,目标检测任务是指给定一张图像或是一个视频帧,让计算机出其中所有目标的位置,并给出每个目标的具体类别。相关技术中在执行目标检测任务时,可采用 faster r-cnn(快速区域神经卷积网络检测网络,faster region-basedcnn)架构中的rpn(region proposal networks,区域候选网络)来筛选候选框的编译方法。具体地,在rpn筛选候选框的编译过程中,需要先对初选后的所有候选框进行排序,然后再对排序后的候选框进行筛减来确定最后保留的候选框。然而在实际应用过程中,这种编译时先排序的运算逻辑不仅对运算结果没有任何帮助,反而会因为排序带来的计算开销而影响整体运算效率,并进而降低系统的计算性能。


技术实现要素:



3.鉴于上述背景技术部分所提及的技术问题,本公开提出一种对运行于人工智能芯片上的区域候选网络进行优化的编译方案。利用本公开的方案,可以通过对图像在区域网络中的初始候选框进行多次筛减,并且利用候选框的重叠度来对经过一次筛减得到的中间级候选框进行二次筛减,以得到本公开上下文中的前k个中间级候选框。由此,可以利用前k个中间级候选框来作为区域候选网络的输出候选框,从而实现对区域候选网络的优化。另外,通过这样的优化,可以有效减少编译过程中因排序带来的计算开销,从而在确保运算精度的同时也提高了运算效率。由此,也可以显著提升包括人工智能处理器的智能计算系统的计算性能。鉴于此,本公开在如下的多个方面中提供对运行于人工智能芯片上的区域候选网络进行优化的编译方案。
4.在第一方面中,本公开提供了一种对运行于人工智能芯片上的区域候选网络进行优化的编译方法,所述编译方法由处理器来执行,并且包括:获取图像在所述区域候选网络中的初始候选框;基于预设条件对所述初始候选框进行一次筛减,以获得中间级候选框;基于候选框的重叠度对所述中间级候选框进行二次筛减,以从中间级候选框中选取前k个中间级候选框作为所述区域候选网络的输出候选框,以完成对所述区域候选网络的优化,其中k是正整数;以及将优化后的所述区域候选网络编译成对应的二进制指令序列,以分配至人工智能处理器上执行对应的任务。
5.在第二方面中,本公开提供了一种对运行于人工智能芯片上的区域候选网络进行
优化的编译器,包括:获取模块,其用于获取图像在所述区域候选网络中的初始候选框;第一筛减模块,其用于基于预设条件对所述初始候选框进行一次筛减,以获得中间级候选框;第二筛减模块,其用于对基于候选框的重叠度对所述中间级候选框进行二次筛减,以从中间级候选框中选取前k个中间级候选框作为所述区域候选网络的输出候选框,以完成对所述区域候选网络的优化,其中k是正整数;以及编译模块,其用于将优化后的所述区域候选网络编译成对应的二进制指令序列,以分配至人工智能处理器上执行对应的任务。
6.在第三方面中,本公开提供了一种对运行于人工智能芯片上的区域候选网络进行优化的设备,包括:至少一个处理器;以及至少一个存储器,其存储有对运行于人工智能芯片上的区域候选网络进行优化的程序指令,当所述程序指令由所述至少一个处理器加载并执行时,使得所述设备执行前述以及在下文多个实施例中所述的方法。
7.在第四方面中,本公开提供了一种计算机程序产品,包括对运行于人工智能芯片上的区域候选网络进行优化的计算机程序,所述计算机程序在被处理器执行时实现前述以及在下文多个实施例中所述的方法。
8.在第五方面中,本公开提供了一种集成电路装置,包括如上所述以及在下文多个实施例中所述的设备。
9.在第六方面中,本公开提供了一种板卡,包括如上所述以及在下文多个实施例中所述的集成电路装置。
10.通过本公开如上多个方面中所提供的编译方案,可以对区域候选网络中的初始候选框进行多次筛减来确定区域候选网络的输出。在筛减过程中,特别是在进行二次筛减时,本公开的方案提出利用候选框的重叠度来对中间级候选框进一步筛减,以便能够从中选取出前k个中间级候选框作为输出候选框。根据本公开的方案设计,由于这里的前k个中间级候选框已经是按照评估(例如稍后提到的度量值)由高到低进行排序的,因此使得编译时中无需再引入排序运算,从而有效减少了候选框筛选过程中因排序带来的计算开销。进一步,本公开的方案通过对区域候选网络的优化,可以在确保运算精度的同时还提高了运算效率。由此,本公开的方案也显著提升包括人工智能处理器的智能计算系统的计算性能。
附图说明
11.通过参考附图阅读下文的详细描述,本公开示例性实施方式的上述以及其他目的、特征和优点将变得易于理解。在附图中,以示例性而非限制性的方式示出了本公开的若干实施方式,并且相同或对应的标号表示相同或对应的部分,其中:
12.图1是示出根据本公开实施例的板卡的结构图;
13.图2是示出根据本公开实施例的组合处理装置的结构图;
14.图3是示出根据本公开实施例的计算装置的内部结构示意图;
15.图4是示出根据本公开实施例的处理器核的内部结构示意图;
16.图5是示出根据本公开实施例的不同集的处理器核间的数据写入过程示意图;
17.图6是示出根据本公开实施例的数据流编程的软硬件架构的结构示意图;
18.图7是示出根据本公开的一个实施例的对运行于人工智能芯片上的区域候选网络进行优化的编译方法的流程图;
19.图8是示出根据本公开的另一个实施例的对运行于人工智能芯片上的区域候选网
络进行优化的编译方法的流程图;以及
20.图9是示出根据本公开实施例的编译器的示意框图。
具体实施方式
21.下面将结合本公开实施方式中的附图,对本公开实施方式中的技术方案进行清楚、完整地描述,显然,所描述的实施方式是本公开一部分实施方式,而不是全部的实施方式。基于本公开中的实施方式,本领域技术人员在没有做出创造性劳动前提下所获得的所有其他实施方式,都属于本公开保护的范围。
22.应当理解,本公开的权利要求、说明书及附图中的术语“第一”、“第二”、“第三”和“第四”等是用于区别不同对象,而不是用于描述特定顺序。本公开的说明书和权利要求书中使用的术语“包括”和“包含”指示所描述特征、整体、步骤、操作、元素和/或组件的存在,但并不排除一个或多个其它特征、整体、步骤、操作、元素、组件和/或其集合的存在或添加。
23.还应当理解,在此本公开说明书中所使用的术语仅仅是出于描述特定实施方式的目的,而并不意在限定本公开。如在本公开说明书和权利要求书中所使用的那样,除非上下文清楚地指明其它情况,否则单数形式的“一”、“一个”及“该”意在包括复数形式。还应当进一步理解,在本公开说明书和权利要求书中使用的术语“和/或”是指相关联列出的项中的一个或多个的任何组合以及所有可能组合,并且包括这些组合。
24.如在本说明书和权利要求书中所使用的那样,术语“如果”可以依据上下文被解释为“当...时”或“一旦”或“响应于确定”或“响应于检测到”。类似地,短语“如果确定”或“如果检测到[所描述条件或事件]”可以依据上下文被解释为意指“一旦确定”或“响应于确定”或“一旦检测到[所描述条件或事件]”或“响应于检测到[所描述条件或事件]”。
[0025]
下面结合附图来详细描述本公开的具体实施方式。
[0026]
图1示出本披露实施例的一种板卡10的结构示意图。如图1所示,板卡10包括芯片101,其是一种系统级芯片(system on chip,soc),或称片上系统,集成有一个或多个组合处理装置,组合处理装置是一种人工智能运算单元,用以支持各类深度学习和机器学习算法,满足计算机视觉、语音、自然语言处理、数据挖掘等领域复杂场景下的智能处理需求。特别是深度学习技术大量应用在云端智能领域,云端智能应用的一个显著特点是输入数据量大,对平台的存储能力和计算能力有很高的要求,此实施例的板卡10适用在云端智能应用,具有庞大的片外存储、片上存储和大量的计算能力。
[0027]
芯片101通过对外接口装置102与外部设备103相连接。外部设备103 例如是服务器、计算机、摄像头、显示器、鼠标、键盘、网卡或wifi接口等。待处理的数据可以由外部设备103通过对外接口装置102传递至芯片 101。芯片101的计算结果可以经由对外接口装置102传送回外部设备103。根据不同的应用场景,对外接口装置102可以具有不同的接口形式,例如 pcie接口等。
[0028]
板卡10还包括用于存储数据的存储器件104,其包括一个或多个存储单元105。存储器件104通过总线与控制器件106和芯片101进行连接和数据传输。板卡10中的控制器件106配置用于对芯片101的状态进行调控。为此,在一个应用场景中,控制器件106可以包括单片机(microcontroller unit,mcu)。
[0029]
图2是示出此实施例的芯片101中的组合处理装置的结构图。如图2 中所示,组合
处理装置20包括计算装置201、接口装置202、处理装置203 和dram 204。
[0030]
计算装置201配置成执行用户指定的操作,主要实现为单核智能处理器或者多核智能处理器,用以执行深度学习或机器学习的计算,其可以通过接口装置202与处理装置203进行交互,以共同完成用户指定的操作。
[0031]
接口装置202用于在计算装置201与处理装置203间传输数据和控制指令。例如,计算装置201可以经由接口装置202从处理装置203中获取输入数据,写入计算装置201片上的存储装置。进一步,计算装置201可以经由接口装置202从处理装置203中获取控制指令,写入计算装置201 片上的控制缓存中。替代地或可选地,接口装置202也可以读取计算装置 201的存储装置中的数据并传输给处理装置203。
[0032]
处理装置203作为通用的处理装置,执行包括但不限于数据搬运、对计算装置201的开启和/或停止等基本控制。根据实现方式的不同,处理装置203可以是中央处理器(central processing unit,cpu)、图形处理器 (graphics processing unit,gpu)或其他通用和/或专用处理器中的一种或多种类型的处理器,这些处理器包括但不限于数字信号处理器(digitalsignal processor,dsp)、专用集成电路(application specific integratedcircuit,asic)、现场可编程门阵列(field-programmable gate array,fpga) 或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等,并且其数目可以根据实际需要来确定。如前所述,仅就本披露的计算装置 201而言,其可以视为具有单核结构或者同构多核结构。然而,当将计算装置201和处理装置203整合共同考虑时,二者视为形成异构多核结构。
[0033]
dram 204用以存储待处理的数据,为ddr内存,大小通常为16g 或更大,用于保存计算装置201和/或处理装置203的数据。
[0034]
图3示出了计算装置201的内部结构示意图。计算装置201用以处理计算机视觉、语音、自然语言、数据挖掘等输入数据,图中的计算装置201 采用多核分层结构设计,计算装置201作为一个片上系统,其包括多个集(cluster),每个集又包括多个处理器核,换言之,计算装置201是以片上系统-集-处理器核的层次所构成的。
[0035]
以片上系统的层级来看,如图3所示,计算装置201包括外部存储控制器301、外设通信模块302、片上互联模块303、同步模块304以及多个集305。
[0036]
外部存储控制器301可以有多个,在图中示例性地展示2个,其用以响应处理器核发出的访问请求,访问外部存储设备,例如图2中的dram 204,从而自片外读取数据或是将数据写入。外设通信模块302用以通过接口装置202接收来自处理装置203的控制信号,启动计算装置201执行任务。片上互联模块303将外部存储控制器301、外设通信模块302及多个集305连接起来,用以在各个模块间传输数据和控制信号。同步模块 304是一种全局同步屏障控制器(global barrier controller,gbc),用以协调各集的工作进度,确保信息的同步。多个集305是计算装置201 的计算核心,在图中示例性地展示4个,随着硬件的发展,本披露的计算装置201还可以包括8个、16个、64个、甚至更多的集305。集305 用以高效地执行深度学习算法。
[0037]
以集的层级来看,如图3所示,每个集305包括多个处理器核(ipucore)306及一个存储核(mem core)307。
[0038]
处理器核306在图中示例性地展示4个,本披露不限制处理器核306 的数量。其内
部架构如图4所示。每个处理器核306包括三大模块:控制模块41、运算模块42及存储模块43。
[0039]
控制模块41用以协调并控制运算模块42和存储模块43的工作,以完成深度学习的任务,其包括取指单元(instruction fetch unit,ifu)411 及指令译码单元(instruction decode unit,idu)412。取指单元411用以获取来自处理装置203的指令,指令译码单元412则将获取的指令进行译码,并将译码结果作为控制信息发送给运算模块42和存储模块43。
[0040]
运算模块42包括向量运算单元421及矩阵运算单元422。向量运算单元421用以执行向量运算,可支持向量乘、加、非线性变换等复杂运算;矩阵运算单元422负责深度学习算法的核心计算,即矩阵乘及卷积。
[0041]
存储模块43用来存储或搬运相关数据,包括神经元存储单元(neuronram,nram)431、权值存储单元(weight ram,wram)432、输入/ 输出直接内存访问模块(input/output direct memory access,iodma)433、搬运直接内存访问模块(move direct memory access,mvdma)434。nram 431用以存储供处理器核306计算的输入、输出数据及中间结果;wram 432则用以存储深度学习网络的权值;iodma 433通过广播总线309控制nram 431/wram 432与dram 204的访存;mvdma 434则用以控制 nram 431/wram 432与sram 308的访存。
[0042]
回到图3,存储核307主要用以存储和通信,即存储处理器核306间的共享数据或中间结果、以及执行集305与dram 204之间的通信、集305间彼此的通信、处理器核306间彼此的通信等。在其他实施例中,存储核307具有标量运算的能力,用以执行标量运算。
[0043]
存储核307包括共享存储单元(sram)308、广播总线309、集直接内存访问模块(cluster direct memory access,cdma)310及全局直接内存访问模块(global direct memory access,gdma)311。sram 308承担高性能数据中转站的角,在同一个集305内不同处理器核306之间所复用的数据不需要通过处理器核306各自向dram 204获得,而是经 sram 308在处理器核306间中转,存储核307只需要将复用的数据从 sram 308迅速分发给多个处理器核306即可,以提高核间通讯效率,亦大大减少片上片外的输入/输出访问。
[0044]
广播总线309、cdma 310及gdma 311则分别用来执行处理器核306 间的通信、集305间的通信和集305与dram 204的数据传输。以下将分别说明。
[0045]
广播总线309用以完成集305内各处理器核306间的高速通信,此实施例的广播总线309支持核间通信方式包括单播、多播与广播。单播是指点对点(即单一处理器核至单一处理器核)的数据传输,多播是将一份数据从sram 308传输到特定几个处理器核306的通信方式,而广播则是将一份数据从sram 308传输到所有处理器核306的通信方式,属于多播的一种特例。
[0046]
cdma 310用以控制在同一个计算装置201内不同集305间的 sram 308的访存。图5示出当一个处理器核欲将数据写入至另一个集的处理器核时的示意图,以说明cdma 310的工作原理。在此应用场景中,同一个计算装置包括多个集,为方便说明,图中仅展示集0与集1,集0与集1分别包括多个处理器核,同样为了说明方便,图中的集 0仅展示处理器核0,集1仅展示处理器核1。处理器核0欲将数据写入至处理器核1。
[0047]
首先,处理器核0发送单播写请求将数据写入本地的sram 0中, cdma 0作为主(master)端,cdma 1作为从(slave)端,主端向从端推送写请求,即主端发送写地址aw和写
数据w,将数据传送到集1 的sram 1中,接着从端发送写响应b作为回应,最后集1的处理器核 1发送单播读请求将数据从sram 1中读取出来。
[0048]
回到图3,gdma 311与外部存储控制器301协同,用以控制集305 的sram 308到dram 204的访存,或是将数据自dram 204读取至 sram 308中。从前述可知,dram 204与nram 431或wram 432间的通信可以经由2个渠道来实现。第一个渠道是通过iodam 433直接联系dram 204与nram 431或wram 432;第二个渠道是先经由gdma 311使得数据在dram 204与sram 308间传输,再经过mvdma 434使得数据在sram 308与nram 431或wram 432间传输。虽然表面上看来第二个渠道需要更多的元件参与,数据流较长,但实际上在部分实施例中,第二个渠道的带宽远大于第一个渠道,因此dram 204与nram 431 或wram 432间的通信通过第二个渠道可能更有效率。本披露的实施例可根据本身硬件条件选择数据传输渠道。
[0049]
在其他实施例中,gdma 311的功能和iodma 433的功能可以整合在同一部件中。本披露为了方便描述,将gdma 311和iodma 433视为不同部件,对于本领域技术人员来说,只要其实现的功能以及达到的技术效果与本披露类似,即属于本披露的保护范围。进一步地,gdma 311的功能、iodma 433的功能、cdma 310的功能、mvdma 434的功能亦可以由同一部件来实现,同样地,只要其实现的功能以及达到的技术效果与本披露类似,均属于本披露的保护范围。
[0050]
以上结合图1-图5对本公开的硬件架构及其内部结构进行了详细的描述。可以理解的是上述描述仅仅是示例性的而非限制性的。根据不同的应用场景和硬件规格,本领域技术人员也可以对本公开的板卡及其内部结构进行改变,而这些改变依然落入本公开的保护范围内。除了图1-图5所示出的硬件架构,本公开的方案还涉及软硬件架构,下面将对其进行描述。
[0051]
图6示出本公开一实施例中数据流编程的软硬件架构的设计图。从图中所示可以看出,此实施例中的软硬件架构可以包括ai处理器601、驱动及操作系统602、编译器及编程语言603、库604、框架层605、应用层606。
[0052]
具体来说,ai处理器601在硬件设计上同时考虑运算优化和数据搬运优化。为此,其采用定制化的运算单元来加速运算,并且使用片上存储来加速数据搬运,从而获得极高的性能和能效比。另外,为了支持各种算法优化,ai处理器601可以具有定制化的运算单元和指令集,其中指令集可以提供不同粒度的运算指令(标量、向量和/或矩阵)。进一步,当考虑算法访存特征、硬件成本、验证难度等多方面的因素,则可以采用片上存储的方式,并且优化数据搬运。在实际操作中,本公开的ai处理器可以实现超出主流gpu(图形处理单元)几十倍以上的速度。
[0053]
驱动及操作系统602主要负责实现任务在ai处理器601上的调度。该调度操作可以涉及分配、释放设备内存、根据任务优先级进行调度、多设备之间的通信及同步等。对于编译后的程序,其可以通过操作系统和驱动实现待实施的任务在特定处理器上的调度执行,包括但不限于如下的操作:分配、释放设备内存、实现设备之间数据传输、维护任务队列,以及根据优先级调度任务,实现多设备间的同步和协作。
[0054]
编译器及编程语言603可以是针对ai处理器601的指令集研发的一套汇编语言。在应用中,其可以将面向ai处理器601开发的深度学习算子翻译成处理器指令组合,以便于调用ai处理器601,从而高效地使用该 ai处理器601。
[0055]
库604可以包括运行时库614和机器学习库624。在一个实施场景中,前述库604可以使用ai处理器601的指令集并根据ai处理器601的指令集进行部分优化,以提高算子的运行速度。运行时库614可以是针对ai 处理器601专门开发的一套高性能算子库,并且其可以用于完成通用处理器和人工智能处理器之间的交互。进一步,该运行时库614还可以提供一套面向人工智能处理器的接口。对于机器学习库624,其可以用于在人工智能处理器上加速各种机器学习或者深度学习算法。具体地,该机器学习库624可以提供一套高效、通用、灵活且可扩展的编程接口,其上层的机器学习应用可以直接采用各种编程框架(例如tensorflow、caffe、mxnet 等)的编程接口,也可以使用机器学习库624提供的接口来直接编程。另外,本公开的机器学习库624可以方便硬件平台的调用,而运行时库614可以实现一些基础的常用算子,如卷积、池化等各种操作。
[0056]
框架层605可以增加对面向ai处理器开发的算子的封装,并且主要是对运行时库614的算子的封装。除此之外,框架层605还可以修改相关的任务调度或内存管理等部分。应用层606可以是深度学习算法开发者提供的应用平台,并且基于原生的框架605拓展了模型运行时对ai处理器 601调用的支持。在实际应用场景中,框架层605可以实现对运行时库614 中高性能算子库里算子的封装与支持,并且其主要是利用数据流图根据图优化机制构建起深度学习模型的计算过程。
[0057]
图7是示出根据本公开的一个实施例的对运行于人工智能芯片上的区域候选网络进行优化的编译方法700的流程图。可以理解的是,这里的方法可以在图6所示的软硬件框架下实施,从而实现对区域候选网络的优化。
[0058]
如图7所示,在步骤s701处,获取图像在区域候选网络中的初始候选框。可以理解的是,这里的图像是指图片或视频帧。对于初始候选框的获取,在一个实施例中,前述步骤s701可以通过虚框中示出的步骤s701-1 和步骤s701-2来实现。具体地,在步骤s701-1处,获取区域候选网络的输出参数。在一个实施场景中,前述的输出参数可以包括多个锚点参数 (anchor)和其边界框参数(bbox_delta)。在该场景中,前述anchor可以包括候选框在图像中的标准坐标,前述的bbox_delta可以包括候选框坐标的偏移量(例如可以通过对前述图像的训练来获取)。
[0059]
接着,在步骤s701-2处,可以基于对前述的输出参数的叠加,来生成初始候选框。在一个实施场景中,可以通过对前述的锚点参数(其是候选框的标准坐标)和边界框参数(其是候选框坐标的偏移量)进行叠加来生成初始候选框,即得到初始候选框的坐标。在一个实施场景中,前述的叠加过程具体可以涉及利用前述的anchor和其对应的bbox_delta对候选框进行边框校正,接着对校正后的候选框进行叠加(例如可以对校正后的各个候选框中的元素进行线性叠加),以得到前述的初始候选框的坐标。可以理解的是,图7中示出的步骤s701-1和s701-2仅仅是步骤s701的一种可能实现方式,本公开的方案并不受此限制。根据本公开的教导,本领域技术人员也可以采取其他的步骤或方式来实现步骤s701。
[0060]
接着,在步骤s702处,可以基于预设条件对初始候选框进行一次筛减,以得到中间级候选框。在一些实施场景中,前述的预设条件包括:条件1-在图像的原图尺寸中长宽小于阈值的候选框;条件2-在图像的原图尺寸中超出图像区域的候选框;条件3-在图像的原图尺寸中长宽小于阈值和超出图像区域的候选框。可以理解的是,这里所列举的条件1至条件3仅用于对前述的预设条件进行示意说明,并不对预设条件的具体内容进行限制。根据本公
开的教导,本领域技术人员也可以在实际应用中根据对图像的处理需求来对预设条件进行调整。基于前述的条件设置,本公开对初始候选框进行的一次筛减就可以转换为对满足前述条件1至条件3的候选框进行的筛减。
[0061]
接着,在步骤s703处,可以基于候选框的重叠度对前述的中间级候选框进行二次筛减,以从该中间级候选框中选取前k个中间级候选框作为区域候选网络的输出候选框。这里,基于重叠度来进行二次筛减,可以从中间级候选框中移除彼此之间具有很高重叠度的两个候选框之一,从而可以减小冗余数据并且加速筛减操作,其中重叠度高的候选框可能表示是同一个框。在一个实施例中,前述的候选框的重叠度可以根据候选框的面积以及其与其他框间的交集面积来确定,具体过程将在稍后结合图8详细说明。
[0062]
在一个实施例中,对于前述中间级候选框的二次筛选可以通过迭代地执行如下操作来实现:首先,从当前的中间级候选框中选取目标候选框和重叠候选框。可以理解的是,在第一次执行迭代操作时,前述的当前的中间候选框就是经过一次筛减后所获得的中间级候选框,并且在后续的迭代操作中,其就是前一次迭代操作完成后获得的最新中间级候选框。进一步,前述的目标候选框是当前的中间级候选框中具有最大度量值的候选框,并且前述的重叠候选框是当前的中间级候选框中的、且与前述目标候选框重叠度大于阈值的至少一个候选框。这里,候选区的度量值可以表示该候选框与物体的实际框之间的近似程度,候选区的度量值最大表示该候选框与前述的实际框最接近。接着,可以从当前的中间级候选框中删除前述重叠候选框,并且移除目标候选框以便进行保存。通过迭代地执行前述的选取、删除和移除操作,直至当前的中间级候选框中无目标候选框为止。换句话说,此处的迭代终止于符合条件的目标候选框都已被保存。
[0063]
例如,假设当前具有1~10个经一次筛减后获得的候选框,该10个候选框构成本公开的中间级候选框。如前所述,在二次筛减中将开始迭代操作。首先,可以选择具有最大度量值的候选框(假定候选框5)为目标候选框。接着,可以确定与候选框5具有大于阈值(例如大于80%)的重叠度的候选框(假定为候选框2)。此后,可以将候选框2从中间级候选框中删除,并且将候选框5从中间级候选框中移除。经过该第一次迭代后,将得到包括候选框1、3、4、6-10共8个候选框,作为下一轮迭代中当前的中间级候选框。接着,在第二轮迭代中,在候选框1、3、4、6-10的8 个候选框中选取目标候选框并执行如上类似的删除和移除操作。以此类推,直到中间级候选框中不存在目标候选框时为止。
[0064]
在一个实施场景中,可以将上述移除的目标候选框存储在缓存中以便后续进行选取。鉴于每次都是从当前中间级候选框中选取出具有最大度量值的候选框放入缓存中,所以缓存中所存储的候选框已按照度量值由高到低来排列。由此,本公开的方案无需再引入额外的排序运算。由此,在该实施场景下,可以从前述的缓存中选取前k个候选框来作为输出候选框。
[0065]
在一个实施例中,上述候选框的度量值可以通过候选框的置信度和框内所识别物体类型的概率来确定。例如可以通过对前述的置信度和前述的概率执行乘积运算来得到候选框的度量值。在一个实施场景中,这里的置信度可以用交并比来表示,其中交并比表示物体的实际候选框和通过算法 (例如本公开的方法步骤)获得的候选框的交集,除以物体的实际候选框和通过算法获得的候选框的并集。当实际候选框和算法所获得的候选框完全重叠时,则交并比为1并且相应地置信度为1。类似地,当二者并非完全重叠时,则交并比为一
小于1的小数(例如0.5),并且相应地置信度为一小数(例如0.5)。可以理解的是,前文描述的对中间级候选框的二次筛减操作仅仅是一种可能实现方式。本公开的方案并不受此限制。根据本公开的教导,本领域技术人员也可以采取其他的步骤或方式来实现步骤 s703。
[0066]
接着,在步骤s704处,将优化后的区域候选网络编译成对应的二进制指令序列,以分配至人工智能芯片处执行对应的任务。可以理解的是,这里的人工智能芯片可以包括人工智能处理器,该人工智能处理器可以是前文结合图1-图6所描述的智能处理器。通过前述步骤利用候选框的重叠度来对经过一次筛减得到的中间级候选框进行二次筛减,以得到前k个中间级候选框,并将k个中间级候选框确定为区域候选网络的输出候选框,本公开的方案可以实现对区域候选网络的优化,从而有效减少编译过程中因排序带来的计算开销,并提升运算效率和包括人工智能处理器的智能计算系统的计算性能。
[0067]
为了更清楚的理解本公开的方案,以下将结合图8对本公开的方案进一步说明。
[0068]
图8是示出根据本公开的另一个实施例的对运行于人工智能芯片上的区域候选网络进行优化的编译方法800的流程图。
[0069]
如图8所示,在步骤s801处,将rpn网络输出的bbox_delta和anchor 叠加生成初始候选框。其中bbox_delta和anchor是前文结合图7所描述的边界框参数和锚点参数。接着,在步骤s802处,删除在原图尺寸中长宽小于阈值的候选框、并剔除超出图像区域的候选框,以得到中间级候选框。可以理解的是,步骤s802是满足前文的预设条件中条件3的实现方式。接着,在步骤s803处,每次从当前的中间级候选框中选取度量值最大的候选框(即前文结合图7所描述的目标候选框),并用当前中间候选框中的剩余候选框与之计算iou(重叠度),以剔除重叠度高的候选框(即前文结合图7所描述的重叠候选框)、并将前述选取出的目标候选框存储至缓存中。
[0070]
在一个实施方式中,可以通过下面的计算来确定上述的iou:
[0071]
iou=si/(sa+s
b-si),
[0072]
其中sa表示候选框a的面积,sb表示候选框b的面积,si表示a候选框和b候选框的交集面积。结合本公开的方案,这里的候选框a是分数最大的候选框,而候选框b是本次迭代中所有剩余的候选框之一。
[0073]
接着,在步骤s804处,从前述的缓存中选取前k个候选框作为rpn 网络的输出候选框。
[0074]
图9是示出根据本公开实施例的编译器900的简化框图。应当理解的是编译器900可以执行上述结合图7和图8所描述的编译方法,因此关于图7和图8所做的描述也同样适用于下文关于编译器的具体阐述。进一步,在包括通用处理器和智能处理器的异构架构中,该编译器900可以布置于通用cpu处,以便执行例如上述结合图7和图8所讨论的编译方法。
[0075]
作为一种可选的实施例,该编译器900可以是神经网络编译器,用于将从神经网络框架接收的神经网络编译为能够在至少一个处理器上运行的目标代码。该编译器可以包括编译器前端,用于将神经网络模型转换为计算图。如图9中所示,该编译器900还可以包括获取模块901、第一筛减模块902以及第二筛减模块903。该获取模块901、第一筛减模块902 以及第二筛减模块903用于根据对图像在区域候选网络中的初始候选框的多次筛减来获取筛减后的候选框,以便将筛减后的候选框中排序前k的候选框作为区域候选网络的输出分配至至少一个处理器上进行运行,并生成与相应的处理器相对应的目标代码。
[0076]
在一个实施例中,获取模块901可以配置成对获取图像在所述区域候选网络中的初始候选框。可以看出,此处获取模块901执行的即是图7方法700中的步骤s701以及图8方法800中的步骤s801。相应地,在一个实施例中,第一筛减模块902可以配置成对前述的初始候选框中满足预设条件的候选框进行一次筛减,以得到中间级候选框。类似地,此处第一筛减模块902执行的即是图7方法700中的步骤s702以及图8方法800中的步骤s802。相应地,在一个实施例中,第二筛减模块903可以配置成基于候选框的重叠度对前述中间级候选框进行二次筛减,以从该中间级候选框中选取前k个中间级候选框作为区域候选网络的输出候选框,以完成对前述区域候选网络的优化。类似地,此处第二筛减模块903执行的即是图 7方法700中的步骤s703以及图8方法800中的步骤s803和步骤s804。在一个实施方式中,编译器900还可以包括编译模块904,在操作中,该编译模块904可以针对优化后的区域候选网络来生成对应的代码,以便由通用处理器和智能处理器来相应地执行分配的运算。对于数据并行操作的场景,编译模块904可以令生成的代码中包含处理器或处理器核的标识符 (“id”)。
[0077]
从上面的描述可以看出,编译器900通过其包括的获取模块901、第一筛减模块902、第二筛减模块903以及编译模块904可以实现图7中方法700以及图8中方法800所包括的步骤,从而通过利用对候选框的多次筛减来选取前k个候选框作为输出候选框,由此实现了对区域候选网络的优化,有效减少了候选框筛选过程中因排序带来的计算开销。
[0078]
以上结合附图对本公开的方案进行了详细的描述。根据不同的应用场景,本披露的设备或装置可以包括服务器、云端服务器、服务器集、数据处理装置、机器人、电脑、打印机、扫描仪、平板电脑、智能终端、pc 设备、物联网终端、移动终端、手机、行车记录仪、导航仪、传感器、摄像头、相机、摄像机、投影仪、手表、耳机、移动存储、可穿戴设备、视觉终端、自动驾驶终端、交通工具、家用电器、和/或医疗设备。所述交通工具包括飞机、轮船和/或车辆;所述家用电器包括电视、空调、微波炉、冰箱、电饭煲、加湿器、洗衣机、电灯、燃气灶、油烟机;所述医疗设备包括核磁共振仪、b超仪和/或心电图仪。本披露的设备或装置还可以被应用于互联网、物联网、数据中心、能源、交通、公共管理、制造、教育、电网、电信、金融、零售、工地、医疗等领域。
[0079]
进一步,本披露的设备或装置还可以用于云端、边缘端、终端等与人工智能、大数据和/或云计算相关的应用场景中。在一个或多个实施例中,根据本披露方案的算力高的设备或装置可以应用于云端设备(例如云端服务器),而功耗小的设备或装置可以应用于终端设备和/或边缘端设备(例如智能手机或摄像头)。在一个或多个实施例中,云端设备的硬件信息和终端设备和/或边缘端设备的硬件信息相互兼容,从而可以根据终端设备和 /或边缘端设备的硬件信息,从云端设备的硬件资源中匹配出合适的硬件资源来模拟终端设备和/或边缘端设备的硬件资源,以便完成端云一体或云边端一体的统一管理、调度和协同工作。
[0080]
需要说明的是,为了简明的目的,本披露将一些方法及其实施例表述为一系列的动作及其组合,但是本领域技术人员可以理解本披露的方案并不受所描述的动作的顺序限制。因此,依据本披露的公开或教导,本领域技术人员可以理解其中的某些步骤可以采用其他顺序来执行或者同时执行。进一步,本领域技术人员可以理解本披露所描述的实施例可以视为可选实施例,即其中所涉及的动作或模块对于本披露某个或某些方案的实现并不一
定是必需的。另外,根据方案的不同,本披露对一些实施例的描述也各有侧重。鉴于此,本领域技术人员可以理解本披露某个实施例中没有详述的部分,也可以参见其他实施例的相关描述。
[0081]
在具体实现方面,基于本披露的公开和教导,本领域技术人员可以理解本披露所公开的若干实施例也可以通过本文未公开的其他方式来实现。例如,就前文所述的设备或装置实施例中的各个单元来说,本文在考虑了逻辑功能的基础上对其进行划分,而实际实现时也可以有另外的划分方式。又例如,可以将多个单元或组件结合或者集成到另一个系统,或者对单元或组件中的一些特征或功能进行选择性地禁用。就不同单元或组件之间的连接关系而言,前文结合附图所讨论的连接可以是单元或组件之间的直接或间接耦合。在一些场景中,前述的直接或间接耦合涉及利用接口的通信连接,其中通信接口可以支持电性、光学、声学、磁性或其它形式的信号传输。
[0082]
在本披露中,作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元示出的部件可以是或者也可以不是物理单元。前述部件或单元可以位于同一位置或者分布到多个网络单元上。另外,根据实际的需要,可以选择其中的部分或者全部单元来实现本披露实施例所述方案的目的。另外,在一些场景中,本披露实施例中的多个单元可以集成于一个单元中或者各个单元物理上单独存在。
[0083]
在一些实现场景中,上述集成的单元可以采用软件程序模块的形式来实现。如果以软件程序模块的形式实现并作为独立的产品销售或使用时,所述集成的单元可以存储在计算机可读取存储器中。基于此,当本披露的方案以软件产品(例如计算机可读存储介质)的形式体现时,该软件产品可以存储在存储器中,其可以包括若干指令用以使得计算机设备(例如个人计算机、服务器或者网络设备等)执行本披露实施例所述方法的部分或全部步骤。前述的存储器可以包括但不限于u盘、闪存盘、只读存储器 (“read only memory”,简写为rom)、随机存取存储器(“random accessmemory”,简写为ram)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
[0084]
在另外一些实现场景中,上述集成的单元也可以采用硬件的形式实现,即为具体的硬件电路,其可以包括数字电路和/或模拟电路等。电路的硬件结构的物理实现可以包括但不限于物理器件,而物理器件可以包括但不限于晶体管或忆阻器等器件。鉴于此,本文所述的各类装置(例如计算装置或其他处理装置)可以通过适当的硬件处理器来实现,例如cpu、 gpu、fpga、dsp和asic等。进一步,前述的所述存储单元或存储装置可以是任意适当的存储介质(包括磁存储介质或磁光存储介质等),其例如可以是可变电阻式存储器(“resistive random access memory”,简写为rram)、动态随机存取存储器(“dynamic random access memory”,简写为dram)、静态随机存取存储器(“static random access memory”,简写为sram)、增强动态随机存取存储器(“enhanced dynamic randomaccess memory”,简写为“edram”)、高带宽存储器(“high bandwidthmemory”,简写为“hbm”)、混合存储器立方体(“hybrid memory cube”,简写为“hmc”)、rom和ram等。
[0085]
依据以下条款可更好地理解前述内容:
[0086]
条款a1、一种对运行于人工智能芯片上的区域候选网络进行优化的编译方法,所述编译方法由通用处理器来执行,并且包括:
[0087]
获取图像在所述区域候选网络中的初始候选框;
[0088]
基于预设条件对所述初始候选框进行一次筛减,以获得中间级候选框;
[0089]
基于候选框的重叠度对所述中间级候选框进行二次筛减,以从中间级候选框中选取前k个中间级候选框作为所述区域候选网络的输出候选框,以完成对所述区域候选网络的优化,其中k是正整数;以及
[0090]
将优化后的所述区域候选网络编译成对应的二进制指令序列,以分配至人工智能芯片处执行对应的任务。
[0091]
条款a2、根据条款a1所述的编译方法,其中获取图像在所述区域候选网络中的初始候选框包括:
[0092]
获取所述区域候选网络的输出参数;以及
[0093]
基于对所述输出参数的叠加,生成所述初始候选框。
[0094]
条款a3、根据条款a2所述的编译方法,其中所述输出参数包括锚点参数以及边界框参数。
[0095]
条款a4、根据条款a1所述的编译方法,其中所述预设条件包括:
[0096]
在所述图像的原图尺寸中长宽小于阈值的候选框;和/或
[0097]
在所述图像的原图尺寸中超出图像区域的候选框。
[0098]
条款a5、根据条款a1-a4的任意一项所述的编译方法,其中基于候选框的重叠度对所述中间级候选框进行二次筛减包括迭代地执行以下操作,直至选取完所述中间级候选框中的所有目标候选框:
[0099]
从当前的中间级候选框中选取目标候选框和与所述目标候选框重叠度大于阈值的重叠候选框,其中所述目标候选框是当前的中间级候选框中具有最大度量值的候选框;以及
[0100]
从当前的所述中间级候选框中删除所述重叠候选框,并且移除所述目标候选框以得到更新后的中间级候选框,以便在执行下一次迭代时将所述更新后的中间级候选框作为当前的中间级候选框。
[0101]
条款a6、根据条款a5所述的编译方法,其中从中间级候选框中选取前k个中间级候选框包括:
[0102]
从所述移除的多个所述目标候选框中选取前k个候选框,以作为所述区域候选网络的输出候选框。
[0103]
条款a7、根据条款a6所述的编译方法,其中所述候选框的度量值是根据候选框的置信度和框内所识别物体类型的概率所确定的。
[0104]
条款a8、一种对运行于人工智能芯片上的区域候选网络进行优化的编译器,包括:
[0105]
获取模块,其用于获取图像在所述区域候选网络中的初始候选框;
[0106]
第一筛减模块,其用于基于预设条件对所述初始候选框进行一次筛减,以获得中间级候选框;
[0107]
第二筛减模块,其用于基于候选框的重叠度对所述中间级候选框进行二次筛减,以从中间级候选框中选取前k个中间级候选框作为所述区域候选网络的输出候选框,以完成对所述区域候选网络的优化,其中k是正整数;以及
[0108]
编译模块,其用于将优化后的所述区域候选网络编译成对应的二进制指令序列,以分配至人工智能芯片处执行对应的任务。
[0109]
条款a9、根据条款a8所述的编译器,其中在获取图像在所述区域候选网络中的初始候选框中,所述获取模块配置成:
[0110]
获取所述区域候选网络的输出参数;以及
[0111]
基于对所述输出参数的叠加,生成所述初始候选框。
[0112]
条款a10、根据条款a9所述的编译器,其中所述输出参数包括锚点参数以及边界框参数。
[0113]
条款a11、根据条款a8所述的编译器,其中所述预设条件包括:
[0114]
在所述图像的原图尺寸中长宽小于阈值的候选框;和/或
[0115]
在所述图像的原图尺寸中超出图像区域的候选框。
[0116]
条款a12、根据条款a8-a11的任意一项所述的编译器,其中对基于候选框的重叠度对所述中间级候选框进行二次筛减中,所述第二筛选模块配置成迭代地执行以下操作,直至选取完所述中间级候选框中的所有目标候选框:
[0117]
从当前的中间级候选框中选取目标候选框和与所述目标候选框重叠度大于阈值的重叠候选框,其中所述目标候选框是当前的中间级候选框中具有最大度量值的候选框;以及
[0118]
从当前的所述中间级候选框中删除所述重叠候选框,并且移除所述目标候选框以得到更新后的中间级候选框,以便在执行下一次迭代时将所述更新后的中间级候选框作为当前的中间级候选框。
[0119]
条款a13、根据条款a12所述的编译器,其中在从从中间级候选框中选取前k个中间级候选框中,所述第二筛选模块配置成:
[0120]
从所述移除的多个所述目标候选框中选取前k个候选框,以作为所述区域候选网络的输出候选框。
[0121]
条款a14、根据条款a13所述的编译器,其中所述候选框的度量值是根据候选框的置信度和框内所识别物体类型的概率所确定的。。
[0122]
条款a15、一种对运行于人工智能芯片上的区域候选网络进行优化的设备,包括:
[0123]
至少一个处理器;以及
[0124]
至少一个存储器,其存储有对运行于人工智能芯片上的区域候选网络进行优化的程序指令,当所述程序指令由所述至少一个处理器加载并执行时,使得所述设备执行条款a1-a7的任意一项所述的编译方法。
[0125]
条款a16、一种计算机程序产品,包括对运行于人工智能芯片上的区域候选网络进行优化的计算机程序,所述计算机程序在被处理器执行时实现根据条款a1-a7中任一项所述的编译方法。
[0126]
条款a17、一种集成电路装置,包括根据条款a8-a14的任意一项所述的编译器或条款a15所述的设备。
[0127]
条款a18、一种板卡,包括根据条款a17所述的集成电路装置。
[0128]
虽然本说明书已经示出和描述了本公开的多个实施方式,但对于本领域技术人员显而易见的是,这样的实施方式只是以示例的方式提供的。本领域技术人员会在不偏离本公开思想和精神的情况下想到许多更改、改变和替代的方式。应当理解的是在实践本公开的过程中,可以采用对本文所描述的本公开实施方式的各种替代方案。所附权利要求书旨
在限定本公开的保护范围,并因此覆盖这些权利要求范围内的模块组成、等同或替代方案。

技术特征:


1.一种对运行于人工智能芯片上的区域候选网络进行优化的编译方法,所述编译方法由处理器来执行,并且包括:获取图像在所述区域候选网络中的初始候选框;基于预设条件对所述初始候选框进行一次筛减,以获得中间级候选框;基于候选框的重叠度对所述中间级候选框进行二次筛减,以从中间级候选框中选取前k个中间级候选框作为所述区域候选网络的输出候选框,以完成对所述区域候选网络的优化,其中k是正整数;以及将优化后的所述区域候选网络编译成对应的二进制指令序列,以分配至人工智能芯片处执行对应的任务。2.根据权利要求1所述的编译方法,其中获取图像在所述区域候选网络中的初始候选框包括:获取所述区域候选网络的输出参数;以及基于对所述输出参数的叠加,生成所述初始候选框。3.根据权利要求2所述的编译方法,其中所述输出参数包括锚点参数以及边界框参数。4.根据权利要求1所述的编译方法,其中所述预设条件包括:在所述图像的原图尺寸中长宽小于阈值的候选框;和/或在所述图像的原图尺寸中超出图像区域的候选框。5.根据权利要求1至4中任一项所述的编译方法,其中基于候选框的重叠度对所述中间级候选框进行二次筛减包括迭代地执行以下操作,直至选取完所述中间级候选框中的所有目标候选框:从当前的中间级候选框中选取目标候选框和与所述目标候选框重叠度大于阈值的重叠候选框,其中所述目标候选框是当前的中间级候选框中具有最大度量值的候选框;以及从当前的所述中间级候选框中删除所述重叠候选框,并且移除所述目标候选框以得到更新后的中间级候选框,以便在执行下一次迭代时将所述更新后的中间级候选框作为当前的中间级候选框。6.根据权利要求5所述的编译方法,其中从中间级候选框中选取前k个中间级候选框包括:从所述移除的多个所述目标候选框中选取前k个候选框,以作为所述区域候选网络的输出候选框。7.根据权利要求6所述的编译方法,其中所述候选框的度量值是根据候选框的置信度和框内所识别物体类型的概率所确定的。8.一种对运行于人工智能芯片上的区域候选网络进行优化的编译器,包括:获取模块,其用于获取图像在所述区域候选网络中的初始候选框;第一筛减模块,其用于基于预设条件对所述初始候选框进行一次筛减,以获得中间级候选框;第二筛减模块,其用于基于候选框的重叠度对所述中间级候选框进行二次筛减,以从中间级候选框中选取前k个中间级候选框作为所述区域候选网络的输出候选框,以完成对所述区域候选网络的优化,其中k是正整数;以及编译模块,其用于将优化后的所述区域候选网络编译成对应的二进制指令序列,以分
配至人工智能处理器上执行对应的任务。9.一种对运行于人工智能芯片上的区域候选网络进行优化的设备,包括:至少一个处理器;以及至少一个存储器,其存储有对运行于人工智能芯片上的区域候选网络进行优化的程序指令,当所述程序指令由所述至少一个处理器加载并执行时,使得所述设备执行根据权利要求1-7的任意一项所述的编译方法。10.一种计算机程序产品,包括对运行于人工智能芯片上的区域候选网络进行优化的计算机程序,所述计算机程序在被处理器执行时实现根据权利要求1-7中任一项所述的编译方法。11.一种集成电路装置,包括根据权利要求8所述的编译器或根据权利要求9所述的设备。12.一种板卡,包括根据权利要求11所述的集成电路装置。

技术总结


本公开涉及一种对运行于人工智能芯片上的区域候选网络进行优化的编译方法及相关产品,该相关产品包括编译器、设备和计算机可读存储介质。该设备可以包括在组合处理装置的计算处理装置中,该计算处理装置可以包括一个或多个数据处理装置。前述的组合处理装置还可以包括接口装置和其他处理装置。所述计算处理装置与其他处理装置进行交互,共同完成用户指定的计算操作。组合处理装置还可以包括存储装置,该存储装置分别与设备和其他处理装置连接,用于存储该设备和其他处理装置的数据。通过本公开的方案,可以减少候选框筛选过程中因排序带来的计算开销。排序带来的计算开销。排序带来的计算开销。


技术研发人员:

ꢀ(74)专利代理机构

受保护的技术使用者:

上海寒武纪信息科技有限公司

技术研发日:

2021.06.30

技术公布日:

2022/12/29

本文发布于:2024-09-22 03:43:02,感谢您对本站的认可!

本文链接:https://www.17tex.com/tex/4/49413.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:所述   装置   处理器   区域
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议