神经网络模型中的数据计算方法、图像处理方法及装置与流程

文档序号:20514562发布日期:2020-04-24 18:56阅读:342来源:国知局
神经网络模型中的数据计算方法、图像处理方法及装置与流程

本申请涉及计算机技术领域,具体而言,本申请涉及一种神经网络模型中的数据计算方法、图像处理方法及装置。



背景技术:

现有技术中,神经网络模型中的数据可以通过gpu(graphicsprocessingunit,图形处理器)计算,具体地,在基于gpu中的线程计算输入数据的计算结果时,每个线程均需要获取一次所需要的权重数据,则在计算过程中,会消耗大量的时间在获取权重数据上,使得整个计算过程的效率低。



技术实现要素:

本申请的目的旨在至少能解决上述的技术缺陷之一,通过本申请的方案,可减少权重数据的读取次数,提高计算效率。本申请采用的技术方案如下:

第一方面,本申请提供了一种神经网络模型中的数据计算方法,方法应用于神经网络模型中的至少一个数据处理层的数据计算,数据计算通过图像处理器gpu的线程组进行,该方法包括:

将线程组进行数据计算所需的数据处理层的权重数据,读取到线程组的组共享groupshared变量中;

基于线程组的线程数对数据处理层的输入数据进行划分;

对于划分后的每一组输入数据,从groupshared变量中读取该组输入数据进行一次数据处理所对应权重数据;

线程组中的线程基于每一组输入数据以及该组输入数据进行一次数据处理对应的权重数据进行数据计算,得到该组输入数据对应的计算结果。

本申请第一方面的实施例中,该方法还包括:

将每一组输入数据对应的计算结果存储到groupshared变量中。

本申请第一方面的实施例中,在得到各组输入数据对应的计算结果之后,该方法还包括:

基于各组输入数据对应的计算结果中对应于同一输出位置的计算结果,得到该同一输出位置的输出数据。

本申请第一方面的实施例中,数据处理层包括卷积层,基于各组输入数据对应的计算结果中对应同一输出位置的计算结果,得到该同一输出位置的输出数据,包括:

将各组输入数据对应的计算结果中对应同一输出位置的计算结果相加,并加上卷积层的卷积偏移,得到该同一输出位置的输出数据。

本申请第一方面的实施例中,基于线程组的线程数对数据处理层的输入数据进行划分,包括:

基于线程组的深度维的线程数对数据处理层的输入数据进行划分;

其中,划分后的每一组输入数据进行一次数据处理所对应权重数据的数据量为:

kw*kh*c/tz

其中,tz为线程组的深度维的线程数,kw为卷积核的宽,kh为卷积核的高,c为卷积层的输入通道数,c/tz表示进行一次数据处理时每个线程对应处理的卷积的输入通道数。

第二方面,本申请提供了一种图像处理方法,该方法包括:

获取待处理图像;

通过神经网络模型对待处理图像进行处理,得到对应的图像处理结果;

其中,神经网络模型包括数据处理层,神经网络模型的至少一个数据处理层采用第一方面或第一方面任一可选的实现方式中所提供的神经网络模型中的数据计算方法进行相应的数据处理。

本申请第二方面的实施例中,神经网络模型包括目标对象识别模型、图像分割模型或图像分类模型。

第三方面,本申请提供了一种神经网络模型中的数据计算装置,该装置应用于神经网络模型中的至少一个数据处理层的数据计算,数据计算通过图像处理器gpu的线程组进行,该装置包括:

第一权重数据读取模块,用于将线程组进行数据计算所需的数据处理层的权重数据,读取到线程组的组共享groupshared变量中;

数据划分模块,用于基于线程组的线程数对数据处理层的输入数据进行划分;

第二权重数据读取模块,用于对于划分后的每一组输入数据,从groupshared变量中读取该组输入数据进行一次数据处理所对应权重数据;

数据计算模块,用于线程组中的线程基于每一组输入数据以及该组输入数据进行一次数据处理对应的权重数据进行数据计算,得到该组输入数据对应的计算结果。

本申请第三方面的实施例中,该装置还包括:

存储模块,用于将每一组输入数据对应的计算结果存储到groupshared变量中。

本申请第三方面的实施例中,该装置还包括:

输出数据确定模块,用于在得到各组输入数据对应的计算结果之后,基于各组输入数据对应的计算结果中对应于同一输出位置的计算结果,得到该同一输出位置的输出数据。

本申请第三方面的实施例中,数据处理层包括卷积层,输出数据确定模块在基于各组输入数据对应的计算结果中对应同一输出位置的计算结果,得到该同一输出位置的输出数据时,具体用于:

将各组输入数据对应的计算结果中对应同一输出位置的计算结果相加,并加上卷积层的卷积偏移,得到该同一输出位置的输出数据。

本申请第三方面的实施例中,数据划分模块在基于线程组的线程数对数据处理层的输入数据进行划分时,具体用于:

基于线程组的深度维的线程数对数据处理层的输入数据进行划分;

其中,划分后的每一组输入数据进行一次数据处理所对应权重数据的数据量为:

kw*kh*c/tz

其中,tz为线程组的深度维的线程数,kw为卷积核的宽,kh为卷积核的高,c为卷积层的输入通道数,c/tz表示进行一次数据处理时每个线程对应处理的卷积的输入通道数。

第四方面,本申请提供了一种图像处理装置,该装置包括:

图像获取模块,用于获取待处理图像;

图像处理模块,用于通过神经网络模型对待处理图像进行处理,得到对应的图像处理结果;

其中,神经网络模型包括数据处理层,神经网络模型的至少一个数据处理层采用第一方面或第一方面任一可选的实现方式中所提供的神经网络模型中的数据计算方法进行相应的数据处理。

本申请第四方面的实施例中,神经网络模型包括目标对象识别模型、图像分割模型或图像分类模型。

第五方面,本申请提供了一种电子设备,该电子设备包括:

处理器和存储器;

存储器,用于存储计算机操作指令;

处理器,用于通过调用计算机操作指令,执行如本申请的第一方面或第二方面任一实施例中所示的方法。

第六方面,本申请提供了一种计算机可读存储介质,该计算机可读存储介质存储有至少一条计算机程序,该至少一条计算机程序由处理器加载并执行以实现如本申请的第一方面或第二方面任一实施例中所示的方法。

本申请实施例提供的技术方案带来的有益效果是:可将线程组进行数据计算所需的数据处理层的权重数据,读取到线程组的组共享groupshared变量中,基于线程组的线程数对数据处理层的输入数据进行划分,对于同一个线程组内的线程,每个线程在进行一次数据处理时所需要的权重数据是相同的,则对于划分后的每一组输入数据,可以从groupshared变量中读取该组输入数据进行一次数据处理所对应权重数据,因此,对于同一线程组对应的输入数据,不需要每个输入数据都读取一次对应的权重数据,可减少权重数据的读取次数,从而线程组中的线程基于每一组输入数据以及该组输入数据进行一次数据处理对应的权重数据进行数据计算,得到该组输入数据对应的计算结果时,可提高计算效率。

附图说明

为了更清楚地说明本申请实施例中的技术方案,下面将对本申请实施例描述中所需要使用的附图作简单地介绍。

图1为本申请一实施例提供的一种基于gpu计算输出数据的计算过程的示意图;

图2为本申请一实施例提供的一种神经网络模型中的数据计算方法的流程示意图;

图3为本申请一实施例提供的一种gpu线程组中的内存结构示意图;

图4为本申请一实施例提供的一种图像处理方法的流程示意图;

图5a-图5b为本申请一实施例提供的一种基于神经网络模型分割手部区域的示意图;

图5c-图5d为本申请又一实施例提供的一种基于神经网络模型识别手部区域的示意图;

图5e-图5f为本申请又一实施例提供的一种基于神经网络模型识别人脸区域的示意图;

图6为本申请又一实施例提供的一种基于gpu计算输出数据的计算过程的示意图;

图7为本申请一实施例提供的一种神经网络模型中的数据计算装置的结构示意图;

图8为本申请一实施例提供的一种图像处理装置的结构示意图;

图9为本申请一实施例提供的一种电子设备的结构示意图。

具体实施方式

下面详细描述本申请的实施例,实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,仅用于解释本申请,而不能解释为对本申请的限制。

本技术领域技术人员可以理解,除非特意声明,这里使用的单数形式“一”、“一个”、“”和“该”也可包括复数形式。应该进一步理解的是,本申请的说明书中使用的措辞“包括”是指存在特征、整数、步骤、操作、元件和/或组件,但是并不排除存在或添加一个或多个其他特征、整数、步骤、操作、元件、组件和/或它们的组。应该理解,当我们称元件被“连接”或“耦接”到另一元件时,它可以直接连接或耦接到其他元件,或者也可以存在中间元件。此外,这里使用的“连接”或“耦接”可以包括无线连接或无线耦接。这里使用的措辞“和/或”包括一个或更多个相关联的列出项的全部或任一单元和全部组合。

人工智能(artificialintelligence,ai)是利用数字计算机或者数字计算机控制的机器模拟、延伸和扩展人的智能,感知环境、获取知识并使用知识获得最佳结果的理论、方法、技术及应用系统。换句话说,人工智能是计算机科学的一个综合技术,它企图了解智能的实质,并生产出一种新的能以人类智能相似的方式做出反应的智能机器。人工智能也就是研究各种智能机器的设计原理与实现方法,使机器具有感知、推理与决策的功能。

人工智能技术是一门综合学科,涉及领域广泛,既有硬件层面的技术也有软件层面的技术。人工智能基础技术一般包括如传感器、专用人工智能芯片、云计算、分布式存储、大数据处理技术、操作/交互系统、机电一体化等技术。人工智能软件技术主要包括计算机视觉技术、语音处理技术、自然语言处理技术以及机器学习/深度学习等几大方向。

