Diary/2022-11-28
KV260 AI Example
https://xilinx.github.io/kria-apps-docs/home/build/html/index.html の Smart 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に詳しい.