一种图像处理方法与图像处理装置与流程

文档序号:11144633阅读:418来源:国知局
一种图像处理方法与图像处理装置与制造工艺

本发明设计图像处理领域,尤其涉及一种图像处理方法与图像处理装置。



背景技术:

在图像处理领域,图像中目标的检测识别一般由分区和分类两步操作来实现,如图1所示:图像分区模型接受输入的图像,并把输入的图像划分成大小不同的区域;图像分类模型采用卷积神经网络或其它分类算法,通过层次化结构不断提取图像每个区域的特征,最终识别出目标物体。

在进行图像的目标检测识别过程中,分区和分类操作对于处理器的性能要求有所不同,现阶段的技术中一般采用异构平台进行图像识别。例如,采用中央处理器(CPU,Central Processing Unit)+图形处理器(GPU,Graphics Processing Unit)异构平台进行图像识别。GPU是一种易编程、高性能的处理器。与主要用于数据计算和指令解读的CPU不同,GPU专为执行复杂的数学和几何计算所设计,主要用于图形图像处理。为了充分的发挥CPU的计算性能以及GPU的图像处理性能,在图像识别时采用CPU+GPU异构平台,先使用CPU进行图像分区,然后再采用GPU来进行图像分类。

但是异构平台中,不同类型的处理器的内存相互独立,例如在CPU+GPU异构平台中,CPU有独立的CPU内存,GPU也有独立的GPU内存(也可以称为显存)。因此,采用异构平台进行目标检测识别时,异构处理器之间(如CPU与GPU之间)需要不断的交互数据,大量的数据交互操作会造成较长的时延,影响整个异构平台的检测性能。



技术实现要素:

本发明提供了一种图像处理方法,用于提升图像处理的性能。本发明还提供了相关的图像处理装置。

本发明第一方面提供了一种图像处理方法,适用于图像处理装置。该图像处理装置的处理单元包括分区处理单元和分类处理单元,内存包括第一内 存与第二内存,分区处理单元可以为CPU、DSP、处理核或其它能够实现图像分区操作的硬件电路,分类处理单元可以为GPU、FPGA能够实现图像分类操作的硬件电路。其中,分区处理单元和分类处理单元是异构的处理单元,且共享该第一内存与第二内存。第一内存中保存有待处理的第一图像,分区处理单元从第一内存中获取该第一图像,并对第一图像进行分区,得到第一分区结果,然后将第一分区结果保存在第二内存中。分类处理单元从第二内存中获取分区处理单元保存的第一分区结果,并从第一内存中获取第一图像。然后分类处理单元根据第一图像与第一分区结果,对第一图像进行分类,得到第一分类结果。与现阶段的技术中异构的处理单元之间的内存相互独立不同,本发明中第一内存与第二内存被分区处理单元和分类处理单元共享,因此被共用的数据如第一图像、第一分区结果等数据无需在分区处理单元与分类处理单元之间搬运,这样就避免了处理单元之间数据搬运所造成的时延,加快了图像处理的速度,提高了图像处理的性能。

可选的,图像处理装置的处理单元还可以包括调度处理单元,用于从图像处理装置外部获取待处理的第一图像,并将获取的第一图像保存在第一内存中。其中,由于调度处理单元需要访问第一内存,因此调度处理单元与分区处理单元、分类处理单元一起共享第一内存。

可选的,各处理单元并不会批量处理多幅图像,而是采用流水线的方式,串行处理多幅图像。具体的,调度处理单元在将获取的第一图像保存在第一内存中之后,再执行如下操作:获取待处理的第二图像,并将第二图像保存在第一内存中。分区处理单元在得到第一分区结果后,再执行如下步骤:从第一内存中获取第二图像,对第二图像进行分区得到第二分区结果,并将第二分区结果保存在第二内存中。分类处理单元在得到所述第一分类结果之后,再执行如下步骤:从第一内存中获取第二图像,从第二内存中获取第二分区结果,然后根据第二图像与第二分区结果,对第二图像进行分类得到第二分类结果。采用流水线的方式能够降低各处理单元对内存容量的要求,并充分利用每个处理单元。

可选的,调度处理单元可以对各个处理单元的启动、工作、挂起进行控制,具体的,调度处理单元可以控制调度处理单元启动获取待处理的第二图 像操作的时刻点,不早于分区处理单元启动对所述第一图像进行分区操作的时刻点,以降低调度处理单元的平均功率;同理的,调度处理单元还可以控制分区处理单元启动对第二图像进行分区操作的时刻点,不早于分类处理单元启动对第一图像进行分类操作的时刻点,以降低分区处理单元的平均功率。

