microsoft/mlvc

MLVC: Multi-platform Learned Video Codec for Real-World Deployment

TL;DR

MLVC は、コンシューマーグレードのNPU(Apple、Intel、Qualcomm)上でリアルタイム動作するニューラルビデオコーデックです。ハードウェアHEVCを70%以上のBDレートで上回りながら、540pのビデオを約100fpsでエンコード/デコードします。このリポジトリには、プリトレーニング済みモデル、完全なトレーニングパイプライン、CoreML/ONNX/QNNへのモデル変換ツール、C++エントロピーコーダー、ベンチマークユーティリティが含まれています。また、本番環境向けのエンコード/デコードを提供する付属のC++ライブラリ(libmlvc)もあります。


機能

  • ニューラルビデオ圧縮 – PSNRまたは知覚指向の目的関数を使用して、Iフレーム(画像)とPフレーム(動き補償ビデオ)を学習します。
  • デバイス上でのリアルタイム推論 – スマートフォン、タブレット、ラップトップに搭載されているNPUを対象としています。リファレンス実装は540pで約100fpsを達成します。
  • ハードウェアに依存しないデプロイ – エクスポートパイプラインは、CoreML(Apple)、OpenVINO用のONNX(Intel)、QNN(Qualcomm)に加え、実際のビットストリーム生成用のC++エントロピーコーダーを生成します。
  • ベンチマークスイート – HEVCアンカーに対するBDレート、RD曲線、およびさまざまな品質メトリクス(PSNR、MS-SSIM、LPIPS、VIF、DeQA)を計算します。

誰が使うか

対象 重要性
研究ラボ 学習済みビデオコーデックのトレーニングと評価のためのすぐに実行可能なコードベースで、再現可能なデータセットとアンカーを備えています。
モバイル/組み込み開発者 エクスポートされたCoreML/ONNX/QNNモデルを使用すると、カスタムMLパイプラインを構築せずに最先端のコーデックをアプリに統合できます。
製品チーム 付属のlibmlvc C++ライブラリは、既存のNPUアクセラレーションランタイムで実行できるドロップインのエンコーダー/デコーダーを提供します。
ベンチマーク愛好家 組み込みのBDレート、RD曲線、知覚メトリクス用ツールにより、HEVCや他の学習コーデックと簡単に比較できます。

クイックスタート

  1. UVパッケージマネージャーをインストール(推奨)し、Python 3.12+を使用します。 ```bash uv sync --extra onnxruntime # 必要なバックエンドを選択
2. **エントロピーコーダーをインストール**(C++コンパイラが必要です)。  ```bash
uv pip install packages/msrtc_rans
  1. プリトレーニング済みチェックポイントをダウンロード(例:mlvc-psnr-v1.ckpt)。
  2. デモノートブック(video/notebooks/demo.ipynb)またはワンライナーを実行します:
    
    

uv run convert.py export --model-version dmc61sbr_reglu

   これにより、デフォルトのPSNRモデルがプラットフォームに一致する形式にエクスポートされます。
5. **C++ライブラリ(`libmlvc`)またはエクスポートされたモデルとRANSエントロピーコーダーを呼び出すPythonラッパーを使用してエンコード/デコード**します。

## 技術詳細(READMEから)
- **モデルサイズ**:フルスケールMLVCは18.3Mパラメータ、軽量MLVC-Sは5.4Mパラメータ。
- **トレーニングデータ**:OpenVidHD(100万HDクリップ)とVCD(さまざまな解像度)。HEVCハードウェアエンコーダーとDCVC-RTリファレンスのアンカーが提供されています。
- **損失関数**:PSNR指向(MSE)と知覚指向(LPIPS、DeQA)。RetinaFace/FarLによるオプションの顔領域メトリクス。
- **変換ワークフロー**:`convert.py`はエクスポート、検証、プロファイリング、バンドルを処理します。入力ディメンションは16の倍数である必要があります。
- **サポートされるランタイム**:CoreML(Apple)、ONNX Runtime(CPU、GPU、OpenVINO、Windows ML)、QNN(Qualcomm)。
- **ベンチマーク**:`compute_benchmark_metrics.py`と`calculate_frame_sequence_metrics.py`はBDレート、bpp、高度な知覚スコアを生成します。
- **引用**:著者はarXiv論文(2606.28027、2026)を引用するよう求めています。

---

## 制限事項と未解決の質問
- **解像度への焦点**:リアルタイムの主張は540pで実証されています。より高い解像度では、より強力なNPUまたはモデルのスケーリングが必要です。
- **ハードウェア依存性**:パフォーマンスは、サポートされているNPUの存在と、ターゲットプラットフォーム用にコンパイルされたC++エントロピーコーダーに依存します。
- **知覚品質**:知覚モデルは外部メトリクス(LPIPS、DeQA)と追加のプリトレーニング済みウェイトに依存しており、パイプラインに複雑さを追加します。
- **データセットライセンス**:ユーザーはOpenVidHDとVCDデータセットを個別に取得する必要があります。リポジトリはそれらを準備するためのスクリプトのみを提供します。

---

## クイックリファレンス(コマンド)
```bash
# 依存関係をインストール(バックエンドを選択)
uv sync --extra onnxruntime          # CPU
uv sync --extra onnxruntime-gpu      # NVIDIA GPU
uv sync --extra onnxruntime-qnn      # Qualcomm NPU
uv sync --extra onnxruntime-openvino # Intel NPU

# モデルをエクスポート(AppleのデフォルトはCoreML)
uv run convert.py export --model-version dmc61sbr_reglu

# Intel向けにONNXにエクスポート
uv run convert.py export --model-version dmc61sbr_reglu \
    --model-type onnx --target-device intel

# 検証テストを実行(HEVCアンカーに対するBDレート)
uv run convert.py test --model-path ./output/models/.../coreml-apple/960x544 run_validation_test

# Iフレームモデルをトレーニング
uv run train_image.py --config configs/train_image-dcvcrt.yaml \
    --data_mount ~/mlvc --checkpoints_mount ~/mlvc/job-outputs --save_dir checkpoints/dmci

# Pフレームモデルをトレーニング
uv run train_video.py --config configs/train_video-mlvc.yaml \
    --data_mount ~/mlvc --checkpoints_mount ~/mlvc/job-outputs --save_dir checkpoints/mlvc

詳細情報

関連

  • プロジェクト
  • プロジェクト
  • プロジェクト
  • プロジェクト
  • プロジェクト