其中,机器学习(machinelearning,ml)是一门多领域交叉学科,涉及概率论、统计学、逼近论、凸分析、算法复杂度理论等多门学科。专门研究计算机怎样模拟或实现人类的学习行为,以获取新的知识或技能,重新组织已有的知识结构使之不断改善自身的性能。机器学习是人工智能的核心,是使计算机具有智能的根本途径,其应用遍及人工智能的各个领域。机器学习和深度学习通常包括人工神经网络、置信网络、强化学习、迁移学习、归纳学习、对抗学习等技术。

随着人工智能技术研究和进步,人工智能技术在多个领域展开研究和应用,例如常见的智能家居、智能穿戴设备、虚拟助理、智能音箱、智能营销、无人驾驶、自动驾驶、无人机、机器人、智能医疗、智能客服等,相信随着技术的发展,人工智能技术将在更多的领域得到应用,并发挥越来越重要的价值。

本申请实施例提供的方案涉及人工智能的机器学习等技术,具体通过如下实施例进行说明:

首先,为了更好的理解及说明本申请实施例的方案,下面对本申请实施例中所涉及到的一些技术用语进行简单说明。

神经网络(neuralnetwork,nn):是一种模仿动物神经网络行为特征,进行分布式并行信息处理的算法数学模型。这种网络依靠系统的复杂程度,通过调整内部大量节点之间相互连接的关系,从而达到处理信息的目的。

convolution(即卷积):指caffe(convolutionalarchitectureforfastfeatureembedding,深度学习训练框架)中所定义的convolution算子,中文一般翻译为"卷积"。

shader:shader中文翻译为“着色器”,含义是:可编程图形管线;shader是一个专门运行在gpu的程序。

groupshared:gpu线程组中的共享缓存变量。

opengl(opengraphicslibrary,开放图形库):用于渲染2d、3d矢量图形的跨语言、跨平台的应用程序编程接口。

direct3d:是基于微软的通用对象模式com(commonobjectmode)的3d图形接口。

metal:metal是一种低层次的渲染应用程序编程接口,提供了软件所需的最低层,保证软件可以运行在不同的图形芯片上。

现有技术中,神经网络模型中的数据计算在跨平台gpu实现过程中,通常采用shader进行操作,卷积层是神经网络的数据处理层中比较重要的组成部分,通常与视觉相关的神经网络的大部分的计算均在卷积层完成,而在shader进行神经网络的各个层的计算时,为了提高并行性,通常利用一个线程计算一个输出点上的值,卷积层的计算也是如此,例如,输入数据为宽w高h深c,卷积核的宽为kw,高为kh,卷积group为1,则为了计算输出第一个点上的值,对于gpu的第一个线程,需要读取输入数据为:宽为0到kw,高为0到kh,深为c的kw*kh*c个数据,同时需要读取卷积核对应的第一个通道的kw*kh*c个权重数据,则第一个点上的输出数据为:卷积核对应的权重数据与输入数据相乘,再加上卷积偏移bias(也可称之为卷积偏置,或偏移数据)。其余点上的输出数据与第一个点的输出数据的计算方式类似。

具体可参见图1中所示的基于gpu计算输出数据的计算过程,在图1中,第一个点的输入数据为:宽为0到kw,高为0到kh,深为c的kw*kh*c个数据,图1中所示kw为3,kh为1,c为4;权重数据为kw*kh*c个数据,基于输入数据、权重数据(图1中所示的权值数据)和偏移数据,可计算得到一个点的值,即输出数据中对应的一个点的值。

在计算一个点的输出数据时,需要读取kw*kh*c个权重数据,对于同一个输出平面,即同一个维度(宽、高和深中的任一维度)的多个点的对应的平面,每个线程都需要读取一次所需要的权重数据。例如,输入数据的深度c为64,卷积核大小为3*3,卷积group为1,在一个维度为6*6*8的线程组中进行计算时,每个线程均需要读取一次3*3*64个权重数据,则一共需要读取6*6*8次权重数据,在计算过程中,基于上述读取权重数据的方式,消耗了大量时间在权重数据的获取上,进行使得计算效率低。

针对现有技术存在的问题,以及更好的满足实际应用需求,本申请实施例提供了一种神经网络模型中的数据计算方法,将线程组进行数据计算所需的数据处理层的权重数据,读取到线程组的组共享groupshared变量中,基于线程组的线程数对数据处理层的输入数据进行划分,对于同一个线程组内的线程,可以共用相同的权重数据,则对于划分后的每一组输入数据,可以读取该组输入数据进行一次数据处理所对应权重数据,因此,对于同一线程组对应的输入数据,不需要每个输入数据都读取对应的权重数据,可减少权重数据的读取次数,从而线程组中的线程基于每一组输入数据以及该组输入数据进行一次数据处理对应的权重数据进行数据计算,将每组输入数据进行一次数据处理对应的计算结果保存在groupshared变量中,累加每组输入数据对应的计算结果得到一个点的计算结果,通过该方案,充分加大了计算的并行性,从而提高了计算效率。

