🚀 NAT (小变体)
NAT-Small是在224x224分辨率的ImageNet-1K数据集上训练的模型。它由Hassani等人在论文Neighborhood Attention Transformer中提出,并首次在此仓库中发布。该模型可用于图像分类任务,为相关领域的研究和应用提供了有力支持。
✨ 主要特性
- 基于邻域注意力机制:NAT是一种基于邻域注意力(NA)的分层视觉变换器。邻域注意力是一种受限的自注意力模式,其中每个标记的感受野仅限于其最近的相邻像素,具有高度的灵活性并保持平移等变性。
- 高效的实现方式:NA通过其扩展NATTEN在PyTorch中实现。
📦 安装指南
除了transformers
库,此模型还需要NATTEN包。
- Linux系统:你可以参考shi-labs.com/natten上的说明,使用预编译的二进制文件进行安装(只需选择你的torch版本以获取正确的wheel URL)。
- 其他系统:你也可以使用
pip install natten
在你的设备上进行编译,这可能需要几分钟时间。Mac用户只能选择这种方式(没有预编译的二进制文件)。
更多信息请参考NATTEN的GitHub。
💻 使用示例
基础用法
以下是如何使用此模型将COCO 2017数据集中的图像分类为1000个ImageNet类别之一的示例:
from transformers import AutoImageProcessor, NatForImageClassification
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/nat-small-in1k-224")
model = NatForImageClassification.from_pretrained("shi-labs/nat-small-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])
更多示例请参考文档。
📚 详细文档
预期用途和限制
你可以使用原始模型进行图像分类。请查看模型中心,以查找针对你感兴趣的任务进行微调的版本。
模型描述
NAT是一种基于邻域注意力(NA)的分层视觉变换器。邻域注意力是一种受限的自注意力模式,其中每个标记的感受野仅限于其最近的相邻像素。NA是一种滑动窗口注意力模式,因此具有高度的灵活性并保持平移等变性。
NA通过其扩展NATTEN在PyTorch实现中得以应用。

来源
BibTeX引用
@article{hassani2022neighborhood,
title = {Neighborhood Attention Transformer},
author = {Ali Hassani and Steven Walton and Jiachen Li and Shen Li and Humphrey Shi},
year = 2022,
url = {https://arxiv.org/abs/2204.07143},
eprint = {2204.07143},
archiveprefix = {arXiv},
primaryclass = {cs.CV}
}
📄 许可证
本项目采用MIT许可证。