reVISION, xfOpenCV

Xilinx reVISION、xfOpenCV のExampleをやってみた1(of2)
Xilinx 社から機械学習やコンピュータ・ビジョン・ツールの reVision と、OpenCVをハードウェア化する xfOpenCV が出た。これらのExample をやってみることにした。
Xilinx reVISION、xfOpenCV のExampleをやってみた2(of2)
久しぶりのreVISION, xfOpenCV だ。今まで他のことに時間を取られてできなかったがやっていきたい。
今回は、reVISION の中で使用されているVivado HLS に焦点を当てていきたい。
SDx の of2 プロジェクトをやってみた。
Xilinx reVISION、xfOpenCV のExampleをやってみた3(of2のVivadoプロジェクト)
前回は、of2 のVivado HLS のプロジェクトを見ていった。今回は of2 のVivado プロジェクトについて見ていこう。

ZYBOでの xfOpenCVライブラリの使用1
FPGAボードを持っていないreVISION をやっていても面白くないので、ZYBOのxfOpenCV をやってみることにした。

reVISION-Zybo-Z7-20をやってみた1(petalinux 2017.4 のインストール)
Digilent 社のGithub にreVISION-Zybo-Z7-20 が追加されたので、やってみることにした。
まずは、環境を構築していこう。プラットフォームを構築した。Petalinuxをインストールした。
reVISION- Zybo-Z7-20をやってみた2(Vivadoでインプリメント)
前回は、Digilent 社のGithub の reVISION-Zybo-Z7-20 を見ながらPetalinux のインストールを行った。今回は、Digilent 社のGithub の reVISION-Zybo-Z7-20 を git clone して、その中のVivado 2017.4 プロジェクトを論理合成、インプリメント、ビットストリームの生成を行う。
reVISION- Zybo-Z7-20をやってみた3(.das ファイルを出力)
前回は、Digilent 社のGithub の reVISION-Zybo-Z7-20 を git clone して、その中のVivado 2017.4 プロジェクトの論理合成、インプリメント、ビットストリームの生成を行った。今回は、SDSoC のハードウェア・プラットフォームである .das ファイルを出力する。
reVISION- Zybo-Z7-20をやってみた4(SDx用プラットフォームの作成)
前回は、SDx のハードウェア・プラットフォームの .das ファイルを出力した。今回は、Zybo Z7-20リビジョンプラットフォームを生成する。
reVISION- Zybo-Z7-20をやってみた5(バイラテラル・フィルタのサンプルのコンパイル)
前回は、SDx のプラットフォーム作成機能を使用して、ZYBO-Z7-20 の reVISION プラットフォームを作成した。今回は、そのZYBO-Z7-20 の reVISION プラットフォームを使用して、バイラテラル・フィルタのサンプルをやってみよう。
reVISION- Zybo-Z7-20をやってみた6(Zybo-Z7-20 で確認)
前回は、バイラテラル・フィルタのサンプルをSDSoC でコンパイルした。今回は、前回コンパイルしたSDSoC のバイラテラル・フィルタのSD カード・イメージをMicro SD カードに焼いて、Zybo-Z7-20 で確かめた。
reVISION- Zybo-Z7-20をやってみた7(Vivado と Vivado HLS)
前回は、コンパイルしたSDSoC のバイラテラル・フィルタのSD カード・イメージをMicro SD カードに焼いて、Zybo-Z7-20 で確かめた。今回は、バイラテラル・フィルタのVivado と Vivado HLS のプロジェクトを見ていこう。
reVISION- Zybo-Z7-20をやってみた8(Dense Non-Pyramidal Optical Flow)
前回は、バイラテラル・フィルタのVivado と Vivado HLS のプロジェクトを見た。今回は、違うサンプルをやってみようと思う。やってみるのは、Dense Non-Pyramidal Optical Flow とする。
reVISION- Zybo-Z7-20をやってみた8(Harrisコーナー検出)
前回は、reVISION-Zybo-Z7-20 の Dense Non-Pyramidal Optical Flow をやってみた。今回は、Harrisコーナー検出をやってみることにしよう。ただし、使用するプラットフォームは”@ikwzmさん の”FPGA+SoC+Linux+Device Tree Overlay+FPGA Region(SDSoC対応編)”をやってみる4”で使用した @ikwzm さんのプラットフォームとする。
reVISION- Zybo-Z7-20をやってみた9(再びDense Non-Pyramidal Optical Flow)
”reVISION-Zybo-Z7-20をやってみた8(Harrisコーナー検出)”の続 きではあるのだが、”@ikwzmさんの”FPGA+SoC+Linux+Device Tree Overlay+FPGA Region(SDSoC対応編)”をやってみる4”でエラーになった Dense Non-Pyramidal Optical Flow の対処方法を @ikwzm さんに教えて頂いたので、もう一度やってみようと思う。@ikwzm さん、お世話になり、ありがとうございました。
reVISION- Zybo-Z7-20をやってみた10(stereo)
前回は、CMA領域を 64MB に増やして、Dense Non-Pyramidal Optical Flowをやってみたところエラーになることもなく正常に実行できた。今回は、reVISION-Zybo-Z7-20 の File I/O の example の残りの stereo をやってみよう。
reVISION- Zybo-Z7-20をやってみた11(WarpTransform)
前回は、reVISION-Zybo-Z7-20 の File I/O の example の stereo をやってみた。今回は、reVISION-Zybo-Z7-20 の File I/O の example の最後の WarpTransform をやってみた。
reVISION- Zybo-Z7-20をやってみた12(mnist_conv_nn10_sDMA)
reVISION-Zybo-Z7-20をやっていたのは、畳み込みニューラル・ネットワークをreVISION, xfOpenCV (OpenCV 使っていないので、実質的には SDSoC だが)で実装するためだった。それをちょっと再開してみよう。理由はあるのだがここでは書かないでおく。

Vivado HLS 2019.2 で xfOpenCV を使用する1(dilation 1)
Vivado HLS 2019.2 で xfOpenCV を使ってみることにした。どのくらい使えるのだろうか?
前回、Vivado HLS 2018.3 でも同様に dilation をやっている。
Vivado HLS 2019.2 で xfOpenCV を使用する2(dilation 2)
前回は、Vivado HLS 2019.2 で xfOpenCV を使ってみることにしたということで、xfopencv/HLS_Use_Model/Standalone_HLS_AXI_Example のスクリプトを実行して、 dilation_project を作成し、C シミュレーションの結果を表示した。今回は、C コードの合成、C/RTL 協調シミュレーション、Export RTL を行った。

Vivado HLS 2019.2 で xfOpenCV を使用する3(sobel filter 1)
前回は、xfOpenCV の dillation をやったが、今回は、xfOpenCV の xfopencv/examples/sobelfilter をやってみようと思う。ただし、この soblefilter は xf::Mat のインターフェースなので、 AXI4-Stream インターフェースに変更した。更に現状の解像度では、Ultra96 のリソースに入らないので、画像のサイズを縮小した。
Vivado HLS 2019.2 で xfOpenCV を使用する4(sobel filter 2)(xfOpenCV を使用する時のVivado HLSの設定方法)
前回は、xfOpenCV の xfopencv/examples/sobelfilter をやってみようと思う。ただし、この soblefilter は xf::Mat のインターフェースなので、 AXI4-Stream インターフェースに変更した。更に現状の解像度では、Ultra96 のリソースに入らないので、画像のサイズを縮小した。今回は、sobel_filter プロジェクトを使用して、 xfOpenCV を使用する時の GUI 上での Vivado HLSの設定方法を紹介する。
Vivado HLS 2019.2 で xfOpenCV を使用する5(sobel filter 3)
前回は、sobel_filter プロジェクトを使用して、 xfOpenCV を使用する時の GUI 上での Vivado HLSの設定方法を紹介した。今回は、C シミュレーション、C コードの合成、C/RTL 協調シミュレーション、Export RTL を行った。Export RTLはエラーになった。

Vivado HLS 2019.2 で xfOpenCV を使用する6(resize 1)
前回は、sobel_filter をやってみたが、今回は、resize をやってみよう。 xfOpenCV の examples/resize を使用しているが、sobel_filter と同様に、AXI4-Stream 入出力に変更するために xf_resize.cpp を追加してある。
Vivado HLS 2019.2 で xfOpenCV を使用する7(resize 2)
前回は、resize をやってみようということで、 xfOpenCV の examples/resize を使用しているが、sobel_filter と同様に、AXI4-Stream 入出力に変更するために xf_resize.cpp を追加した。そのソースコードを貼って、Vivado 2019.2 のプロジェクトを生成した。
今回は、resize の C シミュレーションを行った。
Vivado HLS 2019.2 で xfOpenCV を使用する8(resize 3)
前回は、resize の C シミュレーションを行った。 800 x 600 ピクセルの画像を 60 x 45 ピクセルに変換した時は、本当に画像が薄くなってしまった。80 x 60 ピクセルの画像に変換した時も 60 x 45 ピクセルよりは濃くなったが、やはり薄かった。ユーザーズガイドを見たところ、縮小は 1/4 までだったので、200 x 150 ピクセルの画像に変更したところ、正常に縮小することができた。
今回は、200 x 150 ピクセルに縮小する場合の C コードの合成、C/RTL 協調シミュレーション、Export RTL を行った。

Vivado HLS 2019.2 で xfOpenCV の medianblur をやってみる1
もう1つ xfOpenCV をやってみようということで、日曜日の朝に AXI4-Stream 版の medianblur を作って、C シミュレーション、C コードの合成までできていたはずだったが、日曜日の夕方にカラー画像だったので、白黒画像でやってみようと思ったら AXI4-Stream から Mat 変換で empty だと言われて止まらなくなった。カラー画像対応に戻しても同様に C シミュレーションが動かなくなった。まだ修復できていないので、medianblur の Mat 画像版というか、xfOpenCV の medianblur サンプルそのままをやってみよう。
Vivado HLS 2019.2 で xfOpenCV の medianblur をやってみる2
前回は、medianblur の Mat 画像版というか、xfOpenCV の medianblur サンプルそのままをやってみようということで、C シミュレーションを行って、ノイズ除去することができた。今回は、C コードの合成、C/RTL 協調シミュレーション、Export RTL を行った。

Vivado HLS 2019.2 で xfOpenCV のAXI4-Stream 版 medianblur をやってみる1
”Vivado HLS 2019.2 で xfOpenCV の medianblur をやってみる1”で動いていた AXI4-Stream 版 medianblur が動かなくなったと書いたが、これは、画像の大きさを指定するところで、height と width を取り違えていたからだった。4k2k 画像から HD 画像に変更しようとして、height と width を間違ってしまっていたのだった。orz
新たに作り直したAXI4-Steram 版の medianblur を紹介する。だいぶ自分の書き方になってきたのだが、xf_headers.h は Xilinx 社のソースコードをそのまま使用している。
なお、白黒画像とカラー画像を define で切り替えるようにしてある。
Vivado HLS 2019.2 で xfOpenCV のAXI4-Stream 版 medianblur をやってみる2
前回は、新たに作り直したAXI4-Steram 版の medianblur のソースコードを貼った。今回は、カラー画像出力と白黒画像出力の C シミュレーションを行った。
Vivado HLS 2019.2 で xfOpenCV のAXI4-Stream 版 medianblur をやってみる3
前回は、カラー画像出力と白黒画像出力の C シミュレーションを行って、成功した。今回は、カラー画像出力と白黒画像出力それぞれにおいて、C コードの合成、C/RTL 協調シミュレーション、Export RTL を行った。

Vitis HLS 2020.2 で xfOpenCV の medianblur をやってみよう
”Vitis Vision Library で AXI4-Stream 入出力の medianblur を実装する1”で Vitis Vision Library で AXI4-Stream 入出力の medianblur を実装したのだが、C シミュレーションはエラーで実行できなかった。
それでは、 xfOpenCV を Vitis HLS 2020.2 では使えないのだろうか? ということでやってみた。結果はエラーになった。

xfOpenCV の cvMat2AXIvideoxf() の AXI4-Stream の RGB バイト割当
AXI4-Stream インターフェース版のメディアン・フィルタを自分の環境で使用したい。テストベンチでは cvMat2AXIvideoxf() で cv::Mat を AXI4-Stream に変換しているが、RGB の 8 ビットのバイトは 32 ビット幅でどのバイト・フィールドにあるのかを確かめる。

ZYBO Z7-20 に xfOpenCV の median フィルタを実装する1(Vivado HLS 編)
Vitis HLS 2020.2 の Vitis Vision Library の medianblur をやっていたが、今の所、どうしても AXI4-Stream インターフェースにすることができなかった。また、Mat.data のアドレスを与える方法も、そのデータフォーマットがよく分からずにハードウェアすることができていない。(ツィッターで教えてもらったので、うまく行きそう だ。ありがとうございます。)
そこで、以前やってみた AXI4-Stream 版 xfOpenCV の medianblur を ZYBO Z7-20 に実装してみよう。
ZYBO Z7-20 に xfOpenCV の median フィルタを実装する2(Vivado + Vitis 編)
以前、xfOpenCV のサンプルとして Vivado HLS 2019.2 で medianblur を実装したが、それを ZYBO Z7-20 に実装してみようということで、前回は、Vivado HLS 2019.2 で medianblur を再度 IP にした。今回は、その IP を使用して、Vivado 2019.2 でプロジェクトを作成して、ブロックデザインを作成し、論理合成、インプリメンテーション、ビットストリームの生成を行う。 XSA ファイルを生成して、Vitis 2019.2 を立ち上げて、プラットフォームとアプリケーション・プロジェクトを作成し、ZYBO Z7-20 で実機検証を行う。




inserted by FC2 system