Project Icon

FasterViT

高效分层注意力的视觉transformer新突破

FasterViT是一种创新的视觉transformer模型,采用分层注意力机制高效捕获短程和长程信息。在ImageNet分类任务中,FasterViT实现了精度和吞吐量的新平衡,无需额外训练数据即达到最先进水平。该项目提供多种预训练模型,适应不同计算资源和精度需求,支持任意分辨率输入,为目标检测、分割等下游任务提供灵活选择。

FasterViT:具有层次注意力的快速视觉 Transformer

FasterViT:具有层次注意力的快速视觉 Transformer 的官方 PyTorch 实现。

在 GitHub 上标星

Ali HatamizadehGreg HeinrichHongxu (Danny) YinAndrew TaoJose M. AlvarezJan KautzPavlo Molchanov

如需商业咨询,请访问我们的网站并提交表单:NVIDIA 研究许可


FasterViT 在不使用额外训练数据的情况下,在 Top-1 准确率和吞吐量方面实现了新的 SOTA 帕累托前沿!

我们引入了一种新的自注意力机制,称为层次注意力(HAT),通过学习跨窗口载体令牌来捕获短程和长程信息。

预览图

注意:请使用最新的 NVIDIA TensorRT 版本以享受优化的 FasterViT 操作带来的好处。

💥 新闻 💥

  • [2024.04.02] 🔥 更新后的论文现已在 arXiv 上发布!
  • [2024.01.24] 🔥🔥🔥 使用 MOTRv2 + FasterViT 的目标跟踪现已开源(链接)!
  • [2024.01.17] 🔥🔥🔥 FasterViT 论文已被 ICLR 2024 接收!
  • [2023.10.14] 🔥🔥 我们已添加了使用 DINO 的 FasterViT 目标检测仓库
  • [2023.08.24] 🔥 FasterViT Keras 模型及预训练权重已在 keras_cv_attention_models 中发布!
  • [2023.08.20] 🔥🔥 我们已添加了各种分辨率的 ImageNet-21K SOTA 预训练模型!
  • [2023.07.20] 我们已创建官方 NVIDIA FasterViT HuggingFace 页面。
  • [2023.07.06] FasterViT 检查点现在也可在 HuggingFace 上访问!
  • [2023.07.04] 现在可以使用一行代码导入 ImageNet 预训练的 FasterViT 模型。请安装最新的 FasterViT pip 包以使用此功能(也支持任意分辨率的 FasterViT 模型)。
  • [2023.06.30] 我们进一步提高了 FasterViT 模型在 TensorRT 上的吞吐量,不同模型平均提升了 10-15%。请使用最新的 NVIDIA TensorRT 版本以获得这些吞吐量性能提升。
  • [2023.06.29] 任意分辨率的 FasterViT 模型现在可以从预训练的 ImageNet 分辨率(224 x 224)模型初始化。
  • [2023.06.18] 我们已发布 FasterViT pip 包
  • [2023.06.17] 任意分辨率 FasterViT 模型现已可用!该模型可用于各种应用,如检测和分割或任意输入图像分辨率的高分辨率微调。
  • [2023.06.09] 🔥🔥 我们已发布源代码和 ImageNet-1K FasterViT 模型!

快速开始

目标检测

请查看 FasterViT 目标检测仓库,其中使用了 DINO:具有改进去噪锚框的端到端目标检测 DETR,以获取更多详细信息。

分类

我们可以使用一行代码导入预训练的 FasterViT 模型。首先,可以简单地安装 FasterViT:

pip install fastervit

注意:如果您已经安装了该包,请将其升级到 fastervit>=0.9.8 以使用预训练权重。

可以按如下方式创建具有默认超参数的预训练 FasterViT 模型:

>>> from fastervit import create_model

# 定义分辨率为 224 x 224 的 fastervit-0 模型

>>> model = create_model('faster_vit_0_224', 
                          pretrained=True,
                          model_path="/tmp/faster_vit_0.pth.tar")

model_path 用于设置下载模型的目录。

我们还可以通过传入一个虚拟输入图像来简单测试模型。输出是 logits:

>>> import torch

>>> image = torch.rand(1, 3, 224, 224)
>>> output = model(image) # torch.Size([1, 1000])

