本申请涉及现场可编程门阵列fpga硬件加速领域,尤其涉及一种卷积神经网络的图像处理方法及装置。
背景技术:
卷积神经网络在计算机视觉领域应用广泛,尤其是在目标检测和图像识别等方面显示除了良好的应用前景。
请参见图1,为现有技术中利用卷积神经网络进行图像识别的流程示意图。在触发视频传感器,例如摄像头,摄像头将采集的图像数据输入至视频图尺寸模块,由视频图尺寸模块处理成预设尺寸的图像数据,例如416*416。由输入缓存前处理模块将偏置(bias)、权重和图像数据传输至卷积计算阵列。卷积计算阵列在对图像数据进行卷积神经网络计算后,由输入缓存后处理模块对卷积神经网络计算后的结果进行处理,例如上采样(upsample)、池化(pooling)等。输入缓存后处理模块将处理完的结果通过双倍速率(doubledatarate,ddr)控制器写入ddr中,例如ddr3或ddr4,然后将处理完的结果输入至卷积神经网络的下一层,以进行下一层卷积神经网络的计算。在卷积神经网络所有层的计算完成后,才能再次启动摄像头以采集下一帧图像数据。
根据图1所示的流程示意图可以看出,需要在一帧图像数据完全处理完成后才能再次启动摄像头,从而导致帧率较低。
技术实现要素:
本申请提供一种卷积神经网络的图像处理方法,用于提高帧率。
第一方面,本申请提供了一种卷积神经网络的图像处理方法,该方法可以由axi控制器执行。该方法包括:
确定第一指针所指向的第一存储空间;其中,所述第一指针用于指示待进行卷积神经网络计算的图像数据的存储空间;
根据所述第一指针,从所述第一存储空间中读取第i帧图像数据,以进行卷积神经网络计算;
其中,在对所述第i帧图像数据进行所述卷积神经网络计算的过程中,将获取的第i+a帧图像数据存储在第二指针指向的第二存储空间中,同时从第三指针指向的第三存储空间中读取特征图像,所述特征图像是第i-1帧图像数据经过所述卷积神经网络计算得到的,a为大于或等于1的整数,所述第一存储空间、所述第二存储空间及所述第三存储空间位于同一内存上。
在本申请实施例中,在对第i帧图像数据进行卷积神经网络计算时,可以将获取的第i+a帧图像数据存储在第二指针指向的第二存储空间中,同时从第三指针指向的第三存储空间中读取特征图像,也就是说在本申请实施例中,图像数据的存储,卷积神经网络的计算及图像数据的显示这三个步骤可以同时进行,因此能够减少一帧图像的处理时长,提高了帧率。
进一步,本申请实施例中图像数据的存储、卷积神经网络的计算以及图像数据的显示这三个步骤是对同一内存的访问,而不是两个独立的内存(例如,其中一个内存用a表示,另一个用b表示,则内存a用于图像数据的存储和卷积神经网络计算的读,内存b用于卷积神经网络的计算写和图像数据显示的读),能够减少一次将获取的图像数据从内存a写入内存b的过程,提高了系统处理速度,从而能够进一步提高帧率。
进一步,本申请实施例中由于是对一个内存的访问,因此可以将两个内存控制变成一个内存控制,减少了一个内存控制的逻辑功能和资源消耗。
在本申请实施例中,由于卷积神经网络的计算的处理速度较慢,因此在卷积神经网络的计算过程中,可能已经采集多帧图像,所以此处是i+a帧图像,a为大于或等于1的整数。
在一个可能的设计中,所述内存上的不同存储空间利用不同的帧号标识;
所述第一存储空间的帧号等于所述第三存储空间的帧号加1。
在本申请实施例中,为保证卷积神经网络计算和显示能够同时进行,则显示的内容为当前进行卷积神经网络计算的图像数据的上一帧图像数据的处理结果。
在一个可能的设计中,确定第一指针所指向的第一存储空间,包括:
确定所述第一指针当前指向的存储空间的帧号加1是否等于所述第二指针当前指向的存储空间的帧号;
若等于,则确定所述第一指针当前指向的存储空间为所述第一存储空间。
在本申请实施例中,第一指针当前指向的存储空间的帧号指的是上一次读取的待进行卷积神经网络计算的图像数据所在存储空间的帧号,例如上一次读取的待进行卷积神经网络计算的图像数据所在的存储空间的帧号为1,第一指针当前指向的存储空间的帧号为1。第二指针当前指向的存储空间的帧号指的是上一次获取的图像数据应存储的存储空间的帧号。例如,上一次获取的图像数据所存储的存储空间的帧号为2,则第二指针当前指向的存储空间的帧号是2。
此处确定第一指针当前指向的存储空间的帧号加1是否等于第二指针当前指向的存储空间的帧号的目的是为了判断存储空间中当前是否存在可供读取的图像数据。若等于,则表明获取的图像数据被读完,此时第一指针仍指向当前指向的存储空间。
在一个可能的设计中,所述方法还包括:
若不等于,则将所述第一指针当前指向的存储空间的帧号加1,得到第一帧号;
确定所述第一帧号对应的存储空间为所述第一存储空间。
若不等于,则表明获取的图像数据还没有被读完,此时可以将当前指向的存储空间的帧号加1,也就是从当前指向的存储空间的下一个存储空间中读取待进行卷积神经网络计算的图像数据。
在一个可能的设计中,将获取的第i+a帧图像数据存储在第二指针指向的第二存储空间中,包括:
确定所述第二指针当前指向存储空间的帧号加1是否等于所述第三存储空间的帧号;
若等于,则确定所述第二指针当前指向的存储空间为所述第二存储空间;
将所述第i+a帧图像数据存储在所述第二存储空间中。
此处确定第二指针当前指向的存储空间的帧号加1是否等于第三存储空间的帧号的目的是为了判断存储空间中是否被写满。也就是说当前的存储空间中存储的图像数据均没有被读取,在该情况下,第二指针仍指向当前所指向的存储空间,也就是第i+a帧图像数据存储在当前指向的存储空间中。
在一个可能的设计中,所述方法还包括:
若不等于,将所述第二指针当前指向存储空间的帧号加1,得到第二帧号;
将所述第二帧号对应的存储空间作为所述第二存储空间。
若不等于,则表明获取的图像数据中有的图像数据已被读取,在该情况下,第二指针则指向当前所指向的存储空间的下一存储空间。
第二方面,本申请实施例提供一种卷积神经网络的图像处理装置,包括:
存储器,用于存储指令;
处理器,用于读取所述存储器中存储的指令,执行下列过程:
确定第一指针所指向的第一存储空间;其中,所述第一指针用于指示待进行卷积神经网络计算的图像数据的存储空间;
根据所述第一指针,从所述第一存储空间中读取第i帧图像数据,以进行卷积神经网络计算;
其中,在对所述第i帧图像数据进行所述卷积神经网络计算的过程中,将获取的第i+a帧图像数据存储在第二指针指向的第二存储空间中,同时从第三指针指向的第三存储空间中读取特征图像,所述特征图像是第i-1帧图像数据经过所述卷积神经网络计算得到的,a为大于等于1的整数,所述第一存储空间、所述第二存储空间及所述第三存储空间为一个内存的不同存储空间。
在一个可能的设计中,所述内存上的不同存储空间利用不同的帧号标识;
所述第一存储空间的帧号等于所述第三存储空间的帧号加1。
在一个可能的设计中,在所述处理器确定第一指针所指向的第一存储空间时,具体用于:
确定所述第一指针当前指向的存储空间的帧号加1是否等于所述第二指针当前指向的存储空间的帧号;
若等于,则确定所述第一指针当前指向的存储空间为所述第一存储空间。
在一个可能的设计中,所述处理器还用于:
若不等于,则将所述第一指针当前指向的存储空间的帧号加1,得到第一帧号;
确定所述第一帧号对应的存储空间为所述第一存储空间。
在一个可能的设计中,在所述是处理器将获取的第i+a帧图像数据存储在第二指针指向的第二存储空间中时,具体用于:
确定所述第二指针当前指向存储空间的帧号加1是否等于所述第三存储空间的帧号;
若等于,则确定所述第二指针当前指向的存储空间为所述第二存储空间;
将所述第i+a帧图像数据存储在所述第二存储空间中。
在一个可能的设计中,所述处理器还用于:
若不等于,将所述第二指针当前指向存储空间的帧号加1,得到第二帧号;
将所述第二帧号对应的存储空间作为所述第二存储空间。
第三方面,本申请提供一种卷积神经网络的图像处理装置,包括:
确定模块,用于确定第一指针所指向的第一存储空间;其中,所述第一指针用于指示待进行卷积神经网络计算的图像数据的存储空间;
读取模块,用于根据所述第一指针,从所述第一存储空间中读取第i帧图像数据,以进行卷积神经网络计算;
其中,在对所述第i帧图像数据进行所述卷积神经网络计算的过程中,将获取的第i+a帧图像数据存储在第二指针指向的第二存储空间中,同时从第三指针指向的第三存储空间中读取特征图像,所述特征图像是第i-1帧图像数据经过所述卷积神经网络计算得到的,a为大于等于1的整数,所述第一存储空间、所述第二存储空间及所述第三存储空间为一个内存的不同存储空间。
在一个可能的设计中,所述内存上的不同存储空间利用不同的帧号标识;
所述第一存储空间的帧号等于所述第三存储空间的帧号加1。
在一个可能的设计中,在所述确定模块确定第一指针所指向的第一存储空间时,具体用于:
确定所述第一指针当前指向的存储空间的帧号加1是否等于所述第二指针当前指向的存储空间的帧号;
若等于,则确定所述第一指针当前指向的存储空间为所述第一存储空间。
在一个可能的设计中,所述确定模块还用于:
若不等于,则将所述第一指针当前指向的存储空间的帧号加1,得到第一帧号;
确定所述第一帧号对应的存储空间为所述第一存储空间。
在一个可能的设计中,所述装置还包括:存储模块;
在所述存储模块将获取的第i+a帧图像数据存储在第二指针指向的第二存储空间中时,具体用于:
确定所述第二指针当前指向存储空间的帧号加1是否等于所述第三存储空间的帧号;
若等于,则确定所述第二指针当前指向的存储空间为所述第二存储空间;
将所述第i+a帧图像数据存储在所述第二存储空间中。
在一个可能的设计中,所述存储模块还用于:
若不等于,将所述第二指针当前指向存储空间的帧号加1,得到第二帧号;
将所述第二帧号对应的存储空间作为所述第二存储空间。
第四方面,本申请提供一种计算机存储介质,存储有用于执行上述第一方面、第一方面的任意一种设计的功能、或包含用于执行上述第一方面、第一方面的任意一种设计的方法所涉及的程序。
在本申请实施例中,在对第i帧图像数据进行卷积神经网络计算时,可以将获取的第i+a帧图像数据存储在第二指针指向的第二存储空间中,同时从第三指针指向的第三存储空间中读取特征图像,也就是说在本申请实施例中,图像数据的存储,卷积神经网络的计算及图像数据的显示这三个步骤可以同时进行,因此能够减少一帧图像的处理时长,提高了帧率。
进一步,本申请实施例中图像数据的存储、卷积神经网络的计算以及图像数据的显示这三个步骤是对同一内存的访问,而不是两个独立的内存(例如,其中一个内存用a表示,另一个用b表示,则内存a用于图像数据的存储和卷积神经网络计算的读,内存b用于卷积神经网络的计算写和图像数据显示的读),能够减少一次将获取的图像数据从内存a写入内存b的过程,提高了系统处理速度,从而能够进一步提高帧率。
进一步,本申请实施例中由于是对一个内存的访问,因此可以将两个内存控制变成一个内存控制,减少了一个内存控制的逻辑功能和资源消耗。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对本发明实施例中所需要使用的附图作简单地介绍,显而易见地,下面所介绍的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为现有技术中利用卷积神经网络进行图像识别的流程示意图;
图2为卷积运算的示意流程图;
图3为本申请实施例提供的卷积神经网络进行图像识别的流程示意图;
图4为ddr控制器控制的缓存管理;
图5为本申请提供的一种应用场景的示意图;
图6为本申请提供的一种卷积神经网络的图像处理方法的流程示意图;
图7为本申请提供的第一存储空间、第二存储空间及第三存储空间的示意图;
图8为本申请提供的一种卷积神经网络的图像处理的装置;
图9为本申请提供的另一卷积神经网络的图像处理的装置。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述。
以下,对本申请实施例中的部分用语进行解释说明,以便于本领域技术人员进行理解。
(1)卷积运算
假设输入是6×6×3的图像矩阵,卷积核是3×3×3权重矩阵,则图像矩阵与权重矩阵的卷积运算过程具体如下:
请参见图2,在6×6×3的图像矩阵中选取虚线框中的3×3×3的图像矩阵与3×3×3的卷积核做卷积计算,计算方式为3×3×3的图像矩阵中的27个元素与3×3×3的卷积核中的27个对应位置的元素相乘,再将27个乘积的结果求和作为第一个卷积值,存放在4×4×1卷积结果1的位置;接着虚线框向右移动一格,再将虚线框中的图像矩阵与卷积核做卷积运算,将计算结果放在4×4×1卷积结果2的位置;当虚线框移动到最右边后将向下移动一格,并移动到最左边,开始进行将虚线框中的图像矩阵与卷积核做卷积运算,将计算结果放在4×4×1卷积结果5的位置;接着虚线框再向右移动一格,并将卷积计算结果放到4×4×1卷积结果6的位置,直到虚线框移动到右下角的时候,将虚线框中的图像矩阵与卷积核做卷积运算,将计算结果放在4×4×1卷积结果的16位置,完成6×6×3的图像和3×3×3的卷积核的卷积计算。
(2)块随机存储器(blockram,bram),是双端口ram,包含两套完备的36比特(bit)读写数据总线以及相应的控制总线。
(3)帧率,是以帧为单位的位图图像连续出现在显示器上的频率。
基于图1所示的描述,现有技术中的卷积神经网络的图像处理方式导致帧率较低。为此,请参见图3,在触发视频传感器,例如摄像头,摄像头采集的图像数据存储在视频捕捉缓存模块中。在开始进行卷积神经网络计算时,ddr控制器从视频捕捉缓存模块中读取图像数据,输入至视频图尺寸模块、输入缓存前处理模块、卷积计算阵列模块、输入缓存后处理模块,输入缓存后处理模块处理后的结果存储在视频显示缓存模块中。
虽然图2所示的技术方案规避了图1中存在的缺陷,但是需要将存储在视频捕捉缓存模块中的原始图像数据拷贝到视频显示缓存模块中,而执行一次ddr读写,就会占用ddr读写视频一帧的带宽,增加了耗时,从而影响帧率。其中,ddr控制器控制的缓存管理请参见图4。
鉴于此,本申请实施例提出一种卷积神经网络的图像处理方法,在本申请实施例中,在对第i帧图像数据进行卷积神经网络计算时,可以将获取的第i+a帧图像数据存储在第二指针指向的第二存储空间中,同时从第三指针指向的第三存储空间中读取特征图像,也就是说在本申请实施例中,图像数据的存储,卷积神经网络的计算及图像数据的显示这三个步骤可以同时进行,因此能够减少一帧图像的处理时长,提高了帧率。
进一步,本申请实施例中图像数据的存储、卷积神经网络的计算以及图像数据的显示这三个步骤是对同一内存的访问,而不是两个独立的内存(例如图4所示),能够减少一次将获取的图像数据从视频捕捉缓存写入视频显示缓存的过程,提高了系统处理速度,从而能够进一步提高帧率。
进一步,本申请实施例中由于是对一个内存的访问,因此可以将两个内存控制变成一个内存控制,减少了一个内存控制的逻辑功能和资源消耗。
请参见图5,为本申请实施例提供的一种应用场景,包括:内嵌处理器(processingsystem,ps)端和现场可编程门阵列(field-programmablegatearray,fpga)可编程逻辑资源(programmablelogic,pl)端。其中,pl端包括:视图尺寸模块、输入缓存前处理模块、卷积神经网络计算模块、检测后处理模块,及axi(advancedextensibleinterface)控制模块;ps端包括ddr控制器、linux用户应用程序、设备驱动、qt库及opencv库,其中,pl端和ps端之间通过axi交互模块连接。
继续参见图5,图5中还包括安全数码卡(securedigitalmemory,sd)、显示器、存储器,例如ddr3或ddr4,以及视频传感器,例如摄像头。
下面结合附图介绍本申请实施例提供的技术方案,在下面的介绍过程中,以将本申请提供的技术方案应用在图5所示的应用场景中为例。
请参见图6,本申请一实施例提供一种卷积神经网络的图像处理方法,该方法可以由ddr控制器执行,该方法的流程描述大致如下:
s601:确定第一指针所指向的第一存储空间;
s602:根据所述第一指针,从所述第一存储空间中读取第i帧图像数据,以进行卷积神经网络计算;
其中,在对所述第i帧图像数据进行所述卷积神经网络计算的过程中,将获取的第i+a帧图像数据存储在第二指针指向的第二存储空间中,同时从第三指针指向的第三存储空间中读取特征图像,所述特征图像是第i-1帧图像数据经过所述卷积神经网络计算得到的,a为大于等于1的整数,所述第一存储空间、所述第二存储空间及所述第三存储空间位于同一内存上。
在本申请实施例中,ddr控制器设置三个指针,包括第一指针、第二指针及第三指针,第一指针用于指示待采集的图像数据应存储的存储空间,第二指针用于指示待进行卷积计算的图像数据的存储空间,第三指针用于指示待显示的图像数据的存储空间。
在本申请实施例中,对于步骤s601的实现过程,具体包括:
确定所述第一指针当前指向的存储空间的帧号加1是否等于所述第二指针当前指向的存储空间的帧号;
若等于,则确定所述第一指针当前指向的存储空间为所述第一存储空间。
若不等于,则将所述第一指针当前指向的存储空间的帧号加1,得到第一帧号;确定所述第一帧号对应的存储空间为所述第一存储空间。
在本申请实施例中,内存的不同存储空间被赋予不同的帧号,指针则指向不同帧号所对应的存储空间。具体请参见下表一,内存以ddr为例,地址0x0_0000~0x7f_ffff为预留存储空间,从地址0x80_0000开始存放卷积神经网络参数bias和权重weight。之后划分有四帧,也就是划分为四个存储空间,每个存储空间又划分为多个存储子空间,包括video_*_source,video_*_tempo,video_*_temp1,video_*_temp3,video_*_result。其中,video_*_tempo,video_*_temp1,video_*_temp3用来存储卷积神经网络计算的中间结果,video_*_result用来存储卷积神经网络计算的最终结果。其中*表示帧号,例如0,1,2,3。
表一
此处需要说明的是,为不同存储空间赋予的帧号也可以替换为其它名称,例如存储地址,只要能够起到标识存储空间的作用即可,在此不做限制。
另外,此处还需要说明的是,由于获取图像数据、卷积神经网络计算及图像数据的显示这三个步骤的处理时长是不一样的,例如,在进行卷积神经网络计算过程中,可能已经获取了多帧图像,因此在获取图像数据、卷积神经网络计算及图像数据的显示这三个步骤之间没有直接必然的联系。
在本申请实施例中,第一指针当前指向存储空间的帧号指的是上一次读取的待进行卷积神经网络计算的图像数据所在存储空间的帧号。具体请参见图7,上一次读取的待进行卷积神经网络计算的图像数据所在存储空间的帧号为2,则第一指针当前指向存储空间的帧号为2。
在本申请实施例中,在从第一指针指向的第一存储空间中读取第i帧图像数据之前,首先需要确定存储空间中是否存在可供读取的图像数据,也就是判断第一指针当前指向的存储空间的帧号加1是否等于第二指针当前指向的存储空间的帧号,在等于时,就表明存储空间中当前不存在可供读取的图像数据,则确定第一指针当前指向的存储空间为第一存储空间,从第一指针当前指向的存储空间中读取第i帧图像数据。若不等于,则表明存储空间中存在可供读取的图像数据,则将第一指针当前指向的存储空间的帧号加1得到第一帧号,从第一帧号对应的存储空间中读取第i帧图像数据。
继续沿用上述举例,假设在将获取的图像数据存储在帧号为3的存储空间中时(也就是第二指针当前指向的存储空间的帧号是3),需要读取待进行卷积神经网络的计算的图像数据,则确定第一指针当前指向的存储空间的帧号加1是否等于第二指针当前指向的存储空间的帧号,即判断2+1是否等于3,等于则确定第一指针当前指向的存储空间为第一存储空间,也就是从帧号是2的存储空间中读取第i帧图像数据。
在具体实现过程中,若在将获取的图像数据存储在帧号为0的存储空间中时(也就是第二指针当前指向的存储空间的帧号是0),需要读取待进行卷积神经网络的计算的图像数据,则确定第一指针当前指向的存储空间的帧号加1是否等于第二指针当前指向的存储空间的帧号,即判断2+1是否等于0,不等于零,则将2加1,得到第一帧号,也就是从帧号为3的存储空间中读取第i帧图像数据。
在本申请实施例中,将获取的第i+a帧图像数据存储在第二指针指向的第二存储空间中,包括:
确定所述第二指针当前指向存储空间的帧号加1是否等于所述第三存储空间的帧号;
若等于,则确定所述第二指针当前指向的存储空间为所述第二存储空间;
将所述第i+a帧图像数据存储在所述第二存储空间中。
若不等于,将所述第二指针当前指向存储空间的帧号加1,得到第二帧号;将所述第二帧号对应的存储空间作为所述第二存储空间。
在本申请实施例中,第一存储空间的帧号等于第三存储空间的帧号加1,也就是在第一指针指向的第一存储空间的帧号为2时,第三指针指向的第三存储空间的帧号为1,或在第一指针指向的第一存储空间的帧号为3时,第三指针指向的第三存储空间的帧号为2,或在第一指针指向的第一存储空间的帧号为0时,第三指针指向的第三存储空间的帧号为0。在进行卷积神经网络的计算过程中,需要将获取的图像数据进行存储时,首先确定存储空间中是否被写满,也就是判断第二指针当前指向的存储空间的帧号加1是否等于第三存储空间的帧号,等于则确定第二指针当前指向的存储空间为第二存储空间,将第i+a帧图像数据存储在当前指向的存储空间中;不等于,则将第二指针当前指向的存储空间的帧号加1,得到第二帧号,将第i+a帧图像存储到第二帧号对应的存储空间中。
假设从帧号为2的存储空间中读取待进行卷积神经网络计算的图像数据,相应的,第三指针指向的存储空间的帧号为1,若第二指针当前指向的存储空间的帧号是0,则判断0+1是否等于1,等于1时,则将第i+a帧图像数据存储在帧号为0的存储空间中。
继续沿用上述举例,若假设第二指针当前指向的存储空间的帧号是3,则判断3+1是否等于1,不等于,则将第二指针当前指向的存储空间的帧号3加1,得到第二帧号,也就是0,将获取的第i+a帧图像数据存储到帧号0对应的存储空间中。
下面结合说明书附图介绍本申请实施例提供的设备。
请参见图8,基于同一发明构思,本申请实施例提供一种卷积神经网络的图像处理的装置800,包括:
存储器801,用于存储指令;
处理器802,用于读取所述存储器中存储的指令,执行下列过程:
确定第一指针所指向的第一存储空间;所述第一指针用于指示待进行卷积神经网络计算的图像数据的存储空间;
根据所述第一指针,从所述第一存储空间中读取第i帧图像数据,以进行卷积神经网络计算;
其中,在对所述第i帧图像数据进行所述卷积神经网络计算的过程中,将获取的第i+a帧图像数据存储在第二指针指向的第二存储空间中,同时从第三指针指向的第三存储空间中读取特征图像,所述特征图像是第i-1帧图像数据经过所述卷积神经网络计算得到的,a为大于等于1的整数,所述第一存储空间、所述第二存储空间及所述第三存储空间为位于同一内存上。
在本申请实施例中,处理器802可以是中央处理器(centralprocessingunit,cpu),或特定应用集成电路(application-specificintegratedcircuit,asic),可以是一个或多个用于控制程序执行的集成电路,可以是基带芯片,等等。存储器的数量可以是一个或多个,存储器可以是只读存储器(read-onlymemory,rom)、随机存取存储器(randomaccessmemory,ram)或磁盘存储器,等等。
内存与存储器是相互独立的,内存可以是ddr3,也可以是ddr4。
在一个可能的设计中,所述内存上的不同存储空间利用不同的帧号标识;
所述第一存储空间的帧号等于所述第三存储空间的帧号加1。
在一个可能的设计中,在所述处理器802确定第一指针所指向的第一存储空间时,具体用于:
确定所述第一指针当前指向的存储空间的帧号加1是否等于所述第二指针当前指向的存储空间的帧号;
若等于,则确定所述第一指针当前指向的存储空间为所述第一存储空间。
在一个可能的设计中,所述处理器802还用于:
若不等于,则将所述第一指针当前指向的存储空间的帧号加1,得到第一帧号;
确定所述第一帧号对应的存储空间为所述第一存储空间。
在一个可能的设计中,在所述是处理器802将获取的第i+a帧图像数据存储在第二指针指向的第二存储空间中时,具体用于:
确定所述第二指针当前指向存储空间的帧号加1是否等于所述第三存储空间的帧号;
若等于,则确定所述第二指针当前指向的存储空间为所述第二存储空间;
将所述第i+a帧图像数据存储在所述第二存储空间中。
在一个可能的设计中,所述处理器802还用于:
若不等于,将所述第二指针当前指向存储空间的帧号加1,得到第二帧号;
将所述第二帧号对应的存储空间作为所述第二存储空间。
请参见图9,本申请提供一种卷积神经网络的图像处理装置900,包括:
确定模块901,用于确定第一指针所指向的第一存储空间;其中,所述第一指针用于指示待进行卷积神经网络计算的图像数据的存储空间;
读取模块902,用于根据所述第一指针,从所述第一存储空间中读取第i帧图像数据,以进行卷积神经网络计算;
其中,在对所述第i帧图像数据进行所述卷积神经网络计算的过程中,将获取的第i+a帧图像数据存储在第二指针指向的第二存储空间中,同时从第三指针指向的第三存储空间中读取特征图像,所述特征图像是第i-1帧图像数据经过所述卷积神经网络计算得到的,a为大于等于1的整数,所述第一存储空间、所述第二存储空间及所述第三存储空间位于同一内存。
在一个可能的设计中,
所述内存上的不同存储空间利用不同的帧号标识;
所述第一存储空间的帧号等于所述第三存储空间的帧号加1。
在一个可能的设计中,在所述确定模块901确定第一指针所指向的第一存储空间时,具体用于:
确定所述第一指针当前指向的存储空间的帧号加1是否等于所述第二指针当前指向的存储空间的帧号;
若等于,则确定所述第一指针当前指向的存储空间为所述第一存储空间。
在一个可能的设计中,所述确定模块901还用于:
若不等于,则将所述第一指针当前指向的存储空间的帧号加1,得到第一帧号;
确定所述第一帧号对应的存储空间为所述第一存储空间。
在一个可能的设计中,所述装置还包括:存储模块903;
在所述存储模块903将获取的第i+a帧图像数据存储在第二指针指向的第二存储空间中时,具体用于:
确定所述第二指针当前指向存储空间的帧号加1是否等于所述第三存储空间的帧号;
若等于,则确定所述第二指针当前指向的存储空间为所述第二存储空间;
将所述第i+a帧图像数据存储在所述第二存储空间中。
在一个可能的设计中,所述存储模块903还用于:
若不等于,将所述第二指针当前指向存储空间的帧号加1,得到第二帧号;
将所述第二帧号对应的存储空间作为所述第二存储空间。
本领域内的技术人员应明白,本申请实施例可提供为方法、系统、或计算机程序产品。因此,本申请实施例可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。
本申请实施例是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
以上所述,以上实施例仅用以对本申请的技术方案进行了详细介绍,但以上实施例的说明只是用于帮助理解本发明实施例的方法,不应理解为对本发明实施例的限制。本技术领域的技术人员可轻易想到的变化或替换,都应涵盖在本发明实施例的保护范围之内。