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
の推論が間違っていた。