Upsample.py 1.15 KB
Newer Older
yaoht's avatar
yaoht committed
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
import src.c2oObject as Node
import numpy as np


# 获取超参数
def get_upsample_attri(layer):
    # scale = layer.upsample_param.scale
    # scales = [1.0,1.0,scale,scale]
    # dict = {"scales":scales,"mode":"nearest"}#Upsample将scales放入参数里面了
    # dict = {"width_scale": scale,"height_scale":scale, "mode": "nearest"}#在OpenVINO读onnx的时候要求用width_scale和height_scale
    scale = layer.upsample_param.scale
    scales = [1.0, 1.0, scale, scale]

    attributes = {"mode": "linear",
                  'scales': scales}

    return attributes


def get_upsample_outputshape(input_shape, layer):
    scale = layer.upsample_param.scale
    scales = [1.0, 1.0, scale, scale]
    output_shape = [np.multiply(np.array(scales, dtype=np.int), np.array(input_shape[0])).tolist()]
    return output_shape


def create_upsample_node(layer, node_name, input_name, output_name, input_shape):
    attributes = get_upsample_attri(layer)
    output_shape = get_upsample_outputshape(input_shape, layer)

    # print(output_shape)
    node = Node.c2oNode(layer, node_name, "Upsample", input_name, output_name, input_shape, output_shape, attributes)
    return node