视频实时识别分割及检测架构的制作方法

文档序号:23055315发布日期:2020-11-25 17:33阅读:158来源:国知局
视频实时识别分割及检测架构的制作方法

本发明涉及神经网络技术领域,尤其涉及一种视频实时识别分割及检测架构。



背景技术:

深度卷积神经网络已经在图像识别中得到广泛的应用,例如在图像的分类、检测及分割中。随着其发展,人们逐渐将深度卷积神经网络的应用范围扩展到了视频领域。

其中深度学习较适合处理图像识别任务。具体对于目标分割任务,完全卷积网络已在该领域得到最大的应用;而对于目标检测,r-cnn家族占据了统治地位。然而若直接将上述图像识别模型应用到每一帧视频上,则会存在不可承担的计算量和能量。因此基于图像识别的限制,研究者们提出了许多针对视频识别的神经网络,例如osvos提出了双流fcn模型分别针对前景和轮廓;为了得到更好的性能,favos提出了基于追踪到的目标物体进行局部分割,随后还构建了roisegnet,一个用于分割目标的鲁棒性强但仍然很大的网络。然而上述技术达到高准确率的代价是高计算量和能量。

再者已知图像信息在视频帧之间的变化是缓慢的,利用这种数据冗余可减少计算量。因此为了实现实时视频分割,dff提出了深度特征流方法,它是第一个直接将光流和关键特征结合在一起的。光流也是用神经网络提取出来的,而关键特征则是从对关键帧用大型卷积神经网络提取出来的,但关键帧是通过间隔固定数目的帧的方式来决定的,该种方法会影响识别的精确度,同时提取光流的开销也很大。



技术实现要素:

本发明所要解决的技术问题是现有对视频识别任务进行处理的方法,若识别精度较高则需耗费大量的计算量和能耗,而若降低计算量和能量则会影响识别的精确度。

为了解决上述技术问题,本发明提供了一种视频实时识别分割及检测架构,包括主存以及通过总线分别与所述主存连接的视频解码器、视频识别处理模块和神经网络处理模块;

所述视频解码器,用于对目标视频进行解码获取解码顺序,并获取目标视频的i帧类图像数据、p帧类图像数据和运动矢量表;

所述视频识别处理模块,用于基于所述运动矢量表存储b类帧的运动矢量,并基于b类帧的运动矢量按解码顺序依次从所述主存中读取b帧图像数据参考帧中的图像分割结果和已获取的b帧图像数据的重建结果或b帧图像数据的参考帧图像检测结果并处理,获取b类帧的重建结果;

所述神经网络处理模块,用于利用第一预设神经网络对i帧类图像数据和p帧类图像数据进行分割得到i帧类视频分割结果和p帧类视频分割结果,利用第三预设神经网络对i帧类图像数据和p帧类图像数据进行检测得到i帧类视频检测结果和p帧类视频检测结果,利用第二预设神经网络对b类帧的重建结果、i类帧图像分割结果和p类帧图像分割结果进行分割,得到b类帧的图像检测结果,且利用第二预设神经网络对b类帧的重建结果、设定后的i类帧图像检测结果、设定后的p类帧图像检测结果进行检测,得到b类帧的图像检测结果;

所述主存,用于对i帧类图像数据、p帧类图像数据、i帧类视频分割结果、p帧类视频分割结果、i帧类视频检测结果、p帧类视频检测结果、b帧类的重建结果、设定后的i帧类图像检测结果、设定后的p帧类图像检测结果、b帧类视频分割结果以及b帧类的视频检测结果进行存储;

其中,所述目标视频的视频编解码标准为具有i帧图像数据、b帧图像数据和p帧图像数据的分类,具有运动矢量表,且每帧图像数据按预设方式分割成多个分割小块。

优选地,所述视频识别处理模块包括运动矢量存储单元、控制单元、待设定框排序单元以及处理单元;

所述运动矢量存储单元,用于基于所述运动矢量表对b类帧的运动矢量进行存储;

所述控制单元,用于按解码顺序依次将i帧图像数据和p帧图像数据的索引号及对应的状态信息存储在第一队列中,并按解码顺序依次将b帧图像数据的索引号及对应的状态信息存储在第二队列中;

所述待设定框排序单元,用于获取b帧图像数据所有参考帧的图像检测结果,并对所述b帧图像数据所有参考帧的图像检测结果中所有已检测框进行分类排序,得到该b帧图像数据的待设定框排序;并基于所述b帧图像数据的待设定框排序对所述b帧图像数据参考帧的图像检测结果进行设定,获取所述b帧图像数据的设定后的参考帧的图像检测结果,并在处理单元获取所述b帧图像数据的所有子重建结果后对该b帧图像数据的所有子重建结果进行合并,得到所述b帧图像数据的重建结果。

所述处理单元,用于根据b帧图像数据的参考帧中的所有图像分割结果以及所有已获取的b帧图像数据的重建结果获取该b帧图像数据的重建结果,或用于基于b帧图像数据对应的设定后的参考帧的图像检测结果、b帧的运动矢量以及已获取的b帧图像数据的重建结果获取该b帧图像数据的子重建结果。

优选地,设定所述i帧图像数据和p帧图像数据的初始状态为s_ready,所述i帧图像数据的图像分割结果、i帧图像数据的图像检测结果、p帧图像数据的图像分割结果、p帧图像数据的图像检测结果的状态为s_done;同时设定所述b帧图像数据的初始状态为s_unready,所述b帧图像数据的重建结果为s_ready,所述b帧图像数据的图像分割结果和所述b帧类的视频检测结果的状态为s_done。

优选地,所述视频识别处理模块还包括合并单元;

所述合并单元,用于从所述运动矢量存储单元中依次获取m个待发送访问请求的运动矢量,并按预设合并方式将获取的m个运动矢量的访问请求进行合并,得到至少一个合并访问请求;

其中,所述预设合并方式为:将m个运动矢量中参考帧号和源纵坐标均相同的运动矢量所对应的访问请求合并成一个合并访问请求;m为正整数。

优选地,所述视频识别处理模块还包括缓冲器,所述缓冲器用于从所述主存中预取b帧图像数据参考帧的图像分割结果或图像检测结果以及已完成b帧图像数据的重建结果,并基于已预取的参考帧的图像分割结果或图像检测结果以及已完成b帧图像数据的重建结果获取所述运动矢量存储单元中存储的所有具有参考帧帧号的运动矢量对应的参考分割小块,并将获取的参考分割小块发送给所述处理单元;

