随着各行业对先进计算机视觉系统的需求持续激增,视觉变压器的部署已成为研究人员和从业者的焦点。然而,要充分发挥这些模型的潜力,需要对其架构有深入的了解。此外,制定有效部署这些模型的优化策略也同样重要。
使用平台:
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 以实现高效部署,根据学习操作~