各ニューラル ネットワークには異なるポストプロセス方法があります。ユーザー呼び出しをサポートするため、ザイリンクスは Vitis AI ライブラリでポストプロセス ライブラリ (xnnpp) を提供しています。次のニューラル ネットワークのポストプロセスをサポートしています。
- 分類
- 顔検出
- 顔のランドマーク検出
- SSD 検出
- 姿勢検出
- セマンティック セグメンテーション
- 車線検出
- YOLOv3 検出
- YOLOv2 検出
- Openpose 検出
- RefineDet 検出
- ReID 検出
- マルチタスク
- 顔認識
- プレート検出
- プレート認識
- 医療画像セグメンテーション
- 医療画像検出
- 顔品質
- Hourglass
- Retinaface
- CenterPoint
- Multitaskv3
- Pointpillars_nuscenes
- Rcan
- vehicleclassification
- ofa_yolo
- efficientdet_d2
- ocr
- textmountain
xnnpp
を呼び出す方法は次の 2 つです。
-
vitis::ai::<model>::create
で自動呼び出しを使用してvitis::ai::YOLOv3::create("yolov3_bdd", true)
などのタスクを作成します。<Model> の実行が完了後、xnnpp
が自動的に処理されます。モデルのコンフィギュレーション ファイルでパラメーターを変更できます。 -
vitis::ai::DpuTask::create
で手動呼び出しを使用して、タスクを作成します。その後、ポストプロセスのオブジェクトを作成し、ポストプロセスを実行します。次の手順を使用してください。ここでは SSD のポストプロセスを例に説明します。- コンフィギュレーション ファイルを作成し、ポストプロセスを制御するための相関データを設定します。
using DPU_conf = vitis::ai::proto::DpuModelParam; DPU_conf config;
- caffemodel の場合は、is_tf を FALSE に設定します。
config.set_is_tf(false);
- その他のパラメーターを設定します。
fillconfig(config);
- SSDPostProcess オブジェクトを作成します。
auto input_tensor = task->getInputTensor(); auto output_tensor = task->getOutputTensor(); auto ssd = vitis::ai::SSDPostProcess::create(input_tensor, output_tensor,config);
- ポストプロセスを実行します。
auto results = ssd->ssd_post_process();
- コンフィギュレーション ファイルを作成し、ポストプロセスを制御するための相関データを設定します。
注記: ポストプロセス サンプルの詳細は、ホスト システムの ~/Vitis-AI/examples/Vitis-AI-Library/samples/dpu_task/yolov3/demo_yolov3.cpp および ~/Vitis-AI/src/Vitis-AI-Library/yolov3/test/test_yolov3.cpp を参照してください。