wikillm

Paper · 2024-03-11 · cs.CV

VideoMamba: State Space Model for Efficient Video Understanding

Runs bidirectional Mamba state-space blocks over flattened video patches in a plain ViT-style stack, so cost grows linearly with clip length. A smaller trained copy guides the larger model (self-distillation). Author-reported: 84.0% ImageNet-1K top-1 at 576px, 83.3% Kinetics-400 at 64x384px, 68.4% Something-Something V2 at 16x288px.

State-space model (SSM)Vision Transformer (ViT) backbonesKnowledge distillationMasked image modelingvideo-understandingstate-space-modelsself-distillationmasked-video-modeling

arXivPDFCodeMarkdown16 min read

AI-compiled by claude-haiku-5-5 on 2026-10-19, not yet reviewed by a human. Every claim cites its source; check it when a detail matters.

In plain words

Video is long and repetitive, so a video model has to look at many frames without spending huge amounts of memory. Older designs either look only at small neighbourhoods of pixels and frames (3D convolutions) or let every token attend to every other token (video transformers), and the second option gets expensive quickly as clips get longer.

VideoMamba replaces attention with a state-space model called Mamba. A state-space model passes a compact memory along the sequence, so its cost grows in a straight line with the length of the input. The video is cut into small spatiotemporal patches, read as one sequence, and processed by a plain stack of the same kind of blocks used in Vision Transformers. Each block reads the sequence in both directions. The default token order reads one frame at a time.

Bigger versions of the model tend to overfit. The authors fix this by having a smaller, already trained copy of the model guide the bigger one during training. They report accuracy that is competitive with attention-based models on short and long video benchmarks, and much lower memory use on long clips.

TL;DR

  • Adapts the bidirectional Mamba block (a linear-time state-space layer) to video, in a ViT-style stack with no downsampling, in three sizes: Ti, S and M §3.2 tab. 1.
  • Scales the model with self-distillation from a smaller trained model, which the authors report avoids overfitting §3.3 §4.1.
  • Pretrains with masked alignment to a CLIP ViT-B teacher for self-supervised video or video-text work §3.4 §4.2.
  • Author-reported: 84.0% ImageNet-1K top-1 at 576px tab. 2; 83.3% Kinetics-400 at 64x384px tab. 3; 68.4% Something-Something V2 at 16x288px tab. 4.
  • Code is official and Apache-2.0 licensed. Several paper and code details differ (see Paper vs code).

Problem

Video has large spatiotemporal redundancy inside short clips and complex dependencies across long ones §1. 3D CNNs and video transformers each address one of these, but not both §1. Attention costs grow quadratically with input length §3.2. Divided space-time attention reduces that cost but adds parameters and, per the authors, underperforms joint attention, especially with masked pretraining §3.2.

Mamba-style state-space models give linear-complexity sequence modelling §1. The original Mamba is built for 1D sequences and lacks spatial awareness for images, which Vision Mamba (Vim) addresses with a bidirectional block §3.1 fig. 2. The paper extends that bidirectional block to 3D video §3.1.

Assumptions: supervised ImageNet-1K pretraining for the Ti/S/M backbones §4.1; K400 and SSv2 fine-tuning from ImageNet weights §4.2; self-supervised video pretraining distilled from CLIP ViT-B §4.2; and, for long videos, end-to-end training on sparsely sampled frames tab. XIV (see Lineage).

Method

Overview. The model follows the ViT layout §3.2 fig. 3. A 3D convolution with kernel and stride (1, 16, 16) turns the clip into non-overlapping spatiotemporal tokens, L = t × h × w with h = H/16 and w = W/16 §3.2 eq. 7. A learnable class token is prepended. Learnable spatial positions p_s and temporal positions p_t are added §3.2 eq. 7. The tokens pass through L stacked bidirectional Mamba blocks, and the final class token, after normalisation, goes to a linear classifier §3.2.

Spatiotemporal scan. The 2D bidirectional scan is extended to 3D in three orders §3.2 fig. 4: spatial-first (organise by location, then stack frame by frame), temporal-first (organise by frame, then stack along space), and a hybrid. The hybrid has a v1 form that runs half of each and a v2 form that runs both fully, at 2× compute §3.2. The authors find spatial-first the most effective and simplest §3.2 fig. 7.

Bidirectional SSM. Each block runs a selective-scan SSM forward over the sequence and a second one on the reversed sequence, then adds the two outputs §3.1 mamba_simple.py. The state dimension is 16 and the expansion ratio is 2, the Mamba defaults §3.3.

Discretisation. The continuous state equations are discretised with zero-order hold §3.1 eq. 3 eq. 4, giving the recurrence h_t = Ā h_{t-1} + B̄ x_t and output y_t = C h_t eq. 5 eq. 6. In Mamba, B, C and the step size Δ are functions of the input §3.1.

Self-distillation. For each scale, a smaller trained model acts as teacher for the larger student: the M model uses a pretrained S model as teacher §4.1. The student's final feature maps are aligned with the teacher's by an L2 loss, added to the classification loss §4.1. The authors say this overcomes the overfitting seen when the pure Mamba model is scaled up §3.3 fig. 6.

Masked alignment pretraining. Video pretraining follows UMT §3.4. The student is trained from scratch on video data, with unmasked tokens aligned to CLIP ViT-B features. Only the final outputs are aligned, unlike UMT's multi-layer alignment §3.4. Video uses 80% masking §4.2. For multimodal pretraining, the model is paired with a text encoder and a BERT cross-modal decoder §3.4, trained on WebVid-2M and CC3M with vision-text contrast, vision-text matching, masked language modelling and unmasked token alignment §4.4.

Pseudocode for the encoder (paths below are relative to the repository root at code_commit):

Pseudocode
# VideoMamba forward pass  [§3.2] [eq. 7]
# [code: videomamba/video_sm/models/videomamba.py#L310-L363]
# Input:  video (B, 3, T, H, W)
# Output: class logits (B, num_classes)

def videomamba(video):
    # Non-overlapping 3D patches, kernel = stride = (1, 16, 16)  [§3.2]
    patches = conv3d_patch_embed(video)            # (B, C, T, H/16, W/16)
    # One token per patch, so L = T * (H/16) * (W/16)  [§3.2]
    tokens = flatten_to_sequence(patches)          # (B, L, C)
    # Prepend a learnable class token  [§3.2]
    tokens = concat(class_token, tokens)           # (B, L + 1, C)
    # Add the spatial positions p_s to every token  [§3.2] [eq. 7]
    tokens = tokens + spatial_pos_embedding        # (B, L + 1, C)
    # Add the temporal positions p_t per frame  [§3.2]
    # [code: videomamba/video_sm/models/videomamba.py#L319-L323]
    tokens = add_temporal_embedding(tokens)        # (B, L + 1, C)
    # Stacked bidirectional Mamba blocks with residuals  [§3.2] [§3.1]
    for block in blocks:
        tokens = bidirectional_mamba_block(tokens)
    # Normalise and keep only the class token for the head  [§3.2]
    class_feature = norm(tokens)[:, 0]             # (B, C)
    return linear_head(class_feature)              # (B, num_classes)

Pseudocode for the bidirectional block and the self-distillation step:

Pseudocode
# Bidirectional Mamba block  [§3.1]
# [code: mamba/mamba_ssm/modules/mamba_simple.py#L183-L211]
# Input and output: tokens (B, L, C)

def bidirectional_mamba_block(tokens):
    # Forward selective scan over the token order  [§3.1]
    forward_out = selective_scan(tokens)           # (B, L, C_inner)
    # Reverse the sequence, scan it, then reverse the output back  [§3.1]
    backward_out = selective_scan(reverse(tokens)) # (B, L, C_inner)
    backward_out = reverse(backward_out)           # (B, L, C_inner)
    # Sum both directions, then project back to the model width
    # [code: mamba/mamba_ssm/modules/mamba_simple.py#L211]
    return out_projection(forward_out + backward_out)
Pseudocode
# Self-distillation step for the larger student  [§4.1]
# [code: videomamba/image_sm/engine_distill.py#L40-L50]
# Teacher: pretrained smaller VideoMamba, no gradient  [§4.1]

def distill_step(images, labels):
    # Teacher features for the same (already augmented) images  [§4.1]
    teacher_features = teacher(images)             # (B, C), normalised
    # Student logits and features  [§4.1]
    logits, student_features = student(images)     # (B, K), (B, C)
    # Align the final feature maps, see Paper vs code  [§4.1]
    align_loss = mean(2 - 2 * dot(student_features, teacher_features))
    return cross_entropy(logits, labels) + align_loss

Hyperparameters

