当前位置: 首页 > news >正文

《计算机视觉度量:从特征描述到深度学习》—图片多模态CLIP,BLIP2,DINOv2特征提取综述

2024年以后大模型开始被大家熟知,同样基于图片的大模型基础框架同时也被大家开始熟知。最早的图片大模型是OpenAI提出的CLIP,他是一套基于图片数据和文本数据对齐的模型。通过文本对图片数据的描述,来对齐和学习图片特征数据。

在使用这种文本和图像数据对齐模型的过程中,就衍生出图生文和文生图的模型。后来被称为多模态大模型。

模型的实现原理是通过提取和训练图像的特征数据,和文本数据。通过强化学习实现两者数据特征的对齐。在对齐的过程中模型对图像特征数据细节也越来越具体,所以在把多模态的基础模型衍生到传统的视觉模型后,很明显提升准确率。最突出的结论是,目前分类,目标检测,分割模型的TOP1都是多模态的基础模型开发的。

2025年4月为止,在近两年的发展过程中,多模态基础模型也百花齐放,目前主流的除了CLIP以外,还有BLIP2和DINOv2等主流的模型。同样多模态基础模型图像数据特征也使用越来广泛,图片数据的特征提取方法如下:

        特征的提取都是基于VIT的基础网络,把图片切割成Patch(补丁),通过大模型的推理获取关于每个Patch的位置和图片数据的描述特征。模型大小和训练方式的不一样,获取的Patch描述维度也不一样。BLIP2单个Patch描述维度是768,CLIP单个Patch的描述维度是512,DINOv2根据模型大小不一样分为384,768,1024三种维度,对应不同大小的模型

BLIP2图片特征数据提取代码:

#添加Pytorch依赖
import torch
from PIL import Image
#添加多态依赖库
from lavis.models import load_model_and_preprocess
#获取GPU
device = torch.device("cuda") if torch.cuda.is_available() else "cpu"
#加载预训练多模态大模型
model, vis_processors, txt_processors = load_model_and_preprocess(name="blip2_feature_extractor", model_type="pretrain", is_eval=True, device=device)
#读取图片数据
image = Image.open("image.bmp").convert("RGB")
#图片数据Patch编码
image_tensor = vis_processors["eval"](image).unsqueeze(0).to(device)
#通过模型获取编码特征
features = model.extract_features(sample, mode="image")#环境依赖pytorch和lavis

CLIP图片特征提取代码:

import torch
from PIL import Image
from transformers import CLIPProcessor, CLIPModel# 加载预训练的CLIP模型和处理器
model = CLIPModel.from_pretrained("openai/clip-vit-base-patch32")
processor = CLIPProcessor.from_pretrained("openai/clip-vit-base-patch32")#加载模型到GPU
device = torch.device("cuda" if torch.cuda.is_available() else "cpu")
model = model.to(device)#加载图片
image = Image.open("Image.bmp").convert("RGB")
#对图片进行Patch编码
inputs = processor(images=image, return_tensors="pt").to(device)
with torch.no_grad():#获取图片特征数据features= model.get_image_features(**inputs).cpu().numpy()#环境依赖pytorch和transformers,PIL

DINOv2图片特征提取代码:

import torch
from PIL import Image
from torchvision import transforms#设置模型图片尺寸
image_w = 1120
image_h = 1120
#加载模型
model = torch.hub.load('facebookresearch/dinov2', self.model_name)
model.eval()
#图片数据预处理方法设置
Transform = transforms.Compose([transforms.Resize(size=self.smaller_edge_size,                 interpolation=transforms.InterpolationMode.BICUBIC, antialias=True),transforms.ToTensor(),transforms.Normalize(mean=(0.485, 0.456, 0.406), std=(0.229, 0.224, 0.225)), # imagenet defaults])#读取图片函数
img = Image.open(img).convert("RGB")
img = img.resize(1120,1120)
#图片预处理
image_tensor = transform(img)
#图片迁移到GPU
image_batch = image_tensor.unsqueeze(0).to(self.device)
#获取图片特征数据
features = model.get_intermediate_layers(image_batch)[0].squeeze()#环境依赖pytorch和transformers,torchvision ,PIL

体验大模型在工业检测的应用方法,DY搜索'军哥讲视觉',或者WX搜索军哥讲视觉',关注留言

相关文章:

  • SDK游戏盾、高防IP、高防CDN三者的区别与选型指南
  • Profinet 从站转 EtherNet/IP 从站网关
  • OpenCV计算机视觉实战(2)——环境搭建与OpenCV简介
  • MongoDB的增删改查操作
  • 反向代理、负载均衡与镜像流量:原理剖析、区别对比及 Nginx 配置实践
  • 软件测试实验报告3 | 自动化测试工具的基本操作
  • 使用阿里云 CDN 保护网站真实 IP:完整配置指南
  • 【分布式系统中的“瑞士军刀”_ Zookeeper】三、Zookeeper 在实际项目中的应用场景与案例分析
  • 换张电话卡能改变IP属地吗?一文解读
  • 在 C# .NET 中驾驭 JSON:使用 Newtonsoft.Json 进行解析与 POST 请求实战
  • Java基础361问第16问——枚举为什么导致空指针?
  • 第十三章-PHP MySQL扩展
  • DeepSeek+即梦:AI视频创作从0到1全突破
  • 深度学习任务评估指标
  • SQL 易混易错知识点笔记1(drop,role,%,localhost)
  • DNA-free基因组编辑技术任重而道远
  • 机器人--激光雷达
  • 低空经济无人机创新实训室解决方案
  • 武汉同济医院大模型应用通识第2课聚焦提示词工程,和鲸助力开讲
  • 如何搭建spark yarn模式的集群
  • 体坛联播|安切洛蒂预计执教巴西国家队,利拉德确诊跟腱撕裂
  • 商务部:4月份以来的出口总体延续平稳增长态势
  • 《沙尘暴》:用贴近生活的影像和表演拍摄悬疑剧
  • 广州一季度GDP为7532.51亿元,同比增长3%
  • 释新闻|SEVIS是什么?在美留学生遭身份中止意味什么?
  • 同款瑞幸咖啡竟差了6元,开了会员仍比别人贵!客服回应