4
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Vitis AI Libraryを使ったアプリケーションを作って性能比較

Last updated at Posted at 2020-07-04

コードとか。→ https://github.com/nv-h/Vitis_AI_Library_apps
2020/7/5 マルチスレッド化したので測定したfpsを追記。Xilinxのdemo.hppには追い付かないが、ポータブルにできた気がする。

Vitis AI Library Applications

Vitis AI Libraryを使用したアプリケーションを作成、動作確認する。
ハードウェア環境の構築などは以下を参照。

Usage

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
  • video_num : Integer (X of /dev/videoX)
  • thread_num : Xilinxが用意しているデモライブラリでのスレッド指定。DPUとのデータのやり取りが高速になる。

動作イメージ

Performance (fps) on ultra96v2 @ 640*360

Using USB Web Camera C615 (X forwarding).
fpsは小数点以下切り捨てで測定した。同一条件でもけっこうばらつきがあると思われる。

video_demo_app using vitis::ai::main_for_video_demo()

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

video_single_th_app / video_multi_th_app

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

Demo pictures

yolov3_voc
yolov3_voc.png

yolov2_voc
yolov2_voc.png

ssd_mobilenet_v2
ssd_mobilenet_v2.png

ssd_mobilenet_v2_coco_tf
ssd_mobilenet_v2_coco_tf.png

4
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?