インテル® AI ブースト NPU を利用して AI アップスケーリングを強化する

AIOpenVINO™ ツールキット

この記事は、インテルのウェブサイトで公開されている「Enhance AI Upscaling with Intel® AI Boost Neural Processing Unit (NPU)」の日本語参考訳です。原文は更新される可能性があります。原文と翻訳文の内容が異なる場合は原文を優先してください。


この記事の PDF 版はこちらからご利用になれます。

AI アップスケーリング (画像アップスケーリングや超解像とも呼ばれます) は、入力画像を取得し、ディープ・ニューラル・ネットワークを利用して入力画像の解像度をアップスケーリングする手法です。AI アップスケーリングの最も一般的な用途の 1 つは、1990年代や 2000年代に撮影された低解像度の写真やビデオを復元することです。AI アップスケーリングは、360p 以下の解像度の画像を、画質の低下を最小限に抑えながら、1080p や 4K 解像度の画像に変換できます。

この記事では、インテル® AI PC (インテル® Core™ Ultra プロセッサー搭載) に含まれているインテル® AI ブースト NPU (ニューラル・プロセシング・ユニット) を利用して、一般的な AI アップスケーリング・モデルを実行する方法を説明します。インテル® Core™ Ultra プロセッサーは、3D パフォーマンス・ハイブリッド・アーキテクチャー、高帯域幅メモリーとキャッシュを活用して、CPU、GPU、NPU を組み合わせることにより、PC の AI 処理を高速化します。重み圧縮にはインテル® ディストリビューションの OpenVINO™ ツールキットニューラル・ネットワーク圧縮フレームワーク (NNCF) (英語) を使用し、AI アップスケーリング・モデルをインテル® AI PC で効率良く実行できるようにします。

はじめに

AI アップスケーリング・モデル

使用する AI アップスケーリング・モデルは、BSRGAN (ブラインド超解像敵対的生成ネットワーク) (英語) です。BSRGAN は、ESRGAN (拡張超解像敵対的生成ネットワーク) (英語) と同じアーキテクチャーを採用しています。BSRGAN と ESRGAN はどちらも敵対的生成ネットワーク (GAN) 構造を使用しており、グラウンドトゥルースと一致する代表的なアップスケーリング画像をジェネレーターが作成できます。BSRGAN は、ESRGAN と異なり、画像のさまざまな劣化、つまり低解像度の画像が低品質になる原因 (ノイズ、ぼけなど) を表現できる合成画像でトレーニングされます。これにより、BSRGAN は、さまざまな劣化が発生する実際のユースケースに一般化できます。

OpenVINO™ ツールキットと NNCF

OpenVINO™ は、ハードウェアの最適化を活用してディープラーニング・モデルを容易にデプロイおよび高速化できる、オープンソースのディープラーニング・ツールキットです。OpenVINO™ は、PyTorch (英語)、TensorFlow (英語) モデル、ONNX モデルなどを OpenVINO™ の中間表現 (IR) 形式に変換できます。OpenVINO™ は、この IR と利用可能なハードウェア・アクセラレーターを使用して、ディープラーニング推論を効率良く実行します。

ニューラル・ネットワーク圧縮フレームワーク (NNCF) は、トレーニング後およびトレーニングを考慮したディープラーニング圧縮アルゴリズム (量子化手法など) をディープラーニング・モデルに容易に適用できるディープラーニング・フレームワークです。OpenVINO™ モデル、PyTorch モデル、その他のモデル形式をサポートしています。

AI PC

AI PC は、電力効率に優れた AI アクセラレーションを提供し、AI タスクをローカルで処理する新世代のパーソナル・コンピューターで、中央演算処理装置 (CPU)、グラフィックス・プロセシング・ユニット (GPU)、ニューラル・プロセシング・ユニット (NPU) を備えています。インテル® Core™ Ultra プロセッサーを搭載した AI PC は、電力とパフォーマンスの最適なバランスを取り、高速で効率良い AI エクスペリエンスを実現します。NPU は AI 機能向けに設計された専用のハードウェアで、AI PC がさまざまな AI タスクを効率良く実行できるようにします。

サンプルコード

