キャリブレーション データセットと入力関数の準備 - 3.5 日本語

Vitis AI ユーザー ガイド (UG1414)

Document ID
UG1414
Release Date
2023-09-28
Version
3.5 日本語

通常は、学習、検証用のデータセットまたは実際のアプリケーションで用いる画像のサブセット (最適な性能を発揮するために少なくとも 100 枚以上) をキャリブレーション セットとして使用します。入力関数は、データの前処理をする、Python のインポート可能な関数です。この関数は、キャリブレーション データセットをロードし、必要なデータ前処理を実行します。vai_q_tensorflow クオンタイザーは、前処理のために、グラフに保存されていない input_fn を受け入れることができます。ただし、前処理のサブグラフが凍結されたグラフに保存されている場合、input_fn はデータセットからイメージを読み取り、feed_dict を返すだけです。

入力関数は module_name.input_fn_name 形式に従います (例: my_input_fn.calib_input)。これは、キャリブレーション ステップ番号を表す int オブジェクトを受け取り、各呼び出しに対して placeholder_name, numpy.Array を含む dict オブジェクトを返します。このオブジェクトは推論中にモデルのプレースホルダー ノードに入力されます。placeholder_name は常に、入力データを受け取るノードとして機能する凍結されたグラフの入力ノードに対応しています。
注記: placeholder_name は、入力画像を受け取る入力ノードの実際の名前で置き換える必要があります。たとえば、入力プレースホルダー ノード名が the_input_node の場合、placeholder_namethe_input_node で置き換えます。
vai_q_tensorflow の input_nodes オプションは、凍結されたグラフのどこから量子化を開始するかを示します。placeholder_namesinput_nodes オプションは異なることがあります。凍結されたグラフにグラフ用の前処理部がある場合、placeholder_name はグラフの入力を表します。ただし、input_nodes を前処理部の最後のノードに設定することを推奨します。numpy.the array の形状が対応するプレースホルダーと一致していることを確認してください。参考用の擬似コード例を次に示します。
$ "my_input_fn.py"
def calib_input(iter):
"""
A function that provides input data for the calibration
  Args:
    iter: A `int` object, indicating the calibration step number
  Returns:
    dict( placeholder_name, numpy.array): a `dict` object, which will be fed into the model
"""
  image = load_image(iter)
  preprocessed_image = do_preprocess(image)
  return {"placeholder_name": preprocessed_images}