$ show MINT-SJTU/Evo-1
Evo-1 is a research codebase for a lightweight Vision-Language-Action (VLA) model accepted at CVPR 2026. It provides a complete pipeline for training (two-stage pretraining + finetuning using DeepSpeed and InternVL3-1B backbone) and evaluating robot manipulation policies on simulation benchmarks (Meta-World, LIBERO, LIBERO-Plus, RoboTwin) and real robots (xArm6, Aloha, SO100). The primary data flow involves converting raw robot datasets (LeRobot v2.1 format) into normalized state/action pairs with delta-timestep support, computing per-dataset norm statistics, and training a flow-matching action head with a frozen VLM backbone. The repo also includes a WebSocket-based inference server and clients for real-robot deployment. Although the core is research-oriented, it incorporates the full LeRobot framework for data collection and robot control, giving it a hybrid character. The codebase is well-structured with reusable components for dataset processing, normalization, and video handling, but the embedded LeRobot copy and multiple evaluation environments introduce maintenance overhead.
The LLM identified 6 files worth highlighting for reuse:
Implements a FlowmatchingActionHead based on a transformer decoder with sinusoidal timestep embeddings and category-specific MLP modules for multi-embodiment support. This component encapsulates the denoising action generation process used by Evo-1 and can be extracted and reused for any action-chunking policy that requires continuous action generation with flow matching.
Provides a suite registry (SUITE_REGISTRY) for converting raw robot observations into normalized state/action pairs. Each suite defines how to extract, transform, and compute delta actions for a specific robot embodiment (e.g., franka, aloha, metaworld). This pattern is reusable for any project that needs to standardize heterogeneous robot datasets into a common format, and the registry makes adding new embodiments straightforward.
Computes dataset-wide normalization statistics (min, max, q01, q99, mean, std) for images and scalar modalities. Handles multi-embodiment datasets and produces a norm_stats.json file. This is a common data engineering task in robot learning and is implemented cleanly with batched computation and CLI parameterization, making it applicable to any LeRobot-style dataset.
Contains Normalize and Unnormalize PyTorch modules with support for MEAN_STD and MIN_MAX modes. Used across multiple policies (ACT, Diffusion, pi0, Evo-1). The module is self-contained, serializable, and can be easily extracted for any deep learning project requiring flexible, stateful normalization of observation or action spaces.
Provides a VideoDecoderCache with LRU eviction and thread-safe access, supporting multiple backends (torchcodec, decord, pyav). It also includes functions for encoding/decoding video frames and extracting metadata. This component is highly reusable for any project that processes video frames in a dataset loading pipeline, offering significant performance improvements over per-frame disk I/O.
Implements a RobotProcessor class that chains a sequence of steps (e.g., normalization, renaming, device transfer) into a composable, serializable pipeline. Steps are registered via a decorator registry and can be loaded from HuggingFace Hub. This pattern is reusable for any data preprocessing workflow that requires dynamic, reorderable transformations with state persistence.