可选的,调度处理单元在第二内存的占用率达到第一预置占用率或第二内存已满时,可以挂起分区处理单元,以避免分区处理单元计算得到的分区结果在第二内存中积压。

可选的,图像处理装置还可以包括第三内存,用于保存分类处理单元计算得到的分类结果。分类处理单元在得到第一分类结果后,将第一分类结果保存到第三内存中。调度处理单元负责从第三内存中读取第一分类结果,并将第一分类结果输出到图像处理装置外部,如将第一分类结果写入磁盘。其中,第三内存至少被调度处理单元与分类处理单元所共享。

可选的,调度处理单元在第三内存的占用率达到第二预置占用率或第三内存已满时,可以挂起分类处理单元,以避免分类处理单元计算得到的分类结果在第三内存中积压。

可选的,调度处理单元还可以负责调整图像处理装置中的内存的大小或带宽。具体的,调度处理单元可以获取分区处理单元执行对第一图像进行分区操作的第一时长,以及分类处理单元执行对第一图像进行分类操作的第二时长。若第一时长大于第二时长,则说明分类处理单元进行分类操作的速率要快于分区处理单元进行分区操作的速率,调度处理单元可以增大第二内存的大小,和/或增大所述第二内存的带宽,和/或减小第三内存的大小,和/或减小第三内存的带宽。可替换的,若第一时长小于所述第二时长,则说明分区处理单元进行分区操作的速率要快于分类处理单元进行图像分类的速率,调度处理单元可以减小第二内存的大小,和/或减小所述第二内存的带宽,和/或增大第三内存的大小,和/或增大第三内存的带宽。

可选的,图像处理装置还可以包括第四内存和/或第五内存,其中第四内存用于保存分区处理单元进行分区操作时的中间结果,第五内存用于保存分类处理单元进分类操作时的中间结果。当第一时长大于第二时长时,调度处理单元还可以增大第四内存的大小,和/或减小第五内存的大小、和/或增大第 四内存的带宽,和/或减小第五内存的带宽。可替换的,当第一时长小于第二时长时,调度处理单元可以减小第四内存的大小,和/或增大第五内存的大小、和/或减小第四内存的带宽,和/或增大第五内存的带宽。

可选的,调度处理单元在第四内存的占用率达到第三预置占用率或第四内存已满时,可以挂起分区处理单元。和/或,调度处理单元在第五内存的占用率达到第四预置占用率或第五内存已满时,可以挂起分类处理单元。

可选的,图像处理装置还可以包括第六内存,用于保存分区处理单元进行分区操作的算法参数以及分类处理单元进行分类操作的算法参数,该第六内存至少被分区处理单元与分类处理单元所共享。

本发明第二方面提供了一种图像处理装置,该图像处理装置的处理单元包括分区处理单元和分类处理单元,内存包括第一内存与第二内存,分区处理单元可以为CPU、DSP、处理核或其它能够实现图像分区操作的硬件电路,分类处理单元可以为GPU、FPGA能够实现图像分类操作的硬件电路。其中,分区处理单元和分类处理单元是异构的处理单元,且共享该第一内存与第二内存。其中,分区处理单元用于:从第一内存中获取待处理的第一图像,对第一图像进行分区得到第一分区结果,并将第一分区结果保存在第二内存中。分类处理单元用于:从第二内存中获取分区处理单元保存的第一分区结果,并从第一内存中获取第一图像。然后分类处理单元根据第一图像与第一分区结果,对第一图像进行分类,得到第一分类结果。由于第一内存与第二内存被分区处理单元和分类处理单元共享,因此被共用的数据如第一图像、第一分区结果等数据无需在分区处理单元与分类处理单元之间搬运,这样就避免了处理单元之间数据搬运所造成的时延,加快了图像处理的速度,提高了图像处理的性能。

可选的,图像处理装置的处理单元还可以包括调度处理单元,用于从图像处理装置外部获取待处理的第一图像,并将获取的第一图像保存在第一内存中。其中,由于调度处理单元需要访问第一内存,因此调度处理单元与分区处理单元、分类处理单元一起共享第一内存。

可选的,各处理单元并不会批量处理多幅图像,而是采用流水线的方式串行处理多幅图像。具体的,调度处理单元在将获取的第一图像保存在第一 内存中之后,还用于启动执行如下步骤:获取待处理的第二图像,并将获取的第二图像保存在第一内存中。分区处理单元在得到第一分区结果后,还用于启动执行如下步骤:从第一内存中获取第二图像,对第二图像进行分区得到第二分区结果,并将第二分区结果保存在第二内存中。分类处理单元在得到第一分类结果之后,还用于启动执行如下步骤:从第一内存中获取第二图像,从第二内存中获取第二分区结果,然后根据第二图像与第二分区结果对所述第二图像进行分类,得到第二分类结果。其中,采用流水线方式时各个处理单元的启动时刻可以由调度处理单元来控制。

