🚀 Data2Vec-Vision(大型模型,在ImageNet-1k上微调)
Data2Vec-Vision是一个基于BEiT模型的图像分类模型,它以自监督的方式进行预训练,并在ImageNet-1k(120万张图像,1000个类别)上进行了微调,分辨率为224x224。该模型由Alexei Baevski、Wei-Ning Hsu等人提出,相关论文为data2vec: A General Framework for Self-supervised Learning in Speech, Vision and Language,并首次发布于this repository。
🚀 快速开始
你可以使用该原始模型进行图像分类。可在模型中心查找针对你感兴趣任务的微调版本。
代码示例
以下是如何使用此模型将COCO 2017数据集中的图像分类为1000个ImageNet类别之一的示例:
from transformers import BeitFeatureExtractor, Data2VecVisionForImageClassification
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 = BeitFeatureExtractor.from_pretrained('facebook/data2vec-vision-large-ft1k')
model = Data2VecVisionForImageClassification.from_pretrained('facebook/data2vec-vision-large-ft1k')
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])
目前,特征提取器和模型都支持PyTorch。
✨ 主要特性
- 跨模态自监督学习:data2vec框架使用相同的学习方法应用于语音、NLP或计算机视觉,朝着通用自监督学习迈进了一步。
- 预测上下文潜在表示:与预测特定模态目标不同,data2vec预测包含整个输入信息的上下文潜在表示。
- 高性能表现:在语音识别、图像分类和自然语言理解的主要基准测试中展示了新的技术水平或与主流方法相当的性能。
📦 安装指南
文档未提及安装步骤,可参考相关库(如transformers
)的官方安装指南进行安装。
💻 使用示例
基础用法
from transformers import BeitFeatureExtractor, Data2VecVisionForImageClassification
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 = BeitFeatureExtractor.from_pretrained('facebook/data2vec-vision-large-ft1k')
model = Data2VecVisionForImageClassification.from_pretrained('facebook/data2vec-vision-large-ft1k')
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])
📚 详细文档
预训练方法
更多信息,请查看官方论文。
摘要
自监督学习的总体思想在不同模态之间是相同的,但实际的算法和目标却有很大差异,因为它们是针对单一模态开发的。为了更接近通用自监督学习,我们提出了data2vec框架,该框架对语音、NLP或计算机视觉使用相同的学习方法。其核心思想是在自蒸馏设置中,基于输入的掩码视图,使用标准的Transformer架构预测完整输入数据的潜在表示。与预测本质上是局部的特定模态目标(如单词、视觉标记或人类语音单元)不同,data2vec预测包含整个输入信息的上下文潜在表示。在语音识别、图像分类和自然语言理解的主要基准测试上的实验表明,该方法达到了新的技术水平或与主流方法具有相当的性能。
预期用途和限制
你可以使用原始模型进行图像分类。可在模型中心查找针对你感兴趣任务的微调版本。
训练数据
BEiT模型在ImageNet-1k上进行了预训练和微调,该数据集包含120万张图像和1000个类别。
训练过程
预处理
训练/验证期间图像预处理的确切细节可在此处找到。
图像被调整大小/重新缩放至相同分辨率(224x224),并在RGB通道上使用均值(0.5, 0.5, 0.5)和标准差(0.5, 0.5, 0.5)进行归一化。
预训练
所有与预训练相关的超参数,请参考原始论文和原始代码库。
评估结果
关于几个图像分类基准的评估结果,请参考原始论文的表1。请注意,对于微调,使用更高的分辨率可获得最佳结果。当然,增加模型大小会提高性能。
我们在ImageNet1K
上对模型进行了评估,获得了top-1准确率 = 86.50,而原始论文中报告的top-1准确率为86.2。
如果你想重现我们的评估过程,可以使用此Colab笔记本。
BibTeX引用和引用信息
@misc{https://doi.org/10.48550/arxiv.2202.03555,
doi = {10.48550/ARXIV.2202.03555},
url = {https://arxiv.org/abs/2202.03555},
author = {Baevski, Alexei and Hsu, Wei-Ning and Xu, Qiantong and Babu, Arun and Gu, Jiatao and Auli, Michael},
keywords = {Machine Learning (cs.LG), FOS: Computer and information sciences, FOS: Computer and information sciences},
title = {data2vec: A General Framework for Self-supervised Learning in Speech, Vision and Language},
publisher = {arXiv},
year = {2022},
copyright = {arXiv.org perpetual, non-exclusive license}
}
📄 许可证
本模型使用Apache-2.0许可证。