轮廓检测方法及相关产品与流程

文档序号:16471192发布日期:2019-01-02 23:07阅读:211来源:国知局
轮廓检测方法及相关产品与流程

本申请涉及信息处理技术领域,具体涉及一种轮廓检测方法及相关产品。



背景技术:

随着信息技术的不断发展和人们日益增长的需求,人们对信息及时性的要求越来越高了。目前,终端对信息的获取以及处理均是基于通用处理器获得的,例如在通用处理器运行指定应用程序来进行对象检测以及轮廓提取等。

在实践中发现,这种基于通用处理器运行软件程序来处理信息的方式,受限于通用处理器的运行速率,特别是在通用处理器负荷较大的情况下,信息处理效率较低、时延较大。

申请内容

本申请实施例提供了一种轮廓检测方法及相关产品,可提升计算装置进行轮廓检测的处理速度,提高效率。

第一方面,本申请实施例提供一种轮廓检测方法,应用于计算装置内,所述计算装置包括直接内存访问dma单元和和运算单元,所述dma单元包括dma控制器和寄存器模块,所述方法包括:

所述dma控制器从所述寄存器模块中获取第一地址和第二地址;所述dma控制器从所述第一地址对应的存储空间中获取待处理的目标图像,所述目标图像包括待处理的目标物体;

所述运算单元获取运算指令,以调用所述运算指令对所述目标图像中的目标物体进行轮廓检测和提取处理,从而获得轮廓输出结果;并将所述轮廓输出结果发送至所述dma控制器;其中,所述轮廓输出结果为所述目标物体的边缘轮廓,所述运算指令为预先存储用于轮廓检测和提取的指令。

在一些可能的实施例中,所述计算装置还包括寄存器单元以及控制器单元,所述运算单元获取运算指令,以调用运算指令对所述目标图像中的目标物体进行轮廓检测和提取处理,从而获得轮廓输出结果包括:

所述控制器单元从所述寄存器单元中提取第一运算指令,并发送给所述运算单元;

所述运算单元调用所述第一运算指令对所述目标图像进行特征提取,从而获得特征图像;

所述运算单元从所述特征图像中提取出所述目标物体的边缘轮廓,以作为轮廓输出结果。

在一些可能的实施例中,所述运算单元从所述特征图像中提取出所述目标物体的边缘轮廓,以作为轮廓输出结果包括:

所述运算单元在所述特征图像中对所述目标物体进行标识,从而提取所述目标物体的边缘轮廓,以作为轮廓输出结果;或者,

所述运算单元在所述特征图像中对所述目标物体的边缘进行标识和提取,从而获得轮廓输出结果。

在一些可能的实施例中,所述运算单元调用所述第一运算指令对所述目标图像进行特征提取,从而获得特征图像包括:

所述运算单元基于至少一个线程的运算指令集,对所述目标图像进行特征提取,从而获得特征图像;其中,所述运算指令集包括至少一个所述第一运算指令,且所述运算指令集中各个第一运算指令的调用顺序是用户侧或终端侧自定义设置的。

在一些可能的实施例中,所述dma控制器获取待处理的目标图像包括:

所述dma控制器获取用户输入的待处理的原始图像;

所述运算单元对所述原始图像进行预处理,从而获得待处理的所述目标图像,其中,所述预处理包括以下处理中的任一项或多项的组合:平移、伸缩变换、非线性转换、归一化、格式转换、数据去重、数据异常处理以及数据缺失填补。

在一些可能的实施例中,所述运算单元包括通过互联模块互联的主运算模块以及多个从运算模块,所述运算指令为卷积运算指令时,

所述调用所述运算指令对所述目标图像中的目标物体进行轮廓检测和提取处理包括:

所述从运算模块实现卷积神经网络算法中的输入数据和卷积核的卷积运算,所述输入数据为所述目标图像,所述卷积神经网络算法与所述卷积运算指令对应;

所述互联模块实现所述主运算模块与所述从运算模块之前的数据传输,在神经网络全连接层正向运算开始之前,所述主运算模块通过互联模块将所述输入数据发送给每个从运算模块,在从运算模块计算结束后,互联模块逐级将各个从运算模块的输出标量拼成中间向量,并返回给主运算模块;

所述主运算模块将所有输入数据对应的中间向量拼接成中间结果,并对所述中间结果执行后续运算。

在一些可能的实施例中,所述对所述中间结果执行后续运算包括:

所述主运算模块将中间结果与偏置数据相加,然后执行激活操作。

在一些可能的实施例中,所述主运算模块包括第一运算单元,所述第一运算单元包括向量加法单元以及激活单元,

所述主运算模块将中间结果与偏置数据相加,然后执行激活操作包括:

所述向量加法单元实现卷积神经网络正向计算中的加偏置操作,将偏置数据与中间结果对位相加得到偏置结果;

所述激活单元对偏置结果执行激活函数操作。

在一些可能的实施例中,所述主运算模块包括第一存储单元、第一运算单元、第一数据依赖关系判定单元和第一存储单元;

所述第一存储单元缓存主运算模块在计算过程中用到的输入数据和输出数据,所述输出数据包括所述轮廓输出结果;

所述第一运算单元完成主运算模块的各种运算功能;

所述数据依赖关系判定单元保证对所述第一存储单元的数据的读写不存在一致性冲突,并负责从第一存储单元读取输入的神经元向量,并通过互联模块发送给从运算模块;以及

来自互连模块的中间结果向量被发送到第一运算单元。

在一些可能的实施例中,所述从运算模块包括第二运算单元,所述第二运算单元包括向量乘单元以及累加单元,

所述从运算模块实现卷积神经网络算法中的输入数据和卷积核的卷积运算包括:

所述向量乘单元实现卷积运算中的向量乘运算;

所述累加单元实现卷积运算中的累加运算。

在一些可能的实施例中,所述从运算单元包括第二运算单元、第二数据依赖关系判定单元、第二存储单元和第三存储单元;

所述第二运算单元完成从运算模块的各种算术逻辑运算;

所述第二数据依赖关系判定单元负责计算过程中对第二存储单元和第三存储单元的读写操作,并保证对第二存储单元和第三存储单元的读写不存在一致性冲突;

所述第二存储单元缓存输入数据以及该从运算模块计算得到的输出标量;以及

所述第三存储单元缓存该从运算模块在计算过程中需要的卷积核。

在一些可能的实施例中,所述第一数据依赖关系或所述第二数据依赖关系通过以下方式保证读写不存在一致性冲突:在相应存储单元中存储的数据/指令所对应的存储地址不重叠;或者,判断尚未执行的控制信号与正在执行过程中的控制信号的数据之间是否存在依赖关系,如果不存在,允许该条控制信号立即发射,否则需要等到该条控制信号所依赖的所有控制信号全部执行完成后该条控制信号才允许被发射;

其中,所述控制信号为所述控制器单元从寄存器单元中获取的运算指令,并将该运算指令译码为控制其他模块行为的控制信号,所述其他模块包括所述主运算模块和多个所述从运算模块。

在一些可能的实施例中,多个从运算模块利用相同的所述输入数据与各自的卷积核,并行地计算出各自的输出标量。

在一些可能的实施例中,所述主运算模块使用的激活函数active是非线性函数sigmoid,tanh,relu,softmax中的任一个或线性函数。

在一些可能的实施例中,所述互联模块构成所述主运算模块和所述多个从运算模块之间的连续或离散化数据的数据通路,互连模块为以下任一种结构:树状结构、环状结构、网格状结构、分级互连、总线结构。

在一些可能的实施例中,所述dma控制器从所述寄存器模块获取第一地址和第二地址,包括:

所述dma控制器接收dma指令,并根据所述dma指令从所述寄存器模块获取所述第一第一地址和所述第二地址。

在一些可能的实施例中,所述存储空间包括所述计算装置的外部的存储设备或者内部的存储模块。

在一些可能的实施例中,所述dma指令为载入/存储结构的指令,且所述dma指令为定长指令。

在一些可能的实施例中,所述第一地址和第二地址还标记所属的存储空间的类型,若所述存储空间是外部的存储设备,则所述第一地址和第二地址还标记所属的流;若所述存储空间为内部的存储模块,则所述第一地址和第二地址还标记所属内部的存储模块的子模块;

其中,所述流为多张图像交替传送时的分组。

在一些可能的实施例中,所述dma指令包括一个操作码和至少一个操作域,操作码用于指示该指令的功能;所述dma指令包括数据传送指令和地址跳转指令;

所述数据传送指令包括五个操作域,分别为第一操作域、第二操作域、第三操作域、第四操作域和第五操作域,所述第一操作域用于指示所述第一地址所属的存储空间,所述第二操作域用于指示所述第一地址,所述第三操作域用于指示所述第二地址所属的存储空间,所述第四操作域用于指示所述第二地址,所述第五操作域用于指示目标图像的每次传输的数据量;

所述地址跳转指令包括两个操作域,分别为第六操作域和第七操作域,所述第六操作域用于指示地址寄存器的编号,所述第七操作域用于指示跳转值寄存器的编号;

其中,所述地址寄存器用于所述第一地址,所述跳转值寄存器用于存储第一地址的跳转值。

在一些可能的实施例中,所述dma指令还包括用于指示对图像数据进行数据转换的方式的操作域。

在一些可能的实施例中,所述dma控制器接收dma指令后,所述方法还包括:

所述dma控制器将所述dma指令展开为系统dma指令;

所述dma控制器根据dma指令从所述寄存器模块获取第一地址和第二地址,包括:所述dma控制器根据所述系统dma指令从所述寄存器模块获取所述第一地址和第二地址。

第二方面,提供一种计算装置,所述计算装置包括用于执行上述第一方面的方法的功能单元。

第三方面,提供一种计算机可读存储介质,其存储用于电子数据交换的计算机程序,其中,所述计算机程序使得计算机执行第一方面提供的方法。