このサンプルコード (英語) は AI PC Notebooks GitHub リポジトリー (英語) にあります。ここでは、OpenVINO™ と NNCF を使用してインテル® AI ブースト NPU 向けに最適化された画像とビデオを、BSRGAN モデルを使用して AI アップスケーリングします。

サンプルコードでは、次の手順を実装しています。

  1. PyTorch モデルを OpenVINO™ モデルに変換する: BSRGAN モデルをロードした後、モデルを OpenVINO™ 形式に変換できます。現在、OpenVINO™ は NPU の静的シェイプのみサポートしているため、BSRGAN モデルに明示的な入力シェイプを提供する必要があります。NPU の動的シェイプは、今後のアップデートでサポートする予定です。
    ov_model = ov.convert_model(
        cpu_model,
        input=[1, 3, width, height],
        example_input=torch.randn(1, 3, width, height),
    )
  2. モデルの重みを圧縮する: NNCF フレームワークを使用して、BSRGAN モデルでデータフリーの 4 ビット対称量子化を実行します。このデータフリー量子化では、32 ビット浮動小数点の重みを 4 ビット範囲にマップしますが、固定のゼロ点も考慮します。
    compressed_model = compress_weights(ov_model, mode=CompressWeightsMode.INT4_SYM)
  3. OpenVINO™ モデルをコンパイルする: NPU で OpenVINO™ のコンパイルを実行します。
    core = ov.Core()
    compiled_model = core.compile_model(compressed_model, device_name="NPU")
  4. アップスケールされた画像を視覚化する: このサンプルコードは、Plotly (英語) を使用して、オリジナルの画像および CPU と NPU で AI アップスケールされた画像を表示するインタラクティブな視覚化を作成します。
  5. CPU と NPU 間のパフォーマンスを視覚化する: このサンプルコードは、Plotly を使用して、CPU に対する NPU のパフォーマンス向上を示すインタラクティブな視覚化を作成します。
  6. AI アップスケーリング・モデルをビデオで実行する: OpenVINO™ の非同期推論キューを使用すると、AI アップスケーリング・モデルをビデオで効率良く実行できます。具体的には、1 秒あたり約 5 フレーム処理できます。
    def callback(infer_request, userdata):
        res = infer_request.get_output_tensor(0).data[0]
        frame = postprocess(res)
    
        pbar, postprocessed_frames = userdata
        pbar.update(1)
        postprocessed_frames.append(frame)
    
    infer_queue = ov.AsyncInferQueue(compiled_model)
    infer_queue.set_callback(callback)
    pbar = tqdm(total=len(original_frames), desc="Inferencing frames")
    
    postprocessed_frames = []
    for frame in original_frames:
        new_frame = preprocess(frame)
        infer_queue.start_async(
            inputs={input_layer.any_name: new_frame}, userdata=(pbar, postprocessed_frames)
        )
    
    infer_queue.wait_all()

上記のサンプルコード (英語) を実際に試してみてください。サンプルコードの出力は、オリジナルおよびアップスケーリング後の画像とビデオの違いを示します。また、NPU でモデルを実行した場合の CPU に対するパフォーマンスの向上も示します。

次のステップ

多くの AI アップスケーリング手法はこれまで、ほとんどの場合、ディスクリート GPU でのみ効率良く実行できました。しかし、新しい AI PC では、インテル® AI ブースト NPU により、AI アップスケーリングを一般的なノート PC で効率良く実行できるようになりました。インテル® AI PC では、クリエイティブ・コンテンツの作成、メールの作成、レポートの改善、スケジュールの管理、詳細なメモを含む会議の自動要約など、さまざまな AI タスクの速度、効率、プライバシー、セキュリティーを向上できます。

AI ソリューションの準備、構築、デプロイ、スケーリングを支援する、インテルのほかの AI/ML フレームワークの最適化やツール (英語) をチェックして AI ワークフローに組み込み、インテルの AI ソフトウェア・ポートフォリオ (英語) の基盤である、統一されたオープンな標準ベースの oneAPI プログラミング・モデルについて理解を深めてください。

関連情報


製品および性能に関する情報

1 性能は、使用状況、構成、その他の要因によって異なります。詳細については、http://www.intel.com/PerformanceIndex/ (英語) を参照してください。

タイトルとURLをコピーしました