# 优化 Vision Transformer 模型以进行部署 [¶](#optimizing-vision-transformer-model-for-deployment "永久链接到此标题") > 译者:[片刻小哥哥](https://github.com/jiangzhonglian) > 人工校正:[xiaoxstz](https://github.com/xiaoxstz) > > 项目地址: > > 原始地址: [Jeff Tang](https://github.com/jeffxtang) ,[Geeta Chauhan](https://github.com/gchauhan/) Vision Transformer 模型将自然语言处理中引入的基于注意力的尖端 Transformer 模型应用于计算机视觉任务,以实现各种最先进的 (SOTA) 结果。 Facebook 数据高效图像转换器 [DeiT](https://ai.facebook.com/blog/data-efficient-image-transformers-a-promising-new-technique-for-image-classification) 是在 ImageNet 上训练的 Vision Transformer 模型用于图像分类。 在本教程中,我们将首先介绍 DeiT 是什么以及如何使用它,然后完成脚本编写、量化、优化以及在 iOS 和 Android 应用程序中使用模型的完整步骤。我们还将比较量化、优化和非量化、非优化模型的性能,并按步骤展示对模型应用量化和优化的好处。 ## 什么是 DeiT [¶](#what-is-deit "此标题的永久链接") 自 2012 年深度学习兴起以来,卷积神经网络 (CNN) 一直是图像分类的主要模型,但 CNN 通常需要数亿张图像进行训练才能达到 SOTA 结果。 DeiT 是一种视觉变换器模型,需要更少的数据和计算资源进行训练,以便在执行图像分类方面与领先的CNN 竞争,这由 DeiT 的两个关键组件实现: * 数据增强,模拟在更大的数据集上进行训练; * 本机蒸馏,允许 Transformer 网络从 CNN’s 输出中学习。 DeiT 表明,Transformers 可以成功应用于计算机视觉任务,并且对数据和资源的访问受到限制。有关 DeiT 的更多详细信息,请参阅 [repo](https://github.com/facebookresearch/deit) 和 [论文](https://arxiv.org/abs/2012.12877) . ## 使用 DeiT 对图像进行分类 [¶](#classifying-images-with-deit "此标题的永久链接") 按照 DeiT 存储库中的 `README.md` 获取有关如何使用 DeiT 对图像进行分类的详细信息,或者为了进行快速测试,请首先安装所需的软件包: ```bash pip install torch torchvision timm pandas requests ``` 要在 Google Colab 中运行,请通过运行以下命令安装依赖项: ```python !pip install timm pandas requests ``` 然后运行以下脚本: ```python from PIL import Image import torch import timm import requests import torchvision.transforms as transforms from timm.data.constants import IMAGENET_DEFAULT_MEAN, IMAGENET_DEFAULT_STD print(torch.__version__) # should be 1.8.0 model = torch.hub.load('facebookresearch/deit:main', 'deit_base_patch16_224', pretrained=True) model.eval() transform = transforms.Compose( [transforms.Resize(256, interpolation=3), transforms.CenterCrop(224), transforms.ToTensor(), transforms.Normalize(IMAGENET_DEFAULT_MEAN, IMAGENET_DEFAULT_STD), ]) img = Image.open(requests.get("https://raw.githubusercontent.com/pytorch/ios-demo-app/master/HelloWorld/HelloWorld/HelloWorld/image.png", stream=True).raw) img = transform(img)[None,] out = model(img) clsidx = torch.argmax(out) print(clsidx.item()) ``` 输出: ```txt 2.1.0+cu121 Downloading: "https://github.com/facebookresearch/deit/zipball/main" to /var/lib/jenkins/.cache/torch/hub/main.zip Downloading: "https://dl.fbaipublicfiles.com/deit/deit_base_patch16_224-b5f2ef4d.pth" to /var/lib/jenkins/.cache/torch/hub/checkpoints/deit_base_patch16_224-b5f2ef4d.pth 0%| | 0.00/330M [00:00