KV260のSmartCameraデモを動かしてみる


はじめに

KV260が手元にきてからROS2の方ばかり調べていたので、久しぶりにVVAS(ビデオ解析モジュール)の方をさわってみます。今回はKV260用公開されているSmartCameraデモがあり、見ていきたいと思います。

SmartCameraとは?

SmartCameraとは、カメラや音声デバイスをキャプチャして、顔検出や白線検出などのAI処理を実行し、HDMIモニターに出力する、もしくはストリーミング配信するというデモ処理になります。
以下のような処理ブロックで構成されています。

SDカードの準備

最初に以下のページにアクセスし、SD Card ImageのリンクをクリックしてPetaLinuxイメージをダウンロードします。

https://xilinx.github.io/kria-apps-docs/main/build/html/docs/smartcamera/docs/app_deployment.html

ダウンロードが完了したらEtcherでSDカードに書き込みます。

KV260の準備

書き込みが完了したらSDカードをKV260に挿し込みます。
PetaLinux起動後に幾つかのパッケージをダウンロードするので、ネットワークにつながるようにEthernetも接続して置きます。
KV260とPCをUSBシリアルケーブルで接続してPCからターミナルソフトでアクセスできるようにします。
今回はMIPIカメラCAVBA-000Aを使用します。
以下のようにKV260のIASコネクタに接続しておきます。

PetaLinux設定

ターミナルソフトを起動しKV260の電源を入れます。
起動するとユーザー名と新しいパスワード設定が求められるので、ユーザー名はpetalinuxで任意のパスワードを設定してログインします。

xilinx-k26-starterkit-2020_2 login: petalinux
You are required to change your password immediately (administrator enforced)
New password:
Retype new password:

インストール済みパッケージを更新します。

$ sudo dnf update
$ sudo dnf clean all

SmartCameraパッケージを確認してインストールします。

$ sudo xmutil getpkgs
$ sudo dnf install packagegroup-kv260-smartcam.noarch

途中に何度かIs this ok [y/N]:と聞かれるのでyと入力して進めます。

アプリケーションのロード

次にアプリケーションをロードします。
最初にファームウエアの情報を確認します。Active_slot=0になっているkv260-dpが現在ロードされています。

$ sudo xmutil listapps
                     Accelerator                            Base           Type    #slots         Active_slot

                        kv260-dp                        kv260-dp       XRT_FLAT         0                  0,
                  kv260-smartcam                  kv260-smartcam       XRT_FLAT         0                  -1
Socket 9 closed by client

一旦kv260-dpをアンロードします。
ファームウエアの情報を見ると、kv260-dpActive_slot=-1になりアンロードされていることが確認できます。

$ sudo xmutil unloadapp
$ sudo xmutil listapps
                     Accelerator                            Base           Type    #slots         Active_slot

                        kv260-dp                        kv260-dp       XRT_FLAT         0                  -1
                  kv260-smartcam                  kv260-smartcam       XRT_FLAT         0                  -1
Socket 6 closed by client

SmartCameraのファームウエアをロードします。
kv260-smartcamがロードされてActive_slot=0となる事を確認します。

$ sudo xmutil loadapp kv260-smartcam
$ sudo xmutil listapps
                     Accelerator                            Base           Type    #slots         Active_slot

                        kv260-dp                        kv260-dp       XRT_FLAT         0                  -1
                  kv260-smartcam                  kv260-smartcam       XRT_FLAT         0                  0,
Socket 6 closed by client

アプリケーションの起動

以上で準備が完了したのでSmartCameraアプリケーションを起動してみます。
MIPIカメラなので--mipiオプションでFullHD、30フレームを指定します。
出力のターゲットはディスプレイを指定し実行します。

sudo smartcam --mipi -W 1920 -H 1080 -r 30 --target dp

結果、HDMIディスプレイにカメラ映像が表示されました。

おわりに

SmartCameraを動かしてみましたが、ZCU104の時と比べてアプリケーションも準備されていて、使い安くなった印象です。顔検出もしっかりと出来ていました。