Revolutionizing video inference with EMA-Gated compression for Vision Transformers.
Project details
NeuroFlow offers an innovative PyTorch implementation for enhancing video inference efficiency in Vision Transformers. By utilizing EMA-Gated Temporal Sequence Compression, it achieves a remarkable 55.8x speedup in wall-clock time, effectively managing semantic redundancy to optimize computational resources while maintaining accuracy.
NeuroFlow: EMA-Gated Temporal Sequence Compression for Vision Transformers
NeuroFlow is a cutting-edge framework designed for optimizing video inference within Vision Transformers using a novel approach to temporal sequence compression. By addressing the inefficiencies associated with traditional self-attention models, NeuroFlow dramatically enhances computational efficiency while maintaining high fidelity in video stream analysis.
The repository is organized into several key directories:
/core: Contains production-ready PyTorch classes for various NeuroFlow architectures and core functionalities./scripts: Offers evaluation and verification tools designed to test the performance of different gating architectures./paper: Includes LaTeX source files and the preprint of the associated research manuscript./weights: Provides instructions for downloading the necessary model weights.NeuroFlow enables users to leverage its different architectures seamlessly. Here are some usage examples:
Architecture C – Training-Free Inference
from transformers import AutoModel, AutoProcessor
from neuroflow_gate import NeuroFlowSiglipVisionArchC
import torch
base = AutoModel.from_pretrained("google/siglip-base-patch16-224")
processor = AutoProcessor.from_pretrained("google/siglip-base-patch16-224")
model = NeuroFlowSiglipVisionArchC(
base.vision_model,
threshold=0.35,
ema_decay=0.01,
).cuda().eval()
for frame_pil in video_frames:
inputs = processor(images=frame_pil, return_tensors="pt").to("cuda")
embedding = model(inputs["pixel_values"]) # [1, 768]
model.reset()
Architecture B – Fine-Tuned High-Resolution Inference
from transformers import AutoModel, AutoProcessor
from neuroflow_gate import NeuroFlowSiglipVisionArchB
import torch
base = AutoModel.from_pretrained("google/siglip2-base-patch16-224")
model = NeuroFlowSiglipVisionArchB(
base.vision_model,
threshold=0.35,
ema_decay=0.01,
).cuda().eval()
state = torch.load("nf_archb_siglip2.pth", map_location="cuda")
model.model.load_state_dict(state, strict=False)
model.reset()
for frame_pil in video_frames:
inputs = processor(images=frame_pil, return_tensors="pt").to("cuda")
embedding = model(inputs["pixel_values"])
Architecture A – MLP Gating
from neuroflow_gate import NeuroFlowSiglipVisionArchA
model = NeuroFlowSiglipVisionArchA(
base.vision_model,
threshold=0.15,
ema_decay=0.01,
).cuda().eval()
For detailed information regarding the architecture specifications, performance metrics, and installation notes, refer to the complete README within the repository. To stay updated with improvements and new features, it is advisable to watch the repository and keep track of the discussions within the community.
Comments
1Really interesting concepts!