一种卷积神经网络前向加速方法、装置及系统与流程

文档序号:16471167发布日期:2019-01-02 23:06阅读:197来源:国知局
一种卷积神经网络前向加速方法、装置及系统与流程

本发明涉及人工智能技术领域,特别涉及一种卷积神经网络前向加速方法、装置及系统。



背景技术:

随着人工智能(ai,artificialintelligence)的发展,现有技术中出现了各种神经网络卷积模型,包括:lenet-5模型、alexnet模型、vggnet模型、googlenet模型、resnet模型等等。每个神经网络模型有其特点,例如:

lenet-5模型是第一个成功应用于数字识别的卷积神经网络模型,卷积层自带激励函数。

alexnet模型为较为经典的卷积神经网络模型,其结构通常为:输入层→(卷积层→池化层)→全连接层→输出层,alexnet卷积层的卷积核边长为5或3,池化层的窗口边长为3。

vggnet模型和alexnet模型在结构上没多大变化,在卷积层部位增加了多个卷积层。

googlenet模型使用了多个不同分辨率的卷积核,最后再对它们得到的特征图(featuremap)按深度融合在一起。

但是,目前随着人工智能使用领域的日趋广泛,卷积神经网络的反应速度逐渐成为了制约其应用的瓶颈。因此,需要改进现有的卷积神经网络以提高其处理速度。



技术实现要素:

为了解决现有技术中存在的技术问题,本发明实施例提供了一种卷积神经网络前向加速方法、装置及系统。所述技术方案如下:

一方面,提供一种卷积神经网络前向加速方法,所述方法包括在卷积神经网络结构中:将卷积神经网络中的四个顺序向前层:卷积层(convolutionlayer)、批次标准化层(batchnormlizaitonlayer)、缩放层(scalelayer)和非线性激活层(relulayer)拼接构成一个串行卷积层;和/或,拼接卷积层(convolutionlayer)中同层、同体积的卷积核,以使得所述同层、同体积的卷积核被拼接成为一个并行卷积核;和/或,提取具有二倍数维度关系的特征图(featuremap),对提取的特征图(featuremap)进行分组,对分组中的特征图(featuremap)进行级数拼接。

另一方面,提供一种卷积神经网络前向加速装置,所述装置包括如下单元:第一前向加速单元,用于将卷积神经网络中的四个顺序向前层:卷积层(convolutionlayer)、批次标准化层(batchnormlizaitonlayer)、缩放层(scalelayer)和非线性激活层(relulayer)拼接构成一个串行卷积层;和/或,第二前向加速单元,用于拼接卷积层(convolutionlayer)中同层、同体积的卷积核,以使得所述同层、同体积的卷积核被拼接成为一个并行卷积核;和/或,第三前向加速单元,对维度具有2倍数关系的特征图(featuremap)进行提取和分组,对每个分组中维度具有2倍数关系的特征图(featuremap)进行级数拼接。

另一方面,提供一种人工智能系统,包含前述的装置。

另一方面,提供一种存储介质,所述存储介质包含指令,所述指令被执行用于实施前述的方法。

本发明实施例提供的技术方案带来的有益效果包括:本发明能够去前向神经网络卷积进行显著加速,使得加速后的神经网络卷积更加适用于安防、工业自动化、汽车自动驾驶等需要快速检测和目标识别的场景。

附图说明

为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1是本发明实施例提供的卷积神经网络inception模块结构示意图;

图2是本发明实施例提供的卷积层感受视野原理示意图;

图3是本发明实施例卷积过程中gpu与内存之间的信息交互示意图;

图4是本发明实施例卷积过程中串行拼接加速后gpu与内存之间的信息交互示意图;

图5是本发明实施例中一个卷积核的示意图;

图6是本发明实施例中经过并行拼接后的卷积核的示意图;

图7是本发明实施例对特征进行分组的过程示意图;

图8是本发明实施例对分组结果进行极数拼接的示意图;

图9是本发明实施例提供的卷积神经网络执行主体结构示意图;

图10是本发明实施例提供的卷积神经网络执行主体结构示意图;

具体实施方式

为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地详细描述。

googlenet架构是由christianszegedy等人开发的。来自googleresearch,通过低于前5名7%的错误率,赢得了ilsvrc2014的挑战赛。这个伟大的表现很大程度上来自inception模块,它比以前卷积神经网络(cnn)具有更深的网络。这是通过称为初始模块的子网络实现的,这使得googlenet比以前的架构更有效地使用参数,从实际参数数值上看,googlenet的参数比alexnet少了10倍(约600万而不是6000万)。

图1描述了googlenet神经网络卷积构架中的inception模块。符号“3×3+2(s)”表示该层使用3×3内核,步幅2和相同填充。在该模块中,输入信号首先被复制并馈送到四个不同的层,所有卷积层都使用relu激活功能。其中,第二组卷积层使用不同的内核大小(1×1,3×3和5×5),允许它们以不同的比例捕获图案。此外,每一层都使用1和same填充的跨度(即使是最大的池化层),所以它们的输出全都具有与其输入相同的高度和宽度。这使得有可能连接最终深度连续层中沿着深度维度的所有输出(即,堆叠来自所有四个顶部卷积层的特征映射)。这个连接层可以在tensorflow中使用concat操作实现,其中axis=3(axis3是深度)。初始模块中具有1×1内核的卷积层,1×1内核的卷积层被配置为输出比输入少得多的特征图,它们作为瓶颈层,意味着降低了维度。在3×3和5×5卷积之前,这是特别有用的,因为这些在计算上是非常耗费内存的层。

总体而言,inception模块可以被视为类固醇卷积层,能够输出捕捉各种尺度复杂模式的特征映射。每个卷积层的卷积核的数量是一个超参数,不过这意味着需要六个超参数来调整添加的每个初始层。所有的卷积层都使用relu激活功能。

可见,inception模块cnn的构架深度非常深,这导致了在进行诸如安防、自动驾驶、工控自动化等实时性特别高的计算过程中,反应速度成为了制约应用的瓶颈。例如,广受关注的汽车辅助驾驶领域,目标检测能够可以实现精确的检测车身周围的人、车辆、路牌等信息,实时报警等,这需要非常快的运算速度,但是这与inception模块的模块构架产生了冲突。因此需要提高inception模块的速度,进而提升cnn的响应速度。发明人在对inception模型进行结构时发现其存在如下问题:

第一,在卷积神经网络层次结构中,每次进行卷积、批次标准化、缩放和非线性激活,需要耗费时间在启动这四个层和读写这四个层需要的数据上。

第二,现有的多尺度目标技术方案,在目标特征图处理时,有两种方案,一种是使用图像金字塔的方式,将图像进行缩放,每种尺度的图像串行通过卷积神经网络。这样的做法需要串行地跑多遍图像,并行度差,成倍地增加了目标检测时间。另一种方式是将缩放后的图像用“0”填充四周,组成一个批次相同大小的图片组一次送入卷积神经网络。这种方法虽然并行度高,但是因需要计算很多空白“0”值,耗时仍很高。

因此,在一个可能的实施例中,卷积神经网络构架如下:卷积层(convolutionlayer),批次标准化层(batchnormlizaitonlayer),缩放层(scalelayer),非线性激活层(relulayer),这四个层构成了串行向前的结构。

卷积层(convolutionlayer)通过感受视野(localreceptivefields)和共享权值的方式(sharedweights)实现对输入图像的采样。如图2所示,假设输入的是一个28×28的二维神经元,我们定义5×5的感受视野(localreceptivefields),那么隐藏层的神经元与输入层的5×5个神经元相连。可类似看作:隐藏层中的神经元具有一个5×5固定大小的感受视野去感受上一层的部分特征。在全连接神经网络中,隐藏层中的神经元的感受视野足够大乃至可以看到上一层的所有特征。而在卷积神经网络中,隐藏层中的神经元的感受视野比较小,只能看到上一次的部分特征,上一层的其他特征可以通过平移感受视野来得到同一层的其他神经元,由同一层其他神经元来看:设移动的步长为1:从左到右扫描,每次移动1格,扫描完之后,再向下移动一格,再次从左到右扫描。

可看出卷积层的神经元是只与前一层的部分神经元节点相连,每一条相连的线对应一个权重ω。一个感受视野带有一个卷积核,我们将感受视野中的权重ω矩阵称为卷积核;将感受视野对输入的扫描间隔称为步长(stride);当步长比较大时(stride>1),为了扫描到边缘的一些特征,感受视野可能会“出界”,这时需要对边界扩充(pad),边界扩充通常使用0来填充。卷积核的大小由用户来定义,即定义的感受视野的大小;卷积核的权重矩阵的值,便是卷积神经网络的参数,为了有一个偏移项,卷积核可附带一个偏移项,它的初值可以随机来生成,可通过训练进行变化。因此感受视野扫描时可以计算出下一层神经元的值为(ωij为卷积核,xij为原图坐标):

对下一层的所有神经元来说,它们从不同的位置去探测了上一层神经元的特征。可以通过一个带有卷积核的感受视野扫描生成的下一层神经元矩阵称为一个特征图(featuremap)。

经过卷积层之后,可以通过批次标准化层(batchnormalizationlayer)实现在神经网络层的中间进行预处理的操作,即在上一层的输入归一化处理后再进入网络的下一层,这样可有效地防止“梯度弥散”,加速网络训练。批次标准化层的计算可以按照如下算法进行计算(input表示输入,output表示输出):

每次训练时,取batch_size大小的样本进行训练,在批次标准化层(bn)中,将一个神经元看作一个特征,batch_size个样本在某个特征维度会有batch_size个值,然后在每个神经元xi维度上的进行这些样本的均值和方差,通过公式得到xi’,再通过参数γ和β进行线性映射得到每个神经元对应的输出yi’。在批次标准化层(bn)层中,可以看出每一个神经元维度上,都会有一个参数γ和β,它们同权重ω一样可以通过训练进行优化。

在卷积神经网络中进行批量归一化时,一般对未进行非线性激活的特征图(featuremap)进行批量归一化,输出后再作为激励层的输入,可达到调整激励函数偏导的作用。

一种做法是将特征图(featuremap)中的神经元作为特征维度,参数γ和β的数量和则等于:2×fmapwidth×fmaplength×fmapnum,这样做的话参数的数量会变得很多。

另一种做法是把一个特征图看做一个特征维度,一个特征图上的神经元共享这个特征图的参数γ和β,参数γ和β的数量和则等于2×fmapnum,计算均值和方差则在batch_size个训练样本在每一个特征图维度上的均值和方差。fmapnum指的是一个样本的特征图数量,特征图跟神经元一样也有一定的排列顺序。在训练过程中,我们每次都会将batch_size数目大小的训练样本放入到cnn网络中进行训练,在bn层中自然可以得到计算输出所需要的均值和方差;而在测试过程中,我们往往只会向cnn网络中输入一个测试样本,这是在bn层计算的均值和方差会均为0,因为只有一个样本输入,因此bn层的输入也会出现很大的问题,从而导致cnn网络输出的错误。所以在测试过程中,我们需要借助训练集中所有样本在bn层归一化时每个维度上的均值和方差,当然为了计算方便,我们可以在batch_num次训练过程中,将每一次在bn层归一化时每个维度上的均值和方差进行相加,最后再进行求一次均值即可。

在一个可选的实施例中,当输入经过卷积层时,若感受视野比较小,步长(stride)比较小,得到的特征图(featuremap)还是比较大,可以通过池化层(maxpooling)来对每一个featuremap进行降维操作,输出的深度还是不变的,依然为featuremap的个数。

池化层也有一个“池化视野(filter)”来对featuremap矩阵进行扫描,对“池化视野(filter)”中的矩阵值进行计算,一般有两种计算方式:

maxpooling:取“池化视野”矩阵中的最大值

averagepooling:取“池化视野”矩阵中的平均值

扫描的过程中同样地会涉及的扫描布长stride,扫描方式同卷积层一样,先从左到右扫描,结束则向下移动布长大小,再从左到右。

在一个可能的实施例中,如前所述,发明人发现卷积神经网络构架为:卷积层(convolutionlayer),批次标准化层(batchnormlizaitonlayer),缩放层(scalelayer),非线性激活层(relulayer)时,在启动四个层的每个层时,gpu都需要执行启动层、从内存调取数据、将结果数据返回内存。具体地,在一个执行过程中,如图3所示,gpu启动卷积层(convolutionlayer),从内存调取数据,执行卷积操作,将卷积结果返回到内存;启动批次标准化层(batchnormlizaitonlayer),从内存调取卷积结果数据,执行归一化操作,将归一化结果返回到内存;启动缩放层(scalelayer),读取归一化结果数据,对归一化结果进行比例缩放和位移,将经过比例缩放和位移后的数据返回到内存;启动非线性激活层(relulayer),读取比例缩放和位移后的数据,对数据进行非线性激活操作,将经过非线性激活后的数据返回到内存。在上述过程中,每个层都需要进行启动操作,同时数据进行了四次读取和四次返回。在需要极高反应速度的场景下,例如前面提到的无人驾驶场景和安防场景,这种耗费是一个极大的时间耗费。因此,从卷积神经网络的模型出发,可以进行如下改进:

将卷积层(convolutionlayer)、批次标准化层(batchnormlizaitonlayer)、缩放层(scalelayer)和非线性激活层(relulayer)四个顺序向前结构拼接成为一层。

拼接原理如下:

卷积层(convolutionlayer)的卷积核为n×n矩阵形式,例如2×2、3×3、4×5、5×5、6×6、7×7、8×8等等。

批次标准化层(batchnormlizaitonlayer)和缩放层(scalelayer)通常一起使用,二者共同实现了:输入归一化和对归一化的数值进行比例缩放和位移。其中,输入归一化基于公式1实现:

公式1:x_norm=(x-u)/std,其中u和std累计计算的均值和方差。

对归一化后的数值进行比例缩放和位移基于公式2实现:

公式2:y=alpha×x_norm+beta,其中alpha和beta是通过迭代学习的。

其中,批次标准化层(batchnormlizaitonlayer)实现了对于输入的归一化,缩放层(scalelayer)实现了对归一化后的输入进行比例缩放和位移。其中对于缩放层(scalelayer)的参数设定包括将bias_term设置为true,并且bias_term中的偏置对应了公式2中的beta。

非线性激活层(relulayer)中通过线性整流函数(relu函数)增加神经网络各层之间的非线性关系。在一个可能的实施例中,线性整流函数(relu函数)具有如下表达:

其中,λ是一个取自连续性均匀分布u(l,u)概率模型的随机变量,l<u且,u∈[0,1)。

这四个前向结构中,批次标准化层(batchnormlizaitonlayer)中的累计计算的均值和方差,缩放层(scalelayer)中的比例缩放和位移因子均可以作为量化参数加入到卷积核中。而线性整流函数虽然是一个分段函数,由于其是一个一次项函数,也可以通过卷积的形式与卷积核进行合并。可见,在原理上,可以将四个顺序向前结构拼接成为一层。

卷积层(convolutionlayer),用于通过卷积核与输入对象进行卷积,并输出特征图(featuremap);

批次标准化层(batchnormlizaitonlayer),用于卷积层的输出结果执行归一化操作;

缩放层(scalelayer),用于对归一化后的输入进行比例缩放和位移。

非线性激活层(relulayer),用于增加神经网络各层之间的非线性关系。

提取卷积层(convolutionlayer)的卷积核,该卷积核可以是2×2、3×3、4×5、5×5、6×6、7×7、8×8等等。

提取批次标准化层(batchnormlizaitonlayer)中累计计算的均值和方差,当然也可以提取与均值和方差等价的参数。

提取缩放层(scalelayer)的比例缩放因子和位移因子;

提取非线性激活层(relulayer)中的线性整流函数;

上述4个提取过程的顺序不会对发明的实施产生影响,所以本实施例不限定上述4个提取过程的顺序。

通过所述累计计算的均值和方差、比例缩放因子和位移因子以及线性整流函数将所述卷积核重构为第二卷积核;将所述第二卷积核作为串行卷积层的卷积核。

在一个可能的实施例中,拼接卷积层(convolutionlayer)中同层、同体积的卷积核,以使得所述同层、同体积的卷积核被拼接成为一个并行卷积核。如图5所示,在卷积层的inception模型中,包含三个3×3卷积核,并且这三个3×3卷积核在同一个层上,根据之前对卷积层原理的介绍,三个3×3卷积核实质上是利用3个3×3的感受视野(localreceptivefields),去与输入层的3个3×3神经元相连。要完成这个卷积,3个3×3卷积核要按照步长遍历整个输入层。如果按照正常过程,3个3×3阵列要遍历三次输入输入层,这显然是一种时间成本的耗费。因此,对于同层、同体积的卷积核可以进行并行拼接。如图6所示,图5中的3个3×3的卷积核的被并行拼接在一起,这样卷积层只需要读取一次输入层的内容,其时间耗费仅仅相当于进行一次9×3的卷积,一方面减少了卷积层的启动时间;另一方面,减少了卷积的总时间,大大低于进行三次3次3×3卷积的总时间。在一个实例中,将4个3×3的卷积核的被并行拼接在一起,这样卷积层只需要读取一次输入层的内容,其时间耗费仅仅相当于进行一次12×3的卷积,一方面减少了卷积层的启动时间;另一方面,减少了卷积的总时间,大大低于进行三次4次3×3卷积的总时间。通过该实施例可知,可以将m个同层n×n的矩阵并行拼接在一起,时间耗费相当于执行了一次mn×n的卷积,能够节省m-1次卷积启动的时间,卷积时间耗费也略低于m次n×n卷积的时间。即,通过并行拼接技术能够大大减少时间的损耗。

对于1×1的卷积核,在对输入层捕获时不能捕获任何功能,其作用只是捕获一个像素,但是1×1的卷积核被配置为输出比输入少得多的特征图,所以它们作为瓶颈层,意味着它们降低了维度。因此1×1卷积核配置在在3×3和5×5卷积核之前是特别有用的,因为3×3、5×5、n×n的卷积在计算上是非常耗费内存的层。

不失一般性地,拼接同层卷积核还包含m×n的卷积核,例如拼接3个4×3的卷积核,其同样可以带来时间成本的节约。

在一个可能的实施例中,对具有2倍数关系的特征图(featuremap)进行提取和分组,对每个分组中具有2倍数关系的特征图(featuremap)进行级数拼接。对于输出的各个特征图而言,因为卷积核不同,输出特征图尺寸不同,例如2×2、3×3、4×4、3×3、6×6、8×8、12×12、2×2、……,如果使用图像金字塔的方式,将图像进行缩放,每种尺度的图像串行通过卷积神经网络。这样的做法需要串行地跑多遍图像,并行度差,成倍地增加了目标检测时间。如果将缩放后的图像用“0”填充四周,组成一个批次相同大小的图片组一次送入卷积神经网络,这种方法虽然并行度高,但是因需要计算很多空白“0”值,耗时仍很高。因此,采用分组的方式对特征图进行处理,一种分组方式是将具有二倍关系的特征图进行分组,例如:提取2×2、4×4、8×8、16×16,……的所有特征图,然后从大到小依次排序,之后按照从大到小的2倍关系对特征图进行拼接,如图7所示,4a×4a、2a×2a、a×a为一系列维度具有2倍关系的特征图,按照极数关系排列,其余内容使用0进行填充。根据等比数列的极限计算,无论如何排列,参与计算的特征值面积都会小于24a2,也即,特征图的拼接后的尺寸具有收敛的结果。在这种情况下可以确定,对于边长是2na的特征图,其必然小于(2n+2n-1)×2na2,如此可以确定拼接特征图的最大尺寸,不必担心由于分组中的特征图数量过多而超过拼接模板导致信息丢失。同时,通过分组、提取和排序,能够减少运算的次数和运算量。

综上所述,可以通过将卷积神经网络中的四个顺序向前层:卷积层(convolutionlayer)、批次标准化层(batchnormlizaitonlayer)、缩放层(scalelayer)和非线性激活层(relulayer)拼接构成一个串行卷积层;拼接卷积层(convolutionlayer)中同层、同体积的卷积核,以使得所述同层、同体积的卷积核被拼接成为一个并行卷积核;对维度具有2倍数关系的特征图(featuremap)进行提取和分组,对每个分组中维度具有2倍数关系的特征图(featuremap)进行级数拼接三种方式提高卷积神经网络的效率,提高其在需要快速响应场景下的反应速度。这三种方式可以单独使用,也可以使用其中两种,当然当三种方式同时使用时,能够极大程度地提高卷积神经网络的前向加速。

在一个实施例中,提供一种卷积神经网络前向加速方法,所述方法包括在卷积神经网络结构中:

将卷积神经网络中的四个顺序向前层:卷积层(convolutionlayer)、批次标准化层(batchnormlizaitonlayer)、缩放层(scalelayer)和非线性激活层(relulayer)拼接构成一个串行卷积层;

和/或,拼接卷积层(convolutionlayer)中同层、同体积的卷积核,以使得所述同层、同体积的卷积核被拼接成为一个并行卷积核;

和/或,提取具有二倍数维度关系的特征图(featuremap),对提取的特征图(featuremap)进行分组,对分组中的特征图(featuremap)进行级数拼接。

在一个实施例中,提供一种卷积神经网络前向加速装置,所述装置包括如下单元:

第一前向加速单元,用于将卷积神经网络中的四个顺序向前层:卷积层(convolutionlayer)、批次标准化层(batchnormlizaitonlayer)、缩放层(scalelayer)和非线性激活层(relulayer)拼接构成一个串行卷积层;

和/或,第二前向加速单元,用于拼接卷积层(convolutionlayer)中同层、同体积的卷积核,以使得所述同层、同体积的卷积核被拼接成为一个并行卷积核;

和/或,第三前向加速单元,对维度具有2倍数关系的特征图(featuremap)进行提取和分组,对每个分组中维度具有2倍数关系的特征图(featuremap)进行级数拼接。

以下通过实验数据来说明使用本发明实施例的前向加速方法的技术效果,将拼接串行卷积列加速记为第ⅰ类加速:将拼接并行卷积列加速记为第ⅱ类加速,将拼接特征图加速记为第ⅲ类加速。

表一为三类加速在嵌入式平台下的加速效果,使用加速后和千速前用时的比值(加速比)来衡量加速的效果。分别列出只使用一种加速、使用两种加速和三种加速一起使用的数据。

表一、三类加速在嵌入式平台下的测试结果

表二、三类加速在云平台下的测试结果

根据以上实验数据,三类加速可以将嵌入式平台下执行的卷积神经网络时间比提高2-3倍,在云平台下的加速时间比可以提高5倍以上。同时可以看出,第ⅰ类加速的加速比基本是恒定的,即串行前向加速具有较为温度的加速效果;第ⅱ类加速中,拼接同层卷积核数量依次增加,加速效果逐渐增强,但是随着并行卷积核数量的增加,加速效果的增速逐渐变缓;第三类加速的与第一类加速比较类似,对于相同的输入层,输出的加速结果较为恒定。而且三种加速之间的线性度较高,证明三种加速相互之间的影响比较小。

请参考图9,其示出了本发明一个实施例提供执行主体的结构示意图。该用户端用于执行神经网络卷积方法。具体来讲:

终端(执行主体)1100可以包括rf(radiofrequency,射频)电路1110、包括有一个或一个以上计算机可读存储介质的存储器1120、输入单元1130、显示单元1140、视频传感器1150、音频电路1160、wifi(wirelessfidelity,无线保真)模块1170、包括有一个或者一个以上处理核心的处理器1180、以及电源990等部件。本领域技术人员可以理解,图9中示出的终端结构并不构成对终端的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。其中:

存储器1120可用于存储软件程序以及模块,处理器1180通过运行存储在存储器1120的软件程序以及模块,从而执行各种功能应用以及数据处理。存储器1120可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序(比如声音播放功能、图像播放功能等)等;存储数据区可存储根据终端1100的使用所创建的数据(比如视频数据、电话本等)等。此外,存储器1120可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。相应地,存储器1120还可以包括存储器控制器,以提供处理器1180和输入单元1130对存储器1120的访问。

输入单元1130可用于接收输入的数字或字符信息,以及产生与用户设置以及功能控制有关的键盘、鼠标、操作杆、光学或者轨迹球信号输入。具体地,输入单元1130可包括图像输入设备1131以及其他输入设备1132。图像输入设备1131可以是摄像头,也可以是光电扫描设备。除了图像输入设备1131,输入单元1130还可以包括其他输入设备1132。具体地,其他输入设备1132可以包括但不限于物理键盘、功能键(比如音量控制按键、开关按键等)、轨迹球、鼠标、操作杆等中的一种或多种。

显示单元1140可用于显示由用户输入的信息或提供给用户的信息以及终端1100的各种图形用户接口。

