反卷积实现方法及相关产品与流程

文档序号:18323849发布日期:2019-08-03 10:46阅读:214来源:国知局
反卷积实现方法及相关产品与流程

本申请涉及计算机以及人工智能技术领域,具体涉及一种反卷积实现方法及相关产品。



背景技术:

随着生成神经网络在机器学习领域的不断发展与成熟,反卷积层被越来越多的应用到深度卷积网络的算法开发与应用中。卷积操作的作用类似神经网络中的编码器,用于对高维数据进行低维特征提取。反卷积通常用于将低维特征映射成高维输入,相当于一个解码器,实现了低维向量到高维向量的重构。反卷积操作主要应用于对抗生成神经网络,在图像分割、图像生成、边缘检测等领域都有很重要的作用。

现有的反卷积操作基于对输入数据的添零进行计算,所以其计算量大,能耗大。

申请内容

本申请实施例提供了一种反卷积实现方法及相关产品,不通过添零操作实现反卷积的运算,从来减少其计算量,降低功耗。

第一方面,本申请实施例提供一种反卷积实现方法,所述方法包括如下步骤:

获取输入数据i*i、反卷积核k*k,滑动步长s,填补零数目p;

将输入数据i*i每个元素值单独与反卷积核k*k进行乘法的操作;每个元素值与反卷积核k*k进行乘法的操作得到i*i组数据,i*i组数据按滑动步长s移动组成初始输出数据;

如初始输出数据的元素位置具有乘法的操作值的多个积,将所述元素位置的多个积执行求和操作得到所述元素位置的最终值;

i、k、s均为大于等于1的整数,p为大于等于0的整数。

第二方面,提供一种执行第一方面所述方法的反卷积的硬件架构,所述硬件架构包括:输入数据缓存、反卷积核缓存、反卷积运算核、部分结果缓存,选择器、累加器和初始输出结果缓存;

其中,所述反卷积运算核包括:k个加法器a、k个乘法器m以及(k)*(k-s)个缓存;

其中,k个乘法器m互连接,k个加法器a互连接,k个加法器a分别与k个乘法器m连接,(k)*(k-s)个缓存包括:k组缓存,每组缓存包括k-s个缓存,k组缓存分别与k个乘法器m连接;

输入数据缓存以及反卷积核缓存与k个乘法器m连接并输入输入数据和反卷积核数据;k个加法器a分别与部分结果缓存的输入端以及选择器的输入端连接,部分结果缓存输出端回连k个加法器a,部分结果缓存输出端还与选择器的输入端连接,选择器的输出端连接累加器的输入端,累加器的输出端连接初始输出数据缓存。

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

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

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

可以看出,本申请提供的技术方案不通过添零操作,直接进行计算得到反卷积运算的结果,所以其具有减少计算量,降低功耗的优点。

附图说明

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

图1是一种软件上实现反卷积运算的示意图。

图2是本申请提供的一种卷积实现方法的流程示意图。

图3是本申请提供的一种2*2输入数据与3*3反卷积核的反卷积运算实现示例图。

图4是本申请提供的一种反卷积的硬件架构的结构图。

具体实施方式

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

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

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

本申请中的电子装置可以包括:服务器、智能摄像设备、智能手机(如android手机、ios手机、windowsphone手机等)、平板电脑、掌上电脑、笔记本电脑、移动互联网设备(mid,mobileinternetdevices)或穿戴式设备等,上述电子装置仅是举例,而非穷举,包含但不限于上述电子装置,为了描述的方便,下面实施例中将上述电子装置称为用户设备(userequipment,ue)、终端或电子设备。当然在实际应用中,上述用户设备也不限于上述变现形式,例如还可以包括:智能车载终端、计算机设备等等。

参阅图1,图1为一种反卷积操作的数据示意图,这里的输入数据(input)以3*3数据为例,反卷积的卷积核尺寸为3*3,其计算的方法可以为,输入图特征图像大小i*i,反卷积核k*k,滑动步长s,填补零数目p。对应输出特征图像的大小o*o,满足:o=s*(i-1)+k-2*p。

参阅图1,滑动步长s=2,填补零数目p=1,k=3,对于3*3的输入数据对输入相邻数据填充s-1个0,边界补充k-p-1个0以后得到7*7的数据块,与反卷积核进行步长为1的卷积运算,得到7*7的输出图像;最后对7*7的图像裁剪掉边界上的数据(p行,p列),得到6*6的输出结果。

参阅图1,图1的技术方案除了卷积中的乘累加运算之外,要求的填0操作不适合硬件实现,在fpga上的执行效率比较低,此外也增加了对输入图像储存的内存需求;在大量填补的0导致大部分乘累加运算为无效操作,计算效率大大下降,导致对硬件计算资源利用率下降;通用性低:当把反卷积操作转化为卷积运算时,由于输入图像的不规律,会导致对含有不同参数的反卷积层操作时,数据读取模式变化(比如不同的反卷积核,滑动步长等),导致硬件上需要不同的计算模块来实现不同层的操作,硬件设计复杂度加大。

