# OneVision Encoder - LLaVA Next This repository contains the LLaVA-Next implementation for OneVision Encoder models with codec-based video understanding. ## Table of Contents - [Quick Start](#quick-start) - [Docker Setup (Recommended)](#1--docker-recommended) - [Training Data Preparation](#training-data-preparation) - [Data Format](#data-format) - [Conversion Pipeline](#training-data-conversion-pipeline) - [Evaluation](#evaluation) - [Offline Codec Assets](#preparing-offline-codec-assets-for-evaluation) - [Running Evaluation](#running-evaluation) - [Troubleshooting](#troubleshooting) --- ## Quick Start ### 1. 🐳 Docker (Recommended) We strongly recommend using the Docker environment for a seamless experience. The following instructions are tailored for the A100 80GB GPU environment. ```bash # Clone repository git clone https://github.com/EvolvingLMMs-Lab/OneVision-Encoder cd OneVision-Encoder/llava_next # Build Docker image docker build -t ov_encoder_llava:26.01 . # Run container docker run -it --gpus all \ --ipc host --net host --privileged --cap-add IPC_LOCK \ --ulimit memlock=-1 --ulimit stack=67108864 --rm \ -v $(pwd):/workspace/OV-Encoder-Llava \ -w /workspace/OV-Encoder-Llava \ --name "ov_encoder_llava_container" \ ov_encoder_llava:26.01 bash -c "service ssh restart; bash" ``` --- ## Training Data Preparation Training data for codec mode requires precomputed visual assets (mosaic images + position indices). Each training sample contains: - Pre-extracted frame images (e.g., 8 frames per video) - Position indices file (`positions_thw.npy`) encoding temporal-height-width coordinates ### Data Format #### Original (Raw) Video Format Raw video training data uses JSON array format with direct video paths: ```json [ { "id": "YVQwAEKZpaU", "conversations": [ {"from": "human", "value": "