一种基于卷积神经网络的通道扩展方法与流程

文档序号:19529687发布日期:2019-12-27 15:16阅读:502来源:国知局
一种基于卷积神经网络的通道扩展方法与流程

本发明属于深度学习领域以及计算机视觉研究领域,具体涉及一种基于卷积神经网络的通道扩展方法。



背景技术:

数字图像分析技术在当今社会发挥着重要作用,机器视觉技术的发展已经逐渐抛弃传统数字图像处理的手工设计算法的方案,转而使用深度学习,以卷积神经网络(convolutionalneuralnetwork,cnn)为代表,以达到高准确率的目标检测结果。然而,现有的cnn网络直接处理的图像数据分辨率较低,这与当下普遍使用的高清图像远远无法兼容,其原因之一是cnn模型中执行特征提取算法时,特征图(featuremaps)的通道数巨大,中间冗余数据过多。因此,本发明提出一种减少中间冗余数据,并保证特征图通道扩展性能不变的方法。

深度学习革命爆发在2011~2012年,深度学习革命使得计算机视觉在很多应用领域达到了实用水平,催生了工业界的大量应用。其最重要的原因是深度学习可以做到传统方法无法企及的精度,尤其是基于cnn的深度学习模型,现在已经成为计算机视觉的主流方法。

卷积神经网络是一种常见的深度学习网络架构,受生物自然视觉认知机制启发而来。cnn能够得出原始图像的有效表征,这使得cnn能够直接从原始像素中,经过极少的预处理,捕获到视觉上面的规律。

然而,目前几乎所有的深度卷积神经网络,都要进行大量的特征提取操作从而形成特征图。而特征图的生成过程,是有复杂的若干阶段,为了保证深度学习模型的反向传播能够正常进行,每一阶段的特征图都需要保留在内存/显存里。传统的卷积神经网络在提取特征图过程中,使用卷积操作进行通道扩展,将特征图的通道数成倍增加并产生大量冗余数据,然后通过池化(pooling)操作将特征图分辨率降低从而操作精简数据滤除冗余。但是这个过程中因通道扩展带来的冗余数据会不可避免地消耗巨大的计算资源,当图片数据较大,或者深度模型较为复杂时,内存/显存的计算资源将无法承担计算过程中的冗余数据,这种巨大的资源消耗会成为难以解决的问题。



技术实现要素:

为解决上述问题,提供一种保证有效数据不损失的情况下,减少中间运算冗余数据的通道扩展方法,本发明采用了如下技术方案:

本发明提供了一种基于卷积神经网络的通道扩展方法,用于替换卷积神经网络中通用的卷积扩展通道和池化操作,从而保证有效数据不损失的情况下减少卷积神经网络在中间运算的冗余数据,其特征在于,包括如下步骤:步骤s1,根据在卷积池化前后特征图的分辨率变化率计算特征图数据的分辨率及通道数;步骤s2,将4个维度的特征图数据中对应高和宽的通道进行维度拆分,形成6个维度;步骤s3,将拆分后的特征图数据进行维度调转:第3、5维度调换为第5、6维度;步骤s4,将调换后的特征图数据中第2、3、4维度进行维度合并,重新整合为4个维度,其中,步骤s2包括如下子步骤:步骤s2-1,将特征图数据在内存和/或显存中连续化;步骤s2-2,拆分特征图数据中的第3、4维度,步骤s4包括如下子步骤:步骤s4-1,将调换后的特征图数据在内存和/或显存中连续化;步骤s4-2,合并调换后的特征图数据中的第2、3、4维度。

本发明提供的基于卷积神经网络的通道扩展方法,还可以具有这样的技术特征,其中,4个维度为批大小、通道数、高、宽,记为[b,c,h,w],步骤s2中拆分维度时,在批大小不变的情况下,将h维度和w维度进行拆分并扩大通道数,高h与宽w缩小的总倍数等于通道数扩大的倍数,若扩展前通道数为c,扩展后通道数为c’,那么:同时,若扩展后高和宽为h’和w’,那么:则有:k=m×n,式中,k为,m为,n为,根据式(2)将h维度拆分为两个维度[h’,m],将w维度拆分为两个维度[w’,n],拆分之后,特征图数据成为6个维度,其形式为[b,c,h’,m,w’,n]。

本发明提供的基于卷积神经网络的通道扩展方法,还可以具有这样的技术特征,其中,在步骤s3中进行维度调转时,将形式为[b,c,h’,m,w’,n]的特征图数据整理为[b,c,m,n,h’,w’]形式。

本发明提供的基于卷积神经网络的通道扩展方法,还可以具有这样的技术特征,其中,在步骤s4中进行维度合并时,将形式为[b,c,m,n,h’,w’]的特征图数据,整合为[b,c’,h’,w’]形式的4个维度。

发明作用与效果

根据本发明的基于卷积神经网络的通道扩展方法,由于在计算得到特征图数据的分辨率及通道数后,根据这些数据进行通道拆分、维度调换、通道合并操作,使得原特征图数据总量在不发生变化的情况下,满足通道扩展,且分辨率降低。因此本发明的通道扩展方法可以在通道扩展和分辨率降低二者之间很好地平衡,减少不必要的冗余数据操作,能够有效减轻卷积神经网络庞大计算量对计算资源的压力。相对于传统卷积神经网络通常先通过卷积操作扩充大量数据通道,然后再通过池化操作降低分辨率,其间会丢弃大量数据的操作,本发明的方法能够减少神经网络对内存/显存的消耗以及相关不必要的计算资源浪费,在不产生冗余数据的情况下,达到通道扩展的目的,起到提高运算速度的效果。

附图说明

图1是本发明实施例中通道扩展方法的流程图;

图2是本发明实施例中将单个维度拆分为2个维度的示意图;

图3是本发明实施例中两个相邻维度调换的示意图;以及

图4是本发明实施例中通道扩展方法对图像特征数据的加工原理示意图。

具体实施方式

为了使本发明实现的技术手段、创作特征、达成目的与功效易于明白了解,以下结合实施例及附图对本发明的基于卷积神经网络的通道扩展方法作具体阐述。

<实施例>

本实施例中,深度卷积神经网络的实现平台为一台计算机,该深度卷积神经网络以及通道扩展方法使用python语言实现,版本为python3.6,深度学习框架使用pytorch1.01。

本实施例的基于卷积神经网络的通道扩展方法作为一个替换模块实现,用以替换和优化原深度卷积神经网络中通用的卷积扩展通道和池化降低分辨率操作。该替换模块基于模块downpixelshuffle,继承于torch.nn.module模块,可以直接用于基于pytorch框架实现的深度神经网络中,并能够进行反向传播。模块downpixelshuffle的主要功能接口所需参数为输入数据input和分辨率缩小倍数downscale_factor。

图1是本发明实施例中通道扩展方法的流程图。

如图1所示,基于卷积神经网络的通道扩展方法包括如下步骤:

步骤s1,根据在卷积池化前后特征图的分辨率变化率计算特征图数据的分辨率及通道数。

本实施例的步骤s1中,在卷积池化前后特征图的分辨率变化率为分辨率缩小倍数downscale_factor。在对特征图数据进行计算时,步骤s1具体分为如下子步骤s1-1及s1-2:

步骤s1-1,计算输出数据(即特征图数据)的分辨率高和宽。

本实施例中,设原分辨率的高和宽为h和w。根据缩小倍数downscale_factor可知,输出数据的分辨率高h’和宽w’为:

步骤s1-2,计算输出特征图数据的通道数、高和宽。

本实施例中,设通道数为c,根据缩小倍数downscale_factor,输出数据的通道数c’为:

c'=c×downscale_factor2(2)

步骤s2,将4个维度的特征图数据中对应高和宽的通道进行维度拆分,形成6个维度。

本实施例中,针对cnn常见的特征图数据,其对应有4个维度:批(batch)大小、通道数、高、宽,记录为[b,c,h,w]形式。步骤s2具体包括如下子步骤s2-1及s2-2:

步骤s2-1,将特征图数据在内存/显存中连续化。

在计算机中实现维度拆分操作时,需要内存/显存(该内存/显存取决于深度卷积神经网络是在内存中还是在显存中执行计算)中的数据连续保存,保证寻址计算正确,因此在执行维度拆分操作之前,需要对计算机中的数据进行整理,将所有数据按顺序连续保存。

步骤s2-2,拆分特征图数据的第3、4维度。

本实施例中,考虑到深度卷积神经网络的普遍特性,因此使得通道扩展之后的特征图数据的分辨率在高和宽的方向上缩小倍数相同,并且原分辨率可被缩小倍数整除。此时,在批大小不变的情况下,扩大通道数,高与宽缩小,高与宽缩小的总倍数等于通道数扩大的倍数。

由于扩展前通道数为c,扩展后通道数为c’,那么:

同时,扩展前高和宽为h和w,扩展后通道数为h’和w’,那么:

则有:

k=m×n(5)

式中,k为通道扩展倍数,m为高的缩小倍数,n为宽的缩小倍数。

根据式(4)描述的通道数与分辨率的关系,h维度拆分为两个维度[h’,m],w维度拆分为两个维度[w’,n]。拆分之后,特征图数据成为6个维度,其形式变为:[b,c,h’,m,w’,n]。

本实施例中,特征图数据在输入步骤s2前为输入数据input,该输入数据input为pytorch的tensor数据形式,形式为[b,c,h,w]。在执行步骤s2时,先通过pytorch框架接口将input的数据在内存中连续化,然后将数据的第3、4维度分别拆分,形成6维度数据。如图2所示,单个tensor可以被维度拆分为子多维度tensor。拆分后的数据形式为:

根据式(1),拆分后的数据形式即:

[b,c,h',downscale_factor,w',downscale_factor]

步骤s3,将拆分后的特征图数据进行维度调转:第3、5维度调换为第5、6维度。

本实施例的步骤s3中,将6个维度的特征图数据的第3、5维度调换为第5、6维度,即形式为[b,c,h’,m,w’,n]的数据整理为[b,c,m,n,h’,w’]形式。如图3所示,多维度数据的各维度调换,实际就是数据分组的先后顺序改变,其原理与相邻两个维度调换相同。在计算机中可以通过寻址的先后顺序改变来实现。