参阅图2,图2提供一种反卷积实现方法,该方法由终端执行,该方法如图2所示,包括如下步骤:

步骤s201、获取输入数据i*i、反卷积核k*k,滑动步长s,填补零数目p;

步骤s202、输入数据i*i每个元素值单独与反卷积核k*k进行乘法的操作;每个元素值与反卷积核k*k进行乘法的操作得到i*i组数据,i*i组数据按滑动步长s移动组成初始输出数据;

步骤s203、如初始输出数据的元素位置具有乘法的操作值的多个积,将该元素位置的多个积执行求和操作得到该元素位置的最终值;

步骤s204(可选的)、将初始输出数据执行裁剪得到符合输出大小需求的最终输出结果。

上述i、k、s均为大于等于1的整数,p为大于等于0的整数。

可选的,上述步骤s204的实现方法具体可以为:

将初始输出数据的边界数据按p进行裁剪得到最终输出结果。

当然,上述步骤s204的实现方法具体还可以包括:

将根据最终输出数据的大小将初始输出数据的边界数据进行裁剪得到最终输出结果。

本申请提供的技术方案在执行反卷积操作时,无需执行填零操作,那么在实际应用中,计算的量就会很小,避免了对输入填0的操作,计算效率得到提高;根据现在主流的反卷积核的大小(2,4,5,8),相比之前的传统卷积实现方法,运算量减少到1/4—1/80。即大大的减少了计算量。更适合于硬件实现:计算资源的使用率更高;硬件结构更通用,更易于拓展到不同层的配置;有效地处理了反卷积结果的重叠区域(即具有积的元素位置),通过控制逻辑,以很小的硬件资源(寄存器)得到正确的输出结果,不会带来时间上的额外消耗。

为了更好的说明本申请的效果,本申请以输入数据为2*2数据,卷积核为3*3数据为例来说明。

参阅图3,图3的输入数据为2*2数据,反卷积核为3*3,滑动步长s=2,p=1,为了方便说明,每个元素的位置命名参见图3,参阅图3,输入数据的每个元素值单独与反卷积核相乘,例如i11分别与k11—k33相乘得到9个数值,9个数值排列得到i11方框的位置,同理i12分别与k11—k33相乘得到另外9个数值,另外9个数值按滑动步长s=2向右移动2列即得到i12方框位置,同理,得到i21得到i21方框位置以及i22方框位置,如图3所示,那么对于k12位置,其具有2个乘积的值,分别为,i11*k23以及i12*k31,所以其具有多个乘法操作的积,这样需要在k12位置将2个积进行求和操作得到的和即为k12位置的具体值,即o23=i11*k23+i12*k31,同理,k22位置具有4个乘积的值,k21具有2个乘积的值,k23具有2个乘积的值,k32具有2个乘积的值,这些元素的区域也可以称为重叠区域。经过这样计算即得到初始输出数据,对该初始输出数据进行裁剪即能够得到最终输出数据。

参阅图4,图4提供了一种反卷积的硬件架构,该硬件架构执行如图2所示实施例的方法的步骤以及细化步骤。

参阅图4,该反卷积的硬件架构包括:输入数据缓存、反卷积核缓存、反卷积运算核、部分结果缓存,选择器、累加器和初始输出结果缓存;

其中,该反卷积运算核包括:k个加法器a、k个乘法器m以及(k)*(k-s)个缓存;

其中,k个乘法器m互连接,k个加法器a互连接,k个加法器a分别与k个乘法器m连接,(k)*(k-s)个缓存包括:k组缓存,每组缓存包括k-s个缓存,k组缓存分别与k个乘法器m连接;

输入数据缓存以及反卷积核缓存与k个乘法器m连接并输入输入数据和反卷积核数据;k个加法器a分别与部分结果缓存的输入端以及选择器的输入端连接,部分结果缓存输出端回连k个加法器a,部分结果缓存输出端还与选择器的输入端连接,选择器的输出端连接累加器的输入端,累加器的输出端连接初始输出数据缓存。

可选的,上述反卷积的硬件架构还可以包括:裁剪部件,该裁剪部件用于对该初始输出数据执行裁剪操作。

可选的,上述反卷积的硬件架构还可以包括:反卷积核因子缓存,该反卷积核因子缓存设置在反卷积核缓存与k个乘法器m之间。

可选的,上述(k)*(k-s)个缓存中每个缓存对应一个具有多个积的元素位置。即重叠区域的每个元素需要分配一个单独的缓存,这样能够避免重叠区域的数据混乱的优点。

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

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

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

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

在本申请所提供的几个实施例中,应该理解到,所揭露的装置,可通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的

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

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

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

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