第四方面,提供一种计算机程序产品,所述计算机程序产品包括存储了计算机程序的非瞬时性计算机可读存储介质,所述计算机程序可操作来使计算机执行第一方面提供的方法。

第五方面,提供了一种芯片,所述芯片包括如上第二方面提供的计算装置。

第六方面,提供了一种芯片封装结构,所述芯片封装结构包括如上第五方面提供的芯片。

第七方面,提供了一种板卡,所述板卡包括如上第六方面提供的芯片封装结构。

第八方面,提供了一种电子设备,所述电子设备包括如上第七方面提供的板卡。

在一些实施例中,所述电子设备包括数据处理装置、机器人、电脑、打印机、扫描仪、平板电脑、智能终端、手机、行车记录仪、导航仪、传感器、摄像头、服务器、云端服务器、相机、摄像机、投影仪、手表、耳机、移动存储、可穿戴设备、交通工具、家用电器、和/或医疗设备。

在一些实施例中,所述交通工具包括飞机、轮船和/或车辆;所述家用电器包括电视、空调、微波炉、冰箱、电饭煲、加湿器、洗衣机、电灯、燃气灶、油烟机;所述医疗设备包括核磁共振仪、b超仪和/或心电图仪。

实施本申请实施例,具有如下有益效果:

可以看出,通过本申请实施例,所述dma控制器从所述寄存器模块中获取第一地址和第二地址;所述dma控制器从所述第一地址对应的存储空间中获取待处理的目标图像,所述目标图像包括待处理的目标物体;所述运算单元获取运算指令,以调用所述运算指令对所述目标图像中的目标物体进行轮廓检测和提取处理,从而获得轮廓输出结果;并将所述轮廓输出结果发送至所述dma控制器;其中,所述轮廓输出结果为所述目标物体的边缘轮廓,所述运算指令为预先存储用于轮廓检测和提取的指令;dma控制器将所述轮廓输出结果存储至所述第二地址对应的存储空间中;这样能够准确、快速地实现目标物体的轮廓提取,相比于现有技术利用通用处理器来实现,功耗更低,速度更快。

附图说明

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

图1a是本申请实施例提供的一种计算装置的结构示意图。

图1b是卷积神经网络算法的示意流程图。

图1c是根据本发明实施例的支持卷积神经网络正向运算的装置的指令示意图。

图1d示出了根据本发明实施例的用于执行卷积神经网络正向运算的装置的整体结构的示例框图。

图1e示意性示出了根据本发明实施例的用于执行卷积神经网络正向运算的装置中h树模块(互连模块一种实现方式)的结构。

图1f示出了根据本发明实施例的用于执行卷积神经网络正向运算的装置中主运算模块结构的示例框图。

图1g示出了根据本发明实施例的用于执行卷积神经网络正向运算的装置中从运算模块结构的示例框图。

图1h示出了根据本发明实施例的单层卷积神经网络正向运算过程的示例框图。

图2是本申请实施例提供的一种轮廓检测方法的流程示意图。

图3是本申请实施例提供的一种基于单线程的运算指令调用示意图。

图4是本申请实施例提供的一种基于多线程的运算指令调用示意图。

图5是本申请实施例提供的又一种计算装置的结构示意图。

图6为本申请实施例的提供的dma单元的具体结构示意图。

图7为本申请一具体实施例的具体结构示意图。

图8为本申请实施例的指令集的格式示意图。

图9为本申请实施例的dma控制模块执行dma指令的流水线时空图。

具体实施方式

下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。

本申请的说明书和权利要求书及所述附图中的术语“第一”、“第二”、“第三”和“第四”等是用于区别不同对象,而不是用于描述特定顺序。此外,术语“包括”和“具有”以及它们任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或单元的过程、方法、系统、产品或设备没有限定于已列出的步骤或单元,而是可选地还包括没有列出的步骤或单元,或可选地还包括对于这些过程、方法、产品或设备固有的其它步骤或单元。

在本文中提及“实施例”意味着,结合实施例描述的特定特征、结构或特性可以包含在本申请的至少一个实施例中。在说明书中的各个位置出现该短语并不一定均是指相同的实施例,也不是与其它实施例互斥的独立的或备选的实施例。本领域技术人员显式地和隐式地理解的是,本文所描述的实施例可以与其它实施例相结合。

首先介绍本申请使用的计算装置。参阅图1a,提供了一种计算装置,该计算装置包括:存储介质611(可选的)、寄存器单元612、互联模块613、运算单元614、控制器单元615和直接内存访问(directmemoryaccess,dma)单元616;

其中,运算单元614包括:加法计算器、乘法计算器、比较器、激活运算器中至少二种。

互联模块613,用于控制运算单元614中计算器的连接关系使得该至少二种计算器组成不同的计算拓扑结构。

指令存储单元(可以是寄存器单元,指令缓存,高速暂存存储器)612,用于存储该运算指令、数据块的在存储介质的地址、运算指令对应的计算拓扑结构。

该运算指令可以包括:操作域以及操作码,以卷积运算指令为例,如表1所示,其中,寄存器号0、寄存器号1、寄存器号2、寄存器号3、寄存器号4可以为操作域。其中,每个寄存器号0、寄存器号1、寄存器号2、寄存器号3、寄存器号4可以是一个或者多个寄存器。

表1

存储介质611可以为片外存储器,当然在实际应用中,也可以为片内存储器,用于存储数据块,该数据块具体可以为n维数据,n为大于或等于1的整数,例如,n=1时,为1维数据,即向量,如n=2时,为2维数据,即矩阵,如n=3或3以上时,为多维数据。

控制器单元615,用于从寄存器单元612内提取运算指令、该运算指令对应的操作域以及该运算指令对应的第一计算拓扑结构,将该运算指令译码成执行指令,该执行指令用于控制运算单元执行运算操作,将该操作域传输至dma单元616,将该计算拓扑结构传输至互联模块613。

dma单元616,用于从存储介质611中提取该操作域对应的数据块,并将该数据块传输至互联模块613。

互联模块613、用于接收第一计算拓扑结构和数据块。一个实施例里,互联模块613还根据第一计算拓扑结构对数据块重新摆放。

运算单元614,用于该执行指令调用运算单元614的计算器对该数据块执行运算操作得到运算结果,将该运算结果传输至dma单元616存储在存储介质611内。一个实施例里,运算单元614,用于按第一计算拓扑结构以及该执行指令调用计算器对重新摆放的数据块执行运算操作得到运算结果,将该运算结果传输至dma单元616存储在存储介质611内。

另一个实施例里,互联模块613、用于依据控制运算单元614中计算器的连接关系形成第一计算拓扑结构。

本申请提供的计算装置设置了互联模块613,此互联模块613能够根据运算指令的需要将运算单元614内的计算器组合连接得到与该运算指令对应的计算拓扑结构,进而在后续的运算单元614运算时无需对计算的中间数据执行存储或提取操作,此结构实现单一指令即能实现一次输入即能够进行多次计算器的运算得到计算结果的优点,提高了计算效率。

下面通过不同的运算指令来说明如图1a所示的计算装置的具体计算方法,这里的运算指令以卷积运算指令为例,该卷积运算指令可以应用在神经网络中,所以该卷积运算指令也可以称为卷积神经网络运算指令。对于卷积运算指令来说,其实际需要执行的公式可以为:s=s(∑wxi+b),其中,即将卷积核w乘以输入数据xi,进行求和,然后加上偏置b后做激活运算s(h),得到最终的输出结果s。依据该公式即可以得到该计算拓扑结构为,乘法运算器-加法运算器-(可选的)激活运算器。

如图1a所示的计算装置执行卷积运算指令的方法具体可以为:

控制器单元615从寄存器单元612内提取卷积运算指令、卷积运算指令对应的操作域以及卷积运算指令对应的第一计算拓扑结构(乘法运算器-加法运算器-加法运算器-激活运算器),控制器单元615将该操作域传输至dma单元616,将该第一计算拓扑结构传输至互联模块。

dma单元存储介质内提取该操作域对应的卷积核w和偏置b(当b为0时,不需要提取偏置b),将卷积核w和偏置b传输至运算单元614。

运算单元614的乘法运算器将卷积核w与输入数据xi执行乘法运算以后得到第一结果,将第一结果输入到加法运算器执行加法运算得到第二结果,将第二结果和偏置b执行加法运算得到第三结果,将第三结果输到激活运算器执行激活运算得到输出结果s,将输出结果s传输至dma单元616存储至存储介质611内。其中,每个步骤后都可以直接输出结果传输到dma单元616存储至存储介质611内,无需下面的步骤。另外,将第二结果和偏置b执行加法运算得到第三结果这一步骤可选,即当b为0时,不需要这个步骤。

另外,加法运算和乘法运算的顺序可以调换。

本申请提供的技术方案通过一个指令即卷积运算指令即实现了卷积的计算,在卷积计算的中间数据(例如第一结果、第二结果、第三结果)均无需存储或提取,减少了中间数据的存储以及提取操作,所以其具有减少对应的操作步骤,提高卷积的计算效果的优点。

应理解的,本申请允许使用的指令集可包括一个或多个运算指令,该运算指令包括但不限于compute指令(运算指令)、config指令、io指令、nop指令、jump指令和move指令等。所述compute指令包括但不限于卷积运算(conv)指令、池化pooling运算指令等等。其中,本申请具体可执行的计算指令包括:

卷积运算指令。在一种实施例中,卷积compute指令(即卷积运算指令)包括:

卷积神经网络sigmoid指令,根据该指令,装置分别从存储器(优选的高速暂存存储器或者标量寄存器堆)的指定地址取出指定大小的输入数据和卷积核,在卷积运算部件中做卷积操作,优选的,然后将输出结果做sigmoid激活;

卷积神经网络tanh指令,根据该指令,装置分别从存储器(优选的高速暂存存储器)的指定地址取出指定大小的输入数据和卷积核,在卷积运算部件中做卷积操作,优选的,然后将输出结果做tanh激活;

卷积神经网络relu指令,根据该指令,装置分别从存储器(优选的高速暂存存储器)的指定地址取出指定大小的输入数据和卷积核,在卷积运算部件中做卷积操作,优选的,然后将输出结果做relu激活;以及

卷积神经网络group指令,根据该指令,装置分别从存储器(优选的高速暂存存储器)的指定地址取出指定大小的输入数据和卷积核,划分group之后,在卷积运算部件中做卷积操作,优选的,然后将输出结果做激活。

卷积运算指令(纯卷积运算指令),可根据该指令,装置分别从存储器(优选的,为高速暂存存储器)的指定地址取出设定大小的输入数据和卷积核,在卷积运算部件中做卷积操作。上述设定大小即用户或厂家可以自行设定的大小,例如,在第一厂家的计算装置中,可以将设定大小设定为abit数据,在第二厂家的计算装置中,可以将设定大小设定为bbit数据,上述abite数据与bbit数据大小不同。

池化pooling指令。在一个实施例中,池化compute指令(即pooling运算指令,本申请也称为pooling指令)具体包括:

maxpooling正向运算指令,根据该指令,装置分别从存储器(优选的高速暂存存储器或者标量寄存器堆)的指定地址取出指定大小的输入数据,在pooling运算部件中做maxpooling正向运算操作,然后将输出结果写回到存储器(优选的高速暂存存储器或者标量寄存器堆)的指定存储地址。

maxpooling反向训练指令,根据该指令,装置分别从存储器(优选的高速暂存存储器或者标量寄存器堆)的指定地址取出指定大小的输入数据,在pooling运算部件中做maxpooling反向训练操作,然后将输出结果写回到存储器(优选的高速暂存存储器或者标量寄存器堆)的指定存储地址。

avgpooling正向运算指令,根据该指令,装置分别从存储器(优选的高速暂存存储器或者标量寄存器堆)的指定地址取出指定大小的输入数据,在pooling运算部件中做avgpooling正向运算操作,然后将输出结果写回到存储器(优选的高速暂存存储器或者标量寄存器堆)的指定存储地址。

avgpooling反向训练指令,根据该指令,装置分别从存储器(优选的高速暂存存储器或者标量寄存器堆)的指定地址取出指定大小的输入数据,在pooling运算部件中做avgpooling反向训练操作,然后将输出结果写回到存储器(优选的高速暂存存储器或者标量寄存器堆)的指定存储地址。

minpooling正向运算指令,根据该指令,装置分别从存储器(优选的高速暂存存储器或者标量寄存器堆)的指定地址取出指定大小的输入数据,在pooling运算部件中做minpooling正向运算操作,然后将输出结果写回到存储器(优选的高速暂存存储器或者标量寄存器堆)的指定存储地址。

minpooling反向训练指令,根据该指令,装置分别从存储器(优选的高速暂存存储器或者标量寄存器堆)的指定地址取出指定大小的输入数据,在pooling运算部件中做minpooling反向训练操作,然后将输出结果写回到存储器(优选的高速暂存存储器或者标量寄存器堆)的指定存储地址。

batchnormalization指令可用于完成batchnormalization的计算。

全连接指令,其可包括全连接层正向运算指令。

全连接层正向运算指令,根据该指令,装置从存储器的指定地址取出权值数据和偏执数据,在运算单元中进行全连接运算,并将结果写回高速暂存存储器的指定地址。

config指令在每层人工神经网络计算开始前配置当前层计算需要的各种常数。例如在池化层中,1/kernel_area可以使用config指令配置得到。又如在执行batchnormalization运算时,config指令在batchnormalization计算开始前配置当前层计算需要的各种常数等。

io指令实现从外部存储空间读入计算需要的输入数据以及在计算完成后将数据存回至外部空间。

nop指令负责清空当前装置内部所有控制信号缓存队列中的控制信号,保证nop指令之前的所有指令全部指令完毕。nop指令本身不包含任何操作;

jump指令负责控制将要从指令存储单元读取的下一条指令地址的跳转,用来实现控制流的跳转;

move指令负责将装置内部地址空间某一地址的数据搬运至装置内部地址空间的另一地址,该过程独立于运算单元,在执行过程中不占用运算单元的资源。

可选地,该计算装置能够执行的运算指令具体还可以包括:

矩阵乘向量指令(mmv),根据该指令,装置从高速暂存存储器的指定地址取出设定长度的矩阵数据和向量数据,在运算单元中进行矩阵乘向量的乘法运算,并将计算结果写回至高速暂存存储器的指定地址;值得说明的是,向量可以作为特殊形式的矩阵(只有一行元素的矩阵)存储于高速暂存存储器中。

向量乘矩阵指令(vmm),根据该指令,装置从高速暂存存储器的指定地址取出设定长度的向量数据和矩阵数据,在运算单元中进行向量乘矩阵的乘法运算,并将计算结果写回至高速暂存存储器的指定地址;值得说明的是,向量可以作为特殊形式的矩阵(只有一行元素的矩阵)存储于高速暂存存储器中。

矩阵乘标量指令(vms),根据该指令,装置从高速暂存存储器的指定地址取出设定长度的矩阵数据,从标量寄存器堆的指定地址中取出指定大小的矩阵数据,在运算单元中进行标量乘矩阵的乘法运算,并将计算结果写回至高速暂存存储器的指定地址,需要说明的是,标量寄存器堆不仅存储有矩阵的地址,还存储有标量数据。

张量运算指令(tens),根据该指令,装置从高速暂存存储器的两个指定地址取出分别取出设定长度的两块矩阵数据,在运算单元中对两矩阵数据进行张量运算,并将计算结果写回至高速暂存存储器的指定地址。

矩阵加法指令(ma),根据该指令,装置从高速暂存存储器的两个指定地址取出分别取出设定长度的两块矩阵数据,在运算单元中对两矩阵进行加法运算,并将计算结果写回至高速暂存存储器的指定地址。

矩阵减法指令(ms),根据该指令,装置从高速暂存存储器的两个指定地址取出分别取出设定长度的两块矩阵数据,在运算单元中对两矩阵进行减法运算,并将计算结果写回至高速暂存存储器的指定地址。

矩阵检索指令(mr),根据该指令,装置从高速暂存存储器的指定地址取出设定长度的向量数据,从高速暂存存储器的指定地址取出指定大小的矩阵数据,在运算单元中,该向量是索引向量,输出的向量中的第i个元素是以索引向量的第i个元素作为索引,在矩阵的第i列中找到的数,该输出向量写回至高速暂存存储器的指定地址。

矩阵加载指令(ml),根据该指令,装置从指定外部源地址载入设定长度的数据至高速暂存存储器的指定地址。

矩阵存储指令(ms),根据该指令,装置将高速暂存存储器的指定地址的设定长度的矩阵数据存至外部目的地址处。

矩阵搬运指令(mmove),根据该指令,装置将高速暂存存储器的指定地址的设定长度的矩阵数据存至高速暂存存储器的另一指定地址处。

向量内积指令(vp)。根据该指令,装置分别从存储器(优选的高速暂存存储器或者标量寄存器堆)的指定地址取出指定大小的向量数据,在向量运算单元中将两向量进行内积(张量)运算,并将结果写回。优选的,结果写会至存储器(优选的高速暂存存储器或者标量寄存器堆)得指定地址。

向量外积指令(tens)。根据该指令,装置分别从存储器(优选的高速暂存存储器或者标量寄存器堆)的指定地址取出指定大小的向量数据,在向量运算单元中将两向量进行外积运算,并将结果写回。优选的,并将结果写回至存储器(优选的高速暂存存储器或者标量寄存器堆)的指定地址;

向量四则运算,包括:向量加标量指令(vas),根据该指令,装置从存储器(优选的高速暂存存储器或者标量寄存器堆)的指定地址取出指定大小的向量数据,从存储器标量寄存器堆的指定地址取出标量数据,在标量运算单元中将向量的每一个元素加上该标量值,并将结果写回并将结果写回。优选的,并将结果写回至存储器(优选的高速暂存存储器或者标量寄存器堆)的指定地址;

标量减向量指令(ssv)。根据该指令,装置从存储器(优选的高速暂存存储器或者标量寄存器堆)标量寄存器堆的指定地址取出标量数据,从存储器(优选的高速暂存存储器或者标量寄存器堆)的指定地址取出向量数据,在向量运算单元中用该标量减去向量中的相应元素,并将结果写回并将结果写回。优选的,并将结果写回存储器(优选的高速暂存存储器或者标量寄存器堆)的指定地址;

向量除法指令(vd)。根据该指令,装置从存储器(优选的高速暂存存储器或者标量寄存器堆)的指定地址取出分别取出指定大小的向量数据,在向量运算单元中将两向量对位相除,并将结果写回并将结果写回。优选的,并将结果写回至存储器(优选的高速暂存存储器或者标量寄存器堆)高速暂存存储器的指定地址;

标量除向量指令(sdv)。根据该指令,装置从存储器(优选的高速暂存存储器或者标量寄存器堆)标量寄存器堆的指定位置取出标量数据,从存储器(优选的高速暂存存储器)的指定位置取出指定大小的向量数据,在向量运算单元中用标量分别除以向量中的相应元素,并将结果写回并将结果写回。优选的,并将结果写回至存储器(优选的高速暂存存储器或者标量寄存器堆)的指定位置;

向量逻辑指令,包括:

向量间与指令(vav)。根据该指令,装置从存储器(优选的高速暂存存储器或者标量寄存器堆)的指定地址取出分别取出指定大小的向量数据,在向量运算单元中将两向量对位相与,并将结果写回并将结果写回。优选的,并将结果写回至存储器(优选的高速暂存存储器或者标量寄存器堆)的指定地址;