可选的,调度处理单元还用于对各个处理单元的启动、工作、挂起进行控制,具体的,调度处理单元用于控制调度处理单元启动获取待处理的第二图像操作的时刻点,不早于分区处理单元启动对所述第一图像进行分区操作的时刻点,以降低调度处理单元的平均功率。和/或,调度处理单元还可以用于控制分区处理单元启动对第二图像进行分区操作的时刻点,不早于分类处理单元启动对第一图像进行分类操作的时刻点,以降低分区处理单元的平均功率。

可选的,调度处理单元还用于在第二内存的占用率达到第一预置占用率或第二内存已满时,挂起分区处理单元,以避免分区处理单元计算得到的分区结果在第二内存中积压。

可选的,图像处理装置还可以包括第三内存,用于保存分类处理单元计算得到的分类结果。分类处理单元在得到第一分类结果后,还用于将第一分类结果保存到第三内存中。调度处理单元还用于从第三内存中读取第一分类结果,并将第一分类结果输出到图像处理装置外部,如将第一分类结果写入磁盘。其中,第三内存至少被调度处理单元与分类处理单元所共享。

可选的,调度处理单元还用于在第三内存的占用率达到第二预置占用率或第三内存已满时,挂起分类处理单元,以避免分类处理单元计算得到的分类结果在第三内存中积压。

可选的,调度处理单元还用于调整图像处理装置中的内存的大小或带宽。具体的,调度处理单元还用于获取分区处理单元执行对第一图像进行分区操作的第一时长,以及分类处理单元执行对第一图像进行分类操作的第二时长。 若第一时长大于第二时长,则说明分类处理单元进行分类操作的速率要快于分区处理单元进行分区操作的速率,调度处理单元增大第二内存的大小,和/或增大所述第二内存的带宽,和/或减小第三内存的大小,和/或减小第三内存的带宽。可替换的,若第一时长小于所述第二时长,则说明分区处理单元进行分区操作的速率要快于分类处理单元进行图像分类的速率,调度处理单元减小第二内存的大小,和/或减小所述第二内存的带宽,和/或增大第三内存的大小,和/或增大第三内存的带宽。

可选的,图像处理装置还可以包括第四内存和/或第五内存,其中第四内存用于保存分区处理单元进行分区操作时的中间结果,第五内存用于保存分类处理单元进分类操作时的中间结果。当第一时长大于第二时长时,调度处理单元还用于增大第四内存的大小,和/或减小第五内存的大小、和/或增大第四内存的带宽,和/或减小第五内存的带宽。可替换的,当第一时长小于第二时长时,调度处理单元还用于减小第四内存的大小,和/或增大第五内存的大小、和/或减小第四内存的带宽,和/或增大第五内存的带宽。

可选的,调度处理单元还用于在第四内存的占用率达到第三预置占用率或第四内存已满时,挂起分区处理单元。和/或,调度处理单元还用于在第五内存的占用率达到第四预置占用率或第五内存已满时,挂起分类处理单元。

可选的,图像处理装置还可以包括第六内存,用于保存分区处理单元进行分区操作的算法参数以及分类处理单元进行分类操作的算法参数,该第六内存至少被分区处理单元与分类处理单元所共享。

附图说明

图1为图像目标检测流程示意图;

图2为现阶段的技术中CPU+GPU异构平台的结构图;

图3为本发明实施例中图像处理装置的一个结构图;

图4为本发明实施例中图像处理方法的一个流程示意图;

图5为本发明实施例中图像处理装置的另一个结构图;

图6为本发明实施例中图像处理方法的另一个流程示意图;

图7为本发明实施例中图像处理装置的另一个结构图;

图8(a)为本发明实施例中图像处理方法的另一个流程示意图;

图8(b)为本发明实施例中图像处理方法的另一个流程示意图;

图9为本发明应用场景中图像处理装置的一个结构图;

图10为本发明应用场景中图像处理方法的一个流程示意图。

具体实施方式

本发明实施例提供了一种图像处理方法,用于提升图像处理的性能。本发明实施例还提供了相关的图像处理装置,以下将分别进行描述。

在图像处理领域,图像中目标的检测识别一般由分区和分类两步操作来实现,如图1所示:图像分区模型接受输入的图像,并通过分区操作把输入的图像划分成大小不同的区域;图像分类模型采用卷积神经网络或其它分类算法进行分类操作,最终识别出目标物体。现阶段的技术中一般采用异构平台进行图像识别。

中央处理器(CPU,Central Processing Unit)是系统的运算和控制核心,它的功能主要是解释系统指令以及处理系统软件中的数据。图形处理器(GPU,Graphics Processing Unit)是一种易编程、高性能的处理器,能够执行复杂的数学和几何计算,一般用于系统的图形图像处理。为了充分发挥CPU与GPU各自的优点,现阶段的技术中一般采用CPU+GPU异构平台来实现图像中目标的检测识别。其中,异构平台指的是集成了两种或多种类型的处理器的平台,为便于说明,本发明实施例中仅采用CPU+GPU作为异构平台进行图像识别的示例进行说明。

现阶段技术所采用的CPU+GPU异构平台的基本结构请参阅图2。在目标检测识别过程中,CPU先对待检测的源图像进行分区,并将分区结果写入CPU内存中。由于异构平台中不同类型的处理器之间内存不共享,因此CPU需要将分区结果搬运至GPU内存(也称为显存),GPU再结合源图像和该分区结果对源图像进行分类,得到分类结果(即图像中目标的检测识别结果)。在图像处理过程中,CPU会不断的计算得到分区结果并写入CPU内存中,因此CPU需要源源不断的将CPU内存中的数据搬运到GPU内存中。CPU内存与GPU内存之间大量的数据搬运会造成较长的时延,拖慢图像处理速度,进而 影响整个异构平台的目标检测性能。

为了解决现阶段的技术中CPU+GPU异构平台的目标检测性能不足的问题,本发明提供了一种图像处理装置,并在该图像处理装置的基础上提供了相应的图像处理方法。下面将首先结合图3来介绍本发明提供的图像处理装置的基本结构,具体包括:

分区处理单元301、主要用于进行图像分区操作。该分区处理单元301具体可以由一个或多个处理器来担任,处理器可以为CPU、数字信号处理(DSP,Digital Signal Processing)或其他类型处理器中的一种或多种。分区处理单元301也可以由处理器中的一个或多个核来担任,或由其它能够实现图像分区操作的硬件电路来担任,本发明实施例中不做限定。

分类处理单元302、主要用于进行图像分类操作。该分类处理单元302具体可以由一个或多个处理器来担任,处理器可以为GPU、现场可编程门阵列(FPGA,Field-Programmable Gate Array)或其他类型处理器中的一种或多种。分类处理单元302也可以由处理器中的一个或多个核来担任,或由其它能够实现图像分类操作的硬件电路来担任,本发明实施例中不做限定。

其中,分区处理单元301和分类处理单元302是异构处理单元,即分区处理单元301和分类处理单元302为不同类型的处理单元。例如,若分区处理单元301由CPU来担任,则分类处理单元302不能由CPU来担任,但可以采用GPU、FPGA或其它类型的处理单元来担任。

第一内存303,用于存放待处理的图像,即源图像。该第一内存303与分区处理单元301与分类处理单元302均连接,并由分区处理单元301与分类处理单元302共享,即分区处理单元301与分类处理单元302都可以直接访问第一内存303中的数据。

第二内存304,用于存放分区处理单元301进行图像分区操作的结果。该第二内存304与分区处理单元301与分类处理单元302均连接,并由分区处理单元301与分类处理单元302共享,即分区处理单元301与分类处理单元302都可以直接访问第二内存303中的数据。

在图3所示的图像处理装置的基础上,本发明提供了相应的图像处理方法,下面将以第一图像的处理过程为例解释该方法的基本流程,请参阅图4:

401、第一内存中保存有待处理的第一图像,分区处理单元从第一内存中获取该第一图像;

402、分区处理单元对第一图像进行分区,得到第一分区结果;

403、分区处理单元将第一分区结果保存在第二内存中;

404、分类处理单元从第二内存中获取分区处理单元保存的第一分区结果。可选的,在分类处理单元获取了第一分区结果之后,第一分区结果可以从第二内存中删除;

405、分类处理单元从第一内存中获取第一图像。可选的,分类处理单元从第一内存中获取了第一图像之后,第一图像可以从第一内存中删除。其中,步骤405与步骤401至404没有特定的先后顺序,步骤405也可以位于步骤401至404中任一步骤之前;

406、分类处理单元根据第一图像与第一分区结果,对第一图像进行分类,得到第一分类结果。

