VMAF ビデオ品質測定ハードウェア アクセラレータ

Pulsar-VMAF は、ザイリンクスの Alveo カードを利用した固定機能のハードウェア アクセラレータであり、高い演算処理効率で映像の品質評価基準の測定します。これは、エンコード ラダーを最適化したり、映像をリアルタイムにモニターして、すべてのフレームで一貫した品質を維持するために用いられます。

ベンダー: BLUEDOT

更新日: 2021 年 9 月 10 日

サイズ: 743 MB

コンテナー バージョン: hubxilinx/bluedot_pulsar-vmaf-u50

評価または購入

この製品を評価または購入する権限を取得します。


無償トライアルで下記のサンプル アプリケーションを実行できます。


運用オプション

このアプリケーションはコンテナー化されており、クラウドまたはオンプレミス上で数分で簡単に実行できます。

オンプレミス
Alveo U50
製品の詳細および購入
  • ザイリンクス ランタイム: 2020.2.10.15
  • ターゲット プラットフォーム: xilinx_u50_gen3x16_xdma_201920_3
クラウド サービス
AWS
  • ザイリンクス ランタイム: AWS AMI5
  • ターゲット プラットフォーム:

 


評価を開始する

運用方法に応じた手順に従ってください。

Alveo U50

1.

評価アクセス キーの取得

