CN111324793B - 对存储感兴趣区域的数据的操作进行控制的方法和装置 - Google Patents
对存储感兴趣区域的数据的操作进行控制的方法和装置 Download PDFInfo
- Publication number
- CN111324793B CN111324793B CN201811541063.2A CN201811541063A CN111324793B CN 111324793 B CN111324793 B CN 111324793B CN 201811541063 A CN201811541063 A CN 201811541063A CN 111324793 B CN111324793 B CN 111324793B
- Authority
- CN
- China
- Prior art keywords
- region
- interest
- data
- storage
- storage area
- 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
- 238000000034 method Methods 0.000 title claims abstract description 69
- 230000015654 memory Effects 0.000 claims description 141
- 238000012545 processing Methods 0.000 claims description 27
- 238000001514 detection method Methods 0.000 abstract description 26
- 238000013473 artificial intelligence Methods 0.000 description 15
- 239000013256 coordination polymer Substances 0.000 description 9
- 230000008569 process Effects 0.000 description 6
- 238000013528 artificial neural network Methods 0.000 description 5
- 230000008901 benefit Effects 0.000 description 5
- 230000006870 function Effects 0.000 description 5
- 230000002829 reductive effect Effects 0.000 description 5
- 238000004590 computer program Methods 0.000 description 4
- 230000000694 effects Effects 0.000 description 4
- 238000006467 substitution reaction Methods 0.000 description 4
- 238000012546 transfer Methods 0.000 description 4
- 230000001133 acceleration Effects 0.000 description 3
- 238000001914 filtration Methods 0.000 description 3
- CIWBSHSKHKDKBQ-JLAZNSOCSA-N Ascorbic acid Chemical compound OC[C@H](O)[C@H]1OC(=O)C(O)=C1O CIWBSHSKHKDKBQ-JLAZNSOCSA-N 0.000 description 2
- 238000007792 addition Methods 0.000 description 2
- 238000013527 convolutional neural network Methods 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- 230000000670 limiting effect Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 239000003607 modifier Substances 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 238000011176 pooling Methods 0.000 description 2
- 230000004044 response Effects 0.000 description 2
- 230000000717 retained effect Effects 0.000 description 2
- 230000004075 alteration Effects 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 230000003139 buffering effect Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000000354 decomposition reaction Methods 0.000 description 1
- 230000003247 decreasing effect Effects 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 230000004069 differentiation Effects 0.000 description 1
- 238000013100 final test Methods 0.000 description 1
- 239000013307 optical fiber Substances 0.000 description 1
- 238000005215 recombination Methods 0.000 description 1
- 230000006798 recombination Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 230000001629 suppression Effects 0.000 description 1
- 230000009466 transformation Effects 0.000 description 1
- XLYOFNOQVPJJNP-UHFFFAOYSA-N water Substances O XLYOFNOQVPJJNP-UHFFFAOYSA-N 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/06—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
- G06N3/063—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0604—Improving or facilitating administration, e.g. storage management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0646—Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
- G06F3/0647—Migration mechanisms
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0656—Data buffering arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0659—Command handling arrangements, e.g. command buffers, queues, command scheduling
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/045—Combinations of networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06V—IMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
- G06V10/00—Arrangements for image or video recognition or understanding
- G06V10/20—Image preprocessing
- G06V10/25—Determination of region of interest [ROI] or a volume of interest [VOI]
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Human Computer Interaction (AREA)
- Biophysics (AREA)
- Biomedical Technology (AREA)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- General Health & Medical Sciences (AREA)
- Artificial Intelligence (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- Evolutionary Computation (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Data Mining & Analysis (AREA)
- Computational Linguistics (AREA)
- Neurology (AREA)
- Multimedia (AREA)
- Apparatus For Radiation Diagnosis (AREA)
- Image Processing (AREA)
Abstract
公开了一种对存储感兴趣区域的数据的操作进行控制的方法和装置,该方法包括:获取第一感兴趣区域的数据;根据第一感兴趣区域的得分,确定保留第一感兴趣区域的数据;以及在用于存储感兴趣区域数据的存储区域的剩余容量不足的情况下,使用第一感兴趣区域的数据覆盖已经存储在存储区域中的第二感兴趣区域的数据。通过根据本公开的实施例的方法和装置,能够有效地控制感兴趣区域数据的数据量,同时确保检测结果的精度。
Description
技术领域
本公开总体上涉及人工智能的技术领域,并且具体地涉及一种对存储感兴趣区域数据的操作进行控制的方法和装置。
背景技术
诸如RCNN(Regions with CNN features)、空间金字塔池化网络(SpatialPyramid Pooling Network,SPP-Net)、快速RCNN(Fast RCNN)、更快速RCNN(Faster RCNN)等效果优良的多阶段对象检测方法基于感兴趣区域(Region of Interest,ROI)推荐的操作,即Proposal操作。
然而,Proposal操作产生大量的ROI,使得上述基于Proposal操作的多阶段对象检测方法不适合在硬件资源有限的人工智能芯片上高效率地实现。
发明内容
根据本公开的一个方面,提供了一种对存储感兴趣区域数据的操作进行控制的方法。该方法可以包括:获取第一感兴趣区域的数据;根据第一感兴趣区域的得分,确定保留第一感兴趣区域的数据;以及在用于存储感兴趣区域数据的存储区域的剩余容量不足的情况下,使用第一感兴趣区域的数据覆盖已经存储在存储区域中的第二感兴趣区域的数据。
根据本公开的另一个方面,还提供了一种计算机可读取的非临时性存储介质,在其上存储有程序指令,该程序指令可以在被处理器执行时运行上述方法。
根据本公开的另一个方面,还提供了一种对存储感兴趣区域数据的操作进行控制的装置。该装置可以包括处理器和缓冲存储器,其中,处理器可以被配置为在运行时至少执行上述方法,并且缓冲存储器可以被配置为至少缓存第一感兴趣区域的数据。
根据本公开的另一个方面,还提供了一种对感兴趣区域数据的操作进行控制的装置。该装置可以包括缓冲存储器、第一逻辑电路、第二逻辑电路和存储控制电路,其中,缓冲存储器可以被配置为缓存所获取的第一感兴趣区域的数据,第一逻辑电路可以被配置为根据第一感兴趣区域的得分确定是否保留第一感兴趣区域的数据,第二逻辑电路可以被配置为在存储器的用于存储感兴趣区域数据的存储区域的剩余容量不足的情况下,指示使用第一感兴趣区域的数据覆盖已经存储在存储区域中的第二感兴趣区域的数据,并且存储控制电路可以被配置为根据来自第二逻辑电路的指示,控制将第一感兴趣区域的数据存储到存储区域中。
根据本公开的实施例的方法和装置,能够有效地控制ROI的数量,同时确保检测结果的精度。
附图说明
通过结合附图对本公开实施例进行更详细的描述,本公开的上述以及其他目的、特征和优势将变得更加明显。附图用来提供对本公开实施例的进一步理解,并且构成说明书的一部分,与本公开实施例一起用于解释本公开,并不构成对本公开的限制。在附图中,相同的参考标号通常代表相同部件或步骤。
图1示出根据本公开的实施例的系统的示例。
图2示出图1的示例系统中的计算引擎CE的示例。
图3示出根据本公开的实施例的对存储ROI数据的操作进行控制的方法的示例。
图4示出根据本公开的实施例的对存储ROI数据的操作进行控制的方法的示例。
图5示出根据本公开的实施例的ROI数据存储状态的一个示例。
图6示出根据本公开的实施例的用于产生随机数的线性反馈移位寄存器的示例。
图7示出根据本公开的方法的流水线式执行过程的示例。
图8示出根据本公开的实施例的对存储ROI数据的操作进行控制的方法的示例。
图9示出根据本公开的实施例的对存储ROI数据的操作进行控制的方法的示例。
图10示出根据本公开的实施例的对存储ROI数据的操作进行控制的方法的示例。
图11示出根据本公开的实施例的对存储ROI数据的操作进行控制的装置的示例。
图12示出根据本公开的实施例的对存储ROI数据的操作进行控制的装置的示例。
图13示出根据本公开的实施例的对存储ROI数据的操作进行控制的装置的示例。
具体实施方式
下面,将参考附图详细地描述根据本公开的示例实施例。显然,所描述的实施例仅仅是本公开的一部分实施例,而不是本公开的全部实施例,应理解,本公开不受这里描述的示例实施例的限制。
概述
诸如RCNN、SPP-Net、Fast RCNN和Faster RCNN这样的多阶段检测方法基于Proposal操作产生大量的ROI,然后基于所生成的ROI执行诸如ROI过滤、ROI变换、ROI对齐、ROI排序、非极大抑制等后续操作。
对于人工智能芯片而言,由于成本和芯片空间等不同方面的考虑和/或限制,人工智能芯片通常只配置一个或少量的片上处理器以及容量相对较低的片上存储器。
硬件方面的限制导致人工智能芯片无法独立和/或高效率地执行基于Proposal操作的多阶段对象检测方法中的至少在完成NMS之前的步骤,导致诸如手机这样的对于处理效率和功耗均有较高要求的终端设备不得不放弃诸如Faster RCNN这样的检测效果更好的多阶段对象检测方法,而采用诸如Tiny-SSD等单阶段的对象检测方法。
本公开旨在提供一种改善的用于对存储感兴趣区域数据的操作进行控制的方法及装置。
示例性系统
为了便于描述,首先在图1中示出能够适用根据本公开的实施例的方法和装置的示例性系统。
如图1所示,该示例性系统可以包括人工智能芯片(在本文中,在不引起混淆的情况下,有时也简称为“芯片”)CP和片外存储器MOFFCP,其中,人工智能芯片CP可以包括在一个芯片(或晶片)上实现的片上处理器PU、片上存储器MONCP和计算引擎CE。
基于不同的芯片架构,片上处理器PU可以是基于例如GPU、ARM处理器、FPGA等开发的轻量级处理器内核,例如可以是基于FPGA开发的精简指令集计算(RISC)软处理器内核等。片上处理器PU可以在通电时启动,并且可以根据预定的指令序列(例如,包括片上操作系统、根据针对预先设计的人工神经网络而预先编译出的可执行指令序列等),执行例如除了人工神经网络中的运算本身之外的其他逻辑处理,和/或向人工智能芯片CP中的其他部件或电路发出控制指令和相关参数,以使芯片中的其他部件或电路能够响应于所接收的指令而执行相应的操作。
计算引擎CE可以响应于来自片上处理器PU的指令和参数,执行人工神经网络中的运算本身。例如,在针对卷积神经网络的人工智能芯片中,计算引擎CE可以包括卷积运算加速核电路、池化运算加速核电路等。例如,卷积运算加速核电路可以包括一个或多个乘法累加器阵列,每个乘法累加器阵列可以包括多个乘法累加器,其中,例如,如图2所示,每个乘法累加器可以包括多个乘法器(在图2中用带有乘法符号的圆圈表示)和多个加法器(在图2中用带有加法符号的正六边形表示)。作为常用的电子器件,关于乘法器和加法器的电路结构,在本文中不再赘述。
根据本公开的实施例的系统或芯片可以不局限于计算引擎CE的电路结构和控制流程。在另外的实施例中,根据本公开的实施例的系统或芯片甚至可以不包括专用的计算引擎CE。
片上存储器MONCP可以是实施在芯片CP上的任何适当高速存储器,例如高速缓冲存储器或静态随机存取存储器,其数据存取速率可以与芯片上的其他部件(例如片上处理器PU和计算引擎CE)的处理速度相匹配。根据不同的实施例,片上存储器MONCP可以包括一个或多个独立的高速存储器。例如,在一个实施例中,可以针对来自片外存储器MOFFCP且用于计算的数据设置一个或多个输入片上存储器,并且针对例如来自片上处理器PU和/或计算引擎CE且要输出到片外存储器MOFFCP的数据设置一个或多个输出片上存储器。在另外的实施例中,也可以设置一个或多个片上存储器,用于输入数据和输出数据两者。在一个实施例中,片上存储器MONCP可以是支持数据的二维存取或者允许直接存取二维数据的存储器或存储系统。
根据本公开的实施例的系统或芯片可以不局限于片上存储器MONCP的配置方式和存取控制策略。
在图1中,连线两端的装置/部件/元件/模块/电路可以例如通过数据总线和/或指令总线等直接地连接或耦接在一起,也可以经由诸如交叉开关(Crossbar)等其他中介装置/部件/元件/模块/电路间接地连接或耦接在一起,其中,连线的箭头可以表示被关注的指令和/或数据的流向,但并不意味着指令和/或数据只能按照箭头所示的方向流动。
例如,片上处理器PU可以指示在片上存储器MONCP和片外存储器MOFFCP之间进行数据交换,并且可以指示计算引擎CE基于片上存储器MONCP中的数据执行运算并且将运算结果输出到片上存储器MONCP中。另外,片上处理器PU也可以基于片上存储器MONCP和/或片外存储器MOFFCP中的数据执行例如其他逻辑处理和/或控制。通常,片上处理器PU与片上存储器MONCP之间的操作速度小于计算引擎CE与片上存储器MONCP之间的操作速度,而且切换往往有时间代价。
为了简洁,在图1中仅例示了人工智能芯片CP上的部分电路或部件,而省略了诸如用于指令时序控制的定时控制器、用于指令中断控制的中断控制器、用于实现部件之间的互联的交叉开关和/或多路选择器、协处理器、专门用于控制存取片外存储器MOFFCP中的数据的片外数据传输管理器等其他可能的部件/模块/电路/单元/元件。
应当理解,图1仅仅是为了便于下文的描述而给出的示例,能够适用根据本公开的实施例的方法和装置的系统或场景不局限于图1所示的人工智能芯片。
示例性方法
图3示出根据本公开的实施例的用于控制存储ROI数据的方法的示例,该示例方法可以包括:
步骤S110、获取感兴趣区域ROI1(在本文中也称为“第一感兴趣区域”)的数据D1;
步骤S120、根据ROI1的得分S1,确定是否保留D1,其中,在ROI1的得分S1满足预定条件的情况下,可以确定保留D1;以及
步骤S130、根据片上存储器MONCP中用于存储感兴趣区域数据的存储区域SR的剩余容量,确定针对D1的存储方式,其中,在存储区域SR的剩余容量不足的情况下,针对D1的存储方式可以包括使用D1覆盖已经存储在存储区域SR中的感兴趣区域ROI2(在本文中也称为“第二感兴趣区域”)的数据D2。
通过根据本公开的实施例的方法,最终能够作为对象检测方法的后续处理的基础的ROI数据的数量可以取决于存储区域SR的容量,由此能够有效地控制最终的ROI数据的数量。
下面结合示例描述图3中的示例方法的更多的细节。
如图3所示,根据本公开的实施例的方法可以开始于步骤S110。
在步骤S110中,在一个实施例中,针对输入的图像,可以采用任何适当的方式获取关于该图像中的一个或多个关注对象的一个感兴趣区域ROI1的数据D1。例如,可以通过区域推荐网络(Region Proposal Network,RPN)、选择性操作(Selective Search,SS)等各种适当的Proposal操作获取感兴趣区域ROI1的数据D1。例如,步骤S110可以对应于在通常的Proposal操作中生成单个感兴趣区域ROI1的数据D1的处理。
通过Proposal操作获取的感兴趣区域ROI1的数据D1可以包括ROI1的关键点坐标、大小、形状和得分(例如,置信度)等信息。
在一个实施例中,可以不计算每个ROI的置信度,而是获得每个ROI的置信度替代值,该每个置信度替代值可以是在确定该感兴趣区域ROI的置信度的过程中省略非线性处理(例如,Sigmoid函数、Tanh函数、ReLU函数)的情况下所获得的结果。
进一步地,可以将置信度替代值量化到预定精度(例如,8比特精度),或者说,可以使用在预定精度范围内的置信度替代值,从而限定置信度替代值的数量。
在步骤S110的另外的实施例中,获取感兴趣区域ROI1的数据D1可以包括例如经由数据接口、网络接口等从外部接收感兴趣区域ROI1的数据D1,和/或接收或读取由独立于图3的示例方法的另一个方法(该方法可以由片上处理器PU和/或片外处理器执行)输出的感兴趣区域ROI1的数据D1,等等。
通过步骤S110获取的数据D1可以缓存到缓冲存储器中。在一个实施例中,该缓冲存储器可以是独立于片上存储器MONCP设置的高速缓冲存储器。在另外的实施例中,也可以基于片上存储器MONCP确定不同于存储区域SR的一块存储区域作为该缓冲存储器。
然后,图3的示例方法可以继续到步骤S120,并且如图4所示,在步骤S120中,可以判断ROI1的得分S1是否满足预定条件,其中,如前文所述,ROI1的得分S1可以包括ROI1的置信度或置信度替代值。
根据不同的实施例,预定条件可以包括ROI1的得分S1在预定阈值范围内、ROI1的得分S1大于或等于阈值、ROI1的得分S1大于阈值、ROI1的得分S1小于或等于阈值中的一个或多个,并且根据不同的实施例,这样的预定条件可以根据需要预先设置或输入。
在ROI1的得分S1是ROI1的置信度的情况下,例如,可以确定阈值Tnl为0.7或0.8,并且在步骤S120中检测的预定条件可以是ROI1的得分S1大于或等于0.7或0.8,等等。
在ROI1的得分S1是ROI1的置信度替代值的情况下,可以根据上述的阈值Tnl确定关于置信度替代值的阈值Tl。
例如,可以通过下面的等式(1),根据阈值Tnl确定阈值Tl:
Tl=(Tnl-1/2)*2n (1)
其中,n可以是在用于表示置信度替代值的定点数格式中与小数部分相对应的位的数量。例如,在采用8比特精度的定点数格式m.n(其中,m表示与整数部分相对应的位的数量,m+n+1=8)表示置信度替代值的情况下,与小数部分相对应的位的数量n可以是大于或等于5且小于或等于7的某个数值。
在另外的示例中,为了获得更好的处理精度,避免将过多的ROI过滤掉,也可以使用下面的等式(2),根据阈值Tnl确定阈值Tl:
Tl=Tnl*2n (2)
于是,例如在n=5且Tl=0.7的情况下,在步骤S120中使用的置信度替代值的阈值可以为Tl=0.7*25=22.4,并且要检测的预定条件可以是“ROI1的得分S1是否大于或等于22.4”;诸如此类。
通过步骤S120,可以只保留得分满足预定条件(例如,具有足够高的置信度)的ROI,从而实现最终的ROI数量的初步控制。
在ROI1的得分S1不满足预定条件的情况下(即,判断结果为“否”),可以确定不保留D1。在该情况下,如图4所示,方法可以继续到步骤S140,并丢弃D1。
在ROI1的得分S1满足预定条件的情况下(即,判断结果为“是”),可以确定保留D1,并且方法可以继续到步骤S130,以便根据片上存储器MONCP中用于存储感兴趣区域数据的存储区域SR的剩余容量,确定针对D1的存储方式。
如图4所示,在步骤S130中,可以在子步骤S131中检测片上存储器MONCP中预先分配用于存储ROI数据的存储区域SR的剩余容量是否充足。
存储区域SR的总容量可以根据片上存储器MONCP的总容量以及期望最终在片上存储器MONCP中存储的ROI的总数量N来确定。例如,如果每个ROI的可能的最大大小为s,则存储区域SR的总容量可以为N*s(其小于或等于片上存储器MONCP的总容量)。
在一个实施例中,可以设置计数器,用于对在存储区域SR中存储的ROI的数量进行计数。
例如,可以将计数器的计数值初始化为0。然后,对于ROI1的数据D1,执行图3或图4的示例方法。在子步骤S131中,如果计数值小于N,则可以确定存储区域SR的剩余容量充足,否则可以确定存储区域SR的剩余容量不足。如果在经过图3或图4的步骤S130之后,数据D1被存储到片上存储器MONCP中,则可以将计数值加1,否则可以保持计数器中的计数值不变。
在另一个实施例中,可以将计数器的计数值初始化为最大值,并且计数值O可以表示存储区域SR的剩余容量不足。相应地,如果在经过图3或图4的步骤S130之后,数据D1被存储到片上存储器MONCP中,则可以将计数值减1,否则可以保持计数器中的计数值不变。
在另外的实施例中,可以事先在片上存储器MONCP中分配一段连续的存储区域作为存储区域SR,然后控制每个ROI的数据连续地存储到存储区域SR中。在该实施例中,可以确定存储区域SR中的空闲部分的首址至存储区域SR的末尾地址之间的存储区域的容量是否大于或等于ROI1的数据D1的大小,如果是,则可以确定存储区域SR的剩余容量充足,否则可以确定存储区域SR的剩余容量不足。
在存储区域SR的剩余容量充足的情况下,如图4所示,可以继续到步骤S150,并且将数据D1存储到存储区域SR中的空闲部分。在采用计数器的情况下,在步骤S150中,还可以将计数值相应地加1或减1。
根据不同的实施例,为了确保最终检测结果的精度,ROI的总数量N可以是数千的量级的数值,例如2000、4000、8000等。
在存储区域SR的剩余容量不足的情况下,关于D1的存储方式,例如,可以直接丢弃D1。然而,如图5所示,这样的处理方式最终可能导致图像(图5中的最外围的实线框)中的某个区域(例如,图5中位于图像的下部、用阴影表示的部分)中的ROI(在图5中用粗线框表示)全部被丢弃,这将影响最终检测结果的精度。
可以使ROI的总数量N的尽可能得大,这将导致需要分配更大容量的存储区域SR。而且,在这样的情况下,N的值还将取决于输入的图像和要检测到的目标。例如,对于PASCALVOC数据集,在采用该方式的情况下,需要将N设置在8192以上,才能够确保最终的检测结果的精度,并且对于另外的数据集,N值可能改变。
为此,关于D1的存储方式,在一个实施例中,可以基于用于对象检测的人工神经网络的输出冗余性,随机地控制是否继续保留D1以及使用D1替换已经存储在存储区域SR的哪个ROI数据。通过严格的数学论证和大量的实验结果表明,随机性越高,越能够确保最终结果的准确性和精度。
例如,对于PASCAL VOC数据集,在采用随机控制方式的情况下,N=2000就可以确保最终的检测结果没有精度损失。为了更加稳妥,可以设置N=4000,从而能够在将最终的ROI数量压缩到能够适合于片上存储器MONCP的程度的同时,确保最终检测结果的准确性和精度。
如图4所示,在步骤S130中,在子步骤S131的检测结果为“否”的情况下,可以继续到子步骤S133以生成随机数RV,其中,可以事先根据存储区域SR的总容量或者N确定与随机数RV有关的一个预定数值范围VS,例如VS=[1,N]。
在一个实施例中,可以采用例如图6所示的线性反馈移位寄存器(LinearFeedback Shift Register,LFSR)产生随机数。K位的LFSR可以产生[1,2K-1]之间的随机数RV’。
为了加强LFSR的随机性,可以选择K的值,使得2K远大于N。例如,在图6的示例中,可以选择N=4095、K=16、VS=[1,4095],并且可以将随机数RV确定为RV=RV’%2K=RV’%4096。
还可以通过调整预定数值范围VS和/或用于根据RV’确定RV的方式,调整丢弃D1的概率。例如,在VS=[0,3999]并且RV=RV’%(2K)=RV’%4096的情况下,如果RV的值为属于[4000,4095],则D1将被丢弃。丢弃D1的概率将变得更高。
可以通过对特定比特进行截取,简单且高效率地实现使用2的幂数作为除数进行取模操作。因此,采用RV=RV’%(2K),能够利用硬件特性容易且高效率地确定随机数RV,例如可以在一个时钟周期完成。
然而,根据RV’确定RV的方式也不局限于RV=RV’%(2K)。例如,在VS=[0,3999]的情况下,也可以根据RV=RV’%(4000+x)确定RV的值,其中,作为调整量,x可以是大于或等于0的某个整数。
然后,可以在子步骤S135中检测随机数RV是否在预定数值范围VS内。例如,在图6的示例中,生成的随机数RV可以是[0,4095]范围内的某个值,可以在子步骤S135中检测随机数RV是否在预定数值范围VS=[1,4095]内。
如果随机数RV不在预定数值范围VS内(即,子步骤S135的判断结果为“否”),则方法可以继续到前述的步骤S140,并丢弃D1。例如,在图6的示例中,如果随机数RV=0,则丢弃D1。
如果随机数RV在预定数值范围VS内(即,子步骤S135的判断结果为“是”),则方法可以继续到子步骤S137,以便根据随机数RV确定存储区域SR中的一个存储位置ADDR。例如,可以使用该随机数RV作为从存储区域SR的首地址开始的偏移量,然后可以根据(存储区域SR的首地址+RV),确定存储位置ADDR。
此时,存储区域SR的剩余容量不足,这意味着在该存储位置ADDR处已经存储有另一个感兴趣区域ROI2的数据D2。在本文中,为了区分,也分别将感兴趣区域ROI1和感兴趣区域ROI2称为“第一感兴趣区域”和“第二感兴趣区域”。
于是,如图4所示,可以在子步骤S139中,将数据D1以覆盖数据D2的方式存储到存储区域SR中的存储位置ADDR处。
在采用计数器计数已经存储到存储区域SR中的ROI的数量的情况下,可以在子步骤S135返回“是”之后的任何适当的时间(例如,可以确认在子步骤S139中成功地将数据D1存储到存储区域SR中之后),将计数器中的计数值加1。
如前文所述,可以通过调整预定数值范围VS和/或用于根据RV’确定RV的方式,调整丢弃D1的概率。例如,在N=4095、K=16、VS=[1,4095]并且RV=RV’%(2K)=RV’%4096的情况下,子步骤S137和S139的执行概率显然远高于步骤S140的执行概率;在N=4000、VS=[0,3999]并且RV=RV’%(2K)=RV’%4096的情况下,步骤S140的执行概率将提高。
在能够明确先存储到片上存储器MONCP中的ROI数据对于后续的处理更有用的情况下,也可以子步骤S137和S139的执行概率小于步骤S140的执行概率。
在更多的情况下,通常可能无法事先明确在原始生成的可能数十万的ROI数据或者经过基于得分的过滤之后初步保留的仍然可能数万的ROI数据中哪些ROI数据更有用。
为此,在一个实施例中,可以使子步骤S137和S139的执行概率(即,随机数RV在预定数值范围VS内的概率)大于或等于步骤S140的执行概率(即,随机数RV不在预定数值范围VS内的概率),以便使后续更多数量的ROI数据能够有至少相同(或更高)的机会存储到片上存储器MONCP中,从而确保能够以较高的随机性控制ROI数据的替换,并确保最终检测结果的精度。
在图3或图4的示例方法中,每获取或生成一个ROI数据,就直接在步骤S120中根据该ROI的得分对该ROI数据进行过滤,然后在步骤S130中进一步地根据存储区域SR的剩余容量(或者还根据生成的随机数RV的值)确定是否继续存储该ROI数据以及相应的存储方式。
表格1示出在不同情况下针对图3或图4的示例中的ROI1的数据D1确定的存储方式。
表格1
通过步骤S120,原本数量可达数十万量级的ROI数据量可以降至数万的量级。通过步骤S130,数万的量级可以进一步地降至数千的量级(例如,2000、4000等),使得片上存储器MONCP(例如,通常可以为几百K字节到几M字节)足以存储最终保留的全部ROI数据,其中,如前文所述,通过步骤S130中的随机控制,使得最终存储在片上存储器MONCP中的所有ROI数据能够确保最终的检测结果的精度。
在图3或图4的示例方法中,只获取并处理一个ROI数据。可以采用流水式的控制方式执行多次图3或图4的示例方法,以获取(或生成)并处理所有的ROI数据。
例如,在步骤S110中的处理包括产生ROI数据的情况下,在步骤S110、S120和S130中,步骤S110中的“产生ROI数据”和步骤S130中的“将ROI数据存储到片上存储器MONCP中”可能需要相对更多的处理时间。
为此,在一个实施例中,如图7所示,可以控制使针对感兴趣区域ROI”1的步骤S110与针对感兴趣区域ROI’1的步骤S120和S130并行地执行,并且使针对感兴趣区域ROI”’1的步骤S110与针对ROI”1的步骤S120和S130并行地执行,以此类推。
流水式的控制方式需要硬件方面的支持,但是相比于逐个地每个处理ROI数据,总的处理时间能够显著地降低,能够进一步地提高片上硬件资源的利用率并且提高处理性能。
应当理解,根据本公开的流水式的控制方式不局限于图7的示例。
另外,根据上述表格1中的内容,根据本公开的实施例的用于控制存储ROI数据的方法可以不局限于图3或图4的示例流程。
例如,可以借助于硬件的使能信号和/或启用/禁用状态的控制,将根据本公开的实施例的用于控制存储ROI数据的方法拆分为在存储区域SR的剩余容量充足的情况下的控制方法和在存储区域SR的剩余容量不足的情况下的控制方法。例如,可以控制前述的LFSR在存储区域SR的剩余容量充足的情况下被禁用,而在存储区域SR的剩余容量不足的情况下才启用。
在存储区域SR的剩余容量充足的情况下,可以执行如图8所示的方法控制ROI数据的获取(或生成)和存储,其中,如果步骤S120的判断结果为“是”,则可以直接执行步骤S150。
在存储区域SR的剩余容量不足的情况下,可以执行如图9所示的方法控制ROI数据的获取(或生成)和存储,其中,如果步骤S120的判断结果为“是”,则可以直接执行步骤S130中的子步骤S133。
在另外的示例中,图10所示,在子步骤S133中生成的随机数RV可以只用于判断是否丢弃D1。相应地,例如,随机数RV可以是布尔值,并且预定数据值范围VS可以是只包含真值的范围;或者,在使用图6的示例中的LFSR的情况下,可以将预定数据值范围VS设置为[0,4095]的某个子集,例如[0,2047]。
然后,如图10所示,在步骤S130中还可以包括子步骤S136,用于在子步骤S135的判断结果为“是”的情况下生成另一个随机数RV”,然后代替图4中的子步骤S137,在子步骤S137’中根据随机数RV”确定ADDR。
示例性装置
图11示出根据本公开的实施例的对存储ROI数据的操作进行控制的装置的示例CON。在该示例中,根据本公开的实施例的装置CON可以包括处理单元PU和缓冲存储器BUF,并且可以作为片上装置与片上存储器MONCP等其他片上部件/电路实施在同一芯片上。
基于不同的芯片架构,处理单元(或片上处理器)PU可以是基于例如GPU、ARM处理器、FPGA等开发的轻量级处理器内核,例如可以是基于FPGA开发的精简指令集计算(RISC)软处理器内核等。
根据不同的实施例,缓冲存储器BUF可以是独立于片上存储器MONCP设置的高速缓冲存储器,也可以基于片上存储器MONCP确定的不同于存储区域SR的一块存储区域。
在一个实施例中,处理单元PU可以在通电时启动,并且可以根据预定的指令序列执行例如在上述“示例性方法”部分中描述的根据本公开各种实施例的方法中的步骤。
例如,处理器PU可以根据预定的指令序列指示将例如待检测图像的至少一部分从片外存储器MOFFCP(参见图1)读取到片上存储器MONCP中,然后可以基于片上存储器MONCP中的数据获取与待检测图像中的某个关注对象有关的一个ROI数据,并将该ROI数据缓存到缓冲存储器BUF中(参见前述示例方法中的步骤S110)。
然后,处理器PU可以针对缓冲存储器BUF中的ROI数据确定相应的存储方式(例如,参见前述示例方法中的步骤S120和S130和/或上述的表格1),并且根据情况丢弃缓冲存储器BUF中的ROI数据或者将缓冲存储器BUF中的ROI数据存储到片上存储器MONCP的指定存储区域SR中。
根据本公开的各个实施例,通过处理器PU的操作,针对待检测图像中的关注对象生成的所有ROI数据最终将被完全地存储在片上存储器MONCP。
然后,处理器PU可以只基于片上存储器MONCP中的ROI数据执行多阶段对象检测方法中的后续处理或步骤,例如,对ROI数据进行排序、执行NMS、确定每个ROI的类别、执行边界回归等,从而最终获得关于图像中的关注对象的检测结果。
除了在获取ROI数据的过程中可能需要从片外存储器MOFFCP获取最初输入张量(例如,待检测图像的至少一部分)之外,通过根据本公开的实施例的片上装置CON,人工智能芯片CP能够独立且高效地实现基于ROI数据的多阶段对象检测,并且能够确保最终检测结果的准确性和精度。
在另外的实施例中,可以将图11的示例中的处理器PU的部分处理(例如关于上述步骤S120和S130的处理)分离出来,以便获得更高的执行效率和/或支持流水线式作业。
例如,如图12所示,根据本公开的实施例的示例装置CON’可以包括缓冲存储器BUF、第一逻辑电路LC1、第二逻辑电路LC2和存储控制电路MAC。
根据不同的实施例,装置CON’可以包括处理器PU,也可以不包括处理器PU。在不包括处理器PU的情况下,装置CON’能够执行的操作可以包括上述示例方法中的步骤S120和S130,并且关于步骤S110的操作可以对应于从处理器PU接收ROI数据以及将所接收的ROI数据缓存到缓冲存储器BUF中。
在一个实施例中,装置CON’可以在检测到缓冲存储器BUF中存储了有效的ROI数据的情况下启动,也可以根据来自处理器PU的信号或指令启动。例如,如图12中的从处理器PU指向第一逻辑电路LC1的箭头所示,在该情况下,装置CON’的使能端可以对应于第一逻辑电路LC1的使能端。
在下文中,为了简单,假设使能信号对应于例如“1”这样的非零值或高电平,而禁用信号对应于零值或低电平。然而,应当理解,在另外的实施例中,使能信号和禁用信号的形式不局限于在本文中描述的示例。
第一逻辑电路LC1的一个输入端可以耦接到缓冲存储器BUF的输出端,并且第一逻辑电路LC1可以被配置为在被启动的情况下执行例如上述步骤S120中的操作,以根据当前缓存在缓冲存储器BUF中的ROI1的得分(例如,置信度或置信度替代值)确定是否保留ROI1的数据D1。
第一逻辑电路LC1的输出端可以耦接到第二逻辑电路LC2的使能端,并且还可以被配置为在确定保留ROI1的数据D1的情况下向第二逻辑电路LC2发出使能信号。
第二逻辑电路LC2可以被配置为在接收到来自第一逻辑电路LC1的使能信号或指令之后启动并执行例如上述步骤S130中的部分操作,包括检测在片上存储器MONCP中事先分配用于存储ROI数据的存储区域SR的容量是否充足以及根据检测结果确定针对ROI1的数据D1的存储方式,其中,根据情况下,所确定的存储方式可以包括在存储区域SR的剩余容量不足的情况下,指示使用数据D1覆盖已经存储在存储区域SR中的另一个感兴趣区域ROI2的数据D2。
第二逻辑电路LC2的两个输出端可以分别耦接到存储控制电路MAC的使能端和输入端,以便在确定存储数据D1的情况下,向存储控制电路MAC提供例如使能信号和/或在片上存储器MONCP中的存储位置等信息。
存储控制电路MAC可以耦接到缓冲存储器BUF和/或片上存储器MONCP,并且可以被配置为根据来自第二逻辑电路LC2的输出端的指示,控制将当前缓存在缓冲存储器BUF中的数据D1存储到片上存储器MONCP中的存储区域SR中的指定存储位置处。在一个实施例中,例如,存储控制电路MAC可以是片上存储控制器的一部分。
图13示出图12的示例装置CON’的一种示例性的实现方式。应当理解,图12的示例装置CON’的实现方式不局限于图13的示例。
在图13的示例中,第一逻辑电路LC1可以包括数值比较器COMP,其中,数值比较器COMP的使能端可以耦接到处理器PU,以便接收来自处理器PU或由按照处理器PU的指示/指令发出的使能信息,其一个输入端可以耦接到缓冲存储器BUF以便获得ROI1的得分。
在图13的示例中,第一逻辑电路LC1还可以包括寄存器REG1,用于存储用于比较操作的阈值,并且可以将寄存器REG1的输出端耦接到数值比较器COMP的另一个输入端。
不局限于图13的示例中的寄存器REG1,第一逻辑电路LC1也可以包括能够发挥相同功能的任何适当的存储部件,并且可以将用于比较操作的阈值事先设置或固化到这样的存储部件中。
在另外的实施例中,还可以将用于得分比较的阈值存储到片上存储器MONCP中,而不设置单独的寄存器REG1。在该实施例中,数值比较器COMP的另一个输入端可以耦接到片上存储器MONCP,如图13中的数值比较器COMP与片上存储器MONCP之间的虚线所示。
在一个实施例中,数值比较器COMP可以包括一个或多个集成数值比较器(其可以包括多个逻辑门元件),例如一个或多个74LS85集成数值比较器。例如,一个74LS85集成数值比较器可以直接支持4位数值的比较,进一步地,可以按照常规的串联和/或并联方式连接两个以上的74LS85比较器,以便支持8位数值、16位数值或更多位数值的比较。
应当理解,根据本公开的实施例的数值比较器COMP不局限于内部采用的集成数值比较器的类型、数量、型号和连接方式。根据本公开的实施例的数值比较器COMP也可以采用能够实现数值比较的任何其他适当的电路结构实现。
在数值比较器COMP的最后输出结果能够直接指示是否满足预定条件的情况下,例如,输出为布尔值(例如,1表示“满足”,0表示“不满足”),或者例如,在数值比较器COMP的输出数值中,二进制的“10”、“01”和“00”分别表示“大于”、“等于”和“小于”,于是非零值可以表示“满足”而零值可以表示“不满足”的情况下,数值比较器COMP的输出端可以直接耦接到第二逻辑电路LC2的使能端。
在另外的实施例中,在数值比较器COMP的最后输出结果无法直接或简单地指示是否满足预定条件的情况下,例如,在数值比较器COMP的输出数值中,二进制的“10”、“01”和“00”分别表示“大于”、“小于”和“等于”的情况下,或者例如在要检测的条件涉及与多个阈值的比较的情况下,第一逻辑电路LC1还可以包括一个或多个另外的寄存器和/或一个或多个逻辑门元件。
例如,在图13的示例中,对应于在数值比较器COMP的输出数值中,二进制的“10”、“01”和“00”分别表示“大于”、“小于”和“等于”,并且事先规定在得分小于阈值的情况下丢弃ROI数据的情况,第一逻辑电路LC1可以包括寄存器REG2和非门N1,其中,寄存器REG2的输入端可以耦接到数值比较器COMP的输出端,并且寄存器REG2中与二进制数值“10”、“01”和“00”中的最低比特位相对应的寄存位(在图13的示例中,REG2中最右侧用粗线框表示的寄存位)可以耦接到非门N1的输入端。
于是,在数值比较器COMP输出到寄存器REG2的数值为“10”或“00”时,非门N1输出高电平的使能信号,而在数值比较器COMP输出到寄存器REG2的数值为“01”时,非门N1输出低电平的禁用信号。
由此,第一逻辑电路LC1可以检测当前存储在缓冲存储器BUF中的ROI数据的得分是否大于或等于存储在REG1中的阈值,并且在缓冲存储器BUF中的ROI数据的得分大于或等于存储在REG1中的阈值的情况下,向第二逻辑电路LC2提供使能信号。
如前文所述,取决于要通过第一逻辑电路LC1检测的条件以及数值比较器COMP的输出结果的形式,第一逻辑电路LC1可以包括另外的一个或多个逻辑门元件,而不局限于图13的示例。
然后,在图13的示例中,第二逻辑电路LC2可以包括计数器CNT、非门N2和N3、随机数生成器RVG以及与门AND1和AND2。
与门AND1的一个输入端可以耦接到第一逻辑电路LC1中的非门N1的输出端,其另一个输入端可以耦接到计数器CNT的输出端,其输出端可以耦接到第二逻辑电路LC2的使能信号输出端并进一步地耦接到存储控制电路MAC的使能端。
计数器CNT可以是允许从预定的最大值(例如,预定最终要保留且存储到片上存储器MONCP中的ROI数据的最大数量N)开始递减至0的计数器。计数器CNT的使能端可以耦接到与门AND1的输出端,其输出端可以耦接到非门N2的输入端。
在一个实施例中,计数器CNT的输出端还可以耦接到存储控制电路MAC的输入端(如图13中的CNT和MAC之间的虚线所示),以便使存储控制电路MAC能够在使能的情况下根据计数器CNT中的计数值直接确定空闲的存储位置。
随机数生成器RVG的使能端可以耦接到非门N2的输出端。随机数生成器RVG的输出端可以耦接到非门N3的输入端,并且还可以耦接到存储控制电路MAC的输入端。
在一个实施例中,随机数生成器RVG可以包括例如图6所示的线性反馈移位寄存器LFSR和移位寄存器,其中,线性反馈移位寄存器LFSR可以用于在被使能时生成例如前述的随机数RV’,并且移位寄存器可以与线性反馈移位寄存器LFSR串联,并用于例如通过移位或截断处理对线性反馈移位寄存器LFSR的输出值执行取模运算,从而获得前述的随机数RV)。在另外的实施例中,随机数生成器RVG还可以包括其他任何适当的电路/模块/元件并采用其他任何适当的电路结构,以实现生成属于某个指定的数值范围的随机数的功能。
与门AND2的一个输入端可以耦接到第一逻辑电路LC1中的非门N1的输出端,其另一个输入端可以耦接到非门N2的输出端的输出端,其输出端可以耦接到第二逻辑电路LC2的使能信号输出端并进一步地耦接到存储控制电路MAC的使能端。
在图13所示的第二逻辑电路LC2中,与门AND1可以在第一逻辑电路LC1中的非门N1输出高电平信号(即,第一逻辑电路LC1确定保留缓冲存储器BUF中的数据)并且计数器CNT中的计数值不为0(即,在片上存储器MONCP中预先分配用于存储ROI数据的存储区域SR的剩余容量充足)的情况下,向存储控制电路MAC的使用端和计数器CNT的使能端发出高电平的使能信号,使得存储控制电路MAC能够响应于来自与门AND1的输出信号而将缓冲存储器BUF中的数据存储到片上存储器MONCP中的存储区域SR中的空闲区域中,并且使得计数器CNT能够响应于来自与门AND1的输出信号而将计数值减1。由此,可以实现与上述表格1中的编号为2的项目相对应的处理。
在计数器CNT中的计数值不为0的情况下,随机数生成器RVG的使能端的电平为低电平,并因此而被禁用。在计数器CNT中的计数值为0(即,存储区域SR的剩余容量不足)的情况下,随机数生成器RVG的使能端接收到高电平的使能信号,从而启动并生成随机数RV。
与门AND2可以在第一逻辑电路LC1中的非门N1输出高电平信号(即,第一逻辑电路LC1确定保留缓冲存储器BUF中的数据)并且计数器CNT中的计数值不为0(即,非门N3输出高电平)的情况下,向存储控制电路MAC的使用端的使能端发出高电平的使能信号。
然后,存储控制电路MAC能够响应于来自与门AND2的输出信号,在存储区域SR的剩余容量不足并且由随机数生成器RVG生成的随机数RV属于预定数据范围的情况下,根据随机数RV确定存储区域SR中的一个存储位置,在该存储位置处已经存储有另一个ROI数据,例如前述的ROI2的D2。然后,存储控制电路MAC可以控制将缓冲存储器BUF中的数据(即,ROI1的D1)以覆盖已经存储在存储区域SR中ROI2的D2的方式存储到存储区域SR中。由此,可以实现与上述表格1中的编号为4的项目相对应的处理。
在第一逻辑电路LC1中的非门N1输出低电平或者第二逻辑电路LC2中的与门AND1输出低电平的情况下,存储控制电路MAC不会将缓冲存储器BUF中的数据存储到片上存储器MONCP中。当处理器PU将下一个ROI数据缓存到缓冲存储器BUF中,从而丢弃原来存储在缓冲存储器BUF中的ROI数据。由此,可以实现与上述表格1中的编号为1或3的项目相对应的处理。
在根据本公开的实施例的示例装置CON’中,能够高效地控制由处理器PU生成且最终存储到片上存储器MONCP中的ROI数据的数量。
在另外的实施例中,例如图12或图13的示例中的装置CON’中的缓冲存储器BUF可以包括两个存储单元C1和C2,每个存储单元能够存储一个ROI数据,并且处理器PU和示例装置CON’可以被配置为交替地存取缓冲存储器BUF中的这两个存储单元。
例如,处理器PU可以将所生成的一个ROI数据缓存到存储单元C1中,并且指示CON’针对存储单元C1中的数据进行处理。然后,处理器PU可以在CON’针对存储单元C1中的数据进行处理的过程中生成另一个ROI数据,并将该ROI数据缓存到存储单元C2中。然后,CON’处理完存储单元C1中的数据之后,可以检测存储单元C2中是否存入新的数据,如果有,则可以针对存储单元C2中的数据进行处理。如此反复,从而可以实现ROI数据的生成和存储的流水线式控制(可以参考图7)。流水线式的控制能够进一步地提高芯片中的硬件资源的利用率,提高数据处理效率,从而能够提高芯片的性能。
在另外的实施例中,示例装置CON’中的缓冲存储器BUF也可以包括更多的存储单元,以便尽进一步地减少处理器PU和示例装置CON’之间的可能需要的互相等待时间。
应当理解,图10至图13中的示例装置CON或CON’仅为示例,根据本公开的实施例的用于控制ROI数据的存储(还可以包括生成ROI数据)的装置的实现方式不局限于此。
示例性人工智能芯片
图10至图13还示出根据本公开的实施例的人工智能芯片CP的示例。
根据不同的实施例,人工智能芯片CP还可以包括诸如专门用于执行或加速人工神经网络本身的计算的部件(例如图1的示例中的计算引擎CE)、用于指令时序控制的定时控制器、用于指令中断控制的中断控制器、用于实现部件之间的互联的交叉开关和/或多路选择器、协处理器、专门用于控制存取片外存储器MOFFCP中的数据的片外数据传输管理器等其他部件/模块/电路/单元/元件。
根据本公开的实施例的人工智能芯片CP能够独立(即,不借助于芯片外的另外的高性能处理器)且高效地实现基于Proposal操作或ROI数据的多阶段对象检测,同时能够确保最终检测结果的精度,使得能够应用于诸如手机这样的对于处理效率和功耗均有较高要求的终端设备,使得终端设备能够高效且准确地实现关注对象的检测。
相应地,本公开的实施例还可以是包括根据本公开的实施例的人工智能芯片的电子设备,诸如手机、导航仪、车载防撞预警器等。
示例性计算机程序产品和计算机可读存储介质
除了上述方法和设备以外,本公开的实施例还可以是计算机程序产品,其包括计算机程序指令,该计算机程序指令在被处理器运行时使得处理器执行本说明书上述“示例性方法”部分中描述的根据本公开各种实施例的方法中的步骤。
计算机程序产品可以以一种或多种程序设计语言的任意组合来编写用于执行本公开实施例操作的程序代码,程序设计语言可以包括面向对象的程序设计语言,诸如Java、C++等,还包括常规的过程式程序设计语言,诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算设备上执行、部分地在用户设备上执行、作为一个独立的软件包执行、部分在用户计算设备上部分在远程计算设备上执行、或者完全在远程计算设备或服务器上执行。
此外,本公开的实施例还可以是计算机可读存储介质,例如计算机可读取的非临时性存储介质,其上存储有程序指令,程序指令在被处理器运行时使得处理器执行本说明书上述“示例性方法”部分中描述的根据本公开各种实施例的方法中的步骤。
计算机可读存储介质可以采用一个或多个可读介质的任意组合。可读介质可以是可读信号介质或者可读存储介质。可读存储介质例如可以包括但不限于电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪速存储器)、光纤、便携式紧凑盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。
以上结合具体实施例描述了本公开的基本原理,但是,需要指出的是,在本公开中提及的优点、优势、效果等仅是示例而非限制,不能认为这些优点、优势、效果等是本公开的各个实施例必须具备的。另外,上述公开的具体细节仅是为了示例的作用和便于理解的作用,而非限制,上述细节并不限制本公开为必须采用上述具体的细节来实现。
本公开中涉及的器件、装置、设备、系统的方框图仅作为例示性的例子并且不意图要求或暗示必须按照方框图示出的方式进行连接、布置、配置。如本领域技术人员将认识到的,可以按任意方式连接、布置、配置这些器件、装置、设备、系统。诸如“包括”、“包含”、“具有”等等的词语是开放性词汇,指“包括但不限于”,且可与其互换使用。这里所使用的词汇“或”和“和”指词汇“和/或”,且可与其互换使用,除非上下文明确指示不是如此。这里所使用的词汇“诸如”指词组“诸如但不限于”,且可与其互换使用。
还需要指出的是,在本公开的装置、设备和方法中,各部件或各步骤是可以分解和/或重新组合的。这些分解和/或重新组合应视为本公开的等效方案。
在本文中,诸如“第一”、“第二”等不带有量词的修饰词旨在用于区分不同的元件/部件/电路/模块/装置/步骤,而不用于强调次序、位置关系、重要程度、优先级别等。与此不同,诸如“第一个”、“第二个”等带有量词的修饰词可以用于强调不同的元件/部件/电路/模块/装置/步骤的次序、位置关系、重要程度、优先级别等。
提供所公开的方面的以上描述以使本领域的任何技术人员能够做出或者使用本公开。对这些方面的各种修改对于本领域技术人员而言是非常显而易见的,并且在此定义的一般原理可以应用于其他方面而不脱离本公开的范围。因此,本公开不意图被限制到在此示出的方面,而是按照与在此公开的原理和新颖的特征一致的最宽范围。
为了例示和描述的目的已经给出了以上描述。此外,此描述不意图将本公开的实施例限制到在此公开的形式。尽管以上已经讨论了多个示例方面和实施例,但是本领域技术人员将认识到其某些变型、修改、改变、添加和子组合。
Claims (9)
1.一种对存储感兴趣区域数据的操作进行控制的方法,包括:
获取第一感兴趣区域的数据;
根据所述第一感兴趣区域的得分,确定保留所述第一感兴趣区域的数据,其中,所述得分包括所述第一感兴趣区域的置信度或置信度替代值;以及
在用于存储感兴趣区域数据的存储区域的剩余容量不足的情况下,使用所述第一感兴趣区域的数据覆盖已经存储在所述存储区域中的第二感兴趣区域的数据,
其中,使用所述第一感兴趣区域的数据覆盖已经存储在所述存储区域中的第二感兴趣区域的数据包括:
生成随机数;
根据所述随机数确定所述第二感兴趣区域的数据在所述存储区域中的存储位置;以及
将所述第一感兴趣区域的数据以覆盖所述第二感兴趣区域的数据的方式存储到所述存储区域中的所述存储位置处。
2.根据权利要求1所述的方法,其中,所述第一感兴趣区域的置信度替代值是在确定所述第一感兴趣区域的置信度的过程中省略非线性处理的情况下所获得的结果。
3.根据权利要求1所述的方法,其中,根据所述第一感兴趣区域的得分确定保留所述第一感兴趣区域的数据包括:
在所述第一感兴趣区域的得分满足预定条件的情况下,确定保留所述第一感兴趣区域的数据。
4.根据权利要求1所述的方法,还包括:
在所述随机数不属于预定数值范围的情况下,丢弃所述第一感兴趣区域的数据。
5.根据权利要求1至4中的任一项所述的方法,还包括:
在所述存储区域的剩余容量充足的情况下,将所述第一感兴趣区域的数据存储到所述存储区域的空闲部分中。
6.一种计算机可读取的非临时性存储介质,在其上存储有程序指令,所述程序指令在被处理器执行时运行根据权利要求1至5中的任一项所述的方法。
7.一种对存储感兴趣区域数据的操作进行控制的装置,包括:
处理器,被配置为在运行时至少执行根据权利要求1至5中的任一项所述的方法;以及
缓冲存储器,被配置为至少缓存所述第一感兴趣区域的数据。
8.一种对存储感兴趣区域数据的操作进行控制的装置,包括:
缓冲存储器,被配置为缓存所获取的第一感兴趣区域的数据;
第一逻辑电路,被配置为根据所述第一感兴趣区域的得分确定是否保留所述第一感兴趣区域的数据,其中,所述得分包括所述第一感兴趣区域的置信度或置信度替代值;
第二逻辑电路,被配置为在存储器的用于存储感兴趣区域数据的存储区域的剩余容量不足的情况下,指示使用所述第一感兴趣区域的数据覆盖已经存储在所述存储区域中的第二感兴趣区域的数据;
存储控制电路,被配置为根据来自所述第二逻辑电路的指示,控制将所述第一感兴趣区域的数据存储到所述存储区域中,
其中,使用所述第一感兴趣区域的数据覆盖已经存储在所述存储区域中的第二感兴趣区域的数据包括:
生成随机数;
根据所述随机数确定所述第二感兴趣区域的数据在所述存储区域中的存储位置;以及
将所述第一感兴趣区域的数据以覆盖所述第二感兴趣区域的数据的方式存储到所述存储区域中的所述存储位置处。
9.根据权利要求8所述的装置,其中,所述第二逻辑电路还包括随机数生成器,并且所述存储控制电路被配置为
在所述存储区域的剩余容量不足并且由所述随机数生成器生成的随机数属于预定数据范围的情况下,根据所述随机数确定所述第二感兴趣区域的数据在所述存储区域中的存储位置,以及
控制将所述第一感兴趣区域的数据以覆盖所述第二感兴趣区域的数据的方式存储到所述存储区域中的所述存储位置处。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811541063.2A CN111324793B (zh) | 2018-12-17 | 2018-12-17 | 对存储感兴趣区域的数据的操作进行控制的方法和装置 |
US16/713,895 US11163443B2 (en) | 2018-12-17 | 2019-12-13 | Method and apparatus for controlling storage operations of data of region of interest |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811541063.2A CN111324793B (zh) | 2018-12-17 | 2018-12-17 | 对存储感兴趣区域的数据的操作进行控制的方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111324793A CN111324793A (zh) | 2020-06-23 |
CN111324793B true CN111324793B (zh) | 2024-02-23 |
Family
ID=71071599
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811541063.2A Active CN111324793B (zh) | 2018-12-17 | 2018-12-17 | 对存储感兴趣区域的数据的操作进行控制的方法和装置 |
Country Status (2)
Country | Link |
---|---|
US (1) | US11163443B2 (zh) |
CN (1) | CN111324793B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114612651B (zh) * | 2022-03-11 | 2023-07-21 | 北京百度网讯科技有限公司 | Roi检测模型训练方法、检测方法、装置、设备和介质 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103297754A (zh) * | 2013-05-02 | 2013-09-11 | 上海交通大学 | 一种监控视频自适应感兴趣区域编码系统 |
EP2760198A1 (en) * | 2013-01-25 | 2014-07-30 | Innovaciones Microelectrónicas S.L. (Anafocus) | Advanced region of interest function for image sensors |
CN103974071A (zh) * | 2013-01-29 | 2014-08-06 | 富士通株式会社 | 基于感兴趣区域的视频编码方法和设备 |
CN104205815A (zh) * | 2012-02-10 | 2014-12-10 | 谷歌公司 | 适应性感兴趣区域 |
CN104427337A (zh) * | 2013-08-21 | 2015-03-18 | 杭州海康威视数字技术股份有限公司 | 基于目标检测的感兴趣区域视频编码方法及其装置 |
CN105519142A (zh) * | 2013-06-14 | 2016-04-20 | 微软技术许可有限责任公司 | 使用变化的置信度水平来检测地理围栏事件 |
CN107145467A (zh) * | 2017-05-13 | 2017-09-08 | 贾宏博 | 一种分布式实时计算硬件系统 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2012003408A (ja) * | 2010-06-15 | 2012-01-05 | Rohm Co Ltd | ドライブレコーダ |
WO2016029399A1 (en) * | 2014-08-28 | 2016-03-03 | Qualcomm Incorporated | Object selection based on region of interest fusion |
US9875031B2 (en) * | 2015-09-30 | 2018-01-23 | Western Digital Technologies, Inc. | Data retention management for data storage device |
US10567460B2 (en) * | 2016-06-09 | 2020-02-18 | Apple Inc. | Managing data using a time-based directory structure |
JP6627995B2 (ja) * | 2018-05-10 | 2020-01-08 | 株式会社Jvcケンウッド | 記録装置、記録方法、およびプログラム |
-
2018
- 2018-12-17 CN CN201811541063.2A patent/CN111324793B/zh active Active
-
2019
- 2019-12-13 US US16/713,895 patent/US11163443B2/en active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104205815A (zh) * | 2012-02-10 | 2014-12-10 | 谷歌公司 | 适应性感兴趣区域 |
EP2760198A1 (en) * | 2013-01-25 | 2014-07-30 | Innovaciones Microelectrónicas S.L. (Anafocus) | Advanced region of interest function for image sensors |
CN103974071A (zh) * | 2013-01-29 | 2014-08-06 | 富士通株式会社 | 基于感兴趣区域的视频编码方法和设备 |
CN103297754A (zh) * | 2013-05-02 | 2013-09-11 | 上海交通大学 | 一种监控视频自适应感兴趣区域编码系统 |
CN105519142A (zh) * | 2013-06-14 | 2016-04-20 | 微软技术许可有限责任公司 | 使用变化的置信度水平来检测地理围栏事件 |
CN104427337A (zh) * | 2013-08-21 | 2015-03-18 | 杭州海康威视数字技术股份有限公司 | 基于目标检测的感兴趣区域视频编码方法及其装置 |
CN107145467A (zh) * | 2017-05-13 | 2017-09-08 | 贾宏博 | 一种分布式实时计算硬件系统 |
Non-Patent Citations (3)
Title |
---|
Fuchang Liu, Shuangjian Wang, Dandan Ding, Qingshu Yuan et al..Retrieving indoor objects: 2D-3D alignment using single image and interactive ROI-based refinement.《Computers & Graphics》.2018,第108-117页. * |
刘慧玮.基于置信度的多特征目标自适应跟踪算法.《中国优秀硕士学位论文全文数据库信息科技辑》.2014,第2014卷(第10期),第I138-1007页. * |
陈雷;张健.部分混合位平面位移的JPEG2000感兴趣区域图像编码.辽宁工业大学学报.2008,(02),第95-99页. * |
Also Published As
Publication number | Publication date |
---|---|
CN111324793A (zh) | 2020-06-23 |
US11163443B2 (en) | 2021-11-02 |
US20200192574A1 (en) | 2020-06-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11868426B2 (en) | Hardware implementation of convolutional layer of deep neural network | |
US10929746B2 (en) | Low-power hardware acceleration method and system for convolution neural network computation | |
US11347964B2 (en) | Hardware circuit | |
US20230153593A1 (en) | Neural Network Architecture Using Control Logic Determining Convolution Operation Sequence | |
CN109102065B (zh) | 一种基于PSoC的卷积神经网络加速器 | |
US20220027717A1 (en) | Convolutional Neural Network Hardware Configuration | |
CN112214726B (zh) | 运算加速器 | |
CN107239829B (zh) | 一种优化人工神经网络的方法 | |
US11688121B2 (en) | Geometry to tiling arbiter for tile-based rendering system | |
CN108694089B (zh) | 使用非贪婪调度算法的并行计算架构 | |
US11537858B2 (en) | Computing device and method | |
CN110543936B (zh) | 一种cnn全连接层运算的多并行加速方法 | |
CN111723918A (zh) | 用于卷积内核的自动生成和调谐工具 | |
CN110738317A (zh) | 基于fpga的可变形卷积网络运算方法、装置和系统 | |
CN111240746A (zh) | 一种浮点数据反量化及量化的方法和设备 | |
CN111324793B (zh) | 对存储感兴趣区域的数据的操作进行控制的方法和装置 | |
CN113012689B (zh) | 一种电子设备和深度学习硬件加速方法 | |
CN110929854A (zh) | 一种数据处理方法、装置及硬件加速器 | |
CN110716751A (zh) | 高并行度计算平台、系统及计算实现方法 | |
GB2582868A (en) | Hardware implementation of convolution layer of deep neural network | |
US20200104207A1 (en) | Data processing apparatus and method | |
CN111563580A (zh) | 一种卷积神经网络实现装置及方法 | |
CN113673690B (zh) | 一种水下噪声分类卷积神经网络加速器 | |
EP4345692A1 (en) | Methods and systems for online selection of number formats for network parameters of a neural network | |
CN111597886B (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |