Xiaohuan Pei1,Tao Huang1,Chang Xu1,
1 University of Sydney
Paper: (arXiv 2401.10166)
Mar. 20th, 2024: Will published in several days.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}.
We will release all the pre-trained models/logs in few days.
| 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] |
| Backbone | #params | FLOPs | Detector | box mAP | mask mAP | checkpoints/logs |
|---|---|---|---|---|---|---|
| Backbone | Input | #params | FLOPs | Segmentor | mIoU | checkpoints/logs |
|---|---|---|---|---|---|---|
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:
conda create -n vmamba
conda activate vmamba
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
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.
@article{
}
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.
This project is released under the Apache 2.0 license.
$ claude mcp add EfficientVMamba \
-- python -m otcore.mcp_server <graph>