FasterViT / README.md
ahatamiz's picture
Update README.md
481ecd7
---
license: other
datasets:
- imagenet-1k
---
[**FasterViT: Fast Vision Transformers with Hierarchical Attention**](https://arxiv.org/abs/2306.06189).
FasterViT achieves a new SOTA Pareto-front in
terms of accuracy vs. image throughput without extra training data !
<p align="center">
<img src="https://github.com/NVlabs/FasterViT/assets/26806394/253d1a2e-b5f5-4a9b-a362-6cdd16bfccc1" width=62% height=62%
class="center">
</p>
Note: Please use the [**latest NVIDIA TensorRT release**](https://docs.nvidia.com/deeplearning/tensorrt/container-release-notes/index.html) to enjoy the benefits of optimized FasterViT ops.
## Quick Start
We can import pre-trained FasterViT models with **1 line of code**. First, FasterViT can be simply installed by:
```bash
pip install fastervit
```
A pretrained FasterViT model with default hyper-parameters can be created as in the following:
```python
>>> from fastervit import create_model
# Define fastervit-0 model with 224 x 224 resolution
>>> model = create_model('faster_vit_0_224',
pretrained=True,
model_path="/tmp/faster_vit_0.pth.tar")
```
`model_path` is used to set the directory to download the model.
We can also simply test the model by passing a dummy input image. The output is the logits:
```python
>>> import torch
>>> image = torch.rand(1, 3, 224, 224)
>>> output = model(image) # torch.Size([1, 1000])
```
We can also use the any-resolution FasterViT model to accommodate arbitrary image resolutions. In the following, we define an any-resolution FasterViT-0
model with input resolution of 576 x 960, window sizes of 12 and 6 in 3rd and 4th stages, carrier token size of 2 and embedding dimension of
64:
```python
>>> from fastervit import create_model
# Define any-resolution FasterViT-0 model with 576 x 960 resolution
>>> model = create_model('faster_vit_0_any_res',
resolution=[576, 960],
window_size=[7, 7, 12, 6],
ct_size=2,
dim=64,
pretrained=True)
```
Note that the above model is intiliazed from the original ImageNet pre-trained FasterViT with original resolution of 224 x 224. As a result, missing keys and mis-matches could be expected since we are addign new layers (e.g. addition of new carrier tokens, etc.)
We can simply test the model by passing a dummy input image. The output is the logits:
```python
>>> import torch
>>> image = torch.rand(1, 3, 576, 960)
>>> output = model(image) # torch.Size([1, 1000])
```
---
## Results + Pretrained Models
### ImageNet-1K
**FasterViT ImageNet-1K Pretrained Models**
<table>
<tr>
<th>Name</th>
<th>Acc@1(%)</th>
<th>Acc@5(%)</th>
<th>Throughput(Img/Sec)</th>
<th>Resolution</th>
<th>#Params(M)</th>
<th>FLOPs(G)</th>
<th>Download</th>
</tr>
<tr>
<td>FasterViT-0</td>
<td>82.1</td>
<td>95.9</td>
<td>5802</td>
<td>224x224</td>
<td>31.4</td>
<td>3.3</td>
<td><a href="https://drive.google.com/uc?export=download&id=1twI2LFJs391Yrj8MR4Ui9PfrvWqjE1iB">model</a></td>
</tr>
<tr>
<td>FasterViT-1</td>
<td>83.2</td>
<td>96.5</td>
<td>4188</td>
<td>224x224</td>
<td>53.4</td>
<td>5.3</td>
<td><a href="https://drive.google.com/uc?export=download&id=1r7W10n5-bFtM3sz4bmaLrowN2gYPkLGT">model</a></td>
</tr>
<tr>
<td>FasterViT-2</td>
<td>84.2</td>
<td>96.8</td>
<td>3161</td>
<td>224x224</td>
<td>75.9</td>
<td>8.7</td>
<td><a href="https://drive.google.com/uc?export=download&id=1n_a6s0pgi0jVZOGmDei2vXHU5E6RH5wU">model</a></td>
</tr>
<tr>
<td>FasterViT-3</td>
<td>84.9</td>
<td>97.2</td>
<td>1780</td>
<td>224x224</td>
<td>159.5</td>
<td>18.2</td>
<td><a href="https://drive.google.com/uc?export=download&id=1tvWElZ91Sia2SsXYXFMNYQwfipCxtI7X">model</a></td>
</tr>
<tr>
<td>FasterViT-4</td>
<td>85.4</td>
<td>97.3</td>
<td>849</td>
<td>224x224</td>
<td>424.6</td>
<td>36.6</td>
<td><a href="https://drive.google.com/uc?export=download&id=1gYhXA32Q-_9C5DXel17avV_ZLoaHwdgz">model</a></td>
</tr>
<tr>
<td>FasterViT-5</td>
<td>85.6</td>
<td>97.4</td>
<td>449</td>
<td>224x224</td>
<td>975.5</td>
<td>113.0</td>
<td><a href="https://drive.google.com/uc?export=download&id=1mqpai7XiHLr_n1tjxjzT8q369xTCq_z-">model</a></td>
</tr>
<tr>
<td>FasterViT-6</td>
<td>85.8</td>
<td>97.4</td>
<td>352</td>
<td>224x224</td>
<td>1360.0</td>
<td>142.0</td>
<td><a href="https://drive.google.com/uc?export=download&id=12jtavR2QxmMzcKwPzWe7kw-oy34IYi59">model</a></td>
</tr>
</table>
### ImageNet-21K
**FasterViT ImageNet-21K Pretrained Models (ImageNet-1K Fine-tuned)**
<table>
<tr>
<th>Name</th>
<th>Acc@1(%)</th>
<th>Acc@5(%)</th>
<th>Resolution</th>
<th>#Params(M)</th>
<th>FLOPs(G)</th>
<th>Download</th>
</tr>
<tr>
<td>FasterViT-4-21K-224</td>
<td>86.6</td>
<td>97.8</td>
<td>224x224</td>
<td>271.9</td>
<td>40.8</td>
<td><a href="https://huggingface.co/ahatamiz/FasterViT/resolve/main/fastervit_4_21k_224_w14.pth.tar">model</a></td>
</tr>
<tr>
<td>FasterViT-4-21K-384</td>
<td>87.6</td>
<td>98.3</td>
<td>384x384</td>
<td>271.9</td>
<td>120.1</td>
<td><a href="https://huggingface.co/ahatamiz/FasterViT/resolve/main/fastervit_4_21k_384_w24.pth.tar">model</a></td>
</tr>
<tr>
<td>FasterViT-4-21K-512</td>
<td>87.8</td>
<td>98.4</td>
<td>512x512</td>
<td>271.9</td>
<td>213.5</td>
<td><a href="https://huggingface.co/ahatamiz/FasterViT/resolve/main/fastervit_4_21k_512_w32.pth.tar">model</a></td>
</tr>
<tr>
<td>FasterViT-4-21K-768</td>
<td>87.9</td>
<td>98.5</td>
<td>768x768</td>
<td>271.9</td>
<td>480.4</td>
<td><a href="https://huggingface.co/ahatamiz/FasterViT/resolve/main/fastervit_4_21k_768_w48.pth.tar">model</a></td>
</tr>
</table>
### Robustness (ImageNet-A - ImageNet-R - ImageNet-V2)
All models use `crop_pct=0.875`. Results are obtained by running inference on ImageNet-1K pretrained models without finetuning.
<table>
<tr>
<th>Name</th>
<th>A-Acc@1(%)</th>
<th>A-Acc@5(%)</th>
<th>R-Acc@1(%)</th>
<th>R-Acc@5(%)</th>
<th>V2-Acc@1(%)</th>
<th>V2-Acc@5(%)</th>
</tr>
<tr>
<td>FasterViT-0</td>
<td>23.9</td>
<td>57.6</td>
<td>45.9</td>
<td>60.4</td>
<td>70.9</td>
<td>90.0</td>
</tr>
<tr>
<td>FasterViT-1</td>
<td>31.2</td>
<td>63.3</td>
<td>47.5</td>
<td>61.9</td>
<td>72.6</td>
<td>91.0</td>
</tr>
<tr>
<td>FasterViT-2</td>
<td>38.2</td>
<td>68.9</td>
<td>49.6</td>
<td>63.4</td>
<td>73.7</td>
<td>91.6</td>
</tr>
<tr>
<td>FasterViT-3</td>
<td>44.2</td>
<td>73.0</td>
<td>51.9</td>
<td>65.6</td>
<td>75.0</td>
<td>92.2</td>
</tr>
<tr>
<td>FasterViT-4</td>
<td>49.0</td>
<td>75.4</td>
<td>56.0</td>
<td>69.6</td>
<td>75.7</td>
<td>92.7</td>
</tr>
<tr>
<td>FasterViT-5</td>
<td>52.7</td>
<td>77.6</td>
<td>56.9</td>
<td>70.0</td>
<td>76.0</td>
<td>93.0</td>
</tr>
<tr>
<td>FasterViT-6</td>
<td>53.7</td>
<td>78.4</td>
<td>57.1</td>
<td>70.1</td>
<td>76.1</td>
<td>93.0</td>
</tr>
</table>
A, R and V2 denote ImageNet-A, ImageNet-R and ImageNet-V2 respectively.
## Citation
Please consider citing FasterViT if this repository is useful for your work.
```
@article{hatamizadeh2023fastervit,
title={FasterViT: Fast Vision Transformers with Hierarchical Attention},
author={Hatamizadeh, Ali and Heinrich, Greg and Yin, Hongxu and Tao, Andrew and Alvarez, Jose M and Kautz, Jan and Molchanov, Pavlo},
journal={arXiv preprint arXiv:2306.06189},
year={2023}
}
```
## Licenses
Copyright © 2023, NVIDIA Corporation. All rights reserved.
This work is made available under the NVIDIA Source Code License-NC. Click [here](LICENSE) to view a copy of this license.
For license information regarding the timm repository, please refer to its [repository](https://github.com/rwightman/pytorch-image-models).
For license information regarding the ImageNet dataset, please see the [ImageNet official website](https://www.image-net.org/).
## Acknowledgement
This repository is built on top of the [timm](https://github.com/huggingface/pytorch-image-models) repository. We thank [Ross Wrightman](https://rwightman.com/) for creating and maintaining this high-quality library.