向量内与指令(vand)。根据该指令,装置从存储器(优选的高速暂存存储器或者标量寄存器堆)的指定地址取出指定大小的向量数据,在向量运算单元中向量中每一位相与,并将结果写回并将结果写回。优选的,并将结果写回至存储器(优选的高速暂存存储器或者标量寄存器堆)标量寄存器堆的指定地址;

向量间或指令(vov)。根据该指令,装置从存储器(优选的,高速暂存存储器)的指定地址取出分别取出指定大小的向量数据,在向量运算单元中将两向量对位相或,并将结果写回并将结果写回。优选的,并将结果写回至存储器(优选的,高速暂存存储器或者标量寄存器堆)的指定地址;

向量内或指令(vor)。根据该指令,装置从存储器(优选的,高速暂存存储器或者标量寄存器堆)的指定地址取出指定大小的向量数据,在向量运算单元中向量中每一位相或,并将结果写回并将结果写回。优选的,并将结果写回至存储器(优选的,高速暂存存储器或者标量寄存器堆)标量寄存器堆的指定地址;

超越函数指令,根据该指令,装置从存储器(优选的,高速暂存存储器或者标量寄存器堆)的指定地址取出指定大小的向量数据,在运算单元中对向量数据做超越函数运算,并将结果写回并将结果写回。优选的,并将结果写回至存储器(优选的高速暂存存储器或者标量寄存器堆)存储单元的指定地址。优选的,将结果写回至存储器(优选的,高速暂存存储器或者标量寄存器堆)的指定地址。

向量比较运算指令,包括

大于等于运算指令(ge),根据该指令,装置可以直接从指令中或者通过访问指令提供的寄存器存储器(优选的,高速暂存存储器或者标量寄存器堆)的编号来获得指令的参数,包括向量的长度、两向量的起始地址以及输出向量的存储地址,然后读取两向量数据,在向量比较运算单元中对向量中所有位置上的元素进行比较,若某位置行前一向量的值大于或等于后一向量的值,则将比较结果向量在该位置上的值置为1,否则置为0。最后将比较结果写回至存储器(优选的,高速暂存存储器或者标量寄存器堆)的指定存储地址。

小于等于运算指令(le),根据该指令,装置可以直接从指令中或者通过访问指令提供的存储器(优选的,高速暂存存储器或者标量寄存器堆)的编号寄存器号来获得指令的参数,包括向量的长度、两向量的起始地址以及输出向量的存储地址,然后读取两向量数据,在向量比较运算单元中对向量中所有位置上的元素进行比较,若某位置行前一向量的值小于或等于后一向量的值,则将比较结果向量在该位置上的值置为1,否则置为0。最后将比较结果写回到存储器(优选的,高速暂存存储器或者标量寄存器堆)值的指定存储地址。

大于运算指令(gt),根据该指令,装置可以直接从指令中或者通过访问指令提供的存储器(优选的,高速暂存存储器或者标量寄存器堆)的编号寄存器号来获得指令的参数,包括向量的长度、两向量的起始地址以及输出向量的存储地址,然后读取两向量数据,在向量比较运算单元中对向量中所有位置上的元素进行比较,若某位置行前一向量的值大于后一向量的值,则将比较结果向量在该位置上的值置为1,否则置为0。最后将比较结果写回值到存储器(优选的高速暂存存储器或者标量寄存器堆)的指定存储地址。

小于运算指令(lt),根据该指令,装置可以直接从指令中或者通过访问指令提供的存储器(优选的,高速暂存存储器或者标量寄存器堆)的编号寄存器号来获得指令的参数,包括向量的长度、两向量的起始地址以及输出向量的存储地址,然后读取两向量数据,在向量比较运算单元中对向量中所有位置上的元素进行比较,若某位置行前一向量的值小于后一向量的值,则将比较结果向量在该位置上的值置为1,否则置为0。最后将比较结果写回到存储器(优选的,高速暂存存储器或者标量寄存器堆)值的指定存储地址。

等于运算指令(eq),根据该指令,装置可以直接从指令中或者通过访问指令提供的存储器(优选的高速暂存存储器或者标量寄存器堆)的编号寄存器号来获得指令的参数,包括向量的长度、两向量的起始地址以及输出向量的存储地址,然后读取两向量数据,在向量比较运算单元中对向量中所有位置上的元素进行比较,若某位置行前一向量的值等于后一向量的值,则将比较结果向量在该位置上的值置为1,否则置为0。最后将比较结果写回值到存储器(优选的,高速暂存存储器或者标量寄存器堆)的编号的指定存储地址。

不等于运算指令(ueq),根据该指令,装置可以直接从指令中或者通过访问指令提供的存储器(优选的,高速暂存存储器或者标量寄存器堆)的编号寄存器号来获得指令的参数,包括向量的长度、两向量的起始地址以及输出向量的存储地址,然后读取两向量数据,在向量比较运算单元中对向量中所有位置上的元素进行比较,若某位置行前一向量的值不等于后一向量的值,则将比较结果向量在该位置上的值置为1,否则置为0。最后将比较结果写回值到存储器(优选的,高速暂存存储器或者标量寄存器堆)的指定存储地址。

向量最大值指令(vmax)。根据该指令,装置从存储器(优选的,高速暂存存储器或者标量寄存器堆)高速暂存存储器的指定地址取出指定大小的向量数据,从中选出最大的元素作为结果,并将结果写回并将结果写回。优选的,并将结果写回至存储器(优选的,高速暂存存储器或者标量寄存器堆)标量寄存器堆的指定地址;

向量最小值指令(vmin)。根据该指令,装置从存储器(优选的,高速暂存存储器或者标量寄存器堆)高速暂存存储器的指定地址取出指定大小的向量数据,从中选出最小的元素作为结果,并将结果写回并将结果写回。优选的,并将结果写回至存储器(优选的,高速暂存存储器或者标量寄存器堆)标量寄存器堆的指定地址;

循环移位运算指令:根据该指令,装置可以直接从指令中或者通过访问指令提供的存储器(优选的,高速暂存存储器或者标量寄存器堆)的编寄存器号来获得指令的参数,然后在向量移位单元(可以是独立的向量移位单元也可以是使用运算单元)中进行循环移位移位,并将移位后的结果写回至存储器(优选的,高速暂存存储器或者标量寄存器堆)高速暂存存储器的指定存储地址。循环移位运算指令格式可包含四个操作域,向量的起始地址和长度,移位步长,以及输出向量的存储地址,

随机向量生成指令,根据该指令,装置从指令或从存储器(优选的,高速暂存存储器或者标量寄存器堆)寄存器堆中读取一个或多个随机分布参数,以及要生成的随机向量的大小和存储地址,然后在随机向量生成单元中生成服从随机分布的随机向量,并将生成的随机向量结果写回至指定的存储器(优选的,高速暂存存储器或者标量寄存器堆)的存储地址。

随机向量生成指令具体可以为:

均匀分布指令(unif),根据该指令,装置从指令或从存储器(优选的,高速暂存存储器或者标量寄存器堆)寄存器堆中读取均匀分布的上界参数和下界参数,以及要生成的随机向量的大小和存储地址,然后在随机向量生成单元中生成服从该均匀分布的随机向量,并将生成的随机向量结果写回至指定的存储器(优选的,高速暂存存储器或者标量寄存器堆)的存储地址。

高斯分布指令(gaus),根据该指令,装置从指令或从寄存器存储器(优选的,高速暂存存储器或者标量寄存器堆)堆中读取高斯分布的均值参数和方差参数,以及要生成的随机向量的大小和存储地址,然后在随机向量生成单元中生成服从该高斯分布的随机向量,并将生成的随机向量结果写回至指定的存储器(优选的,高速暂存存储器或者标量寄存器堆)的存储地址。

在利用如图1a所示的计算装置具体执行卷积神经网络算法(即卷积运算指令)时,请参见图1b示出卷积神经网络算法的示意流程图。如图1b所示,卷积神经网络包括输出数据及激活函数,输入数据层,和卷积核。

首先,其每一次的计算过程,首先需要依据卷积窗口,选取出输入数据层中对应的输入数据xi,然后将输入数据和卷积核进行加和运算。其输出数据的计算过程为s=s(∑wxi+b),即将卷积核w乘以输入数据xi,进行求和,然后加上偏置b后做激活运算s(h),得到最终的输出数据s。其中,卷积核和输入数据的乘法是向量乘法。

卷积窗口依据卷积核在x轴上的大小kx和在y轴上的大小ky,在x轴尺寸为w和y轴尺寸为h的输入数据上,从最开始选取出和卷积核同样大小的输入数据,然后依据卷积窗口的平移位矢sx和sy,以此先作水平平移,然后再作垂直平移,将全部输入数据做遍历。

图1c是根据本发明实施例的指令集的格式示意图,如图1c所示,卷积神经网络运算指令包括至少1个操作码和至少1个操作域,其中,操作码用于指示该卷积神经网络运算指令的功能,卷积神经网络运算单元通过识别该操作码可进行卷积神经网络运算,操作域用于指示该卷积神经网络运算指令的数据信息,其中,数据信息可以是立即数或寄存器号(可选地,可为寄存器堆),包括输入数据的起始地址和数据长度,卷积核的起始地址和数据长度,以及激活函数的类型。

指令集包含有不同功能的卷积神经网络compute指令以及config指令、io指令、nop指令、jump指令和move指令。关于这些运算指令可参见前述实施例中的相关介绍,这里不再赘述。

可选地,该指令集还可包括卷积激活conv_activate指令。

卷积激活conv_activate指指令,根据该指令,装置分别从高速暂存存储器(优选的)的指定地址取出设定大小的输入数据和卷积核,在卷积运算部件中做卷积操作,然后将输出结果做激活函数运算;上述设定大小可以由厂家或用户自行定义。

在一个实施例中,conv_activate指令包括:卷积运算指令和激活指令。其中,激活指令用于进行激活函数运算,卷积运算指令用于进行卷积运算,具体可参见前述实施例中的相关介绍,这里不再赘述。

图1d是本发明实施例提供的卷积神经网络正向运算装置的结构示意图。如图3所示,该装置包括指令存储单元1、控制器单元2、dma单元3、互连模块4、主运算模块5和多个从运算模块6。指令存储单元1、控制器单元2、dma单元3、互连模块4、主运算模块5和从运算模块6均可以通过硬件电路(例如包括但不限于fpga、cgra、专用集成电路asic、模拟电路和忆阻器等)实现。

指令存储单元1通过dma单元3读入指令并存储读入的指令。

控制器单元2从指令存储单元1中读取指令,将指令译成控制其他模块行为的控制信号并发送给其他模块如dma单元3、主运算模块5和从运算模块6等。

dma单元3能够访问外部地址空间,直接向装置内部的各个存储单元读写数据,完成数据的加载和存储。

互连模块4用于连接主运算模块和从运算模块,可以实现成不同的互连拓扑(如树状结构、环状结构、网格状结构、分级互连,总线结构等)。

图1e示意性示出了互连模块4的一种实施方式:h树模块。互连模块4构成主运算模块5和多个从运算模块6之间的数据通路,是由多个节点构成的二叉树通路,每个节点将上游的数据同样地发给下游的两个节点,将下游的两个节点返回的数据进行合并,并返回给上游的节点。例如,在卷积神经网络开始计算阶段,主运算模块5内的神经元数据通过互连模块4发送给各个从运算模块6;当从运算模块6的计算过程完成后,当从运算模块的计算过程完成后,每个从运算模块输出的神经元的值会在互连模块中逐级拼成一个完整的由神经元组成的向量。举例说明,假设装置中共有n个从运算模块,则输入数据xi被发送到n个从运算模块,每个从运算模块将输入数据xi与该从运算模块相应的卷积核做卷积运算,得到一标量数据,各从运算模块的标量数据被互连模块4合并成一个含有n个元素的中间向量。假设卷积窗口总共遍历得到a*b个(x方向为a个,y方向为b个,x、y为三维正交坐标系的坐标轴)输入数据xi,则对a*b个xi执行上述卷积操作,得到的所有向量在主运算模块中合并得到a*b*n的三维中间结果。

图1f示出了根据本发明实施例的用于执行卷积神经网络正向运算的装置中主运算模块5的结构的示例框图。如图1f所示,主运算模块5包括第一运算单元51、第一数据依赖关系判定单元52和第一存储单元53。

其中,第一运算单元51包括向量加法单元511以及激活单元512。第一运算单元51接收来自控制器单元的控制信号,完成主运算模块5的各种运算功能,向量加法单元511用于实现卷积神经网络正向计算中的加偏置操作,该部件将偏置数据与所述中间结果对位相加得到偏置结果,激活单元512对偏置结果执行激活函数操作。所述偏置数据可以是从外部地址空间读入的,也可以是存储在本地的。

第一数据依赖关系判定单元52是第一运算单元51读写第一存储单元53的端口,保证第一存储单元53中数据的读写一致性。同时,第一数据依赖关系判定单元52也负责将从第一存储单元53读取的数据通过互连模块4发送给从运算模块,而从运算模块6的输出数据通过互连模块4直接发送给第一运算单元51。控制器单元2输出的指令发送给第一运算单元51和第一数据依赖关系判定单元52,来控制其行为。

第一存储单元53用于缓存主运算模块5在计算过程中用到的输入数据和输出数据。

图1g示出了根据本发明实施例的用于执行卷积神经网络正向运算的装置中从运算模块6的结构的示例框图。如图1e所示,每个从运算模块6包括第二运算单元61、数据依赖关系判定单元62、第二存储单元63和第三存储单元64。

第二运算单元61接收控制器单元2发出的控制信号并进行卷积运算。第二运算单元包括向量乘单元611和累加单元612,分别负责卷积运算中的向量乘运算和累加运算。

第二数据依赖关系判定单元62负责计算过程中对第二存储单元63的读写操作。第二数据依赖关系判定单元62执行读写操作之前会首先保证指令之间所用的数据不存在读写一致性冲突。例如,所有发往数据依赖关系单元62的控制信号都会被存入数据依赖关系单元62内部的指令队列里,在该队列中,读指令的读取数据的范围如果与队列位置靠前的写指令写数据的范围发生冲突,则该指令必须等到所依赖的写指令被执行后才能够执行。

第二存储单元63缓存该从运算模块6的输入数据和输出标量数据。

第三存储单元64缓存该从运算模块6在计算过程中需要的卷积核数据。

图1h是本发明实施例提供的卷积神经网络运算装置执行卷积神经网络的流程图,如图1h所示,执行卷积神经网络指令的过程包括:

在步骤s1,在指令存储单元1的首地址处预先存入一条io指令。

在步骤s2,运算开始,控制器单元2从指令存储单元1的首地址读取该条io指令,根据译出的控制信号,dma单元3从外部地址空间读取相应的所有卷积神经网络运算指令,并将其缓存在指令存储单元1中。

在步骤s3,控制器单元2接着从指令存储单元读入下一条io指令,根据译出的控制信号,dma单元3从外部地址空间读取主运算模块5需要的所有数据(例如,包括输入数据、用于作快速的激活函数运算的插值表、用于配置运算器件参数的常数表、偏置数据等)至主运算模块5的第一存储单元53。

在步骤s4,控制器单元2接着从指令存储单元读入下一条io指令,根据译出的控制信号,dma单元3从外部地址空间读取从运算模块6需要的卷积核数据。

在步骤s5,控制器单元2接着从指令存储单元读入下一条config指令,根据译出的控制信号,装置配置该层神经网络计算需要的各种常数。例如,第一运算单元51、第二运算单元61根据控制信号里的参数配置单元内部寄存器的值,所述参数包括例如激活函数需要的数据。

在步骤s6,控制器单元2接着从指令存储单元读入下一条compute指令,根据译出的控制信号,主运算模块5首先通过互连模块4将卷积窗口内的输入数据发给各从运算模块6,保存至从运算模块6的第二存储单元63,之后,再依据指令移动卷积窗口。

在步骤s7,根据compute指令译出的控制信号,从运算模块6的运算单元61从第三存储单元64读取卷积核,从第二存储单元63读取输入数据,完成输入数据和卷积核的卷积运算,将中间结果通过互连模块4返回。

在步骤s8,在互连模块4中,各从运算模块6返回的中间结果被逐级拼成完整的中间向量。

在步骤s9,主运算模块5得到互连模块4返回的中间向量,卷积窗口遍历所有输入数据,主运算模块将所有返回向量拼接成中间结果,根据compute指令译出的控制信号,从第一存储单元53读取偏置数据,与中间结果通过向量加单元511相加得到偏置结果,然后激活单元512对偏置结果做激活,并将最后的输出数据写回至第一存储单元53中。

在步骤s10,控制器单元2接着从指令存储单元读入下一条io指令,根据译出的控制信号,dma单元3将第一存储单元53中的输出数据存至外部地址空间指定地址,运算结束。

对于多层神经网络卷积层,其实现过程与单层神经网络卷积层类似,当上一层卷积神经网络执行完毕后,下一层的运算指令会将主运算单元中存储的上一层的输出数据地址作为本层的输入数据地址。同样地,指令中的卷积核和偏置数据地址也会变更至本层对应的地址。

通过采用用于执行卷积神经网络正向运算的装置和指令集,解决了cpu和gpu运算性能不足,前端译码开销大的问题。有效提高了对多层卷积神经网络正向运算的支持。

通过采用针对多层卷积神经网络正向运算的专用片上缓存,充分挖掘了输入神经元和卷积核数据的重用性,避免了反复向内存读取这些数据,降低了内存访问带宽,避免了内存带宽成为多层卷积神经网络正向运算性能瓶颈的问题。

基于前述实施例,参见图2,图2是本发明实施例提供的一种轮廓检测方法的流程示意图。如图2所示的方法可包括如下实施步骤:

步骤s102、计算装置获取待处理的目标图像,所述目标图像包括待处理的目标物体。

所述目标图像中携带/包含有待处理的目标物体,所述目标物体包括但不限于商品、人物、动物等等,例如牛奶、水杯。所述目标物体的数量以及所述目标图像的输入格式本申请并不做限定,例如所述目标物体可以是一个或者多个,所述目标图像可以是包含一个或多个关键特征的图像,也可是一段或多段包含关键特征的视频等。所述关键特征为所述目标物体的特征,例如物体形状等。

步骤s104、所述计算装置将所述目标图像作为运算单元的输入,以调用运算指令对所述目标图像中的目标对象进行轮廓检测和提取处理,从而获得轮廓输出结果;

其中,所述轮廓输出结果为所述目标物体的边缘轮廓,所述运算指令为预先存储用于轮廓检测和提取的指令。

所述运算指令包括但不限于卷积运算指令、池化pooling指令、归一化指令以及非线性激活指令等等,具体可参见前述图1a-图1h所述实施例中的相关介绍。可选地,在所述计算装置(如运算单元)中如何调用相关运算指令以对所述目标图像中的目标物体进行轮廓检测和提取,也可参见前述图1a-图1h所述实施例中相关指令调用的具体阐述,这里不再赘述。

下面介绍本申请涉及的一些具体实施例。

步骤s102中,所述目标图像的输入格式可以是图像格式,如bmp、gif、jpeg等格式;或者也可以是由图像的像素点转换而来的多维矩阵数据。

在可选实施例中,步骤s102的具体实施方式可为:获取用户输入的待处理的原始图像;对所述原始图像进行预处理,从而获得待处理的所述目标图像,其中,所述预处理包括以下处理中的至少一项:平移、伸缩变换、非线性转换、归一化、格式转换、数据去重、数据异常处理以及数据缺失填补。

