MCPcopy Index your code
hub / github.com/TerryPei/EfficientVMamba

github.com/TerryPei/EfficientVMamba @v1.0.0

Chat with this repo
repository ↗ · DeepWiki ↗ · release v1.0.0 ↗ · + Follow
568 symbols 1,394 edges 57 files 56 documented · 10%
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

EfficientVMamba

EfficientVMamba: Atrous Selective Scan for Light Weight Visual Mamba

Xiaohuan Pei1,Tao Huang1,Chang Xu1,

1 University of Sydney

Paper: (arXiv 2401.10166)

Updates

  • Mar. 20th, 2024: Will published in several days.

Abstract

Prior efforts in light-weight model development mainly centered on CNN and Transformer-based designs yet faced persistent challenges. CNNs adept at local feature extraction compromise resolution while Transformers offer global reach but escalate computational demands $\mathcal{O}(N^2)$. This ongoing trade-off between accuracy and efficiency remains a significant hurdle. Recently, state space models (SSMs), such as Mamba, have shown outstanding performance and competitiveness in various tasks such as language modeling and computer vision, while reducing the time complexity of global information extraction to $\mathcal{O}(N)$. Inspired by this, this work proposes to explore the potential of visual state space models in light-weight model design and introduce a novel efficient model variant dubbed EfficientVMamba. Concretely, our EfficientVMamba integrates a atrous-based selective scan approach by efficient skip sampling, constituting building blocks designed to harness both global and local representational features. Additionally, we investigate the integration between SSM blocks and convolutions, and introduce an efficient visual state space block combined with an additional convolution branch, which further elevate the model performance. Experimental results show that, EfficientVMamba scales down the computational complexity while yields competitive results across a variety of vision tasks. For example, our EfficientVMamba-S with $1.3$G FLOPs improves Vim-Ti with $1.5$G FLOPs by a large margin of $5.6\%$ accuracy on ImageNet. Code is available at: \url{https://github.com/TerryPei/EfficientVMamba}.

Main Results

We will release all the pre-trained models/logs in few days.

  • Classification on ImageNet-1K
name pretrain resolution acc@1 #params FLOPs checkpoints/logs
EfficientVMamba-T ImageNet-1K 224x224 76.5 6M 0.8G [ckpt]/[log]
EfficientVMamba-S ImageNet-1K 224x224 78.7 11M 1.3G [ckpt]/[log]
EfficientVMamba-B ImageNet-1K 224x224 81.8 33M 4.0G [ckpt]/[log]
  • Object Detection on COCO
Backbone #params FLOPs Detector box mAP mask mAP checkpoints/logs
  • Semantic Segmentation on ADE20K
Backbone Input #params FLOPs Segmentor mIoU checkpoints/logs

Getting Started

Installation

The installation steps are the same as VMamba.

step1:Clone the VMamba repository:

To get started, first clone the VMamba repository and navigate to the project directory:

git clone https://github.com/MzeroMiko/EfficientVMamba.git
cd EfficientVMamba

step2:Environment Setup: The install VMamba recommends setting up a conda environment and installing dependencies via pip. Use the following commands to set up your environment:

Create and activate a new conda environment

conda create -n vmamba
conda activate vmamba

Install Dependencies.

pip install -r requirements.txt
# Install selective_scan and its dependencies
cd selective_scan && pip install . && pytest

Optional Dependencies for Model Detection and Segmentation:

pip install mmengine==0.10.1 mmcv==2.1.0 opencv-python-headless ftfy
pip install mmdet==3.3.0 mmsegmentation==1.2.2 mmpretrain==1.2.0

Model Training and Inference

Classification:

To train VMamba models for classification on ImageNet, use the following commands for different configurations:

# For Tiny
python -m torch.distributed.launch --nnodes=1 --node_rank=0 --nproc_per_node=8 --master_addr="127.0.0.1" --master_port=29501 main.py --cfg configs/vssm/vssm_efficient_tiny.yaml --batch-size 128 --data-path /dataset/ImageNet2012 --output /tmp

# For Small
python -m torch.distributed.launch --nnodes=1 --node_rank=0 --nproc_per_node=8 --master_addr="127.0.0.1" --master_port=29501 main.py --cfg configs/vssm/vssm_efficient_small.yaml --batch-size 128 --data-path /dataset/ImageNet2012 --output /tmp

# For Base
python -m torch.distributed.launch --nnodes=1 --node_rank=0 --nproc_per_node=8 --master_addr="127.0.0.1" --master_port=29501 main.py --cfg configs/vssm/vssm_efficient_base.yaml --batch-size 128 --data-path /dataset/ImageNet2012 --output /tmp

Detection and Segmentation:

For detection and segmentation tasks, follow similar steps using the appropriate config files from the configs/vssm directory. Adjust the --cfg, --data-path, and --output parameters according to your dataset and desired output location.

Citation

@article{
}

Acknowledgment

This project is based on VMamba paper, code , Mamba paper, code, Swin-Transformer (paper, code), ConvNeXt (paper, code), OpenMMLab, and the analyze/get_erf.py is adopted from replknet, thanks for their excellent works.

License

This project is released under the Apache 2.0 license.

Core symbols most depended-on inside this repo

Shape

Method 298
Function 175
Class 92
Route 3

Languages

Python95%
C++5%

Modules by API surface

classification/models/vmamba.py73 symbols
classification/models/vmamba_efficient.py69 symbols
classification/lib/dataset/augment_ops.py66 symbols
classification/lib/models/mamba/efficient_mamba.py63 symbols
selective_scan/csrc/selective_scan/selective_scan_common.h22 symbols
classification/lib/models/utils/dbb/dbb_block.py21 symbols
classification/lib/dataset/mixup.py18 symbols
classification/lib/models/losses/diffkd/scheduling_ddim.py17 symbols
classification/lib/models/losses/diffkd/diffkd_modules.py16 symbols
classification/lib/utils/misc.py15 symbols
classification/lib/models/utils/dyrep.py13 symbols
classification/utils/utils.py12 symbols

For agents

$ claude mcp add EfficientVMamba \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact

Ask about this repo answers extend the page