FC2カウンター FPGAの部屋 Vitis-AI
fc2ブログ

FPGAやCPLDの話題やFPGA用のツールの話題などです。 マニアックです。 日記も書きます。

FPGAの部屋

FPGAの部屋の有用と思われるコンテンツのまとめサイトを作りました。Xilinx ISEの初心者の方には、FPGAリテラシーおよびチュートリアルのページをお勧めいたします。

”Deploying the Dobble Challenge on the Ultra96-V2”をやってみる3

”Deploying the Dobble Challenge on the Ultra96-V2”をやってみる2”の続き。

前回は、”Deploying the Dobble Challenge on the Ultra96-V2”を見ながら、パソコンでの作業が終了するまでやってみた。つまり、フリーズグラフの量子化、量子化モデルの評価、量子化モデルのコンパイル、ボード上で実行するために必要なすべてのファイルを./build/targetフォルダにコピーを行った。
今回は、”Deploying the Dobble Challenge on the Ultra96-V2”の残り、 ./build/targetフォルダの内容を Ultra96V2 にコピーして、Ultra96V2 に接続した USB カメラで Dobble を認識してみよう。

Ultra96V2 の MicroSD カードは””Vitis-AI 1.3 Flow for Avnet VITIS Platforms”をやってみる1”で作った MicroSD カードで問題ない。つまり、今まで使ってきた MicroSD カードを使用できる。

Ultra96V2 をブートして、パソコンのUbuntu 18.04 の端末からログインした。
ssh <IPアドレス> -X -l root
今回の Dobble 用の環境設定ファイル initset2.sh を作成する。
Dobble_57_210713.png

initset2.sh を作成した。
Dobble_58_210713.png

dmesg -D
cd dpu_sw_optimize/zynqmp
./zynqmp_dpu_optimize.sh
export DISPLAY=:0.0
xrandr --output DP-1 --mode 640x480


initset2.sh を実行した。
source initset2.sh
Dobble_59_210713.png

パソコンの ./build/targetフォルダの内容を Ultra96V2 にコピーするために、USB-LAN アダプタでネットワーク接続されているので、FileZilla を使って SFTP で Ultra96V2 にアップロードした。
Dobble_60_210713.png

コピーされた target_B2304_LR ディレクトリに入って、 app_mt.py を実行して、精度を確かめた。
python3 app_mt.py
Dobble_61_210713.png

精度は 97 % で 75.88 FPS だった。

app_mt.py を 5 スレッドで実行する。
python3 app_mt.py -t 5
Dobble_62_210713.png

精度は同じ 97 % で 96.46 FPS だった。 FPS が向上している。

USB カメラを使用して、実際に Dobble を認識してみよう。
Dobble は””The Dobble Challenge”をやってみる2”でダウンロードした dobble_dataset ディレクトリの dobble_deck01.png を拡大印刷して切り取ったものを使用した。

python3 dobble_detect_live.py
を実行すると、 USB カメラがアクティブになって、カメラの内容がウインドウに表示された。
先程印刷して、一枚一枚切り取った紙片をカメラに近づけると認識した。
Dobble_63_210713.png
Dobble_64_210713.png
Dobble_65_210713.jpg

27 番と認識された。合っている。
なお、当然だが、距離により誤認識することがあるが、この大きさだと安定している。

もう 1 つ認識させてみた。
Dobble_66_210713.jpg

15 番と認識された。これも合っている。成功した。

ここまで、Keras のモデルを作成して、Keras のモデルを TensorFlow のモデルに変換し、量子化した。それを Ultra96V2 に持っていって実機で動作させるという一連の Vitis-AI の実装方法を体験できたのは良かった。
一連のチュートリアルに感謝したい。
  1. 2021年07月15日 04:56 |
  2. Vitis-AI
  3. | トラックバック:0
  4. | コメント:0

”Deploying the Dobble Challenge on the Ultra96-V2”をやってみる2

”Deploying the Dobble Challenge on the Ultra96-V2”をやってみる1”の続き。

前回は、”Deploying the Dobble Challenge on the Ultra96-V2”をやり始めて、Vitis-AI を Docker で起動し、環境設定、Keras のモデルから TensorFlow互換のフリーズグラフに変換、TensorFlow互換のフリーズグラフを評価し、99.42 % の精度があることを確認できた。
今回は、前回の続きからで、”Deploying the Dobble Challenge on the Ultra96-V2”を見ながら、パソコンでの作業が終了するまでやってみよう。つまり、フリーズグラフの量子化、量子化モデルの評価、量子化モデルのコンパイル、ボード上で実行するために必要なすべてのファイルを./build/targetフォルダにコピーを行う。

フリーズグラフの量子化を行う。
Deploying the Dobble Challenge on the Ultra96-V2”によると、DPUアクセラレータIPは、すべての計算を8ビット整数形式で実行するため、浮動小数点の凍結グラフを量子化する必要があるそうだ。
”Step 4: Quantizing the Frozen Graph”の一部の Google 翻訳結果を引用する。

キャリブレーションで使用するために生成される画像の数は、0_setenv.shスクリプトのCALIB_IMAGES環境変数によって設定されます。キャリブレーションの反復回数(--calib_iter)にキャリブレーションバッチサイズ(image_input_fn.pyスクリプトで設定)を掛けたものが、使用可能なイメージの総数(CALIB_IMAGES)を超えないように注意する必要があります。

量子化が完了すると、。/ files / build / quantizeフォルダーに量子化されたデプロイメントモデル(deploy_model.pb)と評価モデル(quantize_eval_model.pb)が作成されます。


さて、フリーズグラフの量子化をやってみる。
source ./4_quant.sh
Dobble_50_210713.png
Dobble_51_210713.png

ログを示す。

(vitis-ai-tensorflow) Vitis-AI /workspace/dobble_classification_on_ultra96v2/files > source ./4_quant.sh
-----------------------------------------
QUANTIZE STARTED..
-----------------------------------------
Making calibration images..
Using TensorFlow backend.
Command line options:
 --image_dir    :  ./build/quantize/images
 --calib_list   :  calib_list.txt
 --dataset      :  train
 --max_images   :  1000
Calib images generated
Vai_q_tensorflow v1.2.0 build for Tensorflow 1.15.2 git version
heads/1.3-0-gc680f744
100% (10 of 10) |########################| Elapsed Time: 0:04:41 Time:  0:04:41
INFO: Checking Float Graph...
INFO: Float Graph Check Done.
INFO: Calibrating for 10 iterations...
INFO: Calibration Done.
INFO: Generating Deploy Model...
INFO: Deploy Model Generated.
********************* Quantization Summary *********************      
INFO: Output:       
  quantize_eval_model: ./build/quantize/quantize_eval_model.pb       
  deploy_model: ./build/quantize/deploy_model.pb
-----------------------------------------
QUANTIZE COMPLETED
-----------------------------------------


量子化されたファイルを示す。
Dobble_67_210714.png

量子化モデルの評価を行う。
source ./5_eval_quant.sh
Dobble_52_210713.png
Dobble_53_210713.png

精度は 99.67 % だった。

量子化モデルのコンパイルを行う。
Deploying the Dobble Challenge on the Ultra96-V2”の”Step 6: Compiling the Quantized Model”の文章を一部 Google 翻訳して貼っておく。

DPU IPはソフトコアIPであり、その唯一の機能は畳み込みニューラルネットワークの実行を加速することです。これは、独自の命令セットを持つコプロセッサーです。これらの命令は、Xmodelファイル形式でDPUに渡されます。

Vitis AIコンパイラは、量子化された展開モデルを一連のマイクロ命令に変換し、可能な場合は最適化してから、Xmodelファイルに出力します。

生成される命令は、DPUの特定の構成に固有です。DPUのパラメーターは、ターゲットボードごとに作成する必要があるarch.jsonファイルに含まれています。詳細については、VitisAIユーザーガイドを参照してください。


source ./6_compile.sh
Dobble_69_210714.png
Dobble_70_210714.png

出力されたファイルを示す。
Dobble_54_210713.png

ログを貼っておく。

(vitis-ai-tensorflow) Vitis-AI /workspace/dobble_classification_on_ultra96v2/files > source ./6_compile.sh
-----------------------------------------
COMPILE STARTED..
-----------------------------------------
[INFO] parse raw model     :  0%|          | 0/33 [00:00<?, ?it/s]              
[INFO] parse raw model     :100%|██████████| 33/33 [00:00<00:00, 18611.27it/s]               
[INFO] infer shape (NHWC)  :  0%|          | 0/38 [00:00<?, ?it/s]              
[INFO] infer shape (NHWC)  :100%|██████████| 38/38 [00:00<00:00, 14147.31it/s]               
[INFO] infer shape (NHWC)  :  0%|          | 0/35 [00:00<?, ?it/s]              
[INFO] infer shape (NHWC)  :100%|██████████| 35/35 [00:00<00:00, 5574.99it/s]                
[INFO] generate xmodel     :  0%|          | 0/35 [00:00<?, ?it/s]              
[INFO] generate xmodel     :  9%|▊         | 3/35 [00:00<00:05,  5.49it/s]      
[INFO] generate xmodel     :100%|██████████| 35/35 [00:00<00:00, 63.60it/s]                  
[INFO] Namespace(inputs_shape=None, layout='NHWC', model_files=['./build/quantize/quantize_eval_model.pb'], model_type='tensorflow', out_filename='./build/compile_B2304_LR/dobble_org.xmodel', proto=None)
[INFO] tensorflow model: build/quantize/quantize_eval_model.pb
[INFO] generate xmodel: /workspace/dobble_classification_on_ultra96v2/files/build/compile_B2304_LR/dobble_org.xmodel
[UNILOG][INFO] The compiler log will be dumped at "/tmp/vitis-ai-user/log/xcompiler-20210713-134253-298"
[UNILOG][INFO] Target architecture: DPUCZDX8G_ISA0_B2304_MAX_BG2
[UNILOG][INFO] Compile mode: dpu
[UNILOG][INFO] Debug mode: function
[UNILOG][INFO] Target architecture: DPUCZDX8G_ISA0_B2304_MAX_BG2
[UNILOG][INFO] Graph name: quantize_eval_model, with op num: 55
[UNILOG][INFO] Begin to compile...
[UNILOG][INFO] Total device subgraph number 3, DPU subgraph number 1
[UNILOG][INFO] Compile done.
[UNILOG][INFO] The meta json is saved to "/workspace/dobble_classification_on_ultra96v2/files/./build/compile_B2304_LR/meta.json"
[UNILOG][INFO] The compiled xmodel is saved to "/workspace/dobble_classification_on_ultra96v2/files/./build/compile_B2304_LR/dobble.xmodel"
[UNILOG][INFO] The compiled xmodel's md5sum is 5cc2ffa0cc1e1c45e439fdc62268f1ae, and been saved to "/workspace/dobble_classification_on_ultra96v2/files/./build/compile_B2304_LR/md5sum.txt"
**************************************************
* VITIS_AI Compilation - Xilinx Inc.
**************************************************
-----------------------------------------
COMPILE COMPLETED
-----------------------------------------


ボード上で実行するために必要なすべてのファイルを./build/targetフォルダにコピーする。
source ./7_make_target.sh
Dobble_55_210713.png

./build/target_B2304_LR フォルダのファイルを示す。
Dobble_56_210713.png
  1. 2021年07月14日 04:57 |
  2. Vitis-AI
  3. | トラックバック:0
  4. | コメント:0

”Deploying the Dobble Challenge on the Ultra96-V2”をやってみる1

”Training The Dobble Challenge”をやってみる2”の続き。

前回は、 ”Training The Dobble Challenge”の残りを行って、Dobble の画像を増やして学習し、テスト・データでの精度が向上するのを確認できた。
今回は、”Deploying the Dobble Challenge on the Ultra96-V2”をやってみることにする。

なお、書いてないと思うのだが、”Deploying the Dobble Challenge on the Ultra96-V2”をやる前に、スクリプトがあるリポジトリ https://github.com/AlbertaBeef/dobble_classification_on_ultra96v2.git を git clone する必要があった。これが分かるまでに 2 時間くらい悩んでしまった。。。

最初に Vitis-AI を git clone した。
git clone https://github.com/Xilinx/Vitis-AI.git
Dobble_34_210712.png

Vitis-AI に入って、スクリプトがあるリポジトリを git clone した。
cd Vitis-AI
git clone https://github.com/AlbertaBeef/dobble_classification_on_ultra96v2.git

Dobble_35_210712.png

Vitis-AI/dobble_classification_on_ultra96v2/files のファイルを示す。スクリプトが並んでいる。
Dobble_36_210712.png

docker 仕様の Vitis-AI を起動する。
./docker_run.sh xilinx/vitis-ai:1.3.411
Dobble_37_210712.png

ライセンスに聞かれるが Enter キーを押していく。
Dobble_38_210712.png

この後、初回では、パッケージをダウンロードしまくった。
Vitis-AI が起動した。
Dobble_39_210712.png

/workspace/dobble_classification_on_ultra96v2/files ディレクトリに cd した。
ファイルが見える。
Dobble_40_210712.png

環境を設定するスクリプトの 0_setenv.sh を実行した。
source 0_setenv.sh
Dobble_41_210712.png

次の学習はパスして、学習済みモデルを使用することにした。
keras_model.zip に学習済みモデルが入っている。
Dobble_42_210712.png

/workspace/dobble_classification_on_ultra96v2/files/build/keras_model ディレクトリに dobble_model.h5 を入れた。
Dobble_43_210712.png

Keras のモデルから TensorFlow互換のフリーズグラフに変換する。
Vitis-AI で取り扱うには、TensorFlow互換のフリーズグラフにする必要があるそうだ。
source ./2_keras2tf.sh
Dobble_44_210712.png
Dobble_45_210712.png

/workspace/dobble_classification_on_ultra96v2/files/build/freeze ディレクトリに frozen_graph.pb が生成された。
Dobble_46_210712.png

TensorFlow互換のフリーズグラフを評価する前に””The Dobble Challenge”をやってみる2”で書いた dobble_dataset ディレクトリを dobble_classification_on_ultra96v2/files ディレクトリにコピーした。
Dobble_47_210712.png

TensorFlow互換のフリーズグラフを評価する。
source ./3_eval_frozen.sh
Dobble_48_210712.png
Dobble_49_210712.png

モデルの精度は 99.42 % だったようだ。精度が高い。

ログを貼っておく。

(vitis-ai-tensorflow) Vitis-AI /workspace/dobble_classification_on_ultra96v2/files > source ./3_eval_frozen.sh
-----------------------------------------
EVALUATING THE FROZEN GRAPH..
-----------------------------------------
Using TensorFlow backend.
100% (12 of 12) |########################| Elapsed Time: 0:00:10 Time:  0:00:10

------------------------------------
TensorFlow version :  1.15.2
3.6.12 |Anaconda, Inc.| (default, Sep  8 2020, 23:10:56) 
[GCC 7.3.0]
------------------------------------
Command line options:
 --graph      :  ./build/freeze/frozen_graph.pb
 --input_node :  conv2d_1_input
 --output_node:  activation_2/Softmax
 --batchsize  :  100
 --gpu        :  0
------------------------------------


TEST DATA SETS:
Shape of test data (X) is : (1267, 224, 224, 3)
Shape of test data (y) is : (1267, 58)
Graph accuracy with validation dataset: 0.9942
-----------------------------------------
EVALUATION COMPLETED
-----------------------------------------

  1. 2021年07月13日 04:01 |
  2. Vitis-AI
  3. | トラックバック:0
  4. | コメント:0

”License Plate Recognition with Vitis-AI”をやってみる

”Head-Pose Estimation on Ultra96-V2”をやってみる”の続き。

前回は、、”Step 3 – Modifying the examples”の”Head-Pose Estimation on Ultra96-V2”をやってみて、顔認識と顔の向き、顔パーツの位置認識を行うことができた。今回は、その次の”License Plate Recognition with Vitis-AI”をやってみよう。

今回は車のナンバープレートの位置を推定して、その中のナンバーを認識するというお題だ。

まず最初の”Step 1 - Create the SD card”はすでに MicroSD カードを作成済みだ。

”Step 2 - Clone the source code repository”も前回 vitis_ai_cpp_examples を git clone してある。

”Step 3 - Overview of the platedetect example”からやってみよう。

その前に、 initset.sh を起動する。
./initset.sh
Vitis-AI_55_210706.png

~/Vitis-AI/demo/Vitis-AI-Library/samples/platedetect ディレクトリに移動して、test_jpeg_platedetect をやってみよう。
cd ~/Vitis-AI/demo/Vitis-AI-Library/samples/platedetect
./test_jpeg_platedetect sample_platedetect.jpg

Vitis-AI_56_210706.png

エラーになってしまった。

もう一度、ビルドしてみた。
./build.sh
Vitis-AI_57_210706.png

それぞれの実行形式ファイルが更新されたところで、もう一度、 test_jpeg_platedetect をやってみた。
Vitis-AI_58_210706.png

./test_jpeg_platedetect sample_platedetect.jpg
Vitis-AI_59_210706.png

やはりダメだった。これは諦めて次行ってみよう。

Step 4 - Creating the license plate recognition application
静止画の車の写真から車のナンバープレートを認識して、テキストで示す。

最初にビルドを行う。
cd ~/vitis_ai_cpp_examples/platerecognition
chmod +x build.sh
./build.sh

Vitis-AI_60_210706.png

test_video_platerecognition ができた。

sample_platedetect.jpg を現在のディレクトリにコピーして test_video_platerecognition を実行する。
cp ~/Vitis-AI/demo/Vitis-AI-Library/samples/platedetect/sample_platedetect.jpg .
export PLATERECOGNITION_DEBUG=TRUE
./test_jpeg_platerecognition sample_platedetect.jpg

Vitis-AI_61_210706.png

ナンバープレートの認識結果を貼っておく。

  SSD : label=1 x,y,w,h=2,1,272,304 confidence=0.906937
    PlateDetect : x,y,w,h=103,257,63,21 confidence=0.99977
      PlateNum : size=288,96 color=Blue number=[jingQ2P6J2]


sample_platedetect.jpg を引用する。
Vitis-AI_62_210706.jpg

こうやってテキストででてくるのが良い。これだと実際に使えそうだ。
画像出力結果の sample_platedetect_result.jpg を示す。
Vitis-AI_65_210706.jpg

次に動画中の車のナンバープレートを認識する。
cd ~/vitis_ai_cpp_examples/platerecognition
unset PLATERECOGNITION_DEBUG
./test_video_platerecognition ./video/plate_recognition_video.mp4

Vitis-AI_63_210706.png

動画のナンバープレート認識画像を示す。
Vitis-AI_64_210706.jpg
  1. 2021年07月07日 05:02 |
  2. Vitis-AI
  3. | トラックバック:0
  4. | コメント:0

”Head-Pose Estimation on Ultra96-V2”をやってみる

”Vitis-AI 1.3 Flow for Avnet VITIS Platforms”をやってみる2”の続き。

前回は、”Vitis-AI 1.3 Flow for Avnet VITIS Platforms”を参照しながら、Vitis-AI 1.3 の続きを行った。今回は、”Step 3 – Modifying the examples”の”Head-Pose Estimation on Ultra96-V2”をやってみよう。

Vitis-AI 1.3 Flow for Avnet VITIS Platforms”の MicroSD カードでできそうなので、そのまま使用する。

Ultra96V2 を起動して、git clone した。
git clone https://github.com/AlbertaBeef/vitis_ai_cpp_examples
Vitis-AI_44_210705.png

git clone https://github.com/AlbertaBeef/vitis_ai_python_examples
Vitis-AI_45_210705.png

環境構築を行った。
initset.sh を起動した。(””Vitis-AI 1.3 Flow for Avnet VITIS Platforms”をやってみる1”を参照)
Vitis-AI_46_210705.png

~/Vitis-AI/demo/Vitis-AI-Library/samples/facedetect ディレクトリの facedetect を行う。
cd ~/Vitis-AI/demo/Vitis-AI-Library/samples/facedetect

test_video_facedetect を実行するが、test_video_facedetect.cpp はとってもシンプルで、行数は少ない。
Head-Pose Estimation on Ultra96-V2”にブロック図が載っているが、FaceDetect クラスを Create して Run しているようだ。
test_video_facedetect を実行してみよう。
./test_video_facedetect densebox_640_360 0
Vitis-AI_48_210705.png

ssh で入った端末で実行すると、 CH-0 ウインドウが開いてカメラ画像を表示し、顔の位置に青い四角が表示された。
Vitis-AI_47_210705.jpg

FPS は約 30 fps になっているが、結構更新が早い。
なお、カメラは Ultra96V2 の USB ポートに Logicool の Web カメラ C920n を接続して使用している。

次に、 ~/vitis_ai_cpp_examples/facedetectwithheadpose/ ディレクトリに移動して、 test_video_facedetectwithheadpose.cpp をビルドしよう。
なお、 build.sh は実行権限が入っていなかったので、実行権限を入れた。
やはり、”Head-Pose Estimation on Ultra96-V2”にブロック図が載っている。
test_video_facedetect は FaceDetect クラスだけだったが、 facedetectwithheadpose では FaceDetect クラスに加えて、 FaceDetectWithHeadPose クラスも Create しているようだ。
cd ~/vitis_ai_cpp_examples/facedetectwithheadpose/
chmod +x build.sh
./build.sh

test_video_facedetectwithheadpose が生成された。
Vitis-AI_49_210705.png

test_video_facedetectwithheadpose を実行した。
./test_video_facedetectwithheadpose 0
Vitis-AI_50_210705.jpg

顔見えちゃているけど仕方ないか。。。
顔の目と鼻、口の両端、顎に特徴点が表示されて、青い棒で顔の向きが表示されているようだ。フレームレートも約 30 fps でている。

顔の向きを変えても追従する。
Vitis-AI_51_210705.jpg

面白い。。。
これで顔が何処向いているかの判定ができるかも知れないな。。。

次に python のサンプルを動かしてみよう。
cd ~/vitis_ai_python_examples/face_applications
python3 face_headpose.py

Vitis-AI_52_210705.png

imutils が無いと言われてしまったので、インストールしてみる。
pip install imultils
成功した。
Vitis-AI_53_210705.png

もう一度、 python3 face_headpose.py を実行したが、やはり、imutils が無いと言われてしまう。
Vitis-AI_54_210705.png
  1. 2021年07月06日 04:01 |
  2. Vitis-AI
  3. | トラックバック:0
  4. | コメント:0

”Vitis-AI 1.3 Flow for Avnet VITIS Platforms”をやってみる2

”Vitis-AI 1.3 Flow for Avnet VITIS Platforms”をやってみる1”の続き。

前のブログ記事から間が空いてしまったが、”Vitis-AI 1.3 Flow for Avnet VITIS Platforms”を参照しながら、Vitis-AI 1.3 の続きをやってみよう。

なお、Vitis-AI 1.3 を動作させる前には、””Vitis-AI 1.3 Flow for Avnet VITIS Platforms”をやってみる1”で作成した initset.sh を起動している。

resnet50
cd ~/Vitis-AI/demo/VART/resnet50
./resnet50 /usr/share/vitis_ai_library/models/resnet50/resnet50.xmodel

Vitis-AI_31_210704.png

今度は、 ssh でログインした端末

ssh ”IPアドレス” -l root -X

からコマンドを実行しているせいか? Ubuntu 18.04 のメインマシン上にウインドウが開いて画像が表示されている。そのためフレームレートが遅くなっている可能性があるので、ご注意願いたい。
Vitis-AI_32_210704.jpg

segmentation
cd ~/Vitis-AI/demo/VART/segmentation
./segmentation ./video/traffic.mp4 /usr/share/vitis_ai_library/models/fpn/fpn.xmodel

Vitis-AI_33_210704.png

動画です。
Vitis-AI_34_210704.jpg

video_analysis
cd ~/Vitis-AI/demo/VART/video_analysis
./video_analysis ./video/structure.mp4 /usr/share/vitis_ai_library/models/ssd_traffic_pruned_0_9/ssd_traffic_pruned_0_9.xmodel

Vitis-AI_35_210704.png

動画です。
Vitis-AI_36_210704.jpg

segs_and_roadline_detect
cd ~/Vitis-AI/demo/Vitis-AI-Library/apps/segs_and_roadline_detect
./segs_and_lanedetect_detect_x seg_512_288.avi seg_512_288.avi seg_512_288.avi seg_512_288.avi lane_640_480.avi -t 2 -t 2 -t 2 -t 2 -t 2

Vitis-AI_37_210704.png

動画です。Xウインドウのフレームレートなので、遅い可能性があります。
Vitis-AI_38_210704.jpg

seg_and_pose_detect
cd ~/Vitis-AI/demo/Vitis-AI-Library/apps/seg_and_pose_detect
./seg_and_pose_detect_x seg_960_540.avi 0 -t 3 -t 3

Vitis-AI_39_210704.png

seg_and_pose_detect
cd ~/Vitis-AI/demo/Vitis-AI-Library/apps/seg_and_pose_detect
./seg_and_pose_detect_x seg_960_540.avi pose_960_540.avi -t 3 -t 3

Vitis-AI_40_210704.png

動画です。
Vitis-AI_41_210704.jpg

ロジクール ウェブカメラ C920n を Ultra96V2 に接続して、コマンドを実行した。
./seg_and_pose_detect_x seg_960_540.avi 0 -t 3 -t 3
Vitis-AI_42_210704.png

動画です。カメラ画像のポーズ解析結果が見れます。
Vitis-AI_43_210704.jpg

Vitis-AI 1.3 をやっていると Ultra96V2 がかなり熱くなりますね。
  1. 2021年07月04日 18:46 |
  2. Vitis-AI
  3. | トラックバック:0
  4. | コメント:0

”Vitis-AI 1.3 Flow for Avnet VITIS Platforms”をやってみる1

Vitis-AI 1.3 Flow for Avnet VITIS Platforms”を参照しながら、Vitis-AI 1.3 をやってみることにした。

私の所有している Ultra96-V2 でやってみよう。そのために”Ultra96-V2 の PMIC をアップデートして Vitis-AI 1.3 を実行できるようにする”で PMIC の設定をアップデートしておいた。

最初に http://avnet.me/avnet-u96v2_sbc_base-vitis-ai-1.3-image をダウンロードした。
Avnet-u96v2_sbc-Vitis-AI-1-3-2021-02-23.zip がダウンロードできた。
Vitis-AI_15_210619.png

balenaEtchar を立ち上げて Avnet-u96v2_sbc-Vitis-AI-1-3-2021-02-23.zip を読み込んで、 16 GB の MicroSD カードにイメージを書き込む。
Vitis-AI_16_210619.png

イメージ書き込みが終了した。
Vitis-AI_17_210619.png

sudo resize2fs -f /dev/sdf2
を実行したが、またダメだったようだ。
Vitis-AI_18_210619.png

MicroSD カードを Ultra96-V2 に挿して電源ON すると、PetaLinux が立ち上がった。
ID: root, PASSWORD: root でログインできた。
Vitis-AI_19_210619.png

Ultra96-V2 の USB ポートに PLANEX GU-1000T (USB - LAN 変換)が接続されている。そのため、IP アドレスを取得できている。
ifconfig の結果を示す。
Vitis-AI_20_210619.png
Vitis-AI_21_210619.png

ネットワークが接続されているので、ターミナルから
ssh <IP アドレス> -l root
で Ultra96-V2 の PetaLinux にログインした。

Vitis-AI 1.3 Flow for Avnet VITIS Platforms”の”Step 2 - Execute the AI applications on hardware”の設定を initset.sh ファイルにまとめた。
Vitis-AI_22_210619.png

#!/usr/bin/env bash
cd ~/dpu_sw_optimize/zynqmp
source ./zynqmp_dpu_optimize.sh
dmesg -D
dmesg -E
dexplorer --whoami
DISPLAY=:0.0
export DISPLAY
xrandr --output DP-1 --mode 640x480
cd


source ./initset.sh
を実行した。
Vitis-AI_23_210619.png
Vitis-AI_24_210619.png

adas_detection application
cd ~/Vitis-AI/demo/VART/adas_detection
./adas_detection ./video/adas.avi /usr/share/vitis_ai_library/models/yolov3_adas_pruned_0_9/yolov3_adas_pruned_0_9.xmodel

Vitis-AI_25_210619.png

Ultra96-V2 の DisplayPort に接続した Display に車の認識の画像が表示された。(動画です)
Vitis-AI_26_210619.jpg

gtkterm の表示画像を示す。
Vitis-AI_27_210619.png

pose_detection application
cd ~/Vitis-AI/demo/VART/pose_detection
./pose_detection ./video/pose.mp4 /usr/share/vitis_ai_library/models/sp_net/sp_net.xmodel /usr/share/vitis_ai_library/models/ssd_pedestrian_pruned_0_97/ssd_pedestrian_pruned_0_97.xmodel

Vitis-AI_28_210619.png

ポーズの検出画像が表示された。(動画です)
Vitis-AI_29_210619.jpg

gtkterm の表示画像を示す。
Vitis-AI_30_210619.png
  1. 2021年06月21日 04:57 |
  2. Vitis-AI
  3. | トラックバック:0
  4. | コメント:0
»