从图4所示的流程可以看出,第一图像需要被分区处理单元和分类处理单元所共用,且分区处理单元计算得到的第一分区结果需要被分类处理单元所使用。与现阶段的技术中异构的处理单元之间的内存相互独立不同,本发明实施例中,第一图像被保存在第一内存中,而第一内存被分区处理单元和分类处理单元所共享,因此分区处理单元无需从分区处理单元的内存中搬运该第一图像到分类处理单元的内存中。同理的,第一分区结果被保存在第二内存中,而第二内存也被分区处理单元和分类处理单元所共享,因此分区处理单元无需从分区处理单元的内存中搬运该第一分区结果到分类处理单元的内存中。综上所述,本实施例提供的方法通过将共用的数据保存在共享的内存中,减少了图像处理过程中不同处理单元之间的数据搬运操作,进而避免了处理单元之间数据搬运所造成的时延,加快了图像处理的速度,提高了图像处理的性能。

步骤401中提到,第一内存中保存有待处理的第一图像。其中,该第一图像可以由分区处理单元来获取并保存在第一内存中。但是可替换的,本发明实施例还引入了调度处理单元,用于在步骤401之前获取该待处理的第一图像,并将获取的该第一图像保存在第一内存中。可以理解的,调度处理单 元应和分区处理单元与分类处理单元一同共享第一内存。

上一段的论述中引入了调度处理单元,并采用调度处理单元从图像处理装置之外获取第一图像到第一内存中。可以理解的,在步骤406之后,图像处理装置需要将第一分类结果输出该图像处理装置(如将第一分类结果写入磁盘)。可替换的,该操作仍可以由调度处理单元来执行,具体的:本发明还可以引入第三内存,步骤406之后,分类处理单元将第一分类结果保存在第三内存中。调度处理单元将第三内存中的第一分类结果从图像处理装置中输出。

结合上两段的论述,本发明实施例提供的又一种图像处理装置请参阅图5。其中,分区处理单元501、分类处理单元502、第一内存503、第二内存504与图3所示的分区处理单元301、分类处理单元302、第一内存303、第二内存304基本相同,此处不做赘述。调度处理单元505与第三内存506均为可选模块,具体执行的操作或功能可参照上两段中的论述,此处不做赘述。

现阶段的技术中,图像处理装置一般会批量处理多幅图像。例如,调度处理单元批量获取50幅图像。待该50幅图像获取完成后,分区处理单元对这50幅图像进行批量分区,并将结果写入分区处理单元的内存中。待该50幅图像分区完成后,分类处理单元再对这50幅图像进行分类。可以看出,这种批量处理的方式要求每个处理单元有较大的内存容量,且在某个处理单元工作时,其它处理单元处于闲置状态(例如在分区处理单元对该50幅图像进行批量分区的过程中,分类处理单元一直处于闲置状态)。可替换的,本发明中图像处理装置可以采用流水线的方式来对图像进行处理,以降低对内存容量的要求,并充分利用每个处理单元。下面仅以第一图像和第二图像为例对该流水线方式进行说明:

请参阅图6,图6中横轴方向表示时间,数轴方向表示处理的图像。从图6中可以看出,任务调度处理单元获取第一图像并将第一图像保存到第一内存中后,启动获取第二图像并将第二图像保存到第一内存中的操作。其中,调度处理单元可以在完成了获取第一图像的操作之后立刻启动获取第二图像的操作,也可以在完成了获取第一图像的操作之后的某个时刻再启动获取第二图像的操作,此处不做限定。同理的,分区处理单元在对第一图像进行分区, 得到第一分区结果并将第一分区结果保存在第二内存中后,可以由调度处理单元控制或由分区处理单元自发控制启动如下操作:对第二图像进行分区,得到第二分区结果,并将第二分区结果保存在第二内存中。分类处理单元在根据第一图像与第一分区结果,对第一图像进行分类,得到第一分类结果后,可以由调度处理单元控制或由分区处理单元自发控制启动如下操作:从第一内存中获取第二图像,从第二内存中获取第二分区结果,并根据第二图像与第二分区结果,对第二图像进行分类得到第二分类结果。若数据处理装置中包括调度处理单元和第三内存,则分类处理单元还将第二分类结果保存在第三内存中,并由调度处理单元将第二分类结果从第三内存中输出。

