2021 年 9 月 10 日

編集者注: このコンテンツは、作成者の許可により、MicroZed Chronicles を再公開しています

 

これまでにも何度か、商用および個人用のさまざまなアプリケーションで迅速なプロトタイピングを可能にする PYNQ の有用性について述べてきました。しかしながら、オーバーレイを変更したいときがあります。つまり、オーバーレイを構築する必要があります。たとえば、画像処理アルゴリズムを使用している場合に、処理ブロックの順番を変えたり、別の処理ブロックに変える必要がある場合などです。

画像処理アプリケーションにおける、このような問題を解決するため、PYNQ 開発チームは、コンポーザブル ビデオ オーバーレイを開発し、提供しています。このオーバーレイを使用することで、 Vivado 環境でオーバーレイを構築しなくても、画像処理パイプラインを自在に変更できるようになります。この機能は、オーバーレイの革新的アプローチによって実現しました。

パイプラインの構成には、AXI ストリーム スイッチを使用します。データ信号の配線指示によって、任意のポートからポートへデータ信号を配線できます。次に、コンポーザブル オーバーレイには 4 つの DFX 領域があり、関数の動的ローディングが可能です。さらに、6 つのスタティック関数が AXIS スイッチに接続されており、これらは DFX 領域の外に実装されます。

PYNQ からのパイプライン制御をサポートするソフトウェア API も含まれます。

ここでは、コンポーザブル オーバーレイに実装されているスタティック関数とダイナミック関数を紹介します。

 

スタティック

ダイナミック

Colour Thresholding

Absdiff

Filter2D

Add

Gray2RGB

Bitwise Add

LUT

Corner Harris

RGB2Gray

Dilate

RGB2HSV

Duplicate

 

Erode

 

Fast

 

FIFO

 

Filter2D

 

RGB2XYZ

 

Subtract

            

DFX 機能の中には、実装時に PR_1 と PR_0 の両方を使用する必要があるものがあります。DFX の各領域の詳細は、こちらをご覧ください。

コンポーザブル オーバーレイのインストールは非常に簡単です。現在、このアプリケーションには PYNQ Z2 が対応しています。

ターミナル ウィンドウに次のコマンドを入力します。

git clone https://github.com/Xilinx/PYNQ_Composable_Pipeline

pip install PYNQ_Composable_Pipeline/

pynq-get-notebooks composable-pipeline -p $PYNQ_JUPYTER_NOTEBOOKS

オーバーレイのインストールが完了すると、下位に新しいノートブック ディレクトリが追加されます。この中には、コンポーザブル オーバーレイの動作を定義した複数のノートブックが含まれます。

手始めとして、新しいパッケージ 「Composable_pipeline」 を使用して、コンポーザブル オーバーレイの読み込みを開始します。これで、コンポーザブル オーバーレイのダウンロードが可能になります。読み込み完了後、ロードされた関数やアンロードされた関数などをディクショナリで確認できます。デフォルトでは、スタティック関数のみ表示されます。

このオーバーレイで最も注目すべき点は、パイプラインの構成です。パイプラインの構成は非常にシンプルで、リストを作成するだけ完了します。たとえば、[a,b,c,d] と [a,b,[[c,d],[e]],f,g] の場合、次のような構造になります。

A -> B - > C -> D

And

                / -> C -> D ->\

A -> B ->                             -> F -> G

               \->E----------->/

もちろん、コンポーザブル パイプラインでは、A,B,C,D などは、任意の画像処理関数に置き換えられます。

次のようなリストを作成すれば、

video_pipeline = [video_in_in, lut, video_in_out]

ビデオ パイプラインを構成できます。新しいパイプラインが反映されると、モニターに表示される映像が変わります。

cpipe.compose(video_pipeline)

このようにパイプラインの作成は、非常に簡単です。この例では、同期する 720P HDMI ソースと HDMI ディスプレイを用意しました。

最初のノートブックを実行すると、起動時に画像が読み込まれます。表示される画像は、パイプラインが構成されて読み込まれるたびに変わります。

このパイプラインの画期的な機能は、グラフ属性を使用して視覚化できることです。



また、タップ属性を使用することで、異なるステージのコンポーザブル パイプライン出力をチェックすることも可能です。この機能は、画像処理チェーンを使用する場合や、パイプラインの各ステップが正常に動作しているかを判断するのに役立ちます。

これまでにない画期的な設計環境といえるでしょう。次回のブログでは、カスタム パイプラインの作成について解説します。