本实施例中,输入数据input被执行维度拆分操作后,执行步骤s3从而调换数据的维度,调换维度后的6维度临时数据为:

[b,c,downscale_factor,downscale_factor,h',w']

步骤s4,将调换后的特征图数据中第2、3、4维度进行维度合并,重新整合为4个维度。

本实施例中,步骤s4的维度合并操作与步骤s2中的维度拆分操作互为逆操作。该步骤s4具体分为如下子步骤s4-1及s4-2:

步骤s4-1,将调换后的特征图数据在内存和/或显存中连续化。

本实施例中,为了保证寻址计算正确,在执行维度合并操作之前,同样需要对计算机中的数据进行整理,将所有数据按顺序连续保存。因此在执行步骤s4-2之前,与步骤s2类似,需要通过步骤s4-1进行特征图数据的连续化。

步骤s4-2,合并调换后的特征图数据中的第2、3、4维度。

在步骤s3进行维度调转后,特征图数据的形式为[b,c,m,n,h’,w’],将第2、3、4维度合并,将数据重新整合为4个维度,则最终输出数据的形式为[b,c’,h’,w’]。

本实施例中,将当前6维度临时数据在内存中连续化,然后执行维度合并操作,将第2、3、4维度合并,将数据重新整合为4个维度,其形式为:

[b,c×downscale_factor×downscale_factor,h',w']

根据式(2),数据形式即:

[b,c',h',w']

至此,基于本实施例通道扩展方法的替换模块完成。

以下调用该替换模块对常见的卷积+池化操作进行优化:

根据通用的最大化池化(maxpooling)操作,输入的特征数据将会在高和宽维度上,分辨率都减半。因此,根据式(4),当m=2,n=2时,

根据式(5)可知,扩展后通道数是之前的k=2×2=4倍。

进一步以一个实际应用方案为例:调用本实施例的替换模块的接口后,若其使用input数据为[3,128,512,512]的tensor,即batch=3,通道数为128,分辨率是512×512;使用的降采样倍数为2,即参数downscale_factor=2。

执行步骤s1,可知输出分辨率为256×256,输出通道数为128×22=512;

执行步骤s2,将数据数据进行维度分离,整理后,数据形式为[3,128,256,2,256,2];

执行步骤s3,将数据进行维度调换,整理后的数据形式为[3,128,2,2,256,256];

执行步骤s4,将数据进行维度合并,整理后的数据形式为[3,512,256,256]。

最终以[3,512,256,256]形式的数据即为通道扩展,且分辨率降低之后的数据输出。其通道从128扩展为512,分辨率从512×512降为256×256。

实施例作用与效果

根据本实施例提供的基于卷积神经网络的通道扩展方法,由于在计算得到特征图数据的分辨率及通道数后,根据这些数据进行通道拆分、维度调换、通道合并操作,使得原特征图数据总量在不发生变化的情况下,满足通道扩展,且分辨率降低。因此本实施例的通道扩展方法可以在通道扩展和分辨率降低二者之间很好地平衡,减少不必要的冗余数据操作,能够有效减轻卷积神经网络庞大计算量对计算资源的压力。相对于传统卷积神经网络通常先通过卷积操作扩充大量数据通道,然后再通过池化操作降低分辨率,其间会丢弃大量数据的操作,本实施例的方法能够减少神经网络对内存/显存的消耗以及相关不必要的计算资源浪费,在不产生冗余数据的情况下,达到通道扩展的目的,起到提高运算速度的效果。

同时,考虑到深度模型具有训练学习的能力,因此基于深度学习的特性(即在深度模型中的参数可以通过训练学习达到最优),通过本实施例的通道扩展方法对深度模型中执行中间运算的部分进行替换后,能够在保留有效特征数据的前提下,更好地促进深度模型的计算效果。

图4是本发明的通道扩展方法对图像特征数据的加工原理的示意,图中,最开始的数据是1个通道,高为10,宽为10;需要扩展通道并缩小分辨率的输出数据是4个通道,高为5,宽为5。那么对于输入数据的第二维度和第三维度的数据,应该是都均匀分成两份,拿出来堆叠起来,形成4份,也就整理成4个通道了;同时,分辨率也都缩小了一半。该过程中,全部是元素的维度排位子,没有用深度网络做卷积和池化,通道扩展和分辨率降低不是通过数据计算得到的,而是通过调换维度得到的。由此可见,本发明的算法更趋向于普遍性,整个过程充分利用现有数据,不做额外冗余数据计算。

实施例中,由于不通过卷积操作直接生成更多的通道,也不使用池化(pooling)操作降低特征图的分辨率,因此本实施例的通道扩展方法在执行前后的数据量大小不变。该通道扩展方法通过数据的维度变换,将特征图整理为分辨率降低、通道扩张后的新特征图数据。

上述实施例仅用于举例说明本发明的具体实施方式,而本发明不限于上述实施例的描述范围。

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