具体实现中,计算装置获取用户输入的待处理的原始图像。关于所述原始图像可参见前述关于所述目标图像的相关说明,这里不再赘述。进一步地,所述计算装置可调用相关的运算指令对所述原始图像进行诸如归一化、格式转换、色彩转换等等预处理,从而得到待处理的所述目标图像。所述预处理包括但不限于格式转换处理(如归一化处理等)、色彩转换(如变为灰度图像)、图像修复以及图像修改等等操作处理。相应地,这里的所述运算指令可为与所述预处理相关的指令,例如当所述预处理为归一化处理时,则对应的运算指令为可归一化指令。

所述预处理包括但不限于以下处理中的任一项或多项的组合:数据格式转换(如归一化处理、整型数据转换等)、数据去重、数据异常处理、数据缺失填补、色彩转换、图像修复、图像修改等等。以数据格式转换为例,具体可以是连续数据与离散数据的互换、幂次转换,具体将神经网络输入数据(目标图像的多维矩阵)中非幂次权值数据转换为幂次权值数据、浮点数据统计,具体为统计获得人工神经网络正向运算中存储各个类型数据所需的指数位偏移及指数位所需的比特位数、浮点数据转换,具体为短位数浮点数据类型与长位数浮点数据类型等等,本申请不做限定。

作为步骤s104的一种具体实施方式可为:计算装置可将所述目标图像作为运算单元的输入,以调用第一运算指令对所述目标图像进行特征提取,从而获得特征图像;进一步地,可从所述特征图像中提取出所述目标物体的边缘轮廓,以作为轮廓输出结果;其中,所述第一运算指令为预先设置用于特征提取的指令。

首先,介绍特征提取涉及的一些具体实施例。

具体的,计算装置在运算单元中可调用相关的第一运算指令,以对所述目标图像进行特征提取,从而获得特征图像。应理解的,当所述目标图像的表达形式为多维矩阵时,对所述目标图像进行特征提取,属于数据降维,降低数据处理复杂度,减轻计算装置的计算负荷,提高运算效率。

在可选实施例中,所述第一运算指令可为用于特征提取的指令,具体可参见前述实施例中的相关介绍,这里不再赘述。

在可选实施例中,所述第一运算指令可包括以下指令中的任一项或多项的组合:卷积运算指令、归一化指令、非线性激活指令以及池化指令。需要说明的是,当所述第一运算指令的数量为多个,也可称为运算指令集时,所述运算指令集中的各个第一运算指令被调用的次序、数量以及调用线程可为用户侧或计算装置(如终端)侧自定义设置的,本申请并不做限定。

如图3示例性给出一种基于单线程调用运算指令进行特征提取的示意图。具体的,控制器单元可以从寄存器单元中提取卷积运算指令发送至运算单元对所述目标图像进行处理,从而获得第一中间图像。然后,控制器单元可以从寄存器单元中提取归一化指令发送至运算单元对所述第一中间图像进行处理,从而获得第二中间图像。然后,控制器单元可以从寄存器单元中提取非线性激活指令发送至运算单元对所述第二中间图像进行处理,从而获得第三中间图像。然后,控制器单元可以从寄存器单元中提取池化指令发送至运算单元对所述第三中间图像进行处理,从而获得特征提取后的特征图像。

可选地,图3所示的各个运算指令在具体被调用执行时,其执行顺序可以变化的,例如先调用归一化指令在调用卷积运算指令等,本申请不做限定。

在可选实施例中,本申请支持多线程(即多条流水线)的特征提取处理。也即是本申请中所述特征提取的实现操作可以是分线程或线程合并的方式来实现的。所述分线程的实现方式包括但不限于数据的拷贝、数据的分组等方式,所述线程合并的实现方式包括但不限于数据的相加减、数据的相乘、数据的组合摆放等方式。

如图4示出基于多线程调用运算指令进行特征提取的示意图。具体的,计算装置可同时进行两个线程的数据操作,且每个线程中所需使用的运算指令可以相同,也可不同,且各运算指令的调用顺序及调用数量也不做限定。如图4,其中一个线程同时会顺序执行两次图3中的运算指令;另一线程会顺序执行一次图3的运算指令。

需要说明的是,本申请涉及多线程的特征提取时,其特征提取后的特征图像(即特征图像数据)可由各线程处理后的结果数据汇聚而成。即所述特征提取后的图像数据可包括但不限于多个相同维度的矩阵数据,或者多个不同维度的矩阵数据,不做限定。

在可选实施例中,所述计算装置也可调用其他特征提取算法相关指令,以对所述目标图像进行特征提取,从而获得特征图像。所述特征提取算法包括但不限于hog(方向梯度直方图),sift特征提取算法等等,且这些特征提取算法也是由相应地的一个或多个运算指令构成实现的,本申请不做限定。

其次,介绍轮廓提取涉及的一些具体实施例。

具体的,特征提取后所得的特征图像(即特征图像数据)可表示为三维矩阵数据,c*h*w。其中,c表示所述目标图像中包含的所述目标物体的数量。h和w分别表示所述目标图像的长度和宽度,c为正整数。

相应地,在一种实施方式中,所述计算装置可对所述目标图像中每个所述目标物体对应的像素点进行标记,例如将同属于一个目标物体的像素数据标记为1,将所述目标图像的其他像素点数据标记为0。进一步地,所述计算装置可从标记的所述目标物体中提取出该目标物体的边缘轮廓,以作为轮廓输出结果进行输出,以供用户查看。

在又一种实施方式中,所述计算装置可对所述目标图像中所述目标物体的边缘轮廓进行标识,以作为所述目标物体的边缘输出结果并将其输出,以供用户查看。

下面结合前述图1a-1h所述实施例,简要介绍本申请实施例。

步骤s102中,所述计算装置可通过dma单元获取用户输入的待处理的目标图像。上述dma单元包括dma控制器和寄存器模块,该dma控制器从上述寄存器模块中获取第一地址和第二地址,并从该第一地址对应的存储空间中获取上述目标图像,上述计算装置中的运算单元根据该目标图像得到的轮廓输出结果后,上述dma控制器将上述轮廓输出结果存储至上述第二地址对应的存储空间。

其中,上述第一地址对应的存储空间属于外部存储设备或者上述计算装置的内部存储设备,上述第二地址对应的存储空间属于外部存储设备或者上述计算装置的内部存储设备,且上述第一地址对应的存储空间和上述第二地址对应的存储空间可以属于相同的存储空间或者不同的存储空间。

在一些可能的实施例中,上述dma控制器接收dma指令,并根据该dma指令从上述内存器模块中获取上述第一地址和第二地址。

进一步地,上述dma控制器接收上述dma指令后,将该dma指令展开为系统dma指令,然后根据系统dma指令从上述寄存器模块中获取上述第一地址和第二地址。

其中,上述dma指令为载入/存储结构的指令,且该dma指令为定长指令。

进一步地,上述第一地址和第二地址还标记所属的存储空间的类型,若该存储空间为外部存储设备,则上述第一地址和第二地址还标记所属的流;若上述存储空间为内部存储模块,则上述第一地址和第二地址还标记所属内部存储模块的子模块;

其中,上述流为多张目标图像交替传送时的分组。

进一步地,上述dma指令包括一个操作码和至少一个操作域,该操作码用于指示该指令的功能,上述dma指令包括数据传送指令和地址跳转指令;

上述数据传送指令包括五个操作域,分别为第一操作域、第二操作域、第三操作域、第四操作域和第五操作域,上述第一操作域用于指示上述第一地址所属的存储空间,上述第二操作域用于指示上述第一地址,上述第三操作域用于指示上述第二地址所属的存储空间,上述第四操作域用于指示上述第二地址,上述第五操作域用于指示目标图像的每次传输的数据量;

上述地址跳转指令包括两个操作域,分别为第六操作域和第七操作域,该第六操作域用于指示地址寄存器的编号,上述第七操作域用于指示跳转值寄存器的编号;

其中,上述地址寄存器用于存储上述第一地址,所述跳转值寄存器用于存储该第一地址的跳转值。

需要说明的是,上述dma控制器从上述第一地址对应的存储空间中读取上述目标图像是分多次读取的,每次读取的大小为上述第五操作域指示目标图像的每次传输的数据量。

在一些可能的实施例中,上述dma指令还包括用于指示对上述目标图像进行数据转换的方式的操作域。上述dma控制器获取上述目标图像后,该操作域对应的数据转换方式对该目标图像进行转换。

可选实施例中,所述计算装置可为图1a或图1d所示的计算装置。具体的,所述计算装置可通过dma单元将各种运算指令存储至寄存器单元或指令存储单元中;进一步地,所述计算装置可通过dma单元对各种运算指令进行读写和存储操作。控制器单元用于控制从寄存器单元(也可是指令存储单元等)中读取各种运算指令,并将该运算指令译码为可执行的运算指令。可选地,还可将该运算指令发送给运算单元,以在运算单元中执行该运算指令,具体可根据该运算指令对应的计算拓扑结构依次调用相关的运算器进行数据处理,下面将以卷积运算指令为例进行详细阐述。互联模块(或互连模块)用于接收输入数据(这里即目标图像)以及接收计算拓扑结构,该计算拓扑结构为运算指令所对应的拓扑结构,例如所述运算指令为卷积运算指令时,其对应计算拓扑结构可为:乘法运算器-加法运算器-(可选的)激活运算器。其中,每种运算器均用于执行对应的运算功能操作,例如乘法运算器用于执行乘法运算操作等等,本申请不做赘述。

关于步骤s102的其他阐述可参见前述实施例所述,这里不再赘述。

相应地,步骤s104中的具体实施方式简要阐述如下。

具体实现中,所述计算装置通过控制器单元以及dma单元从所述寄存器单元(也可为指令存储单元)中提取相应地的运算指令,所述运算指令用于对所述目标图像进行处理(具体可为轮廓检测和提取处理),关于所述运算指令可参见前述实施例中的相关介绍,例如可为用于分辨率优化的运算指令,所述运算指令的数量本申请不做限定。