所述缓冲器从所述主存中预取b帧图像数据参考帧的图像分割结果或图像检测结果以及已完成b帧图像数据的重建结果,并基于已预取的参考帧的图像分割结果或图像检测结果以及已完成b帧图像数据的重建结果获取所述运动矢量存储单元中存储的所有具有参考帧帧号的运动矢量对应的参考分割小块,并将获取的参考分割小块发送给所述处理单元包括:

所述缓存器中设置的预取指针指向所述运动矢量存储单元中的第一个运动矢量,将其作为预取运动矢量,所述预取指针从所述主存中获取所述预设运动矢量中参考帧的图像分割结果或图像检测结果以及已完成b帧图像数据的重建结果并存储,并将所述预取运动矢量中的参考帧帧号发送给所述缓存中设置的搜索指针;

所述搜索指针在所述运动矢量存储单元中搜索所有参考帧帧号为预设运动矢量参考帧帧号的运动矢量以形成同类运动矢量组,基于获取的所述预设运动矢量中参考帧的图像分割结果或图像检测结果以及已完成b帧图像数据的重建结果,依次获取同类运动矢量组中所有运动矢量的参考分割小块,并将其发送给所述处理单元;

从所述运动矢量存储单元中删除所述同类运动矢量组中的所有运动矢量,并判断当前所述运动矢量存储单元中是否还存在运动矢量,若存在则所述预取指针指向当前所述运动矢量存储单元中的第一个运动矢量,并重复所述预取指针和所述搜索指针工作过程;否则结束预取。

优选地,所述视频识别处理模块还包括二维高速缓冲存储器,所述二维高速缓冲存储器用于从所述主存获取b帧图像数据的参考帧的分割结果并缓存;

所述二维高速缓冲存储器包括不少于一个的体存储结构,所述体存储结构中设置有不少于一组的组存储结构,所述组存储结构中设置有不少于一个的路存储单元。

优选地,存储在所述主存中的二维图像数据均符合预设存储映射规则;

所述预设存储映射规则为:所述二维图像数据分为三级映射到所述主存中,且每一级映射均对所述二维图像数据进行不同粒度的切分;

其中,所述二级映射中的二级块数量与所述主存中体存储结构数量相同,三级映射中的三级块尺寸大小为所述主存的突发长度和数据总线的宽度之积除以8;且所述二维图像数据包括i帧类图像数据、p帧类图像数据、i帧类视频分割结果、p帧类视频分割结果、i帧类视频检测结果、p帧类视频检测结果、b帧类的重建结果、b帧类视频分割结果以及b帧类的视频检测结果。

优选地,参考分割小块在所述主存中的地址生成方式为:

基于所述参考分割小块所属帧号及其帧内坐标获取所述参考分割小块所存储的主存页;

基于所述参考分割小块所存储的主存页获取所述参考分割小块的行地址;

基于所述参考分割小块的帧内坐标获取参考分割小块在所述主存中所属体存储结构索引;

基于所述参考分割小块的帧内坐标计算参考分割小块在二级块内的索引值;

基于所述参考分割小块在二级块内的索引值,计算所述参考分割小块的列地址。

优选地,所述二维高速缓冲存储器地址结构包括x地址和y地址;所述x地址和y地址均包括标签、索引以及二维高速缓冲存储器的体存储结构;

其中,所述主存的体存储结构地址、行地址的高位以及列地址的高位分布于所述x地址和y地址的标签中,所述x地址和y地址的标签包括主存行地址的低位,所述x地址和y地址的标签分别包括主存列地址中的一位。

优选地,所述二维高速缓冲存储器的组内寻址和块替换策略为分别从两个维度使用最近最久未使用的规则对最近最久未使用的块进行替换。

与现有技术相比,上述方案中的一个或多个实施例可以具有如下优点或有益效果:

应用本发明实施例提供的视频实时识别分割及检测架构,通过设置视频解码器对目标视频进行解码;通过设置神经网络处理模块对i/p类帧图像数据进行处理获取i/p帧类视频分割结果和i/p帧类视频检测结果,以为b类帧的重建结果的获取提供实现基础,并基于b类帧的重建结果获取b类帧的图像检测结果;通过设置视频识别处理模块来对b类帧的重建结果进行获取,且为了提高b类帧的重建结果的获取效率,更提出了对解码顺序分两个队列重新排列、合并运动矢量访问请求、利用缓冲器及二维高速缓冲存储器对参考帧进行缓存等优化方案;通过设置主存对上述各模块中的处理结果进行存储。本发明结构通过将视频解码器和神经网络紧密地联系起来,来维持准确率的同时实现更高的性能,解决现有对视频识别任务处理方法无法在确保精度较高的基础上降低计算量和能耗的问题。

本发明的其它特征和优点将在随后的说明书中阐述,并且部分地从说明书中变得显而易见,或者通过实施本发明而了解。本发明的目的和其他优点可通过在说明书、权利要求书以及附图中所特别指出的结构来实现和获得。

附图说明

附图用来提供对本发明的进一步理解,并且构成说明书的一部分,与本发明的实施例共同用于解释本发明,并不构成对本发明的限制。在附图中:

图1示出了本发明实施例一视频实时识别分割及检测架构的一种结构示意图;

图2示出了本发明实施例一中合并单元的一种重调度方法示意图;

图3示出了本发明实施例二视频实时识别分割及检测架构的一种结构示意图;

图4示出了本发明实施例三视频实时识别分割及检测架构的一种结构示意图;

图5示出了本发明实施例三中二维高速缓冲存储器的一种结构示意图;

图6示出了本发明实施例三中参考分割小块在主存中的三种跨越基本块边界的情形;

图7示出了本发明实施例三中二维图像数据到主存的一种映射示意图;

图8示出了本发明实施例三中一种主存地址转换为二维高速缓冲存储器地址的示意图;

图9示出了本发明实施例三中一种符合主存地址设计的主存地址格式示意图。

具体实施方式

以下将结合附图及实施例来详细说明本发明的实施方式,借此对本发明如何应用技术手段来解决技术问题,并达成技术效果的实现过程能充分理解并据以实施。需要说明的是,只要不构成冲突,本发明中的各个实施例以及各实施例中的各个特征可以相互结合,所形成的技术方案均在本发明的保护范围之内。