ザイリンクス アプリ ストアで (https://appstore.xilinx.com/) cred.json ファイルを生成してダウンロードします。

  • App Store Portal にログインします。
  • [Manage Account] をクリックして権限を表示します。
  • 左のメニューから [Access Key] をクリックします。
  • [Create an Access Key] をクリックします。
  • 生成された cred.json ファイルを /tmp ディレクトリにダウンロードします。

2.

ホストを設定する

Xilinx Runtime (XRT) ホスト アプリケーションは、Ubuntu 16.04 /18.04 および CentOS 7.x でサポートされています。sudo アクセスが許可されている状態で、次のコマンドを使用して、セットアップ スクリプトをダウンロードして実行します。

注記: このフローは、システムにインストールされているターゲット カードが 1 枚のみで、スロット「0」にインストールされていることが前提になります。


2.1 Xilinx Base Runtime 用の GitHub リポジトリを複製する

    git clone https://github.com/Xilinx/Xilinx_Base_Runtime.git && cd Xilinx_Base_Runtime

2.2 ホスト セットアップ スクリプトを実行する

    ./host_setup.sh -v 2020.2 -p alveo-u50

注記

  • インストールが完了するまで待機します。途中、ホスト セットアップを継続させるために [Y] をクリックする必要がある場合があります。
  • FPGA フラッシュを選択した場合は、FPGA に新しいイメージを読み込むためにはインストール完了後にローカル マシンをコールド リブートする必要があります。
  • ホスト セットアップ用のスクリプトを使用して、ほかのバージョンの XRT やシェルをセットアップできます。詳細は、https://github.com/Xilinx/Xilinx_Base_Runtime をご覧ください。

ドッカーをインストールする (まだインストールしていない場合)

sudo アクセスが許可されている状態で、次のコマンドを使用してユーティリティ スクリプトを実行してドッカーをインストールします。


2.3 Xilinx_Base_Runtime ユーティリティ ディレクトリへ移動する

    cd Xilinx_Base_Runtime/utilities

2.4 Docker インストレーション スクリプトを実行する

    ./docker_install.sh

3.

アプリケーションの実行

ターミナル ウィンドウで次のコマンドを入力して、アプリケーションを実行します。


3.1 Xilinx_Base_Runtime のスクリプトで環境変数をセットアップする

    source Xilinx_Base_Runtime/utilities/xilinx_docker_setup.sh

3.2 Docker イメージを取り出す

    docker pull hubxilinx/bluedot_pulsar-vmaf-u50

3.3 Docker イメージを実行する

    docker run -v /tmp/cred.json:/app/cred.json -v /dev/shm:/data -w /app $XILINX_DOCKER_DEVICES hubxilinx/bluedot_pulsar-vmaf-u50 
 "-i 2160_dst.mp4 -vsync 0 -i 2160.mp4 -vsync 0 -lavfi libbdvmaf=model_path=vmaf_4k_v0.6.1.json:kernel_path=u50_binary.xclbin:coreno=1:log_path=/data/test.log -f null –”

コマンド引数の説明:

  • -v /tmp/cred.json:/app/cred.json  - ローカル cred.json ディレクトリ : コンテナー ディレクトリのマッピング
  • -v /dev/shm:/data -  ローカル ディレクトリ : 生成された出力ファイルのコンテナー ディレクトリのマッピング
  • $XILINX_DOCKER_DEVICES  - ホスト セットアップ スクリプトで設定された環境変数

4.

結果

各フレームの VMAF が /dev/shm/test.log にレポートされます。

    No     ,VMAF_SCORE,      ADM,      MPCD,      VIF0,     VIF1,     VIF2,     VIF3
       1, 100.000000, 0.999393, -0.013368, 1.000000, 1.000000, 1.000000, 1.000000
       2, 100.000000, 0.999393, -0.013368, 1.000000, 1.000000, 1.000000, 1.000000
       3, 100.000000, 0.999393, -0.013368, 1.000000, 1.000000, 1.000000, 1.000000
       4, 100.000000, 0.999393, -0.013368, 1.000000, 1.000000, 1.000000, 1.000000
       5, 100.000000, 0.999393, -0.013368, 1.000000, 1.000000, 1.000000, 1.000000
       6, 100.000000, 0.999393, -0.013368, 1.000000, 1.000000, 1.000000, 1.000000
       7, 100.000000, 0.999393, -0.013368, 1.000000, 1.000000, 1.000000, 1.000000
       8, 100.000000, 0.999393, -0.013368, 1.000000, 1.000000, 1.000000, 1.000000
       9, 100.000000, 0.999393, -0.013368, 1.000000, 1.000000, 1.000000, 1.000000
      10, 100.000000, 0.999393, -0.013368, 1.000000, 1.000000, 1.000000, 1.000000
      11, 100.000000, 0.999393, -0.013368, 1.000000, 1.000000, 1.000000, 1.000000
      12, 100.000000, 0.999393, -0.013368, 1.000000, 1.000000, 1.000000, 1.000000
      13, 100.000000, 0.999393, -0.013368, 1.000000, 1.000000, 1.000000, 1.000000
      14, 100.000000, 0.999393, -0.013368, 1.000000, 1.000000, 1.000000, 1.000000
      15, 100.000000, 0.999393, -0.013368, 1.000000, 1.000000, 1.000000, 1.000000
      16,  97.566488, 0.989950,  0.016739, 0.966534, 0.971284, 0.966479, 0.956362
      17,  95.701617, 0.955964,  0.047799, 0.920853, 0.968059, 0.976636, 0.980954
      18,  91.206519, 0.915715,  0.047799, 0.888859, 0.950970, 0.964046, 0.972741
      19,  89.406490, 0.900099,  0.044391, 0.864948, 0.941914, 0.958319, 0.969590
      20,  87.550198, 0.884437,  0.044391, 0.851716, 0.933523, 0.950860, 0.964334
      21,  88.349822, 0.890306,  0.036409, 0.844602, 0.937484, 0.956597, 0.969954
      22,  87.973880, 0.902339,  0.036409, 0.831304, 0.921736, 0.936173, 0.943120
      23,  89.972499, 0.910653,  0.029094, 0.836976, 0.935244, 0.953273, 0.966493
AWS

1.

評価アクセス キーの取得 (クリデンシャル ファイルの取得)

ユーザー認証とユーザー アカウントの権限に基づいてアプリケーションへのアクセスを許可するには、アクセス キーが必要です。次の手順に従って、ご自身のアカウントのアクセス キーを取得してください。

  • App Store Portal にログインします。
  • [Manage Account] をクリックして権限を表示します。
  • 左のメニューから [Access Key] をクリックします。
  • [Create an Access Key] をクリックします。
  • 生成された cred.json ファイルをダウンロードします。

注記: 生成したアクセス キーで、ご自身のアカウント内のすべての権限を有効にできます。上記の「TRY OR BUY」セクションから権限を取得していない場合は、この手順を実行してからアクセス キーを生成してください。


2.

F1 インスタンスを作成

2.1 コミュニティ イメージの 「FPGA Developer AMI」 で f1.2xlarge を選択してインスタンスを作成する

  • AWS にログインします。
  • https://console.aws.amazon.com/ec2/v2/home?region=us-east-1#LaunchInstanceWizard にアクセスします。
  • FPGA を検索して、FPGA Developer AMI を選択します。

2.2 インスタンス タイプとして「f1.2xlarge」を選択する

複数の ffmpeg インスタンスを同時に実行する場合は、f1.4xlarge または f1.16xlarge を選択できます。

Pulsar-VMAF は、1 デバイスあたり 2 つのコアを提供します。

下部にある [Review and Launch] ボタンをクリックします。


2.3 F1 インスタンスを起動する

[Review] ページで [Lauch button] ボタンをクリックします。

 

既存のキー ペアを選択するか、新しくキー ペアを作成して「aws.pem」のように ssh 用に PEM ファイルとして保存します。


2.4 インスタンスにログインする

    ```bash
ssh -i aws.pem centos@<public_ip_address>
```

EC2 コンソールでインスタンスのパブリック IP アドレスを確認できます。


3.

セットアップ

3.1 環境変数

    ```bash
git clone https://github.com/Xilinx/Xilinx_Base_Runtime.git
source Xilinx_Base_Runtime/utilities/xilinx_aws_docker_setup.sh
```

3.2 ソフトウェア パッケージをインストールする

**AWS FPGA**

    ```bash
git clone https://github.com/aws/aws-fpga.git
cd aws-fpga/
source vitis_runtime_setup.sh
cd ..
```

**Docker**

    ```bash
sudo Xilinx_Base_Runtime/utilities/docker_install.sh
```

4.

実行

4.1 ffmpeg パラメーターを指定して Docker を実行する

    ```bash
sudo docker run -v /var/tmp:/var/tmp -v /opt:/opt -v /${HOME}/cred.json:/app/cred.json -v ${PWD}/data:/data -w /app $XILINX_AWS_DOCKER_DEVICES hubxilinx/bluedot_pulsar-vmaf-aws-f1:latest "-i 2160_dst.mp4 -vsync 0 -i 2160.mp4 -vsync 0 -lavfi libbdvmaf=model_path=vmaf_4k_v0.6.1.json:kernel_path=f1_binary.xclbin:log_path=/data/test.xml -f null -"
```

4.2 複数の ffmpeg インスタンス

複数の ffmpeg インスタンスを実行する場合には、Docker コマンド ラインを使用します。

注記: Pulsar-VMAF は、1 デバイスあたり 2 つのコアを提供します。

1 つ目のインスタンスを実行

    ```bash
sudo docker run -v /var/tmp:/var/tmp -v /opt:/opt -v /${HOME}/cred.json:/app/cred.json -v ${PWD}/data:/data -w /app $XILINX_AWS_DOCKER_DEVICES hubxilinx/bluedot_pulsar-vmaf-aws-f1:latest "-i 2160_dst.mp4 -vsync 0 -i 2160.mp4 -vsync 0 -lavfi libbdvmaf=model_path=vmaf_4k_v0.6.1.json:kernel_path=f1_binary.xclbin:log_path=/data/test_1.xml -f null -"
```

新しいターミナルを開いて、2 つ目のインスタンスを実行

    ```bash
sudo Xilinx_Base_Runtime/utilities/docker_install.sh

sudo docker run -v /var/tmp:/var/tmp -v /opt:/opt -v /${HOME}/cred.json:/app/cred.json -v ${PWD}/data:/data -w /app $XILINX_AWS_DOCKER_DEVICES hubxilinx/bluedot_pulsar-vmaf-aws-f1:latest "-i 2160_dst.mp4 -vsync 0 -i 2160.mp4 -vsync 0 -lavfi libbdvmaf=model_path=vmaf_4k_v0.6.1.json:kernel_path=f1_binary.xclbin:log_path=/data/test_2.xml -f null -"
```