项目简介:Big Transfer (BiT)
Big Transfer (BiT)是由Alexander Kolesnikov、Lucas Beyer、Xiaohua Zhai、Joan Puigcerver、Jessica Yung、Sylvain Gelly和Neil Houlsby提出的一种视觉表示学习模型。BiT项目的主要目标是通过扩展ResNet类架构(特别是ResNetv2)的预训练,从而显著提升迁移学习的性能。
模型描述
BiT的核心思想是在大规模监督数据集上进行预训练,然后在目标任务上进行微调。通过结合一些精心选择的组件,BiT实现了在20多个数据集上强劲的表现。无论是每类仅有1个样本,还是总共1百万个样本的数据集环境下,BiT都表现出色。
具体来说,BiT在ILSVRC-2012数据集上达到了87.5%的top-1准确率,在CIFAR-10上达到了99.4%的优秀表现,同时,在19个任务的视觉任务适配基准(VTAB)中取得了76.3%的成绩。在小规模数据集上,BiT凭借每类10个样本,在ILSVRC-2012数据集上取得了76.8%的准确率,在CIFAR-10上则是97.0%。
预期用途及限制
BiT模型主要用于图像分类任务。用户可以在模型库中找到针对特定任务微调的版本。此外,用户还可以使用BiT的原始模型来执行图像分类任务,尤其是将COCO 2017数据集的图像分类至1,000个ImageNet分类中。
如何使用
以下是如何使用该模型进行图像分类的示例代码:
from transformers import BitImageProcessor, BitForImageClassification
import torch
from datasets import load_dataset
# 加载Hugging Face提供的样本数据集
dataset = load_dataset("huggingface/cats-image")
image = dataset["test"]["image"][0]
# 创建特征提取工具和分类模型
feature_extractor = BitImageProcessor.from_pretrained("google/bit-50")
model = BitForImageClassification.from_pretrained("google/bit-50")
# 提取图像特征
inputs = feature_extractor(image, return_tensors="pt")
# 进行模型预测
with torch.no_grad():
logits = model(**inputs).logits
# 输出预测结果
predicted_label = logits.argmax(-1).item()
print(model.config.id2label[predicted_label])
如需更多的代码示例,可以参考文档。
通过这种方式,使用者可以有效地利用BiT模型进行各种视觉任务,尤其是在数据有限的情况下。通过扩展和改进传统的预训练方法,BiT为图像分类任务带来了新的性能提升。