CN116703727A - 一种神经网络中图像缩放优化方法与装置 - Google Patents
一种神经网络中图像缩放优化方法与装置 Download PDFInfo
- Publication number
- CN116703727A CN116703727A CN202310967053.XA CN202310967053A CN116703727A CN 116703727 A CN116703727 A CN 116703727A CN 202310967053 A CN202310967053 A CN 202310967053A CN 116703727 A CN116703727 A CN 116703727A
- Authority
- CN
- China
- Prior art keywords
- scaling
- operator
- data shape
- scale
- convolution
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 42
- 238000013528 artificial neural network Methods 0.000 title claims abstract description 36
- 238000005457 optimization Methods 0.000 title claims abstract description 21
- 238000011176 pooling Methods 0.000 claims abstract description 39
- 238000004364 calculation method Methods 0.000 claims description 31
- 238000003062 neural network model Methods 0.000 claims description 3
- 238000006243 chemical reaction Methods 0.000 abstract description 5
- 238000013473 artificial intelligence Methods 0.000 description 37
- 230000001133 acceleration Effects 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 230000004913 activation Effects 0.000 description 1
- 238000013527 convolutional neural network Methods 0.000 description 1
- 238000010295 mobile communication Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012545 processing Methods 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T3/00—Geometric image transformations in the plane of the image
- G06T3/40—Scaling of whole images or parts thereof, e.g. expanding or contracting
- G06T3/4084—Scaling of whole images or parts thereof, e.g. expanding or contracting in the transform domain, e.g. fast Fourier transform [FFT] domain scaling
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/0464—Convolutional networks [CNN, ConvNet]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T3/00—Geometric image transformations in the plane of the image
- G06T3/40—Scaling of whole images or parts thereof, e.g. expanding or contracting
- G06T3/4007—Scaling of whole images or parts thereof, e.g. expanding or contracting based on interpolation, e.g. bilinear interpolation
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Biophysics (AREA)
- Evolutionary Computation (AREA)
- Artificial Intelligence (AREA)
- Biomedical Technology (AREA)
- Health & Medical Sciences (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Life Sciences & Earth Sciences (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Image Processing (AREA)
Abstract
本发明提供一种神经网络中图像缩放优化方法与装置,通过遍历神经网络中所有的节点,获取所有的缩放算子,并根据缩放算子的缩放状态,即缩放算子对于图像是放大还是缩小,当缩放算子对于图像放大时,将缩放算子转换为池化算子,当缩放算子相对于图像缩小时,将缩放算子转换为卷积算子,由于卷积算子和池化算子能够在AI芯片上实现部署与推理,因此通过缩放算子的转换,实现部分神经网络上的节点于AI芯片上的部署与推理。
Description
技术领域
本发明涉及神经网络领域,特别是涉及一种神经网络中图像缩放优化方法与装置。
背景技术
现有技术中,目前AI(Artificial Intelligence,人工智能)芯片上都是固定的卷积加速模块,可用于其他运算的算子模块较少。但由于当前神经网络不再是固定的“卷积+激活函数+池化”模块,往往会包含一些其他算子作为运算方法,神经网络中包含这些不常见算子,导致其在AI芯片上无法部署和推理,而用于进行图像缩放的缩放算子就是其中一种,该算子无法直接在AI芯片上无法部署和推理。
鉴于此,克服该现有技术所存在的缺陷是本技术领域亟待解决的问题。
发明内容
本发明要解决的技术问题是神经网络上的缩放算子无法在AI芯片上进行部署与推理。
本发明实施例采用如下技术方案:
第一方面,一种神经网络中图像缩放优化方法,包括:
遍历神经网络模型中所有的节点,获取其中的缩放算子;
将获取到的所述缩放算子的输入数据形状和输出数据形状进行对比;
当所述输入数据形状的高大于所述输出数据形状的高,且所述输入数据形状的宽大于所述输出数据形状的宽时,将所述缩放算子转换成池化算子;
当所述输入数据形状的高小于所述输出数据形状的高,且所述输入数据形状的宽小于所述输出数据形状的宽时,根据所述缩放算子的计算类型以及输入数据形状的高和宽的值,将所述缩放算子转换成相应的卷积算子。
优选的,所述当所述输入数据形状的高大于所述输出数据形状的高,且所述输入数据形状的宽大于所述输出数据形状的宽时,将所述缩放算子转换成池化算子,具体包括:
判断所述缩放算子是否对齐到原始数据的边角元素,根据判断结果得到缩放算子的宽和高的缩放尺度;
创建池化算子,根据所述缩放尺度设定所述池化算子的属性值;
将所述池化算子的输入输出设置为所述缩放算子的输入输出,将所述缩放算子删除,并将所述池化算子替换所述缩放算子。
优选的,所述判断所述缩放算子是否对齐到原始数据的边角元素,根据判断结果得到缩放算子的宽和高的缩放尺度,具体包括:
当所述缩放算子对齐到原始数据的边角元素时,所述缩放算子的宽和高的缩放尺度的计算公式为:
h scale=(in_h-1)/(out_h-1);
w scale=(in_w-1)/(out_w-1);
当所述缩放算子未对齐到原始数据的边角元素时,所述缩放算子的宽和高的缩放尺度的计算公式为:
h scale=in_h/out_h;
w scale=in_w/out_w;
其中,h scale为缩放算子的高的缩放尺度,w scale为缩放算子的宽的缩放尺度,in_h为缩放算子输入数据形状的高,in_w为缩放算子输入数据形状的宽,out_h为缩放算子输出数据形状的高,out_w为缩放算子输出数据形状的宽。
优选的,所述根据所述缩放算子的计算类型以及输入数据形状的高和宽的值,将所述缩放算子转换成相应的卷积算子,具体包括:
当所述缩放算子的计算类型为最邻近插值或者双线性插值,并且输入数据形状的高和输入数据形状的宽均为1时,创建卷积算子以及卷积核并设定卷积核参数,将所述卷积核插入至AI模型中,并将所述缩放算子替换为相应的卷积算子;
当所述缩放算子的计算类型为双线性插值,并且输入数据形状的高或输入数据形状的宽不为1时,获取缩放算子的宽和高的缩放尺度,创建卷积算子以及卷积核,根据所述缩放尺度进行遍历,获取相应的卷积核参数,将所述卷积核插入至AI模型中,并将所述缩放算子替换为相应的卷积算子。
优选的,所述当所述缩放算子的计算类型为最邻近插值或者双线性插值,并且输入数据形状的高和输入数据形状的宽均为1时,创建卷积算子以及卷积核并设定卷积核参数,将所述卷积核插入至AI模型中,并将所述缩放算子替换为相应的卷积算子,具体包括:
获取所述缩放算子的宽和高的缩放尺度;
创建卷积算子,根据所述缩放尺度设定所述卷积算子的属性值;
获取所述缩放算子的通道数P1,新建卷积核,根据所述缩放算子的通道数P1以及所述缩放算子的宽和高的缩放尺度,确定所述卷积核的形状;
将所述卷积核的形状中的参数进行初始化,获取卷积核参数;
将所述卷积核参数插入至AI模型中,将所述缩放算子删除,将所述卷积算子替换所述缩放算子,并将进行替换的卷积算子的kernel输入设定为所述卷积核参数。
优选的,所述获取所述缩放算子的宽和高的缩放尺度,具体包括:
所述缩放算子的宽和高的缩放尺度的计算公式为:
h scale=in_h/out_h;
w scale=in_w/out_w;
其中,h scale为缩放算子的高的缩放尺度,w scale为缩放算子的宽的缩放尺度,in_h为缩放算子输入数据形状的高,in_w为缩放算子输入数据形状的宽,out_h为缩放算子输出数据形状的高,out_w为缩放算子输出数据形状的宽。
优选的,所述当所述缩放算子的计算类型为双线性插值,并且输入数据形状的高或输入数据形状的宽不为1时,获取缩放算子的宽和高的缩放尺度,创建卷积算子,根据所述缩放尺度进行遍历,获取相应的卷积核参数,将所述卷积核参数插入至AI模型中,并将所述缩放算子替换为相应的卷积算子,具体包括:
判断所述缩放算子是否对齐到原始数据的边角元素,根据判断结果得到缩放算子的宽和高的缩放尺度;
获取所述缩放算子的通道数P2,创建卷积算子,根据所述缩放尺度和所述通道数P2设定所述卷积算子的属性值;
新建卷积核,根据所述缩放算子的通道数P以及所述缩放算子的宽和高的缩放尺度,确定所述卷积核的形状,分别遍历小于通道数P、小于缩放算子的宽的缩放尺度以及小于缩放算子的高的缩放尺度的数值,得到所述卷积核的形状的参数,获取卷积核参数;
将所述卷积核参数插入至AI模型中,将所述缩放算子删除,并将所述卷积算子替换所述缩放算子,并将所述卷积算子的kernel输入设定为所述卷积核参数。
优选的,所述分别遍历小于通道数P、小于缩放算子的宽的缩放尺度以及小于缩放算子的高的缩放尺度的数值,得到所述卷积核的形状的参数,具体包括:
依据遍历得到的结果,计算得到缩放因子、中间变量和索引中间值,依据所述缩放因子、中间变量和索引中间值计算得到所述卷积核的形状的参数。
优选的,当所述输入数据形状的高等于所述输出数据形状的高,且所述输入数据形状的宽等于所述输出数据形状的宽时,将所述缩放算子于AI模型中删除。
第二方面,一种神经网络中图像缩放优化装置,包括至少一个处理器,以及,与所述至少一个处理器通信连接的存储器;其中,所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述处理器执行,用于执行所述的神经网络中图像缩放优化方法。
本发明实施例提供一种神经网络中图像缩放优化方法与装置,通过遍历神经网络中所有的节点,获取所有的缩放算子,并根据缩放算子的缩放状态,即缩放算子对于图像是放大还是缩小,当缩放算子对于图像放大时,将缩放算子转换为池化算子,当缩放算子相对于图像缩小时,将缩放算子转换为卷积算子,由于卷积算子和池化算子能够在AI芯片上实现部署与推理,因此通过缩放算子的转换,实现部分神经网络上的节点于AI芯片上的部署与推理。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对本发明实施例中所需要使用的附图作简单地介绍。显而易见地,下面所描述的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例提供的一种神经网络中图像缩放优化方法的方法流程图;
图2是本发明实施例提供的一种神经网络中图像缩放优化方法中缩放算子转换为池化算子的方法流程图;
图3是本发明实施例提供的一种神经网络中图像缩放优化方法中缩放算子转换为卷积算子的方法流程图;
图4是本发明实施例提供的另一种神经网络中图像缩放优化方法中缩放算子转换为卷积算子的方法流程图;
图5是本发明实施例提供的另一种神经网络中图像缩放优化方法的方法流程图;
图6是本发明实施例提供的一种神经网络中图像缩放优化装置的装置示意图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
在本发明的描述中,术语“内”、“外”、“纵向”、“横向”、“上”、“下”、“顶”、“底”等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本发明而不是要求本发明必须以特定的方位构造和操作,因此不应当理解为对本发明的限制。
此外,下面所描述的本发明各个实施方式中所涉及到的技术特征只要彼此之间未构成冲突就可以相互组合。
本发明实施例提供了一种神经网络中图像缩放优化方法,如图1所示,方法流程包括:
步骤101中,遍历神经网络模型中所有的节点,获取其中的缩放算子。
由于目前将AI模型部署至AI芯片或者GPU(Graphics Processing Unit,图形处理器)芯片,基本都是采用json(轻量级数据交换格式)文件格式或者相类似的格式文件对AI模型进行描述,所述AI模型是一种图结构,所述AI模型以及其附属的参数解析后,可以送至GPU芯片或者AI芯片直接推理,也可以送至其对应的优化工具进行二次优化和编译后再进行推理;而所述缩放算子主要用于对图像进行缩放,在json或者相类似的文件中采用如下语句进行描述:
Resize Node: {“op”: Resize,
“name”: “resize_node ”;
“attrs”:{
“input_shape”: [in_N, in_C, in_H, in_W],
“output_shape”: [out_N, out_C, out_H, out_W],
“method”:“NEAREST_NEIGHBOR”,
“align_corners”: false
}
“inputs”: [“resize_input”]
“outputs”:[“resize_output”]
}
其中,所述缩放算子的属性中的method包括双线性插值和最邻近插值。
步骤102中,将获取到的所述缩放算子的输入数据形状和输出数据形状进行对比。
每个所述缩放算子均包括输入数据形状和输出数据形状,每个数据形状(tensorshape)包括高和宽两个属性;需要注意的是,本发明实施例中所述输入数据形状的高采用in_h表示,输出数据形状的高采用out_h表示,输入数据形状的宽采用in_w表示,输出数据形状的宽采用out_w表示。
在一些实施方式中,所述输入数据形状和输出数据形状的对比结果包括:1、in_h大于out_h且in_w大于out_w;2、in_h小于out_h且in_w小于out_w;3、in_h大于out_h且in_w小于out_w;4、in_h小于out_h且in_w大于out_w;5、in_h等于out_h且in_w等于out_w。
需要注意的是,本发明实施例仅讨论in_h大于out_h且in_w大于out_w、in_h小于out_h且in_w小于out_w以及in_h等于out_h且in_w等于out_w的情况,其他情况本发明实施例并不考虑。
步骤103中,当所述输入数据形状的高大于所述输出数据形状的高,且所述输入数据形状的宽大于所述输出数据形状的宽时,将所述缩放算子转换成池化算子。
在一些实施方式中,所述输入数据形状的高大于所述输出数据形状的高,且所述输入数据形状的宽大于所述输出数据形状的宽即为:in_h大于out_h且in_w大于out_w;需要注意的是,所述池化算子的功能为特征提取、压缩以及从原始数据中采样,例如对于输入数据形状的高为10,输入数据形状的宽为10,经过缩放后,输出数据形状的高为5,输出数据形状的宽为5。在通常情况下,AI推算不太可能出现数据形状的高缩小同时数据形状的宽放大,或者数据形状的高放大同时数据的宽缩小的情况,数据形状的高和宽同步进行缩放才符合AI应用的常识,因此上述情况在本发明实施例中不进行讨论。
其中,由于缩放算子无法在AI芯片上进行部署与推理,而池化算子作为神经网络中常见的算子,支持在AI芯片上进行部署与推理,因此在本发明实施例中将满足上述条件的缩放算子转换为相应的池化算子,从而实现缩放算子在AI芯片上的部署与推理。
所述池化算子在json或者相类似的文件中采用如下语句进行描述:
Pooling Node:{
“op”:Pooling,
“name”: “pooling_node”,
“attrs”{
“strides”:[x, y],
“pads”:[0, 0],
“kernel_size”:[a, b],
“global_pooling”:false;
“Method”: “MAX”
},
“inputs”:[“input1”]
“output”:[“pooling_output”]
}
步骤104中,当所述输入数据形状的高小于所述输出数据形状的高,且所述输入数据形状的宽小于所述输出数据形状的宽时,根据所述缩放算子的计算类型以及输入数据形状的高和宽的值,将所述缩放算子转换成相应的卷积算子。
在一些实施方式中,所述输入数据形状的高小于所述输出数据形状的高,且所述输入数据形状的宽小于所述输出数据形状的宽即为:in_h小于out_h且in_w小于out_w。
所述缩放算子的计算类型包括最邻近插值和双线性插值,在本发明实施例中根据缩放算子的计算类型的不同,以及根据缩放算子的数据形状的高和宽的值,采用不同的方式进行缩放算子的转换。
其中,由于缩放算子无法在AI芯片上进行部署与推理,而卷积算子作为神经网络中常见的算子,支持在AI芯片上进行部署与推理,因此在本发明实施例中将满足上述条件的缩放算子转换为相应的卷积算子,从而实现在AI芯片上的部署与推理。
所述卷积算子在json或者相类似的文件中采用如下语句进行描述:
Conv2d Node:{“op”: Conv2d,
“name”: “conv2d”,
“attrs”{
“transpose”:false,
“group”:1,
“strides”:[x, y],
“pads”:[0, 0],
“kernel_size”:[a, b],
“kernel_shape”:[m,n,a,b],
“use_bias”:0,
},
“inputs”:[“inputs”, “initial_kernels”]
“output”: [“conv_output”]
}
当输入数据形状的高等于所述输出数据形状的高,且所述输入数据形状的宽等于所述输出数据形状的宽时,则代表缩放算子并未对图像进行缩放,这种缩放算子在本发明实施例中不用进行转换,将该缩放算子在AI模型中进行删除。
在一些实施方式中,通过遍历神经网络中所有的节点,获取所有的缩放算子,并根据缩放算子的缩放状态,即缩放算子对于图像是放大还是缩小,对所述缩放算子进行转化,当缩放算子对于图像是放大时,将缩放算子转换为池化算子,当缩放算子对于图像是缩小时,将缩放算子转换为卷积算子,由于卷积算子和池化算子能够在AI芯片上实现部署与推理,因此通过对缩放算子的转换,实现部分神经网络上的节点于AI芯片上的部署与推理。
由于根据缩放算子的缩放状态,不同状态的缩放算子只能对应转换为相应的其他算子,当in_h大于out_h且in_w大于out_w时,缩放算子对应转换为池化算子,因此本发明实施例具有以下设计:
所述当所述输入数据形状的高大于所述输出数据形状的高,且所述输入数据形状的宽大于所述输出数据形状的宽时,将所述缩放算子转换成池化算子,如图2所示,方法流程包括:
步骤201中,判断所述缩放算子是否对齐到原始数据的边角元素,根据判断结果得到缩放算子的宽和高的缩放尺度。
其中,判断所述缩放算子是否对齐到原始数据的边角元素即为判断缩放算子的align_corners属性,当缩放算子对齐到原始数据的边角元素时,align_corners属性为true,当缩放算子未对齐到原始数据的边角元素时,align_corners属性为false。
在一些实施方式中,当所述缩放算子的align_corners属性为true时,所述缩放算子的宽和高的缩放尺度的计算公式分别为:
h scale=(in_h-1)/(out_h-1);
w scale=(in_w-1)/(out_w-1);
在一些实施方式中,当所述缩放算子的align_corners属性为false时,所述缩放算子的宽和高的缩放尺度的计算公式分别为:
h scale=in_h/out_h;
w scale=in_w/out_w;
其中,h scale表示缩放算子的高的缩放尺度,w scale表示缩放算子的宽的缩放尺度,in_h表示缩放算子输入数据形状的高,in_w表示缩放算子输入数据形状的宽,out_h表示缩放算子输出数据形状的高,out_w表示缩放算子输出数据形状的宽。
步骤202中,创建池化算子,根据所述缩放尺度设定所述池化算子的属性值。
在一些实施方式中,对创建的池化算子的各项属性进行设定如下:
Pooling node的kernel_size设置为{1,1};
Pooling node的stride设置为{h scale,w scale};
Pooling node的pad设置为{0};
Pooling node的global_pooling属性设置为false;
Pooling node的method设置为MAX。
其中,Pooling node即为池化算子。
步骤203中,将所述池化算子的输入输出设置为所述缩放算子的输入输出,将所述缩放算子从AI模型中删除,并使用所述池化算子替换所述缩放算子。
在一些实施方式中,当所述输入数据形状的高小于所述输出数据形状的高,且所述输入数据形状的宽小于所述输出数据形状的宽时,还需要根据缩放算子的计算类型,以及输入数据形状的高和输入数据形状的宽的值,来选择不同方法对缩放算子进行转换,因此本发明实施例还具有以下设计:
所述根据所述缩放算子的计算类型以及输入数据形状的高和宽的值,将所述缩放算子转换成相应的卷积算子,具体包括:
当所述缩放算子的计算类型为最邻近插值或者双线性插值,并且输入数据形状的高和输入数据形状的宽均为1时,创建卷积算子以及卷积核并设定卷积核参数,将所述卷积核插入至AI模型中,并将所述缩放算子替换为相应的卷积算子,如图3所示,方法流程如下:
步骤301中,获取所述缩放算子的宽和高的缩放尺度。
在一些实施方式中,所述缩放算子的宽和高的缩放尺度的计算公式为:
h scale=in_h/out_h;
w scale=in_w/out_w;
其中,h scale表示缩放算子的高的缩放尺度,w scale表示缩放算子的宽的缩放尺度,in_h表示缩放算子输入数据形状的高,in_w表示缩放算子输入数据形状的宽,out_h表示缩放算子输出数据形状的高,out_w表示缩放算子输出数据形状的宽。
需要注意的是,在不同的应用场景下,也可以依据缩放算子是否对齐到原始数据的边角元素,来判断结果得到缩放算子的宽和高的尺寸,本发明对此不做限制。
步骤302中,创建卷积算子,根据所述缩放尺度设定所述卷积算子的属性值。
在一些实施方式中,对创建的卷积算子的各项属性进行设定如下:
transpose设置为true;
dilation设置为{1,1};
kernel_size初始化为{h scale, w scale};
stride初始化为{h scale,w scale};
pad设置为 [0, 0];
use_bias设置为 false。
步骤303中,获取所述缩放算子的通道数P1,新建卷积核,根据所述缩放算子的通道数P1以及所述缩放算子的宽和高的缩放尺度,确定所述卷积核的形状。
在本发明实施例中,将所述卷积核的形状初始化为{p1,1,h scale,w scale}。
步骤304中,将所述卷积核的形状中的参数进行初始化,获取设定完毕的卷积核参数。
在本发明实施例中,将所述卷积核的形状的所有参数值{p1,1,h scale,w scale}均设定为1。
步骤305中,将所述设定完毕的卷积核参数插入至AI模型中,将所述缩放算子删除,使用所述卷积算子替换所述缩放算子,并将所述卷积算子的kernel输入设定为所述设定完毕的卷积核参数。
相应地,除开缩放算子为最邻近插值或者双线性插值,并且输入数据形状的高和输入数据形状的宽均为1的条件时,本发明实施例只讨论当缩放算子为双线性插值时,并且输入数据形状的高和输入数据形状的宽并不均为1时的情况,其他情况本发明实施例不讨论。
在一些实施方式中,当所述缩放算子的计算类型为双线性插值,并且输入数据形状的高或输入数据形状的宽不为1时,获取缩放算子的宽和高的缩放尺度,创建卷积算子,根据所述缩放尺度进行遍历,获取相应的卷积核参数,将所述卷积核参数插入至AI模型中,并将所述缩放算子替换为相应的卷积算子;如图4所示,方法流程如下:
步骤401中,判断所述缩放算子是否对齐到原始数据的边角元素,根据判断结果得到缩放算子的宽和高的缩放尺度。
在一些实施方式中,当所述缩放算子的align_corners属性为true时,所述缩放算子的宽和高的缩放尺度的计算公式为:
h scale=(in_h-1)/(out_h-1);
w scale=(in_w-1)/(out_w-1);
在一些实施方式中,当所述缩放算子的align_corners属性为false时,所述缩放算子的宽和高的缩放尺度的计算公式为:
h scale=in_h/out_h;
w scale=in_w/out_w;
其中,h scale表示缩放算子的高的缩放尺度,w scale表示缩放算子的宽的缩放尺度,in_h表示缩放算子输入数据形状的高,in_w表示缩放算子输入数据形状的宽,out_h表示缩放算子输出数据形状的高,out_w表示缩放算子输出数据形状的宽。
步骤402中,获取所述缩放算子的通道数P2,创建卷积算子,根据所述缩放尺度和所述通道数P2设定所述卷积算子的属性值。
在一些实施方式中,对创建的卷积算子的各项属性进行设定如下:
transpose设置为true;
kernel_size设置为{2 * hscale,2*wscale};
bias设置为false;
stride设置为{hscale, wscale};
group设置为p2。
步骤403中,新建卷积核,根据所述缩放算子的通道数P以及所述缩放算子的宽和高的缩放尺度,确定所述卷积核的形状,分别遍历小于通道数P、小于缩放算子的宽的缩放尺度以及小于缩放算子的高的缩放尺度的数值,得到所述卷积核的形状的参数,获取设定完毕的卷积核参数。
在一些实施方式中,新建卷积核,将所述卷积核的形状初始化为{p2,1,2*hscale,2*w scale},具体地,采用value(m,n,a,b)表示卷积核的形状的每一个参数,可以理解为{p2,1,2*h scale,2*w scale}为四维数据,采用(f,0,i,j)表示{p2,1,2*h scale,2*wscale}的索引变量,从0开始,用f遍历所有小于p2的整数值,用i遍历所有小于h scale的整数值,用j遍历所有小于w scale的整数值,每次计算4个点参数值,如下:
先计算x,y轴的中间缩放因子(x_factor, y_factor):
x_factor=1/wscale;
y_factor=1/hscale;
计算中间变量为(x_lerp, y_lerp):
;
;
计算索引中间值:
;
;
计算四个点的参数值:
;
;
;
;
再次遍历参数值中所有点,当a==0,或者b==0时,则:
;
否则:
;
从而得到设定完毕的卷积核参数。
步骤404中,将所述设定完毕的卷积核参数插入至AI模型中,将所述缩放算子删除,并使用所述卷积算子替换所述缩放算子,并将所述卷积算子的kernel输入设定为所述设定完毕的卷积核参数。
综上,如图5所示,当in_h大于out_h且in_w大于out_w时,将缩放算子转换为池化算子。当in_h小于out_h且in_w小于out_w时,判断当所述缩放算子的计算类型为最邻近插值或者双线性插值,并且输入数据形状的高和输入数据形状的宽均为1时,将缩放算子转换为卷积算子;判断当缩放算子不满足为最邻近插值或者双线性插值,并且输入数据形状的高和输入数据形状的宽均为1的条件时,将缩放算子转换为卷积算子。
根据上述的神经网络中图像缩放优化方法,在实际情景下将缩放算子转换为卷积算子,AI代码如下:
初始Resize
Node: {“op”: Resize,
“name”: “resize_node_0 ”;
“attrs”:{
“input_shape”: [1, 30, 20, 20],
“output_shape”: [1, 30, 40, 40],
“method”:“BILINEAR”,
“align_corners”: false
}
“inputs”: [“resize_input_0”]
“outputs”:[“resize_output_0”]
}
按照上述步骤,应该被替换为convolution node,并添加一个blob_desc,其中该convolution node的算子描述如下:
Conv2d Node:{
“op”: Conv2d,
“name”: “resize_node_0”,
“attrs”{
“transpose”:false,
“group”:30,
“strides”:[2, 2],
“pads”:[0, 0],
“kernel_size”:[4, 4],
“kernel_shape”:[30, 1, 4, 4],
“use_bias”:0,
},
“inputs”:[“resize_input_0”, “blob_desc”]
“output”: [“resize_output_0”]
}
进行上述转换后,部分转换后的缩放算子可以在部分卷积神经网络加速芯片上直接进行部署推理。
如图6所示,是本发明实施例的神经网络中图像缩放优化装置示意图。本实施例的神经网络中图像缩放优化装置包括一个或多个处理器61以及存储器62。其中,图6中以一个处理器61为例。
处理器61和存储器62可以通过总线或者其他方式连接,图6中以通过总线连接为例。
存储器62作为一种非易失性计算机可读存储介质,可用于存储非易失性软件程序和非易失性计算机可执行程序,如上述实施例中的神经网络中图像缩放优化方法。处理器61通过运行存储在存储器62中的非易失性软件程序和指令,从而执行神经网络中图像缩放优化方法。
存储器62可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他非易失性固态存储器件。在一些实施例中,存储器62可选包括相对于处理器61远程设置的存储器,这些远程存储器可以通过网络连接至处理器61。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
所述程序指令/模块存储在所述存储器62中,当被所述一个或者多个处理器61执行时,执行上述实施例中的神经网络中图像缩放优化方法,例如,执行以上描述的图1至图5所示的各个步骤。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
Claims (10)
1.一种神经网络中图像缩放优化方法,其特征在于,包括:
遍历神经网络模型中所有的节点,获取其中的缩放算子;
将获取到的所述缩放算子的输入数据形状和输出数据形状进行对比;
当所述输入数据形状的高大于所述输出数据形状的高,且所述输入数据形状的宽大于所述输出数据形状的宽时,将所述缩放算子转换成池化算子;
当所述输入数据形状的高小于所述输出数据形状的高,且所述输入数据形状的宽小于所述输出数据形状的宽时,根据所述缩放算子的计算类型以及输入数据形状的高和宽的值,将所述缩放算子转换成相应的卷积算子。
2.根据权利要求1所述的神经网络中图像缩放优化方法,其特征在于,所述当所述输入数据形状的高大于所述输出数据形状的高,且所述输入数据形状的宽大于所述输出数据形状的宽时,将所述缩放算子转换成池化算子包括:
判断所述缩放算子是否对齐到原始数据的边角元素,根据判断结果得到缩放算子的宽和高的缩放尺度;
创建池化算子,根据所述缩放尺度设定所述池化算子的属性值;
将所述池化算子的输入输出设置为所述缩放算子的输入输出,将所述缩放算子删除,并将所述池化算子替换所述缩放算子。
3.根据权利要求2所述的神经网络中图像缩放优化方法,其特征在于,所述判断所述缩放算子是否对齐到原始数据的边角元素,根据判断结果得到缩放算子的宽和高的缩放尺度包括:
当所述缩放算子对齐到原始数据的边角元素时,所述缩放算子的宽和高的缩放尺度的计算公式为:
h scale=(in_h-1)/(out_h-1);
w scale=(in_w-1)/(out_w-1);
当所述缩放算子未对齐到原始数据的边角元素时,所述缩放算子的宽和高的缩放尺度的计算公式为:
h scale=in_h/out_h;
w scale=in_w/out_w;
其中,h scale表示缩放算子的高的缩放尺度,w scale表示缩放算子的宽的缩放尺度,in_h表示缩放算子输入数据形状的高,in_w表示缩放算子输入数据形状的宽,out_h表示缩放算子输出数据形状的高,out_w表示缩放算子输出数据形状的宽。
4.根据权利要求1所述的神经网络中图像缩放优化方法,其特征在于,所述根据所述缩放算子的计算类型以及输入数据形状的高和宽的值,将所述缩放算子转换成相应的卷积算子包括:
当所述缩放算子的计算类型为最邻近插值或者双线性插值,并且输入数据形状的高和输入数据形状的宽均为1时,创建卷积算子以及卷积核并设定卷积核参数,将所述卷积核插入至AI模型中,并将所述缩放算子替换为相应的卷积算子;
当所述缩放算子的计算类型为双线性插值,并且输入数据形状的高或输入数据形状的宽不为1时,获取缩放算子的宽和高的缩放尺度,创建卷积算子以及卷积核,根据所述缩放尺度进行遍历,获取相应的卷积核参数,将所述卷积核插入至AI模型中,并将所述缩放算子替换为相应的卷积算子。
5.根据权利要求4所述的神经网络中图像缩放优化方法,其特征在于,所述当所述缩放算子的计算类型为最邻近插值或者双线性插值,并且输入数据形状的高和输入数据形状的宽均为1时,创建卷积算子以及卷积核并设定卷积核参数,将所述卷积核插入至AI模型中,并将所述缩放算子替换为相应的卷积算子包括:
获取所述缩放算子的宽和高的缩放尺度;
创建卷积算子,根据所述缩放尺度设定所述卷积算子的属性值;
获取所述缩放算子的通道数P1,新建卷积核,根据所述缩放算子的通道数P1以及所述缩放算子的宽和高的缩放尺度,确定所述卷积核的形状;
将所述卷积核的形状中的参数进行初始化,获取卷积核参数;
将所述卷积核参数插入至AI模型中,将所述缩放算子删除,将所述卷积算子替换所述缩放算子,并将进行替换的卷积算子的kernel输入设定为所述卷积核参数。
6.根据权利要求5所述的神经网络中图像缩放优化方法,其特征在于,所述获取所述缩放算子的宽和高的缩放尺度包括:
所述缩放算子的宽和高的缩放尺度的计算公式为:
h scale=in_h/out_h;
w scale=in_w/out_w;
其中,h scale表示缩放算子的高的缩放尺度,w scale表示缩放算子的宽的缩放尺度,in_h表示缩放算子输入数据形状的高,in_w表示缩放算子输入数据形状的宽,out_h表示缩放算子输出数据形状的高,out_w表示缩放算子输出数据形状的宽。
7.根据权利要求4所述的神经网络中图像缩放优化方法,其特征在于,所述当所述缩放算子的计算类型为双线性插值,并且输入数据形状的高或输入数据形状的宽不为1时,获取缩放算子的宽和高的缩放尺度,创建卷积算子,根据所述缩放尺度进行遍历,获取相应的卷积核参数,将所述卷积核参数插入至AI模型中,并将所述缩放算子替换为相应的卷积算子包括:
判断所述缩放算子是否对齐到原始数据的边角元素,根据判断结果得到缩放算子的宽和高的缩放尺度;
获取所述缩放算子的通道数P2,创建卷积算子,根据所述缩放尺度和所述通道数P2设定所述卷积算子的属性值;
新建卷积核,根据所述缩放算子的通道数P以及所述缩放算子的宽和高的缩放尺度,确定所述卷积核的形状,分别遍历小于通道数P、小于缩放算子的宽的缩放尺度以及小于缩放算子的高的缩放尺度的数值,得到所述卷积核的形状的参数,获取卷积核参数;
将所述卷积核参数插入至AI模型中,将所述缩放算子删除,并将所述卷积算子替换所述缩放算子,并将所述卷积算子的kernel输入设定为所述卷积核参数。
8.根据权利要求7所述的神经网络中图像缩放优化方法,其特征在于,所述分别遍历小于通道数P、小于缩放算子的宽的缩放尺度以及小于缩放算子的高的缩放尺度的数值,得到所述卷积核的形状的参数包括:
依据遍历得到的结果,计算得到缩放因子、中间变量和索引中间值,依据所述缩放因子、中间变量和索引中间值计算得到所述卷积核的形状的参数。
9.根据权利要求1至8中任一项所述的神经网络中图像缩放优化方法,其特征在于,当所述输入数据形状的高等于所述输出数据形状的高,且所述输入数据形状的宽等于所述输出数据形状的宽时,将所述缩放算子于AI模型中删除。
10.一种神经网络中图像缩放优化装置,其特征在于,包括至少一个处理器,以及,与所述至少一个处理器通信连接的存储器;其中,所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述处理器执行,用于执行权利要求1至9中任一项所述的神经网络中图像缩放优化方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310967053.XA CN116703727B (zh) | 2023-08-03 | 2023-08-03 | 一种神经网络中图像缩放优化方法与装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310967053.XA CN116703727B (zh) | 2023-08-03 | 2023-08-03 | 一种神经网络中图像缩放优化方法与装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN116703727A true CN116703727A (zh) | 2023-09-05 |
CN116703727B CN116703727B (zh) | 2024-01-02 |
Family
ID=87839627
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310967053.XA Active CN116703727B (zh) | 2023-08-03 | 2023-08-03 | 一种神经网络中图像缩放优化方法与装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116703727B (zh) |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20190139191A1 (en) * | 2017-11-09 | 2019-05-09 | Boe Technology Group Co., Ltd. | Image processing methods and image processing devices |
CN110969217A (zh) * | 2018-09-28 | 2020-04-07 | 杭州海康威视数字技术股份有限公司 | 基于卷积神经网络进行图像处理的方法和装置 |
CN116109481A (zh) * | 2022-12-02 | 2023-05-12 | 瑞芯微电子股份有限公司 | 缩放方法、芯片、存储介质及电子设备 |
-
2023
- 2023-08-03 CN CN202310967053.XA patent/CN116703727B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20190139191A1 (en) * | 2017-11-09 | 2019-05-09 | Boe Technology Group Co., Ltd. | Image processing methods and image processing devices |
CN110969217A (zh) * | 2018-09-28 | 2020-04-07 | 杭州海康威视数字技术股份有限公司 | 基于卷积神经网络进行图像处理的方法和装置 |
CN116109481A (zh) * | 2022-12-02 | 2023-05-12 | 瑞芯微电子股份有限公司 | 缩放方法、芯片、存储介质及电子设备 |
Non-Patent Citations (2)
Title |
---|
HALI_BOTEBIE: "上采样方法综述:线性插值,转置卷积,上池化", pages 1 - 4, Retrieved from the Internet <URL:https://blog.csdn.net/djfjkj52/article/details/117553827> * |
LIZHIFUN: "【深度学习基本概念】上采样、下采样、卷积、池化", pages 1, Retrieved from the Internet <URL:https://blog.csdn.net/tingzhiyi/article/details/114368433> * |
Also Published As
Publication number | Publication date |
---|---|
CN116703727B (zh) | 2024-01-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111445420B (zh) | 卷积神经网络的图像运算方法、装置和电子设备 | |
JP6365258B2 (ja) | 演算処理装置 | |
JP6414458B2 (ja) | 演算処理装置 | |
CN110348453B (zh) | 一种基于级联的物体检测方法及系统、存储介质及终端 | |
US11354360B2 (en) | Method and apparatus for compiling computation graphs into an integrated circuit | |
CN110888672B (zh) | 一种基于元数据架构的表达式引擎实现方法及系统 | |
CN116703727B (zh) | 一种神经网络中图像缩放优化方法与装置 | |
CN113421316A (zh) | 连接线路径构建方法、装置、计算机设备及可读存储介质 | |
CN114186678A (zh) | 基于深度学习的硬件适配装置和方法 | |
Davies et al. | Predictive flows for faster ford-fulkerson | |
JP2004186985A (ja) | 画像処理方法および画像処理装置ならびに画像処理プログラム | |
CN115512369A (zh) | 文档图像版面分析方法、装置、计算机设备和存储介质 | |
CN113902107A (zh) | 用于神经网络模型全连接层的数据处理方法、可读介质和电子设备 | |
CN111898654A (zh) | 三维对象特征获取方法、装置、计算机设备和存储介质 | |
CN111552477A (zh) | 数据处理方法和装置 | |
US20240354891A1 (en) | Image processing method and image processing device | |
CN113469321B (zh) | 基于神经网络的物件检测装置和物件检测方法 | |
CN112507910B (zh) | 基于像素变形的图形识别方法、系统、电子装置及存储介质 | |
CN115080026B (zh) | 一种基于低代码插拔式控件集成方法及系统 | |
CN113900660B (zh) | 操作信息生成方法、装置、电子设备及存储介质 | |
CN116151620A (zh) | 一种子图匹配的方法、装置、存储介质及电子设备 | |
CN115398444A (zh) | 用于提供计算高效神经网络的设备和方法 | |
CN116596038A (zh) | 卷积运算加速方法、电路、系统、设备及图像处理方法 | |
Pasupuleti et al. | A novel method to regenerate an optimal CNN by exploiting redundancy patterns in the network | |
AbdurRafae | HindSight: A Graph-Based Vision Model Architecture For Representing Part-Whole Hierarchies |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |