Vitis-AI

バサロさんの”Ultra96v2向けVitis AI のデモ(SDカードイメージ)2020.1版”をやってみる1
Vitis-AI を使ってみたいので、バサロさんが公開された”Ultra96v2向けVitis AI のデモ(SDカードイメージ)2020.1版”をやってみることにした。これは、同じくバサロさんの公開された”Ultra96v2でVitis AIを使った、MNIST(手書き文字)の実装。”をやって見るための布石である。
バサロさん の”Ultra96v2向けVitis AI のデモ(SDカードイメージ)2020.1版”をやってみる2
前回は、イメージを MicroSD カードに書き込んで、Ultra96V2 に挿入して、PetaLinux をブートした。今回は、Vitis-AI を動かしてみよう。動作させることができた。

Vitis-AI 1.2 を Ubuntu 18.04 LTS にインストールする
バサロさんの”Ultra96v2でVitis AIを使った、MNIST(手書き文字)の実装。”をやるために、Vitis-AI を Ubuntu 18.04 LTS にインストールする。

バサロさん の”Ultra96v2でVitis AIを使った、MNIST(手書き文字)の実装。”をやってみる1
バサロさんの”Ultra96v2でVitis AIを使った、MNIST(手書き文字)の実装。”をやってみよう。
バサロさんの”Ultra96v2でVitis AIを使った、MNIST(手書き文字)の実装。”を使わせていただいて、手順に従って実行していく。
バサロさん の”Ultra96v2でVitis AIを使った、MNIST(手書き文字)の実装。”をやってみる2
バサロさんの”Ultra96v2でVitis AIを使った、MNIST(手書き文字)の実装。”をやってみようということで、前回は、演習データを取り込んで、学習し、学習が終わったデータを凍結化した。今回は、量 子化し、FPGAへのデータ変換を行う。
バサロさん の”Ultra96v2でVitis AIを使った、MNIST(手書き文字)の実装。”をやってみる3
バサロさんの”Ultra96v2でVitis AIを使った、MNIST(手書き文字)の実装。”をやってみようということで、前回は、量子化し、FPGAへのデータ変換を行った。今回は、残りの ultra96v2への準備、実行と USBカメラで、数字認識をやってみよう。

”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 の設定をアップデートしておいた。
”Vitis-AI 1.3 Flow for Avnet VITIS Platforms”をやってみる2
前のブログ記事から間が空いてしまったが、”Vitis-AI 1.3 Flow for Avnet VITIS Platforms”を参照しながら、Vitis-AI 1.3 の続きをやってみよう。
”Head-Pose Estimation on Ultra96-V2”をやってみる
前回は、”Vitis-AI 1.3 Flow for Avnet VITIS Platforms”を参照しながら、Vitis-AI 1.3 の続きを行った。今回は、”Step 3 – Modifying the examples”の”Head-Pose Estimation on Ultra96-V2”をやってみよう。
”License Plate Recognition with Vitis-AI”をやってみる
前回は、、”Step 3 – Modifying the examples”の”Head-Pose Estimation on Ultra96-V2”をやってみて、顔認識と顔の向き、顔パーツの位置認識を行うことができた。今回は、その次の”License Plate Recognition with Vitis-AI”をやってみよう。

”The Dobble Challenge”をやってみる1
”The Dobble Challenge”をやってみようと思う。
これは、3 個の記事がセットになっていて、最初の
”The Dobble Challenge”
で数学とデータセットを学んで、
”Training The Dobble Challenge”
で、Dobbleプレイング機械学習モデルを学習してテストし、
”Deploying the Dobble Challenge on the Ultra96-V2”
で”Training The Dobble Challenge”のモデルを Vitis-AI を使って、Ultra96V2 にデプロイしている。
正に、自分で作成した DNN を Vitis-AI を使用して、Ultra96V2 にデプロイするためのチュートリアルとして使用できるはずだ。
”The Dobble Challenge”をやってみる2
”The Dobble Challenge”をやってみようと思うということで、前回は、パッケージをインストールして、環境を整えた。
今回は、”The Dobble Challenge”を最後までやってみようと思う。
”Training The Dobble Challenge”をやってみる1
前回は、”The Dobble Challenge”を最後まで行ったが、Deck は 2 個表示されただけで、ソフトウェアがデッドロックしてしまった。
今回は、”Training The Dobble Challenge”に従って、 Dobble の CNN モデルをトレーニングしてみよう。
”Training The Dobble Challenge”をやってみる2
前回は、”Training The Dobble Challenge”に従って、 Dobble の CNN モデルをトレーニングして見ようということで、畳込み(アクティベーションは relu)+マックス・プーリングが 3 層とドロップアウト、全結合層、アクティベーション(relu)、全結合層、アクティベーション(softmax)の CNN を学習してテストした。今回は、”Training The Dobble Challenge”の残りをやってみよう。
”Deploying the Dobble Challenge on the Ultra96-V2”をやってみる1
前回は、 ”Training The Dobble Challenge”の残りを行って、Dobble の画像を増やして学習し、テスト・データでの精度が向上するのを確認できた。
今回は、”Deploying the Dobble Challenge on the Ultra96-V2”をやってみることにする。
”Deploying the Dobble Challenge on the Ultra96-V2”をやってみる2
前回は、”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”をやってみる3
前回は、”Deploying the Dobble Challenge on the Ultra96-V2”を見ながら、パソコンでの作業が終了するまでやってみた。つまり、フリーズグラフの量子化、量子化モデルの評価、量子化モデルのコンパイル、ボード 上で実行するために必要なすべてのファイルを./build/targetフォルダにコピーを行った。
今回は、”Deploying the Dobble Challenge on the Ultra96-V2”の残り、 ./build/targetフォルダの内容を Ultra96V2 にコピーして、Ultra96V2 に接続した USB カメラで Dobble を認識してみよう。

kv260_median アクセラレーション・プラットフォームに Vitis-AI の DPU を追加する1
”kv260_median_platform のメディアン・フィルタを KV260 の Petalinux から動作させる30”で ひとまず KV260 のアクセラレーション・プラットフォーム上の回路とハードウエア・カーネルを連帯させて動作させることができた。これで、UltraScale+ MPSoC のボードで Vitis アクセラレーション・アプリケーション開発ができるようになった。
次のFPGAの部屋のブログのシリーズは、その kv260_median アクセラレーション・プラットフォームに Vitis-AI の DPU を追加してみたい。
kv260_median アクセラレーション・プラットフォームに Vitis-AI の DPU を追加する2
kv260_median アクセラレーション・プラットフォームに Vitis-AI の DPU を追加してみたいということで、前回は、Vitis-AI を git clone した。今回は、Vitis-AI のレシピを Petalinux 2022.1 の project-spec/meta-user ディレクトリにコピーして、rootfsコンフィグに Vitis-AI のエントリを追加し、petalinux-config で設定を行ってから、ビルドしたらエラーが発生した。
kv260_median アクセラレーション・プラットフォームに Vitis-AI の DPU を追加する3
前回は、Vitis-AI のレシピを Petalinux 2022.1 の project-spec/meta-user ディレクトリにコピーして、rootfsコンフィグに Vitis-AI のエントリを追加し、petalinux-config で設定を行ってから、ビルドしたらエラーが発生した。今回は、Vitis-AI ライブラリを有効化する時に CONFIG_vitis-ai-library-dbg にチェックを入れなければビルドが通った。ついでに OpenCV ライブラリも追加して、ビルドを行った。その後、sdk.sh を作成し、Petalinux 2022.1 イメージを作成した。
kv260_median アクセラレーション・プラットフォームに Vitis-AI の DPU を追加する4
前回は、Vitis-AI ライブラリを有効化する時に CONFIG_vitis-ai-library-dbg にチェックを入れなければビルドが通った。ついでに OpenCV ライブラリも追加して、ビルドを行った。その後、sdk.sh を作成し、Petalinux 2022.1 イメージを作成した。今回は、作成した Petalinux 2022.1 イメージを balenaEtcher で MicroSD カードに書き込んで、KV260 でブートしてみたところ、途中で止まってしまった。
kv260_median アクセラレーション・プラットフォームに Vitis-AI の DPU を追加する5
前回は、作成した Petalinux 2022.1 イメージを balenaEtcher で MicroSD カードに書き込んで、KV260 でブートしてみたところ、途中で止まってしまった。今回は、従来から使用している KV260 の Petalinux 2022.1 に Vitis-AI を dnf でインストールしてみよう。
kv260_median アクセラレーション・プラットフォームに Vitis-AI の DPU を追加する6
前回は、従来から使用している KV260 の Petalinux 2022.1 に Vitis-AI を dnf でインストールした。今回は、ホストパソコン上で、sysroot を生成し、DPUCZDX8G をダウンロードし、Vitis 2022.1 の kv260_median_pkg ワークスペースでライブラリのリポジトリに DPUCZDX8G を追加した。
kv260_median アクセラレーション・プラットフォームに Vitis-AI の DPU を追加する7
前回は、ストパソコン上で、sysroot を生成し、DPUCZDX8G をダウンロードし、Vitis 2022.1 の kv260_median_pkg ワークスペースでライブラリのリポジトリに DPUCZDX8G を追加した。今回は、dpuprj アプリケーション・プロジェクトを作成し、dpu_conf.vhを修正した。更に、dpuprj_system_hw_link/Hardware/dpu- link.cfg を修正して、make を行った。
kv260_median アクセラレーション・プラットフォームに Vitis-AI の DPU を追加する8
前回は、dpuprj アプリケーション・プロジェクトを作成し、dpu_conf.vhを修正した。更に、dpuprj_system_hw_link/Hardware/dpu- link.cfg を修正して、make を行った。今回は、DPU が挿入された Vivado プロジェクトのブロック・デザインを確認し、arch.json を kv260_myarch.json として dpuprj_system_hw_link ディレクトリにコピーした。
kv260_median アクセラレーション・プラットフォームに Vitis-AI の DPU を追加する9
前回は、DPU が挿入された Vivado プロジェクトのブロック・デザインを確認し、arch.json を kv260_myarch.json として dpuprj_system_hw_link ディレクトリにコピーした。今回は、dpu.dtbo ファイルを用意して、dpu.dtbo、dpu.xclbin、shell.json ファイルを KV260 の Petalinux 2022.1 に SFTP でアップロードした。KV260 の Petalinux でそれらのファイルを /lib/firmware/xilinx/dpuprj にコピーして xmutil でロードすることができた。
kv260_median アクセラレーション・プラットフォームに Vitis-AI の DPU を追加する10
前回は、dpu.dtbo ファイルを用意して、dpu.dtbo、dpu.xclbin、shell.json ファイルを KV260 の Petalinux 2022.1 に SFTP でアップロードした。KV260 の Petalinux でそれらのファイルを /lib/firmware/xilinx/dpuprj にコピーして xmutil でロードすることができた。今回は、”KV260向けにVitisプラットフォームを作成してDPUを動かす その2 (Vitis 2022.1 + Vitis-AI v2.5)”を参考に進めていく。tf_yolov4_coco_416_416_60.3G_2.5.zip と yolov4_leaky_416_tf-zcu102_zcu104_kv260-r2.5.0.tar.gz を wget して、展開した。Vitis-AI の docker を起動して、conda を実行したところで、エラーになってしまった。
kv260_median アクセラレーション・プラットフォームに Vitis-AI の DPU を追加する11
前回は、tf_yolov4_coco_416_416_60.3G_2.5.zip と yolov4_leaky_416_tf-zcu102_zcu104_kv260-r2.5.0.tar.gz を wget して、展開した。Vitis-AI の docker を起動して、conda を実行したところで、エラーになってしまった。今回は、エラーを解消して、続きの環境の設定と量子化および評価に使用するCOCOデータセットをダウンロードして変換し た。
v260_median アクセラレーション・プラットフォームに Vitis-AI の DPU を追加する12
前回は、エラーを解消して、続きの環境の設定と量子化および評価に使用するCOCOデータセッ トをダウンロードして変換した。今回は、Tensorflowモデルの生成と量子化を行った。
kv260_median アクセラレーション・プラットフォームに Vitis-AI の DPU を追加する13
前回は、Tensorflowモデルの生成と量子化を行った。今回は、コンパイルと prototxtの用意 を行った。
kv260_median アクセラレーション・プラットフォームに Vitis-AI の DPU を追加する14
前回は、コンパイルと prototxtの用意 を行った。今回は、できあがった compiled ディレクトリを KV260 の Petalinux 2022.1 にアップロードした。アプリケーション・ソフトウエアを git clone し、ビルドした。古いモジュールをアンロードして、dpuprj をロードした。アプリケーション・ソフトウエアを実行したところ成功した。
kv260_median アクセラレーション・プラットフォームに Vitis-AI の DPU を追加する15
前回は、できあがった compiled ディレクトリを KV260 の Petalinux 2022.1 にアップロードした。アプリケーション・ソフトウエアを git clone し、ビルドした。古いモジュールをアンロードして、dpuprj をロードした。アプリケーション・ソフトウエアを実行したところ成功した。今回は、前回までで”KV260向けにVitisプラットフォームを作成してDPUを動かす その2 (Vitis 2022.1 + Vitis-AI v2.5)”のチュートリアルは成功した。そこで、kv260_median アクセラレーション・プラットフォームに含まれるメディアン・フィルタを使って、ノイズを除去してから YOLOV4 で物体を認識してみたところ成功した。

Vitis-AI 2.5 の Custom OP Workflow のクイックスタートをやってみる1
Vitis-AI 2.5 の Custom OP Workflow のクリックスタートをやる前に Custom OP Workflow について見ていく。
Vitis-AI 2.5 の Custom OP Workflow のクイックスタートをやってみる2
Vitis-AI 2.5 のカスタム OP ワークフローをやってみようということで、前回は、tf2_custom_op_demo.tar.gz をダウンロードして解凍し、1_run_train.sh を実行して学習した。今回は、量子化を行ってコンパイルして XMODL を生成した。

Vitis-AI 2.5 の Custom OP Workflow のクイックスタートを使って、TensorFlow + Keras で学習した MNIST を XMDEL にする
前回は、たぶん MNIST の量子化を行ってコンパイルして XMODL を生成した。今回は、私が自分で学習した MNIST の h5 ファイルを使用して、XMODEL を作成してみよう。

Vitis-AI 2.5 の Custom OP Workflow のクイックスタートをやってみる3
前回は、量子化を行ってコンパイルして XMODL を生成した。今回は、生成された XMODEL と sample.jpg を KV260 に送って、動作させてみたがエラーになってしまった。
Vitis-AI 2.5 の Custom OP Workflow のクイックスタートを使って、TensorFlow + Keras で学習した MNIST を XMDEL にする2
前回は、私が自分で学習した MNIST の h5 ファイルを使用して、XMODEL を作成した。今回は、その XMODEL を使用して、KV260 の Petalinux 2022.1 で実際に MNIST を動作させたが、結果が微妙だった。

自作の白線間走行用 CNN を Vitis-AI の Custom OP WorkFlow で実行する1
”白線間走行用CNNをKerasで学習する”で学習した白線間走行用 CNN を Vitis-AI のカスタム OP ワークフローで動作させてみたいということで、今回は、修正した train_eval_line.py と quntize_curve_line.py を貼っておく。更に、train_curve_run_image、train_curve_run_label、test_curve_run_image、 test_curve_run_label、学習用データとテスト・データを読み込む curve_dataset.py を Vitis-AI/tf2_custom_op_demo ディレクトリにコピーした。
自作の白線間走行用 CNN を Vitis-AI の Custom OP Flow で実行する2
前回は、修正した train_eval_line.py と quntize_curve_line.py を貼っておく。更に、train_curve_run_image、train_curve_run_label、test_curve_run_image、 test_curve_run_label、学習用データとテスト・データを読み込む curve_dataset.py を Vitis-AI/tf2_custom_op_demo ディレクトリにコピーした。今回は、train_eval_line.py による学習を行った。
自作の白線間走行用 CNN を Vitis-AI の Custom OP Flow で実行する3
前回は、train_eval_line.py による学習を行った。今回は、量子化とコンパイルを行って、XMODEL を生成した。
自作の白線間走行用 CNN を Vitis-AI の Custom OP Flow で実行する4
前回は、量子化とコンパイルを行って、XMODEL を生成した。今回は、XMODEL と テスト用画像を kv260 の Petalinux 2022.1 にアップロードして推論したが、結果が間違っているようだった。
自作の白線間走行用 CNN を Vitis-AI の Custom OP Flow で実行する5
”自作の白線間走行用 CNN を Vitis-AI の Custom OP WorkFlow で実行する1”のソースコードだが、”白線間走行用CNNをKerasで学習する”を見ると、配列の次元の位置を変えるには transpose じゃなくて reshape のようだったので、ソースコードを変更した。

Vitis-AI 2.5 の Custom OP Workflow のクイックスタートをやってみる4
”Vitis-AI 2.5 の Custom OP Workflow のクイックスタートをやってみる3”では、7 の数字の認識だけやったので、時分で書いた手書き数字はどのくらい認識できるか?試してみたところ、8 と 9 の推論が間違っていた。



inserted by FC2 system