皆さん、初めまして。アヴネットのブログを書かせていただいている、「ノリさん」と申します!
今回はKria KV260の アプリケーションの 1つである、AIBOX-ReIDを動作させていきます。
Step0:ハードウェア要件
- Kria KV260 ビジョン AI スターター キット
- KV260用12V電源
- SDカード(16GB以上)
- USB A-MicroB ケーブル
- USBポート付きPC
- LANケーブル
- インターネットに接続されたルータ
- DisplayPortまたはHDMI ケーブル
- 4K (3,840×2,160) モニター
- IPカメラ
- ここでは、次のIPカメラを使用
https://amcrest.com/2mp-wifi-camera-pan-tilt-ip2m-841b-v3.html
- ここでは、次のIPカメラを使用
Step1:ボードのセットアップ AIBOX-ReIDアプリケーションのインストール
ここでは、アプリケーションを動かす前に、ボードのセットアップを行っていきます。
ブートファームウェアの更新を行っていない場合は、あらかじめ、旧バージョンのファームウェアで動作するイメージを次のURLから用意する必要があります(既に更新している場合はスキップ)。
https://www.xilinx.com/member/forms/download/xef.html?filename=petalinux-sdimage-2021.1-update1.wic.xz
ブートファームウェアの更新を行っていない場合は、次のURLを参考に更新を行ってください。バージョンは 2022.1 です(既に更新している場合はスキップ)。
https://xilinx-wiki.atlassian.net/wiki/spaces/A/pages/1641152513/Kria+K26+SOM#Boot-Firmware-Updates
Ubuntuイメージを次のURLからダウンロードし、SDカードに書き込みます。
https://ubuntu.com/download/amd-xilinx

図1のJ11にSDカードを差し込みます。
データ転送をサポートする USB-A - micro-B ケーブル をJ4 及びPCに接続し、PuttyやTeraTermなどを立ち上げてシリアル通信ができるようにしておきます。
OSごとに細かな設定方法が異なるので、下記もご参照ください。
https://www.xilinx.com/products/som/kria/kr260-robotics-starter-kit/kr260-getting-started/booting-your-starter-kit.html
イーサネット ケーブルをJ10に差し込み、ルータ等と接続してインターネットに接続できるようにします。
J5またはJ6と4Kモニターを接続します。
電源をJ12に接続し、Ubuntuを起動させます。
ユーザー名と初期パスワードは共にubuntuです。
sudo 実行時にパスワードの変更を求められるので、変更します。
次のコマンドを実行し、固有の Ubuntu PPA を手動で追加します。
$ sudo add-apt-repository ppa:xilinx-apps $ sudo add-apt-repository ppa:ubuntu-xilinx/sdk
Ubuntuが起動したら、下記コマンドを実行し、インストールされたパッケージの更新を行います。
$ sudo apt update
再起動します。
$ sudo apt upgrade
KV260と互換性のあるパッケージフィードを検索します。
$ sudo apt search xlnx-firmware-kv260
表示から、xilinx-firmware-kv260-aibox-reid があることを確認します。
Sorting... Done Full Text Search... Done xlnx-firmware-kv260-aibox-reid/jammy 0.1-0xlnx1 arm64 [installed] FPGA firmware for Xilinx boards - kv260 aibox-reid application xlnx-firmware-kv260-benchmark-b4096/jammy 0.1-0xlnx1 arm64 FPGA firmware for Xilinx boards - kv260 benchmark-b4096 application xlnx-firmware-kv260-defect-detect/jammy 0.1-0xlnx1 arm64 FPGA firmware for Xilinx boards - kv260 defect-detect application xlnx-firmware-kv260-nlp-smartvision/jammy,now 0.1-0xlnx1 arm64 FPGA firmware for Xilinx boards - kv260 nlp-smartvision application xlnx-firmware-kv260-smartcam/jammy 0.1-0xlnx1 arm64 FPGA firmware for Xilinx boards - kv260 smartcam application
上記、「search」コマンドで表示されない場合は以下のコマンドでxlnx-config をインストールします。
$ sudo snap install xlnx-config --classic --channel=2.x $ sudo xlnx-config.sysinit
AIBOX-ReIDアプリケーションをインストールします。
$ sudo apt install xlnx-firmware-kv260-aibox-reid
Step2: Dockerのインストール及び起動
Dokerのインストールを行います。
$ sudo snap install docker
Dockerのグループを作成し、そこに自分のアカウントを追加することで、sudoなしでDockerのコマンドを使用できるようにします。
$ sudo addgroup --system docker $ sudo adduser $USER docker
Ubuntuを再起動します。
$ sudo shutdown -r now
デスクトップ環境を無効にします(再度有効にしたい場合は、付録の1. を参照)。
$ sudo xmutil desktop_disable
デフォルトで読み込まれているアプリケーションを無効にします。
$ sudo xmutil unloadapp
一度ディスプレイを切り、AIBOX-ReIDアプリケーションを読み込んだ後、再度ディスプレイを有効にします。
$ sudo xmutil dp_unbind $ sudo xmutil loadapp kv260-aibox-reid $ sudo xmutil dp_bind
AIBOX-ReIDのDockerイメージをPullします。
$ docker pull xilinx/aibox-reid:2022.1
Dockerコンテナを起動します。
$ 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/t.conf:/etc/vart.conf \ -v /lib/firmware/xilinx:/lib/firmware/xilinx \ -v /run:/run \ -it xilinx/aibox-reid:2022.1 bash

図2のような画面が表示されます。
イーサネットケーブルでIPカメラとKV260を接続します(インターネットに繋ぐ必要はなし)。
ifconfig でカメラと通信を行うことができるようにします(<config_ip> はカメラのIPの一番下の番号を1に書き換えたもの)。
$ ifconfig eth0 <config_ip>
次のコマンドを打つことで、AI処理した映像をモニターに表示させることができます。
username、passwd、ip_address、port はそれぞれ、カメラの名前、パスワード、IPアドレス、ポートです
RTSPは554番ポートで配信されるので、基本的にポートは554を使用します。
$ aibox-reid -s rtsp://username:passwd@ip_address:port -t rtsp -p 0
上のコマンドは-pオプションによって、表示させる位置を変えることができます(0が左上、1が右上、2が左下、3が右下)。
映像を複数枚表示させたい場合は、次のように-sオプション以下を複数回記述します。
最初の-s オプション以下と、以降の -s オプション以下で、異なるユーザー名やIPアドレスを指定すれば、異なるカメラの映像を同時に表示できます。
$ aibox-reid -s rtsp://username:passwd@ip_address:port -t rtsp -p 0 -s rtsp://username:passwd@ip_address:port -t rtsp -p 1
ファイルを入力として用いる場合は、-sオプションを入力ファイル、-t オプションをfileに、それぞれ書き換えます。
$ aibox-reid -s /tmp/movies/shop.nv12.30fps.1080p.h264 -t file -p 1
4画面で表示させた図を次に示します。

次のコマンドでDockerを終了させることができます。
ここで作成したコンテナを再度使用する場合は、付録の2.を参照してください。
$ exit
感想
それほど手間はかかりませんでしたが、4画面に映像が表示されたときは、とても感動しました。複数の監視カメラなどの映像をAIによって処理することによって、セキュリティやマーケティングに活かすことができると考えられるので、このような技術があると、社会はより発展できるのではないかと。
また、これに限った話ではないのですが、SOMでUbuntuが使えるようになったことで、PetaLinuxなどの知識がなくとも、手軽にLinuxを動作させることができるようになったので、ユーザーの範囲が広がり、コミュニティがより活発になっていくことが期待できると感じました。
付録
1. デスクトップ環境の有効化
次のコマンドでデスクトップ環境を有効化できます。
$ sudo xmutil desktop_enable
2. Docker コンテナの再利用
docker run コマンドだと、実行するたびに新しいコンテナが作成されてしまうので、ここでは、作成したコンテナを再利用する方法について述べます。
次のコマンドで作成したコンテナのコンテナIDを確認できます。
$ docker ps -a
次のコマンドでコンテナを起動できます。
$ docker start <コンテナIDまたはコンテナ名>
起動したコンテナに接続するには、次の2つの方法があります。
$ docker attach <コンテナIDまたはコンテナ名> $ docker exec -it <コンテナIDまたはコンテナ名> bash
docker attach でコンテナに接続した場合は、exit で抜けた後、コンテナが停止します。
docker exec でコンテナに接続した場合は、exit で抜けてもコンテナが停止しません。
docker exec で動かしたコンテナを停止させる場合は、次のコマンドを用います。
$ docker stop <コンテナIDまたはコンテナ名>

ブログ
AMDによる設計およびデバッグ手法のブログ、およびアヴネット社員によるAMD製品を用いた開発チャレンジのブログです。

Kria
Kria SOMはアダプティブSoCデバイスを搭載しており、スマートカメラやエンベデッドビジョンなどに最適です。
AMD製品に関連する技術ブログ
- エンジニアブログの再開およびテクニカルウェビナーのご案内
- 初心者のためのPython & Numpy入門
- KR260でIntel RealSenseを動かしてみた!
- Vitis HLSで足し算IPを作ってみた!(プログラミング編)
- KD240でモータ制御してみた!
- KR260でデジタル信号処理してみた! (3)
- KR260でデジタル信号処理してみた! (2)
- KR260でデジタル信号処理してみた! (1)
- KR260でロボットアームを動かしてみた! (2)
- KR260でロボットアームを動かしてみた! (1)
- KR260でROS2を使ってキャリブレーション&マーカー検出してみた!
- KR260とPynqでAIカメラを動かしてみた!
- KR260でROS2 Perception Stack Applicationを動かしてみた!【2】
- KR260でROS2 Perception Stack Applicationを動かしてみた!
- Kria SOMでTPM2.0を動かしてみた!
- VivadoでKR260のハードウェアデザインを作って動かしてみた!
- ROS2 Multi-Node Communications via TSNを動かしてみた!
- AIBOX-ReIDを動かしてみた!