需要指出的是,本发明实施例中的调度处理单元只是一种从功能上抽象出的处理单元,在实际产品中,调度处理单元可以是独立的处理单元,也可以与分区处理单元或分类处理单元是同一个处理单元(即实际产品也可以不包括实体的调度处理单元,本发明实施例中调度处理单元所执行的操作可以交由分区处理单元和/或分类处理单元来执行)。例如,可以采用一个DSP+单核CPU+双核GPU来搭建本发明实施例提供的数据处理装置,其中CPU担任调度处理单元的角色,DSP担任分区处理单元的角色,双核GPU担任分类处理单元的角色。又例如,可以采用一个4核CPU与双核GPU来搭建本发明实施例提供的数据处理装置,其中双核GPU担任分类处理单元的角色,4核CPU的前3个核担任分区处理单元的角色,第4个核负责担任分区处理单元的角色的同时,还负责执行调度处理单元所需要执行的操作。

上一段中提到,调度处理单元是一种从功能上抽象出的处理单元。可选的,本发明还为调度处理单元引入的更多的调度任务。包括内存调整任务,和/或流程控制任务,具体的:

一、内存调整任务。调度处理单元可以根据图像处理装置的运行情况,调整图像处理装置中内存的大小、带宽等参数。

例如,一般情况下,一副图像的分区计算量要小于分类计算量,因此图像分区操作往往要快于图像分类操作。但是若分区处理单元进行分区操作过快,会导致分类处理单元不能及时消化掉分区处理单元的分区结果,造成分区结果在第二内存中积压,使得分区处理单元的快速计算性能造成了浪费。 可以理解的,对于同一幅图像,若分区处理单元进行分区的时长与分类处理单元进行分类的时长等长,则说明分区处理单元与分类处理单元处理图像的速率恰好相同,分类处理单元能够恰好及时的消化掉分区处理单元的分区结果,不会造成分区结果的积压,也不会造成分区处理单元或分类处理单元的性能的浪费。因此,调度处理单元可以获取分区处理单元执行对第一图像进行分区操作的第一时长,并获取分类处理单元执行对第一图像进行分类操作的第二时长。若第一时长大于第二时长,即分区处理单元对第一图像进行分区的时长长于分类处理单元对第一图像进行分类的时长,则说明分类处理单元进行分类操作的速率要快于分区处理单元进行分区操作的速率,调度处理单元可以增大第二内存的大小,这样第二内存中能保存更多的分区结果,分类处理单元不需要花费较长的时间等待分区处理单元的分区结果。且由于图像处理装置的总内存一定,因此增大第二内存可以使得第三内存变小,这样当分类处理单元的分类结果在第三内存中没有空间存放时,分类处理单元会被迫挂起,这样就达到了限制分类处理单元进行图像分类的速率的目的。可替换的,调度处理单元也可以直接减小第三内存的大小来限制分类处理单元进行图像分类的速率。和/或,调度处理单元还可以增大第二内存的带宽,使得分区处理单元的分区结果能够快速搬运至第二内存,有利于提升分区处理单元的图像分区速率。且由于图像处理装置的总带宽一定,因此增大第二内存的带宽可以使得第三内存的带宽变小,这样就降低了分类处理单元将分类结果保存到第三内存的速率,限制了分类处理单元进行图像分类的速率。可替换的,调度处理单元还可以直接减小第三内存的带宽来限制分类处理单元进行图像分类的速率。基于类似的理由,若第一时长小于第二时长,即分区处理单元对第一图像进行分区的时长短于分类处理单元对第一图像进行分类的时长,则说明分区处理单元进行分区操作的速率要快于分类处理单元进行图像分类的速率,调度处理单元可以减小第二内存的大小,和/或减小第二内存的带宽,和/或增大第三内存的大小,和/或增大第三内存的带宽,以限制分区处理单元进行分区操作的速率。

又例如,图像处理装置还可以包括用于保存分区处理单元进行分区操作时的中间结果的第四内存,和/或用于保存分类处理单元进行分类操作时的中 间结果的第五内存,如图7所示。若第一时长大于第二时长,则说明分区处理单元的速率要慢于分类处理单元的速率,调度处理单元可以通过增大第四内存的大小、和/或增大第四内存的带宽、和/或减小第五内存的大小、和/或减小第五内存的带宽来降低分类处理单元进行分类操作的速率。同理可选的,若第一时长小于第二时长,则调度处理单元可以减小第四内存的大小,和/或减小第四内存的带宽、和/或增大第五内存的大小、和/或增大第五内存的带宽。

二、流程控制任务。分区处理单元和分类处理单元的启动、工作、挂起均可以由调度处理单元来控制。