下面以具体地实施例对本申请的技术方案以及本申请的技术方案如何解决上述技术问题进行详细说明。下面这几个具体的实施例可以相互结合,对于相同或相似的概念或过程可能在某些实施例中不再赘述。下面将结合附图,对本申请的实施例进行描述。

图2示出了本申请提供的一种神经网络模型中的数据计算方法的流程示意图,该方法应用于神经网络模型中的至少一个数据处理层的数据计算,数据计算通过图像处理器gpu的线程组进行,如图2所示,该方法可以包括步骤s110至步骤s140,其中:

步骤s110,将线程组进行数据计算所需的数据处理层的权重数据,读取到线程组的组共享groupshared变量中。

其中,数据处理层用于对输入数据进行处理,神经网络模型中可以包括至少一层数据处理层,本申请的数据处理层是指神经网络模型的隐藏层,如包括但不限于卷积层、缩放层等等。可以理解的是,对于不同的神经网络模型结构,数据处理层的形式也很可能不同。

在gpu中,通常存在普通的gpu内存和一个线程组内可以访问的共享内存,如图3所示,在一个线程组中,访问共享内存的速度比访问普通内存(图3中所示的gpu内存)的速度快很多,所以,可以将线程组中的线程都能用到的权重数据(线程组进行数据计算所需的数据处理层的权重数据)保存到共享内存中,可以提高计算效率。在本申请的可选方案中,通常gpu中的共享内存基于组共享groupshared变量实现。

步骤s120,基于线程组的线程数对数据处理层的输入数据进行划分。

其中,一个线程组可以通过三个维度表示,比如,一个线程组为6*6*8,表示这个线程组内一共有288个线程,该线程组的宽为6,高为6,深度为8。

本申请中的线程组可以为一组线程组,也可以为多个线程组,每个线程组中的线程数可以相同,也可以不同,对于每个线程组,可以采用相同的划分方式对输入数据进行划分,也可以采用不同的划分方式对输入数据进行划分。

步骤s130,对于划分后的每一组输入数据,从groupshared变量中读取该组输入数据进行一次数据处理所对应权重数据。

其中,在划分输入数据后,每一组输入数据进行一次数据处理所需要的权重数据可以从groupshared变量中存储的权重数据中读取,各组输入数据进行一次数据处理所对应的权重数据的均可从groupshared变量中所存储的权重数据中读取。可以理解的是,在对数据处理层的输入数据进行数据处理时,为了得到数据处理层的输入数据对应的计算结果,可能需要基于线程组进行至少一次的数据处理。

步骤s140,线程组中的线程基于每一组输入数据以及该组输入数据进行一次数据处理对应的权重数据进行数据计算,得到该组输入数据对应的计算结果。

其中,在确定每一组输入数据以及该组输入数据对应的权重数据之后,线程组中的线程,即每一组输入数据对应的线程可以对该组输入数据进行数据计算,得到该组输入数据对应的计算结果,其他各组输入域数据都可以基于此种方式计算得到对应的计算结果。

本申请实施例所提供的神经网络模型中的数据计算方法,可将线程组进行数据计算所需的数据处理层的权重数据,读取到线程组的组共享groupshared变量中,基于线程组的线程数对数据处理层的输入数据进行划分,对于同一个线程组内的线程,每个线程在进行一次数据处理时所需要的权重数据是相同的,则对于划分后的每一组输入数据,可以从groupshared变量中读取该组输入数据进行一次数据处理所对应权重数据,因此,对于同一线程组对应的输入数据,不需要每个输入数据都读取一次对应的权重数据,可减少权重数据的读取次数,从而线程组中的线程基于每一组输入数据以及该组输入数据进行一次数据处理对应的权重数据进行数据计算,得到该组输入数据对应的计算结果时,可提高计算效率。

本申请的可选方案中,该方法还包括:

将每一组输入数据对应的计算结果存储到groupshared变量中。

其中,在计算得到每一组输入数据对应的计算结果之后,可以将每一组输入数据对应的计算结果也保存在groupshared变量中,可以基于各组输入数据对应的计算结果,得到数据处理层的输入数据对应的计算结果。

本申请的可选方案中,在得到各组输入数据对应的计算结果之后,该方法还可以包括:

基于各组输入数据对应的计算结果中对应于同一输出位置的计算结果,得到该同一输出位置的输出数据。

其中,输入数据中包括各位置的输入数据,在对输入数据进行计算得到对应的计算结果中也可包括各个输出位置对应的计算结果(输出数据),则可基于各组输入数据对应的计算结果中对应于同一输出位置的计算结果,得到该同一位置对应的输出数据。

本申请的可选方案中,数据处理层包括卷积层,基于各组输入数据对应的计算结果中对应同一输出位置的计算结果,得到该同一输出位置的输出数据,可以包括:

将各组输入数据对应的计算结果中对应同一输出位置的计算结果相加,并加上卷积层的卷积偏移,得到该同一输出位置的输出数据。

其中,对于卷积层,每个输出位置的输出数据的计算方式为,将各组输入数据对应的计算结果中对应同一输出位置的计算结果相加,并加上卷积层的卷积偏移。卷积偏移也称卷积偏置。同样的,基于上述方式,可以计算得到各个输出位置对应的输出数据。

