トップ 差分 一覧 Farm ソース 検索 ヘルプ PDF RSS ログイン

Diary/2022-11-28

KV260 AI Example


https://xilinx.github.io/kria-apps-docs/home/build/html/index.htmlSmart Camera を試す.

セットアップ

cf. Booting Kria Starter Kit Linux

Ubuntu 22.04なSDカードを用意しておく.
KV260でUbuntu 22.04を使うには Boot FW のアップデートが必要(cf. https://wasa-labo.com/wp/?p=1056)
Ubnutu 22.04起動後は必要なパッケージのセットアップ.
snapを使うかaptのppaリポジトリを使うか選択するとのこと.
aptを使うことにしてすすめる.

sudo add-apt-repository ppa:xilinx-apps
sudo add-apt-repository ppa:ubuntu-xilinx/sdk
sudo apt update
sudo apt upgrade

Dockerもインストール.
cf. https://docs.docker.com/engine/install/ubuntu/
以前にインストールされていたバージョンを削除して

sudo apt-get remove docker docker-engine docker.io containerd runc

必要なライブラリをインストール

sudo apt-get install ca-certificates curl gnupg lsb-release

GPG鍵をセットして

sudo mkdir -p /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg

リポジトリを登録

echo \
 "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
 $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

で,最後にセットアップ

sudo apt update
sudo apt upgrade
sudo apt install docker-ce docker-ce-cli containerd.io docker-compose-plugin

動作確認しておしまい.

sudo docker run hello-world

ユーザ権限でDocker使えるようにDocker用のグループを作ってユーザを追加

sudo groupadd docker
sudo usermod -a -G docker  $USER

最後にzoclドライバのインストール

sudo apt install xrt-dkms

ドライバがロードできてるか確認してみる

ubuntu@kria:~$ lsmod |grep zocl
zocl                  204800  0

Smart Cameraを試す

まずは,アプリケーションファームウェアをセットアップする.

sudo apt install xlnx-firmware-kv260-smartcam

デスクトップ環境を終了する.これでHDMI接続してるディスプレイのgdmが終了するはず.

sudo xmutil desktop_disable

ちなみに,デスクトップ環境を再度有効にする場合は,

sudo xmutil desktop_enable

らしい.


準備したら,kv260-smartcamをロードする

sudo xmutil unloadapp # こちらは何か別のアプリ用のファームウェアをロードしていた場合
sudo xmutil loadapp kv260-smartcam

loadappすると

ubuntu@kria:~$ sudo xmutil loadapp kv260-smartcam
kv260-smartcam: loaded to slot 0

という感じ.UARTでみてるコンソールには,

[  210.854187] OF: overlay: WARNING: memory leak will occur if overlay removed, property: /fpga-full/firmware-name
[  210.864389] OF: overlay: WARNING: memory leak will occur if overlay removed, property: /fpga-full/resets
[  211.164188] zocl-drm axi:zyxclmm_drm: IRQ index 8 not found
[  211.240274] debugfs: Directory '4-003c' with parent 'regmap' already present!

とか出力された.


SmartCameraアプリはDockerコンテナで提供されている.

docker pull xilinx/smartcam:2022.1

でpullして,実行.

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:2022.1 bash

Dockerイメージが起動してbashプロンプトが表示される.


動作確認用の動画をダウンロードする.チュートリアルでは,

が例示さている.1920x1080を指定してFree Downloadをクリックしてダウンロード.
それぞれ

ffmpeg -i input-video.mp4 -c:v libx264 -pix_fmt nv12 -vf scale=1920:1080 -r 30 output.nv12.h264

として変換.output.nv12.h264 が生成されるので,KV260上のUbuntuの/tmpにscpする.
/tmp は,Dockerコンテナでも /tmp にマウントされている.


アプリ実行用にJuypter Lab環境をセットアップする.セットアップ用の

smartcam-install.py

を実行すると,

root@xlnx-docker:~# smartcam-install.py 
Info: Notebook files under /opt/xilinx/kv260-smartcam/share/notebooks are copied to /root/notebooks/smartcam.

と,/root/notebooks/smartcam に必要なファイルがコピーされる.
で,Jupyter Labを起動

jupyter-lab --notebook-dir=/root/notebooks/smartcam --allow-root --ip='*' & 

ブラウザでアクセスするとカメラから取り込んだ画像がHDMIに出力されるなどがみれる.


コマンドラインでもアプリを実行できる.たとえば,

smartcam --file /tmp/output.nv12.h264 -i h264 -W 1920 -H 1080 -r 30 --target file -a ssd

実行すると out.h264ができる.実行結果はこんな感じ.

AIのモデルの設定はCustomizing the AI Models used in the applicationに詳しい.