はじめに
SWEST25にREEL SSのFPGA版の簡易展示を行いました。
展示内容について説明します。
展示内容
展示物は、AMD製Kria KV260 ビジョン AI スターター キット(クリアケースの中)とディスプレイです。表示内容は、ラインを流れる錠剤の傷検査をREEL SS(セマンティックセグメンテーション)で行っている状況です。ディスプレイ中の左側上が入力ビデオ、左側下が検査出力(REEL SS出力)、右側が固定の説明画像になっています。入力ビデオは、緑のベルトコンベヤに乗って白い錠剤が下から上に流れる(CGで制作)30秒の繰返し映像です。白い錠剤には、ところどころ傷(CGで加工)が入っていて、検査出力で傷部分が赤く表示されます。
KV260(ARM-CPU)単体では、VitisAIツールの一部がIntel-CPU専用になために学習できません。そのため、展示は固定ビデオ入力と前もって学習したネットワークを使った傷検査とその出力としました。
簡単な用語説明 (文末の参考資料も参照)
- Vitis AI:
-
AMD Vitis™ AI 開発環境は、FPGAを含むAMD環境にAI推論エンジンを実装するための統合環境です。KV260のSoC(system on a chip)は、ARM-CPUとFPGAが一体となったZynqMPシリーズなので、ZynqMP用のDPU(Deep learning Processor Unit):DPUCZDX8Gを使用して、REEL SSの推論部分を実装しました。
- Vitis Video Analytics SDK (VVAS):
-
Vitis Video Analytics SDK (VVAS)は、ZynqMPを含むAMD環境にAI/画像処理(CPUを含む)、FPGA処理等を構築するフレームワークで、GStreamerのプラグイン形式をサポートしてます。今回は、REEL SS処理が3個の処理に分解されるため、それぞれをGStreamerのプラグインとして実装しました。
- GStreamer:
-
GStreamerは、オープンソースのメディア処理コンポーネントのグラフを構築するためのライブラリです。AMDは、KV260を含むAMD環境のpetalinux上でgstreamerをサポートしています。デモ表示は、VVASの3個のプラグインを使用したREEL SS処理、2つのビデオ表示、説明資料の表示をGStreamerのスクリプトで行っています。
ディスプレイ右側の説明資料
SWESTの展示なので、SWエンジニア向けに表示内容の使用技術の説明となっています。低レベル側から3個の技術、Vitis AI、VVAS、GStreamer で構成されています。
今回のデモアプリケーションは、CPUの処理2個とFPGAの処理1個が結合していますが、処理性能とFPGAのリソースを検討して、”次のデモでは、処理’‘(右の緑の四角)を、CPUからFPGAに置き換えよう”と考えるかもしれません。
その様な組み換えを可能にするため、処理をグラフで構築するGStreamerの技術と、GStreamerとFPGAの処理を結合するVVASフレームワークが便利と判断して選択しました。
参考資料
そもそもFPGA って何
Kria KV260 ビジョン AI スターター キット
Vitis AI ユーザー ガイド (UG1414)
Zynq UltraScale+ MPSoC 向け DPUCZDX8G 製品ガイド (PG338)
Vitis Video Analytics SDK Overview
gstreamer
エッジAIでセマンティックセグメンテーション! REEL SSの紹介(その1)