现阶段深度学习对图像进行识别分割及检测过程中,完全卷积网络已在目标分割任务领域得到充分的利用,而r-cnn家族在目标检测范围具有较高的统治地位。但若直接将上述图像识别模型应用到每一帧视频上,则会存在不可承担的计算量和能耗,同时识别地准确率精度并不高。因此基于图像识别的限制,研究者们提出了许多针对视频识别的神经网络,例如osvos提出的双流fcn模型,以及favos提出的基于追踪到的目标物体进行局部分割等,但上述技术达到高准确率的代价是高计算量和能耗。进一步为了实现实时视频分割,dff提出了深度特征流方法,它是第一个直接将光流和关键特征结合在一起的,但关键帧是通过间隔固定数目的帧的方式来决定的,该种方法会影响识别的精确度,同时提取光流的开销也很大。

实施例一

为解决现有技术中存在的技术问题,本发明实施例提供了一种视频实时识别分割及检测架构。

图1示出了本发明实施例一视频实时识别分割及检测架构的一种结构示意图;参考图1所示,本发明视频实时识别分割及检测架构包括主存以及通过总线分别与主存连接的视频解码器、视频识别处理模块和神经网络处理模块。

视频解码器主要用于对目标视频进行解码获取解码顺序,并获取目标视频的i帧类图像数据、p帧类图像数据和运动矢量表。

本发明实施例目标视频的视频编解码标准为具有i帧图像数据、b帧图像数据和p帧图像数据的分类,且每帧图像数据按预设大小块分割,并具有运动矢量表。例如目标视频的视频编解码标准可为h.265的视频,此时分割小块为编码树块;目标视频的视频编解码标准还可为h.264的视频,此时分割小块为宏块。其中,运动矢量是视频解码器通过记录依赖关系的码流来表示分割小块的运动轨迹的量。视频解码器将被依赖的帧和分割小块称作参考帧和参考分割小块,而运动矢量表则包括目标视频中每一b帧图像数据和p帧图像数据分别所对应依赖的参考帧以及b帧图像数据和p帧图像数据中每一分割小块所对应依赖的参考分割小块,其中我们需要用到的是b类帧的运动矢量。

需要说明的是,上述每一帧图像数据可按照分割小块为基本单位进行切分,且分割小块的典型大小为8×8个像素。视频解码器对i类帧图像数据、p类帧图像数据以及b类帧图像数据的解码过程包括如下特征:即对于i类帧图像数据,每个分割小块通过14种预测模式进行帧内预测;不同模式下视频解码器会运行不同的预测算法并且计算当前分割小块和已经完成计算的分割小块之间的绝对误差和;视频解码器会根据最小化绝对误差和的目标来选择模式和分割小块。对于p类帧图像数据,视频解码器会在较大的范围内进行搜索;搜索范围包括当前帧(即帧内预测)和前序帧(即帧间预测)的已经完成编码的分割小块;然后还是根据最小化绝对误差和的目标来选择模式和分割小块。对于b类帧图像数据,视频解码器则会在更大的范围内进行搜索;搜索范围不仅是当前帧或前序帧,也可以是后序帧中的已经完成编码的分割小块;同样根据最小化绝对误差和的目标来选择模式和分割小块。

同时为了防止解码过程中发生死锁的情况(即b1帧依赖p1帧,但b1帧想先解码的情况),视频解码器则会根据帧与帧之间的依赖情况生成解码顺序,在解码时会严格按照解码顺序逐帧解码。

但视频解码器会根据帧间依赖关系来记录帧的解码顺序,因为b类帧图像数据有可能会参考前序帧也有可能参考后序帧。例如假设(i0,b1,b2,b3,p4,i5,b6,p7)是视频的播放顺序,而(i0,p4,b3,b2,b1,i5,p7,b6)则会是实际的解码顺序,因为此时b3依赖i0和p4。更进一步地,视频解码器可将码流根据特定的解码顺序转换回常规的帧序列。具体针对i类帧图像数据来说,分割小块会根据选择的预测模式、运动矢量中参考的分割小块以及对应的残差使用帧内预测来进行恢复。而对于p类帧图像数据和b类帧图像数据来说,视频解码器则会同时使用帧内预测和帧间预测。

视频识别处理模块主要用于基于运动矢量表存储b类帧的运动矢量,并基于b类帧的运动矢量按解码顺序依次从主存中读取b帧图像数据的参考帧图像分割结果和已获取的b帧图像数据的重建结果或b帧图像数据的参考帧图像检测结果并处理,获取b类帧的重建结果。视频识别处理模块包括运动矢量存储单元、控制单元、待设定框排序单元以及处理单元。

其中,运动矢量存储单元用于对视频解码器获取的运动矢量表进行处理,以获取运动矢量表中的b类帧的运动矢量,而后对b类帧的运动矢量进行存储。进一步即运动矢量存储单元中存储有所有b类帧图像数据中各个分割小块的运动矢量。

对于i帧图像数据、p帧图像数据、b帧图像数据执行神经网络的顺序,本发明首先提出了可以将i、p、b帧执行神经网络的顺序设置为与解码顺序一致的设计方案。举个例子,假设解码顺序为(i0,p4,b3,b2,b1,i5,p7,b6),则i、p、b帧执行神经网络的顺序也为i0,p4,b3,b2,b1,i5,p7,b6。但是上述设计方案可能会触发第一预设神经网络或第三预设神经网络和第二神经网络之间频繁切换的情况,频繁切换神经网络会造成处理单元所存储的权值被频繁刷新,从而造成较大的访问开销。

为此我们在视频识别处理模块中设计了控制单元,控制单元主要用于按解码顺序依次将i帧图像数据和p帧图像数据的索引号及对应的状态信息存储在第一队列中,并按解码顺序依次将b帧图像数据的索引号及对应的状态信息存储在第二队列中。进一步为了对队列进行更清晰地划分,避免两个队列在运行过程中存在相互影响,如图1所示我们设计了第一控制单元和第二控制单元,其中,第一控制单元用于按解码顺序依次将i帧图像数据和p帧图像数据的索引号及对应的状态信息存储在第一队列(即ip_q队列),并对第一队列进行存储;第二控制单元用于按解码顺序依次将b帧图像数据的索引号及对应的状态信息存储在第二队列(即b_q队列),并对第二队列进行存储。