Units: learning rates are per the stated base batch, which the code scales (see Paper vs code). "Table X" and "XI" to "XIV" are Appendix B tables.

Model sizes tab. 1 videomamba.py

ModelDepthDimParamsNotes
Ti241927M
S2438426M
M3257674MTable 2 lists 75M at 448 and 576 px
Base2476898MExcluded by the authors for sub-optimisation tab. 1

SSM block

NameValueWhereNotes
state dimension N16§3.3 mamba_simple.py
expansion ratio2§3.3 mamba_simple.py
conv widthnot statedmamba_simple.pyCode default 4

Masked pretraining, single-modality (K400 and SSv2 columns share these values, except the flip rule) tab. X §4.2

NameValueWhereNotes
optimizerAdamW, β = (0.9, 0.95)tab. X
weight decay0.05tab. X
base learning rate1.2e-3tab. XCode: 1.5e-4 × batch / 256 run_mask_pretrain.sh run_videomamba_pretraining.py
minimum learning rate1e-5tab. XCode default run_videomamba_pretraining.py
batch size2048tab. XCode: 64 per GPU × 32 GPUs run_mask_pretrain.sh run_mask_pretrain.sh
warmup / total epochs40 / 800tab. XScript runs 801 epochs run_mask_pretrain.sh
mask ratio80%tab. X §4.2run_mask_pretrain.sh
input frames8tab. Xrun_mask_pretrain.sh
drop path0.4tab. Xrun_mask_pretrain.sh
flip augmentationno (SSv2), yes (K400)tab. X
augmentationMultiScaleCrop [0.66, 0.75, 0.875, 1]tab. X

Masked pretraining, multimodal tab. X §4.4 app. B

NameValueWhereNotes
base learning rate4e-4tab. XMinimum 4e-6
batch size2048 images and 2048 videostab. X
warmup / total epochs1 / 10tab. X
masking50% image, 80% video, 50% texttab. X §4.4
drop path0.25tab. X
augmentationMultiScaleCrop [0.5, 1]tab. X
unmasked tuning1 epoch, lr 8e-5app. B §4.4Needed for positional sensitivity §4.4

ImageNet-1K supervised tab. XI §4.1

NameValueWhereNotes
optimizerAdamW, β = (0.9, 0.999)tab. XICosine decay
base learning rate5e-4 (224 px), 5e-6 (448, 512 px)tab. XIText says default 1e-3 §4.1
minimum learning rate1e-5 (224), 5e-6 (448, 512)tab. XI
base batch size512tab. XIText says 1024 §4.1
warmup epochs5 (Ti, S), 30 (M) at 224; 5 at 448; 2 at 512tab. XIText says 5 §4.1
total epochs300 (224), 30 (448), 10 (512)tab. XI448 px fine-tuning is 30 epochs §4.1
weight decay0.1 (Ti), 0.05 (S, M) at 224; 1e-8 at 448, 512tab. XI
drop path0 (Ti), 0.15 (S), 0.5 (M)tab. XI §4.1
label smoothing / CutMix0.1 / 1.0tab. XIMixup not in table; see Paper vs code
augmentationRandAugment (7, 0.25) Ti; (9, 0.5) S, Mtab. XI
repeated augmentationno (Ti), yes (S, M)tab. XI
precisionBFloat16, no EMA§4.1

Kinetics-400 supervised tab. XII §4.2

NameValueWhereNotes
base learning rate4e-4 (Ti, S), 2e-4 (M), 1e-4 (M, masked) at 224 px; 5e-6 at 384 pxtab. XIIScaled by batch / 256 §4.2
base batch size256tab. XII
warmup / total epochs5 / 70 (Ti), 50 (S, M), 45 (M, masked); 2 / 10 at 384 pxtab. XII §4.2
weight decay0.1 (Ti), 0.05 (S, M, masked) at 224; 1e-8 at 384tab. XII
drop path0.1 (Ti), 0.35 (S), 0.8 (M), 0.4 (M, masked)tab. XII §4.2M uses 0.8 §4.2
layer-wise LR decay0.75 (S, M, masked); 0.8 (masked)tab. XII
augmentationflip, label smoothing 0.1, CutMix 1.0; RandAugment (7, 0.25) Ti, (9, 0.5) S, Mtab. XII
repeated augmentation2tab. XII
minimum learning rate1e-6tab. XII

Something-Something V2 supervised tab. XIII §4.2

