独自モデルを使用する場合は、ユーザーのモデル フレームワークが Vitis AI ライブラリの範囲に含まれる必要があります。このセクションでは、再学習済みの YOLOv3 Caffe モデルを Vitis AI ライブラリを使用して ZCU102 プラットフォームで運用する方法について説明します。
- https://github.com/Xilinx/Vitis-AI から対応する Docker イメージをダウンロードします。
- Docker をロードして実行します。
- ホスト側でフォルダーを作成し、そのフォルダー内にフロート モデルを配置し、Vitis AI クオンタイザーを使用してモデルを量子化します。詳細は、 『Vitis AI ユーザー ガイド』 (UG1414) を参照してください。
- Vitis AI コンパイラを使用してモデルをコンパイルし、yolov3_custom.xmodel などの xmodel ファイルを生成します。詳細は、 『Vitis AI ユーザー ガイド』 (UG1414) を参照してください。
- 次のスニペットに示すように、yolov3_custom.prototxt ファイルを作成します。
model { name: "yolov3_custom" kernel { name: "yolov3_custom" mean: 0.0 mean: 0.0 mean: 0.0 scale: 0.00390625 scale: 0.00390625 scale: 0.00390625 } model_type : YOLOv3 yolo_v3_param { num_classes: 20 anchorCnt: 3 layer_name: "59" layer_name: "67" layer_name: "75" conf_threshold: 0.3 nms_threshold: 0.45 biases: 10 biases: 13 biases: 16 biases: 30 biases: 33 biases: 23 biases: 30 biases: 61 biases: 62 biases: 45 biases: 59 biases: 119 biases: 116 biases: 90 biases: 156 biases: 198 biases: 373 biases: 326 test_mAP: false } }
注記: <model_name>.prototxt ファイルは、Vitis AI ライブラリ API_1 を使用する場合に限り有効です。Vitis AI ライブラリ API_2 を使用する場合は、モデル パラメーターのロードと読み出しを手動で実行する必要があります。詳細は、Vitis-AI/examples/vai_library/samples/dpu_task/yolov3/demo_yolov3.cpp ファイルを参照してください。
- demo_yolov3.cpp ファイルを作成します。Vitis-AI/examples/vai_library/samples/dpu_task/yolov3/demo_yolov3.cpp ファイルを参考にしてください。
- 次に示すように build.sh ファイルを作成するか、Vitis AI ライブラリのデモから 1 つをコピーして、それを変更します。
#/bin/sh CXX=${CXX:-g++} $CXX -std=c++17 -O3 -I. -o demo_yolov3 demo_yolov3.cpp -lopencv_core -lopencv_video -lopencv_videoio -lopencv_imgproc -lopencv_imgcodecs -lopencv_highgui -lglog -lxnnpp-xnnpp -lvitis_ai_library-model_config -lprotobuf -lvitis_ai_library-dpu_task
- Docker ツール システムを終了して、Docker ランタイム システムを起動します。
- プログラムをクロス コンパイルして、実行可能ファイル demo_yolov3 を生成します。
sh -x build.sh
- ターゲット側で /usr/share/vitis_ai_library/models フォルダー内にモデル フォルダーを作成します。
mkdir yolov3_custom /usr/share/vitis_ai_library/models
注記: /usr/share/vitis_ai_library/models は、プログラムがモデルを読み出すデフォルト フォルダーです。実行可能ファイルと同じディレクトリのモデル フォルダーに置くことも可能です。 -
yolov3_custom.xmodel と yolov3_custom.prototxt をターゲットにコピーし、/usr/share/vitis_ai_library/models/yolov3_custom に置きます。
scp yolov3_custom.xmodel yolov3_custom.prototxt root@IP_OF_BOARD:/usr/share/vitis_ai_library/models/yolov3_custom
-
scp を使用して、実行可能なプログラムをターゲット ボードにコピーします。
scp demo_yolov3 root@IP_OF_BOARD:~/
- ターゲット ボードでプログラムを実行すると、次の結果が表示されます。プログラムを実行する前に、ターゲット ボードに Vitis AI ライブラリがインストールされていることを確認して、テストするイメージを準備します。
./demo_yolov3 yolov3_custom sample.jpg