Interpolate¶
バージョン名: Interpolate-11
カテゴリー: 画像処理
簡単な説明: Interpolate レイヤーは、指定された次元と属性によって入力テンソルの独立したスライスの補間を行います。
属性:
-
mode
説明: 補間のタイプを指定します
値の範囲: 次のいずれか:
nearest
、linear
、linear_onnx
、cubic
、bilinear_pillow
、bicubic_pillow
タイプ: 文字列
必須: はい
注: このモードでは、それぞれ、
axes = {0, 1}
、axes = {0, 1, 2}
、axes = {2, 3}
、axes = {2, 3, 4}
はそれぞれ"mode" == "linear_onnx"
で 2D、3D、4D、5D テンソルのみがサポートされます。bilinear_pillow
またはbicubic_pillow
の場合、空間次元 (H, W) のみをaxes
テンソルで指定できます。例えば、NHWC レイアウトの場合、軸にはaxes = {1, 2}
が含まれている必要があります。
-
shape_calculation_mode
説明: オペレーターの出力形状を決定する際に、
scales_or_sizes
入力のデータをどのように解釈するか指定します。-
値の範囲: 文字列形式の形状計算モードの名前
sizes
- 出力形状は、range(0, len(axes)) 内のすべての i に対して、output_shape[axes[i]] = scales_or_sizes[i]
として計算され、axes 以外の j、range(0, rank(image)) 内の j については、output_shape[j] = input_shape[j] + pads_begin[j] + pads_end[j]
として計算されます。scales
- 出力形状は、range(0, len(axes)) 内のすべての i に対して、output_shape[axes[i]] = floor(scales_or_sizes[i] * (input_shape[axes[i]] + pads_begin[axes[i]] + pads_end[axes[i]]))
として計算され、axes 内に j がない場合は、output_shape[j] = input_shape[j] + pads_begin[j] + pads_end[j]
、range(0, rank(image))内のj
として計算されます。
タイプ: 文字列
必須: はい
-
coordinate_transformation_mode
説明: サイズ変更されたテンソルの座標を元のテンソルの座標に変換する方法を指定します
値の範囲: 文字列形式の変換モードの名前 (ここで、
scale[x]
は、output_shape[x] / input_shape[x]
、x_resized
は、入力axes
からの任意の軸x
の軸x
の座標です)。half_pixel
- 元のテンソル軸x
の座標は、((x_resized + 0.5) / scale[x]) - 0.5
として計算されます。pytorch_half_pixel
- 元のテンソル軸x
の座標は、(x_resized + 0.5) / scale[x] - output_shape[x] > 1 の場合は 0.5、それ以外は 0.0
によって計算されます。asymmetric
- 元のテンソル軸x
の座標は、x_resized / scale[x]
の式に従って計算されます。tf_half_pixel_for_nn
- 元のテンソル軸x
の座標は(x_resized + 0.5) / scale[x]
です。align_corners
- 元のテンソル軸x
の座標は、0 if output_shape[x] == 1 else x_resized * (input_shape[x] - 1) / (output_shape[x] - 1)
として計算されます。
タイプ: 文字列
デフォルト値:
half_pixel
必須: いいえ
注: 選択した内挿モードが
BILINEAR_PILLOW
またはBICUBIC_PILLOW
の場合、この属性は無視されます。
-
nearest_mode
説明:
mode == nearest
の場合にラウンドモードを指定し、mode == nearest
の場合にのみ使用されます。-
値の範囲: 文字列形式のラウンドモードの名前
round_prefer_floor
- このモードは四捨五入として知られています。round_prefer_ceil
- 切り上げモードです。floor
- このモードは、四捨五入値以下の最大の整数値を計算します。ceil
- このモードは、四捨五入された値以上の最小の整数値を計算します。simple
- このモードは、Interpolate
がダウンサンプルの場合はceil
モードとして動作し、それ以外の場合は小数部分を削除するように動作します。
タイプ: 文字列
デフォルト値:
round_prefer_floor
必須: いいえ
-
antialias
説明: antialias はアンチエイリアスを行うかどうかを指定するフラグです。
-
値の範囲:
- false - アンチエイリアシングを実行しません
- true - アンチエイリアシングを実行します
タイプ: ブール値
デフォルト値 : false
必須: いいえ
注: 選択した内挿モードが
BILINEAR_PILLOW
またはBICUBIC_PILLOW
の場合、この属性は無視されます。これらのモードでは、Pillow のようなアンチエイリアスが適用されます。
-
pads_begin
説明: pads_begin は、補間される画像の先頭に追加するピクセル数を指定します。このピクセルの追加は、補間計算の前に行われます。
値の範囲: 負でない整数のリスト
タイプ:
int[]
デフォルト値:
[0]
必須: いいえ
-
pads_end
説明: pads_end は、補間される画像の末尾に追加するピクセル数を指定します。このピクセルの追加は、補間計算の前に行われます。
値の範囲: 負でない整数のリスト
タイプ:
int[]
デフォルト値:
[0]
必須: いいえ
-
cube_coeff
説明: cube_coeff は、三次補間のパラメーター a を指定します (記事を参照)。cube_coeff は、
mode == cubic
またはmode == bicubic_pillow
の場合にのみ使用されます。値の範囲: 浮動小数点数
タイプ: サポートされている浮動小数点タイプのいずれか
デフォルト値:
-0.75
(mode == cubic
に適用)。BICUBIC_PILLOW
と互換性のある値を手動で設定する必要があります:-0.5
必須: いいえ
入力:
1:
image
- 補間用のデータを含む T タイプのテンソル。必須。2:
scales_or_sizes
- 空間出力形状の計算に使用されるデータを含む 1D テンソル。要素の数は、axes
入力テンソルの値の数と一致する必要があり、順序も一致する必要があります。T_SCALES または T_SIZES は、shape_calculation_mode
属性の値に応じて異なります。必須。3:
axes
- 補間が適用される次元インデックスを指定する T_AXES タイプの 1D テンソル。axes
は、入力テンソルのさまざまな次元のインデックスの順序なしリストです。例:[0, 4]
,[4, 0]
,[4, 2, 1]
,[1, 2, 3]
。これらのインデックスは、0
からrank(image) - 1
の負でない整数である必要があります。axes
テンソルで指定されていない入力テンソルの次元は、オペレーターによって変更されません。axes
属性内の要素の順序が重要であり、2 番目の入力scales_or_sizes
の要素に直接マッピングされます。オプションで、デフォルト値は[0,1,...,rank(image) - 1]
です。axes
入力が提供されない場合、scales_or_sizes
テンソルの要素の数は、自動的に生成された axes の数と一致する必要があります。
出力:
1: 入力
image
テンソルと同じタイプの要素を含む、結果として得られる補間テンソル。出力の形状は、axes
属性で指定された空間次元を除き、入力image
形状と一致します。他の次元の場合、形状はaxes
で指定された順序でsizes
のサイズと一致します。
タイプ:
T: サポートされている数値タイプ。
T_SIZES: サポートされている数値タイプ。
T_SCALES: サポートされている浮動小数点タイプ。
T_AXES: サポートされている数値タイプ
例:
<layer ... type="Interpolate" ...>
<data shape_calculation_mode="scales" pads_begin="0" pads_end="0" mode="bicubic_pillow"/>
<input>
<port id="0">
<dim>1</dim>
<dim>2</dim>
<dim>48</dim>
<dim>80</dim>
</port>
<port id="1">
<dim>2</dim> <!--The values in this input are [24, 160] -->
</port>
<port id="2">
<dim>2</dim> <!--The values in this input are [0.5, 2.0] -->
</port>
<port id="3">
<dim>2</dim> <!--The values in this input are [2, 3] (axes). -->
</port>
</input>
<output>
<port id="0" precision="FP32">
<dim>1</dim>
<dim>2</dim>
<dim>24</dim>
<dim>160</dim>
</port>
</output>
</layer>