优选地,在执行神经网络过程中,本发明优先执行第一队列(即ip_q队列)中的帧(即第一预设神经网络或第三预设神经网络),直到将第一队列中所有帧执行完毕,而后才切换到第二队列(即b_q队列)中,开始执行第二队列中的帧(即第二预设神经网络),当第二队列中所有帧执行完毕,则切换到第一队列中。

由于b帧图像数据的重建操作依赖于它参考帧的图像分割结果、图像检测结果以及已获取的b帧图像数据的重建结果,而b帧图像数据要执行第二预设神经网络则依赖于它的重建结果。因此本发明设计了不同的标记位来对每个帧的状态进行标记。进一步地,设定i帧图像数据和p帧图像数据的初始状态为s_ready,i帧图像数据的图像分割结果、i帧图像数据的图像检测结果、p帧图像数据的图像分割结果、p帧图像数据的图像检测结果的状态为s_done;同时设定b帧图像数据的初始状态为s_unready,b帧图像数据的重建结果为s_ready,b帧图像数据的图像分割结果和b帧类的视频检测结果的状态为s_done。需要说明的是,b帧图像数据在进行重建操作时,需先检查其参考帧的状态是否为s_done,只有当其参考帧的状态均为s_done,才能用其参考帧的第一预设神经网络或第三预设神经网络的结果重建b帧图像数据的重建结果。

待设定框排序单元用于获取b帧图像数据所有参考帧的图像检测结果,并对b帧图像数据所有参考帧的图像检测结果中所有已检测框进行分类排序,得到该b帧图像数据的待设定框排序;并基于该b帧图像数据的待设定框排序对b帧图像数据的参考帧的图像检测结果进行设定,获取该b帧图像数据的设定后的参考帧的图像检测结果,并在处理单元获取该b帧图像数据的所有子重建结果后对该b帧图像数据的所有子重建结果进行合并,得到该b帧图像数据的重建结果。

需要说明的是,该单元仅用于利用本发明结构实现视频实时检测的过程中。进一步地,待设定框排序单元对b帧图像数据的待设定框排序的获取过程包括:将解码顺序中第一个b帧图像数据作为目标b帧图像数据;基于b类帧的运动矢量获取目标b帧图像数据的参考帧,并将目标b帧图像数据对应的所有参考帧中所有已检测框按预设分类要求进行分类,并将分类后的已检测框按预设类别顺序进行排序,得到目标b帧图像数据的待设定框排序。需要说明的是,b帧图像数据的参考帧可能为i帧图像数据、p帧图像数据和b帧图像数据。且每个参考帧上的已检测框可能为多个。进一步,预设分类要求为:已检测框内的内容相同;则针对目标b帧图像数据对应的所有参考帧中所有已检测框按预设分类要求进行分类并进行排序过程即为:将该目标b帧图像数据的所有参考帧内的所有已检测框中内容相同的归为一类已检测框,而后再根据提前设置的预设类别顺序将上述已分类完成的该目标b帧图像数据对应的所有参考帧中所有已检测框进行排序,得到该目标b帧图像数据的待设定框排序。

待设定框排序单元基于b帧图像数据的待设定框排序对该b帧图像数据的参考帧的图像检测结果进行设定过程包括:按待设定框排序将第一类已检测框作为待设定框;而后针对该待设定框构建对应的子重建结果过程包括;即在该b帧图像数据所有具有待设定框的参考帧的图像检测结果中,设定待设定框及其内部像素点为第一类颜色,并设定待设定框外的其它像素点为第二类颜色,获取针对该待设定框的该b帧图像数据的设定后的参考帧的图像检测结果,即获取了b帧图像数据部分设定后的参考帧的图像检测结果;而后将针对该待设定框的该b帧图像数据的设定后的参考帧的图像检测结果存储在主存中,待处理单元基于其获取该b帧图像数据的子重建结果。需要说明的是,设定后的参考帧的图像检测结果包括设定后的i类帧图像检测结果和设定后的p类帧图像检测结果。

需要说明的是,b帧图像数据所有具有待设定框的参考帧可能有一个,也可能有多个;若针对当前的待设定框仅存在一个具有该待设定框的参考帧,则在进行设定时仅需在一个参考帧的图像检测结果中,设定待设定框及其内部像素点为第一类颜色,并设定待设定框外的其它像素点为第二类颜色;若针对当前的待设定框存在多个具有该待设定框的参考帧,则需在多个具有该待设定框的参考帧的图像检测结果中设定待设定框及其内部像素点为第一类颜色,设定待设定框外的其它像素点为第二类颜色。其中第一类颜色中的颜色和第二类颜色中的颜色不同,第一类颜色中包含多种颜色,且每b帧图像数据对应所有参考帧图像数据中不同类的已检测框及其内部像素点设定的颜色不同。即假设b帧图像数据对应所有参考帧图像检测结果中包含n个类别已检测框,在进行设定时需将n个类别已检测框及其内部像素点设定为n种颜色,且将所有参考帧图像检测结果中所有已检测框外的其他像素点为第n+1种颜色,其中前n种颜色为第一类颜色中的颜色,第n+1种颜色为第二类颜色中的颜色。上述设定可使得每个设定后的i帧图像检测结果或设定后的p帧图像检测结果中不同类已检测框及其内部像素点颜色、以及该帧图像检测结果中所有已检测框外的颜色是不相同的。

同时待设定框排序单元还用于判断处理单元处理得到的子重建结果是否为当前对应b帧图像数据待设定框排序中最后一类已检测框所对应的子重建结果,若是则将该b帧图像数据的所有子重建结果进行合并,得到该b帧图像数据的重建结果。

处理单元在实现视频实时识别分割过程中,可用于根据b帧图像数据的参考帧中的所有图像分割结果以及所有已获取的b帧图像数据的重建结果获取该b帧图像数据的重建结果;而在实现视频实时检测的过程中,则用于基于b帧图像数据对应的设定后的参考帧的图像检测结果、b帧的运动矢量以及已获取的b帧图像数据的重建结果获取该b帧图像数据的子重建结果。