例如,若第二内存的占用率达到第一预置占用率,则说明分区处理单元的分区结果在第二内存中有积压,调度处理单元可以挂起分区处理单元。调度处理单元还可以待第二内存中的分区结果不再积压时(具体的,在分区处理单元挂起第一预置时长后,或第二内存的占用率降低到预设的阈值以下后,或在其它设定的条件下,就可以认为第二内存中的分区结果不再积压),再启动分区处理单元。同理的,若第三内存的占用率达到第二预置占用率,则说明分类处理单元的分类结果在第三内存中有积压,调度处理单元可以挂起分类处理单元。调度处理单元还可以待第三内存中的分类结果不再积压时,再启动分类处理单元。同理的,若图7中的第四内存的占用率达到第三预置占用率,则调度处理单元可以挂起分区处理单元。若图7中的第五内存的占用率达到第四预置占用率,则调度处理单元可以挂起分类处理单元。其中,第一预置占用率至第四预置占用率均为预置的数值,例如可以为80%或90%,也可以为100%(即内存已满)。第一预置占用率至第四预置占用率中,任意两个或更多个预置占用率的数值可以相同,第一预置占用率至第四预置占用率的数值也可以各不相同,此处不做限定。

又例如,若第二内存的剩余空间小于第二预置大小,则说明分区处理单元的分区结果在第二内存中有积压,导致第二内存中的剩余空间不足,调度处理单元可以挂起分区处理单元。调度处理单元还可以待第二内存中的分区结果不再积压时(具体的,在分区处理单元挂起第一预置时长后,或第二内存的占用率降低到预设的阈值以下后,或在第二内存的剩余空间大于预设的大小后,或在其它设定的条件下,就可以认为第二内存中的分区结果不再积 压),再启动分区处理单元。同理的,若第三内存的剩余空间小于第三预置大小,则说明分类处理单元的分类结果在第三内存中有积压,调度处理单元可以挂起分类处理单元。调度处理单元还可以待第三内存中的分类结果不再积压时,再启动分类处理单元。同理的,若图7中的第四内存的剩余空间小于第四预置大小,则调度处理单元可以挂起分区处理单元。若图7中的第五内存的剩余空间小于第五预置大小,则调度处理单元可以挂起分类处理单元。其中,第二预置大小至第五预置大小均为预置的数值,可以为正值,也可以为0(即内存已满)。第一预置大小至第五预置大小中,任意两个或更多个预置大小的数值可以相同,第一预置大小至第五预置大小的数值也可以各不相同,此处不做限定。

又例如,调度处理单元还可以控制获取图像操作、分区处理单元进行分区操作以及分类处理单元进行分类操作的起始时间。具体的,图6以第一图像和第二图像为例来介绍流水线方式的图像处理流程,下面以第一图像、第二图像和第三图像来介绍流水线方式的图像处理流程。首先请参阅图8(a)。图8(a)中图像处理装置依次对第三图像、第一图像、第二图像进行处理,其中,调度处理单元在获取了第三图像之后,立刻启动获取第一图像的操作,并在完成了获取第一图像的操作后,立刻启动获取第二图像的操作。在整个图像处理流程中,调度处理单元一直处于获取图像的操作状态。但是,在时刻T1处(调度处理单元启动获取第二图像的操作的时刻点),分区处理单元还在对第三图像进行分区,并没有开始对第一图像开始分区,更没有开始对第二图像进行分区。因此时刻T1时调度处理单元只需要完成获取第一图像,就能够使得分区处理单元随时启动对第一图像进行分区,并不需要在此时就准备好第二图像。只有在时刻T2处(分区处理单元开始对第一图像进行分区的时刻点),调度处理单元才需要获取第二图像,以便分区处理单元在完成对第一图像进行分区的操作后随时启动对第二图像进行分区。在T1~T2时间段内,调度处理单元可以暂时停止获取第二图像,使得调度处理单元得到休息,以降低调度处理单元的平均功率。因此,本发明实施例中,调度处理单元可以控制调度处理单元启动获取待处理的第二图像操作的时刻点,不早于分区处理单元启动对第一图像进行分区操作的时刻点。同理的,调度处理单元还 可以控制分区处理单元启动对第二图像进行分区操作的时刻点,不早于分类处理单元启动对第一图像进行分类操作的时刻点,如图8(b)所示。

本发明中,分区处理单元进行图像分区的算法有很多,如Edge Box、BING等,本发明中不做限定。分类处理单元可以采用卷积神经网络(CNN,Convolutional Neural Network)或其它算法对图像进行分类,本发明中不做限定。可选的,本发明提供的图像处理装置还可以包括第六内存,用于存放分区处理单元进行分区操作的算法和参数,以及分类处理单元进行分类操作的算法和参数。该第六内存由分区处理单元与分类处理单元所共享。

