具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合附图对本发明的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
考虑到诸如非极大值抑制算法等目标检测模型在从多个候选框中确定最优框的过程复杂,不仅对硬件水平要求较高,而且耗时较长,为改善此问题,本发明实施例提供了一种目标检测方法、装置及系统,该技术可应用于目标检测场合中,以下对本发明实施例进行详细介绍。
实施例一:
首先,参照图1来描述用于实现本发明实施例的目标检测方法、装置及系统的示例电子设备100。
如图1所示的一种电子设备的结构示意图,电子设备100包括一个或多个处理器102、一个或多个存储装置104、输入装置106、输出装置108以及图像采集装置110,这些组件通过总线系统112和/或其它形式的连接机构(未示出)互连。应当注意,图1所示的电子设备100的组件和结构只是示例性的,而非限制性的,根据需要,所述电子设备也可以具有其他组件和结构。
所述处理器102可以采用数字信号处理器(DSP)、现场可编程门阵列(FPGA)、可编程逻辑阵列(PLA)中的至少一种硬件形式来实现,所述处理器102可以是中央处理单元(CPU)或者具有数据处理能力和/或指令执行能力的其它形式的处理单元中的一种或几种的组合,并且可以控制所述电子设备100中的其它组件以执行期望的功能。
所述存储装置104可以包括一个或多个计算机程序产品,所述计算机程序产品可以包括各种形式的计算机可读存储介质,例如易失性存储器和/或非易失性存储器。所述易失性存储器例如可以包括随机存取存储器(RAM)和/或高速缓冲存储器(cache)等。所述非易失性存储器例如可以包括只读存储器(ROM)、硬盘、闪存等。在所述计算机可读存储介质上可以存储一个或多个计算机程序指令,处理器102可以运行所述程序指令,以实现下文所述的本发明实施例中(由处理器实现)的客户端功能以及/或者其它期望的功能。在所述计算机可读存储介质中还可以存储各种应用程序和各种数据,例如所述应用程序使用和/或产生的各种数据等。
所述输入装置106可以是用户用来输入指令的装置,并且可以包括键盘、鼠标、麦克风和触摸屏等中的一个或多个。
所述输出装置108可以向外部(例如,用户)输出各种信息(例如,图像或声音),并且可以包括显示器、扬声器等中的一个或多个。
所述图像采集装置110可以拍摄用户期望的图像(例如照片、视频等),并且将所拍摄的图像存储在所述存储装置104中以供其它组件使用。
示例性地,用于实现根据本发明实施例的目标检测方法、装置及系统的示例电子设备可以被实现为诸如摄像机、抓拍机、智能手机、平板电脑等智能终端。
实施例二:
参照图2所示的一种目标检测方法流程图,具体包括如下步骤:
步骤S202,获取待检测图像对应的多个初级候选框;其中,初级候选框用于表征待检测图像中目标对象的初步估测位置。
本实施例中的初级候选框又可称为检测窗口。每个初级候选框均可能包含目标对象的一部分,同一目标对象的多个初级候选框之间可能交叉重叠,目标检测的最终目的是从多个初级候选框中找到最可能完整包含目标对象的一个优选框。
在实际应用中,可以通过卷积神经网络CNN获取待检测图像对应的多个初级候选框;其中,卷积神经网络用于对待检测图像中目标对象进行初步检测,并生成多个用于表征目标对象的初步估测位置的初级候选框。上述初级候选框的获取过程可以是逐一获取,诸如每当卷积神经网络生成一个初级候选框,就随之获取一个;也可以是批量获取,诸如等卷积神经网络将所有初级候选框均生成后,统一获取。
具体实施时,可以采用卷积神经网络构成分类器,经分类器对待检测图像进行分类识别,诸如,通过滑动窗口的方式提取待检测图像的特征,由于是采用滑动窗口的方式实现,对于同一目标对象可能对应有多个检测窗口(也即,初级候选框),每个检测窗口可对应一个分数,该分数又可称为置信度,表示该检测窗口包含完整的目标对象的概率;诸如,目标对象为某张人脸,经分类器检测后,表征包含该人脸的窗口有3个,分别为A窗口、B窗口和C窗口;其中,A窗口基本包含该人脸,置信度为0.95,B窗口仅包含大部分人脸,置信度为0.73,C窗口仅包含半张人脸,置信度为0.5。
步骤S204,根据每个初级候选框的框信息,从多个初级候选框中确定二级候选框;其中,二级候选框的数量少于初级候选框的数量。可以理解的是,每个初级候选框都具有框信息,框信息可以包括位置信息和/或置信度。位置信息具体为初级候选框在待检测图像上的位置,通常可以采用坐标形式表示,在具体实现时,位置信息可以包括初级候选框的两个对角顶点的横纵坐标。框信息可以采用数组的形式表征,诸如表示为(x,y,h,w,score);其中,xy表示初级候选框的一个顶点(诸如左上顶点)的横纵坐标,hw表示初级候选框的另一个顶点(诸如右下顶点)的横纵坐标,xy顶点和hw顶点为对角顶点,score表示置信度。
根据各个初级候选框的框信息,可以对初级候选框进行预处理,也即过滤初级候选框,从中筛选确定数量更少的二级候选框,诸如,将置信度较低的初级候选框丢弃;又诸如,将邻近的初级候选框进行初步归并,降低表征同一个目标对象位置的初级候选框的数量等。
步骤S206,将确定的二级候选框输至目标检测模型,以使目标检测模型根据二级候选框确定待检测图像上的目标框;其中,目标框用于表征待检测图像中目标对象的最终估测位置。在具体实施时,目标检测模型可以包括非极大值抑制(Non-MaximumSuppression,NMS)算法。NMS算法主要目的是消除多余(诸如交叉重复)的候选框,最终确定目标对象的最佳检测位置。
由于现有的目标检测模型需要对N个初级候选框进行检测并从中确定最优框(目标框),计算复杂度为N*N;上述方法从N个初级候选框中筛选出M个二级候选框(N大于M),目标检测模型只需要对M个初级候选框进行检测即可,计算复杂度仅为M*M;由于N大于M,有效降低了目标检测模型的计算难度和计算耗时。假设M=1/3N,则M*M=1/9N*N,由此可以看出,如果将输入至目标检测模型的候选框数量降低至1/3,则目标检测算法的目标检测时长能够显著降低至1/9,极大提升了目标检测算法的检测速度,同时也降低了对目标检测算法所依赖的硬件的要求,诸如可以降低实现目标检测算法的CPU的内存带宽。
在实际应用中,当上述步骤S202为通过卷积神经网络获取待检测图像对应的多个初级候选框时,上述步骤S204可以在卷积神经网络将初级候选框通过数据通路传输给目标检测模型的过程中执行,以在初级候选框的传输过程中即可确定二级候选框,并将二级候选框输给目标检测模型,将非二级候选框直接丢弃。这种方式可以较好地降低处理时间,如果确定二级候选框的时间低于初级候选框的传输时间,则本实施例中确定二级候选框的步骤几乎没有给原有的卷积神经网络向目标检测模型输送初级检测框的过程中带来任何多余的时间成本,在没有付出多余时间成本的基础上却有效降低了输入给目标检测模型的初级候选框数量,极大降低了目标检测模型的检测时间,提升了目标检测效率。此外,在卷积神经网络将初级候选框通过数据通路传输给目标检测模型的过程中确定二级候选框的方式,无需专门读取初级候选框,并为多个初级候选框专设于单独的存储空间进行单独处理,这种无需存取数据的方式一方面节省了存储空间,另一方面也提升了数据处理效率。
本发明实施例提供的上述目标检测方法,当获取到待检测图像对应的多个初级候选框时,能够从多个初级候选框中确定二级候选框,然后再将二级候选框输至目标检测模型确定表征待检测图像中目标对象的最终估测位置的目标框。与现有技术中目标检测模型需要直接从多个初级候选框中确定目标框,计算复杂且用时较长相比,本实施例提供的上述方式能够降低输入至目标检测模型的候选框数量,有效提升了目标检测速度。
为便于理解,给出了以下三种从多个初级候选框中确定二级候选框的具体实施方式:
方式一:阈值过滤
在本方式中,框信息包括置信度,根据每个初级候选框的框信息,从多个初级候选框中确定二级候选框的步骤,参照如下执行:
(1)将每个初级候选框的置信度分别与预设置信阈值进行比较。
(2)将置信度高于预设置信阈值的初级候选框确定为二级候选框。
假设待检测图像上的同一目标对象(例如,某张人脸)对应有五个初级候选框,各个初级候选框的置信度分别为0.98、0.75、0.53、0.42和0.32;设定预设置信阈值为0.5,则将置信度为0.98、0.75和0.53的三个初级候选框确定为二级候选框,将置信度为0.42和0.32的两个初级候选框认为不符合要求而丢弃。
通过上述预先过滤低置信度的初级候选框的方式,可有效降低目标检测模型(诸如NMS算法)所需处理的候选框数量,减除了目标检测模型对这些明显无用的候选框的处理过程,加快了目标检测模型的检测速度。
本实施例进一步给出了一种阈值过滤的具体实现方式,可以在卷积神经网络在给目标检测模型传输初级候选框的过程中对位于数据通路上的初级候选框进行阈值过滤处理。可以理解的是,卷积神经网络是逐一生成初级候选框的,向数据通路上输入待处理初级候选框也是逐一进行的,在实际应用中,可以采用流水处理方法,也即,每向数据通路输入一个待处理初级候选框,就对该待处理初级候选框进行即时处理,也即通过判断该待处理初级候选框的阈值是否高于预设置信阈值,如果高于预设置信阈值,则直接将该初级候选框作为二级候选框通过数据通路输入给目标检测模型;如果低于预设置信阈值,则将该初级候选框直接丢弃。
通过上述在卷积神经网络在给目标检测模型传输初级候选框的过程中进行流水式的阈值处理方式,在数据传输过程中即可完成阈值筛选,处理时间极短,无需专门耗费额外的时间成本,当处理时间低于传输时间时,这种处理方式几乎没有带来任何多余的时间成本,在没有付出多余时间成本的基础上却有效降低了输入给目标检测模型的候选框数量,进而极大降低了目标检测模型的检测时间,提升了目标检测效率。此外,这种流水处理方式,无需专门读取多个初级候选框并为多个初级候选框专设在单独的存储空间进行单独处理,这种无需存取数据的方式一方面节省了存储空间,另一方面也提升了数据处理效率。
方式二:邻近抑制
在本方式中,框信息包括置信度和坐标信息;根据每个初级候选框的框信息,从多个初级候选框中确定二级候选框的步骤,参照如下执行:
(1)将多个初级候选框排列形成框序列,将框序列中的第一个初级候选框作为当前框,将排在当前框后的下一个初级候选框作为比较框。
具体的,可以按照多个初级候选框的生成顺序依次排列;其中,初级候选框是由卷积神经网络对待检测图像进行初步检测时生成的。以卷积神经网络构成的分类器为例,采用滑动窗口检测的方式生成多个初级候选框,通常相邻的初级候选框表示同一个目标对象,这种按照初级候选框的生成顺序依次排列形成的框序列,有利于后续简便快捷地判断候选框是否邻近。
(2)根据当前框的坐标信息和比较框的坐标信息,判断当前框与比较框在待检测图像中的位置是否邻近。
本实施例给出了一种邻近判断的具体实现方式:基于当前框的坐标信息和比较框的坐标信息,计算当前框和比较框的覆盖率;判断覆盖率是否高于预设覆盖阈值;如果是,确定当前框与比较框在待检测图像中的位置邻近。具体的,具体的,当前框与比较框的覆盖率(又可称为交叠率)可以采用IOU(Intersection-over-Union,交并比)计算方式,其中,IOU=交集面积/并集面积;也即,覆盖率等于两个框交集的面积与两个框并集的面积的比值;如果两个框完全重叠,则覆盖率为1。当前框和比较框的交集面积和并集面积可以根据当前框与比较框的坐标信息确定。预设覆盖阈值诸如可以设定为0.5,如果两个框有一半面积重合,则认为这个两个框相邻。
(3)如果不邻近,将当前框确定为二级候选框,并将当前框从框序列中剔除,将比较框确定为框序列中新的当前框。
如果经判断确定两个框不邻近,这两个框有可能在待检测图像中对应不同的目标对象,因此可以先将当前框确定为二级候选框,然后将当前框(框序列中的原第一个框)从框序列中剔除,此时排在原当前框后的比较框(框序列中的原第二个框)则成为框序列中的新第一个框。
(4)如果邻近,比较当前框的置信度与比较框的置信度,将当前框与比较框中置信度低的初级候选框从框序列中剔除,置信度高的初级候选框确定为框序列中新的当前框。
如果经判断确定两个框邻近,这两个框有可能在待检测图像中对应同一目标对象,因此可以采用邻近抑制的方式将同一目标对象的多个初级候选框初步归并,归并的基准是保留邻近框中置信度高的框,也即将高置信度的初级候选框确定为需要诸如NMS算法等目标检测模型处理的二级候选框,以降低目标检测模型所需处理的框数量,提升目标检测速度。
(5)重复执行上述步骤,直至框序列无初级候选框。也即,重复执行步骤(1)~(4),逐一对框序列中的初级候选框进行处理,直至框序列中所有初级候选框均处理完毕(即均脱离框序列),在处理过程中,被确定为二级候选框的初级候选框从框序列中剔除后,可直接输入至诸如NMS算法等目标检测模型,以进一步处理确定可较好表征目标对象位置的最优框(目标框);没有被确定为二级候选框的初级候选框被认为是无用框,从框序列中剔除后可以直接丢弃,减除了目标检测模型对无用框的处理过程。
本实施例进一步给出了一种邻近抑制的具体实现方式,可以在卷积神经网络与目标检测模型之间的数据通路上设置缓存空间;其中,缓存空间用于存储当前框;当卷积神经网络向数据通路输入一个待处理初级候选框时,判断缓存空间内是否存储有当前框;如果否,将待处理初级候选框存储在缓存空间,以作为当前框;如果是,将待处理初级候选框排设在当前框后,以作为比较框。应当注意的是,从卷积神经网络向数据通路输入的待处理初级候选框遇到缓存空间即停留,以等待处理,而无法越过缓存空间直接输送给目标检测模型。对待处理初级候选框的处理结果通常有两种,一种为存入缓存空间;另一种为直接丢失。
可以理解的是,卷积神经网络是逐一生成待处理初级候选框的,向数据通路上输入待处理初级候选框也是逐一进行的,在实际应用中,可以采用流水处理方法,也即,每向数据通路输入一个待处理初级候选框,就对该待处理初级候选框进行即时处理。
在一种实施方式中,输入速度不高于处理速度,也即,输入速度与处理速度保持同步,或者,输入速度低于处理速度。在这种情况下,数据通路上通常仅有一个初级候选框。也即,存储在缓存空间内的当前框。
在另一种实施方式中,输入速度高于处理速度,在这种情况下,数据通路上可能有多个待处理的初级候选框,多个待处理的初级候选框按照输入顺序(也等同于生成顺序)排列在数据通路上,缓存空间内存储的当前框即为多个待处理的初级候选框的第一个初级候选框。
此外,在具体实施时,卷积神经网络生成初级候选框的生成速度与将初级候选框作为待处理初级候选框向数据通路输入的输入速度可以设置相同或者不同。生成速度与输入速度相同时,也即卷积神经网络每生成一个初级候选框,就直接向数据通路输入一个初级候选框;生成速度与输入速度不同时,如果生成速度高于输入速度,可以将还未输入的初级候选框先按生成顺序在数据通路的入口处排列,以等待按序输入并处理。
应当注意的是,本实施例所提供的框序列仅意为多个初级候选框按照生成顺序排列,具体可以为动态流水形式,形成框序列的时机可能会持续一定时长,诸如,该时长可以为卷积神经网络从生成第一个初级候选框开始,至生成最后一个初级候选框截止,生成的初级候选框可按照生成顺序而动态排列,以形成框序列,因此并不应当局限理解为是将所有初级候选框都获取后再进行排列。此外,框序列中所包含的各个初级候选框的位置并不可局限理解为紧密相邻,在实际应用中,可以紧密相邻,也可以两个相邻的初级候选框之间相距一定间隔。如上所述,如果卷积神经网络生成初级候选框的生成速度高于将初级候选框作为待处理初级候选框向数据通路输入的输入速度,该框序列包括排列在数据通路的入口处的初级候选框,以及在数据通路上的待处理初级候选框。其中,数据通路上缓存空间内的当前框,作为该框序列的第一个初级候选框。
基于缓存空间的设置,在将当前框从框序列中剔除时,具体为将当前框从缓存空间输出,以使该当前框沿数据通路传输至目标检测模型;将所述比较框确定为所述框序列中新的当前框时,具体为将比较框存储至缓存空间,以作为新的当前框,然后再与后续输入的框进行邻近抑制处理。通过这种方式,在数据通路上对卷积神经网络输入的待处理初级候选框逐一处理,将符合要求的初级候选框传输给目标检测模型,不符合要求的初级候选框丢弃。
通过采用上述基于初级候选框的生成顺序在数据通路上进行流水式处理的方式,不仅能够对输入给目标检测模型的初级候选框进行预先筛选处理,过滤掉无用框,以降低目标检测模型(诸如,NMS算法)所需处理的候选框数量,而且本实施例提供的上述流水式处理的方式,处理速度快捷高效,只需要在卷积神经网络向目标检测模型输入初级候选框的过程中即可对初级候选框进行筛选处理,处理时间较短,无需专门耗费额外的处理时间,当处理速度高于输入速度时,这种处理方式几乎没有带来任何多余的时间成本,在没有付出多余时间成本的基础上却有效降低了输入给目标检测模型的候选框数量,进而极大降低了目标检测模型的检测时间,提升了目标检测效率。此外,这种流水处理方式,无需专门读取多个初级候选框并为多个初级候选框专设在单独的存储空间进行单独处理,这种无需存取数据的方式一方面节省了存储空间,另一方面也提升了数据处理效率。
上述邻近抑制方式主要利用了卷积神经网络在产生候选框数组的过程中,紧邻的候选框很有可能表示同一个目标对象,因而这些紧邻的候选框之间往往会相互覆盖,给NMS算法等目标检测模型带来冗余计算,本方式可以预先将邻近候选框进行筛选及归并,在多个邻近候选框中仅保留高置信度的候选框,有效降低了表示同一目标对象的邻近候选框的数量,由此大大降低了之后全局性NMS算法的对候选框的计算处理时间。此外,本方式利用卷积神经网络按照滑动窗口方式依次生成的初级候选框可能表示同一目标对象的原理,采用按照候选框的生成顺序组成框序列的方式进行线性流水式处理,对初级候选框进行初步邻近抑制,仅需要对框序列中排序相邻的初级候选框进行比较即可,计算简单快捷,与NMS算法需要置信度排序以及多次“遍历-消除”等复杂迭代过程相比,本方式计算简单,所需耗时极短,也即在较短时间内即可降低待NMS算法处理的候选框的数量,显著降低NMS算法的检测用时。
方式三:阈值过滤与邻近抑制相结合
在本方式中,在形成框序列后,可以首先将低置信度的初级候选框剔除,然后再对框序列中预留的初级候选框进行方式二所提供的邻近抑制处理。这种方式能够进一步降低从多个初级候选框中确定二级候选框的筛选时间,提升目标检测速度。
在具体实现时,同样可以在卷积神经网络在给目标检测模型传输初级候选框的过程中,对位于数据通路上的初级候选框进行阈值过滤与邻近抑制处理,以提升处理效率。具体的处理方式可参照方式一和方式二中的相关内容实现,在此不再赘述。
在实际应用中,可以根据需求而灵活采用方式一至方式三中的任一种。通过上述方式,可以用时较短地对多个初级候选框进行初步筛选处理,从中筛选得到二级候选框,再将二级候选框输入至诸如NMS算法等目标检测模型中,由于降低了所需目标检测模型处理的候选框数量,不仅提升了目标检测速度,同时也降低了对目标检测所依赖的硬件的要求。
实施例三:
基于前述实施例,本实施例给出了一种目标检测方法的硬件应用示例,以目标检测模型为NMS算法为例进行说明。参见图3所示的一种目标检测设备的结构示意图,该设备包括CNN初检测模块、NMS加速模块,以及NMS计算模块。以上三类模块均可以采用硬件芯片实现,诸如NMS可加速模块、CNN初检测模块均可采用FPGA芯片实现,NMS计算模块可采用带有DDR(Double Data Rate双倍速内存)的CPU(Central Processing Unit,中央处理器)实现等。
具体的,在目标检测设备中,CNN初检测模块用于对待检测图像进行初步检测得到的初级候选框,并将初级候选框输出。
NMS加速模块设置在CNN初检测模块和NMS计算模块的数据连接通路上,用于对CNN初检测模块输出的多个初级候选框进行阈值过滤和/或邻近抑制等预处理以确定二级候选框,然后将二级候选框发送给NMS计算模块,将不符合要求的初级候选框直接丢弃。
NMS计算模块用于基于NMS算法,对接收的二级候选框进行检测处理,确定可以表征待检测图像中目标对象的最终估测位置。
在硬件实现中,由于NMS加速模块设置在CNN初检测模块和NMS计算模块的数据通路上,可以采用线性流水方式对CNN初检测模块输出的初级候选框进行筛选处理,以下结合图4和图5对NMS加速模块的硬件实现原理进一步阐述。
参见图4所示的一种NMS加速模块的阈值过滤流程图,示出如下步骤:
步骤S402,输入候选框。也即,输入前述实施例中的初级候选框。该候选框来自于CNN初检测模块对待检测模块进行初步检测后的输出。
步骤S404,判断候选框的置信度是否高于预设置信阈值;如果是,执行步骤S406;如果否,执行步骤S408:丢弃候选框,并再执行步骤S402。
步骤S406,输出候选框。也即,输出前述实施例中的二级候选框,具体将候选框输出给NMS计算模块。
在硬件具体实现时,NMS加速模块可以设置有缓存空间,将CNN初检测模块输出的候选框直接输入至缓存空间,在图4中示出了一次仅输入一个候选框的实现方式,NMS加速模块对缓存区的候选框进行阈值过滤处理,大于阈值的候选框从缓存区输出至NMS计算模块,低于阈值的候选框可以直接丢弃,然后再向缓存区输入下一个候选框。
参见图5所示的一种NMS加速模块的邻近抑制流程图,图5中的NMS加速模块内可设置仅能缓存一个候选框的缓存空间,每次向NMS加速模块输入一个候选框时,如果该缓存空间为空,则将输入的候选框放入缓存空间中;如果缓存空间内已缓存有候选框,则将在缓存空间内缓存的候选框(以下简称缓存框,也相当于前述实施例中的当前框)和待要输入至该缓存空间的输入框(以下简称输入框,也相当于前述实施例中的比较框)进行覆盖率计算,如果两者的覆盖率小于或等于阈值,则把缓存框输出缓存空间,具体输出给NMS计算模块;把输入框存入缓存空间中,形成新的缓存框;如果两者的覆盖率大于阈值,则把两者中置信度较高的框存在缓存空间内,另一个直接丢弃。为便于理解,上述步骤可以参见图5所示:
步骤S502,输入候选框,也即,输入前述实施例中的初级候选框。该候选框来自于CNN初检测模块对待检测模块进行初步检测后的输出。
步骤S504,判断缓存区内是否有缓存框;如果是,执行步骤S506,如果否,执行步骤S514:将输入的候选框作为缓存框缓存入缓存区,然后再执行步骤S502。其中,本实施例中的缓存框也即实施例二中框序列的第一个初级候选框,即为当前框。
步骤S506,计算输入的候选框与缓存框的覆盖率。其中,本实施例中的输入的候选框也即实施例二中框序列的第二个初级候选框,即为比较框。
步骤S508,判断覆盖率是否高于预设覆盖阈值;如果是,执行步骤S510,如果否,执行步骤S512;
步骤S510,将输入的候选框与缓存框中置信度较高的框作为新的缓存框,丢弃置信度较低的框。
步骤S512,输出原缓存框,将输入的候选框作为新缓存框缓存在缓存区内。
在实际应用中,NMS加速模块可以单独使用阈值过滤方式筛选初级候选框,也可以单独使用邻近抑制方式筛选初级候选框,当然也可以采用阈值过滤与邻近抑制相结合的方式筛选初级候选框,在采用阈值过滤与邻近抑制相结合的方式筛选初级候选框的过程中,可以预先对输入的候选框进行阈值过滤,然后再对过滤后的候选框执行邻近抑制操作。
通过NMS加速模块采用阈值过滤和/或邻近抑制等预处理方式,能够在CNN初检测模块向NMS计算模块发送候选框的过程中对候选框进行过滤,降低NMS计算模块所需处理的候选框数量,较好地加快了NMS计算模块的处理速度,而且NMS加速模块设置在CNN初检测模块与NMS计算模块的数据通路上,只需采用线性流水方式对CNN初检测模块输出的候选框进行逐一过滤处理即可,所需计算量很小,耗时极短,当处理速度高于输入速度时,这种处理方式几乎没有带来任何多余的时间成本,在没有付出多余时间成本的基础上却有效降低了输入给目标检测模型的候选框数量,与现有技术中NMS计算模块需要对CNN初检测模块输出的所有候选框进行复杂度为N*N的计算相比,上述NMS加速模块能够在较短时间内降低N的数量,从而显著降低NMS计算模块的运算复杂度以及检测时间,提升目标检测速度。
实施例四:
对于实施例二中所提供的目标检测方法,本发明实施例提供了一种目标检测装置,参见图6所示的一种目标检测装置的结构框图,包括:
初级框获取单元602,用于获取待检测图像对应的多个初级候选框;其中,初级候选框用于表征待检测图像中目标对象的初步估测位置,每个初级候选框都对应有框信息;
二级框确定单元604,用于根据每个初级候选框的框信息,从多个初级候选框中确定二级候选框;其中,二级候选框的数量少于初级候选框的数量;
检测单元606,用于将确定的二级候选框输至目标检测模型,以使目标检测模型根据二级候选框确定待检测图像上的目标框;其中,目标框用于表征待检测图像中目标对象的最终估测位置。在具体实现时,目标检测模型包括非极大值抑制算法。
本发明实施例提供的上述目标检测装置,当获取到待检测图像对应的多个初级候选框时,能够从多个初级候选框中确定二级候选框,然后再将二级候选框输至目标检测模型确定表征待检测图像中目标对象的最终估测位置的目标框。与现有技术中目标检测模型需要直接从多个初级候选框中确定目标框,计算复杂且用时较长相比,本实施例提供的上述方式能够降低输入至目标检测模型的候选框数量,有效提升了目标检测速度。
在一种实施方式中,框信息包括置信度,二级框确定单元用于:
将每个初级候选框的置信度分别与预设置信阈值进行比较;
将置信度高于预设置信阈值的初级候选框确定为二级候选框。
在另一种实施方式中,框信息包括置信度和坐标信息;
二级框确定单元用于:
(1)将多个初级候选框排列形成框序列,将框序列中的第一个初级候选框作为当前框,将排在当前框后的下一个初级候选框作为比较框。
在具体实施时,上述装置还包括:缓存设置模块,用于在卷积神经网络与目标检测模型之间的数据通路上设置缓存空间;其中,缓存空间用于存储当前框;判断模块,用于当卷积神经网络向数据通路输入一个待处理初级候选框时,判断缓存空间内是否存储有当前框;当前框确定模块,用于在判断模块的结果为否时,将待处理初级候选框存储在缓存空间,以作为当前框;比较框确定模块,用于在判断模块的结果为是时,将待处理初级候选框排设在当前框后,以作为比较框。具体的,可以将当前框从缓存空间输出,以使当前框沿数据通路传输至目标检测模型;将比较框存储至缓存空间,以作为新的当前框。基于此,在具体实现(1)时,可以按照多个初级候选框的生成顺序依次排列;其中,初级候选框是由卷积神经网络对待检测图像进行初步检测时生成的。将框序列中的第一个初级候选框作为当前框,将排在当前框后的下一个初级候选框作为比较框之前,二级框确定单元还用于:分别比较每个初级候选框的置信度与预设置信阈值,将置信度低于预设置信阈值的初级候选框从框序列中剔除。
(2)根据当前框的坐标信息和比较框的坐标信息,判断当前框与比较框在待检测图像中的位置是否邻近;在具体实现时,可以基于当前框的坐标信息和比较框的坐标信息,计算当前框和比较框的覆盖率;判断覆盖率是否高于预设覆盖阈值;如果是,确定当前框与比较框在待检测图像中的位置邻近。
(3)如果不邻近,将当前框确定为二级候选框,并将当前框从框序列中剔除,将比较框确定为框序列中新的当前框;
(4)如果邻近,比较当前框的置信度与比较框的置信度,将当前框与比较框中置信度低的初级候选框从框序列中剔除,置信度高的初级候选框确定为框序列中新的当前框;
(5)重复执行上述步骤,直至框序列无初级候选框。
在具体实施时,上述初级框获取单元用于:通过卷积神经网络获取待检测图像对应的多个初级候选框;其中,卷积神经网络用于对待检测图像中目标对象进行初步检测,并生成多个用于表征目标对象的初步估测位置的初级候选框。
本实施例所提供的装置,其实现原理及产生的技术效果和前述实施例相同,为简要描述,装置实施例部分未提及之处,可参考前述方法实施例中相应内容。
实施例五:
本实施例提供了一种目标检测系统,该系统包括:图像采集装置、处理器和存储装置;
图像采集装置,用于采集待检测图像;
存储装置上存储有计算机程序,计算机程序在被处理器运行时执行如前述方法实施例所提供的目标检测方法。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
进一步,本实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器运行时执行上述前述方法实施例所提供的目标检测方法的步骤。
本发明实施例所提供的目标检测方法、装置及系统的计算机程序产品,包括存储了程序代码的计算机可读存储介质,所述程序代码包括的指令可用于执行前面方法实施例中所述的方法,具体实现可参见方法实施例,在此不再赘述。
另外,在本发明实施例的描述中,除非另有明确的规定和限定,术语“安装”、“相连”、“连接”应做广义理解,例如,可以是固定连接,也可以是可拆卸连接,或一体地连接;可以是机械连接,也可以是电连接;可以是直接相连,也可以通过中间媒介间接相连,可以是两个元件内部的连通。对于本领域的普通技术人员而言,可以具体情况理解上述术语在本发明中的具体含义。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是:以上所述实施例,仅为本发明的具体实施方式,用以说明本发明的技术方案,而非对其限制,本发明的保护范围并不局限于此,尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,其依然可以对前述实施例所记载的技术方案进行修改或可轻易想到变化,或者对其中部分技术特征进行等同替换;而这些修改、变化或者替换,并不使相应技术方案的本质脱离本发明实施例技术方案的精神和范围,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以所述权利要求的保护范围为准。