处理器1180是终端1100的控制中心,利用各种接口和线路连接整个手机的各个部分,通过运行或执行存储在存储器1120内的软件程序和/或模块,以及调用存储在存储器1120内的数据,执行终端1100的各种功能和处理数据,从而对手机进行整体监控。可选的,处理器1180可包括一个或多个处理核心;优选的,处理器1180可集成应用处理器和调制解调处理器,其中,应用处理器主要处理操作系统、用户界面和应用程序等,调制解调处理器主要处理无线通信。

可以理解的是,上述调制解调处理器也可以不集成到处理器1180中。

终端1100还包括给各个部件供电的电源990(比如电池),优选的,电源可以通过电源管理系统与处理器1180逻辑相连,从而通过电源管理系统实现管理充电、放电、以及功耗管理等功能。电源990还可以包括一个或一个以上的直流或交流电源、再充电系统、电源故障检测电路、电源转换器或者逆变器、电源状态指示器等任意组件。

请参考图10,其示出了本发明一个实施例提供的服务器的结构示意图。该服务器用于实施上述实施例中提供的神经网络卷积方法。具体来讲:

所述服务器1200包括中央处理单元(cpu)1201、包括随机存取存储器(ram)1202和只读存储器(rom)1203的系统存储器1204,以及连接系统存储器1204和中央处理单元1201的系统总线1205。所述服务器1200还包括帮助计算机内的各个器件之间传输信息的基本输入/输出系统(i/o系统)1206,和用于存储操作系统1213、应用程序1214和其他程序模块1215的大容量存储设备1207。

所述基本输入/输出系统1206包括有用于显示信息的显示器1208和用于用户输入信息的诸如鼠标、键盘之类的输入设备1209。其中所述显示器1208和输入设备1209都通过连接到系统总线1205的输入输出控制器1210连接到中央处理单元1201。所述基本输入/输出系统1206还可以包括输入输出控制器1210以用于接收和处理来自键盘、鼠标、或电子触控笔等多个其他设备的输入。类似地,输入输出控制器1210还提供输出到显示屏、打印机或其他类型的输出设备。

所述大容量存储设备1207通过连接到系统总线1205的大容量存储控制器(未示出)连接到中央处理单元1201。所述大容量存储设备1207及其相关联的计算机可读介质为服务器1200提供非易失性存储。也就是说,所述大容量存储设备1207可以包括诸如硬盘或者cd-rom驱动器之类的计算机可读介质(未示出)。

不失一般性,所述计算机可读介质可以包括计算机存储介质和通信介质。计算机存储介质包括以用于存储诸如计算机可读指令、数据结构、程序模块或其他数据等信息的任何方法或技术实现的易失性和非易失性、可移动和不可移动介质。计算机存储介质包括ram、rom、eprom、eeprom、闪存或其他固态存储其技术,cd-rom、dvd或其他光学存储、磁带盒、磁带、磁盘存储或其他磁性存储设备。当然,本领域技术人员可知所述计算机存储介质不局限于上述几种。上述的系统存储器1204和大容量存储设备1207可以统称为存储器。

根据本发明的各种实施例,所述服务器1200还可以通过诸如因特网等网络连接到网络上的远程计算机运行。也即服务器1200可以通过连接在所述系统总线1205上的网络接口单元1211连接到网络1212,或者说,也可以使用网络接口单元1211来连接到其他类型的网络或远程计算机系统(未示出)。

所述存储器还包括一个或者一个以上的程序,所述一个或者一个以上程序存储于存储器中,且经配置以由一个或者一个以上处理器执行。上述一个或者一个以上程序包含用于执行上述后台服务器侧的方法的指令。

在示例性实施例中,还提供了一种包括指令的非临时性计算机可读存储介质,例如包括指令的存储器,上述指令可由终端的处理器执行以完成上述方法实施例中发送方客户端或接收方客户端侧的各个步骤,或者上述指令由服务器的处理器执行以完成上述方法实施例中后台服务器侧的各个步骤。例如,所述非临时性计算机可读存储介质可以是rom、随机存取存储器(ram)、cd-rom、磁带、软盘和光数据存储设备等。

应当理解的是,在本文中提及的“多个”是指两个或两个以上。“和/或”,描述关联对象的关联关系,表示可以存在三种关系,例如,a和/或b,可以表示:单独存在a,同时存在a和b,单独存在b这三种情况。字符“/”一般表示前后关联对象是一种“或”的关系。

上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。

本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。

以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

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