NameValueWhereNotes
base learning rate4e-4 (Ti, S, M), 1e-4 (M, masked)tab. XIIIScaled by batch / 256 §4.2
warmup / total epochs5 / 35 (Ti), 30 (S, M, masked)tab. XIII §4.2
drop path0.1 (Ti), 0.35 (S), 0.8 (M), 0.4 (M, masked)tab. XIII
flip augmentationnotab. XIIIOther settings as K400

Long-video: Breakfast, COIN, LVU tab. XIV §4.3

NameValueWhereNotes
base learning rate2e-4tab. XIVBatch 256, minimum 1e-6
warmup5 epochstab. XIV
total epochsBreakfast, LVU: 70 (Ti), 50 (S, M), 45 (M, masked); COIN: 40 (Ti), 35 (S), 30 (M, masked)tab. XIV
samplingframes sampled sparsely from raw videotab. XIVEnd-to-end training §4.3

Self-distillation §4.1 run224.sh

NameValueWhereNotes
teacherVideoMamba-S, pretrained§4.1 run224.shFrozen
learning rate5e-4run224.shMatches the table, not the text
warmup epochs20run224.shTable says 30 for M, text says 5
minimum learning rate5e-6run224.shTable says 1e-5
batch size128run224.shPer GPU or total not stated
gradient clipping5.0run224.shNot in the paper
EMAoffrun224.shMatches "without relying on EMA" §4.1

Results

Author-reported throughout. Setup: ImageNet-1K for supervised image classification §4.1; Kinetics-400 and Something-Something V2 for short-term video §4.2; Breakfast, COIN and LVU for long-term video §4.3; WebVid-2M and CC3M pretraining with five benchmarks for zero-shot retrieval §4.4. Efficiency was measured on one NVIDIA A100-80G, PyTorch 2.1, CUDA 11.8, batch size 128, 224 px frames fig. 1. The speed and memory values are in the figure and are not transcribed here.

SettingMetricBaselineThis paperSource
ImageNet-1K, isotropic, 224 px, Titop-1Vim-Ti 76.176.9tab. 2
ImageNet-1K, isotropic, 224 px, Stop-1Vim-S 80.581.2tab. 2
ImageNet-1K, isotropic, 224 px, Mtop-1ConvNeXt-B (iso.) 82.082.8tab. 2
ImageNet-1K, 448 px, Mtop-1DeiT-B (224 px) 81.883.8tab. 2
ImageNet-1K, 576 px, Mtop-1ConvNeXt-B (non-iso.) 83.884.0tab. 2
K400, supervised, 16x224 px, Mtop-1ViViT-L (IN-21K) 81.381.9tab. 3
K400, supervised, 64x384 px, Mtop-1UniFormer-B (32x224 px) 83.083.3tab. 3
K400, masked pretraining, 16x224 pxtop-1VideoMAE-B 1600 ep. 81.583.4 (800 ep., CLIP teacher)tab. 3
K400, masked pretraining, 8x224 pxtop-1UMT-B 800 ep. 85.782.0 (64x384: 85.0)tab. 3
SSv2, supervised, 16x224 px, Mtop-1ViViT-L 65.468.3tab. 4
SSv2, supervised, 16x288 px, Mtop-1MViTv2-B (K400, 32x224 px) 70.568.4 (best SSv2 row here)tab. 4
SSv2, masked pretraining, 16x288 pxtop-1VideoMAE-B 2400 ep. 70.871.4tab. 4
Breakfast, end-to-end, Ti (f32)top-1ViS4mer (Swin-B features) 88.294.3tab. 6
Breakfast, end-to-end, M, masked (f32)top-1Distant Supervision 89.997.9tab. 6
COIN, end-to-end, M, masked (f64)top-1Distant Supervision 90.090.4tab. 6
LVU, end-to-end, Ti9 tasksViS4mer (ViT-L features)Best in 7 of 9 taskstab. 7
Zero-shot MSRVTT, 25M pairsR@1UMT (25M) 35.235.6tab. 8
Zero-shot MSRVTT, 17M pairsR@1UMT (17M) 35.534.7tab. 8
Zero-shot ActivityNet, 25M pairsR@1UMT (25M) 35.541.0tab. 8
Zero-shot DiDeMo, 25M pairsR@1UMT (25M) 41.243.1tab. 8

