🚀 MobileViT(小型模型)
MobileViT是一个轻量级、低延迟的卷积神经网络,结合了MobileNetV2风格的层与新的模块,使用Transformer将卷积中的局部处理替换为全局处理,可用于图像分类任务。
🚀 快速开始
你可以使用原始模型进行图像分类。查看模型中心,寻找针对你感兴趣的任务进行微调的版本。
以下是如何使用该模型将COCO 2017数据集中的图像分类为1000个ImageNet类别之一的示例:
from transformers import MobileViTFeatureExtractor, MobileViTForImageClassification
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 = MobileViTFeatureExtractor.from_pretrained("apple/mobilevit-small")
model = MobileViTForImageClassification.from_pretrained("apple/mobilevit-small")
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。
✨ 主要特性
- 轻量级、低延迟的卷积神经网络,结合了MobileNetV2风格的层与新模块。
- 使用Transformer将卷积中的局部处理替换为全局处理。
- 图像数据在经过Transformer层处理前会转换为扁平的块,处理后再恢复为特征图。
- 无需任何位置嵌入。
📚 详细文档
模型描述
MobileViT是一种轻量级、低延迟的卷积神经网络,它将MobileNetV2风格的层与一个新的模块相结合,该模块使用Transformer将卷积中的局部处理替换为全局处理。与ViT(视觉Transformer)一样,图像数据在经过Transformer层处理之前会被转换为扁平的块。之后,这些块会被“解扁平”回特征图。这使得MobileViT模块可以放置在CNN内的任何位置。MobileViT不需要任何位置嵌入。
预期用途与限制
你可以使用原始模型进行图像分类。查看模型中心,寻找针对你感兴趣的任务进行微调的版本。
📦 安装指南
文档未提及安装步骤,故跳过该章节。
💻 使用示例
基础用法
from transformers import MobileViTFeatureExtractor, MobileViTForImageClassification
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 = MobileViTFeatureExtractor.from_pretrained("apple/mobilevit-small")
model = MobileViTForImageClassification.from_pretrained("apple/mobilevit-small")
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])
高级用法
文档未提及高级用法相关代码,故跳过该部分。
🔧 技术细节
训练数据
MobileViT模型在ImageNet-1k上进行了预训练,该数据集由100万张图像和1000个类别组成。
训练过程
预处理
训练仅需要基本的数据增强,即随机调整大小裁剪和水平翻转。
为了在不进行微调的情况下学习多尺度表示,训练期间使用了多尺度采样器,图像大小从以下范围随机采样:(160, 160)、(192, 192)、(256, 256)、(288, 288)、(320, 320)。
在推理时,图像会被调整大小/重新缩放至相同的分辨率(288x288),并在256x256处进行中心裁剪。
像素被归一化到[0, 1]范围。图像预期为BGR像素顺序,而非RGB。
预训练
MobileViT网络在8个NVIDIA GPU上的ImageNet-1k上从头开始训练300个epoch,有效批量大小为1024,学习率预热3000步,随后进行余弦退火。还使用了标签平滑交叉熵损失和L2权重衰减。训练分辨率从160x160到320x320不等,使用多尺度采样。
评估结果
模型 |
ImageNet top-1准确率 |
ImageNet top-5准确率 |
参数数量 |
URL |
MobileViT-XXS |
69.0 |
88.9 |
1.3 M |
https://huggingface.co/apple/mobilevit-xx-small |
MobileViT-XS |
74.8 |
92.3 |
2.3 M |
https://huggingface.co/apple/mobilevit-x-small |
MobileViT-S |
78.4 |
94.1 |
5.6 M |
https://huggingface.co/apple/mobilevit-small |
BibTeX引用和引用信息
@inproceedings{vision-transformer,
title = {MobileViT: Light-weight, General-purpose, and Mobile-friendly Vision Transformer},
author = {Sachin Mehta and Mohammad Rastegari},
year = {2022},
URL = {https://arxiv.org/abs/2110.02178}
}
📄 许可证
本项目使用的许可证是Apple示例代码许可证。