🚀 DiNAT (mini variant)
DiNAT-Mini 是在 ImageNet-1K 数据集上以 224x224 分辨率进行训练的模型。它由 Hassani 等人在论文 Dilated Neighborhood Attention Transformer 中提出,并首次在 此仓库 中发布。该模型可用于图像分类任务,为相关领域的研究和应用提供了有力支持。
✨ 主要特性
- 基于 Neighborhood Attention:DiNAT 是一种基于邻域注意力(Neighborhood Attention,NA)及其扩张变体(DiNA)的分层视觉变换器。邻域注意力是一种受限的自注意力模式,每个令牌的感受野仅限于其最近的相邻像素。
- 滑动窗口注意力模式:NA 和 DiNA 属于滑动窗口注意力模式,具有高度的灵活性,并能保持平移等变性。
- PyTorch 实现:通过 NATTEN 包提供了 PyTorch 实现。
📦 安装指南
除了 transformers
库,此模型还需要 NATTEN 包。
- Linux 用户:可参考 shi-labs.com/natten 上的说明,使用预编译的二进制文件进行安装(只需选择合适的 PyTorch 版本以获取正确的 wheel URL)。
- 其他用户:也可以使用
pip install natten
在本地设备上进行编译安装,这可能需要几分钟时间。Mac 用户只能选择此方式(没有预编译的二进制文件)。
更多信息请参考 NATTEN 的 GitHub 仓库。
💻 使用示例
基础用法
以下是如何使用该模型将 COCO 2017 数据集中的图像分类为 1000 个 ImageNet 类别之一的示例:
from transformers import AutoImageProcessor, DinatForImageClassification
from PIL import Image
import requests
url = "http://images.cocodataset.org/val2017/000000039769.jpg"
image = Image.open(requests.get(url, stream=True).raw)
feature_extractor = AutoImageProcessor.from_pretrained("shi-labs/dinat-mini-in1k-224")
model = DinatForImageClassification.from_pretrained("shi-labs/dinat-mini-in1k-224")
inputs = feature_extractor(images=image, return_tensors="pt")
outputs = model(**inputs)
logits = outputs.logits
predicted_class_idx = logits.argmax(-1).item()
print("Predicted class:", model.config.id2label[predicted_class_idx])
更多示例请参考 文档。
📚 详细文档
模型描述
DiNAT 是一种基于邻域注意力(NA)及其扩张变体(DiNA)的分层视觉变换器。邻域注意力是一种受限的自注意力模式,其中每个令牌的感受野仅限于其最近的相邻像素。因此,NA 和 DiNA 是滑动窗口注意力模式,具有高度的灵活性,并能保持平移等变性。
来源
预期用途和限制
可以使用原始模型进行图像分类。请查看 模型中心 以查找针对你感兴趣的任务进行微调的版本。
BibTeX 引用和引用信息
@article{hassani2022dilated,
title = {Dilated Neighborhood Attention Transformer},
author = {Ali Hassani and Humphrey Shi},
year = 2022,
url = {https://arxiv.org/abs/2209.15001},
eprint = {2209.15001},
archiveprefix = {arXiv},
primaryclass = {cs.CV}
}
📄 许可证
本项目采用 MIT 许可证。
信息表格
属性 |
详情 |
模型类型 |
基于邻域注意力及其扩张变体的分层视觉变换器 |
训练数据 |
ImageNet-1K |
应用场景 |
图像分类 |