AIビジョンとKria KV260ビジョンAIスターターキット

Ari Mahpour
|  投稿日 2024/11/18 月曜日
AIビジョンとKria KV260ビジョンAIスターターキット

Kria KV260 Vision AI スターターキットの始め方では、AMD Xilinxから提供されているKria KV260 Vision AI スターターキットを開封し、遊んでみました。このボードは、Ubuntuの完全なディストリビューションを実行できるほど強力なFPGAとARMプロセッサを提供します。この記事では、Raspberry Piカメラを使用してSmartCamアプリケーションを構築し、実行します。このアプリケーションは、リアルタイムで顔を検出し、コンピューターモニターにその様子を表示することができます。

このチュートリアルを書いた理由

このチュートリアルは、AMD Xilinxの方々がまとめた元のチュートリアルに続くものです。このチュートリアルの多くが、彼らのものと非常に似ている(同じである)ことに気づくでしょう。このチュートリアルを初めて見たとき、圧倒される感じがしました。私はFPGA設計にかなり詳しい背景を持っていますが、彼らのチュートリアルを一つ一つ丁寧に進めることは時には難しく、少し気が重くなることがあります。もう少し直感的で、簡単にフォローできるものを探していました。他の人が書き直したチュートリアルをじっくりと読んだ後、私が見つけたものにはあまり満足できませんでした。それゆえ、自分自身で書くことにしました。

もし詳細な情報を求めているなら、元のチュートリアルを確認することを強くお勧めします。いくつかのステップは非常に明確ではありませんが、このチュートリアルではそれらを乗り越える(あるいは回避する)試みをしています。最も重要なことは、この記事を書いている時点で、サンプルのSmartCamアプリケーションは最新のファームウェアでは動作しないようでした。フォークしたリポジトリでは、デモをスムーズに起動できるように自動化スクリプト(さらには必要な最終フラッシュファイルまで)を作成しました。このチュートリアルを手に入れたことで、できるだけ早くハードウェアターゲットでのAIに飛び込み、デモを成功させた後に私が感じた「わお」の瞬間を体験できることを願っています。

ハードウェアの前提条件

もちろん、AMD XilinxのKria KV260 Vision Starter Kitが必要になります。ボードのセットアップが必要で、それは私の前のチュートリアルGetting Started with the Kria KV260 Vision AI Starter Kitに従って行うことができます。また、Raspberry Pi Camera Module V2も必要です。V2という部分が非常に重要です。私は安価なV1バージョンのカメラや他の類似品のカメラでデモを実行しようとしましたが、成功しませんでした(そして、これらがこのデモで機能しないことを証明できます)。カメラのリボンケーブルをボード上のJ9ポートに接続する必要があります。最後に、KV260キットに接続するためのHDMI対応のモニター(またはテレビ)と(もちろん)HDMIケーブルが必要です。

ソフトウェアの前提条件

デモを始める前に、DockerとSmartCamの例をKria KV260デバイスにインストールしておく必要があります(SmartCamアプリケーションは使用しませんが)。また、Xilinx Vitis(フルインストール)バージョン2022.1も必要です。Xilinx Vitisのバージョン番号は非常に重要であることに注意してください。このチュートリアルは、そのバージョン専用に構築されています。

DockerはConvenience Scriptメソッドを使用してインストールできます。それを行うには、ターミナルを開いて以下の行を実行します:

Get Ready for the Electronics Design Jobs You Want


Experience hands-on learning in PCB and hardware design with Altium's Student license, cloud access & comprehensive curriculum.

curl -fsSL https://get.docker.com -o get-docker.sh

sudo sh ./get-docker.sh --dry-run

sudo usermod -aG docker $USER

SmartCamアプリケーションパッケージをインストールするには、ターミナルで次のコマンドを実行します:

sudo apt install -y xlnx-firmware-kv260-smartcam

また、元のリポジトリの私のフォークをクローンする必要があります:

git clone --recursive --branch rpi-camera-demo-clean

https://github.com/amahpour/kria-vitis-platforms.git

ビルドの実行

できるだけシンプルにするために、ビルドプロセスを自動的に進めるスクリプトを書きました。オリジナルのチュートリアルにあるスクリーンショットをフォローしてブロックデザインを更新したり、コードを変更する必要はありません。このチュートリアルは、Vitisユーザーインターフェースに飛び込むことなくビルドを実行しようとします。ビルドスクリプトを実行するには、クローンしたリポジトリにcdで移動し、以下のコマンドを実行してください:

cd kv260

./build_demo.sh

このスクリプトはLinuxを念頭に置いて書かれています。Windowsを使用している場合は、WSL 2にUbuntuをセットアップして、そこにXilinx Vitisをインストールすることを強くお勧めします(Windowsではなく)。

Vivadoが見つからないというエラーが出た場合、Xilinxの設定をソースしていない可能性があります。このコマンドを実行してください:

Launch Your Career in Electronics Design


Gain the skills top employers look for. Start mastering PCB design with the Altium Student Lab today!

source /tools/Xilinx/Vivado/2022.1/settings64.sh

build_demo.shスクリプトを実行すると、リポジトリのkv260/extras/フォルダに更新されたブロックデザイン、ピン制約ファイル、プロジェクト設定が含まれているため、チュートリアル全体を完全にバイパスします。チュートリアルをステップバイステップで進めたい場合は、オリジナルを見ることを強くお勧めします。

すべてが正しく実行された場合、

kv260/overlays/examples/smartcam/binary_container_1/link/int/kv260-raspi-dpu.bit.bin

にビットストリームファイルが生成されているはずです。ビルドプロセスには1〜2時間かかることがあります。それを待つ時間がない人もいるので、バックアップとしてkv260/extras/フォルダにビットストリームファイルを含めています。

デモの実行

この時点で、ファイルをKV260ボードにコピーしてデモを実行する準備が整いました。USBフラッシュドライブまたはSCPコマンド(セキュアコピー)を介してファイルを転送できます。次のファイルを転送する必要があります:

  • kv260/extras/kv260-raspi-dpu.bit.bin(または上記で生成されたもの)
  • kv260/extras/kv260-raspi-dpu.dtbo
  • kv260/extras/kv260-raspi-dpu.xclbin

KV260デバイスに戻ったら、通常ファームウェアがロードされるライブラリセクションにこれらのファイルを移動する必要があります:

Lay Out Your Track: Prepare for a Career in PCB Design


Develop the electronics design expertise that employers look for with Altium’s free Student Lab!

sudo mkdir /lib/firmware/xilinx/kv260-raspi-dpu

sudo mv kv260-raspi-dpu.bit.bin /lib/firmware/xilinx/kv260-raspi-dpu/

sudo mv kv260-raspi-dpu.dtbo /lib/firmware/xilinx/kv260-raspi-dpu/

sudo mv kv260-raspi-dpu.xclbin /lib/firmware/xilinx/kv260-raspi-dpu/kv260-raspi-dpu.xclbin

sudo cp /lib/firmware/xilinx/kv260-smartcam/shell.json /lib/firmware/xilinx/kv260-raspi-dpu/

これで、アプリケーションを起動する準備が整いました。この操作を行うとモニターがオフになるため、SSH経由またはUSBシリアルインターフェース(つまり、USBポートを使用し、PuTTYやTeraTermを使用する)で実行する必要があります。

sudo xmutil listapps

sudo xmutil unloadapp

sudo xmutil loadapp kv260-raspi-dpu

sudo xmutil desktop_disable

docker run \

--env="DISPLAY" \

-h "xlnx-docker" \

--env="XDG_SESSION_TYPE" \

--net=host \

--privileged \

--volume="$HOME/.Xauthority:/root/.Xauthority:rw" \

-v /tmp:/tmp \

-v /dev:/dev \

-v /sys:/sys \

-v /etc/vart.conf:/etc/vart.conf \

-v /lib/firmware/xilinx:/lib/firmware/xilinx \

-v /run:/run \

-it xilinx/smartcam:latest bash

Dockerコンテナ内で、ファイルにわずかな変更を加える必要があります。そのためにはまずvimをインストールする必要があります:

apt-get update -y && apt-get install -y vim

vim /opt/xilinx/kv260-smartcam/share/vvas/facedetect/preprocess.json

vimで"i"(挿入モード)を押してファイルの編集を開始します。"xclbin"ファイルを指す行を探して、このパスに更新してください:

/lib/firmware/xilinx/kv260-raspi-dpu/kv260-raspi-dpu.xclbin

エスケープキーを押してください。":wq"と入力して(保存して終了)、エンターキーを押します。その後、以下の(非常に長い)コマンドでアプリケーションを実行できます:

gst-launch-1.0 mediasrcbin name=videosrc media-device=/dev/media0  v4l2src0::io-mode=mmap v4l2src0::stride-align=256 !  video/x-raw, width=1920, height=1080, format=NV12, framerate=30/1  ! tee name=t ! queue ! vvas_xmultisrc kconfig="/opt/xilinx/kv260-smartcam/share/vvas/facedetect/preprocess.json" ! queue ! vvas_xfilter kernels-config="/opt/xilinx/kv260-smartcam/share/vvas/facedetect/aiinference.json" ! ima.sink_master                     vvas_xmetaaffixer name=ima ima.src_master ! fakesink t. ! queue max-size-buffers=1 leaky=2 ! ima.sink_slave_0 ima.src_slave_0 ! queue ! vvas_xfilter kernels-config="/opt/xilinx/kv260-smartcam/share/vvas/facedetect/drawresult.json"          ! queue ! kmssink driver-name=xlnx plane-id=39 sync=false fullscreen-overlay=true

すべてが正しく機能した場合、モニター(またはテレビ)はラズベリーパイカメラからのフィードで再びオンになります。リアルタイムでビデオフィード内に検出された顔の周りに青いボックスを配置します。

Get Ready for the PCB Design Job of Your Dreams


Start your electronics design career with Altium's free Student Lab, comprehensive curriculum & certificates

結論

この記事では、Raspberry Pi Cameraを使用したSmartCamチュートリアルをレビューし、「ただ動かす」ために必要なショートカットを観察しました。この時点で、リアルタイムで顔を検出するKria KV260上で自分のSmartCamを稼働させることができるはずです。私の目標は、プロセスを簡素化して、元のチュートリアルを手探りで進めるよりも、AIが動作するのを見る楽しさにもっと集中できるようにすることでした。このガイドが、「動いた」という瞬間をより明確かつ迅速に迎えるためのお手伝いができたことを願っています。さあ、あなたの番です。この強力なスターターキットで何ができるか、創造的に探求してみてください。

注:このプロジェクトのすべてのコードはこのリポジトリにあります。

筆者について

筆者について

Ariは、設計、デバイスパッケージ、テスト、および電気、機械、およびソフトウェアシステムの統合において幅広い経験を持つエンジニアです。彼は、設計/デザイン、検証、テストのエンジニアをまとめて団結したグループとして機能させることに情熱を注いでいます。

関連リソース

関連する技術文書

ホームに戻る
Thank you, you are now subscribed to updates.