我们还可以使用任意分辨率的 FasterViT 模型来适应任意图像分辨率。在下面的例子中,我们定义了一个输入分辨率为 576 x 960、第 3 和第 4 阶段的窗口大小分别为 12 和 6、载体令牌大小为 2、嵌入维度为 64 的任意分辨率 FasterViT-0 模型:

>>> from fastervit import create_model

# 定义分辨率为 576 x 960 的任意分辨率 FasterViT-0 模型
>>> model = create_model('faster_vit_0_any_res', 
                          resolution=[576, 960],
                          window_size=[7, 7, 12, 6],
                          ct_size=2,
                          dim=64,
                          pretrained=True)

请注意,上述模型是从原始分辨率为 224 x 224 的 ImageNet 预训练 FasterViT 初始化的。因此,由于我们添加了新层(例如添加新的载体令牌等),可能会出现缺失键和不匹配的情况。

我们可以通过传入一个虚拟输入图像来测试模型。输出是 logits:

>>> import torch

>>> image = torch.rand(1, 3, 576, 960)
>>> output = model(image) # torch.Size([1, 1000])

目录

  • ImageNet-1K 训练代码
  • ImageNet-1K 预训练模型
  • 任意分辨率 FasterViT
  • FasterViT pip 包发布
  • 添加从 ImageNet 预训练权重初始化任意分辨率 FasterViT 的能力
  • ImageNet-21K 预训练模型
  • 检测代码 + 模型

结果 + 预训练模型

ImageNet-1K

FasterViT ImageNet-1K 预训练模型

名称Acc@1(%)Acc@5(%)吞吐量(图像/秒)分辨率参数量(M)FLOPs(G)下载
FasterViT-082.195.95802224x22431.43.3模型
FasterViT-183.296.54188224x22453.45.3模型
FasterViT-284.296.83161224x22475.98.7模型
FasterViT-384.997.21780224x224159.518.2模型
FasterViT-485.497.3849224x224424.636.6模型
FasterViT-585.697.4449224x224975.5113.0模型
FasterViT-685.897.4352224x2241360.0142.0模型

ImageNet-21K

FasterViT ImageNet-21K预训练模型(在ImageNet-1K上微调)

名称Acc@1(%)Acc@5(%)分辨率参数量(M)FLOPs(G)下载
FasterViT-4-21K-22486.697.8224x224271.940.8模型
FasterViT-4-21K-38487.698.3384x384271.9120.1模型
FasterViT-4-21K-51287.898.4512x512271.9213.5模型
FasterViT-4-21K-76887.998.5768x768271.9480.4模型

FasterViT-4在ImageNet-21K上的原始预训练模型权重也可以通过此链接下载。

鲁棒性(ImageNet-A - ImageNet-R - ImageNet-V2)

所有模型使用crop_pct=0.875。结果是通过在ImageNet-1K预训练模型上直接进行推理获得的,没有进行微调。

名称A-Acc@1(%)A-Acc@5(%)R-Acc@1(%)R-Acc@5(%)V2-Acc@1(%)V2-Acc@5(%)
FasterViT-023.957.645.960.470.990.0
FasterViT-131.263.347.561.972.691.0
FasterViT-238.268.949.663.473.791.6
FasterViT-344.273.051.965.675.092.2
FasterViT-449.075.456.069.675.792.7
FasterViT-552.777.656.970.076.093.0
FasterViT-653.778.457.170.176.193.0

A、R和V2分别代表ImageNet-A、ImageNet-R和ImageNet-V2。

安装

我们提供了一个docker文件。此外,假设已安装最新版本的PyTorch,可以通过运行以下命令安装依赖项:

pip install -r requirements.txt

训练

有关所有模型的详细训练说明,请参阅TRAINING.md

评估

可以使用以下命令在ImageNet-1K验证集上评估FasterViT模型:

python validate.py \
--model <模型名称>
--checkpoint <检查点路径>
--data_dir <imagenet路径>
--batch-size <每个GPU的批量大小>

这里--model是FasterViT变体(例如faster_vit_0_224_1k),--checkpoint是预训练模型权重的路径,--data_dir是ImageNet-1K验证集的路径,--batch-size是批量大小。我们还在这里提供了一个示例脚本。