进一步地,在所述控制器单元提取到所述运算指令后,可将所述运算指令传输到所述运算单元中,以在所述运算单元中根据所述运算指令对应的计算拓扑结构顺序对所述目标图像进行轮廓提取处理,从而获得轮廓输出结果。

下面以所述运算指令为卷积运算指令为例,详细阐述步骤s104的具体实施过程。

在一种具体实施方式中,参见图1a所示的所述计算装置。所述计算装置通过dma单元(获取存储介质或片外存储器中用户输入的待处理的目标图像。可选地,所述计算装置可通过运算单元调用相关运算指令对所述目标图像进行预设格式的转换处理,从而获得所述计算装置能识别处理的图像数据,如由i个xi像素数据组成的矩阵或向量等等。所述预设格式为用户侧或计算装置侧自定义设置的。进一步地,所述计算装置通过dma单元以及控制器单元从所述寄存器单元中提取卷积运算指令,并将其发送给运算单元,以在运算单元执行,也即是需执行的公式为s=s(∑wxi+b)。其中,w为卷积核,xi为输入数据。相应地,所述运算单元对所述输入数据xi(即用户输入的待处理的目标图像)执行所述卷积运算指令。具体的,在所述运算单元中调用乘法器将卷积核w乘以输入数据xi,然后调用加法运算器进行求和,然后加上偏置b后调用激活运算器做激活运算s(h),得到最终的输出结果s。该输出结果即为所述轮廓输出结果或中间数据。当其为中间数据时,可根据上述卷积运算指令类似的计算原理,进一步调用其他运算指令对中间数据进行处理,依次类推,直至获得所述轮廓输出结果。

在又一种具体实施方式中,参见图1d所示的计算装置。类似前述s104的一种具体实施方式的具体实施过程,利用1d所示的计算装置。所述运算单元具体可包括主运算模块、从运算模块以及连接该主运算模块和从运算模块的互连模块。该互连模块可用于实现主、从运算模块之间的数据传输、接收运算指令对应的计算拓扑结构等等。所述计算装置可控制在所述主运算模块中实现所述卷积运算中的加偏置b和激活s(h)操作,控制在所述各个从运算模块中实现向量乘法wxi以及累加∑操作。具体的,所述计算装置可通过控制器单元将输入数据xi(即待处理的目标图像)传输至各个从运算模块中,以控制在各个从运算模块中先调用乘法运算器将卷积核w乘以输入数据xi,然后调用加法运算器进行求和,获得输出标量。然后通过互联模块依次逐级将各个从运算模块的输出标量进行累加、拼接为中间向量,并传输给主运算模块中。进一步,所述在所述主运算模块中调用加法运算器将将所有输入数据对应的中间向量拼接成中间结果,并将中间结果加上偏置b后,再调用激活运算器做激活运算s(h),得到最终的输出结果s。

关于如何在所述计算装置中调用相关运算指令对所述目标图像进行处理,可具体参见前述图1a-图1h中的相关介绍。也即是前述图1a-图1h所述实施例也可对应适用于本申请中图2所述的轮廓检测方法实施例中,这里不再赘述。应理解的,上述仅以卷积运算指令为例阐述卷积运算指令的调用和数据处理,其并不构成限定;相应地,当运算指令为不同于所述卷积运算指令的其他指令时,也可采用类似于卷积运算指令的相关处理方式,实现本申请方法实施例的步骤。

通过实施本发明实施例,能够智能、快速地对目标物体的轮廓检测和提取,相比于现有技术利用通用处理器来实现,功耗更低,速度更快。

参见图5,是本发明实施例提供的一种计算装置(具体可为终端设备)的结构示意图。如图5所示的计算装置包括dma单元616和运算单元614;其中,,该dma单元616包括dma控制器和寄存器模块;

所述述dma控制器,用于从所述寄存器模块中获取第一地址和第二地址;并从所述第一地址对应的存储空间中获取待处理的目标图像,所述目标图像包括待处理的目标物体;

所述运算单元614用于获取运算指令,以调用所述运算指令对所述目标图像中的目标物体进行轮廓检测和提取处理,从而获得轮廓输出结果;并将所述轮廓输出结果发送至所述dma单元;其中,所述轮廓输出结果为所述目标物体的边缘轮廓,所述运算指令为预先存储用于轮廓检测和提取的指令;

所述dma控制器,还用于将所述轮廓输出结果存储至所述第二地址对应的存储空间中。

可选地,所述计算装置还可包括:存储介质611、寄存器单元612、互联模块613和控制器单元615。关于这些功能单元可参见前述图1a-图1h所述实施例中的相关阐述。

其中,上述存储介质611可为外部存储设备,或者内部存储设备。上述第一地址对应的存储空间和上述第二地址对应的存储空间均可为外部存储设备,或者内部存储设备。

进一步地,上述第一地址对应的存储空间和上述第二地址对应的存储空间中,一个属于外部存储设备,一个属于内部存储设备;或者上述第一地址对应的存储空间和上述第二地址对应的存储空间属于同一存储设备。

在可选实施例中,所述计算装置还包括寄存器单元612以及控制器单元615,

所述控制器单元用于从所述寄存器单元中提取第一运算指令,并发送给所述运算单元;

所述运算单元用于调用第一运算指令对所述目标图像进行特征提取,从而获得特征图像;

所述运算单元还用于从所述特征图像中提取出所述目标物体的边缘轮廓,以作为轮廓输出结果。

在可选实施例中,所述运算单元用于在所述特征图像中对所述目标物体进行标识,从而提取所述目标物体的边缘轮廓,以作为轮廓输出结果;或者,

所述运算单元还用于在所述特征图像中对所述目标物体的边缘进行标识和提取,从而获得轮廓输出结果。

在可选实施例中,所述运算单元用于基于至少一个线程的运算指令集,对所述目标图像进行特征提取,从而获得特征图像;其中,所述运算指令集包括至少一个所述第一运算指令,且所述运算指令集中各个第一运算指令的调用顺序是用户侧或终端侧自定义设置的。

在可选实施例中,所述dma控制器还用于获取用户输入的待处理的原始图像;

所述运算单元用于对所述原始图像进行预处理,从而获得待处理的所述目标图像,其中,所述预处理包括以下处理中的任一项或多项的组合:平移、伸缩变换、非线性转换、归一化、格式转换、数据去重、数据异常处理以及数据缺失填补。

在可选实施例中,所述运算单元包括通过互联模块互联的主运算模块以及多个从运算模块,所述运算指令为卷积运算指令时,

所述从运算模块用于实现卷积神经网络算法中的输入数据和卷积核的卷积运算,所述输入数据为所述目标图像,所述卷积神经网络算法与所述卷积运算指令对应;

所述互联模块用于实现所述主运算模块与所述从运算模块之前的数据传输,在神经网络全连接层正向运算开始之前,所述主运算模块通过互联模块将所述输入数据发送给每个从运算模块,在从运算模块计算结束后,互联模块逐级将各个从运算模块的输出标量拼成中间向量,并返回给主运算模块;

所述主运算模块用于将所有输入数据对应的中间向量拼接成中间结果,并对所述中间结果执行后续运算。

在可选实施例中,所述主运算模块用于将中间结果与偏置数据相加,然后执行激活操作。

在可选实施例中,所述主运算模块包括第一运算单元,所述第一运算单元包括向量加法单元以及激活单元,

所述向量加法单元用于实现卷积神经网络正向计算中的加偏置操作,将偏置数据与中间结果对位相加得到偏置结果;

所述激活单元用于对偏置结果执行激活函数操作。

在可选实施例中,所述主运算模块包括第一存储单元、第一运算单元、第一数据依赖关系判定单元和第一存储单元;

所述第一存储单元用于缓存主运算模块在计算过程中用到的输入数据和输出数据,所述输出数据包括所述轮廓输出结果;

所述第一运算单元用于完成主运算模块的各种运算功能;

所述数据依赖关系判定单元用于保证对所述第一存储单元的数据的读写不存在一致性冲突,并负责从第一存储单元读取输入的神经元向量,并通过互联模块发送给从运算模块;以及来自互连模块的中间结果向量被发送到第一运算单元。

在可选实施例中,所述从运算模块包括第二运算单元,所述第二运算单元包括向量乘单元以及累加单元,

所述从运算模块用于实现卷积神经网络算法中的输入数据和卷积核的卷积运算包括:

所述向量乘单元用于实现卷积运算中的向量乘运算;

所述累加单元用于实现卷积运算中的累加运算。

在可选实施例中,所述从运算单元包括第二运算单元、第二数据依赖关系判定单元、第二存储单元和第三存储单元;

所述第二运算单元用于完成从运算模块的各种算术逻辑运算;

所述第二数据依赖关系判定单元用于负责计算过程中对第二存储单元和第三存储单元的读写操作,并保证对第二存储单元和第三存储单元的读写不存在一致性冲突;

所述第二存储单元用于缓存输入数据以及该从运算模块计算得到的输出标量;以及

所述第三存储单元用于缓存该从运算模块在计算过程中需要的卷积核。

在可选实施例中,所述第一数据依赖关系或所述第二数据依赖关系通过以下方式保证读写不存在一致性冲突:在相应存储单元中存储的数据/指令所对应的存储地址不重叠;或者,判断尚未执行的控制信号与正在执行过程中的控制信号的数据之间是否存在依赖关系,如果不存在,允许该条控制信号立即发射,否则需要等到该条控制信号所依赖的所有控制信号全部执行完成后该条控制信号才允许被发射;

其中,所述控制信号为所述控制器单元从寄存器单元中获取的运算指令,并将该运算指令译码为控制其他模块行为的控制信号,所述其他模块包括所述主运算模块和多个所述从运算模块。

在可选实施例中,多个从运算模块用于利用相同的所述输入数据与各自的卷积核,并行地计算出各自的输出标量。

在可选实施例中,所述主运算模块使用的激活函数active是非线性函数sigmoid,tanh,relu,softmax中的任一个或线性函数。

在可选实施例中,所述互联模块构成所述主运算模块和所述多个从运算模块之间的连续或离散化数据的数据通路,互连模块为以下任一种结构:树状结构、环状结构、网格状结构、分级互连、总线结构。

在一些可能的实施例中,如图6所示,上述dma单元包括寄存器模块和dma控制器;

上述寄存器模块,用于存储第一地址、第二地址和每次传输数据的数据量;该第一地址为上述目标图像在存储空间对应的存储地址,第二地址为上述轮廓输出结果在存储空间对应的存储地址。

上述dma控制器接收到dma指令后,根据该dma指令从上述寄存器模块中获取第一地址和第二地址。

上述dma控制器从该第一地址对应的存储空间中获取上述待处理的目标图像,并将该目标图像传输至运算单元。

接收到上述运算单元根据上述目标图像得到的轮廓输出结果后,上述dma控制器将该轮廓输出结果存储至上述第二地址对应的存储空间中。

上述寄存器模块包括:

标量寄存器堆包括提供图像数据传输过程中所需的地址寄存器、存储图像数据规模的寄存器和存储数据量等参数的寄存器。标量寄存器堆可以用于上述图像数据地址、图像数据规模等信息。

其中,图像数据地址为数据在内部存储设备或外部存储设备中存储的地址,即上述图像数据的第一地址和第二地址;图像数据规模为图像数据在内存或外存储器中存储的行、列大小;还可为上述图像数据在计算机中存储的字节数、比特数等。

需要说明的是,上述图像数据为图像数据或者视频数据,但是最终以图像数据的形式存储于第一地址对应的存储空间中。图像数据存储于源存储器中的最小单位为图像数据的一个像素点,以rgb的形式。对于图像数据,可以看成m行n列的像素点。

如图7所示,上述dma控制器包括:

指令单元,用于处理原始dma指令,得到处理后的dma指令;

加法单元,用于根据上述处理后的dma指令,从上述寄存器模块中获取上述第一地址和第二地址;

读写单元,用于从上述第一地址对应的存储空间中读取上述目标图像,并将上述运算单元根据上述目标图像得到的轮廓输出结果写入上述第二地址对应的存储空间中。

进一步地,上述读取单元根据处理后的dma指令从上述寄存器模块中获取每次传输目标图像数据的数据量,并根据该每次传输图像数据的数据量分多次读取上述目标图像。

其中,上述加法单元和上述读写单元为多流水级结构,且上述加法单元处于第一流水级,上述读写单元在第二流水级。当连续串行的多条dma指令到达时,可以更加高效地实现这一连串dma指令所要求的操作。dma控制模块负责上述计算装置的所有dma操作,包括但不限于一维读取操作、一维写入操作、二维读取操作和二维写入操作。

进一步地,指令单元包括:

指令展开单元,用于将上述dma指令展开为系统dma指令,该系统dma指令是dma控制模块的控制指令。

当需要dma单元传送图像数据时,则上述dma控制模块收到dma指令命令,该dma指令表明所需第一地址、第二地址和大小。其中,该第一地址和第二地址还需要标记所属的存储空间,是内存还是外存储器,如果是外存储器,还需要标记所属的流。这里的“流”即前述多组数据交替传送时的分组,处理器对全部数据的需求可能是不连续的,但对某个特定的流来说,很可能是连续的。

指令缓存单元,用于存储系统dma指令,即在执行系统dma指令过程中,同时也被缓存在指令缓存单元中。当一条指令执行完之后,如果该指令同时也是指令缓存单元中未被提交指令中最早的一条指令,该指令将被提交,一旦提交,该条指令进行的操作对装置状态的改变将无法撤销。

在一种实施方式中,上述指令缓存单元可以是重排序缓存,也可以是其他缓存单元。

指令处理单元,用于处理指令缓存单元中的系统dma指令。

其中,指令处理单元可以包括:

取指单元,用于从指令缓存单元中获取系统dma指令;

译码单元,用于对系统dma指令进行译码;

指令队列,用于对译码后的系统dma指令进行顺序存储。

上述dma单元还可以包括数据缓存单元,用于与第一地址对应的存储空间与dma控制器之间进行图像数据传输,数据缓存单元可以为高速暂存存储器,可支持不同大小数据的传输,将待写入的图像数据暂存在高速暂存存储器中。

上述dma单元还可以包括数据转换单元,用于对从第一地址对应的存储空间中取出的图像数据作数据转换,其中数据转换包括但不限于数据精度转化、定浮点相互转换、数据排列方式转换、数据量大小转换。

在一种可行的实施例中,上述读写单元获取上述图像数据后,直接将该图像数据传输至上述运算单元。

在一种可行的实施例中,上述读写单元获取上述图像数据后,将该图像数据及其第二地址传输至上述数据转换单元,该数据转换单元将该图像数据进行处理后,将处理后的图像数据传输至上述运算单元。

上述dma单元还可以包括地址映射单元,用于当第一地址为虚拟地址时,对第一地址作地址映射,将第一地址转换为第一地址对应的物理地址;当第二地址为虚拟地址时,对第二地址作地址映射,将第二地址转换为对应的物理地址。

其中,上述dma指令采用载入/存储(load/store)结构,且dma指令为定长指令

图8示意性示出了本公开实施例的dma指令集的格式示意图,如图8所示,每条dma指令包括一个操作码和五个操作域,其中,操作码用于指示该指令的功能,dma控制器通过识别该操作码可进行相应的操作,操作域用于指示该指令的数据地址信息。指令集包含有不同功能的dma指令:

dtt指令,即数据传送指令,根据该指令,读写单元从第一地址读出一个字,写入第二地址,同时也写入数据缓存单元。数据传送指令包括五个操作域,分别为第一操作域、第二操作域、第三操作域、第四操作域和第五操作域。其中,上述第一操作域用于指示第一地址所属的存储空间,上述第二操作域用于指示第一地址,上述第三操作域用于指示第二地址所属的存储空间,上述第四操作域用于指示图像数据的第二地址,上述第五操作域用于指示图像数据的每次传输图像数据的数据量。每条指令完成一个字大小的数据的传送。

adj指令,即地址跳转指令,根据该指令,上述加法单元将上述寄存器模块中的任两个寄存器(包括一个地址寄存器和一个跳转值寄存器)中的值相加,然后写回到其中一个上述地址寄存器中,从而完成dma任务中的换行操作。

上述地址寄存器用于存储所述第一地址,上述跳转值寄存器用于存储第一地址的跳转值。

上述adj指令包括两个操作域,分别为第六操作域和第七操作域。其中,第六操作域用于指示地址寄存器的编号,第七操作域用于指示第跳转值寄存器的编号。上述adj指令将地址寄存器中的值加上跳转值寄存器中的值后,并将结果写回上述地址寄存器中。

图9示意性示出了本公开实施例的dma控制器执行dma指令的流水线时空图,如图9所示,假设该dma指令需要传送一块大小为3×3的数据,则整个过程一共需要9拍。也就是说,若该dma指令传送的数据块大小为m×n,其中,m,n均为正整数,此时,本公开实施例的数据传输过程一共需要m×n拍。

需要说明的是,上述一拍为上述计算装置的一个时钟周期。

需要指出的是,上述图像数据为上述目标图像。

关于本发明实施例未示出或未说明的部分,可参见前述实施例中的相关阐述,这里不再赘述。

本申请实施例还提供一种计算机存储介质,其中,该计算机存储介质存储用于电子数据交换的计算机程序,该计算机程序使得计算机执行如上述方法实施例中记载的任何一种轮廓检测方法的部分或全部步骤。

本申请实施例还提供一种计算机程序产品,所述计算机程序产品包括存储了计算机程序的非瞬时性计算机可读存储介质,所述计算机程序可操作来使计算机执行如上述方法实施例中记载的任何一种轮廓检测方法的部分或全部步骤。

本申请实施例还提供了一种加速装置,包括:存储器:存储有可执行指令;处理器:用于执行存储单元中的可执行指令,在执行指令时依照上述轮廓检测方法进行操作。

其中,处理器可以是单个处理单元,但也可以包括两个或更多个处理单元。另外,处理器还可以包括通用处理器(cpu)或者图形处理器(gpu);还可以包括在现场可编程逻辑门阵列(fpga)或者专用集成电路(asic),以对神经网络进行设置和运算。处理器还可以包括用于缓存用途的片上存储器(即包括处理装置中的存储器)。

在一些实施例里,还公开了一种芯片,其包括了上述用于执行轮廓检测方法所对应的神经网络处理器。

在一些实施例里,公开了一种芯片封装结构,其包括了上述芯片。

在一些实施例里,公开了一种板卡,其包括了上述芯片封装结构。

在一些实施例里,公开了一种电子设备,其包括了上述板卡。

电子设备包括数据处理装置、机器人、电脑、打印机、扫描仪、平板电脑、智能终端、手机、行车记录仪、导航仪、传感器、摄像头、服务器、云端服务器、相机、摄像机、投影仪、手表、耳机、移动存储、可穿戴设备、交通工具、家用电器、和/或医疗设备。

所述交通工具包括飞机、轮船和/或车辆;所述家用电器包括电视、空调、微波炉、冰箱、电饭煲、加湿器、洗衣机、电灯、燃气灶、油烟机;所述医疗设备包括核磁共振仪、b超仪和/或心电图仪。

需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本申请并不受所描述的动作顺序的限制,因为依据本申请,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于可选实施例,所涉及的动作和模块并不一定是本申请所必须的。

在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。

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

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

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

所述集成的单元如果以软件程序模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储器中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储器中,包括若干指令用以使得一台计算机设备(可为个人计算机、服务器或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储器包括:u盘、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。

本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序可以存储于一计算机可读存储器中,存储器可以包括:闪存盘、只读存储器(英文:read-onlymemory,简称:rom)、随机存取器(英文:randomaccessmemory,简称:ram)、磁盘或光盘等。

以上对本申请实施例进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的一般技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。

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