microsoft/mlvc
MLVC: Multi-platform Learned Video Codec for Real-World Deployment
TL;DR
MLVC는 소비자용 NPU(Apple, Intel, Qualcomm)에서 실시간으로 실행되는 신경망 비디오 코덱입니다. 540p 비디오를 약 100fps로 인코딩/디코딩하면서 하드웨어 HEVC를 BD-레이트 70% 이상 능가합니다. 이 저장소에는 사전 훈련된 모델, 전체 훈련 파이프라인, CoreML/ONNX/QNN 변환 도구, C++ 엔트로피 코더, 벤치마킹 유틸리티가 포함되어 있으며, 프로덕션 배포용 C++ 라이브러리(libmlvc)도 함께 제공됩니다.
기능
- 신경망 비디오 압축 – PSNR 또는 지각(perceptual) 지향 목적 함수로 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 또는 다른 학습 코덱과 쉽게 비교할 수 있습니다. |
빠른 시작
- UV 패키지 매니저를 설치(권장)하고 Python 3.12+를 사용합니다. ```bash uv sync --extra onnxruntime # 필요한 백엔드를 선택하세요
2. **엔트로피 코더를 설치**(C++ 컴파일러 필요)합니다. ```bash
uv pip install packages/msrtc_rans
- 사전 훈련된 체크포인트를 다운로드(예:
mlvc-psnr-v1.ckpt)합니다. - 데모 노트북(
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(1M 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
추가 정보
- 논문: https://arxiv.org/abs/2606.28027
- 동봉 C++ 라이브러리: https://github.com/microsoft/libmlvc
- 관련 프로젝트: DCVC-RT (https://github.com/microsoft/DCVC)
- 라이선스 및 기여: Microsoft Open Source Code of Conduct; 기여 시 CLA 필요.
관련
- 프로젝트
- 프로젝트
- 프로젝트
- 프로젝트
- 프로젝트