DeiT:量化 Vision Transformers 以实现高效部署

随着各行业对先进计算机视觉系统的需求持续激增,视觉变压器的部署已成为研究人员和从业者的焦点。然而,要充分发挥这些模型的潜力,需要对其架构有深入的了解。此外,制定有效部署这些模型的优化策略也同样重要。

使用平台:

OpenBayes贝式计算:点击注册可 get 4 小时 4090

登陆后,点击「公共教程」,找到「DeiT:量化 Vision Transformers 以实现高效部署」,该教程已经搭建好了环境。

点击「克隆」,将教程克隆至自己的容器。

分配资源完成后,当状态显示为「运行中」后,点击打开工作空间。

打开左侧 ViT.ipynb 文件

先运行 !pip install --user transformers==4.38.2 timm==0.9.16 这个代码,等待它安装依赖,安装好依赖后需要重启内核否则会显示缺失。

可以使用一张足球的图片来做检测,可以得到检测结果为足球。

ini 复制代码
#预测图片的地址
    image_path = "./pic/football.jpg"
    image_array = img.open(image_path)
    #Vit模型地址
    vision_encoder_decoder_model_name_or_path = "./my_model/"
    #加载ViT特征转化and预训练模型
    #feature_extractor = ViTFeatureExtractor.from_pretrained(vision_encoder_decoder_model_name_or_path)
    #model = ViTForImageClassification.from_pretrained(vision_encoder_decoder_model_name_or_path)
    feature_extractor = ViTFeatureExtractor.from_pretrained('google/vit-base-patch16-224')
    model = ViTForImageClassification.from_pretrained('google/vit-base-patch16-224')
    #使用Vit特征提取器处理输入图像,专为ViT模型的格式
    inputs = feature_extractor(images = image_array, 
                               return_tensors="pt")
    #预训练模型处理输入并生成输出 logits,代表模型对不同类别的预测。
    outputs = model(**inputs)
    #创建一个变量来存储预测类的索引。
    logits = outputs.logits
    # 查找具有最高 Logit 分数的类的索引
    predicted_class_idx = logits.argmax(-1).item()
    print(predicted_class_idx)
    #805
    print("Predicted class:", model.config.id2label[predicted_class_idx])
    #预测种类:足球

然后我们将一些所需要的模型转移到指定文件夹内。

然后再使用这个 DeiT 模型对图片进行分类。

这里会打印一个它的类别索引,是 978。

下面是一些代码的分解。

这是对模型的一些量化。

量化完成后会保存到左侧文件夹内。

模型优化完成后也会保存到左侧文件夹内。

可以对这个模型进行精简,部署在移动或者边缘设备上。

然后我们再对一些模型的变形体进行推理速度的的检测。

在完成后,就会对每个模型的推理事件进行一个检测。

如果觉得文字教程不好理解,可以在 B 站搜索视频 DeiT:量化 Vision Transformers 以实现高效部署,根据学习操作~

相关推荐
带刺的坐椅1 小时前
用 ChatModel 构建 LLM 驱动的 Java 应用
java·ai·llm·solon·rag·chatmodel
Kyrie6782 小时前
SkillOpt:把 Agent 的技能文件当作可训练参数
人工智能
浮生望2 小时前
上下文工程:为什么现在写 Prompt 不用那么费劲了
llm
冬奇Lab2 小时前
Workflow 系列(07):工程化与版本管理——Workflow 的 CI/CD
人工智能·工作流引擎
两万五千个小时2 小时前
Claude Code 上下文管理(一):为什么 Agent 会"失忆"?
人工智能·架构·开源
两万五千个小时2 小时前
Claude Code 上下文管理(二):零 Token 消耗的压缩三板斧
人工智能·程序员·开源
不好听6132 小时前
从零搭建一个 RAG 语义搜索系统 —— DEMO的初始阶段
javascript·面试·llm
冬奇Lab3 小时前
每日一个开源项目(第150篇):caveman - 为什么用很多 token,少 token 也行——给 AI Agent 装上穴居人嘴巴
人工智能·开源·资讯
贵慜_Derek3 小时前
MAI-04|干净数据在工程上意味着什么:MAI 预训练数据治理
人工智能·算法·llm
feelmylife593 小时前
Agent 记忆设计架构 — 分层记忆:什么时候该记住,什么时候该忘记
人工智能