Vitis AI API_3 グラフ ランナーを使用した開発 - 2.5 日本語

Vitis AI ライブラリ ユーザー ガイド (UG1354)

Document ID
UG1354
Release Date
2022-06-15
Version
2.5 日本語
モデルを複数のサブグラフに分割した場合、API_0、API_1、および API_2 を使用して自動的に実行することはできません。モデルをサブグラフごとに運用する必要があります。グラフ ランナーは、このようなモデルを運用するための新しい API です。この API によってモデルを 1 つのグラフに変換することで、サブグラフが複数あるモデルの運用が容易になります。C++ と Python の両方がサポートされます。
注記: カスタム Op の運用には Graph Runner API を推奨します。
  1. git を使用して、https://github.com/Xilinx/Vitis-AI から対応する Vitis AI ライブラリをコピーします。
  2. ホスト側にクロス コンパイル システムをインストールします。手順は、インストール を参照してください。
  3. モデルに複数のサブグラフがあるかどうかを確認します。複数ある場合は、DPU でサポートされない演算がサポートされるモデルの範囲内にあることを確認します。Vitis AI ライブラリでサポートされる演算は、Vitis-AI/src/Vitis-AI-Library/cpu_task/ops で確認できます。
    注記: cpu_task のサポート リストに含まれていない演算がある場合は、graph_runner を直接使用することはできません。モデルのコンパイル時にエラーとなることがあります。まずそれを解決してから、cpu_task に含まれる演算を追加する必要があります。カスタム op を登録し、Graph_runner API を使用してモデルを運用する方法は、VCK190 カスタム Lambda 演算子チュートリアル も参照してください。
  4. model_test.cpp ソース ファイルを作成します。次の図に、メイン フローを示します。すべてのコード例は、Vitis-AI/examples/Vitis-AI-Library/samples/graph_runner/platenum_graph_runner/platenum_graph_runner.cpp ファイルを参照してください。

  5. 次に示すように 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
  6. プログラムをクロス コンパイルします。
    sh -x build.sh
  7. scp コマンドを使用して、実行可能なプログラムをターゲット ボードにコピーします。
    scp test_model root@IP_OF_BOARD:~/
  8. 最新の VART をインストールします。詳細は、ステップ 3: AI ライブラリ パッケージをインストールする を参照してください。
  9. ターゲット ボード上でプログラムを実行します。プログラムを実行する前に、ターゲット ボードに Vitis AI ライブラリがインストールされていることを確認して、テストするイメージを準備します。
    ./model_test <model> <image>