具体地,为了得到bx帧图像数据的重建结果,通常我们需要依次从bx帧图像数据的分割小块的运动矢量中的(srcx,srcy)取出参考帧sref的对应分割小块,而后将取出的对应分割小块放入坐标为(dstx,dsty)的当前帧重建结果中。更进一步地,为了更好地对b帧图像数据的重建结果获取过程进行说明,以下展示了b类帧图像数据中b1帧图像数据中的(dstx,dsty)为(256,108)的分割小块重建结果的获取过程:即(dstx,dsty)为(256,108)的分割小块有两个运动矢量(b1,i0,256,108,240,136,f)和(b1,p4,256,108,392,232,t),因此其需使用两个参考分割小块来重建;我们通过两个运动矢量定位到两个参考分割小块,在这个例子中是(240,136)和(392,232),这两个参考分割小块分别来自参考帧i0和p4。而后我们采取均值滤波器的方式将从不同的参考分割小块数据逐像素点取平均值,得到b1帧图像数据的(dstx,dsty)为(256,108)的分割小块重建结果。其中,scur表示当前帧的图像分割结果,sref表示参考帧的图像分割结果,srcx和srcy表示sref的分割小块的x,y坐标,dstx,和dsty表示scur的分割小块的x,y坐标。

处理单元则是用于接收运动矢量对应的参考分割小块,并基于参考分割小块获取b帧图像数据的某分割小块重建结果的过程;进一步其具体过程如下:处理单元基于运动矢量的目的横坐标和目的纵坐标,将接收到的对应的参考分割小块放入到目的位置,并查看对应运动矢量,判断该参考分割小块是否为双向预测的第二块,如果是,则使用处理单元进行均值滤波,如果不是则将处理单元看作缓存器,用于存储参考分割小块,而后将对应的运动矢量从运动矢量存储单元中删除。

要想获取b类帧的重建结果,则需先获取b类帧图像数据中每帧图像数据的重建结果,由每帧图像数据的重建结果构成b类帧的重建结果;而获取每帧图像数据的重建结果则需获取对应帧图像数据中每分割小块的重建结果,由每帧图像数据中对应所有分割小块的重建结果构成对应每帧图像数据的重建结果。而处理单元即是通过依次构建每个分割小块的重建结果来实现后续每帧图像数据的重建结果的获取,以及进一步b类帧的重建结果的获取。

需要说明的是,在实现视频实时识别分割过程中,处理单元的参考分割小块来自于b帧图像数据的参考帧中的所有图像分割结果或所有已获取的b帧图像数据的重建结果;而在实现视频实时检测的过程中,处理单元的参考分割小块则来自于b帧图像数据对应的设定后的参考帧的图像检测结果或已获取的b帧图像数据的重建结果。

神经网络处理模块中包括第一预设神经网络、第二预设神经网络及第三预设神经网络。

第一预设神经网络用于基于i类帧图像数据和p类帧图像数据获取i帧类视频分割结果和p帧类视频分割结果;优选地,第一预设神经网络为用于视频分割的大型深层神经网。第三预设神经网络则用于基于i类帧图像数据和p类帧图像数据获取i帧类视频检测结果和p帧类视频检测结果;优选地,第三预设神经网络为用于视频检测的大型深层神经网络。

第二预设神经网络用于对b类帧的重建结果、i类帧图像分割结果和p类帧图像分割结果进行处理,得到b类帧的图像分割结果。进一步地,b类帧的图像分割结果包括所有b帧图像数据的图像分割结果,而每个b帧图像数据的图像分割结果是依次获取的。更进一步地,首先分别将b类帧重建结果中的单帧图像数据的重建结果、播放顺序中该帧重建结果所对应前序第一个i帧图像数据或p帧图像数据的图像分割结果和后续第一个i帧图像数据或p帧图像数据的图像分割结果作为一个输入组;而后将所有输入组依次输入到第二预设神经网络中,分别得到每输入组对应的b帧图像数据的图像分割结果;最后将所有b帧图像数据的图像分割结果进行集合,得到b类帧的图像分割结果。

第二预设神经网络还用于对b类帧的重建结果、设定后的i类帧图像检测结果、设定后的p类帧图像检测结果进行检测,得到b类帧的图像检测结果。进一步地,同上b类帧的图像检测结果包括所有b帧图像数据的图像检测结果,而每个b帧图像数据的图像检测结果是依次获取的。更进一步地,首先分别将b类帧重建结果中的单帧图像数据的重建结果、播放顺序中该帧重建结果所对应前序第一个设定后的i帧图像数据或p帧图像数据的图像检测结果和后续第一个设定后的i帧图像数据或p帧图像数据的图像检测结果作为一个输入组;而后将所有输入组依次输入到第二预设神经网络中,分别得到每输入组对应的b帧图像数据的图像检测结果;最后将所有b帧图像数据的图像检测结果进行集合,得到b类帧的图像检测结果。需要说明的是,上述设定后的i类帧图像检测结果和设定后的p类帧图像检测结果可由待设定框排序单元获取,并存储在主存中。

需要说明的是,上述第二预设卷积神经网络包括卷积层、池化层和激活层三类层,其中,第一层的输入图像通道具有三个输入通道。优选地,每个输入组在输入时,将每组中的b帧图像数据的重建结果输入到第二预设卷积神经网络的第一层的第二输入通道,将播放顺序中该帧图像数据的重建结果所对应前序第一个i帧图像数据或p帧图像数据的图像分割结果和后续第一个i帧图像数据或p帧图像数据的图像分割结果输入到第二预设卷积神经网络的第一层的第一输入通道和第三输入通道;或每个输入组在输入时,将每组中的b帧图像数据的重建结果输入到第二预设卷积神经网络的第一层的第二输入通道,将播放顺序中该帧图像数据的重建结果所对应前序第一个设定后的i帧图像数据或p帧图像数据的图像检测结果和后续第一个设定后的i帧图像数据或p帧图像数据的图像检测结果输入到第二预设卷积神经网络的第一层的第一输入通道和第三输入通道。

主存主要用于对i帧类图像数据、p帧类图像数据、i帧类视频分割结果、p帧类视频分割结果、i帧类视频检测结果、p帧类视频检测结果、设定后的i类帧图像检测结果、设定后的p类帧图像检测结果、b帧类的重建结果、b帧类视频分割结果以及b帧类的视频检测结果进行存储。

在实施例中,我们提出了对运动矢量的重调度方法来合并多个运动矢量对主存的访问请求。更进一步地,我们在视频识别处理模块中设计了合并单元。

