Custom Meta Tags
2503 Hero Banner

AMD製品に関連する技術ブログ

Long Copy

AIBOX-ReIDを動かしてみた!

2023-03-03

Static HTML

皆さん、初めまして。アヴネットのブログを書かせていただいている、「ノリさん」と申します!
今回は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カメラ

 

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. KV260のイメージ

 

図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. Dockerの起動イメージ

 

図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画面で表示させた図を次に示します。

図3. AIBOX-ReI 実行結果

 

次のコマンドで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またはコンテナ名>

 


 

2503 Grid Box Light - Blog

ブログ

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

2503 Grid Box Light - Kria

Kria

Kria SOMはアダプティブSoCデバイスを搭載しており、スマートカメラやエンベデッドビジョンなどに最適です。