FastViT是由Apple公司在2023年8月发布的一个用于图像分类的新型视觉变换器(Vision Transformer)。该模型在ImageNet-1k数据集上进行了训练,能够识别该数据集中的1000个独特类别。FastViT的名称来源于其在FastViT论文摘要中报告的“最先进的延迟-准确性权衡”。根据论文,FastViT在移动设备上对ImageNet数据集的分类速度是CMT(一种最新的混合变换器架构)的3.5倍,是EfficientNet的4.9倍,是ConvNeXt的1.9倍,这使得该模型成为图像分类的极佳选择。
FastViT的原始代码库包含了一些有限的代码,可以加载FastViT,但使用示例不包括推理代码。自论文和相关代码发布以来,timm(一个实现了多个视觉功能的Python包,如层、优化器和数据加载器)在Hugging Face Hub上提供了一个实现。然后,Roboflow将模型集成到Autodistill中,这是一个框架,可以让用几行代码就能使用FastViT等最先进的基础模型进行推理和数据标注。
在本指南中,将展示如何使用autodistill-fastvit来使用FastViT。如果想从源代码使用该项目,请查看Apple FastViT代码库。首先,需要安装FastViT。要安装Autodistill FastViT包装器,请运行以下命令:
pip install autodistill-fastvit
现在已经在系统上安装了FastViT,可以开始尝试使用该模型了。FastViT能够识别ImageNet-1k数据集中的所有类别。类别列表涵盖了从秃鹫到汽车后视镜再到螺丝的所有内容。可以使用以下Python代码检索这些类别的列表:
from autodistill_fastvit import FASTVIT_IMAGENET_1K_CLASSES
print(FASTVIT_IMAGENET_1K_CLASSES)
或者,可以参考。接下来,将展示如何使用FastViT进行推理。让对以下狗的图片进行分类:
from autodistill_fastvit import FastViT, FASTVIT_IMAGENET_1K_CLASSES
from autodistill.detection import CaptionOntology
# 使用FASTVIT_IMAGENET_1K_CLASSES中的提示进行零样本分类
base_model = FastViT(
ontology=CaptionOntology(
{
"Beagle": "beagle",
"Border Collie": "collie"
}
)
)
# 零样本分类,不使用提示
# base_model = FastViT(None)
predictions = base_model.predict("./example.png")
labels = [FASTVIT_IMAGENET_1K_CLASSES[i] for i in predictions.class_id.tolist()]
print(labels)
在上面的代码中,指定了两种分类选项:Beagle或Border Collie。如果这些提示都不相关,则不会返回任何结果。代码返回了以下结果:
['Beagle']