合并单元用于从运动矢量存储单元中依次获取m个待发送访问请求的运动矢量,并按预设合并方式将获取的m个运动矢量的访问请求进行合并,得到至少一个合并访问请求;其中,预设合并方式为:将m个运动矢量中参考帧号和源纵坐标均相同的运动矢量所对应的访问请求合并成一个合并访问请求;m为正整数。图2示出了本发明实施例一中合并单元的一种重调度方法示意图;参考图2所示,假设合并单元收集了8个待发送访问请求的运动矢量,分别来自于b_1,b_2,b_3(cur),并指向同一参考帧i_0的不同位置。合并单元根据运动矢量的参考帧号(ref)和源纵坐标(srcy)将上述8个运动矢量的访问请求合并成四个合并访问请求,分别为(0,11),(0,13),(0,2),(0,5)。其合并规律本质上是根据运动矢量想要访问的参考帧的行号来合并请求,原因是在主存中数据一般是行优先排列的,因此以行为单位向主存发送请求,可以更好地利用主存的突发特性。由于我们每次请求一整行的数据,但是并不是所有数据在重建过程中都会被用到,因此合并单元会在请求的数据回来后,根据运动矢量中指定的当前帧号(cur)、目的横坐标(dstx)、目的纵坐标(dsty)将数据发送给处理单元。

本发明实施例提供的视频实时识别分割及检测架构,通过设置视频解码器对目标视频进行解码;通过设置神经网络处理模块对i/p类帧图像数据进行处理获取i/p帧类视频分割结果和i/p帧类视频检测结果,以为b类帧的重建结果的获取提供实现基础,并基于b类帧的重建结果获取b类帧的图像检测结果;通过设置视频识别处理模块来对b类帧的重建结果进行获取,且为了提高b类帧的重建结果的获取效率,更提出了对解码顺序分两个队列重新排列、合并运动矢量访问请求等优化方案;通过设置主存对上述各模块中的处理结果进行存储。本发明结构通过将视频解码器和神经网络紧密地联系起来,来维持准确率的同时实现更高的性能,解决现有对视频识别任务处理方法无法在确保精度较高的基础上降低计算量和能耗的问题。

实施例二

为解决现有技术中存在的技术问题,本发明实施例提供了一种视频实时识别分割及检测架构。

本发明实施例视频实时识别分割及检测架构是在实施例一去除合并单元后的基础上进行的进一步限定。

为了加速重建操作对参考帧的索引速度,可以提前将参考帧从主存读入缓冲器,只要接下来连续的运动矢量都指向该参考帧,则可以避免大量的主存访问。具体如下:

图3示出了本发明实施例二视频实时识别分割及检测架构的一种结构示意图;参考图3所示,本发明实施例视频实时识别分割及检测架的视频识别处理模块还包括缓冲器。

缓冲器用于从主存中预取b帧图像数据参考帧的图像分割结果或图像检测结果以及已完成b帧图像数据的重建结果,并基于已预取的参考帧的图像分割结果或图像检测结果以及已完成b帧图像数据的重建结果获取运动矢量存储单元中存储的所有具有参考帧帧号的运动矢量对应的参考分割小块,并将获取的参考分割小块发送给处理单元。

具体地,本发明实施例在缓冲器中设定了预取指针和搜索指针。进一步地,预取指针指向运动矢量存储单元中的第一个运动矢量,将其作为预取运动矢量;而后预取指针从主存中获取预设运动矢量中参考帧的图像分割结果或图像检测结果以及已完成b帧图像数据的重建结果并存储,并将预取运动矢量中的参考帧帧号发送给搜索指针。

搜索指针在运动矢量存储单元中搜索所有参考帧帧号为预设运动矢量参考帧帧号的运动矢量,并将所有参考帧号为预设运动矢量参考帧帧号的运动矢量构成同类运动矢量组。需要说明的是,同类运动矢量组中包括当前运动矢量存储单元中的第一个运动矢量。而后搜索指针基于存储在缓冲器中的预设运动矢量中参考帧的图像分割结果或图像检测结果以及已完成b帧图像数据的重建结果,依次获取同类运动矢量组中所有运动矢量的参考分割小块,并将其发送给处理单元。而后从运动矢量存储单元中删除同类运动矢量组中的所有运动矢量。

判断当前运动矢量存储单元中是否还存在运动矢量,若存在则预取指针指向当前运动矢量存储单元中的第一个运动矢量,并重复上述预取指针和搜索指针工作过程;否则结束预取。

本发明实施例提供的视频实时识别分割及检测架构,通过设置视频解码器对目标视频进行解码;通过设置神经网络处理模块对i/p类帧图像数据进行处理获取i/p帧类视频分割结果和i/p帧类视频检测结果,以为b类帧的重建结果的获取提供实现基础,并基于b类帧的重建结果获取b类帧的图像检测结果;通过设置视频识别处理模块来对b类帧的重建结果进行获取,且为了提高b类帧的重建结果的获取效率,更提出了对解码顺序分两个队列重新排列、利用缓冲器对参考帧进行缓存等优化方案;通过设置主存对上述各模块中的处理结果进行存储。本发明结构通过将视频解码器和神经网络紧密地联系起来,来维持准确率的同时实现更高的性能,解决现有对视频识别任务处理方法无法在确保精度较高的基础上降低计算量和能耗的问题。

实施例三

为解决现有技术中存在的技术问题,本发明实施例提供了一种视频实时识别分割及检测架构。

本发明实施例视频实时识别分割及检测架构是在实施例一去除合并单元后的基础上进行的进一步限定。由于视频帧序列中存在多个b帧图像数据参考同一参考帧的情形,因此本实施例使用二维高速缓冲存储器暂存参考帧可以减少大量重复的访存请求,降低系统访存引入的开销。具体如下:

图4示出了本发明实施例三视频实时识别分割及检测架构的一种结构示意图;参考图4所示,本发明实施例视频实时识别分割及检测架构的视频识别处理模块还包括二维高速缓冲存储器。

图5示出了本发明实施例三中二维高速缓冲存储器的一种结构示意图;参考图5所示,二维高速缓冲存储器用于从主存获取b帧图像数据的参考帧的分割结果并缓存;二维高速缓冲存储器包括不少于一个的体存储结构,体存储结构中设置有不少于一组的组存储结构,组存储结构中设置有不少于一个的路存储单元。

