- 追加された行はこのように表示されます。
- 削除された行は
このように表示されます。
!KV260 AI Example
https://xilinx.github.io/kria-apps-docs/home/build/html/index.html の [Smart Camera|https://xilinx.github.io/kria-apps-docs/kv260/2022.1/build/html/index.html] を試す.
::セットアップ
cf. [Booting Kria Starter Kit Linux|https://xilinx.github.io/kria-apps-docs/kv260/2022.1/build/html/docs/kria_starterkit_linux_boot.html]
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プロンプトが表示される.
動作確認用の動画をダウンロードする.チュートリアルでは,
* [Facedet / RefineDet AI Task|https://pixabay.com/videos/alley-people-walk-street-ukraine-39837/]
* [ADAS SSD AI Task|https://pixabay.com/videos/freeway-traffic-cars-rainy-truck-8358/]
が例示さている.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ができる.実行結果はこんな感じ.
{{ref_image kv260_ssd_s.png}}
AIのモデルの設定は[Customizing the AI Models used in the application|https://xilinx.github.io/kria-apps-docs/kv260/2022.1/build/html/docs/smartcamera/docs/customize_ai_models.html]に詳しい.