ONNX转换

我们提供ONNX转换脚本以支持动态批量大小推理。例如,要为分辨率为576 x 960且ONNX操作集版本为17的faster_vit_0_any_res生成ONNX模型,可以使用以下命令:

python onnx_convert --model-name faster_vit_0_any_res --simplify --resolution-h 576 --resolution-w 960 --onnx-opset 17

CoreML转换

要生成FasterViT CoreML模型,请安装coremltools==5.2.0并使用我们提供的脚本

建议使用Xcode14或更新版本对性能进行基准测试。

星标历史

星标历史图表

第三方扩展

我们一直欢迎第三方扩展/实现和用于其他目的。以下代表其他用户的第三方贡献。

名称链接贡献者框架
keras_cv_attention_models链接@leondgarseKeras

如果您希望您的工作在此存储库中列出,请提出一个问题并提供给我们详细信息。

引用

如果此存储库对您的工作有用,请考虑引用FasterViT。

@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}
}

许可证

版权所有 © 2023,NVIDIA Corporation。保留所有权利。

本作品根据NVIDIA Source Code License-NC提供。点击此处查看此许可证的副本。

有关timm存储库的许可信息,请参阅其存储库

有关ImageNet数据集的许可信息,请参阅ImageNet官方网站

致谢

此存储库基于timm存储库构建。我们感谢Ross Wrightman创建和维护这个高质量的库。

项目侧边栏1项目侧边栏2
推荐项目
Project Cover

豆包MarsCode

豆包 MarsCode 是一款革命性的编程助手,通过AI技术提供代码补全、单测生成、代码解释和智能问答等功能,支持100+编程语言,与主流编辑器无缝集成,显著提升开发效率和代码质量。

Project Cover

AI写歌

Suno AI是一个革命性的AI音乐创作平台,能在短短30秒内帮助用户创作出一首完整的歌曲。无论是寻找创作灵感还是需要快速制作音乐,Suno AI都是音乐爱好者和专业人士的理想选择。

Project Cover

有言AI

有言平台提供一站式AIGC视频创作解决方案,通过智能技术简化视频制作流程。无论是企业宣传还是个人分享,有言都能帮助用户快速、轻松地制作出专业级别的视频内容。

Project Cover

Kimi

Kimi AI助手提供多语言对话支持,能够阅读和理解用户上传的文件内容,解析网页信息,并结合搜索结果为用户提供详尽的答案。无论是日常咨询还是专业问题,Kimi都能以友好、专业的方式提供帮助。

Project Cover

阿里绘蛙

绘蛙是阿里巴巴集团推出的革命性AI电商营销平台。利用尖端人工智能技术,为商家提供一键生成商品图和营销文案的服务,显著提升内容创作效率和营销效果。适用于淘宝、天猫等电商平台,让商品第一时间被种草。

Project Cover

吐司

探索Tensor.Art平台的独特AI模型,免费访问各种图像生成与AI训练工具,从Stable Diffusion等基础模型开始,轻松实现创新图像生成。体验前沿的AI技术,推动个人和企业的创新发展。

Project Cover

SubCat字幕猫

SubCat字幕猫APP是一款创新的视频播放器,它将改变您观看视频的方式!SubCat结合了先进的人工智能技术,为您提供即时视频字幕翻译,无论是本地视频还是网络流媒体,让您轻松享受各种语言的内容。

Project Cover

美间AI

美间AI创意设计平台,利用前沿AI技术,为设计师和营销人员提供一站式设计解决方案。从智能海报到3D效果图,再到文案生成,美间让创意设计更简单、更高效。

Project Cover

稿定AI

稿定设计 是一个多功能的在线设计和创意平台,提供广泛的设计工具和资源,以满足不同用户的需求。从专业的图形设计师到普通用户,无论是进行图片处理、智能抠图、H5页面制作还是视频剪辑,稿定设计都能提供简单、高效的解决方案。该平台以其用户友好的界面和强大的功能集合,帮助用户轻松实现创意设计。

投诉举报邮箱: service@vectorlightyear.com
@2024 懂AI·鲁ICP备2024100362号-6·鲁公网安备37021002001498号