FC2カウンター FPGAの部屋 Vitis Vision ライブラリの resize サンプルをやってみる4
FC2ブログ

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

FPGAの部屋

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

Vitis Vision ライブラリの resize サンプルをやってみる4

Vitis Vision ライブラリの resize サンプルをやってみる3”の続き。

L2/examples/resize を Ultra96-V2 で動作させてみように従って、resize をビルドしたところ、sd_card ディレクトリの生成でエラーが出たが、大体一式ビルドできた。前回は、ビルドしたファイルを使用して、Ultra96-V2 の実機で動作を確認できた。動作を確認できたのだが、リサイズ後の画像が残っていないので、寂しい。それに、元画像も 4k とは言いながら HD 解像度だったので、元画像を 4k にして、リサイズ後の画像も保存してみることにした。

まずは、 xf_resize_tb.cpp にリサイズ後の画像を保存するコードを追加した。
HLS での画像出力を resize_hls.jpg ファイルとして、OpenCV での画像出力を resize_ocv.jpg ファイルとして出力する。

    // image write by marsee
    imwrite("resize_hls.jpg", result_hls);
    imwrite("resize_ocv.jpg", result_ocv);


上のコードを追加した。
Vitis_Vision_27_200325.png

これで、 make run TARGET=hw BOARD=Zynq ARCH=aarch64 をもう一度行ったのだが、なかなか sd_card ディレクトリのファイルをうまく更新してくれなかった。
例えば、 resize.exe は resize/build/bin_ultra96v2_min2 に最新のビルドがあるので、各ディレクトリを探しながら build/sd_card ディレクトリに集めた。
そして 4k.jpg も Pinta ツールを使用して、 3840 x 2160 ピクセルに変換した。
Vitis_Vision_33_200326.jpg

resize/build/sd_card ディレクトリを示す。
Vitis_Vision_29_200326.png

Vitis Vision ライブラリの resize サンプルをやってみる3”でやったのと同様に手順を実行した。

まずは、ホスト・パソコンから scp で BOOT.BIN をUltra96-V2 の MicroSD カードの第 1 パーティションに SFTP した。これは、変更したのがホスト・アプリケーションだけなので、必要ないとは思う。念の為。
sudo su
scp BOOT.BIN 192.168.3.23:/run/media/mmcblk0p1

gtk_term から reboot した。

gtk_term でログインして、 /home/root/sd_card を削除した。
rm -r sd_card

Vitis_Libraries/vision/L2/examples/resize/build に cd して、ホスト・パソコンから scp で sd_card ディレクトリを Ultra96-V2 の /home/root に SFTP した。
scp -r sd_card 192.168.3.23:/home/root

Ultra96-V2 のPetaLinux 上で zocl ドライバを起動した。
insmod /lib/modules/4.19.0-xilinx-v2019.2/extra/zocl.ko

cd sd_card してから、init.sh を起動した。
init.sh の内容を示す。

export XCL_BINDIR=xclbin_ultra96v2_min2_hw
./resize.exe 4k.jpg


XRT へのパスを通し、init.sh を実行形式にしてから init.sh を起動した。
export XILINX_XRT=/usr
chmod +x init.sh
./init.sh

すると、resize が動作した。 xf_resize_tb.cpp の表示メッセージを示す。

28.3221ms
Minimum error in intensity = 0.000000
Maximum error in intensity = 0.000000
Percentage of pixels above error threshold = 0.000000


やはり、実行時間が長くなっている。HD の場合は、 7.64396ms だった。約 3.71 倍になっている。
Vitis_Vision_30_200326.png

ログを示す。

root@ultra96v2_min2:~/sd_card# insmod /lib/modules/4.19.0-xilinx-v2019.2/extra/zocl.ko
[  309.146969] zocl: loading out-of-tree module taints kernel.
[  309.156249] [drm] Probing for xlnx,zocl
[  309.160236] [drm] FPGA programming device pcap founded.
[  309.165464] [drm] PR Isolation addr 0x0
[  309.166249] [drm] Initialized zocl 2018.2.1 20180313 for a0000000.zyxclmm_drm on minor 1
root@ultra96v2_min2:~/sd_card# export XILINX_XRT=/usr
root@ultra96v2_min2:~/sd_card# ./init.sh
INFO: Running OpenCL section.
[  357.220695] [drm] Pid 2205 opened device
[  357.224654] [drm] Pid 2205 closed device
[  357.239953] [drm] Pid 2205 opened device
Found Platform
Platform Name: Xilinx
INFO: Device found - edge
XCLBIN File Name: krnl_resize
INFO: Importing xclbin_ultra96v2_min2_hw/krnl_resize.xclbin
Loading: 'xclbin_ultra96v2_min2_hw/krnl_resize.xclbin'
[  357.536445] [drm] Finding IP_LAYOUT section header
[  357.536457] [drm] Section IP_LAYOUT details:
[  357.541271] [drm]   offset = 0x54fcf8
[  357.545537] [drm]   size = 0x58
[  357.549488] [drm] Finding DEBUG_IP_LAYOUT section header
[  357.552630] [drm] AXLF section DEBUG_IP_LAYOUT header not found
[  357.557936] [drm] Finding CONNECTIVITY section header
[  357.563850] [drm] Section CONNECTIVITY details:
[  357.568893] [drm]   offset = 0x54fd50
[  357.573415] [drm]   size = 0x1c
[  357.577229] [drm] Finding MEM_TOPOLOGY section header
[  357.580362] [drm] Section MEM_TOPOLOGY details:
[  357.585406] [drm]   offset = 0x54fc00
[  357.589924] [drm]   size = 0xf8
[  357.596160] [drm] No ERT scheduler on MPSoC, using KDS
[  357.604807] [drm] Fail to install CU 0 interrupt handler: -22. Fall back to polling mode.
[  357.612983] [drm] scheduler config ert(0)
[  357.612994] [drm]   cus(1)
[  357.616997] [drm]   slots(16)
[  357.619691] [drm]   num_cu_masks(1)
[  357.622650] [drm]   cu_shift(16)
[  357.626130] [drm]   cu_base(0xa0000000)
28.3221ms
Minimum error in intensity = 0.000000
Maximum error in intensity = 0.000000
Percentage of pixels above error threshold = 0.000000
[  357.629350] [drm]   polling(1)
[  358.251098] [drm] Pid 2205 closed device
root@ultra96v2_min2:~/sd_card


出力された input.png, resize_hls.jpg, resize_ocv.jpg をホスト・パソコンに引き上げた。
scp 192.168.3.23:/home/root/sd_card/input.png .
scp 192.168.3.23:/home/root/sd_card/resize_ocv.jpg .
scp 192.168.3.23:/home/root/sd_card/resize_hls.jpg .

Vitis_Vision_31_200326.png

Vitis_Vision_32_200326.png

resize_hls.jpg, resize_ocv.jpg を示す。うまく HD に変換されているようだ。
Vitis_Vision_34_200326.jpg

Vitis_Vision_35_200326.jpg
  1. 2020年03月27日 05:21 |
  2. Vitis_Vision
  3. | トラックバック:0
  4. | コメント:0

コメント

コメントの投稿


管理者にだけ表示を許可する

トラックバック URL
https://marsee101.blog.fc2.com/tb.php/4834-8ce5c391
この記事にトラックバックする(FC2ブログユーザー)