本发明介绍了图像处理装置的第一内存至第六内存,并限定了这些内存需要能够被哪些处理单元所共享。需要指出的是,这些内存除了可以被限定的处理单元所共享,也可以被非限定的处理单元所共享。例如,本发明中限定了第二内存需要被分区处理单元和分类处理单元所共享,但是第二内存同时也可以被调度处理单元所共享;本发明中限定了第三内存需要被分类处理单元和调度处理单元所共享,但是第三内存同时也可以被分区处理单元所共享;同理的,第四内存、第五内存、第六内存也可以被分区处理单元、分类处理单元、调度处理单元中的一个、两个或多个处理单元所共享。

本发明中介绍的第一内存至第六内存均为逻辑上的划分,虽然在附图中各自以分开独立的形式示意,但其实际形态中,任意的两块或更多块的内存均可以集成为一体。例如,整个图像处理装置可以只有一块由各处理单元所共享的内存,调度处理单元将该共享的内存的地址段划分为6块,分别担任第一内存至第六内存的角色。

除了本发明中介绍的第一内存至第六内存,本发明所提供的图像处理装置还可以包括更多的内存,所述更多的内存可以由多个处理单元所共享,也可以由某个处理单元所专用,此处不做限定。

为了便于理解上述实施例,下面将以上述实施例的一个具体应用场景为例进行描述。

图9中所示的是一个CPU+GPU异构系统构成的图像处理装置,其中的CPU为4-PLUS-1 Cortex A15型号,包括4个ARM A15运算核和1个ARM A15低功耗管理核。其中的GPU为Kepler GPU型号,包括192个GPU CUDA核。 该异构系统采用3个ARM A15运算核来进行图像分区(即担任分区处理单元),1个ARM A15运算核来进行任务调度(即担任调度处理单元),192个GPU核进行图像分类(即担任分类处理单元)。CPU与GPU中的核通过2GB Double Data Rate 2(DDR2)的共享内存进行数据交互并构成硬件流水线。图像分区算法采用边缘框(EdgeBox)算法,图像分类算法采用CNN。

调度处理单元在2GB DDR2中划分出500MB的空间作为第一内存,用于保存调度处理单元获取的源图像,并在2GB DDR2中划分出200MB的空间作为第二内存,用于存放分区处理单元的分区结果,还在2GB DDR2中划分出100MB的空间作为第三内存,用于存放分类处理单元的分类结果。

用户采用图9所示的异构系统来检测识别图像A、图像B与图像C中的目标,具体流程请参阅图10。在T3时刻,该异构系统的调度处理单元先获取图像A并将图像A写入第一内存中;在T4时刻,分区处理单元启动对图像A进行分区的操作,具体的,从第一内存中读取图像A,对图像A进行分区并将图像A的分区结果写入第二内存,同时调度处理单元启动获取图像B的操作并将图像B写入第一内存;在T5时刻,分类处理单元启动对图像A的分类操作,具体的,从第一内存中读取图像A以及从第二内存中读取图像A的分区结果,根据图像A的分区结果对图像A进行分类并将分类结果写入第三内存,同时分区处理单元启动对图像B进行分区的操作,从第一内存中读取图像B,对图像B进行分区并将图像B的分区结果写入第二内存,且同时调度处理单元启动获取图像C的操作并将图像C写入第一内存。

其中,在T5~T6时间段内,分类处理单元并没有完成对图像A的分类操作,因此不能完全消耗第二内存中图像A的分区结果。但在T5~T6时间段内,分区处理单元仍在不停的对图像B进行分区,并向第二内存中输出图像B的分区结果,这就导致了图像A和图像B的分区结果在第二内存中积压。假设在T6时刻时,第二内存的占用率达到100%,于是调度处理单元挂起分区处理单元。

T7时刻,第二内存的剩余空间大于50MB,于是调度处理单元再次启动分区处理单元,分区处理单元完成对图像B的分区操作,并将分区结果保存到第二内存中。T8时刻,分类处理单元启动对图像B进行分类,并将分类结 果写入第三内存,同时分区处理单元启动对图像C进行分区的操作,并将图像C的分区结果写入第二内存。T9时刻,分类处理单元启动对图像C的分类操作,并将分类结果写入第三内存中。

所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。

在本申请所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。

所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。

另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。

所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,该存储介质包括:U盘、移动硬盘、内存(可以包括只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)等)、磁碟或者光盘等各种可以存储程序代码的介质。本发明中的调度处理单元、分区处理单元和分区处理单元均可以读取该存储介质中的指 令,并根据读取的指令执行本发明各个实施例所述方法的全部或部分步骤。

以上所述,以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1