本申请的可选方案中,步骤s120中,基于线程组的线程数对数据处理层的输入数据进行划分,可以包括:

基于线程组的深度维的线程数对数据处理层的输入数据进行划分;

其中,划分后的每一组输入数据进行一次数据处理所对应权重数据的数据量为:

kw*kh*c/tz

其中,tz为线程组的深度维的线程数,kw为卷积核的宽,kh为卷积核的高,c为卷积层的输入通道数,c/tz表示进行一次数据处理时每个线程对应处理的卷积的输入通道数。

具体的,如果一个线程组包括三个维度分别为tx*ty*tz个线程,在深度维的线程数为tz,如果数据处理层的输入数据的宽为w,高为h,深为c,则基于线程组的深度维的线程数对数据处理层的输入数据进行划分后,得到tz组输入数据,该线程组中每个线程计算c/tz个卷积对应的计算结果,则每个线程需要进行tz次计算得到一个输出平面上同一输出位置的计算结果。由于卷积的每个输出平面(输出通道)对应的计算结果需要的权重数据是相同的,每个输出平面对应的是各组输入数据的计算结果,则对于每组输入数据,进行一次数据处理时需要获取的权重数据的数据量为kw*kh*c/tz,如果需要计算一个输出平面上tx*ty个输出位置的计算结果,则需要读取的权重数据的数据量为:kw*kh*c。如果有m个输出通道,m为不小于2的整数,则需要读取的权重数据的数据量为:kw*kh*c*m。

如果采用现有技术中的方式获取权重数据,基于线程组中的线程计算每个输入数据的计算结果时,每个输入数据对应获取一次权重数据,则输入数据进行一次数据处理所对应权重数据的数据量为:

tx*ty*tz*kw*kh*c/tz

由此可见,通过本申请的方案可比现有技术中的方案减少tx*ty次权重数据的获取。

作为一个示例,假设卷积层的输入数据的宽w为16,高h为16,深c为20,即输入数据的大小是16*16*20,卷积层的输出通道数是40,卷积核的大小kw*kh是3*3,那么这个卷积层的需要获取的权重数据的数据量是3*3*20*40,计算输出一个输出位置的计算结果需要的权重数据的数据量是3*3*20。即每个线程组需要的权重数据的数据量是kw*kh*c。tx*ty*tz

基于本申请的方法,假设线程组的宽tx为4,高ty为4,深tz为5,通过这个线程组计算4*4个输出位置的计算结果,将数据处理层的输入数据按照线程组的深度维进行划分,由于每个输出平面(输出通道)的计算结果所需要的权重数据是一样的,则对于一个输出通道,这个线程组上需要读取的权重数据的数据量是3*3*20,划分后的每组输入数据进行一次数据处理(卷积)所需要的权重数据的数据量是3*3*20/5,每个线程需要计算5次,才可得到4*4个输出位置的计算结果。

读入权重数据以后,对每个线程组按深度维tz进行分工,4*4*5的组里面的一个线程需要计算的乘法次数是(20/5)*3*3=36,相当于把线程组按深度维进行分工,最后再将每个维度对应的计算结果加起来,也就是5个线程计算一个输出位置的计算结果,则4*4*5个线程所以计算输出是的一个输出平面上4*4个输出位置的计算结果。

基于本申请上述各实施例提供的神经网络模型中的数据计算方法,本申请实施例还提供了一种图像处理方法,如图4中所示的图像处理方法,该方法包括步骤s210和步骤s220,其中,

步骤s210,获取待处理图像;

步骤s220,通过神经网络模型对待处理图像进行处理,得到对应的图像处理结果;

其中,神经网络模型包括数据处理层,神经网络模型的至少一个数据处理层采用本申请上述任一可选实施例中所提供的神经网络模型中的数据计算方法进行相应的数据处理。

也就是说,本申请实施例所提供的神经网络模型中的数据计算方法具体可以应用于神经网络模型中,神经网络模型中的一个或多个数据处理层可以采用该神经网络模型中的数据计算方法实现对图像或特征图的上采样处理,具体的,可以采用图2中所示的神经网络模型中的数据计算方法或者基于图2所示方法的其他可选神经网络模型中的数据计算方法进行反卷积层的运算。

另外,对于本领域技术人员而言清楚的是,在实际应用中,对于不同的图像处理需求,上述神经网络模型可以不同,相应的图像处理结果也会不同。

本申请的可选方案中,神经网络模型包括目标对象识别模型、图像分割模型或图像分类模型。

在图像处理领域,通常需要首先基于待处理图像进行图像特征的提取,再基于所提取的特征进行进一步处理,在进行特征提取时,所提取得到的特征图通常会小于待处理图像的大小,在基于特征图完成进一步的处理后,为了得到与待处理图像大小一致的图像,需要对进一步处理后的特征图或图像进行上采样处理,而在神经网络模型中则通常都是采用数据处理层(比如,卷积层)来实现的,因此,可以将本申请实施例所提供的神经网络模型中的数据计算方法应用在各类型的具有数据处理层的神经网络模型中,以提高图像处理效率,减少对电子设备的资源消耗。

