モデルを複数のサブグラフに分割した場合、API_0、API_1、および API_2 を使用して自動的に実行することはできません。モデルをサブグラフごとに運用する必要があります。グラフ ランナーは、このようなモデルを運用するための新しい API です。この API によってモデルを 1 つのグラフに変換することで、サブグラフが複数あるモデルの運用が容易になります。C++ と Python の両方がサポートされます。
注記: カスタム Op の運用には Graph Runner API を推奨します。
- git を使用して、https://github.com/Xilinx/Vitis-AI から対応する Vitis AI ライブラリをコピーします。
- ホスト側にクロス コンパイル システムをインストールします。手順は、インストール を参照してください。
- モデルに複数のサブグラフがあるかどうかを確認します。複数ある場合は、DPU でサポートされない演算がサポートされるモデルの範囲内にあることを確認します。Vitis AI ライブラリでサポートされる演算は、Vitis-AI/src/Vitis-AI-Library/cpu_task/ops で確認できます。注記: cpu_task のサポート リストに含まれていない演算がある場合は、graph_runner を直接使用することはできません。モデルのコンパイル時にエラーとなることがあります。まずそれを解決してから、cpu_task に含まれる演算を追加する必要があります。カスタム op を登録し、Graph_runner API を使用してモデルを運用する方法は、VCK190 カスタム Lambda 演算子チュートリアル も参照してください。
-
model_test.cpp ソース ファイルを作成します。次の図に、メイン フローを示します。すべてのコード例は、Vitis-AI/examples/Vitis-AI-Library/samples/graph_runner/platenum_graph_runner/platenum_graph_runner.cpp ファイルを参照してください。
- 次に示すように build.sh ファイルを作成するか、Vitis AI ライブラリのデモから 1 つをコピーして、それを変更します。
result=0 && pkg-config --list-all | grep opencv4 && result=1 if [ $result -eq 1 ]; then OPENCV_FLAGS=$(pkg-config --cflags --libs-only-L opencv4) else OPENCV_FLAGS=$(pkg-config --cflags --libs-only-L opencv) fi CXX=${CXX:-g++} $CXX -std=c++17 -O2 -I. \ -o platenum_graph_runner \ platenum_graph_runner.cpp \ -lglog \ -lxir \ -lvart-runner \ -lvitis_ai_library-graph_runner \ ${OPENCV_FLAGS} \ -lopencv_core \ -lopencv_imgcodecs \ -lopencv_imgproc
- プログラムをクロス コンパイルします。
sh -x build.sh
-
scp
コマンドを使用して、実行可能なプログラムをターゲット ボードにコピーします。scp test_model root@IP_OF_BOARD:~/
- 最新の VART をインストールします。詳細は、ステップ 3: AI ライブラリ パッケージをインストールする を参照してください。
- ターゲット ボード上でプログラムを実行します。プログラムを実行する前に、ターゲット ボードに Vitis AI ライブラリがインストールされていることを確認して、テストするイメージを準備します。
./model_test <model> <image>