Interpolate

バージョン名: Interpolate-11

カテゴリー: 画像処理

簡単な説明: Interpolate レイヤーは、指定された次元と属性によって入力テンソルの独立したスライスの補間を行います。

属性:

  • mode

    • 説明: 補間のタイプを指定します

    • 値の範囲: 次のいずれか: nearestlinearlinear_onnxcubicbilinear_pillowbicubic_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 以外の jrange(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>