传统高速缓冲存储器中数据都是按照一维形式存储的,而对于二维图像,显然一维的数据组织方式无论从设计还是存取来说都不够高效,为此本发明设计了一种二维高速缓冲存储器。整个二维高速缓冲存储器采用多体多路组相联的设计模式,最外层的存储结构为二维高速缓冲存储器体存储结构(cbank),每个二维高速缓冲存储器体存储结构中设置有多组存储结构,而每个组存储结构内设置有多个路存储单元。组内使用二维标签比对的方式来确定高速缓冲存储器行的位置。

图6示出了本发明实施例三中参考分割小块在主存中的三种跨越基本块边界的情形。为提高图像中相邻像素块的存取效率,本发明将主存中二级块中空间相邻的四个三级块分别映射到不同的二维高速缓冲存储器体存储结构中,方便对图6所示的三种跨边界情形进行并行读取。基于上述映射规则,每个主存中体存储结构中将有1/4的三级块被映射到同一二维高速缓冲存储器体存储结构内,进而每个主存页中会有1/4的参考分割小块被映射到同一二维高速缓冲存储器体存储结构内,为了降低cacheline的替换频率,二维高速缓冲存储器中组存储结构的容量应大于一个主存页中块数的1/4。二维高速缓冲存储器的组存储结构索引与主存页号相关联,每个主存页中的部分(1/4)参考分割小块被映射到二维高速缓冲存储器的一个组中。

二维高速缓冲存储器地址结构包括x地址和y地址;x地址和y地址均包括标签、索引以及二维高速缓冲存储器的体存储结构。其中,主存的体存储结构地址、行地址的高位以及列地址的高位分布于x地址和y地址的标签中,x地址和y地址的标签包括主存行地址的低位,所述x地址和y地址的标签分别包括主存列地址中的一位。

高速缓冲存储器内数据是按照二维坐标进行索引,因此本发明使用地址对(xaddx,yaddy)来确定数据在高速缓冲存储器中的位置。二维高速缓冲存储器包含4个体存储结构,用两个二进制位对其进行寻址,其中x维度分配1位,y维度分配1位,二维高速缓冲存储器体存储结构地址可以根据主存的列地址生成。组存储结构索引使用二维index坐标,前面提到组存储结构索引与主存页号关联,因此index字段的地址可以由主存行地址生成,其表示位数与二维高速缓冲存储器体存储结构内的组存储结构数量相关,假设二维高速缓冲存储器体存储结构内有cbx·cby组,则x维度index的位数为[log2cbx],同理y维度的index位数为[log2cby]。在组存储结构的内部通过二维标签对比的方式确定cacheline的位置,为了区分分配到二维高速缓冲存储器体存储结构内隶属同一个二级块内的若干三级块,需要使用列地址对其加以辨识;主存中不同体存储结构内相同位置的三级块会被分配到同一二维高速缓冲存储器体存储结构的相同组中,因此还需要使用主存中的体存储结构索引对其加以区分;此外,不同图像组也可能分配到同一二维高速缓冲存储器体存储结构的同一组存储结构中,因此主存行地址也应被作为二维高速缓冲存储器标签标记的一部分,将这些地址位分配到x和y维度,便组成了标签的二位索引标记。

图8示出了本发明实施例三中一种主存地址转换为二维高速缓冲存储器地址的示意图;每个二维高速缓冲存储器体存储结构内有16×16个组,因此组存储结构索引在每个维度使用4个二进制位来表示,因为一个图像组中的不同主存页被分别映射到不同二维高速缓冲存储器组存储结构中,单位图像组的大小为256个主存页,所以截取主存行地址的低8位作为体存储结构中的组存储结构索引;对于组内结构,横向的8个单元恰好可以存放8个主存体存储结构的数据,因此使用主存体存储结构号作为x维度的标签位;组内每列暂存的数据与主存列地址和行地址有关,除去主存地址中的冗余位和已使用位,将列地址的高3位和行地址的高7位拼接起来作为y维度的标签位。综上,二维高速缓冲存储器的地址完全根据主存地址得出,无需复杂的运算和硬件实现,转换效率很高。

数据在主存中是线性存储的,传统的数据映射机制按行(或列)顺序将图像存储在主存单元中,而读取参考像素通常请求的是一块数据,表现在图像上是一个局部的二维像素块,这就导致每次读入行缓冲区中的像素有很多都是不被使用的冗余数据,从而造成访存效率低下。为了解决这个问题,本发明针对二维图像数据设计了一种预设存储映射规则,将图像分为三级映射到主存中,每一级对图像进行不同粒度的切分,使图像能够以合适的大小逐块写入主存,这样在每次读取参考块时,几乎没有冗余。

图7示出了本发明实施例三中二维图像数据到主存的映射示意图;参考图7所示,设定存储在主存中的二维图像数据均符合预设存储映射规则;预设存储映射规则为:二维图像数据分为三级映射到主存中,且每一级映射均对二维图像数据进行不同粒度的切分;其中,二级映射中的二级块数量与主存中体存储结构数量相同,三级映射中的三级块尺寸大小为主存的突发长度和数据总线的宽度之积除以8;且二维图像数据包括i帧类图像数据、p帧类图像数据、i帧类视频分割结果、p帧类视频分割结果、i帧类视频检测结果、p帧类视频检测结果、b帧类的重建结果、b帧类视频分割结果以及b帧类的视频检测结果。

ddrxsdram一次突发可以连续返回bl·us_width/8字节数据(bl·us_width均由主存定义),因此二维图像数据的最小分割分块(cacheline)也应包含bl·us_width/8字节数据。假设输入图像的分辨率为px·py,第一级映射将二维图像数据按行(或列)划分为若干个x1·y1小的矩形块;第二级映射在一级块内部切分出nbank尺寸一致的矩形块(nbank为主存中体存储结构的数量),第二级划分满足并行读取的需要,提高了访存的吞吐量;第三级映射在每个二级块内继续分割出(x1·y1)/[nbank(x3·y3)]尺寸为x3·y3矩形块,其中x3y3=bl·us_width/8。图7示出了本发明实施例三中二维图像数据到主存的一种映射示意图;参考图7所示,我们选取分辨率为854*480的输入图像,第一级映射按列将图像切分为128*64大小的矩形块;此处选取的主存包含8个体存储结构,因此,第二级将尺寸为128*64的矩形块划分为8个32*32大小的方形块;主存突发长度为8,数据总线宽度为64bit,因此主存突发可以连续访问64字节数据,若像素点按照8bit数据位长存储,则第三级可以划分出16个8*8的三级块,每个三级块的数据量即为64字节,各个三级块映射到主存中一行起始地址为8的倍数,长度为64字节的单元上,每次读取参考分割小块时无需多次读取或裁剪,即可返回一个完整的数据块。

主存地址中包含channel,rank,bank,row,column等信息,各字段的顺序可以随意组合,长度依据主存大小或设计需求来确定。根据jesd79-3规范,主存列地址的低3位(c2,c1,c0)被用于突发顺序功能,一般情况下,顺序读写模式取{c2,c1,c0}={0,0,0}。为了对齐突发长度bl,令主存地址低log2bl为0,将上述为0的二进制位重合,则主存地址的低max(log2bl,3)均为0。为避免访问同一主存中的体存储结构内数据时进行频繁的主存页切换,我们使第二级映射的二级块内x1·y1字节的数据存入主存阵列的一行中,每次读取一个主存中的体存储结构内的小块只需将行数据一次加载到行缓冲区中,设置主存为开放页面策略(openpagepolicy),发送列地址高位进行选通,极大减少了打开/关闭主存页的开销。不同的一级块被存储在主存阵列的不同行中,相同一级块内的不同主存中的体存储结构存储在主存不同主存中的体存储结构的同一行地址上。图9示出了本发明实施例三中一种符合主存地址设计的主存地址格式示意图;该地址低6位均为0,列地址的高7位被用于译码,支持对图7中二级块内16个8*8的小块进行寻址;行地址长度为15位,最大支持对32768个一级块进行寻址;主存包含8个主存中的体存储结构,使用3个二进制位进行寻址,地址线宽度为32位,剩余1位分配给channel或者rank,可根据实际情况确定该位的用途和取值。

基于上述数据映射方式和主存地址格式,此处讨论一个参考分割小块地址的生成。具体假设该参考块所属帧号为fi,帧内坐标为xi·yi,则可以基于参考分割小块所属帧号及其帧内坐标获取参考分割小块所存储的主存页pgi,具体参考公式(1):

其中,pagesincol表示图像中一列包含的page;

而后基于参考分割小块所存储的主存页获取参考分割小块的行地址,具体参考公式(2):

ri=fi·pagesinframe+pgi(2)

其中,pagesinframe表示一个图像中总共包含的page数量;

在二级块内,可基于参考分割小块的帧内坐标获取参考分割小块在主存中所属体存储结构索引,具体参考公式(3):

bi=ximodx1/x2·banksincol+yimody1/y2(3)

其中,banksincol表示在一级块中一列包含的二级块数量,mod表示模运算的运算符;

基于参考分割小块的帧内坐标计算参考分割小块在二级块内的索引值,具体地,由于主存中同一体存储结构中的所有参考分割小块均存储在主存阵列的同一行中,因此需要通过列地址对这些块进行寻址,首先基于主存的列地址计算参考分割小块在二级块内的索引值,具体参公式(4):

blki=ximodx1modx2/x3·blocksincol+yimody1mody2/y3(4)

其中,banksincol表示在二级块中一列包含的三级块数量,

进而基于参考分割小块在二级块内的索引值,计算参考分割小块的列地址,具体参考公式(5):

若上述乘除法运算或模运算的操作数均为2的幂次,可直接通过移位运算或者借助于掩码的位运算计算得出,使用硬件实现的开销很小。

二维高速缓冲存储器的组内寻址和块替换策略为分别从两个维度使用最近最久未使用的规则对最近最久未使用的块进行替换。首先,对于二维高速缓冲存储器组中的x维度,该维度与主存中的提存储结构相对应,同一主存中的提存储结构内的数据块被挂载在同一列上,不同主存中的提存储结构的数据分列于不同标签_y标记;对于y维度,对相同主存中的提存储结构的数据(可能隶属于不同的视频帧中)执行一维组内寻址和块替换更新策略。这种设计兼顾了对cacheline访存频率和时间的统计,可以更加有效地提高二维高速缓冲存储器命中率,从时间复杂度上讲,进行组内寻址的复杂度为o(n),明显优于二维阵列逐元素比对的时间复杂度。

为了配合存储系统设计中降低主存页切换开销这一设计理念,本发明提出了基于主存页的读请求调度算法,该算法用于对视频解码器所产生的访问参考像素块的读请求进行调度,在每一个运动矢量信息项中添加主存页字段,第一次扫描运动矢量表时计算每一个参考分割小块(mvitem)所属的主存页pgi,以后每次搜索优先调度处于相同主存页中的像素块发送读请求,当一个主存页内所有请求都已发出后,执行下一次轮询,重复上述操作,直至清空视频解码器,这种算法打破了源视频帧的界限,以主存页作为一次调度的基本单位,尽可能提高读请求对主存行的命中率,减少了主存页切换次数,从而提高系统整体的访存性能。

本发明实施例提供的视频实时识别分割及检测架构,通过设置视频解码器对目标视频进行解码;通过设置神经网络处理模块对i/p类帧图像数据进行处理获取i/p帧类视频分割结果和i/p帧类视频检测结果,以为b类帧的重建结果的获取提供实现基础,并基于b类帧的重建结果获取b类帧的图像检测结果;通过设置视频识别处理模块来对b类帧的重建结果进行获取,且为了提高b类帧的重建结果的获取效率,更提出了对解码顺序分两个队列重新排列、二维高速缓冲存储器对参考帧进行缓存等优化方案;通过设置主存对上述各模块中的处理结果进行存储。本发明结构通过将视频解码器和神经网络紧密地联系起来,来维持准确率的同时实现更高的性能,解决现有对视频识别任务处理方法无法在确保精度较高的基础上降低计算量和能耗的问题。

虽然本发明所公开的实施方式如上,但的内容只是为了便于理解本发明而采用的实施方式,并非用以限定本发明。任何本发明所属技术领域内的技术人员,在不脱离本发明所公开的精神和范围的前提下,可以在实施的形式上及细节上作任何的修改与变化,但本发明的保护范围,仍须以所附的权利要求书所界定的范围为准。

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