Vitis AI Libraryを使用したアプリケーションを作成、動作確認する。
ハードウェア環境の構築などは以下を参照。
Xilinxが用意しているデモ
video_demo_app <model_name> <video_num> [-t <thread_num>]
シングルスレッド
video_single_th_app <model_name> <video_num>
model_name
: 使用できるモデルは、/usr/share/vitis_ai_library/models
にあるものだけと思われる。現状、以下に対応。- Yolo v2:
yolov2_voc
yolov2_voc_pruned_0_66
yolov2_voc_pruned_0_71
yolov2_voc_pruned_0_77
- Yolo v3:
yolov3_adas_pruned_0_9
yolov3_bdd
yolov3_voc
yolov3_voc_tf
- SSD Caffe:
ssd_adas_pruned_0_95
ssd_mobilenet_v2
ssd_pedestrain_pruned_0_97
ssd_traffic_pruned_0_9
- SSD Tensorflow:
ssd_mobilenet_v1_coco_tf
ssd_mobilenet_v2_coco_tf
ssd_resnet_50_fpn_coco_tf
- Yolo v2:
video_num
: Integer (X of/dev/videoX
)thread_num
: Xilinxが用意しているデモライブラリでのスレッド指定。DPUとのデータのやり取りが高速になる。
動作イメージ
Using USB Web Camera C615 (X forwarding). fpsは小数点以下切り捨てで測定した。同一条件でもけっこうばらつきがあると思われる。
ultra96v2ではDPUが一つしか実装できないのでDPUで律速になるような、重いモデルではマルチスレッドがほとんど効果がない。 スレッド構成は以下のようになっていて、DPUスレッドの数を引数で変更できるようになっている。
capture thread ---> DPU Threads(-t N) ---> imshow thread
model | -t 1 | -t 2 | -t 4 |
---|---|---|---|
yolov2_voc |
8 | 9 | 9 |
yolov2_voc_pruned_0_66 |
21 | 23 | 24 |
yolov2_voc_pruned_0_71 |
24 | 26 | 28 |
yolov2_voc_pruned_0_77 |
27 | 28 | 29 |
yolov3_adas_pruned_0_9 |
11 | 11 | 12 |
yolov3_bdd |
4 | 5 | 5 |
yolov3_voc |
5 | 5 | 5 |
yolov3_voc_tf |
5 | 5 | 5 |
ssd_adas_pruned_0_95 |
29 | 29 | 30 |
ssd_mobilenet_v2 |
10 | 10 | 10 |
ssd_pedestrain_pruned_0_97 |
30 | 30 | 30 |
ssd_traffic_pruned_0_9 |
20 | 27 | 27 |
ssd_mobilenet_v1_coco_tf |
21 | 21 | 22 |
ssd_mobilenet_v2_coco_tf |
20 | 21 | 22 |
ssd_resnet_50_fpn_coco_tf |
0 | 0 | 1 |
single_thはシリアル処理。
capture, DPU, imshow (serial processing)
multi_thは下記のようなマルチスレッド処理。
capture thread ---> DPU Thread ---> imshow thread
model | single thread | multi threads |
---|---|---|
yolov2_voc |
5 | 8 |
yolov2_voc_pruned_0_66 |
9 | 19 |
yolov2_voc_pruned_0_71 |
9 | 23 |
yolov2_voc_pruned_0_77 |
9 | 26 |
yolov3_adas_pruned_0_9 |
10 | 11 |
yolov3_bdd |
3 | 4 |
yolov3_voc |
3 | 5 |
yolov3_voc_tf |
3 | 5 |
ssd_adas_pruned_0_95 |
12 | 27 |
ssd_mobilenet_v2 |
7 | 10 |
ssd_pedestrain_pruned_0_97 |
13 | 29 |
ssd_traffic_pruned_0_9 |
10 | 20 |
ssd_mobilenet_v1_coco_tf |
12 | 19 |
ssd_mobilenet_v2_coco_tf |
11 | 20 |
ssd_resnet_50_fpn_coco_tf |
0 | 0 |