Ablations (SSv2, author-reported).

  • Scan type (fig. 7): spatial-first bidirectional 65.1; alternating spatial and temporal 65.1; hybrid v2 64.2; hybrid v1 63.9; temporal-first 62.4 fig. 7.
  • Mask type (tab. 5): attention 68.5; clip-row 68.2; frame-row 67.8; random 67.4; tube 66.3 tab. 5.
  • Mask ratio (tab. 5): 80% 68.5 (best of 50%, 65%, 80%, 90%) tab. 5.
  • Alignment layer (tab. 5): last layer 68.5; last 2 layers 68.4; last 6 layers 68.2 tab. 5.
  • Drop path (tab. 5): 0.4 gives 68.5; 0.1 gives 68.0 tab. 5.
  • Frames and resolution (fig. 7): more frames consistently help K400; that does not hold on SSv2, and higher resolution does not uniformly help video §4.2 fig. 7.
  • Self-distillation and early stopping (fig. 6): plotted only; the source text gives no numbers. The authors say early stopping did not help §4.1 fig. 6.

The ablation table uses a 200-epoch distillation schedule tab. 5, while the main results use 800 epochs tab. X.

Paper vs code

The code is at github.com/OpenGVLab/VideoMamba, which the paper links in its author block. The owner is the authors' lab. Code paths are relative to the repository root at code_commit. I read the image and video model files, the image distillation engine and scripts, the video fine-tuning and pretraining scripts, and the Mamba block. I did not run the code, and I did not check the vendored mamba/ and causal-conv1d/ directories beyond the Mamba block. Their licences are not checked.

  1. Temporal positions and the class token. The paper's eq. 7 adds p_t to the whole sequence after prepending the class token §3.2 eq. 7. The code adds the temporal embedding to the patch tokens only, and the class token is handled separately videomamba.py. The paper's shape for p_t (t × C) is also not consistent with adding it to the (L + 1)-token sequence as written.
  2. Distillation loss. The paper says L2 alignment §4.1. The code computes 2 − 2·cos on L2-normalised student and teacher features, averaged, with weight 1 and no α engine_distill.py videomamba_distill.py. For unit vectors this equals the squared L2 distance, so "L2" means the squared distance between normalised features, not the raw one.
  3. Distillation hyperparameters. The published M script uses 20 warmup epochs run224.sh. The text says 5 §4.1, and the table says 30 for M tab. XI. The script's minimum learning rate is 5e-6 [videomamba/image_sm/exp_distill/videomamba_middle/run224.sh#L27]; the table says 1e-5 tab. XI. The script also clips gradients at 5.0 [videomamba/image_sm/exp_distill/videomamba_middle/run224.sh#L30], which the paper does not mention.
  4. ImageNet defaults. The text gives default learning rate 1e-3 and batch 1024 §4.1. The table gives 5e-4 and 512 tab. XI. The code default is 5e-4 main.py, scaled by batch × GPUs / 512 main.py.
  5. Mixup. The hyperparameter tables list label smoothing and CutMix, not mixup tab. XI tab. XII. The code default mixup is 0.8 [code: videomamba/image_sm/main.py#L132] and 0.8 in the video fine-tuning script run_class_finetuning.py. I did not check whether each run script overrides it.
  6. Fine-tuning learning-rate rule. The text gives lr = base × batch / 256 §4.2. The code multiplies by num_sample as well [code: videomamba/video_sm/run_class_finetuning.py#L524-L526]. The K400 masked script and the SSv2 script set num_sample to 2 [code: videomamba/video_sm/exp/k400/videomamba_middle_mask/run_f64x224to384.sh#L34] run_f16x224.sh. Whether the paper's "batch size" already counts the two clips is not stated.
  7. Masked pretraining rate. This one matches. The script gives base 1.5e-4, batch 64 per GPU and 32 GPUs run_mask_pretrain.sh. The scaled rate is 1.5e-4 × 2048 / 256 = 1.2e-3, as in tab. X. The script runs 801 epochs; the table says 800 run_mask_pretrain.sh.
  8. Model sizes. The Ti, S and M depth and width match the code videomamba.py. The text gives 74M for the 84.0% result, while tab. 2 gives 75M.
  9. Teacher. The M model's teacher is VideoMamba-S, as the paper says §4.1 run224.sh.
  10. FLOPs. The code says FLOPs counting needs rms_norm=False and fused_add_norm=False videomamba.py. The paper does not say so.

Pitfalls

  • Mixed input sizes in headline claims. Several gains compare a higher-resolution VideoMamba row with a lower-resolution baseline. The text's "+2.0%" over DeiT-B compares 448 px (83.8) with DeiT-B at 224 px (81.8) §4.1 tab. 2. The "+2.0%" over ViViT-L on K400 compares 64x384 (83.3) with 16x224 (81.3) §4.2 tab. 3. The "+2.6%" over TimeSformer on K400 uses the 96-frame TimeSformer-L row (80.7) §3.2 tab. 3. The "+5.9%" on SSv2 compares the 16x288 row (68.4) with TimeSformer-HR (62.5) §3.2 tab. 4. Compare matched input sizes when you reproduce.
  • Compute of the bidirectional scan. Both directions run in every block. The v2 hybrid scan costs 2× compute §3.2. The paper does not give a separate figure for the bidirectional block's cost. The 6× speed and 40× memory figures are for 64 frames on the authors' setup §1 fig. 1.
  • Backward scan reverses everything. The backward branch flips the whole token sequence, so the frame order and the spatial order inside each frame are reversed mamba_simple.py.
  • Scaling and overfitting. A larger pure Mamba model overfits and can be worse than S when trained from scratch §4.1 §3.3. Self-distillation needs a trained smaller model first, which is an extra training run. Early stopping did not help §4.1.
  • Input resolution and frames. More frames help K400 but not SSv2, and higher resolution does not uniformly help video §4.2 fig. 7. The SSv2 best row (16x288) uses a higher resolution than the 16x224 row tab. 4.
  • Masking details not stated. The paper does not say whether masked tokens are dropped or replaced by a learned token. The row and attention masks are described in words §3.4 fig. 5 §4.2, and their exact construction is not given. Check the masked-pretraining code before you implement either.
  • Teacher dependency. Self-supervised video pretraining distils from CLIP ViT-B (CLIP-400M) §4.2 tab. 3. The CLIP weights and their licence are a separate dependency. This card does not check them.
  • Different pretraining data in comparisons. Long-video baselines use features from models pretrained on Kinetics-600 (Swin-B, ViS4mer) or on IN-21K with HTM data (Distant Supervision) §4.3 tab. 6. VideoMamba is trained end-to-end on K400 §4.3. The gains are not like-for-like.
  • Zero-shot retrieval is mixed. At 17M pairs, UMT reaches a higher MSRVTT R@1 (35.5) than VideoMamba (34.7) tab. 8, so the "superior to UMT" claim §4.4 holds only for some settings.
  • Unmasked tuning is needed for multimodal use. The authors add one unmasked epoch at lr 8e-5 because of positional sensitivity §4.4 app. B.
  • Not run. I did not run the model, the training or the fast Mamba kernels. The fast path depends on the Mamba CUDA kernels, which this card does not cover.

Lineage

  • Builds on: Mamba's selective scan, covered by Mamba: Linear-Time Sequence Modeling with Selective State Spaces §3.1.
  • Builds on: Vision Mamba (Vim), a bidirectional Mamba block for images. It has no card here, and its arXiv id is not in the source bibliography §2 §3.1 fig. 2. The paper says VideoMamba omits Vim's middle class token and rotary position embedding, and reports gains over Vim on ImageNet-1K §3.2.
  • Builds on: VMamba (visual state-space model), which adds depthwise convolution and downsampling. It has no card here and no arXiv id in the source bibliography §2 §3.2.
  • Builds on: ViT isotropic layout §3.2 fig. 3, DeiT training recipe §4.1, VideoMAE training recipe §4.2, and UMT masked alignment §3.4 §4.4. None has a card here.
  • Compared against: TimeSformer, ViViT, UniFormer, VideoMAE, UMT, ViS4mer, Turbo and Distant Supervision §4 tab. 3 tab. 4 tab. 6 tab. 7 tab. 8.
  • Superseded by: not known from content in this wiki.

Source and license

Adapted from “VideoMamba: State Space Model for Efficient Video Understanding” by Kunchang Li, Xinhao Li, Yi Wang, Yinan He, Yali Wang, Limin Wang, Yu Qiao (arXiv:2403.06977), used under CC BY 4.0. Changes: condensed and restructured for implementation, with tables, equations and algorithms taken from the paper and its code, each cited to its source. Not affiliated with or endorsed by the authors. Code citations refer to https://github.com/OpenGVLab/VideoMamba at commit 37355c26d0ae (Apache-2.0). Any quoted code is shown under that license.