例如,为了识别待处理图像中的目标对象,可以通过目标对象识别模型实现,目标对象识别模型中可以通过数据处理层实现对待处理图像或者对基于待处理图像提取得到的特征图进行上采样处理,实现对待处理图像中目标对象的识别。

再例如,为了将待处理图像中的目标对象分割出来,比如,待处理图像中的目标对象为人的手部,则通过图像分割模型可将该人的手部区域从待处理图像中分割出来。图像分割模型中可以通过数据处理层实现对待处理图像或者对基于待处理图像提取得到的特征图进行上采样处理,实现对待处理图像中目标对象的分割。

再例如,为了将待处理图像中的各对象进行分类,通过图像分类模型可将待处理图像中包括的各对象进行分类。图像分类模型中可以通过数据处理层实现对待处理图像或者对基于待处理图像提取得到的特征图进行上采样处理,实现对待处理图像中各对象的分类。

通过本申请的方案,在通过神经网络模型中的数据处理层实现对待处理图像或者对基于待处理图像提取得到的特征图进行上采样等处理时,可减少权重数据的读取次数,从而可提高数据处理效率。

作为一个示例,如图5a和图5b中所示的手部区域识别应用场景,待处理图像中的目标对象为人的手部区域,利用本申请的图像分割模型自动将图5a中的手部所在区域分割出来,并对分割出来的手部区域进行标注,得到图5b中所示的分割结果(图5b中所示的粗线框标注的区域)。该图像分割模型中可以通过数据处理层实现对待处理图像或者对基于待处理图像提取得到的特征图进行上采样处理,实现对待处理图像中手部区域的分割。通过本申请的方案,在通过数据处理层实现对待处理图像或者对基于待处理图像提取得到的特征图进行上采样处理时,可减少权重数据的读取次数,从而可提高数据处理效率。

作为另一个示例,如图5c和图5d中所示的手部区域识别应用场景,待处理图像中的目标对象为人的手部,利用本申请的目标对象识别模型可将图5c中的手势区域中的手部的关节点识别后,进行标注,基于各标注的关节点,形成图5d中所示的手势骨架(图5d中所示的圆点标注的区域),该手势骨架即为识别出的目标物体。该目标对象识别模型中可以通过数据处理层实现对待处理图像或者对基于待处理图像提取得到的特征图进行上采样处理,实现从待处理图像中识别出手部区域。通过本申请的方案,在通过数据处理层实现对待处理图像或者对基于待处理图像提取得到的特征图进行上采样处理时,可减少权重数据的读取次数,从而可提高数据处理效率。

作为另一个示例,如图5e和图5f中所示的人脸检测的应用场景,待处理图像中目标对象为人脸,利用本申请的目标对象识别模型可将图5e中的人脸所在区域进行识别,将识别到的人脸区域进行如图5f中的标注(图5f中所示的粗线框标注的区域)。该目标对象识别模型中可以通过数据处理层实现对待处理图像或者对基于待处理图像提取得到的特征图进行上采样处理,实现从待处理图像中识别出人脸区域。通过本申请的方案,在通过数据处理层实现对待处理图像或者对基于待处理图像提取得到的特征图进行上采样处理时,可减少权重数据的读取次数,从而可提高数据处理效率。

由此,基于本申请的数据处理层进行手部区域的识别,以及人脸区域的识别,在对手部区域或人脸区域的数据进行数据处理时,基于本申请的方案,可提高计算效率。

下面结合图6对本申请的方案进行进一步的说明,如图6中所示的基于线程组的深度维的线程数对数据处理层的输入数据进行划分,并基于划分后的每一组输入数据,计算得到同一个输出位置对应的输出数据的方案。

如图6中所示,输入数据的宽为w,高为h,深为c,一个线程组的线程数为tx*ty*tz,tx为线程组中的宽度维,ty为线程组中的高度维,tz为线程组中的深度维。数据处理层为卷积层,卷积层的输出通道数为1,卷积层的输入通道数为c。

1)、将该线程组所需要用到的权重数据(图6中所示的权值数据)读取到groupshared变量中。

2)、基于该线程组的深度维的线程数对数据处理层的输入数据进行划分,得到tz组输入数据,由图6中所示,tz为4,每一组输入数据的宽为3,高为1,每个线程计算c/tz个卷积对应的计算结果,每个线程需要进行tz次计算得到一个输出通道上同一输出位置的计算结果,每个线程在计算时,可从groupshared变量中读取每一组输入数据进行一次数据处理对应的权重数据,并将每一组输入数据进行一次数据处理对应的计算结果保存在groupshared变量中。一个输出通道对应的计算结果需要的权重数据是相同的,则对于每组输入数据,进行一次数据处理时需要获取的权重数据的数据量为kw*kh*c/tz。

3)、线程组中的线程基于每一组输入数据以及该组输入数据对应的权重数据进行数据计算,得到该组输入数据对应的计算结果。对应图6中所示的输入数据与权值读取到一个线程组的各计算单元(线程)进行计算。

具体地,可以将各组输入数据对应的计算结果中对应同一输出位置(同一个x,y坐标)的计算结果相加(对应图6中所示的各计算单元的结果(计算结果)相加得到整个线程组的结果),并加上卷积层的卷积偏移,得到该同一输出位置的输出数据,即同一个输出位置的计算结果(图6中所示的得到输出一个点的值)。

基于上述方式,划分后的每一组输入数据进行一次数据处理所对应权重数据的数据量为:

kw*kh*c/tz

其中,tz为线程组的深度维的线程数,kw为卷积核的宽,kh为卷积核的高,c为卷积层的输入通道数,c/tz表示进行一次数据处理时每个线程对应处理的卷积的输入通道数。

如果采用现有技术中的方式获取权重数据,基于线程组中的线程计算每个输入数据的计算结果时,每个输入数据对应获取一次权重数据,每一组输入数据进行一次数据处理所对应权重数据的数据量为:

tx*ty*tz*kw*kh*c/tz

由此可见,通过本申请的方案可比现有技术中的方案减少tx*ty次权重数据的获取。

可以理解的是,还可以基于该线程组的宽度维或高度维的线程数对数据处理层的输入数据进行划分,同样可以减少权重数据的读取次数。

本申请的方法可以应用到图像处理的应用场景中,比如,图像分割或目标识别。本申请的方法还可以应用在shader进行计算的场景,包括opengl,direct3d,metal等可以使用shader进行计算的接口,均可以使用本算法进行加速计算。

基于本申请的方案,相比一个gpu线程计算一个输出位置的计算结果,本申请的方案在某些硬件条件下可以提高百分之三十到百分之四十的效率,如表1中所示的运行一个神经网络模型(人像分割模型)时,运用现有技术中的方法进行计算,以及采用本申请的方案进行计算在不同显卡上的计算时间:

表1

由表1中的数据可知,基于显卡类型为intelhd530的显卡,运用本申请的方法对输入数据进行数据计算所消耗的时间为18ms,采用现有技术中的方案对输入数据进行数据计算所消耗的时间为32ms,由此,基于本申请的方案对输入数据进行数据计算比基于现有技术中的方法对输入数据进行数据计算所消耗的时间有明显的缩短,性能提升43.8%。基于显卡类型为intelhd630的显卡,运用本申请的方法对输入数据进行数据计算所消耗的时间为15ms,采用现有技术中的方案对输入数据进行数据计算所消耗的时间为25ms,由此,基于本申请的方案对输入数据进行数据计算比基于现有技术中的方法对输入数据进行数据计算所消耗的时间也有明显的缩短,性能提升40%。基于显卡类型为nvidia1050ti的显卡,运用本申请的方法对输入数据进行数据计算所消耗的时间为8ms,采用现有技术中的方案对输入数据进行数据计算所消耗的时间为11ms,由此,基于本申请的方案对输入数据进行数据计算比基于现有技术中的方法对输入数据进行数据计算所消耗的时间也有明显的缩短,性能提升27%。

基于与图2中所示的方法相同的原理,本申请实施例还提供了一种神经网络模型中的数据计算装置30,该装置应用于神经网络模型中的至少一个数据处理层的数据计算,数据计算通过图像处理器gpu的线程组进行,如图7中所示,该神经网络模型中的数据计算装置30可以包括第一权重数据读取模块310、数据划分模块320、第二权重数据读取模块330以及数据计算模块340,其中:

第一权重数据读取模块310,用于将线程组进行数据计算所需的数据处理层的权重数据,读取到线程组的组共享groupshared变量中;

数据划分模块320,用于基于线程组的线程数对数据处理层的输入数据进行划分;

第二权重数据读取模块330,用于对于划分后的每一组输入数据,从groupshared变量中读取该组输入数据进行一次数据处理所对应权重数据;

数据计算模块340,用于线程组中的线程基于每一组输入数据以及该组输入数据进行一次数据处理对应的权重数据进行数据计算,得到该组输入数据对应的计算结果。

本申请实施例所提供的神经网络模型中的数据计算装置,可将线程组进行数据计算所需的数据处理层的权重数据,读取到线程组的组共享groupshared变量中,基于线程组的线程数对数据处理层的输入数据进行划分,对于同一个线程组内的线程,每个线程在进行一次数据处理时所需要的权重数据是相同的,则对于划分后的每一组输入数据,可以从groupshared变量中读取该组输入数据进行一次数据处理所对应权重数据,因此,对于同一线程组对应的输入数据,不需要每个输入数据都读取一次对应的权重数据,可减少权重数据的读取次数,从而线程组中的线程基于每一组输入数据以及该组输入数据进行一次数据处理对应的权重数据进行数据计算,得到该组输入数据对应的计算结果时,可提高计算效率。

可选地,该装置还包括:

存储模块,用于将每一组输入数据对应的计算结果存储到groupshared变量中。

可选地,该装置还包括:

输出数据确定模块,用于在得到各组输入数据对应的计算结果之后,基于各组输入数据对应的计算结果中对应于同一输出位置的计算结果,得到该同一输出位置的输出数据。

可选地,数据处理层包括卷积层,输出数据确定模块在基于各组输入数据对应的计算结果中对应同一输出位置的计算结果,得到该同一输出位置的输出数据时,具体用于:

将各组输入数据对应的计算结果中对应同一输出位置的计算结果相加,并加上卷积层的卷积偏移,得到该同一输出位置的输出数据。

可选地,数据划分模块在基于线程组的线程数对数据处理层的输入数据进行划分时,具体用于:

基于线程组的深度维的线程数对数据处理层的输入数据进行划分;

其中,划分后的每一组输入数据进行一次数据处理所对应权重数据的数据量为:

kw*kh*c/tz

其中,tz为线程组的深度维的线程数,kw为卷积核的宽,kh为卷积核的高,c为卷积层的输入通道数,c/tz表示进行一次数据处理时每个线程对应处理的卷积的输入通道数。

由于本申请实施例所提供的神经网络模型中的数据计算装置为可以执行本申请实施例中的神经网络模型中的数据计算方法的装置,故而基于本申请实施例中所提供的神经网络模型中的数据计算方法,本领域所属技术人员能够了解本申请实施例的神经网络模型中的数据计算装置的具体实施方式以及其各种变化形式,所以在此对于该装置如何实现本申请实施例中的神经网络模型中的数据计算方法不再详细介绍。只要本领域所属技术人员实施本申请实施例中的神经网络模型中的数据计算方法所采用的神经网络模型中的数据计算装置,都属于本申请所欲保护的范围。

基于与本申请实施例所提供的神经网络模型中的数据计算方法和神经网络模型中的数据计算装置相同的原理,本申请实施例还提供了一种电子设备,该电子设备可以包括处理器和存储器。其中,存储器中存储有可读指令,可读指令由处理器加载并执行时,可以实现本申请任一实施例中所示的方法。

基于与图4中所示的方法相同的原理,本申请实施例还提供了一种图像处理装置40,如图8中所示,该图像处理装置40可以包括图像获取模块410和图像处理模块420,其中:

图像获取模块410,用于获取待处理图像;

图像处理模块420,用于通过神经网络模型对待处理图像进行处理,得到对应的图像处理结果;

其中,神经网络模型包括数据处理层,神经网络模型的至少一个数据处理层采用本申请任一可选实施例所提供的神经网络模型中的数据计算方法进行相应的数据处理。

可选地,神经网络模型包括目标对象识别模型、图像分割模型或图像分类模型。

在一个可选实施例中提供了一种电子设备,如图9所示,图9所示的电子设备4000包括:处理器4001和存储器4003。其中,处理器4001和存储器4003相连,如通过总线4002相连。可选地,电子设备4000还可以包括收发器4004。需要说明的是,实际应用中收发器4004不限于一个,该电子设备4000的结构并不构成对本申请实施例的限定。

处理器4001可以是cpu(centralprocessingunit,中央处理器),通用处理器,dsp(digitalsignalprocessor,数据信号处理器),asic(applicationspecificintegratedcircuit,专用集成电路),fpga(fieldprogrammablegatearray,现场可编程门阵列)或者其他可编程逻辑器件、晶体管逻辑器件、硬件部件或者其任意组合。其可以实现或执行结合本申请公开内容所描述的各种示例性的逻辑方框,模块和电路。处理器4001也可以是实现计算功能的组合,例如包含一个或多个微处理器组合,dsp和微处理器的组合等。

总线4002可包括一通路,在上述组件之间传送信息。总线4002可以是pci(peripheralcomponentinterconnect,外设部件互连标准)总线或eisa(extendedindustrystandardarchitecture,扩展工业标准结构)总线等。总线4002可以分为地址总线、数据总线、控制总线等。为便于表示,图9中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。

存储器4003可以是rom(readonlymemory,只读存储器)或可存储静态信息和指令的其他类型的静态存储设备,ram(randomaccessmemory,随机存取存储器)或者可存储信息和指令的其他类型的动态存储设备,也可以是eeprom(electricallyerasableprogrammablereadonlymemory,电可擦可编程只读存储器)、cd-rom(compactdiscreadonlymemory,只读光盘)或其他光盘存储、光碟存储(包括压缩光碟、激光碟、光碟、数字通用光碟、蓝光光碟等)、磁盘存储介质或者其他磁存储设备、或者能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由计算机存取的任何其他介质,但不限于此。

存储器4003用于存储执行本申请方案的应用程序代码,并由处理器4001来控制执行。处理器4001用于执行存储器4003中存储的应用程序代码,以实现前述任一方法实施例所示的内容。

应该理解的是,虽然附图的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,其可以以其他的顺序执行。而且,附图的流程图中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,其执行顺序也不必然是依次进行,而是可以与其他步骤或者其他步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。

以上仅是本申请的部分实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本申请原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本申请的保护范围。

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