CN111582226A - 目标检测中候选框去冗余方法 - Google Patents
目标检测中候选框去冗余方法 Download PDFInfo
- Publication number
- CN111582226A CN111582226A CN202010426658.4A CN202010426658A CN111582226A CN 111582226 A CN111582226 A CN 111582226A CN 202010426658 A CN202010426658 A CN 202010426658A CN 111582226 A CN111582226 A CN 111582226A
- Authority
- CN
- China
- Prior art keywords
- data
- candidate
- candidate frame
- manager
- 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.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06V—IMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
- G06V40/00—Recognition of biometric, human-related or animal-related patterns in image or video data
- G06V40/10—Human or animal bodies, e.g. vehicle occupants or pedestrians; Body parts, e.g. hands
- G06V40/16—Human faces, e.g. facial parts, sketches or expressions
- G06V40/161—Detection; Localisation; Normalisation
-
- 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/94—Hardware or software architectures specially adapted for image or video understanding
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06V—IMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
- G06V2201/00—Indexing scheme relating to image or video recognition or understanding
- G06V2201/07—Target detection
Abstract
本发明公开了一种目标检测中候选框去冗余方法,目的是解决去冗余时间过长的问题。技术方案是先构建由数据预处理模块、最大值比较模块、筛选模块、数据恢复模块组成的候选框去冗余加速器,筛选模块中的交并比单元组由S个交并比单元组成,交并比单元均为九级流水结构,最大值比较模块中的K级比较器也是一个K级流水结构,一次可以处理2k组候选框数据。数据预处理模块对N组候选框进行预处理,最大值比较模块、筛选模块、数据恢复模块并行工作,采用流水的方法对N组候选框数据进行最大值候选框选取、筛选、数据恢复。本发明既可大大加快筛选冗余候选框的速度,又解决了目前传统非极大值抑制算法容易误删人脸的缺陷。
Description
技术领域
本发明涉及一种图像识别领域的候选框去冗余方法,尤其指目标检测领域中的候选框去冗余方法。
背景技术
目标检测即检测出图像中物体的位置和类别,比起人工检测具有速度快,大批量等特点,具有极高的使用价值。目前目标检测技术已经成熟应用在人脸识别,汽车自动驾驶和视频监控中,给人们的生活、工作带来极大便利。
在深度学习浪潮来袭前目标检测发展缓慢,大多依靠DPM(deformable partmodel零件模型)(见文献“Felzenszwalb P,Mcallester D,Ramanan D.Adiscriminatively trained,multiscale,deformable part model[J].Cvpr,2008,8::1-8.”即Felzenszwalb P的“一种经过鉴别训练的、多尺度、可变形的零件模型”)HOG(Histograms of oriented gradients梯度直方图)特征(见文献“Dalal N,TriggsB.Histograms of oriented gradients for human detection[C]//Computer Visionand Pattern Recognition,2005.CVPR 2005.IEEE Computer Society Conferenceon.IEEE,2005,1:886-893.(2016:Google Citation:14046)”即Dalal N的“面向人类检测的梯度直方图”)等传统方法来提高精度。直到在ImageNet图像分类大赛中提出了卷积神经网络的方法,目标检测开始飞速发展起来。目前主流的方法有MTCNN,YOLO,RCNN,SSD,RetinaNet等,以采用MTCNN网络的图像识别方法为例(见文献“Zhang K,Zhang Z,Li Z,etal.Joint Face Detection and Alignment Using Multitask Cascaded ConvolutionalNetworks[J].IEEE Signal Processing Letters,2016,23(10):1499-1503.”即Zhang K的“基于多任务级联卷积网络的人脸联合检测与对准”),如论文中第2页所描述的,MTCNN是一个级联神经网络,由三个网络即P网络,R网络,O网络串联而成。其中P网络是一个全卷积的神经网络结构,P网络进行特征提取的步骤是:
1.原图片I经过金字塔缩放后,通过10个3*3*3的卷积层,2*2的池化层操作,生成10个特征图。
2. 10个特征图通过16个3*3的卷积层,生成16个特征图。
3. 16个特征图通过32个3*3的卷积层,生成32个特征图。
4. 32个特征图通过2个1*1的卷积层,生成2个特征图用于分类;同时这32个特征图通过4个1*1的卷积层,生成4个特征图作为回归候选框;同时这32个特征图通过10个1*1的卷积层,生成10个特征图用于人脸轮廓点的判断。
R网络,O网络与P网络结构类似,基本功能相同,在逻辑上是串行的。P网络对原图片I进行第一次提取回归候选框,之后将这些回归候选框和原图片I发送到R网络;R网络提取第二候选框,将第二候选框和原图片I发送到O网络;O网络提取第三候选框,第三候选框作为MTCNN系统的输出结果,即目标在原图I中的位置。MTCNN神经网络对原始图像进行目标检测的基本流程为:
第一步,MTCNN神经网络对从网络、摄像头、视频中获得的数字图像进行预处理,生成数据集WIDER FACE,定义数据集WIDER FACE的任意一张原始图片为原图I。
第二步,MTCNN神经网络对原图I采用图像金字塔方法进行缩小,得到S张原图片I的按不同比例缩小的图片,称为S张小图片。为了识别各种尺度的目标人脸,需要把待识别的目标人脸的尺度先变化到接近MTCNN网络模型能检测的尺度,因此将数据集中的原图片I进行等比例放缩,得到S张小图片。这S张小图片堆叠在一起从立体的角度上看像一个金字塔,因此此方法称为图像金字塔方法,其中S为正整数。
第三步,MTCNN神经网络的P网络对经过图像金字塔方法处理后的S张小图片依次进行特征提取和边框回归,提取个得分值大于60%的人脸候选框,得到人脸候选框集合,Ni是第i张小图片通过P网络进行特征提取后输出的人脸候选框的数目。Ni为一个正整数。
第四步,MTCNN神经网络采用非极大值抑制算法对人脸候选框集合中的候选框逐个进行去冗余操作,经过S次去冗余操作后得到个候选框。Ni’是第i张小图片的Ni个人脸候选框进行去冗余操作后剩余的人脸候选框的数目。Ni’为一个正整数且Ni’≤Ni。
第六步,MTCNN神经网络采用非极大值抑制算法对第五步R网络输出的NR个人脸候选框进行去冗余,得到KR个人脸候选框。KR为正整数且KR<NR。
第七步,MTCNN神经网络的O网络对第六步得到的KR个人脸候选框和原图片I进行特征提取和边框回归,得到NO个人脸候选框。NO是图片通过O网络进行特征提取后输出的人脸候选框的数目,NO为正整数。
第八步,MTCNN神经网络采用非极大值抑制算法对O网络输出的NO个候选框进行去冗余操作,得到KO个图片的人脸候选框。这KO个人脸候选框所框住的部分即为目标在原图中的坐标位置,KO为正整数且KO<NO。
从上述流程可以看出,使用非极大值抑制操作去除上层网络输出候选框中的冗余候选框在整个采用MTCNN网络进行目标识别的过程中占据极大的工作量(第四、六、八步都是去冗余),如果可以提高候选框去冗余的操作速度将很大程度提高整个目标识别的速度。如何提高去除冗余的速度一直是目标识别领域技术人员极为关注的技术问题。
什么是冗余的候选框呢?经过第三步,第五步和第七步的特征提取和边框回归后会输出多个边界回归框分别框出图片中多个目标的位置。一些边界回归框会同时出现在目标A周围,互相重叠但不完全重合,目标识别系统需要找到一个准确框取住目标A的候选框即目标A的完美框。每一个回归框都由一个得分值显示该回归框框住的区域中存在目标的可能性大小,所以框住目标A的得分值最高的候选框为该目标A的完美框。那些与完美框有重叠的候选框都是没有准确地框取到目标A的冗余候选框。
传统去除冗余候选框都是采用传统非极大值抑制方法,如梁栋的专利号201910068263.9的中国专利“一种低分辨率下的人脸检测方法”的背景技术中所描述的:
其使用的策略为将所有的框按得分值score(得分值score指候选框覆盖的部分可能存在目标物体的概率)从高到低排序,选取得分值最高的,删除所有和它的面积交并比超出阈值的框,对未删除的框选取分最高的继续此操作。
假设有N个候选框,其中只有K个完美候选框,其余N-K个都为冗余候选框,目前非极大值抑制方法筛除冗余候选框的方法如下:
第1步:构建一个存放待处理候选框的集合H,集合H初始化为包含全部N个候选框;构建一个存放完美框的集合M,M初始化为空集。
第2步:将集合H中的所有候选框按得分值score的高低进行排序,选出分数最高的框标记为完美候选框,将完美候选框从集合H移到集合M。
第3步:判断H是否为空,若为空,转第五步,若不为空,转第4步。
第4步,设此时集合H中还有T个候选框,0<T<N,遍历选取判定集合H中的候选框是否与完美候选框重叠,删除集合H中与完美候选框重叠率高于阈值的冗余候选框,方法是:
4.1初始化t=1;
4.2计算完美候选框与第t个候选框的面积交并比iou(Interection-over-union),如果面积交并比iou高于阈值α(一般为0~1),则认为第t个候选框与完美候选框重叠,将第t个候选框从集合H中去除,转4.3步;如果面积交并比iou小于等于阈值α,不做任何处理,即将第t个候选框保留在集合H中转4.3。
所述面积交并比是两个候选框的交集(即重叠面积)除以并集的比值,其中两个候选框并集为两个候选框的面积之和减去交集,如公式1所示:
4.3判断t是否等于T,如果是,转第5步,否则令t=T+1,转第4.2步。
第5步:集合M中的框为完美框集合。
传统极大值抑制算法容易出现误删人脸问题,且一般采用软件编程完成。如何解决人脸误删问题并提高非极大值抑制算法的速度一直是目标识别领域技术人员极为关注的技术问题。
发明内容
本发明要解决的技术问题是,提供一种目标检测中候选框去冗余方法,既解决目前传统非极大值抑制算法容易误删人脸的缺陷,又解决去冗余操作时间过长的问题。
本发明的技术方案是:
第一步,构建候选框去冗余加速器,方法是:
候选框去冗余加速器由数据预处理模块、最大值比较模块、筛选模块、数据恢复模块组成。候选框去冗余加速器接收上层卷积网络(如P网络或R网络或O网络)输出的N组候选框,每组候选框是一个3元组,内容为(得分值score、坐标值[(x1,y1),(x2,y2)]、索引值ID)。其中,score为0到1之间的6位小数值;(x1,y1)为候选框的左上角点的坐标值,(x2,y2)为候选框的右下角点的坐标值,x1,y1,x2,y2均为小于216的整数值;索引值ID表示候选框在输入候选框序列中的位置,方便查找候选框,索引值ID为小于216的整数值。候选框去冗余加速器对N组候选框去除冗余候选框,若上层卷积网络是P网络或R网络,则向下一层卷积网络(如R网络或O网络)输出去除冗余候选框后的K组候选框,其中K<N,若上层卷积网络是O网络,则去除冗余候选框后的K组候选框作为识别结果,这K组候选框所框住的部分即为目标在原图I中的坐标位置。
数据预处理模块与上层卷积网络、最大值比较模块、筛选模块相连。数据预处理模块从上层卷积网络接收N组候选框,将N组候选框的得分值、坐标值、索引值ID封装为N组100位二进制数据(简称为候选框数据),将候选框数据发送给筛选模块、最大值比较模块。其中第80到第99位存贮用20位二进制表示的得分值score,第64到第79位存贮用16位二进制表示的坐标值x1,第48到第63位存贮用16位二进制表示的y1,第32到第47位存贮用16位二进制表示的x2,第16到第31位存贮用16位二进制表示的y2,第0到第15位存贮用16位二进制表示的索引值ID。
筛选模块与数据预处理模块、最大值比较模块、数据恢复模块相连。筛选模块从最大值比较模块接收最大值候选框数据,将最大值候选框数据存入缓冲管理器中,计算靶子候选框,将靶子候选框数据发送到数据恢复模块。筛选模块从数据预处理模块接收N组候选框数据,从最大值比较模块接收“第一大值完成”信号,根据计算出的靶子候选框数据对N组候选框数据进行筛选,将通过一轮筛选的N组更新了score值的候选框数据发送到最大值比较模块,并将“一轮筛选结束”信号发送到最大值比较模块。
筛选模块由数据管理器A、筛选模块控制器、交并比单元组、倒数表、标记表、缓冲管理器组成。
数据管理器A是具有数据接收、数据存储、数据发送功能的模块。数据管理器A与数据预处理模块、最大值比较模块、筛选模块控制器、交并比单元组相连。数据管理器A将从数据预处理模块接收的N组候选框数据存储,当接收到筛选模块控制器发送的“发送数据”信号时,数据管理器A向交并比单元组发送候选框数据;数据管理器A从交并比单元组接收更新了score值的候选框数据并存储,当接收到筛选模块控制器发送的“更新数据”信号时,数据管理器A向最大值比较模块发送候选框数据。
筛选模块控制器与最大值比较模块、数据管理器A、缓冲管理器、交并比单元组、标记表相连,筛选模块控制器从最大值比较模块接收到“第一大值完成”信号时,向缓冲管理器发送“寻找靶子”信号。筛选模块控制器从缓冲管理器接收到“得到靶子”信号时,发送“发送数据”信号到数据管理器A。筛选模块控制器从交并比单元组接收到“一轮筛选结束”信号时,向缓冲管理器发送“寻找靶子”信号,向数据管理器A发送“更新数据”信号,向最大值比较模块发送“一轮筛选结束”信号,向标记表发送监测信号;当从标记表接收到的“停止”信号时,筛选模块控制器控制候选框去冗余加速器停止工作。
标记表与交并比单元组、缓冲管理器、筛选模块控制器相连,用来记录N组候选框数据是否被修改、是否冗余被删除、是否作为靶子候选框被输出。标记表由N个寄存器组成,标记表寄存器中的值只能为0、1、2。以第u(1≤u≤N)个寄存器为例,若第u个寄存器中的值为0,表示ID为u的候选框未被修改也未被当做靶子或冗余候选框处理;若第u个寄存器中的值为1,表示ID为u的候选框仅被修改但未被当做靶子或冗余候选框处理;若第u个寄存器中的值为2,表示ID为u的候选框已经被当做靶子或冗余候选框处理。当标记表中N个候选框数据全为2时,说明N个候选框都被处理,候选框去冗余加速器停止工作。标记表分T次接收来自交并比单元组的N组标记值并存储,第1~第T-1次接收来自交并比单元组的S个交并比单元的S个标记表值,其中第t(1≤t≤T-1)次接收的S个标记表值存储在第(t-1)×S+1到第t×S寄存器中,第T次接收来自交并比单元组的S个交并比单元的NmodS个标记表值,存储在第(T-1)×S+1到第N寄存器中,mod是取模操作。标记表接收来自缓冲管理器的队头候选框数据ID,根据队头候选框数据的ID将第ID寄存器的标记值发送到缓冲管理器。标记表从筛选模块控制器接收“监测”信号,如果标记表的N个寄存器数据全为2,则向筛选模块控制器发送“停止”信号。
缓冲管理器具有接收候选框数据、存储候选框数据、查找最大值候选框数据以及发送候选框数据的功能。缓冲管理器中设置一个缓冲管理器队列存储候选框数据。缓冲管理器与最大值比较模块、交并比单元组、标记表、筛选模块控制器、数据恢复模块相连。缓冲管理器从最大值比较模块接收从大到小顺序的候选框数据(即不同时刻的最大值候选框数据)按照从大到小顺序存储在缓冲管理器队列中。缓冲管理器从筛选模块控制器接收到“寻找靶子”信号时,向标记表发送缓冲管理器队列的队头候选框数据ID。缓冲管理器从标记表接收返回的标记值,当标记值为0时,表示队头候选框数据为靶子候选框数据,缓冲管理器将得到的靶子候选框数据发送到交并比单元组和数据恢复模块,并向筛选模块控制器发送“得到靶子”信号;当标记表值为1或者2时,说明队头候选框数据不是靶子候选框数据,缓冲管理器删除缓冲管理器队列的原来队头的候选框,发送新的队头候选框数据ID到标记表。
倒数表是记录1到10000的倒数值的二进制表,目的是为了减少交并比中的浮点数除法计算量。倒数表与交并比单元组相连,接收来自交并比单元组的整数Z(交并比计算过程中iou分母的值),将Z的倒数进行存储供交并比单元组读取。
交并比单元组与缓冲管理器、标记表、数据管理器A、筛选模块控制器、倒数表相连。交并比单元组从缓冲管理器接收靶子候选框数据,从数据管理器A读取N组候选框数据,计算靶子候选框数据和任意一个候选框数据的交并比,根据交并比更新候选框数据中的score值并判断候选框数据是否冗余,根据冗余结果对N组候选框数据生成记录候选框数据是否冗余的冗余标记值,将冗余标记值发送到标记表,并将更新了score值的候选框数据发送给数据管理器A。当N组候选框的交并比计算结束时,发送“一轮筛选结束”信号到筛选模块控制器。计算交并比的过程中,交并比单元组将iou分母的值发送到倒数表,并从倒数表读取iou分母倒数值即以加速两个候选框数据的交并比的计算。
交并比单元组由S个结构相同的交并比单元组成,S为正整数,为可配置的值,与执行速度成正比。S满足tm和相差k倍最为合适,即满足公式tm为最大值比较模块计算一个最大值的执行时间,单位为秒,ts为一个交并比单元使用流水线加速后计算1个候选框与靶子候选框的交并比平均时间,单位为秒,为S个交并比单元计算N个候选框与靶子候选框的交并比时间;k为大于2小于5的整数,表示在一轮筛选结束后,交并比单元组计算完N个候选框交并比时,最大值比较模块已经计算出前k个最大值候选框。
传统非极大值抑制算法容易误删,例如两个框boxA、boxB同时框取住两个重叠不重合的目标A和B,此时boxA的score值大于boxB并且它们的iou大于阈值α,实际上两个框确实包含了需要的检测的两个目标结果,但传统非极大值抑制算法肯定会删除score值小的boxB框。所以本发明对交并比单元的设计做了以下处理:使得交并比计算时可以保留住重叠目标中score值较小的那个候选框。当两个候选框iou大于阈值β(0<β<1,β与α近似)时,修改score值较小框的score值但不直接删除这个候选框,直到score’小于阈值θ,说明被修改的候选框数据得分值太低并没有合理的框取到目标物体,属于冗余候选框数据,这时才删除该候选框。(0<θ<1,θ一般比β小得多)。在设计交并比单元的流水线时为了减少流水线长度,将 转换为使用第十二运算部件计算iou分母-iou分子结果的同时使用第十三运算部件得到的结果。受到score’等式转换的影响,第十五运算部件将判断大于阈值β转变为判断小于1-β。
令第j个交并比单元为PEj,j满足0<j≤S。PEj是一个九级流水结构,由2个候选框输入端口(即第一候选框输入端口、第二候选框输入端口)、2个最大值比较器(即第一最大值比较器、第二最大值比较器)、2个最小值比较器(即第一最小值比较器、第二最小值比较器)、16个运算部件(即第一运算部件~第十六运算部件)、2个寄存器(即第一寄存器、第二寄存器)组成。
交并比单元的第一级流水结构由第一候选框输入端口、第二候选框输入端口组成,第一候选框输入端口从缓冲管理器接收靶子候选框数据,将靶子候选框数据的x1(第64到第79位的16位二进制值)发送到第一最大值比较器、第一运算部件、将y1(第48到第63位的16位二进制值)发送到第二最大值比较器、第二运算部件,将x2(第32到第47位的16位二进制值)发送到第一最小值比较器、第一运算部件,将y2(第16到第31位的16位二进制值)发送到第二最小值比较器、第二运算部件;第二候选框输入端口从数据管理器A读取一个候选框数据,将候选框数据的x1发送到第一最大值比较器、第三运算部件,将y1发送到第二最大值比较器、第四运算部件,将x2发送到第一最小值比较器、第三运算部件,将y2发送到第二最小值比较器、第四运算部件;
交并比单元的第二级流水结构由第一最大值比较器、第二最大值比较器、第一最小值比较器、第二最小值比较器、第一运算部件、第二运算部件、第三运算部件、第四运算部件组成。第一最大值比较器从第一候选框输入端口接收靶子候选框数据的x1,从第二候选框输入端口接收一个候选框数据的x1,比较出它们的最大值(令为x1max),将x1max发送到第五运算部件;第二最大值比较器从第一候选框输入端口接收靶子候选框数据的y1,从第二候选框输入端口接收一个候选框数据的y1,比较出它们的最大值(令为y1max),将y1max发送到第六运算部件;第一最小值比较器从第一候选框输入端口接收靶子候选框数据的x2,从第二候选框输入端口接收一个候选框数据的x2,比较出它们的最小值(令为x2min),将x2min发送到第五运算部件;第二最大值比较器从第一候选框输入端口接收靶子候选框数据的y2,从第二候选框输入端口接收一个候选框数据的y2,比较出它们的最小值(令为y2min),将y2min发送到第六运算部件;
第一运算部件从第一候选框输入端口接收到靶子候选框数据的x1,x2,计算靶子候选框数据x2和x1的差,令xcha21=x2-x1,将xcha21发送到第七运算部件;第二运算部件从第一候选框输入端口接收靶子候选框数据的y1,y2,计算y2和y1的差,令ycha21=y2-y1,将ycha21发送到第七运算部件;第三运算部件从第二候选框输入端口接收一个候选框数据的x1,x2,计算候选框数据x2和x1的差,令xcha21’=x2-x1,将xcha21’发送到第八运算部件;第四运算部件从第二候选框输入端口接收一个候选框数据的y1,y2,计算y2和y1的差,令ycha21’=y2-y1,将ycha21’发送到第八运算部件。
交并比单元的第三级流水结构由第五运算部件、第六运算部件、第七运算部件、第八运算部件组成。第五运算部件从第一最大值比较器接收x1max,从第一最小值比较器接收x2min,计算x2min减去x1max(令差为chax2x1),如果chax2x1大于零,将chax2x1发送到第九运算部件,如果chax2x1小于等于零,令chax2x1=0,将chax2x1发送到第九运算部件;第六运算部件从第二最大值比较器接收y1max,从第二最小值比较器接收y2min,计算y2min减去y1max(令差为chay2y1),如果chay2y1大于零,将chay2y1发送到第九运算部件,如果chay2y1小于等于零,将令chay2y1=0,将chay2y1发送到第九运算部件。
第七运算部件接收来自第一运算部件的xcha21和第二运算部件的ycha21,计算靶子候选框面积area1,area1=xcha21×ycha21,将area1发送到第十运算部件;第八运算部件接收来自第三运算部件的xcha21’和第四运算部件的ycha21’,计算第j个候选框面积area2,area2=xcha21’×ycha21’,将area2发送到第十运算部件。
交并比单元的第四级流水结构由第九运算部件、第十运算部件组成。第九运算部件接收来自第五运算部件的chax2x1和第六运算部件的chay2y1,计算靶子候选框与输入候选框的相交部分面积area3(即iou分子部分),area3=chax2x1×chay2y1,将area3发送到第十一运算部件、第十二运算部件;
第十运算部件接收来第七运算部件的area1和第八运算部件的area2,计算第一面积和area12=area1+area2,将area12发送到第十一运算部件;
交并比单元的第五级流水结构由第十一运算部件组成。第十一运算部件接收来自第九运算部件的area3和第十运算部件的area12,计算靶子候选框与输入候选框的相并部分面积(即iou分母部分)area12j3=area12-area3,将area12j3发送到第十二运算部件、第十三运算部件;
交并比单元的第六级流水结构由第十二运算部件、第十三运算部件组成。第十二运算部件接收来自第九运算部件的area3和第十一运算部件的area12j3,计算iou分母-iou分子area12j3j3=area12j3-area3,将area12j3j3发送到第十四运算部件。第十三运算部件接收来自第十一运算部件的area12j3,根据area12j3查找倒数表,得到将发送到第十四运算部件。
交并比单元的第八级流水结构由第十五运算部件、第一寄存器组成。第一寄存器存放常数值1-阈值β。第十五运算部件接收来自数据管理器A的一个候选框数据、来自第十四运算部件的从第一寄存器常读取数值1-阈值β,如果将数据管理器A的一个候选框数据直接发送到第十六运算部件,并且将标记值0发送到第十六运算部件;如果将候选框数据的score值更新为score’,即令score’=score×(1-iou),将更新了score值(此时的score值变成了score’)的候选框数据发送到第十六运算部件,并且将标记值1发送到第十六运算部件;
交并比单元的第九级流水结构由第十六运算部件和第二寄存器组成。第二寄存器存放常数值阈值θ(β>θ>0),第十六运算部件与数据管理器A、标记表、第十五运算部件、第二寄存器相连,它接收来自第十五运算部件的标记值(标记值可能为0或者1)、候选框数据,从第二寄存器读取阈值θ,如果候选框数据的score值<θ,说明候选框数据应该被删除,将候选框数据的score值修改为零,将score值为零的候选框数据发送到数据管理器A,并发送标记值2记录到标记表的第j个寄存器中;如果候选框数据的score值≥θ,将来自第十五运算部件的候选框数据直接发送到数据管理器A,并将标记值(此时可能为0或者1)记录到标记表第j个寄存器。
最大值比较模块与数据预处理模块、筛选模块相连,由比较模块控制器、数据管理器B、K级比较器、队列组和排序管理器组成。最大值比较模块从数据预处理模块接收N组候选框数据,对N组候选框数据的score值进行比较,得到score值最大的候选框数据,供筛选模块的缓冲管理器读取,发送“第一大值完成”信号给筛选模块的筛选模块控制器(这个动作加速器只做一次)。最大值比较模块接收到来自数据管理器A的N组更新了score值的候选框数据后存入数据管理器B,重新计算新的score值最大的候选框数据,供筛选模块的缓冲管理器读取。当最大值比较模块接收到筛选模块发送的“一轮筛选结束”信号,最大值比较模块清空K级比较器、队列组和排序管理器。
数据管理器B是具有数据接收、数据存储、数据发送功能的模块。数据管理器B与数据预处理模块、筛选模块、K级比较器相连,在候选框去冗余加速器启动加速计算第一个最大值候选框数据时,数据管理器B从数据预处理模块接收N组候选框数据并进行存储,供K级比较器读取;当最大值比较模块计算完第一个最大值候选框数据后,计算后续最大值候选框数据时,数据管理器B从筛选模块的数据管理器A接收N组候选框数据并进行存储,供K级比较器读取。
比较模块控制器与排序管理器和筛选模块、K级比较器、队列组相连,比较模块控制器从排序管理器接收“第一大值完成”信号,发送“第一大值完成”信号到筛选模块的筛选模块控制器。比较模块控制器接收来自筛选模块控制器发送的“一轮筛选结束”信号,发送“清空”信号到K级比较器、队列组、排序管理器。
K级比较器与数据管理器B、队列组、比较模块控制器相连。K级比较器从数据管理器B读取N组候选框数据,比较N组候选框数据的score值,向队列组输出N组候选框数据中score值最大的候选框数据。当接收到来自比较模块控制器的“清空”信号时,K级比较器将清除存储的所有数据、停止计算、恢复初始状态。K级比较器是一个K级流水结构,由KK个2选1比较器组成,KK=2k-1+2k-2+…+21+20。2选1比较器有2个输入,1个输出,功能是对2个输入进行比较,输出两个输入中的较大值。K级比较器分为K级,第一级包括2k-1个2选1比较器,2k-1个2选1比较器共有2k个输入端,分别接收2k组候选框数据,得到2k-1个score值较大的候选框数据;第二级包括2k-2个2选1比较器,2k-2个2选1比较器共有2k-1个输入端,分别从第一级接收2k-1组候选框数据,得到2k-2个score值较大的候选框数据;……;第K-1级包括21个2选1比较器,21个2选1比较器共有22个输入端,分别从第K-2级接收22组候选框数据,得到21个score值较大的候选框数据;第K级包括20个2选1比较器,20个2选1比较器共有2个输入端,分别从第K-1级接收2组候选框数据,得到1个score值较大的候选框数据,此候选框数据即为2k组候选框数据中score值最大的候选框数据;K级比较器一次可以处理2k组候选框数据,N组候选框数据只需经K级比较器串行比较C次,就能得到score值最大的候选框数据,表示对上取整。
队列组与K级比较器、排序管理器、比较模块控制器相连。当接收到来自比较模块控制器的“清空”信号时,队列组将清除存储的所有数据、停止工作、恢复初始状态。队列组由C个队列组成,将第c次从K级比较器第K级得到score值最大的候选框数据存储在第c个队列,把C队列的队头数据发送给排序管理器,1≤c≤C。
排序管理器与队列组、筛选模块中的缓冲管理器、比较模块控制器相连。排序管理器具有接收数据、数据排序、发送数据和信号的功能。排序管理器接收来自队列组的C个队头候选框数据,计算C个数据从大到小的排序值并存储在C个寄存器中,发送C个队列的队头数据排序结果最大的候选框数据到筛选模块的缓冲管理器。当C个队列都不空时,排序管理器使用基于FPGA的并行全比较排序算法(见文献“师廷伟,金长江.基于FPGA的并行全比较排序算法[J].数字技术与应用,2013(10):126-127.”)对C个队列的队头数据排序,四个时钟周期后得到C个队头数据的序列值(序列值为1说明对应队列队头数据最大,序列值为C说明对应队列队头数据最小),比如排序管理器中有3个寄存器,记录为3、1、2时,说明第二个队列的队头数据>第三个队列的队头数据>第一个队列的队头数据。当接收到来自比较模块控制器的“清空”信号时,排序管理器清除存储的序列值、停止工作、恢复初始状态。
当候选框去冗余加速器启动时,排序管理器设置第一最大值候选框标记(令为FLAG)为0;当计算出第一个最大值候选框时,排序管理器判断FLAG为0,发送“第一大值完成”信号到比较模块控制器并修改FLAG为1;否则,即FLAG为1时不发送任何信号到比较模块控制器。因此候选框去冗余加速器整个执行过程中,排序管理器只发送一次“第一大值完成”信号到比较模块控制器。
数据恢复模块与筛选模块相连。若数据预处理模块连接的上级网络为P网络或R网络,数据恢复模块还连接下级网络(R网络或O网络),若数据预处理模块连接的上级网络为O网络,数据恢复模块的输出将直接作为数据冗余操作的输出。当数据恢复模块接收到来自筛选模块的缓冲管理器的靶子候选框数据时,将靶子候选框数据中的100位二进制数据的第80到第99位的20位二进制数据转换为6位整数得分值score,将第64到第79位的16位二进制转换为坐标值x1,将第48到第63位的16位二进制转换为坐标值y1,将第32到第47位的16位二进制转换为坐标值x2,将第16到第31位的16位二进制转换为坐标值y2。将靶子候选框数据的得分值score和坐标值(x1,y1),(x2,y2)输送到下层卷积网络或作为结果输出(索引值ID不需要输送到下层卷积网络或作为结果)。
第二步,采用候选框去冗余加速器对从上层卷积网络接收的N组候选框去冗余,方法是:
2.1数据预处理模块对从上层卷积网络接收的N组候选框进行预处理,方法是:
2.1.1数据预处理模块从上层卷积网络接收N组候选框,将N组候选框的得分值score均放大1000000倍,将score从一个0到1之间的6位小数值转化为6位整数。
2.1.2数据预处理模块将N组候选框封装为N个100位的二进制数据,其中第80到第99位存贮用20位二进制表示的得分值score,第64到第79位存贮用16位二进制表示的坐标值x1,其中第48到第63位存贮用16位二进制表示的y1,第32到第47位存贮用16位二进制表示的x2,第16到第31位存贮用16位二进制表示的y2,第0到第16位存贮用16位二进制表示的索引值ID。
2.1.3数据预处理模块将N个100位二进制数据即N组候选框数据发送到筛选模块的数据管理器A和最大值比较模块的数据管理器B。
2.2筛选模块的数据管理器A存储来自数据预处理模块的N组候选框;同时最大值比较模块的数据管理器B存储来自数据预处理模块的N组候选框数据。
2.3最大值比较模块、筛选模块、数据恢复模块并行工作,采用流水的方法对从上层卷积网络收到的N组候选框数据进行最大值候选框选取、筛选、数据恢复,方法是:最大值比较模块按2.3.1步所述流程对数据管理器B中的N组候选框选取score值最大的候选框数据,将得到的score值最大的候选框数据发送到筛选模块的缓冲管理器;同时筛选模块按2.3.2所述流程计算靶子候选框,并计算靶子候选框数据和数据管理器A中任意一个候选框数据的交并比,根据交并比更新候选框数据中的Score值并判断候选框数据是否冗余;同时数据恢复模块按2.3.3步所述流程对score最大的候选框数据进行格式恢复并输出。
2.3.1最大值比较模块的数据管理器B、K级比较器、排序管理器、比较模块控制器并行工作,找出数据管理器B中score值最大的候选框:数据管理器B、K级比较器按照步骤2.3.1.1计算数据管理器B中2k个候选框数据的最大值,存储在队列组中;同时排序管理器按照步骤2.3.1.2对队列组的队头数据排序,得到队头数据的最大值;同时比较模块控制器按照步骤2.3.1.3接收“一轮筛选”信号,控制最大值比较模块重新进行最大值计算:
2.3.1.1数据管理器B、K级比较器相互配合,计算数据管理器B中2k个候选框数据的最大值,并将最大值存储在队列组中,方法为:
c=1。
2.3.1.1.2数据管理器B将第c组候选框数据发送到K级比较器;
2.3.1.1.3K级比较器从数据管理器B接收第c组候选框数据;(由于K级比较器只有2k个输入,所以一次只能处理2k个候选框数据,K级比较器分C次完成对N组数据的比较,第1~第C-1次取2k个候选框数据,第C次取N mod2k个候选框数据,mod是取模操作)。K级比较器对第c组候选框数据进行比较,得到第c组候选框数据中score值最大的候选框数据,将此score值最大的候选框数据发送给队列组中第c个队列;同时为了不影响求本轮筛选第c组候选框数据中的score值第二大的候选框数据,将数据管理器B中此score值最大的候选框数据的ID值对应位置的100位二进制数据均改为0(表示该score值最大的候选框数据已被处理)。
2.3.1.1.4判断K级比较器、队列组是否接收到比较模块控制器的“清空”信号,如果接收到“清空”信号,则K级比较器、队列组清除所有数据、停止工作、恢复初始状态;同时数据管理器B将从筛选模块的数据管理器A接收的更新了score值的候选框数据存储,转步2.3.1.1.1。如果未接收到“清空”信号,执行步骤2.3.1.1.5。
2.3.1.1.5数据管理器B判定c是否等于C,若c=C,则令c=1,转2.3.1.1.2步;若c<C,则令c=c+1,转2.3.1.1.2步;
2.3.1.2排序管理器对队列组的队头数据排序,得到队头数据的最大值,方法为:
2.3.1.2.1排序管理器判断队列组是否有空队列,若队列组全不空,排序管理器采用并行全比较排序算法对队列组中C个队列的队头数据进行排序,将得到的排序值(C个队列的队头数据中score值最大的候选框的排序值为1,排序值的范围为1到C)存储在排序管理器中。同时排序管理器找到队列组中与排序管理器中排序值为1的位(令为第p位,1≤p≤C)对应的队列(即第p个队列),将第p个队列的队头候选框数据弹出,将排序管理器中的第p位排序值从1改为0;并将弹出的候选框数据(即score最大的候选框数据)发送到缓冲管理器中。排序管理器判断FLAG是否为0,若为0,发送“第一大值完成”信号到比较模块控制器并且修改FLAG为1;若FLAG为1,不发送任何信号到比较模块控制器。此时排序管理器第p位为0,其余C-1位为队头数据排序值。转2.3.1.2.2;若队列组中有队列为空,说明此时还不能排序,排序管理器不进行任何操作,转2.3.1.2.1,等到队列组没有空队列。
2.3.1.2.2判断排序管理器是否从比较模块控制器接收到“清空”信号,如果接收到,则排序管理器清除存储的序列值、停止工作、恢复初始状态(FLAG保持不变),转2.3.1.2.1;如果未接收到,不进行任何操作直接转2.3.1.2.1;
2.3.1.3比较模块控制器从筛选模块接收“一轮筛选结束”信号,控制最大值比较模块重新进行最大值计算,方法为:
2.3.1.3.1比较模块控制器判断是否从筛选模块接收到的“一轮筛选结束”信号,如果接收到,比较模块控制器发送“清空”信号到K级比较器、队列组和排序管理器,转2.3.1.3.1;若未接收到,不进行任何操作,直接转2.3.1.3.1。
2.3.2筛选模块按步骤2.3.2.1所述流程计算靶子候选框数据,然后按步骤2.3.2.2所述流程计算靶子候选框数据和数据管理器A中任意一个候选框数据的交并比,根据交并比更新候选框数据中的Score值并判断候选框数据是否冗余,将冗余结果保存在标记表中;在按步骤2.3.2.1和步骤2.3.2.2进行筛选的同时,筛选模块按步骤2.3.2.3监测候选框去冗余加速器是否停止工作:
2.3.2.1缓冲管理器寻找靶子候选框,方法为:
2.3.2.1.1筛选模块控制器接收到来比较模块控制器“第一大值完成”信号,发送“寻找靶子”信号到缓冲管理器。
2.3.2.1.2缓冲管理器接收到筛选模块控制器的“寻找靶子”信号。
2.3.2.1.3缓冲管理器判断缓冲管理器队列是否为空,如果为空,转2.3.2.1.3,等待接收最大值比较模块的最大值候选框,如果不为空,转2.3.2.1.4。
2.3.2.1.4缓冲管理器将缓冲管理器队列的队头数据发送到标记表,设队头数据ID值为id。
2.3.2.1.5缓冲管理器判断从标记表返回的id个寄存器的标记是否为0,如果是0,则此时缓冲管理器队列队头数据为靶子候选框数据,缓冲管理器将靶子候选框数据发送到交并比单元组和数据恢复模块,同时发送“得到靶子”信号到筛选模块控制器,转2.3.2.1.6步;如果从标记表返回的id位的是1或2,说明队头数据不是靶子候选框数据,转2.3.2.1.3步。
2.3.2.1.6筛选模块控制器接收到来自缓冲管理器的“得到靶子”信号,将“发送数据”信号发送到数据管理器A。执行2.3.2.2步。
2.3.2.2交并比单元组计算靶子候选框数据和数据管理器A中任意一个候选框数据的交并比,根据交并比更新候选框数据中的Score值并判断候选框数据是否冗余,方法为:
2.3.2.2.1数据管理器A接收筛选模块控制器的“发送数据”信号,将N组候选框二进制数据分成E组,第1~第E-1个集合中有S个候选框二进制数据,第E个集合中有N mod S个候选框二进制数据,变量e表示交并比单元流水计算交并比的时钟周期数,初始值为1;
2.3.2.2.2数据管理器A发送第e组数据到交并比单元;
2.3.2.2.3交并比单元组一方面从数据管理器A读取第e组候选框数据,一方面从缓冲管理器接收靶子候选框数据;
2.3.2.2.4交并比单元组的S个交并比单元的第一候选框输入端口同时从缓冲管理器接收一个靶子候选框数据,交并比单元组的第二候选框输入端口同时接收来自数据管理器A的第e组的S个候选框数据(即S个第二候选框输入端口分别接收S个候选框数据)。S个交并比单元使用通过9级流水线计算靶子候选框数据与第e组的S个候选框数据的交并比;
2.3.2.2.5若e大于9且小于等于E+9,转2.3.2.2.6步;若e小于等于9,e=e+1,转2.3.2.2.2步;
2.3.2.2.6S个交并比单元的第十六运算部件同时将计算结果,即第e-9组的更新了score值的S个候选框数据发送到数据管理器A,覆盖第e-9组原S个候选框数据;将S个冗余标记值发送到标记表;
2.3.2.2.7交并比单元组判断若e小于等于E,e=e+1,转2.3.2.2.2步;若e大于E且e小于等于E+9,e=e+1,转2.2.2.6步。若e等于E+10,交并比单元组向筛选模块控制器发送“一轮筛选结束”信号,转2.3.2.2.8步;
2.3.2.2.8筛选模块控制器接收交并比单元组发来的“一轮筛选结束”信号,发送“寻找靶子”信号到缓冲管理器,发送“更新数据”信号到数据管理器A,同时发送“一轮筛选结束”信号到最大值比较模块的比较模块控制器;
2.3.2.2.9数据管理器A接收到“更新数据”信号后,发送更新了score值的N组候选框数据到最大值比较模块的数据管理器B,转2.3.2.1.2步;
2.3.2.3筛选模块控制器监测标记表,判断候选框去冗余加速器是否停止工作,方法为:
2.3.2.3.1筛选模块控制器发送“监测”信号到标记表。
2.3.2.3.2标记表接收到筛选模块控制器的“监测”信号后,检查所有的寄存器是否全为2,若全为2,说明已完成冗余候选框筛选操作,发送“停止”信号到筛选模块控制器,转2.3.2.3.3;否则标记表不发送任何信号到筛选模块控制器,直接转2.3.2.3.3。
2.3.2.3.3筛选模块控制器接收标记表的“停止”信号,转第三步,否则转2.3.2.3.1继续监控。
2.3.3.数据恢复模块从筛选模块接收靶子候选框数据,将靶子候选框数据进行格式恢复,并将格式恢复后的score最大的候选框数据输送到下层卷积网络或作为结果输出,方法为:
2.3.3.1数据恢复模块判断是否接收到来自最大值缓冲模块的score值最大的候选框数据,若未接收到,转2.3.3.1继续等待;若接收到,将该候选框数据的100位二进制数据拆解,将第80到第99位的20位二进制转换为6位整数得分值score,第64到第79位的16位二进制转换为坐标值x1,第48到第63位的16位二进制转换为坐标值y1,第32到第47位的16位二进制转换为坐标值x2,第16到第31位的16位二进制转换为坐标值y2,转2.3.3.2;2.3.3.2数据恢复模块将6位整数得分值score缩小1000000倍,变回0到1之间的6位小数值。
2.3.3.3数据恢复模块将转化为得分值score和坐标值(x1,y1)(x2,y2)的格式的score值最大的候选框数据输送到下层卷积网络或作为结果输出。
第三步,候选框去冗余加速器终止工作,结束。
采用本发明可以达到以下技术效果:
1.本发明第一步构建的候选框去冗余加速器仅使用少量的资源,可有效提高加法器的利用率,大大加快筛选冗余候选框的速度。
2.为了实现候选框去冗余加速效果,本发明采用了细粒度并行与粗粒度并行两种并行方案。细粒度并行体现在:在筛选模块计算交并比时,设计S个交并比单元同时对S对候选框数据进行iou计算,每个交并比单元使用9级流水线实现;在计算最大值候选框时,K级比较器使用k级流水线实现。粗粒度并行在于:最大值比较模块进行最大值比较与筛选模块进行筛选的模块级并行。
3.缓冲管理器成功避免了粗粒度并行中的数据冲突:在一轮筛选中,最大值比较模块计算最大值候选框,同时筛选模块筛选掉一批冗余候选框,最好的情况是本轮最大值比较模块计算出的最大值候选框可以直接作为下一轮筛选的靶子候选框。但可能存在一种情况,最大值候选框被该轮筛选模块标记为冗余,则不能将最大值候选框作为靶子候选框,因此需要最大值比较模块重新计算出的最大值候选框。为了缓解这一数据冲突,候选框去冗余加速器设计有缓冲管理器,缓冲管理器队列中存储来自最大值比较模块的从大的到小排列的前k大值候选框,一次筛选结束后,缓冲管理器只需要按步骤2.3.2.1的方法从前k值大候选框序列找到靶子候选框即可开始下一轮筛选。
4.候选框去冗余加速器中的最大值比较模块既能够最短时间内得到最大值,又能完成对大规模数据排序,数据管理器B将N个数据进行分块,K级比较器计算每个分块的第一大值、第二大值……存储在队列组中,最后排序管理器使用并行全比较算法得到队列组队头数据的序列值(队头数据的最大值即为N个数据的第一大值)。之后每一个时钟周期,排序管理器按步骤2.3.1.2的方法,删除序列值标记的最大候选框,添加队列组中队头数据,调整序列值即得到N个数据的第二大值、第三大值……。最大值比较模块在较少的资源消耗和较短的时间内完成了并行全比较算法所不能实现的大规模数据排序。
5.候选框去冗余加速器的倒数表可以减少交并比中的浮点数除法计算量,进一步加快了交并比的计算速度。
因此,采用本发明可在最短的时间内对上千级候选框进行筛选冗余候选框的操作,满足很多细粒度目标检测应用实时性要求。
附图说明
图1是本发明第一步构建的候选框去冗余加速器逻辑结构图;
图2是本发明4级比较器结构图;
图3是交并比单元PEj的流水线结构图。
图4为本发明总体流程图。
具体实施方式
为了使本发明专利的技术手段、创新特征、达成目的与功效易于明白了解,下面结合具体图示,进一步阐述本发明的技术方案。
图4为本发明总体流程图。如图4所示,本发明包括以下步骤:
第一步,构建候选框去冗余加速器,方法是:
候选框去冗余加速器如图1所示,由数据预处理模块、最大值比较模块、筛选模块、数据恢复模块组成。候选框去冗余加速器接收上层卷积网络(如P网络或R网络或O网络)输出的N组候选框。候选框去冗余加速器对N组候选框去除冗余候选框,若上层卷积网络是P网络或R网络,则向下一层卷积网络(如R网络或O网络)输出去除冗余候选框后的K组候选框,其中K<N,若上层卷积网络是O网络,则去除冗余候选框后的K组候选框作为识别结果。
数据预处理模块与上层卷积网络、最大值比较模块、筛选模块相连。数据预处理模块从上层卷积网络接收N组候选框,将N组候选框的得分值、坐标值、索引值ID封装为N组100位二进制数据(简称为候选框数据),将候选框数据发送给筛选模块、最大值比较模块。
筛选模块与数据预处理模块、最大值比较模块、数据恢复模块相连。筛选模块从最大值比较模块接收最大值候选框数据,将最大值候选框数据存入缓冲管理器中,计算靶子候选框,将靶子候选框数据发送到数据恢复模块。筛选模块从数据预处理模块接收N组候选框数据,从最大值比较模块接收“第一大值完成”信号,根据计算出的靶子候选框数据对N组候选框数据进行筛选,将通过一轮筛选的N组更新了score值的候选框数据发送到最大值比较模块,并将“一轮筛选结束”信号发送到最大值比较模块。
筛选模块由数据管理器A、筛选模块控制器、交并比单元组、倒数表、标记表、缓冲管理器组成。
数据管理器A是具有数据接收、数据存储、数据发送功能的模块。数据管理器A与数据预处理模块、最大值比较模块、筛选模块控制器、交并比单元组相连。数据管理器A将从数据预处理模块接收的N组候选框数据存储,当接收到筛选模块控制器发送的“发送数据”信号时,数据管理器A向交并比单元组发送候选框数据;数据管理器A从交并比单元组接收更新了score值的候选框数据并存储,当接收到筛选模块控制器发送的“更新数据”信号时,数据管理器A向最大值比较模块发送候选框数据。
筛选模块控制器与最大值比较模块、数据管理器A、缓冲管理器、交并比单元组、标记表相连,筛选模块控制器从最大值比较模块接收到“第一大值完成”信号时,向缓冲管理器发送“寻找靶子”信号。筛选模块控制器从缓冲管理器接收到“得到靶子”信号时,发送“发送数据”信号到数据管理器A。筛选模块控制器从交并比单元组接收到“一轮筛选结束”信号时,向缓冲管理器发送“寻找靶子”信号,向数据管理器A发送“更新数据”信号,向最大值比较模块发送“一轮筛选结束”信号,向标记表发送监测信号;当从标记表接收到的“停止”信号时,筛选模块控制器控制候选框去冗余加速器停止工作。
标记表与交并比单元组、缓冲管理器、筛选模块控制器相连,用来记录N组候选框数据是否被修改、是否冗余被删除、是否作为靶子候选框被输出。标记表由N个寄存器组成,标记表寄存器中的值只能为0、1、2。以第u(1≤u≤N)个寄存器为例,若第u个寄存器中的值为0,表示ID为u的候选框未被修改也未被当做靶子或冗余候选框处理;若第u个寄存器中的值为1,表示ID为u的候选框仅被修改但未被当做靶子或冗余候选框处理;若第u个寄存器中的值为2,表示ID为u的候选框已经被当做靶子或冗余候选框处理。当标记表中N个候选框数据全为2时,说明N个候选框都被处理,候选框去冗余加速器停止工作。标记表分T次接收来自交并比单元组的N组标记值并存储,第1~第T-1次接收来自交并比单元组的S个交并比单元的S个标记表值,其中第t(1≤t≤T-1)次接收的S个标记表值存储在第(t-1)×S+1到第t×S寄存器中,第T次接收来自交并比单元组的S个交并比单元的NmodS个标记表值,存储在第(T-1)×S+1到第N寄存器中,mod是取模操作。标记表接收来自缓冲管理器的队头候选框数据ID,根据队头候选框数据的ID将第ID寄存器的标记值发送到缓冲管理器。标记表从筛选模块控制器接收“监测”信号,如果标记表的N个寄存器数据全为2,则向筛选模块控制器发送“停止”信号。
缓冲管理器具有接收候选框数据、存储候选框数据、查找最大值候选框数据以及发送候选框数据的功能。缓冲管理器中设置一个缓冲管理器队列存储候选框数据。缓冲管理器与最大值比较模块、交并比单元组、标记表、筛选模块控制器、数据恢复模块相连。缓冲管理器从最大值比较模块接收从大到小顺序的候选框数据(即不同时刻的最大值候选框数据)按照从大到小顺序存储在缓冲管理器队列中。缓冲管理器从筛选模块控制器接收到“寻找靶子”信号时,向标记表发送缓冲管理器队列的队头候选框数据ID。缓冲管理器从标记表接收返回的标记值,当标记值为0时,表示队头候选框数据为靶子候选框数据,缓冲管理器将得到的靶子候选框数据发送到交并比单元组和数据恢复模块,并向筛选模块控制器发送“得到靶子”信号;当标记表值为1或者2时,说明队头候选框数据不是靶子候选框数据,缓冲管理器删除缓冲管理器队列的原来队头的候选框,发送新的队头候选框数据ID到标记表。
倒数表是记录1到10000的倒数值的二进制表,目的是为了减少交并比中的浮点数除法计算量。倒数表与交并比单元组相连,接收来自交并比单元组的整数Z(交并比计算过程中iou分母的值),将Z的倒数进行存储供交并比单元组读取。
交并比单元组与缓冲管理器、标记表、数据管理器A、筛选模块控制器、倒数表相连。交并比单元组从缓冲管理器接收靶子候选框数据,从数据管理器A读取N组候选框数据,计算靶子候选框数据和任意一个候选框数据的交并比,根据交并比更新候选框数据中的score值并判断候选框数据是否冗余,根据冗余结果对N组候选框数据生成记录候选框数据是否冗余的冗余标记值,将冗余标记值发送到标记表,并将更新了score值的候选框数据发送给数据管理器A。当N组候选框的交并比计算结束时,发送“一轮筛选结束”信号到筛选模块控制器。计算交并比的过程中,交并比单元组将iou分母的值发送到倒数表,并从倒数表读取iou分母倒数值即以加速两个候选框数据的交并比的计算。
交并比单元组由S个结构相同的交并比单元组成,S为正整数,为可配置的值,与执行速度成正比。S满足tm和相差k倍最为合适,即满足公式tm为最大值比较模块计算一个最大值的执行时间,单位为秒,ts为一个交并比单元使用流水线加速后计算1个候选框与靶子候选框的交并比平均时间,单位为秒,为S个交并比单元计算N个候选框与靶子候选框的交并比时间;k为大于2小于5的整数,表示在一轮筛选结束后,交并比单元组计算完N个候选框交并比时,最大值比较模块已经计算出前k个最大值候选框。
令第j个交并比单元为PEj,j满足0<j≤S。PEj如图3所示,是一个九级流水结构,由2个候选框输入端口(即第一候选框输入端口、第二候选框输入端口)、2个最大值比较器(即第一最大值比较器、第二最大值比较器)、2个最小值比较器(即第一最小值比较器、第二最小值比较器)、16个运算部件(即第一运算部件~第十六运算部件)、2个寄存器(即第一寄存器、第二寄存器)组成。
交并比单元的第一级流水结构由第一候选框输入端口、第二候选框输入端口组成,第一候选框输入端口从缓冲管理器接收靶子候选框数据,将靶子候选框数据的x1(第64到第79位的16位二进制值)发送到第一最大值比较器、第一运算部件、将y1(第48到第63位的16位二进制值)发送到第二最大值比较器、第二运算部件,将x2(第32到第47位的16位二进制值)发送到第一最小值比较器、第一运算部件,将y2(第16到第31位的16位二进制值)发送到第二最小值比较器、第二运算部件;第二候选框输入端口从数据管理器A读取一个候选框数据,将候选框数据的x1发送到第一最大值比较器、第三运算部件,将y1发送到第二最大值比较器、第四运算部件,将x2发送到第一最小值比较器、第三运算部件,将y2发送到第二最小值比较器、第四运算部件;
交并比单元的第二级流水结构由第一最大值比较器、第二最大值比较器、第一最小值比较器、第二最小值比较器、第一运算部件、第二运算部件、第三运算部件、第四运算部件组成。第一最大值比较器从第一候选框输入端口接收靶子候选框数据的x1,从第二候选框输入端口接收一个候选框数据的x1,比较出它们的最大值(令为x1max),将x1max发送到第五运算部件;第二最大值比较器从第一候选框输入端口接收靶子候选框数据的y1,从第二候选框输入端口接收一个候选框数据的y1,比较出它们的最大值(令为y1max),将y1max发送到第六运算部件;第一最小值比较器从第一候选框输入端口接收靶子候选框数据的x2,从第二候选框输入端口接收一个候选框数据的x2,比较出它们的最小值(令为x2min),将x2min发送到第五运算部件;第二最大值比较器从第一候选框输入端口接收靶子候选框数据的y2,从第二候选框输入端口接收一个候选框数据的y2,比较出它们的最小值(令为y2min),将y2min发送到第六运算部件;
第一运算部件从第一候选框输入端口接收到靶子候选框数据的x1,x2,计算靶子候选框数据x2和x1的差,令xcha21=x2-x1,将xcha21发送到第七运算部件;第二运算部件从第一候选框输入端口接收靶子候选框数据的y1,y2,计算y2和y1的差,令ycha21=y2-y1,将ycha21发送到第七运算部件;第三运算部件从第二候选框输入端口接收一个候选框数据的x1,x2,计算候选框数据x2和x1的差,令xcha21’=x2-x1,将xcha21’发送到第八运算部件;第四运算部件从第二候选框输入端口接收一个候选框数据的y1,y2,计算y2和y1的差,令ycha21’=y2-y1,将ycha21’发送到第八运算部件。
交并比单元的第三级流水结构由第五运算部件、第六运算部件、第七运算部件、第八运算部件组成。第五运算部件从第一最大值比较器接收x1max,从第一最小值比较器接收x2min,计算x2min减去x1max(令差为chax2x1),如果chax2x1大于零,将chax2x1发送到第九运算部件,如果chax2x1小于等于零,令chax2x1=0,将chax2x1发送到第九运算部件;第六运算部件从第二最大值比较器接收y1max,从第二最小值比较器接收y2min,计算y2min减去y1max(令差为chay2y1),如果chay2y1大于零,将chay2y1发送到第九运算部件,如果chay2y1小于等于零,将令chay2y1=0,将chay2y1发送到第九运算部件。
第七运算部件接收来自第一运算部件的xcha21和第二运算部件的ycha21,计算靶子候选框面积area1,area1=xcha21×ycha21,将area1发送到第十运算部件;第八运算部件接收来自第三运算部件的xcha21’和第四运算部件的ycha21’,计算第j个候选框面积area2,area2=xcha21’×ycha21’,将area2发送到第十运算部件。
交并比单元的第四级流水结构由第九运算部件、第十运算部件组成。第九运算部件接收来自第五运算部件的chax2x1和第六运算部件的chay2y1,计算靶子候选框与输入候选框的相交部分面积area3(即iou分子部分),area3=chax2x1×chay2y1,将area3发送到第十一运算部件、第十二运算部件;
第十运算部件接收来第七运算部件的area1和第八运算部件的area2,计算第一面积和area12=area1+area2,将area12发送到第十一运算部件;
交并比单元的第五级流水结构由第十一运算部件组成。第十一运算部件接收来自第九运算部件的area3和第十运算部件的area12,计算靶子候选框与输入候选框的相并部分面积(即iou分母部分)area12j3=area12-area3,将area12j3发送到第十二运算部件、第十三运算部件;
交并比单元的第六级流水结构由第十二运算部件、第十三运算部件组成。第十二运算部件接收来自第九运算部件的area3和第十一运算部件的area12j3,计算iou分母-iou分子area12j3j3=area12j3-area3,将area12j3j3发送到第十四运算部件。第十三运算部件接收来自第十一运算部件的area12j3,根据area12j3查找倒数表,得到将发送到第十四运算部件。
交并比单元的第八级流水结构由第十五运算部件、第一寄存器组成。第一寄存器存放常数值1-阈值β。第十五运算部件接收来自数据管理器A的一个候选框数据、来自第十四运算部件的从第一寄存器常读取数值1-阈值β,如果将数据管理器A的一个候选框数据直接发送到第十六运算部件,并且将标记值0发送到第十六运算部件;如果将候选框数据的score值更新为score’,即令score’=score×(1-iou),将更新了score值(此时的score值变成了score’)的候选框数据发送到第十六运算部件,并且将标记值1发送到第十六运算部件;
交并比单元的第九级流水结构由第十六运算部件和第二寄存器组成。第二寄存器存放常数值阈值θ(β>θ>0),第十六运算部件与数据管理器A、标记表、第十五运算部件、第二寄存器相连,它接收来自第十五运算部件的标记值(标记值可能为0或者1)、候选框数据,从第二寄存器读取阈值θ,如果候选框数据的score值<θ,说明候选框数据应该被删除,将候选框数据的score值修改为零,将score值为零的候选框数据发送到数据管理器A,并发送标记值2记录到标记表的第j个寄存器中;如果候选框数据的score值≥θ,将来自第十五运算部件的候选框数据直接发送到数据管理器A,并将标记值(此时可能为0或者1)记录到标记表第j个寄存器。
最大值比较模块与数据预处理模块、筛选模块相连,由比较模块控制器、数据管理器B、K级比较器、队列组和排序管理器组成。最大值比较模块从数据预处理模块接收N组候选框数据,对N组候选框数据的score值进行比较,得到score值最大的候选框数据,供筛选模块的缓冲管理器读取,发送“第一大值完成”信号给筛选模块的筛选模块控制器(这个动作加速器只做一次)。最大值比较模块接收到来自数据管理器A的N组更新了score值的候选框数据后存入数据管理器B,重新计算新的score值最大的候选框数据,供筛选模块的缓冲管理器读取。当最大值比较模块接收到筛选模块发送的“一轮筛选结束”信号,最大值比较模块清空K级比较器、队列组和排序管理器。
数据管理器B是具有数据接收、数据存储、数据发送功能的模块。数据管理器B与数据预处理模块、筛选模块、K级比较器相连,在候选框去冗余加速器启动加速计算第一个最大值候选框数据时,数据管理器B从数据预处理模块接收N组候选框数据并进行存储,供K级比较器读取;当最大值比较模块计算完第一个最大值候选框数据后,计算后续最大值候选框数据时,数据管理器B从筛选模块的数据管理器A接收N组候选框数据并进行存储,供K级比较器读取。
比较模块控制器与排序管理器和筛选模块、K级比较器、队列组相连,比较模块控制器从排序管理器接收“第一大值完成”信号,发送“第一大值完成”信号到筛选模块的筛选模块控制器。比较模块控制器接收来自筛选模块控制器发送的“一轮筛选结束”信号,发送“清空”信号到K级比较器、队列组、排序管理器。
K级比较器与数据管理器B、队列组、比较模块控制器相连。K级比较器从数据管理器B读取N组候选框数据,比较N组候选框数据的score值,向队列组输出N组候选框数据中score值最大的候选框数据。当接收到来自比较模块控制器的“清空”信号时,K级比较器将清除存储的所有数据、停止计算、恢复初始状态。K级比较器,是一个K级流水结构,由KK个2选1比较器组成,KK=2k-1+2k-2+…+21+20。2选1比较器有2个输入,1个输出,功能是对2个输入进行比较,输出两个输入中的较大值。K级比较器分为K级,第一级包括2k-1个2选1比较器,2k-1个2选1比较器共有2k个输入端,分别接收2k组候选框数据,得到2k-1个score值较大的候选框数据;第二级包括2k-2个2选1比较器,2k-2个2选1比较器共有2k-1个输入端,分别从第一级接收2k-1组候选框数据,得到2k-2个score值较大的候选框数据;……;第K-1级包括21个2选1比较器,21个2选1比较器共有22个输入端,分别从第K-2级接收22组候选框数据,得到21个score值较大的候选框数据;第K级包括20个2选1比较器,20个2选1比较器共有2个输入端,分别从第K-1级接收2组候选框数据,得到1个score值较大的候选框数据,此候选框数据即为2k组候选框数据中score值最大的候选框数据;K级比较器一次可以处理2k组候选框数据,N组候选框数据只需经K级比较器串行比较C次,就能得到score值最大的候选框数据,表示对上取整。图2所示K级比较器是一个4级比较器,K=4,由KK=16个2选1比较器组成;第一级包括23=8个2选1比较器,23个2选1比较器共有24个输入端,分别接收24组候选框数据,得到23个score值较大的候选框数据;第二级包括22个2选1比较器,22个2选1比较器共有23个输入端,分别从第一级接收23组候选框数据,得到22个score值较大的候选框数据;第三级包括21个2选1比较器,21个2选1比较器共有22个输入端,分别从第二级接收22组候选框数据,得到21个score值较大的候选框数据;第四级包括20个2选1比较器,20个2选1比较器共有2个输入端,分别从第三级接收2组候选框数据,得到1个score值较大的候选框数据,此候选框数据即为24组候选框数据中score值最大的候选框数据。
队列组与K级比较器、排序管理器、比较模块控制器相连。当接收到来自比较模块控制器的“清空”信号时,队列组将清除存储的所有数据、停止工作、恢复初始状态。队列组由C个队列组成,将第c次从K级比较器第K级得到score值最大的候选框数据存储在第c个队列,把C队列的队头数据发送给排序管理器,1≤c≤C。
排序管理器与队列组、筛选模块中的缓冲管理器、比较模块控制器相连。排序管理器具有接收数据、数据排序、发送数据和信号的功能。排序管理器接收来自队列组的C个队头候选框数据,计算C个数据从大到小的排序值并存储在C个寄存器中,发送C个队列的队头数据排序结果最大的候选框数据到筛选模块的缓冲管理器。当C个队列都不空时,排序管理器对C个队列的队头数据排序,四个时钟周期后得到C个队头数据的序列值(序列值为1说明对应队列队头数据最大,序列值为C说明对应队列队头数据最小),比如排序管理器中有3个寄存器,记录为3、1、2时,说明第二个队列的队头数据>第三个队列的队头数据>第一个队列的队头数据。当接收到来自比较模块控制器的“清空”信号时,排序管理器清除存储的序列值、停止工作、恢复初始状态。
当候选框去冗余加速器启动时,排序管理器设置第一最大值候选框标记(令为FLAG)为0;当计算出第一个最大值候选框时,排序管理器判断FLAG为0,发送“第一大值完成”信号到比较模块控制器并修改FLAG为1;否则,即FLAG为1时不发送任何信号到比较模块控制器。因此候选框去冗余加速器整个执行过程中,排序管理器只发送一次“第一大值完成”信号到比较模块控制器。
数据恢复模块与筛选模块相连。若数据预处理模块连接的上级网络为P网络或R网络,数据恢复模块还连接下级网络(R网络或O网络),若数据预处理模块连接的上级网络为O网络,数据恢复模块的输出将直接作为数据冗余操作的输出。当数据恢复模块接收到来自筛选模块的缓冲管理器的靶子候选框数据时,将靶子候选框数据中的100位二进制数据的第80到第99位的20位二进制数据转换为6位整数得分值score,将第64到第79位的16位二进制转换为坐标值x1,将第48到第63位的16位二进制转换为坐标值y1,将第32到第47位的16位二进制转换为坐标值x2,将第16到第31位的16位二进制转换为坐标值y2。将靶子候选框数据的得分值score和坐标值(x1,y1),(x2,y2)输送到下层卷积网络或作为结果输出。
第二步,采用候选框去冗余加速器对从上层卷积网络接收的N组候选框去冗余,方法是:
2.1数据预处理模块对从上层卷积网络接收的N组候选框进行预处理,方法是:
2.1.1数据预处理模块从上层卷积网络接收N组候选框,将N组候选框的得分值score均放大1000000倍,将score从一个0到1之间的6位小数值转化为6位整数。
2.1.2数据预处理模块将N组候选框封装为N个100位的二进制数据,其中第80到第99位存贮用20位二进制表示的得分值score,第64到第79位存贮用16位二进制表示的坐标值x1,其中第48到第63位存贮用16位二进制表示的y1,第32到第47位存贮用16位二进制表示的x2,第16到第31位存贮用16位二进制表示的y2,第0到第16位存贮用16位二进制表示的索引值ID。
2.1.3数据预处理模块将N个100位二进制数据即N组候选框数据发送到筛选模块的数据管理器A和最大值比较模块的数据管理器B。
2.2筛选模块的数据管理器A存储来自数据预处理模块的N组候选框;同时最大值比较模块的数据管理器B存储来自数据预处理模块的N组候选框数据。
2.3最大值比较模块、筛选模块、数据恢复模块并行工作,采用流水的方法对从上层卷积网络收到的N组候选框数据进行最大值候选框选取、筛选、数据恢复,方法是:最大值比较模块按2.3.1步所述流程对数据管理器B中的N组候选框选取score值最大的候选框数据,将得到的score值最大的候选框数据发送到筛选模块的缓冲管理器;同时筛选模块按2.3.2所述流程计算靶子候选框,并计算靶子候选框数据和数据管理器A中任意一个候选框数据的交并比,根据交并比更新候选框数据中的Score值并判断候选框数据是否冗余;同时数据恢复模块按2.3.3步所述流程对score最大的候选框数据进行格式恢复并输出。
2.3.1最大值比较模块的数据管理器B、K级比较器、排序管理器、比较模块控制器并行工作,找出数据管理器B中score值最大的候选框:数据管理器B、K级比较器按照步骤2.3.1.1计算数据管理器B中2k个候选框数据的最大值,存储在队列组中;同时排序管理器按照步骤2.3.1.2对队列组的队头数据排序,得到队头数据的最大值;同时比较模块控制器按照步骤2.3.1.3接收“一轮筛选”信号,控制最大值比较模块重新进行最大值计算:
2.3.1.1数据管理器B、K级比较器相互配合,计算数据管理器B中2k个候选框数据的最大值,并将最大值存储在队列组中,方法为:
c=1。
2.3.1.1.2数据管理器B将第c组候选框数据发送到K级比较器;
2.3.1.1.3K级比较器从数据管理器B接收第c组候选框数据;(由于K级比较器只有2k个输入,所以一次只能处理2k个候选框数据,K级比较器分C次完成对N组数据的比较,第1~第C-1次取2k个候选框数据,第C次取N mod2k个候选框数据,mod是取模操作)。K级比较器对第c组候选框数据进行比较,得到第c组候选框数据中score值最大的候选框数据,将此score值最大的候选框数据发送给队列组中第c个队列;同时为了不影响求本轮筛选第c组候选框数据中的score值第二大的候选框数据,将数据管理器B中此score值最大的候选框数据的ID值对应位置的100位二进制数据均改为0(表示该score值最大的候选框数据已被处理)。
2.3.1.1.4判断K级比较器、队列组是否接收到比较模块控制器的“清空”信号,如果接收到“清空”信号,则K级比较器、队列组清除所有数据、停止工作、恢复初始状态;同时数据管理器B将从筛选模块的数据管理器A接收的更新了score值的候选框数据存储,转步2.3.1.1.1。如果未接收到“清空”信号,执行步骤2.3.1.1.5。
2.3.1.1.5数据管理器B判定c是否等于C,若c=C,则令c=1,转2.3.1.1.2步;若c<C,则令c=c+1,转2.3.1.1.2步;
2.3.1.2排序管理器对队列组的队头数据排序,得到队头数据的最大值,方法为:
2.3.1.2.1排序管理器判断队列组是否有空队列,若队列组全不空,排序管理器采用并行全比较排序算法对队列组中C个队列的队头数据进行排序,将得到的排序值(C个队列的队头数据中score值最大的候选框的排序值为1,排序值的范围为1到C)存储在排序管理器中。同时排序管理器找到队列组中与排序管理器中排序值为1的位(令为第p位,1≤p≤C)对应的队列(即第p个队列),将第p个队列的队头候选框数据弹出,将排序管理器中的第p位排序值从1改为0;并将弹出的候选框数据(即score最大的候选框数据)发送到缓冲管理器中。排序管理器判断FLAG是否为0,若为0,发送“第一大值完成”信号到比较模块控制器并且修改FLAG为1;若FLAG为1,不发送任何信号到比较模块控制器。此时排序管理器第p位为0,其余C-1位为队头数据排序值。转2.3.1.2.2;若队列组中有队列为空,说明此时还不能排序,排序管理器不进行任何操作,转2.3.1.2.1,等到队列组没有空队列。
2.3.1.2.2判断排序管理器是否从比较模块控制器接收到“清空”信号,如果接收到,则排序管理器清除存储的序列值、停止工作、恢复初始状态(FLAG保持不变),转2.3.1.2.1;如果未接收到,不进行任何操作直接转2.3.1.2.1;
2.3.1.3比较模块控制器从筛选模块接收“一轮筛选结束”信号,控制最大值比较模块重新进行最大值计算,方法为:
2.3.1.3.1比较模块控制器判断是否从筛选模块接收到的“一轮筛选结束”信号,如果接收到,比较模块控制器发送“清空”信号到K级比较器、队列组和排序管理器,转2.3.1.3.1;若未接收到,不进行任何操作,直接转2.3.1.3.1。
2.3.2筛选模块按步骤2.3.2.1所述流程计算靶子候选框数据,然后按步骤2.3.2.2所述流程计算靶子候选框数据和数据管理器A中任意一个候选框数据的交并比,根据交并比更新候选框数据中的Score值并判断候选框数据是否冗余,将冗余结果保存在标记表中;在按步骤2.3.2.1和步骤2.3.2.2进行筛选的同时,筛选模块按步骤2.3.2.3监测候选框去冗余加速器是否停止工作:
2.3.2.1缓冲管理器寻找靶子候选框,方法为:
2.3.2.1.1筛选模块控制器接收到来比较模块控制器“第一大值完成”信号,发送“寻找靶子”信号到缓冲管理器。
2.3.2.1.2缓冲管理器接收到筛选模块控制器的“寻找靶子”信号。
2.3.2.1.3缓冲管理器判断缓冲管理器队列是否为空,如果为空,转2.3.2.1.3,等待接收最大值比较模块的最大值候选框,如果不为空,转2.3.2.1.4。
2.3.2.1.4缓冲管理器将缓冲管理器队列的队头数据发送到标记表,设队头数据ID值为id。
2.3.2.1.5缓冲管理器判断从标记表返回的id个寄存器的标记是否为0,如果是0,则此时缓冲管理器队列队头数据为靶子候选框数据,缓冲管理器将靶子候选框数据发送到交并比单元组和数据恢复模块,同时发送“得到靶子”信号到筛选模块控制器,转2.3.2.1.6步;如果从标记表返回的id位的是1或2,说明队头数据不是靶子候选框数据,转2.3.2.1.3步。
2.3.2.1.6筛选模块控制器接收到来自缓冲管理器的“得到靶子”信号,将“发送数据”信号发送到数据管理器A。执行2.3.2.2步。
2.3.2.2交并比单元组计算靶子候选框数据和数据管理器A中任意一个候选框数据的交并比,根据交并比更新候选框数据中的Score值并判断候选框数据是否冗余,方法为:
2.3.2.2.1数据管理器A接收筛选模块控制器的“发送数据”信号,将N组候选框二进制数据分成E组,第1~第E-1个集合中有S个候选框二进制数据,第E个集合中有N mod S个候选框二进制数据,变量e表示交并比单元流水计算交并比的时钟周期数,初始值为1;
2.3.2.2.2数据管理器A发送第e组数据到交并比单元;
2.3.2.2.3交并比单元组一方面从数据管理器A读取第e组候选框数据,一方面从缓冲管理器接收靶子候选框数据;
2.3.2.2.4交并比单元组的S个交并比单元的第一候选框输入端口同时从缓冲管理器接收一个靶子候选框数据,交并比单元组的第二候选框输入端口同时接收来自数据管理器A的第e组的S个候选框数据(即S个第二候选框输入端口分别接收S个候选框数据)。S个交并比单元使用通过9级流水线计算靶子候选框数据与第e组的S个候选框数据的交并比;
2.3.2.2.5若e大于9且小于等于E+9,转2.3.2.2.6步;若e小于等于9,e=e+1,转2.3.2.2.2步;
2.3.2.2.6S个交并比单元的第十六运算部件同时将计算结果,即第e-9组的更新了score值的S个候选框数据发送到数据管理器A,覆盖第e-9组原S个候选框数据;将S个冗余标记值发送到标记表;
2.3.2.2.7交并比单元组判断若e小于等于E,e=e+1,转2.3.2.2.2步;若e大于E且e小于等于E+9,e=e+1,转2.2.2.6步。若e等于E+10,交并比单元组向筛选模块控制器发送“一轮筛选结束”信号,转2.3.2.2.8步;
2.3.2.2.8筛选模块控制器接收交并比单元组发来的“一轮筛选结束”信号,发送“寻找靶子”信号到缓冲管理器,发送“更新数据”信号到数据管理器A,同时发送“一轮筛选结束”信号到最大值比较模块的比较模块控制器;
2.3.2.2.9数据管理器A接收到“更新数据”信号后,发送更新了score值的N组候选框数据到最大值比较模块的数据管理器B,转2.3.2.1.2步;
2.3.2.3筛选模块控制器监测标记表,判断候选框去冗余加速器是否停止工作,方法为:
2.3.2.3.1筛选模块控制器发送“监测”信号到标记表。
2.3.2.3.2标记表接收到筛选模块控制器的“监测”信号后,检查所有的寄存器是否全为2,若全为2,说明已完成冗余候选框筛选操作,发送“停止”信号到筛选模块控制器,转2.3.2.3.3;否则标记表不发送任何信号到筛选模块控制器,直接转2.3.2.3.3。
2.3.2.3.3筛选模块控制器接收标记表的“停止”信号,转第三步,否则转2.3.2.3.1继续监控。
2.3.3数据恢复模块从筛选模块接收靶子候选框数据,将靶子候选框数据进行格式恢复,并将格式恢复后的score最大的候选框数据输送到下层卷积网络或作为结果输出,方法为:
2.3.3.1数据恢复模块判断是否接收到来自最大值缓冲模块的score值最大的候选框数据,若未接收到,转2.3.3.1继续等待;若接收到,将该候选框数据的100位二进制数据拆解,将第80到第99位的20位二进制转换为6位整数得分值score,第64到第79位的16位二进制转换为坐标值x1,第48到第63位的16位二进制转换为坐标值y1,第32到第47位的16位二进制转换为坐标值x2,第16到第31位的16位二进制转换为坐标值y2,转2.3.3.2;2.3.3.2数据恢复模块将6位整数得分值score缩小1000000倍,变回0到1之间的6位小数值。
2.3.3.3数据恢复模块将转化为得分值score和坐标值(x1,y1)(x2,y2)的格式的score值最大的候选框数据输送到下层卷积网络或作为结果输出。
第三步,候选框去冗余加速器终止工作,结束。
Claims (6)
1.一种目标检测中候选框去冗余方法,其特征在于包括以下步骤:
第一步,构建候选框去冗余加速器,方法是:
候选框去冗余加速器由数据预处理模块、最大值比较模块、筛选模块、数据恢复模块组成;候选框去冗余加速器接收上层卷积网络输出的N组候选框,每组候选框是一个3元组,内容为(得分值score、坐标值[(x1,y1),(x2,y2)]、索引值ID);其中,score为0到1之间的6位小数值;(x1,y1)为候选框的左上角点的坐标值,(x2,y2)为候选框的右下角点的坐标值,x1,y1,x2,y2均为小于216的整数值;索引值ID表示候选框在输入候选框序列中的位置,索引值ID为小于216的整数值;候选框去冗余加速器对N组候选框去除冗余候选框,若上层卷积网络是P网络或R网络,则向下一层卷积网络输出去除冗余候选框后的K组候选框,其中K<N,若上层卷积网络是O网络,则去除冗余候选框后的K组候选框作为识别结果,这K组候选框所框住的部分即为目标在原图I中的坐标位置;
数据预处理模块与上层卷积网络、最大值比较模块、筛选模块相连;数据预处理模块从上层卷积网络接收N组候选框,将N组候选框的得分值、坐标值、索引值ID封装为N组100位二进制数据,简称为候选框数据,将候选框数据发送给筛选模块、最大值比较模块;
筛选模块与数据预处理模块、最大值比较模块、数据恢复模块相连;筛选模块从最大值比较模块接收最大值候选框数据,将最大值候选框数据存入缓冲管理器,计算靶子候选框,将靶子候选框数据发送到数据恢复模块;筛选模块从数据预处理模块接收N组候选框数据,从最大值比较模块接收“第一大值完成”信号,根据计算出的靶子候选框数据对N组候选框数据进行筛选,将通过一轮筛选的N组更新了score值的候选框数据发送到最大值比较模块,并将“一轮筛选结束”信号发送到最大值比较模块;
筛选模块由数据管理器A、筛选模块控制器、交并比单元组、倒数表、标记表、缓冲管理器组成;
数据管理器A是具有数据接收、数据存储、数据发送功能的模块;数据管理器A与数据预处理模块、最大值比较模块、筛选模块控制器、交并比单元组相连;数据管理器A将从数据预处理模块接收的N组候选框数据存储,当接收到筛选模块控制器发送的“发送数据”信号时,数据管理器A向交并比单元组发送候选框数据;数据管理器A从交并比单元组接收更新了score值的候选框数据并存储,当接收到筛选模块控制器发送的“更新数据”信号时,数据管理器A向最大值比较模块发送候选框数据;
筛选模块控制器与最大值比较模块、数据管理器A、缓冲管理器、交并比单元组、标记表相连,筛选模块控制器从最大值比较模块接收到“第一大值完成”信号时,向缓冲管理器发送“寻找靶子”信号;筛选模块控制器从缓冲管理器接收到“得到靶子”信号时,发送“发送数据”信号到数据管理器A;筛选模块控制器从交并比单元组接收到“一轮筛选结束”信号时,向缓冲管理器发送“寻找靶子”信号,向数据管理器A发送“更新数据”信号,向最大值比较模块发送“一轮筛选结束”信号,向标记表发送监测信号;当从标记表接收到“停止”信号时,筛选模块控制器控制候选框去冗余加速器停止工作;
标记表与交并比单元组、缓冲管理器、筛选模块控制器相连,用来记录N组候选框数据是否被修改、是否冗余被删除、是否作为靶子候选框被输出;标记表由N个寄存器组成,标记表寄存器中的值为0、1、2;若第u个寄存器中的值为0,表示ID为u的候选框未被修改也未被当做靶子或冗余候选框处理,1≤u≤N;若第u个寄存器中的值为1,表示ID为u的候选框仅被修改但未被当做靶子或冗余候选框处理;若第u个寄存器中的值为2,表示ID为u的候选框已经被当做靶子或冗余候选框处理;当标记表中N个候选框数据全为2,说明N个候选框都被处理,候选框去冗余加速器停止工作;标记表分T次接收来自交并比单元组的N组标记值并存储,第1~第T-1次接收来自交并比单元组的S个交并比单元的S个标记表值,其中第t次接收的S个标记表值存储在第(t-1)×S+1到第t×S寄存器中,1≤t≤T-1,第T次接收来自交并比单元组的S个交并比单元的NmodS个标记表值,存储在第(T-1)×S+1到第N寄存器中,mod是取模操作;标记表接收来自缓冲管理器的队头候选框数据ID,根据队头候选框数据的ID将第ID寄存器的标记值发送到缓冲管理器;标记表从筛选模块控制器接收“监测”信号,如果标记表的N个寄存器数据全为2,则向筛选模块控制器发送“停止”信号;
缓冲管理器具有接收候选框数据、存储候选框数据、查找最大值候选框数据以及发送候选框数据的功能;缓冲管理器中设置一个缓冲管理器队列存储候选框数据;缓冲管理器与最大值比较模块、交并比单元组、标记表、筛选模块控制器、数据恢复模块相连;缓冲管理器从最大值比较模块接收不同时刻发来的从大到小顺序的候选框数据,按照从大到小顺序存储在缓冲管理器队列;缓冲管理器从筛选模块控制器接收到“寻找靶子”信号时,向标记表发送缓冲管理器队列的队头候选框数据ID;缓冲管理器从标记表接收返回的标记值,当标记值为0时,表示队头候选框数据为靶子候选框数据,缓冲管理器将得到的靶子候选框数据发送到交并比单元组和数据恢复模块,并向筛选模块控制器发送“得到靶子”信号;当标记表值为1或者2时,说明队头候选框数据不是靶子候选框数据,缓冲管理器删除缓冲管理器队列的原来队头的候选框,发送新的队头候选框数据ID到标记表;
倒数表是记录1到10000的倒数值的二进制表,倒数表与交并比单元组相连,接收来自交并比单元组的整数Z即交并比计算过程中iou分母的值,将Z的倒数进行存储;
交并比单元组与缓冲管理器、标记表、数据管理器A、筛选模块控制器、倒数表相连;交并比单元组从缓冲管理器接收靶子候选框数据,从数据管理器A读取N组候选框数据,计算靶子候选框数据和任意一个候选框数据的交并比,根据交并比更新候选框数据中的score值并判断候选框数据是否冗余,根据冗余结果对N组候选框数据生成记录候选框数据是否冗余的冗余标记值,将冗余标记值发送到标记表,并将更新了score值的候选框数据发送给数据管理器A;当N组候选框的交并比计算结束时,发送“一轮筛选结束”信号到筛选模块控制器;计算交并比的过程中,交并比单元组将iou分母的值发送到倒数表,并从倒数表读取iou分母倒数值即以加速两个候选框数据的交并比的计算;
交并比单元组由S个结构相同的交并比单元组成,S为正整数,为可配置的值,与执行速度成正比;
令第j个交并比单元为PEj,j满足0<j≤S;PEj是一个九级流水结构,由2个候选框输入端口即第一候选框输入端口、第二候选框输入端口、2个最大值比较器即第一最大值比较器、第二最大值比较器、2个最小值比较器即第一最小值比较器、第二最小值比较器、16个运算部件即第一运算部件~第十六运算部件、2个寄存器即第一寄存器、第二寄存器组成;
交并比单元的第一级流水结构由第一候选框输入端口、第二候选框输入端口组成,第一候选框输入端口从缓冲管理器接收靶子候选框数据,将靶子候选框数据的x1发送到第一最大值比较器、第一运算部件、将y1发送到第二最大值比较器、第二运算部件,将x2发送到第一最小值比较器、第一运算部件,将y2发送到第二最小值比较器、第二运算部件;第二候选框输入端口从数据管理器A读取一个候选框数据,将候选框数据的x1发送到第一最大值比较器、第三运算部件,将y1发送到第二最大值比较器、第四运算部件,将x2发送到第一最小值比较器、第三运算部件,将y2发送到第二最小值比较器、第四运算部件;
交并比单元的第二级流水结构由第一最大值比较器、第二最大值比较器、第一最小值比较器、第二最小值比较器、第一运算部件、第二运算部件、第三运算部件、第四运算部件组成。第一最大值比较器从第一候选框输入端口接收靶子候选框数据的x1,从第二候选框输入端口接收一个候选框数据的x1,比较出它们的最大值x1max,将x1max发送到第五运算部件;第二最大值比较器从第一候选框输入端口接收靶子候选框数据的y1,从第二候选框输入端口接收一个候选框数据的y1,比较出它们的最大值y1max,将y1max发送到第六运算部件;第一最小值比较器从第一候选框输入端口接收靶子候选框数据的x2,从第二候选框输入端口接收一个候选框数据的x2,比较出它们的最小值x2min,将x2min发送到第五运算部件;第二最大值比较器从第一候选框输入端口接收靶子候选框数据的y2,从第二候选框输入端口接收一个候选框数据的y2,比较出它们的最小值y2min,将y2min发送到第六运算部件;
第一运算部件从第一候选框输入端口接收到靶子候选框数据的x1,x2,计算靶子候选框数据x2和x1的差,令xcha21=x2-x1,将xcha21发送到第七运算部件;第二运算部件从第一候选框输入端口接收靶子候选框数据的y1,y2,计算y2和y1的差,令ycha21=y2-y1,将ycha21发送到第七运算部件;第三运算部件从第二候选框输入端口接收一个候选框数据的x1,x2,计算候选框数据x2和x1的差,令xcha21’=x2-x1,将xcha21’发送到第八运算部件;第四运算部件从第二候选框输入端口接收一个候选框数据的y1,y2,计算y2和y1的差,令ycha21’=y2-y1,将ycha21’发送到第八运算部件;
交并比单元的第三级流水结构由第五运算部件、第六运算部件、第七运算部件、第八运算部件组成;第五运算部件从第一最大值比较器接收x1max,从第一最小值比较器接收x2min,计算x2min减去x1max,令差为chax2x1,如果chax2x1大于零,将chax2x1发送到第九运算部件,如果chax2x1小于等于零,令chax2x1=0,将chax2x1发送到第九运算部件;第六运算部件从第二最大值比较器接收y1max,从第二最小值比较器接收y2min,计算y2min减去y1max,令差为chay2y1,如果chay2y1大于零,将chay2y1发送到第九运算部件,如果chay2y1小于等于零,将令chay2y1=0,将chay2y1发送到第九运算部件;
第七运算部件接收来自第一运算部件的xcha21和第二运算部件的ycha21,计算靶子候选框面积area1,area1=xcha21×ycha21,将area1发送到第十运算部件;第八运算部件接收来自第三运算部件的xcha21’和第四运算部件的ycha21’,计算第j个候选框面积area2,area2=xcha21’×ycha21’,将area2发送到第十运算部件;
交并比单元的第四级流水结构由第九运算部件、第十运算部件组成;第九运算部件接收来自第五运算部件的chax2x1和第六运算部件的chay2y1,计算靶子候选框与输入候选框的相交部分面积area3即iou分子部分,area3=chax2x1×chay2y1,将area3发送到第十一运算部件、第十二运算部件;
第十运算部件接收来第七运算部件的area1和第八运算部件的area2,计算第一面积和area12=area1+area2,将area12发送到第十一运算部件;
交并比单元的第五级流水结构由第十一运算部件组成;第十一运算部件接收来自第九运算部件的area3和第十运算部件的area12,计算靶子候选框与输入候选框的相并部分面积即iou分母部分area12j3=area12-area3,将area12j3发送到第十二运算部件、第十三运算部件;
交并比单元的第六级流水结构由第十二运算部件、第十三运算部件组成;第十二运算部件接收来自第九运算部件的area3和第十一运算部件的area12j3,计算iou分母-iou分子area12j3j3=area12j3-area3,将area12j3j3发送到第十四运算部件;第十三运算部件接收来自第十一运算部件的area12j3,根据area12j3查找倒数表,得到将发送到第十四运算部件;
交并比单元的第八级流水结构由第十五运算部件、第一寄存器组成;第一寄存器存放常数值1-阈值β;第十五运算部件接收来自数据管理器A的一个候选框数据、来自第十四运算部件的从第一寄存器常读取数值1-β,如果将数据管理器A的一个候选框数据直接发送到第十六运算部件,并且将标记值0发送到第十六运算部件;如果将候选框数据的score值更新为score’, 即令score’=score×(1-iou),将更新了score值的候选框数据发送到第十六运算部件,并且将标记值1发送到第十六运算部件;
交并比单元的第九级流水结构由第十六运算部件和第二寄存器组成;第二寄存器存放常数值阈值θ,第十六运算部件与数据管理器A、标记表、第十五运算部件、第二寄存器相连,它接收来自第十五运算部件的标记值即0或者1、候选框数据,从第二寄存器读取阈值θ,如果候选框数据的score值<θ,说明候选框数据应该被删除,将候选框数据的score值修改为零,将score值为零的候选框数据发送到数据管理器A,并发送标记值2记录到标记表的第j个寄存器中;如果候选框数据的score值≥θ,将来自第十五运算部件的候选框数据直接发送到数据管理器A,并将标记值0或者1记录到标记表第j个寄存器;
最大值比较模块与数据预处理模块、筛选模块相连,由比较模块控制器、数据管理器B、K级比较器、队列组和排序管理器组成;最大值比较模块从数据预处理模块接收N组候选框数据,对N组候选框数据的score值进行比较,得到score值最大的候选框数据,供筛选模块的缓冲管理器读取,发送“第一大值完成”信号给筛选模块的筛选模块控制器;最大值比较模块接收到来自数据管理器A的N组更新了score值的候选框数据后存入数据管理器B,重新计算新的score值最大的候选框数据,供筛选模块的缓冲管理器读取;当最大值比较模块接收到筛选模块发送的“一轮筛选结束”信号,最大值比较模块清空K级比较器、队列组和排序管理器;
数据管理器B是具有数据接收、数据存储、数据发送功能的模块;数据管理器B与数据预处理模块、筛选模块、K级比较器相连,在候选框去冗余加速器启动加速计算第一个最大值候选框数据时,数据管理器B从数据预处理模块接收N组候选框数据并进行存储,供K级比较器读取;当最大值比较模块计算完第一个最大值候选框数据后,计算后续最大值候选框数据时,数据管理器B从筛选模块的数据管理器A接收N组候选框数据并进行存储,供K级比较器读取;
比较模块控制器与排序管理器和筛选模块、K级比较器、队列组相连,比较模块控制器从排序管理器接收“第一大值完成”信号,发送“第一大值完成”信号到筛选模块的筛选模块控制器;比较模块控制器接收来自筛选模块控制器发送的“一轮筛选结束”信号,发送“清空”信号到K级比较器、队列组、排序管理器;
K级比较器与数据管理器B、队列组、比较模块控制器相连;K级比较器从数据管理器B读取N组候选框数据,比较N组候选框数据的score值,向队列组输出N组候选框数据中score值最大的候选框数据;当接收到来自比较模块控制器的“清空”信号时,K级比较器清除存储的所有数据、停止计算、恢复初始状态;K级比较器是一个K级流水结构,由KK个2选1比较器组成,KK=2k-1+2k-2+…+21+20;2选1比较器对2个输入进行比较,输出两个输入中的较大值;K级比较器分为K级,第一级包括2k-1个2选1比较器,2k-1个2选1比较器共有2k个输入端,分别接收2k组候选框数据,得到2k-1个score值较大的候选框数据;第二级包括2k-2个2选1比较器,2k-2个2选1比较器共有2k-1个输入端,分别从第一级接收2k-1组候选框数据,得到2k-2个score值较大的候选框数据;……;第K-1级包括21个2选1比较器,21个2选1比较器共有22个输入端,分别从第K-2级接收22组候选框数据,得到21个score值较大的候选框数据;第K级包括20个2选1比较器,20个2选1比较器共有2个输入端,分别从第K-1级接收2组候选框数据,得到1个score值较大的候选框数据,此候选框数据即为2k组候选框数据中score值最大的候选框数据;K级比较器一次处理2k组候选框数据,N组候选框数据经K级比较器串行比较C次,得到score值最大的候选框数据,表示对上取整;
队列组与K级比较器、排序管理器、比较模块控制器相连;当接收到来自比较模块控制器的“清空”信号时,队列组将清除存储的所有数据、停止工作、恢复初始状态。队列组由C个队列组成,将第c次从K级比较器第K级得到的score值最大的候选框数据存储在第c个队列,把C个队列的队头数据发送给排序管理器,1≤c≤C;
排序管理器与队列组、筛选模块中的缓冲管理器、比较模块控制器相连;排序管理器具有接收数据、数据排序、发送数据和信号的功能;排序管理器接收来自队列组的C个队头候选框数据,计算C个数据从大到小的排序值并存储在C个寄存器中,发送C个队列的队头数据排序结果最大的候选框数据到筛选模块的缓冲管理器;当C个队列都不空时,排序管理器对C个队列的队头数据排序,得到C个队头数据的序列值,序列值为1说明对应队列队头数据最大,序列值为C说明对应队列队头数据最小;当接收到来自比较模块控制器的“清空”信号时,排序管理器清除存储的序列值、停止工作、恢复初始状态.
当候选框去冗余加速器启动时,排序管理器设置第一最大值候选框标记FLAG为0;当计算出第一个最大值候选框时,排序管理器判断FLAG为0,发送“第一大值完成”信号到比较模块控制器并修改FLAG为1;否则,即FLAG为1时不发送任何信号到比较模块控制器;
数据恢复模块与筛选模块相连;若数据预处理模块连接的上级网络为P网络或R网络,数据恢复模块还连接下级网络,若数据预处理模块连接的上级网络为O网络,数据恢复模块的输出将直接作为数据冗余操作的输出;当数据恢复模块接收到来自筛选模块的缓冲管理器的靶子候选框数据时,将靶子候选框数据中的100位二进制数据恢复为得分值score,坐标值x1,坐标值y1,坐标值x2,坐标值y2;将靶子候选框数据的得分值score和坐标值(x1,y1),(x2,y2)输送到下层卷积网络或作为结果输出;
第二步,采用候选框去冗余加速器对从上层卷积网络接收的N组候选框去冗余,方法是:
2.1数据预处理模块对从上层卷积网络接收的N组候选框进行预处理,方法是:
2.1.1数据预处理模块从上层卷积网络接收N组候选框,将N组候选框的得分值score均放大1000000倍,将score从一个0到1之间的6位小数值转化为6位整数;
2.1.2数据预处理模块将N组候选框的得分值score、坐标值x1、y1、x2、y2、索引值ID封装为N个100位的二进制数据;
2.1.3数据预处理模块将N个100位二进制数据即N组候选框数据发送到筛选模块的数据管理器A和最大值比较模块的数据管理器B;
2.2筛选模块的数据管理器A存储来自数据预处理模块的N组候选框;同时最大值比较模块的数据管理器B存储来自数据预处理模块的N组候选框数据;
2.3最大值比较模块、筛选模块、数据恢复模块并行工作,采用流水的方法对从上层卷积网络收到的N组候选框数据进行最大值候选框选取、筛选、数据恢复,方法是:最大值比较模块按2.3.1步所述流程对数据管理器B中的N组候选框选取score值最大的候选框数据,将得到的score值最大的候选框数据发送到筛选模块的缓冲管理器;同时筛选模块按2.3.2所述流程计算靶子候选框,并计算靶子候选框数据和数据管理器A中任意一个候选框数据的交并比,根据交并比更新候选框数据中的Score值并判断候选框数据是否冗余;同时数据恢复模块按2.3.3步所述流程对score最大的候选框数据进行格式恢复并输出;
2.3.1最大值比较模块的数据管理器B、K级比较器、排序管理器、比较模块控制器并行工作,找出数据管理器B中score值最大的候选框:数据管理器B、K级比较器按照步骤2.3.1.1计算数据管理器B中2k个候选框数据的最大值,存储在队列组中;同时排序管理器按照步骤2.3.1.2对队列组的队头数据排序,得到队头数据的最大值;同时比较模块控制器按照步骤2.3.1.3接收“一轮筛选”信号,控制最大值比较模块重新进行最大值计算:
2.3.1.1数据管理器B、K级比较器相互配合,计算数据管理器B中2k个候选框数据的最大值,并将最大值存储在队列组中,方法为:
c=1;
2.3.1.1.2数据管理器B将第c组候选框数据发送到K级比较器;
2.3.1.1.3K级比较器从数据管理器B接收第c组候选框数据;K级比较器对第c组候选框数据进行比较,得到第c组候选框数据中score值最大的候选框数据,将此score值最大的候选框数据发送给队列组中第c个队列;同时将数据管理器B中此score值最大的候选框数据的ID值对应位置的100位二进制数据均改为0;
2.3.1.1.4判断K级比较器、队列组是否接收到比较模块控制器的“清空”信号,如果接收到“清空”信号,则K级比较器、队列组清除所有数据、停止工作、恢复初始状态;同时数据管理器B将从筛选模块的数据管理器A接收的更新了score值的候选框数据存储,转步2.3.1.1.1;如果未接收到“清空”信号,执行步骤2.3.1.1.5;
2.3.1.1.5数据管理器B判定c是否等于C,若c=C,则令c=1,转2.3.1.1.2步;若c<C,则令c=c+1,转2.3.1.1.2步;
2.3.1.2排序管理器对队列组的队头数据排序,得到队头数据的最大值,方法为:
2.3.1.2.1排序管理器判断队列组是否有空队列,若队列组全不空,排序管理器对队列组中C个队列的队头数据进行排序,将得到的排序值存储在排序管理器中;同时排序管理器找到队列组中与排序管理器中排序值为1的位对应的队列,令为第p个队列,1≤p≤C,将第p个队列的队头候选框数据弹出,将排序管理器中的第p位排序值从1改为0;并将弹出的候选框数据即score最大的候选框数据发送到缓冲管理器中;排序管理器判断FLAG是否为0,若为0,发送“第一大值完成”信号到比较模块控制器并且修改FLAG为1;若FLAG为1,不发送任何信号到比较模块控制器;此时排序管理器第p位为0,其余C-1位为队头数据排序值;转2.3.1.2.2;若队列组中有队列为空,转2.3.1.2.1;
2.3.1.2.2判断排序管理器是否从比较模块控制器接收到“清空”信号,如果接收到,则排序管理器清除存储的序列值、停止工作、恢复初始状态,转2.3.1.2.1;如果未接收到,直接转2.3.1.2.1;
2.3.1.3比较模块控制器从筛选模块接收“一轮筛选结束”信号,控制最大值比较模块重新进行最大值计算,方法为:
2.3.1.3.1比较模块控制器判断是否从筛选模块接收到的“一轮筛选结束”信号,如果接收到,比较模块控制器发送“清空”信号到K级比较器、队列组和排序管理器,转2.3.1.3.1;若未接收到,直接转2.3.1.3.1;
2.3.2筛选模块按步骤2.3.2.1所述流程计算靶子候选框数据,然后按步骤2.3.2.2所述流程计算靶子候选框数据和数据管理器A中任意一个候选框数据的交并比,根据交并比更新候选框数据中的Score值并判断候选框数据是否冗余,将冗余结果保存在标记表中;在按步骤2.3.2.1和步骤2.3.2.2进行筛选的同时,筛选模块按步骤2.3.2.3监测候选框去冗余加速器是否停止工作:
2.3.2.1缓冲管理器寻找靶子候选框,方法为:
2.3.2.1.1筛选模块控制器接收到来比较模块控制器“第一大值完成”信号,发送“寻找靶子”信号到缓冲管理器;
2.3.2.1.2缓冲管理器接收到筛选模块控制器的“寻找靶子”信号;
2.3.2.1.3缓冲管理器判断缓冲管理器队列是否为空,如果为空,转2.3.2.1.3,等待接收最大值比较模块的最大值候选框,如果不为空,转2.3.2.1.4;
2.3.2.1.4缓冲管理器将缓冲管理器队列的队头数据发送到标记表,设队头数据ID值为id;
2.3.2.1.5缓冲管理器判断从标记表返回的id个寄存器的标记是否为0,如果是0,则此时缓冲管理器队列队头数据为靶子候选框数据,缓冲管理器将靶子候选框数据发送到交并比单元组和数据恢复模块,同时发送“得到靶子”信号到筛选模块控制器,转2.3.2.1.6步;如果从标记表返回的id位的是1或2,说明队头数据不是靶子候选框数据,转2.3.2.1.3步;
2.3.2.1.6筛选模块控制器接收到来自缓冲管理器的“得到靶子”信号,将“发送数据”信号发送到数据管理器A,执行2.3.2.2步;
2.3.2.2交并比单元组计算靶子候选框数据和数据管理器A中任意一个候选框数据的交并比,根据交并比更新候选框数据中的Score值并判断候选框数据是否冗余,方法为:
2.3.2.2.1数据管理器A接收筛选模块控制器的“发送数据”信号,将N组候选框二进制数据分成E组,第1~第E-1个集合中有S个候选框二进制数据,第E个集合中有N mod S个候选框二进制数据,初始化变量e=1;
2.3.2.2.2数据管理器A发送第e组数据到交并比单元;
2.3.2.2.3交并比单元组一方面从数据管理器A读取第e组候选框数据,一方面从缓冲管理器接收靶子候选框数据;
2.3.2.2.4交并比单元组的S个交并比单元的第一候选框输入端口同时从缓冲管理器接收一个靶子候选框数据,交并比单元组的第二候选框输入端口同时接收来自数据管理器A的第e组的S个候选框数据,S个交并比单元使用通过9级流水线计算靶子候选框数据与第e组的S个候选框数据的交并比;
2.3.2.2.5若e大于9且小于等于E+9,转2.3.2.2.6步;若e小于等于9,e=e+1,转2.3.2.2.2步;
2.3.2.2.6 S个交并比单元的第十六运算部件同时将计算结果,即第e-9组的更新了score值的S个候选框数据发送到数据管理器A,覆盖第e-9组原S个候选框数据;将S个冗余标记值发送到标记表;
2.3.2.2.7交并比单元组判断若e小于等于E,e=e+1,转2.3.2.2.2步;若e大于E且e小于等于E+9,e=e+1,转2.2.2.6步。若e等于E+10,交并比单元组向筛选模块控制器发送“一轮筛选结束”信号,转2.3.2.2.8步;
2.3.2.2.8筛选模块控制器接收交并比单元组发来的“一轮筛选结束”信号,发送“寻找靶子”信号到缓冲管理器,发送“更新数据”信号到数据管理器A,同时发送“一轮筛选结束”信号到最大值比较模块的比较模块控制器;
2.3.2.2.9数据管理器A接收到“更新数据”信号后,发送更新了score值的N组候选框数据到最大值比较模块的数据管理器B,转2.3.2.1.2步;
2.3.2.3筛选模块控制器监测标记表,判断候选框去冗余加速器是否停止工作,方法为:
2.3.2.3.1筛选模块控制器发送“监测”信号到标记表。
2.3.2.3.2标记表接收到筛选模块控制器的“监测”信号后,检查所有的寄存器是否全为2,若全为2,说明已完成冗余候选框筛选操作,发送“停止”信号到筛选模块控制器,转2.3.2.3.3;否则标记表不发送任何信号到筛选模块控制器,直接转2.3.2.3.3;
2.3.2.3.3筛选模块控制器接收标记表的“停止”信号,转第三步,否则转2.3.2.3.1继续监控;
2.3.3.数据恢复模块从筛选模块接收靶子候选框数据,将靶子候选框数据进行格式恢复,并将格式恢复后的score最大的候选框数据输送到下层卷积网络或作为结果输出,方法为:
2.3.3.1数据恢复模块判断是否接收到来自最大值缓冲模块的score值最大的候选框数据,若未接收到,转2.3.3.1继续等待;若接收到,将该候选框数据的100位二进制数据拆解,得到得分值score、坐标值x1、坐标值y1、坐标值x2、坐标值y2,转2.3.3.2;2.3.3.2数据恢复模块将6位整数得分值score缩小1000000倍,变回0到1之间的6位小数值;
2.3.3.3数据恢复模块将转化为得分值score和坐标值(x1,y1)(x2,y2)的格式的score值最大的候选框数据输送到下层卷积网络或作为结果输出;
第三步,候选框去冗余加速器终止工作,结束。
3.如权利要求1所述的目标检测中候选框去冗余方法,其特征在于所述阈值β满足0<β<1,常数值阈值θ满足β>θ>0。
4.如权利要求1所述的目标检测中候选框去冗余方法,其特征在于2.3.1.2.1步所述排序管理器采用并行全比较排序算法对队列组中C个队列的队头数据进行排序。
5.如权利要求1所述的目标检测中候选框去冗余方法,其特征在于2.1.2步所述数据预处理模块将N组候选框封装为N个100位的二进制数据的方法是:第80到第99位存贮用20位二进制表示的得分值score,第64到第79位存贮用16位二进制表示的坐标值x1,其中第48到第63位存贮用16位二进制表示的y1,第32到第47位存贮用16位二进制表示的x2,第16到第31位存贮用16位二进制表示的y2,第0到第16位存贮用16位二进制表示的索引值ID。
6.如权利要求1所述的目标检测中候选框去冗余方法,其特征在于2.3.3.1步所述数据恢复模块将候选框数据的100位二进制数据拆解的方法是:将第80到第99位的20位二进制转换为6位整数得分值score,第64到第79位的16位二进制转换为坐标值x1,第48到第63位的16位二进制转换为坐标值y1,第32到第47位的16位二进制转换为坐标值x2,第16到第31位的16位二进制转换为坐标值y2。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010426658.4A CN111582226B (zh) | 2020-05-19 | 2020-05-19 | 目标检测中候选框去冗余方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010426658.4A CN111582226B (zh) | 2020-05-19 | 2020-05-19 | 目标检测中候选框去冗余方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111582226A true CN111582226A (zh) | 2020-08-25 |
CN111582226B CN111582226B (zh) | 2022-09-16 |
Family
ID=72110945
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010426658.4A Active CN111582226B (zh) | 2020-05-19 | 2020-05-19 | 目标检测中候选框去冗余方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111582226B (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112464769A (zh) * | 2020-11-18 | 2021-03-09 | 西北工业大学 | 一种基于一致多阶段检测的高分遥感图像目标检测方法 |
CN112784977A (zh) * | 2021-01-15 | 2021-05-11 | 北方工业大学 | 一种目标检测卷积神经网络加速器 |
CN115546009A (zh) * | 2022-11-29 | 2022-12-30 | 合肥中科类脑智能技术有限公司 | 非极大值抑制算法的优化方法、装置以及设备、存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20180240072A1 (en) * | 2017-02-17 | 2018-08-23 | Walmart Apollo, Llc | Automated resume screening |
CN109886128A (zh) * | 2019-01-24 | 2019-06-14 | 南京航空航天大学 | 一种低分辨率下的人脸检测方法 |
CN110837831A (zh) * | 2019-10-31 | 2020-02-25 | 中国石油大学(华东) | 基于改进ssd网络的候选框生成方法 |
-
2020
- 2020-05-19 CN CN202010426658.4A patent/CN111582226B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20180240072A1 (en) * | 2017-02-17 | 2018-08-23 | Walmart Apollo, Llc | Automated resume screening |
CN109886128A (zh) * | 2019-01-24 | 2019-06-14 | 南京航空航天大学 | 一种低分辨率下的人脸检测方法 |
CN110837831A (zh) * | 2019-10-31 | 2020-02-25 | 中国石油大学(华东) | 基于改进ssd网络的候选框生成方法 |
Non-Patent Citations (1)
Title |
---|
余飞等: "多级联卷积神经网络人脸检测", 《五邑大学学报(自然科学版)》 * |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112464769A (zh) * | 2020-11-18 | 2021-03-09 | 西北工业大学 | 一种基于一致多阶段检测的高分遥感图像目标检测方法 |
CN112784977A (zh) * | 2021-01-15 | 2021-05-11 | 北方工业大学 | 一种目标检测卷积神经网络加速器 |
CN112784977B (zh) * | 2021-01-15 | 2023-09-08 | 北方工业大学 | 一种目标检测卷积神经网络加速器 |
CN115546009A (zh) * | 2022-11-29 | 2022-12-30 | 合肥中科类脑智能技术有限公司 | 非极大值抑制算法的优化方法、装置以及设备、存储介质 |
CN115546009B (zh) * | 2022-11-29 | 2023-02-03 | 合肥中科类脑智能技术有限公司 | 非极大值抑制算法的优化方法、装置以及设备、存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN111582226B (zh) | 2022-09-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111582226B (zh) | 目标检测中候选框去冗余方法 | |
Chen et al. | Masklab: Instance segmentation by refining object detection with semantic and direction features | |
CN108596053B (zh) | 一种基于ssd和车辆姿态分类的车辆检测方法和系统 | |
Knight | A computer method for calculating Kendall's tau with ungrouped data | |
US4513440A (en) | Hardware median filter | |
CN108010045A (zh) | 基于orb的视觉图像特征点误匹配提纯方法 | |
JPH04312184A (ja) | 画像処理システムのエッジ検出方法及びその装置 | |
CN111327949B (zh) | 一种视频的时序动作检测方法、装置、设备及存储介质 | |
CN115937655B (zh) | 多阶特征交互的目标检测模型及其构建方法、装置及应用 | |
CN113642571B (zh) | 一种基于显著性注意力机制的细粒度图像识别方法 | |
US5974411A (en) | N-way processing of bit strings in a dataflow architecture | |
CN103226464A (zh) | 一种归并排序结构 | |
Zhang et al. | A raw image-based end-to-end object detection accelerator using hog features | |
Wasala et al. | Real-time HOG+ SVM based object detection using SoC FPGA for a UHD video stream | |
EP0132314B1 (en) | Window-addressable memory circuit | |
Mao et al. | Ship detection for SAR imagery based on deep learning: A benchmark | |
Caponetti et al. | A genetic approach to edge detection | |
CN108764182A (zh) | 一种优化的用于人工智能的加速方法和装置 | |
JPS6142031A (ja) | ソ−ト処理装置 | |
CN116152517A (zh) | 一种改进的orb特征提取方法 | |
Yamashita et al. | Facial point detection using convolutional neural network transferred from a heterogeneous task | |
CN115063831A (zh) | 一种高性能行人检索与重识别方法及装置 | |
JPS6337481A (ja) | グレイスケ−ル画像処理において変換を行なうための装置及び方法 | |
CN112825118B (zh) | 旋转不变性人脸检测方法、装置、可读存储介质及设备 | |
Yang et al. | Real-time DeepLabv3+ for pedestrian segmentation |
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 |