CN105260773B - 一种图像处理装置以及图像处理方法 - Google Patents
一种图像处理装置以及图像处理方法 Download PDFInfo
- Publication number
- CN105260773B CN105260773B CN201510600861.8A CN201510600861A CN105260773B CN 105260773 B CN105260773 B CN 105260773B CN 201510600861 A CN201510600861 A CN 201510600861A CN 105260773 B CN105260773 B CN 105260773B
- Authority
- CN
- China
- Prior art keywords
- data
- sequence
- pending
- incremented
- dimensional
- 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.)
- Active
Links
Landscapes
- Image Processing (AREA)
- Image Analysis (AREA)
Abstract
本发明实施例公开了一种图像处理装置,包括:存储器、第一缓存器以及第一运算器;存储器存储待处理二维图像的数据序列,数据序列包括多个二维数据点X[j][i][d],当j为0且i为0时,d从0开始递增,直至递增到d对应的数据范围,再对i进行递增,直至递增到i对应的数据范围,最后对j进行递增,直至递增到j对应的数据范围,得到待处理二维图像的数据序列;第一缓存器从该数据序列中根据预置规则获取多个第一数据点;第一运算器对多个第一数据点进行加权及累加运算,依次得到处理结果。本发明实施例中还公开一种图像处理方法,可以使得待处理二维图像只读出一次,处理的效率最高,实现的电路构造简单,从而提升方案在处理CNN算法的能效比和性能。
Description
技术领域
本发明实施例涉及计算机技术领域,具体涉及一种图像处理装置以及图像处理方法。
背景技术
近年来深度学习算法在语音和图像识别领域取得了非常成功的应用,卷积神经网络(英文全称:Convolutional Neuron Networks,英文缩写:CNN)算法作为深度学习算法的一个特例,在图像识别领域中也取得了巨大的成功。随着CNN算法应用的普及,利用更高效的硬件设备来实现CNN,支持日益增长的应用已成为有着重大商业价值的关键技术。
现有技术中,可以通过服务器上的图形处理器(英文全称:Graphics ProcessingUnit,英文缩写:GPU)实现CNN算法。GPU将矢量运算并行化执行,大幅度地缩短计算时间。矢量运算强调单一指令并行操作多条相似数据,形成单指令流多数据流的编程泛型。目前利用GPU来训练CNN,可以充分发挥其数以千计计算核心的高效并行计算能力,在使用海量训练数据的场景下,所耗费的时间大幅缩短,占用的服务器也更少。因此GPU已经成为业界在深度学习模型训练方面的首选解决方案。
相对普通的深度学习算法而言,CNN算法是一个更加特殊的神经网络算法,在CNN算法的具体实施中,其卷积处理占计算的主要部分。虽然通过GPU实现CNN算法具有通用性好,灵活性强的优势,但是在日益普及的应用以及部署设备的规模不断壮大,在处理CNN算法的时候需要更好的能效比,更好的性能和更为经济的解决方案。
发明内容
本发明实施例提供了一种图像处理装置以及图像处理方法,可以使得待处理二维图像只读出一次,处理的效率最高,实现的电路构造简单,从而提升方案在处理CNN算法的能效比和性能。
有鉴于此,本发明第一方面提供了一种图像处理装置,其特征在于,所述图像处理装置包括:存储器、第一缓存器以及第一运算器;
所述存储器,用于存储待处理二维图像的数据序列,所述待处理二维图像的数据序列包括多个二维数据点,所述二维数据点表示为X[j][i][d],其中,X表示所述待处理二维图像的数据序列,j表示所述二维数据点的行坐标,i表示所述二维数据点的列坐标,d为特征维度坐标,j、i与d均为大于等于0的正整数,当所述j为0且所述i为0时,所述d从0开始递增,直至递增到所述d对应的数据范围,得到第一序列,在所述第一序列的基础上对所述i进行递增,直至递增到所述i对应的数据范围,得到第二序列,在所述第二序列的基础上对所述j进行递增,直至递增到所述j对应的数据范围,得到所述待处理二维图像的数据序列;
所述第一缓存器,用于从所述待处理二维图像的数据序列中,根据预置规则获取所述待处理二维图像的数据序列中的多个第一数据点;
所述第一运算器,用于对提取的所述多个第一数据点进行加权以及累加运算,并依次得到第一图像数据处理结果。
结合第一方面,在第一种可能的实现方式中,
所述第一缓存器,还用于接收第一可配置窗口的参数,所述参数用于确定所述第一可配置窗口中所提取的所述多个第一数据点的数目以及排列方式。
结合第一方面第一种可能实现方式,在第二种可能的实现方式中,
所述第一缓存器,还用于根据所述第一可配置窗口的参数,确定所述第一可配置窗口中的第一行缓存,所述第一行缓存用于确定所述第一可配置窗口中的所述多个第一数据点。
结合第一方面第二种可能实现方式,在第三种可能的实现方式中,
所述第一运算器,具体用于将所述第一可配置窗口所提取的所述多个第一数据点,在同一时刻内并行输入至乘加运算阵列,所述乘加运算阵列用于将所述多个第一数据点对应的数据进行加权以及累加。
结合第一方面第二种可能实现方式,在第四种可能的实现方式中,
所述第一运算器,具体用于将所述第一可配置窗口所提取的所述多个第一数据点,按照依次延迟一个时间间隔的方式分别输入至乘加运算阵列,所述乘加运算阵列用于将所述多个第一数据点对应的数据进行加权以及累加。
结合第一方面以及第一方面的第一至第四种可能实现方式中任一项,在第五种可能的实现方式中,所述装置还包括第二缓存器以及第二运算器;
所述第二缓存器,用于从所述待处理二维图像的数据序列中,根据所述第一图像数据处理结果获取所述待处理二维图像的数据序列中的多个第二数据点;
所述第二运算器,用于对提取的所述多个第二数据点进行加权以及累加运算,并依次得到第二图像数据处理结果。
结合第一方面第五种可能实现方式,在第六种可能的实现方式中,
所述第二缓存器,还用于接收第二可配置窗口的参数,所述参数用于确定所述第二可配置窗口中所提取的所述多个第二数据点的数目以及排列方式;
所述第二缓存器,还用于配置所述第一可配置窗口与所述第二可配置窗口之间的第二行缓存,所述第二行缓存用于确定所述第一可配置窗口的所述多个第一数据点与所述第二可配置窗口的所述多个第二数据点。
结合第一方面,在第七种可能的实现方式中,
所述存储器还用于存储待处理三维内容数据的数据序列,所述待处理三维内容数据的数据序列包括多个三维数据点,所述三维数据点表示为Y[k][j][i][d],其中,Y表示所述待处理三维内容数据的数据序列,k表示所述三维数据点的帧坐标,j表示所述三维数据点的行坐标,i表示所述三维数据点的列坐标,d为特征维度坐标,k、j、i与d均为大于等于0的正整数,当所述j为0,所述i为0且所述k为0时,所述d从0开始递增,直至递增到所述d对应的数据范围,得到第三序列,在所述第三序列的基础上对所述i进行递增,直至递增到所述i对应的数据范围,得到第四序列,在所述第四序列的基础上对所述j进行递增,直至递增到所述j对应的数据范围,得到第五序列,在所述第五序列的基础上对所述k进行递增,直至递增到所述k对应的数据范围,得到所述待处理三维内容数据的数据序列。
结合第一方面,在第八种可能的实现方式中,
所述存储器还用于存储待处理一维图像的数据序列,所述待处理一维图像的数据序列包括多个一维数据点,所述一维数据点表示为Z[i][d],其中,Z表示所述待处理一维图像的数据序列,i表示所述一维数据点的列坐标,d为特征维度坐标,i与d均为大于等于0的正整数,当所述i为0时,所述d从0开始递增,直至递增到所述d对应的数据范围,得到第六序列,在所述第六序列的基础上对所述i进行递增,直至递增到所述i对应的数据范围,得到所述待处理一维图像的数据序列。
本发明第二方面提供了一种图像处理的方法,其特征在于,包括:
存储待处理二维图像的数据序列,所述待处理二维图像的数据序列包括多个二维数据点,所述二维数据点表示为X[j][i][d],其中,X表示所述待处理二维图像的数据序列,j表示所述二维数据点的行坐标,i表示所述二维数据点的列坐标,d为特征维度坐标,j、i与d均为大于等于0的正整数,当所述j为0且所述i为0时,所述d从0开始递增,直至递增到所述d对应的数据范围,得到第一序列,在所述第一序列的基础上对所述i进行递增,直至递增到所述i对应的数据范围,得到第二序列,在所述第二序列的基础上对所述j进行递增,直至递增到所述j对应的数据范围,得到所述待处理二维图像的数据序列;
从所述待处理二维图像的数据序列中,根据预置规则获取所述待处理二维图像的数据序列中的多个第一数据点;
对提取的所述多个第一数据点进行加权以及累加运算,并依次得到第一图像数据处理结果。
结合第二方面,在第一种可能的实现方式中,所述从所述数据序列中,根据预置规则获取所述数据序列中的多个第一数据点,包括:
接收第一可配置窗口的参数,所述参数用于确定所述第一可配置窗口中所提取的所述多个第一数据点的数目以及排列方式。
结合第二方面第一种可能实现方式,在第二种可能的实现方式中,所述接收第一可配置窗口的参数之后,所述方法还包括:
根据所述第一可配置窗口的参数,确定所述第一可配置窗口中的第一行缓存,所述第一行缓存用于确定所述第一可配置窗口中的所述多个第一数据点。
结合第二方面第二种可能实现方式,在第三种可能的实现方式中,所述对提取的所述多个第一数据点进行加权以及累加运算,并依次得到第一图像数据处理结果,包括:
将所述第一可配置窗口所提取的所述多个第一数据点,在同一时刻内并行输入至乘加运算阵列,所述乘加运算阵列用于将所述多个第一数据点对应的数据进行加权以及累加。
结合第二方面第二种可能实现方式,在第四种可能的实现方式中,所述对提取的所述多个第一数据点进行加权以及累加运算,并依次得到第一图像数据处理结果,包括:
将所述第一可配置窗口所提取的所述多个第一数据点,按照依次延迟一个时间间隔的方式分别输入至乘加运算阵列,所述乘加运算阵列用于将所述多个第一数据点对应的数据进行加权以及累加。
结合第二方面以及第二方面的第一至第四种可能实现方式中任一项,在第五种可能的实现方式中,所述对提取的所述多个第一数据点进行加权以及累加运算,并依次得到第一图像数据处理结果之后,所述方法还包括:
从所述待处理二维图像的数据序列中,根据所述第一图像数据处理结果获取所述待处理二维图像的数据序列中的多个第二数据点;
对提取的所述多个第二数据点进行加权以及累加运算,并依次得到第二图像数据处理结果。
结合第二方面第五种可能实现方式,在第六种可能的实现方式中,所述从所述数据序列中,根据所述第一图像数据处理结果获取所述数据序列中的多个第二数据点,包括:
接收第二可配置窗口的参数,所述参数用于确定所述第二可配置窗口中所提取的所述多个第二数据点的数目以及排列方式;
配置所述第一可配置窗口与所述第二可配置窗口之间的第二行缓存,所述第二行缓存用于确定所述第一可配置窗口的所述多个第一数据点与所述第二可配置窗口的所述多个第二数据点。
结合第二方面,在第七种可能的实现方式中,
存储待处理三维内容数据的数据序列,所述待处理三维内容数据的数据序列包括多个三维数据点,所述三维数据点表示为Y[k][j][i][d],其中,Y表示所述待处理三维内容数据的数据序列,k表示所述三维数据点的帧坐标,j表示所述三维数据点的行坐标,i表示所述三维数据点的列坐标,d为特征维度坐标,k、j、i与d均为大于等于0的正整数,当所述j为0,所述i为0且所述k为0时,所述d从0开始递增,直至递增到所述d对应的数据范围,得到第三序列,在所述第三序列的基础上对所述i进行递增,直至递增到所述i对应的数据范围,得到第四序列,在所述第四序列的基础上对所述j进行递增,直至递增到所述j对应的数据范围,得到第五序列,在所述第五序列的基础上对所述k进行递增,直至递增到所述k对应的数据范围,得到所述待处理三维内容数据的数据序列。
结合第二方面,在第八种可能的实现方式中,
存储待处理一维图像的数据序列,所述待处理一维图像的数据序列包括多个一维数据点,所述一维数据点表示为Z[i][d],其中,Z表示所述待处理一维图像的数据序列,i表示所述一维数据点的列坐标,d为特征维度坐标,i与d均为大于等于0的正整数,当所述i为0时,所述d从0开始递增,直至递增到所述d对应的数据范围,得到第六序列,在所述第六序列的基础上对所述i进行递增,直至递增到所述i对应的数据范围,得到所述待处理一维图像的数据序列。
从以上技术方案可以看出,本发明实施例具有以下优点:
本发明实施例中,图像处理装置存储待处理二维图像的数据序列,该数据序列的存放方式为先逐个存放不同特征维度值的二维数据点,然后依次存放不同列的二维数据点,一行全部存放完成后再存放下一行,以此得到待处理二维图像的数据序列,并从中根据预置规则获取多个第一数据点,最后对提取的多个第一数据点进行加权以及累加运算,以此得到第一图像数据处理结果。通过上述的方法进行图像处理,可以使得待处理二维图像只读出一次,处理的效率最高,实现的电路构造简单,从而提升方案在处理CNN算法的能效比和性能。
附图说明
图1为本发明实施例中一种图像处理的CNN模型;
图2为本发明实施例中图像处理装置的一个结构示意图;
图3为本发明实施例的一种在单级CNN场景中图像处理装置的硬件架构示意图;
图4为本发明实施例中在单级CNN场景中第一可配置窗口的示意图;
图5为本发明实施例中卷积乘加运算中同步并行计算的流程示意图;
图6为本发明实施例中卷积乘加运算中异步并行计算的流程示意图;
图7为本发明实施例中图像处理装置的另一个结构示意图;
图8为本发明实施例的一种在多级CNN场景中图像处理装置的硬件架构示意图;
图9为本发明实施例中在多级CNN场景中第二可配置窗口的示意图;
图10为本发明实施例中图像处理方法一个实施例示意图;
图11是本发明实施例中图像处理装置的另一个结构示意图。
具体实施方式
下面将结合本实施例中的附图,对本实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”、“第三”“第四”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例例如能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、***、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
本发明实施例提供了一种图像处理装置以及图像处理方法,可以使得待处理二维图像只读出以此,处理的效率最高,实现的电路构造简单,从而提升方案在处理CNN算法的能效比和性能。
应理解,本发明实施例中所提供的一种图像处理装置以及图像处理方法,应用于CNN中,下面将对一种图像处理的CNN模型进行介绍。
请参阅图1,图1为本发明实施例中一种图像处理的CNN模型,该CNN模型揭示了一个具有5个卷积层和3个全连接层的深度卷积神经网络,其中,最后一层是以softmax回归组成的输出决策层,输出节点数等于类别数目1000。该CNN模型可应用于图像分类。
第一卷积层输入图像的大小为224×224×3,其卷积窗口大小为11×11×3,使用96个这样的卷积窗口可以提取到96个对应的特征值;第二卷积层中提取卷积窗口大小为5×5×48的特征值256个。第三卷积层提取卷积窗口大小为3×3×256的特征值384个。第四卷积层提取卷积窗口大小为3×3×192的特征值384个,第五卷积层提取卷积窗口大小为3×3×192的特征值256个。全部层有4096个神经元。
请参阅图2,图2为本发明实施例中图像处理装置的一个结构示意图,图像处理装置10可以包括:存储器101、第一缓存器102以及第一运算器103;
存储器101,用于存储待处理二维图像的数据序列,待处理二维图像的数据序列包括多个二维数据点,二维数据点表示为X[j][i][d],其中,X表示待处理二维图像的数据序列,j表示二维数据点的行坐标,i表示二维数据点的列坐标,d为特征维度坐标,j、i与d均为大于等于0的正整数,当j为0且i为0时,d从0开始递增,直至递增到d对应的数据范围,得到第一序列,在第一序列的基础上对i进行递增,直至递增到i对应的数据范围,得到第二序列,在第二序列的基础上对j进行递增,直至递增到j对应的数据范围,得到待处理二维图像的数据序列;
第一缓存器102,用于从待处理二维图像的数据序列中,根据预置规则获取待处理二维图像的数据序列中的多个第一数据点;
第一运算器103,用于对提取的多个第一数据点进行加权以及累加运算,并依次得到第一图像数据处理结果。
本实施例中,在图像处理装置中可以包括存储器、第一缓存器以及第一运算器这三部分,以下将分别对这三部分结构进行逐一介绍。
存储器可以用于存储待处理二维图像的数据序列,这里的二维图像是指具有一个特征维度值的图像,需要说明的是,特征维度值可以表示为一幅图像的亮度、噪点或灰度等特性,此处不作限定。
具体地,在存储器中存储的待处理二维图像的数据序列是具备一定排列规律的,在本发明实施例中,将介绍一种实现CNN流水线处理的最佳模式,然而在实际应用中可以采用其他方式,这并不影响逻辑结构的实质。
假设一幅二维图像的大小为n×n(实际情况也可以是n1×n2.,且n1≠n2),有m个特征维度值需要处理,其中每个二维数据点表示为X[j][i][d],则在一个连续存储区里,一行图像存放的形式如下:
X[0][0][0],X[0][0][1],……,X[0][0][m-2],X[0][0][m-1],
X[0][1][0],X[0][1][1],……,X[0][1][m-2],X[0][1][m-1],
……
X[0][n-2][0],X[0][n-2][1],……,X[0][n-2][m-2],X[0][n-2][m-1],
X[0][n-1][0],X[0][n-1][1],……,X[0][n-1][m-2],X[0][n-1][m-1]
上述的序列可以被称为第二序列,上述每一行的序列被称为第一序列。
通过上述待处理二维图像的数据序列中同一行二维数据点排列规律,可以得到这样的规律,即先逐个存放不同特征维度值的二维数据点,然后依次存放不同列的二维数据点,等一行中的所有二维数据点存放完成后,再存放下一行X[1][0][0],X[1][0][1],……,X[1][n-1][m-2],X[1][n-1][m-1],直至最后一行X[n-1][0][0],X[n-1][0][1],……,X[n-1][n-1][m-2],X[1][n-1][m-1]。
待处理二维图像的数据序列存放方式与读取方式相关,不同的存放方式可以通过不同的地址控制实现灵活的映射。在该存放方式的基础上,所需要进行CNN处理的图像数据可以依次逐个读出,在后续整个运算过程中,整个图像只需读出一次,以此实现最高效率的数据存取。
第一缓存器可以用于从存储器中存储的待处理二维图像的数据序列中,根据预置规则获取其中的多个第一数据点。
具体地,第一缓存器针对n×n×m的待处理二维图像的数据序列,所需要完成的CNN卷积窗口是p×q×m,即p×q×m个第一数据点需要同时并行呈现在p×q×m个第一运算器中,其中,n为待处理二维图像的横向与纵向像素大小,p为卷积窗口的横向像素大小,q为卷积窗口的纵向像素大小,m为特征维度值,n、p、q和m均为大于等于1的正整数,第一数据点为多个二维数据点,在取这些二维数据点时,需要根据预置规则确定待获取二维数据点的数目和排列方式。
第一运算器用于对提取的多个第一数据点进行加权以及累加运算,并依次得到第一图像数据处理结果。
具体地,在第一缓存器根据预置规则获取其中的多个第一数据点后,第一运算器对这多个第一数据点进行加权以及累加运算。本实施例中将以乘加运算作为加权以及累加运算的一种具体实现方式,并对此进行介绍。
第一运算器可以包括乘法器、累加器和比较器,其中,乘法器,则应具有以下基本基本功能:要求在一个时钟周期里对两个字长为b位的输入由硬件作快速并行乘法,b为大于等于1的正整数;应能通过格式控制来执行无符号或带符号或混合的乘法操作、小数或整数乘法操作以及扩展精度或双精度运算,并有合适的舍位方法;应有输入和输出寄存器,这样可以锁存数据,配合流水线操作,也可不用寄存器,使乘法器在透明方式下工作,这样可以有最小的等待时间。然而在许多情况下运算的乘法和加法会同时出现,因此,还需要有累加器进行加法的运算。比较器,则应具有对比的功能,可以将两个或两个以上的数据进行大小的比较,得到比较结果,并且筛选出需要的数据。
具体地,请参阅图3,图3为本发明实施例的一种在单级CNN场景中图像处理装置的硬件架构示意图。可以理解的是,本实施例中涉及的硬件设备仅为一个示意,在实际应用中,若采用具有类似功能的硬件设备完成相关操作也可以视为与本发明所使用的硬件设备类似。
计算的输入存储在输入图像存储器,每一级CNN的运算结果存放到输出图像存储器,多级CNN处理可以通过迭代或芯片的级联进行。在硬件设备上,介于输入图像存储器和输出图像存储器之间的可配置卷积窗口延迟线和并行乘加运算器完成所需的CNN卷积运算,可配置的存储地址控制器完成特定格式图像的读出和写入。
本发明实施例中,图像处理装置存储待处理二维图像的数据序列,该数据序列的存放方式为先逐个存放不同特征维度值的二维数据点,然后依次存放不同列的二维数据点,一行全部存放完成后再存放下一行,以此得到待处理二维图像的数据序列,并从中根据预置规则获取多个第一数据点,最后对提取的多个第一数据点进行加权以及累加运算,以此得到第一图像数据处理结果。通过上述的方法进行图像处理,可以使得待处理二维图像只读出一次,处理的效率最高,实现的电路构造简单,从而提升方案在处理CNN算法的能效比和性能。
可选地,在上述图2对应的实施例的基础上,本发明实施例提供的图像处理装置的第一个可选实施例中,
第一缓存器102,还用于接收第一可配置窗口的参数,参数用于确定第一可配置窗口中所提取的多个第一数据点的数目以及排列方式。
本实施例中,第一缓存器还可以接收用户输入的第一可配置窗口的参数,这些参数包括卷积窗口的横向像素大小p,卷积窗口的纵向像素大小q,特征维度值m,待处理二维图像的横向与纵向像素大小n,这些参数用于确定第一可配置窗口中所提取的多个第一数据点的数目以及排列方式。
具体地,请参阅图4,图4为本发明实施例中在单级CNN场景中第一可配置窗口的示意图,对p,q,m和n进行配置,可以通过读出地址控制器以及写入地址控制器,p×q×m对应移位乘加阵列的规模,每个时钟周期产生一个输出结果。如图所示,第一可配置窗口以p=3,q=3,m=4绘制,其中小方块表示寄存器,矩形框表示第一行缓存,也可以称为延迟线。每一个寄存器输出二维数据点到乘加运算阵列,从图4来看,即4×3×3=36个二维数据点并行输出到乘加运算阵列。
由于二维数据点是从存储器中存储的待处理二维图像的数据序列中读取的,根据配置的第一可配置窗口的参数,在A点呈现的二维数据点依次是:
X[0][0][0],X[0][0][1],……,X[0][0][m-1],
X[0][1][0],X[0][1][1],……,X[0][1][m-1],
……
X[0][n-1][0],X[0][n-1][1],……,X[0][n-1][m-1],
每行总共有m×n个二维数据点,一共有n行。
其次,本发明实施例中,第一缓存器还可以接收通过输入设备输入的第一可配置窗口的参数,根据第一可配置窗口的参数来确定每次提取二维数据点的数目以及排列方式,以此实现对CNN运算的灵活配置,提升方案的实用性和可行性。
可选地,在上述图2对应的第一个可选实施例的基础上,本发明实施例提供的图像处理装置的第二个可选实施例中,
第一缓存器102,还用于根据第一可配置窗口的参数,确定第一可配置窗口中的第一行缓存,第一行缓存用于确定第一可配置窗口中的多个第一数据点。
本实施例中,第一缓存器还可以根据第一可配置窗口的参数来确定第一可配置窗口中的第一行缓存,第一行缓存也可以称为延迟线,根据配置完成的参数,确定第一可配置窗口中多个第一数据点的排列方式以及数目。
具体地,请参阅图4,图4为本发明实施例中在单级CNN场景中第一可配置窗口的示意图,当第一可配置窗口以n=256,p=3,q=3,m=4绘制后,则第一行缓存需要将每次取的二维数据点做一个同步处理,首先确定在待处理二维图像的一行中共有可提取的二维数据点n×m=256×4=1024个,然后实际上每次提取的二维数据点p×m=3×4=12个,然而下一行需要提取的二维数据点应该与上一行所提取的二维数据点平齐,此时,则需要***第一行缓存,其占用的长度应为1012个二维数据点所占据的长度。最后,可以使得每次取的二维数据点达到平齐且同步的效果。
再次,本发明实施例中,第一缓存器还可以根据第一可配置窗口的参数,确定第一可配置窗口中的第一行缓存,通过使用第一行缓存令每次提取的二维数据点达到要求,并使得获取的二维数据点呈矩形状,提升数据处理的效率。
可选地,在上述图2对应的第二个可选实施例的基础上,本发明实施例提供的图像处理装置的第三个可选实施例中,
第一运算器103,具体用于将第一可配置窗口所提取的多个第一数据点,在同一时刻内并行输入至乘加运算阵列,乘加运算阵列用于将多个第一数据点对应的数据进行加权以及累加。
本实施例中,对第一可配置窗口所提取的多个第一数据点需要进行处理,下面将介绍其中一种处理方式,即通过同步并行计算的方式进行处理,将第一数据点在同一时刻内并行输入至乘加运算阵列,乘加运算阵列用于将多个第一数据点对应的数据进行加权以及累加。
具体地,请参阅图5,图5为本发明实施例中卷积乘加运算中同步并行计算的流程示意图,假设卷积窗口大小为3×3,在相同时间内将D00、D01……D08这九个二维数据点分别放入0、1…8这九个寄存器内,例如,将D00输入至0号寄存器,D01输入至1号寄存器,以此类推,然后将这九个寄存器中的二维数据点分别与w0、w1……w8进行相乘,得到9个相乘后的结果。这九个结果两两相加,例如,0号位的乘积结果与1号位的乘积结果相加,得到结果A,2号位的乘积结果与3号位的乘积结果相加,得到结果B,4号位的乘积结果与5号位的乘积结果相加,得到结果C,6号位的乘积结果与7号位的乘积结果相加,得到结果D,至此,8号位的乘积结果被留下先不做处理。进而继续将结果A与结果B相加得到结果α,结果C与结果D相加得到结果β,结果α再与结果β相加得到结果γ,此时将γ与8号位的乘积结果相加,得到输出的的数值。根据这样的方法,输出每个卷积窗口的数据。
上述过程仅仅是卷积窗口大小为3×3时,一个卷积窗口所做的工作,在实际应用中,可以采用类似的方法得到不同卷积窗口大小的输出数据。
进一步地,本发明实施例中,采用同步并行计算的方式对二维数据点进行处理,对于同步并行,任务的各部分是同步向前推进的,有一个全局的时钟来控制各部分的步伐。同步并行最理想的情况是,在每一个时钟节拍上都可以输出一个结果,以此提升方案的运算效率。
可选地,在上述图2对应的第二个可选实施例的基础上,本发明实施例提供的图像处理装置的第四个可选实施例中,
第一运算器103,具体用于将第一可配置窗口所提取的多个第一数据点,按照依次延迟一个时间间隔的方式分别输入至乘加运算阵列,乘加运算阵列用于将多个第一数据点对应的数据进行加权以及累加。
本实施例中,对第一可配置窗口所提取的多个第一数据点需要进行处理,下面将介绍另一种处理方式,即通过异步并行计算的方式进行处理,将第一数据点按照依次延迟一个时间间隔的方式分别输入至乘加运算阵列,乘加运算阵列用于将多个第一数据点对应的数据进行加权以及累加。
具体地,请参阅图6,图6为本发明实施例中卷积乘加运算中异步并行计算的流程示意图,假设卷积窗口大小为3×3,首先将二维数据点D00输入至0号寄存器,在延迟一拍的时刻将二维数据点D01输入至1号寄存器,在延迟两拍的时刻将二维数据点D02输入至2号寄存器,如图所示,以此类推,0号寄存器至8号寄存器的中分别得到各个二维数据点,然后将这九个寄存器中的二维数据点分别与w0、w1……w8进行相乘,得到9个相乘后的结果。这九个结果依次进行累加,例如,0号寄存器与w0相乘的结果为R,0号寄存器的乘积结果与1号寄存器的乘积结果相加,得到结果A1;将结果A1与2号寄存器的乘积结果相加,得到结果B2;将结果B2与3号寄存器的乘积结果相加,得到结果C3,以此类推,得到结果D4,E5,F6,G7,H8,将最后一个结果H8进行输出。根据这样的方法,输出每个卷积窗口的数据。
上述过程仅仅是卷积窗口大小为3×3时,一个卷积窗口所做的工作,在实际应用中,可以采用类似的方法得到不同卷积窗口大小的输出数据。
更进一步地,本发明实施例中,采用异步并行计算的方式对二维数据点进行处理,一方面通过异步并行的方式进行累加运算时,可以达到计算过程的整齐化,使得对电路的复杂度的要求降低,更容易实现灵活配置,另一方面,可以直接利用原始数据的排列方式,对数据进行异输入,以此避免不必要的寄存器延时,从而进一步简化形成可配置卷积窗口的硬件电路。
可选地,在上述图2以及图2对应的第一至第四个可选实施例的基础上,本发明实施例提供的图像处理装置的第五个可选实施例中,
装置还包括第二缓存器104以及第二运算器105;
第二缓存器104,用于从待处理二维图像的数据序列中,根据第一图像数据处理结果获取待处理二维图像的数据序列中的多个第二数据点;
第二运算器105,用于对提取的多个第二数据点进行加权以及累加运算,并依次得到第二图像数据处理结果。
本实施例中,多级CNN处理可以直接级联,请参阅图7,图7为本发明实施例中图像处理装置的另一个结构示意图,图中的2级级联仅为一个示意,在实际应用中可以推广到多级级联,此处以2级级联作为介绍。
具体地,配合图7所表示的图像处理装置。还可以参阅图8,图8为本发明实施例的一种在多级CNN场景中图像处理装置的硬件架构示意图,该示意图仍然以2级为例,针对n1×n1×m1的待处理二维图像的数据序列,所需要完成的CNN卷积窗口是p1×q1×m1,即p1×q1×m1个第一数据点需要同时并行呈现在p1×q1×m1个第一运算器中,其中,n1为待处理二维图像的横向与纵向像素大小,p1为卷积窗口的横向像素大小,q1为卷积窗口的纵向像素大小,m1为特征维度值,n1、p1、q1和m1均为大于等于1的正整数。n1×n1×m1的输入图像经过p1×q1×m1的卷积后,成为n1×n1的输出图像。基于CNN算法的原理,输出的图像存在2个方面的调整,首先是可能根据不同的卷积模板,产生m2个不同的特征图像,其次,输出图像的大小可能调整为n2×n2,所以输出图像的实际格式为n2×n2×m2。从n1×n1×m1转换到是通过行间缓存完成的。
第一缓存器从待处理二维图像的数据序列中,根据预置规则获取待处理二维图像的数据序列中的多个第一数据点,然后对提取的多个第一数据点进行加权以及累加运算,并依次得到第一图像数据处理结果,第二缓存器继续从从待处理二维图像的数据序列中,根据第一图像数据处理结果获取待处理二维图像的数据序列中的多个第二数据点,然后将这多个第二数据点传输至第二运算器,对提取的多个第二数据点进行加权以及累加运算,并依次得到第二图像数据处理结果。
再进一步地,本发明实施例中,可以采用多级级联进行CNN处理,而不需要经过图像的缓存,相对于通过图像缓存的方式,这种方式既减少了存取图像的开销,降低能耗,又降低了处理时延,从输入到最后输出,延迟只取决于加你了卷积窗口的行延迟数目,等同于处理级数的若干图像的存取延迟。
可选地,在上述图2对应的第五个可选实施例的基础上,本发明实施例提供的图像处理装置的第六个可选实施例中,
第二缓存器,还用于接收第二可配置窗口的参数,参数用于确定第二可配置窗口中所提取的多个第二数据点的数目以及排列方式;
第二缓存器,还用于配置第一可配置窗口与第二可配置窗口之间的第二行缓存,第二行缓存用于确定第一可配置窗口的多个第一数据点与第二可配置窗口的多个第二数据点。
本实施例中,当需要进行多级CNN级联处理时,需要将第一可配置窗口与第二可配置窗口中多个二维数据点做一个同步处理,也就是说,在获取完第一可配置窗口中所有的二维数据点后,需要增加第二行缓存,也可以将第二行缓存称为行间缓存,使得提取第二可配置窗口中的二维数据点时,与第一可配置窗口所提取的二维数据点不重复。
具体地,请参阅图9,图9为本发明实施例中在多级CNN场景中第二可配置窗口的示意图,图中所表示的第二可配置窗口是属于多级CNN情况下,在第一可配置窗口之后出现的。
第二缓存器接收用户输入的第二可配置窗口的参数,这些参数包括卷积窗口的横向像素大小p2,卷积窗口的纵向像素大小q2,特征维度值m2,待处理二维图像的横向与纵向像素大小n2,这些参数用于确定第二可配置窗口中所提取的多个第二数据点的数目以及排列方式。配置完成后,第二缓存器还需要配置第一可配置窗口与第二可配置窗口之间的第二行缓存,第二行缓存用于确定第一可配置窗口的多个第一数据点与第二可配置窗口的多个第二数据点。如图9所示,在输入端A处***一个第二行缓存来隔离并同步输入输出的图像数据,需要说明的是,该第二行缓存具体可以为先入先出队列(英文全称:First InputFirst Output,英文缩写:FIFO),也可以是其他的行间缓存,此处不作限定。
第二行缓存与第一行缓存的结构类似,但功能不同。
在进行第一可配置窗口中的二维数据点与第二可配置窗口中的二维数据点对接时,需要考虑到流量对接的问题,例如,256×256×4的图像数据流不能与128×128×64的数据流对接,它们之间相差4倍的大小,但是可以与128×128×16的数据流匹配。数据流量的匹配不仅是本方案发挥最佳效率的要求,也是CNN算法实践的自然选择。从输入到输出,信息流的均衡是CNN算法发挥总体效率的一个重要考虑因素。
在流量平衡但图像尺寸发生变化的前提下,对接的就需要通过第二行缓存来进行。例如在256×256×4≥128×128×16的情形下,输入两行数据(2×256×4)对应了输出的一行数据(128×16)。第二行缓存的写入是按前一级的输出格式进行的,读出是按照后一级的输入格式进行的。因此,只要后一级需要的二维数据点在第二行缓存里已经存在,流水线就可以正常工作,如果后一级需要的二维数据点在第二行缓存里还没有完成,则流水线需要继续等待。可以理解的是,根据图像转换格式的不同,这种等待控制既可以是固定的,也可以是动态管理的,
又进一步地,本发明实施例中,在第一可配置窗口与第二可配置窗口间***第二行缓存,以此才能进行多级CNN处理。同时使用第二行缓存可以进一步降低处理时延和功耗,在电路的实现上也更加简便,直接在单级CNN的基础上通过增加第二行缓存,即可实现多级CNN的处理。
可选地,在上述图2对应的实施例的基础上,本发明实施例提供的图像处理装置的第七个可选实施例中,
存储器还用于存储待处理三维内容数据的数据序列,待处理三维内容数据的数据序列包括多个三维数据点,三维数据点表示为Y[k][j][i][d],其中,Y表示待处理三维内容数据的数据序列,k表示三维数据点的帧坐标,j表示三维数据点的行坐标,i表示三维数据点的列坐标,d为特征维度坐标,k、j、i与d均为大于等于0的正整数,当j为0,i为0且k为0时,d从0开始递增,直至递增到d对应的数据范围,得到第三序列,在第三序列的基础上对i进行递增,直至递增到i对应的数据范围,得到第四序列,在第四序列的基础上对j进行递增,直至递增到j对应的数据范围,得到第五序列,在第五序列的基础上对k进行递增,直至递增到k对应的数据范围,得到待处理三维内容数据的数据序列。
本实施例中。存储器处理可以处理二维图像以外,还可以处理三维内容数据,这里的三维内容数据即为视频,再增加的一个特征维度值可以是时间值,也就是视频在每个对应的时间点上展现出来的二维图像,多个时间点连续起来就成为了视频。
假设待处理三维内容数据的大小为n×n×m(实际情况也可以是n1×n2.,且n1≠n2),有k个时间上的特征维度值需要处理,其中每个三维数据点表示为Y[k][j][i][d],则在一个连续存储区里,一行图像存放的形式如下:
Y[0][0][0][0],Y[0][0][0][1],……,Y[0][0][0][m-1],
Y[0][0][1][0],Y[0][0][1][1],……,Y[0][0][1][m-1],
……
Y[0][0][n-2][0],Y[0][0][n-2][1],……,Y[0][0][n-2][m-1],
Y[0][0][n-1][0],Y[0][0][n-1][1],……,Y[0][0][n-1][m-1]
上述序列被称为第四序列,上述序列中每一行被称为第三序列。在第四序列的基础上对k进行递增,形成第五序列,具体如下介绍。
其中,为了处理起来更加方便,通常情况下,将k表示三维数据点的帧坐标与j表示三维数据点的行坐标做叠加处理,也就是在处理后得到的数据点如下:
Y1[0][0][0],Y1[0][0][1],……,Y1[0][0][m-1],
Y1[0][1][0],Y1[0][1][1],……,Y1[0][1][m-1],
……
Y1[0][n-2][0],Y1[0][n-2][1],……,Y1[0][n-2][m-1],
Y1[0][n-1][0],Y1[0][n-1][1],……,Y1[0][n-1][m-1]
通过上述待处理三维图像的数据序列中同一行三维数据点排列规律,可以得到这样的规律,即先逐个存放不同特征维度值的三维数据点,然后依次存放不同列的三维数据点,等一行中的所有三维数据点存放完成后,再存放下一行Y1[1][0][0],Y1[1][0][1],……,Y1[1][n-1][m-2],Y1[1][n-1][m-1],直至最后一行Y1[n-1][0][0],Y1[n-1][0][1],……,Y1[n-1][n-1][m-2],Y1[1][n-1][m-1]。
其次,本发明实施例中,本方案可以继续应用到CNN的其他推广应用领域,例如视频数据的处理,即将原始二维图像数据进一步拓展为三维原始数据流。这种情况下,CNN处理将面对含增加的一个特征维度后,对四维数据的处理,本方案的思想方法继续适用。在CNN用于多业务流的情况,如云端业务处理,或终端视频数据流的情况下。多数据流的业务形态可以为进一步提高硬件效率提供机会。
可选地,在上述图2对应的实施例的基础上,本发明实施例提供的图像处理装置的第八个可选实施例中,
存储器还用于存储待处理一维图像的数据序列,待处理一维图像的数据序列包括多个一维数据点,一维数据点表示为Z[i][d],其中,Z表示待处理一维图像的数据序列,i表示一维数据点的列坐标,d为特征维度坐标,i与d均为大于等于0的正整数,当i为0时,d从0开始递增,直至递增到d对应的数据范围,得到第六序列,在第六序列的基础上对i进行递增,直至递增到i对应的数据范围,得到待处理一维图像的数据序列。
本实施例中。存储器处理可以处理二维图像以外,还可以处理一维图像,具体处理方式如下:
假设待处理一维图像的大小为n,有m个特征维度值需要处理,其中每个一维数据点表示为Z[i][d],则在一个连续存储区里,一行图像存放的形式如下:
Z[0][0],Z[0][1],……,Z[0][m-1],
Z[1][0],Z[1][1],……,Z[1][m-1],
……
Z[n-2][0],Z[n-2][1],……,Z[n-2][m-1],
Z[n-1][0],Z[n-1][1],……,Z[n-1][m-1]
上述的序列中每一行可以被称为第六序列,然而这整个序列就是待处理一维图像的数据序列。
其次,本发明实施例中,还可以根据实际需求对二维图像做降维处理,并提供了一种具体的实现方式,使得方案的可行性更强,同时,增强本发明方案的实用性。
下面对本发明中图像处理方法进行详细描述,请参阅图10,本发明实施例提供的一种图像处理方法实施例包括:
101、存储待处理二维图像的数据序列,待处理二维图像的数据序列包括多个二维数据点,二维数据点表示为X[j][i][d],其中,X表示待处理二维图像的数据序列,j表示二维数据点的行坐标,i表示二维数据点的列坐标,d为特征维度坐标,j、i与d均为大于等于0的正整数,当j为0且i为0时,d从0开始递增,直至递增到d对应的数据范围,得到第一序列,在第一序列的基础上对i进行递增,直至递增到i对应的数据范围,得到第二序列,在第二序列的基础上对j进行递增,直至递增到j对应的数据范围,得到待处理二维图像的数据序列;
本实施例中,图像处理装置可以用于存储待处理二维图像的数据序列,这里的二维图像是指具有一个特征维度值的图像,需要说明的是,特征维度值可以表示为一幅图像的亮度、噪点或灰度等特性,此处不作限定。
具体地,在图像处理装置中存储的待处理二维图像的数据序列是具备一定排列规律的,在本发明实施例中,将介绍一种实现CNN流水线处理的最佳模式,然而在实际应用中可以采用其他方式,这并不影响逻辑结构的实质。
假设一幅二维图像的大小为n×n(实际情况也可以是n1×n2.,且n1≠n2),有m个特征维度值需要处理,其中每个二维数据点表示为X[j][i][d],则在一个连续存储区里,一行图像存放的形式如下:
X[0][0][0],X[0][0][1],……,X[0][0][m-2],X[0][0][m-1],
X[0][1][0],X[0][1][1],……,X[0][1][m-2],X[0][1][m-1],
……
X[0][n-2][0],X[0][n-2][1],……,X[0][n-2][m-2],X[0][n-2][m-1],
X[0][n-1][0],X[0][n-1][1],……,X[0][n-1][m-2],X[0][n-1][m-1]
上述的序列可以被称为第二序列,上述每一行的序列被称为第一序列。
通过上述待处理二维图像的数据序列中同一行二维数据点排列规律,可以得到这样的规律,即先逐个存放不同特征维度值的二维数据点,然后依次存放不同列的二维数据点,等一行中的所有二维数据点存放完成后,再存放下一行X[1][0][0],X[1][0][1],……,X[1][n-1][m-2],X[1][n-1][m-1],直至最后一行X[n-1][0][0],X[n-1][0][1],……,X[n-1][n-1][m-2],X[1][n-1][m-1]。
待处理二维图像的数据序列存放方式与读取方式相关,不同的存放方式可以通过不同的地址控制实现灵活的映射。在该存放方式的基础上,所需要进行CNN处理的图像数据可以依次逐个读出,在后续整个运算过程中,整个图像只需读出一次,以此实现最高效率的数据存取。
102、从待处理二维图像的数据序列中,根据预置规则获取待处理二维图像的数据序列中的多个第一数据点;
本实施例中,图像处理装置从存储的待处理二维图像的数据序列中,根据预置规则获取其中的多个第一数据点。
具体地,图像处理装置针对n×n×m的待处理二维图像的数据序列,所需要完成的CNN卷积窗口是p×q×m,即p×q×m个第一数据点需要同时并行呈现在p×q×m个运算器中,其中,n为待处理二维图像的横向与纵向像素大小,p为卷积窗口的横向像素大小,q为卷积窗口的纵向像素大小,m为特征维度值,n、p、q和m均为大于等于1的正整数,第一数据点为多个二维数据点,在取这些二维数据点时,需要根据预置规则确定待获取二维数据点的数目和排列方式。
103、对提取的多个第一数据点进行加权以及累加运算,并依次得到第一图像数据处理结果。
本实施例中,图像处理装置对提取的多个第一数据点进行加权以及累加运算,并依次得到第一图像数据处理结果。
具体地,在图像处理装置根据预置规则获取其中的多个第一数据点后,第一运算器对这多个第一数据点进行加权以及累加运算。本实施例中将以乘加运算作为加权以及累加运算的一种具体实现方式。
本发明实施例中,图像处理装置存储待处理二维图像的数据序列,该数据序列的存放方式为先逐个存放不同特征维度值的二维数据点,然后依次存放不同列的二维数据点,一行全部存放完成后再存放下一行,以此得到待处理二维图像的数据序列,并从中根据预置规则获取多个第一数据点,最后对提取的多个第一数据点进行加权以及累加运算,以此得到第一图像数据处理结果。通过上述的方法进行图像处理,可以使得待处理二维图像只读出一次,处理的效率最高,实现的电路构造简单,从而提升方案在处理CNN算法的能效比和性能。
可选地,在上述图10对应的实施例的基础上,本发明实施例提供的图像处理方法的第一个可选实施例中,从数据序列中,根据预置规则获取数据序列中的多个第一数据点,可以包括:
接收第一可配置窗口的参数,参数用于确定第一可配置窗口中所提取的多个第一数据点的数目以及排列方式。
本实施例中,图像处理装置还可以接收用户输入的第一可配置窗口的参数,这些参数包括卷积窗口的横向像素大小p,卷积窗口的纵向像素大小q,特征维度值m,待处理二维图像的横向与纵向像素大小n,这些参数用于确定第一可配置窗口中所提取的多个第一数据点的数目以及排列方式。
具体地,请参阅图4,图4为本发明实施例中在单级CNN场景中第一可配置窗口的示意图,对p,q,m和n进行配置,可以通过读出地址控制器以及写入地址控制器,p×q×m对应移位乘加阵列的规模,每个时钟周期产生一个输出结果。如图所示,第一可配置窗口以p=3,q=3,m=4绘制,其中小方块表示寄存器,矩形框表示第一行缓存,也可以称为延迟线。每一个寄存器输出二维数据点到乘加运算阵列,从图4来看,即4×3×3=36个二维数据点并行输出到乘加运算阵列。
由于二维数据点是从存储器中存储的待处理二维图像的数据序列中读取的,根据配置的第一可配置窗口的参数,在A点呈现的二维数据点依次是:
X[0][0][0],X[0][0][1],……,X[0][0][m-1],
X[0][1][0],X[0][1][1],……,X[0][1][m-1],
……
X[0][n-1][0],X[0][n-1][1],……,X[0][n-1][m-1],
每行总共有m×n个二维数据点,一共有n行。
其次,本发明实施例中,图像处理装置还可以接收通过输入设备输入的第一可配置窗口的参数,根据第一可配置窗口的参数来确定每次提取二维数据点的数目以及排列方式,以此实现对CNN运算的灵活配置,提升方案的实用性和可行性。
可选地,在上述图10对应的第一个可选实施例的基础上,本发明实施例提供的图像处理方法的第二个可选实施例中,接收第一可配置窗口的参数之后,还可以包括:
根据第一可配置窗口的参数,确定第一可配置窗口中的第一行缓存,第一行缓存用于确定第一可配置窗口中的多个第一数据点。
本实施例中,图像处理装置还可以根据第一可配置窗口的参数来确定第一可配置窗口中的第一行缓存,第一行缓存也可以称为延迟线,根据配置完成的参数,确定第一可配置窗口中多个第一数据点的排列方式以及数目。
具体地,请参阅图4,图4为本发明实施例中在单级CNN场景中第一可配置窗口的示意图,当第一可配置窗口以n=256,p=3,q=3,m=4绘制后,则第一行缓存需要将每次取的二维数据点做一个同步处理,首先确定在待处理二维图像的一行中共有可提取的二维数据点n×m=256×4=1024个,然后实际上每次提取的二维数据点p×m=3×4=12个,然而下一行需要提取的二维数据点应该与上一行所提取的二维数据点平齐,此时,则需要***第一行缓存,其占用的长度应为1012个二维数据点所占据的长度。最后,可以使得每次取的二维数据点达到平齐且同步的效果。
再次,本发明实施例中,图像处理装置还可以根据第一可配置窗口的参数,确定第一可配置窗口中的第一行缓存,通过使用第一行缓存令每次提取的二维数据点达到要求,并使得获取的二维数据点呈矩形状,提升数据处理的效率。
可选地,在上述图10对应的第二个可选实施例的基础上,本发明实施例提供的图像处理方法的第三个可选实施例中,对提取的多个第一数据点进行加权以及累加运算,并依次得到第一图像数据处理结果,可以包括:
将第一可配置窗口所提取的多个第一数据点,在同一时刻内并行输入至乘加运算阵列,乘加运算阵列用于将多个第一数据点对应的数据进行加权以及累加。
本实施例中,对第一可配置窗口所提取的多个第一数据点需要进行处理,下面将介绍其中一种处理方式,即通过同步并行计算的方式进行处理,将第一数据点在同一时刻内并行输入至乘加运算阵列,乘加运算阵列用于将多个第一数据点对应的数据进行加权以及累加。
具体地,请参阅图5,图5为本发明实施例中卷积乘加运算中同步并行计算的流程示意图,假设卷积窗口大小为3×3,在相同时间内将D00、D01……D08这九个二维数据点分别放入0、1…8这九个寄存器内,例如,将D00输入至0号寄存器,D01输入至1号寄存器,以此类推,然后将这九个寄存器中的二维数据点分别与w0、w1……w8进行相乘,得到9个相乘后的结果。这九个结果两两相加,例如,0号位的乘积结果与1号位的乘积结果相加,得到结果A,2号位的乘积结果与3号位的乘积结果相加,得到结果B,4号位的乘积结果与5号位的乘积结果相加,得到结果C,6号位的乘积结果与7号位的乘积结果相加,得到结果D,至此,8号位的乘积结果被留下先不做处理。进而继续将结果A与结果B相加得到结果α,结果C与结果D相加得到结果β,结果α再与结果β相加得到结果γ,此时将γ与8号位的乘积结果相加,得到输出的的数值。根据这样的方法,输出每个卷积窗口的数据。
上述过程仅仅是卷积窗口大小为3×3时,一个卷积窗口所做的工作,在实际应用中,可以采用类似的方法得到不同卷积窗口大小的输出数据。
进一步地,本发明实施例中,采用同步并行计算的方式对二维数据点进行处理,对于同步并行,任务的各部分是同步向前推进的,有一个全局的时钟来控制各部分的步伐。同步并行最理想的情况是,在每一个时钟节拍上都可以固定地输出一个结果,不需要任何同步或等待,以此提升方案的运算效率。
可选地,在上述图10对应的第二个可选实施例的基础上,本发明实施例提供的图像处理方法的第四个可选实施例中,对提取的所述多个第一数据点进行加权以及累加运算,并依次得到第一图像数据处理结果,可以包括:
将第一可配置窗口所提取的多个第一数据点,按照依次延迟一个时间间隔的方式分别输入至乘加运算阵列,乘加运算阵列用于将多个第一数据点对应的数据进行加权以及累加。
本实施例中,对第一可配置窗口所提取的多个第一数据点需要进行处理,下面将介绍另一种处理方式,即通过异步并行计算的方式进行处理,将第一数据点按照依次延迟一个时间间隔的方式分别输入至乘加运算阵列,乘加运算阵列用于将多个第一数据点对应的数据进行加权以及累加。
具体地,请参阅图6,图6为本发明实施例中卷积乘加运算中异步并行计算的流程示意图,假设卷积窗口大小为3×3,首先将二维数据点D00输入至0号寄存器,在延迟一拍的时刻将二维数据点D01输入至1号寄存器,在延迟两拍的时刻将二维数据点D02输入至2号寄存器,如图所示,以此类推,0号寄存器至8号寄存器的中分别得到各个二维数据点,然后将这九个寄存器中的二维数据点分别与w0、w1……w8进行相乘,得到9个相乘后的结果。这九个结果依次进行累加,例如,0号寄存器与w0相乘的结果为R,0号寄存器的乘积结果与1号寄存器的乘积结果相加,得到结果A1;将结果A1与2号寄存器的乘积结果相加,得到结果B2;将结果B2与3号寄存器的乘积结果相加,得到结果C3,以此类推,得到结果D4,E5,F6,G7,H8,将最后一个结果H8进行输出。根据这样的方法,输出每个卷积窗口的数据。
上述过程仅仅是卷积窗口大小为3×3时,一个卷积窗口所做的工作,在实际应用中,可以采用类似的方法得到不同卷积窗口大小的输出数据。
更进一步地,本发明实施例中,采用异步并行计算的方式对二维数据点进行处理,一方面通过异步并行的方式进行累加运算时,可以达到计算过程的整齐化,使得对电路的复杂度的要求降低,更容易实现灵活配置,另一方面,可以直接利用原始数据的排列方式,对数据进行异输入,以此避免不必要的寄存器延时,从而进一步简化形成可配置卷积窗口的硬件电路。
可选地,在上述图10以及图10对应的第一至第四个可选实施例的基础上,本发明实施例提供的图像处理方法的第五个可选实施例中,对提取的多个第一数据点进行加权以及累加运算,并依次得到第一图像数据处理结果之后,还可以包括:
从待处理二维图像的数据序列中,根据第一图像数据处理结果获取待处理二维图像的数据序列中的多个第二数据点;
对提取的多个第二数据点进行加权以及累加运算,并依次得到第二图像数据处理结果。
本实施例中,多级CNN处理可以直接级联,我们以2级级联仅为一个示意,在实际应用中可以推广到多级级联。
具体地,针对n1×n1×m1的待处理二维图像的数据序列,所需要完成的CNN卷积窗口是p1×q1×m1,即p1×q1×m1个第一数据点需要同时并行呈现在p1×q1×m1个第一运算器中,其中,n1为待处理二维图像的横向与纵向像素大小,p1为卷积窗口的横向像素大小,q1为卷积窗口的纵向像素大小,m1为特征维度值,n1、p1、q1和m1均为大于等于1的正整数。n1×n1×m1的输入图像经过p1×q1×m1的卷积后,成为n1×n1的输出图像。基于CNN算法的原理,输出的图像存在2个方面的调整,首先是可能根据不同的卷积模板,产生m2个不同的特征图像,其次,输出图像的大小可能调整为n2×n2,所以输出图像的实际格式为n2×n2×m2。从n1×n1×m1转换到是通过行间缓存完成的。
图像处理装置从待处理二维图像的数据序列中,根据预置规则获取待处理二维图像的数据序列中的多个第一数据点,然后对提取的多个第一数据点进行加权以及累加运算,并依次得到第一图像数据处理结果,图像处理装置继续从从待处理二维图像的数据序列中,根据第一图像数据处理结果获取待处理二维图像的数据序列中的多个第二数据点,然后将这多个第二数据点传输至第二运算器,对提取的多个第二数据点进行加权以及累加运算,并依次得到第二图像数据处理结果。
再进一步地,本发明实施例中,可以采用多级级联进行CNN处理,而不需要经过图像的缓存,相对于通过图像缓存的方式,这种方式既减少了存取图像的开销,降低能耗,又降低了处理时延,从输入到最后输出,延迟只取决于加你了卷积窗口的行延迟数目,等同于处理级数的若干图像的存取延迟。
可选地,在上述图10对应的第五个可选实施例的基础上,本发明实施例提供的图像处理方法的第六个可选实施例中,从数据序列中,根据第一图像数据处理结果获取数据序列中的多个第二数据点,可以包括:
接收第二可配置窗口的参数,参数用于确定第二可配置窗口中所提取的多个第二数据点的数目以及排列方式;
配置第一可配置窗口与第二可配置窗口之间的第二行缓存,第二行缓存用于确定第一可配置窗口的多个第一数据点与第二可配置窗口的多个第二数据点。
本实施例中,当需要进行多级CNN级联处理时,需要将第一可配置窗口与第二可配置窗口中多个二维数据点做一个同步处理,也就是说,在获取完第一可配置窗口中所有的二维数据点后,需要增加第二行缓存,也可以将第二行缓存称为行间缓存,使得提取第二可配置窗口中的二维数据点时,与第一可配置窗口所提取的二维数据点不重复。
具体地,请参阅图9,图9为本发明实施例中在多级CNN场景中第二可配置窗口的示意图,图中所表示的第二可配置窗口是属于多级CNN情况下,在第一可配置窗口之后出现的。
图像处理装置接收用户输入的第二可配置窗口的参数,这些参数包括卷积窗口的横向像素大小p2,卷积窗口的纵向像素大小q2,特征维度值m2,待处理二维图像的横向与纵向像素大小n2,这些参数用于确定第二可配置窗口中所提取的多个第二数据点的数目以及排列方式。配置完成后,第二缓存器还需要配置第一可配置窗口与第二可配置窗口之间的第二行缓存,第二行缓存用于确定第一可配置窗口的多个第一数据点与第二可配置窗口的多个第二数据点。如图9所示,在输入端A处***一个第二行缓存来隔离并同步输入输出的图像数据,需要说明的是,该第二行缓存具体可以为FIFO,也可以是其他的行间缓存,此处不作限定。
第二行缓存与第一行缓存的结构类似,但功能不同。
在进行第一可配置窗口中的二维数据点与第二可配置窗口中的二维数据点对接时,需要考虑到流量对接的问题,例如,256×256×4的图像数据流不能与128×128×64的数据流对接,它们之间相差4倍的大小,但是可以与128×128×16的数据流匹配。数据流量的匹配不仅是本方案发挥最佳效率的要求,也是CNN算法实践的自然选择。从输入到输出,信息流的均衡是CNN算法发挥总体效率的一个重要考虑因素。
在流量平衡但图像尺寸发生变化的前提下,对接的就需要通过第二行缓存来进行。例如在256×256×4≥128×128×16的情形下,输入两行数据(2×256×4)对应了输出的一行数据(128×16)。第二行缓存的写入是按前一级的输出格式进行的,读出是按照后一级的输入格式进行的。因此,只要后一级需要的二维数据点在第二行缓存里已经存在,流水线就可以正常工作,如果后一级需要的二维数据点在第二行缓存里还没有完成,则流水线需要继续等待。可以理解的是,根据图像转换格式的不同,这种等待控制既可以是固定的,也可以是动态管理的,
又进一步地,本发明实施例中,在第一可配置窗口与第二可配置窗口间***第二行缓存,以此才能进行多级CNN处理。同时使用第二行缓存可以进一步降低处理时延和功耗,在电路的实现上也更加简便,直接在单级CNN的基础上通过增加第二行缓存,即可实现多级CNN的处理。
可选地,在上述图10对应的实施例的基础上,本发明实施例提供的图像处理方法的第七个可选实施例中,
存储待处理三维内容数据的数据序列,待处理三维内容数据的数据序列包括多个三维数据点,三维数据点表示为Y[k][j][i][d],其中,Y表示待处理三维内容数据的数据序列,k表示三维数据点的帧坐标,j表示三维数据点的行坐标,i表示三维数据点的列坐标,d为特征维度坐标,k、j、i与d均为大于等于0的正整数,当j为0,i为0且k为0时,d从0开始递增,直至递增到d对应的数据范围,得到第三序列,在第三序列的基础上对i进行递增,直至递增到i对应的数据范围,得到第四序列,在第四序列的基础上对j进行递增,直至递增到j对应的数据范围,得到第五序列,在第五序列的基础上对k进行递增,直至递增到k对应的数据范围,得到待处理三维内容数据的数据序列。
本实施例中。图像处理装置处理可以处理二维图像以外,还可以处理三维内容数据,这里的三维内容数据即为视频,再增加的一个特征维度值可以是时间值,也就是视频在每个对应的时间点上展现出来的二维图像,多个时间点连续起来就成为了视频。
假设待处理三维内容数据的大小为n×n×m(实际情况也可以是n1×n2.,且n1≠n2),有k个时间上的特征维度值需要处理,其中每个三维数据点表示为Y[k][j][i][d],则在一个连续存储区里,一行图像存放的形式如下:
Y[0][0][0][0],Y[0][0][0][1],……,Y[0][0][0][m-1],
Y[0][0][1][0],Y[0][0][1][1],……,Y[0][0][1][m-1],
……
Y[0][0][n-2][0],Y[0][0][n-2][1],……,Y[0][0][n-2][m-1],
Y[0][0][n-1][0],Y[0][0][n-1][1],……,Y[0][0][n-1][m-1]
上述序列被称为第四序列,上述序列中每一行被称为第三序列。在第四序列的基础上对k进行递增,形成第五序列,具体如下介绍。
其中,为了处理起来更加方便,通常情况下,将k表示三维数据点的帧坐标与j表示三维数据点的行坐标做叠加处理,也就是在处理后得到的数据点如下:
Y1[0][0][0],Y1[0][0][1],……,Y1[0][0][m-1],
Y1[0][1][0],Y1[0][1][1],……,Y1[0][1][m-1],
……
Y1[0][n-2][0],Y1[0][n-2][1],……,Y1[0][n-2][m-1],
Y1[0][n-1][0],Y1[0][n-1][1],……,Y1[0][n-1][m-1]
通过上述待处理三维图像的数据序列中同一行三维数据点排列规律,可以得到这样的规律,即先逐个存放不同特征维度值的三维数据点,然后依次存放不同列的三维数据点,等一行中的所有三维数据点存放完成后,再存放下一行Y1[1][0][0],Y1[1][0][1],……,Y1[1][n-1][m-2],Y1[1][n-1][m-1],直至最后一行Y1[n-1][0][0],Y1[n-1][0][1],……,Y1[n-1][n-1][m-2],Y1[1][n-1][m-1]。
其次,本发明实施例中,本方案可以继续应用到CNN的其他推广应用领域,例如视频数据的处理,即将原始二维图像数据进一步拓展为三维原始数据流。这种情况下,CNN处理将面对含增加的一个特征维度后,对四维数据的处理,本方案的思想方法继续适用。在CNN用于多业务流的情况,如云端业务处理,或终端视频数据流的情况下。多数据流的业务形态可以为进一步提高硬件效率提供机会。
可选地,在上述图10对应的实施例的基础上,本发明实施例提供的图像处理方法的第七个可选实施例中,
存储待处理一维图像的数据序列,待处理一维图像的数据序列包括多个一维数据点,一维数据点表示为Z[i][d],其中,Z表示待处理一维图像的数据序列,i表示一维数据点的列坐标,d为特征维度坐标,i与d均为大于等于0的正整数,当i为0时,d从0开始递增,直至递增到d对应的数据范围,得到第六序列,在第六序列的基础上对i进行递增,直至递增到i对应的数据范围,得到待处理一维图像的数据序列。
本实施例中。图像处理装置处理可以处理二维图像以外,还可以处理一维图像,具体处理方式如下:
假设待处理一维图像的大小为n,有m个特征维度值需要处理,其中每个一维数据点表示为Z[i][d],则在一个连续存储区里,一行图像存放的形式如下:
Z[0][0],Z[0][1],……,Z[0][m-1],
Z[1][0],Z[1][1],……,Z[1][m-1],
……
Z[n-2][0],Z[n-2][1],……,Z[n-2][m-1],
Z[n-1][0],Z[n-1][1],……,Z[n-1][m-1]
上述的序列中每一行可以被称为第六序列,然而这整个序列就是待处理一维图像的数据序列。
其次,本发明实施例中,还可以根据实际需求对二维图像做降维处理,并提供了一种具体的实现方式,使得方案的可行性更强,同时,增强本发明方案的实用性。
图11是本发明实施例图像处理装置20的结构示意图。图像处理装置20可包括输入组件210、输出组件220、处理器230和存储器240。存储器240可以包括只读存储器和随机存取存储器,并向处理器230提供指令和数据。存储器240的一部分还可以包括非易失性随机存取存储器。
存储器240存储了如下的元素,可执行模块或者数据结构,或者它们的子集,或者它们的扩展集:
操作指令:包括各种操作指令,用于实现各种操作。
操作***:包括各种***程序,用于实现各种基础业务以及处理基于硬件的任务。
本发明实施例中处理器230用于:
从所述待处理二维图像的数据序列中,根据预置规则获取所述待处理二维图像的数据序列中的多个第一数据点;
对提取的所述多个第一数据点进行加权以及累加运算,并依次得到第一图像数据处理结果。
处理器230控制图像处理装置20的操作,处理器230还可以称为CPU。存储器240可以包括只读存储器和随机存取存储器,并向处理器330提供指令和数据。存储器340的一部分还可以包括非易失性随机存取存储器。具体的应用中,适配器30的各个组件通过总线***350耦合在一起,其中总线***350除包括数据总线之外,还可以包括电源总线、控制总线和状态信号总线等。但是为了清楚说明起见,在图中将各种总线都标为总线***250。
上述本发明实施例揭示的方法可以应用于处理器230中,或者由处理器230实现。处理器230可能是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法的各步骤可以通过处理器230中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器230可以是通用处理器、数字信号处理器(英文全称:Digital Signal Processing,英文缩写:DSP)、专用集成电路(英文全称:Application Specific Integrated Circuit,英文缩写:ASIC)、现场可编程门阵列(英文全称:Field-Programmable Gate Array,英文缩写:FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本发明实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本发明实施例所公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器240,处理器230读取存储器240中的信息,结合其硬件完成上述方法的步骤。
可选地,处理器330具体用于:
根据所述第一可配置窗口的参数,确定所述第一可配置窗口中的第一行缓存,所述第一行缓存用于确定所述第一可配置窗口中的所述多个第一数据点。
可选地,处理器330具体用于:
将所述第一可配置窗口所提取的所述多个第一数据点,在同一时刻内并行输入至乘加运算阵列,所述乘加运算阵列用于将所述多个第一数据点对应的数据进行加权以及累加。
可选地,处理器330具体用于:
将所述第一可配置窗口所提取的所述多个第一数据点,按照依次延迟一个时间间隔的方式分别输入至乘加运算阵列,所述乘加运算阵列用于将所述多个第一数据点对应的数据进行加权以及累加。
可选地,处理器330具体用于:
从所述待处理二维图像的数据序列中,根据所述第一图像数据处理结果获取所述待处理二维图像的数据序列中的多个第二数据点;
对提取的所述多个第二数据点进行加权以及累加运算,并依次得到第二图像数据处理结果。
可选地,处理器330具体用于:
配置所述第一可配置窗口与所述第二可配置窗口之间的第二行缓存,所述第二行缓存用于确定所述第一可配置窗口的所述多个第一数据点与所述第二可配置窗口的所述多个第二数据点。
本发明实施例中存储器240用于:
存储待处理二维图像的数据序列,所述待处理二维图像的数据序列包括多个二维数据点,所述二维数据点表示为X[j][i][d],其中,X表示所述待处理二维图像的数据序列,j表示所述二维数据点的行坐标,i表示所述二维数据点的列坐标,d为特征维度坐标,j、i与d均为大于等于0的正整数,当所述j为0且所述i为0时,所述d从0开始递增,直至递增到所述d对应的数据范围,得到第一序列,在所述第一序列的基础上对所述i进行递增,直至递增到所述i对应的数据范围,得到第二序列,在所述第二序列的基础上对所述j进行递增,直至递增到所述j对应的数据范围,得到所述待处理二维图像的数据序列;
可选地,存储器240具体用于:
存储待处理三维内容数据的数据序列,所述待处理三维内容数据的数据序列包括多个三维数据点,所述三维数据点表示为Y[k][j][i][d],其中,Y表示所述待处理三维内容数据的数据序列,k表示所述三维数据点的帧坐标,j表示所述三维数据点的行坐标,i表示所述三维数据点的列坐标,d为特征维度坐标,k、j、i与d均为大于等于0的正整数,当所述j为0,所述i为0且所述k为0时,所述d从0开始递增,直至递增到所述d对应的数据范围,得到第三序列,在所述第三序列的基础上对所述i进行递增,直至递增到所述i对应的数据范围,得到第四序列,在所述第四序列的基础上对所述j进行递增,直至递增到所述j对应的数据范围,得到第五序列,在所述第五序列的基础上对所述k进行递增,直至递增到所述k对应的数据范围,得到所述待处理三维内容数据的数据序列。
可选地,存储器240具体用于:
存储待处理一维图像的数据序列,所述待处理一维图像的数据序列包括多个一维数据点,所述一维数据点表示为Z[i][d],其中,Z表示所述待处理一维图像的数据序列,i表示所述一维数据点的列坐标,d为特征维度坐标,i与d均为大于等于0的正整数,当所述i为0时,所述d从0开始递增,直至递增到所述d对应的数据范围,得到第六序列,在所述第六序列的基础上对所述i进行递增,直至递增到所述i对应的数据范围,得到所述待处理一维图像的数据序列。
本发明实施例中输入组件210用于:
接收第一可配置窗口的参数,所述参数用于确定所述第一可配置窗口中所提取的所述多个第一数据点的数目以及排列方式。
可选地,输入组件210具体用于:
接收第二可配置窗口的参数,所述参数用于确定所述第二可配置窗口中所提取的所述多个第二数据点的数目以及排列方式。
图11的相关描述可以参阅图10方法部分的相关描述和效果进行理解,本处不做过多赘述。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的***,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的***,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个***,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存取控制器(英文全称:Read-Only Memory,英文缩写:ROM)、随机存取存取控制器(英文全称:Random Access Memory,英文缩写:RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
Claims (18)
1.一种图像处理装置,其特征在于,所述图像处理装置包括:存储器、第一缓存器以及第一运算器;
所述存储器,用于存储待处理二维图像的数据序列,所述待处理二维图像的数据序列包括多个二维数据点,所述二维数据点表示为X[j][i][d],其中,X表示所述待处理二维图像的数据序列,j表示所述二维数据点的行坐标,i表示所述二维数据点的列坐标,d为特征维度坐标,j、i与d均为大于等于0的正整数,当所述j为0且所述i为0时,所述d从0开始递增,直至递增到所述d对应的数据范围,得到第一序列,在所述第一序列的基础上对所述i进行递增,直至递增到所述i对应的数据范围,得到第二序列,在所述第二序列的基础上对所述j进行递增,直至递增到所述j对应的数据范围,得到所述待处理二维图像的数据序列;
所述第一缓存器,用于从所述待处理二维图像的数据序列中,根据预置规则获取所述待处理二维图像的数据序列中的多个第一数据点;
所述第一运算器,用于对提取的所述多个第一数据点进行加权以及累加运算,并依次得到第一图像数据处理结果;
所述第一缓存器,具体用于在获取所述第一数据点时,根据所述预置规则确定所述第一数据点的数目和排列方式,所述预置规则包括所述第一缓存器针对n×n×m的所述待处理二维图像的数据序列,所对应的CNN卷积窗口是p×q×m,其中,所述n为所述待处理二维图像的横向与纵向像素大小,所述p为所述卷积窗口的横向像素大小,所述q为所述卷积窗口的纵向像素大小,所述m为特征维度值,所述n、所述p、所述q和所述m均为大于等于1的正整数,所述第一数据点为多个二维数据点。
2.根据权利要求1所述的装置,其特征在于,
所述第一缓存器,还用于接收第一可配置窗口的参数,所述参数用于确定所述第一可配置窗口中所提取的所述多个第一数据点的数目以及排列方式。
3.根据权利要求2所述的装置,其特征在于,
所述第一缓存器,还用于根据所述第一可配置窗口的参数,确定所述第一可配置窗口中的第一行缓存,所述第一行缓存用于确定所述第一可配置窗口中的所述多个第一数据点。
4.根据权利要求3所述的装置,其特征在于,
所述第一运算器,具体用于将所述第一可配置窗口所提取的所述多个第一数据点,在同一时刻内并行输入至乘加运算阵列,所述乘加运算阵列用于将所述多个第一数据点对应的数据进行加权以及累加。
5.根据权利要求3所述的装置,其特征在于,
所述第一运算器,具体用于将所述第一可配置窗口所提取的所述多个第一数据点,按照依次延迟一个时间间隔的方式分别输入至乘加运算阵列,所述乘加运算阵列用于将所述多个第一数据点对应的数据进行加权以及累加。
6.根据权利要求1至5中任一项所述的装置,其特征在于,所述装置还包括第二缓存器以及第二运算器;
所述第二缓存器,用于从所述待处理二维图像的数据序列中,根据所述第一图像数据处理结果获取所述待处理二维图像的数据序列中的多个第二数据点;
所述第二运算器,用于对提取的所述多个第二数据点进行加权以及累加运算,并依次得到第二图像数据处理结果。
7.根据权利要求6所述的装置,其特征在于,
所述第二缓存器,还用于接收第二可配置窗口的参数,所述参数用于确定所述第二可配置窗口中所提取的所述多个第二数据点的数目以及排列方式;
所述第二缓存器,还用于配置所述第一可配置窗口与所述第二可配置窗口之间的第二行缓存,所述第二行缓存用于确定所述第一可配置窗口的所述多个第一数据点与所述第二可配置窗口的所述多个第二数据点。
8.根据权利要求1所述的装置,其特征在于,
所述存储器还用于存储待处理三维内容数据的数据序列,所述待处理三维内容数据的数据序列包括多个三维数据点,所述三维数据点表示为Y[k][j][i][d],其中,Y表示所述待处理三维内容数据的数据序列,k表示所述三维数据点的帧坐标,j表示所述三维数据点的行坐标,i表示所述三维数据点的列坐标,d为特征维度坐标,k、j、i与d均为大于等于0的正整数,当所述j为0,所述i为0且所述k为0时,所述d从0开始递增,直至递增到所述d对应的数据范围,得到第三序列,在所述第三序列的基础上对所述i进行递增,直至递增到所述i对应的数据范围,得到第四序列,在所述第四序列的基础上对所述j进行递增,直至递增到所述j对应的数据范围,得到第五序列,在所述第五序列的基础上对所述k进行递增,直至递增到所述k对应的数据范围,得到所述待处理三维内容数据的数据序列。
9.根据权利要求1所述的装置,其特征在于,
所述存储器还用于存储待处理一维图像的数据序列,所述待处理一维图像的数据序列包括多个一维数据点,所述一维数据点表示为Z[i][d],其中,Z表示所述待处理一维图像的数据序列,i表示所述一维数据点的列坐标,d为特征维度坐标,i与d均为大于等于0的正整数,当所述i为0时,所述d从0开始递增,直至递增到所述d对应的数据范围,得到第六序列,在所述第六序列的基础上对所述i进行递增,直至递增到所述i对应的数据范围,得到所述待处理一维图像的数据序列。
10.一种图像处理的方法,其特征在于,包括:
存储待处理二维图像的数据序列,所述待处理二维图像的数据序列包括多个二维数据点,所述二维数据点表示为X[j][i][d],其中,X表示所述待处理二维图像的数据序列,j表示所述二维数据点的行坐标,i表示所述二维数据点的列坐标,d为特征维度坐标,j、i与d均为大于等于0的正整数,当所述j为0且所述i为0时,所述d从0开始递增,直至递增到所述d对应的数据范围,得到第一序列,在所述第一序列的基础上对所述i进行递增,直至递增到所述i对应的数据范围,得到第二序列,在所述第二序列的基础上对所述j进行递增,直至递增到所述j对应的数据范围,得到所述待处理二维图像的数据序列;
从所述待处理二维图像的数据序列中,根据预置规则获取所述待处理二维图像的数据序列中的多个第一数据点;
对提取的所述多个第一数据点进行加权以及累加运算,并依次得到第一图像数据处理结果;
所述根据预置规则获取所述待处理二维图像的数据序列中的多个第一数据点,包括:
在获取所述第一数据点时,根据所述预置规则确定所述第一数据点的数目和排列方式,所述预置规则包括所述第一缓存器针对n×n×m的所述待处理二维图像的数据序列,所对应的CNN卷积窗口是p×q×m,其中,所述n为所述待处理二维图像的横向与纵向像素大小,所述p为所述卷积窗口的横向像素大小,所述q为所述卷积窗口的纵向像素大小,所述m为特征维度值,所述n、所述p、所述q和所述m均为大于等于1的正整数,所述第一数据点为多个二维数据点。
11.根据权利要求10所述的方法,其特征在于,所述从所述数据序列中,根据预置规则获取所述数据序列中的多个第一数据点,包括:
接收第一可配置窗口的参数,所述参数用于确定所述第一可配置窗口中所提取的所述多个第一数据点的数目以及排列方式。
12.根据权利要求11所述的方法,其特征在于,所述接收第一可配置窗口的参数之后,所述方法还包括:
根据所述第一可配置窗口的参数,确定所述第一可配置窗口中的第一行缓存,所述第一行缓存用于确定所述第一可配置窗口中的所述多个第一数据点。
13.根据权利要求12所述的方法,其特征在于,所述对提取的所述多个第一数据点进行加权以及累加运算,并依次得到第一图像数据处理结果,包括:
将所述第一可配置窗口所提取的所述多个第一数据点,在同一时刻内并行输入至乘加运算阵列,所述乘加运算阵列用于将所述多个第一数据点对应的数据进行加权以及累加。
14.根据权利要求12所述的方法,其特征在于,所述对提取的所述多个第一数据点进行加权以及累加运算,并依次得到第一图像数据处理结果,包括:
将所述第一可配置窗口所提取的所述多个第一数据点,按照依次延迟一个时间间隔的方式分别输入至乘加运算阵列,所述乘加运算阵列用于将所述多个第一数据点对应的数据进行加权以及累加。
15.根据权利要求10至14中任一项所述的方法,其特征在于,所述对提取的所述多个第一数据点进行加权以及累加运算,并依次得到第一图像数据处理结果之后,所述方法还包括:
从所述待处理二维图像的数据序列中,根据所述第一图像数据处理结果获取所述待处理二维图像的数据序列中的多个第二数据点;
对提取的所述多个第二数据点进行加权以及累加运算,并依次得到第二图像数据处理结果。
16.根据权利要求15所述的方法,其特征在于,所述从所述数据序列中,根据所述第一图像数据处理结果获取所述数据序列中的多个第二数据点,包括:
接收第二可配置窗口的参数,所述参数用于确定所述第二可配置窗口中所提取的所述多个第二数据点的数目以及排列方式;
配置所述第一可配置窗口与所述第二可配置窗口之间的第二行缓存,所述第二行缓存用于确定所述第一可配置窗口的所述多个第一数据点与所述第二可配置窗口的所述多个第二数据点。
17.根据权利要求10所述的方法,其特征在于,
存储待处理三维内容数据的数据序列,所述待处理三维内容数据的数据序列包括多个三维数据点,所述三维数据点表示为Y[k][j][i][d],其中,Y表示所述待处理三维内容数据的数据序列,k表示所述三维数据点的帧坐标,j表示所述三维数据点的行坐标,i表示所述三维数据点的列坐标,d为特征维度坐标,k、j、i与d均为大于等于0的正整数,当所述j为0,所述i为0且所述k为0时,所述d从0开始递增,直至递增到所述d对应的数据范围,得到第三序列,在所述第三序列的基础上对所述i进行递增,直至递增到所述i对应的数据范围,得到第四序列,在所述第四序列的基础上对所述j进行递增,直至递增到所述j对应的数据范围,得到第五序列,在所述第五序列的基础上对所述k进行递增,直至递增到所述k对应的数据范围,得到所述待处理三维内容数据的数据序列。
18.根据权利要求10所述的方法,其特征在于,
存储待处理一维图像的数据序列,所述待处理一维图像的数据序列包括多个一维数据点,所述一维数据点表示为Z[i][d],其中,Z表示所述待处理一维图像的数据序列,i表示所述一维数据点的列坐标,d为特征维度坐标,i与d均为大于等于0的正整数,当所述i为0时,所述d从0开始递增,直至递增到所述d对应的数据范围,得到第六序列,在所述第六序列的基础上对所述i进行递增,直至递增到所述i对应的数据范围,得到所述待处理一维图像的数据序列。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510600861.8A CN105260773B (zh) | 2015-09-18 | 2015-09-18 | 一种图像处理装置以及图像处理方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510600861.8A CN105260773B (zh) | 2015-09-18 | 2015-09-18 | 一种图像处理装置以及图像处理方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105260773A CN105260773A (zh) | 2016-01-20 |
CN105260773B true CN105260773B (zh) | 2018-01-12 |
Family
ID=55100453
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510600861.8A Active CN105260773B (zh) | 2015-09-18 | 2015-09-18 | 一种图像处理装置以及图像处理方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105260773B (zh) |
Families Citing this family (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105844330B (zh) * | 2016-03-22 | 2019-06-28 | 华为技术有限公司 | 神经网络处理器的数据处理方法及神经网络处理器 |
CN106127302A (zh) * | 2016-06-23 | 2016-11-16 | 杭州华为数字技术有限公司 | 处理数据的电路、图像处理***、处理数据的方法和装置 |
GB2554711B (en) * | 2016-10-06 | 2020-11-25 | Imagination Tech Ltd | Buffer addressing for a convolutional neural network |
CN107742150B (zh) | 2016-10-31 | 2020-05-12 | 腾讯科技(深圳)有限公司 | 一种卷积神经网络的数据处理方法和装置 |
CN106570565A (zh) * | 2016-11-21 | 2017-04-19 | 中国科学院计算机网络信息中心 | 一种面向大数据的深度学习方法及*** |
CN107085827B (zh) * | 2017-04-27 | 2020-06-16 | 中国电子科技集团公司第二十八研究所 | 基于硬件平台实现的超分辨力图像复原方法 |
CN108804974B (zh) * | 2017-04-27 | 2021-07-02 | 深圳鲲云信息科技有限公司 | 目标检测算法的硬件架构的资源估算、配置方法及*** |
US11360744B2 (en) * | 2017-06-29 | 2022-06-14 | Beijing Qingying Machine Visual Technology Co., Ltd. | Two-dimensional data matching method, device and logic circuit |
CN109543139B (zh) | 2017-09-22 | 2021-09-17 | 杭州海康威视数字技术股份有限公司 | 卷积运算方法、装置、计算机设备及计算机可读存储介质 |
CN108981782B (zh) * | 2018-05-16 | 2020-08-25 | 吉林工程技术师范学院 | 一种利用手机实现计算关联成像的方法 |
CN110770763A (zh) * | 2018-10-08 | 2020-02-07 | 深圳市大疆创新科技有限公司 | 数据存储的装置、方法、处理器和可移动设备 |
CN111193916B (zh) * | 2018-12-29 | 2022-03-29 | 中科寒武纪科技股份有限公司 | 运算方法 |
CN109919312B (zh) * | 2019-03-29 | 2021-04-23 | 北京智芯微电子科技有限公司 | 卷积神经网络的运算方法、装置及dpu |
CN110333827B (zh) * | 2019-07-11 | 2023-08-08 | 山东浪潮科学研究院有限公司 | 一种数据加载装置和数据加载方法 |
CN112967211A (zh) * | 2021-01-31 | 2021-06-15 | 成都商汤科技有限公司 | 一种图像处理方法、装置、计算机设备及存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1936958A (zh) * | 2005-09-19 | 2007-03-28 | 西门子公司 | 用于从二维投影图像中重建三维图像体积的方法和装置 |
CN101310294A (zh) * | 2005-11-15 | 2008-11-19 | 伯纳黛特·加纳 | 神经网络的训练方法 |
CN102306187A (zh) * | 2011-08-31 | 2012-01-04 | 浙江大学 | 二维表hash排序方法 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2002518916A (ja) * | 1998-06-19 | 2002-06-25 | イクエーター テクノロジーズ インコーポレイテッド | 第1の解像度を有する符号化された形式の画像を第2の解像度を有するデコードされた形式の画像に直接にデコードする回路及び方法 |
JP5366612B2 (ja) * | 2008-05-20 | 2013-12-11 | 株式会社東芝 | 画像処理装置、画像処理方法および画像処理プログラム |
-
2015
- 2015-09-18 CN CN201510600861.8A patent/CN105260773B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1936958A (zh) * | 2005-09-19 | 2007-03-28 | 西门子公司 | 用于从二维投影图像中重建三维图像体积的方法和装置 |
CN101310294A (zh) * | 2005-11-15 | 2008-11-19 | 伯纳黛特·加纳 | 神经网络的训练方法 |
CN102306187A (zh) * | 2011-08-31 | 2012-01-04 | 浙江大学 | 二维表hash排序方法 |
Also Published As
Publication number | Publication date |
---|---|
CN105260773A (zh) | 2016-01-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105260773B (zh) | 一种图像处理装置以及图像处理方法 | |
CN110050267B (zh) | 用于数据管理的***和方法 | |
JP7431913B2 (ja) | 畳み込みニューラルネットワークのための効率的データレイアウト | |
Chang et al. | Recurrent neural networks hardware implementation on FPGA | |
CN104915322B (zh) | 一种卷积神经网络硬件加速方法 | |
CN108304923A (zh) | 卷积运算处理方法及相关产品 | |
CN108090565A (zh) | 一种卷积神经网络并行化训练加速方法 | |
CN108629406B (zh) | 用于卷积神经网络的运算装置 | |
CN106951962A (zh) | 用于神经网络的复合运算单元、方法和电子设备 | |
CN110188869B (zh) | 一种基于卷积神经网络算法的集成电路加速计算的方法及*** | |
US20240265234A1 (en) | Digital Processing Circuits and Methods of Matrix Operations in an Artificially Intelligent Environment | |
CN110276447A (zh) | 一种计算装置及方法 | |
CN111260020A (zh) | 卷积神经网络计算的方法和装置 | |
JP2022539662A (ja) | 分散処理を加速させるパイプライン並列化のためのシステムおよび方法 | |
Duan et al. | Energy-efficient architecture for FPGA-based deep convolutional neural networks with binary weights | |
CN115238863A (zh) | 一种卷积神经网络卷积层的硬件加速方法、***及应用 | |
CN110716751B (zh) | 高并行度计算平台、***及计算实现方法 | |
Al Maashri et al. | A hardware architecture for accelerating neuromorphic vision algorithms | |
CN110135563A (zh) | 一种卷积神经网络二值化方法及运算电路 | |
CN111178513B (zh) | 神经网络的卷积实现方法、卷积实现装置及终端设备 | |
CN112836793B (zh) | 浮点可分离卷积计算加速装置、***以及图像处理方法 | |
CN113592075B (zh) | 卷积运算装置、方法和芯片 | |
CN115034360A (zh) | 三维卷积神经网络卷积层的处理方法和处理装置 | |
CN109063822B (zh) | 一种计算方法及计算装置 | |
Sikka et al. | Area-optimal FPGA implementation of the YOLO v2 algorithm using High-Level Synthesis |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |