FPGAでOpenCVを試したメモ。Xilinx(KV260)編

本サイトはアフィリエイト広告を利用しています。
AI

FPGAでOpenCVを試してみました。

使用したボードはXilinx(AMD)のKV260です。

Vitis Vision Libraryを使ってエッジ検出をした内容を紹介します。

 

スポンサーリンク

FPGAでOpenCVを試したメモ。Xilinx(KV260)編

FPGAでOpenCVを試してみました。

テストしたのはエッジ検出(Canny Edge Detection)です。

Vitis Vision Libraryを使って写真からエッジ検出した内容を紹介します。

 

ハード環境

Xilinx(AMD)のKV260というFPGA評価ボードでテストしています。

  • 評価ボード…KV260

 

このKV260は下記の第6回AIエッジコンテストで使用したFPGAボードです。

第6回AIエッジコンテストが凄く難しいけど勉強になった感想

第6回AIエッジコンテストが凄く難しいけど勉強になった感想
第6回AIエッジコンテストに参加していました。 RISC-Vを使って、画像とLIDAR点群からの3D物体検出が課題でした。 ただ貴重な勉強の機会になりましたし、自身への忘備録としても内容を紹介します。

 

ソフト環境

ソフト環境は2023年版のプラットフォームで対応しています。

  • Vivado  2023.1
  • Vitis 2023.1
  • Petalinux 2023.1

インストール方法に関しては下記で紹介した2022年版と同様にできました。

最新版にはアップデートしていませんが、(去年の)下記記事が参考になるかと思います。

VitisとVivadoをインストールする

 

KV260用のSDカードを作る

下記記事を参考にKV260のSDカードを作ります

XILINX KIRA K26(KV260) Petalinux2022.1用起動用SDカードイメージの作り方 - Qiita
KRIAでPetalinuxを起動させる。ザイリンクスのSOMであるKRIAはその値段の安さ、性能の高さから、人気があります。一方で開発の仕方がわからないっていうのをよく聞きます。情報はあるの…

 

筆者が今回のテストした時期の2023年の8月頭でした。

その時はXilinxの下記WikiページにKV260用にプレビルドしたイメージがありませんでした。

 https://xilinx-wiki.atlassian.net/wiki/spaces/A/pages/1641152513/Kria+K26+SOM#PetaLinux

 

ビルド元のBSPファイルは下記にありますので、ダウンロードしてpetalinuxを動かします。

 https://xilinx-wiki.atlassian.net/wiki/spaces/A/pages/1641152513/Kria+K26+SOM#PetaLinux-Board-Support-Packages

 

作成したSDイメージ(petalinux-sdimage.wic)をbalenaetcherなどを使って書き込みます。

/xilinx-kv260-starterkit-2023.1/images/linux の箇所にあります

 

OpenCVをKV260で試す

先駆者様の手法を真似て、まずは同様にKV260でOpenCVを動かしてみます。

実施した内容に関しては下記記事をご参考ください。

OpenCVのFPGAハードウェア化 KRIAで行うOpenCVの高速化(Vitis2022.1版) - Qiita
FPGAでOpcnCVのハードウェア化画像ライブラリーとして、人気の高い、OpenCVC言語でもPythonでも簡単に使えることが大きな特徴です。このOpenCVをもっと高速化できないのか?…

 

2022年度版でしたが、特に2023年の環境でも実施できました。

ダウンロードするファイルなどは異なるので、注意が必要です。

 

確かKV260上で動かす際に一度エラーが出ました。

libxilinxopencl.so.2: cannot open shared object file: No such file or directory

 

ネットで調べると公式に解決方法が記載されていました。

XRTをインストールし直すと動作しました。

 https://docs.xilinx.com/r/en-US/Vitis-Tutorials-Vitis-Platform-Creation/Test-2-Run-Vector-Addition-Application?tocId=8w7OXVMcu2r75uTH6UGdhA

 

参考記事同様に、opencvで写真をリサイズ(resize)するテストを実行できました。

opencvでリサイズした写真と元の写真のピクセル比率を確認テストしているようです。

 

KV260+OpenCVでエッジ検出をしてみる

単純に真似ただけでは勿体ないので、違うパターンでもテストしてみます。

エッジ検出(Canny Edge Detection)をテストしています。

公式のソースコード・ベンチマーク結果などは下記リンク先です。

 https://github.com/Xilinx/Vitis_Libraries/tree/master/vision/L2/examples/canny

 https://xilinx.github.io/Vitis_Libraries/vision/2022.1/canny-bm.html

 

プラットフォームの作り方は参照したresizeの方法と同じです。

exampleの中に「Canny L2 Test」があります。

 

KV260に作成したプラットフォームのファイルと写真(test.jpg) を送ります。

 

あとはKV260上で実行するだけです。

 

もともとの写真が下記です。下記記事で使っていたナゴヤドームの写真です。

ナゴヤドームの内野SSの見え方。一塁側の座席で見やすかった件

 

OpenCVでエッジ検出したのが下記です。無事できました。

 

まとめ

FPGA(KV260)を使ってOpenCVでエッジ検出してみました。

Vitis Vision Libraryには色々なサンプル例があります。

もし興味ある方はぜひ同様にテストしてみてください。

 

コメント